diff --git a/main.js b/main.js index a38c276..ae4c41b 100644 --- a/main.js +++ b/main.js @@ -1,15 +1,79662 @@ -"use strict";var e=require("obsidian"),t=require("fs");class C extends e.Events{trigger(e,...t){super.trigger(e,...t)}on(e,t,C){return super.on(e,t,C)}}const i=["pinned","expanded","active-node","inactive-node","connected-active-node","hover","unhover","connected-hover","protected","filtered","hard-filtered"],H=function(e){return`${e.configDir}/plugins/juggl/`};class n{constructor(e,t){this.id=e,this.storeId=t}toString(){return`${this.storeId}:${this.id}`}toId(){return this.toString()}static fromId(e){const t=e.split(":"),C=t[0],i=t.slice(1).join(":");return new n(i,C)}static fromNode(e){return n.fromId(e.id())}static fromNodes(e){return e.map((e=>n.fromNode(e)))}static fromFile(e){return new n(e.name,"core")}static toId(e,t){return new n(e,t).toId()}}const V=function(e){return[].concat(...e.map((e=>{const t=(e=e.slice(1)).split("/"),C=[];for(const e in t){const i=t.slice(0,parseInt(e)+1).join("-");C.push(`tag-${i}`)}return C})))},r=async function(t,C,i,H){H||(H=n.toId(t.name,"core"));const r=C.app.metadataCache.getFileCache(t),L="md"===t.extension?t.basename:t.name,o=function(t,C){if(t){const i=[];if(["png","jpg","jpeg","gif","bmp","svg","tiff"].contains(t.extension)?i.push("image"):["mp3","webm","wav","m4a","ogg","3gp","flac"].contains(t.extension)?i.push("audio"):["mp4","webm","ogv"].contains(t.extension)?i.push("video"):"pdf"===t.extension&&i.push("pdf"),"md"===t.extension){i.push("note");const H=C.getFileCache(t);if(H?.frontmatter){if("image"in H.frontmatter&&i.push("image"),"tags"in H.frontmatter){const t=e.parseFrontMatterTags(H.frontmatter);t&&i.push(...V(t))}if("cssclass"in H.frontmatter){const t=e.parseFrontMatterStringArray(H.frontmatter,"cssclass");t&&i.push(...t)}}H?.tags&&i.push(...V(H.tags.map((e=>e.tag))))}else i.push("file");return i}return["dangling"]}(t,C.app.metadataCache).join(" "),a={id:H,name:L,path:t.path};if(["png","jpg","jpeg","gif","bmp","svg","tiff"].contains(t.extension))try{a.resource_url=`http://localhost:${C.settings.imgServerPort}/${encodeURI(t.path)}`}catch{}i.readContent&&"md"==t.extension&&(a.content=await C.app.vault.cachedRead(t));const M=r?.frontmatter;return M&&Object.keys(M).forEach((e=>{if("position"!==e)if("image"===e){const t=M[e];try{new URL(t),a[e]=t}catch{try{a[e]=`http://localhost:${C.settings.imgServerPort}/${encodeURI(t)}`}catch{}}}else a[e]=M[e]})),{group:"nodes",data:a,classes:o}},L=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},o=function(e,t,C,i,H,n){const V=t[e.position.start.line];let r={id:C,source:i,target:H,context:V,edgeCount:1};const o=e.original.split("|");o.length>1&&(r.alias=o.slice(1).join().slice(0,-2));let a="";const M=function(e,t,C){const i=new RegExp(`^${L(C)} (publishedIn) (\\d\\d\\d\\d) (\\[\\[([^\\]\\r\\n]+?)\\]\\],? *)+$`).exec(t);if(null!==i)return{class:"type-publishedIn",isInline:!1,properties:{year:i[2],context:"",type:"publishedIn"}};const H=new RegExp(`^${L(C)} ([^\\W\\d]\\w*) (\\[\\[([^\\]\\r\\n]+?)\\]\\],? *)+$`).exec(t),n=e.original.split("|");let V=null;return n.length>1&&(V=n.slice(1).join().slice(0,-2)),null!==H?{class:`type-${H[1]}`,isInline:!1,properties:{alias:V,context:"",type:H[1]}}:null}(e,V,n);return null===M?a=`${a} inline`:(r={...M.properties,...r},a=`${a} ${M.class}`),{group:"edges",data:r,classes:a}};class a extends e.Component{constructor(e){super(),this.plugin=e,this.events=new C,this.metadata=e.app.metadataCache,this.vault=e.app.vault}getEvents(e){return this.events}async createEdges(t,C,i,H){if("md"!==t.extension)return[];const n=this.metadata.getFileCache(t);if(!n)return[];const V={},r=(await this.vault.cachedRead(t)).split("\n");if(e.iterateCacheRefs(n,(e=>{const H=this.getOtherId(e,t.path).toId();if(i.$id(H).length>0){const t=`${C}->${H}`,i=t in V?V[t].length+1:1,n=o(e,r,`${t}${i}`,C,H,this.plugin.settings.typedLinkPrefix);t in V?V[t].push(n):V[t]=[n]}})),H.settings.mergeEdges){const e=[];for(const t of Object.keys(V)){const C=V[t];let i=null,H=0;for(const t of C)" inline"===t.classes?i?(i.data.context+=`\n \n---\n\n${t.data.context}`,H+=1):(i=t,H=1):e.push(t);i&&(i.data.edgeCount=H,e.push(i))}return e}return[].concat(...Object.values(V))}async connectNodes(e,t,C){const i=[];for(const H of t){const t=n.fromNode(H);if(t.storeId===this.storeId()){const H=this.getFile(t);if(H){const n=t.toId();i.push(...await this.createEdges(H,n,e,C))}}}for(const H of e.difference(t)){const e=n.fromNode(H);if(e.storeId===this.storeId()){const H=this.getFile(e);if(H){const n=e.toId();i.push(...await this.createEdges(H,n,t,C))}}}return i}getOtherId(t,C){const i=e.getLinkpath(t.link),H=this.metadata.getFirstLinkpathDest(i,C);return new n(H?H.name:i,this.storeId())}async getNodeFromLink(t,C,i){const H=e.getLinkpath(t.link),V=this.metadata.getFirstLinkpathDest(H,C);return V?await r(V,this.plugin,i.settings):function(e){return{group:"nodes",data:{id:n.toId(e,"core"),name:e},classes:"dangling"}}(H)}getFile(e){return this.metadata.getFirstLinkpathDest(e.id,"")}async fillWithBacklinks(e,t,C){if("core"===t.storeId){const i=this.getFile(t).path,H=this.metadata.resolvedLinks;for(const t of Object.keys(H))if(i in H[t]){const i=this.vault.getAbstractFileByPath(t),H=n.fromFile(i).toId();H in e||(e[H]=await r(i,this.plugin,C.settings))}}}async getNeighbourhood(t,C){const i={};for(const H of t)if(H.storeId===this.storeId()){const t=this.getFile(H);if(null===t)continue;const n=this.metadata.getFileCache(t);if(null===n)continue;H.toId()in i||(i[H.toId()]=await r(t,this.plugin,C.settings));const V={};e.iterateCacheRefs(n,(e=>{const H=this.getOtherId(e,t.path).toId();H in i||(V[H]=this.getNodeFromLink(e,t.path,C))}));for(const e of Object.keys(V))e in i||(i[e]=await V[e]);await this.fillWithBacklinks(i,H,C)}return Object.values(i)}storeId(){return"core"}get(e,t){const C=this.getFile(e);if(null===C)return null;return null===this.metadata.getFileCache(C)?(console.log("returning empty cache",e,t),null):Promise.resolve(r(C,this.plugin,t.settings))}async refreshNode(e,t){const C=e.toId();let i,H=t.viz.$id(C);if(null===this.getFile(e))return void(H&&(H.remove(),t.onGraphChanged(!0,!0)));if(H.length>0&&H.hasClass("expanded"))i=await t.expand(H,!0,!1);else{const n=await this.get(e,t);t.mergeToGraph([n],!0,!1),H=t.viz.$id(C);const V=await t.buildEdges(H);i=t.mergeToGraph(V,!0,!1)}(H.connectedEdges().difference(i.merged).remove().length>0||i.added.length>0)&&t.onGraphChanged(!0,!0)}onload(){super.onload();const t=this;this.registerEvent(this.metadata.on("changed",(e=>{t.plugin.activeGraphs().forEach((async C=>{await t.refreshNode(n.fromFile(e),C)}))}))),this.registerEvent(this.vault.on("rename",((C,i)=>{if(C instanceof e.TFile){const e=n.fromFile(C),H=n.fromPath(i);t.plugin.activeGraphs().forEach((async C=>{setTimeout((async()=>{C.viz.$id(H.toId()).remove(),await t.refreshNode(e,C)}),500)}))}}))),this.registerEvent(this.vault.on("delete",(C=>{C instanceof e.TFile&&t.plugin.activeGraphs().forEach((e=>{e.viz.$id(n.fromFile(C).toId()).remove()}))})))}}function M(){}function s(e){return e()}function l(){return Object.create(null)}function d(e){e.forEach(s)}function u(e){return"function"==typeof e}function A(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}let c,h;function m(e,t){e.appendChild(t)}function f(e,t,C){e.insertBefore(t,C||null)}function p(e){e.parentNode.removeChild(e)}function g(e,t){for(let C=0;Ce.removeEventListener(t,C,i)}function x(e,t,C){null==C?e.removeAttribute(t):e.getAttribute(t)!==C&&e.setAttribute(t,C)}function O(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function k(e,t){e.value=null==t?"":t}function E(e,t,C,i){e.style.setProperty(t,C,i?"important":"")}function P(e,t){for(let C=0;C{$.delete(e),i&&(C&&e.d(1),i())})),e.o(t)}}function q(e){e&&e.c()}function Q(e,t,C,i){const{fragment:H,on_mount:n,on_destroy:V,after_update:r}=e.$$;H&&H.m(t,C),i||I((()=>{const t=n.map(s).filter(u);V?V.push(...t):d(t),e.$$.on_mount=[]})),r.forEach(I)}function K(e,t){const C=e.$$;null!==C.fragment&&(d(C.on_destroy),C.fragment&&C.fragment.d(t),C.on_destroy=C.fragment=null,C.ctx=[])}function J(e,t){-1===e.$$.dirty[0]&&(_.push(e),F||(F=!0,R.then(G)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const n=i.length?i[0]:C;return o.ctx&&H(o.ctx[t],o.ctx[t]=n)&&(!o.skip_bound&&o.bound[t]&&o.bound[t](n),a&&J(e,t)),C})):[],o.update(),a=!0,d(o.before_update),o.fragment=!!i&&i(o.ctx),t.target){if(t.hydrate){const e=function(e){return Array.from(e.childNodes)}(t.target);o.fragment&&o.fragment.l(e),e.forEach(p)}else o.fragment&&o.fragment.c();t.intro&&Y(e.$$.fragment),Q(e,t.target,t.anchor,t.customElement),G()}T(L)}class te{$destroy(){K(this,1),this.$destroy=M}$on(e,t){const C=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return C.push(t),()=>{const e=C.indexOf(t);-1!==e&&C.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Ce=function(e){return`${e.configDir}/plugins/juggl/graph.css`},ie=["ellipse","rectangle","triangle","diamond","pentagon","hexagon","tag","rhomboid","star","vee","round-rectangle","round-triangle","round-diamond","round-pentagon","round-hexagon","round-tag"],He="\n/* For a full overview of styling options, see https://js.cytoscape.org/#style */\n",ne=function(e){const t=document.createElement("div");t.addClass("graph-view",e),document.body.appendChild(t);const C=getComputedStyle(t).getPropertyValue("color");return t.detach(),C};class Ve{constructor(e){this.defaultSheet=this.getDefaultStylesheet(),this.yamlModifySheet="\n\n\nnode[title] {\n label: data(title);\n}\n\nnode[color] {\n background-color: data(color);\n}\n\nnode[shape] {\n shape: data(shape);\n}\n\nnode[width] {\n width: data(width);\n}\n\nnode[height] {\n width: data(height);\n}\n\nnode[image] {\n background-image: data(image);\n}\n",this.plugin=e}async getStylesheet(e){const C=this.plugin.vault.adapter.getFullPath(Ce(this.plugin.vault));let i="";try{i=await t.promises.readFile(C,"utf-8").catch((async e=>{if("ENOENT"===e.code){const e=He;return await t.promises.writeFile(C,e),e}throw e}))}catch(e){console.log("Couldn't load user stylesheet. This is probably because we are on mobile"),console.log(e)}let H="";"settings"in this.plugin&&(H=this.styleGroupsToSheet(this.plugin.settings.globalStyleGroups,"global"));const n=this.styleGroupsToSheet(e.settings.styleGroups,"local");return this.defaultSheet+H+i+n+this.yamlModifySheet}colorToRGBA(e){const t=document.createElement("canvas");t.width=t.height=1;const C=t.getContext("2d");C.clearRect(0,0,1,1),C.fillStyle="#000",C.fillStyle=e;const i=C.fillStyle;if(C.fillStyle="#fff",C.fillStyle=e,i!==C.fillStyle)return;C.fillRect(0,0,1,1);const H=[...C.getImageData(0,0,1,1).data];return`rgb(${H[0]}, ${H[1]}, ${H[2]})`}styleGroupsToSheet(e,t){let C="";const i=new DOMParser;for(const[H,n]of e.entries())if(n.show){let e="";if(n.icon&&n.icon.path){const t=``,C=i.parseFromString(t,"text/xml").documentElement.outerHTML;e=`background-image: url('data:image/svg+xml,${encodeURIComponent(C)}');`}const V=Math.max(Math.min(n.size,1),Math.sqrt(n.size));C+=`\nnode.${t}-${H} {\n background-color: ${n.color};\n shape: ${n.shape};\n background-fit: contain;\n ${e} \n width: mapData(degree, 0, 60, ${5*n.size}, ${35*n.size});\n height: mapData(degree, 0, 60, ${5*n.size}, ${35*n.size});\n font-size: mapData(degree, 0, 60, ${5*V}, ${11*V});\n text-max-width: mapData(degree, 0, 60, ${Math.round(65*V)}px, ${Math.round(100*V)}px);\n} \n`}else C+=`\nnode.${t}-${H} {\n display: none;\n}\n`;return C}getDefaultStylesheet(){let e=getComputedStyle(document.body).getPropertyValue("--text");e=e.replace("BlinkMacSystemFont,",""),0===e.length&&(e="Helvetica Neue");const t=ne("color-fill"),C=ne("color-fill-highlight"),i=ne("color-circle"),H=ne("color-line"),n=ne("color-line-highlight"),V=ne("color-text");return`\nnode {\n background-color: ${t};\n color: ${V};\n font-family: ${e};\n text-valign: bottom;\n shape: ellipse;\n border-width: 0;\n text-wrap: wrap;\n min-zoomed-font-size: 8;\n}\n\nnode[name] {\n label: data(name);\n}\nnode[degree] {\n width: mapData(degree, 0, 60, 5, 35);\n height: mapData(degree, 0, 60, 5, 35);\n font-size: mapData(degree, 0, 60, 5, 11);\n text-opacity: mapData(degree, 0, 60, 0.7, 1);\n text-max-width: mapData(degree, 0, 60, 65px, 100px);\n}\n\nnode:selected {\n background-blacken: 0.3;\n font-weight: bold;\n \n}\nnode:selected[degree] {\n border-width: mapData(degree, 0, 60, 1, 3);\n}\n\n.dangling {\n background-color: ${ne("color-fill-unresolved")};\n}\n\n.image {\n shape: round-rectangle;\n width: 50;\n height: 50;\n background-opacity: 0;\n background-image: data(resource_url);\n background-image-crossorigin: anonymous;\n background-image-opacity: 1;\n background-fit: contain;\n font-size: 0;\n background-clip: node;\n}\n\n.image.note {\n font-size: mapData(degree, 0, 60, 5, 11);\n}\n\nedge {\n line-color: ${H};\n loop-sweep: -50deg;\n loop-direction: -45deg;\n width: 0.70;\n \n target-arrow-shape: vee;\n target-arrow-fill: filled;\n target-arrow-color: ${H};\n \n arrow-scale: 0.55;\n\n font-size: 6;\n font-family: ${e};\n color: ${V};\n curve-style: straight;\n\n}\n\nedge[edgeCount] {\n width: mapData(edgeCount, 1, 50, 0.55, 3);\n arrow-scale: mapData(edgeCount, 1, 50, 0.35, 1.5);\n}\n\nedge:selected {\n width: 0.7;\n font-weight: bold;\n line-color: ${n};\n}\n\n:loop {\n display: none;\n}\n\nedge[type] {\n label: data(type);\n}\n.inactive-node,\n.unhover {\n opacity: 0.3;\n}\nnode.active-node,\nnode.hover {\n background-color: ${C};\n font-weight: bold;\n border-width: 0.4;\n border-color: ${i};\n opacity: 1;\n}\nedge.hover,\nedge.connected-active-node,\nedge.connected-hover {\n width: 1;\n opacity: 1;\n}\nedge.hover,\nedge.connected-hover {\n font-weight: bold;\n line-color: ${n}; \n target-arrow-color: ${n};\n}\n\nnode.pinned {\n border-style: dotted;\n border-width: 2;\n}\nnode.protected {\n ghost: yes;\n ghost-offset-x: 1px;\n ghost-offset-y: 1px;\n ghost-opacity: 0.5;\n}\nnode.hard-filtered,\nnode.filtered {\n display: none;\n}\n`}}function re(e){let t,C,i,H,n,V,r,L,o,a,s,l;return{c(){t=v("h3"),t.textContent="Appearance",C=S(),i=v("p"),H=Z("You can style the graph with css. This is done in the "),n=Z(e[0]),V=Z(" file.\n See "),r=v("a"),r.textContent="this page",L=Z(" for help with styling."),o=S(),a=v("button"),a.textContent="Open graph.css in default editor.",x(r,"href","https://publish.obsidian.md/semantic-obsidian/Node+styling")},m(M,d){f(M,t,d),f(M,C,d),f(M,i,d),m(i,H),m(i,n),m(i,V),m(i,r),m(i,L),f(M,o,d),f(M,a,d),s||(l=w(a,"click",e[1]),s=!0)},p:M,i:M,o:M,d(e){e&&p(t),e&&p(C),e&&p(i),e&&p(o),e&&p(a),s=!1,l()}}}function Le(e,t,C){let{plugin:i}=t,H=Ce(i.vault);return e.$$set=e=>{"plugin"in e&&C(2,i=e.plugin)},[H,async function(){let e=i.vault.adapter.getFullPath(H);try{const t=require("electron").shell,{promises:C}=require("fs");await C.writeFile(e,He,{flag:"wx"}).catch((e=>{})),await t.openPath(e)}catch(e){console.log("Couldn't open graph.css. This is probably because we are on mobile."),console.log(e)}},i]}class oe extends te{constructor(e){super(),ee(this,e,Le,re,A,{plugin:2})}}function ae(e){let t,C,i,H,n,V;return{c(){var e,n;t=v("script"),i=S(),H=v("div"),x(t,"type","text/javascript"),e=t.src,n=C="https://ko-fi.com/widgets/widget_2.js",c||(c=document.createElement("a")),c.href=n,e!==c.href&&x(t,"src","https://ko-fi.com/widgets/widget_2.js")},m(C,r){m(document.head,t),f(C,i,r),f(C,H,r),e[2](H),n||(V=w(t,"load",e[1]),n=!0)},p:M,i:M,o:M,d(C){p(t),C&&p(i),C&&p(H),e[2](null),n=!1,V()}}}function Me(e,t,C){let i;return[i,()=>{kofiwidget2.init("Support Juggl development!","#29abe0","B0B23OPUE"),C(0,i.innerHTML=kofiwidget2.getHTML(),i)},function(e){B[e?"unshift":"push"]((()=>{i=e,C(0,i)}))}]}class se extends te{constructor(e){super(),ee(this,e,Me,ae,A,{})}}const le=["force-directed","circle","grid","hierarchy","cola"],de={filter:"",color:"black",shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1},ue={splitDirection:"vertical",typedLinkPrefix:"-",useImgServer:!1,imgServerPort:3837,debug:!1,globalStyleGroups:[],globalGraphRibbon:!0,graphSettings:{animateLayout:!0,autoAddNodes:!0,autoExpand:!1,autoZoom:!1,coreStore:"Obsidian",expandInitial:!0,fdgdLayout:"d3-force",filter:"",height:"100%",hoverEdges:!1,layout:"force-directed",limit:1e4,mergeEdges:!0,metaKeyHover:!1,mode:"workspace",navigator:!0,openWithShift:!1,readContent:!0,styleGroups:[],toolbar:!0,width:"100%",zoomSpeed:1},embedSettings:{animateLayout:!0,autoAddNodes:!1,autoExpand:!1,autoZoom:!1,coreStore:"Obsidian",expandInitial:!0,fdgdLayout:"cola",filter:"",height:"400px",hoverEdges:!1,layout:"force-directed",limit:1e3,mergeEdges:!0,metaKeyHover:!1,mode:"local",navigator:!1,openWithShift:!1,readContent:!0,styleGroups:[],toolbar:!1,width:"100%",zoomSpeed:1},globalGraphSettings:{animateLayout:!0,autoAddNodes:!0,autoExpand:!1,autoZoom:!1,coreStore:"Obsidian",expandInitial:!1,fdgdLayout:"cola",filter:"-class:dangling -class:file",height:"100%",width:"100%",limit:1e4,hoverEdges:!1,layout:"force-directed",mergeEdges:!0,metaKeyHover:!1,mode:"workspace",navigator:!0,openWithShift:!1,readContent:!1,styleGroups:[],toolbar:!0,zoomSpeed:1}};class Ae extends e.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){const{containerEl:t}=this;t.empty(),t.createEl("h3"),t.createEl("h3",{text:"Juggl"}),new se({target:t});const C=document.createElement("a");C.href="https://juggl.io",C.target="_blank",C.innerHTML="the documentation";const i=document.createElement("a");i.href="https://discord.gg/sAmSGpaPgM",i.target="_blank",i.innerHTML="the Discord server";const H=document.createElement("p");H.innerHTML="Check out "+C.outerHTML+" for documentation on how to use the plugin.
Join "+i.outerHTML+" for help, nice discussion and insight into development.",t.appendChild(H),new oe({target:t,props:{plugin:this.plugin}}),t.createEl("h3"),t.createEl("h3",{text:"Extensions"}),new e.Setting(t).setName("Use navigator").setDesc("Use the navigator overview in the bottom-right corner. Disabling could improve performance.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.navigator).onChange((e=>{this.plugin.settings.globalGraphSettings.navigator=e,this.plugin.settings.graphSettings.navigator=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Default mode").setDesc("The default mode to open the Advanced Graph View in.").addDropdown((e=>{e.addOption("local","Local Mode"),e.addOption("workspace","Workspace Mode"),e.setValue(this.plugin.settings.graphSettings.mode).onChange((e=>{this.plugin.settings.graphSettings.mode=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Force-directed algorithm").setDesc("The default force-directed graph drawing algorithm to use. Cola is nice, but unstable in some use cases. Obsidian uses D3").addDropdown((e=>{e.addOption("cola","Cola"),e.addOption("d3-force","D3"),e.setValue(this.plugin.settings.graphSettings.fdgdLayout).onChange((e=>{this.plugin.settings.graphSettings.fdgdLayout=e,this.plugin.settings.embedSettings.fdgdLayout=e,this.plugin.settings.globalGraphSettings.fdgdLayout=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Global Graph Icon").setDesc("Show the Global Graph Icon on the left ribbon.").addToggle((e=>{e.setValue(this.plugin.settings.globalGraphRibbon).onChange((e=>{this.plugin.settings.globalGraphRibbon=e,this.plugin.saveData(this.plugin.settings),this.plugin.setGlobalIcon()}))})),new e.Setting(t).setName("Require ⌘/ctrl for preview hovers").setDesc("When set to true, you will need to hold down ⌘ (mac) or ctrl (windows) to show preview hovers of notes.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.metaKeyHover).onChange((e=>{this.plugin.settings.graphSettings.metaKeyHover=e,this.plugin.settings.globalGraphSettings.metaKeyHover=e,this.plugin.settings.embedSettings.metaKeyHover=e,this.plugin.saveData(this.plugin.settings)}))})),t.createEl("h4",{text:"Workspace mode"}),new e.Setting(t).setName("Automatically add nodes").setDesc("This will automatically add nodes to the graph whenever a note is opened.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.autoAddNodes).onChange((e=>{this.plugin.settings.graphSettings.autoAddNodes=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Automatically zoom on active nodes").setDesc("This will automatically keep fitting the viewport on the currently active node. In particular, this happens when you open a file.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.autoZoom).onChange((e=>{this.plugin.settings.graphSettings.autoZoom=e,this.plugin.settings.globalGraphSettings.autoZoom=e,this.plugin.saveData(this.plugin.settings)}))})),t.createEl("h3",{text:"Advanced"}),new e.Setting(t).setName("Zoom speed").setDesc("Speed with which zooming in and out happens. A value of 1 is recommended, but can be too quick for some mice.").addSlider((e=>{e.setDynamicTooltip().setLimits(.01,1.5,.01).setValue(this.plugin.settings.graphSettings.zoomSpeed).onChange((e=>{this.plugin.settings.graphSettings.zoomSpeed=e,this.plugin.settings.embedSettings.zoomSpeed=e,this.plugin.settings.globalGraphSettings.zoomSpeed=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Hover on edges").setDesc("Hover on edges to show what they are connected to.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.hoverEdges).onChange((e=>{this.plugin.settings.graphSettings.hoverEdges=e,this.plugin.settings.embedSettings.hoverEdges=e,this.plugin.settings.globalGraphSettings.hoverEdges=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Open with shift").setDesc("Only opens file when clicking on a node when shift is pressed.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.openWithShift).onChange((e=>{this.plugin.settings.graphSettings.openWithShift=e,this.plugin.settings.embedSettings.openWithShift=e,this.plugin.settings.globalGraphSettings.openWithShift=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Typed links prefix").setDesc("Prefix to use for typed links. Default is '-'. Requires a server restart.").addText((e=>{e.setPlaceholder("").setValue(this.plugin.settings.typedLinkPrefix).onChange((e=>{this.plugin.settings.typedLinkPrefix=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Render images in graph").setDesc("This will show image attachments in your vault as images in the graph. Requires reloading Juggl. WARNING: On Windows this will trigger your firewall!").addToggle((e=>{e.setValue(this.plugin.settings.useImgServer).onChange((e=>{this.plugin.settings.useImgServer=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Image server port").setDesc("Set the port of the image server. If you use multiple vaults, these need to be set differently. Default 3837.").addText((e=>{e.setValue(this.plugin.settings.imgServerPort+"").setPlaceholder("3837").onChange((e=>{this.plugin.settings.imgServerPort=parseInt(e.trim()),this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Debug").setDesc("Enable debug mode, which prints a lot of stuff in the developers console.").addToggle((e=>{e.setValue(this.plugin.settings.debug).onChange((e=>{this.plugin.settings.debug=e,this.plugin.saveData(this.plugin.settings)}))}))}}var ce="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function he(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function me(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(C){var i=Object.getOwnPropertyDescriptor(e,C);Object.defineProperty(t,C,i.get?i:{enumerable:!0,get:function(){return e[C]}})})),t}function fe(e){var t={exports:{}};return e(t,t.exports),t.exports}var pe=/^\s+|\s+$/g,ge=/^[-+]0x[0-9a-f]+$/i,ve=/^0b[01]+$/i,ye=/^0o[0-7]+$/i,Ze=parseInt,Se="object"==typeof ce&&ce&&ce.Object===Object&&ce,be="object"==typeof self&&self&&self.Object===Object&&self,we=Se||be||Function("return this")(),xe=Object.prototype.toString,Oe=Math.max,ke=Math.min,Ee=function(){return we.Date.now()};function Pe(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Te(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==xe.call(e)}(e))return NaN;if(Pe(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Pe(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(pe,"");var C=ve.test(e);return C||ye.test(e)?Ze(e.slice(2),C?2:8):ge.test(e)?NaN:+e}var _e=function(e,t,C){var i,H,n,V,r,L,o=0,a=!1,M=!1,s=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function l(t){var C=i,n=H;return i=H=void 0,o=t,V=e.apply(n,C)}function d(e){return o=e,r=setTimeout(A,t),a?l(e):V}function u(e){var C=e-L;return void 0===L||C>=t||C<0||M&&e-o>=n}function A(){var e=Ee();if(u(e))return c(e);r=setTimeout(A,function(e){var C=t-(e-L);return M?ke(C,n-(e-o)):C}(e))}function c(e){return r=void 0,s&&i?l(e):(i=H=void 0,V)}function h(){var e=Ee(),C=u(e);if(i=arguments,H=this,L=e,C){if(void 0===r)return d(L);if(M)return r=setTimeout(A,t),l(L)}return void 0===r&&(r=setTimeout(A,t)),V}return t=Te(t)||0,Pe(C)&&(a=!!C.leading,n=(M="maxWait"in C)?Oe(Te(C.maxWait)||0,t):n,s="trailing"in C?!!C.trailing:s),h.cancel=function(){void 0!==r&&clearTimeout(r),o=0,i=L=H=r=void 0},h.flush=function(){return void 0===r?V:c(Ee())},h},Be=fe((function(e,t){(function(){var t,C,i,H,n,V,r,L,o,a,M,s,l,d,u;i=Math.floor,a=Math.min,C=function(e,t){return et?1:0},o=function(e,t,H,n,V){var r;if(null==H&&(H=0),null==V&&(V=C),H<0)throw new Error("lo must be non-negative");for(null==n&&(n=e.length);HC;0<=C?t++:t--)o.push(t);return o}.apply(this).reverse()).length;nu;0<=u?++s:--s)A.push(n(e,i));return A},d=function(e,t,i,H){var n,V,r;for(null==H&&(H=C),n=e[i];i>t&&H(n,V=e[r=i-1>>1])<0;)e[i]=V,i=r;return e[i]=n},u=function(e,t,i){var H,n,V,r,L;for(null==i&&(i=C),n=e.length,L=t,V=e[t],H=2*t+1;Ht?1:0},ft=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,C=1;C255)return;t.push(Math.floor(n))}var V=i[1]||i[2]||i[3],r=i[1]&&i[2]&&i[3];if(V&&!r)return;var L=C[4];if(void 0!==L){if((L=parseFloat(L))<0||L>1)return;t.push(L)}}return t}(e)||function(e){var t,C,i,H,n,V,r,L;function o(e,t,C){return C<0&&(C+=1),C>1&&(C-=1),C<1/6?e+6*(t-e)*C:C<.5?t:C<2/3?e+(t-e)*(2/3-C)*6:e}var a=new RegExp("^hsl[a]?\\(((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?)))\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))[%])\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))[%])(?:\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))))?\\)$").exec(e);if(a){if((C=parseInt(a[1]))<0?C=(360- -1*C%360)%360:C>360&&(C%=360),C/=360,(i=parseFloat(a[2]))<0||i>100)return;if(i/=100,(H=parseFloat(a[3]))<0||H>100)return;if(H/=100,void 0!==(n=a[4])&&((n=parseFloat(n))<0||n>1))return;if(0===i)V=r=L=Math.round(255*H);else{var M=H<.5?H*(1+i):H+i-H*i,s=2*H-M;V=Math.round(255*o(s,M,C+1/3)),r=Math.round(255*o(s,M,C)),L=Math.round(255*o(s,M,C-1/3))}t=[V,r,L,n]}return t}(e)},gt={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},vt=function(e){for(var t=e.map,C=e.keys,i=C.length,H=0;H1&&void 0!==arguments[1]?arguments[1]:9261,i=C;!(t=e.next()).done;)i=i*Ot+t.value|0;return i},Et=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9261;return t*Ot+e|0},Pt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5381;return(t<<5)+t+e|0},Tt=function(e){return 2097152*e[0]+e[1]},_t=function(e,t){return[Et(e[0],t[0]),Pt(e[1],t[1])]},Bt=function(e,t){var C={value:0,done:!1},i=0,H=e.length;return kt({next:function(){return i=0&&(e[i]!==t||(e.splice(i,1),!C));i--);},CC=function(e){e.splice(0,e.length)},iC=function(e,t,C){return C&&(t=At(C,t)),e[t]},HC=function(e,t,C,i){C&&(t=At(C,t)),e[t]=i},nC="undefined"!=typeof Map?Map:function(){function e(){ze(this,e),this._obj={}}return Ge(e,[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}]),e}(),VC=function(){function e(t){if(ze(this,e),this._obj=Object.create(null),this.size=0,null!=t){var C;C=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var i=0;i2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&ot(e)){var i=t.group;if(null==i&&(i=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===i||"edges"===i){this.length=1,this[0]=this;var H=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===i:!!t.pannable,active:!1,classes:new rC,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==H.position.x&&(H.position.x=0),null==H.position.y&&(H.position.y=0),t.renderedPosition){var n=t.renderedPosition,V=e.pan(),r=e.zoom();H.position={x:(n.x-V.x)/r,y:(n.y-V.y)/r}}var L=[];Ct(t.classes)?L=t.classes:et(t.classes)&&(L=t.classes.split(/\s+/));for(var o=0,a=L.length;o0;){var p=c.pop(),g=u(p),v=p.id();if(M[v]=g,g!==1/0)for(var y=p.neighborhood().intersect(l),Z=0;Z0)for(C.unshift(t);a[H];){var n=a[H];C.unshift(n.edge),C.unshift(n.node),H=(i=n.node).id()}return V.spawn(C)}}}},lC={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),C=t.nodes,i=t.edges,H=C.length,n=new Array(H),V=C,r=function(e){for(var t=0;t0;){if(L=u.pop(),o=L.id(),A.delete(o),p++,o===M){for(var g=[],v=H,y=M,Z=h[y];g.unshift(v),null!=Z&&g.unshift(Z),null!=(v=c[y]);)Z=h[y=v.id()];return{found:!0,distance:s[o],path:this.spawn(g),steps:p}}d[o]=!0;for(var S=L._private.edges,b=0;bS&&(l[Z]=S,c[Z]=y,h[Z]=f),!H){var b=y*o+v;!H&&l[b]>S&&(l[b]=S,c[b]=v,h[b]=f)}}}for(var w=0;w1&&void 0!==arguments[1]?arguments[1]:n,i=c(e),H=[],V=i;;){if(null==V)return t.spawn();var L=A(V),o=L.edge,a=L.pred;if(H.unshift(V[0]),V.same(C)&&H.length>0)break;null!=o&&H.unshift(o),V=a}return r.spawn(H)},hasNegativeWeightCycle:d,negativeWeightCycles:[]}}},fC=Math.sqrt(2),pC=function(e,t,C){0===C.length&&Ut("Karger-Stein must be run on a connected (sub)graph");for(var i=C[e],H=i[1],n=i[2],V=t[H],r=t[n],L=C,o=L.length-1;o>=0;o--){var a=L[o],M=a[1],s=a[2];(t[M]===V&&t[s]===r||t[M]===r&&t[s]===V)&&L.splice(o,1)}for(var l=0;li;){var H=Math.floor(Math.random()*t.length);t=pC(H,e,t),C--}return t},vC={kargerStein:function(){var e=this,t=this.byGroup(),C=t.nodes,i=t.edges;i.unmergeBy((function(e){return e.isLoop()}));var H=C.length,n=i.length,V=Math.ceil(Math.pow(Math.log(H)/Math.LN2,2)),r=Math.floor(H/fC);if(!(H<2)){for(var L=[],o=0;o0?1:e<0?-1:0},OC=function(e,t){return Math.sqrt(kC(e,t))},kC=function(e,t){var C=t.x-e.x,i=t.y-e.y;return C*C+i*i},EC=function(e){for(var t=e.length,C=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},DC=function(e,t,C){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,C),e.y2=Math.max(e.y2,C),e.h=e.y2-e.y1},NC=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},RC=function(e){var t,C,i,H,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===n.length)t=C=i=H=n[0];else if(2===n.length)t=i=n[0],H=C=n[1];else if(4===n.length){var V=$e(n,4);t=V[0],C=V[1],i=V[2],H=V[3]}return e.x1-=H,e.x2+=C,e.y1-=t,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},FC=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},IC=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},zC=function(e,t,C){return e.x1<=t&&t<=e.x2&&e.y1<=C&&C<=e.y2},jC=function(e,t){return zC(e,t.x1,t.y1)&&zC(e,t.x2,t.y2)},GC=function(e,t,C,i,H,n,V){var r,L=Li(H,n),o=H/2,a=n/2,M=i-a-V;if((r=Ci(e,t,C,i,C-o+L-V,M,C+o-L+V,M,!1)).length>0)return r;var s=C+o+V;if((r=Ci(e,t,C,i,s,i-a+L-V,s,i+a-L+V,!1)).length>0)return r;var l=i+a+V;if((r=Ci(e,t,C,i,C-o+L-V,l,C+o-L+V,l,!1)).length>0)return r;var d,u=C-o-V;if((r=Ci(e,t,C,i,u,i-a+L-V,u,i+a-L+V,!1)).length>0)return r;var A=C-o+L,c=i-a+L;if((d=ei(e,t,C,i,A,c,L+V)).length>0&&d[0]<=A&&d[1]<=c)return[d[0],d[1]];var h=C+o-L,m=i-a+L;if((d=ei(e,t,C,i,h,m,L+V)).length>0&&d[0]>=h&&d[1]<=m)return[d[0],d[1]];var f=C+o-L,p=i+a-L;if((d=ei(e,t,C,i,f,p,L+V)).length>0&&d[0]>=f&&d[1]>=p)return[d[0],d[1]];var g=C-o+L,v=i+a-L;return(d=ei(e,t,C,i,g,v,L+V)).length>0&&d[0]<=g&&d[1]>=v?[d[0],d[1]]:[]},WC=function(e,t,C,i,H,n,V){var r=V,L=Math.min(C,H),o=Math.max(C,H),a=Math.min(i,n),M=Math.max(i,n);return L-r<=e&&e<=o+r&&a-r<=t&&t<=M+r},$C=function(e,t,C,i,H,n,V,r,L){var o=Math.min(C,V,H)-L,a=Math.max(C,V,H)+L,M=Math.min(i,r,n)-L,s=Math.max(i,r,n)+L;return!(ea||ts)},UC=function(e,t,C,i,H,n,V,r){var L=[];!function(e,t,C,i,H){var n,V,r,L,o,a,M,s;0===e&&(e=1e-5),r=-27*(i/=e)+(t/=e)*(9*(C/=e)-t*t*2),n=(V=(3*C-t*t)/9)*V*V+(r/=54)*r,H[1]=0,M=t/3,n>0?(o=(o=r+Math.sqrt(n))<0?-Math.pow(-o,1/3):Math.pow(o,1/3),a=(a=r-Math.sqrt(n))<0?-Math.pow(-a,1/3):Math.pow(a,1/3),H[0]=-M+o+a,M+=(o+a)/2,H[4]=H[2]=-M,M=Math.sqrt(3)*(-a+o)/2,H[3]=M,H[5]=-M):(H[5]=H[3]=0,0===n?(s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3),H[0]=2*s-M,H[4]=H[2]=-(s+M)):(L=(V=-V)*V*V,L=Math.acos(r/Math.sqrt(L)),s=2*Math.sqrt(V),H[0]=-M+s*Math.cos(L/3),H[2]=-M+s*Math.cos((L+2*Math.PI)/3),H[4]=-M+s*Math.cos((L+4*Math.PI)/3)))}(1*C*C-4*C*H+2*C*V+4*H*H-4*H*V+V*V+i*i-4*i*n+2*i*r+4*n*n-4*n*r+r*r,9*C*H-3*C*C-3*C*V-6*H*H+3*H*V+9*i*n-3*i*i-3*i*r-6*n*n+3*n*r,3*C*C-6*C*H+C*V-C*e+2*H*H+2*H*e-V*e+3*i*i-6*i*n+i*r-i*t+2*n*n+2*n*t-r*t,1*C*H-C*C+C*e-H*e+i*n-i*i+i*t-n*t,L);for(var o=[],a=0;a<6;a+=2)Math.abs(L[a+1])<1e-7&&L[a]>=0&&L[a]<=1&&o.push(L[a]);o.push(1),o.push(0);for(var M,s,l,d=-1,u=0;u=0?lL?(e-H)*(e-H)+(t-n)*(t-n):o-M},XC=function(e,t,C){for(var i,H,n,V,r=0,L=0;L=e&&e>=n||i<=e&&e<=n))continue;(e-i)/(n-i)*(V-H)+H>t&&r++}return r%2!=0},qC=function(e,t,C,i,H,n,V,r,L){var o,a=new Array(C.length);null!=r[0]?(o=Math.atan(r[1]/r[0]),r[0]<0?o+=Math.PI/2:o=-o-Math.PI/2):o=r;for(var M,s=Math.cos(-o),l=Math.sin(-o),d=0;d0){var u=KC(a,-L);M=QC(u)}else M=a;return XC(e,t,M)},QC=function(e){for(var t,C,i,H,n,V,r,L,o=new Array(e.length/2),a=0;a=0&&d<=1&&A.push(d),u>=0&&u<=1&&A.push(u),0===A.length)return[];var c=A[0]*r[0]+e,h=A[0]*r[1]+t;return A.length>1?A[0]==A[1]?[c,h]:[c,h,A[1]*r[0]+e,A[1]*r[1]+t]:[c,h]},ti=function(e,t,C){return t<=e&&e<=C||C<=e&&e<=t?e:e<=t&&t<=C||C<=t&&t<=e?t:C},Ci=function(e,t,C,i,H,n,V,r,L){var o=e-H,a=C-e,M=V-H,s=t-n,l=i-t,d=r-n,u=M*s-d*o,A=a*s-l*o,c=d*a-M*l;if(0!==c){var h=u/c,m=A/c,f=-.001;return f<=h&&h<=1.001&&f<=m&&m<=1.001||L?[e+h*a,t+h*l]:[]}return 0===u||0===A?ti(e,C,V)===V?[V,r]:ti(e,C,H)===H?[H,n]:ti(H,V,C)===C?[C,i]:[]:[]},ii=function(e,t,C,i,H,n,V,r){var L,o,a,M,s,l,d=[],u=new Array(C.length),A=!0;if(null==n&&(A=!1),A){for(var c=0;c0){var h=KC(u,-r);o=QC(h)}else o=u}else o=C;for(var m=0;mo&&(o=t)},M=function(e){return L[e]},s=0;s0?m.edgesTo(h)[0]:h.edgesTo(m)[0];var p=i(f);h=h.id(),s[h]>s[A]+p&&(s[h]=s[A]+p,l.nodes.indexOf(h)<0?l.push(h):l.updateItem(h),o[h]=0,L[h]=[]),s[h]==s[A]+p&&(o[h]=o[h]+o[A],L[h].push(A))}else for(var g=0;g0;){for(var S=C.pop(),b=0;b0&&V.push(C[r]);0!==V.length&&H.push(i.collection(V))}return H}(a,L,t,i);return m=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:xi,V=i,r=0;r=2?_i(e,t,C,0,Ei,Pi):_i(e,t,C,0,ki)},squaredEuclidean:function(e,t,C){return _i(e,t,C,0,Ei)},manhattan:function(e,t,C){return _i(e,t,C,0,ki)},max:function(e,t,C){return _i(e,t,C,-1/0,Ti)}};function Di(e,t,C,i,H,n){var V;return V=tt(e)?e:Bi[e]||Bi.euclidean,0===t&&tt(e)?V(H,n):V(t,C,i,H,n)}Bi["squared-euclidean"]=Bi.squaredEuclidean,Bi.squaredeuclidean=Bi.squaredEuclidean;var Ni=eC({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),Ri=function(e){return Ni(e)},Fi=function(e,t,C,i,H){var n="kMedoids"!==H?function(e){return C[e]}:function(e){return i[e](C)},V=C,r=t;return Di(e,i.length,n,(function(e){return i[e](t)}),V,r)},Ii=function(e,t,C){for(var i=C.length,H=new Array(i),n=new Array(i),V=new Array(t),r=null,L=0;LC)return!1}return!0},Wi=function(e,t,C){for(var i=0;iH&&(H=t[L][o],n=o);V[n].push(e[L])}for(var a=0;a=H.threshold||"dendrogram"===H.mode&&1===e.length)return!1;var l,d=t[V],u=t[i[V]];l="dendrogram"===H.mode?{left:d,right:u,key:d.key}:{value:d.value.concat(u.value),key:d.key},e[d.index]=l,e.splice(u.index,1),t[d.key]=l;for(var A=0;AC[u.key][c.key]&&(n=C[u.key][c.key])):"max"===H.linkage?(n=C[d.key][c.key],C[d.key][c.key]1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],H=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(C0&&e.splice(0,t)):e=e.slice(t,C);for(var n=0,V=e.length-1;V>=0;V--){var r=e[V];H?isFinite(r)||(e[V]=-1/0,n++):e.splice(V,1)}i&&e.sort((function(e,t){return e-t}));var L=e.length,o=Math.floor(L/2);return L%2!=0?e[o+1+n]:(e[o-1+n]+e[o+n])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=0,H=0,n=t;n1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=1/0,H=t;H1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=-1/0,H=t;HV&&(n=L,V=t[H*e+L])}n>0&&i.push(n)}for(var o=0;o=S?(b=S,S=x,w=O):x>b&&(b=x);for(var k=0;k0?1:0;v[g%o.minIterations*t+D]=N,B+=N}if(B>0&&(g>=o.minIterations-1||g==o.maxIterations-1)){for(var R=0,F=0;F0&&i.push(H);return i}(t,n,V),j=function(e,t,C){for(var i=oH(e,t,C),H=0;HL&&(r=o,L=a)}C[H]=n[r]}return oH(e,t,C)}(t,i,z),G={},W=0;W1||V>1)&&(o=!0),a[t]=[],e.outgoers().forEach((function(e){e.isEdge()&&a[t].push(e.id())}))}else M[t]=[void 0,e.target().id()]})):L.forEach((function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(C?i?o=!0:i=t:C=t),a[t]=[],e.connectedEdges().forEach((function(e){return a[t].push(e.id())}))):M[t]=[e.source().id(),e.target().id()]}));var s={found:!1,trail:void 0};if(o)return s;if(i&&C)if(r){if(H&&i!=H)return s;H=i}else{if(H&&i!=H&&C!=H)return s;H||(H=i)}else H||(H=L[0].id());var l=function(e){for(var t,C,i,H=e,n=[e];a[H].length;)t=a[H].shift(),C=M[t][0],H!=(i=M[t][1])?(a[i]=a[i].filter((function(e){return e!=t})),H=i):r||H==C||(a[C]=a[C].filter((function(e){return e!=t})),H=C),n.unshift(t),n.unshift(H);return n},d=[],u=[];for(u=l(H);1!=u.length;)0==a[u[0]].length?(d.unshift(L.getElementById(u.shift())),d.unshift(L.getElementById(u.shift()))):u=l(u.shift()).concat(u);for(var A in d.unshift(L.getElementById(u.shift())),a)if(a[A].length)return s;return s.found=!0,s.trail=this.spawn(d,!0),s}},dH=function(){var e=this,t={},C=0,i=0,H=[],n=[],V={},r=function r(L,o,a){L===a&&(i+=1),t[o]={id:C,low:C++,cutVertex:!1};var M,s,l,d,u=e.getElementById(o).connectedEdges().intersection(e);0===u.size()?H.push(e.spawn(e.getElementById(o))):u.forEach((function(C){M=C.source().id(),s=C.target().id(),(l=M===o?s:M)!==a&&(d=C.id(),V[d]||(V[d]=!0,n.push({x:o,y:l,edge:C})),l in t?t[o].low=Math.min(t[o].low,t[l].id):(r(L,l,o),t[o].low=Math.min(t[o].low,t[l].low),t[o].id<=t[l].low&&(t[o].cutVertex=!0,function(C,i){for(var V=n.length-1,r=[],L=e.spawn();n[V].x!=C||n[V].y!=i;)r.push(n.pop().edge),V--;r.push(n.pop().edge),r.forEach((function(C){var i=C.connectedNodes().intersection(e);L.merge(C),i.forEach((function(C){var i=C.id(),H=C.connectedEdges().intersection(e);L.merge(C),t[i].cutVertex?L.merge(H.filter((function(e){return e.isLoop()}))):L.merge(H)}))})),H.push(L)}(o,l))))}))};e.forEach((function(e){if(e.isNode()){var C=e.id();C in t||(i=0,r(C,C),t[C].cutVertex=i>1)}}));var L=Object.keys(t).filter((function(e){return t[e].cutVertex})).map((function(t){return e.getElementById(t)}));return{cut:e.spawn(L),components:H}},uH=function(){var e=this,t={},C=0,i=[],H=[],n=e.spawn(e),V=function V(r){if(H.push(r),t[r]={index:C,low:C++,explored:!1},e.getElementById(r).connectedEdges().intersection(e).forEach((function(e){var C=e.target().id();C!==r&&(C in t||V(C),t[C].explored||(t[r].low=Math.min(t[r].low,t[C].low)))})),t[r].index===t[r].low){for(var L=e.spawn();;){var o=H.pop();if(L.merge(e.getElementById(o)),t[o].low=t[r].index,t[o].explored=!0,o===r)break}var a=L.edgesWith(L),M=L.merge(a);i.push(M),n=n.difference(M)}};return e.forEach((function(e){if(e.isNode()){var C=e.id();C in t||V(C)}})),{cut:n,components:i}},AH={};[aC,sC,lC,uC,cC,mC,vC,si,di,Ai,hi,wi,Qi,nH,MH,lH,{hopcroftTarjanBiconnected:dH,htbc:dH,htb:dH,hopcroftTarjanBiconnectedComponents:dH},{tarjanStronglyConnected:uH,tsc:uH,tscc:uH,tarjanStronglyConnectedComponents:uH}].forEach((function(e){ft(AH,e)})); +'use strict'; + +var obsidian = require('obsidian'); +var fs = require('fs'); + +class DataStoreEvents extends obsidian.Events { + trigger(name, ...data) { + super.trigger(name, ...data); + } + on(name, callback, ctx) { + return super.on(name, callback, ctx); + } +} + +const CLASS_PINNED = 'pinned'; +const CLASS_EXPANDED = 'expanded'; +const CLASS_ACTIVE_NODE = 'active-node'; +const CLASS_INACTIVE_NODE = 'inactive-node'; +const CLASS_CONNECTED_ACTIVE_NODE = 'connected-active-node'; +const CLASS_HOVER = 'hover'; +const CLASS_UNHOVER = 'unhover'; +const CLASS_PROTECTED = 'protected'; +const CLASS_CONNECTED_HOVER = 'connected-hover'; +const CLASS_FILTERED = 'filtered'; +const CLASS_HARD_FILTERED = 'hard-filtered'; +const CLASSES = [CLASS_PINNED, CLASS_EXPANDED, CLASS_ACTIVE_NODE, + CLASS_INACTIVE_NODE, CLASS_CONNECTED_ACTIVE_NODE, CLASS_HOVER, CLASS_UNHOVER, + CLASS_CONNECTED_HOVER, CLASS_PROTECTED, CLASS_FILTERED, CLASS_HARD_FILTERED]; +const VIEWPORT_ANIMATION_TIME = 250; +const LAYOUT_ANIMATION_TIME = 1500; +const DISCRETE_LAYOUT_ANIMATION_TIME = 500; +const DISCRETE_SPACING_FACTOR = 0.5; +const DEBOUNCE_FOLLOW = 500; +const DEBOUNCE_LAYOUT = 2300; +const MIN_NODE_SIZE = 5; +const MAX_NODE_SIZE = 35; +const MIN_FONT_SIZE = 5; +const MAX_FONT_SIZE = 11; +const MIN_TEXT_WIDTH = 65; +const MAX_TEXT_WIDTH = 100; +const JUGGL_VIEW_TYPE = 'juggl_view'; +const JUGGL_NODES_VIEW_TYPE = 'juggl_nodes'; +const JUGGL_STYLE_VIEW_TYPE = 'juggl_style'; +const JUGGL_HELP_VIEW = 'juggl-help'; +const DATA_FOLDER = function (vault) { + return `${vault.configDir}/plugins/juggl/`; +}; + +const CAT_DANGLING = 'dangling'; +const CORE_STORE_ID = 'core'; +class VizId { + constructor(id, storeId) { + this.id = id; + this.storeId = storeId; + } + toString() { + return `${this.storeId}:${this.id}`; + } + toId() { + return this.toString(); + } + static fromId(id) { + const split = id.split(':'); + const storeId = split[0]; + const _id = split.slice(1).join(':'); + return new VizId(_id, storeId); + } + static fromNode(node) { + return VizId.fromId(node.id()); + } + static fromNodes(nodes) { + return nodes.map((n) => VizId.fromNode(n)); + } + static fromFile(file) { + return new VizId(file.name, 'core'); + } + static toId(id, storeId) { + return new VizId(id, storeId).toId(); + } +} +const _parseTags = function (tags) { + return [].concat(...tags + .map((tag) => { + tag = tag.slice(1); + const hSplit = tag.split('/'); + const tags = []; + for (const i in hSplit) { + const hTag = hSplit.slice(0, parseInt(i) + 1).join('-'); + tags.push(`tag-${hTag}`); + } + return tags; + })); +}; +const getClasses = function (file, metadataCache) { + if (file) { + const classes = []; + if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'tiff'].contains(file.extension)) { + classes.push('image'); + } + else if (['mp3', 'webm', 'wav', 'm4a', 'ogg', '3gp', 'flac'].contains(file.extension)) { + classes.push('audio'); + } + else if (['mp4', 'webm', 'ogv'].contains(file.extension)) { + classes.push('video'); + } + else if (file.extension === 'pdf') { + classes.push('pdf'); + } + // This is replaced by the 'path' data attribute. + // if (!(file.parent.name === '/' || file.parent.name === '')) { + // classes.push(`folder-${file.parent.name + // .replace(' ', '_')}`); + // } else { + // classes.push('root'); + // } + if (file.extension === 'md') { + classes.push('note'); + const cache = metadataCache.getFileCache(file); + if (cache?.frontmatter) { + if ('image' in cache.frontmatter) { + classes.push('image'); + } + if ('tags' in cache.frontmatter) { + const tags = obsidian.parseFrontMatterTags(cache.frontmatter); + if (tags) { + classes.push(..._parseTags(tags)); + } + } + if ('cssclass' in cache.frontmatter) { + const clazzes = obsidian.parseFrontMatterStringArray(cache.frontmatter, 'cssclass'); + if (clazzes) { + classes.push(...clazzes); + } + } + } + if (cache?.tags) { + classes.push(..._parseTags(cache.tags.map((t) => t.tag))); + } + } + else { + classes.push('file'); + } + return classes; + } + return [CAT_DANGLING]; +}; +const nodeFromFile = async function (file, plugin, settings, id) { + if (!id) { + id = VizId.toId(file.name, CORE_STORE_ID); + } + const cache = plugin.app.metadataCache.getFileCache(file); + const name = file.extension === 'md' ? file.basename : file.name; + const classes = getClasses(file, plugin.app.metadataCache).join(' '); + const data = { + id, + name, + path: file.path, + }; + if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'tiff'].contains(file.extension)) { + try { + // @ts-ignore + data['resource_url'] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(file.path)}`; + } + catch { } + } + if (settings.readContent && file.extension == 'md') { + data['content'] = await plugin.app.vault.cachedRead(file); + } + const frontmatter = cache?.frontmatter; + if (frontmatter) { + Object.keys(frontmatter).forEach((k) => { + if (!(k === 'position')) { + if (k === 'image') { + const imageField = frontmatter[k]; + try { + // Check if url. throws error otherwise + new URL(imageField); + data[k] = imageField; + } + catch { + try { + // @ts-ignore + data[k] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(imageField)}`; + } + catch { } + } + } + else { + data[k] = frontmatter[k]; + } + } + }); + } + return { + group: 'nodes', + data: data, + classes: classes, + }; +}; +const nodeDangling = function (path) { + return { + group: 'nodes', + data: { + id: VizId.toId(path, CORE_STORE_ID), + name: path, + }, + classes: 'dangling', + }; +}; +const wikilinkRegex = '\\[\\[([^\\]\\r\\n]+?)\\]\\]'; +const nameRegex = '[^\\W\\d]\\w*'; +const regexEscape = function (str) { + return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +}; +const parseTypedLink = function (link, line, typedLinkPrefix) { + // TODO: This is something specific I use, but shouldn't keep being in this repo. + const regexPublishedIn = new RegExp(`^${regexEscape(typedLinkPrefix)} (publishedIn) (\\d\\d\\d\\d) (${wikilinkRegex},? *)+$`); + const matchPI = regexPublishedIn.exec(line); + if (!(matchPI === null)) { + return { + class: 'type-publishedIn', + isInline: false, + properties: { + year: matchPI[2], + context: '', + type: 'publishedIn', + }, + }; + } + // Intuition: Start with the typed link prefix. Then a neo4j name (nameRegex). + // Then one or more of the wikilink group: wikilink regex separated by optional comma and multiple spaces + const regex = new RegExp(`^${regexEscape(typedLinkPrefix)} (${nameRegex}) (${wikilinkRegex},? *)+$`); + const match = regex.exec(line); + const splitLink = link.original.split('|'); + let alias = null; + if (splitLink.length > 1) { + alias = splitLink.slice(1).join().slice(0, -2); + } + if (!(match === null)) { + return { + class: `type-${match[1]}`, + isInline: false, + properties: { + alias: alias, + context: '', + type: match[1], + }, + }; + } + return null; +}; +const parseRefCache = function (ref, content, id, source, target, typedLinkPrefix) { + const line = content[ref.position.start.line]; + let data = { + id: id, + source: source, + target: target, + context: line, + edgeCount: 1, + }; + const splitLink = ref.original.split('|'); + if (splitLink.length > 1) { + data['alias'] = splitLink.slice(1).join().slice(0, -2); + } + let classes = ''; + const typedLink = parseTypedLink(ref, line, typedLinkPrefix); + if (typedLink === null) { + classes = `${classes} inline`; + } + else { + data = { ...typedLink.properties, ...data }; + classes = `${classes} ${typedLink.class}`; + } + return { + group: 'edges', + data: data, + classes: classes, + }; +}; + +const OBSIDIAN_STORE_NAME = 'Obsidian'; +class ObsidianStore extends obsidian.Component { + constructor(plugin) { + super(); + this.plugin = plugin; + this.events = new DataStoreEvents(); + this.metadata = plugin.app.metadataCache; + this.vault = plugin.app.vault; + } + getEvents(view) { + return this.events; + } + async createEdges(srcFile, srcId, toNodes, view) { + if (!(srcFile.extension === 'md')) { + return []; + } + const cache = this.metadata.getFileCache(srcFile); + if (!cache) { + return []; + } + const edges = {}; + const content = (await this.vault.cachedRead(srcFile)).split('\n'); + obsidian.iterateCacheRefs(cache, (ref) => { + const otherId = this.getOtherId(ref, srcFile.path).toId(); + if (toNodes.$id(otherId).length > 0) { + const edgeId = `${srcId}->${otherId}`; + const count = edgeId in edges ? edges[edgeId].length + 1 : 1; + const edge = parseRefCache(ref, content, `${edgeId}${count}`, srcId, otherId, this.plugin.settings.typedLinkPrefix); + if (edgeId in edges) { + edges[edgeId].push(edge); + } + else { + edges[edgeId] = [edge]; + } + } + }); + if (view.settings.mergeEdges) { + // Merges inline edges. + const returnEdges = []; + for (const edgeId of Object.keys(edges)) { + const connectedEdges = edges[edgeId]; + let inlineEdge = null; + let countInline = 0; + for (const edge of connectedEdges) { + if (edge.classes === ' inline') { + if (inlineEdge) { + inlineEdge.data.context += ` + +--- + +${edge.data.context}`; + countInline += 1; + } + else { + inlineEdge = edge; + countInline = 1; + } + } + else { + returnEdges.push(edge); + } + } + if (inlineEdge) { + inlineEdge.data.edgeCount = countInline; + returnEdges.push(inlineEdge); + } + } + return returnEdges; + } + return [].concat(...Object.values(edges)); + } + async connectNodes(allNodes, newNodes, view) { + const edges = []; + // Find edges from newNodes to other nodes + // @ts-ignore + for (const node of newNodes) { + const id = VizId.fromNode(node); + if (id.storeId === this.storeId()) { + const file = this.getFile(id); + if (file) { + const srcId = id.toId(); + edges.push(...await this.createEdges(file, srcId, allNodes, view)); + } + } + } + // @ts-ignore + for (const node of allNodes.difference(newNodes)) { + // For all nodes other than the new nodes + const id = VizId.fromNode(node); + if (id.storeId === this.storeId()) { + const file = this.getFile(id); + if (file) { + const srcId = id.toId(); + // Connect only to newNodes! + edges.push(...await this.createEdges(file, srcId, newNodes, view)); + } + } + } + return edges; + } + getOtherId(link, sourcePath) { + const path = obsidian.getLinkpath(link.link); + const file = this.metadata.getFirstLinkpathDest(path, sourcePath); + if (file) { + return new VizId(file.name, this.storeId()); + } + else { + return new VizId(path, this.storeId()); + } + } + async getNodeFromLink(link, sourcePath, graph) { + const path = obsidian.getLinkpath(link.link); + const file = this.metadata.getFirstLinkpathDest(path, sourcePath); + if (file) { + return await nodeFromFile(file, this.plugin, graph.settings); + } + else { + return nodeDangling(path); + } + } + getFile(nodeId) { + return this.metadata.getFirstLinkpathDest(nodeId.id, ''); + } + async fillWithBacklinks(nodes, nodeId, graph) { + // Could be an expensive operation... No cached backlinks implementation is available in the Obsidian API though. + if (nodeId.storeId === 'core') { + const path = this.getFile(nodeId).path; + // @ts-ignore + const resolvedLinks = this.metadata.resolvedLinks; + for (const otherPath of Object.keys(resolvedLinks)) { + if (path in resolvedLinks[otherPath]) { + const file = this.vault.getAbstractFileByPath(otherPath); + const id = VizId.fromFile(file).toId(); + if (!(id in nodes)) { + nodes[id] = await nodeFromFile(file, this.plugin, graph.settings); + } + } + } + } + } + async getNeighbourhood(nodeIds, viz) { + const nodes = {}; + for (const nodeId of nodeIds) { + if (nodeId.storeId === this.storeId()) { + const file = this.getFile(nodeId); + if (file === null) { + continue; + } + const cache = this.metadata.getFileCache(file); + if (cache === null) { + continue; + } + if (!(nodeId.toId() in nodes)) { + nodes[nodeId.toId()] = await nodeFromFile(file, this.plugin, viz.settings); + } + const promiseNodes = {}; + obsidian.iterateCacheRefs(cache, (ref) => { + const id = this.getOtherId(ref, file.path).toId(); + if (!(id in nodes)) { + promiseNodes[id] = this.getNodeFromLink(ref, file.path, viz); + } + }); + for (const id of Object.keys(promiseNodes)) { + if (!(id in nodes)) { + nodes[id] = await promiseNodes[id]; + } + } + await this.fillWithBacklinks(nodes, nodeId, viz); + } + } + return Object.values(nodes); + } + storeId() { + return 'core'; + } + get(nodeId, view) { + const file = this.getFile(nodeId); + if (file === null) { + return null; + } + const cache = this.metadata.getFileCache(file); + if (cache === null) { + console.log('returning empty cache', nodeId, view); + return null; + } + return Promise.resolve(nodeFromFile(file, this.plugin, view.settings)); + } + async refreshNode(id, view) { + const idS = id.toId(); + let correctEdges; + let node = view.viz.$id(idS); + if (this.getFile(id) === null) { + // File does not exist + if (node) { + // If a node exists for this file, remove it. + node.remove(); + view.onGraphChanged(true, true); + } + return; + } + if (node.length > 0 && node.hasClass(CLASS_EXPANDED)) { + correctEdges = await view.expand(node, true, false); + } + else { + const nodeDef = await this.get(id, view); + view.mergeToGraph([nodeDef], true, false); + node = view.viz.$id(idS); + const edges = await view.buildEdges(node); + correctEdges = view.mergeToGraph(edges, true, false); + } + // Remove outgoing edges that no longer exist. + const removed = node.connectedEdges() + .difference(correctEdges.merged) + .remove(); + if (removed.length > 0 || correctEdges.added.length > 0) { + view.onGraphChanged(true, true); + } + } + onload() { + super.onload(); + const store = this; + this.registerEvent(this.metadata.on('changed', (file) => { + store.plugin.activeGraphs().forEach(async (v) => { + await store.refreshNode(VizId.fromFile(file), v); + }); + })); + this.registerEvent(this.vault.on('rename', (file, oldPath) => { + if (file instanceof obsidian.TFile) { + const id = VizId.fromFile(file); + const oldId = VizId.fromPath(oldPath); + store.plugin.activeGraphs().forEach(async (v) => { + setTimeout(async () => { + // Changing the ID of a node in Cytoscape is not allowed, so remove and then restore. + // Put in setTimeout because Obsidian doesn't immediately update the metadata on rename... + v.viz.$id(oldId.toId()).remove(); + await store.refreshNode(id, v); + }, 500); + }); + } + })); + this.registerEvent(this.vault.on('delete', (file) => { + if (file instanceof obsidian.TFile) { + store.plugin.activeGraphs().forEach((v) => { + v.viz.$id(VizId.fromFile(file).toId()).remove(); + }); + } + })); + } +} + +function noop$2() { } +function run$3(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run$3); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element$1(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function to_number(value) { + return value === '' ? null : +value; +} +function children(element) { + return Array.from(element.childNodes); +} +function set_data(text, data) { + data = '' + data; + if (text.wholeText !== data) + text.data = data; +} +function set_input_value(input, value) { + input.value = value == null ? '' : value; +} +function set_style(node, key, value, important) { + node.style.setProperty(key, value, important ? 'important' : ''); +} +function select_option(select, value) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + if (option.__value === value) { + option.selected = true; + return; + } + } + select.selectedIndex = -1; // no option should be selected +} +function select_value(select) { + const selected_option = select.querySelector(':checked') || select.options[0]; + return selected_option && selected_option.__value; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update$1(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update$1($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +let outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} +function create_component(block) { + block && block.c(); +} +function mount_component(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run$3).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop$2, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +/** + * Base class for Svelte components. Used when dev=false. + */ +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop$2; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +} + +const STYLESHEET_PATH = function (vault) { + return `${vault.configDir}/plugins/juggl/graph.css`; +}; +const SHAPES = ['ellipse', + 'rectangle', + 'triangle', + 'diamond', + 'pentagon', + 'hexagon', + 'tag', + 'rhomboid', + 'star', + 'vee', + 'round-rectangle', + 'round-triangle', + 'round-diamond', + 'round-pentagon', + 'round-hexagon', + 'round-tag', +]; +const DEFAULT_USER_SHEET = ` +/* For a full overview of styling options, see https://js.cytoscape.org/#style */ +`; +const YAML_MODIFY_SHEET = ` + + +node[title] { + label: data(title); +} + +node[color] { + background-color: data(color); +} + +node[shape] { + shape: data(shape); +} + +node[width] { + width: data(width); +} + +node[height] { + width: data(height); +} + +node[image] { + background-image: data(image); +} +`; +const getGraphColor = function (clazz) { + // Hacky way to get style properties set for Obsidians graph view + const graphDiv = document.createElement('div'); + graphDiv.addClass('graph-view', clazz); + document.body.appendChild(graphDiv); + const computedColor = getComputedStyle(graphDiv).getPropertyValue('color'); + graphDiv.detach(); + return computedColor; +}; +/* +defaultSheet comes before graph.css, yamlModifySheet comes after. + */ +class GraphStyleSheet { + constructor(plugin) { + this.defaultSheet = this.getDefaultStylesheet(); + this.yamlModifySheet = YAML_MODIFY_SHEET; + this.plugin = plugin; + } + async getStylesheet(viz) { + const file = this.plugin.vault.adapter.getFullPath(STYLESHEET_PATH(this.plugin.vault)); + // const customSheet = ''; + let customSheet = ''; + try { + customSheet = await fs.promises.readFile(file, 'utf-8') + .catch(async (err) => { + if (err.code === 'ENOENT') { + const cstmSheet = DEFAULT_USER_SHEET; + await fs.promises.writeFile(file, cstmSheet); + return cstmSheet; + } + else { + throw err; + } + }); + } + catch (e) { + console.log('Couldn\'t load user stylesheet. This is probably because we are on mobile'); + console.log(e); + } + // TODO: Ordering: If people specify some new YAML property to take into account, style groups will override this! + let globalGroups = ''; + if ('settings' in this.plugin) { + // @ts-ignore + globalGroups = this.styleGroupsToSheet(this.plugin.settings.globalStyleGroups, 'global'); + } + const localGroups = this.styleGroupsToSheet(viz.settings.styleGroups, 'local'); + return this.defaultSheet + globalGroups + customSheet + localGroups + this.yamlModifySheet; + } + colorToRGBA(col) { + const canvas = document.createElement('canvas'); + canvas.width = canvas.height = 1; + const ctx = canvas.getContext('2d'); + ctx.clearRect(0, 0, 1, 1); + // In order to detect invalid values, + // we can't rely on col being in the same format as what fillStyle is computed as, + // but we can ask it to implicitly compute a normalized value twice and compare. + ctx.fillStyle = '#000'; + ctx.fillStyle = col; + const computed = ctx.fillStyle; + ctx.fillStyle = '#fff'; + ctx.fillStyle = col; + if (computed !== ctx.fillStyle) { + return; // invalid color + } + ctx.fillRect(0, 0, 1, 1); + const rgba = [...ctx.getImageData(0, 0, 1, 1).data]; + return `rgb(${rgba[0]}, ${rgba[1]}, ${rgba[2]})`; + } + styleGroupsToSheet(groups, groupPrefix) { + let sheet = ''; + const parser = new DOMParser; + for (const [index, val] of groups.entries()) { + if (val.show) { + let icon = ''; + if (val.icon && val.icon.path) { + const svg = '' + + '' + + '' + + `` + + ''; + const html = parser.parseFromString(svg, 'text/xml').documentElement.outerHTML; + icon = `background-image: url('data:image/svg+xml,${encodeURIComponent(html)}');`; + } + // Until size = 1, let text size linearly scale with node, then scale the square root. + const textSizeModifier = Math.max(Math.min(val.size, 1), Math.sqrt(val.size)); + sheet += ` +node.${groupPrefix}-${index} { + background-color: ${val.color}; + shape: ${val.shape}; + background-fit: contain; + ${icon} + width: mapData(degree, 0, 60, ${MIN_NODE_SIZE * val.size}, ${MAX_NODE_SIZE * val.size}); + height: mapData(degree, 0, 60, ${MIN_NODE_SIZE * val.size}, ${MAX_NODE_SIZE * val.size}); + font-size: mapData(degree, 0, 60, ${MIN_FONT_SIZE * textSizeModifier}, ${MAX_FONT_SIZE * textSizeModifier}); + text-max-width: mapData(degree, 0, 60, ${Math.round(MIN_TEXT_WIDTH * textSizeModifier)}px, ${Math.round(MAX_TEXT_WIDTH * textSizeModifier)}px); +} +`; + } + else { + sheet += ` +node.${groupPrefix}-${index} { + display: none; +} +`; + } + } + return sheet; + } + getDefaultStylesheet() { + const style = getComputedStyle(document.body); + let font = style.getPropertyValue('--text'); + font = font.replace('BlinkMacSystemFont,', ''); // This crashes electron for some reason. + if (font.length === 0) { + font = 'Helvetica Neue'; + } + const fillColor = getGraphColor('color-fill'); + const fillHighlightColor = getGraphColor('color-fill-highlight'); + const accentBorderColor = getGraphColor('color-circle'); + const lineColor = getGraphColor('color-line'); + const lineHighlightColor = getGraphColor('color-line-highlight'); + const textColor = getGraphColor('color-text'); + const danglingColor = getGraphColor('color-fill-unresolved'); + return ` +node { + background-color: ${fillColor}; + color: ${textColor}; + font-family: ${font}; + text-valign: bottom; + shape: ellipse; + border-width: 0; + text-wrap: wrap; + min-zoomed-font-size: 8; +} + +node[name] { + label: data(name); +} +node[degree] { + width: mapData(degree, 0, 60, ${MIN_NODE_SIZE}, ${MAX_NODE_SIZE}); + height: mapData(degree, 0, 60, ${MIN_NODE_SIZE}, ${MAX_NODE_SIZE}); + font-size: mapData(degree, 0, 60, ${MIN_FONT_SIZE}, ${MAX_FONT_SIZE}); + text-opacity: mapData(degree, 0, 60, 0.7, 1); + text-max-width: mapData(degree, 0, 60, ${MIN_TEXT_WIDTH}px, ${MAX_TEXT_WIDTH}px); +} + +node:selected { + background-blacken: 0.3; + font-weight: bold; + +} +node:selected[degree] { + border-width: mapData(degree, 0, 60, 1, 3); +} + +.dangling { + background-color: ${danglingColor}; +} + +.image { + shape: round-rectangle; + width: 50; + height: 50; + background-opacity: 0; + background-image: data(resource_url); + background-image-crossorigin: anonymous; + background-image-opacity: 1; + background-fit: contain; + font-size: 0; + background-clip: node; +} + +.image.note { + font-size: mapData(degree, 0, 60, 5, 11); +} + +edge { + line-color: ${lineColor}; + loop-sweep: -50deg; + loop-direction: -45deg; + width: 0.70; + + target-arrow-shape: vee; + target-arrow-fill: filled; + target-arrow-color: ${lineColor}; + + arrow-scale: 0.55; + + font-size: 6; + font-family: ${font}; + color: ${textColor}; + curve-style: straight; + +} + +edge[edgeCount] { + width: mapData(edgeCount, 1, 50, 0.55, 3); + arrow-scale: mapData(edgeCount, 1, 50, 0.35, 1.5); +} + +edge:selected { + width: 0.7; + font-weight: bold; + line-color: ${lineHighlightColor}; +} + +:loop { + display: none; +} + +edge[type] { + label: data(type); +} +.inactive-node, +.unhover { + opacity: 0.3; +} +node.active-node, +node.hover { + background-color: ${fillHighlightColor}; + font-weight: bold; + border-width: 0.4; + border-color: ${accentBorderColor}; + opacity: 1; +} +edge.hover, +edge.connected-active-node, +edge.connected-hover { + width: 1; + opacity: 1; +} +edge.hover, +edge.connected-hover { + font-weight: bold; + line-color: ${lineHighlightColor}; + target-arrow-color: ${lineHighlightColor}; +} + +node.pinned { + border-style: dotted; + border-width: 2; +} +node.protected { + ghost: yes; + ghost-offset-x: 1px; + ghost-offset-y: 1px; + ghost-opacity: 0.5; +} +node.hard-filtered, +node.filtered { + display: none; +} +`; + } +} + +/* src/ui/settings/AppearanceSettings.svelte generated by Svelte v3.45.0 */ + +function create_fragment$c(ctx) { + let h3; + let t1; + let p; + let t2; + let t3; + let t4; + let a; + let t6; + let t7; + let button; + let mounted; + let dispose; + + return { + c() { + h3 = element$1("h3"); + h3.textContent = "Appearance"; + t1 = space(); + p = element$1("p"); + t2 = text("You can style the graph with css. This is done in the "); + t3 = text(/*stylesheetPath*/ ctx[0]); + t4 = text(" file.\n See "); + a = element$1("a"); + a.textContent = "this page"; + t6 = text(" for help with styling."); + t7 = space(); + button = element$1("button"); + button.textContent = "Open graph.css in default editor."; + attr(a, "href", "https://publish.obsidian.md/semantic-obsidian/Node+styling"); + }, + m(target, anchor) { + insert(target, h3, anchor); + insert(target, t1, anchor); + insert(target, p, anchor); + append(p, t2); + append(p, t3); + append(p, t4); + append(p, a); + append(p, t6); + insert(target, t7, anchor); + insert(target, button, anchor); + + if (!mounted) { + dispose = listen(button, "click", /*openGraphCSS*/ ctx[1]); + mounted = true; + } + }, + p: noop$2, + i: noop$2, + o: noop$2, + d(detaching) { + if (detaching) detach(h3); + if (detaching) detach(t1); + if (detaching) detach(p); + if (detaching) detach(t7); + if (detaching) detach(button); + mounted = false; + dispose(); + } + }; +} + +function instance$c($$self, $$props, $$invalidate) { + let { plugin } = $$props; + let stylesheetPath = STYLESHEET_PATH(plugin.vault); + + let openGraphCSS = async function () { + let fullPath = plugin.vault.adapter.getFullPath(stylesheetPath); + + // Write a file, throw an error if it already exists (flag wx). Just catch that because it's fine. + try { + const shell = require('electron').shell; + const { promises } = require("fs"); + + await promises.writeFile(fullPath, DEFAULT_USER_SHEET, { flag: 'wx' }).catch(e => { + + }); + + await shell.openPath(fullPath); + } catch(e) { + console.log("Couldn't open graph.css. This is probably because we are on mobile."); + console.log(e); + } + }; + + $$self.$$set = $$props => { + if ('plugin' in $$props) $$invalidate(2, plugin = $$props.plugin); + }; + + return [stylesheetPath, openGraphCSS, plugin]; +} + +class AppearanceSettings extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$c, create_fragment$c, safe_not_equal, { plugin: 2 }); + } +} + +/* src/ui/KoFi.svelte generated by Svelte v3.45.0 */ + +function create_fragment$b(ctx) { + let script; + let script_src_value; + let t; + let div; + let mounted; + let dispose; + + return { + c() { + script = element$1("script"); + t = space(); + div = element$1("div"); + attr(script, "type", "text/javascript"); + if (!src_url_equal(script.src, script_src_value = "https://ko-fi.com/widgets/widget_2.js")) attr(script, "src", script_src_value); + }, + m(target, anchor) { + append(document.head, script); + insert(target, t, anchor); + insert(target, div, anchor); + /*div_binding*/ ctx[2](div); + + if (!mounted) { + dispose = listen(script, "load", /*initializeKofi*/ ctx[1]); + mounted = true; + } + }, + p: noop$2, + i: noop$2, + o: noop$2, + d(detaching) { + detach(script); + if (detaching) detach(t); + if (detaching) detach(div); + /*div_binding*/ ctx[2](null); + mounted = false; + dispose(); + } + }; +} + +function instance$b($$self, $$props, $$invalidate) { + let button; + + var initializeKofi = () => { + kofiwidget2.init('Support Juggl development!', '#29abe0', 'B0B23OPUE'); + $$invalidate(0, button.innerHTML = kofiwidget2.getHTML(), button); + }; + + function div_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + button = $$value; + $$invalidate(0, button); + }); + } + + return [button, initializeKofi, div_binding]; +} + +class KoFi extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$b, create_fragment$b, safe_not_equal, {}); + } +} + +const LAYOUTS = ['force-directed', 'circle', 'grid', 'hierarchy', 'cola']; +const emptyStyleGroup = { filter: '', + color: 'black', + shape: 'ellipse', + icon: { name: 'No icon', path: '', color: 'white' }, + showInPane: true, + show: true, + size: 1.0 }; +const genStyleGroups = function (plugin) { + const tagColorMap = {}; + const colorSet = [[ + '#0089BA', + '#2C73D2', + '#008E9B', + '#0081CF', + '#008F7A', + '#008E9B', // This one is double oops! + ], [ + '#D65DB1', + '#0082C1', + '#9270D3', + '#007F93', + '#007ED9', + '#007660', + ], [ + '#FF9671', + '#A36AAA', + '#F27D88', + '#6967A9', + '#D26F9D', + '#1b6299', + ], [ + '#FFC75F', + '#4C9A52', + '#C3BB4E', + '#00855B', + '#88AC4B', + '#006F61', + ], [ + '#FF6F91', + '#6F7F22', + '#E07250', + '#257A3E', + '#AC7C26', + '#006F5F', + ], [ + '#F9F871', + '#2FAB63', + '#B8E067', + '#008E63', + '#78C664', + '#007160', + ]]; + const colors = []; + for (const i of Array(6).keys()) { + for (const j of Array(6).keys()) { + colors.push(colorSet[j][i]); + } + } + let tagsIter = 0; + for (const file of plugin.vault.getMarkdownFiles()) { + const cache = plugin.metadata.getFileCache(file); + if (cache?.tags) { + cache.tags.forEach((t) => { + const tag = t.tag.slice(1); + const hSplit = tag.split('/'); + const tags = []; + for (const i in hSplit) { + const hTag = hSplit.slice(0, parseInt(i) + 1).join('-'); + tags.push(hTag); + } + for (const tag of tags) { + if (!(tag in tagColorMap)) { + tagColorMap[tag] = colors[tagsIter]; + tagsIter += 1; + if (tagsIter >= colors.length) { + tagsIter = 0; + } + } + } + }); + } + } + const genSheet = [ + { filter: `class:dangling`, + color: getGraphColor('color-fill-unresolved'), + shape: 'ellipse', + icon: { name: 'No icon', path: '', color: 'white' }, + showInPane: true, + show: true, + size: 1.0 }, + { filter: `class:file -class:image`, + color: getGraphColor('color-fill'), + shape: 'ellipse', + icon: { name: 'No icon', path: '', color: 'white' }, + showInPane: true, + show: true, + size: 1.0 }, + ]; + for (const tag of Object.keys(tagColorMap)) { + genSheet.push({ filter: `tag:#${tag}`, + color: tagColorMap[tag], + shape: 'ellipse', + icon: { name: 'No icon', path: '', color: 'white' }, + showInPane: true, + show: true, + size: 1.0 }); + } + return genSheet; +}; +const DefaultJugglSettings = { + splitDirection: 'vertical', + typedLinkPrefix: '-', + useImgServer: false, + imgServerPort: 3837, + debug: false, + globalStyleGroups: [], + globalGraphRibbon: true, + graphSettings: { + // TODO: Not currently used anywhere + animateLayout: true, + autoAddNodes: true, + autoExpand: false, + autoZoom: false, + coreStore: OBSIDIAN_STORE_NAME, + expandInitial: true, + fdgdLayout: 'd3-force', + filter: '', + height: '100%', + hoverEdges: false, + layout: 'force-directed', + limit: 10000, + mergeEdges: true, + metaKeyHover: false, + mode: 'workspace', + navigator: true, + openWithShift: false, + readContent: true, + styleGroups: [], + toolbar: true, + width: '100%', + zoomSpeed: 1, + }, + embedSettings: { + animateLayout: true, + autoAddNodes: false, + autoExpand: false, + autoZoom: false, + coreStore: OBSIDIAN_STORE_NAME, + expandInitial: true, + fdgdLayout: 'cola', + filter: '', + height: '400px', + hoverEdges: false, + layout: 'force-directed', + limit: 1000, + mergeEdges: true, + metaKeyHover: false, + mode: 'local', + navigator: false, + openWithShift: false, + readContent: true, + styleGroups: [], + toolbar: false, + width: '100%', + zoomSpeed: 1, + }, + globalGraphSettings: { + animateLayout: true, + autoAddNodes: true, + autoExpand: false, + autoZoom: false, + coreStore: OBSIDIAN_STORE_NAME, + expandInitial: false, + fdgdLayout: 'cola', + filter: '-class:dangling -class:file', + height: '100%', + width: '100%', + limit: 10000, + hoverEdges: false, + layout: 'force-directed', + mergeEdges: true, + metaKeyHover: false, + mode: 'workspace', + navigator: true, + openWithShift: false, + readContent: false, + styleGroups: [], + toolbar: true, + zoomSpeed: 1, + }, +}; +class JugglGraphSettingsTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + containerEl.createEl('h3'); + containerEl.createEl('h3', { text: 'Juggl' }); + new KoFi({ target: containerEl }); + const doc_link = document.createElement('a'); + doc_link.href = 'https://juggl.io'; + doc_link.target = '_blank'; + doc_link.innerHTML = 'the documentation'; + const discord_link = document.createElement('a'); + discord_link.href = 'https://discord.gg/sAmSGpaPgM'; + discord_link.target = '_blank'; + discord_link.innerHTML = 'the Discord server'; + const introPar = document.createElement('p'); + introPar.innerHTML = + 'Check out ' + doc_link.outerHTML + ' for documentation on how to use the plugin.
' + + 'Join ' + discord_link.outerHTML + ' for help, nice discussion and insight into development.'; + containerEl.appendChild(introPar); + new AppearanceSettings({ target: containerEl, props: { plugin: this.plugin } }); + containerEl.createEl('h3'); + containerEl.createEl('h3', { text: 'Extensions' }); + new obsidian.Setting(containerEl) + .setName('Use navigator') + .setDesc('Use the navigator overview in the bottom-right corner. Disabling could improve performance.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.graphSettings.navigator) + .onChange((newValue) => { + this.plugin.settings.globalGraphSettings.navigator = newValue; + this.plugin.settings.graphSettings.navigator = newValue; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Default mode') + .setDesc('The default mode to open the Advanced Graph View in.') + .addDropdown((dropdown) => { + dropdown.addOption('local', 'Local Mode'); + dropdown.addOption('workspace', 'Workspace Mode'); + dropdown.setValue(this.plugin.settings.graphSettings.mode) + .onChange((newValue) => { + this.plugin.settings.graphSettings.mode = newValue; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Force-directed algorithm') + .setDesc('The default force-directed graph drawing algorithm to use. ' + + 'Cola is nice, but unstable in some use cases. Obsidian uses D3') + .addDropdown((dropdown) => { + dropdown.addOption('cola', 'Cola'); + dropdown.addOption('d3-force', 'D3'); + dropdown.setValue(this.plugin.settings.graphSettings.fdgdLayout) + .onChange((newValue) => { + this.plugin.settings.graphSettings.fdgdLayout = newValue; + this.plugin.settings.embedSettings.fdgdLayout = newValue; + this.plugin.settings.globalGraphSettings.fdgdLayout = newValue; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Global Graph Icon') + .setDesc('Show the Global Graph Icon on the left ribbon.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.globalGraphRibbon) + .onChange((new_value) => { + this.plugin.settings.globalGraphRibbon = new_value; + this.plugin.saveData(this.plugin.settings); + this.plugin.setGlobalIcon(); + }); + }); + new obsidian.Setting(containerEl) + .setName(`Require ⌘/ctrl for preview hovers`) + .setDesc('When set to true, you will need to hold down ⌘ (mac) or ctrl (windows) to show preview hovers of notes.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.graphSettings.metaKeyHover) + .onChange((new_value) => { + this.plugin.settings.graphSettings.metaKeyHover = new_value; + this.plugin.settings.globalGraphSettings.metaKeyHover = new_value; + this.plugin.settings.embedSettings.metaKeyHover = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + // // Note: This isn't currently used anywhere, and the Neo4j stream plugin will likely not provide a backend. + // // Therefore this setting is disabled to prevent confusion. + // new Setting(containerEl) + // .setName('Data store') + // .setDesc('Set what database to get the Obsidian graph from. By default, only Obsidian itself is an option. ' + + // 'Later on, you will be able to install the Neo4j Stream Plugin to use a Neo4j backend which has more features and scales better to large graphs.') + // .addDropdown((dropdown) => { + // Object.keys(this.plugin.coreStores).forEach((c) => { + // dropdown.addOption(c, c); + // }); + // dropdown.setValue(this.plugin.settings.graphSettings.coreStore) + // .onChange((newValue) => { + // this.plugin.settings.graphSettings.coreStore = newValue; + // this.plugin.settings.embedSettings.coreStore = newValue; + // this.plugin.saveData(this.plugin.settings); + // }); + // }); + containerEl.createEl('h4', { text: 'Workspace mode' }); + new obsidian.Setting(containerEl) + .setName('Automatically add nodes') + .setDesc('This will automatically add nodes to the graph whenever a note is opened.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.graphSettings.autoAddNodes) + .onChange((new_value) => { + this.plugin.settings.graphSettings.autoAddNodes = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Automatically zoom on active nodes') + .setDesc('This will automatically keep fitting the viewport on the currently active node. ' + + 'In particular, this happens when you open a file.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.graphSettings.autoZoom) + .onChange((new_value) => { + this.plugin.settings.graphSettings.autoZoom = new_value; + this.plugin.settings.globalGraphSettings.autoZoom = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + containerEl.createEl('h3', { text: 'Advanced' }); + new obsidian.Setting(containerEl) + .setName('Zoom speed') + .setDesc('Speed with which zooming in and out happens. ' + + 'A value of 1 is recommended, but can be too quick for some mice.') + .addSlider((slider) => { + slider + .setDynamicTooltip() + .setLimits(0.01, 1.5, 0.01) + .setValue(this.plugin.settings.graphSettings.zoomSpeed) + .onChange((newValue) => { + this.plugin.settings.graphSettings.zoomSpeed = newValue; + this.plugin.settings.embedSettings.zoomSpeed = newValue; + this.plugin.settings.globalGraphSettings.zoomSpeed = newValue; + this.plugin.saveData(this.plugin.settings); + }); + }); + // Not currently implemented + // new Setting(containerEl) + // .setName('Automatic expand') + // .setDesc('This will automatically expand the neighbourhood around any nodes clicked on or added to the graph. ' + + // 'This normally only happens when pressing E or when double-clicking.') + // .addToggle((toggle) => { + // toggle.setValue(this.plugin.settings.autoExpand) + // .onChange((new_value) => { + // this.plugin.settings.autoExpand = new_value; + // this.plugin.saveData(this.plugin.settings); + // }); + // }); + new obsidian.Setting(containerEl) + .setName('Hover on edges') + .setDesc('Hover on edges to show what they are connected to.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.graphSettings.hoverEdges) + .onChange((new_value) => { + this.plugin.settings.graphSettings.hoverEdges = new_value; + this.plugin.settings.embedSettings.hoverEdges = new_value; + this.plugin.settings.globalGraphSettings.hoverEdges = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Open with shift') + .setDesc('Only opens file when clicking on a node when shift is pressed.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.graphSettings.openWithShift) + .onChange((new_value) => { + this.plugin.settings.graphSettings.openWithShift = new_value; + this.plugin.settings.embedSettings.openWithShift = new_value; + this.plugin.settings.globalGraphSettings.openWithShift = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + // new Setting(containerEl) + // .setName('Index note content') + // .setDesc('This will full-text index the content of notes. ' + + // 'This allows searching within notes using the Neo4j Bloom search bar. However, it could decrease performance.') + // .addToggle((toggle) => { + // toggle.setValue(this.plugin.settings.indexContent) + // .onChange((new_value) => { + // this.plugin.settings.indexContent = new_value; + // this.plugin.saveData(this.plugin.settings); + // }); + // }); + new obsidian.Setting(containerEl) + .setName('Typed links prefix') + .setDesc('Prefix to use for typed links. Default is \'-\'. Requires a server restart.') + .addText((text) => { + text.setPlaceholder('') + .setValue(this.plugin.settings.typedLinkPrefix) + .onChange((new_folder) => { + this.plugin.settings.typedLinkPrefix = new_folder; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Render images in graph') + .setDesc('This will show image attachments in your vault as images in the graph. Requires reloading Juggl. ' + + 'WARNING: On Windows this will trigger your firewall!') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.useImgServer) + .onChange((new_value) => { + this.plugin.settings.useImgServer = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Image server port') + .setDesc('Set the port of the image server. If you use multiple vaults, these need to be set differently. Default 3837.') + .addText((text) => { + text.setValue(this.plugin.settings.imgServerPort + '') + .setPlaceholder('3837') + .onChange((new_value) => { + this.plugin.settings.imgServerPort = parseInt(new_value.trim()); + this.plugin.saveData(this.plugin.settings); + }); + }); + new obsidian.Setting(containerEl) + .setName('Debug') + .setDesc('Enable debug mode, which prints a lot of stuff in the developers console.') + .addToggle((toggle) => { + toggle.setValue(this.plugin.settings.debug) + .onChange((new_value) => { + this.plugin.settings.debug = new_value; + this.plugin.saveData(this.plugin.settings); + }); + }); + } +} + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; +} + +function commonjsRequire (target) { + throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.'); +} + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT$1 = 'Expected a function'; + +/** Used as references for various `Number` constants. */ +var NAN$1 = 0 / 0; + +/** `Object#toString` result references. */ +var symbolTag$4 = '[object Symbol]'; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary$1 = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal$1 = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt$1 = parseInt; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + +/** Detect free variable `self`. */ +var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')(); + +/** Used for built-in method references. */ +var objectProto$j = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString$1 = objectProto$j.toString; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax$3 = Math.max, + nativeMin = Math.min; + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now$1 = function() { + return root$1.Date.now(); +}; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce$1(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT$1); + } + wait = toNumber$1(wait) || 0; + if (isObject$1(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax$3(toNumber$1(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + result = wait - timeSinceLastCall; + + return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now$1(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now$1()); + } + + function debounced() { + var time = now$1(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject$1(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike$1(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol$1(value) { + return typeof value == 'symbol' || + (isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$4); +} + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber$1(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol$1(value)) { + return NAN$1; + } + if (isObject$1(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject$1(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary$1.test(value); + return (isBinary || reIsOctal$1.test(value)) + ? freeParseInt$1(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex$1.test(value) ? NAN$1 : +value); +} + +var lodash_debounce = debounce$1; + +var heap$1 = createCommonjsModule(function (module, exports) { +// Generated by CoffeeScript 1.8.0 +(function() { + var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup; + + floor = Math.floor, min = Math.min; + + + /* + Default comparison function to be used + */ + + defaultCmp = function(x, y) { + if (x < y) { + return -1; + } + if (x > y) { + return 1; + } + return 0; + }; + + + /* + Insert item x in list a, and keep it sorted assuming a is sorted. + + If x is already in a, insert it to the right of the rightmost x. + + Optional args lo (default 0) and hi (default a.length) bound the slice + of a to be searched. + */ + + insort = function(a, x, lo, hi, cmp) { + var mid; + if (lo == null) { + lo = 0; + } + if (cmp == null) { + cmp = defaultCmp; + } + if (lo < 0) { + throw new Error('lo must be non-negative'); + } + if (hi == null) { + hi = a.length; + } + while (lo < hi) { + mid = floor((lo + hi) / 2); + if (cmp(x, a[mid]) < 0) { + hi = mid; + } else { + lo = mid + 1; + } + } + return ([].splice.apply(a, [lo, lo - lo].concat(x)), x); + }; + + + /* + Push item onto heap, maintaining the heap invariant. + */ + + heappush = function(array, item, cmp) { + if (cmp == null) { + cmp = defaultCmp; + } + array.push(item); + return _siftdown(array, 0, array.length - 1, cmp); + }; + + + /* + Pop the smallest item off the heap, maintaining the heap invariant. + */ + + heappop = function(array, cmp) { + var lastelt, returnitem; + if (cmp == null) { + cmp = defaultCmp; + } + lastelt = array.pop(); + if (array.length) { + returnitem = array[0]; + array[0] = lastelt; + _siftup(array, 0, cmp); + } else { + returnitem = lastelt; + } + return returnitem; + }; + + + /* + Pop and return the current smallest value, and add the new item. + + This is more efficient than heappop() followed by heappush(), and can be + more appropriate when using a fixed size heap. Note that the value + returned may be larger than item! That constrains reasonable use of + this routine unless written as part of a conditional replacement: + if item > array[0] + item = heapreplace(array, item) + */ + + heapreplace = function(array, item, cmp) { + var returnitem; + if (cmp == null) { + cmp = defaultCmp; + } + returnitem = array[0]; + array[0] = item; + _siftup(array, 0, cmp); + return returnitem; + }; + + + /* + Fast version of a heappush followed by a heappop. + */ + + heappushpop = function(array, item, cmp) { + var _ref; + if (cmp == null) { + cmp = defaultCmp; + } + if (array.length && cmp(array[0], item) < 0) { + _ref = [array[0], item], item = _ref[0], array[0] = _ref[1]; + _siftup(array, 0, cmp); + } + return item; + }; + + + /* + Transform list into a heap, in-place, in O(array.length) time. + */ + + heapify = function(array, cmp) { + var i, _i, _len, _ref1, _results, _results1; + if (cmp == null) { + cmp = defaultCmp; + } + _ref1 = (function() { + _results1 = []; + for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); } + return _results1; + }).apply(this).reverse(); + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + i = _ref1[_i]; + _results.push(_siftup(array, i, cmp)); + } + return _results; + }; + + + /* + Update the position of the given item in the heap. + This function should be called every time the item is being modified. + */ + + updateItem = function(array, item, cmp) { + var pos; + if (cmp == null) { + cmp = defaultCmp; + } + pos = array.indexOf(item); + if (pos === -1) { + return; + } + _siftdown(array, 0, pos, cmp); + return _siftup(array, pos, cmp); + }; + + + /* + Find the n largest elements in a dataset. + */ + + nlargest = function(array, n, cmp) { + var elem, result, _i, _len, _ref; + if (cmp == null) { + cmp = defaultCmp; + } + result = array.slice(0, n); + if (!result.length) { + return result; + } + heapify(result, cmp); + _ref = array.slice(n); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + elem = _ref[_i]; + heappushpop(result, elem, cmp); + } + return result.sort(cmp).reverse(); + }; + + + /* + Find the n smallest elements in a dataset. + */ + + nsmallest = function(array, n, cmp) { + var elem, los, result, _i, _j, _len, _ref, _ref1, _results; + if (cmp == null) { + cmp = defaultCmp; + } + if (n * 10 <= array.length) { + result = array.slice(0, n).sort(cmp); + if (!result.length) { + return result; + } + los = result[result.length - 1]; + _ref = array.slice(n); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + elem = _ref[_i]; + if (cmp(elem, los) < 0) { + insort(result, elem, 0, null, cmp); + result.pop(); + los = result[result.length - 1]; + } + } + return result; + } + heapify(array, cmp); + _results = []; + for (_j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) { + _results.push(heappop(array, cmp)); + } + return _results; + }; + + _siftdown = function(array, startpos, pos, cmp) { + var newitem, parent, parentpos; + if (cmp == null) { + cmp = defaultCmp; + } + newitem = array[pos]; + while (pos > startpos) { + parentpos = (pos - 1) >> 1; + parent = array[parentpos]; + if (cmp(newitem, parent) < 0) { + array[pos] = parent; + pos = parentpos; + continue; + } + break; + } + return array[pos] = newitem; + }; + + _siftup = function(array, pos, cmp) { + var childpos, endpos, newitem, rightpos, startpos; + if (cmp == null) { + cmp = defaultCmp; + } + endpos = array.length; + startpos = pos; + newitem = array[pos]; + childpos = 2 * pos + 1; + while (childpos < endpos) { + rightpos = childpos + 1; + if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) { + childpos = rightpos; + } + array[pos] = array[childpos]; + pos = childpos; + childpos = 2 * pos + 1; + } + array[pos] = newitem; + return _siftdown(array, startpos, pos, cmp); + }; + + Heap = (function() { + Heap.push = heappush; + + Heap.pop = heappop; + + Heap.replace = heapreplace; + + Heap.pushpop = heappushpop; + + Heap.heapify = heapify; + + Heap.updateItem = updateItem; + + Heap.nlargest = nlargest; + + Heap.nsmallest = nsmallest; + + function Heap(cmp) { + this.cmp = cmp != null ? cmp : defaultCmp; + this.nodes = []; + } + + Heap.prototype.push = function(x) { + return heappush(this.nodes, x, this.cmp); + }; + + Heap.prototype.pop = function() { + return heappop(this.nodes, this.cmp); + }; + + Heap.prototype.peek = function() { + return this.nodes[0]; + }; + + Heap.prototype.contains = function(x) { + return this.nodes.indexOf(x) !== -1; + }; + + Heap.prototype.replace = function(x) { + return heapreplace(this.nodes, x, this.cmp); + }; + + Heap.prototype.pushpop = function(x) { + return heappushpop(this.nodes, x, this.cmp); + }; + + Heap.prototype.heapify = function() { + return heapify(this.nodes, this.cmp); + }; + + Heap.prototype.updateItem = function(x) { + return updateItem(this.nodes, x, this.cmp); + }; + + Heap.prototype.clear = function() { + return this.nodes = []; + }; + + Heap.prototype.empty = function() { + return this.nodes.length === 0; + }; + + Heap.prototype.size = function() { + return this.nodes.length; + }; + + Heap.prototype.clone = function() { + var heap; + heap = new Heap(); + heap.nodes = this.nodes.slice(0); + return heap; + }; + + Heap.prototype.toArray = function() { + return this.nodes.slice(0); + }; + + Heap.prototype.insert = Heap.prototype.push; + + Heap.prototype.top = Heap.prototype.peek; + + Heap.prototype.front = Heap.prototype.peek; + + Heap.prototype.has = Heap.prototype.contains; + + Heap.prototype.copy = Heap.prototype.clone; + + return Heap; + + })(); + + (function(root, factory) { + { + return module.exports = factory(); + } + })(this, function() { + return Heap; + }); + +}).call(commonjsGlobal); +}); + +var heap = heap$1; + +/** + * Copyright (c) 2016-2021, The Cytoscape Consortium. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the “Software”), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +function _interopDefault$1 (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var util$2 = _interopDefault$1(lodash_debounce); +var Heap = _interopDefault$1(heap); + +function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +function _defineProperty$1(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); +} + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} + +function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); +} + +var window$1 = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef + +var navigator$1 = window$1 ? window$1.navigator : null; +window$1 ? window$1.document : null; + +var typeofstr = _typeof(''); + +var typeofobj = _typeof({}); + +var typeoffn = _typeof(function () {}); + +var typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement); + +var instanceStr = function instanceStr(obj) { + return obj && obj.instanceString && fn(obj.instanceString) ? obj.instanceString() : null; +}; + +var string = function string(obj) { + return obj != null && _typeof(obj) == typeofstr; +}; +var fn = function fn(obj) { + return obj != null && _typeof(obj) === typeoffn; +}; +var array = function array(obj) { + return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array); +}; +var plainObject = function plainObject(obj) { + return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object; +}; +var object = function object(obj) { + return obj != null && _typeof(obj) === typeofobj; +}; +var number = function number(obj) { + return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj); +}; +var integer = function integer(obj) { + return number(obj) && Math.floor(obj) === obj; +}; +var htmlElement = function htmlElement(obj) { + if ('undefined' === typeofhtmlele) { + return undefined; + } else { + return null != obj && obj instanceof HTMLElement; + } +}; +var elementOrCollection = function elementOrCollection(obj) { + return element(obj) || collection(obj); +}; +var element = function element(obj) { + return instanceStr(obj) === 'collection' && obj._private.single; +}; +var collection = function collection(obj) { + return instanceStr(obj) === 'collection' && !obj._private.single; +}; +var core = function core(obj) { + return instanceStr(obj) === 'core'; +}; +var stylesheet = function stylesheet(obj) { + return instanceStr(obj) === 'stylesheet'; +}; +var event = function event(obj) { + return instanceStr(obj) === 'event'; +}; +var emptyString = function emptyString(obj) { + if (obj === undefined || obj === null) { + // null is empty + return true; + } else if (obj === '' || obj.match(/^\s+$/)) { + return true; // empty string is empty + } + + return false; // otherwise, we don't know what we've got +}; +var domElement = function domElement(obj) { + if (typeof HTMLElement === 'undefined') { + return false; // we're not in a browser so it doesn't matter + } else { + return obj instanceof HTMLElement; + } +}; +var boundingBox = function boundingBox(obj) { + return plainObject(obj) && number(obj.x1) && number(obj.x2) && number(obj.y1) && number(obj.y2); +}; +var promise = function promise(obj) { + return object(obj) && fn(obj.then); +}; +var ms = function ms() { + return navigator$1 && navigator$1.userAgent.match(/msie|trident|edge/i); +}; // probably a better way to detect this... + +var memoize$1 = function memoize(fn, keyFn) { + if (!keyFn) { + keyFn = function keyFn() { + if (arguments.length === 1) { + return arguments[0]; + } else if (arguments.length === 0) { + return 'undefined'; + } + + var args = []; + + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + + return args.join('$'); + }; + } + + var memoizedFn = function memoizedFn() { + var self = this; + var args = arguments; + var ret; + var k = keyFn.apply(self, args); + var cache = memoizedFn.cache; + + if (!(ret = cache[k])) { + ret = cache[k] = fn.apply(self, args); + } + + return ret; + }; + + memoizedFn.cache = {}; + return memoizedFn; +}; + +var camel2dash = memoize$1(function (str) { + return str.replace(/([A-Z])/g, function (v) { + return '-' + v.toLowerCase(); + }); +}); +var dash2camel = memoize$1(function (str) { + return str.replace(/(-\w)/g, function (v) { + return v[1].toUpperCase(); + }); +}); +var prependCamel = memoize$1(function (prefix, str) { + return prefix + str[0].toUpperCase() + str.substring(1); +}, function (prefix, str) { + return prefix + '$' + str; +}); +var capitalize = function capitalize(str) { + if (emptyString(str)) { + return str; + } + + return str.charAt(0).toUpperCase() + str.substring(1); +}; + +var number$1 = '(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))'; +var rgba = 'rgb[a]?\\((' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)(?:\\s*,\\s*(' + number$1 + '))?\\)'; +var rgbaNoBackRefs = 'rgb[a]?\\((?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; +var hsla = 'hsl[a]?\\((' + number$1 + ')\\s*,\\s*(' + number$1 + '[%])\\s*,\\s*(' + number$1 + '[%])(?:\\s*,\\s*(' + number$1 + '))?\\)'; +var hslaNoBackRefs = 'hsl[a]?\\((?:' + number$1 + ')\\s*,\\s*(?:' + number$1 + '[%])\\s*,\\s*(?:' + number$1 + '[%])(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; +var hex3 = '\\#[0-9a-fA-F]{3}'; +var hex6 = '\\#[0-9a-fA-F]{6}'; + +var ascending = function ascending(a, b) { + if (a < b) { + return -1; + } else if (a > b) { + return 1; + } else { + return 0; + } +}; +var descending = function descending(a, b) { + return -1 * ascending(a, b); +}; + +var extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + var args = arguments; + + for (var i = 1; i < args.length; i++) { + var obj = args[i]; + + if (obj == null) { + continue; + } + + var keys = Object.keys(obj); + + for (var j = 0; j < keys.length; j++) { + var k = keys[j]; + tgt[k] = obj[k]; + } + } + + return tgt; +}; + +var hex2tuple = function hex2tuple(hex) { + if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') { + return; + } + + var shortHex = hex.length === 4; + var r, g, b; + var base = 16; + + if (shortHex) { + r = parseInt(hex[1] + hex[1], base); + g = parseInt(hex[2] + hex[2], base); + b = parseInt(hex[3] + hex[3], base); + } else { + r = parseInt(hex[1] + hex[2], base); + g = parseInt(hex[3] + hex[4], base); + b = parseInt(hex[5] + hex[6], base); + } + + return [r, g, b]; +}; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0) + +var hsl2tuple = function hsl2tuple(hsl) { + var ret; + var h, s, l, a, r, g, b; + + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + + var m = new RegExp('^' + hsla + '$').exec(hsl); + + if (m) { + // get hue + h = parseInt(m[1]); + + if (h < 0) { + h = (360 - -1 * h % 360) % 360; + } else if (h > 360) { + h = h % 360; + } + + h /= 360; // normalise on [0, 1] + + s = parseFloat(m[2]); + + if (s < 0 || s > 100) { + return; + } // saturation is [0, 100] + + + s = s / 100; // normalise on [0, 1] + + l = parseFloat(m[3]); + + if (l < 0 || l > 100) { + return; + } // lightness is [0, 100] + + + l = l / 100; // normalise on [0, 1] + + a = m[4]; + + if (a !== undefined) { + a = parseFloat(a); + + if (a < 0 || a > 1) { + return; + } // alpha is [0, 1] + + } // now, convert to rgb + // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript + + + if (s === 0) { + r = g = b = Math.round(l * 255); // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = Math.round(255 * hue2rgb(p, q, h + 1 / 3)); + g = Math.round(255 * hue2rgb(p, q, h)); + b = Math.round(255 * hue2rgb(p, q, h - 1 / 3)); + } + + ret = [r, g, b, a]; + } + + return ret; +}; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0) + +var rgb2tuple = function rgb2tuple(rgb) { + var ret; + var m = new RegExp('^' + rgba + '$').exec(rgb); + + if (m) { + ret = []; + var isPct = []; + + for (var i = 1; i <= 3; i++) { + var channel = m[i]; + + if (channel[channel.length - 1] === '%') { + isPct[i] = true; + } + + channel = parseFloat(channel); + + if (isPct[i]) { + channel = channel / 100 * 255; // normalise to [0, 255] + } + + if (channel < 0 || channel > 255) { + return; + } // invalid channel value + + + ret.push(Math.floor(channel)); + } + + var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3]; + var allArePct = isPct[1] && isPct[2] && isPct[3]; + + if (atLeastOneIsPct && !allArePct) { + return; + } // must all be percent values if one is + + + var alpha = m[4]; + + if (alpha !== undefined) { + alpha = parseFloat(alpha); + + if (alpha < 0 || alpha > 1) { + return; + } // invalid alpha value + + + ret.push(alpha); + } + } + + return ret; +}; +var colorname2tuple = function colorname2tuple(color) { + return colors[color.toLowerCase()]; +}; +var color2tuple = function color2tuple(color) { + return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color); +}; +var colors = { + // special colour names + transparent: [0, 0, 0, 0], + // NB alpha === 0 + // regular colours + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + grey: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}; + +var setMap = function setMap(options) { + var obj = options.map; + var keys = options.keys; + var l = keys.length; + + for (var i = 0; i < l; i++) { + var key = keys[i]; + + if (plainObject(key)) { + throw Error('Tried to set map with object key'); + } + + if (i < keys.length - 1) { + // extend the map if necessary + if (obj[key] == null) { + obj[key] = {}; + } + + obj = obj[key]; + } else { + // set the value + obj[key] = options.value; + } + } +}; // gets the value in a map even if it's not built in places + +var getMap = function getMap(options) { + var obj = options.map; + var keys = options.keys; + var l = keys.length; + + for (var i = 0; i < l; i++) { + var key = keys[i]; + + if (plainObject(key)) { + throw Error('Tried to get map with object key'); + } + + obj = obj[key]; + + if (obj == null) { + return obj; + } + } + + return obj; +}; // deletes the entry in the map + +var performance$1 = window$1 ? window$1.performance : null; +var pnow = performance$1 && performance$1.now ? function () { + return performance$1.now(); +} : function () { + return Date.now(); +}; + +var raf = function () { + if (window$1) { + if (window$1.requestAnimationFrame) { + return function (fn) { + window$1.requestAnimationFrame(fn); + }; + } else if (window$1.mozRequestAnimationFrame) { + return function (fn) { + window$1.mozRequestAnimationFrame(fn); + }; + } else if (window$1.webkitRequestAnimationFrame) { + return function (fn) { + window$1.webkitRequestAnimationFrame(fn); + }; + } else if (window$1.msRequestAnimationFrame) { + return function (fn) { + window$1.msRequestAnimationFrame(fn); + }; + } + } + + return function (fn) { + if (fn) { + setTimeout(function () { + fn(pnow()); + }, 1000 / 60); + } + }; +}(); + +var requestAnimationFrame$1 = function requestAnimationFrame(fn) { + return raf(fn); +}; +var performanceNow = pnow; + +var DEFAULT_HASH_SEED = 9261; +var K = 65599; // 37 also works pretty well + +var DEFAULT_HASH_SEED_ALT = 5381; +var hashIterableInts = function hashIterableInts(iterator) { + var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; + // sdbm/string-hash + var hash = seed; + var entry; + + for (;;) { + entry = iterator.next(); + + if (entry.done) { + break; + } + + hash = hash * K + entry.value | 0; + } + + return hash; +}; +var hashInt = function hashInt(num) { + var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; + // sdbm/string-hash + return seed * K + num | 0; +}; +var hashIntAlt = function hashIntAlt(num) { + var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT; + // djb2/string-hash + return (seed << 5) + seed + num | 0; +}; +var combineHashes = function combineHashes(hash1, hash2) { + return hash1 * 0x200000 + hash2; +}; +var combineHashesArray = function combineHashesArray(hashes) { + return hashes[0] * 0x200000 + hashes[1]; +}; +var hashArrays = function hashArrays(hashes1, hashes2) { + return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])]; +}; +var hashIntsArray = function hashIntsArray(ints, seed) { + var entry = { + value: 0, + done: false + }; + var i = 0; + var length = ints.length; + var iterator = { + next: function next() { + if (i < length) { + entry.value = ints[i++]; + } else { + entry.done = true; + } + + return entry; + } + }; + return hashIterableInts(iterator, seed); +}; +var hashString = function hashString(str, seed) { + var entry = { + value: 0, + done: false + }; + var i = 0; + var length = str.length; + var iterator = { + next: function next() { + if (i < length) { + entry.value = str.charCodeAt(i++); + } else { + entry.done = true; + } + + return entry; + } + }; + return hashIterableInts(iterator, seed); +}; +var hashStrings = function hashStrings() { + return hashStringsArray(arguments); +}; +var hashStringsArray = function hashStringsArray(strs) { + var hash; + + for (var i = 0; i < strs.length; i++) { + var str = strs[i]; + + if (i === 0) { + hash = hashString(str); + } else { + hash = hashString(str, hash); + } + } + + return hash; +}; + +/*global console */ +var warningsEnabled = true; +var warnSupported = console.warn != null; // eslint-disable-line no-console + +var traceSupported = console.trace != null; // eslint-disable-line no-console + +var MAX_INT = Number.MAX_SAFE_INTEGER || 9007199254740991; +var trueify = function trueify() { + return true; +}; +var falsify = function falsify() { + return false; +}; +var zeroify = function zeroify() { + return 0; +}; +var noop$1 = function noop() {}; +var error = function error(msg) { + throw new Error(msg); +}; +var warnings = function warnings(enabled) { + if (enabled !== undefined) { + warningsEnabled = !!enabled; + } else { + return warningsEnabled; + } +}; +var warn = function warn(msg) { + /* eslint-disable no-console */ + if (!warnings()) { + return; + } + + if (warnSupported) { + console.warn(msg); + } else { + console.log(msg); + + if (traceSupported) { + console.trace(); + } + } +}; +/* eslint-enable */ + +var clone$1 = function clone(obj) { + return extend({}, obj); +}; // gets a shallow copy of the argument + +var copy = function copy(obj) { + if (obj == null) { + return obj; + } + + if (array(obj)) { + return obj.slice(); + } else if (plainObject(obj)) { + return clone$1(obj); + } else { + return obj; + } +}; +var copyArray$1 = function copyArray(arr) { + return arr.slice(); +}; +var uuid = function uuid(a, b +/* placeholders */ +) { + for ( // loop :) + b = a = ''; // b - result , a - numeric letiable + a++ < 36; // + b += a * 51 & 52 // if "a" is not 9 or 14 or 19 or 24 + ? // return a random number or 4 + (a ^ 15 // if "a" is not 15 + ? // genetate a random number from 0 to 15 + 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless "a" is 20, in which case a random number from 8 to 11 + : 4 // otherwise 4 + ).toString(16) : '-' // in other cases (if "a" is 9,14,19,24) insert "-" + ) { + } + + return b; +}; +var _staticEmptyObject = {}; +var staticEmptyObject = function staticEmptyObject() { + return _staticEmptyObject; +}; +var defaults$1 = function defaults(_defaults) { + var keys = Object.keys(_defaults); + return function (opts) { + var filledOpts = {}; + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var optVal = opts == null ? undefined : opts[key]; + filledOpts[key] = optVal === undefined ? _defaults[key] : optVal; + } + + return filledOpts; + }; +}; +var removeFromArray = function removeFromArray(arr, ele, oneCopy) { + for (var i = arr.length - 1; i >= 0; i--) { + if (arr[i] === ele) { + arr.splice(i, 1); + + if (oneCopy) { + break; + } + } + } +}; +var clearArray = function clearArray(arr) { + arr.splice(0, arr.length); +}; +var push = function push(arr, otherArr) { + for (var i = 0; i < otherArr.length; i++) { + var el = otherArr[i]; + arr.push(el); + } +}; +var getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) { + if (prefix) { + propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth + } + + return obj[propName]; +}; +var setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) { + if (prefix) { + propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth + } + + obj[propName] = value; +}; + +/* global Map */ +var ObjectMap = +/*#__PURE__*/ +function () { + function ObjectMap() { + _classCallCheck(this, ObjectMap); + + this._obj = {}; + } + + _createClass(ObjectMap, [{ + key: "set", + value: function set(key, val) { + this._obj[key] = val; + return this; + } + }, { + key: "delete", + value: function _delete(key) { + this._obj[key] = undefined; + return this; + } + }, { + key: "clear", + value: function clear() { + this._obj = {}; + } + }, { + key: "has", + value: function has(key) { + return this._obj[key] !== undefined; + } + }, { + key: "get", + value: function get(key) { + return this._obj[key]; + } + }]); + + return ObjectMap; +}(); + +var Map$1$1 = typeof Map !== 'undefined' ? Map : ObjectMap; + +/* global Set */ +var undef = "undefined" ; + +var ObjectSet = +/*#__PURE__*/ +function () { + function ObjectSet(arrayOrObjectSet) { + _classCallCheck(this, ObjectSet); + + this._obj = Object.create(null); + this.size = 0; + + if (arrayOrObjectSet != null) { + var arr; + + if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) { + arr = arrayOrObjectSet.toArray(); + } else { + arr = arrayOrObjectSet; + } + + for (var i = 0; i < arr.length; i++) { + this.add(arr[i]); + } + } + } + + _createClass(ObjectSet, [{ + key: "instanceString", + value: function instanceString() { + return 'set'; + } + }, { + key: "add", + value: function add(val) { + var o = this._obj; + + if (o[val] !== 1) { + o[val] = 1; + this.size++; + } + } + }, { + key: "delete", + value: function _delete(val) { + var o = this._obj; + + if (o[val] === 1) { + o[val] = 0; + this.size--; + } + } + }, { + key: "clear", + value: function clear() { + this._obj = Object.create(null); + } + }, { + key: "has", + value: function has(val) { + return this._obj[val] === 1; + } + }, { + key: "toArray", + value: function toArray() { + var _this = this; + + return Object.keys(this._obj).filter(function (key) { + return _this.has(key); + }); + } + }, { + key: "forEach", + value: function forEach(callback, thisArg) { + return this.toArray().forEach(callback, thisArg); + } + }]); + + return ObjectSet; +}(); + +var Set$1$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet; + +var Element$1 = function Element(cy, params) { + var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + + if (cy === undefined || params === undefined || !core(cy)) { + error('An element must have a core reference and parameters set'); + return; + } + + var group = params.group; // try to automatically infer the group if unspecified + + if (group == null) { + if (params.data && params.data.source != null && params.data.target != null) { + group = 'edges'; + } else { + group = 'nodes'; + } + } // validate group + + + if (group !== 'nodes' && group !== 'edges') { + error('An element must be of type `nodes` or `edges`; you specified `' + group + '`'); + return; + } // make the element array-like, just like a collection + + + this.length = 1; + this[0] = this; // NOTE: when something is added here, add also to ele.json() + + var _p = this._private = { + cy: cy, + single: true, + // indicates this is an element + data: params.data || {}, + // data object + position: params.position || { + x: 0, + y: 0 + }, + // (x, y) position pair + autoWidth: undefined, + // width and height of nodes calculated by the renderer when set to special 'auto' value + autoHeight: undefined, + autoPadding: undefined, + compoundBoundsClean: false, + // whether the compound dimensions need to be recalculated the next time dimensions are read + listeners: [], + // array of bound listeners + group: group, + // string; 'nodes' or 'edges' + style: {}, + // properties as set by the style + rstyle: {}, + // properties for style sent from the renderer to the core + styleCxts: [], + // applied style contexts from the styler + styleKeys: {}, + // per-group keys of style property values + removed: true, + // whether it's inside the vis; true if removed (set true here since we call restore) + selected: params.selected ? true : false, + // whether it's selected + selectable: params.selectable === undefined ? true : params.selectable ? true : false, + // whether it's selectable + locked: params.locked ? true : false, + // whether the element is locked (cannot be moved) + grabbed: false, + // whether the element is grabbed by the mouse; renderer sets this privately + grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false, + // whether the element can be grabbed + pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false, + // whether the element has passthrough panning enabled + active: false, + // whether the element is active from user interaction + classes: new Set$1$1(), + // map ( className => true ) + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + rscratch: {}, + // object in which the renderer can store information + scratch: params.scratch || {}, + // scratch objects + edges: [], + // array of connected edges + children: [], + // array of children + parent: null, + // parent ref + traversalCache: {}, + // cache of output of traversal functions + backgrounding: false, + // whether background images are loading + bbCache: null, + // cache of the current bounding box + bbCacheShift: { + x: 0, + y: 0 + }, + // shift applied to cached bb to be applied on next get + bodyBounds: null, + // bounds cache of element body, w/o overlay + overlayBounds: null, + // bounds cache of element body, including overlay + labelBounds: { + // bounds cache of labels + all: null, + source: null, + target: null, + main: null + }, + arrowBounds: { + // bounds cache of edge arrows + source: null, + target: null, + 'mid-source': null, + 'mid-target': null + } + }; + + if (_p.position.x == null) { + _p.position.x = 0; + } + + if (_p.position.y == null) { + _p.position.y = 0; + } // renderedPosition overrides if specified + + + if (params.renderedPosition) { + var rpos = params.renderedPosition; + var pan = cy.pan(); + var zoom = cy.zoom(); + _p.position = { + x: (rpos.x - pan.x) / zoom, + y: (rpos.y - pan.y) / zoom + }; + } + + var classes = []; + + if (array(params.classes)) { + classes = params.classes; + } else if (string(params.classes)) { + classes = params.classes.split(/\s+/); + } + + for (var i = 0, l = classes.length; i < l; i++) { + var cls = classes[i]; + + if (!cls || cls === '') { + continue; + } + + _p.classes.add(cls); + } + + this.createEmitter(); + var bypass = params.style || params.css; + + if (bypass) { + warn('Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead.'); + this.style(bypass); + } + + if (restore === undefined || restore) { + this.restore(); + } +}; + +var defineSearch = function defineSearch(params) { + params = { + bfs: params.bfs || !params.dfs, + dfs: params.dfs || !params.bfs + }; // from pseudocode on wikipedia + + return function searchFn(roots, fn$1, directed) { + var options; + + if (plainObject(roots) && !elementOrCollection(roots)) { + options = roots; + roots = options.roots || options.root; + fn$1 = options.visit; + directed = options.directed; + } + + directed = arguments.length === 2 && !fn(fn$1) ? fn$1 : directed; + fn$1 = fn(fn$1) ? fn$1 : function () {}; + var cy = this._private.cy; + var v = roots = string(roots) ? this.filter(roots) : roots; + var Q = []; + var connectedNodes = []; + var connectedBy = {}; + var id2depth = {}; + var V = {}; + var j = 0; + var found; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; // enqueue v + + + for (var i = 0; i < v.length; i++) { + var vi = v[i]; + var viId = vi.id(); + + if (vi.isNode()) { + Q.unshift(vi); + + if (params.bfs) { + V[viId] = true; + connectedNodes.push(vi); + } + + id2depth[viId] = 0; + } + } + + var _loop2 = function _loop2() { + var v = params.bfs ? Q.shift() : Q.pop(); + var vId = v.id(); + + if (params.dfs) { + if (V[vId]) { + return "continue"; + } + + V[vId] = true; + connectedNodes.push(v); + } + + var depth = id2depth[vId]; + var prevEdge = connectedBy[vId]; + var src = prevEdge != null ? prevEdge.source() : null; + var tgt = prevEdge != null ? prevEdge.target() : null; + var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0]; + var ret = void 0; + ret = fn$1(v, prevEdge, prevNode, j++, depth); + + if (ret === true) { + found = v; + return "break"; + } + + if (ret === false) { + return "break"; + } + + var vwEdges = v.connectedEdges().filter(function (e) { + return (!directed || e.source().same(v)) && edges.has(e); + }); + + for (var _i2 = 0; _i2 < vwEdges.length; _i2++) { + var e = vwEdges[_i2]; + var w = e.connectedNodes().filter(function (n) { + return !n.same(v) && nodes.has(n); + }); + var wId = w.id(); + + if (w.length !== 0 && !V[wId]) { + w = w[0]; + Q.push(w); + + if (params.bfs) { + V[wId] = true; + connectedNodes.push(w); + } + + connectedBy[wId] = e; + id2depth[wId] = id2depth[vId] + 1; + } + } + }; + + _loop: while (Q.length !== 0) { + var _ret = _loop2(); + + switch (_ret) { + case "continue": + continue; + + case "break": + break _loop; + } + } + + var connectedEles = cy.collection(); + + for (var _i = 0; _i < connectedNodes.length; _i++) { + var node = connectedNodes[_i]; + var edge = connectedBy[node.id()]; + + if (edge != null) { + connectedEles.push(edge); + } + + connectedEles.push(node); + } + + return { + path: cy.collection(connectedEles), + found: cy.collection(found) + }; + }; +}; // search, spanning trees, etc + + +var elesfn = { + breadthFirstSearch: defineSearch({ + bfs: true + }), + depthFirstSearch: defineSearch({ + dfs: true + }) +}; // nice, short mathemathical alias + +elesfn.bfs = elesfn.breadthFirstSearch; +elesfn.dfs = elesfn.depthFirstSearch; + +var dijkstraDefaults = defaults$1({ + root: null, + weight: function weight(edge) { + return 1; + }, + directed: false +}); +var elesfn$1 = { + dijkstra: function dijkstra(options) { + if (!plainObject(options)) { + var args = arguments; + options = { + root: args[0], + weight: args[1], + directed: args[2] + }; + } + + var _dijkstraDefaults = dijkstraDefaults(options), + root = _dijkstraDefaults.root, + weight = _dijkstraDefaults.weight, + directed = _dijkstraDefaults.directed; + + var eles = this; + var weightFn = weight; + var source = string(root) ? this.filter(root)[0] : root[0]; + var dist = {}; + var prev = {}; + var knownDist = {}; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + edges.unmergeBy(function (ele) { + return ele.isLoop(); + }); + + var getDist = function getDist(node) { + return dist[node.id()]; + }; + + var setDist = function setDist(node, d) { + dist[node.id()] = d; + Q.updateItem(node); + }; + + var Q = new Heap(function (a, b) { + return getDist(a) - getDist(b); + }); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + dist[node.id()] = node.same(source) ? 0 : Infinity; + Q.push(node); + } + + var distBetween = function distBetween(u, v) { + var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges); + var smallestDistance = Infinity; + var smallestEdge; + + for (var _i = 0; _i < uvs.length; _i++) { + var edge = uvs[_i]; + + var _weight = weightFn(edge); + + if (_weight < smallestDistance || !smallestEdge) { + smallestDistance = _weight; + smallestEdge = edge; + } + } + + return { + edge: smallestEdge, + dist: smallestDistance + }; + }; + + while (Q.size() > 0) { + var u = Q.pop(); + var smalletsDist = getDist(u); + var uid = u.id(); + knownDist[uid] = smalletsDist; + + if (smalletsDist === Infinity) { + continue; + } + + var neighbors = u.neighborhood().intersect(nodes); + + for (var _i2 = 0; _i2 < neighbors.length; _i2++) { + var v = neighbors[_i2]; + var vid = v.id(); + var vDist = distBetween(u, v); + var alt = smalletsDist + vDist.dist; + + if (alt < getDist(v)) { + setDist(v, alt); + prev[vid] = { + node: u, + edge: vDist.edge + }; + } + } // for + + } // while + + + return { + distanceTo: function distanceTo(node) { + var target = string(node) ? nodes.filter(node)[0] : node[0]; + return knownDist[target.id()]; + }, + pathTo: function pathTo(node) { + var target = string(node) ? nodes.filter(node)[0] : node[0]; + var S = []; + var u = target; + var uid = u.id(); + + if (target.length > 0) { + S.unshift(target); + + while (prev[uid]) { + var p = prev[uid]; + S.unshift(p.edge); + S.unshift(p.node); + u = p.node; + uid = u.id(); + } + } + + return eles.spawn(S); + } + }; + } +}; + +var elesfn$2 = { + // kruskal's algorithm (finds min spanning tree, assuming undirected graph) + // implemented from pseudocode from wikipedia + kruskal: function kruskal(weightFn) { + weightFn = weightFn || function (edge) { + return 1; + }; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + var numNodes = nodes.length; + var forest = new Array(numNodes); + var A = nodes; // assumes byGroup() creates new collections that can be safely mutated + + var findSetIndex = function findSetIndex(ele) { + for (var i = 0; i < forest.length; i++) { + var eles = forest[i]; + + if (eles.has(ele)) { + return i; + } + } + }; // start with one forest per node + + + for (var i = 0; i < numNodes; i++) { + forest[i] = this.spawn(nodes[i]); + } + + var S = edges.sort(function (a, b) { + return weightFn(a) - weightFn(b); + }); + + for (var _i = 0; _i < S.length; _i++) { + var edge = S[_i]; + var u = edge.source()[0]; + var v = edge.target()[0]; + var setUIndex = findSetIndex(u); + var setVIndex = findSetIndex(v); + var setU = forest[setUIndex]; + var setV = forest[setVIndex]; + + if (setUIndex !== setVIndex) { + A.merge(edge); // combine forests for u and v + + setU.merge(setV); + forest.splice(setVIndex, 1); + } + } + + return A; + } +}; + +var aStarDefaults = defaults$1({ + root: null, + goal: null, + weight: function weight(edge) { + return 1; + }, + heuristic: function heuristic(edge) { + return 0; + }, + directed: false +}); +var elesfn$3 = { + // Implemented from pseudocode from wikipedia + aStar: function aStar(options) { + var cy = this.cy(); + + var _aStarDefaults = aStarDefaults(options), + root = _aStarDefaults.root, + goal = _aStarDefaults.goal, + heuristic = _aStarDefaults.heuristic, + directed = _aStarDefaults.directed, + weight = _aStarDefaults.weight; + + root = cy.collection(root)[0]; + goal = cy.collection(goal)[0]; + var sid = root.id(); + var tid = goal.id(); + var gScore = {}; + var fScore = {}; + var closedSetIds = {}; + var openSet = new Heap(function (a, b) { + return fScore[a.id()] - fScore[b.id()]; + }); + var openSetIds = new Set$1$1(); + var cameFrom = {}; + var cameFromEdge = {}; + + var addToOpenSet = function addToOpenSet(ele, id) { + openSet.push(ele); + openSetIds.add(id); + }; + + var cMin, cMinId; + + var popFromOpenSet = function popFromOpenSet() { + cMin = openSet.pop(); + cMinId = cMin.id(); + openSetIds["delete"](cMinId); + }; + + var isInOpenSet = function isInOpenSet(id) { + return openSetIds.has(id); + }; + + addToOpenSet(root, sid); + gScore[sid] = 0; + fScore[sid] = heuristic(root); // Counter + + var steps = 0; // Main loop + + while (openSet.size() > 0) { + popFromOpenSet(); + steps++; // If we've found our goal, then we are done + + if (cMinId === tid) { + var path = []; + var pathNode = goal; + var pathNodeId = tid; + var pathEdge = cameFromEdge[pathNodeId]; + + for (;;) { + path.unshift(pathNode); + + if (pathEdge != null) { + path.unshift(pathEdge); + } + + pathNode = cameFrom[pathNodeId]; + + if (pathNode == null) { + break; + } + + pathNodeId = pathNode.id(); + pathEdge = cameFromEdge[pathNodeId]; + } + + return { + found: true, + distance: gScore[cMinId], + path: this.spawn(path), + steps: steps + }; + } // Add cMin to processed nodes + + + closedSetIds[cMinId] = true; // Update scores for neighbors of cMin + // Take into account if graph is directed or not + + var vwEdges = cMin._private.edges; + + for (var i = 0; i < vwEdges.length; i++) { + var e = vwEdges[i]; // edge must be in set of calling eles + + if (!this.hasElementWithId(e.id())) { + continue; + } // cMin must be the source of edge if directed + + + if (directed && e.data('source') !== cMinId) { + continue; + } + + var wSrc = e.source(); + var wTgt = e.target(); + var w = wSrc.id() !== cMinId ? wSrc : wTgt; + var wid = w.id(); // node must be in set of calling eles + + if (!this.hasElementWithId(wid)) { + continue; + } // if node is in closedSet, ignore it + + + if (closedSetIds[wid]) { + continue; + } // New tentative score for node w + + + var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if: + // w not present in openSet + // OR + // tentative gScore is less than previous value + // w not in openSet + + if (!isInOpenSet(wid)) { + gScore[wid] = tempScore; + fScore[wid] = tempScore + heuristic(w); + addToOpenSet(w, wid); + cameFrom[wid] = cMin; + cameFromEdge[wid] = e; + continue; + } // w already in openSet, but with greater gScore + + + if (tempScore < gScore[wid]) { + gScore[wid] = tempScore; + fScore[wid] = tempScore + heuristic(w); + cameFrom[wid] = cMin; + cameFromEdge[wid] = e; + } + } // End of neighbors update + + } // End of main loop + // If we've reached here, then we've not reached our goal + + + return { + found: false, + distance: undefined, + path: undefined, + steps: steps + }; + } +}; // elesfn + +var floydWarshallDefaults = defaults$1({ + weight: function weight(edge) { + return 1; + }, + directed: false +}); +var elesfn$4 = { + // Implemented from pseudocode from wikipedia + floydWarshall: function floydWarshall(options) { + var cy = this.cy(); + + var _floydWarshallDefault = floydWarshallDefaults(options), + weight = _floydWarshallDefault.weight, + directed = _floydWarshallDefault.directed; + + var weightFn = weight; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + var N = nodes.length; + var Nsq = N * N; + + var indexOf = function indexOf(node) { + return nodes.indexOf(node); + }; + + var atIndex = function atIndex(i) { + return nodes[i]; + }; // Initialize distance matrix + + + var dist = new Array(Nsq); + + for (var n = 0; n < Nsq; n++) { + var j = n % N; + var i = (n - j) / N; + + if (i === j) { + dist[n] = 0; + } else { + dist[n] = Infinity; + } + } // Initialize matrix used for path reconstruction + // Initialize distance matrix + + + var next = new Array(Nsq); + var edgeNext = new Array(Nsq); // Process edges + + for (var _i = 0; _i < edges.length; _i++) { + var edge = edges[_i]; + var src = edge.source()[0]; + var tgt = edge.target()[0]; + + if (src === tgt) { + continue; + } // exclude loops + + + var s = indexOf(src); + var t = indexOf(tgt); + var st = s * N + t; // source to target index + + var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes + + + if (dist[st] > _weight) { + dist[st] = _weight; + next[st] = t; + edgeNext[st] = edge; + } // If undirected graph, process 'reversed' edge + + + if (!directed) { + var ts = t * N + s; // target to source index + + if (!directed && dist[ts] > _weight) { + dist[ts] = _weight; + next[ts] = s; + edgeNext[ts] = edge; + } + } + } // Main loop + + + for (var k = 0; k < N; k++) { + for (var _i2 = 0; _i2 < N; _i2++) { + var ik = _i2 * N + k; + + for (var _j = 0; _j < N; _j++) { + var ij = _i2 * N + _j; + var kj = k * N + _j; + + if (dist[ik] + dist[kj] < dist[ij]) { + dist[ij] = dist[ik] + dist[kj]; + next[ij] = next[ik]; + } + } + } + } + + var getArgEle = function getArgEle(ele) { + return (string(ele) ? cy.filter(ele) : ele)[0]; + }; + + var indexOfArgEle = function indexOfArgEle(ele) { + return indexOf(getArgEle(ele)); + }; + + var res = { + distance: function distance(from, to) { + var i = indexOfArgEle(from); + var j = indexOfArgEle(to); + return dist[i * N + j]; + }, + path: function path(from, to) { + var i = indexOfArgEle(from); + var j = indexOfArgEle(to); + var fromNode = atIndex(i); + + if (i === j) { + return fromNode.collection(); + } + + if (next[i * N + j] == null) { + return cy.collection(); + } + + var path = cy.collection(); + var prev = i; + var edge; + path.merge(fromNode); + + while (i !== j) { + prev = i; + i = next[i * N + j]; + edge = edgeNext[prev * N + i]; + path.merge(edge); + path.merge(atIndex(i)); + } + + return path; + } + }; + return res; + } // floydWarshall + +}; // elesfn + +var bellmanFordDefaults = defaults$1({ + weight: function weight(edge) { + return 1; + }, + directed: false, + root: null +}); +var elesfn$5 = { + // Implemented from pseudocode from wikipedia + bellmanFord: function bellmanFord(options) { + var _this = this; + + var _bellmanFordDefaults = bellmanFordDefaults(options), + weight = _bellmanFordDefaults.weight, + directed = _bellmanFordDefaults.directed, + root = _bellmanFordDefaults.root; + + var weightFn = weight; + var eles = this; + var cy = this.cy(); + + var _this$byGroup = this.byGroup(), + edges = _this$byGroup.edges, + nodes = _this$byGroup.nodes; + + var numNodes = nodes.length; + var infoMap = new Map$1$1(); + var hasNegativeWeightCycle = false; + var negativeWeightCycles = []; + root = cy.collection(root)[0]; // in case selector passed + + edges.unmergeBy(function (edge) { + return edge.isLoop(); + }); + var numEdges = edges.length; + + var getInfo = function getInfo(node) { + var obj = infoMap.get(node.id()); + + if (!obj) { + obj = {}; + infoMap.set(node.id(), obj); + } + + return obj; + }; + + var getNodeFromTo = function getNodeFromTo(to) { + return (string(to) ? cy.$(to) : to)[0]; + }; + + var distanceTo = function distanceTo(to) { + return getInfo(getNodeFromTo(to)).dist; + }; + + var pathTo = function pathTo(to) { + var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root; + var end = getNodeFromTo(to); + var path = []; + var node = end; + + for (;;) { + if (node == null) { + return _this.spawn(); + } + + var _getInfo = getInfo(node), + edge = _getInfo.edge, + pred = _getInfo.pred; + + path.unshift(node[0]); + + if (node.same(thisStart) && path.length > 0) { + break; + } + + if (edge != null) { + path.unshift(edge); + } + + node = pred; + } + + return eles.spawn(path); + }; // Initializations { dist, pred, edge } + + + for (var i = 0; i < numNodes; i++) { + var node = nodes[i]; + var info = getInfo(node); + + if (node.same(root)) { + info.dist = 0; + } else { + info.dist = Infinity; + } + + info.pred = null; + info.edge = null; + } // Edges relaxation + + + var replacedEdge = false; + + var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) { + var dist = info1.dist + weight; + + if (dist < info2.dist && !edge.same(info1.edge)) { + info2.dist = dist; + info2.pred = node1; + info2.edge = edge; + replacedEdge = true; + } + }; + + for (var _i = 1; _i < numNodes; _i++) { + replacedEdge = false; + + for (var e = 0; e < numEdges; e++) { + var edge = edges[e]; + var src = edge.source(); + var tgt = edge.target(); + + var _weight = weightFn(edge); + + var srcInfo = getInfo(src); + var tgtInfo = getInfo(tgt); + checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge + + if (!directed) { + checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight); + } + } + + if (!replacedEdge) { + break; + } + } + + if (replacedEdge) { + // Check for negative weight cycles + for (var _e = 0; _e < numEdges; _e++) { + var _edge = edges[_e]; + + var _src = _edge.source(); + + var _tgt = _edge.target(); + + var _weight2 = weightFn(_edge); + + var srcDist = getInfo(_src).dist; + var tgtDist = getInfo(_tgt).dist; + + if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) { + warn('Graph contains a negative weight cycle for Bellman-Ford'); + hasNegativeWeightCycle = true; + break; + } + } + } + + return { + distanceTo: distanceTo, + pathTo: pathTo, + hasNegativeWeightCycle: hasNegativeWeightCycle, + negativeWeightCycles: negativeWeightCycles + }; + } // bellmanFord + +}; // elesfn + +var sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one +// Updates the remaining edge lists +// Receives as a paramater the edge which causes the collapse + +var collapse = function collapse(edgeIndex, nodeMap, remainingEdges) { + if (remainingEdges.length === 0) { + error("Karger-Stein must be run on a connected (sub)graph"); + } + + var edgeInfo = remainingEdges[edgeIndex]; + var sourceIn = edgeInfo[1]; + var targetIn = edgeInfo[2]; + var partition1 = nodeMap[sourceIn]; + var partition2 = nodeMap[targetIn]; + var newEdges = remainingEdges; // re-use array + // Delete all edges between partition1 and partition2 + + for (var i = newEdges.length - 1; i >= 0; i--) { + var edge = newEdges[i]; + var src = edge[1]; + var tgt = edge[2]; + + if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) { + newEdges.splice(i, 1); + } + } // All edges pointing to partition2 should now point to partition1 + + + for (var _i = 0; _i < newEdges.length; _i++) { + var _edge = newEdges[_i]; + + if (_edge[1] === partition2) { + // Check source + newEdges[_i] = _edge.slice(); // copy + + newEdges[_i][1] = partition1; + } else if (_edge[2] === partition2) { + // Check target + newEdges[_i] = _edge.slice(); // copy + + newEdges[_i][2] = partition1; + } + } // Move all nodes from partition2 to partition1 + + + for (var _i2 = 0; _i2 < nodeMap.length; _i2++) { + if (nodeMap[_i2] === partition2) { + nodeMap[_i2] = partition1; + } + } + + return newEdges; +}; // Contracts a graph until we reach a certain number of meta nodes + + +var contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) { + while (size > sizeLimit) { + // Choose an edge randomly + var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge + + remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges); + size--; + } + + return remainingEdges; +}; + +var elesfn$6 = { + // Computes the minimum cut of an undirected graph + // Returns the correct answer with high probability + kargerStein: function kargerStein() { + var _this = this; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + edges.unmergeBy(function (edge) { + return edge.isLoop(); + }); + var numNodes = nodes.length; + var numEdges = edges.length; + var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2)); + var stopSize = Math.floor(numNodes / sqrt2); + + if (numNodes < 2) { + error('At least 2 nodes are required for Karger-Stein algorithm'); + return undefined; + } // Now store edge destination as indexes + // Format for each edge (edge index, source node index, target node index) + + + var edgeIndexes = []; + + for (var i = 0; i < numEdges; i++) { + var e = edges[i]; + edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]); + } // We will store the best cut found here + + + var minCutSize = Infinity; + var minCutEdgeIndexes = []; + var minCutNodeMap = new Array(numNodes); // Initial meta node partition + + var metaNodeMap = new Array(numNodes); + var metaNodeMap2 = new Array(numNodes); + + var copyNodesMap = function copyNodesMap(from, to) { + for (var _i3 = 0; _i3 < numNodes; _i3++) { + to[_i3] = from[_i3]; + } + }; // Main loop + + + for (var iter = 0; iter <= numIter; iter++) { + // Reset meta node partition + for (var _i4 = 0; _i4 < numNodes; _i4++) { + metaNodeMap[_i4] = _i4; + } // Contract until stop point (stopSize nodes) + + + var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize); + var edgesState2 = edgesState.slice(); // copy + // Create a copy of the colapsed nodes state + + copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state + + var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2); + var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far? + + if (res1.length <= res2.length && res1.length < minCutSize) { + minCutSize = res1.length; + minCutEdgeIndexes = res1; + copyNodesMap(metaNodeMap, minCutNodeMap); + } else if (res2.length <= res1.length && res2.length < minCutSize) { + minCutSize = res2.length; + minCutEdgeIndexes = res2; + copyNodesMap(metaNodeMap2, minCutNodeMap); + } + } // end of main loop + // Construct result + + + var cut = this.spawn(minCutEdgeIndexes.map(function (e) { + return edges[e[0]]; + })); + var partition1 = this.spawn(); + var partition2 = this.spawn(); // traverse metaNodeMap for best cut + + var witnessNodePartition = minCutNodeMap[0]; + + for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) { + var partitionId = minCutNodeMap[_i5]; + var node = nodes[_i5]; + + if (partitionId === witnessNodePartition) { + partition1.merge(node); + } else { + partition2.merge(node); + } + } // construct components corresponding to each disjoint subset of nodes + + + var constructComponent = function constructComponent(subset) { + var component = _this.spawn(); + + subset.forEach(function (node) { + component.merge(node); + node.connectedEdges().forEach(function (edge) { + // ensure edge is within calling collection and edge is not in cut + if (_this.contains(edge) && !cut.contains(edge)) { + component.merge(edge); + } + }); + }); + return component; + }; + + var components = [constructComponent(partition1), constructComponent(partition2)]; + var ret = { + cut: cut, + components: components, + // n.b. partitions are included to be compatible with the old api spec + // (could be removed in a future major version) + partition1: partition1, + partition2: partition2 + }; + return ret; + } +}; // elesfn + +var copyPosition = function copyPosition(p) { + return { + x: p.x, + y: p.y + }; +}; +var modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) { + return { + x: p.x * zoom + pan.x, + y: p.y * zoom + pan.y + }; +}; +var renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) { + return { + x: (p.x - pan.x) / zoom, + y: (p.y - pan.y) / zoom + }; +}; +var array2point = function array2point(arr) { + return { + x: arr[0], + y: arr[1] + }; +}; +var min$2 = function min(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var min = Infinity; + + for (var i = begin; i < end; i++) { + var val = arr[i]; + + if (isFinite(val)) { + min = Math.min(val, min); + } + } + + return min; +}; +var max$2 = function max(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var max = -Infinity; + + for (var i = begin; i < end; i++) { + var val = arr[i]; + + if (isFinite(val)) { + max = Math.max(val, max); + } + } + + return max; +}; +var mean = function mean(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var total = 0; + var n = 0; + + for (var i = begin; i < end; i++) { + var val = arr[i]; + + if (isFinite(val)) { + total += val; + n++; + } + } + + return total / n; +}; +var median = function median(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + + if (copy) { + arr = arr.slice(begin, end); + } else { + if (end < arr.length) { + arr.splice(end, arr.length - end); + } + + if (begin > 0) { + arr.splice(0, begin); + } + } // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start + + + var off = 0; // offset from non-finite values + + for (var i = arr.length - 1; i >= 0; i--) { + var v = arr[i]; + + if (includeHoles) { + if (!isFinite(v)) { + arr[i] = -Infinity; + off++; + } + } else { + // just remove it if we don't want to consider holes + arr.splice(i, 1); + } + } + + if (sort) { + arr.sort(function (a, b) { + return a - b; + }); // requires copy = true if you don't want to change the orig + } + + var len = arr.length; + var mid = Math.floor(len / 2); + + if (len % 2 !== 0) { + return arr[mid + 1 + off]; + } else { + return (arr[mid - 1 + off] + arr[mid + off]) / 2; + } +}; +var deg2rad = function deg2rad(deg) { + return Math.PI * deg / 180; +}; +var getAngleFromDisp = function getAngleFromDisp(dispX, dispY) { + return Math.atan2(dispY, dispX) - Math.PI / 2; +}; +var log2 = Math.log2 || function (n) { + return Math.log(n) / Math.log(2); +}; +var signum = function signum(x) { + if (x > 0) { + return 1; + } else if (x < 0) { + return -1; + } else { + return 0; + } +}; +var dist$1 = function dist(p1, p2) { + return Math.sqrt(sqdist(p1, p2)); +}; +var sqdist = function sqdist(p1, p2) { + var dx = p2.x - p1.x; + var dy = p2.y - p1.y; + return dx * dx + dy * dy; +}; +var inPlaceSumNormalize = function inPlaceSumNormalize(v) { + var length = v.length; // First, get sum of all elements + + var total = 0; + + for (var i = 0; i < length; i++) { + total += v[i]; + } // Now, divide each by the sum of all elements + + + for (var _i = 0; _i < length; _i++) { + v[_i] = v[_i] / total; + } + + return v; +}; + +var qbezierAt = function qbezierAt(p0, p1, p2, t) { + return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2; +}; +var qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) { + return { + x: qbezierAt(p0.x, p1.x, p2.x, t), + y: qbezierAt(p0.y, p1.y, p2.y, t) + }; +}; +var lineAt = function lineAt(p0, p1, t, d) { + var vec = { + x: p1.x - p0.x, + y: p1.y - p0.y + }; + var vecDist = dist$1(p0, p1); + var normVec = { + x: vec.x / vecDist, + y: vec.y / vecDist + }; + t = t == null ? 0 : t; + d = d != null ? d : t * vecDist; + return { + x: p0.x + normVec.x * d, + y: p0.y + normVec.y * d + }; +}; +var bound = function bound(min, val, max) { + return Math.max(min, Math.min(max, val)); +}; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params + +var makeBoundingBox = function makeBoundingBox(bb) { + if (bb == null) { + return { + x1: Infinity, + y1: Infinity, + x2: -Infinity, + y2: -Infinity, + w: 0, + h: 0 + }; + } else if (bb.x1 != null && bb.y1 != null) { + if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) { + return { + x1: bb.x1, + y1: bb.y1, + x2: bb.x2, + y2: bb.y2, + w: bb.x2 - bb.x1, + h: bb.y2 - bb.y1 + }; + } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) { + return { + x1: bb.x1, + y1: bb.y1, + x2: bb.x1 + bb.w, + y2: bb.y1 + bb.h, + w: bb.w, + h: bb.h + }; + } + } +}; +var copyBoundingBox = function copyBoundingBox(bb) { + return { + x1: bb.x1, + x2: bb.x2, + w: bb.w, + y1: bb.y1, + y2: bb.y2, + h: bb.h + }; +}; +var clearBoundingBox = function clearBoundingBox(bb) { + bb.x1 = Infinity; + bb.y1 = Infinity; + bb.x2 = -Infinity; + bb.y2 = -Infinity; + bb.w = 0; + bb.h = 0; +}; +var updateBoundingBox = function updateBoundingBox(bb1, bb2) { + // update bb1 with bb2 bounds + bb1.x1 = Math.min(bb1.x1, bb2.x1); + bb1.x2 = Math.max(bb1.x2, bb2.x2); + bb1.w = bb1.x2 - bb1.x1; + bb1.y1 = Math.min(bb1.y1, bb2.y1); + bb1.y2 = Math.max(bb1.y2, bb2.y2); + bb1.h = bb1.y2 - bb1.y1; +}; +var expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) { + bb.x1 = Math.min(bb.x1, x); + bb.x2 = Math.max(bb.x2, x); + bb.w = bb.x2 - bb.x1; + bb.y1 = Math.min(bb.y1, y); + bb.y2 = Math.max(bb.y2, y); + bb.h = bb.y2 - bb.y1; +}; +var expandBoundingBox = function expandBoundingBox(bb) { + var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + bb.x1 -= padding; + bb.x2 += padding; + bb.y1 -= padding; + bb.y2 += padding; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + return bb; +}; +var expandBoundingBoxSides = function expandBoundingBoxSides(bb) { + var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0]; + var top, right, bottom, left; + + if (padding.length === 1) { + top = right = bottom = left = padding[0]; + } else if (padding.length === 2) { + top = bottom = padding[0]; + left = right = padding[1]; + } else if (padding.length === 4) { + var _padding = _slicedToArray(padding, 4); + + top = _padding[0]; + right = _padding[1]; + bottom = _padding[2]; + left = _padding[3]; + } + + bb.x1 -= left; + bb.x2 += right; + bb.y1 -= top; + bb.y2 += bottom; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + return bb; +}; + +var assignBoundingBox = function assignBoundingBox(bb1, bb2) { + bb1.x1 = bb2.x1; + bb1.y1 = bb2.y1; + bb1.x2 = bb2.x2; + bb1.y2 = bb2.y2; + bb1.w = bb1.x2 - bb1.x1; + bb1.h = bb1.y2 - bb1.y1; +}; +var boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) { + // case: one bb to right of other + if (bb1.x1 > bb2.x2) { + return false; + } + + if (bb2.x1 > bb1.x2) { + return false; + } // case: one bb to left of other + + + if (bb1.x2 < bb2.x1) { + return false; + } + + if (bb2.x2 < bb1.x1) { + return false; + } // case: one bb above other + + + if (bb1.y2 < bb2.y1) { + return false; + } + + if (bb2.y2 < bb1.y1) { + return false; + } // case: one bb below other + + + if (bb1.y1 > bb2.y2) { + return false; + } + + if (bb2.y1 > bb1.y2) { + return false; + } // otherwise, must have some overlap + + + return true; +}; +var inBoundingBox = function inBoundingBox(bb, x, y) { + return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2; +}; +var pointInBoundingBox = function pointInBoundingBox(bb, pt) { + return inBoundingBox(bb, pt.x, pt.y); +}; +var boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) { + return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2); +}; +var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) { + var cornerRadius = getRoundRectangleRadius(width, height); + var halfWidth = width / 2; + var halfHeight = height / 2; // Check intersections with straight line segments + + var straightLineIntersections; // Top segment, left to right + + { + var topStartX = nodeX - halfWidth + cornerRadius - padding; + var topStartY = nodeY - halfHeight - padding; + var topEndX = nodeX + halfWidth - cornerRadius + padding; + var topEndY = topStartY; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Right segment, top to bottom + + { + var rightStartX = nodeX + halfWidth + padding; + var rightStartY = nodeY - halfHeight + cornerRadius - padding; + var rightEndX = rightStartX; + var rightEndY = nodeY + halfHeight - cornerRadius + padding; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Bottom segment, left to right + + { + var bottomStartX = nodeX - halfWidth + cornerRadius - padding; + var bottomStartY = nodeY + halfHeight + padding; + var bottomEndX = nodeX + halfWidth - cornerRadius + padding; + var bottomEndY = bottomStartY; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Left segment, top to bottom + + { + var leftStartX = nodeX - halfWidth - padding; + var leftStartY = nodeY - halfHeight + cornerRadius - padding; + var leftEndX = leftStartX; + var leftEndY = nodeY + halfHeight - cornerRadius + padding; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Check intersections with arc segments + + var arcIntersections; // Top Left + + { + var topLeftCenterX = nodeX - halfWidth + cornerRadius; + var topLeftCenterY = nodeY - halfHeight + cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } // Top Right + + { + var topRightCenterX = nodeX + halfWidth - cornerRadius; + var topRightCenterY = nodeY - halfHeight + cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } // Bottom Right + + { + var bottomRightCenterX = nodeX + halfWidth - cornerRadius; + var bottomRightCenterY = nodeY + halfHeight - cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } // Bottom Left + + { + var bottomLeftCenterX = nodeX - halfWidth + cornerRadius; + var bottomLeftCenterY = nodeY + halfHeight - cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } + return []; // if nothing +}; +var inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) { + var t = tolerance; + var x1 = Math.min(lx1, lx2); + var x2 = Math.max(lx1, lx2); + var y1 = Math.min(ly1, ly2); + var y2 = Math.max(ly1, ly2); + return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t; +}; +var inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) { + var bb = { + x1: Math.min(x1, x3, x2) - tolerance, + x2: Math.max(x1, x3, x2) + tolerance, + y1: Math.min(y1, y3, y2) - tolerance, + y2: Math.max(y1, y3, y2) + tolerance + }; // if outside the rough bounding box for the bezier, then it can't be a hit + + if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) { + // console.log('bezier out of rough bb') + return false; + } else { + // console.log('do more expensive check'); + return true; + } +}; +var solveQuadratic = function solveQuadratic(a, b, c, val) { + c -= val; + var r = b * b - 4 * a * c; + + if (r < 0) { + return []; + } + + var sqrtR = Math.sqrt(r); + var denom = 2 * a; + var root1 = (-b + sqrtR) / denom; + var root2 = (-b - sqrtR) / denom; + return [root1, root2]; +}; +var solveCubic = function solveCubic(a, b, c, d, result) { + // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where + // r is the real component, i is the imaginary component + // An implementation of the Cardano method from the year 1545 + // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots + var epsilon = 0.00001; // avoid division by zero while keeping the overall expression close in value + + if (a === 0) { + a = epsilon; + } + + b /= a; + c /= a; + d /= a; + var discriminant, q, r, dum1, s, t, term1, r13; + q = (3.0 * c - b * b) / 9.0; + r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b)); + r /= 54.0; + discriminant = q * q * q + r * r; + result[1] = 0; + term1 = b / 3.0; + + if (discriminant > 0) { + s = r + Math.sqrt(discriminant); + s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0); + t = r - Math.sqrt(discriminant); + t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0); + result[0] = -term1 + s + t; + term1 += (s + t) / 2.0; + result[4] = result[2] = -term1; + term1 = Math.sqrt(3.0) * (-t + s) / 2; + result[3] = term1; + result[5] = -term1; + return; + } + + result[5] = result[3] = 0; + + if (discriminant === 0) { + r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0); + result[0] = -term1 + 2.0 * r13; + result[4] = result[2] = -(r13 + term1); + return; + } + + q = -q; + dum1 = q * q * q; + dum1 = Math.acos(r / Math.sqrt(dum1)); + r13 = 2.0 * Math.sqrt(q); + result[0] = -term1 + r13 * Math.cos(dum1 / 3.0); + result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0); + result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0); + return; +}; +var sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) { + // Find minimum distance by using the minimum of the distance + // function between the given point and the curve + // This gives the coefficients of the resulting cubic equation + // whose roots tell us where a possible minimum is + // (Coefficients are divided by 4) + var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3; + var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3; + var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y; + var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug("coefficients: " + a / a + ", " + b / a + ", " + c / a + ", " + d / a); + + var roots = []; // Use the cubic solving algorithm + + solveCubic(a, b, c, d, roots); + var zeroThreshold = 0.0000001; + var params = []; + + for (var index = 0; index < 6; index += 2) { + if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) { + params.push(roots[index]); + } + } + + params.push(1.0); + params.push(0.0); + var minDistanceSquared = -1; + var curX, curY, distSquared; + + for (var i = 0; i < params.length; i++) { + curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3; + curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3; + distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + ": " + Math.sqrt(distSquared)); + + if (minDistanceSquared >= 0) { + if (distSquared < minDistanceSquared) { + minDistanceSquared = distSquared; + } + } else { + minDistanceSquared = distSquared; + } + } + + return minDistanceSquared; +}; +var sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) { + var offset = [x - x1, y - y1]; + var line = [x2 - x1, y2 - y1]; + var lineSq = line[0] * line[0] + line[1] * line[1]; + var hypSq = offset[0] * offset[0] + offset[1] * offset[1]; + var dotProduct = offset[0] * line[0] + offset[1] * line[1]; + var adjSq = dotProduct * dotProduct / lineSq; + + if (dotProduct < 0) { + return hypSq; + } + + if (adjSq > lineSq) { + return (x - x2) * (x - x2) + (y - y2) * (y - y2); + } + + return hypSq - adjSq; +}; +var pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) { + var x1, y1, x2, y2; + var y3; // Intersect with vertical line through (x, y) + + var up = 0; // let down = 0; + + for (var i = 0; i < points.length / 2; i++) { + x1 = points[i * 2]; + y1 = points[i * 2 + 1]; + + if (i + 1 < points.length / 2) { + x2 = points[(i + 1) * 2]; + y2 = points[(i + 1) * 2 + 1]; + } else { + x2 = points[(i + 1 - points.length / 2) * 2]; + y2 = points[(i + 1 - points.length / 2) * 2 + 1]; + } + + if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) { + y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1; + + if (y3 > y) { + up++; + } // if( y3 < y ){ + // down++; + // } + + } else { + continue; + } + } + + if (up % 2 === 0) { + return false; + } else { + return true; + } +}; +var pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) { + var transformedPoints = new Array(basePoints.length); // Gives negative angle + + var angle; + + if (direction[0] != null) { + angle = Math.atan(direction[1] / direction[0]); + + if (direction[0] < 0) { + angle = angle + Math.PI / 2; + } else { + angle = -angle - Math.PI / 2; + } + } else { + angle = direction; + } + + var cos = Math.cos(-angle); + var sin = Math.sin(-angle); // console.log("base: " + basePoints); + + for (var i = 0; i < transformedPoints.length / 2; i++) { + transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin); + transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin); + transformedPoints[i * 2] += centerX; + transformedPoints[i * 2 + 1] += centerY; + } + + var points; + + if (padding > 0) { + var expandedLineSet = expandPolygon(transformedPoints, -padding); + points = joinLines(expandedLineSet); + } else { + points = transformedPoints; + } + + return pointInsidePolygonPoints(x, y, points); +}; +var pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) { + var cutPolygonPoints = new Array(basePoints.length); + var halfW = width / 2; + var halfH = height / 2; + var cornerRadius = getRoundPolygonRadius(width, height); + var squaredCornerRadius = cornerRadius * cornerRadius; + + for (var i = 0; i < basePoints.length / 4; i++) { + var sourceUv = void 0, + destUv = void 0; + + if (i === 0) { + sourceUv = basePoints.length - 2; + } else { + sourceUv = i * 4 - 2; + } + + destUv = i * 4 + 2; + var px = centerX + halfW * basePoints[i * 4]; + var py = centerY + halfH * basePoints[i * 4 + 1]; + var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; + var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); + var cp0x = px - offset * basePoints[sourceUv]; + var cp0y = py - offset * basePoints[sourceUv + 1]; + var cp1x = px + offset * basePoints[destUv]; + var cp1y = py + offset * basePoints[destUv + 1]; + cutPolygonPoints[i * 4] = cp0x; + cutPolygonPoints[i * 4 + 1] = cp0y; + cutPolygonPoints[i * 4 + 2] = cp1x; + cutPolygonPoints[i * 4 + 3] = cp1y; + var orthx = basePoints[sourceUv + 1]; + var orthy = -basePoints[sourceUv]; + var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; + + if (cosAlpha < 0) { + orthx *= -1; + orthy *= -1; + } + + var cx = cp0x + orthx * cornerRadius; + var cy = cp0y + orthy * cornerRadius; + var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2); + + if (squaredDistance <= squaredCornerRadius) { + return true; + } + } + + return pointInsidePolygonPoints(x, y, cutPolygonPoints); +}; +var joinLines = function joinLines(lineSet) { + var vertices = new Array(lineSet.length / 2); + var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY; + var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY; + + for (var i = 0; i < lineSet.length / 4; i++) { + currentLineStartX = lineSet[i * 4]; + currentLineStartY = lineSet[i * 4 + 1]; + currentLineEndX = lineSet[i * 4 + 2]; + currentLineEndY = lineSet[i * 4 + 3]; + + if (i < lineSet.length / 4 - 1) { + nextLineStartX = lineSet[(i + 1) * 4]; + nextLineStartY = lineSet[(i + 1) * 4 + 1]; + nextLineEndX = lineSet[(i + 1) * 4 + 2]; + nextLineEndY = lineSet[(i + 1) * 4 + 3]; + } else { + nextLineStartX = lineSet[0]; + nextLineStartY = lineSet[1]; + nextLineEndX = lineSet[2]; + nextLineEndY = lineSet[3]; + } + + var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true); + vertices[i * 2] = intersection[0]; + vertices[i * 2 + 1] = intersection[1]; + } + + return vertices; +}; +var expandPolygon = function expandPolygon(points, pad) { + var expandedLineSet = new Array(points.length * 2); + var currentPointX, currentPointY, nextPointX, nextPointY; + + for (var i = 0; i < points.length / 2; i++) { + currentPointX = points[i * 2]; + currentPointY = points[i * 2 + 1]; + + if (i < points.length / 2 - 1) { + nextPointX = points[(i + 1) * 2]; + nextPointY = points[(i + 1) * 2 + 1]; + } else { + nextPointX = points[0]; + nextPointY = points[1]; + } // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY] + // Assume CCW polygon winding + + + var offsetX = nextPointY - currentPointY; + var offsetY = -(nextPointX - currentPointX); // Normalize + + var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY); + var normalizedOffsetX = offsetX / offsetLength; + var normalizedOffsetY = offsetY / offsetLength; + expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad; + expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad; + expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad; + expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad; + } + + return expandedLineSet; +}; +var intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) { + var dispX = centerX - x; + var dispY = centerY - y; + dispX /= ellipseWradius; + dispY /= ellipseHradius; + var len = Math.sqrt(dispX * dispX + dispY * dispY); + var newLength = len - 1; + + if (newLength < 0) { + return []; + } + + var lenProportion = newLength / len; + return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y]; +}; +var checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) { + x -= centerX; + y -= centerY; + x /= width / 2 + padding; + y /= height / 2 + padding; + return x * x + y * y <= 1; +}; // Returns intersections of increasing distance from line's start point + +var intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) { + // Calculate d, direction vector of line + var d = [x2 - x1, y2 - y1]; // Direction vector of line + + var f = [x1 - centerX, y1 - centerY]; + var a = d[0] * d[0] + d[1] * d[1]; + var b = 2 * (f[0] * d[0] + f[1] * d[1]); + var c = f[0] * f[0] + f[1] * f[1] - radius * radius; + var discriminant = b * b - 4 * a * c; + + if (discriminant < 0) { + return []; + } + + var t1 = (-b + Math.sqrt(discriminant)) / (2 * a); + var t2 = (-b - Math.sqrt(discriminant)) / (2 * a); + var tMin = Math.min(t1, t2); + var tMax = Math.max(t1, t2); + var inRangeParams = []; + + if (tMin >= 0 && tMin <= 1) { + inRangeParams.push(tMin); + } + + if (tMax >= 0 && tMax <= 1) { + inRangeParams.push(tMax); + } + + if (inRangeParams.length === 0) { + return []; + } + + var nearIntersectionX = inRangeParams[0] * d[0] + x1; + var nearIntersectionY = inRangeParams[0] * d[1] + y1; + + if (inRangeParams.length > 1) { + if (inRangeParams[0] == inRangeParams[1]) { + return [nearIntersectionX, nearIntersectionY]; + } else { + var farIntersectionX = inRangeParams[1] * d[0] + x1; + var farIntersectionY = inRangeParams[1] * d[1] + y1; + return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY]; + } + } else { + return [nearIntersectionX, nearIntersectionY]; + } +}; +var midOfThree = function midOfThree(a, b, c) { + if (b <= a && a <= c || c <= a && a <= b) { + return a; + } else if (a <= b && b <= c || c <= b && b <= a) { + return b; + } else { + return c; + } +}; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4) + +var finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) { + var dx13 = x1 - x3; + var dx21 = x2 - x1; + var dx43 = x4 - x3; + var dy13 = y1 - y3; + var dy21 = y2 - y1; + var dy43 = y4 - y3; + var ua_t = dx43 * dy13 - dy43 * dx13; + var ub_t = dx21 * dy13 - dy21 * dx13; + var u_b = dy43 * dx21 - dx43 * dy21; + + if (u_b !== 0) { + var ua = ua_t / u_b; + var ub = ub_t / u_b; + var flptThreshold = 0.001; + + var _min = 0 - flptThreshold; + + var _max = 1 + flptThreshold; + + if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) { + return [x1 + ua * dx21, y1 + ua * dy21]; + } else { + if (!infiniteLines) { + return []; + } else { + return [x1 + ua * dx21, y1 + ua * dy21]; + } + } + } else { + if (ua_t === 0 || ub_t === 0) { + // Parallel, coincident lines. Check if overlap + // Check endpoint of second line + if (midOfThree(x1, x2, x4) === x4) { + return [x4, y4]; + } // Check start point of second line + + + if (midOfThree(x1, x2, x3) === x3) { + return [x3, y3]; + } // Endpoint of first line + + + if (midOfThree(x3, x4, x2) === x2) { + return [x2, y2]; + } + + return []; + } else { + // Parallel, non-coincident + return []; + } + } +}; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding ) +// intersect a node polygon (pts transformed) +// +// math.polygonIntersectLine( x, y, basePoints, centerX, centerY ) +// intersect the points (no transform) + +var polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { + var intersections = []; + var intersection; + var transformedPoints = new Array(basePoints.length); + var doTransform = true; + + if (width == null) { + doTransform = false; + } + + var points; + + if (doTransform) { + for (var i = 0; i < transformedPoints.length / 2; i++) { + transformedPoints[i * 2] = basePoints[i * 2] * width + centerX; + transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY; + } + + if (padding > 0) { + var expandedLineSet = expandPolygon(transformedPoints, -padding); + points = joinLines(expandedLineSet); + } else { + points = transformedPoints; + } + } else { + points = basePoints; + } + + var currentX, currentY, nextX, nextY; + + for (var _i2 = 0; _i2 < points.length / 2; _i2++) { + currentX = points[_i2 * 2]; + currentY = points[_i2 * 2 + 1]; + + if (_i2 < points.length / 2 - 1) { + nextX = points[(_i2 + 1) * 2]; + nextY = points[(_i2 + 1) * 2 + 1]; + } else { + nextX = points[0]; + nextY = points[1]; + } + + intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY); + + if (intersection.length !== 0) { + intersections.push(intersection[0], intersection[1]); + } + } + + return intersections; +}; +var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { + var intersections = []; + var intersection; + var lines = new Array(basePoints.length); + var halfW = width / 2; + var halfH = height / 2; + var cornerRadius = getRoundPolygonRadius(width, height); + + for (var i = 0; i < basePoints.length / 4; i++) { + var sourceUv = void 0, + destUv = void 0; + + if (i === 0) { + sourceUv = basePoints.length - 2; + } else { + sourceUv = i * 4 - 2; + } + + destUv = i * 4 + 2; + var px = centerX + halfW * basePoints[i * 4]; + var py = centerY + halfH * basePoints[i * 4 + 1]; + var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; + var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); + var cp0x = px - offset * basePoints[sourceUv]; + var cp0y = py - offset * basePoints[sourceUv + 1]; + var cp1x = px + offset * basePoints[destUv]; + var cp1y = py + offset * basePoints[destUv + 1]; + + if (i === 0) { + lines[basePoints.length - 2] = cp0x; + lines[basePoints.length - 1] = cp0y; + } else { + lines[i * 4 - 2] = cp0x; + lines[i * 4 - 1] = cp0y; + } + + lines[i * 4] = cp1x; + lines[i * 4 + 1] = cp1y; + var orthx = basePoints[sourceUv + 1]; + var orthy = -basePoints[sourceUv]; + var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; + + if (cosAlpha < 0) { + orthx *= -1; + orthy *= -1; + } + + var cx = cp0x + orthx * cornerRadius; + var cy = cp0y + orthy * cornerRadius; + intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius); + + if (intersection.length !== 0) { + intersections.push(intersection[0], intersection[1]); + } + } + + for (var _i3 = 0; _i3 < lines.length / 4; _i3++) { + intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false); + + if (intersection.length !== 0) { + intersections.push(intersection[0], intersection[1]); + } + } + + if (intersections.length > 2) { + var lowestIntersection = [intersections[0], intersections[1]]; + var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2); + + for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) { + var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2); + + if (squaredDistance <= lowestSquaredDistance) { + lowestIntersection[0] = intersections[_i4 * 2]; + lowestIntersection[1] = intersections[_i4 * 2 + 1]; + lowestSquaredDistance = squaredDistance; + } + } + + return lowestIntersection; + } + + return intersections; +}; +var shortenIntersection = function shortenIntersection(intersection, offset, amount) { + var disp = [intersection[0] - offset[0], intersection[1] - offset[1]]; + var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]); + var lenRatio = (length - amount) / length; + + if (lenRatio < 0) { + lenRatio = 0.00001; + } + + return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]]; +}; +var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) { + var points = generateUnitNgonPoints(sides, rotationRadians); + points = fitPolygonToSquare(points); + return points; +}; +var fitPolygonToSquare = function fitPolygonToSquare(points) { + var x, y; + var sides = points.length / 2; + var minX = Infinity, + minY = Infinity, + maxX = -Infinity, + maxY = -Infinity; + + for (var i = 0; i < sides; i++) { + x = points[2 * i]; + y = points[2 * i + 1]; + minX = Math.min(minX, x); + maxX = Math.max(maxX, x); + minY = Math.min(minY, y); + maxY = Math.max(maxY, y); + } // stretch factors + + + var sx = 2 / (maxX - minX); + var sy = 2 / (maxY - minY); + + for (var _i5 = 0; _i5 < sides; _i5++) { + x = points[2 * _i5] = points[2 * _i5] * sx; + y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy; + minX = Math.min(minX, x); + maxX = Math.max(maxX, x); + minY = Math.min(minY, y); + maxY = Math.max(maxY, y); + } + + if (minY < -1) { + for (var _i6 = 0; _i6 < sides; _i6++) { + y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY); + } + } + + return points; +}; +var generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) { + var increment = 1.0 / sides * 2 * Math.PI; + var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0; + startAngle += rotationRadians; + var points = new Array(sides * 2); + var currentAngle; + + for (var i = 0; i < sides; i++) { + currentAngle = i * increment + startAngle; + points[2 * i] = Math.cos(currentAngle); // x + + points[2 * i + 1] = Math.sin(-currentAngle); // y + } + + return points; +}; // Set the default radius, unless half of width or height is smaller than default + +var getRoundRectangleRadius = function getRoundRectangleRadius(width, height) { + return Math.min(width / 4, height / 4, 8); +}; // Set the default radius + +var getRoundPolygonRadius = function getRoundPolygonRadius(width, height) { + return Math.min(width / 10, height / 10, 8); +}; +var getCutRectangleCornerLength = function getCutRectangleCornerLength() { + return 8; +}; +var bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) { + return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0]; +}; // get curve width, height, and control point position offsets as a percentage of node height / width + +var getBarrelCurveConstants = function getBarrelCurveConstants(width, height) { + return { + heightOffset: Math.min(15, 0.05 * height), + widthOffset: Math.min(100, 0.25 * width), + ctrlPtOffsetPct: 0.05 + }; +}; + +var pageRankDefaults = defaults$1({ + dampingFactor: 0.8, + precision: 0.000001, + iterations: 200, + weight: function weight(edge) { + return 1; + } +}); +var elesfn$7 = { + pageRank: function pageRank(options) { + var _pageRankDefaults = pageRankDefaults(options), + dampingFactor = _pageRankDefaults.dampingFactor, + precision = _pageRankDefaults.precision, + iterations = _pageRankDefaults.iterations, + weight = _pageRankDefaults.weight; + + var cy = this._private.cy; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + var numNodes = nodes.length; + var numNodesSqd = numNodes * numNodes; + var numEdges = edges.length; // Construct transposed adjacency matrix + // First lets have a zeroed matrix of the right size + // We'll also keep track of the sum of each column + + var matrix = new Array(numNodesSqd); + var columnSum = new Array(numNodes); + var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix + + for (var i = 0; i < numNodes; i++) { + for (var j = 0; j < numNodes; j++) { + var n = i * numNodes + j; + matrix[n] = 0; + } + + columnSum[i] = 0; + } // Now, process edges + + + for (var _i = 0; _i < numEdges; _i++) { + var edge = edges[_i]; + var srcId = edge.data('source'); + var tgtId = edge.data('target'); // Don't include loops in the matrix + + if (srcId === tgtId) { + continue; + } + + var s = nodes.indexOfId(srcId); + var t = nodes.indexOfId(tgtId); + var w = weight(edge); + + var _n = t * numNodes + s; // Update matrix + + + matrix[_n] += w; // Update column sum + + columnSum[s] += w; + } // Add additional probability based on damping factor + // Also, take into account columns that have sum = 0 + + + var p = 1.0 / numNodes + additionalProb; // Shorthand + // Traverse matrix, column by column + + for (var _j = 0; _j < numNodes; _j++) { + if (columnSum[_j] === 0) { + // No 'links' out from node jth, assume equal probability for each possible node + for (var _i2 = 0; _i2 < numNodes; _i2++) { + var _n2 = _i2 * numNodes + _j; + + matrix[_n2] = p; + } + } else { + // Node jth has outgoing link, compute normalized probabilities + for (var _i3 = 0; _i3 < numNodes; _i3++) { + var _n3 = _i3 * numNodes + _j; + + matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb; + } + } + } // Compute dominant eigenvector using power method + + + var eigenvector = new Array(numNodes); + var temp = new Array(numNodes); + var previous; // Start with a vector of all 1's + // Also, initialize a null vector which will be used as shorthand + + for (var _i4 = 0; _i4 < numNodes; _i4++) { + eigenvector[_i4] = 1; + } + + for (var iter = 0; iter < iterations; iter++) { + // Temp array with all 0's + for (var _i5 = 0; _i5 < numNodes; _i5++) { + temp[_i5] = 0; + } // Multiply matrix with previous result + + + for (var _i6 = 0; _i6 < numNodes; _i6++) { + for (var _j2 = 0; _j2 < numNodes; _j2++) { + var _n4 = _i6 * numNodes + _j2; + + temp[_i6] += matrix[_n4] * eigenvector[_j2]; + } + } + + inPlaceSumNormalize(temp); + previous = eigenvector; + eigenvector = temp; + temp = previous; + var diff = 0; // Compute difference (squared module) of both vectors + + for (var _i7 = 0; _i7 < numNodes; _i7++) { + var delta = previous[_i7] - eigenvector[_i7]; + diff += delta * delta; + } // If difference is less than the desired threshold, stop iterating + + + if (diff < precision) { + break; + } + } // Construct result + + + var res = { + rank: function rank(node) { + node = cy.collection(node)[0]; + return eigenvector[nodes.indexOf(node)]; + } + }; + return res; + } // pageRank + +}; // elesfn + +var defaults$1$1 = defaults$1({ + root: null, + weight: function weight(edge) { + return 1; + }, + directed: false, + alpha: 0 +}); +var elesfn$8 = { + degreeCentralityNormalized: function degreeCentralityNormalized(options) { + options = defaults$1$1(options); + var cy = this.cy(); + var nodes = this.nodes(); + var numNodes = nodes.length; + + if (!options.directed) { + var degrees = {}; + var maxDegree = 0; + + for (var i = 0; i < numNodes; i++) { + var node = nodes[i]; // add current node to the current options object and call degreeCentrality + + options.root = node; + var currDegree = this.degreeCentrality(options); + + if (maxDegree < currDegree.degree) { + maxDegree = currDegree.degree; + } + + degrees[node.id()] = currDegree.degree; + } + + return { + degree: function degree(node) { + if (maxDegree === 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node); + } + + return degrees[node.id()] / maxDegree; + } + }; + } else { + var indegrees = {}; + var outdegrees = {}; + var maxIndegree = 0; + var maxOutdegree = 0; + + for (var _i = 0; _i < numNodes; _i++) { + var _node = nodes[_i]; + + var id = _node.id(); // add current node to the current options object and call degreeCentrality + + + options.root = _node; + + var _currDegree = this.degreeCentrality(options); + + if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree; + if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree; + indegrees[id] = _currDegree.indegree; + outdegrees[id] = _currDegree.outdegree; + } + + return { + indegree: function indegree(node) { + if (maxIndegree == 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node); + } + + return indegrees[node.id()] / maxIndegree; + }, + outdegree: function outdegree(node) { + if (maxOutdegree === 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node); + } + + return outdegrees[node.id()] / maxOutdegree; + } + }; + } + }, + // degreeCentralityNormalized + // Implemented from the algorithm in Opsahl's paper + // "Node centrality in weighted networks: Generalizing degree and shortest paths" + // check the heading 2 "Degree" + degreeCentrality: function degreeCentrality(options) { + options = defaults$1$1(options); + var cy = this.cy(); + var callingEles = this; + var _options = options, + root = _options.root, + weight = _options.weight, + directed = _options.directed, + alpha = _options.alpha; + root = cy.collection(root)[0]; + + if (!directed) { + var connEdges = root.connectedEdges().intersection(callingEles); + var k = connEdges.length; + var s = 0; // Now, sum edge weights + + for (var i = 0; i < connEdges.length; i++) { + s += weight(connEdges[i]); + } + + return { + degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha) + }; + } else { + var edges = root.connectedEdges(); + var incoming = edges.filter(function (edge) { + return edge.target().same(root) && callingEles.has(edge); + }); + var outgoing = edges.filter(function (edge) { + return edge.source().same(root) && callingEles.has(edge); + }); + var k_in = incoming.length; + var k_out = outgoing.length; + var s_in = 0; + var s_out = 0; // Now, sum incoming edge weights + + for (var _i2 = 0; _i2 < incoming.length; _i2++) { + s_in += weight(incoming[_i2]); + } // Now, sum outgoing edge weights + + + for (var _i3 = 0; _i3 < outgoing.length; _i3++) { + s_out += weight(outgoing[_i3]); + } + + return { + indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha), + outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha) + }; + } + } // degreeCentrality + +}; // elesfn +// nice, short mathemathical alias + +elesfn$8.dc = elesfn$8.degreeCentrality; +elesfn$8.dcn = elesfn$8.degreeCentralityNormalised = elesfn$8.degreeCentralityNormalized; + +var defaults$2 = defaults$1({ + harmonic: true, + weight: function weight() { + return 1; + }, + directed: false, + root: null +}); +var elesfn$9 = { + closenessCentralityNormalized: function closenessCentralityNormalized(options) { + var _defaults = defaults$2(options), + harmonic = _defaults.harmonic, + weight = _defaults.weight, + directed = _defaults.directed; + + var cy = this.cy(); + var closenesses = {}; + var maxCloseness = 0; + var nodes = this.nodes(); + var fw = this.floydWarshall({ + weight: weight, + directed: directed + }); // Compute closeness for every node and find the maximum closeness + + for (var i = 0; i < nodes.length; i++) { + var currCloseness = 0; + var node_i = nodes[i]; + + for (var j = 0; j < nodes.length; j++) { + if (i !== j) { + var d = fw.distance(node_i, nodes[j]); + + if (harmonic) { + currCloseness += 1 / d; + } else { + currCloseness += d; + } + } + } + + if (!harmonic) { + currCloseness = 1 / currCloseness; + } + + if (maxCloseness < currCloseness) { + maxCloseness = currCloseness; + } + + closenesses[node_i.id()] = currCloseness; + } + + return { + closeness: function closeness(node) { + if (maxCloseness == 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node)[0].id(); + } else { + // from is a node + node = node.id(); + } + + return closenesses[node] / maxCloseness; + } + }; + }, + // Implemented from pseudocode from wikipedia + closenessCentrality: function closenessCentrality(options) { + var _defaults2 = defaults$2(options), + root = _defaults2.root, + weight = _defaults2.weight, + directed = _defaults2.directed, + harmonic = _defaults2.harmonic; + + root = this.filter(root)[0]; // we need distance from this node to every other node + + var dijkstra = this.dijkstra({ + root: root, + weight: weight, + directed: directed + }); + var totalDistance = 0; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + + if (!n.same(root)) { + var d = dijkstra.distanceTo(n); + + if (harmonic) { + totalDistance += 1 / d; + } else { + totalDistance += d; + } + } + } + + return harmonic ? totalDistance : 1 / totalDistance; + } // closenessCentrality + +}; // elesfn +// nice, short mathemathical alias + +elesfn$9.cc = elesfn$9.closenessCentrality; +elesfn$9.ccn = elesfn$9.closenessCentralityNormalised = elesfn$9.closenessCentralityNormalized; + +var defaults$3 = defaults$1({ + weight: null, + directed: false +}); +var elesfn$a = { + // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes + betweennessCentrality: function betweennessCentrality(options) { + var _defaults = defaults$3(options), + directed = _defaults.directed, + weight = _defaults.weight; + + var weighted = weight != null; + var cy = this.cy(); // starting + + var V = this.nodes(); + var A = {}; + var _C = {}; + var max = 0; + var C = { + set: function set(key, val) { + _C[key] = val; + + if (val > max) { + max = val; + } + }, + get: function get(key) { + return _C[key]; + } + }; // A contains the neighborhoods of every node + + for (var i = 0; i < V.length; i++) { + var v = V[i]; + var vid = v.id(); + + if (directed) { + A[vid] = v.outgoers().nodes(); // get outgoers of every node + } else { + A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node + } + + C.set(vid, 0); + } + + var _loop = function _loop(s) { + var sid = V[s].id(); + var S = []; // stack + + var P = {}; + var g = {}; + var d = {}; + var Q = new Heap(function (a, b) { + return d[a] - d[b]; + }); // queue + // init dictionaries + + for (var _i = 0; _i < V.length; _i++) { + var _vid = V[_i].id(); + + P[_vid] = []; + g[_vid] = 0; + d[_vid] = Infinity; + } + + g[sid] = 1; // sigma + + d[sid] = 0; // distance to s + + Q.push(sid); + + while (!Q.empty()) { + var _v = Q.pop(); + + S.push(_v); + + if (weighted) { + for (var j = 0; j < A[_v].length; j++) { + var w = A[_v][j]; + var vEle = cy.getElementById(_v); + var edge = void 0; + + if (vEle.edgesTo(w).length > 0) { + edge = vEle.edgesTo(w)[0]; + } else { + edge = w.edgesTo(vEle)[0]; + } + + var edgeWeight = weight(edge); + w = w.id(); + + if (d[w] > d[_v] + edgeWeight) { + d[w] = d[_v] + edgeWeight; + + if (Q.nodes.indexOf(w) < 0) { + //if w is not in Q + Q.push(w); + } else { + // update position if w is in Q + Q.updateItem(w); + } + + g[w] = 0; + P[w] = []; + } + + if (d[w] == d[_v] + edgeWeight) { + g[w] = g[w] + g[_v]; + P[w].push(_v); + } + } + } else { + for (var _j = 0; _j < A[_v].length; _j++) { + var _w = A[_v][_j].id(); + + if (d[_w] == Infinity) { + Q.push(_w); + d[_w] = d[_v] + 1; + } + + if (d[_w] == d[_v] + 1) { + g[_w] = g[_w] + g[_v]; + + P[_w].push(_v); + } + } + } + } + + var e = {}; + + for (var _i2 = 0; _i2 < V.length; _i2++) { + e[V[_i2].id()] = 0; + } + + while (S.length > 0) { + var _w2 = S.pop(); + + for (var _j2 = 0; _j2 < P[_w2].length; _j2++) { + var _v2 = P[_w2][_j2]; + e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]); + } + + if (_w2 != V[s].id()) { + C.set(_w2, C.get(_w2) + e[_w2]); + } + } + }; + + for (var s = 0; s < V.length; s++) { + _loop(s); + } + + var ret = { + betweenness: function betweenness(node) { + var id = cy.collection(node).id(); + return C.get(id); + }, + betweennessNormalized: function betweennessNormalized(node) { + if (max == 0) { + return 0; + } + + var id = cy.collection(node).id(); + return C.get(id) / max; + } + }; // alias + + ret.betweennessNormalised = ret.betweennessNormalized; + return ret; + } // betweennessCentrality + +}; // elesfn +// nice, short mathemathical alias + +elesfn$a.bc = elesfn$a.betweennessCentrality; + +// Implemented by Zoe Xi @zoexi for GSOC 2016 +/* eslint-disable no-unused-vars */ + +var defaults$4 = defaults$1({ + expandFactor: 2, + // affects time of computation and cluster granularity to some extent: M * M + inflateFactor: 2, + // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) + multFactor: 1, + // optional self loops for each node. Use a neutral value to improve cluster computations. + maxIterations: 20, + // maximum number of iterations of the MCL algorithm in a single run + attributes: [// attributes/features used to group nodes, ie. similarity values between nodes + function (edge) { + return 1; + }] +}); +/* eslint-enable */ + +var setOptions = function setOptions(options) { + return defaults$4(options); +}; +/* eslint-enable */ + + +var getSimilarity = function getSimilarity(edge, attributes) { + var total = 0; + + for (var i = 0; i < attributes.length; i++) { + total += attributes[i](edge); + } + + return total; +}; + +var addLoops = function addLoops(M, n, val) { + for (var i = 0; i < n; i++) { + M[i * n + i] = val; + } +}; + +var normalize$1 = function normalize(M, n) { + var sum; + + for (var col = 0; col < n; col++) { + sum = 0; + + for (var row = 0; row < n; row++) { + sum += M[row * n + col]; + } + + for (var _row = 0; _row < n; _row++) { + M[_row * n + col] = M[_row * n + col] / sum; + } + } +}; // TODO: blocked matrix multiplication? + + +var mmult = function mmult(A, B, n) { + var C = new Array(n * n); + + for (var i = 0; i < n; i++) { + for (var j = 0; j < n; j++) { + C[i * n + j] = 0; + } + + for (var k = 0; k < n; k++) { + for (var _j = 0; _j < n; _j++) { + C[i * n + _j] += A[i * n + k] * B[k * n + _j]; + } + } + } + + return C; +}; + +var expand = function expand(M, n, expandFactor +/** power **/ +) { + var _M = M.slice(0); + + for (var p = 1; p < expandFactor; p++) { + M = mmult(M, _M, n); + } + + return M; +}; + +var inflate = function inflate(M, n, inflateFactor +/** r **/ +) { + var _M = new Array(n * n); // M(i,j) ^ inflatePower + + + for (var i = 0; i < n * n; i++) { + _M[i] = Math.pow(M[i], inflateFactor); + } + + normalize$1(_M, n); + return _M; +}; + +var hasConverged = function hasConverged(M, _M, n2, roundFactor) { + // Check that both matrices have the same elements (i,j) + for (var i = 0; i < n2; i++) { + var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places + + var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); + + if (v1 !== v2) { + return false; + } + } + + return true; +}; + +var assign = function assign(M, n, nodes, cy) { + var clusters = []; + + for (var i = 0; i < n; i++) { + var cluster = []; + + for (var j = 0; j < n; j++) { + // Row-wise attractors and elements that they attract belong in same cluster + if (Math.round(M[i * n + j] * 1000) / 1000 > 0) { + cluster.push(nodes[j]); + } + } + + if (cluster.length !== 0) { + clusters.push(cy.collection(cluster)); + } + } + + return clusters; +}; + +var isDuplicate = function isDuplicate(c1, c2) { + for (var i = 0; i < c1.length; i++) { + if (!c2[i] || c1[i].id() !== c2[i].id()) { + return false; + } + } + + return true; +}; + +var removeDuplicates = function removeDuplicates(clusters) { + for (var i = 0; i < clusters.length; i++) { + for (var j = 0; j < clusters.length; j++) { + if (i != j && isDuplicate(clusters[i], clusters[j])) { + clusters.splice(j, 1); + } + } + } + + return clusters; +}; + +var markovClustering = function markovClustering(options) { + var nodes = this.nodes(); + var edges = this.edges(); + var cy = this.cy(); // Set parameters of algorithm: + + var opts = setOptions(options); // Map each node to its position in node array + + var id2position = {}; + + for (var i = 0; i < nodes.length; i++) { + id2position[nodes[i].id()] = i; + } // Generate stochastic matrix M from input graph G (should be symmetric/undirected) + + + var n = nodes.length, + n2 = n * n; + + var M = new Array(n2), + _M; + + for (var _i = 0; _i < n2; _i++) { + M[_i] = 0; + } + + for (var e = 0; e < edges.length; e++) { + var edge = edges[e]; + var _i2 = id2position[edge.source().id()]; + var j = id2position[edge.target().id()]; + var sim = getSimilarity(edge, opts.attributes); + M[_i2 * n + j] += sim; // G should be symmetric and undirected + + M[j * n + _i2] += sim; + } // Begin Markov cluster algorithm + // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal + + + addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M ); + + normalize$1(M, n); + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + isStillMoving = false; // Step 3: + + _M = expand(M, n, opts.expandFactor); // Step 4: + + M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached + + if (!hasConverged(M, _M, n2, 4)) { + isStillMoving = true; + } + + iterations++; + } // Build clusters from matrix + + + var clusters = assign(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix + + clusters = removeDuplicates(clusters); + return clusters; +}; + +var markovClustering$1 = { + markovClustering: markovClustering, + mcl: markovClustering +}; + +// Common distance metrics for clustering algorithms + +var identity$1 = function identity(x) { + return x; +}; + +var absDiff = function absDiff(p, q) { + return Math.abs(q - p); +}; + +var addAbsDiff = function addAbsDiff(total, p, q) { + return total + absDiff(p, q); +}; + +var addSquaredDiff = function addSquaredDiff(total, p, q) { + return total + Math.pow(q - p, 2); +}; + +var sqrt = function sqrt(x) { + return Math.sqrt(x); +}; + +var maxAbsDiff = function maxAbsDiff(currentMax, p, q) { + return Math.max(currentMax, absDiff(p, q)); +}; + +var getDistance = function getDistance(length, getP, getQ, init, visit) { + var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity$1; + var ret = init; + var p, q; + + for (var dim = 0; dim < length; dim++) { + p = getP(dim); + q = getQ(dim); + ret = visit(ret, p, q); + } + + return post(ret); +}; + +var distances = { + euclidean: function euclidean(length, getP, getQ) { + if (length >= 2) { + return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt); + } else { + // for single attr case, more efficient to avoid sqrt + return getDistance(length, getP, getQ, 0, addAbsDiff); + } + }, + squaredEuclidean: function squaredEuclidean(length, getP, getQ) { + return getDistance(length, getP, getQ, 0, addSquaredDiff); + }, + manhattan: function manhattan(length, getP, getQ) { + return getDistance(length, getP, getQ, 0, addAbsDiff); + }, + max: function max(length, getP, getQ) { + return getDistance(length, getP, getQ, -Infinity, maxAbsDiff); + } +}; // in case the user accidentally doesn't use camel case + +distances['squared-euclidean'] = distances['squaredEuclidean']; +distances['squaredeuclidean'] = distances['squaredEuclidean']; +function clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) { + var impl; + + if (fn(method)) { + impl = method; + } else { + impl = distances[method] || distances.euclidean; + } + + if (length === 0 && fn(method)) { + return impl(nodeP, nodeQ); + } else { + return impl(length, getP, getQ, nodeP, nodeQ); + } +} + +var defaults$5 = defaults$1({ + k: 2, + m: 2, + sensitivityThreshold: 0.0001, + distance: 'euclidean', + maxIterations: 10, + attributes: [], + testMode: false, + testCentroids: null +}); + +var setOptions$1 = function setOptions(options) { + return defaults$5(options); +}; +/* eslint-enable */ + + +var getDist = function getDist(type, node, centroid, attributes, mode) { + var noNodeP = mode !== 'kMedoids'; + var getP = noNodeP ? function (i) { + return centroid[i]; + } : function (i) { + return attributes[i](centroid); + }; + + var getQ = function getQ(i) { + return attributes[i](node); + }; + + var nodeP = centroid; + var nodeQ = node; + return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ); +}; + +var randomCentroids = function randomCentroids(nodes, k, attributes) { + var ndim = attributes.length; + var min = new Array(ndim); + var max = new Array(ndim); + var centroids = new Array(k); + var centroid = null; // Find min, max values for each attribute dimension + + for (var i = 0; i < ndim; i++) { + min[i] = nodes.min(attributes[i]).value; + max[i] = nodes.max(attributes[i]).value; + } // Build k centroids, each represented as an n-dim feature vector + + + for (var c = 0; c < k; c++) { + centroid = []; + + for (var _i = 0; _i < ndim; _i++) { + centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value + } + + centroids[c] = centroid; + } + + return centroids; +}; + +var classify = function classify(node, centroids, distance, attributes, type) { + var min = Infinity; + var index = 0; + + for (var i = 0; i < centroids.length; i++) { + var dist = getDist(distance, node, centroids[i], attributes, type); + + if (dist < min) { + min = dist; + index = i; + } + } + + return index; +}; + +var buildCluster = function buildCluster(centroid, nodes, assignment) { + var cluster = []; + var node = null; + + for (var n = 0; n < nodes.length; n++) { + node = nodes[n]; + + if (assignment[node.id()] === centroid) { + //console.log("Node " + node.id() + " is associated with medoid #: " + m); + cluster.push(node); + } + } + + return cluster; +}; + +var haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) { + return Math.abs(v2 - v1) <= sensitivityThreshold; +}; + +var haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) { + for (var i = 0; i < v1.length; i++) { + for (var j = 0; j < v1[i].length; j++) { + var diff = Math.abs(v1[i][j] - v2[i][j]); + + if (diff > sensitivityThreshold) { + return false; + } + } + } + + return true; +}; + +var seenBefore = function seenBefore(node, medoids, n) { + for (var i = 0; i < n; i++) { + if (node === medoids[i]) return true; + } + + return false; +}; + +var randomMedoids = function randomMedoids(nodes, k) { + var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater, + // so we need to check to see if we've already seen or chose this node before. + + if (nodes.length < 50) { + // Randomly select k medoids from the n nodes + for (var i = 0; i < k; i++) { + var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets). + // Instead choose a different random node. + + while (seenBefore(node, medoids, i)) { + node = nodes[Math.floor(Math.random() * nodes.length)]; + } + + medoids[i] = node; + } + } else { + // Relatively large data set, so pretty safe to not check and just select random nodes + for (var _i2 = 0; _i2 < k; _i2++) { + medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)]; + } + } + + return medoids; +}; + +var findCost = function findCost(potentialNewMedoid, cluster, attributes) { + var cost = 0; + + for (var n = 0; n < cluster.length; n++) { + cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids'); + } + + return cost; +}; + +var kMeans = function kMeans(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc. + + var opts = setOptions$1(options); // Begin k-means algorithm + + var clusters = new Array(opts.k); + var assignment = {}; + var centroids; // Step 1: Initialize centroid positions + + if (opts.testMode) { + if (typeof opts.testCentroids === 'number') { + centroids = randomCentroids(nodes, opts.k, opts.attributes); + } else if (_typeof(opts.testCentroids) === 'object') { + centroids = opts.testCentroids; + } else { + centroids = randomCentroids(nodes, opts.k, opts.attributes); + } + } else { + centroids = randomCentroids(nodes, opts.k, opts.attributes); + } + + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + // Step 2: Assign nodes to the nearest centroid + for (var n = 0; n < nodes.length; n++) { + node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # + + assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans'); + } // Step 3: For each of the k clusters, update its centroid + + + isStillMoving = false; + + for (var c = 0; c < opts.k; c++) { + // Get all nodes that belong to this cluster + var cluster = buildCluster(c, nodes, assignment); + + if (cluster.length === 0) { + // If cluster is empty, break out early & move to next cluster + continue; + } // Update centroids by calculating avg of all nodes within the cluster. + + + var ndim = opts.attributes.length; + var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ] + + var newCentroid = new Array(ndim); + var sum = new Array(ndim); + + for (var d = 0; d < ndim; d++) { + sum[d] = 0.0; + + for (var i = 0; i < cluster.length; i++) { + node = cluster[i]; + sum[d] += opts.attributes[d](node); + } + + newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change + + if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) { + isStillMoving = true; + } + } + + centroids[c] = newCentroid; + clusters[c] = cy.collection(cluster); + } + + iterations++; + } + + return clusters; +}; + +var kMedoids = function kMedoids(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var node = null; + var opts = setOptions$1(options); // Begin k-medoids algorithm + + var clusters = new Array(opts.k); + var medoids; + var assignment = {}; + var curCost; + var minCosts = new Array(opts.k); // minimum cost configuration for each cluster + // Step 1: Initialize k medoids + + if (opts.testMode) { + if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') { + medoids = opts.testCentroids; + } else { + medoids = randomMedoids(nodes, opts.k); + } + } else { + medoids = randomMedoids(nodes, opts.k); + } + + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + // Step 2: Assign nodes to the nearest medoid + for (var n = 0; n < nodes.length; n++) { + node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # + + assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids'); + } + + isStillMoving = false; // Step 3: For each medoid m, and for each node assciated with mediod m, + // select the node with the lowest configuration cost as new medoid. + + for (var m = 0; m < medoids.length; m++) { + // Get all nodes that belong to this medoid + var cluster = buildCluster(m, nodes, assignment); + + if (cluster.length === 0) { + // If cluster is empty, break out early & move to next cluster + continue; + } + + minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost + // Select different medoid if its configuration has the lowest cost + + for (var _n = 0; _n < cluster.length; _n++) { + curCost = findCost(cluster[_n], cluster, opts.attributes); + + if (curCost < minCosts[m]) { + minCosts[m] = curCost; + medoids[m] = cluster[_n]; + isStillMoving = true; + } + } + + clusters[m] = cy.collection(cluster); + } + + iterations++; + } + + return clusters; +}; + +var updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) { + var numerator, denominator; + + for (var n = 0; n < nodes.length; n++) { + for (var c = 0; c < centroids.length; c++) { + weight[n][c] = Math.pow(U[n][c], opts.m); + } + } + + for (var _c = 0; _c < centroids.length; _c++) { + for (var dim = 0; dim < opts.attributes.length; dim++) { + numerator = 0; + denominator = 0; + + for (var _n2 = 0; _n2 < nodes.length; _n2++) { + numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]); + denominator += weight[_n2][_c]; + } + + centroids[_c][dim] = numerator / denominator; + } + } +}; + +var updateMembership = function updateMembership(U, _U, centroids, nodes, opts) { + // Save previous step + for (var i = 0; i < U.length; i++) { + _U[i] = U[i].slice(); + } + + var sum, numerator, denominator; + var pow = 2 / (opts.m - 1); + + for (var c = 0; c < centroids.length; c++) { + for (var n = 0; n < nodes.length; n++) { + sum = 0; + + for (var k = 0; k < centroids.length; k++) { + // against all other centroids + numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans'); + denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans'); + sum += Math.pow(numerator / denominator, pow); + } + + U[n][c] = 1 / sum; + } + } +}; + +var assign$1 = function assign(nodes, U, opts, cy) { + var clusters = new Array(opts.k); + + for (var c = 0; c < clusters.length; c++) { + clusters[c] = []; + } + + var max; + var index; + + for (var n = 0; n < U.length; n++) { + // for each node (U is N x C matrix) + max = -Infinity; + index = -1; // Determine which cluster the node is most likely to belong in + + for (var _c2 = 0; _c2 < U[0].length; _c2++) { + if (U[n][_c2] > max) { + max = U[n][_c2]; + index = _c2; + } + } + + clusters[index].push(nodes[n]); + } // Turn every array into a collection of nodes + + + for (var _c3 = 0; _c3 < clusters.length; _c3++) { + clusters[_c3] = cy.collection(clusters[_c3]); + } + + return clusters; +}; + +var fuzzyCMeans = function fuzzyCMeans(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var opts = setOptions$1(options); // Begin fuzzy c-means algorithm + + var clusters; + var centroids; + var U; + + var _U; + + var weight; // Step 1: Initialize letiables. + + _U = new Array(nodes.length); + + for (var i = 0; i < nodes.length; i++) { + // N x C matrix + _U[i] = new Array(opts.k); + } + + U = new Array(nodes.length); + + for (var _i3 = 0; _i3 < nodes.length; _i3++) { + // N x C matrix + U[_i3] = new Array(opts.k); + } + + for (var _i4 = 0; _i4 < nodes.length; _i4++) { + var total = 0; + + for (var j = 0; j < opts.k; j++) { + U[_i4][j] = Math.random(); + total += U[_i4][j]; + } + + for (var _j = 0; _j < opts.k; _j++) { + U[_i4][_j] = U[_i4][_j] / total; + } + } + + centroids = new Array(opts.k); + + for (var _i5 = 0; _i5 < opts.k; _i5++) { + centroids[_i5] = new Array(opts.attributes.length); + } + + weight = new Array(nodes.length); + + for (var _i6 = 0; _i6 < nodes.length; _i6++) { + // N x C matrix + weight[_i6] = new Array(opts.k); + } // end init FCM + + + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + isStillMoving = false; // Step 2: Calculate the centroids for each step. + + updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U. + + updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence. + + if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) { + isStillMoving = true; + } + + iterations++; + } // Assign nodes to clusters with highest probability. + + + clusters = assign$1(nodes, U, opts, cy); + return { + clusters: clusters, + degreeOfMembership: U + }; +}; + +var kClustering = { + kMeans: kMeans, + kMedoids: kMedoids, + fuzzyCMeans: fuzzyCMeans, + fcm: fuzzyCMeans +}; + +// Implemented by Zoe Xi @zoexi for GSOC 2016 +var defaults$6 = defaults$1({ + distance: 'euclidean', + // distance metric to compare nodes + linkage: 'min', + // linkage criterion : how to determine the distance between clusters of nodes + mode: 'threshold', + // mode:'threshold' => clusters must be threshold distance apart + threshold: Infinity, + // the distance threshold + // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters + addDendrogram: false, + // whether to add the dendrogram to the graph for viz + dendrogramDepth: 0, + // depth at which dendrogram branches are merged into the returned clusters + attributes: [] // array of attr functions + +}); +var linkageAliases = { + 'single': 'min', + 'complete': 'max' +}; + +var setOptions$2 = function setOptions(options) { + var opts = defaults$6(options); + var preferredAlias = linkageAliases[opts.linkage]; + + if (preferredAlias != null) { + opts.linkage = preferredAlias; + } + + return opts; +}; + +var mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) { + // Find two closest clusters from cached mins + var minKey = 0; + var min = Infinity; + var dist; + var attrs = opts.attributes; + + var getDist = function getDist(n1, n2) { + return clusteringDistance(opts.distance, attrs.length, function (i) { + return attrs[i](n1); + }, function (i) { + return attrs[i](n2); + }, n1, n2); + }; + + for (var i = 0; i < clusters.length; i++) { + var key = clusters[i].key; + var _dist = dists[key][mins[key]]; + + if (_dist < min) { + minKey = key; + min = _dist; + } + } + + if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) { + return false; + } + + var c1 = index[minKey]; + var c2 = index[mins[minKey]]; + var merged; // Merge two closest clusters + + if (opts.mode === 'dendrogram') { + merged = { + left: c1, + right: c2, + key: c1.key + }; + } else { + merged = { + value: c1.value.concat(c2.value), + key: c1.key + }; + } + + clusters[c1.index] = merged; + clusters.splice(c2.index, 1); + index[c1.key] = merged; // Update distances with new merged cluster + + for (var _i = 0; _i < clusters.length; _i++) { + var cur = clusters[_i]; + + if (c1.key === cur.key) { + dist = Infinity; + } else if (opts.linkage === 'min') { + dist = dists[c1.key][cur.key]; + + if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) { + dist = dists[c2.key][cur.key]; + } + } else if (opts.linkage === 'max') { + dist = dists[c1.key][cur.key]; + + if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) { + dist = dists[c2.key][cur.key]; + } + } else if (opts.linkage === 'mean') { + dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size); + } else { + if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]); + } + + dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric + } // Update cached mins + + + for (var _i2 = 0; _i2 < clusters.length; _i2++) { + var key1 = clusters[_i2].key; + + if (mins[key1] === c1.key || mins[key1] === c2.key) { + var _min = key1; + + for (var j = 0; j < clusters.length; j++) { + var key2 = clusters[j].key; + + if (dists[key1][key2] < dists[key1][_min]) { + _min = key2; + } + } + + mins[key1] = _min; + } + + clusters[_i2].index = _i2; + } // Clean up meta data used for clustering + + + c1.key = c2.key = c1.index = c2.index = null; + return true; +}; + +var getAllChildren = function getAllChildren(root, arr, cy) { + if (!root) return; + + if (root.value) { + arr.push(root.value); + } else { + if (root.left) getAllChildren(root.left, arr); + if (root.right) getAllChildren(root.right, arr); + } +}; + +var buildDendrogram = function buildDendrogram(root, cy) { + if (!root) return ''; + + if (root.left && root.right) { + var leftStr = buildDendrogram(root.left, cy); + var rightStr = buildDendrogram(root.right, cy); + var node = cy.add({ + group: 'nodes', + data: { + id: leftStr + ',' + rightStr + } + }); + cy.add({ + group: 'edges', + data: { + source: leftStr, + target: node.id() + } + }); + cy.add({ + group: 'edges', + data: { + source: rightStr, + target: node.id() + } + }); + return node.id(); + } else if (root.value) { + return root.value.id(); + } +}; + +var buildClustersFromTree = function buildClustersFromTree(root, k, cy) { + if (!root) return []; + var left = [], + right = [], + leaves = []; + + if (k === 0) { + // don't cut tree, simply return all nodes as 1 single cluster + if (root.left) getAllChildren(root.left, left); + if (root.right) getAllChildren(root.right, right); + leaves = left.concat(right); + return [cy.collection(leaves)]; + } else if (k === 1) { + // cut at root + if (root.value) { + // leaf node + return [cy.collection(root.value)]; + } else { + if (root.left) getAllChildren(root.left, left); + if (root.right) getAllChildren(root.right, right); + return [cy.collection(left), cy.collection(right)]; + } + } else { + if (root.value) { + return [cy.collection(root.value)]; + } else { + if (root.left) left = buildClustersFromTree(root.left, k - 1, cy); + if (root.right) right = buildClustersFromTree(root.right, k - 1, cy); + return left.concat(right); + } + } +}; +/* eslint-enable */ + + +var hierarchicalClustering = function hierarchicalClustering(options) { + var cy = this.cy(); + var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc. + + var opts = setOptions$2(options); + var attrs = opts.attributes; + + var getDist = function getDist(n1, n2) { + return clusteringDistance(opts.distance, attrs.length, function (i) { + return attrs[i](n1); + }, function (i) { + return attrs[i](n2); + }, n1, n2); + }; // Begin hierarchical algorithm + + + var clusters = []; + var dists = []; // distances between each pair of clusters + + var mins = []; // closest cluster for each cluster + + var index = []; // hash of all clusters by key + // In agglomerative (bottom-up) clustering, each node starts as its own cluster + + for (var n = 0; n < nodes.length; n++) { + var cluster = { + value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]], + key: n, + index: n + }; + clusters[n] = cluster; + index[n] = cluster; + dists[n] = []; + mins[n] = 0; + } // Calculate the distance between each pair of clusters + + + for (var i = 0; i < clusters.length; i++) { + for (var j = 0; j <= i; j++) { + var dist = void 0; + + if (opts.mode === 'dendrogram') { + // modes store cluster values differently + dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value); + } else { + dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]); + } + + dists[i][j] = dist; + dists[j][i] = dist; + + if (dist < dists[i][mins[i]]) { + mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j + } + } + } // Find the closest pair of clusters and merge them into a single cluster. + // Update distances between new cluster and each of the old clusters, and loop until threshold reached. + + + var merged = mergeClosest(clusters, index, dists, mins, opts); + + while (merged) { + merged = mergeClosest(clusters, index, dists, mins, opts); + } + + var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges + // in addition to returning the clusters. + + if (opts.mode === 'dendrogram') { + retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy); + if (opts.addDendrogram) buildDendrogram(clusters[0], cy); + } else { + // Regular mode simply returns the clusters + retClusters = new Array(clusters.length); + clusters.forEach(function (cluster, i) { + // Clean up meta data used for clustering + cluster.key = cluster.index = null; + retClusters[i] = cy.collection(cluster.value); + }); + } + + return retClusters; +}; + +var hierarchicalClustering$1 = { + hierarchicalClustering: hierarchicalClustering, + hca: hierarchicalClustering +}; + +// Implemented by Zoe Xi @zoexi for GSOC 2016 +var defaults$7 = defaults$1({ + distance: 'euclidean', + // distance metric to compare attributes between two nodes + preference: 'median', + // suitability of a data point to serve as an exemplar + damping: 0.8, + // damping factor between [0.5, 1) + maxIterations: 1000, + // max number of iterations to run + minIterations: 100, + // min number of iterations to run in order for clustering to stop + attributes: [// functions to quantify the similarity between any two points + // e.g. node => node.data('weight') + ] +}); + +var setOptions$3 = function setOptions(options) { + var dmp = options.damping; + var pref = options.preference; + + if (!(0.5 <= dmp && dmp < 1)) { + error("Damping must range on [0.5, 1). Got: ".concat(dmp)); + } + + var validPrefs = ['median', 'mean', 'min', 'max']; + + if (!(validPrefs.some(function (v) { + return v === pref; + }) || number(pref))) { + error("Preference must be one of [".concat(validPrefs.map(function (p) { + return "'".concat(p, "'"); + }).join(', '), "] or a number. Got: ").concat(pref)); + } + + return defaults$7(options); +}; +/* eslint-enable */ + + +var getSimilarity$1 = function getSimilarity(type, n1, n2, attributes) { + var attr = function attr(n, i) { + return attributes[i](n); + }; // nb negative because similarity should have an inverse relationship to distance + + + return -clusteringDistance(type, attributes.length, function (i) { + return attr(n1, i); + }, function (i) { + return attr(n2, i); + }, n1, n2); +}; + +var getPreference = function getPreference(S, preference) { + // larger preference = greater # of clusters + var p = null; + + if (preference === 'median') { + p = median(S); + } else if (preference === 'mean') { + p = mean(S); + } else if (preference === 'min') { + p = min$2(S); + } else if (preference === 'max') { + p = max$2(S); + } else { + // Custom preference number, as set by user + p = preference; + } + + return p; +}; + +var findExemplars = function findExemplars(n, R, A) { + var indices = []; + + for (var i = 0; i < n; i++) { + if (R[i * n + i] + A[i * n + i] > 0) { + indices.push(i); + } + } + + return indices; +}; + +var assignClusters = function assignClusters(n, S, exemplars) { + var clusters = []; + + for (var i = 0; i < n; i++) { + var index = -1; + var max = -Infinity; + + for (var ei = 0; ei < exemplars.length; ei++) { + var e = exemplars[ei]; + + if (S[i * n + e] > max) { + index = e; + max = S[i * n + e]; + } + } + + if (index > 0) { + clusters.push(index); + } + } + + for (var _ei = 0; _ei < exemplars.length; _ei++) { + clusters[exemplars[_ei]] = exemplars[_ei]; + } + + return clusters; +}; + +var assign$2 = function assign(n, S, exemplars) { + var clusters = assignClusters(n, S, exemplars); + + for (var ei = 0; ei < exemplars.length; ei++) { + var ii = []; + + for (var c = 0; c < clusters.length; c++) { + if (clusters[c] === exemplars[ei]) { + ii.push(c); + } + } + + var maxI = -1; + var maxSum = -Infinity; + + for (var i = 0; i < ii.length; i++) { + var sum = 0; + + for (var j = 0; j < ii.length; j++) { + sum += S[ii[j] * n + ii[i]]; + } + + if (sum > maxSum) { + maxI = i; + maxSum = sum; + } + } + + exemplars[ei] = ii[maxI]; + } + + clusters = assignClusters(n, S, exemplars); + return clusters; +}; + +var affinityPropagation = function affinityPropagation(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var opts = setOptions$3(options); // Map each node to its position in node array + + var id2position = {}; + + for (var i = 0; i < nodes.length; i++) { + id2position[nodes[i].id()] = i; + } // Begin affinity propagation algorithm + + + var n; // number of data points + + var n2; // size of matrices + + var S; // similarity matrix (1D array) + + var p; // preference/suitability of a data point to serve as an exemplar + + var R; // responsibility matrix (1D array) + + var A; // availability matrix (1D array) + + n = nodes.length; + n2 = n * n; // Initialize and build S similarity matrix + + S = new Array(n2); + + for (var _i = 0; _i < n2; _i++) { + S[_i] = -Infinity; // for cases where two data points shouldn't be linked together + } + + for (var _i2 = 0; _i2 < n; _i2++) { + for (var j = 0; j < n; j++) { + if (_i2 !== j) { + S[_i2 * n + j] = getSimilarity$1(opts.distance, nodes[_i2], nodes[j], opts.attributes); + } + } + } // Place preferences on the diagonal of S + + + p = getPreference(S, opts.preference); + + for (var _i3 = 0; _i3 < n; _i3++) { + S[_i3 * n + _i3] = p; + } // Initialize R responsibility matrix + + + R = new Array(n2); + + for (var _i4 = 0; _i4 < n2; _i4++) { + R[_i4] = 0.0; + } // Initialize A availability matrix + + + A = new Array(n2); + + for (var _i5 = 0; _i5 < n2; _i5++) { + A[_i5] = 0.0; + } + + var old = new Array(n); + var Rp = new Array(n); + var se = new Array(n); + + for (var _i6 = 0; _i6 < n; _i6++) { + old[_i6] = 0.0; + Rp[_i6] = 0.0; + se[_i6] = 0; + } + + var e = new Array(n * opts.minIterations); + + for (var _i7 = 0; _i7 < e.length; _i7++) { + e[_i7] = 0; + } + + var iter; + + for (iter = 0; iter < opts.maxIterations; iter++) { + // main algorithmic loop + // Update R responsibility matrix + for (var _i8 = 0; _i8 < n; _i8++) { + var max = -Infinity, + max2 = -Infinity, + maxI = -1, + AS = 0.0; + + for (var _j = 0; _j < n; _j++) { + old[_j] = R[_i8 * n + _j]; + AS = A[_i8 * n + _j] + S[_i8 * n + _j]; + + if (AS >= max) { + max2 = max; + max = AS; + maxI = _j; + } else if (AS > max2) { + max2 = AS; + } + } + + for (var _j2 = 0; _j2 < n; _j2++) { + R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2]; + } + + R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI]; + } // Update A availability matrix + + + for (var _i9 = 0; _i9 < n; _i9++) { + var sum = 0; + + for (var _j3 = 0; _j3 < n; _j3++) { + old[_j3] = A[_j3 * n + _i9]; + Rp[_j3] = Math.max(0, R[_j3 * n + _i9]); + sum += Rp[_j3]; + } + + sum -= Rp[_i9]; + Rp[_i9] = R[_i9 * n + _i9]; + sum += Rp[_i9]; + + for (var _j4 = 0; _j4 < n; _j4++) { + A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4]; + } + + A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9]; + } // Check for convergence + + + var K = 0; + + for (var _i10 = 0; _i10 < n; _i10++) { + var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0; + e[iter % opts.minIterations * n + _i10] = E; + K += E; + } + + if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) { + var _sum = 0; + + for (var _i11 = 0; _i11 < n; _i11++) { + se[_i11] = 0; + + for (var _j5 = 0; _j5 < opts.minIterations; _j5++) { + se[_i11] += e[_j5 * n + _i11]; + } + + if (se[_i11] === 0 || se[_i11] === opts.minIterations) { + _sum++; + } + } + + if (_sum === n) { + // then we have convergence + break; + } + } + } // Identify exemplars (cluster centers) + + + var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters + + var clusterIndices = assign$2(n, S, exemplarsIndices); + var clusters = {}; + + for (var c = 0; c < exemplarsIndices.length; c++) { + clusters[exemplarsIndices[c]] = []; + } + + for (var _i12 = 0; _i12 < nodes.length; _i12++) { + var pos = id2position[nodes[_i12].id()]; + + var clusterIndex = clusterIndices[pos]; + + if (clusterIndex != null) { + // the node may have not been assigned a cluster if no valid attributes were specified + clusters[clusterIndex].push(nodes[_i12]); + } + } + + var retClusters = new Array(exemplarsIndices.length); + + for (var _c = 0; _c < exemplarsIndices.length; _c++) { + retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]); + } + + return retClusters; +}; + +var affinityPropagation$1 = { + affinityPropagation: affinityPropagation, + ap: affinityPropagation +}; + +var hierholzerDefaults = defaults$1({ + root: undefined, + directed: false +}); +var elesfn$b = { + hierholzer: function hierholzer(options) { + if (!plainObject(options)) { + var args = arguments; + options = { + root: args[0], + directed: args[1] + }; + } + + var _hierholzerDefaults = hierholzerDefaults(options), + root = _hierholzerDefaults.root, + directed = _hierholzerDefaults.directed; + + var eles = this; + var dflag = false; + var oddIn; + var oddOut; + var startVertex; + if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id(); + var nodes = {}; + var edges = {}; + + if (directed) { + eles.forEach(function (ele) { + var id = ele.id(); + + if (ele.isNode()) { + var ind = ele.indegree(true); + var outd = ele.outdegree(true); + var d1 = ind - outd; + var d2 = outd - ind; + + if (d1 == 1) { + if (oddIn) dflag = true;else oddIn = id; + } else if (d2 == 1) { + if (oddOut) dflag = true;else oddOut = id; + } else if (d2 > 1 || d1 > 1) { + dflag = true; + } + + nodes[id] = []; + ele.outgoers().forEach(function (e) { + if (e.isEdge()) nodes[id].push(e.id()); + }); + } else { + edges[id] = [undefined, ele.target().id()]; + } + }); + } else { + eles.forEach(function (ele) { + var id = ele.id(); + + if (ele.isNode()) { + var d = ele.degree(true); + + if (d % 2) { + if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true; + } + + nodes[id] = []; + ele.connectedEdges().forEach(function (e) { + return nodes[id].push(e.id()); + }); + } else { + edges[id] = [ele.source().id(), ele.target().id()]; + } + }); + } + + var result = { + found: false, + trail: undefined + }; + if (dflag) return result;else if (oddOut && oddIn) { + if (directed) { + if (startVertex && oddOut != startVertex) { + return result; + } + + startVertex = oddOut; + } else { + if (startVertex && oddOut != startVertex && oddIn != startVertex) { + return result; + } else if (!startVertex) { + startVertex = oddOut; + } + } + } else { + if (!startVertex) startVertex = eles[0].id(); + } + + var walk = function walk(v) { + var currentNode = v; + var subtour = [v]; + var adj, adjTail, adjHead; + + while (nodes[currentNode].length) { + adj = nodes[currentNode].shift(); + adjTail = edges[adj][0]; + adjHead = edges[adj][1]; + + if (currentNode != adjHead) { + nodes[adjHead] = nodes[adjHead].filter(function (e) { + return e != adj; + }); + currentNode = adjHead; + } else if (!directed && currentNode != adjTail) { + nodes[adjTail] = nodes[adjTail].filter(function (e) { + return e != adj; + }); + currentNode = adjTail; + } + + subtour.unshift(adj); + subtour.unshift(currentNode); + } + + return subtour; + }; + + var trail = []; + var subtour = []; + subtour = walk(startVertex); + + while (subtour.length != 1) { + if (nodes[subtour[0]].length == 0) { + trail.unshift(eles.getElementById(subtour.shift())); + trail.unshift(eles.getElementById(subtour.shift())); + } else { + subtour = walk(subtour.shift()).concat(subtour); + } + } + + trail.unshift(eles.getElementById(subtour.shift())); // final node + + for (var d in nodes) { + if (nodes[d].length) { + return result; + } + } + + result.found = true; + result.trail = this.spawn(trail, true); + return result; + } +}; + +var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() { + var eles = this; + var nodes = {}; + var id = 0; + var edgeCount = 0; + var components = []; + var stack = []; + var visitedEdges = {}; + + var buildComponent = function buildComponent(x, y) { + var i = stack.length - 1; + var cutset = []; + var component = eles.spawn(); + + while (stack[i].x != x || stack[i].y != y) { + cutset.push(stack.pop().edge); + i--; + } + + cutset.push(stack.pop().edge); + cutset.forEach(function (edge) { + var connectedNodes = edge.connectedNodes().intersection(eles); + component.merge(edge); + connectedNodes.forEach(function (node) { + var nodeId = node.id(); + var connectedEdges = node.connectedEdges().intersection(eles); + component.merge(node); + + if (!nodes[nodeId].cutVertex) { + component.merge(connectedEdges); + } else { + component.merge(connectedEdges.filter(function (edge) { + return edge.isLoop(); + })); + } + }); + }); + components.push(component); + }; + + var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) { + if (root === parent) edgeCount += 1; + nodes[currentNode] = { + id: id, + low: id++, + cutVertex: false + }; + var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles); + + if (edges.size() === 0) { + components.push(eles.spawn(eles.getElementById(currentNode))); + } else { + var sourceId, targetId, otherNodeId, edgeId; + edges.forEach(function (edge) { + sourceId = edge.source().id(); + targetId = edge.target().id(); + otherNodeId = sourceId === currentNode ? targetId : sourceId; + + if (otherNodeId !== parent) { + edgeId = edge.id(); + + if (!visitedEdges[edgeId]) { + visitedEdges[edgeId] = true; + stack.push({ + x: currentNode, + y: otherNodeId, + edge: edge + }); + } + + if (!(otherNodeId in nodes)) { + biconnectedSearch(root, otherNodeId, currentNode); + nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low); + + if (nodes[currentNode].id <= nodes[otherNodeId].low) { + nodes[currentNode].cutVertex = true; + buildComponent(currentNode, otherNodeId); + } + } else { + nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id); + } + } + }); + } + }; + + eles.forEach(function (ele) { + if (ele.isNode()) { + var nodeId = ele.id(); + + if (!(nodeId in nodes)) { + edgeCount = 0; + biconnectedSearch(nodeId, nodeId); + nodes[nodeId].cutVertex = edgeCount > 1; + } + } + }); + var cutVertices = Object.keys(nodes).filter(function (id) { + return nodes[id].cutVertex; + }).map(function (id) { + return eles.getElementById(id); + }); + return { + cut: eles.spawn(cutVertices), + components: components + }; +}; + +var hopcroftTarjanBiconnected$1 = { + hopcroftTarjanBiconnected: hopcroftTarjanBiconnected, + htbc: hopcroftTarjanBiconnected, + htb: hopcroftTarjanBiconnected, + hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected +}; + +var tarjanStronglyConnected = function tarjanStronglyConnected() { + var eles = this; + var nodes = {}; + var index = 0; + var components = []; + var stack = []; + var cut = eles.spawn(eles); + + var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) { + stack.push(sourceNodeId); + nodes[sourceNodeId] = { + index: index, + low: index++, + explored: false + }; + var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles); + connectedEdges.forEach(function (edge) { + var targetNodeId = edge.target().id(); + + if (targetNodeId !== sourceNodeId) { + if (!(targetNodeId in nodes)) { + stronglyConnectedSearch(targetNodeId); + } + + if (!nodes[targetNodeId].explored) { + nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low); + } + } + }); + + if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) { + var componentNodes = eles.spawn(); + + for (;;) { + var nodeId = stack.pop(); + componentNodes.merge(eles.getElementById(nodeId)); + nodes[nodeId].low = nodes[sourceNodeId].index; + nodes[nodeId].explored = true; + + if (nodeId === sourceNodeId) { + break; + } + } + + var componentEdges = componentNodes.edgesWith(componentNodes); + var component = componentNodes.merge(componentEdges); + components.push(component); + cut = cut.difference(component); + } + }; + + eles.forEach(function (ele) { + if (ele.isNode()) { + var nodeId = ele.id(); + + if (!(nodeId in nodes)) { + stronglyConnectedSearch(nodeId); + } + } + }); + return { + cut: cut, + components: components + }; +}; + +var tarjanStronglyConnected$1 = { + tarjanStronglyConnected: tarjanStronglyConnected, + tsc: tarjanStronglyConnected, + tscc: tarjanStronglyConnected, + tarjanStronglyConnectedComponents: tarjanStronglyConnected +}; + +var elesfn$c = {}; +[elesfn, elesfn$1, elesfn$2, elesfn$3, elesfn$4, elesfn$5, elesfn$6, elesfn$7, elesfn$8, elesfn$9, elesfn$a, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$b, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) { + extend(elesfn$c, props); +}); + /*! Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) Licensed under The MIT License (http://opensource.org/licenses/MIT) */ -var cH=function e(t){if(!(this instanceof e))return new e(t);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof t&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))};cH.prototype={fulfill:function(e){return hH(this,1,"fulfillValue",e)},reject:function(e){return hH(this,2,"rejectReason",e)},then:function(e,t){var C=this,i=new cH;return C.onFulfilled.push(pH(e,i,"fulfill")),C.onRejected.push(pH(t,i,"reject")),mH(C),i.proxy}};var hH=function(e,t,C,i){return 0===e.state&&(e.state=t,e[C]=i,mH(e)),e},mH=function(e){1===e.state?fH(e,"onFulfilled",e.fulfillValue):2===e.state&&fH(e,"onRejected",e.rejectReason)},fH=function(e,t,C){if(0!==e[t].length){var i=e[t];e[t]=[];var H=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var C=0;C0&&this.spawn(i).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Ct(e)||(e=e.match(/\S+/g)||[]);for(var C=this,i=void 0===t,H=[],n=0,V=C.length;n0&&this.spawn(H).updateStyle().emit("class"),C},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var C=this;if(null==t)t=250;else if(0===t)return C;return C.addClass(e),setTimeout((function(){C.removeClass(e)}),t),C}};kH.className=kH.classNames=kH.classes;var EH={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:ht,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};EH.variable="(?:[\\w-]|(?:\\\\"+EH.metaChar+"))+",EH.value=EH.string+"|"+EH.number,EH.className=EH.variable,EH.id=EH.variable,function(){var e,t,C;for(e=EH.comparatorOp.split("|"),C=0;C=0||"="!==t&&(EH.comparatorOp+="|\\!"+t)}();var PH=0,TH=1,_H=2,BH=3,DH=4,NH=5,RH=6,FH=7,IH=8,zH=9,jH=10,GH=11,WH=12,$H=13,UH=14,YH=15,XH=16,qH=17,QH=18,KH=19,JH=20,en=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort((function(e,t){return function(e,t){return-1*mt(e,t)}(e.selector,t.selector)})),tn=function(){for(var e,t={},C=0;C0&&o.edgeCount>0)return Xt("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(o.edgeCount>1)return Xt("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===o.edgeCount&&Xt("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return et(t)?'"'+t+'"':e(t)},C=function(e){return" "+e+" "},i=function(i,n){var V=i.type,r=i.value;switch(V){case PH:var L=e(r);return L.substring(0,L.length-1);case BH:var o=i.field,a=i.operator;return"["+o+C(e(a))+t(r)+"]";case NH:var M=i.operator,s=i.field;return"["+e(M)+s+"]";case DH:return"["+i.field+"]";case RH:var l=i.operator;return"[["+i.field+C(e(l))+t(r)+"]]";case FH:return r;case IH:return"#"+r;case zH:return"."+r;case qH:case YH:return H(i.parent,n)+C(">")+H(i.child,n);case QH:case XH:return H(i.ancestor,n)+" "+H(i.descendant,n);case KH:var d=H(i.left,n),u=H(i.subject,n),A=H(i.right,n);return d+(d.length>0?" ":"")+u+A;case JH:return""}},H=function(e,t){return e.checks.reduce((function(C,H,n){return C+(t===e&&0===n?"$":"")+i(H,t)}),"")},n="",V=0;V1&&V=0&&(t=t.replace("!",""),a=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),o=!0),(V||L||o)&&(H=V||r?""+e:"",n=""+C),o&&(e=H=H.toLowerCase(),C=n=n.toLowerCase()),t){case"*=":i=H.indexOf(n)>=0;break;case"$=":i=H.indexOf(n,H.length-n.length)>=0;break;case"^=":i=0===H.indexOf(n);break;case"=":i=e===C;break;case">":M=!0,i=e>C;break;case">=":M=!0,i=e>=C;break;case"<":M=!0,i=e0;){var o=H.shift();t(o),n.add(o.id()),V&&i(H,n,o)}return e}function gn(e,t,C){if(C.isParent())for(var i=C._private.children,H=0;H1&&void 0!==arguments[1])||arguments[1];return pn(this,e,t,gn)},fn.forEachUp=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return pn(this,e,t,vn)},fn.forEachUpAndDown=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return pn(this,e,t,yn)},fn.ancestors=fn.parents,(cn=hn={data:xH.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:xH.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:xH.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:xH.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:xH.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:xH.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=cn.data,cn.removeAttr=cn.removeData;var Zn,Sn,bn=hn,wn={};function xn(e){return function(t){var C=this;if(void 0===t&&(t=!0),0!==C.length&&C.isNode()&&!C.removed()){for(var i=0,H=C[0],n=H._private.edges,V=0;Vt})),minIndegree:On("indegree",(function(e,t){return et})),minOutdegree:On("outdegree",(function(e,t){return et}))}),ft(wn,{totalDegree:function(e){for(var t=0,C=this.nodes(),i=0;i0,a=o;o&&(L=L[0]);var M=a?L.position():{x:0,y:0};return H={x:r.x-M.x,y:r.y-M.y},void 0===e?H:H[e]}for(var s=0;s0,A=u;u&&(d=d[0]);var c=A?d.position():{x:0,y:0};void 0!==t?l.position(e,t+c[e]):void 0!==H&&l.position({x:H.x+c.x,y:H.y+c.y})}}else if(!n)return;return this}},Zn.modelPosition=Zn.point=Zn.position,Zn.modelPositions=Zn.points=Zn.positions,Zn.renderedPoint=Zn.renderedPosition,Zn.relativePoint=Zn.relativePosition;var Pn,Tn,_n=Sn;Pn=Tn={},Tn.renderedBoundingBox=function(e){var t=this.boundingBox(e),C=this.cy(),i=C.zoom(),H=C.pan(),n=t.x1*i+H.x,V=t.x2*i+H.x,r=t.y1*i+H.y,L=t.y2*i+H.y;return{x1:n,x2:V,y1:r,y2:L,w:V-n,h:L-r}},Tn.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp((function(t){if(t.isParent()){var C=t._private;C.compoundBoundsClean=!1,C.bbCache=null,e||t.emitAndNotify("bounds")}})),this):this},Tn.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function C(e){if(e.isParent()){var t=e._private,C=e.children(),i="include"===e.pstyle("compound-sizing-wrt-labels").value,H={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},n=C.boundingBox({includeLabels:i,includeOverlays:!1,useCache:!1}),V=t.position;0!==n.w&&0!==n.h||((n={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=V.x-n.w/2,n.x2=V.x+n.w/2,n.y1=V.y-n.h/2,n.y2=V.y+n.h/2);var r=H.width.left.value;"px"===H.width.left.units&&H.width.val>0&&(r=100*r/H.width.val);var L=H.width.right.value;"px"===H.width.right.units&&H.width.val>0&&(L=100*L/H.width.val);var o=H.height.top.value;"px"===H.height.top.units&&H.height.val>0&&(o=100*o/H.height.val);var a=H.height.bottom.value;"px"===H.height.bottom.units&&H.height.val>0&&(a=100*a/H.height.val);var M=c(H.width.val-n.w,r,L),s=M.biasDiff,l=M.biasComplementDiff,d=c(H.height.val-n.h,o,a),u=d.biasDiff,A=d.biasComplementDiff;t.autoPadding=function(e,t,C,i){if("%"!==C.units)return"px"===C.units?C.pfValue:0;switch(i){case"width":return e>0?C.pfValue*e:0;case"height":return t>0?C.pfValue*t:0;case"average":return e>0&&t>0?C.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?C.pfValue*t:C.pfValue*e:0;case"max":return e>0&&t>0?e>t?C.pfValue*e:C.pfValue*t:0;default:return 0}}(n.w,n.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(n.w,H.width.val),V.x=(-s+n.x1+n.x2+l)/2,t.autoHeight=Math.max(n.h,H.height.val),V.y=(-u+n.y1+n.y2+A)/2}function c(e,t,C){var i=0,H=0,n=t+C;return e>0&&n>0&&(i=t/n*e,H=C/n*e),{biasDiff:i,biasComplementDiff:H}}}for(var i=0;ie.x2?i:e.x2,e.y1=Ce.y2?H:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Nn=function(e,t){return null==t?e:Dn(e,t.x1,t.y1,t.x2,t.y2)},Rn=function(e,t,C){return iC(e,t,C)},Fn=function(e,t,C){if(!t.cy().headless()){var i,H,n=t._private,V=n.rstyle,r=V.arrowWidth/2;if("none"!==t.pstyle(C+"-arrow-shape").value){"source"===C?(i=V.srcX,H=V.srcY):"target"===C?(i=V.tgtX,H=V.tgtY):(i=V.midX,H=V.midY);var L=n.arrowBounds=n.arrowBounds||{},o=L[C]=L[C]||{};o.x1=i-r,o.y1=H-r,o.x2=i+r,o.y2=H+r,o.w=o.x2-o.x1,o.h=o.y2-o.y1,NC(o,1),Dn(e,o.x1,o.y1,o.x2,o.y2)}}},In=function(e,t,C){if(!t.cy().headless()){var i;i=C?C+"-":"";var H=t._private,n=H.rstyle;if(t.pstyle(i+"label").strValue){var V,r,L,o,a=t.pstyle("text-halign"),M=t.pstyle("text-valign"),s=Rn(n,"labelWidth",C),l=Rn(n,"labelHeight",C),d=Rn(n,"labelX",C),u=Rn(n,"labelY",C),A=t.pstyle(i+"text-margin-x").pfValue,c=t.pstyle(i+"text-margin-y").pfValue,h=t.isEdge(),m=t.pstyle(i+"text-rotation"),f=t.pstyle("text-outline-width").pfValue,p=t.pstyle("text-border-width").pfValue/2,g=t.pstyle("text-background-padding").pfValue,v=l,y=s,Z=y/2,S=v/2;if(h)V=d-Z,r=d+Z,L=u-S,o=u+S;else{switch(a.value){case"left":V=d-y,r=d;break;case"center":V=d-Z,r=d+Z;break;case"right":V=d,r=d+y}switch(M.value){case"top":L=u-v,o=u;break;case"center":L=u-S,o=u+S;break;case"bottom":L=u,o=u+v}}V+=A-Math.max(f,p)-g-2,r+=A+Math.max(f,p)+g+2,L+=c-Math.max(f,p)-g-2,o+=c+Math.max(f,p)+g+2;var b=C||"main",w=H.labelBounds,x=w[b]=w[b]||{};x.x1=V,x.y1=L,x.x2=r,x.y2=o,x.w=r-V,x.h=o-L;var O=h&&"autorotate"===m.strValue,k=null!=m.pfValue&&0!==m.pfValue;if(O||k){var E=O?Rn(H.rstyle,"labelAngle",C):m.pfValue,P=Math.cos(E),T=Math.sin(E),_=(V+r)/2,B=(L+o)/2;if(!h){switch(a.value){case"left":_=r;break;case"right":_=V}switch(M.value){case"top":B=o;break;case"bottom":B=L}}var D=function(e,t){return{x:(e-=_)*P-(t-=B)*T+_,y:e*T+t*P+B}},N=D(V,L),R=D(V,o),F=D(r,L),I=D(r,o);V=Math.min(N.x,R.x,F.x,I.x),r=Math.max(N.x,R.x,F.x,I.x),L=Math.min(N.y,R.y,F.y,I.y),o=Math.max(N.y,R.y,F.y,I.y)}var z=b+"Rot",j=w[z]=w[z]||{};j.x1=V,j.y1=L,j.x2=r,j.y2=o,j.w=r-V,j.h=o-L,Dn(e,V,L,r,o),Dn(H.labelBounds.all,V,L,r,o)}return e}},zn=function(e){var t=0,C=function(e){return(e?1:0)<(i=S[1].x)){var b=C;C=i,i=b}if(H>(n=S[1].y)){var w=H;H=n,n=w}Dn(s,C-p,H-p,i+p,n+p)}}else if("bezier"===Z||"unbundled-bezier"===Z||"segments"===Z||"taxi"===Z){var x;switch(Z){case"bezier":case"unbundled-bezier":x=A.bezierPts;break;case"segments":case"taxi":x=A.linePts}if(null!=x)for(var O=0;O(i=P.x)){var T=C;C=i,i=T}if((H=E.y)>(n=P.y)){var _=H;H=n,n=_}Dn(s,C-=p,H-=p,i+=p,n+=p)}if(a&&t.includeEdges&&u&&(Fn(s,e,"mid-source"),Fn(s,e,"mid-target"),Fn(s,e,"source"),Fn(s,e,"target")),a&&"yes"===e.pstyle("ghost").value){var B=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue;Dn(s,s.x1+B,s.y1+D,s.x2+B,s.y2+D)}var N=l.bodyBounds=l.bodyBounds||{};FC(N,s),RC(N,c),NC(N,1),a&&(C=s.x1,i=s.x2,H=s.y1,n=s.y2,Dn(s,C-f,H-f,i+f,n+f));var R=l.overlayBounds=l.overlayBounds||{};FC(R,s),RC(R,c),NC(R,1);var F=l.labelBounds=l.labelBounds||{};null!=F.all?((L=F.all).x1=1/0,L.y1=1/0,L.x2=-1/0,L.y2=-1/0,L.w=0,L.h=0):F.all=BC(),a&&t.includeLabels&&(t.includeMainLabels&&In(s,e,null),u&&(t.includeSourceLabels&&In(s,e,"source"),t.includeTargetLabels&&In(s,e,"target")))}return s.x1=Bn(s.x1),s.y1=Bn(s.y1),s.x2=Bn(s.x2),s.y2=Bn(s.y2),s.w=Bn(s.x2-s.x1),s.h=Bn(s.y2-s.y1),s.w>0&&s.h>0&&m&&(RC(s,c),NC(s,1)),s}(e,Wn),i.bbCache=C,i.bbCachePosKey=V):C=i.bbCache,!n){var a=e.isNode();C=BC(),(t.includeNodes&&a||t.includeEdges&&!a)&&(t.includeOverlays?Nn(C,i.overlayBounds):Nn(C,i.bodyBounds)),t.includeLabels&&(t.includeMainLabels&&(!H||t.includeSourceLabels&&t.includeTargetLabels)?Nn(C,i.labelBounds.all):(t.includeMainLabels&&Nn(C,i.labelBounds.mainRot),t.includeSourceLabels&&Nn(C,i.labelBounds.sourceRot),t.includeTargetLabels&&Nn(C,i.labelBounds.targetRot))),C.w=C.x2-C.x1,C.h=C.y2-C.y1}return C},Wn={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,useCache:!0},$n=zn(Wn),Un=eC(Wn);Tn.boundingBox=function(e){var t;if(1!==this.length||null==this[0]._private.bbCache||this[0]._private.styleDirty||void 0!==e&&void 0!==e.useCache&&!0!==e.useCache){t=BC();var C=Un(e=e||Wn),i=this;if(i.cy().styleEnabled())for(var H=0;H0&&void 0!==arguments[0]?arguments[0]:LV,t=arguments.length>1?arguments[1]:void 0,C=0;C=0;r--)V(r);return this},aV.removeAllListeners=function(){return this.removeListener("*")},aV.emit=aV.trigger=function(e,t,C){var i=this.listeners,H=i.length;return this.emitting++,Ct(t)||(t=[t]),lV(this,(function(e,n){null!=C&&(i=[{event:n.event,type:n.type,namespace:n.namespace,callback:C}],H=i.length);for(var V=function(C){var H=i[C];if(H.type===n.type&&(!H.namespace||H.namespace===n.namespace||".*"===H.namespace)&&e.eventMatches(e.context,H,n)){var V=[n];null!=t&&function(e,t){for(var C=0;C1&&!i){var H=this.length-1,n=this[H],V=n._private.data.id;this[H]=void 0,this[e]=n,C.set(V,{ele:n,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,C=e._private.data.id,i=t.map.get(C);if(!i)return this;var H=i.index;return this.unmergeAt(H),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&et(e)){var C=e;e=t.mutableElements().filter(C)}for(var i=0;i=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var C=[],i=this,H=0;Hi&&(i=r,C=V)}return{value:i,ele:C}},min:function(e,t){for(var C,i=1/0,H=this,n=0;n=0&&H1&&void 0!==arguments[1])||arguments[1],C=this[0],i=C.cy();if(i.styleEnabled()&&C){this.cleanStyle();var H=C._private.style[e];return null!=H?H:t?i.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var C=t.pstyle(e);return void 0!==C.pfValue?C.pfValue:C.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var C=this[0];return C?t.style().getRenderedStyle(C,e):void 0},style:function(e,t){var C=this.cy();if(!C.styleEnabled())return this;var i=C.style();if(it(e)){var H=e;i.applyBypass(this,H,false),this.emitAndNotify("style")}else if(et(e)){if(void 0===t){var n=this[0];return n?i.getStylePropertyValue(n,e):void 0}i.applyBypass(this,e,t,false),this.emitAndNotify("style")}else if(void 0===e){var V=this[0];return V?i.getRawStyle(V):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var C=t.style(),i=this;if(void 0===e)for(var H=0;H0&&t.push(a[0]),t.push(r[0])}return this.spawn(t,!0).filter(e)}),"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),NV.neighbourhood=NV.neighborhood,NV.closedNeighbourhood=NV.closedNeighborhood,NV.openNeighbourhood=NV.openNeighborhood,ft(NV,{source:mn((function(e){var t,C=this[0];return C&&(t=C._private.source||C.cy().collection()),t&&e?t.filter(e):t}),"source"),target:mn((function(e){var t,C=this[0];return C&&(t=C._private.target||C.cy().collection()),t&&e?t.filter(e):t}),"target"),sources:zV({attr:"source"}),targets:zV({attr:"target"})}),ft(NV,{edgesWith:mn(jV(),"edgesWith"),edgesTo:mn(jV({thisIsSrc:!0}),"edgesTo")}),ft(NV,{connectedEdges:mn((function(e){for(var t=[],C=0;C0);return n},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),NV.componentsOf=NV.components;var WV=function(e,t){var C=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0!==e){var i=new nC,H=!1;if(t){if(t.length>0&&it(t[0])&&!rt(t[0])){H=!0;for(var n=[],V=new rC,r=0,L=t.length;r0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],H=this,n=H.cy(),V=n._private,r=[],L=[],o=0,a=H.length;o0){for(var _=e.length===H.length?H:new WV(n,e),B=0;B<_.length;B++){var D=_[B];D.isNode()||(D.parallelEdges().clearTraversalCache(),D.source().clearTraversalCache(),D.target().clearTraversalCache())}(V.hasCompoundNodes?n.collection().merge(_).merge(_.connectedNodes()).merge(_.parent()):_).dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(C),C?_.emitAndNotify("add"):i&&_.emit("add")}return H},$V.removed=function(){var e=this[0];return e&&e._private.removed},$V.inside=function(){var e=this[0];return e&&!e._private.removed},$V.remove=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],C=this,i=[],H={},n=C._private.cy;function V(e){for(var t=e._private.edges,C=0;C0&&(e?b.emitAndNotify("remove"):t&&b.emit("remove"));for(var w=0;w 0; + } + }; + }, + // animated + clearQueue: function clearQueue() { + return function clearQueueImpl() { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + for (var i = 0; i < all.length; i++) { + var ele = all[i]; + ele._private.animation.queue = []; + } + + return this; + }; + }, + // clearQueue + delay: function delay() { + return function delayImpl(time, complete) { + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + return this.animate({ + delay: time, + duration: time, + complete: complete + }); + }; + }, + // delay + delayAnimation: function delayAnimation() { + return function delayAnimationImpl(time, complete) { + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + return this.animation({ + delay: time, + duration: time, + complete: complete + }); + }; + }, + // delay + animation: function animation() { + return function animationImpl(properties, params) { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + var isCore = !selfIsArrayLike; + var isEles = !isCore; + + if (!cy.styleEnabled()) { + return this; + } + + var style = cy.style(); + properties = extend({}, properties, params); + var propertiesEmpty = Object.keys(properties).length === 0; + + if (propertiesEmpty) { + return new Animation(all[0], properties); // nothing to animate + } + + if (properties.duration === undefined) { + properties.duration = 400; + } + + switch (properties.duration) { + case 'slow': + properties.duration = 600; + break; + + case 'fast': + properties.duration = 200; + break; + } + + if (isEles) { + properties.style = style.getPropsList(properties.style || properties.css); + properties.css = undefined; + } + + if (isEles && properties.renderedPosition != null) { + var rpos = properties.renderedPosition; + var pan = cy.pan(); + var zoom = cy.zoom(); + properties.position = renderedToModelPosition(rpos, zoom, pan); + } // override pan w/ panBy if set + + + if (isCore && properties.panBy != null) { + var panBy = properties.panBy; + var cyPan = cy.pan(); + properties.pan = { + x: cyPan.x + panBy.x, + y: cyPan.y + panBy.y + }; + } // override pan w/ center if set + + + var center = properties.center || properties.centre; + + if (isCore && center != null) { + var centerPan = cy.getCenterPan(center.eles, properties.zoom); + + if (centerPan != null) { + properties.pan = centerPan; + } + } // override pan & zoom w/ fit if set + + + if (isCore && properties.fit != null) { + var fit = properties.fit; + var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding); + + if (fitVp != null) { + properties.pan = fitVp.pan; + properties.zoom = fitVp.zoom; + } + } // override zoom (& potentially pan) w/ zoom obj if set + + + if (isCore && plainObject(properties.zoom)) { + var vp = cy.getZoomedViewport(properties.zoom); + + if (vp != null) { + if (vp.zoomed) { + properties.zoom = vp.zoom; + } + + if (vp.panned) { + properties.pan = vp.pan; + } + } else { + properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed + } + } + + return new Animation(all[0], properties); + }; + }, + // animate + animate: function animate() { + return function animateImpl(properties, params) { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + if (params) { + properties = extend({}, properties, params); + } // manually hook and run the animation + + + for (var i = 0; i < all.length; i++) { + var ele = all[i]; + var queue = ele.animated() && (properties.queue === undefined || properties.queue); + var ani = ele.animation(properties, queue ? { + queue: true + } : undefined); + ani.play(); + } + + return this; // chaining + }; + }, + // animate + stop: function stop() { + return function stopImpl(clearQueue, jumpToEnd) { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + for (var i = 0; i < all.length; i++) { + var ele = all[i]; + var _p = ele._private; + var anis = _p.animation.current; + + for (var j = 0; j < anis.length; j++) { + var ani = anis[j]; + var ani_p = ani._private; + + if (jumpToEnd) { + // next iteration of the animation loop, the animation + // will go straight to the end and be removed + ani_p.duration = 0; + } + } // clear the queue of future animations + + + if (clearQueue) { + _p.animation.queue = []; + } + + if (!jumpToEnd) { + _p.animation.current = []; + } + } // we have to notify (the animation loop doesn't do it for us on `stop`) + + + cy.notify('draw'); + return this; + }; + } // stop + +}; // define + +var define$1 = { + // access data field + data: function data(params) { + var defaults = { + field: 'data', + bindingEvent: 'data', + allowBinding: false, + allowSetting: false, + allowGetting: false, + settingEvent: 'data', + settingTriggersEvent: false, + triggerFnName: 'trigger', + immutableKeys: {}, + // key => true if immutable + updateStyle: false, + beforeGet: function beforeGet(self) {}, + beforeSet: function beforeSet(self, obj) {}, + onSet: function onSet(self) {}, + canSet: function canSet(self) { + return true; + } + }; + params = extend({}, defaults, params); + return function dataImpl(name, value) { + var p = params; + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...) + + if (string(name)) { + // set or get property + // .data('foo') + if (p.allowGetting && value === undefined) { + // get + var ret; + + if (single) { + p.beforeGet(single); + ret = single._private[p.field][name]; + } + + return ret; // .data('foo', 'bar') + } else if (p.allowSetting && value !== undefined) { + // set + var valid = !p.immutableKeys[name]; + + if (valid) { + var change = _defineProperty$1({}, name, value); + + p.beforeSet(self, change); + + for (var i = 0, l = all.length; i < l; i++) { + var ele = all[i]; + + if (p.canSet(ele)) { + ele._private[p.field][name] = value; + } + } // update mappers if asked + + + if (p.updateStyle) { + self.updateStyle(); + } // call onSet callback + + + p.onSet(self); + + if (p.settingTriggersEvent) { + self[p.triggerFnName](p.settingEvent); + } + } + } // .data({ 'foo': 'bar' }) + + } else if (p.allowSetting && plainObject(name)) { + // extend + var obj = name; + var k, v; + var keys = Object.keys(obj); + p.beforeSet(self, obj); + + for (var _i = 0; _i < keys.length; _i++) { + k = keys[_i]; + v = obj[k]; + + var _valid = !p.immutableKeys[k]; + + if (_valid) { + for (var j = 0; j < all.length; j++) { + var _ele = all[j]; + + if (p.canSet(_ele)) { + _ele._private[p.field][k] = v; + } + } + } + } // update mappers if asked + + + if (p.updateStyle) { + self.updateStyle(); + } // call onSet callback + + + p.onSet(self); + + if (p.settingTriggersEvent) { + self[p.triggerFnName](p.settingEvent); + } // .data(function(){ ... }) + + } else if (p.allowBinding && fn(name)) { + // bind to event + var fn$1 = name; + self.on(p.bindingEvent, fn$1); // .data() + } else if (p.allowGetting && name === undefined) { + // get whole object + var _ret; + + if (single) { + p.beforeGet(single); + _ret = single._private[p.field]; + } + + return _ret; + } + + return self; // maintain chainability + }; // function + }, + // data + // remove data field + removeData: function removeData(params) { + var defaults = { + field: 'data', + event: 'data', + triggerFnName: 'trigger', + triggerEvent: false, + immutableKeys: {} // key => true if immutable + + }; + params = extend({}, defaults, params); + return function removeDataImpl(names) { + var p = params; + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + // .removeData('foo bar') + + if (string(names)) { + // then get the list of keys, and delete them + var keys = names.split(/\s+/); + var l = keys.length; + + for (var i = 0; i < l; i++) { + // delete each non-empty key + var key = keys[i]; + + if (emptyString(key)) { + continue; + } + + var valid = !p.immutableKeys[key]; // not valid if immutable + + if (valid) { + for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) { + all[i_a]._private[p.field][key] = undefined; + } + } + } + + if (p.triggerEvent) { + self[p.triggerFnName](p.event); + } // .removeData() + + } else if (names === undefined) { + // then delete all keys + for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) { + var _privateFields = all[_i_a]._private[p.field]; + + var _keys = Object.keys(_privateFields); + + for (var _i2 = 0; _i2 < _keys.length; _i2++) { + var _key = _keys[_i2]; + var validKeyToDelete = !p.immutableKeys[_key]; + + if (validKeyToDelete) { + _privateFields[_key] = undefined; + } + } + } + + if (p.triggerEvent) { + self[p.triggerFnName](p.event); + } + } + + return self; // maintain chaining + }; // function + } // removeData + +}; // define + +var define$2 = { + eventAliasesOn: function eventAliasesOn(proto) { + var p = proto; + p.addListener = p.listen = p.bind = p.on; + p.unlisten = p.unbind = p.off = p.removeListener; + p.trigger = p.emit; // this is just a wrapper alias of .on() + + p.pon = p.promiseOn = function (events, selector) { + var self = this; + var args = Array.prototype.slice.call(arguments, 0); + return new Promise$1$1(function (resolve, reject) { + var callback = function callback(e) { + self.off.apply(self, offArgs); + resolve(e); + }; + + var onArgs = args.concat([callback]); + var offArgs = onArgs.concat([]); + self.on.apply(self, onArgs); + }); + }; + } +}; // define + +// use this module to cherry pick functions into your prototype +var define$3 = {}; +[define, define$1, define$2].forEach(function (m) { + extend(define$3, m); +}); + +var elesfn$d = { + animate: define$3.animate(), + animation: define$3.animation(), + animated: define$3.animated(), + clearQueue: define$3.clearQueue(), + delay: define$3.delay(), + delayAnimation: define$3.delayAnimation(), + stop: define$3.stop() +}; + +var elesfn$e = { + classes: function classes(_classes) { + var self = this; + + if (_classes === undefined) { + var ret = []; + + self[0]._private.classes.forEach(function (cls) { + return ret.push(cls); + }); + + return ret; + } else if (!array(_classes)) { + // extract classes from string + _classes = (_classes || '').match(/\S+/g) || []; + } + + var changed = []; + var classesSet = new Set$1$1(_classes); // check and update each ele + + for (var j = 0; j < self.length; j++) { + var ele = self[j]; + var _p = ele._private; + var eleClasses = _p.classes; + var changedEle = false; // check if ele has all of the passed classes + + for (var i = 0; i < _classes.length; i++) { + var cls = _classes[i]; + var eleHasClass = eleClasses.has(cls); + + if (!eleHasClass) { + changedEle = true; + break; + } + } // check if ele has classes outside of those passed + + + if (!changedEle) { + changedEle = eleClasses.size !== _classes.length; + } + + if (changedEle) { + _p.classes = classesSet; + changed.push(ele); + } + } // trigger update style on those eles that had class changes + + + if (changed.length > 0) { + this.spawn(changed).updateStyle().emit('class'); + } + + return self; + }, + addClass: function addClass(classes) { + return this.toggleClass(classes, true); + }, + hasClass: function hasClass(className) { + var ele = this[0]; + return ele != null && ele._private.classes.has(className); + }, + toggleClass: function toggleClass(classes, toggle) { + if (!array(classes)) { + // extract classes from string + classes = classes.match(/\S+/g) || []; + } + + var self = this; + var toggleUndefd = toggle === undefined; + var changed = []; // eles who had classes changed + + for (var i = 0, il = self.length; i < il; i++) { + var ele = self[i]; + var eleClasses = ele._private.classes; + var changedEle = false; + + for (var j = 0; j < classes.length; j++) { + var cls = classes[j]; + var hasClass = eleClasses.has(cls); + var changedNow = false; + + if (toggle || toggleUndefd && !hasClass) { + eleClasses.add(cls); + changedNow = true; + } else if (!toggle || toggleUndefd && hasClass) { + eleClasses["delete"](cls); + changedNow = true; + } + + if (!changedEle && changedNow) { + changed.push(ele); + changedEle = true; + } + } // for j classes + + } // for i eles + // trigger update style on those eles that had class changes + + + if (changed.length > 0) { + this.spawn(changed).updateStyle().emit('class'); + } + + return self; + }, + removeClass: function removeClass(classes) { + return this.toggleClass(classes, false); + }, + flashClass: function flashClass(classes, duration) { + var self = this; + + if (duration == null) { + duration = 250; + } else if (duration === 0) { + return self; // nothing to do really + } + + self.addClass(classes); + setTimeout(function () { + self.removeClass(classes); + }, duration); + return self; + } +}; +elesfn$e.className = elesfn$e.classNames = elesfn$e.classes; + +var tokens = { + metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]', + // chars we need to escape in let names, etc + comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=', + // binary comparison op (used in data selectors) + boolOp: '\\?|\\!|\\^', + // boolean (unary) operators (used in data selectors) + string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'", + // string literals (used in data selectors) -- doublequotes | singlequotes + number: number$1, + // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 + meta: 'degree|indegree|outdegree', + // allowed metadata fields (i.e. allowed functions to use from Collection) + separator: '\\s*,\\s*', + // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass + descendant: '\\s+', + child: '\\s+>\\s+', + subject: '\\$', + group: 'node|edge|\\*', + directedEdge: '\\s+->\\s+', + undirectedEdge: '\\s+<->\\s+' +}; +tokens.variable = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+'; // a variable name + +tokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number + +tokens.className = tokens.variable; // a class name (follows variable conventions) + +tokens.id = tokens.variable; // an element id (follows variable conventions) + +(function () { + var ops, op, i; // add @ variants to comparatorOp + + ops = tokens.comparatorOp.split('|'); + + for (i = 0; i < ops.length; i++) { + op = ops[i]; + tokens.comparatorOp += '|@' + op; + } // add ! variants to comparatorOp + + + ops = tokens.comparatorOp.split('|'); + + for (i = 0; i < ops.length; i++) { + op = ops[i]; + + if (op.indexOf('!') >= 0) { + continue; + } // skip ops that explicitly contain ! + + + if (op === '=') { + continue; + } // skip = b/c != is explicitly defined + + + tokens.comparatorOp += '|\\!' + op; + } +})(); + +/** + * Make a new query object + * + * @prop type {Type} The type enum (int) of the query + * @prop checks List of checks to make against an ele to test for a match + */ +var newQuery = function newQuery() { + return { + checks: [] + }; +}; + +/** + * A check type enum-like object. Uses integer values for fast match() lookup. + * The ordering does not matter as long as the ints are unique. + */ +var Type = { + /** E.g. node */ + GROUP: 0, + + /** A collection of elements */ + COLLECTION: 1, + + /** A filter(ele) function */ + FILTER: 2, + + /** E.g. [foo > 1] */ + DATA_COMPARE: 3, + + /** E.g. [foo] */ + DATA_EXIST: 4, + + /** E.g. [?foo] */ + DATA_BOOL: 5, + + /** E.g. [[degree > 2]] */ + META_COMPARE: 6, + + /** E.g. :selected */ + STATE: 7, + + /** E.g. #foo */ + ID: 8, + + /** E.g. .foo */ + CLASS: 9, + + /** E.g. #foo <-> #bar */ + UNDIRECTED_EDGE: 10, + + /** E.g. #foo -> #bar */ + DIRECTED_EDGE: 11, + + /** E.g. $#foo -> #bar */ + NODE_SOURCE: 12, + + /** E.g. #foo -> $#bar */ + NODE_TARGET: 13, + + /** E.g. $#foo <-> #bar */ + NODE_NEIGHBOR: 14, + + /** E.g. #foo > #bar */ + CHILD: 15, + + /** E.g. #foo #bar */ + DESCENDANT: 16, + + /** E.g. $#foo > #bar */ + PARENT: 17, + + /** E.g. $#foo #bar */ + ANCESTOR: 18, + + /** E.g. #foo > $bar > #baz */ + COMPOUND_SPLIT: 19, + + /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ + TRUE: 20 +}; + +var stateSelectors = [{ + selector: ':selected', + matches: function matches(ele) { + return ele.selected(); + } +}, { + selector: ':unselected', + matches: function matches(ele) { + return !ele.selected(); + } +}, { + selector: ':selectable', + matches: function matches(ele) { + return ele.selectable(); + } +}, { + selector: ':unselectable', + matches: function matches(ele) { + return !ele.selectable(); + } +}, { + selector: ':locked', + matches: function matches(ele) { + return ele.locked(); + } +}, { + selector: ':unlocked', + matches: function matches(ele) { + return !ele.locked(); + } +}, { + selector: ':visible', + matches: function matches(ele) { + return ele.visible(); + } +}, { + selector: ':hidden', + matches: function matches(ele) { + return !ele.visible(); + } +}, { + selector: ':transparent', + matches: function matches(ele) { + return ele.transparent(); + } +}, { + selector: ':grabbed', + matches: function matches(ele) { + return ele.grabbed(); + } +}, { + selector: ':free', + matches: function matches(ele) { + return !ele.grabbed(); + } +}, { + selector: ':removed', + matches: function matches(ele) { + return ele.removed(); + } +}, { + selector: ':inside', + matches: function matches(ele) { + return !ele.removed(); + } +}, { + selector: ':grabbable', + matches: function matches(ele) { + return ele.grabbable(); + } +}, { + selector: ':ungrabbable', + matches: function matches(ele) { + return !ele.grabbable(); + } +}, { + selector: ':animated', + matches: function matches(ele) { + return ele.animated(); + } +}, { + selector: ':unanimated', + matches: function matches(ele) { + return !ele.animated(); + } +}, { + selector: ':parent', + matches: function matches(ele) { + return ele.isParent(); + } +}, { + selector: ':childless', + matches: function matches(ele) { + return ele.isChildless(); + } +}, { + selector: ':child', + matches: function matches(ele) { + return ele.isChild(); + } +}, { + selector: ':orphan', + matches: function matches(ele) { + return ele.isOrphan(); + } +}, { + selector: ':nonorphan', + matches: function matches(ele) { + return ele.isChild(); + } +}, { + selector: ':compound', + matches: function matches(ele) { + if (ele.isNode()) { + return ele.isParent(); + } else { + return ele.source().isParent() || ele.target().isParent(); + } + } +}, { + selector: ':loop', + matches: function matches(ele) { + return ele.isLoop(); + } +}, { + selector: ':simple', + matches: function matches(ele) { + return ele.isSimple(); + } +}, { + selector: ':active', + matches: function matches(ele) { + return ele.active(); + } +}, { + selector: ':inactive', + matches: function matches(ele) { + return !ele.active(); + } +}, { + selector: ':backgrounding', + matches: function matches(ele) { + return ele.backgrounding(); + } +}, { + selector: ':nonbackgrounding', + matches: function matches(ele) { + return !ele.backgrounding(); + } +}].sort(function (a, b) { + // n.b. selectors that are starting substrings of others must have the longer ones first + return descending(a.selector, b.selector); +}); + +var lookup = function () { + var selToFn = {}; + var s; + + for (var i = 0; i < stateSelectors.length; i++) { + s = stateSelectors[i]; + selToFn[s.selector] = s.matches; + } + + return selToFn; +}(); + +var stateSelectorMatches = function stateSelectorMatches(sel, ele) { + return lookup[sel](ele); +}; +var stateSelectorRegex = '(' + stateSelectors.map(function (s) { + return s.selector; +}).join('|') + ')'; + +// so that values get compared properly in Selector.filter() + +var cleanMetaChars = function cleanMetaChars(str) { + return str.replace(new RegExp('\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) { + return $1; + }); +}; + +var replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) { + selector[selector.length - 1] = replacementQuery; +}; // NOTE: add new expression syntax here to have it recognised by the parser; +// - a query contains all adjacent (i.e. no separator in between) expressions; +// - the current query is stored in selector[i] +// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward + + +var exprs = [{ + name: 'group', + // just used for identifying when debugging + query: true, + regex: '(' + tokens.group + ')', + populate: function populate(selector, query, _ref) { + var _ref2 = _slicedToArray(_ref, 1), + group = _ref2[0]; + + query.checks.push({ + type: Type.GROUP, + value: group === '*' ? group : group + 's' + }); + } +}, { + name: 'state', + query: true, + regex: stateSelectorRegex, + populate: function populate(selector, query, _ref3) { + var _ref4 = _slicedToArray(_ref3, 1), + state = _ref4[0]; + + query.checks.push({ + type: Type.STATE, + value: state + }); + } +}, { + name: 'id', + query: true, + regex: '\\#(' + tokens.id + ')', + populate: function populate(selector, query, _ref5) { + var _ref6 = _slicedToArray(_ref5, 1), + id = _ref6[0]; + + query.checks.push({ + type: Type.ID, + value: cleanMetaChars(id) + }); + } +}, { + name: 'className', + query: true, + regex: '\\.(' + tokens.className + ')', + populate: function populate(selector, query, _ref7) { + var _ref8 = _slicedToArray(_ref7, 1), + className = _ref8[0]; + + query.checks.push({ + type: Type.CLASS, + value: cleanMetaChars(className) + }); + } +}, { + name: 'dataExists', + query: true, + regex: '\\[\\s*(' + tokens.variable + ')\\s*\\]', + populate: function populate(selector, query, _ref9) { + var _ref10 = _slicedToArray(_ref9, 1), + variable = _ref10[0]; + + query.checks.push({ + type: Type.DATA_EXIST, + field: cleanMetaChars(variable) + }); + } +}, { + name: 'dataCompare', + query: true, + regex: '\\[\\s*(' + tokens.variable + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.value + ')\\s*\\]', + populate: function populate(selector, query, _ref11) { + var _ref12 = _slicedToArray(_ref11, 3), + variable = _ref12[0], + comparatorOp = _ref12[1], + value = _ref12[2]; + + var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null; + + if (valueIsString) { + value = value.substring(1, value.length - 1); + } else { + value = parseFloat(value); + } + + query.checks.push({ + type: Type.DATA_COMPARE, + field: cleanMetaChars(variable), + operator: comparatorOp, + value: value + }); + } +}, { + name: 'dataBool', + query: true, + regex: '\\[\\s*(' + tokens.boolOp + ')\\s*(' + tokens.variable + ')\\s*\\]', + populate: function populate(selector, query, _ref13) { + var _ref14 = _slicedToArray(_ref13, 2), + boolOp = _ref14[0], + variable = _ref14[1]; + + query.checks.push({ + type: Type.DATA_BOOL, + field: cleanMetaChars(variable), + operator: boolOp + }); + } +}, { + name: 'metaCompare', + query: true, + regex: '\\[\\[\\s*(' + tokens.meta + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.number + ')\\s*\\]\\]', + populate: function populate(selector, query, _ref15) { + var _ref16 = _slicedToArray(_ref15, 3), + meta = _ref16[0], + comparatorOp = _ref16[1], + number = _ref16[2]; + + query.checks.push({ + type: Type.META_COMPARE, + field: cleanMetaChars(meta), + operator: comparatorOp, + value: parseFloat(number) + }); + } +}, { + name: 'nextQuery', + separator: true, + regex: tokens.separator, + populate: function populate(selector, query) { + var currentSubject = selector.currentSubject; + var edgeCount = selector.edgeCount; + var compoundCount = selector.compoundCount; + var lastQ = selector[selector.length - 1]; + + if (currentSubject != null) { + lastQ.subject = currentSubject; + selector.currentSubject = null; + } + + lastQ.edgeCount = edgeCount; + lastQ.compoundCount = compoundCount; + selector.edgeCount = 0; + selector.compoundCount = 0; // go on to next query + + var nextQuery = selector[selector.length++] = newQuery(); + return nextQuery; // this is the new query to be filled by the following exprs + } +}, { + name: 'directedEdge', + separator: true, + regex: tokens.directedEdge, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // undirected edge + var edgeQuery = newQuery(); + var source = query; + var target = newQuery(); + edgeQuery.checks.push({ + type: Type.DIRECTED_EDGE, + source: source, + target: target + }); // the query in the selector should be the edge rather than the source + + replaceLastQuery(selector, query, edgeQuery); + selector.edgeCount++; // we're now populating the target query with expressions that follow + + return target; + } else { + // source/target + var srcTgtQ = newQuery(); + var _source = query; + + var _target = newQuery(); + + srcTgtQ.checks.push({ + type: Type.NODE_SOURCE, + source: _source, + target: _target + }); // the query in the selector should be the neighbourhood rather than the node + + replaceLastQuery(selector, query, srcTgtQ); + selector.edgeCount++; + return _target; // now populating the target with the following expressions + } + } +}, { + name: 'undirectedEdge', + separator: true, + regex: tokens.undirectedEdge, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // undirected edge + var edgeQuery = newQuery(); + var source = query; + var target = newQuery(); + edgeQuery.checks.push({ + type: Type.UNDIRECTED_EDGE, + nodes: [source, target] + }); // the query in the selector should be the edge rather than the source + + replaceLastQuery(selector, query, edgeQuery); + selector.edgeCount++; // we're now populating the target query with expressions that follow + + return target; + } else { + // neighbourhood + var nhoodQ = newQuery(); + var node = query; + var neighbor = newQuery(); + nhoodQ.checks.push({ + type: Type.NODE_NEIGHBOR, + node: node, + neighbor: neighbor + }); // the query in the selector should be the neighbourhood rather than the node + + replaceLastQuery(selector, query, nhoodQ); + return neighbor; // now populating the neighbor with following expressions + } + } +}, { + name: 'child', + separator: true, + regex: tokens.child, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // default: child query + var parentChildQuery = newQuery(); + var child = newQuery(); + var parent = selector[selector.length - 1]; + parentChildQuery.checks.push({ + type: Type.CHILD, + parent: parent, + child: child + }); // the query in the selector should be the '>' itself + + replaceLastQuery(selector, query, parentChildQuery); + selector.compoundCount++; // we're now populating the child query with expressions that follow + + return child; + } else if (selector.currentSubject === query) { + // compound split query + var compound = newQuery(); + var left = selector[selector.length - 1]; + var right = newQuery(); + var subject = newQuery(); + + var _child = newQuery(); + + var _parent = newQuery(); // set up the root compound q + + + compound.checks.push({ + type: Type.COMPOUND_SPLIT, + left: left, + right: right, + subject: subject + }); // populate the subject and replace the q at the old spot (within left) with TRUE + + subject.checks = query.checks; // take the checks from the left + + query.checks = [{ + type: Type.TRUE + }]; // checks under left refs the subject implicitly + // set up the right q + + _parent.checks.push({ + type: Type.TRUE + }); // parent implicitly refs the subject + + + right.checks.push({ + type: Type.PARENT, + // type is swapped on right side queries + parent: _parent, + child: _child // empty for now + + }); + replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` + + selector.currentSubject = subject; + selector.compoundCount++; + return _child; // now populating the right side's child + } else { + // parent query + // info for parent query + var _parent2 = newQuery(); + + var _child2 = newQuery(); + + var pcQChecks = [{ + type: Type.PARENT, + parent: _parent2, + child: _child2 + }]; // the parent-child query takes the place of the query previously being populated + + _parent2.checks = query.checks; // the previous query contains the checks for the parent + + query.checks = pcQChecks; // pc query takes over + + selector.compoundCount++; + return _child2; // we're now populating the child + } + } +}, { + name: 'descendant', + separator: true, + regex: tokens.descendant, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // default: descendant query + var ancChQuery = newQuery(); + var descendant = newQuery(); + var ancestor = selector[selector.length - 1]; + ancChQuery.checks.push({ + type: Type.DESCENDANT, + ancestor: ancestor, + descendant: descendant + }); // the query in the selector should be the '>' itself + + replaceLastQuery(selector, query, ancChQuery); + selector.compoundCount++; // we're now populating the descendant query with expressions that follow + + return descendant; + } else if (selector.currentSubject === query) { + // compound split query + var compound = newQuery(); + var left = selector[selector.length - 1]; + var right = newQuery(); + var subject = newQuery(); + + var _descendant = newQuery(); + + var _ancestor = newQuery(); // set up the root compound q + + + compound.checks.push({ + type: Type.COMPOUND_SPLIT, + left: left, + right: right, + subject: subject + }); // populate the subject and replace the q at the old spot (within left) with TRUE + + subject.checks = query.checks; // take the checks from the left + + query.checks = [{ + type: Type.TRUE + }]; // checks under left refs the subject implicitly + // set up the right q + + _ancestor.checks.push({ + type: Type.TRUE + }); // ancestor implicitly refs the subject + + + right.checks.push({ + type: Type.ANCESTOR, + // type is swapped on right side queries + ancestor: _ancestor, + descendant: _descendant // empty for now + + }); + replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` + + selector.currentSubject = subject; + selector.compoundCount++; + return _descendant; // now populating the right side's descendant + } else { + // ancestor query + // info for parent query + var _ancestor2 = newQuery(); + + var _descendant2 = newQuery(); + + var adQChecks = [{ + type: Type.ANCESTOR, + ancestor: _ancestor2, + descendant: _descendant2 + }]; // the parent-child query takes the place of the query previously being populated + + _ancestor2.checks = query.checks; // the previous query contains the checks for the parent + + query.checks = adQChecks; // pc query takes over + + selector.compoundCount++; + return _descendant2; // we're now populating the child + } + } +}, { + name: 'subject', + modifier: true, + regex: tokens.subject, + populate: function populate(selector, query) { + if (selector.currentSubject != null && selector.currentSubject !== query) { + warn('Redefinition of subject in selector `' + selector.toString() + '`'); + return false; + } + + selector.currentSubject = query; + var topQ = selector[selector.length - 1]; + var topChk = topQ.checks[0]; + var topType = topChk == null ? null : topChk.type; + + if (topType === Type.DIRECTED_EDGE) { + // directed edge with subject on the target + // change to target node check + topChk.type = Type.NODE_TARGET; + } else if (topType === Type.UNDIRECTED_EDGE) { + // undirected edge with subject on the second node + // change to neighbor check + topChk.type = Type.NODE_NEIGHBOR; + topChk.node = topChk.nodes[1]; // second node is subject + + topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type + + topChk.nodes = null; + } + } +}]; +exprs.forEach(function (e) { + return e.regexObj = new RegExp('^' + e.regex); +}); + +/** + * Of all the expressions, find the first match in the remaining text. + * @param {string} remaining The remaining text to parse + * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }` + */ + +var consumeExpr = function consumeExpr(remaining) { + var expr; + var match; + var name; + + for (var j = 0; j < exprs.length; j++) { + var e = exprs[j]; + var n = e.name; + var m = remaining.match(e.regexObj); + + if (m != null) { + match = m; + expr = e; + name = n; + var consumed = m[0]; + remaining = remaining.substring(consumed.length); + break; // we've consumed one expr, so we can return now + } + } + + return { + expr: expr, + match: match, + name: name, + remaining: remaining + }; +}; +/** + * Consume all the leading whitespace + * @param {string} remaining The text to consume + * @returns The text with the leading whitespace removed + */ + + +var consumeWhitespace = function consumeWhitespace(remaining) { + var match = remaining.match(/^\s+/); + + if (match) { + var consumed = match[0]; + remaining = remaining.substring(consumed.length); + } + + return remaining; +}; +/** + * Parse the string and store the parsed representation in the Selector. + * @param {string} selector The selector string + * @returns `true` if the selector was successfully parsed, `false` otherwise + */ + + +var parse = function parse(selector) { + var self = this; + var remaining = self.inputText = selector; + var currentQuery = self[0] = newQuery(); + self.length = 1; + remaining = consumeWhitespace(remaining); // get rid of leading whitespace + + for (;;) { + var exprInfo = consumeExpr(remaining); + + if (exprInfo.expr == null) { + warn('The selector `' + selector + '`is invalid'); + return false; + } else { + var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery + + var ret = exprInfo.expr.populate(self, currentQuery, args); + + if (ret === false) { + return false; // exit if population failed + } else if (ret != null) { + currentQuery = ret; // change the current query to be filled if the expr specifies + } + } + + remaining = exprInfo.remaining; // we're done when there's nothing left to parse + + if (remaining.match(/^\s*$/)) { + break; + } + } + + var lastQ = self[self.length - 1]; + + if (self.currentSubject != null) { + lastQ.subject = self.currentSubject; + } + + lastQ.edgeCount = self.edgeCount; + lastQ.compoundCount = self.compoundCount; + + for (var i = 0; i < self.length; i++) { + var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations + + if (q.compoundCount > 0 && q.edgeCount > 0) { + warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector'); + return false; + } + + if (q.edgeCount > 1) { + warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors'); + return false; + } else if (q.edgeCount === 1) { + warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.'); + } + } + + return true; // success +}; +/** + * Get the selector represented as a string. This value uses default formatting, + * so things like spacing may differ from the input text passed to the constructor. + * @returns {string} The selector string + */ + + +var toString$1 = function toString() { + if (this.toStringCache != null) { + return this.toStringCache; + } + + var clean = function clean(obj) { + if (obj == null) { + return ''; + } else { + return obj; + } + }; + + var cleanVal = function cleanVal(val) { + if (string(val)) { + return '"' + val + '"'; + } else { + return clean(val); + } + }; + + var space = function space(val) { + return ' ' + val + ' '; + }; + + var checkToString = function checkToString(check, subject) { + var type = check.type, + value = check.value; + + switch (type) { + case Type.GROUP: + { + var group = clean(value); + return group.substring(0, group.length - 1); + } + + case Type.DATA_COMPARE: + { + var field = check.field, + operator = check.operator; + return '[' + field + space(clean(operator)) + cleanVal(value) + ']'; + } + + case Type.DATA_BOOL: + { + var _operator = check.operator, + _field = check.field; + return '[' + clean(_operator) + _field + ']'; + } + + case Type.DATA_EXIST: + { + var _field2 = check.field; + return '[' + _field2 + ']'; + } + + case Type.META_COMPARE: + { + var _operator2 = check.operator, + _field3 = check.field; + return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]'; + } + + case Type.STATE: + { + return value; + } + + case Type.ID: + { + return '#' + value; + } + + case Type.CLASS: + { + return '.' + value; + } + + case Type.PARENT: + case Type.CHILD: + { + return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject); + } + + case Type.ANCESTOR: + case Type.DESCENDANT: + { + return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject); + } + + case Type.COMPOUND_SPLIT: + { + var lhs = queryToString(check.left, subject); + var sub = queryToString(check.subject, subject); + var rhs = queryToString(check.right, subject); + return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs; + } + + case Type.TRUE: + { + return ''; + } + } + }; + + var queryToString = function queryToString(query, subject) { + return query.checks.reduce(function (str, chk, i) { + return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject); + }, ''); + }; + + var str = ''; + + for (var i = 0; i < this.length; i++) { + var query = this[i]; + str += queryToString(query, query.subject); + + if (this.length > 1 && i < this.length - 1) { + str += ', '; + } + } + + this.toStringCache = str; + return str; +}; +var parse$1 = { + parse: parse, + toString: toString$1 +}; + +var valCmp = function valCmp(fieldVal, operator, value) { + var matches; + var isFieldStr = string(fieldVal); + var isFieldNum = number(fieldVal); + var isValStr = string(value); + var fieldStr, valStr; + var caseInsensitive = false; + var notExpr = false; + var isIneqCmp = false; + + if (operator.indexOf('!') >= 0) { + operator = operator.replace('!', ''); + notExpr = true; + } + + if (operator.indexOf('@') >= 0) { + operator = operator.replace('@', ''); + caseInsensitive = true; + } + + if (isFieldStr || isValStr || caseInsensitive) { + fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal; + valStr = '' + value; + } // if we're doing a case insensitive comparison, then we're using a STRING comparison + // even if we're comparing numbers + + + if (caseInsensitive) { + fieldVal = fieldStr = fieldStr.toLowerCase(); + value = valStr = valStr.toLowerCase(); + } + + switch (operator) { + case '*=': + matches = fieldStr.indexOf(valStr) >= 0; + break; + + case '$=': + matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0; + break; + + case '^=': + matches = fieldStr.indexOf(valStr) === 0; + break; + + case '=': + matches = fieldVal === value; + break; + + case '>': + isIneqCmp = true; + matches = fieldVal > value; + break; + + case '>=': + isIneqCmp = true; + matches = fieldVal >= value; + break; + + case '<': + isIneqCmp = true; + matches = fieldVal < value; + break; + + case '<=': + isIneqCmp = true; + matches = fieldVal <= value; + break; + + default: + matches = false; + break; + } // apply the not op, but null vals for inequalities should always stay non-matching + + + if (notExpr && (fieldVal != null || !isIneqCmp)) { + matches = !matches; + } + + return matches; +}; +var boolCmp = function boolCmp(fieldVal, operator) { + switch (operator) { + case '?': + return fieldVal ? true : false; + + case '!': + return fieldVal ? false : true; + + case '^': + return fieldVal === undefined; + } +}; +var existCmp = function existCmp(fieldVal) { + return fieldVal !== undefined; +}; +var data = function data(ele, field) { + return ele.data(field); +}; +var meta = function meta(ele, field) { + return ele[field](); +}; + +/** A lookup of `match(check, ele)` functions by `Type` int */ + +var match = []; +/** + * Returns whether the query matches for the element + * @param query The `{ type, value, ... }` query object + * @param ele The element to compare against +*/ + +var matches = function matches(query, ele) { + return query.checks.every(function (chk) { + return match[chk.type](chk, ele); + }); +}; + +match[Type.GROUP] = function (check, ele) { + var group = check.value; + return group === '*' || group === ele.group(); +}; + +match[Type.STATE] = function (check, ele) { + var stateSelector = check.value; + return stateSelectorMatches(stateSelector, ele); +}; + +match[Type.ID] = function (check, ele) { + var id = check.value; + return ele.id() === id; +}; + +match[Type.CLASS] = function (check, ele) { + var cls = check.value; + return ele.hasClass(cls); +}; + +match[Type.META_COMPARE] = function (check, ele) { + var field = check.field, + operator = check.operator, + value = check.value; + return valCmp(meta(ele, field), operator, value); +}; + +match[Type.DATA_COMPARE] = function (check, ele) { + var field = check.field, + operator = check.operator, + value = check.value; + return valCmp(data(ele, field), operator, value); +}; + +match[Type.DATA_BOOL] = function (check, ele) { + var field = check.field, + operator = check.operator; + return boolCmp(data(ele, field), operator); +}; + +match[Type.DATA_EXIST] = function (check, ele) { + var field = check.field; + check.operator; + return existCmp(data(ele, field)); +}; + +match[Type.UNDIRECTED_EDGE] = function (check, ele) { + var qA = check.nodes[0]; + var qB = check.nodes[1]; + var src = ele.source(); + var tgt = ele.target(); + return matches(qA, src) && matches(qB, tgt) || matches(qB, src) && matches(qA, tgt); +}; + +match[Type.NODE_NEIGHBOR] = function (check, ele) { + return matches(check.node, ele) && ele.neighborhood().some(function (n) { + return n.isNode() && matches(check.neighbor, n); + }); +}; + +match[Type.DIRECTED_EDGE] = function (check, ele) { + return matches(check.source, ele.source()) && matches(check.target, ele.target()); +}; + +match[Type.NODE_SOURCE] = function (check, ele) { + return matches(check.source, ele) && ele.outgoers().some(function (n) { + return n.isNode() && matches(check.target, n); + }); +}; + +match[Type.NODE_TARGET] = function (check, ele) { + return matches(check.target, ele) && ele.incomers().some(function (n) { + return n.isNode() && matches(check.source, n); + }); +}; + +match[Type.CHILD] = function (check, ele) { + return matches(check.child, ele) && matches(check.parent, ele.parent()); +}; + +match[Type.PARENT] = function (check, ele) { + return matches(check.parent, ele) && ele.children().some(function (c) { + return matches(check.child, c); + }); +}; + +match[Type.DESCENDANT] = function (check, ele) { + return matches(check.descendant, ele) && ele.ancestors().some(function (a) { + return matches(check.ancestor, a); + }); +}; + +match[Type.ANCESTOR] = function (check, ele) { + return matches(check.ancestor, ele) && ele.descendants().some(function (d) { + return matches(check.descendant, d); + }); +}; + +match[Type.COMPOUND_SPLIT] = function (check, ele) { + return matches(check.subject, ele) && matches(check.left, ele) && matches(check.right, ele); +}; + +match[Type.TRUE] = function () { + return true; +}; + +match[Type.COLLECTION] = function (check, ele) { + var collection = check.value; + return collection.has(ele); +}; + +match[Type.FILTER] = function (check, ele) { + var filter = check.value; + return filter(ele); +}; + +var filter$2 = function filter(collection) { + var self = this; // for 1 id #foo queries, just get the element + + if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) { + return collection.getElementById(self[0].checks[0].value).collection(); + } + + var selectorFunction = function selectorFunction(element) { + for (var j = 0; j < self.length; j++) { + var query = self[j]; + + if (matches(query, element)) { + return true; + } + } + + return false; + }; + + if (self.text() == null) { + selectorFunction = function selectorFunction() { + return true; + }; + } + + return collection.filter(selectorFunction); +}; // filter +// does selector match a single element? + + +var matches$1 = function matches$1(ele) { + var self = this; + + for (var j = 0; j < self.length; j++) { + var query = self[j]; + + if (matches(query, ele)) { + return true; + } + } + + return false; +}; // matches + + +var matching = { + matches: matches$1, + filter: filter$2 +}; + +var Selector = function Selector(selector) { + this.inputText = selector; + this.currentSubject = null; + this.compoundCount = 0; + this.edgeCount = 0; + this.length = 0; + + if (selector == null || string(selector) && selector.match(/^\s*$/)) ; else if (elementOrCollection(selector)) { + this.addQuery({ + checks: [{ + type: Type.COLLECTION, + value: selector.collection() + }] + }); + } else if (fn(selector)) { + this.addQuery({ + checks: [{ + type: Type.FILTER, + value: selector + }] + }); + } else if (string(selector)) { + if (!this.parse(selector)) { + this.invalid = true; + } + } else { + error('A selector must be created from a string; found '); + } +}; + +var selfn = Selector.prototype; +[parse$1, matching].forEach(function (p) { + return extend(selfn, p); +}); + +selfn.text = function () { + return this.inputText; +}; + +selfn.size = function () { + return this.length; +}; + +selfn.eq = function (i) { + return this[i]; +}; + +selfn.sameText = function (otherSel) { + return !this.invalid && !otherSel.invalid && this.text() === otherSel.text(); +}; + +selfn.addQuery = function (q) { + this[this.length++] = q; +}; + +selfn.selector = selfn.toString; + +var elesfn$f = { + allAre: function allAre(selector) { + var selObj = new Selector(selector); + return this.every(function (ele) { + return selObj.matches(ele); + }); + }, + is: function is(selector) { + var selObj = new Selector(selector); + return this.some(function (ele) { + return selObj.matches(ele); + }); + }, + some: function some(fn, thisArg) { + for (var i = 0; i < this.length; i++) { + var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); + + if (ret) { + return true; + } + } + + return false; + }, + every: function every(fn, thisArg) { + for (var i = 0; i < this.length; i++) { + var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); + + if (!ret) { + return false; + } + } + + return true; + }, + same: function same(collection) { + // cheap collection ref check + if (this === collection) { + return true; + } + + collection = this.cy().collection(collection); + var thisLength = this.length; + var collectionLength = collection.length; // cheap length check + + if (thisLength !== collectionLength) { + return false; + } // cheap element ref check + + + if (thisLength === 1) { + return this[0] === collection[0]; + } + + return this.every(function (ele) { + return collection.hasElementWithId(ele.id()); + }); + }, + anySame: function anySame(collection) { + collection = this.cy().collection(collection); + return this.some(function (ele) { + return collection.hasElementWithId(ele.id()); + }); + }, + allAreNeighbors: function allAreNeighbors(collection) { + collection = this.cy().collection(collection); + var nhood = this.neighborhood(); + return collection.every(function (ele) { + return nhood.hasElementWithId(ele.id()); + }); + }, + contains: function contains(collection) { + collection = this.cy().collection(collection); + var self = this; + return collection.every(function (ele) { + return self.hasElementWithId(ele.id()); + }); + } +}; +elesfn$f.allAreNeighbours = elesfn$f.allAreNeighbors; +elesfn$f.has = elesfn$f.contains; +elesfn$f.equal = elesfn$f.equals = elesfn$f.same; + +var cache = function cache(fn, name) { + return function traversalCache(arg1, arg2, arg3, arg4) { + var selectorOrEles = arg1; + var eles = this; + var key; + + if (selectorOrEles == null) { + key = ''; + } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) { + key = selectorOrEles.id(); + } + + if (eles.length === 1 && key) { + var _p = eles[0]._private; + var tch = _p.traversalCache = _p.traversalCache || {}; + var ch = tch[name] = tch[name] || []; + var hash = hashString(key); + var cacheHit = ch[hash]; + + if (cacheHit) { + return cacheHit; + } else { + return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4); + } + } else { + return fn.call(eles, arg1, arg2, arg3, arg4); + } + }; +}; + +var elesfn$g = { + parent: function parent(selector) { + var parents = []; // optimisation for single ele call + + if (this.length === 1) { + var parent = this[0]._private.parent; + + if (parent) { + return parent; + } + } + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _parent = ele._private.parent; + + if (_parent) { + parents.push(_parent); + } + } + + return this.spawn(parents, true).filter(selector); + }, + parents: function parents(selector) { + var parents = []; + var eles = this.parent(); + + while (eles.nonempty()) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + parents.push(ele); + } + + eles = eles.parent(); + } + + return this.spawn(parents, true).filter(selector); + }, + commonAncestors: function commonAncestors(selector) { + var ancestors; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var parents = ele.parents(); + ancestors = ancestors || parents; + ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set + } + + return ancestors.filter(selector); + }, + orphans: function orphans(selector) { + return this.stdFilter(function (ele) { + return ele.isOrphan(); + }).filter(selector); + }, + nonorphans: function nonorphans(selector) { + return this.stdFilter(function (ele) { + return ele.isChild(); + }).filter(selector); + }, + children: cache(function (selector) { + var children = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var eleChildren = ele._private.children; + + for (var j = 0; j < eleChildren.length; j++) { + children.push(eleChildren[j]); + } + } + + return this.spawn(children, true).filter(selector); + }, 'children'), + siblings: function siblings(selector) { + return this.parent().children().not(this).filter(selector); + }, + isParent: function isParent() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.children.length !== 0; + } + }, + isChildless: function isChildless() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.children.length === 0; + } + }, + isChild: function isChild() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.parent != null; + } + }, + isOrphan: function isOrphan() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.parent == null; + } + }, + descendants: function descendants(selector) { + var elements = []; + + function add(eles) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + elements.push(ele); + + if (ele.children().nonempty()) { + add(ele.children()); + } + } + } + + add(this.children()); + return this.spawn(elements, true).filter(selector); + } +}; + +function forEachCompound(eles, fn, includeSelf, recursiveStep) { + var q = []; + var did = new Set$1$1(); + var cy = eles.cy(); + var hasCompounds = cy.hasCompoundNodes(); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (includeSelf) { + q.push(ele); + } else if (hasCompounds) { + recursiveStep(q, did, ele); + } + } + + while (q.length > 0) { + var _ele = q.shift(); + + fn(_ele); + did.add(_ele.id()); + + if (hasCompounds) { + recursiveStep(q, did, _ele); + } + } + + return eles; +} + +function addChildren(q, did, ele) { + if (ele.isParent()) { + var children = ele._private.children; + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + + if (!did.has(child.id())) { + q.push(child); + } + } + } +} // very efficient version of eles.add( eles.descendants() ).forEach() +// for internal use + + +elesfn$g.forEachDown = function (fn) { + var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + return forEachCompound(this, fn, includeSelf, addChildren); +}; + +function addParent(q, did, ele) { + if (ele.isChild()) { + var parent = ele._private.parent; + + if (!did.has(parent.id())) { + q.push(parent); + } + } +} + +elesfn$g.forEachUp = function (fn) { + var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + return forEachCompound(this, fn, includeSelf, addParent); +}; + +function addParentAndChildren(q, did, ele) { + addParent(q, did, ele); + addChildren(q, did, ele); +} + +elesfn$g.forEachUpAndDown = function (fn) { + var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + return forEachCompound(this, fn, includeSelf, addParentAndChildren); +}; // aliases + + +elesfn$g.ancestors = elesfn$g.parents; + +var fn$1, elesfn$h; +fn$1 = elesfn$h = { + data: define$3.data({ + field: 'data', + bindingEvent: 'data', + allowBinding: true, + allowSetting: true, + settingEvent: 'data', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true, + immutableKeys: { + 'id': true, + 'source': true, + 'target': true, + 'parent': true + }, + updateStyle: true + }), + removeData: define$3.removeData({ + field: 'data', + event: 'data', + triggerFnName: 'trigger', + triggerEvent: true, + immutableKeys: { + 'id': true, + 'source': true, + 'target': true, + 'parent': true + }, + updateStyle: true + }), + scratch: define$3.data({ + field: 'scratch', + bindingEvent: 'scratch', + allowBinding: true, + allowSetting: true, + settingEvent: 'scratch', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true, + updateStyle: true + }), + removeScratch: define$3.removeData({ + field: 'scratch', + event: 'scratch', + triggerFnName: 'trigger', + triggerEvent: true, + updateStyle: true + }), + rscratch: define$3.data({ + field: 'rscratch', + allowBinding: false, + allowSetting: true, + settingTriggersEvent: false, + allowGetting: true + }), + removeRscratch: define$3.removeData({ + field: 'rscratch', + triggerEvent: false + }), + id: function id() { + var ele = this[0]; + + if (ele) { + return ele._private.data.id; + } + } +}; // aliases + +fn$1.attr = fn$1.data; +fn$1.removeAttr = fn$1.removeData; +var data$1 = elesfn$h; + +var elesfn$i = {}; + +function defineDegreeFunction(callback) { + return function (includeLoops) { + var self = this; + + if (includeLoops === undefined) { + includeLoops = true; + } + + if (self.length === 0) { + return; + } + + if (self.isNode() && !self.removed()) { + var degree = 0; + var node = self[0]; + var connectedEdges = node._private.edges; + + for (var i = 0; i < connectedEdges.length; i++) { + var edge = connectedEdges[i]; + + if (!includeLoops && edge.isLoop()) { + continue; + } + + degree += callback(node, edge); + } + + return degree; + } else { + return; + } + }; +} + +extend(elesfn$i, { + degree: defineDegreeFunction(function (node, edge) { + if (edge.source().same(edge.target())) { + return 2; + } else { + return 1; + } + }), + indegree: defineDegreeFunction(function (node, edge) { + if (edge.target().same(node)) { + return 1; + } else { + return 0; + } + }), + outdegree: defineDegreeFunction(function (node, edge) { + if (edge.source().same(node)) { + return 1; + } else { + return 0; + } + }) +}); + +function defineDegreeBoundsFunction(degreeFn, callback) { + return function (includeLoops) { + var ret; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var ele = nodes[i]; + var degree = ele[degreeFn](includeLoops); + + if (degree !== undefined && (ret === undefined || callback(degree, ret))) { + ret = degree; + } + } + + return ret; + }; +} + +extend(elesfn$i, { + minDegree: defineDegreeBoundsFunction('degree', function (degree, min) { + return degree < min; + }), + maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) { + return degree > max; + }), + minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) { + return degree < min; + }), + maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) { + return degree > max; + }), + minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) { + return degree < min; + }), + maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) { + return degree > max; + }) +}); +extend(elesfn$i, { + totalDegree: function totalDegree(includeLoops) { + var total = 0; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + total += nodes[i].degree(includeLoops); + } + + return total; + } +}); + +var fn$2, elesfn$j; + +var beforePositionSet = function beforePositionSet(eles, newPos, silent) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.locked()) { + var oldPos = ele._private.position; + var delta = { + x: newPos.x != null ? newPos.x - oldPos.x : 0, + y: newPos.y != null ? newPos.y - oldPos.y : 0 + }; + + if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) { + ele.children().shift(delta, silent); + } + + ele.dirtyBoundingBoxCache(); + } + } +}; + +var positionDef = { + field: 'position', + bindingEvent: 'position', + allowBinding: true, + allowSetting: true, + settingEvent: 'position', + settingTriggersEvent: true, + triggerFnName: 'emitAndNotify', + allowGetting: true, + validKeys: ['x', 'y'], + beforeGet: function beforeGet(ele) { + ele.updateCompoundBounds(); + }, + beforeSet: function beforeSet(eles, newPos) { + beforePositionSet(eles, newPos, false); + }, + onSet: function onSet(eles) { + eles.dirtyCompoundBoundsCache(); + }, + canSet: function canSet(ele) { + return !ele.locked(); + } +}; +fn$2 = elesfn$j = { + position: define$3.data(positionDef), + // position but no notification to renderer + silentPosition: define$3.data(extend({}, positionDef, { + allowBinding: false, + allowSetting: true, + settingTriggersEvent: false, + allowGetting: false, + beforeSet: function beforeSet(eles, newPos) { + beforePositionSet(eles, newPos, true); + }, + onSet: function onSet(eles) { + eles.dirtyCompoundBoundsCache(); + } + })), + positions: function positions(pos, silent) { + if (plainObject(pos)) { + if (silent) { + this.silentPosition(pos); + } else { + this.position(pos); + } + } else if (fn(pos)) { + var _fn = pos; + var cy = this.cy(); + cy.startBatch(); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + + var _pos = void 0; + + if (_pos = _fn(ele, i)) { + if (silent) { + ele.silentPosition(_pos); + } else { + ele.position(_pos); + } + } + } + + cy.endBatch(); + } + + return this; // chaining + }, + silentPositions: function silentPositions(pos) { + return this.positions(pos, true); + }, + shift: function shift(dim, val, silent) { + var delta; + + if (plainObject(dim)) { + delta = { + x: number(dim.x) ? dim.x : 0, + y: number(dim.y) ? dim.y : 0 + }; + silent = val; + } else if (string(dim) && number(val)) { + delta = { + x: 0, + y: 0 + }; + delta[dim] = val; + } + + if (delta != null) { + var cy = this.cy(); + cy.startBatch(); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var pos = ele.position(); + var newPos = { + x: pos.x + delta.x, + y: pos.y + delta.y + }; + + if (silent) { + ele.silentPosition(newPos); + } else { + ele.position(newPos); + } + } + + cy.endBatch(); + } + + return this; + }, + silentShift: function silentShift(dim, val) { + if (plainObject(dim)) { + this.shift(dim, true); + } else if (string(dim) && number(val)) { + this.shift(dim, val, true); + } + + return this; + }, + // get/set the rendered (i.e. on screen) positon of the element + renderedPosition: function renderedPosition(dim, val) { + var ele = this[0]; + var cy = this.cy(); + var zoom = cy.zoom(); + var pan = cy.pan(); + var rpos = plainObject(dim) ? dim : undefined; + var setting = rpos !== undefined || val !== undefined && string(dim); + + if (ele && ele.isNode()) { + // must have an element and must be a node to return position + if (setting) { + for (var i = 0; i < this.length; i++) { + var _ele = this[i]; + + if (val !== undefined) { + // set one dimension + _ele.position(dim, (val - pan[dim]) / zoom); + } else if (rpos !== undefined) { + // set whole position + _ele.position(renderedToModelPosition(rpos, zoom, pan)); + } + } + } else { + // getting + var pos = ele.position(); + rpos = modelToRenderedPosition(pos, zoom, pan); + + if (dim === undefined) { + // then return the whole rendered position + return rpos; + } else { + // then return the specified dimension + return rpos[dim]; + } + } + } else if (!setting) { + return undefined; // for empty collection case + } + + return this; // chaining + }, + // get/set the position relative to the parent + relativePosition: function relativePosition(dim, val) { + var ele = this[0]; + var cy = this.cy(); + var ppos = plainObject(dim) ? dim : undefined; + var setting = ppos !== undefined || val !== undefined && string(dim); + var hasCompoundNodes = cy.hasCompoundNodes(); + + if (ele && ele.isNode()) { + // must have an element and must be a node to return position + if (setting) { + for (var i = 0; i < this.length; i++) { + var _ele2 = this[i]; + var parent = hasCompoundNodes ? _ele2.parent() : null; + var hasParent = parent && parent.length > 0; + var relativeToParent = hasParent; + + if (hasParent) { + parent = parent[0]; + } + + var origin = relativeToParent ? parent.position() : { + x: 0, + y: 0 + }; + + if (val !== undefined) { + // set one dimension + _ele2.position(dim, val + origin[dim]); + } else if (ppos !== undefined) { + // set whole position + _ele2.position({ + x: ppos.x + origin.x, + y: ppos.y + origin.y + }); + } + } + } else { + // getting + var pos = ele.position(); + + var _parent = hasCompoundNodes ? ele.parent() : null; + + var _hasParent = _parent && _parent.length > 0; + + var _relativeToParent = _hasParent; + + if (_hasParent) { + _parent = _parent[0]; + } + + var _origin = _relativeToParent ? _parent.position() : { + x: 0, + y: 0 + }; + + ppos = { + x: pos.x - _origin.x, + y: pos.y - _origin.y + }; + + if (dim === undefined) { + // then return the whole rendered position + return ppos; + } else { + // then return the specified dimension + return ppos[dim]; + } + } + } else if (!setting) { + return undefined; // for empty collection case + } + + return this; // chaining + } +}; // aliases + +fn$2.modelPosition = fn$2.point = fn$2.position; +fn$2.modelPositions = fn$2.points = fn$2.positions; +fn$2.renderedPoint = fn$2.renderedPosition; +fn$2.relativePoint = fn$2.relativePosition; +var position$1 = elesfn$j; + +var fn$3, elesfn$k; +fn$3 = elesfn$k = {}; + +elesfn$k.renderedBoundingBox = function (options) { + var bb = this.boundingBox(options); + var cy = this.cy(); + var zoom = cy.zoom(); + var pan = cy.pan(); + var x1 = bb.x1 * zoom + pan.x; + var x2 = bb.x2 * zoom + pan.x; + var y1 = bb.y1 * zoom + pan.y; + var y2 = bb.y2 * zoom + pan.y; + return { + x1: x1, + x2: x2, + y1: y1, + y2: y2, + w: x2 - x1, + h: y2 - y1 + }; +}; + +elesfn$k.dirtyCompoundBoundsCache = function () { + var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var cy = this.cy(); + + if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { + return this; + } + + this.forEachUp(function (ele) { + if (ele.isParent()) { + var _p = ele._private; + _p.compoundBoundsClean = false; + _p.bbCache = null; + + if (!silent) { + ele.emitAndNotify('bounds'); + } + } + }); + return this; +}; + +elesfn$k.updateCompoundBounds = function () { + var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled + + if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { + return this; + } // save cycles when batching -- but bounds will be stale (or not exist yet) + + + if (!force && cy.batching()) { + return this; + } + + function update(parent) { + if (!parent.isParent()) { + return; + } + + var _p = parent._private; + var children = parent.children(); + var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include'; + var min = { + width: { + val: parent.pstyle('min-width').pfValue, + left: parent.pstyle('min-width-bias-left'), + right: parent.pstyle('min-width-bias-right') + }, + height: { + val: parent.pstyle('min-height').pfValue, + top: parent.pstyle('min-height-bias-top'), + bottom: parent.pstyle('min-height-bias-bottom') + } + }; + var bb = children.boundingBox({ + includeLabels: includeLabels, + includeOverlays: false, + // updating the compound bounds happens outside of the regular + // cache cycle (i.e. before fired events) + useCache: false + }); + var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h + + if (bb.w === 0 || bb.h === 0) { + bb = { + w: parent.pstyle('width').pfValue, + h: parent.pstyle('height').pfValue + }; + bb.x1 = pos.x - bb.w / 2; + bb.x2 = pos.x + bb.w / 2; + bb.y1 = pos.y - bb.h / 2; + bb.y2 = pos.y + bb.h / 2; + } + + function computeBiasValues(propDiff, propBias, propBiasComplement) { + var biasDiff = 0; + var biasComplementDiff = 0; + var biasTotal = propBias + propBiasComplement; + + if (propDiff > 0 && biasTotal > 0) { + biasDiff = propBias / biasTotal * propDiff; + biasComplementDiff = propBiasComplement / biasTotal * propDiff; + } + + return { + biasDiff: biasDiff, + biasComplementDiff: biasComplementDiff + }; + } + + function computePaddingValues(width, height, paddingObject, relativeTo) { + // Assuming percentage is number from 0 to 1 + if (paddingObject.units === '%') { + switch (relativeTo) { + case 'width': + return width > 0 ? paddingObject.pfValue * width : 0; + + case 'height': + return height > 0 ? paddingObject.pfValue * height : 0; + + case 'average': + return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0; + + case 'min': + return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0; + + case 'max': + return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0; + + default: + return 0; + } + } else if (paddingObject.units === 'px') { + return paddingObject.pfValue; + } else { + return 0; + } + } + + var leftVal = min.width.left.value; + + if (min.width.left.units === 'px' && min.width.val > 0) { + leftVal = leftVal * 100 / min.width.val; + } + + var rightVal = min.width.right.value; + + if (min.width.right.units === 'px' && min.width.val > 0) { + rightVal = rightVal * 100 / min.width.val; + } + + var topVal = min.height.top.value; + + if (min.height.top.units === 'px' && min.height.val > 0) { + topVal = topVal * 100 / min.height.val; + } + + var bottomVal = min.height.bottom.value; + + if (min.height.bottom.units === 'px' && min.height.val > 0) { + bottomVal = bottomVal * 100 / min.height.val; + } + + var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal); + var diffLeft = widthBiasDiffs.biasDiff; + var diffRight = widthBiasDiffs.biasComplementDiff; + var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal); + var diffTop = heightBiasDiffs.biasDiff; + var diffBottom = heightBiasDiffs.biasComplementDiff; + _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value); + _p.autoWidth = Math.max(bb.w, min.width.val); + pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2; + _p.autoHeight = Math.max(bb.h, min.height.val); + pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2; + } + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _p = ele._private; + + if (!_p.compoundBoundsClean || force) { + update(ele); + + if (!cy.batching()) { + _p.compoundBoundsClean = true; + } + } + } + + return this; +}; + +var noninf = function noninf(x) { + if (x === Infinity || x === -Infinity) { + return 0; + } + + return x; +}; + +var updateBounds = function updateBounds(b, x1, y1, x2, y2) { + // don't update with zero area boxes + if (x2 - x1 === 0 || y2 - y1 === 0) { + return; + } // don't update with null dim + + + if (x1 == null || y1 == null || x2 == null || y2 == null) { + return; + } + + b.x1 = x1 < b.x1 ? x1 : b.x1; + b.x2 = x2 > b.x2 ? x2 : b.x2; + b.y1 = y1 < b.y1 ? y1 : b.y1; + b.y2 = y2 > b.y2 ? y2 : b.y2; + b.w = b.x2 - b.x1; + b.h = b.y2 - b.y1; +}; + +var updateBoundsFromBox = function updateBoundsFromBox(b, b2) { + if (b2 == null) { + return b; + } + + return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2); +}; + +var prefixedProperty = function prefixedProperty(obj, field, prefix) { + return getPrefixedProperty(obj, field, prefix); +}; + +var updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) { + if (ele.cy().headless()) { + return; + } + + var _p = ele._private; + var rstyle = _p.rstyle; + var halfArW = rstyle.arrowWidth / 2; + var arrowType = ele.pstyle(prefix + '-arrow-shape').value; + var x; + var y; + + if (arrowType !== 'none') { + if (prefix === 'source') { + x = rstyle.srcX; + y = rstyle.srcY; + } else if (prefix === 'target') { + x = rstyle.tgtX; + y = rstyle.tgtY; + } else { + x = rstyle.midX; + y = rstyle.midY; + } // always store the individual arrow bounds + + + var bbs = _p.arrowBounds = _p.arrowBounds || {}; + var bb = bbs[prefix] = bbs[prefix] || {}; + bb.x1 = x - halfArW; + bb.y1 = y - halfArW; + bb.x2 = x + halfArW; + bb.y2 = y + halfArW; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + expandBoundingBox(bb, 1); + updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2); + } +}; + +var updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) { + if (ele.cy().headless()) { + return; + } + + var prefixDash; + + if (prefix) { + prefixDash = prefix + '-'; + } else { + prefixDash = ''; + } + + var _p = ele._private; + var rstyle = _p.rstyle; + var label = ele.pstyle(prefixDash + 'label').strValue; + + if (label) { + var halign = ele.pstyle('text-halign'); + var valign = ele.pstyle('text-valign'); + var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix); + var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix); + var labelX = prefixedProperty(rstyle, 'labelX', prefix); + var labelY = prefixedProperty(rstyle, 'labelY', prefix); + var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue; + var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue; + var isEdge = ele.isEdge(); + var rotation = ele.pstyle(prefixDash + 'text-rotation'); + var outlineWidth = ele.pstyle('text-outline-width').pfValue; + var borderWidth = ele.pstyle('text-border-width').pfValue; + var halfBorderWidth = borderWidth / 2; + var padding = ele.pstyle('text-background-padding').pfValue; + var marginOfError = 2; // expand to work around browser dimension inaccuracies + + var lh = labelHeight; + var lw = labelWidth; + var lw_2 = lw / 2; + var lh_2 = lh / 2; + var lx1, lx2, ly1, ly2; + + if (isEdge) { + lx1 = labelX - lw_2; + lx2 = labelX + lw_2; + ly1 = labelY - lh_2; + ly2 = labelY + lh_2; + } else { + switch (halign.value) { + case 'left': + lx1 = labelX - lw; + lx2 = labelX; + break; + + case 'center': + lx1 = labelX - lw_2; + lx2 = labelX + lw_2; + break; + + case 'right': + lx1 = labelX; + lx2 = labelX + lw; + break; + } + + switch (valign.value) { + case 'top': + ly1 = labelY - lh; + ly2 = labelY; + break; + + case 'center': + ly1 = labelY - lh_2; + ly2 = labelY + lh_2; + break; + + case 'bottom': + ly1 = labelY; + ly2 = labelY + lh; + break; + } + } // shift by margin and expand by outline and border + + + lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError; + lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError; + ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError; + ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError; // always store the unrotated label bounds separately + + var bbPrefix = prefix || 'main'; + var bbs = _p.labelBounds; + var bb = bbs[bbPrefix] = bbs[bbPrefix] || {}; + bb.x1 = lx1; + bb.y1 = ly1; + bb.x2 = lx2; + bb.y2 = ly2; + bb.w = lx2 - lx1; + bb.h = ly2 - ly1; + var isAutorotate = isEdge && rotation.strValue === 'autorotate'; + var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0; + + if (isAutorotate || isPfValue) { + var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue; + var cos = Math.cos(theta); + var sin = Math.sin(theta); // rotation point (default value for center-center) + + var xo = (lx1 + lx2) / 2; + var yo = (ly1 + ly2) / 2; + + if (!isEdge) { + switch (halign.value) { + case 'left': + xo = lx2; + break; + + case 'right': + xo = lx1; + break; + } + + switch (valign.value) { + case 'top': + yo = ly2; + break; + + case 'bottom': + yo = ly1; + break; + } + } + + var rotate = function rotate(x, y) { + x = x - xo; + y = y - yo; + return { + x: x * cos - y * sin + xo, + y: x * sin + y * cos + yo + }; + }; + + var px1y1 = rotate(lx1, ly1); + var px1y2 = rotate(lx1, ly2); + var px2y1 = rotate(lx2, ly1); + var px2y2 = rotate(lx2, ly2); + lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x); + lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x); + ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y); + ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y); + } + + var bbPrefixRot = bbPrefix + 'Rot'; + var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {}; + bbRot.x1 = lx1; + bbRot.y1 = ly1; + bbRot.x2 = lx2; + bbRot.y2 = ly2; + bbRot.w = lx2 - lx1; + bbRot.h = ly2 - ly1; + updateBounds(bounds, lx1, ly1, lx2, ly2); + updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2); + } + + return bounds; +}; // get the bounding box of the elements (in raw model position) + + +var boundingBoxImpl = function boundingBoxImpl(ele, options) { + var cy = ele._private.cy; + var styleEnabled = cy.styleEnabled(); + var headless = cy.headless(); + var bounds = makeBoundingBox(); + var _p = ele._private; + var isNode = ele.isNode(); + var isEdge = ele.isEdge(); + var ex1, ex2, ey1, ey2; // extrema of body / lines + + var x, y; // node pos + + var rstyle = _p.rstyle; + var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0]; // must use `display` prop only, as reading `compound.width()` causes recursion + // (other factors like width values will be considered later in this function anyway) + + var isDisplayed = function isDisplayed(ele) { + return ele.pstyle('display').value !== 'none'; + }; + + var displayed = !styleEnabled || isDisplayed(ele) // must take into account connected nodes b/c of implicit edge hiding on display:none node + && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target())); + + if (displayed) { + // displayed suffices, since we will find zero area eles anyway + var overlayOpacity = 0; + var overlayPadding = 0; + + if (styleEnabled && options.includeOverlays) { + overlayOpacity = ele.pstyle('overlay-opacity').value; + + if (overlayOpacity !== 0) { + overlayPadding = ele.pstyle('overlay-padding').value; + } + } + + var w = 0; + var wHalf = 0; + + if (styleEnabled) { + w = ele.pstyle('width').pfValue; + wHalf = w / 2; + } + + if (isNode && options.includeNodes) { + var pos = ele.position(); + x = pos.x; + y = pos.y; + + var _w = ele.outerWidth(); + + var halfW = _w / 2; + var h = ele.outerHeight(); + var halfH = h / 2; // handle node dimensions + ///////////////////////// + + ex1 = x - halfW; + ex2 = x + halfW; + ey1 = y - halfH; + ey2 = y + halfH; + updateBounds(bounds, ex1, ey1, ex2, ey2); + } else if (isEdge && options.includeEdges) { + if (styleEnabled && !headless) { + var curveStyle = ele.pstyle('curve-style').strValue; // handle edge dimensions (rough box estimate) + ////////////////////////////////////////////// + + ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX); + ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX); + ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY); + ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width + + ex1 -= wHalf; + ex2 += wHalf; + ey1 -= wHalf; + ey2 += wHalf; + updateBounds(bounds, ex1, ey1, ex2, ey2); // precise edges + //////////////// + + if (curveStyle === 'haystack') { + var hpts = rstyle.haystackPts; + + if (hpts && hpts.length === 2) { + ex1 = hpts[0].x; + ey1 = hpts[0].y; + ex2 = hpts[1].x; + ey2 = hpts[1].y; + + if (ex1 > ex2) { + var temp = ex1; + ex1 = ex2; + ex2 = temp; + } + + if (ey1 > ey2) { + var _temp = ey1; + ey1 = ey2; + ey2 = _temp; + } + + updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); + } + } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') { + var pts; + + switch (curveStyle) { + case 'bezier': + case 'unbundled-bezier': + pts = rstyle.bezierPts; + break; + + case 'segments': + case 'taxi': + pts = rstyle.linePts; + break; + } + + if (pts != null) { + for (var j = 0; j < pts.length; j++) { + var pt = pts[j]; + ex1 = pt.x - wHalf; + ex2 = pt.x + wHalf; + ey1 = pt.y - wHalf; + ey2 = pt.y + wHalf; + updateBounds(bounds, ex1, ey1, ex2, ey2); + } + } + } // bezier-like or segment-like edge + + } else { + // headless or style disabled + // fallback on source and target positions + ////////////////////////////////////////// + var n1 = ele.source(); + var n1pos = n1.position(); + var n2 = ele.target(); + var n2pos = n2.position(); + ex1 = n1pos.x; + ex2 = n2pos.x; + ey1 = n1pos.y; + ey2 = n2pos.y; + + if (ex1 > ex2) { + var _temp2 = ex1; + ex1 = ex2; + ex2 = _temp2; + } + + if (ey1 > ey2) { + var _temp3 = ey1; + ey1 = ey2; + ey2 = _temp3; + } // take into account edge width + + + ex1 -= wHalf; + ex2 += wHalf; + ey1 -= wHalf; + ey2 += wHalf; + updateBounds(bounds, ex1, ey1, ex2, ey2); + } // headless or style disabled + + } // edges + // handle edge arrow size + ///////////////////////// + + + if (styleEnabled && options.includeEdges && isEdge) { + updateBoundsFromArrow(bounds, ele, 'mid-source'); + updateBoundsFromArrow(bounds, ele, 'mid-target'); + updateBoundsFromArrow(bounds, ele, 'source'); + updateBoundsFromArrow(bounds, ele, 'target'); + } // ghost + //////// + + + if (styleEnabled) { + var ghost = ele.pstyle('ghost').value === 'yes'; + + if (ghost) { + var gx = ele.pstyle('ghost-offset-x').pfValue; + var gy = ele.pstyle('ghost-offset-y').pfValue; + updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy); + } + } // always store the body bounds separately from the labels + + + var bbBody = _p.bodyBounds = _p.bodyBounds || {}; + assignBoundingBox(bbBody, bounds); + expandBoundingBoxSides(bbBody, manualExpansion); + expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies + // overlay + ////////// + + if (styleEnabled) { + ex1 = bounds.x1; + ex2 = bounds.x2; + ey1 = bounds.y1; + ey2 = bounds.y2; + updateBounds(bounds, ex1 - overlayPadding, ey1 - overlayPadding, ex2 + overlayPadding, ey2 + overlayPadding); + } // always store the body bounds separately from the labels + + + var bbOverlay = _p.overlayBounds = _p.overlayBounds || {}; + assignBoundingBox(bbOverlay, bounds); + expandBoundingBoxSides(bbOverlay, manualExpansion); + expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies + // handle label dimensions + ////////////////////////// + + var bbLabels = _p.labelBounds = _p.labelBounds || {}; + + if (bbLabels.all != null) { + clearBoundingBox(bbLabels.all); + } else { + bbLabels.all = makeBoundingBox(); + } + + if (styleEnabled && options.includeLabels) { + if (options.includeMainLabels) { + updateBoundsFromLabel(bounds, ele, null); + } + + if (isEdge) { + if (options.includeSourceLabels) { + updateBoundsFromLabel(bounds, ele, 'source'); + } + + if (options.includeTargetLabels) { + updateBoundsFromLabel(bounds, ele, 'target'); + } + } + } // style enabled for labels + + } // if displayed + + + bounds.x1 = noninf(bounds.x1); + bounds.y1 = noninf(bounds.y1); + bounds.x2 = noninf(bounds.x2); + bounds.y2 = noninf(bounds.y2); + bounds.w = noninf(bounds.x2 - bounds.x1); + bounds.h = noninf(bounds.y2 - bounds.y1); + + if (bounds.w > 0 && bounds.h > 0 && displayed) { + expandBoundingBoxSides(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides + + expandBoundingBox(bounds, 1); + } + + return bounds; +}; + +var getKey = function getKey(opts) { + var i = 0; + + var tf = function tf(val) { + return (val ? 1 : 0) << i++; + }; + + var key = 0; + key += tf(opts.incudeNodes); + key += tf(opts.includeEdges); + key += tf(opts.includeLabels); + key += tf(opts.includeMainLabels); + key += tf(opts.includeSourceLabels); + key += tf(opts.includeTargetLabels); + key += tf(opts.includeOverlays); + return key; +}; + +var getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) { + if (ele.isEdge()) { + var p1 = ele.source().position(); + var p2 = ele.target().position(); + + var r = function r(x) { + return Math.round(x); + }; + + return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]); + } else { + return 0; + } +}; + +var cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) { + var _p = ele._private; + var bb; + var isEdge = ele.isEdge(); + var key = opts == null ? defBbOptsKey : getKey(opts); + var usingDefOpts = key === defBbOptsKey; + var currPosKey = getBoundingBoxPosKey(ele); + var isPosKeySame = _p.bbCachePosKey === currPosKey; + var useCache = opts.useCache && isPosKeySame; + + var isDirty = function isDirty(ele) { + return ele._private.bbCache == null || ele._private.styleDirty; + }; + + var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target()); + + if (needRecalc) { + if (!isPosKeySame) { + ele.recalculateRenderedStyle(useCache); + } + + bb = boundingBoxImpl(ele, defBbOpts); + _p.bbCache = bb; + _p.bbCachePosKey = currPosKey; + } else { + bb = _p.bbCache; + } // not using def opts => need to build up bb from combination of sub bbs + + + if (!usingDefOpts) { + var isNode = ele.isNode(); + bb = makeBoundingBox(); + + if (opts.includeNodes && isNode || opts.includeEdges && !isNode) { + if (opts.includeOverlays) { + updateBoundsFromBox(bb, _p.overlayBounds); + } else { + updateBoundsFromBox(bb, _p.bodyBounds); + } + } + + if (opts.includeLabels) { + if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) { + updateBoundsFromBox(bb, _p.labelBounds.all); + } else { + if (opts.includeMainLabels) { + updateBoundsFromBox(bb, _p.labelBounds.mainRot); + } + + if (opts.includeSourceLabels) { + updateBoundsFromBox(bb, _p.labelBounds.sourceRot); + } + + if (opts.includeTargetLabels) { + updateBoundsFromBox(bb, _p.labelBounds.targetRot); + } + } + } + + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + } + + return bb; +}; + +var defBbOpts = { + includeNodes: true, + includeEdges: true, + includeLabels: true, + includeMainLabels: true, + includeSourceLabels: true, + includeTargetLabels: true, + includeOverlays: true, + useCache: true +}; +var defBbOptsKey = getKey(defBbOpts); +var filledBbOpts = defaults$1(defBbOpts); + +elesfn$k.boundingBox = function (options) { + var bounds; // the main usecase is ele.boundingBox() for a single element with no/def options + // specified s.t. the cache is used, so check for this case to make it faster by + // avoiding the overhead of the rest of the function + + if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (options === undefined || options.useCache === undefined || options.useCache === true)) { + if (options === undefined) { + options = defBbOpts; + } else { + options = filledBbOpts(options); + } + + bounds = cachedBoundingBoxImpl(this[0], options); + } else { + bounds = makeBoundingBox(); + options = options || defBbOpts; + var opts = filledBbOpts(options); + var eles = this; + var cy = eles.cy(); + var styleEnabled = cy.styleEnabled(); + + if (styleEnabled) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _p = ele._private; + var currPosKey = getBoundingBoxPosKey(ele); + var isPosKeySame = _p.bbCachePosKey === currPosKey; + var useCache = opts.useCache && isPosKeySame && !_p.styleDirty; + ele.recalculateRenderedStyle(useCache); + } + } + + this.updateCompoundBounds(!options.useCache); + + for (var _i = 0; _i < eles.length; _i++) { + var _ele = eles[_i]; + updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts)); + } + } + + bounds.x1 = noninf(bounds.x1); + bounds.y1 = noninf(bounds.y1); + bounds.x2 = noninf(bounds.x2); + bounds.y2 = noninf(bounds.y2); + bounds.w = noninf(bounds.x2 - bounds.x1); + bounds.h = noninf(bounds.y2 - bounds.y1); + return bounds; +}; + +elesfn$k.dirtyBoundingBoxCache = function () { + for (var i = 0; i < this.length; i++) { + var _p = this[i]._private; + _p.bbCache = null; + _p.bbCachePosKey = null; + _p.bodyBounds = null; + _p.overlayBounds = null; + _p.labelBounds.all = null; + _p.labelBounds.source = null; + _p.labelBounds.target = null; + _p.labelBounds.main = null; + _p.labelBounds.sourceRot = null; + _p.labelBounds.targetRot = null; + _p.labelBounds.mainRot = null; + _p.arrowBounds.source = null; + _p.arrowBounds.target = null; + _p.arrowBounds['mid-source'] = null; + _p.arrowBounds['mid-target'] = null; + } + + this.emitAndNotify('bounds'); + return this; +}; // private helper to get bounding box for custom node positions +// - good for perf in certain cases but currently requires dirtying the rendered style +// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer... +// - try to use for only things like discrete layouts where the node position would change anyway + + +elesfn$k.boundingBoxAt = function (fn) { + var nodes = this.nodes(); + var cy = this.cy(); + var hasCompoundNodes = cy.hasCompoundNodes(); + var parents = cy.collection(); + + if (hasCompoundNodes) { + parents = nodes.filter(function (node) { + return node.isParent(); + }); + nodes = nodes.not(parents); + } + + if (plainObject(fn)) { + var obj = fn; + + fn = function fn() { + return obj; + }; + } + + var storeOldPos = function storeOldPos(node, i) { + return node._private.bbAtOldPos = fn(node, i); + }; + + var getOldPos = function getOldPos(node) { + return node._private.bbAtOldPos; + }; + + cy.startBatch(); + nodes.forEach(storeOldPos).silentPositions(fn); + + if (hasCompoundNodes) { + parents.dirtyCompoundBoundsCache(); + parents.dirtyBoundingBoxCache(); + parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle + } + + var bb = copyBoundingBox(this.boundingBox({ + useCache: false + })); + nodes.silentPositions(getOldPos); + + if (hasCompoundNodes) { + parents.dirtyCompoundBoundsCache(); + parents.dirtyBoundingBoxCache(); + parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle + } + + cy.endBatch(); + return bb; +}; + +fn$3.boundingbox = fn$3.bb = fn$3.boundingBox; +fn$3.renderedBoundingbox = fn$3.renderedBoundingBox; +var bounds = elesfn$k; + +var fn$4, elesfn$l; +fn$4 = elesfn$l = {}; + +var defineDimFns = function defineDimFns(opts) { + opts.uppercaseName = capitalize(opts.name); + opts.autoName = 'auto' + opts.uppercaseName; + opts.labelName = 'label' + opts.uppercaseName; + opts.outerName = 'outer' + opts.uppercaseName; + opts.uppercaseOuterName = capitalize(opts.outerName); + + fn$4[opts.name] = function dimImpl() { + var ele = this[0]; + var _p = ele._private; + var cy = _p.cy; + var styleEnabled = cy._private.styleEnabled; + + if (ele) { + if (styleEnabled) { + if (ele.isParent()) { + ele.updateCompoundBounds(); + return _p[opts.autoName] || 0; + } + + var d = ele.pstyle(opts.name); + + switch (d.strValue) { + case 'label': + ele.recalculateRenderedStyle(); + return _p.rstyle[opts.labelName] || 0; + + default: + return d.pfValue; + } + } else { + return 1; + } + } + }; + + fn$4['outer' + opts.uppercaseName] = function outerDimImpl() { + var ele = this[0]; + var _p = ele._private; + var cy = _p.cy; + var styleEnabled = cy._private.styleEnabled; + + if (ele) { + if (styleEnabled) { + var dim = ele[opts.name](); + var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side + + var padding = 2 * ele.padding(); + return dim + border + padding; + } else { + return 1; + } + } + }; + + fn$4['rendered' + opts.uppercaseName] = function renderedDimImpl() { + var ele = this[0]; + + if (ele) { + var d = ele[opts.name](); + return d * this.cy().zoom(); + } + }; + + fn$4['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() { + var ele = this[0]; + + if (ele) { + var od = ele[opts.outerName](); + return od * this.cy().zoom(); + } + }; +}; + +defineDimFns({ + name: 'width' +}); +defineDimFns({ + name: 'height' +}); + +elesfn$l.padding = function () { + var ele = this[0]; + var _p = ele._private; + + if (ele.isParent()) { + ele.updateCompoundBounds(); + + if (_p.autoPadding !== undefined) { + return _p.autoPadding; + } else { + return ele.pstyle('padding').pfValue; + } + } else { + return ele.pstyle('padding').pfValue; + } +}; + +elesfn$l.paddedHeight = function () { + var ele = this[0]; + return ele.height() + 2 * ele.padding(); +}; + +elesfn$l.paddedWidth = function () { + var ele = this[0]; + return ele.width() + 2 * ele.padding(); +}; + +var widthHeight = elesfn$l; + +var ifEdge = function ifEdge(ele, getValue) { + if (ele.isEdge()) { + return getValue(ele); + } +}; + +var ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) { + if (ele.isEdge()) { + var cy = ele.cy(); + return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan()); + } +}; + +var ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) { + if (ele.isEdge()) { + var cy = ele.cy(); + var pan = cy.pan(); + var zoom = cy.zoom(); + return getPoints(ele).map(function (p) { + return modelToRenderedPosition(p, zoom, pan); + }); + } +}; + +var controlPoints = function controlPoints(ele) { + return ele.renderer().getControlPoints(ele); +}; + +var segmentPoints = function segmentPoints(ele) { + return ele.renderer().getSegmentPoints(ele); +}; + +var sourceEndpoint = function sourceEndpoint(ele) { + return ele.renderer().getSourceEndpoint(ele); +}; + +var targetEndpoint = function targetEndpoint(ele) { + return ele.renderer().getTargetEndpoint(ele); +}; + +var midpoint = function midpoint(ele) { + return ele.renderer().getEdgeMidpoint(ele); +}; + +var pts = { + controlPoints: { + get: controlPoints, + mult: true + }, + segmentPoints: { + get: segmentPoints, + mult: true + }, + sourceEndpoint: { + get: sourceEndpoint + }, + targetEndpoint: { + get: targetEndpoint + }, + midpoint: { + get: midpoint + } +}; + +var renderedName = function renderedName(name) { + return 'rendered' + name[0].toUpperCase() + name.substr(1); +}; + +var edgePoints = Object.keys(pts).reduce(function (obj, name) { + var spec = pts[name]; + var rName = renderedName(name); + + obj[name] = function () { + return ifEdge(this, spec.get); + }; + + if (spec.mult) { + obj[rName] = function () { + return ifEdgeRenderedPositions(this, spec.get); + }; + } else { + obj[rName] = function () { + return ifEdgeRenderedPosition(this, spec.get); + }; + } + + return obj; +}, {}); + +var dimensions = extend({}, position$1, bounds, widthHeight, edgePoints); + +/*! +Event object based on jQuery events, MIT license + +https://jquery.org/license/ +https://tldrlegal.com/license/mit-license +https://github.com/jquery/jquery/blob/master/src/event.js +*/ +var Event$1 = function Event(src, props) { + this.recycle(src, props); +}; + +function returnFalse() { + return false; +} + +function returnTrue() { + return true; +} // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html + + +Event$1.prototype = { + instanceString: function instanceString() { + return 'event'; + }, + recycle: function recycle(src, props) { + this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse; + + if (src != null && src.preventDefault) { + // Browser Event object + this.type = src.type; // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + + this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse; + } else if (src != null && src.type) { + // Plain object containing all event details + props = src; + } else { + // Event string + this.type = src; + } // Put explicitly provided properties onto the event object + + + if (props != null) { + // more efficient to manually copy fields we use + this.originalEvent = props.originalEvent; + this.type = props.type != null ? props.type : this.type; + this.cy = props.cy; + this.target = props.target; + this.position = props.position; + this.renderedPosition = props.renderedPosition; + this.namespace = props.namespace; + this.layout = props.layout; + } + + if (this.cy != null && this.position != null && this.renderedPosition == null) { + // create a rendered position based on the passed position + var pos = this.position; + var zoom = this.cy.zoom(); + var pan = this.cy.pan(); + this.renderedPosition = { + x: pos.x * zoom + pan.x, + y: pos.y * zoom + pan.y + }; + } // Create a timestamp if incoming event doesn't have one + + + this.timeStamp = src && src.timeStamp || Date.now(); + }, + preventDefault: function preventDefault() { + this.isDefaultPrevented = returnTrue; + var e = this.originalEvent; + + if (!e) { + return; + } // if preventDefault exists run it on the original event + + + if (e.preventDefault) { + e.preventDefault(); + } + }, + stopPropagation: function stopPropagation() { + this.isPropagationStopped = returnTrue; + var e = this.originalEvent; + + if (!e) { + return; + } // if stopPropagation exists run it on the original event + + + if (e.stopPropagation) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function stopImmediatePropagation() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +var eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; // regex for matching event strings (e.g. "click.namespace") + +var universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally + +var defaults$8 = { + qualifierCompare: function qualifierCompare(q1, q2) { + return q1 === q2; + }, + eventMatches: function eventMatches() + /*context, listener, eventObj*/ + { + return true; + }, + addEventFields: function addEventFields() + /*context, evt*/ + {}, + callbackContext: function callbackContext(context + /*, listener, eventObj*/ + ) { + return context; + }, + beforeEmit: function beforeEmit() + /* context, listener, eventObj */ + {}, + afterEmit: function afterEmit() + /* context, listener, eventObj */ + {}, + bubble: function bubble() + /*context*/ + { + return false; + }, + parent: function parent() + /*context*/ + { + return null; + }, + context: null +}; +var defaultsKeys = Object.keys(defaults$8); +var emptyOpts = {}; + +function Emitter() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts; + var context = arguments.length > 1 ? arguments[1] : undefined; + + // micro-optimisation vs Object.assign() -- reduces Element instantiation time + for (var i = 0; i < defaultsKeys.length; i++) { + var key = defaultsKeys[i]; + this[key] = opts[key] || defaults$8[key]; + } + + this.context = context || this.context; + this.listeners = []; + this.emitting = 0; +} + +var p = Emitter.prototype; + +var forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) { + if (fn(qualifier)) { + callback = qualifier; + qualifier = null; + } + + if (confOverrides) { + if (conf == null) { + conf = confOverrides; + } else { + conf = extend({}, conf, confOverrides); + } + } + + var eventList = array(events) ? events : events.split(/\s+/); + + for (var i = 0; i < eventList.length; i++) { + var evt = eventList[i]; + + if (emptyString(evt)) { + continue; + } + + var match = evt.match(eventRegex); // type[.namespace] + + if (match) { + var type = match[1]; + var namespace = match[2] ? match[2] : null; + var ret = handler(self, evt, type, namespace, qualifier, callback, conf); + + if (ret === false) { + break; + } // allow exiting early + + } + } +}; + +var makeEventObj = function makeEventObj(self, obj) { + self.addEventFields(self.context, obj); + return new Event$1(obj.type, obj); +}; + +var forEachEventObj = function forEachEventObj(self, handler, events) { + if (event(events)) { + handler(self, events); + return; + } else if (plainObject(events)) { + handler(self, makeEventObj(self, events)); + return; + } + + var eventList = array(events) ? events : events.split(/\s+/); + + for (var i = 0; i < eventList.length; i++) { + var evt = eventList[i]; + + if (emptyString(evt)) { + continue; + } + + var match = evt.match(eventRegex); // type[.namespace] + + if (match) { + var type = match[1]; + var namespace = match[2] ? match[2] : null; + var eventObj = makeEventObj(self, { + type: type, + namespace: namespace, + target: self.context + }); + handler(self, eventObj); + } + } +}; + +p.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) { + forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) { + if (fn(callback)) { + self.listeners.push({ + event: event, + // full event string + callback: callback, + // callback to run + type: type, + // the event type (e.g. 'click') + namespace: namespace, + // the event namespace (e.g. ".foo") + qualifier: qualifier, + // a restriction on whether to match this emitter + conf: conf // additional configuration + + }); + } + }, events, qualifier, callback, conf, confOverrides); + return this; +}; + +p.one = function (events, qualifier, callback, conf) { + return this.on(events, qualifier, callback, conf, { + one: true + }); +}; + +p.removeListener = p.off = function (events, qualifier, callback, conf) { + var _this = this; + + if (this.emitting !== 0) { + this.listeners = copyArray$1(this.listeners); + } + + var listeners = this.listeners; + + var _loop = function _loop(i) { + var listener = listeners[i]; + forEachEvent(_this, function (self, event, type, namespace, qualifier, callback + /*, conf*/ + ) { + if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) { + listeners.splice(i, 1); + return false; + } + }, events, qualifier, callback, conf); + }; + + for (var i = listeners.length - 1; i >= 0; i--) { + _loop(i); + } + + return this; +}; + +p.removeAllListeners = function () { + return this.removeListener('*'); +}; + +p.emit = p.trigger = function (events, extraParams, manualCallback) { + var listeners = this.listeners; + var numListenersBeforeEmit = listeners.length; + this.emitting++; + + if (!array(extraParams)) { + extraParams = [extraParams]; + } + + forEachEventObj(this, function (self, eventObj) { + if (manualCallback != null) { + listeners = [{ + event: eventObj.event, + type: eventObj.type, + namespace: eventObj.namespace, + callback: manualCallback + }]; + numListenersBeforeEmit = listeners.length; + } + + var _loop2 = function _loop2(i) { + var listener = listeners[i]; + + if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) { + var args = [eventObj]; + + if (extraParams != null) { + push(args, extraParams); + } + + self.beforeEmit(self.context, listener, eventObj); + + if (listener.conf && listener.conf.one) { + self.listeners = self.listeners.filter(function (l) { + return l !== listener; + }); + } + + var context = self.callbackContext(self.context, listener, eventObj); + var ret = listener.callback.apply(context, args); + self.afterEmit(self.context, listener, eventObj); + + if (ret === false) { + eventObj.stopPropagation(); + eventObj.preventDefault(); + } + } // if listener matches + + }; + + for (var i = 0; i < numListenersBeforeEmit; i++) { + _loop2(i); + } // for listener + + + if (self.bubble(self.context) && !eventObj.isPropagationStopped()) { + self.parent(self.context).emit(eventObj, extraParams); + } + }, events); + this.emitting--; + return this; +}; + +var emitterOptions = { + qualifierCompare: function qualifierCompare(selector1, selector2) { + if (selector1 == null || selector2 == null) { + return selector1 == null && selector2 == null; + } else { + return selector1.sameText(selector2); + } + }, + eventMatches: function eventMatches(ele, listener, eventObj) { + var selector = listener.qualifier; + + if (selector != null) { + return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + } + + return true; + }, + addEventFields: function addEventFields(ele, evt) { + evt.cy = ele.cy(); + evt.target = ele; + }, + callbackContext: function callbackContext(ele, listener, eventObj) { + return listener.qualifier != null ? eventObj.target : ele; + }, + beforeEmit: function beforeEmit(context, listener + /*, eventObj*/ + ) { + if (listener.conf && listener.conf.once) { + listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback); + } + }, + bubble: function bubble() { + return true; + }, + parent: function parent(ele) { + return ele.isChild() ? ele.parent() : ele.cy(); + } +}; + +var argSelector = function argSelector(arg) { + if (string(arg)) { + return new Selector(arg); + } else { + return arg; + } +}; + +var elesfn$m = { + createEmitter: function createEmitter() { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _p = ele._private; + + if (!_p.emitter) { + _p.emitter = new Emitter(emitterOptions, ele); + } + } + + return this; + }, + emitter: function emitter() { + return this._private.emitter; + }, + on: function on(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().on(events, argSel, callback); + } + + return this; + }, + removeListener: function removeListener(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().removeListener(events, argSel, callback); + } + + return this; + }, + removeAllListeners: function removeAllListeners() { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().removeAllListeners(); + } + + return this; + }, + one: function one(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().one(events, argSel, callback); + } + + return this; + }, + once: function once(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().on(events, argSel, callback, { + once: true, + onceCollection: this + }); + } + }, + emit: function emit(events, extraParams) { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().emit(events, extraParams); + } + + return this; + }, + emitAndNotify: function emitAndNotify(event, extraParams) { + // for internal use only + if (this.length === 0) { + return; + } // empty collections don't need to notify anything + // notify renderer + + + this.cy().notify(event, this); + this.emit(event, extraParams); + return this; + } +}; +define$3.eventAliasesOn(elesfn$m); + +var elesfn$n = { + nodes: function nodes(selector) { + return this.filter(function (ele) { + return ele.isNode(); + }).filter(selector); + }, + edges: function edges(selector) { + return this.filter(function (ele) { + return ele.isEdge(); + }).filter(selector); + }, + // internal helper to get nodes and edges as separate collections with single iteration over elements + byGroup: function byGroup() { + var nodes = this.spawn(); + var edges = this.spawn(); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + + if (ele.isNode()) { + nodes.push(ele); + } else { + edges.push(ele); + } + } + + return { + nodes: nodes, + edges: edges + }; + }, + filter: function filter(_filter, thisArg) { + if (_filter === undefined) { + // check this first b/c it's the most common/performant case + return this; + } else if (string(_filter) || elementOrCollection(_filter)) { + return new Selector(_filter).filter(this); + } else if (fn(_filter)) { + var filterEles = this.spawn(); + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles); + + if (include) { + filterEles.push(ele); + } + } + + return filterEles; + } + + return this.spawn(); // if not handled by above, give 'em an empty collection + }, + not: function not(toRemove) { + if (!toRemove) { + return this; + } else { + if (string(toRemove)) { + toRemove = this.filter(toRemove); + } + + var elements = this.spawn(); + + for (var i = 0; i < this.length; i++) { + var element = this[i]; + var remove = toRemove.has(element); + + if (!remove) { + elements.push(element); + } + } + + return elements; + } + }, + absoluteComplement: function absoluteComplement() { + var cy = this.cy(); + return cy.mutableElements().not(this); + }, + intersect: function intersect(other) { + // if a selector is specified, then filter by it instead + if (string(other)) { + var selector = other; + return this.filter(selector); + } + + var elements = this.spawn(); + var col1 = this; + var col2 = other; + var col1Smaller = this.length < other.length; + var colS = col1Smaller ? col1 : col2; + var colL = col1Smaller ? col2 : col1; + + for (var i = 0; i < colS.length; i++) { + var ele = colS[i]; + + if (colL.has(ele)) { + elements.push(ele); + } + } + + return elements; + }, + xor: function xor(other) { + var cy = this._private.cy; + + if (string(other)) { + other = cy.$(other); + } + + var elements = this.spawn(); + var col1 = this; + var col2 = other; + + var add = function add(col, other) { + for (var i = 0; i < col.length; i++) { + var ele = col[i]; + var id = ele._private.data.id; + var inOther = other.hasElementWithId(id); + + if (!inOther) { + elements.push(ele); + } + } + }; + + add(col1, col2); + add(col2, col1); + return elements; + }, + diff: function diff(other) { + var cy = this._private.cy; + + if (string(other)) { + other = cy.$(other); + } + + var left = this.spawn(); + var right = this.spawn(); + var both = this.spawn(); + var col1 = this; + var col2 = other; + + var add = function add(col, other, retEles) { + for (var i = 0; i < col.length; i++) { + var ele = col[i]; + var id = ele._private.data.id; + var inOther = other.hasElementWithId(id); + + if (inOther) { + both.merge(ele); + } else { + retEles.push(ele); + } + } + }; + + add(col1, col2, left); + add(col2, col1, right); + return { + left: left, + right: right, + both: both + }; + }, + add: function add(toAdd) { + var cy = this._private.cy; + + if (!toAdd) { + return this; + } + + if (string(toAdd)) { + var selector = toAdd; + toAdd = cy.mutableElements().filter(selector); + } + + var elements = this.spawnSelf(); + + for (var i = 0; i < toAdd.length; i++) { + var ele = toAdd[i]; + var add = !this.has(ele); + + if (add) { + elements.push(ele); + } + } + + return elements; + }, + // in place merge on calling collection + merge: function merge(toAdd) { + var _p = this._private; + var cy = _p.cy; + + if (!toAdd) { + return this; + } + + if (toAdd && string(toAdd)) { + var selector = toAdd; + toAdd = cy.mutableElements().filter(selector); + } + + var map = _p.map; + + for (var i = 0; i < toAdd.length; i++) { + var toAddEle = toAdd[i]; + var id = toAddEle._private.data.id; + var add = !map.has(id); + + if (add) { + var index = this.length++; + this[index] = toAddEle; + map.set(id, { + ele: toAddEle, + index: index + }); + } + } + + return this; // chaining + }, + unmergeAt: function unmergeAt(i) { + var ele = this[i]; + var id = ele.id(); + var _p = this._private; + var map = _p.map; // remove ele + + this[i] = undefined; + map["delete"](id); + var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection + + if (this.length > 1 && !unmergedLastEle) { + var lastEleI = this.length - 1; + var lastEle = this[lastEleI]; + var lastEleId = lastEle._private.data.id; + this[lastEleI] = undefined; + this[i] = lastEle; + map.set(lastEleId, { + ele: lastEle, + index: i + }); + } // the collection is now 1 ele smaller + + + this.length--; + return this; + }, + // remove single ele in place in calling collection + unmergeOne: function unmergeOne(ele) { + ele = ele[0]; + var _p = this._private; + var id = ele._private.data.id; + var map = _p.map; + var entry = map.get(id); + + if (!entry) { + return this; // no need to remove + } + + var i = entry.index; + this.unmergeAt(i); + return this; + }, + // remove eles in place on calling collection + unmerge: function unmerge(toRemove) { + var cy = this._private.cy; + + if (!toRemove) { + return this; + } + + if (toRemove && string(toRemove)) { + var selector = toRemove; + toRemove = cy.mutableElements().filter(selector); + } + + for (var i = 0; i < toRemove.length; i++) { + this.unmergeOne(toRemove[i]); + } + + return this; // chaining + }, + unmergeBy: function unmergeBy(toRmFn) { + for (var i = this.length - 1; i >= 0; i--) { + var ele = this[i]; + + if (toRmFn(ele)) { + this.unmergeAt(i); + } + } + + return this; + }, + map: function map(mapFn, thisArg) { + var arr = []; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles); + arr.push(ret); + } + + return arr; + }, + reduce: function reduce(fn, initialValue) { + var val = initialValue; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + val = fn(val, eles[i], i, eles); + } + + return val; + }, + max: function max(valFn, thisArg) { + var max = -Infinity; + var maxEle; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); + + if (val > max) { + max = val; + maxEle = ele; + } + } + + return { + value: max, + ele: maxEle + }; + }, + min: function min(valFn, thisArg) { + var min = Infinity; + var minEle; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); + + if (val < min) { + min = val; + minEle = ele; + } + } + + return { + value: min, + ele: minEle + }; + } +}; // aliases + +var fn$5 = elesfn$n; +fn$5['u'] = fn$5['|'] = fn$5['+'] = fn$5.union = fn$5.or = fn$5.add; +fn$5['\\'] = fn$5['!'] = fn$5['-'] = fn$5.difference = fn$5.relativeComplement = fn$5.subtract = fn$5.not; +fn$5['n'] = fn$5['&'] = fn$5['.'] = fn$5.and = fn$5.intersection = fn$5.intersect; +fn$5['^'] = fn$5['(+)'] = fn$5['(-)'] = fn$5.symmetricDifference = fn$5.symdiff = fn$5.xor; +fn$5.fnFilter = fn$5.filterFn = fn$5.stdFilter = fn$5.filter; +fn$5.complement = fn$5.abscomp = fn$5.absoluteComplement; + +var elesfn$o = { + isNode: function isNode() { + return this.group() === 'nodes'; + }, + isEdge: function isEdge() { + return this.group() === 'edges'; + }, + isLoop: function isLoop() { + return this.isEdge() && this.source()[0] === this.target()[0]; + }, + isSimple: function isSimple() { + return this.isEdge() && this.source()[0] !== this.target()[0]; + }, + group: function group() { + var ele = this[0]; + + if (ele) { + return ele._private.group; + } + } +}; + +/** + * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges), + * and z-index (low to high). These styles affect how this applies: + * + * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the + * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from + * root to leaves of the compound graph. The last drawn is `top`. + * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes. + * `manual` ignores this convention and draws based on the `z-index` value setting. + * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher + * `z-index` will be drawn on top of an element with a lower `z-index`. + */ + +var zIndexSort = function zIndexSort(a, b) { + var cy = a.cy(); + var hasCompoundNodes = cy.hasCompoundNodes(); + + function getDepth(ele) { + var style = ele.pstyle('z-compound-depth'); + + if (style.value === 'auto') { + return hasCompoundNodes ? ele.zDepth() : 0; + } else if (style.value === 'bottom') { + return -1; + } else if (style.value === 'top') { + return MAX_INT; + } // 'orphan' + + + return 0; + } + + var depthDiff = getDepth(a) - getDepth(b); + + if (depthDiff !== 0) { + return depthDiff; + } + + function getEleDepth(ele) { + var style = ele.pstyle('z-index-compare'); + + if (style.value === 'auto') { + return ele.isNode() ? 1 : 0; + } // 'manual' + + + return 0; + } + + var eleDiff = getEleDepth(a) - getEleDepth(b); + + if (eleDiff !== 0) { + return eleDiff; + } + + var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value; + + if (zDiff !== 0) { + return zDiff; + } // compare indices in the core (order added to graph w/ last on top) + + + return a.poolIndex() - b.poolIndex(); +}; + +var elesfn$p = { + forEach: function forEach(fn$1, thisArg) { + if (fn(fn$1)) { + var N = this.length; + + for (var i = 0; i < N; i++) { + var ele = this[i]; + var ret = thisArg ? fn$1.apply(thisArg, [ele, i, this]) : fn$1(ele, i, this); + + if (ret === false) { + break; + } // exit each early on return false + + } + } + + return this; + }, + toArray: function toArray() { + var array = []; + + for (var i = 0; i < this.length; i++) { + array.push(this[i]); + } + + return array; + }, + slice: function slice(start, end) { + var array = []; + var thisSize = this.length; + + if (end == null) { + end = thisSize; + } + + if (start == null) { + start = 0; + } + + if (start < 0) { + start = thisSize + start; + } + + if (end < 0) { + end = thisSize + end; + } + + for (var i = start; i >= 0 && i < end && i < thisSize; i++) { + array.push(this[i]); + } + + return this.spawn(array); + }, + size: function size() { + return this.length; + }, + eq: function eq(i) { + return this[i] || this.spawn(); + }, + first: function first() { + return this[0] || this.spawn(); + }, + last: function last() { + return this[this.length - 1] || this.spawn(); + }, + empty: function empty() { + return this.length === 0; + }, + nonempty: function nonempty() { + return !this.empty(); + }, + sort: function sort(sortFn) { + if (!fn(sortFn)) { + return this; + } + + var sorted = this.toArray().sort(sortFn); + return this.spawn(sorted); + }, + sortByZIndex: function sortByZIndex() { + return this.sort(zIndexSort); + }, + zDepth: function zDepth() { + var ele = this[0]; + + if (!ele) { + return undefined; + } // let cy = ele.cy(); + + + var _p = ele._private; + var group = _p.group; + + if (group === 'nodes') { + var depth = _p.data.parent ? ele.parents().size() : 0; + + if (!ele.isParent()) { + return MAX_INT - 1; // childless nodes always on top + } + + return depth; + } else { + var src = _p.source; + var tgt = _p.target; + var srcDepth = src.zDepth(); + var tgtDepth = tgt.zDepth(); + return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent + } + } +}; +elesfn$p.each = elesfn$p.forEach; + +var defineSymbolIterator = function defineSymbolIterator() { + var typeofUndef = "undefined" ; + var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef + + if (isIteratorSupported) { + elesfn$p[Symbol.iterator] = function () { + var _this = this; + + // eslint-disable-line no-undef + var entry = { + value: undefined, + done: false + }; + var i = 0; + var length = this.length; + return _defineProperty$1({ + next: function next() { + if (i < length) { + entry.value = _this[i++]; + } else { + entry.value = undefined; + entry.done = true; + } + + return entry; + } + }, Symbol.iterator, function () { + // eslint-disable-line no-undef + return this; + }); + }; + } +}; + +defineSymbolIterator(); + +var getLayoutDimensionOptions = defaults$1({ + nodeDimensionsIncludeLabels: false +}); +var elesfn$q = { + // Calculates and returns node dimensions { x, y } based on options given + layoutDimensions: function layoutDimensions(options) { + options = getLayoutDimensionOptions(options); + var dims; + + if (!this.takesUpSpace()) { + dims = { + w: 0, + h: 0 + }; + } else if (options.nodeDimensionsIncludeLabels) { + var bbDim = this.boundingBox(); + dims = { + w: bbDim.w, + h: bbDim.h + }; + } else { + dims = { + w: this.outerWidth(), + h: this.outerHeight() + }; + } // sanitise the dimensions for external layouts (avoid division by zero) + + + if (dims.w === 0 || dims.h === 0) { + dims.w = dims.h = 1; + } + + return dims; + }, + // using standard layout options, apply position function (w/ or w/o animation) + layoutPositions: function layoutPositions(layout, options, fn) { + var nodes = this.nodes().filter(function (n) { + return !n.isParent(); + }); + var cy = this.cy(); + var layoutEles = options.eles; // nodes & edges + + var getMemoizeKey = function getMemoizeKey(node) { + return node.id(); + }; + + var fnMem = memoize$1(fn, getMemoizeKey); // memoized version of position function + + layout.emit({ + type: 'layoutstart', + layout: layout + }); + layout.animations = []; + + var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) { + var center = { + x: nodesBb.x1 + nodesBb.w / 2, + y: nodesBb.y1 + nodesBb.h / 2 + }; + var spacingVector = { + // scale from center of bounding box (not necessarily 0,0) + x: (pos.x - center.x) * spacing, + y: (pos.y - center.y) * spacing + }; + return { + x: center.x + spacingVector.x, + y: center.y + spacingVector.y + }; + }; + + var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1; + + var spacingBb = function spacingBb() { + if (!useSpacingFactor) { + return null; + } + + var bb = makeBoundingBox(); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var pos = fnMem(node, i); + expandBoundingBoxByPoint(bb, pos.x, pos.y); + } + + return bb; + }; + + var bb = spacingBb(); + var getFinalPos = memoize$1(function (node, i) { + var newPos = fnMem(node, i); + + if (useSpacingFactor) { + var spacing = Math.abs(options.spacingFactor); + newPos = calculateSpacing(spacing, bb, newPos); + } + + if (options.transform != null) { + newPos = options.transform(node, newPos); + } + + return newPos; + }, getMemoizeKey); + + if (options.animate) { + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var newPos = getFinalPos(node, i); + var animateNode = options.animateFilter == null || options.animateFilter(node, i); + + if (animateNode) { + var ani = node.animation({ + position: newPos, + duration: options.animationDuration, + easing: options.animationEasing + }); + layout.animations.push(ani); + } else { + node.position(newPos); + } + } + + if (options.fit) { + var fitAni = cy.animation({ + fit: { + boundingBox: layoutEles.boundingBoxAt(getFinalPos), + padding: options.padding + }, + duration: options.animationDuration, + easing: options.animationEasing + }); + layout.animations.push(fitAni); + } else if (options.zoom !== undefined && options.pan !== undefined) { + var zoomPanAni = cy.animation({ + zoom: options.zoom, + pan: options.pan, + duration: options.animationDuration, + easing: options.animationEasing + }); + layout.animations.push(zoomPanAni); + } + + layout.animations.forEach(function (ani) { + return ani.play(); + }); + layout.one('layoutready', options.ready); + layout.emit({ + type: 'layoutready', + layout: layout + }); + Promise$1$1.all(layout.animations.map(function (ani) { + return ani.promise(); + })).then(function () { + layout.one('layoutstop', options.stop); + layout.emit({ + type: 'layoutstop', + layout: layout + }); + }); + } else { + nodes.positions(getFinalPos); + + if (options.fit) { + cy.fit(options.eles, options.padding); + } + + if (options.zoom != null) { + cy.zoom(options.zoom); + } + + if (options.pan) { + cy.pan(options.pan); + } + + layout.one('layoutready', options.ready); + layout.emit({ + type: 'layoutready', + layout: layout + }); + layout.one('layoutstop', options.stop); + layout.emit({ + type: 'layoutstop', + layout: layout + }); + } + + return this; // chaining + }, + layout: function layout(options) { + var cy = this.cy(); + return cy.makeLayout(extend({}, options, { + eles: this + })); + } +}; // aliases: + +elesfn$q.createLayout = elesfn$q.makeLayout = elesfn$q.layout; + +function styleCache(key, fn, ele) { + var _p = ele._private; + var cache = _p.styleCache = _p.styleCache || []; + var val; + + if ((val = cache[key]) != null) { + return val; + } else { + val = cache[key] = fn(ele); + return val; + } +} + +function cacheStyleFunction(key, fn) { + key = hashString(key); + return function cachedStyleFunction(ele) { + return styleCache(key, fn, ele); + }; +} + +function cachePrototypeStyleFunction(key, fn) { + key = hashString(key); + + var selfFn = function selfFn(ele) { + return fn.call(ele); + }; + + return function cachedPrototypeStyleFunction() { + var ele = this[0]; + + if (ele) { + return styleCache(key, selfFn, ele); + } + }; +} + +var elesfn$r = { + recalculateRenderedStyle: function recalculateRenderedStyle(useCache) { + var cy = this.cy(); + var renderer = cy.renderer(); + var styleEnabled = cy.styleEnabled(); + + if (renderer && styleEnabled) { + renderer.recalculateRenderedStyle(this, useCache); + } + + return this; + }, + dirtyStyleCache: function dirtyStyleCache() { + var cy = this.cy(); + + var dirty = function dirty(ele) { + return ele._private.styleCache = null; + }; + + if (cy.hasCompoundNodes()) { + var eles; + eles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + eles.merge(eles.connectedEdges()); + eles.forEach(dirty); + } else { + this.forEach(function (ele) { + dirty(ele); + ele.connectedEdges().forEach(dirty); + }); + } + + return this; + }, + // fully updates (recalculates) the style for the elements + updateStyle: function updateStyle(notifyRenderer) { + var cy = this._private.cy; + + if (!cy.styleEnabled()) { + return this; + } + + if (cy.batching()) { + var bEles = cy._private.batchStyleEles; + bEles.merge(this); + return this; // chaining and exit early when batching + } + + var hasCompounds = cy.hasCompoundNodes(); + var updatedEles = this; + notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false; + + if (hasCompounds) { + // then add everything up and down for compound selector checks + updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + } // let changedEles = style.apply( updatedEles ); + + + var changedEles = updatedEles; + + if (notifyRenderer) { + changedEles.emitAndNotify('style'); // let renderer know we changed style + } else { + changedEles.emit('style'); // just fire the event + } + + updatedEles.forEach(function (ele) { + return ele._private.styleDirty = true; + }); + return this; // chaining + }, + // private: clears dirty flag and recalculates style + cleanStyle: function cleanStyle() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return; + } + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + + if (ele._private.styleDirty) { + // n.b. this flag should be set before apply() to avoid potential infinite recursion + ele._private.styleDirty = false; + cy.style().apply(ele); + } + } + }, + // get the internal parsed style object for the specified property + parsedStyle: function parsedStyle(property) { + var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var ele = this[0]; + var cy = ele.cy(); + + if (!cy.styleEnabled()) { + return; + } + + if (ele) { + this.cleanStyle(); + var overriddenStyle = ele._private.style[property]; + + if (overriddenStyle != null) { + return overriddenStyle; + } else if (includeNonDefault) { + return cy.style().getDefaultProperty(property); + } else { + return null; + } + } + }, + numericStyle: function numericStyle(property) { + var ele = this[0]; + + if (!ele.cy().styleEnabled()) { + return; + } + + if (ele) { + var pstyle = ele.pstyle(property); + return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value; + } + }, + numericStyleUnits: function numericStyleUnits(property) { + var ele = this[0]; + + if (!ele.cy().styleEnabled()) { + return; + } + + if (ele) { + return ele.pstyle(property).units; + } + }, + // get the specified css property as a rendered value (i.e. on-screen value) + // or get the whole rendered style if no property specified (NB doesn't allow setting) + renderedStyle: function renderedStyle(property) { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return this; + } + + var ele = this[0]; + + if (ele) { + return cy.style().getRenderedStyle(ele, property); + } + }, + // read the calculated css style of the element or override the style (via a bypass) + style: function style(name, value) { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return this; + } + + var updateTransitions = false; + var style = cy.style(); + + if (plainObject(name)) { + // then extend the bypass + var props = name; + style.applyBypass(this, props, updateTransitions); + this.emitAndNotify('style'); // let the renderer know we've updated style + } else if (string(name)) { + if (value === undefined) { + // then get the property from the style + var ele = this[0]; + + if (ele) { + return style.getStylePropertyValue(ele, name); + } else { + // empty collection => can't get any value + return; + } + } else { + // then set the bypass with the property value + style.applyBypass(this, name, value, updateTransitions); + this.emitAndNotify('style'); // let the renderer know we've updated style + } + } else if (name === undefined) { + var _ele = this[0]; + + if (_ele) { + return style.getRawStyle(_ele); + } else { + // empty collection => can't get any value + return; + } + } + + return this; // chaining + }, + removeStyle: function removeStyle(names) { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return this; + } + + var updateTransitions = false; + var style = cy.style(); + var eles = this; + + if (names === undefined) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + style.removeAllBypasses(ele, updateTransitions); + } + } else { + names = names.split(/\s+/); + + for (var _i = 0; _i < eles.length; _i++) { + var _ele2 = eles[_i]; + style.removeBypasses(_ele2, names, updateTransitions); + } + } + + this.emitAndNotify('style'); // let the renderer know we've updated style + + return this; // chaining + }, + show: function show() { + this.css('display', 'element'); + return this; // chaining + }, + hide: function hide() { + this.css('display', 'none'); + return this; // chaining + }, + effectiveOpacity: function effectiveOpacity() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return 1; + } + + var hasCompoundNodes = cy.hasCompoundNodes(); + var ele = this[0]; + + if (ele) { + var _p = ele._private; + var parentOpacity = ele.pstyle('opacity').value; + + if (!hasCompoundNodes) { + return parentOpacity; + } + + var parents = !_p.data.parent ? null : ele.parents(); + + if (parents) { + for (var i = 0; i < parents.length; i++) { + var parent = parents[i]; + var opacity = parent.pstyle('opacity').value; + parentOpacity = opacity * parentOpacity; + } + } + + return parentOpacity; + } + }, + transparent: function transparent() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return false; + } + + var ele = this[0]; + var hasCompoundNodes = ele.cy().hasCompoundNodes(); + + if (ele) { + if (!hasCompoundNodes) { + return ele.pstyle('opacity').value === 0; + } else { + return ele.effectiveOpacity() === 0; + } + } + }, + backgrounding: function backgrounding() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return false; + } + + var ele = this[0]; + return ele._private.backgrounding ? true : false; + } +}; + +function checkCompound(ele, parentOk) { + var _p = ele._private; + var parents = _p.data.parent ? ele.parents() : null; + + if (parents) { + for (var i = 0; i < parents.length; i++) { + var parent = parents[i]; + + if (!parentOk(parent)) { + return false; + } + } + } + + return true; +} + +function defineDerivedStateFunction(specs) { + var ok = specs.ok; + var edgeOkViaNode = specs.edgeOkViaNode || specs.ok; + var parentOk = specs.parentOk || specs.ok; + return function () { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return true; + } + + var ele = this[0]; + var hasCompoundNodes = cy.hasCompoundNodes(); + + if (ele) { + var _p = ele._private; + + if (!ok(ele)) { + return false; + } + + if (ele.isNode()) { + return !hasCompoundNodes || checkCompound(ele, parentOk); + } else { + var src = _p.source; + var tgt = _p.target; + return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode))); + } + } + }; +} + +var eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) { + return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true); +}); +elesfn$r.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({ + ok: eleTakesUpSpace +})); +var eleInteractive = cacheStyleFunction('eleInteractive', function (ele) { + return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele); +}); +var parentInteractive = cacheStyleFunction('parentInteractive', function (parent) { + return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent); +}); +elesfn$r.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({ + ok: eleInteractive, + parentOk: parentInteractive, + edgeOkViaNode: eleTakesUpSpace +})); + +elesfn$r.noninteractive = function () { + var ele = this[0]; + + if (ele) { + return !ele.interactive(); + } +}; + +var eleVisible = cacheStyleFunction('eleVisible', function (ele) { + return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele); +}); +var edgeVisibleViaNode = eleTakesUpSpace; +elesfn$r.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({ + ok: eleVisible, + edgeOkViaNode: edgeVisibleViaNode +})); + +elesfn$r.hidden = function () { + var ele = this[0]; + + if (ele) { + return !ele.visible(); + } +}; + +elesfn$r.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () { + if (!this.cy().styleEnabled()) { + return false; + } + + return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace(); +}); +elesfn$r.bypass = elesfn$r.css = elesfn$r.style; +elesfn$r.renderedCss = elesfn$r.renderedStyle; +elesfn$r.removeBypass = elesfn$r.removeCss = elesfn$r.removeStyle; +elesfn$r.pstyle = elesfn$r.parsedStyle; + +var elesfn$s = {}; + +function defineSwitchFunction(params) { + return function () { + var args = arguments; + var changedEles = []; // e.g. cy.nodes().select( data, handler ) + + if (args.length === 2) { + var data = args[0]; + var handler = args[1]; + this.on(params.event, data, handler); + } // e.g. cy.nodes().select( handler ) + else if (args.length === 1 && fn(args[0])) { + var _handler = args[0]; + this.on(params.event, _handler); + } // e.g. cy.nodes().select() + // e.g. (private) cy.nodes().select(['tapselect']) + else if (args.length === 0 || args.length === 1 && array(args[0])) { + var addlEvents = args.length === 1 ? args[0] : null; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var able = !params.ableField || ele._private[params.ableField]; + var changed = ele._private[params.field] != params.value; + + if (params.overrideAble) { + var overrideAble = params.overrideAble(ele); + + if (overrideAble !== undefined) { + able = overrideAble; + + if (!overrideAble) { + return this; + } // to save cycles assume not able for all on override + + } + } + + if (able) { + ele._private[params.field] = params.value; + + if (changed) { + changedEles.push(ele); + } + } + } + + var changedColl = this.spawn(changedEles); + changedColl.updateStyle(); // change of state => possible change of style + + changedColl.emit(params.event); + + if (addlEvents) { + changedColl.emit(addlEvents); + } + } + + return this; + }; +} + +function defineSwitchSet(params) { + elesfn$s[params.field] = function () { + var ele = this[0]; + + if (ele) { + if (params.overrideField) { + var val = params.overrideField(ele); + + if (val !== undefined) { + return val; + } + } + + return ele._private[params.field]; + } + }; + + elesfn$s[params.on] = defineSwitchFunction({ + event: params.on, + field: params.field, + ableField: params.ableField, + overrideAble: params.overrideAble, + value: true + }); + elesfn$s[params.off] = defineSwitchFunction({ + event: params.off, + field: params.field, + ableField: params.ableField, + overrideAble: params.overrideAble, + value: false + }); +} + +defineSwitchSet({ + field: 'locked', + overrideField: function overrideField(ele) { + return ele.cy().autolock() ? true : undefined; + }, + on: 'lock', + off: 'unlock' +}); +defineSwitchSet({ + field: 'grabbable', + overrideField: function overrideField(ele) { + return ele.cy().autoungrabify() || ele.pannable() ? false : undefined; + }, + on: 'grabify', + off: 'ungrabify' +}); +defineSwitchSet({ + field: 'selected', + ableField: 'selectable', + overrideAble: function overrideAble(ele) { + return ele.cy().autounselectify() ? false : undefined; + }, + on: 'select', + off: 'unselect' +}); +defineSwitchSet({ + field: 'selectable', + overrideField: function overrideField(ele) { + return ele.cy().autounselectify() ? false : undefined; + }, + on: 'selectify', + off: 'unselectify' +}); +elesfn$s.deselect = elesfn$s.unselect; + +elesfn$s.grabbed = function () { + var ele = this[0]; + + if (ele) { + return ele._private.grabbed; + } +}; + +defineSwitchSet({ + field: 'active', + on: 'activate', + off: 'unactivate' +}); +defineSwitchSet({ + field: 'pannable', + on: 'panify', + off: 'unpanify' +}); + +elesfn$s.inactive = function () { + var ele = this[0]; + + if (ele) { + return !ele._private.active; + } +}; + +var elesfn$t = {}; // DAG functions +//////////////// + +var defineDagExtremity = function defineDagExtremity(params) { + return function dagExtremityImpl(selector) { + var eles = this; + var ret = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.isNode()) { + continue; + } + + var disqualified = false; + var edges = ele.connectedEdges(); + + for (var j = 0; j < edges.length; j++) { + var edge = edges[j]; + var src = edge.source(); + var tgt = edge.target(); + + if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) { + disqualified = true; + break; + } + } + + if (!disqualified) { + ret.push(ele); + } + } + + return this.spawn(ret, true).filter(selector); + }; +}; + +var defineDagOneHop = function defineDagOneHop(params) { + return function (selector) { + var eles = this; + var oEles = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.isNode()) { + continue; + } + + var edges = ele.connectedEdges(); + + for (var j = 0; j < edges.length; j++) { + var edge = edges[j]; + var src = edge.source(); + var tgt = edge.target(); + + if (params.outgoing && src === ele) { + oEles.push(edge); + oEles.push(tgt); + } else if (params.incoming && tgt === ele) { + oEles.push(edge); + oEles.push(src); + } + } + } + + return this.spawn(oEles, true).filter(selector); + }; +}; + +var defineDagAllHops = function defineDagAllHops(params) { + return function (selector) { + var eles = this; + var sEles = []; + var sElesIds = {}; + + for (;;) { + var next = params.outgoing ? eles.outgoers() : eles.incomers(); + + if (next.length === 0) { + break; + } // done if none left + + + var newNext = false; + + for (var i = 0; i < next.length; i++) { + var n = next[i]; + var nid = n.id(); + + if (!sElesIds[nid]) { + sElesIds[nid] = true; + sEles.push(n); + newNext = true; + } + } + + if (!newNext) { + break; + } // done if touched all outgoers already + + + eles = next; + } + + return this.spawn(sEles, true).filter(selector); + }; +}; + +elesfn$t.clearTraversalCache = function () { + for (var i = 0; i < this.length; i++) { + this[i]._private.traversalCache = null; + } +}; + +extend(elesfn$t, { + // get the root nodes in the DAG + roots: defineDagExtremity({ + noIncomingEdges: true + }), + // get the leaf nodes in the DAG + leaves: defineDagExtremity({ + noOutgoingEdges: true + }), + // normally called children in graph theory + // these nodes =edges=> outgoing nodes + outgoers: cache(defineDagOneHop({ + outgoing: true + }), 'outgoers'), + // aka DAG descendants + successors: defineDagAllHops({ + outgoing: true + }), + // normally called parents in graph theory + // these nodes <=edges= incoming nodes + incomers: cache(defineDagOneHop({ + incoming: true + }), 'incomers'), + // aka DAG ancestors + predecessors: defineDagAllHops({ + incoming: true + }) +}); // Neighbourhood functions +////////////////////////// + +extend(elesfn$t, { + neighborhood: cache(function (selector) { + var elements = []; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + // for all nodes + var node = nodes[i]; + var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node + + for (var j = 0; j < connectedEdges.length; j++) { + var edge = connectedEdges[j]; + var src = edge.source(); + var tgt = edge.target(); + var otherNode = node === src ? tgt : src; // need check in case of loop + + if (otherNode.length > 0) { + elements.push(otherNode[0]); // add node 1 hop away + } // add connected edge + + + elements.push(edge[0]); + } + } + + return this.spawn(elements, true).filter(selector); + }, 'neighborhood'), + closedNeighborhood: function closedNeighborhood(selector) { + return this.neighborhood().add(this).filter(selector); + }, + openNeighborhood: function openNeighborhood(selector) { + return this.neighborhood(selector); + } +}); // aliases + +elesfn$t.neighbourhood = elesfn$t.neighborhood; +elesfn$t.closedNeighbourhood = elesfn$t.closedNeighborhood; +elesfn$t.openNeighbourhood = elesfn$t.openNeighborhood; // Edge functions +///////////////// + +extend(elesfn$t, { + source: cache(function sourceImpl(selector) { + var ele = this[0]; + var src; + + if (ele) { + src = ele._private.source || ele.cy().collection(); + } + + return src && selector ? src.filter(selector) : src; + }, 'source'), + target: cache(function targetImpl(selector) { + var ele = this[0]; + var tgt; + + if (ele) { + tgt = ele._private.target || ele.cy().collection(); + } + + return tgt && selector ? tgt.filter(selector) : tgt; + }, 'target'), + sources: defineSourceFunction({ + attr: 'source' + }), + targets: defineSourceFunction({ + attr: 'target' + }) +}); + +function defineSourceFunction(params) { + return function sourceImpl(selector) { + var sources = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var src = ele._private[params.attr]; + + if (src) { + sources.push(src); + } + } + + return this.spawn(sources, true).filter(selector); + }; +} + +extend(elesfn$t, { + edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'), + edgesTo: cache(defineEdgesWithFunction({ + thisIsSrc: true + }), 'edgesTo') +}); + +function defineEdgesWithFunction(params) { + return function edgesWithImpl(otherNodes) { + var elements = []; + var cy = this._private.cy; + var p = params || {}; // get elements if a selector is specified + + if (string(otherNodes)) { + otherNodes = cy.$(otherNodes); + } + + for (var h = 0; h < otherNodes.length; h++) { + var edges = otherNodes[h]._private.edges; + + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var edgeData = edge._private.data; + var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target); + var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target); + var edgeConnectsThisAndOther = thisToOther || otherToThis; + + if (!edgeConnectsThisAndOther) { + continue; + } + + if (p.thisIsSrc || p.thisIsTgt) { + if (p.thisIsSrc && !thisToOther) { + continue; + } + + if (p.thisIsTgt && !otherToThis) { + continue; + } + } + + elements.push(edge); + } + } + + return this.spawn(elements, true); + }; +} + +extend(elesfn$t, { + connectedEdges: cache(function (selector) { + var retEles = []; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var node = eles[i]; + + if (!node.isNode()) { + continue; + } + + var edges = node._private.edges; + + for (var j = 0; j < edges.length; j++) { + var edge = edges[j]; + retEles.push(edge); + } + } + + return this.spawn(retEles, true).filter(selector); + }, 'connectedEdges'), + connectedNodes: cache(function (selector) { + var retEles = []; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var edge = eles[i]; + + if (!edge.isEdge()) { + continue; + } + + retEles.push(edge.source()[0]); + retEles.push(edge.target()[0]); + } + + return this.spawn(retEles, true).filter(selector); + }, 'connectedNodes'), + parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'), + codirectedEdges: cache(defineParallelEdgesFunction({ + codirected: true + }), 'codirectedEdges') +}); + +function defineParallelEdgesFunction(params) { + var defaults = { + codirected: false + }; + params = extend({}, defaults, params); + return function parallelEdgesImpl(selector) { + // micro-optimised for renderer + var elements = []; + var edges = this.edges(); + var p = params; // look at all the edges in the collection + + for (var i = 0; i < edges.length; i++) { + var edge1 = edges[i]; + var edge1_p = edge1._private; + var src1 = edge1_p.source; + var srcid1 = src1._private.data.id; + var tgtid1 = edge1_p.data.target; + var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge + + for (var j = 0; j < srcEdges1.length; j++) { + var edge2 = srcEdges1[j]; + var edge2data = edge2._private.data; + var tgtid2 = edge2data.target; + var srcid2 = edge2data.source; + var codirected = tgtid2 === tgtid1 && srcid2 === srcid1; + var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2; + + if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) { + elements.push(edge2); + } + } + } + + return this.spawn(elements, true).filter(selector); + }; +} // Misc functions +///////////////// + + +extend(elesfn$t, { + components: function components(root) { + var self = this; + var cy = self.cy(); + var visited = cy.collection(); + var unvisited = root == null ? self.nodes() : root.nodes(); + var components = []; + + if (root != null && unvisited.empty()) { + // root may contain only edges + unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides + } + + var visitInComponent = function visitInComponent(node, component) { + visited.merge(node); + unvisited.unmerge(node); + component.merge(node); + }; + + if (unvisited.empty()) { + return self.spawn(); + } + + var _loop = function _loop() { + // each iteration yields a component + var cmpt = cy.collection(); + components.push(cmpt); + var root = unvisited[0]; + visitInComponent(root, cmpt); + self.bfs({ + directed: false, + roots: root, + visit: function visit(v) { + return visitInComponent(v, cmpt); + } + }); + cmpt.forEach(function (node) { + node.connectedEdges().forEach(function (e) { + // connectedEdges() usually cached + if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) { + // has() is cheap + cmpt.merge(e); // forEach() only considers nodes -- sets N at call time + } + }); + }); + }; + + do { + _loop(); + } while (unvisited.length > 0); + + return components; + }, + component: function component() { + var ele = this[0]; + return ele.cy().mutableElements().components(ele)[0]; + } +}); +elesfn$t.componentsOf = elesfn$t.components; + +var Collection = function Collection(cy, elements) { + var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (cy === undefined) { + error('A collection must have a reference to the core'); + return; + } + + var map = new Map$1$1(); + var createdElements = false; + + if (!elements) { + elements = []; + } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) { + createdElements = true; // make elements from json and restore all at once later + + var eles = []; + var elesIds = new Set$1$1(); + + for (var i = 0, l = elements.length; i < l; i++) { + var json = elements[i]; + + if (json.data == null) { + json.data = {}; + } + + var _data = json.data; // make sure newly created elements have valid ids + + if (_data.id == null) { + _data.id = uuid(); + } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) { + continue; // can't create element if prior id already exists + } + + var ele = new Element$1(cy, json, false); + eles.push(ele); + elesIds.add(_data.id); + } + + elements = eles; + } + + this.length = 0; + + for (var _i = 0, _l = elements.length; _i < _l; _i++) { + var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements + + if (element$1 == null) { + continue; + } + + var id = element$1._private.data.id; + + if (!unique || !map.has(id)) { + if (unique) { + map.set(id, { + index: this.length, + ele: element$1 + }); + } + + this[this.length] = element$1; + this.length++; + } + } + + this._private = { + eles: this, + cy: cy, + + get map() { + if (this.lazyMap == null) { + this.rebuildMap(); + } + + return this.lazyMap; + }, + + set map(m) { + this.lazyMap = m; + }, + + rebuildMap: function rebuildMap() { + var m = this.lazyMap = new Map$1$1(); + var eles = this.eles; + + for (var _i2 = 0; _i2 < eles.length; _i2++) { + var _ele = eles[_i2]; + m.set(_ele.id(), { + index: _i2, + ele: _ele + }); + } + } + }; + + if (unique) { + this._private.map = map; + } // restore the elements if we created them from json + + + if (createdElements) { + this.restore(); + } +}; // Functions +//////////////////////////////////////////////////////////////////////////////////////////////////// +// keep the prototypes in sync (an element has the same functions as a collection) +// and use elefn and elesfn as shorthands to the prototypes + + +var elesfn$u = Element$1.prototype = Collection.prototype = Object.create(Array.prototype); + +elesfn$u.instanceString = function () { + return 'collection'; +}; + +elesfn$u.spawn = function (eles, unique) { + return new Collection(this.cy(), eles, unique); +}; + +elesfn$u.spawnSelf = function () { + return this.spawn(this); +}; + +elesfn$u.cy = function () { + return this._private.cy; +}; + +elesfn$u.renderer = function () { + return this._private.cy.renderer(); +}; + +elesfn$u.element = function () { + return this[0]; +}; + +elesfn$u.collection = function () { + if (collection(this)) { + return this; + } else { + // an element + return new Collection(this._private.cy, [this]); + } +}; + +elesfn$u.unique = function () { + return new Collection(this._private.cy, this, true); +}; + +elesfn$u.hasElementWithId = function (id) { + id = '' + id; // id must be string + + return this._private.map.has(id); +}; + +elesfn$u.getElementById = function (id) { + id = '' + id; // id must be string + + var cy = this._private.cy; + + var entry = this._private.map.get(id); + + return entry ? entry.ele : new Collection(cy); // get ele or empty collection +}; + +elesfn$u.$id = elesfn$u.getElementById; + +elesfn$u.poolIndex = function () { + var cy = this._private.cy; + var eles = cy._private.elements; + var id = this[0]._private.data.id; + return eles._private.map.get(id).index; +}; + +elesfn$u.indexOf = function (ele) { + var id = ele[0]._private.data.id; + return this._private.map.get(id).index; +}; + +elesfn$u.indexOfId = function (id) { + id = '' + id; // id must be string + + return this._private.map.get(id).index; +}; + +elesfn$u.json = function (obj) { + var ele = this.element(); + var cy = this.cy(); + + if (ele == null && obj) { + return this; + } // can't set to no eles + + + if (ele == null) { + return undefined; + } // can't get from no eles + + + var p = ele._private; + + if (plainObject(obj)) { + // set + cy.startBatch(); + + if (obj.data) { + ele.data(obj.data); + var _data2 = p.data; + + if (ele.isEdge()) { + // source and target are immutable via data() + var move = false; + var spec = {}; + var src = obj.data.source; + var tgt = obj.data.target; + + if (src != null && src != _data2.source) { + spec.source = '' + src; // id must be string + + move = true; + } + + if (tgt != null && tgt != _data2.target) { + spec.target = '' + tgt; // id must be string + + move = true; + } + + if (move) { + ele = ele.move(spec); + } + } else { + // parent is immutable via data() + var newParentValSpecd = 'parent' in obj.data; + var parent = obj.data.parent; + + if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) { + if (parent === undefined) { + // can't set undefined imperatively, so use null + parent = null; + } + + if (parent != null) { + parent = '' + parent; // id must be string + } + + ele = ele.move({ + parent: parent + }); + } + } + } + + if (obj.position) { + ele.position(obj.position); + } // ignore group -- immutable + + + var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) { + var obj_k = obj[k]; + + if (obj_k != null && obj_k !== p[k]) { + if (obj_k) { + ele[trueFnName](); + } else { + ele[falseFnName](); + } + } + }; + + checkSwitch('removed', 'remove', 'restore'); + checkSwitch('selected', 'select', 'unselect'); + checkSwitch('selectable', 'selectify', 'unselectify'); + checkSwitch('locked', 'lock', 'unlock'); + checkSwitch('grabbable', 'grabify', 'ungrabify'); + checkSwitch('pannable', 'panify', 'unpanify'); + + if (obj.classes != null) { + ele.classes(obj.classes); + } + + cy.endBatch(); + return this; + } else if (obj === undefined) { + // get + var json = { + data: copy(p.data), + position: copy(p.position), + group: p.group, + removed: p.removed, + selected: p.selected, + selectable: p.selectable, + locked: p.locked, + grabbable: p.grabbable, + pannable: p.pannable, + classes: null + }; + json.classes = ''; + var i = 0; + p.classes.forEach(function (cls) { + return json.classes += i++ === 0 ? cls : ' ' + cls; + }); + return json; + } +}; + +elesfn$u.jsons = function () { + var jsons = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var json = ele.json(); + jsons.push(json); + } + + return jsons; +}; + +elesfn$u.clone = function () { + var cy = this.cy(); + var elesArr = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var json = ele.json(); + var clone = new Element$1(cy, json, false); // NB no restore + + elesArr.push(clone); + } + + return new Collection(cy, elesArr); +}; + +elesfn$u.copy = elesfn$u.clone; + +elesfn$u.restore = function () { + var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var self = this; + var cy = self.cy(); + var cy_p = cy._private; // create arrays of nodes and edges, since we need to + // restore the nodes first + + var nodes = []; + var edges = []; + var elements; + + for (var _i3 = 0, l = self.length; _i3 < l; _i3++) { + var ele = self[_i3]; + + if (addToPool && !ele.removed()) { + // don't need to handle this ele + continue; + } // keep nodes first in the array and edges after + + + if (ele.isNode()) { + // put to front of array if node + nodes.push(ele); + } else { + // put to end of array if edge + edges.push(ele); + } + } + + elements = nodes.concat(edges); + var i; + + var removeFromElements = function removeFromElements() { + elements.splice(i, 1); + i--; + }; // now, restore each element + + + for (i = 0; i < elements.length; i++) { + var _ele2 = elements[i]; + var _private = _ele2._private; + var _data3 = _private.data; // the traversal cache should start fresh when ele is added + + _ele2.clearTraversalCache(); // set id and validate + + + if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) { + _data3.id = uuid(); + } else if (number(_data3.id)) { + _data3.id = '' + _data3.id; // now it's a string + } else if (emptyString(_data3.id) || !string(_data3.id)) { + error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id + + removeFromElements(); + continue; + } else if (cy.hasElementWithId(_data3.id)) { + error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id + + removeFromElements(); + continue; + } + + var id = _data3.id; // id is finalised, now let's keep a ref + + if (_ele2.isNode()) { + // extra checks for nodes + var pos = _private.position; // make sure the nodes have a defined position + + if (pos.x == null) { + pos.x = 0; + } + + if (pos.y == null) { + pos.y = 0; + } + } + + if (_ele2.isEdge()) { + // extra checks for edges + var edge = _ele2; + var fields = ['source', 'target']; + var fieldsLength = fields.length; + var badSourceOrTarget = false; + + for (var j = 0; j < fieldsLength; j++) { + var field = fields[j]; + var val = _data3[field]; + + if (number(val)) { + val = _data3[field] = '' + _data3[field]; // now string + } + + if (val == null || val === '') { + // can't create if source or target is not defined properly + error('Can not create edge `' + id + '` with unspecified ' + field); + badSourceOrTarget = true; + } else if (!cy.hasElementWithId(val)) { + // can't create edge if one of its nodes doesn't exist + error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`'); + badSourceOrTarget = true; + } + } + + if (badSourceOrTarget) { + removeFromElements(); + continue; + } // can't create this + + + var src = cy.getElementById(_data3.source); + var tgt = cy.getElementById(_data3.target); // only one edge in node if loop + + if (src.same(tgt)) { + src._private.edges.push(edge); + } else { + src._private.edges.push(edge); + + tgt._private.edges.push(edge); + } + + edge._private.source = src; + edge._private.target = tgt; + } // if is edge + // create mock ids / indexes maps for element so it can be used like collections + + + _private.map = new Map$1$1(); + + _private.map.set(id, { + ele: _ele2, + index: 0 + }); + + _private.removed = false; + + if (addToPool) { + cy.addToPool(_ele2); + } + } // for each element + // do compound node sanity checks + + + for (var _i4 = 0; _i4 < nodes.length; _i4++) { + // each node + var node = nodes[_i4]; + var _data4 = node._private.data; + + if (number(_data4.parent)) { + // then automake string + _data4.parent = '' + _data4.parent; + } + + var parentId = _data4.parent; + var specifiedParent = parentId != null; + + if (specifiedParent) { + var parent = cy.getElementById(parentId); + + if (parent.empty()) { + // non-existant parent; just remove it + _data4.parent = undefined; + } else { + var selfAsParent = false; + var ancestor = parent; + + while (!ancestor.empty()) { + if (node.same(ancestor)) { + // mark self as parent and remove from data + selfAsParent = true; + _data4.parent = undefined; // remove parent reference + // exit or we loop forever + + break; + } + + ancestor = ancestor.parent(); + } + + if (!selfAsParent) { + // connect with children + parent[0]._private.children.push(node); + + node._private.parent = parent[0]; // let the core know we have a compound graph + + cy_p.hasCompoundNodes = true; + } + } // else + + } // if specified parent + + } // for each node + + + if (elements.length > 0) { + var restored = elements.length === self.length ? self : new Collection(cy, elements); + + for (var _i5 = 0; _i5 < restored.length; _i5++) { + var _ele3 = restored[_i5]; + + if (_ele3.isNode()) { + continue; + } // adding an edge invalidates the traversal caches for the parallel edges + + + _ele3.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes + + + _ele3.source().clearTraversalCache(); + + _ele3.target().clearTraversalCache(); + } + + var toUpdateStyle; + + if (cy_p.hasCompoundNodes) { + toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent()); + } else { + toUpdateStyle = restored; + } + + toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer); + + if (notifyRenderer) { + restored.emitAndNotify('add'); + } else if (addToPool) { + restored.emit('add'); + } + } + + return self; // chainability +}; + +elesfn$u.removed = function () { + var ele = this[0]; + return ele && ele._private.removed; +}; + +elesfn$u.inside = function () { + var ele = this[0]; + return ele && !ele._private.removed; +}; + +elesfn$u.remove = function () { + var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var self = this; + var elesToRemove = []; + var elesToRemoveIds = {}; + var cy = self._private.cy; // add connected edges + + function addConnectedEdges(node) { + var edges = node._private.edges; + + for (var i = 0; i < edges.length; i++) { + add(edges[i]); + } + } // add descendant nodes + + + function addChildren(node) { + var children = node._private.children; + + for (var i = 0; i < children.length; i++) { + add(children[i]); + } + } + + function add(ele) { + var alreadyAdded = elesToRemoveIds[ele.id()]; + + if (removeFromPool && ele.removed() || alreadyAdded) { + return; + } else { + elesToRemoveIds[ele.id()] = true; + } + + if (ele.isNode()) { + elesToRemove.push(ele); // nodes are removed last + + addConnectedEdges(ele); + addChildren(ele); + } else { + elesToRemove.unshift(ele); // edges are removed first + } + } // make the list of elements to remove + // (may be removing more than specified due to connected edges etc) + + + for (var i = 0, l = self.length; i < l; i++) { + var ele = self[i]; + add(ele); + } + + function removeEdgeRef(node, edge) { + var connectedEdges = node._private.edges; + removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes + + node.clearTraversalCache(); + } + + function removeParallelRef(pllEdge) { + // removing an edge invalidates the traversal caches for the parallel edges + pllEdge.clearTraversalCache(); + } + + var alteredParents = []; + alteredParents.ids = {}; + + function removeChildRef(parent, ele) { + ele = ele[0]; + parent = parent[0]; + var children = parent._private.children; + var pid = parent.id(); + removeFromArray(children, ele); // remove parent => child ref + + ele._private.parent = null; // remove child => parent ref + + if (!alteredParents.ids[pid]) { + alteredParents.ids[pid] = true; + alteredParents.push(parent); + } + } + + self.dirtyCompoundBoundsCache(); + + if (removeFromPool) { + cy.removeFromPool(elesToRemove); // remove from core pool + } + + for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) { + var _ele4 = elesToRemove[_i6]; + + if (_ele4.isEdge()) { + // remove references to this edge in its connected nodes + var src = _ele4.source()[0]; + + var tgt = _ele4.target()[0]; + + removeEdgeRef(src, _ele4); + removeEdgeRef(tgt, _ele4); + + var pllEdges = _ele4.parallelEdges(); + + for (var j = 0; j < pllEdges.length; j++) { + var pllEdge = pllEdges[j]; + removeParallelRef(pllEdge); + + if (pllEdge.isBundledBezier()) { + pllEdge.dirtyBoundingBoxCache(); + } + } + } else { + // remove reference to parent + var parent = _ele4.parent(); + + if (parent.length !== 0) { + removeChildRef(parent, _ele4); + } + } + + if (removeFromPool) { + // mark as removed + _ele4._private.removed = true; + } + } // check to see if we have a compound graph or not + + + var elesStillInside = cy._private.elements; + cy._private.hasCompoundNodes = false; + + for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) { + var _ele5 = elesStillInside[_i7]; + + if (_ele5.isParent()) { + cy._private.hasCompoundNodes = true; + break; + } + } + + var removedElements = new Collection(this.cy(), elesToRemove); + + if (removedElements.size() > 0) { + // must manually notify since trigger won't do this automatically once removed + if (notifyRenderer) { + removedElements.emitAndNotify('remove'); + } else if (removeFromPool) { + removedElements.emit('remove'); + } + } // the parents who were modified by the removal need their style updated + + + for (var _i8 = 0; _i8 < alteredParents.length; _i8++) { + var _ele6 = alteredParents[_i8]; + + if (!removeFromPool || !_ele6.removed()) { + _ele6.updateStyle(); + } + } + + return removedElements; +}; + +elesfn$u.move = function (struct) { + var cy = this._private.cy; + var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring + // (our calls to remove/restore do not remove from the graph or make events) + + var notifyRenderer = false; + var modifyPool = false; + + var toString = function toString(id) { + return id == null ? id : '' + id; + }; // id must be string + + + if (struct.source !== undefined || struct.target !== undefined) { + var srcId = toString(struct.source); + var tgtId = toString(struct.target); + var srcExists = srcId != null && cy.hasElementWithId(srcId); + var tgtExists = tgtId != null && cy.hasElementWithId(tgtId); + + if (srcExists || tgtExists) { + cy.batch(function () { + // avoid duplicate style updates + eles.remove(notifyRenderer, modifyPool); // clean up refs etc. + + eles.emitAndNotify('moveout'); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _data5 = ele._private.data; + + if (ele.isEdge()) { + if (srcExists) { + _data5.source = srcId; + } + + if (tgtExists) { + _data5.target = tgtId; + } + } + } + + eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc. + }); + eles.emitAndNotify('move'); + } + } else if (struct.parent !== undefined) { + // move node to new parent + var parentId = toString(struct.parent); + var parentExists = parentId === null || cy.hasElementWithId(parentId); + + if (parentExists) { + var pidToAssign = parentId === null ? undefined : parentId; + cy.batch(function () { + // avoid duplicate style updates + var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc. + + updated.emitAndNotify('moveout'); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _data6 = ele._private.data; + + if (ele.isNode()) { + _data6.parent = pidToAssign; + } + } + + updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc. + }); + eles.emitAndNotify('move'); + } + } + + return this; +}; + +[elesfn$c, elesfn$d, elesfn$e, elesfn$f, elesfn$g, data$1, elesfn$i, dimensions, elesfn$m, elesfn$n, elesfn$o, elesfn$p, elesfn$q, elesfn$r, elesfn$s, elesfn$t].forEach(function (props) { + extend(elesfn$u, props); +}); + +var corefn = { + add: function add(opts) { + var elements; + var cy = this; // add the elements + + if (elementOrCollection(opts)) { + var eles = opts; + + if (eles._private.cy === cy) { + // same instance => just restore + elements = eles.restore(); + } else { + // otherwise, copy from json + var jsons = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + jsons.push(ele.json()); + } + + elements = new Collection(cy, jsons); + } + } // specify an array of options + else if (array(opts)) { + var _jsons = opts; + elements = new Collection(cy, _jsons); + } // specify via opts.nodes and opts.edges + else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) { + var elesByGroup = opts; + var _jsons2 = []; + var grs = ['nodes', 'edges']; + + for (var _i = 0, il = grs.length; _i < il; _i++) { + var group = grs[_i]; + var elesArray = elesByGroup[group]; + + if (array(elesArray)) { + for (var j = 0, jl = elesArray.length; j < jl; j++) { + var json = extend({ + group: group + }, elesArray[j]); + + _jsons2.push(json); + } + } + } + + elements = new Collection(cy, _jsons2); + } // specify options for one element + else { + var _json = opts; + elements = new Element$1(cy, _json).collection(); + } + + return elements; + }, + remove: function remove(collection) { + if (elementOrCollection(collection)) ; else if (string(collection)) { + var selector = collection; + collection = this.$(selector); + } + + return collection.remove(); + } +}; + +/* global Float32Array */ + /*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ +function generateCubicBezier(mX1, mY1, mX2, mY2) { + var NEWTON_ITERATIONS = 4, + NEWTON_MIN_SLOPE = 0.001, + SUBDIVISION_PRECISION = 0.0000001, + SUBDIVISION_MAX_ITERATIONS = 10, + kSplineTableSize = 11, + kSampleStepSize = 1.0 / (kSplineTableSize - 1.0), + float32ArraySupported = typeof Float32Array !== 'undefined'; + /* Must contain four arguments. */ + + if (arguments.length !== 4) { + return false; + } + /* Arguments must be numbers. */ + + + for (var i = 0; i < 4; ++i) { + if (typeof arguments[i] !== "number" || isNaN(arguments[i]) || !isFinite(arguments[i])) { + return false; + } + } + /* X values must be in the [0, 1] range. */ + + + mX1 = Math.min(mX1, 1); + mX2 = Math.min(mX2, 1); + mX1 = Math.max(mX1, 0); + mX2 = Math.max(mX2, 0); + var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + + function A(aA1, aA2) { + return 1.0 - 3.0 * aA2 + 3.0 * aA1; + } + + function B(aA1, aA2) { + return 3.0 * aA2 - 6.0 * aA1; + } + + function C(aA1) { + return 3.0 * aA1; + } + + function calcBezier(aT, aA1, aA2) { + return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; + } + + function getSlope(aT, aA1, aA2) { + return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); + } + + function newtonRaphsonIterate(aX, aGuessT) { + for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + + if (currentSlope === 0.0) { + return aGuessT; + } + + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + + return aGuessT; + } + + function calcSampleValues() { + for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) { + mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2); + } + } + + function binarySubdivide(aX, aA, aB) { + var currentX, + currentT, + i = 0; + + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + + return currentT; + } + + function getTForX(aX) { + var intervalStart = 0.0, + currentSample = 1, + lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + + --currentSample; + var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]), + guessForT = intervalStart + dist * kSampleStepSize, + initialSlope = getSlope(guessForT, mX1, mX2); + + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT); + } else if (initialSlope === 0.0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize); + } + } + + var _precomputed = false; + + function precompute() { + _precomputed = true; + + if (mX1 !== mY1 || mX2 !== mY2) { + calcSampleValues(); + } + } + + var f = function f(aX) { + if (!_precomputed) { + precompute(); + } + + if (mX1 === mY1 && mX2 === mY2) { + return aX; + } + + if (aX === 0) { + return 0; + } + + if (aX === 1) { + return 1; + } + + return calcBezier(getTForX(aX), mY1, mY2); + }; + + f.getControlPoints = function () { + return [{ + x: mX1, + y: mY1 + }, { + x: mX2, + y: mY2 + }]; + }; + + var str = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")"; + + f.toString = function () { + return str; + }; + + return f; +} + /*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ -var YV=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,C,i){var H={x:t.x+i.dx*C,v:t.v+i.dv*C,tension:t.tension,friction:t.friction};return{dx:H.v,dv:e(H)}}function C(C,i){var H={dx:C.v,dv:e(C)},n=t(C,.5*i,H),V=t(C,.5*i,n),r=t(C,i,V),L=1/6*(H.dx+2*(n.dx+V.dx)+r.dx),o=1/6*(H.dv+2*(n.dv+V.dv)+r.dv);return C.x=C.x+L*i,C.v=C.v+o*i,C}return function e(t,i,H){var n,V,r,L={x:-1,v:0,tension:null,friction:null},o=[0],a=0,M=1e-4;for(t=parseFloat(t)||500,i=parseFloat(i)||20,H=H||null,L.tension=t,L.friction=i,V=(n=null!==H)?(a=e(t,i))/H*.016:.016;r=C(r||L,V),o.push(1+r.x),a+=16,Math.abs(r.x)>M&&Math.abs(r.v)>M;);return n?function(e){return o[e*(o.length-1)|0]}:a}}(),XV=function(e,t,C,i){var H=function(e,t,C,i){var H=4,n=.001,V=1e-7,r=10,L=11,o=1/(L-1),a="undefined"!=typeof Float32Array;if(4!==arguments.length)return!1;for(var M=0;M<4;++M)if("number"!=typeof arguments[M]||isNaN(arguments[M])||!isFinite(arguments[M]))return!1;e=Math.min(e,1),C=Math.min(C,1),e=Math.max(e,0),C=Math.max(C,0);var s=a?new Float32Array(L):new Array(L);function l(e,t){return 1-3*t+3*e}function d(e,t){return 3*t-6*e}function u(e){return 3*e}function A(e,t,C){return((l(t,C)*e+d(t,C))*e+u(t))*e}function c(e,t,C){return 3*l(t,C)*e*e+2*d(t,C)*e+u(t)}function h(t,i){for(var n=0;n0?H=L:i=L}while(Math.abs(n)>V&&++o=n?h(t,r):0===a?r:f(t,i,i+o)}var g=!1;function v(){g=!0,e===t&&C===i||m()}var y=function(H){return g||v(),e===t&&C===i?H:0===H?0:1===H?1:A(p(H),t,i)};y.getControlPoints=function(){return[{x:e,y:t},{x:C,y:i}]};var Z="generateBezier("+[e,t,C,i]+")";return y.toString=function(){return Z},y}(e,t,C,i);return function(e,t,C){return e+(t-e)*H(C)}},qV={linear:function(e,t,C){return e+(t-e)*C},ease:XV(.25,.1,.25,1),"ease-in":XV(.42,0,1,1),"ease-out":XV(0,0,.58,1),"ease-in-out":XV(.42,0,.58,1),"ease-in-sine":XV(.47,0,.745,.715),"ease-out-sine":XV(.39,.575,.565,1),"ease-in-out-sine":XV(.445,.05,.55,.95),"ease-in-quad":XV(.55,.085,.68,.53),"ease-out-quad":XV(.25,.46,.45,.94),"ease-in-out-quad":XV(.455,.03,.515,.955),"ease-in-cubic":XV(.55,.055,.675,.19),"ease-out-cubic":XV(.215,.61,.355,1),"ease-in-out-cubic":XV(.645,.045,.355,1),"ease-in-quart":XV(.895,.03,.685,.22),"ease-out-quart":XV(.165,.84,.44,1),"ease-in-out-quart":XV(.77,0,.175,1),"ease-in-quint":XV(.755,.05,.855,.06),"ease-out-quint":XV(.23,1,.32,1),"ease-in-out-quint":XV(.86,0,.07,1),"ease-in-expo":XV(.95,.05,.795,.035),"ease-out-expo":XV(.19,1,.22,1),"ease-in-out-expo":XV(1,0,0,1),"ease-in-circ":XV(.6,.04,.98,.335),"ease-out-circ":XV(.075,.82,.165,1),"ease-in-out-circ":XV(.785,.135,.15,.86),spring:function(e,t,C){if(0===C)return qV.linear;var i=YV(e,t,C);return function(e,t,C){return e+(t-e)*i(C)}},"cubic-bezier":XV};function QV(e,t,C,i,H){if(1===i)return C;if(t===C)return C;var n=H(t,C,i);return null==e||((e.roundValue||e.color)&&(n=Math.round(n)),void 0!==e.min&&(n=Math.max(n,e.min)),void 0!==e.max&&(n=Math.min(n,e.max))),n}function KV(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function JV(e,t,C,i,H){var n=null!=H?H.type:null;C<0?C=0:C>1&&(C=1);var V=KV(e,H),r=KV(t,H);if(Ht(V)&&Ht(r))return QV(n,V,r,C,i);if(Ct(V)&&Ct(r)){for(var L=[],o=0;o0?("spring"===M&&s.push(V.duration),V.easingImpl=qV[M].apply(null,s)):V.easingImpl=qV[M]}var l,d=V.easingImpl;if(l=0===V.duration?1:(C-L)/V.duration,V.applying&&(l=V.progress),l<0?l=0:l>1&&(l=1),null==V.delay){var u=V.startPosition,A=V.position;if(A&&H&&!e.locked()){var c={};tr(u.x,A.x)&&(c.x=JV(u.x,A.x,l,d)),tr(u.y,A.y)&&(c.y=JV(u.y,A.y,l,d)),e.position(c)}var h=V.startPan,m=V.pan,f=n.pan,p=null!=m&&i;p&&(tr(h.x,m.x)&&(f.x=JV(h.x,m.x,l,d)),tr(h.y,m.y)&&(f.y=JV(h.y,m.y,l,d)),e.emit("pan"));var g=V.startZoom,v=V.zoom,y=null!=v&&i;y&&(tr(g,v)&&(n.zoom=_C(n.minZoom,JV(g,v,l,d),n.maxZoom)),e.emit("zoom")),(p||y)&&e.emit("viewport");var Z=V.style;if(Z&&Z.length>0&&H){for(var S=0;S=0;t--){(0,e[t])()}e.splice(0,e.length)},a=n.length-1;a>=0;a--){var M=n[a],s=M._private;s.stopped?(n.splice(a,1),s.hooked=!1,s.playing=!1,s.started=!1,o(s.frames)):(s.playing||s.applying)&&(s.playing&&s.applying&&(s.applying=!1),s.started||Cr(0,M,e),er(t,M,e,C),s.applying&&(s.applying=!1),o(s.frames),null!=s.step&&s.step(e),M.completed()&&(n.splice(a,1),s.hooked=!1,s.playing=!1,s.started=!1,o(s.completes)),r=!0)}return C||0!==n.length||0!==V.length||i.push(t),r}for(var n=!1,V=0;V0?t.notify("draw",C):t.notify("draw")),C.unmerge(i),t.emit("step")}var Hr={animate:xH.animate(),animation:xH.animation(),animated:xH.animated(),clearQueue:xH.clearQueue(),delay:xH.delay(),delayAnimation:xH.delayAnimation(),stop:xH.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender((function(t,C){ir(C,e)}),t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&wt((function(C){ir(C,e),t()}))}()}}},nr={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,C){var i=t.qualifier;return null==i||e!==C.target&&rt(C.target)&&i.matches(C.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,C){return null!=t.qualifier?C.target:e}},Vr=function(e){return et(e)?new dn(e):e},rr={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new oV(nr,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,C){return this.emitter().on(e,Vr(t),C),this},removeListener:function(e,t,C){return this.emitter().removeListener(e,Vr(t),C),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,C){return this.emitter().one(e,Vr(t),C),this},once:function(e,t,C){return this.emitter().one(e,Vr(t),C),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};xH.eventAliasesOn(rr);var Lr={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};Lr.jpeg=Lr.jpg;var or={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var C=e.name,i=t.extension("layout",C);if(null!=i){var H;H=et(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var n=new i(ft({},e,{cy:t,eles:H}));return n}Ut("No such layout `"+C+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ut("A `name` must be specified to make a layout");else Ut("Layout options must be specified to make a layout")}};or.createLayout=or.makeLayout=or.layout;var ar={notify:function(e,t){var C=this._private;if(this.batching()){C.batchNotifications=C.batchNotifications||{};var i=C.batchNotifications[e]=C.batchNotifications[e]||this.collection();null!=t&&i.merge(t)}else if(C.notificationsEnabled){var H=this.renderer();!this.destroyed()&&H&&H.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach((function(C){var i=e.batchNotifications[C];i.empty()?t.notify(C):t.notify(C,i)}))}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch((function(){for(var C=Object.keys(e),i=0;i0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach((function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]}))},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};sr.invalidateDimensions=sr.resize;var lr={collection:function(e,t){return et(e)?this.$(e):Vt(e)?e.collection():Ct(e)?new WV(this,e,t):new WV(this)},nodes:function(e){var t=this.$((function(e){return e.isNode()}));return e?t.filter(e):t},edges:function(e){var t=this.$((function(e){return e.isEdge()}));return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};lr.elements=lr.filter=lr.$;var dr={};dr.apply=function(e){for(var t=this,C=t._private.cy.collection(),i=0;i0;if(s||M&&l){var d=void 0;s&&l||s?d=o.properties:l&&(d=o.mappedProperties);for(var u=0;u1&&(A=1),r.color){var p=H.valueMin[0],g=H.valueMax[0],v=H.valueMin[1],y=H.valueMax[1],Z=H.valueMin[2],S=H.valueMax[2],b=null==H.valueMin[3]?1:H.valueMin[3],w=null==H.valueMax[3]?1:H.valueMax[3],x=[Math.round(p+(g-p)*A),Math.round(v+(y-v)*A),Math.round(Z+(S-Z)*A),Math.round(b+(w-b)*A)];C={bypass:H.bypass,name:H.name,value:x,strValue:"rgb("+x[0]+", "+x[1]+", "+x[2]+")"}}else{if(!r.number)return!1;var O=H.valueMin+(H.valueMax-H.valueMin)*A;C=this.parse(H.name,O,H.bypass,s)}if(!C)return u(),!1;C.mapping=H,H=C;break;case V.data:for(var k=H.field.split("."),E=M.data,P=0;P0&&n>0){for(var r={},L=!1,o=0;o0?e.delayAnimation(V).play().promise().then(t):t()})).then((function(){return e.animation({style:r,duration:n,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){C.removeBypasses(e,H),e.emitAndNotify("style"),i.transitioning=!1}))}else i.transitioning&&(this.removeBypasses(e,H),e.emitAndNotify("style"),i.transitioning=!1)},dr.checkTrigger=function(e,t,C,i,H,n){var V=this.properties[t],r=H(V);null!=r&&r(C,i)&&n(V)},dr.checkZOrderTrigger=function(e,t,C,i){var H=this;this.checkTrigger(e,t,C,i,(function(e){return e.triggersZOrder}),(function(){H._private.cy.notify("zorder",e)}))},dr.checkBoundsTrigger=function(e,t,C,i){this.checkTrigger(e,t,C,i,(function(e){return e.triggersBounds}),(function(H){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache(),"curve-style"!==t||"bezier"!==C&&"bezier"!==i||!H.triggersBoundsOfParallelBeziers||e.parallelEdges().forEach((function(e){e.isBundledBezier()&&e.dirtyBoundingBoxCache()}))}))},dr.checkTriggers=function(e,t,C,i){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,C,i),this.checkBoundsTrigger(e,t,C,i)};var ur={applyBypass:function(e,t,C,i){var H=[];if("*"===t||"**"===t){if(void 0!==C)for(var n=0;nt.length?n.substr(t.length):""}function r(){C=C.length>i.length?C.substr(i.length):""}for(n=n.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(n.match(/^\s*$/))break;var L=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!L){Xt("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}t=L[0];var o=L[1];if("core"!==o)if(new dn(o).invalid){Xt("Skipping parsing of block: Invalid selector found in string stylesheet: "+o),V();continue}var a=L[2],M=!1;C=a;for(var s=[];;){if(C.match(/^\s*$/))break;var l=C.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!l){Xt("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+a),M=!0;break}i=l[0];var d=l[1],u=l[2];if(this.properties[d])H.parse(d,u)?(s.push({name:d,val:u}),r()):(Xt("Skipping property: Invalid property definition in: "+i),r());else Xt("Skipping property: Invalid property name in: "+i),r()}if(M){V();break}H.selector(o);for(var A=0;A=7&&"d"===t[0]&&(o=new RegExp(r.data.regex).exec(t))){if(C)return!1;var s=r.data;return{name:e,value:o,strValue:""+t,mapped:s,field:o[1],bypass:C}}if(t.length>=10&&"m"===t[0]&&(a=new RegExp(r.mapData.regex).exec(t))){if(C)return!1;if(M.multiple)return!1;var l=r.mapData;if(!M.color&&!M.number)return!1;var d=this.parse(e,a[4]);if(!d||d.mapped)return!1;var u=this.parse(e,a[5]);if(!u||u.mapped)return!1;if(d.pfValue===u.pfValue||d.strValue===u.strValue)return Xt("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+d.strValue+"`"),this.parse(e,d.strValue);if(M.color){var A=d.value,c=u.value;if(!(A[0]!==c[0]||A[1]!==c[1]||A[2]!==c[2]||A[3]!==c[3]&&(null!=A[3]&&1!==A[3]||null!=c[3]&&1!==c[3])))return!1}return{name:e,value:a,strValue:""+t,mapped:l,field:a[1],fieldMin:parseFloat(a[2]),fieldMax:parseFloat(a[3]),valueMin:d.value,valueMax:u.value,bypass:C}}}if(M.multiple&&"multiple"!==i){var h;if(h=L?t.split(/\s+/):Ct(t)?t:[t],M.evenMultiple&&h.length%2!=0)return null;for(var m=[],f=[],p=[],g="",v=!1,y=0;y0?" ":"")+Z.strValue}return M.validate&&!M.validate(m,f)?null:M.singleEnum&&v?1===m.length&&et(m[0])?{name:e,value:m[0],strValue:m[0],bypass:C}:null:{name:e,value:m,pfValue:p,strValue:g,bypass:C,units:f}}var S,b,w=function(){for(var i=0;iM.max||M.strictMax&&t===M.max))return null;var P={name:e,value:t,strValue:""+t+(x||""),units:x,bypass:C};return M.unitless||"px"!==x&&"em"!==x?P.pfValue=t:P.pfValue="px"!==x&&x?this.getEmSizeInPixels()*t:t,"ms"!==x&&"s"!==x||(P.pfValue="ms"===x?t:1e3*t),"deg"!==x&&"rad"!==x||(P.pfValue="rad"===x?t:(S=t,Math.PI*S/180)),"%"===x&&(P.pfValue=t/100),P}if(M.propList){var T=[],_=""+t;if("none"===_);else{for(var B=_.split(/\s*,\s*|\s+/),D=0;D0&&L>0&&!isNaN(C.w)&&!isNaN(C.h)&&C.w>0&&C.h>0)return{zoom:V=(V=(V=Math.min((r-2*t)/C.w,(L-2*t)/C.h))>this._private.maxZoom?this._private.maxZoom:V)=C.minZoom&&(C.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,C,i=this._private,H=i.pan,n=i.zoom,V=!1;if(i.zoomingEnabled||(V=!0),Ht(e)?C=e:it(e)&&(C=e.level,null!=e.position?t=yC(e.position,n,H):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||i.panningEnabled||(V=!0)),C=(C=C>i.maxZoom?i.maxZoom:C)t.maxZoom||!t.zoomingEnabled?n=!0:(t.zoom=r,H.push("zoom"))}if(i&&(!n||!e.cancelOnFailedZoom)&&t.panningEnabled){var L=e.pan;Ht(L.x)&&(t.pan.x=L.x,V=!1),Ht(L.y)&&(t.pan.y=L.y,V=!1),V||H.push("pan")}return H.length>0&&(H.push("viewport"),this.emit(H.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(et(e)){var C=e;e=this.mutableElements().filter(C)}else Vt(e)||(e=this.mutableElements());if(0!==e.length){var i=e.boundingBox(),H=this.width(),n=this.height();return{x:(H-(t=void 0===t?this._private.zoom:t)*(i.x1+i.x2))/2,y:(n-t*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,C=this._private,i=C.container;return C.sizeCache=C.sizeCache||(i?(e=Ue.getComputedStyle(i),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:i.clientWidth-t("padding-left")-t("padding-right"),height:i.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,C=this.renderedExtent(),i={x1:(C.x1-e.x)/t,x2:(C.x2-e.x)/t,y1:(C.y1-e.y)/t,y2:(C.y2-e.y)/t};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};Zr.centre=Zr.center,Zr.autolockNodes=Zr.autolock,Zr.autoungrabifyNodes=Zr.autoungrabify;var Sr={data:xH.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:xH.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:xH.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:xH.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Sr.attr=Sr.data,Sr.removeAttr=Sr.removeData;var br=function(e){var t=this,C=(e=ft({},e)).container;C&&!nt(C)&&nt(C[0])&&(C=C[0]);var i=C?C._cyreg:null;(i=i||{})&&i.cy&&(i.cy.destroy(),i={});var H=i.readies=i.readies||[];C&&(C._cyreg=i),i.cy=t;var n=void 0!==Ue&&void 0!==C&&!e.headless,V=e;V.layout=ft({name:n?"grid":"null"},V.layout),V.renderer=ft({name:n?"canvas":"null"},V.renderer);var r=function(e,t,C){return void 0!==t?t:void 0!==C?C:e},L=this._private={container:C,ready:!1,options:V,elements:new WV(this),listeners:[],aniEles:new WV(this),data:V.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:r(!0,V.zoomingEnabled),userZoomingEnabled:r(!0,V.userZoomingEnabled),panningEnabled:r(!0,V.panningEnabled),userPanningEnabled:r(!0,V.userPanningEnabled),boxSelectionEnabled:r(!0,V.boxSelectionEnabled),autolock:r(!1,V.autolock,V.autolockNodes),autoungrabify:r(!1,V.autoungrabify,V.autoungrabifyNodes),autounselectify:r(!1,V.autounselectify),styleEnabled:void 0===V.styleEnabled?n:V.styleEnabled,zoom:Ht(V.zoom)?V.zoom:1,pan:{x:it(V.pan)&&Ht(V.pan.x)?V.pan.x:0,y:it(V.pan)&&Ht(V.pan.y)?V.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:r(250,V.multiClickDebounceTime)};this.createEmitter(),this.selectionType(V.selectionType),this.zoomRange({min:V.minZoom,max:V.maxZoom});L.styleEnabled&&t.setStyle([]);var o=ft({},V,V.renderer);t.initRenderer(o);!function(e,t){if(e.some(st))return vH.all(e).then(t);t(e)}([V.style,V.elements],(function(e){var C=e[0],n=e[1];L.styleEnabled&&t.style().append(C),function(e,C,i){t.notifications(!1);var H=t.mutableElements();H.length>0&&H.remove(),null!=e&&(it(e)||Ct(e))&&t.add(e),t.one("layoutready",(function(e){t.notifications(!0),t.emit(e),t.one("load",C),t.emitAndNotify("load")})).one("layoutstop",(function(){t.one("done",i),t.emit("done")}));var n=ft({},t._private.options.layout);n.eles=t.elements(),t.layout(n).run()}(n,(function(){t.startAnimationLoop(),L.ready=!0,tt(V.ready)&&t.on("ready",V.ready);for(var e=0;e0,o=BC(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()});if(Vt(C.roots))e=C.roots;else if(Ct(C.roots)){for(var a=[],M=0;M0;){var x=S.shift(),O=Z(x,b);if(O)x.outgoers().filter((function(e){return e.isNode()&&H.has(e)})).forEach(w);else if(null===O){Xt("Detected double maximal shift for node `"+x.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}y();var k=0;if(C.avoidOverlap)for(var E=0;E0&&c[0].length<=3?L/2:0),M=2*Math.PI/c[i].length*H;return 0===i&&1===c[0].length&&(a=1),{x:G+a*Math.cos(M),y:W+a*Math.sin(M)}}return{x:G+(H+1-(n+1)/2)*V,y:(i+1)*r}})),this};var Pr={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Tr(e){this.options=ft({},Pr,e)}Tr.prototype.run=function(){var e=this.options,t=e,C=e.cy,i=t.eles,H=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,n=i.nodes().not(":parent");t.sort&&(n=n.sort(t.sort));for(var V,r=BC(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()}),L=r.x1+r.w/2,o=r.y1+r.h/2,a=(void 0===t.sweep?2*Math.PI-2*Math.PI/n.length:t.sweep)/Math.max(1,n.length-1),M=0,s=0;s1&&t.avoidOverlap){M*=1.75;var A=Math.cos(a)-Math.cos(0),c=Math.sin(a)-Math.sin(0),h=Math.sqrt(M*M/(A*A+c*c));V=Math.max(h,V)}return i.nodes().layoutPositions(this,t,(function(e,C){var i=t.startAngle+C*a*(H?1:-1),n=V*Math.cos(i),r=V*Math.sin(i);return{x:L+n,y:o+r}})),this};var _r,Br={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Dr(e){this.options=ft({},Br,e)}Dr.prototype.run=function(){for(var e=this.options,t=e,C=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=e.cy,H=t.eles,n=H.nodes().not(":parent"),V=BC(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()}),r=V.x1+V.w/2,L=V.y1+V.h/2,o=[],a=0,M=0;M0)Math.abs(h[0].value-f.value)>=A&&(h=[],c.push(h));h.push(f)}var p=a+t.minNodeSpacing;if(!t.avoidOverlap){var g=c.length>0&&c[0].length>1,v=(Math.min(V.w,V.h)/2-p)/(c.length+g?1:0);p=Math.min(p,v)}for(var y=0,Z=0;Z1&&t.avoidOverlap){var x=Math.cos(w)-Math.cos(0),O=Math.sin(w)-Math.sin(0),k=Math.sqrt(p*p/(x*x+O*O));y=Math.max(k,y)}S.r=y,y+=p}if(t.equidistant){for(var E=0,P=0,T=0;T=e.numIter)&&($r(i,e),i.temperature=i.temperature*e.coolingFactor,!(i.temperature=e.animationThreshold&&n(),wt(t)):(HL(i,e),r())}()}else{for(;o;)o=V(L),L++;HL(i,e),r()}return this},Rr.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Rr.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Fr=function(e,t,C){for(var i=C.eles.edges(),H=C.eles.nodes(),n={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:H.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:C.initialTemp,clientWidth:e.width(),clientHeight:e.width(),boundingBox:BC(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()})},V=C.eles.components(),r={},L=0;L0){n.graphSet.push(f);for(L=0;Li.count?0:i.graph},zr=function e(t,C,i,H){var n=H.graphSet[i];if(-10)var r=(o=i.nodeOverlap*V)*H/(u=Math.sqrt(H*H+n*n)),L=o*n/u;else{var o,a=Qr(e,H,n),M=Qr(t,-1*H,-1*n),s=M.x-a.x,l=M.y-a.y,d=s*s+l*l,u=Math.sqrt(d);r=(o=(e.nodeRepulsion+t.nodeRepulsion)/d)*s/u,L=o*l/u}e.isLocked||(e.offsetX-=r,e.offsetY-=L),t.isLocked||(t.offsetX+=r,t.offsetY+=L)}},qr=function(e,t,C,i){if(C>0)var H=e.maxX-t.minX;else H=t.maxX-e.minX;if(i>0)var n=e.maxY-t.minY;else n=t.maxY-e.minY;return H>=0&&n>=0?Math.sqrt(H*H+n*n):0},Qr=function(e,t,C){var i=e.positionX,H=e.positionY,n=e.height||1,V=e.width||1,r=C/t,L=n/V,o={};return 0===t&&0C?(o.x=i,o.y=H+n/2,o):0t&&-1*L<=r&&r<=L?(o.x=i-V/2,o.y=H-V*C/2/t,o):0=L)?(o.x=i+n*t/2/C,o.y=H+n/2,o):0>C&&(r<=-1*L||r>=L)?(o.x=i-n*t/2/C,o.y=H-n/2,o):o},Kr=function(e,t){for(var C=0;C1){var d=t.gravity*M/l,u=t.gravity*s/l;a.offsetX+=d,a.offsetY+=u}}}}},eL=function(e,t){var C=[],i=0,H=-1;for(C.push.apply(C,e.graphSet[0]),H+=e.graphSet[0].length;i<=H;){var n=C[i++],V=e.idToIndex[n],r=e.layoutNodes[V],L=r.children;if(0C)var H={x:C*e/i,y:C*t/i};else H={x:e,y:t};return H},iL=function e(t,C){var i=t.parentId;if(null!=i){var H=C.layoutNodes[C.idToIndex[i]],n=!1;return(null==H.maxX||t.maxX+H.padRight>H.maxX)&&(H.maxX=t.maxX+H.padRight,n=!0),(null==H.minX||t.minX-H.padLeftH.maxY)&&(H.maxY=t.maxY+H.padBottom,n=!0),(null==H.minY||t.minY-H.padTopd&&(M+=l+t.componentSpacing,a=0,s=0,l=0)}}},nL={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function VL(e){this.options=ft({},nL,e)}VL.prototype.run=function(){var e=this.options,t=e,C=e.cy,i=t.eles,H=i.nodes().not(":parent");t.sort&&(H=H.sort(t.sort));var n=BC(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()});if(0===n.h||0===n.w)i.nodes().layoutPositions(this,t,(function(e){return{x:n.x1,y:n.y1}}));else{var V=H.size(),r=Math.sqrt(V*n.h/n.w),L=Math.round(r),o=Math.round(n.w/n.h*r),a=function(e){if(null==e)return Math.min(L,o);Math.min(L,o)==L?L=e:o=e},M=function(e){if(null==e)return Math.max(L,o);Math.max(L,o)==L?L=e:o=e},s=t.rows,l=null!=t.cols?t.cols:t.columns;if(null!=s&&null!=l)L=s,o=l;else if(null!=s&&null==l)L=s,o=Math.ceil(V/L);else if(null==s&&null!=l)o=l,L=Math.ceil(V/o);else if(o*L>V){var d=a(),u=M();(d-1)*u>=V?a(d-1):(u-1)*d>=V&&M(u-1)}else for(;o*L=V?M(c+1):a(A+1)}var h=n.w/o,m=n.h/L;if(t.condense&&(h=0,m=0),t.avoidOverlap)for(var f=0;f=o&&(k=0,O++)},P={},T=0;T(i=YC(e,t,f[p],f[p+1],f[p+2],f[p+3])))return A(C,i),!0}else if("bezier"===n.edgeType||"multibezier"===n.edgeType||"self"===n.edgeType||"compound"===n.edgeType)for(f=n.allpts,p=0;p+5(i=UC(e,t,f[p],f[p+1],f[p+2],f[p+3],f[p+4],f[p+5])))return A(C,i),!0;h=h||H.source,m=m||H.target;var g=V.getArrowWidth(L,a),v=[{name:"source",x:n.arrowStartX,y:n.arrowStartY,angle:n.srcArrowAngle},{name:"target",x:n.arrowEndX,y:n.arrowEndY,angle:n.tgtArrowAngle},{name:"mid-source",x:n.midX,y:n.midY,angle:n.midsrcArrowAngle},{name:"mid-target",x:n.midX,y:n.midY,angle:n.midtgtArrowAngle}];for(p=0;p0&&(c(h),c(m))}function m(e,t,C){return iC(e,t,C)}function f(C,i){var H,n=C._private,V=d;H=i?i+"-":"",C.boundingBox();var r=n.labelBounds[i||"main"],L=C.pstyle(H+"label").value;if("yes"===C.pstyle("text-events").strValue&&L){var o=m(n.rscratch,"labelX",i),a=m(n.rscratch,"labelY",i),M=m(n.rscratch,"labelAngle",i),s=C.pstyle(H+"text-margin-x").pfValue,l=C.pstyle(H+"text-margin-y").pfValue,u=r.x1-V-s,c=r.x2+V-s,h=r.y1-V-l,f=r.y2+V-l;if(M){var p=Math.cos(M),g=Math.sin(M),v=function(e,t){return{x:(e-=o)*p-(t-=a)*g+o,y:e*g+t*p+a}},y=v(u,h),Z=v(u,f),S=v(c,h),b=v(c,f),w=[y.x+s,y.y+l,S.x+s,S.y+l,b.x+s,b.y+l,Z.x+s,Z.y+l];if(XC(e,t,w))return A(C),!0}else if(zC(r,e,t))return A(C),!0}}C&&(L=L.interactive);for(var p=L.length-1;p>=0;p--){var g=L[p];g.isNode()?c(g)||f(g):h(g)||f(g)||f(g,"source")||f(g,"target")}return o},getAllInBox:function(e,t,C,i){for(var H,n,V=this.getCachedZSortedEles().interactive,r=[],L=Math.min(e,C),o=Math.max(e,C),a=Math.min(t,i),M=Math.max(t,i),s=BC({x1:e=L,y1:t=a,x2:C=o,y2:i=M}),l=0;l0?Math.max(e-t,0):Math.min(e+t,0)},b=S(y,g),w=S(Z,v),x=!1;"auto"===A?u=Math.abs(b)>Math.abs(w)?H:i:A===L||A===r?(u=i,x=!0):A!==n&&A!==V||(u=H,x=!0);var O,k=u===i,E=k?w:b,P=k?Z:y,T=xC(P),_=!1;(x&&(h||f)||!(A===r&&P<0||A===L&&P>0||A===n&&P>0||A===V&&P<0)||(E=(T*=-1)*Math.abs(E),_=!0),h)?O=(m<0?1+m:m)*E:O=(m<0?E:0)+m*T;var B=function(e){return Math.abs(e)=Math.abs(E)},D=B(O),N=B(Math.abs(E)-Math.abs(O));if((D||N)&&!_)if(k){var R=Math.abs(P)<=M/2,F=Math.abs(y)<=s/2;if(R){var I=(o.x1+o.x2)/2,z=o.y1,j=o.y2;C.segpts=[I,z,I,j]}else if(F){var G=(o.y1+o.y2)/2,W=o.x1,$=o.x2;C.segpts=[W,G,$,G]}else C.segpts=[o.x1,o.y2]}else{var U=Math.abs(P)<=a/2,Y=Math.abs(Z)<=l/2;if(U){var X=(o.y1+o.y2)/2,q=o.x1,Q=o.x2;C.segpts=[q,X,Q,X]}else if(Y){var K=(o.x1+o.x2)/2,J=o.y1,ee=o.y2;C.segpts=[K,J,K,ee]}else C.segpts=[o.x2,o.y1]}else if(k){var te=o.y1+O+(d?M/2*T:0),Ce=o.x1,ie=o.x2;C.segpts=[Ce,te,ie,te]}else{var He=o.x1+O+(d?a/2*T:0),ne=o.y1,Ve=o.y2;C.segpts=[He,ne,He,Ve]}},fL.tryToCorrectInvalidPoints=function(e,t){var C=e._private.rscratch;if("bezier"===C.edgeType){var i=t.srcPos,H=t.tgtPos,n=t.srcW,V=t.srcH,r=t.tgtW,L=t.tgtH,o=t.srcShape,a=t.tgtShape,M=!Ht(C.startX)||!Ht(C.startY),s=!Ht(C.arrowStartX)||!Ht(C.arrowStartY),l=!Ht(C.endX)||!Ht(C.endY),d=!Ht(C.arrowEndX)||!Ht(C.arrowEndY),u=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),A=OC({x:C.ctrlpts[0],y:C.ctrlpts[1]},{x:C.startX,y:C.startY}),c=As.poolIndex()){var l=M;M=s,s=l}var d=r.srcPos=M.position(),u=r.tgtPos=s.position(),A=r.srcW=M.outerWidth(),c=r.srcH=M.outerHeight(),h=r.tgtW=s.outerWidth(),m=r.tgtH=s.outerHeight(),f=r.srcShape=C.nodeShapes[t.getNodeShape(M)],p=r.tgtShape=C.nodeShapes[t.getNodeShape(s)];r.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var g=0;g0){var I=o,z=kC(I,SC(t)),j=kC(I,SC(F)),G=z;if(j2)kC(I,{x:F[2],y:F[3]})0){var ie=a,He=kC(ie,SC(t)),ne=kC(ie,SC(Ce)),Ve=He;if(ne2)kC(ie,{x:Ce[2],y:Ce[3]})=o||h){a={cp:u,segment:c};break}}if(a)break}var m=a.cp,f=a.segment,p=(o-s)/f.length,g=f.t1-f.t0,v=r?f.t0+g*p:f.t1-g*p;v=_C(0,v,1),t=TC(m.p0,m.p1,m.p2,v),H=function(e,t,C,i){var H=_C(0,i-.001,1),n=_C(0,i+.001,1),V=TC(e,t,C,H),r=TC(e,t,C,n);return bL(V,r)}(m.p0,m.p1,m.p2,v);break;case"straight":case"segments":case"haystack":for(var y,Z,S,b,w=0,x=i.allpts.length,O=0;O+3=o));O+=2);var k=(o-Z)/y;k=_C(0,k,1),t=function(e,t,C,i){var H=t.x-e.x,n=t.y-e.y,V=OC(e,t),r=H/V,L=n/V;return C=null==C?0:C,i=null!=i?i:C*V,{x:e.x+r*i,y:e.y+L*i}}(S,b,k),H=bL(S,b)}V("labelX",C,t.x),V("labelY",C,t.y),V("labelAutoAngle",C,H)}};o("source"),o("target"),this.applyLabelDimensions(e)}},ZL.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},ZL.applyPrefixedLabelDimensions=function(e,t){var C=e._private,i=this.getLabelText(e,t),H=this.calculateLabelDimensions(e,i),n=e.pstyle("line-height").pfValue,V=e.pstyle("text-wrap").strValue,r=iC(C.rscratch,"labelWrapCachedLines",t)||[],L="wrap"!==V?1:Math.max(r.length,1),o=H.height/L,a=o*n,M=H.width,s=H.height+(L-1)*(n-1)*o;HC(C.rstyle,"labelWidth",t,M),HC(C.rscratch,"labelWidth",t,M),HC(C.rstyle,"labelHeight",t,s),HC(C.rscratch,"labelHeight",t,s),HC(C.rscratch,"labelLineHeight",t,a)},ZL.getLabelText=function(e,t){var C=e._private,i=t?t+"-":"",H=e.pstyle(i+"label").strValue,n=e.pstyle("text-transform").value,V=function(e,i){return i?(HC(C.rscratch,e,t,i),i):iC(C.rscratch,e,t)};if(!H)return"";"none"==n||("uppercase"==n?H=H.toUpperCase():"lowercase"==n&&(H=H.toLowerCase()));var r=e.pstyle("text-wrap").value;if("wrap"===r){var L=V("labelKey");if(null!=L&&V("labelWrapKey")===L)return V("labelWrapCachedText");for(var o=H.split("\n"),a=e.pstyle("text-max-width").pfValue,M="anywhere"===e.pstyle("text-overflow-wrap").value,s=[],l=/[\s\u200b]+/,d=M?"":" ",u=0;ua){for(var m=A.split(l),f="",p=0;py)break;Z+=H[b],b===H.length-1&&(S=!0)}return S||(Z+="…"),Z}return H},ZL.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,C=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(C){case"left":return"right";case"right":return"left";default:return"center"}},ZL.calculateLabelDimensions=function(e,t){var C=Bt(t,e._private.labelDimsKey),i=this.labelDimCache||(this.labelDimCache=[]),H=i[C];if(null!=H)return H;var n=e.pstyle("font-style").strValue,V=e.pstyle("font-size").pfValue,r=e.pstyle("font-family").strValue,L=e.pstyle("font-weight").strValue,o=this.labelCalcCanvas,a=this.labelCalcCanvasContext;if(!o){o=this.labelCalcCanvas=document.createElement("canvas"),a=this.labelCalcCanvasContext=o.getContext("2d");var M=o.style;M.position="absolute",M.left="-9999px",M.top="-9999px",M.zIndex="-1",M.visibility="hidden",M.pointerEvents="none"}a.font="".concat(n," ").concat(L," ").concat(V,"px ").concat(r);for(var s=0,l=0,d=t.split("\n"),u=0;u1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),C)for(var i=0;i=e.desktopTapThreshold2}var S=i(t);A&&(e.hoverData.tapholdCancelled=!0);n=!0,C(u,["mousemove","vmousemove","tapdrag"],t,{x:M[0],y:M[1]});var b=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||V.emit({originalEvent:t,type:"boxstart",position:{x:M[0],y:M[1]}}),d[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(A){var w={originalEvent:t,type:"cxtdrag",position:{x:M[0],y:M[1]}};h?h.emit(w):V.emit(w),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&u===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:M[0],y:M[1]}}),e.hoverData.cxtOver=u,u&&u.emit({originalEvent:t,type:"cxtdragover",position:{x:M[0],y:M[1]}}))}}else if(e.hoverData.dragging){if(n=!0,V.panningEnabled()&&V.userPanningEnabled()){var x;if(e.hoverData.justStartedPan){var O=e.hoverData.mdownPos;x={x:(M[0]-O[0])*r,y:(M[1]-O[1])*r},e.hoverData.justStartedPan=!1}else x={x:m[0]*r,y:m[1]*r};V.panBy(x),V.emit("dragpan"),e.hoverData.dragged=!0}M=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=d[4]||null!=h&&!h.pannable()){if(h&&h.pannable()&&h.active()&&h.unactivate(),h&&h.grabbed()||u==c||(c&&C(c,["mouseout","tapdragout"],t,{x:M[0],y:M[1]}),u&&C(u,["mouseover","tapdragover"],t,{x:M[0],y:M[1]}),e.hoverData.last=u),h)if(A){if(V.boxSelectionEnabled()&&S)h&&h.grabbed()&&(a(p),h.emit("freeon"),p.emit("free"),e.dragData.didDrag&&(h.emit("dragfreeon"),p.emit("dragfree"))),b();else if(h&&h.grabbed()&&e.nodeIsDraggable(h)){var k=!e.dragData.didDrag;k&&e.redrawHint("eles",!0),e.dragData.didDrag=!0;var E=V.collection();e.hoverData.draggingEles||L(p,{inDragLayer:!0});var P={x:0,y:0};if(Ht(m[0])&&Ht(m[1])&&(P.x+=m[0],P.y+=m[1],k)){var T=e.hoverData.dragDelta;T&&Ht(T[0])&&Ht(T[1])&&(P.x+=T[0],P.y+=T[1])}for(var _=0;_0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=o=n.collection()),L!=M||e.dragData.didDrag||e.hoverData.selecting||null!=L&&L._private.selectable&&(e.hoverData.dragging||("additive"===n.selectionType()||s?L.selected()?L.unselect(["tapunselect"]):L.select(["tapselect"]):s||(n.$(t).unmerge(L).unselect(["tapunselect"]),L.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var u=n.collection(e.getAllInBox(r[0],r[1],r[2],r[3]));e.redrawHint("select",!0),u.length>0&&e.redrawHint("eles",!0),n.emit({type:"boxend",originalEvent:H,position:{x:V[0],y:V[1]}});var A=function(e){return e.selectable()&&!e.selected()};"additive"===n.selectionType()||s||n.$(t).unmerge(u).unselect(),u.emit("box").stdFilter(A).select().emit("boxselect"),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!r[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var f=M&&M.grabbed();a(o),f&&(M.emit("freeon"),o.emit("free"),e.dragData.didDrag&&(M.emit("dragfreeon"),o.emit("dragfree")))}}r[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}}),!1);var p,g,v,y,Z,S,b,w,x,O,k,E,P,T=function(t){if(!e.scrollingPage){var C=e.cy,i=C.zoom(),H=C.pan(),n=e.projectIntoViewport(t.clientX,t.clientY),V=[n[0]*i+H.x,n[1]*i+H.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4])t.preventDefault();else if(C.panningEnabled()&&C.userPanningEnabled()&&C.zoomingEnabled()&&C.userZoomingEnabled()){var r;t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout((function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()}),150),r=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,r*=e.wheelSensitivity,1===t.deltaMode&&(r*=33);var L=C.zoom()*Math.pow(10,r);"gesturechange"===t.type&&(L=e.gestureStartZoom*t.scale),C.zoom({level:L,renderedPosition:{x:V[0],y:V[1]}}),C.emit("gesturechange"===t.type?"pinchzoom":"scrollzoom")}}};e.registerBinding(e.container,"wheel",T,!0),e.registerBinding(window,"scroll",(function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout((function(){e.scrollingPage=!1}),250)}),!0),e.registerBinding(e.container,"gesturestart",(function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()}),!0),e.registerBinding(e.container,"gesturechange",(function(t){e.hasTouchStarted||T(t)}),!0),e.registerBinding(e.container,"mouseout",(function(t){var C=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:C[0],y:C[1]}})}),!1),e.registerBinding(e.container,"mouseover",(function(t){var C=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:C[0],y:C[1]}})}),!1);var _,B,D,N,R,F,I,z=function(e,t,C,i){return Math.sqrt((C-e)*(C-e)+(i-t)*(i-t))},j=function(e,t,C,i){return(C-e)*(C-e)+(i-t)*(i-t)};if(e.registerBinding(e.container,"touchstart",_=function(t){if(e.hasTouchStarted=!0,f(t)){s(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var i=e.cy,H=e.touchData.now,n=e.touchData.earlier;if(t.touches[0]){var r=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);H[0]=r[0],H[1]=r[1]}if(t.touches[1]){r=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);H[2]=r[0],H[3]=r[1]}if(t.touches[2]){r=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);H[4]=r[0],H[5]=r[1]}if(t.touches[1]){e.touchData.singleTouchMoved=!0,a(e.dragData.touchDragEles);var M=e.findContainerClientCoords();x=M[0],O=M[1],k=M[2],E=M[3],p=t.touches[0].clientX-x,g=t.touches[0].clientY-O,v=t.touches[1].clientX-x,y=t.touches[1].clientY-O,P=0<=p&&p<=k&&0<=v&&v<=k&&0<=g&&g<=E&&0<=y&&y<=E;var l=i.pan(),d=i.zoom();Z=z(p,g,v,y),S=j(p,g,v,y),w=[((b=[(p+v)/2,(g+y)/2])[0]-l.x)/d,(b[1]-l.y)/d];if(S<4e4&&!t.touches[2]){var u=e.findNearestElement(H[0],H[1],!0,!0),A=e.findNearestElement(H[2],H[3],!0,!0);return u&&u.isNode()?(u.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:H[0],y:H[1]}}),e.touchData.start=u):A&&A.isNode()?(A.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:H[0],y:H[1]}}),e.touchData.start=A):i.emit({originalEvent:t,type:"cxttapstart",position:{x:H[0],y:H[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])i.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var c=e.findNearestElements(H[0],H[1],!0,!0),h=c[0];if(null!=h&&(h.activate(),e.touchData.start=h,e.touchData.starts=c,e.nodeIsGrabbable(h))){var m=e.dragData.touchDragEles=i.collection(),T=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),h.selected()?(T=i.$((function(t){return t.selected()&&e.nodeIsGrabbable(t)})),L(T,{addToList:m})):o(h,{addToList:m}),V(h);var _=function(e){return{originalEvent:t,type:e,position:{x:H[0],y:H[1]}}};h.emit(_("grabon")),T?T.forEach((function(e){e.emit(_("grab"))})):h.emit(_("grab"))}C(h,["touchstart","tapstart","vmousedown"],t,{x:H[0],y:H[1]}),null==h&&(e.data.bgActivePosistion={x:r[0],y:r[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout((function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||C(e.touchData.start,["taphold"],t,{x:H[0],y:H[1]})}),e.tapholdDuration)}if(t.touches.length>=1){for(var B=e.touchData.startPosition=[],D=0;D=e.touchTapThreshold2}if(i&&e.touchData.cxt){t.preventDefault();var b=t.touches[0].clientX-x,k=t.touches[0].clientY-O,E=t.touches[1].clientX-x,T=t.touches[1].clientY-O,_=j(b,k,E,T);if(_/S>=2.25||_>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var B={originalEvent:t,type:"cxttapend",position:{x:r[0],y:r[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(B),e.touchData.start=null):V.emit(B)}}if(i&&e.touchData.cxt){B={originalEvent:t,type:"cxtdrag",position:{x:r[0],y:r[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(B):V.emit(B),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var D=e.findNearestElement(r[0],r[1],!0,!0);e.touchData.cxtOver&&D===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:r[0],y:r[1]}}),e.touchData.cxtOver=D,D&&D.emit({originalEvent:t,type:"cxtdragover",position:{x:r[0],y:r[1]}}))}else if(i&&t.touches[2]&&V.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||V.emit({originalEvent:t,type:"boxstart",position:{x:r[0],y:r[1]}}),e.touchData.selecting=!0,e.touchData.didSelect=!0,n[4]=1,n&&0!==n.length&&void 0!==n[0]?(n[2]=(r[0]+r[2]+r[4])/3,n[3]=(r[1]+r[3]+r[5])/3):(n[0]=(r[0]+r[2]+r[4])/3,n[1]=(r[1]+r[3]+r[5])/3,n[2]=(r[0]+r[2]+r[4])/3+1,n[3]=(r[1]+r[3]+r[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(i&&t.touches[1]&&!e.touchData.didSelect&&V.zoomingEnabled()&&V.panningEnabled()&&V.userZoomingEnabled()&&V.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),J=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var N=0;N0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(window,"touchcancel",D=function(t){var C=e.touchData.start;e.touchData.capture=!1,C&&C.unactivate()}),e.registerBinding(window,"touchend",N=function(i){var H=e.touchData.start;if(e.touchData.capture){0===i.touches.length&&(e.touchData.capture=!1),i.preventDefault();var n=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var V,r=e.cy,L=r.zoom(),o=e.touchData.now,M=e.touchData.earlier;if(i.touches[0]){var s=e.projectIntoViewport(i.touches[0].clientX,i.touches[0].clientY);o[0]=s[0],o[1]=s[1]}if(i.touches[1]){s=e.projectIntoViewport(i.touches[1].clientX,i.touches[1].clientY);o[2]=s[0],o[3]=s[1]}if(i.touches[2]){s=e.projectIntoViewport(i.touches[2].clientX,i.touches[2].clientY);o[4]=s[0],o[5]=s[1]}if(H&&H.unactivate(),e.touchData.cxt){if(V={originalEvent:i,type:"cxttapend",position:{x:o[0],y:o[1]}},H?H.emit(V):r.emit(V),!e.touchData.cxtDragged){var l={originalEvent:i,type:"cxttap",position:{x:o[0],y:o[1]}};H?H.emit(l):r.emit(l)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!i.touches[2]&&r.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var d=r.collection(e.getAllInBox(n[0],n[1],n[2],n[3]));n[0]=void 0,n[1]=void 0,n[2]=void 0,n[3]=void 0,n[4]=0,e.redrawHint("select",!0),r.emit({type:"boxend",originalEvent:i,position:{x:o[0],y:o[1]}});d.emit("box").stdFilter((function(e){return e.selectable()&&!e.selected()})).select().emit("boxselect"),d.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=H&&H.unactivate(),i.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(i.touches[1]);else if(i.touches[0]);else if(!i.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var u=e.dragData.touchDragEles;if(null!=H){var A=H._private.grabbed;a(u),e.redrawHint("drag",!0),e.redrawHint("eles",!0),A&&(H.emit("freeon"),u.emit("free"),e.dragData.didDrag&&(H.emit("dragfreeon"),u.emit("dragfree"))),C(H,["touchend","tapend","vmouseup","tapdragout"],i,{x:o[0],y:o[1]}),H.unactivate(),e.touchData.start=null}else{var c=e.findNearestElement(o[0],o[1],!0,!0);C(c,["touchend","tapend","vmouseup","tapdragout"],i,{x:o[0],y:o[1]})}var h=e.touchData.startPosition[0]-o[0],m=h*h,f=e.touchData.startPosition[1]-o[1],p=(m+f*f)*L*L;e.touchData.singleTouchMoved||(H||r.$(":selected").unselect(["tapunselect"]),C(H,["tap","vclick"],i,{x:o[0],y:o[1]}),R=!1,i.timeStamp-I<=r.multiClickDebounceTime()?(F&&clearTimeout(F),R=!0,I=null,C(H,["dbltap","vdblclick"],i,{x:o[0],y:o[1]})):(F=setTimeout((function(){R||C(H,["onetap","voneclick"],i,{x:o[0],y:o[1]})}),r.multiClickDebounceTime()),I=i.timeStamp)),null!=H&&!e.dragData.didDrag&&H._private.selectable&&p2){for(var w=[o[0],o[1]],x=Math.pow(w[0]-e,2)+Math.pow(w[1]-t,2),O=1;O0)return u[0]}return null},s=Object.keys(a),l=0;l0?L:GC(H,n,e,t,C,i,V)},checkPoint:function(e,t,C,i,H,n,V){var r=Li(i,H),L=2*r;if(qC(e,t,this.points,n,V,i,H-L,[0,-1],C))return!0;if(qC(e,t,this.points,n,V,i-L,H,[0,-1],C))return!0;var o=i/2+2*C,a=H/2+2*C;return!!XC(e,t,[n-o,V-a,n-o,V,n+o,V,n+o,V-a])||(!!JC(e,t,L,L,n+i/2-r,V+H/2-r,C)||!!JC(e,t,L,L,n-i/2+r,V+H/2-r,C))}}},_L.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",ni(3,0)),this.generateRoundPolygon("round-triangle",ni(3,0)),this.generatePolygon("rectangle",ni(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var C=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",C),this.generateRoundPolygon("round-diamond",C),this.generatePolygon("pentagon",ni(5,0)),this.generateRoundPolygon("round-pentagon",ni(5,0)),this.generatePolygon("hexagon",ni(6,0)),this.generateRoundPolygon("round-hexagon",ni(6,0)),this.generatePolygon("heptagon",ni(7,0)),this.generateRoundPolygon("round-heptagon",ni(7,0)),this.generatePolygon("octagon",ni(8,0)),this.generateRoundPolygon("round-octagon",ni(8,0));var i=new Array(20),H=ri(5,0),n=ri(5,Math.PI/5),V=.5*(3-Math.sqrt(5));V*=1.57;for(var r=0;r=e.deqFastCost*u)break}else if(H){if(l>=e.deqCost*L||l>=e.deqAvgCost*r)break}else if(d>=16.666666666666668*e.deqNoDrawCost)break;var A=e.deq(t,M,a);if(!(A.length>0))break;for(var c=0;c0&&(e.onDeqd(t,o),!H&&e.shouldRedraw(t,o,M,a)&&i())}),H(t))}}},IL=function(){function e(t){var C=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Gt;ze(this,e),this.idsByKey=new nC,this.keyForId=new nC,this.cachesByLvl=new nC,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=C}return Ge(e,[{key:"getIdsFor",value:function(e){null==e&&Ut("Can not get id list for null key");var t=this.idsByKey,C=this.idsByKey.get(e);return C||(C=new rC,t.set(e,C)),C}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),C=this.keyForId.get(t),i=this.getKey(e);this.deleteIdForKey(C,t),this.addIdForKey(i,t),this.keyForId.set(t,i)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),C=this.keyForId.get(t);this.deleteIdForKey(C,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,C=this.lvls,i=t.get(e);return i||(i=new nC,t.set(e,i),C.push(e)),i}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var C=this.getKey(e),i=this.getCache(C,t);return null!=i&&this.updateKeyMappingFor(e),i}},{key:"getForCachedKey",value:function(e,t){var C=this.keyForId.get(e.id());return this.getCache(C,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var C=this.getKey(e);return this.hasCache(C,t)}},{key:"setCache",value:function(e,t,C){C.key=e,this.getCachesAt(t).set(e,C)}},{key:"set",value:function(e,t,C){var i=this.getKey(e);this.setCache(i,t,C),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var C=this.getKey(e);this.deleteCache(C,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach((function(C){return t.deleteCache(e,C)}))}},{key:"invalidate",value:function(e){var t=e.id(),C=this.keyForId.get(t);this.deleteKeyMappingFor(e);var i=this.doesEleInvalidateKey(e);return i&&this.invalidateKey(C),i||0===this.getNumberOfIdsForKey(C)}}]),e}(),zL={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},jL=eC({getKey:null,doesEleInvalidateKey:Gt,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:jt,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),GL=function(e,t){var C=this;C.renderer=e,C.onDequeues=[];var i=jL(t);ft(C,i),C.lookup=new IL(i.getKey,i.doesEleInvalidateKey),C.setupDequeueing()},WL=GL.prototype;WL.reasons=zL,WL.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},WL.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},WL.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Fe((function(e,t){return t.reqs-e.reqs}))},WL.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},WL.getElement=function(e,t,C,i,H){var n=this,V=this.renderer,r=V.cy.zoom(),L=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!n.allowEdgeTxrCaching&&e.isEdge()||!n.allowParentTxrCaching&&e.isParent())return null;if(null==i&&(i=Math.ceil(wC(r*C))),i<-4)i=-4;else if(r>=7.99||i>3)return null;var o=Math.pow(2,i),a=t.h*o,M=t.w*o,s=V.eleTextBiggerThanMin(e,o);if(!this.isVisible(e,s))return null;var l,d=L.get(e,i);if(d&&d.invalidated&&(d.invalidated=!1,d.texture.invalidatedWidth-=d.width),d)return d;if(l=a<=25?25:a<=50?50:50*Math.ceil(a/50),a>1024||M>1024)return null;var u=n.getTextureQueue(l),A=u[u.length-2],c=function(){return n.recycleTexture(l,M)||n.addTexture(l,M)};A||(A=u[u.length-1]),A||(A=c()),A.width-A.usedWidthi;b--)Z=n.getElement(e,t,C,b,zL.downscale);S()}else{var w;if(!f&&!p&&!g)for(var x=i-1;x>=-4;x--){var O=L.get(e,x);if(O){w=O;break}}if(m(w))return n.queueElement(e,i),w;A.context.translate(A.usedWidth,0),A.context.scale(o,o),this.drawElement(A.context,e,t,s,!1),A.context.scale(1/o,1/o),A.context.translate(-A.usedWidth,0)}return d={x:A.usedWidth,texture:A,level:i,scale:o,width:M,height:a,scaledLabelShown:s},A.usedWidth+=Math.ceil(M+8),A.eleCaches.push(d),L.set(e,i,d),n.checkTextureFullness(A),d},WL.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},WL.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?tC(t,e):e.fullnessChecks++},WL.retireTexture=function(e){var t=e.height,C=this.getTextureQueue(t),i=this.lookup;tC(C,e),e.retired=!0;for(var H=e.eleCaches,n=0;n=t)return n.retired=!1,n.usedWidth=0,n.invalidatedWidth=0,n.fullnessChecks=0,CC(n.eleCaches),n.context.setTransform(1,0,0,1,0,0),n.context.clearRect(0,0,n.width,n.height),tC(i,n),C.push(n),n}},WL.queueElement=function(e,t){var C=this.getElementQueue(),i=this.getElementKeyToQueue(),H=this.getKey(e),n=i[H];if(n)n.level=Math.max(n.level,t),n.eles.merge(e),n.reqs++,C.updateItem(n);else{var V={eles:e.spawn().merge(e),level:t,reqs:1,key:H};C.push(V),i[H]=V}},WL.dequeue=function(e){for(var t=this,C=t.getElementQueue(),i=t.getElementKeyToQueue(),H=[],n=t.lookup,V=0;V<1&&C.size()>0;V++){var r=C.pop(),L=r.key,o=r.eles[0],a=n.hasCache(o,r.level);if(i[L]=null,!a){H.push(r);var M=t.getBoundingBox(o);t.getElement(o,M,e,r.level,zL.dequeue)}}return H},WL.removeFromQueue=function(e){var t=this.getElementQueue(),C=this.getElementKeyToQueue(),i=this.getKey(e),H=C[i];null!=H&&(1===H.eles.length?(H.reqs=zt,t.updateItem(H),t.pop(),C[i]=null):H.eles.unmerge(e))},WL.onDequeue=function(e){this.onDequeues.push(e)},WL.offDequeue=function(e){tC(this.onDequeues,e)},WL.setupDequeueing=FL({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,C){return e.dequeue(t,C)},onDeqd:function(e,t){for(var C=0;C=3.99||C>2)return null;i.validateLayersElesOrdering(C,e);var V,r,L=i.layersByLevel,o=Math.pow(2,C),a=L[C]=L[C]||[];if(i.levelIsComplete(C,e))return a;!function(){var t=function(t){if(i.validateLayersElesOrdering(t,e),i.levelIsComplete(t,e))return r=L[t],!0},H=function(e){if(!r)for(var i=C+e;-4<=i&&i<=2&&!t(i);i+=e);};H(1),H(-1);for(var n=a.length-1;n>=0;n--){var V=a[n];V.invalid&&tC(a,V)}}();var M=function(t){var H=(t=t||{}).after;if(function(){if(!V){V=BC();for(var t=0;t16e6)return null;var n=i.makeLayer(V,C);if(null!=H){var r=a.indexOf(H)+1;a.splice(r,0,n)}else(void 0===t.insert||t.insert)&&a.unshift(n);return n};if(i.skipping&&!n)return null;for(var s=null,l=e.length/1,d=!n,u=0;u=l||!jC(s.bb,A.boundingBox()))&&!(s=M({insert:!0,after:s})))return null;r||d?i.queueLayer(s,A):i.drawEleInLayer(s,A,C,t),s.eles.push(A),h[C]=s}}return r||(d?null:a)},UL.getEleLevelForLayerLevel=function(e,t){return e},UL.drawEleInLayer=function(e,t,C,i){var H=this.renderer,n=e.context,V=t.boundingBox();0!==V.w&&0!==V.h&&t.visible()&&(C=this.getEleLevelForLayerLevel(C,i),H.setImgSmoothing(n,!1),H.drawCachedElement(n,t,null,null,C,true),H.setImgSmoothing(n,!0))},UL.levelIsComplete=function(e,t){var C=this.layersByLevel[e];if(!C||0===C.length)return!1;for(var i=0,H=0;H0)return!1;if(n.invalid)return!1;i+=n.eles.length}return i===t.length},UL.validateLayersElesOrdering=function(e,t){var C=this.layersByLevel[e];if(C)for(var i=0;i0){e=!0;break}}return e},UL.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=xt(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,(function(e,C,i){t.invalidateLayer(e)})))},UL.invalidateLayer=function(e){if(this.lastInvalidationTime=xt(),!e.invalid){var t=e.level,C=e.eles,i=this.layersByLevel[t];tC(i,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var H=0;H3&&void 0!==arguments[3])||arguments[3],H=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],V=this,r=t._private.rscratch;if((!n||t.visible())&&!r.badLine&&null!=r.allpts&&!isNaN(r.allpts[0])){var L;C&&(L=C,e.translate(-L.x1,-L.y1));var o=n?t.pstyle("opacity").value:1,a=n?t.pstyle("line-opacity").value:1,M=t.pstyle("curve-style").value,s=t.pstyle("line-style").value,l=t.pstyle("width").pfValue,d=t.pstyle("line-cap").value,u=o*a,A=o*a,c=function(){var C=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;"straight-triangle"===M?(V.eleStrokeStyle(e,t,C),V.drawEdgeTrianglePath(t,e,r.allpts)):(e.lineWidth=l,e.lineCap=d,V.eleStrokeStyle(e,t,C),V.drawEdgePath(t,e,r.allpts,s),e.lineCap="butt")},h=function(){H&&V.drawEdgeOverlay(e,t)},m=function(){H&&V.drawEdgeUnderlay(e,t)},f=function(){var C=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A;V.drawArrowheads(e,t,C)},p=function(){V.drawElementText(e,t,null,i)};e.lineJoin="round";var g="yes"===t.pstyle("ghost").value;if(g){var v=t.pstyle("ghost-offset-x").pfValue,y=t.pstyle("ghost-offset-y").pfValue,Z=t.pstyle("ghost-opacity").value,S=u*Z;e.translate(v,y),c(S),f(S),e.translate(-v,-y)}m(),c(),f(),h(),p(),C&&e.translate(L.x1,L.y1)}}},Mo=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,C){if(C.visible()){var i=C.pstyle("".concat(e,"-opacity")).value;if(0!==i){var H=this,n=H.usePaths(),V=C._private.rscratch,r=2*C.pstyle("".concat(e,"-padding")).pfValue,L=C.pstyle("".concat(e,"-color")).value;t.lineWidth=r,"self"!==V.edgeType||n?t.lineCap="round":t.lineCap="butt",H.colorStrokeStyle(t,L[0],L[1],L[2],i),H.drawEdgePath(C,t,V.allpts,"solid")}}}};ao.drawEdgeOverlay=Mo("overlay"),ao.drawEdgeUnderlay=Mo("underlay"),ao.drawEdgePath=function(e,t,C,i){var H,n=e._private.rscratch,V=t,r=!1,L=this.usePaths(),o=e.pstyle("line-dash-pattern").pfValue,a=e.pstyle("line-dash-offset").pfValue;if(L){var M=C.join("$");n.pathCacheKey&&n.pathCacheKey===M?(H=t=n.pathCache,r=!0):(H=t=new Path2D,n.pathCacheKey=M,n.pathCache=H)}if(V.setLineDash)switch(i){case"dotted":V.setLineDash([1,1]);break;case"dashed":V.setLineDash(o),V.lineDashOffset=a;break;case"solid":V.setLineDash([])}if(!r&&!n.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(C[0],C[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var s=2;s+35&&void 0!==arguments[5]?arguments[5]:5;e.beginPath(),e.moveTo(t+n,C),e.lineTo(t+i-n,C),e.quadraticCurveTo(t+i,C,t+i,C+n),e.lineTo(t+i,C+H-n),e.quadraticCurveTo(t+i,C+H,t+i-n,C+H),e.lineTo(t+n,C+H),e.quadraticCurveTo(t,C+H,t,C+H-n),e.lineTo(t,C+n),e.quadraticCurveTo(t,C,t+n,C),e.closePath(),e.fill()}lo.eleTextBiggerThanMin=function(e,t){if(!t){var C=e.cy().zoom(),i=this.getPixelRatio(),H=Math.ceil(wC(C*i));t=Math.pow(2,H)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],V=this;if(null==i){if(n&&!V.eleTextBiggerThanMin(t))return}else if(!1===i)return;if(t.isNode()){var r=t.pstyle("label");if(!r||!r.value)return;var L=V.getLabelJustification(t);e.textAlign=L,e.textBaseline="bottom"}else{var o=t.element()._private.rscratch.badLine,a=t.pstyle("label"),M=t.pstyle("source-label"),s=t.pstyle("target-label");if(o||(!a||!a.value)&&(!M||!M.value)&&(!s||!s.value))return;e.textAlign="center",e.textBaseline="bottom"}var l,d=!C;C&&(l=C,e.translate(-l.x1,-l.y1)),null==H?(V.drawText(e,t,null,d,n),t.isEdge()&&(V.drawText(e,t,"source",d,n),V.drawText(e,t,"target",d,n))):V.drawText(e,t,H,d,n),C&&e.translate(l.x1,l.y1)},lo.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var C=0;C2&&void 0!==arguments[2])||arguments[2],i=t.pstyle("font-style").strValue,H=t.pstyle("font-size").pfValue+"px",n=t.pstyle("font-family").strValue,V=t.pstyle("font-weight").strValue,r=C?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,L=t.pstyle("text-outline-opacity").value*r,o=t.pstyle("color").value,a=t.pstyle("text-outline-color").value;e.font=i+" "+V+" "+H+" "+n,e.lineJoin="round",this.colorFillStyle(e,o[0],o[1],o[2],r),this.colorStrokeStyle(e,a[0],a[1],a[2],L)},lo.getTextAngle=function(e,t){var C=e._private.rscratch,i=t?t+"-":"",H=e.pstyle(i+"text-rotation"),n=iC(C,"labelAngle",t);return"autorotate"===H.strValue?e.isEdge()?n:0:"none"===H.strValue?0:H.pfValue},lo.drawText=function(e,t,C){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],H=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=t._private,V=n.rscratch,r=H?t.effectiveOpacity():1;if(!H||0!==r&&0!==t.pstyle("text-opacity").value){"main"===C&&(C=null);var L,o,a=iC(V,"labelX",C),M=iC(V,"labelY",C),s=this.getLabelText(t,C);if(null!=s&&""!==s&&!isNaN(a)&&!isNaN(M)){this.setupTextStyle(e,t,H);var l,d=C?C+"-":"",u=iC(V,"labelWidth",C),A=iC(V,"labelHeight",C),c=t.pstyle(d+"text-margin-x").pfValue,h=t.pstyle(d+"text-margin-y").pfValue,m=t.isEdge(),f=t.pstyle("text-halign").value,p=t.pstyle("text-valign").value;switch(m&&(f="center",p="center"),a+=c,M+=h,0!==(l=i?this.getTextAngle(t,C):0)&&(L=a,o=M,e.translate(L,o),e.rotate(l),a=0,M=0),p){case"top":break;case"center":M+=A/2;break;case"bottom":M+=A}var g=t.pstyle("text-background-opacity").value,v=t.pstyle("text-border-opacity").value,y=t.pstyle("text-border-width").pfValue,Z=t.pstyle("text-background-padding").pfValue;if(g>0||y>0&&v>0){var S=a-Z;switch(f){case"left":S-=u;break;case"center":S-=u/2}var b=M-A-Z,w=u+2*Z,x=A+2*Z;if(g>0){var O=e.fillStyle,k=t.pstyle("text-background-color").value;e.fillStyle="rgba("+k[0]+","+k[1]+","+k[2]+","+g*r+")";var E=t.pstyle("text-background-shape").strValue;0===E.indexOf("round")?uo(e,S,b,w,x,2):e.fillRect(S,b,w,x),e.fillStyle=O}if(y>0&&v>0){var P=e.strokeStyle,T=e.lineWidth,_=t.pstyle("text-border-color").value,B=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+_[0]+","+_[1]+","+_[2]+","+v*r+")",e.lineWidth=y,e.setLineDash)switch(B){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=y/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(e.strokeRect(S,b,w,x),"double"===B){var D=y/2;e.strokeRect(S+D,b+D,w-2*D,x-2*D)}e.setLineDash&&e.setLineDash([]),e.lineWidth=T,e.strokeStyle=P}}var N=2*t.pstyle("text-outline-width").pfValue;if(N>0&&(e.lineWidth=N),"wrap"===t.pstyle("text-wrap").value){var R=iC(V,"labelWrapCachedLines",C),F=iC(V,"labelLineHeight",C),I=u/2,z=this.getLabelJustification(t);switch("auto"===z||("left"===f?"left"===z?a+=-u:"center"===z&&(a+=-I):"center"===f?"left"===z?a+=-I:"right"===z&&(a+=I):"right"===f&&("center"===z?a+=I:"right"===z&&(a+=u))),p){case"top":case"center":case"bottom":M-=(R.length-1)*F}for(var j=0;j0&&e.strokeText(R[j],a,M),e.fillText(R[j],a,M),M+=F}else N>0&&e.strokeText(s,a,M),e.fillText(s,a,M);0!==l&&(e.rotate(-l),e.translate(-L,-o))}}};var Ao={drawNode:function(e,t,C){var i,H,n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],V=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],L=this,o=t._private,a=o.rscratch,M=t.position();if(Ht(M.x)&&Ht(M.y)&&(!r||t.visible())){var s,l,d=r?t.effectiveOpacity():1,u=L.usePaths(),A=!1,c=t.padding();i=t.width()+2*c,H=t.height()+2*c,C&&(l=C,e.translate(-l.x1,-l.y1));for(var h=t.pstyle("background-image"),m=h.value,f=new Array(m.length),p=new Array(m.length),g=0,v=0;v0&&void 0!==arguments[0]?arguments[0]:x;L.eleFillStyle(e,t,C)},T=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E;L.colorStrokeStyle(e,O[0],O[1],O[2],t)},_=t.pstyle("shape").strValue,B=t.pstyle("shape-polygon-points").pfValue;if(u){e.translate(M.x,M.y);var D=L.nodePathCache=L.nodePathCache||[],N=Dt("polygon"===_?_+","+B.join(","):_,""+H,""+i),R=D[N];null!=R?(s=R,A=!0,a.pathCache=s):(s=new Path2D,D[N]=a.pathCache=s)}var F=function(){if(!A){var C=M;u&&(C={x:0,y:0}),L.nodeShapes[L.getNodeShape(t)].draw(s||e,C.x,C.y,i,H)}u?e.fill(s):e.fill()},I=function(){for(var C=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],H=o.backgrounding,n=0,V=0;V0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d;L.hasPie(t)&&(L.drawPie(e,t,n),C&&(u||L.nodeShapes[L.getNodeShape(t)].draw(e,M.x,M.y,i,H)))},j=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d,C=(b>0?b:-b)*t,i=b>0?0:255;0!==b&&(L.colorFillStyle(e,i,i,i,C),u?e.fill(s):e.fill())},G=function(){if(w>0){if(e.lineWidth=w,e.lineCap="butt",e.setLineDash)switch(k){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(u?e.stroke(s):e.stroke(),"double"===k){e.lineWidth=w/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",u?e.stroke(s):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}},W=function(){V&&L.drawNodeOverlay(e,t,M,i,H)},$=function(){V&&L.drawNodeUnderlay(e,t,M,i,H)},U=function(){L.drawElementText(e,t,null,n)},Y="yes"===t.pstyle("ghost").value;if(Y){var X=t.pstyle("ghost-offset-x").pfValue,q=t.pstyle("ghost-offset-y").pfValue,Q=t.pstyle("ghost-opacity").value,K=Q*d;e.translate(X,q),P(Q*x),F(),I(K,!0),T(Q*E),G(),z(0!==b||0!==w),I(K,!1),j(K),e.translate(-X,-q)}u&&e.translate(-M.x,-M.y),$(),u&&e.translate(M.x,M.y),P(),F(),I(d,!0),T(),G(),z(0!==b||0!==w),I(d,!1),j(),u&&e.translate(-M.x,-M.y),U(),W(),C&&e.translate(l.x1,l.y1)}}},co=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,C,i,H,n){if(C.visible()){var V=C.pstyle("".concat(e,"-padding")).pfValue,r=C.pstyle("".concat(e,"-opacity")).value,L=C.pstyle("".concat(e,"-color")).value,o=C.pstyle("".concat(e,"-shape")).value;if(r>0){if(i=i||C.position(),null==H||null==n){var a=C.padding();H=C.width()+2*a,n=C.height()+2*a}this.colorFillStyle(t,L[0],L[1],L[2],r),this.nodeShapes[o].draw(t,i.x,i.y,H+2*V,n+2*V),t.fill()}}}};Ao.drawNodeOverlay=co("overlay"),Ao.drawNodeUnderlay=co("underlay"),Ao.hasPie=function(e){return(e=e[0])._private.hasPie},Ao.drawPie=function(e,t,C,i){t=t[0],i=i||t.position();var H=t.cy().style(),n=t.pstyle("pie-size"),V=i.x,r=i.y,L=t.width(),o=t.height(),a=Math.min(L,o)/2,M=0;this.usePaths()&&(V=0,r=0),"%"===n.units?a*=n.pfValue:void 0!==n.pfValue&&(a=n.pfValue/2);for(var s=1;s<=H.pieBackgroundN;s++){var l=t.pstyle("pie-"+s+"-background-size").value,d=t.pstyle("pie-"+s+"-background-color").value,u=t.pstyle("pie-"+s+"-background-opacity").value*C,A=l/100;A+M>1&&(A=1-M);var c=1.5*Math.PI+2*Math.PI*M,h=c+2*Math.PI*A;0===l||M>=1||M+A>1||(e.beginPath(),e.moveTo(V,r),e.arc(V,r,a,c,h),e.closePath(),this.colorFillStyle(e,d[0],d[1],d[2],u),e.fill(),M+=A)}};var ho={};ho.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},ho.paintCache=function(e){for(var t,C=this.paintCaches=this.paintCaches||[],i=!0,H=0;HV.minMbLowQualFrames&&(V.motionBlurPxRatio=V.mbPxRBlurry)),V.clearingMotionBlur&&(V.motionBlurPxRatio=1),V.textureDrawLastFrame&&!M&&(a[V.NODE]=!0,a[V.SELECT_BOX]=!0);var h=L.style(),m=L.zoom(),f=void 0!==H?H:m,p=L.pan(),g={x:p.x,y:p.y},v={zoom:m,pan:{x:p.x,y:p.y}},y=V.prevViewport;void 0===y||v.zoom!==y.zoom||v.pan.x!==y.pan.x||v.pan.y!==y.pan.y||u&&!d||(V.motionBlurPxRatio=1),n&&(g=n),f*=r,g.x*=r,g.y*=r;var Z=V.getCachedZSortedEles();function S(e,t,C,i,H){var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",V.colorFillStyle(e,255,255,255,V.motionBlurTransparency),e.fillRect(t,C,i,H),e.globalCompositeOperation=n}function b(e,i){var r,L,a,M;V.clearingMotionBlur||e!==o.bufferContexts[V.MOTIONBLUR_BUFFER_NODE]&&e!==o.bufferContexts[V.MOTIONBLUR_BUFFER_DRAG]?(r=g,L=f,a=V.canvasWidth,M=V.canvasHeight):(r={x:p.x*l,y:p.y*l},L=m*l,a=V.canvasWidth*l,M=V.canvasHeight*l),e.setTransform(1,0,0,1,0,0),"motionBlur"===i?S(e,0,0,a,M):t||void 0!==i&&!i||e.clearRect(0,0,a,M),C||(e.translate(r.x,r.y),e.scale(L,L)),n&&e.translate(n.x,n.y),H&&e.scale(H,H)}if(M||(V.textureDrawLastFrame=!1),M){if(V.textureDrawLastFrame=!0,!V.textureCache){V.textureCache={},V.textureCache.bb=L.mutableElements().boundingBox(),V.textureCache.texture=V.data.bufferCanvases[V.TEXTURE_BUFFER];var w=V.data.bufferContexts[V.TEXTURE_BUFFER];w.setTransform(1,0,0,1,0,0),w.clearRect(0,0,V.canvasWidth*V.textureMult,V.canvasHeight*V.textureMult),V.render({forcedContext:w,drawOnlyNodeLayer:!0,forcedPxRatio:r*V.textureMult}),(v=V.textureCache.viewport={zoom:L.zoom(),pan:L.pan(),width:V.canvasWidth,height:V.canvasHeight}).mpan={x:(0-v.pan.x)/v.zoom,y:(0-v.pan.y)/v.zoom}}a[V.DRAG]=!1,a[V.NODE]=!1;var x=o.contexts[V.NODE],O=V.textureCache.texture;v=V.textureCache.viewport;x.setTransform(1,0,0,1,0,0),s?S(x,0,0,v.width,v.height):x.clearRect(0,0,v.width,v.height);var k=h.core("outside-texture-bg-color").value,E=h.core("outside-texture-bg-opacity").value;V.colorFillStyle(x,k[0],k[1],k[2],E),x.fillRect(0,0,v.width,v.height);m=L.zoom();b(x,!1),x.clearRect(v.mpan.x,v.mpan.y,v.width/v.zoom/r,v.height/v.zoom/r),x.drawImage(O,v.mpan.x,v.mpan.y,v.width/v.zoom/r,v.height/v.zoom/r)}else V.textureOnViewport&&!t&&(V.textureCache=null);var P=L.extent(),T=V.pinching||V.hoverData.dragging||V.swipePanning||V.data.wheelZooming||V.hoverData.draggingEles||V.cy.animated(),_=V.hideEdgesOnViewport&&T,B=[];if(B[V.NODE]=!a[V.NODE]&&s&&!V.clearedForMotionBlur[V.NODE]||V.clearingMotionBlur,B[V.NODE]&&(V.clearedForMotionBlur[V.NODE]=!0),B[V.DRAG]=!a[V.DRAG]&&s&&!V.clearedForMotionBlur[V.DRAG]||V.clearingMotionBlur,B[V.DRAG]&&(V.clearedForMotionBlur[V.DRAG]=!0),a[V.NODE]||C||i||B[V.NODE]){var D=s&&!B[V.NODE]&&1!==l;b(x=t||(D?V.data.bufferContexts[V.MOTIONBLUR_BUFFER_NODE]:o.contexts[V.NODE]),s&&!D?"motionBlur":void 0),_?V.drawCachedNodes(x,Z.nondrag,r,P):V.drawLayeredElements(x,Z.nondrag,r,P),V.debug&&V.drawDebugPoints(x,Z.nondrag),C||s||(a[V.NODE]=!1)}if(!i&&(a[V.DRAG]||C||B[V.DRAG])){D=s&&!B[V.DRAG]&&1!==l;b(x=t||(D?V.data.bufferContexts[V.MOTIONBLUR_BUFFER_DRAG]:o.contexts[V.DRAG]),s&&!D?"motionBlur":void 0),_?V.drawCachedNodes(x,Z.drag,r,P):V.drawCachedElements(x,Z.drag,r,P),V.debug&&V.drawDebugPoints(x,Z.drag),C||s||(a[V.DRAG]=!1)}if(V.showFps||!i&&a[V.SELECT_BOX]&&!C){if(b(x=t||o.contexts[V.SELECT_BOX]),1==V.selection[4]&&(V.hoverData.selecting||V.touchData.selecting)){m=V.cy.zoom();var N=h.core("selection-box-border-width").value/m;x.lineWidth=N,x.fillStyle="rgba("+h.core("selection-box-color").value[0]+","+h.core("selection-box-color").value[1]+","+h.core("selection-box-color").value[2]+","+h.core("selection-box-opacity").value+")",x.fillRect(V.selection[0],V.selection[1],V.selection[2]-V.selection[0],V.selection[3]-V.selection[1]),N>0&&(x.strokeStyle="rgba("+h.core("selection-box-border-color").value[0]+","+h.core("selection-box-border-color").value[1]+","+h.core("selection-box-border-color").value[2]+","+h.core("selection-box-opacity").value+")",x.strokeRect(V.selection[0],V.selection[1],V.selection[2]-V.selection[0],V.selection[3]-V.selection[1]))}if(o.bgActivePosistion&&!V.hoverData.selecting){m=V.cy.zoom();var R=o.bgActivePosistion;x.fillStyle="rgba("+h.core("active-bg-color").value[0]+","+h.core("active-bg-color").value[1]+","+h.core("active-bg-color").value[2]+","+h.core("active-bg-opacity").value+")",x.beginPath(),x.arc(R.x,R.y,h.core("active-bg-size").pfValue/m,0,2*Math.PI),x.fill()}var F=V.lastRedrawTime;if(V.showFps&&F){F=Math.round(F);var I=Math.round(1e3/F);x.setTransform(1,0,0,1,0,0),x.fillStyle="rgba(255, 0, 0, 0.75)",x.strokeStyle="rgba(255, 0, 0, 0.75)",x.lineWidth=1,x.fillText("1 frame = "+F+" ms = "+I+" fps",0,20);x.strokeRect(0,30,250,20),x.fillRect(0,30,250*Math.min(I/60,1),20)}C||(a[V.SELECT_BOX]=!1)}if(s&&1!==l){var z=o.contexts[V.NODE],j=V.data.bufferCanvases[V.MOTIONBLUR_BUFFER_NODE],G=o.contexts[V.DRAG],W=V.data.bufferCanvases[V.MOTIONBLUR_BUFFER_DRAG],$=function(e,t,C){e.setTransform(1,0,0,1,0,0),C||!c?e.clearRect(0,0,V.canvasWidth,V.canvasHeight):S(e,0,0,V.canvasWidth,V.canvasHeight);var i=l;e.drawImage(t,0,0,V.canvasWidth*i,V.canvasHeight*i,0,0,V.canvasWidth,V.canvasHeight)};(a[V.NODE]||B[V.NODE])&&($(z,j,B[V.NODE]),a[V.NODE]=!1),(a[V.DRAG]||B[V.DRAG])&&($(G,W,B[V.DRAG]),a[V.DRAG]=!1)}V.prevViewport=v,V.clearingMotionBlur&&(V.clearingMotionBlur=!1,V.motionBlurCleared=!0,V.motionBlur=!0),s&&(V.motionBlurTimeout=setTimeout((function(){V.motionBlurTimeout=null,V.clearedForMotionBlur[V.NODE]=!1,V.clearedForMotionBlur[V.DRAG]=!1,V.motionBlur=!1,V.clearingMotionBlur=!M,V.mbFrames=0,a[V.NODE]=!0,a[V.DRAG]=!0,V.redraw()}),100)),t||L.emit("render")};for(var mo={drawPolygonPath:function(e,t,C,i,H,n){var V=i/2,r=H/2;e.beginPath&&e.beginPath(),e.moveTo(t+V*n[0],C+r*n[1]);for(var L=1;L0&&n>0){s.clearRect(0,0,H,n),s.globalCompositeOperation="source-over";var l=this.getCachedZSortedEles();if(e.full)s.translate(-C.x1*L,-C.y1*L),s.scale(L,L),this.drawElements(s,l),s.scale(1/L,1/L),s.translate(C.x1*L,C.y1*L);else{var d=t.pan(),u={x:d.x*L,y:d.y*L};L*=t.zoom(),s.translate(u.x,u.y),s.scale(L,L),this.drawElements(s,l),s.scale(1/L,1/L),s.translate(-u.x,-u.y)}e.bg&&(s.globalCompositeOperation="destination-over",s.fillStyle=e.bg,s.rect(0,0,H,n),s.fill())}return M},So.png=function(e){return wo(e,this.bufferCanvasImage(e),"image/png")},So.jpg=function(e){return wo(e,this.bufferCanvasImage(e),"image/jpeg")};var xo={nodeShapeImpl:function(e,t,C,i,H,n,V){switch(e){case"ellipse":return this.drawEllipsePath(t,C,i,H,n);case"polygon":return this.drawPolygonPath(t,C,i,H,n,V);case"round-polygon":return this.drawRoundPolygonPath(t,C,i,H,n,V);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,C,i,H,n);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,C,i,H,n);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,C,i,H,n);case"barrel":return this.drawBarrelPath(t,C,i,H,n)}}},Oo=Eo,ko=Eo.prototype;function Eo(e){var t=this;t.data={canvases:new Array(ko.CANVAS_LAYERS),contexts:new Array(ko.CANVAS_LAYERS),canvasNeedsRedraw:new Array(ko.CANVAS_LAYERS),bufferCanvases:new Array(ko.BUFFER_COUNT),bufferContexts:new Array(ko.CANVAS_LAYERS)};var C="-webkit-tap-highlight-color",i="rgba(0,0,0,0)";t.data.canvasContainer=document.createElement("div");var H=t.data.canvasContainer.style;t.data.canvasContainer.style[C]=i,H.position="relative",H.zIndex="0",H.overflow="hidden";var n=e.cy.container();n.appendChild(t.data.canvasContainer),n.style[C]=i;var V={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};Ye&&Ye.userAgent.match(/msie|trident|edge/i)&&(V["-ms-touch-action"]="none",V["touch-action"]="none");for(var r=0;r\n \n `}const ca={ag_expand:Uo,ag_collapse:$o,ag_select_all:Ma,ag_select_inverse:sa,ag_select_neighbors:la,ag_lock:La,ag_unlock:oa,ag_hide:Qo,ag_unhide:qo,ag_fit:ea,ag_image:ra,ag_workspace:da,ag_local:ta,ag_fdgd:ia,ag_concentric:na,ag_grid:Xo,ag_hierarchy:Ha,ag_file:Ko,ag_filter:Jo,ag_save:Yo,ag_node_list:Ca,ag_style:aa,ag_help:Va};function ha(e){let t,C,i,H,n;return{c(){t=v("button"),C=y("svg"),i=y("path"),x(i,"d",e[0]),E(C,"width","17px"),E(C,"height","17px"),x(C,"viewBox","0 0 24 24"),x(C,"xmlns","http://www.w3.org/2000/svg"),x(t,"type","button"),x(t,"class","juggl-button"),x(t,"aria-label",e[3]),t.disabled=e[2]},m(V,r){f(V,t,r),m(t,C),m(C,i),H||(n=w(t,"click",(function(){u(e[1])&&e[1].apply(this,arguments)})),H=!0)},p(C,[H]){e=C,1&H&&x(i,"d",e[0]),8&H&&x(t,"aria-label",e[3]),4&H&&(t.disabled=e[2])},i:M,o:M,d(e){e&&p(t),H=!1,n()}}}function ma(e,t,C){let{icon:i}=t,{onClick:H}=t,{disabled:n=!1}=t,{title:V}=t;return e.$$set=e=>{"icon"in e&&C(0,i=e.icon),"onClick"in e&&C(1,H=e.onClick),"disabled"in e&&C(2,n=e.disabled),"title"in e&&C(3,V=e.title)},[i,H,n,V]}class fa extends te{constructor(e){super(),ee(this,e,ma,ha,A,{icon:0,onClick:1,disabled:2,title:3})}}class pa extends e.ItemView{constructor(){super(...arguments),this.frame=null}async onOpen(){this.frame=document.createElement("iframe"),this.frame.addClass("juggl-site"),this.frame.setAttr("style","height: 100%; width:100%"),this.frame.setAttr("src","https://juggl.io"),this.frame.setAttr("tabindex","0"),this.containerEl.children[1].appendChild(this.frame)}getDisplayText(){return"Juggl help"}getViewType(){return"juggl-help"}}function ga(e){let t,C;return t=new fa({props:{icon:ca.ag_help,title:"Help",onClick:e[0]}}),{c(){q(t.$$.fragment)},m(e,i){Q(t,e,i),C=!0},p:M,i(e){C||(Y(t.$$.fragment,e),C=!0)},o(e){X(t.$$.fragment,e),C=!1},d(e){K(t,e)}}}function va(e,t,C){let{workspace:i}=t;return e.$$set=e=>{"workspace"in e&&C(1,i=e.workspace)},[function(){let e=i.getLeaf(!0),t=new pa(e);e.open(t)},i]}class ya extends te{constructor(e){super(),ee(this,e,va,ga,A,{workspace:1})}}function Za(e){let t,C,i,H,n,V,r,L,o,a,M,s,l,d,A,c,h,g,y,Z,b,O,k,E,P,T,_,B,D,N,R,F,I,z,j,G,W,$,U,J,ee,te,Ce,ie;return C=new fa({props:{icon:ca.ag_fdgd,onClick:e[2],title:"Force directed layout"}}),H=new fa({props:{icon:ca.ag_concentric,onClick:e[3],title:"Circle layout"}}),V=new fa({props:{icon:ca.ag_grid,onClick:e[4],title:"Grid layout"}}),L=new fa({props:{icon:ca.ag_hierarchy,onClick:e[5],title:"Hierarchical layout"}}),M=new fa({props:{icon:ca.ag_fit,onClick:e[14],title:"Fit view"}}),l=new fa({props:{icon:ca.ag_local,onClick:e[15],title:"Local mode"}}),c=new ya({props:{workspace:e[17]}}),g=new fa({props:{icon:ca.ag_save,onClick:e[16],title:"Manage workspace graphs"}}),b=new fa({props:{icon:ca.ag_expand,onClick:e[6],disabled:e[18],title:"Expand selected nodes (E)"}}),k=new fa({props:{icon:ca.ag_collapse,onClick:e[7],disabled:e[18],title:"Collapse expanded nodes (C)"}}),P=new fa({props:{icon:ca.ag_hide,onClick:e[8],disabled:e[18],title:"Hide selected nodes (H)"}}),B=new fa({props:{icon:ca.ag_select_all,onClick:e[9],title:"Select all nodes (A)"}}),N=new fa({props:{icon:ca.ag_select_inverse,onClick:e[10],disabled:e[18],title:"Invert selection (I)"}}),F=new fa({props:{icon:ca.ag_select_neighbors,onClick:e[11],disabled:e[18],title:"Select neighbors (N)"}}),j=new fa({props:{icon:ca.ag_lock,onClick:e[12],disabled:e[19],title:"Lock selected nodes in place (P)"}}),W=new fa({props:{icon:ca.ag_unlock,onClick:e[13],disabled:e[20],title:"Unlock selected nodes in place (U)"}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),n=S(),q(V.$$.fragment),r=S(),q(L.$$.fragment),o=S(),a=v("div"),q(M.$$.fragment),s=S(),q(l.$$.fragment),d=S(),A=v("div"),q(c.$$.fragment),h=S(),q(g.$$.fragment),y=S(),Z=v("div"),q(b.$$.fragment),O=S(),q(k.$$.fragment),E=S(),q(P.$$.fragment),T=S(),_=v("div"),q(B.$$.fragment),D=S(),q(N.$$.fragment),R=S(),q(F.$$.fragment),I=S(),z=v("div"),q(j.$$.fragment),G=S(),q(W.$$.fragment),$=S(),U=v("br"),J=v("label"),J.textContent="Filter: ",ee=v("input"),x(t,"class","cy-toolbar-section"),x(a,"class","cy-toolbar-section"),x(A,"class","cy-toolbar-section"),x(Z,"class","cy-toolbar-section"),x(_,"class","cy-toolbar-section"),x(z,"class","cy-toolbar-section"),x(J,"for","ag-filter"),x(ee,"type","text"),x(ee,"id","ag-filter"),x(ee,"name","ag-filter"),ee.value=e[1]},m(p,v){f(p,t,v),Q(C,t,null),m(t,i),Q(H,t,null),m(t,n),Q(V,t,null),m(t,r),Q(L,t,null),f(p,o,v),f(p,a,v),Q(M,a,null),m(a,s),Q(l,a,null),f(p,d,v),f(p,A,v),Q(c,A,null),m(A,h),Q(g,A,null),f(p,y,v),f(p,Z,v),Q(b,Z,null),m(Z,O),Q(k,Z,null),m(Z,E),Q(P,Z,null),f(p,T,v),f(p,_,v),Q(B,_,null),m(_,D),Q(N,_,null),m(_,R),Q(F,_,null),f(p,I,v),f(p,z,v),Q(j,z,null),m(z,G),Q(W,z,null),f(p,$,v),f(p,U,v),f(p,J,v),f(p,ee,v),te=!0,Ce||(ie=w(ee,"input",(function(){u(e[0])&&e[0].apply(this,arguments)})),Ce=!0)},p(t,[i]){e=t;const n={};4&i&&(n.onClick=e[2]),C.$set(n);const r={};8&i&&(r.onClick=e[3]),H.$set(r);const o={};16&i&&(o.onClick=e[4]),V.$set(o);const a={};32&i&&(a.onClick=e[5]),L.$set(a);const s={};16384&i&&(s.onClick=e[14]),M.$set(s);const d={};32768&i&&(d.onClick=e[15]),l.$set(d);const u={};131072&i&&(u.workspace=e[17]),c.$set(u);const A={};65536&i&&(A.onClick=e[16]),g.$set(A);const h={};64&i&&(h.onClick=e[6]),262144&i&&(h.disabled=e[18]),b.$set(h);const m={};128&i&&(m.onClick=e[7]),262144&i&&(m.disabled=e[18]),k.$set(m);const f={};256&i&&(f.onClick=e[8]),262144&i&&(f.disabled=e[18]),P.$set(f);const p={};512&i&&(p.onClick=e[9]),B.$set(p);const v={};1024&i&&(v.onClick=e[10]),262144&i&&(v.disabled=e[18]),N.$set(v);const y={};2048&i&&(y.onClick=e[11]),262144&i&&(y.disabled=e[18]),F.$set(y);const Z={};4096&i&&(Z.onClick=e[12]),524288&i&&(Z.disabled=e[19]),j.$set(Z);const S={};8192&i&&(S.onClick=e[13]),1048576&i&&(S.disabled=e[20]),W.$set(S),(!te||2&i&&ee.value!==e[1])&&(ee.value=e[1])},i(e){te||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),Y(V.$$.fragment,e),Y(L.$$.fragment,e),Y(M.$$.fragment,e),Y(l.$$.fragment,e),Y(c.$$.fragment,e),Y(g.$$.fragment,e),Y(b.$$.fragment,e),Y(k.$$.fragment,e),Y(P.$$.fragment,e),Y(B.$$.fragment,e),Y(N.$$.fragment,e),Y(F.$$.fragment,e),Y(j.$$.fragment,e),Y(W.$$.fragment,e),te=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),X(V.$$.fragment,e),X(L.$$.fragment,e),X(M.$$.fragment,e),X(l.$$.fragment,e),X(c.$$.fragment,e),X(g.$$.fragment,e),X(b.$$.fragment,e),X(k.$$.fragment,e),X(P.$$.fragment,e),X(B.$$.fragment,e),X(N.$$.fragment,e),X(F.$$.fragment,e),X(j.$$.fragment,e),X(W.$$.fragment,e),te=!1},d(e){e&&p(t),K(C),K(H),K(V),K(L),e&&p(o),e&&p(a),K(M),K(l),e&&p(d),e&&p(A),K(c),K(g),e&&p(y),e&&p(Z),K(b),K(k),K(P),e&&p(T),e&&p(_),K(B),K(N),K(F),e&&p(I),e&&p(z),K(j),K(W),e&&p($),e&&p(U),e&&p(J),e&&p(ee),Ce=!1,ie()}}}function Sa(t,C,i){let{viz:H}=C,{filterValue:n}=C,{fdgdClick:V}=C,{concentricClick:r}=C,{gridClick:L}=C,{hierarchyClick:o}=C,{expandClick:a}=C,{collapseClick:M}=C,{hideClick:s}=C,{selectAllClick:l}=C,{selectInvertClick:d}=C,{selectNeighborClick:u}=C,{lockClick:A}=C,{unlockClick:c}=C,{fitClick:h}=C,{localModeClick:m}=C,{filterInput:f}=C,{saveClick:p}=C,{workspace:g}=C;f=e.debounce(f,500,!0);let v=!1,y=!1,Z=!0;return t.$$set=e=>{"viz"in e&&i(21,H=e.viz),"filterValue"in e&&i(1,n=e.filterValue),"fdgdClick"in e&&i(2,V=e.fdgdClick),"concentricClick"in e&&i(3,r=e.concentricClick),"gridClick"in e&&i(4,L=e.gridClick),"hierarchyClick"in e&&i(5,o=e.hierarchyClick),"expandClick"in e&&i(6,a=e.expandClick),"collapseClick"in e&&i(7,M=e.collapseClick),"hideClick"in e&&i(8,s=e.hideClick),"selectAllClick"in e&&i(9,l=e.selectAllClick),"selectInvertClick"in e&&i(10,d=e.selectInvertClick),"selectNeighborClick"in e&&i(11,u=e.selectNeighborClick),"lockClick"in e&&i(12,A=e.lockClick),"unlockClick"in e&&i(13,c=e.unlockClick),"fitClick"in e&&i(14,h=e.fitClick),"localModeClick"in e&&i(15,m=e.localModeClick),"filterInput"in e&&i(0,f=e.filterInput),"saveClick"in e&&i(16,p=e.saveClick),"workspace"in e&&i(17,g=e.workspace)},[f,n,V,r,L,o,a,M,s,l,d,u,A,c,h,m,p,g,v,y,Z,H,function(){let e=H.nodes(":selected");i(18,v=0===e.length);let t=H.nodes(".pinned"),C=e.difference(t).length>0,n=e.intersection(t);i(19,y=!C||v),i(20,Z=!n||v)}]}class ba extends te{constructor(e){super(),ee(this,e,Sa,Za,A,{viz:21,filterValue:1,fdgdClick:2,concentricClick:3,gridClick:4,hierarchyClick:5,expandClick:6,collapseClick:7,hideClick:8,selectAllClick:9,selectInvertClick:10,selectNeighborClick:11,lockClick:12,unlockClick:13,fitClick:14,localModeClick:15,filterInput:0,saveClick:16,workspace:17,onSelect:22})}get onSelect(){return this.$$.ctx[22]}}class wa{constructor(e,t){this.options=Object.assign({},wa.DEFAULT,e,{animate:!!t&&"end"})}startLayout(e){return e.viz.layout(this.options).start()}}wa.DEFAULT={name:"cola",animate:!0,refresh:2,maxSimulationTime:1500,ungrabifyWhileSimulating:!1,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,randomize:!1,avoidOverlap:!0,handleDisconnected:!0,convergenceThreshold:.01,nodeSpacing:10};class xa{constructor(e,t){this.options=Object.assign({},xa.DEFAULT,e,{animate:!!t&&"end"})}startLayout(e){return e.viz.layout(Object.assign(this.options,{linkId:function(e){return e.id}})).start()}}xa.DEFAULT={name:"d3-force",animate:"end",maxIterations:0,maxSimulationTime:1500,ungrabifyWhileSimulating:!1,fixedAfterDragging:!1,fit:!1,padding:30,alpha:1,alphaMin:.001,alphaDecay:1-Math.pow(.001,1/300),alphaTarget:0,velocityDecay:.4,collideRadius:60,collideStrength:.9,collideIterations:1,linkDistance:150,linkStrength:.7,linkIterations:1,manyBodyStrength:-600,manyBodyDistanceMin:5,xStrength:.1,xX:0,yStrength:.1,yY:0,radialStrength:.1,radialX:0,radialY:0,radialRadius:10,randomize:!1,infinite:!1};class Oa{constructor(e){this.options=Object.assign({},Oa.DEFAULT,e)}startLayout(e){return e.viz.layout(this.options).start()}}Oa.DEFAULT={name:"grid",animate:!0,animationDuration:500,spacingFactor:.5,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,avoidOverlap:!0};class ka{constructor(e){this.options=Object.assign({},ka.DEFAULT,e)}startLayout(e){return e.viz.layout(this.options).start()}}ka.DEFAULT={name:"dagre",animate:!0,animationDuration:500,spacingFactor:.5,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,avoidOverlap:!0};class Ea{constructor(e){this.options=Object.assign({},Ea.DEFAULT,e)}startLayout(e){return e.viz.layout(Object.assign(this.options,{concentric:e=>e.hasClass("active-node")?1e3:e.hasClass("expanded")?100:1})).start()}}Ea.DEFAULT={name:"concentric",animate:"end",animationDuration:500,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,avoidOverlap:!0};const Pa=function(e,t,C){switch(e){case"circle":case"concentric":return new Ea(C);case"force-directed":return t&&"d3-force"===t.fdgdLayout?new xa(C,t.animateLayout):new wa(C,t.animateLayout);case"hierarchy":case"dagre":return new ka(C);case"grid":return new Oa(C);case"cola":return new wa(C,t.animateLayout);case"d3-force":return new xa(C,t.animateLayout)}};function Ta(e){let t,C,i,H,n,V,r,L,o;return{c(){t=v("div"),C=v("div"),i=Z(e[0]),H=S(),n=v("button"),n.textContent="Load",V=S(),r=v("div"),r.innerHTML='',x(C,"class","list-item-part mod-extended"),x(n,"class","list-item-part"),x(r,"class","list-item-part clickable-icon"),x(r,"aria-label","Delete graph"),x(t,"class","list-item")},m(a,M){f(a,t,M),m(t,C),m(C,i),m(t,H),m(t,n),m(t,V),m(t,r),L||(o=[w(n,"click",(function(){u(e[1](e[0]))&&e[1](e[0]).apply(this,arguments)})),w(r,"click",(function(){u(e[2](e[0]))&&e[2](e[0]).apply(this,arguments)}))],L=!0)},p(t,[C]){e=t,1&C&&O(i,e[0])},i:M,o:M,d(e){e&&p(t),L=!1,d(o)}}}function _a(e,t,C){let{name:i}=t,{onClick:H}=t,{onDelete:n}=t;return e.$$set=e=>{"name"in e&&C(0,i=e.name),"onClick"in e&&C(1,H=e.onClick),"onDelete"in e&&C(2,n=e.onDelete)},[i,H,n]}class Ba extends te{constructor(e){super(),ee(this,e,_a,Ta,A,{name:0,onClick:1,onDelete:2})}}function Da(e,t,C){const i=e.slice();return i[9]=t[C],i}function Na(e){let t,C;return t=new Ba({props:{name:e[9],onClick:e[1],onDelete:e[4]}}),{c(){q(t.$$.fragment)},m(e,i){Q(t,e,i),C=!0},p(e,C){const i={};1&C&&(i.name=e[9]),2&C&&(i.onClick=e[1]),t.$set(i)},i(e){C||(Y(t.$$.fragment,e),C=!0)},o(e){X(t.$$.fragment,e),C=!1},d(e){K(t,e)}}}function Ra(e){let t,C,i,H,n,V,r,L,o,a,M,s=e[0],l=[];for(let t=0;tX(l[e],1,1,(()=>{l[e]=null}));return{c(){t=v("div"),C=v("input"),i=S(),H=v("button"),H.textContent="Save",n=S(),V=v("hr"),r=S(),L=v("div");for(let e=0;e{"onLoad"in e&&C(1,i=e.onLoad),"onSave"in e&&C(6,H=e.onSave),"onDelete"in e&&C(7,n=e.onDelete),"savedGraphs"in e&&C(0,V=e.savedGraphs)},[V,i,r,async e=>{await H(e),C(0,V)},async e=>{await n(e),C(0,V)},e=>"/"!==e.key||(e.preventDefault(),!1),H,n,function(){r=this.value,C(2,r)}]}class Ia extends te{constructor(e){super(),ee(this,e,Fa,Ra,A,{onLoad:1,onSave:6,onDelete:7,savedGraphs:0})}}class za extends e.Modal{constructor(e,t,C){super(e),this.manager=t,this.view=C}onOpen(){super.onOpen(),this.titleEl.innerHTML="Manage workspace graphs",new Ia({target:this.contentEl,props:{onSave:e=>this.manager.saveGraph(e,this.view),savedGraphs:this.manager.graphs,onLoad:e=>this.manager.loadGraph(e,this.view),onDelete:e=>this.manager.deleteGraph(e,this.view)}})}}class ja extends e.Component{constructor(e){super(),this.events=[],this.recursionPreventer=!1,this.view=e}onload(){this.view.vizReady?this._onLoad():this.registerEvent(this.view.on("vizReady",(e=>{this._onLoad()})))}_onLoad(){this.viz=this.view.viz;const e=this,t=this.view,C=getComputedStyle(document.body),i=C.getPropertyValue("--text-selection"),H=C.getPropertyValue("--background-secondary"),V=C.getPropertyValue("--text-normal");C.getPropertyValue("--text");const r=this.view.plugin,L={menuRadius:70,selector:"node",commands:C=>{const i=[];return"core"===n.fromNode(C).storeId&&i.push({content:Aa(ca.ag_file),select:async function(e,t,C){await r.openFileFromNode(e,C.originalEvent.metaKey)},enabled:!0}),i.push({content:Aa(ca.ag_hide),select:function(t){e.removeNodes(t)},enabled:!0},{content:Aa(ca.ag_fit),select:function(t){e.updateActiveNode(t,!0)},enabled:!0}),C.hasClass("pinned")?i.push({content:Aa(ca.ag_unlock),select:function(t){e.unpin(t)},enabled:!0}):i.push({content:Aa(ca.ag_lock),select:function(t){e.pin(t)},enabled:!0}),C.hasClass("expanded")?i.push({content:Aa(ca.ag_collapse),select:function(t){e.removeNodes(t)},enabled:!0}):i.push({content:Aa(ca.ag_expand),select:function(e){t.expand(e)},enabled:!0}),i},fillColor:`${H}`,activeFillColor:`${i}`,activePadding:20,indicatorSize:24,separatorWidth:3,spotlightPadding:0,adaptativeNodeSpotlightRadius:!0,openMenuEvents:"taphold",itemColor:`${V}`,itemTextShadowColor:"transparent",zIndex:9999,atMouse:!1,outsideMenuCancel:15};this.menu=this.viz.cxtmenu(L),this.registerCyEvent("tap","node",(async e=>{if(!this.view.settings.openWithShift||e.originalEvent.shiftKey){await this.view.plugin.openFileFromNode(e.target,e.originalEvent.metaKey)&&this.updateActiveNode(e.target,this.view.settings.autoZoom)}})),this.registerCyEvent("taphold","node",(e=>{this.view.destroyHover&&this.view.destroyHover()})),this.registerCyEvent("dblclick","node",(async e=>{await this.view.expand(e.target)})),this.registerCyEvent("tapselect tapunselect boxselect",null,(e=>{this.view.trigger("selectChange")})),this.registerEvent(this.view.workspace.on("file-open",(async e=>{if(this.view.settings.autoAddNodes&&e&&this.view.settings.autoAddNodes){const t=e.name,C=new n(t,"core");let i=!0;if(0===this.viz.$id(C.toId()).length){const e=await this.view.datastores.coreStore.get(C,this.view);this.viz.startBatch(),this.viz.add(e).addClass("protected");const t=await this.view.buildEdges(this.viz.$id(C.toId()));this.viz.add(t),this.view.onGraphChanged(!1,!0),this.viz.endBatch(),i=!1}const H=this.viz.$id(C.toId());H.addClass("protected"),this.updateActiveNode(H,i&&this.view.settings.autoZoom)}}))),this.registerEvent(this.view.on("expand",(e=>{this.updateActiveNode(e,!1)}))),this.registerEvent(this.view.on("elementsChange",(()=>{this.recursionPreventer||(this.viz.nodes().difference(this.viz.nodes(".protected")).filter((e=>0===e.closedNeighborhood("node.protected").length)).remove(),this.updateActiveNode(this.viz.nodes(".active-node"),!1),this.recursionPreventer=!0,this.view.onGraphChanged(),this.recursionPreventer=!1)}))),this.windowEvent=async e=>{document.activeElement===this.view.element&&("e"===e.key?await this.expandSelection():"h"===e.key||"Backspace"===e.key?this.removeSelection():"i"===e.key?this.invertSelection():"a"===e.key?this.selectAll():"n"===e.key?this.selectNeighboursOfSelected():"p"===e.key?this.pinSelection():"u"===e.key?this.unpinSelection():"c"===e.key?this.collapseSelection():"v"===e.key?this.view.fitView():"f"===e.key&&this.view.fitView(this.viz.nodes(":selected")))},document.on("keydown",".cy-content",this.windowEvent,!0)}registerCyEvent(e,t,C){this.events.push({eventName:e,selector:t,event:C}),t?this.viz.on(e,t,C):this.viz.on(e,C)}onunload(){for(const e of this.events)e.selector?this.viz.off(e.eventName,e.selector,e.event):this.viz.off(e.eventName,e.event);this.events=[],document.off("keydown",".cy-content",this.windowEvent,!0),this.toolbar&&this.toolbar.$destroy(),this.menu&&this.menu.destroy()}getName(){return"workspace"}fillMenu(e,t){if(t.length>0&&(e.addItem((e=>{e.setTitle("Expand selection (E)").setIcon("ag-expand").onClick((async e=>{await this.view.expand(t)}))})),e.addItem((e=>{e.setTitle("Collapse selection (C)").setIcon("ag-collapse").onClick((e=>{this.collapse(t)}))})),e.addItem((e=>{e.setTitle("Hide selection (H)").setIcon("ag-hide").onClick((e=>{this.removeNodes(t)}))})),e.addItem((e=>{e.setTitle("Select all (A)").setIcon("ag-select-all").onClick((e=>{this.selectAll()}))})),e.addItem((e=>{e.setTitle("Invert selection (I)").setIcon("ag-select-inverse").onClick((e=>{this.invertSelection()}))}))),t.length>0){e.addItem((e=>{e.setTitle("Select neighbors (N)").setIcon("ag-select-neighbors").onClick((e=>{this.selectNeighbourhood(t)}))}));const C=this.view.getPinned();t.difference(C).length>0&&e.addItem((e=>{e.setTitle("Pin selection (P)").setIcon("ag-lock").onClick((e=>{this.pin(t)}))})),t.intersect(C).length>0&&e.addItem((e=>{e.setTitle("Unpin selection (U)").setIcon("ag-unlock").onClick((e=>{this.unpin(t)}))}))}}createToolbar(e){this.toolbar=new ba({target:e,props:{viz:this.viz,filterValue:this.view.settings.filter,expandClick:this.expandSelection.bind(this),fdgdClick:()=>this.view.setLayout(Pa("force-directed",this.view.settings)),concentricClick:()=>this.view.setLayout(Pa("circle")),gridClick:()=>this.view.setLayout(Pa("grid")),hierarchyClick:()=>this.view.setLayout(Pa("hierarchy")),collapseClick:this.collapseSelection.bind(this),hideClick:this.removeSelection.bind(this),selectAllClick:this.selectAll.bind(this),selectInvertClick:this.invertSelection.bind(this),selectNeighborClick:this.selectNeighboursOfSelected.bind(this),lockClick:this.pinSelection.bind(this),unlockClick:this.unpinSelection.bind(this),fitClick:this.view.fitView.bind(this.view),localModeClick:()=>this.view.setMode("local"),filterInput:e=>{this.view.searchFilter(e.target.value),this.view.restartLayout()},saveClick:()=>{"app"in this.view.plugin&&"workspaceManager"in this.view.plugin&&new za(this.view.plugin.app,this.view.plugin.workspaceManager,this.view).open()},workspace:this.view.plugin.app.workspace}}),this.view.on("selectChange",this.toolbar.onSelect.bind(this.toolbar)),this.view.on("vizReady",(e=>{this.toolbar.$set({viz:e}),this.toolbar.onSelect.bind(this.toolbar)()}))}updateActiveNode(e,t){this.viz.elements().removeClass(["connected-active-node","active-node","inactive-node"]).difference(e.closedNeighborhood()).addClass("inactive-node"),e.addClass("active-node");const C=e.connectedEdges().addClass("connected-active-node").connectedNodes().addClass("connected-active-node").union(e);t&&this.viz.animate({fit:{eles:C,padding:0},duration:250,queue:!1}),this.viz.one("tap",(e=>{e.cy.elements().removeClass(["connected-active-node","active-node","inactive-node"])}))}async expandSelection(){await this.view.expand(this.viz.nodes(":selected"))}collapse(e){e.filter(":selected").removeClass(["protected","expanded"]).openNeighborhood().nodes().filter((e=>0===e.closedNeighborhood("node.protected").length)).remove(),this.recursionPreventer=!0,this.view.onGraphChanged(!0,!0),this.recursionPreventer=!1}collapseSelection(){this.collapse(this.viz.nodes(":selected"))}removeNodes(e){e.addClass("hard-filtered"),this.view.onGraphChanged(!0,!0),this.view.trigger("hide",e),this.view.trigger("selectChange")}removeSelection(){this.removeNodes(this.viz.nodes(":selected"))}selectAll(){this.viz.nodes().select(),this.view.trigger("selectChange")}invertSelection(){this.viz.$(":selected").unselect().absoluteComplement().select(),this.view.trigger("selectChange")}selectNeighboursOfSelected(){this.selectNeighbourhood(this.viz.nodes(":selected"))}selectNeighbourhood(e){this.viz.nodes(":selected").unselect(),e.openNeighborhood().select(),this.view.trigger("selectChange")}unpin(e){const t=e.unlock().removeClass("pinned");this.view.restartLayout(),this.view.trigger("unpin",t)}unpinSelection(){this.unpin(this.viz.nodes(":selected"))}pin(e){const t=e.lock().addClass("pinned");this.view.restartLayout(),this.view.trigger("pin",t)}pinSelection(){this.pin(this.viz.nodes(":selected"))}}function Ga(e){let t,C,i,H,n,V,r,L,o,a,M,s,l,d,A,c,h,g,y,Z,b,O,k;return C=new fa({props:{icon:ca.ag_fdgd,onClick:e[1],title:"Force directed layout"}}),H=new fa({props:{icon:ca.ag_concentric,onClick:e[2],title:"Circle layout"}}),V=new fa({props:{icon:ca.ag_grid,onClick:e[3],title:"Grid layout"}}),L=new fa({props:{icon:ca.ag_hierarchy,onClick:e[4],title:"Hierarchical layout"}}),M=new fa({props:{icon:ca.ag_fit,onClick:e[5],title:"Fit view"}}),l=new fa({props:{icon:ca.ag_workspace,onClick:e[6],title:"Workspace mode"}}),c=new ya({props:{workspace:e[8]}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),n=S(),q(V.$$.fragment),r=S(),q(L.$$.fragment),o=S(),a=v("div"),q(M.$$.fragment),s=S(),q(l.$$.fragment),d=S(),A=v("div"),q(c.$$.fragment),h=S(),g=v("br"),y=v("label"),y.textContent="Filter: ",Z=v("input"),x(t,"class","cy-toolbar-section"),x(a,"class","cy-toolbar-section"),x(A,"class","cy-toolbar-section"),x(y,"for","ag-filter"),x(Z,"type","text"),x(Z,"id","ag-filter"),x(Z,"name","ag-filter"),Z.value=e[7]},m(p,v){f(p,t,v),Q(C,t,null),m(t,i),Q(H,t,null),m(t,n),Q(V,t,null),m(t,r),Q(L,t,null),f(p,o,v),f(p,a,v),Q(M,a,null),m(a,s),Q(l,a,null),f(p,d,v),f(p,A,v),Q(c,A,null),f(p,h,v),f(p,g,v),f(p,y,v),f(p,Z,v),b=!0,O||(k=w(Z,"input",(function(){u(e[0])&&e[0].apply(this,arguments)})),O=!0)},p(t,[i]){e=t;const n={};2&i&&(n.onClick=e[1]),C.$set(n);const r={};4&i&&(r.onClick=e[2]),H.$set(r);const o={};8&i&&(o.onClick=e[3]),V.$set(o);const a={};16&i&&(a.onClick=e[4]),L.$set(a);const s={};32&i&&(s.onClick=e[5]),M.$set(s);const d={};64&i&&(d.onClick=e[6]),l.$set(d);const u={};256&i&&(u.workspace=e[8]),c.$set(u),(!b||128&i&&Z.value!==e[7])&&(Z.value=e[7])},i(e){b||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),Y(V.$$.fragment,e),Y(L.$$.fragment,e),Y(M.$$.fragment,e),Y(l.$$.fragment,e),Y(c.$$.fragment,e),b=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),X(V.$$.fragment,e),X(L.$$.fragment,e),X(M.$$.fragment,e),X(l.$$.fragment,e),X(c.$$.fragment,e),b=!1},d(e){e&&p(t),K(C),K(H),K(V),K(L),e&&p(o),e&&p(a),K(M),K(l),e&&p(d),e&&p(A),K(c),e&&p(h),e&&p(g),e&&p(y),e&&p(Z),O=!1,k()}}}function Wa(t,C,i){let{fdgdClick:H}=C,{concentricClick:n}=C,{gridClick:V}=C,{hierarchyClick:r}=C,{fitClick:L}=C,{workspaceModeClick:o}=C,{filterInput:a}=C,{filterValue:M}=C,{workspace:s}=C;return a=e.debounce(a,500,!0),t.$$set=e=>{"fdgdClick"in e&&i(1,H=e.fdgdClick),"concentricClick"in e&&i(2,n=e.concentricClick),"gridClick"in e&&i(3,V=e.gridClick),"hierarchyClick"in e&&i(4,r=e.hierarchyClick),"fitClick"in e&&i(5,L=e.fitClick),"workspaceModeClick"in e&&i(6,o=e.workspaceModeClick),"filterInput"in e&&i(0,a=e.filterInput),"filterValue"in e&&i(7,M=e.filterValue),"workspace"in e&&i(8,s=e.workspace)},[a,H,n,V,r,L,o,M,s]}class $a extends te{constructor(e){super(),ee(this,e,Wa,Ga,A,{fdgdClick:1,concentricClick:2,gridClick:3,hierarchyClick:4,fitClick:5,workspaceModeClick:6,filterInput:0,filterValue:7,workspace:8})}}class Ua extends e.Component{constructor(e){super(),this.events=[],this.view=e}onload(){this.view.vizReady?this._onLoad():this.registerEvent(this.view.on("vizReady",(e=>{this._onLoad()})))}_onLoad(){this.viz=this.view.viz,this.registerCyEvent("tap","node",(async e=>{const t=await this.view.plugin.openFileFromNode(e.target,e.originalEvent.metaKey);t&&await this.onOpenFile(t)})),this.registerEvent(this.view.workspace.on("file-open",(async e=>{e&&await this.onOpenFile(e)})))}async onOpenFile(e){if(!this.view.settings.autoAddNodes)return;const t=new n(e.name,"core");let C;if(this.viz.startBatch(),0===this.viz.$id(t.toId()).length){const e=await this.view.datastores.coreStore.get(t,this.view);C=this.viz.add(e)}else C=this.viz.$id(t.toId());await this.view.expand(C,!1),C.addClass("active-node"),this.viz.nodes().difference(C.closedNeighborhood()).remove(),this.view.onGraphChanged(!1),this.updateActiveFile(C),this.viz.endBatch()}registerCyEvent(e,t,C){this.events.push({eventName:e,selector:t,event:C}),t?this.viz.on(e,t,C):this.viz.on(e,C)}onunload(){for(const e of this.events)e.selector?this.viz.off(e.eventName,e.selector,e.event):this.viz.off(e.eventName,e.event);this.events=[],this.toolbar.$destroy()}getName(){return"local"}fillMenu(e,t){}createToolbar(e){const t=this.view;this.toolbar=new $a({target:e,props:{viz:this.viz,fitClick:this.view.fitView.bind(t),fdgdClick:()=>this.view.setLayout(Pa("force-directed",this.view.settings)),concentricClick:()=>this.view.setLayout(Pa("circle")),gridClick:()=>this.view.setLayout(Pa("grid")),hierarchyClick:()=>this.view.setLayout(Pa("hierarchy")),workspaceModeClick:()=>t.setMode("workspace"),filterInput:e=>{this.view.searchFilter(e.target.value),this.view.restartLayout()},filterValue:this.view.settings.filter,workspace:this.view.plugin.app.workspace}})}updateActiveFile(e){this.viz.elements().removeClass(["connected-active-node","active-node","inactive-node"]).difference(e.closedNeighborhood()).addClass("inactive-node"),e.addClass("active-node"),e.connectedEdges().addClass("connected-active-node").connectedNodes().addClass("connected-active-node").union(e)}} + +/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass + then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */ +var generateSpringRK4 = function () { + function springAccelerationForState(state) { + return -state.tension * state.x - state.friction * state.v; + } + + function springEvaluateStateWithDerivative(initialState, dt, derivative) { + var state = { + x: initialState.x + derivative.dx * dt, + v: initialState.v + derivative.dv * dt, + tension: initialState.tension, + friction: initialState.friction + }; + return { + dx: state.v, + dv: springAccelerationForState(state) + }; + } + + function springIntegrateState(state, dt) { + var a = { + dx: state.v, + dv: springAccelerationForState(state) + }, + b = springEvaluateStateWithDerivative(state, dt * 0.5, a), + c = springEvaluateStateWithDerivative(state, dt * 0.5, b), + d = springEvaluateStateWithDerivative(state, dt, c), + dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx), + dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv); + state.x = state.x + dxdt * dt; + state.v = state.v + dvdt * dt; + return state; + } + + return function springRK4Factory(tension, friction, duration) { + var initState = { + x: -1, + v: 0, + tension: null, + friction: null + }, + path = [0], + time_lapsed = 0, + tolerance = 1 / 10000, + DT = 16 / 1000, + have_duration, + dt, + last_state; + tension = parseFloat(tension) || 500; + friction = parseFloat(friction) || 20; + duration = duration || null; + initState.tension = tension; + initState.friction = friction; + have_duration = duration !== null; + /* Calculate the actual time it takes for this animation to complete with the provided conditions. */ + + if (have_duration) { + /* Run the simulation without a duration. */ + time_lapsed = springRK4Factory(tension, friction); + /* Compute the adjusted time delta. */ + + dt = time_lapsed / duration * DT; + } else { + dt = DT; + } + + for (;;) { + /* Next/step function .*/ + last_state = springIntegrateState(last_state || initState, dt); + /* Store the position. */ + + path.push(1 + last_state.x); + time_lapsed += 16; + /* If the change threshold is reached, break. */ + + if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) { + break; + } + } + /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the + computed path and returns a snapshot of the position according to a given percentComplete. */ + + + return !have_duration ? time_lapsed : function (percentComplete) { + return path[percentComplete * (path.length - 1) | 0]; + }; + }; +}(); + +var cubicBezier = function cubicBezier(t1, p1, t2, p2) { + var bezier = generateCubicBezier(t1, p1, t2, p2); + return function (start, end, percent) { + return start + (end - start) * bezier(percent); + }; +}; + +var easings = { + 'linear': function linear(start, end, percent) { + return start + (end - start) * percent; + }, + // default easings + 'ease': cubicBezier(0.25, 0.1, 0.25, 1), + 'ease-in': cubicBezier(0.42, 0, 1, 1), + 'ease-out': cubicBezier(0, 0, 0.58, 1), + 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1), + // sine + 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715), + 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1), + 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95), + // quad + 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53), + 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94), + 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955), + // cubic + 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19), + 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1), + 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1), + // quart + 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22), + 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1), + 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1), + // quint + 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06), + 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1), + 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1), + // expo + 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035), + 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1), + 'ease-in-out-expo': cubicBezier(1, 0, 0, 1), + // circ + 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335), + 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1), + 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86), + // user param easings... + 'spring': function spring(tension, friction, duration) { + if (duration === 0) { + // can't get a spring w/ duration 0 + return easings.linear; // duration 0 => jump to end so impl doesn't matter + } + + var spring = generateSpringRK4(tension, friction, duration); + return function (start, end, percent) { + return start + (end - start) * spring(percent); + }; + }, + 'cubic-bezier': cubicBezier +}; + +function getEasedValue(type, start, end, percent, easingFn) { + if (percent === 1) { + return end; + } + + if (start === end) { + return end; + } + + var val = easingFn(start, end, percent); + + if (type == null) { + return val; + } + + if (type.roundValue || type.color) { + val = Math.round(val); + } + + if (type.min !== undefined) { + val = Math.max(val, type.min); + } + + if (type.max !== undefined) { + val = Math.min(val, type.max); + } + + return val; +} + +function getValue$1(prop, spec) { + if (prop.pfValue != null || prop.value != null) { + if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) { + return prop.pfValue; + } else { + return prop.value; + } + } else { + return prop; + } +} + +function ease(startProp, endProp, percent, easingFn, propSpec) { + var type = propSpec != null ? propSpec.type : null; + + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + + var start = getValue$1(startProp, propSpec); + var end = getValue$1(endProp, propSpec); + + if (number(start) && number(end)) { + return getEasedValue(type, start, end, percent, easingFn); + } else if (array(start) && array(end)) { + var easedArr = []; + + for (var i = 0; i < end.length; i++) { + var si = start[i]; + var ei = end[i]; + + if (si != null && ei != null) { + var val = getEasedValue(type, si, ei, percent, easingFn); + easedArr.push(val); + } else { + easedArr.push(ei); + } + } + + return easedArr; + } + + return undefined; +} + +function step(self, ani, now, isCore) { + var isEles = !isCore; + var _p = self._private; + var ani_p = ani._private; + var pEasing = ani_p.easing; + var startTime = ani_p.startTime; + var cy = isCore ? self : self.cy(); + var style = cy.style(); + + if (!ani_p.easingImpl) { + if (pEasing == null) { + // use default + ani_p.easingImpl = easings['linear']; + } else { + // then define w/ name + var easingVals; + + if (string(pEasing)) { + var easingProp = style.parse('transition-timing-function', pEasing); + easingVals = easingProp.value; + } else { + // then assume preparsed array + easingVals = pEasing; + } + + var name, args; + + if (string(easingVals)) { + name = easingVals; + args = []; + } else { + name = easingVals[1]; + args = easingVals.slice(2).map(function (n) { + return +n; + }); + } + + if (args.length > 0) { + // create with args + if (name === 'spring') { + args.push(ani_p.duration); // need duration to generate spring + } + + ani_p.easingImpl = easings[name].apply(null, args); + } else { + // static impl by name + ani_p.easingImpl = easings[name]; + } + } + } + + var easing = ani_p.easingImpl; + var percent; + + if (ani_p.duration === 0) { + percent = 1; + } else { + percent = (now - startTime) / ani_p.duration; + } + + if (ani_p.applying) { + percent = ani_p.progress; + } + + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + + if (ani_p.delay == null) { + // then update + var startPos = ani_p.startPosition; + var endPos = ani_p.position; + + if (endPos && isEles && !self.locked()) { + var newPos = {}; + + if (valid(startPos.x, endPos.x)) { + newPos.x = ease(startPos.x, endPos.x, percent, easing); + } + + if (valid(startPos.y, endPos.y)) { + newPos.y = ease(startPos.y, endPos.y, percent, easing); + } + + self.position(newPos); + } + + var startPan = ani_p.startPan; + var endPan = ani_p.pan; + var pan = _p.pan; + var animatingPan = endPan != null && isCore; + + if (animatingPan) { + if (valid(startPan.x, endPan.x)) { + pan.x = ease(startPan.x, endPan.x, percent, easing); + } + + if (valid(startPan.y, endPan.y)) { + pan.y = ease(startPan.y, endPan.y, percent, easing); + } + + self.emit('pan'); + } + + var startZoom = ani_p.startZoom; + var endZoom = ani_p.zoom; + var animatingZoom = endZoom != null && isCore; + + if (animatingZoom) { + if (valid(startZoom, endZoom)) { + _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom); + } + + self.emit('zoom'); + } + + if (animatingPan || animatingZoom) { + self.emit('viewport'); + } + + var props = ani_p.style; + + if (props && props.length > 0 && isEles) { + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + var _name = prop.name; + var end = prop; + var start = ani_p.startStyle[_name]; + var propSpec = style.properties[start.name]; + var easedVal = ease(start, end, percent, easing, propSpec); + style.overrideBypass(self, _name, easedVal); + } // for props + + + self.emit('style'); + } // if + + } + + ani_p.progress = percent; + return percent; +} + +function valid(start, end) { + if (start == null || end == null) { + return false; + } + + if (number(start) && number(end)) { + return true; + } else if (start && end) { + return true; + } + + return false; +} + +function startAnimation(self, ani, now, isCore) { + var ani_p = ani._private; + ani_p.started = true; + ani_p.startTime = now - ani_p.progress * ani_p.duration; +} + +function stepAll(now, cy) { + var eles = cy._private.aniEles; + var doneEles = []; + + function stepOne(ele, isCore) { + var _p = ele._private; + var current = _p.animation.current; + var queue = _p.animation.queue; + var ranAnis = false; // if nothing currently animating, get something from the queue + + if (current.length === 0) { + var next = queue.shift(); + + if (next) { + current.push(next); + } + } + + var callbacks = function callbacks(_callbacks) { + for (var j = _callbacks.length - 1; j >= 0; j--) { + var cb = _callbacks[j]; + cb(); + } + + _callbacks.splice(0, _callbacks.length); + }; // step and remove if done + + + for (var i = current.length - 1; i >= 0; i--) { + var ani = current[i]; + var ani_p = ani._private; + + if (ani_p.stopped) { + current.splice(i, 1); + ani_p.hooked = false; + ani_p.playing = false; + ani_p.started = false; + callbacks(ani_p.frames); + continue; + } + + if (!ani_p.playing && !ani_p.applying) { + continue; + } // an apply() while playing shouldn't do anything + + + if (ani_p.playing && ani_p.applying) { + ani_p.applying = false; + } + + if (!ani_p.started) { + startAnimation(ele, ani, now); + } + + step(ele, ani, now, isCore); + + if (ani_p.applying) { + ani_p.applying = false; + } + + callbacks(ani_p.frames); + + if (ani_p.step != null) { + ani_p.step(now); + } + + if (ani.completed()) { + current.splice(i, 1); + ani_p.hooked = false; + ani_p.playing = false; + ani_p.started = false; + callbacks(ani_p.completes); + } + + ranAnis = true; + } + + if (!isCore && current.length === 0 && queue.length === 0) { + doneEles.push(ele); + } + + return ranAnis; + } // stepElement + // handle all eles + + + var ranEleAni = false; + + for (var e = 0; e < eles.length; e++) { + var ele = eles[e]; + var handledThisEle = stepOne(ele); + ranEleAni = ranEleAni || handledThisEle; + } // each element + + + var ranCoreAni = stepOne(cy, true); // notify renderer + + if (ranEleAni || ranCoreAni) { + if (eles.length > 0) { + cy.notify('draw', eles); + } else { + cy.notify('draw'); + } + } // remove elements from list of currently animating if its queues are empty + + + eles.unmerge(doneEles); + cy.emit('step'); +} // stepAll + +var corefn$1 = { + // pull in animation functions + animate: define$3.animate(), + animation: define$3.animation(), + animated: define$3.animated(), + clearQueue: define$3.clearQueue(), + delay: define$3.delay(), + delayAnimation: define$3.delayAnimation(), + stop: define$3.stop(), + addToAnimationPool: function addToAnimationPool(eles) { + var cy = this; + + if (!cy.styleEnabled()) { + return; + } // save cycles when no style used + + + cy._private.aniEles.merge(eles); + }, + stopAnimationLoop: function stopAnimationLoop() { + this._private.animationsRunning = false; + }, + startAnimationLoop: function startAnimationLoop() { + var cy = this; + cy._private.animationsRunning = true; + + if (!cy.styleEnabled()) { + return; + } // save cycles when no style used + // NB the animation loop will exec in headless environments if style enabled + // and explicit cy.destroy() is necessary to stop the loop + + + function headlessStep() { + if (!cy._private.animationsRunning) { + return; + } + + requestAnimationFrame$1(function animationStep(now) { + stepAll(now, cy); + headlessStep(); + }); + } + + var renderer = cy.renderer(); + + if (renderer && renderer.beforeRender) { + // let the renderer schedule animations + renderer.beforeRender(function rendererAnimationStep(willDraw, now) { + stepAll(now, cy); + }, renderer.beforeRenderPriorities.animations); + } else { + // manage the animation loop ourselves + headlessStep(); // first call + } + } +}; + +var emitterOptions$1 = { + qualifierCompare: function qualifierCompare(selector1, selector2) { + if (selector1 == null || selector2 == null) { + return selector1 == null && selector2 == null; + } else { + return selector1.sameText(selector2); + } + }, + eventMatches: function eventMatches(cy, listener, eventObj) { + var selector = listener.qualifier; + + if (selector != null) { + return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + } + + return true; + }, + addEventFields: function addEventFields(cy, evt) { + evt.cy = cy; + evt.target = cy; + }, + callbackContext: function callbackContext(cy, listener, eventObj) { + return listener.qualifier != null ? eventObj.target : cy; + } +}; + +var argSelector$1 = function argSelector(arg) { + if (string(arg)) { + return new Selector(arg); + } else { + return arg; + } +}; + +var elesfn$v = { + createEmitter: function createEmitter() { + var _p = this._private; + + if (!_p.emitter) { + _p.emitter = new Emitter(emitterOptions$1, this); + } + + return this; + }, + emitter: function emitter() { + return this._private.emitter; + }, + on: function on(events, selector, callback) { + this.emitter().on(events, argSelector$1(selector), callback); + return this; + }, + removeListener: function removeListener(events, selector, callback) { + this.emitter().removeListener(events, argSelector$1(selector), callback); + return this; + }, + removeAllListeners: function removeAllListeners() { + this.emitter().removeAllListeners(); + return this; + }, + one: function one(events, selector, callback) { + this.emitter().one(events, argSelector$1(selector), callback); + return this; + }, + once: function once(events, selector, callback) { + this.emitter().one(events, argSelector$1(selector), callback); + return this; + }, + emit: function emit(events, extraParams) { + this.emitter().emit(events, extraParams); + return this; + }, + emitAndNotify: function emitAndNotify(event, eles) { + this.emit(event); + this.notify(event, eles); + return this; + } +}; +define$3.eventAliasesOn(elesfn$v); + +var corefn$2 = { + png: function png(options) { + var renderer = this._private.renderer; + options = options || {}; + return renderer.png(options); + }, + jpg: function jpg(options) { + var renderer = this._private.renderer; + options = options || {}; + options.bg = options.bg || '#fff'; + return renderer.jpg(options); + } +}; +corefn$2.jpeg = corefn$2.jpg; + +var corefn$3 = { + layout: function layout(options) { + var cy = this; + + if (options == null) { + error('Layout options must be specified to make a layout'); + return; + } + + if (options.name == null) { + error('A `name` must be specified to make a layout'); + return; + } + + var name = options.name; + var Layout = cy.extension('layout', name); + + if (Layout == null) { + error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?'); + return; + } + + var eles; + + if (string(options.eles)) { + eles = cy.$(options.eles); + } else { + eles = options.eles != null ? options.eles : cy.$(); + } + + var layout = new Layout(extend({}, options, { + cy: cy, + eles: eles + })); + return layout; + } +}; +corefn$3.createLayout = corefn$3.makeLayout = corefn$3.layout; + +var corefn$4 = { + notify: function notify(eventName, eventEles) { + var _p = this._private; + + if (this.batching()) { + _p.batchNotifications = _p.batchNotifications || {}; + var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection(); + + if (eventEles != null) { + eles.merge(eventEles); + } + + return; // notifications are disabled during batching + } + + if (!_p.notificationsEnabled) { + return; + } // exit on disabled + + + var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528 + + if (this.destroyed() || !renderer) { + return; + } + + renderer.notify(eventName, eventEles); + }, + notifications: function notifications(bool) { + var p = this._private; + + if (bool === undefined) { + return p.notificationsEnabled; + } else { + p.notificationsEnabled = bool ? true : false; + } + + return this; + }, + noNotifications: function noNotifications(callback) { + this.notifications(false); + callback(); + this.notifications(true); + }, + batching: function batching() { + return this._private.batchCount > 0; + }, + startBatch: function startBatch() { + var _p = this._private; + + if (_p.batchCount == null) { + _p.batchCount = 0; + } + + if (_p.batchCount === 0) { + _p.batchStyleEles = this.collection(); + _p.batchNotifications = {}; + } + + _p.batchCount++; + return this; + }, + endBatch: function endBatch() { + var _p = this._private; + + if (_p.batchCount === 0) { + return this; + } + + _p.batchCount--; + + if (_p.batchCount === 0) { + // update style for dirty eles + _p.batchStyleEles.updateStyle(); + + var renderer = this.renderer(); // notify the renderer of queued eles and event types + + Object.keys(_p.batchNotifications).forEach(function (eventName) { + var eles = _p.batchNotifications[eventName]; + + if (eles.empty()) { + renderer.notify(eventName); + } else { + renderer.notify(eventName, eles); + } + }); + } + + return this; + }, + batch: function batch(callback) { + this.startBatch(); + callback(); + this.endBatch(); + return this; + }, + // for backwards compatibility + batchData: function batchData(map) { + var cy = this; + return this.batch(function () { + var ids = Object.keys(map); + + for (var i = 0; i < ids.length; i++) { + var id = ids[i]; + var data = map[id]; + var ele = cy.getElementById(id); + ele.data(data); + } + }); + } +}; + +var rendererDefaults = defaults$1({ + hideEdgesOnViewport: false, + textureOnViewport: false, + motionBlur: false, + motionBlurOpacity: 0.05, + pixelRatio: undefined, + desktopTapThreshold: 4, + touchTapThreshold: 8, + wheelSensitivity: 1, + debug: false, + showFps: false +}); +var corefn$5 = { + renderTo: function renderTo(context, zoom, pan, pxRatio) { + var r = this._private.renderer; + r.renderTo(context, zoom, pan, pxRatio); + return this; + }, + renderer: function renderer() { + return this._private.renderer; + }, + forceRender: function forceRender() { + this.notify('draw'); + return this; + }, + resize: function resize() { + this.invalidateSize(); + this.emitAndNotify('resize'); + return this; + }, + initRenderer: function initRenderer(options) { + var cy = this; + var RendererProto = cy.extension('renderer', options.name); + + if (RendererProto == null) { + error("Can not initialise: No such renderer `".concat(options.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); + return; + } + + if (options.wheelSensitivity !== undefined) { + warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); + } + + var rOpts = rendererDefaults(options); + rOpts.cy = cy; + cy._private.renderer = new RendererProto(rOpts); + this.notify('init'); + }, + destroyRenderer: function destroyRenderer() { + var cy = this; + cy.notify('destroy'); // destroy the renderer + + var domEle = cy.container(); + + if (domEle) { + domEle._cyreg = null; + + while (domEle.childNodes.length > 0) { + domEle.removeChild(domEle.childNodes[0]); + } + } + + cy._private.renderer = null; // to be extra safe, remove the ref + + cy.mutableElements().forEach(function (ele) { + var _p = ele._private; + _p.rscratch = {}; + _p.rstyle = {}; + _p.animation.current = []; + _p.animation.queue = []; + }); + }, + onRender: function onRender(fn) { + return this.on('render', fn); + }, + offRender: function offRender(fn) { + return this.off('render', fn); + } +}; +corefn$5.invalidateDimensions = corefn$5.resize; + +var corefn$6 = { + // get a collection + // - empty collection on no args + // - collection of elements in the graph on selector arg + // - guarantee a returned collection when elements or collection specified + collection: function collection(eles, opts) { + if (string(eles)) { + return this.$(eles); + } else if (elementOrCollection(eles)) { + return eles.collection(); + } else if (array(eles)) { + return new Collection(this, eles, opts); + } + + return new Collection(this); + }, + nodes: function nodes(selector) { + var nodes = this.$(function (ele) { + return ele.isNode(); + }); + + if (selector) { + return nodes.filter(selector); + } + + return nodes; + }, + edges: function edges(selector) { + var edges = this.$(function (ele) { + return ele.isEdge(); + }); + + if (selector) { + return edges.filter(selector); + } + + return edges; + }, + // search the graph like jQuery + $: function $(selector) { + var eles = this._private.elements; + + if (selector) { + return eles.filter(selector); + } else { + return eles.spawnSelf(); + } + }, + mutableElements: function mutableElements() { + return this._private.elements; + } +}; // aliases + +corefn$6.elements = corefn$6.filter = corefn$6.$; + +var styfn = {}; // keys for style blocks, e.g. ttfftt + +var TRUE = 't'; +var FALSE = 'f'; // (potentially expensive calculation) +// apply the style to the element based on +// - its bypass +// - what selectors match it + +styfn.apply = function (eles) { + var self = this; + var _p = self._private; + var cy = _p.cy; + var updatedEles = cy.collection(); + + for (var ie = 0; ie < eles.length; ie++) { + var ele = eles[ie]; + var cxtMeta = self.getContextMeta(ele); + + if (cxtMeta.empty) { + continue; + } + + var cxtStyle = self.getContextStyle(cxtMeta); + var app = self.applyContextStyle(cxtMeta, cxtStyle, ele); + + if (ele._private.appliedInitStyle) { + self.updateTransitions(ele, app.diffProps); + } else { + ele._private.appliedInitStyle = true; + } + + var hintsDiff = self.updateStyleHints(ele); + + if (hintsDiff) { + updatedEles.push(ele); + } + } // for elements + + + return updatedEles; +}; + +styfn.getPropertiesDiff = function (oldCxtKey, newCxtKey) { + var self = this; + var cache = self._private.propDiffs = self._private.propDiffs || {}; + var dualCxtKey = oldCxtKey + '-' + newCxtKey; + var cachedVal = cache[dualCxtKey]; + + if (cachedVal) { + return cachedVal; + } + + var diffProps = []; + var addedProp = {}; + + for (var i = 0; i < self.length; i++) { + var cxt = self[i]; + var oldHasCxt = oldCxtKey[i] === TRUE; + var newHasCxt = newCxtKey[i] === TRUE; + var cxtHasDiffed = oldHasCxt !== newHasCxt; + var cxtHasMappedProps = cxt.mappedProperties.length > 0; + + if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) { + var props = void 0; + + if (cxtHasDiffed && cxtHasMappedProps) { + props = cxt.properties; // suffices b/c mappedProperties is a subset of properties + } else if (cxtHasDiffed) { + props = cxt.properties; // need to check them all + } else if (cxtHasMappedProps) { + props = cxt.mappedProperties; // only need to check mapped + } + + for (var j = 0; j < props.length; j++) { + var prop = props[j]; + var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter + // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result + // is cached) + + var laterCxtOverrides = false; + + for (var k = i + 1; k < self.length; k++) { + var laterCxt = self[k]; + var hasLaterCxt = newCxtKey[k] === TRUE; + + if (!hasLaterCxt) { + continue; + } // can't override unless the context is active + + + laterCxtOverrides = laterCxt.properties[prop.name] != null; + + if (laterCxtOverrides) { + break; + } // exit early as long as one later context overrides + + } + + if (!addedProp[name] && !laterCxtOverrides) { + addedProp[name] = true; + diffProps.push(name); + } + } // for props + + } // if + + } // for contexts + + + cache[dualCxtKey] = diffProps; + return diffProps; +}; + +styfn.getContextMeta = function (ele) { + var self = this; + var cxtKey = ''; + var diffProps; + var prevKey = ele._private.styleCxtKey || ''; // get the cxt key + + for (var i = 0; i < self.length; i++) { + var context = self[i]; + var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core' + + if (contextSelectorMatches) { + cxtKey += TRUE; + } else { + cxtKey += FALSE; + } + } // for context + + + diffProps = self.getPropertiesDiff(prevKey, cxtKey); + ele._private.styleCxtKey = cxtKey; + return { + key: cxtKey, + diffPropNames: diffProps, + empty: diffProps.length === 0 + }; +}; // gets a computed ele style object based on matched contexts + + +styfn.getContextStyle = function (cxtMeta) { + var cxtKey = cxtMeta.key; + var self = this; + var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy + + if (cxtStyles[cxtKey]) { + return cxtStyles[cxtKey]; + } + + var style = { + _private: { + key: cxtKey + } + }; + + for (var i = 0; i < self.length; i++) { + var cxt = self[i]; + var hasCxt = cxtKey[i] === TRUE; + + if (!hasCxt) { + continue; + } + + for (var j = 0; j < cxt.properties.length; j++) { + var prop = cxt.properties[j]; + style[prop.name] = prop; + } + } + + cxtStyles[cxtKey] = style; + return style; +}; + +styfn.applyContextStyle = function (cxtMeta, cxtStyle, ele) { + var self = this; + var diffProps = cxtMeta.diffPropNames; + var retDiffProps = {}; + var types = self.types; + + for (var i = 0; i < diffProps.length; i++) { + var diffPropName = diffProps[i]; + var cxtProp = cxtStyle[diffPropName]; + var eleProp = ele.pstyle(diffPropName); + + if (!cxtProp) { + // no context prop means delete + if (!eleProp) { + continue; // no existing prop means nothing needs to be removed + // nb affects initial application on mapped values like control-point-distances + } else if (eleProp.bypass) { + cxtProp = { + name: diffPropName, + deleteBypassed: true + }; + } else { + cxtProp = { + name: diffPropName, + "delete": true + }; + } + } // save cycles when the context prop doesn't need to be applied + + + if (eleProp === cxtProp) { + continue; + } // save cycles when a mapped context prop doesn't need to be applied + + + if (cxtProp.mapped === types.fn // context prop is function mapper + && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one) + && eleProp.mapping != null // ele prop is a concrete value from from a mapper + && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper + ) { + // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet) + var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy + + var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss + + if (fnValue === mapping.prevFnValue) { + continue; + } + } + + var retDiffProp = retDiffProps[diffPropName] = { + prev: eleProp + }; + self.applyParsedProperty(ele, cxtProp); + retDiffProp.next = ele.pstyle(diffPropName); + + if (retDiffProp.next && retDiffProp.next.bypass) { + retDiffProp.next = retDiffProp.next.bypassed; + } + } + + return { + diffProps: retDiffProps + }; +}; + +styfn.updateStyleHints = function (ele) { + var _p = ele._private; + var self = this; + var propNames = self.propertyGroupNames; + var propGrKeys = self.propertyGroupKeys; + + var propHash = function propHash(ele, propNames, seedKey) { + return self.getPropertiesHash(ele, propNames, seedKey); + }; + + var oldStyleKey = _p.styleKey; + + if (ele.removed()) { + return false; + } + + var isNode = _p.group === 'nodes'; // get the style key hashes per prop group + // but lazily -- only use non-default prop values to reduce the number of hashes + // + + var overriddenStyles = ele._private.style; + propNames = Object.keys(overriddenStyles); + + for (var i = 0; i < propGrKeys.length; i++) { + var grKey = propGrKeys[i]; + _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + } + + var updateGrKey1 = function updateGrKey1(val, grKey) { + return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]); + }; + + var updateGrKey2 = function updateGrKey2(val, grKey) { + return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]); + }; + + var updateGrKey = function updateGrKey(val, grKey) { + updateGrKey1(val, grKey); + updateGrKey2(val, grKey); + }; + + var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) { + for (var j = 0; j < strVal.length; j++) { + var ch = strVal.charCodeAt(j); + updateGrKey1(ch, grKey); + updateGrKey2(ch, grKey); + } + }; // - hashing works on 32 bit ints b/c we use bitwise ops + // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function) + // - raise up small numbers so more significant digits are seen by hashing + // - make small numbers larger than a normal value to avoid collisions + // - works in practice and it's relatively cheap + + + var N = 2000000000; + + var cleanNum = function cleanNum(val) { + return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val; + }; + + for (var _i = 0; _i < propNames.length; _i++) { + var name = propNames[_i]; + var parsedProp = overriddenStyles[name]; + + if (parsedProp == null) { + continue; + } + + var propInfo = this.properties[name]; + var type = propInfo.type; + var _grKey = propInfo.groupKey; + var normalizedNumberVal = void 0; + + if (propInfo.hashOverride != null) { + normalizedNumberVal = propInfo.hashOverride(ele, parsedProp); + } else if (parsedProp.pfValue != null) { + normalizedNumberVal = parsedProp.pfValue; + } // might not be a number if it allows enums + + + var numberVal = propInfo.enums == null ? parsedProp.value : null; + var haveNormNum = normalizedNumberVal != null; + var haveUnitedNum = numberVal != null; + var haveNum = haveNormNum || haveUnitedNum; + var units = parsedProp.units; // numbers are cheaper to hash than strings + // 1 hash op vs n hash ops (for length n string) + + if (type.number && haveNum && !type.multiple) { + var v = haveNormNum ? normalizedNumberVal : numberVal; + updateGrKey(cleanNum(v), _grKey); + + if (!haveNormNum && units != null) { + updateGrKeyWStr(units, _grKey); + } + } else { + updateGrKeyWStr(parsedProp.strValue, _grKey); + } + } // overall style key + // + + + var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + + for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) { + var _grKey2 = propGrKeys[_i2]; + var grHash = _p.styleKeys[_grKey2]; + hash[0] = hashInt(grHash[0], hash[0]); + hash[1] = hashIntAlt(grHash[1], hash[1]); + } + + _p.styleKey = combineHashes(hash[0], hash[1]); // label dims + // + + var sk = _p.styleKeys; + _p.labelDimsKey = combineHashesArray(sk.labelDimensions); + var labelKeys = propHash(ele, ['label'], sk.labelDimensions); + _p.labelKey = combineHashesArray(labelKeys); + _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys)); + + if (!isNode) { + var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions); + _p.sourceLabelKey = combineHashesArray(sourceLabelKeys); + _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys)); + var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions); + _p.targetLabelKey = combineHashesArray(targetLabelKeys); + _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys)); + } // node + // + + + if (isNode) { + var _p$styleKeys = _p.styleKeys, + nodeBody = _p$styleKeys.nodeBody, + nodeBorder = _p$styleKeys.nodeBorder, + backgroundImage = _p$styleKeys.backgroundImage, + compound = _p$styleKeys.compound, + pie = _p$styleKeys.pie; + var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) { + return k != null; + }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]); + _p.nodeKey = combineHashesArray(nodeKeys); + _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT; + } + + return oldStyleKey !== _p.styleKey; +}; + +styfn.clearStyleHints = function (ele) { + var _p = ele._private; + _p.styleCxtKey = ''; + _p.styleKeys = {}; + _p.styleKey = null; + _p.labelKey = null; + _p.labelStyleKey = null; + _p.sourceLabelKey = null; + _p.sourceLabelStyleKey = null; + _p.targetLabelKey = null; + _p.targetLabelStyleKey = null; + _p.nodeKey = null; + _p.hasPie = null; +}; // apply a property to the style (for internal use) +// returns whether application was successful +// +// now, this function flattens the property, and here's how: +// +// for parsedProp:{ bypass: true, deleteBypass: true } +// no property is generated, instead the bypass property in the +// element's style is replaced by what's pointed to by the `bypassed` +// field in the bypass property (i.e. restoring the property the +// bypass was overriding) +// +// for parsedProp:{ mapped: truthy } +// the generated flattenedProp:{ mapping: prop } +// +// for parsedProp:{ bypass: true } +// the generated flattenedProp:{ bypassed: parsedProp } + + +styfn.applyParsedProperty = function (ele, parsedProp) { + var self = this; + var prop = parsedProp; + var style = ele._private.style; + var flatProp; + var types = self.types; + var type = self.properties[prop.name].type; + var propIsBypass = prop.bypass; + var origProp = style[prop.name]; + var origPropIsBypass = origProp && origProp.bypass; + var _p = ele._private; + var flatPropMapping = 'mapping'; + + var getVal = function getVal(p) { + if (p == null) { + return null; + } else if (p.pfValue != null) { + return p.pfValue; + } else { + return p.value; + } + }; + + var checkTriggers = function checkTriggers() { + var fromVal = getVal(origProp); + var toVal = getVal(prop); + self.checkTriggers(ele, prop.name, fromVal, toVal); + }; + + if (prop && prop.name.substr(0, 3) === 'pie') { + warn('The pie style properties are deprecated. Create charts using background images instead.'); + } // edge sanity checks to prevent the client from making serious mistakes + + + if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers + parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks + parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) { + prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass); + } + + if (prop["delete"]) { + // delete the property and use the default value on falsey value + style[prop.name] = undefined; + checkTriggers(); + return true; + } + + if (prop.deleteBypassed) { + // delete the property that the + if (!origProp) { + checkTriggers(); + return true; // can't delete if no prop + } else if (origProp.bypass) { + // delete bypassed + origProp.bypassed = undefined; + checkTriggers(); + return true; + } else { + return false; // we're unsuccessful deleting the bypassed + } + } // check if we need to delete the current bypass + + + if (prop.deleteBypass) { + // then this property is just here to indicate we need to delete + if (!origProp) { + checkTriggers(); + return true; // property is already not defined + } else if (origProp.bypass) { + // then replace the bypass property with the original + // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary) + style[prop.name] = origProp.bypassed; + checkTriggers(); + return true; + } else { + return false; // we're unsuccessful deleting the bypass + } + } + + var printMappingErr = function printMappingErr() { + warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined'); + }; // put the property in the style objects + + + switch (prop.mapped) { + // flatten the property if mapped + case types.mapData: + { + // flatten the field (e.g. data.foo.bar) + var fields = prop.field.split('.'); + var fieldVal = _p.data; + + for (var i = 0; i < fields.length && fieldVal; i++) { + var field = fields[i]; + fieldVal = fieldVal[field]; + } + + if (fieldVal == null) { + printMappingErr(); + return false; + } + + var percent; + + if (!number(fieldVal)) { + // then don't apply and fall back on the existing style + warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)'); + return false; + } else { + var fieldWidth = prop.fieldMax - prop.fieldMin; + + if (fieldWidth === 0) { + // safety check -- not strictly necessary as no props of zero range should be passed here + percent = 0; + } else { + percent = (fieldVal - prop.fieldMin) / fieldWidth; + } + } // make sure to bound percent value + + + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + + if (type.color) { + var r1 = prop.valueMin[0]; + var r2 = prop.valueMax[0]; + var g1 = prop.valueMin[1]; + var g2 = prop.valueMax[1]; + var b1 = prop.valueMin[2]; + var b2 = prop.valueMax[2]; + var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3]; + var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3]; + var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)]; + flatProp = { + // colours are simple, so just create the flat property instead of expensive string parsing + bypass: prop.bypass, + // we're a bypass if the mapping property is a bypass + name: prop.name, + value: clr, + strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')' + }; + } else if (type.number) { + var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent; + flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping); + } else { + return false; // can only map to colours and numbers + } + + if (!flatProp) { + // if we can't flatten the property, then don't apply the property and fall back on the existing style + printMappingErr(); + return false; + } + + flatProp.mapping = prop; // keep a reference to the mapping + + prop = flatProp; // the flattened (mapped) property is the one we want + + break; + } + // direct mapping + + case types.data: + { + // flatten the field (e.g. data.foo.bar) + var _fields = prop.field.split('.'); + + var _fieldVal = _p.data; + + for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) { + var _field = _fields[_i3]; + _fieldVal = _fieldVal[_field]; + } + + if (_fieldVal != null) { + flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping); + } + + if (!flatProp) { + // if we can't flatten the property, then don't apply and fall back on the existing style + printMappingErr(); + return false; + } + + flatProp.mapping = prop; // keep a reference to the mapping + + prop = flatProp; // the flattened (mapped) property is the one we want + + break; + } + + case types.fn: + { + var fn = prop.value; + var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function + + prop.prevFnValue = fnRetVal; + + if (fnRetVal == null) { + warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)'); + return false; + } + + flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping); + + if (!flatProp) { + warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)'); + return false; + } + + flatProp.mapping = copy(prop); // keep a reference to the mapping + + prop = flatProp; // the flattened (mapped) property is the one we want + + break; + } + + case undefined: + break; + // just set the property + + default: + return false; + // not a valid mapping + } // if the property is a bypass property, then link the resultant property to the original one + + + if (propIsBypass) { + if (origPropIsBypass) { + // then this bypass overrides the existing one + prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass + } else { + // then link the orig prop to the new bypass + prop.bypassed = origProp; + } + + style[prop.name] = prop; // and set + } else { + // prop is not bypass + if (origPropIsBypass) { + // then keep the orig prop (since it's a bypass) and link to the new prop + origProp.bypassed = prop; + } else { + // then just replace the old prop with the new one + style[prop.name] = prop; + } + } + + checkTriggers(); + return true; +}; + +styfn.cleanElements = function (eles, keepBypasses) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + this.clearStyleHints(ele); + ele.dirtyCompoundBoundsCache(); + ele.dirtyBoundingBoxCache(); + + if (!keepBypasses) { + ele._private.style = {}; + } else { + var style = ele._private.style; + var propNames = Object.keys(style); + + for (var j = 0; j < propNames.length; j++) { + var propName = propNames[j]; + var eleProp = style[propName]; + + if (eleProp != null) { + if (eleProp.bypass) { + eleProp.bypassed = null; + } else { + style[propName] = null; + } + } + } + } + } +}; // updates the visual style for all elements (useful for manual style modification after init) + + +styfn.update = function () { + var cy = this._private.cy; + var eles = cy.mutableElements(); + eles.updateStyle(); +}; // diffProps : { name => { prev, next } } + + +styfn.updateTransitions = function (ele, diffProps) { + var self = this; + var _p = ele._private; + var props = ele.pstyle('transition-property').value; + var duration = ele.pstyle('transition-duration').pfValue; + var delay = ele.pstyle('transition-delay').pfValue; + + if (props.length > 0 && duration > 0) { + var style = {}; // build up the style to animate towards + + var anyPrev = false; + + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + var styProp = ele.pstyle(prop); + var diffProp = diffProps[prop]; + + if (!diffProp) { + continue; + } + + var prevProp = diffProp.prev; + var fromProp = prevProp; + var toProp = diffProp.next != null ? diffProp.next : styProp; + var diff = false; + var initVal = void 0; + var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity) + + if (!fromProp) { + continue; + } // consider px values + + + if (number(fromProp.pfValue) && number(toProp.pfValue)) { + diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy + + initVal = fromProp.pfValue + initDt * diff; // consider numerical values + } else if (number(fromProp.value) && number(toProp.value)) { + diff = toProp.value - fromProp.value; // nonzero is truthy + + initVal = fromProp.value + initDt * diff; // consider colour values + } else if (array(fromProp.value) && array(toProp.value)) { + diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2]; + initVal = fromProp.strValue; + } // the previous value is good for an animation only if it's different + + + if (diff) { + style[prop] = toProp.strValue; // to val + + this.applyBypass(ele, prop, initVal); // from val + + anyPrev = true; + } + } // end if props allow ani + // can't transition if there's nothing previous to transition from + + + if (!anyPrev) { + return; + } + + _p.transitioning = true; + new Promise$1$1(function (resolve) { + if (delay > 0) { + ele.delayAnimation(delay).play().promise().then(resolve); + } else { + resolve(); + } + }).then(function () { + return ele.animation({ + style: style, + duration: duration, + easing: ele.pstyle('transition-timing-function').value, + queue: false + }).play().promise(); + }).then(function () { + // if( !isBypass ){ + self.removeBypasses(ele, props); + ele.emitAndNotify('style'); // } + + _p.transitioning = false; + }); + } else if (_p.transitioning) { + this.removeBypasses(ele, props); + ele.emitAndNotify('style'); + _p.transitioning = false; + } +}; + +styfn.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) { + var prop = this.properties[name]; + var triggerCheck = getTrigger(prop); + + if (triggerCheck != null && triggerCheck(fromValue, toValue)) { + onTrigger(prop); + } +}; + +styfn.checkZOrderTrigger = function (ele, name, fromValue, toValue) { + var _this = this; + + this.checkTrigger(ele, name, fromValue, toValue, function (prop) { + return prop.triggersZOrder; + }, function () { + _this._private.cy.notify('zorder', ele); + }); +}; + +styfn.checkBoundsTrigger = function (ele, name, fromValue, toValue) { + this.checkTrigger(ele, name, fromValue, toValue, function (prop) { + return prop.triggersBounds; + }, function (prop) { + ele.dirtyCompoundBoundsCache(); + ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid, + // then dirty the pll edge bb cache as well + + if ( // only for beziers -- so performance of other edges isn't affected + name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') && prop.triggersBoundsOfParallelBeziers) { + ele.parallelEdges().forEach(function (pllEdge) { + if (pllEdge.isBundledBezier()) { + pllEdge.dirtyBoundingBoxCache(); + } + }); + } + }); +}; + +styfn.checkTriggers = function (ele, name, fromValue, toValue) { + ele.dirtyStyleCache(); + this.checkZOrderTrigger(ele, name, fromValue, toValue); + this.checkBoundsTrigger(ele, name, fromValue, toValue); +}; + +var styfn$1 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily +// returns true iff application was successful for at least 1 specified property + +styfn$1.applyBypass = function (eles, name, value, updateTransitions) { + var self = this; + var props = []; + var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them + + if (name === '*' || name === '**') { + // apply to all property names + if (value !== undefined) { + for (var i = 0; i < self.properties.length; i++) { + var prop = self.properties[i]; + var _name = prop.name; + var parsedProp = this.parse(_name, value, true); + + if (parsedProp) { + props.push(parsedProp); + } + } + } + } else if (string(name)) { + // then parse the single property + var _parsedProp = this.parse(name, value, true); + + if (_parsedProp) { + props.push(_parsedProp); + } + } else if (plainObject(name)) { + // then parse each property + var specifiedProps = name; + updateTransitions = value; + var names = Object.keys(specifiedProps); + + for (var _i = 0; _i < names.length; _i++) { + var _name2 = names[_i]; + var _value = specifiedProps[_name2]; + + if (_value === undefined) { + // try camel case name too + _value = specifiedProps[dash2camel(_name2)]; + } + + if (_value !== undefined) { + var _parsedProp2 = this.parse(_name2, _value, true); + + if (_parsedProp2) { + props.push(_parsedProp2); + } + } + } + } else { + // can't do anything without well defined properties + return false; + } // we've failed if there are no valid properties + + + if (props.length === 0) { + return false; + } // now, apply the bypass properties on the elements + + + var ret = false; // return true if at least one succesful bypass applied + + for (var _i2 = 0; _i2 < eles.length; _i2++) { + // for each ele + var ele = eles[_i2]; + var diffProps = {}; + var diffProp = void 0; + + for (var j = 0; j < props.length; j++) { + // for each prop + var _prop = props[j]; + + if (updateTransitions) { + var prevProp = ele.pstyle(_prop.name); + diffProp = diffProps[_prop.name] = { + prev: prevProp + }; + } + + ret = this.applyParsedProperty(ele, copy(_prop)) || ret; + + if (updateTransitions) { + diffProp.next = ele.pstyle(_prop.name); + } + } // for props + + + if (ret) { + this.updateStyleHints(ele); + } + + if (updateTransitions) { + this.updateTransitions(ele, diffProps, isBypass); + } + } // for eles + + + return ret; +}; // only useful in specific cases like animation + + +styfn$1.overrideBypass = function (eles, name, value) { + name = camel2dash(name); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var prop = ele._private.style[name]; + var type = this.properties[name].type; + var isColor = type.color; + var isMulti = type.mutiple; + var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value; + + if (!prop || !prop.bypass) { + // need a bypass if one doesn't exist + this.applyBypass(ele, name, value); + } else { + prop.value = value; + + if (prop.pfValue != null) { + prop.pfValue = value; + } + + if (isColor) { + prop.strValue = 'rgb(' + value.join(',') + ')'; + } else if (isMulti) { + prop.strValue = value.join(' '); + } else { + prop.strValue = '' + value; + } + + this.updateStyleHints(ele); + } + + this.checkTriggers(ele, name, oldValue, value); + } +}; + +styfn$1.removeAllBypasses = function (eles, updateTransitions) { + return this.removeBypasses(eles, this.propertyNames, updateTransitions); +}; + +styfn$1.removeBypasses = function (eles, props, updateTransitions) { + var isBypass = true; + + for (var j = 0; j < eles.length; j++) { + var ele = eles[j]; + var diffProps = {}; + + for (var i = 0; i < props.length; i++) { + var name = props[i]; + var prop = this.properties[name]; + var prevProp = ele.pstyle(prop.name); + + if (!prevProp || !prevProp.bypass) { + // if a bypass doesn't exist for the prop, nothing needs to be removed + continue; + } + + var value = ''; // empty => remove bypass + + var parsedProp = this.parse(name, value, true); + var diffProp = diffProps[prop.name] = { + prev: prevProp + }; + this.applyParsedProperty(ele, parsedProp); + diffProp.next = ele.pstyle(prop.name); + } // for props + + + this.updateStyleHints(ele); + + if (updateTransitions) { + this.updateTransitions(ele, diffProps, isBypass); + } + } // for eles + +}; + +var styfn$2 = {}; // gets what an em size corresponds to in pixels relative to a dom element + +styfn$2.getEmSizeInPixels = function () { + var px = this.containerCss('font-size'); + + if (px != null) { + return parseFloat(px); + } else { + return 1; // for headless + } +}; // gets css property from the core container + + +styfn$2.containerCss = function (propName) { + var cy = this._private.cy; + var domElement = cy.container(); + + if (window$1 && domElement && window$1.getComputedStyle) { + return window$1.getComputedStyle(domElement).getPropertyValue(propName); + } +}; + +var styfn$3 = {}; // gets the rendered style for an element + +styfn$3.getRenderedStyle = function (ele, prop) { + if (prop) { + return this.getStylePropertyValue(ele, prop, true); + } else { + return this.getRawStyle(ele, true); + } +}; // gets the raw style for an element + + +styfn$3.getRawStyle = function (ele, isRenderedVal) { + var self = this; + ele = ele[0]; // insure it's an element + + if (ele) { + var rstyle = {}; + + for (var i = 0; i < self.properties.length; i++) { + var prop = self.properties[i]; + var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal); + + if (val != null) { + rstyle[prop.name] = val; + rstyle[dash2camel(prop.name)] = val; + } + } + + return rstyle; + } +}; + +styfn$3.getIndexedStyle = function (ele, property, subproperty, index) { + var pstyle = ele.pstyle(property)[subproperty][index]; + return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0]; +}; + +styfn$3.getStylePropertyValue = function (ele, propName, isRenderedVal) { + var self = this; + ele = ele[0]; // insure it's an element + + if (ele) { + var prop = self.properties[propName]; + + if (prop.alias) { + prop = prop.pointsTo; + } + + var type = prop.type; + var styleProp = ele.pstyle(prop.name); + + if (styleProp) { + var value = styleProp.value, + units = styleProp.units, + strValue = styleProp.strValue; + + if (isRenderedVal && type.number && value != null && number(value)) { + var zoom = ele.cy().zoom(); + + var getRenderedValue = function getRenderedValue(val) { + return val * zoom; + }; + + var getValueStringWithUnits = function getValueStringWithUnits(val, units) { + return getRenderedValue(val) + units; + }; + + var isArrayValue = array(value); + var haveUnits = isArrayValue ? units.every(function (u) { + return u != null; + }) : units != null; + + if (haveUnits) { + if (isArrayValue) { + return value.map(function (v, i) { + return getValueStringWithUnits(v, units[i]); + }).join(' '); + } else { + return getValueStringWithUnits(value, units); + } + } else { + if (isArrayValue) { + return value.map(function (v) { + return string(v) ? v : '' + getRenderedValue(v); + }).join(' '); + } else { + return '' + getRenderedValue(value); + } + } + } else if (strValue != null) { + return strValue; + } + } + + return null; + } +}; + +styfn$3.getAnimationStartStyle = function (ele, aniProps) { + var rstyle = {}; + + for (var i = 0; i < aniProps.length; i++) { + var aniProp = aniProps[i]; + var name = aniProp.name; + var styleProp = ele.pstyle(name); + + if (styleProp !== undefined) { + // then make a prop of it + if (plainObject(styleProp)) { + styleProp = this.parse(name, styleProp.strValue); + } else { + styleProp = this.parse(name, styleProp); + } + } + + if (styleProp) { + rstyle[name] = styleProp; + } + } + + return rstyle; +}; + +styfn$3.getPropsList = function (propsObj) { + var self = this; + var rstyle = []; + var style = propsObj; + var props = self.properties; + + if (style) { + var names = Object.keys(style); + + for (var i = 0; i < names.length; i++) { + var name = names[i]; + var val = style[name]; + var prop = props[name] || props[camel2dash(name)]; + var styleProp = this.parse(prop.name, val); + + if (styleProp) { + rstyle.push(styleProp); + } + } + } + + return rstyle; +}; + +styfn$3.getNonDefaultPropertiesHash = function (ele, propNames, seed) { + var hash = seed.slice(); + var name, val, strVal, chVal; + var i, j; + + for (i = 0; i < propNames.length; i++) { + name = propNames[i]; + val = ele.pstyle(name, false); + + if (val == null) { + continue; + } else if (val.pfValue != null) { + hash[0] = hashInt(chVal, hash[0]); + hash[1] = hashIntAlt(chVal, hash[1]); + } else { + strVal = val.strValue; + + for (j = 0; j < strVal.length; j++) { + chVal = strVal.charCodeAt(j); + hash[0] = hashInt(chVal, hash[0]); + hash[1] = hashIntAlt(chVal, hash[1]); + } + } + } + + return hash; +}; + +styfn$3.getPropertiesHash = styfn$3.getNonDefaultPropertiesHash; + +var styfn$4 = {}; + +styfn$4.appendFromJson = function (json) { + var style = this; + + for (var i = 0; i < json.length; i++) { + var context = json[i]; + var selector = context.selector; + var props = context.style || context.css; + var names = Object.keys(props); + style.selector(selector); // apply selector + + for (var j = 0; j < names.length; j++) { + var name = names[j]; + var value = props[name]; + style.css(name, value); // apply property + } + } + + return style; +}; // accessible cy.style() function + + +styfn$4.fromJson = function (json) { + var style = this; + style.resetToDefault(); + style.appendFromJson(json); + return style; +}; // get json from cy.style() api + + +styfn$4.json = function () { + var json = []; + + for (var i = this.defaultLength; i < this.length; i++) { + var cxt = this[i]; + var selector = cxt.selector; + var props = cxt.properties; + var css = {}; + + for (var j = 0; j < props.length; j++) { + var prop = props[j]; + css[prop.name] = prop.strValue; + } + + json.push({ + selector: !selector ? 'core' : selector.toString(), + style: css + }); + } + + return json; +}; + +var styfn$5 = {}; + +styfn$5.appendFromString = function (string) { + var self = this; + var style = this; + var remaining = '' + string; + var selAndBlockStr; + var blockRem; + var propAndValStr; // remove comments from the style string + + remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, ''); + + function removeSelAndBlockFromRemaining() { + // remove the parsed selector and block from the remaining text to parse + if (remaining.length > selAndBlockStr.length) { + remaining = remaining.substr(selAndBlockStr.length); + } else { + remaining = ''; + } + } + + function removePropAndValFromRem() { + // remove the parsed property and value from the remaining block text to parse + if (blockRem.length > propAndValStr.length) { + blockRem = blockRem.substr(propAndValStr.length); + } else { + blockRem = ''; + } + } + + for (;;) { + var nothingLeftToParse = remaining.match(/^\s*$/); + + if (nothingLeftToParse) { + break; + } + + var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); + + if (!selAndBlock) { + warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining); + break; + } + + selAndBlockStr = selAndBlock[0]; // parse the selector + + var selectorStr = selAndBlock[1]; + + if (selectorStr !== 'core') { + var selector = new Selector(selectorStr); + + if (selector.invalid) { + warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block + + removeSelAndBlockFromRemaining(); + continue; + } + } // parse the block of properties and values + + + var blockStr = selAndBlock[2]; + var invalidBlock = false; + blockRem = blockStr; + var props = []; + + for (;;) { + var _nothingLeftToParse = blockRem.match(/^\s*$/); + + if (_nothingLeftToParse) { + break; + } + + var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/); + + if (!propAndVal) { + warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr); + invalidBlock = true; + break; + } + + propAndValStr = propAndVal[0]; + var propStr = propAndVal[1]; + var valStr = propAndVal[2]; + var prop = self.properties[propStr]; + + if (!prop) { + warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block + + removePropAndValFromRem(); + continue; + } + + var parsedProp = style.parse(propStr, valStr); + + if (!parsedProp) { + warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block + + removePropAndValFromRem(); + continue; + } + + props.push({ + name: propStr, + val: valStr + }); + removePropAndValFromRem(); + } + + if (invalidBlock) { + removeSelAndBlockFromRemaining(); + break; + } // put the parsed block in the style + + + style.selector(selectorStr); + + for (var i = 0; i < props.length; i++) { + var _prop = props[i]; + style.css(_prop.name, _prop.val); + } + + removeSelAndBlockFromRemaining(); + } + + return style; +}; + +styfn$5.fromString = function (string) { + var style = this; + style.resetToDefault(); + style.appendFromString(string); + return style; +}; + +var styfn$6 = {}; + +(function () { + var number = number$1; + var rgba = rgbaNoBackRefs; + var hsla = hslaNoBackRefs; + var hex3$1 = hex3; + var hex6$1 = hex6; + + var data = function data(prefix) { + return '^' + prefix + '\\s*\\(\\s*([\\w\\.]+)\\s*\\)$'; + }; + + var mapData = function mapData(prefix) { + var mapArg = number + '|\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1; + return '^' + prefix + '\\s*\\(([\\w\\.]+)\\s*\\,\\s*(' + number + ')\\s*\\,\\s*(' + number + ')\\s*,\\s*(' + mapArg + ')\\s*\\,\\s*(' + mapArg + ')\\)$'; + }; + + var urlRegexes = ['^url\\s*\\(\\s*[\'"]?(.+?)[\'"]?\\s*\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it + + styfn$6.types = { + time: { + number: true, + min: 0, + units: 's|ms', + implicitUnits: 'ms' + }, + percent: { + number: true, + min: 0, + max: 100, + units: '%', + implicitUnits: '%' + }, + percentages: { + number: true, + min: 0, + max: 100, + units: '%', + implicitUnits: '%', + multiple: true + }, + zeroOneNumber: { + number: true, + min: 0, + max: 1, + unitless: true + }, + zeroOneNumbers: { + number: true, + min: 0, + max: 1, + unitless: true, + multiple: true + }, + nOneOneNumber: { + number: true, + min: -1, + max: 1, + unitless: true + }, + nonNegativeInt: { + number: true, + min: 0, + integer: true, + unitless: true + }, + position: { + enums: ['parent', 'origin'] + }, + nodeSize: { + number: true, + min: 0, + enums: ['label'] + }, + number: { + number: true, + unitless: true + }, + numbers: { + number: true, + unitless: true, + multiple: true + }, + positiveNumber: { + number: true, + unitless: true, + min: 0, + strictMin: true + }, + size: { + number: true, + min: 0 + }, + bidirectionalSize: { + number: true + }, + // allows negative + bidirectionalSizeMaybePercent: { + number: true, + allowPercent: true + }, + // allows negative + bidirectionalSizes: { + number: true, + multiple: true + }, + // allows negative + sizeMaybePercent: { + number: true, + min: 0, + allowPercent: true + }, + axisDirection: { + enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto'] + }, + paddingRelativeTo: { + enums: ['width', 'height', 'average', 'min', 'max'] + }, + bgWH: { + number: true, + min: 0, + allowPercent: true, + enums: ['auto'], + multiple: true + }, + bgPos: { + number: true, + allowPercent: true, + multiple: true + }, + bgRelativeTo: { + enums: ['inner', 'include-padding'], + multiple: true + }, + bgRepeat: { + enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], + multiple: true + }, + bgFit: { + enums: ['none', 'contain', 'cover'], + multiple: true + }, + bgCrossOrigin: { + enums: ['anonymous', 'use-credentials'], + multiple: true + }, + bgClip: { + enums: ['none', 'node'], + multiple: true + }, + bgContainment: { + enums: ['inside', 'over'], + multiple: true + }, + color: { + color: true + }, + colors: { + color: true, + multiple: true + }, + fill: { + enums: ['solid', 'linear-gradient', 'radial-gradient'] + }, + bool: { + enums: ['yes', 'no'] + }, + bools: { + enums: ['yes', 'no'], + multiple: true + }, + lineStyle: { + enums: ['solid', 'dotted', 'dashed'] + }, + lineCap: { + enums: ['butt', 'round', 'square'] + }, + borderStyle: { + enums: ['solid', 'dotted', 'dashed', 'double'] + }, + curveStyle: { + enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi'] + }, + fontFamily: { + regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' + }, + fontStyle: { + enums: ['italic', 'normal', 'oblique'] + }, + fontWeight: { + enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900] + }, + textDecoration: { + enums: ['none', 'underline', 'overline', 'line-through'] + }, + textTransform: { + enums: ['none', 'uppercase', 'lowercase'] + }, + textWrap: { + enums: ['none', 'wrap', 'ellipsis'] + }, + textOverflowWrap: { + enums: ['whitespace', 'anywhere'] + }, + textBackgroundShape: { + enums: ['rectangle', 'roundrectangle', 'round-rectangle'] + }, + nodeShape: { + enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'polygon'] + }, + overlayShape: { + enums: ['roundrectangle', 'round-rectangle', 'ellipse'] + }, + compoundIncludeLabels: { + enums: ['include', 'exclude'] + }, + arrowShape: { + enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none'] + }, + arrowFill: { + enums: ['filled', 'hollow'] + }, + display: { + enums: ['element', 'none'] + }, + visibility: { + enums: ['hidden', 'visible'] + }, + zCompoundDepth: { + enums: ['bottom', 'orphan', 'auto', 'top'] + }, + zIndexCompare: { + enums: ['auto', 'manual'] + }, + valign: { + enums: ['top', 'center', 'bottom'] + }, + halign: { + enums: ['left', 'center', 'right'] + }, + justification: { + enums: ['left', 'center', 'right', 'auto'] + }, + text: { + string: true + }, + data: { + mapping: true, + regex: data('data') + }, + layoutData: { + mapping: true, + regex: data('layoutData') + }, + scratch: { + mapping: true, + regex: data('scratch') + }, + mapData: { + mapping: true, + regex: mapData('mapData') + }, + mapLayoutData: { + mapping: true, + regex: mapData('mapLayoutData') + }, + mapScratch: { + mapping: true, + regex: mapData('mapScratch') + }, + fn: { + mapping: true, + fn: true + }, + url: { + regexes: urlRegexes, + singleRegexMatchValue: true + }, + urls: { + regexes: urlRegexes, + singleRegexMatchValue: true, + multiple: true + }, + propList: { + propList: true + }, + angle: { + number: true, + units: 'deg|rad', + implicitUnits: 'rad' + }, + textRotation: { + number: true, + units: 'deg|rad', + implicitUnits: 'rad', + enums: ['none', 'autorotate'] + }, + polygonPointList: { + number: true, + multiple: true, + evenMultiple: true, + min: -1, + max: 1, + unitless: true + }, + edgeDistances: { + enums: ['intersection', 'node-position'] + }, + edgeEndpoint: { + number: true, + multiple: true, + units: '%|px|em|deg|rad', + implicitUnits: 'px', + enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'], + singleEnum: true, + validate: function validate(valArr, unitsArr) { + switch (valArr.length) { + case 2: + // can be % or px only + return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad'; + + case 1: + // can be enum, deg, or rad only + return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad'; + + default: + return false; + } + } + }, + easing: { + regexes: ['^(spring)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$', '^(cubic-bezier)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$'], + enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ'] + }, + gradientDirection: { + enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top'] + }, + boundsExpansion: { + number: true, + multiple: true, + min: 0, + validate: function validate(valArr) { + var length = valArr.length; + return length === 1 || length === 2 || length === 4; + } + } + }; + var diff = { + zeroNonZero: function zeroNonZero(val1, val2) { + if ((val1 == null || val2 == null) && val1 !== val2) { + return true; // null cases could represent any value + } + + if (val1 == 0 && val2 != 0) { + return true; + } else if (val1 != 0 && val2 == 0) { + return true; + } else { + return false; + } + }, + any: function any(val1, val2) { + return val1 != val2; + }, + emptyNonEmpty: function emptyNonEmpty(str1, str2) { + var empty1 = emptyString(str1); + var empty2 = emptyString(str2); + return empty1 && !empty2 || !empty1 && empty2; + } + }; // define visual style properties + // + // - n.b. adding a new group of props may require updates to updateStyleHints() + // - adding new props to an existing group gets handled automatically + + var t = styfn$6.types; + var mainLabel = [{ + name: 'label', + type: t.text, + triggersBounds: diff.any, + triggersZOrder: diff.emptyNonEmpty + }, { + name: 'text-rotation', + type: t.textRotation, + triggersBounds: diff.any + }, { + name: 'text-margin-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'text-margin-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }]; + var sourceLabel = [{ + name: 'source-label', + type: t.text, + triggersBounds: diff.any + }, { + name: 'source-text-rotation', + type: t.textRotation, + triggersBounds: diff.any + }, { + name: 'source-text-margin-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'source-text-margin-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'source-text-offset', + type: t.size, + triggersBounds: diff.any + }]; + var targetLabel = [{ + name: 'target-label', + type: t.text, + triggersBounds: diff.any + }, { + name: 'target-text-rotation', + type: t.textRotation, + triggersBounds: diff.any + }, { + name: 'target-text-margin-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'target-text-margin-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'target-text-offset', + type: t.size, + triggersBounds: diff.any + }]; + var labelDimensions = [{ + name: 'font-family', + type: t.fontFamily, + triggersBounds: diff.any + }, { + name: 'font-style', + type: t.fontStyle, + triggersBounds: diff.any + }, { + name: 'font-weight', + type: t.fontWeight, + triggersBounds: diff.any + }, { + name: 'font-size', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-transform', + type: t.textTransform, + triggersBounds: diff.any + }, { + name: 'text-wrap', + type: t.textWrap, + triggersBounds: diff.any + }, { + name: 'text-overflow-wrap', + type: t.textOverflowWrap, + triggersBounds: diff.any + }, { + name: 'text-max-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-outline-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'line-height', + type: t.positiveNumber, + triggersBounds: diff.any + }]; + var commonLabel = [{ + name: 'text-valign', + type: t.valign, + triggersBounds: diff.any + }, { + name: 'text-halign', + type: t.halign, + triggersBounds: diff.any + }, { + name: 'color', + type: t.color + }, { + name: 'text-outline-color', + type: t.color + }, { + name: 'text-outline-opacity', + type: t.zeroOneNumber + }, { + name: 'text-background-color', + type: t.color + }, { + name: 'text-background-opacity', + type: t.zeroOneNumber + }, { + name: 'text-background-padding', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-border-opacity', + type: t.zeroOneNumber + }, { + name: 'text-border-color', + type: t.color + }, { + name: 'text-border-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-border-style', + type: t.borderStyle, + triggersBounds: diff.any + }, { + name: 'text-background-shape', + type: t.textBackgroundShape, + triggersBounds: diff.any + }, { + name: 'text-justification', + type: t.justification + }]; + var behavior = [{ + name: 'events', + type: t.bool + }, { + name: 'text-events', + type: t.bool + }]; + var visibility = [{ + name: 'display', + type: t.display, + triggersZOrder: diff.any, + triggersBounds: diff.any, + triggersBoundsOfParallelBeziers: true + }, { + name: 'visibility', + type: t.visibility, + triggersZOrder: diff.any + }, { + name: 'opacity', + type: t.zeroOneNumber, + triggersZOrder: diff.zeroNonZero + }, { + name: 'text-opacity', + type: t.zeroOneNumber + }, { + name: 'min-zoomed-font-size', + type: t.size + }, { + name: 'z-compound-depth', + type: t.zCompoundDepth, + triggersZOrder: diff.any + }, { + name: 'z-index-compare', + type: t.zIndexCompare, + triggersZOrder: diff.any + }, { + name: 'z-index', + type: t.nonNegativeInt, + triggersZOrder: diff.any + }]; + var overlay = [{ + name: 'overlay-padding', + type: t.size, + triggersBounds: diff.any + }, { + name: 'overlay-color', + type: t.color + }, { + name: 'overlay-opacity', + type: t.zeroOneNumber, + triggersBounds: diff.zeroNonZero + }, { + name: 'overlay-shape', + type: t.overlayShape, + triggersBounds: diff.any + }]; + var underlay = [{ + name: 'underlay-padding', + type: t.size, + triggersBounds: diff.any + }, { + name: 'underlay-color', + type: t.color + }, { + name: 'underlay-opacity', + type: t.zeroOneNumber, + triggersBounds: diff.zeroNonZero + }, { + name: 'underlay-shape', + type: t.overlayShape, + triggersBounds: diff.any + }]; + var transition = [{ + name: 'transition-property', + type: t.propList + }, { + name: 'transition-duration', + type: t.time + }, { + name: 'transition-delay', + type: t.time + }, { + name: 'transition-timing-function', + type: t.easing + }]; + + var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) { + if (parsedProp.value === 'label') { + return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway) + } else { + return parsedProp.pfValue; + } + }; + + var nodeBody = [{ + name: 'height', + type: t.nodeSize, + triggersBounds: diff.any, + hashOverride: nodeSizeHashOverride + }, { + name: 'width', + type: t.nodeSize, + triggersBounds: diff.any, + hashOverride: nodeSizeHashOverride + }, { + name: 'shape', + type: t.nodeShape, + triggersBounds: diff.any + }, { + name: 'shape-polygon-points', + type: t.polygonPointList, + triggersBounds: diff.any + }, { + name: 'background-color', + type: t.color + }, { + name: 'background-fill', + type: t.fill + }, { + name: 'background-opacity', + type: t.zeroOneNumber + }, { + name: 'background-blacken', + type: t.nOneOneNumber + }, { + name: 'background-gradient-stop-colors', + type: t.colors + }, { + name: 'background-gradient-stop-positions', + type: t.percentages + }, { + name: 'background-gradient-direction', + type: t.gradientDirection + }, { + name: 'padding', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'padding-relative-to', + type: t.paddingRelativeTo, + triggersBounds: diff.any + }, { + name: 'bounds-expansion', + type: t.boundsExpansion, + triggersBounds: diff.any + }]; + var nodeBorder = [{ + name: 'border-color', + type: t.color + }, { + name: 'border-opacity', + type: t.zeroOneNumber + }, { + name: 'border-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'border-style', + type: t.borderStyle + }]; + var backgroundImage = [{ + name: 'background-image', + type: t.urls + }, { + name: 'background-image-crossorigin', + type: t.bgCrossOrigin + }, { + name: 'background-image-opacity', + type: t.zeroOneNumbers + }, { + name: 'background-image-containment', + type: t.bgContainment + }, { + name: 'background-image-smoothing', + type: t.bools + }, { + name: 'background-position-x', + type: t.bgPos + }, { + name: 'background-position-y', + type: t.bgPos + }, { + name: 'background-width-relative-to', + type: t.bgRelativeTo + }, { + name: 'background-height-relative-to', + type: t.bgRelativeTo + }, { + name: 'background-repeat', + type: t.bgRepeat + }, { + name: 'background-fit', + type: t.bgFit + }, { + name: 'background-clip', + type: t.bgClip + }, { + name: 'background-width', + type: t.bgWH + }, { + name: 'background-height', + type: t.bgWH + }, { + name: 'background-offset-x', + type: t.bgPos + }, { + name: 'background-offset-y', + type: t.bgPos + }]; + var compound = [{ + name: 'position', + type: t.position, + triggersBounds: diff.any + }, { + name: 'compound-sizing-wrt-labels', + type: t.compoundIncludeLabels, + triggersBounds: diff.any + }, { + name: 'min-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'min-width-bias-left', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'min-width-bias-right', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'min-height', + type: t.size, + triggersBounds: diff.any + }, { + name: 'min-height-bias-top', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'min-height-bias-bottom', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }]; + var edgeLine = [{ + name: 'line-style', + type: t.lineStyle + }, { + name: 'line-color', + type: t.color + }, { + name: 'line-fill', + type: t.fill + }, { + name: 'line-cap', + type: t.lineCap + }, { + name: 'line-opacity', + type: t.zeroOneNumber + }, { + name: 'line-dash-pattern', + type: t.numbers + }, { + name: 'line-dash-offset', + type: t.number + }, { + name: 'line-gradient-stop-colors', + type: t.colors + }, { + name: 'line-gradient-stop-positions', + type: t.percentages + }, { + name: 'curve-style', + type: t.curveStyle, + triggersBounds: diff.any, + triggersBoundsOfParallelBeziers: true + }, { + name: 'haystack-radius', + type: t.zeroOneNumber, + triggersBounds: diff.any + }, { + name: 'source-endpoint', + type: t.edgeEndpoint, + triggersBounds: diff.any + }, { + name: 'target-endpoint', + type: t.edgeEndpoint, + triggersBounds: diff.any + }, { + name: 'control-point-step-size', + type: t.size, + triggersBounds: diff.any + }, { + name: 'control-point-distances', + type: t.bidirectionalSizes, + triggersBounds: diff.any + }, { + name: 'control-point-weights', + type: t.numbers, + triggersBounds: diff.any + }, { + name: 'segment-distances', + type: t.bidirectionalSizes, + triggersBounds: diff.any + }, { + name: 'segment-weights', + type: t.numbers, + triggersBounds: diff.any + }, { + name: 'taxi-turn', + type: t.bidirectionalSizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'taxi-turn-min-distance', + type: t.size, + triggersBounds: diff.any + }, { + name: 'taxi-direction', + type: t.axisDirection, + triggersBounds: diff.any + }, { + name: 'edge-distances', + type: t.edgeDistances, + triggersBounds: diff.any + }, { + name: 'arrow-scale', + type: t.positiveNumber, + triggersBounds: diff.any + }, { + name: 'loop-direction', + type: t.angle, + triggersBounds: diff.any + }, { + name: 'loop-sweep', + type: t.angle, + triggersBounds: diff.any + }, { + name: 'source-distance-from-node', + type: t.size, + triggersBounds: diff.any + }, { + name: 'target-distance-from-node', + type: t.size, + triggersBounds: diff.any + }]; + var ghost = [{ + name: 'ghost', + type: t.bool, + triggersBounds: diff.any + }, { + name: 'ghost-offset-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'ghost-offset-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'ghost-opacity', + type: t.zeroOneNumber + }]; + var core = [{ + name: 'selection-box-color', + type: t.color + }, { + name: 'selection-box-opacity', + type: t.zeroOneNumber + }, { + name: 'selection-box-border-color', + type: t.color + }, { + name: 'selection-box-border-width', + type: t.size + }, { + name: 'active-bg-color', + type: t.color + }, { + name: 'active-bg-opacity', + type: t.zeroOneNumber + }, { + name: 'active-bg-size', + type: t.size + }, { + name: 'outside-texture-bg-color', + type: t.color + }, { + name: 'outside-texture-bg-opacity', + type: t.zeroOneNumber + }]; // pie backgrounds for nodes + + var pie = []; + styfn$6.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use) + + pie.push({ + name: 'pie-size', + type: t.sizeMaybePercent + }); + + for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { + pie.push({ + name: 'pie-' + i + '-background-color', + type: t.color + }); + pie.push({ + name: 'pie-' + i + '-background-size', + type: t.percent + }); + pie.push({ + name: 'pie-' + i + '-background-opacity', + type: t.zeroOneNumber + }); + } // edge arrows + + + var edgeArrow = []; + var arrowPrefixes = styfn$6.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target']; + [{ + name: 'arrow-shape', + type: t.arrowShape, + triggersBounds: diff.any + }, { + name: 'arrow-color', + type: t.color + }, { + name: 'arrow-fill', + type: t.arrowFill + }].forEach(function (prop) { + arrowPrefixes.forEach(function (prefix) { + var name = prefix + '-' + prop.name; + var type = prop.type, + triggersBounds = prop.triggersBounds; + edgeArrow.push({ + name: name, + type: type, + triggersBounds: triggersBounds + }); + }); + }, {}); + var props = styfn$6.properties = [].concat(behavior, transition, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core); + var propGroups = styfn$6.propertyGroups = { + // common to all eles + behavior: behavior, + transition: transition, + visibility: visibility, + overlay: overlay, + underlay: underlay, + ghost: ghost, + // labels + commonLabel: commonLabel, + labelDimensions: labelDimensions, + mainLabel: mainLabel, + sourceLabel: sourceLabel, + targetLabel: targetLabel, + // node props + nodeBody: nodeBody, + nodeBorder: nodeBorder, + backgroundImage: backgroundImage, + pie: pie, + compound: compound, + // edge props + edgeLine: edgeLine, + edgeArrow: edgeArrow, + core: core + }; + var propGroupNames = styfn$6.propertyGroupNames = {}; + var propGroupKeys = styfn$6.propertyGroupKeys = Object.keys(propGroups); + propGroupKeys.forEach(function (key) { + propGroupNames[key] = propGroups[key].map(function (prop) { + return prop.name; + }); + propGroups[key].forEach(function (prop) { + return prop.groupKey = key; + }); + }); // define aliases + + var aliases = styfn$6.aliases = [{ + name: 'content', + pointsTo: 'label' + }, { + name: 'control-point-distance', + pointsTo: 'control-point-distances' + }, { + name: 'control-point-weight', + pointsTo: 'control-point-weights' + }, { + name: 'edge-text-rotation', + pointsTo: 'text-rotation' + }, { + name: 'padding-left', + pointsTo: 'padding' + }, { + name: 'padding-right', + pointsTo: 'padding' + }, { + name: 'padding-top', + pointsTo: 'padding' + }, { + name: 'padding-bottom', + pointsTo: 'padding' + }]; // list of property names + + styfn$6.propertyNames = props.map(function (p) { + return p.name; + }); // allow access of properties by name ( e.g. style.properties.height ) + + for (var _i = 0; _i < props.length; _i++) { + var prop = props[_i]; + props[prop.name] = prop; // allow lookup by name + } // map aliases + + + for (var _i2 = 0; _i2 < aliases.length; _i2++) { + var alias = aliases[_i2]; + var pointsToProp = props[alias.pointsTo]; + var aliasProp = { + name: alias.name, + alias: true, + pointsTo: pointsToProp + }; // add alias prop for parsing + + props.push(aliasProp); + props[alias.name] = aliasProp; // allow lookup by name + } +})(); + +styfn$6.getDefaultProperty = function (name) { + return this.getDefaultProperties()[name]; +}; + +styfn$6.getDefaultProperties = function () { + var _p = this._private; + + if (_p.defaultProperties != null) { + return _p.defaultProperties; + } + + var rawProps = extend({ + // core props + 'selection-box-color': '#ddd', + 'selection-box-opacity': 0.65, + 'selection-box-border-color': '#aaa', + 'selection-box-border-width': 1, + 'active-bg-color': 'black', + 'active-bg-opacity': 0.15, + 'active-bg-size': 30, + 'outside-texture-bg-color': '#000', + 'outside-texture-bg-opacity': 0.125, + // common node/edge props + 'events': 'yes', + 'text-events': 'no', + 'text-valign': 'top', + 'text-halign': 'center', + 'text-justification': 'auto', + 'line-height': 1, + 'color': '#000', + 'text-outline-color': '#000', + 'text-outline-width': 0, + 'text-outline-opacity': 1, + 'text-opacity': 1, + 'text-decoration': 'none', + 'text-transform': 'none', + 'text-wrap': 'none', + 'text-overflow-wrap': 'whitespace', + 'text-max-width': 9999, + 'text-background-color': '#000', + 'text-background-opacity': 0, + 'text-background-shape': 'rectangle', + 'text-background-padding': 0, + 'text-border-opacity': 0, + 'text-border-width': 0, + 'text-border-style': 'solid', + 'text-border-color': '#000', + 'font-family': 'Helvetica Neue, Helvetica, sans-serif', + 'font-style': 'normal', + 'font-weight': 'normal', + 'font-size': 16, + 'min-zoomed-font-size': 0, + 'text-rotation': 'none', + 'source-text-rotation': 'none', + 'target-text-rotation': 'none', + 'visibility': 'visible', + 'display': 'element', + 'opacity': 1, + 'z-compound-depth': 'auto', + 'z-index-compare': 'auto', + 'z-index': 0, + 'label': '', + 'text-margin-x': 0, + 'text-margin-y': 0, + 'source-label': '', + 'source-text-offset': 0, + 'source-text-margin-x': 0, + 'source-text-margin-y': 0, + 'target-label': '', + 'target-text-offset': 0, + 'target-text-margin-x': 0, + 'target-text-margin-y': 0, + 'overlay-opacity': 0, + 'overlay-color': '#000', + 'overlay-padding': 10, + 'overlay-shape': 'round-rectangle', + 'underlay-opacity': 0, + 'underlay-color': '#000', + 'underlay-padding': 10, + 'underlay-shape': 'round-rectangle', + 'transition-property': 'none', + 'transition-duration': 0, + 'transition-delay': 0, + 'transition-timing-function': 'linear', + // node props + 'background-blacken': 0, + 'background-color': '#999', + 'background-fill': 'solid', + 'background-opacity': 1, + 'background-image': 'none', + 'background-image-crossorigin': 'anonymous', + 'background-image-opacity': 1, + 'background-image-containment': 'inside', + 'background-image-smoothing': 'yes', + 'background-position-x': '50%', + 'background-position-y': '50%', + 'background-offset-x': 0, + 'background-offset-y': 0, + 'background-width-relative-to': 'include-padding', + 'background-height-relative-to': 'include-padding', + 'background-repeat': 'no-repeat', + 'background-fit': 'none', + 'background-clip': 'node', + 'background-width': 'auto', + 'background-height': 'auto', + 'border-color': '#000', + 'border-opacity': 1, + 'border-width': 0, + 'border-style': 'solid', + 'height': 30, + 'width': 30, + 'shape': 'ellipse', + 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1', + 'bounds-expansion': 0, + // node gradient + 'background-gradient-direction': 'to-bottom', + 'background-gradient-stop-colors': '#999', + 'background-gradient-stop-positions': '0%', + // ghost props + 'ghost': 'no', + 'ghost-offset-y': 0, + 'ghost-offset-x': 0, + 'ghost-opacity': 0, + // compound props + 'padding': 0, + 'padding-relative-to': 'width', + 'position': 'origin', + 'compound-sizing-wrt-labels': 'include', + 'min-width': 0, + 'min-width-bias-left': 0, + 'min-width-bias-right': 0, + 'min-height': 0, + 'min-height-bias-top': 0, + 'min-height-bias-bottom': 0 + }, { + // node pie bg + 'pie-size': '100%' + }, [{ + name: 'pie-{{i}}-background-color', + value: 'black' + }, { + name: 'pie-{{i}}-background-size', + value: '0%' + }, { + name: 'pie-{{i}}-background-opacity', + value: 1 + }].reduce(function (css, prop) { + for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { + var name = prop.name.replace('{{i}}', i); + var val = prop.value; + css[name] = val; + } + + return css; + }, {}), { + // edge props + 'line-style': 'solid', + 'line-color': '#999', + 'line-fill': 'solid', + 'line-cap': 'butt', + 'line-opacity': 1, + 'line-gradient-stop-colors': '#999', + 'line-gradient-stop-positions': '0%', + 'control-point-step-size': 40, + 'control-point-weights': 0.5, + 'segment-weights': 0.5, + 'segment-distances': 20, + 'taxi-turn': '50%', + 'taxi-turn-min-distance': 10, + 'taxi-direction': 'auto', + 'edge-distances': 'intersection', + 'curve-style': 'haystack', + 'haystack-radius': 0, + 'arrow-scale': 1, + 'loop-direction': '-45deg', + 'loop-sweep': '-90deg', + 'source-distance-from-node': 0, + 'target-distance-from-node': 0, + 'source-endpoint': 'outside-to-node', + 'target-endpoint': 'outside-to-node', + 'line-dash-pattern': [6, 3], + 'line-dash-offset': 0 + }, [{ + name: 'arrow-shape', + value: 'none' + }, { + name: 'arrow-color', + value: '#999' + }, { + name: 'arrow-fill', + value: 'filled' + }].reduce(function (css, prop) { + styfn$6.arrowPrefixes.forEach(function (prefix) { + var name = prefix + '-' + prop.name; + var val = prop.value; + css[name] = val; + }); + return css; + }, {})); + var parsedProps = {}; + + for (var i = 0; i < this.properties.length; i++) { + var prop = this.properties[i]; + + if (prop.pointsTo) { + continue; + } + + var name = prop.name; + var val = rawProps[name]; + var parsedProp = this.parse(name, val); + parsedProps[name] = parsedProp; + } + + _p.defaultProperties = parsedProps; + return _p.defaultProperties; +}; + +styfn$6.addDefaultStylesheet = function () { + this.selector(':parent').css({ + 'shape': 'rectangle', + 'padding': 10, + 'background-color': '#eee', + 'border-color': '#ccc', + 'border-width': 1 + }).selector('edge').css({ + 'width': 3 + }).selector(':loop').css({ + 'curve-style': 'bezier' + }).selector('edge:compound').css({ + 'curve-style': 'bezier', + 'source-endpoint': 'outside-to-line', + 'target-endpoint': 'outside-to-line' + }).selector(':selected').css({ + 'background-color': '#0169D9', + 'line-color': '#0169D9', + 'source-arrow-color': '#0169D9', + 'target-arrow-color': '#0169D9', + 'mid-source-arrow-color': '#0169D9', + 'mid-target-arrow-color': '#0169D9' + }).selector(':parent:selected').css({ + 'background-color': '#CCE1F9', + 'border-color': '#aec8e5' + }).selector(':active').css({ + 'overlay-color': 'black', + 'overlay-padding': 10, + 'overlay-opacity': 0.25 + }); + this.defaultLength = this.length; +}; + +var styfn$7 = {}; // a caching layer for property parsing + +styfn$7.parse = function (name, value, propIsBypass, propIsFlat) { + var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway + + if (fn(value)) { + return self.parseImplWarn(name, value, propIsBypass, propIsFlat); + } + + var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat; + var bypassKey = propIsBypass ? 't' : 'f'; + var valueKey = '' + value; + var argHash = hashStrings(name, valueKey, bypassKey, flatKey); + var propCache = self.propCache = self.propCache || []; + var ret; + + if (!(ret = propCache[argHash])) { + ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat); + } // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden + // - mappings can't be shared b/c mappings are per-element + + + if (propIsBypass || propIsFlat === 'mapping') { + // need a copy since props are mutated later in their lifecycles + ret = copy(ret); + + if (ret) { + ret.value = copy(ret.value); // because it could be an array, e.g. colour + } + } + + return ret; +}; + +styfn$7.parseImplWarn = function (name, value, propIsBypass, propIsFlat) { + var prop = this.parseImpl(name, value, propIsBypass, propIsFlat); + + if (!prop && value != null) { + warn("The style property `".concat(name, ": ").concat(value, "` is invalid")); + } + + if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') { + warn('The style value of `label` is deprecated for `' + prop.name + '`'); + } + + return prop; +}; // parse a property; return null on invalid; return parsed property otherwise +// fields : +// - name : the name of the property +// - value : the parsed, native-typed value of the property +// - strValue : a string value that represents the property value in valid css +// - bypass : true iff the property is a bypass property + + +styfn$7.parseImpl = function (name, value, propIsBypass, propIsFlat) { + var self = this; + name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName') + + var property = self.properties[name]; + var passedValue = value; + var types = self.types; + + if (!property) { + return null; + } // return null on property of unknown name + + + if (value === undefined) { + return null; + } // can't assign undefined + // the property may be an alias + + + if (property.alias) { + property = property.pointsTo; + name = property.name; + } + + var valueIsString = string(value); + + if (valueIsString) { + // trim the value to make parsing easier + value = value.trim(); + } + + var type = property.type; + + if (!type) { + return null; + } // no type, no luck + // check if bypass is null or empty string (i.e. indication to delete bypass property) + + + if (propIsBypass && (value === '' || value === null)) { + return { + name: name, + value: value, + bypass: true, + deleteBypass: true + }; + } // check if value is a function used as a mapper + + + if (fn(value)) { + return { + name: name, + value: value, + strValue: 'fn', + mapped: types.fn, + bypass: propIsBypass + }; + } // check if value is mapped + + + var data, mapData; + + if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) { + if (propIsBypass) { + return false; + } // mappers not allowed in bypass + + + var mapped = types.data; + return { + name: name, + value: data, + strValue: '' + value, + mapped: mapped, + field: data[1], + bypass: propIsBypass + }; + } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) { + if (propIsBypass) { + return false; + } // mappers not allowed in bypass + + + if (type.multiple) { + return false; + } // impossible to map to num + + + var _mapped = types.mapData; // we can map only if the type is a colour or a number + + if (!(type.color || type.number)) { + return false; + } + + var valueMin = this.parse(name, mapData[4]); // parse to validate + + if (!valueMin || valueMin.mapped) { + return false; + } // can't be invalid or mapped + + + var valueMax = this.parse(name, mapData[5]); // parse to validate + + if (!valueMax || valueMax.mapped) { + return false; + } // can't be invalid or mapped + // check if valueMin and valueMax are the same + + + if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) { + warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`'); + return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range + } else if (type.color) { + var c1 = valueMin.value; + var c2 = valueMax.value; + var same = c1[0] === c2[0] // red + && c1[1] === c2[1] // green + && c1[2] === c2[2] // blue + && ( // optional alpha + c1[3] === c2[3] // same alpha outright + || (c1[3] == null || c1[3] === 1) && ( // full opacity for colour 1? + c2[3] == null || c2[3] === 1) // full opacity for colour 2? + ); + + if (same) { + return false; + } // can't make a mapper without a range + + } + + return { + name: name, + value: mapData, + strValue: '' + value, + mapped: _mapped, + field: mapData[1], + fieldMin: parseFloat(mapData[2]), + // min & max are numeric + fieldMax: parseFloat(mapData[3]), + valueMin: valueMin.value, + valueMax: valueMax.value, + bypass: propIsBypass + }; + } + + if (type.multiple && propIsFlat !== 'multiple') { + var vals; + + if (valueIsString) { + vals = value.split(/\s+/); + } else if (array(value)) { + vals = value; + } else { + vals = [value]; + } + + if (type.evenMultiple && vals.length % 2 !== 0) { + return null; + } + + var valArr = []; + var unitsArr = []; + var pfValArr = []; + var strVal = ''; + var hasEnum = false; + + for (var i = 0; i < vals.length; i++) { + var p = self.parse(name, vals[i], propIsBypass, 'multiple'); + hasEnum = hasEnum || string(p.value); + valArr.push(p.value); + pfValArr.push(p.pfValue != null ? p.pfValue : p.value); + unitsArr.push(p.units); + strVal += (i > 0 ? ' ' : '') + p.strValue; + } + + if (type.validate && !type.validate(valArr, unitsArr)) { + return null; + } + + if (type.singleEnum && hasEnum) { + if (valArr.length === 1 && string(valArr[0])) { + return { + name: name, + value: valArr[0], + strValue: valArr[0], + bypass: propIsBypass + }; + } else { + return null; + } + } + + return { + name: name, + value: valArr, + pfValue: pfValArr, + strValue: strVal, + bypass: propIsBypass, + units: unitsArr + }; + } // several types also allow enums + + + var checkEnums = function checkEnums() { + for (var _i = 0; _i < type.enums.length; _i++) { + var en = type.enums[_i]; + + if (en === value) { + return { + name: name, + value: value, + strValue: '' + value, + bypass: propIsBypass + }; + } + } + + return null; + }; // check the type and return the appropriate object + + + if (type.number) { + var units; + var implicitUnits = 'px'; // not set => px + + if (type.units) { + // use specified units if set + units = type.units; + } + + if (type.implicitUnits) { + implicitUnits = type.implicitUnits; + } + + if (!type.unitless) { + if (valueIsString) { + var unitsRegex = 'px|em' + (type.allowPercent ? '|\\%' : ''); + + if (units) { + unitsRegex = units; + } // only allow explicit units if so set + + + var match = value.match('^(' + number$1 + ')(' + unitsRegex + ')?' + '$'); + + if (match) { + value = match[1]; + units = match[2] || implicitUnits; + } + } else if (!units || type.implicitUnits) { + units = implicitUnits; // implicitly px if unspecified + } + } + + value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid + + if (isNaN(value) && type.enums === undefined) { + return null; + } // check if this number type also accepts special keywords in place of numbers + // (i.e. `left`, `auto`, etc) + + + if (isNaN(value) && type.enums !== undefined) { + value = passedValue; + return checkEnums(); + } // check if value must be an integer + + + if (type.integer && !integer(value)) { + return null; + } // check value is within range + + + if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) { + return null; + } + + var ret = { + name: name, + value: value, + strValue: '' + value + (units ? units : ''), + units: units, + bypass: propIsBypass + }; // normalise value in pixels + + if (type.unitless || units !== 'px' && units !== 'em') { + ret.pfValue = value; + } else { + ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value; + } // normalise value in ms + + + if (units === 'ms' || units === 's') { + ret.pfValue = units === 'ms' ? value : 1000 * value; + } // normalise value in rad + + + if (units === 'deg' || units === 'rad') { + ret.pfValue = units === 'rad' ? value : deg2rad(value); + } // normalize value in % + + + if (units === '%') { + ret.pfValue = value / 100; + } + + return ret; + } else if (type.propList) { + var props = []; + var propsStr = '' + value; + + if (propsStr === 'none') ; else { + // go over each prop + var propsSplit = propsStr.split(/\s*,\s*|\s+/); + + for (var _i2 = 0; _i2 < propsSplit.length; _i2++) { + var propName = propsSplit[_i2].trim(); + + if (self.properties[propName]) { + props.push(propName); + } else { + warn('`' + propName + '` is not a valid property name'); + } + } + + if (props.length === 0) { + return null; + } + } + + return { + name: name, + value: props, + strValue: props.length === 0 ? 'none' : props.join(' '), + bypass: propIsBypass + }; + } else if (type.color) { + var tuple = color2tuple(value); + + if (!tuple) { + return null; + } + + return { + name: name, + value: tuple, + pfValue: tuple, + strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')', + // n.b. no spaces b/c of multiple support + bypass: propIsBypass + }; + } else if (type.regex || type.regexes) { + // first check enums + if (type.enums) { + var enumProp = checkEnums(); + + if (enumProp) { + return enumProp; + } + } + + var regexes = type.regexes ? type.regexes : [type.regex]; + + for (var _i3 = 0; _i3 < regexes.length; _i3++) { + var regex = new RegExp(regexes[_i3]); // make a regex from the type string + + var m = regex.exec(value); + + if (m) { + // regex matches + return { + name: name, + value: type.singleRegexMatchValue ? m[1] : m, + strValue: '' + value, + bypass: propIsBypass + }; + } + } + + return null; // didn't match any + } else if (type.string) { + // just return + return { + name: name, + value: '' + value, + strValue: '' + value, + bypass: propIsBypass + }; + } else if (type.enums) { + // check enums last because it's a combo type in others + return checkEnums(); + } else { + return null; // not a type we can handle + } +}; + +var Style = function Style(cy) { + if (!(this instanceof Style)) { + return new Style(cy); + } + + if (!core(cy)) { + error('A style must have a core reference'); + return; + } + + this._private = { + cy: cy, + coreStyle: {} + }; + this.length = 0; + this.resetToDefault(); +}; + +var styfn$8 = Style.prototype; + +styfn$8.instanceString = function () { + return 'style'; +}; // remove all contexts + + +styfn$8.clear = function () { + var _p = this._private; + var cy = _p.cy; + var eles = cy.elements(); + + for (var i = 0; i < this.length; i++) { + this[i] = undefined; + } + + this.length = 0; + _p.contextStyles = {}; + _p.propDiffs = {}; + this.cleanElements(eles, true); + eles.forEach(function (ele) { + var ele_p = ele[0]._private; + ele_p.styleDirty = true; + ele_p.appliedInitStyle = false; + }); + return this; // chaining +}; + +styfn$8.resetToDefault = function () { + this.clear(); + this.addDefaultStylesheet(); + return this; +}; // builds a style object for the 'core' selector + + +styfn$8.core = function (propName) { + return this._private.coreStyle[propName] || this.getDefaultProperty(propName); +}; // create a new context from the specified selector string and switch to that context + + +styfn$8.selector = function (selectorStr) { + // 'core' is a special case and does not need a selector + var selector = selectorStr === 'core' ? null : new Selector(selectorStr); + var i = this.length++; // new context means new index + + this[i] = { + selector: selector, + properties: [], + mappedProperties: [], + index: i + }; + return this; // chaining +}; // add one or many css rules to the current context + + +styfn$8.css = function () { + var self = this; + var args = arguments; + + if (args.length === 1) { + var map = args[0]; + + for (var i = 0; i < self.properties.length; i++) { + var prop = self.properties[i]; + var mapVal = map[prop.name]; + + if (mapVal === undefined) { + mapVal = map[dash2camel(prop.name)]; + } + + if (mapVal !== undefined) { + this.cssRule(prop.name, mapVal); + } + } + } else if (args.length === 2) { + this.cssRule(args[0], args[1]); + } // do nothing if args are invalid + + + return this; // chaining +}; + +styfn$8.style = styfn$8.css; // add a single css rule to the current context + +styfn$8.cssRule = function (name, value) { + // name-value pair + var property = this.parse(name, value); // add property to current context if valid + + if (property) { + var i = this.length - 1; + this[i].properties.push(property); + this[i].properties[property.name] = property; // allow access by name as well + + if (property.name.match(/pie-(\d+)-background-size/) && property.value) { + this._private.hasPie = true; + } + + if (property.mapped) { + this[i].mappedProperties.push(property); + } // add to core style if necessary + + + var currentSelectorIsCore = !this[i].selector; + + if (currentSelectorIsCore) { + this._private.coreStyle[property.name] = property; + } + } + + return this; // chaining +}; + +styfn$8.append = function (style) { + if (stylesheet(style)) { + style.appendToStyle(this); + } else if (array(style)) { + this.appendFromJson(style); + } else if (string(style)) { + this.appendFromString(style); + } // you probably wouldn't want to append a Style, since you'd duplicate the default parts + + + return this; +}; // static function + + +Style.fromJson = function (cy, json) { + var style = new Style(cy); + style.fromJson(json); + return style; +}; + +Style.fromString = function (cy, string) { + return new Style(cy).fromString(string); +}; + +[styfn, styfn$1, styfn$2, styfn$3, styfn$4, styfn$5, styfn$6, styfn$7].forEach(function (props) { + extend(styfn$8, props); +}); +Style.types = styfn$8.types; +Style.properties = styfn$8.properties; +Style.propertyGroups = styfn$8.propertyGroups; +Style.propertyGroupNames = styfn$8.propertyGroupNames; +Style.propertyGroupKeys = styfn$8.propertyGroupKeys; + +var corefn$7 = { + style: function style(newStyle) { + if (newStyle) { + var s = this.setStyle(newStyle); + s.update(); + } + + return this._private.style; + }, + setStyle: function setStyle(style) { + var _p = this._private; + + if (stylesheet(style)) { + _p.style = style.generateStyle(this); + } else if (array(style)) { + _p.style = Style.fromJson(this, style); + } else if (string(style)) { + _p.style = Style.fromString(this, style); + } else { + _p.style = Style(this); + } + + return _p.style; + }, + // e.g. cy.data() changed => recalc ele mappers + updateStyle: function updateStyle() { + this.mutableElements().updateStyle(); // just send to all eles + } +}; + +var defaultSelectionType = 'single'; +var corefn$8 = { + autolock: function autolock(bool) { + if (bool !== undefined) { + this._private.autolock = bool ? true : false; + } else { + return this._private.autolock; + } + + return this; // chaining + }, + autoungrabify: function autoungrabify(bool) { + if (bool !== undefined) { + this._private.autoungrabify = bool ? true : false; + } else { + return this._private.autoungrabify; + } + + return this; // chaining + }, + autounselectify: function autounselectify(bool) { + if (bool !== undefined) { + this._private.autounselectify = bool ? true : false; + } else { + return this._private.autounselectify; + } + + return this; // chaining + }, + selectionType: function selectionType(selType) { + var _p = this._private; + + if (_p.selectionType == null) { + _p.selectionType = defaultSelectionType; + } + + if (selType !== undefined) { + if (selType === 'additive' || selType === 'single') { + _p.selectionType = selType; + } + } else { + return _p.selectionType; + } + + return this; + }, + panningEnabled: function panningEnabled(bool) { + if (bool !== undefined) { + this._private.panningEnabled = bool ? true : false; + } else { + return this._private.panningEnabled; + } + + return this; // chaining + }, + userPanningEnabled: function userPanningEnabled(bool) { + if (bool !== undefined) { + this._private.userPanningEnabled = bool ? true : false; + } else { + return this._private.userPanningEnabled; + } + + return this; // chaining + }, + zoomingEnabled: function zoomingEnabled(bool) { + if (bool !== undefined) { + this._private.zoomingEnabled = bool ? true : false; + } else { + return this._private.zoomingEnabled; + } + + return this; // chaining + }, + userZoomingEnabled: function userZoomingEnabled(bool) { + if (bool !== undefined) { + this._private.userZoomingEnabled = bool ? true : false; + } else { + return this._private.userZoomingEnabled; + } + + return this; // chaining + }, + boxSelectionEnabled: function boxSelectionEnabled(bool) { + if (bool !== undefined) { + this._private.boxSelectionEnabled = bool ? true : false; + } else { + return this._private.boxSelectionEnabled; + } + + return this; // chaining + }, + pan: function pan() { + var args = arguments; + var pan = this._private.pan; + var dim, val, dims, x, y; + + switch (args.length) { + case 0: + // .pan() + return pan; + + case 1: + if (string(args[0])) { + // .pan('x') + dim = args[0]; + return pan[dim]; + } else if (plainObject(args[0])) { + // .pan({ x: 0, y: 100 }) + if (!this._private.panningEnabled) { + return this; + } + + dims = args[0]; + x = dims.x; + y = dims.y; + + if (number(x)) { + pan.x = x; + } + + if (number(y)) { + pan.y = y; + } + + this.emit('pan viewport'); + } + + break; + + case 2: + // .pan('x', 100) + if (!this._private.panningEnabled) { + return this; + } + + dim = args[0]; + val = args[1]; + + if ((dim === 'x' || dim === 'y') && number(val)) { + pan[dim] = val; + } + + this.emit('pan viewport'); + break; + // invalid + } + + this.notify('viewport'); + return this; // chaining + }, + panBy: function panBy(arg0, arg1) { + var args = arguments; + var pan = this._private.pan; + var dim, val, dims, x, y; + + if (!this._private.panningEnabled) { + return this; + } + + switch (args.length) { + case 1: + if (plainObject(arg0)) { + // .panBy({ x: 0, y: 100 }) + dims = args[0]; + x = dims.x; + y = dims.y; + + if (number(x)) { + pan.x += x; + } + + if (number(y)) { + pan.y += y; + } + + this.emit('pan viewport'); + } + + break; + + case 2: + // .panBy('x', 100) + dim = arg0; + val = arg1; + + if ((dim === 'x' || dim === 'y') && number(val)) { + pan[dim] += val; + } + + this.emit('pan viewport'); + break; + // invalid + } + + this.notify('viewport'); + return this; // chaining + }, + fit: function fit(elements, padding) { + var viewportState = this.getFitViewport(elements, padding); + + if (viewportState) { + var _p = this._private; + _p.zoom = viewportState.zoom; + _p.pan = viewportState.pan; + this.emit('pan zoom viewport'); + this.notify('viewport'); + } + + return this; // chaining + }, + getFitViewport: function getFitViewport(elements, padding) { + if (number(elements) && padding === undefined) { + // elements is optional + padding = elements; + elements = undefined; + } + + if (!this._private.panningEnabled || !this._private.zoomingEnabled) { + return; + } + + var bb; + + if (string(elements)) { + var sel = elements; + elements = this.$(sel); + } else if (boundingBox(elements)) { + // assume bb + var bbe = elements; + bb = { + x1: bbe.x1, + y1: bbe.y1, + x2: bbe.x2, + y2: bbe.y2 + }; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + } else if (!elementOrCollection(elements)) { + elements = this.mutableElements(); + } + + if (elementOrCollection(elements) && elements.empty()) { + return; + } // can't fit to nothing + + + bb = bb || elements.boundingBox(); + var w = this.width(); + var h = this.height(); + var zoom; + padding = number(padding) ? padding : 0; + + if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) { + zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom + + zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom; + zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom; + var pan = { + // now pan to middle + x: (w - zoom * (bb.x1 + bb.x2)) / 2, + y: (h - zoom * (bb.y1 + bb.y2)) / 2 + }; + return { + zoom: zoom, + pan: pan + }; + } + + return; + }, + zoomRange: function zoomRange(min, max) { + var _p = this._private; + + if (max == null) { + var opts = min; + min = opts.min; + max = opts.max; + } + + if (number(min) && number(max) && min <= max) { + _p.minZoom = min; + _p.maxZoom = max; + } else if (number(min) && max === undefined && min <= _p.maxZoom) { + _p.minZoom = min; + } else if (number(max) && min === undefined && max >= _p.minZoom) { + _p.maxZoom = max; + } + + return this; + }, + minZoom: function minZoom(zoom) { + if (zoom === undefined) { + return this._private.minZoom; + } else { + return this.zoomRange({ + min: zoom + }); + } + }, + maxZoom: function maxZoom(zoom) { + if (zoom === undefined) { + return this._private.maxZoom; + } else { + return this.zoomRange({ + max: zoom + }); + } + }, + getZoomedViewport: function getZoomedViewport(params) { + var _p = this._private; + var currentPan = _p.pan; + var currentZoom = _p.zoom; + var pos; // in rendered px + + var zoom; + var bail = false; + + if (!_p.zoomingEnabled) { + // zooming disabled + bail = true; + } + + if (number(params)) { + // then set the zoom + zoom = params; + } else if (plainObject(params)) { + // then zoom about a point + zoom = params.level; + + if (params.position != null) { + pos = modelToRenderedPosition(params.position, currentZoom, currentPan); + } else if (params.renderedPosition != null) { + pos = params.renderedPosition; + } + + if (pos != null && !_p.panningEnabled) { + // panning disabled + bail = true; + } + } // crop zoom + + + zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom; + zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params + + if (bail || !number(zoom) || zoom === currentZoom || pos != null && (!number(pos.x) || !number(pos.y))) { + return null; + } + + if (pos != null) { + // set zoom about position + var pan1 = currentPan; + var zoom1 = currentZoom; + var zoom2 = zoom; + var pan2 = { + x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x, + y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y + }; + return { + zoomed: true, + panned: true, + zoom: zoom2, + pan: pan2 + }; + } else { + // just set the zoom + return { + zoomed: true, + panned: false, + zoom: zoom, + pan: currentPan + }; + } + }, + zoom: function zoom(params) { + if (params === undefined) { + // get + return this._private.zoom; + } else { + // set + var vp = this.getZoomedViewport(params); + var _p = this._private; + + if (vp == null || !vp.zoomed) { + return this; + } + + _p.zoom = vp.zoom; + + if (vp.panned) { + _p.pan.x = vp.pan.x; + _p.pan.y = vp.pan.y; + } + + this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport'); + this.notify('viewport'); + return this; // chaining + } + }, + viewport: function viewport(opts) { + var _p = this._private; + var zoomDefd = true; + var panDefd = true; + var events = []; // to trigger + + var zoomFailed = false; + var panFailed = false; + + if (!opts) { + return this; + } + + if (!number(opts.zoom)) { + zoomDefd = false; + } + + if (!plainObject(opts.pan)) { + panDefd = false; + } + + if (!zoomDefd && !panDefd) { + return this; + } + + if (zoomDefd) { + var z = opts.zoom; + + if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) { + zoomFailed = true; + } else { + _p.zoom = z; + events.push('zoom'); + } + } + + if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) { + var p = opts.pan; + + if (number(p.x)) { + _p.pan.x = p.x; + panFailed = false; + } + + if (number(p.y)) { + _p.pan.y = p.y; + panFailed = false; + } + + if (!panFailed) { + events.push('pan'); + } + } + + if (events.length > 0) { + events.push('viewport'); + this.emit(events.join(' ')); + this.notify('viewport'); + } + + return this; // chaining + }, + center: function center(elements) { + var pan = this.getCenterPan(elements); + + if (pan) { + this._private.pan = pan; + this.emit('pan viewport'); + this.notify('viewport'); + } + + return this; // chaining + }, + getCenterPan: function getCenterPan(elements, zoom) { + if (!this._private.panningEnabled) { + return; + } + + if (string(elements)) { + var selector = elements; + elements = this.mutableElements().filter(selector); + } else if (!elementOrCollection(elements)) { + elements = this.mutableElements(); + } + + if (elements.length === 0) { + return; + } // can't centre pan to nothing + + + var bb = elements.boundingBox(); + var w = this.width(); + var h = this.height(); + zoom = zoom === undefined ? this._private.zoom : zoom; + var pan = { + // middle + x: (w - zoom * (bb.x1 + bb.x2)) / 2, + y: (h - zoom * (bb.y1 + bb.y2)) / 2 + }; + return pan; + }, + reset: function reset() { + if (!this._private.panningEnabled || !this._private.zoomingEnabled) { + return this; + } + + this.viewport({ + pan: { + x: 0, + y: 0 + }, + zoom: 1 + }); + return this; // chaining + }, + invalidateSize: function invalidateSize() { + this._private.sizeCache = null; + }, + size: function size() { + var _p = this._private; + var container = _p.container; + return _p.sizeCache = _p.sizeCache || (container ? function () { + var style = window$1.getComputedStyle(container); + + var val = function val(name) { + return parseFloat(style.getPropertyValue(name)); + }; + + return { + width: container.clientWidth - val('padding-left') - val('padding-right'), + height: container.clientHeight - val('padding-top') - val('padding-bottom') + }; + }() : { + // fallback if no container (not 0 b/c can be used for dividing etc) + width: 1, + height: 1 + }); + }, + width: function width() { + return this.size().width; + }, + height: function height() { + return this.size().height; + }, + extent: function extent() { + var pan = this._private.pan; + var zoom = this._private.zoom; + var rb = this.renderedExtent(); + var b = { + x1: (rb.x1 - pan.x) / zoom, + x2: (rb.x2 - pan.x) / zoom, + y1: (rb.y1 - pan.y) / zoom, + y2: (rb.y2 - pan.y) / zoom + }; + b.w = b.x2 - b.x1; + b.h = b.y2 - b.y1; + return b; + }, + renderedExtent: function renderedExtent() { + var width = this.width(); + var height = this.height(); + return { + x1: 0, + y1: 0, + x2: width, + y2: height, + w: width, + h: height + }; + }, + multiClickDebounceTime: function multiClickDebounceTime(_int) { + if (_int) this._private.multiClickDebounceTime = _int;else return this._private.multiClickDebounceTime; + return this; // chaining + } +}; // aliases + +corefn$8.centre = corefn$8.center; // backwards compatibility + +corefn$8.autolockNodes = corefn$8.autolock; +corefn$8.autoungrabifyNodes = corefn$8.autoungrabify; + +var fn$6 = { + data: define$3.data({ + field: 'data', + bindingEvent: 'data', + allowBinding: true, + allowSetting: true, + settingEvent: 'data', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true, + updateStyle: true + }), + removeData: define$3.removeData({ + field: 'data', + event: 'data', + triggerFnName: 'trigger', + triggerEvent: true, + updateStyle: true + }), + scratch: define$3.data({ + field: 'scratch', + bindingEvent: 'scratch', + allowBinding: true, + allowSetting: true, + settingEvent: 'scratch', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true, + updateStyle: true + }), + removeScratch: define$3.removeData({ + field: 'scratch', + event: 'scratch', + triggerFnName: 'trigger', + triggerEvent: true, + updateStyle: true + }) +}; // aliases + +fn$6.attr = fn$6.data; +fn$6.removeAttr = fn$6.removeData; + +var Core = function Core(opts) { + var cy = this; + opts = extend({}, opts); + var container = opts.container; // allow for passing a wrapped jquery object + // e.g. cytoscape({ container: $('#cy') }) + + if (container && !htmlElement(container) && htmlElement(container[0])) { + container = container[0]; + } + + var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery + + reg = reg || {}; + + if (reg && reg.cy) { + reg.cy.destroy(); + reg = {}; // old instance => replace reg completely + } + + var readies = reg.readies = reg.readies || []; + + if (container) { + container._cyreg = reg; + } // make sure container assoc'd reg points to this cy + + + reg.cy = cy; + var head = window$1 !== undefined && container !== undefined && !opts.headless; + var options = opts; + options.layout = extend({ + name: head ? 'grid' : 'null' + }, options.layout); + options.renderer = extend({ + name: head ? 'canvas' : 'null' + }, options.renderer); + + var defVal = function defVal(def, val, altVal) { + if (val !== undefined) { + return val; + } else if (altVal !== undefined) { + return altVal; + } else { + return def; + } + }; + + var _p = this._private = { + container: container, + // html dom ele container + ready: false, + // whether ready has been triggered + options: options, + // cached options + elements: new Collection(this), + // elements in the graph + listeners: [], + // list of listeners + aniEles: new Collection(this), + // elements being animated + data: options.data || {}, + // data for the core + scratch: {}, + // scratch object for core + layout: null, + renderer: null, + destroyed: false, + // whether destroy was called + notificationsEnabled: true, + // whether notifications are sent to the renderer + minZoom: 1e-50, + maxZoom: 1e50, + zoomingEnabled: defVal(true, options.zoomingEnabled), + userZoomingEnabled: defVal(true, options.userZoomingEnabled), + panningEnabled: defVal(true, options.panningEnabled), + userPanningEnabled: defVal(true, options.userPanningEnabled), + boxSelectionEnabled: defVal(true, options.boxSelectionEnabled), + autolock: defVal(false, options.autolock, options.autolockNodes), + autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes), + autounselectify: defVal(false, options.autounselectify), + styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled, + zoom: number(options.zoom) ? options.zoom : 1, + pan: { + x: plainObject(options.pan) && number(options.pan.x) ? options.pan.x : 0, + y: plainObject(options.pan) && number(options.pan.y) ? options.pan.y : 0 + }, + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + hasCompoundNodes: false, + multiClickDebounceTime: defVal(250, options.multiClickDebounceTime) + }; + + this.createEmitter(); // set selection type + + this.selectionType(options.selectionType); // init zoom bounds + + this.zoomRange({ + min: options.minZoom, + max: options.maxZoom + }); + + var loadExtData = function loadExtData(extData, next) { + var anyIsPromise = extData.some(promise); + + if (anyIsPromise) { + return Promise$1$1.all(extData).then(next); // load all data asynchronously, then exec rest of init + } else { + next(extData); // exec synchronously for convenience + } + }; // start with the default stylesheet so we have something before loading an external stylesheet + + + if (_p.styleEnabled) { + cy.setStyle([]); + } // create the renderer + + + var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options + + cy.initRenderer(rendererOptions); + + var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) { + cy.notifications(false); // remove old elements + + var oldEles = cy.mutableElements(); + + if (oldEles.length > 0) { + oldEles.remove(); + } + + if (elements != null) { + if (plainObject(elements) || array(elements)) { + cy.add(elements); + } + } + + cy.one('layoutready', function (e) { + cy.notifications(true); + cy.emit(e); // we missed this event by turning notifications off, so pass it on + + cy.one('load', onload); + cy.emitAndNotify('load'); + }).one('layoutstop', function () { + cy.one('done', ondone); + cy.emit('done'); + }); + var layoutOpts = extend({}, cy._private.options.layout); + layoutOpts.eles = cy.elements(); + cy.layout(layoutOpts).run(); + }; + + loadExtData([options.style, options.elements], function (thens) { + var initStyle = thens[0]; + var initEles = thens[1]; // init style + + if (_p.styleEnabled) { + cy.style().append(initStyle); + } // initial load + + + setElesAndLayout(initEles, function () { + // onready + cy.startAnimationLoop(); + _p.ready = true; // if a ready callback is specified as an option, the bind it + + if (fn(options.ready)) { + cy.on('ready', options.ready); + } // bind all the ready handlers registered before creating this instance + + + for (var i = 0; i < readies.length; i++) { + var fn$1 = readies[i]; + cy.on('ready', fn$1); + } + + if (reg) { + reg.readies = []; + } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc + + + cy.emit('ready'); + }, options.done); + }); +}; + +var corefn$9 = Core.prototype; // short alias + +extend(corefn$9, { + instanceString: function instanceString() { + return 'core'; + }, + isReady: function isReady() { + return this._private.ready; + }, + destroyed: function destroyed() { + return this._private.destroyed; + }, + ready: function ready(fn) { + if (this.isReady()) { + this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event + } else { + this.on('ready', fn); + } + + return this; + }, + destroy: function destroy() { + var cy = this; + if (cy.destroyed()) return; + cy.stopAnimationLoop(); + cy.destroyRenderer(); + this.emit('destroy'); + cy._private.destroyed = true; + return cy; + }, + hasElementWithId: function hasElementWithId(id) { + return this._private.elements.hasElementWithId(id); + }, + getElementById: function getElementById(id) { + return this._private.elements.getElementById(id); + }, + hasCompoundNodes: function hasCompoundNodes() { + return this._private.hasCompoundNodes; + }, + headless: function headless() { + return this._private.renderer.isHeadless(); + }, + styleEnabled: function styleEnabled() { + return this._private.styleEnabled; + }, + addToPool: function addToPool(eles) { + this._private.elements.merge(eles); + + return this; // chaining + }, + removeFromPool: function removeFromPool(eles) { + this._private.elements.unmerge(eles); + + return this; + }, + container: function container() { + return this._private.container || null; + }, + mount: function mount(container) { + if (container == null) { + return; + } + + var cy = this; + var _p = cy._private; + var options = _p.options; + + if (!htmlElement(container) && htmlElement(container[0])) { + container = container[0]; + } + + cy.stopAnimationLoop(); + cy.destroyRenderer(); + _p.container = container; + _p.styleEnabled = true; + cy.invalidateSize(); + cy.initRenderer(extend({}, options, options.renderer, { + // allow custom renderer name to be re-used, otherwise use canvas + name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name + })); + cy.startAnimationLoop(); + cy.style(options.style); + cy.emit('mount'); + return cy; + }, + unmount: function unmount() { + var cy = this; + cy.stopAnimationLoop(); + cy.destroyRenderer(); + cy.initRenderer({ + name: 'null' + }); + cy.emit('unmount'); + return cy; + }, + options: function options() { + return copy(this._private.options); + }, + json: function json(obj) { + var cy = this; + var _p = cy._private; + var eles = cy.mutableElements(); + + var getFreshRef = function getFreshRef(ele) { + return cy.getElementById(ele.id()); + }; + + if (plainObject(obj)) { + // set + cy.startBatch(); + + if (obj.elements) { + var idInJson = {}; + + var updateEles = function updateEles(jsons, gr) { + var toAdd = []; + var toMod = []; + + for (var i = 0; i < jsons.length; i++) { + var json = jsons[i]; + + if (!json.data.id) { + warn('cy.json() cannot handle elements without an ID attribute'); + continue; + } + + var id = '' + json.data.id; // id must be string + + var ele = cy.getElementById(id); + idInJson[id] = true; + + if (ele.length !== 0) { + // existing element should be updated + toMod.push({ + ele: ele, + json: json + }); + } else { + // otherwise should be added + if (gr) { + json.group = gr; + toAdd.push(json); + } else { + toAdd.push(json); + } + } + } + + cy.add(toAdd); + + for (var _i = 0; _i < toMod.length; _i++) { + var _toMod$_i = toMod[_i], + _ele = _toMod$_i.ele, + _json = _toMod$_i.json; + + _ele.json(_json); + } + }; + + if (array(obj.elements)) { + // elements: [] + updateEles(obj.elements); + } else { + // elements: { nodes: [], edges: [] } + var grs = ['nodes', 'edges']; + + for (var i = 0; i < grs.length; i++) { + var gr = grs[i]; + var elements = obj.elements[gr]; + + if (array(elements)) { + updateEles(elements, gr); + } + } + } + + var parentsToRemove = cy.collection(); + eles.filter(function (ele) { + return !idInJson[ele.id()]; + }).forEach(function (ele) { + if (ele.isParent()) { + parentsToRemove.merge(ele); + } else { + ele.remove(); + } + }); // so that children are not removed w/parent + + parentsToRemove.forEach(function (ele) { + return ele.children().move({ + parent: null + }); + }); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs + + parentsToRemove.forEach(function (ele) { + return getFreshRef(ele).remove(); + }); + } + + if (obj.style) { + cy.style(obj.style); + } + + if (obj.zoom != null && obj.zoom !== _p.zoom) { + cy.zoom(obj.zoom); + } + + if (obj.pan) { + if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) { + cy.pan(obj.pan); + } + } + + if (obj.data) { + cy.data(obj.data); + } + + var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify', 'multiClickDebounceTime']; + + for (var _i2 = 0; _i2 < fields.length; _i2++) { + var f = fields[_i2]; + + if (obj[f] != null) { + cy[f](obj[f]); + } + } + + cy.endBatch(); + return this; // chaining + } else { + // get + var flat = !!obj; + var json = {}; + + if (flat) { + json.elements = this.elements().map(function (ele) { + return ele.json(); + }); + } else { + json.elements = {}; + eles.forEach(function (ele) { + var group = ele.group(); + + if (!json.elements[group]) { + json.elements[group] = []; + } + + json.elements[group].push(ele.json()); + }); + } + + if (this._private.styleEnabled) { + json.style = cy.style().json(); + } + + json.data = copy(cy.data()); + var options = _p.options; + json.zoomingEnabled = _p.zoomingEnabled; + json.userZoomingEnabled = _p.userZoomingEnabled; + json.zoom = _p.zoom; + json.minZoom = _p.minZoom; + json.maxZoom = _p.maxZoom; + json.panningEnabled = _p.panningEnabled; + json.userPanningEnabled = _p.userPanningEnabled; + json.pan = copy(_p.pan); + json.boxSelectionEnabled = _p.boxSelectionEnabled; + json.renderer = copy(options.renderer); + json.hideEdgesOnViewport = options.hideEdgesOnViewport; + json.textureOnViewport = options.textureOnViewport; + json.wheelSensitivity = options.wheelSensitivity; + json.motionBlur = options.motionBlur; + json.multiClickDebounceTime = options.multiClickDebounceTime; + return json; + } + } +}); +corefn$9.$id = corefn$9.getElementById; +[corefn, corefn$1, elesfn$v, corefn$2, corefn$3, corefn$4, corefn$5, corefn$6, corefn$7, corefn$8, fn$6].forEach(function (props) { + extend(corefn$9, props); +}); + +/* eslint-disable no-unused-vars */ + +var defaults$9 = { + fit: true, + // whether to fit the viewport to the graph + directed: false, + // whether the tree is directed downwards (or edges can point in any direction if false) + padding: 30, + // padding on fit + circle: false, + // put depths in concentric circles if true, put depths top down if false + grid: false, + // whether to create an even grid into which the DAG is placed (circle:false only) + spacingFactor: 1.75, + // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + roots: undefined, + // the roots of the trees + maximal: false, + // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only) + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled, + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; +/* eslint-enable */ + +var getInfo = function getInfo(ele) { + return ele.scratch('breadthfirst'); +}; + +var setInfo = function setInfo(ele, obj) { + return ele.scratch('breadthfirst', obj); +}; + +function BreadthFirstLayout(options) { + this.options = extend({}, defaults$9, options); +} + +BreadthFirstLayout.prototype.run = function () { + var params = this.options; + var options = params; + var cy = params.cy; + var eles = options.eles; + var nodes = eles.nodes().filter(function (n) { + return !n.isParent(); + }); + var graph = eles; + var directed = options.directed; + var maximal = options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code + + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var roots; + + if (elementOrCollection(options.roots)) { + roots = options.roots; + } else if (array(options.roots)) { + var rootsArray = []; + + for (var i = 0; i < options.roots.length; i++) { + var id = options.roots[i]; + var ele = cy.getElementById(id); + rootsArray.push(ele); + } + + roots = cy.collection(rootsArray); + } else if (string(options.roots)) { + roots = cy.$(options.roots); + } else { + if (directed) { + roots = nodes.roots(); + } else { + var components = eles.components(); + roots = cy.collection(); + + var _loop = function _loop(_i) { + var comp = components[_i]; + var maxDegree = comp.maxDegree(false); + var compRoots = comp.filter(function (ele) { + return ele.degree(false) === maxDegree; + }); + roots = roots.add(compRoots); + }; + + for (var _i = 0; _i < components.length; _i++) { + _loop(_i); + } + } + } + + var depths = []; + var foundByBfs = {}; + + var addToDepth = function addToDepth(ele, d) { + if (depths[d] == null) { + depths[d] = []; + } + + var i = depths[d].length; + depths[d].push(ele); + setInfo(ele, { + index: i, + depth: d + }); + }; + + var changeDepth = function changeDepth(ele, newDepth) { + var _getInfo = getInfo(ele), + depth = _getInfo.depth, + index = _getInfo.index; + + depths[depth][index] = null; + addToDepth(ele, newDepth); + }; // find the depths of the nodes + + + graph.bfs({ + roots: roots, + directed: options.directed, + visit: function visit(node, edge, pNode, i, depth) { + var ele = node[0]; + var id = ele.id(); + addToDepth(ele, depth); + foundByBfs[id] = true; + } + }); // check for nodes not found by bfs + + var orphanNodes = []; + + for (var _i2 = 0; _i2 < nodes.length; _i2++) { + var _ele = nodes[_i2]; + + if (foundByBfs[_ele.id()]) { + continue; + } else { + orphanNodes.push(_ele); + } + } // assign the nodes a depth and index + + + var assignDepthsAt = function assignDepthsAt(i) { + var eles = depths[i]; + + for (var j = 0; j < eles.length; j++) { + var _ele2 = eles[j]; + + if (_ele2 == null) { + eles.splice(j, 1); + j--; + continue; + } + + setInfo(_ele2, { + depth: i, + index: j + }); + } + }; + + var assignDepths = function assignDepths() { + for (var _i3 = 0; _i3 < depths.length; _i3++) { + assignDepthsAt(_i3); + } + }; + + var adjustMaximally = function adjustMaximally(ele, shifted) { + var eInfo = getInfo(ele); + var incomers = ele.incomers().filter(function (el) { + return el.isNode() && eles.has(el); + }); + var maxDepth = -1; + var id = ele.id(); + + for (var k = 0; k < incomers.length; k++) { + var incmr = incomers[k]; + var iInfo = getInfo(incmr); + maxDepth = Math.max(maxDepth, iInfo.depth); + } + + if (eInfo.depth <= maxDepth) { + if (shifted[id]) { + return null; + } + + changeDepth(ele, maxDepth + 1); + shifted[id] = true; + return true; + } + + return false; + }; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1) + + + if (directed && maximal) { + var Q = []; + var shifted = {}; + + var enqueue = function enqueue(n) { + return Q.push(n); + }; + + var dequeue = function dequeue() { + return Q.shift(); + }; + + nodes.forEach(function (n) { + return Q.push(n); + }); + + while (Q.length > 0) { + var _ele3 = dequeue(); + + var didShift = adjustMaximally(_ele3, shifted); + + if (didShift) { + _ele3.outgoers().filter(function (el) { + return el.isNode() && eles.has(el); + }).forEach(enqueue); + } else if (didShift === null) { + warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.'); + break; // exit on failure + } + } + } + + assignDepths(); // clear holes + // find min distance we need to leave between nodes + + var minDistance = 0; + + if (options.avoidOverlap) { + for (var _i4 = 0; _i4 < nodes.length; _i4++) { + var n = nodes[_i4]; + var nbb = n.layoutDimensions(options); + var w = nbb.w; + var h = nbb.h; + minDistance = Math.max(minDistance, w, h); + } + } // get the weighted percent for an element based on its connectivity to other levels + + + var cachedWeightedPercent = {}; + + var getWeightedPercent = function getWeightedPercent(ele) { + if (cachedWeightedPercent[ele.id()]) { + return cachedWeightedPercent[ele.id()]; + } + + var eleDepth = getInfo(ele).depth; + var neighbors = ele.neighborhood(); + var percent = 0; + var samples = 0; + + for (var _i5 = 0; _i5 < neighbors.length; _i5++) { + var neighbor = neighbors[_i5]; + + if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) { + continue; + } + + var bf = getInfo(neighbor); + + if (bf == null) { + continue; + } + + var index = bf.index; + var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering + + if (index == null || depth == null) { + continue; + } + + var nDepth = depths[depth].length; + + if (depth < eleDepth) { + // only get influenced by elements above + percent += index / nDepth; + samples++; + } + } + + samples = Math.max(1, samples); + percent = percent / samples; + + if (samples === 0) { + // put lone nodes at the start + percent = 0; + } + + cachedWeightedPercent[ele.id()] = percent; + return percent; + }; // rearrange the indices in each depth level based on connectivity + + + var sortFn = function sortFn(a, b) { + var apct = getWeightedPercent(a); + var bpct = getWeightedPercent(b); + var diff = apct - bpct; + + if (diff === 0) { + return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons + } else { + return diff; + } + }; // sort each level to make connected nodes closer + + + for (var _i6 = 0; _i6 < depths.length; _i6++) { + depths[_i6].sort(sortFn); + + assignDepthsAt(_i6); + } // assign orphan nodes to a new top-level depth + + + var orphanDepth = []; + + for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) { + orphanDepth.push(orphanNodes[_i7]); + } + + depths.unshift(orphanDepth); + assignDepths(); + var biggestDepthSize = 0; + + for (var _i8 = 0; _i8 < depths.length; _i8++) { + biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize); + } + + var center = { + x: bb.x1 + bb.w / 2, + y: bb.x1 + bb.h / 2 + }; + var maxDepthSize = depths.reduce(function (max, eles) { + return Math.max(max, eles.length); + }, 0); + + var getPosition = function getPosition(ele) { + var _getInfo2 = getInfo(ele), + depth = _getInfo2.depth, + index = _getInfo2.index; + + var depthSize = depths[depth].length; + var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance); + var distanceY = Math.max(bb.h / (depths.length + 1), minDistance); + var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length); + radiusStepSize = Math.max(radiusStepSize, minDistance); + + if (!options.circle) { + var epos = { + x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX, + y: (depth + 1) * distanceY + }; + return epos; + } else { + var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0); + var theta = 2 * Math.PI / depths[depth].length * index; + + if (depth === 0 && depths[0].length === 1) { + radius = 1; + } + + return { + x: center.x + radius * Math.cos(theta), + y: center.y + radius * Math.sin(theta) + }; + } + }; + + eles.nodes().layoutPositions(this, options, getPosition); + return this; // chaining +}; + +var defaults$a = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox and radius if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + radius: undefined, + // the radius of the circle + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: undefined, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: true, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + sort: undefined, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function CircleLayout(options) { + this.options = extend({}, defaults$a, options); +} + +CircleLayout.prototype.run = function () { + var params = this.options; + var options = params; + var cy = params.cy; + var eles = options.eles; + var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; + var nodes = eles.nodes().not(':parent'); + + if (options.sort) { + nodes = nodes.sort(options.sort); + } + + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var center = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep; + var dTheta = sweep / Math.max(1, nodes.length - 1); + var r; + var minDistance = 0; + + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + var nbb = n.layoutDimensions(options); + var w = nbb.w; + var h = nbb.h; + minDistance = Math.max(minDistance, w, h); + } + + if (number(options.radius)) { + r = options.radius; + } else if (nodes.length <= 1) { + r = 0; + } else { + r = Math.min(bb.h, bb.w) / 2 - minDistance; + } // calculate the radius + + + if (nodes.length > 1 && options.avoidOverlap) { + // but only if more than one node (can't overlap) + minDistance *= 1.75; // just to have some nice spacing + + var dcos = Math.cos(dTheta) - Math.cos(0); + var dsin = Math.sin(dTheta) - Math.sin(0); + var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping + + r = Math.max(rMin, r); + } + + var getPos = function getPos(ele, i) { + var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1); + var rx = r * Math.cos(theta); + var ry = r * Math.sin(theta); + var pos = { + x: center.x + rx, + y: center.y + ry + }; + return pos; + }; + + eles.nodes().layoutPositions(this, options, getPos); + return this; // chaining +}; + +var defaults$b = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: undefined, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: true, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + equidistant: false, + // whether levels have an equal radial distance betwen them, may cause bounding box overflow + minNodeSpacing: 10, + // min spacing between outside of nodes (used for radius adjustment) + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + height: undefined, + // height of layout area (overrides container height) + width: undefined, + // width of layout area (overrides container width) + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + concentric: function concentric(node) { + // returns numeric value for each node, placing higher nodes in levels towards the centre + return node.degree(); + }, + levelWidth: function levelWidth(nodes) { + // the variation of concentric values in each level + return nodes.maxDegree() / 4; + }, + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function ConcentricLayout$1(options) { + this.options = extend({}, defaults$b, options); +} + +ConcentricLayout$1.prototype.run = function () { + var params = this.options; + var options = params; + var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; + var cy = params.cy; + var eles = options.eles; + var nodes = eles.nodes().not(':parent'); + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var center = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var nodeValues = []; // { node, value } + + var maxNodeSize = 0; + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var value = void 0; // calculate the node value + + value = options.concentric(node); + nodeValues.push({ + value: value, + node: node + }); // for style mapping + + node._private.scratch.concentric = value; + } // in case we used the `concentric` in style + + + nodes.updateStyle(); // calculate max size now based on potentially updated mappers + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + + var nbb = _node.layoutDimensions(options); + + maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h); + } // sort node values in descreasing order + + + nodeValues.sort(function (a, b) { + return b.value - a.value; + }); + var levelWidth = options.levelWidth(nodes); // put the values into levels + + var levels = [[]]; + var currentLevel = levels[0]; + + for (var _i2 = 0; _i2 < nodeValues.length; _i2++) { + var val = nodeValues[_i2]; + + if (currentLevel.length > 0) { + var diff = Math.abs(currentLevel[0].value - val.value); + + if (diff >= levelWidth) { + currentLevel = []; + levels.push(currentLevel); + } + } + + currentLevel.push(val); + } // create positions from levels + + + var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes + + if (!options.avoidOverlap) { + // then strictly constrain to bb + var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1; + var maxR = Math.min(bb.w, bb.h) / 2 - minDist; + var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0); + minDist = Math.min(minDist, rStep); + } // find the metrics for each level + + + var r = 0; + + for (var _i3 = 0; _i3 < levels.length; _i3++) { + var level = levels[_i3]; + var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep; + var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius + + if (level.length > 1 && options.avoidOverlap) { + // but only if more than one node (can't overlap) + var dcos = Math.cos(dTheta) - Math.cos(0); + var dsin = Math.sin(dTheta) - Math.sin(0); + var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping + + r = Math.max(rMin, r); + } + + level.r = r; + r += minDist; + } + + if (options.equidistant) { + var rDeltaMax = 0; + var _r = 0; + + for (var _i4 = 0; _i4 < levels.length; _i4++) { + var _level = levels[_i4]; + var rDelta = _level.r - _r; + rDeltaMax = Math.max(rDeltaMax, rDelta); + } + + _r = 0; + + for (var _i5 = 0; _i5 < levels.length; _i5++) { + var _level2 = levels[_i5]; + + if (_i5 === 0) { + _r = _level2.r; + } + + _level2.r = _r; + _r += rDeltaMax; + } + } // calculate the node positions + + + var pos = {}; // id => position + + for (var _i6 = 0; _i6 < levels.length; _i6++) { + var _level3 = levels[_i6]; + var _dTheta = _level3.dTheta; + var _r2 = _level3.r; + + for (var j = 0; j < _level3.length; j++) { + var _val = _level3[j]; + var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j; + var p = { + x: center.x + _r2 * Math.cos(theta), + y: center.y + _r2 * Math.sin(theta) + }; + pos[_val.node.id()] = p; + } + } // position the nodes + + + eles.nodes().layoutPositions(this, options, function (ele) { + var id = ele.id(); + return pos[id]; + }); + return this; // chaining +}; + +/* +The CoSE layout was written by Gerardo Huck. +https://www.linkedin.com/in/gerardohuck/ + +Based on the following article: +http://dl.acm.org/citation.cfm?id=1498047 + +Modifications tracked on Github. +*/ +var DEBUG; +/** + * @brief : default layout options + */ + +var defaults$c = { + // Called on `layoutready` + ready: function ready() {}, + // Called on `layoutstop` + stop: function stop() {}, + // Whether to animate while running the layout + // true : Animate continuously as the layout is running + // false : Just show the end result + // 'end' : Animate with the end result, from the initial positions to the end positions + animate: true, + // Easing of the animation for animate:'end' + animationEasing: undefined, + // The duration of the animation for animate:'end' + animationDuration: undefined, + // A function that determines whether the node should be animated + // All nodes animated by default on animate enabled + // Non-animated nodes are positioned immediately when the layout starts + animateFilter: function animateFilter(node, i) { + return true; + }, + // The layout animates only after this many milliseconds for animate:true + // (prevents flashing on fast runs) + animationThreshold: 250, + // Number of iterations between consecutive screen positions update + refresh: 20, + // Whether to fit the network view after when done + fit: true, + // Padding on fit + padding: 30, + // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + boundingBox: undefined, + // Excludes the label when calculating node bounding boxes for the layout algorithm + nodeDimensionsIncludeLabels: false, + // Randomize the initial positions of the nodes (true) or use existing positions (false) + randomize: false, + // Extra spacing between components in non-compound graphs + componentSpacing: 40, + // Node repulsion (non overlapping) multiplier + nodeRepulsion: function nodeRepulsion(node) { + return 2048; + }, + // Node repulsion (overlapping) multiplier + nodeOverlap: 4, + // Ideal edge (non nested) length + idealEdgeLength: function idealEdgeLength(edge) { + return 32; + }, + // Divisor to compute edge forces + edgeElasticity: function edgeElasticity(edge) { + return 32; + }, + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 1.2, + // Gravity force (constant) + gravity: 1, + // Maximum number of iterations to perform + numIter: 1000, + // Initial temperature (maximum node displacement) + initialTemp: 1000, + // Cooling factor (how the temperature is reduced between consecutive iterations + coolingFactor: 0.99, + // Lower temperature threshold (below this point the layout will end) + minTemp: 1.0 +}; +/** + * @brief : constructor + * @arg options : object containing layout options + */ + +function CoseLayout(options) { + this.options = extend({}, defaults$c, options); + this.options.layout = this; +} +/** + * @brief : runs the layout + */ + + +CoseLayout.prototype.run = function () { + var options = this.options; + var cy = options.cy; + var layout = this; + layout.stopped = false; + + if (options.animate === true || options.animate === false) { + layout.emit({ + type: 'layoutstart', + layout: layout + }); + } // Set DEBUG - Global variable + + + if (true === options.debug) { + DEBUG = true; + } else { + DEBUG = false; + } // Initialize layout info + + + var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging + + if (DEBUG) { + printLayoutInfo(layoutInfo); + } // If required, randomize node positions + + + if (options.randomize) { + randomizePositions(layoutInfo); + } + + var startTime = performanceNow(); + + var refresh = function refresh() { + refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary + + if (true === options.fit) { + cy.fit(options.padding); + } + }; + + var mainLoop = function mainLoop(i) { + if (layout.stopped || i >= options.numIter) { + // logDebug("Layout manually stopped. Stopping computation in step " + i); + return false; + } // Do one step in the phisical simulation + + + step$1(layoutInfo, options); // Update temperature + + layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug("New temperature: " + layoutInfo.temperature); + + if (layoutInfo.temperature < options.minTemp) { + // logDebug("Temperature drop below minimum threshold. Stopping computation in step " + i); + return false; + } + + return true; + }; + + var done = function done() { + if (options.animate === true || options.animate === false) { + refresh(); // Layout has finished + + layout.one('layoutstop', options.stop); + layout.emit({ + type: 'layoutstop', + layout: layout + }); + } else { + var nodes = options.eles.nodes(); + var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); + nodes.layoutPositions(layout, options, getScaledPos); + } + }; + + var i = 0; + var loopRet = true; + + if (options.animate === true) { + var frame = function frame() { + var f = 0; + + while (loopRet && f < options.refresh) { + loopRet = mainLoop(i); + i++; + f++; + } + + if (!loopRet) { + // it's done + separateComponents(layoutInfo, options); + done(); + } else { + var now = performanceNow(); + + if (now - startTime >= options.animationThreshold) { + refresh(); + } + + requestAnimationFrame$1(frame); + } + }; + + frame(); + } else { + while (loopRet) { + loopRet = mainLoop(i); + i++; + } + + separateComponents(layoutInfo, options); + done(); + } + + return this; // chaining +}; +/** + * @brief : called on continuous layouts to stop them before they finish + */ + + +CoseLayout.prototype.stop = function () { + this.stopped = true; + + if (this.thread) { + this.thread.stop(); + } + + this.emit('layoutstop'); + return this; // chaining +}; + +CoseLayout.prototype.destroy = function () { + if (this.thread) { + this.thread.stop(); + } + + return this; // chaining +}; +/** + * @brief : Creates an object which is contains all the data + * used in the layout process + * @arg cy : cytoscape.js object + * @return : layoutInfo object initialized + */ + + +var createLayoutInfo = function createLayoutInfo(cy, layout, options) { + // Shortcut + var edges = options.eles.edges(); + var nodes = options.eles.nodes(); + var layoutInfo = { + isCompound: cy.hasCompoundNodes(), + layoutNodes: [], + idToIndex: {}, + nodeSize: nodes.size(), + graphSet: [], + indexToGraph: [], + layoutEdges: [], + edgeSize: edges.size(), + temperature: options.initialTemp, + clientWidth: cy.width(), + clientHeight: cy.width(), + boundingBox: makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }) + }; + var components = options.eles.components(); + var id2cmptId = {}; + + for (var i = 0; i < components.length; i++) { + var component = components[i]; + + for (var j = 0; j < component.length; j++) { + var node = component[j]; + id2cmptId[node.id()] = i; + } + } // Iterate over all nodes, creating layout nodes + + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = nodes[i]; + var nbb = n.layoutDimensions(options); + var tempNode = {}; + tempNode.isLocked = n.locked(); + tempNode.id = n.data('id'); + tempNode.parentId = n.data('parent'); + tempNode.cmptId = id2cmptId[n.id()]; + tempNode.children = []; + tempNode.positionX = n.position('x'); + tempNode.positionY = n.position('y'); + tempNode.offsetX = 0; + tempNode.offsetY = 0; + tempNode.height = nbb.w; + tempNode.width = nbb.h; + tempNode.maxX = tempNode.positionX + tempNode.width / 2; + tempNode.minX = tempNode.positionX - tempNode.width / 2; + tempNode.maxY = tempNode.positionY + tempNode.height / 2; + tempNode.minY = tempNode.positionY - tempNode.height / 2; + tempNode.padLeft = parseFloat(n.style('padding')); + tempNode.padRight = parseFloat(n.style('padding')); + tempNode.padTop = parseFloat(n.style('padding')); + tempNode.padBottom = parseFloat(n.style('padding')); // forces + + tempNode.nodeRepulsion = fn(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node + + layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map + + layoutInfo.idToIndex[tempNode.id] = i; + } // Inline implementation of a queue, used for traversing the graph in BFS order + + + var queue = []; + var start = 0; // Points to the start the queue + + var end = -1; // Points to the end of the queue + + var tempGraph = []; // Second pass to add child information and + // initialize queue for hierarchical traversal + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + var p_id = n.parentId; // Check if node n has a parent node + + if (null != p_id) { + // Add node Id to parent's list of children + layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id); + } else { + // If a node doesn't have a parent, then it's in the root graph + queue[++end] = n.id; + tempGraph.push(n.id); + } + } // Add root graph to graphSet + + + layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level, + + while (start <= end) { + // Get the node to visit and remove it from queue + var node_id = queue[start++]; + var node_ix = layoutInfo.idToIndex[node_id]; + var node = layoutInfo.layoutNodes[node_ix]; + var children = node.children; + + if (children.length > 0) { + // Add children nodes as a new graph to graph set + layoutInfo.graphSet.push(children); // Add children to que queue to be visited + + for (var i = 0; i < children.length; i++) { + queue[++end] = children[i]; + } + } + } // Create indexToGraph map + + + for (var i = 0; i < layoutInfo.graphSet.length; i++) { + var graph = layoutInfo.graphSet[i]; + + for (var j = 0; j < graph.length; j++) { + var index = layoutInfo.idToIndex[graph[j]]; + layoutInfo.indexToGraph[index] = i; + } + } // Iterate over all edges, creating Layout Edges + + + for (var i = 0; i < layoutInfo.edgeSize; i++) { + var e = edges[i]; + var tempEdge = {}; + tempEdge.id = e.data('id'); + tempEdge.sourceId = e.data('source'); + tempEdge.targetId = e.data('target'); // Compute ideal length + + var idealLength = fn(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength; + var elasticity = fn(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge + + var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId]; + var targetIx = layoutInfo.idToIndex[tempEdge.targetId]; + var sourceGraph = layoutInfo.indexToGraph[sourceIx]; + var targetGraph = layoutInfo.indexToGraph[targetIx]; + + if (sourceGraph != targetGraph) { + // Find lowest common graph ancestor + var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph + + var lcaGraph = layoutInfo.graphSet[lca]; + var depth = 0; // Source depth + + var tempNode = layoutInfo.layoutNodes[sourceIx]; + + while (-1 === lcaGraph.indexOf(tempNode.id)) { + tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; + depth++; + } // Target depth + + + tempNode = layoutInfo.layoutNodes[targetIx]; + + while (-1 === lcaGraph.indexOf(tempNode.id)) { + tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; + depth++; + } // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId + + // ". Index: " + lca + " Contents: " + lcaGraph.toString() + + // ". Depth: " + depth); + // Update idealLength + + + idealLength *= depth * options.nestingFactor; + } + + tempEdge.idealLength = idealLength; + tempEdge.elasticity = elasticity; + layoutInfo.layoutEdges.push(tempEdge); + } // Finally, return layoutInfo object + + + return layoutInfo; +}; +/** + * @brief : This function finds the index of the lowest common + * graph ancestor between 2 nodes in the subtree + * (from the graph hierarchy induced tree) whose + * root is graphIx + * + * @arg node1: node1's ID + * @arg node2: node2's ID + * @arg layoutInfo: layoutInfo object + * + */ + + +var findLCA = function findLCA(node1, node2, layoutInfo) { + // Find their common ancester, starting from the root graph + var res = findLCA_aux(node1, node2, 0, layoutInfo); + + if (2 > res.count) { + // If aux function couldn't find the common ancester, + // then it is the root graph + return 0; + } else { + return res.graph; + } +}; +/** + * @brief : Auxiliary function used for LCA computation + * + * @arg node1 : node1's ID + * @arg node2 : node2's ID + * @arg graphIx : subgraph index + * @arg layoutInfo : layoutInfo object + * + * @return : object of the form {count: X, graph: Y}, where: + * X is the number of ancesters (max: 2) found in + * graphIx (and it's subgraphs), + * Y is the graph index of the lowest graph containing + * all X nodes + */ + + +var findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) { + var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx + + if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) { + return { + count: 2, + graph: graphIx + }; + } // Make recursive calls for all subgraphs + + + var c = 0; + + for (var i = 0; i < graph.length; i++) { + var nodeId = graph[i]; + var nodeIx = layoutInfo.idToIndex[nodeId]; + var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it + + if (0 === children.length) { + continue; + } + + var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]]; + var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo); + + if (0 === result.count) { + // Neither node1 nor node2 are present in this subgraph + continue; + } else if (1 === result.count) { + // One of (node1, node2) is present in this subgraph + c++; + + if (2 === c) { + // We've already found both nodes, no need to keep searching + break; + } + } else { + // Both nodes are present in this subgraph + return result; + } + } + + return { + count: c, + graph: graphIx + }; +}; +/** + * @brief: printsLayoutInfo into js console + * Only used for debbuging + */ + + +var printLayoutInfo; +/** + * @brief : Randomizes the position of all nodes + */ + + +var randomizePositions = function randomizePositions(layoutInfo, cy) { + var width = layoutInfo.clientWidth; + var height = layoutInfo.clientHeight; + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes + + if (0 === n.children.length && !n.isLocked) { + n.positionX = Math.random() * width; + n.positionY = Math.random() * height; + } + } +}; + +var getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) { + var bb = layoutInfo.boundingBox; + var coseBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + + if (options.boundingBox) { + nodes.forEach(function (node) { + var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]]; + coseBB.x1 = Math.min(coseBB.x1, lnode.positionX); + coseBB.x2 = Math.max(coseBB.x2, lnode.positionX); + coseBB.y1 = Math.min(coseBB.y1, lnode.positionY); + coseBB.y2 = Math.max(coseBB.y2, lnode.positionY); + }); + coseBB.w = coseBB.x2 - coseBB.x1; + coseBB.h = coseBB.y2 - coseBB.y1; + } + + return function (ele, i) { + var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]]; + + if (options.boundingBox) { + // then add extra bounding box constraint + var pctX = (lnode.positionX - coseBB.x1) / coseBB.w; + var pctY = (lnode.positionY - coseBB.y1) / coseBB.h; + return { + x: bb.x1 + pctX * bb.w, + y: bb.y1 + pctY * bb.h + }; + } else { + return { + x: lnode.positionX, + y: lnode.positionY + }; + } + }; +}; +/** + * @brief : Updates the positions of nodes in the network + * @arg layoutInfo : LayoutInfo object + * @arg cy : Cytoscape object + * @arg options : Layout options + */ + + +var refreshPositions = function refreshPositions(layoutInfo, cy, options) { + // var s = 'Refreshing positions'; + // logDebug(s); + var layout = options.layout; + var nodes = options.eles.nodes(); + var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); + nodes.positions(getScaledPos); // Trigger layoutReady only on first call + + if (true !== layoutInfo.ready) { + // s = 'Triggering layoutready'; + // logDebug(s); + layoutInfo.ready = true; + layout.one('layoutready', options.ready); + layout.emit({ + type: 'layoutready', + layout: this + }); + } +}; +/** + * @brief : Logs a debug message in JS console, if DEBUG is ON + */ +// var logDebug = function(text) { +// if (DEBUG) { +// console.debug(text); +// } +// }; + +/** + * @brief : Performs one iteration of the physical simulation + * @arg layoutInfo : LayoutInfo object already initialized + * @arg cy : Cytoscape object + * @arg options : Layout options + */ + + +var step$1 = function step(layoutInfo, options, _step) { + // var s = "\n\n###############################"; + // s += "\nSTEP: " + step; + // s += "\n###############################\n"; + // logDebug(s); + // Calculate node repulsions + calculateNodeForces(layoutInfo, options); // Calculate edge forces + + calculateEdgeForces(layoutInfo); // Calculate gravity forces + + calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child + + propagateForces(layoutInfo); // Update positions based on calculated forces + + updatePositions(layoutInfo); +}; +/** + * @brief : Computes the node repulsion forces + */ + + +var calculateNodeForces = function calculateNodeForces(layoutInfo, options) { + // Go through each of the graphs in graphSet + // Nodes only repel each other if they belong to the same graph + // var s = 'calculateNodeForces'; + // logDebug(s); + for (var i = 0; i < layoutInfo.graphSet.length; i++) { + var graph = layoutInfo.graphSet[i]; + var numNodes = graph.length; // s = "Set: " + graph.toString(); + // logDebug(s); + // Now get all the pairs of nodes + // Only get each pair once, (A, B) = (B, A) + + for (var j = 0; j < numNodes; j++) { + var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; + + for (var k = j + 1; k < numNodes; k++) { + var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]]; + nodeRepulsion(node1, node2, layoutInfo, options); + } + } + } +}; + +var randomDistance = function randomDistance(max) { + return -max + 2 * max * Math.random(); +}; +/** + * @brief : Compute the node repulsion forces between a pair of nodes + */ + + +var nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) { + // var s = "Node repulsion. Node1: " + node1.id + " Node2: " + node2.id; + var cmptId1 = node1.cmptId; + var cmptId2 = node2.cmptId; + + if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) { + return; + } // Get direction of line connecting both node centers + + + var directionX = node2.positionX - node1.positionX; + var directionY = node2.positionY - node1.positionY; + var maxRandDist = 1; // s += "\ndirectionX: " + directionX + ", directionY: " + directionY; + // If both centers are the same, apply a random force + + if (0 === directionX && 0 === directionY) { + directionX = randomDistance(maxRandDist); + directionY = randomDistance(maxRandDist); + } + + var overlap = nodesOverlap(node1, node2, directionX, directionY); + + if (overlap > 0) { + // s += "\nNodes DO overlap."; + // s += "\nOverlap: " + overlap; + // If nodes overlap, repulsion force is proportional + // to the overlap + var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector + + var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += "\nDistance: " + distance; + + var forceX = force * directionX / distance; + var forceY = force * directionY / distance; + } else { + // s += "\nNodes do NOT overlap."; + // If there's no overlap, force is inversely proportional + // to squared distance + // Get clipping points for both nodes + var point1 = findClippingPoint(node1, directionX, directionY); + var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance + + var distanceX = point2.x - point1.x; + var distanceY = point2.y - point1.y; + var distanceSqr = distanceX * distanceX + distanceY * distanceY; + var distance = Math.sqrt(distanceSqr); // s += "\nDistance: " + distance; + // Compute the module and components of the force vector + + var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr; + var forceX = force * distanceX / distance; + var forceY = force * distanceY / distance; + } // Apply force + + + if (!node1.isLocked) { + node1.offsetX -= forceX; + node1.offsetY -= forceY; + } + + if (!node2.isLocked) { + node2.offsetX += forceX; + node2.offsetY += forceY; + } // s += "\nForceX: " + forceX + " ForceY: " + forceY; + // logDebug(s); + + + return; +}; +/** + * @brief : Determines whether two nodes overlap or not + * @return : Amount of overlapping (0 => no overlap) + */ + + +var nodesOverlap = function nodesOverlap(node1, node2, dX, dY) { + if (dX > 0) { + var overlapX = node1.maxX - node2.minX; + } else { + var overlapX = node2.maxX - node1.minX; + } + + if (dY > 0) { + var overlapY = node1.maxY - node2.minY; + } else { + var overlapY = node2.maxY - node1.minY; + } + + if (overlapX >= 0 && overlapY >= 0) { + return Math.sqrt(overlapX * overlapX + overlapY * overlapY); + } else { + return 0; + } +}; +/** + * @brief : Finds the point in which an edge (direction dX, dY) intersects + * the rectangular bounding box of it's source/target node + */ + + +var findClippingPoint = function findClippingPoint(node, dX, dY) { + // Shorcuts + var X = node.positionX; + var Y = node.positionY; + var H = node.height || 1; + var W = node.width || 1; + var dirSlope = dY / dX; + var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id + + // " . Height: " + H + ", Width: " + W + + // "\nDirection " + dX + ", " + dY; + // + // Compute intersection + + var res = {}; // Case: Vertical direction (up) + + if (0 === dX && 0 < dY) { + res.x = X; // s += "\nUp direction"; + + res.y = Y + H / 2; + return res; + } // Case: Vertical direction (down) + + + if (0 === dX && 0 > dY) { + res.x = X; + res.y = Y + H / 2; // s += "\nDown direction"; + + return res; + } // Case: Intersects the right border + + + if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { + res.x = X + W / 2; + res.y = Y + W * dY / 2 / dX; // s += "\nRightborder"; + + return res; + } // Case: Intersects the left border + + + if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { + res.x = X - W / 2; + res.y = Y - W * dY / 2 / dX; // s += "\nLeftborder"; + + return res; + } // Case: Intersects the top border + + + if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { + res.x = X + H * dX / 2 / dY; + res.y = Y + H / 2; // s += "\nTop border"; + + return res; + } // Case: Intersects the bottom border + + + if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { + res.x = X - H * dX / 2 / dY; + res.y = Y - H / 2; // s += "\nBottom border"; + + return res; + } // s += "\nClipping point found at " + res.x + ", " + res.y; + // logDebug(s); + + + return res; +}; +/** + * @brief : Calculates all edge forces + */ + + +var calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) { + // Iterate over all edges + for (var i = 0; i < layoutInfo.edgeSize; i++) { + // Get edge, source & target nodes + var edge = layoutInfo.layoutEdges[i]; + var sourceIx = layoutInfo.idToIndex[edge.sourceId]; + var source = layoutInfo.layoutNodes[sourceIx]; + var targetIx = layoutInfo.idToIndex[edge.targetId]; + var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers + + var directionX = target.positionX - source.positionX; + var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing. + // A random force has already been applied as node repulsion + + if (0 === directionX && 0 === directionY) { + continue; + } // Get clipping points for both nodes + + + var point1 = findClippingPoint(source, directionX, directionY); + var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY); + var lx = point2.x - point1.x; + var ly = point2.y - point1.y; + var l = Math.sqrt(lx * lx + ly * ly); + var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity; + + if (0 !== l) { + var forceX = force * lx / l; + var forceY = force * ly / l; + } else { + var forceX = 0; + var forceY = 0; + } // Add this force to target and source nodes + + + if (!source.isLocked) { + source.offsetX += forceX; + source.offsetY += forceY; + } + + if (!target.isLocked) { + target.offsetX -= forceX; + target.offsetY -= forceY; + } // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id; + // s += "\nDistance: " + l + " Force: (" + forceX + ", " + forceY + ")"; + // logDebug(s); + + } +}; +/** + * @brief : Computes gravity forces for all nodes + */ + + +var calculateGravityForces = function calculateGravityForces(layoutInfo, options) { + if (options.gravity === 0) { + return; + } + + var distThreshold = 1; // var s = 'calculateGravityForces'; + // logDebug(s); + + for (var i = 0; i < layoutInfo.graphSet.length; i++) { + var graph = layoutInfo.graphSet[i]; + var numNodes = graph.length; // s = "Set: " + graph.toString(); + // logDebug(s); + // Compute graph center + + if (0 === i) { + var centerX = layoutInfo.clientHeight / 2; + var centerY = layoutInfo.clientWidth / 2; + } else { + // Get Parent node for this graph, and use its position as center + var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]]; + var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]]; + var centerX = parent.positionX; + var centerY = parent.positionY; + } // s = "Center found at: " + centerX + ", " + centerY; + // logDebug(s); + // Apply force to all nodes in graph + + + for (var j = 0; j < numNodes; j++) { + var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = "Node: " + node.id; + + if (node.isLocked) { + continue; + } + + var dx = centerX - node.positionX; + var dy = centerY - node.positionY; + var d = Math.sqrt(dx * dx + dy * dy); + + if (d > distThreshold) { + var fx = options.gravity * dx / d; + var fy = options.gravity * dy / d; + node.offsetX += fx; + node.offsetY += fy; // s += ": Applied force: " + fx + ", " + fy; + } // s += ": skypped since it's too close to center"; + // logDebug(s); + + } + } +}; +/** + * @brief : This function propagates the existing offsets from + * parent nodes to its descendents. + * @arg layoutInfo : layoutInfo Object + * @arg cy : cytoscape Object + * @arg options : Layout options + */ + + +var propagateForces = function propagateForces(layoutInfo, options) { + // Inline implementation of a queue, used for traversing the graph in BFS order + var queue = []; + var start = 0; // Points to the start the queue + + var end = -1; // Points to the end of the queue + // logDebug('propagateForces'); + // Start by visiting the nodes in the root graph + + queue.push.apply(queue, layoutInfo.graphSet[0]); + end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level, + + while (start <= end) { + // Get the node to visit and remove it from queue + var nodeId = queue[start++]; + var nodeIndex = layoutInfo.idToIndex[nodeId]; + var node = layoutInfo.layoutNodes[nodeIndex]; + var children = node.children; // We only need to process the node if it's compound + + if (0 < children.length && !node.isLocked) { + var offX = node.offsetX; + var offY = node.offsetY; // var s = "Propagating offset from parent node : " + node.id + + // ". OffsetX: " + offX + ". OffsetY: " + offY; + // s += "\n Children: " + children.toString(); + // logDebug(s); + + for (var i = 0; i < children.length; i++) { + var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset + + childNode.offsetX += offX; + childNode.offsetY += offY; // Add children to queue to be visited + + queue[++end] = children[i]; + } // Reset parent offsets + + + node.offsetX = 0; + node.offsetY = 0; + } + } +}; +/** + * @brief : Updates the layout model positions, based on + * the accumulated forces + */ + + +var updatePositions = function updatePositions(layoutInfo, options) { + // var s = 'Updating positions'; + // logDebug(s); + // Reset boundaries for compound nodes + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + + if (0 < n.children.length) { + // logDebug("Resetting boundaries of compound node: " + n.id); + n.maxX = undefined; + n.minX = undefined; + n.maxY = undefined; + n.minY = undefined; + } + } + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + + if (0 < n.children.length || n.isLocked) { + // No need to set compound or locked node position + // logDebug("Skipping position update of node: " + n.id); + continue; + } // s = "Node: " + n.id + " Previous position: (" + + // n.positionX + ", " + n.positionY + ")."; + // Limit displacement in order to improve stability + + + var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature); + n.positionX += tempForce.x; + n.positionY += tempForce.y; + n.offsetX = 0; + n.offsetY = 0; + n.minX = n.positionX - n.width; + n.maxX = n.positionX + n.width; + n.minY = n.positionY - n.height; + n.maxY = n.positionY + n.height; // s += " New Position: (" + n.positionX + ", " + n.positionY + ")."; + // logDebug(s); + // Update ancestry boudaries + + updateAncestryBoundaries(n, layoutInfo); + } // Update size, position of compund nodes + + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + + if (0 < n.children.length && !n.isLocked) { + n.positionX = (n.maxX + n.minX) / 2; + n.positionY = (n.maxY + n.minY) / 2; + n.width = n.maxX - n.minX; + n.height = n.maxY - n.minY; // s = "Updating position, size of compound node " + n.id; + // s += "\nPositionX: " + n.positionX + ", PositionY: " + n.positionY; + // s += "\nWidth: " + n.width + ", Height: " + n.height; + // logDebug(s); + } + } +}; +/** + * @brief : Limits a force (forceX, forceY) to be not + * greater (in modulo) than max. + 8 Preserves force direction. + */ + + +var limitForce = function limitForce(forceX, forceY, max) { + // var s = "Limiting force: (" + forceX + ", " + forceY + "). Max: " + max; + var force = Math.sqrt(forceX * forceX + forceY * forceY); + + if (force > max) { + var res = { + x: max * forceX / force, + y: max * forceY / force + }; + } else { + var res = { + x: forceX, + y: forceY + }; + } // s += ".\nResult: (" + res.x + ", " + res.y + ")"; + // logDebug(s); + + + return res; +}; +/** + * @brief : Function used for keeping track of compound node + * sizes, since they should bound all their subnodes. + */ + + +var updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) { + // var s = "Propagating new position/size of node " + node.id; + var parentId = node.parentId; + + if (null == parentId) { + // If there's no parent, we are done + // s += ". No parent node."; + // logDebug(s); + return; + } // Get Parent Node + + + var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]]; + var flag = false; // MaxX + + if (null == p.maxX || node.maxX + p.padRight > p.maxX) { + p.maxX = node.maxX + p.padRight; + flag = true; // s += "\nNew maxX for parent node " + p.id + ": " + p.maxX; + } // MinX + + + if (null == p.minX || node.minX - p.padLeft < p.minX) { + p.minX = node.minX - p.padLeft; + flag = true; // s += "\nNew minX for parent node " + p.id + ": " + p.minX; + } // MaxY + + + if (null == p.maxY || node.maxY + p.padBottom > p.maxY) { + p.maxY = node.maxY + p.padBottom; + flag = true; // s += "\nNew maxY for parent node " + p.id + ": " + p.maxY; + } // MinY + + + if (null == p.minY || node.minY - p.padTop < p.minY) { + p.minY = node.minY - p.padTop; + flag = true; // s += "\nNew minY for parent node " + p.id + ": " + p.minY; + } // If updated boundaries, propagate changes upward + + + if (flag) { + // logDebug(s); + return updateAncestryBoundaries(p, layoutInfo); + } // s += ". No changes in boundaries/position of parent node " + p.id; + // logDebug(s); + + + return; +}; + +var separateComponents = function separateComponents(layoutInfo, options) { + var nodes = layoutInfo.layoutNodes; + var components = []; + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var cid = node.cmptId; + var component = components[cid] = components[cid] || []; + component.push(node); + } + + var totalA = 0; + + for (var i = 0; i < components.length; i++) { + var c = components[i]; + + if (!c) { + continue; + } + + c.x1 = Infinity; + c.x2 = -Infinity; + c.y1 = Infinity; + c.y2 = -Infinity; + + for (var j = 0; j < c.length; j++) { + var n = c[j]; + c.x1 = Math.min(c.x1, n.positionX - n.width / 2); + c.x2 = Math.max(c.x2, n.positionX + n.width / 2); + c.y1 = Math.min(c.y1, n.positionY - n.height / 2); + c.y2 = Math.max(c.y2, n.positionY + n.height / 2); + } + + c.w = c.x2 - c.x1; + c.h = c.y2 - c.y1; + totalA += c.w * c.h; + } + + components.sort(function (c1, c2) { + return c2.w * c2.h - c1.w * c1.h; + }); + var x = 0; + var y = 0; + var usedW = 0; + var rowH = 0; + var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight; + + for (var i = 0; i < components.length; i++) { + var c = components[i]; + + if (!c) { + continue; + } + + for (var j = 0; j < c.length; j++) { + var n = c[j]; + + if (!n.isLocked) { + n.positionX += x - c.x1; + n.positionY += y - c.y1; + } + } + + x += c.w + options.componentSpacing; + usedW += c.w + options.componentSpacing; + rowH = Math.max(rowH, c.h); + + if (usedW > maxRowW) { + y += rowH + options.componentSpacing; + x = 0; + usedW = 0; + rowH = 0; + } + } +}; + +var defaults$d = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // padding used on fit + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + avoidOverlapPadding: 10, + // extra spacing around nodes when avoidOverlap: true + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + condense: false, + // uses all available space on false, uses minimal space on true + rows: undefined, + // force num of rows in the grid + cols: undefined, + // force num of columns in the grid + position: function position(node) {}, + // returns { row, col } for element + sort: undefined, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function GridLayout(options) { + this.options = extend({}, defaults$d, options); +} + +GridLayout.prototype.run = function () { + var params = this.options; + var options = params; + var cy = params.cy; + var eles = options.eles; + var nodes = eles.nodes().not(':parent'); + + if (options.sort) { + nodes = nodes.sort(options.sort); + } + + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + + if (bb.h === 0 || bb.w === 0) { + eles.nodes().layoutPositions(this, options, function (ele) { + return { + x: bb.x1, + y: bb.y1 + }; + }); + } else { + // width/height * splits^2 = cells where splits is number of times to split width + var cells = nodes.size(); + var splits = Math.sqrt(cells * bb.h / bb.w); + var rows = Math.round(splits); + var cols = Math.round(bb.w / bb.h * splits); + + var small = function small(val) { + if (val == null) { + return Math.min(rows, cols); + } else { + var min = Math.min(rows, cols); + + if (min == rows) { + rows = val; + } else { + cols = val; + } + } + }; + + var large = function large(val) { + if (val == null) { + return Math.max(rows, cols); + } else { + var max = Math.max(rows, cols); + + if (max == rows) { + rows = val; + } else { + cols = val; + } + } + }; + + var oRows = options.rows; + var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values + + if (oRows != null && oCols != null) { + rows = oRows; + cols = oCols; + } else if (oRows != null && oCols == null) { + rows = oRows; + cols = Math.ceil(cells / rows); + } else if (oRows == null && oCols != null) { + cols = oCols; + rows = Math.ceil(cells / cols); + } // otherwise use the automatic values and adjust accordingly + // if rounding was up, see if we can reduce rows or columns + else if (cols * rows > cells) { + var sm = small(); + var lg = large(); // reducing the small side takes away the most cells, so try it first + + if ((sm - 1) * lg >= cells) { + small(sm - 1); + } else if ((lg - 1) * sm >= cells) { + large(lg - 1); + } + } else { + // if rounding was too low, add rows or columns + while (cols * rows < cells) { + var _sm = small(); + + var _lg = large(); // try to add to larger side first (adds less in multiplication) + + + if ((_lg + 1) * _sm >= cells) { + large(_lg + 1); + } else { + small(_sm + 1); + } + } + } + + var cellWidth = bb.w / cols; + var cellHeight = bb.h / rows; + + if (options.condense) { + cellWidth = 0; + cellHeight = 0; + } + + if (options.avoidOverlap) { + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var pos = node._private.position; + + if (pos.x == null || pos.y == null) { + // for bb + pos.x = 0; + pos.y = 0; + } + + var nbb = node.layoutDimensions(options); + var p = options.avoidOverlapPadding; + var w = nbb.w + p; + var h = nbb.h + p; + cellWidth = Math.max(cellWidth, w); + cellHeight = Math.max(cellHeight, h); + } + } + + var cellUsed = {}; // e.g. 'c-0-2' => true + + var used = function used(row, col) { + return cellUsed['c-' + row + '-' + col] ? true : false; + }; + + var use = function use(row, col) { + cellUsed['c-' + row + '-' + col] = true; + }; // to keep track of current cell position + + + var row = 0; + var col = 0; + + var moveToNextCell = function moveToNextCell() { + col++; + + if (col >= cols) { + col = 0; + row++; + } + }; // get a cache of all the manual positions + + + var id2manPos = {}; + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + var rcPos = options.position(_node); + + if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) { + // must have at least row or col def'd + var _pos = { + row: rcPos.row, + col: rcPos.col + }; + + if (_pos.col === undefined) { + // find unused col + _pos.col = 0; + + while (used(_pos.row, _pos.col)) { + _pos.col++; + } + } else if (_pos.row === undefined) { + // find unused row + _pos.row = 0; + + while (used(_pos.row, _pos.col)) { + _pos.row++; + } + } + + id2manPos[_node.id()] = _pos; + use(_pos.row, _pos.col); + } + } + + var getPos = function getPos(element, i) { + var x, y; + + if (element.locked() || element.isParent()) { + return false; + } // see if we have a manual position set + + + var rcPos = id2manPos[element.id()]; + + if (rcPos) { + x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1; + y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1; + } else { + // otherwise set automatically + while (used(row, col)) { + moveToNextCell(); + } + + x = col * cellWidth + cellWidth / 2 + bb.x1; + y = row * cellHeight + cellHeight / 2 + bb.y1; + use(row, col); + moveToNextCell(); + } + + return { + x: x, + y: y + }; + }; + + nodes.layoutPositions(this, options, getPos); + } + + return this; // chaining +}; + +var defaults$e = { + ready: function ready() {}, + // on layoutready + stop: function stop() {} // on layoutstop + +}; // constructor +// options : object containing layout options + +function NullLayout(options) { + this.options = extend({}, defaults$e, options); +} // runs the layout + + +NullLayout.prototype.run = function () { + var options = this.options; + var eles = options.eles; // elements to consider in the layout + + var layout = this; // cy is automatically populated for us in the constructor + // (disable eslint for next line as this serves as example layout code to external developers) + // eslint-disable-next-line no-unused-vars + + options.cy; + layout.emit('layoutstart'); // puts all nodes at (0, 0) + // n.b. most layouts would use layoutPositions(), instead of positions() and manual events + + eles.nodes().positions(function () { + return { + x: 0, + y: 0 + }; + }); // trigger layoutready when each node has had its position set at least once + + layout.one('layoutready', options.ready); + layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes) + + layout.one('layoutstop', options.stop); + layout.emit('layoutstop'); + return this; // chaining +}; // called on continuous layouts to stop them before they finish + + +NullLayout.prototype.stop = function () { + return this; // chaining +}; + +var defaults$f = { + positions: undefined, + // map of (node id) => (position obj); or function(node){ return somPos; } + zoom: undefined, + // the zoom level to set (prob want fit = false if set) + pan: undefined, + // the pan level to set (prob want fit = false if set) + fit: true, + // whether to fit to viewport + padding: 30, + // padding on fit + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function PresetLayout(options) { + this.options = extend({}, defaults$f, options); +} + +PresetLayout.prototype.run = function () { + var options = this.options; + var eles = options.eles; + var nodes = eles.nodes(); + var posIsFn = fn(options.positions); + + function getPosition(node) { + if (options.positions == null) { + return copyPosition(node.position()); + } + + if (posIsFn) { + return options.positions(node); + } + + var pos = options.positions[node._private.data.id]; + + if (pos == null) { + return null; + } + + return pos; + } + + nodes.layoutPositions(this, options, function (node, i) { + var position = getPosition(node); + + if (node.locked() || position == null) { + return false; + } + + return position; + }); + return this; // chaining +}; + +var defaults$g = { + fit: true, + // whether to fit to viewport + padding: 30, + // fit padding + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function RandomLayout(options) { + this.options = extend({}, defaults$g, options); +} + +RandomLayout.prototype.run = function () { + var options = this.options; + var cy = options.cy; + var eles = options.eles; + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + + var getPos = function getPos(node, i) { + return { + x: bb.x1 + Math.round(Math.random() * bb.w), + y: bb.y1 + Math.round(Math.random() * bb.h) + }; + }; + + eles.nodes().layoutPositions(this, options, getPos); + return this; // chaining +}; + +var layout$2 = [{ + name: 'breadthfirst', + impl: BreadthFirstLayout +}, { + name: 'circle', + impl: CircleLayout +}, { + name: 'concentric', + impl: ConcentricLayout$1 +}, { + name: 'cose', + impl: CoseLayout +}, { + name: 'grid', + impl: GridLayout +}, { + name: 'null', + impl: NullLayout +}, { + name: 'preset', + impl: PresetLayout +}, { + name: 'random', + impl: RandomLayout +}]; + +function NullRenderer(options) { + this.options = options; + this.notifications = 0; // for testing +} + +var noop$1$1 = function noop() {}; + +var throwImgErr = function throwImgErr() { + throw new Error('A headless instance can not render images'); +}; + +NullRenderer.prototype = { + recalculateRenderedStyle: noop$1$1, + notify: function notify() { + this.notifications++; + }, + init: noop$1$1, + isHeadless: function isHeadless() { + return true; + }, + png: throwImgErr, + jpg: throwImgErr +}; + +var BRp = {}; +BRp.arrowShapeWidth = 0.3; + +BRp.registerArrowShapes = function () { + var arrowShapes = this.arrowShapes = {}; + var renderer = this; // Contract for arrow shapes: + // 0, 0 is arrow tip + // (0, 1) is direction towards node + // (1, 0) is right + // + // functional api: + // collide: check x, y in shape + // roughCollide: called before collide, no false negatives + // draw: draw + // spacing: dist(arrowTip, nodeBoundary) + // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip + + var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) { + var x1 = translation.x - size / 2 - padding; + var x2 = translation.x + size / 2 + padding; + var y1 = translation.y - size / 2 - padding; + var y2 = translation.y + size / 2 + padding; + var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2; + return inside; + }; + + var transform = function transform(x, y, size, angle, translation) { + var xRotated = x * Math.cos(angle) - y * Math.sin(angle); + var yRotated = x * Math.sin(angle) + y * Math.cos(angle); + var xScaled = xRotated * size; + var yScaled = yRotated * size; + var xTranslated = xScaled + translation.x; + var yTranslated = yScaled + translation.y; + return { + x: xTranslated, + y: yTranslated + }; + }; + + var transformPoints = function transformPoints(pts, size, angle, translation) { + var retPts = []; + + for (var i = 0; i < pts.length; i += 2) { + var x = pts[i]; + var y = pts[i + 1]; + retPts.push(transform(x, y, size, angle, translation)); + } + + return retPts; + }; + + var pointsToArr = function pointsToArr(pts) { + var ret = []; + + for (var i = 0; i < pts.length; i++) { + var p = pts[i]; + ret.push(p.x, p.y); + } + + return ret; + }; + + var standardGap = function standardGap(edge) { + return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2; + }; + + var defineArrowShape = function defineArrowShape(name, defn) { + if (string(defn)) { + defn = arrowShapes[defn]; + } + + arrowShapes[name] = extend({ + name: name, + points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], + collide: function collide(x, y, size, angle, translation, padding) { + var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + var inside = pointInsidePolygonPoints(x, y, points); + return inside; + }, + roughCollide: bbCollide, + draw: function draw(context, size, angle, translation) { + var points = transformPoints(this.points, size, angle, translation); + renderer.arrowShapeImpl('polygon')(context, points); + }, + spacing: function spacing(edge) { + return 0; + }, + gap: standardGap + }, defn); + }; + + defineArrowShape('none', { + collide: falsify, + roughCollide: falsify, + draw: noop$1, + spacing: zeroify, + gap: zeroify + }); + defineArrowShape('triangle', { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3] + }); + defineArrowShape('arrow', 'triangle'); + defineArrowShape('triangle-backcurve', { + points: arrowShapes['triangle'].points, + controlPoint: [0, -0.15], + roughCollide: bbCollide, + draw: function draw(context, size, angle, translation, edgeWidth) { + var ptsTrans = transformPoints(this.points, size, angle, translation); + var ctrlPt = this.controlPoint; + var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans); + }, + gap: function gap(edge) { + return standardGap(edge) * 0.8; + } + }); + defineArrowShape('triangle-tee', { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation)); + var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); + return inside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + var triPts = transformPoints(this.points, size, angle, translation); + var teePts = transformPoints(this.pointsTee, size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, triPts, teePts); + } + }); + defineArrowShape('circle-triangle', { + radius: 0.15, + pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var t = translation; + var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); + var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + return pointInsidePolygonPoints(x, y, triPts) || circleInside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + var triPts = transformPoints(this.pointsTr, size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size); + }, + spacing: function spacing(edge) { + return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; + } + }); + defineArrowShape('triangle-cross', { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle + -0.15, -0.4, 0.15, -0.4, // second half of the rectangle + 0.15, -0.4], + crossLinePts: function crossLinePts(size, edgeWidth) { + // shift points so that the distance between the cross points matches edge width + var p = this.baseCrossLinePts.slice(); + var shiftFactor = edgeWidth / size; + var y0 = 3; + var y1 = 5; + p[y0] = p[y0] - shiftFactor; + p[y1] = p[y1] - shiftFactor; + return p; + }, + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation)); + var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); + return inside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + var triPts = transformPoints(this.points, size, angle, translation); + var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts); + } + }); + defineArrowShape('vee', { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], + gap: function gap(edge) { + return standardGap(edge) * 0.525; + } + }); + defineArrowShape('circle', { + radius: 0.15, + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var t = translation; + var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); + return inside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size); + }, + spacing: function spacing(edge) { + return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; + } + }); + defineArrowShape('tee', { + points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], + spacing: function spacing(edge) { + return 1; + }, + gap: function gap(edge) { + return 1; + } + }); + defineArrowShape('square', { + points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3] + }); + defineArrowShape('diamond', { + points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], + gap: function gap(edge) { + return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; + } + }); + defineArrowShape('chevron', { + points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], + gap: function gap(edge) { + return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; + } + }); +}; + +var BRp$1 = {}; // Project mouse + +BRp$1.projectIntoViewport = function (clientX, clientY) { + var cy = this.cy; + var offsets = this.findContainerClientCoords(); + var offsetLeft = offsets[0]; + var offsetTop = offsets[1]; + var scale = offsets[4]; + var pan = cy.pan(); + var zoom = cy.zoom(); + var x = ((clientX - offsetLeft) / scale - pan.x) / zoom; + var y = ((clientY - offsetTop) / scale - pan.y) / zoom; + return [x, y]; +}; + +BRp$1.findContainerClientCoords = function () { + if (this.containerBB) { + return this.containerBB; + } + + var container = this.container; + var rect = container.getBoundingClientRect(); + var style = window$1.getComputedStyle(container); + + var styleValue = function styleValue(name) { + return parseFloat(style.getPropertyValue(name)); + }; + + var padding = { + left: styleValue('padding-left'), + right: styleValue('padding-right'), + top: styleValue('padding-top'), + bottom: styleValue('padding-bottom') + }; + var border = { + left: styleValue('border-left-width'), + right: styleValue('border-right-width'), + top: styleValue('border-top-width'), + bottom: styleValue('border-bottom-width') + }; + var clientWidth = container.clientWidth; + var clientHeight = container.clientHeight; + var paddingHor = padding.left + padding.right; + var paddingVer = padding.top + padding.bottom; + var borderHor = border.left + border.right; + var scale = rect.width / (clientWidth + borderHor); + var unscaledW = clientWidth - paddingHor; + var unscaledH = clientHeight - paddingVer; + var left = rect.left + padding.left + border.left; + var top = rect.top + padding.top + border.top; + return this.containerBB = [left, top, unscaledW, unscaledH, scale]; +}; + +BRp$1.invalidateContainerClientCoordsCache = function () { + this.containerBB = null; +}; + +BRp$1.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) { + return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0]; +}; + +BRp$1.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) { + var self = this; + var r = this; + var eles = r.getCachedZSortedEles(); + var near = []; // 1 node max, 1 edge max + + var zoom = r.cy.zoom(); + var hasCompounds = r.cy.hasCompoundNodes(); + var edgeThreshold = (isTouch ? 24 : 8) / zoom; + var nodeThreshold = (isTouch ? 8 : 2) / zoom; + var labelThreshold = (isTouch ? 8 : 2) / zoom; + var minSqDist = Infinity; + var nearEdge; + var nearNode; + + if (interactiveElementsOnly) { + eles = eles.interactive; + } + + function addEle(ele, sqDist) { + if (ele.isNode()) { + if (nearNode) { + return; // can't replace node + } else { + nearNode = ele; + near.push(ele); + } + } + + if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) { + if (nearEdge) { + // then replace existing edge + // can replace only if same z-index + if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) { + for (var i = 0; i < near.length; i++) { + if (near[i].isEdge()) { + near[i] = ele; + nearEdge = ele; + minSqDist = sqDist != null ? sqDist : minSqDist; + break; + } + } + } + } else { + near.push(ele); + nearEdge = ele; + minSqDist = sqDist != null ? sqDist : minSqDist; + } + } + } + + function checkNode(node) { + var width = node.outerWidth() + 2 * nodeThreshold; + var height = node.outerHeight() + 2 * nodeThreshold; + var hw = width / 2; + var hh = height / 2; + var pos = node.position(); + + if (pos.x - hw <= x && x <= pos.x + hw // bb check x + && pos.y - hh <= y && y <= pos.y + hh // bb check y + ) { + var shape = r.nodeShapes[self.getNodeShape(node)]; + + if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) { + addEle(node, 0); + return true; + } + } + } + + function checkEdge(edge) { + var _p = edge._private; + var rs = _p.rscratch; + var styleWidth = edge.pstyle('width').pfValue; + var scale = edge.pstyle('arrow-scale').value; + var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre + + var widthSq = width * width; + var width2 = width * 2; + var src = _p.source; + var tgt = _p.target; + var sqDist; + + if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') { + var pts = rs.allpts; + + for (var i = 0; i + 3 < pts.length; i += 2) { + if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) { + addEle(edge, sqDist); + return true; + } + } + } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { + var pts = rs.allpts; + + for (var i = 0; i + 5 < rs.allpts.length; i += 4) { + if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) { + addEle(edge, sqDist); + return true; + } + } + } // if we're close to the edge but didn't hit it, maybe we hit its arrows + + + var src = src || _p.source; + var tgt = tgt || _p.target; + var arSize = self.getArrowWidth(styleWidth, scale); + var arrows = [{ + name: 'source', + x: rs.arrowStartX, + y: rs.arrowStartY, + angle: rs.srcArrowAngle + }, { + name: 'target', + x: rs.arrowEndX, + y: rs.arrowEndY, + angle: rs.tgtArrowAngle + }, { + name: 'mid-source', + x: rs.midX, + y: rs.midY, + angle: rs.midsrcArrowAngle + }, { + name: 'mid-target', + x: rs.midX, + y: rs.midY, + angle: rs.midtgtArrowAngle + }]; + + for (var i = 0; i < arrows.length; i++) { + var ar = arrows[i]; + var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value]; + var edgeWidth = edge.pstyle('width').pfValue; + + if (shape.roughCollide(x, y, arSize, ar.angle, { + x: ar.x, + y: ar.y + }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, { + x: ar.x, + y: ar.y + }, edgeWidth, edgeThreshold)) { + addEle(edge); + return true; + } + } // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence) + + + if (hasCompounds && near.length > 0) { + checkNode(src); + checkNode(tgt); + } + } + + function preprop(obj, name, pre) { + return getPrefixedProperty(obj, name, pre); + } + + function checkLabel(ele, prefix) { + var _p = ele._private; + var th = labelThreshold; + var prefixDash; + + if (prefix) { + prefixDash = prefix + '-'; + } else { + prefixDash = ''; + } + + ele.boundingBox(); + var bb = _p.labelBounds[prefix || 'main']; + var text = ele.pstyle(prefixDash + 'label').value; + var eventsEnabled = ele.pstyle('text-events').strValue === 'yes'; + + if (!eventsEnabled || !text) { + return; + } + + var lx = preprop(_p.rscratch, 'labelX', prefix); + var ly = preprop(_p.rscratch, 'labelY', prefix); + var theta = preprop(_p.rscratch, 'labelAngle', prefix); + var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue; + var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue; + var lx1 = bb.x1 - th - ox; // (-ox, -oy) as bb already includes margin + + var lx2 = bb.x2 + th - ox; // and rotation is about (lx, ly) + + var ly1 = bb.y1 - th - oy; + var ly2 = bb.y2 + th - oy; + + if (theta) { + var cos = Math.cos(theta); + var sin = Math.sin(theta); + + var rotate = function rotate(x, y) { + x = x - lx; + y = y - ly; + return { + x: x * cos - y * sin + lx, + y: x * sin + y * cos + ly + }; + }; + + var px1y1 = rotate(lx1, ly1); + var px1y2 = rotate(lx1, ly2); + var px2y1 = rotate(lx2, ly1); + var px2y2 = rotate(lx2, ly2); + var points = [// with the margin added after the rotation is applied + px1y1.x + ox, px1y1.y + oy, px2y1.x + ox, px2y1.y + oy, px2y2.x + ox, px2y2.y + oy, px1y2.x + ox, px1y2.y + oy]; + + if (pointInsidePolygonPoints(x, y, points)) { + addEle(ele); + return true; + } + } else { + // do a cheaper bb check + if (inBoundingBox(bb, x, y)) { + addEle(ele); + return true; + } + } + } + + for (var i = eles.length - 1; i >= 0; i--) { + // reverse order for precedence + var ele = eles[i]; + + if (ele.isNode()) { + checkNode(ele) || checkLabel(ele); + } else { + // then edge + checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target'); + } + } + + return near; +}; // 'Give me everything from this box' + + +BRp$1.getAllInBox = function (x1, y1, x2, y2) { + var eles = this.getCachedZSortedEles().interactive; + var box = []; + var x1c = Math.min(x1, x2); + var x2c = Math.max(x1, x2); + var y1c = Math.min(y1, y2); + var y2c = Math.max(y1, y2); + x1 = x1c; + x2 = x2c; + y1 = y1c; + y2 = y2c; + var boxBb = makeBoundingBox({ + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }); + + for (var e = 0; e < eles.length; e++) { + var ele = eles[e]; + + if (ele.isNode()) { + var node = ele; + var nodeBb = node.boundingBox({ + includeNodes: true, + includeEdges: false, + includeLabels: false + }); + + if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) { + box.push(node); + } + } else { + var edge = ele; + var _p = edge._private; + var rs = _p.rscratch; + + if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) { + continue; + } + + if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) { + continue; + } + + if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') { + var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; + var allInside = true; + + for (var i = 0; i < pts.length; i++) { + if (!pointInBoundingBox(boxBb, pts[i])) { + allInside = false; + break; + } + } + + if (allInside) { + box.push(edge); + } + } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') { + box.push(edge); + } + } + } + + return box; +}; + +var BRp$2 = {}; + +BRp$2.calculateArrowAngles = function (edge) { + var rs = edge._private.rscratch; + var isHaystack = rs.edgeType === 'haystack'; + var isBezier = rs.edgeType === 'bezier'; + var isMultibezier = rs.edgeType === 'multibezier'; + var isSegments = rs.edgeType === 'segments'; + var isCompound = rs.edgeType === 'compound'; + var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation + + var dispX, dispY; + var startX, startY, endX, endY, midX, midY; + + if (isHaystack) { + startX = rs.haystackPts[0]; + startY = rs.haystackPts[1]; + endX = rs.haystackPts[2]; + endY = rs.haystackPts[3]; + } else { + startX = rs.arrowStartX; + startY = rs.arrowStartY; + endX = rs.arrowEndX; + endY = rs.arrowEndY; + } + + midX = rs.midX; + midY = rs.midY; // source + // + + if (isSegments) { + dispX = startX - rs.segpts[0]; + dispY = startY - rs.segpts[1]; + } else if (isMultibezier || isCompound || isSelf || isBezier) { + var pts = rs.allpts; + var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1); + var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1); + dispX = startX - bX; + dispY = startY - bY; + } else { + dispX = startX - midX; + dispY = startY - midY; + } + + rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target + // + + var midX = rs.midX; + var midY = rs.midY; + + if (isHaystack) { + midX = (startX + endX) / 2; + midY = (startY + endY) / 2; + } + + dispX = endX - startX; + dispY = endY - startY; + + if (isSegments) { + var pts = rs.allpts; + + if (pts.length / 2 % 2 === 0) { + var i2 = pts.length / 2; + var i1 = i2 - 2; + dispX = pts[i2] - pts[i1]; + dispY = pts[i2 + 1] - pts[i1 + 1]; + } else { + var i2 = pts.length / 2 - 1; + var i1 = i2 - 2; + var i3 = i2 + 2; + dispX = pts[i2] - pts[i1]; + dispY = pts[i2 + 1] - pts[i1 + 1]; + } + } else if (isMultibezier || isCompound || isSelf) { + var pts = rs.allpts; + var cpts = rs.ctrlpts; + var bp0x, bp0y; + var bp1x, bp1y; + + if (cpts.length / 2 % 2 === 0) { + var p0 = pts.length / 2 - 1; // startpt + + var ic = p0 + 2; + var p1 = ic + 2; + bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0); + bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0); + bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001); + bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001); + } else { + var ic = pts.length / 2 - 1; // ctrpt + + var p0 = ic - 2; // startpt + + var p1 = ic + 2; // endpt + + bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999); + bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999); + bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5); + bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5); + } + + dispX = bp1x - bp0x; + dispY = bp1y - bp0y; + } + + rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY); + rs.midDispX = dispX; + rs.midDispY = dispY; // mid source + // + + dispX *= -1; + dispY *= -1; + + if (isSegments) { + var pts = rs.allpts; + + if (pts.length / 2 % 2 === 0) ; else { + var i2 = pts.length / 2 - 1; + var i3 = i2 + 2; + dispX = -(pts[i3] - pts[i2]); + dispY = -(pts[i3 + 1] - pts[i2 + 1]); + } + } + + rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target + // + + if (isSegments) { + dispX = endX - rs.segpts[rs.segpts.length - 2]; + dispY = endY - rs.segpts[rs.segpts.length - 1]; + } else if (isMultibezier || isCompound || isSelf || isBezier) { + var pts = rs.allpts; + var l = pts.length; + var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9); + var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9); + dispX = endX - bX; + dispY = endY - bY; + } else { + dispX = endX - midX; + dispY = endY - midY; + } + + rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY); +}; + +BRp$2.getArrowWidth = BRp$2.getArrowHeight = function (edgeWidth, scale) { + var cache = this.arrowWidthCache = this.arrowWidthCache || {}; + var cachedVal = cache[edgeWidth + ', ' + scale]; + + if (cachedVal) { + return cachedVal; + } + + cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale; + cache[edgeWidth + ', ' + scale] = cachedVal; + return cachedVal; +}; + +var BRp$3 = {}; + +BRp$3.findHaystackPoints = function (edges) { + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var _p = edge._private; + var rs = _p.rscratch; + + if (!rs.haystack) { + var angle = Math.random() * 2 * Math.PI; + rs.source = { + x: Math.cos(angle), + y: Math.sin(angle) + }; + angle = Math.random() * 2 * Math.PI; + rs.target = { + x: Math.cos(angle), + y: Math.sin(angle) + }; + } + + var src = _p.source; + var tgt = _p.target; + var srcPos = src.position(); + var tgtPos = tgt.position(); + var srcW = src.width(); + var tgtW = tgt.width(); + var srcH = src.height(); + var tgtH = tgt.height(); + var radius = edge.pstyle('haystack-radius').value; + var halfRadius = radius / 2; // b/c have to half width/height + + rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y]; + rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2; + rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously + + rs.edgeType = 'haystack'; + rs.haystack = true; + this.storeEdgeProjections(edge); + this.calculateArrowAngles(edge); + this.recalculateEdgeLabelProjections(edge); + this.calculateLabelAngles(edge); + } +}; + +BRp$3.findSegmentsPoints = function (edge, pairInfo) { + // Segments (multiple straight lines) + var rs = edge._private.rscratch; + var posPts = pairInfo.posPts, + intersectionPts = pairInfo.intersectionPts, + vectorNormInverse = pairInfo.vectorNormInverse; + var edgeDistances = edge.pstyle('edge-distances').value; + var segmentWs = edge.pstyle('segment-weights'); + var segmentDs = edge.pstyle('segment-distances'); + var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length); + rs.edgeType = 'segments'; + rs.segpts = []; + + for (var s = 0; s < segmentsN; s++) { + var w = segmentWs.pfValue[s]; + var d = segmentDs.pfValue[s]; + var w1 = 1 - w; + var w2 = w; + var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; + var adjustedMidpt = { + x: midptPts.x1 * w1 + midptPts.x2 * w2, + y: midptPts.y1 * w1 + midptPts.y2 * w2 + }; + rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d); + } +}; + +BRp$3.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { + // Self-edge + var rs = edge._private.rscratch; + var dirCounts = pairInfo.dirCounts, + srcPos = pairInfo.srcPos; + var ctrlptDists = edge.pstyle('control-point-distances'); + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; + var loopDir = edge.pstyle('loop-direction').pfValue; + var loopSwp = edge.pstyle('loop-sweep').pfValue; + var stepSize = edge.pstyle('control-point-step-size').pfValue; + rs.edgeType = 'self'; + var j = i; + var loopDist = stepSize; + + if (edgeIsUnbundled) { + j = 0; + loopDist = ctrlptDist; + } + + var loopAngle = loopDir - Math.PI / 2; + var outAngle = loopAngle - loopSwp / 2; + var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values + + var dc = String(loopDir + '_' + loopSwp); + j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc]; + rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)]; +}; + +BRp$3.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { + // Compound edge + var rs = edge._private.rscratch; + rs.edgeType = 'compound'; + var srcPos = pairInfo.srcPos, + tgtPos = pairInfo.tgtPos, + srcW = pairInfo.srcW, + srcH = pairInfo.srcH, + tgtW = pairInfo.tgtW, + tgtH = pairInfo.tgtH; + var stepSize = edge.pstyle('control-point-step-size').pfValue; + var ctrlptDists = edge.pstyle('control-point-distances'); + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; + var j = i; + var loopDist = stepSize; + + if (edgeIsUnbundled) { + j = 0; + loopDist = ctrlptDist; + } + + var loopW = 50; + var loopaPos = { + x: srcPos.x - srcW / 2, + y: srcPos.y - srcH / 2 + }; + var loopbPos = { + x: tgtPos.x - tgtW / 2, + y: tgtPos.y - tgtH / 2 + }; + var loopPos = { + x: Math.min(loopaPos.x, loopbPos.x), + y: Math.min(loopaPos.y, loopbPos.y) + }; // avoids cases with impossible beziers + + var minCompoundStretch = 0.5; + var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01)); + var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01)); + rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y]; +}; + +BRp$3.findStraightEdgePoints = function (edge) { + // Straight edge within bundle + edge._private.rscratch.edgeType = 'straight'; +}; + +BRp$3.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) { + var rs = edge._private.rscratch; + var vectorNormInverse = pairInfo.vectorNormInverse, + posPts = pairInfo.posPts, + intersectionPts = pairInfo.intersectionPts; + var edgeDistances = edge.pstyle('edge-distances').value; + var stepSize = edge.pstyle('control-point-step-size').pfValue; + var ctrlptDists = edge.pstyle('control-point-distances'); + var ctrlptWs = edge.pstyle('control-point-weights'); + var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1; + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; + var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier + + var multi = edgeIsUnbundled; + rs.edgeType = multi ? 'multibezier' : 'bezier'; + rs.ctrlpts = []; + + for (var b = 0; b < bezierN; b++) { + var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1); + var manctrlptDist = void 0; + var sign = signum(normctrlptDist); + + if (multi) { + ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size + + ctrlptWeight = ctrlptWs.value[b]; + } + + if (edgeIsUnbundled) { + // multi or single unbundled + manctrlptDist = ctrlptDist; + } else { + manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined; + } + + var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist; + var w1 = 1 - ctrlptWeight; + var w2 = ctrlptWeight; + var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; + var adjustedMidpt = { + x: midptPts.x1 * w1 + midptPts.x2 * w2, + y: midptPts.y1 * w1 + midptPts.y2 * w2 + }; + rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint); + } +}; + +BRp$3.findTaxiPoints = function (edge, pairInfo) { + // Taxicab geometry with two turns maximum + var rs = edge._private.rscratch; + rs.edgeType = 'segments'; + var VERTICAL = 'vertical'; + var HORIZONTAL = 'horizontal'; + var LEFTWARD = 'leftward'; + var RIGHTWARD = 'rightward'; + var DOWNWARD = 'downward'; + var UPWARD = 'upward'; + var AUTO = 'auto'; + var posPts = pairInfo.posPts, + srcW = pairInfo.srcW, + srcH = pairInfo.srcH, + tgtW = pairInfo.tgtW, + tgtH = pairInfo.tgtH; + var edgeDistances = edge.pstyle('edge-distances').value; + var dIncludesNodeBody = edgeDistances !== 'node-position'; + var taxiDir = edge.pstyle('taxi-direction').value; + var rawTaxiDir = taxiDir; // unprocessed value + + var taxiTurn = edge.pstyle('taxi-turn'); + var turnIsPercent = taxiTurn.units === '%'; + var taxiTurnPfVal = taxiTurn.pfValue; + var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side + + var minD = edge.pstyle('taxi-turn-min-distance').pfValue; + var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0; + var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0; + var pdx = posPts.x2 - posPts.x1; + var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value + + var subDWH = function subDWH(dxy, dwh) { + if (dxy > 0) { + return Math.max(dxy - dwh, 0); + } else { + return Math.min(dxy + dwh, 0); + } + }; + + var dx = subDWH(pdx, dw); + var dy = subDWH(pdy, dh); + var isExplicitDir = false; + + if (rawTaxiDir === AUTO) { + taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL; + } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) { + taxiDir = VERTICAL; + isExplicitDir = true; + } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) { + taxiDir = HORIZONTAL; + isExplicitDir = true; + } + + var isVert = taxiDir === VERTICAL; + var l = isVert ? dy : dx; + var pl = isVert ? pdy : pdx; + var sgnL = signum(pl); + var forcedDir = false; + + if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction + && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) { + sgnL *= -1; + l = sgnL * Math.abs(l); + forcedDir = true; + } + + var d; + + if (turnIsPercent) { + var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal; + d = p * l; + } else { + var k = taxiTurnPfVal < 0 ? l : 0; + d = k + taxiTurnPfVal * sgnL; + } + + var getIsTooClose = function getIsTooClose(d) { + return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l); + }; + + var isTooCloseSrc = getIsTooClose(d); + var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d)); + var isTooClose = isTooCloseSrc || isTooCloseTgt; + + if (isTooClose && !forcedDir) { + // non-ideal routing + if (isVert) { + // vertical fallbacks + var lShapeInsideSrc = Math.abs(pl) <= srcH / 2; + var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2; + + if (lShapeInsideSrc) { + // horizontal Z-shape (direction not respected) + var x = (posPts.x1 + posPts.x2) / 2; + var y1 = posPts.y1, + y2 = posPts.y2; + rs.segpts = [x, y1, x, y2]; + } else if (lShapeInsideTgt) { + // vertical Z-shape (distance not respected) + var y = (posPts.y1 + posPts.y2) / 2; + var x1 = posPts.x1, + x2 = posPts.x2; + rs.segpts = [x1, y, x2, y]; + } else { + // L-shape fallback (turn distance not respected, but works well with tree siblings) + rs.segpts = [posPts.x1, posPts.y2]; + } + } else { + // horizontal fallbacks + var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2; + + var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2; + + if (_lShapeInsideSrc) { + // vertical Z-shape (direction not respected) + var _y = (posPts.y1 + posPts.y2) / 2; + + var _x = posPts.x1, + _x2 = posPts.x2; + rs.segpts = [_x, _y, _x2, _y]; + } else if (_lShapeInsideTgt) { + // horizontal Z-shape (turn distance not respected) + var _x3 = (posPts.x1 + posPts.x2) / 2; + + var _y2 = posPts.y1, + _y3 = posPts.y2; + rs.segpts = [_x3, _y2, _x3, _y3]; + } else { + // L-shape (turn distance not respected, but works well for tree siblings) + rs.segpts = [posPts.x2, posPts.y1]; + } + } + } else { + // ideal routing + if (isVert) { + var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0); + + var _x4 = posPts.x1, + _x5 = posPts.x2; + rs.segpts = [_x4, _y4, _x5, _y4]; + } else { + // horizontal + var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0); + + var _y5 = posPts.y1, + _y6 = posPts.y2; + rs.segpts = [_x6, _y5, _x6, _y6]; + } + } +}; + +BRp$3.tryToCorrectInvalidPoints = function (edge, pairInfo) { + var rs = edge._private.rscratch; // can only correct beziers for now... + + if (rs.edgeType === 'bezier') { + var srcPos = pairInfo.srcPos, + tgtPos = pairInfo.tgtPos, + srcW = pairInfo.srcW, + srcH = pairInfo.srcH, + tgtW = pairInfo.tgtW, + tgtH = pairInfo.tgtH, + srcShape = pairInfo.srcShape, + tgtShape = pairInfo.tgtShape; + var badStart = !number(rs.startX) || !number(rs.startY); + var badAStart = !number(rs.arrowStartX) || !number(rs.arrowStartY); + var badEnd = !number(rs.endX) || !number(rs.endY); + var badAEnd = !number(rs.arrowEndX) || !number(rs.arrowEndY); + var minCpADistFactor = 3; + var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; + var minCpADist = minCpADistFactor * arrowW; + var startACpDist = dist$1({ + x: rs.ctrlpts[0], + y: rs.ctrlpts[1] + }, { + x: rs.startX, + y: rs.startY + }); + var closeStartACp = startACpDist < minCpADist; + var endACpDist = dist$1({ + x: rs.ctrlpts[0], + y: rs.ctrlpts[1] + }, { + x: rs.endX, + y: rs.endY + }); + var closeEndACp = endACpDist < minCpADist; + var overlapping = false; + + if (badStart || badAStart || closeStartACp) { + overlapping = true; // project control point along line from src centre to outside the src shape + // (otherwise intersection will yield nothing) + + var cpD = { + // delta + x: rs.ctrlpts[0] - srcPos.x, + y: rs.ctrlpts[1] - srcPos.y + }; + var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line + + var cpM = { + // normalised delta + x: cpD.x / cpL, + y: cpD.y / cpL + }; + var radius = Math.max(srcW, srcH); + var cpProj = { + // *2 radius guarantees outside shape + x: rs.ctrlpts[0] + cpM.x * 2 * radius, + y: rs.ctrlpts[1] + cpM.y * 2 * radius + }; + var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0); + + if (closeStartACp) { + rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist); + rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist); + } else { + rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist; + rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist; + } + } + + if (badEnd || badAEnd || closeEndACp) { + overlapping = true; // project control point along line from tgt centre to outside the tgt shape + // (otherwise intersection will yield nothing) + + var _cpD = { + // delta + x: rs.ctrlpts[0] - tgtPos.x, + y: rs.ctrlpts[1] - tgtPos.y + }; + + var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line + + + var _cpM = { + // normalised delta + x: _cpD.x / _cpL, + y: _cpD.y / _cpL + }; + + var _radius = Math.max(srcW, srcH); + + var _cpProj = { + // *2 radius guarantees outside shape + x: rs.ctrlpts[0] + _cpM.x * 2 * _radius, + y: rs.ctrlpts[1] + _cpM.y * 2 * _radius + }; + var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0); + + if (closeEndACp) { + rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist); + rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist); + } else { + rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist; + rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist; + } + } + + if (overlapping) { + // recalc endpts + this.findEndpoints(edge); + } + } +}; + +BRp$3.storeAllpts = function (edge) { + var rs = edge._private.rscratch; + + if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { + rs.allpts = []; + rs.allpts.push(rs.startX, rs.startY); + + for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) { + // ctrl pt itself + rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts + + if (b + 3 < rs.ctrlpts.length) { + rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2); + } + } + + rs.allpts.push(rs.endX, rs.endY); + var m, mt; + + if (rs.ctrlpts.length / 2 % 2 === 0) { + m = rs.allpts.length / 2 - 1; + rs.midX = rs.allpts[m]; + rs.midY = rs.allpts[m + 1]; + } else { + m = rs.allpts.length / 2 - 3; + mt = 0.5; + rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt); + rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt); + } + } else if (rs.edgeType === 'straight') { + // need to calc these after endpts + rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc + + rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4; + rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4; + } else if (rs.edgeType === 'segments') { + rs.allpts = []; + rs.allpts.push(rs.startX, rs.startY); + rs.allpts.push.apply(rs.allpts, rs.segpts); + rs.allpts.push(rs.endX, rs.endY); + + if (rs.segpts.length % 4 === 0) { + var i2 = rs.segpts.length / 2; + var i1 = i2 - 2; + rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2; + rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2; + } else { + var _i = rs.segpts.length / 2 - 1; + + rs.midX = rs.segpts[_i]; + rs.midY = rs.segpts[_i + 1]; + } + } +}; + +BRp$3.checkForInvalidEdgeWarning = function (edge) { + var rs = edge[0]._private.rscratch; + + if (rs.nodesOverlap || number(rs.startX) && number(rs.startY) && number(rs.endX) && number(rs.endY)) { + rs.loggedErr = false; + } else { + if (!rs.loggedErr) { + rs.loggedErr = true; + warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.'); + } + } +}; + +BRp$3.findEdgeControlPoints = function (edges) { + var _this = this; + + if (!edges || edges.length === 0) { + return; + } + + var r = this; + var cy = r.cy; + var hasCompounds = cy.hasCompoundNodes(); + var hashTable = { + map: new Map$1$1(), + get: function get(pairId) { + var map2 = this.map.get(pairId[0]); + + if (map2 != null) { + return map2.get(pairId[1]); + } else { + return null; + } + }, + set: function set(pairId, val) { + var map2 = this.map.get(pairId[0]); + + if (map2 == null) { + map2 = new Map$1$1(); + this.map.set(pairId[0], map2); + } + + map2.set(pairId[1], val); + } + }; + var pairIds = []; + var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them + + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var _p = edge._private; + var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed + // they shouldn't take up space + + if (edge.removed() || !edge.takesUpSpace()) { + continue; + } + + if (curveStyle === 'haystack') { + haystackEdges.push(edge); + continue; + } + + var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'straight-triangle' || curveStyle === 'taxi'; + var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier'; + var src = _p.source; + var tgt = _p.target; + var srcIndex = src.poolIndex(); + var tgtIndex = tgt.poolIndex(); + var pairId = [srcIndex, tgtIndex].sort(); + var tableEntry = hashTable.get(pairId); + + if (tableEntry == null) { + tableEntry = { + eles: [] + }; + hashTable.set(pairId, tableEntry); + pairIds.push(pairId); + } + + tableEntry.eles.push(edge); + + if (edgeIsUnbundled) { + tableEntry.hasUnbundled = true; + } + + if (edgeIsBezier) { + tableEntry.hasBezier = true; + } + } // for each pair (src, tgt), create the ctrl pts + // Nested for loop is OK; total number of iterations for both loops = edgeCount + + + var _loop = function _loop(p) { + var pairId = pairIds[p]; + var pairInfo = hashTable.get(pairId); + var swappedpairInfo = void 0; + + if (!pairInfo.hasUnbundled) { + var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) { + return e.isBundledBezier(); + }); + clearArray(pairInfo.eles); + pllEdges.forEach(function (edge) { + return pairInfo.eles.push(edge); + }); // for each pair id, the edges should be sorted by index + + pairInfo.eles.sort(function (edge1, edge2) { + return edge1.poolIndex() - edge2.poolIndex(); + }); + } + + var firstEdge = pairInfo.eles[0]; + var src = firstEdge.source(); + var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId + + if (src.poolIndex() > tgt.poolIndex()) { + var temp = src; + src = tgt; + tgt = temp; + } + + var srcPos = pairInfo.srcPos = src.position(); + var tgtPos = pairInfo.tgtPos = tgt.position(); + var srcW = pairInfo.srcW = src.outerWidth(); + var srcH = pairInfo.srcH = src.outerHeight(); + var tgtW = pairInfo.tgtW = tgt.outerWidth(); + var tgtH = pairInfo.tgtH = tgt.outerHeight(); + + var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)]; + + var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)]; + + pairInfo.dirCounts = { + 'north': 0, + 'west': 0, + 'south': 0, + 'east': 0, + 'northwest': 0, + 'southwest': 0, + 'northeast': 0, + 'southeast': 0 + }; + + for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) { + var _edge = pairInfo.eles[_i2]; + var rs = _edge[0]._private.rscratch; + + var _curveStyle = _edge.pstyle('curve-style').value; + + var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order + + + var edgeIsSwapped = !src.same(_edge.source()); + + if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) { + pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt + + var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0); + var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt + + var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0); + var tgtIntn = pairInfo.tgtIntn = tgtOutside; + var intersectionPts = pairInfo.intersectionPts = { + x1: srcOutside[0], + x2: tgtOutside[0], + y1: srcOutside[1], + y2: tgtOutside[1] + }; + var posPts = pairInfo.posPts = { + x1: srcPos.x, + x2: tgtPos.x, + y1: srcPos.y, + y2: tgtPos.y + }; + var dy = tgtOutside[1] - srcOutside[1]; + var dx = tgtOutside[0] - srcOutside[0]; + var l = Math.sqrt(dx * dx + dy * dy); + var vector = pairInfo.vector = { + x: dx, + y: dy + }; + var vectorNorm = pairInfo.vectorNorm = { + x: vector.x / l, + y: vector.y / l + }; + var vectorNormInverse = { + x: -vectorNorm.y, + y: vectorNorm.x + }; // if node shapes overlap, then no ctrl pts to draw + + pairInfo.nodesOverlap = !number(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y); + pairInfo.vectorNormInverse = vectorNormInverse; + swappedpairInfo = { + nodesOverlap: pairInfo.nodesOverlap, + dirCounts: pairInfo.dirCounts, + calculatedIntersection: true, + hasBezier: pairInfo.hasBezier, + hasUnbundled: pairInfo.hasUnbundled, + eles: pairInfo.eles, + srcPos: tgtPos, + tgtPos: srcPos, + srcW: tgtW, + srcH: tgtH, + tgtW: srcW, + tgtH: srcH, + srcIntn: tgtIntn, + tgtIntn: srcIntn, + srcShape: tgtShape, + tgtShape: srcShape, + posPts: { + x1: posPts.x2, + y1: posPts.y2, + x2: posPts.x1, + y2: posPts.y1 + }, + intersectionPts: { + x1: intersectionPts.x2, + y1: intersectionPts.y2, + x2: intersectionPts.x1, + y2: intersectionPts.y1 + }, + vector: { + x: -vector.x, + y: -vector.y + }, + vectorNorm: { + x: -vectorNorm.x, + y: -vectorNorm.y + }, + vectorNormInverse: { + x: -vectorNormInverse.x, + y: -vectorNormInverse.y + } + }; + } + + var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo; + rs.nodesOverlap = passedPairInfo.nodesOverlap; + rs.srcIntn = passedPairInfo.srcIntn; + rs.tgtIntn = passedPairInfo.tgtIntn; + + if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) { + _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); + } else if (src === tgt) { + _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); + } else if (_curveStyle === 'segments') { + _this.findSegmentsPoints(_edge, passedPairInfo); + } else if (_curveStyle === 'taxi') { + _this.findTaxiPoints(_edge, passedPairInfo); + } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) { + _this.findStraightEdgePoints(_edge); + } else { + _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped); + } + + _this.findEndpoints(_edge); + + _this.tryToCorrectInvalidPoints(_edge, passedPairInfo); + + _this.checkForInvalidEdgeWarning(_edge); + + _this.storeAllpts(_edge); + + _this.storeEdgeProjections(_edge); + + _this.calculateArrowAngles(_edge); + + _this.recalculateEdgeLabelProjections(_edge); + + _this.calculateLabelAngles(_edge); + } // for pair edges + + }; + + for (var p = 0; p < pairIds.length; p++) { + _loop(p); + } // for pair ids + // haystacks avoid the expense of pairInfo stuff (intersections etc.) + + + this.findHaystackPoints(haystackEdges); +}; + +function getPts(pts) { + var retPts = []; + + if (pts == null) { + return; + } + + for (var i = 0; i < pts.length; i += 2) { + var x = pts[i]; + var y = pts[i + 1]; + retPts.push({ + x: x, + y: y + }); + } + + return retPts; +} + +BRp$3.getSegmentPoints = function (edge) { + var rs = edge[0]._private.rscratch; + var type = rs.edgeType; + + if (type === 'segments') { + this.recalculateRenderedStyle(edge); + return getPts(rs.segpts); + } +}; + +BRp$3.getControlPoints = function (edge) { + var rs = edge[0]._private.rscratch; + var type = rs.edgeType; + + if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') { + this.recalculateRenderedStyle(edge); + return getPts(rs.ctrlpts); + } +}; + +BRp$3.getEdgeMidpoint = function (edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + return { + x: rs.midX, + y: rs.midY + }; +}; + +var BRp$4 = {}; + +BRp$4.manualEndptToPx = function (node, prop) { + var r = this; + var npos = node.position(); + var w = node.outerWidth(); + var h = node.outerHeight(); + + if (prop.value.length === 2) { + var p = [prop.pfValue[0], prop.pfValue[1]]; + + if (prop.units[0] === '%') { + p[0] = p[0] * w; + } + + if (prop.units[1] === '%') { + p[1] = p[1] * h; + } + + p[0] += npos.x; + p[1] += npos.y; + return p; + } else { + var angle = prop.pfValue[0]; + angle = -Math.PI / 2 + angle; // start at 12 o'clock + + var l = 2 * Math.max(w, h); + var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l]; + return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0); + } +}; + +BRp$4.findEndpoints = function (edge) { + var r = this; + var intersect; + var source = edge.source()[0]; + var target = edge.target()[0]; + var srcPos = source.position(); + var tgtPos = target.position(); + var tgtArShape = edge.pstyle('target-arrow-shape').value; + var srcArShape = edge.pstyle('source-arrow-shape').value; + var tgtDist = edge.pstyle('target-distance-from-node').pfValue; + var srcDist = edge.pstyle('source-distance-from-node').pfValue; + var curveStyle = edge.pstyle('curve-style').value; + var rs = edge._private.rscratch; + var et = rs.edgeType; + var taxi = curveStyle === 'taxi'; + var self = et === 'self' || et === 'compound'; + var bezier = et === 'bezier' || et === 'multibezier' || self; + var multi = et !== 'bezier'; + var lines = et === 'straight' || et === 'segments'; + var segments = et === 'segments'; + var hasEndpts = bezier || multi || lines; + var overrideEndpts = self || taxi; + var srcManEndpt = edge.pstyle('source-endpoint'); + var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value; + var tgtManEndpt = edge.pstyle('target-endpoint'); + var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value; + rs.srcManEndpt = srcManEndpt; + rs.tgtManEndpt = tgtManEndpt; + var p1; // last known point of edge on target side + + var p2; // last known point of edge on source side + + var p1_i; // point to intersect with target shape + + var p2_i; // point to intersect with source shape + + if (bezier) { + var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]]; + var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart; + p1 = cpEnd; + p2 = cpStart; + } else if (lines) { + var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2); + var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2); + p1 = tgtArrowFromPt; + p2 = srcArrowFromPt; + } + + if (tgtManEndptVal === 'inside-to-node') { + intersect = [tgtPos.x, tgtPos.y]; + } else if (tgtManEndpt.units) { + intersect = this.manualEndptToPx(target, tgtManEndpt); + } else if (tgtManEndptVal === 'outside-to-line') { + intersect = rs.tgtIntn; // use cached value from ctrlpt calc + } else { + if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') { + p1_i = p1; + } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') { + p1_i = [srcPos.x, srcPos.y]; + } + + intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0); + + if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') { + var trs = target._private.rscratch; + var lw = trs.labelWidth; + var lh = trs.labelHeight; + var lx = trs.labelX; + var ly = trs.labelY; + var lw2 = lw / 2; + var lh2 = lh / 2; + var va = target.pstyle('text-valign').value; + + if (va === 'top') { + ly -= lh2; + } else if (va === 'bottom') { + ly += lh2; + } + + var ha = target.pstyle('text-halign').value; + + if (ha === 'left') { + lx -= lw2; + } else if (ha === 'right') { + lx += lw2; + } + + var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y); + + if (labelIntersect.length > 0) { + var refPt = srcPos; + var intSqdist = sqdist(refPt, array2point(intersect)); + var labIntSqdist = sqdist(refPt, array2point(labelIntersect)); + var minSqDist = intSqdist; + + if (labIntSqdist < intSqdist) { + intersect = labelIntersect; + minSqDist = labIntSqdist; + } + + if (labelIntersect.length > 2) { + var labInt2SqDist = sqdist(refPt, { + x: labelIntersect[2], + y: labelIntersect[3] + }); + + if (labInt2SqDist < minSqDist) { + intersect = [labelIntersect[2], labelIntersect[3]]; + } + } + } + } + } + + var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist); + var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist); + rs.endX = edgeEnd[0]; + rs.endY = edgeEnd[1]; + rs.arrowEndX = arrowEnd[0]; + rs.arrowEndY = arrowEnd[1]; + + if (srcManEndptVal === 'inside-to-node') { + intersect = [srcPos.x, srcPos.y]; + } else if (srcManEndpt.units) { + intersect = this.manualEndptToPx(source, srcManEndpt); + } else if (srcManEndptVal === 'outside-to-line') { + intersect = rs.srcIntn; // use cached value from ctrlpt calc + } else { + if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') { + p2_i = p2; + } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') { + p2_i = [tgtPos.x, tgtPos.y]; + } + + intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0); + + if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') { + var srs = source._private.rscratch; + var _lw = srs.labelWidth; + var _lh = srs.labelHeight; + var _lx = srs.labelX; + var _ly = srs.labelY; + + var _lw2 = _lw / 2; + + var _lh2 = _lh / 2; + + var _va = source.pstyle('text-valign').value; + + if (_va === 'top') { + _ly -= _lh2; + } else if (_va === 'bottom') { + _ly += _lh2; + } + + var _ha = source.pstyle('text-halign').value; + + if (_ha === 'left') { + _lx -= _lw2; + } else if (_ha === 'right') { + _lx += _lw2; + } + + var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y); + + if (_labelIntersect.length > 0) { + var _refPt = tgtPos; + + var _intSqdist = sqdist(_refPt, array2point(intersect)); + + var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect)); + + var _minSqDist = _intSqdist; + + if (_labIntSqdist < _intSqdist) { + intersect = [_labelIntersect[0], _labelIntersect[1]]; + _minSqDist = _labIntSqdist; + } + + if (_labelIntersect.length > 2) { + var _labInt2SqDist = sqdist(_refPt, { + x: _labelIntersect[2], + y: _labelIntersect[3] + }); + + if (_labInt2SqDist < _minSqDist) { + intersect = [_labelIntersect[2], _labelIntersect[3]]; + } + } + } + } + } + + var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist); + var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist); + rs.startX = edgeStart[0]; + rs.startY = edgeStart[1]; + rs.arrowStartX = arrowStart[0]; + rs.arrowStartY = arrowStart[1]; + + if (hasEndpts) { + if (!number(rs.startX) || !number(rs.startY) || !number(rs.endX) || !number(rs.endY)) { + rs.badLine = true; + } else { + rs.badLine = false; + } + } +}; + +BRp$4.getSourceEndpoint = function (edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + + switch (rs.edgeType) { + case 'haystack': + return { + x: rs.haystackPts[0], + y: rs.haystackPts[1] + }; + + default: + return { + x: rs.arrowStartX, + y: rs.arrowStartY + }; + } +}; + +BRp$4.getTargetEndpoint = function (edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + + switch (rs.edgeType) { + case 'haystack': + return { + x: rs.haystackPts[2], + y: rs.haystackPts[3] + }; + + default: + return { + x: rs.arrowEndX, + y: rs.arrowEndY + }; + } +}; + +var BRp$5 = {}; + +function pushBezierPts(r, edge, pts) { + var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) { + return qbezierAt(p1, p2, p3, t); + }; + + var _p = edge._private; + var bpts = _p.rstyle.bezierPts; + + for (var i = 0; i < r.bezierProjPcts.length; i++) { + var p = r.bezierProjPcts[i]; + bpts.push({ + x: qbezierAt$1(pts[0], pts[2], pts[4], p), + y: qbezierAt$1(pts[1], pts[3], pts[5], p) + }); + } +} + +BRp$5.storeEdgeProjections = function (edge) { + var _p = edge._private; + var rs = _p.rscratch; + var et = rs.edgeType; // clear the cached points state + + _p.rstyle.bezierPts = null; + _p.rstyle.linePts = null; + _p.rstyle.haystackPts = null; + + if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') { + _p.rstyle.bezierPts = []; + + for (var i = 0; i + 5 < rs.allpts.length; i += 4) { + pushBezierPts(this, edge, rs.allpts.slice(i, i + 6)); + } + } else if (et === 'segments') { + var lpts = _p.rstyle.linePts = []; + + for (var i = 0; i + 1 < rs.allpts.length; i += 2) { + lpts.push({ + x: rs.allpts[i], + y: rs.allpts[i + 1] + }); + } + } else if (et === 'haystack') { + var hpts = rs.haystackPts; + _p.rstyle.haystackPts = [{ + x: hpts[0], + y: hpts[1] + }, { + x: hpts[2], + y: hpts[3] + }]; + } + + _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; +}; + +BRp$5.recalculateEdgeProjections = function (edges) { + this.findEdgeControlPoints(edges); +}; + +/* global document */ + +var BRp$6 = {}; + +BRp$6.recalculateNodeLabelProjection = function (node) { + var content = node.pstyle('label').strValue; + + if (emptyString(content)) { + return; + } + + var textX, textY; + var _p = node._private; + var nodeWidth = node.width(); + var nodeHeight = node.height(); + var padding = node.padding(); + var nodePos = node.position(); + var textHalign = node.pstyle('text-halign').strValue; + var textValign = node.pstyle('text-valign').strValue; + var rs = _p.rscratch; + var rstyle = _p.rstyle; + + switch (textHalign) { + case 'left': + textX = nodePos.x - nodeWidth / 2 - padding; + break; + + case 'right': + textX = nodePos.x + nodeWidth / 2 + padding; + break; + + default: + // e.g. center + textX = nodePos.x; + } + + switch (textValign) { + case 'top': + textY = nodePos.y - nodeHeight / 2 - padding; + break; + + case 'bottom': + textY = nodePos.y + nodeHeight / 2 + padding; + break; + + default: + // e.g. middle + textY = nodePos.y; + } + + rs.labelX = textX; + rs.labelY = textY; + rstyle.labelX = textX; + rstyle.labelY = textY; + this.calculateLabelAngles(node); + this.applyLabelDimensions(node); +}; + +var lineAngleFromDelta = function lineAngleFromDelta(dx, dy) { + var angle = Math.atan(dy / dx); + + if (dx === 0 && angle < 0) { + angle = angle * -1; + } + + return angle; +}; + +var lineAngle = function lineAngle(p0, p1) { + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + return lineAngleFromDelta(dx, dy); +}; + +var bezierAngle = function bezierAngle(p0, p1, p2, t) { + var t0 = bound(0, t - 0.001, 1); + var t1 = bound(0, t + 0.001, 1); + var lp0 = qbezierPtAt(p0, p1, p2, t0); + var lp1 = qbezierPtAt(p0, p1, p2, t1); + return lineAngle(lp0, lp1); +}; + +BRp$6.recalculateEdgeLabelProjections = function (edge) { + var p; + var _p = edge._private; + var rs = _p.rscratch; + var r = this; + var content = { + mid: edge.pstyle('label').strValue, + source: edge.pstyle('source-label').strValue, + target: edge.pstyle('target-label').strValue + }; + + if (content.mid || content.source || content.target) ; else { + return; // no labels => no calcs + } // add center point to style so bounding box calculations can use it + // + + + p = { + x: rs.midX, + y: rs.midY + }; + + var setRs = function setRs(propName, prefix, value) { + setPrefixedProperty(_p.rscratch, propName, prefix, value); + setPrefixedProperty(_p.rstyle, propName, prefix, value); + }; + + setRs('labelX', null, p.x); + setRs('labelY', null, p.y); + var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY); + setRs('labelAutoAngle', null, midAngle); + + var createControlPointInfo = function createControlPointInfo() { + if (createControlPointInfo.cache) { + return createControlPointInfo.cache; + } // use cache so only 1x per edge + + + var ctrlpts = []; // store each ctrlpt info init + + for (var i = 0; i + 5 < rs.allpts.length; i += 4) { + var p0 = { + x: rs.allpts[i], + y: rs.allpts[i + 1] + }; + var p1 = { + x: rs.allpts[i + 2], + y: rs.allpts[i + 3] + }; // ctrlpt + + var p2 = { + x: rs.allpts[i + 4], + y: rs.allpts[i + 5] + }; + ctrlpts.push({ + p0: p0, + p1: p1, + p2: p2, + startDist: 0, + length: 0, + segments: [] + }); + } + + var bpts = _p.rstyle.bezierPts; + var nProjs = r.bezierProjPcts.length; + + function addSegment(cp, p0, p1, t0, t1) { + var length = dist$1(p0, p1); + var prevSegment = cp.segments[cp.segments.length - 1]; + var segment = { + p0: p0, + p1: p1, + t0: t0, + t1: t1, + startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0, + length: length + }; + cp.segments.push(segment); + cp.length += length; + } // update each ctrlpt with segment info + + + for (var _i = 0; _i < ctrlpts.length; _i++) { + var cp = ctrlpts[_i]; + var prevCp = ctrlpts[_i - 1]; + + if (prevCp) { + cp.startDist = prevCp.startDist + prevCp.length; + } + + addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first + + for (var j = 0; j < nProjs - 1; j++) { + addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]); + } + + addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last + } + + return createControlPointInfo.cache = ctrlpts; + }; + + var calculateEndProjection = function calculateEndProjection(prefix) { + var angle; + var isSrc = prefix === 'source'; + + if (!content[prefix]) { + return; + } + + var offset = edge.pstyle(prefix + '-text-offset').pfValue; + + switch (rs.edgeType) { + case 'self': + case 'compound': + case 'bezier': + case 'multibezier': + { + var cps = createControlPointInfo(); + var selected; + var startDist = 0; + var totalDist = 0; // find the segment we're on + + for (var i = 0; i < cps.length; i++) { + var _cp = cps[isSrc ? i : cps.length - 1 - i]; + + for (var j = 0; j < _cp.segments.length; j++) { + var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j]; + var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1; + startDist = totalDist; + totalDist += _seg.length; + + if (totalDist >= offset || lastSeg) { + selected = { + cp: _cp, + segment: _seg + }; + break; + } + } + + if (selected) { + break; + } + } + + var cp = selected.cp; + var seg = selected.segment; + var tSegment = (offset - startDist) / seg.length; + var segDt = seg.t1 - seg.t0; + var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment; + t = bound(0, t, 1); + p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t); + angle = bezierAngle(cp.p0, cp.p1, cp.p2, t); + break; + } + + case 'straight': + case 'segments': + case 'haystack': + { + var d = 0, + di, + d0; + var p0, p1; + var l = rs.allpts.length; + + for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) { + if (isSrc) { + p0 = { + x: rs.allpts[_i2], + y: rs.allpts[_i2 + 1] + }; + p1 = { + x: rs.allpts[_i2 + 2], + y: rs.allpts[_i2 + 3] + }; + } else { + p0 = { + x: rs.allpts[l - 2 - _i2], + y: rs.allpts[l - 1 - _i2] + }; + p1 = { + x: rs.allpts[l - 4 - _i2], + y: rs.allpts[l - 3 - _i2] + }; + } + + di = dist$1(p0, p1); + d0 = d; + d += di; + + if (d >= offset) { + break; + } + } + + var pD = offset - d0; + + var _t = pD / di; + + _t = bound(0, _t, 1); + p = lineAt(p0, p1, _t); + angle = lineAngle(p0, p1); + break; + } + } + + setRs('labelX', prefix, p.x); + setRs('labelY', prefix, p.y); + setRs('labelAutoAngle', prefix, angle); + }; + + calculateEndProjection('source'); + calculateEndProjection('target'); + this.applyLabelDimensions(edge); +}; + +BRp$6.applyLabelDimensions = function (ele) { + this.applyPrefixedLabelDimensions(ele); + + if (ele.isEdge()) { + this.applyPrefixedLabelDimensions(ele, 'source'); + this.applyPrefixedLabelDimensions(ele, 'target'); + } +}; + +BRp$6.applyPrefixedLabelDimensions = function (ele, prefix) { + var _p = ele._private; + var text = this.getLabelText(ele, prefix); + var labelDims = this.calculateLabelDimensions(ele, text); + var lineHeight = ele.pstyle('line-height').pfValue; + var textWrap = ele.pstyle('text-wrap').strValue; + var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || []; + var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1); + var normPerLineHeight = labelDims.height / numLines; + var labelLineHeight = normPerLineHeight * lineHeight; + var width = labelDims.width; + var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight; + setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width); + setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width); + setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height); + setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height); + setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight); +}; + +BRp$6.getLabelText = function (ele, prefix) { + var _p = ele._private; + var pfd = prefix ? prefix + '-' : ''; + var text = ele.pstyle(pfd + 'label').strValue; + var textTransform = ele.pstyle('text-transform').value; + + var rscratch = function rscratch(propName, value) { + if (value) { + setPrefixedProperty(_p.rscratch, propName, prefix, value); + return value; + } else { + return getPrefixedProperty(_p.rscratch, propName, prefix); + } + }; // for empty text, skip all processing + + + if (!text) { + return ''; + } + + if (textTransform == 'none') ; else if (textTransform == 'uppercase') { + text = text.toUpperCase(); + } else if (textTransform == 'lowercase') { + text = text.toLowerCase(); + } + + var wrapStyle = ele.pstyle('text-wrap').value; + + if (wrapStyle === 'wrap') { + var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before + + if (labelKey != null && rscratch('labelWrapKey') === labelKey) { + return rscratch('labelWrapCachedText'); + } + + var zwsp = "\u200B"; + var lines = text.split('\n'); + var maxW = ele.pstyle('text-max-width').pfValue; + var overflow = ele.pstyle('text-overflow-wrap').value; + var overflowAny = overflow === 'anywhere'; + var wrappedLines = []; + var wordsRegex = /[\s\u200b]+/; + var wordSeparator = overflowAny ? '' : ' '; + + for (var l = 0; l < lines.length; l++) { + var line = lines[l]; + var lineDims = this.calculateLabelDimensions(ele, line); + var lineW = lineDims.width; + + if (overflowAny) { + var processedLine = line.split('').join(zwsp); + line = processedLine; + } + + if (lineW > maxW) { + // line is too long + var words = line.split(wordsRegex); + var subline = ''; + + for (var w = 0; w < words.length; w++) { + var word = words[w]; + var testLine = subline.length === 0 ? word : subline + wordSeparator + word; + var testDims = this.calculateLabelDimensions(ele, testLine); + var testW = testDims.width; + + if (testW <= maxW) { + // word fits on current line + subline += word + wordSeparator; + } else { + // word starts new line + if (subline) { + wrappedLines.push(subline); + } + + subline = word + wordSeparator; + } + } // if there's remaining text, put it in a wrapped line + + + if (!subline.match(/^[\s\u200b]+$/)) { + wrappedLines.push(subline); + } + } else { + // line is already short enough + wrappedLines.push(line); + } + } // for + + + rscratch('labelWrapCachedLines', wrappedLines); + text = rscratch('labelWrapCachedText', wrappedLines.join('\n')); + rscratch('labelWrapKey', labelKey); + } else if (wrapStyle === 'ellipsis') { + var _maxW = ele.pstyle('text-max-width').pfValue; + var ellipsized = ''; + var ellipsis = "\u2026"; + var incLastCh = false; + + if (this.calculateLabelDimensions(ele, text).width < _maxW) { + // the label already fits + return text; + } + + for (var i = 0; i < text.length; i++) { + var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width; + + if (widthWithNextCh > _maxW) { + break; + } + + ellipsized += text[i]; + + if (i === text.length - 1) { + incLastCh = true; + } + } + + if (!incLastCh) { + ellipsized += ellipsis; + } + + return ellipsized; + } // if ellipsize + + + return text; +}; + +BRp$6.getLabelJustification = function (ele) { + var justification = ele.pstyle('text-justification').strValue; + var textHalign = ele.pstyle('text-halign').strValue; + + if (justification === 'auto') { + if (ele.isNode()) { + switch (textHalign) { + case 'left': + return 'right'; + + case 'right': + return 'left'; + + default: + return 'center'; + } + } else { + return 'center'; + } + } else { + return justification; + } +}; + +BRp$6.calculateLabelDimensions = function (ele, text) { + var r = this; + var cacheKey = hashString(text, ele._private.labelDimsKey); + var cache = r.labelDimCache || (r.labelDimCache = []); + var existingVal = cache[cacheKey]; + + if (existingVal != null) { + return existingVal; + } + + var padding = 0; // add padding around text dims, as the measurement isn't that accurate + + var fStyle = ele.pstyle('font-style').strValue; + var size = ele.pstyle('font-size').pfValue; + var family = ele.pstyle('font-family').strValue; + var weight = ele.pstyle('font-weight').strValue; + var canvas = this.labelCalcCanvas; + var c2d = this.labelCalcCanvasContext; + + if (!canvas) { + canvas = this.labelCalcCanvas = document.createElement('canvas'); + c2d = this.labelCalcCanvasContext = canvas.getContext('2d'); + var ds = canvas.style; + ds.position = 'absolute'; + ds.left = '-9999px'; + ds.top = '-9999px'; + ds.zIndex = '-1'; + ds.visibility = 'hidden'; + ds.pointerEvents = 'none'; + } + + c2d.font = "".concat(fStyle, " ").concat(weight, " ").concat(size, "px ").concat(family); + var width = 0; + var height = 0; + var lines = text.split('\n'); + + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + var metrics = c2d.measureText(line); + var w = Math.ceil(metrics.width); + var h = size; + width = Math.max(w, width); + height += h; + } + + width += padding; + height += padding; + return cache[cacheKey] = { + width: width, + height: height + }; +}; + +BRp$6.calculateLabelAngle = function (ele, prefix) { + var _p = ele._private; + var rs = _p.rscratch; + var isEdge = ele.isEdge(); + var prefixDash = prefix ? prefix + '-' : ''; + var rot = ele.pstyle(prefixDash + 'text-rotation'); + var rotStr = rot.strValue; + + if (rotStr === 'none') { + return 0; + } else if (isEdge && rotStr === 'autorotate') { + return rs.labelAutoAngle; + } else if (rotStr === 'autorotate') { + return 0; + } else { + return rot.pfValue; + } +}; + +BRp$6.calculateLabelAngles = function (ele) { + var r = this; + var isEdge = ele.isEdge(); + var _p = ele._private; + var rs = _p.rscratch; + rs.labelAngle = r.calculateLabelAngle(ele); + + if (isEdge) { + rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source'); + rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target'); + } +}; + +var BRp$7 = {}; +var TOO_SMALL_CUT_RECT = 28; +var warnedCutRect = false; + +BRp$7.getNodeShape = function (node) { + var r = this; + var shape = node.pstyle('shape').value; + + if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) { + if (!warnedCutRect) { + warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead'); + warnedCutRect = true; + } + + return 'rectangle'; + } + + if (node.isParent()) { + if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') { + return shape; + } else { + return 'rectangle'; + } + } + + if (shape === 'polygon') { + var points = node.pstyle('shape-polygon-points').value; + return r.nodeShapes.makePolygon(points).name; + } + + return shape; +}; + +var BRp$8 = {}; + +BRp$8.registerCalculationListeners = function () { + var cy = this.cy; + var elesToUpdate = cy.collection(); + var r = this; + + var enqueue = function enqueue(eles) { + var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + elesToUpdate.merge(eles); + + if (dirtyStyleCaches) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _p = ele._private; + var rstyle = _p.rstyle; + rstyle.clean = false; + rstyle.cleanConnected = false; + } + } + }; + + r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) { + var ele = e.target; + enqueue(ele); + }).on('style.* background.*', function onDirtyStyle(e) { + var ele = e.target; + enqueue(ele, false); + }); + + var updateEleCalcs = function updateEleCalcs(willDraw) { + if (willDraw) { + var fns = r.onUpdateEleCalcsFns; // because we need to have up-to-date style (e.g. stylesheet mappers) + // before calculating rendered style (and pstyle might not be called yet) + + elesToUpdate.cleanStyle(); + + for (var i = 0; i < elesToUpdate.length; i++) { + var ele = elesToUpdate[i]; + var rstyle = ele._private.rstyle; + + if (ele.isNode() && !rstyle.cleanConnected) { + enqueue(ele.connectedEdges()); + rstyle.cleanConnected = true; + } + } + + if (fns) { + for (var _i = 0; _i < fns.length; _i++) { + var fn = fns[_i]; + fn(willDraw, elesToUpdate); + } + } + + r.recalculateRenderedStyle(elesToUpdate); + elesToUpdate = cy.collection(); + } + }; + + r.flushRenderedStyleQueue = function () { + updateEleCalcs(true); + }; + + r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs); +}; + +BRp$8.onUpdateEleCalcs = function (fn) { + var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; + fns.push(fn); +}; + +BRp$8.recalculateRenderedStyle = function (eles, useCache) { + var isCleanConnected = function isCleanConnected(ele) { + return ele._private.rstyle.cleanConnected; + }; + + var edges = []; + var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox() + + if (this.destroyed) { + return; + } // use cache by default for perf + + + if (useCache === undefined) { + useCache = true; + } + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _p = ele._private; + var rstyle = _p.rstyle; // an edge may be implicitly dirty b/c of one of its connected nodes + // (and a request for recalc may come in between frames) + + if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) { + rstyle.clean = false; + } // only update if dirty and in graph + + + if (useCache && rstyle.clean || ele.removed()) { + continue; + } // only update if not display: none + + + if (ele.pstyle('display').value === 'none') { + continue; + } + + if (_p.group === 'nodes') { + nodes.push(ele); + } else { + // edges + edges.push(ele); + } + + rstyle.clean = true; + } // update node data from projections + + + for (var _i2 = 0; _i2 < nodes.length; _i2++) { + var _ele = nodes[_i2]; + var _p2 = _ele._private; + var _rstyle = _p2.rstyle; + + var pos = _ele.position(); + + this.recalculateNodeLabelProjection(_ele); + _rstyle.nodeX = pos.x; + _rstyle.nodeY = pos.y; + _rstyle.nodeW = _ele.pstyle('width').pfValue; + _rstyle.nodeH = _ele.pstyle('height').pfValue; + } + + this.recalculateEdgeProjections(edges); // update edge data from projections + + for (var _i3 = 0; _i3 < edges.length; _i3++) { + var _ele2 = edges[_i3]; + var _p3 = _ele2._private; + var _rstyle2 = _p3.rstyle; + var rs = _p3.rscratch; // update rstyle positions + + _rstyle2.srcX = rs.arrowStartX; + _rstyle2.srcY = rs.arrowStartY; + _rstyle2.tgtX = rs.arrowEndX; + _rstyle2.tgtY = rs.arrowEndY; + _rstyle2.midX = rs.midX; + _rstyle2.midY = rs.midY; + _rstyle2.labelAngle = rs.labelAngle; + _rstyle2.sourceLabelAngle = rs.sourceLabelAngle; + _rstyle2.targetLabelAngle = rs.targetLabelAngle; + } +}; + +var BRp$9 = {}; + +BRp$9.updateCachedGrabbedEles = function () { + var eles = this.cachedZSortedEles; + + if (!eles) { + // just let this be recalculated on the next z sort tick + return; + } + + eles.drag = []; + eles.nondrag = []; + var grabTargets = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var rs = ele._private.rscratch; + + if (ele.grabbed() && !ele.isParent()) { + grabTargets.push(ele); + } else if (rs.inDragLayer) { + eles.drag.push(ele); + } else { + eles.nondrag.push(ele); + } + } // put the grab target nodes last so it's on top of its neighbourhood + + + for (var i = 0; i < grabTargets.length; i++) { + var ele = grabTargets[i]; + eles.drag.push(ele); + } +}; + +BRp$9.invalidateCachedZSortedEles = function () { + this.cachedZSortedEles = null; +}; + +BRp$9.getCachedZSortedEles = function (forceRecalc) { + if (forceRecalc || !this.cachedZSortedEles) { + var eles = this.cy.mutableElements().toArray(); + eles.sort(zIndexSort); + eles.interactive = eles.filter(function (ele) { + return ele.interactive(); + }); + this.cachedZSortedEles = eles; + this.updateCachedGrabbedEles(); + } else { + eles = this.cachedZSortedEles; + } + + return eles; +}; + +var BRp$a = {}; +[BRp$1, BRp$2, BRp$3, BRp$4, BRp$5, BRp$6, BRp$7, BRp$8, BRp$9].forEach(function (props) { + extend(BRp$a, props); +}); + +var BRp$b = {}; + +BRp$b.getCachedImage = function (url, crossOrigin, onLoad) { + var r = this; + var imageCache = r.imageCache = r.imageCache || {}; + var cache = imageCache[url]; + + if (cache) { + if (!cache.image.complete) { + cache.image.addEventListener('load', onLoad); + } + + return cache.image; + } else { + cache = imageCache[url] = imageCache[url] || {}; + var image = cache.image = new Image(); // eslint-disable-line no-undef + + image.addEventListener('load', onLoad); + image.addEventListener('error', function () { + image.error = true; + }); // #1582 safari doesn't load data uris with crossOrigin properly + // https://bugs.webkit.org/show_bug.cgi?id=123978 + + var dataUriPrefix = 'data:'; + var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix; + + if (!isDataUri) { + image.crossOrigin = crossOrigin; // prevent tainted canvas + } + + image.src = url; + return image; + } +}; + +var BRp$c = {}; +/* global document, window, ResizeObserver, MutationObserver */ + +BRp$c.registerBinding = function (target, event, handler, useCapture) { + // eslint-disable-line no-unused-vars + var args = Array.prototype.slice.apply(arguments, [1]); // copy + + var b = this.binder(target); + return b.on.apply(b, args); +}; + +BRp$c.binder = function (tgt) { + var r = this; + var tgtIsDom = tgt === window || tgt === document || tgt === document.body || domElement(tgt); + + if (r.supportsPassiveEvents == null) { + // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection + var supportsPassive = false; + + try { + var opts = Object.defineProperty({}, 'passive', { + get: function get() { + supportsPassive = true; + return true; + } + }); + window.addEventListener('test', null, opts); + } catch (err) {// not supported + } + + r.supportsPassiveEvents = supportsPassive; + } + + var on = function on(event, handler, useCapture) { + var args = Array.prototype.slice.call(arguments); + + if (tgtIsDom && r.supportsPassiveEvents) { + // replace useCapture w/ opts obj + args[2] = { + capture: useCapture != null ? useCapture : false, + passive: false, + once: false + }; + } + + r.bindings.push({ + target: tgt, + args: args + }); + (tgt.addEventListener || tgt.on).apply(tgt, args); + return this; + }; + + return { + on: on, + addEventListener: on, + addListener: on, + bind: on + }; +}; + +BRp$c.nodeIsDraggable = function (node) { + return node && node.isNode() && !node.locked() && node.grabbable(); +}; + +BRp$c.nodeIsGrabbable = function (node) { + return this.nodeIsDraggable(node) && node.interactive(); +}; + +BRp$c.load = function () { + var r = this; + + var isSelected = function isSelected(ele) { + return ele.selected(); + }; + + var triggerEvents = function triggerEvents(target, names, e, position) { + if (target == null) { + target = r.cy; + } + + for (var i = 0; i < names.length; i++) { + var name = names[i]; + target.emit({ + originalEvent: e, + type: name, + position: position + }); + } + }; + + var isMultSelKeyDown = function isMultSelKeyDown(e) { + return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey + }; + + var allowPanningPassthrough = function allowPanningPassthrough(down, downs) { + var allowPassthrough = true; + + if (r.cy.hasCompoundNodes() && down && down.pannable()) { + // a grabbable compound node below the ele => no passthrough panning + for (var i = 0; downs && i < downs.length; i++) { + var down = downs[i]; //if any parent node in event hierarchy isn't pannable, reject passthrough + + if (down.isNode() && down.isParent() && !down.pannable()) { + allowPassthrough = false; + break; + } + } + } else { + allowPassthrough = true; + } + + return allowPassthrough; + }; + + var setGrabbed = function setGrabbed(ele) { + ele[0]._private.grabbed = true; + }; + + var setFreed = function setFreed(ele) { + ele[0]._private.grabbed = false; + }; + + var setInDragLayer = function setInDragLayer(ele) { + ele[0]._private.rscratch.inDragLayer = true; + }; + + var setOutDragLayer = function setOutDragLayer(ele) { + ele[0]._private.rscratch.inDragLayer = false; + }; + + var setGrabTarget = function setGrabTarget(ele) { + ele[0]._private.rscratch.isGrabTarget = true; + }; + + var removeGrabTarget = function removeGrabTarget(ele) { + ele[0]._private.rscratch.isGrabTarget = false; + }; + + var addToDragList = function addToDragList(ele, opts) { + var list = opts.addToList; + var listHasEle = list.has(ele); + + if (!listHasEle) { + list.merge(ele); + setGrabbed(ele); + } + }; // helper function to determine which child nodes and inner edges + // of a compound node to be dragged as well as the grabbed and selected nodes + + + var addDescendantsToDrag = function addDescendantsToDrag(node, opts) { + if (!node.cy().hasCompoundNodes()) { + return; + } + + if (opts.inDragLayer == null && opts.addToList == null) { + return; + } // nothing to do + + + var innerNodes = node.descendants(); + + if (opts.inDragLayer) { + innerNodes.forEach(setInDragLayer); + innerNodes.connectedEdges().forEach(setInDragLayer); + } + + if (opts.addToList) { + opts.addToList.unmerge(innerNodes); + } + }; // adds the given nodes and its neighbourhood to the drag layer + + + var addNodesToDrag = function addNodesToDrag(nodes, opts) { + opts = opts || {}; + var hasCompoundNodes = nodes.cy().hasCompoundNodes(); + + if (opts.inDragLayer) { + nodes.forEach(setInDragLayer); + nodes.neighborhood().stdFilter(function (ele) { + return !hasCompoundNodes || ele.isEdge(); + }).forEach(setInDragLayer); + } + + if (opts.addToList) { + nodes.forEach(function (ele) { + addToDragList(ele, opts); + }); + } + + addDescendantsToDrag(nodes, opts); // always add to drag + // also add nodes and edges related to the topmost ancestor + + updateAncestorsInDragLayer(nodes, { + inDragLayer: opts.inDragLayer + }); + r.updateCachedGrabbedEles(); + }; + + var addNodeToDrag = addNodesToDrag; + + var freeDraggedElements = function freeDraggedElements(grabbedEles) { + if (!grabbedEles) { + return; + } // just go over all elements rather than doing a bunch of (possibly expensive) traversals + + + r.getCachedZSortedEles().forEach(function (ele) { + setFreed(ele); + setOutDragLayer(ele); + removeGrabTarget(ele); + }); + r.updateCachedGrabbedEles(); + }; // helper function to determine which ancestor nodes and edges should go + // to the drag layer (or should be removed from drag layer). + + + var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) { + if (opts.inDragLayer == null && opts.addToList == null) { + return; + } // nothing to do + + + if (!node.cy().hasCompoundNodes()) { + return; + } // find top-level parent + + + var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer + + if (parent.same(node)) { + return; + } + + var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants()); + var edges = nodes.connectedEdges(); + + if (opts.inDragLayer) { + edges.forEach(setInDragLayer); + nodes.forEach(setInDragLayer); + } + + if (opts.addToList) { + nodes.forEach(function (ele) { + addToDragList(ele, opts); + }); + } + }; + + var blurActiveDomElement = function blurActiveDomElement() { + if (document.activeElement != null && document.activeElement.blur != null) { + document.activeElement.blur(); + } + }; + + var haveMutationsApi = typeof MutationObserver !== 'undefined'; + var haveResizeObserverApi = typeof ResizeObserver !== 'undefined'; // watch for when the cy container is removed from the dom + + if (haveMutationsApi) { + r.removeObserver = new MutationObserver(function (mutns) { + // eslint-disable-line no-undef + for (var i = 0; i < mutns.length; i++) { + var mutn = mutns[i]; + var rNodes = mutn.removedNodes; + + if (rNodes) { + for (var j = 0; j < rNodes.length; j++) { + var rNode = rNodes[j]; + + if (rNode === r.container) { + r.destroy(); + break; + } + } + } + } + }); + + if (r.container.parentNode) { + r.removeObserver.observe(r.container.parentNode, { + childList: true + }); + } + } else { + r.registerBinding(r.container, 'DOMNodeRemoved', function (e) { + // eslint-disable-line no-unused-vars + r.destroy(); + }); + } + + var onResize = util$2(function () { + r.cy.resize(); + }, 100); + + if (haveMutationsApi) { + r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef + + r.styleObserver.observe(r.container, { + attributes: true + }); + } // auto resize + + + r.registerBinding(window, 'resize', onResize); // eslint-disable-line no-undef + + if (haveResizeObserverApi) { + r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef + + r.resizeObserver.observe(r.container); + } + + var forEachUp = function forEachUp(domEle, fn) { + while (domEle != null) { + fn(domEle); + domEle = domEle.parentNode; + } + }; + + var invalidateCoords = function invalidateCoords() { + r.invalidateContainerClientCoordsCache(); + }; + + forEachUp(r.container, function (domEle) { + r.registerBinding(domEle, 'transitionend', invalidateCoords); + r.registerBinding(domEle, 'animationend', invalidateCoords); + r.registerBinding(domEle, 'scroll', invalidateCoords); + }); // stop right click menu from appearing on cy + + r.registerBinding(r.container, 'contextmenu', function (e) { + e.preventDefault(); + }); + + var inBoxSelection = function inBoxSelection() { + return r.selection[4] !== 0; + }; + + var eventInContainer = function eventInContainer(e) { + // save cycles if mouse events aren't to be captured + var containerPageCoords = r.findContainerClientCoords(); + var x = containerPageCoords[0]; + var y = containerPageCoords[1]; + var width = containerPageCoords[2]; + var height = containerPageCoords[3]; + var positions = e.touches ? e.touches : [e]; + var atLeastOnePosInside = false; + + for (var i = 0; i < positions.length; i++) { + var p = positions[i]; + + if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) { + atLeastOnePosInside = true; + break; + } + } + + if (!atLeastOnePosInside) { + return false; + } + + var container = r.container; + var target = e.target; + var tParent = target.parentNode; + var containerIsTarget = false; + + while (tParent) { + if (tParent === container) { + containerIsTarget = true; + break; + } + + tParent = tParent.parentNode; + } + + if (!containerIsTarget) { + return false; + } // if target is outisde cy container, then this event is not for us + + + return true; + }; // Primary key + + + r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) { + if (!eventInContainer(e)) { + return; + } + + e.preventDefault(); + blurActiveDomElement(); + r.hoverData.capture = true; + r.hoverData.which = e.which; + var cy = r.cy; + var gpos = [e.clientX, e.clientY]; + var pos = r.projectIntoViewport(gpos[0], gpos[1]); + var select = r.selection; + var nears = r.findNearestElements(pos[0], pos[1], true, false); + var near = nears[0]; + var draggedElements = r.dragData.possibleDragElements; + r.hoverData.mdownPos = pos; + r.hoverData.mdownGPos = gpos; + + var checkForTaphold = function checkForTaphold() { + r.hoverData.tapholdCancelled = false; + clearTimeout(r.hoverData.tapholdTimeout); + r.hoverData.tapholdTimeout = setTimeout(function () { + if (r.hoverData.tapholdCancelled) { + return; + } else { + var ele = r.hoverData.down; + + if (ele) { + ele.emit({ + originalEvent: e, + type: 'taphold', + position: { + x: pos[0], + y: pos[1] + } + }); + } else { + cy.emit({ + originalEvent: e, + type: 'taphold', + position: { + x: pos[0], + y: pos[1] + } + }); + } + } + }, r.tapholdDuration); + }; // Right click button + + + if (e.which == 3) { + r.hoverData.cxtStarted = true; + var cxtEvt = { + originalEvent: e, + type: 'cxttapstart', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (near) { + near.activate(); + near.emit(cxtEvt); + r.hoverData.down = near; + } else { + cy.emit(cxtEvt); + } + + r.hoverData.downTime = new Date().getTime(); + r.hoverData.cxtDragged = false; // Primary button + } else if (e.which == 1) { + if (near) { + near.activate(); + } // Element dragging + + + { + // If something is under the cursor and it is draggable, prepare to grab it + if (near != null) { + if (r.nodeIsGrabbable(near)) { + var makeEvent = function makeEvent(type) { + return { + originalEvent: e, + type: type, + position: { + x: pos[0], + y: pos[1] + } + }; + }; + + var triggerGrab = function triggerGrab(ele) { + ele.emit(makeEvent('grab')); + }; + + setGrabTarget(near); + + if (!near.selected()) { + draggedElements = r.dragData.possibleDragElements = cy.collection(); + addNodeToDrag(near, { + addToList: draggedElements + }); + near.emit(makeEvent('grabon')).emit(makeEvent('grab')); + } else { + draggedElements = r.dragData.possibleDragElements = cy.collection(); + var selectedNodes = cy.$(function (ele) { + return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele); + }); + addNodesToDrag(selectedNodes, { + addToList: draggedElements + }); + near.emit(makeEvent('grabon')); + selectedNodes.forEach(triggerGrab); + } + + r.redrawHint('eles', true); + r.redrawHint('drag', true); + } + } + + r.hoverData.down = near; + r.hoverData.downs = nears; + r.hoverData.downTime = new Date().getTime(); + } + triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, { + x: pos[0], + y: pos[1] + }); + + if (near == null) { + select[4] = 1; + r.data.bgActivePosistion = { + x: pos[0], + y: pos[1] + }; + r.redrawHint('select', true); + r.redraw(); + } else if (near.pannable()) { + select[4] = 1; // for future pan + } + + checkForTaphold(); + } // Initialize selection box coordinates + + + select[0] = select[2] = pos[0]; + select[1] = select[3] = pos[1]; + }, false); + r.registerBinding(window, 'mousemove', function mousemoveHandler(e) { + // eslint-disable-line no-undef + var capture = r.hoverData.capture; + + if (!capture && !eventInContainer(e)) { + return; + } + + var preventDefault = false; + var cy = r.cy; + var zoom = cy.zoom(); + var gpos = [e.clientX, e.clientY]; + var pos = r.projectIntoViewport(gpos[0], gpos[1]); + var mdownPos = r.hoverData.mdownPos; + var mdownGPos = r.hoverData.mdownGPos; + var select = r.selection; + var near = null; + + if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) { + near = r.findNearestElement(pos[0], pos[1], true, false); + } + + var last = r.hoverData.last; + var down = r.hoverData.down; + var disp = [pos[0] - select[2], pos[1] - select[3]]; + var draggedElements = r.dragData.possibleDragElements; + var isOverThresholdDrag; + + if (mdownGPos) { + var dx = gpos[0] - mdownGPos[0]; + var dx2 = dx * dx; + var dy = gpos[1] - mdownGPos[1]; + var dy2 = dy * dy; + var dist2 = dx2 + dy2; + r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2; + } + + var multSelKeyDown = isMultSelKeyDown(e); + + if (isOverThresholdDrag) { + r.hoverData.tapholdCancelled = true; + } + + var updateDragDelta = function updateDragDelta() { + var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || []; + + if (dragDelta.length === 0) { + dragDelta.push(disp[0]); + dragDelta.push(disp[1]); + } else { + dragDelta[0] += disp[0]; + dragDelta[1] += disp[1]; + } + }; + + preventDefault = true; + triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, { + x: pos[0], + y: pos[1] + }); + + var goIntoBoxMode = function goIntoBoxMode() { + r.data.bgActivePosistion = undefined; + + if (!r.hoverData.selecting) { + cy.emit({ + originalEvent: e, + type: 'boxstart', + position: { + x: pos[0], + y: pos[1] + } + }); + } + + select[4] = 1; + r.hoverData.selecting = true; + r.redrawHint('select', true); + r.redraw(); + }; // trigger context drag if rmouse down + + + if (r.hoverData.which === 3) { + // but only if over threshold + if (isOverThresholdDrag) { + var cxtEvt = { + originalEvent: e, + type: 'cxtdrag', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (down) { + down.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + + r.hoverData.cxtDragged = true; + + if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) { + if (r.hoverData.cxtOver) { + r.hoverData.cxtOver.emit({ + originalEvent: e, + type: 'cxtdragout', + position: { + x: pos[0], + y: pos[1] + } + }); + } + + r.hoverData.cxtOver = near; + + if (near) { + near.emit({ + originalEvent: e, + type: 'cxtdragover', + position: { + x: pos[0], + y: pos[1] + } + }); + } + } + } // Check if we are drag panning the entire graph + + } else if (r.hoverData.dragging) { + preventDefault = true; + + if (cy.panningEnabled() && cy.userPanningEnabled()) { + var deltaP; + + if (r.hoverData.justStartedPan) { + var mdPos = r.hoverData.mdownPos; + deltaP = { + x: (pos[0] - mdPos[0]) * zoom, + y: (pos[1] - mdPos[1]) * zoom + }; + r.hoverData.justStartedPan = false; + } else { + deltaP = { + x: disp[0] * zoom, + y: disp[1] * zoom + }; + } + + cy.panBy(deltaP); + cy.emit('dragpan'); + r.hoverData.dragged = true; + } // Needs reproject due to pan changing viewport + + + pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much + } else if (select[4] == 1 && (down == null || down.pannable())) { + if (isOverThresholdDrag) { + if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) { + goIntoBoxMode(); + } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) { + var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs); + + if (allowPassthrough) { + r.hoverData.dragging = true; + r.hoverData.justStartedPan = true; + select[4] = 0; + r.data.bgActivePosistion = array2point(mdownPos); + r.redrawHint('select', true); + r.redraw(); + } + } + + if (down && down.pannable() && down.active()) { + down.unactivate(); + } + } + } else { + if (down && down.pannable() && down.active()) { + down.unactivate(); + } + + if ((!down || !down.grabbed()) && near != last) { + if (last) { + triggerEvents(last, ['mouseout', 'tapdragout'], e, { + x: pos[0], + y: pos[1] + }); + } + + if (near) { + triggerEvents(near, ['mouseover', 'tapdragover'], e, { + x: pos[0], + y: pos[1] + }); + } + + r.hoverData.last = near; + } + + if (down) { + if (isOverThresholdDrag) { + // then we can take action + if (cy.boxSelectionEnabled() && multSelKeyDown) { + // then selection overrides + if (down && down.grabbed()) { + freeDraggedElements(draggedElements); + down.emit('freeon'); + draggedElements.emit('free'); + + if (r.dragData.didDrag) { + down.emit('dragfreeon'); + draggedElements.emit('dragfree'); + } + } + + goIntoBoxMode(); + } else if (down && down.grabbed() && r.nodeIsDraggable(down)) { + // drag node + var justStartedDrag = !r.dragData.didDrag; + + if (justStartedDrag) { + r.redrawHint('eles', true); + } + + r.dragData.didDrag = true; // indicate that we actually did drag the node + + var toTrigger = cy.collection(); // now, add the elements to the drag layer if not done already + + if (!r.hoverData.draggingEles) { + addNodesToDrag(draggedElements, { + inDragLayer: true + }); + } + + var totalShift = { + x: 0, + y: 0 + }; + + if (number(disp[0]) && number(disp[1])) { + totalShift.x += disp[0]; + totalShift.y += disp[1]; + + if (justStartedDrag) { + var dragDelta = r.hoverData.dragDelta; + + if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { + totalShift.x += dragDelta[0]; + totalShift.y += dragDelta[1]; + } + } + } + + for (var i = 0; i < draggedElements.length; i++) { + var dEle = draggedElements[i]; + + if (r.nodeIsDraggable(dEle) && dEle.grabbed()) { + toTrigger.push(dEle); + } + } + + r.hoverData.draggingEles = true; + toTrigger.silentShift(totalShift).emit('position drag'); + r.redrawHint('drag', true); + r.redraw(); + } + } else { + // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant + updateDragDelta(); + } + } // prevent the dragging from triggering text selection on the page + + + preventDefault = true; + } + + select[2] = pos[0]; + select[3] = pos[1]; + + if (preventDefault) { + if (e.stopPropagation) e.stopPropagation(); + if (e.preventDefault) e.preventDefault(); + return false; + } + }, false); + var clickTimeout, didDoubleClick, prevClickTimeStamp; + r.registerBinding(window, 'mouseup', function mouseupHandler(e) { + // eslint-disable-line no-undef + var capture = r.hoverData.capture; + + if (!capture) { + return; + } + + r.hoverData.capture = false; + var cy = r.cy; + var pos = r.projectIntoViewport(e.clientX, e.clientY); + var select = r.selection; + var near = r.findNearestElement(pos[0], pos[1], true, false); + var draggedElements = r.dragData.possibleDragElements; + var down = r.hoverData.down; + var multSelKeyDown = isMultSelKeyDown(e); + + if (r.data.bgActivePosistion) { + r.redrawHint('select', true); + r.redraw(); + } + + r.hoverData.tapholdCancelled = true; + r.data.bgActivePosistion = undefined; // not active bg now + + if (down) { + down.unactivate(); + } + + if (r.hoverData.which === 3) { + var cxtEvt = { + originalEvent: e, + type: 'cxttapend', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (down) { + down.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + + if (!r.hoverData.cxtDragged) { + var cxtTap = { + originalEvent: e, + type: 'cxttap', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (down) { + down.emit(cxtTap); + } else { + cy.emit(cxtTap); + } + } + + r.hoverData.cxtDragged = false; + r.hoverData.which = null; + } else if (r.hoverData.which === 1) { + triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, { + x: pos[0], + y: pos[1] + }); + + if (!r.dragData.didDrag && // didn't move a node around + !r.hoverData.dragged && // didn't pan + !r.hoverData.selecting && // not box selection + !r.hoverData.isOverThresholdDrag // didn't move too much + ) { + triggerEvents(down, ["click", "tap", "vclick"], e, { + x: pos[0], + y: pos[1] + }); + didDoubleClick = false; + + if (e.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) { + clickTimeout && clearTimeout(clickTimeout); + didDoubleClick = true; + prevClickTimeStamp = null; + triggerEvents(down, ["dblclick", "dbltap", "vdblclick"], e, { + x: pos[0], + y: pos[1] + }); + } else { + clickTimeout = setTimeout(function () { + if (didDoubleClick) return; + triggerEvents(down, ["oneclick", "onetap", "voneclick"], e, { + x: pos[0], + y: pos[1] + }); + }, cy.multiClickDebounceTime()); + prevClickTimeStamp = e.timeStamp; + } + } // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something + + + if (down == null && // not mousedown on node + !r.dragData.didDrag // didn't move the node around + && !r.hoverData.selecting // not box selection + && !r.hoverData.dragged // didn't pan + && !isMultSelKeyDown(e)) { + cy.$(isSelected).unselect(['tapunselect']); + + if (draggedElements.length > 0) { + r.redrawHint('eles', true); + } + + r.dragData.possibleDragElements = draggedElements = cy.collection(); + } // Single selection + + + if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) { + if (near != null && near._private.selectable) { + if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) { + if (near.selected()) { + near.unselect(['tapunselect']); + } else { + near.select(['tapselect']); + } + } else { + if (!multSelKeyDown) { + cy.$(isSelected).unmerge(near).unselect(['tapunselect']); + near.select(['tapselect']); + } + } + + r.redrawHint('eles', true); + } + } + + if (r.hoverData.selecting) { + var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); + r.redrawHint('select', true); + + if (box.length > 0) { + r.redrawHint('eles', true); + } + + cy.emit({ + type: 'boxend', + originalEvent: e, + position: { + x: pos[0], + y: pos[1] + } + }); + + var eleWouldBeSelected = function eleWouldBeSelected(ele) { + return ele.selectable() && !ele.selected(); + }; + + if (cy.selectionType() === 'additive') { + box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); + } else { + if (!multSelKeyDown) { + cy.$(isSelected).unmerge(box).unselect(); + } + + box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); + } // always need redraw in case eles unselectable + + + r.redraw(); + } // Cancel drag pan + + + if (r.hoverData.dragging) { + r.hoverData.dragging = false; + r.redrawHint('select', true); + r.redrawHint('eles', true); + r.redraw(); + } + + if (!select[4]) { + r.redrawHint('drag', true); + r.redrawHint('eles', true); + var downWasGrabbed = down && down.grabbed(); + freeDraggedElements(draggedElements); + + if (downWasGrabbed) { + down.emit('freeon'); + draggedElements.emit('free'); + + if (r.dragData.didDrag) { + down.emit('dragfreeon'); + draggedElements.emit('dragfree'); + } + } + } + } // else not right mouse + + + select[4] = 0; + r.hoverData.down = null; + r.hoverData.cxtStarted = false; + r.hoverData.draggingEles = false; + r.hoverData.selecting = false; + r.hoverData.isOverThresholdDrag = false; + r.dragData.didDrag = false; + r.hoverData.dragged = false; + r.hoverData.dragDelta = []; + r.hoverData.mdownPos = null; + r.hoverData.mdownGPos = null; + }, false); + + var wheelHandler = function wheelHandler(e) { + if (r.scrollingPage) { + return; + } // while scrolling, ignore wheel-to-zoom + + + var cy = r.cy; + var zoom = cy.zoom(); + var pan = cy.pan(); + var pos = r.projectIntoViewport(e.clientX, e.clientY); + var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y]; + + if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) { + // if pan dragging or cxt dragging, wheel movements make no zoom + e.preventDefault(); + return; + } + + if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) { + e.preventDefault(); + r.data.wheelZooming = true; + clearTimeout(r.data.wheelTimeout); + r.data.wheelTimeout = setTimeout(function () { + r.data.wheelZooming = false; + r.redrawHint('eles', true); + r.redraw(); + }, 150); + var diff; + + if (e.deltaY != null) { + diff = e.deltaY / -250; + } else if (e.wheelDeltaY != null) { + diff = e.wheelDeltaY / 1000; + } else { + diff = e.wheelDelta / 1000; + } + + diff = diff * r.wheelSensitivity; + var needsWheelFix = e.deltaMode === 1; + + if (needsWheelFix) { + // fixes slow wheel events on ff/linux and ff/windows + diff *= 33; + } + + var newZoom = cy.zoom() * Math.pow(10, diff); + + if (e.type === 'gesturechange') { + newZoom = r.gestureStartZoom * e.scale; + } + + cy.zoom({ + level: newZoom, + renderedPosition: { + x: rpos[0], + y: rpos[1] + } + }); + cy.emit(e.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom'); + } + }; // Functions to help with whether mouse wheel should trigger zooming + // -- + + + r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events + // r.registerBinding(r.container, 'mousewheel', wheelHandler, true); + // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true); + // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox + + r.registerBinding(window, 'scroll', function scrollHandler(e) { + // eslint-disable-line no-unused-vars + r.scrollingPage = true; + clearTimeout(r.scrollingPageTimeout); + r.scrollingPageTimeout = setTimeout(function () { + r.scrollingPage = false; + }, 250); + }, true); // desktop safari pinch to zoom start + + r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) { + r.gestureStartZoom = r.cy.zoom(); + + if (!r.hasTouchStarted) { + // don't affect touch devices like iphone + e.preventDefault(); + } + }, true); + r.registerBinding(r.container, 'gesturechange', function (e) { + if (!r.hasTouchStarted) { + // don't affect touch devices like iphone + wheelHandler(e); + } + }, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container + // Handle mouseout on Cytoscape container + + r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) { + var pos = r.projectIntoViewport(e.clientX, e.clientY); + r.cy.emit({ + originalEvent: e, + type: 'mouseout', + position: { + x: pos[0], + y: pos[1] + } + }); + }, false); + r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) { + var pos = r.projectIntoViewport(e.clientX, e.clientY); + r.cy.emit({ + originalEvent: e, + type: 'mouseover', + position: { + x: pos[0], + y: pos[1] + } + }); + }, false); + var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom + + var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom + + var center1, modelCenter1; // center point on start pinch to zoom + + var offsetLeft, offsetTop; + var containerWidth, containerHeight; + var twoFingersStartInside; + + var distance = function distance(x1, y1, x2, y2) { + return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); + }; + + var distanceSq = function distanceSq(x1, y1, x2, y2) { + return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); + }; + + var touchstartHandler; + r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) { + r.hasTouchStarted = true; + + if (!eventInContainer(e)) { + return; + } + + blurActiveDomElement(); + r.touchData.capture = true; + r.data.bgActivePosistion = undefined; + var cy = r.cy; + var now = r.touchData.now; + var earlier = r.touchData.earlier; + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } // record starting points for pinch-to-zoom + + + if (e.touches[1]) { + r.touchData.singleTouchMoved = true; + freeDraggedElements(r.dragData.touchDragEles); + var offsets = r.findContainerClientCoords(); + offsetLeft = offsets[0]; + offsetTop = offsets[1]; + containerWidth = offsets[2]; + containerHeight = offsets[3]; + f1x1 = e.touches[0].clientX - offsetLeft; + f1y1 = e.touches[0].clientY - offsetTop; + f2x1 = e.touches[1].clientX - offsetLeft; + f2y1 = e.touches[1].clientY - offsetTop; + twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight; + var pan = cy.pan(); + var zoom = cy.zoom(); + distance1 = distance(f1x1, f1y1, f2x1, f2y1); + distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1); + center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2]; + modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap + + var cxtDistThreshold = 200; + var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold; + + if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) { + var near1 = r.findNearestElement(now[0], now[1], true, true); + var near2 = r.findNearestElement(now[2], now[3], true, true); + + if (near1 && near1.isNode()) { + near1.activate().emit({ + originalEvent: e, + type: 'cxttapstart', + position: { + x: now[0], + y: now[1] + } + }); + r.touchData.start = near1; + } else if (near2 && near2.isNode()) { + near2.activate().emit({ + originalEvent: e, + type: 'cxttapstart', + position: { + x: now[0], + y: now[1] + } + }); + r.touchData.start = near2; + } else { + cy.emit({ + originalEvent: e, + type: 'cxttapstart', + position: { + x: now[0], + y: now[1] + } + }); + } + + if (r.touchData.start) { + r.touchData.start._private.grabbed = false; + } + + r.touchData.cxt = true; + r.touchData.cxtDragged = false; + r.data.bgActivePosistion = undefined; + r.redraw(); + return; + } + } + + if (e.touches[2]) { + // ignore + // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...) + if (cy.boxSelectionEnabled()) { + e.preventDefault(); + } + } else if (e.touches[1]) ; else if (e.touches[0]) { + var nears = r.findNearestElements(now[0], now[1], true, true); + var near = nears[0]; + + if (near != null) { + near.activate(); + r.touchData.start = near; + r.touchData.starts = nears; + + if (r.nodeIsGrabbable(near)) { + var draggedEles = r.dragData.touchDragEles = cy.collection(); + var selectedNodes = null; + r.redrawHint('eles', true); + r.redrawHint('drag', true); + + if (near.selected()) { + // reset drag elements, since near will be added again + selectedNodes = cy.$(function (ele) { + return ele.selected() && r.nodeIsGrabbable(ele); + }); + addNodesToDrag(selectedNodes, { + addToList: draggedEles + }); + } else { + addNodeToDrag(near, { + addToList: draggedEles + }); + } + + setGrabTarget(near); + + var makeEvent = function makeEvent(type) { + return { + originalEvent: e, + type: type, + position: { + x: now[0], + y: now[1] + } + }; + }; + + near.emit(makeEvent('grabon')); + + if (selectedNodes) { + selectedNodes.forEach(function (n) { + n.emit(makeEvent('grab')); + }); + } else { + near.emit(makeEvent('grab')); + } + } + } + + triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, { + x: now[0], + y: now[1] + }); + + if (near == null) { + r.data.bgActivePosistion = { + x: pos[0], + y: pos[1] + }; + r.redrawHint('select', true); + r.redraw(); + } // Tap, taphold + // ----- + + + r.touchData.singleTouchMoved = false; + r.touchData.singleTouchStartTime = +new Date(); + clearTimeout(r.touchData.tapholdTimeout); + r.touchData.tapholdTimeout = setTimeout(function () { + if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect + && !r.touchData.selecting // box selection shouldn't allow taphold through + ) { + triggerEvents(r.touchData.start, ['taphold'], e, { + x: now[0], + y: now[1] + }); + } + }, r.tapholdDuration); + } + + if (e.touches.length >= 1) { + var sPos = r.touchData.startPosition = []; + + for (var i = 0; i < now.length; i++) { + sPos[i] = earlier[i] = now[i]; + } + + var touch0 = e.touches[0]; + r.touchData.startGPosition = [touch0.clientX, touch0.clientY]; + } + }, false); + var touchmoveHandler; + r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) { + // eslint-disable-line no-undef + var capture = r.touchData.capture; + + if (!capture && !eventInContainer(e)) { + return; + } + + var select = r.selection; + var cy = r.cy; + var now = r.touchData.now; + var earlier = r.touchData.earlier; + var zoom = cy.zoom(); + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } + + var startGPos = r.touchData.startGPosition; + var isOverThresholdDrag; + + if (capture && e.touches[0] && startGPos) { + var disp = []; + + for (var j = 0; j < now.length; j++) { + disp[j] = now[j] - earlier[j]; + } + + var dx = e.touches[0].clientX - startGPos[0]; + var dx2 = dx * dx; + var dy = e.touches[0].clientY - startGPos[1]; + var dy2 = dy * dy; + var dist2 = dx2 + dy2; + isOverThresholdDrag = dist2 >= r.touchTapThreshold2; + } // context swipe cancelling + + + if (capture && r.touchData.cxt) { + e.preventDefault(); + var f1x2 = e.touches[0].clientX - offsetLeft, + f1y2 = e.touches[0].clientY - offsetTop; + var f2x2 = e.touches[1].clientX - offsetLeft, + f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 ); + + var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2); + var factorSq = distance2Sq / distance1Sq; + var distThreshold = 150; + var distThresholdSq = distThreshold * distThreshold; + var factorThreshold = 1.5; + var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases + + if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) { + r.touchData.cxt = false; + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + var cxtEvt = { + originalEvent: e, + type: 'cxttapend', + position: { + x: now[0], + y: now[1] + } + }; + + if (r.touchData.start) { + r.touchData.start.unactivate().emit(cxtEvt); + r.touchData.start = null; + } else { + cy.emit(cxtEvt); + } + } + } // context swipe + + + if (capture && r.touchData.cxt) { + var cxtEvt = { + originalEvent: e, + type: 'cxtdrag', + position: { + x: now[0], + y: now[1] + } + }; + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + + if (r.touchData.start) { + r.touchData.start.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + + if (r.touchData.start) { + r.touchData.start._private.grabbed = false; + } + + r.touchData.cxtDragged = true; + var near = r.findNearestElement(now[0], now[1], true, true); + + if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) { + if (r.touchData.cxtOver) { + r.touchData.cxtOver.emit({ + originalEvent: e, + type: 'cxtdragout', + position: { + x: now[0], + y: now[1] + } + }); + } + + r.touchData.cxtOver = near; + + if (near) { + near.emit({ + originalEvent: e, + type: 'cxtdragover', + position: { + x: now[0], + y: now[1] + } + }); + } + } // box selection + + } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) { + e.preventDefault(); + r.data.bgActivePosistion = undefined; + this.lastThreeTouch = +new Date(); + + if (!r.touchData.selecting) { + cy.emit({ + originalEvent: e, + type: 'boxstart', + position: { + x: now[0], + y: now[1] + } + }); + } + + r.touchData.selecting = true; + r.touchData.didSelect = true; + select[4] = 1; + + if (!select || select.length === 0 || select[0] === undefined) { + select[0] = (now[0] + now[2] + now[4]) / 3; + select[1] = (now[1] + now[3] + now[5]) / 3; + select[2] = (now[0] + now[2] + now[4]) / 3 + 1; + select[3] = (now[1] + now[3] + now[5]) / 3 + 1; + } else { + select[2] = (now[0] + now[2] + now[4]) / 3; + select[3] = (now[1] + now[3] + now[5]) / 3; + } + + r.redrawHint('select', true); + r.redraw(); // pinch to zoom + } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom + && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) { + // two fingers => pinch to zoom + e.preventDefault(); + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + var draggedEles = r.dragData.touchDragEles; + + if (draggedEles) { + r.redrawHint('drag', true); + + for (var i = 0; i < draggedEles.length; i++) { + var de_p = draggedEles[i]._private; + de_p.grabbed = false; + de_p.rscratch.inDragLayer = false; + } + } + + var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2 + + var f1x2 = e.touches[0].clientX - offsetLeft, + f1y2 = e.touches[0].clientY - offsetTop; + var f2x2 = e.touches[1].clientX - offsetLeft, + f2y2 = e.touches[1].clientY - offsetTop; + var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 ); + // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq ); + + var factor = distance2 / distance1; + + if (twoFingersStartInside) { + // delta finger1 + var df1x = f1x2 - f1x1; + var df1y = f1y2 - f1y1; // delta finger 2 + + var df2x = f2x2 - f2x1; + var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement + // i.e. so pinching cancels out and moving together pans + + var tx = (df1x + df2x) / 2; + var ty = (df1y + df2y) / 2; // now calculate the zoom + + var zoom1 = cy.zoom(); + var zoom2 = zoom1 * factor; + var pan1 = cy.pan(); // the model center point converted to the current rendered pos + + var ctrx = modelCenter1[0] * zoom1 + pan1.x; + var ctry = modelCenter1[1] * zoom1 + pan1.y; + var pan2 = { + x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx, + y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry + }; // remove dragged eles + + if (_start && _start.active()) { + var draggedEles = r.dragData.touchDragEles; + freeDraggedElements(draggedEles); + r.redrawHint('drag', true); + r.redrawHint('eles', true); + + _start.unactivate().emit('freeon'); + + draggedEles.emit('free'); + + if (r.dragData.didDrag) { + _start.emit('dragfreeon'); + + draggedEles.emit('dragfree'); + } + } + + cy.viewport({ + zoom: zoom2, + pan: pan2, + cancelOnFailedZoom: true + }); + cy.emit('pinchzoom'); + distance1 = distance2; + f1x1 = f1x2; + f1y1 = f1y2; + f2x1 = f2x2; + f2y1 = f2y2; + r.pinching = true; + } // Re-project + + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } + } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning + ) { + var start = r.touchData.start; + var last = r.touchData.last; + var near; + + if (!r.hoverData.draggingEles && !r.swipePanning) { + near = r.findNearestElement(now[0], now[1], true, true); + } + + if (capture && start != null) { + e.preventDefault(); + } // dragging nodes + + + if (capture && start != null && r.nodeIsDraggable(start)) { + if (isOverThresholdDrag) { + // then dragging can happen + var draggedEles = r.dragData.touchDragEles; + var justStartedDrag = !r.dragData.didDrag; + + if (justStartedDrag) { + addNodesToDrag(draggedEles, { + inDragLayer: true + }); + } + + r.dragData.didDrag = true; + var totalShift = { + x: 0, + y: 0 + }; + + if (number(disp[0]) && number(disp[1])) { + totalShift.x += disp[0]; + totalShift.y += disp[1]; + + if (justStartedDrag) { + r.redrawHint('eles', true); + var dragDelta = r.touchData.dragDelta; + + if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { + totalShift.x += dragDelta[0]; + totalShift.y += dragDelta[1]; + } + } + } + + r.hoverData.draggingEles = true; + draggedEles.silentShift(totalShift).emit('position drag'); + r.redrawHint('drag', true); + + if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) { + r.redrawHint('eles', true); + } + + r.redraw(); + } else { + // otherise keep track of drag delta for later + var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || []; + + if (dragDelta.length === 0) { + dragDelta.push(disp[0]); + dragDelta.push(disp[1]); + } else { + dragDelta[0] += disp[0]; + dragDelta[1] += disp[1]; + } + } + } // touchmove + + + { + triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, { + x: now[0], + y: now[1] + }); + + if ((!start || !start.grabbed()) && near != last) { + if (last) { + last.emit({ + originalEvent: e, + type: 'tapdragout', + position: { + x: now[0], + y: now[1] + } + }); + } + + if (near) { + near.emit({ + originalEvent: e, + type: 'tapdragover', + position: { + x: now[0], + y: now[1] + } + }); + } + } + + r.touchData.last = near; + } // check to cancel taphold + + if (capture) { + for (var i = 0; i < now.length; i++) { + if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) { + r.touchData.singleTouchMoved = true; + } + } + } // panning + + + if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) { + var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts); + + if (allowPassthrough) { + e.preventDefault(); + + if (!r.data.bgActivePosistion) { + r.data.bgActivePosistion = array2point(r.touchData.startPosition); + } + + if (r.swipePanning) { + cy.panBy({ + x: disp[0] * zoom, + y: disp[1] * zoom + }); + cy.emit('dragpan'); + } else if (isOverThresholdDrag) { + r.swipePanning = true; + cy.panBy({ + x: dx * zoom, + y: dy * zoom + }); + cy.emit('dragpan'); + + if (start) { + start.unactivate(); + r.redrawHint('select', true); + r.touchData.start = null; + } + } + } // Re-project + + + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + } + + for (var j = 0; j < now.length; j++) { + earlier[j] = now[j]; + } // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning + + + if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) { + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + r.redraw(); + } + }, false); + var touchcancelHandler; + r.registerBinding(window, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) { + // eslint-disable-line no-unused-vars + var start = r.touchData.start; + r.touchData.capture = false; + + if (start) { + start.unactivate(); + } + }); + var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp; + r.registerBinding(window, 'touchend', touchendHandler = function touchendHandler(e) { + // eslint-disable-line no-unused-vars + var start = r.touchData.start; + var capture = r.touchData.capture; + + if (capture) { + if (e.touches.length === 0) { + r.touchData.capture = false; + } + + e.preventDefault(); + } else { + return; + } + + var select = r.selection; + r.swipePanning = false; + r.hoverData.draggingEles = false; + var cy = r.cy; + var zoom = cy.zoom(); + var now = r.touchData.now; + var earlier = r.touchData.earlier; + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } + + if (start) { + start.unactivate(); + } + + var ctxTapend; + + if (r.touchData.cxt) { + ctxTapend = { + originalEvent: e, + type: 'cxttapend', + position: { + x: now[0], + y: now[1] + } + }; + + if (start) { + start.emit(ctxTapend); + } else { + cy.emit(ctxTapend); + } + + if (!r.touchData.cxtDragged) { + var ctxTap = { + originalEvent: e, + type: 'cxttap', + position: { + x: now[0], + y: now[1] + } + }; + + if (start) { + start.emit(ctxTap); + } else { + cy.emit(ctxTap); + } + } + + if (r.touchData.start) { + r.touchData.start._private.grabbed = false; + } + + r.touchData.cxt = false; + r.touchData.start = null; + r.redraw(); + return; + } // no more box selection if we don't have three fingers + + + if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) { + r.touchData.selecting = false; + var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); + select[0] = undefined; + select[1] = undefined; + select[2] = undefined; + select[3] = undefined; + select[4] = 0; + r.redrawHint('select', true); + cy.emit({ + type: 'boxend', + originalEvent: e, + position: { + x: now[0], + y: now[1] + } + }); + + var eleWouldBeSelected = function eleWouldBeSelected(ele) { + return ele.selectable() && !ele.selected(); + }; + + box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); + + if (box.nonempty()) { + r.redrawHint('eles', true); + } + + r.redraw(); + } + + if (start != null) { + start.unactivate(); + } + + if (e.touches[2]) { + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) { + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + var draggedEles = r.dragData.touchDragEles; + + if (start != null) { + var startWasGrabbed = start._private.grabbed; + freeDraggedElements(draggedEles); + r.redrawHint('drag', true); + r.redrawHint('eles', true); + + if (startWasGrabbed) { + start.emit('freeon'); + draggedEles.emit('free'); + + if (r.dragData.didDrag) { + start.emit('dragfreeon'); + draggedEles.emit('dragfree'); + } + } + + triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { + x: now[0], + y: now[1] + }); + start.unactivate(); + r.touchData.start = null; + } else { + var near = r.findNearestElement(now[0], now[1], true, true); + triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { + x: now[0], + y: now[1] + }); + } + + var dx = r.touchData.startPosition[0] - now[0]; + var dx2 = dx * dx; + var dy = r.touchData.startPosition[1] - now[1]; + var dy2 = dy * dy; + var dist2 = dx2 + dy2; + var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch + + if (!r.touchData.singleTouchMoved) { + if (!start) { + cy.$(':selected').unselect(['tapunselect']); + } + + triggerEvents(start, ['tap', 'vclick'], e, { + x: now[0], + y: now[1] + }); + didDoubleTouch = false; + + if (e.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) { + touchTimeout && clearTimeout(touchTimeout); + didDoubleTouch = true; + prevTouchTimeStamp = null; + triggerEvents(start, ['dbltap', 'vdblclick'], e, { + x: now[0], + y: now[1] + }); + } else { + touchTimeout = setTimeout(function () { + if (didDoubleTouch) return; + triggerEvents(start, ['onetap', 'voneclick'], e, { + x: now[0], + y: now[1] + }); + }, cy.multiClickDebounceTime()); + prevTouchTimeStamp = e.timeStamp; + } + } // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance + + + if (start != null && !r.dragData.didDrag // didn't drag nodes around + && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection + ) { + if (cy.selectionType() === 'single') { + cy.$(isSelected).unmerge(start).unselect(['tapunselect']); + start.select(['tapselect']); + } else { + if (start.selected()) { + start.unselect(['tapunselect']); + } else { + start.select(['tapselect']); + } + } + + r.redrawHint('eles', true); + } + + r.touchData.singleTouchMoved = true; + } + + for (var j = 0; j < now.length; j++) { + earlier[j] = now[j]; + } + + r.dragData.didDrag = false; // reset for next touchstart + + if (e.touches.length === 0) { + r.touchData.dragDelta = []; + r.touchData.startPosition = null; + r.touchData.startGPosition = null; + r.touchData.didSelect = false; + } + + if (e.touches.length < 2) { + if (e.touches.length === 1) { + // the old start global pos'n may not be the same finger that remains + r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY]; + } + + r.pinching = false; + r.redrawHint('eles', true); + r.redraw(); + } //r.redraw(); + + }, false); // fallback compatibility layer for ms pointer events + + if (typeof TouchEvent === 'undefined') { + var pointers = []; + + var makeTouch = function makeTouch(e) { + return { + clientX: e.clientX, + clientY: e.clientY, + force: 1, + identifier: e.pointerId, + pageX: e.pageX, + pageY: e.pageY, + radiusX: e.width / 2, + radiusY: e.height / 2, + screenX: e.screenX, + screenY: e.screenY, + target: e.target + }; + }; + + var makePointer = function makePointer(e) { + return { + event: e, + touch: makeTouch(e) + }; + }; + + var addPointer = function addPointer(e) { + pointers.push(makePointer(e)); + }; + + var removePointer = function removePointer(e) { + for (var i = 0; i < pointers.length; i++) { + var p = pointers[i]; + + if (p.event.pointerId === e.pointerId) { + pointers.splice(i, 1); + return; + } + } + }; + + var updatePointer = function updatePointer(e) { + var p = pointers.filter(function (p) { + return p.event.pointerId === e.pointerId; + })[0]; + p.event = e; + p.touch = makeTouch(e); + }; + + var addTouchesToEvent = function addTouchesToEvent(e) { + e.touches = pointers.map(function (p) { + return p.touch; + }); + }; + + var pointerIsMouse = function pointerIsMouse(e) { + return e.pointerType === 'mouse' || e.pointerType === 4; + }; + + r.registerBinding(r.container, 'pointerdown', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + e.preventDefault(); + addPointer(e); + addTouchesToEvent(e); + touchstartHandler(e); + }); + r.registerBinding(r.container, 'pointerup', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + removePointer(e); + addTouchesToEvent(e); + touchendHandler(e); + }); + r.registerBinding(r.container, 'pointercancel', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + removePointer(e); + addTouchesToEvent(e); + touchcancelHandler(e); + }); + r.registerBinding(r.container, 'pointermove', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + e.preventDefault(); + updatePointer(e); + addTouchesToEvent(e); + touchmoveHandler(e); + }); + } +}; + +var BRp$d = {}; + +BRp$d.generatePolygon = function (name, points) { + return this.nodeShapes[name] = { + renderer: this, + name: name, + points: points, + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding); + } + }; +}; + +BRp$d.generateEllipse = function () { + return this.nodeShapes['ellipse'] = { + renderer: this, + name: 'ellipse', + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + return checkInEllipse(x, y, width, height, centerX, centerY, padding); + } + }; +}; + +BRp$d.generateRoundPolygon = function (name, points) { + // Pre-compute control points + // Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute + // the unit vectors. + // For simplicity the layout will be: + // [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ] + var allPoints = new Array(points.length * 2); + + for (var i = 0; i < points.length / 2; i++) { + var sourceIndex = i * 2; + var destIndex = void 0; + + if (i < points.length / 2 - 1) { + destIndex = (i + 1) * 2; + } else { + destIndex = 0; + } + + allPoints[i * 4] = points[sourceIndex]; + allPoints[i * 4 + 1] = points[sourceIndex + 1]; + var xDest = points[destIndex] - points[sourceIndex]; + var yDest = points[destIndex + 1] - points[sourceIndex + 1]; + var norm = Math.sqrt(xDest * xDest + yDest * yDest); + allPoints[i * 4 + 2] = xDest / norm; + allPoints[i * 4 + 3] = yDest / norm; + } + + return this.nodeShapes[name] = { + renderer: this, + name: name, + points: allPoints, + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height); + } + }; +}; + +BRp$d.generateRoundRectangle = function () { + return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = { + renderer: this, + name: 'round-rectangle', + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + var cornerRadius = getRoundRectangleRadius(width, height); + var diam = cornerRadius * 2; // Check hBox + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { + return true; + } // Check top left quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) { + return true; + } // Check top right quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) { + return true; + } // Check bottom right quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } // Check bottom left quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } + + return false; + } + }; +}; + +BRp$d.generateCutRectangle = function () { + return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = { + renderer: this, + name: 'cut-rectangle', + cornerLength: getCutRectangleCornerLength(), + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) { + var cl = this.cornerLength; + var hh = height / 2; + var hw = width / 2; + var xBegin = centerX - hw; + var xEnd = centerX + hw; + var yBegin = centerY - hh; + var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5] + + return { + topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl], + topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl], + bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl], + bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl] + }; + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); + var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]); + return polygonIntersectLine(x, y, pts, nodeX, nodeY); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + // Check hBox + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) { + return true; + } + + var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY); + return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft); + } + }; +}; + +BRp$d.generateBarrel = function () { + return this.nodeShapes['barrel'] = { + renderer: this, + name: 'barrel', + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + // use two fixed t values for the bezier curve approximation + var t0 = 0.15; + var t1 = 0.5; + var t2 = 0.85; + var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); + + var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) { + // approximate curve pts based on the two t values + var m0 = qbezierPtAt({ + x: pts[0], + y: pts[1] + }, { + x: pts[2], + y: pts[3] + }, { + x: pts[4], + y: pts[5] + }, t0); + var m1 = qbezierPtAt({ + x: pts[0], + y: pts[1] + }, { + x: pts[2], + y: pts[3] + }, { + x: pts[4], + y: pts[5] + }, t1); + var m2 = qbezierPtAt({ + x: pts[0], + y: pts[1] + }, { + x: pts[2], + y: pts[3] + }, { + x: pts[4], + y: pts[5] + }, t2); + return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]]; + }; + + var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft)); + return polygonIntersectLine(x, y, pts, nodeX, nodeY); + }, + generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) { + var hh = height / 2; + var hw = width / 2; + var xBegin = centerX - hw; + var xEnd = centerX + hw; + var yBegin = centerY - hh; + var yEnd = centerY + hh; + var curveConstants = getBarrelCurveConstants(width, height); + var hOffset = curveConstants.heightOffset; + var wOffset = curveConstants.widthOffset; + var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5] + + var pts = { + topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin], + topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset], + bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd], + bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset] + }; + pts.topLeft.isTop = true; + pts.topRight.isTop = true; + pts.bottomLeft.isBottom = true; + pts.bottomRight.isBottom = true; + return pts; + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + var curveConstants = getBarrelCurveConstants(width, height); + var hOffset = curveConstants.heightOffset; + var wOffset = curveConstants.widthOffset; // Check hBox + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) { + return true; + } + + var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY); + + var getCurveT = function getCurveT(x, y, curvePts) { + var x0 = curvePts[4]; + var x1 = curvePts[2]; + var x2 = curvePts[0]; + var y0 = curvePts[5]; // var y1 = curvePts[ 3 ]; + + var y2 = curvePts[1]; + var xMin = Math.min(x0, x2); + var xMax = Math.max(x0, x2); + var yMin = Math.min(y0, y2); + var yMax = Math.max(y0, y2); + + if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) { + var coeff = bezierPtsToQuadCoeff(x0, x1, x2); + var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x); + var validRoots = roots.filter(function (r) { + return 0 <= r && r <= 1; + }); + + if (validRoots.length > 0) { + return validRoots[0]; + } + } + + return null; + }; + + var curveRegions = Object.keys(barrelCurvePts); + + for (var i = 0; i < curveRegions.length; i++) { + var corner = curveRegions[i]; + var cornerPts = barrelCurvePts[corner]; + var t = getCurveT(x, y, cornerPts); + + if (t == null) { + continue; + } + + var y0 = cornerPts[5]; + var y1 = cornerPts[3]; + var y2 = cornerPts[1]; + var bezY = qbezierAt(y0, y1, y2, t); + + if (cornerPts.isTop && bezY <= y) { + return true; + } + + if (cornerPts.isBottom && y <= bezY) { + return true; + } + } + + return false; + } + }; +}; + +BRp$d.generateBottomRoundrectangle = function () { + return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = { + renderer: this, + name: 'bottom-round-rectangle', + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + var topStartX = nodeX - (width / 2 + padding); + var topStartY = nodeY - (height / 2 + padding); + var topEndY = topStartY; + var topEndX = nodeX + (width / 2 + padding); + var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); + + if (topIntersections.length > 0) { + return topIntersections; + } + + return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + var cornerRadius = getRoundRectangleRadius(width, height); + var diam = 2 * cornerRadius; // Check hBox + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { + return true; + } // check non-rounded top side + + + var outerWidth = width / 2 + 2 * padding; + var outerHeight = height / 2 + 2 * padding; + var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight]; + + if (pointInsidePolygonPoints(x, y, points)) { + return true; + } // Check bottom right quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } // Check bottom left quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } + + return false; + } + }; +}; + +BRp$d.registerNodeShapes = function () { + var nodeShapes = this.nodeShapes = {}; + var renderer = this; + this.generateEllipse(); + this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0)); + this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0)); + this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0)); + nodeShapes['square'] = nodeShapes['rectangle']; + this.generateRoundRectangle(); + this.generateCutRectangle(); + this.generateBarrel(); + this.generateBottomRoundrectangle(); + { + var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0]; + this.generatePolygon('diamond', diamondPoints); + this.generateRoundPolygon('round-diamond', diamondPoints); + } + this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0)); + this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0)); + this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0)); + this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0)); + this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0)); + this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0)); + this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0)); + this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0)); + var star5Points = new Array(20); + { + var outerPoints = generateUnitNgonPoints(5, 0); + var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller + + var innerRadius = 0.5 * (3 - Math.sqrt(5)); + innerRadius *= 1.57; + + for (var i = 0; i < innerPoints.length / 2; i++) { + innerPoints[i * 2] *= innerRadius; + innerPoints[i * 2 + 1] *= innerRadius; + } + + for (var i = 0; i < 20 / 4; i++) { + star5Points[i * 4] = outerPoints[i * 2]; + star5Points[i * 4 + 1] = outerPoints[i * 2 + 1]; + star5Points[i * 4 + 2] = innerPoints[i * 2]; + star5Points[i * 4 + 3] = innerPoints[i * 2 + 1]; + } + } + star5Points = fitPolygonToSquare(star5Points); + this.generatePolygon('star', star5Points); + this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]); + this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]); + this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); + { + var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; + this.generatePolygon('tag', tagPoints); + this.generateRoundPolygon('round-tag', tagPoints); + } + + nodeShapes.makePolygon = function (points) { + // use caching on user-specified polygons so they are as fast as native shapes + var key = points.join('$'); + var name = 'polygon-' + key; + var shape; + + if (shape = this[name]) { + // got cached shape + return shape; + } // create and cache new shape + + + return renderer.generatePolygon(name, points); + }; +}; + +var BRp$e = {}; + +BRp$e.timeToRender = function () { + return this.redrawTotalTime / this.redrawCount; +}; + +BRp$e.redraw = function (options) { + options = options || staticEmptyObject(); + var r = this; + + if (r.averageRedrawTime === undefined) { + r.averageRedrawTime = 0; + } + + if (r.lastRedrawTime === undefined) { + r.lastRedrawTime = 0; + } + + if (r.lastDrawTime === undefined) { + r.lastDrawTime = 0; + } + + r.requestedFrame = true; + r.renderOptions = options; +}; + +BRp$e.beforeRender = function (fn, priority) { + // the renderer can't add tick callbacks when destroyed + if (this.destroyed) { + return; + } + + if (priority == null) { + error('Priority is not optional for beforeRender'); + } + + var cbs = this.beforeRenderCallbacks; + cbs.push({ + fn: fn, + priority: priority + }); // higher priority callbacks executed first + + cbs.sort(function (a, b) { + return b.priority - a.priority; + }); +}; + +var beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) { + var cbs = r.beforeRenderCallbacks; + + for (var i = 0; i < cbs.length; i++) { + cbs[i].fn(willDraw, startTime); + } +}; + +BRp$e.startRenderLoop = function () { + var r = this; + var cy = r.cy; + + if (r.renderLoopStarted) { + return; + } else { + r.renderLoopStarted = true; + } + + var renderFn = function renderFn(requestTime) { + if (r.destroyed) { + return; + } + + if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) { + beforeRenderCallbacks(r, true, requestTime); + var startTime = performanceNow(); + r.render(r.renderOptions); + var endTime = r.lastDrawTime = performanceNow(); + + if (r.averageRedrawTime === undefined) { + r.averageRedrawTime = endTime - startTime; + } + + if (r.redrawCount === undefined) { + r.redrawCount = 0; + } + + r.redrawCount++; + + if (r.redrawTotalTime === undefined) { + r.redrawTotalTime = 0; + } + + var duration = endTime - startTime; + r.redrawTotalTime += duration; + r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily + + r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2; + r.requestedFrame = false; + } else { + beforeRenderCallbacks(r, false, requestTime); + } + + r.skipFrame = false; + requestAnimationFrame$1(renderFn); + }; + + requestAnimationFrame$1(renderFn); +}; + +var BaseRenderer = function BaseRenderer(options) { + this.init(options); +}; + +var BR = BaseRenderer; +var BRp$f = BR.prototype; +BRp$f.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl']; + +BRp$f.init = function (options) { + var r = this; + r.options = options; + r.cy = options.cy; + var ctr = r.container = options.cy.container(); // prepend a stylesheet in the head such that + + if (window$1) { + var document = window$1.document; + var head = document.head; + var stylesheetId = '__________cytoscape_stylesheet'; + var className = '__________cytoscape_container'; + var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null; + + if (ctr.className.indexOf(className) < 0) { + ctr.className = (ctr.className || '') + ' ' + className; + } + + if (!stylesheetAlreadyExists) { + var stylesheet = document.createElement('style'); + stylesheet.id = stylesheetId; + stylesheet.innerHTML = '.' + className + ' { position: relative; }'; + head.insertBefore(stylesheet, head.children[0]); // first so lowest priority + } + + var computedStyle = window$1.getComputedStyle(ctr); + var position = computedStyle.getPropertyValue('position'); + + if (position === 'static') { + warn('A Cytoscape container has style position:static and so can not use UI extensions properly'); + } + } + + r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag + + r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data + + r.hoverData = { + down: null, + last: null, + downTime: null, + triggerMode: null, + dragging: false, + initialPan: [null, null], + capture: false + }; + r.dragData = { + possibleDragElements: [] + }; + r.touchData = { + start: null, + capture: false, + // These 3 fields related to tap, taphold events + startPosition: [null, null, null, null, null, null], + singleTouchStartTime: null, + singleTouchMoved: true, + now: [null, null, null, null, null, null], + earlier: [null, null, null, null, null, null] + }; + r.redraws = 0; + r.showFps = options.showFps; + r.debug = options.debug; + r.hideEdgesOnViewport = options.hideEdgesOnViewport; + r.textureOnViewport = options.textureOnViewport; + r.wheelSensitivity = options.wheelSensitivity; + r.motionBlurEnabled = options.motionBlur; // on by default + + r.forcedPixelRatio = number(options.pixelRatio) ? options.pixelRatio : null; + r.motionBlur = options.motionBlur; // for initial kick off + + r.motionBlurOpacity = options.motionBlurOpacity; + r.motionBlurTransparency = 1 - r.motionBlurOpacity; + r.motionBlurPxRatio = 1; + r.mbPxRBlurry = 1; //0.8; + + r.minMbLowQualFrames = 4; + r.fullQualityMb = false; + r.clearedForMotionBlur = []; + r.desktopTapThreshold = options.desktopTapThreshold; + r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold; + r.touchTapThreshold = options.touchTapThreshold; + r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold; + r.tapholdDuration = 500; + r.bindings = []; + r.beforeRenderCallbacks = []; + r.beforeRenderPriorities = { + // higher priority execs before lower one + animations: 400, + eleCalcs: 300, + eleTxrDeq: 200, + lyrTxrDeq: 150, + lyrTxrSkip: 100 + }; + r.registerNodeShapes(); + r.registerArrowShapes(); + r.registerCalculationListeners(); +}; + +BRp$f.notify = function (eventName, eles) { + var r = this; + var cy = r.cy; // the renderer can't be notified after it's destroyed + + if (this.destroyed) { + return; + } + + if (eventName === 'init') { + r.load(); + return; + } + + if (eventName === 'destroy') { + r.destroy(); + return; + } + + if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') { + r.invalidateCachedZSortedEles(); + } + + if (eventName === 'viewport') { + r.redrawHint('select', true); + } + + if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') { + r.invalidateContainerClientCoordsCache(); + r.matchCanvasSize(r.container); + } + + r.redrawHint('eles', true); + r.redrawHint('drag', true); + this.startRenderLoop(); + this.redraw(); +}; + +BRp$f.destroy = function () { + var r = this; + r.destroyed = true; + r.cy.stopAnimationLoop(); + + for (var i = 0; i < r.bindings.length; i++) { + var binding = r.bindings[i]; + var b = binding; + var tgt = b.target; + (tgt.off || tgt.removeEventListener).apply(tgt, b.args); + } + + r.bindings = []; + r.beforeRenderCallbacks = []; + r.onUpdateEleCalcsFns = []; + + if (r.removeObserver) { + r.removeObserver.disconnect(); + } + + if (r.styleObserver) { + r.styleObserver.disconnect(); + } + + if (r.resizeObserver) { + r.resizeObserver.disconnect(); + } + + if (r.labelCalcDiv) { + try { + document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef + } catch (e) {// ie10 issue #1014 + } + } +}; + +BRp$f.isHeadless = function () { + return false; +}; + +[BRp, BRp$a, BRp$b, BRp$c, BRp$d, BRp$e].forEach(function (props) { + extend(BRp$f, props); +}); + +var fullFpsTime = 1000 / 60; // assume 60 frames per second + +var defs = { + setupDequeueing: function setupDequeueing(opts) { + return function setupDequeueingImpl() { + var self = this; + var r = this.renderer; + + if (self.dequeueingSetup) { + return; + } else { + self.dequeueingSetup = true; + } + + var queueRedraw = util$2(function () { + r.redrawHint('eles', true); + r.redrawHint('drag', true); + r.redraw(); + }, opts.deqRedrawThreshold); + + var dequeue = function dequeue(willDraw, frameStartTime) { + var startTime = performanceNow(); + var avgRenderTime = r.averageRedrawTime; + var renderTime = r.lastRedrawTime; + var deqd = []; + var extent = r.cy.extent(); + var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style + // queue won't automatically be flushed before dequeueing starts + + if (!willDraw) { + r.flushRenderedStyleQueue(); + } + + while (true) { + // eslint-disable-line no-constant-condition + var now = performanceNow(); + var duration = now - startTime; + var frameDuration = now - frameStartTime; + + if (renderTime < fullFpsTime) { + // if we're rendering faster than the ideal fps, then do dequeueing + // during all of the remaining frame time + var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0); + + if (frameDuration >= opts.deqFastCost * timeAvailable) { + break; + } + } else { + if (willDraw) { + if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) { + break; + } + } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) { + break; + } + } + + var thisDeqd = opts.deq(self, pixelRatio, extent); + + if (thisDeqd.length > 0) { + for (var i = 0; i < thisDeqd.length; i++) { + deqd.push(thisDeqd[i]); + } + } else { + break; + } + } // callbacks on dequeue + + + if (deqd.length > 0) { + opts.onDeqd(self, deqd); + + if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) { + queueRedraw(); + } + } + }; + + var priority = opts.priority || noop$1; + r.beforeRender(dequeue, priority(self)); + }; + } +}; + +// Uses keys so elements may share the same cache. + +var ElementTextureCacheLookup = +/*#__PURE__*/ +function () { + function ElementTextureCacheLookup(getKey) { + var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify; + + _classCallCheck(this, ElementTextureCacheLookup); + + this.idsByKey = new Map$1$1(); + this.keyForId = new Map$1$1(); + this.cachesByLvl = new Map$1$1(); + this.lvls = []; + this.getKey = getKey; + this.doesEleInvalidateKey = doesEleInvalidateKey; + } + + _createClass(ElementTextureCacheLookup, [{ + key: "getIdsFor", + value: function getIdsFor(key) { + if (key == null) { + error("Can not get id list for null key"); + } + + var idsByKey = this.idsByKey; + var ids = this.idsByKey.get(key); + + if (!ids) { + ids = new Set$1$1(); + idsByKey.set(key, ids); + } + + return ids; + } + }, { + key: "addIdForKey", + value: function addIdForKey(key, id) { + if (key != null) { + this.getIdsFor(key).add(id); + } + } + }, { + key: "deleteIdForKey", + value: function deleteIdForKey(key, id) { + if (key != null) { + this.getIdsFor(key)["delete"](id); + } + } + }, { + key: "getNumberOfIdsForKey", + value: function getNumberOfIdsForKey(key) { + if (key == null) { + return 0; + } else { + return this.getIdsFor(key).size; + } + } + }, { + key: "updateKeyMappingFor", + value: function updateKeyMappingFor(ele) { + var id = ele.id(); + var prevKey = this.keyForId.get(id); + var currKey = this.getKey(ele); + this.deleteIdForKey(prevKey, id); + this.addIdForKey(currKey, id); + this.keyForId.set(id, currKey); + } + }, { + key: "deleteKeyMappingFor", + value: function deleteKeyMappingFor(ele) { + var id = ele.id(); + var prevKey = this.keyForId.get(id); + this.deleteIdForKey(prevKey, id); + this.keyForId["delete"](id); + } + }, { + key: "keyHasChangedFor", + value: function keyHasChangedFor(ele) { + var id = ele.id(); + var prevKey = this.keyForId.get(id); + var newKey = this.getKey(ele); + return prevKey !== newKey; + } + }, { + key: "isInvalid", + value: function isInvalid(ele) { + return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele); + } + }, { + key: "getCachesAt", + value: function getCachesAt(lvl) { + var cachesByLvl = this.cachesByLvl, + lvls = this.lvls; + var caches = cachesByLvl.get(lvl); + + if (!caches) { + caches = new Map$1$1(); + cachesByLvl.set(lvl, caches); + lvls.push(lvl); + } + + return caches; + } + }, { + key: "getCache", + value: function getCache(key, lvl) { + return this.getCachesAt(lvl).get(key); + } + }, { + key: "get", + value: function get(ele, lvl) { + var key = this.getKey(ele); + var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys + + if (cache != null) { + this.updateKeyMappingFor(ele); + } + + return cache; + } + }, { + key: "getForCachedKey", + value: function getForCachedKey(ele, lvl) { + var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key + + var cache = this.getCache(key, lvl); + return cache; + } + }, { + key: "hasCache", + value: function hasCache(key, lvl) { + return this.getCachesAt(lvl).has(key); + } + }, { + key: "has", + value: function has(ele, lvl) { + var key = this.getKey(ele); + return this.hasCache(key, lvl); + } + }, { + key: "setCache", + value: function setCache(key, lvl, cache) { + cache.key = key; + this.getCachesAt(lvl).set(key, cache); + } + }, { + key: "set", + value: function set(ele, lvl, cache) { + var key = this.getKey(ele); + this.setCache(key, lvl, cache); + this.updateKeyMappingFor(ele); + } + }, { + key: "deleteCache", + value: function deleteCache(key, lvl) { + this.getCachesAt(lvl)["delete"](key); + } + }, { + key: "delete", + value: function _delete(ele, lvl) { + var key = this.getKey(ele); + this.deleteCache(key, lvl); + } + }, { + key: "invalidateKey", + value: function invalidateKey(key) { + var _this = this; + + this.lvls.forEach(function (lvl) { + return _this.deleteCache(key, lvl); + }); + } // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) + + }, { + key: "invalidate", + value: function invalidate(ele) { + var id = ele.id(); + var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key) + + this.deleteKeyMappingFor(ele); + var entireKeyInvalidated = this.doesEleInvalidateKey(ele); + + if (entireKeyInvalidated) { + // clear mapping for current key + this.invalidateKey(key); + } + + return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0; + } + }]); + + return ElementTextureCacheLookup; +}(); + +var minTxrH = 25; // the size of the texture cache for small height eles (special case) + +var txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up + +var minLvl = -4; // when scaling smaller than that we don't need to re-render + +var maxLvl = 3; // when larger than this scale just render directly (caching is not helpful) + +var maxZoom = 7.99; // beyond this zoom level, layered textures are not used + +var eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps + +var defTxrWidth = 1024; // default/minimum texture width + +var maxTxrW = 1024; // the maximum width of a texture + +var maxTxrH = 1024; // the maximum height of a texture + +var minUtility = 0.2; // if usage of texture is less than this, it is retired + +var maxFullness = 0.8; // fullness of texture after which queue removal is checked + +var maxFullnessChecks = 10; // dequeued after this many checks + +var deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame + +var deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time + +var deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing + +var deqFastCost = 0.9; // % of frame time to be used when >60fps + +var deqRedrawThreshold = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile + +var maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch + +var getTxrReasons = { + dequeue: 'dequeue', + downscale: 'downscale', + highQuality: 'highQuality' +}; +var initDefaults = defaults$1({ + getKey: null, + doesEleInvalidateKey: falsify, + drawElement: null, + getBoundingBox: null, + getRotationPoint: null, + getRotationOffset: null, + isVisible: trueify, + allowEdgeTxrCaching: true, + allowParentTxrCaching: true +}); + +var ElementTextureCache = function ElementTextureCache(renderer, initOptions) { + var self = this; + self.renderer = renderer; + self.onDequeues = []; + var opts = initDefaults(initOptions); + extend(self, opts); + self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey); + self.setupDequeueing(); +}; + +var ETCp = ElementTextureCache.prototype; +ETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed + +ETCp.getTextureQueue = function (txrH) { + var self = this; + self.eleImgCaches = self.eleImgCaches || {}; + return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || []; +}; // the list of usused textures which can be recycled (in use in texture queue) + + +ETCp.getRetiredTextureQueue = function (txrH) { + var self = this; + var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {}; + var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || []; + return rtxtrQ; +}; // queue of element draw requests at different scale levels + + +ETCp.getElementQueue = function () { + var self = this; + var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) { + return b.reqs - a.reqs; + }); + return q; +}; // queue of element draw requests at different scale levels (element id lookup) + + +ETCp.getElementKeyToQueue = function () { + var self = this; + var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {}; + return k2q; +}; + +ETCp.getElement = function (ele, bb, pxRatio, lvl, reason) { + var self = this; + var r = this.renderer; + var zoom = r.cy.zoom(); + var lookup = this.lookup; + + if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) { + return null; + } + + if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) { + return null; + } + + if (lvl == null) { + lvl = Math.ceil(log2(zoom * pxRatio)); + } + + if (lvl < minLvl) { + lvl = minLvl; + } else if (zoom >= maxZoom || lvl > maxLvl) { + return null; + } + + var scale = Math.pow(2, lvl); + var eleScaledH = bb.h * scale; + var eleScaledW = bb.w * scale; + var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale); + + if (!this.isVisible(ele, scaledLabelShown)) { + return null; + } + + var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric + + if (eleCache && eleCache.invalidated) { + eleCache.invalidated = false; + eleCache.texture.invalidatedWidth -= eleCache.width; + } + + if (eleCache) { + return eleCache; + } + + var txrH; // which texture height this ele belongs to + + if (eleScaledH <= minTxrH) { + txrH = minTxrH; + } else if (eleScaledH <= txrStepH) { + txrH = txrStepH; + } else { + txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH; + } + + if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) { + return null; // caching large elements is not efficient + } + + var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end + + var txr = txrQ[txrQ.length - 2]; + + var addNewTxr = function addNewTxr() { + return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW); + }; // try the last one if there is no second last one + + + if (!txr) { + txr = txrQ[txrQ.length - 1]; + } // if the last one doesn't exist, we need a first one + + + if (!txr) { + txr = addNewTxr(); + } // if there's no room in the current texture, we need a new one + + + if (txr.width - txr.usedWidth < eleScaledW) { + txr = addNewTxr(); + } + + var scalableFrom = function scalableFrom(otherCache) { + return otherCache && otherCache.scaledLabelShown === scaledLabelShown; + }; + + var deqing = reason && reason === getTxrReasons.dequeue; + var highQualityReq = reason && reason === getTxrReasons.highQuality; + var downscaleReq = reason && reason === getTxrReasons.downscale; + var higherCache; // the nearest cache with a higher level + + for (var l = lvl + 1; l <= maxLvl; l++) { + var c = lookup.get(ele, l); + + if (c) { + higherCache = c; + break; + } + } + + var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null; + + var downscale = function downscale() { + txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH); + }; // reset ele area in texture + + + txr.context.setTransform(1, 0, 0, 1, 0, 0); + txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH); + + if (scalableFrom(oneUpCache)) { + // then we can relatively cheaply rescale the existing image w/o rerendering + downscale(); + } else if (scalableFrom(higherCache)) { + // then use the higher cache for now and queue the next level down + // to cheaply scale towards the smaller level + if (highQualityReq) { + for (var _l = higherCache.level; _l > lvl; _l--) { + oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale); + } + + downscale(); + } else { + self.queueElement(ele, higherCache.level - 1); + return higherCache; + } + } else { + var lowerCache; // the nearest cache with a lower level + + if (!deqing && !highQualityReq && !downscaleReq) { + for (var _l2 = lvl - 1; _l2 >= minLvl; _l2--) { + var _c = lookup.get(ele, _l2); + + if (_c) { + lowerCache = _c; + break; + } + } + } + + if (scalableFrom(lowerCache)) { + // then use the lower quality cache for now and queue the better one for later + self.queueElement(ele, lvl); + return lowerCache; + } + + txr.context.translate(txr.usedWidth, 0); + txr.context.scale(scale, scale); + this.drawElement(txr.context, ele, bb, scaledLabelShown, false); + txr.context.scale(1 / scale, 1 / scale); + txr.context.translate(-txr.usedWidth, 0); + } + + eleCache = { + x: txr.usedWidth, + texture: txr, + level: lvl, + scale: scale, + width: eleScaledW, + height: eleScaledH, + scaledLabelShown: scaledLabelShown + }; + txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing); + txr.eleCaches.push(eleCache); + lookup.set(ele, lvl, eleCache); + self.checkTextureFullness(txr); + return eleCache; +}; + +ETCp.invalidateElements = function (eles) { + for (var i = 0; i < eles.length; i++) { + this.invalidateElement(eles[i]); + } +}; + +ETCp.invalidateElement = function (ele) { + var self = this; + var lookup = self.lookup; + var caches = []; + var invalid = lookup.isInvalid(ele); + + if (!invalid) { + return; // override the invalidation request if the element key has not changed + } + + for (var lvl = minLvl; lvl <= maxLvl; lvl++) { + var cache = lookup.getForCachedKey(ele, lvl); + + if (cache) { + caches.push(cache); + } + } + + var noOtherElesUseCache = lookup.invalidate(ele); + + if (noOtherElesUseCache) { + for (var i = 0; i < caches.length; i++) { + var _cache = caches[i]; + var txr = _cache.texture; // remove space from the texture it belongs to + + txr.invalidatedWidth += _cache.width; // mark the cache as invalidated + + _cache.invalidated = true; // retire the texture if its utility is low + + self.checkTextureUtility(txr); + } + } // remove from queue since the old req was for the old state + + + self.removeFromQueue(ele); +}; + +ETCp.checkTextureUtility = function (txr) { + // invalidate all entries in the cache if the cache size is small + if (txr.invalidatedWidth >= minUtility * txr.width) { + this.retireTexture(txr); + } +}; + +ETCp.checkTextureFullness = function (txr) { + // if texture has been mostly filled and passed over several times, remove + // it from the queue so we don't need to waste time looking at it to put new things + var self = this; + var txrQ = self.getTextureQueue(txr.height); + + if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) { + removeFromArray(txrQ, txr); + } else { + txr.fullnessChecks++; + } +}; + +ETCp.retireTexture = function (txr) { + var self = this; + var txrH = txr.height; + var txrQ = self.getTextureQueue(txrH); + var lookup = this.lookup; // retire the texture from the active / searchable queue: + + removeFromArray(txrQ, txr); + txr.retired = true; // remove the refs from the eles to the caches: + + var eleCaches = txr.eleCaches; + + for (var i = 0; i < eleCaches.length; i++) { + var eleCache = eleCaches[i]; + lookup.deleteCache(eleCache.key, eleCache.level); + } + + clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future: + + var rtxtrQ = self.getRetiredTextureQueue(txrH); + rtxtrQ.push(txr); +}; + +ETCp.addTexture = function (txrH, minW) { + var self = this; + var txrQ = self.getTextureQueue(txrH); + var txr = {}; + txrQ.push(txr); + txr.eleCaches = []; + txr.height = txrH; + txr.width = Math.max(defTxrWidth, minW); + txr.usedWidth = 0; + txr.invalidatedWidth = 0; + txr.fullnessChecks = 0; + txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height); + txr.context = txr.canvas.getContext('2d'); + return txr; +}; + +ETCp.recycleTexture = function (txrH, minW) { + var self = this; + var txrQ = self.getTextureQueue(txrH); + var rtxtrQ = self.getRetiredTextureQueue(txrH); + + for (var i = 0; i < rtxtrQ.length; i++) { + var txr = rtxtrQ[i]; + + if (txr.width >= minW) { + txr.retired = false; + txr.usedWidth = 0; + txr.invalidatedWidth = 0; + txr.fullnessChecks = 0; + clearArray(txr.eleCaches); + txr.context.setTransform(1, 0, 0, 1, 0, 0); + txr.context.clearRect(0, 0, txr.width, txr.height); + removeFromArray(rtxtrQ, txr); + txrQ.push(txr); + return txr; + } + } +}; + +ETCp.queueElement = function (ele, lvl) { + var self = this; + var q = self.getElementQueue(); + var k2q = self.getElementKeyToQueue(); + var key = this.getKey(ele); + var existingReq = k2q[key]; + + if (existingReq) { + // use the max lvl b/c in between lvls are cheap to make + existingReq.level = Math.max(existingReq.level, lvl); + existingReq.eles.merge(ele); + existingReq.reqs++; + q.updateItem(existingReq); + } else { + var req = { + eles: ele.spawn().merge(ele), + level: lvl, + reqs: 1, + key: key + }; + q.push(req); + k2q[key] = req; + } +}; + +ETCp.dequeue = function (pxRatio +/*, extent*/ +) { + var self = this; + var q = self.getElementQueue(); + var k2q = self.getElementKeyToQueue(); + var dequeued = []; + var lookup = self.lookup; + + for (var i = 0; i < maxDeqSize; i++) { + if (q.size() > 0) { + var req = q.pop(); + var key = req.key; + var ele = req.eles[0]; // all eles have the same key + + var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup + + k2q[key] = null; // dequeueing isn't necessary with an existing cache + + if (cacheExists) { + continue; + } + + dequeued.push(req); + var bb = self.getBoundingBox(ele); + self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue); + } else { + break; + } + } + + return dequeued; +}; + +ETCp.removeFromQueue = function (ele) { + var self = this; + var q = self.getElementQueue(); + var k2q = self.getElementKeyToQueue(); + var key = this.getKey(ele); + var req = k2q[key]; + + if (req != null) { + if (req.eles.length === 1) { + // remove if last ele in the req + // bring to front of queue + req.reqs = MAX_INT; + q.updateItem(req); + q.pop(); // remove from queue + + k2q[key] = null; // remove from lookup map + } else { + // otherwise just remove ele from req + req.eles.unmerge(ele); + } + } +}; + +ETCp.onDequeue = function (fn) { + this.onDequeues.push(fn); +}; + +ETCp.offDequeue = function (fn) { + removeFromArray(this.onDequeues, fn); +}; + +ETCp.setupDequeueing = defs.setupDequeueing({ + deqRedrawThreshold: deqRedrawThreshold, + deqCost: deqCost, + deqAvgCost: deqAvgCost, + deqNoDrawCost: deqNoDrawCost, + deqFastCost: deqFastCost, + deq: function deq(self, pxRatio, extent) { + return self.dequeue(pxRatio, extent); + }, + onDeqd: function onDeqd(self, deqd) { + for (var i = 0; i < self.onDequeues.length; i++) { + var fn = self.onDequeues[i]; + fn(deqd); + } + }, + shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) { + for (var i = 0; i < deqd.length; i++) { + var eles = deqd[i].eles; + + for (var j = 0; j < eles.length; j++) { + var bb = eles[j].boundingBox(); + + if (boundingBoxesIntersect(bb, extent)) { + return true; + } + } + } + + return false; + }, + priority: function priority(self) { + return self.renderer.beforeRenderPriorities.eleTxrDeq; + } +}); + +var defNumLayers = 1; // default number of layers to use + +var minLvl$1 = -4; // when scaling smaller than that we don't need to re-render + +var maxLvl$1 = 2; // when larger than this scale just render directly (caching is not helpful) + +var maxZoom$1 = 3.99; // beyond this zoom level, layered textures are not used + +var deqRedrawThreshold$1 = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile + +var refineEleDebounceTime = 50; // time to debounce sharper ele texture updates + +var deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame + +var deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time + +var deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing + +var deqFastCost$1 = 0.9; // % of frame time to be used when >60fps + +var maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch + +var invalidThreshold = 250; // time threshold for disabling b/c of invalidations + +var maxLayerArea = 4000 * 4000; // layers can't be bigger than this + +var useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm) +// var log = function(){ console.log.apply( console, arguments ); }; + +var LayeredTextureCache = function LayeredTextureCache(renderer) { + var self = this; + var r = self.renderer = renderer; + var cy = r.cy; + self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ] + + self.firstGet = true; + self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold; + self.skipping = false; + self.eleTxrDeqs = cy.collection(); + self.scheduleElementRefinement = util$2(function () { + self.refineElementTextures(self.eleTxrDeqs); + self.eleTxrDeqs.unmerge(self.eleTxrDeqs); + }, refineEleDebounceTime); + r.beforeRender(function (willDraw, now) { + if (now - self.lastInvalidationTime <= invalidThreshold) { + self.skipping = true; + } else { + self.skipping = false; + } + }, r.beforeRenderPriorities.lyrTxrSkip); + + var qSort = function qSort(a, b) { + return b.reqs - a.reqs; + }; + + self.layersQueue = new Heap(qSort); + self.setupDequeueing(); +}; + +var LTCp = LayeredTextureCache.prototype; +var layerIdPool = 0; +var MAX_INT$1 = Math.pow(2, 53) - 1; + +LTCp.makeLayer = function (bb, lvl) { + var scale = Math.pow(2, lvl); + var w = Math.ceil(bb.w * scale); + var h = Math.ceil(bb.h * scale); + var canvas = this.renderer.makeOffscreenCanvas(w, h); + var layer = { + id: layerIdPool = ++layerIdPool % MAX_INT$1, + bb: bb, + level: lvl, + width: w, + height: h, + canvas: canvas, + context: canvas.getContext('2d'), + eles: [], + elesQueue: [], + reqs: 0 + }; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level); + + var cxt = layer.context; + var dx = -layer.bb.x1; + var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles) + + cxt.scale(scale, scale); + cxt.translate(dx, dy); + return layer; +}; + +LTCp.getLayers = function (eles, pxRatio, lvl) { + var self = this; + var r = self.renderer; + var cy = r.cy; + var zoom = cy.zoom(); + var firstGet = self.firstGet; + self.firstGet = false; // log('--\nget layers with %s eles', eles.length); + //log eles.map(function(ele){ return ele.id() }) ); + + if (lvl == null) { + lvl = Math.ceil(log2(zoom * pxRatio)); + + if (lvl < minLvl$1) { + lvl = minLvl$1; + } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) { + return null; + } + } + + self.validateLayersElesOrdering(lvl, eles); + var layersByLvl = self.layersByLevel; + var scale = Math.pow(2, lvl); + var layers = layersByLvl[lvl] = layersByLvl[lvl] || []; + var bb; + var lvlComplete = self.levelIsComplete(lvl, eles); + var tmpLayers; + + var checkTempLevels = function checkTempLevels() { + var canUseAsTmpLvl = function canUseAsTmpLvl(l) { + self.validateLayersElesOrdering(l, eles); + + if (self.levelIsComplete(l, eles)) { + tmpLayers = layersByLvl[l]; + return true; + } + }; + + var checkLvls = function checkLvls(dir) { + if (tmpLayers) { + return; + } + + for (var l = lvl + dir; minLvl$1 <= l && l <= maxLvl$1; l += dir) { + if (canUseAsTmpLvl(l)) { + break; + } + } + }; + + checkLvls(+1); + checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function + + for (var i = layers.length - 1; i >= 0; i--) { + var layer = layers[i]; + + if (layer.invalid) { + removeFromArray(layers, layer); + } + } + }; + + if (!lvlComplete) { + // if the current level is incomplete, then use the closest, best quality layerset temporarily + // and later queue the current layerset so we can get the proper quality level soon + checkTempLevels(); + } else { + // log('level complete, using existing layers\n--'); + return layers; + } + + var getBb = function getBb() { + if (!bb) { + bb = makeBoundingBox(); + + for (var i = 0; i < eles.length; i++) { + updateBoundingBox(bb, eles[i].boundingBox()); + } + } + + return bb; + }; + + var makeLayer = function makeLayer(opts) { + opts = opts || {}; + var after = opts.after; + getBb(); + var area = bb.w * scale * (bb.h * scale); + + if (area > maxLayerArea) { + return null; + } + + var layer = self.makeLayer(bb, lvl); + + if (after != null) { + var index = layers.indexOf(after) + 1; + layers.splice(index, 0, layer); + } else if (opts.insert === undefined || opts.insert) { + // no after specified => first layer made so put at start + layers.unshift(layer); + } // if( tmpLayers ){ + //self.queueLayer( layer ); + // } + + + return layer; + }; + + if (self.skipping && !firstGet) { + // log('skip layers'); + return null; + } // log('do layers'); + + + var layer = null; + var maxElesPerLayer = eles.length / defNumLayers; + var allowLazyQueueing = !firstGet; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var rs = ele._private.rscratch; + var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id()); + + var existingLayer = caches[lvl]; + + if (existingLayer) { + // reuse layer for later eles + // log('reuse layer for', ele.id()); + layer = existingLayer; + continue; + } + + if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) { + // log('make new layer for ele %s', ele.id()); + layer = makeLayer({ + insert: true, + after: layer + }); // if now layer can be built then we can't use layers at this level + + if (!layer) { + return null; + } // log('new layer with id %s', layer.id); + + } + + if (tmpLayers || allowLazyQueueing) { + // log('queue ele %s in layer %s', ele.id(), layer.id); + self.queueLayer(layer, ele); + } else { + // log('draw ele %s in layer %s', ele.id(), layer.id); + self.drawEleInLayer(layer, ele, lvl, pxRatio); + } + + layer.eles.push(ele); + caches[lvl] = layer; + } // log('--'); + + + if (tmpLayers) { + // then we only queued the current layerset and can't draw it yet + return tmpLayers; + } + + if (allowLazyQueueing) { + // log('lazy queue level', lvl); + return null; + } + + return layers; +}; // a layer may want to use an ele cache of a higher level to avoid blurriness +// so the layer level might not equal the ele level + + +LTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) { + return lvl; +}; + +LTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) { + var self = this; + var r = this.renderer; + var context = layer.context; + var bb = ele.boundingBox(); + + if (bb.w === 0 || bb.h === 0 || !ele.visible()) { + return; + } + + lvl = self.getEleLevelForLayerLevel(lvl, pxRatio); + + { + r.setImgSmoothing(context, false); + } + + { + r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs); + } + + { + r.setImgSmoothing(context, true); + } +}; + +LTCp.levelIsComplete = function (lvl, eles) { + var self = this; + var layers = self.layersByLevel[lvl]; + + if (!layers || layers.length === 0) { + return false; + } + + var numElesInLayers = 0; + + for (var i = 0; i < layers.length; i++) { + var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete + + if (layer.reqs > 0) { + return false; + } // if the layer is invalid, the level is not complete + + + if (layer.invalid) { + return false; + } + + numElesInLayers += layer.eles.length; + } // we should have exactly the number of eles passed in to be complete + + + if (numElesInLayers !== eles.length) { + return false; + } + + return true; +}; + +LTCp.validateLayersElesOrdering = function (lvl, eles) { + var layers = this.layersByLevel[lvl]; + + if (!layers) { + return; + } // if in a layer the eles are not in the same order, then the layer is invalid + // (i.e. there is an ele in between the eles in the layer) + + + for (var i = 0; i < layers.length; i++) { + var layer = layers[i]; + var offset = -1; // find the offset + + for (var j = 0; j < eles.length; j++) { + if (layer.eles[0] === eles[j]) { + offset = j; + break; + } + } + + if (offset < 0) { + // then the layer has nonexistant elements and is invalid + this.invalidateLayer(layer); + continue; + } // the eles in the layer must be in the same continuous order, else the layer is invalid + + + var o = offset; + + for (var j = 0; j < layer.eles.length; j++) { + if (layer.eles[j] !== eles[o + j]) { + // log('invalidate based on ordering', layer.id); + this.invalidateLayer(layer); + break; + } + } + } +}; + +LTCp.updateElementsInLayers = function (eles, update) { + var self = this; + var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each + // layer itself along the way + + for (var i = 0; i < eles.length; i++) { + var req = isEles ? null : eles[i]; + var ele = isEles ? eles[i] : eles[i].ele; + var rs = ele._private.rscratch; + var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; + + for (var l = minLvl$1; l <= maxLvl$1; l++) { + var layer = caches[l]; + + if (!layer) { + continue; + } // if update is a request from the ele cache, then it affects only + // the matching level + + + if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) { + continue; + } + + update(layer, ele, req); + } + } +}; + +LTCp.haveLayers = function () { + var self = this; + var haveLayers = false; + + for (var l = minLvl$1; l <= maxLvl$1; l++) { + var layers = self.layersByLevel[l]; + + if (layers && layers.length > 0) { + haveLayers = true; + break; + } + } + + return haveLayers; +}; + +LTCp.invalidateElements = function (eles) { + var self = this; + + if (eles.length === 0) { + return; + } + + self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles'); + + if (eles.length === 0 || !self.haveLayers()) { + return; + } + + self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) { + self.invalidateLayer(layer); + }); +}; + +LTCp.invalidateLayer = function (layer) { + // log('update invalidate layer time'); + this.lastInvalidationTime = performanceNow(); + + if (layer.invalid) { + return; + } // save cycles + + + var lvl = layer.level; + var eles = layer.eles; + var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id ); + + removeFromArray(layers, layer); // layer.eles = []; + + layer.elesQueue = []; + layer.invalid = true; + + if (layer.replacement) { + layer.replacement.invalid = true; + } + + for (var i = 0; i < eles.length; i++) { + var caches = eles[i]._private.rscratch.imgLayerCaches; + + if (caches) { + caches[lvl] = null; + } + } +}; + +LTCp.refineElementTextures = function (eles) { + var self = this; // log('refine', eles.length); + + self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) { + var rLyr = layer.replacement; + + if (!rLyr) { + rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level); + rLyr.replaces = layer; + rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level); + } + + if (!rLyr.reqs) { + for (var i = 0; i < rLyr.eles.length; i++) { + self.queueLayer(rLyr, rLyr.eles[i]); + } // log('queue replacement layer refinement', rLyr.id); + + } + }); +}; + +LTCp.enqueueElementRefinement = function (ele) { + + this.eleTxrDeqs.merge(ele); + this.scheduleElementRefinement(); +}; + +LTCp.queueLayer = function (layer, ele) { + var self = this; + var q = self.layersQueue; + var elesQ = layer.elesQueue; + var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time + + if (layer.replacement) { + return; + } + + if (ele) { + if (hasId[ele.id()]) { + return; + } + + elesQ.push(ele); + hasId[ele.id()] = true; + } + + if (layer.reqs) { + layer.reqs++; + q.updateItem(layer); + } else { + layer.reqs = 1; + q.push(layer); + } +}; + +LTCp.dequeue = function (pxRatio) { + var self = this; + var q = self.layersQueue; + var deqd = []; + var eleDeqs = 0; + + while (eleDeqs < maxDeqSize$1) { + if (q.size() === 0) { + break; + } + + var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it + + if (layer.replacement) { + // log('layer %s in queue skipped b/c it already has a replacement', layer.id); + q.pop(); + continue; + } // if this is a replacement layer that has been superceded, then forget it + + + if (layer.replaces && layer !== layer.replaces.replacement) { + // log('layer is no longer the most uptodate replacement; dequeued', layer.id) + q.pop(); + continue; + } + + if (layer.invalid) { + // log('replacement layer %s is invalid; dequeued', layer.id); + q.pop(); + continue; + } + + var ele = layer.elesQueue.shift(); + + if (ele) { + // log('dequeue layer %s', layer.id); + self.drawEleInLayer(layer, ele, layer.level, pxRatio); + eleDeqs++; + } + + if (deqd.length === 0) { + // we need only one entry in deqd to queue redrawing etc + deqd.push(true); + } // if the layer has all its eles done, then remove from the queue + + + if (layer.elesQueue.length === 0) { + q.pop(); + layer.reqs = 0; // log('dequeue of layer %s complete', layer.id); + // when a replacement layer is dequeued, it replaces the old layer in the level + + if (layer.replaces) { + self.applyLayerReplacement(layer); + } + + self.requestRedraw(); + } + } + + return deqd; +}; + +LTCp.applyLayerReplacement = function (layer) { + var self = this; + var layersInLevel = self.layersByLevel[layer.level]; + var replaced = layer.replaces; + var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing + // refs would be a mistake (i.e. overwriting the true active layer) + + if (index < 0 || replaced.invalid) { + // log('replacement layer would have no effect', layer.id); + return; + } + + layersInLevel[index] = layer; // replace level ref + // replace refs in eles + + for (var i = 0; i < layer.eles.length; i++) { + var _p = layer.eles[i]._private; + var cache = _p.imgLayerCaches = _p.imgLayerCaches || {}; + + if (cache) { + cache[layer.level] = layer; + } + } // log('apply replacement layer %s over %s', layer.id, replaced.id); + + + self.requestRedraw(); +}; + +LTCp.requestRedraw = util$2(function () { + var r = this.renderer; + r.redrawHint('eles', true); + r.redrawHint('drag', true); + r.redraw(); +}, 100); +LTCp.setupDequeueing = defs.setupDequeueing({ + deqRedrawThreshold: deqRedrawThreshold$1, + deqCost: deqCost$1, + deqAvgCost: deqAvgCost$1, + deqNoDrawCost: deqNoDrawCost$1, + deqFastCost: deqFastCost$1, + deq: function deq(self, pxRatio) { + return self.dequeue(pxRatio); + }, + onDeqd: noop$1, + shouldRedraw: trueify, + priority: function priority(self) { + return self.renderer.beforeRenderPriorities.lyrTxrDeq; + } +}); + +var CRp = {}; +var impl; + +function polygon(context, points) { + for (var i = 0; i < points.length; i++) { + var pt = points[i]; + context.lineTo(pt.x, pt.y); + } +} + +function triangleBackcurve(context, points, controlPoint) { + var firstPt; + + for (var i = 0; i < points.length; i++) { + var pt = points[i]; + + if (i === 0) { + firstPt = pt; + } + + context.lineTo(pt.x, pt.y); + } + + context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y); +} + +function triangleTee(context, trianglePoints, teePoints) { + if (context.beginPath) { + context.beginPath(); + } + + var triPts = trianglePoints; + + for (var i = 0; i < triPts.length; i++) { + var pt = triPts[i]; + context.lineTo(pt.x, pt.y); + } + + var teePts = teePoints; + var firstTeePt = teePoints[0]; + context.moveTo(firstTeePt.x, firstTeePt.y); + + for (var i = 1; i < teePts.length; i++) { + var pt = teePts[i]; + context.lineTo(pt.x, pt.y); + } + + if (context.closePath) { + context.closePath(); + } +} + +function circleTriangle(context, trianglePoints, rx, ry, r) { + if (context.beginPath) { + context.beginPath(); + } + + context.arc(rx, ry, r, 0, Math.PI * 2, false); + var triPts = trianglePoints; + var firstTrPt = triPts[0]; + context.moveTo(firstTrPt.x, firstTrPt.y); + + for (var i = 0; i < triPts.length; i++) { + var pt = triPts[i]; + context.lineTo(pt.x, pt.y); + } + + if (context.closePath) { + context.closePath(); + } +} + +function circle(context, rx, ry, r) { + context.arc(rx, ry, r, 0, Math.PI * 2, false); +} + +CRp.arrowShapeImpl = function (name) { + return (impl || (impl = { + 'polygon': polygon, + 'triangle-backcurve': triangleBackcurve, + 'triangle-tee': triangleTee, + 'circle-triangle': circleTriangle, + 'triangle-cross': triangleTee, + 'circle': circle + }))[name]; +}; + +var CRp$1 = {}; + +CRp$1.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) { + var r = this; + + if (ele.isNode()) { + r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); + } else { + r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); + } +}; + +CRp$1.drawElementOverlay = function (context, ele) { + var r = this; + + if (ele.isNode()) { + r.drawNodeOverlay(context, ele); + } else { + r.drawEdgeOverlay(context, ele); + } +}; + +CRp$1.drawElementUnderlay = function (context, ele) { + var r = this; + + if (ele.isNode()) { + r.drawNodeUnderlay(context, ele); + } else { + r.drawEdgeUnderlay(context, ele); + } +}; + +CRp$1.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) { + var r = this; + var bb = eleTxrCache.getBoundingBox(ele); + + if (bb.w === 0 || bb.h === 0) { + return; + } // ignore zero size case + + + var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason); + + if (eleCache != null) { + var opacity = getOpacity(r, ele); + + if (opacity === 0) { + return; + } + + var theta = getRotation(r, ele); + var x1 = bb.x1, + y1 = bb.y1, + w = bb.w, + h = bb.h; + var x, y, sx, sy, smooth; + + if (theta !== 0) { + var rotPt = eleTxrCache.getRotationPoint(ele); + sx = rotPt.x; + sy = rotPt.y; + context.translate(sx, sy); + context.rotate(theta); + smooth = r.getImgSmoothing(context); + + if (!smooth) { + r.setImgSmoothing(context, true); + } + + var off = eleTxrCache.getRotationOffset(ele); + x = off.x; + y = off.y; + } else { + x = x1; + y = y1; + } + + var oldGlobalAlpha; + + if (opacity !== 1) { + oldGlobalAlpha = context.globalAlpha; + context.globalAlpha = oldGlobalAlpha * opacity; + } + + context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h); + + if (opacity !== 1) { + context.globalAlpha = oldGlobalAlpha; + } + + if (theta !== 0) { + context.rotate(-theta); + context.translate(-sx, -sy); + + if (!smooth) { + r.setImgSmoothing(context, false); + } + } + } else { + eleTxrCache.drawElement(context, ele); // direct draw fallback + } +}; + +var getZeroRotation = function getZeroRotation() { + return 0; +}; + +var getLabelRotation = function getLabelRotation(r, ele) { + return r.getTextAngle(ele, null); +}; + +var getSourceLabelRotation = function getSourceLabelRotation(r, ele) { + return r.getTextAngle(ele, 'source'); +}; + +var getTargetLabelRotation = function getTargetLabelRotation(r, ele) { + return r.getTextAngle(ele, 'target'); +}; + +var getOpacity = function getOpacity(r, ele) { + return ele.effectiveOpacity(); +}; + +var getTextOpacity = function getTextOpacity(e, ele) { + return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity(); +}; + +CRp$1.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) { + var r = this; + var _r$data = r.data, + eleTxrCache = _r$data.eleTxrCache, + lblTxrCache = _r$data.lblTxrCache, + slbTxrCache = _r$data.slbTxrCache, + tlbTxrCache = _r$data.tlbTxrCache; + var bb = ele.boundingBox(); + var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null; + + if (bb.w === 0 || bb.h === 0 || !ele.visible()) { + return; + } + + if (!extent || boundingBoxesIntersect(bb, extent)) { + var isEdge = ele.isEdge(); + + var badLine = ele.element()._private.rscratch.badLine; + + r.drawElementUnderlay(context, ele); + r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity); + + if (!isEdge || !badLine) { + r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity); + } + + if (isEdge && !badLine) { + r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity); + r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity); + } + + r.drawElementOverlay(context, ele); + } +}; + +CRp$1.drawElements = function (context, eles) { + var r = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + r.drawElement(context, ele); + } +}; + +CRp$1.drawCachedElements = function (context, eles, pxRatio, extent) { + var r = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + r.drawCachedElement(context, ele, pxRatio, extent); + } +}; + +CRp$1.drawCachedNodes = function (context, eles, pxRatio, extent) { + var r = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.isNode()) { + continue; + } + + r.drawCachedElement(context, ele, pxRatio, extent); + } +}; + +CRp$1.drawLayeredElements = function (context, eles, pxRatio, extent) { + var r = this; + var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio); + + if (layers) { + for (var i = 0; i < layers.length; i++) { + var layer = layers[i]; + var bb = layer.bb; + + if (bb.w === 0 || bb.h === 0) { + continue; + } + + context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h); + } + } else { + // fall back on plain caching if no layers + r.drawCachedElements(context, eles, pxRatio, extent); + } +}; + +/* global Path2D */ +var CRp$2 = {}; + +CRp$2.drawEdge = function (context, edge, shiftToOriginWithBb) { + var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var r = this; + var rs = edge._private.rscratch; + + if (shouldDrawOpacity && !edge.visible()) { + return; + } // if bezier ctrl pts can not be calculated, then die + + + if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { + // isNaN in case edge is impossible and browser bugs (e.g. safari) + return; + } + + var bb; + + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + + var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1; + var lineOpacity = shouldDrawOpacity ? edge.pstyle('line-opacity').value : 1; + var curveStyle = edge.pstyle('curve-style').value; + var lineStyle = edge.pstyle('line-style').value; + var edgeWidth = edge.pstyle('width').pfValue; + var lineCap = edge.pstyle('line-cap').value; + var effectiveLineOpacity = opacity * lineOpacity; // separate arrow opacity would require arrow-opacity property + + var effectiveArrowOpacity = opacity * lineOpacity; + + var drawLine = function drawLine() { + var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity; + + if (curveStyle === 'straight-triangle') { + r.eleStrokeStyle(context, edge, strokeOpacity); + r.drawEdgeTrianglePath(edge, context, rs.allpts); + } else { + context.lineWidth = edgeWidth; + context.lineCap = lineCap; + r.eleStrokeStyle(context, edge, strokeOpacity); + r.drawEdgePath(edge, context, rs.allpts, lineStyle); + context.lineCap = 'butt'; // reset for other drawing functions + } + }; + + var drawOverlay = function drawOverlay() { + if (!shouldDrawOverlay) { + return; + } + + r.drawEdgeOverlay(context, edge); + }; + + var drawUnderlay = function drawUnderlay() { + if (!shouldDrawOverlay) { + return; + } + + r.drawEdgeUnderlay(context, edge); + }; + + var drawArrows = function drawArrows() { + var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveArrowOpacity; + r.drawArrowheads(context, edge, arrowOpacity); + }; + + var drawText = function drawText() { + r.drawElementText(context, edge, null, drawLabel); + }; + + context.lineJoin = 'round'; + var ghost = edge.pstyle('ghost').value === 'yes'; + + if (ghost) { + var gx = edge.pstyle('ghost-offset-x').pfValue; + var gy = edge.pstyle('ghost-offset-y').pfValue; + var ghostOpacity = edge.pstyle('ghost-opacity').value; + var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity; + context.translate(gx, gy); + drawLine(effectiveGhostOpacity); + drawArrows(effectiveGhostOpacity); + context.translate(-gx, -gy); + } + + drawUnderlay(); + drawLine(); + drawArrows(); + drawOverlay(); + drawText(); + + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } +}; + +var drawEdgeOverlayUnderlay = function drawEdgeOverlayUnderlay(overlayOrUnderlay) { + if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) { + throw new Error('Invalid state'); + } + + return function (context, edge) { + if (!edge.visible()) { + return; + } + + var opacity = edge.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; + + if (opacity === 0) { + return; + } + + var r = this; + var usePaths = r.usePaths(); + var rs = edge._private.rscratch; + var padding = edge.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; + var width = 2 * padding; + var color = edge.pstyle("".concat(overlayOrUnderlay, "-color")).value; + context.lineWidth = width; + + if (rs.edgeType === 'self' && !usePaths) { + context.lineCap = 'butt'; + } else { + context.lineCap = 'round'; + } + + r.colorStrokeStyle(context, color[0], color[1], color[2], opacity); + r.drawEdgePath(edge, context, rs.allpts, 'solid'); + }; +}; + +CRp$2.drawEdgeOverlay = drawEdgeOverlayUnderlay('overlay'); +CRp$2.drawEdgeUnderlay = drawEdgeOverlayUnderlay('underlay'); + +CRp$2.drawEdgePath = function (edge, context, pts, type) { + var rs = edge._private.rscratch; + var canvasCxt = context; + var path; + var pathCacheHit = false; + var usePaths = this.usePaths(); + var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue; + var lineDashOffset = edge.pstyle('line-dash-offset').pfValue; + + if (usePaths) { + var pathCacheKey = pts.join('$'); + var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey; + + if (keyMatches) { + path = context = rs.pathCache; + pathCacheHit = true; + } else { + path = context = new Path2D(); + rs.pathCacheKey = pathCacheKey; + rs.pathCache = path; + } + } + + if (canvasCxt.setLineDash) { + // for very outofdate browsers + switch (type) { + case 'dotted': + canvasCxt.setLineDash([1, 1]); + break; + + case 'dashed': + canvasCxt.setLineDash(lineDashPattern); + canvasCxt.lineDashOffset = lineDashOffset; + break; + + case 'solid': + canvasCxt.setLineDash([]); + break; + } + } + + if (!pathCacheHit && !rs.badLine) { + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(pts[0], pts[1]); + + switch (rs.edgeType) { + case 'bezier': + case 'self': + case 'compound': + case 'multibezier': + for (var i = 2; i + 3 < pts.length; i += 4) { + context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]); + } + + break; + + case 'straight': + case 'segments': + case 'haystack': + for (var _i = 2; _i + 1 < pts.length; _i += 2) { + context.lineTo(pts[_i], pts[_i + 1]); + } + + break; + } + } + + context = canvasCxt; + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } // reset any line dashes + + + if (context.setLineDash) { + // for very outofdate browsers + context.setLineDash([]); + } +}; + +CRp$2.drawEdgeTrianglePath = function (edge, context, pts) { + // use line stroke style for triangle fill style + context.fillStyle = context.strokeStyle; + var edgeWidth = edge.pstyle('width').pfValue; + + for (var i = 0; i + 1 < pts.length; i += 2) { + var vector = [pts[i + 2] - pts[i], pts[i + 3] - pts[i + 1]]; + var length = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); + var normal = [vector[1] / length, -vector[0] / length]; + var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2]; + context.beginPath(); + context.moveTo(pts[i] - triangleHead[0], pts[i + 1] - triangleHead[1]); + context.lineTo(pts[i] + triangleHead[0], pts[i + 1] + triangleHead[1]); + context.lineTo(pts[i + 2], pts[i + 3]); + context.closePath(); + context.fill(); + } +}; + +CRp$2.drawArrowheads = function (context, edge, opacity) { + var rs = edge._private.rscratch; + var isHaystack = rs.edgeType === 'haystack'; + + if (!isHaystack) { + this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity); + } + + this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity); + this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity); + + if (!isHaystack) { + this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity); + } +}; + +CRp$2.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) { + if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) { + return; + } + + var self = this; + var arrowShape = edge.pstyle(prefix + '-arrow-shape').value; + + if (arrowShape === 'none') { + return; + } + + var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled'; + var arrowFill = edge.pstyle(prefix + '-arrow-fill').value; + var edgeWidth = edge.pstyle('width').pfValue; + var edgeOpacity = edge.pstyle('opacity').value; + + if (opacity === undefined) { + opacity = edgeOpacity; + } + + var gco = context.globalCompositeOperation; + + if (opacity !== 1 || arrowFill === 'hollow') { + // then extra clear is needed + context.globalCompositeOperation = 'destination-out'; + self.colorFillStyle(context, 255, 255, 255, 1); + self.colorStrokeStyle(context, 255, 255, 255, 1); + self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle); + context.globalCompositeOperation = gco; + } // otherwise, the opaque arrow clears it for free :) + + + var color = edge.pstyle(prefix + '-arrow-color').value; + self.colorFillStyle(context, color[0], color[1], color[2], opacity); + self.colorStrokeStyle(context, color[0], color[1], color[2], opacity); + self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle); +}; + +CRp$2.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) { + var r = this; + var usePaths = this.usePaths() && shape !== 'triangle-cross'; + var pathCacheHit = false; + var path; + var canvasContext = context; + var translation = { + x: x, + y: y + }; + var scale = edge.pstyle('arrow-scale').value; + var size = this.getArrowWidth(edgeWidth, scale); + var shapeImpl = r.arrowShapes[shape]; + + if (usePaths) { + var cache = r.arrowPathCache = r.arrowPathCache || []; + var key = hashString(shape); + var cachedPath = cache[key]; + + if (cachedPath != null) { + path = context = cachedPath; + pathCacheHit = true; + } else { + path = context = new Path2D(); + cache[key] = path; + } + } + + if (!pathCacheHit) { + if (context.beginPath) { + context.beginPath(); + } + + if (usePaths) { + // store in the path cache with values easily manipulated later + shapeImpl.draw(context, 1, 0, { + x: 0, + y: 0 + }, 1); + } else { + shapeImpl.draw(context, size, angle, translation, edgeWidth); + } + + if (context.closePath) { + context.closePath(); + } + } + + context = canvasContext; + + if (usePaths) { + // set transform to arrow position/orientation + context.translate(x, y); + context.rotate(angle); + context.scale(size, size); + } + + if (fill === 'filled' || fill === 'both') { + if (usePaths) { + context.fill(path); + } else { + context.fill(); + } + } + + if (fill === 'hollow' || fill === 'both') { + context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1); + context.lineJoin = 'miter'; + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } + } + + if (usePaths) { + // reset transform by applying inverse + context.scale(1 / size, 1 / size); + context.rotate(-angle); + context.translate(-x, -y); + } +}; + +var CRp$3 = {}; + +CRp$3.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) { + // detect problematic cases for old browsers with bad images (cheaper than try-catch) + if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) { + return; + } + + context.drawImage(img, ix, iy, iw, ih, x, y, w, h); +}; + +CRp$3.drawInscribedImage = function (context, img, node, index, nodeOpacity) { + var r = this; + var pos = node.position(); + var nodeX = pos.x; + var nodeY = pos.y; + var styleObj = node.cy().style(); + var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj); + var fit = getIndexedStyle(node, 'background-fit', 'value', index); + var repeat = getIndexedStyle(node, 'background-repeat', 'value', index); + var nodeW = node.width(); + var nodeH = node.height(); + var paddingX2 = node.padding() * 2; + var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); + var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); + var rs = node._private.rscratch; + var clip = getIndexedStyle(node, 'background-clip', 'value', index); + var shouldClip = clip === 'node'; + var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity; + var smooth = getIndexedStyle(node, 'background-image-smoothing', 'value', index); + var imgW = img.width || img.cachedW; + var imgH = img.height || img.cachedH; // workaround for broken browsers like ie + + if (null == imgW || null == imgH) { + document.body.appendChild(img); // eslint-disable-line no-undef + + imgW = img.cachedW = img.width || img.offsetWidth; + imgH = img.cachedH = img.height || img.offsetHeight; + document.body.removeChild(img); // eslint-disable-line no-undef + } + + var w = imgW; + var h = imgH; + + if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') { + if (getIndexedStyle(node, 'background-width', 'units', index) === '%') { + w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW; + } else { + w = getIndexedStyle(node, 'background-width', 'pfValue', index); + } + } + + if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') { + if (getIndexedStyle(node, 'background-height', 'units', index) === '%') { + h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH; + } else { + h = getIndexedStyle(node, 'background-height', 'pfValue', index); + } + } + + if (w === 0 || h === 0) { + return; // no point in drawing empty image (and chrome is broken in this case) + } + + if (fit === 'contain') { + var scale = Math.min(nodeTW / w, nodeTH / h); + w *= scale; + h *= scale; + } else if (fit === 'cover') { + var scale = Math.max(nodeTW / w, nodeTH / h); + w *= scale; + h *= scale; + } + + var x = nodeX - nodeTW / 2; // left + + var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index); + var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index); + + if (posXUnits === '%') { + x += (nodeTW - w) * posXPfVal; + } else { + x += posXPfVal; + } + + var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index); + var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index); + + if (offXUnits === '%') { + x += (nodeTW - w) * offXPfVal; + } else { + x += offXPfVal; + } + + var y = nodeY - nodeTH / 2; // top + + var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index); + var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index); + + if (posYUnits === '%') { + y += (nodeTH - h) * posYPfVal; + } else { + y += posYPfVal; + } + + var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index); + var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index); + + if (offYUnits === '%') { + y += (nodeTH - h) * offYPfVal; + } else { + y += offYPfVal; + } + + if (rs.pathCache) { + x -= nodeX; + y -= nodeY; + nodeX = 0; + nodeY = 0; + } + + var gAlpha = context.globalAlpha; + context.globalAlpha = imgOpacity; + var smoothingEnabled = r.getImgSmoothing(context); + var isSmoothingSwitched = false; + + if (smooth === 'no' && smoothingEnabled) { + r.setImgSmoothing(context, false); + isSmoothingSwitched = true; + } else if (smooth === 'yes' && !smoothingEnabled) { + r.setImgSmoothing(context, true); + isSmoothingSwitched = true; + } + + if (repeat === 'no-repeat') { + if (shouldClip) { + context.save(); + + if (rs.pathCache) { + context.clip(rs.pathCache); + } else { + r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); + context.clip(); + } + } + + r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h); + + if (shouldClip) { + context.restore(); + } + } else { + var pattern = context.createPattern(img, repeat); + context.fillStyle = pattern; + r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); + context.translate(x, y); + context.fill(); + context.translate(-x, -y); + } + + context.globalAlpha = gAlpha; + + if (isSmoothingSwitched) { + r.setImgSmoothing(context, smoothingEnabled); + } +}; + +var CRp$4 = {}; + +CRp$4.eleTextBiggerThanMin = function (ele, scale) { + if (!scale) { + var zoom = ele.cy().zoom(); + var pxRatio = this.getPixelRatio(); + var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level + + scale = Math.pow(2, lvl); + } + + var computedSize = ele.pstyle('font-size').pfValue * scale; + var minSize = ele.pstyle('min-zoomed-font-size').pfValue; + + if (computedSize < minSize) { + return false; + } + + return true; +}; + +CRp$4.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) { + var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var r = this; + + if (force == null) { + if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) { + return; + } + } else if (force === false) { + return; + } + + if (ele.isNode()) { + var label = ele.pstyle('label'); + + if (!label || !label.value) { + return; + } + + var justification = r.getLabelJustification(ele); + context.textAlign = justification; + context.textBaseline = 'bottom'; + } else { + var badLine = ele.element()._private.rscratch.badLine; + + var _label = ele.pstyle('label'); + + var srcLabel = ele.pstyle('source-label'); + var tgtLabel = ele.pstyle('target-label'); + + if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) { + return; + } + + context.textAlign = 'center'; + context.textBaseline = 'bottom'; + } + + var applyRotation = !shiftToOriginWithBb; + var bb; + + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + + if (prefix == null) { + r.drawText(context, ele, null, applyRotation, useEleOpacity); + + if (ele.isEdge()) { + r.drawText(context, ele, 'source', applyRotation, useEleOpacity); + r.drawText(context, ele, 'target', applyRotation, useEleOpacity); + } + } else { + r.drawText(context, ele, prefix, applyRotation, useEleOpacity); + } + + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } +}; + +CRp$4.getFontCache = function (context) { + var cache; + this.fontCaches = this.fontCaches || []; + + for (var i = 0; i < this.fontCaches.length; i++) { + cache = this.fontCaches[i]; + + if (cache.context === context) { + return cache; + } + } + + cache = { + context: context + }; + this.fontCaches.push(cache); + return cache; +}; // set up canvas context with font +// returns transformed text string + + +CRp$4.setupTextStyle = function (context, ele) { + var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + // Font style + var labelStyle = ele.pstyle('font-style').strValue; + var labelSize = ele.pstyle('font-size').pfValue + 'px'; + var labelFamily = ele.pstyle('font-family').strValue; + var labelWeight = ele.pstyle('font-weight').strValue; + var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1; + var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity; + var color = ele.pstyle('color').value; + var outlineColor = ele.pstyle('text-outline-color').value; + context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily; + context.lineJoin = 'round'; // so text outlines aren't jagged + + this.colorFillStyle(context, color[0], color[1], color[2], opacity); + this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity); +}; // TODO ensure re-used + + +function roundRect(ctx, x, y, width, height) { + var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5; + ctx.beginPath(); + ctx.moveTo(x + radius, y); + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); + ctx.fill(); +} + +CRp$4.getTextAngle = function (ele, prefix) { + var theta; + var _p = ele._private; + var rscratch = _p.rscratch; + var pdash = prefix ? prefix + '-' : ''; + var rotation = ele.pstyle(pdash + 'text-rotation'); + var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix); + + if (rotation.strValue === 'autorotate') { + theta = ele.isEdge() ? textAngle : 0; + } else if (rotation.strValue === 'none') { + theta = 0; + } else { + theta = rotation.pfValue; + } + + return theta; +}; + +CRp$4.drawText = function (context, ele, prefix) { + var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var _p = ele._private; + var rscratch = _p.rscratch; + var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1; + + if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) { + return; + } // use 'main' as an alias for the main label (i.e. null prefix) + + + if (prefix === 'main') { + prefix = null; + } + + var textX = getPrefixedProperty(rscratch, 'labelX', prefix); + var textY = getPrefixedProperty(rscratch, 'labelY', prefix); + var orgTextX, orgTextY; // used for rotation + + var text = this.getLabelText(ele, prefix); + + if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) { + this.setupTextStyle(context, ele, useEleOpacity); + var pdash = prefix ? prefix + '-' : ''; + var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix); + var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix); + var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue; + var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue; + var isEdge = ele.isEdge(); + var halign = ele.pstyle('text-halign').value; + var valign = ele.pstyle('text-valign').value; + + if (isEdge) { + halign = 'center'; + valign = 'center'; + } + + textX += marginX; + textY += marginY; + var theta; + + if (!applyRotation) { + theta = 0; + } else { + theta = this.getTextAngle(ele, prefix); + } + + if (theta !== 0) { + orgTextX = textX; + orgTextY = textY; + context.translate(orgTextX, orgTextY); + context.rotate(theta); + textX = 0; + textY = 0; + } + + switch (valign) { + case 'top': + break; + + case 'center': + textY += textH / 2; + break; + + case 'bottom': + textY += textH; + break; + } + + var backgroundOpacity = ele.pstyle('text-background-opacity').value; + var borderOpacity = ele.pstyle('text-border-opacity').value; + var textBorderWidth = ele.pstyle('text-border-width').pfValue; + var backgroundPadding = ele.pstyle('text-background-padding').pfValue; + + if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) { + var bgX = textX - backgroundPadding; + + switch (halign) { + case 'left': + bgX -= textW; + break; + + case 'center': + bgX -= textW / 2; + break; + } + + var bgY = textY - textH - backgroundPadding; + var bgW = textW + 2 * backgroundPadding; + var bgH = textH + 2 * backgroundPadding; + + if (backgroundOpacity > 0) { + var textFill = context.fillStyle; + var textBackgroundColor = ele.pstyle('text-background-color').value; + context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')'; + var styleShape = ele.pstyle('text-background-shape').strValue; + + if (styleShape.indexOf('round') === 0) { + roundRect(context, bgX, bgY, bgW, bgH, 2); + } else { + context.fillRect(bgX, bgY, bgW, bgH); + } + + context.fillStyle = textFill; + } + + if (textBorderWidth > 0 && borderOpacity > 0) { + var textStroke = context.strokeStyle; + var textLineWidth = context.lineWidth; + var textBorderColor = ele.pstyle('text-border-color').value; + var textBorderStyle = ele.pstyle('text-border-style').value; + context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')'; + context.lineWidth = textBorderWidth; + + if (context.setLineDash) { + // for very outofdate browsers + switch (textBorderStyle) { + case 'dotted': + context.setLineDash([1, 1]); + break; + + case 'dashed': + context.setLineDash([4, 2]); + break; + + case 'double': + context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders + + context.setLineDash([]); + break; + + case 'solid': + context.setLineDash([]); + break; + } + } + + context.strokeRect(bgX, bgY, bgW, bgH); + + if (textBorderStyle === 'double') { + var whiteWidth = textBorderWidth / 2; + context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2); + } + + if (context.setLineDash) { + // for very outofdate browsers + context.setLineDash([]); + } + + context.lineWidth = textLineWidth; + context.strokeStyle = textStroke; + } + } + + var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle + + if (lineWidth > 0) { + context.lineWidth = lineWidth; + } + + if (ele.pstyle('text-wrap').value === 'wrap') { + var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix); + var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix); + var halfTextW = textW / 2; + var justification = this.getLabelJustification(ele); + + if (justification === 'auto') ; else if (halign === 'left') { + // auto justification : right + if (justification === 'left') { + textX += -textW; + } else if (justification === 'center') { + textX += -halfTextW; + } // else same as auto + + } else if (halign === 'center') { + // auto justfication : center + if (justification === 'left') { + textX += -halfTextW; + } else if (justification === 'right') { + textX += halfTextW; + } // else same as auto + + } else if (halign === 'right') { + // auto justification : left + if (justification === 'center') { + textX += halfTextW; + } else if (justification === 'right') { + textX += textW; + } // else same as auto + + } + + switch (valign) { + case 'top': + textY -= (lines.length - 1) * lineHeight; + break; + + case 'center': + case 'bottom': + textY -= (lines.length - 1) * lineHeight; + break; + } + + for (var l = 0; l < lines.length; l++) { + if (lineWidth > 0) { + context.strokeText(lines[l], textX, textY); + } + + context.fillText(lines[l], textX, textY); + textY += lineHeight; + } + } else { + if (lineWidth > 0) { + context.strokeText(text, textX, textY); + } + + context.fillText(text, textX, textY); + } + + if (theta !== 0) { + context.rotate(-theta); + context.translate(-orgTextX, -orgTextY); + } + } +}; + +/* global Path2D */ +var CRp$5 = {}; + +CRp$5.drawNode = function (context, node, shiftToOriginWithBb) { + var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var r = this; + var nodeWidth, nodeHeight; + var _p = node._private; + var rs = _p.rscratch; + var pos = node.position(); + + if (!number(pos.x) || !number(pos.y)) { + return; // can't draw node with undefined position + } + + if (shouldDrawOpacity && !node.visible()) { + return; + } + + var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1; + var usePaths = r.usePaths(); + var path; + var pathCacheHit = false; + var padding = node.padding(); + nodeWidth = node.width() + 2 * padding; + nodeHeight = node.height() + 2 * padding; // + // setup shift + + var bb; + + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } // + // load bg image + + + var bgImgProp = node.pstyle('background-image'); + var urls = bgImgProp.value; + var urlDefined = new Array(urls.length); + var image = new Array(urls.length); + var numImages = 0; + + for (var i = 0; i < urls.length; i++) { + var url = urls[i]; + var defd = urlDefined[i] = url != null && url !== 'none'; + + if (defd) { + var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i); + numImages++; // get image, and if not loaded then ask to redraw when later loaded + + image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () { + _p.backgroundTimestamp = Date.now(); + node.emitAndNotify('background'); + }); + } + } // + // setup styles + + + var darkness = node.pstyle('background-blacken').value; + var borderWidth = node.pstyle('border-width').pfValue; + var bgOpacity = node.pstyle('background-opacity').value * eleOpacity; + var borderColor = node.pstyle('border-color').value; + var borderStyle = node.pstyle('border-style').value; + var borderOpacity = node.pstyle('border-opacity').value * eleOpacity; + context.lineJoin = 'miter'; // so borders are square with the node shape + + var setupShapeColor = function setupShapeColor() { + var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity; + r.eleFillStyle(context, node, bgOpy); + }; + + var setupBorderColor = function setupBorderColor() { + var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity; + r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy); + }; // + // setup shape + + + var styleShape = node.pstyle('shape').strValue; + var shapePts = node.pstyle('shape-polygon-points').pfValue; + + if (usePaths) { + context.translate(pos.x, pos.y); + var pathCache = r.nodePathCache = r.nodePathCache || []; + var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth); + var cachedPath = pathCache[key]; + + if (cachedPath != null) { + path = cachedPath; + pathCacheHit = true; + rs.pathCache = path; + } else { + path = new Path2D(); + pathCache[key] = rs.pathCache = path; + } + } + + var drawShape = function drawShape() { + if (!pathCacheHit) { + var npos = pos; + + if (usePaths) { + npos = { + x: 0, + y: 0 + }; + } + + r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight); + } + + if (usePaths) { + context.fill(path); + } else { + context.fill(); + } + }; + + var drawImages = function drawImages() { + var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; + var inside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var prevBging = _p.backgrounding; + var totalCompleted = 0; + + for (var _i = 0; _i < image.length; _i++) { + var bgContainment = node.cy().style().getIndexedStyle(node, 'background-image-containment', 'value', _i); + + if (inside && bgContainment === 'over' || !inside && bgContainment === 'inside') { + totalCompleted++; + continue; + } + + if (urlDefined[_i] && image[_i].complete && !image[_i].error) { + totalCompleted++; + r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity); + } + } + + _p.backgrounding = !(totalCompleted === numImages); + + if (prevBging !== _p.backgrounding) { + // update style b/c :backgrounding state changed + node.updateStyle(false); + } + }; + + var drawPie = function drawPie() { + var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity; + + if (r.hasPie(node)) { + r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it + + if (redrawShape) { + if (!usePaths) { + r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight); + } + } + } + }; + + var darken = function darken() { + var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; + var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity; + var c = darkness > 0 ? 0 : 255; + + if (darkness !== 0) { + r.colorFillStyle(context, c, c, c, opacity); + + if (usePaths) { + context.fill(path); + } else { + context.fill(); + } + } + }; + + var drawBorder = function drawBorder() { + if (borderWidth > 0) { + context.lineWidth = borderWidth; + context.lineCap = 'butt'; + + if (context.setLineDash) { + // for very outofdate browsers + switch (borderStyle) { + case 'dotted': + context.setLineDash([1, 1]); + break; + + case 'dashed': + context.setLineDash([4, 2]); + break; + + case 'solid': + case 'double': + context.setLineDash([]); + break; + } + } + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } + + if (borderStyle === 'double') { + context.lineWidth = borderWidth / 3; + var gco = context.globalCompositeOperation; + context.globalCompositeOperation = 'destination-out'; + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } + + context.globalCompositeOperation = gco; + } // reset in case we changed the border style + + + if (context.setLineDash) { + // for very outofdate browsers + context.setLineDash([]); + } + } + }; + + var drawOverlay = function drawOverlay() { + if (shouldDrawOverlay) { + r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight); + } + }; + + var drawUnderlay = function drawUnderlay() { + if (shouldDrawOverlay) { + r.drawNodeUnderlay(context, node, pos, nodeWidth, nodeHeight); + } + }; + + var drawText = function drawText() { + r.drawElementText(context, node, null, drawLabel); + }; + + var ghost = node.pstyle('ghost').value === 'yes'; + + if (ghost) { + var gx = node.pstyle('ghost-offset-x').pfValue; + var gy = node.pstyle('ghost-offset-y').pfValue; + var ghostOpacity = node.pstyle('ghost-opacity').value; + var effGhostOpacity = ghostOpacity * eleOpacity; + context.translate(gx, gy); + setupShapeColor(ghostOpacity * bgOpacity); + drawShape(); + drawImages(effGhostOpacity, true); + setupBorderColor(ghostOpacity * borderOpacity); + drawBorder(); + drawPie(darkness !== 0 || borderWidth !== 0); + drawImages(effGhostOpacity, false); + darken(effGhostOpacity); + context.translate(-gx, -gy); + } + + if (usePaths) { + context.translate(-pos.x, -pos.y); + } + + drawUnderlay(); + + if (usePaths) { + context.translate(pos.x, pos.y); + } + + setupShapeColor(); + drawShape(); + drawImages(eleOpacity, true); + setupBorderColor(); + drawBorder(); + drawPie(darkness !== 0 || borderWidth !== 0); + drawImages(eleOpacity, false); + darken(); + + if (usePaths) { + context.translate(-pos.x, -pos.y); + } + + drawText(); + drawOverlay(); // + // clean up shift + + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } +}; + +var drawNodeOverlayUnderlay = function drawNodeOverlayUnderlay(overlayOrUnderlay) { + if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) { + throw new Error('Invalid state'); + } + + return function (context, node, pos, nodeWidth, nodeHeight) { + var r = this; + + if (!node.visible()) { + return; + } + + var padding = node.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; + var opacity = node.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; + var color = node.pstyle("".concat(overlayOrUnderlay, "-color")).value; + var shape = node.pstyle("".concat(overlayOrUnderlay, "-shape")).value; + + if (opacity > 0) { + pos = pos || node.position(); + + if (nodeWidth == null || nodeHeight == null) { + var _padding = node.padding(); + + nodeWidth = node.width() + 2 * _padding; + nodeHeight = node.height() + 2 * _padding; + } + + r.colorFillStyle(context, color[0], color[1], color[2], opacity); + r.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding * 2, nodeHeight + padding * 2); + context.fill(); + } + }; +}; + +CRp$5.drawNodeOverlay = drawNodeOverlayUnderlay('overlay'); +CRp$5.drawNodeUnderlay = drawNodeOverlayUnderlay('underlay'); // does the node have at least one pie piece? + +CRp$5.hasPie = function (node) { + node = node[0]; // ensure ele ref + + return node._private.hasPie; +}; + +CRp$5.drawPie = function (context, node, nodeOpacity, pos) { + node = node[0]; // ensure ele ref + + pos = pos || node.position(); + var cyStyle = node.cy().style(); + var pieSize = node.pstyle('pie-size'); + var x = pos.x; + var y = pos.y; + var nodeW = node.width(); + var nodeH = node.height(); + var radius = Math.min(nodeW, nodeH) / 2; // must fit in node + + var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1] + + var usePaths = this.usePaths(); + + if (usePaths) { + x = 0; + y = 0; + } + + if (pieSize.units === '%') { + radius = radius * pieSize.pfValue; + } else if (pieSize.pfValue !== undefined) { + radius = pieSize.pfValue / 2; + } + + for (var i = 1; i <= cyStyle.pieBackgroundN; i++) { + // 1..N + var size = node.pstyle('pie-' + i + '-background-size').value; + var color = node.pstyle('pie-' + i + '-background-color').value; + var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity; + var percent = size / 100; // map integer range [0, 100] to [0, 1] + // percent can't push beyond 1 + + if (percent + lastPercent > 1) { + percent = 1 - lastPercent; + } + + var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise + + var angleDelta = 2 * Math.PI * percent; + var angleEnd = angleStart + angleDelta; // ignore if + // - zero size + // - we're already beyond the full circle + // - adding the current slice would go beyond the full circle + + if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) { + continue; + } + + context.beginPath(); + context.moveTo(x, y); + context.arc(x, y, radius, angleStart, angleEnd); + context.closePath(); + this.colorFillStyle(context, color[0], color[1], color[2], opacity); + context.fill(); + lastPercent += percent; + } +}; + +var CRp$6 = {}; +var motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined'; + +CRp$6.getPixelRatio = function () { + var context = this.data.contexts[0]; + + if (this.forcedPixelRatio != null) { + return this.forcedPixelRatio; + } + + var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; + return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef +}; + +CRp$6.paintCache = function (context) { + var caches = this.paintCaches = this.paintCaches || []; + var needToCreateCache = true; + var cache; + + for (var i = 0; i < caches.length; i++) { + cache = caches[i]; + + if (cache.context === context) { + needToCreateCache = false; + break; + } + } + + if (needToCreateCache) { + cache = { + context: context + }; + caches.push(cache); + } + + return cache; +}; + +CRp$6.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) { + var gradientStyle; + var usePaths = this.usePaths(); + var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value, + positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue; + + if (fill === 'radial-gradient') { + if (ele.isEdge()) { + var start = ele.sourceEndpoint(), + end = ele.targetEndpoint(), + mid = ele.midpoint(); + var d1 = dist$1(start, mid); + var d2 = dist$1(end, mid); + gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2)); + } else { + var pos = usePaths ? { + x: 0, + y: 0 + } : ele.position(), + width = ele.paddedWidth(), + height = ele.paddedHeight(); + gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height)); + } + } else { + if (ele.isEdge()) { + var _start = ele.sourceEndpoint(), + _end = ele.targetEndpoint(); + + gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y); + } else { + var _pos = usePaths ? { + x: 0, + y: 0 + } : ele.position(), + _width = ele.paddedWidth(), + _height = ele.paddedHeight(), + halfWidth = _width / 2, + halfHeight = _height / 2; + + var direction = ele.pstyle('background-gradient-direction').value; + + switch (direction) { + case 'to-bottom': + gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight); + break; + + case 'to-top': + gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight); + break; + + case 'to-left': + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y); + break; + + case 'to-right': + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y); + break; + + case 'to-bottom-right': + case 'to-right-bottom': + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight); + break; + + case 'to-top-right': + case 'to-right-top': + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight); + break; + + case 'to-bottom-left': + case 'to-left-bottom': + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight); + break; + + case 'to-top-left': + case 'to-left-top': + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight); + break; + } + } + } + + if (!gradientStyle) return null; // invalid gradient style + + var hasPositions = positions.length === colors.length; + var length = colors.length; + + for (var i = 0; i < length; i++) { + gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')'); + } + + return gradientStyle; +}; + +CRp$6.gradientFillStyle = function (context, ele, fill, opacity) { + var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity); + if (!gradientStyle) return null; // error + + context.fillStyle = gradientStyle; +}; + +CRp$6.colorFillStyle = function (context, r, g, b, a) { + context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching + // var cache = this.paintCache(context); + // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + // if( cache.fillStyle !== fillStyle ){ + // context.fillStyle = cache.fillStyle = fillStyle; + // } +}; + +CRp$6.eleFillStyle = function (context, ele, opacity) { + var backgroundFill = ele.pstyle('background-fill').value; + + if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') { + this.gradientFillStyle(context, ele, backgroundFill, opacity); + } else { + var backgroundColor = ele.pstyle('background-color').value; + this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity); + } +}; + +CRp$6.gradientStrokeStyle = function (context, ele, fill, opacity) { + var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity); + if (!gradientStyle) return null; // error + + context.strokeStyle = gradientStyle; +}; + +CRp$6.colorStrokeStyle = function (context, r, g, b, a) { + context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching + // var cache = this.paintCache(context); + // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + // if( cache.strokeStyle !== strokeStyle ){ + // context.strokeStyle = cache.strokeStyle = strokeStyle; + // } +}; + +CRp$6.eleStrokeStyle = function (context, ele, opacity) { + var lineFill = ele.pstyle('line-fill').value; + + if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') { + this.gradientStrokeStyle(context, ele, lineFill, opacity); + } else { + var lineColor = ele.pstyle('line-color').value; + this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity); + } +}; // Resize canvas + + +CRp$6.matchCanvasSize = function (container) { + var r = this; + var data = r.data; + var bb = r.findContainerClientCoords(); + var width = bb[2]; + var height = bb[3]; + var pixelRatio = r.getPixelRatio(); + var mbPxRatio = r.motionBlurPxRatio; + + if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) { + pixelRatio = mbPxRatio; + } + + var canvasWidth = width * pixelRatio; + var canvasHeight = height * pixelRatio; + var canvas; + + if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) { + return; // save cycles if same + } + + r.fontCaches = null; // resizing resets the style + + var canvasContainer = data.canvasContainer; + canvasContainer.style.width = width + 'px'; + canvasContainer.style.height = height + 'px'; + + for (var i = 0; i < r.CANVAS_LAYERS; i++) { + canvas = data.canvases[i]; + canvas.width = canvasWidth; + canvas.height = canvasHeight; + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + + for (var i = 0; i < r.BUFFER_COUNT; i++) { + canvas = data.bufferCanvases[i]; + canvas.width = canvasWidth; + canvas.height = canvasHeight; + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + + r.textureMult = 1; + + if (pixelRatio <= 1) { + canvas = data.bufferCanvases[r.TEXTURE_BUFFER]; + r.textureMult = 2; + canvas.width = canvasWidth * r.textureMult; + canvas.height = canvasHeight * r.textureMult; + } + + r.canvasWidth = canvasWidth; + r.canvasHeight = canvasHeight; +}; + +CRp$6.renderTo = function (cxt, zoom, pan, pxRatio) { + this.render({ + forcedContext: cxt, + forcedZoom: zoom, + forcedPan: pan, + drawAllLayers: true, + forcedPxRatio: pxRatio + }); +}; + +CRp$6.render = function (options) { + options = options || staticEmptyObject(); + var forcedContext = options.forcedContext; + var drawAllLayers = options.drawAllLayers; + var drawOnlyNodeLayer = options.drawOnlyNodeLayer; + var forcedZoom = options.forcedZoom; + var forcedPan = options.forcedPan; + var r = this; + var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio; + var cy = r.cy; + var data = r.data; + var needDraw = data.canvasNeedsRedraw; + var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming); + var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur; + var mbPxRatio = r.motionBlurPxRatio; + var hasCompoundNodes = cy.hasCompoundNodes(); + var inNodeDragGesture = r.hoverData.draggingEles; + var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false; + motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection; + var motionBlurFadeEffect = motionBlur; + + if (!forcedContext) { + if (r.prevPxRatio !== pixelRatio) { + r.invalidateContainerClientCoordsCache(); + r.matchCanvasSize(r.container); + r.redrawHint('eles', true); + r.redrawHint('drag', true); + } + + r.prevPxRatio = pixelRatio; + } + + if (!forcedContext && r.motionBlurTimeout) { + clearTimeout(r.motionBlurTimeout); + } + + if (motionBlur) { + if (r.mbFrames == null) { + r.mbFrames = 0; + } + + r.mbFrames++; + + if (r.mbFrames < 3) { + // need several frames before even high quality motionblur + motionBlurFadeEffect = false; + } // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing) + + + if (r.mbFrames > r.minMbLowQualFrames) { + //r.fullQualityMb = false; + r.motionBlurPxRatio = r.mbPxRBlurry; + } + } + + if (r.clearingMotionBlur) { + r.motionBlurPxRatio = 1; + } // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame + // because a rogue async texture frame would clear needDraw + + + if (r.textureDrawLastFrame && !textureDraw) { + needDraw[r.NODE] = true; + needDraw[r.SELECT_BOX] = true; + } + + var style = cy.style(); + var zoom = cy.zoom(); + var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom; + var pan = cy.pan(); + var effectivePan = { + x: pan.x, + y: pan.y + }; + var vp = { + zoom: zoom, + pan: { + x: pan.x, + y: pan.y + } + }; + var prevVp = r.prevViewport; + var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed) + + if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) { + r.motionBlurPxRatio = 1; + } + + if (forcedPan) { + effectivePan = forcedPan; + } // apply pixel ratio + + + effectiveZoom *= pixelRatio; + effectivePan.x *= pixelRatio; + effectivePan.y *= pixelRatio; + var eles = r.getCachedZSortedEles(); + + function mbclear(context, x, y, w, h) { + var gco = context.globalCompositeOperation; + context.globalCompositeOperation = 'destination-out'; + r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency); + context.fillRect(x, y, w, h); + context.globalCompositeOperation = gco; + } + + function setContextTransform(context, clear) { + var ePan, eZoom, w, h; + + if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) { + ePan = { + x: pan.x * mbPxRatio, + y: pan.y * mbPxRatio + }; + eZoom = zoom * mbPxRatio; + w = r.canvasWidth * mbPxRatio; + h = r.canvasHeight * mbPxRatio; + } else { + ePan = effectivePan; + eZoom = effectiveZoom; + w = r.canvasWidth; + h = r.canvasHeight; + } + + context.setTransform(1, 0, 0, 1, 0, 0); + + if (clear === 'motionBlur') { + mbclear(context, 0, 0, w, h); + } else if (!forcedContext && (clear === undefined || clear)) { + context.clearRect(0, 0, w, h); + } + + if (!drawAllLayers) { + context.translate(ePan.x, ePan.y); + context.scale(eZoom, eZoom); + } + + if (forcedPan) { + context.translate(forcedPan.x, forcedPan.y); + } + + if (forcedZoom) { + context.scale(forcedZoom, forcedZoom); + } + } + + if (!textureDraw) { + r.textureDrawLastFrame = false; + } + + if (textureDraw) { + r.textureDrawLastFrame = true; + + if (!r.textureCache) { + r.textureCache = {}; + r.textureCache.bb = cy.mutableElements().boundingBox(); + r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER]; + var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER]; + cxt.setTransform(1, 0, 0, 1, 0, 0); + cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult); + r.render({ + forcedContext: cxt, + drawOnlyNodeLayer: true, + forcedPxRatio: pixelRatio * r.textureMult + }); + var vp = r.textureCache.viewport = { + zoom: cy.zoom(), + pan: cy.pan(), + width: r.canvasWidth, + height: r.canvasHeight + }; + vp.mpan = { + x: (0 - vp.pan.x) / vp.zoom, + y: (0 - vp.pan.y) / vp.zoom + }; + } + + needDraw[r.DRAG] = false; + needDraw[r.NODE] = false; + var context = data.contexts[r.NODE]; + var texture = r.textureCache.texture; + var vp = r.textureCache.viewport; + context.setTransform(1, 0, 0, 1, 0, 0); + + if (motionBlur) { + mbclear(context, 0, 0, vp.width, vp.height); + } else { + context.clearRect(0, 0, vp.width, vp.height); + } + + var outsideBgColor = style.core('outside-texture-bg-color').value; + var outsideBgOpacity = style.core('outside-texture-bg-opacity').value; + r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity); + context.fillRect(0, 0, vp.width, vp.height); + var zoom = cy.zoom(); + setContextTransform(context, false); + context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); + context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); + } else if (r.textureOnViewport && !forcedContext) { + // clear the cache since we don't need it + r.textureCache = null; + } + + var extent = cy.extent(); + var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated(); + var hideEdges = r.hideEdgesOnViewport && vpManip; + var needMbClear = []; + needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur; + + if (needMbClear[r.NODE]) { + r.clearedForMotionBlur[r.NODE] = true; + } + + needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur; + + if (needMbClear[r.DRAG]) { + r.clearedForMotionBlur[r.DRAG] = true; + } + + if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) { + var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1; + var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]); + var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined; + setContextTransform(context, clear); + + if (hideEdges) { + r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent); + } else { + r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent); + } + + if (r.debug) { + r.drawDebugPoints(context, eles.nondrag); + } + + if (!drawAllLayers && !motionBlur) { + needDraw[r.NODE] = false; + } + } + + if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) { + var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1; + var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]); + setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined); + + if (hideEdges) { + r.drawCachedNodes(context, eles.drag, pixelRatio, extent); + } else { + r.drawCachedElements(context, eles.drag, pixelRatio, extent); + } + + if (r.debug) { + r.drawDebugPoints(context, eles.drag); + } + + if (!drawAllLayers && !motionBlur) { + needDraw[r.DRAG] = false; + } + } + + if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) { + var context = forcedContext || data.contexts[r.SELECT_BOX]; + setContextTransform(context); + + if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) { + var zoom = r.cy.zoom(); + var borderWidth = style.core('selection-box-border-width').value / zoom; + context.lineWidth = borderWidth; + context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; + context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); + + if (borderWidth > 0) { + context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; + context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); + } + } + + if (data.bgActivePosistion && !r.hoverData.selecting) { + var zoom = r.cy.zoom(); + var pos = data.bgActivePosistion; + context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')'; + context.beginPath(); + context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI); + context.fill(); + } + + var timeToRender = r.lastRedrawTime; + + if (r.showFps && timeToRender) { + timeToRender = Math.round(timeToRender); + var fps = Math.round(1000 / timeToRender); + context.setTransform(1, 0, 0, 1, 0, 0); + context.fillStyle = 'rgba(255, 0, 0, 0.75)'; + context.strokeStyle = 'rgba(255, 0, 0, 0.75)'; + context.lineWidth = 1; + context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20); + var maxFps = 60; + context.strokeRect(0, 30, 250, 20); + context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20); + } + + if (!drawAllLayers) { + needDraw[r.SELECT_BOX] = false; + } + } // motionblur: blit rendered blurry frames + + + if (motionBlur && mbPxRatio !== 1) { + var cxtNode = data.contexts[r.NODE]; + var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE]; + var cxtDrag = data.contexts[r.DRAG]; + var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]; + + var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) { + cxt.setTransform(1, 0, 0, 1, 0, 0); + + if (needClear || !motionBlurFadeEffect) { + cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight); + } else { + mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight); + } + + var pxr = mbPxRatio; + cxt.drawImage(txt, // img + 0, 0, // sx, sy + r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh + 0, 0, // x, y + r.canvasWidth, r.canvasHeight // w, h + ); + }; + + if (needDraw[r.NODE] || needMbClear[r.NODE]) { + drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]); + needDraw[r.NODE] = false; + } + + if (needDraw[r.DRAG] || needMbClear[r.DRAG]) { + drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]); + needDraw[r.DRAG] = false; + } + } + + r.prevViewport = vp; + + if (r.clearingMotionBlur) { + r.clearingMotionBlur = false; + r.motionBlurCleared = true; + r.motionBlur = true; + } + + if (motionBlur) { + r.motionBlurTimeout = setTimeout(function () { + r.motionBlurTimeout = null; + r.clearedForMotionBlur[r.NODE] = false; + r.clearedForMotionBlur[r.DRAG] = false; + r.motionBlur = false; + r.clearingMotionBlur = !textureDraw; + r.mbFrames = 0; + needDraw[r.NODE] = true; + needDraw[r.DRAG] = true; + r.redraw(); + }, motionBlurDelay); + } + + if (!forcedContext) { + cy.emit('render'); + } +}; + +var CRp$7 = {}; // @O Polygon drawing + +CRp$7.drawPolygonPath = function (context, x, y, width, height, points) { + var halfW = width / 2; + var halfH = height / 2; + + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(x + halfW * points[0], y + halfH * points[1]); + + for (var i = 1; i < points.length / 2; i++) { + context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]); + } + + context.closePath(); +}; + +CRp$7.drawRoundPolygonPath = function (context, x, y, width, height, points) { + var halfW = width / 2; + var halfH = height / 2; + var cornerRadius = getRoundPolygonRadius(width, height); + + if (context.beginPath) { + context.beginPath(); + } + + for (var _i = 0; _i < points.length / 4; _i++) { + var sourceUv = void 0, + destUv = void 0; + + if (_i === 0) { + sourceUv = points.length - 2; + } else { + sourceUv = _i * 4 - 2; + } + + destUv = _i * 4 + 2; + var px = x + halfW * points[_i * 4]; + var py = y + halfH * points[_i * 4 + 1]; + var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1]; + var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); + var cp0x = px - offset * points[sourceUv]; + var cp0y = py - offset * points[sourceUv + 1]; + var cp1x = px + offset * points[destUv]; + var cp1y = py + offset * points[destUv + 1]; + + if (_i === 0) { + context.moveTo(cp0x, cp0y); + } else { + context.lineTo(cp0x, cp0y); + } + + context.arcTo(px, py, cp1x, cp1y, cornerRadius); + } + + context.closePath(); +}; // Round rectangle drawing + + +CRp$7.drawRoundRectanglePath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var cornerRadius = getRoundRectangleRadius(width, height); + + if (context.beginPath) { + context.beginPath(); + } // Start at top middle + + + context.moveTo(x, y - halfHeight); // Arc from middle top to right side + + context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom + + context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side + + context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder + + context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line + + context.lineTo(x, y - halfHeight); + context.closePath(); +}; + +CRp$7.drawBottomRoundRectanglePath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var cornerRadius = getRoundRectangleRadius(width, height); + + if (context.beginPath) { + context.beginPath(); + } // Start at top middle + + + context.moveTo(x, y - halfHeight); + context.lineTo(x + halfWidth, y - halfHeight); + context.lineTo(x + halfWidth, y); + context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); + context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); + context.lineTo(x - halfWidth, y - halfHeight); + context.lineTo(x, y - halfHeight); + context.closePath(); +}; + +CRp$7.drawCutRectanglePath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var cornerLength = getCutRectangleCornerLength(); + + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(x - halfWidth + cornerLength, y - halfHeight); + context.lineTo(x + halfWidth - cornerLength, y - halfHeight); + context.lineTo(x + halfWidth, y - halfHeight + cornerLength); + context.lineTo(x + halfWidth, y + halfHeight - cornerLength); + context.lineTo(x + halfWidth - cornerLength, y + halfHeight); + context.lineTo(x - halfWidth + cornerLength, y + halfHeight); + context.lineTo(x - halfWidth, y + halfHeight - cornerLength); + context.lineTo(x - halfWidth, y - halfHeight + cornerLength); + context.closePath(); +}; + +CRp$7.drawBarrelPath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var xBegin = x - halfWidth; + var xEnd = x + halfWidth; + var yBegin = y - halfHeight; + var yEnd = y + halfHeight; + var barrelCurveConstants = getBarrelCurveConstants(width, height); + var wOffset = barrelCurveConstants.widthOffset; + var hOffset = barrelCurveConstants.heightOffset; + var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset; + + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(xBegin, yBegin + hOffset); + context.lineTo(xBegin, yEnd - hOffset); + context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd); + context.lineTo(xEnd - wOffset, yEnd); + context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset); + context.lineTo(xEnd, yBegin + hOffset); + context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin); + context.lineTo(xBegin + wOffset, yBegin); + context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset); + context.closePath(); +}; + +var sin0 = Math.sin(0); +var cos0 = Math.cos(0); +var sin = {}; +var cos = {}; +var ellipseStepSize = Math.PI / 40; + +for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { + sin[i] = Math.sin(i); + cos[i] = Math.cos(i); +} + +CRp$7.drawEllipsePath = function (context, centerX, centerY, width, height) { + if (context.beginPath) { + context.beginPath(); + } + + if (context.ellipse) { + context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI); + } else { + var xPos, yPos; + var rw = width / 2; + var rh = height / 2; + + for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { + xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0; + yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0; + + if (i === 0) { + context.moveTo(xPos, yPos); + } else { + context.lineTo(xPos, yPos); + } + } + } + + context.closePath(); +}; + +/* global atob, ArrayBuffer, Uint8Array, Blob */ +var CRp$8 = {}; + +CRp$8.createBuffer = function (w, h) { + var buffer = document.createElement('canvas'); // eslint-disable-line no-undef + + buffer.width = w; + buffer.height = h; + return [buffer, buffer.getContext('2d')]; +}; + +CRp$8.bufferCanvasImage = function (options) { + var cy = this.cy; + var eles = cy.mutableElements(); + var bb = eles.boundingBox(); + var ctrRect = this.findContainerClientCoords(); + var width = options.full ? Math.ceil(bb.w) : ctrRect[2]; + var height = options.full ? Math.ceil(bb.h) : ctrRect[3]; + var specdMaxDims = number(options.maxWidth) || number(options.maxHeight); + var pxRatio = this.getPixelRatio(); + var scale = 1; + + if (options.scale !== undefined) { + width *= options.scale; + height *= options.scale; + scale = options.scale; + } else if (specdMaxDims) { + var maxScaleW = Infinity; + var maxScaleH = Infinity; + + if (number(options.maxWidth)) { + maxScaleW = scale * options.maxWidth / width; + } + + if (number(options.maxHeight)) { + maxScaleH = scale * options.maxHeight / height; + } + + scale = Math.min(maxScaleW, maxScaleH); + width *= scale; + height *= scale; + } + + if (!specdMaxDims) { + width *= pxRatio; + height *= pxRatio; + scale *= pxRatio; + } + + var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef + + buffCanvas.width = width; + buffCanvas.height = height; + buffCanvas.style.width = width + 'px'; + buffCanvas.style.height = height + 'px'; + var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size + + if (width > 0 && height > 0) { + buffCxt.clearRect(0, 0, width, height); + buffCxt.globalCompositeOperation = 'source-over'; + var zsortedEles = this.getCachedZSortedEles(); + + if (options.full) { + // draw the full bounds of the graph + buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale); + buffCxt.scale(scale, scale); + this.drawElements(buffCxt, zsortedEles); + buffCxt.scale(1 / scale, 1 / scale); + buffCxt.translate(bb.x1 * scale, bb.y1 * scale); + } else { + // draw the current view + var pan = cy.pan(); + var translation = { + x: pan.x * scale, + y: pan.y * scale + }; + scale *= cy.zoom(); + buffCxt.translate(translation.x, translation.y); + buffCxt.scale(scale, scale); + this.drawElements(buffCxt, zsortedEles); + buffCxt.scale(1 / scale, 1 / scale); + buffCxt.translate(-translation.x, -translation.y); + } // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs + + + if (options.bg) { + buffCxt.globalCompositeOperation = 'destination-over'; + buffCxt.fillStyle = options.bg; + buffCxt.rect(0, 0, width, height); + buffCxt.fill(); + } + } + + return buffCanvas; +}; + +function b64ToBlob(b64, mimeType) { + var bytes = atob(b64); + var buff = new ArrayBuffer(bytes.length); + var buffUint8 = new Uint8Array(buff); + + for (var i = 0; i < bytes.length; i++) { + buffUint8[i] = bytes.charCodeAt(i); + } + + return new Blob([buff], { + type: mimeType + }); +} + +function b64UriToB64(b64uri) { + var i = b64uri.indexOf(','); + return b64uri.substr(i + 1); +} + +function output(options, canvas, mimeType) { + var getB64Uri = function getB64Uri() { + return canvas.toDataURL(mimeType, options.quality); + }; + + switch (options.output) { + case 'blob-promise': + return new Promise$1$1(function (resolve, reject) { + try { + canvas.toBlob(function (blob) { + if (blob != null) { + resolve(blob); + } else { + reject(new Error('`canvas.toBlob()` sent a null value in its callback')); + } + }, mimeType, options.quality); + } catch (err) { + reject(err); + } + }); + + case 'blob': + return b64ToBlob(b64UriToB64(getB64Uri()), mimeType); + + case 'base64': + return b64UriToB64(getB64Uri()); + + case 'base64uri': + default: + return getB64Uri(); + } +} + +CRp$8.png = function (options) { + return output(options, this.bufferCanvasImage(options), 'image/png'); +}; + +CRp$8.jpg = function (options) { + return output(options, this.bufferCanvasImage(options), 'image/jpeg'); +}; + +var CRp$9 = {}; + +CRp$9.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) { + switch (name) { + case 'ellipse': + return this.drawEllipsePath(context, centerX, centerY, width, height); + + case 'polygon': + return this.drawPolygonPath(context, centerX, centerY, width, height, points); + + case 'round-polygon': + return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points); + + case 'roundrectangle': + case 'round-rectangle': + return this.drawRoundRectanglePath(context, centerX, centerY, width, height); + + case 'cutrectangle': + case 'cut-rectangle': + return this.drawCutRectanglePath(context, centerX, centerY, width, height); + + case 'bottomroundrectangle': + case 'bottom-round-rectangle': + return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height); + + case 'barrel': + return this.drawBarrelPath(context, centerX, centerY, width, height); + } +}; + +var CR = CanvasRenderer; +var CRp$a = CanvasRenderer.prototype; +CRp$a.CANVAS_LAYERS = 3; // + +CRp$a.SELECT_BOX = 0; +CRp$a.DRAG = 1; +CRp$a.NODE = 2; +CRp$a.BUFFER_COUNT = 3; // + +CRp$a.TEXTURE_BUFFER = 0; +CRp$a.MOTIONBLUR_BUFFER_NODE = 1; +CRp$a.MOTIONBLUR_BUFFER_DRAG = 2; + +function CanvasRenderer(options) { + var r = this; + r.data = { + canvases: new Array(CRp$a.CANVAS_LAYERS), + contexts: new Array(CRp$a.CANVAS_LAYERS), + canvasNeedsRedraw: new Array(CRp$a.CANVAS_LAYERS), + bufferCanvases: new Array(CRp$a.BUFFER_COUNT), + bufferContexts: new Array(CRp$a.CANVAS_LAYERS) + }; + var tapHlOffAttr = '-webkit-tap-highlight-color'; + var tapHlOffStyle = 'rgba(0,0,0,0)'; + r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef + + var containerStyle = r.data.canvasContainer.style; + r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle; + containerStyle.position = 'relative'; + containerStyle.zIndex = '0'; + containerStyle.overflow = 'hidden'; + var container = options.cy.container(); + container.appendChild(r.data.canvasContainer); + container.style[tapHlOffAttr] = tapHlOffStyle; + var styleMap = { + '-webkit-user-select': 'none', + '-moz-user-select': '-moz-none', + 'user-select': 'none', + '-webkit-tap-highlight-color': 'rgba(0,0,0,0)', + 'outline-style': 'none' + }; + + if (ms()) { + styleMap['-ms-touch-action'] = 'none'; + styleMap['touch-action'] = 'none'; + } + + for (var i = 0; i < CRp$a.CANVAS_LAYERS; i++) { + var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef + + r.data.contexts[i] = canvas.getContext('2d'); + Object.keys(styleMap).forEach(function (k) { + canvas.style[k] = styleMap[k]; + }); + canvas.style.position = 'absolute'; + canvas.setAttribute('data-id', 'layer' + i); + canvas.style.zIndex = String(CRp$a.CANVAS_LAYERS - i); + r.data.canvasContainer.appendChild(canvas); + r.data.canvasNeedsRedraw[i] = false; + } + + r.data.topCanvas = r.data.canvases[0]; + r.data.canvases[CRp$a.NODE].setAttribute('data-id', 'layer' + CRp$a.NODE + '-node'); + r.data.canvases[CRp$a.SELECT_BOX].setAttribute('data-id', 'layer' + CRp$a.SELECT_BOX + '-selectbox'); + r.data.canvases[CRp$a.DRAG].setAttribute('data-id', 'layer' + CRp$a.DRAG + '-drag'); + + for (var i = 0; i < CRp$a.BUFFER_COUNT; i++) { + r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef + + r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d'); + r.data.bufferCanvases[i].style.position = 'absolute'; + r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i); + r.data.bufferCanvases[i].style.zIndex = String(-i - 1); + r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]); + } + + r.pathsEnabled = true; + var emptyBb = makeBoundingBox(); + + var getBoxCenter = function getBoxCenter(bb) { + return { + x: (bb.x1 + bb.x2) / 2, + y: (bb.y1 + bb.y2) / 2 + }; + }; + + var getCenterOffset = function getCenterOffset(bb) { + return { + x: -bb.w / 2, + y: -bb.h / 2 + }; + }; + + var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) { + var _p = ele[0]._private; + var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp; + return !same; + }; + + var getStyleKey = function getStyleKey(ele) { + return ele[0]._private.nodeKey; + }; + + var getLabelKey = function getLabelKey(ele) { + return ele[0]._private.labelStyleKey; + }; + + var getSourceLabelKey = function getSourceLabelKey(ele) { + return ele[0]._private.sourceLabelStyleKey; + }; + + var getTargetLabelKey = function getTargetLabelKey(ele) { + return ele[0]._private.targetLabelStyleKey; + }; + + var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElement(context, ele, bb, false, false, useEleOpacity); + }; + + var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity); + }; + + var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity); + }; + + var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity); + }; + + var getElementBox = function getElementBox(ele) { + ele.boundingBox(); + return ele[0]._private.bodyBounds; + }; + + var getLabelBox = function getLabelBox(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.main || emptyBb; + }; + + var getSourceLabelBox = function getSourceLabelBox(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.source || emptyBb; + }; + + var getTargetLabelBox = function getTargetLabelBox(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.target || emptyBb; + }; + + var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) { + return scaledLabelShown; + }; + + var getElementRotationPoint = function getElementRotationPoint(ele) { + return getBoxCenter(getElementBox(ele)); + }; + + var addTextMargin = function addTextMargin(prefix, pt, ele) { + var pre = prefix ? prefix + '-' : ''; + return { + x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue, + y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue + }; + }; + + var getRsPt = function getRsPt(ele, x, y) { + var rs = ele[0]._private.rscratch; + return { + x: rs[x], + y: rs[y] + }; + }; + + var getLabelRotationPoint = function getLabelRotationPoint(ele) { + return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele); + }; + + var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) { + return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele); + }; + + var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) { + return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele); + }; + + var getElementRotationOffset = function getElementRotationOffset(ele) { + return getCenterOffset(getElementBox(ele)); + }; + + var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) { + return getCenterOffset(getSourceLabelBox(ele)); + }; + + var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) { + return getCenterOffset(getTargetLabelBox(ele)); + }; + + var getLabelRotationOffset = function getLabelRotationOffset(ele) { + var bb = getLabelBox(ele); + var p = getCenterOffset(getLabelBox(ele)); + + if (ele.isNode()) { + switch (ele.pstyle('text-halign').value) { + case 'left': + p.x = -bb.w; + break; + + case 'right': + p.x = 0; + break; + } + + switch (ele.pstyle('text-valign').value) { + case 'top': + p.y = -bb.h; + break; + + case 'bottom': + p.y = 0; + break; + } + } + + return p; + }; + + var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, { + getKey: getStyleKey, + doesEleInvalidateKey: backgroundTimestampHasChanged, + drawElement: drawElement, + getBoundingBox: getElementBox, + getRotationPoint: getElementRotationPoint, + getRotationOffset: getElementRotationOffset, + allowEdgeTxrCaching: false, + allowParentTxrCaching: false + }); + var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, { + getKey: getLabelKey, + drawElement: drawLabel, + getBoundingBox: getLabelBox, + getRotationPoint: getLabelRotationPoint, + getRotationOffset: getLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, { + getKey: getSourceLabelKey, + drawElement: drawSourceLabel, + getBoundingBox: getSourceLabelBox, + getRotationPoint: getSourceLabelRotationPoint, + getRotationOffset: getSourceLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, { + getKey: getTargetLabelKey, + drawElement: drawTargetLabel, + getBoundingBox: getTargetLabelBox, + getRotationPoint: getTargetLabelRotationPoint, + getRotationOffset: getTargetLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r); + r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) { + // each cache should check for sub-key diff to see that the update affects that cache particularly + eleTxrCache.invalidateElements(eles); + lblTxrCache.invalidateElements(eles); + slbTxrCache.invalidateElements(eles); + tlbTxrCache.invalidateElements(eles); // any change invalidates the layers + + lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches + + for (var _i = 0; _i < eles.length; _i++) { + var _p = eles[_i]._private; + _p.oldBackgroundTimestamp = _p.backgroundTimestamp; + } + }); + + var refineInLayers = function refineInLayers(reqs) { + for (var i = 0; i < reqs.length; i++) { + lyrTxrCache.enqueueElementRefinement(reqs[i].ele); + } + }; + + eleTxrCache.onDequeue(refineInLayers); + lblTxrCache.onDequeue(refineInLayers); + slbTxrCache.onDequeue(refineInLayers); + tlbTxrCache.onDequeue(refineInLayers); +} + +CRp$a.redrawHint = function (group, bool) { + var r = this; + + switch (group) { + case 'eles': + r.data.canvasNeedsRedraw[CRp$a.NODE] = bool; + break; + + case 'drag': + r.data.canvasNeedsRedraw[CRp$a.DRAG] = bool; + break; + + case 'select': + r.data.canvasNeedsRedraw[CRp$a.SELECT_BOX] = bool; + break; + } +}; // whether to use Path2D caching for drawing + + +var pathsImpld = typeof Path2D !== 'undefined'; + +CRp$a.path2dEnabled = function (on) { + if (on === undefined) { + return this.pathsEnabled; + } + + this.pathsEnabled = on ? true : false; +}; + +CRp$a.usePaths = function () { + return pathsImpld && this.pathsEnabled; +}; + +CRp$a.setImgSmoothing = function (context, bool) { + if (context.imageSmoothingEnabled != null) { + context.imageSmoothingEnabled = bool; + } else { + context.webkitImageSmoothingEnabled = bool; + context.mozImageSmoothingEnabled = bool; + context.msImageSmoothingEnabled = bool; + } +}; + +CRp$a.getImgSmoothing = function (context) { + if (context.imageSmoothingEnabled != null) { + return context.imageSmoothingEnabled; + } else { + return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled; + } +}; + +CRp$a.makeOffscreenCanvas = function (width, height) { + var canvas; + + if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== ( "undefined" )) { + canvas = new OffscreenCanvas(width, height); + } else { + canvas = document.createElement('canvas'); // eslint-disable-line no-undef + + canvas.width = width; + canvas.height = height; + } + + return canvas; +}; + +[CRp, CRp$1, CRp$2, CRp$3, CRp$4, CRp$5, CRp$6, CRp$7, CRp$8, CRp$9].forEach(function (props) { + extend(CRp$a, props); +}); + +var renderer = [{ + name: 'null', + impl: NullRenderer +}, { + name: 'base', + impl: BR +}, { + name: 'canvas', + impl: CR +}]; + +var incExts = [{ + type: 'layout', + extensions: layout$2 +}, { + type: 'renderer', + extensions: renderer +}]; + +var extensions = {}; // registered modules for extensions, indexed by name + +var modules = {}; + +function setExtension(type, name, registrant) { + var ext = registrant; + + var overrideErr = function overrideErr(field) { + warn('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden'); + }; + + if (type === 'core') { + if (Core.prototype[name]) { + return overrideErr(name); + } else { + Core.prototype[name] = registrant; + } + } else if (type === 'collection') { + if (Collection.prototype[name]) { + return overrideErr(name); + } else { + Collection.prototype[name] = registrant; + } + } else if (type === 'layout') { + // fill in missing layout functions in the prototype + var Layout = function Layout(options) { + this.options = options; + registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on() + + if (!plainObject(this._private)) { + this._private = {}; + } + + this._private.cy = options.cy; + this._private.listeners = []; + this.createEmitter(); + }; + + var layoutProto = Layout.prototype = Object.create(registrant.prototype); + var optLayoutFns = []; + + for (var i = 0; i < optLayoutFns.length; i++) { + var fnName = optLayoutFns[i]; + + layoutProto[fnName] = layoutProto[fnName] || function () { + return this; + }; + } // either .start() or .run() is defined, so autogen the other + + + if (layoutProto.start && !layoutProto.run) { + layoutProto.run = function () { + this.start(); + return this; + }; + } else if (!layoutProto.start && layoutProto.run) { + layoutProto.start = function () { + this.run(); + return this; + }; + } + + var regStop = registrant.prototype.stop; + + layoutProto.stop = function () { + var opts = this.options; + + if (opts && opts.animate) { + var anis = this.animations; + + if (anis) { + for (var _i = 0; _i < anis.length; _i++) { + anis[_i].stop(); + } + } + } + + if (regStop) { + regStop.call(this); + } else { + this.emit('layoutstop'); + } + + return this; + }; + + if (!layoutProto.destroy) { + layoutProto.destroy = function () { + return this; + }; + } + + layoutProto.cy = function () { + return this._private.cy; + }; + + var getCy = function getCy(layout) { + return layout._private.cy; + }; + + var emitterOpts = { + addEventFields: function addEventFields(layout, evt) { + evt.layout = layout; + evt.cy = getCy(layout); + evt.target = layout; + }, + bubble: function bubble() { + return true; + }, + parent: function parent(layout) { + return getCy(layout); + } + }; + extend(layoutProto, { + createEmitter: function createEmitter() { + this._private.emitter = new Emitter(emitterOpts, this); + return this; + }, + emitter: function emitter() { + return this._private.emitter; + }, + on: function on(evt, cb) { + this.emitter().on(evt, cb); + return this; + }, + one: function one(evt, cb) { + this.emitter().one(evt, cb); + return this; + }, + once: function once(evt, cb) { + this.emitter().one(evt, cb); + return this; + }, + removeListener: function removeListener(evt, cb) { + this.emitter().removeListener(evt, cb); + return this; + }, + removeAllListeners: function removeAllListeners() { + this.emitter().removeAllListeners(); + return this; + }, + emit: function emit(evt, params) { + this.emitter().emit(evt, params); + return this; + } + }); + define$3.eventAliasesOn(layoutProto); + ext = Layout; // replace with our wrapped layout + } else if (type === 'renderer' && name !== 'null' && name !== 'base') { + // user registered renderers inherit from base + var BaseRenderer = getExtension('renderer', 'base'); + var bProto = BaseRenderer.prototype; + var RegistrantRenderer = registrant; + var rProto = registrant.prototype; + + var Renderer = function Renderer() { + BaseRenderer.apply(this, arguments); + RegistrantRenderer.apply(this, arguments); + }; + + var proto = Renderer.prototype; + + for (var pName in bProto) { + var pVal = bProto[pName]; + var existsInR = rProto[pName] != null; + + if (existsInR) { + return overrideErr(pName); + } + + proto[pName] = pVal; // take impl from base + } + + for (var _pName in rProto) { + proto[_pName] = rProto[_pName]; // take impl from registrant + } + + bProto.clientFunctions.forEach(function (name) { + proto[name] = proto[name] || function () { + error('Renderer does not implement `renderer.' + name + '()` on its prototype'); + }; + }); + ext = Renderer; + } + + return setMap({ + map: extensions, + keys: [type, name], + value: ext + }); +} + +function getExtension(type, name) { + return getMap({ + map: extensions, + keys: [type, name] + }); +} + +function setModule(type, name, moduleType, moduleName, registrant) { + return setMap({ + map: modules, + keys: [type, name, moduleType, moduleName], + value: registrant + }); +} + +function getModule(type, name, moduleType, moduleName) { + return getMap({ + map: modules, + keys: [type, name, moduleType, moduleName] + }); +} + +var extension$1 = function extension() { + // e.g. extension('renderer', 'svg') + if (arguments.length === 2) { + return getExtension.apply(null, arguments); + } // e.g. extension('renderer', 'svg', { ... }) + else if (arguments.length === 3) { + return setExtension.apply(null, arguments); + } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse') + else if (arguments.length === 4) { + return getModule.apply(null, arguments); + } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... }) + else if (arguments.length === 5) { + return setModule.apply(null, arguments); + } else { + error('Invalid extension access syntax'); + } +}; // allows a core instance to access extensions internally + + +Core.prototype.extension = extension$1; // included extensions + +incExts.forEach(function (group) { + group.extensions.forEach(function (ext) { + setExtension(group.type, ext.name, ext.impl); + }); +}); + +// (useful for init) + +var Stylesheet = function Stylesheet() { + if (!(this instanceof Stylesheet)) { + return new Stylesheet(); + } + + this.length = 0; +}; + +var sheetfn = Stylesheet.prototype; + +sheetfn.instanceString = function () { + return 'stylesheet'; +}; // just store the selector to be parsed later + + +sheetfn.selector = function (selector) { + var i = this.length++; + this[i] = { + selector: selector, + properties: [] + }; + return this; // chaining +}; // just store the property to be parsed later + + +sheetfn.css = function (name, value) { + var i = this.length - 1; + + if (string(name)) { + this[i].properties.push({ + name: name, + value: value + }); + } else if (plainObject(name)) { + var map = name; + var propNames = Object.keys(map); + + for (var j = 0; j < propNames.length; j++) { + var key = propNames[j]; + var mapVal = map[key]; + + if (mapVal == null) { + continue; + } + + var prop = Style.properties[key] || Style.properties[dash2camel(key)]; + + if (prop == null) { + continue; + } + + var _name = prop.name; + var _value = mapVal; + this[i].properties.push({ + name: _name, + value: _value + }); + } + } + + return this; // chaining +}; + +sheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet + +sheetfn.generateStyle = function (cy) { + var style = new Style(cy); + return this.appendToStyle(style); +}; // append a dummy stylesheet object on a real style object + + +sheetfn.appendToStyle = function (style) { + for (var i = 0; i < this.length; i++) { + var context = this[i]; + var selector = context.selector; + var props = context.properties; + style.selector(selector); // apply selector + + for (var j = 0; j < props.length; j++) { + var prop = props[j]; + style.css(prop.name, prop.value); // apply property + } + } + + return style; +}; + +var version$2 = "3.20.0"; + +var cytoscape$1 = function cytoscape(options) { + // if no options specified, use default + if (options === undefined) { + options = {}; + } // create instance + + + if (plainObject(options)) { + return new Core(options); + } // allow for registration of extensions + else if (string(options)) { + return extension$1.apply(extension$1, arguments); + } +}; // e.g. cytoscape.use( require('cytoscape-foo'), bar ) + + +cytoscape$1.use = function (ext) { + var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext + + args.unshift(cytoscape$1); // cytoscape is first arg to ext + + ext.apply(null, args); + return this; +}; + +cytoscape$1.warnings = function (bool) { + return warnings(bool); +}; // replaced by build system + + +cytoscape$1.version = version$2; // expose public apis (mostly for extensions) + +cytoscape$1.stylesheet = cytoscape$1.Stylesheet = Stylesheet; + +var cytoscape_cjs = cytoscape$1; + +// Material Design Icons v5.9.55 +var mdiAbTesting = "M4 2A2 2 0 0 0 2 4V12H4V8H6V12H8V4A2 2 0 0 0 6 2H4M4 4H6V6H4M22 15.5V14A2 2 0 0 0 20 12H16V22H20A2 2 0 0 0 22 20V18.5A1.54 1.54 0 0 0 20.5 17A1.54 1.54 0 0 0 22 15.5M20 20H18V18H20V20M20 16H18V14H20M5.79 21.61L4.21 20.39L18.21 2.39L19.79 3.61Z"; +var mdiAbacus = "M5 5H7V11H5V5M10 5H8V11H10V5M5 19H7V13H5V19M10 13H8V19H10V17H15V15H10V13M2 21H4V3H2V21M20 3V7H13V5H11V11H13V9H20V15H18V13H16V19H18V17H20V21H22V3H20Z"; +var mdiAbjadArabic = "M12 4C10.08 4 8.5 5.58 8.5 7.5C8.5 8.43 8.88 9.28 9.5 9.91C7.97 10.91 7 12.62 7 14.5C7 17.53 9.47 20 12.5 20C14.26 20 16 19.54 17.5 18.66L16.5 16.93C15.28 17.63 13.9 18 12.5 18C10.56 18 9 16.45 9 14.5C9 12.91 10.06 11.53 11.59 11.12L16.8 9.72L16.28 7.79L11.83 9C11.08 8.9 10.5 8.28 10.5 7.5C10.5 6.66 11.16 6 12 6C12.26 6 12.5 6.07 12.75 6.2L13.75 4.47C13.22 4.16 12.61 4 12 4Z"; +var mdiAbjadHebrew = "M3.9 4L9 10.03C7.58 10.17 6.36 11.18 6 12.59L4 20H6.07L7.92 13.11C8.09 12.46 8.69 12 9.36 12H10.69L17.47 20H20.1L15 13.97C16.42 13.83 17.64 12.82 18 11.41L20 4H17.93L16.08 10.89C15.91 11.54 15.31 12 14.64 12H13.31L6.53 4Z"; +var mdiAbugidaDevanagari = "M8 3V5H11C12.32 5 13.41 5.83 13.82 7H6V9H14V10H12C9.25 10 7 12.25 7 15C7 17.75 9.25 20 12 20C12.77 20 13.45 19.73 14 19.3V21H16V17H14C13.55 17.62 12.83 18 12 18C10.33 18 9 16.67 9 15C9 13.33 10.33 12 12 12H16V9H18V7H15.9C15.43 4.72 13.41 3 11 3H8Z"; +var mdiAbugidaThai = "M9 20C9 17.44 10.87 12.42 13.86 7.25C14.29 6.5 15.08 6 16 6C17.12 6 18 6.88 18 8V20H20V8C20 5.8 18.2 4 16 4C14.34 4 12.9 4.92 12.13 6.25C10.56 8.96 9.61 11.15 9 13.03V6.5C9 5.13 7.87 4 6.5 4C5.13 4 4 5.13 4 6.5C4 7.87 5.13 9 6.5 9C6.67 9 6.84 9 7 8.95V20M6.5 6C6.79 6 7 6.21 7 6.5C7 6.79 6.79 7 6.5 7C6.21 7 6 6.79 6 6.5C6 6.21 6.21 6 6.5 6Z"; +var mdiAccessPoint = "M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiAccessPointCheck = "M20.59 14.84L21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84M19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12V12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93M15.96 12.36C16.6 12.13 17.28 12 18 12C18 10.35 17.33 8.85 16.24 7.76L14.83 9.17C15.55 9.89 16 10.89 16 12C16 12.12 15.97 12.24 15.96 12.36M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76Z"; +var mdiAccessPointMinus = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M14 19H22V17H14V19Z"; +var mdiAccessPointNetwork = "M4.93,3.93C3.12,5.74 2,8.24 2,11C2,13.76 3.12,16.26 4.93,18.07L6.34,16.66C4.89,15.22 4,13.22 4,11C4,8.79 4.89,6.78 6.34,5.34L4.93,3.93M19.07,3.93L17.66,5.34C19.11,6.78 20,8.79 20,11C20,13.22 19.11,15.22 17.66,16.66L19.07,18.07C20.88,16.26 22,13.76 22,11C22,8.24 20.88,5.74 19.07,3.93M7.76,6.76C6.67,7.85 6,9.35 6,11C6,12.65 6.67,14.15 7.76,15.24L9.17,13.83C8.45,13.11 8,12.11 8,11C8,9.89 8.45,8.89 9.17,8.17L7.76,6.76M16.24,6.76L14.83,8.17C15.55,8.89 16,9.89 16,11C16,12.11 15.55,13.11 14.83,13.83L16.24,15.24C17.33,14.15 18,12.65 18,11C18,9.35 17.33,7.85 16.24,6.76M12,9A2,2 0 0,0 10,11A2,2 0 0,0 12,13A2,2 0 0,0 14,11A2,2 0 0,0 12,9M11,15V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V15H11Z"; +var mdiAccessPointNetworkOff = "M14.83,13.83C15.55,13.11 16,12.11 16,11C16,9.89 15.55,8.89 14.83,8.17L16.24,6.76C17.33,7.85 18,9.35 18,11C18,12.65 17.33,14.15 16.24,15.24L14.83,13.83M14,11A2,2 0 0,0 12,9C11.4,9 10.87,9.27 10.5,9.68L13.32,12.5C13.73,12.13 14,11.6 14,11M17.66,16.66L19.07,18.07C20.88,16.26 22,13.76 22,11C22,8.24 20.88,5.74 19.07,3.93L17.66,5.34C19.11,6.78 20,8.79 20,11C20,13.22 19.11,15.22 17.66,16.66M22,21.18V20H20.82L22,21.18M20.27,22L21,22.73L19.73,24L17.73,22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V15.27L8.34,12.61C8.54,13.07 8.82,13.5 9.17,13.83L7.76,15.24C6.67,14.15 6,12.65 6,11C6,10.77 6,10.54 6.04,10.31L4.37,8.64C4.14,9.39 4,10.18 4,11C4,13.22 4.89,15.22 6.34,16.66L4.93,18.07C3.12,16.26 2,13.76 2,11C2,9.61 2.29,8.28 2.81,7.08L1,5.27L2.28,4L3.7,5.42L5.15,6.87L6.63,8.35V8.35L8.17,9.9L10.28,12L11,12.71L18.27,20H18.28L20.28,22H20.27M15.73,20L13,17.27V19H14A1,1 0 0,1 15,20H15.73Z"; +var mdiAccessPointOff = "M20.84 22.73L12.1 14C12.06 14 12.03 14 12 14C10.9 14 10 13.11 10 12C10 11.97 10 11.94 10 11.9L8.4 10.29C8.15 10.81 8 11.38 8 12C8 13.11 8.45 14.11 9.17 14.83L7.76 16.24C6.67 15.15 6 13.65 6 12C6 10.83 6.34 9.74 6.93 8.82L5.5 7.37C4.55 8.67 4 10.27 4 12C4 14.22 4.89 16.22 6.34 17.66L4.93 19.07C3.12 17.26 2 14.76 2 12C2 9.72 2.77 7.63 4.06 5.95L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15.93 12.73L17.53 14.33C17.83 13.61 18 12.83 18 12C18 10.35 17.33 8.85 16.24 7.76L14.83 9.17C15.55 9.89 16 10.89 16 12C16 12.25 15.97 12.5 15.93 12.73M19.03 15.83L20.5 17.28C21.44 15.75 22 13.94 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 13.39 19.65 14.7 19.03 15.83Z"; +var mdiAccessPointPlus = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M19 14H17V17H14V19H17V22H19V19H22V17H19V14Z"; +var mdiAccessPointRemove = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.53 15.88L20.12 14.46Z"; +var mdiAccount = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"; +var mdiAccountAlert = "M10 4A4 4 0 0 1 14 8A4 4 0 0 1 10 12A4 4 0 0 1 6 8A4 4 0 0 1 10 4M10 14C14.42 14 18 15.79 18 18V20H2V18C2 15.79 5.58 14 10 14M20 12V7H22V13H20M20 17V15H22V17H20Z"; +var mdiAccountAlertOutline = "M20 12V7H22V13H20M20 17H22V15H20M10 13C12.67 13 18 14.34 18 17V20H2V17C2 14.34 7.33 13 10 13M10 4A4 4 0 0 1 14 8A4 4 0 0 1 10 12A4 4 0 0 1 6 8A4 4 0 0 1 10 4M10 14.9C7.03 14.9 3.9 16.36 3.9 17V18.1H16.1V17C16.1 16.36 12.97 14.9 10 14.9M10 5.9A2.1 2.1 0 0 0 7.9 8A2.1 2.1 0 0 0 10 10.1A2.1 2.1 0 0 0 12.1 8A2.1 2.1 0 0 0 10 5.9Z"; +var mdiAccountArrowLeft = "M18,21L15,18L18,15V17H22V19H18V21M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C11.15,14 12.25,14.12 13.24,14.34C12.46,15.35 12,16.62 12,18C12,18.7 12.12,19.37 12.34,20H2V18C2,15.79 5.58,14 10,14Z"; +var mdiAccountArrowLeftOutline = "M18,21L15,18L18,15V17H22V19H18V21M13,18C13,18.71 13.15,19.39 13.42,20H2V17C2,14.79 5.58,13 10,13C11,13 11.96,13.09 12.85,13.26C13.68,13.42 14.44,13.64 15.11,13.92C13.83,14.83 13,16.32 13,18M4,17V18H11C11,16.96 11.23,15.97 11.64,15.08L10,15C6.69,15 4,15.9 4,17M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,6A2,2 0 0,0 8,8A2,2 0 0,0 10,10A2,2 0 0,0 12,8A2,2 0 0,0 10,6Z"; +var mdiAccountArrowRight = "M19,21V19H15V17H19V15L22,18L19,21M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C11.15,14 12.25,14.12 13.24,14.34C12.46,15.35 12,16.62 12,18C12,18.7 12.12,19.37 12.34,20H2V18C2,15.79 5.58,14 10,14Z"; +var mdiAccountArrowRightOutline = "M19,21V19H15V17H19V15L22,18L19,21M13,18C13,18.71 13.15,19.39 13.42,20H2V17C2,14.79 5.58,13 10,13C11,13 11.96,13.09 12.85,13.26C13.68,13.42 14.44,13.64 15.11,13.92C13.83,14.83 13,16.32 13,18M4,17V18H11C11,16.96 11.23,15.97 11.64,15.08L10,15C6.69,15 4,15.9 4,17M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,6A2,2 0 0,0 8,8A2,2 0 0,0 10,10A2,2 0 0,0 12,8A2,2 0 0,0 10,6Z"; +var mdiAccountBox = "M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z"; +var mdiAccountBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H8A2,2 0 0,1 6,16V4A2,2 0 0,1 8,2H20M17,7A3,3 0 0,0 14,4A3,3 0 0,0 11,7A3,3 0 0,0 14,10A3,3 0 0,0 17,7M8,15V16H20V15C20,13 16,11.9 14,11.9C12,11.9 8,13 8,15Z"; +var mdiAccountBoxMultipleOutline = "M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6M18.5 14.25C18.5 12.75 15.5 12 14 12S9.5 12.75 9.5 14.25V15H18.5M14 10.25C15.24 10.25 16.25 9.24 16.25 8S15.24 5.75 14 5.75 11.75 6.76 11.75 8 12.76 10.25 14 10.25M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.89 21.1 2 20 2M20 16H8V4H20V16Z"; +var mdiAccountBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z"; +var mdiAccountCancel = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M17.5 13C15 13 13 15 13 17.5C13 20 15 22 17.5 22C20 22 22 20 22 17.5C22 15 20 13 17.5 13M10 14C5.58 14 2 15.79 2 18V20H11.5A6.5 6.5 0 0 1 11 17.5A6.5 6.5 0 0 1 11.95 14.14C11.32 14.06 10.68 14 10 14M17.5 14.5C19.16 14.5 20.5 15.84 20.5 17.5C20.5 18.06 20.35 18.58 20.08 19L16 14.92C16.42 14.65 16.94 14.5 17.5 14.5M14.92 16L19 20.08C18.58 20.35 18.06 20.5 17.5 20.5C15.84 20.5 14.5 19.16 14.5 17.5C14.5 16.94 14.65 16.42 14.92 16Z"; +var mdiAccountCancelOutline = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M10 6A2 2 0 0 1 12 8A2 2 0 0 1 10 10A2 2 0 0 1 8 8A2 2 0 0 1 10 6M10 13C7.33 13 2 14.33 2 17V20H11.5A6.5 6.5 0 0 1 11.03 18.1H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.5 14.9 11 14.95 11.5 15.03A6.5 6.5 0 0 1 12.55 13.29C11.61 13.1 10.71 13 10 13M17.5 13C15 13 13 15 13 17.5C13 20 15 22 17.5 22C20 22 22 20 22 17.5C22 15 20 13 17.5 13M17.5 14.5C19.16 14.5 20.5 15.84 20.5 17.5C20.5 18.06 20.35 18.58 20.08 19L16 14.92C16.42 14.65 16.94 14.5 17.5 14.5M14.92 16L19 20.08C18.58 20.35 18.06 20.5 17.5 20.5C15.84 20.5 14.5 19.16 14.5 17.5C14.5 16.94 14.65 16.42 14.92 16Z"; +var mdiAccountCash = "M11 8C11 10.21 9.21 12 7 12C4.79 12 3 10.21 3 8C3 5.79 4.79 4 7 4C9.21 4 11 5.79 11 8M11 14.72V20H0V18C0 15.79 3.13 14 7 14C8.5 14 9.87 14.27 11 14.72M24 20H13V3H24V20M16 11.5C16 10.12 17.12 9 18.5 9C19.88 9 21 10.12 21 11.5C21 12.88 19.88 14 18.5 14C17.12 14 16 12.88 16 11.5M22 7C20.9 7 20 6.11 20 5H17C17 6.11 16.11 7 15 7V16C16.11 16 17 16.9 17 18H20C20 16.9 20.9 16 22 16V7Z"; +var mdiAccountCashOutline = "M16 11.5C16 10.12 17.12 9 18.5 9S21 10.12 21 11.5 19.88 14 18.5 14 16 12.88 16 11.5M13 3V20H24V3H13M22 16C20.9 16 20 16.9 20 18H17C17 16.9 16.11 16 15 16V7C16.11 7 17 6.11 17 5H20C20 6.11 20.9 7 22 7V16M7 6C8.1 6 9 6.9 9 8S8.1 10 7 10 5 9.1 5 8 5.9 6 7 6M7 4C4.79 4 3 5.79 3 8S4.79 12 7 12 11 10.21 11 8 9.21 4 7 4M7 14C3.13 14 0 15.79 0 18V20H11V18H2C2 17.42 3.75 16 7 16C8.83 16 10.17 16.45 11 16.95V14.72C9.87 14.27 8.5 14 7 14Z"; +var mdiAccountCheck = "M21.1,12.5L22.5,13.91L15.97,20.5L12.5,17L13.9,15.59L15.97,17.67L21.1,12.5M10,17L13,20H3V18C3,15.79 6.58,14 11,14L12.89,14.11L10,17M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4Z"; +var mdiAccountCheckOutline = "M21.1,12.5L22.5,13.91L15.97,20.5L12.5,17L13.9,15.59L15.97,17.67L21.1,12.5M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4M11,6A2,2 0 0,0 9,8A2,2 0 0,0 11,10A2,2 0 0,0 13,8A2,2 0 0,0 11,6M11,13C11.68,13 12.5,13.09 13.41,13.26L11.74,14.93L11,14.9C8.03,14.9 4.9,16.36 4.9,17V18.1H11.1L13,20H3V17C3,14.34 8.33,13 11,13Z"; +var mdiAccountChild = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M12,9C13.63,9 15.12,9.35 16.5,10.05C17.84,10.76 18.5,11.61 18.5,12.61V18.38C18.5,19.5 17.64,20.44 15.89,21.19V19C15.89,18.05 15.03,17.38 13.31,16.97C12.75,16.84 12.31,16.78 12,16.78C11.13,16.78 10.3,16.95 9.54,17.3C8.77,17.64 8.31,18.08 8.16,18.61C9.5,19.14 10.78,19.41 12,19.41L13,19.31V21.94L12,22C10.63,22 9.33,21.72 8.11,21.19C6.36,20.44 5.5,19.5 5.5,18.38V12.61C5.5,11.61 6.16,10.76 7.5,10.05C8.88,9.35 10.38,9 12,9M12,11A2,2 0 0,0 10,13A2,2 0 0,0 12,15A2,2 0 0,0 14,13A2,2 0 0,0 12,11Z"; +var mdiAccountChildCircle = "M12,12A1.5,1.5 0 0,1 13.5,13.5A1.5,1.5 0 0,1 12,15A1.5,1.5 0 0,1 10.5,13.5A1.5,1.5 0 0,1 12,12M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,16C12.72,16 13.4,16.15 14.04,16.5C14.68,16.8 15,17.2 15,17.67V19.41C16.34,18.81 17,18.08 17,17.2V12.8C17,12 16.5,11.35 15.45,10.8C14.4,10.26 13.25,10 12,10C10.75,10 9.6,10.26 8.55,10.8C7.5,11.35 7,12 7,12.8V17.2C7,18 7.53,18.69 8.63,19.22C9.72,19.75 10.84,20 12,20L13,19.92V17.91L12,18C11,18 10,17.8 9.05,17.39C9.17,17 9.53,16.69 10.13,16.41C10.72,16.13 11.34,16 12,16M12,4A2.5,2.5 0 0,0 9.5,6.5A2.5,2.5 0 0,0 12,9A2.5,2.5 0 0,0 14.5,6.5A2.5,2.5 0 0,0 12,4Z"; +var mdiAccountChildOutline = "M12 17C10.9 17 10 16.1 10 15C10 13.9 10.9 13 12 13C13.1 13 14 13.9 14 15C14 16.1 13.1 17 12 17M12 10C14.34 10 19 11.16 19 13.5V18.63C19 19.5 18.31 20.24 17.34 20.79V13.38C17.34 12.82 14.6 11.54 12 11.54C9.4 11.54 6.66 12.82 6.66 13.38V18.75C6.66 19 7.31 19.46 8.28 19.85C9 19 10.93 18.56 12 18.56C13.33 18.56 16 19.22 16 20.56V21.39C14.63 21.88 13.07 22.13 12 22.13C10.93 22.13 9.38 21.88 8 21.39H8C6.37 20.81 5 19.89 5 18.63V13.5C5 11.16 9.66 10 12 10M12 3.75C11.03 3.75 10.25 4.53 10.25 5.5C10.25 6.47 11.03 7.25 12 7.25C12.97 7.25 13.75 6.47 13.75 5.5C13.75 4.53 12.97 3.75 12 3.75M12 9C10.07 9 8.5 7.43 8.5 5.5C8.5 3.57 10.07 2 12 2C13.93 2 15.5 3.57 15.5 5.5C15.5 7.43 13.93 9 12 9Z"; +var mdiAccountCircle = "M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"; +var mdiAccountCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z"; +var mdiAccountClock = "M10.63,14.1C12.23,10.58 16.38,9.03 19.9,10.63C23.42,12.23 24.97,16.38 23.37,19.9C22.24,22.4 19.75,24 17,24C14.3,24 11.83,22.44 10.67,20H1V18C1.06,16.86 1.84,15.93 3.34,15.18C4.84,14.43 6.72,14.04 9,14C9.57,14 10.11,14.05 10.63,14.1V14.1M9,4C10.12,4.03 11.06,4.42 11.81,5.17C12.56,5.92 12.93,6.86 12.93,8C12.93,9.14 12.56,10.08 11.81,10.83C11.06,11.58 10.12,11.95 9,11.95C7.88,11.95 6.94,11.58 6.19,10.83C5.44,10.08 5.07,9.14 5.07,8C5.07,6.86 5.44,5.92 6.19,5.17C6.94,4.42 7.88,4.03 9,4M17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14Z"; +var mdiAccountClockOutline = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M17,10A7,7 0 0,1 24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H1V17C1,14.34 6.33,13 9,13C9.6,13 10.34,13.07 11.12,13.2C12.36,11.28 14.53,10 17,10M10,17C10,16.3 10.1,15.62 10.29,15C9.87,14.93 9.43,14.9 9,14.9C6.03,14.9 2.9,16.36 2.9,17V18.1H10.09C10.03,17.74 10,17.37 10,17M9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4M9,5.9A2.1,2.1 0 0,0 6.9,8A2.1,2.1 0 0,0 9,10.1A2.1,2.1 0 0,0 11.1,8A2.1,2.1 0 0,0 9,5.9Z"; +var mdiAccountCog = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M17 12C16.87 12 16.76 12.09 16.74 12.21L16.55 13.53C16.25 13.66 15.96 13.82 15.7 14L14.46 13.5C14.35 13.5 14.22 13.5 14.15 13.63L13.15 15.36C13.09 15.47 13.11 15.6 13.21 15.68L14.27 16.5C14.25 16.67 14.24 16.83 14.24 17C14.24 17.17 14.25 17.33 14.27 17.5L13.21 18.32C13.12 18.4 13.09 18.53 13.15 18.64L14.15 20.37C14.21 20.5 14.34 20.5 14.46 20.5L15.7 20C15.96 20.18 16.24 20.35 16.55 20.47L16.74 21.79C16.76 21.91 16.86 22 17 22H19C19.11 22 19.22 21.91 19.24 21.79L19.43 20.47C19.73 20.34 20 20.18 20.27 20L21.5 20.5C21.63 20.5 21.76 20.5 21.83 20.37L22.83 18.64C22.89 18.53 22.86 18.4 22.77 18.32L21.7 17.5C21.72 17.33 21.74 17.17 21.74 17C21.74 16.83 21.73 16.67 21.7 16.5L22.76 15.68C22.85 15.6 22.88 15.47 22.82 15.36L21.82 13.63C21.76 13.5 21.63 13.5 21.5 13.5L20.27 14C20 13.82 19.73 13.65 19.42 13.53L19.23 12.21C19.22 12.09 19.11 12 19 12H17M10 14C5.58 14 2 15.79 2 18V20H11.68A7 7 0 0 1 11 17A7 7 0 0 1 11.64 14.09C11.11 14.03 10.56 14 10 14M18 15.5C18.83 15.5 19.5 16.17 19.5 17C19.5 17.83 18.83 18.5 18 18.5C17.16 18.5 16.5 17.83 16.5 17C16.5 16.17 17.17 15.5 18 15.5Z"; +var mdiAccountCogOutline = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M10 6A2 2 0 0 1 12 8A2 2 0 0 1 10 10A2 2 0 0 1 8 8A2 2 0 0 1 10 6M17 12C16.84 12 16.76 12.08 16.76 12.24L16.5 13.5C16.28 13.68 15.96 13.84 15.72 14L14.44 13.5C14.36 13.5 14.2 13.5 14.12 13.6L13.16 15.36C13.08 15.44 13.08 15.6 13.24 15.68L14.28 16.5V17.5L13.24 18.32C13.16 18.4 13.08 18.56 13.16 18.64L14.12 20.4C14.2 20.5 14.36 20.5 14.44 20.5L15.72 20C15.96 20.16 16.28 20.32 16.5 20.5L16.76 21.76C16.76 21.92 16.84 22 17 22H19C19.08 22 19.24 21.92 19.24 21.76L19.4 20.5C19.72 20.32 20.04 20.16 20.28 20L21.5 20.5C21.64 20.5 21.8 20.5 21.8 20.4L22.84 18.64C22.92 18.56 22.84 18.4 22.76 18.32L21.72 17.5V16.5L22.76 15.68C22.84 15.6 22.92 15.44 22.84 15.36L21.8 13.6C21.8 13.5 21.64 13.5 21.5 13.5L20.28 14C20.04 13.84 19.72 13.68 19.4 13.5L19.24 12.24C19.24 12.08 19.08 12 19 12H17M10 13C7.33 13 2 14.33 2 17V20H11.67C11.39 19.41 11.19 18.77 11.09 18.1H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.43 14.9 10.87 14.94 11.3 15C11.5 14.36 11.77 13.76 12.12 13.21C11.34 13.08 10.6 13 10 13M18.04 15.5C18.84 15.5 19.5 16.16 19.5 17.04C19.5 17.84 18.84 18.5 18.04 18.5C17.16 18.5 16.5 17.84 16.5 17.04C16.5 16.16 17.16 15.5 18.04 15.5Z"; +var mdiAccountConvert = "M12 0L11.34 .03L15.15 3.84L16.5 2.5C19.75 4.07 22.09 7.24 22.45 11H23.95C23.44 4.84 18.29 0 12 0M12 4C10.07 4 8.5 5.57 8.5 7.5C8.5 9.43 10.07 11 12 11C13.93 11 15.5 9.43 15.5 7.5C15.5 5.57 13.93 4 12 4M.05 13C.56 19.16 5.71 24 12 24L12.66 23.97L8.85 20.16L7.5 21.5C4.25 19.94 1.91 16.76 1.55 13H.05M12 13C8.13 13 5 14.57 5 16.5V18H19V16.5C19 14.57 15.87 13 12 13Z"; +var mdiAccountConvertOutline = "M12 0L11.34 .03L15.15 3.84L16.5 2.5C19.75 4.07 22.09 7.24 22.45 11H23.95C23.44 4.84 18.29 0 12 0M12 4C10.07 4 8.5 5.57 8.5 7.5C8.5 9.43 10.07 11 12 11C13.93 11 15.5 9.43 15.5 7.5C15.5 5.57 13.93 4 12 4M12 6C12.83 6 13.5 6.67 13.5 7.5C13.5 8.33 12.83 9 12 9C11.17 9 10.5 8.33 10.5 7.5C10.5 6.67 11.17 6 12 6M.05 13C.56 19.16 5.71 24 12 24L12.66 23.97L8.85 20.16L7.5 21.5C4.25 19.94 1.91 16.76 1.55 13H.05M12 13C8.13 13 5 14.57 5 16.5V18H19V16.5C19 14.57 15.87 13 12 13M12 15C14.11 15 15.61 15.53 16.39 16H7.61C8.39 15.53 9.89 15 12 15Z"; +var mdiAccountCowboyHat = "M20 22H4V20C4 17.8 7.6 16 12 16S20 17.8 20 20M8 9H16V10C16 12.2 14.2 14 12 14S8 12.2 8 10M19 4C18.4 4 18 4.4 18 5V6H16.5L15.1 3C15 2.8 14.9 2.6 14.7 2.5C14.2 2 13.4 1.9 12.7 2.2L12 2.4L11.3 2.1C10.6 1.8 9.8 1.9 9.3 2.4C9.1 2.6 9 2.8 8.9 3L7.5 6H6V5C6 4.4 5.6 4 5 4S4 4.4 4 5V6C4 7.1 4.9 8 6 8H18C19.1 8 20 7.1 20 6V5C20 4.5 19.6 4 19 4Z"; +var mdiAccountDetails = "M11 9C11 10.66 9.66 12 8 12C6.34 12 5 10.66 5 9C5 7.34 6.34 6 8 6C9.66 6 11 7.34 11 9M14 20H2V18C2 15.79 4.69 14 8 14C11.31 14 14 15.79 14 18M22 12V14H13V12M22 8V10H13V8M22 4V6H13V4Z"; +var mdiAccountDetailsOutline = "M11 9C11 10.66 9.66 12 8 12C6.34 12 5 10.66 5 9C5 7.34 6.34 6 8 6C9.66 6 11 7.34 11 9M14 20H2V18C2 15.79 4.69 14 8 14C11.31 14 14 15.79 14 18M7 9C7 9.55 7.45 10 8 10C8.55 10 9 9.55 9 9C9 8.45 8.55 8 8 8C7.45 8 7 8.45 7 9M4 18H12C12 16.9 10.21 16 8 16C5.79 16 4 16.9 4 18M22 12V14H13V12M22 8V10H13V8M22 4V6H13V4Z"; +var mdiAccountEdit = "M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.09 20.21,11.09 20.42,11.3L21.7,12.58C21.91,12.79 21.91,13.14 21.7,13.35M12,18.94L18.06,12.88L20.11,14.93L14.06,21H12V18.94M12,14C7.58,14 4,15.79 4,18V20H10V18.11L14,14.11C13.34,14.03 12.67,14 12,14M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4Z"; +var mdiAccountEditOutline = "M2 17V20H10V18.11H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.96 14.91 11.91 15.04 12.83 15.28L14.35 13.76C12.95 13.29 11.5 13.03 10 13C7.33 13 2 14.33 2 17M10 4C7.79 4 6 5.79 6 8S7.79 12 10 12 14 10.21 14 8 12.21 4 10 4M10 10C8.9 10 8 9.11 8 8S8.9 6 10 6 12 6.9 12 8 11.11 10 10 10M21.7 13.35L20.7 14.35L18.65 12.35L19.65 11.35C19.86 11.14 20.21 11.14 20.42 11.35L21.7 12.63C21.91 12.84 21.91 13.19 21.7 13.4M12 18.94L18.06 12.88L20.11 14.88L14.11 20.95H12V18.94"; +var mdiAccountGroup = "M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z"; +var mdiAccountGroupOutline = "M12,5A3.5,3.5 0 0,0 8.5,8.5A3.5,3.5 0 0,0 12,12A3.5,3.5 0 0,0 15.5,8.5A3.5,3.5 0 0,0 12,5M12,7A1.5,1.5 0 0,1 13.5,8.5A1.5,1.5 0 0,1 12,10A1.5,1.5 0 0,1 10.5,8.5A1.5,1.5 0 0,1 12,7M5.5,8A2.5,2.5 0 0,0 3,10.5C3,11.44 3.53,12.25 4.29,12.68C4.65,12.88 5.06,13 5.5,13C5.94,13 6.35,12.88 6.71,12.68C7.08,12.47 7.39,12.17 7.62,11.81C6.89,10.86 6.5,9.7 6.5,8.5C6.5,8.41 6.5,8.31 6.5,8.22C6.2,8.08 5.86,8 5.5,8M18.5,8C18.14,8 17.8,8.08 17.5,8.22C17.5,8.31 17.5,8.41 17.5,8.5C17.5,9.7 17.11,10.86 16.38,11.81C16.5,12 16.63,12.15 16.78,12.3C16.94,12.45 17.1,12.58 17.29,12.68C17.65,12.88 18.06,13 18.5,13C18.94,13 19.35,12.88 19.71,12.68C20.47,12.25 21,11.44 21,10.5A2.5,2.5 0 0,0 18.5,8M12,14C9.66,14 5,15.17 5,17.5V19H19V17.5C19,15.17 14.34,14 12,14M4.71,14.55C2.78,14.78 0,15.76 0,17.5V19H3V17.07C3,16.06 3.69,15.22 4.71,14.55M19.29,14.55C20.31,15.22 21,16.06 21,17.07V19H24V17.5C24,15.76 21.22,14.78 19.29,14.55M12,16C13.53,16 15.24,16.5 16.23,17H7.77C8.76,16.5 10.47,16 12,16Z"; +var mdiAccountHardHat = "M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z"; +var mdiAccountHeart = "M15,14C12.3,14 7,15.3 7,18V20H23V18C23,15.3 17.7,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,15L4.4,14.5C2.4,12.6 1,11.4 1,9.9C1,8.7 2,7.7 3.2,7.7C3.9,7.7 4.6,8 5,8.5C5.4,8 6.1,7.7 6.8,7.7C8,7.7 9,8.6 9,9.9C9,11.4 7.6,12.6 5.6,14.5L5,15Z"; +var mdiAccountHeartOutline = "M5,15L4.4,14.5C2.4,12.6 1,11.4 1,9.9C1,8.7 2,7.7 3.2,7.7C3.9,7.7 4.6,8 5,8.5C5.4,8 6.1,7.7 6.8,7.7C8,7.7 9,8.6 9,9.9C9,11.4 7.6,12.6 5.6,14.5L5,15M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M21.1,18.1H8.9V17C8.9,16.36 12,14.9 15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1Z"; +var mdiAccountKey = "M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z"; +var mdiAccountKeyOutline = "M5.83,10C5.42,8.83 4.31,8 3,8A3,3 0 0,0 0,11A3,3 0 0,0 3,14C4.31,14 5.42,13.17 5.83,12H8V14H10V12H11V10H5.83M3,12A1,1 0 0,1 2,11A1,1 0 0,1 3,10A1,1 0 0,1 4,11A1,1 0 0,1 3,12M16,4A4,4 0 0,0 12,8A4,4 0 0,0 16,12A4,4 0 0,0 20,8A4,4 0 0,0 16,4M16,10.1A2.1,2.1 0 0,1 13.9,8A2.1,2.1 0 0,1 16,5.9C17.16,5.9 18.1,6.84 18.1,8C18.1,9.16 17.16,10.1 16,10.1M16,13C13.33,13 8,14.33 8,17V20H24V17C24,14.33 18.67,13 16,13M22.1,18.1H9.9V17C9.9,16.36 13,14.9 16,14.9C18.97,14.9 22.1,16.36 22.1,17V18.1Z"; +var mdiAccountLock = "M22 17V16.5C22 15.12 20.88 14 19.5 14S17 15.12 17 16.5V17C16.45 17 16 17.45 16 18V22C16 22.55 16.45 23 17 23H22C22.55 23 23 22.55 23 22V18C23 17.45 22.55 17 22 17M21 17H18V16.5C18 15.67 18.67 15 19.5 15S21 15.67 21 16.5V17M8 8C8 5.79 9.79 4 12 4S16 5.79 16 8 14.21 12 12 12 8 10.21 8 8M14 20H4V18C4 15.79 7.58 14 12 14C13.27 14 14.46 14.15 15.53 14.41C15.32 14.82 15.15 15.25 15.07 15.71C14.42 16.26 14 17.08 14 18V20Z"; +var mdiAccountLockOutline = "M22 17V16.5C22 15.12 20.88 14 19.5 14S17 15.12 17 16.5V17C16.45 17 16 17.45 16 18V22C16 22.55 16.45 23 17 23H22C22.55 23 23 22.55 23 22V18C23 17.45 22.55 17 22 17M21 17H18V16.5C18 15.67 18.67 15 19.5 15S21 15.67 21 16.5V17M14 20H4V17C4 14.33 9.33 13 12 13C13.08 13 14.6 13.22 16 13.66C15.61 14.15 15.33 14.74 15.16 15.38C14.19 15.1 13.09 14.9 12 14.9C9.03 14.9 5.9 16.36 5.9 17V18.1H14V20M12 12C14.21 12 16 10.21 16 8S14.21 4 12 4 8 5.79 8 8 9.79 12 12 12M12 6C13.11 6 14 6.9 14 8S13.11 10 12 10 10 9.11 10 8 10.9 6 12 6Z"; +var mdiAccountMinus = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z"; +var mdiAccountMinusOutline = "M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9M1,10V12H9V10H1M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1H8.9V17C8.9,16.36 12,14.9 15,14.9Z"; +var mdiAccountMultiple = "M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z"; +var mdiAccountMultipleCheck = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M7.34 8.92L8.5 10.33L3.75 15.08L1 12.08L2.16 10.92L3.75 12.5L7.34 8.92"; +var mdiAccountMultipleCheckOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M7.34 8.92L8.5 10.33L3.75 15.08L1 12.08L2.16 10.92L3.75 12.5L7.34 8.92"; +var mdiAccountMultipleMinus = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H0V12H8Z"; +var mdiAccountMultipleMinusOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M8 12H0V10H8Z"; +var mdiAccountMultipleOutline = "M13.07 10.41A5 5 0 0 0 13.07 4.59A3.39 3.39 0 0 1 15 4A3.5 3.5 0 0 1 15 11A3.39 3.39 0 0 1 13.07 10.41M5.5 7.5A3.5 3.5 0 1 1 9 11A3.5 3.5 0 0 1 5.5 7.5M7.5 7.5A1.5 1.5 0 1 0 9 6A1.5 1.5 0 0 0 7.5 7.5M16 17V19H2V17S2 13 9 13 16 17 16 17M14 17C13.86 16.22 12.67 15 9 15S4.07 16.31 4 17M15.95 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13Z"; +var mdiAccountMultiplePlus = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H5V7H3V10H0V12H3V15H5V12H8Z"; +var mdiAccountMultiplePlusOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M8 12H5V15H3V12H0V10H3V7H5V10H8Z"; +var mdiAccountMultipleRemove = "M24 17V19H21V17C21 15.45 20.3 14.06 19.18 13.06C24 13.55 24 17 24 17M18 5C19.66 5 21 6.34 21 8C21 9.66 19.66 11 18 11C17.69 11 17.38 10.95 17.1 10.86C17.67 10.05 18 9.07 18 8C18 6.94 17.67 5.95 17.1 5.14C17.38 5.05 17.69 5 18 5M13 5C14.66 5 16 6.34 16 8C16 9.66 14.66 11 13 11C11.34 11 10 9.66 10 8C10 6.34 11.34 5 13 5M19 17V19H7V17C7 14.79 9.69 13 13 13C16.31 13 19 14.79 19 17M.464 13.12L2.59 11L.464 8.88L1.88 7.46L4 9.59L6.12 7.46L7.54 8.88L5.41 11L7.54 13.12L6.12 14.54L4 12.41L1.88 14.54Z"; +var mdiAccountMultipleRemoveOutline = "M24 17V19H21V17C21 15.45 20.3 14.06 19.18 13.06C24 13.55 24 17 24 17M18 5C19.66 5 21 6.34 21 8C21 9.66 19.66 11 18 11C17.69 11 17.38 10.95 17.1 10.86C17.67 10.05 18 9.07 18 8C18 6.94 17.67 5.95 17.1 5.14C17.38 5.05 17.69 5 18 5M13 5C14.66 5 16 6.34 16 8C16 9.66 14.66 11 13 11C11.34 11 10 9.66 10 8C10 6.34 11.34 5 13 5M19 17V19H7V17C7 14.79 9.69 13 13 13C16.31 13 19 14.79 19 17M13 7C12.45 7 12 7.45 12 8C12 8.55 12.45 9 13 9C13.55 9 14 8.55 14 8C14 7.45 13.55 7 13 7M13 15C10.79 15 9 15.9 9 17H17C17 15.9 15.21 15 13 15M.464 13.12L2.59 11L.464 8.88L1.88 7.46L4 9.59L6.12 7.46L7.54 8.88L5.41 11L7.54 13.12L6.12 14.54L4 12.41L1.88 14.54Z"; +var mdiAccountMusic = "M11,14C12,14 13.05,14.16 14.2,14.44C13.39,15.31 13,16.33 13,17.5C13,18.39 13.25,19.23 13.78,20H3V18C3,16.81 3.91,15.85 5.74,15.12C7.57,14.38 9.33,14 11,14M11,12C9.92,12 9,11.61 8.18,10.83C7.38,10.05 7,9.11 7,8C7,6.92 7.38,6 8.18,5.18C9,4.38 9.92,4 11,4C12.11,4 13.05,4.38 13.83,5.18C14.61,6 15,6.92 15,8C15,9.11 14.61,10.05 13.83,10.83C13.05,11.61 12.11,12 11,12M18.5,10H20L22,10V12H20V17.5A2.5,2.5 0 0,1 17.5,20A2.5,2.5 0 0,1 15,17.5A2.5,2.5 0 0,1 17.5,15C17.86,15 18.19,15.07 18.5,15.21V10Z"; +var mdiAccountMusicOutline = "M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4M11,6A2,2 0 0,0 9,8A2,2 0 0,0 11,10A2,2 0 0,0 13,8A2,2 0 0,0 11,6M11,13C12.1,13 13.66,13.23 15.11,13.69C14.5,14.07 14,14.6 13.61,15.23C12.79,15.03 11.89,14.9 11,14.9C8.03,14.9 4.9,16.36 4.9,17V18.1H13.04C13.13,18.8 13.38,19.44 13.76,20H3V17C3,14.34 8.33,13 11,13M18.5,10H20L22,10V12H20V17.5A2.5,2.5 0 0,1 17.5,20A2.5,2.5 0 0,1 15,17.5A2.5,2.5 0 0,1 17.5,15C17.86,15 18.19,15.07 18.5,15.21V10Z"; +var mdiAccountNetwork = "M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5V15.5C5,13.57 8.13,12 12,12C15.87,12 19,13.57 19,15.5V17H13M12,3A3.5,3.5 0 0,1 15.5,6.5A3.5,3.5 0 0,1 12,10A3.5,3.5 0 0,1 8.5,6.5A3.5,3.5 0 0,1 12,3Z"; +var mdiAccountNetworkOutline = "M12,10A3.5,3.5 0 0,0 15.5,6.5A3.5,3.5 0 0,0 12,3A3.5,3.5 0 0,0 8.5,6.5A3.5,3.5 0 0,0 12,10M12,5A1.5,1.5 0 0,1 13.5,6.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 10.5,6.5A1.5,1.5 0 0,1 12,5M15,20A1,1 0 0,0 14,19H13V17H19V15.5C19,13.57 15.87,12 12,12C8.13,12 5,13.57 5,15.5V17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7.61,15C8.39,14.53 9.89,14 12,14C14.11,14 15.61,14.53 16.39,15H7.61Z"; +var mdiAccountOff = "M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z"; +var mdiAccountOffOutline = "M2.75,7L4.03,5.75L13.26,15L20,21.72L18.73,23L15.73,20H4V17C4,15.14 6.61,13.92 9.09,13.36L2.75,7M20,17V19.18L18.1,17.28V17C18.1,16.74 17.6,16.35 16.8,16L14,13.18C16.71,13.63 20,14.91 20,17M5.9,17V18.1H13.83L10.72,15C8.19,15.3 5.9,16.45 5.9,17M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z"; +var mdiAccountOutline = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z"; +var mdiAccountPlus = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z"; +var mdiAccountPlusOutline = "M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9M4,7V10H1V12H4V15H6V12H9V10H6V7H4M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1H8.9V17C8.9,16.36 12,14.9 15,14.9Z"; +var mdiAccountQuestion = "M13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8M17,18V20H1V18C1,15.79 4.58,14 9,14C13.42,14 17,15.79 17,18M20.5,14.5V16H19V14.5H20.5M18.5,9.5H17V9A3,3 0 0,1 20,6A3,3 0 0,1 23,9C23,9.97 22.5,10.88 21.71,11.41L21.41,11.6C20.84,12 20.5,12.61 20.5,13.3V13.5H19V13.3C19,12.11 19.6,11 20.59,10.35L20.88,10.16C21.27,9.9 21.5,9.47 21.5,9A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 18.5,9V9.5Z"; +var mdiAccountQuestionOutline = "M20.5,14.5V16H19V14.5H20.5M18.5,9.5H17V9A3,3 0 0,1 20,6A3,3 0 0,1 23,9C23,9.97 22.5,10.88 21.71,11.41L21.41,11.6C20.84,12 20.5,12.61 20.5,13.3V13.5H19V13.3C19,12.11 19.6,11 20.59,10.35L20.88,10.16C21.27,9.9 21.5,9.47 21.5,9A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 18.5,9V9.5M9,13C11.67,13 17,14.34 17,17V20H1V17C1,14.34 6.33,13 9,13M9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4M9,14.9C6.03,14.9 2.9,16.36 2.9,17V18.1H15.1V17C15.1,16.36 11.97,14.9 9,14.9M9,5.9A2.1,2.1 0 0,0 6.9,8A2.1,2.1 0 0,0 9,10.1A2.1,2.1 0 0,0 11.1,8A2.1,2.1 0 0,0 9,5.9Z"; +var mdiAccountReactivate = "M21.5 9H16.5L18.36 7.14C16.9 5.23 14.59 4 12 4C7.58 4 4 7.58 4 12C4 13.83 4.61 15.5 5.64 16.85C6.86 15.45 9.15 14.5 12 14.5C14.85 14.5 17.15 15.45 18.36 16.85C19.39 15.5 20 13.83 20 12H22C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C15.14 2 17.95 3.45 19.78 5.72L21.5 4V9M12 7C13.66 7 15 8.34 15 10C15 11.66 13.66 13 12 13C10.34 13 9 11.66 9 10C9 8.34 10.34 7 12 7Z"; +var mdiAccountReactivateOutline = "M21.5 9H16.5L18.36 7.14C16.9 5.23 14.59 4 12 4C7.58 4 4 7.58 4 12C4 13.83 4.61 15.5 5.64 16.85C6.86 15.45 9.15 14.5 12 14.5C14.85 14.5 17.15 15.45 18.36 16.85C19.39 15.5 20 13.83 20 12H22C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C15.14 2 17.95 3.45 19.78 5.72L21.5 4V9M12 20C13.9 20 15.64 19.34 17 18.24C16.36 17.23 14.45 16.5 12 16.5C9.55 16.5 7.64 17.23 7 18.24C8.36 19.34 10.1 20 12 20M12 6C13.93 6 15.5 7.57 15.5 9.5C15.5 11.43 13.93 13 12 13C10.07 13 8.5 11.43 8.5 9.5C8.5 7.57 10.07 6 12 6M12 8C11.17 8 10.5 8.67 10.5 9.5C10.5 10.33 11.17 11 12 11C12.83 11 13.5 10.33 13.5 9.5C13.5 8.67 12.83 8 12 8Z"; +var mdiAccountRemove = "M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z"; +var mdiAccountRemoveOutline = "M1.46,8.88L2.88,7.46L5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88M15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4M15,5.9A2.1,2.1 0 0,0 12.9,8A2.1,2.1 0 0,0 15,10.1C16.16,10.1 17.1,9.16 17.1,8C17.1,6.84 16.16,5.9 15,5.9M15,13C17.67,13 23,14.33 23,17V20H7V17C7,14.33 12.33,13 15,13M15,14.9C12,14.9 8.9,16.36 8.9,17V18.1H21.1V17C21.1,16.36 17.97,14.9 15,14.9Z"; +var mdiAccountSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M10,4A4,4 0 0,1 14,8C14,8.91 13.69,9.75 13.18,10.43C12.32,10.75 11.55,11.26 10.91,11.9L10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M2,20V18C2,15.88 5.31,14.14 9.5,14C9.18,14.78 9,15.62 9,16.5C9,17.79 9.38,19 10,20H2Z"; +var mdiAccountSearchOutline = "M10,13C9.65,13.59 9.36,14.24 9.19,14.93C6.5,15.16 3.9,16.42 3.9,17V18.1H9.2C9.37,18.78 9.65,19.42 10,20H2V17C2,14.34 7.33,13 10,13M10,4A4,4 0 0,1 14,8C14,8.91 13.69,9.75 13.18,10.43C12.32,10.75 11.55,11.26 10.91,11.9L10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,5.9A2.1,2.1 0 0,0 7.9,8A2.1,2.1 0 0,0 10,10.1A2.1,2.1 0 0,0 12.1,8A2.1,2.1 0 0,0 10,5.9M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14Z"; +var mdiAccountSettings = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; +var mdiAccountSettingsOutline = "M12 4C14.21 4 16 5.79 16 8S14.21 12 12 12 8 10.21 8 8 9.79 4 12 4M12 6C10.9 6 10 6.9 10 8S10.9 10 12 10 14 9.11 14 8 13.11 6 12 6M12 13C14.67 13 20 14.33 20 17V20H4V17C4 14.33 9.33 13 12 13M12 14.9C9.03 14.9 5.9 16.36 5.9 17V18.1H18.1V17C18.1 16.36 14.97 14.9 12 14.9M13 22H11V24H13V22M17 22H15V24H17V22M9 22H7V24H9V22Z"; +var mdiAccountStar = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z"; +var mdiAccountStarOutline = "M15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4M15,5.9A2.1,2.1 0 0,0 12.9,8A2.1,2.1 0 0,0 15,10.1C16.16,10.1 17.1,9.16 17.1,8C17.1,6.84 16.16,5.9 15,5.9M15,13C17.67,13 23,14.33 23,17V20H7V17C7,14.33 12.33,13 15,13M15,14.9C12,14.9 8.9,16.36 8.9,17V18.1H21.1V17C21.1,16.36 17.97,14.9 15,14.9M5,13.28L2.5,14.77L3.18,11.96L1,10.08L3.87,9.83L5,7.19L6.11,9.83L9,10.08L6.8,11.96L7.45,14.77L5,13.28Z"; +var mdiAccountSupervisor = "M16.5,12A2.5,2.5 0 0,0 19,9.5A2.5,2.5 0 0,0 16.5,7A2.5,2.5 0 0,0 14,9.5A2.5,2.5 0 0,0 16.5,12M9,11A3,3 0 0,0 12,8A3,3 0 0,0 9,5A3,3 0 0,0 6,8A3,3 0 0,0 9,11M16.5,14C14.67,14 11,14.92 11,16.75V19H22V16.75C22,14.92 18.33,14 16.5,14M9,13C6.67,13 2,14.17 2,16.5V19H9V16.75C9,15.9 9.33,14.41 11.37,13.28C10.5,13.1 9.66,13 9,13Z"; +var mdiAccountSupervisorCircle = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.6,8.34C16.67,8.34 17.53,9.2 17.53,10.27C17.53,11.34 16.67,12.2 15.6,12.2A1.93,1.93 0 0,1 13.67,10.27C13.66,9.2 14.53,8.34 15.6,8.34M9.6,6.76C10.9,6.76 11.96,7.82 11.96,9.12C11.96,10.42 10.9,11.5 9.6,11.5C8.3,11.5 7.24,10.42 7.24,9.12C7.24,7.81 8.29,6.76 9.6,6.76M9.6,15.89V19.64C7.2,18.89 5.3,17.04 4.46,14.68C5.5,13.56 8.13,13 9.6,13C10.13,13 10.8,13.07 11.5,13.21C9.86,14.08 9.6,15.23 9.6,15.89M12,20C11.72,20 11.46,20 11.2,19.96V15.89C11.2,14.47 14.14,13.76 15.6,13.76C16.67,13.76 18.5,14.15 19.44,14.91C18.27,17.88 15.38,20 12,20Z"; +var mdiAccountSupervisorCircleOutline = "M12.5 10C12.5 8.34 11.16 7 9.5 7C7.86 7 6.5 8.34 6.5 10C6.5 11.64 7.86 13 9.5 13C11.16 13 12.5 11.64 12.5 10M9.5 11C8.96 11 8.5 10.54 8.5 10C8.5 9.44 8.96 9 9.5 9C10.06 9 10.5 9.44 10.5 10C10.5 10.54 10.06 11 9.5 11M16 13C17.12 13 18 12.1 18 11C18 9.88 17.12 9 16 9C14.9 9 14 9.88 14 11C14 12.1 14.9 13 16 13M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M5.85 17.11C6.53 16.57 8.12 16 9.5 16C9.58 16 9.66 16 9.74 16C10 15.37 10.41 14.72 11.04 14.15C10.5 14.05 9.95 14 9.5 14C8.21 14 6.12 14.44 4.78 15.42C4.28 14.38 4 13.22 4 12C4 7.58 7.59 4 12 4C16.41 4 20 7.58 20 12C20 13.19 19.73 14.33 19.25 15.36C18.25 14.77 16.89 14.5 16 14.5C14.5 14.5 11.5 15.3 11.5 17.19V19.97C9.24 19.84 7.22 18.76 5.85 17.11Z"; +var mdiAccountSupervisorOutline = "M16.5 15.5C18.22 15.5 20.25 16.3 20.5 16.78V17.5H12.5V16.78C12.75 16.3 14.78 15.5 16.5 15.5M16.5 14C14.67 14 11 14.92 11 16.75V19H22V16.75C22 14.92 18.33 14 16.5 14M9 13C6.67 13 2 14.17 2 16.5V19H9V17.5H3.5V16.5C3.5 15.87 6.29 14.34 9.82 14.5A5.12 5.12 0 0 1 11.37 13.25A12.28 12.28 0 0 0 9 13M9 6.5A1.5 1.5 0 1 1 7.5 8A1.5 1.5 0 0 1 9 6.5M9 5A3 3 0 1 0 12 8A3 3 0 0 0 9 5M16.5 8.5A1 1 0 1 1 15.5 9.5A1 1 0 0 1 16.5 8.5M16.5 7A2.5 2.5 0 1 0 19 9.5A2.5 2.5 0 0 0 16.5 7Z"; +var mdiAccountSwitch = "M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z"; +var mdiAccountSwitchOutline = "M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M8 11C11.5 11 11.94 12.56 12 13H4C4.06 12.56 4.5 11 8 11M8 9C2 9 2 13 2 13V15H14V13C14 13 14 9 8 9M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 3C8.55 3 9 3.45 9 4S8.55 5 8 5 7 4.55 7 4 7.45 3 8 3M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z"; +var mdiAccountTie = "M12 3C14.21 3 16 4.79 16 7S14.21 11 12 11 8 9.21 8 7 9.79 3 12 3M16 13.54C16 14.6 15.72 17.07 13.81 19.83L13 15L13.94 13.12C13.32 13.05 12.67 13 12 13S10.68 13.05 10.06 13.12L11 15L10.19 19.83C8.28 17.07 8 14.6 8 13.54C5.61 14.24 4 15.5 4 17V21H20V17C20 15.5 18.4 14.24 16 13.54Z"; +var mdiAccountTieOutline = "M16.36 12.76C18.31 13.42 20 14.5 20 16V21H4V16C4 14.5 5.69 13.42 7.65 12.76L8.27 14L8.5 14.5C7 14.96 5.9 15.62 5.9 16V19.1H10.12L11 14.03L10.06 12.15C10.68 12.08 11.33 12.03 12 12.03C12.67 12.03 13.32 12.08 13.94 12.15L13 14.03L13.88 19.1H18.1V16C18.1 15.62 17 14.96 15.5 14.5L15.73 14L16.36 12.76M12 5C10.9 5 10 5.9 10 7C10 8.1 10.9 9 12 9C13.1 9 14 8.1 14 7C14 5.9 13.1 5 12 5M12 11C9.79 11 8 9.21 8 7C8 4.79 9.79 3 12 3C14.21 3 16 4.79 16 7C16 9.21 14.21 11 12 11Z"; +var mdiAccountTieVoice = "M16.75 4.36C18.77 6.56 18.77 9.61 16.75 11.63L15.07 9.94C15.91 8.76 15.91 7.23 15.07 6.05L16.75 4.36M20.06 1C24 5.05 23.96 11.11 20.06 15L18.43 13.37C21.2 10.19 21.2 5.65 18.43 2.63L20.06 1M9 4C11.2 4 13 5.79 13 8S11.2 12 9 12 5 10.21 5 8 6.79 4 9 4M13 14.54C13 15.6 12.71 18.07 10.8 20.83L10 16L10.93 14.12C10.31 14.05 9.66 14 9 14S7.67 14.05 7.05 14.12L8 16L7.18 20.83C5.27 18.07 5 15.6 5 14.54C2.6 15.24 .994 16.5 .994 18V22H17V18C17 16.5 15.39 15.24 13 14.54Z"; +var mdiAccountTieVoiceOff = "M12.7 9.5L7.5 4.3C7.96 4.11 8.46 4 9 4C11.2 4 13 5.79 13 8C13 8.53 12.89 9.04 12.7 9.5M16.75 11.63C18.77 9.61 18.77 6.56 16.75 4.36L15.07 6.05C15.91 7.23 15.91 8.76 15.07 9.94L16.75 11.63M20.06 15C23.96 11.11 24 5.05 20.06 1L18.43 2.63C21.2 5.65 21.2 10.19 18.43 13.37L20.06 15M2.39 1.73L1.11 3L5.13 7C5.05 7.34 5 7.66 5 8C5 10.21 6.79 12 9 12C9.33 12 9.66 11.94 9.97 11.86L13 14.87C12.93 16.06 12.54 18.32 10.8 20.83L10 16L10.93 14.12C10.31 14.05 9.66 14 9 14C8.32 14 7.67 14.05 7.05 14.12L8 16L7.18 20.83C5.27 18.07 5 15.6 5 14.54C2.6 15.24 .994 16.5 .994 18V22H17V18.88L20.84 22.73L22.11 21.46L2.39 1.73Z"; +var mdiAccountTieVoiceOffOutline = "M9.22 6L7.5 4.3C7.96 4.11 8.47 4 9 4C11.21 4 13 5.79 13 8C13 8.53 12.89 9.04 12.7 9.5L11 7.78C10.87 6.86 10.14 6.13 9.22 6M20.06 15C23.96 11.11 24 5.05 20.06 1L18.43 2.63C21.2 5.65 21.2 10.19 18.43 13.37L20.06 15M16.75 11.63C18.77 9.61 18.77 6.56 16.75 4.36L15.07 6.05C15.91 7.23 15.91 8.76 15.07 9.94L16.75 11.63M2.39 1.73L1.11 3L5.14 7.03C5.06 7.34 5 7.66 5 8C5 10.21 6.79 12 9 12C9.34 12 9.66 11.94 9.97 11.86L12.86 14.75L12.73 15L12.5 15.5C13.3 15.74 13.97 16.05 14.44 16.33L15.1 17V20.1H10.88L10 15.03L10.94 13.15C10.32 13.08 9.67 13.03 9 13.03S7.68 13.08 7.06 13.15L8 15.03L7.12 20.1H2.9V17C2.9 16.62 4 15.96 5.5 15.5L5.27 15L4.65 13.76C2.69 14.42 1 15.5 1 17V22H17V18.89L20.84 22.73L22.11 21.46L2.39 1.73Z"; +var mdiAccountTieVoiceOutline = "M16.75 4.36C18.77 6.56 18.77 9.61 16.75 11.63L15.07 9.94C15.91 8.76 15.91 7.23 15.07 6.05L16.75 4.36M20.06 1C24 5.05 23.96 11.11 20.06 15L18.43 13.37C21.2 10.19 21.2 5.65 18.43 2.63L20.06 1M13.36 13.76C15.31 14.42 17 15.5 17 17V22H1V17C1 15.5 2.69 14.42 4.65 13.76L5.27 15L5.5 15.5C4 15.96 2.9 16.62 2.9 17V20.1H7.12L8 15.03L7.06 13.15C7.68 13.08 8.33 13.03 9 13.03S10.32 13.08 10.94 13.15L10 15.03L10.88 20.1H15.1V17C15.1 16.62 14 15.96 12.5 15.5L12.73 15L13.36 13.76M9 6C7.9 6 7 6.9 7 8S7.9 10 9 10 11 9.1 11 8 10.1 6 9 6M9 12C6.79 12 5 10.21 5 8S6.79 4 9 4 13 5.79 13 8 11.21 12 9 12Z"; +var mdiAccountVoice = "M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z"; +var mdiAdjust = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z"; +var mdiAdobe = "M14.58,3H22V19.67L14.58,3M9.42,3H2V19.67L9.42,3M12,9.17L16.67,19.67H13.5L12.17,16.33H8.75L12,9.17Z"; +var mdiAdobeAcrobat = "M21.8 14.5C21.3 13.7 20.1 13.4 18.1 13.4C17.4 13.4 16.7 13.4 16 13.5C15.5 13.2 15 12.9 14.6 12.6C13.6 11.8 12.7 10.3 12 8.5C12 8.5 12 8.4 12.1 8.3C12.6 6.2 13.1 3.6 12.1 2.5C11.8 2.2 11.5 2.1 11.1 2.1H10.7C10.1 2.1 9.6 2.7 9.4 3.3C8.8 5.4 9.2 6.6 9.8 8.5C9.4 10 8.9 11.6 8 13.3C7.5 14.4 6.9 15.4 6.5 16.2C5.9 16.5 5.4 16.8 5.1 17C3.2 18.2 2.2 19.6 2.1 20.4C2 20.7 2 21 2.1 21.2V21.3L2.9 21.8C3.1 21.9 3.4 22 3.6 22C4.9 22 6.4 20.5 8.4 17C8.5 17 8.6 16.9 8.7 16.9C10.4 16.4 12.4 16 15.2 15.7C16.8 16.5 18.8 16.9 20 16.9C20.7 16.9 21.2 16.7 21.5 16.4C21.8 16.1 21.9 15.7 22 15.3C22 15 22 14.7 21.8 14.5M3.4 20.9C3.5 20.3 4.2 19.2 5.4 18.2C5.6 18.1 5.8 17.9 6.2 17.7C5 19.6 4.1 20.6 3.4 20.9M10.8 3.2C10.9 3.1 10.9 3 11 3L11.2 3.1C11.5 3.5 11.5 4 11.3 4.9V5.2C11.2 5.6 11.2 6 11 6.5C10.6 5 10.6 3.9 10.8 3.2M8.8 15.8L8.6 15.9C8.7 15.4 9.1 14.8 9.4 14.2C10.1 12.8 10.7 11.5 11 10.3C11.7 11.8 12.5 12.9 13.5 13.8C13.7 14 13.9 14.2 14.2 14.3C12.8 14.5 10.9 15 8.8 15.8M20.9 15.7H20.5C19.8 15.7 18.6 15.4 17.4 14.9C17.5 14.7 17.7 14.7 17.8 14.7C20.1 14.7 20.7 15.1 20.9 15.3C21 15.4 21 15.4 21 15.5C21 15.6 21 15.6 20.9 15.7Z"; +var mdiAirConditioner = "M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z"; +var mdiAirFilter = "M19,18.31V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V16.3C4.54,16.12 3.95,16 3,16A1,1 0 0,1 2,15A1,1 0 0,1 3,14C3.82,14 4.47,14.08 5,14.21V12.3C4.54,12.12 3.95,12 3,12A1,1 0 0,1 2,11A1,1 0 0,1 3,10C3.82,10 4.47,10.08 5,10.21V8.3C4.54,8.12 3.95,8 3,8A1,1 0 0,1 2,7A1,1 0 0,1 3,6C3.82,6 4.47,6.08 5,6.21V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V6.16C20.78,6.47 21.54,7.13 21.71,7.29C22.1,7.68 22.1,8.32 21.71,8.71C21.32,9.1 20.8,9.09 20.29,8.71V8.71C20.29,8.71 19.25,8 17,8C15.74,8 14.91,8.41 13.95,8.9C12.91,9.41 11.74,10 10,10C9.64,10 9.31,10 9,9.96V7.95C9.3,8 9.63,8 10,8C11.26,8 12.09,7.59 13.05,7.11C14.09,6.59 15.27,6 17,6V4H7V20H17V18C18.5,18 18.97,18.29 19,18.31M17,10C15.27,10 14.09,10.59 13.05,11.11C12.09,11.59 11.26,12 10,12C9.63,12 9.3,12 9,11.95V13.96C9.31,14 9.64,14 10,14C11.74,14 12.91,13.41 13.95,12.9C14.91,12.42 15.74,12 17,12C19.25,12 20.29,12.71 20.29,12.71V12.71C20.8,13.1 21.32,13.1 21.71,12.71C22.1,12.32 22.1,11.69 21.71,11.29C21.5,11.08 20.25,10 17,10M17,14C15.27,14 14.09,14.59 13.05,15.11C12.09,15.59 11.26,16 10,16C9.63,16 9.3,16 9,15.95V17.96C9.31,18 9.64,18 10,18C11.74,18 12.91,17.41 13.95,16.9C14.91,16.42 15.74,16 17,16C19.25,16 20.29,16.71 20.29,16.71V16.71C20.8,17.1 21.32,17.1 21.71,16.71C22.1,16.32 22.1,15.69 21.71,15.29C21.5,15.08 20.25,14 17,14Z"; +var mdiAirHorn = "M19,2.8V6L19,9.2C19,9.5 18.7,9.8 18.4,9.7C18.4,9.7 14.5,7.1 10,7.1V9.5H10.2C10.7,9.5 11.2,9.7 11.4,10.1L12.7,11.9C12.9,12.1 13,12.4 13,12.6V20.6C13,21.3 12.3,22 11.5,22H6.5C5.7,22 5,21.4 5,20.6V12.6C5,12.3 5.1,12.1 5.3,11.9L6.6,10.1C6.9,9.7 7.3,9.5 7.8,9.5H8V8C7.6,8.5 7,8.8 6.4,8.8C5.1,8.8 4,7.5 4,6C4,4.5 5.1,3.2 6.4,3.2C7,3.3 7.6,3.6 8,4V2.6H10V5C14.5,5 18.4,2.4 18.4,2.4C18.7,2.3 19,2.5 19,2.8Z"; +var mdiAirHumidifier = "M11 9C8.79 9 7 10.79 7 13S8.79 17 11 17 15 15.21 15 13 13.21 9 11 9M11 15C9.9 15 9 14.11 9 13S9.9 11 11 11 13 11.9 13 13 12.11 15 11 15M7 4H14C16.21 4 18 5.79 18 8V9H16V8C16 6.9 15.11 6 14 6H7C5.9 6 5 6.9 5 8V20H16V18H18V22H3V8C3 5.79 4.79 4 7 4M19 10.5C19 10.5 21 12.67 21 14C21 15.1 20.1 16 19 16S17 15.1 17 14C17 12.67 19 10.5 19 10.5"; +var mdiAirHumidifierOff = "M22.1 21.5L2.4 1.7L1.1 3L3.8 5.7C3.3 6.3 3 7.1 3 8V22H18V19.9L20.8 22.7L22.1 21.5M9.6 11.5L12.4 14.3C12.1 14.7 11.6 15 11 15C9.9 15 9 14.1 9 13C9 12.4 9.3 11.9 9.6 11.5M16 17.9V20H5V8C5 7.7 5.1 7.4 5.2 7.1L8.2 10.1C7.5 10.8 7 11.9 7 13C7 15.2 8.8 17 11 17C12.1 17 13.2 16.5 13.9 15.8L16 17.9M17 13.8C17.1 12.5 19 10.5 19 10.5S21 12.7 21 14C21 15 20.2 15.9 19.2 16L17 13.8M9.2 6L7.2 4H14C16.2 4 18 5.8 18 8V9H16V8C16 6.9 15.1 6 14 6H9.2Z"; +var mdiAirPurifier = "M11,9A4,4 0 0,1 15,13A4,4 0 0,1 11,17A4,4 0 0,1 7,13A4,4 0 0,1 11,9M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13A2,2 0 0,0 11,11M7,4H14A4,4 0 0,1 18,8V9H16V8A2,2 0 0,0 14,6H7A2,2 0 0,0 5,8V20H16V18H18V22H3V8A4,4 0 0,1 7,4M16,11C18.5,11 18.5,9 21,9V11C18.5,11 18.5,13 16,13V11M16,15C18.5,15 18.5,13 21,13V15C18.5,15 18.5,17 16,17V15Z"; +var mdiAirbag = "M14,8A5,5 0 0,1 9,13A5,5 0 0,1 4,8A5,5 0 0,1 9,3A5,5 0 0,1 14,8M10.46,15.55L13,18.03L11,18.05L7.5,21.58L6,20.09L10.46,15.55M17,2C18.08,2 19,2.88 19,4C19,5.08 18.12,6 17,6C15.92,6 15,5.12 15,4C15,2.92 15.89,2 17,2M14.41,15H11.59L17.29,20.71L18.71,19.29L14.41,15M15.12,14.29L19.41,18.59L19.63,18.8C19.86,18.42 20,18 20,17.5V9.5A2.5,2.5 0 0,0 17.5,7A2.5,2.5 0 0,0 15,9.5V14.17L15.12,14.29Z"; +var mdiAirballoon = "M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z"; +var mdiAirballoonOutline = "M11 23C9.9 23 9 22.1 9 21V19H15V21C15 22.1 14.1 23 13 23H11M12 3C12.28 3 12.55 3 12.81 3.05C13.42 4.22 14 6.26 14 9C14 11.1 13 16 13 16H11C11 16 10 11.1 10 9C10 6.26 10.58 4.22 11.19 3.05C11.45 3 11.72 3 12 3M12 1C11.29 1 10.61 1.09 9.95 1.26C8.78 2.83 8 5.71 8 9C8 11.28 8.38 13.37 9 16C9 17.1 9.9 18 11 18H13C14.1 18 15 17.1 15 16C15.62 13.37 16 11.28 16 9C16 5.71 15.22 2.83 14.05 1.26C13.39 1.09 12.71 1 12 1M4 8C4 11.18 5.85 15.92 8.54 17.21C8 16.21 7.61 14.67 7.34 13C6.55 11.53 6 9.62 6 8C6 6.66 6.44 5.67 7.47 4.8C7.73 3.67 8.09 2.65 8.54 1.79C5.85 3.08 4 4.82 4 8M15.46 1.79C15.91 2.65 16.27 3.67 16.53 4.8C17.56 5.67 18 6.66 18 8C18 9.62 17.45 11.53 16.66 13C16.39 14.67 16 16.21 15.46 17.21C18.15 15.92 20 11.18 20 8S18.15 3.08 15.46 1.79Z"; +var mdiAirplane = "M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z"; +var mdiAirplaneLanding = "M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z"; +var mdiAirplaneOff = "M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z"; +var mdiAirplaneTakeoff = "M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z"; +var mdiAirport = "M14.97,5.92C14.83,5.41 14.3,5.1 13.79,5.24L10.39,6.15L5.95,2.03L4.72,2.36L7.38,6.95L4.19,7.8L2.93,6.82L2,7.07L3.66,9.95L14.28,7.11C14.8,6.96 15.1,6.43 14.97,5.92M21,10L20,12H15L14,10L15,9H17V7H18V9H20L21,10M22,20V22H2V20H15V13H20V20H22Z"; +var mdiAlarm = "M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z"; +var mdiAlarmBell = "M15,18.66V22H5V18.66C8.09,20.45 11.91,20.45 15,18.66M22,4A2,2 0 0,0 20,2C19.69,2 19.39,2.07 19.12,2.21C18.82,2.36 18.56,2.58 18.36,2.85C17.72,3.75 17.94,5 18.85,5.64C19.18,5.87 19.59,6 20,6C20.08,6 20.16,6 20.24,6C21.97,10.43 20.66,15.46 17,18.5C16.68,18.75 16.35,19 16,19.22V21H17V19.74C20.14,17.5 22,13.86 22,10C22,8.5 21.72,7 21.17,5.62C21.69,5.24 22,4.64 22,4M18,10A8,8 0 0,1 10,18A8,8 0 0,1 2,10A8,8 0 0,1 10,2A8,8 0 0,1 18,10Z"; +var mdiAlarmCheck = "M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z"; +var mdiAlarmLight = "M6,6.9L3.87,4.78L5.28,3.37L7.4,5.5L6,6.9M13,1V4H11V1H13M20.13,4.78L18,6.9L16.6,5.5L18.72,3.37L20.13,4.78M4.5,10.5V12.5H1.5V10.5H4.5M19.5,10.5H22.5V12.5H19.5V10.5M6,20H18A2,2 0 0,1 20,22H4A2,2 0 0,1 6,20M12,5A6,6 0 0,1 18,11V19H6V11A6,6 0 0,1 12,5Z"; +var mdiAlarmLightOff = "M18 14.8L9 5.8C9.9 5.3 10.9 5 12 5C15.3 5 18 7.7 18 11V14.8M20.1 4.8L18.7 3.4L16.6 5.5L18 6.9L20.1 4.8M19.5 10.5V12.5H22.5V10.5H19.5M4.5 10.5H1.5V12.5H4.5V10.5M1.1 3L6.6 8.5C6.2 9.2 6 10.1 6 11V19H17.1L18.1 20H6C4.9 20 4 20.9 4 22H20.1L20.8 22.7L22.1 21.4L2.4 1.7L1.1 3M13 1H11V4H13V1Z"; +var mdiAlarmLightOffOutline = "M10.5 7.3L9 5.8C9.9 5.3 10.9 5 12 5C15.3 5 18 7.7 18 11V14.8L16 12.8V11C16 8.8 14.2 7 12 7C11.5 7 11 7.1 10.5 7.3M20.1 4.8L18.7 3.4L16.6 5.5L18 6.9L20.1 4.8M19.5 10.5V12.5H22.5V10.5H19.5M4.5 10.5H1.5V12.5H4.5V10.5M2.4 1.7L22.1 21.4L20.8 22.7L20.1 22H4C4 20.9 4.9 20 6 20H18.1L17.1 19H6V11C6 10.1 6.2 9.2 6.6 8.5L1.1 3L2.4 1.7M8 17H15.1L8.1 10C8.1 10.3 8 10.7 8 11V17M13 1H11V4H13V1Z"; +var mdiAlarmLightOutline = "M6,6.9L3.87,4.78L5.28,3.37L7.4,5.5L6,6.9M13,1V4H11V1H13M20.13,4.78L18,6.9L16.6,5.5L18.72,3.37L20.13,4.78M4.5,10.5V12.5H1.5V10.5H4.5M19.5,10.5H22.5V12.5H19.5V10.5M6,20H18A2,2 0 0,1 20,22H4A2,2 0 0,1 6,20M12,5A6,6 0 0,1 18,11V19H6V11A6,6 0 0,1 12,5M12,7A4,4 0 0,0 8,11V17H16V11A4,4 0 0,0 12,7Z"; +var mdiAlarmMultiple = "M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z"; +var mdiAlarmNote = "M17.4,1.86L16.11,3.39L20.71,7.25L22,5.72L17.4,1.86M6.6,1.86L2,5.71L3.29,7.24L7.88,3.39L6.6,1.86M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C12.33,22 12.67,22 13,21.94V19.94C12.67,20 12.33,20 12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6C15.1,6 17.83,8.03 18.71,11H20.78C19.85,6.9 16.2,4 12,4M23,15H20V20.5A2.5,2.5 0 0,1 17.5,23A2.5,2.5 0 0,1 15,20.5A2.5,2.5 0 0,1 17.5,18C18.04,18 18.57,18.18 19,18.5V13H23V15M11.5,8V13.25L7.5,15.62L8.25,16.85L13,14V8H11.5Z"; +var mdiAlarmNoteOff = "M19,13V15.8L20,16.8V15H23V13H19M2.38,1.73L1.11,3L3,4.88L2,5.71L3.29,7.24L4.41,6.3L5.21,7.1C1.95,10.85 2.35,16.54 6.11,19.8C7.74,21.22 9.83,22 12,22C12.33,22 12.67,22 13,21.94V19.94C12.67,20 12.33,20 12,20A7,7 0 0,1 5,13C5,11.36 5.57,9.77 6.63,8.5L11.41,13.3L7.5,15.62L8.25,16.85L12.44,14.33L16.38,18.27C15.14,18.88 14.64,20.38 15.25,21.62C15.86,22.86 17.36,23.36 18.6,22.75C19.09,22.5 19.5,22.11 19.73,21.62L20.84,22.73L22.11,21.46L2.38,1.73M12,6C15.1,6 17.83,8.03 18.71,11H20.78C19.85,6.9 16.2,4 12,4C10.65,4 9.31,4.3 8.1,4.9L9.62,6.42C10.38,6.14 11.19,6 12,6M11.5,8.3L13,9.8V8H11.5V8.3M7.88,3.39L6.6,1.86L5.76,2.56L7.18,4L7.88,3.39M17.4,1.86L16.11,3.39L20.71,7.25L22,5.72L17.4,1.86Z"; +var mdiAlarmOff = "M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z"; +var mdiAlarmPanel = "M20 3H4C2.9 3 2 3.9 2 5V19C2 20.1 2.9 21 4 21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3M8 19H5V17H8V19M8 16H5V14H8V16M8 13H5V11H8V13M13.5 19H10.5V17H13.5V19M13.5 16H10.5V14H13.5V16M13.5 13H10.5V11H13.5V13M19 19H16V17H19V19M19 16H16V14H19V16M19 13H16V11H19V13M19 9H5V5H19V9Z"; +var mdiAlarmPanelOutline = "M9 12H6V10H9V12M13.5 10H10.5V12H13.5V10M18 10H15V12H18V10M18 6H6V9H18V6M20 5H4L4 19L20 19L20 5L20 5M20 3C21.1 3 22 3.9 22 5V19C22 20.1 21.1 21 20 21H4C2.9 21 2 20.1 2 19V5C2 3.9 2.9 3 4 3H20M9 13H6V15H9V13M13.5 13H10.5V15H13.5V13M18 13H15V15H18V13M9 16H6V18H9V16M13.5 16H10.5V18H13.5V16M18 16H15V18H18V16Z"; +var mdiAlarmPlus = "M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z"; +var mdiAlarmSnooze = "M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z"; +var mdiAlbum = "M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiAlert = "M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z"; +var mdiAlertBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z"; +var mdiAlertBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M11,15H13V17H11V15M11,7H13V13H11V7"; +var mdiAlertCircle = "M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiAlertCircleCheck = "M18.75 22.16L16 19.16L17.16 18L18.75 19.59L22.34 16L23.5 17.41L18.75 22.16M13 13V7H11V13H13M13 17V15H11V17H13M12 2C17.5 2 22 6.5 22 12L21.91 13.31C21.31 13.11 20.67 13 20 13C16.69 13 14 15.69 14 19C14 19.95 14.22 20.85 14.62 21.65C13.78 21.88 12.91 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2Z"; +var mdiAlertCircleCheckOutline = "M18.75 22.16L16 19.16L17.16 18L18.75 19.59L22.34 16L23.5 17.41L18.75 22.16M11 15H13V17H11V15M11 7H13V13H11V7M12 2C17.5 2 22 6.5 22 12L21.92 13.31C21.31 13.11 20.67 13 19.94 13L20 12C20 7.58 16.42 4 12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C12.71 20 13.39 19.91 14.05 19.74C14.13 20.42 14.33 21.06 14.62 21.65C13.78 21.88 12.9 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.47 2 12 2Z"; +var mdiAlertCircleOutline = "M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"; +var mdiAlertDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z"; +var mdiAlertDecagramOutline = "M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12M11,15H13V17H11V15M11,7H13V13H11V7"; +var mdiAlertMinus = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M24 18V20H16V18H24Z"; +var mdiAlertMinusOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M16 18V20H24V18H16Z"; +var mdiAlertOctagon = "M13 13H11V7H13M11 15H13V17H11M15.73 3H8.27L3 8.27V15.73L8.27 21H15.73L21 15.73V8.27L15.73 3Z"; +var mdiAlertOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M11,15H13V17H11V15M11,7H13V13H11V7"; +var mdiAlertOctagram = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M13,17V15H11V17H13M13,13V7H11V13H13Z"; +var mdiAlertOctagramOutline = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M4.81,9L6.05,12L4.81,15L7.79,16.21L9,19.19L12,17.95L15,19.19L16.21,16.21L19.19,15L17.95,12L19.19,9L16.21,7.79L15,4.81L12,6.05L9,4.81L7.79,7.79L4.81,9M11,15H13V17H11V15M11,7H13V13H11V7"; +var mdiAlertOutline = "M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16"; +var mdiAlertPlus = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M21 15V18H24V20H21V23H19V20H16V18H19V15H21Z"; +var mdiAlertPlusOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M19 15V18H16V20H19V23H21V20H24V18H21V15H19Z"; +var mdiAlertRemove = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M23.54 16.88L21.41 19L23.54 21.12L22.12 22.54L20 20.41L17.88 22.54L16.47 21.12L18.59 19L16.47 16.88L17.88 15.47L20 17.59L22.12 15.46L23.54 16.88Z"; +var mdiAlertRemoveOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M22.12 15.46L20 17.59L17.88 15.46L16.47 16.88L18.59 19L16.47 21.12L17.88 22.54L20 20.41L22.12 22.54L23.54 21.12L21.41 19L23.54 16.88L22.12 15.46Z"; +var mdiAlertRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M11 7H13V13H11V7M11 15H13V17H11V15Z"; +var mdiAlertRhombusOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12M11 7V13H13V7M11 15V17H13V15Z"; +var mdiAlien = "M12,3C16.97,3 21,6.58 21,11C21,15.42 15,21 12,21C9,21 3,15.42 3,11C3,6.58 7.03,3 12,3M10.31,10.93C9.29,9.29 7.47,8.58 6.25,9.34C5.03,10.1 4.87,12.05 5.89,13.69C6.92,15.33 8.74,16.04 9.96,15.28C11.18,14.5 11.33,12.57 10.31,10.93M13.69,10.93C12.67,12.57 12.82,14.5 14.04,15.28C15.26,16.04 17.08,15.33 18.11,13.69C19.13,12.05 18.97,10.1 17.75,9.34C16.53,8.58 14.71,9.29 13.69,10.93M12,17.75C10,17.75 9.5,17 9.5,17C9.5,17.03 10,19 12,19C14,19 14.5,17 14.5,17C14.5,17 14,17.75 12,17.75Z"; +var mdiAlienOutline = "M10.31 10.93C11.33 12.57 11.18 14.5 9.96 15.28C8.74 16.04 6.92 15.33 5.89 13.69C4.87 12.05 5.03 10.1 6.25 9.34C7.47 8.58 9.29 9.29 10.31 10.93M12 17.75C14 17.75 14.5 17 14.5 17C14.5 17 14 19 12 19C10 19 9.5 17.03 9.5 17C9.5 17 10 17.75 12 17.75M17.75 9.34C18.97 10.1 19.13 12.05 18.11 13.69C17.08 15.33 15.26 16.04 14.04 15.28C12.82 14.5 12.67 12.57 13.69 10.93C14.71 9.29 16.53 8.58 17.75 9.34M12 20C14.5 20 20 14.86 20 11C20 7.14 16.41 4 12 4C7.59 4 4 7.14 4 11C4 14.86 9.5 20 12 20M12 2C17.5 2 22 6.04 22 11C22 15.08 16.32 22 12 22C7.68 22 2 15.08 2 11C2 6.04 6.5 2 12 2Z"; +var mdiAlignHorizontalCenter = "M20 19H13V22H11V19H4V13H11V11H7V5H11V2H13V5H17V11H13V13H20V19Z"; +var mdiAlignHorizontalLeft = "M22 13V19H6V13H22M6 5V11H16V5H6M2 2V22H4V2H2"; +var mdiAlignHorizontalRight = "M18 13V19H2V13H18M8 5V11H18V5H8M20 2V22H22V2H20Z"; +var mdiAlignVerticalBottom = "M11 18H5V2H11V18M19 8H13V18H19V8M22 20H2V22H22V20Z"; +var mdiAlignVerticalCenter = "M5 20V13H2V11H5V4H11V11H13V7H19V11H22V13H19V17H13V13H11V20H5Z"; +var mdiAlignVerticalTop = "M11 22H5V6H11V22M19 6H13V16H19V6M22 2H2V4H22V2Z"; +var mdiAllInclusive = "M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z"; +var mdiAllergy = "M19.75 5.33A1.25 1.25 0 0 0 18.5 6.58V11.17H17.67V4.08A1.25 1.25 0 0 0 15.17 4.08V11.17H14.33V3.25A1.25 1.25 0 1 0 11.83 3.25V11.17H11V5.33A1.25 1.25 0 0 0 8.5 5.33V15.26L4.91 13.26A1 1 0 0 0 4.41 13.12A1 1 0 0 0 3.75 13.37L2.67 14.37L9.21 21A3.29 3.29 0 0 0 11.58 22H17.67A3.33 3.33 0 0 0 21 18.67V6.58A1.25 1.25 0 0 0 19.75 5.33M11 15A1 1 0 1 1 12 14A1 1 0 0 1 11 15M13 18A1 1 0 1 1 14 17A1 1 0 0 1 13 18M18 16A1 1 0 1 1 19 15A1 1 0 0 1 18 16M17 19A1 1 0 1 1 18 18A1 1 0 0 1 17 19M15 15A1 1 0 1 1 16 14A1 1 0 0 1 15 15Z"; +var mdiAlpha = "M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z"; +var mdiAlphaA = "M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z"; +var mdiAlphaABox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z"; +var mdiAlphaABoxOutline = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11Z"; +var mdiAlphaACircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z"; +var mdiAlphaACircleOutline = "M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaB = "M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z"; +var mdiAlphaBBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z"; +var mdiAlphaBBoxOutline = "M15,10.5C15,11.3 14.3,12 13.5,12C14.3,12 15,12.7 15,13.5V15A2,2 0 0,1 13,17H9V7H13A2,2 0 0,1 15,9V10.5M13,15V13H11V15H13M13,11V9H11V11H13M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; +var mdiAlphaBCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z"; +var mdiAlphaBCircleOutline = "M15,10.5C15,11.3 14.3,12 13.5,12C14.3,12 15,12.7 15,13.5V15A2,2 0 0,1 13,17H9V7H13A2,2 0 0,1 15,9V10.5M13,15V13H11V15H13M13,11V9H11V11H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaC = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z"; +var mdiAlphaCBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z"; +var mdiAlphaCBoxOutline = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7Z"; +var mdiAlphaCCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z"; +var mdiAlphaCCircleOutline = "M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaD = "M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9Z"; +var mdiAlphaDBox = "M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaDBoxOutline = "M9,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H9V7M11,9V15H13V9H11M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; +var mdiAlphaDCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9Z"; +var mdiAlphaDCircleOutline = "M9,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H9V7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaE = "M9,7V17H15V15H11V13H15V11H11V9H15V7H9Z"; +var mdiAlphaEBox = "M9,7V17H15V15H11V13H15V11H11V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaEBoxOutline = "M9,7H15V9H11V11H15V13H11V15H15V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; +var mdiAlphaECircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H15V15H11V13H15V11H11V9H15V7H9Z"; +var mdiAlphaECircleOutline = "M9,7H15V9H11V11H15V13H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaF = "M9,7V17H11V13H14V11H11V9H15V7H9Z"; +var mdiAlphaFBox = "M9,7V17H11V13H14V11H11V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaFBoxOutline = "M9,7H15V9H11V11H14V13H11V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; +var mdiAlphaFCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13H14V11H11V9H15V7H9Z"; +var mdiAlphaFCircleOutline = "M9,7H15V9H11V11H14V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaG = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11Z"; +var mdiAlphaGBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaGBoxOutline = "M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; +var mdiAlphaGCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11Z"; +var mdiAlphaGCircleOutline = "M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaH = "M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z"; +var mdiAlphaHBox = "M9,7V17H11V13H13V17H15V7H13V11H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaHBoxOutline = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; +var mdiAlphaHCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z"; +var mdiAlphaHCircleOutline = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaI = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14Z"; +var mdiAlphaIBox = "M14,7H10V9H11V15H10V17H14V15H13V9H14V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaIBoxOutline = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaICircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M14,7H10V9H11V15H10V17H14V15H13V9H14V7Z"; +var mdiAlphaICircleOutline = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaJ = "M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13Z"; +var mdiAlphaJBox = "M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaJBoxOutline = "M13,7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V14H11V15H13V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaJCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13Z"; +var mdiAlphaJCircleOutline = "M13,7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V14H11V15H13V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaK = "M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9Z"; +var mdiAlphaKBox = "M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaKBoxOutline = "M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaKCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9Z"; +var mdiAlphaKCircleOutline = "M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaL = "M9,7V17H15V15H11V7H9Z"; +var mdiAlphaLBox = "M9,7V17H15V15H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaLBoxOutline = "M9,7H11V15H15V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaLCircle = "M9,7V17H15V15H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaLCircleOutline = "M9,7H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaM = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9Z"; +var mdiAlphaMBox = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaMBoxOutline = "M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaMCircle = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaMCircleOutline = "M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaN = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9Z"; +var mdiAlphaNBox = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaNBoxOutline = "M9,7H11L13,12V7H15V17H13L11,12V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaNCircle = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaNCircleOutline = "M9,7H11L13,12V7H15V17H13L11,12V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaO = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; +var mdiAlphaOBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaOBoxOutline = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; +var mdiAlphaOCircle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaOCircleOutline = "M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaP = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9Z"; +var mdiAlphaPBox = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaPBoxOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaPCircle = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaPCircleOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaQ = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; +var mdiAlphaQBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M5,4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4Z"; +var mdiAlphaQBoxOutline = "M5,4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4M5,6V20H19V6H5M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; +var mdiAlphaQCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; +var mdiAlphaQCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; +var mdiAlphaR = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9Z"; +var mdiAlphaRBox = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaRBoxOutline = "M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaRCircle = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaRCircleOutline = "M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,16.41 7.58,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaS = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11Z"; +var mdiAlphaSBox = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaSBoxOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaSCircle = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaSCircleOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaT = "M9,7V9H11V17H13V9H15V7H9Z"; +var mdiAlphaTBox = "M9,7V9H11V17H13V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaTBoxOutline = "M9,7H15V9H13V17H11V9H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaTCircle = "M9,7V9H11V17H13V9H15V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaTCircleOutline = "M9,7H15V9H13V17H11V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaU = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9Z"; +var mdiAlphaUBox = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaUBoxOutline = "M9,7H11V15H13V7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaUCircle = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaUCircleOutline = "M9,7H11V15H13V7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaV = "M9,7L11,17H13L15,7H13L12,12L11,7H9Z"; +var mdiAlphaVBox = "M9,7L11,17H13L15,7H13L12,12L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaVBoxOutline = "M9,7H11L12,12L13,7H15L13,17H11L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaVCircle = "M9,7L11,17H13L15,7H13L12,12L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaVCircleOutline = "M9,7H11L12,12L13,7H15L13,17H11L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaW = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9Z"; +var mdiAlphaWBox = "M9,17H15A2,2 0 0,0 17,15V7H15V15H13V8H11V15H9V7H7V15A2,2 0 0,0 9,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaWBoxOutline = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaWCircle = "M9,17H15A2,2 0 0,0 17,15V7H15V15H13V8H11V15H9V7H7V15A2,2 0 0,0 9,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaWCircleOutline = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaX = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9Z"; +var mdiAlphaXBox = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaXBoxOutline = "M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaXCircle = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaXCircleOutline = "M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaY = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9Z"; +var mdiAlphaYBox = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaYBoxOutline = "M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaYCircle = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaYCircleOutline = "M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphaZ = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9Z"; +var mdiAlphaZBox = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiAlphaZBoxOutline = "M9,7H15V9L11,15H15V17H9V15L13,9H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiAlphaZCircle = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiAlphaZCircleOutline = "M9,7H15V9L11,15H15V17H9V15L13,9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiAlphabetAurebesh = "M3 4V11H14.23L22 4H19L13.46 9H5V4H3M3 13V20H5V15H13.46L19 20H22L14.23 13H3Z"; +var mdiAlphabetCyrillic = "M16 6C14.36 6 13 7.36 13 9V15C13 16.65 14.36 18 16 18H17C18.65 18 20 16.65 20 15V12C20 10.36 18.65 9 17 9H15C15 8.44 15.44 8 16 8H18C19.09 8 20 7.09 20 6M5 9V11H8C8.57 11 9 11.43 9 12H7C5.36 12 4 13.36 4 15C4 16.65 5.36 18 7 18H11V12C11 10.36 9.65 9 8 9M15 11H17C17.57 11 18 11.43 18 12V15C18 15.57 17.57 16 17 16H16C15.43 16 15 15.57 15 15M7 14H9V16H7C6.43 16 6 15.57 6 15C6 14.43 6.43 14 7 14Z"; +var mdiAlphabetGreek = "M16 6C14.36 6 13 7.36 13 9V21H15V9C15 8.43 15.43 8 16 8H17C17.57 8 18 8.43 18 9V10C18 10.57 17.57 11 17 11H16V13H17C17.57 13 18 13.43 18 14V15C18 15.57 17.57 16 17 16H16V18H17C18.65 18 20 16.65 20 15V14C20 13.18 19.59 12.46 19 12C19.59 11.54 20 10.82 20 10V9C20 7.36 18.65 6 17 6M7 9C5.36 9 4 10.36 4 12V15C4 16.65 5.36 18 7 18H7.7C8.2 18 8.65 17.81 9 17.5V18H11V9H9V9.5C8.65 9.19 8.2 9 7.7 9M7 11H8C8.57 11 9 11.43 9 12V15C9 15.57 8.57 16 8 16H7C6.43 16 6 15.57 6 15V12C6 11.43 6.43 11 7 11Z"; +var mdiAlphabetLatin = "M13 6V18H15V17.31C15.37 17.73 15.9 18 16.5 18H17C18.65 18 20 16.65 20 15V12C20 10.36 18.65 9 17 9H16.5C15.9 9 15.37 9.27 15 9.7V6M5 9V11H8C8.57 11 9 11.43 9 12H7C5.36 12 4 13.36 4 15C4 16.65 5.36 18 7 18H11V12C11 10.36 9.65 9 8 9M16 11H17C17.57 11 18 11.43 18 12V15C18 15.57 17.57 16 17 16H16C15.43 16 15 15.57 15 15V12C15 11.43 15.43 11 16 11M7 14H9V16H7C6.43 16 6 15.57 6 15C6 14.43 6.43 14 7 14Z"; +var mdiAlphabetPiqad = "M13.04 4L6.54 17.85C6.21 18.55 5.5 19 4.73 19H4V20H16C17.2 20 18.27 20.54 19 21.39H20C19.05 19.32 17 18 14.7 18H12C11.29 18 10.62 17.63 10.24 17.03C9.85 16.43 9.8 15.68 10.1 15.03L10.58 14H19V13H17.5C15.29 13 13.5 11.21 13.5 9C13.5 6.79 15.29 5 17.5 5H20V4Z"; +var mdiAlphabetTengwar = "M10 7L12.5 3H15L11 7H10M12.5 9C11.96 9 11.46 9.13 11 9.35V9H8V11H9V21H11V12.5C11 11.67 11.67 11 12.5 11C13.33 11 14 11.67 14 12.5V14.5C14 15.33 13.33 16 12.5 16H12V18H12.5C14.43 18 16 16.43 16 14.5V12.5C16 10.57 14.43 9 12.5 9Z"; +var mdiAlphabetical = "M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z"; +var mdiAlphabeticalOff = "M22.11 21.46L16 15.31L14 13.31L13.65 13L10 9.34L2.39 1.73L1.11 3L10 11.89V15A2 2 0 0 0 12 17H14A1.92 1.92 0 0 0 14.89 16.78L20.84 22.73M12 15V13.89L13.11 15M16 12.78L14.22 11A2 2 0 0 1 16 12.78M20.2 17L18 14.8V13A2 2 0 0 1 20 11H22V13H20V15H22V17M6 11H4A2 2 0 0 0 2 13V15A2 2 0 0 0 4 17H8V13A2 2 0 0 0 6 11M6 15H4V13H6M12 8.8L10.2 7H12Z"; +var mdiAlphabeticalVariant = "M3 7A2 2 0 0 0 1 9V17H3V13H5V17H7V9A2 2 0 0 0 5 7H3M3 9H5V11H3M15 10.5V9A2 2 0 0 0 13 7H9V17H13A2 2 0 0 0 15 15V13.5A1.54 1.54 0 0 0 13.5 12A1.54 1.54 0 0 0 15 10.5M13 15H11V13H13V15M13 11H11V9H13M19 7A2 2 0 0 0 17 9V15A2 2 0 0 0 19 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10H23V9A2 2 0 0 0 21 7Z"; +var mdiAlphabeticalVariantOff = "M12.2 9L10.2 7H13A2 2 0 0 1 15 9V10.5A1.47 1.47 0 0 1 14.64 11.44L13 9.8V9M23 10V9A2 2 0 0 0 21 7H19A2 2 0 0 0 17 9V13.8L20.2 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10M15 14.35L22.11 21.46L20.84 22.73L14.46 16.35A2 2 0 0 1 13 17H9V10.89L7 8.89V17H5V13H3V17H1V9A2 2 0 0 1 3 7H5.12L1.12 3L2.39 1.73L9 8.34L11 10.34L11.66 11L15 14.34M5 9H3V11H5M13 14.89L11.11 13H11V15H13Z"; +var mdiAltimeter = "M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z"; +var mdiAmazon = "M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z"; +var mdiAmazonAlexa = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10.43,21.87V19.91C10.43,19.22 10,18.57 9.35,18.3C6.91,17.26 5.17,14.83 5.17,12C5.17,8.26 8.22,5.17 12,5.17C15.78,5.17 18.83,8.26 18.83,12C18.83,16.43 15.39,20.61 10.43,21.87Z"; +var mdiAmbulance = "M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z"; +var mdiAmmunition = "M14,22H10V21H14V22M13,10V7H11V10L10,11.5V20H14V11.5L13,10M12,2C12,2 11,3 11,5V6H13V5C13,5 13,3 12,2M8,22H4V21H8V22M7,10V7H5V10L4,11.5V20H8V11.5L7,10M6,2C6,2 5,3 5,5V6H7V5C7,5 7,3 6,2M20,22H16V21H20V22M19,10V7H17V10L16,11.5V20H20V11.5L19,10M18,2C18,2 17,3 17,5V6H19V5C19,5 19,3 18,2Z"; +var mdiAmpersand = "M4.4,16.5C4.4,15.6 4.7,14.7 5.2,13.9C5.7,13.1 6.7,12.2 8.2,11.2C7.3,10.1 6.8,9.3 6.5,8.7C6.1,8 6,7.4 6,6.7C6,5.2 6.4,4.1 7.3,3.2C8.2,2.3 9.4,2 10.9,2C12.2,2 13.3,2.4 14.2,3.2C15.1,4 15.5,5 15.5,6.1C15.5,6.9 15.3,7.6 14.9,8.3C14.5,9 13.8,9.7 12.8,10.4L11.4,11.5L15.7,16.7C16.3,15.5 16.6,14.3 16.6,12.8H18.8C18.8,15.1 18.3,17 17.2,18.5L20,21.8H17L15.7,20.3C15,20.9 14.3,21.3 13.4,21.6C12.5,21.9 11.6,22.1 10.7,22.1C8.8,22.1 7.3,21.6 6.1,20.6C5,19.5 4.4,18.2 4.4,16.5M10.7,20C12,20 13.2,19.5 14.3,18.5L9.6,12.8L9.2,13.1C7.7,14.2 7,15.3 7,16.5C7,17.6 7.3,18.4 8,19C8.7,19.6 9.5,20 10.7,20M8.5,6.7C8.5,7.6 9,8.6 10.1,9.9L11.7,8.8C12.3,8.4 12.7,8 12.9,7.6C13.1,7.2 13.2,6.7 13.2,6.2C13.2,5.6 13,5.1 12.5,4.7C12.1,4.3 11.5,4.1 10.8,4.1C10.1,4.1 9.5,4.3 9.1,4.8C8.7,5.3 8.5,5.9 8.5,6.7Z"; +var mdiAmplifier = "M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z"; +var mdiAmplifierOff = "M22.1 21.5L2.4 1.7L1.1 3L3 4.9V21H5C5 21.6 5.4 22 6 22S7 21.6 7 21H17C17 21.6 17.4 22 18 22S19 21.6 19 21H19.1L20.8 22.7L22.1 21.5M5 9V6.9L7.1 9H5M12 19C9.8 19 8 17.2 8 15C8 13.6 8.7 12.4 9.8 11.7L15.3 17.2C14.6 18.3 13.4 19 12 19M14 6V7H12V6H14M10 6C10.6 6 11 6.4 11 7C11 7.2 10.9 7.4 10.8 7.6L9.4 6.2C9.6 6.1 9.8 6 10 6M8.2 5L6.2 3H9C9 2.4 9.4 2 10 2H14C14.6 2 15 2.4 15 3H21V17.8L12.2 9H19V5H8.2M16 6V8H15V6H16M18 6V8H17V6H18Z"; +var mdiAnchor = "M12 2A3 3 0 0 0 9 5A3 3 0 0 0 11 7.83V9H8V11H11V19.92C10.26 19.79 9.5 19.58 8.79 19.27C8.05 18.95 7.4 18.56 6.82 18.09C6.24 17.62 5.78 17.11 5.44 16.55L7 15L3 12V15C3 15.97 3.27 16.88 3.82 17.72C4.37 18.56 5.09 19.31 6 19.95C6.87 20.59 7.84 21.09 8.88 21.45C9.93 21.81 10.97 22 12 22C13.03 22 14.07 21.8 15.12 21.44C16.16 21.08 17.13 20.58 18 19.95C18.92 19.31 19.63 18.57 20.18 17.72C20.73 16.88 21 15.97 21 15V12L17 15L18.56 16.55C18.22 17.11 17.76 17.62 17.18 18.09C16.6 18.56 15.95 18.95 15.21 19.27C14.5 19.58 13.74 19.79 13 19.92V11H16V9H13V7.82A3 3 0 0 0 15 5A3 3 0 0 0 12 2M12 4A1 1 0 0 1 13 5A1 1 0 0 1 12 6A1 1 0 0 1 11 5A1 1 0 0 1 12 4Z"; +var mdiAndroid = "M16.61 15.15C16.15 15.15 15.77 14.78 15.77 14.32S16.15 13.5 16.61 13.5H16.61C17.07 13.5 17.45 13.86 17.45 14.32C17.45 14.78 17.07 15.15 16.61 15.15M7.41 15.15C6.95 15.15 6.57 14.78 6.57 14.32C6.57 13.86 6.95 13.5 7.41 13.5H7.41C7.87 13.5 8.24 13.86 8.24 14.32C8.24 14.78 7.87 15.15 7.41 15.15M16.91 10.14L18.58 7.26C18.67 7.09 18.61 6.88 18.45 6.79C18.28 6.69 18.07 6.75 18 6.92L16.29 9.83C14.95 9.22 13.5 8.9 12 8.91C10.47 8.91 9 9.24 7.73 9.82L6.04 6.91C5.95 6.74 5.74 6.68 5.57 6.78C5.4 6.87 5.35 7.08 5.44 7.25L7.1 10.13C4.25 11.69 2.29 14.58 2 18H22C21.72 14.59 19.77 11.7 16.91 10.14H16.91Z"; +var mdiAndroidAuto = "M22.78,17.91C22.94,18.16 23,18.42 23,18.7C23,19.08 22.87,19.39 22.57,19.64C22.27,19.89 21.94,20 21.56,20H19.08L12.42,8H11.58L4.92,20H2.39C1.92,20 1.53,19.8 1.22,19.38C0.91,18.96 0.89,18.5 1.17,18L10.78,1.69C11.09,1.22 11.5,1 12,1C12.53,1 12.92,1.22 13.17,1.69L22.78,17.91M4.78,22.31L12,9.38L19.22,22.31L18.5,23L12,20.34L5.44,23L4.78,22.31Z"; +var mdiAndroidDebugBridge = "M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z"; +var mdiAndroidMessages = "M20,20H7A2,2 0 0,1 5,18V8.94L2.23,5.64C2.09,5.47 2,5.24 2,5A1,1 0 0,1 3,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M8.5,7A0.5,0.5 0 0,0 8,7.5V8.5A0.5,0.5 0 0,0 8.5,9H18.5A0.5,0.5 0 0,0 19,8.5V7.5A0.5,0.5 0 0,0 18.5,7H8.5M8.5,11A0.5,0.5 0 0,0 8,11.5V12.5A0.5,0.5 0 0,0 8.5,13H18.5A0.5,0.5 0 0,0 19,12.5V11.5A0.5,0.5 0 0,0 18.5,11H8.5M8.5,15A0.5,0.5 0 0,0 8,15.5V16.5A0.5,0.5 0 0,0 8.5,17H13.5A0.5,0.5 0 0,0 14,16.5V15.5A0.5,0.5 0 0,0 13.5,15H8.5Z"; +var mdiAndroidStudio = "M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z"; +var mdiAngleAcute = "M20,19H4.09L14.18,4.43L15.82,5.57L11.28,12.13C12.89,12.96 14,14.62 14,16.54C14,16.7 14,16.85 13.97,17H20V19M7.91,17H11.96C12,16.85 12,16.7 12,16.54C12,15.28 11.24,14.22 10.14,13.78L7.91,17Z"; +var mdiAngleObtuse = "M21,19H9.31L4.07,5.36L5.93,4.64L8.96,12.5C9.5,12.29 10.09,12.17 10.71,12.17V12.17C13.38,12.17 15.56,14.34 15.58,17H21V19M10.69,17H13.58C13.56,15.42 12.3,14.17 10.71,14.17C10.34,14.17 10,14.24 9.67,14.36L10.69,17Z"; +var mdiAngleRight = "M5,4H7V11H13V17H20V19H5V4M7,17H11V13H7V17Z"; +var mdiAngular = "M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z"; +var mdiAngularjs = "M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.5L5,7L6.08,16.22L12,19.5L17.92,16.22L19,7L12,4.5M12,5.72L16.58,16H14.87L13.94,13.72H10.04L9.12,16H7.41L12,5.72M13.34,12.3L12,9.07L10.66,12.3H13.34Z"; +var mdiAnimation = "M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z"; +var mdiAnimationOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10Z"; +var mdiAnimationPlay = "M4,2H14V4H4V14H2V4C2,2.89 2.89,2 4,2M8,6H18V8H8V18H6V8C6,6.89 6.89,6 8,6M12,10H20C21.11,10 22,10.89 22,12V20C22,21.11 21.11,22 20,22H12C10.89,22 10,21.11 10,20V12C10,10.89 10.89,10 12,10M14,12V20L20,16L14,12Z"; +var mdiAnimationPlayOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M14,13V19L18,16L14,13Z"; +var mdiAnsible = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M16.1 17C15.91 17 15.76 16.9 15.55 16.73L10.39 12.56L8.66 16.9H7.17L11.54 6.39C11.65 6.11 11.89 5.97 12.17 5.97C12.45 5.97 12.67 6.11 12.79 6.39L16.77 15.97C16.81 16.08 16.84 16.19 16.84 16.26C16.83 16.68 16.5 17 16.1 17M12.17 8.11L14.76 14.5L10.85 11.42L12.17 8.11Z"; +var mdiAntenna = "M12 7.5C12.69 7.5 13.27 7.73 13.76 8.2S14.5 9.27 14.5 10C14.5 11.05 14 11.81 13 12.28V21H11V12.28C10 11.81 9.5 11.05 9.5 10C9.5 9.27 9.76 8.67 10.24 8.2S11.31 7.5 12 7.5M16.69 5.3C17.94 6.55 18.61 8.11 18.7 10C18.7 11.8 18.03 13.38 16.69 14.72L15.5 13.5C16.5 12.59 17 11.42 17 10C17 8.67 16.5 7.5 15.5 6.5L16.69 5.3M6.09 4.08C4.5 5.67 3.7 7.64 3.7 10S4.5 14.3 6.09 15.89L4.92 17.11C3 15.08 2 12.7 2 10C2 7.3 3 4.94 4.92 2.91L6.09 4.08M19.08 2.91C21 4.94 22 7.3 22 10C22 12.8 21 15.17 19.08 17.11L17.91 15.89C19.5 14.3 20.3 12.33 20.3 10S19.5 5.67 17.91 4.08L19.08 2.91M7.31 5.3L8.5 6.5C7.5 7.42 7 8.58 7 10C7 11.33 7.5 12.5 8.5 13.5L7.31 14.72C5.97 13.38 5.3 11.8 5.3 10C5.3 8.2 5.97 6.64 7.31 5.3Z"; +var mdiAnvil = "M9,5V10C13.03,12.47 8.44,14.97 6,16V19H21V16C14.59,13.27 17.47,9 22,8V5H9M2,6C2.81,8.13 4.42,9.5 7,10V6H2Z"; +var mdiApacheKafka = "M15.54 12.97C14.86 12.97 14.24 13.22 13.76 13.64L12.47 12.89C12.56 12.6 12.6 12.29 12.6 11.97C12.6 11.65 12.56 11.34 12.5 11.05L13.73 10.32C14.21 10.76 14.85 11 15.54 11C17.03 11 18.24 9.81 18.24 8.32S17.03 5.63 15.54 5.63 12.84 6.84 12.84 8.33C12.84 8.5 12.86 8.7 12.89 8.88L11.64 9.6C11.21 9.15 10.64 8.82 10 8.65V7.26C11.09 6.91 11.88 5.89 11.88 4.69C11.88 3.2 10.67 2 9.18 2C7.69 2 6.5 3.2 6.5 4.69C6.5 5.89 7.26 6.9 8.34 7.26V8.66C6.86 9.04 5.76 10.37 5.76 11.97C5.76 13.57 6.86 14.91 8.34 15.28V16.73C7.26 17.09 6.5 18.1 6.5 19.3C6.5 20.79 7.69 22 9.18 22C10.67 22 11.88 20.79 11.88 19.3C11.88 18.1 11.09 17.08 10 16.73V15.29C10.64 15.13 11.2 14.8 11.64 14.35L12.9 15.08C12.86 15.27 12.84 15.46 12.84 15.66C12.84 17.15 14.05 18.36 15.54 18.36S18.24 17.15 18.24 15.66 17.03 12.97 15.54 12.97M15.54 7C16.28 7 16.87 7.59 16.87 8.32S16.28 9.66 15.54 9.66 14.21 9.06 14.21 8.32 14.8 7 15.54 7M7.85 4.69C7.85 3.95 8.44 3.35 9.18 3.35C9.92 3.35 10.5 3.95 10.5 4.69S9.92 6.03 9.18 6.03C8.44 6.03 7.85 5.43 7.85 4.69M10.5 19.3C10.5 20.04 9.92 20.64 9.18 20.64C8.44 20.64 7.85 20.04 7.85 19.3C7.85 18.56 8.44 17.96 9.18 17.96C9.92 17.96 10.5 18.56 10.5 19.3M9.18 13.89C8.12 13.89 7.26 13.03 7.26 11.97C7.26 10.91 8.12 10.05 9.18 10.05S11.1 10.91 11.1 11.97C11.1 13.03 10.24 13.89 9.18 13.89M15.54 17C14.8 17 14.21 16.4 14.21 15.66S14.8 14.33 15.54 14.33 16.87 14.93 16.87 15.66 16.28 17 15.54 17Z"; +var mdiApi = "M7 7H5A2 2 0 0 0 3 9V17H5V13H7V17H9V9A2 2 0 0 0 7 7M7 11H5V9H7M14 7H10V17H12V13H14A2 2 0 0 0 16 11V9A2 2 0 0 0 14 7M14 11H12V9H14M20 9V15H21V17H17V15H18V9H17V7H21V9Z"; +var mdiApiOff = "M7 11H5V9H7M14 7H11.38L13.29 9H14V9.75L15.87 11.71C15.95 11.5 16 11.25 16 11V9C16 7.9 15.11 7 14 7M4.45 2.62L3 4L5.86 7H5C3.9 7 3 7.9 3 9V17H5V13H7V17H9V10.3L10 11.34V17H12V13.45L19.55 21.38L21 20M20.9 17H21V15H20V9H21V7H17V9H18V13.95Z"; +var mdiApple = "M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z"; +var mdiAppleAirplay = "M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z"; +var mdiAppleFinder = "M8 11C7.45 11 7 10.55 7 10V8C7 7.45 7.45 7 8 7C8.55 7 9 7.45 9 8V10C9 10.55 8.55 11 8 11M17 10V8C17 7.45 16.55 7 16 7C15.45 7 15 7.45 15 8V10C15 10.55 15.45 11 16 11C16.55 11 17 10.55 17 10M22 5V20C22 21.1 21.1 22 20 22H4C2.9 22 2 21.1 2 20V5C2 3.9 2.9 3 4 3H20C21.1 3 22 3.9 22 5M4 20L13.06 20C12.96 19.35 12.89 18.64 12.83 17.94C12.56 17.96 12.3 18 12 18C8.24 18 6.31 15.73 6.23 15.63C5.88 15.21 5.94 14.58 6.36 14.22C6.78 13.87 7.41 13.93 7.77 14.35C7.83 14.43 9.23 16 12 16C12.27 16 12.5 15.97 12.74 15.95C12.71 14.75 12.73 13.74 12.74 13.26H10.93C10.28 13.26 9.75 12.7 9.75 12C9.77 11.75 10.07 7.82 11 5H4L4 20M20 20L20 5H12.6C11.74 7.19 11.37 10.73 11.27 11.76H13.08C13.72 11.76 14.25 12.32 14.25 13C14.25 13.04 14.21 14.15 14.24 15.6C15.54 15.11 16.22 14.35 16.23 14.34C16.58 13.92 17.21 13.85 17.63 14.2C18.06 14.55 18.12 15.18 17.77 15.61C17.71 15.68 16.55 17.05 14.32 17.68C14.38 18.5 14.46 19.29 14.58 20H20Z"; +var mdiAppleIcloud = "M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z"; +var mdiAppleIos = "M2.09 16.8H3.75V9.76H2.09M2.92 8.84C3.44 8.84 3.84 8.44 3.84 7.94C3.84 7.44 3.44 7.04 2.92 7.04C2.4 7.04 2 7.44 2 7.94C2 8.44 2.4 8.84 2.92 8.84M9.25 7.06C6.46 7.06 4.7 8.96 4.7 12C4.7 15.06 6.46 16.96 9.25 16.96C12.04 16.96 13.8 15.06 13.8 12C13.8 8.96 12.04 7.06 9.25 7.06M9.25 8.5C10.96 8.5 12.05 9.87 12.05 12C12.05 14.15 10.96 15.5 9.25 15.5C7.54 15.5 6.46 14.15 6.46 12C6.46 9.87 7.54 8.5 9.25 8.5M14.5 14.11C14.57 15.87 16 16.96 18.22 16.96C20.54 16.96 22 15.82 22 14C22 12.57 21.18 11.77 19.23 11.32L18.13 11.07C16.95 10.79 16.47 10.42 16.47 9.78C16.47 9 17.2 8.45 18.28 8.45C19.38 8.45 20.13 9 20.21 9.89H21.84C21.8 8.2 20.41 7.06 18.29 7.06C16.21 7.06 14.73 8.21 14.73 9.91C14.73 11.28 15.56 12.13 17.33 12.53L18.57 12.82C19.78 13.11 20.27 13.5 20.27 14.2C20.27 15 19.47 15.57 18.31 15.57C17.15 15.57 16.26 15 16.16 14.11H14.5Z"; +var mdiAppleKeyboardCaps = "M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z"; +var mdiAppleKeyboardCommand = "M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z"; +var mdiAppleKeyboardControl = "M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z"; +var mdiAppleKeyboardOption = "M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z"; +var mdiAppleKeyboardShift = "M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z"; +var mdiAppleSafari = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z"; +var mdiApplication = "M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z"; +var mdiApplicationCog = "M21.7 18.6V17.6L22.8 16.8C22.9 16.7 23 16.6 22.9 16.5L21.9 14.8C21.9 14.7 21.7 14.7 21.6 14.7L20.4 15.2C20.1 15 19.8 14.8 19.5 14.7L19.3 13.4C19.3 13.3 19.2 13.2 19.1 13.2H17.1C16.9 13.2 16.8 13.3 16.8 13.4L16.6 14.7C16.3 14.9 16.1 15 15.8 15.2L14.6 14.7C14.5 14.7 14.4 14.7 14.3 14.8L13.3 16.5C13.3 16.6 13.3 16.7 13.4 16.8L14.5 17.6V18.6L13.4 19.4C13.3 19.5 13.2 19.6 13.3 19.7L14.3 21.4C14.4 21.5 14.5 21.5 14.6 21.5L15.8 21C16 21.2 16.3 21.4 16.6 21.5L16.8 22.8C16.9 22.9 17 23 17.1 23H19.1C19.2 23 19.3 22.9 19.3 22.8L19.5 21.5C19.8 21.3 20 21.2 20.3 21L21.5 21.4C21.6 21.4 21.7 21.4 21.8 21.3L22.8 19.6C22.9 19.5 22.9 19.4 22.8 19.4L21.7 18.6M18 19.5C17.2 19.5 16.5 18.8 16.5 18S17.2 16.5 18 16.5 19.5 17.2 19.5 18 18.8 19.5 18 19.5M11.29 20H5C3.89 20 3 19.1 3 18V6C3 4.89 3.9 4 5 4H19C20.11 4 21 4.9 21 6V11.68C20.38 11.39 19.71 11.18 19 11.08V8H5V18H11C11 18.7 11.11 19.37 11.29 20Z"; +var mdiApplicationExport = "M8,12H17.76L15.26,9.5L16.67,8.08L21.59,13L16.67,17.92L15.26,16.5L17.76,14H8V12M19,3C20.11,3 21,3.9 21,5V9.67L19,7.67V7H5V19H19V18.33L21,16.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19Z"; +var mdiApplicationImport = "M1,12H10.76L8.26,9.5L9.67,8.08L14.59,13L9.67,17.92L8.26,16.5L10.76,14H1V12M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V16H5V19H19V7H5V10H3V5A2,2 0 0,1 5,3H19Z"; +var mdiApplicationSettings = "M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M5 4H19A2 2 0 0 1 21 6V18A2 2 0 0 1 19 20H5A2 2 0 0 1 3 18V6A2 2 0 0 1 5 4M5 8V18H19V8H5"; +var mdiApproximatelyEqual = "M18.9 9.2C18.1 10.1 16.6 11 15 11C13.5 11 12.6 10.5 11.8 10.1C11 9.8 10.2 9.3 8.9 9.3C7.7 9.3 6.6 10 6 10.6L5 9.1C5.9 8.2 7.3 7.2 8.9 7.2C10.4 7.2 11.3 7.8 12.1 8.1C12.9 8.4 13.7 9 15 9C16.2 9 17.3 8.2 17.9 7.6L18.9 9.2M19 14.1C18.1 15 16.7 16 15.1 16C13.6 16 12.7 15.5 11.9 15.1C11.1 14.8 10.3 14.2 9 14.2C7.8 14.2 6.7 15 6.1 15.6L5.1 14C6 13.1 7.4 12.1 9 12.1C10.5 12.1 11.4 12.6 12.2 13C13 13.3 13.8 13.8 15.1 13.8C16.3 13.8 17.4 13 18 12.4L19 14.1Z"; +var mdiApproximatelyEqualBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.3 8.2C10.6 8.2 11.4 8.7 12.1 9C12.7 9.3 13.4 9.7 14.5 9.7C15.5 9.7 16.5 9 17 8.5L17.8 9.8C17.1 10.6 15.8 11.4 14.4 11.4C13.1 11.4 12.3 10.9 11.7 10.6C11.1 10.3 10.3 9.9 9.2 9.9C8.2 9.9 7.2 10.6 6.7 11.1L6 9.8C6.7 9 8 8.2 9.3 8.2M14.6 15.8C13.3 15.8 12.5 15.3 11.8 15C11.2 14.7 10.4 14.3 9.3 14.3C8.3 14.3 7.3 15 6.8 15.5L6 14.1C6.7 13.3 8 12.5 9.3 12.5C10.6 12.5 11.4 13 12.1 13.3C12.7 13.6 13.4 14 14.6 14C15.6 14 16.6 13.3 17.1 12.8L17.9 14.1C17.3 15 16 15.8 14.6 15.8Z"; +var mdiApps = "M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z"; +var mdiAppsBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,7V9H9V7H7M11,7V9H13V7H11M15,7V9H17V7H15M7,11V13H9V11H7M11,11V13H13V11H11M15,11V13H17V11H15M7,15V17H9V15H7M11,15V17H13V15H11M15,15V17H17V15H15Z"; +var mdiArch = "M12,2C11.11,4.18 10.57,5.61 9.58,7.73C10.19,8.37 10.93,9.12 12.14,9.97C10.84,9.43 9.95,8.9 9.29,8.34C8,11 6.03,14.75 2,22C5.17,20.17 7.63,19.04 9.92,18.61C9.82,18.19 9.76,17.73 9.77,17.25V17.15C9.82,15.12 10.88,13.56 12.13,13.67C13.38,13.77 14.35,15.5 14.3,17.54C14.29,17.92 14.25,18.29 14.18,18.63C16.44,19.07 18.87,20.19 22,22C21.38,20.86 20.83,19.84 20.31,18.87C19.5,18.23 18.61,17.39 16.85,16.5C18.06,16.8 18.93,17.16 19.61,17.57C14.26,7.62 13.83,6.3 12,2Z"; +var mdiArchive = "M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z"; +var mdiArchiveAlert = "M2 4H18V7H2V4M3 8H17V20H3V8M7.5 11C7.22 11 7 11.22 7 11.5V13H13V11.5C13 11.22 12.78 11 12.5 11H7.5M20 13V7H22V13H20M20 17V15H22V17H20Z"; +var mdiArchiveAlertOutline = "M2 4H18V7H2V4M7.5 11H12.5C12.78 11 13 11.22 13 11.5V13H7V11.5C7 11.22 7.22 11 7.5 11M20 13V7H22V13H20M20 17V15H22V17H20M3 8H5V18H15V8H17V20H3V8Z"; +var mdiArchiveArrowDown = "M3 3H21V7H3V3M4 21V8H20V21H4M14 14V11H10V14H7L12 19L17 14H14Z"; +var mdiArchiveArrowDownOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M5 5V7H19V5M10.5 11V14H8L12 18L16 14H13.5V11"; +var mdiArchiveArrowUp = "M4 21H20V8H4M14 15V18H10V15H7L12 10L17 15M3 3H21V7H3"; +var mdiArchiveArrowUpOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M5 5V7H19V5M10.5 17V14H8L12 10L16 14H13.5V17"; +var mdiArchiveOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M9.5 11H14.5C14.78 11 15 11.22 15 11.5V13H9V11.5C9 11.22 9.22 11 9.5 11M5 5V7H19V5H5Z"; +var mdiArmFlex = "M3 18.34C3 18.34 4 7.09 7 3L12 4L11 7.09H9V14.25H10C12 11.18 16.14 10.06 18.64 11.18C21.94 12.71 21.64 17.32 18.64 19.36C16.24 21 9 22.43 3 18.34Z"; +var mdiArmFlexOutline = "M7 7.76V16.25H11.08L11.68 15.34C12.84 13.55 14.93 12.75 16.47 12.75C17 12.75 17.45 12.84 17.79 13C18.7 13.41 18.95 14.18 19 14.74C19.08 15.87 18.5 17.03 17.5 17.71C16.6 18.33 14.44 19 11.87 19C10.12 19 7.61 18.69 5.12 17.3C5.41 14.85 6 10.88 7 7.76M7 3C4 7.09 3 18.34 3 18.34C5.9 20.31 9.08 21 11.87 21C14.86 21 17.39 20.21 18.64 19.36C21.64 17.32 21.94 12.71 18.64 11.18C18 10.89 17.26 10.75 16.47 10.75C14.17 10.75 11.5 11.96 10 14.25H9V7.09H11L12 4L7 3Z"; +var mdiArrangeBringForward = "M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z"; +var mdiArrangeBringToFront = "M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z"; +var mdiArrangeSendBackward = "M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z"; +var mdiArrangeSendToBack = "M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z"; +var mdiArrowAll = "M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z"; +var mdiArrowBottomLeft = "M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z"; +var mdiArrowBottomLeftBoldOutline = "M18.36,19.78H4.22V5.64L8.47,9.88L14.12,4.22L19.78,9.88L14.12,15.54L18.36,19.78M6.34,17.66H13.41L11.29,15.54L16.95,9.88L14.12,7.05L8.46,12.71L6.34,10.59V17.66Z"; +var mdiArrowBottomLeftThick = "M15.5,5.69L18.31,8.5L11.94,14.89H16.89V18.31H5.69V7.11H9.12V12.06L15.5,5.69Z"; +var mdiArrowBottomLeftThinCircleOutline = "M12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03M12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22M10.12 12.47L8 10.36V16H13.64L11.53 13.88L16.5 8.9L15.1 7.5"; +var mdiArrowBottomRight = "M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z"; +var mdiArrowBottomRightBoldOutline = "M9.88,15.54L4.22,9.88L9.88,4.22L15.54,9.88L19.78,5.64V19.78H5.64L9.88,15.54M17.66,10.59L15.54,12.71L9.88,7.05L7.05,9.88L12.71,15.54L10.59,17.66H17.66V10.59Z"; +var mdiArrowBottomRightThick = "M14.89,12.06V7.11H18.31V18.31H7.11V14.89H12.06L5.69,8.5L8.5,5.69L14.89,12.06Z"; +var mdiArrowBottomRightThinCircleOutline = "M12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 7.59 7.59 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03M12 22C17.54 22 22 17.54 22 12C22 6.46 17.54 2 12 2C6.46 2 2 6.46 2 12C2 17.54 6.46 22 12 22M13.88 12.47L16 10.36V16H10.36L12.47 13.88L7.5 8.9L8.9 7.5"; +var mdiArrowCollapse = "M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z"; +var mdiArrowCollapseAll = "M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z"; +var mdiArrowCollapseDown = "M19.92,12.08L12,20L4.08,12.08L5.5,10.67L11,16.17V2H13V16.17L18.5,10.66L19.92,12.08M12,20H2V22H22V20H12Z"; +var mdiArrowCollapseHorizontal = "M13,20V4H15.03V20H13M10,20V4H12.03V20H10M5,8L9.03,12L5,16V13H2V11H5V8M20,16L16,12L20,8V11H23V13H20V16Z"; +var mdiArrowCollapseLeft = "M11.92,19.92L4,12L11.92,4.08L13.33,5.5L7.83,11H22V13H7.83L13.34,18.5L11.92,19.92M4,12V2H2V22H4V12Z"; +var mdiArrowCollapseRight = "M12.08,4.08L20,12L12.08,19.92L10.67,18.5L16.17,13H2V11H16.17L10.67,5.5L12.08,4.08M20,12V22H22V2H20V12Z"; +var mdiArrowCollapseUp = "M4.08,11.92L12,4L19.92,11.92L18.5,13.33L13,7.83V22H11V7.83L5.5,13.33L4.08,11.92M12,4H22V2H2V4H12Z"; +var mdiArrowCollapseVertical = "M4,12H20V14H4V12M4,9H20V11H4V9M16,4L12,8L8,4H11V1H13V4H16M8,19L12,15L16,19H13V22H11V19H8Z"; +var mdiArrowDecision = "M11,5H8L12,1L16,5H13V9.43C12.25,9.89 11.58,10.46 11,11.12V5M22,11L18,7V10C14.39,9.85 11.31,12.57 11,16.17C9.44,16.72 8.62,18.44 9.17,20C9.72,21.56 11.44,22.38 13,21.83C14.56,21.27 15.38,19.56 14.83,18C14.53,17.14 13.85,16.47 13,16.17C13.47,12.17 17.47,11.97 17.95,11.97V14.97L22,11M10.63,11.59C9.3,10.57 7.67,10 6,10V7L2,11L6,15V12C7.34,12.03 8.63,12.5 9.64,13.4C9.89,12.76 10.22,12.15 10.63,11.59Z"; +var mdiArrowDecisionAuto = "M12,5H9L13,1L17,5H14V9.43C13.25,9.89 12.58,10.46 12,11.12V5M10.4,15H8.5L7.8,13H4.6L3.9,15H2L5.2,6H7.2L10.4,15M7.35,11.65L6.2,8L5.05,11.65H7.35M23,11L19,7V10C15.39,9.85 12.31,12.57 12,16.17C10.44,16.72 9.62,18.44 10.17,20C10.72,21.56 12.44,22.38 14,21.83C15.56,21.27 16.38,19.56 15.83,18C15.53,17.14 14.85,16.47 14,16.17C14.47,12.17 18.47,11.97 18.95,11.97V14.97L23,11Z"; +var mdiArrowDecisionAutoOutline = "M19,15V12C18.5,12 14.5,12.16 14.05,16.2C15.61,16.75 16.43,18.47 15.88,20.03C15.33,21.59 13.61,22.41 12.05,21.86C10.5,21.3 9.67,19.59 10.22,18.03C10.5,17.17 11.2,16.5 12.05,16.2C12.34,12.61 15.4,9.88 19,10V7L23,11L19,15M14,19A1,1 0 0,0 13,18A1,1 0 0,0 12,19A1,1 0 0,0 13,20A1,1 0 0,0 14,19M12,11.12C12.58,10.46 13.25,9.89 14,9.43V5H17L13,1L9,5H12V11.12M7.2,6H5.2L2,15H3.9L4.6,13H7.8L8.5,15H10.4L7.2,6M5.05,11.65L6.2,8L7.35,11.65H5.05Z"; +var mdiArrowDecisionOutline = "M9.64,13.4C8.63,12.5 7.34,12.03 6,12V15L2,11L6,7V10C7.67,10 9.3,10.57 10.63,11.59C10.22,12.15 9.89,12.76 9.64,13.4M18,15V12C17.5,12 13.5,12.16 13.05,16.2C14.61,16.75 15.43,18.47 14.88,20.03C14.33,21.59 12.61,22.41 11.05,21.86C9.5,21.3 8.67,19.59 9.22,18.03C9.5,17.17 10.2,16.5 11.05,16.2C11.34,12.61 14.4,9.88 18,10V7L22,11L18,15M13,19A1,1 0 0,0 12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19M11,11.12C11.58,10.46 12.25,9.89 13,9.43V5H16L12,1L8,5H11V11.12Z"; +var mdiArrowDown = "M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z"; +var mdiArrowDownBold = "M9,4H15V12H19.84L12,19.84L4.16,12H9V4Z"; +var mdiArrowDownBoldBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L17,12H14V8H10V12H7L12,17Z"; +var mdiArrowDownBoldBoxOutline = "M12,17L7,12H10V8H14V12H17L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiArrowDownBoldCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z"; +var mdiArrowDownBoldCircleOutline = "M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiArrowDownBoldHexagonOutline = "M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiArrowDownBoldOutline = "M22,11L12,21L2,11H8V3H16V11H22M12,18L17,13H14V5H10V13H7L12,18Z"; +var mdiArrowDownBox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z"; +var mdiArrowDownCircle = "M11,6V14L7.5,10.5L6.08,11.92L12,17.84L17.92,11.92L16.5,10.5L13,14V6H11M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22Z"; +var mdiArrowDownCircleOutline = "M11,6H13V14L16.5,10.5L17.92,11.92L12,17.84L6.08,11.92L7.5,10.5L11,14V6M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z"; +var mdiArrowDownDropCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z"; +var mdiArrowDownDropCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z"; +var mdiArrowDownThick = "M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z"; +var mdiArrowDownThinCircleOutline = "M12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03M12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22M11 13.54H8L12 17.5L16 13.54H13V6.5H11"; +var mdiArrowExpand = "M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z"; +var mdiArrowExpandAll = "M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z"; +var mdiArrowExpandDown = "M22,4V2H2V4H11V18.17L5.5,12.67L4.08,14.08L12,22L19.92,14.08L18.5,12.67L13,18.17V4H22Z"; +var mdiArrowExpandHorizontal = "M9,11H15V8L19,12L15,16V13H9V16L5,12L9,8V11M2,20V4H4V20H2M20,20V4H22V20H20Z"; +var mdiArrowExpandLeft = "M20,22H22V2H20V11H5.83L11.33,5.5L9.92,4.08L2,12L9.92,19.92L11.33,18.5L5.83,13H20V22Z"; +var mdiArrowExpandRight = "M4,2H2V22H4V13H18.17L12.67,18.5L14.08,19.92L22,12L14.08,4.08L12.67,5.5L18.17,11H4V2Z"; +var mdiArrowExpandUp = "M2,20V22H22V20H13V5.83L18.5,11.33L19.92,9.92L12,2L4.08,9.92L5.5,11.33L11,5.83V20H2Z"; +var mdiArrowExpandVertical = "M13,9V15H16L12,19L8,15H11V9H8L12,5L16,9H13M4,2H20V4H4V2M4,20H20V22H4V20Z"; +var mdiArrowHorizontalLock = "M14.8 7V5.5C14.8 4.1 13.4 3 12 3S9.2 4.1 9.2 5.5V7C8.6 7 8 7.6 8 8.2V11.7C8 12.4 8.6 13 9.2 13H14.7C15.4 13 16 12.4 16 11.8V8.3C16 7.6 15.4 7 14.8 7M13.5 7H10.5V5.5C10.5 4.7 11.2 4.2 12 4.2S13.5 4.7 13.5 5.5V7M6 17V20L2 16L6 12V15H18V12L22 16L18 20V17H6Z"; +var mdiArrowLeft = "M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"; +var mdiArrowLeftBold = "M20,9V15H12V19.84L4.16,12L12,4.16V9H20Z"; +var mdiArrowLeftBoldBox = "M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M7,12L12,17V14H16V10H12V7L7,12Z"; +var mdiArrowLeftBoldBoxOutline = "M7,12L12,7V10H16V14H12V17L7,12M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,5H5V19H19V5Z"; +var mdiArrowLeftBoldCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z"; +var mdiArrowLeftBoldCircleOutline = "M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z"; +var mdiArrowLeftBoldHexagonOutline = "M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiArrowLeftBoldOutline = "M13,22L3,12L13,2V8H21V16H13V22M6,12L11,17V14H19V10H11V7L6,12Z"; +var mdiArrowLeftBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z"; +var mdiArrowLeftCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M18,11H10L13.5,7.5L12.08,6.08L6.16,12L12.08,17.92L13.5,16.5L10,13H18V11Z"; +var mdiArrowLeftCircleOutline = "M18,11V13H10L13.5,16.5L12.08,17.92L6.16,12L12.08,6.08L13.5,7.5L10,11H18M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z"; +var mdiArrowLeftDropCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z"; +var mdiArrowLeftDropCircleOutline = "M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z"; +var mdiArrowLeftRight = "M6.45,17.45L1,12L6.45,6.55L7.86,7.96L4.83,11H19.17L16.14,7.96L17.55,6.55L23,12L17.55,17.45L16.14,16.04L19.17,13H4.83L7.86,16.04L6.45,17.45Z"; +var mdiArrowLeftRightBold = "M8,14V18L2,12L8,6V10H16V6L22,12L16,18V14H8Z"; +var mdiArrowLeftRightBoldOutline = "M14,16V22L24,12L14,2V8H10V2L0,12L10,22V16H14M8,14V17L3,12L8,7V10H16V7L21,12L16,17V14H8Z"; +var mdiArrowLeftThick = "M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z"; +var mdiArrowLeftThinCircleOutline = "M3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12M2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12M10.46 11V8L6.5 12L10.46 16V13H17.5V11"; +var mdiArrowRight = "M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"; +var mdiArrowRightBold = "M4,15V9H12V4.16L19.84,12L12,19.84V15H4Z"; +var mdiArrowRightBoldBox = "M3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19M17,12L12,7V10H8V14H12V17L17,12Z"; +var mdiArrowRightBoldBoxOutline = "M17,12L12,17V14H8V10H12V7L17,12M3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19M5,19H19V5H5V19Z"; +var mdiArrowRightBoldCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z"; +var mdiArrowRightBoldCircleOutline = "M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z"; +var mdiArrowRightBoldHexagonOutline = "M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiArrowRightBoldOutline = "M11,16H3V8H11V2L21,12L11,22V16M13,7V10H5V14H13V17L18,12L13,7Z"; +var mdiArrowRightBox = "M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z"; +var mdiArrowRightCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M6,13H14L10.5,16.5L11.92,17.92L17.84,12L11.92,6.08L10.5,7.5L14,11H6V13Z"; +var mdiArrowRightCircleOutline = "M6,13V11H14L10.5,7.5L11.92,6.08L17.84,12L11.92,17.92L10.5,16.5L14,13H6M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z"; +var mdiArrowRightDropCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z"; +var mdiArrowRightDropCircleOutline = "M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z"; +var mdiArrowRightThick = "M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z"; +var mdiArrowRightThinCircleOutline = "M20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12M22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12M13.54 13V16L17.5 12L13.54 8V11H6.5V13"; +var mdiArrowSplitHorizontal = "M8,18H11V15H2V13H22V15H13V18H16L12,22L8,18M12,2L8,6H11V9H2V11H22V9H13V6H16L12,2Z"; +var mdiArrowSplitVertical = "M18,16V13H15V22H13V2H15V11H18V8L22,12L18,16M2,12L6,16V13H9V22H11V2H9V11H6V8L2,12Z"; +var mdiArrowTopLeft = "M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z"; +var mdiArrowTopLeftBoldOutline = "M14.12,8.46L19.78,14.12L14.12,19.78L8.46,14.12L4.22,18.36V4.22H18.36L14.12,8.46M6.34,13.41L8.46,11.29L14.12,16.95L16.95,14.12L11.29,8.47L13.41,6.34H6.34V13.41Z"; +var mdiArrowTopLeftBottomRight = "M13,21H21V13H19V17.59L6.41,5H11V3H3V11H5V6.41L17.59,19H13V21Z"; +var mdiArrowTopLeftBottomRightBold = "M5.83,8.66L3,11.5V3H11.5L8.66,5.83L18.17,15.34L21,12.5V21H12.5L15.34,18.17L5.83,8.66Z"; +var mdiArrowTopLeftThick = "M9.12,11.94V16.89H5.69V5.69H16.89V9.12H11.94L18.31,15.5L15.5,18.31L9.12,11.94Z"; +var mdiArrowTopLeftThinCircleOutline = "M12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 7.59 7.59 3.97 12 3.97M12 2C6.46 2 2 6.46 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12C22 6.46 17.54 2 12 2M10.12 11.53L8 13.64V8H13.64L11.53 10.12L16.5 15.1L15.1 16.5"; +var mdiArrowTopRight = "M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z"; +var mdiArrowTopRightBoldOutline = "M5.64,4.22H19.78V18.36L15.54,14.12L9.88,19.78L4.22,14.12L9.88,8.46L5.64,4.22M17.66,6.34H10.59L12.71,8.46L7.05,14.12L9.88,16.95L15.54,11.29L17.66,13.41V6.34H17.66Z"; +var mdiArrowTopRightBottomLeft = "M11,21H3V13H5V17.59L17.59,5H13V3H21V11H19V6.41L6.41,19H11V21Z"; +var mdiArrowTopRightBottomLeftBold = "M18.17,8.66L21,11.5V3H12.5L15.34,5.83L5.83,15.34L3,12.5V21H11.5L8.66,18.17L18.17,8.66Z"; +var mdiArrowTopRightThick = "M8.5,18.31L5.69,15.5L12.06,9.12H7.11V5.69H18.31V16.89H14.89V11.94L8.5,18.31Z"; +var mdiArrowTopRightThinCircleOutline = "M12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97M12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2M13.88 11.53L16 13.64V8H10.36L12.47 10.12L7.5 15.1L8.9 16.5"; +var mdiArrowUp = "M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z"; +var mdiArrowUpBold = "M15,20H9V12H4.16L12,4.16L19.84,12H15V20Z"; +var mdiArrowUpBoldBox = "M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M12,7L7,12H10V16H14V12H17L12,7Z"; +var mdiArrowUpBoldBoxOutline = "M12,7L17,12H14V16H10V12H7L12,7M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M19,19V5H5V19H19Z"; +var mdiArrowUpBoldCircle = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z"; +var mdiArrowUpBoldCircleOutline = "M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z"; +var mdiArrowUpBoldHexagonOutline = "M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiArrowUpBoldOutline = "M16,13V21H8V13H2L12,3L22,13H16M7,11H10V19H14V11H17L12,6L7,11Z"; +var mdiArrowUpBox = "M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z"; +var mdiArrowUpCircle = "M13,18V10L16.5,13.5L17.92,12.08L12,6.16L6.08,12.08L7.5,13.5L11,10V18H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiArrowUpCircleOutline = "M13,18H11V10L7.5,13.5L6.08,12.08L12,6.16L17.92,12.08L16.5,13.5L13,10V18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiArrowUpDown = "M17.45,17.55L12,23L6.55,17.55L7.96,16.14L11,19.17V4.83L7.96,7.86L6.55,6.45L12,1L17.45,6.45L16.04,7.86L13,4.83V19.17L16.04,16.14L17.45,17.55Z"; +var mdiArrowUpDownBold = "M10,8H6L12,2L18,8H14V16H18L12,22L6,16H10V8Z"; +var mdiArrowUpDownBoldOutline = "M16,10H22L12,0L2,10H8V14H2L12,24L22,14H16V10M14,16H17L12,21L7,16H10V8H7L12,3L17,8H14V16Z"; +var mdiArrowUpDropCircle = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z"; +var mdiArrowUpDropCircleOutline = "M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z"; +var mdiArrowUpThick = "M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z"; +var mdiArrowUpThinCircleOutline = "M12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97M12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2M13 10.46H16L12 6.5L8 10.46H11V17.5H13"; +var mdiArrowVerticalLock = "M18.8 11V9.5C18.8 8.1 17.4 7 16 7S13.2 8.1 13.2 9.5V11C12.6 11 12 11.6 12 12.2V15.7C12 16.4 12.6 17 13.2 17H18.7C19.4 17 20 16.4 20 15.8V12.3C20 11.6 19.4 11 18.8 11M17.5 11H14.5V9.5C14.5 8.7 15.2 8.2 16 8.2C16.8 8.2 17.5 8.7 17.5 9.5V11M9 6H12L8 2L4 6H7V18H4L8 22L12 18H9V6Z"; +var mdiArtstation = "M1.77,16.88L3.5,19.86C3.84,20.54 4.54,21 5.33,21H16.79L14.43,16.88H1.77M22.23,16.9C22.23,16.5 22.11,16.11 21.9,15.78L15.17,4.1C14.82,3.44 14.15,3 13.35,3H9.8L20.18,21L21.82,18.14C22.13,17.6 22.23,17.36 22.23,16.9M12.73,13.94L8.1,5.92L3.45,13.94H12.73Z"; +var mdiAspectRatio = "M19,12H17V15H14V17H19V12M7,9H10V7H5V12H7V9M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H21V19Z"; +var mdiAssistant = "M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11"; +var mdiAsterisk = "M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z"; +var mdiAt = "M12,15C12.81,15 13.5,14.7 14.11,14.11C14.7,13.5 15,12.81 15,12C15,11.19 14.7,10.5 14.11,9.89C13.5,9.3 12.81,9 12,9C11.19,9 10.5,9.3 9.89,9.89C9.3,10.5 9,11.19 9,12C9,12.81 9.3,13.5 9.89,14.11C10.5,14.7 11.19,15 12,15M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12V13.45C22,14.45 21.65,15.3 21,16C20.3,16.67 19.5,17 18.5,17C17.3,17 16.31,16.5 15.56,15.5C14.56,16.5 13.38,17 12,17C10.63,17 9.45,16.5 8.46,15.54C7.5,14.55 7,13.38 7,12C7,10.63 7.5,9.45 8.46,8.46C9.45,7.5 10.63,7 12,7C13.38,7 14.55,7.5 15.54,8.46C16.5,9.45 17,10.63 17,12V13.45C17,13.86 17.16,14.22 17.46,14.53C17.76,14.84 18.11,15 18.5,15C18.92,15 19.27,14.84 19.57,14.53C19.87,14.22 20,13.86 20,13.45V12C20,9.81 19.23,7.93 17.65,6.35C16.07,4.77 14.19,4 12,4C9.81,4 7.93,4.77 6.35,6.35C4.77,7.93 4,9.81 4,12C4,14.19 4.77,16.07 6.35,17.65C7.93,19.23 9.81,20 12,20H17V22H12C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; +var mdiAtlassian = "M7.93,11.24C7.74,11 7.38,10.94 7.13,11.13C7.06,11.19 7,11.26 6.96,11.34L2.06,21.15C1.91,21.44 2.03,21.79 2.32,21.94C2.4,22 2.5,22 2.59,22H9.41C9.63,22 9.84,21.88 9.94,21.68C11.41,18.63 10.5,14 7.93,11.24M11.53,2.31C9.05,6.14 8.76,11 10.77,15.09L14.06,21.68C14.17,21.88 14.37,22 14.59,22H21.41A0.59,0.59 0 0,0 22,21.41C22,21.32 22,21.23 21.94,21.15C21.94,21.15 12.76,2.77 12.5,2.31C12.39,2.04 12.06,1.92 11.78,2.06C11.67,2.11 11.58,2.2 11.53,2.31Z"; +var mdiAtm = "M8,9V10.5H10.25V15H11.75V10.5H14V9H8M6,9H3A1,1 0 0,0 2,10V15H3.5V13.5H5.5V15H7V10A1,1 0 0,0 6,9M5.5,12H3.5V10.5H5.5V12M21,9H16.5A1,1 0 0,0 15.5,10V15H17V10.5H18V14H19.5V10.5H20.5V15H22V10A1,1 0 0,0 21,9Z"; +var mdiAtom = "M12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11M4.22,4.22C5.65,2.79 8.75,3.43 12,5.56C15.25,3.43 18.35,2.79 19.78,4.22C21.21,5.65 20.57,8.75 18.44,12C20.57,15.25 21.21,18.35 19.78,19.78C18.35,21.21 15.25,20.57 12,18.44C8.75,20.57 5.65,21.21 4.22,19.78C2.79,18.35 3.43,15.25 5.56,12C3.43,8.75 2.79,5.65 4.22,4.22M15.54,8.46C16.15,9.08 16.71,9.71 17.23,10.34C18.61,8.21 19.11,6.38 18.36,5.64C17.62,4.89 15.79,5.39 13.66,6.77C14.29,7.29 14.92,7.85 15.54,8.46M8.46,15.54C7.85,14.92 7.29,14.29 6.77,13.66C5.39,15.79 4.89,17.62 5.64,18.36C6.38,19.11 8.21,18.61 10.34,17.23C9.71,16.71 9.08,16.15 8.46,15.54M5.64,5.64C4.89,6.38 5.39,8.21 6.77,10.34C7.29,9.71 7.85,9.08 8.46,8.46C9.08,7.85 9.71,7.29 10.34,6.77C8.21,5.39 6.38,4.89 5.64,5.64M9.88,14.12C10.58,14.82 11.3,15.46 12,16.03C12.7,15.46 13.42,14.82 14.12,14.12C14.82,13.42 15.46,12.7 16.03,12C15.46,11.3 14.82,10.58 14.12,9.88C13.42,9.18 12.7,8.54 12,7.97C11.3,8.54 10.58,9.18 9.88,9.88C9.18,10.58 8.54,11.3 7.97,12C8.54,12.7 9.18,13.42 9.88,14.12M18.36,18.36C19.11,17.62 18.61,15.79 17.23,13.66C16.71,14.29 16.15,14.92 15.54,15.54C14.92,16.15 14.29,16.71 13.66,17.23C15.79,18.61 17.62,19.11 18.36,18.36Z"; +var mdiAtomVariant = "M18.36,2.64C20,2.64 21.36,4 21.36,5.64C21.36,7.29 20,8.64 18.36,8.64C16.71,8.64 15.36,7.29 15.36,5.64C15.36,5.34 15.41,5.06 15.5,4.8C14.43,4.29 13.25,4 12,4A8,8 0 0,0 4,12L4.04,12.84L2.05,13.05L2,12A10,10 0 0,1 12,2C13.69,2 15.28,2.42 16.67,3.16C17.16,2.83 17.74,2.64 18.36,2.64M18.36,4.64A1,1 0 0,0 17.36,5.64A1,1 0 0,0 18.36,6.64C18.92,6.64 19.36,6.19 19.36,5.64C19.36,5.08 18.92,4.64 18.36,4.64M5.64,15.36C7.29,15.36 8.64,16.71 8.64,18.36C8.64,18.66 8.59,18.94 8.5,19.2C9.57,19.71 10.75,20 12,20A8,8 0 0,0 20,12L19.96,11.16L21.95,10.95L22,12A10,10 0 0,1 12,22C10.31,22 8.72,21.58 7.33,20.84C6.84,21.17 6.26,21.36 5.64,21.36C4,21.36 2.64,20 2.64,18.36C2.64,16.71 4,15.36 5.64,15.36M5.64,17.36C5.08,17.36 4.64,17.81 4.64,18.36C4.64,18.92 5.08,19.36 5.64,19.36A1,1 0 0,0 6.64,18.36A1,1 0 0,0 5.64,17.36M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z"; +var mdiAttachment = "M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z"; +var mdiAudioVideo = "M20,7H4A2,2 0 0,0 2,9V15A2,2 0 0,0 4,17H5V18C5,18.6 5.4,19 6,19H8C8.6,19 9,18.6 9,18V17H15V18C15,18.6 15.4,19 16,19H18C18.6,19 19,18.6 19,18V17H20A2,2 0 0,0 22,15V9A2,2 0 0,0 20,7M14,12H4V10H14V12M18,13A2,2 0 0,1 16,11A2,2 0 0,1 18,9A2,2 0 0,1 20,11A2,2 0 0,1 18,13M6,15H4V14H6V15M10,15H8V14H10V15M14,15H12V14H14V15Z"; +var mdiAudioVideoOff = "M22.1 21.5L2.4 1.7L1.1 3L5.1 7H4C2.9 7 2 7.9 2 9V15C2 16.1 2.9 17 4 17H5V18C5 18.6 5.4 19 6 19H8C8.6 19 9 18.6 9 18V17H15V18C15 18.6 15.4 19 16 19H17.1L20.8 22.7L22.1 21.5M6 15H4V14H6V15M4 12V10H8.1L10.1 12H4M10 15H8V14H10V15M12 15V14H12.1L13.1 15H12M14 10V10.8L20.2 17C21.2 16.9 22 16.1 22 15V9C22 7.9 21.1 7 20 7H10.2L13.2 10H14M18 9C19.1 9 20 9.9 20 11S19.1 13 18 13 16 12.1 16 11 16.9 9 18 9Z"; +var mdiAugmentedReality = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M7,9H10C10.6,9 11,9.5 11,10V15H9.5V13.5H7.5V15H6V10C6,9.5 6.4,9 7,9M13,9H16.5C17.35,9 18,9.65 18,10.5V11.5C18,12.1 17.6,12.65 17.1,12.9L18,15H16.5L15.65,13H14.5V15H13V9M7.5,10.5V12H9.5V10.5H7.5M14.5,10.5V11.5H16.5V10.5H14.5"; +var mdiAutoDownload = "M22 17V19H11V17H22M19 4.5V9.5H22L16.5 15L11 9.5H14V4.5H19M10.7 15H8.8L8.1 13H4.9L4.2 15H2.3L5.5 6H7.5L10.7 15M7.65 11.65L6.5 8L5.35 11.65H7.65Z"; +var mdiAutoFix = "M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z"; +var mdiAutoUpload = "M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z"; +var mdiAutorenew = "M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z"; +var mdiAvTimer = "M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z"; +var mdiAws = "M7.64,10.38C7.64,10.63 7.66,10.83 7.71,11C7.76,11.12 7.83,11.28 7.92,11.46C7.96,11.5 7.97,11.56 7.97,11.61C7.97,11.68 7.93,11.74 7.84,11.81L7.42,12.09C7.36,12.13 7.3,12.15 7.25,12.15C7.18,12.15 7.12,12.11 7.05,12.05C6.96,11.95 6.88,11.85 6.81,11.74C6.75,11.63 6.68,11.5 6.61,11.35C6.09,11.96 5.44,12.27 4.65,12.27C4.09,12.27 3.65,12.11 3.32,11.79C3,11.47 2.83,11.04 2.83,10.5C2.83,9.95 3.03,9.5 3.43,9.14C3.84,8.8 4.38,8.62 5.06,8.62C5.29,8.62 5.5,8.64 5.77,8.68C6,8.71 6.27,8.76 6.53,8.82V8.34C6.53,7.83 6.43,7.5 6.22,7.27C6,7.06 5.65,6.97 5.14,6.97C4.9,6.97 4.66,7 4.42,7.05C4.17,7.11 3.93,7.18 3.7,7.28C3.59,7.32 3.5,7.35 3.47,7.36C3.42,7.38 3.39,7.38 3.36,7.38C3.27,7.38 3.22,7.32 3.22,7.18V6.85C3.22,6.75 3.23,6.67 3.27,6.62C3.3,6.57 3.36,6.53 3.45,6.5C3.69,6.36 3.96,6.26 4.29,6.18C4.62,6.09 4.96,6.05 5.33,6.05C6.12,6.05 6.7,6.23 7.07,6.59C7.44,6.95 7.62,7.5 7.62,8.23V10.38H7.64M4.94,11.4C5.16,11.4 5.38,11.36 5.62,11.28C5.86,11.2 6.07,11.05 6.25,10.85C6.36,10.72 6.44,10.58 6.5,10.42C6.5,10.26 6.55,10.07 6.55,9.84V9.57C6.35,9.5 6.15,9.5 5.93,9.45C5.72,9.43 5.5,9.41 5.31,9.41C4.86,9.41 4.54,9.5 4.32,9.68C4.1,9.86 4,10.11 4,10.44C4,10.76 4.07,11 4.24,11.15C4.4,11.32 4.63,11.4 4.94,11.4M10.28,12.11C10.16,12.11 10.08,12.09 10,12.05C9.97,12 9.92,11.91 9.88,11.79L8.32,6.65C8.28,6.5 8.26,6.43 8.26,6.38C8.26,6.27 8.31,6.21 8.42,6.21H9.07C9.2,6.21 9.29,6.23 9.33,6.28C9.39,6.32 9.43,6.41 9.47,6.54L10.58,10.94L11.62,6.54C11.65,6.41 11.69,6.32 11.75,6.28C11.8,6.24 11.89,6.21 12,6.21H12.55C12.67,6.21 12.76,6.23 12.81,6.28C12.86,6.32 12.91,6.41 12.94,6.54L14,11L15.14,6.54C15.18,6.41 15.23,6.32 15.27,6.28C15.33,6.24 15.41,6.21 15.53,6.21H16.15C16.26,6.21 16.32,6.27 16.32,6.38C16.32,6.41 16.31,6.45 16.3,6.5C16.3,6.5 16.28,6.58 16.26,6.65L14.65,11.79C14.61,11.93 14.57,12 14.5,12.05C14.46,12.09 14.37,12.12 14.26,12.12H13.69C13.56,12.12 13.5,12.1 13.42,12.05C13.37,12 13.32,11.92 13.3,11.79L12.27,7.5L11.24,11.78C11.21,11.91 11.17,12 11.12,12.05C11.06,12.09 10.97,12.11 10.85,12.11H10.28M18.83,12.29C18.5,12.29 18.13,12.25 17.8,12.17C17.47,12.09 17.21,12 17.04,11.91C16.93,11.85 16.86,11.78 16.83,11.72C16.8,11.66 16.79,11.6 16.79,11.54V11.2C16.79,11.06 16.84,11 16.94,11C17,11 17,11 17.06,11C17.1,11 17.16,11.05 17.23,11.08C17.45,11.18 17.7,11.26 17.96,11.31C18.23,11.36 18.5,11.39 18.75,11.39C19.17,11.39 19.5,11.32 19.72,11.17C19.95,11 20.07,10.81 20.07,10.54C20.07,10.35 20,10.2 19.89,10.07C19.77,9.95 19.54,9.83 19.22,9.73L18.25,9.43C17.77,9.27 17.41,9.05 17.19,8.75C16.97,8.46 16.86,8.13 16.86,7.78C16.86,7.5 16.92,7.26 17.04,7.05C17.16,6.83 17.32,6.65 17.5,6.5C17.72,6.35 17.94,6.24 18.21,6.16C18.47,6.08 18.75,6.04 19.05,6.04C19.19,6.04 19.34,6.05 19.5,6.07C19.64,6.09 19.78,6.12 19.92,6.14C20.06,6.18 20.18,6.21 20.3,6.25C20.42,6.29 20.5,6.33 20.58,6.37C20.67,6.42 20.74,6.47 20.78,6.53C20.82,6.59 20.84,6.66 20.84,6.75V7.07C20.84,7.21 20.79,7.28 20.69,7.28C20.64,7.28 20.55,7.25 20.43,7.2C20.06,7.03 19.63,6.94 19.16,6.94C18.78,6.94 18.5,7 18.27,7.13C18.07,7.25 17.96,7.45 17.96,7.72C17.96,7.91 18.03,8.07 18.16,8.19C18.29,8.32 18.54,8.44 18.89,8.56L19.84,8.86C20.32,9 20.66,9.22 20.87,9.5C21.07,9.77 21.17,10.08 21.17,10.43C21.17,10.71 21.11,10.97 21,11.2C20.88,11.42 20.72,11.62 20.5,11.78C20.31,11.95 20.06,12.07 19.78,12.16C19.5,12.25 19.16,12.29 18.83,12.29M20.08,15.53C17.89,17.14 14.71,18 12,18C8.15,18 4.7,16.58 2.09,14.23C1.88,14.04 2.07,13.79 2.32,13.94C5.14,15.57 8.61,16.56 12.21,16.56C14.64,16.56 17.31,16.06 19.76,15C20.13,14.85 20.44,15.26 20.08,15.53M21,14.5C20.71,14.13 19.14,14.32 18.43,14.4C18.22,14.43 18.19,14.24 18.38,14.1C19.63,13.23 21.69,13.5 21.92,13.77C22.16,14.07 21.86,16.13 20.69,17.11C20.5,17.26 20.33,17.18 20.41,17C20.68,16.32 21.27,14.84 21,14.5Z"; +var mdiAxe = "M12,2L22,8C22,12 20,14 16,15L13,10L9,6L12,2M4.11,19.84L2.12,18.33L9.19,9L11,10.81L4.11,19.84Z"; +var mdiAxis = "M2.61,21L1.61,19.27L11,13.85V3H13V13.85L22.39,19.27L21.39,21L12,15.58L2.61,21Z"; +var mdiAxisArrow = "M12,2L16,6H13V13.85L19.53,17.61L21,15.03L22.5,20.5L17,21.96L18.53,19.35L12,15.58L5.47,19.35L7,21.96L1.5,20.5L3,15.03L4.47,17.61L11,13.85V6H8L12,2Z"; +var mdiAxisArrowInfo = "M12 2L16 6H13V13.85L19.53 17.61L21 15.03L22.5 20.5L17 21.96L18.53 19.35L12 15.58L5.47 19.35L7 21.96L1.5 20.5L3 15.03L4.47 17.61L11 13.85V6H8L12 2M21 5H19V3H21V5M22 10V12H18V10H19V8H18V6H21V10H22Z"; +var mdiAxisArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.68,16.34L9,13.85V6H6L10,2L14,6H11V13.85L18.03,17.86L19.5,15.28L21,20.74L15.5,22.21L17.03,19.6L10,15.58L5.68,18.07L7.21,20.71L1.74,19.25Z"; +var mdiAxisLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M11,13.82L20.39,19.25L19.39,21L10,15.56L3.17,19.5L2.17,17.77L9,13.82V3H11V13.82Z"; +var mdiAxisXArrow = "M1.5,20.5L3,15.03L4.46,17.6L11,13.82V3H13V13.82L22.39,19.25L21.39,21L12,15.56L5.46,19.33L7,21.96L1.5,20.5Z"; +var mdiAxisXArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.31,2.2 17.69,2.58 17.54,3.2C17.5,3.29 17.5,3.39 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.67,16.32L9,13.82V3H11V13.82L20.39,19.25L19.39,21L10,15.56L5.67,18.06L7.21,20.71L1.74,19.25Z"; +var mdiAxisXRotateClockwise = "M12,10H14.91C14.57,6.55 13.4,4 12,4C10.42,4 9.12,7.27 9,11.42L7,12.57V12C7,6.5 9.24,2 12,2C14.42,2 16.44,5.44 16.9,10H20L16,14L12,10M12,22C10.12,22 8.47,19.92 7.62,16.84L9.37,15.83C9.87,18.31 10.86,20 12,20C13.27,20 14.36,17.89 14.79,14.92L16,16.12L16.7,15.42C16,19.26 14.16,22 12,22M2.11,18.87L1.11,17.13L1.06,17.06L11.12,11.25L12.72,12.84L2.15,18.94L2.11,18.87M21.89,5.13L22.89,6.87L19.2,9H17.77L17.5,7.66L21.89,5.13Z"; +var mdiAxisXRotateCounterclockwise = "M12,14L16,10L20,14H16.9C16.44,18.56 14.42,22 12,22C10.12,22 8.47,19.92 7.62,16.84L9.37,15.83C9.87,18.31 10.86,20 12,20C13.4,20 14.57,17.45 14.91,14H12M1.11,17.13L13.89,9.75L13.96,10.54L10.5,14H10.54L2.11,18.87L1.11,17.13M21.89,5.13L22.89,6.87L17.88,9.76C17.79,9.03 17.67,8.33 17.5,7.66L21.89,5.13M12,2C14.3,2 16.23,5.1 16.82,9.32L16,8.5L14.87,9.63C14.5,6.37 13.35,4 12,4C10.42,4 9.12,7.27 9,11.42L7,12.57V12C7,6.5 9.24,2 12,2Z"; +var mdiAxisXYArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.68,16.34L9,13.85V3H11V13.85L17.53,17.61L19,15.03L20.5,20.5L15,21.96L16.53,19.35L10,15.58L5.68,18.07L7.21,20.71L1.74,19.25Z"; +var mdiAxisYArrow = "M22.5,20.5L17,21.96L18.53,19.35L12,15.58L2.61,21L1.61,19.27L11,13.85V3H13V13.85L19.53,17.61L21,15.03L22.5,20.5Z"; +var mdiAxisYArrowLock = "M11,13.82L18,17.88L19.5,15.28L21,20.74L15.5,22.21L17,19.61L10,15.56L3.17,19.5L2.17,17.77L9,13.82V3H11V13.82M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5Z"; +var mdiAxisYRotateClockwise = "M12,10L16,14L20,10H16.9C16.44,5.44 14.42,2 12,2C10.12,2 8.47,4.08 7.62,7.16L9.37,8.17C9.87,5.69 10.86,4 12,4C13.4,4 14.57,6.55 14.91,10H12M1.11,6.87L13.89,14.25L13.96,13.46L10.5,10H10.54L2.11,5.13L1.11,6.87M21.89,18.87L22.89,17.13L17.88,14.24C17.79,14.97 17.67,15.67 17.5,16.34L21.89,18.87M12,22C14.3,22 16.23,18.9 16.82,14.68L16,15.5L14.87,14.37C14.5,17.63 13.35,20 12,20C10.42,20 9.12,16.73 9,12.58L7,11.43V12C7,17.5 9.24,22 12,22Z"; +var mdiAxisYRotateCounterclockwise = "M12,14H14.91C14.57,17.45 13.4,20 12,20C10.42,20 9.12,16.73 9,12.58L7,11.43V12C7,17.5 9.24,22 12,22C14.42,22 16.44,18.56 16.9,14H20L16,10L12,14M12,2C10.12,2 8.47,4.08 7.62,7.16L9.37,8.17C9.87,5.69 10.86,4 12,4C13.27,4 14.36,6.11 14.79,9.08L16,7.88L16.7,8.58C16,4.74 14.16,2 12,2M2.11,5.13L1.11,6.87L1.06,6.94L11.12,12.75L12.72,11.16L2.15,5.06L2.11,5.13M21.89,18.87L22.89,17.13L19.2,15H17.77L17.5,16.34L21.89,18.87Z"; +var mdiAxisZArrow = "M12,2L16,6H13V13.82L22.39,19.25L21.39,21L12,15.56L2.61,21L1.61,19.25L11,13.82V6H8L12,2Z"; +var mdiAxisZArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M10,2L14,6H11V13.82L20.39,19.25L19.39,21L10,15.56L3.17,19.5L2.17,17.77L9,13.82V6H6L10,2Z"; +var mdiAxisZRotateClockwise = "M14,12L10,16L14,20V16.9C18.56,16.44 22,14.42 22,12C22,9.58 18.56,7.56 14,7.1V9.09C17.45,9.43 20,10.6 20,12C20,13.4 17.45,14.57 14,14.91V12M4,12C4,10.6 6.55,9.43 10,9.09V7.1C5.44,7.56 2,9.58 2,12C2,14.16 4.74,16 8.58,16.7L7.88,16L9.08,14.79C6.11,14.36 4,13.27 4,12M13,2H11V13L13,11V2M13,22V21L11,19V22H13Z"; +var mdiAxisZRotateCounterclockwise = "M10,12L14,16L10,20V16.9C5.44,16.44 2,14.42 2,12C2,9.58 5.44,7.56 10,7.1V9.09C6.55,9.43 4,10.6 4,12C4,13.4 6.55,14.57 10,14.91V12M20,12C20,10.6 17.45,9.43 14,9.09V7.1C18.56,7.56 22,9.58 22,12C22,14.16 19.26,16 15.42,16.7L16.12,16L14.92,14.79C17.89,14.36 20,13.27 20,12M11,2H13V13L11,11V2M11,22V21L13,19V22H11Z"; +var mdiBabel = "M15.14 2C13.8 2.12 12.04 2.59 9.87 3.43C9.28 3.87 8.6 4.3 7.84 4.72V4.85C7.9 4.85 7.96 4.81 8.04 4.77C8.13 4.76 8.19 4.79 8.19 4.88L8.32 4.8L8.39 4.79L8.4 4.86C8.41 4.92 7.93 5.29 7 5.96L7.06 6.09H7L6.84 6.04C6.84 6.09 6.78 6.11 6.64 6.12L6.65 6.19L6.81 6.37C6.75 6.37 6.68 6.36 6.6 6.32C6.29 6.35 6 6.58 5.69 7L5.77 7.12C6.03 6.88 6.18 6.76 6.22 6.76L6.24 6.95C6.2 6.95 6.12 7 6.04 7.03L6.2 7.27C6.5 6.93 6.86 6.64 7.24 6.41C7.43 6.46 7.53 6.5 7.53 6.58L7.67 6.57C8.69 5.81 9.71 5.27 10.71 4.93L10.72 5.06C10.53 5.34 10.4 5.5 10.33 5.5C10.34 5.59 10.38 5.67 10.43 5.74C10.45 5.92 10 7.06 9.07 9.19C6.95 14.13 5.19 17.78 3.77 20.16C3.77 20.2 3.8 20.27 3.85 20.35C4.2 20.26 4.42 20.18 4.5 20.1L4.6 20.09L4.61 20.22L4.74 20.21L4.88 20.13C4.88 20.18 4.93 20.19 5 20.18L5.03 20.31C5.03 20.45 4.96 20.65 4.8 20.92C4.65 21.08 4.5 21.42 4.34 21.94V22H4.47C5.04 21.35 5.5 20.72 5.78 20.11C7.44 19.62 8.71 19.15 9.59 18.67C10.47 18.6 11.15 18.37 11.61 18L11.6 17.91L11.27 18H11.19L11.18 17.95C11.83 17.85 12.28 17.7 12.5 17.5C13.79 16.54 14.74 15.85 15.39 15.44C17.39 13.97 18.33 12.55 18.22 11.21C18.21 11.07 17.76 10.5 16.9 9.56C16.88 9.38 17.19 9.12 17.8 8.77L19.53 7.24C19.92 6.74 20.15 5.94 20.23 4.83L20.2 4.57C20.14 3.79 19.58 3.16 18.5 2.68C17.88 2.25 16.76 2.03 15.14 2M17.24 2.87C18.53 2.92 19.19 3.14 19.23 3.55L19.18 3.68L17.24 2.87M16 3.96C16.89 3.95 17.35 4.18 17.4 4.68L17.5 4.67V4.34L17.64 4.33C18 4.5 18.16 4.74 18.18 5C18.2 5.2 18.1 5.42 17.89 5.69C17.8 5.7 17.75 5.64 17.74 5.5H17.6L17.56 5.91C17 6.78 16.56 7.23 16.3 7.26C16.06 7.58 15.91 7.75 15.85 7.75C15.67 7.97 15.17 8.35 14.35 8.87C14.08 8.9 13.07 9.28 11.34 10.04C11.25 10 11.16 10 11.06 10L11.05 9.88C11.03 9.62 11.14 9.31 11.39 8.92C11.5 8.21 11.67 7.8 11.83 7.7L13.28 4.44C13.27 4.24 13.57 4.09 14.21 4L14.42 3.96L14.44 4.15C15.06 4.05 15.45 4 15.6 4C15.74 3.97 15.88 3.96 16 3.96M19 4.29H19.04C19.16 4.3 19.28 4.5 19.41 4.91L19.42 5.03C19.35 5.04 19.22 4.83 19.03 4.41L19 4.29M10.82 6.36H10.88L10.9 6.55C10.84 6.56 10.75 6.65 10.65 6.83L10.64 6.7C10.76 6.55 10.82 6.43 10.82 6.36M6.67 6.46L6.68 6.5C6.63 6.5 6.56 6.56 6.5 6.6L6.41 6.61L6.39 6.5L6.67 6.46M10.24 7.72L10.26 8H10.19L10.16 7.73L10.24 7.72M10.07 8.19C10.05 8.41 10 8.5 9.89 8.53L9.82 8.54C9.9 8.39 9.94 8.29 9.93 8.21L10.07 8.19M9.78 8.87L9.79 8.93L9.67 9.14L9.54 9.15L9.53 9.09C9.66 9.08 9.72 9 9.71 8.88L9.78 8.87M9.5 9.5L9.45 9.81H9.38L9.36 9.5H9.5M16.57 9.72L16.85 9.89C16.86 10 16.82 10.03 16.73 10.04C16.61 9.96 16.5 9.93 16.44 9.93L16.43 9.73L16.57 9.72M11 10.46L11.03 10.58L10.76 10.61L10.75 10.5L11 10.46M15.5 10.91C15.68 11 15.78 11.09 15.79 11.16L15.8 11.22C15.61 11.24 15.45 11.14 15.29 10.93L15.5 10.91M17.66 11.12C17.81 11.18 17.88 11.25 17.89 11.31L17.93 11.82C17.87 11.96 17.81 12.03 17.74 12.03L17.66 11.12M14.16 11.18C14.86 11.17 15.4 11.33 15.76 11.68L15.79 11.94C15.5 12.85 15.13 13.38 14.75 13.54L13 14.93C11.7 15.79 11 16.21 10.9 16.22C8.83 17.36 7.54 17.95 7.04 18H6.96C7.03 17.76 7.95 15.87 9.73 12.33C10.5 12.26 11.76 11.89 13.44 11.23L13.85 11.19C13.96 11.19 14.06 11.18 14.16 11.18M11.62 11.59L11.63 11.65L11.35 11.67L11.34 11.61L11.62 11.59M7.26 15.81C7.17 16.26 7.08 16.5 7 16.5L6.97 16.43C6.95 16.2 7.05 16 7.26 15.81M13.18 16.09L13.19 16.21C13.2 16.27 13 16.43 12.6 16.72C11.44 17.29 10.76 17.68 10.56 17.88C9.3 18.32 8.68 18.59 8.69 18.69C7.57 19.14 6.84 19.46 6.5 19.66C6.41 19.67 6.29 19.63 6.13 19.56C6.12 19.34 6.21 19.15 6.44 19C6.63 19 6.82 19 7 19.09C7.21 19 7.57 18.87 8.08 18.74L8.07 18.61L7.66 18.65C7.71 18.58 8.11 18.4 8.86 18.09L9.07 18.07L9.08 18.13C8.73 18.16 8.53 18.27 8.5 18.46C8.5 18.53 8.53 18.58 8.62 18.57C8.87 18.39 9 18.3 9 18.27C9.5 18.18 10.9 17.44 13.18 16.09M6.86 16.69L6.87 16.75C6.88 16.84 6.83 16.89 6.74 16.9V16.84C6.73 16.76 6.77 16.71 6.86 16.69M10 17.5C10.07 17.47 10.12 17.5 10.12 17.58C9.96 17.6 9.65 17.73 9.19 18H9.12L9.11 17.87C9.44 17.84 9.73 17.71 9.97 17.5H10M6.95 18.5L6.96 18.58C6.9 18.58 6.84 18.61 6.75 18.66L6.62 18.67C6.61 18.61 6.65 18.55 6.74 18.53L6.95 18.5M5.35 19.3L5.5 19.36C5.44 19.76 5.33 19.96 5.13 20C4.97 19.91 4.83 19.88 4.7 19.89L4.68 19.7C4.67 19.62 4.72 19.57 4.82 19.55C4.9 19.54 4.95 19.6 4.96 19.73C5.2 19.44 5.33 19.3 5.35 19.3Z"; +var mdiBaby = "M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z"; +var mdiBabyBottle = "M11.28 2.8L10.78 3.3A5.5 5.5 0 0 0 6.41 2.87L6.33 2.8A2.5 2.5 0 0 0 2.8 6.33L2.87 6.41A5.5 5.5 0 0 0 3.3 10.78L2.8 11.28A1.5 1.5 0 0 0 2.8 13.4L4.21 14.82A1.5 1.5 0 0 0 6.33 14.82L6.68 14.46L13.76 21.53A1.5 1.5 0 0 0 15.88 21.53L21.53 15.88A1.5 1.5 0 0 0 21.53 13.76L14.46 6.68L14.82 6.33A1.5 1.5 0 0 0 14.82 4.21L13.4 2.8A1.5 1.5 0 0 0 11.28 2.8M13.76 5.27L5.27 13.76L3.86 12.34L12.34 3.86M14.82 11.63L11.63 14.82L10.57 13.76L13.76 10.57M16.94 13.76L13.76 16.94L12.69 15.88L15.88 12.69Z"; +var mdiBabyBottleOutline = "M11.28 2.8L10.78 3.3C9.44 2.55 7.84 2.4 6.41 2.87L6.33 2.8C5.36 1.82 3.77 1.82 2.8 2.8S1.82 5.36 2.8 6.33L2.87 6.41C2.4 7.84 2.55 9.44 3.3 10.78L2.8 11.28C2.21 11.87 2.21 12.81 2.8 13.4L4.21 14.82C4.8 15.4 5.74 15.4 6.33 14.82L6.68 14.46L13.76 21.53C14.34 22.12 15.29 22.12 15.88 21.53L21.53 15.88C22.12 15.29 22.12 14.34 21.53 13.75L14.46 6.68L14.82 6.33C15.4 5.74 15.4 4.8 14.82 4.21L13.4 2.79C12.82 2.21 11.87 2.21 11.28 2.8M4.25 7.05C4.33 6.71 4.47 6.38 4.66 6.07L3.86 5.27C3.75 5.16 3.67 5.04 3.63 4.9C3.5 4.56 3.57 4.14 3.86 3.86S4.56 3.5 4.9 3.63C5.04 3.67 5.16 3.75 5.27 3.86L6.07 4.66C6.38 4.47 6.71 4.33 7.05 4.25C7.91 4 8.83 4.06 9.65 4.42L4.42 9.65C4.06 8.83 4 7.91 4.25 7.05M20.47 14.82L14.82 20.47L7.75 13.4L13.4 7.75L20.47 14.82M13.76 5.27L5.27 13.76L3.86 12.34L12.34 3.86L13.76 5.27M14.82 11.63L11.63 14.82L10.57 13.76L13.76 10.57L14.82 11.63M16.94 13.76L13.76 16.94L12.69 15.88L15.88 12.69L16.94 13.76Z"; +var mdiBabyBuggy = "M17 20A2 2 0 0 1 15 22A2 2 0 0 1 13 20A2 2 0 0 1 15 18A2 2 0 0 1 17 20M7 20A2 2 0 0 1 5 22A2 2 0 0 1 3 20A2 2 0 0 1 5 18A2 2 0 0 1 7 20M17.61 3C16.95 3 16.44 3.2 16 3.5C15.32 3.91 14.88 4.59 14.47 5.07L5.71 15.35C5.16 16 5.62 17 6.47 17H14C15.11 17 16 16.1 16 15V6.38C16.58 5.7 16.93 5 17.61 5C18.38 5 19 5.66 19 6.5V7H21V6.5C21 4.56 19.5 3 17.61 3M8.86 3.09C7.04 3.16 5.23 3.76 3.68 4.9L8.44 9.66L12.32 5.1C12.59 4.78 12.91 4.38 13.3 4C12.14 3.45 10.9 3.15 9.65 3.09C9.39 3.08 9.12 3.08 8.86 3.09Z"; +var mdiBabyCarriage = "M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z"; +var mdiBabyCarriageOff = "M22 10C22 5.6 18.4 2 14 2V10H22M14.2 11H22C22 12.8 21.4 14.5 20.3 15.9C21 16.5 21.4 17.4 21.5 18.3L14.2 11M20.8 22.7L22.1 21.4L2.4 1.7L1.1 3L9.1 11H7.4L6.5 9H3V11H5.2C5.2 11 7.1 15.1 7.3 15.4C6.3 15.9 5.6 16.9 5.5 18C5.2 19.9 6.6 21.7 8.5 22C10.4 22.3 12.2 20.9 12.5 19H14.6C14.7 19.4 14.8 19.8 15 20.2C15.9 21.9 18.1 22.5 19.7 21.6L20.8 22.7M10.5 18.5C10.5 19.3 9.8 20 9 20S7.5 19.3 7.5 18.5 8.2 17 9 17 10.5 17.7 10.5 18.5M18.1 20C17.2 20 16.5 19.3 16.5 18.5V18.4L18.1 20Z"; +var mdiBabyFace = "M1,12C1,10.19 2.2,8.66 3.86,8.17C5.29,5.11 8.4,3 12,3C15.6,3 18.71,5.11 20.15,8.17C21.8,8.66 23,10.19 23,12C23,13.81 21.8,15.34 20.15,15.83C18.71,18.89 15.6,21 12,21C8.4,21 5.29,18.89 3.86,15.83C2.2,15.34 1,13.81 1,12M14.5,9.25A1.25,1.25 0 0,0 13.25,10.5A1.25,1.25 0 0,0 14.5,11.75A1.25,1.25 0 0,0 15.75,10.5A1.25,1.25 0 0,0 14.5,9.25M9.5,9.25A1.25,1.25 0 0,0 8.25,10.5A1.25,1.25 0 0,0 9.5,11.75A1.25,1.25 0 0,0 10.75,10.5A1.25,1.25 0 0,0 9.5,9.25M7.5,14C8.26,15.77 10,17 12,17C14,17 15.74,15.77 16.5,14H7.5M3,12C3,12.82 3.5,13.53 4.21,13.84C4.07,13.25 4,12.63 4,12C4,11.37 4.07,10.75 4.21,10.16C3.5,10.47 3,11.18 3,12M21,12C21,11.18 20.5,10.47 19.79,10.16C19.93,10.75 20,11.37 20,12C20,12.63 19.93,13.25 19.79,13.84C20.5,13.53 21,12.82 21,12Z"; +var mdiBabyFaceOutline = "M14.5,9.25A1.25,1.25 0 0,1 15.75,10.5A1.25,1.25 0 0,1 14.5,11.75A1.25,1.25 0 0,1 13.25,10.5A1.25,1.25 0 0,1 14.5,9.25M9.5,9.25A1.25,1.25 0 0,1 10.75,10.5A1.25,1.25 0 0,1 9.5,11.75A1.25,1.25 0 0,1 8.25,10.5A1.25,1.25 0 0,1 9.5,9.25M7.5,14H16.5C15.74,15.77 14,17 12,17C10,17 8.26,15.77 7.5,14M1,12C1,10.19 2.2,8.66 3.86,8.17C5.29,5.11 8.4,3 12,3C15.6,3 18.71,5.11 20.15,8.17C21.8,8.66 23,10.19 23,12C23,13.81 21.8,15.34 20.15,15.83C18.71,18.89 15.6,21 12,21C8.4,21 5.29,18.89 3.86,15.83C2.2,15.34 1,13.81 1,12M12,5C8.82,5 6.14,7.12 5.28,10H5A2,2 0 0,0 3,12A2,2 0 0,0 5,14H5.28C6.14,16.88 8.82,19 12,19C15.18,19 17.86,16.88 18.72,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H18.72C17.86,7.12 15.18,5 12,5Z"; +var mdiBackburger = "M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z"; +var mdiBackspace = "M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12"; +var mdiBackspaceOutline = "M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12L19,15.59M22,3A2,2 0 0,1 24,5V19A2,2 0 0,1 22,21H7C6.31,21 5.77,20.64 5.41,20.11L0,12L5.41,3.88C5.77,3.35 6.31,3 7,3H22M22,5H7L2.28,12L7,19H22V5Z"; +var mdiBackspaceReverse = "M2,21H17C17.7,21 18.2,20.6 18.6,20.1L24,12L18.6,3.9C18.2,3.4 17.7,3 17,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21M5,8.4L6.4,7L10,10.6L13.6,7L15,8.4L11.4,12L15,15.6L13.6,17L10,13.4L6.4,17L5,15.6L8.6,12"; +var mdiBackspaceReverseOutline = "M5,15.59L6.41,17L10,13.41L13.59,17L15,15.59L11.41,12L15,8.41L13.59,7L10,10.59L6.41,7L5,8.41L8.59,12L5,15.59M2,3A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H17C17.69,21 18.23,20.64 18.59,20.11L24,12L18.59,3.88C18.23,3.35 17.69,3 17,3H2M2,5H17L21.72,12L17,19H2V5Z"; +var mdiBackupRestore = "M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"; +var mdiBacteria = "M21,16C21,15.5 20.95,15.08 20.88,14.68L22.45,13.9L21.55,12.1L20.18,12.79C19.63,11.96 18.91,11.5 18.29,11.28L18.95,9.32L17.05,8.68L16.29,10.96C14.96,10.83 14.17,10.32 13.7,9.77L15.45,8.9L14.55,7.1L13,7.89C12.97,7.59 12.86,6.72 12.28,5.87L13.83,3.55L12.17,2.44L10.76,4.56C10.28,4.33 9.7,4.15 9,4.06V2H7V4.1C6.29,4.25 5.73,4.54 5.32,4.91L2.7,2.29L1.29,3.71L4.24,6.65C4,7.39 4,8 4,8H2V10H4.04C4.1,10.63 4.21,11.36 4.4,12.15L1.68,13.05L2.31,14.95L5,14.05C5.24,14.56 5.5,15.08 5.82,15.58L3.44,17.17L4.55,18.83L7.07,17.15C7.63,17.71 8.29,18.21 9.06,18.64L8.1,20.55L9.89,21.45L10.89,19.45L10.73,19.36C11.68,19.68 12.76,19.9 14,19.97V22H16V19.93C16.76,19.84 17.81,19.64 18.77,19.19L20.29,20.71L21.7,19.29L20.37,17.95C20.75,17.44 21,16.8 21,16M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M11,14A1,1 0 0,1 10,13A1,1 0 0,1 11,12A1,1 0 0,1 12,13A1,1 0 0,1 11,14M15.5,17A1.5,1.5 0 0,1 14,15.5A1.5,1.5 0 0,1 15.5,14A1.5,1.5 0 0,1 17,15.5A1.5,1.5 0 0,1 15.5,17Z"; +var mdiBacteriaOutline = "M9,2H7V4.1C6.29,4.25 5.73,4.54 5.32,4.91L2.7,2.29L1.29,3.71L4.24,6.65C4,7.39 4,8 4,8H2V10H4.04C4.1,10.63 4.21,11.36 4.4,12.15L1.68,13.05L2.31,14.95L5,14.05C5.24,14.56 5.5,15.08 5.82,15.58L3.44,17.17L4.55,18.83L7.07,17.15C7.63,17.71 8.29,18.21 9.06,18.64L8.1,20.55L9.89,21.45L10.89,19.45L10.73,19.36C11.68,19.68 12.76,19.9 14,19.97V22H16V19.93C16.76,19.84 17.81,19.64 18.77,19.19L20.29,20.71L21.7,19.29L20.37,17.95C20.75,17.44 21,16.8 21,16C21,15.5 20.95,15.08 20.88,14.68L22.45,13.9L21.55,12.1L20.18,12.79C19.63,11.96 18.91,11.5 18.29,11.28L18.95,9.32L17.05,8.68L16.29,10.96C14.96,10.83 14.17,10.32 13.7,9.77L15.45,8.9L14.55,7.1L13,7.89C12.97,7.59 12.86,6.72 12.28,5.87L13.83,3.55L12.17,2.44L10.76,4.56C10.28,4.33 9.7,4.15 9,4.06M15,18C12.06,18 9.81,17.18 8.31,15.56C5.68,12.72 6,8.2 6,8.17V8.11L6,8.03C6,7.1 6.39,6 8,6C10.63,6 10.97,7.43 11,8C11,10 12.6,13 17,13C17.33,13 19,13.15 19,16C19,17.89 15.03,18 15,18M8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8M11,12A1,1 0 0,0 10,13A1,1 0 0,0 11,14A1,1 0 0,0 12,13A1,1 0 0,0 11,12M15.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,17A1.5,1.5 0 0,0 17,15.5A1.5,1.5 0 0,0 15.5,14Z"; +var mdiBadgeAccount = "M17,3H14V6H10V3H7A2,2 0 0,0 5,5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V5A2,2 0 0,0 17,3M12,8A2,2 0 0,1 14,10A2,2 0 0,1 12,12A2,2 0 0,1 10,10A2,2 0 0,1 12,8M16,16H8V15C8,13.67 10.67,13 12,13C13.33,13 16,13.67 16,15V16M13,5H11V1H13V5M16,19H8V18H16V19M12,21H8V20H12V21Z"; +var mdiBadgeAccountAlert = "M15,3H12V6H8V3H5A2,2 0 0,0 3,5V21A2,2 0 0,0 5,23H15A2,2 0 0,0 17,21V5A2,2 0 0,0 15,3M10,8A2,2 0 0,1 12,10A2,2 0 0,1 10,12A2,2 0 0,1 8,10A2,2 0 0,1 10,8M14,16H6V15C6,13.67 8.67,13 10,13C11.33,13 14,13.67 14,15V16M11,5H9V1H11V5M14,19H6V18H14V19M10,21H6V20H10V21M19,13V7H21V13H19M19,17V15H21V17H19Z"; +var mdiBadgeAccountAlertOutline = "M15,3H12V5H15V21H5V5H8V3H5A2,2 0 0,0 3,5V21A2,2 0 0,0 5,23H15A2,2 0 0,0 17,21V5A2,2 0 0,0 15,3M10,7A2,2 0 0,1 12,9A2,2 0 0,1 10,11A2,2 0 0,1 8,9A2,2 0 0,1 10,7M14,15H6V14C6,12.67 8.67,12 10,12C11.33,12 14,12.67 14,14V15M14,18H6V17H14V18M10,20H6V19H10V20M11,5H9V1H11V5M19,13V7H21V13H19M19,17V15H21V17H19Z"; +var mdiBadgeAccountHorizontal = "M22,4H14V7H10V4H2A2,2 0 0,0 0,6V20A2,2 0 0,0 2,22H22A2,2 0 0,0 24,20V6A2,2 0 0,0 22,4M8,9A2,2 0 0,1 10,11A2,2 0 0,1 8,13A2,2 0 0,1 6,11A2,2 0 0,1 8,9M12,17H4V16C4,14.67 6.67,14 8,14C9.33,14 12,14.67 12,16V17M20,18H14V16H20V18M20,14H14V12H20V14M20,10H14V8H20V10M13,6H11V2H13V6Z"; +var mdiBadgeAccountHorizontalOutline = "M8,9A2,2 0 0,1 10,11A2,2 0 0,1 8,13A2,2 0 0,1 6,11A2,2 0 0,1 8,9M12,17H4V16C4,14.67 6.67,14 8,14C9.33,14 12,14.67 12,16V17M20,8H14V10H20V8M20,12H14V14H20V12M20,16H14V18H20V16M22,4H14V6H22V20H2V6H10V4H2A2,2 0 0,0 0,6V20A2,2 0 0,0 2,22H22A2,2 0 0,0 24,20V6A2,2 0 0,0 22,4M13,6H11V2H13V6Z"; +var mdiBadgeAccountOutline = "M17,3H14V5H17V21H7V5H10V3H7A2,2 0 0,0 5,5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V5A2,2 0 0,0 17,3M12,7A2,2 0 0,1 14,9A2,2 0 0,1 12,11A2,2 0 0,1 10,9A2,2 0 0,1 12,7M16,15H8V14C8,12.67 10.67,12 12,12C13.33,12 16,12.67 16,14V15M16,18H8V17H16V18M12,20H8V19H12V20M13,5H11V1H13V5Z"; +var mdiBadminton = "M12.3,2C11.33,2.03 10.58,2.84 10.61,3.8C10.62,4.04 10.67,4.27 10.77,4.5L11.06,5.14V5.14C11.1,5.27 11.03,5.41 10.89,5.45C10.8,5.5 10.7,5.45 10.63,5.37L10.21,4.82C9.88,4.4 9.38,4.14 8.85,4.13C7.88,4.11 7.08,4.88 7.06,5.84C7.05,6.26 7.19,6.66 7.45,7L7.87,7.5H7.88C7.96,7.63 7.93,7.79 7.82,7.87C7.73,7.94 7.61,7.94 7.53,7.87L7,7.45C6.66,7.19 6.25,7.05 5.84,7.06C4.88,7.08 4.11,7.88 4.13,8.85C4.14,9.38 4.4,9.88 4.82,10.21L5.39,10.65C5.5,10.75 5.5,10.91 5.38,11C5.31,11.07 5.21,11.09 5.12,11.05H5.11L4.5,10.77C4.27,10.68 4.04,10.62 3.8,10.61C2.84,10.58 2.03,11.34 2,12.31C2,13.03 2.4,13.69 3.06,13.97L14.45,19.04L19.04,14.45L13.97,3.06C13.69,2.39 13,1.97 12.3,2M13.13,6.1C13.55,6.09 13.93,6.33 14.09,6.71L17.14,13.55L13.19,9.61L12.26,7.5C11.96,6.87 12.42,6.12 13.13,6.1M9.85,8.85C10.12,8.85 10.37,8.95 10.56,9.15L15.37,13.96C15.77,14.34 15.78,14.97 15.4,15.37C15,15.77 14.38,15.78 13.96,15.37L9.15,10.56C8.75,10.18 8.74,9.54 9.13,9.15C9.32,8.95 9.58,8.85 9.85,8.85M7.13,12.17C7.26,12.17 7.4,12.21 7.5,12.26L9.63,13.2L13.57,17.14L6.71,14.09C5.69,13.65 6.03,12.14 7.13,12.17M20.28,16.04L16.04,20.28L16.89,21.13C17.65,21.88 18.75,22.17 19.78,21.9C20.81,21.62 21.62,20.81 21.9,19.78C22.17,18.75 21.88,17.65 21.13,16.89L20.28,16.04Z"; +var mdiBagCarryOn = "M14.6 21.4C15 21.8 15.4 22 16 22S17 21.8 17.4 21.4 18 20.6 18 20 17.8 19 17.4 18.6 16.5 18 16 18 15 18.2 14.6 18.6 14 19.4 14 20 14.2 21 14.6 21.4M6 19C6 19.5 6.2 20 6.6 20.4C7 20.8 7.5 21 8 21V7C7.5 7 7 7.2 6.6 7.6C6.2 8 6 8.5 6 9V19M16 2H12C12 2.5 12.2 3 12.6 3.4C13 3.8 13.5 4 14 4V7H9V21H13.2C13 20.5 13 20.2 13 20C13 19.2 13.3 18.5 13.9 17.9C14.5 17.3 15.2 17 16 17V2Z"; +var mdiBagCarryOnCheck = "M15.28,16.69L18.14,13.88L18.84,14.58L15.28,18.14L13.17,16L13.88,15.28L15.28,16.69M8,21A2,2 0 0,1 6,19V9A2,2 0 0,1 8,7V21M9,7H14V4A2,2 0 0,1 12,2H16V10A6,6 0 0,1 22,16A6,6 0 0,1 16,22C14.77,22 13.63,21.63 12.68,21H9V7M16,12A4,4 0 0,0 12,16A4,4 0 0,0 16,20A4,4 0 0,0 20,16A4,4 0 0,0 16,12Z"; +var mdiBagCarryOnOff = "M2.1 4.9L6 8.9V19C6 19.5 6.2 20 6.6 20.4C7 20.8 7.5 21 8 21V10.8L9 11.8V21H13.2C13.1 20.6 13 20.2 13 20C13 18.8 13.5 18 14.6 17.4L15.4 18.2C14.5 18.5 14.1 19.2 14.1 20.1C14.1 20.6 14.3 21.1 14.7 21.5C15 21.8 15.5 22 16 22C16.9 22 17.6 21.6 17.9 20.7L19.1 21.9L20.5 20.5L3.5 3.5L2.1 4.9M12 2C12 2.5 12.2 3 12.6 3.4S13.5 4 14 4V7H9.8L16 13.2V2H12Z"; +var mdiBagChecked = "M22 19H2V21H22V19M4 15C4 15.5 4.2 16 4.6 16.4C5 16.8 5.5 17 6 17V6C5.5 6 5 6.2 4.6 6.6C4.2 7 4 7.5 4 8V15M13.5 6H10.5C10.5 5.6 10.6 5.2 10.9 4.9C11.2 4.6 11.5 4.5 12 4.5C12.4 4.5 12.8 4.6 13.1 4.9C13.3 5.2 13.5 5.6 13.5 6M7 6V17H17V6H15C15 5.2 14.7 4.5 14.1 3.9S12.8 3 12 3C11.2 3 10.5 3.3 9.9 3.9C9.3 4.5 9 5.2 9 6H7M18 17C18.5 17 19 16.8 19.4 16.4C19.8 16 20 15.5 20 15V8C20 7.5 19.8 7 19.4 6.6C19 6.2 18.5 6 18 6V17Z"; +var mdiBagPersonal = "M16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V5A4,4 0 0,0 4,9V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V9A4,4 0 0,0 16,5M10,4H14V5H10V4M12,9L14,11L12,13L10,11L12,9M18,16H9V18H8V16H6V15H18V16Z"; +var mdiBagPersonalOff = "M20,19.35L2.38,1.73L1.11,3L4.77,6.66C4.27,7.34 4,8.16 4,9V20A2,2 0 0,0 6,22H18C18.56,22 19.08,21.76 19.46,21.35L20.84,22.73L22.11,21.46L20,19.35M9,16V18H8V16H6V15H13.11L14.11,16H9M20,9A4,4 0 0,0 16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V4.8L20,16.8V9M14,5H10V4H14V5Z"; +var mdiBagPersonalOffOutline = "M20,19.35L2.38,1.73L1.11,3L4.77,6.66C4.27,7.34 4,8.16 4,9V20A2,2 0 0,0 6,22H18C18.56,22 19.08,21.76 19.46,21.35L20.84,22.73L22.11,21.46L20,19.35M6,9C6,8.69 6.08,8.38 6.22,8.11L13.11,15H6V9M18,20H6V16H8V18H9V16H14.11L18,19.89V20M16,7A2,2 0 0,1 18,9V14.8L20,16.8V9A4,4 0 0,0 16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V4.8L10.2,7H16M10,4H14V5H10V4Z"; +var mdiBagPersonalOutline = "M16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V5A4,4 0 0,0 4,9V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V9A4,4 0 0,0 16,5M10,4H14V5H10V4M12,9L14,11L12,13L10,11L12,9M18,20H6V16H8V18H9V16H18V20M18,15H6V9A2,2 0 0,1 8,7H16A2,2 0 0,1 18,9V15Z"; +var mdiBagSuitcase = "M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M13.5 6V3.5H10.5V6H13.5M8 9V18H9.5V9H8M14.5 9V18H16V9H14.5M11.25 9V18H12.75V9H11.25Z"; +var mdiBagSuitcaseOff = "M2 4.77L3.28 3.5L21 21.22L19.73 22.5L18 20.76C17.71 20.93 17.38 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V7.77L2 4.77M17.03 6C18.11 6 19 6.88 19 8V16.68L16 13.68V9H14.5V12.18L12.75 10.43V9H11.32L8.31 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M8 18H9.5V12.27L8 10.77V18M11.25 18H12.75V15.5L11.25 14V18M14.5 18H15.23L14.5 17.27V18M13.5 6V3.5H10.5V6H13.5Z"; +var mdiBagSuitcaseOffOutline = "M2 4.77L3.28 3.5L21 21.22L19.73 22.5L18 20.76C17.71 20.93 17.38 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19L5 7.78L2 4.77M9.5 18H8V10.78L6.97 9.74V19H16.23L15.25 18H14.5V17.26L12.75 15.5V18H11.25V14L9.5 12.28V18M12.75 9V10.43L11.32 9H12.75M14.5 9H16V13.67L14.5 12.17V9M17.03 6C18.11 6 19 6.88 19 8V16.68L17.03 14.7V8H10.33L8.31 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M10.5 3.5V6H13.5V3.5H10.5Z"; +var mdiBagSuitcaseOutline = "M9.5 18V9H8V18M12.75 18V9H11.25V18M16 18V9H14.5V18M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6M10.5 3.5V6H13.5V3.5M17.03 19V8H6.97V19"; +var mdiBaguette = "M5 22C3.68 22 3.15 19.64 3.04 18.7A5.56 5.56 0 0 1 3.36 16A2.5 2.5 0 0 1 5.23 14.38C6.4 14.18 7.23 14.88 8.29 15.12A1.21 1.21 0 0 0 9.85 13.75C9.41 12.03 6.28 12 5 12C5 10.14 7.04 9.9 8.5 10.04A10.8 10.8 0 0 1 11.04 10.6C11.54 10.77 12.12 11.2 12.67 11.16C13.5 11.09 13.67 10.23 13.31 9.6C12.44 8.12 9.97 8 8.5 8C8.5 6 10.23 5.62 11.89 5.92A11.58 11.58 0 0 1 14.38 6.71C14.89 6.93 15.5 7.35 16.06 7.16C17.5 6.72 16 5.18 15.36 4.81A6.6 6.6 0 0 0 13.94 4.23C13.4 4.07 12.74 4.13 13.23 3.5A5.13 5.13 0 0 1 15.96 2.26C17.85 1.82 20.46 1.74 20.92 4.12A5.3 5.3 0 0 1 20.07 7.7A38.96 38.96 0 0 1 13.22 16.33A36.6 36.6 0 0 1 8.62 20.32C7.62 21.04 6.3 22 5 22Z"; +var mdiBalloon = "M13.16,12.74L14,14H12.5C12.35,16.71 12,19.41 11.5,22.08L10.5,21.92C11,19.3 11.34,16.66 11.5,14H10L10.84,12.74C8.64,11.79 7,8.36 7,6A5,5 0 0,1 12,1A5,5 0 0,1 17,6C17,8.36 15.36,11.79 13.16,12.74Z"; +var mdiBallot = "M13,9.5H18V7.5H13V9.5M13,16.5H18V14.5H13V16.5M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M6,11H11V6H6V11M7,7H10V10H7V7M6,18H11V13H6V18M7,14H10V17H7V14Z"; +var mdiBallotOutline = "M13,7.5H18V9.5H13V7.5M13,14.5H18V16.5H13V14.5M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M19,19V5H5V19H19M11,6V11H6V6H11M10,10V7H7V10H10M11,13V18H6V13H11M10,17V14H7V17H10Z"; +var mdiBallotRecount = "M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23M10,17H7V14H10V17M10,7V10H7V7H10M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V11.17C20.5,11.06 20,11 19.5,11A6.5,6.5 0 0,0 13,17.5C13,18.79 13.38,20 14,21H5M13,9.5H18V7.5H13V9.5M11,13H6V18H11V13M11,6H6V11H11V6Z"; +var mdiBallotRecountOutline = "M6,18V13H11V18H6M7,14V17H10V14H7M13,7.5H18V9.5H13V7.5M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V11.17C20.5,11.06 20,11 19.5,11H19V5H5V19H13.17C13.34,19.72 13.63,20.39 14,21H5M11,6V11H6V6H11M10,10V7H7V10H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23Z"; +var mdiBandage = "M17.73,12L21.71,8.04C22.1,7.65 22.1,7 21.71,6.63L17.37,2.29C17,1.9 16.35,1.9 15.96,2.29L12,6.27L8,2.29C7.8,2.1 7.55,2 7.29,2C7.04,2 6.78,2.1 6.59,2.29L2.25,6.63C1.86,7 1.86,7.65 2.25,8.04L6.23,12L2.25,16C1.86,16.39 1.86,17 2.25,17.41L6.59,21.75C7,22.14 7.61,22.14 8,21.75L12,17.77L15.96,21.75C16.16,21.95 16.41,22.04 16.67,22.04C16.93,22.04 17.18,21.94 17.38,21.75L21.72,17.41C22.11,17 22.11,16.39 21.72,16L17.73,12M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7.29,10.96L3.66,7.34L7.29,3.71L10.91,7.33L7.29,10.96M10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13M12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M16.66,20.34L13.03,16.72L16.66,13.09L20.28,16.71L16.66,20.34Z"; +var mdiBandcamp = "M22,6L15.5,18H2L8.5,6H22Z"; +var mdiBank = "M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z"; +var mdiBankCheck = "M10.5 17V10H13.5V16.61C13.44 16.73 13.4 16.87 13.35 17H10.5M19 13C19.17 13 19.33 13 19.5 13.03V10H16.5V13.55C17.26 13.2 18.11 13 19 13M7.5 17V10H4.5V17H7.5M21.5 6L12 1L2.5 6V8H21.5V6M2.5 19V22H13.81C13.3 21.12 13 20.09 13 19H2.5M21.34 16L17.75 19.59L16.16 18L15 19.16L17.75 22.16L22.5 17.41L21.34 16Z"; +var mdiBankMinus = "M14,17H22V19H14V17M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z"; +var mdiBankOff = "M11.2 8L6.89 3.69L12 1L21.5 6V8H11.2M19.5 16.3V10H16.5V13.3L19.5 16.3M21.5 20.85V20.84L19.66 19H19.65L17.65 17H17.66L16.5 15.84V15.85L13.5 12.85V12.84L10.66 10H10.66L8.66 8H8.66L2.39 1.73L1.11 3L3.56 5.45L2.5 6V8H6.11L10.5 12.39V17H13.5V15.39L17.11 19H2.5V22H20.11L20.84 22.73L22.11 21.46L21.5 20.85M4.5 10V17H7.5V10H4.5Z"; +var mdiBankOffOutline = "M17 13.8V10H19V15.8L17 13.8M12 3.26L17.21 6H9.2L11.2 8H21.5V6L12 1L6.89 3.69L8.37 5.17L12 3.26M5 10V17H7V10H5M21.5 20.85V20.84L19.66 19H19.65L17.65 17H17.66L17 16.34V16.35L13 12.35V12.34L11 10.34V10.35L8.66 8H8.66L2.39 1.73L1.11 3L3.56 5.45L2.5 6V8H6.11L11 12.89V17H13V14.89L17.11 19H2.5V21H19.11L20.84 22.73L22.11 21.46L21.5 20.85Z"; +var mdiBankOutline = "M6.5,10H4.5V17H6.5V10M12.5,10H10.5V17H12.5V10M21,19H2V21H21V19M18.5,10H16.5V17H18.5V10M11.5,3.26L16.71,6H6.29L11.5,3.26M11.5,1L2,6V8H21V6L11.5,1Z"; +var mdiBankPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z"; +var mdiBankRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z"; +var mdiBankTransfer = "M15,14V11H18V9L22,12.5L18,16V14H15M14,7.7V9H2V7.7L8,4L14,7.7M7,10H9V15H7V10M3,10H5V15H3V10M13,10V12.5L11,14.3V10H13M9.1,16L8.5,16.5L10.2,18H2V16H9.1M17,15V18H14V20L10,16.5L14,13V15H17Z"; +var mdiBankTransferIn = "M2,15V12H5V10L9,13.5L5,17V15H2M22,8.7V10H10V8.7L16,5L22,8.7M10,17H22V19H10V17M15,11H17V16H15V11M11,11H13V16H11V11M19,11H21V16H19V11Z"; +var mdiBankTransferOut = "M15,15V12H18V10L22,13.5L18,17V15H15M14,8.7V10H2V8.7L8,5L14,8.7M2,17H14V19H2V17M7,11H9V16H7V11M3,11H5V16H3V11M11,11H13V16H11V11Z"; +var mdiBarcode = "M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z"; +var mdiBarcodeOff = "M20.84 22.73L16 17.89V18H14V15.89L12 13.89V18H11V12.89L10 11.89V18H7V8.89L6 7.89V18H5V6.89L1.11 3L2.39 1.73L7 6.34L10 9.34L11 10.34L12 11.34L14 13.35V13.34L16 15.34V15.35L17 16.35V16.34L18.66 18H18.65L22.11 21.46L20.84 22.73M16 6H14V10.8L16 12.8V6M12 6H11V7.8L12 8.8V6M20 6H17V13.8L20 16.8V6M22 18V6H21V17.8L21.2 18H22M10 6H9.2L10 6.8V6M2 18H4V6H2V18Z"; +var mdiBarcodeScan = "M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z"; +var mdiBarley = "M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z"; +var mdiBarleyOff = "M11.96,1.21C11.3,2.76 10.64,4.31 10.65,5.82C10.66,6.42 10.77,7 10.94,7.62C10.86,7.46 10.77,7.31 10.67,7.17C9.83,6 8.17,5 6.5,4C6.5,4.8 6.5,5.59 6.68,6.36L13,12.68V10.7C14.5,9.8 15.92,8.88 16.67,7.83C17.5,6.67 17.5,5.33 17.5,4C15.83,5 14.17,6 13.33,7.17C13.23,7.31 13.15,7.45 13.07,7.59C13.25,6.96 13.36,6.32 13.35,5.69C13.34,4.18 12.65,2.69 11.96,1.21M3.28,5.5L2,6.77L6.64,11.41C6.75,12 6.95,12.55 7.33,13.08C8.08,14.13 9.5,15.05 11,15.95V18.23L10.67,17.67C9.83,16.5 8.17,15.5 6.5,14.5C6.5,15.83 6.5,17.17 7.33,18.33C8.08,19.38 9.5,20.3 11,21.2V23H13V21.2C13.74,20.76 14.45,20.31 15.07,19.84L18.73,23.5L20,22.22C14,16.23 9.1,11.32 3.28,5.5M17.5,9.25C15.83,10.25 14.17,11.25 13.33,12.42L13.12,12.79L15,14.66C15.67,14.16 16.27,13.64 16.67,13.08C17.5,11.92 17.5,10.58 17.5,9.25M17.5,14.5C16.93,14.84 16.38,15.18 15.85,15.53L17.29,16.97C17.5,16.17 17.5,15.33 17.5,14.5Z"; +var mdiBarn = "M12,3L3,8.2V21H9L11.9,18L15,21H21V8.2L12,3M7.9,20V14L10.9,17L7.9,20M8.9,13H14.9L11.9,16L8.9,13M15.9,20L12.9,17L15.9,14V20M15,11H8.8V9H15V11Z"; +var mdiBarrel = "M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z"; +var mdiBaseball = "M12,2C9.5,2 7.25,2.9 5.5,4.4C6,4.81 6.41,5.27 6.8,5.76L7.89,5.13L8.89,6.87L7.89,7.44C8.45,8.53 8.82,9.73 8.95,11H10V12L10,13H8.95C8.82,14.27 8.45,15.47 7.89,16.56L8.89,17.13L7.89,18.87L6.8,18.24C6.41,18.73 6,19.19 5.5,19.6C7.25,21.1 9.5,22 12,22C14.5,22 16.75,21.1 18.5,19.6C18,19.19 17.59,18.73 17.19,18.24L16.11,18.87L15.11,17.13L16.11,16.55C15.55,15.47 15.18,14.27 15.05,13H14V11H15.05C15.18,9.73 15.55,8.53 16.11,7.45L15.11,6.87L16.11,5.13L17.19,5.76C17.59,5.27 18,4.81 18.5,4.4C16.75,2.9 14.5,2 12,2M4.12,5.85C2.79,7.55 2,9.68 2,12C2,14.32 2.79,16.45 4.12,18.15C4.46,17.87 4.76,17.55 5.05,17.22L4.43,16.87L5.43,15.13L6.16,15.56C6.55,14.77 6.82,13.91 6.93,13H6V12L6,11H6.93C6.82,10.09 6.55,9.23 6.16,8.44L5.43,8.87L4.43,7.13L5.05,6.78C4.76,6.45 4.46,6.13 4.12,5.85M19.88,5.85C19.54,6.13 19.24,6.45 18.95,6.78L19.57,7.13L18.57,8.87L17.84,8.44C17.45,9.23 17.18,10.09 17.07,11H18V13H17.07C17.18,13.91 17.45,14.77 17.84,15.56L18.57,15.13L19.57,16.87L18.95,17.22C19.24,17.55 19.54,17.87 19.88,18.15C21.21,16.45 22,14.32 22,12C22,9.68 21.21,7.55 19.88,5.85Z"; +var mdiBaseballBat = "M20,2C19.72,2 19.5,2.11 19.29,2.29L9.79,11.79C9.75,11.83 9.72,11.87 7.23,15.35L4,18.59L3.71,18.29C3.5,18.1 3.26,18 3,18C2.44,18 2,18.44 2,19C2,19.26 2.1,19.5 2.29,19.71L4.29,21.71C4.68,22.11 5.31,22.12 5.71,21.74C6.11,21.35 6.12,20.72 5.71,20.29L5.41,20L8.64,16.77L12.21,14.21L21.71,4.71C22.1,4.32 22.1,3.68 21.71,3.29L20.71,2.29C20.5,2.1 20.26,2 20,2M18.5,13A2.5,2.5 0 0,0 16,15.5A2.5,2.5 0 0,0 18.5,18A2.5,2.5 0 0,0 21,15.5A2.5,2.5 0 0,0 18.5,13Z"; +var mdiBaseballDiamond = "M5.79 12.79L2 9C2 9 6 3 12 3S22 9 22 9L18.21 12.79L12 6.59L5.79 12.79M13.5 18H10.5V20L12 21L13.5 20V18M16.79 14.21L14.2 16.8C13.6 16.31 12.84 16 12 16S10.4 16.31 9.8 16.8L7.21 14.21L12 9.41L16.79 14.21M13 14C13 13.45 12.55 13 12 13S11 13.45 11 14 11.45 15 12 15 13 14.55 13 14Z"; +var mdiBaseballDiamondOutline = "M12 2C5 2 1 9 1 9L9.3 17.3C9.74 16.77 10.32 16.37 11 16.17L7.83 13L12 8.83L16.17 13L13 16.17C13.68 16.37 14.27 16.77 14.7 17.3L23 9C23 9 19 2 12 2M17.59 11.59L12 6L6.41 11.59L3.59 8.76C4.95 7 7.89 4 12 4C16.08 4 19.03 7 20.4 8.77L17.59 11.59M13 13C13 13.55 12.55 14 12 14S11 13.55 11 13 11.45 12 12 12 13 12.45 13 13M13.5 20L12 21L10.5 20V18H13.5V20Z"; +var mdiBash = "M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z"; +var mdiBasket = "M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z"; +var mdiBasketFill = "M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z"; +var mdiBasketMinus = "M23 18V20H15V18H23M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z"; +var mdiBasketMinusOutline = "M23 18V20H15V18H23M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z"; +var mdiBasketOff = "M23 10L22.96 10.29L20.9 17.7L12.2 9H15L12 4.74L10.32 7.12L8.89 5.69L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M22.11 21.46L20.84 22.73L19.03 20.92C18.86 20.97 18.68 21 18.5 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L6.8 8.69L1.11 3L2.39 1.73L22.11 21.46M13.85 15.74L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.11 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74Z"; +var mdiBasketOffOutline = "M2.39 1.73L1.11 3L6.92 8.81L6.79 9H2C1.45 9 1 9.45 1 10C1 10.09 1 10.18 1.04 10.27L3.58 19.54C3.81 20.38 4.58 21 5.5 21H18.5C18.68 21 18.86 20.96 19.03 20.92L20.84 22.73L22.11 21.46L2.39 1.73M5.5 19L3.31 11H9.11L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.1 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74L17.11 19H5.5M23 10L22.97 10.27L20.93 17.73L19.3 16.1L20.7 11H14.2L12.2 9H14.8L12 4.8L10.4 7.2L8.96 5.76L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10Z"; +var mdiBasketOutline = "M22 9H17.21L12.83 2.44C12.64 2.16 12.32 2 12 2S11.36 2.16 11.17 2.45L6.79 9H2C1.45 9 1 9.45 1 10C1 10.09 1 10.18 1.04 10.27L3.58 19.54C3.81 20.38 4.58 21 5.5 21H18.5C19.42 21 20.19 20.38 20.43 19.54L22.97 10.27L23 10C23 9.45 22.55 9 22 9M12 4.8L14.8 9H9.2L12 4.8M18.5 19L5.5 19L3.31 11H20.7L18.5 19M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13Z"; +var mdiBasketPlus = "M20 15V18H23V20H20V23H18V20H15V18H18V15H20M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z"; +var mdiBasketPlusOutline = "M20 15V18H23V20H20V23H18V20H15V18H18V15H20M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z"; +var mdiBasketRemove = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z"; +var mdiBasketRemoveOutline = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z"; +var mdiBasketUnfill = "M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z"; +var mdiBasketball = "M2.34,14.63C2.94,14.41 3.56,14.3 4.22,14.3C5.56,14.3 6.73,14.72 7.73,15.56L4.59,18.7C3.53,17.5 2.78,16.13 2.34,14.63M15.56,9.8C17.53,11.27 19.66,11.63 21.94,10.88C21.97,11.09 22,11.47 22,12C22,13.03 21.75,14.18 21.28,15.45C20.81,16.71 20.23,17.73 19.55,18.5L13.22,12.19L15.56,9.8M8.77,16.64C9.83,18.17 10.05,19.84 9.42,21.66C8,21.25 6.73,20.61 5.67,19.73L8.77,16.64M12.19,13.22L18.5,19.55C16.33,21.45 13.78,22.25 10.88,21.94C11.09,21.28 11.2,20.56 11.2,19.78C11.2,19.16 11.06,18.43 10.78,17.6C10.5,16.77 10.17,16.09 9.8,15.56L12.19,13.22M8.81,14.5C7.88,13.67 6.8,13.15 5.58,12.91C4.36,12.68 3.19,12.75 2.06,13.13C2.03,12.91 2,12.53 2,12C2,10.97 2.25,9.82 2.72,8.55C3.19,7.29 3.77,6.27 4.45,5.5L11.11,12.19L8.81,14.5M15.56,7.73C14.22,6.08 13.91,4.28 14.63,2.34C15.25,2.5 15.96,2.8 16.76,3.26C17.55,3.71 18.2,4.16 18.7,4.59L15.56,7.73M21.66,9.38C21.06,9.59 20.44,9.7 19.78,9.7C18.69,9.7 17.64,9.38 16.64,8.72L19.73,5.67C20.61,6.77 21.25,8 21.66,9.38M12.19,11.11L5.5,4.45C7.67,2.55 10.22,1.75 13.13,2.06C12.91,2.72 12.8,3.44 12.8,4.22C12.8,4.94 12.96,5.75 13.29,6.66C13.62,7.56 14,8.28 14.5,8.81L12.19,11.11Z"; +var mdiBasketballHoop = "M21,2H3A2,2 0 0,0 1,4V16A2,2 0 0,0 3,18H5V14H19V18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M17,12H15V9H9V12H7V9A2,2 0 0,1 9,7H15A2,2 0 0,1 17,9V12M7,16V19.5L8,23L10,21L12,23L14,21L16,23L17,19.5V16H7Z"; +var mdiBasketballHoopOutline = "M21,2H3A2,2 0 0,0 1,4V16A2,2 0 0,0 3,18H6.57L8,23L10,21L12,23L14,21L16,23L17.43,18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M21,16H18V14H17V9A2,2 0 0,0 15,7H9A2,2 0 0,0 7,9V14H6V16H3V4H21V16M9,14V9H15V14H9Z"; +var mdiBat = "M0.75,8C0.75,8 5,7 8,9C8,9 8.5,12.75 10.5,12.75V11C10.5,11 11,12 12,12C13,12 13.5,11 13.5,11V12.75C15.5,12.75 16,9 16,9C19,7 23.25,8 23.25,8C21.25,9 21,12.5 21,12.5C17,12.5 17,15.75 17,15.75C12,14.75 12,18.5 12,18.5C12,18.5 12,14.75 7,15.75C7,15.75 7,12.5 3,12.5C3,12.5 2.75,9 0.75,8Z"; +var mdiBattery = "M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery10 = "M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery10Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V18H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery20 = "M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery20Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V17H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery30 = "M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery30Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V15H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery40 = "M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery40Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V14H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery50 = "M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery50Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V13H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery60 = "M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery60Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V12H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery70 = "M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery70Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V10H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery80 = "M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery80Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V9H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBattery90 = "M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBattery90Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V8H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBatteryAlert = "M13 14H11V8H13M13 18H11V16H13M16.7 4H15V2H9V4H7.3C6.6 4 6 4.6 6 5.3V20.6C6 21.4 6.6 22 7.3 22H16.6C17.3 22 17.9 21.4 17.9 20.7V5.3C18 4.6 17.4 4 16.7 4Z"; +var mdiBatteryAlertBluetooth = "M5 2V4H3.3C2.6 4 2 4.6 2 5.3V20.6C2 21.4 2.6 22 3.3 22H12.6C13.3 22 13.9 21.4 13.9 20.7V5.3C14 4.6 13.4 4 12.7 4H11V2H5M19 8V11.8L16.7 9.5L16 10.2L18.8 13L16 15.8L16.7 16.5L19 14.2V18H19.5L22.4 15.1L20.2 13L22.3 10.9L19.5 8H19M7 8H9V14H7M20 9.9L20.9 10.8L20 11.8V9.9M20 14.2L20.9 15.1L20 16.1V14.2M7 16H9V18H7V16Z"; +var mdiBatteryAlertVariant = "M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 13H19V7H21V13M21 17H19V15H21V17Z"; +var mdiBatteryAlertVariantOutline = "M14 20H6V6H14M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 7H19V13H21V8M21 15H19V17H21V15Z"; +var mdiBatteryBluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; +var mdiBatteryBluetoothVariant = "M9,2V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4H15V2H9M11.83,8H12.33L15.18,10.85L13.04,13L15.17,15.14L12.33,18H11.83V14.21L9.54,16.5L8.83,15.79L11.62,13L8.83,10.21L9.54,9.5L11.83,11.79V8M12.83,9.91V11.79L13.77,10.85L12.83,9.91M12.83,14.21V16.08L13.77,15.14L12.83,14.21Z"; +var mdiBatteryCharging = "M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15"; +var mdiBatteryCharging10 = "M23.05,11H20.05V4L15.05,14H18.05V22M12,18H4L4.05,6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z"; +var mdiBatteryCharging100 = "M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; +var mdiBatteryCharging20 = "M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z"; +var mdiBatteryCharging30 = "M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z"; +var mdiBatteryCharging40 = "M13 4H11V2H5V4H3C2.4 4 2 4.4 2 5V21C2 21.6 2.4 22 3 22H13C13.6 22 14 21.6 14 21V5C14 4.4 13.6 4 13 4M12 14.5H4V6H12V14.5M23 11H20V4L15 14H18V22"; +var mdiBatteryCharging50 = "M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; +var mdiBatteryCharging60 = "M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z"; +var mdiBatteryCharging70 = "M12,10H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z"; +var mdiBatteryCharging80 = "M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; +var mdiBatteryCharging90 = "M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; +var mdiBatteryChargingHigh = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M11 7H5V10H11V7M11 11.5H5V14.5H11V11.5M23 10H20V3L15 13H18V21"; +var mdiBatteryChargingLow = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M23 10H20V3L15 13H18V21"; +var mdiBatteryChargingMedium = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M11 11.5H5V14.5H11V11.5M23 10H20V3L15 13H18V21"; +var mdiBatteryChargingOutline = "M23.05,11H20.05V4L15.05,14H18.05V22M12,20H4L4.05,6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z"; +var mdiBatteryChargingWireless = "M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76Z"; +var mdiBatteryChargingWireless10 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,18.5H4V6H12V18.5Z"; +var mdiBatteryChargingWireless20 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,17H4V6H12V17Z"; +var mdiBatteryChargingWireless30 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,16H4V6H12V16Z"; +var mdiBatteryChargingWireless40 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,14.5H4V6H12V14.5Z"; +var mdiBatteryChargingWireless50 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,13H4V6H12V13Z"; +var mdiBatteryChargingWireless60 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,11.6H4V6H12V11.6Z"; +var mdiBatteryChargingWireless70 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,10H4V6H12V10Z"; +var mdiBatteryChargingWireless80 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,9H4V6H12V9Z"; +var mdiBatteryChargingWireless90 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,7.5H4V6H12V7.5Z"; +var mdiBatteryChargingWirelessAlert = "M13 4H11V2H5V4H3C2.4 4 2 4.4 2 5V21C2 21.6 2.4 22 3 22H13C13.6 22 14 21.6 14 21V5C14 4.4 13.6 4 13 4M9 18H7V16H9V18M9 14H7V8H9V14M20.1 4.9L18.7 6.3C21.8 9.4 21.8 14.5 18.7 17.6L20.1 19C24 15.2 24 8.8 20.1 4.9M17.2 7.8L15.8 9.2C17.4 10.8 17.4 13.3 15.8 14.9L17.2 16.3C19.6 13.9 19.6 10.1 17.2 7.8Z"; +var mdiBatteryChargingWirelessOutline = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,20H4V6H12V20Z"; +var mdiBatteryHeart = "M12.67 4H11V2H5V4H3.33A1.34 1.34 0 0 0 2 5.33V20.67A1.34 1.34 0 0 0 3.33 22H12.67A1.34 1.34 0 0 0 14 20.67V5.33A1.34 1.34 0 0 0 12.67 4M19 16.17L18.42 15.64C16.36 13.77 15 12.54 15 11A2.18 2.18 0 0 1 17.2 8.8A2.4 2.4 0 0 1 19 9.63A2.4 2.4 0 0 1 20.8 8.8A2.18 2.18 0 0 1 23 11C23 12.5 21.64 13.74 19.58 15.61Z"; +var mdiBatteryHeartOutline = "M19 16.2L18.4 15.7C16.4 13.8 15 12.5 15 11C15 9.8 16 8.8 17.2 8.8C17.9 8.8 18.5 9.1 19 9.6C19.5 9.1 20.1 8.8 20.8 8.8C22 8.8 23 9.8 23 11C23 12.5 21.6 13.7 19.6 15.6L19 16.2M12.7 4H11V2H5V4H3.3C2.6 4 2 4.6 2 5.3V20.6C2 21.4 2.6 22 3.3 22H12.6C13.3 22 13.9 21.4 13.9 20.7V5.3C14 4.6 13.4 4 12.7 4M12 20H4V6H12V20Z"; +var mdiBatteryHeartVariant = "M16.67 4H15V2H9V4H7.33A1.34 1.34 0 0 0 6 5.33V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V5.33A1.34 1.34 0 0 0 16.67 4M12.58 15.64L12 16.17L11.42 15.64C9.36 13.77 8 12.54 8 11A2.18 2.18 0 0 1 10.2 8.8A2.4 2.4 0 0 1 12 9.63A2.4 2.4 0 0 1 13.8 8.8A2.18 2.18 0 0 1 16 11C16 12.54 14.64 13.77 12.58 15.64Z"; +var mdiBatteryHigh = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16M15 7H9V10H15V7M15 11.5H9V14.5H15V11.5Z"; +var mdiBatteryLow = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16"; +var mdiBatteryMedium = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16M15 11.5H9V14.5H15V11.5Z"; +var mdiBatteryMinus = "M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12"; +var mdiBatteryNegative = "M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z"; +var mdiBatteryOff = "M18 14.8L7.21 4H9V2H15V4H16.67A1.34 1.34 0 0 1 18 5.33M18 17.35L3.38 2.73L2.11 4L6 7.89V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V19.89L20.84 22.73L22.11 21.46Z"; +var mdiBatteryOffOutline = "M18 17.35L3.38 2.73L2.11 4L6 7.89V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V19.89L20.84 22.73L22.11 21.46M16 20H8V9.89L16 17.89M16 6V12.8L18 14.8V5.33A1.34 1.34 0 0 0 16.67 4H15V2H9V4H7.21L9.21 6Z"; +var mdiBatteryOutline = "M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; +var mdiBatteryPlus = "M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z"; +var mdiBatteryPositive = "M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z"; +var mdiBatteryUnknown = "M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z"; +var mdiBatteryUnknownBluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.66C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.66V5.33C14,4.59 13.4,4 12.67,4H11V2H5M8,6A4,4 0 0,1 12,10C12,10.88 11.64,11.68 11.07,12.25L10.17,13.17C9.63,13.71 9.25,14.18 9.09,15H7.05C7.16,14.1 7.56,13.28 8.17,12.67L9.41,11.41C9.78,11.05 10,10.55 10,10C10,8.89 9.1,8 8,8A2,2 0 0,0 6,10H4A4,4 0 0,1 8,6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21M7,17H9V19H7V17Z"; +var mdiBattlenet = "M19.92,10.76C19.92,10.76 22.5,12.24 22.5,13.89C22.5,15.5 19.5,16.06 16.18,15.9C16.18,15.9 14.77,17.87 13.42,18.7C14.88,21.44 16,22.5 15.97,22.5C15.97,22.5 15.23,22.69 13,19.04C11.66,19.89 10.17,20.23 9.56,19.7C8.94,19.17 9.42,18.28 9.68,17.85C9.41,18 8,18.83 6.75,18.83C5.26,18.83 5.05,17.72 5.05,17.15C5.05,15 7.12,12 7.12,12C7.12,12 6.16,9.88 6.05,8.22C4.17,8.06 2,8.39 1.53,8.54C1.4,8.54 1.84,8.22 2,8.18C2.15,8.13 3.91,7.67 6,7.67C6,5.93 6.35,4.33 7.41,4.33C8.13,4.33 8.71,5.45 8.71,5.45C8.71,5.45 8.7,1.5 10.74,1.5C12.8,1.5 15,6.11 15,6.11C15,6.11 17.22,6.32 18.85,7.09C19.5,5.73 20.09,5.11 20.81,3C21,3.7 20.2,5.5 19.35,7.3V7.3H19.35C19.35,7.3 21.65,8.5 21.65,9.83C21.65,10.84 19.92,10.76 19.92,10.76M10.68,18.58C11.36,18.69 12.41,18.1 12.4,18.1L11.58,16.57L10.4,17.4C10.39,17.41 9.64,18.38 10.68,18.58M20.15,9.76C20.15,9.1 18.95,8.35 18.81,8.27L17.89,9.75L19.17,10.37C19.59,10.34 20.15,10.35 20.15,9.76M8,5.63C7.7,5.63 7.09,6.07 7.09,7.64L8.83,7.7L8.72,6.3C8.6,6 8.3,5.63 8,5.63M10.18,15.78C8.92,15.13 8.16,14.06 7.54,12.9C7.54,12.9 5.96,15.55 6.97,16.22C8,16.89 9.64,16.16 10.18,15.78M12.97,17.76C14.11,16.89 17.19,14.73 17.45,11.08C14.57,9.44 10.62,8.71 10.62,8.71C10.62,8.71 10.61,8.21 10.7,7.86C11.64,7.97 14.59,8.47 17.03,9.43C16.35,8.28 15.84,7.85 15.37,7.5C16.53,7.76 17.36,9.26 17.36,9.26L18.28,7.96C18.28,7.96 13.91,5.61 10.19,7.42C10.11,10.3 11.59,14.56 11.59,14.56L10.82,14.89C10.3,13.84 9.63,12.09 9,8.67C8.7,9.08 8.17,9.55 8.16,11.09C7.7,9.8 8.66,8.43 8.67,8.42L7.07,8.26C7.17,9.92 8.05,14.2 10.68,15.53C13,14.21 15.5,11.54 16.13,10.77L16.82,11.28L12.35,15.97C13.59,16 14.32,15.72 14.82,15.5C14.1,16.25 12.86,16.32 12.27,16.32C12.28,16.34 12.57,17.07 12.97,17.76M14.03,6.05C14,5.97 12.66,3.69 11.47,3.86C10.69,4.11 10.24,5.43 10.23,6.87C10.76,6.56 12,6 14.03,6.05M16.71,15.07C16.71,15.07 20,15 19.9,13.76C19.9,12.56 17.92,11.33 17.92,11.35C17.93,13.47 16.71,15.07 16.71,15.07Z"; +var mdiBeach = "M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z"; +var mdiBeaker = "M3,3V5A2,2 0 0,1 5,7V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V7A2,2 0 0,1 21,5V3H3M7,9H10V10H7V9M7,11H10V12H7V11M10,16H7V15H10V16M12,14H7V13H12V14M12,8H7V7H12V8Z"; +var mdiBeakerAlert = "M3 3H21V5C19.9 5 19 5.9 19 7V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12M21 13V7H23V13H21M21 17V15H23V17H21Z"; +var mdiBeakerAlertOutline = "M3 3H21V5C19.9 5 19 5.9 19 7V19C19 20.11 18.11 21 17 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3M7 5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7M21 13V7H23V13H21M21 17V15H23V17H21Z"; +var mdiBeakerCheck = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; +var mdiBeakerCheckOutline = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; +var mdiBeakerMinus = "M23 17V19H15V17H23M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; +var mdiBeakerMinusOutline = "M23 17V19H15V17M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; +var mdiBeakerOutline = "M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z"; +var mdiBeakerPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; +var mdiBeakerPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; +var mdiBeakerQuestion = "M0 3H18V5C16.9 5 16 5.9 16 7V19C16 20.1 15.1 21 14 21H4C2.9 21 2 20.1 2 19V7C2 5.9 1.1 5 0 5V3M4 9V10H7V9H4M4 11V12H7V11H4M7 16V15H4V16H7M9 14V13H4V14H9M9 8V7H4V8H9M21.5 15.5V17H20V15.5H21.5M19.5 10.5H18V10C18 8.34 19.34 7 21 7C22.66 7 24 8.34 24 10C24 10.97 23.5 11.88 22.71 12.41L22.41 12.6C21.84 13 21.5 13.62 21.5 14.3V14.5H20V14.3C20 13.11 20.6 12 21.59 11.35L21.88 11.16C22.27 10.9 22.5 10.47 22.5 10C22.5 9.18 21.83 8.5 21 8.5C20.17 8.5 19.5 9.17 19.5 10V10.5Z"; +var mdiBeakerQuestionOutline = "M0 3H18V5C16.9 5 16 5.9 16 7V19C16 20.11 15.11 21 14 21H4C2.9 21 2 20.11 2 19V7C2 5.9 1.11 5 0 5V3M4 5V7H9V8H4V9H7V10H4V11H7V12H4V13H9V14H4V15H7V16H4V19H14V5H4M21.5 15.5V17H20V15.5H21.5M19.5 10.5H18V10C18 8.34 19.34 7 21 7C22.66 7 24 8.34 24 10C24 10.97 23.5 11.88 22.71 12.41L22.41 12.6C21.84 13 21.5 13.62 21.5 14.3V14.5H20V14.3C20 13.11 20.6 12 21.59 11.35L21.88 11.16C22.27 10.9 22.5 10.47 22.5 10C22.5 9.18 21.83 8.5 21 8.5C20.17 8.5 19.5 9.17 19.5 10V10.5Z"; +var mdiBeakerRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; +var mdiBeakerRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; +var mdiBed = "M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z"; +var mdiBedDouble = "M18 10V7A2 2 0 0 0 16 5H8A2 2 0 0 0 6 7V10A2 2 0 0 0 4 12V17H5.33L6 19H7L7.67 17H16.33L17 19H18L18.67 17H20V12A2 2 0 0 0 18 10M11 10H8V7H11M16 10H13V7H16Z"; +var mdiBedDoubleOutline = "M8 5C7.5 5 7 5.21 6.61 5.6S6 6.45 6 7V10C5.47 10 5 10.19 4.59 10.59S4 11.47 4 12V17H5.34L6 19H7L7.69 17H16.36L17 19H18L18.66 17H20V12C20 11.47 19.81 11 19.41 10.59S18.53 10 18 10V7C18 6.45 17.8 6 17.39 5.6S16.5 5 16 5M8 7H11V10H8M13 7H16V10H13M6 12H18V15H6Z"; +var mdiBedEmpty = "M19,7H5V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7"; +var mdiBedKing = "M6 5C5.47 5 5 5.21 4.59 5.6S4 6.45 4 7V10C3.45 10 3 10.19 2.6 10.59S2 11.47 2 12V17H3.33L4 19H5L5.67 17H18.33L19 19H20L20.67 17H22V12C22 11.47 21.79 11 21.4 10.59C21 10.19 20.55 10 20 10V7C20 6.45 19.81 6 19.41 5.6S18.53 5 18 5M6 7H11V10H6M13 7H18V10H13Z"; +var mdiBedKingOutline = "M20 10V7A2 2 0 0 0 18 5H6A2 2 0 0 0 4 7V10A2 2 0 0 0 2 12V17H3.33L4 19H5L5.67 17H18.33L19 19H20L20.67 17H22V12A2 2 0 0 0 20 10M13 7H18V10H13M6 7H11V10H6M20 15H4V12H20Z"; +var mdiBedOutline = "M7 14C8.66 14 10 12.66 10 11C10 9.34 8.66 8 7 8C5.34 8 4 9.34 4 11C4 12.66 5.34 14 7 14M7 10C7.55 10 8 10.45 8 11C8 11.55 7.55 12 7 12C6.45 12 6 11.55 6 11C6 10.45 6.45 10 7 10M19 7H11V15H3V5H1V20H3V17H21V20H23V11C23 8.79 21.21 7 19 7M21 15H13V9H19C20.1 9 21 9.9 21 11Z"; +var mdiBedQueen = "M19 10V7A2 2 0 0 0 17 5H7A2 2 0 0 0 5 7V10A2 2 0 0 0 3 12V17H4.33L5 19H6L6.67 17H17.33L18 19H19L19.67 17H21V12A2 2 0 0 0 19 10M17 10H7V7H17Z"; +var mdiBedQueenOutline = "M19 10V7A2 2 0 0 0 17 5H7A2 2 0 0 0 5 7V10A2 2 0 0 0 3 12V17H4.33L5 19H6L6.67 17H17.33L18 19H19L19.67 17H21V12A2 2 0 0 0 19 10M7 7H17V10H7M19 15H5V12H19Z"; +var mdiBedSingle = "M17 10V7C17 5.9 16.11 5 15 5H9C7.9 5 7 5.9 7 7V10C5.9 10 4.89 10.9 5 12V17H6.33L7 19H8L8.67 17H15.33L16 19H17L17.67 17H19V12C19 10.9 18.11 10 17 10M15 10H9V7H15Z"; +var mdiBedSingleOutline = "M17 10V7C17 5.9 16.11 5 15 5H9C7.9 5 7 5.9 7 7V10C5.9 10 5 10.9 5 12V17H6.33L7 19H8L8.67 17H15.33L16 19H17L17.67 17H19V12C19 10.9 18.11 10 17 10M9 7H15V10H9M17 15H7V12H17Z"; +var mdiBee = "M17.4 9C17 7.8 16.2 7 15 6.5V5H14V6.4H13.6C12.5 6.4 11.6 6.8 10.8 7.6L10.4 8L9 7.5C8.7 7.4 8.4 7.3 8 7.3C7.4 7.3 6.8 7.5 6.3 7.9C5.7 8.3 5.4 8.8 5.2 9.3C5 10 5 10.6 5.2 11.3C5.5 12 5.8 12.5 6.3 12.8C5.9 14.3 6.2 15.6 7.3 16.7C8.1 17.5 9 17.9 10.1 17.9C10.6 17.9 10.9 17.9 11.2 17.8C11.8 18.6 12.6 19.1 13.6 19.1C13.9 19.1 14.3 19.1 14.6 19C15.2 18.8 15.6 18.4 16 17.9C16.4 17.3 16.6 16.8 16.6 16.2C16.6 15.8 16.6 15.5 16.5 15.2L16 13.6L16.6 13.2C17.4 12.4 17.8 11.3 17.7 10.1H19V9H17.4M7.7 11.3C7.1 11 6.9 10.6 7.1 10C7.3 9.4 7.7 9.2 8.3 9.4L11.5 10.6C9.9 11.4 8.7 11.6 7.7 11.3M14 16.9C13.4 17.1 13 16.9 12.7 16.3C12.4 15.3 12.6 14.1 13.4 12.5L14.6 15.6C14.8 16.3 14.6 16.7 14 16.9M15.2 11.6L14.6 10V9.9L14.3 9.6H14.2L12.6 9C13 8.7 13.4 8.5 13.9 8.5C14.4 8.5 14.9 8.7 15.3 9.1C15.7 9.5 15.9 9.9 15.9 10.4C15.7 10.7 15.5 11.2 15.2 11.6Z"; +var mdiBeeFlower = "M11.6 13V12.9L11.3 12.6H11.2L9.6 12C10 11.7 10.4 11.5 10.9 11.5C11.4 11.5 11.9 11.7 12.3 12.1C12.7 12.5 12.9 12.9 12.9 13.4C12.9 13.9 12.8 14.3 12.4 14.7L11.6 13M9.7 19.3C9.4 18.3 9.6 17.1 10.4 15.5L11.6 18.6C11.8 19.2 11.6 19.6 11 19.9C10.4 20.2 10 20 9.7 19.3M4.1 13.1C4.3 12.5 4.7 12.3 5.3 12.5L8.5 13.7C6.9 14.5 5.7 14.7 4.7 14.4C4.1 14.1 3.9 13.7 4.1 13.1M12 8.1H11V9.5H10.6C9.5 9.5 8.6 9.9 7.8 10.7L7.4 11.3L6 10.5C5.7 10.4 5.4 10.4 5 10.4C4.4 10.4 3.8 10.6 3.3 11S2.4 11.8 2.2 12.4C2 13.1 2 13.7 2.2 14.4C2.5 15.1 2.8 15.6 3.3 15.9C2.9 17.4 3.2 18.7 4.3 19.8C5.1 20.6 6 21 7.1 21C7.6 21 7.9 21 8.2 20.9C8.8 21.7 9.6 22.2 10.6 22.2C10.9 22.2 11.3 22.2 11.6 22.1C12.2 21.9 12.6 21.5 13 21C13.4 20.4 13.6 19.9 13.6 19.3C13.6 18.9 13.6 18.6 13.5 18.3L12.9 16.9L13.5 16.5C14.3 15.7 14.7 14.6 14.6 13.4H16V12.4H14.4C14 11.2 13.2 10.4 12 10V8.1M17.3 6.8C17.1 6.6 17 6.3 17 6.1C17 5.8 17.1 5.6 17.3 5.4C17.5 5.2 17.7 5.1 18 5.1S18.5 5.2 18.7 5.4C18.9 5.5 19 5.8 19 6.1C19 6.4 18.9 6.6 18.7 6.8C18.5 7 18.3 7 18 7S17.5 7 17.3 6.8M20.7 4.1H19.6L19.3 3.2C19.1 2.5 18.7 2.2 18 2.2C17.3 2.2 16.8 2.5 16.7 3.2L16.4 4.1H15.3C14.7 4.1 14.3 4.4 14 5C13.8 5.6 14 6.1 14.6 6.5L15.5 7L15.1 8.2C14.9 8.6 15 9 15.2 9.4C15.5 9.8 15.8 10 16.3 10C16.7 10 17 9.9 17.2 9.7L18 9.1L18.8 9.8C19 9.9 19.3 10 19.7 10C20.2 10 20.5 9.8 20.8 9.4C21 9 21.1 8.6 20.9 8.2L20.5 7L21.3 6.5C21.9 6.1 22.1 5.6 21.9 5C21.7 4.3 21.3 4.1 20.7 4.1Z"; +var mdiBeehiveOffOutline = "M1.1 3L4.7 6.5C3.7 7.2 3 8.2 3 9.5C3 10.1 3.2 10.7 3.5 11.2C2 11.6 1 12.9 1 14.5C1 15.8 1.7 16.8 2.7 17.5C2.2 18 2 18.7 2 19.5C2 21.4 3.6 23 5.5 23H18.5C19.3 23 20 22.7 20.6 22.3L21.3 23L22.6 21.7L2.4 1.7L1.1 3M9.2 11H6.5C5.7 11 5 10.3 5 9.5C5 8.8 5.5 8.2 6.2 8L9.2 11M9 21H5.5C4.7 21 4 20.3 4 19.5S4.7 18 5.5 18H9V21M9.2 16H4.5C3.7 16 3 15.3 3 14.5S3.7 13 4.5 13H11.2L12.2 14H12C10.7 14 9.6 14.8 9.2 16M18.5 21H15V18H16.2L19.1 20.9C18.9 21 18.7 21 18.5 21M7.1 3.9L5.7 2.5C6.3 1.6 7.3 1 8.5 1H15.5C17.4 1 19 2.6 19 4.5C19 5.1 18.8 5.7 18.5 6.2C20 6.6 21 7.9 21 9.5C21 10.1 20.8 10.7 20.5 11.2C21.9 11.7 23 13 23 14.5C23 15.8 22.3 16.8 21.3 17.5C21.6 17.9 21.8 18.3 21.9 18.7L19.2 16H19.5C20.3 16 21 15.3 21 14.5S20.3 13 19.5 13H16.2L14.2 11H17.5C18.3 11 19 10.3 19 9.5S18.3 8 17.5 8H11.2L9.2 6H15.5C16.3 6 17 5.3 17 4.5S16.3 3 15.5 3H8.5C7.9 3 7.3 3.4 7.1 3.9Z"; +var mdiBeehiveOutline = "M23 14.5C23 12.94 21.97 11.63 20.55 11.18C20.83 10.68 21 10.11 21 9.5C21 7.94 19.97 6.63 18.55 6.18C18.83 5.68 19 5.11 19 4.5C19 2.57 17.43 1 15.5 1H8.5C6.57 1 5 2.57 5 4.5C5 5.11 5.17 5.68 5.45 6.18C4.04 6.63 3 7.94 3 9.5C3 10.11 3.17 10.68 3.45 11.18C2.04 11.63 1 12.94 1 14.5C1 15.76 1.67 16.84 2.67 17.46C2.25 18.03 2 18.74 2 19.5C2 21.43 3.57 23 5.5 23H18.5C20.43 23 22 21.43 22 19.5C22 18.74 21.75 18.03 21.33 17.46C22.33 16.84 23 15.76 23 14.5M8.5 3H15.5C16.33 3 17 3.67 17 4.5S16.33 6 15.5 6H8.5C7.67 6 7 5.33 7 4.5S7.67 3 8.5 3M6.5 8H17.5C18.33 8 19 8.67 19 9.5S18.33 11 17.5 11H6.5C5.67 11 5 10.33 5 9.5S5.67 8 6.5 8M4 19.5C4 18.67 4.67 18 5.5 18H9V21H5.5C4.67 21 4 20.33 4 19.5M18.5 21H15V18H18.5C19.33 18 20 18.67 20 19.5S19.33 21 18.5 21M19.5 16H14.82C14.4 14.84 13.3 14 12 14S9.6 14.84 9.18 16H4.5C3.67 16 3 15.33 3 14.5S3.67 13 4.5 13H19.5C20.33 13 21 13.67 21 14.5S20.33 16 19.5 16Z"; +var mdiBeekeeper = "M19 5H16C16 3.34 14.21 2 12 2C9.79 2 8 3.34 8 5H5C4.45 5 4 5.45 4 6S4.45 7 5 7V14C5 15.11 5.9 16 7 16H17C18.11 16 19 15.11 19 14V7C19.55 7 20 6.55 20 6S19.55 5 19 5M17 14H7V7H17V14M15.86 8C15.94 8.32 16 8.65 16 9C16 11.21 14.21 13 12 13S8 11.21 8 9C8 8.65 8.06 8.32 8.14 8H10.28C10.11 8.3 10 8.63 10 9C10 10.1 10.9 11 12 11S14 10.1 14 9C14 8.63 13.89 8.3 13.72 8H15.86M20 19V22H4V19C4 18.22 4.47 17.55 5.18 17H12C9.28 17 6.19 18.29 6 19V20H18V19C17.81 18.29 14.72 17 12 17H18.82C19.53 17.55 20 18.22 20 19Z"; +var mdiBeer = "M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z"; +var mdiBeerOutline = "M4 2L6 22H17L19 2H4M6.2 4H16.8L16.5 7.23C13.18 8.5 11.85 7.67 11.38 7.31C11.13 7.12 10.77 6.69 10.11 6.39C9.45 6.08 8.55 6 7.5 6.32C7.09 6.43 6.77 6.61 6.5 6.79L6.2 4M8.86 8.11C9.05 8.11 9.16 8.15 9.27 8.2C9.5 8.3 9.71 8.55 10.17 8.9C11.03 9.56 13.03 10.36 16.26 9.41L15.2 20H7.8L6.71 9.06C6.76 9 6.91 8.89 7.17 8.71C7.5 8.5 7.91 8.28 8 8.25L8 8.25H8.03C8.41 8.14 8.67 8.1 8.86 8.11Z"; +var mdiBell = "M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21"; +var mdiBellAlert = "M23 7V13H21V7M21 15H23V17H21M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H21V19L19 17V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M10 21A2 2 0 0 0 12 23A2 2 0 0 0 14 21Z"; +var mdiBellAlertOutline = "M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H21V19L19 17V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M12 6A5 5 0 0 1 17 11V18H7V11A5 5 0 0 1 12 6M21 7V13H23V7H21M21 15V17H23V15H21M10 21A2 2 0 0 0 12 23A2 2 0 0 0 14 21H10Z"; +var mdiBellCancel = "M17.5 13A4.5 4.5 0 0 0 13 17.5A4.5 4.5 0 0 0 17.5 22A4.5 4.5 0 0 0 22 17.5A4.5 4.5 0 0 0 17.5 13M17.5 14.5A3 3 0 0 1 20.5 17.5A3 3 0 0 1 20.08 19L16 14.92A3 3 0 0 1 17.5 14.5M14.92 16L19 20.08A3 3 0 0 1 17.5 20.5A3 3 0 0 1 14.5 17.5A3 3 0 0 1 14.92 16M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H11.5A6.5 6.5 0 0 1 11 17.5A6.5 6.5 0 0 1 17.5 11A6.5 6.5 0 0 1 19 11.18V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.5 23 12.97 22.81 13.33 22.5A6.5 6.5 0 0 1 12.03 21Z"; +var mdiBellCancelOutline = "M17.5 13A4.5 4.5 0 0 0 13 17.5A4.5 4.5 0 0 0 17.5 22A4.5 4.5 0 0 0 22 17.5A4.5 4.5 0 0 0 17.5 13M17.5 14.5A3 3 0 0 1 20.5 17.5A3 3 0 0 1 20.08 19L16 14.92A3 3 0 0 1 17.5 14.5M14.92 16L19 20.08A3 3 0 0 1 17.5 20.5A3 3 0 0 1 14.5 17.5A3 3 0 0 1 14.92 16M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H11.5A6.5 6.5 0 0 1 11.03 18H7V11A5 5 0 0 1 12 6A5 5 0 0 1 17 11V11A6.5 6.5 0 0 1 17.5 11A6.5 6.5 0 0 1 19 11.18V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.5 23 12.97 22.81 13.33 22.5A6.5 6.5 0 0 1 12.03 21Z"; +var mdiBellCheck = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 20V19L5 17V11C5 7.9 7.03 5.18 10 4.29V4C10 2.9 10.9 2 12 2C13.11 2 14 2.9 14 4V4.29C16.97 5.18 19 7.9 19 11V12.08L18 12C14.69 12 12 14.69 12 18C12 18.7 12.12 19.37 12.34 20H3M12 23C10.9 23 10 22.11 10 21H12.8C13.04 21.41 13.33 21.79 13.65 22.13C13.29 22.66 12.69 23 12 23Z"; +var mdiBellCheckOutline = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M10 21H12.8C13.04 21.41 13.33 21.79 13.65 22.13C13.29 22.66 12.69 23 12 23C10.9 23 10 22.11 10 21M3 20V19L5 17V11C5 7.9 7.03 5.18 10 4.29V4C10 2.9 10.9 2 12 2C13.11 2 14 2.9 14 4V4.29C16.97 5.18 19 7.9 19 11V12.08L18 12L17 12.08V11C17 8.24 14.76 6 12 6C9.24 6 7 8.24 7 11V18H12C12 18.7 12.12 19.37 12.34 20H3Z"; +var mdiBellCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17,16V15L16,14V11.39C16,10.3 15.73,9.34 15.21,8.53C14.7,7.72 13.96,7.21 13,7V6.5A1,1 0 0,0 12,5.5A1,1 0 0,0 11,6.5V7C10.04,7.21 9.3,7.72 8.79,8.53C8.27,9.34 8,10.3 8,11.39V14L7,15V16H17M13.5,17H10.5A1.5,1.5 0 0,0 12,18.5A1.5,1.5 0 0,0 13.5,17Z"; +var mdiBellCircleOutline = "M17,16H7V15L8,14V11.39C8,10.3 8.27,9.34 8.79,8.53C9.3,7.72 10.04,7.21 11,7V6.5A1,1 0 0,1 12,5.5A1,1 0 0,1 13,6.5V7C13.96,7.21 14.7,7.72 15.21,8.53C15.73,9.34 16,10.3 16,11.39V14L17,15V16M13.5,17A1.5,1.5 0 0,1 12,18.5A1.5,1.5 0 0,1 10.5,17H13.5M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiBellMinus = "M22 19V17H14V19H22M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18C12 14.69 14.69 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21H10Z"; +var mdiBellMinusOutline = "M12 2C10.9 2 10 2.9 10 4V4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11C7 8.24 9.24 6 12 6S17 8.24 17 11V12.09C17.33 12.03 17.67 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29V4C14 2.9 13.11 2 12 2M14 17V19H22V17M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21H10Z"; +var mdiBellOff = "M20.84,22.73L18.11,20H3V19L5,17V11C5,9.86 5.29,8.73 5.83,7.72L1.11,3L2.39,1.73L22.11,21.46L20.84,22.73M19,15.8V11C19,7.9 16.97,5.17 14,4.29C14,4.19 14,4.1 14,4A2,2 0 0,0 12,2A2,2 0 0,0 10,4C10,4.1 10,4.19 10,4.29C9.39,4.47 8.8,4.74 8.26,5.09L19,15.8M12,23A2,2 0 0,0 14,21H10A2,2 0 0,0 12,23Z"; +var mdiBellOffOutline = "M22.11,21.46L2.39,1.73L1.11,3L5.83,7.72C5.29,8.73 5,9.86 5,11V17L3,19V20H18.11L20.84,22.73L22.11,21.46M7,18V11C7,10.39 7.11,9.79 7.34,9.23L16.11,18H7M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M8.29,5.09C8.82,4.75 9.4,4.5 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V15.8L17,13.8V11A5,5 0 0,0 12,6C11.22,6 10.45,6.2 9.76,6.56L8.29,5.09Z"; +var mdiBellOutline = "M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z"; +var mdiBellPlus = "M17 14V17H14V19H17V22H19V19H22V17H19V14M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35A6 6 0 0 1 12 18A6 6 0 0 1 18 12A6 6 0 0 1 19 12.09V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M10 21A2 2 0 0 0 12 23A2 2 0 0 0 13.65 22.13A6 6 0 0 1 12.81 21Z"; +var mdiBellPlusOutline = "M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11C7 8.24 9.24 6 12 6C14.76 6 17 8.24 17 11V12.09C17.33 12.03 17.67 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M17 14V17H14V19H17V22H19V19H22V17H19V14M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z"; +var mdiBellRemove = "M20.12 14.46L18 16.59L15.88 14.46L14.46 15.88L16.59 18L14.46 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18C12 14.69 14.69 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z"; +var mdiBellRemoveOutline = "M20.12 14.46L18 16.59L15.88 14.46L14.46 15.88L16.59 18L14.46 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11A5 5 0 0 1 12 6A5 5 0 0 1 17 11V12.09C17.33 12.04 17.66 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z"; +var mdiBellRing = "M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21M19.75,3.19L18.33,4.61C20.04,6.3 21,8.6 21,11H23C23,8.07 21.84,5.25 19.75,3.19M1,11H3C3,8.6 3.96,6.3 5.67,4.61L4.25,3.19C2.16,5.25 1,8.07 1,11Z"; +var mdiBellRingOutline = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M17,11A5,5 0 0,0 12,6A5,5 0 0,0 7,11V18H17V11M19.75,3.19L18.33,4.61C20.04,6.3 21,8.6 21,11H23C23,8.07 21.84,5.25 19.75,3.19M1,11H3C3,8.6 3.96,6.3 5.67,4.61L4.25,3.19C2.16,5.25 1,8.07 1,11Z"; +var mdiBellSleep = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M15,9H9V11H12.24L9,13.7V16H15V14H11.76L15,11.3V9Z"; +var mdiBellSleepOutline = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M17,11A5,5 0 0,0 12,6A5,5 0 0,0 7,11V18H17V11M9,9V11H12.24L9,13.7V16H15V14H11.76L15,11.3V9H9Z"; +var mdiBeta = "M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z"; +var mdiBetamax = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M8,9A4,4 0 0,1 12,13A4,4 0 0,1 8,17A4,4 0 0,1 4,13A4,4 0 0,1 8,9M13,9H20V17H13V9M8,11A2,2 0 0,0 6,13A2,2 0 0,0 8,15A2,2 0 0,0 10,13A2,2 0 0,0 8,11Z"; +var mdiBiathlon = "M12.88,3.64C13.65,3.64 14.28,4.27 14.28,5.04C14.28,5.81 13.65,6.44 12.88,6.44C12.11,6.44 11.5,5.81 11.5,5.04C11.5,4.27 12.11,3.64 12.88,3.64M15,13H16.5V19H15V13M15,8.5H16.5V10H15V8.5M10.04,2.6L8,2.04L6.06,8.58L3.9,11.42L7.17,12.37L10.04,2.6M19.67,18.55C19.31,18.93 18.88,19.5 18.4,19.7C17.91,19.92 17.54,20 17,20H13.5L13.43,17C13.42,16.83 13.37,16.67 13.28,16.5L10.88,12.24L11.76,9.5C12.34,10.55 13,11.73 13.06,11.83C13.21,12 13.45,12.13 13.69,12.13H15.9A0.81,0.81 0 0,0 16.71,11.32C16.71,10.9 16.38,10.56 15.96,10.53L14.29,10.4L12.4,7C12.4,7 12,6.42 11.14,6.42C10.27,6.42 10,6.84 9.83,7.42L6,20H3V22H17C18.37,22 19.53,21.34 20.5,20.37L19.67,18.55M9.75,14.39L11.62,17.39L11.75,20H7.75L9.75,14.39Z"; +var mdiBicycle = "M19 10C18.44 10 17.91 10.11 17.41 10.28L14.46 4.5H11V6H13.54L14.42 7.72L12 13.13L10.23 8.95C10.5 8.85 10.74 8.58 10.74 8.25C10.74 7.84 10.41 7.5 10 7.5H8C7.58 7.5 7.24 7.84 7.24 8.25S7.58 9 8 9H8.61L10.86 14.25H9.92C9.56 11.85 7.5 10 5 10C2.24 10 0 12.24 0 15S2.24 20 5 20C7.5 20 9.56 18.15 9.92 15.75H12.5L15.29 9.43L16.08 10.96C14.82 11.87 14 13.34 14 15C14 17.76 16.24 20 19 20S24 17.76 24 15 21.76 10 19 10M5 18.5C3.07 18.5 1.5 16.93 1.5 15S3.07 11.5 5 11.5C6.67 11.5 8.07 12.68 8.41 14.25H4V15.75H8.41C8.07 17.32 6.67 18.5 5 18.5M19 18.5C17.07 18.5 15.5 16.93 15.5 15C15.5 13.92 16 12.97 16.77 12.33L18.57 15.85L19.89 15.13L18.1 11.63C18.39 11.56 18.69 11.5 19 11.5C20.93 11.5 22.5 13.07 22.5 15S20.93 18.5 19 18.5Z"; +var mdiBicycleBasket = "M11.74 13.36L14.14 7.71L13.06 5.5H10.5V4H14L14.73 5.5H21.75L20.75 9H16.44L17.11 10.37C17.69 10.13 18.33 10 19 10C21.76 10 24 12.24 24 15C24 17.76 21.76 20 19 20C16.24 20 14 17.76 14 15C14 13.45 14.71 12.06 15.82 11.15L15 9.5L12.25 16H9.9C9.44 18.28 7.42 20 5 20C2.24 20 0 17.76 0 15C0 12.24 2.24 10 5 10C7.59 10 9.72 11.97 10 14.5H10.58L8.3 9H7.5C7.09 9 6.75 8.66 6.75 8.25C6.75 7.84 7.09 7.5 7.5 7.5H10.25C10.66 7.5 11 7.84 11 8.25C11 8.66 10.66 9 10.25 9H9.97L11.74 13.36M5 11.5C3.07 11.5 1.5 13.07 1.5 15C1.5 16.93 3.07 18.5 5 18.5C6.59 18.5 7.93 17.45 8.36 16H4V14.5H8.47C8.22 12.8 6.76 11.5 5 11.5M19 11.5C18.57 11.5 18.15 11.58 17.77 11.72L19.7 15.68L18.35 16.34L16.5 12.55C15.88 13.18 15.5 14.05 15.5 15C15.5 16.93 17.07 18.5 19 18.5C20.93 18.5 22.5 16.93 22.5 15C22.5 13.07 20.93 11.5 19 11.5Z"; +var mdiBicycleElectric = "M19 7C18.44 7 17.91 7.11 17.41 7.28L14.46 1.5H11V3H13.54L14.42 4.72L12 10.13L10.23 5.95C10.5 5.85 10.74 5.58 10.74 5.25C10.74 4.84 10.41 4.5 10 4.5H8C7.58 4.5 7.24 4.84 7.24 5.25S7.58 6 8 6H8.61L10.86 11.25H9.92C9.56 8.85 7.5 7 5 7C2.24 7 0 9.24 0 12S2.24 17 5 17C7.5 17 9.56 15.15 9.92 12.75H12.5L15.29 6.43L16.08 7.96C14.82 8.87 14 10.34 14 12C14 14.76 16.24 17 19 17S24 14.76 24 12 21.76 7 19 7M5 15.5C3.07 15.5 1.5 13.93 1.5 12S3.07 8.5 5 8.5C6.67 8.5 8.07 9.68 8.41 11.25H4V12.75H8.41C8.07 14.32 6.67 15.5 5 15.5M19 15.5C17.07 15.5 15.5 13.93 15.5 12C15.5 10.92 16 9.97 16.77 9.33L18.57 12.85L19.89 12.13L18.1 8.63C18.39 8.56 18.69 8.5 19 8.5C20.93 8.5 22.5 10.07 22.5 12S20.93 15.5 19 15.5M11 20H7L13 23V21H17L11 18V20Z"; +var mdiBicyclePennyFarthing = "M15.5 5.06V2H12V4H13.5V5.04C12.71 5.11 11.94 5.27 11.2 5.5C11.03 5.2 10.72 5 10.36 5H7C6.45 5 6 5.45 6 6S6.45 7 7 7H8.05C5.09 9 3.12 12.36 3 16.18C1.85 16.59 1 17.69 1 19C1 20.66 2.34 22 4 22S7 20.66 7 19C7 17.7 6.17 16.61 5 16.19C5.07 14.67 5.46 13.25 6.14 12C6.05 12.5 6 13 6 13.5C6 18.19 9.81 22 14.5 22C19.19 22 23 18.19 23 13.5C23 9.14 19.72 5.56 15.5 5.06M4 20C3.45 20 3 19.55 3 19S3.45 18 4 18 5 18.45 5 19 4.55 20 4 20M14.5 20C10.92 20 8 17.08 8 13.5C8 10.26 10.39 7.57 13.5 7.09V15H15.5V7.09C18.61 7.57 21 10.26 21 13.5C21 17.08 18.08 20 14.5 20Z"; +var mdiBike = "M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z"; +var mdiBikeFast = "M16 1.2C15 1.2 14.2 2 14.2 3S15 4.8 16 4.8 17.8 4 17.8 3 17 1.2 16 1.2M12.4 4.1C11.93 4.1 11.5 4.29 11.2 4.6L7.5 8.29C7.19 8.6 7 9 7 9.5C7 10.13 7.33 10.66 7.85 10.97L11.2 13V18H13V11.5L10.75 9.85L13.07 7.5L14.8 10H19V8.2H15.8L13.86 4.93C13.57 4.43 13 4.1 12.4 4.1M10 3H3C2.45 3 2 2.55 2 2S2.45 1 3 1H12.79C12.58 1.34 12.41 1.71 12.32 2.11C11.46 2.13 10.65 2.45 10 3M5 12C2.24 12 0 14.24 0 17S2.24 22 5 22 10 19.76 10 17 7.76 12 5 12M5 20.5C3.07 20.5 1.5 18.93 1.5 17S3.07 13.5 5 13.5 8.5 15.07 8.5 17 6.93 20.5 5 20.5M19 12C16.24 12 14 14.24 14 17S16.24 22 19 22 24 19.76 24 17 21.76 12 19 12M19 20.5C17.07 20.5 15.5 18.93 15.5 17S17.07 13.5 19 13.5 22.5 15.07 22.5 17 20.93 20.5 19 20.5M5.32 11H1C.448 11 0 10.55 0 10S.448 9 1 9H5.05C5.03 9.16 5 9.33 5 9.5C5 10.03 5.12 10.54 5.32 11M6 7H2C1.45 7 1 6.55 1 6S1.45 5 2 5H7.97L6.09 6.87C6.05 6.91 6 6.96 6 7Z"; +var mdiBillboard = "M20 22H18V17H20M6 22H4V17H6M23 4V13A2 2 0 0 1 21 15H3A2 2 0 0 1 1 13V4A2 2 0 0 1 3 2H21A2 2 0 0 1 23 4M21 4H3V13H21M20 6H15V8H20M18 9H15V11H18M14 11H4L6.73 7.36L8.73 10.09L9.46 9.55L8.2 7.82L9.91 5.55Z"; +var mdiBilliards = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15A2,2 0 0,0 11,17M12,1C5.92,1 1,5.92 1,12C1,18.08 5.92,23 12,23C18.08,23 23,18.08 23,12C23,5.92 18.08,1 12,1M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z"; +var mdiBilliardsRack = "M20.31,16.44L14.54,6.47C13.72,5.04 11.89,4.55 10.46,5.38C10,5.64 9.63,6 9.36,6.47L3.6,16.44C2.77,17.87 3.26,19.69 4.69,20.5C5.14,20.78 5.65,20.92 6.18,20.92H17.73C19.38,20.91 20.72,19.57 20.71,17.92C20.71,17.4 20.57,16.89 20.31,16.44M5.37,17.43L11.11,7.47C11.38,7 12,6.82 12.46,7.1C12.62,7.18 12.75,7.31 12.84,7.47L18.58,17.43C18.85,17.91 18.69,18.5 18.21,18.79C18.06,18.88 17.89,18.93 17.72,18.93H6.21C5.66,18.92 5.21,18.47 5.22,17.92C5.22,17.75 5.26,17.58 5.35,17.43H5.37M11.97,13.45C10.87,13.45 10,12.56 10,11.46C10,10.35 10.87,9.46 11.97,9.46A2,2 0 0,1 13.97,11.46C13.97,12.56 13.07,13.45 11.95,13.45H11.97M9.46,17.93C8.36,17.93 7.47,17.04 7.47,15.94C7.47,14.84 8.36,13.95 9.46,13.95C10.56,13.95 11.46,14.84 11.46,15.94C11.46,17.04 10.56,17.93 9.46,17.93M14.44,17.93A2,2 0 0,1 12.45,15.94A2,2 0 0,1 14.44,13.95C15.54,13.95 16.44,14.84 16.44,15.94C16.44,17.04 15.54,17.93 14.44,17.93Z"; +var mdiBinoculars = "M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z"; +var mdiBio = "M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z"; +var mdiBiohazard = "M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z"; +var mdiBird = "M23 11.5L19.95 10.37C19.69 9.22 19.04 8.56 19.04 8.56C17.4 6.92 14.75 6.92 13.11 8.56L11.63 10.04L5 3C4 7 5 11 7.45 14.22L2 19.5C2 19.5 10.89 21.5 16.07 17.45C18.83 15.29 19.45 14.03 19.84 12.7L23 11.5M17.71 11.72C17.32 12.11 16.68 12.11 16.29 11.72C15.9 11.33 15.9 10.7 16.29 10.31C16.68 9.92 17.32 9.92 17.71 10.31C18.1 10.7 18.1 11.33 17.71 11.72Z"; +var mdiBitbucket = "M2.65 3C2.3 3 2 3.3 2 3.65C2 3.69 2 3.73 2 3.77L4.73 20.27C4.8 20.69 5.16 21 5.58 21H18.63C18.94 21 19.22 20.78 19.27 20.46L22 3.77C22.05 3.42 21.81 3.09 21.46 3.04C21.43 3.03 21.39 3.03 21.35 3.03L2.65 3M14.1 14.95H9.94L8.81 9.07H15.11L14.1 14.95Z"; +var mdiBitcoin = "M14.24 10.56C13.93 11.8 12 11.17 11.4 11L11.95 8.82C12.57 9 14.56 9.26 14.24 10.56M11.13 12.12L10.53 14.53C11.27 14.72 13.56 15.45 13.9 14.09C14.26 12.67 11.87 12.3 11.13 12.12M21.7 14.42C20.36 19.78 14.94 23.04 9.58 21.7C4.22 20.36 .963 14.94 2.3 9.58C3.64 4.22 9.06 .964 14.42 2.3C19.77 3.64 23.03 9.06 21.7 14.42M14.21 8.05L14.66 6.25L13.56 6L13.12 7.73C12.83 7.66 12.54 7.59 12.24 7.53L12.68 5.76L11.59 5.5L11.14 7.29C10.9 7.23 10.66 7.18 10.44 7.12L10.44 7.12L8.93 6.74L8.63 7.91C8.63 7.91 9.45 8.1 9.43 8.11C9.88 8.22 9.96 8.5 9.94 8.75L8.71 13.68C8.66 13.82 8.5 14 8.21 13.95C8.22 13.96 7.41 13.75 7.41 13.75L6.87 15L8.29 15.36C8.56 15.43 8.82 15.5 9.08 15.56L8.62 17.38L9.72 17.66L10.17 15.85C10.47 15.93 10.76 16 11.04 16.08L10.59 17.87L11.69 18.15L12.15 16.33C14 16.68 15.42 16.54 16 14.85C16.5 13.5 16 12.7 15 12.19C15.72 12 16.26 11.55 16.41 10.57C16.61 9.24 15.59 8.53 14.21 8.05Z"; +var mdiBlackMesa = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z"; +var mdiBlender = "M19,5H17.8L18,2H4L5,4H6L6.94,16.19L5,22H19L17.06,16.17L17.2,14H19C20.3,14 21,12.97 21,12V7C21,5.7 19.97,5 19,5M12,20A1.5,1.5 0 0,1 10.5,18.5A1.5,1.5 0 0,1 12,17A1.5,1.5 0 0,1 13.5,18.5A1.5,1.5 0 0,1 12,20M15.13,15H8.85L8.7,13H13V12H8.62L8.47,10H13V9H8.39L8.24,7H13V6H8.16L8,4H15.86L15.13,15M19,12H17.33L17.67,7H19V12Z"; +var mdiBlenderSoftware = "M12.58,3.12V3.13C12.27,3.13 11.96,3.22 11.71,3.39C11.21,3.74 11.15,4.32 11.6,4.69L14.46,7L5.73,7.03H5.72C5,7.03 4.3,7.5 4.16,8.1C4,8.71 4.5,9.22 5.26,9.22L9.69,9.21L1.76,15.3C1,15.87 0.77,16.82 1.24,17.42C1.72,18.03 2.73,18.03 3.5,17.42L7.8,13.89C7.8,13.89 7.73,14.37 7.74,14.65C7.74,14.94 7.84,15.5 7.97,15.93C8.26,16.86 8.75,17.71 9.43,18.46C10.13,19.23 11,19.85 12,20.29C13.03,20.76 14.17,21 15.34,21C16.5,21 17.65,20.75 18.69,20.28C19.69,19.84 20.55,19.21 21.25,18.44C21.93,17.69 22.42,16.83 22.71,15.91C22.85,15.44 22.94,14.97 23,14.5C23,14.03 23,13.56 22.94,13.09C22.81,12.18 22.5,11.32 22,10.54C21.56,9.83 21,9.2 20.31,8.67V8.67L13.42,3.38C13.19,3.21 12.89,3.12 12.58,3.12M15.34,9.21C16.5,9.21 17.59,9.59 18.46,10.29C18.9,10.65 19.25,11.07 19.5,11.54C19.77,12 19.94,12.55 20,13.11C20.04,13.67 19.96,14.23 19.77,14.77C19.57,15.31 19.25,15.81 18.82,16.26C17.93,17.16 16.69,17.68 15.34,17.68C14,17.68 12.75,17.17 11.86,16.27C11.43,15.83 11.11,15.32 10.91,14.78C10.72,14.25 10.64,13.69 10.69,13.12C10.74,12.56 10.91,12.03 11.17,11.55C11.43,11.08 11.79,10.66 12.23,10.3C13.09,9.59 14.19,9.21 15.34,9.21M15.44,10.61C14.66,10.61 13.94,10.89 13.41,11.34C12.87,11.8 12.5,12.44 12.47,13.18C12.43,13.93 12.73,14.63 13.26,15.15C13.8,15.68 14.58,16 15.44,16C16.3,16 17.07,15.68 17.62,15.15C18.15,14.63 18.45,13.93 18.41,13.18C18.37,12.44 18,11.8 17.47,11.34C16.94,10.89 16.22,10.61 15.44,10.61Z"; +var mdiBlinds = "M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z"; +var mdiBlindsOpen = "M3 2H21C21.55 2 22 2.45 22 3V5C22 5.55 21.55 6 21 6H20V7C20 7.55 19.55 8 19 8H13V10.17C14.17 10.58 15 11.7 15 13C15 14.66 13.66 16 12 16C10.34 16 9 14.66 9 13C9 11.69 9.84 10.58 11 10.17V8H5C4.45 8 4 7.55 4 7V6H3C2.45 6 2 5.55 2 5V3C2 2.45 2.45 2 3 2M12 12C11.45 12 11 12.45 11 13C11 13.55 11.45 14 12 14C12.55 14 13 13.55 13 13C13 12.45 12.55 12 12 12Z"; +var mdiBlockHelper = "M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z"; +var mdiBlogger = "M12.5 10H10C9.45 10 9 9.55 9 9C9 8.45 9.45 8 10 8H12.5C13.05 8 13.5 8.45 13.5 9C13.5 9.55 13.05 10 12.5 10M15 14C15 13.45 14.55 13 14 13H10C9.45 13 9 13.45 9 14C9 14.55 9.45 15 10 15H14C14.55 15 15 14.55 15 14M22 4V20C22 21.11 21.11 22 20 22H4C2.89 22 2 21.11 2 20V4C2 2.89 2.89 2 4 2H20C21.11 2 22 2.89 22 4M18 12C18 12 18 11 17 11C16.05 11.03 16 10 16 10L16 8C16 6.34 14.66 5 13 5H9C7.34 5 6 6.34 6 8V15C6 16.66 7.34 18 9 18H15C16.66 18 18 16.66 18 15L18 12Z"; +var mdiBloodBag = "M21,7C20,7 20,6 20,6V5H18V7H16V6C16,4.27 14.75,1 10,1C5.25,1 4,4.27 4,6V19C4,19.33 3.9,21 2,21V23C4.93,23 6,20.61 6,19V6C6,5.88 6.05,3 10,3C13.83,3 14,5.7 14,6V7H12V5H10V6C10,6 10,7 9,7C8,7 8,8 8,8V20C8,20 8,22 13,22C13.24,22 14.13,22 17,22C22,22 22,20 22,20V8C22,8 22,7 21,7M15,19.4A3,3 0 0,1 12,16.4C12,14.4 15,11 15,11C15,11 18,14.4 18,16.4A3,3 0 0,1 15,19.4Z"; +var mdiBluetooth = "M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z"; +var mdiBluetoothAudio = "M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z"; +var mdiBluetoothConnect = "M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z"; +var mdiBluetoothOff = "M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29"; +var mdiBluetoothSettings = "M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z"; +var mdiBluetoothTransfer = "M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z"; +var mdiBlur = "M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z"; +var mdiBlurLinear = "M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z"; +var mdiBlurOff = "M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z"; +var mdiBlurRadial = "M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z"; +var mdiBolnisiCross = "M22,7L21.5,6.5C19.93,8 18.47,9.4 16.93,10.18C15.5,10.91 14.44,10.91 13,11C13.09,9.56 13.09,8.5 13.82,7.07C14.6,5.53 16,4.07 17.5,2.5L17,2C15.32,3.23 13.64,3.83 12,3.83C10.36,3.83 8.68,3.23 7,2L6.5,2.5C8,4.07 9.4,5.53 10.18,7.07C10.91,8.5 10.91,9.56 11,11C9.56,10.91 8.5,10.91 7.07,10.18C5.53,9.4 4.06,8 2.5,6.5L2,7C3.23,8.68 3.83,10.36 3.83,12C3.83,13.64 3.23,15.32 2,17L2.5,17.5C4.07,16 5.53,14.6 7.07,13.82C8.5,13.09 9.56,13.09 11,13C10.91,14.44 10.91,15.5 10.18,16.93C9.4,18.47 8,19.93 6.5,21.5L7,22C8.68,20.77 10.36,20.17 12,20.17C13.64,20.17 15.32,20.77 17,22L17.5,21.5C16,19.93 14.6,18.47 13.82,16.93C13.09,15.5 13.09,14.44 13,13C14.44,13.09 15.5,13.09 16.93,13.82C18.47,14.6 19.93,16 21.5,17.5L22,17C20.77,15.32 20.17,13.64 20.17,12C20.17,10.36 20.77,8.68 22,7Z"; +var mdiBolt = "M14,17.7V21H10V20.3L14,17.7M17,3H7V6H17V3M15,7L14,7.7V7H10V10.3L9,11V12L15,8.1V7M15,11L14,11.7V9.7L10,12.4V14.4L9,15V16L15,12.1V11M15,15L14,15.7V13.7L10,16.4V18.4L9,19V20L15,16.1V15Z"; +var mdiBomb = "M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z"; +var mdiBombOff = "M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z"; +var mdiBone = "M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z"; +var mdiBook = "M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z"; +var mdiBookAccount = "M18 2H12V9L9.5 7.5L7 9V2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14 12A2 2 0 1 1 12 14A2 2 0 0 1 14 12M18 20H10V19C10 17.67 12.67 17 14 17S18 17.67 18 19Z"; +var mdiBookAccountOutline = "M18 2A2 2 0 0 1 20 4V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2H18M18 4H13V9L10.5 6.7L8 9V4H6V20H18M13 11A2 2 0 1 1 11 13A2 2 0 0 1 13 11M17 19H9V18C9 16.67 11.67 16 13 16S17 16.67 17 18V19"; +var mdiBookAlert = "M18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2H5V9L7.5 7.5L10 9V2H16C17.1 2 18 2.89 18 4M20 17H22V15H20V17M20 7V13H22V7H20Z"; +var mdiBookAlertOutline = "M16 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V4C18 2.9 17.11 2 16 2M16 20H4V4H6V12L8.5 9.75L11 12V4H16V20M20 15H22V17H20V15M22 7V13H20V7H22Z"; +var mdiBookAlphabet = "M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z"; +var mdiBookArrowDown = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M20 20V16H18V20H16L19 23L22 20H20Z"; +var mdiBookArrowDownOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M20 20V16H18V20H16L19 23L22 20H20Z"; +var mdiBookArrowLeft = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M18 18V16L15 19L18 22V20H22V18H18Z"; +var mdiBookArrowLeftOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M18 18V16L15 19L18 22V20H22V18H18Z"; +var mdiBookArrowRight = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M23 19L20 16V18H16V20H20V22L23 19Z"; +var mdiBookArrowRightOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M23 19L20 16V18H16V20H20V22L23 19Z"; +var mdiBookArrowUp = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M19 15L16 18H18V22H20V18H22L19 15Z"; +var mdiBookArrowUpOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M19 15L16 18H18V22H20V18H22L19 15Z"; +var mdiBookCancel = "M12 18.5C12 19.79 12.39 21 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.18C19.5 12.07 19 12 18.5 12C14.91 12 12 14.91 12 18.5M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z"; +var mdiBookCancelOutline = "M12.18 20C12.36 20.72 12.65 21.39 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.18C19.5 12.07 19 12 18.5 12C18.33 12 18.17 12 18 12.03V4H13V12L10.5 9.75L8 12V4H6V20H12.18M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z"; +var mdiBookCheck = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M6 22C4.89 22 4 21.1 4 20V4C4 2.89 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.34C19.37 13.12 18.7 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H6Z"; +var mdiBookCheckOutline = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M18 2C19.1 2 20 2.9 20 4V13.34C19.37 13.12 18.7 13 18 13V4H13V12L10.5 9.75L8 12V4H6V20H12.08C12.2 20.72 12.45 21.39 12.8 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H18Z"; +var mdiBookClock = "M16.5 17.25L19.36 18.94L18.61 20.16L15 18V13H16.5V17.25M23 17C23 20.87 19.87 24 16 24C14.09 24 12.37 23.24 11.11 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11.26C21.81 12.53 23 14.62 23 17M21 17C21 14.24 18.76 12 16 12S11 14.24 11 17 13.24 22 16 22 21 19.76 21 17Z"; +var mdiBookClockOutline = "M20 11.26V4C20 2.9 19.11 2 18 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H11.11C12.37 23.24 14.09 24 16 24C19.87 24 23 20.87 23 17C23 14.62 21.81 12.53 20 11.26M18 4V10.29C17.37 10.11 16.7 10 16 10C14.93 10 13.91 10.25 13 10.68V4H18M6 4H8V12L10.5 9.75L12.1 11.19C10.23 12.45 9 14.58 9 17C9 18.08 9.25 19.09 9.68 20H6V4M16 22C13.24 22 11 19.76 11 17S13.24 12 16 12 21 14.24 21 17 18.76 22 16 22M16.5 17.25L19.36 18.94L18.61 20.16L15 18V13H16.5V17.25Z"; +var mdiBookCog = "M12 19C12 20.08 12.25 21.09 12.68 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.08C19.67 12.03 19.34 12 19 12C15.13 12 12 15.13 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiBookCogOutline = "M18 4H13V12L10.5 9.75L8 12V4H6V20H12.08C12.18 20.71 12.39 21.38 12.69 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.08C19.67 12.03 19.34 12 19 12C18.66 12 18.33 12.03 18 12.08V4M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiBookCross = "M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z"; +var mdiBookEdit = "M19.39 10.74L11 19.13V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.3C19.78 10.42 19.57 10.56 19.39 10.74M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z"; +var mdiBookEditOutline = "M6 20H11V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.3C19.78 10.42 19.57 10.56 19.39 10.74L18 12.13V4H13V12L10.5 9.75L8 12V4H6V20M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z"; +var mdiBookEducation = "M8.82 17L13 19.28V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.54L18.5 11.72L8.82 17M24 17L18.5 14L13 17L18.5 20L24 17M15 19.09V21.09L18.5 23L22 21.09V19.09L18.5 21L15 19.09Z"; +var mdiBookEducationOutline = "M6 20H13V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.54L18.5 11.72L18 12V4H13V12L10.5 9.75L8 12V4H6V20M24 17L18.5 14L13 17L18.5 20L24 17M15 19.09V21.09L18.5 23L22 21.09V19.09L18.5 21L15 19.09Z"; +var mdiBookInformationVariant = "M18 2H12V9L9.5 7.5L7 9V2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.89 19.1 2 18 2M17.68 18.41C17.57 18.5 16.47 19.25 16.05 19.5C15.63 19.79 14 20.72 14.26 18.92C14.89 15.28 16.11 13.12 14.65 14.06C14.27 14.29 14.05 14.43 13.91 14.5C13.78 14.61 13.79 14.6 13.68 14.41S13.53 14.23 13.67 14.13C13.67 14.13 15.9 12.34 16.72 12.28C17.5 12.21 17.31 13.17 17.24 13.61C16.78 15.46 15.94 18.15 16.07 18.54C16.18 18.93 17 18.31 17.44 18C17.44 18 17.5 17.93 17.61 18.05C17.72 18.22 17.83 18.3 17.68 18.41M16.97 11.06C16.4 11.06 15.94 10.6 15.94 10.03C15.94 9.46 16.4 9 16.97 9C17.54 9 18 9.46 18 10.03C18 10.6 17.54 11.06 16.97 11.06Z"; +var mdiBookLock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.11C19.68 10.04 19.34 10 19 10C16.4 10 14.2 12.06 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiBookLockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V9.11C19.68 9.04 19.34 9 19 9C16.4 9 14.2 11.06 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiBookLockOpenOutline = "M13 20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V9.11C19.68 9.04 19.34 9 19 9S18.32 9.04 18 9.11V4H13V12L10.5 9.75L8 12V4H6V20H13V20.7M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiBookLockOutline = "M13 20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.11C19.68 10.04 19.34 10 19 10S18.32 10.04 18 10.11V4H13V12L10.5 9.75L8 12V4H6V20H13V20.7M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiBookMarker = "M13 15.5C13 17.78 14.7 20.41 15.91 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.22C19.5 10.08 19 10 18.5 10C15.5 10 13 12.5 13 15.5M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z"; +var mdiBookMarkerOutline = "M14.55 20C15 20.76 15.5 21.44 15.91 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.22C19.5 10.08 19 10 18.5 10C18.33 10 18.17 10 18 10.03V4H13V12L10.5 9.75L8 12V4H6V20H14.55M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z"; +var mdiBookMinus = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M15 18V20H23V18H15Z"; +var mdiBookMinusMultiple = "M13.09 20H5V6H3V20C3 21.11 3.9 22 5 22H13.81C13.44 21.39 13.2 20.71 13.09 20M19 2H14V7L12 5.5L10 7V2H9C7.9 2 7 2.9 7 4V16C7 17.11 7.9 18 9 18H13.09C13.64 14.73 16.74 12.53 20 13.08C20.34 13.14 20.68 13.23 21 13.34V4C21 2.9 20.11 2 19 2M23 18V20H15V18H23Z"; +var mdiBookMinusMultipleOutline = "M13.09 20H5V6H3V20C3 21.11 3.9 22 5 22H13.81C13.44 21.39 13.2 20.71 13.09 20M19 2H9C7.9 2 7 2.9 7 4V16C7 17.11 7.9 18 9 18H13.09C13.2 17.29 13.44 16.61 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13C19.68 13 20.36 13.11 21 13.34V4C21 2.9 20.11 2 19 2M23 18V20H15V18H23Z"; +var mdiBookMinusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M15 18V20H23V18H15Z"; +var mdiBookMultiple = "M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z"; +var mdiBookMultipleOutline = "M19 2A2 2 0 0 1 21 4V16A2 2 0 0 1 19 18H9A2 2 0 0 1 7 16V4A2 2 0 0 1 9 2H19M19 4H16V10L13.5 7.75L11 10V4H9V16H19M3 20A2 2 0 0 0 5 22H17V20H5V6H3Z"; +var mdiBookMusic = "M13 20.5C13 21.03 13.09 21.53 13.26 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11H16.5V16.11C14.5 16.57 13 18.36 13 20.5M20 13H18.5V18.21C18.19 18.07 17.86 18 17.5 18C16.12 18 15 19.12 15 20.5S16.12 23 17.5 23 20 21.88 20 20.5V15H22V13H20Z"; +var mdiBookMusicOutline = "M13 20.5C13 21.03 13.09 21.53 13.26 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V11H18V4H13V12L10.5 9.75L8 12V4H6V20H13.04C13.03 20.17 13 20.33 13 20.5M20 13H18.5V18.21C18.19 18.07 17.86 18 17.5 18C16.12 18 15 19.12 15 20.5S16.12 23 17.5 23 20 21.88 20 20.5V15H22V13H20Z"; +var mdiBookOff = "M18.68 2.12L12 8.8V2H18C18.24 2 18.46 2.05 18.68 2.12M9.5 7.5L7 9V2H6C4.89 2 4 2.9 4 4V16.8L11.88 8.93L9.5 7.5M21.61 1.73L1.89 21.46L3.16 22.73L4.54 21.35C4.9 21.75 5.42 22 6 22H18C19.11 22 20 21.11 20 20V5.89L22.89 3L21.61 1.73Z"; +var mdiBookOffOutline = "M6 14.8L4 16.8V4C4 2.9 4.89 2 6 2H18C18.24 2 18.47 2.04 18.68 2.12L16.8 4H13V7.8L10.79 10L10.5 9.75L8 12V4H6V14.8M22.89 3L20 5.89V20C20 21.11 19.11 22 18 22H6C5.42 22 4.9 21.75 4.54 21.35L3.16 22.73L1.89 21.46L21.61 1.73L22.89 3M18 7.89L6 19.89V20H18V7.89Z"; +var mdiBookOpen = "M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21"; +var mdiBookOpenBlankVariant = "M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z"; +var mdiBookOpenOutline = "M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M3,19V6H11V19H3M21,19H13V6H21V19M14,9.5H20V11H14V9.5M14,12H20V13.5H14V12M14,14.5H20V16H14V14.5Z"; +var mdiBookOpenPageVariant = "M19 2L14 6.5V17.5L19 13V2M6.5 5C4.55 5 2.45 5.4 1 6.5V21.16C1 21.41 1.25 21.66 1.5 21.66C1.6 21.66 1.65 21.59 1.75 21.59C3.1 20.94 5.05 20.5 6.5 20.5C8.45 20.5 10.55 20.9 12 22C13.35 21.15 15.8 20.5 17.5 20.5C19.15 20.5 20.85 20.81 22.25 21.56C22.35 21.61 22.4 21.59 22.5 21.59C22.75 21.59 23 21.34 23 21.09V6.5C22.4 6.05 21.75 5.75 21 5.5V19C19.9 18.65 18.7 18.5 17.5 18.5C15.8 18.5 13.35 19.15 12 20V6.5C10.55 5.4 8.45 5 6.5 5Z"; +var mdiBookOpenPageVariantOutline = "M19 1L14 6V17L19 12.5V1M21 5V18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5V6C10.55 4.9 8.45 4.5 6.5 4.5C4.55 4.5 2.45 4.9 1 6V20.65C1 20.9 1.25 21.15 1.5 21.15C1.6 21.15 1.65 21.1 1.75 21.1C3.1 20.45 5.05 20 6.5 20C8.45 20 10.55 20.4 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5M10 18.41C8.75 18.09 7.5 18 6.5 18C5.44 18 4.18 18.19 3 18.5V7.13C3.91 6.73 5.14 6.5 6.5 6.5C7.86 6.5 9.09 6.73 10 7.13V18.41Z"; +var mdiBookOpenVariant = "M17.5 14.33C18.29 14.33 19.13 14.41 20 14.57V16.07C19.38 15.91 18.54 15.83 17.5 15.83C15.6 15.83 14.11 16.16 13 16.82V15.13C14.17 14.6 15.67 14.33 17.5 14.33M13 12.46C14.29 11.93 15.79 11.67 17.5 11.67C18.29 11.67 19.13 11.74 20 11.9V13.4C19.38 13.24 18.54 13.16 17.5 13.16C15.6 13.16 14.11 13.5 13 14.15M17.5 10.5C15.6 10.5 14.11 10.82 13 11.5V9.84C14.23 9.28 15.73 9 17.5 9C18.29 9 19.13 9.08 20 9.23V10.78C19.26 10.59 18.41 10.5 17.5 10.5M21 18.5V7C19.96 6.67 18.79 6.5 17.5 6.5C15.45 6.5 13.62 7 12 8V19.5C13.62 18.5 15.45 18 17.5 18C18.69 18 19.86 18.16 21 18.5M17.5 4.5C19.85 4.5 21.69 5 23 6V20.56C23 20.68 22.95 20.8 22.84 20.91C22.73 21 22.61 21.08 22.5 21.08C22.39 21.08 22.31 21.06 22.25 21.03C20.97 20.34 19.38 20 17.5 20C15.45 20 13.62 20.5 12 21.5C10.66 20.5 8.83 20 6.5 20C4.84 20 3.25 20.36 1.75 21.07C1.72 21.08 1.68 21.08 1.63 21.1C1.59 21.11 1.55 21.12 1.5 21.12C1.39 21.12 1.27 21.08 1.16 21C1.05 20.89 1 20.78 1 20.65V6C2.34 5 4.18 4.5 6.5 4.5C8.83 4.5 10.66 5 12 6C13.34 5 15.17 4.5 17.5 4.5Z"; +var mdiBookOutline = "M18,2A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H18M18,4H13V12L10.5,9.75L8,12V4H6V20H18V4Z"; +var mdiBookPlay = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M17 16V22L22 19L17 16Z"; +var mdiBookPlayOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M17 16V22L22 19L17 16Z"; +var mdiBookPlus = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiBookPlusMultiple = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H14V7L12 5.5L10 7V2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; +var mdiBookPlusMultipleOutline = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A5.5 5.5 0 0 1 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; +var mdiBookPlusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiBookRefresh = "M12 18.5C12 19.79 12.39 21 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.18C19.5 12.07 19 12 18.5 12C14.91 12 12 14.91 12 18.5M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z"; +var mdiBookRefreshOutline = "M12.18 20C12.36 20.72 12.65 21.39 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.18C19.5 12.07 19 12 18.5 12C18.33 12 18.17 12 18 12.03V4H13V12L10.5 9.75L8 12V4H6V20H12.18M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z"; +var mdiBookRemove = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiBookRemoveMultiple = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H14V7L12 5.5L10 7V2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; +var mdiBookRemoveMultipleOutline = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A5.5 5.5 0 0 1 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; +var mdiBookRemoveOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiBookSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M6,22A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V11.81C18.83,10.69 17.25,10 15.5,10A6.5,6.5 0 0,0 9,16.5C9,18.81 10.21,20.85 12.03,22H6Z"; +var mdiBookSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M13,4V12L10.5,9.75L8,12V4H6V20H10C10.54,20.81 11.23,21.5 12.03,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H18A2,2 0 0,1 20,4V11.81C19.42,11.26 18.75,10.81 18,10.5V4H13Z"; +var mdiBookSettings = "M20 2V18C20 19.11 19.11 20 18 20H6C4.89 20 4 19.11 4 18V2C4 .895 4.89 0 6 0H7V7L9.5 5.5L12 7V0H18C19.1 0 20 .89 20 2M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; +var mdiBookSettingsOutline = "M18 0H6C4.89 0 4 .895 4 2V18C4 19.11 4.89 20 6 20H18C19.11 20 20 19.11 20 18V2C20 .895 19.11 0 18 0M18 18H6V2H8V10L10.5 7.75L13 10V2H18V18M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22Z"; +var mdiBookSync = "M13 17.5C13 19.25 13.69 20.83 14.82 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11.03C19.84 11 19.67 11 19.5 11C15.91 11 13 13.91 13 17.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; +var mdiBookSyncOutline = "M13.5 20C13.81 20.75 14.26 21.42 14.82 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V11.03C19.84 11 19.67 11 19.5 11C19 11 18.5 11.07 18 11.18V4H13V12L10.5 9.75L8 12V4H6V20H13.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; +var mdiBookVariant = "M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z"; +var mdiBookVariantMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,12L17.5,10.5L15,12V4H20V12Z"; +var mdiBookmark = "M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z"; +var mdiBookmarkCheck = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z"; +var mdiBookmarkCheckOutline = "M9.47 9.65L8.06 11.07L11 14L16.19 8.82L14.78 7.4L11 11.18M17 3H7C5.9 3 5 3.9 5 5L5 21L12 18L19 21V5C19 3.9 18.1 3 17 3M17 18L12 15.82L7 18V5H17Z"; +var mdiBookmarkMinus = "M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5A2,2 0 0,0 17,3M15,11H9V9H15V11Z"; +var mdiBookmarkMinusOutline = "M9,11V9H15V11H9M19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17C18.11,3 19,3.9 19,5M17,5H7V18L12,15.82L17,18V5Z"; +var mdiBookmarkMultiple = "M15,5A2,2 0 0,1 17,7V23L10,20L3,23V7C3,5.89 3.9,5 5,5H15M9,1H19A2,2 0 0,1 21,3V19L19,18.13V3H7A2,2 0 0,1 9,1Z"; +var mdiBookmarkMultipleOutline = "M9,1H19A2,2 0 0,1 21,3V19L19,18.13V3H7A2,2 0 0,1 9,1M15,20V7H5V20L10,17.82L15,20M15,5C16.11,5 17,5.9 17,7V23L10,20L3,23V7A2,2 0 0,1 5,5H15Z"; +var mdiBookmarkMusic = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z"; +var mdiBookmarkMusicOutline = "M7 3C5.9 3 5 3.9 5 5V21L12 18L19 21V5C19 3.89 18.1 3 17 3H7M7 5H17V18L12 15.82L7 18V5M12 6V11.3C11.7 11.1 11.4 11 11 11C9.9 11 9 11.9 9 13C9 14.11 9.9 15 11 15C12.11 15 13 14.11 13 13V8H15V6H12Z"; +var mdiBookmarkOff = "M20,20.72L18.73,22L16.78,20.05L12,18L5,21V8.27L2,5.27L3.28,4L20,20.72M19,17.16V5C19,3.89 18.1,3 17,3H7C6.41,3 5.89,3.27 5.5,3.68L19,17.16Z"; +var mdiBookmarkOffOutline = "M3.28,4L2,5.27L5,8.27V21L12,18L16.78,20.05L18.73,22L20,20.72L3.28,4M7,18V10.27L13,16.25L12,15.82L7,18M7,5.16L5.5,3.67C5.88,3.26 6.41,3 7,3H17A2,2 0 0,1 19,5V17.16L17,15.16V5H7V5.16Z"; +var mdiBookmarkOutline = "M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z"; +var mdiBookmarkPlus = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z"; +var mdiBookmarkPlusOutline = "M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z"; +var mdiBookmarkRemove = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z"; +var mdiBookmarkRemoveOutline = "M7 3C5.9 3 5 3.9 5 5V21L12 18L19 21V5C19 3.89 18.1 3 17 3H7M7 5H17V18L12 15.82L7 18V5M9.88 7.47L8.47 8.88L10.59 11L8.47 13.12L9.88 14.54L12 12.42L14.12 14.53L15.54 13.12L13.42 11L15.53 8.88L14.12 7.47L12 9.59L9.88 7.47Z"; +var mdiBookshelf = "M9 3V18H12V3H9M12 5L16 18L19 17L15 4L12 5M5 5V18H8V5H5M3 19V21H21V19H3Z"; +var mdiBoomGate = "M20,9H8.22C7.11,7.77 5.21,7.68 4,8.8C3.36,9.36 3,10.16 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V13H20A2,2 0 0,0 22,11A2,2 0 0,0 20,9M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.5,12L9,10H10.5L12,12H10.5M14.5,12L13,10H14.5L16,12H14.5M18.5,12L17,10H18.5L20,12H18.5Z"; +var mdiBoomGateAlert = "M19.9 3C19.3 2 18.1 1.7 17.2 2.3L6.9 8.2C6.6 8.1 6.3 8 6 8C4.3 8 3 9.3 3 11V20C2.4 20 2 20.4 2 21V22H10V21C10 20.4 9.6 20 9 20V11.6L19.1 5.8C20.1 5.2 20.4 4 19.9 3M6 12.5C5.2 12.5 4.5 11.8 4.5 11S5.2 9.5 6 9.5 7.5 10.2 7.5 11 6.8 12.5 6 12.5M10.4 9.6L8.1 8.6L9.4 7.8L11.7 8.8L10.4 9.6M13.9 7.6L11.6 6.6L12.9 5.8L15.2 6.8L13.9 7.6M17.3 5.6L15 4.6L16.3 3.8L18.6 4.8L17.3 5.6M20 18H18V20H20V18M20 10H18V16H20V10Z"; +var mdiBoomGateAlertOutline = "M19.9 3C19.3 2 18.1 1.7 17.2 2.3L6.9 8.2C6.6 8.1 6.3 8 6 8C4.3 8 3 9.3 3 11V20C2.4 20 2 20.4 2 21V22H10V21C10 20.4 9.6 20 9 20V11.6L19.1 5.8C20.1 5.2 20.4 4 19.9 3M7.5 20H4.5V13.6C5.4 14.1 6.6 14.1 7.5 13.6V20M6 12.5C5.2 12.5 4.5 11.8 4.5 11S5.2 9.5 6 9.5 7.5 10.2 7.5 11 6.8 12.5 6 12.5M10.4 9.6L8.1 8.6L9.4 7.8L11.7 8.8L10.4 9.6M13.9 7.6L11.6 6.6L12.9 5.8L15.2 6.8L13.9 7.6M17.3 5.6L15 4.6L16.3 3.8L18.6 4.8L17.3 5.6M20 16H18V10H20V16M20 20H18V18H20V20Z"; +var mdiBoomGateDown = "M19.86,3C19.31,2.04 18.09,1.71 17.12,2.27L6.92,8.16C6.62,8.06 6.31,8 6,8A3,3 0 0,0 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V11.58L19.12,5.73C20.08,5.18 20.41,3.96 19.86,3M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.4,9.62L8.1,8.62L9.4,7.87L11.7,8.87L10.4,9.62M13.86,7.62L11.56,6.62L12.86,5.87L15.16,6.87L13.86,7.62M17.33,5.62L15.03,4.62L16.33,3.87L18.62,4.87L17.33,5.62M17,20L12,15H15V11H19V15H22L17,20"; +var mdiBoomGateDownOutline = "M19.86,3C20.41,3.96 20.08,5.18 19.12,5.73L9,11.58V20A1,1 0 0,1 10,21V22H2V21A1,1 0 0,1 3,20V11A3,3 0 0,1 6,8C6.31,8 6.62,8.06 6.92,8.16L17.12,2.27C18.09,1.71 19.31,2.04 19.86,3M7.5,20V13.6C6.57,14.14 5.43,14.14 4.5,13.6V20H7.5M6,12.5A1.5,1.5 0 0,0 7.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,11A1.5,1.5 0 0,0 6,12.5M10.4,9.62L11.7,8.87L9.4,7.87L8.1,8.62L10.4,9.62M13.86,7.62L15.16,6.87L12.86,5.87L11.56,6.62L13.86,7.62M17.33,5.62L18.62,4.87L16.33,3.87L15.03,4.62L17.33,5.62M16,11.16H18V16.17L21,16.16L17,20L13,16.16L16,16.17V11.16Z"; +var mdiBoomGateOutline = "M20,9H8.22C7.11,7.77 5.21,7.68 4,8.8C3.36,9.36 3,10.16 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V13H20A2,2 0 0,0 22,11A2,2 0 0,0 20,9M7.5,20H4.5V13.6C5.43,14.14 6.57,14.14 7.5,13.6V20M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.5,12L9,10H10.5L12,12H10.5M14.5,12L13,10H14.5L16,12H14.5M18.5,12L17,10H18.5L20,12H18.5Z"; +var mdiBoomGateUp = "M19.86,3C19.31,2.04 18.09,1.71 17.12,2.27L6.92,8.16C6.62,8.06 6.31,8 6,8A3,3 0 0,0 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V11.58L19.12,5.73C20.08,5.18 20.41,3.96 19.86,3M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.4,9.62L8.1,8.62L9.4,7.87L11.7,8.87L10.4,9.62M13.86,7.62L11.56,6.62L12.86,5.87L15.16,6.87L13.86,7.62M17.33,5.62L15.03,4.62L16.33,3.87L18.62,4.87L17.33,5.62M17,11L22,16H19V20H15V16H12L17,11"; +var mdiBoomGateUpOutline = "M19.86,3C20.41,3.96 20.08,5.18 19.12,5.73L9,11.58V20A1,1 0 0,1 10,21V22H2V21A1,1 0 0,1 3,20V11A3,3 0 0,1 6,8C6.31,8 6.62,8.06 6.92,8.16L17.12,2.27C18.09,1.71 19.31,2.04 19.86,3M7.5,20V13.6C6.57,14.14 5.43,14.14 4.5,13.6V20H7.5M6,12.5A1.5,1.5 0 0,0 7.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,11A1.5,1.5 0 0,0 6,12.5M10.4,9.62L11.7,8.87L9.4,7.87L8.1,8.62L10.4,9.62M13.86,7.62L15.16,6.87L12.86,5.87L11.56,6.62L13.86,7.62M17.33,5.62L18.62,4.87L16.33,3.87L15.03,4.62L17.33,5.62M16,20V15H13L17,11.16L21,15H18V20H16Z"; +var mdiBoombox = "M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z"; +var mdiBoomerang = "M10 2H4C2.9 2 2 2.9 2 4S2.9 6 4 6H8L10 2M18 2C20.2 2 22 3.8 22 6V12L18 14C18 9.6 14.4 6 10 6L12 2H18M18 20V16L22 14V20C22 21.1 21.1 22 20 22S18 21.1 18 20Z"; +var mdiBootstrap = "M11.79 11.5H9.72V8.19H12.19C13.45 8.19 14.15 8.75 14.15 9.78C14.15 10.9 13.32 11.5 11.79 11.5M12.16 12.63H9.72V16.27L12.28 16.27C13.84 16.27 14.66 15.64 14.66 14.44S13.81 12.63 12.16 12.63M22 5.31V18.69C22 20.5 20.5 22 18.69 22H5.31C3.5 22 2 20.5 2 18.69V5.31C2 3.5 3.5 2 5.31 2H18.69C20.5 2 22 3.5 22 5.31M16 14.5C16 13.12 15.08 12.13 13.67 11.95V11.89C14.67 11.71 15.46 10.71 15.46 9.63C15.46 8.08 14.26 7.05 12.5 7.05H8.43V17.41H12.47C14.68 17.41 16 16.32 16 14.5Z"; +var mdiBorderAll = "M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z"; +var mdiBorderAllVariant = "M3,21V3H21V21H3M5,5V19H19V5H5Z"; +var mdiBorderBottom = "M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z"; +var mdiBorderBottomVariant = "M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M5,3H3V5H5M9,3H7V5H9"; +var mdiBorderColor = "M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z"; +var mdiBorderHorizontal = "M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z"; +var mdiBorderInside = "M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z"; +var mdiBorderLeft = "M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z"; +var mdiBorderLeftVariant = "M15,5H17V3H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,5H9V3H7M7,21H9V19H7M11,5H13V3H11M11,21H13V19H11V21Z"; +var mdiBorderNone = "M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z"; +var mdiBorderNoneVariant = "M15,5H17V3H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M7,21H9V19H7M7,5H9V3H7V5Z"; +var mdiBorderOutside = "M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z"; +var mdiBorderRight = "M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z"; +var mdiBorderRightVariant = "M11,5H13V3H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z"; +var mdiBorderStyle = "M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19"; +var mdiBorderTop = "M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z"; +var mdiBorderTopVariant = "M19,21H21V19H19M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M7,21H9V19H7V21Z"; +var mdiBorderVertical = "M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z"; +var mdiBottleSoda = "M15 11V20A2 2 0 0 1 13 22H11A2 2 0 0 1 9 20V11A2 2 0 0 1 9.6 9.58C11.1 7.89 11 4 11 4H10V2H14V4H13S12.9 7.89 14.4 9.58A2 2 0 0 1 15 11Z"; +var mdiBottleSodaClassic = "M15 13.77A3 3 0 0 0 15 18.23V20A2 2 0 0 1 13 22H11A2 2 0 0 1 9 20V18.23A3 3 0 0 0 9 13.77V9A12.28 12.28 0 0 0 10.91 4H10V2H14V4H13.09A12.28 12.28 0 0 0 15 9Z"; +var mdiBottleSodaClassicOutline = "M10 2V4H10.91C10.65 5.79 9 7.5 8 9V13.77C9.32 14.96 9.32 17.04 8 18.23V20C8 21.11 8.9 22 10 22H14C15.11 22 16 21.11 16 20V18.23C14.68 17.04 14.68 14.96 16 13.77V9C15 7.5 13.35 5.79 13.09 4H14V2M12 6.5C12.24 7 13.54 8.5 13.9 8.91L14 9V13C13.35 13.87 13 14.92 13 16C13 17.08 13.35 18.13 14 19V20H10V19C10.65 18.13 11 17.08 11 16C11 14.92 10.65 13.87 10 13V9L10.1 8.91C10.46 8.5 11.76 7 12 6.5Z"; +var mdiBottleSodaOutline = "M14.4 9.58C12.9 7.89 13 4 13 4H14V2H10V4H11S11.1 7.89 9.6 9.58A2 2 0 0 0 9 11V20A2 2 0 0 0 11 22H13A2 2 0 0 0 15 20V11A2 2 0 0 0 14.4 9.58M13 20H11V11L11.1 10.91A6.26 6.26 0 0 0 12 9.5A6.26 6.26 0 0 0 12.9 10.91L13 11Z"; +var mdiBottleTonic = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13Z"; +var mdiBottleTonicOutline = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M17 13C17 11.35 15.65 10 14 10H10C8.35 10 7 11.35 7 13V20H17V13Z"; +var mdiBottleTonicPlus = "M13 4H11L10 2H14L13 4M14 8V6H15V5H9V6H10V8C7.24 8 5 10.24 5 13V22H19V13C19 10.24 16.76 8 14 8M16 17H13V20H11V17H8V15H11V12H13V15H16V17Z"; +var mdiBottleTonicPlusOutline = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M17 13C17 11.35 15.65 10 14 10H10C8.35 10 7 11.35 7 13V20H17V13M15 16H13V18H11V16H9V14H11V12H13V14H15V16Z"; +var mdiBottleTonicSkull = "M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M13 4L14 2H10L11 4H13M12 11C9.79 11 8 12.79 8 15C8 16 8.39 16.9 9 17.59V19H10.25V17.5H11.38V19H12.63V17.5H13.75V19H15V17.59C15.61 16.9 16 16 16 15C16 12.79 14.21 11 12 11M10.5 15C9.95 15 9.5 14.55 9.5 14S9.95 13 10.5 13 11.5 13.45 11.5 14 11.05 15 10.5 15M11.25 16.25L12 15L12.75 16.25H11.25M13.5 15C12.95 15 12.5 14.55 12.5 14S12.95 13 13.5 13 14.5 13.45 14.5 14 14.05 15 13.5 15Z"; +var mdiBottleTonicSkullOutline = "M13 4H11L10 2H14L13 4M14 8V6H15V5H9V6H10V8C7.24 8 5 10.24 5 13V22H19V13C19 10.24 16.76 8 14 8M17 20H7V13C7 11.35 8.35 10 10 10H14C15.65 10 17 11.35 17 13V20M12 11C9.79 11 8 12.79 8 15C8 16 8.39 16.9 9 17.59V19H10.25V17.5H11.38V19H12.63V17.5H13.75V19H15V17.59C15.61 16.9 16 16 16 15C16 12.79 14.21 11 12 11M10.5 15C9.95 15 9.5 14.55 9.5 14S9.95 13 10.5 13 11.5 13.45 11.5 14 11.05 15 10.5 15M11.25 16.25L12 15L12.75 16.25H11.25M13.5 15C12.95 15 12.5 14.55 12.5 14S12.95 13 13.5 13 14.5 13.45 14.5 14 14.05 15 13.5 15Z"; +var mdiBottleWine = "M10,22A1,1 0 0,1 9,21V11C9,9 10,7.25 11,7V2.5A0.5,0.5 0 0,1 11.5,2H12.5A0.5,0.5 0 0,1 13,2.5V7C14,7.25 15,9 15,11V21A1,1 0 0,1 14,22H10Z"; +var mdiBottleWineOutline = "M11.5 2C11.22 2 11 2.22 11 2.5V7C10.93 7 10.85 7 10.78 7.03C9.82 7.27 9.21 8 8.76 8.89C8.3 9.76 8 10.84 8 12C8.05 15 8 18.03 8 21C8 21.55 8.45 22 9 22C11 22 13 22 15 22C15.55 22 16 21.55 16 21C16.04 18 16 15 16 12C16 10.84 15.74 9.76 15.28 8.88C14.83 8 14.22 7.27 13.26 7.04C13.18 7 13.05 7 13 7V2.5C13 2.22 12.78 2 12.5 2M12 8.85C12.32 8.85 12.63 8.9 12.78 9C12.85 9.03 13.2 9.26 13.5 9.81C13.78 10.37 14 11.17 14 12V20H10V12C10 11.17 10.22 10.37 10.5 9.81C10.8 9.26 11.15 9.03 11.22 9C11.36 8.9 11.68 8.85 12 8.85Z"; +var mdiBowTie = "M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z"; +var mdiBowl = "M22 15C22 18.9 18.9 22 15 22H9C5.1 22 2 18.9 2 15V12H22V15Z"; +var mdiBowlMix = "M16.2 11L20.3 4.5L22 5.5L18.6 11H16.2M15.6 12H2V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H15.6Z"; +var mdiBowlMixOutline = "M15.6 12H2V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H15.6M20 15C20 17.8 17.8 20 15 20H9C6.2 20 4 17.8 4 15V14H20V15M16.2 11L20.3 4.4L22 5.5L18.6 11H16.2Z"; +var mdiBowlOutline = "M2 12V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H2M4 14H20V15C20 17.8 17.8 20 15 20H9C6.2 20 4 17.8 4 15V14Z"; +var mdiBowling = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z"; +var mdiBox = "M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z"; +var mdiBoxCutter = "M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z"; +var mdiBoxCutterOff = "M20.84 22.73L12.86 14.75L12.17 15.44L6.66 13.08C6.71 12.65 6.89 12.24 7.22 11.91L8.62 10.5L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15.41 12.21L11.16 7.96L16.41 2.71C17.2 1.93 18.46 1.93 19.24 2.71L20.66 4.13C21.44 4.91 21.44 6.17 20.66 6.96L15.41 12.21M17.12 6.25C17.5 6.64 18.15 6.64 18.54 6.25C18.93 5.86 18.93 5.23 18.54 4.83C18.15 4.44 17.5 4.44 17.12 4.83C16.73 5.23 16.73 5.86 17.12 6.25M5 16V21.75L10.81 16.53L5.81 14.53L5 16Z"; +var mdiBoxShadow = "M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z"; +var mdiBoxingGlove = "M19,16V6H22V16H19M12,4C8,4 7,4 7,4C7,4 2,4 2,8V14C2,15.77 3,16.76 4.07,17.31C4.4,15.43 6.03,14 8,14H11V16H8A2,2 0 0,0 6,18C6,19.11 6.9,20 8,20H13C17,20 17,16 17,16V6C17,6 16,4 12,4Z"; +var mdiBraille = "M7,8A1,1 0 0,1 8,7A1,1 0 0,1 9,8V12.47L10.21,12.6L15.15,14.79C15.67,15.03 16,15.56 16,16.14V20.5C15.97,21.32 15.32,21.97 14.5,22H8C7.62,22 7.26,21.85 7,21.57L2.1,17.37L2.84,16.6C3.03,16.39 3.3,16.28 3.58,16.28H3.8L7,18V8M19.5,2A1.5,1.5 0 0,0 18,3.5A1.5,1.5 0 0,0 19.5,5A1.5,1.5 0 0,0 21,3.5A1.5,1.5 0 0,0 19.5,2M19.5,7A1.5,1.5 0 0,0 18,8.5A1.5,1.5 0 0,0 19.5,10A1.5,1.5 0 0,0 21,8.5A1.5,1.5 0 0,0 19.5,7M14.5,7A1.5,1.5 0 0,0 13,8.5A1.5,1.5 0 0,0 14.5,10A1.5,1.5 0 0,0 16,8.5A1.5,1.5 0 0,0 14.5,7M19.5,12A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 21,13.5A1.5,1.5 0 0,0 19.5,12Z"; +var mdiBrain = "M21.33,12.91C21.42,14.46 20.71,15.95 19.44,16.86L20.21,18.35C20.44,18.8 20.47,19.33 20.27,19.8C20.08,20.27 19.69,20.64 19.21,20.8L18.42,21.05C18.25,21.11 18.06,21.14 17.88,21.14C17.37,21.14 16.89,20.91 16.56,20.5L14.44,18C13.55,17.85 12.71,17.47 12,16.9C11.5,17.05 11,17.13 10.5,17.13C9.62,17.13 8.74,16.86 8,16.34C7.47,16.5 6.93,16.57 6.38,16.56C5.59,16.57 4.81,16.41 4.08,16.11C2.65,15.47 1.7,14.07 1.65,12.5C1.57,11.78 1.69,11.05 2,10.39C1.71,9.64 1.68,8.82 1.93,8.06C2.3,7.11 3,6.32 3.87,5.82C4.45,4.13 6.08,3 7.87,3.12C9.47,1.62 11.92,1.46 13.7,2.75C14.12,2.64 14.56,2.58 15,2.58C16.36,2.55 17.65,3.15 18.5,4.22C20.54,4.75 22,6.57 22.08,8.69C22.13,9.8 21.83,10.89 21.22,11.82C21.29,12.18 21.33,12.54 21.33,12.91M16.33,11.5C16.9,11.57 17.35,12 17.35,12.57A1,1 0 0,1 16.35,13.57H15.72C15.4,14.47 14.84,15.26 14.1,15.86C14.35,15.95 14.61,16 14.87,16.07C20,16 19.4,12.87 19.4,12.82C19.34,11.39 18.14,10.27 16.71,10.33A1,1 0 0,1 15.71,9.33A1,1 0 0,1 16.71,8.33C17.94,8.36 19.12,8.82 20.04,9.63C20.09,9.34 20.12,9.04 20.12,8.74C20.06,7.5 19.5,6.42 17.25,6.21C16,3.25 12.85,4.89 12.85,5.81V5.81C12.82,6.04 13.06,6.53 13.1,6.56A1,1 0 0,1 14.1,7.56C14.1,8.11 13.65,8.56 13.1,8.56V8.56C12.57,8.54 12.07,8.34 11.67,8C11.19,8.31 10.64,8.5 10.07,8.56V8.56C9.5,8.61 9.03,8.21 9,7.66C8.92,7.1 9.33,6.61 9.88,6.56C10.04,6.54 10.82,6.42 10.82,5.79V5.79C10.82,5.13 11.07,4.5 11.5,4C10.58,3.75 9.59,4.08 8.59,5.29C6.75,5 6,5.25 5.45,7.2C4.5,7.67 4,8 3.78,9C4.86,8.78 5.97,8.87 7,9.25C7.5,9.44 7.78,10 7.59,10.54C7.4,11.06 6.82,11.32 6.3,11.13C5.57,10.81 4.75,10.79 4,11.07C3.68,11.34 3.68,11.9 3.68,12.34C3.68,13.08 4.05,13.77 4.68,14.17C5.21,14.44 5.8,14.58 6.39,14.57C6.24,14.31 6.11,14.04 6,13.76C5.81,13.22 6.1,12.63 6.64,12.44C7.18,12.25 7.77,12.54 7.96,13.08C8.36,14.22 9.38,15 10.58,15.13C11.95,15.06 13.17,14.25 13.77,13C14,11.62 15.11,11.5 16.33,11.5M18.33,18.97L17.71,17.67L17,17.83L18,19.08L18.33,18.97M13.68,10.36C13.7,9.83 13.3,9.38 12.77,9.33C12.06,9.29 11.37,9.53 10.84,10C10.27,10.58 9.97,11.38 10,12.19A1,1 0 0,0 11,13.19C11.57,13.19 12,12.74 12,12.19C12,11.92 12.07,11.65 12.23,11.43C12.35,11.33 12.5,11.28 12.66,11.28C13.21,11.31 13.68,10.9 13.68,10.36Z"; +var mdiBreadSlice = "M12,2C17.5,2 22,5.36 22,9.5C22,11.19 21.26,12.75 20,14V22H4V14C2.74,12.75 2,11.19 2,9.5C2,5.36 6.5,2 12,2M8,18H12V14H8V18Z"; +var mdiBreadSliceOutline = "M12,2C17.5,2 22,5.36 22,9.5C22,11.19 21.26,12.75 20,14V22H4V14C2.74,12.75 2,11.19 2,9.5C2,5.36 6.5,2 12,2M18,13.14C19.24,12.17 20,10.89 20,9.5C20,6.46 16.42,4 12,4C7.58,4 4,6.46 4,9.5C4,10.89 4.76,12.17 6,13.14V20H18V13.14M8,18V14H12V18H8Z"; +var mdiBridge = "M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z"; +var mdiBriefcase = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; +var mdiBriefcaseAccount = "M20,6H16V4A2,2 0 0,0 14,2H10C8.89,2 8,2.89 8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8A2,2 0 0,0 20,6M10,4H14V6H10V4M12,9A2.5,2.5 0 0,1 14.5,11.5A2.5,2.5 0 0,1 12,14A2.5,2.5 0 0,1 9.5,11.5A2.5,2.5 0 0,1 12,9M17,19H7V17.75C7,16.37 9.24,15.25 12,15.25C14.76,15.25 17,16.37 17,17.75V19Z"; +var mdiBriefcaseAccountOutline = "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14M12,9A2.25,2.25 0 0,1 14.25,11.25C14.25,12.5 13.24,13.5 12,13.5A2.25,2.25 0 0,1 9.75,11.25C9.75,10 10.76,9 12,9M16.5,18H7.5V16.88C7.5,15.63 9.5,14.63 12,14.63C14.5,14.63 16.5,15.63 16.5,16.88V18Z"; +var mdiBriefcaseCheck = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M10.5,17.5L17.09,10.91L15.68,9.5L10.5,14.67L8.41,12.59L7,14L10.5,17.5Z"; +var mdiBriefcaseCheckOutline = "M20 6C20.58 6 21.05 6.2 21.42 6.59C21.8 7 22 7.45 22 8V19C22 19.55 21.8 20 21.42 20.41C21.05 20.8 20.58 21 20 21H4C3.42 21 2.95 20.8 2.58 20.41C2.2 20 2 19.55 2 19V8C2 7.45 2.2 7 2.58 6.59C2.95 6.2 3.42 6 4 6H8V4C8 3.42 8.2 2.95 8.58 2.58C8.95 2.2 9.42 2 10 2H14C14.58 2 15.05 2.2 15.42 2.58C15.8 2.95 16 3.42 16 4V6H20M4 8V19H20V8H4M14 6V4H10V6H14M10.46 17.5L17.05 10.91L15.64 9.5L10.46 14.67L8.37 12.59L6.96 14L10.46 17.5Z"; +var mdiBriefcaseClock = "M21 11.11V7A2 2 0 0 0 19 5H15V3A2 2 0 0 0 13 1H9A2 2 0 0 0 7 3V5H3A2 2 0 0 0 1 7V18A2 2 0 0 0 3 20H10.26A7 7 0 1 0 21 11.11M9 3H13V5H9M19 20A5 5 0 0 1 13 20A5 5 0 1 1 19 20M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13"; +var mdiBriefcaseClockOutline = "M21 11.11V7A2 2 0 0 0 20.42 5.59A1.87 1.87 0 0 0 19 5H15V3A1.9 1.9 0 0 0 14.42 1.58A1.9 1.9 0 0 0 13 1H9A1.9 1.9 0 0 0 7.58 1.58A1.9 1.9 0 0 0 7 3V5H3A1.87 1.87 0 0 0 1.58 5.59A2 2 0 0 0 1 7V18A2 2 0 0 0 1.58 19.41A1.87 1.87 0 0 0 3 20H10.26A7 7 0 1 0 21 11.11M9 3H13V5H9M3 18V7H19V9.68A6.84 6.84 0 0 0 16 9A7 7 0 0 0 9 16A6.91 6.91 0 0 0 9.29 18M19 20A5 5 0 0 1 13 20A4.94 4.94 0 0 1 11 16A5 5 0 0 1 16 11A4.94 4.94 0 0 1 19 12A5 5 0 0 1 19 20M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13"; +var mdiBriefcaseDownload = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M12,19L17,14H14V10H10V14H7L12,19Z"; +var mdiBriefcaseDownloadOutline = "M12,18L7,13H10V9H14V13H17L12,18M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M4,8V19H20V8H4Z"; +var mdiBriefcaseEdit = "M14,2A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8L10.85,19C10.85,20.1 10.85,19.5 10.85,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2H14M14,6V4H10V6H14M21.04,12.13C20.9,12.13 20.76,12.19 20.65,12.3L19.65,13.3L21.7,15.35L22.7,14.35C22.92,14.14 22.92,13.79 22.7,13.58L21.42,12.3C21.31,12.19 21.18,12.13 21.04,12.13M19.07,13.88L13,19.94V22H15.06L21.12,15.93L19.07,13.88Z"; +var mdiBriefcaseEditOutline = "M21.04,12.13C21.18,12.13 21.31,12.19 21.42,12.3L22.7,13.58C22.92,13.79 22.92,14.14 22.7,14.35L21.7,15.35L19.65,13.3L20.65,12.3C20.76,12.19 20.9,12.13 21.04,12.13M19.07,13.88L21.12,15.93L15.06,22H13V19.94L19.07,13.88M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8L20,10V8H4V19H11V21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14Z"; +var mdiBriefcaseMinus = "M22,17V19H14V17H22M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; +var mdiBriefcaseMinusOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14,17H22V19H14V17Z"; +var mdiBriefcaseOff = "M22.11 21.46L20.84 22.73L19.11 21H4C2.89 21 2 20.1 2 19V8C2 6.89 2.89 6 4 6H4.11L1.11 3L2.39 1.73L22.11 21.46M22 18.8L8 4.8V4C8 2.89 8.89 2 10 2H14C15.11 2 16 2.9 16 4V6H20C21.11 6 22 6.9 22 8V18.8M14 4H10V6H14V4Z"; +var mdiBriefcaseOffOutline = "M20 8V16.8L22 18.8V8C22 7.45 21.8 7 21.42 6.59C21.05 6.2 20.58 6 20 6H16V4C16 3.42 15.8 2.95 15.42 2.58C15.05 2.2 14.58 2 14 2H10C9.42 2 8.95 2.2 8.58 2.58C8.2 2.95 8 3.42 8 4V4.8L11.2 8H20M10 4H14V6H10V4M2.39 1.73L1.11 3L4.11 6H4C3.42 6 2.95 6.2 2.58 6.59C2.2 7 2 7.45 2 8V19C2 19.55 2.2 20 2.58 20.41C2.95 20.8 3.42 21 4 21H19.11L20.84 22.73L22.11 21.46L2.39 1.73M4 19V8H6.11L17.11 19H4Z"; +var mdiBriefcaseOutline = "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z"; +var mdiBriefcasePlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; +var mdiBriefcasePlusOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14,17H17V14H19V17H22V19H19V22H17V19H14V17Z"; +var mdiBriefcaseRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; +var mdiBriefcaseRemoveOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88Z"; +var mdiBriefcaseSearch = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.03C20.85,11.21 18.82,10 16.5,10A6.5,6.5 0 0,0 10,16.5C10,18.25 10.69,19.83 11.81,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; +var mdiBriefcaseSearchOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.03C21.5,12.23 20.8,11.54 20,11V8H4V19H10.5C10.81,19.75 11.26,20.42 11.81,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9M16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19Z"; +var mdiBriefcaseUpload = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M12,9L7,14H10V18H14V14H17L12,9Z"; +var mdiBriefcaseUploadOutline = "M12,9L17,14H14V18H10V14H7L12,9M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M4,8V19H20V8H4Z"; +var mdiBriefcaseVariant = "M10 16V15H3L3 19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V15H14V16H10M20 7H16V5L14 3H10L8 5V7H4C2.9 7 2 7.9 2 9V12C2 13.11 2.89 14 4 14H10V12H14V14H20C21.1 14 22 13.1 22 12V9C22 7.9 21.1 7 20 7M14 7H10V5H14V7Z"; +var mdiBriefcaseVariantOff = "M10 6.8L8.1 4.9L10 3H14L16 5V7H20C21.1 7 22 7.9 22 9V12C22 13.1 21.1 14 20 14H17.2L10.2 7H14V5H10V6.8M2.39 1.73L1.11 3L5.11 7H4C2.9 7 2 7.9 2 9V12C2 13.11 2.89 14 4 14H10V12H10.11L14 15.89V16H10V15H3V19C3 20.11 3.89 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M21 17.8V15H18.2L21 17.8Z"; +var mdiBriefcaseVariantOffOutline = "M10 6.8L8.1 4.9L10 3H14L16 5V7H20C21.1 7 22 7.9 22 9V14C22 14.73 21.59 15.37 21 15.72V17.8L17.2 14H20V9H12.2L10.2 7H14V5H10V6.8M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.89 21 3 20.11 3 19V15.73C2.4 15.38 2 14.75 2 14V9C2 7.9 2.9 7 4 7H5.11L1.11 3L2.39 1.73L22.11 21.46M11 15H13V14.89L11.11 13H11V15M9 14V11H9.11L7.11 9H4V14H9M17.11 19L15 16.89V17H9V16H5V19H17.11Z"; +var mdiBriefcaseVariantOutline = "M20 7H16V5L14 3H10L8 5V7H4C2.9 7 2 7.9 2 9V14C2 14.75 2.4 15.38 3 15.73V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V15.72C21.59 15.37 22 14.73 22 14V9C22 7.9 21.1 7 20 7M10 5H14V7H10V5M4 9H20V14H15V11H9V14H4V9M13 15H11V13H13V15M19 19H5V16H9V17H15V16H19V19Z"; +var mdiBrightness1 = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiBrightness2 = "M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z"; +var mdiBrightness3 = "M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z"; +var mdiBrightness4 = "M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; +var mdiBrightness5 = "M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z"; +var mdiBrightness6 = "M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z"; +var mdiBrightness7 = "M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; +var mdiBrightnessAuto = "M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z"; +var mdiBrightnessPercent = "M20.04,8.71V4H15.34L12,0.69L8.71,4H4V8.71L0.69,12L4,15.34V20.04H8.71L12,23.35L15.34,20.04H20.04V15.34L23.35,12L20.04,8.71M8.83,7.05C9.81,7.05 10.6,7.84 10.6,8.83A1.77,1.77 0 0,1 8.83,10.6C7.84,10.6 7.05,9.81 7.05,8.83C7.05,7.84 7.84,7.05 8.83,7.05M15.22,17C14.24,17 13.45,16.2 13.45,15.22A1.77,1.77 0 0,1 15.22,13.45C16.2,13.45 17,14.24 17,15.22A1.78,1.78 0 0,1 15.22,17M8.5,17.03L7,15.53L15.53,7L17.03,8.5L8.5,17.03Z"; +var mdiBroadcast = "M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M18 12C18 8.7 15.3 6 12 6S6 8.7 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 9.9 9.8 8.1 12 8.1S16 9.9 16 12.1C16 13.6 15.2 14.9 14 15.5L15 17.2C16.8 16.2 18 14.2 18 12M12 2C6.5 2 2 6.5 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 7.6 7.6 4 12 4S20 7.6 20 12C20 15 18.4 17.5 16 18.9L17 20.6C20 18.9 22 15.7 22 12C22 6.5 17.5 2 12 2Z"; +var mdiBroadcastOff = "M17.6 14.2C17.9 13.5 18 12.8 18 12C18 8.7 15.3 6 12 6C11.2 6 10.4 6.2 9.8 6.4L11.4 8H12C14.2 8 16 9.8 16 12C16 12.2 16 12.4 15.9 12.6L17.6 14.2M12 4C16.4 4 20 7.6 20 12C20 13.4 19.6 14.6 19 15.7L20.5 17.2C21.4 15.7 22 13.9 22 12C22 6.5 17.5 2 12 2C10.1 2 8.3 2.5 6.8 3.5L8.3 5C9.4 4.3 10.6 4 12 4M3.3 2.5L2 3.8L4.1 5.9C2.8 7.6 2 9.7 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 10.2 4.6 8.6 5.5 7.3L7 8.8C6.4 9.7 6 10.8 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 11.5 8.2 10.9 8.4 10.3L10 11.9V12.1C10 13.2 10.9 14.1 12 14.1H12.2L19.7 21.6L21 20.3L4.3 3.5L3.3 2.5Z"; +var mdiBroom = "M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z"; +var mdiBrush = "M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z"; +var mdiBucket = "M3 4H21V7H20L17.5 21H6.5L4 7H3V4Z"; +var mdiBucketOutline = "M3 4H21V7H20L17.5 21H6.5L4 7H3V4M17.97 7H6.03L8.15 19H15.85L17.97 7Z"; +var mdiBuddhism = "M11,2V3C9.27,3.2 7.69,3.9 6.4,4.94L5.64,4.18L4.22,5.6L5,6.35C3.9,7.68 3.21,9.3 3,11H2V13H3C3.21,14.68 3.9,16.26 5,17.56L4.22,18.32L5.64,19.74L6.39,19C7.71,20.07 9.3,20.77 11,21V22H13V21C14.69,20.77 16.29,20.07 17.6,19L18.36,19.74L19.78,18.32L19,17.57C20.1,16.27 20.79,14.68 21,13H22V11H21C20.79,9.3 20.1,7.69 19,6.36L19.78,5.6L18.36,4.18L17.61,4.94C16.29,3.87 14.69,3.2 13,3V2H11M11,5V8L10,8.5L7.81,6.35C8.72,5.67 9.81,5.17 11,5M13,5C14.16,5.18 15.26,5.64 16.2,6.35L14,8.5L13,8V5M6.4,7.76L8.5,10L8,11H5C5.16,9.84 5.7,8.7 6.39,7.75L6.4,7.76M17.6,7.76C18.33,8.71 18.81,9.82 19,11H16L15.5,10L17.61,7.76H17.6M12,10C13.12,10 14,10.88 14,12C14,13.12 13.12,14 12,14C10.88,14 10,13.12 10,12C10,10.88 10.88,10 12,10M5,13H8L8.57,14L6.39,16.15C5.67,15.24 5.19,14.16 5,13V13M16,13H19C18.81,14.15 18.33,15.24 17.61,16.16L15.5,14L16,13M10,15.5L11,16V19C9.83,18.8 8.73,18.31 7.8,17.57L10,15.5M14,15.5L16.19,17.57C15.28,18.25 14.19,18.83 13,19V16L14,15.5Z"; +var mdiBuffer = "M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z"; +var mdiBuffet = "M9 14C9.55 14 10 14.45 10 15C10 15.55 9.55 16 9 16C8.45 16 8 15.55 8 15C8 14.45 8.45 14 9 14M15 14C15.55 14 16 14.45 16 15C16 15.55 15.55 16 15 16C14.45 16 14 15.55 14 15C14 14.45 14.45 14 15 14M3 22L4 19H3C2.45 19 2 18.55 2 18V12C2 11.45 2.45 11 3 11H21C21.55 11 22 11.45 22 12V18C22 18.55 21.55 19 21 19H20L21 22H19L18 19H6L5 22H3M13 13V17H20V13H13M4 13V17H11V13H4Z"; +var mdiBug = "M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z"; +var mdiBugCheck = "M18,7H15.19C14.74,6.2 14.12,5.5 13.37,5L15,3.41L13.59,2L11.42,4.17C10.96,4.06 10.5,4 10,4C9.5,4 9.05,4.06 8.59,4.17L6.41,2L5,3.41L6.62,5C5.87,5.5 5.26,6.21 4.81,7H2V9H4.09C4.03,9.33 4,9.66 4,10V11H2V13H4V14C4,14.34 4.03,14.67 4.09,15H2V17H4.81C6.26,19.5 9.28,20.61 12,19.65C12,19.43 12,19.22 12,19C12,16.46 13.61,14.2 16,13.35V13H18V11H16V10C16,9.66 15.97,9.33 15.91,9H18V7M12,15H8V13H12V15M12,11H8V9H12V11M17.75,22.16L15,19.16L16.16,18L17.75,19.59L21.34,16L22.5,17.41L17.75,22.16Z"; +var mdiBugCheckOutline = "M18,7H15.19C14.74,6.2 14.12,5.5 13.37,5L15,3.41L13.59,2L11.42,4.17C10.96,4.06 10.5,4 10,4C9.5,4 9.05,4.06 8.59,4.17L6.41,2L5,3.41L6.62,5C5.87,5.5 5.26,6.21 4.81,7H2V9H4.09C4.03,9.33 4,9.66 4,10V11H2V13H4V14C4,14.34 4.03,14.67 4.09,15H2V17H4.81C6.26,19.5 9.28,20.61 12,19.65C12,19.43 12,19.22 12,19C12,18.43 12.09,17.86 12.25,17.31C11.59,17.76 10.8,18 10,18A4,4 0 0,1 6,14V10A4,4 0 0,1 10,6A4,4 0 0,1 14,10V14C14,14.19 14,14.39 13.95,14.58C14.54,14.04 15.24,13.62 16,13.35V13H18V11H16V10C16,9.66 15.97,9.33 15.91,9H18V7M21.34,16L17.75,19.59L16.16,18L15,19.16L17.75,22.16L22.5,17.41L21.34,16M12,9V11H8V9H12M12,13V15H8V13H12Z"; +var mdiBugOutline = "M20,8H17.19C16.74,7.2 16.12,6.5 15.37,6L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.05,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6C7.87,6.5 7.26,7.21 6.81,8H4V10H6.09C6.03,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.03,15.67 6.09,16H4V18H6.81C8.47,20.87 12.14,21.84 15,20.18C15.91,19.66 16.67,18.9 17.19,18H20V16H17.91C17.97,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.97,10.33 17.91,10H20V8M16,15A4,4 0 0,1 12,19A4,4 0 0,1 8,15V11A4,4 0 0,1 12,7A4,4 0 0,1 16,11V15M14,10V12H10V10H14M10,14H14V16H10V14Z"; +var mdiBugle = "M21,6C21,11 12,11 12,11C12,11 6,11 5,11C4,11 3,10 3,10H2V14H3C3,14 4,13 5,13C5.2,13 5.7,13 6.3,13C5.5,13.5 5,14.2 5,15C5,16.8 7.3,18 10.5,18C13.7,18 16,16.8 16,15C16,14.4 15.7,13.8 15.2,13.3C17.8,13.8 21,15 21,18H22V6H21M10.5,16.7C8.2,16.7 6.4,15.9 6.4,15C6.4,14.1 8.2,13.3 10.5,13.3C12.8,13.3 14.6,14.1 14.6,15C14.6,15.9 12.8,16.7 10.5,16.7Z"; +var mdiBulldozer = "M4,4A1,1 0 0,0 3,5V10C2.54,10 2.14,10.31 2.03,10.76V13.97H2.29C2.65,13.37 3.3,13 4,13H13C13.7,13 14.35,13.37 14.71,13.97H16.03L16,11V11A1,1 0 0,0 15,10H13V8A1,1 0 0,0 12,7A1,1 0 0,0 11,8V10H9V5A1,1 0 0,0 8,4H4M5,6H7V10L7,11H5V6M17,11V19H22V18L19,17L18,11H17M4,15A2,2 0 0,0 2,17A2,2 0 0,0 4,19H13A2,2 0 0,0 15,17A2,2 0 0,0 13,15H4Z"; +var mdiBullet = "M14,22H10V21H14V22M13,10V7H11V10L10,11.5V20H14V11.5L13,10M12,2C12,2 11,3 11,5V6H13V5C13,5 13,3 12,2Z"; +var mdiBulletinBoard = "M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z"; +var mdiBullhorn = "M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z"; +var mdiBullhornOutline = "M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M15,15.6L13,14H4V10H13L15,8.4V15.6M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z"; +var mdiBullseye = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiBullseyeArrow = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,10.84 21.79,9.69 21.39,8.61L19.79,10.21C19.93,10.8 20,11.4 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.6,4 13.2,4.07 13.79,4.21L15.4,2.6C14.31,2.21 13.16,2 12,2M19,2L15,6V7.5L12.45,10.05C12.3,10 12.15,10 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.85 14,11.7 13.95,11.55L16.5,9H18L22,5H19V2M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12H16A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8V6Z"; +var mdiBulma = "M11.38 2L6.38 7L5.13 15.75L11.38 22L18.88 17L13.88 12L17.63 8.25L11.38 2Z"; +var mdiBunkBed = "M1 2V23H3V21H21V23H23V7C23 4.79 21.21 3 19 3H10V8H3V2M6.5 2A2.5 2.5 0 0 0 4 4.5A2.5 2.5 0 0 0 6.5 7A2.5 2.5 0 0 0 9 4.5A2.5 2.5 0 0 0 6.5 2M3 11H21V13.56C20.41 13.21 19.73 13 19 13H10V18H3M6.5 12A2.5 2.5 0 0 0 4 14.5A2.5 2.5 0 0 0 6.5 17A2.5 2.5 0 0 0 9 14.5A2.5 2.5 0 0 0 6.5 12Z"; +var mdiBunkBedOutline = "M1 2H3V9H10V3H19C21.2 3 23 4.8 23 7V23H21V21H3V23H1V2M12 5V9H21V7C21 5.9 20.1 5 19 5H12M3 11V19H10V13H19C19.7 13 20.4 13.2 21 13.6V11H3M6.5 13C7.9 13 9 14.1 9 15.5S7.9 18 6.5 18 4 16.9 4 15.5 5.1 13 6.5 13M6.5 14.6C6 14.6 5.6 15 5.6 15.5S6 16.4 6.5 16.4 7.4 16 7.4 15.5 7 14.6 6.5 14.6M12 15V19H21V17C21 15.9 20.1 15 19 15H12M6.5 3C7.9 3 9 4.1 9 5.5S7.9 8 6.5 8 4 6.9 4 5.5 5.1 3 6.5 3M6.5 4.6C6 4.6 5.6 5 5.6 5.5S6 6.4 6.5 6.4 7.4 6 7.4 5.5 7 4.6 6.5 4.6Z"; +var mdiBus = "M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z"; +var mdiBusAlert = "M16,1A7,7 0 0,1 23,8C23,11.53 20.39,14.45 17,14.93V18C17,18.84 16.65,19.58 15.96,20.2V22C15.96,22.27 15.87,22.5 15.68,22.71C15.5,22.91 15.26,23 15,23H14C13.71,23 13.47,22.91 13.27,22.71C13.06,22.5 12.96,22.27 12.96,22V21H5.04V22C5.04,22.27 4.94,22.5 4.73,22.71C4.53,22.91 4.29,23 4,23H3C2.74,23 2.5,22.91 2.32,22.71C2.13,22.5 2.04,22.27 2.04,22V20.2C1.35,19.58 1,18.84 1,18V8C1,6.42 1.7,5.35 3.07,4.8C4.44,4.26 6.42,4 9,4L10.23,4.03C11.5,2.2 13.61,1 16,1M16,3A5,5 0 0,0 11,8A5,5 0 0,0 16,13A5,5 0 0,0 21,8A5,5 0 0,0 16,3M15,10H17V12H15V10M15,4H17V9H15V4M3,13H11.09C9.8,11.72 9,9.96 9,8H3V13M4.5,16C3.69,16 3,16.67 3,17.5A1.5,1.5 0 0,0 4.5,19C5.35,19 6,18.33 6,17.5A1.5,1.5 0 0,0 4.5,16M13.5,16C12.65,16 12,16.67 12,17.5A1.5,1.5 0 0,0 13.5,19C14.31,19 15,18.33 15,17.5A1.5,1.5 0 0,0 13.5,16Z"; +var mdiBusArticulatedEnd = "M21.5,6L20,7.5L21.5,9L20,10.5L21.5,12L20,13.5L21.5,15H12.5A3,3 0 0,1 9.5,18A3,3 0 0,1 6.5,15H2.5V8C2.5,6.89 3.39,6 4.5,6H21.5M18.5,7.5H15V10H18.5V7.5M13.5,7.5H9.5V10H13.5V7.5M8,7.5H4V10H8V7.5M9.5,13.5A1.5,1.5 0 0,0 8,15A1.5,1.5 0 0,0 9.5,16.5A1.5,1.5 0 0,0 11,15A1.5,1.5 0 0,0 9.5,13.5Z"; +var mdiBusArticulatedFront = "M1,6L2.5,7.5L1,9L2.5,10.5L1,12L2.5,13.5L1,15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V8C23,6.89 22.11,6 21,6H1M4,7.5H6.5V10H4V7.5M8,7.5H12V10H8V7.5M13.5,7.5H17.5V10H13.5V7.5M19,7.5H21.5V13L19,11V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiBusClock = "M16.5,4V8.25L19.36,9.94L18.61,11.16L15,9V4H16.5M16,13C17.36,13 18.54,12.5 19.5,11.53C20.5,10.56 21,9.39 21,8C21,6.64 20.5,5.46 19.5,4.5C18.54,3.5 17.36,3 16,3C14.61,3 13.44,3.5 12.47,4.5C11.5,5.46 11,6.64 11,8C11,9.39 11.5,10.56 12.47,11.53C13.44,12.5 14.61,13 16,13M13.5,19C13.94,19 14.3,18.84 14.58,18.54C14.86,18.24 15,17.89 15,17.5C15,17.08 14.86,16.73 14.58,16.43C14.3,16.13 13.94,16 13.5,16C13.06,16 12.7,16.13 12.42,16.43C12.14,16.73 12,17.08 12,17.5C12,17.89 12.14,18.24 12.42,18.54C12.7,18.84 13.06,19 13.5,19M3,13H11.11C9.7,11.64 9,10 9,8H3V13M4.5,19C4.94,19 5.3,18.84 5.58,18.54C5.86,18.24 6,17.89 6,17.5C6,17.08 5.86,16.73 5.58,16.43C5.3,16.13 4.94,16 4.5,16C4.06,16 3.7,16.13 3.42,16.43C3.14,16.73 3,17.08 3,17.5C3,17.89 3.14,18.24 3.42,18.54C3.7,18.84 4.06,19 4.5,19M16,1C17.92,1 19.58,1.67 20.95,3.05C22.33,4.42 23,6.08 23,8C23,9.77 22.44,11.29 21.28,12.59C20.13,13.88 18.7,14.66 17,14.91V18C17,18.84 16.67,19.58 16,20.2V22C16,22.27 15.89,22.5 15.7,22.71C15.5,22.91 15.28,23 15,23H14C13.73,23 13.5,22.91 13.29,22.71C13.09,22.5 13,22.27 13,22V21H5V22C5,22.27 4.91,22.5 4.71,22.71C4.5,22.91 4.27,23 4,23H3C2.72,23 2.5,22.91 2.3,22.71C2.11,22.5 2,22.27 2,22V20.2C1.33,19.58 1,18.84 1,18V8C1,6.42 1.67,5.35 3.05,4.8C4.42,4.26 6.41,4 9,4C9.13,4 9.33,4 9.61,4C9.89,4 10.09,4.03 10.22,4.03C11.63,2 13.55,1 16,1Z"; +var mdiBusDoubleDecker = "M3,4C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V14C23,12.89 22.11,12 21,12H19V9.5H23V6C23,4.89 22.11,4 21,4H3M2.5,5.5H6.5V8H2.5V5.5M8,5.5H12V8H8V5.5M13.5,5.5H17.5V8H13.5V5.5M19,5.5H21.5V8H19V5.5M13.5,9.5H17.5V12H13.5V9.5M2.5,9.5H6.5V12H2.5V9.5M8,9.5H12V12H8V9.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; +var mdiBusMarker = "M12 2C7.58 2 4 2.5 4 6V16A3 3 0 0 0 5 18.22V20A1 1 0 0 0 6 21H7A1 1 0 0 0 8 20V19H14A8 8 0 0 1 13 15.5A5.55 5.55 0 0 1 15.38 11H6V6H18V10A4.07 4.07 0 0 1 18.5 10A5.34 5.34 0 0 1 20 10.22V6C20 2.5 16.42 2 12 2M7.5 14A1.5 1.5 0 1 1 6 15.5A1.5 1.5 0 0 1 7.5 14M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8Z"; +var mdiBusMultiple = "M10 5C5.58 5 2 5.5 2 9V19C2 19.85 2.37 20.66 3 21.22V23C3 23.55 3.45 24 4 24H5C5.55 24 6 23.55 6 23V22H14V23C14 23.55 14.45 24 15 24H16C16.55 24 17 23.55 17 23V21.22C17.63 20.66 18 19.85 18 19V9C18 5.5 14.42 5 10 5M5.5 20C4.67 20 4 19.33 4 18.5S4.67 17 5.5 17 7 17.67 7 18.5 6.33 20 5.5 20M14.5 20C13.67 20 13 19.33 13 18.5S13.67 17 14.5 17 16 17.67 16 18.5 15.33 20 14.5 20M16 14H4V9H16V14M22 5V15C22 15.85 21.63 16.66 21 17.22V19C21 19.55 20.55 20 20 20H19.88C19.95 19.68 20 19.35 20 19V9C20 3 13 3 10 3C9.09 3 7.8 3 6.46 3.17C7.55 1.32 10.5 1 14 1C18.42 1 22 1.5 22 5Z"; +var mdiBusSchool = "M3,6C1.89,6 1,6.89 1,8V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19V8C19,6.89 18.11,6 17,6H3M13.5,7.5H17.5V10H13.5V7.5M2.5,7.5H6.5V10H2.5V7.5M8,7.5H12V10H8V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiBusSide = "M3,6C1.89,6 1,6.89 1,8V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V8C23,6.89 22.11,6 21,6H3M2.5,7.5H6.5V10H2.5V7.5M8,7.5H12V10H8V7.5M13.5,7.5H17.5V10H13.5V7.5M19,7.5H21.5V13L19,11V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiBusStop = "M22 7V16C22 16.71 21.62 17.36 21 17.72V19.25C21 19.66 20.66 20 20.25 20H19.75C19.34 20 19 19.66 19 19.25V18H12V19.25C12 19.66 11.66 20 11.25 20H10.75C10.34 20 10 19.66 10 19.25V17.72C9.39 17.36 9 16.71 9 16V7C9 4 12 4 15.5 4S22 4 22 7M13 15C13 14.45 12.55 14 12 14S11 14.45 11 15 11.45 16 12 16 13 15.55 13 15M20 15C20 14.45 19.55 14 19 14S18 14.45 18 15 18.45 16 19 16 20 15.55 20 15M20 7H11V11H20V7M7 9.5C6.97 8.12 5.83 7 4.45 7.05C3.07 7.08 1.97 8.22 2 9.6C2.03 10.77 2.86 11.77 4 12V20H5V12C6.18 11.76 7 10.71 7 9.5Z"; +var mdiBusStopCovered = "M20 3H7V2H6A1.78 1.78 0 0 0 4.59 3H2V5H3.73C2 10.58 2 22 2 22H7V5H20M22 8.5A2.5 2.5 0 1 0 19 11V22H20V11A2.5 2.5 0 0 0 22 8.5M15 11.5V16H14V22H12.5V17H11.5V22H10V16H9V11.5A1.5 1.5 0 0 1 10.5 10H13.5A1.5 1.5 0 0 1 15 11.5M12 6.5A1.5 1.5 0 1 0 13.5 8A1.5 1.5 0 0 0 12 6.5Z"; +var mdiBusStopUncovered = "M6 22V19H4V22H2V14A1 1 0 0 1 3 13A1 1 0 0 1 4 14V17H7A1 1 0 0 1 8 18V22M20 11V22H19V11A2.5 2.5 0 1 1 20 11M15 11.55V16H14V22H12.5V17H11.5V22H10V16H9V11.5A1.5 1.5 0 0 1 10.5 10H13.5A1.5 1.5 0 0 1 15 11.5M12 6.55A1.5 1.5 0 1 0 13.5 8A1.5 1.5 0 0 0 12 6.5Z"; +var mdiButterfly = "M13 21H11V6L9.03 3.97L10 3L12 5L14 3L15 4L13 6V21M7 6C4.24 6 2 8.24 2 11C2 12.64 2.79 14.09 4 15H4V17C4 19.21 5.79 21 8 21C8.72 21 9.39 20.81 9.97 20.5L10 20.46V7C9.16 6.37 8.13 6 7 6M6.5 12.5L5 11L6.5 9.5L8 11L6.5 12.5M22 11C22 8.24 19.76 6 17 6C15.88 6 14.85 6.37 14 7L14 7V20.46C14.59 20.81 15.27 21 16 21C18.21 21 20 19.21 20 17V15H20C21.21 14.09 22 12.64 22 11M17.5 12.5L16 11L17.5 9.5L19 11L17.5 12.5Z"; +var mdiButterflyOutline = "M13 21H11V6L9.03 3.97L10 3L12 5L14 3L15 4L13 6V21M14 9H14V7C14.84 6.37 15.88 6 17 6C19.76 6 22 8.24 22 11C22 12.64 21.21 14.09 20 15H20V17C20 19.21 18.21 21 16 21C15.27 21 14.59 20.81 14 20.46V18.46C14.59 18.81 15.27 19 16 19C17.1 19 18 18.1 18 17V13.83C19.17 13.42 20 12.31 20 11C20 9.35 18.67 8 17 8H17C15.88 8 14.84 8.37 14 9M10 9H10C9.16 8.37 8.13 8 7 8H7C5.33 8 4 9.35 4 11C4 12.31 4.84 13.42 6 13.83V17C6 18.1 6.9 19 8 19C8.73 19 9.41 18.81 10 18.46V20.46C9.41 20.81 8.73 21 8 21C5.79 21 4 19.21 4 17V15H4C2.79 14.09 2 12.64 2 11C2 8.24 4.24 6 7 6C8.13 6 9.16 6.37 10 7V9M9 11L7.5 9.5L6 11L7.5 12.5L9 11M18 11L16.5 9.5L15 11L16.5 12.5L18 11Z"; +var mdiCableData = "M7.05 3.5C5.68 4.88 5.68 7.1 7.05 8.47L15.54 16.95C16.12 17.54 16.12 18.5 15.54 19.07C14.95 19.66 14 19.66 13.41 19.07L9.17 14.83L10.23 13.77L6.7 10.23L6.34 10.59L4.93 9.17C4.54 8.78 3.91 8.78 3.5 9.17L2.1 10.59C1.71 11 1.71 11.61 2.1 12L3.5 13.41L3.16 13.77L6.7 17.3L7.76 16.24L12 20.5C13.37 21.85 15.58 21.85 16.95 20.5C18.32 19.12 18.32 16.9 16.95 15.54L8.46 7.05C7.88 6.46 7.88 5.5 8.46 4.93C9.05 4.34 10 4.34 10.59 4.93L14.83 9.17L13.77 10.23L17.3 13.77L17.66 13.41L19.07 14.83C19.46 15.22 20.1 15.22 20.5 14.83L21.9 13.41C22.29 13 22.29 12.39 21.9 12L20.5 10.59L20.84 10.23L17.3 6.7L16.24 7.76L12 3.5C10.63 2.15 8.42 2.15 7.05 3.5M2.81 11.29L4.22 9.88L5.64 11.29L4.22 12.71M18.36 12.71L19.78 11.29L21.19 12.71L19.78 14.12Z"; +var mdiCached = "M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12"; +var mdiCactus = "M14,16V21H10V18H9A3,3 0 0,1 6,15V12A1,1 0 0,1 7,11A1,1 0 0,1 8,12V15C8,15.56 8.45,16 9,16H10V6A2,2 0 0,1 12,4A2,2 0 0,1 14,6V14H15A1,1 0 0,0 16,13V11A1,1 0 0,1 17,10A1,1 0 0,1 18,11V13A3,3 0 0,1 15,16H14Z"; +var mdiCake = "M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z"; +var mdiCakeLayered = "M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z"; +var mdiCakeVariant = "M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z"; +var mdiCalculator = "M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z"; +var mdiCalculatorVariant = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M13 7.1L14.1 6L15.5 7.4L16.9 6L18 7.1L16.6 8.5L18 9.9L16.9 11L15.5 9.6L14.1 11L13 9.9L14.4 8.5L13 7.1M6.2 7.7H11.2V9.2H6.2V7.7M11.5 16H9.5V18H8V16H6V14.5H8V12.5H9.5V14.5H11.5V16M18 17.2H13V15.7H18V17.2M18 14.8H13V13.3H18V14.8Z"; +var mdiCalculatorVariantOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M19 19H5V5H19V19M6.2 7.7H11.2V9.2H6.2V7.7M13 15.8H18V17.3H13V15.8M13 13.2H18V14.7H13V13.2M8 18H9.5V16H11.5V14.5H9.5V12.5H8V14.5H6V16H8V18M14.1 10.9L15.5 9.5L16.9 10.9L18 9.9L16.6 8.5L18 7.1L16.9 6L15.5 7.4L14.1 6L13 7.1L14.4 8.5L13 9.9L14.1 10.9Z"; +var mdiCalendar = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z"; +var mdiCalendarAccount = "M12,10C14,10 15,12.42 13.59,13.84C12.17,15.26 9.75,14.25 9.75,12.25C9.75,11 10.75,10 12,10M16.5,19H7.5V17.88C7.5,16.63 9.5,15.63 12,15.63C14.5,15.63 16.5,16.63 16.5,17.88M19,20H5V9H19M16,2V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4H18V2H16Z"; +var mdiCalendarAccountOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19M12,11C14,11 15,13.42 13.59,14.84C12.17,16.26 9.75,15.25 9.75,13.25C9.75,12 10.75,11 12,11M16.5,18.88V19H7.5V18.88C7.5,17.63 9.5,16.63 12,16.63C14.5,16.63 16.5,17.63 16.5,18.88Z"; +var mdiCalendarAlert = "M6 1V3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3H18V1H16V3H8V1H6M5 8H19V19H5V7M11 9V14H13V9H11M11 16V18H13V16H11Z"; +var mdiCalendarArrowLeft = "M19 3H18V1H16V3H8V1H6V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M19 19H5V8H19V19M12 10V12H16V15H12V17L8 13.5L12 10Z"; +var mdiCalendarArrowRight = "M19 3H18V1H16V3H8V1H6V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M19 19H5V8H19V19M12 17V15H8V12H12V10L16 13.5L12 17Z"; +var mdiCalendarBlank = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"; +var mdiCalendarBlankMultiple = "M21 17V8H7V17H21M21 3C22.1 3 23 3.9 23 5V17C23 18.1 22.1 19 21 19H7C5.89 19 5 18.1 5 17V5C5 3.9 5.9 3 7 3H8V1H10V3H18V1H20V3H21M3 21H17V23H3C1.89 23 1 22.1 1 21V9H3V21Z"; +var mdiCalendarBlankOutline = "M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8Z"; +var mdiCalendarCheck = "M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z"; +var mdiCalendarCheckOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M10.56,18.46L16.5,12.53L15.43,11.47L10.56,16.34L8.45,14.23L7.39,15.29L10.56,18.46Z"; +var mdiCalendarClock = "M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z"; +var mdiCalendarClockOutline = "M6 1V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H11.1C12.36 22.24 14.09 23 16 23C19.87 23 23 19.87 23 16C23 14.09 22.24 12.36 21 11.1V5C21 3.9 20.11 3 19 3H18V1H16V3H8V1M5 5H19V7H5M5 9H19V9.67C18.09 9.24 17.07 9 16 9C12.13 9 9 12.13 9 16C9 17.07 9.24 18.09 9.67 19H5M16 11.15C18.68 11.15 20.85 13.32 20.85 16C20.85 18.68 18.68 20.85 16 20.85C13.32 20.85 11.15 18.68 11.15 16C11.15 13.32 13.32 11.15 16 11.15M15 13V16.69L18.19 18.53L18.94 17.23L16.5 15.82V13Z"; +var mdiCalendarCursor = "M21.7 20.26L20.29 21.67L17.06 18.5L16 20.97L14 14L21 16L18.47 17.03L21.7 20.26M19 8H5V19H13.41L13.97 21H5C3.89 21 3 20.1 3 19L3 5C3 3.9 3.89 3 5 3H6V1H8V3H16V1H18V3H19C20.1 3 21 3.9 21 5V13.95L19 13.35V8M12 10V15H7V10H12Z"; +var mdiCalendarEdit = "M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H10V19H5V8H19V9H21V5A2,2 0 0,0 19,3M21.7,13.35L20.7,14.35L18.65,12.35L19.65,11.35C19.85,11.14 20.19,11.13 20.42,11.35L21.7,12.63C21.89,12.83 21.89,13.15 21.7,13.35M12,18.94L18.07,12.88L20.12,14.88L14.06,21H12V18.94Z"; +var mdiCalendarEnd = "M22 14V22H20V18L16 22V19H11V17H16V14L20 18V14H22M5 19L9 19V21L5 21C3.9 21 3 20.1 3 19V5C3 3.89 3.9 3 5 3H6V.998H8V3H16V.998H18V3H19C20.11 3 21 3.89 21 5L21 12H19V8H5V19Z"; +var mdiCalendarExport = "M12,22L16,18H13V12H11V18H8M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H8V20H5V9H19V20H16V22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4Z"; +var mdiCalendarHeart = "M19,20V9H5V20H19M16,2H18V4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2M12,18.17L11.42,17.64C9.36,15.77 8,14.54 8,13.03C8,11.8 8.97,10.83 10.2,10.83C10.9,10.83 11.56,11.15 12,11.66C12.44,11.15 13.1,10.83 13.8,10.83C15.03,10.83 16,11.8 16,13.03C16,14.54 14.64,15.77 12.58,17.64L12,18.17Z"; +var mdiCalendarImport = "M12,12L8,16H11V22H13V16H16M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H9V20H5V9H19V20H15V22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4Z"; +var mdiCalendarLock = "M13 21C13 21.35 13.07 21.69 13.18 22H5C3.9 22 3 21.11 3 20V6C3 4.89 3.89 4 5 4H6V2H8V4H16V2H18V4H19C20.1 4 21 4.89 21 6V11.78C20.42 11.38 19.74 11.13 19 11.05V9H5V20H13V21M22 17V21C22 21.55 21.55 22 21 22H16C15.45 22 15 21.55 15 21V17C15 16.45 15.45 16 16 16V15.5C16 14.12 17.12 13 18.5 13S21 14.12 21 15.5V16C21.55 16 22 16.45 22 17M20 15.5C20 14.67 19.33 14 18.5 14S17 14.67 17 15.5V16H20V15.5Z"; +var mdiCalendarLockOutline = "M13 20H5V10H19V11.05C19.74 11.13 20.42 11.38 21 11.78V6C21 4.89 20.11 4 19 4H18V2H16V4H8V2H6V4H5C3.89 4 3 4.9 3 6V20C3 21.11 3.9 22 5 22H13.18C13.07 21.69 13 21.35 13 21V20M5 6H19V8H5V6M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z"; +var mdiCalendarMinus = "M19 19V8H5V19H19M16 1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1H8V3H16V1M16 12.5V14.5H8V12.5H16Z"; +var mdiCalendarMonth = "M9,10V12H7V10H9M13,10V12H11V10H13M17,10V12H15V10H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H6V1H8V3H16V1H18V3H19M19,19V8H5V19H19M9,14V16H7V14H9M13,14V16H11V14H13M17,14V16H15V14H17Z"; +var mdiCalendarMonthOutline = "M7,12H9V14H7V12M21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19A2,2 0 0,1 21,6M5,8H19V6H5V8M19,20V10H5V20H19M15,14V12H17V14H15M11,14V12H13V14H11M7,16H9V18H7V16M15,18V16H17V18H15M11,18V16H13V18H11Z"; +var mdiCalendarMultiple = "M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z"; +var mdiCalendarMultipleCheck = "M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z"; +var mdiCalendarMultiselect = "M19,19V8H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M7,10H9V12H7V10M15,10H17V12H15V10M11,14H13V16H11V14M15,14H17V16H15V14Z"; +var mdiCalendarOutline = "M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8M12,13H17V18H12V13Z"; +var mdiCalendarPlus = "M19 19V8H5V19H19M16 1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1H8V3H16V1M11 9.5H13V12.5H16V14.5H13V17.5H11V14.5H8V12.5H11V9.5Z"; +var mdiCalendarQuestion = "M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z"; +var mdiCalendarRange = "M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z"; +var mdiCalendarRangeOutline = "M7,12H9V14H7V12M21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19A2,2 0 0,1 21,6M5,8H19V6H5V8M19,20V10H5V20H19M15,14H17V12H15V14M11,14H13V12H11V14Z"; +var mdiCalendarRefresh = "M19 3H18V1H16V3H8V1H6V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14C13.4 20.5 12.9 19.8 12.5 19H5V8H19V10.6C19.7 10.7 20.4 10.9 21 11.3V5C21 3.9 20.1 3 19 3M18 12.5C19.1 12.5 20.1 12.9 20.8 13.7L22 12.5V16.5H18L19.8 14.7C19.3 14.3 18.7 14 18 14C16.6 14 15.5 15.1 15.5 16.5S16.6 19 18 19C18.8 19 19.5 18.6 20 18H21.7C21.1 19.5 19.7 20.5 18 20.5C15.8 20.5 14 18.7 14 16.5S15.8 12.5 18 12.5Z"; +var mdiCalendarRefreshOutline = "M19 3H18V1H16V3H8V1H6V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14C13.4 20.5 12.9 19.8 12.5 19H5V9H19V10.6C19.7 10.7 20.4 10.9 21 11.3V5C21 3.9 20.1 3 19 3M19 7H5V5H19M18 12.5C19.1 12.5 20.1 12.9 20.8 13.7L22 12.5V16.5H18L19.8 14.7C19.3 14.3 18.7 14 18 14C16.6 14 15.5 15.1 15.5 16.5S16.6 19 18 19C18.8 19 19.5 18.6 20 18H21.7C21.1 19.5 19.7 20.5 18 20.5C15.8 20.5 14 18.7 14 16.5S15.8 12.5 18 12.5Z"; +var mdiCalendarRemove = "M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z"; +var mdiCalendarRemoveOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M8.23,17.41L9.29,18.47L11.73,16.03L14.17,18.47L15.23,17.41L12.79,14.97L15.23,12.53L14.17,11.47L11.73,13.91L9.29,11.47L8.23,12.53L10.67,14.97L8.23,17.41Z"; +var mdiCalendarSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19,8H5V19H9.5C9.81,19.75 10.26,20.42 10.81,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V13.03C20.5,12.22 19.8,11.54 19,11V8Z"; +var mdiCalendarStar = "M19,20H5V9H19M16,2V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4H18V2M10.88,13H7.27L10.19,15.11L9.08,18.56L12,16.43L14.92,18.56L13.8,15.12L16.72,13H13.12L12,9.56L10.88,13Z"; +var mdiCalendarStart = "M2 14H4V17H9V14L13 18L9 22V19H4V22H2V14M19 19V8H5V12H3L3 5C3 3.89 3.89 3 5 3H6V.998H8V3H16V.998H18V3H19C20.1 3 21 3.89 21 5V19C21 20.1 20.1 21 19 21L12.83 21L14.83 19L19 19Z"; +var mdiCalendarSync = "M18,11V12.5C21.19,12.5 23.09,16.05 21.33,18.71L20.24,17.62C21.06,15.96 19.85,14 18,14V15.5L15.75,13.25L18,11M18,22V20.5C14.81,20.5 12.91,16.95 14.67,14.29L15.76,15.38C14.94,17.04 16.15,19 18,19V17.5L20.25,19.75L18,22M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14C13.36,20.45 12.86,19.77 12.5,19H5V8H19V10.59C19.71,10.7 20.39,10.94 21,11.31V5A2,2 0 0,0 19,3Z"; +var mdiCalendarSyncOutline = "M18,11V12.5C21.19,12.5 23.09,16.05 21.33,18.71L20.24,17.62C21.06,15.96 19.85,14 18,14V15.5L15.75,13.25L18,11M18,22V20.5C14.81,20.5 12.91,16.95 14.67,14.29L15.76,15.38C14.94,17.04 16.15,19 18,19V17.5L20.25,19.75L18,22M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14C13.36,20.45 12.86,19.77 12.5,19H5V9H19V10.59C19.71,10.7 20.39,10.94 21,11.31V5A2,2 0 0,0 19,3M19,7H5V5H19"; +var mdiCalendarText = "M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z"; +var mdiCalendarTextOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M7,12H17V14H7V12M7,16H14V18H7V16Z"; +var mdiCalendarToday = "M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiCalendarWeek = "M6 1H8V3H16V1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1M5 8V19H19V8H5M7 10H17V12H7V10Z"; +var mdiCalendarWeekBegin = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M9,10H7V17H9V10Z"; +var mdiCalendarWeekend = "M19,20V9H5V20H19M16,2H18V4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2M7,18V11H9V18H7M15,11H17V18H15V11Z"; +var mdiCalendarWeekendOutline = "M19,4A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19M19,20V10H5V20H19M19,8V6H5V8H19M7,12H9V18H7V12M15,12H17V18H15V12Z"; +var mdiCallMade = "M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5"; +var mdiCallMerge = "M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5"; +var mdiCallMissed = "M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41"; +var mdiCallReceived = "M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41"; +var mdiCallSplit = "M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29"; +var mdiCamcorder = "M7 2C4.24 2 2 4.24 2 7V20C2 21.1 2.9 22 4 22H10C11.1 22 12 21.1 12 20V7C12 4.24 9.76 2 7 2M5 20C4.45 20 4 19.55 4 19S4.45 18 5 18 6 18.45 6 19 5.55 20 5 20M7 10C5.34 10 4 8.66 4 7S5.34 4 7 4 10 5.34 10 7 8.66 10 7 10M22 9V14C22 15.1 21.1 16 20 16H13V14H20V9H13V7H20C21.1 7 22 7.9 22 9Z"; +var mdiCamcorderOff = "M22.1 21.5L9.4 8.8L2.4 1.8L1.1 3L2.7 4.6C2.2 5.3 2 6.1 2 7V20C2 21.1 2.9 22 4 22H10C11.1 22 12 21.1 12 20V13.9L13 14.9V16H14.1L20.8 22.7L22.1 21.5M5 20C4.5 20 4 19.5 4 19S4.5 18 5 18 6 18.5 6 19 5.5 20 5 20M7 10C5.3 10 4 8.7 4 7C4 6.7 4.1 6.4 4.2 6.1L8 9.9C7.6 9.9 7.3 10 7 10M7.2 4L5.5 2.3C6 2.1 6.5 2 7 2C9.8 2 12 4.2 12 7V8.8L10 6.8C9.9 5.3 8.7 4.1 7.2 4M20 9H13V7H20C21.1 7 22 7.9 22 9V14C22 15.1 21.1 16 20 16H19.2L17.2 14H20V9Z"; +var mdiCamera = "M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z"; +var mdiCameraAccount = "M4,5H7L9,3H15L17,5H20A2,2 0 0,1 22,7V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V7A2,2 0 0,1 4,5M16,17V16C16,14.67 13.33,14 12,14C10.67,14 8,14.67 8,16V17H16M12,9A2,2 0 0,0 10,11A2,2 0 0,0 12,13A2,2 0 0,0 14,11A2,2 0 0,0 12,9Z"; +var mdiCameraBurst = "M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z"; +var mdiCameraControl = "M9,12C9,11.19 9.3,10.5 9.89,9.89C10.5,9.3 11.19,9 12,9C12.81,9 13.5,9.3 14.11,9.89C14.7,10.5 15,11.19 15,12C15,12.81 14.7,13.5 14.11,14.11C13.5,14.7 12.81,15 12,15C11.19,15 10.5,14.7 9.89,14.11C9.3,13.5 9,12.81 9,12M5.53,8.44L7.31,10.22L5.53,12L7.31,13.78L5.53,15.56L2,12L5.53,8.44M8.44,18.47L10.22,16.69L12,18.47L13.78,16.69L15.56,18.47L12,22L8.44,18.47M18.47,15.56L16.69,13.78L18.47,12L16.69,10.22L18.47,8.44L22,12L18.47,15.56M15.56,5.53L13.78,7.31L12,5.53L10.22,7.31L8.44,5.53L12,2L15.56,5.53Z"; +var mdiCameraEnhance = "M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25"; +var mdiCameraEnhanceOutline = "M12,10L11.06,12.06L9,13L11.06,13.94L12,16L12.94,13.94L15,13L12.94,12.06L12,10M20,5H16.83L15,3H9L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M20,19H4V7H8.05L8.64,6.35L9.88,5H14.12L15.36,6.35L15.95,7H20V19M12,8A5,5 0 0,0 7,13A5,5 0 0,0 12,18A5,5 0 0,0 17,13A5,5 0 0,0 12,8M12,16A3,3 0 0,1 9,13A3,3 0 0,1 12,10A3,3 0 0,1 15,13A3,3 0 0,1 12,16Z"; +var mdiCameraFlip = "M20 5H17L15 3H9L7 5H4C2.9 5 2 5.9 2 7V19C2 20.11 2.9 21 4 21H20C21.11 21 22 20.11 22 19V7C22 5.9 21.11 5 20 5M5 12H7.1C7.65 9.29 10.29 7.55 13 8.1C13.76 8.25 14.43 8.59 15 9L13.56 10.45C13.11 10.17 12.58 10 12 10C10.74 10 9.6 10.8 9.18 12H11L8 15L5 12M16.91 14C16.36 16.71 13.72 18.45 11 17.9C10.25 17.74 9.58 17.41 9 17L10.44 15.55C10.9 15.83 11.43 16 12 16C13.27 16 14.41 15.2 14.83 14H13L16 11L19 14H16.91Z"; +var mdiCameraFlipOutline = "M20 5H16.83L15 3H9L7.17 5H4C2.9 5 2 5.9 2 7V19C2 20.11 2.9 21 4 21H20C21.11 21 22 20.11 22 19V7C22 5.9 21.11 5 20 5M20 19H4V7H8.05L9.88 5H14.12L16 7H20V19M5 12H7.1C7.65 9.29 10.29 7.55 13 8.1C13.76 8.25 14.43 8.59 15 9L13.56 10.45C13.11 10.17 12.58 10 12 10C10.74 10 9.6 10.8 9.18 12H11L8 15L5 12M16.91 14C16.36 16.71 13.72 18.45 11 17.9C10.25 17.74 9.58 17.41 9 17L10.44 15.55C10.9 15.83 11.43 16 12 16C13.27 16 14.41 15.2 14.83 14H13L16 11L19 14H16.91Z"; +var mdiCameraFront = "M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z"; +var mdiCameraFrontVariant = "M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z"; +var mdiCameraGopro = "M20,5H15A2,2 0 0,0 13,7V12A2,2 0 0,0 15,14H20A2,2 0 0,0 22,12V7A2,2 0 0,0 20,5M17.5,12.5A3,3 0 0,1 14.5,9.5A3,3 0 0,1 17.5,6.5A3,3 0 0,1 20.5,9.5A3,3 0 0,1 17.5,12.5M17.5,11A1.5,1.5 0 0,1 16,9.5A1.5,1.5 0 0,1 17.5,8A1.5,1.5 0 0,1 19,9.5A1.5,1.5 0 0,1 17.5,11M12,15V5H4A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V15H12M10,12H4V7H10V12Z"; +var mdiCameraImage = "M4,5H7L9,3H15L17,5H20A2,2 0 0,1 22,7V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V7A2,2 0 0,1 4,5M13.09,9.45L11.05,12.18L12.6,14.25L11.73,14.91L9.27,11.64L6,16H18L13.09,9.45Z"; +var mdiCameraIris = "M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z"; +var mdiCameraMeteringCenter = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5M12,7.5C14.14,7.5 15.93,9 16.39,11H14.83C14.42,9.83 13.31,9 12,9C10.69,9 9.58,9.83 9.17,11H7.61C8.07,9 9.86,7.5 12,7.5M12,16.5C9.86,16.5 8.07,15 7.61,13H9.17C9.58,14.17 10.69,15 12,15C13.31,15 14.42,14.17 14.83,13H16.39C15.93,15 14.14,16.5 12,16.5Z"; +var mdiCameraMeteringMatrix = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M5.5,7.5H11V9.17C10.15,9.47 9.47,10.15 9.17,11H5.5V7.5M18.5,7.5V11H14.83C14.53,10.15 13.85,9.47 13,9.17V7.5H18.5M18.5,16.5H13V14.83C13.85,14.53 14.53,13.85 14.83,13H18.5V16.5M5.5,16.5V13H9.17C9.47,13.85 10.15,14.53 11,14.83V16.5H5.5M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5Z"; +var mdiCameraMeteringPartial = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,7.5C14.14,7.5 15.93,9 16.39,11H14.83C14.42,9.83 13.31,9 12,9C10.69,9 9.58,9.83 9.17,11H7.61C8.07,9 9.86,7.5 12,7.5M12,16.5C9.86,16.5 8.07,15 7.61,13H9.17C9.58,14.17 10.69,15 12,15C13.31,15 14.42,14.17 14.83,13H16.39C15.93,15 14.14,16.5 12,16.5Z"; +var mdiCameraMeteringSpot = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5Z"; +var mdiCameraOff = "M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z"; +var mdiCameraOutline = "M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V6H8.05L9.88,4H14.12L15.95,6H20V18M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15Z"; +var mdiCameraPartyMode = "M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; +var mdiCameraPlus = "M3 4V1H5V4H8V6H5V9H3V6H0V4M6 10V7H9V4H16L17.8 6H21C22.1 6 23 6.9 23 8V20C23 21.1 22.1 22 21 22H5C3.9 22 3 21.1 3 20V10M13 19C17.45 19 19.69 13.62 16.54 10.46C13.39 7.31 8 9.55 8 14C8 16.76 10.24 19 13 19M9.8 14C9.8 16.85 13.25 18.28 15.26 16.26C17.28 14.25 15.85 10.8 13 10.8C11.24 10.8 9.8 12.24 9.8 14Z"; +var mdiCameraPlusOutline = "M21 6H17.8L16 4H10V6H15.1L17 8H21V20H5V11H3V20C3 21.1 3.9 22 5 22H21C22.1 22 23 21.1 23 20V8C23 6.9 22.1 6 21 6M8 14C8 18.45 13.39 20.69 16.54 17.54C19.69 14.39 17.45 9 13 9C10.24 9 8 11.24 8 14M13 11C14.64 11.05 15.95 12.36 16 14C15.95 15.64 14.64 16.95 13 17C11.36 16.95 10.05 15.64 10 14C10.05 12.36 11.36 11.05 13 11M5 6H8V4H5V1H3V4H0V6H3V9H5"; +var mdiCameraRear = "M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z"; +var mdiCameraRearVariant = "M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z"; +var mdiCameraRetake = "M20,5H17L15,3H9L7,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M12,18C10.92,18 9.86,17.65 9,17L10.44,15.56C10.91,15.85 11.45,16 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10C10.74,10 9.6,10.8 9.18,12H11L8,15L5,12H7.1C7.65,9.29 10.29,7.55 13,8.1C15.7,8.65 17.45,11.29 16.9,14C16.42,16.33 14.38,18 12,18Z"; +var mdiCameraRetakeOutline = "M20,5H16.83L15,3H9L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M20,19H4V7H8.05L9.88,5H14.12L16,7H20V19M12,18C10.92,18 9.86,17.65 9,17L10.44,15.56C10.91,15.85 11.45,16 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10C10.74,10 9.6,10.8 9.18,12H11L8,15L5,12H7.1C7.65,9.29 10.29,7.55 13,8.1C15.7,8.65 17.45,11.29 16.9,14C16.42,16.33 14.38,18 12,18Z"; +var mdiCameraSwitch = "M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; +var mdiCameraSwitchOutline = "M20 4H16.8L15 2H9L7.2 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M9.9 4H14.1L15.9 6H20V18H4V6H8.1M15 11H9V8.5L5.5 12L9 15.5V13H15V15.5L18.5 12L15 8.5V11Z"; +var mdiCameraTimer = "M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z"; +var mdiCameraWireless = "M12,10.8A3.2,3.2 0 0,1 15.2,14A3.2,3.2 0 0,1 12,17.2A3.2,3.2 0 0,1 8.8,14A3.2,3.2 0 0,1 12,10.8M16,3.33V2A6,6 0 0,1 22,8H20.67C20.67,5.42 18.58,3.33 16,3.33M16,6V4.67C17.84,4.67 19.33,6.16 19.33,8H18C18,6.89 17.11,6 16,6M17,9H22V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H7.17L9,4H15V7C16.11,7 17,7.89 17,9M12,19A5,5 0 0,0 17,14A5,5 0 0,0 12,9A5,5 0 0,0 7,14A5,5 0 0,0 12,19Z"; +var mdiCameraWirelessOutline = "M20,9V20H4V8H8.05L9.88,6H15V4H9L7.17,6H4A2,2 0 0,0 2,8V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V9H20M20.67,8H22C22,4.68 19.31,2 16,2V3.33C18.58,3.33 20.66,5.41 20.67,8M18,8H19.33C19.32,6.15 17.84,4.67 16,4.67V6C17.11,6 18,6.89 18,8M7,14A5,5 0 0,0 12,19A5,5 0 0,0 17,14A5,5 0 0,0 12,9A5,5 0 0,0 7,14M15,14A3,3 0 0,1 12,17A3,3 0 0,1 9,14A3,3 0 0,1 12,11A3,3 0 0,1 15,14Z"; +var mdiCampfire = "M15.9,18.5L21.9,20.1L21.5,22L12.1,19.5L2.7,22L2.2,20.1L8.2,18.5L2.1,16.9L2.6,15L12,17.5L21.4,15L21.9,16.9L15.9,18.5M16.07,7.92C15.91,7.7 15.71,7.5 15.5,7.33C15.05,6.9 14.5,6.59 14.06,6.13C13,5.08 12.79,3.34 13.44,2C12.79,2.17 12.18,2.54 11.67,2.95C9.84,4.46 9.11,7.1 10,9.38C10,9.45 10.04,9.53 10.04,9.62C10.04,9.78 9.93,9.92 9.79,10C9.63,10.05 9.46,10 9.33,9.9C9.28,9.86 9.25,9.82 9.22,9.77C8.42,8.74 8.29,7.26 8.84,6.07C7.65,7.06 7,8.72 7.11,10.29C7.13,10.65 7.18,11 7.3,11.36C7.41,11.8 7.59,12.23 7.82,12.61C8.57,13.86 9.9,14.76 11.32,14.94C12.84,15.14 14.46,14.85 15.63,13.79C16.93,12.59 17.4,10.67 16.71,9L16.61,8.83C16.47,8.5 16.28,8.2 16.04,7.93L16.07,7.92M13.83,12.47C13.63,12.65 13.31,12.83 13.05,12.91C12.26,13.19 11.46,12.79 11,12.31C11.84,12.11 12.34,11.47 12.5,10.83C12.61,10.25 12.39,9.78 12.29,9.22C12.21,8.69 12.22,8.23 12.42,7.73C12.55,8 12.69,8.28 12.86,8.5C13.41,9.22 14.27,9.54 14.45,10.5C14.47,10.63 14.5,10.72 14.5,10.83C14.5,11.43 14.26,12.07 13.82,12.47"; +var mdiCancel = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z"; +var mdiCandle = "M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z"; +var mdiCandycane = "M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z"; +var mdiCannabis = "M11.5,22V17.35C11,18.13 10,19.09 8.03,19.81C8.03,19.81 8.53,18.1 9.94,16.95C8.64,17.23 6.68,17.19 4,16C4,16 6.47,14.59 9.28,14.97C7.69,14 5.7,12.08 4.17,8.11C4.17,8.11 8.67,9.34 10.91,13.14C8.88,8.24 12,2 12,2C14.43,7.47 13.91,11.1 13.12,13.1C15.37,9.33 19.83,8.11 19.83,8.11C18.3,12.08 16.31,14 14.72,14.97C17.53,14.59 20,16 20,16C17.32,17.19 15.36,17.23 14.06,16.95C15.47,18.1 15.97,19.81 15.97,19.81C14,19.09 13,18.13 12.5,17.35V22H11.5Z"; +var mdiCannabisOff = "M16.62 13.42L14.5 11.32C16.84 8.94 19.83 8.11 19.83 8.11C18.87 10.6 17.73 12.27 16.62 13.42M12 2C12 2 10.86 4.3 10.41 7.21L13.72 10.5C13.92 8.45 13.61 5.63 12 2M20.84 22.73L22.11 21.46L2.39 1.73L1.11 3L8.62 10.5C6.5 8.75 4.17 8.11 4.17 8.11C5.7 12.08 7.69 14 9.28 14.97C6.47 14.59 4 16 4 16C6.68 17.19 8.64 17.23 9.94 16.95C8.53 18.1 8.03 19.81 8.03 19.81C10 19.09 11 18.13 11.5 17.35V22H12.5V17.35C13 18.13 14 19.09 15.97 19.81C15.97 19.81 15.47 18.1 14.06 16.95C14.39 17 14.77 17.07 15.2 17.09L20.84 22.73Z"; +var mdiCapsLock = "M9.96,13.71L12,8.29L14.03,13.72M11.14,6L6.43,18H8.36L9.32,15.43H14.68L15.64,18H17.57L12.86,6H11.14M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.9,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.1,2 20,2M20,20H4V4H20V20Z"; +var mdiCar = "M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z"; +var mdiCar2Plus = "M8 16C8 13.6 9.1 11.5 10.7 10H3L4.5 5.5H15.5L16.3 8C16.9 8 17.5 8.1 18 8.3L16.9 5C16.7 4.4 16.1 4 15.5 4H4.5C3.8 4 3.3 4.4 3.1 5L1 11V19C1 19.5 1.5 20 2 20H3C3.5 20 4 19.5 4 19V18H8.3C8.1 17.4 8 16.7 8 16M4.5 15C3.7 15 3 14.3 3 13.5S3.7 12 4.5 12 6 12.7 6 13.5 5.3 15 4.5 15M16 20V18H13V17H14C15.1 17 16 16.1 16 15V14C16 12.9 15.1 12 14 12H11V14H14V15H13C11.9 15 11 15.9 11 17V20M23 17H21V19H19V17H17V15H19V13H21V15H23V17Z"; +var mdiCar3Plus = "M16.9 5C16.7 4.4 16.1 4 15.5 4H4.5C3.8 4 3.3 4.4 3.1 5L1 11V19C1 19.5 1.5 20 2 20H3C3.5 20 4 19.5 4 19V18H8.3C8.1 17.4 8 16.7 8 16C8 13.6 9.1 11.5 10.7 10H3L4.5 5.5H15.5L16.3 8C16.9 8 17.5 8.1 18 8.3L16.9 5M4.5 12C5.3 12 6 12.7 6 13.5S5.3 15 4.5 15 3 14.3 3 13.5 3.7 12 4.5 12M23 17H21V19H19V17H17V15H19V13H21V15H23V17M14.5 16C15.3 16 16 14.8 16 14C16 12.9 15.1 12 14 12H11V14H14V15H12V17H14V18H11V20H14C15.1 20 16 19.1 16 18C16 17.2 15.3 16 14.5 16Z"; +var mdiCarArrowLeft = "M12 18C12 14.69 14.69 12 18 12C19.09 12 20.12 12.3 21 12.81V12L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20C3 20.55 3.45 21 4 21H5C5.55 21 6 20.55 6 20V19H12.09C12.04 18.67 12 18.34 12 18M6.5 6.5H17.5L19 11H5L6.5 6.5M6.5 16C5.67 16 5 15.33 5 14.5S5.67 13 6.5 13 8 13.67 8 14.5 7.33 16 6.5 16M18 15V17H22V19H18V21L15 18L18 15"; +var mdiCarArrowRight = "M12 18C12 14.69 14.69 12 18 12C19.09 12 20.12 12.3 21 12.81V12L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20C3 20.55 3.45 21 4 21H5C5.55 21 6 20.55 6 20V19H12.09C12.04 18.67 12 18.34 12 18M6.5 6.5H17.5L19 11H5L6.5 6.5M6.5 16C5.67 16 5 15.33 5 14.5S5.67 13 6.5 13 8 13.67 8 14.5 7.33 16 6.5 16M19 21V19H15V17H19V15L22 18L19 21"; +var mdiCarBack = "M6,11L7,7H17L18,11M18.92,6C18.71,5.4 18.14,5 17.5,5H6.5C5.86,5 5.29,5.4 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V18H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6M7,16H5V14H7V16M19,16H17V14H19V16M14,16H10V14H14V16Z"; +var mdiCarBattery = "M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z"; +var mdiCarBrakeAbs = "M24,12C24,15.31 22.66,18.31 20.5,20.5L19.42,19.42C21.32,17.5 22.5,14.9 22.5,12C22.5,9.11 21.32,6.5 19.42,4.58L20.5,3.5C22.66,5.69 24,8.69 24,12M20,9.6V8H16.8C15.92,8 15.2,8.72 15.2,9.6V11.2A1.6,1.6 0 0,0 16.8,12.8H18.4V14.4H15.2V16H18.4C19.28,16 20,15.28 20,14.4V12.8A1.6,1.6 0 0,0 18.4,11.2H16.8V9.6H20M8.42,6C9.47,5.37 10.69,5 12,5C13.31,5 14.53,5.37 15.58,6H18.69C17.05,4.16 14.66,3 12,3C9.34,3 6.95,4.16 5.31,6H8.42M13.2,12C13.84,12 14.4,12.56 14.4,13.2V14.4A1.6,1.6 0 0,1 12.8,16H9.6V8H12.8A1.6,1.6 0 0,1 14.4,9.6V10.8C14.4,11.44 13.84,12 13.2,12M12.8,12.8H11.2V14.4H12.8V12.8M12.8,9.6H11.2V11.2H12.8V9.6M4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58M7.2,16V12.8H5.6V16H4V9.6A1.6,1.6 0 0,1 5.6,8H7.2C8.08,8 8.8,8.72 8.8,9.6V16H7.2M7.2,11.2V9.6H5.6V11.2H7.2M15.58,18C14.53,18.63 13.31,19 12,19C10.69,19 9.47,18.63 8.42,18H5.31C6.95,19.84 9.34,21 12,21C14.66,21 17.05,19.84 18.69,18H15.58Z"; +var mdiCarBrakeAlert = "M11,15H13V17H11V15M11,7H13V13H11V7M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12C19,15.86 15.86,19 12,19M20.5,20.5C22.66,18.31 24,15.31 24,12C24,8.69 22.66,5.69 20.5,3.5L19.42,4.58C21.32,6.5 22.5,9.11 22.5,12C22.5,14.9 21.32,17.5 19.42,19.42L20.5,20.5M4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42Z"; +var mdiCarBrakeHold = "M12,3C7,3 3,7 3,12C3,17 7,21 12,21C17,21 21,17 21,12C21,7 17,3 12,3M12,19C8.1,19 5,15.9 5,12C5,8.1 8.1,5 12,5C15.9,5 19,8.1 19,12C19,15.9 15.9,19 12,19M20.5,20.5C22.7,18.3 24,15.3 24,12C24,8.7 22.7,5.7 20.5,3.5L19.4,4.6C21.3,6.5 22.5,9.1 22.5,12C22.5,14.9 21.3,17.5 19.4,19.4L20.5,20.5M4.6,19.4C2.7,17.5 1.5,14.9 1.5,12C1.5,9.1 2.7,6.5 4.6,4.6L3.5,3.5C1.3,5.7 0,8.7 0,12C0,15.3 1.3,18.3 3.5,20.5L4.6,19.4M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z"; +var mdiCarBrakeParking = "M12,3C7,3 3,7 3,12C3,17 7,21 12,21C17,21 21,17 21,12C21,7 17,3 12,3M12,19C8.1,19 5,15.9 5,12C5,8.1 8.1,5 12,5C15.9,5 19,8.1 19,12C19,15.9 15.9,19 12,19M20.5,20.5C22.7,18.3 24,15.3 24,12C24,8.7 22.7,5.7 20.5,3.5L19.4,4.6C21.3,6.5 22.5,9.1 22.5,12C22.5,14.9 21.3,17.5 19.4,19.4L20.5,20.5M4.6,19.4C2.7,17.5 1.5,14.9 1.5,12C1.5,9.1 2.7,6.5 4.6,4.6L3.5,3.5C1.3,5.7 0,8.7 0,12C0,15.3 1.3,18.3 3.5,20.5L4.6,19.4M9.5,7V17H11.5V13H13.5A2,2 0 0,0 15.5,11V9A2,2 0 0,0 13.5,7H9.5M11.5,9H13.5V11H11.5V9Z"; +var mdiCarBrakeRetarder = "M12 3C7 3 3 7 3 12S7 21 12 21 21 17 21 12 17 3 12 3M12 19C8.1 19 5 15.9 5 12S8.1 5 12 5 19 8.1 19 12 15.9 19 12 19M20.5 20.5C22.7 18.3 24 15.3 24 12S22.7 5.7 20.5 3.5L19.4 4.6C21.3 6.5 22.5 9.1 22.5 12S21.3 17.5 19.4 19.4L20.5 20.5M4.6 19.4C2.7 17.5 1.5 14.9 1.5 12S2.7 6.5 4.6 4.6L3.5 3.5C1.3 5.7 0 8.7 0 12S1.3 18.3 3.5 20.5L4.6 19.4M15.3 10.5C15.96 10.5 16.5 11.17 16.5 12C16.5 12.81 15.95 13.5 15.3 13.5C14.93 13.5 14.66 13.29 14.5 13.11L14.47 13.08L14.44 13.05L13.38 12L14.47 10.92L14.5 10.89L14.53 10.86C14.74 10.63 15 10.5 15.3 10.5M8.7 10.5C9.07 10.5 9.34 10.71 9.5 10.88L9.5 10.92L9.56 10.95L10.62 12L9.53 13.08L9.5 13.11L9.47 13.15C9.26 13.37 9 13.5 8.7 13.5C8.05 13.5 7.5 12.81 7.5 12S8.05 10.5 8.7 10.5M15.3 9C14.58 9 13.9 9.31 13.42 9.85L12 11.25L10.61 9.88C10.1 9.31 9.42 9 8.7 9C7.21 9 6 10.35 6 12S7.21 15 8.7 15C9.42 15 10.1 14.69 10.59 14.15L12 12.75L13.39 14.12C13.9 14.68 14.58 15 15.3 15C16.79 15 18 13.65 18 12C18 10.33 16.79 9 15.3 9Z"; +var mdiCarChildSeat = "M17 4.5C17 5.9 15.9 7 14.5 7S12 5.9 12 4.5 13.1 2 14.5 2 17 3.1 17 4.5M15 8H14.2C12.1 8 10.1 6.8 9.1 4.9C9 4.8 8.9 4.7 8.9 4.6L7.1 5.4C7.6 6.8 9.2 8.6 11.5 9.5L9.7 14.5L5.8 13.4L3 18.9L5 19.4L6.8 15.8L11.3 17C12.3 17.2 13.3 16.7 13.7 15.8L16 9.4C16.2 8.7 15.7 8 15 8M18.9 7L15.5 16.4C14.9 18 13.4 19 11.8 19C11.5 19 11.1 19 10.8 18.9L7.9 18.1L7 19.9L9 20.4L10.4 20.8C10.9 20.9 11.4 21 11.9 21C14.4 21 16.6 19.5 17.5 17.1L21 7H18.9Z"; +var mdiCarClutch = "M10 18.84L14 20.7V23L8 20V14H5V10H8V4L14 1V3.3L10 5.16V18.84M19 10H15V5.41L12 6.8V17.2L15 18.6V14H19V10Z"; +var mdiCarCog = "M6.5 5C5.84 5 5.28 5.42 5.08 6L3 12V20A1 1 0 0 0 4 21H5A1 1 0 0 0 6 20V19H11.3A7 7 0 0 1 11 17A7 7 0 0 1 14.41 11H5L6.5 6.5H17.5L18.68 10.03A7 7 0 0 1 20.47 10.46L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5M17 12C16.87 12 16.76 12.09 16.74 12.21L16.55 13.53C16.25 13.66 15.96 13.82 15.7 14L14.46 13.5C14.35 13.5 14.22 13.5 14.15 13.63L13.15 15.36C13.09 15.47 13.11 15.6 13.21 15.68L14.27 16.5C14.25 16.67 14.24 16.83 14.24 17C14.24 17.17 14.25 17.33 14.27 17.5L13.21 18.32C13.12 18.4 13.09 18.53 13.15 18.64L14.15 20.37C14.21 20.5 14.34 20.5 14.46 20.5L15.7 20C15.96 20.18 16.24 20.35 16.55 20.47L16.74 21.79C16.76 21.91 16.86 22 17 22H19C19.11 22 19.22 21.91 19.24 21.79L19.43 20.47C19.73 20.34 20 20.18 20.27 20L21.5 20.5C21.63 20.5 21.76 20.5 21.83 20.37L22.83 18.64C22.89 18.53 22.86 18.4 22.77 18.32L21.7 17.5C21.72 17.33 21.74 17.17 21.74 17C21.74 16.83 21.73 16.67 21.7 16.5L22.76 15.68C22.85 15.6 22.88 15.47 22.82 15.36L21.82 13.63C21.76 13.5 21.63 13.5 21.5 13.5L20.27 14C20 13.82 19.73 13.65 19.42 13.53L19.23 12.21C19.22 12.09 19.11 12 19 12H17M6.5 13A1.5 1.5 0 0 1 8 14.5A1.5 1.5 0 0 1 6.5 16A1.5 1.5 0 0 1 5 14.5A1.5 1.5 0 0 1 6.5 13M18 15.5C18.83 15.5 19.5 16.17 19.5 17C19.5 17.83 18.83 18.5 18 18.5C17.16 18.5 16.5 17.83 16.5 17C16.5 16.17 17.17 15.5 18 15.5Z"; +var mdiCarConnected = "M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z"; +var mdiCarConvertible = "M16,6L15,6.75L17.5,10H13.5V8.5H12V10H3C1.89,10 1,10.89 1,12V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiCarCoolantLevel = "M19 7V5H21V3H13V5H15V7H1V21H23V7H19M21 14.42C20.71 14.13 20.5 14 20 14C19.33 14 19.21 14.21 18.71 14.71S17.33 16 16 16 13.79 15.21 13.29 14.71 12.67 14 12 14C11.78 14 11.63 14.03 11.5 14.08C11.22 14.18 11.05 14.37 10.71 14.71C10.21 15.21 9.33 16 8 16S5.79 15.21 5.29 14.71 4.67 14 4 14C3.5 14 3.29 14.13 3 14.42V9H21V14.42Z"; +var mdiCarCruiseControl = "M22,15C22,17.6 20.8,19.9 18.9,21.3L18.4,20.8L16.3,18.7L17.7,17.3L18.9,18.5C19.4,17.8 19.8,16.9 19.9,16H18V14H19.9C19.7,13.1 19.4,12.3 18.9,11.5L17.7,12.7L16.3,11.3L17.5,10.1C16.8,9.6 15.9,9.2 15,9.1V11H13V9.1C12.1,9.3 11.3,9.6 10.5,10.1L13.5,13.1C13.7,13.1 13.8,13 14,13A2,2 0 0,1 16,15A2,2 0 0,1 14,17A2,2 0 0,1 12,15C12,14.8 12,14.7 12.1,14.5L9.1,11.5C8.6,12.2 8.2,13.1 8.1,14H10V16H8.1C8.3,16.9 8.6,17.7 9.1,18.5L10.3,17.3L11.7,18.7L9.1,21.3C7.2,19.9 6,17.6 6,15A8,8 0 0,1 14,7A8,8 0 0,1 22,15M6.7,5.3L3.4,2L2,3.4L5.3,6.7L4,8H8V4L6.7,5.3Z"; +var mdiCarDefrostFront = "M15,23C14.7,23 14.5,22.9 14.3,22.7C13.9,22.3 14,21.7 14.4,21.3V21.3C14.9,20.9 16.1,19.5 16.1,18.4C16.1,17.8 15.7,17.2 15.3,16.5C14.8,15.7 14.1,14.7 14.1,13.5C14.1,11.2 15.4,10.3 15.6,10.2C16.1,9.9 16.7,10.1 17,10.5C17.3,11 17.1,11.6 16.7,11.9V11.9C16.7,11.9 16.2,12.3 16.2,13.5C16.2,14.1 16.6,14.7 17,15.4C17.5,16.2 18.2,17.2 18.2,18.4C18.2,20.6 16.1,22.6 15.9,22.8C15.5,22.9 15.2,23 15,23M11.7,22.7C11.9,22.5 14,20.5 14,18.3C14,17.1 13.4,16.1 12.8,15.3C12.4,14.6 12,14 12,13.4C12,12.2 12.5,11.8 12.5,11.8V11.8C13,11.5 13.1,10.9 12.8,10.4C12.5,9.9 11.9,9.8 11.4,10.1C11.2,10.2 9.9,11.1 9.9,13.4C9.9,14.6 10.5,15.6 11.1,16.4C11.5,17.1 11.9,17.7 11.9,18.3C11.9,19.4 10.7,20.8 10.2,21.2V21.2C9.8,21.6 9.8,22.2 10.1,22.6C10.3,22.8 10.6,22.9 10.8,22.9C11.2,23 11.5,22.9 11.7,22.7M7.7,22.7C7.9,22.5 10,20.5 10,18.3C10,17.1 9.4,16.1 8.8,15.3C8.4,14.7 8,14.1 8,13.4C8,12.2 8.5,11.8 8.5,11.8V11.8C9,11.5 9.1,10.9 8.8,10.4C8.6,10 7.9,9.9 7.5,10.1C7.3,10.2 6,11.1 6,13.4C6,14.6 6.6,15.6 7.2,16.4C7.6,17.1 8,17.7 8,18.3C8,19.4 6.8,20.8 6.3,21.2V21.2C5.9,21.6 5.9,22.2 6.2,22.6C6.5,22.9 6.7,23 7,23C7.2,23 7.5,22.9 7.7,22.7M12,3C9.4,3 1,3.3 1,7C1,9.4 2.2,15.4 2.8,18H4L4.8,18H5V16H4.4C3.8,13.1 3,8.8 3,7C3,6 7.4,5 12,5C16.6,5 21,6 21,7C21,8.8 20.2,13.1 19.6,16H19V18H19.2L20,18H21.2C21.8,15.4 23,9.4 23,7C23,3.3 14.6,3 12,3Z"; +var mdiCarDefrostRear = "M10,18.3C10,20.5 7.9,22.5 7.7,22.7C7.5,22.9 7.2,23 7,23C6.7,23 6.5,22.9 6.2,22.6C5.9,22.2 5.9,21.6 6.3,21.2C6.8,20.8 8,19.4 8,18.3C8,17.7 7.6,17.1 7.2,16.4C6.6,15.6 6,14.6 6,13.4C6,11.1 7.3,10.2 7.5,10.1C7.9,9.9 8.6,10 8.8,10.4C9.1,10.9 9,11.5 8.5,11.8C8.5,11.8 8,12.2 8,13.4C8,14.1 8.4,14.7 8.8,15.3C9.4,16.1 10,17.1 10,18.3M12,13.4C12,12.2 12.5,11.8 12.5,11.8C13,11.5 13.1,10.9 12.8,10.4C12.5,9.9 11.9,9.8 11.4,10.1C11.2,10.2 9.9,11.1 9.9,13.4C9.9,14.6 10.5,15.6 11.1,16.4C11.5,17.1 11.9,17.7 11.9,18.3C11.9,19.4 10.7,20.8 10.2,21.2C9.8,21.6 9.8,22.2 10.1,22.6C10.3,22.8 10.6,22.9 10.8,22.9C11.2,23 11.5,22.9 11.7,22.7C11.9,22.5 14,20.5 14,18.3C14,17.1 13.4,16.1 12.8,15.3C12.4,14.6 12,14 12,13.4M20,3H4A2,2 0 0,0 2,5V16A2,2 0 0,0 4,18H5V16H4V5H20V16H19V18H20A2,2 0 0,0 22,16V5A2,2 0 0,0 20,3M16.2,13.5C16.2,12.3 16.7,11.9 16.7,11.9C17.1,11.6 17.3,11 17,10.5C16.7,10.1 16.1,9.9 15.6,10.2C15.4,10.3 14.1,11.2 14.1,13.5C14.1,14.7 14.8,15.7 15.3,16.5C15.7,17.2 16.1,17.8 16.1,18.4C16.1,19.5 14.9,20.9 14.4,21.3C14,21.7 13.9,22.3 14.3,22.7C14.5,22.9 14.7,23 15,23C15.2,23 15.5,22.9 15.9,22.8C16.1,22.6 18.2,20.6 18.2,18.4C18.2,17.2 17.5,16.2 17,15.4C16.6,14.7 16.2,14.1 16.2,13.5Z"; +var mdiCarDoor = "M19,14H16V16H19V14M22,21H3V11L11,3H21A1,1 0 0,1 22,4V21M11.83,5L5.83,11H20V5H11.83Z"; +var mdiCarDoorLock = "M21 3H11L3 11V12H4.5C7.5 12 10 14.91 10 18.5V21H22V4A1 1 0 0 0 21 3M19 16H16V14H19M20 11H5.83L11.83 5H20M7 17V16.5A2.5 2.5 0 0 0 2 16.5V17A1 1 0 0 0 1 18V22A1 1 0 0 0 2 23H7A1 1 0 0 0 8 22V18A1 1 0 0 0 7 17M6.2 17H2.8V16.5A1.7 1.7 0 0 1 6.2 16.5Z"; +var mdiCarElectric = "M18.92 2C18.72 1.42 18.16 1 17.5 1H6.5C5.84 1 5.29 1.42 5.08 2L3 8V16C3 16.55 3.45 17 4 17H5C5.55 17 6 16.55 6 16V15H18V16C18 16.55 18.45 17 19 17H20C20.55 17 21 16.55 21 16V8L18.92 2M6.5 12C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12M17.5 12C16.67 12 16 11.33 16 10.5S16.67 9 17.5 9 19 9.67 19 10.5 18.33 12 17.5 12M5 7L6.5 2.5H17.5L19 7H5M7 20H11V18L17 21H13V23L7 20Z"; +var mdiCarElectricOutline = "M18.92 2C18.72 1.42 18.16 1 17.5 1H6.5C5.84 1 5.29 1.42 5.08 2L3 8V16C3 16.55 3.45 17 4 17H5C5.55 17 6 16.55 6 16V15H18V16C18 16.55 18.45 17 19 17H20C20.55 17 21 16.55 21 16V8L18.92 2M6.85 3H17.14L18.22 6.11H5.77L6.85 3M19 13H5V8H19V13M7.5 9C8.33 9 9 9.67 9 10.5S8.33 12 7.5 12 6 11.33 6 10.5 6.67 9 7.5 9M16.5 9C17.33 9 18 9.67 18 10.5S17.33 12 16.5 12C15.67 12 15 11.33 15 10.5S15.67 9 16.5 9M7 20H11V18L17 21H13V23L7 20Z"; +var mdiCarEmergency = "M11 0V3H13V0H11M7.88 1.46L6.46 2.87L8.59 5L10 3.58L7.88 1.46M16.12 1.46L14 3.58L15.41 5L17.54 2.88L16.12 1.46M12 5A2 2 0 0 0 10 7V8H6.5C5.84 8 5.28 8.42 5.08 9L3 15V23A1 1 0 0 0 4 24H5A1 1 0 0 0 6 23V22H18V23A1 1 0 0 0 19 24H20A1 1 0 0 0 21 23V15L18.92 9C18.72 8.42 18.16 8 17.5 8H14V7A2 2 0 0 0 12 5M6.5 9.5H17.5L19 14H5L6.5 9.5M6.5 16A1.5 1.5 0 0 1 8 17.5A1.5 1.5 0 0 1 6.5 19A1.5 1.5 0 0 1 5 17.5A1.5 1.5 0 0 1 6.5 16M17.5 16A1.5 1.5 0 0 1 19 17.5A1.5 1.5 0 0 1 17.5 19A1.5 1.5 0 0 1 16 17.5A1.5 1.5 0 0 1 17.5 16Z"; +var mdiCarEsp = "M5.31,6C6.95,4.16 9.34,3 12,3C14.66,3 17.05,4.16 18.69,6H15.58C14.53,5.37 13.31,5 12,5C10.69,5 9.47,5.37 8.42,6H5.31M14.4,9.6V8H11.2A1.6,1.6 0 0,0 9.6,9.6V11.2C9.6,12.08 10.32,12.8 11.2,12.8H12.8V14.4H9.6V16H12.8A1.6,1.6 0 0,0 14.4,14.4V12.8C14.4,11.92 13.68,11.2 12.8,11.2H11.2V9.6H14.4M18.4,8H15.2V16H16.8V12.8H18.4A1.6,1.6 0 0,0 20,11.2V9.6C20,8.72 19.28,8 18.4,8M18.4,11.2H16.8V9.6H18.4V11.2M8.8,9.6V8H4V16H8.8V14.4H5.6V12.8H8.8V11.2H5.6V9.6H8.8M15.58,18C14.53,18.63 13.31,19 12,19C10.69,19 9.47,18.63 8.42,18H5.31C6.95,19.84 9.34,21 12,21C14.66,21 17.05,19.84 18.69,18H15.58M20.5,3.5L19.42,4.58C21.32,6.5 22.5,9.11 22.5,12C22.5,14.9 21.32,17.5 19.42,19.42L20.5,20.5C22.66,18.31 24,15.31 24,12C24,8.69 22.66,5.69 20.5,3.5M4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58Z"; +var mdiCarEstate = "M3,6H16L19,10H21C22.11,10 23,10.89 23,12V15H21A3,3 0 0,1 18,18A3,3 0 0,1 15,15H9A3,3 0 0,1 6,18A3,3 0 0,1 3,15H1V8C1,6.89 1.89,6 3,6M2.5,7.5V10H10.5V7.5H2.5M12,7.5V10H17.14L15.25,7.5H12M6,13.5A1.5,1.5 0 0,0 4.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 6,13.5M18,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,16.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 18,13.5Z"; +var mdiCarHatchback = "M16,6H6L1,12V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M6.5,7.5H10.5V10H4.5L6.5,7.5M12,7.5H15.5L17.46,10H12V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiCarInfo = "M19 15H17V13H19M20 20V22H16V20H17V18H16V16H19V20M18.92 5A1.5 1.5 0 0 0 17.5 4H6.5A1.5 1.5 0 0 0 5.08 5L3 11V19A1 1 0 0 0 4 20H5A1 1 0 0 0 6 19V18H11A7 7 0 0 1 18 11A6.84 6.84 0 0 1 21 11.68V11M6.5 15A1.5 1.5 0 1 1 8 13.5A1.5 1.5 0 0 1 6.5 15M5 10L6.5 5.5H17.5L19 10Z"; +var mdiCarKey = "M9.5,0A3,3 0 0,0 6.5,3A3,3 0 0,0 9.5,6C10.81,6 11.92,5.17 12.33,4H14.5V6H16.5V4H17.5V2H12.33C11.92,0.83 10.81,0 9.5,0M9.5,2A1,1 0 0,1 10.5,3A1,1 0 0,1 9.5,4A1,1 0 0,1 8.5,3A1,1 0 0,1 9.5,2M6.5,8C5.84,8 5.28,8.42 5.08,9L3,15V23A1,1 0 0,0 4,24H5A1,1 0 0,0 6,23V22H18V23A1,1 0 0,0 19,24H20A1,1 0 0,0 21,23V15L18.92,9C18.72,8.42 18.16,8 17.5,8H6.5M6.5,9.5H17.5L19,14H5L6.5,9.5M6.5,16A1.5,1.5 0 0,1 8,17.5A1.5,1.5 0 0,1 6.5,19A1.5,1.5 0 0,1 5,17.5A1.5,1.5 0 0,1 6.5,16M17.5,16A1.5,1.5 0 0,1 19,17.5A1.5,1.5 0 0,1 17.5,19A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 17.5,16Z"; +var mdiCarLiftedPickup = "M18 14L18.79 14.1L18.77 14.33L19.24 14.5L19.39 14.34C19.89 14.6 20.32 15 20.6 15.5L20.43 15.67L20.63 16.12L20.86 16.1C20.95 16.39 21 16.69 21 17L20.9 17.78L20.66 17.77L20.47 18.24L20.66 18.39C20.39 18.9 20 19.32 19.5 19.6L19.33 19.42L18.87 19.62L18.89 19.86C18.61 19.95 18.31 20 18 20L17.21 19.9L17.22 19.65L16.76 19.47L16.6 19.66C16.1 19.39 15.67 19 15.39 18.5L15.57 18.32L15.37 17.86L15.13 17.88C15.05 17.6 15 17.31 15 17L15.11 16.2L15.34 16.21L15.53 15.75L15.35 15.6C15.62 15.09 16 14.68 16.5 14.39L16.67 14.56L17.13 14.36L17.11 14.14C17.39 14.05 17.69 14 18 14M18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5M6 14L6.79 14.1L6.77 14.33L7.24 14.5L7.39 14.34C7.89 14.6 8.32 15 8.6 15.5L8.43 15.67L8.63 16.12L8.86 16.1C8.95 16.39 9 16.69 9 17L8.9 17.78L8.65 17.77L8.47 18.24L8.66 18.39C8.39 18.9 8 19.32 7.5 19.6L7.33 19.42L6.87 19.62L6.89 19.86C6.61 19.95 6.31 20 6 20L5.21 19.9L5.22 19.65L4.76 19.47L4.6 19.66C4.1 19.39 3.67 19 3.39 18.5L3.57 18.32L3.37 17.86L3.13 17.88C3.05 17.6 3 17.31 3 17L3.11 16.2L3.34 16.21L3.53 15.75L3.35 15.6C3.62 15.09 4 14.68 4.5 14.39L4.67 14.56L5.13 14.36L5.11 14.14C5.39 14.05 5.69 14 6 14M6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5M16 6L19 10H21C22.11 10 23 10.89 23 12V15H21C21 13.34 19.66 12 18 12C16.34 12 15 13.34 15 15H9C9 13.34 7.66 12 6 12C4.34 12 3 13.34 3 15H1V10H10.5V6L16 6M12 7.5V10H17.46L15.5 7.5H12Z"; +var mdiCarLightDimmed = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 15.9,17.1 13.1,17.2M8,10.5C8,11 7.9,11.5 7.9,12C7.9,12.2 7.9,12.4 7.9,12.6L2.4,14L1.9,12.1L8,10.5M2,7L9.4,5.1C9.2,5.4 9,5.8 8.9,6.3C8.8,6.6 8.7,7 8.6,7.4L2.5,8.9L2,7M8.2,15.5C8.3,16.2 8.5,16.9 8.7,17.4L2.4,19L1.9,17.1L8.2,15.5Z"; +var mdiCarLightFog = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M6,8V11H8C8,11.3 8,11.7 8,12C8,12.3 8,12.7 8,13H6V16H8.4C8.6,16.7 8.8,17.4 9,18H6V21H4V18H2V16H4V13H2V11H4V8H2V6H4V3H6V6H9C9,6.1 8.9,6.2 8.9,6.4C8.7,6.9 8.5,7.4 8.4,8H6Z"; +var mdiCarLightHigh = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M2,5H9.5C9.3,5.4 9,5.8 8.9,6.4C8.8,6.6 8.8,6.8 8.7,7H2V5M8,11H2V9H8.2C8.1,9.6 8.1,10.3 8,11M8.7,17C8.9,17.8 9.2,18.4 9.6,19H2.1V17H8.7M8.2,15H2V13H8C8.1,13.7 8.1,14.4 8.2,15Z"; +var mdiCarLimousine = "M1,6L2.5,7.5L1,9L2.5,10.5L1,12L2.5,13.5L1,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6H1M4.62,7.5H10.5V10H4.12L3.12,9L4.62,7.5M12,7.5H15.5L17.46,10H12V7.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiCarMultiple = "M8,11L9.5,6.5H18.5L20,11M18.5,16A1.5,1.5 0 0,1 17,14.5A1.5,1.5 0 0,1 18.5,13A1.5,1.5 0 0,1 20,14.5A1.5,1.5 0 0,1 18.5,16M9.5,16A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 9.5,13A1.5,1.5 0 0,1 11,14.5A1.5,1.5 0 0,1 9.5,16M19.92,6C19.71,5.4 19.14,5 18.5,5H9.5C8.86,5 8.29,5.4 8.08,6L6,12V20A1,1 0 0,0 7,21H8A1,1 0 0,0 9,20V19H19V20A1,1 0 0,0 20,21H21A1,1 0 0,0 22,20V12L19.92,6M14.92,3C14.71,2.4 14.14,2 13.5,2H4.5C3.86,2 3.29,2.4 3.08,3L1,9V17A1,1 0 0,0 2,18H3A1,1 0 0,0 4,17V12.91C3.22,12.63 2.82,11.77 3.1,11C3.32,10.4 3.87,10 4.5,10H4.57L5.27,8H3L4.5,3.5H15.09L14.92,3Z"; +var mdiCarOff = "M20.5,19.85L6.41,5.76L2.41,1.76L1.11,3L4.57,6.46L3,11V19A1,1 0 0,0 4,20H5A1,1 0 0,0 6,19V18H16.11L20.84,22.73L22.11,21.46L20.5,19.85M6.5,15A1.5,1.5 0 0,1 5,13.5A1.5,1.5 0 0,1 6.5,12A1.5,1.5 0 0,1 8,13.5A1.5,1.5 0 0,1 6.5,15M5,10L5.78,7.67L8.11,10H5M17.5,5.5L19,10H13.2L16.12,12.92C16.5,12.17 17.37,11.86 18.12,12.21C18.87,12.57 19.18,13.47 18.83,14.21C18.68,14.5 18.43,14.77 18.12,14.92L21,17.8V11L18.92,5C18.71,4.4 18.14,4 17.5,4H7.2L8.7,5.5H17.5Z"; +var mdiCarOutline = "M18.9 6C18.7 5.4 18.1 5 17.5 5H6.5C5.8 5 5.3 5.4 5.1 6L3 12V20C3 20.5 3.5 21 4 21H5C5.6 21 6 20.5 6 20V19H18V20C18 20.5 18.5 21 19 21H20C20.5 21 21 20.5 21 20V12L18.9 6M6.8 7H17.1L18.2 10H5.8L6.8 7M19 17H5V12H19V17M7.5 13C8.3 13 9 13.7 9 14.5S8.3 16 7.5 16 6 15.3 6 14.5 6.7 13 7.5 13M16.5 13C17.3 13 18 13.7 18 14.5S17.3 16 16.5 16C15.7 16 15 15.3 15 14.5S15.7 13 16.5 13Z"; +var mdiCarParkingLights = "M7.3,9.2C8.1,9.6 9,10.5 9,12C9,13.5 8.1,14.4 7.3,14.8C6.9,13.4 6.9,10.6 7.3,9.2M6.5,7C4.5,7 4.5,17 6.5,17C8.5,17 11,15.1 11,12C11,8.9 8.5,7 6.5,7M16.7,9.2C17,10.6 17,13.4 16.7,14.8C15.9,14.4 15,13.5 15,12C15,10.5 15.9,9.6 16.7,9.2M17.5,7C15.5,7 13,8.9 13,12C13,15.1 15.5,17 17.5,17C19.5,17 19.5,7 17.5,7M4.9,6.2L2.5,4.6L1.4,6.3L4,8C4.2,7.3 4.5,6.6 4.9,6.2M20,8L22.6,6.3L21.5,4.6L19.1,6.2C19.4,6.6 19.8,7.2 20,8M4,16L1.4,17.7L2.5,19.4L4.9,17.8C4.6,17.4 4.2,16.8 4,16M20.5,11C20.5,11.3 20.5,11.7 20.5,12C20.5,12.3 20.5,12.6 20.5,13H24V11H20.5M19.1,17.8L21.5,19.4L22.6,17.7L20,16C19.8,16.7 19.5,17.4 19.1,17.8M3.5,12C3.5,11.7 3.5,11.4 3.5,11H0V13H3.5C3.5,12.7 3.5,12.3 3.5,12Z"; +var mdiCarPickup = "M16,6H10.5V10H1V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M12,7.5H15.5L17.46,10H12V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiCarSeat = "M7 18C7 18 4 10 4 6S6 2 6 2H7C7 2 8 2 8 3S7 4 7 6 10 10 10 13 7 18 7 18M12 17C11 17 8 19.5 8 19.5C7.7 19.7 7.8 20 8 20.3C8 20.3 9 22.1 11 22.1H17C18.1 22.1 19 21.2 19 20.1V19.1C19 18 18.1 17.1 17 17.1H12Z"; +var mdiCarSeatCooler = "M20.8 10.2L19.4 10.6L18.2 9.9V8.2L19.4 7.5L20.8 7.9L21.1 6.8L20 6.5L20.3 5.4L19.2 5.1L18.8 6.5L17.6 7.2L16.1 6.3V5L17.1 4L16.3 3.2L15.5 4L14.7 3.2L13.9 4L14.9 5V6.3L13.4 7.2L12.2 6.5L11.9 5.1L10.8 5.4L11.1 6.5L10 6.7L10.3 7.8L11.7 7.4L12.9 8.1V9.8L11.7 10.5L10.3 10.1L10 11.4L11.1 11.7L10.8 12.7L11.9 13L12.3 11.6L13.5 10.9L15 11.8V13.1L14 14.1L14.8 14.9L15.6 14.1L16.4 14.9L17.2 14.1L16.2 13.1V11.8L17.7 10.9L18.9 11.6L19.3 13L20.4 12.7L20 11.6L21.1 11.3L20.8 10.2M14 8.2L15.5 7.3L17 8.2V9.9L15.5 10.8L14 9.9V8.2M5 18C5 18 2 10 2 6S4 2 4 2H5C5 2 6 2 6 3S5 4 5 6 8 10 8 13 5 18 5 18M15 17C16.1 17 17 17.9 17 19V20C17 21.1 16.1 22 15 22H9C7 22 6 20.2 6 20.2C5.8 20 5.7 19.6 6 19.4C6 19.4 9 16.9 10 16.9H15Z"; +var mdiCarSeatHeater = "M5 18C5 18 2 10 2 6S4 2 4 2H5C5 2 6 2 6 3S5 4 5 6 8 10 8 13 5 18 5 18M15 17C16.1 17 17 17.9 17 19V20C17 21.1 16.1 22 15 22H9C7 22 6 20.2 6 20.2C5.8 20 5.7 19.6 6 19.4C6 19.4 9 16.9 10 16.9H15M13.7 3.4L12.3 6.8L13.7 10.2L11.7 15L10 13.6L11.4 10.2L10 6.8L12 2L13.7 3.4M17.9 3.4L16.5 6.8L17.9 10.2L15.9 15L14.2 13.6L15.6 10.2L14.2 6.8L16.2 2L17.9 3.4M22 3.4L20.6 6.8L22 10.2L20 15L18.3 13.6L19.7 10.2L18.3 6.8L20.3 2L22 3.4"; +var mdiCarSettings = "M15 22H17V24H15M11 22H13V24H11M7 22H9V24H7M5 11L6.5 6.5H17.5L19 11M17.5 16A1.5 1.5 0 0 1 16 14.5A1.5 1.5 0 0 1 17.5 13A1.5 1.5 0 0 1 19 14.5A1.5 1.5 0 0 1 17.5 16M6.5 16A1.5 1.5 0 0 1 5 14.5A1.5 1.5 0 0 1 6.5 13A1.5 1.5 0 0 1 8 14.5A1.5 1.5 0 0 1 6.5 16M18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20A1 1 0 0 0 4 21H5A1 1 0 0 0 6 20V19H18V20A1 1 0 0 0 19 21H20A1 1 0 0 0 21 20V12Z"; +var mdiCarShiftPattern = "M8 5H4V2H8V5M4 22H8V19H4V22M14 2H10V5H14V2M10 22H14V19H10V22M16 2V5H20V2H16M17 11H13V7H11V11H7V7H5V17H7V13H11V17H13V13H19V7H17V11Z"; +var mdiCarSide = "M16,6L19,10H21C22.11,10 23,10.89 23,12V15H21A3,3 0 0,1 18,18A3,3 0 0,1 15,15H9A3,3 0 0,1 6,18A3,3 0 0,1 3,15H1V12C1,10.89 1.89,10 3,10L6,6H16M10.5,7.5H6.75L4.86,10H10.5V7.5M12,7.5V10H17.14L15.25,7.5H12M6,13.5A1.5,1.5 0 0,0 4.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 6,13.5M18,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,16.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 18,13.5Z"; +var mdiCarSports = "M12,8.5H7L4,11H3C1.89,11 1,11.89 1,13V16H3.17C3.6,17.2 4.73,18 6,18C7.27,18 8.4,17.2 8.82,16H15.17C15.6,17.2 16.73,18 18,18C19.27,18 20.4,17.2 20.82,16H23V15C23,13.89 21.97,13.53 21,13L12,8.5M5.25,12L7.5,10H11.5L15.5,12H5.25M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; +var mdiCarTireAlert = "M11,13H13V15H11V13M11,5H13V11H11V5M17,4.76C18.86,6.19 20,8.61 20,11C20,14 18.33,16.64 15.86,18H8.14C5.67,16.64 4,14 4,11C4,8.61 5.09,6.17 7,4.76V2H5V3.86C3.15,5.68 2,8.2 2,11C2,13.8 3.15,16.32 5,18.14V22H7V20H9V22H11V20H13V22H15V20H17V22H19V18.14C20.85,16.32 22,13.8 22,11C22,8.2 20.85,5.68 19,3.86V2H17V4.76Z"; +var mdiCarTractionControl = "M9.5,11H10.5C10.8,11 11,10.8 11,10.5V9H19V10.5C19,10.8 19.2,11 19.5,11H20.5C20.8,11 21,10.8 21,10.5V9L21,8.5V6L19.6,1.7C19.5,1.3 19.1,1 18.7,1H11.4C11,1 10.6,1.3 10.5,1.7L9,6V8.5L9,9V10.5C9,10.8 9.2,11 9.5,11M11.3,2H18.6L19.5,5H10.4L11.3,2M12,23H10C10,22.2 8.1,21.5 6.6,20.9C4.5,20.1 2,19.2 2,17C2,14.7 4.3,14.1 6.2,13.5C7.9,13.1 9,12.7 9,12H11C11,14.3 8.7,14.9 6.8,15.5C5.1,15.9 4,16.3 4,17C4,17.8 5.9,18.5 7.4,19.1C9.5,19.9 12,20.8 12,23M22,23H20C20,22.2 18.1,21.5 16.6,20.9C14.5,20.1 12,19.2 12,17C12,14.7 14.3,14.1 16.2,13.5C17.8,13 19,12.7 19,12H21C21,14.3 18.7,14.9 16.8,15.5C15.2,15.9 14,16.3 14,17C14,17.8 15.9,18.5 17.4,19.1C19.5,19.9 22,20.8 22,23Z"; +var mdiCarTurbocharger = "M22 13V15H18.32C18.75 14.09 19 13.08 19 12C19 8.14 15.86 5 12 5H2V3H12C16.97 3 21 7.03 21 12C21 12.34 20.97 12.67 20.94 13H22M12 19C8.14 19 5 15.86 5 12C5 10.93 5.25 9.91 5.69 9H2V11H3.06C3.03 11.33 3 11.66 3 12C3 16.97 7.03 21 12 21H22V19H12M16.86 12.2C15.93 12.94 14.72 12.47 14 12.05V12C16.79 10.31 15.39 7.89 15.39 7.89S14.33 6.04 14.61 7.89C14.78 9.07 13.76 9.88 13.04 10.3L13 10.28C12.93 7 10.13 7 10.13 7S8 7 9.74 7.69C10.85 8.13 11.04 9.42 11.05 10.25L11 10.28C8.14 8.7 6.74 11.12 6.74 11.12S5.67 12.97 7.14 11.8C8.07 11.07 9.28 11.54 10 11.95V12C7.21 13.7 8.61 16.12 8.61 16.12S9.67 17.97 9.4 16.11C9.22 14.94 10.25 14.13 10.97 13.7L11 13.73C11.07 17 13.87 17 13.87 17S16 17 14.26 16.31C13.15 15.87 12.96 14.58 12.95 13.75L13 13.73C15.86 15.31 17.26 12.88 17.26 12.88S18.33 11.04 16.86 12.2Z"; +var mdiCarWash = "M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z"; +var mdiCarWindshield = "M22.63 15.5L20.21 5.85A1 1 0 0 0 19.14 5.1C17.8 5.24 14.14 5.5 12 5.5S6.2 5.24 4.86 5.1A1 1 0 0 0 3.79 5.85L1.37 15.5A1.5 1.5 0 0 0 2.55 17.36A61.5 61.5 0 0 0 12 18A61.5 61.5 0 0 0 21.45 17.36A1.5 1.5 0 0 0 22.63 15.5Z"; +var mdiCarWindshieldOutline = "M22.63 15.5L20.21 5.85A1 1 0 0 0 19.14 5.1C17.8 5.24 14.14 5.5 12 5.5S6.2 5.24 4.86 5.1A1 1 0 0 0 3.79 5.85L1.37 15.5A1.5 1.5 0 0 0 2.55 17.36A61.5 61.5 0 0 0 12 18A61.5 61.5 0 0 0 21.45 17.36A1.5 1.5 0 0 0 22.63 15.5M12 16A63.33 63.33 0 0 1 3.44 15.5L5.5 7.18C7 7.32 10.16 7.5 12 7.5S17 7.32 18.5 7.18L20.56 15.5A63.33 63.33 0 0 1 12 16Z"; +var mdiCarabiner = "M8 17.5C8 18.33 7.33 19 6.5 19S5 18.33 5 17.5 5.67 16 6.5 16 8 16.67 8 17.5M18 5.59C17.79 3.54 16.18 2 14.24 2H8.88C6.95 2 5.36 3.5 5.15 5.53L5 6.59C4.92 7.34 5.5 8 6.24 8C6.87 8 7.39 7.53 7.47 6.91L7.61 5.82C7.68 5.07 8.23 4.5 8.88 4.5H14.24C14.89 4.5 15.44 5.07 15.5 5.82L16.5 16.88C16.59 17.74 16 18.5 15.25 18.5L10.04 17.82C9.95 18.77 9.5 19.6 8.8 20.18L14.93 21L15.09 21H15.25C16.27 21 17.26 20.56 17.96 19.78C18.71 18.94 19.09 17.8 19 16.65L18 5.59M11.66 7.94C11.08 7.57 10.31 7.75 9.94 8.34L6.39 14C6.43 14 6.46 14 6.5 14C7.38 14 8.18 14.34 8.8 14.88L12.06 9.66C12.43 9.08 12.25 8.31 11.66 7.94Z"; +var mdiCaravan = "M5,7A2,2 0 0,0 3,9V15A2,2 0 0,0 5,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17H21V15H19V9A2,2 0 0,0 17,7H5M5,9H10V12H5V9M13,9H17V12H13V9M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16Z"; +var mdiCard = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20Z"; +var mdiCardAccountDetails = "M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z"; +var mdiCardAccountDetailsOutline = "M22,3H2C0.91,3.04 0.04,3.91 0,5V19C0.04,20.09 0.91,20.96 2,21H22C23.09,20.96 23.96,20.09 24,19V5C23.96,3.91 23.09,3.04 22,3M22,19H2V5H22V19M14,17V15.75C14,14.09 10.66,13.25 9,13.25C7.34,13.25 4,14.09 4,15.75V17H14M9,7A2.5,2.5 0 0,0 6.5,9.5A2.5,2.5 0 0,0 9,12A2.5,2.5 0 0,0 11.5,9.5A2.5,2.5 0 0,0 9,7M14,7V8H20V7H14M14,9V10H20V9H14M14,11V12H18V11H14"; +var mdiCardAccountDetailsStar = "M20 22.09L22.45 23.58L21.8 20.77L24 18.89L21.11 18.64L20 16L18.87 18.64L16 18.89L18.18 20.77L17.5 23.58L20 22.09M14.08 21H2C.95 21 0 20.05 0 19V5C0 3.95 .95 3 2 3H22C23.05 3 24 3.95 24 5V15.53C22.94 14.58 21.54 14 20 14C16.69 14 14 16.69 14 20C14 20.34 14.03 20.68 14.08 21M8 13.91C6 13.91 2 15 2 17V18H14V17C14 15 10 13.91 8 13.91M8 6C6.35 6 5 7.35 5 9C5 10.65 6.35 12 8 12C9.65 12 11 10.65 11 9C11 7.35 9.65 6 8 6M21 10H14V11H21V10M22 8H14V9H22V8M22 6H14V7H22V6Z"; +var mdiCardAccountDetailsStarOutline = "M20 22.09L22.45 23.58L21.8 20.77L24 18.89L21.11 18.64L20 16L18.87 18.64L16 18.89L18.18 20.77L17.5 23.58L20 22.09M14.08 21H2C.91 20.96 .04 20.09 0 19V5C.04 3.91 .91 3.04 2 3H22C23.09 3.04 23.96 3.91 24 5V15.53C23.42 15 22.75 14.61 22 14.34V5H2V19H14.08C14.03 19.33 14 19.66 14 20C14 20.34 14.03 20.68 14.08 21M14 17H4V15.75C4 14.09 7.34 13.25 9 13.25C10.66 13.25 14 14.09 14 15.75V17M14 11H18V12H14V11M9 7C7.63 7 6.5 8.13 6.5 9.5C6.5 10.87 7.63 12 9 12C10.37 12 11.5 10.87 11.5 9.5C11.5 8.13 10.37 7 9 7M14 9H20V10H14V9M14 7H20V8H14V7Z"; +var mdiCardAccountMail = "M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22"; +var mdiCardAccountMailOutline = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M22,19H2V5H22V19M21,6H14V11H21V6M20,8L17.5,9.75L15,8V7L17.5,8.75L20,7V8M9,12A3,3 0 0,0 12,9A3,3 0 0,0 9,6A3,3 0 0,0 6,9A3,3 0 0,0 9,12M9,8A1,1 0 0,1 10,9A1,1 0 0,1 9,10A1,1 0 0,1 8,9A1,1 0 0,1 9,8M15,16.59C15,14.09 11.03,13 9,13C6.97,13 3,14.09 3,16.59V18H15V16.59M5.5,16C6.22,15.5 7.7,15 9,15C10.3,15 11.77,15.5 12.5,16H5.5Z"; +var mdiCardAccountPhone = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17V18M17.85,14H19.5L21,16L19,18C17.7,17 16.73,15.61 16.28,14C16.1,13.36 16,12.69 16,12C16,11.31 16.1,10.64 16.28,10C16.73,8.38 17.7,7 19,6L21,8L19.5,10H17.85C17.63,10.63 17.5,11.3 17.5,12C17.5,12.7 17.63,13.37 17.85,14Z"; +var mdiCardAccountPhoneOutline = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M22,19H2V5H22V19M19,18L21,16L19.5,14H17.85C17.63,13.37 17.5,12.7 17.5,12C17.5,11.3 17.63,10.63 17.85,10H19.5L21,8L19,6C17.7,7 16.73,8.38 16.28,10C16.1,10.64 16,11.31 16,12C16,12.69 16.1,13.36 16.28,14C16.73,15.61 17.7,17 19,18M9,12A3,3 0 0,0 12,9A3,3 0 0,0 9,6A3,3 0 0,0 6,9A3,3 0 0,0 9,12M9,8A1,1 0 0,1 10,9A1,1 0 0,1 9,10A1,1 0 0,1 8,9A1,1 0 0,1 9,8M15,16.59C15,14.09 11.03,13 9,13C6.97,13 3,14.09 3,16.59V18H15V16.59M5.5,16C6.22,15.5 7.7,15 9,15C10.3,15 11.77,15.5 12.5,16H5.5Z"; +var mdiCardBulleted = "M20,4A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20M11,13H9V15H11V13M19,13H13V15H19V13M7,9H5V11H7V9M19,9H9V11H19V9Z"; +var mdiCardBulletedOff = "M3.35,3.58L20.65,20.87L19.23,22.29L16.94,20H4A2,2 0 0,1 2,18V6C2,5.72 2.06,5.46 2.16,5.22L1.23,4.29L2.65,2.87L3.35,3.58M6.6,4H20A2,2 0 0,1 22,6V18C22,18.4 21.88,18.77 21.68,19.08L17.6,15H20V13H15.6L13.6,11H20V9H11.6L6.6,4M9.94,13H9V15H11V14.06L9.94,13M5.94,9H5V11H7V10.06L5.94,9Z"; +var mdiCardBulletedOffOutline = "M20.59,20.87L19.17,22.29L16.88,20H4A2,2 0 0,1 2,18V6C2,5.74 2.05,5.5 2.14,5.26L1.17,4.29L2.59,2.87L3.73,4L20.59,20.87V20.87M6.54,4H20A2,2 0 0,1 22,6V18C22,18.41 21.87,18.8 21.66,19.12L20,17.46V6H8.54L6.54,4M4,18H14.88L11.88,15H10V13.12L7.88,11H6V9.12L4,7.12V18M18,15H17.54L15.54,13H18V15M18,11H13.54L11.54,9H18V11Z"; +var mdiCardBulletedOutline = "M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z"; +var mdiCardBulletedSettings = "M9,22V24H7V22H9M13,22V24H11V22H13M17,22V24H15V22H17M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M11,13H9V15H11V13M19,13H13V15H19V13M7,9H5V11H7V9M19,9H9V11H19V9Z"; +var mdiCardBulletedSettingsOutline = "M9,22V24H7V22H9M13,22V24H11V22H13M17,22V24H15V22H17M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z"; +var mdiCardMinus = "M23 18V20H15V18H23M19 13C20.09 13 21.12 13.3 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13Z"; +var mdiCardMinusOutline = "M23 18V20H15V18H23M13.09 18H4V6H20V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18Z"; +var mdiCardOff = "M21.88 18.68L7.2 4H20C21.11 4 22 4.89 22 6V18C22 18.24 21.96 18.47 21.88 18.68M20.56 19.91L20.57 19.91L2.39 1.73L1.11 3L2.65 4.54C2.25 4.9 2 5.42 2 6V18C2 19.11 2.9 20 4 20H18.11L20.84 22.73L22.11 21.46L20.56 19.91Z"; +var mdiCardOffOutline = "M9.2 6L7.2 4H20C21.11 4 22 4.89 22 6V18C22 18.24 21.96 18.47 21.88 18.68L20 16.8V6H9.2M22.11 21.46L20.84 22.73L18.11 20H4C2.9 20 2 19.11 2 18V6C2 5.42 2.25 4.9 2.65 4.54L1.11 3L2.39 1.73L6.66 6L18.65 18H18.66L20.57 19.91L20.56 19.91L22.11 21.46M16.11 18L4.11 6H4V18H16.11Z"; +var mdiCardOutline = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z"; +var mdiCardPlus = "M13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V13.81C21.12 13.3 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.34 13.04 19.67 13.09 20M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiCardPlusOutline = "M21 15V18H24V20H21V23H19V20H16V18H19V15H21M14 18H3V6H19V13H21V6C21 4.89 20.11 4 19 4H3C1.9 4 1 4.89 1 6V18C1 19.11 1.9 20 3 20H14V18Z"; +var mdiCardRemove = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M19 13C20.09 13 21.12 13.3 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13Z"; +var mdiCardRemoveOutline = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M13.09 18H4V6H20V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18Z"; +var mdiCardSearch = "M11.5 9C10.12 9 9 10.12 9 11.5S10.12 14 11.5 14 14 12.88 14 11.5 12.88 9 11.5 9M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M16.79 18.21L13.88 15.3C13.19 15.74 12.37 16 11.5 16C9 16 7 14 7 11.5S9 7 11.5 7 16 9 16 11.5C16 12.38 15.74 13.19 15.3 13.89L18.21 16.79L16.79 18.21Z"; +var mdiCardSearchOutline = "M11.5 16C12.37 16 13.19 15.74 13.88 15.3L16.32 17.74L17.74 16.32L15.3 13.89C15.74 13.19 16 12.38 16 11.5C16 9 14 7 11.5 7S7 9 7 11.5 9 16 11.5 16M11.5 9C12.88 9 14 10.12 14 11.5S12.88 14 11.5 14 9 12.88 9 11.5 10.12 9 11.5 9M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M20 18H4V6H20V18Z"; +var mdiCardText = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M5,13V15H16V13H5M5,9V11H19V9H5Z"; +var mdiCardTextOutline = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4M6,9H18V11H6V9M6,13H16V15H6V13Z"; +var mdiCards = "M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59"; +var mdiCardsClub = "M12,2C14.3,2 16.3,4 16.3,6.2C16.21,8.77 14.34,9.83 14.04,10C15.04,9.5 16.5,9.5 16.5,9.5C19,9.5 21,11.3 21,13.8C21,16.3 19,18 16.5,18C16.5,18 15,18 13,17C13,17 12.7,19 15,22H9C11.3,19 11,17 11,17C9,18 7.5,18 7.5,18C5,18 3,16.3 3,13.8C3,11.3 5,9.5 7.5,9.5C7.5,9.5 8.96,9.5 9.96,10C9.66,9.83 7.79,8.77 7.7,6.2C7.7,4 9.7,2 12,2Z"; +var mdiCardsDiamond = "M19,12L12,22L5,12L12,2"; +var mdiCardsDiamondOutline = "M12 2L5 12L12 22L19 12M7.44 12L12 5.5L16.56 12L12 18.5"; +var mdiCardsHeart = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z"; +var mdiCardsOutline = "M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29"; +var mdiCardsPlayingOutline = "M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z"; +var mdiCardsSpade = "M12,2C9,7 4,9 4,14C4,16 6,18 8,18C9,18 10,18 11,17C11,17 11.32,19 9,22H15C13,19 13,17 13,17C14,18 15,18 16,18C18,18 20,16 20,14C20,9 15,7 12,2Z"; +var mdiCardsVariant = "M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z"; +var mdiCarrot = "M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z"; +var mdiCart = "M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z"; +var mdiCartArrowDown = "M10,0V4H8L12,8L16,4H14V0M1,2V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18Z"; +var mdiCartArrowRight = "M9,20A2,2 0 0,1 7,22A2,2 0 0,1 5,20A2,2 0 0,1 7,18A2,2 0 0,1 9,20M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.2,14.63C7.19,14.67 7.19,14.71 7.2,14.75A0.25,0.25 0 0,0 7.45,15H19V17H7A2,2 0 0,1 5,15C5,14.65 5.07,14.31 5.24,14L6.6,11.59L3,4H1V2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,12C16.94,12.62 16.27,13 15.55,13H8.1L7.2,14.63M9,9.5H13V11.5L16,8.5L13,5.5V7.5H9V9.5Z"; +var mdiCartArrowUp = "M12,0L8,4H10V8H14V4H16M1,2V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18Z"; +var mdiCartCheck = "M9 20C9 21.11 8.11 22 7 22S5 21.11 5 20 5.9 18 7 18 9 18.9 9 20M17 18C15.9 18 15 18.9 15 20S15.9 22 17 22 19 21.11 19 20 18.11 18 17 18M7.17 14.75L7.2 14.63L8.1 13H15.55C16.3 13 16.96 12.59 17.3 11.97L21.16 4.96L19.42 4H19.41L18.31 6L15.55 11H8.53L8.4 10.73L6.16 6L5.21 4L4.27 2H1V4H3L6.6 11.59L5.25 14.04C5.09 14.32 5 14.65 5 15C5 16.11 5.9 17 7 17H19V15H7.42C7.29 15 7.17 14.89 7.17 14.75M18 2.76L16.59 1.34L11.75 6.18L9.16 3.59L7.75 5L11.75 9L18 2.76Z"; +var mdiCartMinus = "M16,6V4H8V6M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z"; +var mdiCartOff = "M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z"; +var mdiCartOutline = "M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z"; +var mdiCartPlus = "M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z"; +var mdiCartRemove = "M14.12,8.53L12,6.41L9.88,8.54L8.46,7.12L10.59,5L8.47,2.88L9.88,1.47L12,3.59L14.12,1.46L15.54,2.88L13.41,5L15.53,7.12L14.12,8.53M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22A2,2 0 0,1 5,20A2,2 0 0,1 7,18M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22A2,2 0 0,1 15,20A2,2 0 0,1 17,18M7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7A2,2 0 0,1 5,15C5,14.65 5.09,14.32 5.25,14.04L6.6,11.59L3,4H1V2H4.27L5.21,4L6.16,6L8.4,10.73L8.53,11H15.55L18.31,6L19.41,4H19.42L21.16,4.96L17.3,11.97C16.96,12.59 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75Z"; +var mdiCartVariant = "M19 20C19 21.11 18.11 22 17 22C15.89 22 15 21.1 15 20C15 18.89 15.89 18 17 18C18.11 18 19 18.9 19 20M7 18C5.89 18 5 18.89 5 20C5 21.1 5.89 22 7 22C8.11 22 9 21.11 9 20S8.11 18 7 18M7.2 14.63L7.17 14.75C7.17 14.89 7.28 15 7.42 15H19V17H7C5.89 17 5 16.1 5 15C5 14.65 5.09 14.32 5.24 14.04L6.6 11.59L3 4H1V2H4.27L5.21 4H20C20.55 4 21 4.45 21 5C21 5.17 20.95 5.34 20.88 5.5L17.3 11.97C16.96 12.58 16.3 13 15.55 13H8.1L7.2 14.63M8.5 11H10V9H7.56L8.5 11M11 9V11H14V9H11M14 8V6H11V8H14M17.11 9H15V11H16L17.11 9M18.78 6H15V8H17.67L18.78 6M6.14 6L7.08 8H10V6H6.14Z"; +var mdiCaseSensitiveAlt = "M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z"; +var mdiCash = "M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z"; +var mdiCash100 = "M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z"; +var mdiCashCheck = "M3 6V18H13.32C13.1 17.33 13 16.66 13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3M12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61C14.85 10.28 13.59 8.97 12 9M21.63 12.27L17.76 16.17L16.41 14.8L15 16.22L17.75 19L23.03 13.68L21.63 12.27Z"; +var mdiCashLock = "M21.8 15C22.4 15 23 15.6 23 16.3V19.8C23 20.4 22.4 21 21.7 21H16.2C15.6 21 15 20.4 15 19.7V16.2C15 15.6 15.6 15 16.2 15V13.5C16.2 12.1 17.6 11 19 11C20.4 11 21.8 12.1 21.8 13.5V15M20.5 15V13.5C20.5 12.7 19.8 12.2 19 12.2C18.2 12.2 17.5 12.7 17.5 13.5V15H20.5M2 6H20V9.1L19 9C18.18 9 17.41 9.2 16.73 9.54C16.28 9.18 16 8.62 16 8H6C6 9.11 5.11 10 4 10V14C5.11 14 6 14.9 6 16H13.04L13 16.5V18H2V6M11 9C12.66 9 14 10.34 14 12C14 13.66 12.66 15 11 15C9.34 15 8 13.66 8 12C8 10.34 9.34 9 11 9Z"; +var mdiCashLockOpen = "M21.8 16C22.4 16 23 16.6 23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V13.5C16.2 12.1 17.6 11 19 11C20.4 11 21.8 12.1 21.8 13.5V14H20.5V13.5C20.5 12.7 19.8 12.2 19 12.2C18.2 12.2 17.5 12.7 17.5 13.5V16H21.8M2 6H20V9.1L19 9C18.18 9 17.41 9.2 16.73 9.54C16.28 9.18 16 8.62 16 8H6C6 9.11 5.11 10 4 10V14C5.11 14 6 14.9 6 16H13.04L13 16.5V18H2V6M11 9C12.66 9 14 10.34 14 12C14 13.66 12.66 15 11 15C9.34 15 8 13.66 8 12C8 10.34 9.34 9 11 9Z"; +var mdiCashMarker = "M18.5,16.8C17.8,16.8 17.3,16.2 17.3,15.6C17.3,14.9 17.9,14.4 18.5,14.4C19.1,14.4 19.7,15 19.7,15.6C19.8,16.2 19.2,16.8 18.5,16.8M18.5,12C16.6,12 15,13.6 15,15.5C15,18.1 18.5,22 18.5,22C18.5,22 22,18.1 22,15.5C22,13.6 20.4,12 18.5,12M14.9,11.3C14.6,10 13.4,9 12,9C10.3,9 9,10.3 9,12C9,13.7 10.3,15 12,15C12.4,15 12.7,14.9 13,14.8C13.2,13.4 13.9,12.2 14.9,11.3M13,16H7A2,2 0 0,0 5,14V10A2,2 0 0,0 7,8H17A2,2 0 0,0 19,10C19,10 20,10 21,10.6V6H3V18H13.5C13.3,17.3 13.1,16.7 13,16Z"; +var mdiCashMinus = "M15 15V17H23V15M14.97 11.61C14.85 10.28 13.59 8.97 12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61M13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z"; +var mdiCashMultiple = "M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z"; +var mdiCashPlus = "M15 15V17H18V20H20V17H23V15H20V12H18V15M14.97 11.61C14.85 10.28 13.59 8.97 12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61M13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z"; +var mdiCashRefund = "M12.3 8.93L9.88 6.5H15.5V10H17V5H9.88L12.3 2.57L11.24 1.5L7 5.75L11.24 10L12.3 8.93M12 14A3 3 0 1 0 15 17A3 3 0 0 0 12 14M3 11V23H21V11M19 19A2 2 0 0 0 17 21H7A2 2 0 0 0 5 19V15A2 2 0 0 0 7 13H17A2 2 0 0 0 19 15Z"; +var mdiCashRegister = "M2,17H22V21H2V17M6.25,7H9V6H6V3H14V6H11V7H17.8C18.8,7 19.8,8 20,9L20.5,16H3.5L4.05,9C4.05,8 5.05,7 6.25,7M13,9V11H18V9H13M6,9V10H8V9H6M9,9V10H11V9H9M6,11V12H8V11H6M9,11V12H11V11H9M6,13V14H8V13H6M9,13V14H11V13H9M7,4V5H13V4H7Z"; +var mdiCashRemove = "M15.46 18.12L16.88 19.54L19 17.41L21.12 19.54L22.54 18.12L20.41 16L22.54 13.88L21.12 12.46L19 14.59L16.88 12.46L15.46 13.88L17.59 16M14.97 11.62C14.86 10.28 13.58 8.97 12 9C10.3 9.04 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.39 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.62M13 16H7C7 14.9 6.1 14 5 14V10C6.1 10 7 9.1 7 8H17C17 9.1 17.9 10 19 10V10.05C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z"; +var mdiCashUsd = "M20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.1 4 20 4M15 10H11V11H14C14.55 11 15 11.45 15 12V15C15 15.55 14.55 16 14 16H13V17H11V16H9V14H13V13H10C9.45 13 9 12.55 9 12V9C9 8.45 9.45 8 10 8H11V7H13V8H15V10Z"; +var mdiCashUsdOutline = "M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z"; +var mdiCassette = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H6L7,17H17L18,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M9,10H15V13H9V10M17.5,10A1.5,1.5 0 0,1 19,11.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 16,11.5A1.5,1.5 0 0,1 17.5,10Z"; +var mdiCast = "M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z"; +var mdiCastAudio = "M2 11V13C7 13 11 17 11 22H13C13 15.9 8.1 11 2 11M20 2H10C8.9 2 8 2.9 8 4V10.5C9 11 9.9 11.7 10.7 12.4C11.6 11 13.2 10 15 10C17.8 10 20 12.2 20 15S17.8 20 15 20H14.8C14.9 20.7 15 21.3 15 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M15 8C13.9 8 13 7.1 13 6C13 4.9 13.9 4 15 4C16.1 4 17 4.9 17 6S16.1 8 15 8M15 18C14.8 18 14.5 18 14.3 17.9C13.8 16.4 13.1 15.1 12.2 13.9C12.6 12.8 13.7 11.9 15 11.9C16.7 11.9 18 13.2 18 14.9S16.7 18 15 18M2 15V17C4.8 17 7 19.2 7 22H9C9 18.1 5.9 15 2 15M2 19V22H5C5 20.3 3.7 19 2 19"; +var mdiCastConnected = "M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z"; +var mdiCastEducation = "M21,3H3A2,2 0 0,0 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M1,18V21H4A3,3 0 0,0 1,18M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M11,11.09V13.09L14.5,15L18,13.09V11.09L14.5,13L11,11.09M14.5,6L9,9L14.5,12L20,9L14.5,6Z"; +var mdiCastOff = "M1.6,1.27L0.25,2.75L1.41,3.8C1.16,4.13 1,4.55 1,5V8H3V5.23L18.2,19H14V21H20.41L22.31,22.72L23.65,21.24M6.5,3L8.7,5H21V16.14L23,17.95V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.08,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z"; +var mdiCastle = "M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z"; +var mdiCat = "M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z"; +var mdiCctv = "M18.15,4.94C17.77,4.91 17.37,5 17,5.2L8.35,10.2C7.39,10.76 7.07,12 7.62,12.94L9.12,15.53C9.67,16.5 10.89,16.82 11.85,16.27L13.65,15.23C13.92,15.69 14.32,16.06 14.81,16.27V18.04C14.81,19.13 15.7,20 16.81,20H22V18.04H16.81V16.27C17.72,15.87 18.31,14.97 18.31,14C18.31,13.54 18.19,13.11 17.97,12.73L20.5,11.27C21.47,10.71 21.8,9.5 21.24,8.53L19.74,5.94C19.4,5.34 18.79,5 18.15,4.94M6.22,13.17L2,13.87L2.75,15.17L4.75,18.63L5.5,19.93L8.22,16.63L6.22,13.17Z"; +var mdiCeilingLight = "M8,9H11V4H13V9H16L20,17H4L8,9M14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18H14Z"; +var mdiCellphone = "M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z"; +var mdiCellphoneAndroid = "M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z"; +var mdiCellphoneArrowDown = "M17,1H7A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M17,19H7V5H17V19M16,13H13V8H11V13H8L12,17L16,13Z"; +var mdiCellphoneBasic = "M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z"; +var mdiCellphoneCharging = "M11 18.5V13H9L13 5.5V11H15M17 19H7V5H17M17 1H7C5.89 1 5 1.89 5 3V21A2 2 0 0 0 7 23H17A2 2 0 0 0 19 21V3C19 1.89 18.1 1 17 1Z"; +var mdiCellphoneCog = "M9.82,12.5C9.84,12.33 9.86,12.17 9.86,12C9.86,11.83 9.84,11.67 9.82,11.5L10.9,10.69C11,10.62 11,10.5 10.96,10.37L9.93,8.64C9.87,8.53 9.73,8.5 9.62,8.53L8.34,9.03C8.07,8.83 7.78,8.67 7.47,8.54L7.27,7.21C7.27,7.09 7.16,7 7.03,7H5C4.85,7 4.74,7.09 4.72,7.21L4.5,8.53C4.21,8.65 3.92,8.83 3.65,9L2.37,8.5C2.25,8.47 2.12,8.5 2.06,8.63L1.03,10.36C0.97,10.5 1,10.61 1.1,10.69L2.18,11.5C2.16,11.67 2.15,11.84 2.15,12C2.15,12.17 2.17,12.33 2.19,12.5L1.1,13.32C1,13.39 1,13.53 1.04,13.64L2.07,15.37C2.13,15.5 2.27,15.5 2.38,15.5L3.66,15C3.93,15.18 4.22,15.34 4.53,15.47L4.73,16.79C4.74,16.91 4.85,17 5,17H7.04C7.17,17 7.28,16.91 7.29,16.79L7.5,15.47C7.8,15.35 8.09,15.17 8.36,15L9.64,15.5C9.76,15.53 9.89,15.5 9.95,15.37L11,13.64C11.04,13.53 11,13.4 10.92,13.32L9.82,12.5M6,13.75C5,13.75 4.2,12.97 4.2,12C4.2,11.03 5,10.25 6,10.25C7,10.25 7.8,11.03 7.8,12C7.8,12.97 7,13.75 6,13.75M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1Z"; +var mdiCellphoneDock = "M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z"; +var mdiCellphoneErase = "M11,8.2L10,7.2L6,11.2L2,7.2L1,8.2L5,12.2L1,16.2L2,17.2L6,13.2L10,17.2L11,16.2L7,12.2L11,8.2M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1Z"; +var mdiCellphoneInformation = "M13 7H11V9H13V7M13 11H11V17H13V11M17 1H7C5.9 1 5 1.9 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.9 18.1 1 17 1M17 19H7V5H17V19Z"; +var mdiCellphoneIphone = "M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z"; +var mdiCellphoneKey = "M7,1A2,2 0 0,0 5,3V7H7V4H17V20H7V17H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C7.31,15 8.42,14.17 8.83,13H11V15H13V13H14V11H8.83C8.42,9.83 7.31,9 6,9M6,11A1,1 0 0,1 7,12A1,1 0 0,1 6,13A1,1 0 0,1 5,12A1,1 0 0,1 6,11Z"; +var mdiCellphoneLink = "M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z"; +var mdiCellphoneLinkOff = "M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z"; +var mdiCellphoneLock = "M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M8.8,11V9.5C8.8,8.1 7.4,7 6,7C4.6,7 3.2,8.1 3.2,9.5V11C2.6,11 2,11.6 2,12.2V15.7C2,16.4 2.6,17 3.2,17H8.7C9.4,17 10,16.4 10,15.8V12.3C10,11.6 9.4,11 8.8,11M7.5,11H4.5V9.5C4.5,8.7 5.2,8.2 6,8.2C6.8,8.2 7.5,8.7 7.5,9.5V11Z"; +var mdiCellphoneMessage = "M11,17V7H4V17H11M11,3A2,2 0 0,1 13,5V19A2,2 0 0,1 11,21H4C2.89,21 2,20.1 2,19V5A2,2 0 0,1 4,3H11M16.5,3H21.5A1.5,1.5 0 0,1 23,4.5V7.5A1.5,1.5 0 0,1 21.5,9H18L15,12V9L15,4.5A1.5,1.5 0 0,1 16.5,3Z"; +var mdiCellphoneMessageOff = "M2.39 1.73L1.11 3L2.22 4.11C2.08 4.38 2 4.68 2 5V19C2 20.1 2.89 21 4 21H11C12.1 21 13 20.1 13 19V14.89L20.84 22.73L22.11 21.46L2.39 1.73M11 17H4V7H5.11L11 12.89V17M23 4.5V7.5C23 8.33 22.33 9 21.5 9H18L15.1 11.9L15 11.8V4.5C15 3.67 15.67 3 16.5 3H21.5C22.33 3 23 3.67 23 4.5M10.2 7L6.2 3H11C12.1 3 13 3.9 13 5V9.8L11 7.8V7H10.2"; +var mdiCellphoneNfc = "M2,16V18A5,5 0 0,1 7,23H9A7,7 0 0,0 2,16M2,20V23H5A3,3 0 0,0 2,20M2,12V14A9,9 0 0,1 11,23H13C13,16.92 8.08,12 2,12M17,1H7A2,2 0 0,0 5,3V10.37C5.69,10.53 6.36,10.74 7,11V5H17V18H13.97C14.5,19.25 14.81,20.59 14.92,22H17A2,2 0 0,0 19,20V3A2,2 0 0,0 17,1Z"; +var mdiCellphoneNfcOff = "M20.84 22.73L18.85 20.74C18.56 21.5 17.84 22 17 22H14.92C14.81 20.59 14.5 19.25 13.97 18H16.11L7 8.89V11C6.36 10.74 5.69 10.53 5 10.37V6.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M17 5V13.8L19 15.8V3C19 1.9 18.11 1 17 1H7C6.24 1 5.59 1.43 5.25 2.05L8.2 5H17M2 20V23H5C5 21.34 3.66 20 2 20M2 16V18C4.76 18 7 20.24 7 23H9C9 19.13 5.87 16 2 16M2 12V14C6.97 14 11 18.03 11 23H13C13 16.92 8.08 12 2 12Z"; +var mdiCellphoneOff = "M2.38,1.73L1.11,3L5,6.89V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V20.89L20.84,22.73L22.11,21.46M17,19H7V8.89L17,18.89V19M17,5V13.8L19,15.8V3A2,2 0 0,0 17,1H7C6.28,1 5.6,1.37 5.24,2L8.24,5H17Z"; +var mdiCellphonePlay = "M17 19H7V5H17M17 1H7C5.89 1 5 1.89 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.89 18.1 1 17 1M10 9V15L14 12L10 9Z"; +var mdiCellphoneScreenshot = "M7,1A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M7,4H17V20H7V4M9,6V10H10.5V7.5H13V6H9M13.5,14V16.5H11V18H15V14H13.5Z"; +var mdiCellphoneSettings = "M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z"; +var mdiCellphoneSound = "M19.1,8.7C20.9,10.5 20.9,13.3 19.1,15.2L20.1,16.2C22.6,13.9 22.6,10.1 20.1,7.7L19.1,8.7M18,9.8L17,10.8C17.5,11.5 17.5,12.4 17,13.1L18,14.1C19.2,12.9 19.2,11.1 18,9.8M14,1H4A2,2 0 0,0 2,3V21A2,2 0 0,0 4,23H14A2,2 0 0,0 16,21V3A2,2 0 0,0 14,1M14,20H4V4H14V20Z"; +var mdiCellphoneText = "M17,19V5H7V19H17M17,1A2,2 0 0,1 19,3V21A2,2 0 0,1 17,23H7C5.89,23 5,22.1 5,21V3C5,1.89 5.89,1 7,1H17M9,7H15V9H9V7M9,11H13V13H9V11Z"; +var mdiCellphoneWireless = "M20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07L18.66,17.66C20.11,16.22 21,14.22 21,12C21,9.79 20.11,7.78 18.66,6.34L20.07,4.93M17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76M13,10A2,2 0 0,1 15,12A2,2 0 0,1 13,14A2,2 0 0,1 11,12A2,2 0 0,1 13,10M11.5,1A2.5,2.5 0 0,1 14,3.5V8H12V4H3V19H12V16H14V20.5A2.5,2.5 0 0,1 11.5,23H3.5A2.5,2.5 0 0,1 1,20.5V3.5A2.5,2.5 0 0,1 3.5,1H11.5Z"; +var mdiCelticCross = "M17.8,8C17.26,5.89 15.61,4.24 13.5,3.7V2H10.5V3.7C8.39,4.24 6.74,5.89 6.2,8H4V11H6.2C6.74,13.11 8.39,14.76 10.5,15.3V22H13.5V15.3C15.61,14.76 17.26,13.11 17.8,11H19.97V8H17.8M12.04,9.53L14.5,11H15.76C15.35,12.03 14.53,12.84 13.5,13.26V12L12.06,9.56L12,9.5L11.94,9.56L10.5,12V13.26C9.47,12.84 8.66,12.03 8.24,11H9.5L11.96,9.53L12,9.5H11.96L9.5,8H8.24C8.65,6.97 9.47,6.16 10.5,5.74V7L11.94,9.44L12,9.5L12.06,9.44L13.5,7V5.74C14.53,6.16 15.35,6.97 15.76,8H14.5L12.04,9.5H12L12.04,9.53Z"; +var mdiCentos = "M19.07 14.93L22 12L19.07 9.07V4.93H14.93L12 2L9.07 4.93H4.93V9.07L2 12L4.93 14.93V19.07H9.07L12 22L14.93 19.07H19.07V14.93M21.41 12L19.07 14.34V12.46H13.69L13.23 12L13.69 11.54H19.07V9.66L21.41 12M18.66 14.76L17.32 16.09L14.11 12.87H18.66V14.76M12.46 13.1L12 12.65L11.54 13.1V12.46H10.9L11.36 12L10.9 11.54H11.54V10.9L12 11.36L12.46 10.9V11.54H13.1L12.65 12L13.1 12.46H12.46V13.1M14.11 11.13L17.32 7.91L18.66 9.24V11.13H14.11M18.66 5.35V8.65L17.32 7.32L13.5 11.13H12.87V10.5L16.68 6.68L15.35 5.35H18.66M12.87 9.89V5.35H14.76L16.09 6.68L12.87 9.89M12 2.59L14.34 4.93H12.46V10.31L12 10.77L11.54 10.31V4.93H9.66L12 2.59M11.13 9.89L7.91 6.68L9.24 5.35H11.13V9.89M5.35 5.35H8.65L7.32 6.68L11.13 10.5V11.13H10.5L6.68 7.32L5.35 8.65V5.35M5.35 9.24L6.68 7.91L9.89 11.13H5.35V9.24M2.59 12L4.93 9.66V11.54H10.31L10.77 12L10.31 12.46H4.93V14.34L2.59 12M9.89 12.87L6.68 16.09L5.35 14.76V12.87H9.89M5.35 18.66V15.35L6.68 16.68L10.5 12.87H11.13V13.5L7.32 17.32L8.65 18.65H5.35M11.13 14.11V18.66H9.24L7.91 17.32L11.13 14.11M12 21.41L9.66 19.07H11.54V13.69L12 13.23L12.46 13.69V19.07H14.34L12 21.41M12.87 14.11L16.09 17.32L14.76 18.66H12.87V14.11M15.35 18.66L16.68 17.32L12.87 13.5V12.87H13.5L17.32 16.68L18.65 15.35V18.66H15.35Z"; +var mdiCertificate = "M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z"; +var mdiCertificateOutline = "M13 21L15 20L17 21V14H13M17 9V7L15 8L13 7V9L11 10L13 11V13L15 12L17 13V11L19 10M20 3H4A2 2 0 0 0 2 5V15A2 2 0 0 0 4 17H11V15H4V5H20V15H19V17H20A2 2 0 0 0 22 15V5A2 2 0 0 0 20 3M11 8H5V6H11M9 11H5V9H9M11 14H5V12H11Z"; +var mdiChairRolling = "M22 10V13H19V10H22M2 13H5V10H2V13M17 5C17 3.9 16.1 3 15 3H9C7.9 3 7 3.9 7 5V13H17V5M7 15H6V17H11V18L7 22H9.8L12 19.8L14.2 22H17L13 18V17H18V15H7Z"; +var mdiChairSchool = "M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z"; +var mdiCharity = "M12.75,3.94C13.75,3.22 14.91,2.86 16.22,2.86C16.94,2.86 17.73,3.05 18.59,3.45C19.45,3.84 20.13,4.3 20.63,4.83C21.66,6.11 22.09,7.6 21.94,9.3C21.78,11 21.22,12.33 20.25,13.27L12.66,20.86C12.47,21.05 12.23,21.14 11.95,21.14C11.67,21.14 11.44,21.05 11.25,20.86C11.06,20.67 10.97,20.44 10.97,20.16C10.97,19.88 11.06,19.64 11.25,19.45L15.84,14.86C16.09,14.64 16.09,14.41 15.84,14.16C15.59,13.91 15.36,13.91 15.14,14.16L10.55,18.75C10.36,18.94 10.13,19.03 9.84,19.03C9.56,19.03 9.33,18.94 9.14,18.75C8.95,18.56 8.86,18.33 8.86,18.05C8.86,17.77 8.95,17.53 9.14,17.34L13.73,12.75C14,12.5 14,12.25 13.73,12C13.5,11.75 13.28,11.75 13.03,12L8.44,16.64C8.25,16.83 8,16.92 7.73,16.92C7.45,16.92 7.21,16.83 7,16.64C6.8,16.45 6.7,16.22 6.7,15.94C6.7,15.66 6.81,15.41 7.03,15.19L11.63,10.59C11.88,10.34 11.88,10.11 11.63,9.89C11.38,9.67 11.14,9.67 10.92,9.89L6.28,14.5C6.06,14.7 5.83,14.81 5.58,14.81C5.3,14.81 5.06,14.71 4.88,14.5C4.69,14.3 4.59,14.06 4.59,13.78C4.59,13.5 4.69,13.27 4.88,13.08C7.94,10 9.83,8.14 10.55,7.45L14.11,10.97C14.5,11.34 14.95,11.53 15.5,11.53C16.2,11.53 16.75,11.25 17.16,10.69C17.44,10.28 17.54,9.83 17.46,9.33C17.38,8.83 17.17,8.41 16.83,8.06L12.75,3.94M14.81,10.27L10.55,6L3.47,13.08C2.63,12.23 2.15,10.93 2.04,9.16C1.93,7.4 2.41,5.87 3.47,4.59C4.66,3.41 6.08,2.81 7.73,2.81C9.39,2.81 10.8,3.41 11.95,4.59L16.22,8.86C16.41,9.05 16.5,9.28 16.5,9.56C16.5,9.84 16.41,10.08 16.22,10.27C16.03,10.45 15.8,10.55 15.5,10.55C15.23,10.55 15,10.45 14.81,10.27V10.27Z"; +var mdiChartArc = "M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z"; +var mdiChartAreaspline = "M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z"; +var mdiChartAreasplineVariant = "M22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L22,21Z"; +var mdiChartBar = "M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z"; +var mdiChartBarStacked = "M22,21H2V3H4V19H6V17H10V19H12V16H16V19H18V17H22V21M18,14H22V16H18V14M12,6H16V9H12V6M16,15H12V10H16V15M6,10H10V12H6V10M10,16H6V13H10V16Z"; +var mdiChartBellCurve = "M9.96,11.31C10.82,8.1 11.5,6 13,6C14.5,6 15.18,8.1 16.04,11.31C17,14.92 18.1,19 22,19V17C19.8,17 19,14.54 17.97,10.8C17.08,7.46 16.15,4 13,4C9.85,4 8.92,7.46 8.03,10.8C7.03,14.54 6.2,17 4,17V2H2V22H22V20H4V19C7.9,19 9,14.92 9.96,11.31Z"; +var mdiChartBellCurveCumulative = "M4 19V20H22V22H2V2H4V17C7 17 10 15 12.1 11.4C15.1 6.4 18.4 4 22 4V6C19.2 6 16.5 8.1 13.9 12.5C11.3 16.6 7.7 19 4 19Z"; +var mdiChartBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17Z"; +var mdiChartBoxOutline = "M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17M19.5 19.1H4.5V5H19.5V19.1M19.5 3H4.5C3.4 3 2.5 3.9 2.5 5V19C2.5 20.1 3.4 21 4.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3Z"; +var mdiChartBoxPlusOutline = "M22 5V7H19V10H17V7H14V5H17V2H19V5H22M19 19H5V5H11V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V13H19V19M15 13V17H17V13H15M11 17H13V9H11V17M9 17V11H7V17H9Z"; +var mdiChartBubble = "M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z"; +var mdiChartDonut = "M13,2.05V5.08C16.39,5.57 19,8.47 19,12C19,12.9 18.82,13.75 18.5,14.54L21.12,16.07C21.68,14.83 22,13.45 22,12C22,6.82 18.05,2.55 13,2.05M12,19A7,7 0 0,1 5,12C5,8.47 7.61,5.57 11,5.08V2.05C5.94,2.55 2,6.81 2,12A10,10 0 0,0 12,22C15.3,22 18.23,20.39 20.05,17.91L17.45,16.38C16.17,18 14.21,19 12,19Z"; +var mdiChartDonutVariant = "M13,2.05C18.05,2.55 22,6.82 22,12C22,13.45 21.68,14.83 21.12,16.07L18.5,14.54C18.82,13.75 19,12.9 19,12C19,8.47 16.39,5.57 13,5.08V2.05M12,19C14.21,19 16.17,18 17.45,16.38L20.05,17.91C18.23,20.39 15.3,22 12,22C6.47,22 2,17.5 2,12C2,6.81 5.94,2.55 11,2.05V5.08C7.61,5.57 5,8.47 5,12A7,7 0 0,0 12,19M12,6A6,6 0 0,1 18,12C18,14.97 15.84,17.44 13,17.92V14.83C14.17,14.42 15,13.31 15,12A3,3 0 0,0 12,9L11.45,9.05L9.91,6.38C10.56,6.13 11.26,6 12,6M6,12C6,10.14 6.85,8.5 8.18,7.38L9.72,10.05C9.27,10.57 9,11.26 9,12C9,13.31 9.83,14.42 11,14.83V17.92C8.16,17.44 6,14.97 6,12Z"; +var mdiChartGantt = "M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z"; +var mdiChartHistogram = "M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z"; +var mdiChartLine = "M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z"; +var mdiChartLineStacked = "M17.45,15.18L22,6.81V19L22,21H2V3H4V15.54L4,19H4.31L6,19H6.57L10.96,11.44L17.45,15.18M22,3L21.97,3.45L17,11L10,6L6,12V3H22Z"; +var mdiChartLineVariant = "M3.5,18.5L9.5,12.5L13.5,16.5L22,6.92L20.59,5.5L13.5,13.5L9.5,9.5L2,17L3.5,18.5Z"; +var mdiChartMultiline = "M22,6.92L20.59,5.5L17.74,8.72C15.68,6.4 12.83,5 9.61,5C6.72,5 4.07,6.16 2,8L3.42,9.42C5.12,7.93 7.27,7 9.61,7C12.35,7 14.7,8.26 16.38,10.24L13.5,13.5L9.5,9.5L2,17L3.5,18.5L9.5,12.5L13.5,16.5L17.55,11.93C18.3,13.28 18.8,14.83 19,16.5H21C20.78,14.18 20.05,12.09 18.96,10.34L22,6.92Z"; +var mdiChartMultiple = "M22 16V18H6V2H8V13.57L13.71 4.57L16.87 6.68L19.29 4.26L20.71 5.68L17.13 9.29L14.29 7.4L8.82 16M4 20V4H2V22H22V20Z"; +var mdiChartPie = "M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z"; +var mdiChartPpf = "M5 6V8C8.2 8 11.36 9.18 13.57 11.15C15.64 13 16.83 15.5 17 18H18.97A14 12.5 0 0 0 5 6M22 21H2V3H4V19H22Z"; +var mdiChartSankey = "M22 5H4V2H2V22H22V20H4V9C8.09 9 10.13 11 12.29 13.21S17.09 18 22 18V16C17.91 16 15.87 14 13.71 11.79S8.91 7 4 7H22Z"; +var mdiChartSankeyVariant = "M20 4V6H4V4H2V12H4V10C8.16 10 9.92 12.11 11.77 14.34S15.65 19 20 19V21H22V15H20V17C16.59 17 15.07 15.17 13.31 13.06C11.34 10.69 9.1 8 4 8H20V10H22V4Z"; +var mdiChartScatterPlot = "M2,2H4V20H22V22H2V2M9,10A3,3 0 0,1 12,13A3,3 0 0,1 9,16A3,3 0 0,1 6,13A3,3 0 0,1 9,10M13,2A3,3 0 0,1 16,5A3,3 0 0,1 13,8A3,3 0 0,1 10,5A3,3 0 0,1 13,2M18,12A3,3 0 0,1 21,15A3,3 0 0,1 18,18A3,3 0 0,1 15,15A3,3 0 0,1 18,12Z"; +var mdiChartScatterPlotHexbin = "M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z"; +var mdiChartTimeline = "M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z"; +var mdiChartTimelineVariant = "M3,14L3.5,14.07L8.07,9.5C7.89,8.85 8.06,8.11 8.59,7.59C9.37,6.8 10.63,6.8 11.41,7.59C11.94,8.11 12.11,8.85 11.93,9.5L14.5,12.07L15,12C15.18,12 15.35,12 15.5,12.07L19.07,8.5C19,8.35 19,8.18 19,8A2,2 0 0,1 21,6A2,2 0 0,1 23,8A2,2 0 0,1 21,10C20.82,10 20.65,10 20.5,9.93L16.93,13.5C17,13.65 17,13.82 17,14A2,2 0 0,1 15,16A2,2 0 0,1 13,14L13.07,13.5L10.5,10.93C10.18,11 9.82,11 9.5,10.93L4.93,15.5L5,16A2,2 0 0,1 3,18A2,2 0 0,1 1,16A2,2 0 0,1 3,14Z"; +var mdiChartTimelineVariantShimmer = "M21 8C19.5 8 18.7 9.4 19.1 10.5L15.5 14.1C15.2 14 14.8 14 14.5 14.1L11.9 11.5C12.3 10.4 11.5 9 10 9C8.6 9 7.7 10.4 8.1 11.5L3.5 16C2.4 15.7 1 16.5 1 18C1 19.1 1.9 20 3 20C4.4 20 5.3 18.6 4.9 17.5L9.4 12.9C9.7 13 10.1 13 10.4 12.9L13 15.5C12.7 16.5 13.5 18 15 18C16.5 18 17.3 16.6 16.9 15.5L20.5 11.9C21.6 12.2 23 11.4 23 10C23 8.9 22.1 8 21 8M15 9L15.9 6.9L18 6L15.9 5.1L15 3L14.1 5.1L12 6L14.1 6.9L15 9M3.5 11L4 9L6 8.5L4 8L3.5 6L3 8L1 8.5L3 9L3.5 11Z"; +var mdiChartTree = "M14,6H22V22H14V6M2,4H22V2H2V4M2,8H12V6H2V8M9,22H12V10H9V22M2,22H7V10H2V22Z"; +var mdiChat = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3Z"; +var mdiChatAlert = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3M11,14V16H13V14H11M11,12H13V6H11V12Z"; +var mdiChatAlertOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M11 13V15H13V13H11M11 11H13V7H11V11Z"; +var mdiChatMinus = "M23 17V19H15V17H23M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z"; +var mdiChatMinusOutline = "M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5S4 7.69 4 11 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3M23 17V19H15V17H23Z"; +var mdiChatOutline = "M12,3C6.5,3 2,6.58 2,11C2.05,13.15 3.06,15.17 4.75,16.5C4.75,17.1 4.33,18.67 2,21C4.37,20.89 6.64,20 8.47,18.5C9.61,18.83 10.81,19 12,19C17.5,19 22,15.42 22,11C22,6.58 17.5,3 12,3M12,17C7.58,17 4,14.31 4,11C4,7.69 7.58,5 12,5C16.42,5 20,7.69 20,11C20,14.31 16.42,17 12,17Z"; +var mdiChatPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z"; +var mdiChatPlusOutline = "M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5C7.58 5 4 7.69 4 11C4 14.31 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3M18 14H20V17H23V19H20V22H18V19H15V17H18V14Z"; +var mdiChatProcessing = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3M17,12V10H15V12H17M13,12V10H11V12H13M9,12V10H7V12H9Z"; +var mdiChatProcessingOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M17 12V10H15V12H17M13 12V10H11V12H13M9 12V10H7V12H9Z"; +var mdiChatQuestion = "M12 3C6.5 3 2 6.6 2 11C2 13.1 3 15.1 4.8 16.5C4.8 17.1 4.4 18.7 2 21C2 21 5.5 21 8.5 18.5C9.6 18.8 10.8 19 12 19C17.5 19 22 15.4 22 11S17.5 3 12 3M13 15H11V13H13V15M14.8 10C14.5 10.4 14.1 10.6 13.7 10.8C13.4 11 13.3 11.1 13.2 11.3C13 11.5 13 11.7 13 12H11C11 11.5 11.1 11.2 11.3 10.9C11.5 10.7 11.9 10.4 12.4 10.1C12.7 10 12.9 9.8 13 9.6C13.1 9.4 13.2 9.1 13.2 8.9C13.2 8.6 13.1 8.4 12.9 8.2C12.7 8 12.4 7.9 12.1 7.9C11.8 7.9 11.6 8 11.4 8.1C11.2 8.2 11.1 8.4 11.1 8.7H9.1C9.2 8 9.5 7.4 10 7C10.5 6.6 11.2 6.5 12.1 6.5C13 6.5 13.8 6.7 14.3 7.1C14.8 7.5 15.1 8.1 15.1 8.8C15.2 9.2 15.1 9.6 14.8 10Z"; +var mdiChatQuestionOutline = "M12 3C6.5 3 2 6.6 2 11C2 13.2 3.1 15.2 4.8 16.5C4.8 17.1 4.4 18.7 2 21C4.4 20.9 6.6 20 8.5 18.5C9.6 18.8 10.8 19 12 19C17.5 19 22 15.4 22 11S17.5 3 12 3M12 17C7.6 17 4 14.3 4 11S7.6 5 12 5 20 7.7 20 11 16.4 17 12 17M12.2 6.5C11.3 6.5 10.6 6.7 10.1 7C9.5 7.4 9.2 8 9.3 8.7H11.3C11.3 8.4 11.4 8.2 11.6 8.1C11.8 8 12 7.9 12.3 7.9C12.6 7.9 12.9 8 13.1 8.2C13.3 8.4 13.4 8.6 13.4 8.9C13.4 9.2 13.3 9.4 13.2 9.6C13 9.8 12.8 10 12.6 10.1C12.1 10.4 11.7 10.7 11.5 10.9C11.1 11.2 11 11.5 11 12H13C13 11.7 13.1 11.5 13.1 11.3C13.2 11.1 13.4 11 13.6 10.8C14.1 10.6 14.4 10.3 14.7 9.9C15 9.5 15.1 9.1 15.1 8.7C15.1 8 14.8 7.4 14.3 7C13.9 6.7 13.1 6.5 12.2 6.5M11 13V15H13V13H11Z"; +var mdiChatRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.54 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.54L15.46 20.12L17.59 18L15.47 15.88M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z"; +var mdiChatRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.54 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.54L15.46 20.12L17.59 18L15.47 15.88M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5C7.58 5 4 7.69 4 11C4 14.31 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3Z"; +var mdiChatSleep = "M12 3C6.5 3 2 6.58 2 11C2 13.13 3.05 15.07 4.75 16.5C4.7 17.1 4.33 18.67 2 21C2 21 5.55 21 8.47 18.5C9.57 18.82 10.76 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M15 9.3L11.76 13H15V15H9V12.7L12.24 9H9V7H15V9.3Z"; +var mdiChatSleepOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M15 7H9V9H12.24L9 12.7V15H15V13H11.76L15 9.3V7Z"; +var mdiCheck = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"; +var mdiCheckAll = "M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z"; +var mdiCheckBold = "M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"; +var mdiCheckBoxMultipleOutline = "M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H8V4H20V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M18.53,8.06L17.47,7L12.59,11.88L10.47,9.76L9.41,10.82L12.59,14L18.53,8.06Z"; +var mdiCheckBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,5V19H5V5H19M10,17L6,13L7.41,11.58L10,14.17L16.59,7.58L18,9"; +var mdiCheckCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"; +var mdiCheckCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M16.59 7.58L10 14.17L7.41 11.59L6 13L10 17L18 9L16.59 7.58Z"; +var mdiCheckDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9L10,17Z"; +var mdiCheckDecagramOutline = "M23 12L20.6 9.2L20.9 5.5L17.3 4.7L15.4 1.5L12 3L8.6 1.5L6.7 4.7L3.1 5.5L3.4 9.2L1 12L3.4 14.8L3.1 18.5L6.7 19.3L8.6 22.5L12 21L15.4 22.5L17.3 19.3L20.9 18.5L20.6 14.8L23 12M18.7 16.9L16 17.5L14.6 19.9L12 18.8L9.4 19.9L8 17.5L5.3 16.9L5.5 14.1L3.7 12L5.5 9.9L5.3 7.1L8 6.5L9.4 4.1L12 5.2L14.6 4.1L16 6.5L18.7 7.1L18.5 9.9L20.3 12L18.5 14.1L18.7 16.9M16.6 7.6L18 9L10 17L6 13L7.4 11.6L10 14.2L16.6 7.6Z"; +var mdiCheckNetwork = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M8.25,10.08L9.41,8.92L11,10.5L14.59,6.92L15.75,8.33L11,13.08L8.25,10.08Z"; +var mdiCheckNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M8,10.37L9.24,9.13L10.93,10.83L14.76,7L16,8.5L10.93,13.57L8,10.37Z"; +var mdiCheckOutline = "M19.78,2.2L24,6.42L8.44,22L0,13.55L4.22,9.33L8.44,13.55L19.78,2.2M19.78,5L8.44,16.36L4.22,12.19L2.81,13.55L8.44,19.17L21.19,6.42L19.78,5Z"; +var mdiCheckUnderline = "M21,5L9,17L3.5,11.5L4.91,10.09L9,14.17L19.59,3.59L21,5M3,21V19H21V21H3Z"; +var mdiCheckUnderlineCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,18H7V16H17V18M10.3,14L7,10.7L8.4,9.3L10.3,11.2L15.6,5.9L17,7.3L10.3,14Z"; +var mdiCheckUnderlineCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M7,15H17V17H7V15M10.3,11.2L8.4,9.3L7,10.7L10.3,14L17,7.3L15.6,5.9L10.3,11.2Z"; +var mdiCheckbook = "M5,14H19V15H5V14M21,17V8H3V17H21M1,5H23V19H1V5M5,10H12V12H5V10Z"; +var mdiCheckboxBlank = "M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiCheckboxBlankCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCheckboxBlankCircleOutline = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCheckboxBlankOff = "M20.84 22.73L19.1 21C19.06 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.94 3 4.9L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 5C21 3.89 20.1 3 19 3H6.2L21 17.8V5Z"; +var mdiCheckboxBlankOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L3 4.9V19C3 20.11 3.9 21 5 21H19.1L20.84 22.73L22.11 21.46M5 19V6.89L17.11 19H5M8.2 5L6.2 3H19C20.1 3 21 3.89 21 5V17.8L19 15.8V5H8.2Z"; +var mdiCheckboxBlankOutline = "M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z"; +var mdiCheckboxIntermediate = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,17H7V7H17V17Z"; +var mdiCheckboxMarked = "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiCheckboxMarkedCircle = "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCheckboxMarkedCircleOutline = "M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"; +var mdiCheckboxMarkedOutline = "M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"; +var mdiCheckboxMultipleBlank = "M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z"; +var mdiCheckboxMultipleBlankCircle = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z"; +var mdiCheckboxMultipleBlankCircleOutline = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z"; +var mdiCheckboxMultipleBlankOutline = "M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z"; +var mdiCheckboxMultipleMarked = "M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z"; +var mdiCheckboxMultipleMarkedCircle = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17"; +var mdiCheckboxMultipleMarkedCircleOutline = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z"; +var mdiCheckboxMultipleMarkedOutline = "M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z"; +var mdiCheckerboard = "M2 2V22H22V2H2M20 12H16V16H20V20H16V16H12V20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12M16 8V12H12V8H16M12 12V16H8V12H12Z"; +var mdiCheckerboardMinus = "M14 17V19H22V17M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.5C13 21.4 12.6 20.7 12.3 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.4C20.7 12.7 21.4 13.1 22 13.6V2H2Z"; +var mdiCheckerboardPlus = "M19 17H22V19H19V22H17V19H14V17H17V14H19V17M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.54C13 21.42 12.63 20.74 12.36 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.36C20.74 12.63 21.42 13 22 13.54V2H2Z"; +var mdiCheckerboardRemove = "M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.5C13 21.4 12.6 20.7 12.3 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.4C20.7 12.7 21.4 13.1 22 13.6V2H2M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z"; +var mdiCheese = "M11 17.5C11 16.67 11.67 16 12.5 16C12.79 16 13.06 16.09 13.29 16.23L20.75 11.93C20.35 11.22 19.9 10.55 19.41 9.9C19.29 9.96 19.15 10 19 10C18.45 10 18 9.55 18 9C18 8.8 18.08 8.62 18.18 8.46C16.45 6.64 14.34 5.2 12 4.25C11.85 5.24 11 6 10 6C8.9 6 8 5.11 8 4C8 3.72 8.06 3.45 8.16 3.21C7.3 3.08 6.41 3 5.5 3C5.33 3 5.17 3 5 3.03V9.05C6.14 9.28 7 10.29 7 11.5S6.14 13.72 5 13.95V21L11 17.54C11 17.53 11 17.5 11 17.5M14 9C15.11 9 16 9.9 16 11S15.11 13 14 13 12 12.11 12 11 12.9 9 14 9M9 16C8.45 16 8 15.55 8 15S8.45 14 9 14 10 14.45 10 15 9.55 16 9 16M9 10C8.45 10 8 9.55 8 9S8.45 8 9 8 10 8.45 10 9 9.55 10 9 10Z"; +var mdiCheeseOff = "M3.5 1.7L2.2 3L6.1 6.9V9C7.2 9.2 8.1 10.2 8.1 11.5S7.2 13.7 6.1 14V21L12.1 17.5C12.1 16.7 12.8 16 13.6 16C13.9 16 14.2 16.1 14.4 16.2L15.1 15.8L20.3 21L21.6 19.7L3.5 1.7M10.1 16C9.6 16 9.1 15.5 9.1 15S9.6 14 10.1 14 11.1 14.5 11.1 15 10.6 16 10.1 16M13.8 9.5L9.9 5.6C10.2 5.9 10.6 6 11.1 6C12.1 6 12.9 5.2 13.1 4.2C15.4 5.2 17.6 6.6 19.3 8.4C19.2 8.6 19.1 8.7 19.1 8.9C19.1 9.4 19.6 9.9 20.1 9.9C20.3 9.9 20.4 9.9 20.5 9.8C21 10.4 21.4 11.1 21.8 11.8L18.3 13.8L16.6 12.1C16.9 11.8 17.1 11.3 17.1 10.8C17.1 9.7 16.2 8.8 15.1 8.8C14.6 9 14.1 9.2 13.8 9.5M9.5 5.2L7.3 3C8 3 8.6 3.1 9.2 3.2C9.1 3.5 9.1 3.7 9.1 4C9.1 4.4 9.2 4.9 9.5 5.2Z"; +var mdiChefHat = "M12.5,1.5C10.73,1.5 9.17,2.67 8.67,4.37C8.14,4.13 7.58,4 7,4A4,4 0 0,0 3,8C3,9.82 4.24,11.41 6,11.87V19H19V11.87C20.76,11.41 22,9.82 22,8A4,4 0 0,0 18,4C17.42,4 16.86,4.13 16.33,4.37C15.83,2.67 14.27,1.5 12.5,1.5M12,10.5H13V17.5H12V10.5M9,12.5H10V17.5H9V12.5M15,12.5H16V17.5H15V12.5M6,20V21A1,1 0 0,0 7,22H18A1,1 0 0,0 19,21V20H6Z"; +var mdiChemicalWeapon = "M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z"; +var mdiChessBishop = "M19,22H5V20H19V22M17.16,8.26C18.22,9.63 18.86,11.28 19,13C19,15.76 15.87,18 12,18C8.13,18 5,15.76 5,13C5,10.62 7.33,6.39 10.46,5.27C10.16,4.91 10,4.46 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.46 13.84,4.91 13.54,5.27C14.4,5.6 15.18,6.1 15.84,6.74L11.29,11.29L12.71,12.71L17.16,8.26Z"; +var mdiChessKing = "M19,22H5V20H19V22M17,10C15.58,10 14.26,10.77 13.55,12H13V7H16V5H13V2H11V5H8V7H11V12H10.45C9.35,10.09 6.9,9.43 5,10.54C3.07,11.64 2.42,14.09 3.5,16C4.24,17.24 5.57,18 7,18H17A4,4 0 0,0 21,14A4,4 0 0,0 17,10Z"; +var mdiChessKnight = "M19,22H5V20H19V22M13,2V2C11.75,2 10.58,2.62 9.89,3.66L7,8L9,10L11.06,8.63C11.5,8.32 12.14,8.44 12.45,8.9C12.47,8.93 12.5,8.96 12.5,9V9C12.8,9.59 12.69,10.3 12.22,10.77L7.42,15.57C6.87,16.13 6.87,17.03 7.43,17.58C7.69,17.84 8.05,18 8.42,18H17V6A4,4 0 0,0 13,2Z"; +var mdiChessPawn = "M19 22H5V20H19V22M16 18H8L10.18 10H8V8H10.72L10.79 7.74C10.1 7.44 9.55 6.89 9.25 6.2C8.58 4.68 9.27 2.91 10.79 2.25C12.31 1.58 14.08 2.27 14.74 3.79C15.41 5.31 14.72 7.07 13.2 7.74L13.27 8H16V10H13.82L16 18Z"; +var mdiChessQueen = "M18,3A2,2 0 0,1 20,5C20,5.81 19.5,6.5 18.83,6.82L17,13.15V18H7V13.15L5.17,6.82C4.5,6.5 4,5.81 4,5A2,2 0 0,1 6,3A2,2 0 0,1 8,5C8,5.5 7.82,5.95 7.5,6.3L10.3,9.35L10.83,5.62C10.33,5.26 10,4.67 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.67 13.67,5.26 13.17,5.62L13.7,9.35L16.47,6.29C16.18,5.94 16,5.5 16,5A2,2 0 0,1 18,3M5,20H19V22H5V20Z"; +var mdiChessRook = "M5,20H19V22H5V20M17,2V5H15V2H13V5H11V2H9V5H7V2H5V8H7V18H17V8H19V2H17Z"; +var mdiChevronDoubleDown = "M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z"; +var mdiChevronDoubleLeft = "M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z"; +var mdiChevronDoubleRight = "M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z"; +var mdiChevronDoubleUp = "M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z"; +var mdiChevronDown = "M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"; +var mdiChevronDownBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M12,15.71L6,9.71L7.41,8.29L12,12.88L16.59,8.29L18,9.71L12,15.71Z"; +var mdiChevronDownBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M7.41,8.29L12,12.88L16.59,8.29L18,9.71L12,15.71L6,9.71L7.41,8.29Z"; +var mdiChevronDownCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M6,10L12,16L18,10L16.6,8.6L12,13.2L7.4,8.6L6,10Z"; +var mdiChevronDownCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M6,10L12,16L18,10L16.6,8.6L12,13.2L7.4,8.6L6,10Z"; +var mdiChevronLeft = "M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z"; +var mdiChevronLeftBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M15.71,16.59L14.29,18L8.29,12L14.29,6L15.71,7.41L11.12,12L15.71,16.59Z"; +var mdiChevronLeftBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M15.71,7.41L11.12,12L15.71,16.59L14.29,18L8.29,12L14.29,6L15.71,7.41Z"; +var mdiChevronLeftCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.4,16.6L10.8,12L15.4,7.4L14,6L8,12L14,18L15.4,16.6Z"; +var mdiChevronLeftCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M15.4,16.6L10.8,12L15.4,7.4L14,6L8,12L14,18L15.4,16.6Z"; +var mdiChevronRight = "M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"; +var mdiChevronRightBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M9.71,18L8.29,16.59L12.88,12L8.29,7.41L9.71,6L15.71,12L9.71,18Z"; +var mdiChevronRightBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M8.29,16.59L12.88,12L8.29,7.41L9.71,6L15.71,12L9.71,18L8.29,16.59Z"; +var mdiChevronRightCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,18L16,12L10,6L8.6,7.4L13.2,12L8.6,16.6L10,18Z"; +var mdiChevronRightCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M8.6,16.6L13.2,12L8.6,7.4L10,6L16,12L10,18L8.6,16.6Z"; +var mdiChevronTripleDown = "M7.41,14.58L12,19.17L16.59,14.58L18,16L12,22L6,16L7.41,14.58M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58M7.41,2.58L12,7.17L16.59,2.58L18,4L12,10L6,4L7.41,2.58Z"; +var mdiChevronTripleLeft = "M9.42,7.41L4.83,12L9.42,16.59L8,18L2,12L8,6L9.42,7.41M15.42,7.41L10.83,12L15.42,16.59L14,18L8,12L14,6L15.42,7.41M21.42,7.41L16.83,12L21.42,16.59L20,18L14,12L20,6L21.42,7.41Z"; +var mdiChevronTripleRight = "M14.58,16.59L19.17,12L14.58,7.41L16,6L22,12L16,18L14.58,16.59M8.58,16.59L13.17,12L8.58,7.41L10,6L16,12L10,18L8.58,16.59M2.58,16.59L7.17,12L2.58,7.41L4,6L10,12L4,18L2.58,16.59Z"; +var mdiChevronTripleUp = "M16.59,9.42L12,4.83L7.41,9.42L6,8L12,2L18,8L16.59,9.42M16.59,15.42L12,10.83L7.41,15.42L6,14L12,8L18,14L16.59,15.42M16.59,21.42L12,16.83L7.41,21.42L6,20L12,14L18,20L16.59,21.42Z"; +var mdiChevronUp = "M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"; +var mdiChevronUpBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M16.59,15.71L12,11.12L7.41,15.71L6,14.29L12,8.29L18,14.29L16.59,15.71Z"; +var mdiChevronUpBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M16.59,15.71L12,11.12L7.41,15.71L6,14.29L12,8.29L18,14.29L16.59,15.71Z"; +var mdiChevronUpCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z"; +var mdiChevronUpCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z"; +var mdiChiliHot = "M17.75,9L18.95,8.24C19.58,8.58 20,9.24 20,10V21.75C20,21.75 12,20 12,11V10C12,9.27 12.39,8.63 12.97,8.28L14.43,9L16,8L17.75,9M14,2C15.53,2 16.8,3.15 17,4.64C18,4.93 18.81,5.67 19.22,6.63L17.75,7.5L16,6.5L14.43,7.5L12.76,6.67C13.15,5.72 13.95,5 14.94,4.66C14.8,4.28 14.43,4 14,4V2M10,10C10,18 13.63,19.84 16,21.75C16,21.75 8,20 8,11V10C8,9.27 8.39,8.63 8.97,8.28L10.3,8.94C10.11,9.25 10,9.61 10,10M10.43,7.5L8.76,6.67C9.15,5.72 9.95,5 10.94,4.66C10.8,4.28 10.43,4 10,4V2C10.77,2 11.47,2.29 12,2.76V4C12.43,4 12.8,4.28 12.94,4.66C11.95,5 11.15,5.72 10.43,7.5M6,10C6,18 9.63,19.84 12,21.75C12,21.75 4,20 4,11V10C4,9.27 4.39,8.63 4.97,8.28L6.3,8.94C6.11,9.25 6,9.61 6,10M6.43,7.5L4.76,6.67C5.15,5.72 5.95,5 6.94,4.66C6.8,4.28 6.43,4 6,4V2C6.77,2 7.47,2.29 8,2.76V4C8.43,4 8.8,4.28 8.94,4.66C7.95,5 7.15,5.72 6.43,7.5Z"; +var mdiChiliMedium = "M15.75,9L16.95,8.24C17.58,8.58 18,9.24 18,10V21.75C18,21.75 10,20 10,11V10C10,9.27 10.39,8.63 10.97,8.28L12.43,9L14,8L15.75,9M12,2C13.53,2 14.8,3.15 15,4.64C16,4.93 16.81,5.67 17.22,6.63L15.75,7.5L14,6.5L12.43,7.5L10.76,6.67C11.15,5.72 11.95,5 12.94,4.66C12.8,4.28 12.43,4 12,4V2M8,10C8,18 11.63,19.84 14,21.75C14,21.75 6,20 6,11V10C6,9.27 6.39,8.63 6.97,8.28L8.3,8.94C8.11,9.25 8,9.61 8,10M8.43,7.5L6.76,6.67C7.15,5.72 7.95,5 8.94,4.66C8.8,4.28 8.43,4 8,4V2C8.77,2 9.47,2.29 10,2.76V4C10.43,4 10.8,4.28 10.94,4.66C9.95,5 9.15,5.72 8.43,7.5Z"; +var mdiChiliMild = "M13.75,9L14.95,8.24C15.58,8.58 16,9.24 16,10V21.75C16,21.75 8,20 8,11V10C8,9.27 8.39,8.63 8.97,8.28L10.43,9L12,8L13.75,9M10,2C11.53,2 12.8,3.15 13,4.64C14,4.93 14.81,5.67 15.22,6.63L13.75,7.5L12,6.5L10.43,7.5L8.76,6.67C9.15,5.72 9.95,5 10.94,4.66C10.8,4.28 10.43,4 10,4V2Z"; +var mdiChiliOff = "M20.8 22.7L16 17.9V21.8C16 21.8 8 20 8 11V10 9.9L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M13.8 9L12 8L11.5 8.3L16 12.8V10C16 9.2 15.6 8.6 15 8.2L13.8 9M12 6.5L13.8 7.5L15.3 6.6C14.9 5.6 14.1 4.9 13.1 4.6C12.8 3.2 11.5 2 10 2V4C10.4 4 10.8 4.3 10.9 4.7C10.2 4.9 9.6 5.4 9.2 6L10.6 7.4L12 6.5Z"; +var mdiChip = "M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z"; +var mdiChristianity = "M10.5,2H13.5V8H19V11H13.5V22H10.5V11H5V8H10.5V2Z"; +var mdiChristianityOutline = "M15.5,6V1H8.5V6H3V13H8.5V23H15.5V13H21V6H15.5M19,11H13.5V21H10.5V11H5V8H10.5V3H13.5V8H19V11Z"; +var mdiChurch = "M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z"; +var mdiCigar = "M16 10.2H14.5A2 2 0 0 1 12.65 8.2A1.78 1.78 0 0 1 14.5 6.45V5A3.35 3.35 0 1 0 14.5 11.7H16A1.93 1.93 0 0 1 18 13.7V15H19.5V13.36A3.31 3.31 0 0 0 16 10.2M18.82 7.73A3.34 3.34 0 0 0 16.5 2V3.5A1.85 1.85 0 1 1 16.5 7.2V8.7A4 4 0 0 1 20.5 12.77V15H22V12.76A5.55 5.55 0 0 0 18.85 7.73M18 16V22H19.5V16M20.5 16V22H22V16M12 16V17.27A2 2 0 0 1 12 20.73V22H17V16M2.88 16.88A3 3 0 0 0 5 22H10V20.73A2 2 0 0 1 10 17.27V16H5A3 3 0 0 0 2.88 16.88M12 19A1 1 0 1 1 11 18A1 1 0 0 1 12 19Z"; +var mdiCigarOff = "M20.84 22.73L18.11 20H18V19.89L17 18.89V20H12V18.73C12.3 18.56 12.55 18.31 12.73 18C13.28 17.05 12.96 15.83 12 15.27V14H12.11L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M14.5 9.7H16C17.07 9.66 17.96 10.5 18 11.56C18 11.61 18 11.65 18 11.7V13H19.5V11.36C19.42 9.53 17.88 8.12 16.05 8.2L16 8.2H14.5C13.45 8.12 12.65 7.25 12.65 6.2C12.67 5.22 13.5 4.43 14.46 4.45L14.5 4.45V3C12.65 3 11.15 4.5 11.15 6.35S12.65 9.7 14.5 9.7M20.5 10.7L20.5 10.77V13H22V10.76C22 8.62 20.78 6.66 18.85 5.73H18.82C19.58 5 19.9 4 19.8 3H18.32C18.34 3.11 18.35 3.23 18.35 3.35C18.35 4.37 17.5 5.2 16.5 5.2H16.5V6.7C18.71 6.7 20.5 8.5 20.5 10.7M9.27 16C9.45 15.7 9.7 15.45 10 15.27V14H5C4.21 14 3.44 14.32 2.88 14.88C1.71 16.05 1.71 17.95 2.88 19.12C3.45 19.68 4.21 20 5 20H10V18.73C9.05 18.18 8.72 16.95 9.27 16M18 14.8L19.5 16.3V14H18V14.8M20.5 17.3L22 18.8V14H20.5V17.3M11 16C10.45 16 10 16.45 10 17S10.45 18 11 18 12 17.55 12 17 11.55 16 11 16Z"; +var mdiCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCircleBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 16C9.79 16 8 14.21 8 12S9.79 8 12 8 16 9.79 16 12 14.21 16 12 16Z"; +var mdiCircleBoxOutline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 8C9.79 8 8 9.79 8 12S9.79 16 12 16 16 14.21 16 12 14.21 8 12 8Z"; +var mdiCircleDouble = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z"; +var mdiCircleEditOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12H20A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4V2M18.78,3C18.61,3 18.43,3.07 18.3,3.2L17.08,4.41L19.58,6.91L20.8,5.7C21.06,5.44 21.06,5 20.8,4.75L19.25,3.2C19.12,3.07 18.95,3 18.78,3M16.37,5.12L9,12.5V15H11.5L18.87,7.62L16.37,5.12Z"; +var mdiCircleExpand = "M16,4L20,8V4M20,16L16,20H20M8,20L4,16V20M4,8L8,4H4M16.95,7.05C14.22,4.32 9.78,4.32 7.05,7.05C4.32,9.78 4.32,14.22 7.05,16.95C9.78,19.68 14.22,19.68 16.95,16.95C19.68,14.22 19.68,9.79 16.95,7.05M15.85,15.85C13.72,18 10.28,18 8.15,15.85C6,13.72 6,10.28 8.15,8.15C10.28,6 13.72,6 15.85,8.15C18,10.28 18,13.72 15.85,15.85Z"; +var mdiCircleHalf = "M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22V2Z"; +var mdiCircleHalfFull = "M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 22 12A10 10 0 0 0 12 2M12 4A8 8 0 0 1 20 12A8 8 0 0 1 12 20V4Z"; +var mdiCircleMedium = "M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8Z"; +var mdiCircleMultiple = "M15 4A8 8 0 1 1 7 12A8 8 0 0 1 15 4M3 12A6 6 0 0 0 7 17.65V19.74A8 8 0 0 1 7 4.26V6.35A6 6 0 0 0 3 12Z"; +var mdiCircleMultipleOutline = "M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z"; +var mdiCircleOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.06 5.95C2.78 7.63 2 9.72 2 12C2 17.5 6.5 22 12 22C14.28 22 16.37 21.23 18.05 19.94L20.84 22.73L22.11 21.46M12 20C7.58 20 4 16.42 4 12C4 10.27 4.56 8.68 5.5 7.38L16.62 18.5C15.32 19.45 13.73 20 12 20M8.17 4.97L6.72 3.5C8.25 2.56 10.06 2 12 2C17.5 2 22 6.5 22 12C22 13.94 21.44 15.75 20.5 17.28L19.03 15.83C19.65 14.69 20 13.39 20 12C20 7.58 16.42 4 12 4C10.61 4 9.31 4.35 8.17 4.97Z"; +var mdiCircleOutline = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCircleSlice1 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C13.93 5 15.68 5.78 16.95 7.05L12 12V5Z"; +var mdiCircleSlice2 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12H12V5Z"; +var mdiCircleSlice3 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 13.93 18.22 15.68 16.95 16.95L12 12V5Z"; +var mdiCircleSlice4 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19V5Z"; +var mdiCircleSlice5 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C10.07 19 8.32 18.22 7.05 16.95L12 12V5Z"; +var mdiCircleSlice6 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12H12V5Z"; +var mdiCircleSlice7 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12C5 10.07 5.78 8.32 7.05 7.05L12 12V5Z"; +var mdiCircleSlice8 = "M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4Z"; +var mdiCircleSmall = "M12,10A2,2 0 0,0 10,12C10,13.11 10.9,14 12,14C13.11,14 14,13.11 14,12A2,2 0 0,0 12,10Z"; +var mdiCircularSaw = "M13,11A1,1 0 0,1 14,12A1,1 0 0,1 13,13A1,1 0 0,1 12,12A1,1 0 0,1 13,11M7.86,6.25C9.14,4.87 10.97,4 13,4C16.5,4 19.44,6.61 19.93,10H22V12H16A3,3 0 0,0 13,9A3,3 0 0,0 10,12H2V10H2.05C2.25,7.73 3.14,5.66 4.5,4L7.86,6.25M6.73,7.89L5.06,6.77C4.53,7.75 4.18,8.84 4.06,10H6.07C6.18,9.25 6.4,8.54 6.73,7.89M7.4,15.4L6,14H11.79C12.03,14.42 12.5,14.7 13,14.7C13.5,14.7 13.97,14.42 14.21,14H20V15.4C18.39,14.42 18.46,15.75 18.46,15.75V17.71L16.5,19.67C16,17.92 15.1,18.9 15.1,18.9L13.7,20.3H10.9C11.88,18.69 10.55,18.76 10.55,18.76H8.59L6.63,16.8C8.38,16.31 7.4,15.4 7.4,15.4Z"; +var mdiCity = "M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z"; +var mdiCityVariant = "M19,9V7A2,2 0 0,0 17,5H16V2H14V5H13A2,2 0 0,0 11,7V9A2,2 0 0,0 9,11V12H5A2,2 0 0,0 3,14V22H6V20H8V22H12V20H14V22H16V20H18V22H21V11A2,2 0 0,0 19,9M8,18H6V16H8V18M14,18H12V16H14V18M14,14H12V12H14V14M13,9V7H17V9H13M18,18H16V16H18V18M18,14H16V12H18V14Z"; +var mdiCityVariantOutline = "M15,23H13V21H15V23M19,21H17V23H19V21M15,17H13V19H15V17M7,21H5V23H7V21M7,17H5V19H7V17M19,17H17V19H19V17M15,13H13V15H15V13M19,13H17V15H19V13M21,9A2,2 0 0,1 23,11V23H21V11H11V23H9V15H3V23H1V15A2,2 0 0,1 3,13H9V11A2,2 0 0,1 11,9V7A2,2 0 0,1 13,5H15V1H17V5H19A2,2 0 0,1 21,7V9M19,9V7H13V9H19Z"; +var mdiClipboard = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3"; +var mdiClipboardAccount = "M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardAccountOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M12,9A2,2 0 0,1 14,11A2,2 0 0,1 12,13A2,2 0 0,1 10,11A2,2 0 0,1 12,9M8,17V16C8,14.9 9.79,14 12,14C14.21,14 16,14.9 16,16V17H8Z"; +var mdiClipboardAlert = "M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardAlertOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M11,9H13V13.5H11V9M11,15H13V17H11V15Z"; +var mdiClipboardArrowDown = "M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardArrowDownOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M12,18L7,13H10V9H14V13H17L12,18Z"; +var mdiClipboardArrowLeft = "M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardArrowLeftOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M7,13L12,18V15H16V11H12V8L7,13Z"; +var mdiClipboardArrowRight = "M17,13L12,18V15H8V11H12V8M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardArrowRightOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M16.91,13L11.91,18V15H7.91V11H11.91V8L16.91,13Z"; +var mdiClipboardArrowUp = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,8L7,13H10V17H14V13H17L12,8M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z"; +var mdiClipboardArrowUpOutline = "M12,8L17,13H14V17H10V13H7L12,8M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7Z"; +var mdiClipboardCheck = "M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardCheckMultiple = "M4 7H2V21C2 22.1 2.9 23 4 23H18V21H4M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3M12.3 15.1L9 11.8L10.4 10.4L12.3 12.3L17.6 7L19 8.4"; +var mdiClipboardCheckMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M12.8 15.35L9.5 12.05L10.9 10.65L12.8 12.55L17.1 8.25L18.5 9.65L12.8 15.35M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z"; +var mdiClipboardCheckOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M7.5,13.5L9,12L11,14L15.5,9.5L17,11L11,17L7.5,13.5Z"; +var mdiClipboardClock = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C14.09 23 12.37 22.24 11.11 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1S14.4 1.84 14.82 3H19C20.11 3 21 3.9 21 5V11.11C22.24 12.37 23 14.09 23 16M11 4C11 4.55 11.45 5 12 5S13 4.55 13 4 12.55 3 12 3 11 3.45 11 4M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; +var mdiClipboardClockOutline = "M21 11.11V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H11.11C12.37 22.24 14.09 23 16 23C19.87 23 23 19.87 23 16C23 14.09 22.24 12.37 21 11.11M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M5 19V5H7V7H17V5H19V9.68C18.09 9.25 17.08 9 16 9C12.13 9 9 12.13 9 16C9 17.08 9.25 18.09 9.68 19H5M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25Z"; +var mdiClipboardEdit = "M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M19 3C20.1 3 21 3.9 21 5V9L11 19V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"; +var mdiClipboardEditOutline = "M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M11 19L9 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19C20.1 3 21 3.9 21 5V9L19 11V5H17V7H7V5H5V19H11M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"; +var mdiClipboardFile = "M19 3C20.1 3 21 3.9 21 5V9.17L19.83 8H15C12.79 8 11 9.79 11 12V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3M15 23C13.9 23 13 22.11 13 21V12C13 10.9 13.9 10 15 10H19L23 14V21C23 22.11 22.11 23 21 23H15M21 14.83L18.17 12H18V15H21V14.83Z"; +var mdiClipboardFileOutline = "M15 23C13.9 23 13 22.11 13 21V12C13 10.9 13.9 10 15 10H19L23 14V21C23 22.11 22.11 23 21 23H15M15 21H21V14.83L18.17 12H15V21M19 3C20.1 3 21 3.9 21 5V9.17L19.83 8H19V5H17V7H7V5H5V19H11V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"; +var mdiClipboardFlow = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16"; +var mdiClipboardFlowOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M10 16H8V11H6L9 8L12 11H10V16M14 10H16V15H18L15 18L12 15H14V10Z"; +var mdiClipboardList = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 8H9V12H8V9H7V8M10 17V18H7V17.08L9 15H7V14H9.25C9.66 14 10 14.34 10 14.75C10 14.95 9.92 15.14 9.79 15.27L8.12 17H10M11 4C11 3.45 11.45 3 12 3S13 3.45 13 4 12.55 5 12 5 11 4.55 11 4M17 17H12V15H17V17M17 11H12V9H17V11Z"; +var mdiClipboardListOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M12 17V15H17V17H12M12 11V9H17V11H12M8 12V9H7V8H9V12H8M9.25 14C9.66 14 10 14.34 10 14.75C10 14.95 9.92 15.14 9.79 15.27L8.12 17H10V18H7V17.08L9 15H7V14H9.25"; +var mdiClipboardMinus = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M16 14H8V12H16V14Z"; +var mdiClipboardMinusOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M19 19H5V5H7V7H17V5H19V19M8 12H16V14H8V12Z"; +var mdiClipboardMultiple = "M4 7H2V21C2 22.1 2.9 23 4 23H18V21H4M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3Z"; +var mdiClipboardMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z"; +var mdiClipboardOff = "M21 5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L21 17.8V5M12 5C11.45 5 11 4.55 11 4S11.45 3 12 3 13 3.45 13 4 12.55 5 12 5M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46Z"; +var mdiClipboardOffOutline = "M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M5 19V6.89L17.11 19H5M17 7V5H19V15.8L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3Z"; +var mdiClipboardOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z"; +var mdiClipboardPlay = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M10,17V9L15,13L10,17Z"; +var mdiClipboardPlayMultiple = "M4 21H18V23H4C2.9 23 2 22.1 2 21V7H4M22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.2C11.6 1.8 12.7 1 14 1C15.3 1 16.4 1.8 16.8 3H20C21.1 3 22 3.9 22 5M13 4C13 4.5 13.5 5 14 5C14.5 5 15 4.5 15 4C15 3.5 14.6 3 14 3C13.4 3 13 3.5 13 4M17 12L12 8V16"; +var mdiClipboardPlayMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.2C11.6 1.8 12.7 1 14 1C15.3 1 16.4 1.8 16.8 3H20M14 3C13.4 3 13 3.5 13 4C13 4.5 13.4 5 14 5C14.6 5 15 4.6 15 4C15 3.4 14.6 3 14 3M10 7V5H8V17H20V5H18V7M12 15V9L17 12"; +var mdiClipboardPlayOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M10,17V9L15,13L10,17Z"; +var mdiClipboardPlus = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M13,12H16V14H13V17H11V14H8V12H11V9H13V12Z"; +var mdiClipboardPlusOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M13 12H16V14H13V17H11V14H8V12H11V9H13V12Z"; +var mdiClipboardPulse = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M5,13.46H7.17L10.5,7.08L11.44,14.05L13.93,10.86L16.53,13.46H19V15H15.89L14.07,13.21L10.38,17.92L9.62,12.15L8.11,15H5V13.46Z"; +var mdiClipboardPulseOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M5,15H8.11L9.62,12.15L10.38,17.92L14.07,13.21L15.89,15H19V19H5V15M19,13.46H16.53L13.93,10.86L11.44,14.05L10.5,7.08L7.17,13.46H5V5H7V6H17V5H19V6L19,13.46Z"; +var mdiClipboardRemove = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M15.54 15.12L14.12 16.54L12 14.41L9.88 16.54L8.47 15.12L10.59 13L8.47 10.88L9.88 9.47L12 11.59L14.12 9.47L15.54 10.88L13.41 13L15.54 15.12Z"; +var mdiClipboardRemoveOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M19 19H5V5H7V7H17V5H19V19M15.54 10.88L13.41 13L15.54 15.12L14.12 16.54L12 14.41L9.88 16.54L8.47 15.12L10.59 13L8.47 10.88L9.88 9.47L12 11.59L14.12 9.47L15.54 10.88Z"; +var mdiClipboardSearch = "M11.9 10.9C14.41 8.4 18.45 8.37 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C9.37 17.56 9.37 13.44 11.9 10.9M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; +var mdiClipboardSearchOutline = "M11.03 19H5V5H7V7H17V5H19V9.5C19.72 9.8 20.4 10.24 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C11.57 19.76 11.27 19.39 11.03 19M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; +var mdiClipboardText = "M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiClipboardTextMultiple = "M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3M16 14H9V12H16M19 10H9V8H19M4 21H18V23H4C2.9 23 2 22.1 2 21V7H4"; +var mdiClipboardTextMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7M15 15H10V13H15M18 11H10V9H18V11Z"; +var mdiClipboardTextOff = "M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M7 11H9.11L11.11 13H7V11M14 17H7V15H13.11L14 15.89V17M17 7V9H12.2L14.2 11H17V13H16.2L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3Z"; +var mdiClipboardTextOffOutline = "M17 7V5H19V15.8L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.25 1.44 12.53 .64 11 1.2C10.14 1.5 9.5 2.16 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M14.2 11L12.2 9H17V11H14.2M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M5 19V6.89L7.11 9H7V11H9.11L11.11 13H7V15H13.11L17.11 19H5Z"; +var mdiClipboardTextOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M17,11H7V9H17V11M15,15H7V13H15V15Z"; +var mdiClipboardTextPlay = "M19,3A2,2 0 0,1 21,5V13.34C20.36,13.11 19.68,13 19,13C15.68,13 13,15.69 13,19C13,19.68 13.11,20.36 13.34,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.5,2.16 10.14,1.5 11,1.2C12.53,0.64 14.25,1.44 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M11,17V15H7V17H11M13,13V11H7V13H13M17,9V7H7V9H17M17,16L22,19L17,22V16Z"; +var mdiClipboardTextPlayOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H15V19H5V5H7V7H17V5H19V14H21V5A2,2 0 0,0 19,3M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M17,16V22L22,19L17,16M17,11H7V9H17V11M15,15H7V13H15V15Z"; +var mdiClipboardTextSearch = "M10.18 17H7V15H10C10.08 14.32 10.23 13.64 10.5 13H7V11H11.82C11.85 10.97 11.87 10.94 11.9 10.9C13.17 9.64 14.84 9 16.5 9H7V7H17V9H16.5C18.12 9 19.74 9.61 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C11 19.21 10.45 18.13 10.18 17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; +var mdiClipboardTextSearchOutline = "M17 9H16.5 17M7 15H10C10.08 14.32 10.23 13.64 10.5 13H7V15M11.9 10.9C13.17 9.64 14.84 9 16.5 9H7V11H11.82C11.85 10.97 11.87 10.94 11.9 10.9M11.9 20.1C12.26 20.45 12.65 20.74 13.06 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H9.18C9.5 2.16 10.14 1.5 11 1.2C12.53 .64 14.25 1.44 14.82 3H19C20.11 3 21 3.9 21 5V10.82C20.4 10.24 19.72 9.8 19 9.5V5H17V7H7V5H5V19H11.03C11.27 19.39 11.57 19.76 11.9 20.1M11 4C11 4.55 11.45 5 12 5S13 4.55 13 4 12.55 3 12 3 11 3.45 11 4M23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5Z"; +var mdiClippy = "M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z"; +var mdiClock = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z"; +var mdiClockAlert = "M20 12H22V18H20V12M20 20H22V22H20V20M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22C14.3 22 16.3 21.2 18 20V10H21.8C20.9 5.4 16.8 2 12 2M16.2 16.2L11 13V7H12.5V12.2L17 14.9L16.2 16.2Z"; +var mdiClockAlertOutline = "M11 7V13L16.2 16.1L17 14.9L12.5 12.2V7H11M20 12V18H22V12H20M20 20V22H22V20H20M18 20C16.3 21.3 14.3 22 12 22C6.5 22 2 17.5 2 12S6.5 2 12 2C16.8 2 20.9 5.4 21.8 10H19.7C18.8 6.6 15.7 4 12 4C7.6 4 4 7.6 4 12S7.6 20 12 20C14.4 20 16.5 18.9 18 17.3V20Z"; +var mdiClockCheck = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13 19C13 17.5 13.5 16.2 14.4 15.1L11 13V7H12.5V12.2L15.6 14.1C16.6 13.4 17.7 13 19 13C20 13 21 13.3 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.3 21 13 20 13 19Z"; +var mdiClockCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13.1 19.9C12.7 20 12.4 20 12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12C20 12.4 20 12.7 19.9 13.1C20.6 13.2 21.2 13.4 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12C2 17.5 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.4 21.3 13.2 20.6 13.1 19.9M15.6 14.1L12.5 12.3V7H11V13L14.5 15.1C14.8 14.7 15.2 14.4 15.6 14.1Z"; +var mdiClockDigital = "M2,6A2,2 0 0,0 0,8V16A2,2 0 0,0 2,18H22A2,2 0 0,0 24,16V8A2,2 0 0,0 22,6M2,8H22V16H2M3,9V10.5H6.25L3,15H4.75L8,10.5V9M9.25,9V10.5H10.75V9M12,9V10.5H13.5V15H15V9M17,9A1,1 0 0,0 16,10V14A1,1 0 0,0 17,15H20A1,1 0 0,0 21,14V10A1,1 0 0,0 20,9M17.5,10.5H19.5V13.5H17.5M9.25,13.5V15H10.75V13.5"; +var mdiClockEnd = "M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19"; +var mdiClockFast = "M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z"; +var mdiClockIn = "M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12"; +var mdiClockOut = "M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12"; +var mdiClockOutline = "M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"; +var mdiClockStart = "M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16"; +var mdiClockTimeEight = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M7.7 15.5L7 14.2L11 11.9V7H12.5V12.8L7.7 15.5Z"; +var mdiClockTimeEightOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 12.8L7.7 15.6L7 14.2L11 11.9V7H12.5V12.8Z"; +var mdiClockTimeEleven = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11L8.5 8.6L9.8 7.8L11 10V7H12.5V13Z"; +var mdiClockTimeElevenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V13H11L8.5 8.6L9.8 7.8L11 10V7H12.5Z"; +var mdiClockTimeFive = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M14 17L11 11.8V7H12.5V11.4L15.3 16.3L14 17Z"; +var mdiClockTimeFiveOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M15.3 16.2L14 17L11 11.8V7H12.5V11.4L15.3 16.2Z"; +var mdiClockTimeFour = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M16.3 15.2L11 12.3V7H12.5V11.4L17 13.9L16.3 15.2Z"; +var mdiClockTimeFourOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 13.9L16.3 15.2L11 12.3V7H12.5V11.4L17 13.9Z"; +var mdiClockTimeNine = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H7V11.5H11V7H12.5V13Z"; +var mdiClockTimeNineOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V13H7V11.5H11V7H12.5Z"; +var mdiClockTimeOne = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.3 13H11V7H12.5V9.7L14 7.1L15.3 7.9L12.3 13Z"; +var mdiClockTimeOneOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M15.3 7.8L12.3 13H11V7H12.5V9.65L14 7.05L15.3 7.8Z"; +var mdiClockTimeSeven = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 12.2L9.8 17L8.5 16.2L11 11.8V7H12.5V12.2Z"; +var mdiClockTimeSevenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V12.2L9.8 17L8.5 16.2L11 11.8V7H12.5Z"; +var mdiClockTimeSix = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 17H11V7H12.5V17Z"; +var mdiClockTimeSixOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V17H11V7H12.5Z"; +var mdiClockTimeTen = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11L7 10.7L7.8 9.4L11.1 11.3V7H12.6V13Z"; +var mdiClockTimeTenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13H11L7 10.7L7.8 9.4L11.1 11.3V7H12.6V13Z"; +var mdiClockTimeThree = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M17 13H11V7H12.5V11.5H17V13Z"; +var mdiClockTimeThreeOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 11.5V13H11V7H12.5V11.5H17Z"; +var mdiClockTimeTwelve = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11V7H12.5V13Z"; +var mdiClockTimeTwelveOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13.03H11V7H12.5V13.03Z"; +var mdiClockTimeTwo = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11V7H12.5V11.3L16.2 9.2L17 10.5L12.5 13Z"; +var mdiClockTimeTwoOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13V13H11V7H12.5V11.26L16.2 9.13L16.95 10.43L12.5 13Z"; +var mdiClose = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"; +var mdiCloseBox = "M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z"; +var mdiCloseBoxMultiple = "M4 20H18V22H4C2.9 22 2 21.11 2 20V6H4V20M20.22 2H7.78C6.8 2 6 2.8 6 3.78V16.22C6 17.2 6.8 18 7.78 18H20.22C21.2 18 22 17.2 22 16.22V3.78C22 2.8 21.2 2 20.22 2M19 13.6L17.6 15L14 11.4L10.4 15L9 13.6L12.6 10L9 6.4L10.4 5L14 8.6L17.6 5L19 6.4L15.4 10L19 13.6Z"; +var mdiCloseBoxMultipleOutline = "M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H8V4H20V16M4 6V20H18V22H4C2.9 22 2 21.11 2 20V6H4M9.77 12.84L12.6 10L9.77 7.15L11.17 5.75L14 8.6L16.84 5.77L18.24 7.17L15.4 10L18.23 12.84L16.83 14.24L14 11.4L11.17 14.24L9.77 12.84Z"; +var mdiCloseBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z"; +var mdiCloseCircle = "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z"; +var mdiCloseCircleMultiple = "M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M20 15.59L18.59 17L15 13.41L11.41 17L10 15.59L13.59 12L10 8.41L11.41 7L15 10.59L18.59 7L20 8.41L16.41 12L20 15.59Z"; +var mdiCloseCircleMultipleOutline = "M18.54 9.88L17.12 8.47L15 10.59L12.88 8.47L11.47 9.88L13.59 12L11.47 14.12L12.88 15.54L15 13.41L17.12 15.54L18.54 14.12L16.41 12M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M15 19C11.14 19 8 15.86 8 12S11.14 5 15 5 22 8.14 22 12 18.86 19 15 19Z"; +var mdiCloseCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z"; +var mdiCloseNetwork = "M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; +var mdiCloseNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15.54,12.12L13.41,10L15.53,7.87L14.12,6.46L12,8.59L9.88,6.46L8.47,7.87L10.59,10L8.47,12.13L9.88,13.54L12,11.41L14.12,13.54L15.54,12.12Z"; +var mdiCloseOctagon = "M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41"; +var mdiCloseOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59"; +var mdiCloseOutline = "M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z"; +var mdiCloseThick = "M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12L20 6.91Z"; +var mdiClosedCaption = "M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z"; +var mdiClosedCaptionOutline = "M5,4C4.45,4 4,4.18 3.59,4.57C3.2,4.96 3,5.44 3,6V18C3,18.56 3.2,19.04 3.59,19.43C4,19.82 4.45,20 5,20H19C19.5,20 20,19.81 20.39,19.41C20.8,19 21,18.53 21,18V6C21,5.47 20.8,5 20.39,4.59C20,4.19 19.5,4 19,4H5M4.5,5.5H19.5V18.5H4.5V5.5M7,9C6.7,9 6.47,9.09 6.28,9.28C6.09,9.47 6,9.7 6,10V14C6,14.3 6.09,14.53 6.28,14.72C6.47,14.91 6.7,15 7,15H10C10.27,15 10.5,14.91 10.71,14.72C10.91,14.53 11,14.3 11,14V13H9.5V13.5H7.5V10.5H9.5V11H11V10C11,9.7 10.91,9.47 10.71,9.28C10.5,9.09 10.27,9 10,9H7M14,9C13.73,9 13.5,9.09 13.29,9.28C13.09,9.47 13,9.7 13,10V14C13,14.3 13.09,14.53 13.29,14.72C13.5,14.91 13.73,15 14,15H17C17.3,15 17.53,14.91 17.72,14.72C17.91,14.53 18,14.3 18,14V13H16.5V13.5H14.5V10.5H16.5V11H18V10C18,9.7 17.91,9.47 17.72,9.28C17.53,9.09 17.3,9 17,9H14Z"; +var mdiCloud = "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; +var mdiCloudAlert = "M19 20H6C2.7 20 0 17.3 0 14C0 10.9 2.3 8.4 5.3 8C6.6 5.6 9.1 4 12 4C15.6 4 18.7 6.6 19.4 10C22 10.2 24 12.3 24 15C24 17.7 21.7 20 19 20M11 15V17H13V15H11M11 13H13V7H11V13Z"; +var mdiCloudBraces = "M6,20A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.63,4 18.66,6.58 19.35,10C21.95,10.19 24,12.36 24,15A5,5 0 0,1 19,20H6M18.5,12H18A1,1 0 0,1 17,11V10A2,2 0 0,0 15,8H13.5V10H15V11A2,2 0 0,0 17,13A2,2 0 0,0 15,15V16H13.5V18H15A2,2 0 0,0 17,16V15A1,1 0 0,1 18,14H18.5V12M5.5,12V14H6A1,1 0 0,1 7,15V16A2,2 0 0,0 9,18H10.5V16H9V15A2,2 0 0,0 7,13A2,2 0 0,0 9,11V10H10.5V8H9A2,2 0 0,0 7,10V11A1,1 0 0,1 6,12H5.5Z"; +var mdiCloudCheck = "M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; +var mdiCloudCheckOutline = "M19 18H6C3.79 18 2 16.21 2 14S3.79 10 6 10H6.71C7.37 7.69 9.5 6 12 6C15.04 6 17.5 8.46 17.5 11.5V12H19C20.66 12 22 13.34 22 15S20.66 18 19 18M19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.03M10 17L6.5 13.5L7.91 12.08L10 14.17L14.59 9.59L16 11"; +var mdiCloudCircle = "M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCloudDownload = "M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; +var mdiCloudDownloadOutline = "M8,13H10.55V10H13.45V13H16L12,17L8,13M19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.64,4 18.67,6.59 19.35,10.04M19,18A3,3 0 0,0 22,15C22,13.45 20.78,12.14 19.22,12.04L17.69,11.93L17.39,10.43C16.88,7.86 14.62,6 12,6C9.94,6 8.08,7.14 7.13,8.97L6.63,9.92L5.56,10.03C3.53,10.24 2,11.95 2,14A4,4 0 0,0 6,18H19Z"; +var mdiCloudLock = "M22 17C22.5 17 23 17.5 23 18V22C23 22.5 22.5 23 22 23H17C16.5 23 16 22.5 16 22V18C16 17.5 16.5 17 17 17V15.5C17 14.1 18.1 13 19.5 13C20.9 13 22 14.1 22 15.5V17M21 17V15.5C21 14.7 20.3 14 19.5 14C18.7 14 18 14.7 18 15.5V17H21M19.36 9.03C21.95 9.22 24 11.36 24 14L23.94 14.77C23.59 12.63 21.74 11 19.5 11C17 11 15 13 15 15.5L15 15.76C14.39 16.31 14 17.11 14 18V19H6C2.69 19 0 16.31 0 13C0 9.9 2.34 7.36 5.35 7.04C6.6 4.64 9.11 3 12 3C15.64 3 18.67 5.59 19.36 9.03Z"; +var mdiCloudLockOutline = "M22 17C22.5 17 23 17.5 23 18V22C23 22.5 22.5 23 22 23H17C16.5 23 16 22.5 16 22V18C16 17.5 16.5 17 17 17V15.5C17 14.1 18.1 13 19.5 13C20.9 13 22 14.1 22 15.5V17M21 17V15.5C21 14.7 20.3 14 19.5 14C18.7 14 18 14.7 18 15.5V17H21M17.5 11V10.5C17.5 7.46 15.04 5 12 5C9.5 5 7.37 6.69 6.71 9H6C3.79 9 2 10.79 2 13C2 15.21 3.79 17 6 17H14.17C14.06 17.31 14 17.65 14 18V19H6C2.69 19 0 16.31 0 13C0 9.9 2.34 7.36 5.35 7.04C6.6 4.64 9.11 3 12 3C15.64 3 18.67 5.6 19.36 9.04C21.95 9.22 24 11.36 24 14L23.94 14.77C23.59 12.63 21.74 11 19.5 11H17.5Z"; +var mdiCloudOffOutline = "M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; +var mdiCloudOutline = "M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; +var mdiCloudPrint = "M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z"; +var mdiCloudPrintOutline = "M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z"; +var mdiCloudQuestion = "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03M13,17H11V15H13V17M14.8,11.82C14.5,12.21 14.13,12.5 13.67,12.75C13.41,12.91 13.24,13.07 13.15,13.26C13.06,13.45 13,13.69 13,14H11C11,13.45 11.11,13.08 11.3,12.82C11.5,12.56 11.85,12.25 12.37,11.91C12.63,11.75 12.84,11.56 13,11.32C13.15,11.09 13.23,10.81 13.23,10.5C13.23,10.18 13.14,9.94 12.96,9.76C12.78,9.56 12.5,9.47 12.2,9.47C11.93,9.47 11.71,9.55 11.5,9.7C11.35,9.85 11.25,10.08 11.25,10.39H9.28C9.23,9.64 9.5,9 10.06,8.59C10.6,8.2 11.31,8 12.2,8C13.14,8 13.89,8.23 14.43,8.68C14.97,9.13 15.24,9.75 15.24,10.5C15.24,11 15.09,11.41 14.8,11.82Z"; +var mdiCloudRefresh = "M12 4C15.64 4 18.67 6.59 19.35 10.04C21.95 10.22 24 12.36 24 15C24 17.76 21.76 20 19 20H6C2.69 20 0 17.31 0 14C0 10.91 2.34 8.36 5.35 8.04C6.6 5.64 9.11 4 12 4M17 13V9L16 10C15.09 8.79 13.64 8 12 8C9.24 8 7 10.24 7 13C7 15.76 9.24 18 12 18C14.05 18 15.81 16.77 16.58 15H14.24C13.69 15.61 12.89 16 12 16C10.34 16 9 14.66 9 13C9 11.34 10.34 10 12 10C13.09 10 14.04 10.58 14.56 11.44L13 13H17Z"; +var mdiCloudSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19.35,8.03C21.95,8.22 24,10.36 24,13C24,14.64 23.21,16.1 22,17V16.5A6.5,6.5 0 0,0 15.5,10A6.5,6.5 0 0,0 9,16.5C9,17 9.06,17.5 9.17,18H6A6,6 0 0,1 0,12C0,8.9 2.34,6.36 5.35,6.03C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.59 19.35,8.03Z"; +var mdiCloudSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16H9V16.5C9,17 9.06,17.5 9.17,18H6A6,6 0 0,1 0,12C0,8.9 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.59 19.36,8.04C21.95,8.22 24,10.36 24,13C24,14.65 23.21,16.1 22,17V16.5C22,15.77 21.88,15.06 21.65,14.4C21.87,14 22,13.5 22,13Z"; +var mdiCloudSync = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L16.72 14.22C16.78 14.17 16.85 14.13 19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L21.28 20.78C21.22 20.83 21.15 20.87 19 23M13 17.5C13 13.91 15.91 11 19.5 11C20.78 11 21.97 11.38 23 12C22.13 10.9 20.84 10.14 19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H13.5C13.18 19.23 13 18.39 13 17.5Z"; +var mdiCloudSyncOutline = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L16.72 14.22C16.78 14.17 16.85 14.13 19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L21.28 20.78C21.22 20.83 21.15 20.87 19 23M13.03 18H6C3.79 18 2 16.21 2 14S3.79 10 6 10H6.71C7.37 7.69 9.5 6 12 6C15 6 17.4 8.37 17.5 11.32C18.12 11.11 18.8 11 19.5 11C20.78 11 21.97 11.38 23 12C22.13 10.9 20.84 10.14 19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H13.5C13.24 19.38 13.08 18.7 13.03 18Z"; +var mdiCloudTags = "M6,20A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.63,4 18.66,6.58 19.35,10C21.95,10.19 24,12.36 24,15A5,5 0 0,1 19,20H6M9.09,8.4L4.5,13L9.09,17.6L10.5,16.18L7.32,13L10.5,9.82L9.09,8.4M14.91,8.4L13.5,9.82L16.68,13L13.5,16.18L14.91,17.6L19.5,13L14.91,8.4Z"; +var mdiCloudUpload = "M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; +var mdiCloudUploadOutline = "M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.04C2.34,8.36 0,10.91 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04M19,18H6A4,4 0 0,1 2,14C2,11.95 3.53,10.24 5.56,10.03L6.63,9.92L7.13,8.97C8.08,7.14 9.94,6 12,6C14.62,6 16.88,7.86 17.39,10.43L17.69,11.93L19.22,12.04C20.78,12.14 22,13.45 22,15A3,3 0 0,1 19,18M8,13H10.55V16H13.45V13H16L12,9L8,13Z"; +var mdiClover = "M12,11.18C15.3,8.18 17,6.64 17,4.69C17,3.19 15.75,2 14.25,2C13.39,2 12.57,2.36 12,3C11.43,2.36 10.61,2 9.69,2C8.19,2 7,3.25 7,4.75C7,6.64 8.7,8.18 12,11.18M11.18,12C8.18,8.7 6.64,7 4.69,7C3.19,7 2,8.25 2,9.75C2,10.61 2.36,11.43 3,12C2.36,12.57 2,13.39 2,14.31C2,15.81 3.25,17 4.75,17C6.64,17 8.18,15.3 11.18,12M12.83,12C15.82,15.3 17.36,17 19.31,17C20.81,17 22,15.75 22,14.25C22,13.39 21.64,12.57 21,12C21.64,11.43 22,10.61 22,9.69C22,8.19 20.75,7 19.25,7C17.36,7 15.82,8.7 12.83,12M12,12.82C8.7,15.82 7,17.36 7,19.31C7,20.81 8.25,22 9.75,22C10.61,22 11.43,21.64 12,21C12.57,21.64 13.39,22 14.31,22C15.81,22 17,20.75 17,19.25C17,17.36 15.3,15.82 12,12.82Z"; +var mdiCoachLamp = "M16 5L15 2H13L12 5L6 8H8L8.6 11H4V7H2V17H4V13H9L10 18L12 20L13 22H15L16 20L18 18L20 8H22M16.16 17H11.84L10 8H18Z"; +var mdiCoatRack = "M18.33 7.78A1 1 0 0 0 16.66 8.89A2 2 0 1 1 13 10V7.82A3 3 0 1 0 11 7.82V10A2 2 0 1 1 7.34 8.89A1 1 0 1 0 5.67 7.78A4 4 0 0 0 11 13.46V20A2 2 0 0 0 9 22H15A2 2 0 0 0 13 20V13.46A4 4 0 0 0 18.33 7.78M12 4A1 1 0 1 1 11 5A1 1 0 0 1 12 4Z"; +var mdiCodeArray = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z"; +var mdiCodeBraces = "M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z"; +var mdiCodeBracesBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M11 8H9V10C9 11.1 8.1 12 7 12C8.1 12 9 12.9 9 14V16H11V18H9C7.9 18 7 17.1 7 16V15C7 13.9 6.1 13 5 13V11C6.1 11 7 10.1 7 9V8C7 6.9 7.9 6 9 6H11V8M19 13C17.9 13 17 13.9 17 15V16C17 17.1 16.1 18 15 18H13V16H15V14C15 12.9 15.9 12 17 12C15.9 12 15 11.1 15 10V8H13V6H15C16.1 6 17 6.9 17 8V9C17 10.1 17.9 11 19 11V13Z"; +var mdiCodeBrackets = "M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z"; +var mdiCodeEqual = "M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; +var mdiCodeGreaterThan = "M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; +var mdiCodeGreaterThanOrEqual = "M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; +var mdiCodeJson = "M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z"; +var mdiCodeLessThan = "M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z"; +var mdiCodeLessThanOrEqual = "M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; +var mdiCodeNotEqual = "M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; +var mdiCodeNotEqualVariant = "M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; +var mdiCodeParentheses = "M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z"; +var mdiCodeParenthesesBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 17.3L8.4 18C6.9 16.5 6 14.3 6 12S6.9 7.5 8.4 6L10 6.7C8.7 7.9 8 9.9 8 12S8.7 16.1 10 17.3M15.6 18L14 17.3C15.3 16 16 14.1 16 12S15.3 7.9 14 6.7L15.6 6C17.1 7.5 18 9.7 18 12C18 14.3 17.1 16.5 15.6 18Z"; +var mdiCodeString = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z"; +var mdiCodeTags = "M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z"; +var mdiCodeTagsCheck = "M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z"; +var mdiCodepen = "M8.21 12L6.88 12.89V11.11L8.21 12M11.47 9.82V7.34L7.31 10.12L9.16 11.36L11.47 9.82M16.7 10.12L12.53 7.34V9.82L14.84 11.36L16.7 10.12M7.31 13.88L11.47 16.66V14.18L9.16 12.64L7.31 13.88M12.53 14.18V16.66L16.7 13.88L14.84 12.64L12.53 14.18M12 10.74L10.12 12L12 13.26L13.88 12L12 10.74M22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12M18.18 10.12C18.18 10.09 18.18 10.07 18.18 10.05L18.17 10L18.17 10L18.16 9.95C18.15 9.94 18.15 9.93 18.14 9.91L18.13 9.89L18.11 9.85L18.1 9.83L18.08 9.8L18.06 9.77L18.03 9.74L18 9.72L18 9.7L17.96 9.68L17.95 9.67L12.3 5.91C12.12 5.79 11.89 5.79 11.71 5.91L6.05 9.67L6.05 9.68L6 9.7C6 9.71 6 9.72 6 9.72L5.97 9.74L5.94 9.77L5.93 9.8L5.9 9.83L5.89 9.85L5.87 9.89L5.86 9.91L5.84 9.95L5.84 10L5.83 10L5.82 10.05C5.82 10.07 5.82 10.09 5.82 10.12V13.88C5.82 13.91 5.82 13.93 5.82 13.95L5.83 14L5.84 14L5.84 14.05C5.85 14.06 5.85 14.07 5.86 14.09L5.87 14.11L5.89 14.15L5.9 14.17L5.92 14.2L5.94 14.23C5.95 14.24 5.96 14.25 5.97 14.26L6 14.28L6 14.3L6.04 14.32L6.05 14.33L11.71 18.1C11.79 18.16 11.9 18.18 12 18.18C12.1 18.18 12.21 18.15 12.3 18.1L17.95 14.33L17.96 14.32L18 14.3L18 14.28L18.03 14.26L18.06 14.23L18.08 14.2L18.1 14.17L18.11 14.15L18.13 14.11L18.14 14.09L18.16 14.05L18.16 14L18.17 14L18.18 13.95C18.18 13.93 18.18 13.91 18.18 13.88V10.12M17.12 12.89V11.11L15.79 12L17.12 12.89Z"; +var mdiCoffee = "M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z"; +var mdiCoffeeMaker = "M21 1V4H7V21H21V23H2V3C2 1.89 2.89 1 4 1H21M22 13V15C22 16.11 21.11 17 20 17H18C18 20 15 20 14 20S10 20 10 17V11H20C21.11 11 22 11.9 22 13M20 13H18V15H20V13M17 9L19 5H9L11 9H17Z"; +var mdiCoffeeOff = "M3.27 2L22 20.72L20.72 22L19.73 21H2V19H17.73L15.44 16.71C15 16.89 14.5 17 14 17H8C5.79 17 4 15.21 4 13V5.27L2 3.27L3.27 2M22 5V8C22 9.1 21.1 10 20 10H18V13C18 13.36 17.94 13.7 17.85 14.04L6.81 3H20C21.1 3 22 3.89 22 5M20 5H18V8H20V5Z"; +var mdiCoffeeOffOutline = "M2 3.27L4 5.27V13C4 15.21 5.79 17 8 17H14C14.5 17 15 16.89 15.44 16.71L17.73 19H2V21H19.73L20.72 22L22 20.72L3.27 2L2 3.27M8 15C6.9 15 6 14.1 6 13V7.27L13.73 15H8M20 3H6.81L8.81 5H16V12.19L17.85 14.04C17.94 13.7 18 13.36 18 13V10H20C21.1 10 22 9.1 22 8V5C22 3.9 21.1 3 20 3M20 8H18V5H20V8Z"; +var mdiCoffeeOutline = "M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z"; +var mdiCoffeeToGo = "M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z"; +var mdiCoffeeToGoOutline = "M3 3V11A4 4 0 0 0 7 15H11A4 4 0 0 0 15 11V10H17C18.11 10 19 9.11 19 8V5C19 3.9 18.11 3 17 3H3M5 5H13V11A2 2 0 0 1 11 13H7A2 2 0 0 1 5 11V5M15 5H17V8H15V5M16.67 13.83L15.26 15.24L17 17H3V19H17L15.26 20.76L16.67 22.17L20.84 18L16.67 13.83Z"; +var mdiCoffin = "M8,22L5,8L8,2H16L19,8L16,22H8M11,6V8H9V10H11V15H13V10H15V8H13V6H11Z"; +var mdiCog = "M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"; +var mdiCogBox = "M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z"; +var mdiCogClockwise = "M12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C14 21 15.92 20.34 17.5 19.14L16.06 17.7C14.87 18.54 13.45 19 12 19C8.13 19 5 15.87 5 12S8.13 5 12 5 19 8.13 19 12H16L20 16L24 12H21C21 7.03 16.97 3 12 3M7.71 13.16C7.62 13.23 7.59 13.35 7.64 13.45L8.54 15C8.6 15.12 8.72 15.12 8.82 15.12L9.95 14.67C10.19 14.83 10.44 14.97 10.7 15.09L10.88 16.28C10.9 16.39 11 16.47 11.1 16.47H12.9C13 16.5 13.11 16.41 13.13 16.3L13.31 15.12C13.58 15 13.84 14.85 14.07 14.67L15.19 15.12C15.3 15.16 15.42 15.11 15.47 15L16.37 13.5C16.42 13.38 16.39 13.26 16.31 13.19L15.31 12.45C15.34 12.15 15.34 11.85 15.31 11.55L16.31 10.79C16.4 10.72 16.42 10.61 16.37 10.5L15.47 8.95C15.41 8.85 15.3 8.81 15.19 8.85L14.07 9.3C13.83 9.13 13.57 9 13.3 8.88L13.13 7.69C13.11 7.58 13 7.5 12.9 7.5H11.14C11.04 7.5 10.95 7.57 10.93 7.67L10.76 8.85C10.5 8.97 10.23 9.12 10 9.3L8.85 8.88C8.74 8.84 8.61 8.89 8.56 9L7.65 10.5C7.6 10.62 7.63 10.74 7.71 10.81L8.71 11.55C8.69 11.7 8.69 11.85 8.71 12C8.7 12.15 8.7 12.3 8.71 12.45L7.71 13.19M12 13.5H12C11.16 13.5 10.5 12.82 10.5 12C10.5 11.17 11.17 10.5 12 10.5S13.5 11.17 13.5 12 12.83 13.5 12 13.5"; +var mdiCogCounterclockwise = "M12 3C7.03 3 3 7.03 3 12H0L4 16L8 12H5C5 8.13 8.13 5 12 5S19 8.13 19 12 15.87 19 12 19C10.55 19 9.13 18.54 7.94 17.7L6.5 19.14C8.08 20.34 10 21 12 21C16.97 21 21 16.97 21 12S16.97 3 12 3M16.29 13.19L15.29 12.45C15.3 12.3 15.3 12.15 15.29 12C15.31 11.85 15.31 11.7 15.29 11.55L16.29 10.81C16.37 10.74 16.4 10.62 16.35 10.5L15.44 9C15.39 8.89 15.26 8.84 15.15 8.88L14 9.3C13.77 9.12 13.5 8.97 13.24 8.85L13.07 7.67C13.05 7.57 12.96 7.5 12.86 7.5H11.1C11 7.5 10.89 7.58 10.87 7.69L10.7 8.88C10.43 9 10.17 9.13 9.93 9.3L8.81 8.85C8.71 8.81 8.59 8.85 8.53 8.95L7.63 10.5C7.58 10.61 7.6 10.72 7.69 10.79L8.69 11.55C8.66 11.85 8.66 12.15 8.69 12.45L7.69 13.19C7.61 13.26 7.58 13.38 7.63 13.5L8.53 15C8.58 15.11 8.7 15.16 8.81 15.12L9.93 14.67C10.16 14.85 10.42 15 10.69 15.12L10.87 16.3C10.89 16.41 11 16.5 11.1 16.47H12.9C13 16.47 13.11 16.39 13.12 16.28L13.3 15.09C13.56 14.97 13.81 14.83 14.05 14.67L15.18 15.12C15.28 15.12 15.4 15.12 15.46 15L16.36 13.45C16.41 13.35 16.38 13.23 16.29 13.16M12 13.5C11.17 13.5 10.5 12.83 10.5 12S11.17 10.5 12 10.5 13.5 11.17 13.5 12C13.5 12.82 12.84 13.5 12 13.5H12"; +var mdiCogOff = "M22.12 21.46L2.4 1.73L1.12 3L4 5.87L2.34 8.73C2.21 8.95 2.27 9.22 2.46 9.37L4.57 11C4.53 11.34 4.5 11.67 4.5 12S4.53 12.65 4.57 12.97L2.46 14.63C2.27 14.78 2.21 15.05 2.34 15.27L4.34 18.73C4.46 18.95 4.73 19.03 4.95 18.95L7.44 17.94C7.96 18.34 8.5 18.68 9.13 18.93L9.5 21.58C9.54 21.82 9.75 22 10 22H14C14.25 22 14.46 21.82 14.5 21.58L14.87 18.93C15.38 18.72 15.83 18.45 16.26 18.14L20.85 22.73L22.12 21.46M12 15.5C10.07 15.5 8.5 13.93 8.5 12C8.5 11.5 8.62 11.08 8.79 10.67L13.33 15.21C12.92 15.39 12.5 15.5 12 15.5M11.74 8.53L8.56 5.35C8.75 5.25 8.93 5.15 9.13 5.07L9.5 2.42C9.54 2.18 9.75 2 10 2H14C14.25 2 14.46 2.18 14.5 2.42L14.87 5.07C15.5 5.32 16.04 5.66 16.56 6.05L19.05 5.05C19.27 4.96 19.54 5.05 19.66 5.27L21.66 8.73C21.78 8.95 21.73 9.22 21.54 9.37L19.43 11C19.47 11.34 19.5 11.67 19.5 12S19.47 12.65 19.43 12.97L21.54 14.63C21.73 14.78 21.78 15.05 21.66 15.27L20.5 17.29L15.47 12.26C15.5 12.18 15.5 12.09 15.5 12C15.5 10.07 13.93 8.5 12 8.5C11.91 8.5 11.83 8.5 11.74 8.53Z"; +var mdiCogOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4 5.88L2.34 8.73C2.21 8.95 2.27 9.22 2.46 9.37L4.57 11L4.5 12L4.57 12.97L2.46 14.63C2.27 14.78 2.21 15.05 2.34 15.27L4.34 18.73C4.46 18.95 4.73 19.03 4.95 18.95L7.44 17.94C7.96 18.34 8.5 18.68 9.13 18.93L9.5 21.58C9.54 21.82 9.75 22 10 22H14C14.25 22 14.46 21.82 14.5 21.58L14.87 18.93C15.38 18.73 15.83 18.45 16.26 18.15L20.84 22.73L22.11 21.46M10 11.9L12.1 14C12.06 14 12.03 14 12 14C10.9 14 10 13.11 10 12C10 11.97 10 11.94 10 11.9M13.13 17.39L12.76 20H11.24L10.87 17.38C9.68 17.14 8.63 16.5 7.86 15.62L5.43 16.66L4.68 15.36L6.8 13.8C6.4 12.64 6.4 11.37 6.8 10.2L4.69 8.65L5.44 7.35L5.5 7.37L8.4 10.29C8.15 10.8 8 11.38 8 12C8 14.21 9.79 16 12 16C12.62 16 13.2 15.86 13.71 15.6L14.83 16.72C14.31 17.03 13.74 17.26 13.13 17.39M10.06 6.86L8.55 5.35C8.74 5.26 8.93 5.15 9.13 5.07L9.5 2.42C9.54 2.18 9.75 2 10 2H14C14.25 2 14.46 2.18 14.5 2.42L14.87 5.07C15.5 5.32 16.04 5.66 16.56 6.05L19.05 5.05C19.27 4.96 19.54 5.05 19.66 5.27L21.66 8.73C21.79 8.95 21.73 9.22 21.54 9.37L19.43 11L19.5 12L19.43 13L21.54 14.63C21.73 14.78 21.79 15.05 21.66 15.27L20.5 17.29L19.04 15.84L19.32 15.36L17.2 13.81C17.6 12.64 17.6 11.37 17.2 10.2L19.31 8.65L18.56 7.35L16.15 8.39C15.38 7.5 14.32 6.86 13.12 6.62L12.75 4H11.25L10.88 6.61C10.6 6.67 10.32 6.75 10.06 6.86M12 8C14.21 8 16 9.79 16 12C16 12.25 15.97 12.5 15.93 12.73L11.27 8.07C11.5 8.03 11.75 8 12 8Z"; +var mdiCogOutline = "M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z"; +var mdiCogRefresh = "M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5M11.5 18.5C11.5 17.4 11.8 16.4 12.2 15.5H12C10.1 15.5 8.5 13.9 8.5 12S10.1 8.5 12 8.5 15.5 10.1 15.5 12C15.5 12.2 15.5 12.4 15.4 12.5C16.2 12.2 17 12 18 12C18.5 12 19 12.1 19.5 12.2V12C19.5 11.7 19.5 11.3 19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11C4.6 11.3 4.5 11.7 4.5 12S4.5 12.7 4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C11.9 21 11.5 19.8 11.5 18.5Z"; +var mdiCogRefreshOutline = "M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5M11.7 20H11.3L10.9 17.4C9.7 17.2 8.7 16.5 7.9 15.6L5.5 16.6L4.7 15.3L6.8 13.7C6.4 12.5 6.4 11.3 6.8 10.1L4.7 8.7L5.5 7.4L7.9 8.4C8.7 7.5 9.7 6.9 10.9 6.6L11.2 4H12.7L13.1 6.6C14.3 6.8 15.4 7.5 16.1 8.4L18.5 7.4L19.3 8.7L17.2 10.2C17.4 10.8 17.5 11.4 17.5 12H18C18.5 12 19 12.1 19.5 12.2V12L19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11L4.5 12L4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C12.1 21.4 11.9 20.7 11.7 20M16 12.3V12C16 9.8 14.2 8 12 8S8 9.8 8 12C8 14.2 9.8 16 12 16C12.7 14.3 14.2 12.9 16 12.3M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12Z"; +var mdiCogSync = "M11.5 18.5C11.5 17.4 11.8 16.4 12.2 15.5H12C10.1 15.5 8.5 13.9 8.5 12S10.1 8.5 12 8.5 15.5 10.1 15.5 12C15.5 12.2 15.5 12.4 15.4 12.5C16.2 12.2 17 12 18 12C18.5 12 19 12.1 19.5 12.2V12C19.5 11.7 19.5 11.3 19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11C4.6 11.3 4.5 11.7 4.5 12S4.5 12.7 4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C11.9 21 11.5 19.8 11.5 18.5M18 14.5V13L15.8 15.2L18 17.4V16C19.4 16 20.5 17.1 20.5 18.5C20.5 18.9 20.4 19.3 20.2 19.6L21.3 20.7C22.5 18.9 22 16.4 20.2 15.2C19.6 14.7 18.8 14.5 18 14.5M18 21C16.6 21 15.5 19.9 15.5 18.5C15.5 18.1 15.6 17.7 15.8 17.4L14.7 16.3C13.5 18.1 14 20.6 15.8 21.8C16.5 22.2 17.2 22.5 18 22.5V24L20.2 21.8L18 19.5V21Z"; +var mdiCogSyncOutline = "M11.7 20H11.3L10.9 17.4C9.7 17.2 8.7 16.5 7.9 15.6L5.5 16.6L4.7 15.3L6.8 13.7C6.4 12.5 6.4 11.3 6.8 10.1L4.7 8.7L5.5 7.4L7.9 8.4C8.7 7.5 9.7 6.9 10.9 6.6L11.2 4H12.7L13.1 6.6C14.3 6.8 15.4 7.5 16.1 8.4L18.5 7.4L19.3 8.7L17.2 10.2C17.4 10.8 17.5 11.4 17.5 12H18C18.5 12 19 12.1 19.5 12.2V12L19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11L4.5 12L4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C12.1 21.4 11.9 20.7 11.7 20M16 12.3V12C16 9.8 14.2 8 12 8S8 9.8 8 12C8 14.2 9.8 16 12 16C12.7 14.3 14.2 12.9 16 12.3M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12M18 14.5V13L15.8 15.2L18 17.4V16C19.4 16 20.5 17.1 20.5 18.5C20.5 18.9 20.4 19.3 20.2 19.6L21.3 20.7C22.5 18.9 22 16.4 20.2 15.2C19.6 14.7 18.8 14.5 18 14.5M18 21C16.6 21 15.5 19.9 15.5 18.5C15.5 18.1 15.6 17.7 15.8 17.4L14.7 16.3C13.5 18.1 14 20.6 15.8 21.8C16.5 22.2 17.2 22.5 18 22.5V24L20.2 21.8L18 19.5V21Z"; +var mdiCogTransfer = "M14 18V16L10 19.5L14 23V21H17V18H14M22 15.5L18 12V14H15V17H18V19L22 15.5M21.66 8.73L19.66 5.27C19.54 5.05 19.28 4.96 19.05 5.05L16.56 6.05C16.05 5.64 15.5 5.31 14.87 5.05L14.5 2.42C14.46 2.18 14.25 2 14 2H10C9.75 2 9.54 2.18 9.5 2.42L9.13 5.07C8.5 5.33 7.96 5.66 7.44 6.07L5 5.05C4.77 4.96 4.5 5.05 4.39 5.27L2.39 8.73C2.26 8.94 2.31 9.22 2.5 9.37L4.57 11C4.53 11.33 4.5 11.67 4.5 12C4.5 12.33 4.53 12.67 4.57 13L2.46 14.63C2.26 14.78 2.21 15.06 2.34 15.27L4.34 18.73C4.45 19 4.74 19.11 5 19L5 19L7.5 18C7.74 18.19 8 18.37 8.26 18.53L11.77 15.53C9.84 15.4 8.38 13.73 8.5 11.8C8.65 9.87 10.32 8.41 12.25 8.55C13.69 8.64 14.92 9.62 15.35 11H19.43L21.54 9.37C21.73 9.22 21.78 8.94 21.66 8.73Z"; +var mdiCogTransferOutline = "M15 17V14H18V12L22 15.5L18 19V17H15M17 18V21H14V23L10 19.5L14 16V18H17M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M21.66 8.73L19.66 5.27C19.54 5.05 19.28 4.96 19.05 5.05L16.56 6.05C16.05 5.64 15.5 5.31 14.87 5.05L14.5 2.42C14.46 2.18 14.25 2 14 2H10C9.75 2 9.54 2.18 9.5 2.42L9.13 5.07C8.5 5.33 7.96 5.66 7.44 6.07L5 5.05C4.77 4.96 4.5 5.05 4.39 5.27L2.39 8.73C2.26 8.94 2.31 9.22 2.5 9.37L4.57 11L4.5 12L4.57 13L2.46 14.63C2.26 14.78 2.21 15.06 2.34 15.27L4.34 18.73C4.45 19 4.74 19.11 5 19L5 19L7.5 18C7.74 18.19 8 18.37 8.26 18.53L9.91 17.13C9.14 16.8 8.46 16.31 7.91 15.68L5.5 16.68L4.73 15.38L6.8 13.8C6.4 12.63 6.4 11.37 6.8 10.2L4.69 8.65L5.44 7.35L7.85 8.35C8.63 7.45 9.68 6.82 10.85 6.57L11.25 4H12.75L13.12 6.62C14.29 6.86 15.34 7.5 16.12 8.39L18.53 7.39L19.28 8.69L17.2 10.2C17.29 10.46 17.36 10.73 17.4 11H19.4L21.5 9.37C21.72 9.23 21.78 8.95 21.66 8.73M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14Z"; +var mdiCogs = "M15.9,18.45C17.25,18.45 18.35,17.35 18.35,16C18.35,14.65 17.25,13.55 15.9,13.55C14.54,13.55 13.45,14.65 13.45,16C13.45,17.35 14.54,18.45 15.9,18.45M21.1,16.68L22.58,17.84C22.71,17.95 22.75,18.13 22.66,18.29L21.26,20.71C21.17,20.86 21,20.92 20.83,20.86L19.09,20.16C18.73,20.44 18.33,20.67 17.91,20.85L17.64,22.7C17.62,22.87 17.47,23 17.3,23H14.5C14.32,23 14.18,22.87 14.15,22.7L13.89,20.85C13.46,20.67 13.07,20.44 12.71,20.16L10.96,20.86C10.81,20.92 10.62,20.86 10.54,20.71L9.14,18.29C9.05,18.13 9.09,17.95 9.22,17.84L10.7,16.68L10.65,16L10.7,15.31L9.22,14.16C9.09,14.05 9.05,13.86 9.14,13.71L10.54,11.29C10.62,11.13 10.81,11.07 10.96,11.13L12.71,11.84C13.07,11.56 13.46,11.32 13.89,11.15L14.15,9.29C14.18,9.13 14.32,9 14.5,9H17.3C17.47,9 17.62,9.13 17.64,9.29L17.91,11.15C18.33,11.32 18.73,11.56 19.09,11.84L20.83,11.13C21,11.07 21.17,11.13 21.26,11.29L22.66,13.71C22.75,13.86 22.71,14.05 22.58,14.16L21.1,15.31L21.15,16L21.1,16.68M6.69,8.07C7.56,8.07 8.26,7.37 8.26,6.5C8.26,5.63 7.56,4.92 6.69,4.92A1.58,1.58 0 0,0 5.11,6.5C5.11,7.37 5.82,8.07 6.69,8.07M10.03,6.94L11,7.68C11.07,7.75 11.09,7.87 11.03,7.97L10.13,9.53C10.08,9.63 9.96,9.67 9.86,9.63L8.74,9.18L8,9.62L7.81,10.81C7.79,10.92 7.7,11 7.59,11H5.79C5.67,11 5.58,10.92 5.56,10.81L5.4,9.62L4.64,9.18L3.5,9.63C3.41,9.67 3.3,9.63 3.24,9.53L2.34,7.97C2.28,7.87 2.31,7.75 2.39,7.68L3.34,6.94L3.31,6.5L3.34,6.06L2.39,5.32C2.31,5.25 2.28,5.13 2.34,5.03L3.24,3.47C3.3,3.37 3.41,3.33 3.5,3.37L4.63,3.82L5.4,3.38L5.56,2.19C5.58,2.08 5.67,2 5.79,2H7.59C7.7,2 7.79,2.08 7.81,2.19L8,3.38L8.74,3.82L9.86,3.37C9.96,3.33 10.08,3.37 10.13,3.47L11.03,5.03C11.09,5.13 11.07,5.25 11,5.32L10.03,6.06L10.06,6.5L10.03,6.94Z"; +var mdiCollage = "M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13"; +var mdiCollapseAll = "M14,4H4V14H2V4A2,2 0 0,1 4,2H14V4M18,6H8A2,2 0 0,0 6,8V18H8V8H18V6M22,12V20A2,2 0 0,1 20,22H12A2,2 0 0,1 10,20V12A2,2 0 0,1 12,10H20A2,2 0 0,1 22,12M20,15H12V17H20V15Z"; +var mdiCollapseAllOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M19,17H13V15H19V17Z"; +var mdiColorHelper = "M0,24H24V20H0V24Z"; +var mdiComma = "M7,3H16.95V12.96L12.96,20.94H8L11.97,12.96H7V3Z"; +var mdiCommaBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,13V7H9V13H12L10,17H13L15,13Z"; +var mdiCommaBoxOutline = "M10,17L12,13H9V7H15V13L13,17H10M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiCommaCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15,13L13,17H10L12,13H9V7H15V13Z"; +var mdiCommaCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M10,17H13L15,13V7H9V13H12L10,17Z"; +var mdiComment = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z"; +var mdiCommentAccount = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z"; +var mdiCommentAccountOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z"; +var mdiCommentAlert = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M13 11V5H11V11M13 15V13H11V15H13Z"; +var mdiCommentAlertOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z"; +var mdiCommentArrowLeft = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M16 11H11.5L13.3 12.8L12 14L8 10L12 6L13.2 7.2L11.5 9H16V11Z"; +var mdiCommentArrowLeftOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H13.1L10 19.1V16H4V4H20V16M16 11V9H11.5L13.3 7.2L12 6L8 10L12 14L13.2 12.8L11.5 11H16Z"; +var mdiCommentArrowRight = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14L10.8 12.8L12.6 11H8V9H12.5L10.7 7.2L12 6L16 10L12 14Z"; +var mdiCommentArrowRightOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H13.1L10 19.1V16H4V4H20V16M8 9V11H12.5L10.7 12.8L12 14L16 10L12 6L10.8 7.2L12.5 9H8Z"; +var mdiCommentBookmark = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M19 13L16.5 11.5L14 13V5H19V13Z"; +var mdiCommentBookmarkOutline = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M10 16V19.1L13.1 16H20V4H4V16H10M18 14V6H13V14L15.5 12.5L18 14Z"; +var mdiCommentCheck = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z"; +var mdiCommentCheckOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z"; +var mdiCommentEdit = "M20 2H4C2.89 2 2 2.89 2 4V16C2 17.11 2.9 18 4 18H8V21C8 21.55 8.45 22 9 22H9.5C9.75 22 10 21.9 10.2 21.71L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.89 21.1 2 20 2M9.08 15H7V12.91L13.17 6.72L15.24 8.8L9.08 15M16.84 7.2L15.83 8.21L13.76 6.18L14.77 5.16C14.97 4.95 15.31 4.94 15.55 5.16L16.84 6.41C17.05 6.62 17.06 6.96 16.84 7.2Z"; +var mdiCommentEditOutline = "M9 22C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 2.89 2.9 2 4 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9M10 16V19.08L13.08 16H20V4H4V16H10M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z"; +var mdiCommentEye = "M20,12V16C20,17.11 19.11,18 18,18H13.9L10.2,21.71C10,21.89 9.76,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6C2,4.89 2.9,4 4,4H9.5C8.95,4.67 8.5,5.42 8.14,6.25L7.85,7L8.14,7.75C9.43,10.94 12.5,13 16,13C17.44,13 18.8,12.63 20,12M16,6C16.56,6 17,6.44 17,7C17,7.56 16.56,8 16,8C15.44,8 15,7.56 15,7C15,6.44 15.44,6 16,6M16,3C18.73,3 21.06,4.66 22,7C21.06,9.34 18.73,11 16,11C13.27,11 10.94,9.34 10,7C10.94,4.66 13.27,3 16,3M16,4.5A2.5,2.5 0 0,0 13.5,7A2.5,2.5 0 0,0 16,9.5A2.5,2.5 0 0,0 18.5,7A2.5,2.5 0 0,0 16,4.5"; +var mdiCommentEyeOutline = "M16,6C16.56,6 17,6.44 17,7C17,7.56 16.56,8 16,8C15.44,8 15,7.56 15,7C15,6.44 15.44,6 16,6M16,3C18.73,3 21.06,4.66 22,7C21.06,9.34 18.73,11 16,11C13.27,11 10.94,9.34 10,7C10.94,4.66 13.27,3 16,3M16,4.5A2.5,2.5 0 0,0 13.5,7A2.5,2.5 0 0,0 16,9.5A2.5,2.5 0 0,0 18.5,7A2.5,2.5 0 0,0 16,4.5M18,12.75V16H13.08L10,19.08V16H4V6H8.27C8.59,5.27 9,4.6 9.5,4H4A2,2 0 0,0 2,6V16C2,17.11 2.9,18 4,18H8V21A1,1 0 0,0 9,22H9.5C9.75,22 10,21.9 10.2,21.71L13.9,18H18C19.11,18 20,17.11 20,16V12C19.37,12.33 18.7,12.58 18,12.75Z"; +var mdiCommentFlash = "M22.5 16H20.3L22 12H17V18H19V23L22.5 16M15 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V10H15V18Z"; +var mdiCommentFlashOutline = "M22.5 16H20.3L22 12H17V18H19V23L22.5 16M15 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V10H20V4H4V16H10V19.1L13.1 16H15V18Z"; +var mdiCommentMinus = "M20 2H4C2.9 2 2 2.89 2 4V16C2 17.11 2.9 18 4 18H8V21C8 21.55 8.45 22 9 22H9.5C9.75 22 10 21.9 10.2 21.71L13.9 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M16 11H8V9H16V11Z"; +var mdiCommentMinusOutline = "M16 11H8V9H16V11M22 4V16C22 17.11 21.11 18 20 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 2.89 2.9 2 4 2H20C21.11 2 22 2.9 22 4M20 4H4V16H10V19.08L13.08 16H20V4"; +var mdiCommentMultiple = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z"; +var mdiCommentMultipleOutline = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z"; +var mdiCommentOff = "M22.11 21.46L20.84 22.73L16.11 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4 3.9L1.11 3L2.39 1.73L22.11 21.46M22 16V4C22 2.9 21.11 2 20 2H5.2L20.95 17.75C21.57 17.41 22 16.76 22 16Z"; +var mdiCommentOffOutline = "M7.2 4L5.2 2H20C21.11 2 22 2.9 22 4V16C22 16.76 21.57 17.41 20.95 17.75L19.2 16H20V4H7.2M22.11 21.46L20.84 22.73L16.11 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 3.97 2 3.93 2 3.9L1.11 3L2.39 1.73L22.11 21.46M14.11 16L4 5.89V16H10V19.08L13.08 16H14.11Z"; +var mdiCommentOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z"; +var mdiCommentPlus = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22H9M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z"; +var mdiCommentPlusOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z"; +var mdiCommentProcessing = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z"; +var mdiCommentProcessingOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z"; +var mdiCommentQuestion = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69H11.24C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z"; +var mdiCommentQuestionOutline = "M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z"; +var mdiCommentQuote = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M11 13H7V8.8L8.3 6H10.3L8.9 9H11V13M17 13H13V8.8L14.3 6H16.3L14.9 9H17V13Z"; +var mdiCommentQuoteOutline = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M10 16V19.1L13.1 16H20V4H4V16H10M16.3 6L14.9 9H17V13H13V8.8L14.3 6H16.3M10.3 6L8.9 9H11V13H7V8.8L8.3 6H10.3Z"; +var mdiCommentRemove = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6L12,8.59L9.41,6Z"; +var mdiCommentRemoveOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z"; +var mdiCommentSearch = "M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.2 19.31,8.89L22.41,12L21,13.39L17.89,10.31C17.2,10.75 16.38,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4M4,4H9.5C9.19,4.79 9,5.64 9,6.5A6.5,6.5 0 0,0 15.5,13C16.18,13 16.83,12.89 17.46,12.69L20,15.23V16A2,2 0 0,1 18,18H13.9L10.2,21.71C10,21.89 9.76,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4Z"; +var mdiCommentSearchOutline = "M4,4H9.5C9.25,4.64 9.09,5.31 9.04,6H4V16H10V19.08L13.08,16H18V13.23L20,15.23V16A2,2 0 0,1 18,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6C2,4.89 2.9,4 4,4M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.2 19.31,8.89L22.41,12L21,13.39L17.89,10.31C17.2,10.75 16.38,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4Z"; +var mdiCommentText = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z"; +var mdiCommentTextMultiple = "M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M9,9V11H19V9H9M9,13V15H17V13H9Z"; +var mdiCommentTextMultipleOutline = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15M9,9H19V11H9V9M9,13H17V15H9V13Z"; +var mdiCommentTextOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z"; +var mdiCompare = "M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z"; +var mdiCompareHorizontal = "M9 14H2V16H9V19L13 15L9 11V14M15 13V10H22V8H15V5L11 9L15 13Z"; +var mdiCompareVertical = "M14 15V22H16V15H19L15 11L11 15H14M13 9H10V2H8V9H5L9 13L13 9Z"; +var mdiCompass = "M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z"; +var mdiCompassOff = "M1,3.5L2.28,2.25L21.75,21.72L20.5,23L17.7,20.22C16.08,21.34 14.12,22 12,22A10,10 0 0,1 2,12C2,9.88 2.66,7.92 3.78,6.3L1,3.5M6,18L12.47,15L9,11.53L6,18M18,6L11.56,9L6.33,3.76C7.94,2.65 9.9,2 12,2A10,10 0 0,1 22,12C22,14.1 21.35,16.06 20.24,17.67L15,12.44L18,6Z"; +var mdiCompassOffOutline = "M1,3.5L2.28,2.25L21.75,21.72L20.5,23L17.7,20.22C16.08,21.34 14.12,22 12,22A10,10 0 0,1 2,12C2,9.88 2.66,7.92 3.78,6.3L1,3.5M7,17L9.39,11.91L5.23,7.74C4.45,9 4,10.44 4,12A8,8 0 0,0 12,20C13.56,20 15,19.55 16.26,18.77L12.09,14.61L7,17M17,7L14.62,12.05L11.95,9.38L17,7M12,2A10,10 0 0,1 22,12C22,14.1 21.35,16.06 20.24,17.67L18.8,16.22C19.56,15 20,13.55 20,12A8,8 0 0,0 12,4C10.45,4 9,4.44 7.78,5.2L6.33,3.76C7.94,2.65 9.9,2 12,2Z"; +var mdiCompassOutline = "M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiCompassRose = "M15 9L12 0L9 9L0 12L9 15L12 24L15 15L24 12L15 9M4 12L10 10L11 12H4M12 20L10 14L12 13V20M12 4L14 10L12 11V4M14 14L13 12H20L14 14M8.7 17.3L5 19L6.7 15.3L8.3 15.8L8.7 17.3M17.3 15.3L19 19L15.3 17.3L15.8 15.7L17.3 15.3M6.7 8.7L5 5L8.7 6.7L8.2 8.2L6.7 8.7M15.3 6.7L19 5L17.3 8.7L15.7 8.2L15.3 6.7Z"; +var mdiConcourseCi = "M10.94 12.09A1.06 1.06 0 1 0 11.91 10.95A1.06 1.06 0 0 0 10.94 12.09M13.54 13.21A2.62 2.62 0 0 1 12.58 13.88L12.57 13.89A11.17 11.17 0 0 0 13.87 16.92A4.83 4.83 0 0 1 12.92 17.3A4.9 4.9 0 0 1 12.24 17.44L12.16 17.45L12.06 17.46L11.87 17.47C11.75 17.47 11.64 17.5 11.5 17.47A5 5 0 0 1 10.79 17.4A5.13 5.13 0 0 1 10.09 17.23A4.78 4.78 0 0 1 9.46 17A5 5 0 0 1 8.93 16.68A4.45 4.45 0 0 1 8.5 16.38C8.38 16.29 8.28 16.19 8.2 16.12L7.95 15.87C7.95 15.87 8 15.97 8.16 16.15C8.24 16.23 8.32 16.34 8.44 16.45A4.93 4.93 0 0 0 8.82 16.82A5.21 5.21 0 0 0 9.33 17.2A5.08 5.08 0 0 0 9.96 17.56A5.43 5.43 0 0 0 10.68 17.85A5.5 5.5 0 0 0 11.46 18.03C11.6 18.06 11.74 18.07 11.88 18.08L12.07 18.1H12.27A5.5 5.5 0 0 0 13.07 18.05A5.61 5.61 0 0 0 14.39 17.7Q14.63 18.03 14.9 18.34L14.87 18.36L14.66 18.5H14.62C14.59 18.53 14.67 18.5 14.66 18.5H14.64L14.58 18.54L14.44 18.61L14.37 18.64L14.33 18.66L14.32 18.67H14.31C14.3 18.68 14.36 18.66 14.33 18.67H14.32L14.17 18.74Q14.09 18.77 14 18.81V18.82L13.93 18.84L13.84 18.87A6.5 6.5 0 0 1 12.25 19.26A6.4 6.4 0 0 1 11.31 19.3H11.19L11.07 19.29L10.81 19.27C10.65 19.24 10.5 19.23 10.33 19.2A6.59 6.59 0 0 1 8.5 18.57C8.35 18.5 8.21 18.43 8.08 18.35C7.95 18.27 7.83 18.19 7.71 18.11A6.64 6.64 0 0 1 7.07 17.6A6.35 6.35 0 0 1 6.57 17.11C6.43 16.96 6.32 16.82 6.22 16.7C6.13 16.58 6.06 16.5 6 16.42L5.94 16.32L6 16.43C6.04 16.5 6.1 16.6 6.18 16.73C6.26 16.86 6.36 17 6.5 17.18A6.5 6.5 0 0 0 6.94 17.73A6.86 6.86 0 0 0 7.55 18.31C7.67 18.41 7.78 18.5 7.91 18.6C8.04 18.7 8.17 18.79 8.31 18.88A7.12 7.12 0 0 0 9.21 19.37A7.2 7.2 0 0 0 10.2 19.74C10.37 19.8 10.55 19.83 10.73 19.87L11 19.92L11.11 19.94L11.25 19.96A7.27 7.27 0 0 0 12.29 20.03A7.38 7.38 0 0 0 14.14 19.77L14.23 19.74L14.28 19.73L14.34 19.71C14.4 19.69 14.46 19.68 14.5 19.66L14.68 19.6L14.85 19.54L15 19.5L15.06 19.45H15.08L15.13 19.43L15.14 19.42L15.17 19.41L15.39 19.3L15.67 19.16C15.86 19.34 16.06 19.5 16.26 19.69C16.26 19.69 17.23 20.69 17.76 20.28C18.26 19.89 17.68 18.68 17.68 18.68A11.2 11.2 0 0 0 13.54 13.21M10.16 11.57L10.15 11.56A11.18 11.18 0 0 0 6.91 11.11A4.72 4.72 0 0 1 7.34 9.39L7.38 9.31L7.42 9.23L7.5 9.06C7.57 8.96 7.62 8.85 7.69 8.75A4.97 4.97 0 0 1 8.14 8.17A5.05 5.05 0 0 1 8.66 7.67A4.77 4.77 0 0 1 9.2 7.27A5.06 5.06 0 0 1 9.74 7A4.88 4.88 0 0 1 10.22 6.78C10.37 6.72 10.5 6.69 10.61 6.66C10.82 6.6 10.95 6.58 10.95 6.58S10.82 6.59 10.6 6.61C10.5 6.63 10.35 6.64 10.19 6.68A4.94 4.94 0 0 0 9.67 6.82A5.34 5.34 0 0 0 9.08 7.05A5.08 5.08 0 0 0 8.45 7.39A5.47 5.47 0 0 0 7.82 7.84A5.55 5.55 0 0 0 7.25 8.41C7.16 8.5 7.08 8.63 7 8.74L6.88 8.89L6.82 8.97L6.76 9.06A5.5 5.5 0 0 0 6.38 9.77A5.61 5.61 0 0 0 5.97 11.14L5.96 11.16C5.7 11.18 5.43 11.21 5.16 11.26V11.12L5.17 10.87V10.82C5.17 10.78 5.16 10.88 5.16 10.87V10.84L5.17 10.77L5.18 10.62L5.19 10.54V10.5H5.2V10.47C5.2 10.46 5.19 10.5 5.19 10.5L5.22 10.32L5.24 10.14L5.25 10.12V10.11L5.24 10.13L5.25 10.12V10.11L5.26 10.07L5.27 9.97A6.5 6.5 0 0 1 6.26 7.59L6.32 7.5L6.39 7.4L6.55 7.19C6.65 7.07 6.74 6.94 6.86 6.82A6.61 6.61 0 0 1 8.37 5.59C8.5 5.5 8.64 5.43 8.77 5.37C8.9 5.29 9.04 5.24 9.17 5.18A6.76 6.76 0 0 1 9.94 4.9A6.5 6.5 0 0 1 10.62 4.74C10.82 4.69 11 4.68 11.15 4.66C11.3 4.64 11.42 4.64 11.5 4.63L11.62 4.62H11.5C11.42 4.62 11.3 4.61 11.15 4.61C11 4.61 10.82 4.61 10.61 4.63A6.41 6.41 0 0 0 9.9 4.73A7.03 7.03 0 0 0 9.08 4.93C8.94 5 8.79 5.03 8.65 5.09C8.5 5.14 8.35 5.21 8.2 5.28A7.26 7.26 0 0 0 7.31 5.78A7.33 7.33 0 0 0 6.47 6.42C6.33 6.54 6.2 6.68 6.07 6.8L5.9 7L5.82 7.09L5.72 7.19A7.25 7.25 0 0 0 5.12 8.04A7.38 7.38 0 0 0 4.36 9.75L4.33 9.84L4.32 9.89L4.3 9.95L4.25 10.13L4.21 10.29L4.18 10.5L4.15 10.63C4.14 10.65 4.14 10.67 4.14 10.7L4.13 10.72V10.78L4.12 10.81L4.09 11.06L4.05 11.5C3.79 11.57 3.53 11.65 3.28 11.74C3.28 11.74 1.93 12.05 2 12.72C2.08 13.35 3.41 13.5 3.41 13.5A11.21 11.21 0 0 0 10.24 12.74A2.62 2.62 0 0 1 10.16 11.57M19.7 10.84A7.19 7.19 0 0 0 19.53 9.79C19.5 9.62 19.43 9.45 19.38 9.27L19.3 9.03L19.26 8.91L19.21 8.77A7.23 7.23 0 0 0 18.75 7.83A7.35 7.35 0 0 0 17.62 6.35L17.55 6.28L17.5 6.25L17.47 6.2L17.33 6.08L17.21 5.97L17.06 5.85L16.94 5.75L16.89 5.7L16.88 5.69H16.87L16.83 5.66L16.8 5.64L16.59 5.5L16.32 5.31Q16.42 4.88 16.5 4.45S16.88 3.11 16.25 2.85C15.67 2.61 14.91 3.72 14.91 3.72A11.21 11.21 0 0 0 12.25 10.05A2.63 2.63 0 0 1 13.32 10.55A11.2 11.2 0 0 0 15.25 8A4.73 4.73 0 0 1 16.08 8.66A4.81 4.81 0 0 1 16.53 9.19L16.58 9.25L16.63 9.33L16.74 9.5C16.8 9.59 16.86 9.69 16.92 9.8A4.89 4.89 0 0 1 17.4 11.16A4.78 4.78 0 0 1 17.5 11.83A4.88 4.88 0 0 1 17.5 12.44A4.76 4.76 0 0 1 17.44 12.96C17.42 13.11 17.39 13.25 17.36 13.36C17.31 13.57 17.27 13.7 17.27 13.7L17.41 13.37C17.45 13.26 17.5 13.14 17.54 13A5.06 5.06 0 0 0 17.67 12.46A5.34 5.34 0 0 0 17.75 11.83A5.04 5.04 0 0 0 17.76 11.11A5.38 5.38 0 0 0 17.43 9.57C17.38 9.44 17.32 9.31 17.27 9.19L17.18 9L17.14 8.93L17.09 8.83A5.53 5.53 0 0 0 15.67 7.16C15.79 6.9 15.89 6.65 16 6.38L16.03 6.41L16.25 6.53L16.28 6.54V6.55H16.29C16.32 6.57 16.24 6.5 16.25 6.53H16.26L16.27 6.54L16.33 6.58L16.45 6.66L16.5 6.71L16.56 6.73L16.57 6.74H16.58L16.56 6.73H16.57L16.71 6.84L16.85 6.94L16.87 6.96L16.86 6.95L16.87 6.96L16.91 7L17 7.05A6.46 6.46 0 0 1 18.6 9.05L18.65 9.15L18.71 9.27L18.82 9.5C18.87 9.65 18.94 9.79 19 9.95A6.69 6.69 0 0 1 19.24 10.9A6.78 6.78 0 0 1 19.35 11.86C19.36 12 19.36 12.17 19.35 12.32C19.35 12.5 19.34 12.62 19.33 12.77A6.79 6.79 0 0 1 19.2 13.58A6.4 6.4 0 0 1 19 14.25C18.96 14.45 18.89 14.62 18.84 14.76C18.78 14.9 18.73 15 18.7 15.07L18.64 15.19L18.71 15.08C18.75 15 18.81 14.91 18.88 14.78C18.95 14.64 19.04 14.5 19.12 14.29A6.5 6.5 0 0 0 19.37 13.62A6.93 6.93 0 0 0 19.59 12.81C19.61 12.66 19.64 12.5 19.66 12.35C19.68 12.19 19.7 12.03 19.7 11.87A7.1 7.1 0 0 0 19.69 10.84"; +var mdiConnection = "M21.4 7.5C22.2 8.3 22.2 9.6 21.4 10.3L18.6 13.1L10.8 5.3L13.6 2.5C14.4 1.7 15.7 1.7 16.4 2.5L18.2 4.3L21.2 1.3L22.6 2.7L19.6 5.7L21.4 7.5M15.6 13.3L14.2 11.9L11.4 14.7L9.3 12.6L12.1 9.8L10.7 8.4L7.9 11.2L6.4 9.8L3.6 12.6C2.8 13.4 2.8 14.7 3.6 15.4L5.4 17.2L1.4 21.2L2.8 22.6L6.8 18.6L8.6 20.4C9.4 21.2 10.7 21.2 11.4 20.4L14.2 17.6L12.8 16.2L15.6 13.3Z"; +var mdiConsole = "M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z"; +var mdiConsoleLine = "M13,19V16H21V19H13M8.5,13L2.47,7H6.71L11.67,11.95C12.25,12.54 12.25,13.5 11.67,14.07L6.74,19H2.5L8.5,13Z"; +var mdiConsoleNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7A2,2 0 0,1 5,15V5A2,2 0 0,1 7,3H17M7,7L11,11L7,15H9.85L13.13,11.72C13.5,11.33 13.5,10.7 13.13,10.3L9.83,7H7M17,13H14V15H17V13Z"; +var mdiConsoleNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M8,6.89L11.56,10.45L8,14H10.53L13.45,11.08C13.78,10.74 13.78,10.18 13.45,9.82L10.5,6.89H8M16,12.22H13.33V14H16V12.22Z"; +var mdiConsolidate = "M18 9H20V4H22V9A2 2 0 0 1 20 11H18V13L15 10L18 7M14 10A2 2 0 1 0 12 12A2 2 0 0 0 14 10M2 11V16H4V11H6V13L9 10L6 7V9H4A2 2 0 0 0 2 11M15 16L12 13L9 16H11V18A2 2 0 0 0 13 20H18V18H13V16"; +var mdiContactlessPayment = "M16.79,23C16.37,22.83 16.07,22.45 16,22C15.95,21.74 16,21.56 16.4,20.84C17.9,18.14 18.67,15.09 18.63,12C18.67,9 17.94,6.07 16.5,3.44C16.29,3 16.1,2.58 15.94,2.13C16,1.75 16.19,1.4 16.5,1.19C16.95,0.95 17.5,1 17.91,1.28C18.19,1.64 18.43,2 18.63,2.42C19.71,4.5 20.44,6.7 20.8,9C21.03,10.81 21.06,12.65 20.89,14.47C20.58,16.81 19.89,19.07 18.83,21.18C18.19,22.46 17.83,23 17.45,23C17.37,23 17.28,23 17.2,23C17.06,23 16.93,23 16.79,23V23M12.43,20.79C11.86,20.63 11.5,20.05 11.62,19.47C11.62,19.35 11.93,18.8 12.21,18.24C13.39,15.97 13.9,13.41 13.67,10.86C13.53,9.03 13,7.25 12.13,5.64C11.5,4.38 11.46,4.18 11.83,3.64C12.27,3.15 13,3.08 13.54,3.5C14.26,4.56 14.83,5.72 15.25,6.94C16.53,10.73 16.33,14.86 14.69,18.5C13.85,20.39 13.26,21 12.43,20.74V20.79M7.93,18.56C7.57,18.4 7.3,18.08 7.2,17.7C7.2,17.5 7.2,17.24 7.65,16.44C9.14,13.74 9.14,10.46 7.65,7.76C7,6.5 7,6.24 7.53,5.76C7.72,5.54 8,5.43 8.3,5.47C8.94,5.47 9.3,5.78 9.84,6.91C10.69,8.47 11.13,10.22 11.12,12C11.16,13.81 10.72,15.61 9.85,17.2C9.31,18.25 9.04,18.5 8.5,18.59C8.31,18.61 8.11,18.59 7.93,18.5V18.56M3.72,16.43C3.39,16.27 3.13,16 3,15.65C2.9,15.3 3,15 3.4,14.36C3.9,13.68 4.14,12.84 4.09,12C4.16,11.15 3.93,10.31 3.44,9.61C3.27,9.36 3.13,9.09 3,8.82C2.89,8.19 3.31,7.59 4,7.47C4.54,7.37 4.92,7.6 5.42,8.36C6.87,10.57 6.87,13.42 5.42,15.63C4.91,16.4 4.33,16.63 3.73,16.43H3.72Z"; +var mdiContactlessPaymentCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M8.43 14.44L7.07 13.83C7.35 13.27 7.5 12.67 7.5 12.05C7.5 11.39 7.35 10.76 7.07 10.17L8.43 9.56C8.81 10.37 9 11.2 9 12.05C9 12.8 8.81 13.6 8.43 14.44M11.53 15.94L10.22 15.29C10.75 14.16 11 13 11 11.86C11 10.73 10.75 9.69 10.22 8.71L11.53 7.96C12.19 9.12 12.5 10.42 12.5 11.86C12.5 13.33 12.19 14.69 11.53 15.94M14.68 17.35L13.31 16.65C14.1 15.11 14.5 13.57 14.5 12S14.1 8.87 13.31 7.31L14.68 6.65C15.55 8.43 16 10.22 16 12C16 13.82 15.55 15.6 14.68 17.35Z"; +var mdiContactlessPaymentCircleOutline = "M12 4C16.41 4 20 7.59 20 12S16.41 20 12 20 4 16.41 4 12 7.59 4 12 4M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M8.43 14.44L7.07 13.83C7.35 13.27 7.5 12.67 7.5 12.05C7.5 11.39 7.35 10.76 7.07 10.17L8.43 9.56C8.81 10.37 9 11.2 9 12.05C9 12.8 8.81 13.6 8.43 14.44M11.53 15.94L10.22 15.29C10.75 14.16 11 13 11 11.86C11 10.73 10.75 9.69 10.22 8.71L11.53 7.96C12.19 9.12 12.5 10.42 12.5 11.86C12.5 13.33 12.19 14.69 11.53 15.94M14.68 17.35L13.31 16.65C14.1 15.11 14.5 13.57 14.5 12S14.1 8.87 13.31 7.31L14.68 6.65C15.55 8.43 16 10.22 16 12C16 13.82 15.55 15.6 14.68 17.35Z"; +var mdiContacts = "M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z"; +var mdiContactsOutline = "M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M20 18H4V6H20V18M4 0H20V2H4M4 22H20V24H4M12 12C13.38 12 14.5 10.88 14.5 9.5S13.38 7 12 7 9.5 8.12 9.5 9.5 10.62 12 12 12M12 8.5C12.55 8.5 13 8.95 13 9.5S12.55 10.5 12 10.5 11 10.05 11 9.5 11.45 8.5 12 8.5M17 16C17 13.9 13.69 13 12 13S7 13.9 7 16V17H17V16M8.81 15.5C9.42 15 10.84 14.5 12 14.5C13.17 14.5 14.59 15 15.2 15.5H8.81Z"; +var mdiContain = "M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z"; +var mdiContainEnd = "M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z"; +var mdiContainStart = "M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15Z"; +var mdiContentCopy = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"; +var mdiContentCut = "M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z"; +var mdiContentDuplicate = "M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z"; +var mdiContentPaste = "M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z"; +var mdiContentSave = "M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z"; +var mdiContentSaveAlert = "M13 9H3V5H13M10 19C8.3 19 7 17.7 7 16S8.3 13 10 13 13 14.3 13 16 11.7 19 10 19M15 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H17C18.1 21 19 20.1 19 19V7L15 3M23 14H21V7H23V14M23 18H21V16H23V18Z"; +var mdiContentSaveAlertOutline = "M15 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H17C18.1 21 19 20.1 19 19V7L15 3M17 19H3V5H14.2L17 7.8V19M10 12C8.3 12 7 13.3 7 15S8.3 18 10 18 13 16.7 13 15 11.7 12 10 12M4 6H13V10H4V6M23 14H21V7H23V14M23 18H21V16H23V18Z"; +var mdiContentSaveAll = "M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z"; +var mdiContentSaveAllOutline = "M1 7H3V21H17V23H3C1.9 23 1 22.11 1 21V7M19 1H7C5.89 1 5 1.9 5 3V17C5 18.1 5.89 19 7 19H21C22.1 19 23 18.1 23 17V5L19 1M21 17H7V3H18.17L21 5.83V17M14 10C12.34 10 11 11.34 11 13S12.34 16 14 16 17 14.66 17 13 15.66 10 14 10M8 4H17V8H8V4Z"; +var mdiContentSaveCog = "M21 11.7V7L17 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11.7C11.4 20.3 11.2 19.6 11.1 18.8C9.9 18.4 9 17.3 9 16C9 14.3 10.3 13 12 13C12.3 13 12.6 13.1 12.9 13.2C14.2 11.8 16 11 18 11C19.1 11 20.1 11.2 21 11.7M15 9H5V5H15V9M21.7 18.6V17.6L22.8 16.8C22.9 16.7 23 16.6 22.9 16.5L21.9 14.8C21.9 14.7 21.7 14.7 21.6 14.7L20.4 15.2C20.1 15 19.8 14.8 19.5 14.7L19.3 13.4C19.3 13.3 19.2 13.2 19.1 13.2H17.1C16.9 13.2 16.8 13.3 16.8 13.4L16.6 14.7C16.3 14.9 16.1 15 15.8 15.2L14.6 14.7C14.5 14.7 14.4 14.7 14.3 14.8L13.3 16.5C13.3 16.6 13.3 16.7 13.4 16.8L14.5 17.6V18.6L13.4 19.4C13.3 19.5 13.2 19.6 13.3 19.7L14.3 21.4C14.4 21.5 14.5 21.5 14.6 21.5L15.8 21C16 21.2 16.3 21.4 16.6 21.5L16.8 22.8C16.9 22.9 17 23 17.1 23H19.1C19.2 23 19.3 22.9 19.3 22.8L19.5 21.5C19.8 21.3 20 21.2 20.3 21L21.5 21.4C21.6 21.4 21.7 21.4 21.8 21.3L22.8 19.6C22.9 19.5 22.9 19.4 22.8 19.4L21.7 18.6M18 19.5C17.2 19.5 16.5 18.8 16.5 18S17.2 16.5 18 16.5 19.5 17.2 19.5 18 18.8 19.5 18 19.5Z"; +var mdiContentSaveCogOutline = "M11.1 19C11.2 19.7 11.4 20.4 11.7 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H17L21 7V11.7C20.4 11.4 19.7 11.2 19 11.1V7.8L16.2 5H5V19H11.1M12 12C10.3 12 9 13.3 9 15C9 16.3 9.8 17.4 11 17.8C11.1 15.6 12.1 13.7 13.7 12.5C13.2 12.2 12.6 12 12 12M15 10V6H6V10H15M22.8 19.6L21.8 21.3C21.7 21.4 21.6 21.4 21.5 21.4L20.3 21C20 21.2 19.8 21.3 19.5 21.5L19.3 22.8C19.3 22.9 19.2 23 19.1 23H17.1C17 23 16.9 22.9 16.8 22.8L16.6 21.5C16.3 21.4 16 21.2 15.8 21L14.6 21.5C14.5 21.5 14.4 21.5 14.3 21.4L13.3 19.7C13.2 19.6 13.3 19.5 13.4 19.4L14.5 18.6V17.6L13.4 16.8C13.3 16.7 13.3 16.6 13.3 16.5L14.3 14.8C14.4 14.7 14.5 14.7 14.6 14.7L15.8 15.2C16.1 15 16.3 14.9 16.6 14.7L16.8 13.4C16.8 13.3 16.9 13.2 17.1 13.2H19.1C19.2 13.2 19.3 13.3 19.3 13.4L19.5 14.7C19.8 14.8 20.1 15 20.4 15.2L21.6 14.7C21.7 14.7 21.9 14.7 21.9 14.8L22.9 16.5C23 16.6 22.9 16.7 22.8 16.8L21.7 17.6V18.6L22.8 19.4C22.9 19.4 22.9 19.5 22.8 19.6M19.5 18C19.5 17.2 18.8 16.5 18 16.5S16.5 17.2 16.5 18 17.2 19.5 18 19.5C18.8 19.5 19.5 18.8 19.5 18Z"; +var mdiContentSaveEdit = "M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z"; +var mdiContentSaveEditOutline = "M4 19H10V21H4C2.89 21 2 20.1 2 19V5C2 3.9 2.89 3 4 3H16L20 7V9.12L18 11.12V7.83L15.17 5H4V19M14 10V6H5V10H14M20.42 12.3C20.31 12.19 20.18 12.13 20.04 12.13C19.9 12.13 19.76 12.19 19.65 12.3L18.65 13.3L20.7 15.35L21.7 14.35C21.92 14.14 21.92 13.79 21.7 13.58L20.42 12.3M12 19.94V22H14.06L20.12 15.93L18.07 13.88L12 19.94M14 15C14 13.34 12.66 12 11 12S8 13.34 8 15 9.34 18 11 18C11.04 18 11.08 18 11.13 18L14 15.13C14 15.09 14 15.05 14 15"; +var mdiContentSaveMove = "M17,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H11.81C11.42,20.34 11.17,19.6 11.07,18.84C9.5,18.31 8.66,16.6 9.2,15.03C9.61,13.83 10.73,13 12,13C12.44,13 12.88,13.1 13.28,13.29C15.57,11.5 18.83,11.59 21,13.54V7L17,3M15,9H5V5H15V9M13,17H17V14L22,18.5L17,23V20H13V17"; +var mdiContentSaveMoveOutline = "M13 17H17V14L22 18.5L17 23V20H13V17M14 12.8C13.5 12.31 12.78 12 12 12C10.34 12 9 13.34 9 15C9 16.31 9.84 17.41 11 17.82C11.07 15.67 12.27 13.8 14 12.8M11.09 19H5V5H16.17L19 7.83V12.35C19.75 12.61 20.42 13 21 13.54V7L17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H11.81C11.46 20.39 11.21 19.72 11.09 19M6 10H15V6H6V10Z"; +var mdiContentSaveOff = "M8.2 5L6.2 3H17L21 7V17.8L12.2 9H15V5H8.2M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46M7.11 9L5 6.89V9H7.11M14.89 16.78L11.22 13.11C9.95 13.46 9 14.61 9 16C9 17.66 10.34 19 12 19C13.39 19 14.54 18.05 14.89 16.78Z"; +var mdiContentSaveOffOutline = "M8.2 5L6.2 3H17L21 7V17.8L19 15.8V7.83L16.17 5H8.2M15 10V6H9.2L13.2 10H15M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.89 21 3 20.1 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46M17.11 19L14.59 16.5C14.08 17.39 13.12 18 12 18C10.34 18 9 16.66 9 15C9 13.88 9.61 12.92 10.5 12.41L8.11 10H6V7.89L5 6.89V19H17.11Z"; +var mdiContentSaveOutline = "M17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V7L17 3M19 19H5V5H16.17L19 7.83V19M12 12C10.34 12 9 13.34 9 15S10.34 18 12 18 15 16.66 15 15 13.66 12 12 12M6 6H15V10H6V6Z"; +var mdiContentSaveSettings = "M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z"; +var mdiContentSaveSettingsOutline = "M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M17 2H5C3.89 2 3 2.9 3 4V18C3 19.1 3.89 20 5 20H19C20.1 20 21 19.1 21 18V6L17 2M19 18H5V4H16.17L19 6.83V18M12 11C10.34 11 9 12.34 9 14S10.34 17 12 17 15 15.66 15 14 13.66 11 12 11M6 5H15V9H6V5Z"; +var mdiContrast = "M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z"; +var mdiContrastBox = "M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiContrastCircle = "M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z"; +var mdiControllerClassic = "M6,7H18A5,5 0 0,1 23,12A5,5 0 0,1 18,17C16.36,17 14.91,16.21 14,15H10C9.09,16.21 7.64,17 6,17A5,5 0 0,1 1,12A5,5 0 0,1 6,7M19.75,9.5A1.25,1.25 0 0,0 18.5,10.75A1.25,1.25 0 0,0 19.75,12A1.25,1.25 0 0,0 21,10.75A1.25,1.25 0 0,0 19.75,9.5M17.25,12A1.25,1.25 0 0,0 16,13.25A1.25,1.25 0 0,0 17.25,14.5A1.25,1.25 0 0,0 18.5,13.25A1.25,1.25 0 0,0 17.25,12M5,9V11H3V13H5V15H7V13H9V11H7V9H5Z"; +var mdiControllerClassicOutline = "M17.5,7A5.5,5.5 0 0,1 23,12.5A5.5,5.5 0 0,1 17.5,18C15.79,18 14.27,17.22 13.26,16H10.74C9.73,17.22 8.21,18 6.5,18A5.5,5.5 0 0,1 1,12.5A5.5,5.5 0 0,1 6.5,7H17.5M6.5,9A3.5,3.5 0 0,0 3,12.5A3.5,3.5 0 0,0 6.5,16C7.9,16 9.1,15.18 9.66,14H14.34C14.9,15.18 16.1,16 17.5,16A3.5,3.5 0 0,0 21,12.5A3.5,3.5 0 0,0 17.5,9H6.5M5.75,10.25H7.25V11.75H8.75V13.25H7.25V14.75H5.75V13.25H4.25V11.75H5.75V10.25M16.75,12.5A1,1 0 0,1 17.75,13.5A1,1 0 0,1 16.75,14.5A1,1 0 0,1 15.75,13.5A1,1 0 0,1 16.75,12.5M18.75,10.5A1,1 0 0,1 19.75,11.5A1,1 0 0,1 18.75,12.5A1,1 0 0,1 17.75,11.5A1,1 0 0,1 18.75,10.5Z"; +var mdiCookie = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z"; +var mdiCookieAlert = "M18 10H16V9C16 8 15 8 15 8H13V7C13 6 12 6 12 6H11V4C11 3 10 3 10 3C5 3 1 7 1 12S5 21 10 21 19 17 19 12C19 11.5 19 11 18.9 10.5C18.6 10 18 10 18 10M4.5 13C3.7 13 3 12.3 3 11.5S3.7 10 4.5 10 6 10.7 6 11.5 5.3 13 4.5 13M6 7.5C6 6.7 6.7 6 7.5 6S9 6.7 9 7.5 8.3 9 7.5 9 6 8.3 6 7.5M9 19C8.2 19 7.5 18.3 7.5 17.5S8.2 16 9 16 10.5 16.7 10.5 17.5 9.8 19 9 19M9.5 14C8.7 14 8 13.3 8 12.5S8.7 11 9.5 11 11 11.7 11 12.5 10.3 14 9.5 14M14.5 16C13.7 16 13 15.3 13 14.5S13.7 13 14.5 13C15.3 13 16 13.7 16 14.5S15.3 16 14.5 16M21 15H23V17H21V15M23 7V13H21V7H23Z"; +var mdiCookieAlertOutline = "M16 14.5C16 15.3 15.3 16 14.5 16S13 15.3 13 14.5 13.7 13 14.5 13C15.3 13 16 13.7 16 14.5M18.9 10.5C19 11 19 11.5 19 12C19 17 15 21 10 21S1 17 1 12 5 3 10 3C10 3 11 3 11 4V6H12C12 6 13 6 13 7V8H15C15 8 16 8 16 9V10H18C18 10 18.6 10 18.9 10.5M17 12H15.5C14.7 12 14 11.3 14 10.5V10H12.5C11.7 10 11 9.3 11 8.5V8H10.5C9.7 8 9 7.3 9 6.5V5.1C5.9 5.5 3.5 8 3.1 11.1C3.2 10.5 3.8 10 4.5 10C5.3 10 6 10.7 6 11.5S5.3 13 4.5 13C3.7 13 3.1 12.4 3 11.6C3 12.1 3 12.6 3.1 13.1C3.5 15.8 5.6 18 8.2 18.7C7.8 18.4 7.5 18 7.5 17.5C7.5 16.7 8.2 16 9 16S10.5 16.7 10.5 17.5C10.5 18.2 10 18.8 9.3 19C13.5 19.4 17 16.1 17 12M9.5 11C8.7 11 8 11.7 8 12.5S8.7 14 9.5 14 11 13.3 11 12.5 10.3 11 9.5 11M9 7.5C9 6.7 8.3 6 7.5 6S6 6.7 6 7.5 6.7 9 7.5 9 9 8.3 9 7.5M21 17H23V15H21V17M21 7V13H23V7H21Z"; +var mdiCookieCheck = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; +var mdiCookieCheckOutline = "M15 10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C11.9 19 12.46 19 13 18.92C13 18.95 13 18.97 13 19C13 19.66 13.12 20.3 13.32 20.89C12.89 20.96 12.45 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.45 20.96 12.89 20.89 13.32C20.3 13.12 19.66 13 19 13C18.97 13 18.95 13 18.92 13C18.97 12.68 19 12.34 19 12H17.5C16.67 12 16 11.33 16 10.5V10H15M15 14.5C15 14.5 15 14.5 15 14.53C15.66 13.95 16.45 13.5 17.32 13.24C17.08 13.09 16.8 13 16.5 13C15.67 13 15 13.67 15 14.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiCookieClock = "M19.97 10.24C19.95 10 19.91 9.74 19.87 9.5C19.6 9 19 9 19 9H17V8C17 7 16 7 16 7H14V6C14 5 13 5 13 5H12V3C12 2 11 2 11 2C6.03 2 2 6.03 2 11C2 15.71 5.62 19.57 10.23 19.96C11.5 21.8 13.61 23 16 23C19.87 23 23 19.87 23 16C23 13.61 21.8 11.5 19.97 10.24M11.64 10.53C10.87 11.15 10.23 11.92 9.78 12.81C9.32 12.55 9 12.06 9 11.5C9 10.67 9.67 10 10.5 10C10.96 10 11.36 10.21 11.64 10.53M5.5 12C4.67 12 4 11.33 4 10.5S4.67 9 5.5 9 7 9.67 7 10.5 6.33 12 5.5 12M7 6.5C7 5.67 7.67 5 8.5 5S10 5.67 10 6.5 9.33 8 8.5 8 7 7.33 7 6.5M8.5 16.5C8.5 16.04 8.71 15.64 9.03 15.36C9 15.57 9 15.79 9 16C9 16.62 9.09 17.22 9.24 17.79C8.8 17.5 8.5 17.05 8.5 16.5M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25Z"; +var mdiCookieClockOutline = "M8.5 8C7.67 8 7 7.33 7 6.5S7.67 5 8.5 5 10 5.67 10 6.5 9.33 8 8.5 8M16.5 12H15V17L18.61 19.16L19.36 17.94L16.5 16.25V12M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.23 19.96C5.62 19.57 2 15.71 2 11C2 6.03 6.03 2 11 2C11 2 12 2 12 3V5H13C13 5 14 5 14 6V7H16C16 7 17 7 17 8V9H19C19 9 19.6 9 19.87 9.5C19.91 9.74 19.95 10 19.97 10.24C21.8 11.5 23 13.61 23 16M9.16 17.74C8.76 17.47 8.5 17 8.5 16.5C8.5 16.04 8.71 15.64 9.03 15.36C9.12 14.45 9.38 13.59 9.78 12.81C9.32 12.55 9 12.06 9 11.5C9 10.67 9.67 10 10.5 10C10.96 10 11.36 10.21 11.64 10.53C12.59 9.77 13.74 9.26 15 9.08V9H13.5C12.67 9 12 8.33 12 7.5V7H11.5C10.67 7 10 6.33 10 5.5V4.07C6.91 4.5 4.47 7 4.07 10.08C4.25 9.46 4.82 9 5.5 9C6.33 9 7 9.67 7 10.5S6.33 12 5.5 12C4.71 12 4.07 11.39 4 10.62C4 11.11 4 11.61 4.09 12.12C4.5 14.81 6.54 17.04 9.16 17.74M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; +var mdiCookieCog = "M21 12.29C21 12.19 21 12.1 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.1 21 12.19 21 12.29 21C12.11 20.36 12 19.69 12 19C12 18.86 12 18.73 12 18.59C11.75 18.84 11.4 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16C11.59 16 12.1 16.35 12.34 16.84C13.25 14.03 15.89 12 19 12C19.69 12 20.36 12.11 21 12.29M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.7 19.6V18.6L23.8 17.8C23.9 17.7 24 17.6 23.9 17.5L22.9 15.8C22.9 15.7 22.7 15.7 22.6 15.7L21.4 16.2C21.1 16 20.8 15.8 20.5 15.7L20.3 14.4C20.3 14.3 20.2 14.2 20.1 14.2H18.1C17.9 14.2 17.8 14.3 17.8 14.4L17.6 15.7C17.3 15.9 17.1 16 16.8 16.2L15.6 15.7C15.5 15.7 15.4 15.7 15.3 15.8L14.3 17.5C14.3 17.6 14.3 17.7 14.4 17.8L15.5 18.6V19.6L14.4 20.4C14.3 20.5 14.2 20.6 14.3 20.7L15.3 22.4C15.4 22.5 15.5 22.5 15.6 22.5L16.8 22C17 22.2 17.3 22.4 17.6 22.5L17.8 23.8C17.9 23.9 18 24 18.1 24H20.1C20.2 24 20.3 23.9 20.3 23.8L20.5 22.5C20.8 22.3 21 22.2 21.3 22L22.5 22.4C22.6 22.4 22.7 22.4 22.8 22.3L23.8 20.6C23.9 20.5 23.9 20.4 23.8 20.4L22.7 19.6M19 20.5C18.2 20.5 17.5 19.8 17.5 19S18.2 17.5 19 17.5 20.5 18.2 20.5 19 19.8 20.5 19 20.5Z"; +var mdiCookieCogOutline = "M14.5 10C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16C11.59 16 12.1 16.35 12.34 16.84C12.16 17.39 12.06 17.97 12 18.57C11.83 18.76 11.6 18.9 11.32 18.96C11.55 19 11.78 19 12 19V19C12 19.69 12.11 20.36 12.29 21C12.19 21 12.1 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.1 21 12.19 21 12.29C20.36 12.11 19.69 12 19 12H17.5C16.67 12 16 11.33 16 10.5V10H14.5M11.5 11C10.67 11 10 11.67 10 12.5S10.67 14 11.5 14 13 13.33 13 12.5 12.33 11 11.5 11M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiCookieEdit = "M15.1 15.03C15.04 14.86 15 14.69 15 14.5C15 13.67 15.67 13 16.5 13C16.69 13 16.86 13.04 17.03 13.1L19.39 10.74C19.69 10.44 20.05 10.24 20.44 10.12C20.21 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.63 6.5 20.44 11 20.94V19.13L11.14 19C11.1 19 11.05 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5C12.5 17.55 12.5 17.6 12.5 17.64L15.1 15.03M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.85 14.19L21.87 15.17L19.83 13.13L20.81 12.15C21 11.95 21.33 11.95 21.53 12.15L22.85 13.47C23.05 13.67 23.05 14 22.85 14.19M19.13 13.83L21.17 15.87L15.04 22H13V19.96L19.13 13.83Z"; +var mdiCookieEditOutline = "M9.5 6C10.33 6 11 6.67 11 7.5S10.33 9 9.5 9 8 8.33 8 7.5 8.67 6 9.5 6M11.5 11C10.67 11 10 11.67 10 12.5S10.67 14 11.5 14 13 13.33 13 12.5 12.33 11 11.5 11M11 16C10.17 16 9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16V10.5C16 11.33 16.67 12 17.5 12H18.13L19.39 10.74C19.69 10.44 20.05 10.24 20.44 10.12C20.21 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.63 6.5 20.44 11 20.94V19.13L12.47 17.66C12.5 17.6 12.5 17.55 12.5 17.5C12.5 16.67 11.83 16 11 16M15 14.5C15 14.69 15.04 14.86 15.1 15.03L17.03 13.1C16.86 13.04 16.69 13 16.5 13C15.67 13 15 13.67 15 14.5M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z"; +var mdiCookieLock = "M18.5 11C19.42 11 20.27 11.29 21 11.77C21 11.35 20.95 10.92 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.34 21 12.67 21 13 20.94V17C13 16.08 13.42 15.26 14.07 14.71C14.45 12.6 16.29 11 18.5 11M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z"; +var mdiCookieLockOutline = "M10 12.5C10 11.67 10.67 11 11.5 11S13 11.67 13 12.5 12.33 14 11.5 14 10 13.33 10 12.5M16 10V10.5C16 10.9 16.16 11.26 16.41 11.53C17.04 11.2 17.75 11 18.5 11C19.42 11 20.27 11.29 21 11.77C21 11.35 20.95 10.92 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.34 21 12.67 21 13 20.94V18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M22 17V21C22 21.55 21.55 22 21 22H16C15.45 22 15 21.55 15 21V17C15 16.45 15.45 16 16 16V15.5C16 14.12 17.12 13 18.5 13S21 14.12 21 15.5V16C21.55 16 22 16.45 22 17M20 15.5C20 14.67 19.33 14 18.5 14S17 14.67 17 15.5V16H20V15.5Z"; +var mdiCookieMinus = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M23 18V20H15V18H23Z"; +var mdiCookieMinusOutline = "M15 10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C11.9 19 12.46 19 13 18.92C13 18.95 13 18.97 13 19C13 19.66 13.12 20.3 13.32 20.89C12.89 20.96 12.45 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.45 20.96 12.89 20.89 13.32C20.3 13.12 19.66 13 19 13C18.97 13 18.95 13 18.92 13C18.97 12.68 19 12.34 19 12H17.5C16.67 12 16 11.33 16 10.5V10H15M15 14.5C15 14.5 15 14.5 15 14.53C15.66 13.95 16.45 13.5 17.32 13.24C17.08 13.09 16.8 13 16.5 13C15.67 13 15 13.67 15 14.5M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M15 18V20H23V18H15Z"; +var mdiCookieOff = "M9.25 6.05L7.45 4.25C8.79 3.46 10.34 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 13.66 20.54 15.22 19.75 16.55L17.95 14.75C17.97 14.67 18 14.59 18 14.5C18 13.67 17.33 13 16.5 13C16.41 13 16.33 13.03 16.25 13.05L10.95 7.75C10.97 7.67 11 7.59 11 7.5C11 6.67 10.33 6 9.5 6C9.41 6 9.33 6.03 9.25 6.05M22.11 21.46L20.84 22.73L17.34 19.23C15.85 20.34 14 21 12 21C7.03 21 3 16.97 3 12C3 10 3.66 8.15 4.77 6.66L1.11 3L2.39 1.73L22.11 21.46M8 11.5C8 10.67 7.33 10 6.5 10S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5M10 12.5C10 13.33 10.67 14 11.5 14C11.68 14 11.85 13.96 12 13.9L10.1 12C10.04 12.15 10 12.32 10 12.5M12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5 10.17 19 11 19 12.5 18.33 12.5 17.5Z"; +var mdiCookieOffOutline = "M8.93 5.73L7.45 4.25C8.79 3.46 10.34 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 13.66 20.54 15.22 19.75 16.55L18.28 15.08C18.74 14.15 19 13.11 19 12H17.5C16.67 12 16 11.33 16 10.5V10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C10.26 5.18 9.57 5.41 8.93 5.73M9.25 6.05L10.95 7.75C10.97 7.67 11 7.59 11 7.5C11 6.67 10.33 6 9.5 6C9.41 6 9.33 6.03 9.25 6.05M16.25 13.05L17.95 14.75C17.97 14.67 18 14.59 18 14.5C18 13.67 17.33 13 16.5 13C16.41 13 16.33 13.03 16.25 13.05M22.11 21.46L20.84 22.73L17.34 19.23C15.85 20.34 14 21 12 21C7.03 21 3 16.97 3 12C3 10 3.66 8.15 4.77 6.66L1.11 3L2.39 1.73L22.11 21.46M15.9 17.79L12 13.9C11.85 13.96 11.68 14 11.5 14C10.67 14 10 13.33 10 12.5C10 12.32 10.04 12.15 10.1 12L6.21 8.1C5.62 9 5.21 10 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C13.03 19.12 14.61 18.66 15.9 17.79Z"; +var mdiCookieOutline = "M20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C16.97 21 21 16.97 21 12C21 11.5 20.96 11 20.87 10.5M11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16V10.5C16 11.33 16.67 12 17.5 12H19C19 16.08 15.5 19.36 11.32 18.96M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M18 14.5C18 15.33 17.33 16 16.5 16S15 15.33 15 14.5 15.67 13 16.5 13 18 13.67 18 14.5Z"; +var mdiCookiePlus = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; +var mdiCookiePlusOutline = "M16.5 13C16.8 13 17.08 13.09 17.32 13.24C16.45 13.5 15.66 13.95 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13M16 10V10.5C16 11.33 16.67 12 17.5 12H19C19 12.34 18.97 12.68 18.92 13C18.95 13 18.97 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 18.97 13 18.95 13 18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiCookieRefresh = "M11 16C11.53 16 12 16.28 12.26 16.69C13.04 14 15.54 12 18.5 12C19.38 12 20.21 12.18 21 12.5C21 12.33 21 12.17 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.17 21 12.33 21 12.5 21C12.19 20.24 12 19.44 12 18.61C11.74 18.85 11.39 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M18 18.5L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18Z"; +var mdiCookieRefreshOutline = "M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M15 10H16V10.5C16 11.33 16.67 12 17.5 12H19L19 12.03C19.69 12.09 20.36 12.24 21 12.5C21 12.33 21 12.17 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.17 21 12.33 21 12.5 21C12.24 20.36 12.09 19.69 12.03 19C11.8 19 11.56 19 11.32 18.96C11.59 18.9 11.81 18.76 12 18.58C12 18.55 12 18.53 12 18.5C12 17.87 12.1 17.27 12.26 16.69C12 16.28 11.53 16 11 16C10.17 16 9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H15M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z"; +var mdiCookieRemove = "M16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; +var mdiCookieRemoveOutline = "M17.32 13.24C16.45 13.5 15.66 13.95 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24M16 10V10.5C16 11.33 16.67 12 17.5 12H19C19 12.34 18.97 12.68 18.92 13C18.95 13 18.97 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 18.97 13 18.95 13 18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiCookieSettings = "M20.87 9.5C20.6 9 20 9 20 9H18V8C18 7 17 7 17 7H15V6C15 5 14 5 14 5H13V3C13 2 12 2 12 2C7.03 2 3 6.03 3 11S7.03 20 12 20 21 15.97 21 11C21 10.5 20.96 10 20.87 9.5M6.5 12C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12M8 6.5C8 5.67 8.67 5 9.5 5S11 5.67 11 6.5 10.33 8 9.5 8 8 7.33 8 6.5M11 18C10.17 18 9.5 17.33 9.5 16.5S10.17 15 11 15 12.5 15.67 12.5 16.5 11.83 18 11 18M11.5 13C10.67 13 10 12.33 10 11.5S10.67 10 11.5 10 13 10.67 13 11.5 12.33 13 11.5 13M16.5 15C15.67 15 15 14.33 15 13.5S15.67 12 16.5 12 18 12.67 18 13.5 17.33 15 16.5 15M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22Z"; +var mdiCookieSettingsOutline = "M13 11.5C13 12.33 12.33 13 11.5 13S10 12.33 10 11.5 10.67 10 11.5 10 13 10.67 13 11.5M11 6.5C11 5.67 10.33 5 9.5 5S8 5.67 8 6.5 8.67 8 9.5 8 11 7.33 11 6.5M21 11C21 15.97 16.97 20 12 20S3 15.97 3 11 7.03 2 12 2C12 2 13 2 13 3V5H14C14 5 15 5 15 6V7H17C17 7 18 7 18 8V9H20C20 9 20.6 9 20.87 9.5C20.96 10 21 10.5 21 11M19 11H17.5C16.67 11 16 10.33 16 9.5V9H14.5C13.67 9 13 8.33 13 7.5V7H12.5C11.67 7 11 6.33 11 5.5V4.07C7.91 4.5 5.47 7 5.07 10.08C5.25 9.46 5.82 9 6.5 9C7.33 9 8 9.67 8 10.5S7.33 12 6.5 12C5.71 12 5.07 11.39 5 10.62C5 11.11 5 11.61 5.09 12.12C5.5 14.81 7.54 17.04 10.16 17.74C9.76 17.47 9.5 17 9.5 16.5C9.5 15.67 10.17 15 11 15S12.5 15.67 12.5 16.5C12.5 17.22 12 17.82 11.32 17.96C15.5 18.36 19 15.08 19 11M16.5 12C15.67 12 15 12.67 15 13.5S15.67 15 16.5 15 18 14.33 18 13.5 17.33 12 16.5 12M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; +var mdiCoolantTemperature = "M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z"; +var mdiCopyright = "M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z"; +var mdiCordova = "M20.18,21.55H16.94L17.17,18.82H15.58L15.35,21.55H8.65L8.42,18.82H6.83L7.06,21.55H3.82L2,9.73L6.55,2.45H17.45L22,9.73L20.18,21.55M16.55,6.09H13.62L13.82,7.45H10.18L10.38,6.09H7.45L5.64,9.73L6.55,17H17.45L18.36,9.73L16.55,6.09M14.95,14.59C14.7,14.59 14.5,13.83 14.5,12.9C14.5,11.96 14.7,11.2 14.95,11.2C15.21,11.2 15.41,11.96 15.41,12.9C15.41,13.83 15.21,14.59 14.95,14.59M9.22,14.73C8.96,14.73 8.76,13.97 8.76,13.04C8.76,12.1 8.96,11.35 9.22,11.35C9.47,11.35 9.67,12.1 9.67,13.04C9.67,13.97 9.47,14.73 9.22,14.73Z"; +var mdiCorn = "M11,12H8.82C9.62,12.5 10.35,13.07 11,13.68V12M7,11C7.27,5.88 9.37,2 12,2C14.66,2 16.77,5.94 17,11.12C18.5,10.43 20.17,10 22,10C16.25,12.57 18.25,22 12,22C6,22 7.93,12.57 2,10C3.82,10 5.5,10.4 7,11M11,11V9H8.24L8.03,11H11M11,8V6H9.05C8.8,6.6 8.6,7.27 8.43,8H11M11,5V3.3C10.45,3.63 9.95,4.22 9.5,5H11M12,3V5H13V6H12V8H14V9H12V11H15V12H12V14H14V15H12.23C13.42,16.45 14.15,18 14.32,19.23C15.31,17.56 15.96,14.84 16,11.76C15.94,7 14.13,3 12,3Z"; +var mdiCornOff = "M22.1 21.5L2.4 1.7L1.1 3L7.2 9.1C7.1 9.7 7 10.3 7 11C5.5 10.4 3.8 10 2 10C7.9 12.6 6 22 12 22C14.5 22 15.7 20.5 16.6 18.5L20.9 22.8L22.1 21.5M8.1 10L9.1 11H8L8.1 10M8.8 12H10.1L11 12.9V13.7C10.3 13.1 9.6 12.5 8.8 12M14.3 19.2C14.1 18 13.4 16.4 12.2 15H13.1L15.2 17.1C15 17.9 14.7 18.6 14.3 19.2M11 6V7.8L12.2 9H14V8H12V6H13V5H12V3C14.1 3 15.9 7 16 11.8V12.8L18 14.8C18.8 12.8 19.9 10.9 22 10C20.2 10 18.5 10.4 17 11.1C16.8 5.9 14.7 2 12 2C10.5 2 9.2 3.2 8.3 5.1L9.2 6H11M11 3.3V5H9.5C10 4.2 10.5 3.6 11 3.3M15 11.8L14.2 11H15V11.8Z"; +var mdiCosineWave = "M22 2V4C20.26 4 19 8.58 17.96 12.27C16.57 17.27 15.26 22 12 22C8.74 22 7.43 17.27 6.04 12.27C5 8.58 3.74 4 2 4V2C5.26 2 6.57 6.73 7.96 11.73C9 15.42 10.26 20 12 20C13.74 20 15 15.42 16.04 11.73C17.43 6.73 18.74 2 22 2Z"; +var mdiCounter = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z"; +var mdiCow = "M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z"; +var mdiCpu32Bit = "M9,3V5H7A2,2 0 0,0 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11H21V9H19V7A2,2 0 0,0 17,5H15V3H13V5H11V3M7,9H10.5A1,1 0 0,1 11.5,10V14A1,1 0 0,1 10.5,15H7V13.5H10V12.75H8.5V11.25H10V10.5H7M12.5,9H16A1,1 0 0,1 17,10V11.75A1,1 0 0,1 16,12.75H14V13.5H17V15H12.5V12.25A1,1 0 0,1 13.5,11.25H15.5V10.5H12.5"; +var mdiCpu64Bit = "M9,3V5H7A2,2 0 0,0 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11H21V9H19V7A2,2 0 0,0 17,5H15V3H13V5H11V3M8,9H11.5V10.5H8.5V11.25H10.5A1,1 0 0,1 11.5,12.25V14A1,1 0 0,1 10.5,15H8A1,1 0 0,1 7,14V10A1,1 0 0,1 8,9M12.5,9H14V11H15.5V9H17V15H15.5V12.5H12.5M8.5,12.75V13.5H10V12.75"; +var mdiCrane = "M20,6V5A1,1 0 0,0 19,4H9V3H6V4H5V6H6V15H5V13H3V15H2V17H3V21H5V17H10V21H12V19.92L12,17H13V15H12V13H10V15H9V6H17V10.62C16.53,10.79 16.19,11.23 16.19,11.76C16.19,12.2 16.43,12.6 16.8,12.82V14H17.42C17.76,14 18.03,14.28 18.03,14.62C18.03,14.96 17.76,15.24 17.42,15.24C17.2,15.24 17,15.12 16.89,14.93C16.71,14.64 16.34,14.54 16.05,14.71C15.75,14.87 15.65,15.25 15.82,15.55C16.15,16.11 16.76,16.47 17.42,16.47C18.43,16.47 19.26,15.64 19.26,14.62C19.26,13.84 18.76,13.14 18.03,12.88V12.82C18.41,12.6 18.65,12.2 18.65,11.76C18.65,11.3 18.38,10.91 18,10.7V6H20M8,13.66L7,14.66V13.24L8,12.24V13.66M8,10.71L7,11.71V10.29L8,9.29V10.71M7,8.71V7.29L8,6.29V7.71L7,8.71Z"; +var mdiCreation = "M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74"; +var mdiCreativeCommons = "M11.89,10.34L10.55,11.04C10.41,10.74 10.24,10.53 10.03,10.41C9.82,10.29 9.62,10.23 9.45,10.23C8.55,10.23 8.11,10.82 8.11,12C8.11,12.54 8.22,12.97 8.45,13.29C8.67,13.61 9,13.77 9.45,13.77C10.03,13.77 10.44,13.5 10.68,12.91L11.91,13.54C11.65,14.03 11.29,14.41 10.82,14.69C10.36,14.97 9.85,15.11 9.29,15.11C8.39,15.11 7.67,14.84 7.12,14.29C6.58,13.74 6.3,13 6.3,12C6.3,11.05 6.58,10.3 7.13,9.74C7.69,9.18 8.39,8.9 9.23,8.9C10.47,8.89 11.36,9.38 11.89,10.34M17.66,10.34L16.34,11.04C16.2,10.74 16,10.53 15.81,10.41C15.6,10.29 15.4,10.23 15.21,10.23C14.32,10.23 13.87,10.82 13.87,12C13.87,12.54 14,12.97 14.21,13.29C14.44,13.61 14.77,13.77 15.21,13.77C15.8,13.77 16.21,13.5 16.45,12.91L17.7,13.54C17.42,14.03 17.05,14.41 16.59,14.69C16.12,14.97 15.62,15.11 15.07,15.11C14.17,15.11 13.44,14.84 12.9,14.29C12.36,13.74 12.09,13 12.09,12C12.09,11.05 12.37,10.3 12.92,9.74C13.47,9.18 14.17,8.9 15,8.9C16.26,8.89 17.14,9.38 17.66,10.34M12,3.5A8.5,8.5 0 0,1 20.5,12A8.5,8.5 0 0,1 12,20.5A8.5,8.5 0 0,1 3.5,12A8.5,8.5 0 0,1 12,3.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiCreditCard = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 11H4V8H20Z"; +var mdiCreditCardCheck = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.03 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13C20.06 13 21.09 13.28 22 13.81V6C22 4.89 21.11 4 20 4M20 11H4V8H20M17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25L17.75 22"; +var mdiCreditCardCheckOutline = "M13 19C13 18.66 13.04 18.33 13.09 18H3V12H19V13C19.7 13 20.37 13.13 21 13.35V6C21 4.89 20.11 4 19 4H3C1.89 4 1 4.89 1 6V18C1 19.1 1.89 20 3 20H13.09C13.04 19.67 13 19.34 13 19M3 6H19V8H3V6M17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25L17.75 22"; +var mdiCreditCardClock = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V12.1C23.24,13.36 24,15.09 24,17M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M20,10V7H4V10H20Z"; +var mdiCreditCardClockOutline = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V12.1C23.24,13.36 24,15.09 24,17M10,17C10,15.04 10.81,13.27 12.1,12H4V18H10.07C10,17.67 10,17.34 10,17M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M20,8V6H4V8H20Z"; +var mdiCreditCardMarker = "M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8M14.55 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V11.3C21.42 10.81 20.74 10.44 20 10.22V8H4V11H15.39C13.96 12 13 13.66 13 15.5C13 17 13.72 18.61 14.55 20Z"; +var mdiCreditCardMarkerOutline = "M13.5,18H4V12H14.3C15.3,10.8 16.8,10 18.5,10C19.8,10 21,10.5 22,11.3V6A2,2 0 0,0 20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H14.6C14.2,19.4 13.8,18.7 13.5,18M4,6H20V8H4V6M18.5,12C16.6,12 15,13.6 15,15.5C15,18.1 18.5,22 18.5,22C18.5,22 22,18.1 22,15.5C22,13.6 20.4,12 18.5,12M18.5,16.8C17.8,16.8 17.3,16.2 17.3,15.6C17.3,14.9 17.9,14.4 18.5,14.4C19.1,14.4 19.7,15 19.7,15.6C19.8,16.2 19.2,16.8 18.5,16.8Z"; +var mdiCreditCardMinus = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.03 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13C20.06 13 21.09 13.28 22 13.81V6C22 4.89 21.11 4 20 4M20 11H4V8H20M23 18V20H15V18H23Z"; +var mdiCreditCardMinusOutline = "M24 18V20H16V18M19 8V6H3V8H19M19 12H3V18H14V20H3C1.89 20 1 19.1 1 18V6C1 4.89 1.89 4 3 4H19C20.11 4 21 4.89 21 6V13H19V12Z"; +var mdiCreditCardMultiple = "M21 9V6H7V9H21M21 3A2 2 0 0 1 23 5V15A2 2 0 0 1 21 17H7A2 2 0 0 1 5 15V5A2 2 0 0 1 7 3H21M3 19H18V21H3A2 2 0 0 1 1 19V8H3Z"; +var mdiCreditCardMultipleOutline = "M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z"; +var mdiCreditCardOff = "M11.2 8L7.2 4H20A2 2 0 0 1 22 6V18A1.91 1.91 0 0 1 21.88 18.68L14.2 11H20V8M20.84 22.73L18.11 20H4A2 2 0 0 1 2 18V6A2 2 0 0 1 2.65 4.54L1.11 3L2.39 1.73L22.11 21.46M9.11 11L6.11 8H4V11Z"; +var mdiCreditCardOffOutline = "M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z"; +var mdiCreditCardOutline = "M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; +var mdiCreditCardPlus = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 19 13A5.88 5.88 0 0 1 22 13.81V6A2 2 0 0 0 20 4M20 11H4V8H20M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; +var mdiCreditCardPlusOutline = "M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z"; +var mdiCreditCardRefresh = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.68C11.57 19.5 11.5 19 11.5 18.5C11.5 14.91 14.41 12 18 12C19.5 12 20.9 12.53 22 13.4V6C22 4.89 21.11 4 20 4M20 11H4V8H20V11M20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67Z"; +var mdiCreditCardRefreshOutline = "M20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.68C11.57 19.5 11.5 19 11.5 18.5C11.5 18.33 11.5 18.17 11.53 18H4V12H20V12.32C20.74 12.56 21.41 12.93 22 13.4V6C22 4.89 21.1 4 20 4M20 8H4V6H20V8M20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67Z"; +var mdiCreditCardRefund = "M18 11H6A2 2 0 0 0 4 13V21A2 2 0 0 0 6 23H18A2 2 0 0 0 20 21V13A2 2 0 0 0 18 11M18 17H6V14H18M17 5V10H15.5V6.5H9.88L12.3 8.93L11.24 10L7 5.75L11.24 1.5L12.3 2.57L9.88 5Z"; +var mdiCreditCardRefundOutline = "M18,11H6A2,2 0 0,0 4,13V21A2,2 0 0,0 6,23H18A2,2 0 0,0 20,21V13A2,2 0 0,0 18,11M18,21H6V17H18V21M18,15H6V13H18V15M17,5V10H15.5V6.5H9.88L12.3,8.93L11.24,10L7,5.75L11.24,1.5L12.3,2.57L9.88,5H17Z"; +var mdiCreditCardRemove = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 19 13A5.88 5.88 0 0 1 22 13.81V6A2 2 0 0 0 20 4M20 11H4V8H20M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; +var mdiCreditCardRemoveOutline = "M13 19C13 18.66 13.04 18.33 13.09 18H3V12H19V13C19.7 13 20.37 13.13 21 13.35V6C21 4.89 20.11 4 19 4H3C1.89 4 1 4.89 1 6V18C1 19.1 1.89 20 3 20H13.09C13.04 19.67 13 19.34 13 19M3 6H19V8H3V6M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88Z"; +var mdiCreditCardScan = "M18 6H6A2 2 0 0 0 4 8V16A2 2 0 0 0 6 18H18A2 2 0 0 0 20 16V8A2 2 0 0 0 18 6M18 12H6V9H18M2 4H6V2H2A2 2 0 0 0 0 4V8H2V4M22 2H18V4H22V8H24V4A2 2 0 0 0 22 2M2 16H0V20A2 2 0 0 0 2 22H6V20H2V16M22 20H18V22H22A2 2 0 0 0 24 20V16H22V20"; +var mdiCreditCardScanOutline = "M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z"; +var mdiCreditCardSearch = "M11.82 11C9.4 13.5 9.4 17.5 11.82 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V12.06C21.74 11.65 21.45 11.26 21.1 10.9C20.76 10.57 20.39 10.27 20 10.03V8H4V11H11.82M23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5Z"; +var mdiCreditCardSearchOutline = "M11.03 12C11.28 11.61 11.57 11.24 11.9 10.9C14.44 8.37 18.56 8.37 21.1 10.9C21.45 11.26 21.74 11.65 22 12.06V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.82C11.24 19.4 10.8 18.72 10.5 18H4V12H11.03M4 6H20V8H4V6M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; +var mdiCreditCardSettings = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 11H4V8H20M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15Z"; +var mdiCreditCardSettingsOutline = "M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; +var mdiCreditCardSync = "M13 17.5C13 18.39 13.18 19.23 13.5 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V11.5C21.23 11.18 20.39 11 19.5 11H20V8H4V11H19.5C15.91 11 13 13.91 13 17.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; +var mdiCreditCardSyncOutline = "M4 18V12H16.05C17.05 11.37 18.23 11 19.5 11C20.39 11 21.23 11.18 22 11.5V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.5C13.24 19.38 13.08 18.7 13.03 18H4M4 6H20V8H4V6M23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12V13.5C21.21 13.5 23 15.29 23 17.5M19 18.5L21.25 20.75L19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5Z"; +var mdiCreditCardWireless = "M4.93 4.92L6.34 6.33C9.46 3.2 14.53 3.2 17.66 6.33L19.07 4.92C15.17 1 8.84 1 4.93 4.92M7.76 7.75L9.17 9.16C10.73 7.6 13.26 7.6 14.83 9.16L16.24 7.75C13.9 5.41 10.1 5.41 7.76 7.75M18 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C19.11 23 20 22.11 20 21V13C20 11.9 19.11 11 18 11M18 17H6V14H18V17Z"; +var mdiCreditCardWirelessOff = "M12 2C9.85 2 7.7 2.69 5.9 4.08L7.32 5.5C10.45 3.24 14.84 3.5 17.66 6.33L19.07 4.92C17.12 2.96 14.56 2 12 2M3.28 4L2 5.27L7.73 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C18.5 23 18.92 22.82 19.27 22.54L19.73 23L21 21.72M12 6C10.87 6 9.75 6.31 8.77 6.94L10.24 8.41C11.73 7.68 13.58 7.92 14.83 9.16L16.24 7.75C15.07 6.58 13.54 6 12 6M12.82 11L15.82 14H18V16.18L20 18.18V13C20 11.9 19.11 11 18 11M6 14H10.73L13.73 17H6Z"; +var mdiCreditCardWirelessOffOutline = "M12 2C9.85 2 7.7 2.69 5.9 4.08L7.32 5.5C10.45 3.24 14.84 3.5 17.66 6.33L19.07 4.92C17.12 2.96 14.56 2 12 2M3.28 4L2 5.27L7.73 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C18.47 23 18.92 22.84 19.27 22.54L19.73 23L21 21.72M12 6C10.87 6 9.75 6.31 8.77 6.94L10.24 8.41C11.73 7.68 13.58 7.92 14.83 9.16L16.24 7.75C15.07 6.58 13.54 6 12 6M12.82 11L14.82 13H18V15H16.82L20 18.18V13C20 11.9 19.11 11 18 11M6 13H9.73L11.73 15H6M6 17H13.73L17.73 21H6Z"; +var mdiCreditCardWirelessOutline = "M18,11H6A2,2 0 0,0 4,13V21A2,2 0 0,0 6,23H18A2,2 0 0,0 20,21V13A2,2 0 0,0 18,11M18,21H6V17H18V21M18,15H6V13H18V15M4.93,4.92L6.34,6.33C9.46,3.2 14.53,3.2 17.66,6.33L19.07,4.92C15.17,1 8.84,1 4.93,4.92M7.76,7.75L9.17,9.16C10.73,7.6 13.26,7.6 14.83,9.16L16.24,7.75C13.9,5.41 10.1,5.41 7.76,7.75Z"; +var mdiCricket = "M14.34,17.77L15.75,16.36L20,20.58L18.56,22L14.34,17.77M18.5,2A3.5,3.5 0 0,1 22,5.5A3.5,3.5 0 0,1 18.5,9A3.5,3.5 0 0,1 15,5.5A3.5,3.5 0 0,1 18.5,2M2.24,7.11L5.07,4.28C5.46,3.89 6.09,3.89 6.5,4.28L14.97,12.77C15.36,13.16 15.36,13.79 14.97,14.18L12.14,17C11.75,17.4 11.12,17.4 10.72,17L2.24,8.53C1.85,8.13 1.85,7.5 2.24,7.11Z"; +var mdiCrop = "M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z"; +var mdiCropFree = "M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z"; +var mdiCropLandscape = "M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z"; +var mdiCropPortrait = "M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z"; +var mdiCropRotate = "M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z"; +var mdiCropSquare = "M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z"; +var mdiCrosshairs = "M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z"; +var mdiCrosshairsGps = "M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z"; +var mdiCrosshairsOff = "M20.94 11C20.5 6.83 17.17 3.5 13 3.06V1H11V3.06C9.87 3.18 8.81 3.5 7.84 4.03L9.34 5.53C10.16 5.19 11.06 5 12 5C15.87 5 19 8.13 19 12C19 12.94 18.81 13.84 18.5 14.65L20 16.15C20.5 15.19 20.82 14.13 20.95 13H23V11H20.94M3 4.27L5.04 6.31C3.97 7.62 3.25 9.23 3.06 11H1V13H3.06C3.5 17.17 6.83 20.5 11 20.94V23H13V20.94C14.77 20.74 16.38 20.03 17.69 18.96L19.73 21L21 19.73L4.27 3L3 4.27M16.27 17.54C15.09 18.45 13.61 19 12 19C8.13 19 5 15.87 5 12C5 10.39 5.55 8.91 6.46 7.73L16.27 17.54Z"; +var mdiCrosshairsQuestion = "M3.05 13H1V11H3.05C3.5 6.83 6.83 3.5 11 3.05V1H13V3.05C17.17 3.5 20.5 6.83 20.95 11H23V13H20.95C20.5 17.17 17.17 20.5 13 20.95V23H11V20.95C6.83 20.5 3.5 17.17 3.05 13M12 5C8.13 5 5 8.13 5 12S8.13 19 12 19 19 15.87 19 12 15.87 5 12 5M11.13 17.25H12.88V15.5H11.13V17.25M12 6.75C10.07 6.75 8.5 8.32 8.5 10.25H10.25C10.25 9.28 11.03 8.5 12 8.5S13.75 9.28 13.75 10.25C13.75 12 11.13 11.78 11.13 14.63H12.88C12.88 12.66 15.5 12.44 15.5 10.25C15.5 8.32 13.93 6.75 12 6.75Z"; +var mdiCrown = "M5 16L3 5L8.5 10L12 4L15.5 10L21 5L19 16H5M19 19C19 19.6 18.6 20 18 20H6C5.4 20 5 19.6 5 19V18H19V19Z"; +var mdiCrownOutline = "M12 8L15 13.2L18 10.5L17.3 14H6.7L6 10.5L9 13.2L12 8M12 4L8.5 10L3 5L5 16H19L21 5L15.5 10L12 4M19 18H5V19C5 19.6 5.4 20 6 20H18C18.6 20 19 19.6 19 19V18Z"; +var mdiCryengine = "M23.03,12.4M23.03,12.5V12.5C23,13 20.91,15.23 17.82,16.24C14.05,17.5 7.97,17.03 7.97,12.3C7.97,10.08 9.78,8.27 12,8.27C14.25,8.27 16.05,10.09 16.05,12.31C16.05,13.39 15.58,14.44 14.87,15.18C15.54,15.17 17.94,15 20.21,13.12C20.46,12.88 20.62,12.68 20.69,12.55C20.71,12.5 20.74,12.46 20.73,12.4C20.73,11.92 18.12,8.19 12.72,7.12C19.22,7.46 23,11.32 23.03,12.4V12.5H23.03M12,10C10.74,10 9.71,11.04 9.71,12.3C9.71,13.57 10.74,14.59 12,14.59C13.27,14.59 14.29,13.57 14.29,12.3C14.29,11.04 13.27,10 12,10M3.31,12.34C3.31,12.34 3.31,12.31 3.31,12.42V12.42C3.41,12.94 4.82,15.41 10.28,16.88C3.96,16.37 1.12,13.28 1.04,12.42H1.03C1.03,12.31 1.03,12.36 1.03,12.35C1.03,11.5 4.96,7.58 10.92,7.15C6.14,8.26 3.31,11.87 3.31,12.34V12.34Z"; +var mdiCrystalBall = "M9.38,8.38L11.5,9.34L13.62,8.38L12.66,10.5L13.62,12.62L11.5,11.66L9.38,12.62L10.34,10.5L9.38,8.38M16.5,2.5L17.59,5.41L20.5,6.5L17.59,7.59L16.5,10.5L15.41,7.59L12.5,6.5L15.41,5.41L16.5,2.5M6,19H7V18A1,1 0 0,1 8,17H8.26C6,15.7 4.5,13.28 4.5,10.5A7.5,7.5 0 0,1 12,3C13.05,3 14.05,3.22 14.96,3.61L14.59,4.59L13.17,5.12C12.79,5.04 12.4,5 12,5A5.5,5.5 0 0,0 6.5,10.5A5.5,5.5 0 0,0 12,16C14.91,16 17.3,13.73 17.5,10.87L18.41,8.41L19.12,8.14C19.37,8.88 19.5,9.68 19.5,10.5C19.5,13.28 18,15.7 15.74,17H16A1,1 0 0,1 17,18V19H18A2,2 0 0,1 20,21V22H4V21A2,2 0 0,1 6,19Z"; +var mdiCube = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z"; +var mdiCubeOff = "M20.84 22.73L17.28 19.17L12.57 21.82C12.41 21.94 12.21 22 12 22S11.59 21.94 11.43 21.82L3.53 17.38C3.21 17.21 3 16.88 3 16.5V7.5C3 7.12 3.21 6.79 3.53 6.62L4.3 6.19L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M12 4.15L17.96 7.5L13.31 10.11L20.53 17.33C20.82 17.16 21 16.85 21 16.5V7.5C21 7.12 20.79 6.79 20.47 6.62L12.57 2.18C12.41 2.06 12.21 2 12 2S11.59 2.06 11.43 2.18L7.56 4.36L9 5.82L12 4.15Z"; +var mdiCubeOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.3 6.19L3.53 6.62C3.21 6.79 3 7.12 3 7.5V16.5C3 16.88 3.21 17.21 3.53 17.38L11.43 21.82C11.59 21.94 11.79 22 12 22S12.41 21.94 12.57 21.82L17.28 19.17L20.84 22.73L22.11 21.46M5 15.91V9.21L10.29 12.18L11 12.89V19.29L5 15.91M13 19.29V14.89L15.82 17.7L13 19.29M9 5.82L7.56 4.36L11.43 2.18C11.59 2.06 11.79 2 12 2S12.41 2.06 12.57 2.18L20.47 6.62C20.79 6.79 21 7.12 21 7.5V16.5C21 16.85 20.82 17.16 20.53 17.33L19 15.8V9.21L14.78 11.58L13.31 10.11L17.96 7.5L12 4.15L9 5.82Z"; +var mdiCubeOutline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"; +var mdiCubeScan = "M17,22V20H20V17H22V20.5C22,20.89 21.84,21.24 21.54,21.54C21.24,21.84 20.89,22 20.5,22H17M7,22H3.5C3.11,22 2.76,21.84 2.46,21.54C2.16,21.24 2,20.89 2,20.5V17H4V20H7V22M17,2H20.5C20.89,2 21.24,2.16 21.54,2.46C21.84,2.76 22,3.11 22,3.5V7H20V4H17V2M7,2V4H4V7H2V3.5C2,3.11 2.16,2.76 2.46,2.46C2.76,2.16 3.11,2 3.5,2H7M13,17.25L17,14.95V10.36L13,12.66V17.25M12,10.92L16,8.63L12,6.28L8,8.63L12,10.92M7,14.95L11,17.25V12.66L7,10.36V14.95M18.23,7.59C18.73,7.91 19,8.34 19,8.91V15.23C19,15.8 18.73,16.23 18.23,16.55L12.75,19.73C12.25,20.05 11.75,20.05 11.25,19.73L5.77,16.55C5.27,16.23 5,15.8 5,15.23V8.91C5,8.34 5.27,7.91 5.77,7.59L11.25,4.41C11.5,4.28 11.75,4.22 12,4.22C12.25,4.22 12.5,4.28 12.75,4.41L18.23,7.59Z"; +var mdiCubeSend = "M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15"; +var mdiCubeUnfolded = "M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z"; +var mdiCup = "M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z"; +var mdiCupOff = "M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z"; +var mdiCupOffOutline = "M3.83 2L5.83 4H18.78L17.5 15.66L19.3 17.5L21 2M2.27 3L1 4.27L3.53 6.8L5 20.23C5.13 21.23 5.97 22 7 22H17C17.47 22 17.91 21.82 18.26 21.54L19.73 23L21 21.73M5.78 9.06L16.73 20H7Z"; +var mdiCupOutline = "M3 2L5 20.23C5.13 21.23 5.97 22 7 22H17C18 22 18.87 21.23 19 20.23L21 2H3M5.22 4H18.78L17 20H7L5.22 4Z"; +var mdiCupWater = "M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z"; +var mdiCupboard = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M10 18H8V15H10V18M16 18H14V15H16V18M17 12H7V9H17V12M17 7H7V4H17V7Z"; +var mdiCupboardOutline = "M7 2C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2H7M7 4H17V7H7V4M7 9H17V12H7V9M7 14H11V19H7V14M13 14H17V19H13V14M8 15V18H10V15H8M14 15V18H16V15H14Z"; +var mdiCupcake = "M12,1.5A2.5,2.5 0 0,1 14.5,4A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 9.5,4A2.5,2.5 0 0,1 12,1.5M15.87,5C18,5 20,7 20,9C22.7,9 22.7,13 20,13H4C1.3,13 1.3,9 4,9C4,7 6,5 8.13,5C8.57,6.73 10.14,8 12,8C13.86,8 15.43,6.73 15.87,5M5,15H8L9,22H7L5,15M10,15H14L13,22H11L10,15M16,15H19L17,22H15L16,15Z"; +var mdiCurling = "M10,3V5C12.5,5 13.9,5.05 14.72,5.41C15.26,5.65 15.73,6.21 16.25,7H5V9H19.62L18.89,7.55C17.86,5.5 16.96,4.22 15.53,3.59C14.1,2.95 12.5,3 10,3M6,11C3.78,11 2,12.78 2,15V18C2,20.22 3.78,22 6,22H18C20.22,22 22,20.22 22,18V15C22,12.78 20.22,11 18,11H6Z"; +var mdiCurrencyBdt = "M18.09,10.5V9H9.59V4.5A1.5,1.5 0 0,0 8.09,3A1.5,1.5 0 0,0 6.59,4.5A1.5,1.5 0 0,0 8.09,6V9H5.09V10.5H8.09V16.7C8.09,19.06 10,20.97 12.34,21C14.68,20.96 16.54,19.04 16.5,16.7C16.5,15.11 15.75,13.61 14.5,12.62C14.28,12.44 14.05,12.28 13.8,12.15C13.58,12.05 13.34,12 13.1,12C12.39,12 11.74,12.39 11.39,13C11.2,13.3 11.1,13.65 11.1,14C11.11,15.1 12,16 13.11,16C13.73,16 14.31,15.69 14.69,15.2C14.9,15.67 15,16.18 15,16.7C15.04,18.2 13.86,19.45 12.34,19.5C10.81,19.5 9.58,18.23 9.59,16.7V10.5H18.09Z"; +var mdiCurrencyBrl = "M12,15H14C14,16.08 15.37,17 17,17C18.63,17 20,16.08 20,15C20,13.9 18.96,13.5 16.76,12.97C14.64,12.44 12,11.78 12,9C12,7.21 13.47,5.69 15.5,5.18V3H18.5V5.18C20.53,5.69 22,7.21 22,9H20C20,7.92 18.63,7 17,7C15.37,7 14,7.92 14,9C14,10.1 15.04,10.5 17.24,11.03C19.36,11.56 22,12.22 22,15C22,16.79 20.53,18.31 18.5,18.82V21H15.5V18.82C13.47,18.31 12,16.79 12,15M2,3H5.5A5.5,5.5 0 0,1 11,8.5C11,10.69 9.71,12.59 7.86,13.47L11.64,21H9.4L5.88,14H5.5L4,14V21H2V3M5.5,12A3.5,3.5 0 0,0 9,8.5A3.5,3.5 0 0,0 5.5,5H4V12H5.5Z"; +var mdiCurrencyBtc = "M6,4H8V2H10V4H12V2H14V4.03C16.25,4.28 18,6.18 18,8.5C18,9.8 17.45,11 16.56,11.8C17.73,12.61 18.5,13.97 18.5,15.5C18.5,18 16.5,20 14,20V22H12V20H10V22H8V20H6L6.5,18H8V6H6V4M10,13V18H14A2.5,2.5 0 0,0 16.5,15.5A2.5,2.5 0 0,0 14,13H10M10,6V11H13.5A2.5,2.5 0 0,0 16,8.5A2.5,2.5 0 0,0 13.5,6H13.5L10,6Z"; +var mdiCurrencyCny = "M11,21V16H6V14H11V13.71L10.16,12H6V10H9.19L5.77,3H8L12,11.2L16,3H18.23L14.81,10H18V12H13.84L13,13.71V14H18V16H13V21H11Z"; +var mdiCurrencyEth = "M6,5H18V7H6M7,11H17V13H7M5.5,17H18.5V19H5.5"; +var mdiCurrencyEur = "M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z"; +var mdiCurrencyEurOff = "M22.11 21.46L2.39 1.73L1.11 3L6 7.89C5.81 8.25 5.64 8.62 5.5 9H3L2 11H5.05L5 12L5.05 13H3L2 15H5.5C6.75 18.5 10.08 21 14 21C15.5 21 16.89 20.65 18.12 20L20.84 22.73L22.11 21.46M7 12L7.07 11H9.12L11.12 13H7.07L7 12M14 19C11.21 19 8.8 17.37 7.67 15H13.12L16.6 18.5C15.79 18.81 14.92 19 14 19M17 13.81L16.21 13H17.35L17 13.81M18.19 11H14.21L12.21 9H19.04L18.19 11M9.7 6.5L8.27 5.07C9.83 3.78 11.82 3 14 3C16.5 3 18.8 4.05 20.43 5.72L19.57 7.76C18.29 6.09 16.27 5 14 5C12.38 5 10.89 5.58 9.7 6.5Z"; +var mdiCurrencyGbp = "M6,21V19C10,17 9.5,13 9.5,13H7V11H9.5C8.5,6.5 10,3 14,3C16,3 17,3.5 17,3.5V5.5C11,3.5 11,8 11.5,11H16V13H11.5C11.5,13 12,17 9.5,19H18V21H6Z"; +var mdiCurrencyIls = "M22,16A5,5 0 0,1 17,21H8V9H10V19H17A3,3 0 0,0 20,16V3H22V16M16,8V15H14V8A3,3 0 0,0 11,5H4V21H2V3H11A5,5 0 0,1 16,8Z"; +var mdiCurrencyInr = "M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z"; +var mdiCurrencyJpy = "M11,21V16H6V14H11V13.71L10.16,12H6V10H9.19L5.77,3H8L12,11.2L16,3H18.23L14.81,10H18V12H13.84L13,13.71V14H18V16H13V21H11Z"; +var mdiCurrencyKrw = "M2,3H4L5.33,9H9.33L10.67,3H13.33L14.67,9H18.67L20,3H22L20.67,9H22V11H20.22L19.78,13H22V15H19.33L18,21H15.33L14,15H10L8.67,21H6L4.67,15H2V13H4.22L3.78,11H2V9H3.33L2,3M13.11,11H10.89L10.44,13H13.56L13.11,11M7.33,18L8,15H6.67L7.33,18M8.89,11H5.78L6.22,13H8.44L8.89,11M16.67,18L17.33,15H16L16.67,18M18.22,11H15.11L15.56,13H17.78L18.22,11M12,6L11.33,9H12.67L12,6Z"; +var mdiCurrencyKzt = "M5,3H19V5H5V3M5,6H19V8H13V21H11V8H5V6Z"; +var mdiCurrencyMnt = "M13 5V8.62L17 7.17V9.29L13 10.74V12.5L17 11.07V13.2L13 14.65V21H11V15.38L7 16.84V14.71L11 13.24V11.47L7 12.92V10.8L11 9.35V5H5V3H19V5H13Z"; +var mdiCurrencyNgn = "M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z"; +var mdiCurrencyPhp = "M5,2V6H3V8H5V10H3V12H5V22H7V16H13C15.7,16 18.16,14.44 19.32,12H22V10H19.92C20.03,9.34 20.03,8.66 19.92,8H22V6H19.32C18.16,3.56 15.7,2 13,2M7,4H13C14.57,4 16.06,4.74 17,6H7V4M13,14H7V12H17C16.06,13.26 14.57,14 13,14M18,9C18,9.34 17.96,9.67 17.9,10H7V8H17.9C17.96,8.33 18,8.66 18,9Z"; +var mdiCurrencyRial = "M11,17H13V19H11V17M14,17H16V19H14V17M9,4H11V15A4,4 0 0,1 7,19H5A3,3 0 0,1 2,16V12H4V16A1,1 0 0,0 5,17H7C8.11,17 9,16.11 9,15V4M12,4H14V13H17V8H19V13C19,14.11 18.11,15 17,15H14C12.89,15 12,14.11 12,13V4M20,10H22V17A3,3 0 0,1 19,20H17V18H19A1,1 0 0,0 20,17V10Z"; +var mdiCurrencyRub = "M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z"; +var mdiCurrencySign = "M4.41 3L3 4.41L5.69 7.1C4.63 8.46 4 10.15 4 12C4 13.85 4.63 15.55 5.69 16.9L3 19.59L4.41 21L7.1 18.31C8.46 19.37 10.15 20 12 20C13.85 20 15.55 19.37 16.9 18.31L19.59 21L21 19.59L18.31 16.9C19.37 15.54 20 13.85 20 12C20 10.15 19.37 8.45 18.31 7.1L21 4.41L19.59 3L16.9 5.69C15.54 4.63 13.85 4 12 4C10.15 4 8.45 4.63 7.1 5.69L4.41 3M12 6C15.31 6 18 8.69 18 12C18 15.31 15.31 18 12 18C8.69 18 6 15.31 6 12C6 8.69 8.69 6 12 6Z"; +var mdiCurrencyTry = "M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z"; +var mdiCurrencyTwd = "M3,11H21V13H15V19H21V21H15A2,2 0 0,1 13,19V13H10.35L5.73,21L4,20L8.04,13H3V11M5,3H19V5H5V3Z"; +var mdiCurrencyUsd = "M7,15H9C9,16.08 10.37,17 12,17C13.63,17 15,16.08 15,15C15,13.9 13.96,13.5 11.76,12.97C9.64,12.44 7,11.78 7,9C7,7.21 8.47,5.69 10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C10.37,7 9,7.92 9,9C9,10.1 10.04,10.5 12.24,11.03C14.36,11.56 17,12.22 17,15C17,16.79 15.53,18.31 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15Z"; +var mdiCurrencyUsdCircle = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M15 10H11V11H14A1 1 0 0 1 15 12V15A1 1 0 0 1 14 16H13V17H11V16H9V14H13V13H10A1 1 0 0 1 9 12V9A1 1 0 0 1 10 8H11V7H13V8H15Z"; +var mdiCurrencyUsdCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z"; +var mdiCurrencyUsdOff = "M3,4.27L4.28,3L21,19.72L19.73,21L16.06,17.33C15.44,18 14.54,18.55 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15H9C9,16.08 10.37,17 12,17C13.13,17 14.14,16.56 14.65,15.92L11.68,12.95C9.58,12.42 7,11.75 7,9C7,8.77 7,8.55 7.07,8.34L3,4.27M10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C11.63,7 11.28,7.05 10.95,7.13L9.4,5.58L10.5,5.18Z"; +var mdiCurrentAc = "M12.43 11C12.28 10.84 10 7 7 7S2.32 10.18 2 11V13H11.57C11.72 13.16 14 17 17 17S21.68 13.82 22 13V11H12.43M7 9C8.17 9 9.18 9.85 10 11H4.31C4.78 10.17 5.54 9 7 9M17 15C15.83 15 14.82 14.15 14 13H19.69C19.22 13.83 18.46 15 17 15Z"; +var mdiCurrentDc = "M2,9V11H22V9H2M2,13V15H7V13H2M9,13V15H15V13H9M17,13V15H22V13H17Z"; +var mdiCursorDefault = "M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"; +var mdiCursorDefaultClick = "M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10"; +var mdiCursorDefaultClickOutline = "M11.5,11L17.88,16.37L17,16.55L16.36,16.67C15.73,16.8 15.37,17.5 15.65,18.07L15.92,18.65L17.28,21.59L15.86,22.25L14.5,19.32L14.24,18.74C13.97,18.15 13.22,17.97 12.72,18.38L12.21,18.78L11.5,19.35V11M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10"; +var mdiCursorDefaultGesture = "M15.59 8C15.26 8 15 8.27 15 8.6V17.57C15 17.9 15.26 18.17 15.59 18.17C15.74 18.17 15.86 18.12 15.96 18.04L17.45 16.83L18.74 19.66C18.84 19.88 19.05 20 19.27 20C19.36 20 19.44 20 19.53 19.94L21.67 18.93C21.97 18.79 22.11 18.43 21.95 18.14L20.66 15.3L22.53 14.94C22.65 14.91 22.77 14.85 22.86 14.74C23.07 14.5 23.04 14.12 22.77 13.89L16 8.13C15.88 8.05 15.74 8 15.59 8M12.5 6.73C12.72 6.66 13.17 7.19 13.59 7.76L15 6.71C14.87 6.5 14.69 6.25 14.47 5.96C14.31 5.75 13.59 4.93 12.66 4.8C12.04 4.72 10.81 5.06 10.6 6.61C10.47 7.58 10.76 8.19 11.21 9.08C11.46 9.6 12.04 10.96 12.18 11.78C12.33 12.59 12.06 13.16 11.74 13.12C11.44 13.08 11.2 12.65 11.03 12.41C10.89 12.22 10 10.82 9.67 10.23C9.22 9.5 8.04 7.96 6.44 7.74C4.35 7.46 3.44 9.2 3.18 10.36L1 10.06V11.88L2.93 12.15C2.75 15.6 4.5 16.82 5.67 17C6.92 17.15 8.08 16.28 8.24 15.06C8.41 13.84 7.56 11.5 4.96 10.69C5.1 10.15 5.21 9.43 6.36 9.59C7.26 9.71 8.21 11.26 8.93 12.44C9.58 13.53 10.1 14.39 10.83 14.72C11.45 15 12.16 14.97 12.73 14.65C13.42 14.26 13.86 13.55 14 12.63C14.22 10.9 12.7 8.17 12.57 7.84C12.4 7.46 12.12 6.82 12.5 6.73M6.5 14.78C6.43 15.11 6.1 15.25 5.88 15.22C5.38 15.16 4.66 14.5 4.71 12.53C6.17 13.13 6.53 14.35 6.5 14.78Z"; +var mdiCursorDefaultGestureOutline = "M16.5 10.54L20.37 13.83L18.5 14.18L19.29 15.92L20.22 17.96L19.72 18.19L18.81 16.2L18 14.43L16.5 15.66V10.54M15.59 8C15.26 8 15 8.27 15 8.6V17.57C15 17.9 15.26 18.17 15.59 18.17C15.74 18.17 15.86 18.12 15.96 18.04L17.45 16.83L18.74 19.66C18.84 19.88 19.05 20 19.27 20C19.36 20 19.44 20 19.53 19.94L21.67 18.93C21.97 18.79 22.11 18.43 21.95 18.14L20.66 15.3L22.53 14.94C22.65 14.91 22.77 14.85 22.86 14.74C23.07 14.5 23.04 14.12 22.77 13.89L16 8.13C15.88 8.05 15.74 8 15.59 8M12.5 6.73C12.72 6.66 13.17 7.19 13.59 7.76L15 6.71C14.87 6.5 14.69 6.25 14.47 5.96C14.31 5.75 13.59 4.93 12.66 4.8C12.04 4.72 10.81 5.06 10.6 6.61C10.47 7.58 10.76 8.19 11.21 9.08C11.46 9.6 12.04 10.96 12.18 11.78C12.33 12.59 12.06 13.16 11.74 13.12C11.44 13.08 11.2 12.65 11.03 12.41C10.89 12.22 10 10.82 9.67 10.23C9.22 9.5 8.04 7.96 6.44 7.74C4.35 7.46 3.44 9.2 3.18 10.36L1 10.06V11.88L2.93 12.15C2.75 15.6 4.5 16.82 5.67 17C6.92 17.15 8.08 16.28 8.24 15.06C8.41 13.84 7.56 11.5 4.96 10.69C5.1 10.15 5.21 9.43 6.36 9.59C7.26 9.71 8.21 11.26 8.93 12.44C9.58 13.53 10.1 14.39 10.83 14.72C11.45 15 12.16 14.97 12.73 14.65C13.42 14.26 13.86 13.55 14 12.63C14.22 10.9 12.7 8.17 12.57 7.84C12.4 7.46 12.12 6.82 12.5 6.73M6.5 14.78C6.43 15.11 6.1 15.25 5.88 15.22C5.38 15.16 4.66 14.5 4.71 12.53C6.17 13.13 6.53 14.35 6.5 14.78Z"; +var mdiCursorDefaultOutline = "M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"; +var mdiCursorMove = "M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z"; +var mdiCursorPointer = "M13.75,10.19L14.38,10.32L18.55,12.4C19.25,12.63 19.71,13.32 19.65,14.06V14.19L19.65,14.32L18.75,20.44C18.69,20.87 18.5,21.27 18.15,21.55C17.84,21.85 17.43,22 17,22H10.12C9.63,22 9.18,21.82 8.85,21.47L2.86,15.5L3.76,14.5C4,14.25 4.38,14.11 4.74,14.13H5.03L9,15V4.5A2,2 0 0,1 11,2.5A2,2 0 0,1 13,4.5V10.19H13.75Z"; +var mdiCursorText = "M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z"; +var mdiDanceBallroom = "M14 3.5C14 4.33 13.33 5 12.5 5S11 4.33 11 3.5 11.67 2 12.5 2 14 2.67 14 3.5M8.5 5C7.67 5 7 5.67 7 6.5S7.67 8 8.5 8 10 7.33 10 6.5 9.33 5 8.5 5M14 12L13.22 9.75H16.18L18.34 8.67C18.71 8.5 18.86 8.04 18.67 7.67C18.5 7.3 18.04 7.14 17.67 7.33L16.85 7.74L16.36 6.9C16.07 6.25 15.36 5.88 14.66 6.04L12.19 6.57C11.5 6.72 11 7.35 11 8.07V8.77L8.57 10.39H8.58C8.5 10.46 8.39 10.55 8.33 10.67L7.44 12.44L5.66 13.33C5.29 13.5 5.14 13.97 5.33 14.34C5.46 14.6 5.73 14.75 6 14.75C6.11 14.75 6.23 14.73 6.34 14.67L8.56 13.56L9.6 11.5L11 13C10 16 3 20 3 20S7 22 12 22 21 20 21 20 16 16 14 12M16.85 11.09L16.53 11.25H15.33L15.39 11.41C15.91 12.44 16.67 13.5 17.5 14.44L16.97 11.03L16.85 11.09Z"; +var mdiDancePole = "M12 1V2L11.23 1.36L7.76 5.5L11 7.5V5.16L10.78 5L12 3.56V23H14V13.24L15.93 11.31C18.5 11.71 21.13 10.36 22.66 8.83L21.24 7.41C20.1 8.56 17.7 9.61 16 9.26L14 7.24V1M17 4A2 2 0 0 0 15 6A2 2 0 0 0 17 8A2 2 0 0 0 19 6A2 2 0 0 0 17 4M11 7.76L7.1 11.66C5.25 13.5 4.31 14.85 3.06 18.16L4.94 18.86C5.94 16.2 6.66 15.14 7.87 13.84L9.22 15.19L4.27 20.14L5.69 21.56L11 16.24Z"; +var mdiDataMatrix = "M2 2V22H22V20H20V18H22V16H20V14H22V12H18V10H16V12H14V10H12V8H8V12H12V16H10V18H12V20H10V18H8V16H6V14H4V12H6V6H4V2H2M6 6H8V2H6V6M8 16H10V14H8V16M18 10H22V8H18V10M18 8V4H16V6H14V8H18M16 4V2H14V4H16M18 4H20V2H18V4M20 4V6H22V4H20M10 2V6H12V2H10M14 14H16V16H18V20H14V14M4 18H6V20H4V18Z"; +var mdiDataMatrixEdit = "M20 12.1C19.9 12.1 19.7 12.2 19.6 12.3L18.6 13.3L20.7 15.4L21.7 14.4C21.9 14.2 21.9 13.8 21.7 13.6L20.4 12.3C20.3 12.2 20.2 12.1 20 12.1M18.1 13.9L12 19.9V22H14.1L20.2 15.9L18.1 13.9M8 6H6V2H8V6M10 16H8V14H10V16M12 6H10V2H12V6M16 2V4H14V2H16M20 4H18V2H20V4M10 20V18H8V16H6V14H4V12H6V6H4V2H2V22H10V20M6 20H4V18H6V20M22 10H18V8H22V10M20 6V4H22V6H20M18 4V8H14V6H16V4H18M10 18V16H12V12H8V8H12V10H14V12H16V10H18V11.1L15.1 14H14V15.1L11.1 18H10Z"; +var mdiDataMatrixMinus = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M15 18V20H23V18H15Z"; +var mdiDataMatrixPlus = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiDataMatrixRemove = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9L21.1 15.5Z"; +var mdiDataMatrixScan = "M2 2H6V0H2C.9 0 0 .9 0 2V6H2V2M22 0H18V2H22V6H24V2C24 .9 23.1 0 22 0M2 18H0V22C0 23.1 .9 24 2 24H6V22H2V18M22 22H18V24H22C23.1 24 24 23.1 24 22V18H22V22M8 6V4H10V6H8M10 14V12H12V14H10M16 4H18V6H16V4M18 6H20V8H18V6M18 14H20V16H18V14M20 12H16V18H20V20H4V4H6V6H8V10H6V12H8V14H10V16H12V18H14V16H12V14H14V10H10V6H12V4H14V8H16V10H20V12M8 18V16H6V18H8Z"; +var mdiDatabase = "M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z"; +var mdiDatabaseAlert = "M18 7C18 9.21 14.42 11 10 11S2 9.21 2 7 5.58 3 10 3 18 4.79 18 7M10 18C5.58 18 2 16.21 2 14V17C2 19.21 5.58 21 10 21S18 19.21 18 17V14C18 16.21 14.42 18 10 18M10 13C5.58 13 2 11.21 2 9V12C2 14.21 5.58 16 10 16S18 14.21 18 12V9C18 11.21 14.42 13 10 13M20 17H22V15H20V17M20 7V13H22V7H20Z"; +var mdiDatabaseAlertOutline = "M10 3C5.58 3 2 4.79 2 7V17C2 19.21 5.59 21 10 21S18 19.21 18 17V7C18 4.79 14.42 3 10 3M16 17C16 17.5 13.87 19 10 19S4 17.5 4 17V14.77C5.61 15.55 7.72 16 10 16S14.39 15.55 16 14.77V17M16 12.45C14.7 13.4 12.42 14 10 14S5.3 13.4 4 12.45V9.64C5.47 10.47 7.61 11 10 11S14.53 10.47 16 9.64V12.45M10 9C6.13 9 4 7.5 4 7S6.13 5 10 5 16 6.5 16 7 13.87 9 10 9M22 7V13H20V7H22M20 15H22V17H20V15Z"; +var mdiDatabaseArrowDown = "M19 13C16.83 13 14.93 14.16 13.88 15.89C13.28 15.96 12.65 16 12 16C7.58 16 4 14.21 4 12V9C4 11.21 7.58 13 12 13S20 11.21 20 9V12C20 12.36 19.9 12.71 19.72 13.05C19.5 13 19.24 13 19 13M12 11C16.42 11 20 9.21 20 7S16.42 3 12 3 4 4.79 4 7 7.58 11 12 11M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M20 20V16H18V20H16L19 23L22 20H20Z"; +var mdiDatabaseArrowDownOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 20L19 23L16 20H18V16H20V20H22Z"; +var mdiDatabaseArrowLeft = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M19.72 13.05C19.9 12.71 20 12.36 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.65 16 13.28 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.24 13 19.5 13 19.72 13.05M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M18 18V16L15 19L18 22V20H22V18H18Z"; +var mdiDatabaseArrowLeftOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 18V20H18V22L15 19L18 16V18H22Z"; +var mdiDatabaseArrowRight = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M19.72 13.05C19.9 12.71 20 12.36 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.65 16 13.28 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.24 13 19.5 13 19.72 13.05M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M23 19L20 16V18H16V20H20V22L23 19Z"; +var mdiDatabaseArrowRightOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M20 22V20H16V18H20V16L23 19L20 22Z"; +var mdiDatabaseArrowUp = "M19 13C16.83 13 14.93 14.16 13.88 15.89C13.28 15.96 12.65 16 12 16C7.58 16 4 14.21 4 12V9C4 11.21 7.58 13 12 13S20 11.21 20 9V12C20 12.36 19.9 12.71 19.72 13.05C19.5 13 19.24 13 19 13M12 11C16.42 11 20 9.21 20 7S16.42 3 12 3 4 4.79 4 7 7.58 11 12 11M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M19 15L16 18H18V22H20V18H22L19 15Z"; +var mdiDatabaseArrowUpOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 18H20V22H18V18H16L19 15L22 18Z"; +var mdiDatabaseCheck = "M12 3C16.42 3 20 4.79 20 7S16.42 11 12 11 4 9.21 4 7 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13S20 11.21 20 9V12.08L19 12C16.41 12 14.2 13.64 13.36 15.94L12 16C7.58 16 4 14.21 4 12V9M4 14C4 16.21 7.58 18 12 18H13C13 19.05 13.27 20.04 13.75 20.9L12 21C7.58 21 4 19.21 4 17V14M18 21.08L15.25 18.08L16.41 16.92L18 18.5L21.59 14.92L22.75 16.33L18 21.08"; +var mdiDatabaseCheckOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; +var mdiDatabaseClock = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.25 20C6.18 19.79 3 18.08 3 16V13C3 14.88 5.58 16.44 9.06 16.88C9.03 16.59 9 16.3 9 16C9 15.62 9.04 15.25 9.1 14.88C5.6 14.45 3 12.88 3 11V8C3 10.09 6.2 11.8 10.27 12C10.87 11.14 11.64 10.44 12.53 9.93C12.04 9.97 11.5 10 11 10C6.58 10 3 8.21 3 6S6.58 2 11 2 19 3.79 19 6C19 7.2 17.93 8.28 16.25 9C17 9.04 17.75 9.19 18.44 9.45C18.79 9 19 8.5 19 8V9.68C21.36 10.81 23 13.21 23 16M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; +var mdiDatabaseClockOutline = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.25 20C6.19 19.79 3 18.08 3 16V6C3 3.79 6.58 2 11 2S19 3.79 19 6V9.68C21.36 10.81 23 13.21 23 16M17 9.08V8.64C16.77 8.77 16.5 8.9 16.24 9C16.5 9 16.75 9.04 17 9.08M5 6C5 6.5 7.13 8 11 8S17 6.5 17 6 14.87 4 11 4 5 5.5 5 6M5 11.45C6.07 12.23 7.8 12.76 9.72 12.93C10.33 11.67 11.32 10.62 12.54 9.92C12.04 9.97 11.53 10 11 10C8.61 10 6.47 9.47 5 8.64V11.45M9.26 17.87C9.1 17.27 9 16.65 9 16C9 15.61 9.04 15.23 9.1 14.86C7.56 14.69 6.15 14.33 5 13.77V16C5 16.42 6.5 17.5 9.26 17.87M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; +var mdiDatabaseCog = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M12.08 18L12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.1 21 12.2 21 12.29 21C12.11 20.36 12 19.69 12 19C12 18.66 12.03 18.33 12.08 18M20 12.08C20 12.05 20 12.03 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.23 16 12.46 16 12.69 16C13.82 13.63 16.22 12 19 12C19.34 12 19.67 12.03 20 12.08M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiDatabaseCogOutline = "M12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.08C18.33 12.03 18.66 12 19 12C19.34 12 19.67 12.03 20 12.08V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.1 21 12.2 21 12.29 21C12.11 20.36 12 19.69 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.24 16 12.47 16 12.7 15.97C13.1 15.14 13.65 14.41 14.32 13.81C13.58 13.93 12.8 14 12 14M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M22.7 19.6V18.6L23.8 17.8C23.9 17.7 24 17.6 23.9 17.5L22.9 15.8C22.9 15.7 22.7 15.7 22.6 15.7L21.4 16.2C21.1 16 20.8 15.8 20.5 15.7L20.3 14.4C20.3 14.3 20.2 14.2 20.1 14.2H18.1C17.9 14.2 17.8 14.3 17.8 14.4L17.6 15.7C17.3 15.9 17.1 16 16.8 16.2L15.6 15.7C15.5 15.7 15.4 15.7 15.3 15.8L14.3 17.5C14.3 17.6 14.3 17.7 14.4 17.8L15.5 18.6V19.6L14.4 20.4C14.3 20.5 14.2 20.6 14.3 20.7L15.3 22.4C15.4 22.5 15.5 22.5 15.6 22.5L16.8 22C17 22.2 17.3 22.4 17.6 22.5L17.8 23.8C17.9 23.9 18 24 18.1 24H20.1C20.2 24 20.3 23.9 20.3 23.8L20.5 22.5C20.8 22.3 21 22.2 21.3 22L22.5 22.4C22.6 22.4 22.7 22.4 22.8 22.3L23.8 20.6C23.9 20.5 23.9 20.4 23.8 20.4L22.7 19.6M19 20.5C18.2 20.5 17.5 19.8 17.5 19S18.2 17.5 19 17.5 20.5 18.2 20.5 19 19.8 20.5 19 20.5Z"; +var mdiDatabaseEdit = "M4,14V17C4,19 7.05,20.72 11,21V18.11L11.13,18C7.12,17.76 4,16.06 4,14M12,13C7.58,13 4,11.21 4,9V12C4,14.21 7.58,16 12,16C12.39,16 12.77,16 13.16,16L17,12.12C15.4,12.72 13.71,13 12,13M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M21,11.13C20.85,11.13 20.71,11.19 20.61,11.3L19.61,12.3L21.66,14.3L22.66,13.3C22.87,13.1 22.88,12.76 22.66,12.53L21.42,11.3C21.32,11.19 21.18,11.13 21.04,11.13M19.04,12.88L13,18.94V21H15.06L21.12,14.93L19.04,12.88Z"; +var mdiDatabaseEditOutline = "M12 16C12.8 16 13.57 15.93 14.31 15.82L17.22 12.91C15.89 13.59 14 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.13L19.39 10.74C19.57 10.56 19.78 10.42 20 10.3V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.04 7.06 20.72 11 20.97V19.13L11.17 18.96C7.84 18.76 6 17.46 6 17V14.77C7.61 15.55 9.72 16 12 16M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M19.13 13.83L21.17 15.87L15.04 22H13V19.96L19.13 13.83M22.85 14.19L21.87 15.17L19.83 13.13L20.81 12.15C21 11.95 21.33 11.95 21.53 12.15L22.85 13.47C23.05 13.67 23.05 14 22.85 14.19Z"; +var mdiDatabaseExport = "M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C12.5,11 13,10.97 13.5,10.92V9.5H16.39L15.39,8.5L18.9,5C17.5,3.8 14.94,3 12,3M18.92,7.08L17.5,8.5L20,11H15V13H20L17.5,15.5L18.92,16.92L23.84,12M4,9V12C4,14.21 7.58,16 12,16C13.17,16 14.26,15.85 15.25,15.63L16.38,14.5H13.5V12.92C13,12.97 12.5,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C14.94,21 17.5,20.2 18.9,19L17,17.1C15.61,17.66 13.9,18 12,18C7.58,18 4,16.21 4,14Z"; +var mdiDatabaseExportOutline = "M17.86 18L18.9 19C17.5 20.2 14.94 21 12 21C7.59 21 4 19.21 4 17V7C4 4.79 7.58 3 12 3C14.95 3 17.5 3.8 18.9 5L17.86 6L17.5 6.4C16.65 5.77 14.78 5 12 5C8.13 5 6 6.5 6 7S8.13 9 12 9C13.37 9 14.5 8.81 15.42 8.54L16.38 9.5H13.5V10.92C13 10.97 12.5 11 12 11C9.61 11 7.47 10.47 6 9.64V12.45C7.3 13.4 9.58 14 12 14C12.5 14 13 13.97 13.5 13.92V14.5H16.38L15.38 15.5L15.5 15.61C14.41 15.86 13.24 16 12 16C9.72 16 7.61 15.55 6 14.77V17C6 17.5 8.13 19 12 19C14.78 19 16.65 18.23 17.5 17.61L17.86 18M18.92 7.08L17.5 8.5L20 11H15V13H20L17.5 15.5L18.92 16.92L23.84 12L18.92 7.08Z"; +var mdiDatabaseImport = "M12,3C8.59,3 5.69,4.07 4.54,5.57L9.79,10.82C10.5,10.93 11.22,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M3.92,7.08L2.5,8.5L5,11H0V13H5L2.5,15.5L3.92,16.92L8.84,12M20,9C20,11.21 16.42,13 12,13C11.34,13 10.7,12.95 10.09,12.87L7.62,15.34C8.88,15.75 10.38,16 12,16C16.42,16 20,14.21 20,12M20,14C20,16.21 16.42,18 12,18C9.72,18 7.67,17.5 6.21,16.75L4.53,18.43C5.68,19.93 8.59,21 12,21C16.42,21 20,19.21 20,17"; +var mdiDatabaseImportOutline = "M8.84 12L3.92 16.92L2.5 15.5L5 13H0V11H5L2.5 8.5L3.92 7.08L8.84 12M12 3C8.59 3 5.68 4.07 4.53 5.57L5 6L6.03 7.07C6 7.05 6 7 6 7C6 6.5 8.13 5 12 5S18 6.5 18 7 15.87 9 12 9C9.38 9 7.58 8.31 6.68 7.72L9.8 10.84C10.5 10.94 11.24 11 12 11C14.39 11 16.53 10.47 18 9.64V12.45C16.7 13.4 14.42 14 12 14C11.04 14 10.1 13.9 9.24 13.73L7.59 15.37C8.91 15.77 10.41 16 12 16C14.28 16 16.39 15.55 18 14.77V17C18 17.5 15.87 19 12 19S6 17.5 6 17V16.96L5 18L4.54 18.43C5.69 19.93 8.6 21 12 21C16.41 21 20 19.21 20 17V7C20 4.79 16.42 3 12 3Z"; +var mdiDatabaseLock = "M11,3C15.42,3 19,4.79 19,7C19,9.21 15.42,11 11,11C6.58,11 3,9.21 3,7C3,4.79 6.58,3 11,3M19,12.03C17.11,12.24 15.57,13.62 15.13,15.43C13.92,15.79 12.5,16 11,16C6.58,16 3,14.21 3,12V9C3,11.21 6.58,13 11,13C15.42,13 19,11.21 19,9V12.03M14,17.71V20.71C13.07,20.9 12.06,21 11,21C6.58,21 3,19.21 3,17V14C3,16.21 6.58,18 11,18C12.06,18 13.07,17.9 14,17.71M19.5,14A2.5,2.5 0 0,1 22,16.5V17A1,1 0 0,1 23,18V22A1,1 0 0,1 22,23H17A1,1 0 0,1 16,22V18A1,1 0 0,1 17,17V16.5A2.5,2.5 0 0,1 19.5,14M19.5,15A1.5,1.5 0 0,0 18,16.5V17H21V16.5A1.5,1.5 0 0,0 19.5,15Z"; +var mdiDatabaseLockOutline = "M6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V11.05C18.17 11.03 18.33 11 18.5 11C19.03 11 19.53 11.1 20 11.26V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.34 21 12.67 21 13 20.97V18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.41 16 12.81 15.97 13.21 15.94C13.4 15.46 13.68 15.03 14.07 14.7C14.13 14.39 14.23 14.09 14.34 13.8C13.6 13.93 12.81 14 12 14C9.58 14 7.3 13.4 6 12.45M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z"; +var mdiDatabaseMarker = "M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8M4 12V9C4 11.21 7.58 13 12 13C12.57 13 13.13 12.97 13.67 12.91C13.25 13.69 13 14.57 13 15.5C13 15.65 13 15.81 13.03 15.96C12.69 16 12.35 16 12 16C7.58 16 4 14.21 4 12M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M15 20.71C14.07 20.9 13.06 21 12 21C7.58 21 4 19.21 4 17V14C4 16.21 7.58 18 12 18C12.5 18 13.03 17.97 13.5 17.93C13.9 18.91 14.44 19.87 15 20.71Z"; +var mdiDatabaseMarkerOutline = "M12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.35 16 12.69 15.97 13.03 15.95C13 15.8 13 15.65 13 15.5C13 14.96 13.09 14.44 13.24 13.94C12.83 14 12.42 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V10.03C18.17 10 18.33 10 18.5 10C19 10 19.5 10.08 20 10.22V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C13.06 21 14.07 20.89 15 20.71C14.62 20.14 14.25 19.5 13.93 18.85C13.34 18.94 12.71 19 12 19M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8Z"; +var mdiDatabaseMinus = "M23 17V19H15V17M12 3C16.42 3 20 4.79 20 7S16.42 11 12 11 4 9.21 4 7 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13S20 11.21 20 9V12.08L19 12C16.41 12 14.2 13.64 13.36 15.94L12 16C7.58 16 4 14.21 4 12V9M4 14C4 16.21 7.58 18 12 18H13C13 19.05 13.27 20.04 13.75 20.9L12 21C7.58 21 4 19.21 4 17V14Z"; +var mdiDatabaseMinusOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M23 18V20H15V18H23Z"; +var mdiDatabaseOff = "M19.07 15.87C19.66 15.31 20 14.68 20 14V16.8L19.07 15.87M20 9C20 10.54 18.27 11.86 15.73 12.53L17.89 14.69C19.19 14 20 13.04 20 12V9M20 7C20 4.79 16.42 3 12 3C10.13 3 8.42 3.33 7.06 3.86L14.06 10.86C17.5 10.41 20 8.85 20 7M2.39 1.73L1.11 3L4.21 6.1C4.08 6.39 4 6.69 4 7C4 8.63 5.96 10.04 8.77 10.66L11.08 12.97C7.1 12.74 4 11.06 4 9V12C4 14.21 7.58 16 12 16C12.69 16 13.35 15.95 14 15.87L15.66 17.55C14.57 17.84 13.32 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C14.31 21 16.38 20.5 17.84 19.73L20.84 22.73L22.11 21.46L2.39 1.73Z"; +var mdiDatabaseOffOutline = "M2.39 1.73L1.11 3L4.21 6.1C4.08 6.39 4 6.69 4 7V17C4 19.21 7.59 21 12 21C14.3 21 16.38 20.5 17.84 19.73L20.84 22.73L22.11 21.46L2.39 1.73M6 9.64C6.76 10.07 7.7 10.42 8.76 10.65L12.11 14C12.07 14 12.04 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64M12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.68 16 13.34 15.95 14 15.87L16.34 18.23C15.33 18.65 13.87 19 12 19M8.64 5.44L7.06 3.86C8.42 3.33 10.13 3 12 3C16.42 3 20 4.79 20 7V16.8L18 14.8V14.77L18 14.78L16.45 13.25C17.05 13.03 17.58 12.76 18 12.45V9.64C16.97 10.22 15.61 10.65 14.06 10.86L12.19 9C15.94 8.94 18 7.5 18 7C18 6.5 15.87 5 12 5C10.66 5 9.54 5.18 8.64 5.44Z"; +var mdiDatabaseOutline = "M12 3C7.58 3 4 4.79 4 7V17C4 19.21 7.59 21 12 21S20 19.21 20 17V7C20 4.79 16.42 3 12 3M18 17C18 17.5 15.87 19 12 19S6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16S16.39 15.55 18 14.77V17M18 12.45C16.7 13.4 14.42 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11C14.39 11 16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5C15.87 5 18 6.5 18 7S15.87 9 12 9Z"; +var mdiDatabasePlus = "M18,14H20V17H23V19H20V22H18V19H15V17H18V14M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V9L20,12.08L19,12C16.41,12 14.2,13.64 13.36,15.94L12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18H13C13,19.05 13.27,20.04 13.75,20.9L12,21C7.58,21 4,19.21 4,17V14Z"; +var mdiDatabasePlusOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; +var mdiDatabaseRefresh = "M12 3C16.42 3 20 4.79 20 7C20 9.21 16.42 11 12 11C7.58 11 4 9.21 4 7C4 4.79 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13C13.11 13 14.18 12.89 15.14 12.68C14.19 13.54 13.5 14.67 13.18 15.96L12 16C7.58 16 4 14.21 4 12V9M20 9V11L19.5 11L18.9 11.03C19.6 10.43 20 9.74 20 9M4 14C4 16.21 7.58 18 12 18L13 17.97C13.09 19.03 13.42 20 13.95 20.88L12 21C7.58 21 4 19.21 4 17V14M19 13.5C20.11 13.5 21.11 13.95 21.83 14.67L23 13.5V17.5H19L20.77 15.73C20.32 15.28 19.69 15 19 15C17.62 15 16.5 16.12 16.5 17.5C16.5 18.88 17.62 20 19 20C19.82 20 20.54 19.61 21 19H22.71C22.12 20.47 20.68 21.5 19 21.5C16.79 21.5 15 19.71 15 17.5C15 15.29 16.79 13.5 19 13.5Z"; +var mdiDatabaseRefreshOutline = "M6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.03C18.17 12 18.33 12 18.5 12C19 12 19.5 12.07 20 12.18V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.17 21 12.33 21 12.5 21C12.24 20.37 12.09 19.7 12.03 19L12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.17 16 12.34 16 12.5 16C12.85 15.18 13.34 14.46 13.95 13.86C13.32 13.95 12.67 14 12 14C9.58 14 7.3 13.4 6 12.45M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M18 18.5L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18Z"; +var mdiDatabaseRemove = "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.47L22.53,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.53L15.47,20.12L17.59,18L15.46,15.88M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V12.08L19,12C16.41,12 14.2,13.64 13.36,15.94L12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18H13C13,19.05 13.27,20.04 13.75,20.9L12,21C7.58,21 4,19.21 4,17V14Z"; +var mdiDatabaseRemoveOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19"; +var mdiDatabaseSearch = "M18.68,12.32C16.92,10.56 14.07,10.57 12.32,12.33C10.56,14.09 10.56,16.94 12.32,18.69C13.81,20.17 16.11,20.43 17.89,19.32L21,22.39L22.39,21L19.3,17.89C20.43,16.12 20.17,13.8 18.68,12.32M17.27,17.27C16.29,18.25 14.71,18.24 13.73,17.27C12.76,16.29 12.76,14.71 13.74,13.73C14.71,12.76 16.29,12.76 17.27,13.73C18.24,14.71 18.24,16.29 17.27,17.27M10.9,20.1C10.25,19.44 9.74,18.65 9.42,17.78C6.27,17.25 4,15.76 4,14V17C4,19.21 7.58,21 12,21V21C11.6,20.74 11.23,20.44 10.9,20.1M4,9V12C4,13.68 6.07,15.12 9,15.7C9,15.63 9,15.57 9,15.5C9,14.57 9.2,13.65 9.58,12.81C6.34,12.3 4,10.79 4,9M12,3C7.58,3 4,4.79 4,7C4,9 7,10.68 10.85,11H10.9C12.1,9.74 13.76,9 15.5,9C16.41,9 17.31,9.19 18.14,9.56C19.17,9.09 19.87,8.12 20,7C20,4.79 16.42,3 12,3Z"; +var mdiDatabaseSearchOutline = "M11 18.95C7.77 18.72 6 17.45 6 17V14.77C7.13 15.32 8.5 15.69 10 15.87C10 15.21 10.04 14.54 10.21 13.89C8.5 13.67 6.97 13.16 6 12.45V9.64C7.43 10.45 9.5 10.97 11.82 11C11.85 10.97 11.87 10.93 11.9 10.9C14.1 8.71 17.5 8.41 20 10.03V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.34 21 12.68 21 13 20.97C12.62 20.72 12.24 20.44 11.9 20.1C11.55 19.74 11.25 19.36 11 18.95M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; +var mdiDatabaseSettings = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V12C20,14.21 16.42,16 12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18C16.42,18 20,16.21 20,14V17C20,18.19 18.95,19.27 17.29,20H6.71C5.05,19.27 4,18.19 4,17V14Z"; +var mdiDatabaseSettingsOutline = "M12 3C7.58 3 4 4.79 4 7V17C4 18.2 5.06 19.27 6.73 20H17.27C18.94 19.27 20 18.2 20 17V7C20 4.79 16.42 3 12 3M18 17C18 17.5 15.87 19 12 19S6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16S16.39 15.55 18 14.77V17M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M7 22H9V24H7V22M15 22H17V24H15V22M11 22H13V24H11V22Z"; +var mdiDatabaseSync = "M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C13.11,13 14.17,12.89 15.14,12.68C14.19,13.54 13.5,14.67 13.18,15.96L12,16C7.58,16 4,14.21 4,12V9M20,9V11H19.5L18.9,11.03C19.6,10.43 20,9.74 20,9M4,14C4,16.21 7.58,18 12,18L13,17.97C13.09,19.03 13.42,20 13.95,20.88L12,21C7.58,21 4,19.21 4,17V14Z"; +var mdiDatabaseSyncOutline = "M12 16C12.41 16 12.81 15.97 13.21 15.94C13.4 15.18 13.72 14.46 14.16 13.83C13.47 13.94 12.74 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V11.19C18.5 11.07 19 11 19.55 11C19.7 11 19.85 11 20 11.03V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.66 21 13.31 20.96 13.92 20.88C13.57 20.29 13.31 19.64 13.16 18.94C12.79 19 12.41 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12V13.5C21.21 13.5 23 15.29 23 17.5M19 18.5L21.25 20.75L19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5Z"; +var mdiDeathStar = "M2.05,13H21.95C21.45,18.05 17.19,22 12,22C6.82,22 2.55,18.05 2.05,13M21.95,11H2.05C2.55,5.95 6.82,2 12,2C17.18,2 21.45,5.95 21.95,11M12,6.75A2.5,2.5 0 0,0 9.5,4.25A2.5,2.5 0 0,0 7,6.75A2.5,2.5 0 0,0 9.5,9.25A2.5,2.5 0 0,0 12,6.75Z"; +var mdiDeathStarVariant = "M2.05,13H21.94C21.88,13.69 21.74,14.36 21.54,15H14V17H17V19H15V21H12.5V22C12.33,22 12.17,22 12,22C6.82,22 2.55,18.05 2.05,13M21.94,11H2.05C2.55,5.95 6.82,2 12,2C13.62,2 15.15,2.39 16.5,3.08V5H18.5V7H20V9H21.54C21.74,9.64 21.88,10.31 21.94,11M12,6.75A2.5,2.5 0 0,0 9.5,4.25A2.5,2.5 0 0,0 7,6.75A2.5,2.5 0 0,0 9.5,9.25A2.5,2.5 0 0,0 12,6.75Z"; +var mdiDeathlyHallows = "M12,2L1,21H23L12,2M12.75,11.47C14.56,11.87 15.7,13.67 15.3,15.5C15,16.75 14,17.75 12.75,18.03V11.47M11.25,18C9.44,17.6 8.3,15.8 8.7,14C9,12.72 10,11.72 11.25,11.44V18M16.88,14.72C16.83,12.35 15.09,10.36 12.75,10V6.29L20.4,19.5H13.07C15.29,19 16.87,17.03 16.88,14.75V14.72M11.25,6.29V10C8.6,10.4 6.77,12.88 7.18,15.54C7.5,17.5 8.97,19.12 10.93,19.55H3.6L11.25,6.29Z"; +var mdiDebian = "M18.5,10.57L18.3,10.94C18.56,10.16 18.41,9.31 18.45,8.57L18.38,8.55C18.31,6.7 16.71,4.73 15.29,4.07C14.06,3.5 12.17,3.4 11.3,3.83C11.42,3.72 11.9,3.68 11.75,3.6C10.38,3.73 10.69,4.07 9.64,4.34C9.35,4.62 10.5,4.12 9.87,4.5C9.31,4.63 9.05,4.38 8.22,5.24C8.29,5.36 8.75,4.89 8.37,5.36C7.58,5.27 5.89,7.16 5.53,7.78L5.72,7.82C5.41,8.59 5,9.08 4.95,9.54C4.87,10.68 4.5,12.75 5.03,13.39L4.97,13.92L5.2,14.37L5.08,14.38C5.66,16.21 5.7,14.42 6.47,16.32C6.36,16.28 6.24,16.24 6.08,16C6.06,16.19 6.32,16.69 6.62,17.08L6.5,17.22C6.66,17.53 6.82,17.6 6.93,17.71C6.3,17.36 7.5,18.84 7.63,19.03L7.73,18.86C7.71,19.1 7.9,19.42 8.26,19.87L8.56,19.86C8.69,20.1 9.14,20.54 9.41,20.56L9.23,20.8C9.92,21 9.56,21.09 10.41,21.39L10.24,21.09C10.67,21.46 10.8,21.79 11.41,22.07C12.26,22.37 12.37,22.25 13.23,22.5C12.5,22.5 11.64,22.5 11.06,22.28C7.1,21.21 3.5,16.56 3.74,11.78C3.68,10.81 3.84,9.6 3.68,9.36C3.9,8.62 4.16,7.72 4.69,6.65C4.65,6.58 4.78,6.86 5.05,6.41C5.21,6.05 5.34,5.66 5.55,5.31L5.65,5.28C5.76,4.67 7.08,3.73 7.5,3.26V3.44C8.36,2.63 9.9,2.09 10.76,1.71C10.53,1.96 11.27,1.68 11.8,1.65L11.31,1.93C11.94,1.77 11.91,2 12.56,1.9C12.33,1.93 12.06,2 12.1,2.06C12.82,2.14 12.94,1.84 13.61,2.06L13.56,1.86C14.5,2.2 14.69,2.14 15.7,2.68C16.06,2.69 16.1,2.46 16.63,2.68C16.73,2.84 16.61,2.87 17.27,3.27C17.34,3.24 17.14,3.05 17,2.9C18.3,3.61 19.75,5.12 20.18,6.74C19.77,6 20.14,7.13 20,7.07C20.18,7.56 20.33,8.07 20.43,8.6C20.31,8.17 20.04,7.12 19.57,6.45C19.54,6.88 18.97,6.15 19.28,7.11C19.5,7.45 19.33,6.76 19.62,7.36C19.62,7.65 19.73,7.94 19.8,8.31C19.7,8.29 19.58,7.9 19.5,8C19.6,8.5 19.77,8.72 19.83,8.76C19.8,8.84 19.71,8.68 19.71,9C19.75,9.74 19.92,9.43 20,9.46C19.91,9.83 19.59,10.25 19.75,10.88L19.55,10.32C19.5,10.85 19.66,10.95 19.42,11.6C19.6,11 19.58,10.5 19.41,10.75C19.5,11.57 18.76,12.2 18.83,12.73L18.62,12.44C18.05,13.27 18.61,12.89 18.22,13.5C18.36,13.27 18.15,13.42 18.33,13.14C18.21,13.15 17.78,13.67 17.39,13.97C15.85,15.2 14,15.37 12.24,14.7H12.23C12.24,14.66 12.23,14.61 12.11,14.53C10.6,13.38 9.71,12.4 10,10.12C10.25,9.95 10.31,9 10.84,8.67C11.16,7.96 12.12,7.31 13.15,7.29C14.2,7.23 15.09,7.85 15.54,8.43C14.72,7.68 13.4,7.45 12.26,8C11.11,8.53 10.42,9.8 10.5,11.07C10.56,11 10.6,11.05 10.62,10.89C10.59,13.36 13.28,15.17 15.22,14.26L15.25,14.31C16.03,14.09 15.93,13.92 16.44,13.56C16.4,13.65 16.1,13.86 16.28,13.86C16.53,13.8 17.31,13.07 17.7,12.73C17.87,12.35 17.6,12.5 17.85,12.04L18.15,11.89C18.32,11.41 18.5,11.14 18.5,10.57"; +var mdiDebugStepInto = "M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z"; +var mdiDebugStepOut = "M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z"; +var mdiDebugStepOver = "M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z"; +var mdiDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12Z"; +var mdiDecagramOutline = "M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12Z"; +var mdiDecimal = "M10 7A3 3 0 0 0 7 10V13A3 3 0 0 0 13 13V10A3 3 0 0 0 10 7M11 13A1 1 0 0 1 9 13V10A1 1 0 0 1 11 10M17 7A3 3 0 0 0 14 10V13A3 3 0 0 0 20 13V10A3 3 0 0 0 17 7M18 13A1 1 0 0 1 16 13V10A1 1 0 0 1 18 10M6 15A1 1 0 1 1 5 14A1 1 0 0 1 6 15Z"; +var mdiDecimalComma = "M10 7A3 3 0 0 1 13 10V13A3 3 0 0 1 7 13V10A3 3 0 0 1 10 7M10 9A1 1 0 0 0 9 10V13A1 1 0 0 0 11 13V10A1 1 0 0 0 10 9M17 7A3 3 0 0 1 20 10V13A3 3 0 0 1 14 13V10A3 3 0 0 1 17 7M17 9A1 1 0 0 0 16 10V13A1 1 0 0 0 18 13V10A1 1 0 0 0 17 9M5 14A1 1 0 0 0 4 15L5 18H6V15A1 1 0 0 0 5 14Z"; +var mdiDecimalCommaDecrease = "M5 13V16H4L3 13A1 1 0 0 1 5 13M15 16V14L12 17L15 20V18H21V16M12 11A3 3 0 0 1 6 11V8A3 3 0 0 1 12 8M10 8A1 1 0 0 0 8 8V11A1 1 0 0 0 10 11Z"; +var mdiDecimalCommaIncrease = "M9 5A3 3 0 0 0 6 8V11A3 3 0 0 0 12 11V8A3 3 0 0 0 9 5M10 11A1 1 0 0 1 8 11V8A1 1 0 0 1 10 8M16 14A3 3 0 0 0 19 11V8A3 3 0 0 0 13 8V11A3 3 0 0 0 16 14M15 8A1 1 0 0 1 17 8V11A1 1 0 0 1 15 11M19 20V18H13V16H19V14L22 17M5 13V16H4L3 13A1 1 0 0 1 5 13Z"; +var mdiDecimalDecrease = "M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z"; +var mdiDecimalIncrease = "M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z"; +var mdiDelete = "M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"; +var mdiDeleteAlert = "M17 4V6H3V4H6.5L7.5 3H12.5L13.5 4H17M4 19V7H16V19C16 20.1 15.1 21 14 21H6C4.9 21 4 20.1 4 19M19 15H21V17H19V15M19 7H21V13H19V7Z"; +var mdiDeleteAlertOutline = "M4 19V7H16V19C16 20.1 15.1 21 14 21H6C4.9 21 4 20.1 4 19M6 9V19H14V9H6M13.5 4H17V6H3V4H6.5L7.5 3H12.5L13.5 4M19 17V15H21V17H19M19 13V7H21V13H19Z"; +var mdiDeleteCircle = "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z"; +var mdiDeleteCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M16,10V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V10H16M13.5,6L14.5,7H17V9H7V7H9.5L10.5,6H13.5Z"; +var mdiDeleteClock = "M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13M23 16C23 19.87 19.87 23 16 23C14.09 23 12.36 22.24 11.1 21H8C6.9 21 6 20.1 6 19V7H18V9.29C20.89 10.15 23 12.83 23 16M16 11C13.24 11 11 13.24 11 16C11 18.76 13.24 21 16 21C18.76 21 21 18.76 21 16C21 13.24 18.76 11 16 11M19 4V6H5V4H8.5L9.5 3H14.5L15.5 4H19Z"; +var mdiDeleteClockOutline = "M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13M23 16C23 19.87 19.87 23 16 23C14.09 23 12.36 22.24 11.1 21H8C6.9 21 6 20.1 6 19V7H18V9.29C20.89 10.15 23 12.83 23 16M9 16C9 12.13 12.13 9 16 9H8V19H9.67C9.24 18.09 9 17.07 9 16M16 11C13.24 11 11 13.24 11 16C11 18.76 13.24 21 16 21C18.76 21 21 18.76 21 16C21 13.24 18.76 11 16 11M15.5 4H19V6H5V4H8.5L9.5 3H14.5L15.5 4Z"; +var mdiDeleteEmpty = "M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z"; +var mdiDeleteEmptyOutline = "M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19M8,19H16V12.2L10.46,9H8V19Z"; +var mdiDeleteForever = "M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z"; +var mdiDeleteForeverOutline = "M14.12,10.47L12,12.59L9.87,10.47L8.46,11.88L10.59,14L8.47,16.12L9.88,17.53L12,15.41L14.12,17.53L15.53,16.12L13.41,14L15.53,11.88L14.12,10.47M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9Z"; +var mdiDeleteOff = "M2 5.27L3.28 4L5 5.72L5.28 6L6.28 7L18 18.72L20 20.72L18.73 22L17.27 20.54C16.93 20.83 16.5 21 16 21H8C6.9 21 6 20.1 6 19V9.27L2 5.27M19 4V6H7.82L5.82 4H8.5L9.5 3H14.5L15.5 4H19M18 7V16.18L8.82 7H18Z"; +var mdiDeleteOffOutline = "M2 5.27L3.28 4L5 5.72L5.28 6L6.28 7L8.28 9L16 16.72L18 18.72L20 20.72L18.73 22L17.27 20.54C16.93 20.83 16.5 21 16 21H8C6.9 21 6 20.1 6 19V9.27L2 5.27M8 19H15.73L8 11.27V19M18 7V16.18L16 14.18V9H10.82L8.82 7H18M15.5 4H19V6H7.82L5.82 4H8.5L9.5 3H14.5L15.5 4Z"; +var mdiDeleteOutline = "M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z"; +var mdiDeleteRestore = "M14,14H16L12,10L8,14H10V18H14V14M6,7H18V19C18,19.5 17.8,20 17.39,20.39C17,20.8 16.5,21 16,21H8C7.5,21 7,20.8 6.61,20.39C6.2,20 6,19.5 6,19V7M19,4V6H5V4H8.5L9.5,3H14.5L15.5,4H19Z"; +var mdiDeleteSweep = "M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z"; +var mdiDeleteSweepOutline = "M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M11,10V18H5V10H11M13,8H3V18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8M14,5H11L10,4H6L5,5H2V7H14V5Z"; +var mdiDeleteVariant = "M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z"; +var mdiDelta = "M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22"; +var mdiDesk = "M3 6H21C21.55 6 22 6.45 22 7C22 7.55 21.55 8 21 8V19H19V17H15V19H13V8H5V19H3V8C2.45 8 2 7.55 2 7C2 6.45 2.45 6 3 6M16 10.5V11H18V10.5C18 10.22 17.78 10 17.5 10H16.5C16.22 10 16 10.22 16 10.5M16 14.5V15H18V14.5C18 14.22 17.78 14 17.5 14H16.5C16.22 14 16 14.22 16 14.5Z"; +var mdiDeskLamp = "M10.85,2L9.18,4.5L10.32,5.25L7.14,10C7.1,10 7.05,10 7,10A2,2 0 0,0 5,12C5,12.94 5.66,13.75 6.58,13.95L10.62,20H7V22H17V20H13L8.53,13.28C8.83,12.92 9,12.47 9,12C9,11.7 8.93,11.4 8.8,11.13L12,6.37C11.78,8.05 12.75,9.89 14.45,11L18.89,4.37C17.2,3.24 15.12,3.04 13.65,3.87L10.85,2M18.33,7L16.67,9.5C17.35,9.95 18.29,9.77 18.75,9.08C19.21,8.39 19,7.46 18.33,7Z"; +var mdiDeskphone = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z"; +var mdiDesktopClassic = "M6,2C4.89,2 4,2.89 4,4V12C4,13.11 4.89,14 6,14H18C19.11,14 20,13.11 20,12V4C20,2.89 19.11,2 18,2H6M6,4H18V12H6V4M4,15C2.89,15 2,15.89 2,17V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V17C22,15.89 21.11,15 20,15H4M8,17H20V20H8V17M9,17.75V19.25H13V17.75H9M15,17.75V19.25H19V17.75H15Z"; +var mdiDesktopMac = "M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z"; +var mdiDesktopMacDashboard = "M21,14V4H3V14H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14L16,21V22H8V21L10,18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M4,5H15V10H4V5M16,5H20V7H16V5M20,8V13H16V8H20M4,11H9V13H4V11M10,11H15V13H10V11Z"; +var mdiDesktopTower = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z"; +var mdiDesktopTowerMonitor = "M22,18H17A1,1 0 0,1 16,17V7A1,1 0 0,1 17,6H22A1,1 0 0,1 23,7V17A1,1 0 0,1 22,18M22,8H17V9H22V8M22,10H17V11H22V10M9,15V17H10V18H5V17H6V15H2A1,1 0 0,1 1,14V7A1,1 0 0,1 2,6H13A1,1 0 0,1 14,7V14A1,1 0 0,1 13,15H9M12,8H3V13H12V8Z"; +var mdiDetails = "M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z"; +var mdiDevTo = "M7.73 11.93C7.73 13.65 7.71 13.76 7.5 14C7.31 14.17 7.12 14.23 6.74 14.23L6.23 14.24L6.2 11.97L6.18 9.7H6.7C7.05 9.7 7.3 9.77 7.47 9.91C7.71 10.12 7.73 10.16 7.73 11.93M22 7.5V16.5C22 17.61 21.11 18.5 20 18.5H4C2.89 18.5 2 17.61 2 16.5V7.5C2 6.39 2.89 5.5 4 5.5H20C21.11 5.5 22 6.39 22 7.5M8.93 11.73C8.9 9.89 8.88 9.74 8.64 9.34C8.24 8.66 7.79 8.5 6.28 8.5H5V15.5H6.21C7.54 15.5 8.1 15.33 8.5 14.79C8.91 14.26 9 13.81 8.93 11.73M13.12 8.5H11.64C10.15 8.5 10.14 8.5 9.93 8.78S9.7 9.21 9.7 12V14.96L9.97 15.23C10.22 15.5 10.28 15.5 11.68 15.5H13.12V14.31L12.03 14.27L10.93 14.24V12.6L11.61 12.57L12.27 12.53V11.34H10.88V9.7H13.12V8.5M19 8.56C19 8.5 18.7 8.5 18.34 8.5L17.66 8.56L17.07 10.91C16.69 12.39 16.45 13.18 16.4 13.04C16.32 12.77 15.26 8.6 15.26 8.55C15.26 8.5 14.95 8.5 14.58 8.5H13.89L14.3 10.05C14.5 10.92 14.89 12.33 15.11 13.2C15.45 14.55 15.57 14.85 15.86 15.14C16.06 15.36 16.31 15.5 16.47 15.5C16.8 15.5 17.23 15.16 17.37 14.77C17.5 14.5 19 8.69 19 8.56Z"; +var mdiDeveloperBoard = "M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z"; +var mdiDeviantart = "M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z"; +var mdiDevices = "M3 6H21V4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H7V18H3V6M13 12H9V13.78C8.39 14.33 8 15.11 8 16C8 16.89 8.39 17.67 9 18.22V20H13V18.22C13.61 17.67 14 16.88 14 16S13.61 14.33 13 13.78V12M11 17.5C10.17 17.5 9.5 16.83 9.5 16S10.17 14.5 11 14.5 12.5 15.17 12.5 16 11.83 17.5 11 17.5M22 8H16C15.5 8 15 8.5 15 9V19C15 19.5 15.5 20 16 20H22C22.5 20 23 19.5 23 19V9C23 8.5 22.5 8 22 8M21 18H17V10H21V18Z"; +var mdiDiabetes = "M14.73 2.29A1 1 0 0 1 16.14 3.7L13 6.79L13.76 7.74L15.7 12.74A1.46 1.46 0 0 1 15.36 14.29L12.27 17.38A1.55 1.55 0 0 1 10.15 17.38L5.55 12.78A1.37 1.37 0 0 1 5.15 11.78L4.65 5.34H5.72A1 1 0 0 1 6.47 5.64L6.61 5.81L7.66 9.29M7.66 22L2 16.36L4.12 14.24L9.78 19.9M19.5 4.5S17 7.26 17 9A2.5 2.5 0 1 0 22 9C22 7.26 19.5 4.5 19.5 4.5Z"; +var mdiDialpad = "M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z"; +var mdiDiameter = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,15V13H7V15L4,12L7,9V11H17V9L20,12L17,15Z"; +var mdiDiameterOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16,15V13H8V15L5,12L8,9V11H16V9L19,12L16,15Z"; +var mdiDiameterVariant = "M4.15,21.46L5.47,19.58C3.35,17.74 2,15.03 2,12A10,10 0 0,1 12,2C13.78,2 15.44,2.46 16.89,3.27L18.21,1.39L19.85,2.54L18.53,4.42C20.65,6.26 22,8.97 22,12A10,10 0 0,1 12,22C10.22,22 8.56,21.54 7.11,20.73L5.79,22.61L4.15,21.46M12,4A8,8 0 0,0 4,12C4,14.35 5,16.46 6.63,17.93L15.73,4.92C14.62,4.33 13.35,4 12,4M12,20A8,8 0 0,0 20,12C20,9.65 19,7.54 17.37,6.07L8.27,19.08C9.38,19.67 10.65,20 12,20Z"; +var mdiDiamond = "M6,2L2,8L12,22L22,8L18,2H6Z"; +var mdiDiamondOutline = "M18,2H6L2,8L12,22L22,8L18,2M4.43,8L7.07,4H16.93L19.57,8L12,18.56L4.43,8Z"; +var mdiDiamondStone = "M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z"; +var mdiDice1 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiDice1Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 10.5C11.17 10.5 10.5 11.17 10.5 12S11.17 13.5 12 13.5 13.5 12.83 13.5 12 12.83 10.5 12 10.5"; +var mdiDice2 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z"; +var mdiDice2Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6M16.5 15C15.67 15 15 15.67 15 16.5C15 17.33 15.67 18 16.5 18C17.33 18 18 17.33 18 16.5C18 15.67 17.33 15 16.5 15Z"; +var mdiDice3 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z"; +var mdiDice3Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M12 10.5C11.2 10.5 10.5 11.2 10.5 12S11.2 13.5 12 13.5 13.5 12.8 13.5 12 12.8 10.5 12 10.5M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15Z"; +var mdiDice4 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z"; +var mdiDice4Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6M16.5 15C15.67 15 15 15.67 15 16.5C15 17.33 15.67 18 16.5 18C17.33 18 18 17.33 18 16.5C18 15.67 17.33 15 16.5 15M16.5 6C15.67 6 15 6.67 15 7.5S15.67 9 16.5 9C17.33 9 18 8.33 18 7.5S17.33 6 16.5 6M7.5 15C6.67 15 6 15.67 6 16.5C6 17.33 6.67 18 7.5 18S9 17.33 9 16.5C9 15.67 8.33 15 7.5 15Z"; +var mdiDice5 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z"; +var mdiDice5Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15M16.5 6C15.7 6 15 6.7 15 7.5S15.7 9 16.5 9C17.3 9 18 8.3 18 7.5S17.3 6 16.5 6M12 10.5C11.2 10.5 10.5 11.2 10.5 12S11.2 13.5 12 13.5 13.5 12.8 13.5 12 12.8 10.5 12 10.5M7.5 15C6.7 15 6 15.7 6 16.5C6 17.3 6.7 18 7.5 18S9 17.3 9 16.5C9 15.7 8.3 15 7.5 15Z"; +var mdiDice6 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z"; +var mdiDice6Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15M16.5 10.5C15.7 10.5 15 11.2 15 12S15.7 13.5 16.5 13.5C17.3 13.5 18 12.8 18 12S17.3 10.5 16.5 10.5M16.5 6C15.7 6 15 6.7 15 7.5S15.7 9 16.5 9C17.3 9 18 8.3 18 7.5S17.3 6 16.5 6M7.5 10.5C6.7 10.5 6 11.2 6 12S6.7 13.5 7.5 13.5 9 12.8 9 12 8.3 10.5 7.5 10.5M7.5 15C6.7 15 6 15.7 6 16.5C6 17.3 6.7 18 7.5 18S9 17.3 9 16.5C9 15.7 8.3 15 7.5 15Z"; +var mdiDiceD10 = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M14.07 8.21C15.5 8.21 16.64 9.36 16.64 10.78V13.42C16.64 14.84 15.5 16 14.07 16C12.64 16 11.5 14.84 11.5 13.42V10.78C11.5 9.36 12.65 8.21 14.07 8.21M10.36 8.41H10.5V16H9V10.21L7.22 10.76V9.53L10.36 8.41M14.06 9.65C13.47 9.65 13 10.13 13 10.71V13.5C13 14.07 13.47 14.54 14.06 14.54C14.64 14.54 15.14 14.06 15.14 13.5V10.71C15.14 10.12 14.64 9.65 14.06 9.65Z"; +var mdiDiceD10Outline = "M10.5 16H9V10.21L7.22 10.76V9.53L10.36 8.41H10.5V16M14.07 8.21C15.5 8.21 16.64 9.36 16.64 10.78V13.42C16.64 14.84 15.5 16 14.07 16C12.64 16 11.5 14.84 11.5 13.42V10.78C11.5 9.36 12.65 8.21 14.07 8.21M14.06 9.65C13.47 9.65 13 10.13 13 10.71V13.5C13 14.07 13.47 14.54 14.06 14.54C14.64 14.54 15.14 14.06 15.14 13.5V10.71C15.14 10.12 14.64 9.65 14.06 9.65M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z"; +var mdiDiceD12 = "M12 2L1.5 9.64L5.5 22H18.5L22.5 9.64L12 2M10.5 17H8.89V10.89L7 11.47V10.19L10.31 9H10.5V17M17 17H11.66V15.91C11.66 15.91 15.23 12.45 15.23 11.4C15.23 10.12 14.18 10.25 14.18 10.25C13.5 10.3 13 10.87 13 11.55H11.44C11.5 10.09 12.72 8.94 14.27 9C16.74 9 16.77 10.85 16.77 11.3C16.77 13.07 13.58 15.77 13.58 15.77L17 15.75V17Z"; +var mdiDiceD12Outline = "M12,2L1.5,9.64L5.5,22H18.5L22.5,9.64L12,2M17,20H7L3.85,10.4L12,4.47L20.15,10.4L17,20M17,15.75V17H11.66V15.91C11.66,15.91 15.23,12.45 15.23,11.4C15.23,10.12 14.18,10.25 14.18,10.25C13.5,10.3 13,10.87 13,11.55H11.44C11.5,10.09 12.72,8.94 14.27,9C16.74,9 16.77,10.85 16.77,11.3C16.77,13.07 13.58,15.77 13.58,15.77L17,15.75M10.5,17H8.89V10.89L7,11.47V10.19L10.31,9H10.5V17Z"; +var mdiDiceD20 = "M20.47 6.62L12.57 2.18C12.41 2.06 12.21 2 12 2S11.59 2.06 11.43 2.18L3.53 6.62C3.21 6.79 3 7.12 3 7.5V16.5C3 16.88 3.21 17.21 3.53 17.38L11.43 21.82C11.59 21.94 11.79 22 12 22S12.41 21.94 12.57 21.82L20.47 17.38C20.79 17.21 21 16.88 21 16.5V7.5C21 7.12 20.79 6.79 20.47 6.62M11.45 15.96L6.31 15.93V14.91C6.31 14.91 9.74 11.58 9.75 10.57C9.75 9.33 8.73 9.46 8.73 9.46S7.75 9.5 7.64 10.71L6.14 10.76C6.14 10.76 6.18 8.26 8.83 8.26C11.2 8.26 11.23 10.04 11.23 10.5C11.23 12.18 8.15 14.77 8.15 14.77L11.45 14.76V15.96M17.5 13.5C17.5 14.9 16.35 16.05 14.93 16.05C13.5 16.05 12.36 14.9 12.36 13.5V10.84C12.36 9.42 13.5 8.27 14.93 8.27S17.5 9.42 17.5 10.84V13.5M16 10.77V13.53C16 14.12 15.5 14.6 14.92 14.6C14.34 14.6 13.86 14.12 13.86 13.53V10.77C13.86 10.18 14.34 9.71 14.92 9.71C15.5 9.71 16 10.18 16 10.77Z"; +var mdiDiceD20Outline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z"; +var mdiDiceD4 = "M10.25 15.15L11.92 12.47V15.15H10.25M21.92 21H2.08C1.24 21 .72 20.08 1.16 19.36L11.08 3.13C11.5 2.44 12.5 2.44 12.92 3.13L22.84 19.36C23.28 20.08 22.76 21 21.92 21M14.29 15.15H13.43V10.42H11.91L8.75 15.41L8.82 16.36H11.92V18H13.43V16.36H14.29V15.15Z"; +var mdiDiceD4Outline = "M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z"; +var mdiDiceD6 = "M13.05 13.5C13.05 14.27 12.61 14.83 12 14.83S10.85 14.27 10.85 13.5L10.83 12.78C10.83 12.78 11.21 12 11.95 12.1C12.56 12.1 13.05 12.73 13.05 13.5M21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H19C20.11 3 21 3.9 21 5M14.55 13.41C14.5 11.45 13.19 10.87 12.53 10.87C11.41 10.87 10.86 11.53 10.86 11.53S10.89 9.5 13.39 9.53V8.33C13.39 8.33 9.33 7.94 9.3 12.66C9.27 16.86 12.77 16 12.77 16S14.61 15.47 14.55 13.41Z"; +var mdiDiceD6Outline = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z"; +var mdiDiceD8 = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 8.25C13.31 8.25 14.38 9.2 14.38 10.38C14.38 11.07 14 11.68 13.44 12.07C14.14 12.46 14.6 13.13 14.6 13.9C14.6 15.12 13.44 16.1 12 16.1C10.56 16.1 9.4 15.12 9.4 13.9C9.4 13.13 9.86 12.46 10.56 12.07C10 11.68 9.63 11.07 9.63 10.38C9.63 9.2 10.69 8.25 12 8.25M12 9.5C11.5 9.5 11.1 9.95 11.1 10.5C11.1 11.05 11.5 11.5 12 11.5C12.5 11.5 12.9 11.05 12.9 10.5C12.9 9.95 12.5 9.5 12 9.5M12 12.65C11.39 12.65 10.9 13.14 10.9 13.75C10.9 14.36 11.39 14.85 12 14.85C12.61 14.85 13.1 14.36 13.1 13.75C13.1 13.14 12.61 12.65 12 12.65Z"; +var mdiDiceD8Outline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12M12 8.25C13.31 8.25 14.38 9.2 14.38 10.38C14.38 11.07 14 11.68 13.44 12.07C14.14 12.46 14.6 13.13 14.6 13.9C14.6 15.12 13.44 16.1 12 16.1C10.56 16.1 9.4 15.12 9.4 13.9C9.4 13.13 9.86 12.46 10.56 12.07C10 11.68 9.63 11.07 9.63 10.38C9.63 9.2 10.69 8.25 12 8.25M12 12.65C11.39 12.65 10.9 13.14 10.9 13.75C10.9 14.36 11.39 14.85 12 14.85C12.61 14.85 13.1 14.36 13.1 13.75C13.1 13.14 12.61 12.65 12 12.65M12 9.5C11.5 9.5 11.1 9.95 11.1 10.5C11.1 11.05 11.5 11.5 12 11.5C12.5 11.5 12.9 11.05 12.9 10.5C12.9 9.95 12.5 9.5 12 9.5"; +var mdiDiceMultiple = "M19.78,3H11.22C10.55,3 10,3.55 10,4.22V8H16V14H19.78C20.45,14 21,13.45 21,12.78V4.22C21,3.55 20.45,3 19.78,3M12.44,6.67C11.76,6.67 11.21,6.12 11.21,5.44C11.21,4.76 11.76,4.21 12.44,4.21A1.23,1.23 0 0,1 13.67,5.44C13.67,6.12 13.12,6.67 12.44,6.67M18.56,12.78C17.88,12.79 17.33,12.24 17.32,11.56C17.31,10.88 17.86,10.33 18.54,10.32C19.22,10.31 19.77,10.86 19.78,11.56C19.77,12.23 19.23,12.77 18.56,12.78M18.56,6.67C17.88,6.68 17.33,6.13 17.32,5.45C17.31,4.77 17.86,4.22 18.54,4.21C19.22,4.2 19.77,4.75 19.78,5.44C19.78,6.12 19.24,6.66 18.56,6.67M4.22,10H12.78A1.22,1.22 0 0,1 14,11.22V19.78C14,20.45 13.45,21 12.78,21H4.22C3.55,21 3,20.45 3,19.78V11.22C3,10.55 3.55,10 4.22,10M8.5,14.28C7.83,14.28 7.28,14.83 7.28,15.5C7.28,16.17 7.83,16.72 8.5,16.72C9.17,16.72 9.72,16.17 9.72,15.5A1.22,1.22 0 0,0 8.5,14.28M5.44,11.22C4.77,11.22 4.22,11.77 4.22,12.44A1.22,1.22 0 0,0 5.44,13.66C6.11,13.66 6.66,13.11 6.66,12.44V12.44C6.66,11.77 6.11,11.22 5.44,11.22M11.55,17.33C10.88,17.33 10.33,17.88 10.33,18.55C10.33,19.22 10.88,19.77 11.55,19.77A1.22,1.22 0 0,0 12.77,18.55H12.77C12.77,17.88 12.23,17.34 11.56,17.33H11.55Z"; +var mdiDiceMultipleOutline = "M14 8C13.45 8 13 7.55 13 7S13.45 6 14 6C14.55 6 15 6.45 15 7C15 7.55 14.55 8 14 8M12 12V19H5V12H12M12.78 10H4.22C3.55 10 3 10.55 3 11.22V19.78C3 20.45 3.55 21 4.22 21H12.78C13.45 21 14 20.45 14 19.78V11.22C14 10.55 13.45 10 12.78 10M19.78 3H11.22C10.55 3 10 3.55 10 4.22V8H12V5H19V12H16V14H19.78C20.45 14 21 13.45 21 12.78V4.22C21 3.55 20.45 3 19.78 3M17 8C16.45 8 16 7.55 16 7S16.45 6 17 6C17.55 6 18 6.45 18 7C18 7.55 17.55 8 17 8M17 11C16.45 11 16 10.55 16 10S16.45 9 17 9C17.55 9 18 9.45 18 10C18 10.55 17.55 11 17 11M7 15C6.45 15 6 14.55 6 14S6.45 13 7 13C7.55 13 8 13.45 8 14C8 14.55 7.55 15 7 15M10 18C9.45 18 9 17.55 9 17S9.45 16 10 16C10.55 16 11 16.45 11 17C11 17.55 10.55 18 10 18"; +var mdiDigitalOcean = "M6 12H2C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22V18H8V14H12V18C15.32 18 18 15.31 18 12C18 8.69 15.31 6 12 6C8.69 6 6 8.69 6 12M8 18V21H5V18H8M3 16H5V18H3V16Z"; +var mdiDipSwitch = "M3,4H7A1,1 0 0,1 8,5V19A1,1 0 0,1 7,20H3A1,1 0 0,1 2,19V5A1,1 0 0,1 3,4M10,4H14A1,1 0 0,1 15,5V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V5A1,1 0 0,1 10,4M17,4H21A1,1 0 0,1 22,5V19A1,1 0 0,1 21,20H17A1,1 0 0,1 16,19V5A1,1 0 0,1 17,4M4,18H6V13H4V18M11,11H13V6H11V11M18,18H20V13H18V18Z"; +var mdiDirections = "M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z"; +var mdiDirectionsFork = "M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7"; +var mdiDisc = "M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiDiscAlert = "M10 14C8.9 14 8 13.1 8 12C8 10.9 8.9 10 10 10C11.1 10 12 10.9 12 12S11.1 14 10 14M10 4C5.6 4 2 7.6 2 12S5.6 20 10 20 18 16.4 18 12 14.4 4 10 4M20 13H22V7H20M20 17H22V15H20V17Z"; +var mdiDiscPlayer = "M14.5,10.37C15.54,10.37 16.38,9.53 16.38,8.5C16.38,7.46 15.54,6.63 14.5,6.63C13.46,6.63 12.63,7.46 12.63,8.5A1.87,1.87 0 0,0 14.5,10.37M14.5,1A7.5,7.5 0 0,1 22,8.5C22,10.67 21.08,12.63 19.6,14H9.4C7.93,12.63 7,10.67 7,8.5C7,4.35 10.36,1 14.5,1M6,21V22H4V21H2V15H22V21H20V22H18V21H6M4,18V19H13V18H4M15,17V19H17V17H15M19,17A1,1 0 0,0 18,18A1,1 0 0,0 19,19A1,1 0 0,0 20,18A1,1 0 0,0 19,17Z"; +var mdiDiscord = "M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z"; +var mdiDishwasher = "M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2M10,4A1,1 0 0,1 11,5A1,1 0 0,1 10,6A1,1 0 0,1 9,5A1,1 0 0,1 10,4M7,4A1,1 0 0,1 8,5A1,1 0 0,1 7,6A1,1 0 0,1 6,5A1,1 0 0,1 7,4M18,20H6V8H18V20M14.67,15.33C14.69,16.03 14.41,16.71 13.91,17.21C12.86,18.26 11.15,18.27 10.09,17.21C9.59,16.71 9.31,16.03 9.33,15.33C9.4,14.62 9.63,13.94 10,13.33C10.37,12.5 10.81,11.73 11.33,11L12,10C13.79,12.59 14.67,14.36 14.67,15.33"; +var mdiDishwasherAlert = "M16 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V4C18 2.9 17.11 2 16 2M8 4C8.55 4 9 4.45 9 5S8.55 6 8 6 7 5.55 7 5 7.45 4 8 4M5 4C5.55 4 6 4.45 6 5S5.55 6 5 6 4 5.55 4 5 4.45 4 5 4M16 20H4V8H16V20M12.67 15.33C12.69 16.03 12.41 16.71 11.91 17.21C10.86 18.26 9.15 18.27 8.09 17.21C7.59 16.71 7.31 16.03 7.33 15.33C7.4 14.62 7.63 13.94 8 13.33C8.37 12.5 8.81 11.73 9.33 11L10 10C11.79 12.59 12.67 14.36 12.67 15.33M20 15H22V17H20V15M20 7H22V13H20V7Z"; +var mdiDishwasherOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M18 20H6V8H6.11L10.5 12.37C10.31 12.69 10.15 13 10 13.33C9.63 13.94 9.4 14.62 9.33 15.33C9.31 16.03 9.59 16.71 10.09 17.21C11.15 18.27 12.86 18.26 13.91 17.21C14.16 16.97 14.35 16.68 14.5 16.36L18 19.89V20M11.2 8H18V14.8L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.2 8M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z"; +var mdiDisqus = "M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z"; +var mdiDistributeHorizontalCenter = "M8 2V5H10V19H8V22H6V19H4V5H6V2H8M16 2V7H14V17H16V22H18V17H20V7H18V2H16Z"; +var mdiDistributeHorizontalLeft = "M21 7V17H16V22H14V2H16V7H21M5 2H3V22H5V19H10V5H5V2Z"; +var mdiDistributeHorizontalRight = "M3 17V7H8V2H10V22H8V17H3M19 22H21V2H19V5H14V19H19V22Z"; +var mdiDistributeVerticalBottom = "M7 3H17V8H22V10H2V8H7V3M2 19V21H22V19H19V14H5V19H2Z"; +var mdiDistributeVerticalCenter = "M2 16H5V14H19V16H22V18H19V20H5V18H2V16M2 8H7V10H17V8H22V6H17V4H7V6H2V8Z"; +var mdiDistributeVerticalTop = "M17 21H7V16H2V14H22V16H17V21M22 5V3H2V5H5V10H19V5H22Z"; +var mdiDivingFlippers = "M20.28,3.66C19.28,3.44 18.54,2.25 17.57,2.04C16.6,1.83 15.4,2.59 14.42,2.37C13.38,2 12.22,2.13 11.28,2.71L11.21,17L11,18C10.64,19.62 11.67,21.22 13.29,21.58C14.9,21.93 16.5,20.91 16.86,19.29L17.07,18.29L23,5.28C22.39,4.35 21.39,3.76 20.28,3.66M14.91,18.86C14.79,19.41 14.25,19.76 13.7,19.65C13.14,19.53 12.79,19 12.91,18.43L13.77,14.5C13.86,13.97 14.37,13.6 14.92,13.69C15.46,13.78 15.83,14.3 15.74,14.84C15.74,14.88 15.73,14.91 15.72,14.95L14.91,18.86M9.72,21.34C9.33,20.73 9.08,20.05 9,19.34L8.24,16C8.1,15.47 8.41,14.92 9,14.76C9.07,14.75 9.15,14.75 9.22,14.76V3.43C8.31,3.43 7.22,2.86 6.38,3.06C5.54,3.26 4.69,4.44 3.72,4.66C2.61,4.76 1.61,5.35 1,6.28L6.93,19.28L7.14,20.28C7.5,21.9 9.09,22.92 10.71,22.57H10.81C10.38,22.22 10,21.81 9.72,21.34Z"; +var mdiDivingHelmet = "M16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12M19.45,7.89L18.07,8.58L18.32,9H20V15H18.33C17.84,16.03 17.11,16.92 16.21,17.6C17.85,18.11 19.1,18.91 19.67,19.86C18.69,21.1 15.62,22 12,22C8.38,22 5.31,21.1 4.33,19.86C4.9,18.91 6.15,18.11 7.79,17.6C6.89,16.92 6.16,16.03 5.67,15H4V9H5.68C6.37,7.54 7.54,6.37 9,5.68V4H15V5.68C15.68,6 16.29,6.46 16.82,7L18.55,6.14C19.93,5.42 20,4.1 20,2H22C22,4.06 22,6.62 19.45,7.89M17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12Z"; +var mdiDivingScuba = "M12,15C13.31,15 14.42,15.83 14.83,17H18A4,4 0 0,1 22,21V22H20V21A2,2 0 0,0 18,19H14.83C14.42,20.17 13.31,21 12,21A3,3 0 0,1 9,18A3,3 0 0,1 12,15M12,17A1,1 0 0,0 11,18A1,1 0 0,0 12,19A1,1 0 0,0 13,18A1,1 0 0,0 12,17M18,3A2,2 0 0,1 20,5V10A2,2 0 0,1 18,12H14.85C14.43,12 14.05,12.24 13.9,12.63C13.7,13.23 13.23,13.71 12.62,13.91C11.58,14.25 10.44,13.68 10.1,12.63C9.95,12.24 9.57,12 9.15,12H6A2,2 0 0,1 4,10V5A2,2 0 0,1 6,3H18M18,10V5H6V10H10.65C10.9,9.46 11.41,9.09 12,9C12.59,9.09 13.1,9.46 13.35,10H18Z"; +var mdiDivingScubaFlag = "M2,6L19,20H2V6M5,4L22,18V4H5Z"; +var mdiDivingScubaTank = "M19,18.5A2.5,2.5 0 0,1 16.5,21A2.5,2.5 0 0,1 14,18.5C14,17.47 14.62,16.59 15.5,16.21V6H11V7.35C12.22,7.93 13,9.15 13,10.5V22H6V10.5C6,9.15 6.78,7.93 8,7.35V6H6V4H8V3.5A1.5,1.5 0 0,1 9.5,2A1.5,1.5 0 0,1 11,3.5V4H15.5A2,2 0 0,1 17.5,6V16.21C18.38,16.59 19,17.47 19,18.5Z"; +var mdiDivingScubaTankMultiple = "M22,18.5A2.5,2.5 0 0,1 19.5,21A2.5,2.5 0 0,1 17,18.5C17,17.47 17.62,16.59 18.5,16.21V6H14V7.35C15.22,7.93 16,9.15 16,10.5V22H2V10.5C2,9.15 2.78,7.93 4,7.35V6H2V4H4V3.5A1.5,1.5 0 0,1 5.5,2A1.5,1.5 0 0,1 7,3.5V4H11V3.5A1.5,1.5 0 0,1 12.5,2A1.5,1.5 0 0,1 14,3.5V4H18.5A2,2 0 0,1 20.5,6V16.21C21.38,16.59 22,17.47 22,18.5M11,7.35V6H7V7.35C8.22,7.93 9,9.15 9,10.5C9,9.15 9.78,7.93 11,7.35Z"; +var mdiDivingSnorkel = "M16,3H4A2,2 0 0,0 2,5V10A2,2 0 0,0 4,12H7.15C7.57,12 7.95,12.24 8.1,12.63C8.44,13.68 9.58,14.25 10.62,13.91C11.23,13.71 11.7,13.23 11.9,12.63C12.05,12.24 12.43,12 12.85,12H16A2,2 0 0,0 18,10V5A2,2 0 0,0 16,3M16,10H11.35C11.1,9.46 10.59,9.09 10,9C9.41,9.09 8.9,9.46 8.65,10H4V5H16V10M22,2V15.5A6.5,6.5 0 0,1 15.5,22C13.79,22 12.15,21.32 10.93,20.12C8.95,20.58 6.88,19.79 5.71,18.12L7.62,17.29C8.5,18.22 9.84,18.5 11,18C11.2,17.91 11.39,17.8 11.56,17.67C12.4,17.05 12.87,16.04 12.78,15L14.69,14.17C15.1,16.04 14.41,18 12.9,19.17C13.66,19.71 14.57,20 15.5,20C18,20 20,18 20,15.5V2H22Z"; +var mdiDivision = "M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z"; +var mdiDivisionBox = "M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z"; +var mdiDlna = "M21.38,12.56H12.85C11.97,12.56 11.1,12.96 10.61,13.61V13.6C10.12,14.28 9.32,14.72 8.41,14.72C6.92,14.72 5.71,13.5 5.71,12C5.71,10.5 6.92,9.31 8.41,9.31C9.32,9.31 10.12,9.75 10.61,10.43V10.42C11.1,11.07 11.97,11.5 12.85,11.5H21.29C21.45,11.5 22,11.4 22,10.67C21.26,6.43 17.1,3.18 12.06,3.18C8.96,3.18 6.19,4.41 4.34,6.35C4.05,6.79 4.35,6.92 4.63,6.96H10.14C11,6.96 11.89,6.54 12.38,5.89V5.91C12.88,5.23 13.67,4.78 14.58,4.78C16.07,4.78 17.28,6 17.28,7.5C17.28,9 16.07,10.2 14.58,10.2C13.67,10.2 12.88,9.75 12.38,9.07V9.08C11.89,8.44 11,8.03 10.14,8.03H4.13L4.15,8.03C4.15,8.03 3.26,8 2.72,8.75C2.3,9.42 2,10.85 2,12C2,13.16 2.17,14.21 2.72,15.27C3.19,16.03 4.15,16 4.15,16H4.11L10.14,16C11,16 11.89,15.58 12.38,14.93V14.94C12.88,14.26 13.67,13.81 14.58,13.81C16.07,13.81 17.28,15.03 17.28,16.5C17.28,18 16.07,19.23 14.58,19.23C13.67,19.23 12.88,18.78 12.38,18.1V18.12C11.89,17.47 11,17.05 10.14,17.05H4.64C4.36,17.09 4.06,17.22 4.32,17.64C6.17,19.58 8.95,20.82 12.06,20.82C17.11,20.82 21.28,17.57 22,13.31C22,12.72 21.59,12.58 21.38,12.56"; +var mdiDna = "M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z"; +var mdiDns = "M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z"; +var mdiDnsOutline = "M19,15V19H5V15H19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13M7,18.5A1.5,1.5 0 0,1 5.5,17A1.5,1.5 0 0,1 7,15.5A1.5,1.5 0 0,1 8.5,17A1.5,1.5 0 0,1 7,18.5M19,5V9H5V5H19M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,8.5A1.5,1.5 0 0,1 5.5,7A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 8.5,7A1.5,1.5 0 0,1 7,8.5Z"; +var mdiDoNotDisturb = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z"; +var mdiDoNotDisturbOff = "M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z"; +var mdiDockBottom = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 13H4V6H20Z"; +var mdiDockLeft = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 18H9V6H20Z"; +var mdiDockRight = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z"; +var mdiDockTop = "M4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20M4 11H20V18H4V11Z"; +var mdiDockWindow = "M18 18V20H4A2 2 0 0 1 2 18V8H4V18M22 6V14A2 2 0 0 1 20 16H8A2 2 0 0 1 6 14V6A2 2 0 0 1 8 4H20A2 2 0 0 1 22 6M20 6H8V14H20Z"; +var mdiDocker = "M21.81 10.25C21.75 10.21 21.25 9.82 20.17 9.82C19.89 9.82 19.61 9.85 19.33 9.9C19.12 8.5 17.95 7.79 17.9 7.76L17.61 7.59L17.43 7.86C17.19 8.22 17 8.63 16.92 9.05C16.72 9.85 16.84 10.61 17.25 11.26C16.76 11.54 15.96 11.61 15.79 11.61H2.62C2.28 11.61 2 11.89 2 12.24C2 13.39 2.18 14.54 2.58 15.62C3.03 16.81 3.71 17.69 4.58 18.23C5.56 18.83 7.17 19.17 9 19.17C9.79 19.17 10.61 19.1 11.42 18.95C12.54 18.75 13.62 18.36 14.61 17.79C15.43 17.32 16.16 16.72 16.78 16C17.83 14.83 18.45 13.5 18.9 12.35H19.09C20.23 12.35 20.94 11.89 21.33 11.5C21.59 11.26 21.78 10.97 21.92 10.63L22 10.39L21.81 10.25M3.85 11.24H5.61C5.69 11.24 5.77 11.17 5.77 11.08V9.5C5.77 9.42 5.7 9.34 5.61 9.34H3.85C3.76 9.34 3.69 9.41 3.69 9.5V11.08C3.7 11.17 3.76 11.24 3.85 11.24M6.28 11.24H8.04C8.12 11.24 8.2 11.17 8.2 11.08V9.5C8.2 9.42 8.13 9.34 8.04 9.34H6.28C6.19 9.34 6.12 9.41 6.12 9.5V11.08C6.13 11.17 6.19 11.24 6.28 11.24M8.75 11.24H10.5C10.6 11.24 10.67 11.17 10.67 11.08V9.5C10.67 9.42 10.61 9.34 10.5 9.34H8.75C8.67 9.34 8.6 9.41 8.6 9.5V11.08C8.6 11.17 8.66 11.24 8.75 11.24M11.19 11.24H12.96C13.04 11.24 13.11 11.17 13.11 11.08V9.5C13.11 9.42 13.05 9.34 12.96 9.34H11.19C11.11 9.34 11.04 9.41 11.04 9.5V11.08C11.04 11.17 11.11 11.24 11.19 11.24M6.28 9H8.04C8.12 9 8.2 8.91 8.2 8.82V7.25C8.2 7.16 8.13 7.09 8.04 7.09H6.28C6.19 7.09 6.12 7.15 6.12 7.25V8.82C6.13 8.91 6.19 9 6.28 9M8.75 9H10.5C10.6 9 10.67 8.91 10.67 8.82V7.25C10.67 7.16 10.61 7.09 10.5 7.09H8.75C8.67 7.09 8.6 7.15 8.6 7.25V8.82C8.6 8.91 8.66 9 8.75 9M11.19 9H12.96C13.04 9 13.11 8.91 13.11 8.82V7.25C13.11 7.16 13.04 7.09 12.96 7.09H11.19C11.11 7.09 11.04 7.15 11.04 7.25V8.82C11.04 8.91 11.11 9 11.19 9M11.19 6.72H12.96C13.04 6.72 13.11 6.65 13.11 6.56V5C13.11 4.9 13.04 4.83 12.96 4.83H11.19C11.11 4.83 11.04 4.89 11.04 5V6.56C11.04 6.64 11.11 6.72 11.19 6.72M13.65 11.24H15.41C15.5 11.24 15.57 11.17 15.57 11.08V9.5C15.57 9.42 15.5 9.34 15.41 9.34H13.65C13.57 9.34 13.5 9.41 13.5 9.5V11.08C13.5 11.17 13.57 11.24 13.65 11.24"; +var mdiDoctor = "M14.84,16.26C17.86,16.83 20,18.29 20,20V22H4V20C4,18.29 6.14,16.83 9.16,16.26L12,21L14.84,16.26M8,8H16V10A4,4 0 0,1 12,14A4,4 0 0,1 8,10V8M8,7L8.41,2.9C8.46,2.39 8.89,2 9.41,2H14.6C15.11,2 15.54,2.39 15.59,2.9L16,7H8M12,3H11V4H10V5H11V6H12V5H13V4H12V3Z"; +var mdiDog = "M18,4C16.29,4 15.25,4.33 14.65,4.61C13.88,4.23 13,4 12,4C11,4 10.12,4.23 9.35,4.61C8.75,4.33 7.71,4 6,4C3,4 1,12 1,14C1,14.83 2.32,15.59 4.14,15.9C4.78,18.14 7.8,19.85 11.5,20V15.72C10.91,15.35 10,14.68 10,14C10,13 12,13 12,13C12,13 14,13 14,14C14,14.68 13.09,15.35 12.5,15.72V20C16.2,19.85 19.22,18.14 19.86,15.9C21.68,15.59 23,14.83 23,14C23,12 21,4 18,4M4.15,13.87C3.65,13.75 3.26,13.61 3,13.5C3.25,10.73 5.2,6.4 6.05,6C6.59,6 7,6.06 7.37,6.11C5.27,8.42 4.44,12.04 4.15,13.87M9,12A1,1 0 0,1 8,11C8,10.46 8.45,10 9,10A1,1 0 0,1 10,11C10,11.56 9.55,12 9,12M15,12A1,1 0 0,1 14,11C14,10.46 14.45,10 15,10A1,1 0 0,1 16,11C16,11.56 15.55,12 15,12M19.85,13.87C19.56,12.04 18.73,8.42 16.63,6.11C17,6.06 17.41,6 17.95,6C18.8,6.4 20.75,10.73 21,13.5C20.75,13.61 20.36,13.75 19.85,13.87Z"; +var mdiDogService = "M14,8L17,11V21H15V15H8L6,18V21H4V15L5,14V11L2,8L3,7L5,9H7V12A1,1 0 0,0 8,13H12A1,1 0 0,0 13,12V9L14,8M19,5V3L15,7L18,10L19,9L20,10L22,8L19,5M11.5,9.5L4.5,2.5C4.23,2.22 3.79,2.22 3.5,2.5V2.5C3.22,2.77 3.22,3.21 3.5,3.5L10.5,10.5C10.77,10.78 11.21,10.78 11.5,10.5V10.5C11.78,10.23 11.78,9.79 11.5,9.5Z"; +var mdiDogSide = "M19,3L15,7L18,10L19,9L20,10L22,8L19,5V3M3,7L2,8L5,11V14L4,15V21H6V18L8,15H15V21H17V11L14,8L13,9H5L3,7Z"; +var mdiDogSideOff = "M18 10L15 7L19 3V5L22 8L20 10L19 9L18 10M17 11L14 8L13 9H12.2L17 13.8V11M2.39 1.73L1.11 3L7.11 9H5L3 7L2 8L5 11V14L4 15V21H6V18L8 15H13.11L15 16.89V21H17V18.89L20.84 22.73L22.11 21.46L2.39 1.73Z"; +var mdiDolby = "M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z"; +var mdiDolly = "M11.97,19.88C10.93,20.26 9.78,19.72 9.4,18.69C9,17.65 9.55,16.5 10.59,16.13C11.63,15.75 12.78,16.28 13.16,17.31C13.54,18.35 13,19.5 11.97,19.88M9.9,14.25C7.83,15 6.76,17.3 7.5,19.38C8.28,21.45 10.58,22.5 12.66,21.75C14.73,21 15.79,18.7 15.04,16.63C14.28,14.55 11.97,13.5 9.9,14.25M15.94,4.58L9.37,7L10.75,10.74L17.32,8.33M20.32,13.62L15.54,15.37C15.71,15.66 15.85,15.96 15.97,16.28C16.09,16.6 16.17,16.93 16.22,17.25L21,15.5M19.54,8.58L11.09,11.68L11.58,13C12.83,13.09 14,13.64 14.89,14.55L20.92,12.34M2,2V4H5.09L8.66,13.75C8.94,13.57 9.24,13.43 9.56,13.31C9.88,13.19 10.21,13.11 10.53,13.06L6.5,2"; +var mdiDomain = "M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z"; +var mdiDomainOff = "M12,19H16L14,17H12V19M10,15V13H8V15H10M10,19V17H8V19H10M6,11V9H4V11H6M6,15V13H4V15H6M6,19V17H4V19H6M1.31,1.78L22.31,22.69L21,24L18,21H2V5L0.09,3.09L1.31,1.78M16,11H18V13H16V11M8,5V5.91L5.11,3H12V7H22V19.92L20,17.91V9H12V9.89L9.09,7H10V5H8Z"; +var mdiDomainPlus = "M12 7V3H2V21H13.35A5.8 5.8 0 0 1 13 19H12V17H13.35A5 5 0 0 1 14 15.69V15H12V13H14V11H12V9H20V13.09A5.58 5.58 0 0 1 22 13.81V7M6 19H4V17H6M6 15H4V13H6M6 11H4V9H6M6 7H4V5H6M10 19H8V17H10M10 15H8V13H10M10 11H8V9H10M10 7H8V5H10M16 13H18V11H16M16 11V13H18V11M16 11V13H18V11M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; +var mdiDomainRemove = "M12 7V3H2V21H13.35A5.8 5.8 0 0 1 13 19H12V17H13.35A5 5 0 0 1 14 15.69V15H12V13H14V11H12V9H20V13.09A5.58 5.58 0 0 1 22 13.81V7M6 19H4V17H6M6 15H4V13H6M6 11H4V9H6M6 7H4V5H6M10 19H8V17H10M10 15H8V13H10M10 11H8V9H10M10 7H8V5H10M16 13H18V11H16M16 11V13H18V11M16 11V13H18V11M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; +var mdiDomeLight = "M21 10C21 14.97 16.97 19 12 19C7.03 19 3 14.97 3 10V9.03C3 8.76 3.11 8.5 3.3 8.3C3.5 8.11 3.76 8 4.03 8H20C20.25 8 20.5 8.11 20.7 8.3C20.89 8.5 21 8.75 21 9V10M5 10C5 13.86 8.14 17 12 17C15.86 17 19 13.86 19 10H5M20 6V7H4V6C4 5.73 4.1 5.5 4.29 5.29C4.5 5.1 4.73 5 5 5H10V3H14V5H19C19.25 5 19.5 5.11 19.7 5.3C19.89 5.5 20 5.75 20 6Z"; +var mdiDominoMask = "M15.83 9.81C14.7 9.7 13.69 10.38 13.46 11.5C13.46 11.84 14.81 12.29 16.05 12.29C17.29 12.29 18.41 11.5 18.41 11.28C18.41 11.05 17.63 9.93 15.83 9.81M8.18 9.81C6.38 9.93 5.59 10.94 5.59 11.27C5.59 11.5 6.82 12.29 7.95 12.29S10.54 11.84 10.54 11.5C10.31 10.38 9.19 9.7 8.18 9.81M16.95 16C15.04 16 13.8 13.75 12 13.75S8.85 16 7.05 16C4.69 16 3 13.86 3 10.04C3 7.68 3.68 7 6.71 7S10.54 8.24 12 8.24 14.36 7 17.29 7 21 7.79 21 10.04C21 13.86 19.31 16 16.95 16Z"; +var mdiDonkey = "M21.34,10.35L21.27,10.28L21.18,10.19L18,7V6A0.5,0.5 0 0,0 17.5,5.5C17.36,5.5 17.22,5.56 17.13,5.66L13.46,9H7C6.32,9 5.69,9.35 5.32,9.92L2.62,12.59C2.29,13.04 2.39,13.66 2.84,14C3.18,14.24 3.65,14.25 4,14L5,13.07V19H8V15H13V19H16V13.83C16,13.3 16.21,12.79 16.59,12.42L18,11L20,12V12C20.15,12.08 20.32,12.13 20.5,12.13C21.1,12.11 21.59,11.61 21.58,11C21.57,10.76 21.5,10.53 21.34,10.35Z"; +var mdiDoor = "M8,3C6.89,3 6,3.89 6,5V21H18V5C18,3.89 17.11,3 16,3H8M8,5H16V19H8V5M13,11V13H15V11H13Z"; +var mdiDoorClosed = "M16,11H18V13H16V11M12,3H19C20.11,3 21,3.89 21,5V19H22V21H2V19H10V5C10,3.89 10.89,3 12,3M12,5V19H19V5H12Z"; +var mdiDoorClosedLock = "M16 11H18V13H16V11M12 3H19A2 2 0 0 1 21 5V19H22V21H2V19H10V5A2 2 0 0 1 12 3M12 5V19H19V5M6.2 5H2.8V4.5A1.7 1.7 0 0 1 6.2 4.5M7 5V4.5A2.5 2.5 0 0 0 2 4.5V5A1 1 0 0 0 1 6V10A1 1 0 0 0 2 11H7A1 1 0 0 0 8 10V6A1 1 0 0 0 7 5"; +var mdiDoorOpen = "M12,3C10.89,3 10,3.89 10,5H3V19H2V21H22V19H21V5C21,3.89 20.11,3 19,3H12M12,5H19V19H12V5M5,11H7V13H5V11Z"; +var mdiDoorbell = "M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M16 2H8C6.9 2 6 2.9 6 4V20C6 21.1 6.9 22 8 22H16C17.1 22 18 21.1 18 20V4C18 2.9 17.1 2 16 2M16 20H8V4H16V20Z"; +var mdiDoorbellVideo = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M18 4V20C18 21.1 17.11 22 16 22H8C6.9 22 6 21.11 6 20V4C6 2.9 6.9 2 8 2H16C17.11 2 18 2.9 18 4M10.5 7C10.5 7.83 11.17 8.5 12 8.5S13.5 7.83 13.5 7 12.83 5.5 12 5.5 10.5 6.17 10.5 7M16 10H8V20H16V10Z"; +var mdiDotNet = "M2,15A1,1 0 0,1 3,16A1,1 0 0,1 2,17A1,1 0 0,1 1,16A1,1 0 0,1 2,15M21,17H19V9H17V7H23V9H21V17M16,7V9H14V11H16V13H14V15H16V17H12V7H16M11,7V17H9L6,11V17H4V7H6L9,13V7H11Z"; +var mdiDotsGrid = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M12 10C13.1 10 14 10.9 14 12S13.1 14 12 14 10 13.1 10 12 10.9 10 12 10M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M6 10C7.1 10 8 10.9 8 12S7.1 14 6 14 4 13.1 4 12 4.9 10 6 10M6 4C7.1 4 8 4.9 8 6S7.1 8 6 8 4 7.1 4 6 4.9 4 6 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16M18 10C19.1 10 20 10.9 20 12S19.1 14 18 14 16 13.1 16 12 16.9 10 18 10M18 4C19.1 4 20 4.9 20 6S19.1 8 18 8 16 7.1 16 6 16.9 4 18 4Z"; +var mdiDotsHexagon = "M16 12C16 10.9 16.9 10 18 10S20 10.9 20 12 19.1 14 18 14 16 13.1 16 12M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12M4 12C4 10.9 4.9 10 6 10S8 10.9 8 12 7.1 14 6 14 4 13.1 4 12M13 18C13 16.9 13.9 16 15 16S17 16.9 17 18 16.1 20 15 20 13 19.1 13 18M7 18C7 16.9 7.9 16 9 16S11 16.9 11 18 10.1 20 9 20 7 19.1 7 18M13 6C13 4.9 13.9 4 15 4S17 4.9 17 6 16.1 8 15 8 13 7.1 13 6M7 6C7 4.9 7.9 4 9 4S11 4.9 11 6 10.1 8 9 8 7 7.1 7 6"; +var mdiDotsHorizontal = "M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z"; +var mdiDotsHorizontalCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.5,10.5A1.5,1.5 0 0,0 5,12A1.5,1.5 0 0,0 6.5,13.5A1.5,1.5 0 0,0 8,12A1.5,1.5 0 0,0 6.5,10.5M17.5,10.5A1.5,1.5 0 0,0 16,12A1.5,1.5 0 0,0 17.5,13.5A1.5,1.5 0 0,0 19,12A1.5,1.5 0 0,0 17.5,10.5Z"; +var mdiDotsHorizontalCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5M7.5,10.5A1.5,1.5 0 0,1 9,12A1.5,1.5 0 0,1 7.5,13.5A1.5,1.5 0 0,1 6,12A1.5,1.5 0 0,1 7.5,10.5M16.5,10.5A1.5,1.5 0 0,1 18,12A1.5,1.5 0 0,1 16.5,13.5A1.5,1.5 0 0,1 15,12A1.5,1.5 0 0,1 16.5,10.5Z"; +var mdiDotsSquare = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M6 10C7.1 10 8 10.9 8 12S7.1 14 6 14 4 13.1 4 12 4.9 10 6 10M6 4C7.1 4 8 4.9 8 6S7.1 8 6 8 4 7.1 4 6 4.9 4 6 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16M18 10C19.1 10 20 10.9 20 12S19.1 14 18 14 16 13.1 16 12 16.9 10 18 10M18 4C19.1 4 20 4.9 20 6S19.1 8 18 8 16 7.1 16 6 16.9 4 18 4Z"; +var mdiDotsTriangle = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M15 10C16.1 10 17 10.9 17 12S16.1 14 15 14 13 13.1 13 12 13.9 10 15 10M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M9 10C10.1 10 11 10.9 11 12S10.1 14 9 14 7 13.1 7 12 7.9 10 9 10M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16"; +var mdiDotsVertical = "M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z"; +var mdiDotsVerticalCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5A1.5,1.5 0 0,0 10.5,12M10.5,17.5A1.5,1.5 0 0,0 12,19A1.5,1.5 0 0,0 13.5,17.5A1.5,1.5 0 0,0 12,16A1.5,1.5 0 0,0 10.5,17.5M10.5,6.5A1.5,1.5 0 0,0 12,8A1.5,1.5 0 0,0 13.5,6.5A1.5,1.5 0 0,0 12,5A1.5,1.5 0 0,0 10.5,6.5Z"; +var mdiDotsVerticalCircleOutline = "M10.5,12A1.5,1.5 0 0,1 12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12M10.5,16.5A1.5,1.5 0 0,1 12,15A1.5,1.5 0 0,1 13.5,16.5A1.5,1.5 0 0,1 12,18A1.5,1.5 0 0,1 10.5,16.5M10.5,7.5A1.5,1.5 0 0,1 12,6A1.5,1.5 0 0,1 13.5,7.5A1.5,1.5 0 0,1 12,9A1.5,1.5 0 0,1 10.5,7.5M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiDouban = "M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z"; +var mdiDownload = "M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"; +var mdiDownloadBox = "M5 3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3M8 17H16V15H8V17M16 10H13.5V7H10.5V10H8L12 14L16 10Z"; +var mdiDownloadBoxOutline = "M8 17V15H16V17H8M16 10L12 14L8 10H10.5V7H13.5V10H16M5 3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3M5 5V19H19V5H5Z"; +var mdiDownloadCircle = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M8 17H16V15H8V17M16 10H13.5V6H10.5V10H8L12 14L16 10Z"; +var mdiDownloadCircleOutline = "M8 17V15H16V17H8M16 10L12 14L8 10H10.5V6H13.5V10H16M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4Z"; +var mdiDownloadLock = "M5 20H14V18H5M19 9H15V3H9V9H5L12 16M22 16A1.08 1.08 0 0 1 23 17V21A1.08 1.08 0 0 1 22 22H17A1.08 1.08 0 0 1 16 21V17A1.08 1.08 0 0 1 17 16V14.5A2.5 2.5 0 0 1 22 14.5V16M21 16V14.5A1.5 1.5 0 0 0 18 14.5V16H21"; +var mdiDownloadLockOutline = "M22 16A1.08 1.08 0 0 1 23 17V21A1.08 1.08 0 0 1 22 22H17A1.08 1.08 0 0 1 16 21V17A1.08 1.08 0 0 1 17 16V14.5A2.5 2.5 0 0 1 22 14.5V16M21 16V14.5A1.5 1.5 0 0 0 18 14.5V16H21M13 5V11H14.17L12 13.17L9.83 11H11V5H13M15 3H9V9H5L12 16L19 9H15V3M14 18H5V20H14Z"; +var mdiDownloadMultiple = "M9,1V7H5L12,14L19,7H15V1H9M5,16V18H19V16H5M5,20V22H19V20H5Z"; +var mdiDownloadNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12,14.5L16.5,10H13V6H11V10H7.5L12,14.5Z"; +var mdiDownloadNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M12,14L16,10H13V6H11V10H8L12,14Z"; +var mdiDownloadOff = "M20.84 22.73L18.11 20H5V18H16.11L13.06 14.95L12 16L5 9H7.11L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M19 9H15V3H9V5.8L15.6 12.4L19 9Z"; +var mdiDownloadOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L7.11 9H5L12 16L13.06 14.95L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M11 5H13V9.8L15.6 12.4L19 9H15V3H9V5.8L11 7.8V5Z"; +var mdiDownloadOutline = "M13,5V11H14.17L12,13.17L9.83,11H11V5H13M15,3H9V9H5L12,16L19,9H15V3M19,18H5V20H19V18Z"; +var mdiDrag = "M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z"; +var mdiDragHorizontal = "M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z"; +var mdiDragHorizontalVariant = "M21 11H3V9H21V11M21 13H3V15H21V13Z"; +var mdiDragVariant = "M22.67,12L18.18,16.5L15.67,14L17.65,12L15.67,10.04L18.18,7.53L22.67,12M12,1.33L16.47,5.82L13.96,8.33L12,6.35L10,8.33L7.5,5.82L12,1.33M12,22.67L7.53,18.18L10.04,15.67L12,17.65L14,15.67L16.5,18.18L12,22.67M1.33,12L5.82,7.5L8.33,10L6.35,12L8.33,13.96L5.82,16.47L1.33,12M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10Z"; +var mdiDragVertical = "M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z"; +var mdiDragVerticalVariant = "M11 21H9V3H11V21M15 3H13V21H15V3Z"; +var mdiDramaMasks = "M8.11,19.45C5.94,18.65 4.22,16.78 3.71,14.35L2.05,6.54C1.81,5.46 2.5,4.4 3.58,4.17L13.35,2.1L13.38,2.09C14.45,1.88 15.5,2.57 15.72,3.63L16.07,5.3L20.42,6.23H20.45C21.5,6.47 22.18,7.53 21.96,8.59L20.3,16.41C19.5,20.18 15.78,22.6 12,21.79C10.42,21.46 9.08,20.61 8.11,19.45V19.45M20,8.18L10.23,6.1L8.57,13.92V13.95C8,16.63 9.73,19.27 12.42,19.84C15.11,20.41 17.77,18.69 18.34,16L20,8.18M16,16.5C15.37,17.57 14.11,18.16 12.83,17.89C11.56,17.62 10.65,16.57 10.5,15.34L16,16.5M8.47,5.17L4,6.13L5.66,13.94L5.67,13.97C5.82,14.68 6.12,15.32 6.53,15.87C6.43,15.1 6.45,14.3 6.62,13.5L7.05,11.5C6.6,11.42 6.21,11.17 6,10.81C6.06,10.2 6.56,9.66 7.25,9.5C7.33,9.5 7.4,9.5 7.5,9.5L8.28,5.69C8.32,5.5 8.38,5.33 8.47,5.17M15.03,12.23C15.35,11.7 16.03,11.42 16.72,11.57C17.41,11.71 17.91,12.24 18,12.86C17.67,13.38 17,13.66 16.3,13.5C15.61,13.37 15.11,12.84 15.03,12.23M10.15,11.19C10.47,10.66 11.14,10.38 11.83,10.53C12.5,10.67 13.03,11.21 13.11,11.82C12.78,12.34 12.11,12.63 11.42,12.5C10.73,12.33 10.23,11.8 10.15,11.19M11.97,4.43L13.93,4.85L13.77,4.05L11.97,4.43Z"; +var mdiDraw = "M9.75 20.85C11.53 20.15 11.14 18.22 10.24 17C9.35 15.75 8.12 14.89 6.88 14.06C6 13.5 5.19 12.8 4.54 12C4.26 11.67 3.69 11.06 4.27 10.94C4.86 10.82 5.88 11.4 6.4 11.62C7.31 12 8.21 12.44 9.05 12.96L10.06 11.26C8.5 10.23 6.5 9.32 4.64 9.05C3.58 8.89 2.46 9.11 2.1 10.26C1.78 11.25 2.29 12.25 2.87 13.03C4.24 14.86 6.37 15.74 7.96 17.32C8.3 17.65 8.71 18.04 8.91 18.5C9.12 18.94 9.07 18.97 8.6 18.97C7.36 18.97 5.81 18 4.8 17.36L3.79 19.06C5.32 20 7.88 21.47 9.75 20.85M20.84 5.25C21.06 5.03 21.06 4.67 20.84 4.46L19.54 3.16C19.33 2.95 18.97 2.95 18.76 3.16L17.74 4.18L19.82 6.26M11 10.92V13H13.08L19.23 6.85L17.15 4.77L11 10.92Z"; +var mdiDrawing = "M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z"; +var mdiDrawingBox = "M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiDresser = "M4 3C2.9 3 2 3.9 2 5V8H22V5C22 3.9 21.11 3 20 3H4M10 5H14V6H10V5M2 9V14H22V9H2M10 11H14V12H10V11M2 15V18C2 19.11 2.9 20 4 20V21H6V20H18V21H20V20C21.11 20 22 19.11 22 18V15H2M10 17H14V18H10V17Z"; +var mdiDresserOutline = "M4 3C2.9 3 2 3.9 2 5V18C2 19.11 2.9 20 4 20V21H6V20H18V21H20V20C21.11 20 22 19.11 22 18V5C22 3.9 21.11 3 20 3H4M4 5H20V8H4V5M10 6V7H14V6H10M4 10H20V13H4V10M10 11V12H14V11H10M4 15H20V18H4V15M10 16V17H14V16H10Z"; +var mdiDrone = "M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z"; +var mdiDropbox = "M3 6.2L8 9.39L13 6.2L8 3L3 6.2M13 6.2L18 9.39L23 6.2L18 3L13 6.2M3 12.55L8 15.74L13 12.55L8 9.35L3 12.55M18 9.35L13 12.55L18 15.74L23 12.55L18 9.35M8.03 16.8L13.04 20L18.04 16.8L13.04 13.61L8.03 16.8Z"; +var mdiDrupal = "M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z"; +var mdiDuck = "M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z"; +var mdiDumbbell = "M20.57,14.86L22,13.43L20.57,12L17,15.57L8.43,7L12,3.43L10.57,2L9.14,3.43L7.71,2L5.57,4.14L4.14,2.71L2.71,4.14L4.14,5.57L2,7.71L3.43,9.14L2,10.57L3.43,12L7,8.43L15.57,17L12,20.57L13.43,22L14.86,20.57L16.29,22L18.43,19.86L19.86,21.29L21.29,19.86L19.86,18.43L22,16.29L20.57,14.86Z"; +var mdiDumpTruck = "M20,8H19L17,8H15V14H2V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M17,12V9.5H19.5L21.46,12H17M18,7H14V13H3L1.57,8H1V6H13L14,5H18V7Z"; +var mdiEarHearing = "M17,20C16.71,20 16.44,19.94 16.24,19.85C15.53,19.5 15.03,18.97 14.53,17.47C14,15.91 13.06,15.18 12.14,14.47C11.35,13.86 10.53,13.23 9.82,11.94C9.29,11 9,9.93 9,9C9,6.2 11.2,4 14,4C16.8,4 19,6.2 19,9H21C21,5.07 17.93,2 14,2C10.07,2 7,5.07 7,9C7,10.26 7.38,11.65 8.07,12.9C9,14.55 10.05,15.38 10.92,16.05C11.73,16.67 12.31,17.12 12.63,18.1C13.23,19.92 14,20.94 15.36,21.65C15.87,21.88 16.43,22 17,22A4,4 0 0,0 21,18H19A2,2 0 0,1 17,20M7.64,2.64L6.22,1.22C4.23,3.21 3,5.96 3,9C3,12.04 4.23,14.79 6.22,16.78L7.63,15.37C6,13.74 5,11.5 5,9C5,6.5 6,4.26 7.64,2.64M11.5,9A2.5,2.5 0 0,0 14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9Z"; +var mdiEarHearingOff = "M1,4.27L2.28,3L20,20.72L18.73,22L12.91,16.18C12.19,16.74 11.67,17.19 11.37,18.1C10.77,19.92 10,20.94 8.64,21.65C8.13,21.88 7.57,22 7,22A4,4 0 0,1 3,18H5A2,2 0 0,0 7,20C7.29,20 7.56,19.94 7.76,19.85C8.47,19.5 8.97,18.97 9.47,17.47C9.91,16.12 10.69,15.39 11.5,14.76L5.04,8.31C5,8.54 5,8.77 5,9H3C3,8.17 3.14,7.39 3.39,6.66L1,4.27M14.18,11.94C14.71,11 15,9.93 15,9C15,6.2 12.8,4 10,4C8.81,4 7.74,4.39 6.89,5.06L5.46,3.63C6.67,2.61 8.25,2 10,2C13.93,2 17,5.07 17,9C17,10.26 16.62,11.65 15.93,12.9L15.47,13.65L14.03,12.2L14.18,11.94M16.36,2.64L17.78,1.22C19.77,3.21 21,5.96 21,9C21,11.83 19.93,14.41 18.18,16.36L16.77,14.94C18.15,13.36 19,11.28 19,9C19,6.5 18,4.26 16.36,2.64M12.5,9C12.5,9.5 12.36,9.93 12.13,10.31L8.69,6.87C9.07,6.64 9.5,6.5 10,6.5A2.5,2.5 0 0,1 12.5,9Z"; +var mdiEarth = "M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiEarthArrowRight = "M19 21V19H15V17H19V15L22 18L19 21M12 18C12 15.8 13.2 13.9 15 12.8C14.9 12.3 14.5 12 14 12H8V10H10C10.6 10 11 9.6 11 9V7H13C14.1 7 15 6.1 15 5V4.6C17.9 5.8 20 8.6 20 12V12.3C20.7 12.5 21.3 12.9 21.9 13.4C22 13 22 12.5 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22C12.5 22 13 22 13.4 21.9C12.5 20.8 12 19.5 12 18M11 19.9C7 19.4 4 16.1 4 12C4 11.4 4.1 10.8 4.2 10.2L9 15V16C9 17.1 9.9 18 11 18V19.9Z"; +var mdiEarthBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z"; +var mdiEarthBoxMinus = "M22 17V19H14V17H22M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z"; +var mdiEarthBoxOff = "M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z"; +var mdiEarthBoxPlus = "M17 14H19V17H22V19H19V22H17V19H14V17H17V14M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z"; +var mdiEarthBoxRemove = "M14.46 15.88L15.88 14.46L18 16.59L20.12 14.47L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.47 15.88M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z"; +var mdiEarthMinus = "M14 17H22V19H14V17M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z"; +var mdiEarthOff = "M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z"; +var mdiEarthPlus = "M17 14H19V17H22V19H19V22H17V19H14V17H17V14M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z"; +var mdiEarthRemove = "M14.46 15.88L15.88 14.46L18 16.59L20.12 14.47L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.47 15.88M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z"; +var mdiEgg = "M19.5,14.5A7.5,7.5 0 0,1 12,22A7.5,7.5 0 0,1 4.5,14.5C4.5,10.36 7.86,2 12,2C16.14,2 19.5,10.36 19.5,14.5Z"; +var mdiEggEaster = "M6.89,6.36C8.23,3.91 10,2 12,2C14,2 15.77,3.91 17.11,6.36C16.26,6.57 15.5,7.07 15,7.77C13.79,6.11 11.46,5.75 9.8,6.97C9.5,7.19 9.22,7.46 9,7.77C8.5,7.07 7.74,6.57 6.89,6.36M15,18.06L12,15.06L9,18.06L6,15.06L4.73,16.33C5.75,20.35 9.83,22.77 13.84,21.76C16.5,21.08 18.59,19 19.27,16.33L18,15.06L15,18.06M9,15.94L12,12.94L15,15.94L18,12.94L19.5,14.44C19.37,12.13 18.8,9.86 17.81,7.76C16.65,7.86 15.75,8.83 15.75,10H14.25A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10H8.25C8.25,8.83 7.35,7.86 6.19,7.76C5.2,9.86 4.63,12.13 4.5,14.44L6,12.94L9,15.94Z"; +var mdiEggOff = "M22.1 21.5L2.4 1.7L1.1 3L6.1 8C5.1 10.3 4.5 12.8 4.5 14.5C4.5 18.6 7.9 22 12 22C14.2 22 16.2 21 17.6 19.5L20.8 22.7L22.1 21.5M19.5 14.5C19.5 10.4 16.1 2 12 2C10.5 2 9.1 3.1 7.9 4.7L19.3 16.1C19.4 15.6 19.5 15.1 19.5 14.5Z"; +var mdiEggOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.1 8C5.1 10.28 4.5 12.76 4.5 14.5C4.5 18.64 7.86 22 12 22C14.23 22 16.22 21 17.59 19.5L20.84 22.73L22.11 21.46M12 20C8.97 20 6.5 17.53 6.5 14.5C6.5 13.08 6.95 11.25 7.63 9.5L16.17 18.06C15.16 19.24 13.67 20 12 20M9.36 6.16L7.92 4.72C9.1 3.11 10.5 2 12 2C16.14 2 19.5 10.36 19.5 14.5C19.5 15.06 19.43 15.6 19.32 16.12L17.5 14.29C17.38 10.46 14.28 4 12 4C11.17 4 10.22 4.87 9.36 6.16Z"; +var mdiEggOutline = "M12 4C14.32 4 17.5 10.7 17.5 14.5C17.5 17.53 15.03 20 12 20S6.5 17.53 6.5 14.5C6.5 10.7 9.68 4 12 4M12 2C7.86 2 4.5 10.36 4.5 14.5C4.5 18.64 7.86 22 12 22S19.5 18.64 19.5 14.5C19.5 10.36 16.14 2 12 2Z"; +var mdiEiffelTower = "M8.21 17C8.65 16.15 9.06 15.16 9.44 14H9V12H10C10.61 9.4 11 6.13 11 2H13C13 6.13 13.4 9.4 14 12H15V14H14.56C14.94 15.16 15.35 16.15 15.79 17H17L17 19L19 22H16.58C15.81 20.24 14.05 19 12 19C9.95 19 8.19 20.24 7.42 22H5L7 19L6.97 17H8.21M12.59 14H11.41C11.07 15.13 10.69 16.13 10.28 17H13.72C13.32 16.13 12.93 15.13 12.59 14Z"; +var mdiEightTrack = "M7,2L5,5V16L6,20C6.27,21.07 6.9,22 8,22H16A2,2 0 0,0 18,20L19,16V5L17,2H15V3H13V2H7M7,6H17V16H7V6Z"; +var mdiEject = "M12,5L5.33,15H18.67M5,17H19V19H5V17Z"; +var mdiEjectOutline = "M5,17H19V19H5V17M12,5L5.33,15H18.67L12,5M12,8.6L14.93,13H9.07L12,8.6Z"; +var mdiElectricSwitch = "M1,11H3.17C3.58,9.83 4.69,9 6,9C6.65,9 7.25,9.21 7.74,9.56L14.44,4.87L15.58,6.5L8.89,11.2C8.96,11.45 9,11.72 9,12A3,3 0 0,1 6,15C4.69,15 3.58,14.17 3.17,13H1V11M23,11V13H20.83C20.42,14.17 19.31,15 18,15A3,3 0 0,1 15,12A3,3 0 0,1 18,9C19.31,9 20.42,9.83 20.83,11H23M6,11A1,1 0 0,0 5,12A1,1 0 0,0 6,13A1,1 0 0,0 7,12A1,1 0 0,0 6,11M18,11A1,1 0 0,0 17,12A1,1 0 0,0 18,13A1,1 0 0,0 19,12A1,1 0 0,0 18,11Z"; +var mdiElectricSwitchClosed = "M20.83 11A3 3 0 0 0 15.18 11H8.82A3 3 0 0 0 3.17 11H1V13H3.17A3 3 0 0 0 8.82 13H15.18A3 3 0 0 0 20.83 13H23V11M6 13A1 1 0 1 1 7 12A1 1 0 0 1 6 13M18 13A1 1 0 1 1 19 12A1 1 0 0 1 18 13Z"; +var mdiElectronFramework = "M12 22C10.33 22 8.84 20.5 7.9 17.93C7.83 17.73 7.93 17.5 8.14 17.44C8.34 17.36 8.56 17.47 8.63 17.67C9.44 19.9 10.7 21.23 12 21.23C12.94 21.23 13.87 20.55 14.62 19.31C14.73 19.13 14.96 19.07 15.15 19.18C15.33 19.29 15.39 19.53 15.28 19.71C14.38 21.19 13.22 22 12 22M15.91 17.72C15.87 17.72 15.83 17.71 15.8 17.7C15.59 17.63 15.5 17.42 15.54 17.21C16 15.81 16.22 14.18 16.22 12.5C16.22 8.65 14.97 5.24 13.19 4.14C12.94 4.5 12.5 4.78 12 4.78C11.24 4.78 10.61 4.16 10.61 3.39C10.61 2.62 11.24 2 12 2C12.77 2 13.4 2.61 13.41 3.37C15.53 4.5 17 8.21 17 12.5C17 14.25 16.75 15.96 16.28 17.45C16.23 17.61 16.08 17.72 15.91 17.72M12 2.77C11.66 2.77 11.38 3.05 11.38 3.39C11.38 3.73 11.67 4 12 4C12.35 4 12.64 3.73 12.64 3.39C12.64 3.05 12.35 2.77 12 2.77M4.08 18.54C3.31 18.54 2.68 17.91 2.68 17.15C2.68 16.66 2.94 16.22 3.33 15.97C3.19 13.56 5.68 10.41 9.5 8.22C11.09 7.32 12.75 6.67 14.32 6.34C14.5 6.29 14.73 6.42 14.77 6.63C14.82 6.84 14.69 7.05 14.5 7.09C13 7.41 11.41 8.03 9.9 8.89C6.46 10.86 4.1 13.68 4.1 15.76C4.86 15.77 5.5 16.39 5.5 17.15C5.5 17.92 4.85 18.54 4.08 18.54M4.08 16.53C3.74 16.53 3.46 16.81 3.46 17.15C3.46 17.5 3.74 17.77 4.08 17.77S4.71 17.5 4.71 17.15C4.71 16.81 4.42 16.53 4.08 16.53M18.5 13.44C18.43 13.44 18.34 13.41 18.27 13.35C18.11 13.21 18.09 12.97 18.23 12.8C19.77 11 20.3 9.26 19.64 8.14C19.17 7.33 18.1 6.88 16.63 6.86C16.41 6.86 16.24 6.68 16.25 6.47C16.25 6.26 16.43 6.1 16.64 6.09C18.39 6.11 19.7 6.7 20.31 7.75C21.15 9.19 20.6 11.21 18.82 13.3C18.74 13.39 18.63 13.44 18.5 13.44M16.5 18.9C14.5 18.9 11.94 18.16 9.5 16.77C7.95 15.88 6.57 14.79 5.5 13.63C5.35 13.47 5.36 13.23 5.5 13.08C5.68 12.94 5.92 12.95 6.07 13.11C7.08 14.21 8.4 15.25 9.89 16.1C13.2 18 16.77 18.63 18.65 17.72C18.57 17.55 18.5 17.35 18.5 17.15C18.5 16.38 19.15 15.76 19.92 15.76C20.69 15.76 21.32 16.38 21.32 17.15C21.32 17.92 20.69 18.54 19.92 18.54C19.64 18.54 19.39 18.46 19.17 18.32C18.47 18.71 17.56 18.9 16.5 18.9M19.5 17.63C19.63 17.71 19.77 17.77 19.92 17.77C20.27 17.77 20.55 17.5 20.55 17.15C20.55 16.81 20.27 16.53 19.92 16.53S19.3 16.81 19.3 17.15C19.3 17.29 19.35 17.42 19.43 17.53C19.47 17.55 19.5 17.59 19.5 17.63M4.46 12C4.33 12 4.2 11.92 4.13 11.8C3.23 10.25 3.08 8.81 3.7 7.74C4.54 6.3 6.58 5.76 9.31 6.25C9.5 6.29 9.66 6.5 9.62 6.7C9.59 6.91 9.39 7.05 9.18 7C6.82 6.59 5 7 4.37 8.13C3.89 8.95 4.04 10.11 4.8 11.41C4.9 11.6 4.84 11.83 4.65 11.94C4.59 11.97 4.53 12 4.46 12M12.21 13.4C11.71 13.5 11.21 13.19 11.11 12.69C11 12.2 11.32 11.71 11.81 11.6C12.31 11.5 12.81 11.81 12.91 12.31C13 12.8 12.7 13.29 12.21 13.4Z"; +var mdiElephant = "M19.5,15.5A0.5,0.5 0 0,1 19,16A0.5,0.5 0 0,1 18.5,15.5V8.5C18.5,6.57 16.43,5 14.5,5H6A4,4 0 0,0 2,9V19H6V15H11V19H15V14.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 16,14.5V16A3,3 0 0,0 19,19A3,3 0 0,0 22,16V14H19.5V15.5Z"; +var mdiElevationDecline = "M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z"; +var mdiElevationRise = "M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z"; +var mdiElevator = "M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z"; +var mdiElevatorDown = "M7 10L11 6H8V2H6V6H3L7 10M17 10L13 6H16V2H18V6H21L17 10M7 12H17C18.11 12 19 12.9 19 14V20C19 21.11 18.11 22 17 22H7C5.9 22 5 21.11 5 20V14C5 12.9 5.9 12 7 12M7 14V20H17V14H7Z"; +var mdiElevatorPassenger = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M8 5C8.8 5 9.5 5.7 9.5 6.5S8.8 8 8 8 6.5 7.3 6.5 6.5 7.2 5 8 5M11 14H9.5V19H6.5V14H5V11C5 9.9 5.9 9 7 9H9C10.1 9 11 9.9 11 11V14M15.9 19L13 14.2H18.8L15.9 19M13 10L16 5L19 10H13Z"; +var mdiElevatorUp = "M7 2L11 6H8V10H6V6H3L7 2M17 2L13 6H16V10H18V6H21L17 2M7 12H17C18.11 12 19 12.9 19 14V20C19 21.11 18.11 22 17 22H7C5.9 22 5 21.11 5 20V14C5 12.9 5.9 12 7 12M7 14V20H17V14H7Z"; +var mdiEllipse = "M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z"; +var mdiEllipseOutline = "M12,6C16.41,6 20,8.69 20,12C20,15.31 16.41,18 12,18C7.59,18 4,15.31 4,12C4,8.69 7.59,6 12,6M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z"; +var mdiEmail = "M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; +var mdiEmailAlert = "M18 8L10 13L2 8V6L10 11L18 6M18 4H2C.9 4 0 4.9 0 6V18C0 19.1 .9 20 2 20H18C19.1 20 20 19.1 20 18V6C20 4.9 19.1 4 18 4M24 7H22V13H24V7M24 15H22V17H24V15Z"; +var mdiEmailAlertOutline = "M24 7H22V13H24V7M24 15H22V17H24V15M20 6C20 4.9 19.1 4 18 4H2C.9 4 0 4.9 0 6V18C0 19.1 .9 20 2 20H18C19.1 20 20 19.1 20 18V6M18 6L10 11L2 6H18M18 18H2V8L10 13L18 8V18Z"; +var mdiEmailBox = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M6.4,6.5H17.6C18.37,6.5 19,7.12 19,7.9V16.1A1.4,1.4 0 0,1 17.6,17.5H6.4C5.63,17.5 5,16.87 5,16.1V7.9C5,7.12 5.62,6.5 6.4,6.5M6,8V10L12,14L18,10V8L12,12L6,8Z"; +var mdiEmailCheck = "M21,13.34C20.37,13.12 19.7,13 19,13A6,6 0 0,0 13,19C13,19.34 13.03,19.67 13.08,20H3A2,2 0 0,1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13.34M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M3,6V8L11,13L19,8V6L11,11L3,6Z"; +var mdiEmailCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13 18H3V8L11 13L19 8V13H21V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H13V18M19 6L11 11L3 6H19Z"; +var mdiEmailEdit = "M21,12.13C20.85,12.14 20.71,12.19 20.61,12.3L19.61,13.3L21.66,15.3L22.66,14.3C22.88,14.09 22.88,13.74 22.66,13.53L21.42,12.3C21.32,12.19 21.18,12.14 21.04,12.13M19.04,13.88L13,19.94V22H15.06L21.12,15.93M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H11V19.11L19.24,10.89C19.71,10.4 20.36,10.13 21.04,10.13C21.38,10.13 21.72,10.19 22.04,10.32V6C22.04,4.88 21.12,4 20,4M20,8L12,13L4,8V6L12,11L20,6"; +var mdiEmailEditOutline = "M19.07 13.88L13 19.94V22H15.06L21.12 15.93M22.7 13.58L21.42 12.3C21.32 12.19 21.18 12.13 21.04 12.13C20.89 12.14 20.75 12.19 20.65 12.3L19.65 13.3L21.7 15.3L22.7 14.3C22.89 14.1 22.89 13.78 22.7 13.58M11 18H4V8L12 13L20 8V10H22V6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H11V18M20 6L12 11L4 6H20Z"; +var mdiEmailLock = "M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z"; +var mdiEmailMarkAsUnread = "M18.84,7H16.22L10.5,4L4,7.41V17A2,2 0 0,1 2,15V7.17C2,6.5 2.28,6.06 2.81,5.81L10.5,2L18.05,5.81C18.5,6.09 18.78,6.5 18.84,7M7,8H20A2,2 0 0,1 22,10V19A2,2 0 0,1 20,21H7A2,2 0 0,1 5,19V10A2,2 0 0,1 7,8M20,11.67V10L13.5,13.31L7,10V11.67L13.5,15L20,11.67Z"; +var mdiEmailMinus = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H14.09C14.03,19.67 14,19.34 14,19A6,6 0 0,1 20,13C20.34,13 20.67,13.03 21,13.09V6C21,4.89 20.1,4 19,4H3M3,6L11,11L19,6V8L11,13L3,8V6M16,18V20H24V18H16Z"; +var mdiEmailMinusOutline = "M16 18V20H24V18H16M14 19C14 18.66 14.04 18.33 14.09 18H3V8L11 13L19 8V13.09C19.33 13.04 19.66 13 20 13S20.67 13.04 21 13.09V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H14.09C14.04 19.67 14 19.34 14 19M19 6L11 11L3 6H19Z"; +var mdiEmailMultiple = "M22,6V4L14,9L6,4V6L14,11L22,6M22,2A2,2 0 0,1 24,4V16A2,2 0 0,1 22,18H6C4.89,18 4,17.1 4,16V4C4,2.89 4.89,2 6,2H22M2,6V20H20V22H2A2,2 0 0,1 0,20V6H2Z"; +var mdiEmailMultipleOutline = "M2 6V20H20V22H2C.895 22 0 21.11 0 20V6H2M24 4C24 2.9 23.1 2 22 2H6C4.9 2 4 2.9 4 4V16C4 17.1 4.9 18 6 18H22C23.1 18 24 17.1 24 16V4M22 4L14 9L6 4H22M22 16H6V6L14 11L22 6V16Z"; +var mdiEmailNewsletter = "M12 .64L8.23 3H5V5L2.97 6.29C2.39 6.64 2 7.27 2 8V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8C22 7.27 21.61 6.64 21.03 6.29L19 5V3H15.77M7 5H17V9.88L12 13L7 9.88M8 6V7.5H16V6M5 7.38V8.63L4 8M19 7.38L20 8L19 8.63M8 8.5V10H16V8.5Z"; +var mdiEmailOff = "M22.1 21.5L2.4 1.7L1.1 3L2.6 4.5C2.2 4.9 2 5.4 2 6V18C2 19.1 2.9 20 4 20H18.1L20.8 22.7L22.1 21.5M4 8V6L4.3 6.2L9.6 11.5L4 8M13.4 10.2L7.2 4H20C21.1 4 22 4.9 22 6V18C22 18.2 22 18.5 21.9 18.7L14.6 11.4L20 8V6L13.4 10.2Z"; +var mdiEmailOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L2.6 4.5C2.3 4.9 2 5.4 2 6V18C2 19.1 2.9 20 4 20H18.1L20.8 22.7L22.1 21.5M4 18V8L9.6 11.5L16.1 18H4M9.2 6L7.2 4H20C21.1 4 22 4.9 22 6V18C22 18.2 22 18.5 21.9 18.7L20 16.8V8L14.6 11.4L13.4 10.2L20 6H9.2Z"; +var mdiEmailOpen = "M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z"; +var mdiEmailOpenMultiple = "M6,8L14,13L22,8V8L14,3L6,8V8M24,8V18A2,2 0 0,1 22,20H6A2,2 0 0,1 4,18V8C4,7.27 4.39,6.64 4.97,6.29L14,0.64L23.03,6.29C23.61,6.64 24,7.27 24,8M2,8V22H20V24H2A2,2 0 0,1 0,22V8H2Z"; +var mdiEmailOpenMultipleOutline = "M2 8V22H20V24H2C.895 24 0 23.11 0 22V8H2M23.03 6.29L14 .64L4.97 6.29C4.39 6.64 4 7.27 4 8V18C4 19.1 4.9 20 6 20H22C23.1 20 24 19.1 24 18V8C24 7.27 23.61 6.64 23.03 6.29M22 18H6V10L14 15L22 10V18M14 13L6 8L14 3L22 8L14 13Z"; +var mdiEmailOpenOutline = "M21.03 6.29L12 .64L2.97 6.29C2.39 6.64 2 7.27 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 7.27 21.61 6.64 21.03 6.29M20 18H4V10L12 15L20 10V18M12 13L4 8L12 3L20 8L12 13Z"; +var mdiEmailOutline = "M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z"; +var mdiEmailPlus = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H14.09C14.03,19.67 14,19.34 14,19A6,6 0 0,1 20,13C20.34,13 20.67,13.03 21,13.09V6C21,4.89 20.1,4 19,4H3M3,6L11,11L19,6V8L11,13L3,8V6M19,15V18H16V20H19V23H21V20H24V18H21V15H19Z"; +var mdiEmailPlusOutline = "M19 15V18H16V20H19V23H21V20H24V18H21V15H19M14 18H3V8L11 13L19 8V13H21V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H14V18M19 6L11 11L3 6H19Z"; +var mdiEmailReceive = "M22 20H18V23L13 18.5L18 14V17H22V20M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11.35A5.8 5.8 0 0 1 11 18A6 6 0 0 1 22 14.69V6A2 2 0 0 0 20 4M20 8L12 13L4 8V6L12 11L20 6Z"; +var mdiEmailReceiveOutline = "M22 20H18V23L13 18.5L18 14V17H22V20M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11V18H4V8L12 13L20 8V15H22V6A2 2 0 0 0 20 4M12 11L4 6H20Z"; +var mdiEmailRemove = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.89 4 4 4H20C21.1 4 22 4.89 22 6V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M20 8V6L12 11L4 6V8L12 13L20 8Z"; +var mdiEmailRemoveOutline = "M13.09 18H4V8L12 13L20 8V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18M20 6L12 11L4 6H20M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; +var mdiEmailSearch = "M3,4H19A2,2 0 0,1 21,6V10.82C20,9.85 18.7,9.23 17.31,9.06L19,8V6L11,11L3,6V8L10.62,12.76C10.21,13.62 10,14.55 10,15.5C10,17.18 10.65,18.79 11.81,20H3A2,2 0 0,1 1,18V6C1,4.89 1.89,4 3,4M16.5,11C19,11 21,13 21,15.5C21,16.38 20.75,17.21 20.31,17.9L23.39,21L22,22.39L18.88,19.32C18.19,19.75 17.37,20 16.5,20C14,20 12,18 12,15.5C12,13 14,11 16.5,11M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z"; +var mdiEmailSearchOutline = "M16.5 11C19 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11M16.5 13C15.12 13 14 14.12 14 15.5S15.12 18 16.5 18 19 16.88 19 15.5 17.88 13 16.5 13M10.5 18H3V8L10.62 12.76C11.65 10.54 13.9 9 16.5 9C16.77 9 17.04 9 17.31 9.06L19 8V9.5C19.75 9.81 20.42 10.27 21 10.82V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H11.82C11.27 19.42 10.82 18.75 10.5 18M19 6L11 11L3 6H19Z"; +var mdiEmailSend = "M13 17H17V14L22 18.5L17 23V20H13V17M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11.35A5.8 5.8 0 0 1 11 18A6 6 0 0 1 22 14.69V6A2 2 0 0 0 20 4M20 8L12 13L4 8V6L12 11L20 6Z"; +var mdiEmailSendOutline = "M13 17H17V14L22 18.5L17 23V20H13V17M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11V18H4V8L12 13L20 8V14H22V6A2 2 0 0 0 20 4M12 11L4 6H20Z"; +var mdiEmailSync = "M3 4C1.89 4 1 4.89 1 6V18C1 19.11 1.9 20 3 20H13.5A6.5 6.5 0 0 1 13 17.5A6.5 6.5 0 0 1 19.5 11A6.5 6.5 0 0 1 21 11.18V6C21 4.89 20.1 4 19 4H3M3 6L11 11L19 6V8L11 13L3 8V6M19 12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5V12M15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29Z"; +var mdiEmailSyncOutline = "M3 4C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H13.5A6.5 6.5 0 0 1 13 18H3V8L11 13L19 8V11A6.5 6.5 0 0 1 19.5 11A6.5 6.5 0 0 1 21 11.18V6C21 4.9 20.1 4 19 4H3M3 6H19L11 11L3 6M19 12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5V12M15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29Z"; +var mdiEmailVariant = "M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z"; +var mdiEmber = "M22,14.22C22,14.22 17.61,17.35 14.72,17.39C11.84,17.44 12.13,15.56 12.13,15.56C12.13,15.56 22.71,11.94 19.83,4.79C18.53,2.95 17,2.37 14.89,2.42C12.76,2.46 10.17,3.76 8.46,7.6C7.64,9.44 7.41,11.18 7.24,12.5V12.5C7.24,12.5 5.32,12.88 4.32,12.04C3.32,11.2 2.77,12.04 2.77,12.04C2.77,12.04 1.03,14.2 2.75,14.87C4.46,15.54 7.12,15.82 7.12,15.82V15.82C7.36,17 8.08,19 10.17,20.6C13.3,23 19.32,20.4 19.32,20.4M11.63,12.33C11.76,7.36 15,5.18 16.15,6.27C17.27,7.36 16.86,9.7 14.72,11.16C12.59,12.63 11.63,12.33 11.63,12.33Z"; +var mdiEmby = "M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z"; +var mdiEmoticon = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8M8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.3,16.04 14.33,17.5 12,17.5Z"; +var mdiEmoticonAngry = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5V8L10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5L17,8V9.5Z"; +var mdiEmoticonAngryOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5V8L10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5L17,8V9.5"; +var mdiEmoticonConfused = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M8.5 8A1.5 1.5 0 1 1 7 9.5A1.54 1.54 0 0 1 8.5 8M17 16H13A4 4 0 0 0 9.53 18L7.8 17A6 6 0 0 1 13 14H17M15.5 11A1.5 1.5 0 1 1 17 9.5A1.54 1.54 0 0 1 15.5 11Z"; +var mdiEmoticonConfusedOutline = "M20 12A8 8 0 1 0 12 20A8 8 0 0 0 20 12M22 12A10 10 0 1 1 12 2A10 10 0 0 1 22 12M15.5 8A1.5 1.5 0 1 1 14 9.5A1.54 1.54 0 0 1 15.5 8M10 9.5A1.5 1.5 0 1 1 8.5 8A1.54 1.54 0 0 1 10 9.5M17 15H13A4 4 0 0 0 9.53 17L7.8 16A6 6 0 0 1 13 13H17Z"; +var mdiEmoticonCool = "M3.22,7.22C4.91,4.11 8.21,2 12,2C15.79,2 19.09,4.11 20.78,7.22L20,8H4L3.22,7.22M21.4,8.6C21.78,9.67 22,10.81 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.81 2.22,9.67 2.6,8.6L4,10H5C5,11.38 7.12,12.5 8.5,12.5C9.88,12.5 11.25,11.38 11.25,10H12.75C12.75,11.38 14.12,12.5 15.5,12.5C16.88,12.5 19,11.38 19,10H20L21.4,8.6M16.19,15.42L14.77,14C14.32,14.72 13.25,15.23 12,15.23C10.75,15.23 9.68,14.72 9.23,14L7.81,15.42C8.71,16.5 10.25,17.23 12,17.23C13.75,17.23 15.29,16.5 16.19,15.42Z"; +var mdiEmoticonCoolOutline = "M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"; +var mdiEmoticonCry = "M5.14,17.57C5.14,16.5 6.32,14.5 7.57,12.81C8.82,14.5 10,16.5 10,17.57A2.43,2.43 0 0,1 7.57,20C6.23,20 5.14,18.91 5.14,17.57M22,12A10,10 0 0,1 12,22C11.08,22 10.18,21.86 9.33,21.63C10.9,20.95 12,19.39 12,17.57C12,17.12 11.89,16.6 11.69,16C11.79,16 11.89,16 12,16C13.25,16 14.32,16.5 14.77,17.23L16.19,15.81C15.29,14.72 13.75,14 12,14C11.59,14 11.19,14.04 10.81,14.12C10.38,13.36 9.85,12.53 9.19,11.63L8.71,11C9.42,10.87 10,10.23 10,9.5C10,8.7 9.3,8 8.5,8C7.7,8 7,8.7 7,9.5C7,9.69 7.04,9.87 7.11,10.04L5.96,11.63C4.4,13.75 3.5,15.5 3.23,16.81C2.45,15.38 2,13.74 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M17,9.5C17,8.7 16.3,8 15.5,8C14.7,8 14,8.7 14,9.5C14,10.3 14.7,11 15.5,11C16.3,11 17,10.3 17,9.5Z"; +var mdiEmoticonCryOutline = "M7.57,20C6.23,20 5.14,18.91 5.14,17.57C5.14,16.5 6.32,14.5 7.57,12.81C8.82,14.5 10,16.5 10,17.57A2.43,2.43 0 0,1 7.57,20M12,2A10,10 0 0,0 2,12C2,13.75 2.45,15.38 3.24,16.81C3.4,16 3.81,15.07 4.31,14.17C4.11,13.5 4,12.75 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20C11.76,20 11.53,20 11.29,19.96C10.82,20.7 10.14,21.28 9.34,21.63C10.19,21.87 11.08,22 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,14C11.59,14 11.19,14.04 10.81,14.12C11.16,14.75 11.47,15.4 11.69,16C11.79,16 11.89,16 12,16C13.25,16 14.32,16.5 14.77,17.23L16.19,15.81C15.29,14.72 13.75,14 12,14M15.5,8C14.7,8 14,8.7 14,9.5C14,10.3 14.7,11 15.5,11C16.3,11 17,10.3 17,9.5C17,8.7 16.3,8 15.5,8M10,9.5C10,8.7 9.3,8 8.5,8C7.7,8 7,8.7 7,9.5C7,10.3 7.7,11 8.5,11C9.3,11 10,10.3 10,9.5"; +var mdiEmoticonDead = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M6.76,8.82L7.82,7.76L8.88,8.82L9.94,7.76L11,8.82L9.94,9.88L11,10.94L9.94,12L8.88,10.94L7.82,12L6.76,10.94L7.82,9.88L6.76,8.82M6.89,17.5C7.69,15.46 9.67,14 12,14C14.33,14 16.31,15.46 17.11,17.5H6.89M17.24,10.94L16.18,12L15.12,10.94L14.06,12L13,10.94L14.06,9.88L13,8.82L14.06,7.76L15.12,8.82L16.18,7.76L17.24,8.82L16.18,9.88L17.24,10.94Z"; +var mdiEmoticonDeadOutline = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z"; +var mdiEmoticonDevil = "M22.5,2.09C21.6,3 20.13,3.73 18.31,4.25C16.59,2.84 14.39,2 12,2C9.61,2 7.41,2.84 5.69,4.25C3.87,3.73 2.4,3 1.5,2.09C1.53,3.72 2.35,5.21 3.72,6.4C2.63,8 2,9.92 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.92 21.37,8 20.28,6.4C21.65,5.21 22.47,3.72 22.5,2.09M7.5,8.5L10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10Z"; +var mdiEmoticonDevilOutline = "M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"; +var mdiEmoticonExcited = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M8.88,7.82L11,9.94L9.94,11L8.88,9.94L7.82,11L6.76,9.94L8.88,7.82M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.31,16.04 14.33,17.5 12,17.5M16.18,11L15.12,9.94L14.06,11L13,9.94L15.12,7.82L17.24,9.94L16.18,11Z"; +var mdiEmoticonExcitedOutline = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z"; +var mdiEmoticonFrown = "M12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M15.5 8C16.33 8 17 8.67 17 9.5S16.33 11 15.5 11 14 10.33 14 9.5 14.67 8 15.5 8M8.5 8C9.33 8 10 8.67 10 9.5S9.33 11 8.5 11 7 10.33 7 9.5 7.67 8 8.5 8M6.89 17C7.69 14.96 9.67 13.5 12 13.5S16.31 14.96 17.11 17H6.89Z"; +var mdiEmoticonFrownOutline = "M12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12 20C7.58 20 4 16.42 4 12S7.58 4 12 4 20 7.58 20 12 16.42 20 12 20M15.5 11C16.33 11 17 10.33 17 9.5S16.33 8 15.5 8 14 8.67 14 9.5 14.67 11 15.5 11M8.5 11C9.33 11 10 10.33 10 9.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11M12 13.5C9.67 13.5 7.69 14.96 6.89 17H17.11C16.31 14.96 14.33 13.5 12 13.5Z"; +var mdiEmoticonHappy = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11Z"; +var mdiEmoticonHappyOutline = "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"; +var mdiEmoticonKiss = "M18.9,18.94L15.94,16C15.76,15.79 15.55,15.5 15.55,15.05A1.3,1.3 0 0,1 16.85,13.75C17.19,13.75 17.53,13.89 17.77,14.15L18.91,15.26L20.03,14.13C20.27,13.89 20.61,13.75 20.95,13.75A1.3,1.3 0 0,1 22.25,15.05C22.25,15.39 22.11,15.73 21.87,15.97L18.9,18.94M17.46,19.62C15.72,21.1 13.47,22 11,22A10,10 0 0,1 1,12A10,10 0 0,1 11,2A10,10 0 0,1 21,12C21,12.09 21,12.17 20.95,12.25C20.21,12.25 19.5,12.55 18.97,13.07L18.9,13.14L18.84,13.09C18.32,12.55 17.6,12.25 16.85,12.25A2.8,2.8 0 0,0 14.05,15.05C14.05,15.78 14.34,16.5 14.87,17.03L17.46,19.62M13,9.5C13,10.3 13.7,11 14.5,11C15.3,11 16,10.3 16,9.5C16,8.7 15.3,8 14.5,8C13.7,8 13,8.7 13,9.5M9,9.5C9,8.7 8.3,8 7.5,8C6.7,8 6,8.7 6,9.5C6,10.3 6.7,11 7.5,11C8.3,11 9,10.3 9,9.5M12.94,15.18L14,14.12L11.88,12L10.82,13.06L11.88,14.12L10.82,15.18L11.88,16.24L10.82,17.3L11.88,18.36L14,16.24L12.94,15.18Z"; +var mdiEmoticonKissOutline = "M9,9.5C9,10.3 8.3,11 7.5,11C6.7,11 6,10.3 6,9.5C6,8.7 6.7,8 7.5,8C8.3,8 9,8.7 9,9.5M16,9.5C16,10.3 15.3,11 14.5,11C13.7,11 13,10.3 13,9.5C13,8.7 13.7,8 14.5,8C15.3,8 16,8.7 16,9.5M14,14.12L11.88,12L10.82,13.06L11.88,14.12L10.82,15.18L11.88,16.24L10.82,17.3L11.88,18.36L14,16.24L12.94,15.18L14,14.12M16.85,13A2.05,2.05 0 0,0 14.8,15.05C14.8,15.62 15.03,16.12 15.4,16.5L18.9,20L22.4,16.5C22.77,16.13 23,15.61 23,15.05A2.05,2.05 0 0,0 20.95,13C20.4,13 19.87,13.23 19.5,13.6L18.9,14.2L18.3,13.61C17.93,13.23 17.4,13 16.85,13M15,18.92C13.82,19.6 12.46,20 11,20A8,8 0 0,1 3,12A8,8 0 0,1 11,4C15.26,4 18.73,7.33 19,11.5C19.58,11.19 20.26,11 20.95,11C20.45,5.95 16.18,2 11,2A10,10 0 0,0 1,12A10,10 0 0,0 11,22C13,22 14.88,21.4 16.45,20.38L15,18.92Z"; +var mdiEmoticonLol = "M15.07 8.93V4.93A4.06 4.06 0 0 1 15.73 2.72A10 10 0 0 0 2.73 15.72A4.06 4.06 0 0 1 4.94 15.06H8.94V19.06A4.06 4.06 0 0 1 8.28 21.27A10 10 0 0 0 21.28 8.27A4.06 4.06 0 0 1 19.07 8.93M11 6H12.5V7.5H14V9H11M7.5 14V12.5H6V11H9V14M15.89 15.9A5.5 5.5 0 0 1 9.8 17L17 9.8A5.5 5.5 0 0 1 15.89 15.89M4.89 21.08A2 2 0 0 1 2.89 19.08A2 2 0 0 1 4.89 17.08H6.89V19.08A2 2 0 0 1 4.93 21.07M19.07 2.93A2 2 0 0 1 21.07 4.93A2 2 0 0 1 19.07 6.93H17.07V4.93A2 2 0 0 1 19.07 2.93Z"; +var mdiEmoticonLolOutline = "M6 11V12.5H7.5V14H9V11M12.5 6H11V9H14V7.5H12.5M9.8 17A5.5 5.5 0 0 0 17 9.8M6.34 6.34A8 8 0 0 1 15.08 4.62A4.11 4.11 0 0 1 15.73 2.72A10 10 0 0 0 2.73 15.72A4.11 4.11 0 0 1 4.63 15.07A8 8 0 0 1 6.34 6.34M17.66 17.66A8 8 0 0 1 8.92 19.38A4.11 4.11 0 0 1 8.27 21.28A10 10 0 0 0 21.27 8.28A4.11 4.11 0 0 1 19.37 8.93A8 8 0 0 1 17.66 17.66M6 11V12.5H7.5V14H9V11M9.8 17A5.5 5.5 0 0 0 17 9.8M12.5 6H11V9H14V7.5H12.5M6 11V12.5H7.5V14H9V11M12.5 6H11V9H14V7.5H12.5M9.8 17A5.5 5.5 0 0 0 17 9.8M4.93 21A2 2 0 0 1 2.93 19A2 2 0 0 1 4.93 17H6.93V19A2 2 0 0 1 4.93 21.07M19.07 2.93A2 2 0 0 1 21.07 4.93A2 2 0 0 1 19.07 6.93H17.07V4.93A2 2 0 0 1 19.07 2.93Z"; +var mdiEmoticonNeutral = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5M16,16H8V14H16V16M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11Z"; +var mdiEmoticonNeutralOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5M16,14V16H8V14H16Z"; +var mdiEmoticonOutline = "M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiEmoticonPoop = "M11.36,2C11.15,2 10.87,2.12 10.57,2.32C10,2.7 8.85,3.9 8.4,5.1C8.06,6 8.05,6.82 8.19,7.43C7.63,7.53 7.22,7.71 7.06,7.78C6.55,8 5.47,8.96 5.37,10.45C5.34,10.97 5.41,11.5 5.57,12C4.91,12.19 4.53,12.43 4.5,12.44C4.18,12.56 3.65,12.93 3.5,13.13C3.15,13.53 2.92,14 2.79,14.5C2.5,15.59 2.6,16.83 3.13,17.83C3.42,18.39 3.82,19 4.26,19.43C5.7,20.91 8.18,21.47 10.14,21.79C12.53,22.19 15.03,22.05 17.26,21.13C20.61,19.74 21.5,17.5 21.64,16.89C21.93,15.5 21.57,14.19 21.42,13.87C21.2,13.41 20.84,12.94 20.25,12.64C19.85,12.39 19.5,12.26 19.24,12.2C19.5,11.25 19.13,10.5 18.62,9.94C17.85,9.12 17.06,9 17.06,9V9C17.32,8.5 17.42,7.9 17.28,7.32C17.12,6.61 16.73,6.16 16.22,5.86C15.7,5.55 15.06,5.4 14.4,5.28C14.08,5.22 12.75,5.03 12.2,4.27C11.75,3.65 11.74,2.53 11.62,2.2C11.57,2.07 11.5,2 11.36,2M16,9.61C16.07,9.61 16.13,9.62 16.19,9.62C17.62,9.78 18.64,11.16 18.47,12.69C18.3,14.22 17,15.34 15.57,15.18V15.18C14.14,15 13.12,13.65 13.29,12.11C13.45,10.66 14.64,9.56 16,9.61M8.62,9.61C9.95,9.65 11.06,10.78 11.16,12.21C11.28,13.75 10.21,15.08 8.78,15.19H8.77C7.34,15.3 6.08,14.14 5.96,12.6V12.6C5.85,11.06 6.92,9.73 8.35,9.62V9.62C8.44,9.61 8.53,9.61 8.62,9.61M8.64,11.31C8.6,11.31 8.57,11.31 8.53,11.32C7.97,11.39 7.57,11.9 7.64,12.45C7.7,13 8.21,13.39 8.77,13.32C9.33,13.25 9.73,12.74 9.67,12.19C9.61,11.67 9.15,11.3 8.64,11.31M15.94,11.33C15.42,11.35 15,11.75 14.96,12.28C14.92,12.83 15.35,13.31 15.91,13.34C16.5,13.38 16.96,12.95 17,12.4C17.04,11.84 16.61,11.36 16.05,11.33C16,11.33 16,11.33 15.94,11.33M8.71,16.15C9,16.14 9.26,16.23 9.5,16.28C10.68,16.5 11.7,16.53 12.19,16.53C12.68,16.53 13.69,16.5 14.86,16.28C15.27,16.2 15.74,16.03 16.11,16.28C16.59,16.6 16.24,17.75 15.5,18.53C15.04,19 13.97,19.91 12.19,19.91C10.41,19.91 9.33,19 8.88,18.53C8.14,17.75 7.79,16.6 8.26,16.28C8.4,16.19 8.55,16.15 8.71,16.15Z"; +var mdiEmoticonPoopOutline = "M21.42,13.87C21.2,13.41 20.84,12.94 20.25,12.64C19.85,12.39 19.5,12.26 19.24,12.2C19.5,11.25 19.13,10.5 18.62,9.94C17.85,9.12 17.06,9 17.06,9C17.32,8.5 17.42,7.9 17.28,7.32C17.12,6.61 16.73,6.16 16.22,5.86C15.7,5.55 15.06,5.4 14.4,5.28C14.08,5.22 12.75,5.03 12.2,4.27C11.75,3.65 11.74,2.53 11.62,2.2C11.57,2.07 11.5,2 11.36,2C11.15,2 10.87,2.12 10.57,2.32C10,2.7 8.85,3.9 8.4,5.1C8.06,6 8.05,6.82 8.19,7.43C7.63,7.53 7.22,7.71 7.06,7.78C6.55,8 5.47,8.96 5.37,10.45C5.34,10.89 5.41,11.34 5.5,11.78C5.5,11.86 5.5,11.94 5.5,12.03C4.88,12.22 4.53,12.43 4.5,12.44C4.18,12.56 3.65,12.93 3.5,13.13C3.15,13.53 2.92,14 2.79,14.5C2.5,15.59 2.6,16.83 3.13,17.83C3.42,18.39 3.82,19 4.26,19.43C5.7,20.91 8.18,21.47 10.14,21.79C10.96,21.93 11.8,22 12.63,22C14.22,22 15.8,21.73 17.26,21.13C20.61,19.74 21.5,17.5 21.64,16.89C21.93,15.5 21.57,14.19 21.42,13.87M16.05,11.33C16.61,11.36 17.04,11.84 17,12.4C16.96,12.95 16.5,13.38 15.91,13.34C15.35,13.31 14.92,12.83 14.96,12.28C15,11.75 15.42,11.35 15.94,11.33C16,11.33 16,11.33 16.05,11.33M20.18,16.55C20.17,16.57 19.7,18.5 16.69,19.74C15.47,20.25 14.1,20.5 12.63,20.5C11.9,20.5 11.14,20.44 10.38,20.31C8.76,20.05 6.5,19.56 5.31,18.36C5.04,18.09 4.72,17.63 4.46,17.13C4.12,16.5 4.04,15.65 4.24,14.88C4.32,14.58 4.45,14.32 4.63,14.12L4.65,14.09C4.74,14 4.95,13.88 5.03,13.84V13.84L5.14,13.8L5.26,13.74C5.32,13.7 5.46,13.63 5.67,13.55C6.13,14.81 7.28,15.7 8.59,15.7C8.67,15.7 8.74,15.69 8.82,15.69C9.65,15.63 10.41,15.22 10.94,14.55C11.47,13.89 11.73,13.04 11.66,12.17C11.54,10.5 10.22,9.16 8.64,9.11H8.62C8.5,9.11 8.4,9.11 8.31,9.12C8,9.15 7.73,9.23 7.46,9.34C7.55,9.24 7.63,9.17 7.66,9.15C7.79,9.1 8.07,9 8.45,8.91L10,8.63L9.65,7.09C9.61,6.9 9.53,6.35 9.81,5.63C9.96,5.2 10.27,4.76 10.58,4.38C10.68,4.65 10.81,4.91 11,5.15C11.77,6.23 13.12,6.58 14.06,6.74L14.13,6.76C14.6,6.84 15.13,6.95 15.46,7.15C15.67,7.28 15.76,7.41 15.82,7.67C15.87,7.87 15.84,8.1 15.73,8.31L15.21,9.2C13.95,9.5 12.95,10.64 12.79,12.06C12.59,13.87 13.78,15.46 15.5,15.68C15.62,15.69 15.74,15.7 15.85,15.7C16.56,15.7 17.25,15.44 17.82,14.95C18.23,14.59 18.54,14.13 18.74,13.62L18.9,13.66C19,13.68 19.17,13.74 19.45,13.91L19.5,13.95L19.57,14C19.78,14.08 19.94,14.26 20.05,14.5C20.13,14.67 20.38,15.6 20.18,16.55M7.64,12.45C7.57,11.9 7.97,11.39 8.53,11.32C8.57,11.31 8.6,11.31 8.64,11.31C9.15,11.3 9.61,11.67 9.67,12.19C9.73,12.74 9.33,13.25 8.77,13.32C8.21,13.39 7.7,13 7.64,12.45M8.71,16.15C9,16.14 9.26,16.23 9.5,16.28C10.68,16.5 11.7,16.53 12.19,16.53C12.68,16.53 13.69,16.5 14.86,16.28C15.27,16.2 15.74,16.03 16.11,16.28C16.59,16.6 16.24,17.75 15.5,18.53C15.04,19 13.97,19.91 12.19,19.91C10.41,19.91 9.33,19 8.88,18.53C8.14,17.75 7.79,16.6 8.26,16.28C8.4,16.19 8.55,16.15 8.71,16.15Z"; +var mdiEmoticonSad = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23M15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11Z"; +var mdiEmoticonSadOutline = "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z"; +var mdiEmoticonSick = "M21 9C19.9 9 19 8.1 19 7S21 3 21 3 23 5.9 23 7 22.1 9 21 9M17.5 7C17.5 6.27 17.91 5.29 18.42 4.34C16.68 2.88 14.44 2 12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12C22 11.45 21.94 10.91 21.86 10.38C21.58 10.45 21.3 10.5 21 10.5C19.07 10.5 17.5 8.93 17.5 7M15.62 7.38L16.68 8.44L15.62 9.5L16.68 10.56L15.62 11.62L13.5 9.5L15.62 7.38M7.32 8.44L8.38 7.38L10.5 9.5L8.38 11.62L7.32 10.56L8.38 9.5L7.32 8.44M15.44 17C14.75 15.81 13.47 15 12 15S9.25 15.81 8.56 17H6.88C7.18 16.24 7.64 15.57 8.22 15L5.24 13.3C4.79 13.56 4.23 13.58 3.75 13.3C3.03 12.89 2.79 11.97 3.2 11.25S4.53 10.29 5.25 10.7C5.73 11 6 11.5 6 12L9.57 14.06C10.3 13.7 11.12 13.5 12 13.5C14.33 13.5 16.32 14.95 17.12 17H15.44Z"; +var mdiEmoticonSickOutline = "M7.32 10.56L8.38 9.5L7.32 8.44L8.38 7.38L10.5 9.5L8.38 11.62L7.32 10.56M4.5 9C4.53 9 4.55 9 4.58 9C5.77 6.07 8.64 4 12 4C14.19 4 16.16 4.88 17.61 6.3C17.76 5.7 18.06 5 18.42 4.34C16.68 2.88 14.44 2 12 2C7.11 2 3.05 5.5 2.18 10.14C2.74 9.44 3.59 9 4.5 9M21 10.5C20.58 10.5 20.18 10.41 19.81 10.28C19.93 10.83 20 11.41 20 12C20 16.42 16.42 20 12 20C8.64 20 5.77 17.93 4.58 15C4.55 15 4.53 15 4.5 15C4 15 3.46 14.86 3 14.6C2.68 14.42 2.41 14.18 2.18 13.9C3.07 18.5 7.11 22 12 22C17.5 22 22 17.5 22 12C22 11.45 21.94 10.91 21.86 10.38C21.58 10.45 21.3 10.5 21 10.5M21 3C21 3 19 5.9 19 7S19.9 9 21 9 23 8.1 23 7 21 3 21 3M15.62 7.38L13.5 9.5L15.62 11.62L16.68 10.56L15.62 9.5L16.68 8.44L15.62 7.38M8.56 17C9.25 15.81 10.53 15 12 15S14.75 15.81 15.44 17H17.12C16.32 14.95 14.33 13.5 12 13.5C11.13 13.5 10.3 13.7 9.57 14.07L6 12C6 11.5 5.73 11 5.25 10.71C4.53 10.3 3.62 10.54 3.2 11.26C2.79 12 3.03 12.89 3.75 13.31C4.23 13.59 4.8 13.56 5.24 13.31L8.21 15.03C7.64 15.56 7.18 16.24 6.88 17H8.56Z"; +var mdiEmoticonTongue = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.27,11C7.1,10.71 7,10.36 7,10C7,8.89 7.89,8 9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11M16,15H15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H8V13H16V15M16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10C13,8.89 13.89,8 15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11Z"; +var mdiEmoticonTongueOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8C10.11,8 11,8.9 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10M17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8C16.11,8 17,8.9 17,10M16,13V15H15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H8V13H16Z"; +var mdiEmoticonWink = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M17,10H13V9H17V10Z"; +var mdiEmoticonWinkOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M17,10H13V9H17V10Z"; +var mdiEngine = "M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z"; +var mdiEngineOff = "M3.78,2.5L21.5,20.22L20.23,21.5L18,19.27V20H10L8,18H5V15H3V18H1V10H3V13H5V10L6.87,8.14L2.5,3.77L3.78,2.5M20,9V12H18V8H12V6H15V4H7.82L22.82,19H23V9H20Z"; +var mdiEngineOffOutline = "M2.5,3.77L6.87,8.14L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V19.27L21.23,22.5L22.5,21.22L3.78,2.5L2.5,3.77M16,18H11L9,16H7V11L8,10H8.73L16,17.27V18M23,9V19H22.82L16,12.18V10H13.82L7.82,4H15V6H12V8H18V12H20V9H23Z"; +var mdiEngineOutline = "M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z"; +var mdiEpsilon = "M15.05 7.78L16.15 6.18C16.15 6.18 14.91 5 12.77 5C10.04 5 8.35 6.84 8.35 8.76C8.35 10.68 10.08 11.69 10.08 11.69C10.08 11.69 8 12.38 8 15C8 17.63 10.14 19 12.44 19C15.38 19 17 17.04 17 17.04L15.6 15.5C15.6 15.5 14.14 16.87 12.59 16.87C10.66 16.87 10.21 15.69 10.21 14.92C10.21 13.87 10.54 12.65 13.83 12.65L13.82 10.77C13.82 10.77 10.44 11.11 10.44 8.78C10.44 7.21 11.9 6.92 12.64 6.92C14.28 6.92 15.05 7.78 15.05 7.78"; +var mdiEqual = "M19,10H5V8H19V10M19,16H5V14H19V16Z"; +var mdiEqualBox = "M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z"; +var mdiEqualizer = "M10,20H14V4H10V20M4,20H8V12H4V20M16,9V20H20V9H16Z"; +var mdiEqualizerOutline = "M15,21H9V3H15V21M11,19H13V5H11V19M8,21H2V11H8V21M4,19H6V13H4V19M22,21H16V8H22V21M18,19H20V10H18V19Z"; +var mdiEraser = "M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z"; +var mdiEraserVariant = "M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18"; +var mdiEscalator = "M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z"; +var mdiEscalatorBox = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M14.34 6H17.05C18.16 6 19.05 6.9 19.05 8C19.05 9.11 18.16 10 17.05 10H16L10 18H7.05C5.95 18 5.05 17.11 5.05 16C5.05 14.9 5.95 14 7.05 14H8.34L14.34 6Z"; +var mdiEscalatorDown = "M20 8H18.95L6.95 20H4C2.9 20 2 19.11 2 18C2 16.9 2.9 16 4 16H5.29L7 14.29V10C7 9.45 7.45 9 8 9H9C9.55 9 10 9.45 10 10V11.29L17.29 4H20C21.11 4 22 4.89 22 6C22 7.11 21.11 8 20 8M8.5 5C9.33 5 10 5.67 10 6.5C10 7.33 9.33 8 8.5 8C7.67 8 7 7.33 7 6.5C7 5.67 7.67 5 8.5 5M14.83 17.34L20.34 11.83L22.17 13.66L16.66 19.17L18.5 21H13V15.5L14.83 17.34Z"; +var mdiEscalatorUp = "M20 8H18.95L6.95 20H4C2.9 20 2 19.11 2 18C2 16.9 2.9 16 4 16H5.29L7 14.29V10C7 9.45 7.45 9 8 9H9C9.55 9 10 9.45 10 10V11.29L17.29 4H20C21.11 4 22 4.89 22 6C22 7.11 21.11 8 20 8M8.5 5C9.33 5 10 5.67 10 6.5C10 7.33 9.33 8 8.5 8C7.67 8 7 7.33 7 6.5C7 5.67 7.67 5 8.5 5M20.17 15.66L14.66 21.17L12.83 19.34L18.34 13.83L16.5 12H22V17.5L20.17 15.66Z"; +var mdiEslint = "M7.95,9.55L11.84,7.3C11.94,7.25 12.06,7.25 12.16,7.3L16.05,9.55C16.15,9.61 16.21,9.71 16.21,9.82V14.32C16.21,14.43 16.15,14.53 16.05,14.59L12.16,16.84C12.06,16.89 11.94,16.89 11.84,16.84L7.95,14.59C7.85,14.53 7.79,14.43 7.79,14.32V9.82C7.79,9.71 7.85,9.61 7.95,9.55M22.12,11.6C22.29,11.89 22.29,12.23 22.12,12.53L17.47,20.56C17.3,20.86 17,21 16.65,21H7.35C7,21 6.7,20.85 6.53,20.56L1.88,12.53C1.71,12.24 1.71,11.87 1.88,11.58L6.53,3.5C6.7,3.22 7,3 7.35,3H16.65C17,3 17.3,3.22 17.47,3.5L22.12,11.6M18.27,15.5V8.65C18.27,8.53 18.2,8.42 18.09,8.36L12.16,4.95C12.06,4.89 11.93,4.89 11.83,4.95L5.91,8.36C5.8,8.42 5.73,8.53 5.73,8.65V15.5C5.73,15.61 5.8,15.72 5.91,15.78L11.84,19.19C11.94,19.25 12.07,19.25 12.17,19.19L18.09,15.78C18.2,15.72 18.27,15.61 18.27,15.5Z"; +var mdiEt = "M23,8.78L21.71,7.22C21.45,7.42 20.53,8 19.77,8C19.26,8 18.3,7.75 17.45,7.53C16.39,7.26 15.39,7 14.6,7C14,7 13.43,7.15 12.93,7.35C12.62,5.45 11,4 9,4C4.58,4 2,7.58 2,12C2,16.42 5.58,19 10,19C12.06,19 13.93,18.43 15.34,17.39L15,21.29L17,21.47L18,9.74C18.66,9.89 19.27,10 19.77,10C21.38,10 22.84,8.91 23,8.78M9,6A2,2 0 0,1 11,8A2,2 0 0,1 9,10H4.23C4.8,7.67 6.39,6 9,6M10,17C6.69,17 4,15.31 4,12H9C10.6,12 11.83,11.17 12.5,9.91V9.91C12.76,9.71 13.85,9 14.6,9C14.94,9 15.5,9.11 16.05,9.25L15.65,13.89C14.82,15.95 12.6,17 10,17Z"; +var mdiEthereum = "M12,1.75L5.75,12.25L12,16L18.25,12.25L12,1.75M5.75,13.5L12,22.25L18.25,13.5L12,17.25L5.75,13.5Z"; +var mdiEthernet = "M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z"; +var mdiEthernetCable = "M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z"; +var mdiEthernetCableOff = "M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z"; +var mdiEvPlugCcs1 = "M16 15H15.59C17.63 13.78 19 11.55 19 9C19 5.47 16.39 2.57 13 2.08V.949H11V2.08C7.61 2.57 5 5.47 5 9C5 11.55 6.37 13.78 8.41 15H8C5.79 15 4 16.79 4 19S5.79 23 8 23H16C18.21 23 20 21.21 20 19S18.21 15 16 15M17.5 11C17.5 11.83 16.83 12.5 16 12.5S14.5 11.83 14.5 11 15.17 9.5 16 9.5 17.5 10.17 17.5 11M15 5C16.11 5 17 5.9 17 7S16.11 9 15 9 13 8.11 13 7 13.9 5 15 5M9 5C10.11 5 11 5.9 11 7S10.11 9 9 9 7 8.11 7 7 7.9 5 9 5M8 12.5C7.17 12.5 6.5 11.83 6.5 11S7.17 9.5 8 9.5 9.5 10.17 9.5 11 8.83 12.5 8 12.5M9 21.82V21H7V21.82C5.84 21.4 5 20.3 5 19C5 17.34 6.34 16 8 16S11 17.34 11 19C11 20.3 10.16 21.4 9 21.82M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.11 14 12 14 10 13.11 10 12M17 21.82V21H15V21.82C13.84 21.4 13 20.3 13 19C13 17.34 14.34 16 16 16S19 17.34 19 19C19 20.3 18.16 21.4 17 21.82M14.5 7C14.5 6.72 14.72 6.5 15 6.5S15.5 6.72 15.5 7 15.28 7.5 15 7.5 14.5 7.28 14.5 7M8.5 7C8.5 6.72 8.72 6.5 9 6.5S9.5 6.72 9.5 7 9.28 7.5 9 7.5 8.5 7.28 8.5 7M9 19C9 19.55 8.55 20 8 20S7 19.55 7 19 7.45 18 8 18 9 18.45 9 19M17 19C17 19.55 16.55 20 16 20S15 19.55 15 19 15.45 18 16 18 17 18.45 17 19M12.5 12C12.5 12.28 12.28 12.5 12 12.5S11.5 12.28 11.5 12 11.72 11.5 12 11.5 12.5 11.72 12.5 12Z"; +var mdiEvPlugCcs2 = "M14 4.5C14 4.22 14.22 4 14.5 4S15 4.22 15 4.5 14.78 5 14.5 5 14 4.78 14 4.5M20 19C20 21.21 18.21 23 16 23H8C5.79 23 4 21.21 4 19C4 16.79 5.79 15 8 15H8.13C5.67 13.64 4 11 4 8C4 5.61 5.06 3.47 6.72 2H17.28C18.94 3.47 20 5.61 20 8C20 11 18.33 13.64 15.87 15H16C18.21 15 20 16.79 20 19M16.5 12C16.5 10.9 15.61 10 14.5 10S12.5 10.9 12.5 12C12.5 13.11 13.4 14 14.5 14S16.5 13.11 16.5 12M17 6C15.9 6 15 6.9 15 8C15 9.11 15.9 10 17 10S19 9.11 19 8C19 6.9 18.11 6 17 6M13 4.5C13 5.33 13.67 6 14.5 6S16 5.33 16 4.5 15.33 3 14.5 3 13 3.67 13 4.5M12 6C10.9 6 10 6.9 10 8C10 9.11 10.9 10 12 10S14 9.11 14 8C14 6.9 13.11 6 12 6M8 4.5C8 5.33 8.67 6 9.5 6S11 5.33 11 4.5 10.33 3 9.5 3 8 3.67 8 4.5M7 10C8.11 10 9 9.11 9 8C9 6.9 8.11 6 7 6S5 6.9 5 8C5 9.11 5.9 10 7 10M9.5 14C10.61 14 11.5 13.11 11.5 12C11.5 10.9 10.61 10 9.5 10S7.5 10.9 7.5 12C7.5 13.11 8.4 14 9.5 14M11 19C11 17.34 9.66 16 8 16S5 17.34 5 19 6.34 22 8 22 11 20.66 11 19M19 19C19 17.34 17.66 16 16 16S13 17.34 13 19 14.34 22 16 22 19 20.66 19 19M17 8.5C17.28 8.5 17.5 8.28 17.5 8S17.28 7.5 17 7.5 16.5 7.72 16.5 8 16.72 8.5 17 8.5M14.5 11.5C14.22 11.5 14 11.72 14 12S14.22 12.5 14.5 12.5 15 12.28 15 12 14.78 11.5 14.5 11.5M16 18C15.45 18 15 18.45 15 19C15 19.55 15.45 20 16 20S17 19.55 17 19C17 18.45 16.55 18 16 18M12 8.5C12.28 8.5 12.5 8.28 12.5 8S12.28 7.5 12 7.5 11.5 7.72 11.5 8 11.72 8.5 12 8.5M8 18C7.45 18 7 18.45 7 19C7 19.55 7.45 20 8 20S9 19.55 9 19C9 18.45 8.55 18 8 18M7 7.5C6.72 7.5 6.5 7.72 6.5 8S6.72 8.5 7 8.5 7.5 8.28 7.5 8 7.28 7.5 7 7.5M9.5 5C9.78 5 10 4.78 10 4.5S9.78 4 9.5 4 9 4.22 9 4.5 9.22 5 9.5 5M10 12C10 11.72 9.78 11.5 9.5 11.5S9 11.72 9 12 9.22 12.5 9.5 12.5 10 12.28 10 12Z"; +var mdiEvPlugChademo = "M8 10.5C8.83 10.5 9.5 11.17 9.5 12S8.83 13.5 8 13.5 6.5 12.83 6.5 12 7.17 10.5 8 10.5M8 9C6.34 9 5 10.34 5 12S6.34 15 8 15 11 13.66 11 12 9.66 9 8 9M16 10.5C16.83 10.5 17.5 11.17 17.5 12S16.83 13.5 16 13.5C15.17 13.5 14.5 12.83 14.5 12S15.17 10.5 16 10.5M16 9C14.34 9 13 10.34 13 12S14.34 15 16 15 19 13.66 19 12 17.66 9 16 9M14.12 8.41L12.71 7L14.12 5.59L13.41 4.88L12 6.29L10.59 4.88L9.88 5.59L11.29 7L9.88 8.41L10.59 9.12L12 7.71L13.41 9.12L14.12 8.41M14.12 18.41L12.71 17L14.12 15.59L13.41 14.88L12 16.29L10.59 14.88L9.88 15.59L11.29 17L9.88 18.41L10.59 19.12L12 17.71L13.41 19.12L14.12 18.41M19.74 5.67L20.5 4.93L19.07 3.5L18.33 4.26C16.6 2.85 14.4 2 12 2S7.4 2.85 5.67 4.26L4.93 3.5L3.5 4.93L4.26 5.67C2.85 7.4 2 9.6 2 12C2 17.5 6.5 22 12 22S22 17.5 22 12C22 9.6 21.15 7.4 19.74 5.67M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20Z"; +var mdiEvPlugTesla = "M6 9C6 8.45 6.45 8 7 8S8 8.45 8 9 7.55 10 7 10 6 9.55 6 9M17 10C17.55 10 18 9.55 18 9S17.55 8 17 8 16 8.45 16 9 16.45 10 17 10M22 9.93V11C22 15.97 17.97 20 13 20H11C6.03 20 2 16 2 11V9.93C2 6.65 4.65 4 7.93 4H16.07C19.35 4 22 6.65 22 9.93M14.5 9C14.5 10.38 15.62 11.5 17 11.5S19.5 10.38 19.5 9 18.38 6.5 17 6.5 14.5 7.62 14.5 9M4.5 9C4.5 10.38 5.62 11.5 7 11.5S9.5 10.38 9.5 9 8.38 6.5 7 6.5 4.5 7.62 4.5 9M9 17C9 16.45 8.55 16 8 16S7 16.45 7 17 7.45 18 8 18 9 17.55 9 17M13.5 17C13.5 16.17 12.83 15.5 12 15.5S10.5 16.17 10.5 17 11.17 18.5 12 18.5 13.5 17.83 13.5 17M17 17C17 16.45 16.55 16 16 16S15 16.45 15 17 15.45 18 16 18 17 17.55 17 17M19.97 11.66C19.23 12.5 18.18 13 17 13C14.79 13 13 11.21 13 9C13 7.8 13.54 6.73 14.38 6H9.62C10.46 6.73 11 7.8 11 9C11 11.21 9.21 13 7 13C5.82 13 4.76 12.5 4.03 11.66C4.19 13.32 4.93 14.82 6.04 15.94C7.71 14.73 9.76 14 12 14C14.24 14 16.29 14.73 17.96 15.94C19.07 14.82 19.81 13.32 19.97 11.66Z"; +var mdiEvPlugType1 = "M12.5 15C12.5 15.28 12.28 15.5 12 15.5S11.5 15.28 11.5 15 11.72 14.5 12 14.5 12.5 14.72 12.5 15M15 10.5C15.28 10.5 15.5 10.28 15.5 10S15.28 9.5 15 9.5 14.5 9.72 14.5 10 14.72 10.5 15 10.5M9 10.5C9.28 10.5 9.5 10.28 9.5 10S9.28 9.5 9 9.5 8.5 9.72 8.5 10 8.72 10.5 9 10.5M13 18.92V20H11V18.92C7.61 18.43 5 15.53 5 12S7.61 5.57 11 5.08V4H13V5.08C16.39 5.57 19 8.5 19 12S16.39 18.43 13 18.92M13 10C13 11.11 13.9 12 15 12S17 11.11 17 10 16.11 8 15 8 13 8.9 13 10M7 10C7 11.11 7.9 12 9 12S11 11.11 11 10 10.11 8 9 8 7 8.9 7 10M9.5 14C9.5 13.17 8.83 12.5 8 12.5S6.5 13.17 6.5 14 7.17 15.5 8 15.5 9.5 14.83 9.5 14M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M16 15.5C16.83 15.5 17.5 14.83 17.5 14S16.83 12.5 16 12.5 14.5 13.17 14.5 14 15.17 15.5 16 15.5Z"; +var mdiEvPlugType2 = "M7.5 11C7.5 11.28 7.28 11.5 7 11.5S6.5 11.28 6.5 11 6.72 10.5 7 10.5 7.5 10.72 7.5 11M9.5 14.5C9.22 14.5 9 14.72 9 15S9.22 15.5 9.5 15.5 10 15.28 10 15 9.78 14.5 9.5 14.5M9.5 8C9.78 8 10 7.78 10 7.5S9.78 7 9.5 7 9 7.22 9 7.5 9.22 8 9.5 8M14.5 8C14.78 8 15 7.78 15 7.5S14.78 7 14.5 7 14 7.22 14 7.5 14.22 8 14.5 8M12 10.5C11.72 10.5 11.5 10.72 11.5 11S11.72 11.5 12 11.5 12.5 11.28 12.5 11 12.28 10.5 12 10.5M20 11C20 15.42 16.42 19 12 19S4 15.42 4 11C4 8.61 5.06 6.47 6.72 5H17.28C18.94 6.47 20 8.61 20 11M13 7.5C13 8.33 13.67 9 14.5 9S16 8.33 16 7.5 15.33 6 14.5 6 13 6.67 13 7.5M8 7.5C8 8.33 8.67 9 9.5 9S11 8.33 11 7.5 10.33 6 9.5 6 8 6.67 8 7.5M7 13C8.11 13 9 12.11 9 11C9 9.9 8.11 9 7 9S5 9.9 5 11C5 12.11 5.9 13 7 13M11.5 15C11.5 13.9 10.61 13 9.5 13S7.5 13.9 7.5 15C7.5 16.11 8.4 17 9.5 17S11.5 16.11 11.5 15M12 13C13.11 13 14 12.11 14 11C14 9.9 13.11 9 12 9S10 9.9 10 11C10 12.11 10.9 13 12 13M16.5 15C16.5 13.9 15.61 13 14.5 13S12.5 13.9 12.5 15C12.5 16.11 13.4 17 14.5 17S16.5 16.11 16.5 15M19 11C19 9.9 18.11 9 17 9S15 9.9 15 11C15 12.11 15.9 13 17 13S19 12.11 19 11M17 10.5C16.72 10.5 16.5 10.72 16.5 11S16.72 11.5 17 11.5 17.5 11.28 17.5 11 17.28 10.5 17 10.5M14.5 14.5C14.22 14.5 14 14.72 14 15S14.22 15.5 14.5 15.5 15 15.28 15 15 14.78 14.5 14.5 14.5Z"; +var mdiEvStation = "M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z"; +var mdiEvernote = "M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z"; +var mdiExcavator = "M18.5 18.5C19.04 18.5 19.5 18.96 19.5 19.5S19.04 20.5 18.5 20.5H6.5C5.96 20.5 5.5 20.04 5.5 19.5S5.96 18.5 6.5 18.5H18.5M18.5 17H6.5C5.13 17 4 18.13 4 19.5S5.13 22 6.5 22H18.5C19.88 22 21 20.88 21 19.5S19.88 17 18.5 17M21 11H18V7H13L10 11V16H22L21 11M11.54 11L13.5 8.5H16V11H11.54M9.76 3.41L4.76 2L2 11.83C1.66 13.11 2.41 14.44 3.7 14.8L4.86 15.12L8.15 12.29L4.27 11.21L6.15 4.46L8.94 5.24C9.5 5.53 10.71 6.34 11.47 7.37L12.5 6H12.94C11.68 4.41 9.85 3.46 9.76 3.41Z"; +var mdiExclamation = "M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z"; +var mdiExclamationThick = "M10 3H14V14H10V3M10 21V17H14V21H10Z"; +var mdiExitRun = "M13.34,8.17C12.41,8.17 11.65,7.4 11.65,6.47A1.69,1.69 0 0,1 13.34,4.78C14.28,4.78 15.04,5.54 15.04,6.47C15.04,7.4 14.28,8.17 13.34,8.17M10.3,19.93L4.37,18.75L4.71,17.05L8.86,17.9L10.21,11.04L8.69,11.64V14.5H7V10.54L11.4,8.67L12.07,8.59C12.67,8.59 13.17,8.93 13.5,9.44L14.36,10.79C15.04,12 16.39,12.82 18,12.82V14.5C16.14,14.5 14.44,13.67 13.34,12.4L12.84,14.94L14.61,16.63V23H12.92V17.9L11.14,16.21L10.3,19.93M21,23H19V3H6V16.11L4,15.69V1H21V23M6,23H4V19.78L6,20.2V23Z"; +var mdiExitToApp = "M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z"; +var mdiExpandAll = "M18,8H8V18H6V8A2,2 0 0,1 8,6H18V8M14,2H4A2,2 0 0,0 2,4V14H4V4H14V2M22,12V20A2,2 0 0,1 20,22H12A2,2 0 0,1 10,20V12A2,2 0 0,1 12,10H20A2,2 0 0,1 22,12M20,15H17V12H15V15H12V17H15V20H17V17H20V15Z"; +var mdiExpandAllOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M19,17H17V19H15V17H13V15H15V13H17V15H19V17Z"; +var mdiExpansionCard = "M2,7V8.5H3V17H4.5V7C3.7,7 2.8,7 2,7M6,7V7L6,16H7V17H14V16H22V7H6M17.5,9A2.5,2.5 0 0,1 20,11.5A2.5,2.5 0 0,1 17.5,14A2.5,2.5 0 0,1 15,11.5A2.5,2.5 0 0,1 17.5,9Z"; +var mdiExpansionCardVariant = "M2 7H4.5V17H3V8.5H2M22 7V16H14V17H7V16H6V7M10 9H8V12H10M13 9H11V12H13M20 9H15V14H20V9Z"; +var mdiExponent = "M15.38,3L17.77,8.75C17.55,9.68 17.27,10.32 17,10.7C16.67,11.18 16.44,11.25 16.19,11.25V12.75C16.94,12.75 17.74,12.35 18.24,11.56C19.87,8.94 22,3 22,3H20.38L18.69,7.05L17,3H15.38M3.42,8.59L2,10L6.79,14.79L2,19.59L3.41,21L8.21,16.21L13,21L14.41,19.59L9.62,14.79L14.41,10L13,8.59L8.21,13.38L3.41,8.59H3.42Z"; +var mdiExponentBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M13.76,6H15.39L16.5,8.6L17.59,6H19.24C19.24,6 17.5,10.57 16.46,12.32C16.08,12.89 15.35,13.27 14.5,13.25V11.75C14.96,11.76 15.25,11.5 15.5,11.13C15.61,11 15.68,10.8 15.74,10.64L13.76,6M6.41,9.59L9.21,12.38L12,9.59L13.41,11L10.62,13.79L13.41,16.59L12,18L9.21,15.21L6.41,18L5,16.59L7.79,13.79L5,11L6.41,9.59Z"; +var mdiExport = "M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z"; +var mdiExportVariant = "M12,1L8,5H11V14H13V5H16M18,23H6C4.89,23 4,22.1 4,21V9A2,2 0 0,1 6,7H9V9H6V21H18V9H15V7H18A2,2 0 0,1 20,9V21A2,2 0 0,1 18,23Z"; +var mdiEye = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"; +var mdiEyeCheck = "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z"; +var mdiEyeCheckOutline = "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.65 22.44,13.26 22.08,13.85C21.5,13.5 20.86,13.25 20.18,13.12L20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12C4.83,15.36 8.24,17.5 12,17.5L13.21,17.43C13.07,17.93 13,18.46 13,19V19.46L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z"; +var mdiEyeCircle = "M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16C9.37,16 7,14.43 6,12C7.38,8.69 11.19,7.12 14.5,8.5C16.08,9.16 17.34,10.42 18,12C17,14.43 14.63,16 12,16M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13Z"; +var mdiEyeCircleOutline = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11M12,8C14.63,8 17,9.57 18,12C16.62,15.31 12.81,16.88 9.5,15.5C7.92,14.84 6.66,13.58 6,12C7,9.57 9.37,8 12,8M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5"; +var mdiEyeMinus = "M12 4.5A11.8 11.8 0 0 0 1 12A11.8 11.8 0 0 0 12 19.5H13.1A3.8 3.8 0 0 1 13 18.5A9.9 9.9 0 0 1 13.2 16.8L12 17A5 5 0 1 1 17 12A2.8 2.8 0 0 1 16.9 12.9A5.2 5.2 0 0 1 19 12.5A5.6 5.6 0 0 1 22.3 13.5A10.1 10.1 0 0 0 23 12A11.8 11.8 0 0 0 12 4.5M12 9A3 3 0 1 0 15 12A2.9 2.9 0 0 0 12 9M15 17.5V19.5H23V17.5Z"; +var mdiEyeMinusOutline = "M12 4.5A11.8 11.8 0 0 0 1 12A11.8 11.8 0 0 0 12 19.5H13.1A3.8 3.8 0 0 1 13 18.5A4.1 4.1 0 0 1 13.1 17.4H12A9.6 9.6 0 0 1 3.2 12A9.6 9.6 0 0 1 12 6.5A9.6 9.6 0 0 1 20.8 12L20.4 12.7A4.6 4.6 0 0 1 22.3 13.5A10.1 10.1 0 0 0 23 12A11.8 11.8 0 0 0 12 4.5M12 9A3 3 0 1 0 15 12A2.9 2.9 0 0 0 12 9M15 17.5V19.5H23V17.5Z"; +var mdiEyeOff = "M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z"; +var mdiEyeOffOutline = "M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z"; +var mdiEyeOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z"; +var mdiEyePlus = "M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C12.36,19.5 12.72,19.5 13.08,19.45C13.03,19.13 13,18.82 13,18.5C13,17.94 13.08,17.38 13.24,16.84C12.83,16.94 12.42,17 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12C17,12.29 16.97,12.59 16.92,12.88C17.58,12.63 18.29,12.5 19,12.5C20.17,12.5 21.31,12.84 22.29,13.5C22.56,13 22.8,12.5 23,12C21.27,7.61 17,4.5 12,4.5M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M18,14.5V17.5H15V19.5H18V22.5H20V19.5H23V17.5H20V14.5H18Z"; +var mdiEyePlusOutline = "M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C12.36,19.5 12.72,19.5 13.08,19.45C13.03,19.13 13,18.82 13,18.5C13,18.14 13.04,17.78 13.1,17.42C12.74,17.46 12.37,17.5 12,17.5C8.24,17.5 4.83,15.36 3.18,12C4.83,8.64 8.24,6.5 12,6.5C15.76,6.5 19.17,8.64 20.82,12C20.7,12.24 20.56,12.45 20.43,12.68C21.09,12.84 21.72,13.11 22.29,13.5C22.56,13 22.8,12.5 23,12C21.27,7.61 17,4.5 12,4.5M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M18,14.5V17.5H15V19.5H18V22.5H20V19.5H23V17.5H20V14.5H18Z"; +var mdiEyeRemove = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88M12 9C10.34 9 9 10.34 9 12S10.34 15 12 15 15 13.66 15 12 13.66 9 12 9M12 17C9.24 17 7 14.76 7 12S9.24 7 12 7 17 9.24 17 12C17 12.5 16.9 13 16.77 13.43C17.46 13.16 18.21 13 19 13C20.12 13 21.17 13.32 22.07 13.85C22.43 13.27 22.74 12.65 23 12C21.27 7.61 17 4.5 12 4.5S2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C12.35 19.5 12.69 19.5 13.03 19.45C13 19.3 13 19.15 13 19C13 18.21 13.16 17.46 13.43 16.77C13 16.9 12.5 17 12 17Z"; +var mdiEyeRemoveOutline = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88M12 9C10.34 9 9 10.34 9 12S10.34 15 12 15 15 13.66 15 12 13.66 9 12 9M12 17.5C8.24 17.5 4.83 15.36 3.18 12C4.83 8.64 8.24 6.5 12 6.5S19.17 8.64 20.82 12C20.63 12.39 20.41 12.77 20.17 13.13C20.85 13.26 21.5 13.5 22.07 13.85C22.43 13.27 22.74 12.65 23 12C21.27 7.61 17 4.5 12 4.5S2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C12.35 19.5 12.69 19.5 13.03 19.45C13 19.3 13 19.15 13 19C13 18.45 13.08 17.92 13.22 17.41C12.82 17.46 12.41 17.5 12 17.5Z"; +var mdiEyeSettings = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7.14,4.5 2.78,7.5 1,12C3.39,18.08 10.25,21.06 16.33,18.67C19.38,17.47 21.8,15.06 23,12C21.22,7.5 16.86,4.5 12,4.5M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; +var mdiEyeSettingsOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C16.86,4.5 21.22,7.5 23,12C20.61,18.08 13.75,21.06 7.67,18.67C4.62,17.47 2.2,15.06 1,12C2.78,7.5 7.14,4.5 12,4.5M3.18,12C5.56,16.87 11.45,18.89 16.32,16.5C18.28,15.54 19.86,13.96 20.82,12C18.44,7.13 12.55,5.11 7.68,7.5C5.72,8.46 4.14,10.04 3.18,12M9,22H7V24H9V22M13,22H11V24H13V22M17,22H15V24H17V22Z"; +var mdiEyedropper = "M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z"; +var mdiEyedropperMinus = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M9 4V6H1V4H9Z"; +var mdiEyedropperOff = "M21 7.24L19.08 9.16L14.84 4.92L16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24M10.94 8.82L12.36 10.24L13 9.6L14.4 11L13.76 11.64L15.18 13.06L15.81 12.43L17.22 13.85L19.35 11.72L12.28 4.65L10.15 6.78L11.57 8.19L10.94 8.82M19.86 20.29L18.58 21.57L12.63 15.61L8.1 20.14L3.5 22L2 20.5L3.86 15.9L8.39 11.37L1.86 4.85L3.14 3.57L19.86 20.29M11.21 14.2L9.81 12.79L5.56 17.03L4.5 19.5L6.97 18.44L11.21 14.2Z"; +var mdiEyedropperPlus = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M6 1V4H9V6H6V9H4V6H1V4H4V1H6Z"; +var mdiEyedropperRemove = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M8.54 2.88L6.41 5L8.54 7.12L7.12 8.54L5 6.41L2.88 8.54L1.46 7.12L3.59 5L1.46 2.88L2.88 1.47L5 3.59L7.12 1.47L8.54 2.88Z"; +var mdiEyedropperVariant = "M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z"; +var mdiFace = "M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z"; +var mdiFaceAgent = "M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z"; +var mdiFaceMask = "M20.25 6C18.79 6 17.61 7.14 17.5 8.58L12.55 7.16C12.19 7.05 11.81 7.05 11.45 7.16L6.5 8.58C6.39 7.14 5.21 6 3.75 6C2.23 6 1 7.23 1 8.75V12.25C1 13.77 2.23 15 3.75 15H5.68C6.81 17.36 9.21 19 12 19S17.19 17.36 18.32 15H20.25C21.77 15 23 13.77 23 12.25V8.75C23 7.23 21.77 6 20.25 6M5 13.5H3.75C3.06 13.5 2.5 12.94 2.5 12.25V8.75C2.5 8.06 3.06 7.5 3.75 7.5S5 8.06 5 8.75V13.5M15 12L12.4 11.3C12.1 11.2 11.8 11.2 11.6 11.3L9 12V11L11.3 10.3C11.7 10.2 12.2 10.2 12.7 10.3L15 11V12M21.5 12.25C21.5 12.94 20.94 13.5 20.25 13.5H19V8.75C19 8.06 19.56 7.5 20.25 7.5S21.5 8.06 21.5 8.75V12.25Z"; +var mdiFaceMaskOutline = "M15 12L12.4 11.3C12.1 11.2 11.8 11.2 11.6 11.3L9 12V11L11.3 10.3C11.7 10.2 12.2 10.2 12.7 10.3L15 11V12M20.25 6C18.79 6 17.61 7.14 17.5 8.58L12.55 7.16C12.37 7.11 12.19 7.08 12 7.08C11.82 7.08 11.63 7.11 11.45 7.16L6.5 8.58C6.39 7.14 5.21 6 3.75 6C2.23 6 1 7.23 1 8.75V12.25C1 13.77 2.23 15 3.75 15H5.68C6.81 17.36 9.21 19 12 19S17.19 17.36 18.32 15H20.25C21.77 15 23 13.77 23 12.25V8.75C23 7.23 21.77 6 20.25 6M5 13.5H3.75C3.06 13.5 2.5 12.94 2.5 12.25V8.75C2.5 8.06 3.06 7.5 3.75 7.5S5 8.06 5 8.75V13.5M17 12C17 14.76 14.76 17 12 17S7 14.76 7 12L7 10.5L12 9.08H12L17 10.5V12M21.5 12.25C21.5 12.94 20.94 13.5 20.25 13.5H19V8.75C19 8.06 19.56 7.5 20.25 7.5S21.5 8.06 21.5 8.75V12.25Z"; +var mdiFaceOutline = "M10.25,13A1.25,1.25 0 0,1 9,14.25A1.25,1.25 0 0,1 7.75,13A1.25,1.25 0 0,1 9,11.75A1.25,1.25 0 0,1 10.25,13M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10.66,4.12C12.06,6.44 14.6,8 17.5,8C17.96,8 18.41,7.95 18.84,7.88C17.44,5.56 14.9,4 12,4C11.54,4 11.09,4.05 10.66,4.12M4.42,9.47C6.13,8.5 7.45,6.92 8.08,5.03C6.37,6 5.05,7.58 4.42,9.47M20,12C20,11.22 19.88,10.47 19.67,9.76C18.97,9.91 18.25,10 17.5,10C14.37,10 11.58,8.56 9.74,6.31C8.69,8.87 6.6,10.88 4,11.86C4,11.9 4,11.95 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12Z"; +var mdiFaceProfile = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z"; +var mdiFaceProfileWoman = "M17.25 13C17.25 13.69 16.69 14.25 16 14.25S14.75 13.69 14.75 13 15.31 11.75 16 11.75 17.25 12.31 17.25 13M22 12C22 17.5 17.5 22 12 22H2V12C2 6.5 6.5 2 12 2S22 6.5 22 12M7 18C8.41 19.23 10 20 12 20C16.41 20 20 16.41 20 12C20 11.21 19.88 10.45 19.67 9.74C18.95 9.91 18.2 10 17.42 10C15.42 10 13.57 9.4 12 8.39C12 8.39 10.54 13.76 8.03 13C7.37 12.8 7 13.31 7 14"; +var mdiFaceRecognition = "M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12C3.97,11.71 3.97,11.43 4,11.14C6.38,10.1 8.27,8.17 9.26,5.77C11.13,8.42 14.17,10 17.42,10C18.18,10 18.93,9.91 19.67,9.74C20.92,14 18.5,18.43 14.26,19.67C13.5,19.89 12.76,20 12,20M0,2A2,2 0 0,1 2,0H6V2H2V6H0V2M24,22A2,2 0 0,1 22,24H18V22H22V18H24V22M2,24A2,2 0 0,1 0,22V18H2V22H6V24H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22Z"; +var mdiFaceShimmer = "M18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.59C19.94 11.05 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.96 4 11.91 4 11.87A10 10 0 0 0 9.74 6.31A10 10 0 0 0 17.5 10A10 10 0 0 0 18.83 9.91L17.35 6.65L12.6 4.5L16.13 2.9C14.87 2.33 13.47 2 12 2M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z"; +var mdiFaceShimmerOutline = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.57C19.95 11.04 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.95 4 11.91 4 11.86A10 10 0 0 0 9.74 6.31C11.61 8.61 14.44 10 17.5 10C17.94 10 18.39 9.97 18.83 9.91L17.96 8C17.81 8 17.65 8 17.5 8C14.68 8 12.1 6.5 10.66 4.12C11.1 4.05 11.54 4 12 4C12.5 4 12.96 4.05 13.42 4.13L16.13 2.91C14.87 2.33 13.47 2 12 2M8.09 5A8 8 0 0 1 4.41 9.5C5.04 7.57 6.37 6 8.09 5M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z"; +var mdiFaceWoman = "M13.75 13C13.75 12.31 14.31 11.75 15 11.75S16.25 12.31 16.25 13 15.69 14.25 15 14.25 13.75 13.69 13.75 13M22 12V22H2V12C2 6.5 6.5 2 12 2S22 6.5 22 12M4 12C4 16.41 7.59 20 12 20S20 16.41 20 12C20 11.21 19.88 10.45 19.67 9.74C18.95 9.91 18.2 10 17.42 10C14.05 10 11.07 8.33 9.26 5.77C8.28 8.16 6.41 10.09 4.05 11.14C4 11.42 4 11.71 4 12M9 14.25C9.69 14.25 10.25 13.69 10.25 13S9.69 11.75 9 11.75 7.75 12.31 7.75 13 8.31 14.25 9 14.25Z"; +var mdiFaceWomanOutline = "M12 2C6.5 2 2 6.5 2 12V22H22V12C22 6.5 17.5 2 12 2M12 4C14.9 4 17.44 5.56 18.84 7.88C18.41 7.95 17.96 8 17.5 8C14.6 8 12.06 6.44 10.66 4.12C11.09 4.05 11.54 4 12 4M8.08 5.03C7.45 6.92 6.13 8.5 4.42 9.47C5.05 7.58 6.37 6 8.08 5.03M4 11.86C6.6 10.88 8.69 8.87 9.74 6.31C11.58 8.56 14.37 10 17.5 10C18.25 10 18.97 9.91 19.67 9.76C19.88 10.47 20 11.22 20 12C20 16.41 16.41 20 12 20S4 16.41 4 12V11.86M4 20V18C4.57 18.75 5.25 19.43 6 20H4M20 20H18C18.75 19.43 19.43 18.75 20 18V20M13.75 13C13.75 12.31 14.31 11.75 15 11.75S16.25 12.31 16.25 13 15.69 14.25 15 14.25 13.75 13.69 13.75 13M7.75 13C7.75 12.31 8.31 11.75 9 11.75S10.25 12.31 10.25 13 9.69 14.25 9 14.25 7.75 13.69 7.75 13Z"; +var mdiFaceWomanShimmer = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12V22H22V12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.59C19.94 11.05 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.96 4 11.91 4 11.87A10 10 0 0 0 9.74 6.31A10 10 0 0 0 17.5 10A10 10 0 0 0 18.83 9.91L17.35 6.65L12.6 4.5L16.13 2.9C14.87 2.33 13.47 2 12 2M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z"; +var mdiFaceWomanShimmerOutline = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41M12 2C6.5 2 2 6.5 2 12V22H22V12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.57C19.95 11.04 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.95 4 11.91 4 11.86C6.61 10.89 8.69 8.88 9.74 6.31C11.61 8.61 14.44 10 17.5 10C17.94 10 18.39 9.97 18.83 9.91L17.96 8C17.81 8 17.65 8 17.5 8C14.68 8 12.1 6.5 10.66 4.12C11.1 4.05 11.54 4 12 4C12.5 4 12.96 4.05 13.42 4.13L16.13 2.91C14.87 2.33 13.47 2 12 2M8.09 5C7.46 6.91 6.15 8.5 4.41 9.5C5.04 7.57 6.37 6 8.09 5M9 11.75C8.31 11.75 7.75 12.31 7.75 13C7.75 13.69 8.31 14.25 9 14.25C9.69 14.25 10.25 13.69 10.25 13C10.25 12.31 9.69 11.75 9 11.75M15 11.75C14.31 11.75 13.75 12.31 13.75 13C13.75 13.69 14.31 14.25 15 14.25C15.69 14.25 16.25 13.69 16.25 13C16.25 12.31 15.69 11.75 15 11.75M4 17.97C4.58 18.74 5.26 19.42 6.03 20H4M20 17.97V20H17.97C18.74 19.42 19.42 18.74 20 17.97Z"; +var mdiFacebook = "M12 2.04C6.5 2.04 2 6.53 2 12.06C2 17.06 5.66 21.21 10.44 21.96V14.96H7.9V12.06H10.44V9.85C10.44 7.34 11.93 5.96 14.22 5.96C15.31 5.96 16.45 6.15 16.45 6.15V8.62H15.19C13.95 8.62 13.56 9.39 13.56 10.18V12.06H16.34L15.89 14.96H13.56V21.96A10 10 0 0 0 22 12.06C22 6.53 17.5 2.04 12 2.04Z"; +var mdiFacebookGaming = "M9.5 14.5V9.5H21V21H15.5V14.5H9.5M3 3H21L21 8.5H8.5V15.5H14.5V21H3V3Z"; +var mdiFacebookMessenger = "M12,2C6.36,2 2,6.13 2,11.7C2,14.61 3.19,17.14 5.14,18.87C5.3,19 5.4,19.22 5.41,19.44L5.46,21.22C5.5,21.79 6.07,22.16 6.59,21.93L8.57,21.06C8.74,21 8.93,20.97 9.1,21C10,21.27 11,21.4 12,21.4C17.64,21.4 22,17.27 22,11.7C22,6.13 17.64,2 12,2M18,9.46L15.07,14.13C14.6,14.86 13.6,15.05 12.9,14.5L10.56,12.77C10.35,12.61 10.05,12.61 9.84,12.77L6.68,15.17C6.26,15.5 5.71,15 6,14.54L8.93,9.87C9.4,9.14 10.4,8.95 11.1,9.47L13.44,11.23C13.66,11.39 13.95,11.39 14.16,11.23L17.32,8.83C17.74,8.5 18.29,9 18,9.46Z"; +var mdiFacebookWorkplace = "M19.69,16.12C19.42,16.43 18.95,16.92 18.19,16.92C17.13,16.92 16.78,16.15 16.46,15.34L14.86,11.41L13.26,15.34C13,16 12.7,16.92 11.53,16.92C10.36,16.92 10.07,16 9.79,15.34L7.11,8.72H9.37L11.53,14.17L13.14,10.2C13.39,9.57 13.69,8.62 14.86,8.62C16,8.62 16.32,9.57 16.58,10.2L18.33,14.5C19.22,13.14 19.6,11.5 19.38,9.89C19.16,8.28 18.37,6.8 17.14,5.73C15.92,4.66 14.34,4.06 12.72,4.06C11.03,4.05 9.39,4.58 8,5.56C6.66,6.55 5.64,7.94 5.12,9.54C4.6,11.14 4.6,12.87 5.12,14.47C5.64,16.07 6.66,17.46 8.03,18.44C9.4,19.43 11.04,19.95 12.72,19.94C13.45,19.94 14.17,19.84 14.87,19.64V21.75C14.16,21.91 13.44,22 12.72,22C10.61,22 8.54,21.34 6.82,20.1C5.1,18.86 3.82,17.11 3.17,15.1C2.5,13.09 2.5,10.92 3.16,8.9C3.82,6.89 5.1,5.14 6.82,3.9C8.53,2.66 10.6,2 12.72,2C17.56,2 21.5,5.94 21.5,10.79C21.5,12.71 20.86,14.59 19.69,16.12V16.12Z"; +var mdiFactory = "M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z"; +var mdiFamilyTree = "M12 1A2.5 2.5 0 0 0 9.5 3.5A2.5 2.5 0 0 0 11 5.79V7H7A2 2 0 0 0 5 9V9.71A2.5 2.5 0 0 0 3.5 12A2.5 2.5 0 0 0 5 14.29V15H4A2 2 0 0 0 2 17V18.21A2.5 2.5 0 0 0 .5 20.5A2.5 2.5 0 0 0 3 23A2.5 2.5 0 0 0 5.5 20.5A2.5 2.5 0 0 0 4 18.21V17H8V18.21A2.5 2.5 0 0 0 6.5 20.5A2.5 2.5 0 0 0 9 23A2.5 2.5 0 0 0 11.5 20.5A2.5 2.5 0 0 0 10 18.21V17A2 2 0 0 0 8 15H7V14.29A2.5 2.5 0 0 0 8.5 12A2.5 2.5 0 0 0 7 9.71V9H17V9.71A2.5 2.5 0 0 0 15.5 12A2.5 2.5 0 0 0 17 14.29V15H16A2 2 0 0 0 14 17V18.21A2.5 2.5 0 0 0 12.5 20.5A2.5 2.5 0 0 0 15 23A2.5 2.5 0 0 0 17.5 20.5A2.5 2.5 0 0 0 16 18.21V17H20V18.21A2.5 2.5 0 0 0 18.5 20.5A2.5 2.5 0 0 0 21 23A2.5 2.5 0 0 0 23.5 20.5A2.5 2.5 0 0 0 22 18.21V17A2 2 0 0 0 20 15H19V14.29A2.5 2.5 0 0 0 20.5 12A2.5 2.5 0 0 0 19 9.71V9A2 2 0 0 0 17 7H13V5.79A2.5 2.5 0 0 0 14.5 3.5A2.5 2.5 0 0 0 12 1M12 2.5A1 1 0 0 1 13 3.5A1 1 0 0 1 12 4.5A1 1 0 0 1 11 3.5A1 1 0 0 1 12 2.5M6 11A1 1 0 0 1 7 12A1 1 0 0 1 6 13A1 1 0 0 1 5 12A1 1 0 0 1 6 11M18 11A1 1 0 0 1 19 12A1 1 0 0 1 18 13A1 1 0 0 1 17 12A1 1 0 0 1 18 11M3 19.5A1 1 0 0 1 4 20.5A1 1 0 0 1 3 21.5A1 1 0 0 1 2 20.5A1 1 0 0 1 3 19.5M9 19.5A1 1 0 0 1 10 20.5A1 1 0 0 1 9 21.5A1 1 0 0 1 8 20.5A1 1 0 0 1 9 19.5M15 19.5A1 1 0 0 1 16 20.5A1 1 0 0 1 15 21.5A1 1 0 0 1 14 20.5A1 1 0 0 1 15 19.5M21 19.5A1 1 0 0 1 22 20.5A1 1 0 0 1 21 21.5A1 1 0 0 1 20 20.5A1 1 0 0 1 21 19.5Z"; +var mdiFan = "M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z"; +var mdiFanAlert = "M10 11C9.43 11 9 11.45 9 12S9.43 13 10 13C10.54 13 11 12.55 11 12S10.54 11 10 11M10.5 2C15 2 15.09 5.57 12.73 6.75C11.74 7.24 11.3 8.29 11.11 9.22C11.59 9.42 12 9.73 12.33 10.13C16.03 8.13 20 8.92 20 12.5C20 17 16.43 17.1 15.26 14.73C14.76 13.74 13.7 13.3 12.77 13.11C12.57 13.59 12.26 14 11.86 14.34C13.85 18.03 13.06 22 9.5 22C5 22 4.9 18.42 7.26 17.24C8.24 16.75 8.68 15.71 8.88 14.79C8.39 14.59 7.96 14.27 7.64 13.87C3.95 15.85 0 15.07 0 11.5C0 7 3.56 6.89 4.73 9.26C5.23 10.25 6.28 10.68 7.21 10.87C7.4 10.39 7.72 9.97 8.13 9.65C6.14 5.96 6.93 2 10.5 2M22 13V7H24V13H22M22 17V15H24V17H22Z"; +var mdiFanAuto = "M12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2M12 11C12.54 11 13 11.45 13 12C13 12.55 12.54 13 12 13C11.43 13 11 12.55 11 12C11 11.45 11.43 11 12 11M18 15C16.89 15 16 15.9 16 17V23H18V21H20V23H22V17C22 15.9 21.1 15 20 15M18 17H20V19H18Z"; +var mdiFanChevronDown = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M19 19.17L22.17 16L23.59 17.41L19 22L14.41 17.41L15.83 16L19 19.17"; +var mdiFanChevronUp = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M19 17.83L15.83 21L14.41 19.59L19 15L23.59 19.59L22.17 21L19 17.83"; +var mdiFanMinus = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M23 18V20H15V18H23Z"; +var mdiFanOff = "M12.5,2C9.64,2 8.57,4.55 9.29,7.47L15,13.16C15.87,13.37 16.81,13.81 17.28,14.73C18.46,17.1 22.03,17 22.03,12.5C22.03,8.92 18.05,8.13 14.35,10.13C14.03,9.73 13.61,9.42 13.13,9.22C13.32,8.29 13.76,7.24 14.75,6.75C17.11,5.57 17,2 12.5,2M3.28,4L2,5.27L4.47,7.73C3.22,7.74 2,8.87 2,11.5C2,15.07 5.96,15.85 9.65,13.87C9.97,14.27 10.4,14.59 10.89,14.79C10.69,15.71 10.25,16.75 9.27,17.24C6.91,18.42 7,22 11.5,22C13.8,22 14.94,20.36 14.94,18.21L18.73,22L20,20.72L3.28,4Z"; +var mdiFanPlus = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M20 15V18H23V20H20V23H18V20H15V18H18V15H20Z"; +var mdiFanRemove = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88Z"; +var mdiFanSpeed1 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M17 15V17H18V23H20V15H17Z"; +var mdiFanSpeed2 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M16 15V17H19V18H18C16.9 18 16 18.9 16 20V23H21V21H18V20H19C20.11 20 21 19.11 21 18V17C21 15.9 20.11 15 19 15H16Z"; +var mdiFanSpeed3 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M21 21V20.5C21 19.67 20.33 19 19.5 19C20.33 19 21 18.33 21 17.5V17C21 15.89 20.1 15 19 15H16V17H19V18H17V20H19V21H16V23H19C20.11 23 21 22.11 21 21"; +var mdiFastForward = "M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z"; +var mdiFastForward10 = "M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14M11.5,3C14.15,3 16.55,4 18.4,5.6L21,3V10H14L16.62,7.38C15.23,6.22 13.46,5.5 11.5,5.5C7.96,5.5 4.95,7.81 3.9,11L1.53,10.22C2.92,6.03 6.85,3 11.5,3Z"; +var mdiFastForward30 = "M11.5,3C6.85,3 2.92,6.03 1.53,10.22L3.9,11C4.95,7.81 7.96,5.5 11.5,5.5C13.46,5.5 15.23,6.22 16.62,7.38L14,10H21V3L18.4,5.6C16.55,4 14.15,3 11.5,3M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20Z"; +var mdiFastForward5 = "M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z"; +var mdiFastForward60 = "M11.5 3C6.8 3 2.9 6 1.5 10.2L3.9 11C4.9 7.8 8 5.5 11.5 5.5C13.5 5.5 15.2 6.2 16.6 7.4L14 10H21V3L18.4 5.6C16.5 4 14.1 3 11.5 3M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z"; +var mdiFastForwardOutline = "M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z"; +var mdiFax = "M11,6H16V8H11V6M8,9V3H19V9A3,3 0 0,1 22,12V18H19V21H8V18H7V9H8M10,5V9H17V5H10M10,15V19H17V15H10M19,11A1,1 0 0,0 18,12A1,1 0 0,0 19,13A1,1 0 0,0 20,12A1,1 0 0,0 19,11M4,9H5A1,1 0 0,1 6,10V17A1,1 0 0,1 5,18H4A2,2 0 0,1 2,16V11A2,2 0 0,1 4,9Z"; +var mdiFeather = "M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z"; +var mdiFeatureSearch = "M20,20A2,2 0 0,1 18,22H4A2,2 0 0,1 2,20V6A2,2 0 0,1 4,4H9.5C9.2,4.8 9,5.6 9,6.5C9,10.1 11.9,13 15.5,13C16.3,13 17,12.9 17.6,12.6L20,15V20M19.3,8.9C19.7,8.2 20,7.4 20,6.5C20,4 18,2 15.5,2C13,2 11,4 11,6.5C11,9 13,11 15.5,11C16.4,11 17.2,10.7 17.9,10.3L21,13.4L22.4,12L19.3,8.9M15.5,9C14.1,9 13,7.9 13,6.5C13,5.1 14.1,4 15.5,4C16.9,4 18,5.1 18,6.5C18,7.9 16.9,9 15.5,9Z"; +var mdiFeatureSearchOutline = "M15.5,2C13,2 11,4 11,6.5C11,9 13,11 15.5,11C16.4,11 17.2,10.7 17.9,10.3L21,13.4L22.4,12L19.3,8.9C19.7,8.2 20,7.4 20,6.5C20,4 18,2 15.5,2M4,4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H18A2,2 0 0,0 20,20V15L18,13V20H4V6H9.03C9.09,5.3 9.26,4.65 9.5,4H4M15.5,4C16.9,4 18,5.1 18,6.5C18,7.9 16.9,9 15.5,9C14.1,9 13,7.9 13,6.5C13,5.1 14.1,4 15.5,4Z"; +var mdiFedora = "M4.4,22C3.07,22 2,20.93 2,19.6V12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22H4.4M14.9,4.4C12.3,4.4 10.2,6.5 10.2,9.1V11.6H8.3C7.69,11.6 7.2,12.09 7.2,12.7C7.2,13.31 7.69,13.8 8.3,13.8H9.8C10,13.8 10.2,14 10.2,14.2V16.3C10.2,17.68 9.08,18.8 7.7,18.8C7.55,18.8 7.41,18.79 7.27,18.76C7.19,18.74 7.1,18.73 7,18.73C6.41,18.73 5.91,19.23 5.91,19.83C5.91,20.37 6.3,20.81 6.8,20.91V20.91C7.09,20.97 7.39,21 7.7,21C10.3,21 12.4,18.9 12.4,16.3V13.8H14.3C14.91,13.8 15.4,13.31 15.4,12.7A1.1,1.1 0 0,0 14.3,11.6H12.8A0.4,0.4 0 0,1 12.4,11.2V9.1A2.5,2.5 0 0,1 14.9,6.6C15.05,6.6 15.2,6.61 15.34,6.64C15.42,6.66 15.5,6.67 15.59,6.67C16.19,6.67 16.69,6.17 16.69,5.57C16.69,5.03 16.3,4.58 15.8,4.5V4.5C15.5,4.43 15.21,4.4 14.9,4.4M6.8,12.7C6.8,12.58 6.81,12.46 6.84,12.34L6.31,11.81C6.1,11.87 5.89,11.95 5.7,12.05L6.91,13.26C6.84,13.08 6.8,12.9 6.8,12.7M6.54,18.5H6.47L6.5,18.5H6.54M5.61,19.83C5.61,19.6 5.67,19.38 5.77,19.19L3,16.42C3,16.76 3.05,17.08 3.13,17.4L5.61,19.88V19.83M5.86,20.63C5.77,20.5 5.71,20.37 5.67,20.22L3.24,17.79C3.67,19.07 4.63,20.1 5.86,20.63M15.8,12.7C15.8,12.82 15.79,12.94 15.76,13.06L16.29,13.59C16.5,13.53 16.71,13.45 16.9,13.35L15.69,12.14C15.76,12.32 15.8,12.5 15.8,12.7M16.06,6.88L16.13,6.92L16.08,6.88H16.06M17,5.57C17,5.8 16.93,6 16.83,6.21L19.6,9C19.59,8.64 19.55,8.32 19.47,8L17,5.5V5.57M16.74,4.77C16.83,4.9 16.89,5.03 16.93,5.18L19.36,7.61C18.93,6.33 17.97,5.3 16.74,4.77M16.07,13.65L15.69,13.27C15.61,13.46 15.5,13.63 15.35,13.78V13.78C15.6,13.76 15.84,13.71 16.07,13.65M18.23,12.42L16.67,10.86C16.53,11 16.37,11.13 16.2,11.24L17.78,12.82C17.94,12.69 18.09,12.56 18.23,12.42M17.62,12.94L16,11.34C15.82,11.44 15.61,11.5 15.39,11.55L17.09,13.26C17.27,13.16 17.45,13.05 17.62,12.94M18.75,11.8L17.15,10.2C17.05,10.39 16.94,10.56 16.81,10.71L18.37,12.27C18.5,12.12 18.63,11.97 18.75,11.8M19.16,11.09L17.39,9.32C17.37,9.56 17.32,9.79 17.23,10L18.86,11.63C18.97,11.46 19.07,11.28 19.16,11.09M19.6,9.26L16.72,6.38C16.6,6.55 16.45,6.69 16.28,6.79L19.5,10C19.56,9.77 19.59,9.5 19.6,9.26M19.46,10.25L17.08,7.87C17.27,8.22 17.39,8.62 17.4,9.04L19.25,10.89C19.33,10.68 19.4,10.47 19.46,10.25M4.82,12.58C4.66,12.71 4.5,12.84 4.37,13L5.93,14.54C6.07,14.4 6.23,14.27 6.4,14.16L4.82,12.58M5.5,12.14C5.33,12.24 5.15,12.35 5,12.46L6.58,14.06C6.78,13.96 7,13.89 7.21,13.85L5.5,12.14M7.25,11.62C7,11.64 6.76,11.69 6.53,11.75L6.91,12.13C7,11.94 7.11,11.77 7.25,11.62V11.62M3.09,15.38C3.04,15.63 3,15.88 3,16.14L5.88,19C6,18.85 6.15,18.71 6.32,18.61L3.09,15.38M3.74,13.77C3.63,13.94 3.53,14.12 3.44,14.31L5.21,16.08C5.23,15.84 5.28,15.61 5.37,15.4L3.74,13.77M3.35,14.5C3.27,14.72 3.2,14.93 3.14,15.15L5.5,17.53C5.33,17.18 5.21,16.78 5.2,16.36L3.35,14.5M4.23,13.13C4.1,13.28 3.97,13.43 3.85,13.6L5.45,15.2C5.55,15 5.66,14.84 5.79,14.69L4.23,13.13Z"; +var mdiFencing = "M4.5 17.42L5.58 18.5L3.28 20.78C3 21.07 2.5 21.07 2.22 20.78S1.93 20 2.22 19.72L4.5 17.42M18.29 5.42L18.29 4L12 10.29L5.71 4L5.71 5.42L11.29 11L7.5 14.81C6.32 13.97 4.68 14.07 3.63 15.12L7.88 19.37C8.93 18.32 9.03 16.68 8.2 15.5L18.29 5.42M21.78 19.72L19.5 17.42L18.42 18.5L20.72 20.78C21 21.07 21.5 21.07 21.78 20.78S22.07 20 21.78 19.72M16.5 14.81L13.42 11.71L12.71 12.42L15.81 15.5C14.97 16.68 15.07 18.32 16.12 19.37L20.37 15.12C19.32 14.07 17.68 13.97 16.5 14.81Z"; +var mdiFerrisWheel = "M12,19C12.86,19 13.59,19.54 13.87,20.29C14.42,20.17 14.95,20 15.46,19.77L13.7,15.62C13.18,15.87 12.61,16 12,16C11.39,16 10.82,15.87 10.3,15.62L8.54,19.77C9.05,20 9.58,20.17 10.13,20.29C10.41,19.54 11.14,19 12,19M18.25,17.76C18,17.42 17.81,17 17.81,16.5C17.81,15.41 18.71,14.5 19.81,14.5L20.12,14.53C20.37,13.73 20.5,12.88 20.5,12C20.5,11.12 20.37,10.27 20.12,9.5H19.81C18.7,9.5 17.81,8.61 17.81,7.5C17.81,7 17.97,6.59 18.25,6.24C17.1,5 15.59,4.09 13.87,3.71C13.59,4.46 12.86,5 12,5C11.14,5 10.41,4.46 10.13,3.71C8.41,4.09 6.9,5 5.75,6.24C6.03,6.59 6.2,7.03 6.2,7.5C6.2,8.61 5.3,9.5 4.2,9.5H3.88C3.63,10.28 3.5,11.12 3.5,12C3.5,12.89 3.64,13.74 3.89,14.55L4.2,14.5C5.31,14.5 6.2,15.42 6.2,16.5C6.2,17 6.04,17.43 5.76,17.77C6.08,18.12 6.44,18.44 6.81,18.73L8.71,14.27C8.26,13.62 8,12.84 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12C16,12.84 15.74,13.62 15.29,14.27L17.19,18.73C17.57,18.44 17.92,18.11 18.25,17.76M12,23C11,23 10.16,22.26 10,21.29C9.37,21.16 8.75,20.95 8.15,20.69L7.17,23H5L6.41,19.68C5.88,19.3 5.39,18.86 4.96,18.37C4.72,18.47 4.47,18.5 4.2,18.5A2,2 0 0,1 2.2,16.5C2.2,15.88 2.5,15.32 2.97,14.95C2.66,14 2.5,13.03 2.5,12C2.5,11 2.66,10 2.96,9.08C2.5,8.71 2.2,8.15 2.2,7.5C2.2,6.41 3.09,5.5 4.2,5.5C4.46,5.5 4.71,5.56 4.93,5.65C6.25,4.18 8,3.13 10,2.71C10.16,1.74 11,1 12,1C13,1 13.84,1.74 14,2.71C16,3.13 17.74,4.18 19.06,5.64C19.29,5.55 19.54,5.5 19.81,5.5A2,2 0 0,1 21.81,7.5C21.81,8.14 21.5,8.71 21.04,9.07C21.34,10 21.5,11 21.5,12C21.5,13 21.34,14 21.04,14.93C21.5,15.3 21.81,15.87 21.81,16.5C21.81,17.62 20.92,18.5 19.81,18.5C19.54,18.5 19.29,18.46 19.05,18.36C18.61,18.85 18.12,19.29 17.59,19.68L19,23H16.83L15.85,20.69C15.25,20.95 14.63,21.16 14,21.29C13.84,22.26 13,23 12,23Z"; +var mdiFerry = "M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z"; +var mdiFile = "M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"; +var mdiFileAccount = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,20V19C14,17.67 11.33,17 10,17C8.67,17 6,17.67 6,19V20H14M10,12A2,2 0 0,0 8,14A2,2 0 0,0 10,16A2,2 0 0,0 12,14A2,2 0 0,0 10,12Z"; +var mdiFileAccountOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M13 13C13 14.1 12.1 15 11 15S9 14.1 9 13 9.9 11 11 11 13 11.9 13 13M15 18V19H7V18C7 16.67 9.67 16 11 16S15 16.67 15 18Z"; +var mdiFileAlert = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M9 19H7V17H9M9 15H7V9H9M13 9V3.5L18.5 9H13Z"; +var mdiFileAlertOutline = "M10 18H8V16H10V18M10 14H8V8H10V14M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20Z"; +var mdiFileCabinet = "M14,8H10V6H14V8M20,4V20C20,21.11 19.11,22 18,22H6C4.89,22 4,21.11 4,20V4A2,2 0 0,1 6,2H18C19.11,2 20,2.9 20,4M18,13H6V20H18V13M18,4H6V11H18V4M14,15H10V17H14V15Z"; +var mdiFileCad = "M6 2C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M13 3.5L18.5 9H13M9.88 9.25H11.12V10.19C11.81 10.18 12.38 10.75 12.38 11.44V13.5L12.26 13.63L13.15 15.17C13.47 14.67 13.63 14.09 13.62 13.5H14.88C14.88 14.54 14.5 15.55 13.83 16.35L15.5 19.25V20.5L14.42 19.88L12.87 17.19C12.17 17.65 11.34 17.89 10.5 17.89C9.66 17.89 8.84 17.65 8.13 17.19L6.58 19.88L5.5 20.5V19.25L8.74 13.63L8.62 13.5V11.44C8.62 10.75 9.19 10.18 9.88 10.19M10.5 11.44C9.81 11.44 9.46 12.28 9.95 12.77C10.44 13.26 11.28 12.92 11.28 12.22C11.28 11.79 10.93 11.44 10.5 11.44M9.66 14.54L8.76 16.11C9.81 16.82 11.19 16.82 12.24 16.11L11.34 14.54C10.87 15 10.13 15 9.66 14.54Z"; +var mdiFileCadBox = "M5 3C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M11.25 5.25H12.75V6.38C13.58 6.38 14.25 7.05 14.25 7.88V10.37L14.11 10.5L15.18 12.36C15.55 11.76 15.75 11.07 15.75 10.36H17.25C17.26 11.61 16.81 12.82 16 13.77L18 17.25V18.75L16.7 18L14.84 14.78C13.12 15.91 10.89 15.91 9.16 14.78L7.3 18L6 18.75V17.25L9.89 10.5L9.75 10.37V7.88C9.75 7.05 10.42 6.38 11.25 6.38M12 7.88C11.16 7.88 10.74 8.9 11.34 9.5C11.94 10.08 12.95 9.65 12.94 8.81C12.94 8.29 12.5 7.88 12 7.88M11 11.6L9.91 13.5C11.17 14.36 12.83 14.36 14.09 13.5L13 11.6C12.43 12.11 11.57 12.11 11 11.6Z"; +var mdiFileCancel = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.5,11C8,11 6,13 6,15.5C6,18 8,20 10.5,20C13,20 15,18 15,15.5C15,13 13,11 10.5,11M10.5,12.5A3,3 0 0,1 13.5,15.5C13.5,16.06 13.35,16.58 13.08,17L9,12.92C9.42,12.65 9.94,12.5 10.5,12.5M7.5,15.5C7.5,14.94 7.65,14.42 7.92,14L12,18.08C11.58,18.35 11.06,18.5 10.5,18.5A3,3 0 0,1 7.5,15.5Z"; +var mdiFileCancelOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M11.5,10C14,10 16,12 16,14.5C16,17 14,19 11.5,19C9,19 7,17 7,14.5C7,12 9,10 11.5,10M11.5,11.5C10.94,11.5 10.42,11.65 10,11.92L14.08,16C14.35,15.58 14.5,15.06 14.5,14.5A3,3 0 0,0 11.5,11.5M8.5,14.5A3,3 0 0,0 11.5,17.5C12.06,17.5 12.58,17.35 13,17.08L8.92,13C8.65,13.42 8.5,13.94 8.5,14.5Z"; +var mdiFileCertificate = "M14 2H7A2 2 0 0 0 5 4V18A2 2 0 0 0 7 20H10V23L12 22L14 23V20H17A2 2 0 0 0 19 18V7M14 15V17L12 16L10 17V15L8 14L10 13V11L12 12L14 11V13L16 14M13 8V3.5L17.5 8Z"; +var mdiFileCertificateOutline = "M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14M14 2H7A2 2 0 0 0 5 4V18A2 2 0 0 0 7 20H8V18H7V4H13V8H17V18H16V20H17A2 2 0 0 0 19 18V7M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14M10 23L12 22L14 23V18H10M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14Z"; +var mdiFileChart = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z"; +var mdiFileChartOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M9 13V19H7V13H9M15 15V19H17V15H15M11 11V19H13V11H11Z"; +var mdiFileCheck = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11.2,18.46L15.95,13.71L14.78,12.3L11.2,15.88L9.61,14.3L8.45,15.46L11.2,18.46Z"; +var mdiFileCheckOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M11.2,18.46L8.45,15.46L9.61,14.3L11.2,15.88L14.78,12.3L15.95,13.71L11.2,18.46Z"; +var mdiFileClock = "M4 2C2.89 2 2 2.89 2 4V20A2 2 0 0 0 4 22H12.41A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 18 9.3V8L12 2H4M11 3.5L16.5 9H11V3.5M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12V17L18.61 19.16L19.36 17.94L16.5 16.25V12H15Z"; +var mdiFileClockOutline = "M4 2A2 2 0 0 0 2 4V20A2 2 0 0 0 4 22H12.41A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 18 9.3V8L12 2H4M4 4H11V9H16A7 7 0 0 0 9 16A7 7 0 0 0 10.26 20H4V4M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12V17L18.61 19.16L19.36 17.94L16.5 16.25V12H15Z"; +var mdiFileCloud = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z"; +var mdiFileCloudOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17 16.92C17 18.07 16.07 19 14.92 19H9.5C8.12 19 7 17.88 7 16.5C7 15.21 8 14.15 9.23 14C9.75 13 10.79 12.33 12 12.33C13.5 12.33 14.78 13.42 15.07 14.83C16.14 14.93 17 15.82 17 16.92Z"; +var mdiFileCode = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z"; +var mdiFileCodeOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9.54 15.65L11.63 17.74L10.35 19L7 15.65L10.35 12.3L11.63 13.56L9.54 15.65M17 15.65L13.65 19L12.38 17.74L14.47 15.65L12.38 13.56L13.65 12.3L17 15.65Z"; +var mdiFileCog = "M6 2C4.89 2 4 2.89 4 4V20A2 2 0 0 0 6 22H12.68A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 20 12.08V8L14 2H6M13 3.5L18.5 9H13V3.5M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; +var mdiFileCogOutline = "M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; +var mdiFileCompare = "M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"; +var mdiFileDelimited = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M15 16L13 20H10L12 16H9V11H15V16M13 9V3.5L18.5 9H13Z"; +var mdiFileDelimitedOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M10 19L12 15H9V10H15V15L13 19H10"; +var mdiFileDocument = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z"; +var mdiFileDocumentEdit = "M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V20.09L12.09,18H6V16H14.09L16.09,14H6V12H18.09L20,10.09V8L14,2H6M13,3.5L18.5,9H13V3.5M20.15,13C20,13 19.86,13.05 19.75,13.16L18.73,14.18L20.82,16.26L21.84,15.25C22.05,15.03 22.05,14.67 21.84,14.46L20.54,13.16C20.43,13.05 20.29,13 20.15,13M18.14,14.77L12,20.92V23H14.08L20.23,16.85L18.14,14.77Z"; +var mdiFileDocumentEditOutline = "M8,12H16V14H8V12M10,20H6V4H13V9H18V12.1L20,10.1V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H10V20M8,18H12.1L13,17.1V16H8V18M20.2,13C20.3,13 20.5,13.1 20.6,13.2L21.9,14.5C22.1,14.7 22.1,15.1 21.9,15.3L20.9,16.3L18.8,14.2L19.8,13.2C19.9,13.1 20,13 20.2,13M20.2,16.9L14.1,23H12V20.9L18.1,14.8L20.2,16.9Z"; +var mdiFileDocumentMultiple = "M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4M15 7H20.5L15 1.5V7M8 0H16L22 6V18C22 19.11 21.11 20 20 20H8C6.89 20 6 19.1 6 18V2C6 .89 6.89 0 8 0M17 16V14H8V16H17M20 12V10H8V12H20Z"; +var mdiFileDocumentMultipleOutline = "M16 0H8C6.9 0 6 .9 6 2V18C6 19.1 6.9 20 8 20H20C21.1 20 22 19.1 22 18V6L16 0M20 18H8V2H15V7H20V18M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4M10 10V12H18V10H10M10 14V16H15V14H10Z"; +var mdiFileDocumentOutline = "M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M6,4H13V9H18V20H6V4M8,12V14H16V12H8M8,16V18H13V16H8Z"; +var mdiFileDownload = "M14,2H6C4.89,2 4,2.89 4,4V20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20V8L14,2M12,19L8,15H10.5V12H13.5V15H16L12,19M13,9V3.5L18.5,9H13Z"; +var mdiFileDownloadOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M12,19L8,15H10.5V12H13.5V15H16L12,19Z"; +var mdiFileEdit = "M6 2C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H10V20.1L20 10.1V8L14 2H6M13 3.5L18.5 9H13V3.5M20.1 13C20 13 19.8 13.1 19.7 13.2L18.7 14.2L20.8 16.3L21.8 15.3C22 15.1 22 14.7 21.8 14.5L20.5 13.2C20.4 13.1 20.3 13 20.1 13M18.1 14.8L12 20.9V23H14.1L20.2 16.9L18.1 14.8Z"; +var mdiFileEditOutline = "M10 20H6V4H13V9H18V12.1L20 10.1V8L14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H10V20M20.2 13C20.3 13 20.5 13.1 20.6 13.2L21.9 14.5C22.1 14.7 22.1 15.1 21.9 15.3L20.9 16.3L18.8 14.2L19.8 13.2C19.9 13.1 20 13 20.2 13M20.2 16.9L14.1 23H12V20.9L18.1 14.8L20.2 16.9Z"; +var mdiFileExcel = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.8,20H14L12,16.6L10,20H8.2L11.1,15.5L8.2,11H10L12,14.4L14,11H15.8L12.9,15.5L15.8,20M13,9V3.5L18.5,9H13Z"; +var mdiFileExcelBox = "M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiFileExcelBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M13 12L16.2 17H14.2L12 13.2L9.8 17H7.8L11 12L7.8 7H9.8L12 10.8L14.2 7H16.2L13 12Z"; +var mdiFileExcelOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M12.9 14.5L15.8 19H14L12 15.6L10 19H8.2L11.1 14.5L8.2 10H10L12 13.4L14 10H15.8L12.9 14.5Z"; +var mdiFileExport = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35"; +var mdiFileExportOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M16 11V18.1L13.9 16L11.1 18.8L8.3 16L11.1 13.2L8.9 11H16Z"; +var mdiFileEye = "M17,18C17.56,18 18,18.44 18,19C18,19.56 17.56,20 17,20C16.44,20 16,19.56 16,19C16,18.44 16.44,18 17,18M17,15C14.27,15 11.94,16.66 11,19C11.94,21.34 14.27,23 17,23C19.73,23 22.06,21.34 23,19C22.06,16.66 19.73,15 17,15M17,21.5A2.5,2.5 0 0,1 14.5,19A2.5,2.5 0 0,1 17,16.5A2.5,2.5 0 0,1 19.5,19A2.5,2.5 0 0,1 17,21.5M9.14,19.75L8.85,19L9.14,18.26C10.43,15.06 13.5,13 17,13C18.05,13 19.06,13.21 20,13.56V8L14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10.5C9.95,21.34 9.5,20.58 9.14,19.75M13,3.5L18.5,9H13V3.5Z"; +var mdiFileEyeOutline = "M17,18C17.56,18 18,18.44 18,19C18,19.56 17.56,20 17,20C16.44,20 16,19.56 16,19C16,18.44 16.44,18 17,18M17,15C14.27,15 11.94,16.66 11,19C11.94,21.34 14.27,23 17,23C19.73,23 22.06,21.34 23,19C22.06,16.66 19.73,15 17,15M17,21.5A2.5,2.5 0 0,1 14.5,19A2.5,2.5 0 0,1 17,16.5A2.5,2.5 0 0,1 19.5,19A2.5,2.5 0 0,1 17,21.5M9.27,20H6V4H13V9H18V13.07C18.7,13.15 19.36,13.32 20,13.56V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H10.5C10,21.41 9.59,20.73 9.27,20Z"; +var mdiFileFind = "M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z"; +var mdiFileFindOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M6,4H13L18,9V17.58L16.16,15.74C17.44,13.8 17.23,11.17 15.5,9.46C14.55,8.5 13.28,8 12,8C10.72,8 9.45,8.5 8.47,9.46C6.5,11.41 6.5,14.57 8.47,16.5C9.44,17.5 10.72,17.97 12,17.97C12.96,17.97 13.92,17.69 14.75,17.14L17.6,20H6V4M14.11,15.1C13.55,15.66 12.8,16 12,16C11.2,16 10.45,15.67 9.89,15.1C9.33,14.54 9,13.79 9,13C9,12.19 9.32,11.44 9.89,10.88C10.45,10.31 11.2,10 12,10C12.8,10 13.55,10.31 14.11,10.88C14.67,11.44 15,12.19 15,13C15,13.79 14.68,14.54 14.11,15.1Z"; +var mdiFileHidden = "M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z"; +var mdiFileImage = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z"; +var mdiFileImageOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M17,13V19H7L12,14L14,16M10,10.5A1.5,1.5 0 0,1 8.5,12A1.5,1.5 0 0,1 7,10.5A1.5,1.5 0 0,1 8.5,9A1.5,1.5 0 0,1 10,10.5Z"; +var mdiFileImport = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05"; +var mdiFileImportOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 11.93V19H7.93L10.05 16.88L7.22 14.05L10.05 11.22L12.88 14.05L15 11.93Z"; +var mdiFileKey = "M11 16A1 1 0 1 1 10 15A1 1 0 0 1 11 16M20 8V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2H14M17 15H12.83A3 3 0 1 0 12.83 17H14V19H16V17H17M18.5 9L13 3.5V9Z"; +var mdiFileKeyOutline = "M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8L14 2M18 20H6V4H13V9H18M12.83 15A3 3 0 1 0 12.83 17H14V19H16V17H17V15M10 17A1 1 0 1 1 11 16A1 1 0 0 1 10 17Z"; +var mdiFileLink = "M14 2H6C4.89 2 4 2.89 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M11 20H10C8.39 20 6 18.94 6 16C6 13.07 8.39 12 10 12H11V14H10C9.54 14 8 14.17 8 16C8 17.9 9.67 18 10 18H11V20M15 15V17H9V15H15M14 20H13V18H14C14.46 18 16 17.83 16 16C16 14.1 14.33 14 14 14H13V12H14C15.61 12 18 13.07 18 16C18 18.94 15.61 20 14 20M13 9V3.5L18.5 9H13Z"; +var mdiFileLinkOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M11 19H10.75C9.45 19 7 18.22 7 15.25S9.45 11.5 10.75 11.5H11V13H10.75C10.38 13 8.5 13.13 8.5 15.25C8.5 17.44 10.5 17.5 10.75 17.5H11V19M14 16H10V14.5H14V16M13 11.5H13.25C14.55 11.5 17 12.28 17 15.25S14.55 19 13.25 19H13V17.5H13.25C13.62 17.5 15.5 17.37 15.5 15.25C15.5 13.06 13.5 13 13.25 13H13V11.5Z"; +var mdiFileLock = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z"; +var mdiFileLockOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 15V14C15 12.34 13.66 11 12 11S9 12.36 9 14V15H8V19H16V15H15M13 15H11V14C11 13.45 11.45 13 12 13S13 13.47 13 14V15Z"; +var mdiFileMove = "M14,17H18V14L23,18.5L18,23V20H14V17M13,9H18.5L13,3.5V9M6,2H14L20,8V12.34C19.37,12.12 18.7,12 18,12A6,6 0 0,0 12,18C12,19.54 12.58,20.94 13.53,22H6C4.89,22 4,21.1 4,20V4A2,2 0 0,1 6,2Z"; +var mdiFileMoveOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 20.41 4.12 20.8 4.34 21.12C4.41 21.23 4.5 21.33 4.59 21.41C4.95 21.78 5.45 22 6 22H13.53C13 21.42 12.61 20.75 12.35 20H6V4H13V9H18V12C18.7 12 19.37 12.12 20 12.34V8L14 2M18 23L23 18.5L20 15.8L18 14V17H14V20H18V23Z"; +var mdiFileMultiple = "M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z"; +var mdiFileMultipleOutline = "M16 0H8C6.9 0 6 .9 6 2V18C6 19.1 6.9 20 8 20H20C21.1 20 22 19.1 22 18V6L16 0M20 18H8V2H15V7H20V18M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4Z"; +var mdiFileMusic = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,13H11V18A2,2 0 0,1 9,20A2,2 0 0,1 7,18A2,2 0 0,1 9,16C9.4,16 9.7,16.1 10,16.3V11H13V13M13,9V3.5L18.5,9H13Z"; +var mdiFileMusicOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M13,10V12H11V17A2,2 0 0,1 9,19A2,2 0 0,1 7,17A2,2 0 0,1 9,15C9.4,15 9.7,15.1 10,15.3V10H13Z"; +var mdiFileOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"; +var mdiFilePdf = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M10.1,11.4C10.08,11.44 9.81,13.16 8,16.09C8,16.09 4.5,17.91 5.33,19.27C6,20.35 7.65,19.23 9.07,16.59C9.07,16.59 10.89,15.95 13.31,15.77C13.31,15.77 17.17,17.5 17.7,15.66C18.22,13.8 14.64,14.22 14,14.41C14,14.41 12,13.06 11.5,11.2C11.5,11.2 12.64,7.25 10.89,7.3C9.14,7.35 9.8,10.43 10.1,11.4M10.91,12.44C10.94,12.45 11.38,13.65 12.8,14.9C12.8,14.9 10.47,15.36 9.41,15.8C9.41,15.8 10.41,14.07 10.91,12.44M14.84,15.16C15.42,15 17.17,15.31 17.1,15.64C17.04,15.97 14.84,15.16 14.84,15.16M7.77,17C7.24,18.24 6.33,19 6.1,19C5.87,19 6.8,17.4 7.77,17M10.91,10.07C10.91,10 10.55,7.87 10.91,7.92C11.45,8 10.91,10 10.91,10.07Z"; +var mdiFilePdfBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M10.59,10.08C10.57,10.13 10.3,11.84 8.5,14.77C8.5,14.77 5,16.58 5.83,17.94C6.5,19 8.15,17.9 9.56,15.27C9.56,15.27 11.38,14.63 13.79,14.45C13.79,14.45 17.65,16.19 18.17,14.34C18.69,12.5 15.12,12.9 14.5,13.09C14.5,13.09 12.46,11.75 12,9.89C12,9.89 13.13,5.95 11.38,6C9.63,6.05 10.29,9.12 10.59,10.08M11.4,11.13C11.43,11.13 11.87,12.33 13.29,13.58C13.29,13.58 10.96,14.04 9.9,14.5C9.9,14.5 10.9,12.75 11.4,11.13M15.32,13.84C15.9,13.69 17.64,14 17.58,14.32C17.5,14.65 15.32,13.84 15.32,13.84M8.26,15.7C7.73,16.91 6.83,17.68 6.6,17.67C6.37,17.66 7.3,16.07 8.26,15.7M11.4,8.76C11.39,8.71 11.03,6.57 11.4,6.61C11.94,6.67 11.4,8.71 11.4,8.76Z"; +var mdiFilePdfBoxOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M19 5V19H5V5H19M17.9 13.5C17.6 13 16.9 12.8 15.7 12.8C15.3 12.8 14.9 12.8 14.5 12.9C14.2 12.7 13.9 12.5 13.7 12.3C13.1 11.8 12.5 10.9 12.2 9.8V9.7C12.5 8.4 12.8 6.9 12.2 6.2C11.9 6.1 11.7 6 11.5 6H11.3C10.9 6 10.6 6.4 10.5 6.7C10.1 8 10.4 8.7 10.7 9.9C10.5 10.8 10.1 11.7 9.7 12.7C9.3 13.4 9 14 8.7 14.5C8.3 14.7 8 14.8 7.8 15C6.7 15.7 6.1 16.5 6 17V17.5L6.5 17.8C6.7 18 6.8 18 7 18C7.8 18 8.7 17.1 9.9 15H10C11 14.7 12.2 14.5 13.9 14.3C14.9 14.8 16.1 15 16.8 15C17.2 15 17.5 14.9 17.7 14.7C17.9 14.5 18 14.3 18 14.1C18 13.8 18 13.6 17.9 13.5M6.8 17.3C6.8 16.9 7.3 16.3 8 15.7C8.1 15.6 8.3 15.5 8.5 15.4C7.8 16.5 7.2 17.2 6.8 17.3M11.3 6.7C11.3 6.7 11.3 6.6 11.4 6.6H11.5C11.7 6.8 11.7 7.1 11.6 7.7V7.9C11.5 8.1 11.5 8.4 11.4 8.7C11.1 7.8 11.1 7.1 11.3 6.7M10.1 14.3H10C10.1 14 10.3 13.7 10.5 13.3C10.9 12.5 11.3 11.7 11.5 11C11.9 11.9 12.4 12.6 13 13.1C13.1 13.2 13.3 13.3 13.4 13.4C12.5 13.5 11.3 13.8 10.1 14.3M17.3 14.2H17.1C16.7 14.2 16 14 15.3 13.7C15.4 13.6 15.5 13.6 15.5 13.6C16.9 13.6 17.2 13.8 17.3 13.9L17.4 14C17.4 14.2 17.4 14.2 17.3 14.2Z"; +var mdiFilePdfOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M10.92,12.31C10.68,11.54 10.15,9.08 11.55,9.04C12.95,9 12.03,12.16 12.03,12.16C12.42,13.65 14.05,14.72 14.05,14.72C14.55,14.57 17.4,14.24 17,15.72C16.57,17.2 13.5,15.81 13.5,15.81C11.55,15.95 10.09,16.47 10.09,16.47C8.96,18.58 7.64,19.5 7.1,18.61C6.43,17.5 9.23,16.07 9.23,16.07C10.68,13.72 10.9,12.35 10.92,12.31M11.57,13.15C11.17,14.45 10.37,15.84 10.37,15.84C11.22,15.5 13.08,15.11 13.08,15.11C11.94,14.11 11.59,13.16 11.57,13.15M14.71,15.32C14.71,15.32 16.46,15.97 16.5,15.71C16.57,15.44 15.17,15.2 14.71,15.32M9.05,16.81C8.28,17.11 7.54,18.39 7.72,18.39C7.9,18.4 8.63,17.79 9.05,16.81M11.57,11.26C11.57,11.21 12,9.58 11.57,9.53C11.27,9.5 11.56,11.22 11.57,11.26Z"; +var mdiFilePercent = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M7.37,20L15,12.35L13.65,11L6,18.65L7.37,20M13,9H18.5L13,3.5V9M7.5,11A1.5,1.5 0 0,0 6,12.5A1.5,1.5 0 0,0 7.5,14A1.5,1.5 0 0,0 9,12.5A1.5,1.5 0 0,0 7.5,11M13.5,17A1.5,1.5 0 0,0 12,18.5A1.5,1.5 0 0,0 13.5,20A1.5,1.5 0 0,0 15,18.5A1.5,1.5 0 0,0 13.5,17Z"; +var mdiFilePercentOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M10 11.5C10 12.33 9.33 13 8.5 13S7 12.33 7 11.5 7.67 10 8.5 10 10 10.67 10 11.5M16 17.5C16 18.33 15.33 19 14.5 19S13 18.33 13 17.5 13.67 16 14.5 16 16 16.67 16 17.5M16 11.35L8.37 19L7 17.65L14.65 10L16 11.35Z"; +var mdiFilePhone = "M14 2H6C4.89 2 4 2.89 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M17 19.44C17 19.75 16.75 20 16.44 20C11.23 20 7 15.77 7 10.56C7 10.25 7.25 10 7.56 10H9.5C9.81 10 10.06 10.25 10.06 10.56C10.06 11.25 10.17 11.92 10.37 12.54C10.43 12.73 10.39 12.95 10.23 13.11L9 14.33C9.81 15.9 11.1 17.19 12.67 18L13.9 16.77C14.05 16.61 14.27 16.57 14.46 16.63C15.08 16.83 15.75 16.95 16.45 16.95C16.75 16.95 17 17.19 17 17.5V19.44M13 9V3.5L18.5 9H13Z"; +var mdiFilePhoneOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9 13.33C9.81 14.9 11.1 16.19 12.67 17L13.89 15.77C14.05 15.61 14.27 15.57 14.46 15.63C15.08 15.83 15.75 15.95 16.44 15.95C16.75 15.95 17 16.19 17 16.5V18.45C17 18.75 16.75 19 16.44 19C11.23 19 7 14.77 7 9.56C7 9.25 7.25 9 7.56 9H9.5C9.81 9 10.06 9.25 10.06 9.56C10.06 10.25 10.17 10.92 10.37 11.54C10.43 11.73 10.39 11.95 10.23 12.11L9 13.33Z"; +var mdiFilePlus = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,15V12H9V15H6V17H9V20H11V17H14V15H11Z"; +var mdiFilePlusOutline = "M12,14V11H10V14H7V16H10V19H12V16H15V14M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18"; +var mdiFilePowerpoint = "M12.6,12.3H10.6V15.5H12.7C13.3,15.5 13.6,15.3 13.9,15C14.2,14.7 14.3,14.4 14.3,13.9C14.3,13.4 14.2,13.1 13.9,12.8C13.6,12.5 13.2,12.3 12.6,12.3M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,16C14.6,16.5 14.1,16.7 12.8,16.7H10.6V20H9V11H12.8C14.1,11 14.7,11.3 15.2,11.8C15.8,12.4 16,13 16,13.9C16,14.8 15.8,15.5 15.2,16M13,9V3.5L18.5,9H13Z"; +var mdiFilePowerpointBox = "M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z"; +var mdiFilePowerpointBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M15.1 7.88C14.45 7.29 13.83 7 12.3 7H8V17H9.8V13.4H12.3C13.8 13.4 14.46 13.12 15.1 12.58C15.74 12.03 16 11.25 16 10.23C16 9.26 15.75 8.5 15.1 7.88M13.6 11.5C13.28 11.81 12.9 12 12.22 12H9.8V8.4H12.1C12.76 8.4 13.27 8.65 13.6 9C13.93 9.35 14.1 9.72 14.1 10.24C14.1 10.8 13.92 11.19 13.6 11.5Z"; +var mdiFilePowerpointOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15.2 10.8C14.7 10.3 14.1 10 12.8 10H9V19H10.6V15.7H12.8C14.1 15.7 14.6 15.5 15.2 15C15.8 14.5 16 13.8 16 12.9C16 12 15.8 11.4 15.2 10.8M13.9 14C13.6 14.3 13.3 14.5 12.7 14.5H10.6V11.3H12.6C13.2 11.3 13.6 11.5 13.9 11.8C14.2 12.1 14.3 12.4 14.3 12.9S14.2 13.7 13.9 14Z"; +var mdiFilePresentationBox = "M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiFileQuestion = "M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14C15,15.88 12.75,16.06 12.75,17.75H11.25C11.25,15.31 13.5,15.5 13.5,14A1.5,1.5 0 0,0 12,12.5A1.5,1.5 0 0,0 10.5,14H9A3,3 0 0,1 12,11M11.25,18.5H12.75V20H11.25V18.5Z"; +var mdiFileQuestionOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 13C15 14.89 12.75 15.07 12.75 16.76H11.25C11.25 14.32 13.5 14.5 13.5 13C13.5 12.18 12.83 11.5 12 11.5S10.5 12.18 10.5 13H9C9 11.35 10.34 10 12 10S15 11.35 15 13M12.75 17.5V19H11.25V17.5H12.75Z"; +var mdiFileRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M13 9H18.5L13 3.5V9M6 2H14L20 8V12.17C19.5 12.06 19 12 18.5 12C14.91 12 12 14.91 12 18.5C12 19.79 12.37 21 13 22H6C4.88 22 4 21.1 4 20L4 4C4 2.89 4.89 2 6 2Z"; +var mdiFileRefreshOutline = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M14 2L20 8V12.17C19.5 12.06 19 12 18.5 12L18 12V9H13V4H6V20H12.17C12.34 20.72 12.63 21.39 13 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14Z"; +var mdiFileRemove = "M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M13,9H18.5L13,3.5V9M10,14.59L7.88,12.46L6.46,13.88L8.59,16L6.46,18.12L7.88,19.54L10,17.41L12.12,19.54L13.54,18.12L11.41,16L13.54,13.88L12.12,12.46L10,14.59Z"; +var mdiFileRemoveOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M11.95 15.46L14.08 17.58L12.66 19L10.54 16.87L8.42 19L7 17.58L9.13 15.46L7 13.34L8.42 11.92L10.54 14.05L12.66 11.92L14.08 13.34L11.95 15.46Z"; +var mdiFileReplace = "M14,12H19.5L14,6.5V12M8,5H15L21,11V21A2,2 0 0,1 19,23H8C6.89,23 6,22.1 6,21V18H11V20L15,17L11,14V16H6V7A2,2 0 0,1 8,5M13.5,3H4V16H6V18H4A2,2 0 0,1 2,16V3A2,2 0 0,1 4,1H11.5L13.5,3Z"; +var mdiFileReplaceOutline = "M14,3L12,1H4A2,2 0 0,0 2,3V15A2,2 0 0,0 4,17H11V19L15,16L11,13V15H4V3H14M21,10V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19V12H14V7H8V13H6V7A2,2 0 0,1 8,5H16L21,10Z"; +var mdiFileRestore = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z"; +var mdiFileRestoreOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13L18 9V20M17 13.24C17 15.86 14.87 18 12.24 18C10.29 18 8.61 16.82 7.88 15.14H9.5C10.11 16 11.11 16.57 12.24 16.57C14.08 16.57 15.57 15.07 15.57 13.24S14.08 9.9 12.24 9.9C10.95 9.9 9.86 10.65 9.29 11.71L10.81 13.24H7V9.43L8.24 10.67C9.09 9.35 10.55 8.5 12.24 8.5C14.87 8.47 17 10.61 17 13.24Z"; +var mdiFileSearch = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C9.22,18.67 9.05,14.56 11.5,11.92C13.69,9.5 17.33,9.13 20,11V8L14,2M13,9V3.5L18.5,9H13M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z"; +var mdiFileSearchOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C11.53,20.77 11.25,20.4 11,20H6V4H13V9H18V10.18C18.71,10.34 19.39,10.61 20,11V8L14,2M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z"; +var mdiFileSend = "M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z"; +var mdiFileSendOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M12.54 18.5V16.5H8.54V14.5H12.54V12.5L15.54 15.5L12.54 18.5Z"; +var mdiFileSettings = "M6 0C4.89 0 4 .89 4 2V18A2 2 0 0 0 6 20H18A2 2 0 0 0 20 18V6L14 0H6M13 1.5L18.5 7H13V1.5M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z"; +var mdiFileSettingsOutline = "M6 0A2 2 0 0 0 4 2V18A2 2 0 0 0 6 20H18A2 2 0 0 0 20 18V6L14 0H6M6 2H13V7H18V18H6V2M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z"; +var mdiFileStar = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M14.5 18.9L12 17.5L9.5 19L10.2 16.2L8 14.3L10.9 14.1L12 11.4L13.1 14L16 14.2L13.8 16.1L14.5 18.9M13 9V3.5L18.5 9H13Z"; +var mdiFileStarOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M9.5 18L10.2 15.2L8 13.3L10.9 13.1L12 10.4L13.1 13L16 13.2L13.8 15.1L14.5 17.9L12 16.5L9.5 18Z"; +var mdiFileSwap = "M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8M14 18V16H10V18L7 15L10 12V14H14V12L17 15M13 9V3.5L18.5 9Z"; +var mdiFileSwapOutline = "M17 15L14 12V14H10V12L7 15L10 18V16H14V18M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8L14 2M18 20H6V4H13V9H18Z"; +var mdiFileSync = "M11 17.5C11 13.9 13.9 11 17.5 11C18.4 11 19.2 11.2 20 11.5V8L14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H12.8C11.7 20.8 11 19.2 11 17.5M13 3.5L18.5 9H13V3.5M17 12V13.5C19.2 13.5 21 15.3 21 17.5C21 18.3 20.8 19.1 20.3 19.7L19.2 18.6C19.4 18.3 19.5 17.9 19.5 17.5C19.5 16.1 18.4 15 17 15V16.5L14.8 14.3L17 12M17 23V21.5C14.8 21.5 13 19.7 13 17.5C13 16.7 13.2 15.9 13.7 15.3L14.8 16.4C14.6 16.7 14.5 17.1 14.5 17.5C14.5 18.9 15.6 20 17 20V18.5L19.2 20.7L17 23Z"; +var mdiFileSyncOutline = "M12.8 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14L20 8V11.5C19.4 11.2 18.7 11.1 18 11V9H13V4H6V20H11.5C11.8 20.7 12.3 21.4 12.8 22M17 12L14.8 14.2L17 16.4V15C18.4 15 19.5 16.1 19.5 17.5C19.5 17.9 19.4 18.3 19.2 18.6L20.3 19.7C20.7 19.1 21 18.3 21 17.5C21 15.3 19.2 13.5 17 13.5V12M19.2 20.8L17 18.5V20C15.6 20 14.5 18.9 14.5 17.5C14.5 17.1 14.6 16.7 14.8 16.4L13.7 15.3C13.3 15.9 13 16.7 13 17.5C13 19.7 14.8 21.5 17 21.5V23L19.2 20.8Z"; +var mdiFileTable = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M10,19H7V17H10V19M10,16H7V14H10V16M10,13H7V11H10V13M14,19H11V17H14V19M14,16H11V14H14V16M14,13H11V11H14V13M13,9V3.5L18.5,9H13Z"; +var mdiFileTableBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M9 18H6V16H9V18M9 15H6V13H9V15M9 12H6V10H9V12M13 18H10V16H13V18M13 15H10V13H13V15M13 12H10V10H13V12Z"; +var mdiFileTableBoxMultiple = "M3 5V21H19V23H3C1.9 23 1 22.1 1 21V5H3M21 1H7C5.89 1 5 1.89 5 3V17C5 18.11 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.89 22.1 1 21 1M11 16H8V14H11V16M11 13H8V11H11V13M11 10H8V8H11V10M15 16H12V14H15V16M15 13H12V11H15V13M15 10H12V8H15V10Z"; +var mdiFileTableBoxMultipleOutline = "M3 5V21H19V23H3C1.9 23 1 22.1 1 21V5H3M21 1H7C5.89 1 5 1.89 5 3V17C5 18.1 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.9 22.1 1 21 1M21 17H7V3H21V17M11 14H8V16H11V14M15 14H12V16H15V14M11 11H8V13H11V11M15 11H12V13H15V11M11 8H8V10H11V8M15 8H12V10H15V8Z"; +var mdiFileTableBoxOutline = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M19 19H5V5H19V19M9 18H6V16H9V18M13 18H10V16H13V18M9 15H6V13H9V15M13 15H10V13H13V15M9 12H6V10H9V12M13 12H10V10H13V12Z"; +var mdiFileTableOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20M10,13H7V11H10V13M14,13H11V11H14V13M10,16H7V14H10V16M14,16H11V14H14V16M10,19H7V17H10V19M14,19H11V17H14V19Z"; +var mdiFileTree = "M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z"; +var mdiFileTreeOutline = "M12 13H7V18H12V20H5V10H7V11H12V13M8 4V6H4V4H8M10 2H2V8H10V2M20 11V13H16V11H20M22 9H14V15H22V9M20 18V20H16V18H20M22 16H14V22H22V16Z"; +var mdiFileUndo = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M12.16,14.31C10.6,14.31 9.19,14.89 8.11,15.83L6,13.72V19H11.28L9.15,16.88C9.97,16.2 11,15.78 12.16,15.78C14.23,15.78 16,17.13 16.61,19L18,18.54C17.19,16.09 14.88,14.31 12.16,14.31Z"; +var mdiFileUndoOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17 17.61L15.84 18C15.33 16.44 13.86 15.31 12.13 15.31C11.17 15.31 10.31 15.66 9.63 16.23L11.4 18H7V13.6L8.76 15.36C9.66 14.57 10.83 14.09 12.13 14.09C14.4 14.09 16.33 15.57 17 17.61Z"; +var mdiFileUpload = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z"; +var mdiFileUploadOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M12,12L16,16H13.5V19H10.5V16H8L12,12Z"; +var mdiFileVideo = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z"; +var mdiFileVideoOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M16,18L13.5,16.3V18H8V13H13.5V14.7L16,13V18Z"; +var mdiFileWord = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,20H13.8L12,13.2L10.2,20H8.8L6.6,11H8.1L9.5,17.8L11.3,11H12.6L14.4,17.8L15.8,11H17.3L15.2,20M13,9V3.5L18.5,9H13Z"; +var mdiFileWordBox = "M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiFileWordBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M17.9 7L15.5 17H14L12 9.5L10 17H8.5L6.1 7H7.8L9.34 14.5L11.3 7H12.7L14.67 14.5L16.2 7H17.9Z"; +var mdiFileWordOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z"; +var mdiFilm = "M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z"; +var mdiFilmstrip = "M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z"; +var mdiFilmstripBox = "M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19M7 18V16H5V18H7M7 13V11H5V13H7M7 8V6H5V8H7M19 18V16H17V18H19M19 13V11H17V13H19M19 8V6H17V8H19Z"; +var mdiFilmstripBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M10,15H8V13H10V15M10,11H8V9H10V11M10,7H8V5H10V7M20,15H18V13H20V15M20,11H18V9H20V11M20,7H18V5H20V7Z"; +var mdiFilmstripOff = "M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z"; +var mdiFilter = "M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z"; +var mdiFilterMenu = "M11 11L16.76 3.62A1 1 0 0 0 16.59 2.22A1 1 0 0 0 16 2H2A1 1 0 0 0 1.38 2.22A1 1 0 0 0 1.21 3.62L7 11V16.87A1 1 0 0 0 7.29 17.7L9.29 19.7A1 1 0 0 0 10.7 19.7A1 1 0 0 0 11 18.87V11M13 16L18 21L23 16Z"; +var mdiFilterMenuOutline = "M12 18.88A1 1 0 0 1 11.71 19.71A1 1 0 0 1 10.3 19.71L6.3 15.71A1 1 0 0 1 6 14.87V9.75L1.21 3.62A1 1 0 0 1 1.38 2.22A1 1 0 0 1 2 2H16A1 1 0 0 1 16.62 2.22A1 1 0 0 1 16.79 3.62L12 9.75V18.88M4 4L8 9.06V14.58L10 16.58V9.05L14 4M13 16L18 21L23 16Z"; +var mdiFilterMinus = "M12 12V19.88C12.04 20.18 11.94 20.5 11.71 20.71C11.32 21.1 10.69 21.1 10.3 20.71L8.29 18.7C8.06 18.47 7.96 18.16 8 17.86V12H7.97L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L12.03 12H12M15 17H23V19H15V17Z"; +var mdiFilterMinusOutline = "M15 17H23V19H15V17M13 19.88C13.04 20.18 12.94 20.5 12.72 20.71C12.32 21.1 11.69 21.1 11.3 20.71L7.29 16.7C7.06 16.47 6.96 16.16 7 15.87V10.75L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L13 10.75V19.88M5.04 5L9 10.07V15.58L11 17.58V10.05L14.96 5H5.04Z"; +var mdiFilterOff = "M2.39 1.73L1.11 3L9.5 11.37L9.97 12H10V17.87C9.96 18.16 10.06 18.47 10.29 18.7L12.3 20.71C12.69 21.1 13.32 21.1 13.71 20.71C13.94 20.5 14.04 20.18 14 19.88V15.89L20.84 22.73L22.11 21.46L14 13.35L9.41 8.76L4.15 3.5L2.39 1.73M6.21 3L14.54 11.34L19.79 4.62C20.13 4.19 20.05 3.56 19.62 3.22C19.43 3.08 19.22 3 19 3H6.21Z"; +var mdiFilterOffOutline = "M2.39 1.73L1.11 3L9 10.89V15.87C8.96 16.16 9.06 16.47 9.29 16.7L13.3 20.71C13.69 21.1 14.32 21.1 14.71 20.71C14.94 20.5 15.04 20.18 15 19.88V16.89L20.84 22.73L22.11 21.46L15 14.35V14.34L13 12.35L11 10.34L4.15 3.5L2.39 1.73M6.21 3L8.2 5H16.96L13.11 9.91L15 11.8V10.75L19.79 4.62C20.13 4.19 20.05 3.56 19.62 3.22C19.43 3.08 19.22 3 19 3H6.21M11 12.89L13 14.89V17.58L11 15.58V12.89Z"; +var mdiFilterOutline = "M15,19.88C15.04,20.18 14.94,20.5 14.71,20.71C14.32,21.1 13.69,21.1 13.3,20.71L9.29,16.7C9.06,16.47 8.96,16.16 9,15.87V10.75L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L15,10.75V19.88M7.04,5L11,10.06V15.58L13,17.58V10.05L16.96,5H7.04Z"; +var mdiFilterPlus = "M12 12V19.88C12.04 20.18 11.94 20.5 11.71 20.71C11.32 21.1 10.69 21.1 10.3 20.71L8.29 18.7C8.06 18.47 7.96 18.16 8 17.87V12H7.97L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3H17C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L12.03 12H12M15 17H18V14H20V17H23V19H20V22H18V19H15V17Z"; +var mdiFilterPlusOutline = "M15 17H18V14H20V17H23V19H20V22H18V19H15V17M13 19.88C13.04 20.18 12.94 20.5 12.72 20.71C12.32 21.1 11.69 21.1 11.3 20.71L7.29 16.7C7.06 16.47 6.96 16.16 7 15.87V10.75L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L13 10.75V19.88M5.04 5L9 10.07V15.58L11 17.58V10.05L14.96 5H5.04Z"; +var mdiFilterRemove = "M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M12,12V19.88C12.04,20.18 11.94,20.5 11.71,20.71C11.32,21.1 10.69,21.1 10.3,20.71L8.29,18.7C8.06,18.47 7.96,18.16 8,17.87V12H7.97L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L12.03,12H12Z"; +var mdiFilterRemoveOutline = "M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M13,19.88C13.04,20.18 12.94,20.5 12.71,20.71C12.32,21.1 11.69,21.1 11.3,20.71L7.29,16.7C7.06,16.47 6.96,16.16 7,15.87V10.75L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L13,10.75V19.88M5.04,5L9,10.06V15.58L11,17.58V10.05L14.96,5H5.04Z"; +var mdiFilterVariant = "M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z"; +var mdiFilterVariantMinus = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M23 18H15V20H23V18Z"; +var mdiFilterVariantPlus = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiFilterVariantRemove = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; +var mdiFinance = "M6,16.5L3,19.44V11H6M11,14.66L9.43,13.32L8,14.64V7H11M16,13L13,16V3H16M18.81,12.81L17,11H22V16L20.21,14.21L13,21.36L9.53,18.34L5.75,22H3L9.47,15.66L13,18.64"; +var mdiFindReplace = "M11,6C12.38,6 13.63,6.56 14.54,7.46L12,10H18V4L15.95,6.05C14.68,4.78 12.93,4 11,4C7.47,4 4.57,6.61 4.08,10H6.1C6.56,7.72 8.58,6 11,6M16.64,15.14C17.3,14.24 17.76,13.17 17.92,12H15.9C15.44,14.28 13.42,16 11,16C9.62,16 8.37,15.44 7.46,14.54L10,12H4V18L6.05,15.95C7.32,17.22 9.07,18 11,18C12.55,18 14,17.5 15.14,16.64L20,21.5L21.5,20L16.64,15.14Z"; +var mdiFingerprint = "M17.81,4.47C17.73,4.47 17.65,4.45 17.58,4.41C15.66,3.42 14,3 12,3C10.03,3 8.15,3.47 6.44,4.41C6.2,4.54 5.9,4.45 5.76,4.21C5.63,3.97 5.72,3.66 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47 17.81,4.47M3.5,9.72C3.4,9.72 3.3,9.69 3.21,9.63C3,9.47 2.93,9.16 3.09,8.93C4.08,7.53 5.34,6.43 6.84,5.66C10,4.04 14,4.03 17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23 16.69,6.54C13.82,5.07 10.15,5.07 7.29,6.55C5.93,7.25 4.79,8.25 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72M9.75,21.79C9.62,21.79 9.5,21.74 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27 6.34,14.66C6.34,11.69 8.88,9.27 12,9.27C15.12,9.27 17.66,11.69 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16A0.5,0.5 0 0,1 16.66,14.66C16.66,12.24 14.57,10.27 12,10.27C9.43,10.27 7.34,12.24 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79 9.75,21.79M16.92,19.94C15.73,19.94 14.68,19.64 13.82,19.05C12.33,18.04 11.44,16.4 11.44,14.66A0.5,0.5 0 0,1 11.94,14.16A0.5,0.5 0 0,1 12.44,14.66C12.44,16.07 13.16,17.4 14.38,18.22C15.09,18.7 15.92,18.93 16.92,18.93C17.16,18.93 17.56,18.9 17.96,18.83C18.23,18.78 18.5,18.96 18.54,19.24C18.59,19.5 18.41,19.77 18.13,19.82C17.56,19.93 17.06,19.94 16.92,19.94M14.91,22C14.87,22 14.82,22 14.78,22C13.19,21.54 12.15,20.95 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.04 10.27,11.72 11.97,11.72C13.67,11.72 15.05,13.04 15.05,14.66C15.05,15.73 16,16.6 17.13,16.6C18.28,16.6 19.21,15.73 19.21,14.66C19.21,10.89 15.96,7.83 11.96,7.83C9.12,7.83 6.5,9.41 5.35,11.86C4.96,12.67 4.76,13.62 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C5.78,8.63 8.73,6.82 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,16.27 18.83,17.59 17.13,17.59C15.43,17.59 14.05,16.27 14.05,14.65C14.05,13.58 13.12,12.71 11.97,12.71C10.82,12.71 9.89,13.58 9.89,14.65C9.89,16.36 10.55,17.96 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36 15.38,21.62C15.33,21.85 15.12,22 14.91,22Z"; +var mdiFingerprintOff = "M1.5,4.77L2.78,3.5L20.5,21.22L19.23,22.5L16.67,19.94C15.58,19.9 14.62,19.6 13.82,19.05C12.34,18.05 11.46,16.43 11.44,14.71L10.27,13.53C10.03,13.85 9.89,14.23 9.89,14.65C9.89,16.36 10.55,17.96 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36 15.38,21.62C15.33,21.85 15.12,22 14.91,22H14.78C13.19,21.54 12.15,20.95 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.97 9.14,13.33 9.56,12.83L8.5,11.77C7.78,12.54 7.34,13.55 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79 9.75,21.79C9.62,21.79 9.5,21.74 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27 6.34,14.66C6.34,13.28 6.89,12 7.79,11.06L6.7,9.97C6.15,10.5 5.69,11.15 5.35,11.86C4.96,12.67 4.76,13.62 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C4.84,10.61 5.36,9.88 6,9.26L4.97,8.24C4.58,8.63 4.22,9.05 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72L3.21,9.63C3,9.47 2.93,9.16 3.09,8.93C3.45,8.43 3.84,7.96 4.27,7.53L1.5,4.77M17.81,4.47L17.58,4.41C15.66,3.42 14,3 12,3C10.03,3 8.15,3.47 6.44,4.41L6.29,4.46L5.71,3.89C5.73,3.74 5.82,3.61 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47 17.81,4.47M17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23 16.69,6.54C14.06,5.19 10.76,5.08 8.03,6.21L7.27,5.45C10.34,4.04 14.14,4.1 17.15,5.65M12,9.27C15.12,9.27 17.66,11.69 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16L16.93,15.11L16.72,14.89L16.66,14.66C16.66,12.27 14.62,10.32 12.09,10.27L11.15,9.33L12,9.27M14.38,18.22C14.71,18.45 15.07,18.62 15.47,18.73L12.63,15.9C12.92,16.82 13.53,17.65 14.38,18.22M19.21,14.66C19.21,10.89 15.96,7.83 11.96,7.83C11.26,7.83 10.58,7.93 9.93,8.11L9.12,7.3C10,7 10.97,6.82 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,15.65 19.69,16.53 18.89,17.06L18.17,16.34C18.79,16 19.21,15.38 19.21,14.66Z"; +var mdiFire = "M17.66 11.2C17.43 10.9 17.15 10.64 16.89 10.38C16.22 9.78 15.46 9.35 14.82 8.72C13.33 7.26 13 4.85 13.95 3C13 3.23 12.17 3.75 11.46 4.32C8.87 6.4 7.85 10.07 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C6.87 12.33 6.69 10.28 7.45 8.64C5.78 10 4.87 12.3 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C18.86 17.66 19.5 15 18.56 12.72L18.43 12.46C18.22 12 17.66 11.2 17.66 11.2M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.78 14.43 12.46 13.77 12.33 13C12.21 12.26 12.23 11.63 12.5 10.94C12.69 11.32 12.89 11.7 13.13 12C13.9 13 15.11 13.44 15.37 14.8C15.41 14.94 15.43 15.08 15.43 15.23C15.46 16.05 15.1 16.95 14.5 17.5H14.5Z"; +var mdiFireAlert = "M15.66 11.2C15.43 10.9 15.15 10.64 14.89 10.38C14.22 9.78 13.46 9.35 12.82 8.72C11.33 7.26 11 4.85 11.95 3C11 3.23 10.17 3.75 9.46 4.32C6.87 6.4 5.85 10.07 7.07 13.22C7.11 13.32 7.15 13.42 7.15 13.55C7.15 13.77 7 13.97 6.8 14.05C6.57 14.15 6.33 14.09 6.14 13.93C6.08 13.88 6.04 13.83 6 13.76C4.87 12.33 4.69 10.28 5.45 8.64C3.78 10 2.87 12.3 3 14.47C3.06 14.97 3.12 15.47 3.29 15.97C3.43 16.57 3.7 17.17 4 17.7C5.08 19.43 6.95 20.67 8.96 20.92C11.1 21.19 13.39 20.8 15.03 19.32C16.86 17.66 17.5 15 16.56 12.72L16.43 12.46C16.22 12 15.66 11.2 15.66 11.2M12.5 17.5C12.22 17.74 11.76 18 11.4 18.1C10.28 18.5 9.16 17.94 8.5 17.28C9.69 17 10.4 16.12 10.61 15.23C10.78 14.43 10.46 13.77 10.33 13C10.21 12.26 10.23 11.63 10.5 10.94C10.69 11.32 10.89 11.7 11.13 12C11.9 13 13.11 13.44 13.37 14.8C13.41 14.94 13.43 15.08 13.43 15.23C13.46 16.05 13.1 16.95 12.5 17.5H12.5M21 13H19V7H21V13M21 17H19V15H21V17Z"; +var mdiFireExtinguisher = "M10.5,7H11.75L12,5H10.25L6,7.5V9H4V6.5L10,3H12V2H14V3H16L17,2.5V5.5L16,5H14L14.25,7H15.5A1.5,1.5 0 0,1 17,8.5V22H9V8.5A1.5,1.5 0 0,1 10.5,7Z"; +var mdiFireHydrant = "M5 15V14H4V12H5V11H7V15H5M19 12V11H17V15H19V14H20V12H19M18 6H15.86C15.5 4.6 14.4 3.5 13 3.14V2H11V3.14C9.6 3.5 8.5 4.6 8.14 6H6V8H18V6M18 22H6C6 20.9 6.9 20 8 20V9H16V20C17.11 20 18 20.9 18 22M10 13C10 14.11 10.9 15 12 15S14 14.11 14 13 13.11 11 12 11 10 11.9 10 13Z"; +var mdiFireHydrantAlert = "M22 7H20V13H22V7M22 15H20V17H22V15M3 15V14H2V12H3V11H5V15H3M17 12V11H15V15H17V14H18V12H17M16 6H13.86C13.5 4.6 12.4 3.5 11 3.14V2H9V3.14C7.6 3.5 6.5 4.6 6.14 6H4V8H16V6M16 22H4C4 20.9 4.89 20 6 20V9H14V20C15.11 20 16 20.9 16 22M8 13C8 14.11 8.9 15 10 15S12 14.11 12 13 11.11 11 10 11 8 11.9 8 13Z"; +var mdiFireHydrantOff = "M20.84 22.73L22.11 21.46L2.39 1.73L1.11 3L8 9.89V20C6.9 20 6 20.9 6 22H18C18 20.9 17.11 20 16 20V17.89L20.84 22.73M10.22 12.11L12.89 14.78C12.62 14.92 12.32 15 12 15C10.9 15 10 14.11 10 13C10 12.68 10.08 12.38 10.22 12.11M11.2 8L8.44 5.24C8.94 4.21 9.87 3.43 11 3.14V2H13V3.14C14.4 3.5 15.5 4.6 15.86 6H18V8H11.2M19 11V12H20V14H19V15H18.2L17 13.8V11H19M5 15V14H4V12H5V11H7V15H5M16 12.8L12.2 9H16V12.8Z"; +var mdiFireOff = "M22.11 21.46L2.39 1.73L1.11 3L7.09 9C5.66 10.36 4.88 12.47 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C17.1 19.26 17.15 19.18 17.22 19.11L20.84 22.73L22.11 21.46M8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C7 12.47 6.74 10.69 7.26 9.15L8.58 10.47C8.58 11.4 8.73 12.33 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.66 15 12.66 14.76 12.64 14.53L15 16.88C14.85 17.11 14.69 17.33 14.5 17.5M18.92 15.72L9.65 6.46C10.12 5.65 10.72 4.92 11.46 4.32C12.17 3.75 13 3.23 13.95 3C13 4.85 13.33 7.26 14.82 8.72C15.46 9.35 16.22 9.78 16.89 10.38C17.15 10.64 17.43 10.9 17.66 11.2C17.66 11.2 18.22 12 18.43 12.46L18.56 12.72C18.96 13.69 19.06 14.72 18.92 15.72Z"; +var mdiFireTruck = "M17.04,2C16.85,2 16.66,2.04 16.5,2.14L5.59,8.5H9.55L17.5,3.86C18,3.58 18.13,2.97 17.85,2.5C17.68,2.2 17.38,2 17.04,2M16,8V10H3A2,2 0 0,0 1,12H2V15H1V19H3A3,3 0 0,0 6,22A3,3 0 0,0 9,19H15A3,3 0 0,0 18,22A3,3 0 0,0 21,19H23V12.5L19.5,8H16M18,9.5H19L21.5,12.5V13.5H18V9.5M4,12H7V15H4V12M9,12H12V15H9V12M14,12H16V15H14V12M6,17.5A1.5,1.5 0 0,1 7.5,19A1.5,1.5 0 0,1 6,20.5A1.5,1.5 0 0,1 4.5,19A1.5,1.5 0 0,1 6,17.5M18,17.5A1.5,1.5 0 0,1 19.5,19A1.5,1.5 0 0,1 18,20.5A1.5,1.5 0 0,1 16.5,19A1.5,1.5 0 0,1 18,17.5Z"; +var mdiFirebase = "M20,18.69L12.7,22.74C12.2,23 11.7,23 11.2,22.74L4,18.69L17.05,5.54L17.4,5.44C17.7,5.44 17.87,5.57 17.9,5.84L20,18.69M9.35,5.74L4.8,13.29L6.7,1.34C6.73,1.07 6.9,0.94 7.2,0.94C7.4,0.94 7.53,1 7.6,1.19L9.75,5.14L9.35,5.74M13.85,7L4.3,16.59L11.55,4.29C11.65,4.09 11.8,4 12,4C12.2,4 12.33,4.09 12.4,4.29L13.85,7Z"; +var mdiFirefox = "M9.27 7.94C9.27 7.94 9.27 7.94 9.27 7.94M6.85 6.74C6.86 6.74 6.86 6.74 6.85 6.74M21.28 8.6C20.85 7.55 19.96 6.42 19.27 6.06C19.83 7.17 20.16 8.28 20.29 9.1L20.29 9.12C19.16 6.3 17.24 5.16 15.67 2.68C15.59 2.56 15.5 2.43 15.43 2.3C15.39 2.23 15.36 2.16 15.32 2.09C15.26 1.96 15.2 1.83 15.17 1.69C15.17 1.68 15.16 1.67 15.15 1.67H15.13L15.12 1.67L15.12 1.67L15.12 1.67C12.9 2.97 11.97 5.26 11.74 6.71C11.05 6.75 10.37 6.92 9.75 7.22C9.63 7.27 9.58 7.41 9.62 7.53C9.67 7.67 9.83 7.74 9.96 7.68C10.5 7.42 11.1 7.27 11.7 7.23L11.75 7.23C11.83 7.22 11.92 7.22 12 7.22C12.5 7.21 12.97 7.28 13.44 7.42L13.5 7.44C13.6 7.46 13.67 7.5 13.75 7.5C13.8 7.54 13.86 7.56 13.91 7.58L14.05 7.64C14.12 7.67 14.19 7.7 14.25 7.73C14.28 7.75 14.31 7.76 14.34 7.78C14.41 7.82 14.5 7.85 14.54 7.89C14.58 7.91 14.62 7.94 14.66 7.96C15.39 8.41 16 9.03 16.41 9.77C15.88 9.4 14.92 9.03 14 9.19C17.6 11 16.63 17.19 11.64 16.95C11.2 16.94 10.76 16.85 10.34 16.7C10.24 16.67 10.14 16.63 10.05 16.58C10 16.56 9.93 16.53 9.88 16.5C8.65 15.87 7.64 14.68 7.5 13.23C7.5 13.23 8 11.5 10.83 11.5C11.14 11.5 12 10.64 12.03 10.4C12.03 10.31 10.29 9.62 9.61 8.95C9.24 8.59 9.07 8.42 8.92 8.29C8.84 8.22 8.75 8.16 8.66 8.1C8.43 7.3 8.42 6.45 8.63 5.65C7.6 6.12 6.8 6.86 6.22 7.5H6.22C5.82 7 5.85 5.35 5.87 5C5.86 5 5.57 5.16 5.54 5.18C5.19 5.43 4.86 5.71 4.56 6C4.21 6.37 3.9 6.74 3.62 7.14C3 8.05 2.5 9.09 2.28 10.18C2.28 10.19 2.18 10.59 2.11 11.1L2.08 11.33C2.06 11.5 2.04 11.65 2 11.91L2 11.94L2 12.27L2 12.32C2 17.85 6.5 22.33 12 22.33C16.97 22.33 21.08 18.74 21.88 14C21.9 13.89 21.91 13.76 21.93 13.63C22.13 11.91 21.91 10.11 21.28 8.6Z"; +var mdiFireplace = "M22,22H2V20H22V22M22,6H2V3H22V6M20,7V19H17V11C17,11 14.5,10 12,10C9.5,10 7,11 7,11V19H4V7H20M14.5,14.67H14.47L14.81,15.22L14.87,15.34C15.29,16.35 15,17.5 14.21,18.24C13.5,18.9 12.5,19.07 11.58,18.95C10.71,18.84 9.9,18.29 9.45,17.53C9.3,17.3 9.19,17.03 9.13,16.77L9,16.11C8.96,15.15 9.34,14.14 10.06,13.54C9.73,14.26 9.81,15.16 10.3,15.79L10.36,15.87C10.44,15.94 10.55,15.97 10.64,15.92C10.73,15.89 10.8,15.8 10.8,15.7L10.76,15.56C10.23,14.17 10.68,12.55 11.79,11.63C12.1,11.38 12.5,11.15 12.87,11.05C12.46,11.87 12.61,12.93 13.25,13.57L14.14,14.3L14.5,14.67M13.11,17.44V17.44C13.37,17.2 13.53,16.8 13.5,16.44V16.25C13.38,15.65 12.85,15.46 12.5,15L12.26,14.55C12.13,14.85 12.12,15.13 12.17,15.46C12.23,15.8 12.37,16.09 12.29,16.44C12.2,16.83 11.9,17.22 11.37,17.35C11.67,17.64 12.15,17.87 12.64,17.71L13.11,17.44Z"; +var mdiFireplaceOff = "M22,22H2V20H22V22M22,6H2V3H22V6M20,7V19H17V11C17,11 14.5,10 12,10C9.5,10 7,11 7,11V19H4V7H20Z"; +var mdiFirework = "M5.8,16.59L4.5,15.28L12.26,7.5L16.5,11.74L8.72,19.5L7.29,18.09C7.04,18.16 6.8,18.28 6.63,18.5C6.57,18.57 6.5,18.65 6.5,18.74C6.42,18.88 6.38,19 6.32,19.15C6.21,19.42 6.09,19.69 5.93,19.93C5.81,20.1 5.68,20.26 5.53,20.39C5.42,20.5 5.29,20.59 5.16,20.66C5.08,20.71 5,20.76 4.9,20.79C4.3,21.04 3.63,21 3,21V19C3.23,19 3.83,19 3.9,19C4,19 4.08,19 4.16,18.94C4.18,18.92 4.19,18.91 4.21,18.89C4.28,18.81 4.34,18.7 4.39,18.6C4.47,18.42 4.53,18.24 4.6,18.06L4.64,17.96C4.76,17.69 4.9,17.45 5.08,17.23C5.18,17.1 5.3,17 5.42,16.87C5.54,16.77 5.66,16.67 5.8,16.59M21,3L19.88,11.19L12.81,4.12L21,3Z"; +var mdiFireworkOff = "M20.84 22.73L13.17 15.06L8.72 19.5L7.29 18.09C7.04 18.16 6.8 18.28 6.63 18.5C6.57 18.57 6.5 18.65 6.5 18.74C6.42 18.88 6.38 19 6.32 19.15C6.21 19.42 6.09 19.69 5.93 19.93C5.81 20.1 5.68 20.26 5.53 20.39C5.42 20.5 5.29 20.59 5.16 20.66C5.08 20.71 5 20.76 4.9 20.79C4.3 21.04 3.63 21 3 21V19H3.9C4 19 4.08 19 4.16 18.94L4.21 18.89C4.28 18.81 4.34 18.7 4.39 18.6C4.47 18.42 4.53 18.24 4.6 18.06L4.64 17.96C4.76 17.69 4.9 17.45 5.08 17.23C5.18 17.1 5.3 17 5.42 16.87C5.54 16.77 5.66 16.67 5.8 16.59L4.5 15.28L8.94 10.83L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 3L12.81 4.12L19.88 11.19L21 3M16.5 11.74L12.26 7.5L11.5 8.28L15.72 12.5L16.5 11.74Z"; +var mdiFish = "M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z"; +var mdiFishOff = "M20.8 22.7L15.7 17.6C15.1 18.3 14.6 18.9 14.1 19.3C13.3 20 12.7 20 12 20L12.8 17C9.5 16.8 6.6 15.4 5.8 13.6C5.7 14.1 5.6 14.5 5.4 14.8C4.7 16 3.3 16 2 16C3.1 16 3.5 14.4 3.5 12.5S3.1 9 2 9C3.3 9 4.7 9 5.3 10.2C5.5 10.5 5.6 11 5.7 11.4C6 10.7 6.7 10 7.6 9.5L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M9.8 6.6L9 5C11 5 13 5 14.3 5.7C15.4 6.3 16.1 7.3 16.7 8.4C19.6 9.1 22 10.7 22 12.5C22 13.8 20.8 15 19 15.8L9.8 6.6M16 12C16 12.6 16.4 13 17 13S18 12.6 18 12 17.6 11 17 11 16 11.4 16 12Z"; +var mdiFishbowl = "M19.11,5H21V3H3V5H4.89C3.11,6.8 2,9.27 2,12C2,15.97 4.31,19.39 7.66,21H16.34C19.69,19.39 22,15.97 22,12C22,9.27 20.89,6.8 19.11,5M13.25,17C12.09,17 11.06,16.64 10.33,16.17C9.67,17 8.33,17 7,17C8.1,17 8.5,15.88 8.5,14.5C8.5,13.12 8.1,12 7,12C8.33,12 9.67,12 10.37,12.91C11.06,12.36 12.09,12 13.25,12C15.32,12 17,13.12 17,14.5C17,15.88 15.32,17 13.25,17M16,7C13.56,8.71 10.44,8.71 8,7C7.06,7.66 6,8.09 4.95,8.25C5.31,7.58 5.77,6.96 6.32,6.41L7.7,5H16.3L17.68,6.41C18.23,6.96 18.69,7.58 19.05,8.25C18,8.09 16.94,7.66 16,7Z"; +var mdiFishbowlOutline = "M19.11,5H21V3H3V5H4.89C3.11,6.8 2,9.27 2,12C2,15.97 4.31,19.39 7.66,21H16.34C19.69,19.39 22,15.97 22,12C22,9.27 20.89,6.8 19.11,5M6.32,6.41L7.7,5H16.3L17.68,6.41C18.23,6.96 18.69,7.58 19.05,8.25C18,8.09 16.94,7.66 16,7C13.56,8.71 10.44,8.71 8,7C7.06,7.66 6,8.09 4.95,8.25C5.31,7.58 5.77,6.96 6.32,6.41M15.85,19H8.15C5.58,17.59 4,14.95 4,12C4,11.43 4.07,10.86 4.19,10.32C5.5,10.29 6.8,9.95 8,9.33C10.5,10.63 13.5,10.63 16,9.33C17.2,9.95 18.5,10.29 19.81,10.32C19.93,10.86 20,11.43 20,12C20,14.95 18.42,17.59 15.85,19M17,14.5C17,15.88 15.32,17 13.25,17C12.09,17 11.06,16.64 10.33,16.16C9.67,17 8.33,17 7,17C8.1,17 8.5,15.88 8.5,14.5C8.5,13.12 8.1,12 7,12C8.33,12 9.67,12 10.37,12.91C11.06,12.36 12.09,12 13.25,12C15.32,12 17,13.12 17,14.5Z"; +var mdiFitToPage = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M12,4L15,7H13V9H11V7H9M7,15L4,12L7,9V11H9V13H7M12,20L9,17H11V15H13V17H15M17,15V13H15V11H17V9L20,12"; +var mdiFitToPageOutline = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M20,20H4V4H20M13,8V10H11V8H9L12,5L15,8M16,15V13H14V11H16V9L19,12M10,13H8V15L5,12L8,9V11H10M15,16L12,19L9,16H11V14H13V16"; +var mdiFlag = "M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z"; +var mdiFlagCheckered = "M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z"; +var mdiFlagMinus = "M12.4,5H18V15H11L10.6,13H5V20H3V3H12L12.4,5M14,17H22V19H14V17Z"; +var mdiFlagMinusOutline = "M12.36 6L12.76 8H18V14H14.64L14.24 12H7V6H12.36M14 4H5V21H7V14H12.6L13 16H20V6H14.4M23 18H15V20H23V18Z"; +var mdiFlagOutline = "M12.36,6L12.76,8H18V14H14.64L14.24,12H7V6H12.36M14,4H5V21H7V14H12.6L13,16H20V6H14.4"; +var mdiFlagPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M12.4,5H18V12C15.78,12 13.84,13.21 12.8,15H11L10.6,13H5V20H3V3H12L12.4,5Z"; +var mdiFlagPlusOutline = "M13 16L12.6 14H7V21H5V4H14L14.4 6H20V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V8H12.76L12.36 6H7V12H14.24L14.64 14H15.69C14.92 14.5 14.27 15.2 13.81 16H13M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiFlagRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M12.4,5H18V12C15.78,12 13.84,13.21 12.8,15H11L10.6,13H5V20H3V3H12L12.4,5Z"; +var mdiFlagRemoveOutline = "M13 16L12.6 14H7V21H5V4H14L14.4 6H20V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V8H12.76L12.36 6H7V12H14.24L14.64 14H15.69C14.92 14.5 14.27 15.2 13.81 16H13M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; +var mdiFlagTriangle = "M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z"; +var mdiFlagVariant = "M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z"; +var mdiFlagVariantOutline = "M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z"; +var mdiFlare = "M7,11H1V13H7V11M9.17,7.76L7.05,5.64L5.64,7.05L7.76,9.17L9.17,7.76M13,1H11V7H13V1M18.36,7.05L16.95,5.64L14.83,7.76L16.24,9.17L18.36,7.05M17,11V13H23V11H17M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M14.83,16.24L16.95,18.36L18.36,16.95L16.24,14.83L14.83,16.24M5.64,16.95L7.05,18.36L9.17,16.24L7.76,14.83L5.64,16.95M11,23H13V17H11V23Z"; +var mdiFlash = "M7,2V13H10V22L17,10H13L17,2H7Z"; +var mdiFlashAlert = "M5,2V13H8V22L15,10H11L15,2M17,15H19V17H17V15M17,7H19V13H17V7Z"; +var mdiFlashAlertOutline = "M5,2H15L11.5,9H15L8,22V14H5V2M7,4V12H10V14.66L12,11H8.24L11.76,4M17,15H19V17H17V15M17,7H19V13H17V7Z"; +var mdiFlashAuto = "M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z"; +var mdiFlashCircle = "M11.5,20L16.36,10.27H13V4L8,13.73H11.5V20M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; +var mdiFlashOff = "M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z"; +var mdiFlashOutline = "M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z"; +var mdiFlashRedEye = "M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z"; +var mdiFlashlight = "M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z"; +var mdiFlashlightOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z"; +var mdiFlask = "M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z"; +var mdiFlaskEmpty = "M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z"; +var mdiFlaskEmptyMinus = "M23 17V19H15V17H23M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z"; +var mdiFlaskEmptyMinusOutline = "M23 17V19H15V17H23M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z"; +var mdiFlaskEmptyOff = "M20.8 22.7L19.6 21.5C19.1 21.8 18.6 22 18 22H6C4.3 22 3 20.7 3 19C3 18.4 3.2 17.8 3.5 17.4L7.9 9.8L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M15 7.8V6C15.6 6 16 5.6 16 5V4C16 2.9 15.1 2 14 2H10C8.9 2 8 2.9 8 4V4.8L20.4 17.2L15 7.8Z"; +var mdiFlaskEmptyOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9.4 11.2L18 20C18.1 20 18 20 18 20M11 7.8L8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L15 11.8L13 8.4V4H11V7.8Z"; +var mdiFlaskEmptyOutline = "M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z"; +var mdiFlaskEmptyPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z"; +var mdiFlaskEmptyPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z"; +var mdiFlaskEmptyRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z"; +var mdiFlaskEmptyRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z"; +var mdiFlaskMinus = "M23 17V19H15V17H23M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z"; +var mdiFlaskMinusOutline = "M23 17V19H15V17H23M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z"; +var mdiFlaskOff = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9 11.9L14 17L14.6 16.4L18 20C18.1 20 18 20 18 20M8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L8 4.8Z"; +var mdiFlaskOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9.4 11.2L13.6 15.4L13 16L10.4 13.4L7.7 18H16.1L18 20C18.1 20 18 20 18 20M11 7.8L8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L15 11.8L13 8.4V4H11V7.8Z"; +var mdiFlaskOutline = "M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z"; +var mdiFlaskPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z"; +var mdiFlaskPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z"; +var mdiFlaskRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z"; +var mdiFlaskRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z"; +var mdiFlaskRoundBottom = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15L7.08 15.91L9 13.93L13.07 18L16.93 14.14C16.58 12.12 15 10.5 13 10.1V6H11M13.07 12C13.62 12 14.07 12.45 14.07 13C14.07 13.55 13.62 14 13.07 14C12.5 14 12.07 13.55 12.07 13C12.07 12.45 12.5 12 13.07 12Z"; +var mdiFlaskRoundBottomEmpty = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15Z"; +var mdiFlaskRoundBottomEmptyOutline = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15C7 17.76 9.24 20 12 20C14.76 20 17 17.76 17 15C17 12.58 15.28 10.56 13 10.1V6H11Z"; +var mdiFlaskRoundBottomOutline = "M15 15C15 16.66 13.66 18 12 18C10.34 18 9 16.66 9 15V14H11V15C11 15.55 11.45 16 12 16C12.55 16 13 15.55 13 15V14H15V15M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15C7 17.76 9.24 20 12 20C14.76 20 17 17.76 17 15C17 12.58 15.28 10.56 13 10.1V6H11Z"; +var mdiFleurDeLis = "M12 2S9 4 9 7 11 12 11 16H10S10 14 9 12C7 8 3 10 3 13S5 16 5 16C5 13 8.5 13 8.5 16H7V18H10.5L9 20S10 21 11 20L12 22L13 20C14 21 15 20 15 20L13.5 18H17V16H15.5C15.5 13 19 13 19 16C19 16 21 16 21 13S17 8 15 12C14 14 14 16 14 16H13C13 12 15 10 15 7S12 2 12 2Z"; +var mdiFlipHorizontal = "M15 21H17V19H15M19 9H21V7H19M3 5V19C3 20.1 3.9 21 5 21H9V19H5V5H9V3H5C3.9 3 3 3.9 3 5M19 3V5H21C21 3.9 20.1 3 19 3M11 23H13V1H11M19 17H21V15H19M15 5H17V3H15M19 13H21V11H19M19 21C20.1 21 21 20.1 21 19H19Z"; +var mdiFlipToBack = "M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z"; +var mdiFlipToFront = "M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z"; +var mdiFlipVertical = "M3 15V17H5V15M15 19V21H17V19M19 3H5C3.9 3 3 3.9 3 5V9H5V5H19V9H21V5C21 3.9 20.1 3 19 3M21 19H19V21C20.1 21 21 20.1 21 19M1 11V13H23V11M7 19V21H9V19M19 15V17H21V15M11 19V21H13V19M3 19C3 20.1 3.9 21 5 21V19Z"; +var mdiFloorLamp = "M15,2L17,9H7L9,2M11,10H13V20H16V22H8V20H11V10Z"; +var mdiFloorLampDual = "M11.73 10.06L10.17 11.24L11 12.2V20H8V22H16V20H13V12.3L13.85 11.26L12.27 10.07L11.73 10.06M9.08 10.82L3 6.81L9.39 2L11.55 8.93L9.08 10.82M14.61 2L21 6.81L14.92 10.82L12.44 8.95L14.61 2Z"; +var mdiFloorLampVariant = "M7 2L10 9H14L17 2H7M15.92 22L13 15V22H11V15L8.08 22H5.92L10.92 10H13.08L18.08 22H15.92Z"; +var mdiFloorPlan = "M10,5V10H9V5H5V13H9V12H10V17H9V14H5V19H12V17H13V19H19V17H21V21H3V3H21V15H19V10H13V15H12V9H19V5H10Z"; +var mdiFloppy = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5.5L18.5,3H17V9A1,1 0 0,1 16,10H8A1,1 0 0,1 7,9V3H5M12,4V9H15V4H12M7,12H17A1,1 0 0,1 18,13V19H6V13A1,1 0 0,1 7,12Z"; +var mdiFloppyVariant = "M3,3V21H21V3H3M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,15A1,1 0 0,1 13,16V19A1,1 0 0,1 12,20A1,1 0 0,1 11,19V16A1,1 0 0,1 12,15Z"; +var mdiFlower = "M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z"; +var mdiFlowerOutline = "M8.66,13.07C6.92,13.07 5.5,11.66 5.5,9.93C5.5,9.22 5.76,8.54 6.19,8C5.77,7.46 5.5,6.78 5.5,6.07C5.5,4.34 6.93,2.93 8.66,2.93L9.09,2.96C9.56,1.81 10.69,1 12,1C13.31,1 14.44,1.81 14.91,2.96L15.34,2.93C17.07,2.93 18.5,4.34 18.5,6.07C18.5,6.78 18.24,7.46 17.81,8C18.23,8.54 18.5,9.22 18.5,9.93C18.5,11.66 17.07,13.07 15.34,13.07L14.91,13.04C14.44,14.19 13.31,15 12,15C10.69,15 9.56,14.19 9.09,13.04L8.66,13.07M12,13C12.62,13 13.12,12.5 13.14,11.9L13.03,10.81C12.71,10.93 12.36,11 12,11C11.64,11 11.3,10.93 11,10.81L10.86,11.9C10.88,12.5 11.38,13 12,13M15.34,11.07C15.97,11.07 16.5,10.56 16.5,9.92C16.5,9.5 16.23,9.08 15.83,8.89L14.95,8.47C14.83,9.21 14.44,9.85 13.89,10.3L14.7,10.87C14.88,11 15.1,11.07 15.34,11.07M14.69,5.13L13.87,5.69C14.43,6.14 14.82,6.78 14.94,7.5L15.82,7.1C16.23,6.9 16.5,6.5 16.5,6.07C16.5,5.44 15.97,4.93 15.34,4.93C15.11,4.93 14.89,5 14.69,5.13M12,3C11.38,3 10.88,3.5 10.86,4.1L11,5.19C11.3,5.07 11.64,5 12,5C12.36,5 12.71,5.07 13.03,5.19L13.14,4.1C13.12,3.5 12.62,3 12,3M8.66,4.93C8.03,4.93 7.5,5.44 7.5,6.07C7.5,6.5 7.77,6.9 8.17,7.1L9.05,7.5C9.17,6.78 9.56,6.14 10.11,5.69L9.3,5.13C9.12,5 8.9,4.93 8.66,4.93M8.17,8.9C7.77,9.1 7.5,9.5 7.5,9.92C7.5,10.55 8.03,11.06 8.66,11.06C8.89,11.06 9.11,11 9.31,10.86L10.12,10.31C9.56,9.86 9.17,9.22 9.05,8.5L8.17,8.9M12,22A9,9 0 0,1 3,13A9,9 0 0,1 12,22A9,9 0 0,1 21,13A9,9 0 0,1 12,22M14.44,19.56C16.34,18.85 17.85,17.34 18.56,15.44C16.66,16.14 15.15,17.66 14.44,19.56M5.44,15.44C6.15,17.34 7.66,18.85 9.56,19.56C8.86,17.66 7.34,16.15 5.44,15.44Z"; +var mdiFlowerPoppy = "M18.5,12A3.5,3.5 0 0,0 22,8.5A6.5,6.5 0 0,0 15.5,2A3.5,3.5 0 0,0 12,5.5A3.5,3.5 0 0,0 8.5,2A6.5,6.5 0 0,0 2,8.5A3.5,3.5 0 0,0 5.5,12A3.5,3.5 0 0,0 2,15.5A6.5,6.5 0 0,0 8.5,22A3.5,3.5 0 0,0 12,18.5A3.5,3.5 0 0,0 15.5,22A6.5,6.5 0 0,0 22,15.5A3.5,3.5 0 0,0 18.5,12M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M14.5,12A2.5,2.5 0 0,1 12,14.5A2.5,2.5 0 0,1 9.5,12A2.5,2.5 0 0,1 12,9.5A2.5,2.5 0 0,1 14.5,12Z"; +var mdiFlowerTulip = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M18,3V8A6,6 0 0,1 12,14A6,6 0 0,1 6,8V3C6.74,3 7.47,3.12 8.16,3.39C8.71,3.62 9.2,3.96 9.61,4.39L12,2L14.39,4.39C14.8,3.96 15.29,3.62 15.84,3.39C16.53,3.12 17.26,3 18,3Z"; +var mdiFlowerTulipOutline = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M5.44,15.44C7.35,16.15 8.85,17.65 9.56,19.56C7.65,18.85 6.15,17.35 5.44,15.44M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M14.42,19.57C15.11,17.64 16.64,16.11 18.57,15.42C17.86,17.34 16.34,18.86 14.42,19.57M12,14A6,6 0 0,0 18,8V3C17.26,3 16.53,3.12 15.84,3.39C15.29,3.62 14.8,3.96 14.39,4.39L12,2L9.61,4.39C9.2,3.96 8.71,3.62 8.16,3.39C7.47,3.12 6.74,3 6,3V8A6,6 0 0,0 12,14M8,5.61L9.57,7.26L12,4.83L14.43,7.26L16,5.61V8A4,4 0 0,1 12,12A4,4 0 0,1 8,8V5.61Z"; +var mdiFocusAuto = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M8 7C6.9 7 6 7.9 6 9V17H8V13H10V17H12V9C12 7.9 11.1 7 10 7H8M8 9H10V11H8V9M13 7V17H15V13H17V11H15V9H18V7H13Z"; +var mdiFocusField = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11M7 7H9V9H7V7M11 7H13V9H11V7M15 7H17V9H15V7M7 15H9V17H7V15M11 15H13V17H11V15M15 15H17V17H15V15Z"; +var mdiFocusFieldHorizontal = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11Z"; +var mdiFocusFieldVertical = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M11 11H13V13H11V11M11 7H13V9H11V7M11 15H13V17H11V15Z"; +var mdiFolder = "M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"; +var mdiFolderAccount = "M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; +var mdiFolderAccountOutline = "M15 14C16.33 14 19 14.67 19 16V17H11V16C11 14.67 13.67 14 15 14M15 13C16.11 13 17 12.11 17 11S16.11 9 15 9C13.9 9 13 9.89 13 11C13 12.11 13.9 13 15 13M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z"; +var mdiFolderAlert = "M15,12H17V17H15V12M15,18H17V20H15V18M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; +var mdiFolderAlertOutline = "M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; +var mdiFolderClock = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H10.26C11.57,21.88 13.71,23 16,23A7,7 0 0,0 23,16C23,14.17 22.28,12.42 21,11.11V8C21,6.89 20.1,6 19,6H11L9,4H3M16,11A5,5 0 0,1 21,16A5,5 0 0,1 16,21A5,5 0 0,1 11,16A5,5 0 0,1 16,11M15,12V17L18.61,19.16L19.36,17.94L16.5,16.25V12H15Z"; +var mdiFolderClockOutline = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M19,8H3V18H9.29C9.1,17.37 9,16.7 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M3,20C1.89,20 1,19.1 1,18V6A2,2 0 0,1 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; +var mdiFolderCog = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12.08A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 22 12.69V8C22 6.89 21.1 6 20 6H12L10 4H4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; +var mdiFolderCogOutline = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12V18H4V8H20V12H22V8C22 6.89 21.1 6 20 6H12L10 4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; +var mdiFolderDownload = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25"; +var mdiFolderDownloadOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M14 9H16V13H19L15 17L11 13H14Z"; +var mdiFolderEdit = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H11V18.11L21,8.11V8C21,6.89 20.1,6 19,6H11L9,4H3M21.04,11.13C20.9,11.13 20.76,11.19 20.65,11.3L19.65,12.3L21.7,14.35L22.7,13.35C22.92,13.14 22.92,12.79 22.7,12.58L21.42,11.3C21.31,11.19 21.18,11.13 21.04,11.13M19.07,12.88L13,18.94V21H15.06L21.12,14.93L19.07,12.88Z"; +var mdiFolderEditOutline = "M21,11.11C20.92,11.11 20.72,11.21 20.62,11.31L19.62,12.31L21.72,14.42L22.72,13.41C22.92,13.21 22.92,12.81 22.72,12.61L21.42,11.31C21.32,11.21 21.22,11.11 21,11.11M19.12,12.91L13,18.92V21H15.12L21.22,14.92L19.12,12.91M21,8V8.11L19,10.11V8H3V18H11V20H3A2,2 0 0,1 1,18V6C1,4.91 1.9,4 3,4H9L11,6H19C20.12,6 21,6.91 21,8Z"; +var mdiFolderGoogleDrive = "M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; +var mdiFolderHeart = "M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.89 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M18.42 13.5L15 17L11.59 13.5C11.22 13.12 11 12.62 11 12.05C11 10.92 11.9 10 13 10C13.54 10 14.05 10.23 14.42 10.61L15 11.2L15.59 10.6C15.95 10.23 16.46 10 17 10C18.1 10 19 10.92 19 12.05C19 12.61 18.78 13.13 18.42 13.5Z"; +var mdiFolderHeartOutline = "M20 18H4V8H20M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.89 21.1 6 20 6M13 10C11.9 10 11 10.92 11 12.05C11 12.62 11.22 13.12 11.59 13.5L15 17L18.42 13.5C18.78 13.13 19 12.61 19 12.05C19 10.92 18.1 10 17 10C16.46 10 15.95 10.23 15.59 10.6L15 11.2L14.42 10.61C14.05 10.23 13.54 10 13 10Z"; +var mdiFolderHome = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M17 13V17H15V14H13V17H11V13H9L14 9L19 13Z"; +var mdiFolderHomeOutline = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M20 18H4V8H20M13 17V14H15V17H17V13H19L14 9L9 13H11V17Z"; +var mdiFolderImage = "M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z"; +var mdiFolderInformation = "M21 11.1V8C21 6.9 20.1 6 19 6H11L9 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H10.3C11.6 21.9 13.8 23 16 23C19.9 23 23 19.9 23 16C23 14.2 22.3 12.4 21 11.1M16 21C13.2 21 11 18.8 11 16S13.2 11 16 11 21 13.2 21 16 18.8 21 16 21M17 20H15V15H17V20M17 14H15V12H17V14Z"; +var mdiFolderInformationOutline = "M21 11.1V8C21 6.9 20.1 6 19 6H11L9 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H10.2C11.4 21.8 13.6 23 16 23C19.9 23 23 19.9 23 16C23 14.1 22.2 12.4 21 11.1M9.3 18H3V8H19V9.7C18.1 9.2 17.1 9 16 9C12.1 9 9 12.1 9 16C9 16.7 9.1 17.4 9.3 18M16 21C13.2 21 11 18.8 11 16S13.2 11 16 11 21 13.2 21 16 18.8 21 16 21M17 14H15V12H17V14M17 20H15V15H17V20Z"; +var mdiFolderKey = "M4,4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6H12L10,4M11,10C12.31,10 13.42,10.84 13.83,12H19V14H18V16H16V14H13.83C13.42,15.17 12.31,16 11,16A3,3 0 0,1 8,13A3,3 0 0,1 11,10M11,12A1,1 0 0,0 10,13C10,13.56 10.45,14 11,14A1,1 0 0,0 12,13A1,1 0 0,0 11,12Z"; +var mdiFolderKeyNetwork = "M6,5C4.89,5 4,5.89 4,7V15A2,2 0 0,0 6,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17H18A2,2 0 0,0 20,15V9A2,2 0 0,0 18,7H12L10,5H6M9,9C10.31,9 11.42,9.83 11.83,11H17V13H16V15H14V13H11.83C11.42,14.17 10.31,15 9,15A3,3 0 0,1 6,12A3,3 0 0,1 9,9M9,11A1,1 0 0,0 8,12C8,12.56 8.45,13 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z"; +var mdiFolderKeyNetworkOutline = "M9 8C7.34 8 6 9.34 6 11S7.34 14 9 14C10.31 14 11.42 13.17 11.83 12H14V14H16V12H17V10H11.83C11.42 8.83 10.31 8 9 8M9 12C8.45 12 8 11.55 8 11S8.45 10 9 10 10 10.45 10 11 9.55 12 9 12M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V7C21 5.9 20.11 5 19 5H13L11 3H5C3.9 3 3 3.9 3 5V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M5 15V7H19V15H5Z"; +var mdiFolderKeyOutline = "M20 18H4V8H20M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.89 21.1 6 20 6M13.83 12C13.42 10.84 12.31 10 11 10C9.34 10 8 11.34 8 13S9.34 16 11 16C12.31 16 13.42 15.17 13.83 14H16V16H18V14H19V12H13.83M11 14C10.45 14 10 13.56 10 13C10 12.45 10.45 12 11 12S12 12.45 12 13 11.55 14 11 14Z"; +var mdiFolderLock = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z"; +var mdiFolderLockOpen = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z"; +var mdiFolderMarker = "M10 4L12 6H20C21.1 6 22 6.89 22 8V11.34C21.04 10.5 19.82 10 18.5 10C15.5 10 13 12.65 13 15.5C13 16.97 13.65 18.55 14.5 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8Z"; +var mdiFolderMarkerOutline = "M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8M20 8H4V18H13.5C13.79 18.68 14.13 19.35 14.5 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20C21.1 6 22 6.89 22 8V11.34C21.42 10.84 20.74 10.45 20 10.23V8Z"; +var mdiFolderMove = "M14,18V15H10V11H14V8L19,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; +var mdiFolderMoveOutline = "M20 18H4V8H20V18M12 6L10 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8C22 6.9 21.11 6 20 6H12M11 14V12H15V9L19 13L15 17V14H11Z"; +var mdiFolderMultiple = "M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z"; +var mdiFolderMultipleImage = "M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z"; +var mdiFolderMultipleOutline = "M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z"; +var mdiFolderMultiplePlus = "M2 20V6H0V20C0 21.1 .9 22 2 22H20V20H2M22 4H14L12 2H6C5.6 2 5.2 2.1 4.9 2.3L4.3 2.9C4.1 3.2 4 3.6 4 4V16C4 16.4 4.1 16.8 4.3 17.1C4.4 17.2 4.5 17.3 4.5 17.4C5 17.8 5.5 18 6 18H22C23.1 18 24 17.1 24 16V6C24 4.9 23.1 4 22 4M22 12H19V15H17V12H14V10H17V7H19V10H22V12Z"; +var mdiFolderMultiplePlusOutline = "M22 4C23.1 4 24 4.9 24 6V16C24 17.1 23.1 18 22 18H6C4.9 18 4 17.1 4 16V4C4 2.9 4.9 2 6 2H12L14 4H22M2 6V20H20V22H2C.9 22 0 21.1 0 20V6H2M6 6V16H22V6H6M14 10H16V8H18V10H20V12H18V14H16V12H14V10Z"; +var mdiFolderMusic = "M10 4L12 6H20C21.1 6 22 6.89 22 8V18C22 19.1 21.1 20 20 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10M19 9H15.5V13.06L15 13C13.9 13 13 13.9 13 15C13 16.11 13.9 17 15 17C16.11 17 17 16.11 17 15V11H19V9Z"; +var mdiFolderMusicOutline = "M20 18V8H4V18H20M20 6C21.1 6 22 6.89 22 8V18C22 19.1 21.1 20 20 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20M18 9V11H16V15C16 16.11 15.11 17 14 17C12.9 17 12 16.11 12 15C12 13.9 12.9 13 14 13C14.17 13 14.34 13 14.5 13.06V9H18Z"; +var mdiFolderNetwork = "M3,15V5A2,2 0 0,1 5,3H11L13,5H19A2,2 0 0,1 21,7V15A2,2 0 0,1 19,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5A2,2 0 0,1 3,15Z"; +var mdiFolderNetworkOutline = "M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V7C21 5.9 20.11 5 19 5H13L11 3H5C3.9 3 3 3.9 3 5V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M5 15V7H19V15H5Z"; +var mdiFolderOpen = "M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z"; +var mdiFolderOpenOutline = "M6.1,10L4,18V8H21A2,2 0 0,0 19,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H19C19.9,20 20.7,19.4 20.9,18.5L23.2,10H6.1M19,18H6L7.6,12H20.6L19,18Z"; +var mdiFolderOutline = "M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; +var mdiFolderPlus = "M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z"; +var mdiFolderPlusOutline = "M12 12H14V10H16V12H18V14H16V16H14V14H12V12M22 8V18C22 19.11 21.11 20 20 20H4C2.89 20 2 19.11 2 18V6C2 4.89 2.89 4 4 4H10L12 6H20C21.11 6 22 6.89 22 8M20 8H4V18H20V8Z"; +var mdiFolderPound = "M15.25,13H17.25L16.75,15H14.75L15.25,13M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20A2,2 0 0,1 22,8M20,12H18.5L19,10H18L17.5,12H15.5L16,10H15L14.5,12H13V13H14.25L13.75,15H12V16H13.5L13,18H14L14.5,16H16.5L16,18H17L17.5,16H19V15H17.75L18.25,13H20V12Z"; +var mdiFolderPoundOutline = "M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6M19,12V11H17.5L18,9H17L16.5,11H14.5L15,9H14L13.5,11H12V12H13.25L12.75,14H11V15H12.5L12,17H13L13.5,15H15.5L15,17H16L16.5,15H18V14H16.75L17.25,12H19M15.75,14H13.75L14.25,12H16.25L15.75,14Z"; +var mdiFolderRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M10 4L12 6H20C21.1 6 22 6.89 22 8V13C21 12.38 19.79 12 18.5 12C14.91 12 12 14.91 12 18.5C12 19 12.06 19.5 12.17 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10Z"; +var mdiFolderRefreshOutline = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M20 8H4V18H12L12 18.5C12 19 12.06 19.5 12.17 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20C21.1 6 22 6.89 22 8V13C21.39 12.63 20.72 12.34 20 12.17V8Z"; +var mdiFolderRemove = "M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z"; +var mdiFolderRemoveOutline = "M11.46 10.88L12.88 9.46L15 11.59L17.12 9.46L18.54 10.88L16.41 13L18.54 15.12L17.12 16.54L15 14.41L12.88 16.54L11.46 15.12L13.59 13L11.46 10.88M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z"; +var mdiFolderSearch = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M9,4L11,6H19A2,2 0 0,1 21,8V11.81C19.83,10.69 18.25,10 16.5,10A6.5,6.5 0 0,0 10,16.5C10,17.79 10.37,19 11,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9Z"; +var mdiFolderSearchOutline = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M19,8H3V18H10.17C10.34,18.72 10.63,19.39 11,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.81C20.42,11.26 19.75,10.81 19,10.5V8Z"; +var mdiFolderSettings = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z"; +var mdiFolderSettingsOutline = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M4 8H20V18H4V8M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15"; +var mdiFolderStar = "M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z"; +var mdiFolderStarMultiple = "M2 6H0V20C0 21.11 .895 22 2 22H20V20H2V6M22 4H14L12 2H6C4.89 2 4 2.89 4 4V16C4 17.1 4.89 18 6 18H22C23.11 18 24 17.1 24 16V6C24 4.89 23.11 4 22 4M19.94 15L17 13.27L14.06 15L14.84 11.66L12.25 9.42L15.66 9.13L17 6L18.34 9.13L21.75 9.42L19.16 11.66L19.94 15Z"; +var mdiFolderStarMultipleOutline = "M2 6V20H20V22H2C.895 22 0 21.11 0 20V6H2M12.78 10.05L15.81 9.79L17 7L18.19 9.79L21.22 10.05L18.92 12.04L19.61 15L17 13.47L14.39 15L15.08 12.04L12.78 10.05M24 6V16C24 17.11 23.11 18 22 18H6C4.9 18 4 17.11 4 16V4C4 2.89 4.9 2 6 2H12L14 4H22C23.11 4 24 4.9 24 6M22 6H6V16H22V6Z"; +var mdiFolderStarOutline = "M10.78 12.05L13.81 11.79L15 9L16.19 11.79L19.22 12.05L16.92 14.04L17.61 17L15 15.47L12.39 17L13.08 14.04L10.78 12.05M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z"; +var mdiFolderSwap = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M15 16V14H9V16L6 13L9 10V12H15V10L18 13Z"; +var mdiFolderSwapOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M18 13L15 10V12H9V10L6 13L9 16V14H15V16Z"; +var mdiFolderSync = "M10,4L12,6H20A2,2 0 0,1 22,8V11.5C21.23,11.18 20.39,11 19.5,11A6.5,6.5 0 0,0 13,17.5C13,18.39 13.18,19.23 13.5,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23Z"; +var mdiFolderSyncOutline = "M10,4L12,6H20A2,2 0 0,1 22,8V11.5C21.38,11.24 20.7,11.07 20,11V8H4V18H13C13.07,18.7 13.24,19.38 13.5,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L16.72,14.22C16.78,14.17 16.85,14.13 19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L21.28,20.78C21.22,20.83 21.15,20.87 19,23Z"; +var mdiFolderTable = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M12 9H15V11H12V9M16 9H19V11H16V9M12 12H15V14H12V12M16 12H19V14H16V12M12 15H15V17H12V15M16 15H19V17H16V15Z"; +var mdiFolderTableOutline = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M4 8H20V18H4V8M12 9V11H15V9H12M16 9V11H19V9H16M12 12V14H15V12H12M16 12V14H19V12H16M12 15V17H15V15H12M16 15V17H19V15H16Z"; +var mdiFolderText = "M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M15,16H6V14H15V16M18,12H6V10H18V12Z"; +var mdiFolderTextOutline = "M20,18H4V8H20M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M15,16H6V14H15V16M18,12H6V10H18V12Z"; +var mdiFolderUpload = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75"; +var mdiFolderUploadOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M16 17H14V13H11L15 9L19 13H16Z"; +var mdiFolderZip = "M20 6H12L10 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M18 12H16V14H18V16H16V18H14V16H16V14H14V12H16V10H14V8H16V10H18V12Z"; +var mdiFolderZipOutline = "M20 6H12L10 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M20 18H16V16H14V18H4V8H14V10H16V8H20V18M16 12V10H18V12H16M14 12H16V14H14V12M18 16H16V14H18V16Z"; +var mdiFontAwesome = "M19.76 2H4.24C3 2 2 3 2 4.24V19.76C2 21 3 22 4.24 22H19.76C21 22 22 21 22 19.76V4.24C22 3 21 2 19.76 2M17.73 14.69C17.73 14.88 17.57 14.96 17.38 15.04C16.64 15.36 15.84 15.65 15 15.65C13.78 15.65 13.22 14.91 11.78 14.91C10.74 14.91 9.65 15.28 8.77 15.68C8.71 15.71 8.66 15.71 8.61 15.73V17.76C8.61 17.84 8.61 17.92 8.58 17.97V18.03C8.47 18.4 8.13 18.67 7.73 18.67C7.22 18.67 6.82 18.26 6.82 17.76V8C6.47 7.73 6.24 7.31 6.24 6.83C6.24 6 6.9 5.33 7.73 5.33C8.56 5.33 9.23 6 9.23 6.83C9.23 7.31 9 7.73 8.64 8V8.83C8.72 8.8 8.8 8.77 8.88 8.72C9.71 8.37 10.7 8.08 11.63 8.08C12.64 8.08 13.44 8.35 14.35 8.69C14.54 8.77 14.72 8.8 14.93 8.8C15.95 8.8 17.07 8.08 17.34 8.08C17.55 8.08 17.74 8.24 17.74 8.43V14.69H17.73Z"; +var mdiFood = "M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z"; +var mdiFoodApple = "M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z"; +var mdiFoodAppleOutline = "M20,10C18.58,7.57 15.5,6.69 13,8V3H11V8C8.5,6.69 5.42,7.57 4,10C2,13 7,22 9,22C11,22 11,21 12,21C13,21 13,22 15,22C17,22 22,13 20,10M18.25,13.38C17.63,15.85 16.41,18.12 14.7,20C14.5,20 14.27,19.9 14.1,19.75C12.87,18.76 11.13,18.76 9.9,19.75C9.73,19.9 9.5,20 9.3,20C7.59,18.13 6.36,15.85 5.75,13.39C5.5,12.66 5.45,11.87 5.66,11.12C6.24,10.09 7.32,9.43 8.5,9.4C9.06,9.41 9.61,9.54 10.11,9.79L11,10.24H13L13.89,9.79C14.39,9.54 14.94,9.41 15.5,9.4C16.68,9.43 17.76,10.08 18.34,11.11C18.55,11.86 18.5,12.65 18.25,13.38M11,5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5Z"; +var mdiFoodCroissant = "M22,19L19,17L22,15V19M15,15L19,9L22,13L18,16L15,15M5,17L2,19V15L5,17M9,15L6,16L2,13L5,9L9,15M14,6L18,8L13,15H11L6,8L10,6H14Z"; +var mdiFoodDrumstick = "M20.16 12.73C22.93 9.96 22.57 5.26 19.09 3C17.08 1.67 14.39 1.66 12.36 2.97C10.6 4.1 9.63 5.86 9.46 7.68C9.33 9 8.83 10.23 7.91 11.15L7.88 11.18C6.72 12.34 6.72 14.11 7.81 15.19L8.8 16.18C9.89 17.27 11.66 17.27 12.75 16.18C13.72 15.21 15 14.68 16.39 14.53C17.76 14.38 19.1 13.78 20.16 12.73M6.26 19.86C6.53 20.42 6.44 21.1 5.97 21.56C5.39 22.15 4.44 22.15 3.85 21.56C3.58 21.29 3.44 20.94 3.42 20.58C3.06 20.56 2.71 20.42 2.44 20.15C1.85 19.56 1.85 18.61 2.44 18.03C2.9 17.57 3.59 17.47 4.14 17.74L6.62 15.31C6.76 15.5 6.92 15.72 7.1 15.9L8.09 16.89C8.3 17.09 8.5 17.26 8.76 17.41L6.26 19.86Z"; +var mdiFoodDrumstickOff = "M20.8 22.7L13.6 15.5C13.3 15.7 13 15.9 12.7 16.2C11.6 17.3 9.8 17.3 8.7 16.2L7.7 15.2C6.6 14.1 6.6 12.3 7.8 11.2C8 11 8.2 10.7 8.4 10.4L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M8.1 16.9L7.1 15.9C6.9 15.7 6.8 15.5 6.6 15.3L4.1 17.7C3.5 17.4 2.9 17.5 2.4 18C1.8 18.6 1.8 19.5 2.4 20.1C2.7 20.4 3 20.5 3.4 20.5C3.4 20.9 3.6 21.2 3.8 21.5C4.4 22.1 5.3 22.1 5.9 21.5C6.4 21 6.5 20.4 6.2 19.8L8.7 17.4C8.5 17.3 8.3 17.1 8.1 16.9M20.2 12.7C23 9.9 22.6 5.2 19.1 3C17.1 1.7 14.4 1.7 12.4 3C11 3.9 10.1 5.1 9.7 6.5L17.5 14.3C18.5 14 19.4 13.5 20.2 12.7Z"; +var mdiFoodDrumstickOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L8.5 10.4C8.3 10.7 8.1 10.9 7.9 11.2C6.7 12.4 6.7 14.1 7.8 15.2L8.8 16.2C9.3 16.7 10.1 17 10.8 17C11.5 17 12.2 16.7 12.8 16.2C13.1 15.9 13.4 15.7 13.7 15.5L20.9 22.7L22.1 21.5M11.3 14.8C11.1 15 10.9 15 10.8 15S10.4 15 10.2 14.8L9.2 13.8C9 13.6 9 13.4 9 13.2C9 13 9.1 12.7 9.3 12.5C9.5 12.3 9.7 12 9.9 11.8L12.1 14C11.9 14.3 11.6 14.5 11.3 14.8M11.4 8.2L9.7 6.5C10.1 5.1 11 3.9 12.4 3C13.4 2.4 14.6 2 15.7 2C16.9 2 18.1 2.3 19.1 3C22.6 5.3 22.9 10 20.2 12.7C19.4 13.5 18.5 14 17.5 14.3L15.8 12.6C15.9 12.6 16 12.5 16.2 12.5C17.2 12.4 18.1 12 18.8 11.3C19.7 10.4 20.2 9.1 20 7.8C19.9 6.5 19.2 5.4 18 4.6C17.3 4.2 16.5 4 15.7 4C14.9 4 14.1 4.2 13.4 4.7C12.2 5.4 11.5 6.6 11.4 7.9V8.2M8.8 17.4L6.3 19.8C6.6 20.4 6.5 21 6 21.5C5.4 22.1 4.5 22.1 3.9 21.5C3.6 21.2 3.5 20.9 3.5 20.5C3.1 20.5 2.8 20.3 2.5 20.1C1.9 19.5 1.9 18.6 2.5 18C3 17.5 3.6 17.4 4.2 17.7L6.7 15.3C6.8 15.5 7 15.7 7.2 15.9L8.2 16.9C8.3 17.1 8.5 17.3 8.8 17.4"; +var mdiFoodDrumstickOutline = "M15.71 4C16.54 4 17.33 4.22 18 4.66C19.14 5.4 19.84 6.53 20 7.84C20.11 9.13 19.66 10.4 18.75 11.31C18.05 12 17.16 12.44 16.18 12.54C14.27 12.74 12.59 13.5 11.34 14.77C11.13 14.97 10.9 15 10.77 15C10.65 15 10.42 14.97 10.21 14.77L9.22 13.78C9.04 13.6 9 13.39 9 13.25C9 13 9.11 12.78 9.32 12.57C10.53 11.35 11.27 9.73 11.45 7.87C11.58 6.54 12.29 5.4 13.45 4.65C14.11 4.22 14.89 4 15.71 4M15.71 2C14.54 2 13.37 2.32 12.36 2.97C10.6 4.1 9.63 5.86 9.46 7.68C9.33 9 8.83 10.23 7.91 11.15L7.88 11.18C6.72 12.34 6.72 14.11 7.81 15.19L8.8 16.18C9.35 16.73 10.06 17 10.77 17S12.2 16.73 12.75 16.18C13.72 15.21 15 14.68 16.39 14.53C17.76 14.38 19.1 13.78 20.16 12.73C22.93 9.96 22.57 5.26 19.09 3C18.08 2.33 16.9 2 15.71 2M6.26 19.86C6.53 20.42 6.44 21.1 5.97 21.56C5.39 22.15 4.44 22.15 3.85 21.56C3.58 21.29 3.44 20.94 3.42 20.58C3.06 20.56 2.71 20.42 2.44 20.15C1.85 19.56 1.85 18.61 2.44 18.03C2.9 17.57 3.59 17.47 4.14 17.74L6.62 15.31C6.76 15.5 6.92 15.72 7.1 15.9L8.09 16.89C8.3 17.09 8.5 17.26 8.76 17.41L6.26 19.86Z"; +var mdiFoodForkDrink = "M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z"; +var mdiFoodHalal = "M7 5V15C7 16.11 6.11 17 5 17H4C3.45 17 3 16.55 3 16V13H1V16C1 17.66 2.34 19 4 19H5C7.21 19 9 17.21 9 15V5M23 13.38L21.77 12.15C21.03 11.41 20.04 11 19 11H17V13H19C19.5 13 20 13.2 20.35 13.56L20.7 13.91L19.5 14.6C19.04 14.86 18.53 15 18 15H17C16.44 15 16 14.56 16 14V6H14V9.81L13.38 9.12C12.7 8.37 11.6 8 10.59 8H10V10H10.59C11.23 10 11.84 10.25 12.29 10.71L14 12.41V14C14 15.12 13.12 16 12 16H10V18H12C13.37 18 14.5 17.3 15.17 16.24C15.63 16.71 16.25 17 17 17H18C18.88 17 19.74 16.77 20.5 16.33L23 14.89Z"; +var mdiFoodKosher = "M1 7V9H3C3.57 9 4 9.43 4 10V17H6V10C6 8.36 4.64 7 3 7H1M7 7V14C7 15.65 8.36 17 10 17H14C15.65 17 17 15.65 17 14V7H15V14C15 14.57 14.57 15 14 15H10C9.43 15 9 14.57 9 14V13H10C11.65 13 13 11.65 13 10V7H11V10C11 10.57 10.57 11 10 11H9V7H7M18 7V9H20C20.57 9 21 9.43 21 10V14C21 14.57 20.57 15 20 15H18V17H20C21.65 17 23 15.65 23 14V10C23 8.36 21.65 7 20 7H18Z"; +var mdiFoodOff = "M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z"; +var mdiFoodSteak = "M11.9 2C8 2 4.9 5.4 5 9.3C5.1 11.9 6.6 14.1 8.7 15.2C10.1 15.9 11 17.3 11 18.8V19C11 20.7 12.3 22 14 22C18 22 19 17 19 9C19 9 19 2 11.9 2M14 20C13.4 20 13 19.6 13 19V18.8C13 16.6 11.7 14.5 9.7 13.4C8.1 12.6 7.1 11 7 9.2C7 7.9 7.5 6.5 8.4 5.5C9.3 4.5 10.6 4 11.8 4C16.7 4 17 8.2 17 9C17 18.9 15.3 20 14 20M15.8 7.6L8.3 10.3C8.1 10 8 9.6 8 9.1C8 8.4 8.2 7.8 8.5 7.1L13.7 5.2C14.9 5.8 15.5 6.7 15.8 7.6M12.9 15.1L15.7 14.1C15.6 15.6 15.3 16.7 15.1 17.4L13.8 17.9C13.8 16.9 13.5 16 12.9 15.1M16 9.2C16 10.4 16 11.5 15.9 12.4L11.9 13.9C11.4 13.4 10.8 12.9 10.1 12.6C9.7 12.4 9.3 12.1 9 11.8L16 9.2Z"; +var mdiFoodSteakOff = "M2.39 1.73L1.11 3L5.27 7.16C5.08 7.83 5 8.53 5 9.26C5.1 11.83 6.59 14.05 8.74 15.19C10.1 15.9 11 17.25 11 18.79V19C11 20.66 12.34 22 14 22C15.68 22 16.83 21.11 17.6 19.5L20.84 22.73L22.11 21.46L2.39 1.73M14 20C13.45 20 13 19.55 13 19V18.79C13 16.56 11.72 14.5 9.67 13.42C8.09 12.58 7.07 10.96 7 9.18C7 9.09 7 9 7 8.9L8.16 10.05C8.19 10.15 8.21 10.25 8.24 10.35L8.4 10.29L9.62 11.5L9.08 11.71C9.38 12.04 9.73 12.32 10.14 12.53C10.81 12.89 11.4 13.34 11.91 13.85L11.95 13.84L13.17 15.06L12.95 15.14C13.46 15.96 13.8 16.89 13.93 17.85L15.2 17.39C15.22 17.32 15.25 17.24 15.27 17.16L16.07 17.96C15.47 19.68 14.68 20 14 20M15.79 7.6L12.14 8.94L9.88 6.68L13.69 5.3C14.94 5.77 15.53 6.72 15.79 7.6M8.59 5.39L7.17 3.97C8.41 2.77 10.07 2 11.88 2H11.88C19 2 19 9 19 9C19 11.46 18.9 13.63 18.66 15.46L16.84 13.64C16.94 12.36 17 10.83 17 9C17 8.18 16.69 4 11.88 4H11.88C10.67 4 9.5 4.5 8.59 5.39M15.68 12.5L13.36 10.15L16 9.19C16 10.41 15.97 11.46 15.92 12.4L15.68 12.5Z"; +var mdiFoodTurkey = "M5.44 7.96L5.96 7.43C6.54 6.85 7.5 6.85 8.1 7.47L8.12 7.5C8.61 8 9.26 8.24 9.97 8.31C10.94 8.4 11.88 8.92 12.5 9.86C13.18 10.94 13.17 12.38 12.46 13.45C11.26 15.3 8.75 15.5 7.28 14C6.72 13.45 6.4 12.74 6.32 12C6.24 11.27 5.95 10.58 5.44 10.07C4.86 9.5 4.86 8.54 5.44 7.96M9.64 16C8.47 16 7.38 15.55 6.57 14.72C5.87 14 5.43 13.1 5.32 12.12C5.29 11.82 5.2 11.43 4.96 11.07C4.36 11.9 4 12.9 4 14C4 15.64 4.8 17.09 6.03 18H19V17C19 13.4 16.61 10.35 13.34 9.35C14.23 10.75 14.21 12.62 13.3 14C12.5 15.25 11.12 16 9.64 16M14.78 7.56H16.05C16.92 7.56 17.68 8.17 17.68 9.26V10H18.93V9C18.93 7.5 17.6 6.36 16.05 6.36H14.78C13.95 6.36 13.24 5.54 13.24 4.7S13.95 3.24 14.78 3.24V2C13.24 2 12 3.24 12 4.78S13.24 7.56 14.78 7.56M4.5 7.55C4.56 7.45 4.64 7.35 4.73 7.25L5.25 6.73C5.34 6.64 5.44 6.57 5.54 6.5L4.13 5.07C4.27 4.8 4.22 4.45 4 4.22C3.7 3.93 3.22 3.93 2.93 4.22C2.79 4.36 2.72 4.53 2.71 4.71C2.53 4.72 2.36 4.79 2.22 4.93C1.93 5.22 1.93 5.7 2.22 6C2.45 6.22 2.79 6.27 3.07 6.13L4.5 7.55M18.39 4.39C18.9 3.88 19.22 3.19 19.22 2.42H17.97C17.97 3.25 17.27 3.95 16.44 3.95V5.19C18.3 5.19 19.76 6.71 19.76 8.57V11H21V8.57C21 6.72 19.94 5.13 18.39 4.39M5 21H19C20.11 21 21 20.11 21 19H3C3 20.11 3.9 21 5 21Z"; +var mdiFoodVariant = "M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z"; +var mdiFoodVariantOff = "M2.28 3L1 4.27L3.31 6.58C2.91 8.7 2.55 10.8 2.33 12.83C2 16 2 19 2 22H9C9 19 9 16 8.67 12.83C8.63 12.5 8.58 12.15 8.54 11.81L12.73 16H11V18C11 20.21 12.79 22 15 22H18C18.23 22 18.45 22 18.67 21.94L19.73 23L21 21.72M4.82 3L7.53 5.71C7.5 5.47 7.45 5.24 7.4 5H8V3H7M20.55 11.23L17.8 16L21.59 19.76C21.86 19.21 22 18.61 22 18V16H19.87L22.11 12.13Z"; +var mdiFootPrint = "M16 2A2 2 0 1 1 14 4A2 2 0 0 1 16 2M12.04 3A1.5 1.5 0 1 1 10.54 4.5A1.5 1.5 0 0 1 12.04 3M9.09 4.5A1 1 0 1 1 8.09 5.5A1 1 0 0 1 9.09 4.5M7.04 6A1 1 0 1 1 6.04 7A1 1 0 0 1 7.04 6M14.53 12A2.5 2.5 0 0 0 17 9.24A2.6 2.6 0 0 0 14.39 7H11.91A6 6 0 0 0 6.12 11.4A2 2 0 0 0 6.23 12.8A6.8 6.8 0 0 1 6.91 15.76A6.89 6.89 0 0 1 6.22 18.55A1.92 1.92 0 0 0 6.3 20.31A3.62 3.62 0 0 0 10.19 21.91A3.5 3.5 0 0 0 12.36 16.63A2.82 2.82 0 0 1 11.91 15S11.68 12 14.53 12Z"; +var mdiFootball = "M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z"; +var mdiFootballAustralian = "M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z"; +var mdiFootballHelmet = "M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z"; +var mdiForklift = "M6,4V11H4C2.89,11 2,11.89 2,13V17A3,3 0 0,0 5,20A3,3 0 0,0 8,17H10A3,3 0 0,0 13,20A3,3 0 0,0 16,17V13L12,4H6M17,5V19H22V17.5H18.5V5H17M7.5,5.5H11.2L14.5,13H7.5V5.5M5,15.5A1.5,1.5 0 0,1 6.5,17A1.5,1.5 0 0,1 5,18.5A1.5,1.5 0 0,1 3.5,17A1.5,1.5 0 0,1 5,15.5M13,15.5A1.5,1.5 0 0,1 14.5,17A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,17A1.5,1.5 0 0,1 13,15.5Z"; +var mdiFormDropdown = "M17 5H20L18.5 7L17 5M3 2H21C22.11 2 23 2.9 23 4V8C23 9.11 22.11 10 21 10H16V20C16 21.11 15.11 22 14 22H3C1.9 22 1 21.11 1 20V4C1 2.9 1.9 2 3 2M3 4V8H14V4H3M21 8V4H16V8H21M3 20H14V10H3V20M5 12H12V14H5V12M5 16H12V18H5V16Z"; +var mdiFormSelect = "M15 5H18L16.5 7L15 5M5 2H19C20.11 2 21 2.9 21 4V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V4C3 2.9 3.9 2 5 2M5 4V8H19V4H5M5 20H19V10H5V20M7 12H17V14H7V12M7 16H17V18H7V16Z"; +var mdiFormTextarea = "M13 9H4V23H2V7H13M23 9V7H17V5A1 1 0 0 1 18 4H20V2H17.5C17 2 16 2.45 16 3C16 2.45 15.05 2 14.5 2H12V4H14A1 1 0 0 1 15 5V19A1 1 0 0 1 14 20H12V22H14.5C15.05 22 16 21.55 16 21C16 21.55 16.95 22 17.5 22H20V20H18A1 1 0 0 1 17 19V9Z"; +var mdiFormTextbox = "M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z"; +var mdiFormTextboxLock = "M2 7H6V9H4V15H6V17H2V7M10 7H22V12C21.42 11.56 20.74 11.25 20 11.1V9H10V15H14.25C13.56 15 13 15.56 13 16.25V17H10V19C10 19.55 10.45 20 11 20H13V22H10.5C9.95 22 9 21.55 9 21C9 21.55 8.05 22 7.5 22H5V20H7C7.55 20 8 19.55 8 19V5C8 4.45 7.55 4 7 4H5V2H7.5C8.05 2 9 2.45 9 3C9 2.45 9.95 2 10.5 2H13V4H11C10.45 4 10 4.45 10 5V7M21.8 17C22.4 17 23 17.6 23 18.3V21.8C23 22.4 22.4 23 21.7 23H16.2C15.6 23 15 22.4 15 21.7V18.2C15 17.6 15.6 17 16.2 17V15.5C16.2 14.1 17.6 13 19 13C20.4 13 21.8 14.1 21.8 15.5V17M20.5 17V15.5C20.5 14.7 19.8 14.2 19 14.2C18.2 14.2 17.5 14.7 17.5 15.5V17H20.5Z"; +var mdiFormTextboxPassword = "M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20M8.5,12A1.5,1.5 0 0,0 7,10.5A1.5,1.5 0 0,0 5.5,12A1.5,1.5 0 0,0 7,13.5A1.5,1.5 0 0,0 8.5,12M13,10.89C12.39,10.33 11.44,10.38 10.88,11C10.32,11.6 10.37,12.55 11,13.11C11.55,13.63 12.43,13.63 13,13.11V10.89Z"; +var mdiFormatAlignBottom = "M13,9L15.5,6.5L16.92,7.92L12,12.84L7.08,7.92L8.5,6.5L11,9V3H13V9M3,15H21V17H3V15M3,19H13V21H3V19Z"; +var mdiFormatAlignCenter = "M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z"; +var mdiFormatAlignJustify = "M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z"; +var mdiFormatAlignLeft = "M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z"; +var mdiFormatAlignMiddle = "M13,6L15,4L16.42,5.42L12,9.84L7.58,5.42L9,4L11,6V2H13V6M3,11H21V13H3V11M13,18V22H11V18L9,20L7.58,18.58L12,14.16L16.42,18.58L15,20L13,18Z"; +var mdiFormatAlignRight = "M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z"; +var mdiFormatAlignTop = "M13,15L15.5,17.5L16.92,16.08L12,11.16L7.08,16.08L8.5,17.5L11,15V21H13V15M3,3H21V5H3V3M3,7H13V9H3V7Z"; +var mdiFormatAnnotationMinus = "M10.5,7H8.5L3,21H5.2L6.3,18H12.5L13.6,21H16L10.5,7M7.1,16L9.5,9.7L11.9,16H7.1M22,7H14V5H22V7Z"; +var mdiFormatAnnotationPlus = "M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z"; +var mdiFormatBold = "M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z"; +var mdiFormatClear = "M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z"; +var mdiFormatColorFill = "M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z"; +var mdiFormatColorHighlight = "M4,17L6.75,14.25L6.72,14.23C6.14,13.64 6.14,12.69 6.72,12.11L11.46,7.37L15.7,11.61L10.96,16.35C10.39,16.93 9.46,16.93 8.87,16.37L8.24,17H4M15.91,2.91C16.5,2.33 17.45,2.33 18.03,2.91L20.16,5.03C20.74,5.62 20.74,6.57 20.16,7.16L16.86,10.45L12.62,6.21L15.91,2.91Z"; +var mdiFormatColorMarkerCancel = "M16.5 8C14 8 12 10 12 12.5S14 17 16.5 17 21 15 21 12.5 19 8 16.5 8M16.5 15.5C14.8 15.5 13.5 14.2 13.5 12.5C13.5 11.9 13.7 11.4 13.9 11L18 15.1C17.6 15.3 17.1 15.5 16.5 15.5M19.1 14L15 9.9C15.4 9.6 15.9 9.5 16.5 9.5C18.2 9.5 19.5 10.8 19.5 12.5C19.5 13.1 19.3 13.6 19.1 14M12.1 7.7L10.6 6.2L13.9 2.9C14.5 2.3 15.4 2.3 16 2.9L18.2 5C18.6 5.4 18.7 5.8 18.6 6.3C18 6.1 17.3 6 16.6 6C14.8 6 13.3 6.7 12.1 7.7M10.5 14.9L9 16.3C8.4 16.9 7.5 16.9 6.9 16.3L6.2 17H2L4.8 14.2C4.2 13.6 4.2 12.7 4.8 12.1L9.5 7.4L11.1 9C10.4 10 10 11.2 10 12.5C10 13.3 10.2 14.1 10.5 14.9Z"; +var mdiFormatColorText = "M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z"; +var mdiFormatColumns = "M3,3H11V5H3V3M13,3H21V5H13V3M3,7H11V9H3V7M13,7H21V9H13V7M3,11H11V13H3V11M13,11H21V13H13V11M3,15H11V17H3V15M13,15H21V17H13V15M3,19H11V21H3V19M13,19H21V21H13V19Z"; +var mdiFormatFloatCenter = "M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z"; +var mdiFormatFloatLeft = "M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z"; +var mdiFormatFloatNone = "M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z"; +var mdiFormatFloatRight = "M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z"; +var mdiFormatFont = "M17,8H20V20H21V21H17V20H18V17H14L12.5,20H14V21H10V20H11L17,8M18,9L14.5,16H18V9M5,3H10C11.11,3 12,3.89 12,5V16H9V11H6V16H3V5C3,3.89 3.89,3 5,3M6,5V9H9V5H6Z"; +var mdiFormatFontSizeDecrease = "M5.12,14L7.5,7.67L9.87,14M6.5,5L1,19H3.25L4.37,16H10.62L11.75,19H14L8.5,5H6.5M18,17L23,11.93L21.59,10.5L19,13.1V7H17V13.1L14.41,10.5L13,11.93L18,17Z"; +var mdiFormatFontSizeIncrease = "M5.12,14L7.5,7.67L9.87,14M6.5,5L1,19H3.25L4.37,16H10.62L11.75,19H14L8.5,5H6.5M18,7L13,12.07L14.41,13.5L17,10.9V17H19V10.9L21.59,13.5L23,12.07L18,7Z"; +var mdiFormatHeader1 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z"; +var mdiFormatHeader2 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z"; +var mdiFormatHeader3 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z"; +var mdiFormatHeader4 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z"; +var mdiFormatHeader5 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z"; +var mdiFormatHeader6 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z"; +var mdiFormatHeaderDecrease = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z"; +var mdiFormatHeaderEqual = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z"; +var mdiFormatHeaderIncrease = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z"; +var mdiFormatHeaderPound = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z"; +var mdiFormatHorizontalAlignCenter = "M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z"; +var mdiFormatHorizontalAlignLeft = "M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z"; +var mdiFormatHorizontalAlignRight = "M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z"; +var mdiFormatIndentDecrease = "M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z"; +var mdiFormatIndentIncrease = "M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z"; +var mdiFormatItalic = "M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z"; +var mdiFormatLetterCase = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6Z"; +var mdiFormatLetterCaseLower = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6M22,20V22H14.5V20H22Z"; +var mdiFormatLetterCaseUpper = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6M2,20H13V22H2V20Z"; +var mdiFormatLetterEndsWith = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M20 14V18H2V20H22V14Z"; +var mdiFormatLetterMatches = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M20 14V18H4V15H2V20H22V14Z"; +var mdiFormatLetterStartsWith = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M4 18V15H2V20H22V18Z"; +var mdiFormatLineSpacing = "M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z"; +var mdiFormatLineStyle = "M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z"; +var mdiFormatLineWeight = "M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z"; +var mdiFormatListBulleted = "M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z"; +var mdiFormatListBulletedSquare = "M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9"; +var mdiFormatListBulletedTriangle = "M5,15.5L7.5,20H2.5L5,15.5M9,19H21V17H9V19M5,9.5L7.5,14H2.5L5,9.5M9,13H21V11H9V13M5,3.5L7.5,8H2.5L5,3.5M9,7H21V5H9V7Z"; +var mdiFormatListBulletedType = "M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z"; +var mdiFormatListCheckbox = "M21,19V17H8V19H21M21,13V11H8V13H21M8,7H21V5H8V7M4,5V7H6V5H4M3,5A1,1 0 0,1 4,4H6A1,1 0 0,1 7,5V7A1,1 0 0,1 6,8H4A1,1 0 0,1 3,7V5M4,11V13H6V11H4M3,11A1,1 0 0,1 4,10H6A1,1 0 0,1 7,11V13A1,1 0 0,1 6,14H4A1,1 0 0,1 3,13V11M4,17V19H6V17H4M3,17A1,1 0 0,1 4,16H6A1,1 0 0,1 7,17V19A1,1 0 0,1 6,20H4A1,1 0 0,1 3,19V17Z"; +var mdiFormatListChecks = "M3,5H9V11H3V5M5,7V9H7V7H5M11,7H21V9H11V7M11,15H21V17H11V15M5,20L1.5,16.5L2.91,15.09L5,17.17L9.59,12.59L11,14L5,20Z"; +var mdiFormatListNumbered = "M7,13V11H21V13H7M7,19V17H21V19H7M7,7V5H21V7H7M3,8V5H2V4H4V8H3M2,17V16H5V20H2V19H4V18.5H3V17.5H4V17H2M4.25,10A0.75,0.75 0 0,1 5,10.75C5,10.95 4.92,11.14 4.79,11.27L3.12,13H5V14H2V13.08L4,11H2V10H4.25Z"; +var mdiFormatListNumberedRtl = "M3,13V11H17V13H3M3,19V17H17V19H3M3,7V5H17V7H3M20,8V5H19V4H21V8H20M19,17V16H22V20H19V19H21V18.5H20V17.5H21V17H19M21.25,10C21.67,10 22,10.34 22,10.75C22,10.95 21.92,11.14 21.79,11.27L20.12,13H22V14H19V13.08L21,11H19V10H21.25Z"; +var mdiFormatListText = "M2 14H8V20H2M16 8H10V10H16M2 10H8V4H2M10 4V6H22V4M10 20H16V18H10M10 16H22V14H10"; +var mdiFormatOverline = "M5,5H19V3H5V5M9.62,16L12,9.67L14.37,16M11,7L5.5,21H7.75L8.87,18H15.12L16.25,21H18.5L13,7H11Z"; +var mdiFormatPageBreak = "M18,20H6V18H4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V18H18V20M14,2H6A2,2 0 0,0 4,4V12H6V4H14V8H18V12H20V8L14,2M11,16H8V14H11V16M16,16H13V14H16V16M3,14H6V16H3V14M21,16H18V14H21V16Z"; +var mdiFormatPaint = "M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z"; +var mdiFormatParagraph = "M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z"; +var mdiFormatPilcrow = "M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z"; +var mdiFormatQuoteClose = "M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z"; +var mdiFormatQuoteCloseOutline = "M13 6V14H14.88L12.88 18H18.62L21 13.24V6M15 8H19V12.76L17.38 16H16.12L18.12 12H15M3 6V14H4.88L2.88 18H8.62L11 13.24V6M5 8H9V12.76L7.38 16H6.12L8.12 12H5Z"; +var mdiFormatQuoteOpen = "M10,7L8,11H11V17H5V11L7,7H10M18,7L16,11H19V17H13V11L15,7H18Z"; +var mdiFormatQuoteOpenOutline = "M11 18V10H9.12L11.12 6H5.38L3 10.76V18M9 16H5V11.24L6.62 8H7.88L5.88 12H9M21 18V10H19.12L21.12 6H15.38L13 10.76V18M19 16H15V11.24L16.62 8H17.88L15.88 12H19Z"; +var mdiFormatRotate90 = "M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z"; +var mdiFormatSection = "M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z"; +var mdiFormatSize = "M2 4V7H7V19H10V7H15V4H2M21 9H12V12H15V19H18V12H21V9Z"; +var mdiFormatStrikethrough = "M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z"; +var mdiFormatStrikethroughVariant = "M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z"; +var mdiFormatSubscript = "M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z"; +var mdiFormatSuperscript = "M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z"; +var mdiFormatText = "M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z"; +var mdiFormatTextRotationAngleDown = "M14.25 21H10.03L11.44 19.59L2.58 10.73L4.03 9.33L12.84 18.19L14.25 16.78M12.61 8L15.23 10.64L17.43 5.77M19.41 4.92L14.95 16.03L13.5 14.58L14.39 12.38L10.88 8.81L8.68 9.75L7.22 8.25L18.33 3.84Z"; +var mdiFormatTextRotationAngleUp = "M20.58 9.33V13.55L19.17 12.14L10.31 21L8.91 19.59L17.72 10.73L16.31 9.33M7.59 11L10.22 8.39L5.34 6.14M4.5 4.22L15.61 8.63L14.16 10.13L11.96 9.19L8.39 12.75L9.33 14.91L7.83 16.41L3.42 5.25Z"; +var mdiFormatTextRotationDown = "M6,19.73L3,16.73H5V4.27H7V16.73H9L6,19.73M14,9.38V13.13L19.03,11.25L14,9.38M21,12L10,16.73V14.67L12.19,13.73V8.77L10,7.83V5.77L21,10.5V12Z"; +var mdiFormatTextRotationDownVertical = "M15.25 4H13.75L9 15H11.1L12 12.8H17L17.9 15H20L15.25 4M12.63 11L14.5 6L16.37 11H12.63M5 17.5L8 14.5H6V2H4V14.5H2L5 17.5M22 20L19 17V19H6.5V21H19V23L22 20Z"; +var mdiFormatTextRotationNone = "M20.5,18L17.5,21V19H5V17H17.5V15L20.5,18M10.13,10H13.88L12,4.97L10.13,10M12.75,3L17.5,14H15.42L14.5,11.81H9.5L8.58,14H6.5L11.25,3H12.75Z"; +var mdiFormatTextRotationUp = "M3 12V13.5L14 18.25V16.15L11.8 15.25V10.25L14 9.35V7.25L3 12M10 14.62L5 12.75L10 10.88V14.62M18 4.25L15 7.25H17V19.75H19V7.25H21L18 4.25Z"; +var mdiFormatTextRotationVertical = "M15.75 5H14.25L9.5 16H11.6L12.5 13.8H17.5L18.4 16H20.5L15.75 5M13.13 12L15 7L16.87 12H13.13M6 19.75L9 16.75H7V4.25H5V16.75H3L6 19.75Z"; +var mdiFormatTextVariant = "M9.6,14L12,7.7L14.4,14M11,5L5.5,19H7.7L8.8,16H15L16.1,19H18.3L13,5H11Z"; +var mdiFormatTextVariantOutline = "M11 3C10.18 3 9.44 3.5 9.14 4.27L3.64 18.27C3.12 19.58 4.09 21 5.5 21H7.75C8.59 21 9.33 20.5 9.62 19.7L10.26 18H13.74L14.38 19.7C14.67 20.5 15.42 21 16.25 21H18.5C19.91 21 20.88 19.58 20.36 18.27L14.86 4.27C14.56 3.5 13.82 3 13 3M11 5H13L18.5 19H16.25L15.12 16H8.87L7.75 19H5.5M12 7.67L9.62 14H14.37Z"; +var mdiFormatTextWrappingClip = "M7,21H5V3H7V21M17,3V11H9V13H17V21H19V3H17Z"; +var mdiFormatTextWrappingOverflow = "M7,21H5V3H7V21M14,3H12V9H14V3M14,15H12V21H14V15M19,12L16,9V11H9V13H16V15L19,12Z"; +var mdiFormatTextWrappingWrap = "M7,21H5V3H7V21M19,3H17V21H19V3M13,8H9V10H12.97C13.14,10 14,10.16 14,12C14,13.84 13.14,14 13,14H11V12L8,15L11,18V16H13C14.04,16 16,15.16 16,12C16,8.84 14.04,8 13,8Z"; +var mdiFormatTextbox = "M21,7V3H17V4H7V3H3V7H4V17H3V21H7V20H17V21H21V17H20V7H21M18,4H20V6H18V4M4,4H6V6H4V4M6,20H4V18H6V20M20,20H18V18H20V20M18,17H17V18H7V17H6V7H7V6H17V7H18V17M16,8V10H13V16H11V10H8V8H16Z"; +var mdiFormatTextdirectionLToR = "M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z"; +var mdiFormatTextdirectionRToL = "M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z"; +var mdiFormatTitle = "M5,4V7H10.5V19H13.5V7H19V4H5Z"; +var mdiFormatUnderline = "M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z"; +var mdiFormatVerticalAlignBottom = "M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z"; +var mdiFormatVerticalAlignCenter = "M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z"; +var mdiFormatVerticalAlignTop = "M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z"; +var mdiFormatWrapInline = "M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z"; +var mdiFormatWrapSquare = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z"; +var mdiFormatWrapTight = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z"; +var mdiFormatWrapTopBottom = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z"; +var mdiForum = "M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z"; +var mdiForumOutline = "M15,4V11H5.17L4,12.17V4H15M16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12V3A1,1 0 0,0 16,2M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z"; +var mdiForward = "M12,8V4L20,12L12,20V16H4V8H12Z"; +var mdiForwardburger = "M19,13H3V11H19L15,7L16.4,5.6L22.8,12L16.4,18.4L15,17L19,13M3,6H13V8H3V6M13,16V18H3V16H13Z"; +var mdiFountain = "M7.5,2C4.47,2 2,4.46 2,7.5V7.5L2,8H4V7.5A3.5,3.5 0 0,1 7.5,4C9,4 10.26,4.93 10.76,6.24C10.37,6.08 9.95,6 9.5,6C8.11,6 6.9,6.82 6.34,8L8.08,9C8.29,8.42 8.85,8 9.5,8A1.5,1.5 0 0,1 11,9.5V11H13V9.5A1.5,1.5 0 0,1 14.5,8C15.16,8 15.71,8.42 15.92,9L17.66,8C17.1,6.82 15.9,6 14.5,6C14.05,6 13.63,6.08 13.24,6.24C13.74,4.93 15,4 16.5,4A3.5,3.5 0 0,1 20,7.5V8H22V7.5H22A5.5,5.5 0 0,0 16.5,2C14.64,2 13,2.93 12,4.34C11,2.93 9.36,2 7.5,2M6,12V14H7.42C7.92,15.15 8.85,16.07 10,16.57C10,17.38 10,18.19 10,19H2C2,19 2.82,20.23 3.41,21.11C3.78,21.67 4.4,22 5.07,22H18.93C19.6,22 20.22,21.67 20.59,21.11L22,19H14C14,18.19 14,17.38 14,16.57C15.15,16.07 16.08,15.15 16.58,14H18V12H6Z"; +var mdiFountainPen = "M6.95,14.93L11.19,9.27L19.68,2.2C20.07,1.81 20.72,1.81 21.09,2.2L21.8,2.91C22.19,3.28 22.19,3.93 21.8,4.32L14.73,12.81L9.07,17.05L6.95,14.93M8.36,17.76L6.24,15.64L3.41,17.05L2,21.29L4.12,19.17C4.32,19 4.63,19 4.83,19.17C5,19.37 5,19.68 4.83,19.88L2.71,22L6.95,20.59L8.36,17.76Z"; +var mdiFountainPenTip = "M15.54,3.5L20.5,8.47L19.07,9.88L14.12,4.93L15.54,3.5M3.5,19.78L10,13.31C9.9,13 9.97,12.61 10.23,12.35C10.62,11.96 11.26,11.96 11.65,12.35C12.04,12.75 12.04,13.38 11.65,13.77C11.39,14.03 11,14.1 10.69,14L4.22,20.5L14.83,16.95L18.36,10.59L13.42,5.64L7.05,9.17L3.5,19.78Z"; +var mdiFreebsd = "M2.69,2C3.54,1.95 6.08,3.16 6.13,3.19C4.84,4 3.74,5.09 2.91,6.38C2.09,4.81 1.34,2.91 2,2.25C2.17,2.08 2.4,2 2.69,2M20.84,2.13C21.25,2.08 21.58,2.14 21.78,2.34C22.85,3.42 19.88,8.15 19.38,8.66C18.87,9.16 17.57,8.7 16.5,7.63C15.43,6.55 14.97,5.26 15.47,4.75C15.88,4.34 19.09,2.3 20.84,2.13M12,2.56C13.29,2.56 14.53,2.82 15.66,3.28C15.17,3.6 14.81,3.85 14.69,3.97C13.7,4.96 14.14,6.83 15.72,8.41C16.7,9.38 17.84,9.97 18.78,9.97C19.46,9.97 19.92,9.68 20.16,9.44C20.33,9.27 20.6,8.88 20.91,8.41C21.42,9.59 21.69,10.88 21.69,12.25C21.69,17.61 17.36,21.97 12,21.97C6.64,21.97 2.31,17.61 2.31,12.25C2.31,6.89 6.64,2.56 12,2.56Z"; +var mdiFrequentlyAskedQuestions = "M18,15H6L2,19V3A1,1 0 0,1 3,2H18A1,1 0 0,1 19,3V14A1,1 0 0,1 18,15M23,9V23L19,19H8A1,1 0 0,1 7,18V17H21V8H22A1,1 0 0,1 23,9M8.19,4C7.32,4 6.62,4.2 6.08,4.59C5.56,5 5.3,5.57 5.31,6.36L5.32,6.39H7.25C7.26,6.09 7.35,5.86 7.53,5.7C7.71,5.55 7.93,5.47 8.19,5.47C8.5,5.47 8.76,5.57 8.94,5.75C9.12,5.94 9.2,6.2 9.2,6.5C9.2,6.82 9.13,7.09 8.97,7.32C8.83,7.55 8.62,7.75 8.36,7.91C7.85,8.25 7.5,8.55 7.31,8.82C7.11,9.08 7,9.5 7,10H9C9,9.69 9.04,9.44 9.13,9.26C9.22,9.08 9.39,8.9 9.64,8.74C10.09,8.5 10.46,8.21 10.75,7.81C11.04,7.41 11.19,7 11.19,6.5C11.19,5.74 10.92,5.13 10.38,4.68C9.85,4.23 9.12,4 8.19,4M7,11V13H9V11H7M13,13H15V11H13V13M13,4V10H15V4H13Z"; +var mdiFridge = "M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z"; +var mdiFridgeAlert = "M5 2H15C16.11 2 17 2.9 17 4V9H3V4C3 2.9 3.9 2 5 2M17 19C17 20.11 16.11 21 15 21V22H13V21H7V22H5V21C3.9 21 3 20.11 3 19V10H17V19M6 5V7H8V5H6M6 12V15H8V12H6M19 15H21V17H19V15M19 7H21V13H19V7Z"; +var mdiFridgeAlertOutline = "M7 21V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2H15C16.11 2 17 2.9 17 4V19C17 20.11 16.11 21 15 21V22H13V21H7M5 4V9H15V4H5M5 19H15V11H5V19M6 12H8V15H6V12M6 6H8V8H6V6M19 15H21V17H19V15M19 7H21V13H19V7Z"; +var mdiFridgeBottom = "M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z"; +var mdiFridgeIndustrial = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M10 15H8V10H10V15Z"; +var mdiFridgeIndustrialAlert = "M15 2H5C3.9 2 3 2.9 3 4V19C3 20.11 3.9 21 5 21V22H7V21H13V22H15V21C16.11 21 17 20.11 17 19V4C17 2.9 16.11 2 15 2M8 15H6V10H8V15M21 7V13H19V7H21M19 15H21V17H19V15Z"; +var mdiFridgeIndustrialAlertOutline = "M8 15H6V10H8V15M17 4V19C17 20.11 16.11 21 15 21V22H13V21H7V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2H15C16.11 2 17 2.9 17 4M15 4H5V19H15V4M19 17H21V15H19V17M19 7V13H21V7H19Z"; +var mdiFridgeIndustrialOff = "M19 15.8L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M10 11.89L8.11 10H8V15H10V11.89Z"; +var mdiFridgeIndustrialOffOutline = "M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V4H7.2M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M17 18.89L10 11.89V15H8V10H8.11L7 8.89V19H17V18.89Z"; +var mdiFridgeIndustrialOutline = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M17 19H7V4H17V19M10 15H8V10H10V15Z"; +var mdiFridgeOff = "M22.11 21.46L2.39 1.73L1.11 3L5 6.89V9H7.11L8.11 10H5V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46M10 15H8V12H10V15M19 15.8L13.2 10H19V15.8M8.2 5L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V9H12.2L10 6.8V5H8.2Z"; +var mdiFridgeOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5 6.89V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46M17 19H7V11H9.11L17 18.89V19M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V11H14.2L12.2 9H17V4H7.2M8 12H10V15H8V12Z"; +var mdiFridgeOutline = "M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z"; +var mdiFridgeTop = "M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z"; +var mdiFridgeVariant = "M19 4V19C19 20.11 18.11 21 17 21V22H15V21H12.5V2H17C18.11 2 19 2.9 19 4M7 2H11.5V21H9V22H7V21C5.9 21 5 20.11 5 19V4C5 2.9 5.9 2 7 2M10 10H7V14H10V10Z"; +var mdiFridgeVariantAlert = "M17 4V19C17 20.11 16.11 21 15 21V22H13V21H10.5V2H15C16.11 2 17 2.9 17 4M5 2H9.5V21H7V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2M8 10H5V14H8V10M19 7V13H21V7H19M19 17H21V15H19V17Z"; +var mdiFridgeVariantAlertOutline = "M15 2H5C3.9 2 3 2.9 3 4V19C3 20.11 3.9 21 5 21V22H7V21H13V22H15V21C16.11 21 17 20.11 17 19V4C17 2.9 16.11 2 15 2M9 19H5V14H8V10H5V4H9V19M15 19H11V4H15V19M19 15H21V17H19V15M21 7V13H19V7H21Z"; +var mdiFridgeVariantOff = "M2.39 1.73L1.11 3L5 6.89V19C5 20.11 5.9 21 7 21V22H9V21H11.5V13.39L12.5 14.39V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46L2.39 1.73M10 14H7V10H8.11L10 11.89V14M19 15.8L12.5 9.3V2H17C18.11 2 19 2.9 19 4V15.8M11.5 8.3L5.7 2.5C6.05 2.19 6.5 2 7 2H11.5V8.3Z"; +var mdiFridgeVariantOffOutline = "M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V4H13V9.8L11 7.8V4H7.2M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M7 10H8.11L7 8.89V10M11 12.89L10 11.89V14H7V19H11V12.89M17 18.89L13 14.89V19H17V18.89Z"; +var mdiFridgeVariantOutline = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M7 19V14H10V10H7V4H11V19H7M17 19H13V4H17V19Z"; +var mdiFruitCherries = "M16 13H15.5C14.8 11.7 14.3 10 13.8 8.3L14.7 9.2C17.4 11.3 19.8 10.9 19.8 10.9S20.5 7.1 17.8 5.1C15.5 3.3 13.4 3.3 12.8 3.4C12.7 2.8 12.7 2.3 12.6 1.9L11.2 2C11.2 5.2 8.5 11.1 7.6 13C5.6 13.2 4 14.9 4 17C4 19.2 5.8 21 8 21C9.1 21 10 20.6 10.7 19.9C10.3 19 10 18 10 17S10.3 15 10.7 14.1C10.3 13.7 9.7 13.4 9.2 13.2C9.9 11.7 11.1 9 11.9 6.4C12.3 8.7 13.1 11.4 14.1 13.5C12.9 14.2 12 15.5 12 17C12 19.2 13.8 21 16 21S20 19.2 20 17 18.2 13 16 13M8 15.5C7.2 15.5 6.5 16.2 6.5 17H5.5C5.5 15.6 6.6 14.5 8 14.5V15.5M16 15.5C15.2 15.5 14.5 16.2 14.5 17H13.5C13.5 15.6 14.6 14.5 16 14.5V15.5Z"; +var mdiFruitCherriesOff = "M22.1 21.5L2.4 1.7L1.1 3L8.7 10.6C8.3 11.6 7.9 12.5 7.6 13C5.6 13.2 4 14.9 4 17C4 19.2 5.8 21 8 21C9.1 21 10 20.6 10.7 19.9C10.3 19 10 18 10 17S10.3 15 10.7 14.1C10.3 13.7 9.7 13.4 9.2 13.2C9.4 12.8 9.6 12.3 9.9 11.7L12.8 14.6C12.3 15.3 12 16.1 12 17C12 19.2 13.8 21 16 21C16.9 21 17.7 20.7 18.3 20.2L20.8 22.7L22.1 21.5M8 15.5C7.2 15.5 6.5 16.2 6.5 17H5.5C5.5 15.6 6.6 14.5 8 14.5V15.5M14.5 17H13.5C13.5 16.5 13.6 16.1 13.8 15.7L14.6 16.5C14.5 16.7 14.5 16.8 14.5 17M20 16.8L16.2 13C18.2 13.1 19.9 14.8 20 16.8M11.3 8.1L10.1 6.9C10.7 5.1 11.2 3.3 11.2 2L12.6 1.9C12.7 2.3 12.7 2.8 12.8 3.4C13.4 3.3 15.5 3.3 17.8 5.1C20.5 7.1 19.8 10.9 19.8 10.9S17.4 11.3 14.7 9.2L13.8 8.3C14.1 9.5 14.5 10.7 14.9 11.7L12.6 9.4C12.3 8.4 12.1 7.4 11.9 6.4C11.7 7 11.5 7.6 11.3 8.1Z"; +var mdiFruitCitrus = "M9 15.9C6.9 15.7 5.1 14.9 4 13.6C3.2 13.6 2.4 13.1 2.1 12.3C1.8 11.5 2.1 10.7 2.8 10.2C2.9 7.2 5.6 4.1 9.7 2.7C13.8 1.3 18 2.1 20 4.4C20.8 4.4 21.6 4.9 21.9 5.7C22.2 6.5 21.9 7.3 21.2 7.8C21.2 8.6 21 9.4 20.6 10.2C19.4 9.5 18 9 16.5 9C12.6 9 9.3 12 9 15.9M22 16.5C22 19.5 19.5 22 16.5 22S11 19.5 11 16.5 13.5 11 16.5 11 22 13.5 22 16.5M13.3 18L15.6 16.5L13.3 15C13.1 15.5 13 16 13 16.5S13.1 17.5 13.3 18M16 17.4L13.9 18.8C14.4 19.4 15.2 19.8 16 20V17.4M16 13.1C15.2 13.2 14.4 13.6 13.9 14.3L16 15.7V13.1M17 15.6L19.1 14.2C18.6 13.6 17.8 13.2 17 13V15.6M19.1 18.8L17 17.4V19.9C17.8 19.8 18.6 19.4 19.1 18.8M20 16.5C20 16 19.9 15.5 19.7 15L17.4 16.5L19.7 18C19.9 17.5 20 17 20 16.5Z"; +var mdiFruitCitrusOff = "M22.1 21.5L2.4 1.7L1.1 3L4.4 6.3C3.4 7.5 2.9 8.9 2.8 10.2C2.1 10.7 1.8 11.5 2.1 12.3C2.4 13.1 3.2 13.6 4 13.6C5.1 14.9 6.9 15.7 9 15.9C9.1 14.5 9.6 13.3 10.3 12.2L11.8 13.7C11.3 14.5 11 15.5 11 16.5C11 19.5 13.5 22 16.5 22C17.5 22 18.5 21.7 19.3 21.2L20.8 22.7L22.1 21.5M13 16.5C13 16 13.1 15.6 13.3 15.1L15 16.8L13.3 18C13.1 17.5 13 17 13 16.5M13.9 18.8L15.7 17.6L16 17.9V20C15.2 19.8 14.4 19.4 13.9 18.8M17 19.9V18.9L17.8 19.7C17.5 19.8 17.3 19.9 17 19.9M20 16.8V16.5C20 16 19.9 15.5 19.7 15L18.8 15.6L18.1 14.9L19.1 14.2C18.6 13.6 17.8 13.2 17 13V13.8L14.6 11.4C15.2 11.2 15.9 11 16.5 11C19.5 11 22 13.5 22 16.5C22 17.2 21.9 17.8 21.6 18.4L20 16.8M13 9.8L7.1 3.9C7.9 3.4 8.8 3 9.7 2.7C13.8 1.3 18 2.1 20 4.4C20.8 4.4 21.6 4.9 21.9 5.7C22.2 6.5 21.9 7.3 21.2 7.8C21.2 8.6 21 9.4 20.6 10.2C19.4 9.5 18 9 16.5 9C15.3 9 14.1 9.3 13 9.8Z"; +var mdiFruitGrapes = "M14 12C14 13.1 13.1 14 12 14S10 13.1 10 12 10.9 10 12 10 14 10.9 14 12M7 10C5.9 10 5 10.9 5 12S5.9 14 7 14 9 13.1 9 12 8.1 10 7 10M17 10C15.9 10 15 10.9 15 12S15.9 14 17 14 19 13.1 19 12 18.1 10 17 10M14.5 6C13.4 6 12.5 6.9 12.5 8S13.4 10 14.5 10 16.5 9.1 16.5 8 15.6 6 14.5 6M9.5 6C8.4 6 7.5 6.9 7.5 8S8.4 10 9.5 10 11.5 9.1 11.5 8 10.6 6 9.5 6M14.5 14C13.4 14 12.5 14.9 12.5 16S13.4 18 14.5 18 16.5 17.1 16.5 16 15.6 14 14.5 14M9.5 14C8.4 14 7.5 14.9 7.5 16S8.4 18 9.5 18 11.5 17.1 11.5 16 10.6 14 9.5 14M12 18C10.9 18 10 18.9 10 20S10.9 22 12 22 14 21.1 14 20 13.1 18 12 18M14.4 2.2L13.6 1C11.4 2 11.2 5.6 11.2 6H12.7C12.8 5.2 13.1 2.7 14.4 2.2Z"; +var mdiFruitGrapesOutline = "M19 12C19 10.61 18.05 9.47 16.78 9.12C16.92 8.78 17 8.4 17 8C17 6.34 15.66 5 14 5C13.57 5 13.17 5.1 12.81 5.26C13 4.19 13.39 2.59 14.4 2.2L13.6 1C11.9 1.77 11.4 4.09 11.26 5.29C10.87 5.11 10.45 5 10 5C8.34 5 7 6.34 7 8C7 8.4 7.08 8.77 7.22 9.12C5.94 9.46 5 10.62 5 12C5 13.39 5.95 14.54 7.23 14.88C7.09 15.22 7 15.6 7 16C7 17.39 7.94 18.54 9.22 18.88C9.08 19.23 9 19.61 9 20C9 21.66 10.34 23 12 23S15 21.66 15 20C15 19.61 14.92 19.23 14.78 18.88C16.06 18.54 17 17.39 17 16C17 15.6 16.92 15.23 16.77 14.88C18.05 14.54 19 13.39 19 12M16.31 9.88V9.9H16.3L16.31 9.88M14 6.5C14.83 6.5 15.5 7.17 15.5 8S14.83 9.5 14 9.5 12.5 8.83 12.5 8 13.17 6.5 14 6.5M13.5 12C13.5 12.83 12.83 13.5 12 13.5S10.5 12.83 10.5 12 11.17 10.5 12 10.5 13.5 11.17 13.5 12M10 6.5C10.83 6.5 11.5 7.17 11.5 8S10.83 9.5 10 9.5 8.5 8.83 8.5 8 9.17 6.5 10 6.5M6.5 12C6.5 11.17 7.17 10.5 8 10.5S9.5 11.17 9.5 12 8.83 13.5 8 13.5 6.5 12.83 6.5 12M8.5 16C8.5 15.17 9.17 14.5 10 14.5S11.5 15.17 11.5 16 10.83 17.5 10 17.5 8.5 16.83 8.5 16M12 21.5C11.17 21.5 10.5 20.83 10.5 20S11.17 18.5 12 18.5 13.5 19.17 13.5 20 12.83 21.5 12 21.5M14 17.5C13.17 17.5 12.5 16.83 12.5 16S13.17 14.5 14 14.5 15.5 15.17 15.5 16 14.83 17.5 14 17.5M16 13.5C15.17 13.5 14.5 12.83 14.5 12S15.17 10.5 16 10.5 17.5 11.17 17.5 12 16.83 13.5 16 13.5Z"; +var mdiFruitPineapple = "M14.4 7.7C16.4 6.4 19 7 19 7C17.2 4.6 15.1 4.7 13.6 5.2V5C14.7 3.4 16.9 3.5 16.9 3.5C15.3 2.1 13.9 2.5 13 3C12.5 1.8 12 1 12 1C11.6 1.7 11.3 2.4 11 3.1C10.1 2.5 8.6 2.1 7 3.5C7 3.5 9.3 3.5 10.4 5.2C8.9 4.7 6.8 4.6 5 7C5 7 7.6 6.4 9.6 7.7C7.5 8.9 6 11.7 6 15C6 19.4 8.7 23 12 23S18 19.4 18 15C18 11.7 16.5 8.9 14.4 7.7M15.8 16.8C15.7 17.2 15.6 17.6 15.4 18L14 16L12.5 18L14.1 20.1C13.8 20.3 13.6 20.5 13.3 20.7L12 19L10.7 20.7C10.4 20.6 10.1 20.4 9.9 20.1L11.5 18L10 16L8.5 17.9C8.4 17.5 8.2 17.1 8.1 16.7L9.5 15L8.2 13.2C8.3 12.8 8.4 12.4 8.6 12L10 14L11.5 12L9.9 9.9C10.2 9.7 10.4 9.5 10.7 9.3L12 11L13.3 9.3C13.6 9.4 13.9 9.6 14.1 9.9L12.5 12L14 14L15.5 12.1C15.6 12.5 15.8 12.9 15.9 13.3L14.5 15L15.8 16.8M12 13L13.5 15L12 17L10.5 15L12 13Z"; +var mdiFruitWatermelon = "M16.4 16.4C19.8 13 19.8 7.5 16.4 4.2L4.2 16.4C7.5 19.8 13 19.8 16.4 16.4M16 7C16.6 7 17 7.4 17 8C17 8.6 16.6 9 16 9S15 8.6 15 8C15 7.4 15.4 7 16 7M16 11C16.6 11 17 11.4 17 12C17 12.6 16.6 13 16 13S15 12.6 15 12C15 11.4 15.4 11 16 11M12 11C12.6 11 13 11.4 13 12C13 12.6 12.6 13 12 13S11 12.6 11 12C11 11.4 11.4 11 12 11M12 15C12.6 15 13 15.4 13 16C13 16.6 12.6 17 12 17S11 16.6 11 16C11 15.4 11.4 15 12 15M8 17C7.4 17 7 16.6 7 16C7 15.4 7.4 15 8 15S9 15.4 9 16C9 16.6 8.6 17 8 17M18.6 18.6C14 23.2 6.6 23.2 2 18.6L3.4 17.2C7.2 21 13.3 21 17.1 17.2C20.9 13.4 20.9 7.3 17.1 3.5L18.6 2C23.1 6.6 23.1 14 18.6 18.6Z"; +var mdiFuel = "M3,2H6C6.28,2 6.53,2.11 6.71,2.29L8.79,4.38L9.59,3.59C10,3.2 10.5,3 11,3H17C17.5,3 18,3.2 18.41,3.59L19.41,4.59C19.8,5 20,5.5 20,6V19A2,2 0 0,1 18,21H8A2,2 0 0,1 6,19V13L6,12V8C6,7.5 6.2,7 6.59,6.59L7.38,5.79L5.59,4H3V2M11,5V7H17V5H11M11.41,11L9.41,9H8V10.41L10,12.41V15.59L8,17.59V19H9.41L11.41,17H14.59L16.59,19H18V17.59L16,15.59V12.41L18,10.41V9H16.59L14.59,11H11.41M12,13H14V15H12V13Z"; +var mdiFullscreen = "M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"; +var mdiFullscreenExit = "M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z"; +var mdiFunction = "M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z"; +var mdiFunctionVariant = "M12.42,5.29C11.32,5.19 10.35,6 10.25,7.11L10,10H12.82V12H9.82L9.38,17.07C9.18,19.27 7.24,20.9 5.04,20.7C3.79,20.59 2.66,19.9 2,18.83L3.5,17.33C3.83,18.38 4.96,18.97 6,18.63C6.78,18.39 7.33,17.7 7.4,16.89L7.82,12H4.82V10H8L8.27,6.93C8.46,4.73 10.39,3.1 12.6,3.28C13.86,3.39 15,4.09 15.66,5.17L14.16,6.67C13.91,5.9 13.23,5.36 12.42,5.29M22,13.65L20.59,12.24L17.76,15.07L14.93,12.24L13.5,13.65L16.35,16.5L13.5,19.31L14.93,20.72L17.76,17.89L20.59,20.72L22,19.31L19.17,16.5L22,13.65Z"; +var mdiFuriganaHorizontal = "M8.5 2C7.12 2 6 3.12 6 4.5S7.12 7 8.5 7 11 5.88 11 4.5 9.88 2 8.5 2M15.5 2C14.12 2 13 3.12 13 4.5S14.12 7 15.5 7 18 5.88 18 4.5 16.88 2 15.5 2M11 8V10H5V12H14.95C14.53 13.13 13.5 14.5 12.16 15.67C11.12 14.74 10.35 13.82 9.82 13H7.5C8.08 14.25 9.13 15.62 10.62 16.96L6.55 20.22L5.76 20.84L7 22.41L7.8 21.78L12.17 18.28L16.55 21.78L17.33 22.41L18.58 20.84L17.8 20.22L13.73 16.97C15.34 15.5 16.7 13.85 17.07 12H19V10H13V8H11Z"; +var mdiFuriganaVertical = "M8 5V7H2V9H11.95C11.53 10.13 10.5 11.5 9.16 12.67C8.12 11.74 7.35 10.82 6.82 10H4.5C5.08 11.25 6.13 12.62 7.62 13.96L3.55 17.22L2.76 17.84L4 19.41L4.8 18.78L9.17 15.28L13.55 18.78L14.33 19.41L15.58 17.84L14.8 17.22L10.73 13.97C12.34 12.5 13.7 10.85 14.07 9H16V7H10V5H8M19.5 6C18.12 6 17 7.12 17 8.5S18.12 11 19.5 11 22 9.88 22 8.5 20.88 6 19.5 6M19.47 13C18.09 13 16.97 14.12 16.97 15.5S18.09 18 19.47 18 21.97 16.88 21.97 15.5 20.85 13 19.47 13Z"; +var mdiFuse = "M8,7V17H15V7H8M11.16,16V12.87H9.41L11.91,8V11.14H13.59L11.16,16M16,2V6H7V2A1,1 0 0,1 8,1H15A1,1 0 0,1 16,2M16,18V22A1,1 0 0,1 15,23H8A1,1 0 0,1 7,22V18H16Z"; +var mdiFuseAlert = "M6 7V17H13V7H6M9.16 16V12.87H7.41L9.91 8V11.14H11.59L9.16 16M14 2V6H5V2C5 1.45 5.45 1 6 1H13C13.55 1 14 1.45 14 2M14 18V22C14 22.55 13.55 23 13 23H6C5.45 23 5 22.55 5 22V18H14M19 13H17V7H19V13M19 17H17V15H19V17Z"; +var mdiFuseBlade = "M10,21H8L6,19V16H10V21M18,16H14V21H16L18,19V16M3,3V4A1,1 0 0,0 4,5V14A1,1 0 0,0 5,15H19A1,1 0 0,0 20,14V5H20A1,1 0 0,0 21,4V3H3M11.83,13V9.73H10L12.61,4.66V7.93H14.36L11.83,13Z"; +var mdiFuseOff = "M15 11.8L10.2 7H15V11.8M16 6V2C16 1.45 15.55 1 15 1H8C7.45 1 7 1.45 7 2V3.8L9.2 6H16M2.39 1.73L1.11 3L8 9.89V17H15.11L20.84 22.73L22.11 21.46L2.39 1.73M7 22C7 22.55 7.45 23 8 23H15C15.55 23 16 22.55 16 22V18H7V22Z"; +var mdiGamepad = "M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z"; +var mdiGamepadCircle = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8Z"; +var mdiGamepadCircleDown = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z"; +var mdiGamepadCircleLeft = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3Z"; +var mdiGamepadCircleOutline = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z"; +var mdiGamepadCircleRight = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17Z"; +var mdiGamepadCircleUp = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17Z"; +var mdiGamepadDown = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M12,13.5L9,16.5V22H15V16.5L12,13.5M11,18H13V20H11V18Z"; +var mdiGamepadLeft = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M4,11H6V13H4V11M12,13.5L9,16.5V22H15V16.5L12,13.5Z"; +var mdiGamepadRight = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M18,11H20V13H18V11M12,13.5L9,16.5V22H15V16.5L12,13.5Z"; +var mdiGamepadRound = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8Z"; +var mdiGamepadRoundDown = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M10,16V20H14V16H10Z"; +var mdiGamepadRoundLeft = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M4,10V14H8V10H4Z"; +var mdiGamepadRoundOutline = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M4,10V14H10V20H14V14H20V10H14V4H10V10H4Z"; +var mdiGamepadRoundRight = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M16,10V14H20V10H16Z"; +var mdiGamepadRoundUp = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M10,4V8H14V4H10Z"; +var mdiGamepadSquare = "M21,6H3A2,2 0 0,0 1,8V16A2,2 0 0,0 3,18H21A2,2 0 0,0 23,16V8A2,2 0 0,0 21,6M11,13H8V16H6V13H3V11H6V8H8V11H11M15.5,15A1.5,1.5 0 0,1 14,13.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 17,13.5A1.5,1.5 0 0,1 15.5,15M19.5,12A1.5,1.5 0 0,1 18,10.5A1.5,1.5 0 0,1 19.5,9A1.5,1.5 0 0,1 21,10.5A1.5,1.5 0 0,1 19.5,12Z"; +var mdiGamepadSquareOutline = "M21,6H3A2,2 0 0,0 1,8V16A2,2 0 0,0 3,18H21A2,2 0 0,0 23,16V8A2,2 0 0,0 21,6M21,16H3V8H21M6,15H8V13H10V11H8V9H6V11H4V13H6M14.5,12A1.5,1.5 0 0,1 16,13.5A1.5,1.5 0 0,1 14.5,15A1.5,1.5 0 0,1 13,13.5A1.5,1.5 0 0,1 14.5,12M18.5,9A1.5,1.5 0 0,1 20,10.5A1.5,1.5 0 0,1 18.5,12A1.5,1.5 0 0,1 17,10.5A1.5,1.5 0 0,1 18.5,9Z"; +var mdiGamepadUp = "M9,2V7.5L12,10.5L15,7.5V2H9M11,4H13V6H11V4M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M12,13.5L9,16.5V22H15V16.5L12,13.5Z"; +var mdiGamepadVariant = "M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z"; +var mdiGamepadVariantOutline = "M6,9H8V11H10V13H8V15H6V13H4V11H6V9M18.5,9A1.5,1.5 0 0,1 20,10.5A1.5,1.5 0 0,1 18.5,12A1.5,1.5 0 0,1 17,10.5A1.5,1.5 0 0,1 18.5,9M15.5,12A1.5,1.5 0 0,1 17,13.5A1.5,1.5 0 0,1 15.5,15A1.5,1.5 0 0,1 14,13.5A1.5,1.5 0 0,1 15.5,12M17,5A7,7 0 0,1 24,12A7,7 0 0,1 17,19C15.04,19 13.27,18.2 12,16.9C10.73,18.2 8.96,19 7,19A7,7 0 0,1 0,12A7,7 0 0,1 7,5H17M7,7A5,5 0 0,0 2,12A5,5 0 0,0 7,17C8.64,17 10.09,16.21 11,15H13C13.91,16.21 15.36,17 17,17A5,5 0 0,0 22,12A5,5 0 0,0 17,7H7Z"; +var mdiGamma = "M11.76 19C12.92 19 13.58 18 13.58 16.29C13.58 15.2 13.5 13.88 13.3 12.67L18 5H15.28L12.71 9.82L12.55 9.33C11.83 7.19 10.82 5 8.68 5C8 5 7.45 5.18 7 5.54C6 6.39 6 8 6 8.5H6.91C6.97 8.06 7.21 6.83 8.25 6.83C10 6.83 10.8 10 11.4 12.42C10.5 14.58 10 16.14 10 16.97C10 17.95 10.56 19 11.76 19"; +var mdiGantryCrane = "M21,6H22V4H21V3H18V4H6V3H3V4H2V6H3V20H2V22H7V20H6V6H11V7H11.5V10.62C11,10.79 10.69,11.25 10.69,11.76C10.69,12.2 10.92,12.6 11.3,12.82V14H11.92C12.26,14 12.54,14.27 12.55,14.61C12.55,14.96 12.28,15.24 11.93,15.24C11.71,15.24 11.5,15.12 11.39,14.93C11.22,14.64 10.84,14.54 10.55,14.71C10.26,14.87 10.15,15.25 10.32,15.55C10.65,16.12 11.26,16.47 11.92,16.47C12.94,16.46 13.76,15.62 13.75,14.6C13.74,13.83 13.26,13.14 12.53,12.88V12.82C13.12,12.5 13.34,11.78 13.03,11.2C12.92,11 12.74,10.81 12.53,10.7V7H13V6H18V20H17V22H22V20H21V6M5,15.29V16.71L4,17.71V16.29L5,15.29M4,20V19.24L5,18.24V19.66L4.66,20H4M4,7.29L5,6.29V7.71L4,8.71V7.29M4,10.29L5,9.29V10.71L4,11.71V10.29M4,13.29L5,12.29V13.71L4,14.71V13.24L4,13.29M20,15.29V16.71L19,17.71V16.29L20,15.29M19,20V19.24L20,18.24V19.66L19.66,20H19M19,7.29L20,6.29V7.71L19,8.71V7.29M19,10.29L20,9.29V10.71L19,11.71V10.29M19,13.29L20,12.29V13.71L19,14.71V13.24L19,13.29Z"; +var mdiGarage = "M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z"; +var mdiGarageAlert = "M17,20H15V11H5V20H3V9L10,5L17,9V20M6,12H14V14H6V12M6,15H14V17H6V15M19,15V10H21V15H19M19,19V17H21V19H19Z"; +var mdiGarageAlertVariant = "M20 9V20H18V11H2V20H0V9L10 5L20 9M17 12H3V14H17V12M17 15H3V17H17V15M22 15V10H24V15H22M22 19V17H24V19H22Z"; +var mdiGarageOpen = "M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z"; +var mdiGarageOpenVariant = "M22 9V20H20V11H4V20H2V9L12 5L22 9M19 12H5V14H19V12Z"; +var mdiGarageVariant = "M22 9V20H20V11H4V20H2V9L12 5L22 9M19 12H5V14H19V12M19 18H5V20H19V18M19 15H5V17H19V15Z"; +var mdiGasCylinder = "M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z"; +var mdiGasStation = "M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z"; +var mdiGasStationOff = "M1 4.27L2.28 3L21 21.72L19.73 23L17.71 21C16.56 20.85 15.65 19.94 15.5 18.78L14 17.27V21H4V7.27L1 4.27M18 10C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8C17.45 8 17 8.45 17 9C17 9.55 17.45 10 18 10M12 10V5H6.82L5.06 3.23C5.34 3.08 5.66 3 6 3H12C13.1 3 14 3.89 14 5V12H15C16.1 12 17 12.89 17 14V15.18L11.82 10H12M6 10H6.73L6 9.27V10M19.77 7.23C20.22 7.68 20.5 8.31 20.5 9L20.5 18.67L19 17.18V11.29C18.69 11.42 18.36 11.5 18 11.5C16.62 11.5 15.5 10.38 15.5 9C15.5 7.93 16.17 7.03 17.11 6.67L15 4.56L16.06 3.5L19.78 7.22L19.77 7.23Z"; +var mdiGasStationOffOutline = "M1 4.27L2.28 3L6 6.72L21 21.72L19.73 23L17.72 21C16.56 20.85 15.65 19.94 15.5 18.78L14 17.27V21H4V7.27L1 4.27M19.77 7.23C20.22 7.68 20.5 8.31 20.5 9L20.5 18.67L19 17.18V11.29C18.69 11.42 18.36 11.5 18 11.5C16.62 11.5 15.5 10.38 15.5 9C15.5 7.93 16.17 7.03 17.11 6.67L15 4.56L16.06 3.5L19.78 7.22L19.77 7.23M11.82 10H12V5H6.82L5.06 3.24C5.34 3.09 5.66 3 6 3H12C13.1 3 14 3.9 14 5V12H15C16.1 12 17 12.9 17 14V15.18L11.82 10M6 10H6.73L6 9.27V10M6 12V19H12V15.27L8.73 12H6M18 10C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8C17.45 8 17 8.45 17 9C17 9.55 17.45 10 18 10Z"; +var mdiGasStationOutline = "M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M12,13.5V19H6V12H12V13.5M12,10H6V5H12V10M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10Z"; +var mdiGate = "M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z"; +var mdiGateAnd = "M2,4V20H14A8,8 0 0,0 22,12A8,8 0 0,0 14,4H2M4,6H14A6,6 0 0,1 20,12A6,6 0 0,1 14,18H4V6Z"; +var mdiGateArrowRight = "M15 5V10H13V6H11V10H9V8H7V20H9V18H11V20H12.09A6 6 0 0 1 12 19A6 6 0 0 1 13 15.69V12H15V13.81A6 6 0 0 1 17 13.09V12H19V13.09A6 6 0 0 1 21 13.81V12H22V10H21V5H19V10H17V5H15M9 12H11V16H9V12M19 16V18H15V20H19V22L22 19L19 16Z"; +var mdiGateNand = "M2,4V20H10C13.43,20 16.5,17.84 17.6,14.6C18,14.8 18.5,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.5,9 18.03,9.15 17.6,9.4C16.5,6.16 13.43,4 10,4H2M4,6H10A6,6 0 0,1 16,12A6,6 0 0,1 10,18H4V6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; +var mdiGateNor = "M2,4C5,10 5,14 2,20H5C9.4,20 13,17.7 16.6,13.7C17.15,14.5 18.04,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.04,9 17.15,9.5 16.6,10.3C13,6.3 9.4,4 5,4H2M5,6C8.8,6 12,8.1 15.3,12C12,15.9 8.8,18 5,18C6.5,14 6.5,10 5,6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; +var mdiGateNot = "M2,4V20L16.2,13C16.62,14.19 17.74,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C17.74,9 16.62,9.81 16.2,11L2,4M4,7.3L13.7,12L4,16.7V7.3M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; +var mdiGateOpen = "M7 20V6H5V10H3V8H1V20H3V18H5V20H7M3 16V12H5V16H3M21 8V10H19V6H17V20H19V18H21V20H23V8H21M21 16H19V12H21V16Z"; +var mdiGateOr = "M2,4C5,10 5,14 2,20H8C13,20 19,16 22,12C19,8 13,4 8,4H2M5,6H8C11.5,6 16.3,9 19.3,12C16.3,15 11.5,18 8,18H5C6.4,13.9 6.4,10.1 5,6Z"; +var mdiGateXnor = "M2,4C5,10 5,14 2,20H4C7,14 7,10 4.1,4H2M6,4C9,10 9,14 6,20H9C12.2,20 14.8,16.8 16.7,14C17.28,14.65 18.12,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.12,9 17.28,9.35 16.7,10C14.7,7.2 12.2,4 9,4H6M9,6C12,6 14,10 15.5,12C14,14 12,18 9,18C10.6,14 10.6,10 9,6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; +var mdiGateXor = "M2,4C5,10 5,14 2,20H4C7,14 7,10 4.1,4H2M6,4C9,10 9,14 6,20H9C14,20 18,17 22,12C18,7 14,4 9,4H6M9,6C12.8,6 16,8.1 19.3,12C15.9,15.9 12.8,18 9,18C10.5,14 10.5,10 9,6Z"; +var mdiGatsby = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C8.27,4 5.14,6.55 4.25,10L14,19.75C17.45,18.86 20,15.73 20,12H14.75V13.5H18.2C17.71,15.54 16.24,17.19 14.31,17.94L6.06,9.69C7,7.31 9.3,5.63 12,5.63C14.13,5.63 16,6.67 17.18,8.28L18.41,7.22C16.95,5.26 14.63,4 12,4M4,12A8,8 0 0,0 12,20C12.04,20 12.09,20 4,12Z"; +var mdiGauge = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12C20,14.4 19,16.5 17.3,18C15.9,16.7 14,16 12,16C10,16 8.2,16.7 6.7,18C5,16.5 4,14.4 4,12A8,8 0 0,1 12,4M14,5.89C13.62,5.9 13.26,6.15 13.1,6.54L11.81,9.77L11.71,10C11,10.13 10.41,10.6 10.14,11.26C9.73,12.29 10.23,13.45 11.26,13.86C12.29,14.27 13.45,13.77 13.86,12.74C14.12,12.08 14,11.32 13.57,10.76L13.67,10.5L14.96,7.29L14.97,7.26C15.17,6.75 14.92,6.17 14.41,5.96C14.28,5.91 14.15,5.89 14,5.89M10,6A1,1 0 0,0 9,7A1,1 0 0,0 10,8A1,1 0 0,0 11,7A1,1 0 0,0 10,6M7,9A1,1 0 0,0 6,10A1,1 0 0,0 7,11A1,1 0 0,0 8,10A1,1 0 0,0 7,9M17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9Z"; +var mdiGaugeEmpty = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.1,16.7 10,16 12,16C14,16 15.8,16.7 17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4M14,6A1,1 0 0,1 15,7A1,1 0 0,1 14,8A1,1 0 0,1 13,7A1,1 0 0,1 14,6M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M6.91,8.94C7.04,8.94 7.16,8.97 7.3,9L10.5,10.32L10.77,10.43C11.33,10 12.09,9.88 12.75,10.15C13.77,10.56 14.27,11.73 13.85,12.75C13.44,13.77 12.27,14.27 11.25,13.85C10.59,13.59 10.12,13 10,12.28L9.77,12.18L6.55,10.88L6.53,10.87C6,10.66 5.77,10.08 5.97,9.56C6.13,9.18 6.5,8.93 6.91,8.94V8.94M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9Z"; +var mdiGaugeFull = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12C20,14.4 19,16.5 17.3,18C15.9,16.7 14,16 12,16C10,16 8.2,16.7 6.7,18C5,16.5 4,14.4 4,12A8,8 0 0,1 12,4M10,6A1,1 0 0,0 9,7A1,1 0 0,0 10,8A1,1 0 0,0 11,7A1,1 0 0,0 10,6M14,6A1,1 0 0,0 13,7A1,1 0 0,0 14,8A1,1 0 0,0 15,7A1,1 0 0,0 14,6M17.09,8.94C16.96,8.94 16.84,8.97 16.7,9L13.5,10.32L13.23,10.43C12.67,10 11.91,9.88 11.25,10.15C10.23,10.56 9.73,11.73 10.15,12.75C10.56,13.77 11.73,14.27 12.75,13.85C13.41,13.59 13.88,13 14,12.28L14.23,12.18L17.45,10.88L17.47,10.87C18,10.66 18.23,10.08 18.03,9.56C17.87,9.18 17.5,8.93 17.09,8.94M7,9A1,1 0 0,0 6,10A1,1 0 0,0 7,11A1,1 0 0,0 8,10A1,1 0 0,0 7,9Z"; +var mdiGaugeLow = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.1,16.7 10,16 12,16C14,16 15.8,16.7 17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4M10,5.89C10.38,5.9 10.74,6.15 10.9,6.54L12.19,9.77L12.29,10C13,10.13 13.59,10.6 13.86,11.26C14.27,12.29 13.77,13.45 12.74,13.86C11.71,14.27 10.55,13.77 10.14,12.74C9.88,12.08 10,11.32 10.43,10.76L10.33,10.5L9.04,7.29L9.03,7.26C8.83,6.75 9.08,6.17 9.59,5.96C9.72,5.91 9.85,5.89 10,5.89V5.89M14,6A1,1 0 0,1 15,7A1,1 0 0,1 14,8A1,1 0 0,1 13,7A1,1 0 0,1 14,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9Z"; +var mdiGavel = "M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z"; +var mdiGenderFemale = "M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z"; +var mdiGenderMale = "M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z"; +var mdiGenderMaleFemale = "M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z"; +var mdiGenderMaleFemaleVariant = "M7 3A5 5 0 0 0 9 7A5 5 0 0 0 7 11A5 5 0 0 0 11 15.9V18H9V20H11V22H13V20H15V18H13V15.9A5 5 0 0 0 17 11A5 5 0 0 0 15 7A5 5 0 0 0 17 3H15A3 3 0 0 1 12 6A3 3 0 0 1 9 3M12 8A3 3 0 0 1 15 11A3 3 0 0 1 12 14A3 3 0 0 1 9 11A3 3 0 0 1 12 8Z"; +var mdiGenderNonBinary = "M13 3H11V5.27L9.04 4.13L8.04 5.87L10 7L8.04 8.13L9.04 9.87L11 8.73V12.1C8.72 12.56 7 14.58 7 17C7 19.76 9.24 22 12 22S17 19.76 17 17C17 14.58 15.28 12.56 13 12.1V8.73L14.96 9.87L15.96 8.13L14 7L15.96 5.87L14.96 4.13L13 5.27V3M12 20C10.35 20 9 18.65 9 17S10.35 14 12 14 15 15.35 15 17 13.65 20 12 20Z"; +var mdiGenderTransgender = "M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiGentoo = "M10.28,2C9.93,2 9.57,2.03 9.23,2.1C5.61,2.76 3.06,5.89 2.85,7.96C2.74,8.97 3.29,9.73 3.59,10.06C4.4,10.97 6.03,11.66 7.07,12.23C5.56,13.5 4.87,14.14 4.19,14.86C3.17,15.93 2.45,17.1 2.45,17.95C2.45,18.22 2.4,19.09 2.76,19.77C2.89,20.03 3.27,20.89 4.41,21.53C5.14,21.94 6.17,22.09 7.19,21.95C10.33,21.5 14.54,18.83 17.55,16.35C19.46,14.77 20.86,13.23 21.26,12.5C21.59,11.87 21.63,10.78 21.44,10.09C20.9,8.14 16.53,4.15 12.96,2.55C12.14,2.18 11.2,2 10.28,2M11.34,4.91C11.59,4.91 11.81,4.94 12,5C13.15,5.3 15.08,6.68 14.91,7.94C14.68,9.6 13.23,10.27 11.56,10.03C10.58,9.9 8.63,8.8 8.78,6.89C8.89,5.4 10.3,4.9 11.34,4.91M11.32,6.65C11.05,6.65 10.84,6.71 10.74,6.87C10.27,7.59 10.5,8.09 10.92,8.42C11.07,8.04 12.71,8.45 12.75,8.79C14.17,7.72 12.36,6.66 11.32,6.65Z"; +var mdiGesture = "M4.59,6.89C5.29,6.18 6,5.54 6.3,5.67C6.8,5.87 6.3,6.7 6,7.19C5.75,7.61 3.14,11.08 3.14,13.5C3.14,14.78 3.62,15.84 4.5,16.5C5.23,17.04 6.22,17.21 7.12,16.94C8.19,16.63 9.07,15.54 10.18,14.17C11.39,12.68 13,10.73 14.26,10.73C15.89,10.73 15.91,11.74 16,12.5C12.24,13.16 10.64,16.19 10.64,17.89C10.64,19.59 12.08,21 13.85,21C15.5,21 18.14,19.65 18.54,14.88H21V12.38H18.53C18.38,10.73 17.44,8.18 14.5,8.18C12.25,8.18 10.32,10.09 9.56,11C9,11.75 7.5,13.5 7.27,13.74C7,14.04 6.59,14.58 6.16,14.58C5.71,14.58 5.44,13.75 5.8,12.66C6.15,11.57 7.2,9.8 7.65,9.14C8.43,8 8.95,7.22 8.95,5.86C8.95,3.69 7.31,3 6.44,3C5.12,3 3.97,4 3.72,4.25C3.36,4.61 3.06,4.91 2.84,5.18L4.59,6.89M13.88,18.55C13.57,18.55 13.14,18.29 13.14,17.83C13.14,17.23 13.87,15.63 16,15.07C15.71,17.76 14.58,18.55 13.88,18.55Z"; +var mdiGestureDoubleTap = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5M11,3A6,6 0 0,1 17,9C17,10.7 16.29,12.23 15.16,13.33L14.16,12.88C15.28,11.96 16,10.56 16,9A5,5 0 0,0 11,4A5,5 0 0,0 6,9C6,11.05 7.23,12.81 9,13.58V14.66C6.67,13.83 5,11.61 5,9A6,6 0 0,1 11,3Z"; +var mdiGesturePinch = "M13,9A1,1 0 0,1 14,8A1,1 0 0,1 15,9V13.47L16.21,13.6L21.15,15.8C21.67,16.04 22,16.56 22,17.14V21.5C21.97,22.32 21.32,22.97 20.5,23H14C13.62,23 13.26,22.85 13,22.57L8.1,18.37L8.84,17.6C9.03,17.39 9.3,17.28 9.58,17.28H9.8L13,19V9M14,5C15.42,5 16.74,5.76 17.45,7C18.56,8.9 17.91,11.35 16,12.46V11.23C16.64,10.67 17,9.85 17,9A3,3 0 0,0 14,6A3,3 0 0,0 11,9C11,9.85 11.36,10.67 12,11.23V12.46C10.77,11.75 10,10.43 10,9A4,4 0 0,1 14,5M4,9L7,12H5V15H3V12H1L4,9M4,7L1,4H3V1H5V4H7L4,7M9,14C9.73,14 10.41,14.19 11,14.54V15.76C10.47,15.29 9.77,15 9,15A3,3 0 0,0 6,18C6,19 6.5,19.87 7.22,20.42L9.31,22H9A4,4 0 0,1 5,18A4,4 0 0,1 9,14Z"; +var mdiGestureSpread = "M4,1L7,4H5V7H3V4H1L4,1M4,15L1,12H3V9H5V12H7L4,15M13,9A1,1 0 0,1 14,8A1,1 0 0,1 15,9V13.47L16.21,13.6L21.15,15.8C21.67,16.04 22,16.56 22,17.14V21.5C21.97,22.32 21.32,22.97 20.5,23H14C13.62,23 13.26,22.85 13,22.57L8.1,18.37L8.84,17.6C9.03,17.39 9.3,17.28 9.58,17.28H9.8L13,19V9M14,5C15.42,5 16.74,5.76 17.45,7C18.56,8.9 17.91,11.35 16,12.46V11.23C16.64,10.67 17,9.85 17,9A3,3 0 0,0 14,6A3,3 0 0,0 11,9C11,9.85 11.36,10.67 12,11.23V12.46C10.77,11.75 10,10.43 10,9A4,4 0 0,1 14,5M9,14C9.73,14 10.41,14.19 11,14.54V15.76C10.47,15.29 9.77,15 9,15A3,3 0 0,0 6,18C6,19 6.5,19.87 7.22,20.42L9.31,22H9A4,4 0 0,1 5,18A4,4 0 0,1 9,14Z"; +var mdiGestureSwipe = "M20.11,3.89L22,2V7H17L19.08,4.92C18.55,4.23 17.64,3.66 16.36,3.19C15.08,2.72 13.63,2.5 12,2.5C10.38,2.5 8.92,2.72 7.64,3.19C6.36,3.66 5.45,4.23 4.92,4.92L7,7H2V2L3.89,3.89C4.64,3 5.74,2.31 7.2,1.78C8.65,1.25 10.25,1 12,1C13.75,1 15.35,1.25 16.8,1.78C18.26,2.31 19.36,3 20.11,3.89M19.73,16.27V16.45L19,21.7C18.92,22.08 18.76,22.39 18.5,22.64C18.23,22.89 17.91,23 17.53,23H10.73C10.36,23 10,22.86 9.7,22.55L4.73,17.63L5.53,16.83C5.75,16.61 6,16.5 6.33,16.5H6.56L10,17.25V6.5C10,6.11 10.13,5.76 10.43,5.46C10.73,5.16 11.08,5 11.5,5C11.89,5 12.24,5.16 12.54,5.46C12.84,5.76 13,6.11 13,6.5V12.5H13.78C13.88,12.5 14.05,12.55 14.3,12.61L18.84,14.86C19.44,15.14 19.73,15.61 19.73,16.27Z"; +var mdiGestureSwipeDown = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M1,9L4,12L7,9H5V3H3V9H1Z"; +var mdiGestureSwipeHorizontal = "M6,1L3,4L6,7V5H9V7L12,4L9,1V3H6V1M11,8A1,1 0 0,0 10,9V19L6.8,17.28H6.58C6.3,17.28 6.03,17.39 5.84,17.6L5.1,18.37L10,22.57C10.26,22.85 10.62,23 11,23H17.5A1.5,1.5 0 0,0 19,21.5V17.14C19,16.56 18.68,16.03 18.15,15.79L13.21,13.6L12,13.47V9A1,1 0 0,0 11,8Z"; +var mdiGestureSwipeLeft = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M3,4L6,7V5H12V3H6V1L3,4Z"; +var mdiGestureSwipeRight = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M12,4L9,1V3H3V5H9V7L12,4Z"; +var mdiGestureSwipeUp = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M7,6L4,3L1,6H3V12H5V6H7Z"; +var mdiGestureSwipeVertical = "M4,3L1,6H3V9H1L4,12L7,9H5V6H7L4,3M11,8A1,1 0 0,0 10,9V19L6.8,17.28H6.58C6.3,17.28 6.03,17.39 5.84,17.6L5.1,18.37L10,22.57C10.26,22.85 10.62,23 11,23H17.5A1.5,1.5 0 0,0 19,21.5V17.14C19,16.56 18.68,16.03 18.15,15.79L13.21,13.6L12,13.47V9A1,1 0 0,0 11,8Z"; +var mdiGestureTap = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5Z"; +var mdiGestureTapBox = "M20 2H4C2.89 2 2 2.89 2 4V20C2 21.11 2.89 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.89 21.11 2 20 2M11 4C13.21 4 15 5.79 15 8C15 9.5 14.2 10.77 13 11.46V10.24C13.61 9.69 14 8.89 14 8C14 6.34 12.66 5 11 5S8 6.34 8 8C8 8.89 8.39 9.69 9 10.24V11.46C7.8 10.77 7 9.5 7 8C7 5.79 8.79 4 11 4M18 18.5C17.97 19.32 17.32 19.97 16.5 20H11C10.62 20 10.26 19.85 10 19.57L6 15.37L6.74 14.6C6.93 14.39 7.2 14.28 7.5 14.28H7.7L10 16V8C10 7.45 10.45 7 11 7S12 7.45 12 8V12.47L13.21 12.6L17.15 14.79C17.68 15.03 18 15.56 18 16.14V18.5Z"; +var mdiGestureTapButton = "M13 5C15.21 5 17 6.79 17 9C17 10.5 16.2 11.77 15 12.46V11.24C15.61 10.69 16 9.89 16 9C16 7.34 14.66 6 13 6S10 7.34 10 9C10 9.89 10.39 10.69 11 11.24V12.46C9.8 11.77 9 10.5 9 9C9 6.79 10.79 5 13 5M20 20.5C19.97 21.32 19.32 21.97 18.5 22H13C12.62 22 12.26 21.85 12 21.57L8 17.37L8.74 16.6C8.93 16.39 9.2 16.28 9.5 16.28H9.7L12 18V9C12 8.45 12.45 8 13 8S14 8.45 14 9V13.47L15.21 13.6L19.15 15.79C19.68 16.03 20 16.56 20 17.14V20.5M20 2H4C2.9 2 2 2.9 2 4V12C2 13.11 2.9 14 4 14H8V12L4 12L4 4H20L20 12H18V14H20V13.96L20.04 14C21.13 14 22 13.09 22 12V4C22 2.9 21.11 2 20 2Z"; +var mdiGestureTapHold = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M9,12.44V9A2,2 0 0,1 11,7A2,2 0 0,1 13,9V12.44C14.19,11.75 15,10.47 15,9A4,4 0 0,0 11,5A4,4 0 0,0 7,9C7,10.47 7.81,11.75 9,12.44Z"; +var mdiGestureTwoDoubleTap = "M19,15.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V7A1,1 0 0,1 13,6A1,1 0 0,1 14,7V12L18.15,13.84C18.66,14.07 19,14.58 19,15.14M13,3A4,4 0 0,1 17,7C17,8.5 16.2,9.77 15,10.46V9.24C15.61,8.69 16,7.89 16,7A3,3 0 0,0 13,4C11.65,4 10.5,4.9 10.13,6.13C8.9,6.5 8,7.65 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9C7,7.38 7.97,6 9.35,5.35C10,3.97 11.38,3 13,3M13,1A6,6 0 0,1 19,7C19,9.06 17.96,10.88 16.38,11.96L15.26,11.46C16.89,10.64 18,8.95 18,7A5,5 0 0,0 13,2C11.11,2 9.46,3.05 8.61,4.61C7.05,5.46 6,7.11 6,9C6,11.05 7.23,12.81 9,13.58V14.66C6.67,13.83 5,11.61 5,9C5,6.83 6.15,4.93 7.88,3.88C8.93,2.15 10.83,1 13,1Z"; +var mdiGestureTwoTap = "M19,15.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V7A1,1 0 0,1 13,6A1,1 0 0,1 14,7V12L18.15,13.84C18.66,14.07 19,14.58 19,15.14M15,10.45V9.24L15,9.23C15.23,9.03 15.42,8.79 15.57,8.54C15.84,8.09 16,7.56 16,7A3,3 0 0,0 13,4C12.21,4 11.5,4.31 10.95,4.81L10.81,4.95C10.68,5.09 10.56,5.24 10.46,5.4C10.36,5.56 10.27,5.74 10.2,5.92C10.17,6 10.15,6.06 10.13,6.13C8.9,6.5 8,7.65 8,9C8,9.7 8.24,10.34 8.64,10.85C8.74,11 8.87,11.11 9,11.23V11.24L9,12.46V12.46C7.8,11.77 7,10.5 7,9C7,7.38 7.97,6 9.35,5.35C10,3.97 11.38,3 13,3A4,4 0 0,1 17,7C17,8.5 16.2,9.77 15,10.46V10.45Z"; +var mdiGhost = "M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z"; +var mdiGhostOff = "M2,3.27L3.28,2L22,20.72L20.73,22L17.87,19.13L15,22L12,19L9,22L6,19L3,22V11C3,9.09 3.59,7.33 4.6,5.87L2,3.27M12,2A9,9 0 0,1 21,11V17.18L15.7,11.88C16.46,11.59 17,10.86 17,10A2,2 0 0,0 15,8C14.14,8 13.41,8.54 13.13,9.3L7.2,3.38C8.59,2.5 10.24,2 12,2M7,10A2,2 0 0,0 9,12C9.5,12 9.93,11.83 10.27,11.54L7.46,8.73C7.17,9.07 7,9.5 7,10Z"; +var mdiGhostOffOutline = "M8.29 5.09L6.84 3.64C8.3 2.61 10.08 2 12 2C16.97 2 21 6.03 21 11V17.8L19 15.8V11C19 7.14 15.86 4 12 4C10.63 4 9.36 4.4 8.29 5.09M22.11 21.46L20.84 22.73L17.56 19.45L15 22L12 19L9 22L6 19L3 22V11C3 9.26 3.5 7.63 4.36 6.25L1.11 3L2.39 1.73L6.89 6.23L8.69 8.03H8.69L10.97 10.31V10.31L17.41 16.76L17.42 16.76L21 20.34V20.35L22.11 21.46M16.14 18.03L9.89 11.78C9.62 11.92 9.32 12 9 12C7.9 12 7 11.11 7 10C7 9.68 7.08 9.38 7.22 9.11L5.82 7.71C5.3 8.69 5 9.81 5 11V17.17L6 16.17L7.41 17.59L9 19.17L10.59 17.59L12 16.17L13.41 17.59L15 19.17L16.14 18.03M15 8C13.96 8 13.11 8.8 13 9.82L15.18 12C16.2 11.89 17 11.04 17 10C17 8.9 16.11 8 15 8Z"; +var mdiGhostOutline = "M12 2C7.03 2 3 6.03 3 11V22L6 19L9 22L12 19L15 22L18 19L21 22V11C21 6.03 16.97 2 12 2M19 17.17L18 16.17L16.59 17.59L15 19.17L13.41 17.59L12 16.17L10.59 17.59L9 19.17L7.41 17.59L6 16.17L5 17.17V11C5 7.14 8.14 4 12 4S19 7.14 19 11V17.17M11 10C11 11.11 10.11 12 9 12S7 11.11 7 10 7.9 8 9 8 11 8.9 11 10M17 10C17 11.11 16.11 12 15 12S13 11.11 13 10 13.9 8 15 8 17 8.9 17 10Z"; +var mdiGif = "M11,8H13V16H11V8M7.67,8H4.33C3.53,8 3,8.67 3,9.33V14.67C3,15.33 3.53,16 4.33,16H7.67C8.47,16 9,15.33 9,14.67V12H7V14H5V10H9V9.33C9,8.67 8.47,8 7.67,8M21,10V8H15V16H17V14H19.5V12H17V10H21Z"; +var mdiGift = "M9.06,1.93C7.17,1.92 5.33,3.74 6.17,6H3A2,2 0 0,0 1,8V10A1,1 0 0,0 2,11H11V8H13V11H22A1,1 0 0,0 23,10V8A2,2 0 0,0 21,6H17.83C19,2.73 14.6,0.42 12.57,3.24L12,4L11.43,3.22C10.8,2.33 9.93,1.94 9.06,1.93M9,4C9.89,4 10.34,5.08 9.71,5.71C9.08,6.34 8,5.89 8,5A1,1 0 0,1 9,4M15,4C15.89,4 16.34,5.08 15.71,5.71C15.08,6.34 14,5.89 14,5A1,1 0 0,1 15,4M2,12V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V12H13V20H11V12H2Z"; +var mdiGiftOff = "M1.11 3L4.14 6.04H3C1.9 6.04 1 6.93 1 8.04V10.04C1 10.59 1.45 11.04 2 11.04H9.15L10.15 12.04H2V20.04C2 21.14 2.9 22.04 4 22.04H20C20.05 22.04 20.09 22.03 20.13 22L21.56 23.45L22.83 22.18L2.39 1.73L1.11 3M11 12.89L13 14.89V20.04H11V12.89M22 12.04V18.8L15.24 12.04H22M21 6.04H17.83C19 2.77 14.6 .455 12.57 3.28L12 4.04L11.43 3.26C10.8 2.37 9.93 2 9.06 1.97C8.06 1.96 7.08 2.5 6.5 3.3L8.04 4.84C8.13 4.38 8.5 4.04 9 4.04C9.89 4.04 10.34 5.12 9.71 5.75C9.56 5.89 9.39 6 9.21 6L11.24 8.04H13V9.8L14.24 11.04H22C22.55 11.04 23 10.59 23 10.04V8.04C23 6.93 22.11 6.04 21 6.04M15.71 5.75C15.08 6.38 14 5.93 14 5.04C14 4.5 14.45 4.04 15 4.04C15.89 4.04 16.34 5.12 15.71 5.75Z"; +var mdiGiftOffOutline = "M21 6H17.83C17.94 5.69 18 5.35 18 5C18 3.34 16.66 2 15 2C14 2 13.12 2.5 12.57 3.24V3.23L12 4L11.43 3.23V3.24C10.88 2.5 10 2 9 2C7.97 2 7.06 2.5 6.5 3.32L8.03 4.83C8.12 4.36 8.5 4 9 4C9.55 4 10 4.45 10 5C10 5.5 9.64 5.88 9.17 5.97L13 9.8V8H21V10H13.2L15.2 12H20V16.8L22 18.8V12C22.55 12 23 11.55 23 11V8C23 6.9 22.11 6 21 6M15 6C14.45 6 14 5.55 14 5S14.45 4 15 4 16 4.45 16 5 15.55 6 15 6M1.11 3L4.11 6H3C1.9 6 1 6.9 1 8V11C1 11.55 1.45 12 2 12V20C2 21.11 2.9 22 4 22H20C20.03 22 20.07 22 20.1 22L21.56 23.45L22.83 22.18L2.39 1.73L1.11 3M13 14.89L18.11 20H13V14.89M11 12.89V20H4V12H10.11L11 12.89M8.11 10H3V8H6.11L8.11 10Z"; +var mdiGiftOpen = "M22 10.92L19.26 9.33C21.9 7.08 19.25 2.88 16.08 4.31L15.21 4.68L15.1 3.72C15 2.64 14.44 1.87 13.7 1.42C12.06 .467 9.56 1.12 9.16 3.5L6.41 1.92C5.45 1.36 4.23 1.69 3.68 2.65L2.68 4.38C2.4 4.86 2.57 5.47 3.05 5.75L10.84 10.25L12.34 7.65L14.07 8.65L12.57 11.25L20.36 15.75C20.84 16 21.46 15.86 21.73 15.38L22.73 13.65C23.28 12.69 22.96 11.47 22 10.92M12.37 5C11.5 5.25 10.8 4.32 11.24 3.55C11.5 3.07 12.13 2.91 12.61 3.18C13.38 3.63 13.23 4.79 12.37 5M17.56 8C16.7 8.25 16 7.32 16.44 6.55C16.71 6.07 17.33 5.91 17.8 6.18C18.57 6.63 18.42 7.79 17.56 8M20.87 16.88C21.28 16.88 21.67 16.74 22 16.5V20C22 21.11 21.11 22 20 22H4C2.9 22 2 21.11 2 20V11H10.15L11 11.5V20H13V12.65L19.87 16.61C20.17 16.79 20.5 16.88 20.87 16.88Z"; +var mdiGiftOpenOutline = "M22 10.87L19.26 9.28C19.5 9.07 19.73 8.8 19.9 8.5C20.73 7.07 20.24 5.23 18.8 4.4C17.94 3.9 16.93 3.9 16.08 4.26L16.09 4.25L15.21 4.64L15.1 3.68L15.09 3.69C15 2.78 14.47 1.9 13.61 1.4C12.17 .575 10.34 1.07 9.5 2.5C9.33 2.8 9.22 3.13 9.16 3.45L6.41 1.87C5.45 1.32 4.23 1.64 3.68 2.6L2.18 5.2C1.9 5.68 2.07 6.29 2.55 6.56L4.28 7.56L8.5 10H2V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V14.87L22.73 13.6C23.28 12.64 22.96 11.42 22 10.87M16.44 6.5C16.71 6 17.33 5.86 17.8 6.13C18.28 6.41 18.45 7 18.17 7.5C17.89 8 17.28 8.14 16.8 7.87C16.33 7.59 16.16 7 16.44 6.5M14.07 8.6L21 12.6L20 14.33L13.07 10.33L14.07 8.6M11 20H4V12H11V20M11.34 9.33L4.41 5.33L5.41 3.6L12.34 7.6L11.34 9.33M11.61 4.87C11.13 4.59 10.97 4 11.24 3.5C11.5 3 12.13 2.86 12.61 3.13C13.09 3.41 13.25 4 12.97 4.5C12.7 5 12.09 5.14 11.61 4.87M13 20V12.6L20 16.64V20H13Z"; +var mdiGiftOutline = "M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z"; +var mdiGit = "M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z"; +var mdiGithub = "M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z"; +var mdiGitlab = "M21.94 13.11L20.89 9.89C20.89 9.86 20.88 9.83 20.87 9.8L18.76 3.32C18.65 3 18.33 2.75 17.96 2.75C17.6 2.75 17.28 3 17.17 3.33L15.17 9.5H8.84L6.83 3.33C6.72 3 6.4 2.75 6.04 2.75H6.04C5.67 2.75 5.35 3 5.24 3.33L3.13 9.82C3.13 9.82 3.13 9.83 3.13 9.83L2.06 13.11C1.9 13.61 2.07 14.15 2.5 14.45L11.72 21.16C11.89 21.28 12.11 21.28 12.28 21.15L21.5 14.45C21.93 14.15 22.1 13.61 21.94 13.11M8.15 10.45L10.72 18.36L4.55 10.45M13.28 18.37L15.75 10.78L15.85 10.45H19.46L13.87 17.61M17.97 3.94L19.78 9.5H16.16M14.86 10.45L13.07 15.96L12 19.24L9.14 10.45M6.03 3.94L7.84 9.5H4.23M3.05 13.69C2.96 13.62 2.92 13.5 2.96 13.4L3.75 10.97L9.57 18.42M20.95 13.69L14.44 18.42L14.46 18.39L20.25 10.97L21.04 13.4C21.08 13.5 21.04 13.62 20.95 13.69"; +var mdiGlassCocktail = "M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z"; +var mdiGlassCocktailOff = "M13.33 12.67L7.66 7L6.13 5.47L2.39 1.73L1.11 3L3 4.89V5L11 13V19H6V21H18V19.89L20.84 22.73L22.11 21.46L13.33 12.67M13 19V14.89L17.11 19H13M8.2 5L6.2 3H21V5L14.6 11.4L10.2 7H16.5L18.5 5H8.2Z"; +var mdiGlassFlute = "M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z"; +var mdiGlassMug = "M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z"; +var mdiGlassMugOff = "M20 19.35V19.34L6.66 6L6.07 5.41L2.39 1.73L1.11 3L4.26 6.15C3.5 6.44 3 7.16 3 8V15C3 15.82 3.5 16.5 4.2 16.83L8 18.6V20L7 21V22H20.11L20.84 22.73L22.11 21.46L20 19.35M8 16.39L5 15V8H6.11L8 9.89V16.39M8 4L7 3V2H21V3L20 4V16.8L10.2 7H18V4H10V6.8L8 4.8V4Z"; +var mdiGlassMugVariant = "M9.5 3C7.56 3 5.85 4.24 5.23 6.08C3.36 6.44 2 8.09 2 10C2 12.21 3.79 14 6 14V22H17V20H20C20.55 20 21 19.55 21 19V11C21 10.45 20.55 10 20 10H18V8C18 5.79 16.21 4 14 4H12.32C11.5 3.35 10.53 3 9.5 3M9.5 5C10.29 5 11.03 5.37 11.5 6H14C15.11 6 16 6.9 16 8H12C10 8 9.32 9.13 8.5 10.63C7.68 12.13 6 12 6 12C4.89 12 4 11.11 4 10C4 8.9 4.89 8 6 8H7V7.5C7 6.12 8.12 5 9.5 5M17 12H19V18H17Z"; +var mdiGlassMugVariantOff = "M8.44 5.24L7 3.79C7.71 3.29 8.57 3 9.5 3C10.53 3 11.5 3.35 12.32 4H14C16.21 4 18 5.79 18 8V10H20C20.55 10 21 10.45 21 11V17.8L19 15.8V12H17V13.8L11.26 8.06C11.5 8 11.73 8 12 8H16C16 6.9 15.11 6 14 6H11.5C11.03 5.37 10.29 5 9.5 5C9.12 5 8.76 5.09 8.44 5.24M22.11 21.46L20.84 22.73L18.11 20H17V22H6V14C3.79 14 2 12.21 2 10C2 8.37 3 6.94 4.44 6.33L1.11 3L2.39 1.73L7.19 6.54L9.61 8.96L17 16.34V16.35L18.65 18H18.66L20.5 19.84V19.85L22.11 21.46M8.59 10.5L6.11 8H6C4.89 8 4 8.9 4 10C4 11.11 4.89 12 6 12C6 12 7.68 12.13 8.5 10.63L8.59 10.5Z"; +var mdiGlassPintOutline = "M4 2L6 22H17L19 2H4M6.2 4H16.8L15.2 20H7.8L6.2 4Z"; +var mdiGlassStange = "M8,2H16V22H8V2M10,4V7H14V4H10Z"; +var mdiGlassTulip = "M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z"; +var mdiGlassWine = "M15.5,21.27L14.66,21.18C13.9,21.11 13.25,20.6 13,19.87C12.47,17.91 12.47,15.83 13,13.87C15.32,13.4 17,11.37 17,9C17,7 15,2 15,2H9C9,2 7,7 7,9C7,11.38 8.67,13.42 11,13.9C11.53,15.86 11.53,17.94 11,19.9C10.76,20.62 10.12,21.13 9.37,21.21L8.5,21.3C8.5,21.3 8,21.28 8,22H16C16,21.28 15.5,21.27 15.5,21.27M9.44,7L10.44,4H13.56L14.56,7H9.44Z"; +var mdiGlasses = "M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z"; +var mdiGlobeLight = "M13 8.08V2H11V8.08C7.61 8.57 5 11.47 5 15C5 18.87 8.13 22 12 22S19 18.87 19 15C19 11.47 16.39 8.57 13 8.08M12 20C9.24 20 7 17.76 7 15C7 13.87 7.39 12.84 8.03 12H15.97C16.61 12.84 17 13.87 17 15C17 17.76 14.76 20 12 20Z"; +var mdiGlobeModel = "M17.36,2.64L15.95,4.06C17.26,5.37 18,7.14 18,9A7,7 0 0,1 11,16C9.15,16 7.37,15.26 6.06,13.95L4.64,15.36C6.08,16.8 7.97,17.71 10,17.93V20H6V22H16V20H12V17.94C16.55,17.43 20,13.58 20,9C20,6.62 19.05,4.33 17.36,2.64M11,3.5A5.5,5.5 0 0,0 5.5,9A5.5,5.5 0 0,0 11,14.5A5.5,5.5 0 0,0 16.5,9A5.5,5.5 0 0,0 11,3.5M11,5.5C12.94,5.5 14.5,7.07 14.5,9A3.5,3.5 0 0,1 11,12.5A3.5,3.5 0 0,1 7.5,9A3.5,3.5 0 0,1 11,5.5Z"; +var mdiGmail = "M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; +var mdiGnome = "M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z"; +var mdiGoKart = "M18,10H15.53L14.38,8.28L15.8,7.33L14.7,5.67L10.2,8.67L11.3,10.33L12.73,9.38L13.88,11.12L13,12H10.2L5.83,5.45L4.17,6.55L5.87,9.11C3.04,9.65 1,12.12 1,15V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V15A5,5 0 0,0 18,10M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5Z"; +var mdiGoKartTrack = "M22,5.5A3.5,3.5 0 0,0 18.5,2A3.5,3.5 0 0,0 15,5.5V6A3,3 0 0,1 12,9C10,9 9,6 6,6A4,4 0 0,0 2,10V11H4V10A2,2 0 0,1 6,8C6.86,8 7.42,8.45 8.32,9.24C9.28,10.27 10.6,10.9 12,11A5,5 0 0,0 17,6V5.5A1.5,1.5 0 0,1 18.5,4A1.5,1.5 0 0,1 20,5.5C19.86,6.35 19.58,7.18 19.17,7.94C18.5,9.2 18.11,10.58 18,12C18.09,13.37 18.5,14.71 19.21,15.89C19.6,16.54 19.87,17.25 20,18A2,2 0 0,1 18,20A2,2 0 0,1 16,18A3.75,3.75 0 0,0 12.25,14.25A3.75,3.75 0 0,0 8.5,18V18.5A1.5,1.5 0 0,1 7,20A3,3 0 0,1 4,17V15H6V13H0V15H2V17A5,5 0 0,0 7,22A3.5,3.5 0 0,0 10.5,18.5V18A1.75,1.75 0 0,1 12.25,16.25A1.75,1.75 0 0,1 14,18A4,4 0 0,0 18,22A4,4 0 0,0 22,18C22,16 20,14 20,12C20,10 22,7.5 22,5.5Z"; +var mdiGog = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M10.46,5.54C9.95,5.54 9.54,5.95 9.54,6.46V9.54A0.92,0.92 0 0,0 10.46,10.46H13.54A0.92,0.92 0 0,0 14.46,9.54V6.46C14.46,5.95 14.05,5.54 13.54,5.54H10.46M11.08,6.77H12.92A0.31,0.31 0 0,1 13.23,7.08V8.92A0.31,0.31 0 0,1 12.92,9.23H11.08A0.31,0.31 0 0,1 10.77,8.92V7.08A0.31,0.31 0 0,1 11.08,6.77M4.92,5.54A0.92,0.92 0 0,0 4,6.46V9.54C4,10.05 4.41,10.46 4.92,10.46H7.08V9.23H5.54C5.37,9.23 5.23,9.09 5.23,8.92V7.08C5.23,6.91 5.37,6.77 5.54,6.77H7.38A0.31,0.31 0 0,1 7.69,7.08V10.77A0.31,0.31 0 0,1 7.38,11.08H4V12.31H8C8.5,12.31 8.92,11.89 8.92,11.38V6.46A0.92,0.92 0 0,0 8,5.54H4.92M16,5.54C15.5,5.54 15.08,5.95 15.08,6.46V9.54C15.08,10.05 15.5,10.46 16,10.46H18.15V9.23H16.62C16.45,9.23 16.31,9.09 16.31,8.92V7.08C16.31,6.91 16.45,6.77 16.62,6.77H18.46C18.63,6.77 18.77,6.91 18.77,7.08V10.77C18.77,10.94 18.63,11.08 18.46,11.08H15.08V12.31H19.08C19.59,12.31 20,11.89 20,11.38V6.46C20,5.95 19.59,5.54 19.08,5.54H16M9.85,13.54C9.34,13.54 8.92,13.95 8.92,14.46V17.54C8.92,18.05 9.34,18.46 9.85,18.46H12.92C13.43,18.46 13.85,18.05 13.85,17.54V14.46C13.85,13.95 13.43,13.54 12.92,13.54H9.85M10.46,14.77H12.31C12.5,14.77 12.62,14.91 12.62,15.08V16.92A0.31,0.31 0 0,1 12.31,17.23H10.46C10.29,17.23 10.15,17.09 10.15,16.92V15.08A0.31,0.31 0 0,1 10.46,14.77M4.92,13.54C4.41,13.54 4,13.95 4,14.46V17.54C4,18.05 4.41,18.46 4.92,18.46H8.31V17.23H5.54C5.37,17.23 5.23,17.09 5.23,16.92V15.08C5.23,14.91 5.37,14.77 5.54,14.77H8.31V13.54H4.92M15.38,13.54C14.87,13.54 14.46,13.95 14.46,14.46V18.46H15.69V15.08A0.31,0.31 0 0,1 16,14.77H16.62V18.46H17.85V14.77H18.77V18.46H20V13.54H15.38Z"; +var mdiGold = "M1 22L2.5 17H9.5L11 22H1M13 22L14.5 17H21.5L23 22H13M6 15L7.5 10H14.5L16 15H6M23 6.05L19.14 7.14L18.05 11L16.96 7.14L13.1 6.05L16.96 4.96L18.05 1.1L19.14 4.96L23 6.05Z"; +var mdiGolf = "M19.5,18A1.5,1.5 0 0,1 21,19.5A1.5,1.5 0 0,1 19.5,21A1.5,1.5 0 0,1 18,19.5A1.5,1.5 0 0,1 19.5,18M17,5.92L11,9V18.03C13.84,18.19 16,19 16,20C16,21.1 13.31,22 10,22C6.69,22 4,21.1 4,20C4,19.26 5.21,18.62 7,18.27V20H9V2L17,5.92Z"; +var mdiGolfCart = "M19.89 12.37L18.25 5H19V3H3V7H1V9H3V12.54A6 6 0 0 0 1 17V19H3A3 3 0 0 0 9 19H15A3 3 0 0 0 21 19H23V17A5 5 0 0 0 19.89 12.37M6 20.5A1.5 1.5 0 1 1 7.5 19A1.5 1.5 0 0 1 6 20.5M15.53 12L14.38 10.28L15.8 9.33L14.7 7.67L10.2 10.67L11.3 12.33L12.73 11.38L13.88 13.12L13 14H10.2L5 7V5H16.2L17.75 12M18 20.5A1.5 1.5 0 1 1 19.5 19A1.5 1.5 0 0 1 18 20.5Z"; +var mdiGolfTee = "M7 19V17H17V19H15C14.5 19 14 19.2 13.6 19.6S13 20.5 13 21V22H11V21C11 20.5 10.8 20 10.4 19.6S9.5 19 9 19H7M11 6C11 5.7 11.1 5.5 11.3 5.3S11.7 5 12 5 12.5 5.1 12.7 5.3 13 5.7 13 6 12.9 6.5 12.7 6.7 12.3 7 12 7 11.5 6.9 11.3 6.7 11 6.3 11 6M13 8C13 7.7 13.1 7.5 13.3 7.3S13.7 7 14 7 14.5 7.1 14.7 7.3 15 7.7 15 8 14.9 8.5 14.7 8.7 14.3 9 14 9 13.5 8.9 13.3 8.7 13 8.3 13 8M9 8C9 7.7 9.1 7.5 9.3 7.3S9.7 7 10 7 10.5 7.1 10.7 7.3 11 7.7 11 8 10.9 8.5 10.7 8.7 10.3 9 10 9 9.5 8.9 9.3 8.7 9 8.3 9 8M16.9 4.1C15.5 2.7 13.9 2.1 12 2.1S8.4 2.8 7.1 4.1 5 7.1 5 9 5.7 12.6 7 13.9 10 15.9 11.9 15.9 15.5 15.2 16.8 13.9 18.8 10.9 18.8 9 18.3 5.4 16.9 4.1M15.5 12.5C14.5 13.5 13.3 14 12 14S9.4 13.5 8.5 12.5 7 10.4 7 9 7.5 6.4 8.5 5.5 10.6 4 12 4 14.6 4.5 15.5 5.5 17 7.6 17 9 16.5 11.6 15.5 12.5Z"; +var mdiGondola = "M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z"; +var mdiGoodreads = "M17,12.77C15.96,14.42 14.22,15.5 12.25,15.5C9.07,15.5 6.5,12.7 6.5,9.25C6.5,5.8 9.07,3 12.25,3C14.22,3 15.96,4.08 17,5.73V3H18V15.25C18,20.71 14.54,21 11.5,21C9,21 7.55,19.31 7.13,17H8.14C8.5,18.75 9.54,20 11.5,20C13.72,20 17,20.05 17,15.25V15.25L17,12.77M12.25,4C9.63,4 7.5,6.35 7.5,9.25C7.5,12.15 9.63,14.5 12.25,14.5C14.87,14.5 17,12.15 17,9.25C17,6.35 14.87,4 12.25,4Z"; +var mdiGoogle = "M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z"; +var mdiGoogleAds = "M12.25 1.47C11.55 1.42 10.82 1.58 10.17 1.96C8.41 2.97 7.81 5.21 8.82 6.96L16.16 19.66C17.17 21.42 19.41 22 21.17 21C22.92 20 23.5 17.75 22.5 16L15.18 3.3C14.54 2.2 13.43 1.56 12.25 1.47M6.82 6.76L1.5 16A3.67 3.67 0 0 0 1 17.83A3.67 3.67 0 0 0 4.67 21.5A3.67 3.67 0 0 0 7.84 19.66V19.67L11 14.19C9.65 11.89 8.27 9.6 7.03 7.23C6.95 7.08 6.88 6.92 6.83 6.76ZL16.4 5Z"; +var mdiGoogleAnalytics = "M15.86 4.39V19.39C15.86 21.06 17 22 18.25 22C19.39 22 20.64 21.21 20.64 19.39V4.5C20.64 2.96 19.5 2 18.25 2S15.86 3.06 15.86 4.39M9.61 12V19.39C9.61 21.07 10.77 22 12 22C13.14 22 14.39 21.21 14.39 19.39V12.11C14.39 10.57 13.25 9.61 12 9.61S9.61 10.67 9.61 12M5.75 17.23C7.07 17.23 8.14 18.3 8.14 19.61C8.14 20.93 7.07 22 5.75 22S3.36 20.93 3.36 19.61C3.36 18.3 4.43 17.23 5.75 17.23Z"; +var mdiGoogleAssistant = "M7,2A6,6 0 0,0 1,8A6,6 0 0,0 7,14A6,6 0 0,0 13,8A6,6 0 0,0 7,2M21.5,6A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 21.5,9A1.5,1.5 0 0,0 23,7.5A1.5,1.5 0 0,0 21.5,6M17,8A3,3 0 0,0 14,11A3,3 0 0,0 17,14A3,3 0 0,0 20,11A3,3 0 0,0 17,8M17,15A3.5,3.5 0 0,0 13.5,18.5A3.5,3.5 0 0,0 17,22A3.5,3.5 0 0,0 20.5,18.5A3.5,3.5 0 0,0 17,15Z"; +var mdiGoogleCardboard = "M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z"; +var mdiGoogleChrome = "M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiGoogleCircles = "M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z"; +var mdiGoogleCirclesCommunities = "M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z"; +var mdiGoogleCirclesExtended = "M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z"; +var mdiGoogleCirclesGroup = "M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z"; +var mdiGoogleClassroom = "M23,2H1A1,1 0 0,0 0,3V21A1,1 0 0,0 1,22H23A1,1 0 0,0 24,21V3A1,1 0 0,0 23,2M22,20H20V19H15V20H2V4H22V20M10.29,9.71A1.71,1.71 0 0,1 12,8C12.95,8 13.71,8.77 13.71,9.71C13.71,10.66 12.95,11.43 12,11.43C11.05,11.43 10.29,10.66 10.29,9.71M5.71,11.29C5.71,10.58 6.29,10 7,10A1.29,1.29 0 0,1 8.29,11.29C8.29,12 7.71,12.57 7,12.57C6.29,12.57 5.71,12 5.71,11.29M15.71,11.29A1.29,1.29 0 0,1 17,10A1.29,1.29 0 0,1 18.29,11.29C18.29,12 17.71,12.57 17,12.57C16.29,12.57 15.71,12 15.71,11.29M20,15.14V16H16L14,16H10L8,16H4V15.14C4,14.2 5.55,13.43 7,13.43C7.55,13.43 8.11,13.54 8.6,13.73C9.35,13.04 10.7,12.57 12,12.57C13.3,12.57 14.65,13.04 15.4,13.73C15.89,13.54 16.45,13.43 17,13.43C18.45,13.43 20,14.2 20,15.14Z"; +var mdiGoogleCloud = "M23 14.75C23 18.2 20.2 21 16.75 21H7.25C3.8 21 1 18.2 1 14.75C1 12.61 2.08 10.72 3.71 9.6C4.58 5.82 7.96 3 12 3C16.04 3 19.42 5.82 20.29 9.6C21.93 10.72 23 12.61 23 14.75M16.63 17C17.94 17 19 15.94 19 14.63C19 13.35 18 12.3 16.72 12.25L16.75 11.75C16.75 9.13 14.62 7 12 7C10.58 7 9.3 7.62 8.43 8.61C9.93 8.9 11.23 9.72 12.14 10.86L9.5 13.5C9.08 12.77 8.29 12.25 7.38 12.25C6.06 12.25 5 13.31 5 14.63C5 15.9 6 16.93 7.25 17V17H16.63Z"; +var mdiGoogleController = "M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z"; +var mdiGoogleControllerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z"; +var mdiGoogleDownasaur = "M13 2V3H12V9H11V10H9V11H8V12H7V13H5V12H4V11H3V9H2V15H3V16H4V17H5V18H6V22H8V21H7V20H8V19H9V18H10V19H11V22H13V21H12V17H13V16H14V15H15V12H16V13H17V11H15V9H20V8H17V7H22V3H21V2M14 3H15V4H14Z"; +var mdiGoogleDrive = "M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z"; +var mdiGoogleEarth = "M12,12.14C11.09,10.77 10.14,9.78 9.14,9.19C8.14,8.59 7.27,8.38 6.5,8.55C5.77,8.73 5.14,9.14 4.64,9.8C4.2,10.39 4,11.06 4,11.81V12C4,12.78 4.11,13.58 4.36,14.39C4.45,14.64 4.5,14.64 4.55,14.39C4.67,13.77 4.96,13.31 5.41,13.03C5.87,12.75 6.47,12.76 7.22,13.05C7.97,13.35 8.7,14 9.42,14.95C10.7,16.67 12.2,17.72 13.92,18.09C16.14,18.41 17.81,17.7 18.94,16C19.25,15.39 19.5,14.86 19.64,14.39C19.73,14.08 19.69,14.05 19.5,14.3C19.03,14.92 18.4,15.33 17.6,15.5C16.8,15.7 15.89,15.5 14.86,15C13.83,14.43 12.88,13.5 12,12.14M16.97,8.16C15.41,5.81 13.72,4.5 11.91,4.17C10.47,3.95 8.91,4.45 7.22,5.67C7,5.83 6.9,5.91 6.91,5.93C6.93,5.95 7.06,5.89 7.31,5.77C9.81,4.55 12.22,5.83 14.53,9.61C15.03,10.45 15.55,11.11 16.1,11.58C16.65,12.05 17.16,12.33 17.65,12.42C18.13,12.5 18.57,12.5 18.96,12.38C19.35,12.25 19.7,12.05 20,11.77C20,11.17 19.91,10.5 19.69,9.8C19.19,9.92 18.74,9.88 18.35,9.68C17.96,9.5 17.5,8.97 16.97,8.16M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; +var mdiGoogleFit = "M17,4A5,5 0 0,1 22,9C22,10.38 21.44,11.63 20.54,12.54L12,21.07L3.46,12.54C2.56,11.63 2,10.38 2,9A5,5 0 0,1 7,4C8.38,4 9.63,4.56 10.54,5.46L12,6.93L13.46,5.46C14.37,4.56 15.62,4 17,4M15.59,7.59L9.17,14L12,16.83L18.41,10.41C18.78,10.05 19,9.55 19,9A2,2 0 0,0 17,7C16.45,7 15.95,7.22 15.59,7.59M8.41,7.59C8.05,7.22 7.55,7 7,7A2,2 0 0,0 5,9C5,9.55 5.22,10.05 5.59,10.41L7.05,11.88L9.88,9.05L8.41,7.59Z"; +var mdiGoogleGlass = "M20 2H4C2.9 2 2 2.9 2 4V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M16.75 18H15.25V8.9L6.72 18H4.66L15.45 6.5C15.66 6.26 16 6.19 16.27 6.3C16.56 6.42 16.75 6.69 16.75 7V18Z"; +var mdiGoogleHangouts = "M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z"; +var mdiGoogleHome = "M8.06,7.78C7.5,7.78 7.17,7.73 7.08,7.64L6.66,13.73C7.19,14.05 7.88,14.3 8.72,14.5C9.56,14.71 10.78,14.77 12.38,14.67C13.97,14.58 15.63,14.23 17.34,13.64L16.55,4.22C15.67,5.09 14.38,5.91 12.66,6.66C11.13,7.31 9.81,7.69 8.72,7.78H8.06M7.97,5.34C7.28,5.94 7,6.34 7.13,6.56C7.22,6.78 7.7,6.84 8.58,6.75C9.67,6.66 10.91,6.31 12.28,5.72C13.22,5.31 14.03,4.88 14.72,4.41C15.41,3.94 15.88,3.55 16.13,3.23C16.38,2.92 16.47,2.7 16.41,2.58C16.34,2.42 16.03,2.34 15.47,2.34C14.34,2.34 12.94,2.7 11.25,3.42C9.81,4.05 8.72,4.69 7.97,5.34M17.34,2.2C17.41,2.33 17.44,2.47 17.44,2.63L18.61,17C18.61,18.73 18,20.09 16.83,21.07C15.64,22.05 14.03,22.55 12,22.55C10,22.55 8.4,22.04 7.2,21C6,20 5.39,18.64 5.39,16.92L6.09,6.47C6.09,6.22 6.2,5.94 6.42,5.63C6.64,5.31 6.84,5.06 7.03,4.88L7.36,4.59C8.33,3.78 9.5,3.08 10.88,2.5C11.81,2.08 12.73,1.77 13.62,1.57C14.5,1.37 15.3,1.3 16,1.38C16.71,1.46 17.16,1.73 17.34,2.2Z"; +var mdiGoogleKeep = "M4 2H20C21.11 2 22 2.9 22 4V17.33L17.33 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M17 17V20.25L20.25 17H17M10 19H14V18H15V13C16.21 12.09 17 10.64 17 9C17 6.24 14.76 4 12 4S7 6.24 7 9C7 10.64 7.79 12.09 9 13V18H10V19M14 17H10V15H14V17M12 5C14.21 5 16 6.79 16 9C16 10.5 15.2 11.77 14 12.46V14H10V12.46C8.8 11.77 8 10.5 8 9C8 6.79 9.79 5 12 5Z"; +var mdiGoogleLens = "M6,2H18A4,4 0 0,1 22,6V12H20V6A2,2 0 0,0 18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H12V22H6A4,4 0 0,1 2,18V6A4,4 0 0,1 6,2M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M18,16A2,2 0 0,1 20,18A2,2 0 0,1 18,20A2,2 0 0,1 16,18A2,2 0 0,1 18,16Z"; +var mdiGoogleMaps = "M18.27 6C19.28 8.17 19.05 10.73 17.94 12.81C17 14.5 15.65 15.93 14.5 17.5C14 18.2 13.5 18.95 13.13 19.76C13 20.03 12.91 20.31 12.81 20.59C12.71 20.87 12.62 21.15 12.53 21.43C12.44 21.69 12.33 22 12 22H12C11.61 22 11.5 21.56 11.42 21.26C11.18 20.53 10.94 19.83 10.57 19.16C10.15 18.37 9.62 17.64 9.08 16.93L18.27 6M9.12 8.42L5.82 12.34C6.43 13.63 7.34 14.73 8.21 15.83C8.42 16.08 8.63 16.34 8.83 16.61L13 11.67L12.96 11.68C11.5 12.18 9.88 11.44 9.3 10C9.22 9.83 9.16 9.63 9.12 9.43C9.07 9.06 9.06 8.79 9.12 8.43L9.12 8.42M6.58 4.62L6.57 4.63C4.95 6.68 4.67 9.53 5.64 11.94L9.63 7.2L9.58 7.15L6.58 4.62M14.22 2.36L11 6.17L11.04 6.16C12.38 5.7 13.88 6.28 14.56 7.5C14.71 7.78 14.83 8.08 14.87 8.38C14.93 8.76 14.95 9.03 14.88 9.4L14.88 9.41L18.08 5.61C17.24 4.09 15.87 2.93 14.23 2.37L14.22 2.36M9.89 6.89L13.8 2.24L13.76 2.23C13.18 2.08 12.59 2 12 2C10.03 2 8.17 2.85 6.85 4.31L6.83 4.32L9.89 6.89Z"; +var mdiGoogleMyBusiness = "M22 8.5C22 9.87 20.88 11 19.5 11S17 9.87 17 8.5C17 9.87 15.88 11 14.5 11C13.12 11 12 9.87 12 8.5C12 9.87 10.88 11 9.5 11S7 9.87 7 8.5C7 9.87 5.88 11 4.5 11S2 9.87 2 8.5L3.39 3.08C3.39 3.08 3.68 2 4.7 2H19.3C20.32 2 20.61 3.08 20.61 3.08L22 8.5M21 12.2V20C21 21.1 20.1 22 19 22H5C3.9 22 3 21.1 3 20V12.2C3.46 12.39 3.97 12.5 4.5 12.5C5.45 12.5 6.32 12.17 7 11.62C7.69 12.17 8.56 12.5 9.5 12.5C10.45 12.5 11.32 12.17 12 11.62C12.69 12.17 13.56 12.5 14.5 12.5C15.45 12.5 16.32 12.17 17 11.62C17.68 12.17 18.56 12.5 19.5 12.5C20.03 12.5 20.54 12.39 21 12.2M19 17.33C19 17.13 19 16.92 18.95 16.7L18.92 16.54H15.95V17.71H17.76C17.7 17.93 17.62 18.15 17.45 18.33C17.12 18.66 16.67 18.84 16.19 18.84C15.69 18.84 15.2 18.63 14.84 18.28C14.15 17.57 14.15 16.42 14.86 15.7C15.55 15 16.69 15 17.41 15.67L17.55 15.8L18.39 14.95L18.23 14.81C17.67 14.29 16.93 14 16.15 14H16.14C15.33 14 14.57 14.31 14 14.87C13.41 15.45 13.08 16.21 13.08 17C13.08 17.8 13.39 18.54 13.96 19.09H13.96C14.54 19.66 15.35 20 16.18 20H16.2C17 20 17.71 19.71 18.23 19.2C18.7 18.72 19 18 19 17.33Z"; +var mdiGoogleNearby = "M21.36,10.46L13.54,2.64C12.69,1.79 11.31,1.79 10.46,2.64L2.64,10.46C1.79,11.31 1.79,12.69 2.64,13.54L10.46,21.36C11.31,22.21 12.69,22.21 13.54,21.36L21.36,13.54C22.21,12.69 22.21,11.31 21.36,10.46M12,19L5,12L12,5L19,12L12,19M16.5,12L12,16.5L7.5,12L12,7.5L16.5,12Z"; +var mdiGooglePhotos = "M10,13C10.55,13 11,13.18 11.41,13.57C11.8,13.96 12,14.44 12,15V22C12,22.17 11.91,22.27 11.72,22.27C11.66,22.27 11.58,22.22 11.5,22.13L7,17.67V13H10M12.5,1.88L17,6.33V11H14C13.45,11 13,10.82 12.59,10.43C12.2,10.04 12,9.56 12,9V2C12,1.83 12.09,1.73 12.28,1.73C12.34,1.73 12.42,1.78 12.5,1.88M22,12C22.17,12 22.27,12.09 22.27,12.28C22.27,12.34 22.22,12.42 22.13,12.5L17.67,17H13V14C13,13.45 13.18,13 13.57,12.59C13.96,12.2 14.44,12 15,12H22M6.33,7H11V10C11,10.55 10.82,11 10.43,11.41C10.04,11.8 9.56,12 9,12H2C1.83,12 1.73,11.91 1.73,11.72C1.73,11.66 1.78,11.58 1.88,11.5L6.33,7Z"; +var mdiGooglePlay = "M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z"; +var mdiGooglePlus = "M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z"; +var mdiGooglePodcast = "M17.68,7.22V8.62C17.68,9.3 17.13,9.86 16.43,9.86C15.74,9.86 15.18,9.3 15.18,8.62V7.22A1.25,1.25 0 0,1 16.43,5.97C17.13,5.97 17.68,6.53 17.68,7.22M13.25,8.36V15.63C13.25,16.32 12.69,16.88 12,16.88C11.31,16.88 10.75,16.32 10.75,15.63V8.36C10.75,7.68 11.31,7.11 12,7.11C12.69,7.11 13.25,7.68 13.25,8.36M22,11.3V12.7C22,13.38 21.44,13.94 20.75,13.94C20.06,13.94 19.5,13.38 19.5,12.7V11.3C19.5,10.61 20.06,10.06 20.75,10.06C21.44,10.06 22,10.61 22,11.3M4.5,11.3V12.7C4.5,13.38 3.94,13.94 3.25,13.94C2.55,13.94 2,13.38 2,12.7V11.3C2,10.61 2.55,10.06 3.25,10.06C3.94,10.06 4.5,10.61 4.5,11.3M8.82,15.38V16.77C8.82,17.45 8.26,18 7.57,18C6.88,18 6.32,17.45 6.32,16.77V15.38C6.32,14.68 6.88,14.13 7.57,14.13A1.25,1.25 0 0,1 8.82,15.38M13.25,19.36V20.75A1.25,1.25 0 0,1 12,22A1.25,1.25 0 0,1 10.75,20.75V19.36A1.25,1.25 0 0,1 12,18.11A1.25,1.25 0 0,1 13.25,19.36M13.25,3.25V4.64A1.25,1.25 0 0,1 12,5.89A1.25,1.25 0 0,1 10.75,4.64V3.25C10.75,2.55 11.31,2 12,2A1.25,1.25 0 0,1 13.25,3.25M17.68,12.34V16.77C17.68,17.46 17.13,18 16.43,18C15.74,18 15.18,17.46 15.18,16.77V12.34C15.18,11.64 15.74,11.09 16.43,11.09C17.13,11.09 17.68,11.64 17.68,12.34M8.82,7.22V11.65C8.82,12.35 8.26,12.9 7.57,12.9A1.25,1.25 0 0,1 6.32,11.65V7.22A1.25,1.25 0 0,1 7.57,5.97A1.25,1.25 0 0,1 8.82,7.22Z"; +var mdiGoogleSpreadsheet = "M19,11V9H11V5H9V9H5V11H9V19H11V11H19M19,3C19.5,3 20,3.2 20.39,3.61C20.8,4 21,4.5 21,5V19C21,19.5 20.8,20 20.39,20.39C20,20.8 19.5,21 19,21H5C4.5,21 4,20.8 3.61,20.39C3.2,20 3,19.5 3,19V5C3,4.5 3.2,4 3.61,3.61C4,3.2 4.5,3 5,3H19Z"; +var mdiGoogleStreetView = "M11.95,9.27C13.96,9.27 15.59,7.64 15.59,5.63C15.59,3.63 13.96,2 11.95,2C9.94,2 8.32,3.63 8.32,5.63C8.32,7.64 9.94,9.27 11.95,9.27M9.36,12.97C9.36,12.97 8.27,15.94 7.96,16.5C7.85,16.71 7.87,16.77 7.6,16.77C7.33,16.77 6.91,16.5 6.91,16.5C6.91,16.5 6.71,16.37 6.79,16.14C7.03,15.4 8.12,11.08 8.35,10.25C8.6,9.36 9.28,9.39 9.28,9.39H9.93L12.03,13.04L14.14,9.39H14.92C14.92,9.39 15.23,9.43 15.46,9.7C15.7,9.97 15.75,10.44 15.75,10.44L17.14,15.84C17.14,15.84 17.24,16.22 17.21,16.33C17.17,16.5 17.08,16.5 17.08,16.5C17.08,16.5 16.69,16.62 16.47,16.69C16.07,16.82 16,16.44 16,16.44L14.7,13.04L14.55,22H12.6L12.27,16.89C12.27,16.89 12.21,16.76 12.03,16.76C11.86,16.76 11.8,16.89 11.8,16.89L11.45,22H9.5L9.37,12.97H9.36Z"; +var mdiGoogleTranslate = "M20,5H10.88L10,2H4A2,2 0 0,0 2,4V17A2,2 0 0,0 4,19H11L12,22H20A2,2 0 0,0 22,20V7A2,2 0 0,0 20,5M7.17,14.59A4.09,4.09 0 0,1 3.08,10.5A4.09,4.09 0 0,1 7.17,6.41C8.21,6.41 9.16,6.78 9.91,7.5L10,7.54L8.75,8.72L8.69,8.67C8.4,8.4 7.91,8.08 7.17,8.08C5.86,8.08 4.79,9.17 4.79,10.5C4.79,11.83 5.86,12.92 7.17,12.92C8.54,12.92 9.13,12.05 9.29,11.46H7.08V9.91H11.03L11.04,10C11.08,10.19 11.09,10.38 11.09,10.59C11.09,12.94 9.5,14.59 7.17,14.59M13.2,12.88C13.53,13.5 13.94,14.06 14.39,14.58L13.85,15.11L13.2,12.88M13.97,12.12H13L12.67,11.08H16.66C16.66,11.08 16.32,12.39 15.1,13.82C14.58,13.2 14.21,12.59 13.97,12.12M21,20A1,1 0 0,1 20,21H13L15,19L14.19,16.23L15.11,15.31L17.79,18L18.5,17.27L15.81,14.59C16.71,13.56 17.41,12.34 17.73,11.08H19V10.04H15.36V9H14.32V10.04H12.36L11.18,6H20A1,1 0 0,1 21,7V20Z"; +var mdiGradient = "M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z"; +var mdiGrain = "M10,12A2,2 0 0,0 8,14A2,2 0 0,0 10,16A2,2 0 0,0 12,14A2,2 0 0,0 10,12M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12A2,2 0 0,0 8,10A2,2 0 0,0 6,8M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18A2,2 0 0,0 6,16M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6A2,2 0 0,0 18,8M14,16A2,2 0 0,0 12,18A2,2 0 0,0 14,20A2,2 0 0,0 16,18A2,2 0 0,0 14,16M18,12A2,2 0 0,0 16,14A2,2 0 0,0 18,16A2,2 0 0,0 20,14A2,2 0 0,0 18,12M14,8A2,2 0 0,0 12,10A2,2 0 0,0 14,12A2,2 0 0,0 16,10A2,2 0 0,0 14,8M10,4A2,2 0 0,0 8,6A2,2 0 0,0 10,8A2,2 0 0,0 12,6A2,2 0 0,0 10,4Z"; +var mdiGraph = "M19.5 17C19.37 17 19.24 17 19.11 17.04L17.5 13.79C17.95 13.34 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.62 9.5 15.5 9.5 15.36 9.54L13.73 6.29C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.21 9.79 5.84 10.26 6.29L8.64 9.54C8.5 9.5 8.38 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.05 13.34 6.5 13.79L4.89 17.04C4.76 17 4.63 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.64 14.46L10.27 17.71C9.8 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.79C10.46 13.34 10.75 12.71 10.75 12S10.46 10.66 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7S12.26 7 12.39 6.96L14 10.21C13.55 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.14 14.46L17.77 17.71C17.3 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17Z"; +var mdiGraphOutline = "M19.5 17C19.36 17 19.24 17 19.11 17.04L17.5 13.8C17.95 13.35 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.61 9.5 15.5 9.5 15.35 9.54L13.74 6.3C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.2 9.79 5.84 10.26 6.29L8.65 9.54C8.5 9.5 8.39 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.04 13.34 6.5 13.79L4.89 17.04C4.76 17 4.64 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.63 14.46L10.26 17.71C9.79 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.8C10.45 13.35 10.75 12.71 10.75 12C10.75 11.3 10.46 10.67 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7C12.13 7 12.26 7 12.39 6.96L14 10.21C13.54 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.13 14.46L17.76 17.71C17.29 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17M4.5 20.5C3.95 20.5 3.5 20.05 3.5 19.5S3.95 18.5 4.5 18.5 5.5 18.95 5.5 19.5 5.05 20.5 4.5 20.5M13 19.5C13 20.05 12.55 20.5 12 20.5S11 20.05 11 19.5 11.45 18.5 12 18.5 13 18.95 13 19.5M7.25 12C7.25 11.45 7.7 11 8.25 11S9.25 11.45 9.25 12 8.8 13 8.25 13 7.25 12.55 7.25 12M11 4.5C11 3.95 11.45 3.5 12 3.5S13 3.95 13 4.5 12.55 5.5 12 5.5 11 5.05 11 4.5M14.75 12C14.75 11.45 15.2 11 15.75 11S16.75 11.45 16.75 12 16.3 13 15.75 13 14.75 12.55 14.75 12M19.5 20.5C18.95 20.5 18.5 20.05 18.5 19.5S18.95 18.5 19.5 18.5 20.5 18.95 20.5 19.5 20.05 20.5 19.5 20.5Z"; +var mdiGraphql = "M12,5.37L11.56,5.31L6,14.9C6.24,15.11 6.4,15.38 6.47,15.68H17.53C17.6,15.38 17.76,15.11 18,14.9L12.44,5.31L12,5.37M6.6,16.53L10.88,19.06C11.17,18.79 11.57,18.63 12,18.63C12.43,18.63 12.83,18.79 13.12,19.06L17.4,16.53H6.6M12,22A1.68,1.68 0 0,1 10.32,20.32L10.41,19.76L6.11,17.21C5.8,17.57 5.35,17.79 4.84,17.79A1.68,1.68 0 0,1 3.16,16.11C3.16,15.32 3.69,14.66 4.42,14.47V9.36C3.59,9.25 2.95,8.54 2.95,7.68A1.68,1.68 0 0,1 4.63,6C5.18,6 5.66,6.26 5.97,6.66L10.38,4.13L10.32,3.68C10.32,2.75 11.07,2 12,2C12.93,2 13.68,2.75 13.68,3.68L13.62,4.13L18.03,6.66C18.34,6.26 18.82,6 19.37,6A1.68,1.68 0 0,1 21.05,7.68C21.05,8.54 20.41,9.25 19.58,9.36V14.47C20.31,14.66 20.84,15.32 20.84,16.11A1.68,1.68 0 0,1 19.16,17.79C18.65,17.79 18.2,17.57 17.89,17.21L13.59,19.76L13.68,20.32A1.68,1.68 0 0,1 12,22M10.8,4.86L6.3,7.44L6.32,7.68C6.32,8.39 5.88,9 5.26,9.25L5.29,14.5L10.8,4.86M13.2,4.86L18.71,14.5L18.74,9.25C18.12,9 17.68,8.39 17.68,7.68L17.7,7.44L13.2,4.86Z"; +var mdiGrass = "M12 20H2V18H7.75C7 15.19 4.81 13 2 12.26C2.64 12.1 3.31 12 4 12C8.42 12 12 15.58 12 20M22 12.26C21.36 12.1 20.69 12 20 12C17.07 12 14.5 13.58 13.12 15.93C13.41 16.59 13.65 17.28 13.79 18C13.92 18.65 14 19.32 14 20H22V18H16.24C17 15.19 19.19 13 22 12.26M15.64 11C16.42 8.93 17.87 7.18 19.73 6C15.44 6.16 12 9.67 12 14V14C12.95 12.75 14.2 11.72 15.64 11M11.42 8.85C10.58 6.66 8.88 4.89 6.7 4C8.14 5.86 9 8.18 9 10.71C9 10.92 8.97 11.12 8.96 11.32C9.39 11.56 9.79 11.84 10.18 12.14C10.39 10.96 10.83 9.85 11.42 8.85Z"; +var mdiGraveStone = "M10,2H14C17.31,2 19,4.69 19,8V18.66C16.88,17.63 15.07,17 12,17C8.93,17 7.12,17.63 5,18.66V8C5,4.69 6.69,2 10,2M8,8V9.5H16V8H8M9,12V13.5H15V12H9M3,22V21.31C5.66,19.62 13.23,15.84 21,21.25V22H3Z"; +var mdiGreasePencil = "M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7"; +var mdiGreaterThan = "M5.5,4.14L4.5,5.86L15,12L4.5,18.14L5.5,19.86L19,12L5.5,4.14Z"; +var mdiGreaterThanOrEqual = "M6.5,2.27L20,10.14L6.5,18L5.5,16.27L16.03,10.14L5.5,4L6.5,2.27M20,20V22H5V20H20Z"; +var mdiGrid = "M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z"; +var mdiGridLarge = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2M4,4V11H11V4H4M4,20H11V13H4V20M20,20V13H13V20H20M20,4H13V11H20V4Z"; +var mdiGridOff = "M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z"; +var mdiGrill = "M8.06,2C7.88,3.17 8.17,4.16 8.95,4.97C9.45,5.47 9.61,6.14 9.42,7H10.41C10.53,6.45 10.55,6 10.45,5.55C10.36,5.13 10.05,4.63 9.5,4.03C9.05,3.47 8.89,2.8 9.05,2H8.06M10.55,2C10.36,3.17 10.66,4.16 11.44,4.97C11.94,5.47 12.09,6.14 11.91,7H12.89C13,6.45 13.03,6 12.94,5.55C12.84,5.13 12.53,4.63 12,4.03C11.53,3.47 11.38,2.8 11.53,2H10.55M13.08,2C12.89,3.17 13.19,4.16 13.97,4.97C14.47,5.47 14.61,6.14 14.39,7H15.42C15.55,6.45 15.56,6 15.47,5.55C15.38,5.13 15.06,4.63 14.53,4.03C14.06,3.47 13.91,2.8 14.06,2H13.08M5,8C5,9.42 5.39,10.7 6.14,11.84C6.87,12.96 7.91,13.85 9.14,14.39L5.16,20.44C5.06,20.56 5,20.75 5,21C5,21.41 5.16,21.69 5.44,21.84C5.56,21.94 5.75,22 6,22C6.41,22 6.69,21.84 6.84,21.56L7.83,19.97H14.2C14.41,20.55 14.79,21.05 15.28,21.42C15.78,21.8 16.36,22 17,22C17.83,22 18.53,21.69 19.13,21.09C19.72,20.5 20,19.8 20,19C20,18.17 19.72,17.47 19.13,16.88C18.53,16.28 17.83,16 17,16C16.36,16 15.78,16.17 15.28,16.55C14.78,16.92 14.42,17.41 14.2,18H9.14L11.11,14.95C11.27,15 11.56,15 12,15C12.44,15 12.73,15 12.89,14.95L13.88,16.5C14.29,15.96 14.84,15.54 15.47,15.28L14.91,14.39C16.03,13.89 17,13 17.79,11.77C18.59,10.5 19,9.27 19,8H5M17,18C17.3,18 17.53,18.09 17.72,18.28C17.91,18.47 18,18.72 18,19C18,19.27 17.91,19.5 17.72,19.71C17.54,19.91 17.28,20 17,20C16.74,20 16.5,19.91 16.29,19.71C16.09,19.5 16,19.26 16,19C16,18.7 16.09,18.47 16.29,18.28C16.5,18.09 16.73,18 17,18Z"; +var mdiGrillOutline = "M17 22A3 3 0 1 0 14.18 18H9.14L11.13 14.94A6.36 6.36 0 0 0 12.87 14.94L13.89 16.5C14.31 16 14.85 15.56 15.5 15.3L14.89 14.37A7 7 0 0 0 19 8H5A7 7 0 0 0 9.12 14.37L5.17 20.45A1 1 0 0 0 6.84 21.54L7.84 20H14.18A3 3 0 0 0 17 22M17 18A1 1 0 0 1 18 19C18 19.55 17.55 20 17 20S16 19.55 16 19A1 1 0 0 1 17 18M7.42 10H16.58A5 5 0 0 1 7.42 10M9.41 7H10.41C10.56 5.85 10.64 5.36 9.5 4.04C9.1 3.54 8.84 3.27 9.06 2H8.07A3.14 3.14 0 0 0 8.96 4.96C9.18 5.2 9.75 5.63 9.41 7M11.89 7H12.89C13.04 5.85 13.12 5.36 12 4.04C11.58 3.54 11.32 3.26 11.54 2H10.55A3.14 3.14 0 0 0 11.44 4.96C11.67 5.2 12.24 5.63 11.89 7M14.41 7H15.41C15.56 5.85 15.64 5.36 14.5 4.04C14.1 3.54 13.84 3.27 14.06 2H13.07A3.14 3.14 0 0 0 13.96 4.96C14.18 5.2 14.75 5.63 14.41 7Z"; +var mdiGroup = "M1,1V5H2V19H1V23H5V22H19V23H23V19H22V5H23V1H19V2H5V1M5,4H19V5H20V19H19V20H5V19H4V5H5M6,6V14H9V18H18V9H14V6M8,8H12V12H8M14,11H16V16H11V14H14"; +var mdiGuitarAcoustic = "M19.59,3H22V5H20.41L16.17,9.24C15.8,8.68 15.32,8.2 14.76,7.83L19.59,3M12,8A4,4 0 0,1 16,12C16,13.82 14.77,15.42 13,15.87V16A5,5 0 0,1 8,21A5,5 0 0,1 3,16A5,5 0 0,1 8,11H8.13C8.58,9.24 10.17,8 12,8M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.94,14.24L6.23,14.94L9.06,17.77L9.77,17.06L6.94,14.24Z"; +var mdiGuitarElectric = "M19.59,3H22V5H20.41L15.12,10.29L13.71,8.9L19.59,3M12,9C12.26,9 12.5,9.1 12.71,9.3L14.71,11.3C14.89,11.5 15,11.73 15,12L14.9,12.4L10.9,20.4C10.71,20.75 10.36,20.93 10,20.93C9.65,20.93 9.29,20.75 9.11,20.4L7.25,16.7L3.55,14.9C3.18,14.7 3,14.35 3,14C3,13.65 3.18,13.3 3.55,13.1L11.55,9.1C11.69,9 11.84,9 12,9M9.35,11.82L8.65,12.5L11.5,15.35L12.18,14.65L9.35,11.82M7.94,13.23L7.23,13.94L10.06,16.77L10.77,16.06L7.94,13.23Z"; +var mdiGuitarPick = "M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z"; +var mdiGuitarPickOutline = "M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z"; +var mdiGuyFawkesMask = "M21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13L3.03,4.43C5.68,2.88 8.76,2 12.05,2C15.3,2 18.36,2.87 21,4.38V13M13,19.93C16.39,19.44 19,16.5 19,13V5.59C16.9,4.57 14.54,4 12.05,4C9.5,4 7.08,4.6 4.94,5.66L5,13C5,16.5 7.63,19.44 11,19.93V18H13V19.93M11,16H8L6,13L9,14H10L11,13H13L14,14H15L18,13L16,16H13L12,15L11,16M6,9.03C6.64,8.4 7.5,8.05 8.5,8.05C9.45,8.05 10.34,8.4 11,9.03C10.34,9.65 9.45,10 8.5,10C7.5,10 6.64,9.65 6,9.03M13,9.03C13.64,8.4 14.5,8.05 15.5,8.05C16.45,8.05 17.34,8.4 18,9.03C17.34,9.65 16.45,10 15.5,10C14.5,10 13.64,9.65 13,9.03Z"; +var mdiHail = "M4,16H7V22H4V16M19,2.39C18.92,3.86 18.55,5.13 17.86,6.21C17.17,7.29 16.22,8 15,8.39V22H13V16H11V22H9V10.08C8.72,10.17 8.5,10.28 8.39,10.41C7.45,11.16 7,12.19 7,13.5V14H5V13.5C5,11.53 5.72,9.94 7.13,8.72C8.53,7.56 10.16,7 12,7C13.41,7 14.56,6.64 15.47,5.95C16.5,5.11 17,3.95 17,2.5V2H19V2.39M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2Z"; +var mdiHairDryer = "M22 9A4.32 4.32 0 0 1 19.78 8.45A3.4 3.4 0 0 0 18 8V7A4.32 4.32 0 0 1 20.22 7.55A3.4 3.4 0 0 0 22 8M22 6A3.4 3.4 0 0 1 20.22 5.55A4.32 4.32 0 0 0 18 5V6A3.4 3.4 0 0 1 19.78 6.45A4.32 4.32 0 0 0 22 7M22 10A3.4 3.4 0 0 1 20.22 9.55A4.32 4.32 0 0 0 18 9V10A3.4 3.4 0 0 1 19.78 10.45A4.32 4.32 0 0 0 22 11M10 12.73A70.39 70.39 0 0 0 17 11V4S10.5 2 7.5 2A5.5 5.5 0 0 0 6.12 12.82L7 19H8A3 3 0 0 0 9.46 21.33A3.15 3.15 0 0 1 11 24H12A4.12 4.12 0 0 0 10.09 20.55C9.39 20 9 19.63 9 19H10M7.5 10A2.5 2.5 0 1 1 10 7.5A2.5 2.5 0 0 1 7.5 10Z"; +var mdiHairDryerOutline = "M10 12.73A70.39 70.39 0 0 0 17 11V4S10.5 2 7.5 2A5.5 5.5 0 0 0 6.12 12.82L7 19H8A3 3 0 0 0 9.46 21.33A3.15 3.15 0 0 1 11 24H12A4.12 4.12 0 0 0 10.09 20.55C9.39 20 9 19.63 9 19H10M4 7.5A3.5 3.5 0 0 1 7.5 4A37.08 37.08 0 0 1 15 5.5V9.5A37.08 37.08 0 0 1 7.5 11A3.5 3.5 0 0 1 4 7.5M22 9A4.32 4.32 0 0 1 19.78 8.45A3.4 3.4 0 0 0 18 8V7A4.32 4.32 0 0 1 20.22 7.55A3.4 3.4 0 0 0 22 8M22 6A3.4 3.4 0 0 1 20.22 5.55A4.32 4.32 0 0 0 18 5V6A3.4 3.4 0 0 1 19.78 6.45A4.32 4.32 0 0 0 22 7M22 10A3.4 3.4 0 0 1 20.22 9.55A4.32 4.32 0 0 0 18 9V10A3.4 3.4 0 0 1 19.78 10.45A4.32 4.32 0 0 0 22 11M9 7.5A1.5 1.5 0 1 1 7.5 6A1.5 1.5 0 0 1 9 7.5Z"; +var mdiHalloween = "M6.5,6C7.47,6 8.37,6.5 9.11,7.38C9.66,6.79 10.31,6.36 11,6.15V4A2,2 0 0,1 13,2H15V4H13V6.15C13.69,6.36 14.34,6.79 14.89,7.38C15.63,6.5 16.53,6 17.5,6C20,6 22,9.36 22,13.5C22,17.64 20,21 17.5,21C16.53,21 15.63,20.5 14.89,19.62C14.08,20.5 13.08,21 12,21C10.92,21 9.92,20.5 9.11,19.62C8.37,20.5 7.47,21 6.5,21C4,21 2,17.64 2,13.5C2,9.36 4,6 6.5,6M9,10L7.75,12.25H10.25L9,10M15,10L13.75,12.25H16.25L15,10M8,17H10L11,16L12,17H14L15,16L16,17L17.5,14L13.92,14.62L13,16L12,15H10L9,16L8,15L6,14L8,17Z"; +var mdiHamburger = "M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z"; +var mdiHammer = "M2 19.63L13.43 8.2L12.72 7.5L14.14 6.07L12 3.89C13.2 2.7 15.09 2.7 16.27 3.89L19.87 7.5L18.45 8.91H21.29L22 9.62L18.45 13.21L17.74 12.5V9.62L16.27 11.04L15.56 10.33L4.13 21.76L2 19.63Z"; +var mdiHammerScrewdriver = "M16.06 13.09L21.69 18.68L18.37 21.96L12.78 16.37V15.45L15.14 13.09H16.06M16.97 10.56L16 9.6L11.21 14.4V16.37L5.58 22L2.3 18.68L7.89 13.09H9.86L10.64 12.31L6.8 8.46H5.5L2.69 5.62L5.31 3L8.11 5.8V7.11L12 10.95L14.66 8.29L13.7 7.28L15 5.97H12.34L11.69 5.32L15 2L15.66 2.66V5.32L16.97 4L20.25 7.28C21.34 8.38 21.34 10.17 20.25 11.26L18.28 9.25L16.97 10.56Z"; +var mdiHammerWrench = "M13.78 15.3L19.78 21.3L21.89 19.14L15.89 13.14L13.78 15.3M17.5 10.1C17.11 10.1 16.69 10.05 16.36 9.91L4.97 21.25L2.86 19.14L10.27 11.74L8.5 9.96L7.78 10.66L6.33 9.25V12.11L5.63 12.81L2.11 9.25L2.81 8.55H5.62L4.22 7.14L7.78 3.58C8.95 2.41 10.83 2.41 12 3.58L9.89 5.74L11.3 7.14L10.59 7.85L12.38 9.63L14.2 7.75C14.06 7.42 14 7 14 6.63C14 4.66 15.56 3.11 17.5 3.11C18.09 3.11 18.61 3.25 19.08 3.53L16.41 6.2L17.91 7.7L20.58 5.03C20.86 5.5 21 6 21 6.63C21 8.55 19.45 10.1 17.5 10.1Z"; +var mdiHand = "M6.58,19H14.58V22H6.58V19M19.74,11.6C19.55,11.4 19.29,11.28 19,11.28L18.78,11.31L15.58,13V11.83L16.09,2.9C16.12,2.35 15.7,1.87 15.15,1.84C14.6,1.81 14.12,2.23 14.09,2.78L13.82,7.47H13.58L12.54,7.58V2A1,1 0 0,0 11.54,1C11,1 10.54,1.45 10.54,2V8.41L9.72,8.78L9.03,3.32C8.96,2.77 8.46,2.38 7.91,2.45C7.36,2.5 6.97,3 7.04,3.57L7.81,9.63L7.43,9.8C7.3,9.85 7.18,9.93 7.07,10L5.97,6.11C5.81,5.54 5.25,5.2 4.71,5.34C4.18,5.5 3.88,6.08 4.04,6.65L6.61,15.77C6.61,15.8 6.63,15.84 6.64,15.87L6.67,16H6.68C6.9,16.57 7.47,17 8.08,17H14.58C14.97,17 15.32,16.84 15.58,16.57L20.5,12.37L19.74,11.6Z"; +var mdiHandHeart = "M20 17Q20.86 17 21.45 17.6T22.03 19L14 22L7 20V11H8.95L16.22 13.69Q17 14 17 14.81 17 15.28 16.66 15.63T15.8 16H13L11.25 15.33L10.92 16.27L13 17H20M16 3.23Q17.06 2 18.7 2 20.06 2 21 3T22 5.3Q22 6.33 21 7.76T19.03 10.15 16 13Q13.92 11.11 12.94 10.15T10.97 7.76 10 5.3Q10 3.94 10.97 3T13.31 2Q14.91 2 16 3.23M.984 11H5V22H.984V11Z"; +var mdiHandHeartOutline = "M16 3.23C16.71 2.41 17.61 2 18.7 2C19.61 2 20.37 2.33 21 3C21.63 3.67 21.96 4.43 22 5.3C22 6 21.67 6.81 21 7.76S19.68 9.5 19.03 10.15C18.38 10.79 17.37 11.74 16 13C14.61 11.74 13.59 10.79 12.94 10.15S11.63 8.71 10.97 7.76C10.31 6.81 10 6 10 5.3C10 4.39 10.32 3.63 10.97 3C11.62 2.37 12.4 2.04 13.31 2C14.38 2 15.27 2.41 16 3.23M22 19V20L14 22.5L7 20.56V22H1V11H8.97L15.13 13.3C16.25 13.72 17 14.8 17 16H19C20.66 16 22 17.34 22 19M5 20V13H3V20H5M19.9 18.57C19.74 18.24 19.39 18 19 18H13.65C13.11 18 12.58 17.92 12.07 17.75L9.69 16.96L10.32 15.06L12.7 15.85C13 15.95 15 16 15 16C15 15.63 14.77 15.3 14.43 15.17L8.61 13H7V18.5L13.97 20.41L19.9 18.57Z"; +var mdiHandLeft = "M3,6.58V18.67C3,20.5 4.5,22 6.33,22H12.42C13.32,22 14.17,21.64 14.79,21L21.33,14.36C21.33,14.36 20.28,13.33 20.25,13.32C20.07,13.16 19.84,13.07 19.59,13.07C19.41,13.07 19.24,13.12 19.09,13.21C19.06,13.22 15.5,15.26 15.5,15.26V5.33A1.25,1.25 0 0,0 14.25,4.08A1.25,1.25 0 0,0 13,5.33V11.17H12.17V3.25A1.25,1.25 0 0,0 10.92,2A1.25,1.25 0 0,0 9.67,3.25V11.17H8.83V4.08A1.25,1.25 0 0,0 7.58,2.83A1.25,1.25 0 0,0 6.33,4.08V11.17H5.5V6.58A1.25,1.25 0 0,0 4.25,5.33A1.25,1.25 0 0,0 3,6.58Z"; +var mdiHandOkay = "M13.3,19.26L18.96,13.61L21.08,15.73L15.42,21.38L13.3,19.26M16.5,11.13L13.4,8.05C13.27,7.92 13.13,7.83 13,7.76L11.88,3.47C11.74,2.93 11.2,2.61 10.66,2.75C10.13,2.88 9.81,3.43 9.94,3.96L11,8.03V8.03L8.67,3.19C8.44,2.69 7.84,2.5 7.34,2.71C6.84,2.95 6.63,3.55 6.87,4.05L8.56,7.59L5.19,4.25C4.8,3.86 4.16,3.86 3.77,4.25C3.38,4.65 3.39,5.28 3.78,5.67L7.5,9.37L6.8,9.64L5.72,10.07L3.81,11.39C3.81,11.39 3,12.44 2.93,12.89C2.85,13.34 3.72,15.6 3.72,15.6H3.73C3.89,15.94 4.23,16.18 4.63,16.18A1,1 0 0,0 5.63,15.18C5.63,15.08 5.6,15 5.57,14.91L5.59,14.9L5,13.17L6.23,12.19C6.7,12.21 7.71,12.29 8.2,12.32C10.93,14.77 8.35,15.73 8.35,15.73L4.89,16.79L4.72,16.93C4.5,17.13 4.41,17.4 4.42,17.68L4.44,18.75L10.87,18.25C11.25,18.26 11.61,18.12 11.89,17.85L16.5,13.25C17.03,12.71 17.05,11.7 16.5,11.13Z"; +var mdiHandPeace = "M7,19H15V22H7V19M16.15,12V12L12.97,10.34C12.82,10.34 12.69,10.4 12.6,10.5L12.3,10.81L12.89,13.23L11.91,13.47L10.72,8.5L9.25,9.18L10.29,13.47L9.32,13.7L8.32,9.59L7.85,9.8C7.35,10 7,10.53 7,11.14V15.5C7,16.3 7.73,17 8.5,17H15C15.39,17 15.74,16.84 16,16.57L16.5,16.16C16.5,16.16 17,15.78 17,15.36V13.7C17,13.7 17,12.56 16.15,12M16.94,1C16.4,0.91 15.87,1.25 15.76,1.8L14.69,7.97C14.47,7.94 14.38,7.86 14.08,7.83L13.65,7.88L12.41,1.8C12.3,1.26 11.78,0.91 11.24,1C10.69,1.13 10.34,1.66 10.45,2.2L11.65,8.11V8.11L12,9.67C12.28,9.47 12.61,9.34 12.97,9.34H13.31L16.31,10.95L17.72,2.2C17.83,1.66 17.5,1.13 16.94,1Z"; +var mdiHandPeaceVariant = "M7,19H15V22H7V19M16.94,1C16.4,0.91 15.87,1.25 15.76,1.8L14.75,7.57C14.53,7.54 14.29,7.5 14,7.47L13.57,7.5L12.41,1.8C12.31,1.26 11.78,0.91 11.24,1C10.7,1.13 10.35,1.66 10.45,2.2L11.65,8.11L7.85,9.8C7.35,10 7,10.53 7,11.14V15.5C7,16.3 7.73,17 8.5,17H15C15.39,17 15.74,16.84 16,16.57L16.5,16.16C16.5,16.16 17,15.78 17,15.36V13C17,13 17,11.86 16.13,11.3L17.71,2.2C17.83,1.66 17.5,1.13 16.94,1Z"; +var mdiHandPointingDown = "M9.9,21V11L6.7,12.69L6.5,12.72C6.19,12.72 5.93,12.6 5.74,12.4L5,11.63L9.9,7.43C10.16,7.16 10.5,7 10.9,7H17.4C18.17,7 18.9,7.7 18.9,8.5V12.86C18.9,13.47 18.55,14 18.05,14.2L13.11,16.4L11.9,16.53V21A1,1 0 0,1 10.9,22A1,1 0 0,1 9.9,21M18.9,5H10.9V2H18.9V5Z"; +var mdiHandPointingLeft = "M3,9H13L11.31,5.8L11.28,5.58C11.28,5.29 11.4,5.03 11.6,4.84L12.37,4.1L16.57,9C16.84,9.26 17,9.61 17,10V16.5C17,17.27 16.3,18 15.5,18H11.14C10.53,18 10,17.65 9.8,17.15L7.6,12.21L7.47,11H3A1,1 0 0,1 2,10A1,1 0 0,1 3,9M19,18V10H22V18H19Z"; +var mdiHandPointingRight = "M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z"; +var mdiHandPointingUp = "M14,3V13L17.2,11.31L17.42,11.28C17.71,11.28 17.97,11.4 18.16,11.6L18.9,12.37L14,16.57C13.74,16.84 13.39,17 13,17H6.5C5.73,17 5,16.3 5,15.5V11.14C5,10.53 5.35,10 5.85,9.8L10.79,7.6L12,7.47V3A1,1 0 0,1 13,2A1,1 0 0,1 14,3M5,19H13V22H5V19Z"; +var mdiHandRight = "M21,6.58V18.67A3.33,3.33 0 0,1 17.67,22H11.58C10.68,22 9.83,21.64 9.21,21L2.67,14.36C2.67,14.36 3.72,13.33 3.75,13.32C3.93,13.16 4.16,13.07 4.41,13.07C4.59,13.07 4.76,13.12 4.91,13.21C4.94,13.22 8.5,15.26 8.5,15.26V5.33A1.25,1.25 0 0,1 9.75,4.08A1.25,1.25 0 0,1 11,5.33V11.17H11.83V3.25A1.25,1.25 0 0,1 13.08,2C13.78,2 14.33,2.56 14.33,3.25V11.17H15.17V4.08C15.17,3.39 15.72,2.83 16.42,2.83A1.25,1.25 0 0,1 17.67,4.08V11.17H18.5V6.58A1.25,1.25 0 0,1 19.75,5.33A1.25,1.25 0 0,1 21,6.58Z"; +var mdiHandSaw = "M9.8,17L5.9,11.6L20,2L22,5V8H19V11H16V14H13V17M9.7,18.7L9.2,21.5L7.6,22.7C6.7,23.3 5.5,23.1 4.8,22.2L1.3,17.3C0.7,16.4 0.9,15.2 1.8,14.5L5.1,12.2L9.7,18.7M4.6,15L3,16.1L6.5,21L8.1,19.8L4.6,15Z"; +var mdiHandWash = "M17 5L17.62 6.37L19 7L17.62 7.63L17 9L16.36 7.63L15 7L16.36 6.37L17 5M11 6.13V4H13C13.57 4 14.1 4.17 14.55 4.45L16 3C15.15 2.39 14.13 2 13 2H7.5V4H9V6.14C7.23 6.5 5.81 7.8 5.26 9.5H9.24L15 11.65V11.03C15 8.61 13.28 6.59 11 6.13M1 22H5V11H1V22M20 17H13L10.91 16.27L11.24 15.33L13 16H15.82C16.47 16 17 15.47 17 14.82C17 14.33 16.69 13.89 16.23 13.71L8.97 11H7V20L14 22L22 19C22 17.9 21.11 17 20 17M20 14C21.1 14 22 13.1 22 12S20 8 20 8 18 10.9 18 12 18.9 14 20 14Z"; +var mdiHandWashOutline = "M17 5L17.62 6.37L19 7L17.62 7.63L17 9L16.36 7.63L15 7L16.36 6.37L17 5M20 14C21.1 14 22 13.1 22 12S20 8 20 8 18 10.9 18 12 18.9 14 20 14M11 6.1V4H13C13.57 4 14.1 4.17 14.55 4.45L16 3C15.15 2.39 14.13 2 13 2H7.5V4H9V6.11C7.22 6.5 5.8 7.79 5.25 9.5H7.41C7.94 8.61 8.89 8 10 8C11.62 8 12.94 9.29 13 10.9L15 11.65V11C15 8.58 13.28 6.56 11 6.1M22 19V20L14 22.5L7 20.56V22H1V11H8.97L15.13 13.3C16.25 13.72 17 14.8 17 16H19C20.66 16 22 17.34 22 19M5 20V13H3V20H5M19.9 18.57C19.74 18.24 19.39 18 19 18H13.65C13.11 18 12.58 17.92 12.07 17.75L9.69 16.96L10.32 15.06L12.7 15.85C13 15.95 15 16 15 16C15 15.63 14.77 15.3 14.43 15.17L8.61 13H7V18.5L13.97 20.41L19.9 18.57Z"; +var mdiHandWater = "M17.42 22.5H5.33C3.5 22.5 2 21 2 19.17V13.08C2 12.18 2.36 11.33 3 10.71L8.63 5.17C8.63 5.17 9.66 6.22 9.67 6.25C9.83 6.43 9.92 6.66 9.92 6.91C9.92 7.09 9.87 7.26 9.78 7.41C9.77 7.44 8 10 8 10H18.67C19.36 10 19.92 10.56 19.92 11.25C19.92 11.94 19.36 12.5 18.67 12.5H12.83V13.33H20.75C21.44 13.33 22 13.89 22 14.58C22 15.28 21.44 15.83 20.75 15.83H12.83V16.67H19.92C20.61 16.67 21.17 17.22 21.17 17.92C21.17 18.61 20.61 19.17 19.92 19.17H12.83V20H17.42C18.11 20 18.67 20.56 18.67 21.25C18.67 21.94 18.11 22.5 17.42 22.5M13.5 4.8C13.5 4.8 12 6.46 12 7.5C12 9.5 15 9.5 15 7.5C15 6.46 13.5 4.8 13.5 4.8M18.5 1C18.5 1 16 3.76 16 5.5C16 8.83 21 8.83 21 5.5C21 3.76 18.5 1 18.5 1Z"; +var mdiHandball = "M15.83 10.43A6.93 6.93 0 0 1 18.39 14.86A6.64 6.64 0 0 1 17.5 19.5L15.78 18.5A5 5 0 0 0 16.44 16A5.22 5.22 0 0 0 15.46 13.06L9.18 23.93L7.44 22.95L10.44 17.75L8.71 16.76L7.21 19.34L5.5 18.36L10.63 9.45A7 7 0 0 1 8.8 5.46A6.91 6.91 0 0 1 9.69 1.1L11.43 2.13A4.84 4.84 0 0 0 10.91 5.9A4.74 4.74 0 0 0 13.21 8.93M16 5A2 2 0 1 0 18 7A2 2 0 0 0 16 5M13.5 1A1.5 1.5 0 1 0 15 2.5A1.5 1.5 0 0 0 13.5 1Z"; +var mdiHandcuffs = "M20.24 6.76C18.4 4.91 15.65 4.53 13.42 5.59L12.46 4.63C12.07 4.24 11.44 4.24 11.05 4.63L10.97 4.72C10.83 3.75 10 3 9 3C7.9 3 7 3.9 7 5C7 5.09 7 5.18 7.03 5.26C6.42 5.61 6 6.25 6 7C6 7.46 6.16 7.87 6.42 8.21C6.17 8.39 6 8.67 6 9V10.35C3.67 11.17 2 13.39 2 16C2 19.31 4.69 22 8 22S14 19.31 14 16C14 13.39 12.33 11.17 10 10.35V9C10 8.67 9.83 8.39 9.58 8.21C9.84 7.87 10 7.46 10 7C10 6.91 10 6.82 9.97 6.74C10.15 6.64 10.3 6.5 10.43 6.38C11.36 6.88 12 7.86 12 9V9.08C12.13 9.15 12.25 9.25 12.38 9.33C12.57 8.91 12.83 8.5 13.17 8.17C14.73 6.61 17.27 6.61 18.83 8.17C20.39 9.73 20.39 12.27 18.83 13.83C18.03 14.63 17 15 15.93 15C16 15.32 16 15.66 16 16C16 16.34 15.97 16.67 15.93 17C17.5 17 19.05 16.43 20.24 15.24C22.59 12.9 22.59 9.1 20.24 6.76M9 4C9.55 4 10 4.45 10 5C10 5.33 9.83 5.61 9.58 5.79C9.22 5.31 8.65 5 8 5C8 4.45 8.45 4 9 4M7.42 6.21C7.78 6.69 8.35 7 9 7C9 7.55 8.55 8 8 8S7 7.55 7 7C7 6.67 7.17 6.39 7.42 6.21M12 16C12 18.21 10.21 20 8 20S4 18.21 4 16C4 13.79 5.79 12 8 12S12 13.79 12 16Z"; +var mdiHandshake = "M11 6H14L17.29 2.7A1 1 0 0 1 18.71 2.7L21.29 5.29A1 1 0 0 1 21.29 6.7L19 9H11V11A1 1 0 0 1 10 12A1 1 0 0 1 9 11V8A2 2 0 0 1 11 6M5 11V15L2.71 17.29A1 1 0 0 0 2.71 18.7L5.29 21.29A1 1 0 0 0 6.71 21.29L11 17H15A1 1 0 0 0 16 16V15H17A1 1 0 0 0 18 14V13H19A1 1 0 0 0 20 12V11H13V12A2 2 0 0 1 11 14H9A2 2 0 0 1 7 12V9Z"; +var mdiHandshakeOutline = "M21.71 8.71C22.96 7.46 22.39 6 21.71 5.29L18.71 2.29C17.45 1.04 16 1.61 15.29 2.29L13.59 4H11C9.1 4 8 5 7.44 6.15L3 10.59V14.59L2.29 15.29C1.04 16.55 1.61 18 2.29 18.71L5.29 21.71C5.83 22.25 6.41 22.45 6.96 22.45C7.67 22.45 8.32 22.1 8.71 21.71L11.41 19H15C16.7 19 17.56 17.94 17.87 16.9C19 16.6 19.62 15.74 19.87 14.9C21.42 14.5 22 13.03 22 12V9H21.41L21.71 8.71M20 12C20 12.45 19.81 13 19 13L18 13L18 14C18 14.45 17.81 15 17 15L16 15L16 16C16 16.45 15.81 17 15 17H10.59L7.31 20.28C7 20.57 6.82 20.4 6.71 20.29L3.72 17.31C3.43 17 3.6 16.82 3.71 16.71L5 15.41V11.41L7 9.41V11C7 12.21 7.8 14 10 14S13 12.21 13 11H20V12M20.29 7.29L18.59 9H11V11C11 11.45 10.81 12 10 12S9 11.45 9 11V8C9 7.54 9.17 6 11 6H14.41L16.69 3.72C17 3.43 17.18 3.6 17.29 3.71L20.28 6.69C20.57 7 20.4 7.18 20.29 7.29Z"; +var mdiHanger = "M12 4A3.5 3.5 0 0 0 8.5 7.5H10.5A1.5 1.5 0 0 1 12 6A1.5 1.5 0 0 1 13.5 7.5A1.5 1.5 0 0 1 12 9C11.45 9 11 9.45 11 10V11.75L2.4 18.2A1 1 0 0 0 3 20H21A1 1 0 0 0 21.6 18.2L13 11.75V10.85A3.5 3.5 0 0 0 15.5 7.5A3.5 3.5 0 0 0 12 4M12 13.5L18 18H6Z"; +var mdiHardHat = "M9.87,12.15L9,6.46C10.95,5.84 13.05,5.84 15,6.46L14.13,12.15C14.06,12.64 13.63,13 13.13,13H10.86C10.37,13 9.94,12.64 9.87,12.15M22,16V16C22,15.21 21.53,14.5 20.8,14.17C20.32,11.86 18.96,9.83 17,8.5L15.24,13.34C15.1,13.74 14.72,14 14.3,14H9.7C9.28,14 8.9,13.74 8.76,13.34L7,8.5C5.04,9.83 3.68,11.86 3.2,14.16C2.47,14.5 2,15.2 2,16L8.45,17.84C8.81,17.94 9.18,18 9.55,18H14.43C14.8,18 15.17,17.94 15.53,17.84L22,16Z"; +var mdiHarddisk = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z"; +var mdiHarddiskPlus = "M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M18 2H6A2 2 0 0 0 4 4V13.09A5.47 5.47 0 0 1 5 13A5.71 5.71 0 0 1 7 13.36A6 6 0 1 1 15.71 14.69L13.79 12.27A1 1 0 0 0 12.42 11.9L11.56 12.4A1 1 0 0 0 11.19 13.77L12.1 16A6.12 6.12 0 0 1 10 15.62A6 6 0 0 1 10.19 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14.58 19.58L12.09 13.27L12.95 12.77L17.17 18.08M12 11A1 1 0 1 0 11 10A1 1 0 0 0 12 11M9 20H6V23H4V20H1V18H4V15H6V18H9Z"; +var mdiHarddiskRemove = "M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M18 2H6A2 2 0 0 0 4 4V13.09A5.47 5.47 0 0 1 5 13A5.71 5.71 0 0 1 7 13.36A6 6 0 1 1 15.71 14.69L13.79 12.27A1 1 0 0 0 12.42 11.9L11.56 12.4A1 1 0 0 0 11.19 13.77L12.1 16A6.12 6.12 0 0 1 10 15.62A6 6 0 0 1 10.19 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14.58 19.58L12.09 13.27L12.95 12.77L17.17 18.08M12 11A1 1 0 1 0 11 10A1 1 0 0 0 12 11M7.12 22.54L5 20.41L2.88 22.54L1.46 21.12L3.59 19L1.46 16.88L2.88 15.46L5 17.59L7.12 15.46L8.54 16.88L6.41 19L8.54 21.12Z"; +var mdiHatFedora = "M19.11,11.92C19.13,11.71 19.14,11.5 19.14,11.29C19.14,7.86 17.71,4.14 16.28,4.14C14.85,4.14 13.42,5.57 12,5.57C10.57,5.57 9.14,4.14 7.71,4.14C6.28,4.14 4.86,7.79 4.86,11.29C4.86,11.5 4.86,11.71 4.88,11.92C7.22,12.45 9.6,12.72 12,12.71C14.45,12.71 16.83,12.44 19.11,11.92M3.45,18.18C9,19.85 14.96,19.86 20.54,18.18C20.96,18.04 21.33,17.77 21.59,17.41C21.85,17.05 22,16.61 22,16.17C22,15.72 21.86,15.29 21.61,14.92C21.35,14.56 21,14.29 20.56,14.14C17.86,15 15,15.45 12,15.45C9,15.45 6.13,15 3.43,14.14C3,14.29 2.65,14.57 2.39,14.93C2.14,15.29 2,15.72 2,16.17C2,17.11 2.61,17.9 3.45,18.18V18.18Z"; +var mdiHazardLights = "M12,12L14.33,16H9.68L12,12M12,8L6.21,18H17.8L12,8M12,2L1,21H23L12,2M12,6L19.53,19H4.47L12,6Z"; +var mdiHdr = "M21,11.5V10.5C21,9.7 20.3,9 19.5,9H16V15H17.5V13H18.6L19.5,15H21L20.1,12.9C20.6,12.6 21,12.1 21,11.5M19.5,11.5H17.5V10.5H19.5V11.5M6.5,11H4.5V9H3V15H4.5V12.5H6.5V15H8V9H6.5V11M13,9H9.5V15H13C13.8,15 14.5,14.3 14.5,13.5V10.5C14.5,9.7 13.8,9 13,9M13,13.5H11V10.5H13V13.5Z"; +var mdiHdrOff = "M17.5,15V13H18.6L19.5,15H21L20.1,12.9C20.6,12.7 21,12.1 21,11.5V10.5C21,9.7 20.3,9 19.5,9H16V13.9L17.1,15H17.5M17.5,10.5H19.5V11.5H17.5V10.5M13,10.5V10.9L14.5,12.4V10.5C14.5,9.7 13.8,9 13,9H11.1L12.6,10.5H13M9.5,9.5L2.5,2.5L1.4,3.5L6.9,9H6.5V11H4.5V9H3V15H4.5V12.5H6.5V15H8V10.1L9.5,11.6V15H12.9L20.5,22.6L21.6,21.5L9.5,9.5Z"; +var mdiHead = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3"; +var mdiHeadAlert = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M14 15H12V13H14V14M14 11H12V5H14V11Z"; +var mdiHeadAlertOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M14 15H12V13H14V15M14 11H12V5H14"; +var mdiHeadCheck = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M12.47 13L9 9.5L10.4 8.09L12.47 10.17L16.6 6L18 7.41L12.47 13Z"; +var mdiHeadCheckOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.42 1 4.61 4.43 4.06 8.91L2.5 11C1.92 11.72 1.82 12.72 2.24 13.59C2.6 14.31 3.24 14.8 4 14.95V16C4 17.86 5.28 19.43 7 19.87V23H18V17.47C20.5 15.83 22 13.06 22 10C22 5.04 17.96 1 13 1M12.47 13L9 9.5L10.4 8.09L12.47 10.17L16.6 6L18 7.41L12.47 13Z"; +var mdiHeadCog = "M13 8.58C13.78 8.58 14.44 9.19 14.44 10S13.78 11.44 13 11.44 11.58 10.78 11.58 10 12.19 8.58 13 8.58M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M16 10C16 9.84 16 9.75 15.94 9.61L16.83 8.95C16.88 8.91 16.92 8.77 16.88 8.67L16.08 7.31C16.03 7.22 15.89 7.17 15.8 7.22L14.81 7.64C14.63 7.45 14.39 7.31 14.16 7.22L14 6.19C13.97 6.05 13.92 6 13.78 6H12.19C12.09 6 12 6.05 12 6.19L11.86 7.22C11.63 7.31 11.39 7.45 11.2 7.64L10.17 7.22C10.08 7.17 10 7.22 9.94 7.31L9.14 8.67C9.09 8.81 9.09 8.91 9.19 8.95L10.03 9.61C10.03 9.75 10 9.89 10 10C10 10.13 10.03 10.27 10.03 10.41L9.19 11.06C9.09 11.11 9.09 11.2 9.14 11.3L9.94 12.7C10 12.8 10.08 12.8 10.17 12.8L11.16 12.37C11.39 12.56 11.58 12.66 11.86 12.75L12 13.83C12 13.92 12.09 14 12.19 14H13.78C13.92 14 13.97 13.92 14 13.83L14.16 12.75C14.39 12.66 14.63 12.56 14.81 12.38L15.8 12.8C15.89 12.8 16.03 12.8 16.08 12.7L16.88 11.3C16.92 11.2 16.88 11.11 16.83 11.06L16 10.41V10Z"; +var mdiHeadCogOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.42 1 4.61 4.43 4.06 8.91L2.5 11C1.92 11.72 1.82 12.72 2.24 13.59C2.6 14.31 3.24 14.8 4 14.95V16C4 17.86 5.28 19.43 7 19.87V23H18V17.47C20.5 15.83 22 13.06 22 10C22 5.04 17.96 1 13 1M16.1 9.42V9C16.1 8.85 16.1 8.76 16.04 8.62L16.93 7.96C17 7.92 17 7.78 17 7.68L16.18 6.32C16.13 6.23 16 6.18 15.9 6.23L14.91 6.65C14.73 6.46 14.5 6.32 14.26 6.23L14.1 5.2C14.07 5.06 14 5 13.88 5H12.29C12.19 5 12.1 5.06 12.1 5.2L11.96 6.23C11.73 6.32 11.5 6.46 11.3 6.65L10.27 6.23C10.18 6.18 10.1 6.23 10.04 6.32L9.24 7.68C9.19 7.82 9.19 7.92 9.29 7.96L10.13 8.62C10.13 8.76 10.1 8.9 10.1 9C10.1 9.14 10.13 9.28 10.13 9.42L9.29 10.07C9.19 10.12 9.19 10.21 9.24 10.31L10.04 11.71C10.1 11.81 10.18 11.81 10.27 11.81L11.26 11.38C11.5 11.57 11.68 11.67 11.96 11.76L12.1 12.84C12.1 12.93 12.19 13 12.29 13H13.88C14 13 14.07 12.93 14.1 12.84L14.26 11.76C14.5 11.67 14.73 11.57 14.91 11.39L15.9 11.81C16 11.81 16.13 11.81 16.18 11.71L17 10.31C17 10.21 17 10.12 16.93 10.07L16.1 9.42M13.1 10.45C12.32 10.45 11.68 9.79 11.68 9S12.29 7.59 13.1 7.59C13.88 7.59 14.54 8.2 14.54 9S13.88 10.45 13.1 10.45Z"; +var mdiHeadDotsHorizontal = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M10 11C9.45 11 9 10.55 9 10S9.45 9 10 9 11 9.45 11 10 10.55 11 10 11M13 11C12.45 11 12 10.55 12 10S12.45 9 13 9 14 9.45 14 10 13.55 11 13 11M16 11C15.45 11 15 10.55 15 10S15.45 9 16 9 17 9.45 17 10 16.55 11 16 11Z"; +var mdiHeadDotsHorizontalOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M10 10C9.4 10 9 9.6 9 9S9.4 8 10 8 11 8.4 11 9 10.6 10 10 10M13 10C12.4 10 12 9.6 12 9S12.4 8 13 8 14 8.4 14 9 13.6 10 13 10M16 10C15.5 10 15 9.6 15 9S15.5 8 16 8 17 8.4 17 9 16.5 10 16 10Z"; +var mdiHeadFlash = "M13 3C9.2 3 6.2 6 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M15 9L11.9 15L12.5 11H10.5L12.5 6H15L13.5 9H15Z"; +var mdiHeadFlashOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M15 9L11.9 15L12.5 11H10.4L12.5 6H15L13.5 9H15Z"; +var mdiHeadHeart = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M17 8.83C17 10.37 15.64 11.6 13.58 13.47L13 14L12.42 13.47C10.36 11.6 9 10.37 9 8.83C9 7.63 9.96 6.64 11.16 6.63H11.2C11.89 6.63 12.55 6.94 13 7.46C13.45 6.94 14.11 6.63 14.8 6.63C16 6.62 17 7.59 17 8.79V8.83Z"; +var mdiHeadHeartOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M17 8.83C17 10.37 15.64 11.6 13.58 13.47L13 14L12.42 13.47C10.36 11.6 9 10.37 9 8.83C9 7.63 9.96 6.64 11.16 6.63H11.2C11.89 6.63 12.55 6.94 13 7.46C13.45 6.94 14.11 6.63 14.8 6.63C16 6.62 17 7.59 17 8.79V8.83Z"; +var mdiHeadLightbulb = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M14 14H12V13H14V14M15.6 9.5C15.34 9.94 14.96 10.32 14.5 10.58V12H11.5V10.58C10.07 9.75 9.57 7.92 10.4 6.5S13.07 4.56 14.5 5.38 16.43 8.05 15.6 9.5Z"; +var mdiHeadLightbulbOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M14 14H12V13H14V14M15.6 9.5C15.3 9.9 15 10.3 14.5 10.6V12H11.5V10.6C10.1 9.8 9.6 7.9 10.4 6.5S13.1 4.6 14.5 5.4 16.4 8.1 15.6 9.5Z"; +var mdiHeadMinus = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M17 10H9V8H17V10Z"; +var mdiHeadMinusOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M17 10H9V8H17V10Z"; +var mdiHeadOutline = "M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C2 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.8 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 6 9.2 3 13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3Z"; +var mdiHeadPlus = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M17 10H14V13H12V10H9V8H12V5H14V8H17V10Z"; +var mdiHeadPlusOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M17 10H14V13H12V10H9V8H12V5H14V8H17V10Z"; +var mdiHeadQuestion = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M14 14H12V12H14V14M15.75 8.81C15.46 9.21 15.09 9.5 14.64 9.74C14.39 9.9 14.22 10.07 14.13 10.26C14.04 10.44 14 10.69 14 11H12C12 10.5 12.11 10.08 12.31 9.82C12.5 9.55 12.85 9.25 13.36 8.91C13.62 8.75 13.83 8.55 13.97 8.32C14.13 8.09 14.2 7.82 14.2 7.5C14.2 7.2 14.12 6.94 13.94 6.75C13.76 6.57 13.5 6.47 13.19 6.47C12.93 6.47 12.71 6.55 12.53 6.7C12.35 6.86 12.26 7.09 12.25 7.39H10.32L10.31 7.36C10.3 6.57 10.56 6 11.08 5.59C11.62 5.2 12.32 5 13.19 5C14.12 5 14.85 5.23 15.38 5.68C15.92 6.13 16.19 6.74 16.19 7.5C16.19 8 16.04 8.41 15.75 8.81Z"; +var mdiHeadQuestionOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M10.32 7.39H12.25C12.26 7.09 12.35 6.86 12.53 6.7C12.71 6.55 12.93 6.47 13.19 6.47C13.5 6.47 13.76 6.57 13.94 6.75C14.12 6.94 14.2 7.2 14.2 7.5C14.2 7.82 14.13 8.09 13.97 8.32C13.83 8.55 13.62 8.75 13.36 8.91C12.85 9.25 12.5 9.55 12.31 9.82C12.11 10.08 12 10.5 12 11H14C14 10.69 14.04 10.44 14.13 10.26C14.22 10.07 14.39 9.9 14.64 9.74C15.09 9.5 15.46 9.21 15.75 8.81C16.04 8.41 16.19 8 16.19 7.5C16.19 6.74 15.92 6.13 15.38 5.68C14.85 5.23 14.12 5 13.19 5C12.32 5 11.62 5.2 11.08 5.59C10.56 6 10.3 6.57 10.31 7.36L10.32 7.39M12 14H14V12H12V14M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1Z"; +var mdiHeadRemove = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M15.1 12.5L13 10.4L10.9 12.5L9.5 11.1L11.6 9L9.5 6.9L10.9 5.5L13 7.6L15.1 5.5L16.5 6.9L14.4 9L16.5 11.1L15.1 12.5Z"; +var mdiHeadRemoveOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M16.5 6.9L14.4 9L16.5 11.1L15.1 12.5L13 10.4L10.9 12.5L9.5 11.1L11.6 9L9.5 6.9L10.9 5.5L13 7.6L15.1 5.5L16.5 6.9Z"; +var mdiHeadSnowflake = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M17.06 9.57L15.1 10.09L16.54 11.54C16.89 11.88 16.89 12.46 16.54 12.81C16.19 13.16 15.61 13.16 15.27 12.81L13.81 11.37L13.3 13.33C13.18 13.82 12.68 14.1 12.21 13.97C11.72 13.84 11.44 13.35 11.57 12.87L12.1 10.9L10.13 11.43C9.65 11.56 9.15 11.28 9.03 10.79C8.9 10.32 9.18 9.82 9.67 9.7L11.63 9.19L10.19 7.73C9.84 7.39 9.84 6.82 10.19 6.46C10.54 6.11 11.12 6.11 11.46 6.46L12.91 7.9L13.43 5.94C13.55 5.46 14.04 5.18 14.5 5.3C15 5.43 15.28 5.92 15.16 6.41L14.63 8.37L16.59 7.84C17.08 7.72 17.57 8 17.7 8.5C17.82 8.96 17.54 9.45 17.06 9.57Z"; +var mdiHeadSnowflakeOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M17.33 9.3L15.37 9.81L16.81 11.27C17.16 11.61 17.16 12.19 16.81 12.54S15.88 12.89 15.54 12.54L14.09 11.1L13.57 13.06C13.45 13.55 12.96 13.82 12.5 13.7C12 13.57 11.72 13.08 11.84 12.59L12.37 10.63L10.41 11.16C9.92 11.28 9.43 11 9.3 10.5C9.18 10.05 9.46 9.55 9.94 9.43L11.9 8.91L10.46 7.46C10.11 7.12 10.11 6.55 10.46 6.19C10.81 5.84 11.39 5.84 11.73 6.19L13.19 7.63L13.7 5.67C13.82 5.18 14.32 4.9 14.79 5.03C15.28 5.16 15.56 5.65 15.43 6.13L14.9 8.1L16.87 7.57C17.35 7.44 17.84 7.72 17.97 8.21C18.1 8.68 17.82 9.18 17.33 9.3Z"; +var mdiHeadSync = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M13 15V13.5C10.79 13.5 9 11.71 9 9.5C9 8.68 9.25 7.92 9.67 7.29L10.76 8.38C10.59 8.72 10.5 9.1 10.5 9.5C10.5 10.88 11.62 12 13 12V10.5L15.25 12.75L13 15M16.33 11.71L15.24 10.62C15.41 10.28 15.5 9.9 15.5 9.5C15.5 8.12 14.38 7 13 7V8.5L10.75 6.25L13 4V5.5C15.21 5.5 17 7.29 17 9.5C17 10.32 16.75 11.08 16.33 11.71Z"; +var mdiHeadSyncOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M14 15V13.5C11.79 13.5 10 11.71 10 9.5C10 8.68 10.25 7.92 10.67 7.29L11.76 8.38C11.59 8.72 11.5 9.1 11.5 9.5C11.5 10.88 12.62 12 14 12V10.5L16.25 12.75L14 15M17.33 11.71L16.24 10.62C16.41 10.28 16.5 9.9 16.5 9.5C16.5 8.12 15.38 7 14 7V8.5L11.75 6.25L14 4V5.5C16.21 5.5 18 7.29 18 9.5C18 10.32 17.75 11.08 17.33 11.71Z"; +var mdiHeadphones = "M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z"; +var mdiHeadphonesBluetooth = "M8,6A6,6 0 0,0 2,12V16.8C2,17.46 2.54,18 3.2,18H6V14H4V12A4,4 0 0,1 8,8A4,4 0 0,1 12,12V14H10V18H12.8A1.2,1.2 0 0,0 14,16.8V12A6,6 0 0,0 8,6M19,7V10.79L16.71,8.5L16,9.21L18.79,12L16,14.79L16.71,15.5L19,13.21V17H19.5L22.35,14.14L20.21,12L22.35,9.85L19.5,7H19M20,8.91L20.94,9.85L20,10.79V8.91M20,13.21L20.94,14.14L20,15.08V13.21Z"; +var mdiHeadphonesBox = "M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiHeadphonesOff = "M12,1A9,9 0 0,1 21,10V17C21,17.62 20.81,18.19 20.5,18.67L15,13.18V12H19V10A7,7 0 0,0 12,3C10,3 8.23,3.82 6.96,5.14L5.55,3.72C7.18,2.04 9.47,1 12,1M2.78,3.5L20.5,21.22L19.23,22.5L16.73,20H15V18.27L9,12.27V20H6A3,3 0 0,1 3,17V10C3,8.89 3.2,7.82 3.57,6.84L1.5,4.77L2.78,3.5M5.17,8.44C5.06,8.94 5,9.46 5,10V12H8.73L5.17,8.44Z"; +var mdiHeadphonesSettings = "M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z"; +var mdiHeadset = "M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z"; +var mdiHeadsetDock = "M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z"; +var mdiHeadsetOff = "M1.5,4.77L3.57,6.84C3.2,7.82 3,8.89 3,10V20A3,3 0 0,0 6,23H12V21H5V20H9V12.27L15,18.27V20H16.73L19.23,22.5L20.5,21.22L2.78,3.5L1.5,4.77M12,1C9.47,1 7.18,2.04 5.55,3.72L6.96,5.14C8.23,3.82 10,3 12,3A7,7 0 0,1 19,10V12H15V13.18L20.5,18.67C20.81,18.19 21,17.62 21,17V10A9,9 0 0,0 12,1M5,12V10C5,9.46 5.06,8.94 5.17,8.44L8.73,12H5Z"; +var mdiHeart = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z"; +var mdiHeartBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z"; +var mdiHeartBoxOutline = "M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; +var mdiHeartBroken = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z"; +var mdiHeartBrokenOutline = "M7.5,5C7.7,5 7.9,5 8.1,5.1L10.5,9.2L6.8,13.8C5.1,11.8 4,10.2 4,8.5C4,6.5 5.5,5 7.5,5M7.5,3C4.4,3 2,5.4 2,8.5C2,12.3 5.4,15.4 10.6,20L12,21.3L9,14.3L13,9.3L9.4,3.3C8.8,3.1 8.2,3 7.5,3M16.5,5C18.5,5 20,6.5 20,8.5C20,11.1 17.4,13.7 13.4,17.3L13.1,15L17.9,9.7L15.6,5.2C15.9,5 16.2,5 16.5,5M16.5,3C15.2,3 13.9,3.5 12.9,4.3L15.5,9.4L11,14.4L12,21.4L13.4,20.1C18.6,15.4 22,12.3 22,8.6C22,5.4 19.6,3 16.5,3Z"; +var mdiHeartCircle = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82Z"; +var mdiHeartCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82Z"; +var mdiHeartCog = "M12 19C12 19.71 12.12 20.4 12.32 21.06L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.8 21.59 11 20.84 12.25C20.25 12.09 19.63 12 19 12C15.14 12 12 15.14 12 19M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; +var mdiHeartCogOutline = "M16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12 18.63C12 18.75 12 18.88 12 19C12 19.71 12.12 20.4 12.32 21.06L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.8 21.59 11 20.84 12.25C20.25 12.09 19.63 12 19 12C18.87 12 18.74 12 18.6 12C19.5 10.79 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; +var mdiHeartFlash = "M16.5,2.83C14.76,2.83 13.09,3.64 12,4.9C10.91,3.64 9.24,2.83 7.5,2.83C4.42,2.83 2,5.24 2,8.33C2,12.1 5.4,15.19 10.55,19.86L12,21.17L13.45,19.86C18.6,15.19 22,12.1 22,8.33C22,5.24 19.58,2.83 16.5,2.83M12,17.83V13.83H9L12,6.83V10.83H15"; +var mdiHeartHalf = "M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z"; +var mdiHeartHalfFull = "M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z"; +var mdiHeartHalfOutline = "M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z"; +var mdiHeartMinus = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M14 17V19H22V17H14Z"; +var mdiHeartMinusOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M14 17V19H22V17H14Z"; +var mdiHeartMultiple = "M13.5,20C6.9,13.9 3.5,10.8 3.5,7.1C3.5,4 5.9,1.6 9,1.6C10.7,1.6 12.4,2.4 13.5,3.7C14.6,2.4 16.3,1.6 18,1.6C21.1,1.6 23.5,4 23.5,7.1C23.5,10.9 20.1,14 13.5,20M12,21.1C5.4,15.2 1.5,11.7 1.5,7C1.5,6.8 1.5,6.6 1.5,6.4C0.9,7.3 0.5,8.4 0.5,9.6C0.5,13.4 3.9,16.5 10.5,22.4L12,21.1Z"; +var mdiHeartMultipleOutline = "M12,21.1L10.5,22.4C3.9,16.5 0.5,13.4 0.5,9.6C0.5,8.4 0.9,7.3 1.5,6.4C1.5,6.6 1.5,6.8 1.5,7C1.5,11.7 5.4,15.2 12,21.1M13.6,17C18.3,12.7 21.5,9.9 21.6,7C21.6,5 20.1,3.5 18.1,3.5C16.5,3.5 15,4.5 14.5,5.9H12.6C12,4.5 10.5,3.5 9,3.5C7,3.5 5.5,5 5.5,7C5.5,9.9 8.6,12.7 13.4,17L13.5,17.1M18,1.5C21.1,1.5 23.5,3.9 23.5,7C23.5,10.7 20.1,13.8 13.5,19.8C6.9,13.9 3.5,10.8 3.5,7C3.5,3.9 5.9,1.5 9,1.5C10.7,1.5 12.4,2.3 13.5,3.6C14.6,2.3 16.3,1.5 18,1.5Z"; +var mdiHeartOff = "M1,4.27L2.28,3L20,20.72L18.73,22L15.18,18.44L13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,7.55 2.23,6.67 2.63,5.9L1,4.27M7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,11.07 20.42,13.32 17.79,15.97L5.27,3.45C5.95,3.16 6.7,3 7.5,3Z"; +var mdiHeartOffOutline = "M2.39 1.73L1.11 3L3.19 5.08C2.45 6 2 7.19 2 8.5C2 12.27 5.4 15.36 10.55 20.03L12 21.35L13.45 20.03C14.32 19.24 15.14 18.5 15.9 17.79L20 22L21.27 20.73M12.1 18.55L12 18.65L11.89 18.55C7.14 14.24 4 11.39 4 8.5C4 7.74 4.22 7.06 4.61 6.5L14.5 16.37C13.74 17.06 12.95 17.78 12.1 18.55M8.3 5.1L6.33 3.13C6.7 3.05 7.1 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 10.84 20.69 12.92 18.47 15.27L17.06 13.86C18.91 11.88 20 10.2 20 8.5C20 6.5 18.5 5 16.5 5C15.1 5 13.74 5.83 13.11 7H10.89C10.38 6.06 9.39 5.34 8.3 5.1Z"; +var mdiHeartOutline = "M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z"; +var mdiHeartPlus = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M19 14H17V17H14V19H17V22H19V19H22V17H19V14Z"; +var mdiHeartPlusOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; +var mdiHeartPulse = "M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z"; +var mdiHeartRemove = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M21.54 15.88L20.12 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88Z"; +var mdiHeartRemoveOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88L20.12 14.46Z"; +var mdiHeartSettings = "M15 22H17V24H15V22M11 24H13V22H11V24M7 24H9V22H7V24M16.5 3C14.76 3 13.09 3.81 12 5.08C10.91 3.81 9.24 3 7.5 3C4.42 3 2 5.41 2 8.5C2 12.27 5.4 15.36 10.55 20.03L12 21.35L13.45 20.03C18.6 15.36 22 12.27 22 8.5C22 5.41 19.58 3 16.5 3Z"; +var mdiHeartSettingsOutline = "M7 22H9V24H7V22M11 24H13V22H11V24M15 24H17V22H15V24M22 8.5C22 12.27 18.6 15.36 13.45 20.03L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5M20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.1 18.55C16.86 14.24 20 11.39 20 8.5Z"; +var mdiHelicopter = "M3,3H17V5H3V3M23,6V10.5L14.75,12.2C14.91,12.6 15,13.04 15,13.5C15,14.9 14.18,16.1 13,16.66V17L13,19H16V21H4A3,3 0 0,1 1,18V17H3V18A1,1 0 0,0 4,19H5V16.74C3.25,16.13 2,14.46 2,12.5C2,10 4,8 6.5,8H9V6H11V8H21V6H23M11,19V17H7V19H11M7.5,10C6.12,10 5,10.9 5,12C5,13.1 6.12,14 7.5,14C8.88,14 10,13.1 10,12C10,10.9 8.88,10 7.5,10Z"; +var mdiHelp = "M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z"; +var mdiHelpBox = "M11,18H13V16H11V18M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; +var mdiHelpCircle = "M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"; +var mdiHelpCircleOutline = "M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z"; +var mdiHelpNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12.19,5C11.32,5 10.62,5.2 10.08,5.59C9.56,6 9.3,6.57 9.31,7.36L9.32,7.39H11.25C11.26,7.09 11.35,6.86 11.53,6.7C11.71,6.55 11.93,6.47 12.19,6.47C12.5,6.47 12.76,6.57 12.94,6.75C13.12,6.94 13.2,7.2 13.2,7.5C13.2,7.82 13.13,8.09 12.97,8.32C12.83,8.55 12.62,8.75 12.36,8.91C11.85,9.25 11.5,9.55 11.31,9.82C11.11,10.08 11,10.5 11,11H13C13,10.69 13.04,10.44 13.13,10.26C13.22,10.07 13.39,9.9 13.64,9.74C14.09,9.5 14.46,9.21 14.75,8.81C15.04,8.41 15.19,8 15.19,7.5C15.19,6.74 14.92,6.13 14.38,5.68C13.85,5.23 13.12,5 12.19,5M11,12V14H13V12H11Z"; +var mdiHelpNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M11.95,6C11.17,6 10.55,6.18 10.07,6.5C9.61,6.89 9.38,7.4 9.39,8.1L9.4,8.13H11.11C11.12,7.86 11.2,7.65 11.36,7.5C11.5,7.38 11.72,7.31 11.95,7.31C12.22,7.31 12.45,7.4 12.61,7.56C12.77,7.73 12.85,7.96 12.85,8.22C12.85,8.5 12.78,8.75 12.64,8.95C12.5,9.16 12.33,9.33 12.1,9.5C11.65,9.78 11.34,10.05 11.17,10.29C11,10.5 10.89,10.89 10.89,11.33H12.67C12.67,11.06 12.7,10.84 12.78,10.68C12.86,10.5 13,10.36 13.24,10.21C13.64,10 13.97,9.74 14.22,9.39C14.5,9.03 14.62,8.67 14.62,8.22C14.62,7.55 14.38,7 13.9,6.61C13.42,6.2 12.77,6 11.95,6M10.89,12.22V14H12.67V12.22H10.89Z"; +var mdiHelpRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 6.95C14.7 7.06 15.87 9.78 14.28 11.81C13.86 12.31 13.19 12.64 12.85 13.07C12.5 13.5 12.5 14 12.5 14.5H11C11 13.65 11 12.94 11.35 12.44C11.68 11.94 12.35 11.64 12.77 11.31C14 10.18 13.68 8.59 12 8.46C11.18 8.46 10.5 9.13 10.5 9.97H9C9 8.3 10.35 6.95 12 6.95M11 15.5H12.5V17H11V15.5Z"; +var mdiHelpRhombusOutline = "M11 15.5H12.5V17H11V15.5M12 6.95C14.7 7.06 15.87 9.78 14.28 11.81C13.86 12.31 13.19 12.64 12.85 13.07C12.5 13.5 12.5 14 12.5 14.5H11C11 13.65 11 12.94 11.35 12.44C11.68 11.94 12.35 11.64 12.77 11.31C14 10.18 13.68 8.59 12 8.46C11.18 8.46 10.5 9.13 10.5 9.97H9C9 8.3 10.35 6.95 12 6.95M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z"; +var mdiHexadecimal = "M7 7C5.9 7 5 7.9 5 9V15C5 16.11 5.9 17 7 17H9C10.11 17 11 16.11 11 15V9C11 7.9 10.11 7 9 7H7M7 9H9V15H7V9M17.6 17L15.5 14.9L13.4 17L12 15.6L14.1 13.5L12 11.4L13.4 10L15.5 12.1L17.6 10L19 11.4L16.9 13.5L19 15.6L17.6 17Z"; +var mdiHexagon = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z"; +var mdiHexagonMultiple = "M10.25,2C10.44,2 10.61,2.11 10.69,2.26L12.91,6.22L13,6.5L12.91,6.78L10.69,10.74C10.61,10.89 10.44,11 10.25,11H5.75C5.56,11 5.39,10.89 5.31,10.74L3.09,6.78L3,6.5L3.09,6.22L5.31,2.26C5.39,2.11 5.56,2 5.75,2H10.25M10.25,13C10.44,13 10.61,13.11 10.69,13.26L12.91,17.22L13,17.5L12.91,17.78L10.69,21.74C10.61,21.89 10.44,22 10.25,22H5.75C5.56,22 5.39,21.89 5.31,21.74L3.09,17.78L3,17.5L3.09,17.22L5.31,13.26C5.39,13.11 5.56,13 5.75,13H10.25M19.5,7.5C19.69,7.5 19.86,7.61 19.94,7.76L22.16,11.72L22.25,12L22.16,12.28L19.94,16.24C19.86,16.39 19.69,16.5 19.5,16.5H15C14.81,16.5 14.64,16.39 14.56,16.24L12.34,12.28L12.25,12L12.34,11.72L14.56,7.76C14.64,7.61 14.81,7.5 15,7.5H19.5Z"; +var mdiHexagonMultipleOutline = "M9.37 4L10.78 6.5L9.37 9H6.63L5.23 6.5L6.63 4H9.37M10.25 2H5.75C5.56 2 5.39 2.11 5.31 2.26L3.09 6.22L3 6.5L3.09 6.78L5.31 10.74C5.39 10.89 5.56 11 5.75 11H10.25C10.44 11 10.61 10.89 10.69 10.74L12.91 6.78L13 6.5L12.91 6.22L10.69 2.26C10.61 2.11 10.44 2 10.25 2M18.62 9.5L20 12L18.62 14.5H15.88L14.5 12L15.88 9.5H18.62M19.5 7.5H15C14.81 7.5 14.64 7.61 14.56 7.76L12.34 11.72L12.25 12L12.34 12.28L14.56 16.24C14.64 16.39 14.81 16.5 15 16.5H19.5C19.69 16.5 19.86 16.39 19.94 16.24L22.16 12.28L22.25 12L22.16 11.72L19.94 7.76C19.86 7.61 19.69 7.5 19.5 7.5M9.37 15L10.78 17.5L9.37 20H6.63L5.23 17.5L6.63 15H9.37M10.25 13H5.75C5.56 13 5.39 13.11 5.31 13.26L3.09 17.22L3 17.5L3.09 17.78L5.31 21.74C5.39 21.89 5.56 22 5.75 22H10.25C10.44 22 10.61 21.89 10.69 21.74L12.91 17.78L13 17.5L12.91 17.22L10.69 13.26C10.61 13.11 10.44 13 10.25 13Z"; +var mdiHexagonOutline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiHexagonSlice1 = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M12,12V5.32L17.94,8.66L12,12Z"; +var mdiHexagonSlice2 = "M18,15.38L12,12V5.32L18,8.69V15.38M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiHexagonSlice3 = "M12,5.32L18,8.69V15.31L12,18.68V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiHexagonSlice4 = "M12,5.32L18,8.69V15.31L12,18.68L6.06,15.34L12,12V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiHexagonSlice5 = "M12,5.32L18,8.69V15.31L12,18.68L6,15.31V8.69L12,12V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiHexagonSlice6 = "M12,5.32L18,8.69V15.31L12,18.68L6,15.31V8.69L12,5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; +var mdiHexagram = "M14.5,7.66L20.64,6.97L17,12L20.68,16.97L14.5,16.32L12.03,22L9.5,16.34L3.36,17.03L7,12L3.32,7.03L9.5,7.68L11.97,2L14.5,7.66Z"; +var mdiHexagramOutline = "M12,7L13.3,9.8L16.5,9.4L14.5,12L16.4,14.5L13.2,14.1L12,17L10.7,14.2L7.5,14.6L9.5,12L7.6,9.5L10.8,9.9L12,7M12,2L9.5,7.7L3.3,7L7,12L3.4,17L9.6,16.3L12,22L14.5,16.3L20.7,16.9L17,12L20.6,7L14.4,7.7L12,2Z"; +var mdiHighDefinition = "M5,7H7V11H9V7H11V17H9V13H7V17H5V7M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16Z"; +var mdiHighDefinitionBox = "M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11V15M13,9H17A1,1 0 0,1 18,10V14A1,1 0 0,1 17,15H13V9M14.5,13.5H16.5V10.5H14.5V13.5Z"; +var mdiHighway = "M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z"; +var mdiHiking = "M9.8,8.9L7,23H9.1L10.9,15L13,17V23H15V15.5L12.9,13.5L13.5,10.5C14.63,11.81 16.29,12.73 18.15,12.95L16,23H17L20,9L19.04,8.8L18.58,11C16.86,10.85 15.44,9.89 14.7,8.6L13.7,7C13.5,6.65 13.2,6.37 12.84,6.2C12.5,6 12.08,5.96 11.68,6C11.28,6.09 10.92,6.27 10.63,6.55C10.34,6.83 10.14,7.19 10.06,7.58L9.8,8.9M7.08,6.92L9.4,7.38L8.4,12.46L6.08,12L7.08,6.92M13.5,5.5A2,2 0 0,0 15.5,3.5A2,2 0 0,0 13.5,1.5A2,2 0 0,0 11.5,3.5A2,2 0 0,0 13.5,5.5Z"; +var mdiHinduism = "M15,2L13.5,3.5L15,5L16.5,3.5L15,2M11,3C10,9 17,10 20,6L18,4.5C17,6 13,8 11,3M9,7C7,7 4.5,8.5 4.5,8.5L6,11C7,10 9,9.5 10,10C12,11 9,13 7,12V15.5C10,14 12,16 11,17.5C8,22 3,16 3,13C1,19 6,22 9,22C12,22 14,20 12.5,15H14C12.5,19.5 18,24 21,18C22,16 22,9.5 17,9.5C13,9.5 14,15 10.5,13.5C14,10 12,7 9,7M19,12C22,15 15,21 15,15C15,13 17,10.5 19,12Z"; +var mdiHistory = "M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3"; +var mdiHockeyPuck = "M12,5C6.5,5 2,6.57 2,8.5C2,10.43 6.5,12 12,12C17.5,12 22,10.43 22,8.5C22,6.57 17.5,5 12,5M2,11.76V16.5C2,18.43 6.5,20 12,20C17.5,20 22,18.43 22,16.5V11.76C21.33,12.22 20.58,12.57 19.73,12.86C17.62,13.6 14.95,14 12,14C9.05,14 6.38,13.6 4.27,12.86C3.42,12.57 2.67,12.22 2,11.76Z"; +var mdiHockeySticks = "M7.58,3L5.05,4.61L9.04,10.87L10.82,8.08L7.58,3M16.43,3L7.5,17H2V21H8.5L18.96,4.61L16.43,3M14.97,14.59L13.19,17.38L15.5,21H22V17H16.5L14.97,14.59Z"; +var mdiHololens = "M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z"; +var mdiHome = "M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"; +var mdiHomeAccount = "M12,3L2,12H5V20H19V12H22L12,3M12,8.75A2.25,2.25 0 0,1 14.25,11A2.25,2.25 0 0,1 12,13.25A2.25,2.25 0 0,1 9.75,11A2.25,2.25 0 0,1 12,8.75M12,15C13.5,15 16.5,15.75 16.5,17.25V18H7.5V17.25C7.5,15.75 10.5,15 12,15Z"; +var mdiHomeAlert = "M12 3L2 12H5V20H19V12H22L12 3M13 18H11V16H13V18M13 14H11V8H13V14Z"; +var mdiHomeAlertOutline = "M12 5.7L17 10.2V18H7V10.2L12 5.7M19 20V12H22L12 3L2 12H5V20M13 8H11V13H13V8M13 15H11V17H13V15"; +var mdiHomeAnalytics = "M12,3L2,12H5V20H19V12H22M9,18H7V12H9M13,18H11V10H13M17,18H15V14H17"; +var mdiHomeAssistant = "M21.8,13H20V21H13V17.67L15.79,14.88L16.5,15C17.66,15 18.6,14.06 18.6,12.9C18.6,11.74 17.66,10.8 16.5,10.8A2.1,2.1 0 0,0 14.4,12.9L14.5,13.61L13,15.13V9.65C13.66,9.29 14.1,8.6 14.1,7.8A2.1,2.1 0 0,0 12,5.7A2.1,2.1 0 0,0 9.9,7.8C9.9,8.6 10.34,9.29 11,9.65V15.13L9.5,13.61L9.6,12.9A2.1,2.1 0 0,0 7.5,10.8A2.1,2.1 0 0,0 5.4,12.9A2.1,2.1 0 0,0 7.5,15L8.21,14.88L11,17.67V21H4V13H2.25C1.83,13 1.42,13 1.42,12.79C1.43,12.57 1.85,12.15 2.28,11.72L11,3C11.33,2.67 11.67,2.33 12,2.33C12.33,2.33 12.67,2.67 13,3L17,7V6H19V9L21.78,11.78C22.18,12.18 22.59,12.59 22.6,12.8C22.6,13 22.2,13 21.8,13M7.5,12A0.9,0.9 0 0,1 8.4,12.9A0.9,0.9 0 0,1 7.5,13.8A0.9,0.9 0 0,1 6.6,12.9A0.9,0.9 0 0,1 7.5,12M16.5,12C17,12 17.4,12.4 17.4,12.9C17.4,13.4 17,13.8 16.5,13.8A0.9,0.9 0 0,1 15.6,12.9A0.9,0.9 0 0,1 16.5,12M12,6.9C12.5,6.9 12.9,7.3 12.9,7.8C12.9,8.3 12.5,8.7 12,8.7C11.5,8.7 11.1,8.3 11.1,7.8C11.1,7.3 11.5,6.9 12,6.9Z"; +var mdiHomeAutomation = "M12,3L2,12H5V20H19V12H22L12,3M12,8.5C14.34,8.5 16.46,9.43 18,10.94L16.8,12.12C15.58,10.91 13.88,10.17 12,10.17C10.12,10.17 8.42,10.91 7.2,12.12L6,10.94C7.54,9.43 9.66,8.5 12,8.5M12,11.83C13.4,11.83 14.67,12.39 15.6,13.3L14.4,14.47C13.79,13.87 12.94,13.5 12,13.5C11.06,13.5 10.21,13.87 9.6,14.47L8.4,13.3C9.33,12.39 10.6,11.83 12,11.83M12,15.17C12.94,15.17 13.7,15.91 13.7,16.83C13.7,17.75 12.94,18.5 12,18.5C11.06,18.5 10.3,17.75 10.3,16.83C10.3,15.91 11.06,15.17 12,15.17Z"; +var mdiHomeCircle = "M19.07,4.93C17.22,3 14.66,1.96 12,2C9.34,1.96 6.79,3 4.94,4.93C3,6.78 1.96,9.34 2,12C1.96,14.66 3,17.21 4.93,19.06C6.78,21 9.34,22.04 12,22C14.66,22.04 17.21,21 19.06,19.07C21,17.22 22.04,14.66 22,12C22.04,9.34 21,6.78 19.07,4.93M17,12V18H13.5V13H10.5V18H7V12H5L12,5L19.5,12H17Z"; +var mdiHomeCircleOutline = "M12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12 16.4 20 12 20M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M11 14H13V17H16V12H18L12 7L6 12H8V17H11V14"; +var mdiHomeCity = "M0,21V10L7.5,5L15,10V21H10V14H5V21H0M24,2V21H17V8.93L16,8.27V6H14V6.93L10,4.27V2H24M21,14H19V16H21V14M21,10H19V12H21V10M21,6H19V8H21V6Z"; +var mdiHomeCityOutline = "M10,2V4.26L12,5.59V4H22V19H17V21H24V2H10M7.5,5L0,10V21H15V10L7.5,5M14,6V6.93L15.61,8H16V6H14M18,6V8H20V6H18M7.5,7.5L13,11V19H10V13H5V19H2V11L7.5,7.5M18,10V12H20V10H18M18,14V16H20V14H18Z"; +var mdiHomeCurrencyUsd = "M12,3L22,12H19V20H5V12H2L12,3M9.22,8.93C8.75,9.4 8.5,10.03 8.5,10.75C8.5,12.43 10.54,13.07 11.76,13.46C13.26,13.93 13.47,14.21 13.5,14.25C13.5,15 12.15,15 12,15V15C11.37,15 11.03,14.88 10.86,14.78C10.67,14.67 10.5,14.5 10.5,14H8.5C8.5,15.43 9.24,16.16 9.85,16.5C10.18,16.7 10.57,16.84 11,16.92V18H13V16.91C14.53,16.61 15.5,15.62 15.5,14.25C15.5,12.67 13.88,12.03 12.36,11.55C10.8,11.06 10.53,10.77 10.5,10.75C10.5,10.5 10.57,10.41 10.64,10.34C10.85,10.13 11.36,10 12,10V10C12.68,10 13.5,10.13 13.5,10.75H15.5C15.5,9.34 14.56,8.37 13,8.09V7H11V8.08C10.26,8.21 9.65,8.5 9.22,8.93Z"; +var mdiHomeEdit = "M12 3L2 12H5V20H10V14H14V15.11L19.43 9.68L12 3M21.04 11.14C20.9 11.14 20.76 11.2 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.91 13.14 22.91 12.79 22.7 12.58L21.42 11.3C21.32 11.2 21.18 11.14 21.04 11.14M19.06 12.88L13 18.94V21H15.06L21.11 14.93L19.06 12.88Z"; +var mdiHomeEditOutline = "M12 3L2 12H5V20H11V14H13V16.11L15 14.11V12H9V18H7V10.19L12 5.69L17 10.19V12.11L19.43 9.68L12 3M21.04 11.14C20.9 11.14 20.76 11.2 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.91 13.14 22.91 12.79 22.7 12.58L21.42 11.3C21.32 11.2 21.18 11.14 21.04 11.14M19.06 12.88L13 18.94V21H15.06L21.11 14.93L19.06 12.88Z"; +var mdiHomeExportOutline = "M24 13L20 9V12H11V14H20V17M18 16V21H2V12H0L10 2L18 10H15L10 5L4 11V19H16V16H18Z"; +var mdiHomeFlood = "M5,11H2L12,2L22,11H19V15.92C17.95,15.75 16.93,15.32 16,14.67C15.37,15.11 14.7,15.43 14,15.65V13H10V15.65C9.3,15.43 8.63,15.11 8,14.67C7.07,15.32 6.05,15.75 5,15.92M20,18C18.61,18 17.22,17.53 16,16.67C13.56,18.38 10.44,18.38 8,16.67C6.78,17.53 5.39,18 4,18H2V22H22V18"; +var mdiHomeFloor0 = "M11,10H13V16H11V10M22,12H19V20H5V12H2L12,3L22,12M15,10A2,2 0 0,0 13,8H11A2,2 0 0,0 9,10V16A2,2 0 0,0 11,18H13A2,2 0 0,0 15,16V10Z"; +var mdiHomeFloor1 = "M12,3L2,12H5V20H19V12H22L12,3M10,8H14V18H12V10H10V8Z"; +var mdiHomeFloor2 = "M12,3L2,12H5V20H19V12H22L12,3M9,8H13A2,2 0 0,1 15,10V12A2,2 0 0,1 13,14H11V16H15V18H9V14A2,2 0 0,1 11,12H13V10H9V8Z"; +var mdiHomeFloor3 = "M12,3L22,12H19V20H5V12H2L12,3M15,11.5V10C15,8.89 14.1,8 13,8H9V10H13V12H11V14H13V16H9V18H13A2,2 0 0,0 15,16V14.5A1.5,1.5 0 0,0 13.5,13A1.5,1.5 0 0,0 15,11.5Z"; +var mdiHomeFloorA = "M12,3L2,12H5V20H19V12H22L12,3M11,8H13A2,2 0 0,1 15,10V18H13V15H11V18H9V10C9,8.89 9.9,8 11,8M11,10V13H13V10H11Z"; +var mdiHomeFloorB = "M12,3L2,12H5V20H19V12H22L12,3M9,8H13A2,2 0 0,1 15,10V11.5A1.5,1.5 0 0,1 13.5,13A1.5,1.5 0 0,1 15,14.5V16A2,2 0 0,1 13,18H9V8M11,10V12H13V10H11M11,14V16H13V14H11Z"; +var mdiHomeFloorG = "M12,3L2,12H5V20H19V12H22L12,3M11,8H15V10H11V16H13V12H15V16C15,17.11 14.1,18 13,18H11A2,2 0 0,1 9,16V10C9,8.89 9.9,8 11,8Z"; +var mdiHomeFloorL = "M12,3L2,12H5V20H19V12H22L12,3M9,8H11V16H15V18H9V8Z"; +var mdiHomeFloorNegative1 = "M12,3L2,12H5V20H19V12H22L12,3M11,15H7V13H11V15M15,18H13V10H11V8H15V18Z"; +var mdiHomeGroup = "M17,16H15V22H12V17H8V22H5V16H3L10,10L17,16M6,2L10,6H9V9H7V6H5V9H3V6H2L6,2M18,3L23,8H22V12H19V9H17V12H15.34L14,10.87V8H13L18,3Z"; +var mdiHomeHeart = "M2,12L12,3L22,12H19V20H5V12H2M12,18L12.72,17.34C15.3,15 17,13.46 17,11.57C17,10.03 15.79,8.82 14.25,8.82C13.38,8.82 12.55,9.23 12,9.87C11.45,9.23 10.62,8.82 9.75,8.82C8.21,8.82 7,10.03 7,11.57C7,13.46 8.7,15 11.28,17.34L12,18Z"; +var mdiHomeImportOutline = "M15 13L11 9V12H2V14H11V17M22 12H20V21H4V16H6V19H18V11L12 5L7 10H4L12 2L22 12Z"; +var mdiHomeLightbulb = "M12 3L2 12H5V20H19V12H22M13 18H11V17H13M13.5 14.58V16H10.5V14.58A3 3 0 1 1 13.5 14.58Z"; +var mdiHomeLightbulbOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M13.5 14.58V16H10.5V14.58C9.07 13.75 8.57 11.92 9.4 10.5C10.23 9.05 12.07 8.56 13.5 9.38S15.43 12.05 14.6 13.5C14.34 13.94 13.96 14.32 13.5 14.58M13 17H11V18H13V17Z"; +var mdiHomeLock = "M12,3L2,12H5V20H19V12H22L12,3M12,9A3,3 0 0,1 15,12V13H16V17H8V13H9V12A3,3 0 0,1 12,9M12,11A1,1 0 0,0 11,12V13H13V12C13,11.5 12.6,11 12,11Z"; +var mdiHomeLockOpen = "M12,3L2,12H5V20H19V12H22L12,3M12,8A3,3 0 0,1 15,11H13A1,1 0 0,0 12,10A1,1 0 0,0 11,11V13H16V17H8V13H9V11A3,3 0 0,1 12,8Z"; +var mdiHomeMapMarker = "M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z"; +var mdiHomeMinus = "M12,3L2,12H5V20H19V12H22L12,3M16,13V15H8V13H16Z"; +var mdiHomeMinusOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M16 13V15H8V13H16Z"; +var mdiHomeModern = "M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z"; +var mdiHomeOutline = "M12 5.69L17 10.19V18H15V12H9V18H7V10.19L12 5.69M12 3L2 12H5V20H11V14H13V20H19V12H22L12 3Z"; +var mdiHomePlus = "M12,3L2,12H5V20H19V12H22L12,3M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z"; +var mdiHomePlusOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M11 10H13V13H16V15H13V18H11V15H8V13H11V10Z"; +var mdiHomeRemove = "M12 3L2 12H5V20H19V12H22L12 3M15.54 16.12L14.12 17.54L12 15.41L9.88 17.54L8.47 16.12L10.59 14L8.47 11.88L9.88 10.47L12 12.59L14.12 10.47L15.54 11.88L13.41 14L15.54 16.12Z"; +var mdiHomeRemoveOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M14.12 10.46L15.54 11.88L13.41 14L15.54 16.12L14.12 17.54L12 15.41L9.88 17.54L8.47 16.12L10.59 14L8.47 11.88L9.88 10.47L12 12.59L14.12 10.46Z"; +var mdiHomeRoof = "M19 16H22L12 7L2 16H5L12 9.69L19 16M7 8.81V7H4V11.5L7 8.81Z"; +var mdiHomeSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M5 20V12H2L12 3L22 12H20.18C19 10.77 17.34 10 15.5 10C11.92 10 9 12.92 9 16.5C9 17.79 9.38 19 10.03 20H5Z"; +var mdiHomeSearchOutline = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M5 20V12H2L12 3L22 12H20.18C19.33 11.11 18.23 10.47 17 10.18L12 5.69L7 10.19V18H9.18C9.35 18.72 9.64 19.39 10.03 20H5Z"; +var mdiHomeThermometer = "M12 3L2 12H5V20H19V12H22L12 3M12 8A1 1 0 0 1 13 9V14.27A2 2 0 0 1 14 16A2 2 0 0 1 12 18A2 2 0 0 1 10 16A2 2 0 0 1 11 14.27V9A1 1 0 0 1 12 8Z"; +var mdiHomeThermometerOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M12 8C11.45 8 11 8.45 11 9V13.27C10.38 13.63 10 14.29 10 15C10 16.11 10.9 17 12 17S14 16.11 14 15C14 14.29 13.62 13.63 13 13.27V9C13 8.45 12.55 8 12 8Z"; +var mdiHomeVariant = "M12,3L20,9V21H15V14H9V21H4V9L12,3Z"; +var mdiHomeVariantOutline = "M9,13H15V19H18V10L12,5.5L6,10V19H9V13M4,21V9L12,3L20,9V21H4Z"; +var mdiHook = "M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z"; +var mdiHookOff = "M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z"; +var mdiHops = "M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z"; +var mdiHorizontalRotateClockwise = "M12 14L8 10L4 14H7.1C7.56 18.56 9.58 22 12 22S16.44 18.56 16.9 14H14.91C14.57 17.45 13.4 20 12 20S9.43 17.45 9.09 14H12M12 4C13.4 4 14.57 6.55 14.91 10H16.9C16.44 5.44 14.42 2 12 2C9.84 2 8 4.74 7.3 8.58L8 7.88L9.21 9.08C9.64 6.11 10.73 4 12 4M22 13V11H11L13 13H22M2 13H3L5 11H2V13Z"; +var mdiHorizontalRotateCounterclockwise = "M12 10H9.09C9.43 6.55 10.6 4 12 4S14.57 6.55 14.91 10H16.9C16.44 5.44 14.42 2 12 2S7.56 5.44 7.1 10H4L8 14L12 10M12 20C10.73 20 9.64 17.89 9.21 14.92L8 16.12L7.3 15.42C8 19.26 9.84 22 12 22C14.42 22 16.44 18.56 16.9 14H14.91C14.57 17.45 13.4 20 12 20M22 11H13L11 13H22V11M2 13H5L3 11H2V13"; +var mdiHorse = "M22 6V9.5L20.5 10L18.96 7.54C18.83 7.33 18.5 7.42 18.5 7.67V11.25C18.5 12.23 18.11 13.11 17.5 13.78V21H15V15C14.92 15 14.84 15 14.75 15C14.54 15 14.33 14.97 14.13 14.94L9.69 14.2L8.57 16.21L9.53 21H7L6 16.25C5.97 15.95 6 15.65 6.16 15.39L7.18 13.58C6.2 13.03 5.53 12 5.5 10.81C5.46 10.96 5.44 11.18 5.47 11.5C5.5 11.94 5.61 12.59 5.54 13.31C5.5 14.03 5.17 14.77 4.75 15.26C4.32 15.75 3.85 16.09 3.35 16.35L2.65 15.65C2.84 15.18 3.03 14.76 3.07 14.37C3.13 14 3.06 13.7 2.95 13.43L2.42 12.3C2.21 11.79 1.95 11.05 2 10.18C2.03 9.33 2.5 8.22 3.39 7.61C4.29 7 5.26 6.92 6.05 7.08C6.55 7.18 7.06 7.42 7.5 7.76C7.87 7.59 8.3 7.5 8.75 7.5H14.5V7C14.5 4.79 16.29 3 18.5 3H22L21.11 4.34C21.65 4.7 22 5.31 22 6Z"; +var mdiHorseHuman = "M10 3.5C10 2.67 10.67 2 11.5 2S13 2.67 13 3.5 12.33 5 11.5 5 10 4.33 10 3.5M22 8V11.5L20.97 11.85C20.8 13.06 19.76 14 18.5 14H18.42C18.28 14.68 17.95 15.29 17.5 15.78V22H15V17C14.92 17 14.84 17 14.75 17C14.54 17 14.33 16.97 14.13 16.94L9.69 16.2L8.57 18.21L9.32 22H6.78L6 18.25C5.97 17.95 6 17.65 6.16 17.39L7.18 15.58C6.2 15.03 5.53 14 5.5 12.81C5.46 12.96 5.44 13.18 5.47 13.5C5.5 13.94 5.61 14.59 5.54 15.31C5.5 16.03 5.17 16.77 4.75 17.26C4.32 17.75 3.85 18.09 3.35 18.35L2.65 17.65C2.84 17.18 3.03 16.76 3.07 16.37C3.13 16 3.06 15.7 2.95 15.43L2.42 14.3C2.21 13.79 1.95 13.05 2 12.18C2.03 11.33 2.5 10.22 3.39 9.61C4.29 9 5.26 8.91 6.05 9.08C6.55 9.18 7.06 9.42 7.5 9.76C7.87 9.59 8.3 9.5 8.75 9.5H9V8.11C9 7.11 9.68 6.19 10.66 6.03C11.92 5.82 13 6.79 13 8V9.5H14.5V9C14.5 6.79 16.29 5 18.5 5H22L21.11 6.34C21.65 6.7 22 7.31 22 8M20 11.2L18.96 9.54C18.83 9.33 18.5 9.42 18.5 9.67V13C19.33 13 20 12.33 20 11.5V11.2Z"; +var mdiHorseVariant = "M20 8V16L17 17L13.91 11.5C13.65 11.04 12.92 11.27 13 11.81L14 21L4 17L5.15 8.94C5.64 5.53 8.56 3 12 3H20L18.42 5.37C19.36 5.88 20 6.86 20 8Z"; +var mdiHorseshoe = "M19,4H20V1H16V4C16,4 18,8 18,12C18,16 16,19 12,19C8,19 6,16 6,12C6,8 8,4 8,4V1H4V4H5C5,4 2,8 2,14C2,19 7,23 12,23C17,23 22,19 22,14C22,8 19,4 19,4M4,13C3.4,13 3,12.6 3,12C3,11.4 3.4,11 4,11C4.6,11 5,11.4 5,12C5,12.6 4.6,13 4,13M6,19C5.4,19 5,18.6 5,18C5,17.4 5.4,17 6,17C6.6,17 7,17.4 7,18C7,18.6 6.6,19 6,19M12,22C11.4,22 11,21.6 11,21C11,20.4 11.4,20 12,20C12.6,20 13,20.4 13,21C13,21.6 12.6,22 12,22M18,19C17.4,19 17,18.6 17,18C17,17.4 17.4,17 18,17C18.6,17 19,17.4 19,18C19,18.6 18.6,19 18,19M20,13C19.4,13 19,12.6 19,12C19,11.4 19.4,11 20,11C20.6,11 21,11.4 21,12C21,12.6 20.6,13 20,13Z"; +var mdiHospital = "M18 14H14V18H10V14H6V10H10V6H14V10H18"; +var mdiHospitalBox = "M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiHospitalBoxOutline = "M18 14H14V18H10V14H6V10H10V6H14V10H18M20 2H4C2.9 2 2 2.9 2 4V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M20 20H4V4H20V20Z"; +var mdiHospitalBuilding = "M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z"; +var mdiHospitalMarker = "M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z"; +var mdiHotTub = "M7,4A2,2 0 0,1 9,6A2,2 0 0,1 7,8A2,2 0 0,1 5,6A2,2 0 0,1 7,4M11.15,12H22V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12H5V11.25C5,10 6,9 7.25,9H7.28C7.62,9 7.95,9.09 8.24,9.23C8.5,9.35 8.74,9.5 8.93,9.73L10.33,11.28C10.56,11.54 10.84,11.78 11.15,12M7,20V14H5V20H7M11,20V14H9V20H11M15,20V14H13V20H15M19,20V14H17V20H19M18.65,5.86C19.68,6.86 20.16,8.21 19.95,9.57L19.89,10H18L18.09,9.41C18.24,8.62 18,7.83 17.42,7.21L17.35,7.15C16.32,6.14 15.85,4.79 16.05,3.43L16.11,3H18L17.91,3.59C17.76,4.38 18,5.17 18.58,5.79L18.65,5.86M14.65,5.86C15.68,6.86 16.16,8.21 15.95,9.57L15.89,10H14L14.09,9.41C14.24,8.62 14,7.83 13.42,7.21L13.35,7.15C12.32,6.14 11.85,4.79 12.05,3.43L12.11,3H14L13.91,3.59C13.76,4.38 14,5.17 14.58,5.79L14.65,5.86Z"; +var mdiHours24 = "M13 2.05V4.07C16.95 4.56 20 7.92 20 12C20 15.21 18.08 18 15.28 19.28L13 17V22H18L16.78 20.78C19.91 19.07 22 15.76 22 12C22 6.82 18.05 2.55 13 2.05M11 2C9.05 2.2 7.2 2.96 5.68 4.21L7.1 5.63C8.23 4.75 9.58 4.2 11 4V2M4.2 5.68C2.96 7.2 2.2 9.05 2 11H4C4.19 9.58 4.75 8.23 5.63 7.1L4.2 5.68M6 8V10H9V11H8C6.9 11 6 11.9 6 13V16H11V14H8V13H9C10.11 13 11 12.11 11 11V10C11 8.9 10.11 8 9 8H6M12 8V13H15V16H17V13H18V11H17V8H15V11H14V8H12M2 13C2.2 14.95 2.97 16.8 4.22 18.32L5.64 16.9C4.76 15.77 4.2 14.42 4 13H2M7.11 18.37L5.68 19.79C7.2 21.03 9.05 21.8 11 22V20C9.58 19.81 8.24 19.25 7.11 18.37Z"; +var mdiHubspot = "M17.1,8.6V6.2C17.7,5.9 18.2,5.3 18.2,4.6V4.5C18.2,3.5 17.4,2.7 16.4,2.7H16.3C15.3,2.7 14.5,3.5 14.5,4.5V4.6C14.5,5.3 14.9,5.9 15.6,6.2V8.6C14.7,8.7 13.8,9.1 13.1,9.7L6.5,4.6C6.8,3.5 6.1,2.3 5,2.1C3.9,1.9 2.8,2.4 2.5,3.5C2.2,4.6 2.9,5.8 4,6.1C4.5,6.2 5.1,6.2 5.6,5.9L12,10.9C10.8,12.7 10.8,15 12.1,16.8L10.1,18.8C9.9,18.8 9.8,18.7 9.6,18.7C8.7,18.7 7.9,19.5 7.9,20.4C7.9,21.3 8.7,22 9.6,22C10.5,22 11.3,21.2 11.3,20.3V20.3C11.3,20.1 11.3,20 11.2,19.8L13.1,17.9C15.4,19.6 18.7,19.2 20.4,16.9C22.1,14.6 21.7,11.3 19.4,9.6C18.8,9.1 18,8.7 17.1,8.6M16.3,16.4C14.8,16.4 13.6,15.2 13.6,13.7C13.6,12.2 14.8,11 16.3,11C17.8,11 19,12.2 19,13.7C19,15.2 17.8,16.4 16.3,16.4"; +var mdiHulu = "M19.5,12.8V22H14.7V13.9C14.7,13.2 14.1,12.6 13.4,12.6H10.5C9.8,12.6 9.2,13.2 9.2,13.9V22H4.5V2H9.3V8.4C9.6,8.3 9.9,8.2 10.2,8.2H15C17.5,8.2 19.5,10.3 19.5,12.8Z"; +var mdiHuman = "M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z"; +var mdiHumanBabyChangingTable = "M6.5 6.08C5.72 6.12 5 6.62 4.72 7.4L3 12.13V22H7V12.84L8.42 8.94L10.7 10H14V8H11.15L7.29 6.2C7.03 6.11 6.76 6.07 6.5 6.08M9 17H21V19H9M10 3.5A2 2 0 0 1 8 5.5A2 2 0 0 1 6 3.5A2 2 0 0 1 8 1.5A2 2 0 0 1 10 3.5M21 14.5A1.5 1.5 0 0 1 19.5 16A1.5 1.5 0 0 1 18 14.5A1.5 1.5 0 0 1 19.5 13A1.5 1.5 0 0 1 21 14.5M9 11V13H11V14C11 15.11 11.89 16 13 16H15C16.11 16 17 15.11 17 14V11H15V13H13V12A1 1 0 0 0 12 11Z"; +var mdiHumanCane = "M18 12.24V22H17.06V12.24C17.06 12.09 17 12 16.93 11.89C16.84 11.8 16.74 11.76 16.62 11.76C16.47 11.76 16.36 11.8 16.27 11.89C16.18 12 16.14 12.1 16.14 12.24V13.16H15.23V12.5C14.53 12.33 13.9 12.04 13.35 11.63C12.8 11.22 12.34 10.74 11.96 10.19L11.61 11.39C11.5 11.81 11.5 12.24 11.5 12.68L11.5 13L11.5 13.33L13.35 15.94V22H11.5V17.34L9.82 15L9.65 18.25L6.86 22L5.38 20.87L7.77 17.64V12.68C7.77 12.15 7.82 11.63 7.91 11.11L8.25 9.54L6.86 10.32V13.63H5V9.23L10 6.4C10.29 6.26 10.59 6.18 10.91 6.18C11.23 6.18 11.54 6.27 11.83 6.44C12.15 6.62 12.39 6.88 12.57 7.23L13.31 8.8C13.6 9.38 14.04 9.87 14.64 10.26C15.23 10.65 15.89 10.85 16.62 10.85C17 10.85 17.32 11 17.6 11.24C17.88 11.5 18 11.83 18 12.24M12 2C13.11 2 14 2.9 14 4C14 5.11 13.11 6 12 6C10.9 6 10 5.11 10 4C10 2.9 10.9 2 12 2Z"; +var mdiHumanCapacityDecrease = "M16 4C16 2.9 16.9 2 18 2S20 2.9 20 4 19.1 6 18 6 16 5.1 16 4M20.78 7.58C19.93 7.21 19 7 18 7C17.33 7 16.69 7.1 16.08 7.28C16.66 7.83 17 8.6 17 9.43V10H22V9.43C22 8.62 21.5 7.9 20.78 7.58M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M7.92 7.28C7.31 7.1 6.67 7 6 7C5 7 4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H7V9.43C7 8.6 7.34 7.83 7.92 7.28M10 4C10 2.9 10.9 2 12 2S14 2.9 14 4 13.1 6 12 6 10 5.1 10 4M16 10H8V9.43C8 8.62 8.5 7.9 9.22 7.58C10.07 7.21 11 7 12 7C13 7 13.93 7.21 14.78 7.58C15.5 7.9 16 8.62 16 9.43V10M15 16C15 14.9 15.9 14 17 14S19 14.9 19 16 18.1 18 17 18 15 17.1 15 16M21 22H13V21.43C13 20.62 13.5 19.9 14.22 19.58C15.07 19.21 16 19 17 19C18 19 18.93 19.21 19.78 19.58C20.5 19.9 21 20.62 21 21.43V22M5 16C5 14.9 5.9 14 7 14S9 14.9 9 16 8.1 18 7 18 5 17.1 5 16M11 22H3V21.43C3 20.62 3.5 19.9 4.22 19.58C5.07 19.21 6 19 7 19C8 19 8.93 19.21 9.78 19.58C10.5 19.9 11 20.62 11 21.43V22M12.75 13V11H11.25V13H9L12 16L15 13H12.75Z"; +var mdiHumanCapacityIncrease = "M16 4C16 2.9 16.9 2 18 2C19.1 2 20 2.9 20 4C20 5.1 19.1 6 18 6C16.9 6 16 5.1 16 4M20.78 7.58C19.93 7.21 19 7 18 7C17.33 7 16.69 7.1 16.08 7.28C16.66 7.83 17 8.6 17 9.43V10H22V9.43C22 8.62 21.5 7.9 20.78 7.58M6 6C7.1 6 8 5.1 8 4C8 2.9 7.1 2 6 2C4.9 2 4 2.9 4 4C4 5.1 4.9 6 6 6M7.92 7.28C7.31 7.1 6.67 7 6 7C5 7 4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H7V9.43C7 8.6 7.34 7.83 7.92 7.28M10 4C10 2.9 10.9 2 12 2C13.1 2 14 2.9 14 4C14 5.1 13.1 6 12 6C10.9 6 10 5.1 10 4M16 10H8V9.43C8 8.62 8.5 7.9 9.22 7.58C10.07 7.21 11 7 12 7C13 7 13.93 7.21 14.78 7.58C15.5 7.9 16 8.62 16 9.43M15 16C15 14.9 15.9 14 17 14C18.1 14 19 14.9 19 16C19 17.1 18.1 18 17 18C15.9 18 15 17.1 15 16M21 22H13V21.43C13 20.62 13.5 19.9 14.22 19.58C15.07 19.21 16 19 17 19C18 19 18.93 19.21 19.78 19.58C20.5 19.9 21 20.62 21 21.43M5 16C5 14.9 5.9 14 7 14C8.1 14 9 14.9 9 16C9 17.1 8.1 18 7 18C5.9 18 5 17.1 5 16M11 22H3V21.43C3 20.62 3.5 19.9 4.22 19.58C5.07 19.21 6 19 7 19C8 19 8.93 19.21 9.78 19.58C10.5 19.9 11 20.62 11 21.43M12.75 14V16H11.25V14H9L12 11L15 14Z"; +var mdiHumanChild = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z"; +var mdiHumanEdit = "M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M21 9H15V16L13 18V16H11V22H9V9H3V7H21V9M12 2C13.1 2 14 2.9 14 4C14 5.1 13.1 6 12 6C10.9 6 10 5.1 10 4C10 2.9 10.9 2 12 2Z"; +var mdiHumanFemale = "M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z"; +var mdiHumanFemaleBoy = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16H9V22H6M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M13.5,15H19.5V19H18V22H15V19H13.5V15Z"; +var mdiHumanFemaleDance = "M17 17H15V23H13V17H10.88L9.34 18.93L11.71 21.29L10.29 22.71L7.93 20.34C7.58 20 7.38 19.53 7.35 19.04C7.32 18.55 7.47 18.06 7.78 17.68L8.32 17H7L9 13V10C8.38 10.47 7.88 11.07 7.53 11.76C7.18 12.46 7 13.22 7 14H5C5 12.14 5.74 10.36 7.05 9.05C8.36 7.74 10.14 7 12 7C13.33 7 14.6 6.47 15.54 5.54C16.47 4.6 17 3.33 17 2H19C19 3.32 18.62 4.62 17.91 5.73C17.2 6.85 16.2 7.74 15 8.31V13L17 17M14 4C14 4.4 13.88 4.78 13.66 5.11C13.44 5.44 13.13 5.7 12.77 5.85C12.4 6 12 6.04 11.61 5.96C11.22 5.88 10.87 5.69 10.59 5.41C10.31 5.13 10.12 4.78 10.04 4.39C9.96 4 10 3.6 10.15 3.24C10.3 2.87 10.56 2.56 10.89 2.34C11.22 2.12 11.6 2 12 2C12.53 2 13.04 2.21 13.41 2.59C13.79 2.96 14 3.47 14 4Z"; +var mdiHumanFemaleFemale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16L14.6,8.4C14.9,7.6 15.6,7 16.5,7C17.4,7 18.2,7.6 18.4,8.4L21,16H18V22H15V16H12L9,16V22H6M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2Z"; +var mdiHumanFemaleGirl = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16H9V22H6M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M15,15H18L19.5,19H18V22H15V19H13.5L15,15Z"; +var mdiHumanGreeting = "M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z"; +var mdiHumanGreetingProximity = "M11 14H9C9 9.03 13.03 5 18 5V7C14.13 7 11 10.13 11 14M18 11V9C15.24 9 13 11.24 13 14H15C15 12.34 16.34 11 18 11M7 4C7 2.89 6.11 2 5 2S3 2.89 3 4 3.89 6 5 6 7 5.11 7 4M11.45 4.5H9.45C9.21 5.92 8 7 6.5 7H3.5C2.67 7 2 7.67 2 8.5V11H8V8.74C9.86 8.15 11.25 6.5 11.45 4.5M19 17C20.11 17 21 16.11 21 15S20.11 13 19 13 17 13.89 17 15 17.89 17 19 17M20.5 18H17.5C16 18 14.79 16.92 14.55 15.5H12.55C12.75 17.5 14.14 19.15 16 19.74V22H22V19.5C22 18.67 21.33 18 20.5 18Z"; +var mdiHumanHandsdown = "M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6"; +var mdiHumanHandsup = "M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z"; +var mdiHumanMale = "M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z"; +var mdiHumanMaleBoy = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M13.5,15H19.5V19H18V22H15V19H13.5V15Z"; +var mdiHumanMaleChild = "M7 2C5.9 2 5 2.9 5 4S5.9 6 7 6 9 5.11 9 4 8.11 2 7 2M5 7C3.89 7 3 7.89 3 9V15H5V22H10V11.6L12.53 16H14.97L16 14.66V22H20V17H21V14C21 12.89 20.11 12 19 12H16.5C15.9 12 15.37 12.26 15 12.68C14.67 13.1 14.32 13.56 14 14H13.69L10 7.66C9.84 7.38 9.22 7 8.5 7H5M18 8C17.17 8 16.5 8.67 16.5 9.5S17.17 11 18 11 19.5 10.33 19.5 9.5 18.83 8 18 8Z"; +var mdiHumanMaleFemale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z"; +var mdiHumanMaleGirl = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M15,15H18L19.5,19H18V22H15V19H13.5L15,15Z"; +var mdiHumanMaleHeight = "M7,2C8.78,2 9.67,4.16 8.42,5.42C7.16,6.67 5,5.78 5,4A2,2 0 0,1 7,2M5.5,7H8.5A2,2 0 0,1 10.5,9V14.5H9V22H5V14.5H3.5V9A2,2 0 0,1 5.5,7M21,8H15V10H21M21,11H18V13H21M21,2H15V4H21M21,5H18V7H21M21,14H15V16H21M21,20H15V22H21M21,17H18V19H21"; +var mdiHumanMaleHeightVariant = "M7,2C8.78,2 9.67,4.16 8.42,5.42C7.16,6.67 5,5.78 5,4A2,2 0 0,1 7,2M5.5,7H8.5A2,2 0 0,1 10.5,9V14.5H9V22H5V14.5H3.5V9A2,2 0 0,1 5.5,7M19,8H21L18,4L15,8H17V16H15L18,20L21,16H19M22,2H14V4H22M22,20H14V22H22"; +var mdiHumanMaleMale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,7H18A2,2 0 0,1 20,9V14.5H18.5V22H14.5V14.5H13V9A2,2 0 0,1 15,7Z"; +var mdiHumanPregnant = "M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z"; +var mdiHumanQueue = "M5 6C3.9 6 3 6.9 3 8S3.9 10 5 10 7 9.11 7 8 6.11 6 5 6M12 4C10.9 4 10 4.89 10 6S10.9 8 12 8 14 7.11 14 6 13.11 4 12 4M19 2C17.9 2 17 2.9 17 4S17.9 6 19 6 21 5.11 21 4 20.11 2 19 2M3.5 11C2.67 11 2 11.67 2 12.5V17H3V22H7V17H8V12.5C8 11.67 7.33 11 6.5 11H3.5M10.5 9C9.67 9 9 9.67 9 10.5V15H10V20H14V15H15V10.5C15 9.67 14.33 9 13.5 9H10.5M17.5 7C16.67 7 16 7.67 16 8.5V13H17V18H21V13H22V8.5C22 7.67 21.33 7 20.5 7H17.5Z"; +var mdiHumanScooter = "M16.5 2.25C17.33 2.25 18 2.92 18 3.75C18 4.58 17.33 5.25 16.5 5.25C15.67 5.25 15 4.58 15 3.75C15 2.92 15.67 2.25 16.5 2.25M20 18C21.11 18 22 18.9 22 20C22 21.11 21.11 22 20 22C19.26 22 18.61 21.6 18.27 21H8.73C8.39 21.6 7.74 22 7 22C5.9 22 5 21.11 5 20C5 18.9 5.9 18 7 18C7.74 18 8.39 18.4 8.73 19H13V13.5L9.73 11.23L6.77 14C6.36 14.37 5.73 14.34 5.35 13.94L2.28 10.65C1.91 10.24 1.93 9.61 2.33 9.23C2.74 8.86 3.37 8.88 3.74 9.28L6.13 11.84L13.26 5.2L13.3 5.18C13.72 4.82 14.35 4.88 14.71 5.3L16.97 8H20C20.55 8 21 8.45 21 9C21 9.55 20.55 10 20 10H16.5C16.15 10 15.85 9.82 15.67 9.56L14.17 7.77L11.64 10.13L14.57 12.18H14.57C14.83 12.36 15 12.66 15 13V19H15.61C16.04 17.13 17.63 15.7 19.58 15.5L18.81 11H20.31L21.39 17.34C20.97 17.12 20.5 17 20 17C18.69 17 17.58 17.84 17.17 19H18.27C18.61 18.4 19.26 18 20 18Z"; +var mdiHumanWheelchair = "M8.5 4A2 2 0 0 1 6.5 6A2 2 0 0 1 4.5 4A2 2 0 0 1 6.5 2A2 2 0 0 1 8.5 4M5 7C3.89 7 3 7.89 3 9V15H5V22H8.61A7 7 0 0 1 6.5 17A7 7 0 0 1 10 10.95V9C10 7.89 9.11 7 8 7M13 8V16H18.5L21.2 19.6L22.8 18.4L19.5 14H15V8M12 12.23A5 5 0 0 0 8.5 17A5 5 0 0 0 13.5 22A5 5 0 0 0 18.5 17H16.5A3 3 0 0 1 13.5 20A3 3 0 0 1 10.5 17A3 3 0 0 1 12 14.41Z"; +var mdiHumbleBundle = "M16.91,18.12C14.09,18.12 18.43,2.13 18.43,2.13H15.53C15.53,2.13 14.34,5.89 13.55,10.07H11.05C11.11,9.21 11.15,8.34 11.13,7.5C11,0.59 7,1.87 5.18,3.45C3.47,4.95 2.03,7.8 2,10C2.27,10 3.35,10 3.35,10C3.35,10 4.25,5.88 7.07,5.88C9.89,5.88 5.54,21.87 5.54,21.87H8.45C8.45,21.87 9.95,17.59 10.7,12.81L13.09,12.8C12.95,14.04 12.91,15.4 12.93,16.67C13.04,23.56 17.06,22.08 18.86,20.5C20.67,18.92 22,15.58 22,14H20.61C20.62,14.12 19.73,18.12 16.91,18.12V18.12Z"; +var mdiHvac = "M8.58 14C8.3 13.55 8.11 13.03 8.06 12.5H15.94C15.89 13.03 15.7 13.55 15.47 14H8.58M12 16C10.97 16 10.08 15.61 9.38 15H14.63C13.92 15.61 13.03 16 12 16M12 8C13.03 8 13.92 8.39 14.63 9H9.38C10.08 8.39 10.97 8 12 8M8.58 10H15.42C15.7 10.45 15.89 10.97 15.94 11.5H8.06C8.11 10.97 8.3 10.45 8.58 10M3 3V21H21V3H3M12 18C8.67 18 6 15.33 6 12S8.67 6 12 6 18 8.67 18 12 15.33 18 12 18Z"; +var mdiHvacOff = "M22.11 21.46L2.39 1.73L1.11 3L3 4.89V21H19.11L20.84 22.73L22.11 21.46M12 18C8.67 18 6 15.33 6 12C6 10.82 6.34 9.73 6.92 8.81L8.43 10.32C8.24 10.69 8.1 11.09 8.06 11.5H9.61L10.61 12.5H8.06C8.11 13.03 8.3 13.55 8.58 14H12.11L13.11 15H9.38C10.08 15.61 10.97 16 12 16C12.63 16 13.19 15.84 13.7 15.59L15.19 17.08C14.27 17.66 13.18 18 12 18M12 8C13.03 8 13.92 8.39 14.63 9H12.2L11.27 8.07C11.5 8.03 11.75 8 12 8M9.67 6.47L6.2 3H21V17.8L17.53 14.33C17.83 13.62 18 12.83 18 12C18 8.67 15.33 6 12 6C11.17 6 10.38 6.17 9.67 6.47M15.94 11.5H14.7L13.2 10H15.42C15.7 10.45 15.89 10.97 15.94 11.5Z"; +var mdiHydraulicOilLevel = "M15 18C13.34 18 12 16.66 12 15C12 13 15 9.63 15 9.63S18 13 18 15C18 16.66 16.66 18 15 18M20 4V20H10V4H8V20C8 21.11 8.89 22 10 22H20C21.11 22 22 21.11 22 20V4H20M2 19L7 14L2 9V19M16 6V2H14V6H11V8H19V6H16Z"; +var mdiHydraulicOilTemperature = "M9 18C7.34 18 6 16.66 6 15C6 13 9 9.63 9 9.63S12 13 12 15C12 16.66 10.66 18 9 18M14 4V20H4V4H2V20C2 21.11 2.89 22 4 22H14C15.11 22 16 21.11 16 20V4H14M10 6V2H8V6H5V8H13V6H10M21 17.5V5.5C21 4.67 20.33 4 19.5 4S18 4.67 18 5.5V17.5C17.37 17.97 17 18.71 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.71 21.63 18 21 17.5M20 13H19V6H20V13Z"; +var mdiHydroPower = "M17.12 3.55A2 2 0 0 0 15.2 4.95L14.4 7.5A3 3 0 0 0 13.33 7.74L11.5 5.77L10.17 4.29A2 2 0 0 0 10.05 7.12L11.86 9.09A3 3 0 0 0 11.64 9.6A3 3 0 0 0 11.53 10.13L8.92 10.71L6.96 11.15A2 2 0 0 0 9.35 12.67L11.96 12.08A3 3 0 0 0 12.7 12.89L11.9 15.44L11.3 17.35A2 2 0 0 0 13.8 16.04L14.61 13.5A3 3 0 0 0 15.68 13.26L17.5 15.23L18.83 16.7A2 2 0 0 0 18.96 13.88L17.15 11.91A3 3 0 0 0 17.36 11.4A3 3 0 0 0 17.5 10.86L20.09 10.28L22.04 9.85A2 2 0 0 0 19.66 8.33L17.05 8.91A3 3 0 0 0 16.31 8.11L17.11 5.55L17.71 3.65A2 2 0 0 0 17.12 3.55M14.56 9A1.5 1.5 0 0 1 14.95 9.07A1.5 1.5 0 0 1 15.93 10.95A1.5 1.5 0 0 1 14.05 11.93A1.5 1.5 0 0 1 13.07 10.05A1.5 1.5 0 0 1 14.55 9M8 13.67C6.78 14.53 5.39 15 4 15H2V17H4C5.37 17 6.74 16.65 8 16C8.77 16.4 9.58 16.66 10.41 16.81L10.94 15.14L11.03 14.88C9.97 14.73 8.93 14.32 8 13.67M20.45 15C20.5 15.7 20.33 16.41 19.91 17C19.93 17 19.97 17 20 17H22V15H20.45M8 17.67C6.78 18.53 5.39 19 4 19H2V21H4C5.37 21 6.74 20.65 8 20C10.5 21.3 13.5 21.3 16 20C17.26 20.65 18.62 21 20 21H22V19H20C18.61 19 17.22 18.53 16 17.67C13.56 19.38 10.44 19.38 8 17.67Z"; +var mdiIceCream = "M17.5 6.05C17.25 3.22 14.89 1 12 1S6.75 3.22 6.5 6.05C5.09 6.28 4 7.5 4 9C4 10.66 5.34 12 7 12L12 22L17 12C18.66 12 20 10.66 20 9C20 7.5 18.91 6.28 17.5 6.05M12 17.53L8.89 11.31C8.95 11.26 9 11.21 9.08 11.16C9.93 11.69 10.93 12 12 12S14.07 11.69 14.92 11.16C15 11.21 15.05 11.26 15.11 11.31L12 17.53Z"; +var mdiIceCreamOff = "M22.11 21.46L2.39 1.73L1.11 3L4.95 6.84C4.37 7.38 4 8.14 4 9C4 10.66 5.34 12 7 12L12 22L14.7 16.59L20.84 22.73L22.11 21.46M12 17.53L8.89 11.31C8.95 11.26 9 11.21 9.08 11.16C9.21 11.24 9.35 11.3 9.5 11.37L13.21 15.1L12 17.53M7.15 3.95C8.07 2.2 9.89 1 12 1C14.89 1 17.25 3.22 17.5 6.05C18.91 6.28 20 7.5 20 9C20 10.66 18.66 12 17 12L16.4 13.2L7.15 3.95Z"; +var mdiIcePop = "M18.15 14.96L9.95 18.65L5.85 9.65C7.21 9.13 8.12 7.82 8.15 6.36C8.14 5 7.36 3.76 6.15 3.15C6.54 2.8 7 2.5 7.45 2.25C9.71 1.25 12.37 2.23 13.45 4.46M13.15 18.36L14.75 21.86L17.45 20.65L15.85 17.15"; +var mdiIdCard = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.89 20 4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.11 4 20 4H4M4 6H20V10H4V6M4 12H8V14H4V12M10 12H20V14H10V12M4 16H14V18H4V16M16 16H20V18H16V16Z"; +var mdiIdentifier = "M10 7V9H9V15H10V17H6V15H7V9H6V7H10M16 7C17.11 7 18 7.9 18 9V15C18 16.11 17.11 17 16 17H12V7M16 9H14V15H16V9Z"; +var mdiIdeogramCjk = "M11 4V6H4V10H6V8H18V10H20V6H13V4M8 10V12H13.59L11.59 14H4V16H11V18H10V20H13V16H20V14H14.21L16 12.21V10Z"; +var mdiIdeogramCjkVariant = "M11 4V6H4V8H15.36C15.13 8.87 14.63 9.77 13.88 10.69C13.35 11.35 12.71 12 12 12.67C11.29 12 10.65 11.35 10.12 10.69C9.65 10.12 9.3 9.55 9.03 9H6.85C7.21 10.05 7.82 11.03 8.56 11.95C9.13 12.66 9.79 13.34 10.5 14L5.36 18.23L6.64 19.77L12 15.34L17.36 19.77L18.64 18.23L13.5 14C14.21 13.34 14.87 12.66 15.44 11.95C16.41 10.74 17.16 9.43 17.4 8H20V6H13V4Z"; +var mdiIframe = "M21,2H3A2,2 0 0,0 1,4V20A2,2 0 0,0 3,22H21A2,2 0 0,0 23,20V4A2,2 0 0,0 21,2M11,17.5L9.5,19L5,14.5L9.5,10L11,11.5L8,14.5L11,17.5M14.5,19L13,17.5L16,14.5L13,11.5L14.5,10L19,14.5L14.5,19M21,7H3V4H21V7Z"; +var mdiIframeArray = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M10 11H8V18H10V20H6V9H10V11M18 20H14V18H16V11H14V9H18V20M21 7H3V4H21V7Z"; +var mdiIframeArrayOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M6 8V18H10V16H8V10H10V8H6M16 16H14V18H18V8H14V10H16V16"; +var mdiIframeBraces = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M11 11H9V12.5C9 13.6 8.1 14.5 7 14.5C8.1 14.5 9 15.4 9 16.5V18H11V20H9C7.9 20 7 19.1 7 18V17.5C7 16.4 6.1 15.5 5 15.5V13.5C6.1 13.5 7 12.6 7 11.5V11C7 9.9 7.9 9 9 9H11V11M19 15.5C17.9 15.5 17 16.4 17 17.5V18C17 19.1 16.1 20 15 20H13V18H15V16.5C15 15.4 15.9 14.5 17 14.5C15.9 14.5 15 13.6 15 12.5V11H13V9H15C16.1 9 17 9.9 17 11V11.5C17 12.6 17.9 13.5 19 13.5V15.5M21 7H3V4H21V7Z"; +var mdiIframeBracesOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M9 8C7.9 8 7 8.9 7 10C7 11.1 6.1 12 5 12V14C6.1 14 7 14.9 7 16C7 17.1 7.9 18 9 18H11V16H9V15C9 13.9 8.1 13 7 13C8.1 13 9 12.1 9 11V10H11V8M15 8C16.1 8 17 8.9 17 10C17 11.1 17.9 12 19 12V14C17.9 14 17 14.9 17 16C17 17.1 16.1 18 15 18H13V16H15V15C15 13.9 15.9 13 17 13C15.9 13 15 12.1 15 11V10H13V8H15Z"; +var mdiIframeOutline = "M9.5,8.5L11,10L8,13L11,16L9.5,17.5L5,13L9.5,8.5M14.5,17.5L13,16L16,13L13,10L14.5,8.5L19,13L14.5,17.5M21,2H3A2,2 0 0,0 1,4V20A2,2 0 0,0 3,22H21A2,2 0 0,0 23,20V4A2,2 0 0,0 21,2M21,20H3V6H21V20Z"; +var mdiIframeParentheses = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M10 19.4L8.4 20C6.9 18.6 6 16.6 6 14.5S6.9 10.4 8.4 9L10 9.6C8.7 10.7 8 12.6 8 14.5S8.7 18.2 10 19.4M15.6 20L14 19.4C15.3 18.2 16 16.4 16 14.5S15.3 10.8 14 9.6L15.6 9C17.1 10.4 18 12.4 18 14.5C18 16.6 17.1 18.6 15.6 20M21 7H3V4H21V7Z"; +var mdiIframeParenthesesOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M15.6 8C17.1 9.3 18 11.1 18 13C18 14.9 17.1 16.7 15.6 18L14 17.4C15.3 16.4 16 14.7 16 13S15.3 9.6 14 8.6L15.6 8M8.4 8L10 8.6C8.7 9.6 8 11.3 8 13S8.7 16.4 10 17.4L8.4 18C6.9 16.7 6 14.9 6 13S6.9 9.3 8.4 8Z"; +var mdiIframeVariable = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M7.4 20C5.9 18.6 5 16.6 5 14.5S5.9 10.4 7.4 9L9 9.6C7.7 10.7 7 12.6 7 14.5S7.7 18.2 9 19.4L7.4 20M12.7 18L11.9 16L10.5 18H9L11.3 14.9L10 12H11.3L12.1 14L13.5 12H15L12.8 15L14.1 18H12.7M16.6 20L15 19.4C16.3 18.2 17 16.4 17 14.5S16.3 10.8 15 9.6L16.6 9C18.1 10.4 19 12.4 19 14.5C19 16.6 18.1 18.6 16.6 20M21 7H3V4H21V7Z"; +var mdiIframeVariableOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M16.6 8C18.1 9.3 19 11.1 19 13C19 14.9 18.1 16.7 16.6 18L15 17.4C16.3 16.4 17 14.7 17 13S16.3 9.6 15 8.6L16.6 8M7.4 8L9 8.6C7.7 9.6 7 11.3 7 13S7.7 16.4 9 17.4L7.4 18C5.9 16.7 5 14.9 5 13S5.9 9.3 7.4 8M12.1 12L13.5 10H15L12.8 13L14.1 16H12.8L12 14L10.6 16H9L11.3 12.9L10 10H11.3L12.1 12Z"; +var mdiImage = "M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z"; +var mdiImageAlbum = "M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z"; +var mdiImageArea = "M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z"; +var mdiImageAreaClose = "M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z"; +var mdiImageAutoAdjust = "M19 10V19H5V5H14V3H5C3.92 3 3 3.9 3 5V19C3 20.1 3.92 21 5 21H19C20.12 21 21 20.1 21 19V10H19M17 10L17.94 7.94L20 7L17.94 6.06L17 4L16.06 6.06L14 7L16.06 7.94L17 10M13.25 10.75L12 8L10.75 10.75L8 12L10.75 13.25L12 16L13.25 13.25L16 12L13.25 10.75Z"; +var mdiImageBroken = "M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z"; +var mdiImageBrokenVariant = "M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41"; +var mdiImageEdit = "M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z"; +var mdiImageEditOutline = "M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M11.21 15.83L9.25 13.47L6.5 17H13.12L15.66 14.55L13.96 12.29L11.21 15.83M11 19.9V19.05L11.05 19H5V5H19V11.31L21 9.38V5C21 3.9 20.11 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H11V19.9Z"; +var mdiImageFilterBlackWhite = "M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiImageFilterCenterFocus = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z"; +var mdiImageFilterCenterFocusStrong = "M12 8C8.44 8 6.65 12.31 9.17 14.83C11.69 17.35 16 15.56 16 12C16 9.79 14.21 8 12 8M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19"; +var mdiImageFilterCenterFocusStrongOutline = "M17 12C17 7.55 11.62 5.31 8.46 8.46C5.31 11.61 7.55 17 12 17C14.76 17 17 14.76 17 12M12 15C9.33 15 8 11.77 9.88 9.88C11.77 8 15 9.33 15 12C15 13.66 13.66 15 12 15M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19"; +var mdiImageFilterCenterFocusWeak = "M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z"; +var mdiImageFilterDrama = "M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z"; +var mdiImageFilterFrames = "M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z"; +var mdiImageFilterHdr = "M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z"; +var mdiImageFilterNone = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiImageFilterTiltShift = "M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z"; +var mdiImageFilterVintage = "M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z"; +var mdiImageFrame = "M10,14.29L6.5,19H17.46L14.75,15.46L12.78,17.8L10,14.29M5,21V7H18.96V21H5M12,2.4L14.61,5.03H9.37L12,2.4M5,5.03C4.5,5.03 4,5.22 3.61,5.61C3.2,6 3,6.46 3,7V21C3,21.5 3.2,22 3.61,22.39C4,22.8 4.5,23 5,23H18.96C19.5,23 19.96,22.8 20.37,22.39C20.77,22 21,21.5 21,21V7C21,6.46 20.77,6 20.37,5.61C19.96,5.22 19.5,5.03 18.96,5.03H16L12,1L7.96,5.03H5Z"; +var mdiImageMinus = "M5 3C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H14.09C14.03 20.67 14 20.34 14 20C14 19.32 14.12 18.64 14.35 18H5L8.5 13.5L11 16.5L14.5 12L16.73 14.97C17.7 14.34 18.84 14 20 14C20.34 14 20.67 14.03 21 14.09V5C21 3.89 20.1 3 19 3H5M16 19V21H24V19H16Z"; +var mdiImageMove = "M15,3H19V0L24,5L19,10V7H15V3M21,11.94V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H12.06C12,3.33 12,3.67 12,4A8,8 0 0,0 20,12C20.33,12 20.67,12 21,11.94M19,18L14.5,12L11,16.5L8.5,13.5L5,18H19Z"; +var mdiImageMultiple = "M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6"; +var mdiImageMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z"; +var mdiImageOff = "M21 17.2L6.8 3H19C20.1 3 21 3.9 21 5V17.2M20.7 22L19.7 21H5C3.9 21 3 20.1 3 19V4.3L2 3.3L3.3 2L22 20.7L20.7 22M16.8 18L12.9 14.1L11 16.5L8.5 13.5L5 18H16.8Z"; +var mdiImageOffOutline = "M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"; +var mdiImageOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.96,12.29L11.21,15.83L9.25,13.47L6.5,17H17.5L13.96,12.29Z"; +var mdiImagePlus = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14.09C14.03,20.67 14,20.34 14,20C14,19.32 14.12,18.64 14.35,18H5L8.5,13.5L11,16.5L14.5,12L16.73,14.97C17.7,14.34 18.84,14 20,14C20.34,14 20.67,14.03 21,14.09V5C21,3.89 20.1,3 19,3H5M19,16V19H16V21H19V24H21V21H24V19H21V16H19Z"; +var mdiImageRemove = "M5 3C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H14.09C14.03 20.67 14 20.34 14 20C14 19.32 14.12 18.64 14.35 18H5L8.5 13.5L11 16.5L14.5 12L16.73 14.97C17.7 14.34 18.84 14 20 14C20.34 14 20.67 14.03 21 14.09V5C21 3.89 20.1 3 19 3H5M16.47 17.88L18.59 20L16.47 22.12L17.88 23.54L20 21.41L22.12 23.54L23.54 22.12L21.41 20L23.54 17.88L22.12 16.46L20 18.59L17.88 16.47L16.46 17.88Z"; +var mdiImageSearch = "M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.21 19.31,8.9L22.39,12L21,13.39L17.88,10.32C17.19,10.75 16.37,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4M7.5,14.5L4,19H18L13.5,13L10,17.5L7.5,14.5M20,20A2,2 0 0,1 18,22H4A2,2 0 0,1 2,20V6A2,2 0 0,1 4,4H9.5C9.18,4.77 9,5.61 9,6.5A6.5,6.5 0 0,0 15.5,13C16.18,13 16.84,12.89 17.46,12.7L20,15.24V20Z"; +var mdiImageSearchOutline = "M15.5,9C16.2,9 16.79,8.76 17.27,8.27C17.76,7.79 18,7.2 18,6.5C18,5.83 17.76,5.23 17.27,4.73C16.79,4.23 16.2,4 15.5,4C14.83,4 14.23,4.23 13.73,4.73C13.23,5.23 13,5.83 13,6.5C13,7.2 13.23,7.79 13.73,8.27C14.23,8.76 14.83,9 15.5,9M19.31,8.91L22.41,12L21,13.41L17.86,10.31C17.08,10.78 16.28,11 15.47,11C14.22,11 13.16,10.58 12.3,9.7C11.45,8.83 11,7.77 11,6.5C11,5.27 11.45,4.2 12.33,3.33C13.2,2.45 14.27,2 15.5,2C16.77,2 17.83,2.45 18.7,3.33C19.58,4.2 20,5.27 20,6.5C20,7.33 19.78,8.13 19.31,8.91M16.5,18H5.5L8.25,14.5L10.22,16.83L12.94,13.31L16.5,18M18,13L20,15V20C20,20.55 19.81,21 19.41,21.4C19,21.79 18.53,22 18,22H4C3.45,22 3,21.79 2.6,21.4C2.21,21 2,20.55 2,20V6C2,5.47 2.21,5 2.6,4.59C3,4.19 3.45,4 4,4H9.5C9.2,4.64 9.03,5.31 9,6H4V20H18V13Z"; +var mdiImageSizeSelectActual = "M21,3H3C2,3 1,4 1,5V19A2,2 0 0,0 3,21H21C22,21 23,20 23,19V5C23,4 22,3 21,3M5,17L8.5,12.5L11,15.5L14.5,11L19,17H5Z"; +var mdiImageSizeSelectLarge = "M21,15H23V17H21V15M21,11H23V13H21V11M23,19H21V21C22,21 23,20 23,19M13,3H15V5H13V3M21,7H23V9H21V7M21,3V5H23C23,4 22,3 21,3M1,7H3V9H1V7M17,3H19V5H17V3M17,19H19V21H17V19M3,3C2,3 1,4 1,5H3V3M9,3H11V5H9V3M5,3H7V5H5V3M1,11V19A2,2 0 0,0 3,21H15V11H1M3,19L5.5,15.79L7.29,17.94L9.79,14.72L13,19H3Z"; +var mdiImageSizeSelectSmall = "M23,15H21V17H23V15M23,11H21V13H23V11M23,19H21V21C22,21 23,20 23,19M15,3H13V5H15V3M23,7H21V9H23V7M21,3V5H23C23,4 22,3 21,3M3,21H11V15H1V19A2,2 0 0,0 3,21M3,7H1V9H3V7M15,19H13V21H15V19M19,3H17V5H19V3M19,19H17V21H19V19M3,3C2,3 1,4 1,5H3V3M3,11H1V13H3V11M11,3H9V5H11V3M7,3H5V5H7V3Z"; +var mdiImageText = "M22 13H14V11H22V13M22 7H14V9H22V7M14 17H22V15H14V17M12 9V15C12 16.1 11.1 17 10 17H4C2.9 17 2 16.1 2 15V9C2 7.9 2.9 7 4 7H10C11.1 7 12 7.9 12 9M10.5 15L8.3 12L6.5 14.3L5.3 12.8L3.5 15H10.5Z"; +var mdiImport = "M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z"; +var mdiInbox = "M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiInboxArrowDown = "M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiInboxArrowDownOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19M16 10H14V7H10V10H8L12 14"; +var mdiInboxArrowUp = "M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3"; +var mdiInboxArrowUpOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19M8 11H10V14H14V11H16L12 7"; +var mdiInboxFull = "M19 15V5H5V15H9C9 16.66 10.34 18 12 18C13.66 18 15 16.66 15 15H19M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.89 21 3 20.1 3 19L3 5C3 3.9 3.89 3 5 3H19M7 13V11H17V13H7M7 9V7H17V9H7Z"; +var mdiInboxFullOutline = "M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19M5 19H9.4C8.79 18.47 8.35 17.78 8.13 17H5V19M19 19V17H15.87C15.65 17.78 15.21 18.47 14.6 19H19M19 15V5H5V15H10V16C10 18.67 14 18.67 14 16V15H19M7 7H17V9H7V7M17 11V13H7V11H17Z"; +var mdiInboxMultiple = "M19,8V5H5V8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H19M19,3A2,2 0 0,1 21,5V12A2,2 0 0,1 19,14H5A2,2 0 0,1 3,12V5A2,2 0 0,1 5,3H19M3,15H9A3,3 0 0,0 12,18A3,3 0 0,0 15,15H21V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15Z"; +var mdiInboxMultipleOutline = "M19,3A2,2 0 0,1 21,5V12A2,2 0 0,1 19,14H5A2,2 0 0,1 3,12V5A2,2 0 0,1 5,3H19M5,10V12H9.4C8.8,11.47 8.34,10.78 8.13,10H5M19,12V10H15.87C15.66,10.78 15.2,11.47 14.6,12H19M19,8V5H5V8H10V9C10,10.07 10.93,11 12,11C13.07,11 14,10.07 14,9V8H19M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15H10V16C10,17.07 10.93,18 12,18C13.07,18 14,17.07 14,16V15H21V19M5,17V19H9.4C8.8,18.47 8.34,17.78 8.13,17H5M19,19V17H15.87C15.66,17.78 15.2,18.47 14.6,19H19Z"; +var mdiInboxOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z"; +var mdiInboxRemove = "M19 15H15C15 16.7 13.7 18 12 18S9 16.7 9 15H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M14.1 6.5L15.5 7.9L13.4 10L15.5 12.1L14.1 13.5L12 11.4L9.9 13.5L8.5 12.1L10.6 10L8.5 7.9L9.9 6.5L12 8.6L14.1 6.5Z"; +var mdiInboxRemoveOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M5 19V17H8.1C8.3 17.8 8.8 18.5 9.4 19M19 19H14.6C15.2 18.5 15.7 17.8 15.9 17H19M19 15H14V16C14 17.1 13.1 18 12 18S10 17.1 10 16V15H5V5H19V15M14.1 6.5L15.5 7.9L13.4 10L15.5 12.1L14.1 13.5L12 11.4L9.9 13.5L8.5 12.1L10.6 10L8.5 7.9L9.9 6.5L12 8.6L14.1 6.5Z"; +var mdiIncognito = "M17.06 13C15.2 13 13.64 14.33 13.24 16.1C12.29 15.69 11.42 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C19.23 21 21 19.21 21 17C21 14.79 19.23 13 17.06 13M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17S5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17S8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17S15.5 14.14 17.06 14.14C18.62 14.14 19.88 15.42 19.88 17S18.61 19.86 17.06 19.86M22 10.5H2V12H22V10.5M15.53 2.63C15.31 2.14 14.75 1.88 14.22 2.05L12 2.79L9.77 2.05L9.72 2.04C9.19 1.89 8.63 2.17 8.43 2.68L6 9H18L15.56 2.68L15.53 2.63Z"; +var mdiIncognitoCircle = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M14.92 12.81C13.84 12.81 12.95 13.56 12.71 14.56C12.17 14.33 11.66 14.39 11.29 14.55C11.05 13.55 10.15 12.81 9.08 12.81C7.83 12.81 6.82 13.82 6.82 15.07C6.82 16.32 7.83 17.33 9.08 17.33C10.28 17.33 11.24 16.42 11.33 15.25C11.53 15.12 12.04 14.86 12.67 15.26C12.77 16.42 13.73 17.33 14.92 17.33C16.17 17.33 17.18 16.32 17.18 15.07C17.18 13.82 16.17 12.81 14.92 12.81M9.08 13.45C10 13.45 10.7 14.18 10.7 15.07C10.7 15.96 10 16.69 9.08 16.69C8.19 16.69 7.46 15.96 7.46 15.07C7.46 14.18 8.19 13.45 9.08 13.45M14.92 13.45C15.81 13.45 16.54 14.18 16.54 15.07C16.54 15.96 15.81 16.69 14.92 16.69C14 16.69 13.3 15.96 13.3 15.07C13.3 14.18 14 13.45 14.92 13.45M17.83 11.5H6.17V12.17H17.83V11.5M14.15 6.89C14 6.59 13.67 6.43 13.35 6.53L12 7L10.65 6.53L10.61 6.5C10.29 6.43 9.95 6.61 9.84 6.92L8.36 10.83H15.64L14.16 6.92L14.15 6.89Z"; +var mdiIncognitoCircleOff = "M22.11 21.46L2.39 1.73L1.11 3L4.06 5.95C2.77 7.63 2 9.72 2 12C2 17.5 6.5 22 12 22C14.28 22 16.37 21.23 18.05 19.94L20.84 22.73L22.11 21.46M8.94 10.83H8.36L8.5 10.41L8.94 10.83M6.17 11.5H9.61L10.28 12.17H6.17V11.5M14.92 17.33C13.73 17.33 12.77 16.42 12.67 15.26C12.04 14.86 11.53 15.12 11.33 15.25C11.24 16.42 10.28 17.33 9.08 17.33C7.83 17.33 6.82 16.32 6.82 15.07C6.82 13.82 7.83 12.81 9.08 12.81C10.15 12.81 11.05 13.55 11.29 14.55C11.65 14.4 12.13 14.34 12.65 14.54L13.31 15.2C13.37 16 14 16.61 14.78 16.67L15.38 17.27C15.23 17.3 15.08 17.33 14.92 17.33M9.94 6.74L6.72 3.5C8.25 2.56 10.06 2 12 2C17.5 2 22 6.5 22 12C22 13.94 21.44 15.75 20.5 17.28L15.37 12.17H17.83V11.5H14.7L14.03 10.83H15.64L14.16 6.92L14.15 6.89C14 6.59 13.67 6.43 13.35 6.53L12 7L10.65 6.53L10.61 6.5C10.36 6.45 10.1 6.55 9.94 6.74M10.7 15.07C10.7 15.96 10 16.69 9.08 16.69C8.19 16.69 7.46 15.96 7.46 15.07S8.19 13.45 9.08 13.45C10 13.45 10.7 14.18 10.7 15.07Z"; +var mdiIncognitoOff = "M22.11 21.46L2.39 1.73L1.11 3L6.31 8.2L6 9H7.11L8.61 10.5H2V12H10.11L13.5 15.37C13.38 15.61 13.3 15.85 13.24 16.1C12.29 15.69 11.41 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C17.66 21 18.22 20.86 18.72 20.61L20.84 22.73L22.11 21.46M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17C4.13 15.42 5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17C9.75 18.58 8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17C14.25 16.74 14.29 16.5 14.36 16.25L17.84 19.73C17.59 19.81 17.34 19.86 17.06 19.86M22 12H15.2L13.7 10.5H22V12M17.06 13C19.23 13 21 14.79 21 17C21 17.25 20.97 17.5 20.93 17.73L19.84 16.64C19.68 15.34 18.66 14.32 17.38 14.17L16.29 13.09C16.54 13.03 16.8 13 17.06 13M12.2 9L7.72 4.5L8.43 2.68C8.63 2.17 9.19 1.89 9.72 2.04L9.77 2.05L12 2.79L14.22 2.05C14.75 1.88 15.32 2.14 15.54 2.63L15.56 2.68L18 9H12.2Z"; +var mdiInfinity = "M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z"; +var mdiInformation = "M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiInformationOutline = "M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"; +var mdiInformationVariant = "M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z"; +var mdiInstagram = "M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiInstrumentTriangle = "M11.5 2H10.5V6.2C10.4 6.3 10.3 6.3 10.2 6.5L2.1 20.7C1.8 21.3 2.2 22 2.9 22H16V20H4.8L11 9.2L16.7 19.2L18.4 18.2L11.8 6.4L11.5 6.1V2M21 6H20V18L19.5 22H21.5L21 18V6Z"; +var mdiInvertColors = "M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z"; +var mdiInvertColorsOff = "M20.65,20.87L18.3,18.5L12,12.23L8.44,8.66L7,7.25L4.27,4.5L3,5.77L5.78,8.55C3.23,11.69 3.42,16.31 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C13.79,21.58 15.57,21 17.03,19.8L19.73,22.5L21,21.23L20.65,20.87M12,19.59C10.4,19.59 8.89,18.97 7.76,17.83C6.62,16.69 6,15.19 6,13.59C6,12.27 6.43,11 7.21,10L12,14.77V19.59M12,5.1V9.68L19.25,16.94C20.62,14 20.09,10.37 17.65,7.93L12,2.27L8.3,5.97L9.71,7.38L12,5.1Z"; +var mdiIobroker = "M12 2C11.5 2 11 2.04 10.5 2.11V4.85C11 4.75 11.5 4.7 12 4.7C12.5 4.7 13 4.75 13.5 4.85V2.12C13 2.04 12.5 2 12 2M9.82 2.25C5.4 3.25 2.11 7.24 2.11 12C2.11 17.5 6.53 22 12 22C17.47 22 21.89 17.5 21.89 12C21.89 7.24 18.6 3.25 14.19 2.25V5.03C17.17 5.96 19.34 8.73 19.34 12C19.34 16 16.05 19.3 12 19.3C7.96 19.3 4.67 16 4.67 12C4.67 8.73 6.84 5.96 9.82 5.03M12 5.45C11.5 5.45 11 5.5 10.5 5.62V18.27C11 18.38 11.5 18.44 12 18.44C12.5 18.44 13 18.39 13.5 18.27V5.62C13 5.5 12.5 5.45 12 5.45Z"; +var mdiIp = "M16,11H14V9H16V11M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M10,7H8V17H10V7M12,17H14V13H16A2,2 0 0,0 18,11V9A2,2 0 0,0 16,7H12V17Z"; +var mdiIpNetwork = "M15,9H13V7H15V9M22,20V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7A2,2 0 0,1 5,15V5A2,2 0 0,1 7,3H17A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22M9,5H7V15H9V5M11,15H13V11H15A2,2 0 0,0 17,9V7A2,2 0 0,0 15,5H11V15Z"; +var mdiIpNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M10,6H8V14H10V6M14,6H11V14H13V12H14A2,2 0 0,0 16,10V8A2,2 0 0,0 14,6M14,10H13V8H14V10Z"; +var mdiIpod = "M7,2A2,2 0 0,0 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4A2,2 0 0,0 17,2H7M7,4H17V10H7V4M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,14A2,2 0 0,0 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16A2,2 0 0,0 12,14Z"; +var mdiIslam = "M12.3,2C12.2,2 12.1,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C15,22 16.7,21 18.5,19.5C13,21 8,17 8,12C8,7 13,3 18.5,4.5C16.86,2.86 14.62,1.96 12.3,2M16.8,6.2L15.3,9.7L11.6,10L14.5,12.5L13.6,16L16.8,14L20,16L19,12.5L22,10L18.3,9.7L16.8,6.2Z"; +var mdiIsland = "M20 20C18.61 20 17.22 19.53 16 18.67C13.56 20.38 10.44 20.38 8 18.67C6.78 19.53 5.39 20 4 20H2V22H4C5.37 22 6.74 21.65 8 21C10.5 22.3 13.5 22.3 16 21C17.26 21.65 18.62 22 20 22H22V20H20M20.78 19H20C18.82 19 17.64 18.6 16.58 17.85L16 17.45L15.42 17.85C14.39 18.57 13.21 18.95 12 18.95C10.77 18.95 9.59 18.57 8.56 17.85L8 17.45L7.43 17.85C6.36 18.6 5.18 19 4 19H3.22C3.75 17.54 5.58 15 12 15C14 15 15 15.24 15 15.24C15.68 13.87 16.83 10.77 16 6.82L17.06 7.53C17.39 8.96 18 11.75 16.8 15.65C19.43 16.5 20.42 18 20.78 19M22 7.59C21.21 6.5 20 5.71 18.58 5.53C18.7 5.67 18.81 5.83 18.92 6C20.12 7.91 19.87 10.32 18.47 11.95C19.06 10.5 19 8.79 18.08 7.36C18 7.28 17.96 7.2 17.9 7.11C17.5 6.53 16.96 6.06 16.38 5.72C14.35 6.37 12.88 8.27 12.88 10.5C12.88 11.03 12.96 11.53 13.1 12C12.5 11.17 12.16 10.17 12.16 9.07C12.16 7.41 12.96 5.95 14.2 5.03C13.16 4.95 12.09 5.18 11.14 5.78C10.7 6.05 10.32 6.38 10 6.76C10.39 5.82 11.05 5 12 4.4C13.04 3.74 14.25 3.5 15.39 3.69C15.1 3.29 14.75 2.92 14.33 2.6C13.92 2.29 13.47 2.05 13 1.88C14 1.91 15.04 2.24 15.91 2.89C16.35 3.22 16.7 3.62 17 4.05C17.06 4.05 17.12 4.04 17.19 4.04C19.45 4.04 21.37 5.53 22 7.59Z"; +var mdiIvBag = "M14 1H10C5 1 5 3 5 3V15C5 15 5 17 10 17V19H11V20C11 21.21 11.8 23 14 23H18V21H14C13.19 21 13 20.45 13 20V19H14V17C19 17 19 15 19 15V3C19 3 19 1 14 1M17 12H14V11H17V12M17 5H14V6H17V8H14V9H17V10H7V3.5C7.3 3.32 8.13 3 10 3H14C15.88 3 16.7 3.32 17 3.5V5Z"; +var mdiJabber = "M5.23,5.72C4.61,5.55 5,3.19 5,3.17C5,3.19 12.58,-0.71 16.7,5.73C20.8,12.15 15.86,14.86 13.97,16.06C12.08,17.27 12.73,19.72 12.73,20.13C12.73,20.53 12.16,20.97 12,20.41C11.88,19.84 11.25,16.55 13.33,15.16C17.13,12.61 17.9,10.1 16,6.42C14.2,3 8.28,3.41 7.03,4.08C5.78,4.75 5.86,5.89 5.23,5.72M9.33,12.63L9.11,12.16C9.23,10.28 7.63,10.39 8.08,13.33C8.21,14.16 7.47,13.8 7.45,13.73C6.89,11.44 7.42,10.22 8.55,10.45C9.62,10.68 9.53,11.83 9.53,11.83C9.56,11.78 11,10.17 11.5,10.92C12.58,12.5 10.53,14.47 10.41,14.63C10.28,14.78 10.14,15.05 9.92,14.84C9.7,14.64 9.72,14.5 9.89,14.27C12.77,10 9.59,12.22 9.33,12.63M6.5,15.33V15.31C6.5,15.31 8,18.13 10.61,17.08C11,16.92 11.17,17.14 11.2,17.27C11.27,17.53 11.13,17.64 10.86,17.73C7.86,18.72 5.89,16.63 5.63,16.13C5.39,15.68 5.5,15.38 5.75,15.22C6,15.06 6.5,15.33 6.5,15.33M6,17.5C6,17.5 7.67,19.5 10.8,19C11.09,18.94 11.2,19.13 11.25,19.38C11.3,19.63 11.22,19.84 10.92,19.94C10.63,20.03 7.08,20.5 5.13,17.72C5,17.56 5.3,17.36 5.47,17.36C5.64,17.36 6.03,17.5 6,17.5M5.95,19.39C7.53,21.5 10.33,21.55 11.28,20.88C11.5,20.73 11.7,21.05 11.56,21.19C9.64,23.16 5.67,21 5.27,20.33C5.09,20.05 5.13,19.66 5.31,19.45C5.5,19.25 5.93,19.38 5.95,19.39Z"; +var mdiJeepney = "M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z"; +var mdiJellyfish = "M19.5,14.5C18.92,14.43 18.43,14.92 18.5,15.5C18.5,16.17 17.5,16.17 17.5,15.5V13.2L19.2,12.7C19.92,12.36 20.41,11.68 20.5,10.9C20.5,5.5 16.7,2 12,2C7.3,2 3.5,5.5 3.5,10.9C3.56,11.7 4.06,12.4 4.8,12.7L6.5,13.2V15.5A0.5,0.5 0 0,1 6,16A0.5,0.5 0 0,1 5.5,15.5C5.57,14.92 5.08,14.43 4.5,14.5C3.92,14.43 3.43,14.92 3.5,15.5C3.44,16.91 4.59,18.06 6,18C7.41,18.06 8.56,16.91 8.5,15.5V13.7H9.5V19.4C9.5,20.07 8.5,20.07 8.5,19.4C8.57,18.82 8.08,18.33 7.5,18.4C6.92,18.33 6.43,18.82 6.5,19.4C6.38,20.84 7.55,22.07 9,22C10.41,22.06 11.56,20.91 11.5,19.5V14H12.5V19.5C12.44,20.91 13.59,22.06 15,22C16.41,22.06 17.56,20.91 17.5,19.5C17.5,18.17 15.5,18.17 15.5,19.5C15.5,20.17 14.5,20.17 14.5,19.5V13.8H15.5V15.6C15.5,16.96 16.63,18.06 18,18C19.41,18.06 20.56,16.91 20.5,15.5C20.57,14.92 20.08,14.43 19.5,14.5M10.6,4.7C9.09,5.03 7.79,5.97 7,7.3C6.83,7.5 6.5,7.57 6.3,7.4C6.08,7.23 6.04,6.92 6.2,6.7C7.16,5.19 8.67,4.12 10.4,3.7C10.67,3.68 10.91,3.85 11,4.1C11.06,4.37 10.88,4.65 10.6,4.7Z"; +var mdiJellyfishOutline = "M12,4C15.8,4 18.5,6.8 18.5,10.8C14.31,12.39 9.69,12.39 5.5,10.8C5.5,6.8 8.2,4 12,4M12,2C7.3,2 3.5,5.5 3.5,10.9C3.56,11.7 4.06,12.4 4.8,12.7L6.5,13.2V15.5A0.5,0.5 0 0,1 6,16A0.5,0.5 0 0,1 5.5,15.5C5.57,14.92 5.08,14.43 4.5,14.5C3.92,14.43 3.43,14.92 3.5,15.5C3.44,16.86 4.54,18 5.9,18H6C7.41,18.06 8.56,16.91 8.5,15.5V13.7H9.5V19.4C9.5,20.07 8.5,20.07 8.5,19.4C8.57,18.82 8.08,18.33 7.5,18.4C6.92,18.33 6.43,18.82 6.5,19.4C6.39,20.8 7.5,22 8.9,22H9C10.41,22.06 11.56,20.91 11.5,19.5V14H12.5V19.5C12.44,20.91 13.59,22.06 15,22H15.1C16.47,22 17.56,20.86 17.5,19.5C17.5,18.17 15.5,18.17 15.5,19.5C15.5,20.17 14.5,20.17 14.5,19.5V13.8H15.5V15.6C15.5,16.96 16.63,18.06 18,18H18.1C19.47,18 20.56,16.86 20.5,15.5C20.5,14.17 18.5,14.17 18.5,15.5C18.5,16.17 17.5,16.17 17.5,15.5V13.2L19.2,12.7C19.92,12.36 20.41,11.68 20.5,10.9C20.5,5.5 16.7,2 12,2M12,6.2C10.53,6.6 9.24,7.53 8.4,8.8C8,9.33 7.2,8.73 7.6,8.2C8.6,6.73 10.09,5.67 11.8,5.2C12.08,5.14 12.35,5.32 12.4,5.6C12.5,5.9 12.3,6.1 12,6.2Z"; +var mdiJira = "M11.53,2C11.53,4.4 13.5,6.35 15.88,6.35H17.66V8.05C17.66,10.45 19.6,12.39 22,12.4V2.84A0.84,0.84 0 0,0 21.16,2H11.53M6.77,6.8C6.78,9.19 8.72,11.13 11.11,11.14H12.91V12.86C12.92,15.25 14.86,17.19 17.25,17.2V7.63C17.24,7.17 16.88,6.81 16.42,6.8H6.77M2,11.6C2,14 3.95,15.94 6.35,15.94H8.13V17.66C8.14,20.05 10.08,22 12.47,22V12.43A0.84,0.84 0 0,0 11.63,11.59L2,11.6Z"; +var mdiJquery = "M22.88,10.41C20.77,12.18 17.61,11.9 15.84,9.79C14.06,7.67 14.34,4.5 16.45,2.75L16.96,2.37C15.27,4.19 15.16,7.03 16.8,9C18.43,10.94 21.25,11.32 23.34,9.97L22.88,10.41M21.1,14.5C17.93,17.17 13.2,16.76 10.54,13.58C7.87,10.41 8.29,5.68 11.46,3L12.38,2.36C9.96,5.09 9.84,9.26 12.26,12.14C14.68,15 18.8,15.63 21.91,13.72L21.1,14.5M19.97,19.38C15.53,23.11 8.9,22.53 5.17,18.08C1.45,13.64 2.03,7 6.47,3.29L7.58,2.5C4.07,6.3 3.85,12.23 7.28,16.32C10.71,20.4 16.59,21.22 20.96,18.43L19.97,19.38Z"; +var mdiJsfiddle = "M17.34 13.7C17.34 15 16.23 16.04 14.86 16.04C13.65 16.04 12.64 15 11.75 14.04L11.5 13.79C11.5 13.76 11.47 13.73 11.45 13.7C10.74 12.96 9.96 12.22 9.21 12.22C8.32 12.22 7.6 12.88 7.6 13.69C7.6 14.5 8.32 15.17 9.21 15.17C9.97 15.17 10.35 14.75 10.63 14.45L10.7 14.37C10.86 14.2 11.14 14.19 11.31 14.35C11.5 14.5 11.5 14.79 11.33 14.96L11.27 15.03C10.94 15.38 10.35 16.03 9.21 16.03C7.84 16.03 6.73 15 6.73 13.69C6.73 12.4 7.84 11.35 9.21 11.35C10.42 11.35 11.43 12.41 12.32 13.35L12.56 13.6C12.58 13.63 12.6 13.66 12.62 13.69C13.33 14.43 14.11 15.17 14.86 15.17C15.75 15.17 16.47 14.5 16.47 13.69C16.47 12.88 15.75 12.22 14.86 12.22C14.11 12.22 13.72 12.64 13.44 12.94L13.37 13C13.21 13.19 12.94 13.2 12.76 13.04C12.59 12.87 12.58 12.6 12.74 12.42L12.81 12.36C13.13 12 13.73 11.36 14.86 11.36C16.23 11.36 17.34 12.4 17.34 13.7M22 14.85C22 15.96 21.57 17 20.78 17.79C20 18.57 18.95 19 17.84 19H6.28C3.96 18.96 2.07 17.06 2.07 14.75C2.07 13.37 2.76 12.07 3.89 11.28C3.85 11.09 3.83 10.9 3.83 10.7C3.83 9.03 5.2 7.67 6.88 7.67C7.39 7.67 7.88 7.79 8.32 8.03C9.41 6.17 11.43 5 13.6 5C16.97 5 19.7 7.72 19.7 11.07L19.7 11.14C21.11 11.84 22 13.27 22 14.85M21.13 14.85C21.13 13.5 20.33 12.32 19.09 11.81C18.92 11.74 18.81 11.57 18.82 11.38L18.83 11.29C18.83 11.22 18.84 11.14 18.84 11.07C18.84 8.2 16.5 5.87 13.6 5.87C11.6 5.87 9.74 7.03 8.87 8.83C8.82 8.95 8.71 9.04 8.58 9.07C8.46 9.1 8.32 9.07 8.22 9C7.83 8.69 7.37 8.53 6.88 8.53C5.68 8.53 4.7 9.5 4.7 10.7C4.7 10.92 4.73 11.14 4.8 11.34C4.86 11.54 4.78 11.75 4.61 11.85C3.56 12.47 2.94 13.55 2.94 14.75C2.94 16.59 4.44 18.1 6.29 18.13H17.83C18.72 18.13 19.54 17.79 20.16 17.17C20.79 16.55 21.13 15.73 21.13 14.85Z"; +var mdiJudaism = "M12,2L9.1,7H3.3L6.3,12L3.3,17H9.1L12,22L14.9,17H20.7L17.7,12L20.7,7H14.9L12,2M12,5L13.2,7H10.8L12,5M8.2,8.5L7.1,10.5L5.9,8.5H8.2M10,8.5H14L16,12L14,15.5H10L8,12L10,8.5M18,8.5L16.8,10.5L15.7,8.5H18M7.1,13.5L8.2,15.5H6L7.1,13.5M16.9,13.5L18.1,15.5H15.8L16.9,13.5M13.3,17L12,19L10.8,17H13.3Z"; +var mdiJumpRope = "M21 4.5V10.5C21 11.2 20.5 11.9 19.8 12V17.3C19.8 18.6 19 21.1 16 21.1H14.5C14.9 20.7 15.3 20.2 15.5 19.6H16C18.1 19.6 18.2 17.7 18.2 17.4V12C17.5 11.9 17 11.3 17 10.5V4.5C17 3.7 17.7 3 18.5 3H19.5C20.3 3 21 3.7 21 4.5M14.8 18.2C14.8 19.7 13.6 21 12 21H8C5 21 4.2 18.5 4.2 17.2V12C3.5 11.9 3 11.2 3 10.5V4.5C3 3.7 3.7 3 4.5 3H5.5C6.3 3 7 3.7 7 4.5V10.5C7 11.2 6.5 11.9 5.8 12V17.3C5.8 17.7 5.9 19.5 8 19.5H9.6C9.4 19.1 9.3 18.7 9.3 18.3V8.3C9.3 6.8 10.5 5.5 12.1 5.5S14.8 6.7 14.8 8.3M13.2 8.2C13.2 7.6 12.7 7 12 7S10.8 7.6 10.8 8.2V18.2C10.8 18.9 11.4 19.4 12 19.4S13.2 18.8 13.2 18.2V8.2Z"; +var mdiKabaddi = "M11.2 10.6C12.2 11.6 13.4 12.1 14.8 12.1L14.9 14.2C13 14.2 11.3 13.5 9.8 12.1L9.1 11.4L6.8 13.8L9 15.9V21.9H7V16.7L5.7 15.5V17.7L1.5 22L.1 20.6L3.7 17L2.5 13.5C2.3 12.9 2.6 12.4 3.1 12L6.4 8.7C6.8 8.2 7.3 8 7.8 8C8.3 8 8.6 8.1 8.9 8.3L11.2 10.6M24 11.9H22V8.5L20.2 7.8L21.1 12.2L22.1 17.4L23 21.8H20.9L19.1 13.8L17 15.8V21.8H15V14.3L17.1 12.3L16.5 9.3C15.9 9.9 15.2 10.5 14.4 10.9C13.5 10.8 12.6 10.4 11.9 9.7C13.5 9.4 14.6 8.6 15.3 7.4L16.3 5.8C16.9 4.8 17.8 4.5 18.9 5L24 7.2V11.9M11.4 4.4C12.5 4.4 13.4 5.3 13.4 6.4C13.4 7.5 12.5 8.4 11.4 8.4C10.3 8.4 9.4 7.5 9.4 6.4C9.4 5.3 10.3 4.4 11.4 4.4M16.5 .3C17.6 .3 18.5 1.2 18.5 2.3C18.5 3.4 17.6 4.3 16.5 4.3C15.4 4.3 14.5 3.4 14.5 2.3C14.5 1.2 15.4 .3 16.5 .3Z"; +var mdiKangaroo = "M19.8 6.59L19 7.97V10.04L17.69 11.61L17.31 13.25L16 14L15.5 13.12L16.44 12.59L16.7 11.45L16.7 11.45L16.77 11.15L16.77 11.15V11.15L17.47 10.31C17.65 10.1 17.62 9.78 17.41 9.61C17.2 9.43 16.88 9.46 16.7 9.67L15.85 10.69L15.56 11.93C15.38 11.96 15.2 12 15 12C14.31 12 13.68 11.76 13.23 11.4C13.15 12.7 12.73 13.81 12.13 14.43L10.5 16.19L9.96 19.79L8.07 21L7.53 20.17L9.04 19.19L9.5 15.92L9.5 15.91L10 14.54C9.47 14.08 9.08 13.28 8.88 12.3L8.71 12.61C8.35 13.25 8 13.9 7.56 14.56C7.11 15.2 6.66 15.9 5.78 16.44C5.34 16.72 4.7 16.84 4.17 16.73C3.61 16.61 3.14 16.26 2.86 15.89C2.31 15.13 2.15 14.35 2 13.62L2.97 13.36C3.2 14 3.5 14.65 3.88 15C4.26 15.33 4.57 15.26 4.84 15C5.16 14.73 5.47 14.15 5.73 13.55C6 12.94 6.22 12.28 6.45 11.6C6.93 10.24 7.39 8.82 8.2 7.36C8.62 6.64 9.13 5.89 9.92 5.22C10.7 4.55 11.73 4 13 4S15.7 5.22 16.58 6.34C17 6.89 17.87 6.82 18.22 6.21L19.14 4.63C19 4.58 18.89 4.5 18.79 4.4C18.4 4 18.4 3.38 18.79 3L19.93 4.13C19.96 4.13 20 4.11 20 4.11C20.41 4.11 20.75 4.35 20.91 4.69L22 7L21 7.5L19.8 6.59Z"; +var mdiKarate = "M19,1.27C18.04,0.72 16.82,1.04 16.27,2C15.71,2.95 16.04,4.18 17,4.73C17.95,5.28 19.17,4.96 19.73,4C20.28,3.04 19.95,1.82 19,1.27M21.27,9.34L18.7,13.79L16.96,12.79L18.69,9.79L17.14,8.5L14,13.92V22H12V13.39L2.47,7.89L3.47,6.16L11.27,10.66L13.67,6.5L7.28,4.17L8,2.29L14.73,4.74L15,4.84C15.39,5 15.76,5.15 16.12,5.35L16.96,5.84C17.31,6.04 17.65,6.28 17.96,6.54L18.19,6.74L21.27,9.34Z"; +var mdiKeg = "M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z"; +var mdiKettle = "M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z"; +var mdiKettleAlert = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 1 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.1 22 18 21.1 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C12.6 9.4 11.1 9 9.5 9C7.7 9 5.9 9.5 4.6 10.4C4.2 10 4 9.5 4 9C4 7.2 6.5 5.8 9.5 5.8C10.9 5.8 12.3 6.1 13.3 6.7L15.3 4.7C13.8 3.6 11.7 3 9.5 3M9.5 11C9.8 11 10.2 11 10.5 11.1C7.4 11.6 5 14.2 5 17.5V20H3V17.5C3 13.9 5.9 11 9.5 11M21 13V7H23V13H21M21 17V15H23V17H21Z"; +var mdiKettleAlertOutline = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 1 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.1 22 18 21.1 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C11 8.5 7.4 8.6 4.6 10.4C4.2 10 4 9.5 4 9C4 7.2 6.5 5.7 9.5 5.7C10.9 5.7 12.3 6.1 13.3 6.7L15.3 4.7C13.6 3.5 11.6 3 9.5 3M9.5 11C13 11 16 14 16 16.5V20H3V16.5C3 14 6 11 9.5 11M10 12.5C7 12.5 5 14 5 17V18H7V17C7 16 7 13.5 10 12.5M21 13V7H23V13H21M21 17V15H23V17H21Z"; +var mdiKettleOff = "M22.1 21.5L2.4 1.7L1.1 3L4.7 6.6C4.3 7.3 4 8.1 4 9C4 10.2 4.5 11.3 5.4 12.3C4.5 13.5 4 15 4 16.5V20C4 21.1 4.9 22 6 22H19C19.3 22 19.6 21.9 19.9 21.8L20.8 22.7L22.1 21.5M8.2 10.1L7.6 10.4C7.2 10 7 9.5 7 9V8.9L8.2 10.1M8 17.5V20H6V17.5C6 14.9 7.5 12.7 9.7 11.6L10.5 12.4C9 13.6 8 15.4 8 17.5M16.9 10.1L19 8L22 11L20 13C20.7 14.1 21 15.3 21 16.5V17.8L12.2 9H12.5C14 9 15.6 9.4 16.9 10.1M9.5 6.3L7.4 4.2C8.8 3.5 10.6 3 12.5 3C14.7 3 16.8 3.6 18.3 4.7L16.3 6.7C15.3 6.1 13.9 5.8 12.5 5.8C11.4 5.8 10.4 5.9 9.5 6.3Z"; +var mdiKettleOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.7 6.6C4.3 7.3 4 8.1 4 9C4 10.2 4.5 11.3 5.4 12.3C4.5 13.5 4 15 4 16.5V20C4 21.1 4.9 22 6 22H19C19.3 22 19.6 21.9 19.9 21.8L20.8 22.7L22.1 21.5M8.2 10.1L7.6 10.4C7.2 10 7 9.5 7 9V8.9L8.2 10.1M6 20V16.5C6 14.7 7.6 12.6 9.7 11.6L10.9 12.8C9.1 13.4 8 14.8 8 17V18H10V17C10 16.2 10 14.5 11.4 13.3L18.1 20H6M16.9 10.1L19 8L22 11L20 13C20.7 14.1 21 15.3 21 16.5V17.8L18.9 15.7C18.5 13.9 16.8 12.1 14.6 11.4L12.2 9C13.8 8.9 15.4 9.3 16.9 10.1M9.5 6.3L7.4 4.2C8.8 3.5 10.6 3 12.5 3C14.6 3 16.6 3.5 18.3 4.7L16.3 6.7C15.3 6.1 13.9 5.7 12.5 5.7C11.4 5.7 10.3 5.9 9.5 6.3Z"; +var mdiKettleOutline = "M12.5 3C7.8 3 4 5.7 4 9C4 10.2 4.5 11.3 5.4 12.3A6.8 6.8 0 0 0 4 16.5V20C4 21.1 4.9 22 6 22H19A2 2 0 0 0 21 20V16.5C21 15.3 20.7 14.1 20 13L22 11L19 8L16.9 10.1A9.2 9.2 0 0 0 7.6 10.4A2 2 0 0 1 7 9C7 7.2 9.5 5.7 12.5 5.7C13.9 5.7 15.3 6.1 16.3 6.7L18.3 4.7A10 10 0 0 0 12.5 3M12.5 11C16 11 19 14 19 16.5V20H6V16.5C6 14 9 11 12.5 11M13 12.5C10 12.5 8 14 8 17V18H10V17C10 16 10 13.5 13 12.5Z"; +var mdiKettlePourOver = "M10 4C9.4 4 9 4.4 9 5V6H14V5C14 4.4 13.6 4 13 4H10M3 7L4.1 14.1C4.2 14.8 4.5 15.5 5.1 16.1C5.5 16.6 6.2 16.9 7 17C7 17.6 7.4 18 8 18H16C16.6 18 17 17.6 17 17L15 11H17L20.3 16L22 15L18.7 10L20 9.2L19 7.5L16.4 9H15V7H8V11L7.2 16C6.5 15.9 6.1 15.7 5.8 15.4C5.4 15 5.2 14.5 5.1 13.9L4 7H3M4 19V21H20V19H4Z"; +var mdiKettleSteam = "M19 11L16 8L13.9 10.1C12.58 9.38 11.05 9 9.5 9C7.65 9 5.95 9.53 4.55 10.41C4.19 9.97 4 9.5 4 9C4 7.21 6.46 5.75 9.5 5.75C10.93 5.75 12.3 6.08 13.33 6.67L15.35 4.65C13.77 3.59 11.68 3 9.5 3C4.81 3 1 5.69 1 9C1 10.19 1.5 11.34 2.44 12.33C1.53 13.5 1 14.96 1 16.5V20C1 21.11 1.89 22 3 22H16C17.11 22 18 21.11 18 20V16.5C18 15.28 17.66 14.07 17 13L19 11M5 17.5V20H3V17.5C3 13.91 5.91 11 9.5 11C9.84 11 10.17 11.04 10.5 11.09C7.39 11.57 5 14.25 5 17.5M23 7.3C23 8.93 21.91 10.6 20.38 10.97L19.71 10.29L19 9.6H19.75C20.75 9.6 21.5 8.22 21.5 7.2C21.5 6.18 20.65 5.14 19.65 5.14V3.64C21.5 3.64 23 5.45 23 7.3M17.65 6.73C17.03 6.12 16.65 5.28 16.65 4.35C16.65 2.5 18.15 1 20 1V2.5C19 2.5 18.15 3.33 18.15 4.35C18.15 5.37 19 6.2 20 6.2V7.7C19.18 7.7 18.42 7.95 17.79 8.38L16.72 7.31C17 7.09 17.32 6.89 17.65 6.73Z"; +var mdiKettleSteamOutline = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 .985 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.11 22 18 21.11 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C10.97 8.5 7.42 8.63 4.6 10.4C4.22 10.03 4 9.53 4 9C4 7.2 6.5 5.7 9.5 5.7C10.9 5.7 12.3 6.1 13.3 6.7L15.3 4.7C13.59 3.55 11.56 2.96 9.5 3M9.5 11C13 11 16 14 16 16.5V20H3V16.5C3 14 6 11 9.5 11M10 12.5C7 12.5 5 14 5 17V18H7V17C7 16 7 13.5 10 12.5M23 7.3C23 8.93 21.91 10.6 20.38 10.97L19.71 10.29L19 9.6H19.75C20.75 9.6 21.5 8.22 21.5 7.2C21.5 6.18 20.65 5.14 19.65 5.14V3.64C21.5 3.64 23 5.45 23 7.3M17.65 6.73C17.03 6.12 16.65 5.28 16.65 4.35C16.65 2.5 18.15 1 20 1V2.5C19 2.5 18.15 3.33 18.15 4.35C18.15 5.37 19 6.2 20 6.2V7.7C19.18 7.7 18.42 7.95 17.79 8.38L16.72 7.31C17 7.09 17.32 6.89 17.65 6.73Z"; +var mdiKettlebell = "M16.2 10.7L16.8 8.3C16.9 8 17.3 6.6 16.5 5.4C15.9 4.5 14.7 4 13 4H11C9.3 4 8.1 4.5 7.5 5.4C6.7 6.6 7.1 7.9 7.2 8.3L7.8 10.7C6.7 11.8 6 13.3 6 15C6 17.1 7.1 18.9 8.7 20H15.3C16.9 18.9 18 17.1 18 15C18 13.3 17.3 11.8 16.2 10.7M9.6 9.5L9.1 7.8V7.7C9.1 7.7 8.9 7 9.2 6.6C9.4 6.2 10 6 11 6H13C13.9 6 14.6 6.2 14.9 6.5C15.2 6.9 15 7.6 15 7.6L14.5 9.5C13.7 9.2 12.9 9 12 9C11.1 9 10.3 9.2 9.6 9.5Z"; +var mdiKey = "M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z"; +var mdiKeyArrowRight = "M10.7 6C10.1 4.2 8.4 3 6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.5 12 10.1 10.8 10.7 9H15V12H18V9H22V6H10.7M6.5 9C5.7 9 5 8.3 5 7.5S5.7 6 6.5 6 8 6.7 8 7.5 7.3 9 6.5 9M13 21V19H8V17H13V15L16 18L13 21"; +var mdiKeyChain = "M12.67 13.67C12.2 14.13 11.63 14.5 11 14.73V23H8V21H5V18H8V14.72C6.26 14.1 5 12.46 5 10.5C5 8 7 6 9.5 6C9.54 6 9.57 6 9.6 6C9.13 6.95 8.92 8 9.03 9.08C8.44 9.28 8 9.84 8 10.5C8 11.33 8.67 12 9.5 12C9.73 12 9.95 11.94 10.15 11.85C10.79 12.69 11.67 13.32 12.67 13.67M20.73 19.44L17.97 20.6L17.19 18.76L14.43 19.93L13.26 17.16L16.03 16L14.76 13C12.91 13.08 11.11 12.05 10.35 10.25C9.39 7.96 10.47 5.32 12.76 4.35C13 4.25 13.26 4.18 13.5 4.12C12.84 2.87 11.5 2 10 2C7.79 2 6 3.79 6 6C6 6.08 6 6.16 6 6.24C5.7 6.5 5.4 6.82 5.15 7.15C5.06 6.78 5 6.4 5 6C5 3.24 7.24 1 10 1S15 3.24 15 6C15 7.42 14.4 8.67 13.45 9.57C13.87 10 14.5 10.13 15.08 9.88C15.85 9.56 16.2 8.68 15.88 7.92C15.85 7.83 15.8 7.74 15.74 7.66C15.9 7.13 16 6.58 16 6C16 5.37 15.9 4.76 15.72 4.19C17 4.55 18.1 5.44 18.65 6.76C19.41 8.56 18.89 10.57 17.5 11.81L20.73 19.44M13 8.6C13.37 8.19 13.65 7.71 13.82 7.18C13.28 7.45 12.97 8 13 8.6Z"; +var mdiKeyChainVariant = "M12.66 13.67C12.32 14 11.93 14.29 11.5 14.5V21L9.5 23L7.5 21L9.5 19.29L8 18L9.5 16.71L7.5 15V14.5C6 13.77 5 12.26 5 10.5C5 8 7 6 9.5 6C9.54 6 9.58 6 9.61 6C9.59 6.07 9.54 6.12 9.5 6.18C9.23 6.79 9.08 7.43 9.03 8.08C8.43 8.28 8 8.84 8 9.5C8 10.33 8.67 11 9.5 11C9.53 11 9.57 11 9.6 11C10.24 12.25 11.34 13.2 12.66 13.67M16 6C16 5.37 15.9 4.75 15.72 4.18C17.06 4.56 18.21 5.55 18.73 6.96C19.33 8.62 18.89 10.39 17.75 11.59L20 17.68L18.78 20.25L16.22 19.05L17.5 16.76L15.66 16.06L16.63 14.34L14.16 13.41L14 12.95C12.36 12.77 10.88 11.7 10.27 10.04C9.42 7.71 10.63 5.12 12.96 4.27C13.14 4.21 13.33 4.17 13.5 4.13C12.84 2.87 11.53 2 10 2C7.79 2 6 3.79 6 6C6 6.09 6 6.17 6.03 6.26C5.7 6.53 5.4 6.82 5.15 7.15C5.06 6.78 5 6.4 5 6C5 3.24 7.24 1 10 1S15 3.24 15 6C15 7.16 14.6 8.21 13.94 9.06C16.08 8.88 16 6 16 6M12.81 8.1C12.87 8.27 12.96 8.41 13.06 8.54C13.62 7.88 13.97 7.04 14 6.11C13.89 6.13 13.8 6.15 13.7 6.18C12.92 6.47 12.5 7.33 12.81 8.1Z"; +var mdiKeyChange = "M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z"; +var mdiKeyLink = "M6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.46 12 10.13 10.75 10.74 9H15V12H18V9H22V6H10.74C10.13 4.25 8.46 3 6.5 3M6.5 6C7.33 6 8 6.67 8 7.5S7.33 9 6.5 9 5 8.33 5 7.5 5.67 6 6.5 6M10 14C8.39 14 6 15.07 6 18C6 20.94 8.39 22 10 22H11V20H10C9.67 20 8 19.9 8 18C8 16.17 9.54 16 10 16H11V14M13 14V16H14C14.33 16 16 16.1 16 18C16 19.83 14.46 20 14 20H13V22H14C15.61 22 18 20.94 18 18C18 15.07 15.61 14 14 14M9 17V19H15V17Z"; +var mdiKeyMinus = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z"; +var mdiKeyOutline = "M22,19H16V15H13.32C12.18,17.42 9.72,19 7,19C3.14,19 0,15.86 0,12C0,8.14 3.14,5 7,5C9.72,5 12.17,6.58 13.32,9H24V15H22V19M18,17H20V13H22V11H11.94L11.71,10.33C11,8.34 9.11,7 7,7A5,5 0 0,0 2,12A5,5 0 0,0 7,17C9.11,17 11,15.66 11.71,13.67L11.94,13H18V17M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15M7,11A1,1 0 0,0 6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11Z"; +var mdiKeyPlus = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z"; +var mdiKeyRemove = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z"; +var mdiKeyStar = "M6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.46 12 10.13 10.75 10.74 9H15V12H18V9H22V6H10.74C10.13 4.25 8.46 3 6.5 3M6.5 6C7.33 6 8 6.67 8 7.5S7.33 9 6.5 9 5 8.33 5 7.5 5.67 6 6.5 6M12 14L10.87 16.64L8 16.89L10.18 18.77L9.5 21.58L12 20.09L14.45 21.58L13.8 18.77L16 16.89L13.11 16.64Z"; +var mdiKeyVariant = "M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z"; +var mdiKeyWireless = "M4.93 5.92L6.34 7.33A8 8 0 0 1 17.66 7.33L19.07 5.92A10 10 0 0 0 4.93 5.92M7.76 8.75L9.17 10.16A4 4 0 0 1 14.83 10.16L16.24 8.75A6 6 0 0 0 7.76 8.75M10.76 15A4.5 4.5 0 1 0 10.76 18H15V21H18V18H22V15M6.5 18A1.5 1.5 0 1 1 8 16.5A1.5 1.5 0 0 1 6.5 18Z"; +var mdiKeyboard = "M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z"; +var mdiKeyboardBackspace = "M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z"; +var mdiKeyboardCaps = "M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z"; +var mdiKeyboardClose = "M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z"; +var mdiKeyboardEsc = "M1 7H7V9H3V11H7V13H3V15H7V17H1V7M11 7H15V9H11V11H13C14.11 11 15 11.9 15 13V15C15 16.11 14.11 17 13 17H9V15H13V13H11C9.9 13 9 12.11 9 11V9C9 7.9 9.9 7 11 7M19 7H21C22.11 7 23 7.9 23 9V10H21V9H19V15H21V14H23V15C23 16.11 22.11 17 21 17H19C17.9 17 17 16.11 17 15V9C17 7.9 17.9 7 19 7Z"; +var mdiKeyboardF1 = "M6 7H12V9H8V11H11V13H8V17H6V7M14 7H18V17H16V9H14V7Z"; +var mdiKeyboardF10 = "M2 7H8V9H4V11H7V13H4V17H2V7M10 7H14V17H12V9H10V7M18 7H20C21.11 7 22 7.9 22 9V15C22 16.11 21.11 17 20 17H18C16.9 17 16 16.11 16 15V9C16 7.9 16.9 7 18 7M18 9V15H20V9H18Z"; +var mdiKeyboardF11 = "M3 7H9V9H5V11H8V13H5V17H3V7M11 7H15V17H13V9H11V7M17 7H21V17H19V9H17V7Z"; +var mdiKeyboardF12 = "M2 7H8V9H4V11H7V13H4V17H2V7M16 7H20C21.11 7 22 7.9 22 9V11C22 12.11 21.11 13 20 13H18V15H22V17H16V13C16 11.9 16.9 11 18 11H20V9H16V7M10 7H14V17H12V9H10V7Z"; +var mdiKeyboardF2 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H17C18.11 7 19 7.9 19 9V11C19 12.11 18.11 13 17 13H15V15H19V17H13V13C13 11.9 13.9 11 15 11H17V9H13V7Z"; +var mdiKeyboardF3 = "M5 7H11V9H7V11H10V13H7V17H5V7M19 15C19 16.11 18.11 17 17 17H13V15H17V13H15V11H17V9H13V7H17C18.1 7 19 7.89 19 9V10.5C19 11.33 18.33 12 17.5 12C18.33 12 19 12.67 19 13.5V15Z"; +var mdiKeyboardF4 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H15V11H17V7H19V17H17V13H13V7Z"; +var mdiKeyboardF5 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H13V15H17V13H13V7Z"; +var mdiKeyboardF6 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H15C13.9 17 13 16.11 13 15V9C13 7.9 13.9 7 15 7M15 13V15H17V13H15Z"; +var mdiKeyboardF7 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 17H13L17 9H13V7H19V9L15 17Z"; +var mdiKeyboardF8 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 13V15H17V13H15M15 9V11H17V9H15M15 17C13.9 17 13 16.11 13 15V13.5C13 12.67 13.67 12 14.5 12C13.67 12 13 11.33 13 10.5V9C13 7.9 13.9 7 15 7H17C18.1 7 19 7.89 19 9V10.5C19 11.33 18.33 12 17.5 12C18.33 12 19 12.67 19 13.5V15C19 16.11 18.11 17 17 17H15Z"; +var mdiKeyboardF9 = "M5 7H11V9H7V11H10V13H7V17H5V7M17 17H13V15H17V13H15C13.9 13 13 12.11 13 11V9C13 7.9 13.9 7 15 7H17C18.11 7 19 7.9 19 9V15C19 16.11 18.11 17 17 17M17 11V9H15V11H17Z"; +var mdiKeyboardOff = "M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z"; +var mdiKeyboardOffOutline = "M1,4.27L2.47,5.74C2.18,6.08 2,6.5 2,7V17A2,2 0 0,0 4,19H15.73L18.73,22L20,20.72L2.28,3L1,4.27M4,17V7.27L5,8.27V10H6.73L8,11.27V13H9.73L10.73,14H8V16H12.73L13.73,17H4M5,11H7V13H5V11M17,11H19V13H17V11M19,10H17V8H19V10M14,11H16V13H14.83L14,12.17V11M13,10H11.83L11,9.17V8H13V10M22,7V17C22,17.86 21.45,18.58 20.7,18.87L18.83,17H20V7H8.83L6.83,5H20A2,2 0 0,1 22,7M16,10H14V8H16V10Z"; +var mdiKeyboardOutline = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H20V17H4V7M5,8V10H7V8H5M8,8V10H10V8H8M11,8V10H13V8H11M14,8V10H16V8H14M17,8V10H19V8H17M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M14,11V13H16V11H14M17,11V13H19V11H17M8,14V16H16V14H8Z"; +var mdiKeyboardReturn = "M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z"; +var mdiKeyboardSettings = "M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; +var mdiKeyboardSettingsOutline = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H20V17H4V7M5,8V10H7V8H5M8,8V10H10V8H8M11,8V10H13V8H11M14,8V10H16V8H14M17,8V10H19V8H17M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M14,11V13H16V11H14M17,11V13H19V11H17M8,14V16H16V14H8Z"; +var mdiKeyboardSpace = "M3 15H5V19H19V15H21V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V15Z"; +var mdiKeyboardTab = "M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z"; +var mdiKeyboardVariant = "M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z"; +var mdiKhanda = "M16 20C19.72 18 22 15.27 22 12C22 9.34 20.46 6.9 17.89 5H17.82C19 6.35 19.68 8.09 19.68 10C19.68 13 18 15 15.5 16.83C15.5 16.84 14.38 17.54 13 18.41V17.33L15 16C15 16 14.8 15.4 14.58 14.46C16.6 13.58 18 11.69 18 9.5C18 7.34 16.64 5.47 14.65 4.57C14.84 3.63 15 3 15 3L12 1L9 3C9 3 9.16 3.63 9.35 4.57C7.37 5.47 6 7.34 6 9.5C6 11.69 7.4 13.58 9.42 14.46C9.2 15.4 9 16 9 16L11 17.33V18.41C9.62 17.54 8.5 16.84 8.5 16.83C6 15 4.32 13 4.32 10C4.32 8.09 5 6.35 6.18 5H6.12C3.54 6.9 2 9.34 2 12C2 15.27 4.29 18 8 20L9 18.5L10.92 19.73L7.34 22L8 23L11 21.07V23H13V21.07L16 23L16.66 22L13.08 19.73L15 18.5L16 20M16.75 9.5C16.75 11.09 15.76 12.46 14.31 13.19C14.14 12.23 14 11.12 14 10C14 8.67 14.2 7.15 14.42 5.86C15.81 6.6 16.75 7.95 16.75 9.5M7.25 9.5C7.25 7.95 8.19 6.6 9.59 5.86C9.8 7.15 10 8.67 10 10C10 11.12 9.86 12.23 9.69 13.19C8.24 12.46 7.25 11.09 7.25 9.5Z"; +var mdiKickstarter = "M19.3 10.2L17.5 12L19.3 13.8C21.19 15.67 21.19 18.72 19.3 20.59C17.42 22.46 14.35 22.46 12.47 20.59L11.8 19.93C10.93 21.19 9.5 22 7.83 22C5.16 22 3 19.85 3 17.2V6.8C3 4.15 5.16 2 7.83 2C9.5 2 10.93 2.82 11.8 4.07L12.47 3.41C14.35 1.54 17.42 1.54 19.3 3.41C21.19 5.28 21.19 8.33 19.3 10.2Z"; +var mdiKlingon = "M4.79 21.5L4.71 21.24C4.53 20.65 4.47 20.08 4.5 19.4C4.6 18.17 5.14 17.31 5.82 16.59C5.64 16 5.53 15.39 5.53 14.74C5.53 13 6.26 11.44 7.45 10.3C8.33 9.46 9.46 8.86 10.71 8.6C11.37 6.23 11.8 3.8 12 1.5C12.24 3.5 12.65 6.12 13.3 8.58C14.6 8.82 15.76 9.43 16.67 10.3C17.85 11.44 18.59 13 18.59 14.74C18.59 15.35 18.5 15.93 18.33 16.5C19.21 16.92 20.2 17.17 21.5 17.29L21.44 17.44C21.32 17.77 21 18 20.71 18.18L20.69 18.19C20.13 18.57 19.18 19 17.85 19C17.7 19 17.56 19 17.41 19C17.23 19 17.06 18.97 16.9 18.95C16.83 19 16.75 19.1 16.67 19.18C15.5 20.31 13.86 21 12.06 21C10.27 21 8.64 20.31 7.46 19.18C7.42 19.14 7.38 19.1 7.34 19.06C6.34 19.59 5.54 20.33 4.94 21.27L4.8 21.5M6.5 15.94C6.65 15.82 8.2 14.5 8.63 13.78L8.73 13.61C9.65 15 10.4 16.28 11.43 18.08L11.22 18.09C10.08 18.16 9.05 18.37 8.15 18.7C9.17 19.62 10.55 20.19 12.06 20.19C13.54 20.19 14.88 19.65 15.89 18.77C15.64 18.72 15.39 18.65 15.15 18.59C14.38 18.41 13.65 18.22 12.81 18.19L12.62 18.18L12.7 18C13.1 17.2 14.8 14.41 15.23 13.63L15.34 13.81C16 14.77 16.73 15.5 17.58 16.07C17.69 15.64 17.75 15.2 17.75 14.75C17.75 13.25 17.11 11.89 16.09 10.9C15.4 10.24 14.53 9.74 13.55 9.5C13.85 10.5 14.2 11.5 14.59 12.35L14.62 12.4L14.59 12.46C14.2 13.22 13.76 13.95 13.33 14.66C12.94 15.3 12.54 15.96 12.18 16.64L12.08 16.83L11.96 16.65C11.39 15.82 9.75 13.06 9.41 12.5C9.81 11.5 10.15 10.5 10.45 9.5C9.5 9.78 8.7 10.26 8.03 10.9C7 11.88 6.37 13.25 6.37 14.74C6.37 15.16 6.42 15.56 6.5 15.95"; +var mdiKnife = "M20.62,2C23.97,7.61 12.47,20.15 12.47,20.15L9.6,17.28L4.91,22L2.77,19.86L20.62,2Z"; +var mdiKnifeMilitary = "M22,2L17.39,3.75L10.46,10.68L14,14.22L20.92,7.29C22.43,5.78 22,2 22,2M8.33,10L6.92,11.39L8.33,12.8L2.68,18.46L6.21,22L11.87,16.34L13.28,17.76L14.7,16.34L8.33,10Z"; +var mdiKoala = "M19 3C18.1 3 15.5 3 14.3 6.1C13.9 6 13.4 6 13 6H11C10.6 6 10.1 6 9.7 6.1C8.5 3 5.9 3 5 3C4 3 1 4 1 9C1 12.6 3.5 13.6 5 13.9V15C5 18.3 7.7 21 11 21H13C16.3 21 19 18.3 19 15V13.9C20.5 13.6 23 12.6 23 9C23 4 20 3 19 3M5 12V12.4C2.9 11.8 3.3 9.5 4.3 8.7C4 8.3 3 9 3 8.6C3 8.1 4.8 7.4 5.1 7.3C4.8 6.8 3.6 7 3.6 6.6C3.6 6.3 4.8 5.8 5.8 6C6.3 6.1 6.9 6.3 7.4 6.7C6 8 5 9.8 5 12M8.5 15C6.5 15 6.5 12 8.5 12C10.5 12 10.5 15 8.5 15M12.5 18H11.5C10.8 18 10.3 17.3 10.6 16.7L11.3 13.7C11.4 13.3 11.8 13.1 12.1 13C12.4 13 12.7 13.2 12.9 13.7L13.6 16.7C13.7 17.3 13.2 18 12.5 18M15.5 15C13.5 15 13.5 12 15.5 12C17.5 12 17.5 15 15.5 15M19.7 8.6C20.7 9.4 21.1 11.7 19 12.3C19.1 10.1 18.1 8 16.6 6.7C17.1 6.3 17.7 6.1 18.2 6C19.2 5.8 20.4 6.2 20.4 6.6C20.4 7 19.2 6.8 18.9 7.2C19.2 7.4 21 8.1 21 8.6C21 9 20.1 8.3 19.7 8.6Z"; +var mdiKodi = "M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z"; +var mdiKubernetes = "M13.95 13.5H13.72C13.54 13.61 13.46 13.82 13.54 14L14.4 16.11C15.23 15.58 15.86 14.79 16.19 13.86L13.96 13.5H13.95M10.5 13.79C10.44 13.62 10.29 13.5 10.12 13.5H10.04L7.82 13.87C8.15 14.79 8.78 15.57 9.61 16.1L10.46 14.03V14C10.5 13.95 10.5 13.86 10.5 13.79M12.33 14.6C12.23 14.42 12 14.35 11.82 14.45C11.75 14.5 11.7 14.53 11.67 14.6H11.66L10.57 16.57C11.35 16.83 12.19 16.88 13 16.69C13.14 16.66 13.29 16.62 13.43 16.57L12.34 14.6H12.33M15.78 10.03L14.1 11.5L14.11 11.53C13.95 11.67 13.93 11.91 14.07 12.06C14.12 12.12 14.18 12.16 14.25 12.18L14.26 12.19L16.43 12.81C16.5 11.84 16.29 10.86 15.78 10.03M12.67 10.19C12.68 10.4 12.85 10.56 13.06 10.55C13.14 10.55 13.21 10.53 13.27 10.5H13.28L15.11 9.19C14.41 8.5 13.5 8.07 12.54 7.95L12.67 10.19M10.73 10.5C10.9 10.61 11.13 10.58 11.25 10.41C11.3 10.35 11.32 10.28 11.33 10.2H11.34L11.46 7.95C11.31 7.97 11.16 8 11 8.03C10.2 8.21 9.46 8.61 8.88 9.19L10.72 10.5H10.73M9.74 12.19C9.94 12.14 10.06 11.93 10 11.73C10 11.65 9.95 11.59 9.89 11.54V11.53L8.21 10C7.69 10.86 7.47 11.84 7.58 12.82L9.74 12.2V12.19M11.38 12.85L12 13.15L12.62 12.85L12.77 12.18L12.34 11.65H11.65L11.22 12.18L11.38 12.85M22.27 14.17L20.5 6.5C20.41 6.08 20.13 5.74 19.76 5.56L12.59 2.13C12.22 1.96 11.78 1.96 11.4 2.13L4.24 5.56C3.87 5.74 3.59 6.08 3.5 6.5L1.73 14.17C1.68 14.37 1.68 14.57 1.73 14.76C1.74 14.82 1.76 14.88 1.78 14.94C1.81 15.03 1.86 15.13 1.91 15.21C1.94 15.25 1.96 15.29 2 15.32L6.95 21.5C6.97 21.5 7 21.54 7 21.56C7.1 21.65 7.19 21.72 7.28 21.78C7.4 21.86 7.54 21.92 7.68 21.95C7.79 22 7.91 22 8 22H16.12C16.19 22 16.26 21.97 16.32 21.95C16.37 21.94 16.42 21.92 16.46 21.91C16.5 21.89 16.53 21.88 16.57 21.86C16.62 21.84 16.67 21.81 16.72 21.78C16.84 21.7 16.95 21.6 17.05 21.5L17.2 21.3L22 15.32C22.1 15.2 22.17 15.07 22.22 14.94C22.24 14.88 22.26 14.82 22.27 14.76C22.32 14.57 22.32 14.36 22.27 14.17M14.84 17.16C14.86 17.22 14.88 17.28 14.91 17.33C14.87 17.41 14.85 17.5 14.88 17.59C15 17.83 15.11 18.05 15.26 18.27C15.34 18.38 15.42 18.5 15.5 18.61C15.5 18.64 15.53 18.69 15.54 18.73C15.66 18.93 15.6 19.19 15.39 19.32S14.92 19.37 14.8 19.17C14.79 19.14 14.78 19.12 14.77 19.09C14.75 19.06 14.73 19 14.71 19C14.66 18.85 14.62 18.72 14.59 18.59C14.5 18.34 14.42 18.1 14.29 17.87C14.24 17.8 14.16 17.75 14.08 17.73L14 17.57C12.71 18.05 11.3 18.05 10.03 17.56L9.93 17.74C9.86 17.75 9.79 17.78 9.74 17.83C9.6 18.07 9.5 18.32 9.41 18.6C9.38 18.73 9.34 18.86 9.29 19C9.27 19 9.25 19.07 9.23 19.1C9.15 19.32 8.91 19.44 8.68 19.36C8.46 19.28 8.34 19.04 8.42 18.81C8.43 18.78 8.45 18.76 8.46 18.73C8.5 18.7 8.5 18.65 8.5 18.62C8.59 18.5 8.66 18.39 8.74 18.27C8.9 18.06 9.03 17.82 9.13 17.58C9.14 17.5 9.13 17.41 9.1 17.33L9.17 17.15C8 16.45 7.12 15.36 6.7 14.06L6.5 14.09C6.44 14.04 6.35 14 6.27 14C6 14.05 5.76 14.13 5.5 14.22C5.39 14.28 5.26 14.33 5.13 14.37C5.1 14.38 5.06 14.39 5 14.4C4.78 14.47 4.54 14.35 4.46 14.13C4.39 13.9 4.5 13.66 4.74 13.58C4.76 13.58 4.79 13.57 4.82 13.57V13.56H4.83L4.94 13.54C5.08 13.5 5.22 13.5 5.35 13.5C5.61 13.5 5.87 13.44 6.12 13.38C6.2 13.33 6.26 13.27 6.31 13.19L6.5 13.14C6.29 11.78 6.6 10.41 7.36 9.27L7.22 9.15C7.22 9.06 7.19 8.97 7.14 8.9C6.94 8.73 6.73 8.58 6.5 8.45C6.38 8.39 6.26 8.32 6.14 8.24C6.12 8.22 6.08 8.19 6.06 8.17L6.05 8.16C5.85 8 5.8 7.74 5.94 7.53C6.03 7.43 6.15 7.38 6.29 7.38C6.4 7.39 6.5 7.43 6.59 7.5L6.68 7.57C6.78 7.66 6.87 7.77 6.96 7.87C7.14 8.06 7.33 8.24 7.54 8.39C7.62 8.43 7.71 8.44 7.8 8.42L7.95 8.53C8.7 7.73 9.68 7.17 10.75 6.93C11 6.87 11.27 6.83 11.53 6.81L11.54 6.63C11.61 6.57 11.65 6.5 11.68 6.4C11.69 6.14 11.67 5.88 11.63 5.63C11.6 5.5 11.58 5.36 11.57 5.22V5.1C11.55 4.86 11.72 4.65 11.96 4.62S12.4 4.77 12.43 5V5.22C12.42 5.36 12.4 5.5 12.37 5.63C12.33 5.88 12.31 6.14 12.32 6.4C12.34 6.5 12.39 6.57 12.46 6.62L12.47 6.81C13.83 6.93 15.09 7.54 16.03 8.53L16.19 8.41C16.28 8.43 16.37 8.42 16.45 8.38C16.66 8.23 16.86 8.05 17.03 7.86C17.12 7.76 17.21 7.66 17.31 7.56C17.34 7.54 17.38 7.5 17.41 7.5C17.58 7.32 17.85 7.32 18 7.5C18.19 7.66 18.18 7.93 18 8.1C18 8.12 17.97 8.14 17.94 8.16C17.92 8.18 17.88 8.21 17.85 8.23C17.74 8.31 17.62 8.38 17.5 8.44C17.27 8.57 17.05 8.72 16.86 8.89C16.8 8.96 16.77 9.04 16.78 9.13L16.62 9.27C17.39 10.4 17.7 11.78 17.5 13.13L17.69 13.18C17.73 13.26 17.8 13.32 17.88 13.36C18.13 13.43 18.39 13.47 18.65 13.5H19.06C19.09 13.53 19.14 13.54 19.18 13.55C19.42 13.58 19.58 13.8 19.55 14.04C19.5 14.27 19.31 14.44 19.07 14.41C19.04 14.4 19 14.4 19 14.39V14.38C18.94 14.38 18.9 14.37 18.86 14.36C18.73 14.32 18.61 14.27 18.5 14.21C18.24 14.11 18 14.04 17.73 14C17.64 14 17.56 14 17.5 14.08C17.43 14.07 17.37 14.06 17.31 14.05C16.9 15.36 16 16.46 14.84 17.16Z"; +var mdiLabel = "M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z"; +var mdiLabelMultiple = "M4 19H13L11 21H4C3.5 21 2.97 20.79 2.59 20.41C2.21 20.03 2 19.5 2 19V9H4V19M17.63 5.84C17.27 5.33 16.67 5 16 5H8C6.9 5 6 5.9 6 7V15C6 16.1 6.9 17 8 17H16C16.67 17 17.27 16.66 17.63 16.15L22 11L17.63 5.84Z"; +var mdiLabelMultipleOutline = "M4 18H13L11 20H4C3.5 20 2.97 19.79 2.59 19.41C2.21 19.03 2 18.5 2 18V8H4V18M17.63 4.84C17.27 4.33 16.67 4 16 4H8C6.9 4 6 4.9 6 6V14C6 15.1 6.9 16 8 16H16C16.67 16 17.27 15.66 17.63 15.15L22 10L17.63 4.84M16 14H8V6H16L19.55 10Z"; +var mdiLabelOff = "M2,4.27L3.28,3L20,19.72L18.73,21L16.63,18.9C16.43,18.96 16.22,19 16,19H5A2,2 0 0,1 3,17V7C3,6.5 3.17,6.07 3.46,5.73L2,4.27M17.63,5.84L22,12L19,16.2L7.83,5H16C16.67,5 17.27,5.33 17.63,5.84Z"; +var mdiLabelOffOutline = "M2,4.27L3.28,3L20,19.72L18.73,21L16.63,18.9C16.43,18.96 16.22,19 16,19H5A2,2 0 0,1 3,17V7C3,6.5 3.17,6.07 3.46,5.73L2,4.27M5,17H14.73L5,7.27V17M19.55,12L16,7H9.82L7.83,5H16C16.67,5 17.27,5.33 17.63,5.84L22,12L19,16.2L17.59,14.76L19.55,12Z"; +var mdiLabelOutline = "M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z"; +var mdiLabelPercent = "M17.63 5.84C17.27 5.33 16.67 5 16 5H5C3.9 5 3 5.9 3 7V17C3 18.11 3.9 19 5 19H16C16.67 19 17.27 18.66 17.63 18.15L22 12L17.63 5.84M8.45 8.03C9.23 8.03 9.87 8.67 9.87 9.45S9.23 10.87 8.45 10.87 7.03 10.23 7.03 9.45 7.67 8.03 8.45 8.03M13.55 15.97C12.77 15.97 12.13 15.33 12.13 14.55S12.77 13.13 13.55 13.13 14.97 13.77 14.97 14.55 14.33 15.97 13.55 15.97M8.2 16L7 14.8L13.8 8L15 9.2L8.2 16Z"; +var mdiLabelPercentOutline = "M16 17H5V7H16L19.55 12M17.63 5.84C17.27 5.33 16.67 5 16 5H5C3.9 5 3 5.9 3 7V17C3 18.11 3.9 19 5 19H16C16.67 19 17.27 18.66 17.63 18.15L22 12L17.63 5.84M13.8 8L15 9.2L8.2 16L7 14.8M8.45 8.03C9.23 8.03 9.87 8.67 9.87 9.45S9.23 10.87 8.45 10.87 7.03 10.23 7.03 9.45 7.67 8.03 8.45 8.03M13.55 13.13C14.33 13.13 14.97 13.77 14.97 14.55C14.97 15.33 14.33 15.97 13.55 15.97C12.77 15.97 12.13 15.33 12.13 14.55C12.13 13.77 12.77 13.13 13.55 13.13Z"; +var mdiLabelVariant = "M3.5,19L8.34,12L3.5,5H14.5C15.17,5 15.72,5.3 16.13,5.86L20.5,12L16.13,18.14C15.72,18.7 15.17,19 14.5,19H3.5Z"; +var mdiLabelVariantOutline = "M6.5,17H15L18.5,12L15,7H6.5L10,12L6.5,17M15,19H3L7.5,12L3,5H15C15.69,5 16.23,5.3 16.64,5.86L21,12L16.64,18.14C16.23,18.7 15.69,19 15,19Z"; +var mdiLadder = "M14 1V3H10V1H8V22H10V20H14V22H16V1H14M14 5V8H10V5H14M14 10V13H10V10H14M10 18V15H14V18H10Z"; +var mdiLadybug = "M12,5C12.74,5 13.47,5.1 14.15,5.29L15.78,2.46C16.06,2 16.67,1.82 17.15,2.1C17.63,2.37 17.79,3 17.5,3.46L16,6.07C17.22,6.78 18.23,7.79 18.93,9H5.07C5.77,7.79 6.78,6.78 8,6.07L6.5,3.46C6.21,3 6.37,2.37 6.85,2.1C7.33,1.82 7.94,2 8.22,2.46L9.85,5.29C10.53,5.1 11.26,5 12,5M20,13C20,17.17 16.82,20.59 12.75,20.97V10.5H19.6C19.86,11.29 20,12.13 20,13M4,13C4,12.13 4.14,11.29 4.4,10.5H11.25V20.97C7.18,20.59 4,17.17 4,13Z"; +var mdiLambda = "M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z"; +var mdiLamp = "M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z"; +var mdiLamps = "M10 2L12 9H2L4 2M6 10H8V20H11V22H3V20H6V10M20 8L22 15H12L14 8M16 16H18V20H21V22H13V20H16V16Z"; +var mdiLan = "M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z"; +var mdiLanCheck = "M4 1C2.89 1 2 1.89 2 3V7C2 8.11 2.89 9 4 9H1V11H13V9H10C11.11 9 12 8.11 12 7V3C12 1.89 11.11 1 10 1H4M4 3H10V7H4V3M14 13C12.89 13 12 13.89 12 15V19C12 20.11 12.89 21 14 21H11V23H23V21H20C21.11 21 22 20.11 22 19V15C22 13.89 21.11 13 20 13H14M14 15H20V19H14V15M5.5 20.5L10.5 15.5L9 14L5.5 17.5L3.5 15.5L2 17L5.5 20.5Z"; +var mdiLanConnect = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z"; +var mdiLanDisconnect = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z"; +var mdiLanPending = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z"; +var mdiLanguageC = "M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z"; +var mdiLanguageCpp = "M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z"; +var mdiLanguageCsharp = "M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z"; +var mdiLanguageCss3 = "M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z"; +var mdiLanguageFortran = "M5 4V6H6C6.55 6 7 6.45 7 7V17C7 17.55 6.55 18 6 18H5V20H14V18H12C11.45 18 11 17.55 11 17V13H13C13.55 13 14 13.45 14 14V16H16V8H14V10C14 10.55 13.55 11 13 11H11V6H16C17.11 6 18 7.34 18 9V10H20V4Z"; +var mdiLanguageGo = "M2.64,10.33L2.62,10.27L2.84,10L2.96,9.92H6.8L6.83,10L6.65,10.26L6.54,10.32L2.64,10.33M1.03,11.31L1,11.26L1.22,10.97L1.34,10.91H6.24L6.29,11L6.21,11.24L6.11,11.31H1.03M3.63,12.3L3.59,12.24L3.75,11.96L3.85,11.9H6L6.07,11.97L6.05,12.22L5.97,12.3H3.63M14.78,10.14L13,10.61C12.81,10.65 12.8,10.66 12.66,10.5C12.5,10.32 12.39,10.21 12.16,10.1C11.5,9.76 10.83,9.86 10.22,10.25C9.5,10.73 9.11,11.42 9.12,12.3C9.13,13.16 9.72,13.87 10.57,14C11.3,14.09 11.91,13.83 12.4,13.28L12.69,12.89H10.62C10.4,12.89 10.35,12.75 10.42,12.57L10.97,11.39C11,11.33 11.08,11.22 11.24,11.22H14.68C14.83,10.72 15.09,10.26 15.43,9.81C16.21,8.78 17.16,8.24 18.43,8C19.5,7.82 20.56,7.93 21.5,8.57C22.34,9.15 22.87,9.93 23,10.96C23.19,12.41 22.76,13.59 21.76,14.61C21.05,15.33 20.18,15.78 19.19,16L18.33,16.08C17.35,16.06 16.46,15.78 15.71,15.13C15.19,14.68 14.83,14.14 14.65,13.5C14.5,13.74 14.38,13.97 14.21,14.2C13.44,15.22 12.43,15.85 11.15,16C10.1,16.16 9.12,15.95 8.26,15.31C7.47,14.71 7,13.91 6.9,12.92C6.76,11.75 7.1,10.7 7.81,9.78C8.57,8.78 9.58,8.15 10.82,7.92C11.82,7.74 12.79,7.86 13.66,8.44C14.23,8.82 14.63,9.34 14.9,9.96C14.94,10.05 14.9,10.11 14.78,10.14M20.89,11.74L20.86,11.38C20.67,10.32 19.69,9.72 18.67,9.95C17.66,10.17 17,10.8 16.79,11.81C16.6,12.65 17,13.5 17.77,13.84C18.36,14.1 18.96,14.06 19.53,13.78C20.37,13.35 20.84,12.66 20.89,11.74Z"; +var mdiLanguageHaskell = "M2.08,19L6.75,12L2.08,5H5.58L10.25,12L5.58,19H2.08M6.75,19L11.42,12L6.75,5H10.25L19.59,19H16.09L13.17,14.63L10.25,19H6.75M18.03,14.92L16.5,12.58H21.92V14.92H18.03M15.7,11.42L14.14,9.08H21.92V11.42H15.7Z"; +var mdiLanguageHtml5 = "M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z"; +var mdiLanguageJava = "M16.5,6.08C16.5,6.08 9.66,7.79 12.94,11.56C13.91,12.67 12.69,13.67 12.69,13.67C12.69,13.67 15.14,12.42 14,10.82C12.94,9.35 12.14,8.62 16.5,6.08M12.03,7.28C16.08,4.08 14,2 14,2C14.84,5.3 11.04,6.3 9.67,8.36C8.73,9.76 10.13,11.27 12,13C11.29,11.3 8.78,9.84 12.03,7.28M9.37,17.47C6.29,18.33 11.25,20.1 15.16,18.43C14.78,18.28 14.41,18.1 14.06,17.89C12.7,18.2 11.3,18.26 9.92,18.07C8.61,17.91 9.37,17.47 9.37,17.47M14.69,15.79C12.94,16.17 11.13,16.26 9.35,16.05C8.04,15.92 8.9,15.28 8.9,15.28C5.5,16.41 10.78,17.68 15.5,16.3C15.21,16.19 14.93,16 14.69,15.79M18.11,19.09C18.11,19.09 18.68,19.56 17.5,19.92C15.22,20.6 8.07,20.81 6.09,19.95C5.38,19.64 6.72,19.21 7.14,19.12C7.37,19.06 7.6,19.04 7.83,19.04C7.04,18.5 2.7,20.14 5.64,20.6C13.61,21.9 20.18,20 18.11,19.09M15.37,14.23C15.66,14.04 15.97,13.88 16.29,13.74C16.29,13.74 14.78,14 13.27,14.14C11.67,14.3 10.06,14.32 8.46,14.2C6.11,13.89 9.75,13 9.75,13C8.65,13 7.57,13.26 6.59,13.75C4.54,14.75 11.69,15.2 15.37,14.23M16.27,16.65C16.25,16.69 16.23,16.72 16.19,16.75C21.2,15.44 19.36,12.11 16.96,12.94C16.83,13 16.72,13.08 16.65,13.19C16.79,13.14 16.93,13.1 17.08,13.07C18.28,12.83 20,14.7 16.27,16.65M16.4,21.26C13.39,21.78 10.31,21.82 7.28,21.4C7.28,21.4 7.74,21.78 10.09,21.93C13.69,22.16 19.22,21.8 19.35,20.1C19.38,20.11 19.12,20.75 16.4,21.26Z"; +var mdiLanguageJavascript = "M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z"; +var mdiLanguageKotlin = "M2 2H22L12 12L22 22H2Z"; +var mdiLanguageLua = "M10.5,5A8.5,8.5 0 0,0 2,13.5A8.5,8.5 0 0,0 10.5,22A8.5,8.5 0 0,0 19,13.5A8.5,8.5 0 0,0 10.5,5M13.5,13A2.5,2.5 0 0,1 11,10.5A2.5,2.5 0 0,1 13.5,8A2.5,2.5 0 0,1 16,10.5A2.5,2.5 0 0,1 13.5,13M19.5,2A2.5,2.5 0 0,0 17,4.5A2.5,2.5 0 0,0 19.5,7A2.5,2.5 0 0,0 22,4.5A2.5,2.5 0 0,0 19.5,2"; +var mdiLanguageMarkdown = "M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z"; +var mdiLanguageMarkdownOutline = "M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M3.44 6.94C3.18 6.94 2.96 7.15 2.96 7.41V16.6C2.96 16.85 3.18 17.06 3.44 17.06H20.56C20.82 17.06 21.04 16.85 21.04 16.6V7.41C21.04 7.15 20.82 6.94 20.56 6.94H3.44M4.89 15.19V8.81H6.81L8.73 11.16L10.65 8.81H12.58V15.19H10.65V11.53L8.73 13.88L6.81 11.53V15.19H4.89M16.9 15.19L14 12.09H15.94V8.81H17.86V12.09H19.79L16.9 15.19"; +var mdiLanguagePhp = "M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z"; +var mdiLanguagePython = "M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z"; +var mdiLanguageR = "M12,4.29C6.5,4.29 2,7.29 2,11C2,14.28 5.56,17 10.24,17.58V19.71H13.65V17.59C14.5,17.5 15.29,17.34 16.04,17.11L17.42,19.71H21.28L18.96,15.8C20.83,14.58 22,12.87 22,11C22,7.29 17.5,4.29 12,4.29V4.29M13.53,6.91C17.73,6.91 20.83,8.31 20.83,11.5C20.83,13.21 19.91,14.41 18.41,15.15C18.32,15.1 18.24,15.05 18.19,15C17.83,14.84 17.23,14.66 17.23,14.66C17.23,14.66 20.21,14.44 20.21,11.47C20.21,8.5 17.09,8.45 17.09,8.45H10.24V15.61C7.69,14.87 5.93,13.3 5.93,11.5C5.93,8.96 9.33,6.91 13.53,6.91M13.68,10.89H15.75C15.75,10.89 16.7,10.84 16.7,11.83C16.7,12.8 15.75,12.8 15.75,12.8H13.68V10.89M13.65,15.3H14.57C14.75,15.3 14.84,15.35 15,15.5C15.13,15.6 15.27,15.79 15.39,15.96C14.84,16.03 14.26,16.06 13.65,16.06V15.3Z"; +var mdiLanguageRuby = "M18.8,2.07C21.32,2.5 22.04,4.23 22,6.04V6L20.86,20.93L6.08,21.94H6.09C4.86,21.89 2.13,21.77 2,17.95L3.37,15.45L6.14,21.91L8.5,14.29L8.45,14.3L8.47,14.28L16.18,16.74L14.19,8.96L21.54,8.5L15.75,3.76L18.8,2.06V2.07M2,17.91V17.93L2,17.91V17.91M6.28,6.23C9.24,3.28 13.07,1.54 14.54,3.03C16,4.5 14.46,8.12 11.5,11.06C8.5,14 4.73,15.84 3.26,14.36C1.79,12.87 3.3,9.17 6.27,6.23H6.28Z"; +var mdiLanguageRubyOnRails = "M19.8,16.7C19.8,16.7 21.6,16.5 21.6,14.3C21.6,12.1 19.5,11.8 19.5,11.8H15.7V19H17.6V17.3L19.3,19H22L19.8,16.7M19,15.3H17.5V13.7H19C19,13.7 19.4,13.9 19.4,14.5C19.5,15.1 19,15.3 19,15.3M21.3,8.2V8.4C13.2,6.1 10,13.2 10.6,18.7C10.6,18.7 4.9,18.7 4.3,18.7C5,13.3 11.8,2.6 21.3,8.2M20.5,6.9C19.8,6.6 19.1,6.3 18.4,6.1L18.5,4.8L20.6,5.6L20.5,6.9M18.5,8.7C19.2,8.7 19.9,8.8 20.6,9L20.5,10.2L18.7,10L18.5,8.7M13.9,5.8L13.5,4.6L15.6,4.4L16,5.7C15.8,5.7 14.1,5.8 13.9,5.8M15.2,9.5C15.6,9.3 16.3,9 17.2,8.8L17.6,10L15.8,10.7L15.2,9.5M11.8,6.5C11.2,6.8 10.6,7.1 10,7.5L9.2,6.2L11,5.2L11.8,6.5M14.3,10.1L15.1,11.3L14,12.6L12.9,11.6C13.2,11 13.7,10.5 14.3,10.1M11.6,15C11.7,14.2 11.9,13.5 12.2,12.7L13.4,13.7L13.1,15.6L11.6,15M7.9,9.3C7.4,9.8 6.9,10.4 6.5,10.9L5.2,9.8L6.7,8.2L7.9,9.3M4.8,13.7C4.4,14.5 4.1,15.3 3.8,16L2,15.3L2.9,13L4.8,13.7M11.5,16.3L13.3,16.9L13.6,18.9L11.6,18.4C11.6,18.2 11.5,17.5 11.5,16.3Z"; +var mdiLanguageRust = "M21.9 11.7L21 11.2V11L21.7 10.3C21.8 10.2 21.8 10 21.7 9.9L21.6 9.8L20.7 9.5C20.7 9.4 20.7 9.3 20.6 9.3L21.2 8.5C21.3 8.4 21.3 8.2 21.1 8.1C21.1 8.1 21 8.1 21 8L20 7.8C20 7.7 19.9 7.7 19.9 7.6L20.3 6.7V6.4C20.2 6.3 20.1 6.3 20 6.3H19C19 6.3 19 6.2 18.9 6.2L19.1 5.2C19.1 5 19 4.9 18.9 4.9H18.8L17.8 5.1C17.8 5 17.7 5 17.6 4.9V3.9C17.6 3.7 17.5 3.6 17.3 3.6H17.2L16.3 4H16.2L16 3C16 2.8 15.8 2.7 15.7 2.8H15.6L14.8 3.4C14.7 3.4 14.6 3.4 14.6 3.3L14.3 2.4C14.2 2.3 14.1 2.2 13.9 2.2C13.9 2.2 13.8 2.2 13.8 2.3L13 3H12.8L12.3 2.2C12.2 2 12 2 11.8 2L11.7 2.1L11.2 3H11L10.3 2.3C10.2 2.2 10 2.2 9.9 2.3L9.8 2.4L9.5 3.3C9.4 3.3 9.3 3.3 9.3 3.4L8.5 2.8C8.3 2.7 8.1 2.7 8 2.9V3L7.8 4C7.8 4 7.7 4 7.6 4.1L6.7 3.7C6.6 3.6 6.4 3.7 6.3 3.8V4.9C6.3 5 6.2 5 6.2 5.1L5.2 4.9C5 4.8 4.9 4.9 4.9 5.1V5.2L5.1 6.2C5 6.2 5 6.3 4.9 6.3H3.9C3.7 6.3 3.6 6.4 3.6 6.6V6.7L4 7.6V7.8L3 8C2.8 8 2.7 8.2 2.7 8.3V8.4L3.3 9.2C3.3 9.3 3.3 9.4 3.2 9.4L2.4 9.8C2.3 9.9 2.2 10 2.2 10.2C2.2 10.2 2.2 10.3 2.3 10.3L3 11V11.2L2.2 11.7C2 11.8 2 12 2 12.1L2.1 12.2L3 12.8V13L2.3 13.7C2.2 13.8 2.2 14 2.3 14.1L2.4 14.2L3.3 14.5C3.3 14.6 3.3 14.7 3.4 14.7L2.8 15.5C2.7 15.6 2.7 15.8 2.9 15.9C2.9 15.9 3 15.9 3 16L4 16.2C4 16.3 4.1 16.3 4.1 16.4L3.7 17.3C3.6 17.4 3.7 17.6 3.8 17.7H4.9C5 17.7 5 17.8 5.1 17.8L4.9 18.8C4.9 19 5 19.1 5.1 19.1H5.2L6.2 18.9C6.2 19 6.3 19 6.4 19.1V20.1C6.4 20.3 6.5 20.4 6.7 20.4H6.8L7.7 20H7.8L8 21C8 21.2 8.2 21.3 8.3 21.2H8.4L9.2 20.6C9.3 20.6 9.4 20.6 9.4 20.7L9.7 21.6C9.8 21.7 9.9 21.8 10.1 21.8C10.1 21.8 10.2 21.8 10.2 21.7L11 21H11.2L11.7 21.8C11.8 21.9 12 22 12.1 21.9L12.2 21.8L12.7 21H12.9L13.6 21.7C13.7 21.8 13.9 21.8 14 21.7L14.1 21.6L14.4 20.7C14.5 20.7 14.6 20.7 14.6 20.6L15.4 21.2C15.5 21.3 15.7 21.3 15.8 21.1C15.8 21.1 15.8 21 15.9 21L16.1 20C16.2 20 16.2 19.9 16.3 19.9L17.2 20.3C17.3 20.4 17.5 20.3 17.6 20.2V19.1L17.8 18.9L18.8 19.1C19 19.1 19.1 19 19.1 18.9V18.8L18.9 17.8L19.1 17.6H20.1C20.3 17.6 20.4 17.5 20.4 17.3V17.2L20 16.3C20 16.2 20.1 16.2 20.1 16.1L21.1 15.9C21.3 15.9 21.4 15.7 21.3 15.6V15.5L20.7 14.7L20.8 14.5L21.7 14.2C21.8 14.1 21.9 14 21.9 13.8C21.9 13.8 21.9 13.7 21.8 13.7L21 13V12.8L21.8 12.3C22 12.2 22 12 21.9 11.7C21.9 11.8 21.9 11.8 21.9 11.7M16.2 18.7C15.9 18.6 15.7 18.3 15.7 18C15.8 17.7 16.1 17.5 16.4 17.5C16.7 17.6 16.9 17.9 16.9 18.2C16.9 18.6 16.6 18.8 16.2 18.7M16 16.8C15.7 16.7 15.4 16.9 15.4 17.2L15 18.6C14.1 19 13.1 19.2 12 19.2C10.9 19.2 9.9 19 8.9 18.5L8.6 17.1C8.5 16.8 8.3 16.6 8 16.7L6.8 17C6.6 16.8 6.4 16.5 6.2 16.3H12.2C12.3 16.3 12.3 16.3 12.3 16.2V14.1C12.3 14 12.3 14 12.2 14H10.5V12.7H12.4C12.6 12.7 13.3 12.7 13.6 13.7C13.7 14 13.8 15 14 15.3C14.1 15.6 14.6 16.3 15.1 16.3H18.2C18 16.6 17.8 16.8 17.5 17.1L16 16.8M7.7 18.7C7.4 18.8 7.1 18.6 7 18.2C6.9 17.9 7.1 17.6 7.5 17.5S8.1 17.6 8.2 18C8.2 18.3 8 18.6 7.7 18.7M5.4 9.5C5.5 9.8 5.4 10.2 5.1 10.3C4.8 10.4 4.4 10.3 4.3 10C4.2 9.7 4.3 9.3 4.6 9.2C5 9.1 5.3 9.2 5.4 9.5M4.7 11.1L6 10.6C6.3 10.5 6.4 10.2 6.3 9.9L6 9.3H7V14H5C4.7 13 4.6 12.1 4.7 11.1M10.3 10.7V9.3H12.8C12.9 9.3 13.7 9.4 13.7 10C13.7 10.5 13.1 10.7 12.6 10.7H10.3M19.3 11.9V12.4H18.5C18.4 12.4 18.4 12.4 18.4 12.5V12.8C18.4 13.6 17.9 13.8 17.5 13.8C17.1 13.8 16.7 13.6 16.6 13.4C16.4 12.1 16 11.9 15.4 11.4C16.1 10.9 16.9 10.2 16.9 9.3C16.9 8.3 16.2 7.7 15.8 7.4C15.1 7 14.4 6.9 14.2 6.9H6.6C7.7 5.7 9.1 4.9 10.7 4.6L11.6 5.6C11.8 5.8 12.1 5.8 12.4 5.6L13.4 4.6C15.5 5 17.3 6.3 18.4 8.2L17.7 9.8C17.6 10.1 17.7 10.4 18 10.5L19.3 11.1V11.9M11.6 3.9C11.8 3.7 12.2 3.7 12.4 3.9C12.6 4.1 12.6 4.5 12.4 4.7C12.1 5 11.8 5 11.5 4.7C11.3 4.5 11.4 4.2 11.6 3.9M18.5 9.5C18.6 9.2 19 9.1 19.3 9.2C19.6 9.3 19.7 9.7 19.6 10C19.5 10.3 19.1 10.4 18.8 10.3C18.5 10.2 18.4 9.8 18.5 9.5Z"; +var mdiLanguageSwift = "M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z"; +var mdiLanguageTypescript = "M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z"; +var mdiLanguageXaml = "M16.93 7.9L19.31 12L16.95 16.09L16.33 15L17.8 12.5C17.97 12.19 17.97 11.83 17.8 11.54L16.32 9L16.93 7.9M16.92 6.57C16.89 6.57 16.85 6.59 16.83 6.62L15.56 8.87C15.5 8.94 15.5 9 15.56 9.09L17.18 11.9C17.22 11.97 17.22 12.05 17.18 12.12L15.57 14.91C15.53 14.97 15.53 15.06 15.57 15.13L16.85 17.36C16.87 17.4 16.91 17.42 16.94 17.42C17 17.42 17 17.4 17.04 17.36L20 12.23C20.08 12.09 20.08 11.92 20 11.79L17 6.62C17 6.59 16.96 6.57 16.92 6.57M21.91 11.67L17.23 3.58C17.11 3.38 16.89 3.25 16.66 3.25H7.28C7.05 3.25 6.83 3.38 6.71 3.58L2 11.67C1.91 11.87 1.91 12.13 2 12.33L6.71 20.42C6.83 20.62 7.05 20.75 7.28 20.75H16.66C16.89 20.75 17.11 20.62 17.23 20.42L21.91 12.33C22.03 12.13 22.03 11.88 21.91 11.67M7.3 3.95H16.12L11.76 11.65H6.93L10.87 4.82C10.91 4.75 10.86 4.66 10.78 4.66L8.21 4.65C8.13 4.65 8.06 4.7 8 4.76L4.04 11.65H2.84L7.3 3.95M6.17 12.46L9.74 18.63L8.5 18.63L4.87 12.35L4.67 12L4.87 11.65L8.5 5.37L9.73 5.37L6.17 11.53C6.15 11.57 6.13 11.61 6.11 11.65C6.03 11.88 6.03 12.13 6.12 12.35C6.13 12.39 6.15 12.43 6.17 12.46M7.3 20.05L2.85 12.35H4.05L8.03 19.23C8.07 19.3 8.14 19.34 8.22 19.34L10.79 19.34C10.87 19.34 10.92 19.25 10.88 19.18L6.94 12.35H11.77L16.17 20.05H7.3M16.8 19.75L12.37 12L16.78 4.21L21.29 12L16.8 19.75Z"; +var mdiLaptop = "M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z"; +var mdiLaptopChromebook = "M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z"; +var mdiLaptopMac = "M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z"; +var mdiLaptopOff = "M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z"; +var mdiLaptopWindows = "M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z"; +var mdiLaravel = "M21.7 6.53C21.71 6.55 21.71 6.58 21.71 6.61V10.9C21.71 11 21.65 11.12 21.56 11.17L17.95 13.25V17.36C17.95 17.47 17.9 17.57 17.8 17.63L10.28 21.96C10.26 21.97 10.24 22 10.22 22L10.2 22C10.15 22 10.09 22 10.04 22C10.03 22 10 22 10 22C10 22 10 21.97 9.96 21.96L2.44 17.63C2.35 17.58 2.29 17.47 2.29 17.36V4.5C2.29 4.45 2.29 4.42 2.3 4.4C2.3 4.39 2.31 4.38 2.31 4.37C2.31 4.35 2.32 4.34 2.33 4.32C2.33 4.31 2.34 4.3 2.35 4.29C2.36 4.28 2.37 4.27 2.38 4.26C2.39 4.25 2.4 4.24 2.41 4.23C2.42 4.22 2.43 4.21 2.44 4.21L6.2 2.04C6.3 2 6.42 2 6.5 2.04L10.28 4.21H10.28C10.29 4.22 10.3 4.22 10.31 4.23C10.32 4.24 10.33 4.25 10.34 4.26C10.35 4.27 10.36 4.28 10.37 4.29C10.38 4.3 10.39 4.31 10.39 4.32C10.4 4.34 10.41 4.35 10.41 4.37C10.41 4.38 10.42 4.39 10.42 4.4C10.43 4.43 10.43 4.45 10.43 4.5V12.5L13.57 10.72V6.61C13.57 6.58 13.57 6.55 13.58 6.53L13.59 6.5C13.59 6.5 13.6 6.47 13.61 6.45C13.61 6.44 13.62 6.43 13.63 6.42C13.64 6.41 13.65 6.4 13.66 6.39C13.67 6.38 13.68 6.37 13.69 6.36C13.7 6.35 13.71 6.34 13.72 6.34L17.5 4.17C17.58 4.11 17.7 4.11 17.8 4.17L21.56 6.34C21.57 6.34 21.58 6.35 21.59 6.36L21.62 6.39C21.63 6.4 21.64 6.41 21.65 6.42C21.66 6.43 21.66 6.44 21.67 6.45C21.68 6.47 21.68 6.5 21.69 6.5C21.7 6.5 21.7 6.5 21.7 6.53M21.09 10.72V7.15L17.95 8.95V12.5L21.09 10.72M17.33 17.18V13.6L10.43 17.54V21.15L17.33 17.18M2.91 5V17.18L9.81 21.15V17.54L6.21 15.5L6.2 15.5L6.2 15.5C6.19 15.5 6.18 15.5 6.17 15.47C6.16 15.47 6.15 15.46 6.14 15.45V15.45C6.13 15.44 6.12 15.43 6.11 15.42C6.1 15.41 6.1 15.4 6.09 15.39V15.39C6.08 15.37 6.08 15.36 6.07 15.35C6.07 15.33 6.06 15.32 6.06 15.31C6.05 15.3 6.05 15.28 6.05 15.27C6.05 15.25 6.05 15.24 6.05 15.23V6.82L2.91 5M6.36 2.68L3.23 4.5L6.36 6.28L9.5 4.5L6.36 2.68M9.81 12.88V5L6.67 6.82V14.69L9.81 12.88M17.64 4.8L14.5 6.61L17.64 8.41L20.77 6.61L17.64 4.8M17.33 8.95L14.19 7.15V10.72L17.33 12.5V8.95M10.12 17L17 13.06L13.88 11.26L7 15.23L10.12 17Z"; +var mdiLaserPointer = "M9 13L5 16C4 16.88 3.86 18.12 4 19C4.13 20 4.91 21.22 6 21.68C7.57 22.35 9.09 21.9 10.04 20.92L19 13C20.86 11.62 20 9 18 9H12L19.46 4.61C19.9 4.29 20.08 3.82 20.06 3.37C20 2.67 19.46 2 18.6 2H18.54C18.19 2 17.86 2.11 17.56 2.29L5 9C4.19 9.46 3.94 10.24 4 11C4.05 12.03 4.74 13 6 13M5 18.5C5 17.12 6.12 16 7.5 16S10 17.12 10 18.5 8.88 21 7.5 21 5 19.88 5 18.5Z"; +var mdiLasso = "M12 2C17.5 2 22 5.13 22 9C22 12.26 18.81 15 14.5 15.78L14.5 15.5C14.5 14.91 14.4 14.34 14.21 13.81C17.55 13.21 20 11.28 20 9C20 6.24 16.42 4 12 4C7.58 4 4 6.24 4 9C4 10.19 4.67 11.29 5.79 12.15C5.35 12.64 5 13.21 4.78 13.85C3.06 12.59 2 10.88 2 9C2 5.13 6.5 2 12 2M9.5 12C11.43 12 13 13.57 13 15.5C13 17.4 11.5 18.95 9.6 19C9.39 19.36 9.18 20 9.83 20.68C11 21.88 13.28 19.72 16.39 19.71C18.43 19.7 20.03 19.97 20.03 19.97C20.03 19.97 21.08 20.1 20.97 21.04C20.86 21.97 19.91 21.97 19.91 21.97C19.53 21.93 18.03 21.58 16.22 21.68C14.41 21.77 13.47 22.41 12.56 22.69C11.66 22.97 9.91 23.38 8.3 22.05C6.97 20.96 7.46 19.11 7.67 18.5C6.67 17.87 6 16.76 6 15.5C6 13.57 7.57 12 9.5 12M9.5 14C8.67 14 8 14.67 8 15.5C8 16.33 8.67 17 9.5 17C10.33 17 11 16.33 11 15.5C11 14.67 10.33 14 9.5 14Z"; +var mdiLastpass = "M14,12A2,2 0 0,1 16,10A2,2 0 0,1 18,12A2,2 0 0,1 16,14A2,2 0 0,1 14,12M8,12A2,2 0 0,1 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14A2,2 0 0,1 8,12M2,12A2,2 0 0,1 4,10A2,2 0 0,1 6,12A2,2 0 0,1 4,14A2,2 0 0,1 2,12M22,5H20V19H22V5Z"; +var mdiLatitude = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 4C15 4 17.5 5.6 18.9 8H5.1C6.5 5.6 9 4 12 4M12 20C9 20 6.5 18.4 5.1 16H18.9C17.5 18.4 15 20 12 20M4.3 14C4.1 13.4 4 12.7 4 12S4.1 10.6 4.3 10H19.8C20 10.6 20.1 11.3 20.1 12S20 13.4 19.8 14H4.3Z"; +var mdiLaunch = "M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z"; +var mdiLavaLamp = "M10,3L8,16H16L14,3H10M11.5,5.75A0.75,0.75 0 0,1 12.25,6.5A0.75,0.75 0 0,1 11.5,7.25A0.75,0.75 0 0,1 10.75,6.5A0.75,0.75 0 0,1 11.5,5.75M12.5,8.5A1,1 0 0,1 13.5,9.5A1,1 0 0,1 12.5,10.5A1,1 0 0,1 11.5,9.5A1,1 0 0,1 12.5,8.5M11.5,12A1.5,1.5 0 0,1 13,13.5A1.5,1.5 0 0,1 11.5,15A1.5,1.5 0 0,1 10,13.5A1.5,1.5 0 0,1 11.5,12M8,17L10,19L8,21H16L14,19L16,17H8Z"; +var mdiLayers = "M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z"; +var mdiLayersMinus = "M22,17V19H14V17H22M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"; +var mdiLayersOff = "M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z"; +var mdiLayersOffOutline = "M12,4.53L10.83,5.44L9.41,4L12,2L21,9L17.28,11.89L15.85,10.47L17.74,9L12,4.53M21,14.07L20.13,14.75L18.7,13.32L19.37,12.8L21,14.07M3.41,0.86L22.14,19.59L20.73,21L16.95,17.22L12,21.07L3,14.07L4.62,12.81L12,18.54L15.5,15.79L14.1,14.37L12,16L3,9L6.22,6.5L2,2.27L3.41,0.86M12,13.47L12.67,12.94L7.65,7.92L6.26,9L12,13.47Z"; +var mdiLayersOutline = "M12,18.54L19.37,12.8L21,14.07L12,21.07L3,14.07L4.62,12.81L12,18.54M12,16L3,9L12,2L21,9L12,16M12,4.53L6.26,9L12,13.47L17.74,9L12,4.53Z"; +var mdiLayersPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"; +var mdiLayersRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"; +var mdiLayersSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M9.59 19.2L3 14.07L4.62 12.81L9 16.22C9 16.32 9 16.41 9 16.5C9 17.46 9.22 18.38 9.59 19.2M4.63 10.27L3 9L12 2L21 9L19.36 10.27L18.65 10.82C17.72 10.3 16.64 10 15.5 10C12.79 10 10.46 11.68 9.5 14.05L4.63 10.27Z"; +var mdiLayersSearchOutline = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M9.59 19.2L3 14.07L4.62 12.81L9 16.22C9 16.32 9 16.41 9 16.5C9 17.46 9.22 18.38 9.59 19.2M9.5 14.04L3 9L12 2L21 9L18.66 10.82C17.96 10.44 17.19 10.18 16.37 10.07L17.74 9L12 4.53L6.26 9L10.53 12.32C10.1 12.84 9.74 13.42 9.5 14.04Z"; +var mdiLayersTriple = "M12 0L3 7L4.63 8.27L12 14L19.36 8.27L21 7L12 0M19.37 10.73L12 16.47L4.62 10.74L3 12L12 19L21 12L19.37 10.73M19.37 15.73L12 21.47L4.62 15.74L3 17L12 24L21 17L19.37 15.73Z"; +var mdiLayersTripleOutline = "M12 16.54L19.37 10.8L21 12.07L12 19.07L3 12.07L4.62 10.81L12 16.54M12 14L3 7L12 0L21 7L12 14M12 2.53L6.26 7L12 11.47L17.74 7L12 2.53M12 21.47L19.37 15.73L21 17L12 24L3 17L4.62 15.74L12 21.47"; +var mdiLeadPencil = "M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29"; +var mdiLeaf = "M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z"; +var mdiLeafMaple = "M21.79,13L16,16L17,18L13,17.25V21H11V17.25L7,18L8,16L2.21,13L3.21,11.27L1.61,8L5.21,7.77L6.21,6L9.63,9.9L8,5H10L12,2L14,5H16L14.37,9.9L17.79,6L18.79,7.73L22.39,7.96L20.79,11.19L21.79,13Z"; +var mdiLeafMapleOff = "M18.11 14.91L8.2 5H10L12 2L14 5H16L14.37 9.9L17.79 6L18.79 7.73L22.39 7.96L20.79 11.19L21.79 13L18.11 14.91M2.39 1.73L1.11 3L5.45 7.34L5.21 7.77L1.61 8L3.21 11.27L2.21 13L8 16L7 18L11 17.25V21H13V17.25L15.91 17.8L20.84 22.73L22.11 21.46L2.39 1.73Z"; +var mdiLeafOff = "M20.84 22.73L15.14 17.03C13.26 18.79 10.92 20 8 20C7.64 20 7.14 19.87 6.66 19.7L5.71 22L3.82 21.34C5.15 18.03 6.5 14.32 9.66 11.55L8.77 10.66C6.76 12.03 4.86 14.1 3.75 17.25C3.75 17.25 2 15.5 2 13.5C2 12 3.12 9.32 5.72 7.61L1.11 3L2.39 1.73C2.39 1.73 16.39 15.74 16.39 15.74L22.11 21.46L20.84 22.73M17 8C15.35 8.37 13.93 8.88 12.7 9.5L17.5 14.29C20.87 9.35 22 3 22 3C21.03 4.95 14.35 5.24 9.38 6.18L12.15 8.95C14.81 8 17 8 17 8Z"; +var mdiLeak = "M6,3H3V6A3,3 0 0,0 6,3M14,3H12A9,9 0 0,1 3,12V14C9.08,14 14,9.07 14,3M10,3H8A5,5 0 0,1 3,8V10A7,7 0 0,0 10,3M10,21H12A9,9 0 0,1 21,12V10A11,11 0 0,0 10,21M18,21H21V18A3,3 0 0,0 18,21M14,21H16A5,5 0 0,1 21,16V14A7,7 0 0,0 14,21Z"; +var mdiLeakOff = "M10,3H8C8,3.37 7.96,3.72 7.88,4.06L9.47,5.65C9.81,4.84 10,3.94 10,3M3,4.27L5.84,7.11C5.03,7.67 4.06,8 3,8V10C4.61,10 6.09,9.45 7.27,8.54L8.7,9.97C7.14,11.24 5.16,12 3,12V14C5.71,14 8.19,13 10.11,11.38L12.61,13.88C11,15.81 10,18.29 10,21H12C12,18.84 12.76,16.86 14.03,15.31L15.46,16.74C14.55,17.91 14,19.39 14,21H16C16,19.94 16.33,18.97 16.89,18.16L19.73,21L21,19.73L4.27,3L3,4.27M14,3H12C12,4.5 11.63,5.91 11,7.16L12.44,8.62C13.42,7 14,5.06 14,3M19.94,16.12C20.28,16.04 20.63,16 21,16V14C20.06,14 19.16,14.19 18.34,14.5L19.94,16.12M15.38,11.56L16.84,13C18.09,12.37 19.5,12 21,12V10C18.94,10 17,10.58 15.38,11.56Z"; +var mdiLedOff = "M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z"; +var mdiLedOn = "M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z"; +var mdiLedOutline = "M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z"; +var mdiLedStrip = "M2.81,8.46L14.83,20.5L15.54,19.78L16.95,21.19L18.36,19.78L16.95,18.36L18.36,16.95L19.78,18.36L21.19,16.95L19.78,15.54L20.5,14.83L8.46,2.81L2.81,8.46M5.64,8.46L8.46,5.64L17.66,14.83L14.83,17.66L5.64,8.46M7.05,8.46L8.46,9.88L9.88,8.46L8.46,7.05L7.05,8.46M9.17,10.59L10.59,12L12,10.59L10.59,9.17L9.17,10.59M11.29,12.71L12.71,14.12L14.12,12.71L12.71,11.29L11.29,12.71M13.41,14.83L14.83,16.24L16.24,14.83L14.83,13.41L13.41,14.83Z"; +var mdiLedStripVariant = "M2.95 3L2 6.91L19.34 11.25L20.29 7.34L2.95 3M6.09 6.89L4.16 6.41L4.64 4.46L6.57 4.94L6.09 6.89M9.94 7.86L8 7.38L8.5 5.42L10.42 5.91L9.94 7.86M13.8 8.82L11.87 8.34L12.35 6.39L14.27 6.87L13.8 8.82M17.65 9.79L15.72 9.31L16.2 7.35L18.13 7.84L17.65 9.79M4.66 12.75L3.71 16.66L21.05 21L22 17.1L4.66 12.75M7.8 16.65L5.88 16.16L6.35 14.21L8.28 14.69L7.8 16.65M11.65 17.61L9.73 17.13L10.2 15.18L12.13 15.66L11.65 17.61M15.5 18.58L13.58 18.09L14.06 16.14L16 16.62L15.5 18.58M19.36 19.54L17.43 19.06L17.91 17.11L19.84 17.59L19.36 19.54M6.25 12.11L11 10.2L17.75 11.89L13 13.8L6.25 12.11Z"; +var mdiLedVariantOff = "M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z"; +var mdiLedVariantOn = "M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z"; +var mdiLedVariantOutline = "M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z"; +var mdiLeek = "M10 2V5.55L12 7.55L14 5.55V2H10M6.34 4L3.87 6.5L15 17.62V12.67L6.34 4M17.66 4L13.06 8.61L15.54 11.09L20.13 6.5L17.66 4M9 13.74V20A2 2 0 0 0 11 22H13A2 2 0 0 0 15 20V19.74L13 17.74V20H11V15.74L9 13.74Z"; +var mdiLessThan = "M18.5,4.14L19.5,5.86L8.97,12L19.5,18.14L18.5,19.86L5,12L18.5,4.14Z"; +var mdiLessThanOrEqual = "M18.5,2.27L5,10.14L18.5,18L19.5,16.27L8.97,10.14L19.5,4L18.5,2.27M5,20V22H20V20H5Z"; +var mdiLibrary = "M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z"; +var mdiLibraryShelves = "M19.5,9V1.5H16.5V9H13.5V1.5H10.5V9H7.5V1.5H4.65V9H3V10.5H21V9H19.5M19.5,13.5H16.5V21H13.5V13.5H10.5V21H7.5V13.5H4.65V21H3V22.5H21V21H19.5V13.5Z"; +var mdiLicense = "M9 10A3.04 3.04 0 0 1 12 7A3.04 3.04 0 0 1 15 10A3.04 3.04 0 0 1 12 13A3.04 3.04 0 0 1 9 10M12 19L16 20V16.92A7.54 7.54 0 0 1 12 18A7.54 7.54 0 0 1 8 16.92V20M12 4A5.78 5.78 0 0 0 7.76 5.74A5.78 5.78 0 0 0 6 10A5.78 5.78 0 0 0 7.76 14.23A5.78 5.78 0 0 0 12 16A5.78 5.78 0 0 0 16.24 14.23A5.78 5.78 0 0 0 18 10A5.78 5.78 0 0 0 16.24 5.74A5.78 5.78 0 0 0 12 4M20 10A8.04 8.04 0 0 1 19.43 12.8A7.84 7.84 0 0 1 18 15.28V23L12 21L6 23V15.28A7.9 7.9 0 0 1 4 10A7.68 7.68 0 0 1 6.33 4.36A7.73 7.73 0 0 1 12 2A7.73 7.73 0 0 1 17.67 4.36A7.68 7.68 0 0 1 20 10Z"; +var mdiLifebuoy = "M19.79,15.41C20.74,13.24 20.74,10.75 19.79,8.59L17.05,9.83C17.65,11.21 17.65,12.78 17.06,14.17L19.79,15.41M15.42,4.21C13.25,3.26 10.76,3.26 8.59,4.21L9.83,6.94C11.22,6.35 12.79,6.35 14.18,6.95L15.42,4.21M4.21,8.58C3.26,10.76 3.26,13.24 4.21,15.42L6.95,14.17C6.35,12.79 6.35,11.21 6.95,9.82L4.21,8.58M8.59,19.79C10.76,20.74 13.25,20.74 15.42,19.78L14.18,17.05C12.8,17.65 11.22,17.65 9.84,17.06L8.59,19.79M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8Z"; +var mdiLightSwitch = "M7,1A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M7,3H17V21H7V3M9,6V18H15V6H9M10,7H14V11H10V7M10,13H14V17H10V13Z"; +var mdiLightbulb = "M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z"; +var mdiLightbulbCfl = "M10.5 2C11.88 2 13 3.12 13 4.5V14H14V4.47C14 3.56 13.63 2.7 13 2.05C13.17 2 13.33 2 13.5 2C14.88 2 16 3.12 16 4.5V14H17V17C17 17.55 16.55 18 16 18H8C7.45 18 7 17.55 7 17V14H8V4.5C8 3.12 9.12 2 10.5 2M10.5 4C10.22 4 10 4.22 10 4.5V14H11V4.5C11 4.22 10.78 4 10.5 4M9 20H15V21C15 21.55 14.55 22 14 22H10C9.45 22 9 21.55 9 21V20Z"; +var mdiLightbulbCflOff = "M14 4.47C14 3.56 13.63 2.7 13 2.05C13.17 2 13.33 2 13.5 2C14.88 2 16 3.12 16 4.5V14H17V15.18L14 12.18V4.5L14 4.47M10 4.5C10 4.22 10.22 4 10.5 4S11 4.22 11 4.5V9.18L13 11.18V4.5C13 3.12 11.88 2 10.5 2S8 3.12 8 4.5V6.18L10 8.18V4.5M9 21C9 21.55 9.45 22 10 22H14C14.55 22 15 21.55 15 21V20H9V21M20 20.72L18.73 22L14.73 18H8C7.45 18 7 17.55 7 17V14H8V11.27L2 5.27L3.28 4L20 20.72Z"; +var mdiLightbulbCflSpiral = "M11 2C10.84 2 10.69 2.03 10.55 2.1L8.55 3.1C7.56 3.66 8 5 9 5C9.16 5 9.32 4.95 9.45 4.9L11.45 3.9C12.43 3.36 12 2 11 2M15 4C14.83 4 14.69 4.03 14.55 4.1L8.55 7.1C7.56 7.68 8 9 9 9C9.18 9 9.32 8.95 9.45 8.9L15.45 5.9C16.41 5.43 16 4 15 4M15 8C14.84 8 14.69 8.03 14.55 8.1L8.7 11.03C8.2 11.25 8 11.6 8 12V14H7V17C7 17.55 7.44 18 8 18H16C16.55 18 17 17.55 17 17V14H16V13C16 12.44 15.55 12 15 12C14.45 12 14 12.45 14 13V14H10V12.62L15.45 9.9C16.42 9.34 16 8 15 8M9 20V21C9 21.57 9.46 22 10 22H14C14.56 22 15 21.55 15 21V20"; +var mdiLightbulbCflSpiralOff = "M15.45 9.9L13.88 10.68L12.38 9.18L14.55 8.1C14.69 8.03 14.84 8 15 8C16 8 16.42 9.34 15.45 9.9M11.22 8L15.45 5.9C16.41 5.43 16 4 15 4C14.83 4 14.69 4.03 14.55 4.1L9.72 6.5L11.22 8M20.84 22.73L16.09 18H8C7.44 18 7 17.55 7 17V14H8V12C8 11.6 8.2 11.25 8.7 11.03L9 10.88L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M12.11 14L10.5 12.38L10 12.62V14H12.11M9 21C9 21.57 9.46 22 10 22H14C14.56 22 15 21.55 15 21V20H9V21M9 5C9.16 5 9.32 4.95 9.45 4.9L11.45 3.9C12.43 3.36 12 2 11 2C10.84 2 10.69 2.03 10.55 2.1L8.55 3.1C7.56 3.66 8 5 9 5Z"; +var mdiLightbulbGroup = "M15 14V16A1 1 0 0 1 14 17H10A1 1 0 0 1 9 16V14A5 5 0 1 1 15 14M14 18H10V19A1 1 0 0 0 11 20H13A1 1 0 0 0 14 19M7 19V18H5V19A1 1 0 0 0 6 20H7.17A2.93 2.93 0 0 1 7 19M5 10A6.79 6.79 0 0 1 5.68 7A4 4 0 0 0 4 14.45V16A1 1 0 0 0 5 17H7V14.88A6.92 6.92 0 0 1 5 10M17 18V19A2.93 2.93 0 0 1 16.83 20H18A1 1 0 0 0 19 19V18M18.32 7A6.79 6.79 0 0 1 19 10A6.92 6.92 0 0 1 17 14.88V17H19A1 1 0 0 0 20 16V14.45A4 4 0 0 0 18.32 7Z"; +var mdiLightbulbGroupOff = "M20.84 22.73L18.09 20C18.06 20 18.03 20 18 20H16.83C16.94 19.68 17 19.34 17 19V18.89L14.75 16.64C14.57 16.86 14.31 17 14 17H10C9.45 17 9 16.55 9 16V14C7.4 12.8 6.74 10.84 7.12 9L5.5 7.4C5.18 8.23 5 9.11 5 10C5 11.83 5.72 13.58 7 14.88V17H5C4.45 17 4 16.55 4 16V14.45C2.86 13.79 2.12 12.62 2 11.31C1.85 9.27 3.25 7.5 5.2 7.09L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15 6C13.22 4.67 10.86 4.72 9.13 5.93L16.08 12.88C17.63 10.67 17.17 7.63 15 6M19.79 16.59C19.91 16.42 20 16.22 20 16V14.45C21.91 13.34 22.57 10.9 21.46 9C20.8 7.85 19.63 7.11 18.32 7C18.77 7.94 19 8.96 19 10C19 11.57 18.47 13.09 17.5 14.31L19.79 16.59M10 19C10 19.55 10.45 20 11 20H13C13.55 20 14 19.55 14 19V18H10V19M7 18H5V19C5 19.55 5.45 20 6 20H7.17C7.06 19.68 7 19.34 7 19V18Z"; +var mdiLightbulbGroupOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5.2 7.09C3.25 7.5 1.85 9.27 2 11.31C2.12 12.62 2.86 13.79 4 14.45V16C4 16.55 4.45 17 5 17H7V14.88C5.72 13.58 5 11.83 5 10C5 9.11 5.18 8.23 5.5 7.4L7.12 9C6.74 10.84 7.4 12.8 9 14V16C9 16.55 9.45 17 10 17H14C14.31 17 14.57 16.86 14.75 16.64L17 18.89V19C17 19.34 16.94 19.68 16.83 20H18C18.03 20 18.06 20 18.09 20L20.84 22.73L22.11 21.46M9.23 11.12L10.87 12.76C10.11 12.46 9.53 11.86 9.23 11.12M13 15H11V12.89L13 14.89V15M10.57 7.37L9.13 5.93C10.86 4.72 13.22 4.67 15 6C16.26 6.94 17 8.43 17 10C17 11.05 16.67 12.05 16.08 12.88L14.63 11.43C14.86 11 15 10.5 15 10C15 8.34 13.67 7 12 7C11.5 7 11 7.14 10.57 7.37M17.5 14.31C18.47 13.09 19 11.57 19 10C19 8.96 18.77 7.94 18.32 7C19.63 7.11 20.8 7.85 21.46 9C22.57 10.9 21.91 13.34 20 14.45V16C20 16.22 19.91 16.42 19.79 16.59L17.5 14.31M10 18H14V19C14 19.55 13.55 20 13 20H11C10.45 20 10 19.55 10 19V18M7 19C7 19.34 7.06 19.68 7.17 20H6C5.45 20 5 19.55 5 19V18H7V19Z"; +var mdiLightbulbGroupOutline = "M7 19A2.93 2.93 0 0 0 7.17 20H6A1 1 0 0 1 5 19V18H7M10 19A1 1 0 0 0 11 20H13A1 1 0 0 0 14 19V18H10M4 16A1 1 0 0 0 5 17H7V14.88A6.92 6.92 0 0 1 5 10A6.79 6.79 0 0 1 5.68 7A4 4 0 0 0 4 14.45M17 19A2.93 2.93 0 0 1 16.83 20H18A1 1 0 0 0 19 19V18H17M17 10A5 5 0 0 1 15 14V16A1 1 0 0 1 14 17H10A1 1 0 0 1 9 16V14A5 5 0 1 1 17 10M15 10A3 3 0 1 0 11 12.82V15H13V12.82A3 3 0 0 0 15 10M18.32 7A6.79 6.79 0 0 1 19 10A6.92 6.92 0 0 1 17 14.88V17H19A1 1 0 0 0 20 16V14.45A4 4 0 0 0 18.32 7Z"; +var mdiLightbulbMultiple = "M17 16V18C17 18.55 16.53 19 16 19H12C11.42 19 11 18.55 11 18V16C8.77 14.34 8.32 11.21 10 9S14.77 6.34 17 8 19.63 12.79 18 15C17.69 15.38 17.35 15.72 17 16M16 20H12V21C12 21.55 12.42 22 13 22H15C15.53 22 16 21.55 16 21M7.66 15H7V16C7 16.55 7.42 17 8 17H9V16.88C8.44 16.33 8 15.7 7.66 15M13.58 5C12.46 2.47 9.5 1.33 7 2.45S3.31 6.5 4.43 9.04C4.77 9.81 5.3 10.5 6 11V13C6 13.55 6.42 14 7 14H7.28C7.07 13.35 6.97 12.68 7 12C6.97 8.29 9.87 5.21 13.58 5Z"; +var mdiLightbulbMultipleOff = "M20.84 22.73L16.74 18.63C16.55 18.85 16.29 19 16 19H12C11.42 19 11 18.55 11 18V16C9.37 14.8 8.71 12.82 9.1 11L7.5 9.39C7.17 10.2 6.97 11.08 7 12C6.97 12.68 7.07 13.35 7.28 14H7C6.42 14 6 13.55 6 13V11C5.3 10.5 4.77 9.81 4.43 9.04C4 8.05 3.91 7 4.12 6L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M13.58 5C12.46 2.47 9.5 1.33 7 2.45C6.68 2.58 6.39 2.75 6.13 2.93L9.67 6.47C10.76 5.63 12.1 5.08 13.58 5M18.06 14.86C19.6 12.66 19.14 9.62 17 8C15.2 6.67 12.84 6.72 11.12 7.92L18.06 14.86M12 21C12 21.55 12.42 22 13 22H15C15.53 22 16 21.55 16 21V20H12V21M7 15V16C7 16.55 7.42 17 8 17H9V16.88C8.43 16.33 8 15.7 7.66 15H7Z"; +var mdiLightbulbMultipleOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.14 6.03C3.93 7 4 8.05 4.45 9.04C4.79 9.81 5.33 10.5 6 11V13C6 13.55 6.45 14 7 14H7.3C7.1 13.35 7 12.68 7 12C7 11.08 7.19 10.21 7.5 9.41L9.11 11C9.05 11.33 9 11.66 9 12C9 13.57 9.74 15.06 11 16V18C11 18.55 11.45 19 12 19H16C16.31 19 16.57 18.86 16.75 18.64L20.84 22.73L22.11 21.46M11.23 13.12L12.87 14.76C12.1 14.44 11.53 13.85 11.23 13.12M15 17H13V14.89L15 16.89V17M9.69 6.5L6.14 2.94C6.41 2.75 6.7 2.58 7 2.44C9.53 1.33 12.5 2.47 13.6 5C12.12 5.09 10.77 5.63 9.69 6.5M11.12 7.92C11.94 7.35 12.93 7 14 7C15.57 7 17.06 7.74 18 9C19.33 10.78 19.28 13.14 18.07 14.87L16.62 13.42C16.7 13.28 16.77 13.14 16.83 13C17.38 11.43 16.56 9.72 15 9.16C14.16 8.87 13.29 8.97 12.57 9.37L11.12 7.92M7.68 15C8 15.7 8.46 16.33 9 16.88V17H8C7.45 17 7 16.55 7 16V15H7.68M12 20H16V21C16 21.55 15.55 22 15 22H13C12.45 22 12 21.55 12 21V20Z"; +var mdiLightbulbMultipleOutline = "M12 21C12 21.55 12.45 22 13 22H15C15.55 22 16 21.55 16 21V20H12M14 7C11.24 7 9 9.24 9 12C9 13.57 9.74 15.06 11 16V18C11 18.55 11.45 19 12 19H16C16.55 19 17 18.55 17 18V16C19.21 14.34 19.66 11.21 18 9C17.06 7.74 15.57 7 14 7M15 14.82V17H13V14.82C11.44 14.27 10.62 12.55 11.17 11C11.72 9.43 13.44 8.61 15 9.16C16.56 9.72 17.38 11.43 16.83 13C16.53 13.85 15.85 14.5 15 14.82M7.68 15H7V16C7 16.55 7.45 17 8 17H9V16.88C8.46 16.33 8 15.7 7.68 15M13.6 5C12.5 2.47 9.53 1.33 7 2.45S3.34 6.5 4.45 9.04C4.79 9.81 5.33 10.5 6 11V13C6 13.55 6.45 14 7 14H7.3C7.1 13.35 7 12.68 7 12C7 8.29 9.89 5.21 13.6 5Z"; +var mdiLightbulbOff = "M12,2C9.76,2 7.78,3.05 6.5,4.68L16.31,14.5C17.94,13.21 19,11.24 19,9A7,7 0 0,0 12,2M3.28,4L2,5.27L5.04,8.3C5,8.53 5,8.76 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H14.73L18.73,22L20,20.72L3.28,4M9,20V21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9Z"; +var mdiLightbulbOffOutline = "M12,2C9.76,2 7.78,3.05 6.5,4.68L7.93,6.11C8.84,4.84 10.32,4 12,4A5,5 0 0,1 17,9C17,10.68 16.16,12.16 14.89,13.06L16.31,14.5C17.94,13.21 19,11.24 19,9A7,7 0 0,0 12,2M3.28,4L2,5.27L5.04,8.3C5,8.53 5,8.76 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H14.73L18.73,22L20,20.72L3.28,4M7.23,10.5L12.73,16H10V13.58C8.68,13 7.66,11.88 7.23,10.5M9,20V21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9Z"; +var mdiLightbulbOn = "M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z"; +var mdiLightbulbOnOutline = "M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z"; +var mdiLightbulbOutline = "M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z"; +var mdiLighthouse = "M8,10V8H9V4H8V3L12,1L16,3V4H15V8H16V10H14.74L8.44,13.64L9,10H8M13,8V4H11V8H13M7,23L7.04,22.76L16.15,17.5L16.67,20.88L13,23H7M8.05,16.17L15.31,12L15.83,15.37L7.43,20.22L8.05,16.17Z"; +var mdiLighthouseOn = "M1,10V2L10,5V7L1,10M8,10V8H13V4H8V3L12,1L16,3V4H15V8H16V10H14.74L8.44,13.64L9,10H8M7,23L7.04,22.76L16.15,17.5L16.67,20.88L13,23H7M8.05,16.17L15.31,12L15.83,15.37L7.43,20.22L8.05,16.17Z"; +var mdiLightningBolt = "M11 15H6L13 1V9H18L11 23V15Z"; +var mdiLightningBoltOutline = "M11 9.47V11H14.76L13 14.53V13H9.24L11 9.47M13 1L6 15H11V23L18 9H13V1Z"; +var mdiLingerie = "M22 7H20V2H18V4.34L12 6.91L6 4.34V2H4V7H2V9H4.05C4.3 11.25 6.19 13 8.5 13C9.92 13 11.18 12.33 12 11.3C12.83 12.33 14.08 13 15.5 13C17.81 13 19.7 11.25 19.95 9H22V7M8.5 11C7.12 11 6 9.88 6 8.5V6.5L11 8.65C10.9 9.96 9.83 11 8.5 11M18 8.5C18 9.88 16.88 11 15.5 11C14.17 11 13.1 9.96 13 8.65L18 6.5V8.5M2 15V17H3C5.97 17 8.43 19.17 8.91 22H15.09C15.57 19.17 18.03 17 21 17H22V15H2M13.59 20H10.41C9.94 18.84 9.21 17.82 8.29 17H15.71C14.79 17.82 14.06 18.84 13.59 20Z"; +var mdiLink = "M3.9,12C3.9,10.29 5.29,8.9 7,8.9H11V7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12M8,13H16V11H8V13M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.71 18.71,15.1 17,15.1H13V17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7Z"; +var mdiLinkBox = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,16H10C8.39,16 6,14.94 6,12C6,9.07 8.39,8 10,8H11V10H10C9.54,10 8,10.17 8,12C8,13.9 9.67,14 10,14H11V16M15,11V13H9V11H15M14,16H13V14H14C14.46,14 16,13.83 16,12C16,10.1 14.33,10 14,10H13V8H14C15.61,8 18,9.07 18,12C18,14.94 15.61,16 14,16Z"; +var mdiLinkBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M11,16H10C8.39,16 6,14.94 6,12C6,9.07 8.39,8 10,8H11V10H10C9.54,10 8,10.17 8,12C8,13.9 9.67,14 10,14H11V16M14,16H13V14H14C14.46,14 16,13.83 16,12C16,10.1 14.33,10 14,10H13V8H14C15.61,8 18,9.07 18,12C18,14.94 15.61,16 14,16M15,13H9V11H15V13Z"; +var mdiLinkBoxVariant = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81M17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36C18,10.26 17.65,11.1 17,11.74Z"; +var mdiLinkBoxVariantOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06M18,9.36C18,10.26 17.65,11.1 17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36Z"; +var mdiLinkLock = "M23 16V15.5A2.5 2.5 0 0 0 18 15.5V16A1 1 0 0 0 17 17V21A1 1 0 0 0 18 22H23A1 1 0 0 0 24 21V17A1 1 0 0 0 23 16M22 16H19V15.5A1.5 1.5 0 0 1 22 15.5M7 8.9H11V7H7A5 5 0 0 0 7 17H11V15.1H7A3.1 3.1 0 0 1 7 8.9M8 11V13H16V11M13 15.1V17H15V15.1M17 7H13V8.9H17A3.09 3.09 0 0 1 19.94 11A5.12 5.12 0 0 1 20.5 11H21.9A5 5 0 0 0 17 7Z"; +var mdiLinkOff = "M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.43 19.12,14.63 17.79,15L19.25,16.44C20.88,15.61 22,13.95 22,12A5,5 0 0,0 17,7M16,11H13.81L15.81,13H16V11M2,4.27L5.11,7.38C3.29,8.12 2,9.91 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12C3.9,10.41 5.11,9.1 6.66,8.93L8.73,11H8V13H10.73L13,15.27V17H14.73L18.74,21L20,19.74L3.27,3L2,4.27Z"; +var mdiLinkPlus = "M7,7H11V9H7A3,3 0 0,0 4,12A3,3 0 0,0 7,15H11V17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7M17,7A5,5 0 0,1 22,12H20A3,3 0 0,0 17,9H13V7H17M8,11H16V13H8V11M17,12H19V15H22V17H19V20H17V17H14V15H17V12Z"; +var mdiLinkVariant = "M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z"; +var mdiLinkVariantMinus = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M23 18V20H15V18M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7Z"; +var mdiLinkVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z"; +var mdiLinkVariantPlus = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M23 18V20H20V23H18V20H15V18H18V15H20V18M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7Z"; +var mdiLinkVariantRemove = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9Z"; +var mdiLinkedin = "M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z"; +var mdiLinux = "M14.62,8.35C14.2,8.63 12.87,9.39 12.67,9.54C12.28,9.85 11.92,9.83 11.53,9.53C11.33,9.37 10,8.61 9.58,8.34C9.1,8.03 9.13,7.64 9.66,7.42C11.3,6.73 12.94,6.78 14.57,7.45C15.06,7.66 15.08,8.05 14.62,8.35M21.84,15.63C20.91,13.54 19.64,11.64 18,9.97C17.47,9.42 17.14,8.8 16.94,8.09C16.84,7.76 16.77,7.42 16.7,7.08C16.5,6.2 16.41,5.3 16,4.47C15.27,2.89 14,2.07 12.16,2C10.35,2.05 9,2.81 8.21,4.4C8,4.83 7.85,5.28 7.75,5.74C7.58,6.5 7.43,7.29 7.25,8.06C7.1,8.71 6.8,9.27 6.29,9.77C4.68,11.34 3.39,13.14 2.41,15.12C2.27,15.41 2.13,15.7 2.04,16C1.85,16.66 2.33,17.12 3.03,16.96C3.47,16.87 3.91,16.78 4.33,16.65C4.74,16.5 4.9,16.6 5,17C5.65,19.15 7.07,20.66 9.24,21.5C13.36,23.06 18.17,20.84 19.21,16.92C19.28,16.65 19.38,16.55 19.68,16.65C20.14,16.79 20.61,16.89 21.08,17C21.57,17.09 21.93,16.84 22,16.36C22.03,16.1 21.94,15.87 21.84,15.63"; +var mdiLinuxMint = "M2,3.23V6.8H3.5C4.59,6.8 4.78,7.53 4.78,8.55V14.86C4.78,18.12 7.65,20.77 11.18,20.77H19.9C21,20.77 22,20.07 22,19V9.2C22,5.93 19.13,3.28 15.6,3.28H11.93V3.27L2,3.23V3.23M6.62,5.46H8.37V14.45C8.37,15.65 9.19,16.59 10.16,16.59L16.13,16.61C17.38,16.61 18.35,15.75 18.35,14.73L18.34,9.96C18.34,9.65 18.24,9.41 18,9.19C17.79,8.96 17.56,8.86 17.25,8.86C16.94,8.86 16.71,8.96 16.5,9.19C16.27,9.41 16.16,9.65 16.16,9.96V14.05H14.31V9.96C14.31,9.65 14.21,9.41 14,9.19C13.77,8.96 13.54,8.86 13.22,8.86C12.92,8.86 12.68,8.96 12.46,9.19C12.24,9.41 12.14,9.65 12.14,9.96V14.05H10.29V9.96C10.29,9.15 10.58,8.44 11.15,7.86C11.72,7.29 12.43,7 13.22,7C14,7 14.68,7.28 15.24,7.82C15.79,7.28 16.47,7 17.25,7C18.05,7 18.76,7.29 19.32,7.86C19.89,8.44 20.19,9.15 20.19,9.96L20.2,15.06C20.11,15.91 19.75,16.67 19.13,17.31V17.31C18.4,18.04 17.5,18.42 16.5,18.42H9.83C9,18.34 8.29,17.95 7.69,17.36C7,16.65 6.62,15.79 6.62,14.79V5.46H6.62Z"; +var mdiLipstick = "M9 23C8.45 23 8 22.55 8 22V13C8 12.45 8.45 12 9 12H15C15.55 12 16 12.45 16 13V22C16 22.55 15.55 23 15 23H9M10 11C9.45 11 9 10.55 9 10V5.25C9 5.25 11 3 11.75 1C12.83 1.67 13.92 2.33 14.46 3.83C15 5.33 15 7.67 15 10C15 10.55 14.55 11 14 11H10Z"; +var mdiListStatus = "M16.5 11L13 7.5L14.4 6.1L16.5 8.2L20.7 4L22.1 5.4L16.5 11M11 7H2V9H11V7M21 13.4L19.6 12L17 14.6L14.4 12L13 13.4L15.6 16L13 18.6L14.4 20L17 17.4L19.6 20L21 18.6L18.4 16L21 13.4M11 15H2V17H11V15Z"; +var mdiLitecoin = "M12.55,15.92L13.16,13.78L14.81,13.19L16.25,7.63L14.56,8.31L16.25,2H8L5.38,11.77L3.72,12.34L2.22,17.91L4,17.27L2.66,22H20.16L21.78,15.92H12.55M19.39,21H4L5.46,15.65L3.72,16.3L4.58,13.11L6.24,12.54L8.74,3H15L13.13,10L14.83,9.3L14,12.42L12.33,13L11.22,16.91H20.5L19.39,21Z"; +var mdiLoading = "M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z"; +var mdiLocationEnter = "M14 12L10 8V11H2V13H10V16M22 12A10 10 0 0 1 2.46 15H4.59A8 8 0 1 0 4.59 9H2.46A10 10 0 0 1 22 12Z"; +var mdiLocationExit = "M22 12L18 8V11H10V13H18V16M20 18A10 10 0 1 1 20 6H17.27A8 8 0 1 0 17.27 18Z"; +var mdiLock = "M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"; +var mdiLockAlert = "M10 17C11.1 17 12 16.1 12 15C12 13.9 11.1 13 10 13C8.9 13 8 13.9 8 15S8.9 17 10 17M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 13H20V7H22V13M22 17H20V15H22V17Z"; +var mdiLockAlertOutline = "M10 17C8.9 17 8 16.1 8 15C8 13.9 8.9 13 10 13C11.1 13 12 13.9 12 15S11.1 17 10 17M16 20V10H4V20H16M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 7H20V13H22V7M22 15H20V17H22V15Z"; +var mdiLockCheck = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; +var mdiLockCheckOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiLockClock = "M8.5,2C6,2 4,4 4,6.5V7C2.89,7 2,7.89 2,9V18C2,19.11 2.89,20 4,20H8.72C10.18,21.29 12.06,22 14,22A8,8 0 0,0 22,14A8,8 0 0,0 14,6C13.66,6 13.32,6.03 13,6.08C12.76,3.77 10.82,2 8.5,2M8.5,4A2.5,2.5 0 0,1 11,6.5V7H6V6.5A2.5,2.5 0 0,1 8.5,4M14,8A6,6 0 0,1 20,14A6,6 0 0,1 14,20A6,6 0 0,1 8,14A6,6 0 0,1 14,8M13,10V15L16.64,17.19L17.42,15.9L14.5,14.15V10H13Z"; +var mdiLockMinus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M23 18V20H15V18H23Z"; +var mdiLockMinusOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M15 18V20H23V18H15Z"; +var mdiLockOff = "M9 5.82L7.36 4.16C8.09 2.31 9.89 1 12 1C14.76 1 17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V16.8L11.2 8H15V6C15 4.34 13.66 3 12 3C10.41 3 9.11 4.25 9 5.82M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20V10C4 8.89 4.9 8 6 8H6.11L1.11 3L2.39 1.73L22.11 21.46M13.85 15.74L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.11 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74Z"; +var mdiLockOffOutline = "M9 5.82L7.36 4.16C8.09 2.31 9.89 1 12 1C14.76 1 17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V16.8L18 14.8V10H13.2L11.2 8H15V6C15 4.34 13.66 3 12 3C10.41 3 9.11 4.25 9 5.82M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H6.11L1.11 3L2.39 1.73L22.11 21.46M18 19.89L13.85 15.74C13.56 16.5 12.84 17 12 17C10.89 17 10 16.1 10 15C10 14.15 10.5 13.44 11.26 13.15L8.11 10H6V20H18V19.89Z"; +var mdiLockOpen = "M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z"; +var mdiLockOpenAlert = "M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H13V6C13 4.3 11.7 3 10 3S7 4.3 7 6H5C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 17C11.1 17 12 16.1 12 15S11.1 13 10 13 8 13.9 8 15 8.9 17 10 17M22 13H20V7H22V13M22 17H20V15H22V17Z"; +var mdiLockOpenAlertOutline = "M16 20V10H4V20H16M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H13V6C13 4.3 11.7 3 10 3S7 4.3 7 6H5C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 17C8.9 17 8 16.1 8 15S8.9 13 10 13 12 13.9 12 15 11.1 17 10 17M22 7H20V13H22V7M22 15H20V17H22V15Z"; +var mdiLockOpenCheck = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; +var mdiLockOpenCheckOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiLockOpenMinus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M23 18V20H15V18H23Z"; +var mdiLockOpenMinusOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M15 18V20H23V18H15Z"; +var mdiLockOpenOutline = "M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z"; +var mdiLockOpenPlus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; +var mdiLockOpenPlusOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiLockOpenRemove = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; +var mdiLockOpenRemoveOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiLockOpenVariant = "M18 1C15.24 1 13 3.24 13 6V8H4C2.9 8 2 8.89 2 10V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V10C18 8.9 17.11 8 16 8H15V6C15 4.34 16.34 3 18 3C19.66 3 21 4.34 21 6V8H23V6C23 3.24 20.76 1 18 1M10 13C11.1 13 12 13.89 12 15C12 16.11 11.11 17 10 17C8.9 17 8 16.11 8 15C8 13.9 8.9 13 10 13Z"; +var mdiLockOpenVariantOutline = "M10 13C11.1 13 12 13.89 12 15C12 16.11 11.11 17 10 17S8 16.11 8 15 8.9 13 10 13M18 1C15.24 1 13 3.24 13 6V8H4C2.9 8 2 8.9 2 10V20C2 21.1 2.9 22 4 22H16C17.1 22 18 21.1 18 20V10C18 8.9 17.1 8 16 8H15V6C15 4.34 16.34 3 18 3S21 4.34 21 6V8H23V6C23 3.24 20.76 1 18 1M16 10V20H4V10H16Z"; +var mdiLockOutline = "M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"; +var mdiLockPattern = "M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z"; +var mdiLockPlus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; +var mdiLockPlusOutline = "M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.89 8 4 8.89 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; +var mdiLockQuestion = "M12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8H17V6A5,5 0 0,0 12,1M12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6C8.9,4.29 10.29,2.9 12,2.9M12.19,10.5C13.13,10.5 13.88,10.71 14.42,11.12C14.96,11.54 15.23,12.1 15.23,12.8C15.23,13.24 15.08,13.63 14.79,14C14.5,14.36 14.12,14.64 13.66,14.85C13.4,15 13.23,15.15 13.14,15.32C13.05,15.5 13,15.72 13,16H11C11,15.5 11.1,15.16 11.29,14.92C11.5,14.68 11.84,14.4 12.36,14.08C12.62,13.94 12.83,13.76 13,13.54C13.14,13.33 13.22,13.08 13.22,12.8C13.22,12.5 13.13,12.28 12.95,12.11C12.77,11.93 12.5,11.85 12.19,11.85C11.92,11.85 11.7,11.92 11.5,12.06C11.34,12.2 11.24,12.41 11.24,12.69H9.27C9.22,12 9.5,11.4 10.05,11.04C10.59,10.68 11.3,10.5 12.19,10.5M11,17H13V19H11V17Z"; +var mdiLockRemove = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; +var mdiLockRemoveOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiLockReset = "M12.63,2C18.16,2 22.64,6.5 22.64,12C22.64,17.5 18.16,22 12.63,22C9.12,22 6.05,20.18 4.26,17.43L5.84,16.18C7.25,18.47 9.76,20 12.64,20A8,8 0 0,0 20.64,12A8,8 0 0,0 12.64,4C8.56,4 5.2,7.06 4.71,11H7.47L3.73,14.73L0,11H2.69C3.19,5.95 7.45,2 12.63,2M15.59,10.24C16.09,10.25 16.5,10.65 16.5,11.16V15.77C16.5,16.27 16.09,16.69 15.58,16.69H10.05C9.54,16.69 9.13,16.27 9.13,15.77V11.16C9.13,10.65 9.54,10.25 10.04,10.24V9.23C10.04,7.7 11.29,6.46 12.81,6.46C14.34,6.46 15.59,7.7 15.59,9.23V10.24M12.81,7.86C12.06,7.86 11.44,8.47 11.44,9.23V10.24H14.19V9.23C14.19,8.47 13.57,7.86 12.81,7.86Z"; +var mdiLockSmart = "M12,2A6,6 0 0,0 6,8V16A6,6 0 0,0 12,22A6,6 0 0,0 18,16V8A6,6 0 0,0 12,2M8,6H10V8H8V6M11,6H13V8H11V6M14,6H16V8H14V6M8,9H10V11H8V9M11,9H13V11H11V9M14,9H16V11H14V9M8,12H10V14H8V12M11,12H13V14H11V12M14,12H16V14H14V12M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16Z"; +var mdiLocker = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V20H16V4H8M10,13H12V17H10V13M10,6H14V7.5H10V6M10,9H14V10.5H10V9Z"; +var mdiLockerMultiple = "M3,2H21A2,2 0 0,1 23,4V20A2,2 0 0,1 21,22H3A2,2 0 0,1 1,20V4A2,2 0 0,1 3,2M13,4V20H21V4H13M3,4V20H11V4H3M5,13H7V17H5V13M5,6H9V7.5H5V6M5,9H9V10.5H5V9M15,13H17V17H15V13M15,6H19V7.5H15V6M15,9H19V10.5H15V9Z"; +var mdiLogin = "M10,17V14H3V10H10V7L15,12L10,17M10,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H10A2,2 0 0,1 8,20V18H10V20H19V4H10V6H8V4A2,2 0 0,1 10,2Z"; +var mdiLoginVariant = "M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z"; +var mdiLogout = "M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0 0,1 16,4V6H14V4H5V20H14V18H16V20A2,2 0 0,1 14,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2H14Z"; +var mdiLogoutVariant = "M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z"; +var mdiLongitude = "M12 2A10 10 0 1 0 22 12A10.03 10.03 0 0 0 12 2M9.4 19.6A8.05 8.05 0 0 1 9.4 4.4A16.45 16.45 0 0 0 7.5 12A16.45 16.45 0 0 0 9.4 19.6M12 20A13.81 13.81 0 0 1 9.5 12A13.81 13.81 0 0 1 12 4A13.81 13.81 0 0 1 14.5 12A13.81 13.81 0 0 1 12 20M14.6 19.6A16.15 16.15 0 0 0 14.6 4.4A8.03 8.03 0 0 1 20 12A7.9 7.9 0 0 1 14.6 19.6Z"; +var mdiLooks = "M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z"; +var mdiLotion = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M16 12V22H4V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12Z"; +var mdiLotionOutline = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M16 12V20C16 21.1 15.1 22 14 22H6C4.9 22 4 21.1 4 20V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12M14 12C14 9.79 12.21 8 10 8S6 9.79 6 12V20H14V12Z"; +var mdiLotionPlus = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M13 14H11V12H9V14H7V16H9V18H11V16H13V14M16 12V22H4V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12Z"; +var mdiLotionPlusOutline = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M13 14H11V12H9V14H7V16H9V18H11V16H13V14M16 12V20C16 21.1 15.1 22 14 22H6C4.9 22 4 21.1 4 20V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12M14 12C14 9.79 12.21 8 10 8S6 9.79 6 12V20H14V12Z"; +var mdiLoupe = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"; +var mdiLumx = "M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z"; +var mdiLungs = "M15.47 3.11C15 2.85 14.37 3.05 14.11 3.54C14.04 3.68 14 3.84 14 4V6.59L13.29 5.88C13.1 5.69 13 5.44 13 5.18V1H11V5.17C11 5.44 10.9 5.69 10.71 5.88L10 6.59V4C10 3.44 9.54 3 9 3C8.83 3 8.67 3.04 8.53 3.11C4.72 5 2 9.97 2 15.77C2 17.67 2.33 19.55 3 21.32C3.19 21.85 3.76 22.13 4.29 21.94C4.34 21.92 4.39 21.9 4.44 21.87L9.5 19.07C9.81 18.9 10 18.56 10 18.19V9.41L11.3 8.12C11.69 7.73 12.32 7.73 12.71 8.12L14 9.42V18.2C14 18.56 14.21 18.9 14.5 19.08L19.58 21.88C20.07 22.14 20.68 21.96 20.94 21.46C20.96 21.42 21 21.37 21 21.32C21.67 19.55 22 17.67 22 15.77C22 9.97 19.29 5 15.47 3.11Z"; +var mdiMagnet = "M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3"; +var mdiMagnetOn = "M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z"; +var mdiMagnify = "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; +var mdiMagnifyClose = "M9,2A7,7 0 0,1 16,9C16,10.5 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.5,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M11.12,5.46L9,7.59L6.88,5.46L5.46,6.88L7.59,9L5.46,11.12L6.88,12.54L9,10.41L11.12,12.54L12.54,11.12L10.41,9L12.54,6.88L11.12,5.46Z"; +var mdiMagnifyMinus = "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z"; +var mdiMagnifyMinusCursor = "M11,4A7,7 0 0,1 18,11C18,12.5 17.5,14 16.61,15.19L17.42,16H18L23,21L21,23L16,18V17.41L15.19,16.6C12.1,18.92 7.71,18.29 5.39,15.2C3.07,12.11 3.7,7.72 6.79,5.4C8,4.5 9.5,4 11,4M7,10V12H15V10H7M1,1V8L8,1H1Z"; +var mdiMagnifyMinusOutline = "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z"; +var mdiMagnifyPlus = "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z"; +var mdiMagnifyPlusCursor = "M11,4A7,7 0 0,1 18,11C18,12.5 17.5,14 16.61,15.19L17.42,16H18L23,21L21,23L16,18V17.41L15.19,16.6C12.1,18.92 7.71,18.29 5.39,15.2C3.07,12.11 3.7,7.72 6.79,5.4C8,4.5 9.5,4 11,4M10,7V10H7V12H10V15H12V12H15V10H12V7H10M1,1V8L8,1H1Z"; +var mdiMagnifyPlusOutline = "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z"; +var mdiMagnifyRemoveCursor = "M1 1V8L8 1H1M18 16H17.42L16.61 15.19C17.5 14 18 12.5 18 11C18 7.13 14.87 4 11 4C9.5 4 8 4.5 6.79 5.4C3.7 7.72 3.07 12.11 5.39 15.2C7.71 18.29 12.1 18.92 15.19 16.6L16 17.41V18L21 23L23 21L18 16M14.6 13.16L13.18 14.58L11.06 12.45L8.94 14.58L7.5 13.16L9.65 11.04L7.5 8.92L8.94 7.5L11.06 9.63L13.18 7.5L14.6 8.92L12.47 11.04L14.6 13.16Z"; +var mdiMagnifyRemoveOutline = "M15.5 14H14.71L14.43 13.73C15.41 12.59 16 11.11 16 9.5C16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16C11.11 16 12.59 15.41 13.73 14.43L14 14.71V15.5L19 20.5L20.5 19L15.5 14M9.5 14C7 14 5 12 5 9.5S7 5 9.5 5 14 7 14 9.5 12 14 9.5 14M10.91 11.62L9.5 10.21L8.09 11.62L7.38 10.91L8.79 9.5L7.38 8.09L8.09 7.38L9.5 8.79L10.91 7.38L11.62 8.09L10.21 9.5L11.62 10.91L10.91 11.62Z"; +var mdiMagnifyScan = "M17 22V20H20V17H22V20.5C22 20.89 21.84 21.24 21.54 21.54C21.24 21.84 20.89 22 20.5 22H17M7 22H3.5C3.11 22 2.76 21.84 2.46 21.54C2.16 21.24 2 20.89 2 20.5V17H4V20H7V22M17 2H20.5C20.89 2 21.24 2.16 21.54 2.46C21.84 2.76 22 3.11 22 3.5V7H20V4H17V2M7 2V4H4V7H2V3.5C2 3.11 2.16 2.76 2.46 2.46C2.76 2.16 3.11 2 3.5 2H7M10.5 6C13 6 15 8 15 10.5C15 11.38 14.75 12.2 14.31 12.9L17.57 16.16L16.16 17.57L12.9 14.31C12.2 14.75 11.38 15 10.5 15C8 15 6 13 6 10.5C6 8 8 6 10.5 6M10.5 8C9.12 8 8 9.12 8 10.5C8 11.88 9.12 13 10.5 13C11.88 13 13 11.88 13 10.5C13 9.12 11.88 8 10.5 8Z"; +var mdiMail = "M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M17,17H7V15H17M17,13H7V11H17M20,9H17V6H20"; +var mdiMailbox = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M19,15H17V13H13V11H19V15M9,11H5V9H9V11Z"; +var mdiMailboxOpen = "M8,4A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4H8M8,6A3,3 0 0,1 11,9V18H5V9A3,3 0 0,1 8,6M14,11H20V15H18V13H14V11Z"; +var mdiMailboxOpenOutline = "M14,11H20V15H18V13H14V11M18,4H8A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4M11,18H5V9A3,3 0 0,1 8,6A3,3 0 0,1 11,9V18M21,18H13V9C13,7.92 12.65,6.86 12,6H18A3,3 0 0,1 21,9V18Z"; +var mdiMailboxOpenUp = "M8,4A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4H8M8,6A3,3 0 0,1 11,9V18H5V9A3,3 0 0,1 8,6M13,13V7H17V9H15V13H13Z"; +var mdiMailboxOpenUpOutline = "M14,12.85V6.85H18V8.85H16V12.85H14M18,3.85H8A5,5 0 0,0 3,8.85V17.85H1V19.85H21A2,2 0 0,0 23,17.85V8.85A5,5 0 0,0 18,3.85M11,17.85H5V8.85A3,3 0 0,1 8,5.85A3,3 0 0,1 11,8.85V17.85M21,17.85H13V8.85C13,7.76 12.65,6.71 12,5.85H18A3,3 0 0,1 21,8.85V17.85Z"; +var mdiMailboxOutline = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M20,18H12V9C12,7.92 11.65,6.86 11,6H17A3,3 0 0,1 20,9V18M13,11V13H17V15H19V11H13M9,11H5V9H9V11Z"; +var mdiMailboxUp = "M5,9H9V11H5V9M22,9V18A2,2 0 0,1 20,20H2V9A5,5 0 0,1 7,4H17A5,5 0 0,1 22,9M10,9A3,3 0 0,0 7,6A3,3 0 0,0 4,9V18H10V9M16,7H12V13H14V9H16V7Z"; +var mdiMailboxUpOutline = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M20,18H12V9C12,7.92 11.65,6.86 11,6H17A3,3 0 0,1 20,9V18M13,13H15V9H17V7H13V13M9,11H5V9H9V11Z"; +var mdiManjaro = "M2 2V22H7.6V7.6H14.8V2H2M9.2 9.2V22H14.8V9.2H9.2M16.4 2V22H22V2H16.4Z"; +var mdiMap = "M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z"; +var mdiMapCheck = "M18.25,22L15.5,19L16.66,17.82L18.25,19.41L21.84,15.82L23,17.23M20.5,3A0.5,0.5 0 0,1 21,3.5V13.36C20.36,13.13 19.69,13 19,13C17.46,13 16.06,13.6 15,14.56V7.1L9,5V16.9L13.04,18.3C13,18.54 13,18.77 13,19C13,19.46 13.06,19.92 13.16,20.36L9,18.9L3.66,20.97C3.59,21 3.55,21 3.5,21A0.5,0.5 0 0,1 3,20.5V5.38C3,5.15 3.16,4.97 3.35,4.9L9,3L15,5.1L20.33,3"; +var mdiMapCheckOutline = "M18.25,22L15.5,19L16.66,17.82L18.25,19.41L21.84,15.82L23,17.23L18.25,22M20.5,3A0.5,0.5 0 0,1 21,3.5V13.34C20.37,13.12 19.7,13 19,13V5.7L16,6.86V13.8C15.2,14.27 14.5,14.91 14,15.68V6.87L10,5.47V17.13L13.05,18.2L13,19C13,19.46 13.05,19.92 13.15,20.35L9,18.9L3.66,20.97L3.5,21A0.5,0.5 0 0,1 3,20.5V5.38C3,5.15 3.15,4.97 3.36,4.9L9,3L15,5.1L20.34,3.03L20.5,3M5,6.46V18.31L8,17.15V5.45L5,6.46Z"; +var mdiMapClock = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M23,16A7,7 0 0,1 16,23C13,23 10.4,21.08 9.42,18.4L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2H19.5A0.5,0.5 0 0,1 20,2.5V10.25C21.81,11.5 23,13.62 23,16M9,16C9,12.83 11.11,10.15 14,9.29V6.11L8,4V15.89L9,16.24C9,16.16 9,16.08 9,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; +var mdiMapClockOutline = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M16,9C16.69,9 17.37,9.1 18,9.29V4.7L15,5.86V9.07C15.33,9 15.66,9 16,9M23,16A7,7 0 0,1 16,23C13,23 10.4,21.08 9.42,18.4L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2.03L19.5,2A0.5,0.5 0 0,1 20,2.5V10.25C21.81,11.5 23,13.62 23,16M9,16C9,13.21 10.63,10.8 13,9.67V5.87L9,4.47V16.13H9C9,16.09 9,16.04 9,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11M4,5.46V17.31L7,16.15V4.45L4,5.46Z"; +var mdiMapLegend = "M9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3L20.34,3.03L15,5.1L9,3M8,5.45V17.15L5,18.31V6.46L8,5.45M10,5.47L14,6.87V18.53L10,17.13V5.47M19,5.7V17.54L16,18.55V6.86L19,5.7M7.46,6.3L5.57,6.97V9.12L7.46,8.45V6.3M7.46,9.05L5.57,9.72V11.87L7.46,11.2V9.05M7.46,11.8L5.57,12.47V14.62L7.46,13.95V11.8M7.46,14.55L5.57,15.22V17.37L7.46,16.7V14.55Z"; +var mdiMapMarker = "M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"; +var mdiMapMarkerAlert = "M12 2C15.9 2 19 5.1 19 9C19 14.2 12 22 12 22S5 14.2 5 9C5 5.1 8.1 2 12 2M11 6V12H13V6H11M11 14V16H13V14H11Z"; +var mdiMapMarkerAlertOutline = "M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4M11,6H13V11H11V6M11,13H13V15H11V13Z"; +var mdiMapMarkerCheck = "M12,2C15.86,2 19,5.14 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9C5,5.14 8.14,2 12,2M10.47,14L17,7.41L15.6,6L10.47,11.18L8.4,9.09L7,10.5L10.47,14Z"; +var mdiMapMarkerCheckOutline = "M12 4C14.8 4 17 6.2 17 9C17 11.9 14.1 16.2 12 18.9C9.9 16.2 7 11.9 7 9C7 6.2 9.2 4 12 4M12 2C8.1 2 5 5.1 5 9C5 14.2 12 22 12 22S19 14.2 19 9C19 5.1 15.9 2 12 2M11.3 14L16.2 9L14.8 7.6L11.3 11.2L9.7 9.6L8.3 11L11.3 14Z"; +var mdiMapMarkerCircle = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z"; +var mdiMapMarkerDistance = "M6.5,8.11C5.61,8.11 4.89,7.39 4.89,6.5A1.61,1.61 0 0,1 6.5,4.89C7.39,4.89 8.11,5.61 8.11,6.5V6.5A1.61,1.61 0 0,1 6.5,8.11M6.5,2C4,2 2,4 2,6.5C2,9.87 6.5,14.86 6.5,14.86C6.5,14.86 11,9.87 11,6.5C11,4 9,2 6.5,2M17.5,8.11A1.61,1.61 0 0,1 15.89,6.5C15.89,5.61 16.61,4.89 17.5,4.89C18.39,4.89 19.11,5.61 19.11,6.5A1.61,1.61 0 0,1 17.5,8.11M17.5,2C15,2 13,4 13,6.5C13,9.87 17.5,14.86 17.5,14.86C17.5,14.86 22,9.87 22,6.5C22,4 20,2 17.5,2M17.5,16C16.23,16 15.1,16.8 14.68,18H9.32C8.77,16.44 7.05,15.62 5.5,16.17C3.93,16.72 3.11,18.44 3.66,20C4.22,21.56 5.93,22.38 7.5,21.83C8.35,21.53 9,20.85 9.32,20H14.69C15.24,21.56 16.96,22.38 18.5,21.83C20.08,21.28 20.9,19.56 20.35,18C19.92,16.8 18.78,16 17.5,16V16M17.5,20.5A1.5,1.5 0 0,1 16,19A1.5,1.5 0 0,1 17.5,17.5A1.5,1.5 0 0,1 19,19A1.5,1.5 0 0,1 17.5,20.5Z"; +var mdiMapMarkerDown = "M12 2A7 7 0 0 0 5 9C5 14.25 12 22 12 22S19 14.25 19 9A7 7 0 0 0 12 2M7.5 10H10V5H14V10H16.5L12 14.5Z"; +var mdiMapMarkerLeft = "M15 11.5C13.62 11.5 12.5 10.38 12.5 9S13.62 6.5 15 6.5 17.5 7.62 17.5 9 16.38 11.5 15 11.5M8 9C8 14.25 15 22 15 22S22 14.25 22 9C22 5.13 18.87 2 15 2S8 5.13 8 9M6 7L1 12L6 17V7Z"; +var mdiMapMarkerLeftOutline = "M15 6.5C16.38 6.5 17.5 7.62 17.5 9S16.38 11.5 15 11.5 12.5 10.38 12.5 9 13.62 6.5 15 6.5M15 2C18.87 2 22 5.13 22 9C22 14.25 15 22 15 22S8 14.25 8 9C8 5.13 11.13 2 15 2M10 9C10 10 10 12 15 18.71C20 12 20 10 20 9C20 6.24 17.76 4 15 4S10 6.24 10 9M6 7L1 12L6 17V7Z"; +var mdiMapMarkerMinus = "M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z"; +var mdiMapMarkerMinusOutline = "M15 17H23V19H15V17M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z"; +var mdiMapMarkerMultiple = "M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z"; +var mdiMapMarkerMultipleOutline = "M11.5 9C11.5 7.62 12.62 6.5 14 6.5C15.1 6.5 16.03 7.21 16.37 8.19C16.45 8.45 16.5 8.72 16.5 9C16.5 10.38 15.38 11.5 14 11.5C12.91 11.5 12 10.81 11.64 9.84C11.55 9.58 11.5 9.29 11.5 9M5 9C5 13.5 10.08 19.66 11 20.81L10 22C10 22 3 14.25 3 9C3 5.83 5.11 3.15 8 2.29C6.16 3.94 5 6.33 5 9M14 2C17.86 2 21 5.13 21 9C21 14.25 14 22 14 22C14 22 7 14.25 7 9C7 5.13 10.14 2 14 2M14 4C11.24 4 9 6.24 9 9C9 10 9 12 14 18.71C19 12 19 10 19 9C19 6.24 16.76 4 14 4Z"; +var mdiMapMarkerOff = "M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z"; +var mdiMapMarkerOffOutline = "M20 19.7L3.3 3L2 4.3L5.2 7.5C5.1 8 5 8.5 5 9C5 14.2 12 22 12 22S13.7 20.1 15.4 17.6L18.8 21L20 19.7M12 18.7C7.4 12.5 7 10.4 7 9.3L13.8 16.1C13.3 16.9 12.7 17.7 12 18.7M8.4 5.6L7 4.2C8.2 2.8 10 2 12 2C15.9 2 19 5.1 19 9C19 10.7 18.3 12.6 17.3 14.5L15.8 13C17 10.6 17 9.6 17 9C17 6.2 14.8 4 12 4C10.6 4 9.3 4.6 8.4 5.6M12 6.5C13.4 6.5 14.5 7.6 14.5 9C14.5 9.7 14.2 10.4 13.7 10.9L10.2 7.4C10.6 6.8 11.3 6.5 12 6.5Z"; +var mdiMapMarkerOutline = "M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z"; +var mdiMapMarkerPath = "M18,15A3,3 0 0,1 21,18A3,3 0 0,1 18,21C16.69,21 15.58,20.17 15.17,19H14V17H15.17C15.58,15.83 16.69,15 18,15M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,8A1.43,1.43 0 0,0 19.43,6.57C19.43,5.78 18.79,5.14 18,5.14C17.21,5.14 16.57,5.78 16.57,6.57A1.43,1.43 0 0,0 18,8M18,2.57A4,4 0 0,1 22,6.57C22,9.56 18,14 18,14C18,14 14,9.56 14,6.57A4,4 0 0,1 18,2.57M8.83,17H10V19H8.83C8.42,20.17 7.31,21 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V14H7V15.17C7.85,15.47 8.53,16.15 8.83,17M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V10H5V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M11,19V17H13V19H11M7,13H5V11H7V13Z"; +var mdiMapMarkerPlus = "M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z"; +var mdiMapMarkerPlusOutline = "M15 17H18V14H20V17H23V19H20V22H18V19H15V17M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z"; +var mdiMapMarkerQuestion = "M12,2C8.14,2 5,5.14 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9C19,5.14 15.86,2 12,2M12.88,15.75H11.13V14H12.88M12.88,12.88H11.13C11.13,10.04 13.75,10.26 13.75,8.5A1.75,1.75 0 0,0 12,6.75A1.75,1.75 0 0,0 10.25,8.5H8.5A3.5,3.5 0 0,1 12,5A3.5,3.5 0 0,1 15.5,8.5C15.5,10.69 12.88,10.91 12.88,12.88Z"; +var mdiMapMarkerQuestionOutline = "M12,1C7.59,1 4,4.59 4,9C4,14.57 10.96,22.34 11.26,22.67L12,23.5L12.74,22.67C13.04,22.34 20,14.57 20,9C20,4.59 16.41,1 12,1M12,20.47C9.82,17.86 6,12.54 6,9A6,6 0 0,1 12,3A6,6 0 0,1 18,9C18,12.83 13.75,18.36 12,20.47M11.13,14H12.88V15.75H11.13M12,5A3.5,3.5 0 0,0 8.5,8.5H10.25A1.75,1.75 0 0,1 12,6.75A1.75,1.75 0 0,1 13.75,8.5C13.75,10.26 11.13,10.04 11.13,12.88H12.88C12.88,10.91 15.5,10.69 15.5,8.5A3.5,3.5 0 0,0 12,5Z"; +var mdiMapMarkerRadius = "M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z"; +var mdiMapMarkerRadiusOutline = "M12 4C14.2 4 16 5.8 16 8C16 10.1 13.9 13.5 12 15.9C10.1 13.4 8 10.1 8 8C8 5.8 9.8 4 12 4M12 2C8.7 2 6 4.7 6 8C6 12.5 12 19 12 19S18 12.4 18 8C18 4.7 15.3 2 12 2M12 6C10.9 6 10 6.9 10 8S10.9 10 12 10 14 9.1 14 8 13.1 6 12 6M20 19C20 21.2 16.4 23 12 23S4 21.2 4 19C4 17.7 5.2 16.6 7.1 15.8L7.7 16.7C6.7 17.2 6 17.8 6 18.5C6 19.9 8.7 21 12 21S18 19.9 18 18.5C18 17.8 17.3 17.2 16.2 16.7L16.8 15.8C18.8 16.6 20 17.7 20 19Z"; +var mdiMapMarkerRemove = "M9,2C5.14,2 2,5.14 2,9C2,14.25 9,22 9,22C9,22 16,14.25 16,9A7,7 0 0,0 9,2M9,6.5A2.5,2.5 0 0,1 11.5,9A2.5,2.5 0 0,1 9,11.5A2.5,2.5 0 0,1 6.5,9A2.5,2.5 0 0,1 9,6.5M16.58,14.16L15.17,15.58L17.58,18L15.17,20.41L16.58,21.82L19,19.41L21.41,21.82L22.83,20.41L20.41,18L22.83,15.58L21.41,14.16L19,16.58"; +var mdiMapMarkerRemoveOutline = "M16.6 14.2L15.2 15.6L17.6 18L15.2 20.4L16.6 21.8L19 19.4L21.4 21.8L22.8 20.4L20.4 18L22.8 15.6L21.4 14.2L19 16.6M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z"; +var mdiMapMarkerRemoveVariant = "M12,2C8.14,2 5,5.14 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9C19,5.14 15.86,2 12,2M9.59,5.17L12,7.58L14.41,5.17L15.83,6.58L13.41,9L15.83,11.41L14.41,12.83L12,10.41L9.59,12.83L8.17,11.41L10.59,9L8.17,6.58"; +var mdiMapMarkerRight = "M9 11.5C7.62 11.5 6.5 10.38 6.5 9S7.62 6.5 9 6.5 11.5 7.62 11.5 9 10.38 11.5 9 11.5M9 2C5.13 2 2 5.13 2 9C2 14.25 9 22 9 22S16 14.25 16 9C16 5.13 12.87 2 9 2M18 17L23 12L18 7V17Z"; +var mdiMapMarkerRightOutline = "M9 6.5C10.38 6.5 11.5 7.62 11.5 9S10.38 11.5 9 11.5 6.5 10.38 6.5 9 7.62 6.5 9 6.5M9 2C12.87 2 16 5.13 16 9C16 14.25 9 22 9 22S2 14.25 2 9C2 5.13 5.13 2 9 2M9 4C6.24 4 4 6.24 4 9C4 10 4 12 9 18.71C14 12 14 10 14 9C14 6.24 11.76 4 9 4M18 17L23 12L18 7V17Z"; +var mdiMapMarkerStar = "M12 2C8.1 2 5 5.1 5 9C5 14.2 12 22 12 22S19 14.2 19 9C19 5.1 15.9 2 12 2M14.5 13L12 11.5L9.5 13L10.2 10.2L8 8.3L10.9 8.1L12 5.4L13.1 8L16 8.3L13.8 10.2L14.5 13Z"; +var mdiMapMarkerStarOutline = "M12 2C15.9 2 19 5.1 19 9C19 14.2 12 22 12 22S5 14.2 5 9C5 5.1 8.1 2 12 2M12 4C9.2 4 7 6.2 7 9C7 10 7 12 12 18.7C17 12 17 10 17 9C17 6.2 14.8 4 12 4M12 11.5L14.4 13L13.8 10.2L16 8.3L13.1 8.1L12 5.4L10.9 8L8 8.3L10.2 10.2L9.5 13L12 11.5Z"; +var mdiMapMarkerUp = "M12 2A7 7 0 0 0 5 9C5 14.25 12 22 12 22S19 14.25 19 9A7 7 0 0 0 12 2M16.5 9H14V14H10V9H7.5L12 4.5Z"; +var mdiMapMinus = "M15 18V20H23V18H15M13.16 20.36L9 18.9L3.66 20.97C3.6 21 3.55 21 3.5 21C3.22 21 3 20.78 3 20.5V5.38C3 5.15 3.16 4.97 3.36 4.9L9 3L15 5.1L20.34 3H20.5C20.78 3 21 3.22 21 3.5V13.35C20.37 13.13 19.7 13 19 13C17.46 13 16.06 13.58 15 14.54V7.1L9 5V16.9L13.04 18.32C13 18.54 13 18.77 13 19C13 19.47 13.06 19.92 13.16 20.36Z"; +var mdiMapOutline = "M20.5,3L20.34,3.03L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3M10,5.47L14,6.87V18.53L10,17.13V5.47M5,6.46L8,5.45V17.15L5,18.31V6.46M19,17.54L16,18.55V6.86L19,5.7V17.54Z"; +var mdiMapPlus = "M9,3L3.36,4.9C3.16,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.6,21 3.66,20.97L9,18.9L13.16,20.36C13.06,19.92 13,19.46 13,19C13,18.77 13,18.54 13.04,18.3L9,16.9V5L15,7.1V14.56C16.07,13.6 17.47,13 19,13C19.7,13 20.37,13.13 21,13.36V3.5A0.5,0.5 0 0,0 20.5,3H20.34L15,5.1L9,3M18,15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiMapSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M14,6.11L8,4V15.89L9,16.24V16.5C9,17.14 9.09,17.76 9.26,18.34L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2H19.5A0.5,0.5 0 0,1 20,2.5V11.81C18.83,10.69 17.25,10 15.5,10C15,10 14.5,10.06 14,10.17V6.11Z"; +var mdiMapSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.2 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19.5,2A0.5,0.5 0 0,1 20,2.5V11.81C19.42,11.26 18.75,10.81 18,10.5V4.7L15,5.86V10C14.3,10.07 13.62,10.24 13,10.5V5.87L9,4.47V16.13H9V16.5C9,17.14 9.09,17.76 9.26,18.34L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2.03L19.5,2M4,5.46V17.31L7,16.15V4.45L4,5.46Z"; +var mdiMapbox = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M16.75,14.45C18.65,12.55 18.58,9.39 16.59,7.41C14.6,5.43 11.45,5.35 9.55,7.25C6.12,10.68 7.22,16.78 7.22,16.78C7.22,16.78 13.33,17.87 16.75,14.45M13.15,7.86L14.13,9.87L16.14,10.85L14.13,11.83L13.15,13.84L12.17,11.83L10.16,10.85L12.17,9.87L13.15,7.86Z"; +var mdiMargin = "M20,4V9L18.5,7.5L5.5,20.5L3.5,18.5L16.5,5.5L15,4H20M17,20A3,3 0 0,1 14,17V15A3,3 0 0,1 17,12A3,3 0 0,1 20,15V17A3,3 0 0,1 17,20M17,14A1,1 0 0,0 16,15V17A1,1 0 0,0 17,18A1,1 0 0,0 18,17V15A1,1 0 0,0 17,14M7,12A3,3 0 0,1 4,9V7A3,3 0 0,1 7,4A3,3 0 0,1 10,7V9A3,3 0 0,1 7,12M7,6A1,1 0 0,0 6,7V9A1,1 0 0,0 7,10A1,1 0 0,0 8,9V7A1,1 0 0,0 7,6Z"; +var mdiMarker = "M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16"; +var mdiMarkerCancel = "M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13M17.5,14.5C16.94,14.5 16.42,14.65 16,14.92L20.08,19C20.35,18.58 20.5,18.06 20.5,17.5A3,3 0 0,0 17.5,14.5M14.5,17.5A3,3 0 0,0 17.5,20.5C18.06,20.5 18.58,20.35 19,20.08L14.92,16C14.65,16.42 14.5,16.94 14.5,17.5M18.5,1.15C19,1.15 19.5,1.34 19.89,1.73L22.73,4.56C23.5,5.35 23.5,6.61 22.73,7.39L18.95,11.16C18.5,11.06 18,11 17.5,11C16.67,11 15.88,11.16 15.15,11.44L11.26,7.55L17.07,1.73C17.46,1.34 17.97,1.15 18.5,1.15M10.3,8.5L13.89,12.1C12.15,13.26 11,15.25 11,17.5C11,18 11.06,18.5 11.16,18.95L10,20.12C9.22,20.89 7.97,20.9 7.19,20.14L6.33,21H0.67L4.36,17.31C3.56,16.5 3.56,15.24 4.34,14.46L10.3,8.5Z"; +var mdiMarkerCheck = "M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z"; +var mdiMastodon = "M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z"; +var mdiMaterialDesign = "M21,12C21,9.97 20.33,8.09 19,6.38V17.63C20.33,15.97 21,14.09 21,12M17.63,19H6.38C7.06,19.55 7.95,20 9.05,20.41C10.14,20.8 11.13,21 12,21C12.88,21 13.86,20.8 14.95,20.41C16.05,20 16.94,19.55 17.63,19M11,17L7,9V17H11M17,9L13,17H17V9M12,14.53L15.75,7H8.25L12,14.53M17.63,5C15.97,3.67 14.09,3 12,3C9.91,3 8.03,3.67 6.38,5H17.63M5,17.63V6.38C3.67,8.09 3,9.97 3,12C3,14.09 3.67,15.97 5,17.63M23,12C23,15.03 21.94,17.63 19.78,19.78C17.63,21.94 15.03,23 12,23C8.97,23 6.38,21.94 4.22,19.78C2.06,17.63 1,15.03 1,12C1,8.97 2.06,6.38 4.22,4.22C6.38,2.06 8.97,1 12,1C15.03,1 17.63,2.06 19.78,4.22C21.94,6.38 23,8.97 23,12Z"; +var mdiMaterialUi = "M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z"; +var mdiMathCompass = "M20,19.88V22L18.2,20.83L13.41,11.83C14.07,11.62 14.67,11.28 15.19,10.83L20,19.88M15,7A3,3 0 0,1 12,10C11.85,10 11.71,10 11.56,10L5.8,20.83L4,22V19.88L9.79,9C8.69,7.77 8.79,5.87 10.03,4.76C10.57,4.28 11.27,4 12,4V2A1,1 0 0,1 13,3V4.18C14.2,4.6 15,5.73 15,7M13,7A1,1 0 0,0 12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7Z"; +var mdiMathCos = "M4,7A2,2 0 0,0 2,9V15A2,2 0 0,0 4,17H6A2,2 0 0,0 8,15V14H6V15H4V9H6V10H8V9A2,2 0 0,0 6,7H4M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M18,7A2,2 0 0,0 16,9V11A2,2 0 0,0 18,13H20V15H16V17H20A2,2 0 0,0 22,15V13A2,2 0 0,0 20,11H18V9H22V7H18Z"; +var mdiMathIntegral = "M11.5 19.1C11.3 20.2 10.9 21 10.2 21.5C9.5 22 8.6 22.1 7.5 21.9C7.1 21.8 6.3 21.7 6 21.5L6.5 20C6.8 20.1 7.4 20.3 7.7 20.3C8.8 20.5 9.4 20 9.6 18.8L12 5.2C12.2 4 12.7 3.2 13.4 2.6C14.1 2.1 15.1 1.9 16.2 2.1C16.6 2.2 17.4 2.3 18 2.6L17.5 4C17.3 3.9 16.6 3.8 16.3 3.7C15 3.5 14.3 4.1 14 5.6L11.5 19.1Z"; +var mdiMathIntegralBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M15.9 6.9C15.9 6.9 15.2 6.6 14.9 6.6C14.3 6.5 13.9 6.7 13.7 7.7L12 16.8C11.8 17.6 11.5 18.2 11 18.6C10.6 18.9 10.2 19 9.7 19C8.9 19 7.7 18.5 7.7 18.5L8.2 17.1C8.2 17.1 9 17.4 9.2 17.4C9.5 17.5 9.7 17.4 9.9 17.3C10.1 17.2 10.2 16.9 10.3 16.6L11.9 7.4C12 6.6 12.4 6 12.9 5.5C13.5 5.1 14.2 5 15 5.1C15.7 5.2 16.5 5.6 16.5 5.6L15.9 6.9Z"; +var mdiMathLog = "M18 7C16.9 7 16 7.9 16 9V15C16 16.1 16.9 17 18 17H20C21.1 17 22 16.1 22 15V11H20V15H18V9H22V7H18M2 7V17H8V15H4V7H2M11 7C9.9 7 9 7.9 9 9V15C9 16.1 9.9 17 11 17H13C14.1 17 15 16.1 15 15V9C15 7.9 14.1 7 13 7H11M11 9H13V15H11V9Z"; +var mdiMathNorm = "M14 21V3H16V21H14M8 21V3H10V21H8Z"; +var mdiMathNormBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 18H8V6H10V18M16 18H14V6H16V18Z"; +var mdiMathSin = "M4,7A2,2 0 0,0 2,9V11A2,2 0 0,0 4,13H6V15H2V17H6A2,2 0 0,0 8,15V13A2,2 0 0,0 6,11H4V9H8V7H4M14,7V9H13V15H14V17H10V15H11V9H10V7H14M16,7V17H18V12L20,17H22V7H20V12L18,7H16Z"; +var mdiMathTan = "M2,7V9H4V17H6V9H8V7H2M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9M16,7V17H18V12L20,17H22V7H20V12L18,7H16Z"; +var mdiMatrix = "M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z"; +var mdiMedal = "M20,2H4V4L9.81,8.36C6.14,9.57 4.14,13.53 5.35,17.2C6.56,20.87 10.5,22.87 14.19,21.66C17.86,20.45 19.86,16.5 18.65,12.82C17.95,10.71 16.3,9.05 14.19,8.36L20,4V2M14.94,19.5L12,17.78L9.06,19.5L9.84,16.17L7.25,13.93L10.66,13.64L12,10.5L13.34,13.64L16.75,13.93L14.16,16.17L14.94,19.5Z"; +var mdiMedalOutline = "M14.94 19.5L12 17.77L9.06 19.5L9.84 16.16L7.25 13.92L10.66 13.63L12 10.5L13.34 13.63L16.75 13.92L14.16 16.16M20 2H4V4L8.86 7.64A8 8 0 1 0 15.14 7.64L20 4M18 15A6 6 0 1 1 10.82 9.12A5.86 5.86 0 0 1 13.18 9.12A6 6 0 0 1 18 15M12.63 7H11.37L7.37 4H16.71Z"; +var mdiMedicalBag = "M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z"; +var mdiMeditation = "M12 4C13.11 4 14 4.89 14 6S13.11 8 12 8 10 7.11 10 6 10.9 4 12 4M21 16V14C18.76 14 16.84 13.04 15.4 11.32L14.06 9.72C13.68 9.26 13.12 9 12.53 9H11.5C10.89 9 10.33 9.26 9.95 9.72L8.61 11.32C7.16 13.04 5.24 14 3 14V16C5.77 16 8.19 14.83 10 12.75V15L6.12 16.55C5.45 16.82 5 17.5 5 18.21C5 19.2 5.8 20 6.79 20H9V19.5C9 18.12 10.12 17 11.5 17H14.5C14.78 17 15 17.22 15 17.5S14.78 18 14.5 18H11.5C10.67 18 10 18.67 10 19.5V20H17.21C18.2 20 19 19.2 19 18.21C19 17.5 18.55 16.82 17.88 16.55L14 15V12.75C15.81 14.83 18.23 16 21 16Z"; +var mdiMemory = "M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z"; +var mdiMenu = "M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z"; +var mdiMenuDown = "M7,10L12,15L17,10H7Z"; +var mdiMenuDownOutline = "M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z"; +var mdiMenuLeft = "M14,7L9,12L14,17V7Z"; +var mdiMenuLeftOutline = "M15,18H13.5L7.5,12L13.5,6H15V18M10.33,12L13,14.67V9.33L10.33,12Z"; +var mdiMenuOpen = "M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z"; +var mdiMenuRight = "M10,17L15,12L10,7V17Z"; +var mdiMenuRightOutline = "M9,6H10.5L16.5,12L10.5,18H9V6M13.67,12L11,9.33V14.67L13.67,12Z"; +var mdiMenuSwap = "M12,6L7,11H17L12,6M7,13L12,18L17,13H7Z"; +var mdiMenuSwapOutline = "M12,3.5L6,9.5V11H18V9.5L12,3.5M12,6.33L14.67,9H9.33L12,6.33M6,13V14.5L12,20.5L18,14.5V13H6M9.33,15H14.67L12,17.67L9.33,15Z"; +var mdiMenuUp = "M7,15L12,10L17,15H7Z"; +var mdiMenuUpOutline = "M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z"; +var mdiMerge = "M8 17L12 13H15.2C15.6 14.2 16.7 15 18 15C19.7 15 21 13.7 21 12S19.7 9 18 9C16.7 9 15.6 9.8 15.2 11H12L8 7V3H3V8H6L10.2 12L6 16H3V21H8V17Z"; +var mdiMessage = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; +var mdiMessageAlert = "M13 11H11V5H13M13 15H11V13H13M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z"; +var mdiMessageAlertOutline = "M13,10H11V6H13V10M13,12H11V14H13V12M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M20,4H4V17.2L5.2,16H20V4Z"; +var mdiMessageArrowLeft = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M16 11H11.5L13.3 12.8L12 14L8 10L12 6L13.2 7.2L11.5 9H16V11Z"; +var mdiMessageArrowLeftOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16 11V9H11.5L13.3 7.2L12 6L8 10L12 14L13.2 12.8L11.5 11H16Z"; +var mdiMessageArrowRight = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14L10.8 12.8L12.6 11H8V9H12.5L10.7 7.2L12 6L16 10L12 14Z"; +var mdiMessageArrowRightOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M8 9V11H12.5L10.7 12.8L12 14L16 10L12 6L10.8 7.2L12.5 9H8Z"; +var mdiMessageBookmark = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M19 13L16.5 11.5L14 13V5H19V13Z"; +var mdiMessageBookmarkOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M18 14V6H13V14L15.5 12.5L18 14"; +var mdiMessageBulleted = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z"; +var mdiMessageBulletedOff = "M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z"; +var mdiMessageCog = "M13.5,10A1.5,1.5 0 0,1 12,11.5C11.16,11.5 10.5,10.83 10.5,10A1.5,1.5 0 0,1 12,8.5A1.5,1.5 0 0,1 13.5,10M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M16.77,11.32L15.7,10.5C15.71,10.33 15.71,10.16 15.7,10C15.72,9.84 15.72,9.67 15.7,9.5L16.76,8.68C16.85,8.6 16.88,8.47 16.82,8.36L15.82,6.63C15.76,6.5 15.63,6.47 15.5,6.5L14.27,7C14,6.8 13.73,6.63 13.42,6.5L13.23,5.19C13.21,5.08 13.11,5 13,5H11C10.88,5 10.77,5.09 10.75,5.21L10.56,6.53C10.26,6.65 9.97,6.81 9.7,7L8.46,6.5C8.34,6.46 8.21,6.5 8.15,6.61L7.15,8.34C7.09,8.45 7.11,8.58 7.21,8.66L8.27,9.5C8.23,9.82 8.23,10.16 8.27,10.5L7.21,11.32C7.12,11.4 7.09,11.53 7.15,11.64L8.15,13.37C8.21,13.5 8.34,13.53 8.46,13.5L9.7,13C9.96,13.2 10.24,13.37 10.55,13.5L10.74,14.81C10.77,14.93 10.88,15 11,15H13C13.12,15 13.23,14.91 13.25,14.79L13.44,13.47C13.74,13.34 14,13.18 14.28,13L15.53,13.5C15.65,13.5 15.78,13.5 15.84,13.37L16.84,11.64C16.9,11.53 16.87,11.4 16.77,11.32Z"; +var mdiMessageCogOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16.8 11.3L15.7 10.5V10 9.5L16.8 8.7C16.9 8.6 16.9 8.5 16.9 8.4L15.9 6.7C15.8 6.6 15.7 6.5 15.6 6.6L14.3 7C14 6.8 13.8 6.6 13.4 6.5L13.2 5.2C13.2 5.1 13.1 5 13 5H11C10.9 5 10.8 5.1 10.8 5.2L10.6 6.5C10.3 6.7 10 6.8 9.7 7L8.5 6.5C8.4 6.5 8.3 6.5 8.2 6.6L7.2 8.3C7.1 8.4 7.2 8.5 7.3 8.6L8.4 9.4V10.4L7.3 11.2C7.2 11.3 7.2 11.4 7.2 11.5L8.2 13.2C8.3 13.3 8.4 13.4 8.5 13.3L9.7 13C10 13.2 10.2 13.4 10.5 13.5L10.7 14.8C10.7 14.9 10.8 15 11 15H13C13.1 15 13.2 14.9 13.2 14.8L13.4 13.5C13.7 13.4 14 13.2 14.2 13L15.4 13.5C15.5 13.5 15.6 13.5 15.7 13.4L16.7 11.7C16.9 11.5 16.9 11.4 16.8 11.3M12 11.5C11.2 11.5 10.5 10.8 10.5 10S11.2 8.5 12 8.5 13.5 9.2 13.5 10 12.8 11.5 12 11.5Z"; +var mdiMessageDraw = "M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; +var mdiMessageFlash = "M22 4C22 2.9 21.1 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H15V10H22V4M22.5 16H20.3L22 12H17V18H19V23L22.5 16Z"; +var mdiMessageFlashOutline = "M4 17.2V4H20V10H22V4C22 2.9 21.1 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H15V16H5.2L4 17.2M22.5 16H20.3L22 12H17V18H19V23L22.5 16Z"; +var mdiMessageImage = "M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; +var mdiMessageImageOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M5 14L8.5 9.5L11 12.5L14.5 8L19 14"; +var mdiMessageLock = "M20.5 0A2.5 2.5 0 0 0 18 2.5V3A1 1 0 0 0 17 4V8A1 1 0 0 0 18 9H23A1 1 0 0 0 24 8V4A1 1 0 0 0 23 3V2.5A2.5 2.5 0 0 0 20.5 0M20.5 1A1.5 1.5 0 0 1 22 2.5V3H19V2.5A1.5 1.5 0 0 1 20.5 1M4 2A2 2 0 0 0 2 4V22L6 18H20A2 2 0 0 0 22 16V11H17C15.89 11 15 10.11 15 9V2H4Z"; +var mdiMessageLockOutline = "M23 3V2.5C23 1.1 21.9 0 20.5 0S18 1.1 18 2.5V3C17.5 3 17 3.5 17 4V8C17 8.5 17.5 9 18 9H23C23.5 9 24 8.5 24 8V4C24 3.5 23.5 3 23 3M22 3H19V2.5C19 1.7 19.7 1 20.5 1S22 1.7 22 2.5V3M22 11V16C22 17.1 21.1 18 20 18H6L2 22V4C2 2.9 2.9 2 4 2H15V4H4V17.2L5.2 16H20V11H22Z"; +var mdiMessageMinus = "M20 2C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H6L2 22V4C2 2.89 2.9 2 4 2H20M8 9V11H16V9H8Z"; +var mdiMessageMinusOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M8 9V11H16V9H8Z"; +var mdiMessageOff = "M20.95 17.75L5.2 2H20C21.1 2 22 2.89 22 4V16C22 16.76 21.57 17.41 20.95 17.75M2.39 1.73L1.11 3L2 3.9C2 3.93 2 3.97 2 4V22L6 18H16.11L20.84 22.73L22.11 21.46L2.39 1.73Z"; +var mdiMessageOffOutline = "M7.2 4L5.2 2H20C21.11 2 22 2.9 22 4V16C22 16.76 21.57 17.41 20.95 17.75L19.2 16H20V4H7.2M22.11 21.46L20.84 22.73L16.11 18H6L2 22V4C2 3.97 2 3.93 2 3.9L1.11 3L2.39 1.73L6.1 5.44L16.65 16H16.66L18.66 18H18.65L22.11 21.46M14.11 16L4 5.89V18L6 16H14.11Z"; +var mdiMessageOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z"; +var mdiMessagePlus = "M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z"; +var mdiMessagePlusOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16 9V11H13V14H11V11H8V9H11V6H13V9H16Z"; +var mdiMessageProcessing = "M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; +var mdiMessageProcessingOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M17 11H15V9H17M13 11H11V9H13M9 11H7V9H9"; +var mdiMessageQuestion = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M13 14H11V12H13V14M14.8 9C14.5 9.4 14.1 9.6 13.7 9.8C13.4 10 13.3 10.1 13.2 10.3C13 10.5 13 10.7 13 11H11C11 10.5 11.1 10.2 11.3 9.9C11.5 9.7 11.9 9.4 12.4 9.1C12.7 9 12.9 8.8 13 8.6C13.1 8.4 13.2 8.1 13.2 7.9C13.2 7.6 13.1 7.4 12.9 7.2C12.7 7 12.4 6.9 12.1 6.9C11.8 6.9 11.6 7 11.4 7.1C11.2 7.2 11.1 7.4 11.1 7.7H9.1C9.2 7 9.5 6.4 10 6C10.5 5.6 11.2 5.5 12.1 5.5C13 5.5 13.8 5.7 14.3 6.1C14.8 6.5 15.1 7.1 15.1 7.8C15.2 8.2 15.1 8.6 14.8 9Z"; +var mdiMessageQuestionOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M12.2 5.5C11.3 5.5 10.6 5.7 10.1 6C9.5 6.4 9.2 7 9.3 7.7H11.3C11.3 7.4 11.4 7.2 11.6 7.1C11.8 7 12 6.9 12.3 6.9C12.6 6.9 12.9 7 13.1 7.2C13.3 7.4 13.4 7.6 13.4 7.9C13.4 8.2 13.3 8.4 13.2 8.6C13 8.8 12.8 9 12.6 9.1C12.1 9.4 11.7 9.7 11.5 9.9C11.1 10.2 11 10.5 11 11H13C13 10.7 13.1 10.5 13.1 10.3C13.2 10.1 13.4 10 13.6 9.8C14.1 9.6 14.4 9.3 14.7 8.9C15 8.5 15.1 8.1 15.1 7.7C15.1 7 14.8 6.4 14.3 6C13.9 5.7 13.1 5.5 12.2 5.5M11 12V14H13V12H11Z"; +var mdiMessageReply = "M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z"; +var mdiMessageReplyOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H18L22 22V4C22 2.9 21.1 2 20 2M20 17.2L18.8 16H4V4H20V17.2Z"; +var mdiMessageReplyText = "M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z"; +var mdiMessageReplyTextOutline = "M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"; +var mdiMessageSettings = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M11,24H13V22H11V24M7,24H9V22H7V24M15,24H17V22H15V24Z"; +var mdiMessageSettingsOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M11 24H13V22H11V24M7 24H9V22H7V24M15 24H17V22H15V24"; +var mdiMessageText = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18"; +var mdiMessageTextClock = "M22 12.41V4C22 2.9 21.11 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H9.29C10.15 20.89 12.83 23 16 23C19.86 23 23 19.87 23 16C23 14.69 22.63 13.46 22 12.41M6 6H18V8H6V6M16 9C14.1 9 12.37 9.77 11.11 11H6V9H16M6 12H10.26C9.84 12.6 9.5 13.28 9.3 14H6V12M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15C18.67 11.15 20.85 13.32 20.85 16S18.67 20.85 16 20.85M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82Z"; +var mdiMessageTextClockOutline = "M22 12.41V4C22 2.9 21.11 2 20 2H4C2.9 2 2 2.89 2 4V22L6 18H9.29C10.15 20.89 12.83 23 16 23C19.86 23 23 19.87 23 16C23 14.69 22.63 13.46 22 12.41M5.17 16L4 17.17V4H20V10.26C18.86 9.47 17.5 9 16 9C14.1 9 12.37 9.77 11.11 11H6V13H9.69C9.25 13.91 9 14.93 9 16H5.17M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15C18.67 11.15 20.85 13.32 20.85 16S18.67 20.85 16 20.85M18 9H6V7H18V9M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82Z"; +var mdiMessageTextLock = "M20.5 0A2.5 2.5 0 0 0 18 2.5V3A1 1 0 0 0 17 4V8A1 1 0 0 0 18 9H23A1 1 0 0 0 24 8V4A1 1 0 0 0 23 3V2.5A2.5 2.5 0 0 0 20.5 0M20.5 1A1.5 1.5 0 0 1 22 2.5V3H19V2.5A1.5 1.5 0 0 1 20.5 1M4 2A2 2 0 0 0 2 4V22L6 18H20A2 2 0 0 0 22 16V11H17C15.89 11 15 10.11 15 9V2H4M6 6H13V8H6V6M6 9H13V11H6V9M6 12H14V14H6V12Z"; +var mdiMessageTextLockOutline = "M23 3V2.5C23 1.12 21.88 0 20.5 0S18 1.12 18 2.5V3C17.45 3 17 3.45 17 4V8C17 8.55 17.45 9 18 9H23C23.55 9 24 8.55 24 8V4C24 3.45 23.55 3 23 3M22 3H19V2.5C19 1.67 19.67 1 20.5 1S22 1.67 22 2.5V3M6 11H15V13H6V11M6 7H15V9H6V7M22 11V16C22 17.11 21.11 18 20 18H6L2 22V4C2 2.89 2.9 2 4 2H15V4H4V17.17L5.17 16H20V11H22Z"; +var mdiMessageTextOutline = "M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z"; +var mdiMessageVideo = "M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; +var mdiMeteor = "M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z"; +var mdiMetronome = "M12,1.75L8.57,2.67L4.06,19.53C4.03,19.68 4,19.84 4,20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20C20,19.84 19.97,19.68 19.94,19.53L18.58,14.42L17,16L17.2,17H13.41L16.25,14.16L14.84,12.75L10.59,17H6.8L10.29,4H13.71L15.17,9.43L16.8,7.79L15.43,2.67L12,1.75M11.25,5V14.75L12.75,13.25V5H11.25M19.79,7.8L16.96,10.63L16.25,9.92L14.84,11.34L17.66,14.16L19.08,12.75L18.37,12.04L21.2,9.21L19.79,7.8Z"; +var mdiMetronomeTick = "M12,1.75L8.57,2.67L4.07,19.5C4.06,19.5 4,19.84 4,20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20C20,19.84 19.94,19.5 19.93,19.5L15.43,2.67L12,1.75M10.29,4H13.71L17.2,17H13V12H11V17H6.8L10.29,4M11,5V9H10V11H14V9H13V5H11Z"; +var mdiMicroSd = "M8,2A2,2 0 0,0 6,4V11L4,13V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2H8M9,4H11V8H9V4M12,4H14V8H12V4M15,4H17V8H15V4Z"; +var mdiMicrophone = "M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z"; +var mdiMicrophoneMinus = "M9,2A3,3 0 0,1 12,5V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V5A3,3 0 0,1 9,2M16,11C16,14.5 13.44,17.43 10,17.93V21H8V17.93C4.56,17.43 2,14.5 2,11H4A5,5 0 0,0 9,16A5,5 0 0,0 14,11H16M15,5H23V7H15V5Z"; +var mdiMicrophoneOff = "M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z"; +var mdiMicrophoneOutline = "M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z"; +var mdiMicrophonePlus = "M9,2A3,3 0 0,1 12,5V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V5A3,3 0 0,1 9,2M16,11C16,14.5 13.44,17.43 10,17.93V21H8V17.93C4.56,17.43 2,14.5 2,11H4A5,5 0 0,0 9,16A5,5 0 0,0 14,11H16M15,5H18V2H20V5H23V7H20V10H18V7H15V5Z"; +var mdiMicrophoneSettings = "M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z"; +var mdiMicrophoneVariant = "M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z"; +var mdiMicrophoneVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z"; +var mdiMicroscope = "M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z"; +var mdiMicrosoft = "M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z"; +var mdiMicrosoftAccess = "M14.5 2.63Q15.84 2.63 17.18 2.77L17.85 2.86Q18.3 2.93 18.84 3.04 19.37 3.15 19.93 3.31 20.5 3.47 20.96 3.69 21.42 3.91 21.71 4.19 22 4.47 22 4.81V19.19Q22 19.53 21.71 19.81 21.41 20.09 20.96 20.31 20.5 20.53 19.93 20.69 19.37 20.85 18.83 20.96 18.3 21.07 17.86 21.14 17.41 21.21 17.17 21.23 15.84 21.38 14.5 21.38 13.15 21.38 11.82 21.23 11.59 21.21 11.15 21.14 10.7 21.07 10.16 20.96 9.63 20.85 9.07 20.69 8.5 20.53 8.05 20.31 7.59 20.09 7.29 19.81 7 19.53 7 19.19V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.81Q7 4.47 7.29 4.19 7.59 3.91 8.05 3.69 8.5 3.47 9.07 3.31 9.63 3.15 10.17 3.04 10.7 2.93 11.14 2.86 11.59 2.8 11.83 2.77 13.15 2.63 14.5 2.63M14.5 3.88Q13.87 3.88 13.08 3.92 12.3 3.96 11.5 4.07 10.69 4.18 9.93 4.36 9.17 4.54 8.58 4.81 9.19 5.1 9.95 5.28 10.7 5.46 11.5 5.56 12.29 5.66 13.07 5.71 13.85 5.75 14.5 5.75 15.16 5.75 15.93 5.71 16.71 5.66 17.5 5.56 18.3 5.46 19.06 5.28 19.81 5.1 20.42 4.81 19.83 4.54 19.07 4.36 18.31 4.18 17.5 4.07 16.7 3.96 15.92 3.92 15.14 3.88 14.5 3.88M5.94 13.79H8.06L8.55 15.28H10.22L7.83 8.72H6.2L3.78 15.28H5.44M20.75 19V16Q20.11 16.31 19.31 16.5 18.5 16.68 17.67 16.79 16.83 16.9 16 16.95 15.19 17 14.5 17 13.79 17 13.08 16.96 12.37 16.91 11.67 16.83 11.44 17 11.17 17H8.25V19Q8.53 19.21 9 19.38 9.5 19.56 10.07 19.68 10.65 19.81 11.29 19.9 11.92 20 12.5 20.03 13.12 20.09 13.64 20.11 14.16 20.13 14.5 20.13 14.84 20.12 15.36 20.1 15.88 20.09 16.5 20.03 17.08 20 17.71 19.9 18.35 19.81 18.93 19.68 19.5 19.56 20 19.38 20.47 19.21 20.75 19M20.75 14.63V11Q20.11 11.31 19.31 11.5 18.5 11.68 17.67 11.79 16.83 11.9 16 11.95 15.19 12 14.5 12 13.88 12 13.25 11.97 12.63 11.93 12 11.87V15.62Q12.63 15.69 13.25 15.72 13.88 15.75 14.5 15.75 14.86 15.75 15.38 15.73 15.9 15.71 16.5 15.66 17.08 15.6 17.7 15.5 18.33 15.44 18.9 15.31 19.5 15.18 19.96 15 20.45 14.85 20.75 14.63M20.75 9.63V6Q20.11 6.31 19.31 6.5 18.5 6.68 17.67 6.79 16.83 6.9 16 6.95 15.19 7 14.5 7 13.81 7 13 6.95 12.17 6.9 11.33 6.79 10.5 6.68 9.69 6.5 8.89 6.31 8.25 6V7H11.17Q11.5 7 11.76 7.24 12 7.5 12 7.83V10.62Q12.63 10.69 13.25 10.72 13.88 10.75 14.5 10.75 14.86 10.75 15.38 10.73 15.9 10.71 16.5 10.66 17.08 10.6 17.7 10.5 18.33 10.44 18.9 10.31 19.5 10.18 19.96 10 20.44 9.85 20.75 9.63M6.32 12.5L7 10.5L7.65 12.5Z"; +var mdiMicrosoftAzure = "M13.05,4.24L6.56,18.05L2,18L7.09,9.24L13.05,4.24M13.75,5.33L22,19.76H6.74L16.04,18.1L11.17,12.31L13.75,5.33Z"; +var mdiMicrosoftAzureDevops = "M22 18L17 22L9 19V22L4.81 16.25L17.72 17.3V6.34L22 5.65V18M4.81 16.25V8.96L17.72 6.34L10.6 2V4.84L3.97 6.76L2 9.38V15.07L4.81 16.25Z"; +var mdiMicrosoftBing = "M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3"; +var mdiMicrosoftDynamics365 = "M6,2L17.25,8.5L13.5,11.5L6,8V2M6,9L9.5,11.25L6,22L18,9V15L6,22V9Z"; +var mdiMicrosoftEdge = "M10.86 15.37C10.17 14.6 9.7 13.68 9.55 12.65C9.25 13.11 9 13.61 8.82 14.15C7.9 16.9 9.5 20.33 12.22 21.33C14.56 22.11 17.19 20.72 18.92 19.2C19.18 18.85 21.23 17.04 20.21 16.84C17.19 18.39 13.19 17.95 10.86 15.37M11.46 9.56C12.5 9.55 11.5 9.13 11.07 8.81C10.03 8.24 8.81 7.96 7.63 7.96C3.78 8 .995 10.41 2.3 14.4C3.24 18.28 6.61 21.4 10.59 21.9C8.54 20.61 7.3 18.19 7.3 15.78C7.38 13.25 8.94 10.28 11.46 9.56M2.78 8.24C5.82 6 10.66 6.18 13.28 9C14.3 10.11 15 12 14.07 13.37C12.33 15.25 17.15 15.5 18.18 15.22C21.92 14.5 22.91 10.15 21.13 7.15C19.43 3.75 15.66 1.97 11.96 2C7.9 1.93 4.25 4.5 2.78 8.24Z"; +var mdiMicrosoftEdgeLegacy = "M 2.73675,10.8077C 3.8293,-1.36109 22.5157,-1.36109 21.1971,13.5579L 8.61392,13.5579C 8.61392,17.8527 14.4157,19.209 19.5394,16.3081L 19.5394,20.5276C 13.2478,23.8806 4.9972,21.4318 4.9972,14.0853C 4.9972,8.58476 9.97019,6.8142 9.97019,6.8142C 9.97019,6.8142 8.57624,8.58489 8.53857,10.0542L 15.6967,10.0542C 15.6967,2.93376 5.90137,5.57095 2.73675,10.8077 Z"; +var mdiMicrosoftExcel = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M7 13.06L8.18 15.28H9.97L8 12.06L9.93 8.89H8.22L7.13 10.9L7.09 10.96L7.06 11.03Q6.8 10.5 6.5 9.96 6.25 9.43 5.97 8.89H4.16L6.05 12.08L4 15.28H5.78M13.88 19.5V17H8.25V19.5M13.88 15.75V12.63H12V15.75M13.88 11.38V8.25H12V11.38M13.88 7V4.5H8.25V7M20.75 19.5V17H15.13V19.5M20.75 15.75V12.63H15.13V15.75M20.75 11.38V8.25H15.13V11.38M20.75 7V4.5H15.13V7Z"; +var mdiMicrosoftInternetExplorer = "M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z"; +var mdiMicrosoftOffice = "M19.94 5.59V18.39Q19.94 19.06 19.55 19.59 19.16 20.11 18.5 20.29L12.77 21.94Q12.65 21.97 12.5 22H12.28Q11.95 22 11.68 21.91 11.41 21.82 11.13 21.67L7.38 19.55Q7.17 19.43 7.05 19.24 6.93 19.05 6.93 18.81 6.93 18.45 7.19 18.2 7.44 17.95 7.8 17.95H12.66V6.14L9 7.44Q8.57 7.6 8.3 8 8.03 8.38 8.03 8.85V15.58Q8.03 16 7.82 16.34 7.62 16.68 7.25 16.88L5.53 17.82Q5.29 17.95 5.05 17.95 4.64 17.95 4.35 17.66 4.06 17.37 4.06 16.95V7.47Q4.06 6.95 4.33 6.5 4.61 6 5.06 5.74L11.22 2.24Q11.43 2.12 11.67 2.06 11.91 2 12.15 2 12.32 2 12.46 2.03 12.6 2.05 12.77 2.1L18.5 3.69Q18.83 3.78 19.09 3.96 19.35 4.14 19.54 4.39 19.74 4.65 19.84 4.95 19.94 5.26 19.94 5.59M18.62 18.39V5.59Q18.62 5.36 18.5 5.19 18.35 5 18.13 4.96L15.31 4.18Q15 4.09 14.65 4 14.32 3.89 14 3.81V20.21L18.13 19Q18.35 18.96 18.5 18.79 18.62 18.62 18.62 18.39Z"; +var mdiMicrosoftOnedrive = "M18.21 10.29Q19 10.34 19.7 10.68 20.39 11 20.9 11.57 21.41 12.12 21.71 12.83 22 13.54 22 14.34 22 15.18 21.68 15.92 21.36 16.66 20.8 17.21 20.25 17.76 19.5 18.08 18.78 18.41 17.94 18.41H7Q5.97 18.41 5.06 18 4.15 17.61 3.47 16.94 2.79 16.26 2.4 15.35 2 14.44 2 13.41 2 12.59 2.26 11.83 2.5 11.08 3 10.45 3.44 9.82 4.08 9.35 4.72 8.88 5.5 8.63 5.87 8.5 6.21 8.5 6.56 8.43 6.93 8.41H6.94Q7.37 7.75 7.95 7.23 8.5 6.71 9.2 6.34 9.87 6 10.62 5.78 11.37 5.59 12.16 5.59 13.22 5.59 14.2 5.94 15.18 6.29 16 6.91 16.8 7.53 17.37 8.39 17.95 9.26 18.21 10.29M12.16 6.84Q11.05 6.84 10.06 7.3 9.06 7.75 8.36 8.6 8.73 8.7 9.07 8.85 9.4 9 9.73 9.2L13.71 11.58L16 10.62Q16.21 10.53 16.44 10.45 16.67 10.38 16.92 10.33 16.68 9.55 16.21 8.91 15.74 8.27 15.11 7.81 14.5 7.35 13.73 7.1 13 6.84 12.16 6.84M4 15.66L12.27 12.18L9.08 10.26Q8.59 9.97 8.06 9.81 7.5 9.66 6.95 9.66 6.19 9.66 5.5 9.96 4.84 10.26 4.34 10.77 3.84 11.29 3.54 11.97 3.25 12.65 3.25 13.41 3.25 14 3.45 14.59 3.64 15.19 4 15.66M17.94 17.16Q18.41 17.16 18.84 17 19.27 16.86 19.64 16.58L13.61 13L5.03 16.59Q5.47 16.86 5.97 17 6.47 17.16 7 17.16M20.45 15.61Q20.75 15 20.75 14.34 20.75 13.7 20.5 13.17 20.26 12.65 19.85 12.28 19.43 11.91 18.88 11.71 18.32 11.5 17.7 11.5 17.35 11.5 17 11.6 16.66 11.68 16.33 11.81 16 11.93 15.67 12.08 15.35 12.23 15.04 12.37Z"; +var mdiMicrosoftOnenote = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M5.8 11.17L8.16 15.27H9.65V8.73H8.2V12.92L5.93 8.73H4.35V15.27H5.8M20.75 19.5V17H18.25V19.5M20.75 15.75V13.25H18.25V15.75M20.75 12V9.5H18.25V12M20.75 8.25V4.5H8.25V7H11.17Q11.5 7 11.76 7.24 12 7.5 12 7.83V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.25V19.5H17V8.25Z"; +var mdiMicrosoftOutlook = "M8.56 12.03Q8.56 12.41 8.5 12.76 8.39 13.1 8.2 13.38 8 13.65 7.71 13.81 7.41 13.97 7 13.97 6.58 13.97 6.29 13.8 6 13.63 5.81 13.35 5.62 13.07 5.54 12.72 5.45 12.37 5.45 12 5.45 11.64 5.54 11.28 5.62 10.93 5.81 10.65 6 10.37 6.31 10.2 6.61 10.03 7.03 10.03 7.46 10.03 7.75 10.2 8.05 10.38 8.23 10.66 8.41 10.95 8.5 11.3 8.56 11.66 8.56 12.03M22 12V19.81Q22 20.2 21.73 20.5 21.45 20.75 21.06 20.75H7.94Q7.55 20.75 7.27 20.5 7 20.2 7 19.81V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H8.25V4.13Q8.25 3.76 8.5 3.5 8.76 3.25 9.13 3.25H19.87Q20.24 3.25 20.5 3.5 20.75 3.76 20.75 4.13V11.04L21.79 11.64H21.8Q21.88 11.7 21.94 11.8 22 11.89 22 12M17 5.13V7.63H19.5V5.13M17 8.88V11.38H19.5V8.88M17 12.63V14.15L19.54 12.63M12.63 5.13V7.63H15.75V5.13M12.63 8.88V11.38H15.75V8.88M12.63 12.63V14.32L14.64 15.56L15.75 14.9V12.63M9.5 5.13V7H11.27Q11.33 7 11.38 7.04V5.12M7 15.32Q7.73 15.32 8.32 15.06 8.9 14.8 9.31 14.35 9.71 13.9 9.91 13.28 10.12 12.66 10.13 11.94 10.13 11.25 9.92 10.65 9.72 10.06 9.32 9.62 8.93 9.18 8.37 8.93 7.8 8.68 7.08 8.68 6.31 8.68 5.71 8.93 5.12 9.18 4.71 9.63 4.3 10.09 4.09 10.71 3.88 11.34 3.88 12.08 3.88 12.78 4.09 13.38 4.31 13.97 4.71 14.4 5.11 14.83 5.68 15.08 6.26 15.32 7 15.32M8.25 19.5H18.57L12 15.4V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.25M20.75 19.39V13.36L15.83 16.31Z"; +var mdiMicrosoftPowerpoint = "M13.25 3.25Q14.46 3.25 15.58 3.56 16.7 3.88 17.67 4.45 18.64 5 19.44 5.81 20.23 6.61 20.8 7.58 21.38 8.55 21.69 9.67 22 10.79 22 12 22 13.21 21.69 14.33 21.38 15.45 20.8 16.42 20.23 17.39 19.44 18.19 18.64 19 17.67 19.55 16.7 20.13 15.58 20.44 14.46 20.75 13.25 20.75 12.18 20.75 11.15 20.5 10.12 20.24 9.2 19.76 8.28 19.27 7.5 18.58 6.69 17.88 6.07 17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.25 2.5 7 2.83 7H6.07Q6.69 6.12 7.5 5.42 8.28 4.72 9.2 4.24 10.13 3.76 11.15 3.5 12.18 3.25 13.25 3.25M13.88 4.53V11.37H20.72Q20.6 10 20.03 8.81 19.46 7.62 18.55 6.7 17.64 5.79 16.43 5.22 15.23 4.65 13.88 4.53M9.5 10.84Q9.5 10.27 9.3 9.87 9.11 9.46 8.78 9.21 8.45 8.95 8 8.84 7.55 8.72 7 8.72H4.37V15.27H5.91V13H6.94Q7.42 13 7.87 12.84 8.33 12.7 8.69 12.43 9.05 12.17 9.27 11.76 9.5 11.36 9.5 10.84M13.25 19.5Q14.23 19.5 15.14 19.26 16.04 19 16.85 18.58 17.66 18.13 18.33 17.5 19 16.89 19.5 16.13 20 15.36 20.33 14.47 20.64 13.58 20.72 12.62H12.64V4.53Q11.19 4.65 9.91 5.29 8.63 5.93 7.67 7H11.17Q11.5 7 11.76 7.25 12 7.5 12 7.83V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H7.67Q8.2 17.6 8.84 18.06 9.5 18.5 10.19 18.84 10.91 19.17 11.68 19.33 12.45 19.5 13.25 19.5M6.85 10Q7.32 10 7.61 10.19 7.89 10.38 7.89 10.89 7.89 11.11 7.79 11.25 7.69 11.39 7.53 11.5 7.37 11.57 7.18 11.6 7 11.64 6.8 11.64H5.91V10H6.85Z"; +var mdiMicrosoftSharepoint = "M22 13.25Q22 14.29 21.6 15.2 21.21 16.1 20.53 16.78 19.85 17.46 18.94 17.86 18.03 18.25 17 18.25 16.36 18.25 15.73 18.09 15.64 18.92 15.27 19.63 14.89 20.35 14.3 20.88 13.72 21.41 12.97 21.7 12.21 22 11.38 22 10.47 22 9.67 21.65 8.88 21.31 8.28 20.72 7.69 20.13 7.35 19.33 7 18.53 7 17.63V17.31Q7.03 17.16 7.05 17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H5.78Q5.9 5.94 6.39 5 6.87 4.11 7.63 3.44 8.38 2.76 9.34 2.38 10.3 2 11.38 2 12.54 2 13.56 2.44 14.59 2.89 15.35 3.65 16.11 4.41 16.56 5.44 17 6.46 17 7.63V7.94Q17 8.09 16.96 8.25 18 8.25 18.91 8.64 19.83 9.03 20.5 9.71 21.21 10.38 21.6 11.29 22 12.21 22 13.25M11.37 3.25Q10.56 3.25 9.83 3.54 9.09 3.82 8.5 4.32 7.94 4.82 7.55 5.5 7.17 6.2 7.05 7H11.17Q11.5 7 11.76 7.25 12 7.5 12 7.83V11.95L12.18 11.92Q12.35 11.3 12.68 10.74 13 10.17 13.47 9.72 13.92 9.27 14.5 8.93 15.04 8.6 15.67 8.43 15.75 8 15.75 7.63 15.75 6.72 15.4 5.92 15.06 5.13 14.46 4.54 13.87 3.95 13.08 3.6 12.28 3.25 11.37 3.25M7.1 15.25Q7.55 15.25 8 15.16 8.42 15.07 8.76 14.85 9.1 14.64 9.31 14.29 9.5 13.93 9.5 13.41 9.5 12.88 9.3 12.53 9.08 12.18 8.75 11.94 8.42 11.71 8.04 11.56L7.32 11.27Q7 11.14 6.77 11 6.55 10.85 6.55 10.62 6.55 10.46 6.67 10.35 6.79 10.25 6.95 10.2 7.11 10.13 7.28 10.11 7.46 10.1 7.58 10.1 8.07 10.1 8.46 10.22 8.84 10.35 9.25 10.6V9.12Q9 9.05 8.81 9 8.61 8.95 8.42 8.92 8.22 8.89 8 8.87 7.8 8.86 7.55 8.86 7.12 8.86 6.67 8.95 6.22 9.05 5.85 9.27 5.5 9.5 5.26 9.83 5.03 10.18 5.03 10.69 5.03 11.19 5.25 11.5 5.47 11.85 5.8 12.09 6.13 12.32 6.5 12.5L7.22 12.79Q7.56 12.93 7.78 13.08 8 13.24 8 13.46 8 13.65 7.89 13.76 7.79 13.87 7.63 13.92 7.5 14 7.31 14H7Q6.41 14 5.96 13.82 5.5 13.62 5.04 13.3V14.86Q6.03 15.25 7.1 15.25M11.37 20.75Q12 20.75 12.58 20.5 13.15 20.26 13.58 19.84 14 19.41 14.25 18.84 14.5 18.27 14.5 17.63 14.5 17.07 14.31 16.56 14.13 16.05 13.8 15.65 13.46 15.24 13 14.96 12.55 14.68 12 14.56V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.31Q8.25 17.31 8.25 17.63 8.25 18.27 8.5 18.84 8.74 19.41 9.16 19.84 9.59 20.26 10.16 20.5 10.73 20.75 11.37 20.75M17 17Q17.77 17 18.45 16.71 19.14 16.42 19.65 15.9 20.16 15.39 20.46 14.71 20.75 14.03 20.75 13.25 20.75 12.5 20.46 11.8 20.16 11.11 19.65 10.6 19.14 10.09 18.45 9.79 17.77 9.5 17 9.5 16.23 9.5 15.55 9.8 14.87 10.1 14.36 10.61 13.85 11.12 13.55 11.8 13.25 12.5 13.25 13.25V13.46L13.27 13.68Q13.73 13.9 14.12 14.22 14.5 14.54 14.82 14.93 15.12 15.33 15.34 15.79 15.55 16.25 15.66 16.74 16.32 17 17 17Z"; +var mdiMicrosoftTeams = "M19.19 8.77Q18.73 8.77 18.33 8.6 17.94 8.43 17.64 8.13 17.34 7.83 17.17 7.44 17 7.04 17 6.58 17 6.13 17.17 5.73 17.34 5.33 17.64 5.04 17.94 4.74 18.33 4.57 18.73 4.39 19.19 4.4 19.64 4.39 20.04 4.57 20.44 4.74 20.74 5.04 21.03 5.33 21.21 5.73 21.38 6.13 21.38 6.58 21.38 7.04 21.21 7.44 21.04 7.83 20.74 8.13 20.44 8.43 20.04 8.6 19.64 8.77 19.19 8.77M19.19 5.65Q18.8 5.65 18.5 5.92 18.25 6.19 18.25 6.58 18.25 6.97 18.5 7.25 18.8 7.5 19.19 7.5 19.58 7.5 19.85 7.25 20.13 7 20.13 6.58 20.13 6.19 19.85 5.92 19.58 5.65 19.19 5.65M22 10.33V15Q22 15.63 21.76 16.2 21.5 16.77 21.09 17.19 20.66 17.62 20.09 17.86 19.5 18.11 18.88 18.11 18.5 18.11 18.12 18 17.73 17.93 17.41 17.75 17.17 18.54 16.7 19.19 16.23 19.84 15.6 20.3 14.97 20.76 14.21 21 13.45 21.27 12.63 21.27 11.67 21.27 10.82 20.94 10 20.61 9.32 20 8.66 19.43 8.23 18.64 7.79 17.84 7.66 16.9H2.83Q2.5 16.9 2.24 16.65 2 16.41 2 16.07V7.73Q2 7.39 2.24 7.14 2.5 6.9 2.83 6.9H10Q9.71 6.3 9.71 5.65 9.71 5.04 9.94 4.5 10.16 4 10.56 3.58 10.96 3.19 11.5 2.96 12 2.73 12.62 2.73 13.23 2.73 13.76 2.96 14.29 3.19 14.69 3.58 15.09 4 15.31 4.5 15.54 5.04 15.54 5.65 15.54 6.25 15.31 6.79 15.09 7.32 14.69 7.71 14.29 8.11 13.76 8.34 13.23 8.57 12.62 8.57 12.47 8.57 12.31 8.55 12.16 8.53 12 8.5V9.4H21.06Q21.45 9.4 21.73 9.67 22 9.94 22 10.33M12.63 4Q12.28 4 12 4.11 11.67 4.24 11.44 4.47 11.22 4.7 11.09 5 10.96 5.31 10.96 5.65 10.96 6 11.09 6.3 11.22 6.6 11.44 6.83 11.67 7.05 12 7.19 12.28 7.32 12.63 7.32 12.97 7.32 13.27 7.19 13.57 7.05 13.8 6.83 14.03 6.6 14.16 6.3 14.3 6 14.3 5.65 14.3 5.31 14.16 5 14.03 4.7 13.8 4.47 13.57 4.24 13.27 4.11 12.97 4 12.63 4M7.78 10.18H9.66V8.62H4.34V10.18H6.22V15.18H7.78M16.38 16.27V10.65H12V16.07Q12 16.41 11.76 16.65 11.5 16.9 11.17 16.9H8.92Q9.05 17.57 9.39 18.15 9.73 18.72 10.21 19.14 10.69 19.55 11.31 19.79 11.92 20 12.63 20 13.4 20 14.08 19.73 14.76 19.43 15.28 18.92 15.79 18.41 16.08 17.73 16.38 17.05 16.38 16.27M20.75 15V10.65H17.63V16.36Q17.88 16.61 18.2 16.74 18.5 16.86 18.88 16.86 19.27 16.86 19.61 16.71 19.95 16.56 20.2 16.31 20.46 16.06 20.6 15.71 20.75 15.37 20.75 15Z"; +var mdiMicrosoftVisualStudio = "M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z"; +var mdiMicrosoftVisualStudioCode = "M17,16.47V7.39L11,11.93M2.22,9.19C1.92,8.87 1.91,8.37 2.2,8.04L3.4,6.93C3.6,6.75 4.09,6.67 4.45,6.93L7.87,9.54L15.8,2.29C16.12,1.97 16.67,1.84 17.3,2.17L21.3,4.08C21.66,4.29 22,4.62 22,5.23V18.73C22,19.13 21.71,19.56 21.4,19.73L17,21.83C16.68,21.96 16.08,21.84 15.87,21.63L7.85,14.33L4.45,16.93C4.07,17.19 3.6,17.12 3.4,16.93L2.2,15.83C1.88,15.5 1.92,14.96 2.25,14.63L5.25,11.93"; +var mdiMicrosoftWindows = "M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z"; +var mdiMicrosoftWindowsClassic = "M2.67,5.3V5.91L1.96,6.21V5.6L2.67,5.3M2.67,11.24V11.86L1.96,12.15V11.56L2.67,11.24M2.67,17.27V17.89L1.96,18.18V17.59L2.67,17.27M2.6,7.29V7.84L2.03,8.1V7.56L2.6,7.29M2.6,9.28V9.82L2.03,10.08V9.54L2.6,9.28M2.6,13.31V13.84L2.03,14.1V13.56L2.6,13.31M2.6,15.33V15.87L2.03,16.13V15.6L2.6,15.33M4.5,5.64V6.36L3.5,6.73V6L4.5,5.64M4.5,11.66V12.37L3.5,12.74V12.03L4.5,11.66M4.5,17.7V18.41L3.5,18.81V18.1L4.5,17.7M4.43,7.72V8.38L3.64,8.68V8L4.43,7.72M4.43,9.73V10.37L3.65,10.67V10L4.43,9.73M4.43,13.74V14.38L3.65,14.69V14.03L4.43,13.74M4.43,15.76V16.41L3.65,16.72V16.06L4.43,15.76M6.31,6.09V6.94L5.05,7.43V6.59L6.31,6.09M6.31,12.11V12.96L5.05,13.45V12.61L6.31,12.11M6.31,18.08V18.93L5.05,19.43V18.58L6.31,18.08M6.25,8.18V8.94L5.19,9.34V8.61L6.25,8.18M6.25,10.18V10.93L5.19,11.35V10.6L6.25,10.18M6.25,14.19V14.94L5.19,15.37V14.62L6.25,14.19M6.25,16.14V16.9L5.19,17.32V16.57L6.25,16.14M8.29,6.04V7.16L6.72,7.78V6.67L8.29,6.04M8.29,12.06V13.19L6.72,13.8V12.68L8.29,12.06M8.29,18.03V19.15L6.72,19.77V18.66L8.29,18.03M8.2,8.13V9.16L6.89,9.69V8.66L8.2,8.13M8.2,10.13V11.15L6.89,11.68V10.65L8.2,10.13M8.2,14.15V15.18L6.89,15.7V14.67L8.2,14.15M8.2,16.1V17.12L6.89,17.64V16.63L8.2,16.1M10.34,5.85V7.32L8.61,8V6.56L10.34,5.85M10.34,11.87V13.33L8.61,14.03V12.56L10.34,11.87M10.34,17.84V19.3L8.61,20V18.54L10.34,17.84M10.26,8.05V9.28L8.78,9.87V8.64L10.26,8.05M10.26,9.97V11.2L8.78,11.78V10.56L10.26,9.97M10.26,14.06V15.31L8.78,15.88V14.65L10.26,14.06M10.26,16V17.25L8.78,17.84V16.6L10.26,16M12.45,5.12V7.12L10.59,7.89V6C11.23,5.65 11.85,5.35 12.45,5.12M12.45,7.33V9.06L10.59,9.84V8.1L12.45,7.33M12.45,9.28V11.04L10.59,11.82V10.06L12.45,9.28M12.45,11.25V13L10.59,13.77V12L12.45,11.25M12.45,13.21V15L10.59,15.78V14L12.45,13.21M12.45,15.21V16.96L10.59,17.76V16L12.45,15.21M12.45,17.17V19.04C11.72,19.32 11.1,19.59 10.59,19.84V17.96L12.45,17.17M22.04,5.18V19.23C20.85,18.44 19.37,18.05 17.59,18.05C16.12,18.05 14.47,18.35 12.65,18.96V17.06C13.62,16.69 14.68,16.42 15.84,16.26V11.69C14.86,11.81 13.8,12.15 12.65,12.71V11.4C13.64,10.94 14.71,10.63 15.84,10.46V6C14.82,6.18 13.76,6.53 12.65,7V5.03C14.27,4.34 15.86,4 17.41,4C19.09,4 20.63,4.39 22.04,5.18M20.15,6.41C19.39,6 18.5,5.82 17.42,5.82C17.29,5.82 17.17,5.83 17.05,5.84V10.38L17.46,10.37C18.37,10.37 19.27,10.5 20.15,10.8V6.41M20.15,12.1C19.34,11.74 18.43,11.56 17.44,11.56C17.31,11.56 17.18,11.57 17.05,11.58V16.16H17.46C18.45,16.16 19.35,16.28 20.15,16.53V12.1H20.15Z"; +var mdiMicrosoftWord = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M7.03 11.34L8.23 15.28H9.6L10.91 8.72H9.53L8.75 12.6L7.64 8.85H6.5L5.31 12.62L4.53 8.72H3.09L4.4 15.28H5.77M20.75 19.5V17H8.25V19.5M20.75 15.75V12.63H12V15.75M20.75 11.38V8.25H12V11.38M20.75 7V4.5H8.25V7Z"; +var mdiMicrosoftXbox = "M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z"; +var mdiMicrosoftXboxController = "M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z"; +var mdiMicrosoftXboxControllerBatteryAlert = "M21,19V7H15V19H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8M17,9H19V14H17V9M17,15H19V17H17V15Z"; +var mdiMicrosoftXboxControllerBatteryCharging = "M20,5H21.67C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5M21,7H15V19H21V7M15.5,14L18.5,7.5V12H20.5L17.5,18.5V14H15.5M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; +var mdiMicrosoftXboxControllerBatteryEmpty = "M21,19V7H15V19H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; +var mdiMicrosoftXboxControllerBatteryFull = "M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; +var mdiMicrosoftXboxControllerBatteryLow = "M21,16V7H15V16H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; +var mdiMicrosoftXboxControllerBatteryMedium = "M21,12V7H15V12H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; +var mdiMicrosoftXboxControllerBatteryUnknown = "M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8M18.19,8C17.32,8 16.62,8.2 16.08,8.59C15.56,9 15.3,9.57 15.31,10.36L15.32,10.39H17.25C17.26,10.09 17.35,9.86 17.53,9.7C17.71,9.55 17.93,9.47 18.19,9.47C18.5,9.47 18.76,9.57 18.94,9.75C19.12,9.94 19.2,10.2 19.2,10.5C19.2,10.82 19.13,11.09 18.97,11.32C18.83,11.55 18.62,11.75 18.36,11.91C17.85,12.25 17.5,12.55 17.31,12.82C17.11,13.08 17,13.5 17,14H19C19,13.69 19.04,13.44 19.13,13.26C19.22,13.08 19.39,12.9 19.64,12.74C20.09,12.5 20.46,12.21 20.75,11.81C21.04,11.41 21.19,11 21.19,10.5C21.19,9.74 20.92,9.13 20.38,8.68C19.85,8.23 19.12,8 18.19,8M17,15V17H19V15H17Z"; +var mdiMicrosoftXboxControllerMenu = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M6,7H18V9H6V7M6,11H18V13H6V11M6,15H18V17H6V15Z"; +var mdiMicrosoftXboxControllerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z"; +var mdiMicrosoftXboxControllerView = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M6,7H15V9H8V14H6V7M9,10H18V17H9V10M11,12V15H16V12H11Z"; +var mdiMicrosoftYammer = "M22 12Q22 12.43 21.97 12.94 21.95 13.45 21.89 13.97 21.84 14.5 21.76 15 21.68 15.5 21.56 15.89 21.5 16.07 21.38 16.19 21.24 16.3 21.04 16.3 20.95 16.3 20.66 16.23 20.37 16.16 20.03 16.07L19.39 15.88Q19.09 15.79 18.96 15.76 18.75 16.54 18.41 17.38 18.08 18.21 17.65 19 17.22 19.8 16.7 20.5 16.18 21.25 15.61 21.82L15.43 21.95Q15.33 22 15.21 22 15 22 14.84 21.84L10.1 17.11H2.85Q2.5 17.11 2.25 16.86 2 16.61 2 16.26V7.74Q2 7.39 2.25 7.14 2.5 6.89 2.85 6.89H10.1L14.83 2.16Q15 2 15.21 2 15.33 2 15.42 2.05 15.5 2.09 15.59 2.18 15.85 2.44 16.08 2.71 16.3 3 16.5 3.28 18.23 5.55 18.96 8.28 19.14 8.23 19.44 8.14 19.74 8.05 20.06 7.96 20.37 7.87 20.65 7.8 20.92 7.74 21.04 7.74 21.24 7.74 21.38 7.85 21.5 7.97 21.56 8.15 21.68 8.56 21.77 9.05 21.85 9.55 21.91 10.06 21.96 10.57 22 11.08V12M9.82 9.37Q9.82 9.06 9.62 8.85 9.4 8.64 9.1 8.64 8.9 8.64 8.72 8.74 8.55 8.85 8.45 9.03L7.15 11.47L5.89 9.03Q5.77 8.8 5.57 8.72 5.37 8.64 5.13 8.64 4.82 8.64 4.61 8.85 4.4 9.06 4.4 9.36 4.4 9.57 4.5 9.73L6.25 12.87Q6.27 12.91 6.29 12.97 6.3 13.03 6.3 13.08V14.63Q6.3 15 6.56 15.19 6.81 15.36 7.15 15.36 7.39 15.36 7.54 15.27 7.68 15.18 7.76 15.03 7.84 14.88 7.87 14.69 7.9 14.5 7.9 14.28 7.9 14 7.88 13.76 7.86 13.5 7.86 13.28 7.86 13.14 7.87 13.03 7.88 12.93 7.93 12.85L9.73 9.73Q9.83 9.55 9.83 9.37M15.17 3.63L11.8 7Q12 7.12 12.1 7.31 12.22 7.5 12.22 7.74V10.07L17.72 8.61Q17.34 7.19 16.71 6 16.08 4.77 15.17 3.63M17.73 15.42L12.22 13.95V16.26Q12.22 16.5 12.1 16.69 12 16.88 11.8 17L15.18 20.37Q16.07 19.29 16.72 18.04 17.37 16.79 17.73 15.43V15.42M20.47 14.84Q20.6 14.14 20.66 13.43 20.72 12.73 20.72 12 20.72 11.29 20.66 10.59 20.6 9.89 20.47 9.19 18.4 9.74 16.35 10.29 14.3 10.83 12.22 11.39 12.21 11.55 12.21 11.7V12.32L12.22 12.63Q14.3 13.19 16.35 13.73 18.4 14.27 20.47 14.84Z"; +var mdiMicrowave = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H16V17H4V7M19,7A1,1 0 0,1 20,8A1,1 0 0,1 19,9A1,1 0 0,1 18,8A1,1 0 0,1 19,7M13,9V15H15V9H13M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11Z"; +var mdiMicrowaveOff = "M22.11 21.46L2.39 1.73L1.11 3L3.26 5.15C2.5 5.44 2 6.16 2 7V17C2 18.11 2.9 19 4 19H17.11L20.84 22.73L22.11 21.46M4 17V7H5.11L15.11 17H4M16 7V12.8L21.5 18.31C21.81 17.95 22 17.5 22 17V7C22 5.9 21.11 5 20 5H8.2L10.2 7H16M19 7C19.55 7 20 7.45 20 8S19.55 9 19 9 18 8.55 18 8 18.45 7 19 7M19 11C19.55 11 20 11.45 20 12S19.55 13 19 13 18 12.55 18 12 18.45 11 19 11M13 9.8V9H15V11.8L13 9.8Z"; +var mdiMiddleware = "M23 12L19 8V11H14.82C14.4 9.84 13.3 9 12 9S9.6 9.84 9.18 11H5L2 8V16L5 13H9.18C9.6 14.16 10.7 15 12 15S14.4 14.16 14.82 13H19V16L23 12Z"; +var mdiMiddlewareOutline = "M23 12L19 8V11H15.86C15.41 9.28 13.86 8 12 8S8.59 9.28 8.14 11H5L2 8V16L5 13H8.14C8.59 14.72 10.14 16 12 16S15.41 14.72 15.86 13H19V16L23 12M12 14C10.9 14 10 13.1 10 12C10 10.9 10.9 10 12 10S14 10.9 14 12C14 13.1 13.1 14 12 14Z"; +var mdiMidi = "M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z"; +var mdiMidiPort = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M20.18,12C20.18,8.18 17.55,4.96 14,4.07V6H10V4.07C6.45,4.96 3.82,8.18 3.82,12A8.18,8.18 0 0,0 12,20.18A8.18,8.18 0 0,0 20.18,12M7,10.64A1.36,1.36 0 0,1 8.36,12A1.36,1.36 0 0,1 7,13.36C6.25,13.36 5.64,12.75 5.64,12C5.64,11.25 6.25,10.64 7,10.64M17,10.64A1.36,1.36 0 0,1 18.36,12A1.36,1.36 0 0,1 17,13.36A1.36,1.36 0 0,1 15.64,12A1.36,1.36 0 0,1 17,10.64M8.36,14.27A1.37,1.37 0 0,1 9.73,15.64C9.73,16.39 9.12,17 8.36,17A1.36,1.36 0 0,1 7,15.64C7,14.88 7.61,14.27 8.36,14.27M15.64,14.27C16.39,14.27 17,14.88 17,15.64A1.36,1.36 0 0,1 15.64,17C14.88,17 14.27,16.39 14.27,15.64A1.37,1.37 0 0,1 15.64,14.27M12,15.64A1.36,1.36 0 0,1 13.36,17A1.36,1.36 0 0,1 12,18.36A1.36,1.36 0 0,1 10.64,17A1.36,1.36 0 0,1 12,15.64Z"; +var mdiMine = "M23,13V11H19.93C19.75,9.58 19.19,8.23 18.31,7.1L20.5,4.93L19.07,3.5L16.9,5.69C15.77,4.81 14.42,4.25 13,4.07V1H11V4.07C9.58,4.25 8.23,4.81 7.1,5.69L4.93,3.5L3.5,4.93L5.69,7.1C4.81,8.23 4.25,9.58 4.07,11H1V13H4.07C4.25,14.42 4.81,15.77 5.69,16.9L3.5,19.07L4.93,20.5L7.1,18.31C8.23,19.19 9.58,19.75 11,19.93V23H13V19.93C14.42,19.75 15.77,19.19 16.9,18.31L19.07,20.5L20.5,19.07L18.31,16.9C19.19,15.77 19.75,14.42 19.93,13H23M12,8A4,4 0 0,0 8,12H6A6,6 0 0,1 12,6V8Z"; +var mdiMinecraft = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z"; +var mdiMiniSd = "M6,4A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12L18,10V6A2,2 0 0,0 16,4H6M7,6H9V10H7V6M10,6H12V10H10V6M13,6H15V10H13V6Z"; +var mdiMinidisc = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M12,5C15.09,5 17.82,7.04 18.7,10H16A1,1 0 0,0 15,11V13A1,1 0 0,0 16,14H18.71C17.82,16.97 15.09,19 12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiMinus = "M19,13H5V11H19V13Z"; +var mdiMinusBox = "M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiMinusBoxMultiple = "M19 11H9V9H19M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; +var mdiMinusBoxMultipleOutline = "M18 11H10V9H18M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; +var mdiMinusBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z"; +var mdiMinusCircle = "M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiMinusCircleMultiple = "M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M20 13H10V11H20V13Z"; +var mdiMinusCircleMultipleOutline = "M11 11V13H19V11H11M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M15 19C11.14 19 8 15.86 8 12S11.14 5 15 5 22 8.14 22 12 18.86 19 15 19Z"; +var mdiMinusCircleOff = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 17.5 6.5 22 12 22C14.3 22 16.4 21.2 18 19.9L20.8 22.7L22.1 21.5M7 13V11H9.1L11.1 13H7M14.2 11L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.9 21.4 15.7 20.5 17.3L16.2 13H17V11H14.2Z"; +var mdiMinusCircleOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 17.5 6.5 22 12 22C14.3 22 16.4 21.2 18 19.9L20.8 22.7L22.1 21.5M12 20C7.6 20 4 16.4 4 12C4 10.3 4.6 8.7 5.5 7.4L9.1 11H7V13H11.1L16.6 18.5C15.3 19.4 13.7 20 12 20M8.2 5L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.9 21.4 15.7 20.5 17.3L19 15.8C19.6 14.7 20 13.4 20 12C20 7.6 16.4 4 12 4C10.6 4 9.3 4.4 8.2 5M16.2 13L14.2 11H17V13H16.2Z"; +var mdiMinusCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7"; +var mdiMinusNetwork = "M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; +var mdiMinusNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15,11V9H9V11H15"; +var mdiMinusThick = "M20 14H4V10H20V14Z"; +var mdiMirror = "M12 1C16.69 1 20.5 5.93 20.5 12C20.5 18.08 16.69 23 12 23C7.31 23 3.5 18.08 3.5 12C3.5 5.93 7.31 1 12 1M12 3C8.41 3 5.5 7.03 5.5 12C5.5 16.97 8.41 21 12 21C15.59 21 18.5 16.97 18.5 12C18.5 7.03 15.59 3 12 3M8.29 10.28L11.53 7.03L12.59 8.09L9.35 11.34L8.29 10.28M8.7 14.61L14.36 8.95L15.42 10L9.76 15.67L8.7 14.61Z"; +var mdiMixedMartialArts = "M15,10V7H7V10H15M18,7C18.28,7 18.5,7.09 18.7,7.29C18.89,7.5 19,7.73 19,8V10.78C19,10.97 18.97,11.11 18.94,11.2L18.14,15.19C18,15.72 17.7,16 17.2,16H6.8C6.27,16 5.95,15.72 5.86,15.19L5.06,11.2C5.03,11.11 5,10.97 5,10.78V5C5,4.5 5.21,4 5.6,3.61C6,3.2 6.45,3 7,3H15C15.53,3 16,3.2 16.41,3.61C16.81,4 17,4.5 17,5V8C17,7.73 17.11,7.5 17.3,7.29C17.5,7.09 17.72,7 18,7M7,20V17H17V20C17,20.3 16.91,20.53 16.71,20.72C16.5,20.91 16.27,21 16,21H8C7.73,21 7.5,20.91 7.29,20.72C7.09,20.53 7,20.3 7,20Z"; +var mdiMixedReality = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3M8.25,15H9.75L10.75,11.57V15H12.25V9H10L9,12.43L8,9H5.75V15H7.25V11.57L8.25,15M13.5,9V15H15V13H16.15L17,15H18.5L17.6,12.9C18.1,12.65 18.5,12.1 18.5,11.5V10.5C18.5,9.65 17.85,9 17,9H13.5M15,10.5H17V11.5H15V10.5Z"; +var mdiMolecule = "M7.27,10L9,7H14.42L15.58,5L15.5,4.5A1.5,1.5 0 0,1 17,3A1.5,1.5 0 0,1 18.5,4.5C18.5,5.21 18,5.81 17.33,5.96L16.37,7.63L17.73,10L18.59,8.5L18.5,8A1.5,1.5 0 0,1 20,6.5A1.5,1.5 0 0,1 21.5,8C21.5,8.71 21,9.3 20.35,9.46L18.89,12L20.62,15C21.39,15.07 22,15.71 22,16.5A1.5,1.5 0 0,1 20.5,18A1.5,1.5 0 0,1 19,16.5V16.24L17.73,14L16.37,16.37L17.33,18.04C18,18.19 18.5,18.79 18.5,19.5A1.5,1.5 0 0,1 17,21A1.5,1.5 0 0,1 15.5,19.5L15.58,19L14.42,17H10.58L9.42,19L9.5,19.5A1.5,1.5 0 0,1 8,21A1.5,1.5 0 0,1 6.5,19.5C6.5,18.79 7,18.19 7.67,18.04L8.63,16.37L4.38,9C3.61,8.93 3,8.29 3,7.5A1.5,1.5 0 0,1 4.5,6A1.5,1.5 0 0,1 6,7.5C6,7.59 6,7.68 6,7.76L7.27,10M10.15,9L8.42,12L10.15,15H14.85L16.58,12L14.85,9H10.15Z"; +var mdiMoleculeCo = "M8 7C6.9 7 6 7.9 6 9V15C6 16.11 6.9 17 8 17H11V15H8V9H11V7H8M14 7C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7H14M14 9H16V15H14V9"; +var mdiMoleculeCo2 = "M5,7A2,2 0 0,0 3,9V15A2,2 0 0,0 5,17H8V15H5V9H8V7H5M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M16,10.5V12H19V13.5H17.5A1.5,1.5 0 0,0 16,15V18H20.5V16.5H17.5V15H19A1.5,1.5 0 0,0 20.5,13.5V12A1.5,1.5 0 0,0 19,10.5H16Z"; +var mdiMonitor = "M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z"; +var mdiMonitorCellphone = "M23,11H18A1,1 0 0,0 17,12V21A1,1 0 0,0 18,22H23A1,1 0 0,0 24,21V12A1,1 0 0,0 23,11M23,20H18V13H23V20M20,2H2C0.89,2 0,2.89 0,4V16A2,2 0 0,0 2,18H9V20H7V22H15V20H13V18H15V16H2V4H20V9H22V4C22,2.89 21.1,2 20,2Z"; +var mdiMonitorCellphoneStar = "M23,11H18A1,1 0 0,0 17,12V21A1,1 0 0,0 18,22H23A1,1 0 0,0 24,21V12A1,1 0 0,0 23,11M23,20H18V13H23V20M20,2H2C0.89,2 0,2.89 0,4V16A2,2 0 0,0 2,18H9V20H7V22H15V20H13V18H15V16H2V4H20V9H22V4C22,2.89 21.1,2 20,2M11.97,9L11,6L10.03,9H7L9.47,10.76L8.53,13.67L11,11.87L13.47,13.67L12.53,10.76L15,9H11.97Z"; +var mdiMonitorClean = "M21 16H3V4H21M21 2H3C1.89 2 1 2.89 1 4V16C1 17.11 1.9 18 3 18H10V20H8V22H16V20H14V18H21C22.11 18 23 17.11 23 16V4C23 2.89 22.1 2 21 2M15 5.5L14.38 6.87L13 7.5L14.38 8.13L15 9.5L15.63 8.13L17 7.5L15.63 6.87L15 5.5M10.5 7.5L9.41 9.91L7 11L9.41 12.09L10.5 14.5L11.6 12.09L14 11L11.6 9.91L10.5 7.5"; +var mdiMonitorDashboard = "M21,16V4H3V16H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14V20H16V22H8V20H10V18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M5,6H14V11H5V6M15,6H19V8H15V6M19,9V14H15V9H19M5,12H9V14H5V12M10,12H14V14H10V12Z"; +var mdiMonitorEdit = "M21 2H3C1.9 2 1 2.9 1 4V16C1 17.11 1.9 18 3 18H10V20H8V22H16V20H14V18H21C22.11 18 23 17.11 23 16V4C23 2.9 22.11 2 21 2M21 16H3V4H21V16M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z"; +var mdiMonitorEye = "M3 4V16H21V4H3M3 2H21C22.1 2 23 2.89 23 4V16C23 16.53 22.79 17.04 22.41 17.41C22.04 17.79 21.53 18 21 18H14V20H16V22H8V20H10V18H3C2.47 18 1.96 17.79 1.59 17.41C1.21 17.04 1 16.53 1 16V4C1 2.89 1.89 2 3 2M10.84 8.93C11.15 8.63 11.57 8.45 12 8.45C12.43 8.46 12.85 8.63 13.16 8.94C13.46 9.24 13.64 9.66 13.64 10.09C13.64 10.53 13.46 10.94 13.16 11.25C12.85 11.56 12.43 11.73 12 11.73C11.57 11.73 11.15 11.55 10.84 11.25C10.54 10.94 10.36 10.53 10.36 10.09C10.36 9.66 10.54 9.24 10.84 8.93M10.07 12C10.58 12.53 11.28 12.82 12 12.82C12.72 12.82 13.42 12.53 13.93 12C14.44 11.5 14.73 10.81 14.73 10.09C14.73 9.37 14.44 8.67 13.93 8.16C13.42 7.65 12.72 7.36 12 7.36C11.28 7.36 10.58 7.65 10.07 8.16C9.56 8.67 9.27 9.37 9.27 10.09C9.27 10.81 9.56 11.5 10.07 12M6 10.09C6.94 7.7 9.27 6 12 6C14.73 6 17.06 7.7 18 10.09C17.06 12.5 14.73 14.18 12 14.18C9.27 14.18 6.94 12.5 6 10.09Z"; +var mdiMonitorLock = "M20.5,13A2.5,2.5 0 0,1 23,15.5V16A1,1 0 0,1 24,17V21A1,1 0 0,1 23,22H18A1,1 0 0,1 17,21V17A1,1 0 0,1 18,16V15.5A2.5,2.5 0 0,1 20.5,13M20.5,14A1.5,1.5 0 0,0 19,15.5V16H22V15.5A1.5,1.5 0 0,0 20.5,14M20,4H2V16H15V18H13V20H15V22H7V20H9V18H2C0.89,18 0,17.1 0,16V4C0,2.89 0.89,2 2,2H20A2,2 0 0,1 22,4V11.53C21.41,11.19 20.73,11 20,11V4Z"; +var mdiMonitorMultiple = "M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z"; +var mdiMonitorOff = "M14,18V20H16V22H8V20H10V18H3A2,2 0 0,1 1,16V4L0,3L1.41,1.58L22.16,22.34L20.75,23.75L15,18H14M3,16H13L3,6V16M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H20.66L18.66,16H21V4H6.66L4.66,2H21Z"; +var mdiMonitorScreenshot = "M9,6H5V10H7V8H9M19,10H17V12H15V14H19M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2"; +var mdiMonitorShare = "M23 4V16C23 17.11 22.11 18 21 18H15V16H21V4H3V16H9V18H3C1.9 18 1 17.11 1 16V4C1 2.89 1.89 2 3 2H21C22.1 2 23 2.89 23 4M13 13H16L12 9L8 13H11V20H8V22H16V20H13V13Z"; +var mdiMonitorSpeaker = "M10 20V18H3C1.9 18 1 17.1 1 16V4C1 2.89 1.89 2 3 2H21C22.1 2 23 2.89 23 4V8H21V4H3V16H12V22H8V20H10M18.5 15C17.12 15 16 16.12 16 17.5S17.12 20 18.5 20 21 18.88 21 17.5 19.88 15 18.5 15M23 10V21C23 21.55 22.55 22 22 22H15C14.45 22 14 21.55 14 21V10C14 9.45 14.45 9 15 9H22C22.55 9 23 9.45 23 10M17 11.5C17 12.33 17.67 13 18.5 13S20 12.33 20 11.5 19.33 10 18.5 10 17 10.67 17 11.5M22 17.5C22 15.57 20.43 14 18.5 14S15 15.57 15 17.5 16.57 21 18.5 21 22 19.43 22 17.5Z"; +var mdiMonitorSpeakerOff = "M23.1 22.5L1.4.7.1 2L1.2 3.1C1.1 3.4 1 3.7 1 4V16C1 17.1 1.9 18 3 18H10V20H8V22H12V16H3V4.9L14 15.9V21C14 21.6 14.5 22 15 22H20.1L21.8 23.7L23.1 22.5M18.5 21C16.6 21 15 19.4 15 17.5C15 17.3 15 17.1 15.1 16.9L16.1 17.9C16.3 18.9 17.1 19.7 18.1 19.9L19.1 20.9C18.9 21 18.7 21 18.5 21M21 17.5V17.8L18.2 15H18.5C19.9 15 21 16.1 21 17.5M23 19.8V10C23 9.4 22.5 9 22 9H15C14.4 9 14 9.5 14 10V10.8L17.4 14.2C17.7 14.1 18.1 14 18.5 14C20.4 14 22 15.6 22 17.5C22 17.9 21.9 18.3 21.8 18.6L23 19.8M18.5 13C17.7 13 17 12.3 17 11.5S17.7 10 18.5 10 20 10.7 20 11.5 19.3 13 18.5 13M7.2 4L5.2 2H21C22.1 2 23 2.9 23 4V8H21V4H7.2Z"; +var mdiMonitorStar = "M21,16V4H3V16H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14V20H16V22H8V20H10V18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M12.97,9H16L13.53,10.76L14.47,13.67L12,11.87L9.53,13.67L10.47,10.76L8,9H11.03L12,6L12.97,9Z"; +var mdiMoonFirstQuarter = "M12 2V22A10 10 0 0 0 12 2Z"; +var mdiMoonFull = "M12 2A10 10 0 1 1 2 12A10 10 0 0 1 12 2Z"; +var mdiMoonLastQuarter = "M12 2A10 10 0 0 0 12 22Z"; +var mdiMoonNew = "M12 20A8 8 0 1 1 20 12A8 8 0 0 1 12 20M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2Z"; +var mdiMoonWaningCrescent = "M2 12A10 10 0 0 0 15 21.54A10 10 0 0 1 15 2.46A10 10 0 0 0 2 12Z"; +var mdiMoonWaningGibbous = "M18 12C18 7.5 16.08 3.26 12 2A10 10 0 0 0 12 22C16.08 20.74 18 16.5 18 12Z"; +var mdiMoonWaxingCrescent = "M12 2A9.91 9.91 0 0 0 9 2.46A10 10 0 0 1 9 21.54A10 10 0 1 0 12 2Z"; +var mdiMoonWaxingGibbous = "M6 12C6 7.5 7.93 3.26 12 2A10 10 0 0 1 12 22C7.93 20.74 6 16.5 6 12Z"; +var mdiMoped = "M19 15C19.55 15 20 15.45 20 16C20 16.55 19.55 17 19 17S18 16.55 18 16C18 15.45 18.45 15 19 15M19 13C17.34 13 16 14.34 16 16S17.34 19 19 19 22 17.66 22 16 20.66 13 19 13M10 6H5V8H10V6M17 5H14V7H17V9.65L13.5 14H10V9H6C3.79 9 2 10.79 2 13V16H4C4 17.66 5.34 19 7 19S10 17.66 10 16H14.5L19 10.35V7C19 5.9 18.11 5 17 5M7 17C6.45 17 6 16.55 6 16H8C8 16.55 7.55 17 7 17Z"; +var mdiMopedElectric = "M19 5C19 3.9 18.1 3 17 3H14V5H17V7.65L13.5 12H10V7H6C3.79 7 2 8.79 2 11V14H4C4 15.66 5.34 17 7 17S10 15.66 10 14H14.5L19 8.35V5M7 15C6.45 15 6 14.55 6 14H8C8 14.55 7.55 15 7 15M5 4H10V6H5V4M19 11C17.34 11 16 12.34 16 14S17.34 17 19 17 22 15.66 22 14 20.66 11 19 11M19 15C18.45 15 18 14.55 18 14S18.45 13 19 13 20 13.45 20 14 19.55 15 19 15M7 20H11V18L17 21H13V23L7 20Z"; +var mdiMopedElectricOutline = "M19 5C19 3.9 18.1 3 17 3H14V5H17V7.65L13.5 12H10V7H6C3.79 7 2 8.79 2 11V14H4C4 15.66 5.34 17 7 17S10 15.66 10 14H14.5L19 8.35V5M4 12V11C4 9.9 4.9 9 6 9H8V12H4M7 15C6.45 15 6 14.55 6 14H8C8 14.55 7.55 15 7 15M5 4H10V6H5V4M19 11C17.34 11 16 12.34 16 14S17.34 17 19 17 22 15.66 22 14 20.66 11 19 11M19 15C18.45 15 18 14.55 18 14S18.45 13 19 13 20 13.45 20 14 19.55 15 19 15M7 20H11V18L17 21H13V23L7 20Z"; +var mdiMopedOutline = "M19 7C19 5.9 18.11 5 17 5H14V7H17V9.65L13.5 14H10V9H6C3.79 9 2 10.79 2 13V16H4C4 17.66 5.34 19 7 19S10 17.66 10 16H14.5L19 10.35V7M7 17C6.45 17 6 16.55 6 16H8C8 16.55 7.55 17 7 17M8 14H4V13C4 11.9 4.9 11 6 11H8V14M19 13C17.34 13 16 14.34 16 16S17.34 19 19 19 22 17.66 22 16 20.66 13 19 13M19 17C18.45 17 18 16.55 18 16S18.45 15 19 15 20 15.45 20 16 19.55 17 19 17M10 8H5V6H10V8Z"; +var mdiMore = "M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z"; +var mdiMotherHeart = "M12 2C13.66 2 15 3.34 15 5S13.66 8 12 8 9 6.66 9 5 10.34 2 12 2M20 18L18 12.56C17.65 11.57 17.34 10.71 16 10C14.63 9.3 13.63 9 12 9C10.39 9 9.39 9.3 8 10C6.68 10.71 6.37 11.57 6 12.56L4 18C3.77 19.13 6.38 20.44 8.13 21.19C9.34 21.72 10.64 22 12 22C13.38 22 14.67 21.72 15.89 21.19C17.64 20.44 20.25 19.13 20 18M15.42 17.5L12 21L8.58 17.5C8.22 17.12 8 16.61 8 16.05C8 14.92 8.9 14 10 14C10.55 14 11.06 14.23 11.42 14.61L12 15.2L12.58 14.6C12.94 14.23 13.45 14 14 14C15.11 14 16 14.92 16 16.05C16 16.61 15.78 17.13 15.42 17.5Z"; +var mdiMotherNurse = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M20,18L18,12.56C17.65,11.57 17.34,10.71 16,10C14.62,9.3 13.62,9 12,9C10.37,9 9.38,9.3 8,10C6.66,10.71 6.35,11.57 6,12.56L4,18C3.68,19.35 6.36,20.44 8.11,21.19V19C8.11,18.05 8.97,17.38 10.69,16.97C10.85,16.93 11,16.91 11.12,16.89C10.58,16.07 10.36,15.34 10.34,15.28L12.11,14.68C12.12,14.7 12.63,16.27 13.84,17.06C14.05,17.13 14.26,17.21 14.46,17.3C15.23,17.64 15.69,18.08 15.84,18.61C14.5,19.14 13.22,19.41 12,19.41L11,19.31V21.94L12,22C13.37,22 14.67,21.72 15.89,21.19C17.64,20.44 20.25,19.13 20,18M15.5,17A1.5,1.5 0 0,1 14,15.5A1.5,1.5 0 0,1 15.5,14A1.5,1.5 0 0,1 17,15.5A1.5,1.5 0 0,1 15.5,17Z"; +var mdiMotion = "M7 13H3C2.45 13 2 12.55 2 12S2.45 11 3 11H7C7.55 11 8 11.45 8 12S7.55 13 7 13M6 8C6 7.45 5.55 7 5 7H4C3.45 7 3 7.45 3 8S3.45 9 4 9H5C5.55 9 6 8.55 6 8M22 12C22 14.76 19.76 17 17 17H4C3.45 17 3 16.55 3 16S3.45 15 4 15H13C12.58 14.42 12.25 13.74 12.1 13H10C9.45 13 9 12.55 9 12S9.45 11 10 11H12.1C12.25 10.26 12.58 9.58 13 9H8C7.45 9 7 8.55 7 8S7.45 7 8 7H17C19.76 7 22 9.24 22 12Z"; +var mdiMotionOutline = "M7 13H3C2.45 13 2 12.55 2 12S2.45 11 3 11H7C7.55 11 8 11.45 8 12S7.55 13 7 13M6 8C6 7.45 5.55 7 5 7H4C3.45 7 3 7.45 3 8S3.45 9 4 9H5C5.55 9 6 8.55 6 8M22 12C22 14.76 19.76 17 17 17H4C3.45 17 3 16.55 3 16S3.45 15 4 15H13C12.58 14.42 12.25 13.74 12.1 13H10C9.45 13 9 12.55 9 12S9.45 11 10 11H12.1C12.25 10.26 12.58 9.58 13 9H8C7.45 9 7 8.55 7 8S7.45 7 8 7H17C19.76 7 22 9.24 22 12M20 12C20 10.35 18.65 9 17 9S14 10.35 14 12C14 13.65 15.35 15 17 15S20 13.65 20 12Z"; +var mdiMotionPause = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97M18 12C18 8.67 15.33 6 12 6C8.67 6 6 8.67 6 12C6 15.33 8.67 18 12 18C15.33 18 18 15.33 18 12M11 9V15H9V9M15 9V15H13V9"; +var mdiMotionPauseOutline = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7M9 9H11V15H9M13 9H15V15H13"; +var mdiMotionPlay = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97M18 12C18 8.67 15.33 6 12 6C8.67 6 6 8.67 6 12C6 15.33 8.67 18 12 18C15.33 18 18 15.33 18 12M15 12L10 15V9"; +var mdiMotionPlayOutline = "M10 16.5L16 12L10 7.5M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97Z"; +var mdiMotionSensor = "M10,0.2C9,0.2 8.2,1 8.2,2C8.2,3 9,3.8 10,3.8C11,3.8 11.8,3 11.8,2C11.8,1 11,0.2 10,0.2M15.67,1A7.33,7.33 0 0,0 23,8.33V7A6,6 0 0,1 17,1H15.67M18.33,1C18.33,3.58 20.42,5.67 23,5.67V4.33C21.16,4.33 19.67,2.84 19.67,1H18.33M21,1A2,2 0 0,0 23,3V1H21M7.92,4.03C7.75,4.03 7.58,4.06 7.42,4.11L2,5.8V11H3.8V7.33L5.91,6.67L2,22H3.8L6.67,13.89L9,17V22H10.8V15.59L8.31,11.05L9.04,8.18L10.12,10H15V8.2H11.38L9.38,4.87C9.08,4.37 8.54,4.03 7.92,4.03Z"; +var mdiMotionSensorOff = "M11.4 8.2H15V10H13.2L11.4 8.2M19.67 1H18.33C18.33 3.58 20.42 5.67 23 5.67V4.33C21.16 4.33 19.67 2.84 19.67 1M21 1C21 2.11 21.9 3 23 3V1H21M17 1H15.67C15.67 5.05 18.95 8.33 23 8.33V7C19.69 7 17 4.31 17 1M10 3.8C11 3.8 11.8 3 11.8 2S11 .2 10 .2 8.2 1 8.2 2 9 3.8 10 3.8M2.39 1.73L1.11 3L3.46 5.35L2 5.8V11H3.8V7.33L5.05 6.94L5.68 7.57L2 22H3.8L6.67 13.89L9 17V22H10.8V15.59L8.31 11.05L8.5 10.37L20.84 22.73L22.11 21.46L2.39 1.73M9.38 4.87C9.08 4.37 8.54 4.03 7.92 4.03C7.75 4.03 7.58 4.06 7.42 4.11L7.34 4.14L11.35 8.15L9.38 4.87Z"; +var mdiMotorbike = "M17.42,10L13.41,6H9V8H12.59L14.59,10H6.5C4,10 2,12 2,14.5C2,17 4,19 6.5,19C8.72,19 10.56,17.38 10.92,15.27L13.04,14C13,14.17 13,14.33 13,14.5C13,17 15,19 17.5,19C20,19 22,17 22,14.5C22,12 20,10 17.5,10M8.84,15.26C8.5,16.27 7.58,17 6.47,17C5.09,17 3.97,15.88 3.97,14.5C3.97,13.12 5.09,12 6.47,12C7.59,12 8.5,12.74 8.84,13.75H6V15.25L8.84,15.26M17.47,17C16.09,17 14.97,15.88 14.97,14.5C14.97,13.12 16.09,12 17.47,12A2.5,2.5 0 0,1 19.97,14.5A2.5,2.5 0 0,1 17.47,17Z"; +var mdiMotorbikeElectric = "M17.42 8L13.41 4H9V6H12.59L14.59 8H6.5C4 8 2 10 2 12.5S4 17 6.5 17C8.72 17 10.56 15.38 10.92 13.27L13.04 12C13 12.17 13 12.33 13 12.5C13 15 15 17 17.5 17S22 15 22 12.5 20 8 17.5 8M8.84 13.26C8.5 14.27 7.58 15 6.47 15C5.09 15 3.97 13.88 3.97 12.5S5.09 10 6.47 10C7.59 10 8.5 10.74 8.84 11.75H6V13.25L8.84 13.26M17.47 15C16.09 15 14.97 13.88 14.97 12.5S16.09 10 17.47 10C18.85 10 19.97 11.12 19.97 12.5S18.85 15 17.47 15M11 20H7L13 23V21H17L11 18V20Z"; +var mdiMouse = "M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z"; +var mdiMouseBluetooth = "M20,7H20.5L23.35,9.85L21.21,12L23.35,14.14L20.5,17H20V13.21L17.71,15.5L17,14.79L19.79,12L17,9.21L17.71,8.5L20,10.79V7M21,8.91V10.79L21.94,9.85L21,8.91M21,13.21V15.08L21.94,14.14L21,13.21M15,9V10H9V2.07C12.39,2.56 15,5.47 15,9M1,10V9C1,5.47 3.61,2.56 7,2.07V10H1M15,15A7,7 0 0,1 8,22A7,7 0 0,1 1,15V12H15V15Z"; +var mdiMouseMoveDown = "M7 9H2C2 6.04 4.17 3.57 7 3.09V9M20 7H18V13H15L19 17L23 13H20V7M9 3.09V9H14C14 6.04 11.83 3.57 9 3.09M2 15C2 18.3 4.7 21 8 21S14 18.3 14 15V11H2V15Z"; +var mdiMouseMoveUp = "M7 9H2C2 6.04 4.17 3.57 7 3.09V9M18 17H20V11H23L19 7L15 11H18V17M9 3.09V9H14C14 6.04 11.83 3.57 9 3.09M2 15C2 18.3 4.7 21 8 21S14 18.3 14 15V11H2V15Z"; +var mdiMouseMoveVertical = "M20 6H23L19 2L15 6H18V18H15L19 22L23 18H20V6M9 3.09C11.83 3.57 14 6.04 14 9H9V3.09M14 11V15C14 18.3 11.3 21 8 21S2 18.3 2 15V11H14M7 9H2C2 6.04 4.17 3.57 7 3.09V9Z"; +var mdiMouseOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z"; +var mdiMouseVariant = "M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z"; +var mdiMouseVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z"; +var mdiMoveResize = "M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10"; +var mdiMoveResizeVariant = "M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59"; +var mdiMovie = "M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z"; +var mdiMovieCheck = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiMovieCheckOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiMovieCog = "M12 19C12 19.34 12.03 19.67 12.08 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V12.68C21.09 12.25 20.08 12 19 12C15.13 12 12 15.13 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiMovieCogOutline = "M12 19C12 19.34 12.03 19.67 12.08 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V12.68C21.38 12.39 20.71 12.18 20 12.08V10H5.76L4 6.47V18H12.08C12.03 18.33 12 18.66 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiMovieEdit = "M21.04 11.13C20.9 11.13 20.76 11.19 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.92 13.14 22.92 12.79 22.7 12.58L21.42 11.3C21.31 11.19 21.18 11.13 21.04 11.13M19.07 12.88L13 18.94V21H15.06L21.12 14.93L19.07 12.88M11 20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4H4L6 8H9L7 4H9L11 8H14L12 4H14L16 8H19L17 4H21V8.12L11 18.11V20Z"; +var mdiMovieEditOutline = "M21 4V8.12L19.12 10H4.76L3 6.47V18H11V20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4H4L6 8H9L7 4H9L11 8H14L12 4H14L16 8H19L17 4H21M21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3M21.12 15.93L15.06 22H13V19.94L19.07 13.88L21.12 15.93Z"; +var mdiMovieFilter = "M18 4L20 7H17L15 4H13L15 7H12L10 4H8L10 7H7L5 4H4C2.9 4 2 4.9 2 6L2 18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V4H18M11.25 15.25L10 18L8.75 15.25L6 14L8.75 12.75L10 10L11.25 12.75L14 14L11.25 15.25M16.94 11.94L16 14L15.06 11.94L13 11L15.06 10.06L16 8L16.94 10.06L19 11L16.94 11.94Z"; +var mdiMovieFilterOutline = "M10 11L9.06 13.06L7 14L9.06 14.94L10 17L10.94 14.94L13 14L10.94 13.06M18 4L20 8H17L15 4H13L15 8H12L10 4H8L10 8H7L5 4H4C2.91 4 2 4.9 2 6L2 18C2 19.1 2.91 20 4 20H20C21.11 20 22 19.1 22 18V4H18M20 18H4V6.47L5.77 10H16L15.37 11.37L14 12L15.37 12.63L16 14L16.63 12.63L18 12L16.63 11.37L16 10H20V18Z"; +var mdiMovieMinus = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M15 18V20H23V18H15Z"; +var mdiMovieMinusOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M15 18V20H23V18H15Z"; +var mdiMovieOff = "M22.11 21.46L20.84 22.73L18.11 20H4C2.9 20 2 19.11 2 18V6C2 5.42 2.25 4.9 2.65 4.54L1.11 3L2.39 1.73L22.11 21.46M21.88 18.68C21.96 18.47 22 18.24 22 18V4H18L20 8H17L15 4H13L15 8H12L10 4H8L8.8 5.6L21.88 18.68Z"; +var mdiMovieOffOutline = "M2.39 1.73L1.11 3L2.65 4.54C2.25 4.9 2 5.42 2 6V18C2 19.11 2.9 20 4 20H18.11L20.84 22.73L22.11 21.46L2.39 1.73M4 18V6.47L5.76 10H8.11L16.11 18H4M8.8 5.6L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V18C22 18.24 21.96 18.47 21.88 18.68L20 16.8V10H13.2L8.8 5.6Z"; +var mdiMovieOpen = "M20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1L20.84 2.18M13.97 3.54L12 3.93L14.75 7.46L16.71 7.07L13.97 3.54M9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05L9.07 4.5M4.16 5.5L3.18 5.69A2 2 0 0 0 1.61 8.04L2 10L6.9 9.03L4.16 5.5M2 10V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V10H2Z"; +var mdiMovieOpenCheck = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiMovieOpenCheckOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; +var mdiMovieOpenCog = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M19 12C20.08 12 21.09 12.25 22 12.68V10H2V20C2 21.11 2.9 22 4 22H12.68C12.25 21.09 12 20.08 12 19C12 15.13 15.13 12 19 12M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiMovieOpenCogOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M4 20V12H20V12.08C20.71 12.18 21.38 12.39 22 12.69V10H2V20C2 21.11 2.9 22 4 22H12.68C12.39 21.38 12.18 20.71 12.08 20H4M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiMovieOpenEdit = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M2 10V20C2 21.11 2.9 22 4 22H11V19.13L20.13 10H2M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z"; +var mdiMovieOpenEditOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4 12H18.13L20.13 10H2V20C2 21.11 2.9 22 4 22H11V20H4V12M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z"; +var mdiMovieOpenMinus = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M15 18V20H23V18H15Z"; +var mdiMovieOpenMinusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H4C2.9 22 2 21.11 2 20V10H22V13.81C21.39 13.46 20.72 13.22 20 13.09V12H4V20H13.09M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M15 18V20H23V18H15Z"; +var mdiMovieOpenOff = "M13.2 10H22V18.8L13.2 10M21.6 6.1L20.8 2.2L16.9 3L19.6 6.5L21.6 6.1M11.8 8L9.1 4.5L7.9 4.7L11.3 8.1L11.8 8M2.4 1.7L1.1 3L3.7 5.6L3.2 5.7C2.1 5.9 1.4 7 1.6 8L2 10L7.1 9L8.1 10H2V20C2 21.1 2.9 22 4 22H20.1L20.8 22.7L22.1 21.4L2.4 1.7M16.7 7.1L14 3.5L12 3.9L14.8 7.4L16.7 7.1Z"; +var mdiMovieOpenOffOutline = "M19.7 6.5L16.9 3L20.8 2.2L21.6 6.1L19.7 6.5M22.1 21.5L20.8 22.8L20.1 22H4C2.9 22 2 21.1 2 20V10H8.1L7.1 9L2 10L1.6 8C1.4 7 2.1 5.9 3.2 5.7L3.7 5.6L1.1 3L2.4 1.7L22.1 21.5M18.1 20L10.1 12H4V20H18.1M22 18.8V10H13.2L15.2 12H20V16.8L22 18.8M16.7 7.1L14 3.5L12 3.9L14.8 7.4L16.7 7.1M11.8 8L9.1 4.5L7.9 4.7L11.3 8.1L11.8 8Z"; +var mdiMovieOpenOutline = "M20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1L20.84 2.18M13.97 3.54L12 3.93L14.75 7.46L16.71 7.07L13.97 3.54M9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05L9.07 4.5M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 12V20H4V12H20M22 10H2V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V10Z"; +var mdiMovieOpenPlay = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M2 10V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13C20.1 13 21.12 13.3 22 13.81V10H2M17 22L22 19L17 16V22Z"; +var mdiMovieOpenPlayOutline = "M22 10V13.81C21.39 13.46 20.72 13.22 20 13.09V12H4V20H13.09C13.21 20.72 13.46 21.39 13.81 22H4C2.9 22 2 21.11 2 20V10H22M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M17 22L22 19L17 16V22Z"; +var mdiMovieOpenPlus = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiMovieOpenPlusOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiMovieOpenRemove = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiMovieOpenRemoveOutline = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiMovieOpenSettings = "M14.75 5.46L12 1.93L13.97 1.54L16.71 5.07L14.75 5.46M21.62 4.1L20.84 .18L16.91 .96L19.65 4.5L21.62 4.1M11.81 6.05L9.07 2.5L7.1 2.91L9.85 6.44L11.81 6.05M2 8V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8H2M4.16 3.5L3.18 3.69C2.1 3.91 1.4 4.96 1.61 6.04L2 8L6.9 7.03L4.16 3.5M11 24H13V22H11V24M7 24H9V22H7V24M15 24H17V22H15V24Z"; +var mdiMovieOpenSettingsOutline = "M19.65 4.5L16.91 .96L20.84 .18L21.62 4.1L19.65 4.5M16.71 5.07L13.97 1.54L12 1.93L14.75 5.46L16.71 5.07M11.81 6.05L9.07 2.5L7.1 2.91L9.85 6.44L11.81 6.05M4.16 3.5L3.18 3.69C2.1 3.9 1.39 4.96 1.61 6.04L2 8L6.9 7.03L4.16 3.5M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V8H22M20 10H4V18H20V10M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; +var mdiMovieOpenStar = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; +var mdiMovieOpenStarOutline = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; +var mdiMovieOutline = "M5.76,10H20V18H4V6.47M22,4H18L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4Z"; +var mdiMoviePlay = "M22 4V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M17 22L22 19L17 16V22Z"; +var mdiMoviePlayOutline = "M22 4V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M17 22L22 19L17 16V22Z"; +var mdiMoviePlus = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiMoviePlusOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiMovieRemove = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiMovieRemoveOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiMovieRoll = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A2.5,2.5 0 0,0 9.5,6.5A2.5,2.5 0 0,0 12,9A2.5,2.5 0 0,0 14.5,6.5A2.5,2.5 0 0,0 12,4M4.4,9.53C3.97,10.84 4.69,12.25 6,12.68C7.32,13.1 8.73,12.39 9.15,11.07C9.58,9.76 8.86,8.35 7.55,7.92C6.24,7.5 4.82,8.21 4.4,9.53M19.61,9.5C19.18,8.21 17.77,7.5 16.46,7.92C15.14,8.34 14.42,9.75 14.85,11.07C15.28,12.38 16.69,13.1 18,12.67C19.31,12.25 20.03,10.83 19.61,9.5M7.31,18.46C8.42,19.28 10,19.03 10.8,17.91C11.61,16.79 11.36,15.23 10.24,14.42C9.13,13.61 7.56,13.86 6.75,14.97C5.94,16.09 6.19,17.65 7.31,18.46M16.7,18.46C17.82,17.65 18.07,16.09 17.26,14.97C16.45,13.85 14.88,13.6 13.77,14.42C12.65,15.23 12.4,16.79 13.21,17.91C14,19.03 15.59,19.27 16.7,18.46M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5Z"; +var mdiMovieSearch = "M11.03 20H4C2.9 20 2 19.1 2 18L2 6C2 4.9 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.05C20.85 11.22 18.82 10 16.5 10C12.92 10 10 12.92 10 16.5C10 17.79 10.38 19 11.03 20M23.39 22L22 23.39L18.88 20.32C18.19 20.75 17.37 21 16.5 21C14 21 12 19 12 16.5S14 12 16.5 12 21 14 21 16.5C21 17.38 20.75 18.21 20.31 18.9L23.39 22M19 16.5C19 15.12 17.88 14 16.5 14S14 15.12 14 16.5 15.12 19 16.5 19 19 17.88 19 16.5Z"; +var mdiMovieSearchOutline = "M11 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13C21.5 12.2 20.8 11.5 20 11V10H5.8L4 6.5V18H10.2C10.4 18.7 10.6 19.4 11 20M20.3 18.9C20.7 18.2 21 17.4 21 16.5C21 14 19 12 16.5 12S12 14 12 16.5 14 21 16.5 21C17.4 21 18.2 20.8 18.9 20.3L22 23.4L23.4 22L20.3 18.9M16.5 19C15.1 19 14 17.9 14 16.5S15.1 14 16.5 14 19 15.1 19 16.5 17.9 19 16.5 19Z"; +var mdiMovieSettings = "M22 4V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M7 24H9V22H7V24M11 24H13V22H11V24M15 24H17V22H15V24Z"; +var mdiMovieSettingsOutline = "M18 4L20 8H17L15 4H13L15 8H12L10 4H8L10 8H7L5 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V4H18M20 18H4V6.47L5.76 10H20V18M11 22H13V24H11V22M7 22H9V24H7V22M15 22H17V24H15V22Z"; +var mdiMovieStar = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; +var mdiMovieStarOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; +var mdiMower = "M18.5 14C17.55 14 16.69 14.38 16.06 15H9.39L5.74 3H2V5H4.26L7 14.05C6.85 14.03 6.68 14 6.5 14C4.57 14 3 15.57 3 17.5S4.57 21 6.5 21C7.89 21 9.09 20.18 9.65 19H15.35C15.91 20.18 17.11 21 18.5 21C20.43 21 22 19.43 22 17.5S20.43 14 18.5 14M6.5 19C5.67 19 5 18.33 5 17.5S5.67 16 6.5 16 8 16.67 8 17.5 7.33 19 6.5 19M18.5 19C17.67 19 17 18.33 17 17.5S17.67 16 18.5 16 20 16.67 20 17.5 19.33 19 18.5 19M10.13 14L9.53 12H12.76C13.5 12 14.21 12.43 14.55 13.11L15 14H10.13Z"; +var mdiMowerBag = "M11.95 14L10.82 12H14.76C15.5 12 16.21 12.43 16.55 13.11L17 14H11.95M23 18C23 19.66 21.66 21 20 21C18.7 21 17.6 20.16 17.18 19H11.65C11.09 20.18 9.89 21 8.5 21S5.91 20.18 5.35 19H2C1.45 19 1 18.55 1 18V11C1 10.67 1.17 10.36 1.44 10.17C1.71 10 2.06 9.95 2.37 10.07L7.43 12.09L3.42 5H1V3H4.58L11.37 15H20C21.66 15 23 16.34 23 18M7.34 14.21L3 12.5V17H5.05C5.24 15.7 6.13 14.64 7.34 14.21M10 17.5C10 16.67 9.33 16 8.5 16S7 16.67 7 17.5 7.67 19 8.5 19 10 18.33 10 17.5M21 18C21 17.45 20.55 17 20 17S19 17.45 19 18 19.45 19 20 19 21 18.55 21 18Z"; +var mdiMuffin = "M16,5C16,5 15,2 12,2C9,2 8,5 8,5C6,5 4,7 4,9C1.3,9 1.3,13 4,13H20C22.7,13 22.7,9 20,9C20,7 18,5 16,5M5,15L7,22H9L8,15H5M10,15L11,22H13L14,15H10M16,15L15,22H17L19,15H16Z"; +var mdiMultiplication = "M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z"; +var mdiMultiplicationBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z"; +var mdiMushroom = "M12,2A10,10 0 0,1 22,12A2,2 0 0,1 20,14H4A2,2 0 0,1 2,12A10,10 0 0,1 12,2M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M17,12A2,2 0 0,0 19,10A2,2 0 0,0 17,8A2,2 0 0,0 15,10A2,2 0 0,0 17,12M7,12A2,2 0 0,0 9,10A2,2 0 0,0 7,8A2,2 0 0,0 5,10A2,2 0 0,0 7,12M15,15L16.27,19.45L16.35,20C16.35,21.1 15.45,22 14.35,22H9.65A2,2 0 0,1 7.65,20L7.73,19.45L9,15H15Z"; +var mdiMushroomOff = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 13.1 2.9 14 4 14H12.1L13.1 15H9L7.7 19.5V20C7.7 21.1 8.6 22 9.7 22H14.4C15.5 22 16.4 21.1 16.4 20L16.3 19.5L15.8 17.7L20.9 22.8L22.1 21.5M7 12C5.9 12 5 11.1 5 10C5 9.2 5.5 8.4 6.3 8.1L8.9 10.7C8.6 11.5 7.8 12 7 12M10 6C10 4.9 10.9 4 12 4S14 4.9 14 6 13.1 8 12 8C11.5 8 11.1 7.8 10.7 7.5L17.2 14H20C21.1 14 22 13.1 22 12C22 6.5 17.5 2 12 2C10.1 2 8.3 2.6 6.7 3.5L10.4 7.2C10.2 6.9 10 6.5 10 6M17 8C18.1 8 19 8.9 19 10S18.1 12 17 12 15 11.1 15 10 15.9 8 17 8Z"; +var mdiMushroomOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 13.1 2.9 14 4 14H12.1L13.1 15H9L8 18.5L7.7 19.5C7.4 20.6 8.1 21.7 9.1 21.9L9.7 22H14.4C15.5 22 16.4 21.1 16.4 20L16.3 19.5L16 18.5L15.8 17.6L20.9 22.7L22.1 21.5M4 12C4 10.3 4.6 8.7 5.5 7.4L6.2 8.1C6.1 8.4 6 8.7 6 9C6 10.1 6.9 11 8 11C8.3 11 8.6 10.9 8.9 10.8L10.1 12H4M9.7 20L10 19L10.6 17H13.6L14.2 19L14.5 20H9.7M16 11C14.9 11 14 10.1 14 9S14.9 7 16 7 18 7.9 18 9 17.1 11 16 11M8.2 5L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.1 21.1 14 20 14H17.2L15.2 12H20C20 8.3 17.4 5.1 14 4.2C13.9 5.2 13 6 12 6S10.1 5.2 10 4.2C9.4 4.4 8.7 4.7 8.2 5Z"; +var mdiMushroomOutline = "M4,12H20C20,8.27 17.44,5.13 14,4.25C13.86,5.24 13,6 12,6C11,6 10.14,5.24 10,4.25C6.56,5.13 4,8.27 4,12M12,2A10,10 0 0,1 22,12A2,2 0 0,1 20,14H4A2,2 0 0,1 2,12A10,10 0 0,1 12,2M13.5,17H10.5L9.92,19L9.65,20H14.35L14.08,19L13.5,17M15,15L16,18.5L16.27,19.45L16.35,20C16.35,21.1 15.45,22 14.35,22H9.65L9.17,21.94C8.1,21.66 7.45,20.57 7.73,19.5L8,18.5L9,15H15M16,7A2,2 0 0,1 18,9A2,2 0 0,1 16,11A2,2 0 0,1 14,9A2,2 0 0,1 16,7M8,7A2,2 0 0,1 10,9A2,2 0 0,1 8,11A2,2 0 0,1 6,9A2,2 0 0,1 8,7Z"; +var mdiMusic = "M21,3V15.5A3.5,3.5 0 0,1 17.5,19A3.5,3.5 0 0,1 14,15.5A3.5,3.5 0 0,1 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L9,8.6V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V6L21,3Z"; +var mdiMusicAccidentalDoubleFlat = "M15.5 9C14.8 9 14.11 9.28 13.5 9.67V5H11.5V9.62C11.04 9.24 10.39 9 9.5 9C8.8 9 8.11 9.28 7.5 9.67V5H5.5V19C8.5 17.32 10.43 15.79 11.5 14.41V19C16.36 16.26 18.5 13.91 18.5 12C18.5 10.59 17.79 9 15.5 9M7.5 15.38V12.26C8.12 11.59 8.95 11 9.5 11C10.09 11 10.5 11.07 10.5 12C10.5 12.15 10.4 13.3 7.5 15.38M13.5 15.38V12.26C14.12 11.59 14.95 11 15.5 11C16.09 11 16.5 11.07 16.5 12C16.5 12.15 16.4 13.3 13.5 15.38Z"; +var mdiMusicAccidentalDoubleSharp = "M15.41 10H17V7H14V8.59L12 10.59L10 8.59V7H7V10H8.59L10.59 12L8.59 14H7V17H10V15.41L12 13.41L14 15.41V17H17V14H15.41L13.41 12L15.41 10Z"; +var mdiMusicAccidentalFlat = "M8.5 19C13.36 16.26 15.5 13.91 15.5 12C15.5 10.59 14.79 9 12.5 9C11.8 9 11.11 9.28 10.5 9.67V5H8.5M10.5 15.38V12.26C11.12 11.59 11.95 11 12.5 11C13.09 11 13.5 11.07 13.5 12C13.5 12.15 13.4 13.3 10.5 15.38Z"; +var mdiMusicAccidentalNatural = "M10 8.75V3.5H8V17.5L14 15.25V20.5H16V6.5L10 8.75M14 13.25L10 14.75V10.75L14 9.25V13.25Z"; +var mdiMusicAccidentalSharp = "M17 9.5V7.5L15 8.1V5.5H13V8.7L11 9.3V6.5H9V9.9L7 10.5V12.5L9 11.9V13.9L7 14.5V16.5L9 15.9V18.5H11V15.3L13 14.7V17.5H15V14.1L17 13.5V11.5L15 12.1V10.1L17 9.5M13 12.7L11 13.3V11.3L13 10.7V12.7Z"; +var mdiMusicBox = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiMusicBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z"; +var mdiMusicBoxMultipleOutline = "M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H8V4H20M12.5,15A2.5,2.5 0 0,0 15,12.5V7H18V5H14V10.5C13.58,10.19 13.07,10 12.5,10A2.5,2.5 0 0,0 10,12.5A2.5,2.5 0 0,0 12.5,15M4,6H2V20A2,2 0 0,0 4,22H18V20H4"; +var mdiMusicBoxOutline = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z"; +var mdiMusicCircle = "M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiMusicCircleOutline = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiMusicClefAlto = "M5 4H7V20H5M15.46 13H14.83L13.83 12L14.83 11H15.46A3.5 3.5 0 1 0 11.96 7.5H13.96A1.5 1.5 0 1 1 15.46 9H14L12 11H11V4H9V20H11V13H12L14 15H15.46A1.5 1.5 0 1 1 13.96 16.5H11.96A3.5 3.5 0 1 0 15.46 13Z"; +var mdiMusicClefBass = "M18.5 5A1.5 1.5 0 1 1 17 6.5A1.5 1.5 0 0 1 18.5 5M18.5 11A1.5 1.5 0 1 1 17 12.5A1.5 1.5 0 0 1 18.5 11M10 4A5 5 0 0 0 5 9V10A2 2 0 1 0 7.18 8A3 3 0 0 1 10 6A4 4 0 0 1 14 10C14 13.59 11.77 16.19 7 18.2L7.76 20.04C13.31 17.72 16 14.43 16 10A6 6 0 0 0 10 4Z"; +var mdiMusicClefTreble = "M13 11V7.5L15.2 5.29C16 4.5 16.15 3.24 15.59 2.26C15.14 1.47 14.32 1 13.45 1C13.24 1 13 1.03 12.81 1.09C11.73 1.38 11 2.38 11 3.5V6.74L7.86 9.91C6.2 11.6 5.7 14.13 6.61 16.34C7.38 18.24 9.06 19.55 11 19.89V20.5C11 20.76 10.77 21 10.5 21H9V23H10.5C11.85 23 13 21.89 13 20.5V20C15.03 20 17.16 18.08 17.16 15.25C17.16 12.95 15.24 11 13 11M13 3.5C13 3.27 13.11 3.09 13.32 3.03C13.54 2.97 13.77 3.06 13.88 3.26C14 3.46 13.96 3.71 13.8 3.87L13 4.73V3.5M11 11.5C10.03 12.14 9.3 13.24 9.04 14.26L11 14.78V17.83C9.87 17.53 8.9 16.71 8.43 15.57C7.84 14.11 8.16 12.45 9.26 11.33L11 9.5V11.5M13 18V12.94C14.17 12.94 15.18 14.04 15.18 15.25C15.18 17 13.91 18 13 18Z"; +var mdiMusicNote = "M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z"; +var mdiMusicNoteBluetooth = "M22 9.85L19.14 7H18.64V10.79L16.35 8.5L15.64 9.21L18.43 12L15.64 14.79L16.35 15.5L18.64 13.21V17H19.14L22 14.15L19.85 12L22 9.85M19.64 8.91L20.58 9.85L19.64 10.79V8.91M20.58 14.15L19.64 15.09V13.21L20.58 14.15M9.64 3V13.55C9.05 13.21 8.37 13 7.64 13C5.43 13 3.64 14.79 3.64 17S5.43 21 7.64 21 11.64 19.21 11.64 17V7H15.64V3H9.64Z"; +var mdiMusicNoteBluetoothOff = "M22 9.85L19.14 7H18.64V10.79L16.35 8.5L15.64 9.21L18.43 12L15.64 14.79L16.35 15.5L18.64 13.21V17H19.14L22 14.15L19.85 12L22 9.85M19.64 8.91L20.58 9.85L19.64 10.79V8.91M20.58 14.15L19.64 15.09V13.21L20.58 14.15M1.96 3L.687 4.27L9.69 13.27V13.55C9.1 13.21 8.42 13 7.69 13C5.5 13 3.69 14.79 3.69 17S5.5 21 7.69 21 11.69 19.21 11.69 17V15.27L17.42 21L18.69 19.73L1.96 3M11.69 7H15.69V3H9.69V8.18L11.69 10.18V7Z"; +var mdiMusicNoteEighth = "M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z"; +var mdiMusicNoteEighthDotted = "M12 3V13.55A4 4 0 1 0 14 17V7H18V3M16.5 20A1.5 1.5 0 1 1 18 18.5A1.5 1.5 0 0 1 16.5 20Z"; +var mdiMusicNoteHalf = "M16 3H14V13.56A3.96 3.96 0 0 0 12 13A4 4 0 1 0 16 17V3M12 19A2 2 0 1 1 14 17A2 2 0 0 1 12 19Z"; +var mdiMusicNoteHalfDotted = "M14 3H12V13.56A3.96 3.96 0 0 0 10 13A4 4 0 1 0 14 17V3M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19M16.5 20A1.5 1.5 0 1 1 18 18.5A1.5 1.5 0 0 1 16.5 20Z"; +var mdiMusicNoteOff = "M4.27 3L3 4.27L12 13.27V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V15.27L19.73 21L21 19.73L4.27 3M14 7H18V3H12V8.18L14 10.18Z"; +var mdiMusicNoteOffOutline = "M14 7H18V3H12V7.61L14 9.61M12 10.44L4.41 2.86L3 4.27L12 13.27V13.55A3.94 3.94 0 0 0 8.67 13.23A4 4 0 0 0 10.65 20.95A4.1 4.1 0 0 0 14 16.85V15.27L19.73 21L21.14 19.59M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19Z"; +var mdiMusicNoteOutline = "M12 3V13.55A4 4 0 1 0 14 17V7H18V3M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19Z"; +var mdiMusicNotePlus = "M17 9V12H14V14H17V17H19V14H22V12H19V9H17M9 3V13.55C8.41 13.21 7.73 13 7 13C4.79 13 3 14.79 3 17S4.79 21 7 21 11 19.21 11 17V7H15V3H9Z"; +var mdiMusicNoteQuarter = "M14 3V13.56C13.41 13.21 12.73 13 12 13C9.79 13 8 14.79 8 17S9.79 21 12 21 16 19.21 16 17V3H14Z"; +var mdiMusicNoteQuarterDotted = "M12 13V13.56A3.96 3.96 0 0 0 10 13A4 4 0 1 0 14 17V3H12M16.5 17A1.5 1.5 0 1 1 15 18.5A1.5 1.5 0 0 1 16.5 17Z"; +var mdiMusicNoteSixteenth = "M18 7V3H12V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V11H18V8H14V7H18Z"; +var mdiMusicNoteSixteenthDotted = "M18 18.5A1.5 1.5 0 1 1 16.5 17A1.5 1.5 0 0 1 18 18.5M18 7V3H12V13.55A4 4 0 1 0 14 17V11H18V8H14V7Z"; +var mdiMusicNoteWhole = "M12 15A2 2 0 1 1 10 17A2 2 0 0 1 12 15M12 13A4 4 0 1 0 16 17A4 4 0 0 0 12 13Z"; +var mdiMusicNoteWholeDotted = "M10 15A2 2 0 1 1 8 17A2 2 0 0 1 10 15M10 13A4 4 0 1 0 14 17A4 4 0 0 0 10 13M16.5 17A1.5 1.5 0 1 1 15 18.5A1.5 1.5 0 0 1 16.5 17Z"; +var mdiMusicOff = "M2,5.27L3.28,4L20,20.72L18.73,22L9,12.27V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V10.27L2,5.27M21,3V15.5C21,16.5 20.57,17.42 19.88,18.06L14.94,13.12C15.58,12.43 16.5,12 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L10.17,8.35L7.66,5.84L21,3Z"; +var mdiMusicRestEighth = "M14 6A5.56 5.56 0 0 1 10.95 7.86A1.5 1.5 0 1 0 9.5 9H9.74A6.32 6.32 0 0 0 13.25 7.93L10 18H12L16 6Z"; +var mdiMusicRestHalf = "M6 14H8V10H16V14H18V15H6V14Z"; +var mdiMusicRestQuarter = "M11.71 16.81C10.91 17.6 10.88 18.84 11.64 19.58L10.19 21C8.66 19.5 8.72 17.03 10.32 15.46C10.85 14.94 11.5 14.61 12.16 14.42L9 11.34L10.45 9.92L10.82 9.57C11.82 8.59 11.85 7.04 10.9 6.11L9.16 4.42L10.62 3L14.78 7.06C15.54 7.81 15.5 9.05 14.71 9.83L12.53 11.95L16 15.33L15.61 15.72C15.11 16.21 14.38 16.46 13.72 16.28C13.04 16.1 12.26 16.28 11.71 16.81Z"; +var mdiMusicRestSixteenth = "M15 3A5.56 5.56 0 0 1 11.95 4.86A1.5 1.5 0 1 0 10.5 6H10.74A6.32 6.32 0 0 0 14.25 4.93L12.9 9.1A5.56 5.56 0 0 1 9.95 10.86A1.5 1.5 0 1 0 8.5 12H8.74A6.32 6.32 0 0 0 12.25 10.93L9 21H11L17 3Z"; +var mdiMusicRestWhole = "M18 10H16V14H8V10H6V9H18V10Z"; +var mdiMustache = "M21 12C19 12 18 9 15 9S12 11 12 11 12 9 9 9 5 12 3 12C2 12 1 11 1 11S2 16 6 16C11 16 12 13 12 13S13 16 18 16C22 16 23 11 23 11S22 12 21 12Z"; +var mdiNail = "M13.5,5V16L12,22L10.5,16V5H13.5M17,2H7V4H17V2Z"; +var mdiNas = "M4,5C2.89,5 2,5.89 2,7V17C2,18.11 2.89,19 4,19H20C21.11,19 22,18.11 22,17V7C22,5.89 21.11,5 20,5H4M4.5,7A1,1 0 0,1 5.5,8A1,1 0 0,1 4.5,9A1,1 0 0,1 3.5,8A1,1 0 0,1 4.5,7M7,7H20V17H7V7M8,8V16H11V8H8M12,8V16H15V8H12M16,8V16H19V8H16M9,9H10V10H9V9M13,9H14V10H13V9M17,9H18V10H17V9Z"; +var mdiNativescript = "M7.5,3H16.5C19,3 21,5 21,7.5V16.5C21,19 19,21 16.5,21H7.5C5,21 3,19 3,16.5V7.5C3,5 5,3 7.5,3M6,13.5V16.5A1.5,1.5 0 0,0 7.5,18H9V10.5L15,18H16.5A1.5,1.5 0 0,0 18,16.5V13.5A1.5,1.5 0 0,1 19.5,12A1.5,1.5 0 0,1 18,10.5V7.5A1.5,1.5 0 0,0 16.5,6H15V13.5L9,6H7.5A1.5,1.5 0 0,0 6,7.5V10.5A1.5,1.5 0 0,1 4.5,12A1.5,1.5 0 0,1 6,13.5Z"; +var mdiNature = "M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z"; +var mdiNaturePeople = "M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z"; +var mdiNavigation = "M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z"; +var mdiNavigationOutline = "M12 7.3L16.3 17.7L12.8 16.2L12 15.8L11.2 16.2L7.7 17.7L12 7.3M12 2L4.5 20.3L5.2 21L12 18L18.8 21L19.5 20.3L12 2Z"; +var mdiNearMe = "M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z"; +var mdiNecklace = "M21.5 5H19.5C19.5 9.14 16.14 12.5 12 12.5C7.86 12.5 4.5 9.14 4.5 5H2.5C2.55 10.11 6.59 14.29 11.7 14.5C11.1 15.4 10 17.2 10 18C10 20.67 14 20.67 14 18C14 17.2 12.9 15.4 12.3 14.5C17.41 14.29 21.45 10.11 21.5 5Z"; +var mdiNeedle = "M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z"; +var mdiNetflix = "M6.5,2H10.5L13.44,10.83L13.5,2H17.5V22C16.25,21.78 14.87,21.64 13.41,21.58L10.5,13L10.43,21.59C9.03,21.65 7.7,21.79 6.5,22V2Z"; +var mdiNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; +var mdiNetworkOff = "M1,5.27L5,9.27V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H17.73L19.73,24L21,22.72L2.28,4L1,5.27M15,20A1,1 0 0,0 14,19H13V17.27L15.73,20H15M17.69,16.87L5.13,4.31C5.41,3.55 6.14,3 7,3H17A2,2 0 0,1 19,5V15C19,15.86 18.45,16.59 17.69,16.87M22,20V21.18L20.82,20H22Z"; +var mdiNetworkOffOutline = "M1.04,5.27L5,9.23V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H17.77L19.77,24L21.04,22.72L2.32,4L1.04,5.27M7,11.23L10.77,15H7V11.23M15,20A1,1 0 0,0 14,19H13V17.23L15.77,20H15M22,20V21.14L20.86,20H22M7,6.14L5.14,4.28C5.43,3.53 6.16,3 7,3H17A2,2 0 0,1 19,5V15C19,15.85 18.47,16.57 17.72,16.86L15.86,15H17V5H7V6.14Z"; +var mdiNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z"; +var mdiNetworkStrength1 = "M1,21H21V1M19,5.83V19H11V13.83"; +var mdiNetworkStrength1Alert = "M21 1L1 21H17V19H11V13.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19"; +var mdiNetworkStrength2 = "M1,21H21V1M19,5.83V19H13V11.83"; +var mdiNetworkStrength2Alert = "M21 1L1 21H17V19H13V11.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19"; +var mdiNetworkStrength3 = "M1,21H21V1M19,5.83V19H16V8.83"; +var mdiNetworkStrength3Alert = "M21 1L1 21H17V19H16V8.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19"; +var mdiNetworkStrength4 = "M1,21H21V1"; +var mdiNetworkStrength4Alert = "M19 17H21V11H19M19 21H21V19H19M1 21H17V9H21V1"; +var mdiNetworkStrengthOff = "M21,1L12.4,9.6L21,18.19M4.77,4.5L3.5,5.77L9.86,12.13L1,21H18.73L20.73,23L22,21.73"; +var mdiNetworkStrengthOffOutline = "M21,1L12.4,9.6L13.85,11.05L19,5.83V16.19L21,18.19M4.77,4.5L3.5,5.77L9.86,12.13L1,21H18.73L20.73,23L22,21.73M11.33,13.6L16.73,19H6"; +var mdiNetworkStrengthOutline = "M1,21H21V1M19,5.83V19H6"; +var mdiNewBox = "M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z"; +var mdiNewspaper = "M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z"; +var mdiNewspaperMinus = "M22,17V19H14V17H22M20,11V8H4V11H20M13,13V14.68C12.37,15.63 12,16.77 12,18C12,19.09 12.29,20.12 12.8,21H4A2,2 0 0,1 2,19V3L3.67,4.67L5.33,3L7,4.67L8.67,3L10.33,4.67L12,3L13.67,4.67L15.33,3L17,4.67L18.67,3L20.33,4.67L22,3V13.5C20.93,12.58 19.53,12 18,12C16.77,12 15.63,12.37 14.68,13H13M11,19V13H4V19H11Z"; +var mdiNewspaperPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M20,11V8H4V11H20M13,13V14.68C12.37,15.63 12,16.77 12,18C12,19.09 12.29,20.12 12.8,21H4A2,2 0 0,1 2,19V3L3.67,4.67L5.33,3L7,4.67L8.67,3L10.33,4.67L12,3L13.67,4.67L15.33,3L17,4.67L18.67,3L20.33,4.67L22,3V13.5C20.93,12.58 19.53,12 18,12C16.77,12 15.63,12.37 14.68,13H13M11,19V13H4V19H11Z"; +var mdiNewspaperVariant = "M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M5 7H10V13H5V7M19 17H5V15H19V17M19 13H12V11H19V13M19 9H12V7H19V9Z"; +var mdiNewspaperVariantMultiple = "M4 7V19H19V21H4C2 21 2 19 2 19V7H4M21.3 3H7.7C6.76 3 6 3.7 6 4.55V15.45C6 16.31 6.76 17 7.7 17H21.3C22.24 17 23 16.31 23 15.45V4.55C23 3.7 22.24 3 21.3 3M8 5H13V11H8V5M21 15H8V13H21V15M21 11H15V9H21V11M21 7H15V5H21V7Z"; +var mdiNewspaperVariantMultipleOutline = "M4 7V19H19V21H4C2 21 2 19 2 19V7H4M21 5V15H8V5H21M21.3 3H7.7C6.76 3 6 3.7 6 4.55V15.45C6 16.31 6.76 17 7.7 17H21.3C22.24 17 23 16.31 23 15.45V4.55C23 3.7 22.24 3 21.3 3M9 6H12V11H9V6M20 14H9V12H20V14M20 8H14V6H20V8M20 11H14V9H20V11Z"; +var mdiNewspaperVariantOutline = "M20 5L20 19L4 19L4 5H20M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M18 15H6V17H18V15M10 7H6V13H10V7M12 9H18V7H12V9M18 11H12V13H18V11Z"; +var mdiNfc = "M7.24 2C5.6 2 3.96 2 3.55 2.04C2.67 2.09 2.08 2.73 2.04 3.56C2 4.37 2 19.59 2.04 20.41C2.09 21.23 2.71 21.86 3.55 21.91C4.46 21.96 7.44 21.97 8.29 21.97C6.76 20.91 6.55 18.92 6.41 15.23C6.33 13.04 6.4 5.36 6.41 5.04L6.45 2.94L14.5 11V13.5L8.09 7.11C8.08 8.38 8.06 10.03 8.06 11.54C8.06 13 8.08 14.34 8.12 15.05C8.36 19.07 8.74 20.96 10.83 21.7C11.5 21.93 12.07 22 13.07 22C13.89 22 19.63 22 20.45 21.96C21.33 21.91 21.93 21.27 21.97 20.44C22 19.63 22 4.45 21.97 3.62C21.91 2.8 21.29 2.18 20.45 2.13C19.54 2.08 16.57 2.03 15.71 2.03C17.24 3.09 17.44 5.08 17.59 8.78C17.67 10.97 17.6 18.64 17.59 18.97L17.55 21.06L9.53 13V10.5L15.91 16.89C15.92 15.62 15.94 13.97 15.94 12.46C15.94 11 15.92 9.66 15.88 8.96C15.64 4.93 15.26 3.04 13.17 2.3C12.53 2.07 11.93 2 10.93 2H7.24Z"; +var mdiNfcSearchVariant = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.76,18.21 20.32,18.9L23.4,22L22,23.39L18.89,20.32C18.2,20.75 17.38,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19C17.89,19 19,17.88 19,16.5A2.5,2.5 0 0,0 16.5,14M18,6V10.18C17.33,10 16.66,9.97 16,10V8H13V10.28L13.53,10.72C12.34,11.33 11.35,12.3 10.72,13.53C10.28,13.17 10,12.62 10,12C10,11.26 10.41,10.62 11,10.28V8A2,2 0 0,1 13,6H18M6,18V6H8L10,6V8H8V16H10C9.96,16.68 10,17.35 10.17,18H6M20,4H4V20H11C11.53,20.8 12.21,21.5 13.03,22H4C2.89,22 2,21.1 2,20V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V13.04C21.5,12.24 20.82,11.54 20,11V4Z"; +var mdiNfcTap = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z"; +var mdiNfcVariant = "M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z"; +var mdiNfcVariantOff = "M1.25,2.05L21.95,22.75L20.7,24L18.7,22H4A2,2 0 0,1 2,20V5.3L0,3.3L1.25,2.05M3.81,2C3.87,2 3.94,2 4,2H20C21.11,2 22,2.89 22,4V20C22,20.06 22,20.13 22,20.19L20,18.2V4H5.8L3.81,2M6,9.3L4,7.3V20H16.7L14.7,18H6V9.3M18,16.2L16,14.2V8H13V10.28C13.6,10.62 14,11.26 14,12C14,12.06 14,12.13 14,12.19L11,9.2V8A2,2 0 0,1 13,6H18V16.2M8,16H12.7L8,11.3V16M10,8H9.8L7.8,6H10V8Z"; +var mdiNinja = "M7.75,13C7.74,12.65 7.9,12.31 8.17,12.08C8.92,12.24 9.62,12.55 10.25,13C10.25,13.68 9.69,14.24 9,14.24C8.31,14.24 7.76,13.69 7.75,13M13.75,13C14.38,12.56 15.08,12.25 15.83,12.09C16.1,12.32 16.26,12.66 16.25,13C16.25,13.7 15.69,14.26 15,14.26C14.31,14.26 13.75,13.7 13.75,13V13M12,9C9.23,8.96 6.5,9.65 4.07,11L4,12C4,13.23 4.29,14.44 4.84,15.54C7.21,15.18 9.6,15 12,15C14.4,15 16.79,15.18 19.16,15.54C19.71,14.44 20,13.23 20,12L19.93,11C17.5,9.65 14.77,8.96 12,9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNintendoGameBoy = "M7 1C5.9 1 5 1.9 5 3V21C5 22.11 5.9 23 7 23H14C16.76 23 19 20.76 19 18V3C19 1.9 18.11 1 17 1H7M8 4H16V11H8V4M9 14H10V16H12V17H10V19H9V17H7V16H9V14M16 15C16.55 15 17 15.45 17 16C17 16.55 16.55 17 16 17C15.45 17 15 16.55 15 16C15 15.45 15.45 15 16 15M14 17C14.55 17 15 17.45 15 18C15 18.55 14.55 19 14 19C13.45 19 13 18.55 13 18C13 17.45 13.45 17 14 17Z"; +var mdiNintendoSwitch = "M10.04,20.4H7.12C6.19,20.4 5.3,20 4.64,19.36C4,18.7 3.6,17.81 3.6,16.88V7.12C3.6,6.19 4,5.3 4.64,4.64C5.3,4 6.19,3.62 7.12,3.62H10.04V20.4M7.12,2A5.12,5.12 0 0,0 2,7.12V16.88C2,19.71 4.29,22 7.12,22H11.65V2H7.12M5.11,8C5.11,9.04 5.95,9.88 7,9.88C8.03,9.88 8.87,9.04 8.87,8C8.87,6.96 8.03,6.12 7,6.12C5.95,6.12 5.11,6.96 5.11,8M17.61,11C18.72,11 19.62,11.89 19.62,13C19.62,14.12 18.72,15 17.61,15C16.5,15 15.58,14.12 15.58,13C15.58,11.89 16.5,11 17.61,11M16.88,22A5.12,5.12 0 0,0 22,16.88V7.12C22,4.29 19.71,2 16.88,2H13.65V22H16.88Z"; +var mdiNintendoWii = "M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z"; +var mdiNintendoWiiu = "M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z"; +var mdiNix = "M9.9 8.7L5 17.2L3.9 15.3L5.2 13H2.6L2 12L2.6 11H6.3L7.6 8.7H9.9M10.2 15.5H19.9L18.8 17.4H16.2L17.5 19.7L16.9 20.7H15.8L14 17.4H11.3L10.2 15.5M15.9 11.8L11 3.3H13.2L14.5 5.6L15.8 3.3H16.9L17.5 4.3L15.6 7.5L17 9.8L15.9 11.8M13.8 8.5H4L5.1 6.6H7.7L6.4 4.3L7 3.3H8.1L10 6.5H12.7L13.8 8.5M14.1 15.3L19 6.8L20.1 8.7L18.8 11H21.4L22 12L21.4 13H17.7L16.4 15.3H14.1M8.1 12.2L13 20.6H10.8L9.5 18.3L8.4 20.6H7.1L6.5 19.6L8.4 16.4L7 14.2L8.1 12.2Z"; +var mdiNodejs = "M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z"; +var mdiNoodles = "M22 3L10 4.41V6H22V7H10V12H22C22 13.81 21.43 15.46 20.32 16.95S17.77 19.53 16 20.25V22H8V20.25C6.24 19.53 4.79 18.43 3.68 16.95S2 13.81 2 12H5V4L22 2V3M6 4.88V6H7V4.78L6 4.88M6 7V12H7V7H6M9 12V7H8V12H9M9 6V4.55L8 4.64V6H9Z"; +var mdiNotEqual = "M21,10H9V8H21V10M21,16H9V14H21V16M4,5H6V16H4V5M6,18V20H4V18H6Z"; +var mdiNotEqualVariant = "M14.08,4.61L15.92,5.4L14.8,8H19V10H13.95L12.23,14H19V16H11.38L9.92,19.4L8.08,18.61L9.2,16H5V14H10.06L11.77,10H5V8H12.63L14.08,4.61Z"; +var mdiNote = "M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z"; +var mdiNoteMinus = "M15 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V9L15 3M14 15H6V13H14V15M14 10V4.5L19.5 10H14Z"; +var mdiNoteMinusOutline = "M16 3H4C2.89 3 2 3.89 2 5V19C2 20.1 2.89 21 4 21H20C21.11 21 22 20.11 22 19V9L16 3M20 19H4V5H13V12H20V19M15 10V4.5L20.5 10H15M6 13H12V15H6V13Z"; +var mdiNoteMultiple = "M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z"; +var mdiNoteMultipleOutline = "M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z"; +var mdiNoteOutline = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z"; +var mdiNotePlus = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z"; +var mdiNotePlusOutline = "M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z"; +var mdiNoteRemove = "M15 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V9L15 3M13.54 16.12L12.12 17.54L10 15.41L7.88 17.54L6.47 16.12L8.59 14L6.47 11.88L7.88 10.47L10 12.59L12.12 10.47L13.54 11.88L11.41 14L13.54 16.12M14 10V4.5L19.5 10H14Z"; +var mdiNoteRemoveOutline = "M16 3H4C2.89 3 2 3.89 2 5V19C2 20.1 2.89 21 4 21H20C21.11 21 22 20.11 22 19V9L16 3M20 19H4V5H13V12H20V19M15 10V4.5L20.5 10H15M11.83 12.59L10.41 14L11.83 15.41L10.41 16.83L9 15.41L7.59 16.83L6.17 15.41L7.59 14L6.17 12.59L7.59 11.17L9 12.59L10.41 11.17L11.83 12.59Z"; +var mdiNoteSearch = "M15 3H5C3.89 3 3 3.89 3 5V10.82C5.55 8.37 9.59 8.4 12.1 10.9C14.63 13.44 14.63 17.56 12.1 20.1C11.74 20.45 11.35 20.74 10.94 21H19C20.11 21 21 20.11 21 19V9L15 3M14 10V4.5L19.5 10H14M7.5 11C5 11 3 13 3 15.5C3 16.38 3.25 17.21 3.69 17.9L.61 21L2 22.39L5.12 19.32C5.81 19.75 6.63 20 7.5 20C10 20 12 18 12 15.5S10 11 7.5 11M7.5 18C6.12 18 5 16.88 5 15.5S6.12 13 7.5 13 10 14.12 10 15.5 8.88 18 7.5 18Z"; +var mdiNoteSearchOutline = "M15 3H5C3.89 3 3 3.89 3 5V10.82C3.6 10.24 4.28 9.8 5 9.5V5H12V10.82C12.03 10.85 12.07 10.87 12.1 10.9C12.44 11.24 12.73 11.61 12.97 12H19V19H12.97C12.73 19.39 12.44 19.76 12.1 20.1C11.74 20.45 11.35 20.74 10.94 21H19C20.11 21 21 20.11 21 19V9L15 3M14 10V4.5L19.5 10H14M7.5 11C5 11 3 13 3 15.5C3 16.38 3.25 17.21 3.69 17.9L.61 21L2 22.39L5.12 19.32C5.81 19.75 6.63 20 7.5 20C10 20 12 18 12 15.5S10 11 7.5 11M7.5 18C6.12 18 5 16.88 5 15.5S6.12 13 7.5 13 10 14.12 10 15.5 8.88 18 7.5 18Z"; +var mdiNoteText = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z"; +var mdiNoteTextOutline = "M15 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V9L15 3M19 19H5V5H14V10H19M17 14H7V12H17M14 17H7V15H14"; +var mdiNotebook = "M3,7V5H5V4C5,2.89 5.9,2 7,2H13V9L15.5,7.5L18,9V2H19C20.05,2 21,2.95 21,4V20C21,21.05 20.05,22 19,22H7C5.95,22 5,21.05 5,20V19H3V17H5V13H3V11H5V7H3M7,11H5V13H7V11M7,7V5H5V7H7M7,19V17H5V19H7Z"; +var mdiNotebookCheck = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M3 7V5H5V4C5 2.89 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20.05 2 21 2.95 21 4V13.8C20.12 13.29 19.09 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13Z"; +var mdiNotebookCheckOutline = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M17 4V10L15 8L13 10V4H9V20H12.08C12.2 20.72 12.45 21.39 12.8 22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.89 5.9 2 7 2H19C20.05 2 21 2.95 21 4V13.8C20.39 13.45 19.72 13.2 19 13.08V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7Z"; +var mdiNotebookEdit = "M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M3 7V5H5V4C5 2.89 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20.05 2 21 2.95 21 4V10L11 20V22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3M5 7H7V5H5V7M5 11V13H7V11H5M5 17V19H7V17H5Z"; +var mdiNotebookEditOutline = "M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M17 4V10L15 8L13 10V4H9V20H11V22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.89 5.9 2 7 2H19C20.05 2 21 2.95 21 4V10L19 12V4H17M5 5V7H7V5H5M5 11V13H7V11H5M5 17V19H7V17H5Z"; +var mdiNotebookMinus = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M14 18V20H22V18H14Z"; +var mdiNotebookMinusOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M14 18V20H22V18H14Z"; +var mdiNotebookMultiple = "M9.05,9H7.06V6H9.05V4.03H7.06V3.03C7.06,1.92 7.95,1.04 9.05,1.04H15.03V8L17.5,6.5L20,8V1.04H21C22.05,1.04 23,2 23,3.03V17C23,18.03 22.05,19 21,19H9.05C8,19 7.06,18.05 7.06,17V16H9.05V14H7.06V11H9.05V9M1,18H3V15H1V13H3V10H1V8H3V5H5V8H3V10H5V13H3V15H5V18H3V20H5V21H21V23H5A2,2 0 0,1 3,21V20H1V18Z"; +var mdiNotebookOutline = "M17,4V10L15,8L13,10V4H9V20H19V4H17M3,7V5H5V4C5,2.89 5.9,2 7,2H19C20.05,2 21,2.95 21,4V20C21,21.05 20.05,22 19,22H7C5.95,22 5,21.05 5,20V19H3V17H5V13H3V11H5V7H3M5,5V7H7V5H5M5,19H7V17H5V19M5,13H7V11H5V13Z"; +var mdiNotebookPlus = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M17 15V18H14V20H17V23H19V20H22V18H19V15H17Z"; +var mdiNotebookPlusOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M17 15V18H14V20H17V23H19V20H22V18H19V15H17Z"; +var mdiNotebookRemove = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M20.1 15.5L18 17.6L15.9 15.5L14.5 16.9L16.6 19L14.5 21.1L15.9 22.5L18 20.4L20.1 22.5L21.5 21.1L19.4 19L21.5 16.9L20.1 15.5Z"; +var mdiNotebookRemoveOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M20.1 15.5L18 17.6L15.9 15.5L14.5 16.9L16.6 19L14.5 21.1L15.9 22.5L18 20.4L20.1 22.5L21.5 21.1L19.4 19L21.5 16.9L20.1 15.5Z"; +var mdiNotificationClearAll = "M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7"; +var mdiNpm = "M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z"; +var mdiNuke = "M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z"; +var mdiNull = "M12,2C13.85,2 15.55,2.78 16.9,4.1L18.6,1.93L20.18,3.16L18.2,5.68C19.33,7.41 20,9.6 20,12C20,17.5 16.42,22 12,22C10.15,22 8.45,21.22 7.1,19.9L5.4,22.07L3.82,20.84L5.8,18.32C4.67,16.59 4,14.4 4,12C4,6.5 7.58,2 12,2M12,4C8.69,4 6,7.58 6,12C6,13.73 6.41,15.33 7.11,16.64L15.67,5.67C14.66,4.62 13.38,4 12,4M12,20C15.31,20 18,16.42 18,12C18,10.27 17.59,8.67 16.89,7.36L8.33,18.33C9.34,19.38 10.62,20 12,20Z"; +var mdiNumeric = "M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z"; +var mdiNumeric0 = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; +var mdiNumeric0Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; +var mdiNumeric0BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M13,5A2,2 0 0,0 11,7V13A2,2 0 0,0 13,15H15A2,2 0 0,0 17,13V7A2,2 0 0,0 15,5H13M13,7H15V13H13V7Z"; +var mdiNumeric0BoxMultipleOutline = "M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z"; +var mdiNumeric0BoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; +var mdiNumeric0Circle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric0CircleOutline = "M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric1 = "M10,7V9H12V17H14V7H10Z"; +var mdiNumeric1Box = "M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric1BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M14,15H16V5H12V7H14V15Z"; +var mdiNumeric1BoxMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric1BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12"; +var mdiNumeric1Circle = "M10,7V9H12V17H14V7H10M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric1CircleOutline = "M10,7H14V17H12V9H10V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric10 = "M10 7H6V9H8V17H10V7M16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7M16 15H14V9H16V15Z"; +var mdiNumeric10Box = "M14,9H16V15H14V9M21,5V19C21,20.11 20.11,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5M10,7H6V9H8V17H10V7M18,9A2,2 0 0,0 16,7H14A2,2 0 0,0 12,9V15C12,16.11 12.9,17 14,17H16C17.11,17 18,16.11 18,15V9Z"; +var mdiNumeric10BoxMultiple = "M3 5V21H19V23H3C1.9 23 1 22.11 1 21V5H3M16 13H18V7H16V13M21 1H7C5.9 1 5 1.9 5 3V17C5 18.11 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.9 22.11 1 21 1M12 15H10V7H8V5H12V15M20 13C20 14.11 19.11 15 18 15H16C14.9 15 14 14.11 14 13V7C14 5.9 14.9 5 16 5H18C19.11 5 20 5.9 20 7V13Z"; +var mdiNumeric10BoxMultipleOutline = "M21 17V3H7V17H21M21 1C22.11 1 23 1.9 23 3V17C23 18.11 22.11 19 21 19H7C5.9 19 5 18.11 5 17V3C5 1.9 5.9 1 7 1H21M3 5V21H19V23H3C1.9 23 1 22.11 1 21V5H3M12 5H8V7H10V15H12V5M18 5H16C14.9 5 14 5.9 14 7V13C14 14.11 14.9 15 16 15H18C19.11 15 20 14.11 20 13V7C20 5.9 19.11 5 18 5M18 13H16V7H18V13Z"; +var mdiNumeric10BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M8,17H10V7H6V9H8M14,7H16C17.11,7 18,7.9 18,9V15C18,16.11 17.11,17 16,17H14A2,2 0 0,1 12,15V9A2,2 0 0,1 14,7M14,9V15H16V9H14Z"; +var mdiNumeric10Circle = "M14 9H16V15H14V9M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12 6.5 2 12 2 22 6.5 22 12M10 7H6V9H8V17H10V7M18 9C18 7.9 17.11 7 16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9Z"; +var mdiNumeric10CircleOutline = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12S7.58 20 12 20 20 16.42 20 12 16.42 4 12 4M10 7H6V9H8V17H10V7M16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7M16 15H14V9H16V15Z"; +var mdiNumeric2 = "M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9Z"; +var mdiNumeric2Box = "M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric2BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17V13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; +var mdiNumeric2BoxMultipleOutline = "M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric2BoxOutline = "M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric2Circle = "M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric2CircleOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V15H15V17H11L9,17V13A2,2 0 0,1 11,11H13V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric3 = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15"; +var mdiNumeric3Box = "M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric3BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; +var mdiNumeric3BoxMultipleOutline = "M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z"; +var mdiNumeric3BoxOutline = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric3Circle = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric3CircleOutline = "M15,15A2,2 0 0,1 13,17H9V15H13V13H11V11H13V9H9V7H13A2,2 0 0,1 15,9V10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 15,13.5V15M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric4 = "M9,7V13H13V17H15V7H13V11H11V7H9Z"; +var mdiNumeric4Box = "M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric4BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M15,15H17V5H15V9H13V5H11V11H15V15Z"; +var mdiNumeric4BoxMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric4BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13"; +var mdiNumeric4Circle = "M9,7V13H13V17H15V7H13V11H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric4CircleOutline = "M9,7H11V11H13V7H15V17H13V13H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric5 = "M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9Z"; +var mdiNumeric5Box = "M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric5BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13Z"; +var mdiNumeric5BoxMultipleOutline = "M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z"; +var mdiNumeric5BoxOutline = "M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric5Circle = "M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric5CircleOutline = "M9,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric6 = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13Z"; +var mdiNumeric6Box = "M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z"; +var mdiNumeric6BoxMultiple = "M13,11H15V13H13V11M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15Z"; +var mdiNumeric6BoxMultipleOutline = "M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric6BoxOutline = "M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric6Circle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric6CircleOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,13V15H13V13H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric7 = "M11,17L15,9V7H9V9H13L9,17"; +var mdiNumeric7Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z"; +var mdiNumeric7BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,15L17,7V5H11V7H15L11,15H13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; +var mdiNumeric7BoxMultipleOutline = "M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric7BoxOutline = "M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric7Circle = "M11,17L15,9V7H9V9H13L9,17H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric7CircleOutline = "M11,17H9L13,9H9V7H15V9L11,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric8 = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17"; +var mdiNumeric8Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z"; +var mdiNumeric8BoxMultiple = "M13,11H15V13H13V11M13,7H15V9H13V7M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; +var mdiNumeric8BoxMultipleOutline = "M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric8BoxOutline = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric8Circle = "M11,13H13V15H11V13M11,9H13V11H11V9M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric8CircleOutline = "M11,13V15H13V13H11M11,9V11H13V9H11M11,17A2,2 0 0,1 9,15V13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,10.5V9A2,2 0 0,1 11,7H13A2,2 0 0,1 15,9V10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 15,13.5V15A2,2 0 0,1 13,17H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric9 = "M13,17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13M13,11H11V9H13V11Z"; +var mdiNumeric9Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z"; +var mdiNumeric9BoxMultiple = "M15,9H13V7H15V9M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; +var mdiNumeric9BoxMultipleOutline = "M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric9BoxOutline = "M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; +var mdiNumeric9Circle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13,17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13M13,11H11V9H13V11Z"; +var mdiNumeric9CircleOutline = "M13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17M13,11V9H11V11H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumeric9Plus = "M19 11H17V9H15V11H13V13H15V15H17V13H19V11M10 7H8C6.9 7 6 7.9 6 9V11C6 12.11 6.9 13 8 13H10V15H6V17H10C11.11 17 12 16.11 12 15V9C12 7.89 11.1 7 10 7M10 11H8V9H10V11Z"; +var mdiNumeric9PlusBox = "M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z"; +var mdiNumeric9PlusBoxMultiple = "M11,9V8H12V9H11M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M15,9V11H17V13H19V11H21V9H19V7H17V9H15M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12Z"; +var mdiNumeric9PlusBoxMultipleOutline = "M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; +var mdiNumeric9PlusBoxOutline = "M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z"; +var mdiNumeric9PlusCircle = "M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; +var mdiNumeric9PlusCircleOutline = "M19,11V13H17V15H15V13H13V11H15V9H17V11H19M10,7A2,2 0 0,1 12,9V15C12,16.11 11.1,17 10,17H6V15H10V13H8A2,2 0 0,1 6,11V9C6,7.89 6.9,7 8,7H10M8,9V11H10V9H8M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiNumericNegative1 = "M13 7V9H15V17H17V7H13M11 13H5V11H11V13Z"; +var mdiNumericPositive1 = "M13 7V9H15V17H17V7H13M11 13H9V15H7V13H5V11H7V9H9V11H11V13Z"; +var mdiNut = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z"; +var mdiNutrition = "M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z"; +var mdiNuxt = "M21.8 18.36L16.03 8.08C15.93 8 15.63 7.43 15.03 7.43C14.78 7.43 14.43 7.53 14.07 8.08L13.33 9.26L11.31 5.65C11.26 5.55 10.91 5 10.31 5C10.06 5 9.66 5.1 9.36 5.65L2.18 18.31C2.13 18.41 1.83 19 2.13 19.5C2.23 19.75 2.53 20 3.19 20H20.85C20.95 20 21.6 20 21.9 19.5C22 19.26 22.1 18.86 21.8 18.36M8.1 18.31L7.95 18.86H3.24L10.36 6.34L12.66 10.47L8.1 18.31M9.21 18.86L13.32 11.66L17.5 18.86H9.21M18.74 18.86L18.54 18.31L14 10.46L15.03 8.73L20.75 18.86H18.74Z"; +var mdiOar = "M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z"; +var mdiOcarina = "M20,12C16.8,10.4 13.4,9.7 10.8,9.3L9.7,5.9C9.3,4.8 7.7,4.8 7.3,5.9L6.3,9C3.9,9.4 2,11.5 2,14C2,16.8 4.2,19 7,19C7,19 14,19 20,16C20,16 22,15 22,14C22,13 20,12 20,12M5,14C4.4,14 4,13.6 4,13C4,12.4 4.4,12 5,12C5.6,12 6,12.4 6,13C6,13.5 5.6,14 5,14M7,17C6.4,17 6,16.6 6,16C6,15.4 6.4,15 7,15C7.6,15 8,15.4 8,16C8,16.5 7.6,17 7,17M9,14C8.4,14 8,13.6 8,13C8,12.4 8.4,12 9,12C9.6,12 10,12.4 10,13C10,13.5 9.6,14 9,14M11,17C10.4,17 10,16.6 10,16C10,15.4 10.4,15 11,15C11.6,15 12,15.4 12,16C12,16.5 11.6,17 11,17M16,14C15.4,14 15,13.6 15,13C15,12.4 15.4,12 16,12C16.6,12 17,12.4 17,13C17,13.5 16.6,14 16,14M19,15C18.4,15 18,14.6 18,14C18,13.4 18.4,13 19,13C19.6,13 20,13.4 20,14C20,14.5 19.6,15 19,15Z"; +var mdiOci = "M2 2V22H22V2M19.12 19.03H4.87V5H19.13V19.03M14.83 10.71H17.69V17.59H14.83M14.83 6.41H17.69V9.27H14.83M6.3 6.41V17.59H13.4V14.72H9.17V9.28H13.4V6.41Z"; +var mdiOcr = "M2 5V19H14V17H12C10.89 17 10 16.11 10 15V9C10 7.89 10.89 7 12 7H14V5M14 7V9H16V7M14 9H12V15H14M14 15V17H16V15M5 7H7C8.11 7 9 7.89 9 9V15C9 16.11 8.11 17 7 17H5C3.89 17 3 16.11 3 15V9C3 7.89 3.89 7 5 7M17 7V17H19V13H20V14H21V17H23V14H22V12H23V8H22V7M5 9V15H7V9M19 9H21V11H19Z"; +var mdiOctagon = "M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27"; +var mdiOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1"; +var mdiOctagram = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06Z"; +var mdiOctagramOutline = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M4.81,9L6.05,12L4.81,15L7.79,16.21L9,19.19L12,17.95L15,19.19L16.21,16.21L19.19,15L17.95,12L19.19,9L16.21,7.79L15,4.81L12,6.05L9,4.81L7.79,7.79L4.81,9Z"; +var mdiOdnoklassniki = "M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z"; +var mdiOffer = "M21 13C21.6 13 22.1 13.2 22.4 13.6C22.8 14 23 14.5 23 15L15 18L8 16V7H9.9L17.2 9.7C17.7 9.9 18 10.3 18 10.8C18 11.1 17.9 11.4 17.7 11.6C17.5 11.8 17.2 12 16.8 12H14L12.3 11.3L12 12.2L14 13H21M2 7H6V18H2V7Z"; +var mdiOfficeBuilding = "M5,3V21H11V17.5H13V21H19V3H5M7,5H9V7H7V5M11,5H13V7H11V5M15,5H17V7H15V5M7,9H9V11H7V9M11,9H13V11H11V9M15,9H17V11H15V9M7,13H9V15H7V13M11,13H13V15H11V13M15,13H17V15H15V13M7,17H9V19H7V17M15,17H17V19H15V17Z"; +var mdiOfficeBuildingMarker = "M15.19 21C14.12 19.43 13 17.36 13 15.5C13 13.67 13.96 12 15.4 11H15V9H17V10.23C17.5 10.09 18 10 18.5 10C18.67 10 18.84 10 19 10.03V3H5V21H11V17.5H13V21H15.19M15 5H17V7H15V5M9 19H7V17H9V19M9 15H7V13H9V15M9 11H7V9H9V11M9 7H7V5H9V7M11 5H13V7H11V5M11 9H13V11H11V9M11 15V13H13V15H11M18.5 12C16.6 12 15 13.61 15 15.5C15 18.11 18.5 22 18.5 22S22 18.11 22 15.5C22 13.61 20.4 12 18.5 12M18.5 16.81C17.8 16.81 17.3 16.21 17.3 15.61C17.3 14.91 17.9 14.41 18.5 14.41S19.7 15 19.7 15.61C19.8 16.21 19.2 16.81 18.5 16.81Z"; +var mdiOfficeBuildingMarkerOutline = "M15 9H17V11H15V9M17 5H15V7H17V5M11 15H13V13H11V15M13 5H11V7H13V5M11 11H13V9H11V11M9 5H7V7H9V5M9 9H7V11H9V9M14.55 21H13V17.5H11V21H5V3H19V11.03C19.71 11.09 20.39 11.31 21 11.63V1H3V23H15.91C15.5 22.44 15 21.76 14.55 21M7 19H9V17H7V19M9 13H7V15H9V13M22 16.5C22 19.1 18.5 23 18.5 23S15 19.1 15 16.5C15 14.6 16.6 13 18.5 13S22 14.6 22 16.5M19.7 16.6C19.7 16 19.1 15.4 18.5 15.4S17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8S19.8 17.2 19.7 16.6Z"; +var mdiOfficeBuildingOutline = "M19 3V21H13V17.5H11V21H5V3H19M15 7H17V5H15V7M11 7H13V5H11V7M7 7H9V5H7V7M15 11H17V9H15V11M11 11H13V9H11V11M7 11H9V9H7V11M15 15H17V13H15V15M11 15H13V13H11V15M7 15H9V13H7V15M15 19H17V17H15V19M7 19H9V17H7V19M21 1H3V23H21V1Z"; +var mdiOil = "M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z"; +var mdiOilLamp = "M5,20H16V22H5M11,5H10A2,2 0 0,0 8,7H13A2,2 0 0,0 11,5M16,8H22A2,2 0 0,1 20,10H19A4,4 0 0,0 15,14V15A4,4 0 0,1 11,19H10A4,4 0 0,1 6,15H4A2,2 0 0,1 2,13V10A2,2 0 0,1 4,8M6,10H4V13H6M19,5A2,2 0 0,1 21,7H22A2.9,2.9 0 0,0 19,4A2,2 0 0,1 17,2H16A2.9,2.9 0 0,0 19,5"; +var mdiOilLevel = "M8 18C6.67 18 5.79 18.79 5.29 19.29S4.67 20 4 20 3.21 19.79 2.71 19.29C2.35 18.93 1.79 18.42 1 18.16V20.41C1.09 20.5 1.18 20.59 1.29 20.71C1.79 21.21 2.67 22 4 22S6.21 21.21 6.71 20.71 7.33 20 8 20 8.79 20.21 9.29 20.71C9.73 21.14 10.44 21.8 11.5 21.96C11.66 22 11.83 22 12 22C13.33 22 14.21 21.21 14.71 20.71S15.33 20 16 20 16.79 20.21 17.29 20.71 18.67 22 20 22 22.21 21.21 22.71 20.71C22.82 20.59 22.91 20.5 23 20.41V18.16C22.21 18.42 21.65 18.93 21.29 19.29C20.79 19.79 20.67 20 20 20S19.21 19.79 18.71 19.29 17.33 18 16 18 13.79 18.79 13.29 19.29 12.67 20 12 20C11.78 20 11.63 19.97 11.5 19.92C11.22 19.82 11.05 19.63 10.71 19.29C10.21 18.79 9.33 18 8 18M22 10.5C22 10.5 24 12.67 24 14C24 15.1 23.1 16 22 16S20 15.1 20 14C20 12.67 22 10.5 22 10.5M22.5 7.13L19.24 5.24L12.73 9C12.39 8.4 11.74 8 11 8H9V6H10C10.55 6 11 5.55 11 5S10.55 4 10 4H6C5.45 4 5 4.45 5 5S5.45 6 6 6H7V8H5C3.9 8 3 8.9 3 10V13C3 14.1 3.9 15 5 15H14C14.75 15 15.41 14.58 15.75 13.97L19.4 7.65L21.5 8.86C22 9.14 22.59 8.97 22.87 8.5C23.14 8 23 7.4 22.5 7.13M14 13H5V10H11.69L12.6 11.43L16.06 9.43L14 13M3.5 6.92L1.79 8.62A1 1 0 0 1 .38 7.21L2.09 5.5A1 1 0 0 1 3.5 5.5C3.89 5.89 3.89 6.5 3.5 6.92Z"; +var mdiOilTemperature = "M10 5H13V3H10V2C10 1.4 9.6 1 9 1S8 1.4 8 2V15.3C7.4 15.6 7 16.3 7 17C7 18.1 7.9 19 9 19S11 18.1 11 17C11 16.3 10.6 15.6 10 15.3V13H13V11H10V9H13V7H10V5M22 17.5C22 17.5 24 19.7 24 21C24 22.1 23.1 23 22 23S20 22.1 20 21C20 19.7 22 17.5 22 17.5M22.9 15.5C22.6 16 22 16.1 21.5 15.9L19.4 14.7L15.8 21C15.5 21.6 14.8 22 14 22H5C3.9 22 3 21.1 3 20V17C3 15.9 3.9 15 5 15V20H14L16.1 16.4L13 18.2V15.8L19.2 12.2L22.5 14.1C23 14.4 23.1 15 22.9 15.5M3.5 13.9L1.8 15.6C1.4 16 .8 16 .4 15.6S0 14.6.4 14.2L2.1 12.5C2.5 12.1 3.1 12.1 3.5 12.5S3.9 13.5 3.5 13.9Z"; +var mdiOmega = "M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z"; +var mdiOneUp = "M10,19V19C9.4,19 9,18.6 9,18V17C9,16.5 9.4,16 10,16V16C10.5,16 11,16.4 11,17V18C11,18.6 10.6,19 10,19M15,18V17C15,16.5 14.6,16 14,16V16C13.5,16 13,16.4 13,17V18C13,18.5 13.4,19 14,19V19C14.6,19 15,18.6 15,18M22,12C22,14.6 20.4,16.9 18,18.4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V18.4C3.6,16.9 2,14.6 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,10C7,8.9 6.4,7.9 5.5,7.4C4.5,8.7 4,10.3 4,12C4,12.3 4,12.7 4.1,13C5.7,12.9 7,11.6 7,10M9,9C9,10.7 10.3,12 12,12C13.7,12 15,10.7 15,9C15,7.3 13.7,6 12,6C10.3,6 9,7.3 9,9M16,20V15.5C14.8,15.2 13.4,15 12,15C10.6,15 9.2,15.2 8,15.5V20H16M19.9,13C20,12.7 20,12.3 20,12C20,10.3 19.5,8.7 18.5,7.4C17.6,7.9 17,8.9 17,10C17,11.6 18.3,12.9 19.9,13Z"; +var mdiOnepassword = "M12,1C5.92,1 1,5.92 1,12C1,18.08 5.92,23 12,23C18.08,23 23,18.08 23,12C23,5.92 18.08,1 12,1M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,13.5C13,14.13 13.4,14.7 14,14.91V18H10V11.91C10.78,11.64 11.19,10.8 10.93,10C10.78,9.58 10.44,9.24 10,9.09V6H14V12.09C13.4,12.3 13,12.87 13,13.5Z"; +var mdiOpacity = "M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z"; +var mdiOpenInApp = "M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z"; +var mdiOpenInNew = "M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z"; +var mdiOpenSourceInitiative = "M15.41,22C15.35,22 15.28,22 15.22,22C15.1,21.95 15,21.85 14.96,21.73L12.74,15.93C12.65,15.69 12.77,15.42 13,15.32C13.71,15.06 14.28,14.5 14.58,13.83C15.22,12.4 14.58,10.73 13.15,10.09C11.72,9.45 10.05,10.09 9.41,11.5C9.11,12.21 9.09,13 9.36,13.69C9.66,14.43 10.25,15 11,15.28C11.24,15.37 11.37,15.64 11.28,15.89L9,21.69C8.96,21.81 8.87,21.91 8.75,21.96C8.63,22 8.5,22 8.39,21.96C3.24,19.97 0.67,14.18 2.66,9.03C4.65,3.88 10.44,1.31 15.59,3.3C18.06,4.26 20.05,6.15 21.13,8.57C22.22,11 22.29,13.75 21.33,16.22C20.32,18.88 18.23,21 15.58,22C15.5,22 15.47,22 15.41,22M12,3.59C7.03,3.46 2.9,7.39 2.77,12.36C2.68,16.08 4.88,19.47 8.32,20.9L10.21,16C8.38,15 7.69,12.72 8.68,10.89C9.67,9.06 11.96,8.38 13.79,9.36C15.62,10.35 16.31,12.64 15.32,14.47C14.97,15.12 14.44,15.65 13.79,16L15.68,20.93C17.86,19.95 19.57,18.16 20.44,15.93C22.28,11.31 20.04,6.08 15.42,4.23C14.33,3.8 13.17,3.58 12,3.59Z"; +var mdiOpenid = "M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z"; +var mdiOpera = "M9.04,17.07C8.04,15.9 7.4,14.16 7.35,12.21V11.79C7.4,9.84 8.04,8.1 9.04,6.93C9.86,5.95 10.93,5.37 12.1,5.37C14.72,5.37 16.84,8.34 16.84,12C16.84,15.66 14.72,18.63 12.1,18.63C10.93,18.63 10.33,18.5 9.04,17.07M12.03,3H12A9,9 0 0,0 3,12C3,16.83 6.8,20.77 11.57,21H12C14.3,21 16.4,20.13 18,18.71C19.84,17.06 21,14.67 21,12C21,9.33 19.84,6.94 18,5.29C16.41,3.87 14.32,3 12.03,3Z"; +var mdiOrbit = "M8.11,1.75C9.3,1.25 10.62,1 12,1C18.08,1 23,5.92 23,12C23,18.08 18.08,23 12,23C5.92,23 1,18.08 1,12C1,10.62 1.25,9.3 1.72,8.08C2.24,8.61 2.83,8.96 3.45,9.18C3.16,10.07 3,11 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3C11,3 10.07,3.16 9.18,3.45C8.96,2.83 8.61,2.24 8.11,1.75M4.93,2.93C6.03,2.93 6.93,3.82 6.93,4.93A2,2 0 0,1 4.93,6.93C3.82,6.93 2.93,6.03 2.93,4.93C2.93,3.82 3.82,2.93 4.93,2.93M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7Z"; +var mdiOrbitVariant = "M19 8L15 12H18C18 15.31 15.31 18 12 18C11 18 10.03 17.75 9.2 17.3L7.74 18.76C8.97 19.54 10.43 20 12 20C16.42 20 20 16.42 20 12H23M6 12C6 8.69 8.69 6 12 6C13 6 13.97 6.25 14.8 6.7L16.26 5.24C15.03 4.46 13.57 4 12 4C7.58 4 4 7.58 4 12H1L5 16L9 12M14 12C14 13.11 13.11 14 12 14S10 13.11 10 12 10.9 10 12 10 14 10.9 14 12Z"; +var mdiOrderAlphabeticalAscending = "M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12M9 13V15L5.67 19H9V21H3V19L6.33 15H3V13M7 3H5C3.9 3 3 3.9 3 5V11H5V9H7V11H9V5C9 3.9 8.11 3 7 3M7 7H5V5H7Z"; +var mdiOrderAlphabeticalDescending = "M7 13H5C3.9 13 3 13.9 3 15V21H5V19H7V21H9V15C9 13.9 8.11 13 7 13M7 17H5V15H7M9 3V5L5.67 9H9V11H3V9L6.33 5H3V3M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; +var mdiOrderBoolAscending = "M6 3C3.79 3 2 4.79 2 7S3.79 11 6 11 10 9.21 10 7 8.21 3 6 3M6 9C4.9 9 4 8.1 4 7S4.9 5 6 5 8 5.9 8 7 7.1 9 6 9M6 13C3.79 13 2 14.79 2 17S3.79 21 6 21 10 19.21 10 17 8.21 13 6 13M12 5H22V7H12V5M12 19V17H22V19H12M12 11H22V13H12V11Z"; +var mdiOrderBoolAscendingVariant = "M4 13C2.89 13 2 13.89 2 15V19C2 20.11 2.89 21 4 21H8C9.11 21 10 20.11 10 19V15C10 13.89 9.11 13 8 13M8.2 14.5L9.26 15.55L5.27 19.5L2.74 16.95L3.81 15.9L5.28 17.39M4 3C2.89 3 2 3.89 2 5V9C2 10.11 2.89 11 4 11H8C9.11 11 10 10.11 10 9V5C10 3.89 9.11 3 8 3M4 5H8V9H4M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; +var mdiOrderBoolDescending = "M6 13C3.79 13 2 14.79 2 17S3.79 21 6 21 10 19.21 10 17 8.21 13 6 13M6 19C4.9 19 4 18.1 4 17S4.9 15 6 15 8 15.9 8 17 7.1 19 6 19M6 3C3.79 3 2 4.79 2 7S3.79 11 6 11 10 9.21 10 7 8.21 3 6 3M12 5H22V7H12V5M12 19V17H22V19H12M12 11H22V13H12V11Z"; +var mdiOrderBoolDescendingVariant = "M4 3C2.89 3 2 3.89 2 5V9C2 10.11 2.89 11 4 11H8C9.11 11 10 10.11 10 9V5C10 3.89 9.11 3 8 3M8.2 4.5L9.26 5.55L5.27 9.5L2.74 6.95L3.81 5.9L5.28 7.39M4 13C2.89 13 2 13.89 2 15V19C2 20.11 2.89 21 4 21H8C9.11 21 10 20.11 10 19V15C10 13.89 9.11 13 8 13M4 15H8V19H4M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; +var mdiOrderNumericAscending = "M7 21H3V19H7V18H5C3.9 18 3 17.11 3 16V15C3 13.9 3.9 13 5 13H7C8.11 13 9 13.9 9 15V19C9 20.11 8.11 21 7 21M7 15H5V16H7M5 3H7C8.11 3 9 3.9 9 5V9C9 10.11 8.11 11 7 11H5C3.9 11 3 10.11 3 9V5C3 3.9 3.9 3 5 3M5 9H7V5H5M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; +var mdiOrderNumericDescending = "M7 11H3V9H7V8H5C3.9 8 3 7.11 3 6V5C3 3.9 3.9 3 5 3H7C8.11 3 9 3.9 9 5V9C9 10.11 8.11 11 7 11M7 5H5V6H7M5 13H7C8.11 13 9 13.9 9 15V19C9 20.11 8.11 21 7 21H5C3.9 21 3 20.11 3 19V15C3 13.9 3.9 13 5 13M5 19H7V15H5M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; +var mdiOrigin = "M12,2.13C12,2.23 11.95,2.33 11.89,2.41C11.5,3 11.16,3.64 11.04,4.33L11,4.56L12,4.5A7.5,7.5 0 0,1 19.5,12C19.5,13.62 19,15.11 18.12,16.34C16.73,18.68 14.72,20.65 12.34,21.97C12.25,22 12.12,22 12.06,21.93C12,21.83 12,21.7 12.09,21.61C12.47,21.09 12.73,20.5 12.87,19.85L12.93,19.44L12,19.5A7.5,7.5 0 0,1 4.5,12C4.5,10.39 5,8.89 5.88,7.67C7.26,5.32 9.28,3.34 11.67,2C11.78,1.95 11.94,2 12,2.13M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiOrnament = "M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z"; +var mdiOrnamentVariant = "M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z"; +var mdiOutdoorLamp = "M15 22H13C11.9 22 11 21.1 11 20V15H17V20C17 21.1 16.1 22 15 22M7 14H21L15 9.71V6C15 4.39 13.94 2 11 2S7 4.39 7 6C7 6.45 6.81 7 6 7H5V3H3V12H5V9H6C8.2 9 9 7.21 9 6C9 5.67 9.1 4 11 4C12.83 4 13 5.54 13 6V9.71L7 14Z"; +var mdiOverscan = "M12 5.5L10 8H14L12 5.5M18 10V14L20.5 12L18 10M6 10L3.5 12L6 14V10M14 16H10L12 18.5L14 16M21 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H21C22.1 21 23 20.1 23 19V5C23 3.9 22.1 3 21 3M21 19H3V5H21V19Z"; +var mdiOwl = "M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z"; +var mdiPacMan = "M12,12L19.07,19.07C15.17,23 8.83,23 4.93,19.07C1,15.17 1,8.84 4.93,4.93C8.83,1 15.16,1 19.07,4.93L12,12M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z"; +var mdiPackage = "M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z"; +var mdiPackageDown = "M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z"; +var mdiPackageUp = "M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z"; +var mdiPackageVariant = "M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z"; +var mdiPackageVariantClosed = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"; +var mdiPageFirst = "M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z"; +var mdiPageLast = "M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z"; +var mdiPageLayoutBody = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,8V16H18V8H6Z"; +var mdiPageLayoutFooter = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,16V20H18V16H6Z"; +var mdiPageLayoutHeader = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,4V8H18V4H6Z"; +var mdiPageLayoutHeaderFooter = "M18 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V4C20 2.9 19.11 2 18 2M18 20H6V16H18V20M18 8H6V4H18V8Z"; +var mdiPageLayoutSidebarLeft = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,8V16H10V8H6Z"; +var mdiPageLayoutSidebarRight = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M14,8V16H18V8H14Z"; +var mdiPageNext = "M20,3H5A2,2 0 0,0 3,5V11H7V9L11,12L7,15V13H3V19A2,2 0 0,0 5,21H20A2,2 0 0,0 22,19V5A2,2 0 0,0 20,3M17,17H13V15H17V17M20,13H13V11H20V13M20,9H13V7H20V9M3,13H0V11H3V13Z"; +var mdiPageNextOutline = "M22,3H5A2,2 0 0,0 3,5V9H5V5H22V19H5V15H3V19A2,2 0 0,0 5,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M7,15V13H0V11H7V9L11,12L7,15M20,13H13V11H20V13M20,9H13V7H20V9M17,17H13V15H17V17Z"; +var mdiPagePrevious = "M4,21H19A2,2 0 0,0 21,19V13H17V15L13,12L17,9V11H21V5A2,2 0 0,0 19,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21M4,15H8V17H4V15M4,11H11V13H4V11M4,7H11V9H4V7M21,11H24V13H21V11Z"; +var mdiPagePreviousOutline = "M2,3H19A2,2 0 0,1 21,5V9H19V5H2V19H19V15H21V19A2,2 0 0,1 19,21H2A2,2 0 0,1 0,19V5A2,2 0 0,1 2,3M17,15V13H24V11H17V9L13,12L17,15M4,13H11V11H4V13M4,9H11V7H4V9M4,17H8V15H4V17Z"; +var mdiPail = "M11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63M7 21L5.79 14.97L13.21 10.69C14 10.26 14.5 9.44 14.5 8.5C14.5 7.12 13.38 6 12 6C11.53 6 11.09 6.13 10.71 6.36L4.76 9.79L4 6H3V4H21V6H20L17 21H7Z"; +var mdiPailMinus = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M15 18V20H23V18H15Z"; +var mdiPailMinusOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M15 18V20H23V18H15Z"; +var mdiPailOff = "M20.84 22.73L17.35 19.24L17 21H7L5.79 14.97L10.41 12.3L9.31 11.2L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L7.85 9.74L6.75 8.64L4.76 9.79L4 6H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.27 14.16 9.94 13.6 10.4L18.2 15L20 6H21V4H7.2L10 6.78L10.71 6.36M11.5 7.63L11.08 7.88L12.53 9.33C12.97 9.05 13.13 8.46 12.86 8C12.58 7.5 11.97 7.35 11.5 7.63Z"; +var mdiPailOffOutline = "M20.84 22.73L17.35 19.24L17 21H7L5.9 15.5L7.73 14.43L8.64 19H15.36L15.65 17.54L9.31 11.2L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L7.85 9.74L6.38 8.27L4.65 9.27L4 6H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M17.96 6L16.5 13.3L18.2 15L20 6H21V4H7.2L9.2 6H17.96M11.5 7.63L11.08 7.88L12.53 9.33C12.97 9.05 13.13 8.46 12.86 8C12.58 7.5 11.97 7.35 11.5 7.63Z"; +var mdiPailOutline = "M11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75S2.79 12.66 3.27 12.38L11.5 7.63M3 4V6H4L4.65 9.27L6.5 8.22L6.04 6H17.96L15.36 19H8.64L7.73 14.43L5.9 15.5L7 21H17L20 6H21V4H3Z"; +var mdiPailPlus = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiPailPlusOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiPailRemove = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; +var mdiPailRemoveOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M21.12 15.46L19 17.59L16.88 15.46L15.46 16.88L17.58 19L15.46 21.12L16.87 22.54L19 20.41L21.12 22.54L22.53 21.12L20.41 19L22.53 16.88L21.12 15.46Z"; +var mdiPalette = "M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z"; +var mdiPaletteAdvanced = "M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z"; +var mdiPaletteOutline = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"; +var mdiPaletteSwatch = "M2.53,19.65L3.87,20.21V11.18L1.44,17.04C1.03,18.06 1.5,19.23 2.53,19.65M22.03,15.95L17.07,4C16.76,3.23 16.03,2.77 15.26,2.75C15,2.75 14.73,2.79 14.47,2.9L7.1,5.95C6.35,6.26 5.89,7 5.87,7.75C5.86,8 5.91,8.29 6,8.55L11,20.5C11.29,21.28 12.03,21.74 12.81,21.75C13.07,21.75 13.33,21.7 13.58,21.6L20.94,18.55C21.96,18.13 22.45,16.96 22.03,15.95M7.88,8.75A1,1 0 0,1 6.88,7.75A1,1 0 0,1 7.88,6.75C8.43,6.75 8.88,7.2 8.88,7.75C8.88,8.3 8.43,8.75 7.88,8.75M5.88,19.75A2,2 0 0,0 7.88,21.75H9.33L5.88,13.41V19.75Z"; +var mdiPaletteSwatchOutline = "M2.5 19.6L3.8 20.2V11.2L1.4 17C1 18.1 1.5 19.2 2.5 19.6M15.2 4.8L20.2 16.8L12.9 19.8L7.9 7.9V7.8L15.2 4.8M15.3 2.8C15 2.8 14.8 2.8 14.5 2.9L7.1 6C6.4 6.3 5.9 7 5.9 7.8C5.9 8 5.9 8.3 6 8.6L11 20.5C11.3 21.3 12 21.7 12.8 21.7C13.1 21.7 13.3 21.7 13.6 21.6L21 18.5C22 18.1 22.5 16.9 22.1 15.9L17.1 4C16.8 3.2 16 2.8 15.3 2.8M10.5 9.9C9.9 9.9 9.5 9.5 9.5 8.9S9.9 7.9 10.5 7.9C11.1 7.9 11.5 8.4 11.5 8.9S11.1 9.9 10.5 9.9M5.9 19.8C5.9 20.9 6.8 21.8 7.9 21.8H9.3L5.9 13.5V19.8Z"; +var mdiPalmTree = "M12 9C13.59 16.61 10 22 10 22H13C14.88 16.2 14 12.09 13.5 10M15.66 7.16C15.83 7.37 16 7.59 16.13 7.82C17.84 10.53 17.5 13.95 15.5 16.26C16.34 14.21 16.22 11.79 14.95 9.77C14.87 9.64 14.78 9.53 14.7 9.41C14.11 8.58 13.36 7.92 12.54 7.43C9.66 8.35 7.58 11.04 7.58 14.22C7.58 14.96 7.69 15.67 7.89 16.33C7.05 15.16 6.56 13.73 6.56 12.19C6.56 9.84 7.7 7.76 9.45 6.46C8 6.35 6.46 6.67 5.12 7.5C4.5 7.91 3.96 8.38 3.5 8.91C4.05 7.58 5 6.39 6.3 5.57C7.8 4.63 9.5 4.32 11.14 4.56C10.73 4 10.23 3.47 9.63 3C9.05 2.58 8.42 2.24 7.76 2C9.2 2.04 10.64 2.5 11.87 3.43C12.5 3.9 13 4.47 13.4 5.07C13.5 5.07 13.59 5.06 13.69 5.06C16.89 5.06 19.6 7.17 20.5 10.08C19.38 8.5 17.65 7.43 15.66 7.16Z"; +var mdiPan = "M12,2.5L8,7H16L12,2.5M7,8L2.5,12L7,16V8M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z"; +var mdiPanBottomLeft = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M5.35,13L11,18.65L5,19L5.35,13Z"; +var mdiPanBottomRight = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M13,18.65L18.65,13L19,19L13,18.65Z"; +var mdiPanDown = "M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z"; +var mdiPanHorizontal = "M7,8L2.5,12L7,16V8M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiPanLeft = "M7,8L2.5,12L7,16V8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiPanRight = "M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiPanTopLeft = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M11,5.35L5.35,11L5,5L11,5.35Z"; +var mdiPanTopRight = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M18.65,11L13,5.35L19,5L18.65,11Z"; +var mdiPanUp = "M12,2.5L8,7H16L12,2.5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiPanVertical = "M12,2.5L8,7H16L12,2.5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z"; +var mdiPanda = "M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z"; +var mdiPandora = "M10,20A1,1 0 0,1 9,21H4V3H13.71A6.75,6.75 0 0,1 20.46,9.75C20.46,13.5 17.44,16.5 13.71,16.5H10V20Z"; +var mdiPanorama = "M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z"; +var mdiPanoramaFisheye = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z"; +var mdiPanoramaHorizontal = "M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z"; +var mdiPanoramaVertical = "M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z"; +var mdiPanoramaWideAngle = "M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z"; +var mdiPaperCutVertical = "M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z"; +var mdiPaperRoll = "M9 3C5.69 3 3.14 5.69 3 9V21H12V13.46C13.1 14.45 14.5 15 16 15C19.31 15 22 12.31 22 9C22 5.69 19.31 3 16 3H9M16 5C18.21 5 20 6.79 20 9C20 11.21 18.21 13 16 13C13.79 13 12 11.21 12 9C12 6.79 13.79 5 16 5M16 7.25C15.03 7.25 14.25 8.03 14.25 9C14.25 9.97 15.03 10.75 16 10.75C16.97 10.75 17.75 9.97 17.75 9C17.75 8.03 16.97 7.25 16 7.25M4 12H5V13H4V12M6 12H7V13H6V12M8 12H9V13H8V12M10 12H11V13H10V12Z"; +var mdiPaperRollOutline = "M9 3C5.69 3 3.14 5.69 3 9V21H12V13.46C13.1 14.45 14.5 15 16 15C19.31 15 22 12.31 22 9C22 5.69 19.31 3 16 3H9M9 5H11.54C10.55 6.1 10 7.5 10 9V12H9V13H10V19H5V13H6V12H5V9C5 6.79 6.79 5 9 5M16 5C18.21 5 20 6.79 20 9C20 11.21 18.21 13 16 13C13.79 13 12 11.21 12 9C12 6.79 13.79 5 16 5M16 7.25C15.03 7.25 14.25 8.03 14.25 9C14.25 9.97 15.03 10.75 16 10.75C16.97 10.75 17.75 9.97 17.75 9C17.75 8.03 16.97 7.25 16 7.25M7 12V13H8V12H7Z"; +var mdiPaperclip = "M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z"; +var mdiParachute = "M21.2,10.95L12,23L2.78,10.96L2.87,10.88C3.08,10.67 3.33,10.5 3.58,10.36L10.73,19.69L8.58,13L9.24,11.81L12,20.38L14.73,11.8L15.4,13L13.27,19.69L20.41,10.35C20.66,10.5 20.9,10.64 21.1,10.85L21.2,10.95M5,9C6.5,9 7.81,9.86 8.5,11.1C9.17,9.86 10.47,9 12,9C13.5,9 14.8,9.85 15.5,11.09C16.16,9.84 17.47,9 19,9C20.09,9 21.09,9.42 21.81,10.14C20.94,5.5 16.88,2 12,2C7.09,2 3.03,5.5 2.16,10.17C2.89,9.45 3.89,9 5,9Z"; +var mdiParachuteOutline = "M21.2,10.95L12,23L2.78,10.96L2.87,10.88C3.08,10.67 3.33,10.5 3.58,10.36L10.73,19.69L8.58,13L9.24,11.81L12,20.38L14.73,11.8L15.4,13L13.27,19.69L20.41,10.35C20.66,10.5 20.9,10.64 21.1,10.85L21.2,10.95M12,4C14.5,4 16.77,5.17 18.25,7.03C17.24,7.15 16.28,7.54 15.47,8.13C14.47,7.41 13.26,7 12,7C10.71,7 9.5,7.41 8.5,8.14C7.68,7.55 6.72,7.17 5.71,7.04C7.19,5.17 9.47,4 12,4M12,2C7.09,2 3.03,5.5 2.16,10.17C2.89,9.45 3.89,9 5,9C6.5,9 7.81,9.86 8.5,11.1C9.17,9.86 10.47,9 12,9C13.5,9 14.8,9.85 15.5,11.09C16.16,9.84 17.47,9 19,9C20.09,9 21.09,9.42 21.81,10.14C20.94,5.5 16.88,2 12,2Z"; +var mdiParking = "M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z"; +var mdiPartyPopper = "M14.53 1.45L13.45 2.53L15.05 4.13C15.27 4.38 15.38 4.67 15.38 5S15.27 5.64 15.05 5.86L11.5 9.47L12.5 10.55L16.13 6.94C16.66 6.35 16.92 5.7 16.92 5C16.92 4.3 16.66 3.64 16.13 3.05L14.53 1.45M10.55 3.47L9.47 4.55L10.08 5.11C10.3 5.33 10.41 5.63 10.41 6S10.3 6.67 10.08 6.89L9.47 7.45L10.55 8.53L11.11 7.92C11.64 7.33 11.91 6.69 11.91 6C11.91 5.28 11.64 4.63 11.11 4.03L10.55 3.47M21 5.06C20.31 5.06 19.67 5.33 19.08 5.86L13.45 11.5L14.53 12.5L20.11 6.94C20.36 6.69 20.66 6.56 21 6.56S21.64 6.69 21.89 6.94L22.5 7.55L23.53 6.47L22.97 5.86C22.38 5.33 21.72 5.06 21 5.06M7 8L2 22L16 17L7 8M19 11.06C18.3 11.06 17.66 11.33 17.06 11.86L15.47 13.45L16.55 14.53L18.14 12.94C18.39 12.69 18.67 12.56 19 12.56C19.33 12.56 19.63 12.69 19.88 12.94L21.5 14.53L22.55 13.5L20.95 11.86C20.36 11.33 19.7 11.06 19 11.06Z"; +var mdiPassport = "M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2H6M12,5A5,5 0 0,1 17,10A5,5 0 0,1 12,15A5,5 0 0,1 7,10A5,5 0 0,1 12,5M12,6C11.59,6.62 11.25,7.29 11.04,8H12.96C12.75,7.29 12.42,6.62 12,6M10.7,6.22C9.78,6.53 9,7.17 8.54,8H10C10.18,7.38 10.4,6.78 10.7,6.22M13.29,6.22C13.59,6.78 13.82,7.38 14,8H15.46C15,7.17 14.21,6.54 13.29,6.22M8.13,9C8.05,9.32 8,9.65 8,10C8,10.35 8.05,10.68 8.13,11H9.82C9.78,10.67 9.75,10.34 9.75,10C9.75,9.66 9.78,9.33 9.82,9H8.13M10.83,9C10.78,9.32 10.75,9.66 10.75,10C10.75,10.34 10.78,10.67 10.83,11H13.17C13.21,10.67 13.25,10.34 13.25,10C13.25,9.66 13.21,9.32 13.17,9H10.83M14.18,9C14.22,9.33 14.25,9.66 14.25,10C14.25,10.34 14.22,10.67 14.18,11H15.87C15.95,10.68 16,10.35 16,10C16,9.65 15.95,9.32 15.87,9H14.18M8.54,12C9,12.83 9.78,13.46 10.7,13.78C10.4,13.22 10.18,12.63 10,12H8.54M11.04,12C11.25,12.72 11.59,13.38 12,14C12.42,13.38 12.75,12.72 12.96,12H11.04M14,12C13.82,12.63 13.59,13.22 13.29,13.78C14.21,13.46 15,12.83 15.46,12H14M7,17H17V19H7V17Z"; +var mdiPassportBiometric = "M4,4A2,2 0 0,0 2,6V11H8.13C8.59,9.24 10.18,8 12,8C13.82,8 15.41,9.24 15.87,11H22V6A2,2 0 0,0 20,4H4M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M2,13V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V13H15.87C15.41,14.76 13.82,16 12,16C10.18,16 8.59,14.76 8.13,13H2Z"; +var mdiPasta = "M4 16.5V8H3V7H4V6H3V5H4V4H3V3H9C9.5 3.03 9.95 3.24 10.34 3.63S10.95 4.5 11 5H21V6H11C10.95 6.53 10.73 7 10.34 7.43S9.5 8.05 9 8H7V15.05C7.05 15.05 7.13 15.04 7.24 15S7.44 15 7.5 15C8.06 15 8.7 15.14 9.42 15.42C9.83 14.5 10.53 13.68 11.53 13S13.53 12 14.53 12C16.06 12 17.36 12.53 18.42 13.59S20 15.95 20 17.5C20 17.55 20 17.64 20 17.77S19.97 17.97 19.97 18H3.14C3.27 17.5 3.55 17 4 16.5M6 15.23V8H5V15.7C5.5 15.45 5.81 15.3 6 15.23M9 7V6H7V7H9M9 4H7V5H9V4M5 4V5H6V4H5M5 6V7H6V6H5M2 19H22L20 21H4L2 19Z"; +var mdiPatioHeater = "M15 22H9V21H15V22M19 4L15 2H9L5 4H19M8 5L8.4 6H15.6L16 5H8M10 10H11V15C10.4 15 10 15.4 10 16V20H14V16C14 15.4 13.6 15 13 15V10H14L14.4 9H9.6L10 10M9.2 8H14.8L15.2 7H8.8L9.2 8Z"; +var mdiPatreon = "M14.82 2.41C18.78 2.41 22 5.65 22 9.62C22 13.58 18.78 16.8 14.82 16.8C10.85 16.8 7.61 13.58 7.61 9.62C7.61 5.65 10.85 2.41 14.82 2.41M2 21.6H5.5V2.41H2V21.6Z"; +var mdiPause = "M14,19H18V5H14M6,19H10V5H6V19Z"; +var mdiPauseCircle = "M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiPauseCircleOutline = "M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiPauseOctagon = "M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z"; +var mdiPauseOctagonOutline = "M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z"; +var mdiPaw = "M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z"; +var mdiPawOff = "M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z"; +var mdiPawOffOutline = "M22.83 8.25C22.56 7.5 22.05 6.96 21.39 6.68C20.22 6.18 18.8 6.6 17.7 7.66C17.81 7.37 17.91 7.06 18 6.73C18.25 5.38 18 4.03 17.38 3.12C16.95 2.5 16.33 2.11 15.64 2C14.1 1.78 12.57 3.08 11.93 5C11.28 3.05 9.74 1.76 8.19 2C7.5 2.12 6.88 2.53 6.45 3.16C6.44 3.18 6.43 3.2 6.42 3.22L7.91 4.71C7.96 4.54 8 4.4 8.1 4.29C8.22 4.12 8.36 4 8.5 4C9 3.91 9.88 4.69 10.16 6.1C10.23 6.44 10.24 6.75 10.22 7L11.88 8.68C11.89 8.65 11.91 8.62 11.93 8.58C11.97 8.69 12.04 8.78 12.09 8.89L13.43 10.23C13.63 10.32 13.83 10.39 14.04 10.42C14.16 10.44 14.29 10.45 14.41 10.45C15.13 10.45 15.83 10.12 16.43 9.57C16 10.64 15.96 11.73 16.29 12.63C16.56 13.35 17.07 13.91 17.73 14.2C18.07 14.34 18.43 14.41 18.8 14.41C20.18 14.41 21.66 13.4 22.5 11.77C23.08 10.58 23.21 9.3 22.83 8.25M16 6.33C15.72 7.73 14.83 8.5 14.34 8.44C14.28 8.43 14.12 8.41 13.94 8.15C13.69 7.79 13.5 7.07 13.7 6.1C13.97 4.76 14.8 4 15.29 4C15.31 4 15.34 4 15.36 4C15.5 4 15.63 4.11 15.75 4.27C16.07 4.73 16.18 5.54 16 6.33M20.7 10.87C20.12 12 19.08 12.6 18.53 12.36C18.47 12.34 18.28 12.26 18.16 11.93C18 11.43 18.07 10.68 18.39 10C18.9 9.04 19.74 8.47 20.33 8.47C20.43 8.47 20.5 8.5 20.6 8.5H20.6C20.75 8.58 20.87 8.72 20.95 8.94C21.09 9.34 21.1 10.06 20.7 10.87M1.11 3L4.8 6.69C4.06 6.41 3.29 6.39 2.6 6.68C1.94 6.97 1.43 7.53 1.17 8.27C.793 9.31 .919 10.58 1.5 11.77C2.34 13.4 3.82 14.41 5.21 14.41C5.57 14.41 5.93 14.34 6.27 14.2C6.93 13.91 7.44 13.35 7.71 12.63C8 11.79 8 10.77 7.64 9.76C7.83 9.91 8.04 10.03 8.24 10.13L9.73 11.62C8.94 12.5 8.27 13.7 7.47 14.5C6.41 15.59 4.62 16.39 4.44 17.88C4.31 18.96 5 20.26 6 20.75C6.35 20.93 6.72 21 7.1 21C8.61 21 10.3 19.87 11.89 19.87C13.5 19.87 15.18 20.97 16.71 20.97C17.08 20.97 17.44 20.91 17.79 20.75C18 20.65 18.23 20.5 18.43 20.32L20.84 22.73L22.11 21.46L2.39 1.73L1.11 3M11.15 13.04L17 18.9C17 18.91 16.97 18.92 16.96 18.93C16.92 18.95 16.85 18.97 16.71 18.97C16.28 18.97 15.63 18.75 15 18.54C14.08 18.23 13.03 17.87 11.89 17.87C10.75 17.87 9.7 18.24 8.78 18.56C8.15 18.77 7.5 19 7.1 19C6.97 19 6.92 19 6.88 18.95C6.66 18.84 6.4 18.37 6.43 18.12C6.5 17.89 7.23 17.31 7.59 17C8.03 16.68 8.5 16.33 8.89 15.91C9.44 15.36 9.89 14.73 10.33 14.12C10.55 13.8 10.86 13.38 11.15 13.04M5.6 10C5.93 10.68 6 11.43 5.84 11.93C5.71 12.26 5.53 12.34 5.47 12.36C4.92 12.6 3.88 12 3.3 10.87C2.9 10.06 2.91 9.35 3.05 8.94C3.13 8.73 3.25 8.58 3.4 8.5C3.5 8.5 3.57 8.46 3.68 8.46C4.26 8.46 5.1 9.03 5.6 10Z"; +var mdiPawOutline = "M22.83 8.25C22.56 7.5 22.05 6.96 21.4 6.68C20.23 6.18 18.81 6.6 17.7 7.66C17.81 7.37 17.91 7.06 18 6.73C18.25 5.38 18.03 4.03 17.38 3.12C16.95 2.5 16.33 2.11 15.64 2C14.1 1.78 12.57 3.08 11.93 5C11.29 3.05 9.74 1.76 8.19 2C7.5 2.12 6.88 2.53 6.45 3.16C5.81 4.09 5.61 5.39 5.89 6.74C5.94 7 6 7.24 6.09 7.47C5 6.56 3.7 6.2 2.6 6.68C1.94 6.97 1.44 7.53 1.17 8.27C.794 9.31 .92 10.58 1.5 11.77C2.34 13.4 3.82 14.41 5.21 14.41C5.57 14.41 5.93 14.34 6.27 14.2C6.93 13.91 7.44 13.35 7.71 12.63C8.03 11.79 8 10.77 7.64 9.76C8.19 10.19 8.81 10.45 9.45 10.45C9.57 10.45 9.7 10.44 9.82 10.42C10.5 10.32 11.12 9.92 11.55 9.3C11.7 9.08 11.83 8.84 11.93 8.58C12.03 8.84 12.15 9.08 12.3 9.29C12.73 9.91 13.35 10.31 14.04 10.42C14.16 10.44 14.29 10.45 14.41 10.45C15.13 10.45 15.83 10.12 16.43 9.57C16 10.64 15.96 11.73 16.29 12.63C16.56 13.36 17.07 13.91 17.73 14.2C18.07 14.34 18.43 14.41 18.8 14.41C20.18 14.41 21.66 13.4 22.5 11.77C23.08 10.58 23.21 9.3 22.83 8.25M5.84 11.93C5.72 12.26 5.53 12.34 5.47 12.36C4.92 12.6 3.88 12 3.3 10.87C2.9 10.06 2.91 9.35 3.05 8.94C3.13 8.73 3.25 8.58 3.4 8.5C3.5 8.5 3.58 8.46 3.68 8.46C4.26 8.46 5.1 9.03 5.6 10C5.93 10.68 6.03 11.43 5.84 11.93M9.91 8.16C9.79 8.32 9.66 8.42 9.5 8.44C9 8.5 8.14 7.73 7.85 6.34C7.65 5.38 7.85 4.66 8.1 4.29C8.22 4.12 8.36 4 8.5 4C9 3.91 9.88 4.69 10.16 6.1C10.36 7.07 10.16 7.8 9.91 8.16M16 6.33C15.72 7.73 14.83 8.5 14.34 8.44C14.28 8.43 14.12 8.41 13.94 8.15C13.69 7.79 13.5 7.07 13.7 6.1C13.97 4.76 14.8 4 15.29 4C15.32 4 15.34 4 15.36 4C15.5 4 15.63 4.11 15.75 4.27C16.07 4.73 16.18 5.54 16 6.33M20.7 10.87C20.12 12 19.08 12.6 18.53 12.36C18.47 12.34 18.28 12.26 18.16 11.93C18 11.43 18.07 10.68 18.39 10C18.9 9.04 19.75 8.47 20.33 8.47C20.43 8.47 20.5 8.5 20.6 8.5H20.61C20.76 8.58 20.87 8.72 20.95 8.94C21.1 9.34 21.11 10.06 20.7 10.87M16.3 14.5C14.95 13.05 13.89 10.44 11.89 10.44C9.88 10.44 8.88 13.09 7.47 14.5C6.41 15.59 4.62 16.39 4.44 17.88C4.31 18.96 5 20.26 6 20.75C6.35 20.93 6.72 21 7.1 21C8.61 21 10.3 19.87 11.89 19.87C13.5 19.87 15.18 20.97 16.71 20.97C17.08 20.97 17.44 20.91 17.79 20.75C18.65 20.36 19.37 19.32 19.33 18.38C19.26 16.75 17.41 15.72 16.3 14.5M16.96 18.93C16.92 18.95 16.85 18.97 16.71 18.97C16.29 18.97 15.63 18.75 15 18.54C14.08 18.23 13.03 17.87 11.89 17.87C10.75 17.87 9.7 18.24 8.78 18.56C8.15 18.77 7.5 19 7.1 19C6.97 19 6.92 19 6.88 18.95C6.66 18.84 6.4 18.37 6.43 18.12C6.5 17.89 7.23 17.31 7.59 17C8.03 16.68 8.5 16.33 8.89 15.91C9.44 15.36 9.89 14.73 10.33 14.12C10.78 13.5 11.53 12.44 11.89 12.44C12.29 12.44 13.08 13.56 13.56 14.22C13.95 14.78 14.36 15.35 14.82 15.85C15.21 16.27 15.62 16.64 16 17C16.54 17.45 17.32 18.14 17.33 18.44C17.32 18.58 17.12 18.86 16.96 18.93Z"; +var mdiPdfBox = "M12,10.5H13V13.5H12V10.5M7,11.5H8V10.5H7V11.5M20,6V18A2,2 0 0,1 18,20H6A2,2 0 0,1 4,18V6A2,2 0 0,1 6,4H18A2,2 0 0,1 20,6M9.5,10.5A1.5,1.5 0 0,0 8,9H5.5V15H7V13H8A1.5,1.5 0 0,0 9.5,11.5V10.5M14.5,10.5A1.5,1.5 0 0,0 13,9H10.5V15H13A1.5,1.5 0 0,0 14.5,13.5V10.5M18.5,9H15.5V15H17V13H18.5V11.5H17V10.5H18.5V9Z"; +var mdiPeace = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,14.41V19.93C9.58,19.75 8.23,19.19 7.1,18.31L11,14.41M13,14.41L16.9,18.31C15.77,19.19 14.42,19.75 13,19.93V14.41M4,12C4,7.97 7,4.57 11,4.07V11.59L5.69,16.9C4.59,15.5 4,13.78 4,12M18.31,16.9L13,11.59V4.07C17,4.57 20,7.97 20,12C20,13.78 19.41,15.5 18.31,16.9Z"; +var mdiPeanut = "M16 12.77A2 2 0 0 1 15.86 10.12A5 5 0 0 0 13.04 2.12A5.74 5.74 0 0 0 12 2A5 5 0 0 0 7 7A5 5 0 0 0 8.11 10.12A2 2 0 0 1 8 12.72A5.5 5.5 0 0 0 10.81 21.87A5.42 5.42 0 0 0 12 22A5.5 5.5 0 0 0 16 12.77M13 5A1 1 0 1 1 12 6A1 1 0 0 1 13 5M11 18A1 1 0 1 1 12 17A1 1 0 0 1 11 18M12 15A1 1 0 1 1 13 16A1 1 0 0 1 12 15M14 19A1 1 0 1 1 15 18A1 1 0 0 1 14 19Z"; +var mdiPeanutOff = "M15.9 10.12A5 5 0 0 0 13.08 2.12A5.74 5.74 0 0 0 12 2A5 5 0 0 0 7.68 4.5L16.38 13.18A4.35 4.35 0 0 0 16.04 12.77A2 2 0 0 1 15.9 10.12M13 7A1 1 0 1 1 14 6A1 1 0 0 1 13 7M7 6.39L2.39 1.73L1.11 3L7.8 9.69C7.9 9.84 8 10 8.11 10.12A2 2 0 0 1 8 12.72A5.5 5.5 0 0 0 10.81 21.87A5.42 5.42 0 0 0 12 22A5.5 5.5 0 0 0 17 18.86L20.87 22.73L22.14 21.46M11 18A1 1 0 1 1 12 17A1 1 0 0 1 11 18M14 19A1 1 0 1 1 15 18A1 1 0 0 1 14 19M13 16A1 1 0 0 1 12 15A1 1 0 0 1 12.35 14.24L13.76 15.65A1 1 0 0 1 13 16Z"; +var mdiPeanutOffOutline = "M22.11 21.46L20.84 22.73L17.69 19.58C17.36 20.21 16.93 20.77 16.41 21.25C14.86 22.71 12.69 23.31 10.61 22.85C7.1 22.1 4.87 18.64 5.62 15.13C5.87 13.95 6.45 12.87 7.28 12C7.62 11.64 7.62 11.08 7.28 10.72C6.63 9.91 6.21 8.95 6.04 7.93L1.11 3L2.39 1.73L22.11 21.46M15.3 19.56C15.69 19.13 16 18.63 16.19 18.08L13.75 15.64C13.57 15.87 13.29 16 13 16C12.45 16 12 15.55 12 15C12 14.71 12.13 14.43 12.36 14.25L9.55 11.44C9.53 12.18 9.24 12.88 8.73 13.41C7.03 15.22 7.13 18.07 8.94 19.77L8.95 19.78C10.76 21.47 13.61 21.37 15.3 19.56M14 17C12.71 17 12.72 19 14 19C15.28 19 15.29 17 14 17M6.9 3.7L8.43 5.23C8.68 4.71 9.05 4.25 9.5 3.89C10.2 3.31 11.09 3 12 3H12.88C13.47 3.14 14 3.41 14.5 3.79C16.22 5.17 16.5 7.69 15.12 9.41C14.7 9.93 14.46 10.58 14.45 11.25L18.32 15.12C18.07 13.97 17.5 12.92 16.72 12.06C16.37 11.7 16.33 11.13 16.62 10.72C16.62 10.72 18 9 18 7S15.97.997 12 .997 6.9 3.7 6.9 3.7M12 17C12 15.71 10 15.72 10 17C10 18.28 12 18.29 12 17M13 5C11.71 5 11.72 7 13 7C14.28 7 14.29 5 13 5Z"; +var mdiPeanutOutline = "M12 23C11.53 23 11.07 22.95 10.61 22.85C7.1 22.1 4.87 18.64 5.62 15.13C5.87 13.95 6.45 12.87 7.28 12C7.62 11.64 7.62 11.08 7.28 10.72C5.2 8.14 5.6 4.36 8.18 2.28S14.54.607 16.62 3.19C18.39 5.38 18.39 8.5 16.62 10.72C16.33 11.13 16.37 11.7 16.72 12.06C19.17 14.68 19.04 18.8 16.41 21.25C15.22 22.37 13.64 23 12 23M12 3C11.09 3 10.2 3.31 9.5 3.89C8.55 4.65 8 5.79 8 7C8 7.91 8.31 8.79 8.88 9.5C9.84 10.64 9.77 12.33 8.73 13.41C7.03 15.22 7.13 18.07 8.94 19.77S13.6 21.38 15.3 19.56C16.92 17.83 16.92 15.14 15.3 13.41C14.23 12.32 14.15 10.6 15.12 9.41C16.5 7.69 16.22 5.17 14.5 3.79C14 3.41 13.47 3.14 12.88 3C12.59 3 12.29 3 12 3M12 6C12 6.55 12.45 7 13 7S14 6.55 14 6 13.55 5 13 5 12 5.45 12 6M14 19C14.55 19 15 18.55 15 18S14.55 17 14 17 13 17.45 13 18 13.45 19 14 19M13 16C13.55 16 14 15.55 14 15S13.55 14 13 14 12 14.45 12 15 12.45 16 13 16M11 18C11.55 18 12 17.55 12 17S11.55 16 11 16 10 16.45 10 17 10.45 18 11 18Z"; +var mdiPen = "M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z"; +var mdiPenLock = "M21.7,7C21.4,7.4 21,7.7 21,8C21,8.3 21.3,8.6 21.6,9C22.1,9.5 22.6,9.9 22.5,10.4C22.5,10.9 22,11.4 21.5,11.9L17.4,16L16,14.7L20.2,10.5L19.2,9.5L17.8,10.9L14,7.1L18,3.3C18.4,2.9 19,2.9 19.4,3.3L21.7,5.6C22.1,6 22.1,6.7 21.7,7M4,17.2L13.6,7.6L17.3,11.4L7.8,21H4V17.2M8,5V4.5C8,3.1 6.9,2 5.5,2C4.1,2 3,3.1 3,4.5V5C2.4,5 2,5.4 2,6V10C2,10.6 2.4,11 3,11H8C8.6,11 9,10.6 9,10V6C9,5.4 8.6,5 8,5M7,5H4V4.5C4,3.7 4.7,3 5.5,3C6.3,3 7,3.7 7,4.5V5Z"; +var mdiPenMinus = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M10,5V7H2V5H10Z"; +var mdiPenOff = "M2.3,5L1,6.3L7.5,12.8L3,17.2V21H6.8L11.3,16.5L17.8,23L19.1,21.7L2.3,5M16.9,10.9L13.1,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.6 20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.7 20.6,9C21.1,9.5 21.6,10 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.9,10.9M10,10.2L12.5,7.7L16.3,11.5L13.8,14L10,10.2Z"; +var mdiPenPlus = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z"; +var mdiPenRemove = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M3.88,2.46L6,4.59L8.12,2.46L9.54,3.88L7.41,6L9.54,8.12L8.12,9.54L6,7.41L3.88,9.54L2.46,8.12L4.59,6L2.46,3.88L3.88,2.46Z"; +var mdiPencil = "M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"; +var mdiPencilBox = "M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z"; +var mdiPencilBoxMultiple = "M20.22 2H7.78C6.8 2 6 2.8 6 3.78V16.22C6 17.2 6.8 18 7.78 18H20.22C21.2 18 22 17.21 22 16.22V3.78C22 2.8 21.2 2 20.22 2M11.06 15H9V12.94L15.06 6.88L17.12 8.94L11.06 15M18.7 7.35L17.7 8.35L15.65 6.3L16.65 5.3C16.86 5.08 17.21 5.08 17.42 5.3L18.7 6.58C18.92 6.79 18.92 7.14 18.7 7.35M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; +var mdiPencilBoxMultipleOutline = "M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6M18.7 7.35L17.7 8.35L15.65 6.3L16.65 5.3C16.86 5.08 17.21 5.08 17.42 5.3L18.7 6.58C18.92 6.79 18.92 7.14 18.7 7.35M9 12.94L15.06 6.88L17.12 8.94L11.06 15H9V12.94M20 4L20 4L20 16L8 16L8 4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.1 6.9 18 8 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z"; +var mdiPencilBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z"; +var mdiPencilCircle = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z"; +var mdiPencilCircleOutline = "M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2"; +var mdiPencilLock = "M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z"; +var mdiPencilLockOutline = "M16.1,9L17,9.9L7.9,19H7V18.1L16.1,9M19.7,3C19.5,3 19.2,3.1 19,3.3L17.2,5.1L20.9,8.9L22.7,7C23.1,6.6 23.1,6 22.7,5.6L20.4,3.3C20.2,3.1 19.9,3 19.7,3M16.1,6.2L5,17.2V21H8.8L19.8,9.9L16.1,6.2M8,5V4.5C8,3.1 6.9,2 5.5,2C4.1,2 3,3.1 3,4.5V5C2.4,5 2,5.4 2,6V10C2,10.6 2.4,11 3,11H8C8.6,11 9,10.6 9,10V6C9,5.4 8.6,5 8,5M7,5H4V4.5C4,3.7 4.7,3 5.5,3C6.3,3 7,3.7 7,4.5V5Z"; +var mdiPencilMinus = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M10,5V7H2V5H10Z"; +var mdiPencilMinusOutline = "M14.1,9L15,9.9L5.9,19H5V18.1L14.1,9M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M10,5V7H2V5H10Z"; +var mdiPencilOff = "M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z"; +var mdiPencilOffOutline = "M10,10.2L14,6.2L17.8,10L13.8,14L12.4,12.6L15,9.9L14.1,9L11.5,11.6L10,10.2M20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L19,8.9L20.7,7C21.1,6.7 21.1,6 20.7,5.6M19,21.7L17.7,23L11.2,16.5L6.8,21H3V17.2L7.5,12.7L1,6.3L2.3,5L19,21.7M9.8,15.1L8.9,14.2L5,18.1V19H5.9L9.8,15.1Z"; +var mdiPencilOutline = "M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"; +var mdiPencilPlus = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z"; +var mdiPencilPlusOutline = "M14.1,9L15,9.9L5.9,19H5V18.1L14.1,9M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z"; +var mdiPencilRemove = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M3.9,2.4L6,4.5L8.1,2.4L9.5,3.8L7.4,5.9L9.5,8L8.1,9.5L6,7.4L3.9,9.5L2.5,8.1L4.6,6L2.5,3.8L3.9,2.4Z"; +var mdiPencilRemoveOutline = "M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M5.9,19H5V18.1L14.1,9L15,9.9L5.9,19M3.9,2.5L6,4.6L8.1,2.5L9.5,3.9L7.4,6L9.5,8.1L8.1,9.5L6,7.4L3.9,9.5L2.5,8.1L4.6,6L2.5,3.9L3.9,2.5Z"; +var mdiPencilRuler = "M3 17.25V21H6.75L17.81 9.93L14.06 6.18L3 17.25M22.61 18.36L18.36 22.61L13.16 17.41L14.93 15.64L15.93 16.64L18.4 14.16L19.82 15.58L18.36 17L19.42 18L20.84 16.6L22.61 18.36M6.61 10.83L1.39 5.64L5.64 1.39L7.4 3.16L4.93 5.64L6 6.7L8.46 4.22L9.88 5.64L8.46 7.05L9.46 8.05L6.61 10.83M20.71 7C21.1 6.61 21.1 6 20.71 5.59L18.37 3.29C18 2.9 17.35 2.9 16.96 3.29L15.12 5.12L18.87 8.87L20.71 7Z"; +var mdiPenguin = "M19,16C19,17.72 18.37,19.3 17.34,20.5C17.75,20.89 18,21.41 18,22H6C6,21.41 6.25,20.89 6.66,20.5C5.63,19.3 5,17.72 5,16H3C3,14.75 3.57,13.64 4.46,12.91L4.47,12.89C6,11.81 7,10 7,8V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V8C17,10 18,11.81 19.53,12.89L19.54,12.91C20.43,13.64 21,14.75 21,16H19M16,16A4,4 0 0,0 12,12A4,4 0 0,0 8,16A4,4 0 0,0 12,20A4,4 0 0,0 16,16M10,9L12,10.5L14,9L12,7.5L10,9M10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5M14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5Z"; +var mdiPentagon = "M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z"; +var mdiPentagonOutline = "M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z"; +var mdiPentagram = "M16.15 14.4L18.71 22.26L12 17.4L5.28 22.3L7.85 14.37L1.15 9.5H9.44L12 1.61L14.56 9.5H22.89L16.15 14.4M13.3 16.47L15.86 18.33L14.88 15.32L13.3 16.47M11 9.5H13L12 6.47L11 9.5M10.74 16.47L9.13 15.3L8.13 18.37L10.74 16.47M18.28 11H15.05L15.67 12.9L18.28 11M10.53 11L9.62 13.8L12 15.54L14.39 13.82L13.47 11H10.53M5.76 11L8.34 12.87L8.95 11H5.76Z"; +var mdiPercent = "M18.5,3.5L3.5,18.5L5.5,20.5L20.5,5.5M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4M17,14A3,3 0 0,0 14,17A3,3 0 0,0 17,20A3,3 0 0,0 20,17A3,3 0 0,0 17,14Z"; +var mdiPercentOutline = "M18.5 3.5L20.5 5.5L5.5 20.5L3.5 18.5L18.5 3.5M7 4C8.66 4 10 5.34 10 7C10 8.66 8.66 10 7 10C5.34 10 4 8.66 4 7C4 5.34 5.34 4 7 4M17 14C18.66 14 20 15.34 20 17C20 18.66 18.66 20 17 20C15.34 20 14 18.66 14 17C14 15.34 15.34 14 17 14M7 6C6.45 6 6 6.45 6 7C6 7.55 6.45 8 7 8C7.55 8 8 7.55 8 7C8 6.45 7.55 6 7 6M17 16C16.45 16 16 16.45 16 17C16 17.55 16.45 18 17 18C17.55 18 18 17.55 18 17C18 16.45 17.55 16 17 16Z"; +var mdiPeriodicTable = "M2,4V6H4V4H2M20,4V6H22V4H20M2,7V9H4V7H2M5,7V9H7V7H5M14,7V9H16V7H14M17,7V9H19V7H17M20,7V9H22V7H20M2,10V12H4V10H2M5,10V12H7V10H5M8,10V12H10V10H8M11,10V12H13V10H11M14,10V12H16V10H14M17,10V12H19V10H17M20,10V12H22V10H20M2,13V15H4V13H2M5,13V15H7V13H5M8,13V15H10V13H8M11,13V15H13V13H11M14,13V15H16V13H14M17,13V15H19V13H17M20,13V15H22V13H20M5,17V19H7V17H5M8,17V19H10V17H8M11,17V19H13V17H11M14,17V19H16V17H14M17,17V19H19V17H17Z"; +var mdiPerspectiveLess = "M16.56,12L19.23,20H4.78L7.44,12H16.56M7,1L3,5L7,9V6H11V4H7V1M17,1V4H13V6H17V9L21,5L17,1M18,10H6L2,22H22L18,10Z"; +var mdiPerspectiveMore = "M16.56,12L19.23,20H4.78L7.44,12H16.56M17,1L13,5L17,9V6H21V4H17V1M7,1V4H3V6H7V9L11,5L7,1M18,10H6L2,22H22L18,10Z"; +var mdiPharmacy = "M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z"; +var mdiPhone = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"; +var mdiPhoneAlert = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4C3,3.44 3.45,3 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79M17,12V10H19V12H17M17,8V2H19V8H17Z"; +var mdiPhoneAlertOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M17 12V10H19V12H17M17 8V2H19V8H17Z"; +var mdiPhoneBluetooth = "M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z"; +var mdiPhoneBluetoothOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M18 7.21L18.94 8.14L18 9.08M18 2.91L18.94 3.85L18 4.79M14.71 9.5L17 7.21V11H17.5L20.35 8.14L18.21 6L20.35 3.85L17.5 1H17V4.79L14.71 2.5L14 3.21L16.79 6L14 8.79L14.71 9.5Z"; +var mdiPhoneCancel = "M6.62 10.79C8.06 13.62 10.38 15.94 13.21 17.38L15.41 15.18C15.69 14.9 16.08 14.82 16.43 14.93C17.55 15.3 18.75 15.5 20 15.5C20.55 15.5 21 15.95 21 16.5V20C21 20.55 20.55 21 20 21C10.61 21 3 13.39 3 4C3 3.45 3.45 3 4 3H7.5C8.05 3 8.5 3.45 8.5 4C8.5 5.25 8.7 6.45 9.07 7.57C9.18 7.92 9.1 8.31 8.82 8.59L6.62 10.79M16.5 2C14 2 12 4 12 6.5S14 11 16.5 11 21 9 21 6.5 19 2 16.5 2M16.5 9.5C14.84 9.5 13.5 8.16 13.5 6.5C13.5 5.94 13.65 5.42 13.92 5L18 9.08C17.58 9.35 17.06 9.5 16.5 9.5M19.08 8L15 3.92C15.42 3.65 15.94 3.5 16.5 3.5C18.16 3.5 19.5 4.84 19.5 6.5C19.5 7.06 19.35 7.58 19.08 8Z"; +var mdiPhoneCancelOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M16.5 2C14 2 12 4 12 6.5S14 11 16.5 11 21 9 21 6.5 19 2 16.5 2M16.5 9.5C14.84 9.5 13.5 8.16 13.5 6.5C13.5 5.94 13.65 5.42 13.92 5L18 9.08C17.58 9.35 17.06 9.5 16.5 9.5M19.08 8L15 3.92C15.42 3.65 15.94 3.5 16.5 3.5C18.16 3.5 19.5 4.84 19.5 6.5C19.5 7.06 19.35 7.58 19.08 8Z"; +var mdiPhoneCheck = "M6.62 10.79A15.1 15.1 0 0 0 13.21 17.38L15.41 15.18A1 1 0 0 1 16.41 14.93A11.36 11.36 0 0 0 20 15.5A1 1 0 0 1 21 16.5V20A1 1 0 0 1 20 21A17 17 0 0 1 3 4A1 1 0 0 1 4 3H7.5A1 1 0 0 1 8.5 4A11.36 11.36 0 0 0 9.07 7.57A1 1 0 0 1 8.82 8.57M21.71 4.71L20.29 3.29L15 8.59L12.71 6.29L11.29 7.71L15 11.41Z"; +var mdiPhoneCheckOutline = "M20 15.5A11.36 11.36 0 0 1 16.43 14.93A1 1 0 0 0 15.43 15.18L13.23 17.38A15.1 15.1 0 0 1 6.64 10.79L8.84 8.59A1 1 0 0 0 9.09 7.59A11.36 11.36 0 0 1 8.5 4A1 1 0 0 0 7.5 3H4A1 1 0 0 0 3 4A17 17 0 0 0 20 21A1 1 0 0 0 21 20V16.5A1 1 0 0 0 20 15.5M5 5H6.54A12.54 12.54 0 0 0 7 7.59L5.79 8.8A15 15 0 0 1 5 5M19 19A15 15 0 0 1 15.2 18.24L16.41 17A12.31 12.31 0 0 0 19 17.45M15 11.44L11.29 7.74L12.71 6.32L15 8.59L20.29 3.29L21.71 4.71Z"; +var mdiPhoneClassic = "M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z"; +var mdiPhoneClassicOff = "M12 3C16.53 3 20.65 4.78 23.7 7.67C23.88 7.85 24 8.09 24 8.37C24 8.65 23.89 8.9 23.71 9.08L21.23 11.56C21.05 11.74 20.8 11.85 20.5 11.85C20.25 11.85 20 11.75 19.82 11.57C19 10.84 18.13 10.21 17.15 9.72C16.82 9.56 16.59 9.21 16.59 8.82V5.72C15.14 5.25 13.59 5 12 5C10.44 5 8.93 5.24 7.5 5.69L5.94 4.11C7.82 3.4 9.86 3 12 3M9 7H11V9H13V7H15V10C15 10 21 15 21 18V19.18L9 7.18V7M1 4.27L2.28 3L21.5 22.22L20.23 23.5L18.73 22H3V18C3 15.86 6.05 12.71 7.8 11.07L6.59 9.86C5.71 10.33 4.9 10.9 4.18 11.58C4 11.75 3.75 11.86 3.5 11.86C3.2 11.86 2.95 11.75 2.77 11.57L.29 9.09C.11 8.91 0 8.66 0 8.38C0 8.1 .11 7.85 .29 7.67C.996 7 2.58 5.85 2.58 5.85L1 4.27M8 16C8 18.21 9.79 20 12 20C13.29 20 14.44 19.39 15.17 18.44L14.1 17.36C13.65 18.05 12.88 18.5 12 18.5C10.62 18.5 9.5 17.38 9.5 16C9.5 15.12 9.95 14.35 10.64 13.91L9.56 12.83C8.61 13.56 8 14.71 8 16Z"; +var mdiPhoneDial = "M6.6 10.8C8 13.6 10.4 15.9 13.2 17.4L15.4 15.2C15.7 14.9 16.1 14.8 16.4 15C17.5 15.4 18.7 15.6 20 15.6C20.6 15.6 21 16 21 16.6V20C21 20.6 20.6 21 20 21C10.6 21 3 13.4 3 4C3 3.4 3.5 3 4 3H7.5C8.1 3 8.5 3.4 8.5 4C8.5 5.2 8.7 6.4 9.1 7.6C9.2 7.9 9.1 8.3 8.9 8.6L6.6 10.8M14 3C13.4 3 13 3.4 13 4S13.4 5 14 5 15 4.6 15 4 14.6 3 14 3M17 3C16.4 3 16 3.4 16 4S16.4 5 17 5 18 4.6 18 4 17.6 3 17 3M20 3C19.4 3 19 3.4 19 4S19.4 5 20 5 21 4.6 21 4 20.6 3 20 3M14 6C13.4 6 13 6.4 13 7S13.4 8 14 8 15 7.6 15 7 14.6 6 14 6M17 6C16.4 6 16 6.4 16 7S16.4 8 17 8 18 7.6 18 7 17.6 6 17 6M20 6C19.4 6 19 6.4 19 7S19.4 8 20 8 21 7.6 21 7 20.6 6 20 6M14 9C13.4 9 13 9.4 13 10S13.4 11 14 11 15 10.6 15 10 14.6 9 14 9M17 9C16.4 9 16 9.4 16 10S16.4 11 17 11 18 10.6 18 10 17.6 9 17 9M20 9C19.4 9 19 9.4 19 10S19.4 11 20 11 21 10.6 21 10 20.6 9 20 9Z"; +var mdiPhoneDialOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 4C15 4.6 14.6 5 14 5S13 4.6 13 4 13.4 3 14 3 15 3.4 15 4M18 4C18 4.6 17.6 5 17 5S16 4.6 16 4 16.4 3 17 3 18 3.4 18 4M21 4C21 4.6 20.6 5 20 5S19 4.6 19 4 19.4 3 20 3 21 3.4 21 4M15 7C15 7.6 14.6 8 14 8S13 7.6 13 7 13.4 6 14 6 15 6.4 15 7M18 7C18 7.6 17.6 8 17 8S16 7.6 16 7 16.4 6 17 6 18 6.4 18 7M21 7C21 7.6 20.6 8 20 8S19 7.6 19 7 19.4 6 20 6 21 6.4 21 7M15 10C15 10.6 14.6 11 14 11S13 10.6 13 10 13.4 9 14 9 15 9.4 15 10M18 10C18 10.6 17.6 11 17 11S16 10.6 16 10 16.4 9 17 9 18 9.4 18 10M21 10C21 10.6 20.6 11 20 11S19 10.6 19 10 19.4 9 20 9 21 9.4 21 10Z"; +var mdiPhoneForward = "M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z"; +var mdiPhoneForwardOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M18 11L23 6L18 1V4H14V8H18V11Z"; +var mdiPhoneHangup = "M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z"; +var mdiPhoneHangupOutline = "M23.71 11.67A17 17 0 0 0 .29 11.67A1 1 0 0 0 0 12.38A1 1 0 0 0 .29 13.08L2.77 15.56A1 1 0 0 0 3.5 15.85A1 1 0 0 0 4.18 15.57A11.5 11.5 0 0 1 6.84 13.72A1 1 0 0 0 7.4 12.82V9.72A14.91 14.91 0 0 1 12 9A14.5 14.5 0 0 1 16.59 9.73V12.83A1 1 0 0 0 17.15 13.73A11.27 11.27 0 0 1 19.82 15.58A1 1 0 0 0 20.5 15.86A1 1 0 0 0 21.23 15.57L23.71 13.09A1 1 0 0 0 23.71 11.67M5.4 12.22A13.68 13.68 0 0 0 3.53 13.5L2.46 12.42A15.54 15.54 0 0 1 5.4 10.5M20.5 13.5A13.75 13.75 0 0 0 18.6 12.23V10.53A14.26 14.26 0 0 1 21.55 12.43Z"; +var mdiPhoneInTalk = "M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z"; +var mdiPhoneInTalkOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 12H17A5 5 0 0 0 12 7V9A3 3 0 0 1 15 12M19 12H21C21 7 16.97 3 12 3V5C15.86 5 19 8.13 19 12Z"; +var mdiPhoneIncoming = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z"; +var mdiPhoneIncomingOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19 11V9.5H15.5L21 4L20 3L14.5 8.5V5H13V11H19Z"; +var mdiPhoneLock = "M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z"; +var mdiPhoneLockOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19.2 4H15.8V3.5C15.8 2.56 16.56 1.8 17.5 1.8C18.44 1.8 19.2 2.56 19.2 3.5M20 4V3.5A2.5 2.5 0 0 0 17.5 1A2.5 2.5 0 0 0 15 3.5V4A1 1 0 0 0 14 5V9A1 1 0 0 0 15 10H20A1 1 0 0 0 21 9V5A1 1 0 0 0 20 4Z"; +var mdiPhoneLog = "M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15"; +var mdiPhoneLogOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M12 3H14V5H12M15 3H21V5H15M12 6H14V8H12M15 6H21V8H15M12 9H14V11H12M15 9H21V11H15Z"; +var mdiPhoneMessage = "M20 15.5C18.75 15.5 17.55 15.3 16.43 14.93C16.08 14.82 15.69 14.9 15.41 15.17L13.21 17.37C10.38 15.93 8.06 13.62 6.62 10.79L8.82 8.58C9.1 8.31 9.18 7.92 9.07 7.57C8.7 6.45 8.5 5.25 8.5 4C8.5 3.45 8.05 3 7.5 3H4C3.45 3 3 3.45 3 4C3 13.39 10.61 21 20 21C20.55 21 21 20.55 21 20V16.5C21 15.95 20.55 15.5 20 15.5M12 3V13L15 10H21V3H12Z"; +var mdiPhoneMessageOutline = "M20 15.5C18.75 15.5 17.55 15.3 16.43 14.93C16.33 14.9 16.22 14.88 16.12 14.88C15.86 14.88 15.61 15 15.41 15.17L13.21 17.37C10.38 15.93 8.06 13.62 6.62 10.79L8.82 8.58C9.1 8.31 9.18 7.92 9.07 7.57C8.7 6.45 8.5 5.25 8.5 4C8.5 3.45 8.05 3 7.5 3H4C3.45 3 3 3.45 3 4C3 13.39 10.61 21 20 21C20.55 21 21 20.55 21 20V16.5C21 15.95 20.55 15.5 20 15.5M5.03 5H6.53C6.6 5.88 6.75 6.75 7 7.59L5.79 8.8C5.38 7.59 5.12 6.32 5.03 5M19 18.97C17.68 18.88 16.4 18.62 15.2 18.21L16.4 17C17.25 17.25 18.12 17.4 19 17.46V18.97M12 3V13L15 10H21V3H12M19 8H14V5H19V8Z"; +var mdiPhoneMinus = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6"; +var mdiPhoneMinusOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M13 6V8H21V6Z"; +var mdiPhoneMissed = "M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z"; +var mdiPhoneMissedOutline = "M18.6 15.5v1.8c.7.4 1.3.8 1.9 1.3l1.1-1.1c-.9-.9-1.9-1.5-3-2m-13.2 0c-1 .5-2 1.1-2.9 1.9l1.1 1.1c.6-.5 1.2-.9 1.9-1.3v-1.7M12 12c4.5 0 8.7 1.7 11.7 4.7.2.2.3.4.3.7 0 .3-.1.5-.3.7l-2.5 2.5c-.2.2-.4.3-.7.3-.2 0-.5-.1-.7-.3-.8-.7-1.7-1.4-2.7-1.8-.3-.2-.6-.5-.6-.9v-3.1c-1.5-.5-3-.7-4.6-.7-1.6 0-3.1.2-4.6.7v3.1c0 .4-.2.7-.6.9-1 .5-1.9 1.1-2.7 1.8-.2.2-.4.3-.7.3-.3 0-.5-.1-.7-.3L.1 18.1c0-.2-.1-.5-.1-.7 0-.3.1-.5.3-.7C3.3 13.8 7.5 12 12 12zM6.5 5.5V9H5V3h6v1.5H7.5L12 9l6-6 1 1-7 7-5.5-5.5z"; +var mdiPhoneOff = "M20.22,2.5L2.5,20.22L3.77,21.5L8.65,16.62C11.76,19.43 15.81,21 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C12.06,16.8 11,16.06 10.06,15.21L21.5,3.77L20.22,2.5M4,3A1,1 0 0,0 3,4C3,7.57 4.14,11.05 6.24,13.94L7.66,12.5C7.28,11.97 6.93,11.39 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4Z"; +var mdiPhoneOffOutline = "M16.4 17C17.2 17.2 18.1 17.4 19 17.5V19C17.7 18.9 16.4 18.7 15.2 18.2L16.4 17M20.2 2.5L2.5 20.2L3.8 21.5L8.7 16.6C11.8 19.4 15.8 21 20 21C20.6 21 21 20.6 21 20V16.5C21 15.9 20.6 15.5 20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C12.1 16.8 11 16.1 10.1 15.2L21.5 3.8L20.2 2.5M6.5 5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5H6.5M7.5 3H4C3.4 3 3 3.4 3 4C3 7.6 4.1 11 6.2 13.9L7.6 12.5C7.2 12 6.9 11.4 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.4 8.5 5.2 8.5 4C8.5 3.4 8.1 3 7.5 3Z"; +var mdiPhoneOutgoing = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z"; +var mdiPhoneOutgoingOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 3V4.5H18.5L13 10L14 11L19.5 5.5V9H21V3H15Z"; +var mdiPhoneOutline = "M20,15.5C18.8,15.5 17.5,15.3 16.4,14.9C16.3,14.9 16.2,14.9 16.1,14.9C15.8,14.9 15.6,15 15.4,15.2L13.2,17.4C10.4,15.9 8,13.6 6.6,10.8L8.8,8.6C9.1,8.3 9.2,7.9 9,7.6C8.7,6.5 8.5,5.2 8.5,4C8.5,3.5 8,3 7.5,3H4C3.5,3 3,3.5 3,4C3,13.4 10.6,21 20,21C20.5,21 21,20.5 21,20V16.5C21,16 20.5,15.5 20,15.5M5,5H6.5C6.6,5.9 6.8,6.8 7,7.6L5.8,8.8C5.4,7.6 5.1,6.3 5,5M19,19C17.7,18.9 16.4,18.6 15.2,18.2L16.4,17C17.2,17.2 18.1,17.4 19,17.4V19Z"; +var mdiPhonePaused = "M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z"; +var mdiPhonePausedOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19 10H21V3H19M17 3H15V10H17V3Z"; +var mdiPhonePlus = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3"; +var mdiPhonePlusOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M16 3V6H13V8H16V11H18V8H21V6H18V3Z"; +var mdiPhoneRemove = "M4 3C3.4 3 3 3.4 3 4C3 13.4 10.6 21 20 21C20.6 21 21 20.6 21 20V16.5C21 15.9 20.6 15.5 20 15.5C18.8 15.5 17.5 15.3 16.4 14.9C16 14.8 15.7 14.9 15.4 15.1L13.2 17.3C10.4 15.9 8.1 13.5 6.6 10.7L8.8 8.5C9.1 8.2 9.2 7.8 9 7.5C8.7 6.4 8.5 5.2 8.5 4C8.5 3.4 8.1 3 7.5 3M19.1 3.5L17 5.6L14.9 3.5L13.5 4.9L15.6 7L13.5 9.1L14.9 10.5L17 8.4L19.1 10.5L20.5 9.1L18.4 7L20.5 4.9"; +var mdiPhoneRemoveOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19.1 3.5L17 5.6L14.9 3.5L13.5 4.9L15.6 7L13.5 9.1L14.9 10.5L17 8.4L19.1 10.5L20.5 9.1L18.4 7L20.5 4.9L19.1 3.5Z"; +var mdiPhoneReturn = "M21,6V11H19.5V7.5H13.87L16.3,9.93L15.24,11L11,6.75L15.24,2.5L16.3,3.57L13.87,6H21M8.82,8.58C9.08,8.32 9.17,7.93 9.06,7.58C8.69,6.42 8.5,5.22 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.79,15.5 17.58,15.31 16.43,14.93C16.08,14.82 15.69,14.91 15.43,15.17L13.23,17.37C10.39,15.92 8.09,13.62 6.64,10.78L8.82,8.58Z"; +var mdiPhoneReturnOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M21 6V11H19.5V7.5H13.87L16.3 9.93L15.24 11L11 6.75L15.24 2.5L16.3 3.57L13.87 6H21Z"; +var mdiPhoneRing = "M23.71 16.67C20.66 13.78 16.54 12 12 12S3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71a.99.99 0 0 0-.29-.7zM21.16 6.26l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM13 2h-2v5h2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z"; +var mdiPhoneRingOutline = "M23.71 16.67C20.66 13.78 16.54 12 12 12S3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71a.99.99 0 0 0-.29-.7zm-18.31.56c-.66.37-1.29.8-1.87 1.27l-1.07-1.07c.91-.75 1.9-1.39 2.95-1.9v1.7H5.4zm15.07 1.26c-.59-.48-1.21-.9-1.87-1.27v-1.7c1.04.51 2.03 1.15 2.94 1.9l-1.07 1.07zm.69-12.23l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM11 2h2v5h-2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z"; +var mdiPhoneRotateLandscape = "M9,1H3A2,2 0 0,0 1,3V16A2,2 0 0,0 3,18H9A2,2 0 0,0 11,16V3A2,2 0 0,0 9,1M9,15H3V3H9V15M21,13H13V15H21V21H9V20H6V21A2,2 0 0,0 8,23H21A2,2 0 0,0 23,21V15A2,2 0 0,0 21,13M23,10L19,8L20.91,7.09C19.74,4.31 17,2.5 14,2.5V1A9,9 0 0,1 23,10Z"; +var mdiPhoneRotatePortrait = "M9,1H3A2,2 0 0,0 1,3V16A2,2 0 0,0 3,18H4V15H3V3H9V11H11V3A2,2 0 0,0 9,1M23,21V15A2,2 0 0,0 21,13H8A2,2 0 0,0 6,15V21A2,2 0 0,0 8,23H21A2,2 0 0,0 23,21M9,21V15H21V21H9M23,10H21.5C21.5,7 19.69,4.27 16.92,3.09L16,5L14,1A9,9 0 0,1 23,10Z"; +var mdiPhoneSettings = "M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z"; +var mdiPhoneSettingsOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M17 9H15V11H17M13 9H11V11H13V9M19 11H21V9H19Z"; +var mdiPhoneVoip = "M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z"; +var mdiPi = "M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5"; +var mdiPiBox = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6"; +var mdiPiHole = "M5.62,2C9.5,2 11.57,4.29 11.77,7.93C12.5,3.57 15.93,4.08 15.93,4.08C16.1,6.55 14.07,8.05 11.77,8.17C11.12,6.81 7.25,3.47 7.25,3.47C7.23,3.5 10.97,6.74 10.83,8.15C8.33,7.88 5.82,6 5.62,2M6.06,13.11L9.92,9.25C11.09,8.08 13,8.08 14.16,9.25L18,13.11C19.19,14.28 19.19,16.18 18,17.35L14.16,21.21C13,22.38 11.09,22.38 9.92,21.21L6.06,17.35C4.89,16.18 4.89,14.28 6.06,13.11M9.39,19.59C9.39,18.36 10.15,16.85 12.09,16.85C13.4,16.85 14.87,18.1 16.31,17.96C14.87,17.92 13.59,16.85 13.59,15.19C13.59,13.86 14.69,12.9 14.69,11.34C14.63,12.33 13.82,13.77 12,13.77C10.59,13.77 9.55,12.63 7.87,12.63C8.58,12.67 10.5,13.3 10.5,15.35C10.5,17 9.39,17.5 9.39,19.59Z"; +var mdiPiano = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z"; +var mdiPickaxe = "M14.79,10.62L3.5,21.9L2.1,20.5L13.38,9.21L14.79,10.62M19.27,7.73L19.86,7.14L19.07,6.35L19.71,5.71L18.29,4.29L17.65,4.93L16.86,4.14L16.27,4.73C14.53,3.31 12.57,2.17 10.47,1.37L9.64,3.16C11.39,4.08 13,5.19 14.5,6.5L14,7L17,10L17.5,9.5C18.81,11 19.92,12.61 20.84,14.36L22.63,13.53C21.83,11.43 20.69,9.47 19.27,7.73Z"; +var mdiPictureInPictureBottomRight = "M19,11H11V17H19V11M23,19V5C23,3.88 22.1,3 21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19M21,19H3V4.97H21V19Z"; +var mdiPictureInPictureBottomRightOutline = "M19,11H11V17H19V11M17,15H13V13H17V15M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5C23,3.88 22.1,3 21,3M21,19H3V4.97H21V19Z"; +var mdiPictureInPictureTopRight = "M19,7H11V13H19V7M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H21V19Z"; +var mdiPictureInPictureTopRightOutline = "M19,7H11V13H19V7M17,11H13V9H17V11M21,3H3A2,2 0 0,0 1,5V19C1,20.11 1.9,21 3,21H21A2,2 0 0,0 23,19V5C23,3.91 22.1,3 21,3M21,19H3V5H21V19Z"; +var mdiPier = "M20,18C18.6,18 17.2,17.5 16,16.7C13.6,18.4 10.4,18.4 8,16.7C6.8,17.5 5.4,18 4,18H2V20H4C5.4,20 6.7,19.6 8,19C10.5,20.3 13.5,20.3 16,19C17.3,19.6 18.6,20 20,20H22V18H20M20,13H19V16.9C18.3,16.8 17.6,16.6 17,16.2V13H12V17C11.3,17 10.7,16.9 10,16.7V13H5V16.9C4.7,17 4.3,17 4,17H3V13H2V11H3V9H5V11H10V9H12V11H17V9H19V11H20V13Z"; +var mdiPierCrane = "M20,20C18.61,20 17.22,19.53 16,18.67C13.56,20.38 10.44,20.38 8,18.67C6.78,19.53 5.39,20 4,20H2V22H4C5.37,22 6.74,21.65 8,21C10.5,22.3 13.5,22.3 16,21C17.26,21.65 18.62,22 20,22H22V20H20M20,4V3A1,1 0 0,0 19,2H9V1H6V2H5V4H6V13H5V11H3V13H2V15H3V19H4C4.33,19 4.67,18.97 5,18.92V15H10V18.65C10.65,18.85 11.33,18.95 12,18.95V18.92L12,15H13V13H12V11H10V13H9V4H17V8.62C16.53,8.79 16.19,9.23 16.19,9.76C16.19,10.2 16.43,10.6 16.8,10.82V12H17.42C17.76,12 18.03,12.28 18.03,12.62C18.03,12.96 17.76,13.24 17.42,13.24C17.2,13.24 17,13.12 16.88,12.93C16.71,12.64 16.34,12.54 16.05,12.71C15.75,12.87 15.65,13.25 15.82,13.55C16.15,14.11 16.76,14.47 17.42,14.47C18.43,14.47 19.26,13.64 19.26,12.62C19.26,11.84 18.76,11.14 18.03,10.88V10.82C18.41,10.6 18.65,10.2 18.65,9.76C18.65,9.3 18.38,8.91 18,8.7V4H20M8,11.66L7,12.66V11.24L8,10.24V11.66M8,8.71L7,9.71V8.29L8,7.29V8.71M7,6.71V5.29L8,4.29V5.71L7,6.71Z"; +var mdiPig = "M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z"; +var mdiPigVariant = "M20 12C20 8.69 16.42 6 12 6C11.15 6 10.34 6.1 9.57 6.28L7 5V7.32C5.5 8.22 4.45 9.5 4.12 11H2V15H5.08C5.58 15.65 6.23 16.22 7 16.68V20H9V17.56C9.93 17.84 10.94 18 12 18S14.07 17.84 15 17.56V20H17V16.68C18.15 16 19.03 15.06 19.54 14H22V12H20M7 11C6.45 11 6 10.55 6 10S6.45 9 7 9 8 9.45 8 10 7.55 11 7 11Z"; +var mdiPigVariantOutline = "M9 12C8.4 12 8 11.6 8 11S8.4 10 9 10 10 10.4 10 11 9.6 12 9 12M22 12H20C20 8.7 16.4 6 12 6C11.2 6 10.3 6.1 9.6 6.3L7 5V7.3C5.5 8.2 4.5 9.5 4.1 11H2V15H5.1C5.6 15.6 6.2 16.2 7 16.7V20H9V17.6C9.9 17.9 10.9 18 12 18S14.1 17.8 15 17.6V20H17V16.7C18.1 16 19 15.1 19.5 14H22V12M12 16C8.7 16 6 14.2 6 12S8.7 8 12 8 18 9.8 18 12 15.3 16 12 16Z"; +var mdiPiggyBank = "M13 1C14.66 1 16 2.34 16 4S14.66 7 13 7 10 5.66 10 4 11.34 1 13 1M20 14C20 11.64 18.17 9.6 15.5 8.62C15 9.45 14.06 10 13 10C11.76 10 10.69 9.24 10.24 8.17C10 8.2 9.78 8.23 9.57 8.29L7 7V9.32C5.5 10.22 4.45 11.5 4.12 13H2V17H5.08C5.58 17.65 6.23 18.22 7 18.68V22H9V19.56C9.93 19.84 10.94 20 12 20S14.07 19.84 15 19.56V22H17V18.68C18.15 18 19.03 17.06 19.54 16H22V14H20M7 13C6.45 13 6 12.55 6 12S6.45 11 7 11 8 11.45 8 12 7.55 13 7 13Z"; +var mdiPiggyBankOutline = "M22 14H20C20 11.6 18.2 9.6 15.5 8.6C15 9.4 14.1 10 13 10C11.7 10 10.7 9.2 10.2 8.2C10 8.2 9.8 8.3 9.5 8.3L7 7V9.3C5.5 10.2 4.4 11.5 4.1 13H2V17H5.1C5.6 17.6 6.2 18.2 7 18.7V22H9V19.6C9.9 19.9 10.9 20 12 20S14.1 19.8 15 19.6V22H17V18.7C18.1 18 19 17.1 19.5 16H22V14M12 18C8.7 18 6 16.2 6 14C6 12.5 7.4 11.1 9.4 10.4C10.3 11.4 11.6 12 13 12C14.1 12 15.1 11.7 16 11C17.3 11.8 18 12.9 18 14C18 16.2 15.3 18 12 18M13 3C13.6 3 14 3.4 14 4S13.6 5 13 5 12 4.6 12 4 12.4 3 13 3M13 1C11.3 1 10 2.3 10 4S11.3 7 13 7 16 5.7 16 4 14.7 1 13 1M10 13C10 13.6 9.6 14 9 14S8 13.6 8 13 8.4 12 9 12 10 12.4 10 13"; +var mdiPill = "M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z"; +var mdiPillar = "M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z"; +var mdiPin = "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z"; +var mdiPinOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z"; +var mdiPinOffOutline = "M8,6.2V4H7V2H17V4H16V12L18,14V16H17.8L14,12.2V4H10V8.2L8,6.2M20,20.7L18.7,22L12.8,16.1V22H11.2V16H6V14L8,12V11.3L2,5.3L3.3,4L20,20.7M8.8,14H10.6L9.7,13.1L8.8,14Z"; +var mdiPinOutline = "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12M8.8,14L10,12.8V4H14V12.8L15.2,14H8.8Z"; +var mdiPineTree = "M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z"; +var mdiPineTreeBox = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z"; +var mdiPineTreeFire = "M22.14 14.84L22.12 14.85C22.35 15.13 22.55 15.44 22.7 15.77L22.79 15.96C23.5 17.65 23 19.6 21.69 20.82C20.5 21.91 18.84 22.2 17.3 22C15.84 21.82 14.5 20.9 13.73 19.63C13.5 19.24 13.3 18.8 13.2 18.35C13.07 18 13.03 17.62 13 17.25C12.91 15.65 13.55 13.95 14.76 12.95C14.21 14.16 14.34 15.67 15.15 16.72L15.26 16.85C15.4 16.97 15.57 17 15.73 16.94C15.88 16.88 16 16.73 16 16.57L15.93 16.33C15.05 14 15.79 11.3 17.66 9.77C18.17 9.35 18.8 8.97 19.46 8.8C18.78 10.16 19 11.94 20.09 13C20.55 13.5 21.11 13.79 21.58 14.23L22.14 14.84M19.86 19.5L19.85 19.47C20.3 19.08 20.55 18.41 20.53 17.81L20.5 17.5C20.3 16.5 19.43 16.16 18.87 15.43C18.7 15.21 18.55 14.93 18.44 14.65C18.22 15.15 18.2 15.62 18.29 16.16C18.39 16.73 18.61 17.22 18.5 17.81C18.34 18.46 17.83 19.11 16.94 19.32C17.44 19.81 18.25 20.2 19.06 19.92C19.32 19.85 19.65 19.66 19.86 19.5M9 21V18H2L7 13H4L9 8H6L11 3L16 8H13L14.82 9.82C12.55 11.06 11 13.59 11 16.5C11 18.19 11.5 19.75 12.4 21H9Z"; +var mdiPinterest = "M9.04,21.54C10,21.83 10.97,22 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12C2,16.25 4.67,19.9 8.44,21.34C8.35,20.56 8.26,19.27 8.44,18.38L9.59,13.44C9.59,13.44 9.3,12.86 9.3,11.94C9.3,10.56 10.16,9.53 11.14,9.53C12,9.53 12.4,10.16 12.4,10.97C12.4,11.83 11.83,13.06 11.54,14.24C11.37,15.22 12.06,16.08 13.06,16.08C14.84,16.08 16.22,14.18 16.22,11.5C16.22,9.1 14.5,7.46 12.03,7.46C9.21,7.46 7.55,9.56 7.55,11.77C7.55,12.63 7.83,13.5 8.29,14.07C8.38,14.13 8.38,14.21 8.35,14.36L8.06,15.45C8.06,15.62 7.95,15.68 7.78,15.56C6.5,15 5.76,13.18 5.76,11.71C5.76,8.55 8,5.68 12.32,5.68C15.76,5.68 18.44,8.15 18.44,11.43C18.44,14.87 16.31,17.63 13.26,17.63C12.29,17.63 11.34,17.11 11,16.5L10.33,18.87C10.1,19.73 9.47,20.88 9.04,21.57V21.54Z"; +var mdiPinwheel = "M12,12C12,9 14.5,6.5 17.5,6.5C20.5,6.5 23,9 23,12H12M12,12C12,15 9.5,17.5 6.5,17.5C3.5,17.5 1,15 1,12H12M12,12C9,12 6.5,9.5 6.5,6.5C6.5,3.5 9,1 12,1V12M12,12C15,12 17.5,14.5 17.5,17.5C17.5,20.5 15,23 12,23V12Z"; +var mdiPinwheelOutline = "M12,23H11V16.43C9.93,17.4 8.5,18 7,18C3.75,18 1,15.25 1,12V11H7.57C6.6,9.93 6,8.5 6,7C6,3.75 8.75,1 12,1H13V7.57C14.07,6.6 15.5,6 17,6C20.25,6 23,8.75 23,12V13H16.43C17.4,14.07 18,15.5 18,17C18,20.25 15.25,23 12,23M13,13.13V20.87C14.7,20.41 16,18.83 16,17C16,15.17 14.7,13.59 13,13.13M3.13,13C3.59,14.7 5.17,16 7,16C8.83,16 10.41,14.7 10.87,13H3.13M13.13,11H20.87C20.41,9.3 18.82,8 17,8C15.18,8 13.59,9.3 13.13,11M11,3.13C9.3,3.59 8,5.18 8,7C8,8.82 9.3,10.41 11,10.87V3.13Z"; +var mdiPipe = "M22,14H20V16H14V13H16V11H14V6A2,2 0 0,0 12,4H4V2H2V10H4V8H10V11H8V13H10V18A2,2 0 0,0 12,20H20V22H22"; +var mdiPipeDisconnected = "M16,9V11H8V9H10V8H4V10H2V2H4V4H12A2,2 0 0,1 14,6V9H16M10,15V18A2,2 0 0,0 12,20H20V22H22V14H20V16H14V15H16V13H8V15H10Z"; +var mdiPipeLeak = "M2,5V13H4V11H10L12,9L10,7H4V5H2M20,5V7H12L14,9L12,11H20V13H22V5H20M12,13C12,13 10,15.17 10,16.5A2,2 0 0,0 12,18.5A2,2 0 0,0 14,16.5C14,15.17 12,13 12,13Z"; +var mdiPipeWrench = "M16.17 5.63L14.06 7.78L11.91 5.63L16.17 1.41L19.69 4.92C20.86 6.09 20.86 8 19.69 9.19L16.17 5.63M4.83 12.7L7 14.81L10.5 11.3L8.39 9.19L4.83 12.7M15.47 7.78L19 11.3L17.58 12.7L16.88 12L6.23 22.59L3.42 19.78L11.91 11.3L7.69 7.03L9.8 4.92L14.06 9.19L15.47 7.78Z"; +var mdiPirate = "M8.2,12.1C7.9,12.3 7.7,12.7 7.8,13C7.8,13.7 8.5,14.2 9.1,14.2C9.7,14.2 10.3,13.7 10.3,13C9.7,12.6 9,12.3 8.2,12.1M22,11L23,7C23,7 21,7 18,5C15,3 15,1 12,1C9,1 9,3 6,5C3,7 1,7 1,7L2,11H2.1C2,11.3 2,11.7 2,12C2,15.5 3.8,18.6 6.5,20.4L6,21.3C12.4,25.4 18,21.3 18,21.3L17.5,20.4C20.2,18.6 22,15.5 22,12C22,11.7 22,11.3 22,11M11.3,4.5L9.9,3.1L10.6,2.4L12,3.8L13.4,2.4L14.1,3.1L12.7,4.5L14.1,5.9L13.4,6.6L12,5.2L10.6,6.6L9.9,5.9L11.3,4.5M9.3,8.5C10.3,8.2 11.3,8 12,8C14.2,8 17.9,9.6 19.8,10.4C19.9,10.7 19.9,11 19.9,11.3L9.3,8.5M13.6,19.1C12.9,19.5 12.2,19.8 11.4,19.9C10.9,19.5 10.9,18.7 11.4,18.3C11.8,17.9 12.7,17.7 13.2,18.2C13.5,18.3 13.6,18.8 13.6,19.1M20,13.4C19.5,15.5 18.2,17.4 16.5,18.6L15,16H9L7.5,18.6C5.4,17.2 4,14.8 4,12C4,11.5 4.1,11 4.2,10.5C4.7,10.3 5.3,10 6,9.7L13.1,11.6V14C13.1,14.5 13.5,15 14.1,15H16.1C16.6,15 17.1,14.6 17.1,14V12.6L20,13.4Z"; +var mdiPistol = "M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z"; +var mdiPiston = "M13,16.18C13.5,16.35 13.9,16.63 14.23,17H15V21H14.21C13.89,21.35 13.5,21.63 13,21.8C11.85,22.22 10.58,21.87 9.78,21H9V17H9.77C10.1,16.63 10.5,16.35 11,16.18V12H13V16.18M12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20M17,4H15V5H17V11H7V5H9V4H7V2H17V4M12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9Z"; +var mdiPitchfork = "M15.9 .9L13.1 3.7C12.3 4.5 12.3 5.7 13.1 6.5L14.5 8L9.2 13.4L7.8 12C7 11.2 5.8 11.2 5 12L1 16L2.4 17.4L6.4 13.4L7.8 14.8L3.8 18.8L5.2 20.2L9.2 16.2L10.6 17.6L9.9 18.4L6.7 21.6L8 23L12 19C12.8 18.2 12.8 17 12 16.2L10.6 14.8L15.9 9.4L17.3 10.8C18.1 11.6 19.3 11.6 20.1 10.8L23 8L15.9 .9M18.7 9.4L14.5 5.2L15.9 3.8L20.1 8L18.7 9.4Z"; +var mdiPizza = "M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z"; +var mdiPlay = "M8,5.14V19.14L19,12.14L8,5.14Z"; +var mdiPlayBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M10 16V8L15 12"; +var mdiPlayBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,14.5V5.5L18,10L12,14.5Z"; +var mdiPlayBoxMultipleOutline = "M4 6H2V20C2 21.1 2.9 22 4 22H18V20H4V6M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.1 6.9 18 8 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14.5V5.5L18 10L12 14.5Z"; +var mdiPlayBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z"; +var mdiPlayCircle = "M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiPlayCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z"; +var mdiPlayNetwork = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M10,14V6L15,10L10,14Z"; +var mdiPlayNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M10,14V6L15,10L10,14Z"; +var mdiPlayOutline = "M8.5,8.64L13.77,12L8.5,15.36V8.64M6.5,5V19L17.5,12"; +var mdiPlayPause = "M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5"; +var mdiPlayProtectedContent = "M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z"; +var mdiPlaySpeed = "M13,2.05V4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03V2.05M5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37L5.67,19.74M7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74M5.69,7.1L4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1M4.06,13H2.06C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13M10,16.5L16,12L10,7.5V16.5Z"; +var mdiPlaylistCheck = "M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z"; +var mdiPlaylistEdit = "M2,6V8H14V6H2M2,10V12H14V10H2M20.04,10.13C19.9,10.13 19.76,10.19 19.65,10.3L18.65,11.3L20.7,13.35L21.7,12.35C21.92,12.14 21.92,11.79 21.7,11.58L20.42,10.3C20.31,10.19 20.18,10.13 20.04,10.13M18.07,11.88L12,17.94V20H14.06L20.12,13.93L18.07,11.88M2,14V16H10V14H2Z"; +var mdiPlaylistMinus = "M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z"; +var mdiPlaylistMusic = "M15,6H3V8H15V6M15,10H3V12H15V10M3,16H11V14H3V16M17,6V14.18C16.69,14.07 16.35,14 16,14A3,3 0 0,0 13,17A3,3 0 0,0 16,20A3,3 0 0,0 19,17V8H22V6H17Z"; +var mdiPlaylistMusicOutline = "M15,6V8H3V6H15M15,10V12H3V10H15M3,16V14H11V16H3M17,6H22V8H19V17A3,3 0 0,1 16,20A3,3 0 0,1 13,17A3,3 0 0,1 16,14C16.35,14 16.69,14.07 17,14.18V6M16,16A1,1 0 0,0 15,17A1,1 0 0,0 16,18A1,1 0 0,0 17,17A1,1 0 0,0 16,16Z"; +var mdiPlaylistPlay = "M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z"; +var mdiPlaylistPlus = "M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z"; +var mdiPlaylistRemove = "M2,6V8H14V6H2M2,10V12H11V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H11V14H2Z"; +var mdiPlaylistStar = "M17,19.09L19.45,20.58L18.8,17.77L21,15.89L18.11,15.64L17,13L15.87,15.64L13,15.89L15.18,17.77L14.5,20.58L17,19.09M4,14H12V16H4V14M4,6H16V8H4V6M4,10H16V12H4V10Z"; +var mdiPlex = "M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z"; +var mdiPlus = "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"; +var mdiPlusBox = "M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiPlusBoxMultiple = "M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z"; +var mdiPlusBoxMultipleOutline = "M18 11H15V14H13V11H10V9H13V6H15V9H18M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; +var mdiPlusBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z"; +var mdiPlusCircle = "M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiPlusCircleMultiple = "M2 12C2 9.2 3.6 6.8 6 5.7V3.5C2.5 4.8 0 8.1 0 12S2.5 19.2 6 20.5V18.3C3.6 17.2 2 14.8 2 12M15 3C10 3 6 7 6 12S10 21 15 21 24 17 24 12 20 3 15 3M20 13H16V17H14V13H10V11H14V7H16V11H20V13Z"; +var mdiPlusCircleMultipleOutline = "M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z"; +var mdiPlusCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"; +var mdiPlusMinus = "M11,4V9H6V11H11V16H13V11H18V9H13V4H11M6,18V20H18V18H6Z"; +var mdiPlusMinusBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M11,6H13V9H16V11H13V14H11V11H8V9H11V6M8,16H16V18H8V16Z"; +var mdiPlusMinusVariant = "M3 7H6V4H8V7H11V9H8V12H6V9H3V7M13 15H21V17H13V15M16.04 3H18.35L7.96 21H5.65L16.04 3Z"; +var mdiPlusNetwork = "M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; +var mdiPlusNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15,11H13V13H11V11H9V9H11V7H13V9H15V11Z"; +var mdiPlusOne = "M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z"; +var mdiPlusOutline = "M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z"; +var mdiPlusThick = "M20 14H14V20H10V14H4V10H10V4H14V10H20V14Z"; +var mdiPodcast = "M17,18.25V21.5H7V18.25C7,16.87 9.24,15.75 12,15.75C14.76,15.75 17,16.87 17,18.25M12,5.5A6.5,6.5 0 0,1 18.5,12C18.5,13.25 18.15,14.42 17.54,15.41L16,14.04C16.32,13.43 16.5,12.73 16.5,12C16.5,9.5 14.5,7.5 12,7.5C9.5,7.5 7.5,9.5 7.5,12C7.5,12.73 7.68,13.43 8,14.04L6.46,15.41C5.85,14.42 5.5,13.25 5.5,12A6.5,6.5 0 0,1 12,5.5M12,1.5A10.5,10.5 0 0,1 22.5,12C22.5,14.28 21.77,16.39 20.54,18.11L19.04,16.76C19.96,15.4 20.5,13.76 20.5,12A8.5,8.5 0 0,0 12,3.5A8.5,8.5 0 0,0 3.5,12C3.5,13.76 4.04,15.4 4.96,16.76L3.46,18.11C2.23,16.39 1.5,14.28 1.5,12A10.5,10.5 0 0,1 12,1.5M12,9.5A2.5,2.5 0 0,1 14.5,12A2.5,2.5 0 0,1 12,14.5A2.5,2.5 0 0,1 9.5,12A2.5,2.5 0 0,1 12,9.5Z"; +var mdiPodium = "M12,7.09L14.45,8.58L13.8,5.77L16,3.89L13.11,3.64L12,1L10.87,3.64L8,3.89L10.18,5.77L9.5,8.58L12,7.09M4,13.09L6.45,14.58L5.8,11.77L8,9.89L5.11,9.64L4,7L2.87,9.64L0,9.89L2.18,11.77L1.5,14.58L4,13.09M20,10.09L22.45,11.58L21.8,8.77L24,6.89L21.11,6.64L20,4L18.87,6.64L16,6.89L18.18,8.77L17.5,11.58L20,10.09M15,23H9V10H15V23M7,23H1V17H7V23M23,23H17V13H23V23Z"; +var mdiPodiumBronze = "M4,13.09L6.45,14.58L5.8,11.77L8,9.89L5.11,9.64L4,7L2.87,9.64L0,9.89L2.18,11.77L1.5,14.58L4,13.09M7,23H1V17H7V23M9,10V23H15V10H9M13,21H11V12H13V21M17,13V23H23V13H17M21,21H19V15H21V21Z"; +var mdiPodiumGold = "M12,7.09L14.45,8.58L13.8,5.77L16,3.89L13.11,3.64L12,1L10.87,3.64L8,3.89L10.18,5.77L9.5,8.58L12,7.09M15,23H9V10H15V23M1,17V23H7V17H1M5,21H3V19H5V21M17,13V23H23V13H17M21,21H19V15H21V21Z"; +var mdiPodiumSilver = "M20,10.09L22.45,11.58L21.8,8.77L24,6.89L21.11,6.64L20,4L18.87,6.64L16,6.89L18.18,8.77L17.5,11.58L20,10.09M23,23H17V13H23V23M1,17V23H7V17H1M5,21H3V19H5V21M9,10V23H15V10H9M13,21H11V12H13V21Z"; +var mdiPointOfSale = "M20,5C19.4,5 19,5.5 19,6.1V16C19,16.6 19.4,17 20,17.1C20.6,17.1 21,16.6 21,16V6.1C21,5.5 20.6,5 20,5M16.4,2H4.6C3.7,2 3,2.7 3,3.6V17.4C3,18.3 3.7,19 4.6,19H6V21C6,21.6 6.4,22 7,22H13C13.6,22 14,21.6 14,21V19H16.4C17.3,19 18,18.3 18,17.4V3.6C18,2.7 17.3,2 16.4,2M5,8H8V10H5V8M12,11V13H9V11H12M9,10V8H12V10H9M12,14V16H9V14H12M5,11H8V13H5V11M5,16V14H8V16H5M8,21H7V19H8V21M13,21H10V19H13V21M16,16H13V14H16V16M16,13H13V11H16V13M16,10H13V8H16V10M16,6H5V4H16V6Z"; +var mdiPokeball = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiPokemonGo = "M12,2A7,7 0 0,1 19,9C19,10.4 18.59,11.71 17.88,12.8L12,22.21L6.12,12.8C5.41,11.71 5,10.4 5,9A7,7 0 0,1 12,2M12,3.5C9.3,3.5 7.06,5.44 6.59,8H9.17C9.58,6.83 10.69,6 12,6C13.31,6 14.42,6.83 14.83,8H17.41C16.94,5.44 14.7,3.5 12,3.5M12,12C10.69,12 9.58,11.17 9.17,10H6.59C6.72,10.69 6.97,11.34 7.34,11.91V11.91L7.38,12C8.36,13.5 10.06,14.5 12,14.5C13.94,14.5 15.64,13.5 16.62,12L16.66,11.91V11.91C17.03,11.34 17.28,10.69 17.41,10H14.83C14.42,11.17 13.31,12 12,12M12,7.5A1.5,1.5 0 0,0 10.5,9A1.5,1.5 0 0,0 12,10.5A1.5,1.5 0 0,0 13.5,9A1.5,1.5 0 0,0 12,7.5Z"; +var mdiPokerChip = "M23,12C23,18.08 18.08,23 12,23C5.92,23 1,18.08 1,12C1,5.92 5.92,1 12,1C18.08,1 23,5.92 23,12M13,4.06C15.13,4.33 17.07,5.45 18.37,7.16L20.11,6.16C18.45,3.82 15.86,2.3 13,2V4.06M3.89,6.16L5.63,7.16C6.93,5.45 8.87,4.33 11,4.06V2C8.14,2.3 5.55,3.82 3.89,6.16M2.89,16.1L4.62,15.1C3.79,13.12 3.79,10.88 4.62,8.9L2.89,7.9C1.7,10.5 1.7,13.5 2.89,16.1M11,19.94C8.87,19.67 6.93,18.55 5.63,16.84L3.89,17.84C5.55,20.18 8.14,21.7 11,22V19.94M20.11,17.84L18.37,16.84C17.07,18.55 15.13,19.67 13,19.94V21.94C15.85,21.65 18.44,20.16 20.11,17.84M21.11,16.1C22.3,13.5 22.3,10.5 21.11,7.9L19.38,8.9C20.21,10.88 20.21,13.12 19.38,15.1L21.11,16.1M15,12L12,7L9,12L12,17L15,12Z"; +var mdiPolaroid = "M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z"; +var mdiPoliceBadge = "M22 4L20 2C18.85 2.64 17.4 3 16 3C14.6 3 13.14 2.63 12 2C10.86 2.63 9.4 3 8 3C6.6 3 5.15 2.64 4 2L2 4C2 4 4 6 4 8S2 14 2 16C2 20 12 22 12 22S22 20 22 16C22 14 20 10 20 8S22 4 22 4M15.05 16.45L11.97 14.59L8.9 16.45L9.72 12.95L7 10.61L10.58 10.3L11.97 7L13.37 10.29L16.95 10.6L14.23 12.94L15.05 16.45Z"; +var mdiPoliceBadgeOutline = "M12 4.21C13.24 4.72 14.65 5 16 5C17.05 5 18.1 4.84 19.08 4.54C18.5 5.5 18 6.71 18 8C18 9.32 18.54 10.93 19.1 12.63C19.5 13.83 20 15.33 20 16C20 17.03 16.47 19 12 19.96C7.54 19 4 17.03 4 16C4 15.33 4.5 13.83 4.9 12.63C5.46 10.93 6 9.32 6 8C6 6.71 5.5 5.5 4.92 4.54C5.9 4.84 6.96 5 8 5C9.35 5 10.76 4.72 12 4.21M20 2C18.85 2.64 17.4 3 16 3C14.6 3 13.14 2.63 12 2C10.86 2.63 9.4 3 8 3C6.6 3 5.15 2.64 4 2L2 4C2 4 4 6 4 8S2 14 2 16C2 20 12 22 12 22S22 20 22 16C22 14 20 10 20 8S22 4 22 4L20 2M15.05 16.45L11.97 14.59L8.9 16.45L9.72 12.95L7 10.61L10.58 10.3L11.97 7L13.37 10.29L16.95 10.6L14.23 12.94L15.05 16.45"; +var mdiPoll = "M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z"; +var mdiPollBox = "M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiPollBoxOutline = "M9 17H7V10H9M13 17H11V7H13M17 17H15V13H17M19.5 19.1H4.5V5H19.5M19.5 3H4.5C3.4 3 2.5 3.9 2.5 5V19C2.5 20.1 3.4 21 4.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3Z"; +var mdiPolo = "M22 9.5C22 10.88 20.88 12 19.5 12S17 10.88 17 9.5 18.12 7 19.5 7 22 8.12 22 9.5M11 17V3H8V17H2L6 21H13V17H11M16 17H14V21H16V17Z"; +var mdiPolymer = "M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z"; +var mdiPool = "M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z"; +var mdiPopcorn = "M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z"; +var mdiPost = "M3 3V21H21V3H3M18 18H6V17H18V18M18 16H6V15H18V16M18 12H6V6H18V12Z"; +var mdiPostOutline = "M19 5V19H5V5H19M21 3H3V21H21V3M17 17H7V16H17V17M17 15H7V14H17V15M17 12H7V7H17V12Z"; +var mdiPostageStamp = "M2,2V5.5C3.1,5.5 4,6.62 4,8C4,9.38 3.1,10.5 2,10.5V13.5C3.1,13.5 4,14.62 4,16C4,17.38 3.1,18.5 2,18.5V22H5.5C5.5,20.9 6.62,20 8,20C9.38,20 10.5,20.9 10.5,22H13.5C13.5,20.9 14.62,20 16,20C17.38,20 18.5,20.9 18.5,22H22V18.5C20.9,18.5 20,17.38 20,16V16C20,14.62 20.9,13.5 22,13.5V10.5C20.9,10.5 20,9.38 20,8V8C20,6.62 20.9,5.5 22,5.5V2H18.5C18.5,3.1 17.38,4 16,4C14.62,4 13.5,3.1 13.5,2H10.5C10.5,3.1 9.38,4 8,4C6.62,4 5.5,3.1 5.5,2H2M6,6H18V18H6V6M9,7A2,2 0 0,0 7,9A2,2 0 0,0 9,11A2,2 0 0,0 11,9A2,2 0 0,0 9,7M17,10L14,13L12,12L7,17H17V10Z"; +var mdiPot = "M19 19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V12H3V10H21V12H19V19Z"; +var mdiPotMix = "M14.6 9L18 3.1L19.7 4.1L16.9 9H14.6M14 10H3V12H5V19C5 20.1 5.9 21 7 21H17C18.1 21 19 20.1 19 19V12H21V10H14Z"; +var mdiPotMixOutline = "M14.6 9L18 3.1L19.7 4.1L16.9 9H14.6M16.3 10H21V12H19V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V12H3V10H16.3M17 12H7V19H17V12Z"; +var mdiPotOutline = "M3 10V12H5V19C5 20.1 5.9 21 7 21H17C18.1 21 19 20.1 19 19V12H21V10H3M7 12H17V19H7V12Z"; +var mdiPotSteam = "M19 19C19 20.11 18.11 21 17 21H7C5.9 21 5 20.11 5 19V12H3V10H21V12H19M8 1.5C6.15 1.5 4.65 3 4.65 4.85C4.65 6.7 6.15 8.2 8 8.2H9.53C9.92 8.2 10.29 8.3 10.61 8.5H12.63C12.05 7.45 10.86 6.75 9.53 6.75H8C7 6.75 6.15 5.77 6.15 4.75C6.15 3.73 7 3 8 3M12.85 2C12.85 3 12 3.85 11 3.85V5.35C12.92 5.35 14.5 6.7 14.89 8.5H16.42C16.12 6.67 14.96 5.15 13.35 4.38C13.97 3.77 14.35 2.93 14.35 2Z"; +var mdiPotSteamOutline = "M8 1.5C6.15 1.5 4.65 3 4.65 4.85C4.65 6.7 6.15 8.2 8 8.2H9.53C9.92 8.2 10.29 8.3 10.61 8.5H12.63C12.05 7.45 10.86 6.75 9.53 6.75H8C7 6.75 6.15 5.77 6.15 4.75C6.15 3.73 7 3 8 3V1.5M12.85 2C12.85 3 12 3.85 11 3.85V5.35C12.92 5.35 14.5 6.7 14.89 8.5H16.42C16.12 6.67 14.96 5.15 13.35 4.38C13.97 3.77 14.35 2.93 14.35 2H12.85M3 10V12H5V19C5 20.11 5.9 21 7 21H17C18.11 21 19 20.11 19 19V12H21V10H3M7 12H17V19H7V12Z"; +var mdiPound = "M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z"; +var mdiPoundBox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z"; +var mdiPoundBoxOutline = "M19 19H5V5H19M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M7 9H9.31L9.63 6H11.63L11.31 9H13.31L13.63 6H15.63L15.31 9H17V11H15.1L14.9 13H17V15H14.69L14.37 18H12.37L12.69 15H10.69L10.37 18H8.37L8.69 15H7V13H8.9L9.1 11H7V9M11.1 11L10.9 13H12.9L13.1 11Z"; +var mdiPower = "M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13"; +var mdiPowerCycle = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19M13,17H11V7H13V17Z"; +var mdiPowerOff = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z"; +var mdiPowerOn = "M11,3H13V21H11V3Z"; +var mdiPowerPlug = "M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z"; +var mdiPowerPlugOff = "M20.84 22.73L15.31 17.2L14.5 18V21H9.5V18L6 14.5V9C6 8.7 6.1 8.41 6.25 8.14L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M18 14.5V9C18 8 17 7 16 7V3H14V7H10.2L17.85 14.65L18 14.5M10 3H8V4.8L10 6.8V3Z"; +var mdiPowerPlugOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.25 8.14C6.1 8.41 6 8.7 6 9V14.5L9.5 18V21H14.5V18L15.31 17.2L20.84 22.73L22.11 21.46M13.09 16.59L12.67 17H11.33L10.92 16.59L8 13.67V9.89L13.89 15.78L13.09 16.59M12.2 9L10.2 7H14V3H16V7C17 7 18 8 18 9V14.5L17.85 14.65L16 12.8V9.09C16 9.06 15.95 9 15.92 9H12.2M10 6.8L8 4.8V3H10V6.8Z"; +var mdiPowerPlugOutline = "M16 7V3H14V7H10V3H8V7C7 7 6 8 6 9V14.5L9.5 18V21H14.5V18L18 14.5V9C18 8 17 7 16 7M16 13.67L13.09 16.59L12.67 17H11.33L10.92 16.59L8 13.67V9.09C8 9.06 8.06 9 8.09 9H15.92C15.95 9 16 9.06 16 9.09V13.67Z"; +var mdiPowerSettings = "M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z"; +var mdiPowerSleep = "M18.73,18C15.4,21.69 9.71,22 6,18.64C2.33,15.31 2.04,9.62 5.37,5.93C6.9,4.25 9,3.2 11.27,3C7.96,6.7 8.27,12.39 12,15.71C13.63,17.19 15.78,18 18,18C18.25,18 18.5,18 18.73,18Z"; +var mdiPowerSocket = "M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z"; +var mdiPowerSocketAu = "M4.22,2A2.22,2.22 0 0,0 2,4.22V19.78C2,21 3,22 4.22,22H19.78A2.22,2.22 0 0,0 22,19.78V4.22C22,3 21,2 19.78,2H4.22M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M8.27,7.54L6.27,11L8,12L10,8.54L8.27,7.54M15.73,7.54L14,8.54L16,12L17.73,11L15.73,7.54M11,14V18H13V14H11Z"; +var mdiPowerSocketDe = "M4.22 2A2.22 2.22 0 0 0 2 4.22V19.78C2 21 3 22 4.22 22H19.78A2.22 2.22 0 0 0 22 19.78V4.22C22 3 21 2 19.78 2H4.22M11 4.07V6H13V4.07A8 8 0 0 1 20 12A8 8 0 0 1 13 19.93V18H11V19.93A8 8 0 0 1 4 12A8 8 0 0 1 11 4.07M7.5 10.5A1.5 1.5 0 0 0 6 12C6 12.83 6.66 13.5 7.5 13.5A1.5 1.5 0 0 0 9 12A1.5 1.5 0 0 0 7.5 10.5M16.5 10.5A1.5 1.5 0 0 0 15 12A1.5 1.5 0 0 0 16.5 13.5A1.5 1.5 0 0 0 18 12A1.5 1.5 0 0 0 16.5 10.5Z"; +var mdiPowerSocketEu = "M7.5,10.5A1.5,1.5 0 0,1 9,12A1.5,1.5 0 0,1 7.5,13.5C6.66,13.5 6,12.83 6,12A1.5,1.5 0 0,1 7.5,10.5M16.5,10.5A1.5,1.5 0 0,1 18,12A1.5,1.5 0 0,1 16.5,13.5A1.5,1.5 0 0,1 15,12A1.5,1.5 0 0,1 16.5,10.5M4.22,2H19.78C21,2 22,3 22,4.22V19.78A2.22,2.22 0 0,1 19.78,22H4.22C3,22 2,21 2,19.78V4.22A2.22,2.22 0 0,1 4.22,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiPowerSocketFr = "M4.22 2A2.22 2.22 0 0 0 2 4.22V19.78C2 21 3 22 4.22 22H19.78A2.22 2.22 0 0 0 22 19.78V4.22C22 3 21 2 19.78 2H4.22M12 4A8 8 0 0 1 20 12A8 8 0 0 1 12 20A8 8 0 0 1 4 12A8 8 0 0 1 12 4M12 6A1.5 1.5 0 0 0 10.5 7.5A1.5 1.5 0 0 0 12 9A1.5 1.5 0 0 0 13.5 7.5A1.5 1.5 0 0 0 12 6M7.5 10.5A1.5 1.5 0 0 0 6 12C6 12.83 6.66 13.5 7.5 13.5A1.5 1.5 0 0 0 9 12A1.5 1.5 0 0 0 7.5 10.5M16.5 10.5A1.5 1.5 0 0 0 15 12A1.5 1.5 0 0 0 16.5 13.5A1.5 1.5 0 0 0 18 12A1.5 1.5 0 0 0 16.5 10.5Z"; +var mdiPowerSocketIt = "M10.5 16.5C10.5 15.68 11.17 15 12 15C12.83 15 13.5 15.68 13.5 16.5C13.5 17.34 12.83 18 12 18C11.17 18 10.5 17.34 10.5 16.5M10.5 7.5C10.5 6.67 11.17 6 12 6C12.83 6 13.5 6.67 13.5 7.5C13.5 8.33 12.83 9 12 9C11.17 9 10.5 8.33 10.5 7.5M4.22 2H19.78C21 2 22 3 22 4.22V19.78C22 21 21 22 19.78 22H4.22C3 22 2 21 2 19.78V4.22C2 3 3 2 4.22 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M10.5 12C10.5 11.17 11.17 10.5 12 10.5C12.83 10.5 13.5 11.17 13.5 12C13.5 12.83 12.83 13.5 12 13.5C11.17 13.5 10.5 12.83 10.5 12Z"; +var mdiPowerSocketJp = "M10 9.5V14.5H8V9.5M19.78 2C21 2 22 3 22 4.22V19.78C22 21 21 22 19.78 22H4.22C3 22 2 21 2 19.78V4.22C2 3 3 2 4.22 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M16 9.5V14.5H14V9.5Z"; +var mdiPowerSocketUk = "M4 2A2 2 0 0 0 2 4V20A2 2 0 0 0 4 22H20A2 2 0 0 0 22 20V4A2 2 0 0 0 20 2H4M4 4H20V20H4V4M11 7V11H13V7H11M6 14.75V17H9.5V14.75H6M14.5 14.75V17H18V14.75H14.5Z"; +var mdiPowerSocketUs = "M8,7H10V12H8V7M4.22,2H19.78C21,2 22,3 22,4.22V19.78A2.22,2.22 0 0,1 19.78,22H4.22C3,22 2,21 2,19.78V4.22A2.22,2.22 0 0,1 4.22,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M14,7.5H16V11.5H14V7.5M10.5,16.25A1.5,1.5 0 0,1 12,14.75A1.5,1.5 0 0,1 13.5,16.25V17H10.5V16.25Z"; +var mdiPowerStandby = "M13,3H11V13H13V3M17.83,5.17L16.41,6.59C18.05,7.91 19,9.9 19,12A7,7 0 0,1 12,19C8.14,19 5,15.88 5,12C5,9.91 5.95,7.91 7.58,6.58L6.17,5.17C2.38,8.39 1.92,14.07 5.14,17.86C8.36,21.64 14.04,22.1 17.83,18.88C19.85,17.17 21,14.65 21,12C21,9.37 19.84,6.87 17.83,5.17Z"; +var mdiPowershell = "M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z"; +var mdiPrescription = "M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z"; +var mdiPresentation = "M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z"; +var mdiPresentationPlay = "M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z"; +var mdiPretzel = "M5.15 15.84C3.81 14.27 3 12.23 3 10V9.97C3 7.22 5.25 5 8 5C9.64 5 11.09 5.79 12 7C12.91 5.79 14.37 5 16 5C18.76 5 21 7.24 21 10C21 12.23 20.19 14.27 18.85 15.84L20.21 17.2L18.79 18.61L17.39 17.21C15.89 18.33 14 19 12 19C10 19 8.11 18.33 6.61 17.21L5.21 18.61L3.79 17.2L5.15 15.84M15.96 15.77L12 11.82L8.04 15.77C9.17 16.55 10.53 17 12 17C13.47 17 14.83 16.55 15.96 15.77M11 10C11 8.34 9.65 7 8 7C6.34 7 5 8.34 5 10C5 11.68 5.59 13.21 6.57 14.42L11 10M17.43 14.42C18.41 13.21 19 11.68 19 10V10C19 8.33 17.65 7 16 7C14.35 7 13 8.34 13 10L17.43 14.42Z"; +var mdiPrinter = "M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z"; +var mdiPrinter3d = "M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z"; +var mdiPrinter3dNozzle = "M7,2H17V8H19V13H16.5L13,17H11L7.5,13H5V8H7V2M10,22H2V20H10A1,1 0 0,0 11,19V18H13V19A3,3 0 0,1 10,22Z"; +var mdiPrinter3dNozzleAlert = "M7 2H17V8H19V13H16.5L13 17H11L7.5 13H5V8H7V2M10 22H2V20H10C10.6 20 11 19.5 11 19V18H13V19C13 20.7 11.7 22 10 22M21 13V7H23V13H21M21 17V15H23V17H21Z"; +var mdiPrinter3dNozzleAlertOutline = "M7 2H17V7H19V13H16.5L13 17H11L7.5 13H5V7H7V2M10 22H2V20H10C10.6 20 11 19.5 11 19V18H13V19C13 20.7 11.7 22 10 22M7 9V11H8.5L12 15L15.5 11H17V9H15V4H9V9H7M21 13V7H23V13H21M21 17V15H23V17H21Z"; +var mdiPrinter3dNozzleOutline = "M7,2H17V7H19V13H16.5L13,17H11L7.5,13H5V7H7V2M10,22H2V20H10A1,1 0 0,0 11,19V18H13V19A3,3 0 0,1 10,22M7,9V11H8.5L12,15L15.5,11H17V9H15V4H9V9H7Z"; +var mdiPrinterAlert = "M16 3H4V7H16M17 12C16.4 12 16 11.6 16 11S16.4 10 17 10 18 10.4 18 11 17.6 12 17 12M14 19H6V14H14M17 8H3C1.3 8 0 9.3 0 11V17H4V21H16V17H20V11C20 9.3 18.7 8 17 8M24 13H22V7H24V13M24 17H22V15H24V17Z"; +var mdiPrinterCheck = "M18 7H6V3H18V7M6 21V17H2V11C2 9.34 3.34 8 5 8H19C20.66 8 22 9.34 22 11V13.81C21.12 13.3 20.1 13 19 13C17.77 13 16.64 13.37 15.69 14H8V19H13C13 19.7 13.13 20.37 13.35 21H6M18 11C18 11.55 18.45 12 19 12S20 11.55 20 11 19.55 10 19 10 18 10.45 18 11M23.5 17L22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17"; +var mdiPrinterEye = "M9.8 21C9.6 20.6 9.3 20.2 9.2 19.7L8.8 19H8V14H13C14.2 13.4 15.6 13 17 13C18.9 13 20.6 13.6 22 14.6V11C22 9.3 20.7 8 19 8H5C3.3 8 2 9.3 2 11V17H6V21H9.8M19 10C19.6 10 20 10.4 20 11S19.6 12 19 12 18 11.6 18 11 18.4 10 19 10M18 7H6V3H18V7M17 18C17.6 18 18 18.4 18 19S17.6 20 17 20 16 19.6 16 19 16.4 18 17 18M17 15C14.3 15 11.9 16.7 11 19C11.9 21.3 14.3 23 17 23S22.1 21.3 23 19C22.1 16.7 19.7 15 17 15M17 21.5C15.6 21.5 14.5 20.4 14.5 19S15.6 16.5 17 16.5 19.5 17.6 19.5 19 18.4 21.5 17 21.5Z"; +var mdiPrinterOff = "M6,3V4.18L8.82,7H18V3H6M2.28,3L1,4.27L4.75,8C3.19,8.15 2,9.44 2,11V17H6V21H17.73L19.73,23L21,21.72L2.28,3M9.82,8L18.82,17H22V11A3,3 0 0,0 19,8H9.82M19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10M8,14H10.73L15.73,19H8V14Z"; +var mdiPrinterPos = "M18 10H6A2 2 0 0 0 4 12V19H20V12A2 2 0 0 0 18 10M18 14H14V12H18M17 9H7V4H17Z"; +var mdiPrinterSearch = "M20.3 18.9C20.7 18.2 21 17.4 21 16.5C21 14 19 12 16.5 12S12 14 12 16.5 14 21 16.5 21C17.4 21 18.2 20.8 18.9 20.3L22 23.4L23.4 22L20.3 18.9M16.5 19C15.1 19 14 17.9 14 16.5S15.1 14 16.5 14 19 15.1 19 16.5 17.9 19 16.5 19M18 7H6V3H18V7M6 21V17H2V11C2 9.3 3.3 8 5 8H19C20.7 8 22 9.3 22 11V13C20.8 11.2 18.8 10 16.5 10C13.8 10 11.5 11.7 10.5 14H8V19H10.5C10.8 19.7 11.3 20.4 11.8 21H6Z"; +var mdiPrinterSettings = "M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z"; +var mdiPrinterWireless = "M4.93,3.92L6.34,5.33C9.46,2.2 14.53,2.2 17.66,5.33L19.07,3.92C15.17,0 8.84,0 4.93,3.92M7.76,6.75L9.17,8.16C10.73,6.6 13.26,6.6 14.83,8.16L16.24,6.75C13.9,4.41 10.1,4.41 7.76,6.75M19,14A1,1 0 0,1 18,13A1,1 0 0,1 19,12A1,1 0 0,1 20,13A1,1 0 0,1 19,14M16,20H8V15H16V20M19,10H5A3,3 0 0,0 2,13V18H6V22H18V18H22V13A3,3 0 0,0 19,10Z"; +var mdiPriorityHigh = "M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z"; +var mdiPriorityLow = "M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z"; +var mdiProfessionalHexagon = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z"; +var mdiProgressAlert = "M13,2V4C17.39,4.54 20.5,8.53 19.96,12.92C19.5,16.56 16.64,19.43 13,19.88V21.88C18.5,21.28 22.45,16.34 21.85,10.85C21.33,6.19 17.66,2.5 13,2M11,2C9.04,2.18 7.19,2.95 5.67,4.2L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.24,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.06,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37H7.06M13,13V7H11V13H13M13,17V15H11V17H13Z"; +var mdiProgressCheck = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M15.5,8.5L10.62,13.38L8.5,11.26L7.44,12.32L10.62,15.5L16.56,9.56L15.5,8.5M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37Z"; +var mdiProgressClock = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"; +var mdiProgressClose = "M13 2.03V4.05C17.39 4.59 20.5 8.58 19.96 12.97C19.5 16.61 16.64 19.5 13 19.93V21.93C18.5 21.38 22.5 16.5 21.95 11C21.5 6.25 17.73 2.5 13 2.03M11 2.06C9.05 2.25 7.19 3 5.67 4.26L7.1 5.74C8.22 4.84 9.57 4.26 11 4.06V2.06M4.26 5.67C3 7.19 2.25 9.04 2.05 11H4.05C4.24 9.58 4.8 8.23 5.69 7.1L4.26 5.67M2.06 13C2.26 14.96 3.03 16.81 4.27 18.33L5.69 16.9C4.81 15.77 4.24 14.42 4.06 13H2.06M7.1 18.37L5.67 19.74C7.18 21 9.04 21.79 11 22V20C9.58 19.82 8.23 19.25 7.1 18.37M14.59 8L12 10.59L9.41 8L8 9.41L10.59 12L8 14.59L9.41 16L12 13.41L14.59 16L16 14.59L13.41 12L16 9.41L14.59 8Z"; +var mdiProgressDownload = "M13,2.03C17.73,2.5 21.5,6.25 21.95,11C22.5,16.5 18.5,21.38 13,21.93V19.93C16.64,19.5 19.5,16.61 19.96,12.97C20.5,8.58 17.39,4.59 13,4.05V2.05L13,2.03M11,2.06V4.06C9.57,4.26 8.22,4.84 7.1,5.74L5.67,4.26C7.19,3 9.05,2.25 11,2.06M4.26,5.67L5.69,7.1C4.8,8.23 4.24,9.58 4.05,11H2.05C2.25,9.04 3,7.19 4.26,5.67M2.06,13H4.06C4.24,14.42 4.81,15.77 5.69,16.9L4.27,18.33C3.03,16.81 2.26,14.96 2.06,13M7.1,18.37C8.23,19.25 9.58,19.82 11,20V22C9.04,21.79 7.18,21 5.67,19.74L7.1,18.37M12,16.5L7.5,12H11V8H13V12H16.5L12,16.5Z"; +var mdiProgressQuestion = "M13 2.03V4.05C17.39 4.59 20.5 8.58 19.96 12.97C19.5 16.61 16.64 19.5 13 19.93V21.93C18.5 21.38 22.5 16.5 21.95 11C21.5 6.25 17.73 2.5 13 2.03M11 2.06C9.05 2.25 7.19 3 5.67 4.26L7.1 5.74C8.22 4.84 9.57 4.26 11 4.06V2.06M4.26 5.67C3 7.19 2.25 9.04 2.05 11H4.05C4.24 9.58 4.8 8.23 5.69 7.1L4.26 5.67M2.06 13C2.26 14.96 3.03 16.81 4.27 18.33L5.69 16.9C4.81 15.77 4.24 14.42 4.06 13H2.06M7.1 18.37L5.67 19.74C7.18 21 9.04 21.79 11 22V20C9.58 19.82 8.23 19.25 7.1 18.37M20 4H44M13 18H11V16H13V18M13 15H11C11 11.75 14 12 14 10C14 8.9 13.1 8 12 8S10 8.9 10 10H8C8 7.79 9.79 6 12 6S16 7.79 16 10C16 12.5 13 12.75 13 15Z"; +var mdiProgressUpload = "M13,2.03C17.73,2.5 21.5,6.25 21.95,11C22.5,16.5 18.5,21.38 13,21.93V19.93C16.64,19.5 19.5,16.61 19.96,12.97C20.5,8.58 17.39,4.59 13,4.05V2.05L13,2.03M11,2.06V4.06C9.57,4.26 8.22,4.84 7.1,5.74L5.67,4.26C7.19,3 9.05,2.25 11,2.06M4.26,5.67L5.69,7.1C4.8,8.23 4.24,9.58 4.05,11H2.05C2.25,9.04 3,7.19 4.26,5.67M2.06,13H4.06C4.24,14.42 4.81,15.77 5.69,16.9L4.27,18.33C3.03,16.81 2.26,14.96 2.06,13M7.1,18.37C8.23,19.25 9.58,19.82 11,20V22C9.04,21.79 7.18,21 5.67,19.74L7.1,18.37M12,7.5L7.5,12H11V16H13V12H16.5L12,7.5Z"; +var mdiProgressWrench = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37M16.82,15.19L12.71,11.08C13.12,10.04 12.89,8.82 12.03,7.97C11.13,7.06 9.78,6.88 8.69,7.38L10.63,9.32L9.28,10.68L7.29,8.73C6.75,9.82 7,11.17 7.88,12.08C8.74,12.94 9.96,13.16 11,12.76L15.11,16.86C15.29,17.05 15.56,17.05 15.74,16.86L16.78,15.83C17,15.65 17,15.33 16.82,15.19Z"; +var mdiProjector = "M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z"; +var mdiProjectorScreen = "M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z"; +var mdiProjectorScreenOutline = "M20 2H4C3.45 2 3 2.45 3 3V4C3 4.55 3.45 5 4 5H5V14H11V16.59L6.79 20.79L8.21 22.21L11 19.41V22H13V19.41L15.79 22.21L17.21 20.79L13 16.59V14H19V5H20C20.55 5 21 4.55 21 4V3C21 2.45 20.55 2 20 2M17 12H7V5H17V12Z"; +var mdiPropaneTank = "M16 6H16V4C16 2.9 15.11 2 14 2H10C8.9 2 8 2.9 8 4V6H8C5.79 6 4 7.79 4 10V17C4 18.86 5.28 20.41 7 20.86V22H17V20.86C18.72 20.42 20 18.86 20 17V10C20 7.79 18.21 6 16 6M10 4H14V6H10V4Z"; +var mdiPropaneTankOutline = "M16 6V4C16 2.9 15.11 2 14 2H10C8.9 2 8 2.9 8 4V6C5.79 6 4 7.79 4 10V17C4 18.86 5.28 20.41 7 20.86V22H17V20.86C18.72 20.42 20 18.86 20 17V10C20 7.79 18.21 6 16 6M10 4H14V6H10V4M18 17C18 18.1 17.1 19 16 19H8C6.9 19 6 18.1 6 17V10C6 8.9 6.9 8 8 8H16C17.1 8 18 8.9 18 10V17Z"; +var mdiProtocol = "M18 20H14L18 4H22M16 4H12L8 20H12M2 16.5A2.5 2.5 0 0 0 4.5 19A2.5 2.5 0 0 0 7 16.5A2.5 2.5 0 0 0 4.5 14A2.5 2.5 0 0 0 2 16.5M2 9.5A2.5 2.5 0 0 0 4.5 12A2.5 2.5 0 0 0 7 9.5A2.5 2.5 0 0 0 4.5 7A2.5 2.5 0 0 0 2 9.5Z"; +var mdiPublish = "M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z"; +var mdiPulse = "M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z"; +var mdiPump = "M2 21V15H3.5C3.18 14.06 3 13.05 3 12C3 7.03 7.03 3 12 3H22V9H20.5C20.82 9.94 21 10.95 21 12C21 16.97 16.97 21 12 21H2M5 12C5 13.28 5.34 14.47 5.94 15.5L9.4 13.5C9.15 13.06 9 12.55 9 12C9 11.35 9.21 10.75 9.56 10.26L6.3 7.93C5.5 9.08 5 10.5 5 12M12 19C14.59 19 16.85 17.59 18.06 15.5L14.6 13.5C14.08 14.4 13.11 15 12 15L11.71 15L11.33 18.97L12 19M12 9C13.21 9 14.26 9.72 14.73 10.76L18.37 9.1C17.27 6.68 14.83 5 12 5V9M12 11C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13C12.55 13 13 12.55 13 12C13 11.45 12.55 11 12 11Z"; +var mdiPumpkin = "M6.5,6C7.47,6 8.37,6.5 9.11,7.38C9.66,6.79 10.31,6.36 11,6.15V4A2,2 0 0,1 13,2H15V4H13V6.15C13.69,6.36 14.34,6.79 14.89,7.38C15.63,6.5 16.53,6 17.5,6C20,6 22,9.36 22,13.5C22,17.64 20,21 17.5,21C16.53,21 15.63,20.5 14.89,19.62C14.08,20.5 13.08,21 12,21C10.92,21 9.92,20.5 9.11,19.62C8.37,20.5 7.47,21 6.5,21C4,21 2,17.64 2,13.5C2,9.36 4,6 6.5,6Z"; +var mdiPurse = "M22,19.1L21,10.5A1.65,1.65 0 0,0 19.3,9H16V5L14,3H10L8,5V9H4.7A1.65,1.65 0 0,0 3,10.5L2,19.1A1.74,1.74 0 0,0 3.7,21H20.3A1.74,1.74 0 0,0 22,19.1M10,5H14V9H10"; +var mdiPurseOutline = "M19,11L20,19H4L5,11H19M14,3H10L8,5V9H4.7A1.65,1.65 0 0,0 3,10.5L2,19.1A1.74,1.74 0 0,0 3.7,21H20.3A1.74,1.74 0 0,0 22,19.1L21,10.5A1.65,1.65 0 0,0 19.3,9H16V5L14,3M10,9V5H14V9"; +var mdiPuzzle = "M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z"; +var mdiPuzzleCheck = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M20.5 11C21.88 11 23 12.12 23 13.5C23 13.81 22.94 14.11 22.84 14.39C21.8 13.5 20.46 13 19 13C15.69 13 13 15.69 13 19V19.54C12.64 18.5 11.65 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.1 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.89 2.9 5 4 5H8V3.5C8 2.12 9.12 .998 10.5 .998S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5"; +var mdiPuzzleCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M22 13.5L22 13.8C21.37 13.44 20.67 13.19 19.94 13.07C19.75 12.45 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4C9.67 4 9 4.67 9 5.5V7H4L4 9.12C5.76 9.8 7 11.5 7 13.5C7 15.5 5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.8L13 19C13 20.09 13.29 21.12 13.8 22H13.2V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.1 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5C5 12 3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2C12.26 2 13.72 3.3 13.96 5H17C18.1 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5Z"; +var mdiPuzzleEdit = "M21.04 12.13C20.9 12.13 20.76 12.19 20.65 12.3L19.65 13.3L21.7 15.35L22.7 14.35C22.92 14.14 22.92 13.79 22.7 13.58L21.42 12.3C21.31 12.19 21.18 12.13 21.04 12.13M19.07 13.88L13 19.94V22H15.06L21.12 15.93L19.07 13.88M19 11.12L11.91 18.2C11.5 17.95 11 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11.12Z"; +var mdiPuzzleEditOutline = "M21.04 12.13C20.9 12.13 20.76 12.19 20.65 12.3L19.65 13.3L21.7 15.35L22.7 14.35C22.92 14.14 22.92 13.79 22.7 13.58L21.42 12.3C21.31 12.19 21.18 12.13 21.04 12.13M19.07 13.88L13 19.94V22H15.06L21.12 15.93L19.07 13.88M11.05 19.06C10.87 19 10.69 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C19.36 10.09 19.69 10.21 20 10.36C19.73 10.5 19.46 10.66 19.24 10.89L18.12 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.26 17 12 17.18 12.61 17.5L11.05 19.06Z"; +var mdiPuzzleHeart = "M19 22.3L18.4 21.8C16.4 19.9 15 18.7 15 17.2C15 16 16 15 17.2 15C17.9 15 18.6 15.3 19 15.8C19.4 15.3 20.1 15 20.8 15C22 15 23 15.9 23 17.2C23 18.7 21.6 19.9 19.6 21.8L19 22.3M20.5 11H19V7C19 5.89 18.1 5 17 5H13V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4C2.9 5 2 5.9 2 7V10.8H3.5C5 10.8 6.2 12 6.2 13.5S5 16.2 3.5 16.2H2V20C2 21.11 2.9 22 4 22H7.8V20.5C7.8 19 9 17.8 10.5 17.8C11.44 17.8 12.27 18.27 12.75 19H13.09C13.04 18.67 13 18.34 13 18C13 14.69 15.69 12 19 12C20.54 12 21.94 12.58 23 13.53C23 13.5 23 13.5 23 13.5C23 12.12 21.88 11 20.5 11Z"; +var mdiPuzzleHeartOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.45 10.25 21.61 11.34 21.91 12.76C21.05 12.28 20.06 12 19 12C18.89 12 18.78 12 18.67 12C18.61 12 18.56 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.43 17 12.29 17.28 13 17.74C13 17.83 13 17.91 13 18C13 19.54 13.58 20.94 14.54 22H13.2M19 22.3L19.6 21.8C21.6 19.9 23 18.7 23 17.2C23 15.9 22 15 20.8 15C20.1 15 19.4 15.3 19 15.8C18.6 15.3 17.9 15 17.2 15C16 15 15 16 15 17.2C15 18.7 16.4 19.9 18.4 21.8L19 22.3"; +var mdiPuzzleMinus = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M15 18V20H23V18H15Z"; +var mdiPuzzleMinusOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M15 18V20H23V18H15Z"; +var mdiPuzzleOutline = "M22,13.5C22,15.26 20.7,16.72 19,16.96V20A2,2 0 0,1 17,22H13.2V21.7A2.7,2.7 0 0,0 10.5,19C9,19 7.8,20.21 7.8,21.7V22H4A2,2 0 0,1 2,20V16.2H2.3C3.79,16.2 5,15 5,13.5C5,12 3.79,10.8 2.3,10.8H2V7A2,2 0 0,1 4,5H7.04C7.28,3.3 8.74,2 10.5,2C12.26,2 13.72,3.3 13.96,5H17A2,2 0 0,1 19,7V10.04C20.7,10.28 22,11.74 22,13.5M17,15H18.5A1.5,1.5 0 0,0 20,13.5A1.5,1.5 0 0,0 18.5,12H17V7H12V5.5A1.5,1.5 0 0,0 10.5,4A1.5,1.5 0 0,0 9,5.5V7H4V9.12C5.76,9.8 7,11.5 7,13.5C7,15.5 5.75,17.2 4,17.88V20H6.12C6.8,18.25 8.5,17 10.5,17C12.5,17 14.2,18.25 14.88,20H17V15Z"; +var mdiPuzzlePlus = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiPuzzlePlusOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; +var mdiPuzzleRemove = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; +var mdiPuzzleRemoveOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; +var mdiPuzzleStar = "M19 20.09L21.45 21.58L20.8 18.77L23 16.89L20.11 16.64L19 14L17.87 16.64L15 16.89L17.18 18.77L16.5 21.58L19 20.09M23 13.5C23 13.5 23 13.5 23 13.53C21.94 12.58 20.54 12 19 12C15.69 12 13 14.69 13 18C13 18.34 13.04 18.67 13.09 19H12.75C12.27 18.27 11.44 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5Z"; +var mdiPuzzleStarOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.45 10.25 21.61 11.34 21.91 12.76C21.05 12.28 20.06 12 19 12C18.89 12 18.78 12 18.67 12C18.61 12 18.56 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.43 17 12.29 17.28 13 17.74C13 17.83 13 17.91 13 18C13 19.54 13.58 20.94 14.54 22H13.2M19 20.09L16.5 21.58L17.18 18.77L15 16.89L17.87 16.64L19 14L20.11 16.64L23 16.89L20.8 18.77L21.45 21.58L19 20.09"; +var mdiQi = "M12.09,6.56V14.64C12.09,14.72 12,14.79 11.94,14.79C9.62,14.79 7.75,12.91 7.75,10.6C7.75,8.28 9.62,6.4 11.94,6.4C12,6.4 12.09,6.47 12.09,6.56M12.09,17.86V20.29C12.06,21.69 13.12,22.87 14.5,23C14.66,23 14.78,22.89 14.79,22.73V4.47C14.78,4.3 14.68,4.15 14.5,4.09C10.92,2.67 6.86,4.44 5.44,8.03C4,11.63 5.79,15.69 9.38,17.11C10.16,17.42 11,17.58 11.81,17.6C11.95,17.59 12.07,17.71 12.08,17.87M16.19,5.5V15.72C16.19,16 16.19,16.2 16.46,16V16C19.42,13.5 19.81,9.09 17.33,6.13C17.07,5.81 16.77,5.5 16.46,5.26C16.19,5.05 16.19,5.26 16.19,5.53M14.79,2.43C14.79,1.66 15.42,1.03 16.19,1.03C16.96,1.03 17.59,1.66 17.59,2.43C17.59,3.2 16.96,3.83 16.19,3.83V3.83C15.42,3.83 14.79,3.2 14.79,2.43"; +var mdiQqchat = "M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z"; +var mdiQrcode = "M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z"; +var mdiQrcodeEdit = "M5,5H7V7H5V5M1,1H11V11H1V1M3,3V9H9V3H3M5,17H7V19H5V17M1,13H11V23H1V13M3,15V21H9V15H3M13,13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21,21V19H19V21H21M19,17H17V15H15V19H19V17M22.7,3.35L21.7,4.35L19.65,2.35L20.65,1.35C20.85,1.14 21.19,1.13 21.42,1.35L22.7,2.58C22.91,2.78 22.92,3.12 22.7,3.35M13,8.94L19.07,2.88L21.12,4.93L15.06,11H13V8.94Z"; +var mdiQrcodeMinus = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M14 5V7H22V5Z"; +var mdiQrcodePlus = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M17 2V5H14V7H17V10H19V7H22V5H19V2Z"; +var mdiQrcodeRemove = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M15.17 1.76L13.76 3.17L16.59 6L13.76 8.83L15.17 10.24L18 7.41L20.83 10.24L22.24 8.83L19.41 6L22.24 3.17L20.83 1.76L18 4.59L15.17 1.76Z"; +var mdiQrcodeScan = "M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z"; +var mdiQuadcopter = "M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z"; +var mdiQualityHigh = "M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z"; +var mdiQualityLow = "M14.5,13.5H16.5V10.5H14.5M18,14C18,14.6 17.6,15 17,15H16.25V16.5H14.75V15H14C13.4,15 13,14.6 13,14V10C13,9.4 13.4,9 14,9H17C17.6,9 18,9.4 18,10M19,4H5A2,2 0 0,0 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4M11,13.5V15H6V9H7.5V13.5H11Z"; +var mdiQualityMedium = "M21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4H19A2,2 0 0,1 21,6M12,10C12,9.5 11.5,9 11,9H6.5C6,9 5.5,9.5 5.5,10V15H7V10.5H8V14H9.5V10.5H10.5V15H12V10M14.5,9A1,1 0 0,0 13.5,10V14A1,1 0 0,0 14.5,15H15.5V16.5H16.75V15H17.5A1,1 0 0,0 18.5,14V10A1,1 0 0,0 17.5,9H14.5M15,10.5H17V13.5H15V10.5Z"; +var mdiQuora = "M19.7,18.8C20.2,18.2 20.1,17.7 20.1,17.7H21.6C21.6,17.7 21.6,18.1 21.5,18.6C21.4,19 21.3,19.3 21.2,19.6C21,20.3 20,21.1 20,21.1C18.9,22 17.7,21.9 17.7,21.9C17.7,21.9 16.3,22.1 15.2,21.4C14.1,20.7 13.2,19.2 13.2,19.2C13.2,19.2 8.8,20.4 5.4,17.5C2,14.6 2.2,11.1 2.2,10.8C2.2,10.1 2.6,2.3 10.8,2C15.6,1.8 18.2,4.8 19.2,7.2C19.9,8.9 19.9,10.2 19.9,10.4C19.9,10.6 19.9,11.5 19.7,12.4C19.6,13.3 19.2,14.3 18.9,14.8C18.6,15.3 18.2,16 17.7,16.5C17.2,17.1 16.6,17.6 16.5,17.7C16.5,17.7 17.5,18.9 18.1,19.1C18.3,19.1 19.2,19.4 19.7,18.8M12.7,17.3C12.8,17.2 12.4,16.7 12.2,16.4C12,16.1 12.3,16.5 11.5,15.4C11.2,14.9 10.8,14.7 10.2,14.6C10,14.6 9.7,14.6 9.5,14.6C9,14.6 8.7,14.7 8.6,14.7C8.6,14.6 8.4,14.4 8.3,14.2C8.2,14 8.2,13.7 8.2,13.7C8.2,13.5 9.7,12.8 11.4,12.8C12.8,12.8 13.8,13.6 14.2,14C14.6,14.3 14.7,14.7 15.1,15C15.1,15 15.2,15 15.2,15.1C15.6,15.4 16.1,12.1 16,9.9C15.9,7.7 15.8,6.6 15,5.5C14.3,4.5 12.8,3.7 11.4,3.7C10.7,3.7 8.4,3.8 7.4,5.5C6.2,7.5 6.4,11.1 6.4,11.1C6.4,11.1 6.1,14.3 7.8,16C9.5,17.7 11.2,17.4 12,17.4L12.7,17.3Z"; +var mdiRabbit = "M18.05,21L15.32,16.26C15.32,14.53 14.25,13.42 12.95,13.42C12.05,13.42 11.27,13.92 10.87,14.66C11.2,14.47 11.59,14.37 12,14.37C13.3,14.37 14.36,15.43 14.36,16.73C14.36,18.04 13.31,19.11 12,19.11H15.3V21H6.79C6.55,21 6.3,20.91 6.12,20.72C5.75,20.35 5.75,19.75 6.12,19.38V19.38L6.62,18.88C6.28,18.73 6,18.5 5.72,18.26C5.5,18.76 5,19.11 4.42,19.11C3.64,19.11 3,18.47 3,17.68C3,16.9 3.64,16.26 4.42,16.26L4.89,16.34V14.37C4.89,11.75 7,9.63 9.63,9.63H9.65C11.77,9.64 13.42,10.47 13.42,9.16C13.42,8.23 13.62,7.86 13.96,7.34C13.23,7 12.4,6.79 11.53,6.79C11,6.79 10.58,6.37 10.58,5.84C10.58,5.41 10.86,5.05 11.25,4.93L10.58,4.89C10.06,4.89 9.63,4.47 9.63,3.95C9.63,3.42 10.06,3 10.58,3H11.53C13.63,3 15.47,4.15 16.46,5.85L16.74,5.84C17.45,5.84 18.11,6.07 18.65,6.45L19.1,6.83C21.27,8.78 21,10.1 21,10.11C21,11.39 19.94,12.44 18.65,12.44L18.16,12.39V12.47C18.16,13.58 17.68,14.57 16.93,15.27L20.24,21H18.05M18.16,7.74C17.63,7.74 17.21,8.16 17.21,8.68C17.21,9.21 17.63,9.63 18.16,9.63C18.68,9.63 19.11,9.21 19.11,8.68C19.11,8.16 18.68,7.74 18.16,7.74Z"; +var mdiRacingHelmet = "M2.2,11.2C2,13.6 2.7,15.6 4.2,17.4C5.7,19.2 7.7,20 10.1,20H20.1C20.6,20 21.1,19.8 21.5,19.4C21.9,19 22.1,18.5 22.1,18V17.2C22.1,16.6 22,15.9 21.9,15H13.7C12.7,15 11.9,14.6 11.2,13.9C10.5,13.2 10.1,12.3 10.1,11.4C10.1,9.8 10.8,8.7 12.3,8.1L17.1,6C15.4,4.8 13.4,4.1 11.1,4C8.9,3.8 6.9,4.5 5.1,5.9C3.3,7.3 2.4,9 2.2,11.2M12.1,11.4C12.1,11.8 12.3,12.2 12.6,12.5C12.9,12.8 13.3,13 13.7,13H21.5C20.9,10.8 20,9 18.7,7.6L13.1,9.9C12.4,10.1 12.1,10.6 12.1,11.4Z"; +var mdiRacquetball = "M18.5,16C19.9,16 21,17.1 21,18.5C21,19.9 19.9,21 18.5,21C17.1,21 16,19.9 16,18.5C16,17.1 17.1,16 18.5,16M10.5,1C3,1 3,3.7 3,9.8C3,13.2 6.4,16.9 9,18.1V23H12V18.1C14.6,16.9 18,13.2 18,9.8C18,3.6 18,1 10.5,1M15.4,4.2C15.7,4.6 15.8,5.2 15.9,6H15V3.8C15.2,3.9 15.3,4.1 15.4,4.2M16,9.8C16,9.9 16,10 16,10H15V7H16C16,7.8 16,8.7 16,9.8M14,14H11V11H14V14M7,14V11H10V14H7M5,9.8C5,8.8 5,7.9 5,7H6V10H5C5,9.9 5,9.8 5,9.8M7,7H10V10H7V7M11,3C12.4,3 13.4,3.2 14,3.3V6H11V3M10,6H7V3.4C7.6,3.2 8.6,3 10,3V6M11,10V7H14V10H11M6,3.8V6H5.1C5.2,5.2 5.3,4.6 5.6,4.2C5.7,4.1 5.8,4 6,3.8M5.2,11H6V12.7C5.7,12.1 5.4,11.6 5.2,11M8,15H10V16.3L9.8,16.2C9.2,16 8.6,15.5 8,15M11.2,16.3H11V15H13C12.4,15.5 11.8,16 11.2,16.3M15,12.7V11H15.8C15.6,11.5 15.3,12.1 15,12.7Z"; +var mdiRadar = "M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z"; +var mdiRadiator = "M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z"; +var mdiRadiatorDisabled = "M20,12H4A2,2 0 0,0 2,14V22H4V20H20V22H22V14A2,2 0 0,0 20,12M7,17A1,1 0 0,1 6,18A1,1 0 0,1 5,17V15A1,1 0 0,1 6,14A1,1 0 0,1 7,15V17M11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17V15A1,1 0 0,1 10,14A1,1 0 0,1 11,15V17M15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17V15A1,1 0 0,1 14,14A1,1 0 0,1 15,15V17M19,17A1,1 0 0,1 18,18A1,1 0 0,1 17,17V15A1,1 0 0,1 18,14A1,1 0 0,1 19,15V17Z"; +var mdiRadiatorOff = "M3.28,2L2,3.27L4.77,6.04L5.64,7.39L4.22,9.6L5.95,10.5L7.23,8.5L10.73,12H4A2,2 0 0,0 2,14V22H4V20H18.73L20,21.27V22H22V20.73L22,20.72V20.72L3.28,2M7,17A1,1 0 0,1 6,18A1,1 0 0,1 5,17V15A1,1 0 0,1 6,14A1,1 0 0,1 7,15V17M11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17V15A1,1 0 0,1 10,14A1,1 0 0,1 11,15V17M15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17V15C13,14.79 13.08,14.61 13.18,14.45L15,16.27V17M16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5M22,14V18.18L19,15.18V15A1,1 0 0,0 18,14C17.95,14 17.9,14 17.85,14.03L15.82,12H20C21.11,12 22,12.9 22,14M11.64,7.3L10.22,5.1L12.22,2L13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L12.84,9L11.44,7.62L11.64,7.3M7.5,3.69L6.1,2.28L6.22,2.09L7.95,3L7.5,3.69Z"; +var mdiRadio = "M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z"; +var mdiRadioAm = "M5,7A2,2 0 0,0 3,9V17H5V13H7V17H9V9A2,2 0 0,0 7,7H5M5,9H7V11H5V9M13,7A2,2 0 0,0 11,9V17H13V9H15V16H17V9H19V17H21V9A2,2 0 0,0 19,7H13Z"; +var mdiRadioFm = "M3,7V17H5V13H8V11H5V9H9V7H3M13,7A2,2 0 0,0 11,9V17H13V9H15V16H17V9H19V17H21V9A2,2 0 0,0 19,7H13Z"; +var mdiRadioHandheld = "M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z"; +var mdiRadioOff = "M1 4.27L3 6.27C2.4 6.61 2 7.26 2 8V20C2 21.11 2.9 22 4 22H18.73L20.73 24L22 22.72L2.28 3L1 4.27M20 6H8.83L16.47 2.83L15.71 1L6.59 4.76L9.82 8H20V12H18V10H16V12H13.82L22 20.18V8C22 6.9 21.11 6 20 6M4 8H4.73L8.73 12H4V8M7 14C8.66 14 10 15.34 10 17C10 18.66 8.66 20 7 20C5.34 20 4 18.66 4 17C4 15.34 5.34 14 7 14Z"; +var mdiRadioTower = "M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z"; +var mdiRadioactive = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z"; +var mdiRadioactiveOff = "M1,4.27L2.28,3L21,21.72L19.73,23L17.25,20.5C15.72,21.46 13.92,22 12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.23,16 12.46,16 12.67,15.94L8.06,11.33C8,11.54 8,11.77 8,12H2C2,10.08 2.54,8.28 3.5,6.75L1,4.27M12,10A2,2 0 0,1 14,12V12.17L11.83,10H12M8.11,2.78L10.23,8.41L5.9,4.08C6.57,3.56 7.32,3.12 8.11,2.78M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z"; +var mdiRadioboxBlank = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiRadioboxMarked = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z"; +var mdiRadiologyBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M17.1 13H13V14H17C17 14 16.94 17 15.5 17C14.15 17 14.5 15.47 13 15V17C13 17.55 12.55 18 12 18S11 17.55 11 17V15C9.5 15.47 9.85 17 8.5 17C7.06 17 7 14 7 14H11V13H6.9C6.85 12.69 6.84 12.35 6.8 12H11V11H6.81C6.83 10.67 6.91 10.33 7 10H11V9H7.34C7.5 8.65 7.65 8.31 7.83 8H11V7C11 6.45 11.45 6 12 6S13 6.45 13 7V8H16.17C16.35 8.31 16.5 8.65 16.66 9H13V10H17C17.1 10.33 17.17 10.67 17.19 11H13V12H17.2C17.16 12.35 17.15 12.69 17.1 13Z"; +var mdiRadiologyBoxOutline = "M19 5V19H5V5H19M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M12 6C12.55 6 13 6.45 13 7V8H16.17C16.35 8.31 16.5 8.65 16.66 9H13V10H17C17.1 10.33 17.17 10.67 17.19 11H13V12H17.2C17.16 12.35 17.15 12.69 17.1 13H13V14H17C17 14 16.94 17 15.5 17C14.15 17 14.5 15.47 13 15V17C13 17.55 12.55 18 12 18S11 17.55 11 17V15C9.5 15.47 9.85 17 8.5 17C7.06 17 7 14 7 14H11V13H6.9C6.85 12.69 6.84 12.35 6.8 12H11V11H6.81C6.83 10.67 6.91 10.33 7 10H11V9H7.34C7.5 8.65 7.65 8.31 7.83 8H11V7C11 6.45 11.45 6 12 6Z"; +var mdiRadius = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,15V13H13.72C13.36,13.62 12.71,14 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10C12.71,10 13.36,10.38 13.72,11H17V9L20,12L17,15Z"; +var mdiRadiusOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16,15V13H13.72C13.36,13.62 12.71,14 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10C12.71,10 13.36,10.38 13.72,11H16V9L19,12L16,15Z"; +var mdiRailroadLight = "M17.67,10.5C16.4,10.5 15.27,11.3 14.85,12.5H13.17V7.77L16.66,9.86L17.66,8.14L14.11,6L17.68,3.86L16.68,2.14L13.17,4.23V2H11.17V4.23L7.68,2.14L6.68,3.86L10.23,6L6.66,8.14L7.66,9.86L11.17,7.77V12.5H9.5C8.36,9.32 3.66,10.13 3.66,13.5C3.66,16.87 8.36,17.68 9.5,14.5H11.17V20A2,2 0 0,0 9.17,22H15.17A2,2 0 0,0 13.17,20V14.5H14.85C15.66,16.8 18.73,17.22 20.13,15.23C21.53,13.24 20.1,10.5 17.67,10.5M6.67,14.5C5.78,14.5 5.33,13.42 5.96,12.79C6.59,12.16 7.67,12.61 7.67,13.5A1,1 0 0,1 6.67,14.5M17.67,14.5C16.78,14.5 16.33,13.42 16.96,12.79C17.59,12.16 18.67,12.61 18.67,13.5A1,1 0 0,1 17.67,14.5Z"; +var mdiRake = "M10.5 17.05L9.43 16L22.07 3.35L20.66 1.93L8 14.58L6.95 13.5C6.17 12.73 4.9 12.73 4.12 13.5L2 15.64L2.71 16.34L4.83 14.22L5.54 14.93L3.41 17.05L4.12 17.76L6.24 15.64L6.95 16.34L4.83 18.46L5.54 19.17L7.66 17.05L8.36 17.76L6.24 19.88L6.95 20.59L9.07 18.46L9.78 19.17L7.66 21.29L8.36 22L10.5 19.88C11.27 19.1 11.27 17.83 10.5 17.05Z"; +var mdiRaspberryPi = "M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z"; +var mdiRayEnd = "M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z"; +var mdiRayEndArrow = "M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z"; +var mdiRayStart = "M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z"; +var mdiRayStartArrow = "M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z"; +var mdiRayStartEnd = "M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z"; +var mdiRayStartVertexEnd = "M20 9C18.69 9 17.58 9.83 17.17 11H14.82C14.4 9.84 13.3 9 12 9S9.6 9.84 9.18 11H6.83C6.42 9.83 5.31 9 4 9C2.34 9 1 10.34 1 12S2.34 15 4 15C5.31 15 6.42 14.17 6.83 13H9.18C9.6 14.16 10.7 15 12 15S14.4 14.16 14.82 13H17.17C17.58 14.17 18.69 15 20 15C21.66 15 23 13.66 23 12S21.66 9 20 9"; +var mdiRayVertex = "M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z"; +var mdiReact = "M12,10.11C13.03,10.11 13.87,10.95 13.87,12C13.87,13 13.03,13.85 12,13.85C10.97,13.85 10.13,13 10.13,12C10.13,10.95 10.97,10.11 12,10.11M7.37,20C8,20.38 9.38,19.8 10.97,18.3C10.45,17.71 9.94,17.07 9.46,16.4C8.64,16.32 7.83,16.2 7.06,16.04C6.55,18.18 6.74,19.65 7.37,20M8.08,14.26L7.79,13.75C7.68,14.04 7.57,14.33 7.5,14.61C7.77,14.67 8.07,14.72 8.38,14.77C8.28,14.6 8.18,14.43 8.08,14.26M14.62,13.5L15.43,12L14.62,10.5C14.32,9.97 14,9.5 13.71,9.03C13.17,9 12.6,9 12,9C11.4,9 10.83,9 10.29,9.03C10,9.5 9.68,9.97 9.38,10.5L8.57,12L9.38,13.5C9.68,14.03 10,14.5 10.29,14.97C10.83,15 11.4,15 12,15C12.6,15 13.17,15 13.71,14.97C14,14.5 14.32,14.03 14.62,13.5M12,6.78C11.81,7 11.61,7.23 11.41,7.5C11.61,7.5 11.8,7.5 12,7.5C12.2,7.5 12.39,7.5 12.59,7.5C12.39,7.23 12.19,7 12,6.78M12,17.22C12.19,17 12.39,16.77 12.59,16.5C12.39,16.5 12.2,16.5 12,16.5C11.8,16.5 11.61,16.5 11.41,16.5C11.61,16.77 11.81,17 12,17.22M16.62,4C16,3.62 14.62,4.2 13.03,5.7C13.55,6.29 14.06,6.93 14.54,7.6C15.36,7.68 16.17,7.8 16.94,7.96C17.45,5.82 17.26,4.35 16.62,4M15.92,9.74L16.21,10.25C16.32,9.96 16.43,9.67 16.5,9.39C16.23,9.33 15.93,9.28 15.62,9.23C15.72,9.4 15.82,9.57 15.92,9.74M17.37,2.69C18.84,3.53 19,5.74 18.38,8.32C20.92,9.07 22.75,10.31 22.75,12C22.75,13.69 20.92,14.93 18.38,15.68C19,18.26 18.84,20.47 17.37,21.31C15.91,22.15 13.92,21.19 12,19.36C10.08,21.19 8.09,22.15 6.62,21.31C5.16,20.47 5,18.26 5.62,15.68C3.08,14.93 1.25,13.69 1.25,12C1.25,10.31 3.08,9.07 5.62,8.32C5,5.74 5.16,3.53 6.62,2.69C8.09,1.85 10.08,2.81 12,4.64C13.92,2.81 15.91,1.85 17.37,2.69M17.08,12C17.42,12.75 17.72,13.5 17.97,14.26C20.07,13.63 21.25,12.73 21.25,12C21.25,11.27 20.07,10.37 17.97,9.74C17.72,10.5 17.42,11.25 17.08,12M6.92,12C6.58,11.25 6.28,10.5 6.03,9.74C3.93,10.37 2.75,11.27 2.75,12C2.75,12.73 3.93,13.63 6.03,14.26C6.28,13.5 6.58,12.75 6.92,12M15.92,14.26C15.82,14.43 15.72,14.6 15.62,14.77C15.93,14.72 16.23,14.67 16.5,14.61C16.43,14.33 16.32,14.04 16.21,13.75L15.92,14.26M13.03,18.3C14.62,19.8 16,20.38 16.62,20C17.26,19.65 17.45,18.18 16.94,16.04C16.17,16.2 15.36,16.32 14.54,16.4C14.06,17.07 13.55,17.71 13.03,18.3M8.08,9.74C8.18,9.57 8.28,9.4 8.38,9.23C8.07,9.28 7.77,9.33 7.5,9.39C7.57,9.67 7.68,9.96 7.79,10.25L8.08,9.74M10.97,5.7C9.38,4.2 8,3.62 7.37,4C6.74,4.35 6.55,5.82 7.06,7.96C7.83,7.8 8.64,7.68 9.46,7.6C9.94,6.93 10.45,6.29 10.97,5.7Z"; +var mdiRead = "M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z"; +var mdiReceipt = "M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z"; +var mdiRecord = "M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z"; +var mdiRecordCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z"; +var mdiRecordCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiRecordPlayer = "M5,17.5A0.5,0.5 0 0,1 4.5,18H3.5A0.5,0.5 0 0,1 3,17.5V17H2A1,1 0 0,1 1,16V13A1,1 0 0,1 2,12H19V10H7L6,11V9A1,1 0 0,1 7,8H19V7H21V8A1,1 0 0,1 22,9V10H21V12H22A1,1 0 0,1 23,13V16A1,1 0 0,1 22,17H21V17.5A0.5,0.5 0 0,1 20.5,18H19.5A0.5,0.5 0 0,1 19,17.5V17H5V17.5M3,14V15H5V14H3M6,14V15H8V14H6M20.5,13.5A1,1 0 0,0 19.5,14.5A1,1 0 0,0 20.5,15.5A1,1 0 0,0 21.5,14.5A1,1 0 0,0 20.5,13.5Z"; +var mdiRecordRec = "M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11"; +var mdiRectangle = "M4,6V19H20V6H4Z"; +var mdiRectangleOutline = "M4,6V19H20V6H4M18,17H6V8H18V17Z"; +var mdiRecycle = "M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z"; +var mdiRecycleVariant = "M7.17 7.91L8.9 8.91L12.08 3.42L14.33 7.31L11.73 8.81L17.19 10.27L18.66 4.81L16.06 6.31L13.81 2.41C13.26 1.45 12.03 1.12 11.08 1.68C10.81 1.83 10.58 2.05 10.41 2.31M10 20V18L3.66 18L5.9 14.1L8.5 15.6L7.04 10.14L1.57 11.6L4.17 13.1L1.92 17C1.37 17.96 1.7 19.18 2.65 19.73C2.92 19.89 3.22 19.97 3.54 20M19.06 11.5L17.32 12.5L20.5 18H16V15L12 19L16 23V20H20.5C21.61 20 22.5 19.11 22.5 18C22.5 17.69 22.42 17.38 22.28 17.11Z"; +var mdiReddit = "M14.5 15.41C14.58 15.5 14.58 15.69 14.5 15.8C13.77 16.5 12.41 16.56 12 16.56C11.61 16.56 10.25 16.5 9.54 15.8C9.44 15.69 9.44 15.5 9.54 15.41C9.65 15.31 9.82 15.31 9.92 15.41C10.38 15.87 11.33 16 12 16C12.69 16 13.66 15.87 14.1 15.41C14.21 15.31 14.38 15.31 14.5 15.41M10.75 13.04C10.75 12.47 10.28 12 9.71 12C9.14 12 8.67 12.47 8.67 13.04C8.67 13.61 9.14 14.09 9.71 14.08C10.28 14.08 10.75 13.61 10.75 13.04M14.29 12C13.72 12 13.25 12.5 13.25 13.05S13.72 14.09 14.29 14.09C14.86 14.09 15.33 13.61 15.33 13.05C15.33 12.5 14.86 12 14.29 12M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12C2 6.5 6.5 2 12 2S22 6.5 22 12M18.67 12C18.67 11.19 18 10.54 17.22 10.54C16.82 10.54 16.46 10.7 16.2 10.95C15.2 10.23 13.83 9.77 12.3 9.71L12.97 6.58L15.14 7.05C15.16 7.6 15.62 8.04 16.18 8.04C16.75 8.04 17.22 7.57 17.22 7C17.22 6.43 16.75 5.96 16.18 5.96C15.77 5.96 15.41 6.2 15.25 6.55L12.82 6.03C12.75 6 12.68 6.03 12.63 6.07C12.57 6.11 12.54 6.17 12.53 6.24L11.79 9.72C10.24 9.77 8.84 10.23 7.82 10.96C7.56 10.71 7.2 10.56 6.81 10.56C6 10.56 5.35 11.21 5.35 12C5.35 12.61 5.71 13.11 6.21 13.34C6.19 13.5 6.18 13.62 6.18 13.78C6.18 16 8.79 17.85 12 17.85C15.23 17.85 17.85 16.03 17.85 13.78C17.85 13.64 17.84 13.5 17.81 13.34C18.31 13.11 18.67 12.6 18.67 12Z"; +var mdiRedhat = "M15.34 13.16C16.66 13.16 18.56 12.89 18.56 11.32C18.57 11.2 18.56 11.08 18.53 10.96L17.75 7.56C17.57 6.81 17.41 6.47 16.09 5.81C15.07 5.29 12.85 4.43 12.19 4.43C11.58 4.43 11.4 5.22 10.67 5.22C9.97 5.22 9.45 4.63 8.79 4.63C8.16 4.63 7.75 5.06 7.43 5.94C7.43 5.94 6.55 8.44 6.43 8.8C6.42 8.87 6.41 8.93 6.41 9C6.41 9.97 10.23 13.15 15.34 13.15M18.77 11.96C18.95 12.82 18.95 12.91 18.95 13C18.95 14.5 17.29 15.31 15.12 15.31C10.2 15.31 5.89 12.43 5.89 10.53C5.89 10.26 5.95 10 6.05 9.76C4.28 9.84 2 10.16 2 12.18C2 15.5 9.84 19.57 16.05 19.57C20.81 19.57 22 17.42 22 15.72C22 14.38 20.85 12.86 18.77 11.96"; +var mdiRedo = "M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z"; +var mdiRedoVariant = "M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z"; +var mdiReflectHorizontal = "M22,20H14A1,1 0 0,1 13,19V4.97C13,4.5 13.31,4.12 13.74,4C14.19,3.88 14.65,4.08 14.87,4.47L22.89,18.5C23.07,18.81 23.07,19.19 22.89,19.5C22.71,19.81 22.38,20 22,20M2,20C1.62,20 1.29,19.81 1.11,19.5C0.93,19.19 0.93,18.81 1.11,18.5L9.13,4.47C9.35,4.08 9.81,3.88 10.26,4C10.69,4.12 11,4.5 11,4.97V19A1,1 0 0,1 10,20H2M9,18V8.74L3.71,18H9Z"; +var mdiReflectVertical = "M18,23H6C5.61,23 5.26,22.79 5.09,22.45C4.92,22.11 4.96,21.7 5.19,21.4L11.2,13.38C11.58,12.87 12.42,12.87 12.8,13.38L18.81,21.4C19.04,21.7 19.08,22.11 18.91,22.45C18.74,22.79 18.39,23 18,23M18,1C18.39,1 18.74,1.21 18.91,1.55C19.08,1.89 19.04,2.3 18.81,2.6L12.8,10.62C12.42,11.13 11.58,11.13 11.2,10.62L5.19,2.6C4.96,2.3 4.92,1.89 5.09,1.55C5.26,1.21 5.61,1 6,1H18M8,3L12,8.35L16,3H8Z"; +var mdiRefresh = "M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"; +var mdiRefreshCircle = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M18 11H13L14.81 9.19A3.94 3.94 0 0 0 12 8A4 4 0 1 0 15.86 13H17.91A6 6 0 1 1 12 6A5.91 5.91 0 0 1 16.22 7.78L18 6Z"; +var mdiRegex = "M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z"; +var mdiRegisteredTrademark = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12.25,13.27H10.81V16.5H9V7.71H12.26C13.29,7.71 14.09,7.94 14.66,8.4C15.22,8.87 15.5,9.5 15.5,10.36C15.5,10.96 15.37,11.46 15.11,11.86C14.85,12.26 14.46,12.58 13.93,12.81L15.83,16.4V16.5H13.89L12.25,13.27M10.81,11.81H12.27C12.72,11.81 13.07,11.69 13.32,11.46C13.57,11.23 13.69,10.91 13.69,10.5C13.69,10.09 13.58,9.77 13.34,9.53C13.11,9.29 12.75,9.18 12.26,9.18H10.81V11.81Z"; +var mdiReiterate = "M10.5 4A6.5 6.5 0 0 0 4 10H1L5 14L9 10H6.03A4.5 4.5 0 0 1 10.5 6A4.5 4.5 0 0 1 15 10.5A4.5 4.5 0 0 1 10.5 15H2V17H10.5A6.5 6.5 0 0 0 17 10.5A6.5 6.5 0 0 0 10.5 4M19 12V15H16.5A7.5 7.5 0 0 1 14.24 17H19V20L23 16Z"; +var mdiRelationManyToMany = "M22 13V19H21L19 17H11V9H5L3 11H2V5H3L5 7H13V15H19L21 13Z"; +var mdiRelationManyToOne = "M22 15V17H19V19H17V17H11V9H5L3 11H2V5H3L5 7H13V15H17V13H19V15Z"; +var mdiRelationManyToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H5L3 11H2V5H3L5 7H13V15H17V13H19V15L21 13Z"; +var mdiRelationManyToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H5L3 11H2V5H3L5 7H13V15H16V13H18V15H19V13H21V15Z"; +var mdiRelationManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H5L3 5H2V11H3L5 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H5L3 5H2V11H3L5 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationOneOrManyToMany = "M22 13V19H21L19 17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H19L21 13Z"; +var mdiRelationOneOrManyToOne = "M22 15V17H19V19H17V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H17V13H19V15Z"; +var mdiRelationOneOrManyToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H17V13H19V15L21 13Z"; +var mdiRelationOneOrManyToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H16V13H18V15H19V13H21V15Z"; +var mdiRelationOneOrManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7L3 5H2V11H3L5 9V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationOneOrManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7L3 5H2V11H3L5 9V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationOneToMany = "M22 13V19H21L19 17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H19L21 13Z"; +var mdiRelationOneToOne = "M22 15V17H19V19H17V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H17V13H19V15Z"; +var mdiRelationOneToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H17V13H19V15L21 13Z"; +var mdiRelationOneToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H16V13H18V15H19V13H21V15Z"; +var mdiRelationOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7H2V9H5V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7H2V9H5V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationOnlyOneToMany = "M22 13V19H21L19 17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H19L21 13Z"; +var mdiRelationOnlyOneToOne = "M22 15V17H19V19H17V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H17V13H19V15Z"; +var mdiRelationOnlyOneToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H17V13H19V15L21 13Z"; +var mdiRelationOnlyOneToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H16V13H18V15H19V13H21V15Z"; +var mdiRelationOnlyOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H8V5H6V7H5V5H3V7H2V9H3V11H5V9H6V11H8V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationOnlyOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H8V5H6V7H5V5H3V7H2V9H3V11H5V9H6V11H8V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationZeroOrManyToMany = "M21 13L19 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrManyToOne = "M19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrManyToOneOrMany = "M21 13L19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrManyToOnlyOne = "M21 15V13H19V15H18V13H16V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H16V19H18V17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationZeroOrManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationZeroOrOneToMany = "M21 13L19 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrOneToOne = "M19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrOneToOneOrMany = "M21 13L19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrOneToOnlyOne = "M21 15V13H19V15H18V13H16V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H16V19H18V17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; +var mdiRelationZeroOrOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelationZeroOrOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; +var mdiRelativeScale = "M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z"; +var mdiReload = "M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z"; +var mdiReloadAlert = "M2 12C2 17 6 21 11 21C13.4 21 15.7 20.1 17.4 18.4L15.9 16.9C14.6 18.3 12.9 19 11 19C4.8 19 1.6 11.5 6.1 7.1S18 5.8 18 12H15L19 16H19.1L23 12H20C20 7 16 3 11 3S2 7 2 12M10 15H12V17H10V15M10 7H12V13H10V7"; +var mdiReminder = "M7.25,3C7.9,3 8.5,3.21 9,3.56V3A2,2 0 0,1 11,1A2,2 0 0,1 13,3V3.57C13.5,3.22 14.1,3 14.75,3A3,3 0 0,1 17.75,6C17.75,7.58 16.54,8.87 15,9H13V10H14.24L14.72,10.13L19.31,12.42C20.13,12.73 20.53,13.34 20.53,14.25L20.5,14.39V14.53L19.5,21.28C19.44,21.75 19.22,22.16 18.84,22.5C18.47,22.84 18.05,23 17.58,23H10C9.45,23 9,22.81 8.58,22.41L2,15.84L3.05,14.77C3.33,14.5 3.69,14.34 4.13,14.34H4.45L9,15.33V10L9,9H7V9C5.46,8.86 4.25,7.57 4.25,6A3,3 0 0,1 7.25,3M9,6A1.75,1.75 0 0,0 7.25,4.25A1.75,1.75 0 0,0 5.5,6C5.5,6.88 6.15,7.61 7,7.73V7.75H9V6M15,7.75V7.74C15.85,7.62 16.5,6.89 16.5,6C16.5,5.04 15.72,4.26 14.75,4.26C13.78,4.26 13,5.04 13,6V7.75H15Z"; +var mdiRemote = "M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z"; +var mdiRemoteDesktop = "M3,2A2,2 0 0,0 1,4V16C1,17.11 1.9,18 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M3,4H21V16H3M15,5L11.5,8.5L15,12L16.4,10.6L14.3,8.5L16.4,6.4M9,8L7.6,9.4L9.7,11.5L7.6,13.6L9,15L12.5,11.5"; +var mdiRemoteOff = "M2,5.27L3.28,4L21,21.72L19.73,23L16,19.27V22A1,1 0 0,1 15,23H9C8.46,23 8,22.55 8,22V11.27L2,5.27M12,0C15.05,0 17.8,1.23 19.77,3.23L18.36,4.64C16.75,3 14.5,2 12,2C9.72,2 7.64,2.85 6.06,4.24L4.64,2.82C6.59,1.07 9.17,0 12,0M12,4C13.94,4 15.69,4.78 16.95,6.05L15.55,7.46C14.64,6.56 13.39,6 12,6C10.83,6 9.76,6.4 8.9,7.08L7.5,5.66C8.7,4.62 10.28,4 12,4M15,9C15.56,9 16,9.45 16,10V14.18L13.5,11.69L13.31,11.5L10.82,9H15M10.03,13.3C10.16,14.16 10.84,14.85 11.71,15L10.03,13.3Z"; +var mdiRemoteTv = "M9,2C7.89,2 7,2.89 7,4V20C7,21.11 7.89,22 9,22H15C16.11,22 17,21.11 17,20V4C17,2.89 16.11,2 15,2H13V4H11V2H9M11,6H13V8H15V10H13V12H11V10H9V8H11V6M9,14H11V16H9V14M13,14H15V16H13V14M9,18H11V20H9V18M13,18H15V20H13V18Z"; +var mdiRemoteTvOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17,20.25C16.86,21.24 16,22 15,22H9A2,2 0 0,1 7,20V10.27L2,5.27M9,2H11V4H13V2H15A2,2 0 0,1 17,4V15.18L13,11.18V10H15V8H13V6H11V8H9.82L7,5.18V4A2,2 0 0,1 9,2M9,20H11V18H9V20M13,20H15V18.27L14.73,18H13V20M9,14V16H11V14.27L10.73,14H9Z"; +var mdiRenameBox = "M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiReorderHorizontal = "M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z"; +var mdiReorderVertical = "M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z"; +var mdiRepeat = "M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z"; +var mdiRepeatOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z"; +var mdiRepeatOnce = "M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z"; +var mdiReplay = "M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z"; +var mdiReply = "M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z"; +var mdiReplyAll = "M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z"; +var mdiReplyAllOutline = "M11,9.8V10.7L12.7,10.9C15.3,11.3 17.2,12.3 18.6,13.6C16.9,13.1 15.1,12.8 13,12.8H11V14.1L8.8,12L11,9.8M13,5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12"; +var mdiReplyCircle = "M2 12C2 17.5 6.5 22 12 22S22 17.5 22 12 17.5 2 12 2 2 6.5 2 12M5 11L10 6V9C15.06 9.73 17.28 13.33 18 17C16.19 14.43 13.61 13 10 13V16L5 11Z"; +var mdiReplyOutline = "M8,9.8V10.7L9.7,11C12.3,11.4 14.2,12.4 15.6,13.7C13.9,13.2 12.1,12.9 10,12.9H8V14.2L5.8,12L8,9.8M10,5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9"; +var mdiReproduction = "M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z"; +var mdiResistor = "M2,11H7L10.07,15.35L13.11,4L18,11H22V13H17L13.93,8.65L10.89,20L6,13H2V11Z"; +var mdiResistorNodes = "M2,11H3.67C4.08,9.83 5.19,9 6.5,9A3,3 0 0,1 9.5,12C9.5,12.65 9.29,13.25 8.94,13.74L10.07,15.35L13.11,4L14.61,6.13L16.7,9.11L17.5,9C18.81,9 19.92,9.83 20.33,11H22V13H20.33C19.92,14.17 18.81,15 17.5,15A3,3 0 0,1 14.5,12C14.5,11.35 14.71,10.75 15.06,10.26L13.93,8.65L10.89,20L7.3,14.89C7.05,14.96 6.78,15 6.5,15C5.19,15 4.08,14.17 3.67,13H2V11M17.5,10.5A1.5,1.5 0 0,0 16,12A1.5,1.5 0 0,0 17.5,13.5A1.5,1.5 0 0,0 19,12A1.5,1.5 0 0,0 17.5,10.5M6.5,10.5A1.5,1.5 0 0,0 5,12A1.5,1.5 0 0,0 6.5,13.5A1.5,1.5 0 0,0 8,12A1.5,1.5 0 0,0 6.5,10.5Z"; +var mdiResize = "M10.59,12L14.59,8H11V6H18V13H16V9.41L12,13.41V16H20V4H8V12H10.59M22,2V18H12V22H2V12H6V2H22M10,14H4V20H10V14Z"; +var mdiResizeBottomRight = "M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z"; +var mdiResponsive = "M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z"; +var mdiRestart = "M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z"; +var mdiRestartAlert = "M10 4.03V.633L5 5.63L10 10.63V6.03C11.5 6.03 13.11 6.63 14.21 7.73C16.5 10.13 16.5 13.93 14.21 16.23C12.91 17.53 11.11 18.13 9.4 17.93L8.9 19.93C11.31 20.23 13.81 19.53 15.61 17.63C18.7 14.53 18.7 9.43 15.61 6.33C14.11 4.83 12.11 4.03 10 4.03M4.31 17.63C5.11 18.43 6 19.03 7 19.43L7.61 17.43C6.91 17.13 6.31 16.73 5.81 16.23C3.91 14.43 3.5 11.63 4.61 9.43L3.11 7.93C1.31 11.03 1.71 15.03 4.31 17.63M20 13H22V7H20V13M20 17H22V15H20V17Z"; +var mdiRestartOff = "M20.8,22.7L16.6,18.5C14.9,19.7 12.9,20.2 10.9,19.9L11.4,17.9C12.7,18 14,17.7 15.1,17L1.1,3L2.4,1.7L16.5,15.8L17.9,17.2L22.1,21.4L20.8,22.7M12,6C13.5,6 15.1,6.6 16.2,7.8C18,9.6 18.4,12.2 17.5,14.4L19,15.9C20.7,12.9 20.2,9 17.6,6.4C16.1,4.8 14,4 12,4V0.7L7.9,4.7L12,8.8V6M6.6,9.4L5.1,7.9C3.3,11 3.7,15 6.3,17.7C7.1,18.4 8,19 9,19.4L9.5,17.4C8.9,17.1 8.3,16.7 7.7,16.2C5.9,14.4 5.5,11.6 6.6,9.4Z"; +var mdiRestore = "M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"; +var mdiRestoreAlert = "M13 3C8 3 4 7 4 12H1L4.9 15.9L5 16L9 12H6C6 8.1 9.1 5 13 5S20 8.1 20 12 16.9 19 13 19C11.1 19 9.3 18.2 8.1 16.9L6.7 18.3C8.3 20 10.5 21 13 21C18 21 22 17 22 12S18 3 13 3M12 15H14V17H12V15M12 7H14V13H12V7"; +var mdiRewind = "M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z"; +var mdiRewind10 = "M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14Z"; +var mdiRewind30 = "M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3Z"; +var mdiRewind5 = "M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z"; +var mdiRewind60 = "M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z"; +var mdiRewindOutline = "M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z"; +var mdiRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2Z"; +var mdiRhombusMedium = "M12 6.46C11.72 6.46 11.44 6.56 11.22 6.78L6.78 11.22C6.35 11.65 6.35 12.35 6.78 12.78L11.22 17.22C11.65 17.65 12.35 17.65 12.78 17.22L17.22 12.78C17.65 12.35 17.65 11.65 17.22 11.22L12.78 6.78C12.56 6.56 12.28 6.46 12 6.46Z"; +var mdiRhombusMediumOutline = "M12 6.46C11.72 6.46 11.44 6.56 11.22 6.78L6.78 11.22C6.35 11.65 6.35 12.35 6.78 12.78L11.22 17.22C11.65 17.65 12.35 17.65 12.78 17.22L17.22 12.78C17.65 12.35 17.65 11.65 17.22 11.22L12.78 6.78C12.56 6.56 12.28 6.46 12 6.46M12 8.83L15.17 12L12 15.17L8.83 12L12 8.83Z"; +var mdiRhombusOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z"; +var mdiRhombusSplit = "M12 2C11.5 2 11 2.19 10.59 2.59L7.29 5.88L12 10.58L16.71 5.88L13.41 2.59C13 2.19 12.5 2 12 2M5.88 7.29L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L5.88 16.71L10.58 12L5.88 7.29M18.12 7.29L13.42 12L18.12 16.71L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L18.12 7.29M12 13.42L7.29 18.12L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L16.71 18.12L12 13.42Z"; +var mdiRhombusSplitOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L15.29 7.29L12 10.59L8.71 7.29L12 4M7.29 8.71L10.59 12L7.29 15.29L4 12L7.29 8.71M16.71 8.71L20 12L16.71 15.29L13.41 12L16.71 8.71M12 13.41L15.29 16.71L12 20L8.71 16.71L12 13.41Z"; +var mdiRibbon = "M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z"; +var mdiRice = "M22,11H19.7C19.4,9.9 18.9,8.8 18.2,8L21.6,2.6L19.9,1.5L16.7,6.6C16.3,6.3 16,6.1 15.5,5.9L16.4,2.3L14.5,1.8L13.7,5.2C13.1,5.1 12.6,5 12,5C8.3,5 5.2,7.6 4.3,11H2C2,15.1 4.5,18.6 8,20.2V22H16V20.2C19.5,18.6 22,15.1 22,11M12,7C14.6,7 16.8,8.7 17.6,11H6.4C7.2,8.7 9.4,7 12,7Z"; +var mdiRickshaw = "M20 14.05V12.73C20 12.26 19.84 11.8 19.54 11.44L15.6 6.72C15.22 6.26 14.66 6 14.06 6H4C2.9 6 2 6.9 2 8V15C2 16.1 2.9 17 4 17H4.05C4.28 18.14 5.29 19 6.5 19S8.72 18.14 8.95 17H17.05C17.28 18.14 18.29 19 19.5 19C20.88 19 22 17.88 22 16.5C22 15.29 21.14 14.28 20 14.05M3.5 8C3.5 7.73 3.73 7.5 4 7.5H7V12H3.5V8M6.5 17.5C5.95 17.5 5.5 17.05 5.5 16.5S5.95 15.5 6.5 15.5 7.5 15.95 7.5 16.5 7.05 17.5 6.5 17.5M13 15.5H9V14H11V12H9V7.5H13V15.5M15 8.34L18.05 12H15V8.34M19.5 17.5C18.95 17.5 18.5 17.05 18.5 16.5S18.95 15.5 19.5 15.5 20.5 15.95 20.5 16.5 20.05 17.5 19.5 17.5Z"; +var mdiRickshawElectric = "M20 12.05V10.73C20 10.26 19.84 9.8 19.54 9.44L15.6 4.72C15.22 4.26 14.66 4 14.06 4H4C2.9 4 2 4.9 2 6V13C2 14.1 2.9 15 4 15H4.05C4.28 16.14 5.29 17 6.5 17S8.72 16.14 8.95 15H17.05C17.28 16.14 18.29 17 19.5 17C20.88 17 22 15.88 22 14.5C22 13.29 21.14 12.28 20 12.05M3.5 6C3.5 5.73 3.73 5.5 4 5.5H7V10H3.5V6M6.5 15.5C5.95 15.5 5.5 15.05 5.5 14.5S5.95 13.5 6.5 13.5 7.5 13.95 7.5 14.5 7.05 15.5 6.5 15.5M13 13.5H9V12H11V10H9V5.5H13V13.5M15 6.34L18.05 10H15V6.34M19.5 15.5C18.95 15.5 18.5 15.05 18.5 14.5S18.95 13.5 19.5 13.5 20.5 13.95 20.5 14.5 20.05 15.5 19.5 15.5M11 20H7L13 23V21H17L11 18V20Z"; +var mdiRing = "M12,10L8,4.4L9.6,2H14.4L16,4.4L12,10M15.5,6.8L14.3,8.5C16.5,9.4 18,11.5 18,14A6,6 0 0,1 12,20A6,6 0 0,1 6,14C6,11.5 7.5,9.4 9.7,8.5L8.5,6.8C5.8,8.1 4,10.8 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,10.8 18.2,8.1 15.5,6.8Z"; +var mdiRivet = "M11.43,2C10.61,2 9.94,2.65 9.94,3.5C9.94,4.64 9.94,5.8 9.94,6.96H7.95V7.95H15.91V6.96H13.92C13.92,5.8 13.92,4.64 13.92,3.5C13.92,2.65 13.25,2 12.43,2H11.43M10.94,8.95V21.87L11.93,22.87L12.92,21.87V8.95H10.94Z"; +var mdiRoad = "M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z"; +var mdiRoadVariant = "M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z"; +var mdiRobber = "M10.7 12.5C10.7 12.8 9.4 13.2 8.4 13.2S6.3 12.5 6.3 12.3C6.3 12 7 11.1 8.6 11C9.5 10.9 10.5 11.5 10.7 12.5M15.4 11C14.4 10.9 13.5 11.5 13.3 12.5C13.3 12.8 14.5 13.2 15.6 13.2C16.7 13.2 17.7 12.5 17.7 12.3S17 11.1 15.4 11M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12 6.5 2 12 2 22 6.5 22 12M20 11.2C20 9.2 19.3 8.5 16.7 8.5C14.1 8.5 13.3 9.6 12 9.6S10 8.5 7.3 8.5 4 9.1 4 11.2C4 14.6 5.5 16.5 7.6 16.5C9.2 16.5 10.4 14.5 12 14.5S14.7 16.5 16.4 16.5C18.5 16.5 20 14.6 20 11.2Z"; +var mdiRobot = "M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z"; +var mdiRobotAngry = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M7.5 18C6.12 18 5 16.88 5 15.5C5 14.68 5.4 13.96 6 13.5L9.83 16.38C9.5 17.32 8.57 18 7.5 18M16.5 18C15.43 18 14.5 17.32 14.17 16.38L18 13.5C18.6 13.96 19 14.68 19 15.5C19 16.88 17.88 18 16.5 18Z"; +var mdiRobotAngryOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5C14.53 17.5 13.73 16.81 13.54 15.9L16.5 13.78C17.1 14.13 17.5 14.76 17.5 15.5M7.5 13.78L10.46 15.9C10.28 16.81 9.47 17.5 8.5 17.5C7.4 17.5 6.5 16.61 6.5 15.5C6.5 14.76 6.9 14.13 7.5 13.78Z"; +var mdiRobotConfused = "M20 4H18V3H20.5C20.78 3 21 3.22 21 3.5V5.5C21 5.78 20.78 6 20.5 6H20V7H19V5H20V4M19 9H20V8H19V9M17 3H16V7H17V3M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C14.34 7 14.67 7.03 15 7.08V10H19.74C20.53 11.13 21 12.5 21 14H22C22.55 14 23 14.45 23 15M10 15.5C10 14.12 8.88 13 7.5 13S5 14.12 5 15.5 6.12 18 7.5 18 10 16.88 10 15.5M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5M17 8H16V9H17V8Z"; +var mdiRobotConfusedOutline = "M19 8H20V9H19V8M20 5H19V7H20V6H20.5C20.78 6 21 5.78 21 5.5V3.5C21 3.22 20.78 3 20.5 3H18V4H20V5M17 3H16V7H17V3M13.5 15.5C13.5 16.61 14.4 17.5 15.5 17.5S17.5 16.61 17.5 15.5 16.61 13.5 15.5 13.5 13.5 14.4 13.5 15.5M17 8H16V9H17V8M22 14H21C21 12.5 20.53 11.13 19.74 10H16.97C18.19 10.91 19 12.36 19 14V16H21V17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C14.34 9 14.68 9.04 15 9.1V7.08C14.67 7.03 14.34 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5Z"; +var mdiRobotDead = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.86 16.68L8.68 17.86L7.5 16.68L6.32 17.86L5.14 16.68L6.32 15.5L5.14 14.32L6.32 13.14L7.5 14.32L8.68 13.14L9.86 14.32L8.68 15.5L9.86 16.68M18.86 16.68L17.68 17.86L16.5 16.68L15.32 17.86L14.14 16.68L15.32 15.5L14.14 14.32L15.32 13.14L16.5 14.32L17.68 13.14L18.86 14.32L17.68 15.5L18.86 16.68Z"; +var mdiRobotDeadOutline = "M10.62 14.44L9.56 15.5L10.62 16.56L9.56 17.62L8.5 16.56L7.44 17.62L6.38 16.56L7.44 15.5L6.38 14.44L7.44 13.38L8.5 14.44L9.56 13.38L10.62 14.44M16.56 13.38L15.5 14.44L14.44 13.38L13.38 14.44L14.44 15.5L13.38 16.56L14.44 17.62L15.5 16.56L16.56 17.62L17.62 16.56L16.56 15.5L17.62 14.44L16.56 13.38M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z"; +var mdiRobotExcited = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M8.68 17.04L7.5 15.86L6.32 17.04L5.14 15.86L7.5 13.5L9.86 15.86L8.68 17.04M17.68 17.04L16.5 15.86L15.32 17.04L14.14 15.86L16.5 13.5L18.86 15.86L17.68 17.04Z"; +var mdiRobotExcitedOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M8.5 13.5L10.86 15.86L9.68 17.04L8.5 15.86L7.32 17.04L6.14 15.86L8.5 13.5M15.5 13.5L17.86 15.86L16.68 17.04L15.5 15.86L14.32 17.04L13.14 15.86L15.5 13.5Z"; +var mdiRobotHappy = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.79 16.5C9.4 15.62 8.53 15 7.5 15S5.6 15.62 5.21 16.5C5.08 16.19 5 15.86 5 15.5C5 14.12 6.12 13 7.5 13S10 14.12 10 15.5C10 15.86 9.92 16.19 9.79 16.5M18.79 16.5C18.4 15.62 17.5 15 16.5 15S14.6 15.62 14.21 16.5C14.08 16.19 14 15.86 14 15.5C14 14.12 15.12 13 16.5 13S19 14.12 19 15.5C19 15.86 18.92 16.19 18.79 16.5Z"; +var mdiRobotHappyOutline = "M10.5 15.5C10.5 15.87 10.4 16.2 10.22 16.5C9.88 15.91 9.24 15.5 8.5 15.5S7.12 15.91 6.78 16.5C6.61 16.2 6.5 15.87 6.5 15.5C6.5 14.4 7.4 13.5 8.5 13.5S10.5 14.4 10.5 15.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16M15.5 13.5C14.4 13.5 13.5 14.4 13.5 15.5C13.5 15.87 13.61 16.2 13.78 16.5C14.12 15.91 14.76 15.5 15.5 15.5S16.88 15.91 17.22 16.5C17.4 16.2 17.5 15.87 17.5 15.5C17.5 14.4 16.61 13.5 15.5 13.5Z"; +var mdiRobotIndustrial = "M18.41,4L16,6.41V6.59L18.41,9H22V11H17.59L16,9.41V12H15A2,2 0 0,1 13,10V7.5H9.86C9.77,7.87 9.62,8.22 9.42,8.55L15.18,19H20A2,2 0 0,1 22,21V22H2V21A2,2 0 0,1 4,19H10.61L5.92,10.5C4.12,10.47 2.56,9.24 2.11,7.5C1.56,5.36 2.85,3.18 5,2.63C7.13,2.08 9.31,3.36 9.86,5.5H13V3A2,2 0 0,1 15,1H16V3.59L17.59,2H22V4H18.41M6,4.5A2,2 0 0,0 4,6.5A2,2 0 0,0 6,8.5A2,2 0 0,0 8,6.5A2,2 0 0,0 6,4.5Z"; +var mdiRobotLove = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.7 15.45L8.97 16.18L7.5 17.65L5.3 15.45C4.9 15.05 4.9 14.39 5.3 14C5.71 13.58 6.36 13.58 6.77 14L7.5 14.72L8.23 14C8.64 13.58 9.29 13.58 9.7 14C10.1 14.39 10.1 15.05 9.7 15.45M18.7 15.45L17.97 16.18L16.5 17.65L14.3 15.45C13.9 15.05 13.9 14.39 14.3 14C14.71 13.58 15.36 13.58 15.77 14L16.5 14.72L17.23 14C17.64 13.58 18.29 13.58 18.7 14C19.1 14.39 19.1 15.05 18.7 15.45Z"; +var mdiRobotLoveOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M10.7 14C11.1 14.39 11.1 15.05 10.7 15.45L9.97 16.18L8.5 17.65L6.3 15.45C5.9 15.05 5.9 14.39 6.3 14C6.71 13.58 7.36 13.58 7.77 14L8.5 14.72L9.23 14C9.64 13.58 10.29 13.58 10.7 14M17.7 14C18.1 14.39 18.1 15.05 17.7 15.45L16.97 16.18L15.5 17.65L13.3 15.45C12.9 15.05 12.9 14.39 13.3 14C13.71 13.58 14.36 13.58 14.77 14L15.5 14.72L16.23 14C16.64 13.58 17.29 13.58 17.7 14Z"; +var mdiRobotMower = "M1 14V5H13C18.5 5 23 9.5 23 15V17H20.83C20.42 18.17 19.31 19 18 19C16.69 19 15.58 18.17 15.17 17H10C9.09 18.21 7.64 19 6 19C3.24 19 1 16.76 1 14M6 11C4.34 11 3 12.34 3 14C3 15.66 4.34 17 6 17C7.66 17 9 15.66 9 14C9 12.34 7.66 11 6 11M15 10V12H20.25C19.92 11.27 19.5 10.6 19 10H15Z"; +var mdiRobotMowerOutline = "M1 14C1 16.76 3.24 19 6 19C7.64 19 9.09 18.21 10 17H15.17C15.58 18.17 16.7 19 18 19C19.31 19 20.42 18.17 20.83 17H23V15C23 9.5 18.5 5 13 5H1V14M21 15H10.9C10.97 14.68 11 14.34 11 14C11 11.24 8.76 9 6 9C4.87 9 3.84 9.37 3 10V7H12.5C15.1 7 17.42 8.16 19 10H15V12H20.25C20.67 12.92 20.92 13.94 21 15M6 11C7.66 11 9 12.34 9 14C9 15.66 7.66 17 6 17C4.34 17 3 15.66 3 14C3 12.34 4.34 11 6 11Z"; +var mdiRobotOff = "M23 15V18C23 18.5 22.64 18.88 22.17 18.97L18.97 15.77C19 15.68 19 15.59 19 15.5C19 14.12 17.88 13 16.5 13C16.41 13 16.32 13 16.23 13.03L10.2 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M22.11 21.46L20.84 22.73L19.89 21.78C19.62 21.92 19.32 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 11.53 4.29 9.36 6.22 8.11L1.11 3L2.39 1.73L22.11 21.46M10 15.5C10 14.12 8.88 13 7.5 13S5 14.12 5 15.5 6.12 18 7.5 18 10 16.88 10 15.5M16.07 17.96L14.04 15.93C14.23 16.97 15.04 17.77 16.07 17.96Z"; +var mdiRobotOffOutline = "M23 15V18C23 18.5 22.64 18.88 22.17 18.97L20.2 17H21V16H19.2L19 15.8V14C19 11.24 16.76 9 14 9H12.2L10.2 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M22.11 21.46L20.84 22.73L19.89 21.78C19.62 21.92 19.32 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 11.53 4.29 9.36 6.22 8.11L1.11 3L2.39 1.73L22.11 21.46M18.11 20L15.6 17.5C15.57 17.5 15.53 17.5 15.5 17.5C14.4 17.5 13.5 16.61 13.5 15.5C13.5 15.47 13.5 15.43 13.5 15.4L7.7 9.59C6.1 10.42 5 12.08 5 14V16H3V17H5V20H18.11Z"; +var mdiRobotOutline = "M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5S13.5 16.61 13.5 15.5 14.4 13.5 15.5 13.5 17.5 14.4 17.5 15.5M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z"; +var mdiRobotVacuum = "M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z"; +var mdiRobotVacuumVariant = "M5,3A2,2 0 0,0 3,5V7H5V5H19V7H21V5A2,2 0 0,0 19,3H5M8,7V9H16V7H8M3,9V12A9,9 0 0,0 12,21A9,9 0 0,0 21,12V9H19V12A7,7 0 0,1 12,19A7,7 0 0,1 5,12V9H3M12,12A2.5,2.5 0 0,0 9.5,14.5A2.5,2.5 0 0,0 12,17A2.5,2.5 0 0,0 14.5,14.5A2.5,2.5 0 0,0 12,12Z"; +var mdiRocket = "M20 22L16.14 20.45C16.84 18.92 17.34 17.34 17.65 15.73L20 22M7.86 20.45L4 22L6.35 15.73C6.66 17.34 7.16 18.92 7.86 20.45M12 2C12 2 17 4 17 12C17 15.1 16.25 17.75 15.33 19.83C15 20.55 14.29 21 13.5 21H10.5C9.71 21 9 20.55 8.67 19.83C7.76 17.75 7 15.1 7 12C7 4 12 2 12 2M12 12C13.1 12 14 11.1 14 10C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10C10 11.1 10.9 12 12 12Z"; +var mdiRocketLaunch = "M13.13 22.19L11.5 18.36C13.07 17.78 14.54 17 15.9 16.09L13.13 22.19M5.64 12.5L1.81 10.87L7.91 8.1C7 9.46 6.22 10.93 5.64 12.5M21.61 2.39C21.61 2.39 16.66 .269 11 5.93C8.81 8.12 7.5 10.53 6.65 12.64C6.37 13.39 6.56 14.21 7.11 14.77L9.24 16.89C9.79 17.45 10.61 17.63 11.36 17.35C13.5 16.53 15.88 15.19 18.07 13C23.73 7.34 21.61 2.39 21.61 2.39M14.54 9.46C13.76 8.68 13.76 7.41 14.54 6.63S16.59 5.85 17.37 6.63C18.14 7.41 18.15 8.68 17.37 9.46C16.59 10.24 15.32 10.24 14.54 9.46M8.88 16.53L7.47 15.12L8.88 16.53M6.24 22L9.88 18.36C9.54 18.27 9.21 18.12 8.91 17.91L4.83 22H6.24M2 22H3.41L8.18 17.24L6.76 15.83L2 20.59V22M2 19.17L6.09 15.09C5.88 14.79 5.73 14.47 5.64 14.12L2 17.76V19.17Z"; +var mdiRocketLaunchOutline = "M13.13 22.19L11.5 18.36C13.07 17.78 14.54 17 15.9 16.09L13.13 22.19M5.64 12.5L1.81 10.87L7.91 8.1C7 9.46 6.22 10.93 5.64 12.5M19.22 4C19.5 4 19.75 4 19.96 4.05C20.13 5.44 19.94 8.3 16.66 11.58C14.96 13.29 12.93 14.6 10.65 15.47L8.5 13.37C9.42 11.06 10.73 9.03 12.42 7.34C15.18 4.58 17.64 4 19.22 4M19.22 2C17.24 2 14.24 2.69 11 5.93C8.81 8.12 7.5 10.53 6.65 12.64C6.37 13.39 6.56 14.21 7.11 14.77L9.24 16.89C9.62 17.27 10.13 17.5 10.66 17.5C10.89 17.5 11.13 17.44 11.36 17.35C13.5 16.53 15.88 15.19 18.07 13C23.73 7.34 21.61 2.39 21.61 2.39S20.7 2 19.22 2M14.54 9.46C13.76 8.68 13.76 7.41 14.54 6.63S16.59 5.85 17.37 6.63C18.14 7.41 18.15 8.68 17.37 9.46C16.59 10.24 15.32 10.24 14.54 9.46M8.88 16.53L7.47 15.12L8.88 16.53M6.24 22L9.88 18.36C9.54 18.27 9.21 18.12 8.91 17.91L4.83 22H6.24M2 22H3.41L8.18 17.24L6.76 15.83L2 20.59V22M2 19.17L6.09 15.09C5.88 14.79 5.73 14.47 5.64 14.12L2 17.76V19.17Z"; +var mdiRocketOutline = "M12 2C12 2 7 4 7 12C7 15.1 7.76 17.75 8.67 19.83C9 20.55 9.71 21 10.5 21H13.5C14.29 21 15 20.55 15.33 19.83C16.25 17.75 17 15.1 17 12C17 4 12 2 12 2M13.5 19H10.5C9.5 16.76 9 14.41 9 12C9 7.36 10.9 5.2 12 4.33C13.1 5.2 15 7.36 15 12C15 14.41 14.5 16.76 13.5 19M20 22L16.14 20.45C16.84 18.92 17.34 17.34 17.65 15.73M7.86 20.45L4 22L6.35 15.73C6.66 17.34 7.16 18.92 7.86 20.45M12 12C10.9 12 10 11.1 10 10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 11.1 13.1 12 12 12Z"; +var mdiRodent = "M21.33 17.39C22.73 18.66 21.8 21 19.92 21H11.06C8.25 21 6 18.75 6 15.94V15.89C3.7 15.42 2 13.41 2 11C2 8.25 4.22 6 7 6H9.5C9.8 6 10 5.77 10 5.5S9.8 5 9.5 5H7V3H9.5C10.88 3 12 4.13 12 5.5C12 6.89 10.88 8 9.5 8H7C5.34 8 4 9.33 4 11C4 12.37 4.92 13.5 6.14 13.87C6.7 11.67 8.67 10 11.06 10C11.86 10 12.66 10.22 13.36 10.55C11.95 11.34 11 12.8 11 14.5C11 15.75 11.5 16.87 12.33 17.67L13.03 16.97C12.38 16.36 12 15.47 12 14.5C12 11.91 14.34 11 15.5 11C17.58 11 19.45 12.89 18.94 15.23L21.33 17.39M18 19C18.56 19 19 18.56 19 18S18.56 17 18 17 17 17.44 17 18 17.44 19 18 19Z"; +var mdiRollerSkate = "M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15M6.5,17A2.5,2.5 0 0,0 4,19.5A2.5,2.5 0 0,0 6.5,22A2.5,2.5 0 0,0 9,19.5A2.5,2.5 0 0,0 6.5,17M16.5,17A2.5,2.5 0 0,0 14,19.5A2.5,2.5 0 0,0 16.5,22A2.5,2.5 0 0,0 19,19.5A2.5,2.5 0 0,0 16.5,17Z"; +var mdiRollerSkateOff = "M20.84 22.73L18.73 20.62C18.32 21.43 17.5 22 16.5 22C15.12 22 14 20.88 14 19.5C14 18.5 14.57 17.68 15.38 17.27L14.11 16H4V5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M19 15C19 10 14 10 14 10H13.2L18.72 15.5C19 15.27 19 15 19 15M11.64 7.5L11.43 6H9.24V4.5H11.21L11 3H6.2L10.7 7.5H11.64M6.5 17C5.12 17 4 18.12 4 19.5S5.12 22 6.5 22 9 20.88 9 19.5 7.88 17 6.5 17Z"; +var mdiRollerblade = "M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15M5.5,17A2.5,2.5 0 0,0 3,19.5A2.5,2.5 0 0,0 5.5,22A2.5,2.5 0 0,0 8,19.5A2.5,2.5 0 0,0 5.5,17M17.5,17A2.5,2.5 0 0,0 15,19.5A2.5,2.5 0 0,0 17.5,22A2.5,2.5 0 0,0 20,19.5A2.5,2.5 0 0,0 17.5,17M11.5,17A2.5,2.5 0 0,0 9,19.5A2.5,2.5 0 0,0 11.5,22A2.5,2.5 0 0,0 14,19.5A2.5,2.5 0 0,0 11.5,17Z"; +var mdiRollerbladeOff = "M20.84 22.73L19.32 21.21C18.86 21.69 18.22 22 17.5 22C16.12 22 15 20.88 15 19.5C15 18.78 15.31 18.14 15.79 17.68L14.11 16H4V5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M11.64 7.5L11.43 6H9.24V4.5H11.21L11 3H6.2L10.7 7.5H11.64M19 15C19 10 14 10 14 10H13.2L18.72 15.5C19 15.27 19 15 19 15M11.5 17C10.12 17 9 18.12 9 19.5S10.12 22 11.5 22 14 20.88 14 19.5 12.88 17 11.5 17M5.5 17C4.12 17 3 18.12 3 19.5S4.12 22 5.5 22 8 20.88 8 19.5 6.88 17 5.5 17Z"; +var mdiRollupjs = "M19.46,8.64C19.46,11.11 18.11,13.26 16.12,14.4C16,14.5 15.93,14.66 16,14.81L19.41,21.55C19.5,21.76 19.36,22 19.13,22H6.1L6.17,21.96C6.66,21.68 10.06,14.97 13.38,11.79C16.7,8.61 17.12,9.67 15.29,6.21C15.29,6.21 16.7,8.96 15.5,9.17C14.56,9.34 12.4,7.25 13.2,5.37C14,3.53 17.15,3.88 18.6,5.38C19.15,6.34 19.46,7.45 19.46,8.64M7.16,13.13C5.84,15.56 5,17.33 4.54,18.57V2.31C4.54,2.14 4.68,2 4.85,2H12.92C15.26,2.04 17.31,3.28 18.46,5.15C17.62,4.1 16.3,3.5 15,3.5C12.53,3.5 11.91,4.4 7.16,13.13Z"; +var mdiRomanNumeral1 = "M14 7V9H13V15H14V17H10V15H11V9H10V7H14Z"; +var mdiRomanNumeral10 = "M9 7L11 12L9 17H11L12 14.5L13 17H15L13 12L15 7H13L12 9.5L11 7H9Z"; +var mdiRomanNumeral2 = "M11 7V9H10V15H11V17H7V15H8V9H7V7H11M17 7V9H16V15H17V17H13V15H14V9H13V7H17Z"; +var mdiRomanNumeral3 = "M9 7V9H8V15H9V17H5V15H6V9H5V7H9M14 7V9H13V15H14V17H10V15H11V9H10V7H14M19 7V9H18V15H19V17H15V15H16V9H15V7H19Z"; +var mdiRomanNumeral4 = "M12 7L14 17H16L18 7H16L15 12L14 7H12M11 7V9H10V15H11V17H7V15H8V9H7V7H11Z"; +var mdiRomanNumeral5 = "M9 7L11 17H13L15 7H13L12 12L11 7H9Z"; +var mdiRomanNumeral6 = "M6 7L8 17H10L12 7H10L9 12L8 7H6M17 7V9H16V15H17V17H13V15H14V9H13V7H17Z"; +var mdiRomanNumeral7 = "M4 7L6 17H8L10 7H8L7 12L6 7H4M15 7V9H14V15H15V17H11V15H12V9H11V7H15M20 7V9H19V15H20V17H16V15H17V9H16V7H20Z"; +var mdiRomanNumeral8 = "M1 7L3 17H5L7 7H5L4 12L3 7H1M12 7V9H11V15H12V17H8V15H9V9H8V7H12M17 7V9H16V15H17V17H13V15H14V9H13V7H17M22 7V9H21V15H22V17H18V15H19V9H18V7H22Z"; +var mdiRomanNumeral9 = "M11 7V9H10V15H11V17H7V15H8V9H7V7H11M12 7L14 12L12 17H14L15 14.5L16 17H18L16 12L18 7H16L15 9.5L14 7H12Z"; +var mdiRoomService = "M12,5A2,2 0 0,1 14,7C14,7.24 13.96,7.47 13.88,7.69C17.95,8.5 21,11.91 21,16H3C3,11.91 6.05,8.5 10.12,7.69C10.04,7.47 10,7.24 10,7A2,2 0 0,1 12,5M22,19H2V17H22V19Z"; +var mdiRoomServiceOutline = "M12,5A2,2 0 0,1 14,7C14,7.24 13.96,7.47 13.88,7.69C17.95,8.5 21,11.91 21,16H3C3,11.91 6.05,8.5 10.12,7.69C10.04,7.47 10,7.24 10,7A2,2 0 0,1 12,5M22,19H2V17H22V19M12,9.5C8.89,9.5 6.25,11.39 5.34,14H18.66C17.75,11.39 15.11,9.5 12,9.5Z"; +var mdiRotate3d = "M7.47,21.5C4.2,19.94 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24L12.61,23.97L8.8,20.16L7.47,21.5M8.36,14.96C8.17,14.96 8,14.93 7.84,14.88C7.68,14.82 7.55,14.75 7.44,14.64C7.33,14.54 7.24,14.42 7.18,14.27C7.12,14.13 7.09,13.97 7.09,13.8H5.79C5.79,14.16 5.86,14.5 6,14.75C6.14,15 6.33,15.25 6.56,15.44C6.8,15.62 7.07,15.76 7.38,15.85C7.68,15.95 8,16 8.34,16C8.71,16 9.06,15.95 9.37,15.85C9.69,15.75 9.97,15.6 10.2,15.41C10.43,15.22 10.62,15 10.75,14.69C10.88,14.4 10.95,14.08 10.95,13.72C10.95,13.53 10.93,13.34 10.88,13.16C10.83,13 10.76,12.81 10.65,12.65C10.55,12.5 10.41,12.35 10.25,12.22C10.08,12.09 9.88,12 9.64,11.91C9.84,11.82 10,11.71 10.16,11.58C10.31,11.45 10.43,11.31 10.53,11.16C10.63,11 10.7,10.86 10.75,10.7C10.8,10.54 10.82,10.38 10.82,10.22C10.82,9.86 10.76,9.54 10.64,9.26C10.5,9 10.35,8.75 10.13,8.57C9.93,8.38 9.66,8.24 9.36,8.14C9.05,8.05 8.71,8 8.34,8C8,8 7.65,8.05 7.34,8.16C7.04,8.27 6.77,8.42 6.55,8.61C6.34,8.8 6.17,9 6.04,9.28C5.92,9.54 5.86,9.82 5.86,10.13H7.16C7.16,9.96 7.19,9.81 7.25,9.68C7.31,9.55 7.39,9.43 7.5,9.34C7.61,9.25 7.73,9.17 7.88,9.12C8.03,9.07 8.18,9.04 8.36,9.04C8.76,9.04 9.06,9.14 9.25,9.35C9.44,9.55 9.54,9.84 9.54,10.21C9.54,10.39 9.5,10.55 9.46,10.7C9.41,10.85 9.32,10.97 9.21,11.07C9.1,11.17 8.96,11.25 8.8,11.31C8.64,11.37 8.44,11.4 8.22,11.4H7.45V12.43H8.22C8.44,12.43 8.64,12.45 8.82,12.5C9,12.55 9.15,12.63 9.27,12.73C9.39,12.84 9.5,12.97 9.56,13.13C9.63,13.29 9.66,13.5 9.66,13.7C9.66,14.11 9.54,14.42 9.31,14.63C9.08,14.86 8.76,14.96 8.36,14.96M16.91,9.04C16.59,8.71 16.21,8.45 15.77,8.27C15.34,8.09 14.85,8 14.31,8H11.95V16H14.25C14.8,16 15.31,15.91 15.76,15.73C16.21,15.55 16.6,15.3 16.92,14.97C17.24,14.64 17.5,14.24 17.66,13.78C17.83,13.31 17.92,12.79 17.92,12.21V11.81C17.92,11.23 17.83,10.71 17.66,10.24C17.5,9.77 17.23,9.37 16.91,9.04M16.5,12.2C16.5,12.62 16.47,13 16.38,13.33C16.28,13.66 16.14,13.95 15.95,14.18C15.76,14.41 15.5,14.59 15.24,14.71C14.95,14.83 14.62,14.89 14.25,14.89H13.34V9.12H14.31C15.03,9.12 15.58,9.35 15.95,9.81C16.33,10.27 16.5,10.93 16.5,11.8M11.95,0L11.29,0.03L15.1,3.84L16.43,2.5C19.7,4.06 22.04,7.23 22.39,11H23.89C23.39,4.84 18.24,0 11.95,0Z"; +var mdiRotate3dVariant = "M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z"; +var mdiRotateLeft = "M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z"; +var mdiRotateLeftVariant = "M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z"; +var mdiRotateOrbit = "M8,14.25L4.75,11H7C7.25,5.39 9.39,1 12,1C14,1 15.77,3.64 16.55,7.45C20.36,8.23 23,10 23,12C23,13.83 20.83,15.43 17.6,16.3L17.89,14.27C19.8,13.72 21,12.91 21,12C21,10.94 19.35,10 16.87,9.5C16.95,10.29 17,11.13 17,12C17,18.08 14.76,23 12,23C10.17,23 8.57,20.83 7.7,17.6L9.73,17.89C10.28,19.8 11.09,21 12,21C13.66,21 15,16.97 15,12C15,11 14.95,10.05 14.85,9.15C13.95,9.05 13,9 12,9L10.14,9.06L10.43,7.05L12,7C12.87,7 13.71,7.05 14.5,7.13C14,4.65 13.06,3 12,3C10.46,3 9.18,6.5 9,11H11.25L8,14.25M14.25,16L11,19.25V17C5.39,16.75 1,14.61 1,12C1,10.17 3.17,8.57 6.4,7.7L6.11,9.73C4.2,10.28 3,11.09 3,12C3,13.54 6.5,14.82 11,15V12.75L14.25,16Z"; +var mdiRotateRight = "M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z"; +var mdiRotateRightVariant = "M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z"; +var mdiRoundedCorner = "M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z"; +var mdiRouter = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20M13 13V16H15L12 19L9 16H11V13M5 13H8V15L11 12L8 9V11H5M11 11V8H9L12 5L15 8H13V11M19 11H16V9L13 12L16 15V13H19"; +var mdiRouterNetwork = "M5 9C3.9 9 3 9.9 3 11V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V11C21 9.9 20.11 9 19 9H5M6 12H8V14H6V12M9.5 12H11.5V14H9.5V12M13 12H15V14H13V12Z"; +var mdiRouterWireless = "M20.2,5.9L21,5.1C19.6,3.7 17.8,3 16,3C14.2,3 12.4,3.7 11,5.1L11.8,5.9C13,4.8 14.5,4.2 16,4.2C17.5,4.2 19,4.8 20.2,5.9M19.3,6.7C18.4,5.8 17.2,5.3 16,5.3C14.8,5.3 13.6,5.8 12.7,6.7L13.5,7.5C14.2,6.8 15.1,6.5 16,6.5C16.9,6.5 17.8,6.8 18.5,7.5L19.3,6.7M19,13H17V9H15V13H5A2,2 0 0,0 3,15V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V15A2,2 0 0,0 19,13M8,18H6V16H8V18M11.5,18H9.5V16H11.5V18M15,18H13V16H15V18Z"; +var mdiRouterWirelessOff = "M11.8 5.9L11 5.1C12.4 3.7 14.2 3 16 3S19.6 3.7 21 5.1L20.2 5.9C19 4.8 17.5 4.2 16 4.2S13 4.8 11.8 5.9M21 15C21 13.9 20.1 13 19 13H17V9H15V11.8L21 17.8V15M18.5 7.5L19.3 6.7C18.4 5.8 17.2 5.3 16 5.3S13.6 5.8 12.7 6.7L13.5 7.5C14.2 6.8 15.1 6.5 16 6.5C16.9 6.5 17.8 6.8 18.5 7.5M22.1 21.5L20.8 22.8L19.1 21H5C3.9 21 3 20.1 3 19V15C3 13.9 3.9 13 5 13H11.1L1.1 3L2.4 1.7L22.1 21.5M8 16H6V18H8V16M11.5 16H9.5V18H11.5V16M15 16.9L14.1 16H13V18H15V16.9Z"; +var mdiRouterWirelessSettings = "M20.2,4.9C19,3.8 17.5,3.2 16,3.2C14.5,3.2 13,3.8 11.8,4.9L11,4.1C12.4,2.7 14.2,2 16,2C17.8,2 19.6,2.7 21,4.1L20.2,4.9M19.3,5.7L18.5,6.5C17.8,5.8 16.9,5.5 16,5.5C15.1,5.5 14.2,5.8 13.5,6.5L12.7,5.7C13.6,4.8 14.8,4.3 16,4.3C17.2,4.3 18.4,4.8 19.3,5.7M19,12A2,2 0 0,1 21,14V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V14A2,2 0 0,1 5,12H15V8H17V12H19M8,17V15H6V17H8M11.5,17V15H9.5V17H11.5M15,17V15H13V17H15M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; +var mdiRoutes = "M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z"; +var mdiRoutesClock = "M16.5 13H15V16.69L18.19 18.53L18.94 17.23L16.5 15.82V13M16 9C14.04 9 12.27 9.82 11 11.12V7H17L19 5L17 3H11V2L10 1L9 2V6H3L1 8L3 10H9V20C7.9 20 7 20.9 7 22H12.41C13.46 22.63 14.69 23 16 23C19.87 23 23 19.87 23 16S19.87 9 16 9M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15 20.85 13.32 20.85 16 18.68 20.85 16 20.85Z"; +var mdiRowing = "M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z"; +var mdiRss = "M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z"; +var mdiRssBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z"; +var mdiRssOff = "M2.5,3.77L3.78,2.5L21.5,20.22L20.23,21.5L18.73,20H16.73C16.73,19.25 16.67,18.5 16.54,17.81L6.19,7.46C5.5,7.33 4.75,7.27 4,7.27V5.27L2.5,3.77M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1M9.13,5.31C13.59,6.87 17.13,10.41 18.69,14.87L9.13,5.31Z"; +var mdiRug = "M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M23 19H1V17H4V15H1V13H4V11H1V9H4V7H1V5H23V7H20V9H23V11H20V13H23V15H20V17H23V19M12 15.92C12.62 16.62 13.66 16.81 14.5 16.33C15.34 15.85 15.69 14.84 15.4 13.96C16.31 13.78 17 12.97 17 12S16.31 10.22 15.4 10.04C15.69 9.16 15.34 8.15 14.5 7.67C13.66 7.19 12.62 7.38 12 8.08C11.38 7.38 10.34 7.19 9.5 7.67C8.66 8.15 8.31 9.16 8.61 10.04C7.69 10.22 7 11.03 7 12S7.69 13.78 8.61 13.96C8.31 14.84 8.66 15.85 9.5 16.33C10.34 16.82 11.38 16.62 12 15.92Z"; +var mdiRugby = "M16.22,16.22C18.25,14.19 19.33,11.5 19.45,8.2C18.36,10.61 16.81,12.81 14.81,14.81C12.81,16.81 10.61,18.36 8.2,19.45C11.5,19.36 14.16,18.28 16.22,16.22M7.78,7.78C5.75,9.81 4.67,12.5 4.55,15.8C5,14.8 5.7,13.65 6.61,12.35C7.5,11.05 8.38,10 9.19,9.19C11.19,7.19 13.39,5.64 15.8,4.55C12.5,4.64 9.84,5.72 7.78,7.78M20.5,3.5C21,4.05 21.34,5.11 21.47,6.7C21.59,8.3 21.35,10.16 20.74,12.3C20.13,14.45 19.11,16.23 17.67,17.67C16.36,19 14.8,19.95 13,20.55C11.21,21.16 9.44,21.47 7.69,21.47C5.56,21.47 4.17,21.14 3.5,20.5C3,19.95 2.66,18.89 2.53,17.3C2.41,15.7 2.65,13.84 3.26,11.7C3.87,9.55 4.89,7.77 6.33,6.33C7.64,5 9.2,4.05 11,3.45C12.79,2.84 14.56,2.53 16.31,2.53C18.44,2.53 19.83,2.86 20.5,3.5Z"; +var mdiRuler = "M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z"; +var mdiRulerSquare = "M3,5V21H9V19.5H7V18H9V16.5H5V15H9V13.5H7V12H9V10.5H5V9H9V5H10.5V9H12V7H13.5V9H15V5H16.5V9H18V7H19.5V9H21V3H5A2,2 0 0,0 3,5M6,7A1,1 0 0,1 5,6A1,1 0 0,1 6,5A1,1 0 0,1 7,6A1,1 0 0,1 6,7Z"; +var mdiRulerSquareCompass = "M20 19.88V22L18.2 20.83L13.41 11.83A4.94 4.94 0 0 0 15.19 10.83M15 7A3 3 0 0 1 12 10A3.27 3.27 0 0 1 11.56 10L5.8 20.83L4 22V19.88L9.79 9A3 3 0 0 1 12 4V2A1 1 0 0 1 13 3V4.18A3 3 0 0 1 15 7M13 7A1 1 0 1 0 12 8A1 1 0 0 0 13 7M4.22 10L6 11.8L4.56 14.56L2.1 12.1M12 17.76L10.5 16.25L9 19L12 22L15 19L13.53 16.23M19.78 10L18 11.8L19.5 14.56L21.9 12.1Z"; +var mdiRun = "M13.5,5.5C14.59,5.5 15.5,4.58 15.5,3.5C15.5,2.38 14.59,1.5 13.5,1.5C12.39,1.5 11.5,2.38 11.5,3.5C11.5,4.58 12.39,5.5 13.5,5.5M9.89,19.38L10.89,15L13,17V23H15V15.5L12.89,13.5L13.5,10.5C14.79,12 16.79,13 19,13V11C17.09,11 15.5,10 14.69,8.58L13.69,7C13.29,6.38 12.69,6 12,6C11.69,6 11.5,6.08 11.19,6.08L6,8.28V13H8V9.58L9.79,8.88L8.19,17L3.29,16L2.89,18L9.89,19.38Z"; +var mdiRunFast = "M16.5,5.5A2,2 0 0,0 18.5,3.5A2,2 0 0,0 16.5,1.5A2,2 0 0,0 14.5,3.5A2,2 0 0,0 16.5,5.5M12.9,19.4L13.9,15L16,17V23H18V15.5L15.9,13.5L16.5,10.5C17.89,12.09 19.89,13 22,13V11C20.24,11.03 18.6,10.11 17.7,8.6L16.7,7C16.34,6.4 15.7,6 15,6C14.7,6 14.5,6.1 14.2,6.1L9,8.3V13H11V9.6L12.8,8.9L11.2,17L6.3,16L5.9,18L12.9,19.4M4,9A1,1 0 0,1 3,8A1,1 0 0,1 4,7H7V9H4M5,5A1,1 0 0,1 4,4A1,1 0 0,1 5,3H10V5H5M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H7V13H3Z"; +var mdiRvTruck = "M20 8H22V6L20 4H3A2 2 0 0 0 1 6V15A2 2 0 0 0 3 17H4A3 3 0 0 0 7 20A3 3 0 0 0 10 17H15A3 3 0 0 0 21 17H23V12M7 18.5A1.5 1.5 0 0 1 7 15.5A1.5 1.5 0 0 1 7 18.5M9 12H3V9H9M14 15H11V9H14M18 18.5A1.5 1.5 0 1 1 19.5 17A1.54 1.54 0 0 1 18 18.5M17 12V9.5H19.5L21.5 12Z"; +var mdiSack = "M16,9C20,11 21,18 21,18C21,18 22,22 16,22C10,22 8,22 8,22C2,22 3,18 3,18C3,18 4,11 8,9M14,4L12,2L10,4L6,2L8,7H16L18,2L14,4Z"; +var mdiSackPercent = "M8,7L6,2L10,4L12,2L14,4L18,2L16,7H8M16,22C10,22 8,22 8,22C2,22 3,18 3,18C3,18 4,11 8,9H16C20,11 21,18 21,18C21,18 22,22 16,22M7.5,12.5A1.5,1.5 0 0,0 9,14A1.5,1.5 0 0,0 10.5,12.5A1.5,1.5 0 0,0 9,11A1.5,1.5 0 0,0 7.5,12.5M16.5,18.5A1.5,1.5 0 0,0 15,17A1.5,1.5 0 0,0 13.5,18.5A1.5,1.5 0 0,0 15,20A1.5,1.5 0 0,0 16.5,18.5M16.5,12.35L15.15,11L7.5,18.65L8.87,20L16.5,12.35Z"; +var mdiSafe = "M4,4A2,2 0 0,0 2,6V17A2,2 0 0,0 4,19V20H6V19H17V20H19V19A2,2 0 0,0 21,17V16H22V14H21V9H22V7H21V6A2,2 0 0,0 19,4H4M4,6H19V17H4V6M13.5,7.5A4,4 0 0,0 9.5,11.5A4,4 0 0,0 13.5,15.5A4,4 0 0,0 17.5,11.5A4,4 0 0,0 13.5,7.5M5,9V14H7V9H5M13.5,9.5A2,2 0 0,1 15.5,11.5A2,2 0 0,1 13.5,13.5A2,2 0 0,1 11.5,11.5A2,2 0 0,1 13.5,9.5Z"; +var mdiSafeSquare = "M20 2C21.1 2 22 2.9 22 4V20C22 21.1 21.1 22 20 22H19V23H15V22H9V23H5V22H4C2.9 22 2 21.1 2 20V4C2 2.9 2.9 2 4 2H20M17 12C17 11 16.7 10 16.2 9.2L17.7 7.7L16.3 6.3L14.8 7.8C14 7.3 13 7 12 7C11 7 10 7.3 9.2 7.8L7.8 6.3L6.3 7.8L7.8 9.3C7.3 10 7 11 7 12C7 13 7.3 14 7.8 14.8L6.3 16.3L7.8 17.7L9.3 16.2C10 16.7 11 17 12 17C13 17 14 16.7 14.8 16.2L16.3 17.7L17.7 16.3L16.2 14.8C16.7 14 17 13 17 12M12 9C13.7 9 15 10.3 15 12C15 13.7 13.7 15 12 15C10.3 15 9 13.7 9 12C9 10.3 10.3 9 12 9M12 14C13.1 14 14 13.1 14 12C14 10.9 13.1 10 12 10C10.9 10 10 10.9 10 12C10 13.1 10.9 14 12 14Z"; +var mdiSafeSquareOutline = "M10 12C10 10.9 10.9 10 12 10C13.1 10 14 10.9 14 12C14 13.1 13.1 14 12 14C10.9 14 10 13.1 10 12M7.8 17.7L6.3 16.3L7.8 14.8C7.3 14 7 13 7 12C7 11 7.3 10 7.8 9.3L6.3 7.8L7.8 6.3L9.2 7.8C10 7.3 11 7 12 7C13 7 14 7.3 14.8 7.8L16.3 6.3L17.7 7.7L16.2 9.2C16.7 10 17 11 17 12C17 13 16.7 14 16.2 14.8L17.7 16.3L16.3 17.7L14.8 16.2C14 16.7 13 17 12 17C11 17 10 16.7 9.3 16.2L7.8 17.7M12 9C10.3 9 9 10.3 9 12C9 13.7 10.3 15 12 15C13.7 15 15 13.7 15 12C15 10.3 13.7 9 12 9M20 2C21.1 2 22 2.9 22 4V20C22 21.1 21.1 22 20 22H19V23H15V22H9V23H5V22H4C2.9 22 2 21.1 2 20V4C2 2.9 2.9 2 4 2H20M20 20V4H4V20H20Z"; +var mdiSafetyGoggles = "M18,9C19.11,9 20,9.89 20,11V14C20,15.11 19.11,16 18,16H15.77L14.53,14.77C13.78,14 12.77,13.6 11.7,13.6C10.63,13.6 9.63,14 8.87,14.77L7.64,16H6C4.89,16 4,15.11 4,14V11C4,9.89 4.89,9 6,9H18M18,7H6A4,4 0 0,0 2,11H2L1,11V14H2V14A4,4 0 0,0 6,18H8.5C8.54,17.94 8.59,17.88 10.29,16.18C10.68,15.79 11.19,15.6 11.7,15.6C12.22,15.6 12.73,15.79 13.12,16.18L14.91,18H18A4,4 0 0,0 22,14H22L23,14V11H22V11A4,4 0 0,0 18,7Z"; +var mdiSailBoat = "M14,3L5,14H14M3,16L6,21H18L21,16"; +var mdiSale = "M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z"; +var mdiSalesforce = "M18.38,6.37C17.68,6.37 17.07,6.58 16.47,6.78C15.77,5.57 14.46,4.77 13.05,4.77C11.95,4.77 10.95,5.27 10.24,5.97C9.44,4.97 8.23,4.26 6.83,4.26C4.5,4.26 2.5,6.17 2.5,8.5C2.5,9.09 2.71,9.69 2.91,10.29C1.8,10.9 1,12.1 1,13.5C1,15.5 2.61,17.22 4.62,17.22C4.92,17.22 5.22,17.22 5.42,17.12C5.82,18.63 7.33,19.74 9.14,19.74C10.84,19.74 12.25,18.73 12.75,17.32C13.26,17.53 13.76,17.73 14.26,17.73C15.57,17.73 16.77,17 17.37,15.92C17.68,16 18,16 18.28,16C20.89,16 23,13.91 23,11.2C23.1,8.5 21,6.37 18.38,6.37Z"; +var mdiSass = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M10,15.33C10.16,15.87 10.14,16.37 10,16.83C10,16.88 9.96,16.93 9.94,17C9.92,17 9.9,17.07 9.87,17.12C9.76,17.36 9.6,17.59 9.41,17.79C8.83,18.43 8,18.67 7.67,18.47C7.29,18.25 7.5,17.35 8.16,16.64C8.88,15.88 9.92,15.38 9.92,15.38V15.38L10,15.33M18.27,6.28C17.82,4.5 14.87,3.92 12.09,4.91C10.43,5.5 8.63,6.42 7.34,7.63C5.81,9.07 5.56,10.32 5.66,10.84C6,12.68 8.54,13.89 9.58,14.78V14.79C9.28,14.94 7.04,16.07 6.5,17.23C5.96,18.45 6.6,19.33 7,19.45C8.34,19.81 9.69,19.16 10.41,18.07C11.11,17.03 11.06,15.68 10.75,15C11.17,14.9 11.66,14.85 12.28,14.92C14.04,15.13 14.38,16.22 14.31,16.68C14.25,17.14 13.88,17.39 13.76,17.47C13.64,17.54 13.6,17.57 13.61,17.63C13.62,17.71 13.68,17.71 13.78,17.69C13.93,17.66 14.71,17.32 14.74,16.47C14.78,15.39 13.75,14.19 11.93,14.22C11.18,14.24 10.71,14.31 10.37,14.44L10.29,14.35C9.16,13.15 7.08,12.3 7.17,10.68C7.2,10.09 7.4,8.55 11.17,6.67C14.25,5.13 16.72,5.55 17.15,6.5C17.76,7.83 15.83,10.32 12.63,10.68C11.41,10.82 10.76,10.34 10.6,10.17C10.43,10 10.41,9.97 10.35,10C10.24,10.07 10.31,10.23 10.35,10.33C10.44,10.58 10.84,11 11.5,11.24C12.09,11.43 13.53,11.54 15.26,10.87C17.2,10.12 18.72,8.03 18.27,6.28Z"; +var mdiSatellite = "M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiSatelliteUplink = "M11.86,2L11.34,3.93C15.75,4.78 19.2,8.23 20.05,12.65L22,12.13C20.95,7.03 16.96,3.04 11.86,2M10.82,5.86L10.3,7.81C13.34,8.27 15.72,10.65 16.18,13.68L18.12,13.16C17.46,9.44 14.55,6.5 10.82,5.86M3.72,9.69C3.25,10.73 3,11.86 3,13C3,14.95 3.71,16.82 5,18.28V22H8V20.41C8.95,20.8 9.97,21 11,21C12.14,21 13.27,20.75 14.3,20.28L3.72,9.69M9.79,9.76L9.26,11.72A3,3 0 0,1 12.26,14.72L14.23,14.2C14,11.86 12.13,10 9.79,9.76Z"; +var mdiSatelliteVariant = "M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z"; +var mdiSausage = "M3.5,3H9.5L7.96,5.32C9.16,5.87 10,7.09 10,8.5A5.5,5.5 0 0,0 15.5,14C16.91,14 18.13,14.84 18.68,16.04L21,14.5V20.5L18.68,18.96C18.13,20.16 16.91,21 15.5,21A12.5,12.5 0 0,1 3,8.5C3,7.09 3.84,5.87 5.04,5.32L3.5,3Z"; +var mdiSawBlade = "M20,15C20,15 18.6,16.3 21.1,17L18.3,19.8H15.5C15.5,19.8 13.6,19.7 15,22H11L9,20C9,20 7.7,18.6 7,21.1L4.2,18.3V15.5C4.2,15.5 4.3,13.6 2,15V11L4,9C4,9 5.4,7.7 2.8,7.1L5.6,4.2H8.5C8.5,4.2 10.4,4.3 9,2H13L15,4C15,4 16.3,5.4 17,2.8L19.8,5.6V8.5C19.8,8.5 19.7,10.4 22,9V13L20,15M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"; +var mdiSawtoothWave = "M11 22V6.83L2 16V13.17L13 2V17.17L22 8V10.83L11 22Z"; +var mdiSaxophone = "M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z"; +var mdiScale = "M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z"; +var mdiScaleBalance = "M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z"; +var mdiScaleBathroom = "M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z"; +var mdiScaleOff = "M22.11 21.46L20.84 22.73L19.11 21H18V19.89L12.11 14H11V12.89L10.31 12.2A7.92 7.92 0 0 0 7.09 13.68L8.46 15.06L7.05 16.47L5.68 15.1A7.94 7.94 0 0 0 4.06 19H6V21H2V20A10 10 0 0 1 8.68 10.57L3.85 5.74L2 5V3.89L1.11 3L2.39 1.73M21.91 18.71A10 10 0 0 0 14 10.2V8.2L22 5V3H6.2M12 18A1.84 1.84 0 0 0 11.12 18.21L7.27 20L11.12 21.79A1.84 1.84 0 0 0 12 22A2 2 0 0 0 12 18Z"; +var mdiScanHelper = "M0 2A2 2 0 0 1 2 0H6V2H2V6H0V2M24 22A2 2 0 0 1 22 24H18V22H22V18H24V22M2 24A2 2 0 0 1 0 22V18H2V22H6V24H2M22 0A2 2 0 0 1 24 2V6H22V2H18V0H22Z"; +var mdiScanner = "M4.2,10.7L19.8,5L20.5,6.9L6.4,12H19A2,2 0 0,1 21,14V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V12.5C3,11.7 3.5,10.9 4.2,10.7M17,17H19V15H17V17M5,17H15V15H5V17Z"; +var mdiScannerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L16.73,20H5A2,2 0 0,1 3,18V12.5C3,11.7 3.5,10.9 4.2,10.7L6.57,9.84L2,5.27M6.4,12H8.73L8.11,11.38L6.4,12M5,15V17H13.73L11.73,15H5M19.8,5L20.5,6.9L11.85,10.03L10.3,8.47L19.8,5M19,12A2,2 0 0,1 21,14V18C21,18.34 20.91,18.66 20.76,18.94L19,17.18V15H16.82L13.82,12H19Z"; +var mdiScatterPlot = "M7,11A3,3 0 0,1 10,14A3,3 0 0,1 7,17A3,3 0 0,1 4,14A3,3 0 0,1 7,11M11,3A3,3 0 0,1 14,6A3,3 0 0,1 11,9A3,3 0 0,1 8,6A3,3 0 0,1 11,3M16.6,14.6C18.25,14.6 19.6,15.94 19.6,17.6A3,3 0 0,1 16.6,20.6C14.94,20.6 13.6,19.25 13.6,17.6A3,3 0 0,1 16.6,14.6Z"; +var mdiScatterPlotOutline = "M7,18A4,4 0 0,1 3,14A4,4 0 0,1 7,10A4,4 0 0,1 11,14A4,4 0 0,1 7,18M7,12A2,2 0 0,0 5,14A2,2 0 0,0 7,16A2,2 0 0,0 9,14A2,2 0 0,0 7,12M11,10A4,4 0 0,1 7,6A4,4 0 0,1 11,2A4,4 0 0,1 15,6A4,4 0 0,1 11,10M11,4A2,2 0 0,0 9,6A2,2 0 0,0 11,8A2,2 0 0,0 13,6A2,2 0 0,0 11,4M16.6,21.6C14.39,21.6 12.6,19.81 12.6,17.6A4,4 0 0,1 16.6,13.6C18.81,13.6 20.6,15.39 20.6,17.6A4,4 0 0,1 16.6,21.6M16.6,15.6A2,2 0 0,0 14.6,17.6C14.6,18.7 15.5,19.6 16.6,19.6A2,2 0 0,0 18.6,17.6C18.6,16.5 17.7,15.6 16.6,15.6Z"; +var mdiSchool = "M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z"; +var mdiSchoolOutline = "M12 3L1 9L5 11.18V17.18L12 21L19 17.18V11.18L21 10.09V17H23V9L12 3M18.82 9L12 12.72L5.18 9L12 5.28L18.82 9M17 16L12 18.72L7 16V12.27L12 15L17 12.27V16Z"; +var mdiScissorsCutting = "M11,21H7V19H11V21M15.5,19H17V21H13V19H13.2L11.8,12.9L9.3,13.5C9.2,14 9,14.4 8.8,14.8C7.9,16.3 6,16.7 4.5,15.8C3,14.9 2.6,13 3.5,11.5C4.4,10 6.3,9.6 7.8,10.5C8.2,10.7 8.5,11.1 8.7,11.4L11.2,10.8L10.6,8.3C10.2,8.2 9.8,8 9.4,7.8C8,6.9 7.5,5 8.4,3.5C9.3,2 11.2,1.6 12.7,2.5C14.2,3.4 14.6,5.3 13.7,6.8C13.5,7.2 13.1,7.5 12.8,7.7L15.5,19M7,11.8C6.3,11.3 5.3,11.6 4.8,12.3C4.3,13 4.6,14 5.3,14.4C6,14.9 7,14.7 7.5,13.9C7.9,13.2 7.7,12.2 7,11.8M12.4,6C12.9,5.3 12.6,4.3 11.9,3.8C11.2,3.3 10.2,3.6 9.7,4.3C9.3,5 9.5,6 10.3,6.5C11,6.9 12,6.7 12.4,6M12.8,11.3C12.6,11.2 12.4,11.2 12.3,11.4C12.2,11.6 12.2,11.8 12.4,11.9C12.6,12 12.8,12 12.9,11.8C13.1,11.6 13,11.4 12.8,11.3M21,8.5L14.5,10L15,12.2L22.5,10.4L23,9.7L21,8.5M23,19H19V21H23V19M5,19H1V21H5V19Z"; +var mdiScooter = "M7.82 19H15V18C15 15.79 16.79 14 19 14H19.74L17.84 5.56C17.63 4.65 16.82 4 15.89 4H12V6H15.89L17.29 12.25H17.28C15.12 12.9 13.47 14.73 13.09 17H7.82C7.34 15.66 5.96 14.76 4.4 15.06C3.22 15.29 2.27 16.26 2.05 17.44C1.7 19.34 3.16 21 5 21C6.3 21 7.4 20.16 7.82 19M5 19C4.45 19 4 18.55 4 18S4.45 17 5 17 6 17.45 6 18 5.55 19 5 19M19 15C17.34 15 16 16.34 16 18S17.34 21 19 21 22 19.66 22 18 20.66 15 19 15M19 19C18.45 19 18 18.55 18 18S18.45 17 19 17 20 17.45 20 18 19.55 19 19 19Z"; +var mdiScooterElectric = "M7.82 16H15V15C15 12.79 16.79 11 19 11H19.74L17.84 2.56C17.63 1.65 16.82 1 15.89 1H12V3H15.89L17.29 9.25H17.28C15.12 9.9 13.47 11.73 13.09 14H7.82C7.34 12.66 5.96 11.76 4.4 12.06C3.22 12.29 2.27 13.26 2.05 14.44C1.7 16.34 3.16 18 5 18C6.3 18 7.4 17.16 7.82 16M5 16C4.45 16 4 15.55 4 15S4.45 14 5 14 6 14.45 6 15 5.55 16 5 16M19 12C17.34 12 16 13.34 16 15S17.34 18 19 18 22 16.66 22 15 20.66 12 19 12M19 16C18.45 16 18 15.55 18 15S18.45 14 19 14 20 14.45 20 15 19.55 16 19 16M11 20H7L13 23V21H17L11 18V20Z"; +var mdiScoreboard = "M6 9H8V15H6V9M16 9H18V15H16V9M21 3C22.1 3 23 3.9 23 5V19C23 20.1 22.1 21 21 21H3C1.9 21 1 20.1 1 19V5C1 3.9 1.9 3 3 3H21M5 7C4.4 7 4 7.4 4 8V16C4 16.6 4.4 17 5 17H9C9.6 17 10 16.6 10 16V8C10 7.4 9.6 7 9 7H5M15 7C14.4 7 14 7.4 14 8V16C14 16.6 14.4 17 15 17H19C19.6 17 20 16.6 20 16V8C20 7.4 19.6 7 19 7H15M12 11C12.6 11 13 10.6 13 10C13 9.4 12.6 9 12 9C11.4 9 11 9.4 11 10C11 10.6 11.4 11 12 11M12 15C12.6 15 13 14.6 13 14C13 13.4 12.6 13 12 13C11.4 13 11 13.4 11 14C11 14.6 11.4 15 12 15Z"; +var mdiScoreboardOutline = "M21 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H21C22.1 21 23 20.1 23 19V5C23 3.9 22.1 3 21 3M21 19H3V5H21M5 7H9C9.6 7 10 7.4 10 8V16C10 16.6 9.6 17 9 17H5C4.4 17 4 16.6 4 16V8C4 7.4 4.4 7 5 7M6 9V15H8V9M15 7H19C19.6 7 20 7.4 20 8V16C20 16.6 19.6 17 19 17H15C14.4 17 14 16.6 14 16V8C14 7.4 14.4 7 15 7M16 9V15H18V9M12 11C12.6 11 13 10.6 13 10C13 9.4 12.6 9 12 9C11.4 9 11 9.4 11 10C11 10.6 11.4 11 12 11M12 15C12.6 15 13 14.6 13 14C13 13.4 12.6 13 12 13C11.4 13 11 13.4 11 14C11 14.6 11.4 15 12 15Z"; +var mdiScreenRotation = "M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z"; +var mdiScreenRotationLock = "M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z"; +var mdiScrewFlatTop = "M13.5,17V19L12,22L10.5,19L13.5,17M14.5,6.3L13.5,7V6H10.5V9L9.5,9.7V10.7L14.5,7.4V6.3M14.5,10.3L13.5,11V9L10.5,11V13L9.5,13.7V14.7L14.5,11.4V10.3M14.5,14.3L13.5,15V13L10.5,15V17L9.5,17.7V18.7L14.5,15.4V14.3M8,2C8,2 7,2 7,3L10,5H14L17,3C17,3 17,2 16,2C15,2 8,2 8,2Z"; +var mdiScrewLag = "M10,19.3L14,16.6V20L12,22L10,20V19.3M14,12.7L10,15.4V17.4L9,18V19L15,15.1V14L14,14.7V12.7M7,2V5H17V2H7M9,6V9L10,9.7V13.4L9,14V15L15,11.1V10L14,10.7C14,10.7 14,10.3 14,9.7L15,9V6H9Z"; +var mdiScrewMachineFlatTop = "M14.5,7.3L13.5,8V7H10.5V10L9.5,10.7V11.7L14.5,8.4V7.3M14.5,11.3L13.5,12V10L10.5,12V14L9.5,14.7V15.7L14.5,12.4V11.3M14.5,15.3L13.5,16V14L10.5,16V18L9.5,18.7V19.7L14.5,16.4V15.3M8,3C8,3 7,3 7,4L10,6H14L17,4C17,4 17,3 16,3C15,3 8,3 8,3M13.5,18V21H10.5V20L13.5,18Z"; +var mdiScrewMachineRoundTop = "M14.5,7.3L13.5,8V7H10.5V10L9.5,10.7V11.7L14.5,8.4V7.3M14.5,11.3L13.5,12V10L10.5,12V14L9.5,14.7V15.7L14.5,12.4V11.3M14.5,15.3L13.5,16V14L10.5,16V18L9.5,18.7V19.7L14.5,16.4V15.3M7,6H17C17,6 16,3 12,3C8,3 7,6 7,6M13.5,18V21H10.5V20L13.5,18Z"; +var mdiScrewRoundTop = "M13.5,17V19L12,22L10.5,19L13.5,17M14.5,6.3L13.5,7V6H10.5V9L9.5,9.7V10.7L14.5,7.4V6.3M14.5,10.3L13.5,11V9L10.5,11V13L9.5,13.7V14.7L14.5,11.4V10.3M14.5,14.3L13.5,15V13L10.5,15V17L9.5,17.7V18.7L14.5,15.4V14.3M7,5H17C17,5 16,2 12,2C8,2 7,5 7,5Z"; +var mdiScrewdriver = "M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z"; +var mdiScript = "M17.8,20C17.4,21.2 16.3,22 15,22H5C3.3,22 2,20.7 2,19V18H5L14.2,18C14.6,19.2 15.7,20 17,20H17.8M19,2H8C6.3,2 5,3.3 5,5V16H16V17C16,17.6 16.4,18 17,18H18V5C18,4.4 18.4,4 19,4C19.6,4 20,4.4 20,5V6H22V5C22,3.3 20.7,2 19,2Z"; +var mdiScriptOutline = "M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20Z"; +var mdiScriptText = "M17.8,20C17.4,21.2 16.3,22 15,22H5C3.3,22 2,20.7 2,19V18H5L14.2,18C14.6,19.2 15.7,20 17,20H17.8M19,2C20.7,2 22,3.3 22,5V6H20V5C20,4.4 19.6,4 19,4C18.4,4 18,4.4 18,5V18H17C16.4,18 16,17.6 16,17V16H5V5C5,3.3 6.3,2 8,2H19M8,6V8H15V6H8M8,10V12H14V10H8Z"; +var mdiScriptTextKey = "M19 2H8C6.3 2 5 3.3 5 5V16H13C13.8 15.4 14.9 15 16 15C16.7 15 17.4 15.2 18 15.4V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2M14 12H8V10H14V12M15 8H8V6H15V8M11.4 22H5C3.3 22 2 20.7 2 19V18H11.4C11.1 18.6 11 19.3 11 20S11.1 21.4 11.4 22M18.8 19C18.4 17.8 17.3 17 16 17C14.3 17 13 18.3 13 20S14.3 23 16 23C17.3 23 18.4 22.2 18.8 21H20V23H22V21H23V19H18.8M16 21.3C15.3 21.3 14.7 20.7 14.7 20S15.3 18.7 16 18.7C16.7 18.7 17.3 19.3 17.3 20S16.7 21.3 16 21.3Z"; +var mdiScriptTextKeyOutline = "M11.4 22H5C3.3 22 2 20.7 2 19V18H11.4C11.1 18.6 11 19.3 11 20S11.2 21.4 11.4 22M19 2H8C6.3 2 5 3.3 5 5V16H7V5C7 4.4 7.4 4 8 4H16V15C16.7 15 17.4 15.2 18 15.4V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2M9 8H14V6H9V8M9 16H13C13.3 15.8 13.6 15.6 14 15.4V14H9V16M9 12H14V10H9V12M23 19V21H22V23H20V21H18.8C18.4 22.2 17.3 23 16 23C14.3 23 13 21.7 13 20S14.3 17 16 17C17.3 17 18.4 17.8 18.8 19H23M17.3 20C17.3 19.3 16.7 18.7 16 18.7S14.7 19.3 14.7 20 15.3 21.3 16 21.3 17.3 20.7 17.3 20Z"; +var mdiScriptTextOutline = "M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20M9,6H14V8H9V6M9,10H14V12H9V10M9,14H14V16H9V14Z"; +var mdiScriptTextPlay = "M13.8 22H5C3.3 22 2 20.7 2 19V18H13.1C13 18.3 13 18.7 13 19C13 20.1 13.3 21.1 13.8 22M13.8 16H5V5C5 3.3 6.3 2 8 2H19C20.7 2 22 3.3 22 5V6H20V5C20 4.4 19.6 4 19 4S18 4.4 18 5V13.1C16.2 13.4 14.7 14.5 13.8 16M8 8H15V6H8V8M8 12H14V10H8V12M17 16V22L22 19L17 16Z"; +var mdiScriptTextPlayOutline = "M9 14H14V15.7C13.9 15.8 13.9 15.9 13.8 16H9V14M9 12H14V10H9V12M9 8H14V6H9V8M7 5C7 4.4 7.4 4 8 4H16V13.8C16.6 13.4 17.3 13.2 18 13.1V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2H8C6.3 2 5 3.3 5 5V16H7V5M13 19V18.4 18H2V19C2 20.7 3.3 22 5 22H13.8C13.3 21.1 13 20.1 13 19M17 16V22L22 19L17 16Z"; +var mdiSd = "M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z"; +var mdiSeal = "M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z"; +var mdiSealVariant = "M17.71 6.15C17.46 5.38 16.79 5.21 16.45 4.77C16.14 4.31 16.18 3.62 15.53 3.15S14.23 2.92 13.7 2.77 12.81 2 12 2 10.82 2.58 10.3 2.77 9.13 2.67 8.47 3.15 7.86 4.31 7.55 4.77C7.21 5.21 6.55 5.38 6.29 6.15S6.5 7.45 6.5 8 6 9.08 6.29 9.85 7.21 10.79 7.55 11.23C7.86 11.69 7.82 12.38 8.47 12.85S9.77 13.08 10.3 13.23 11.19 14 12 14 13.18 13.42 13.7 13.23 14.87 13.33 15.53 12.85 16.14 11.69 16.45 11.23C16.79 10.79 17.45 10.62 17.71 9.85S17.5 8.55 17.5 8 18 6.92 17.71 6.15M12 12A4 4 0 1 1 16 8A4 4 0 0 1 12 12M14 8A2 2 0 1 1 12 6A2 2 0 0 1 14 8M13.71 15.56L13.08 19.16L12.35 23.29L9.74 20.8L6.44 22.25L7.77 14.75A4 4 0 0 0 9.66 15.17A4.15 4.15 0 0 0 11 15.85A3.32 3.32 0 0 0 12 16A3.5 3.5 0 0 0 13.71 15.56M17.92 18.78L15.34 17.86L15.85 14.92A3.2 3.2 0 0 0 16.7 14.47L16.82 14.37Z"; +var mdiSearchWeb = "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,4.5L8.95,4.53C8.71,5.05 8.34,5.93 8.07,7H10.93C10.66,5.93 10.29,5.05 10.05,4.53C9.87,4.5 9.69,4.5 9.5,4.5M13.83,7C13.24,5.97 12.29,5.17 11.15,4.78C11.39,5.31 11.7,6.08 11.93,7H13.83M5.17,7H7.07C7.3,6.08 7.61,5.31 7.85,4.78C6.71,5.17 5.76,5.97 5.17,7M4.5,9.5C4.5,10 4.58,10.53 4.73,11H6.87L6.75,9.5L6.87,8H4.73C4.58,8.47 4.5,9 4.5,9.5M14.27,11C14.42,10.53 14.5,10 14.5,9.5C14.5,9 14.42,8.47 14.27,8H12.13C12.21,8.5 12.25,9 12.25,9.5C12.25,10 12.21,10.5 12.13,11H14.27M7.87,8L7.75,9.5L7.87,11H11.13C11.21,10.5 11.25,10 11.25,9.5C11.25,9 11.21,8.5 11.13,8H7.87M9.5,14.5C9.68,14.5 9.86,14.5 10.03,14.47C10.28,13.95 10.66,13.07 10.93,12H8.07C8.34,13.07 8.72,13.95 8.97,14.47L9.5,14.5M13.83,12H11.93C11.7,12.92 11.39,13.69 11.15,14.22C12.29,13.83 13.24,13.03 13.83,12M5.17,12C5.76,13.03 6.71,13.83 7.85,14.22C7.61,13.69 7.3,12.92 7.07,12H5.17Z"; +var mdiSeat = "M4,18V21H7V18H17V21H20V15H4V18M19,10H22V13H19V10M2,10H5V13H2V10M17,13H7V5A2,2 0 0,1 9,3H15A2,2 0 0,1 17,5V13Z"; +var mdiSeatFlat = "M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z"; +var mdiSeatFlatAngled = "M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z"; +var mdiSeatIndividualSuite = "M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z"; +var mdiSeatLegroomExtra = "M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z"; +var mdiSeatLegroomNormal = "M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z"; +var mdiSeatLegroomReduced = "M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z"; +var mdiSeatOutline = "M15,5V12H9V5H15M15,3H9A2,2 0 0,0 7,5V14H17V5A2,2 0 0,0 15,3M22,10H19V13H22V10M5,10H2V13H5V10M20,15H4V21H6V17H18V21H20V15Z"; +var mdiSeatPassenger = "M9 19H15V21H9C6.24 21 4 18.76 4 16V7H6V16C6 17.66 7.34 19 9 19M10.42 5.41C11.2 4.63 11.2 3.36 10.42 2.58C9.64 1.8 8.37 1.8 7.59 2.58C6.81 3.36 6.81 4.63 7.59 5.41C8.37 6.2 9.63 6.2 10.42 5.41M11.5 9C11.5 7.9 10.6 7 9.5 7H9C7.9 7 7 7.9 7 9V15C7 16.66 8.34 18 10 18H15.07L18.57 21.5L20 20.07L14.93 15H11.5L11.5 9Z"; +var mdiSeatReclineExtra = "M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5"; +var mdiSeatReclineNormal = "M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5"; +var mdiSeatbelt = "M12,2C13.11,2 14,2.9 14,4C14,5.11 13.11,6 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M12.39,14.79C14.03,14.79 15.46,14.89 16.64,15.04C16.7,12.32 16.46,9.92 16,9C15.87,8.73 15.69,8.5 15.5,8.3L7.43,15.22C8.79,15 10.5,14.79 12.39,14.79M7.46,17C7.59,18.74 7.85,20.5 8.27,22H10.34C10.05,21.12 9.84,20.09 9.68,19C9.68,19 12,18.56 14.32,19C14.16,20.09 13.95,21.12 13.66,22H15.73C16.17,20.45 16.43,18.61 16.56,16.79C15.41,16.65 14,16.54 12.39,16.54C10.46,16.54 8.78,16.75 7.46,17M12,7C12,7 9,7 8,9C7.66,9.68 7.44,11.15 7.37,12.96L13.92,7.34C12.93,7 12,7 12,7M18.57,5.67L17.43,4.34L13.92,7.35C14.47,7.54 15.05,7.84 15.5,8.3L18.57,5.67M20.67,15.83C20.58,15.8 19.14,15.33 16.64,15.04C16.63,15.61 16.6,16.2 16.56,16.79C18.81,17.07 20.1,17.5 20.12,17.5L20.67,15.83M7.37,12.96L3.43,16.34L4.32,17.82C4.34,17.81 5.5,17.36 7.46,17C7.35,15.59 7.32,14.2 7.37,12.96Z"; +var mdiSecurity = "M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z"; +var mdiSecurityNetwork = "M13,19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17.34C8.07,16.13 6,13 6,9.67V5.67L12,3L18,5.67V9.67C18,13 15.93,16.13 13,17.34V19M12,5L8,6.69V10H12V5M12,10V16C13.91,15.53 16,13.06 16,11V10H12Z"; +var mdiSeed = "M20.7,3.3C20.7,3.3 19.3,3 17.2,3C11.7,3 1.6,5.1 3.2,20.8C4.3,20.9 5.4,21 6.4,21C24.3,21 20.7,3.3 20.7,3.3M7,17C7,17 7,7 17,7C17,7 11,9 7,17Z"; +var mdiSeedOff = "M22.1 21.5L2.4 1.7L1.1 3L5.9 7.8C3.8 10.5 2.6 14.6 3.2 20.8C4.3 20.9 5.4 21 6.4 21C10.9 21 14.1 19.9 16.3 18.2L20.9 22.8L22.1 21.5M7 17C7 17 7 13.7 8.9 10.8L10.2 12.1C9.1 13.4 8 15 7 17M11.6 8.4L8.5 5.3C11.3 3.4 14.7 3 17.2 3C19.3 3 20.7 3.3 20.7 3.3S22.1 10.3 18.7 15.5L12.8 9.6C15.1 7.6 17 7 17 7C14.7 7 12.9 7.5 11.6 8.4Z"; +var mdiSeedOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L5.9 7.8C3.8 10.5 2.6 14.6 3.2 20.8C4.3 20.9 5.4 21 6.4 21C10.9 21 14.1 19.9 16.3 18.2L20.9 22.8L22.1 21.5M6.4 19H5.1C4.9 14.8 5.6 11.5 7.3 9.2L8.9 10.8C7 13.7 7 17 7 17C8 15 9.1 13.4 10.2 12.1L14.8 16.7C12.8 18.2 10 19 6.4 19M10 6.8L8.5 5.3C11.3 3.4 14.7 3 17.2 3C19.3 3 20.7 3.3 20.7 3.3S22.1 10.3 18.7 15.5L17.2 14C19.1 10.9 19 7.1 18.9 5.1C18.4 5 17.8 5 17.2 5C15.1 5 12.3 5.3 10 6.8M12.8 9.6L11.6 8.4C12.9 7.5 14.7 7 17 7C17 7 15.1 7.6 12.8 9.6Z"; +var mdiSeedOutline = "M17.2,5V5C17.8,5 18.4,5 18.9,5.1C19.1,7.4 19.1,12 16.4,15.2C14.4,17.7 11,19 6.4,19C6,19 5.5,19 5.1,19C4.9,14.4 5.8,10.8 7.9,8.5C10.4,5.6 14.4,5 17.2,5M17.2,3C11.7,3 1.6,5.1 3.2,20.8C4.3,20.9 5.4,21 6.4,21C24.3,21 20.7,3.3 20.7,3.3C20.7,3.3 19.3,3 17.2,3M17,7C7,7 7,17 7,17C11,9 17,7 17,7Z"; +var mdiSeesaw = "M21.68 13.26L22.04 15.23L2.35 18.77L2 16.8L4.95 16.27L4.6 14.3C4.5 13.76 4.86 13.24 5.41 13.14C5.95 13.04 6.47 13.4 6.57 13.95L6.92 15.91L16.76 14.15L16.41 12.18C16.31 11.63 16.67 11.11 17.22 11C17.76 10.92 18.28 11.28 18.38 11.82L18.73 13.79L21.68 13.26M10.06 18.4L8 22H16L13.58 17.77L10.06 18.4Z"; +var mdiSegment = "M21,8H3V6H21M9,13H21V11H9M9,18H21V16H9"; +var mdiSelect = "M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z"; +var mdiSelectAll = "M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z"; +var mdiSelectColor = "M3.88,3C3.38,3.06 3,3.5 3,4V4L3,5H4L5,5V4L5,3H4L3.88,3M7,3V5H9V3H7M11,3V5H13V3H11M15,3V5H17V3H15M19,3V4L19,5H20L21,5V4L21,3.88C20.94,3.38 20.5,3 20,3H19M3,7V9H5V7H3M19,7V9H21V7H19M3,11V13H5V11H3M19.31,12C19.18,12 19.05,12.05 18.95,12.14L17.39,13.71L16.43,12.75L15.72,13.46L16.43,14.17L11.97,18.63V21H14.35L18.8,16.54L19.5,17.25L20.22,16.54L19.26,15.58L20.82,14.03C21,13.83 21,13.5 20.82,13.31L19.65,12.14C19.56,12.05 19.44,12 19.31,12M3,15V17H5V15H3M17,15L17.97,15.97L13.93,20L12.97,19.04L17,15M3,19V20L3,20.12C3.06,20.62 3.5,21 4,21V21H5V20L5,19H4L3,19M7,19V21H9V19H7Z"; +var mdiSelectCompare = "M13,23H11V1H13V23M9,19H5V5H9V3H5C3.89,3 3,3.89 3,5V19C3,20.11 3.9,21 5,21H9V19M19,7V9H21V7H19M19,5H21C21,3.89 20.1,3 19,3V5M21,15H19V17H21V15M19,11V13H21V11H19M17,3H15V5H17V3M19,21C20.11,21 21,20.11 21,19H19V21M17,19H15V21H17V19Z"; +var mdiSelectDrag = "M13,17H17V13H19V17H23V19H19V23H17V19H13V17M11,17V19H9V17H11M7,17V19H5V17H7M19,9V11H17V9H19M19,5V7H17V5H19M15,5V7H13V5H15M11,5V7H9V5H11M7,5V7H5V5H7M7,13V15H5V13H7M7,9V11H5V9H7Z"; +var mdiSelectGroup = "M5 3A2 2 0 0 0 3 5H5M7 3V5H9V3M11 3V5H13V3M15 3V5H17V3M19 3V5H21A2 2 0 0 0 19 3M3 7V9H5V7M7 7V11H11V7M13 7V11H17V7M19 7V9H21V7M3 11V13H5V11M19 11V13H21V11M7 13V17H11V13M13 13V17H17V13M3 15V17H5V15M19 15V17H21V15M3 19A2 2 0 0 0 5 21V19M7 19V21H9V19M11 19V21H13V19M15 19V21H17V19M19 19V21A2 2 0 0 0 21 19Z"; +var mdiSelectInverse = "M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z"; +var mdiSelectMarker = "M4 3H5V5H3V4C3 3.45 3.45 3 4 3M20 3C20.55 3 21 3.45 21 4V5H19V3H20M15 5V3H17V5H15M11 5V3H13V5H11M7 5V3H9V5H7M11 21V19H13V21H11M7 21V19H9V21H7M4 21C3.45 21 3 20.55 3 20V19H5V21H4M3 15H5V17H3V15M3 11H5V13H3V11M3 7H5V9H3V7M21 7V9H19V7H21M19.5 13C21.4 13 23 14.6 23 16.5C23 19.1 19.5 23 19.5 23C19.5 23 16 19.1 16 16.5C16 14.6 17.6 13 19.5 13M19.5 17.8C20.2 17.8 20.8 17.2 20.7 16.6C20.7 16 20.1 15.4 19.5 15.4C18.9 15.4 18.3 15.9 18.3 16.6C18.3 17.2 18.8 17.8 19.5 17.8Z"; +var mdiSelectMultiple = "M18 12H20V14H18V12M14 16H16V18H14V16M20 17C20 17.55 19.55 18 19 18H18V16H20V17M7 4H8V6H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V6H18V4H19M14 6V4H16V6H14M10 6V4H12V6H10M10 18V16H12V18H10M7 18C6.45 18 6 17.55 6 17V16H8V18H7M6 12H8V14H6V12M6 8H8V10H6V8M20 8V10H18V8H20M3 8H4V20H16V21C16 21.54 15.57 22 15.03 22H15L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8Z"; +var mdiSelectMultipleMarker = "M7 4H8V6H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V6H18V4H19M14 6V4H16V6H14M10 6V4H12V6H10M10 18V16H12V18H10M7 18C6.45 18 6 17.55 6 17V16H8V18H7M6 12H8V14H6V12M6 8H8V10H6V8M20 8V10H18V8H20M3 8H4V20H14.58L16.03 22L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8Z"; +var mdiSelectOff = "M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z"; +var mdiSelectPlace = "M4 3H5V5H3V4C3 3.5 3.5 3 4 3M20 3C20.5 3 21 3.5 21 4V5H19V3H20M15 5V3H17V5H15M11 5V3H13V5H11M7 5V3H9V5H7M21 12C21 12.5 20.5 13 20 13H19V11H21V12M15 13V11H17V13H15M11 13V11H13V13H11M7 13V11H9V13H7M4 13C3.5 13 3 12.5 3 12V11H5V13H4M3 7H5V9H3V7M21 7V9H19V7H21M7 16L12 21L17 16H7Z"; +var mdiSelectSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M21 9H19V7H21V9M21 5H19V3H20C20.55 3 21 3.45 21 4V5M19 11.03V11H21V13H20.97C20.46 12.21 19.79 11.54 19 11.03M17 5H15V3H17V5M13 5H11V3H13V5M3 7H5V9H3V7M7 19H9V21H7V19M3 11H5V13H3V11M4 3H5V5H3V4C3 3.45 3.45 3 4 3M9 5H7V3H9V5M3 19H5V21H4C3.45 21 3 20.55 3 20V19M3 15H5V17H3V15Z"; +var mdiSelection = "M2,4C2,2.89 2.9,2 4,2H7V4H4V7H2V4M22,4V7H20V4H17V2H20A2,2 0 0,1 22,4M20,20V17H22V20C22,21.11 21.1,22 20,22H17V20H20M2,20V17H4V20H7V22H4A2,2 0 0,1 2,20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z"; +var mdiSelectionDrag = "M14,17H17V14H19V17H22V19H19V22H17V19H14V17M12,17V19H9V17H12M7,17V19H3V15H5V17H7M3,13V10H5V13H3M3,8V4H7V6H5V8H3M9,4H12V6H9V4M15,4H19V8H17V6H15V4M19,10V12H17V10H19Z"; +var mdiSelectionEllipse = "M6.35,20.25L7.56,18.66C8.42,19.23 9.39,19.64 10.43,19.85L10.16,21.83C8.77,21.57 7.5,21 6.35,20.25M16.43,18.66L17.64,20.26C16.5,21.03 15.23,21.57 13.84,21.83L13.57,19.85C14.61,19.64 15.57,19.23 16.43,18.66M19.84,13.59L21.83,13.86C21.57,15.25 21,16.54 20.24,17.66L18.65,16.45C19.22,15.6 19.63,14.63 19.84,13.59M2.17,13.84L4.15,13.57C4.36,14.61 4.77,15.58 5.34,16.44L3.75,17.65C3,16.5 2.43,15.23 2.17,13.84M18.66,7.56L20.25,6.35C21.03,7.5 21.58,8.78 21.83,10.18L19.85,10.45C19.64,9.4 19.23,8.42 18.66,7.56M13.57,4.15L13.84,2.17C15.23,2.43 16.5,3 17.65,3.75L16.44,5.34C15.58,4.77 14.61,4.36 13.57,4.15M7.56,5.34L6.35,3.75C7.5,3 8.77,2.43 10.16,2.17L10.43,4.15C9.39,4.36 8.42,4.77 7.56,5.34M4.15,10.43L2.17,10.16C2.43,8.77 3,7.5 3.75,6.35L5.34,7.56C4.77,8.42 4.36,9.39 4.15,10.43Z"; +var mdiSelectionEllipseArrowInside = "M11.2 4C9.94 4.12 8.72 4.53 7.64 5.2L6.64 3.47C7.95 2.64 9.45 2.13 11 2M17.53 6.25C16.62 5.39 15.53 4.73 14.34 4.33L15 2.39C16.5 2.84 17.89 3.66 19 4.78M5.34 7.41C4.64 8.44 4.19 9.6 4 10.83L2 10.55C2.2 9 2.79 7.5 3.7 6.23M22 12V12.66L20 12.5V12C20 10.92 19.81 9.86 19.39 8.86L21.22 8.06C21.75 9.31 22 10.65 22 12M6 17.3L4.5 18.61C3.47 17.43 2.72 16.04 2.3 14.53L4.17 14C4.53 15.22 5.16 16.35 6 17.3M12.14 22H12C10.5 22 9 21.68 7.64 21.07L8.53 19.24C9.62 19.75 10.8 20 12 20H12.19M17 21H15V15H21V17H18.42L21.14 19.76L19.73 21.17L17 18.5"; +var mdiSelectionMarker = "M2 4C2 2.89 2.9 2 4 2H7V4H4V7H2V4M22 4V7H20V4H17V2H20C21.1 2 22 2.89 22 4M2 20V17H4V20H7V22H4C2.9 22 2 21.11 2 20M10 2H14V4H10V2M10 20H14V22H10V20M2 10H4V14H2V10M18.5 13C20.4 13 22 14.6 22 16.5C22 19.1 18.5 23 18.5 23C18.5 23 15 19.1 15 16.5C15 14.6 16.6 13 18.5 13M18.5 17.8C19.2 17.8 19.8 17.2 19.7 16.6C19.7 16 19.1 15.4 18.5 15.4C17.9 15.4 17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8M20 10H22V12.34C21.42 11.84 20.74 11.45 20 11.23V10Z"; +var mdiSelectionMultiple = "M11 6V4H15V6H11M6 9H8V13H6V9M6 6C6 4.89 6.9 4 8 4H9V6H8V7H6V6M8 18C6.89 18 6 17.1 6 16V15H8V16H9V18H8M18 4C19.11 4 20 4.9 20 6V7H18V6H17V4H18M15 16V18H11V16H15M20 13H18V9H20V13M20 16C20 17.11 19.1 18 18 18H17V16H18V15H20V16M3 8H4V20H16V21C16 21.54 15.57 22 15.03 22H15L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8Z"; +var mdiSelectionMultipleMarker = "M7 4H9V6H8V7H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V7H18V6H17V4H19M11 6V4H15V6H11M7 18C6.45 18 6 17.55 6 17V15H8V16H9V18H7M6 9H8V13H6V9M3 8H4V20H14.58L16.03 22L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8M11 18V16H13C13.09 16.66 13.27 17.33 13.5 18H11M20 9V10.23C19.5 10.08 19 10 18.5 10L18 10.03V9H20Z"; +var mdiSelectionOff = "M0.5,3.77L1.78,2.5L21.5,22.22L20.23,23.5L18.73,22H17V20.27L3.73,7H2V5.27L0.5,3.77M4,2H7V4H5.82L3.83,2H4M22,4V7H20V4H17V2H20A2,2 0 0,1 22,4M20,17H22V20L22,20.17L20,18.18V17M2,20V17H4V20H7V22H4A2,2 0 0,1 2,20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z"; +var mdiSelectionSearch = "M19.27 18.9C19.7 18.21 19.95 17.38 19.95 16.5C19.95 14 17.95 12 15.46 12S10.96 14 10.96 16.5 12.96 21 15.46 21C16.33 21 17.15 20.75 17.84 20.32L20.96 23.39L22.35 22L19.27 18.9M15.46 19C14.07 19 12.96 17.88 12.96 16.5S14.07 14 15.46 14 17.95 15.12 17.95 16.5 16.84 19 15.46 19M22 14H21.45C21.12 13.19 20.62 12.47 20 11.86V10H22V14M20 4H17V2H20C21.11 2 22 2.9 22 4V7H20V4M14 4H10V2H14V4M4 2H7V4H4V7H2V4C2 2.89 2.9 2 4 2M12 22H10V20C10.5 20.82 11.2 21.5 12 22M4 20H7V22H4C2.9 22 2 21.11 2 20V17H4V20M4 14H2V10H4V14Z"; +var mdiSemanticWeb = "M12.9 4.22C18.73 6.84 20 2 20 2S18.89 8.07 13.79 10.55C12.75 11.06 12.1 11.33 12.1 11.33L3.73 7.25L12.1 3.82C12.1 3.82 11.9 3.76 12.9 4.22M11.12 22L3.33 17.78V9.07L11.12 13.04V22M12.88 22L20.68 17.78V9.07L12.88 13.04V22Z"; +var mdiSend = "M2,21L23,12L2,3V10L17,12L2,14V21Z"; +var mdiSendCheck = "M2 3V10L17 12L2 14V21L23 12M22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17Z"; +var mdiSendCheckOutline = "M2 3V10L17 12L2 14V21L23 12M4 6.03L11.53 9.25L4 8.25M11.53 14.75L4 17.97V15.75M22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17Z"; +var mdiSendCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M8,7.71V11.05L15.14,12L8,12.95V16.29L18,12L8,7.71Z"; +var mdiSendCircleOutline = "M8,7.71L18,12L8,16.29V12.95L15.14,12L8,11.05V7.71M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiSendClock = "M2 3V10L11 12L2 14V21L9.27 17.89A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 16 9L2 3M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15Z"; +var mdiSendClockOutline = "M2 3V10L11 12L2 14V21L9.27 17.89A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 16 9L2 3M4 6.03L12.78 9.8A7 7 0 0 0 12.1 10.2L4 8.4V6.03M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15M9.18 14.45A7 7 0 0 0 9 15.82L4 17.97V15.6L9.18 14.45Z"; +var mdiSendLock = "M23,18V17.5A2.5,2.5 0 0,0 20.5,15A2.5,2.5 0 0,0 18,17.5V18A1,1 0 0,0 17,19V23A1,1 0 0,0 18,24H23A1,1 0 0,0 24,23V19A1,1 0 0,0 23,18M22,18H19V17.5A1.5,1.5 0 0,1 20.5,16A1.5,1.5 0 0,1 22,17.5V18M23,12L2,21V14L17,12L2,10V3L23,12Z"; +var mdiSendLockOutline = "M23 18V17.5C23 16.12 21.88 15 20.5 15S18 16.12 18 17.5V18C17.45 18 17 18.45 17 19V23C17 23.55 17.45 24 18 24H23C23.55 24 24 23.55 24 23V19C24 18.45 23.55 18 23 18M22 18H19V17.5C19 16.67 19.67 16 20.5 16S22 16.67 22 17.5V18M4 6.03L11.5 9.25L4 8.25L4 6.03M11.5 14.75L4 17.97V15.75L11.5 14.75M2 3L2 10L17 12L2 14L2 21L23 12L2 3Z"; +var mdiSendOutline = "M4 6.03L11.5 9.25L4 8.25L4 6.03M11.5 14.75L4 17.97V15.75L11.5 14.75M2 3L2 10L17 12L2 14L2 21L23 12L2 3Z"; +var mdiSerialPort = "M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z"; +var mdiServer = "M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z"; +var mdiServerMinus = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z"; +var mdiServerNetwork = "M13,19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H4A1,1 0 0,1 3,16V12A1,1 0 0,1 4,11H20A1,1 0 0,1 21,12V16A1,1 0 0,1 20,17H13V19M4,3H20A1,1 0 0,1 21,4V8A1,1 0 0,1 20,9H4A1,1 0 0,1 3,8V4A1,1 0 0,1 4,3M9,7H10V5H9V7M9,15H10V13H9V15M5,5V7H7V5H5M5,13V15H7V13H5Z"; +var mdiServerNetworkOff = "M13,19H14A1,1 0 0,1 15,20H15.73L13,17.27V19M22,20V21.18L20.82,20H22M21,22.72L19.73,24L17.73,22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H4A1,1 0 0,1 3,16V12A1,1 0 0,1 4,11H6.73L4.73,9H4A1,1 0 0,1 3,8V7.27L1,5.27L2.28,4L21,22.72M4,3H20A1,1 0 0,1 21,4V8A1,1 0 0,1 20,9H9.82L7,6.18V5H5.82L3.84,3C3.89,3 3.94,3 4,3M20,11A1,1 0 0,1 21,12V16A1,1 0 0,1 20,17H17.82L11.82,11H20M9,7H10V5H9V7M9,15H10V14.27L9,13.27V15M5,13V15H7V13H5Z"; +var mdiServerOff = "M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z"; +var mdiServerPlus = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z"; +var mdiServerRemove = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z"; +var mdiServerSecurity = "M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z"; +var mdiSetAll = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M8.5,12C8.5,13.87 9.29,15.56 10.56,16.75L11.56,16.29C10.31,15.29 9.5,13.74 9.5,12C9.5,10.26 10.31,8.71 11.56,7.71L10.56,7.25C9.29,8.44 8.5,10.13 8.5,12M15.5,12C15.5,10.13 14.71,8.44 13.44,7.25L12.44,7.71C13.69,8.71 14.5,10.26 14.5,12C14.5,13.74 13.69,15.29 12.44,16.29L13.44,16.75C14.71,15.56 15.5,13.87 15.5,12Z"; +var mdiSetCenter = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M9,7C9.34,7 9.67,7.03 10,7.1C8.72,8.41 8,10.17 8,12C8,13.83 8.72,15.59 10,16.89C9.67,16.96 9.34,17 9,17A5,5 0 0,1 4,12A5,5 0 0,1 9,7M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7Z"; +var mdiSetCenterRight = "M15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19M9,17L10,16.89C8.72,15.59 8,13.83 8,12C8,10.17 8.72,8.41 10,7.1L9,7A5,5 0 0,0 4,12A5,5 0 0,0 9,17M15.5,12C15.5,10.13 14.71,8.44 13.44,7.25L12.44,7.71C13.69,8.71 14.5,10.26 14.5,12C14.5,13.74 13.69,15.29 12.44,16.29L13.44,16.75C14.71,15.56 15.5,13.87 15.5,12Z"; +var mdiSetLeft = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7M12,8C13.26,8.95 14,10.43 14,12C14,13.57 13.26,15.05 12,16C10.74,15.05 10,13.57 10,12C10,10.43 10.74,8.95 12,8Z"; +var mdiSetLeftCenter = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M15,7L14,7.11C15.28,8.41 16,10.17 16,12C16,13.83 15.28,15.59 14,16.9L15,17A5,5 0 0,0 20,12A5,5 0 0,0 15,7M8.5,12C8.5,13.87 9.29,15.56 10.56,16.75L11.56,16.29C10.31,15.29 9.5,13.74 9.5,12C9.5,10.26 10.31,8.71 11.56,7.71L10.56,7.25C9.29,8.44 8.5,10.13 8.5,12Z"; +var mdiSetLeftRight = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M9,12C9,14.22 10.21,16.16 12,17.2C13.79,16.16 15,14.22 15,12C15,9.78 13.79,7.84 12,6.8C10.21,7.84 9,9.78 9,12Z"; +var mdiSetMerge = "M2 7V9H7V7H2M12 9V11H9V13H12V15L15 12L12 9M17 9V15H22V9H17M2 11V13H7V11H2M2 15V17H7V15H2Z"; +var mdiSetNone = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M9,7C9.34,7 9.67,7.03 10,7.1C8.72,8.41 8,10.17 8,12C8,13.83 8.72,15.59 10,16.89C9.67,16.96 9.34,17 9,17A5,5 0 0,1 4,12A5,5 0 0,1 9,7M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7M12,8C13.26,8.95 14,10.43 14,12C14,13.57 13.26,15.05 12,16C10.74,15.05 10,13.57 10,12C10,10.43 10.74,8.95 12,8Z"; +var mdiSetRight = "M15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19M9,17L10,16.89C8.72,15.59 8,13.83 8,12C8,10.17 8.72,8.41 10,7.1L9,7A5,5 0 0,0 4,12A5,5 0 0,0 9,17M12,16C13.26,15.05 14,13.57 14,12C14,10.43 13.26,8.95 12,8C10.74,8.95 10,10.43 10,12C10,13.57 10.74,15.05 12,16Z"; +var mdiSetSplit = "M17 7V9H22V7H17M2 9V15H7V9H2M12 9V11H9V13H12V15L15 12L12 9M17 11V13H22V11H17M17 15V17H22V15H17Z"; +var mdiSetSquare = "M17.7 17.7L16.6 18.8L15.9 18L17 17L15 15L14 16.1L13.3 15.4L14.4 14.3L12.5 12.4L11.4 13.5L10.7 12.8L11.8 11.7L9.8 9.8L8.7 10.9L8 10.2L9 9L7.1 7.1L6 8.1L5.3 7.4L6.4 6.3L4 4V20H20L17.7 17.7M7 17V11.2L12.8 17H7Z"; +var mdiSetTopBox = "M5,15.5A0.5,0.5 0 0,1 4.5,16H3.5A0.5,0.5 0 0,1 3,15.5V15H2A1,1 0 0,1 1,14V11A1,1 0 0,1 2,10H22A1,1 0 0,1 23,11V14A1,1 0 0,1 22,15H21V15.5A0.5,0.5 0 0,1 20.5,16H19.5A0.5,0.5 0 0,1 19,15.5V15H5V15.5M3,12V13H5V12H3M6,12V13H8V12H6M20.5,11.5A1,1 0 0,0 19.5,12.5A1,1 0 0,0 20.5,13.5A1,1 0 0,0 21.5,12.5A1,1 0 0,0 20.5,11.5Z"; +var mdiSettingsHelper = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; +var mdiShaker = "M7 16C7 16.55 6.55 17 6 17S5 16.55 5 16C5 15.45 5.45 15 6 15S7 15.45 7 16M9 16C8.45 16 8 16.45 8 17S8.45 18 9 18 10 17.55 10 17 9.55 16 9 16M4 18C3.45 18 3 18.45 3 19S3.45 20 4 20 5 19.55 5 19 4.55 18 4 18M7 19C6.45 19 6 19.45 6 20S6.45 21 7 21 8 20.55 8 20 7.55 19 7 19M15.33 2.72L9.8 9.65L13.34 13.19L20.28 7.67C21.18 6.91 21.25 5.54 20.41 4.7L18.3 2.59C17.46 1.75 16.09 1.82 15.33 2.72M8.39 12.5L10.5 14.6C10.9 15 11.54 15 11.93 14.6L12.63 13.9L9.1 10.36L8.39 11.07C8 11.46 8 12.09 8.39 12.5Z"; +var mdiShakerOutline = "M16.88 4L16.88 4L19.03 6.1L13.5 10.5L12.5 9.5L16.87 4L16.88 4M16.88 2C16.3 2 15.73 2.24 15.33 2.72L9.8 9.65L13.34 13.19L20.28 7.67C21.18 6.91 21.25 5.54 20.41 4.7L18.3 2.59C17.9 2.19 17.39 2 16.88 2M9.1 10.36L8.39 11.07C8 11.46 8 12.09 8.39 12.5L10.5 14.6C10.71 14.8 10.96 14.89 11.22 14.89S11.73 14.8 11.93 14.6L12.63 13.9L9.1 10.36M6 15C5.45 15 5 15.45 5 16C5 16.55 5.45 17 6 17C6.55 17 7 16.55 7 16C7 15.45 6.55 15 6 15M9 16C8.45 16 8 16.45 8 17S8.45 18 9 18C9.55 18 10 17.55 10 17S9.55 16 9 16M4 18C3.45 18 3 18.45 3 19S3.45 20 4 20C4.55 20 5 19.55 5 19S4.55 18 4 18M7 19C6.45 19 6 19.45 6 20S6.45 21 7 21C7.55 21 8 20.55 8 20S7.55 19 7 19Z"; +var mdiShape = "M11,13.5V21.5H3V13.5H11M12,2L17.5,11H6.5L12,2M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13Z"; +var mdiShapeCirclePlus = "M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z"; +var mdiShapeOutline = "M11,13.5V21.5H3V13.5H11M9,15.5H5V19.5H9V15.5M12,2L17.5,11H6.5L12,2M12,5.86L10.08,9H13.92L12,5.86M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13M17.5,15A2.5,2.5 0 0,0 15,17.5A2.5,2.5 0 0,0 17.5,20A2.5,2.5 0 0,0 20,17.5A2.5,2.5 0 0,0 17.5,15Z"; +var mdiShapeOvalPlus = "M19 5H22V7H19V10H17V7H14V5H17V2H19V5M11 4L12 4.09V6.14C11.68 6.05 11.34 6 11 6C8.24 6 6 9.13 6 13C6 16.87 8.24 20 11 20C13.76 20 16 16.87 16 13L15.95 12H17.96L18 13C18 17.97 14.87 22 11 22C7.13 22 4 17.97 4 13C4 8.03 7.13 4 11 4Z"; +var mdiShapePlus = "M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z"; +var mdiShapePolygonPlus = "M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z"; +var mdiShapeRectanglePlus = "M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z"; +var mdiShapeSquarePlus = "M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z"; +var mdiShapeSquareRoundedPlus = "M17 2H19V5H22V7H19V10H17V7H14V5H17V2M7 5H11V7H7C5.9 7 5 7.9 5 9V17C5 18.11 5.9 19 7 19H15C16.11 19 17 18.11 17 17V13H19V17C19 19.21 17.21 21 15 21H7C4.79 21 3 19.21 3 17V9C3 6.79 4.79 5 7 5Z"; +var mdiShare = "M21,12L14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12Z"; +var mdiShareAll = "M11 9V5L18 12L11 19V14.9C6 14.9 2.5 16.5 0 20C1 15 4 10 11 9M17 8V5L24 12L17 19V16L21 12L17 8Z"; +var mdiShareAllOutline = "M13 9.8V10.7L11.3 10.9C8.7 11.3 6.8 12.3 5.4 13.6C7.1 13.1 8.9 12.8 11 12.8H13V14.1L15.2 12L13 9.8M11 5L18 12L11 19V14.9C6 14.9 2.5 16.5 0 20C1 15 4 10 11 9M17 8V5L24 12L17 19V16L21 12"; +var mdiShareCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z"; +var mdiShareOff = "M20.8 22.7L15.6 17.5L14 19V15.9L13.1 14.9C8.6 15.2 5.4 16.8 3 20.1C3.58 16.31 5.72 12.94 8.9 10.8L1.1 3L2.4 1.7L22.1 21.5M18.1 14.9L21 12L14 5V9L12.5 9.3"; +var mdiShareOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L8.9 10.8C5.4 12.9 3.7 16.4 3 20C5.3 16.7 8.6 15.1 13 14.9L14 15.9V19L15.6 17.4L20.8 22.7M8.3 13.8C8.94 13.22 9.65 12.71 10.4 12.3L11.3 13.1M14.2 11L12.5 9.3L14 9V5L21 12L18.1 14.9L16.7 13.5L18.2 12L16 9.8V10.7"; +var mdiShareOutline = "M14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12L14,5M16,9.83L18.17,12L16,14.17V12.9H14C11.93,12.9 10.07,13.28 8.34,13.85C9.74,12.46 11.54,11.37 14.28,11L16,10.73V9.83Z"; +var mdiShareVariant = "M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z"; +var mdiShareVariantOutline = "M18 16.08C17.24 16.08 16.56 16.38 16.04 16.85L8.91 12.7C8.96 12.47 9 12.24 9 12S8.96 11.53 8.91 11.3L15.96 7.19C16.5 7.69 17.21 8 18 8C19.66 8 21 6.66 21 5S19.66 2 18 2 15 3.34 15 5C15 5.24 15.04 5.47 15.09 5.7L8.04 9.81C7.5 9.31 6.79 9 6 9C4.34 9 3 10.34 3 12S4.34 15 6 15C6.79 15 7.5 14.69 8.04 14.19L15.16 18.34C15.11 18.55 15.08 18.77 15.08 19C15.08 20.61 16.39 21.91 18 21.91S20.92 20.61 20.92 19C20.92 17.39 19.61 16.08 18 16.08M18 4C18.55 4 19 4.45 19 5S18.55 6 18 6 17 5.55 17 5 17.45 4 18 4M6 13C5.45 13 5 12.55 5 12S5.45 11 6 11 7 11.45 7 12 6.55 13 6 13M18 20C17.45 20 17 19.55 17 19S17.45 18 18 18 19 18.45 19 19 18.55 20 18 20Z"; +var mdiSharkFin = "M22 16V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16H22M5.28 13.79C5.82 13.63 6.37 13.38 6.89 13.04L8.03 12.27L9.16 13.07C10 13.66 11 14 12 14C13 14 14 13.66 14.84 13.07L15.97 12.27L17.11 13.04C17.93 13.59 18.83 13.9 19.67 13.97C18.24 7.4 12.37 2 6 2C5.65 2 5.33 2.18 5.15 2.47C4.97 2.77 4.95 3.14 5.11 3.45C7.28 7.79 6.61 11.29 5.28 13.79M16 18.7C13.6 20.4 10.4 20.4 8 18.7C6.8 19.5 5.4 20 4 20H2V22H4C5.4 22 6.8 21.6 8 21C10.5 22.3 13.5 22.3 16 21C17.2 21.6 18.6 22 20 22H22V20H20C18.6 20 17.2 19.5 16 18.7Z"; +var mdiSharkFinOutline = "M22 16V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16H22M5.28 13.79C5.82 13.63 6.37 13.38 6.89 13.04L8 12.28C8.69 10 8.78 7.27 7.59 4.14C11.95 4.89 15.89 8.65 17.37 13.19C18.12 13.64 18.91 13.91 19.66 13.97C18.24 7.4 12.37 2 6 2C5.65 2 5.33 2.18 5.15 2.47C4.97 2.77 4.95 3.14 5.11 3.45C7.28 7.79 6.61 11.29 5.28 13.79M16 18.7C13.6 20.4 10.4 20.4 8 18.7C6.8 19.5 5.4 20 4 20H2V22H4C5.4 22 6.8 21.6 8 21C10.5 22.3 13.5 22.3 16 21C17.2 21.6 18.6 22 20 22H22V20H20C18.6 20 17.2 19.5 16 18.7Z"; +var mdiSheep = "M20,8.5A2.5,2.5 0 0,1 17.5,11C16.42,11 15.5,10.31 15.16,9.36C14.72,9.75 14.14,10 13.5,10C12.94,10 12.42,9.81 12,9.5C11.58,9.81 11.07,10 10.5,10C9.86,10 9.28,9.75 8.84,9.36C8.5,10.31 7.58,11 6.5,11A2.5,2.5 0 0,1 4,8.5C4,7.26 4.91,6.23 6.1,6.04C6.04,5.87 6,5.69 6,5.5A1.5,1.5 0 0,1 7.5,4C7.7,4 7.89,4.04 8.06,4.11C8.23,3.47 8.81,3 9.5,3C9.75,3 10,3.07 10.18,3.17C10.5,2.5 11.19,2 12,2C12.81,2 13.5,2.5 13.82,3.17C14,3.07 14.25,3 14.5,3C15.19,3 15.77,3.47 15.94,4.11C16.11,4.04 16.3,4 16.5,4A1.5,1.5 0 0,1 18,5.5C18,5.69 17.96,5.87 17.9,6.04C19.09,6.23 20,7.26 20,8.5M10,12A1,1 0 0,0 9,13A1,1 0 0,0 10,14A1,1 0 0,0 11,13A1,1 0 0,0 10,12M14,12A1,1 0 0,0 13,13A1,1 0 0,0 14,14A1,1 0 0,0 15,13A1,1 0 0,0 14,12M20.23,10.66C19.59,11.47 18.61,12 17.5,12C17.05,12 16.62,11.9 16.21,11.73C16.2,14.28 15.83,17.36 14.45,18.95C13.93,19.54 13.3,19.86 12.5,19.96V18H11.5V19.96C10.7,19.86 10.07,19.55 9.55,18.95C8.16,17.35 7.79,14.29 7.78,11.74C7.38,11.9 6.95,12 6.5,12C5.39,12 4.41,11.47 3.77,10.66C2.88,11.55 2,12 2,12C2,12 3,14 5,14C5.36,14 5.64,13.96 5.88,13.91C6.22,17.73 7.58,22 12,22C16.42,22 17.78,17.73 18.12,13.91C18.36,13.96 18.64,14 19,14C21,14 22,12 22,12C22,12 21.12,11.55 20.23,10.66Z"; +var mdiShield = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z"; +var mdiShieldAccount = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M17.13,17C15.92,18.85 14.11,20.24 12,20.92C9.89,20.24 8.08,18.85 6.87,17C6.53,16.5 6.24,16 6,15.47C6,13.82 8.71,12.47 12,12.47C15.29,12.47 18,13.79 18,15.47C17.76,16 17.47,16.5 17.13,17Z"; +var mdiShieldAccountOutline = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,3.18L19,6.3V11.22C19,12.92 18.5,14.65 17.65,16.17C16,14.94 13.26,14.5 12,14.5C10.74,14.5 8,14.94 6.35,16.17C5.5,14.65 5,12.92 5,11.22V6.3L12,3.18M12,6A3.5,3.5 0 0,0 8.5,9.5A3.5,3.5 0 0,0 12,13A3.5,3.5 0 0,0 15.5,9.5A3.5,3.5 0 0,0 12,6M12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8M12,16.5C13.57,16.5 15.64,17.11 16.53,17.84C15.29,19.38 13.7,20.55 12,21C10.3,20.55 8.71,19.38 7.47,17.84C8.37,17.11 10.43,16.5 12,16.5Z"; +var mdiShieldAccountVariant = "M17 11C17.3 11 17.7 11 18 11.1V6.3L10.5 3L3 6.3V11.2C3 15.7 6.2 20 10.5 21C11.1 20.9 11.6 20.7 12.1 20.5C11.4 19.5 11 18.3 11 17C11 13.7 13.7 11 17 11M17 13C14.8 13 13 14.8 13 17S14.8 21 17 21 21 19.2 21 17 19.2 13 17 13M17 14.4C17.6 14.4 18.1 14.9 18.1 15.5C18.1 16.1 17.6 16.6 17 16.6S15.9 16.1 15.9 15.5 16.4 14.4 17 14.4M17 19.8C16.1 19.8 15.3 19.3 14.8 18.6C14.9 17.9 16.3 17.5 17 17.5S19.2 17.9 19.2 18.6C18.7 19.3 17.9 19.8 17 19.8Z"; +var mdiShieldAccountVariantOutline = "M17 14.4C17.6 14.4 18.1 14.9 18.1 15.5S17.6 16.6 17 16.6 15.9 16.1 15.9 15.5 16.4 14.4 17 14.4M17 17.5C16.3 17.5 14.8 17.9 14.8 18.6C15.3 19.3 16.1 19.8 17 19.8S18.7 19.3 19.2 18.6C19.2 17.9 17.7 17.5 17 17.5M18 11.1V6.3L10.5 3L3 6.3V11.2C3 15.7 6.2 20 10.5 21C11.1 20.9 11.6 20.7 12.1 20.5C13.2 22 15 23 17 23C20.3 23 23 20.3 23 17C23 14 20.8 11.6 18 11.1M11 17C11 17.6 11.1 18.1 11.2 18.6C11 18.7 10.7 18.8 10.5 18.9C7.3 17.9 5 14.7 5 11.2V7.6L10.5 5.2L16 7.6V11.1C13.2 11.6 11 14 11 17M17 21C14.8 21 13 19.2 13 17S14.8 13 17 13 21 14.8 21 17 19.2 21 17 21Z"; +var mdiShieldAirplane = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z"; +var mdiShieldAirplaneOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z"; +var mdiShieldAlert = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5M11,7H13V13H11M11,15H13V17H11"; +var mdiShieldAlertOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M11,7H13V13H11V7M11,15H13V17H11V15Z"; +var mdiShieldBug = "M11 13H13V14H11V13M21 5V11C21 16.5 17.2 21.7 12 23C6.8 21.7 3 16.5 3 11V5L12 1L21 5M17 10H14.8C14.6 9.4 14.2 8.9 13.7 8.5L14.9 7.3L14.2 6.6L12.8 8H12C11.8 8 11.5 8 11.3 8.1L9.9 6.6L9.1 7.4L10.3 8.6C9.8 8.9 9.4 9.4 9.2 10H7V11H9V12H7V13H9V14H7V15H9.2C9.6 16.2 10.7 17 12 17S14.4 16.2 14.8 15H17V14H15V13H17V12H15V11H17V10M11 12H13V11H11V12Z"; +var mdiShieldBugOutline = "M9.9 6.6L9.1 7.4L10.3 8.6C9.8 8.9 9.4 9.4 9.2 10H7V11H9V12H7V13H9V14H7V15H9.2C9.6 16.2 10.7 17 12 17S14.4 16.2 14.8 15H17V14H15V13H17V12H15V11H17V10H14.8C14.6 9.4 14.2 8.9 13.7 8.5L14.9 7.3L14.2 6.6L12.8 8H12C11.8 8 11.5 8 11.3 8.1L9.9 6.6M11 11H13V12H11V11M11 13H13V14H11V13M21 11C21 16.5 17.2 21.7 12 23C6.8 21.7 3 16.5 3 11V5L12 1L21 5V11M12 21C15.8 20 19 15.5 19 11.2V6.3L12 3.2L5 6.3V11.2C5 15.5 8.2 20 12 21Z"; +var mdiShieldCar = "M14.42 7.5L16 11H8L9.42 7.5H14.42M9 12C8.45 12 8 12.45 8 13S8.45 14 9 14 10 13.55 10 13 9.55 12 9 12M15 12C14.45 12 14 12.45 14 13S14.45 14 15 14 16 13.55 16 13 15.55 12 15 12M21 5V11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5M18 12L15.84 7C15.64 6.42 15.08 6 14.42 6H9.42C8.76 6 8.2 6.42 8 7L6 12V16C6 16.55 6.45 17 7 17H8C8.55 17 9 16.55 9 16V15H15V16C15 16.55 15.45 17 16 17H17C17.55 17 18 16.55 18 16V12Z"; +var mdiShieldCheck = "M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z"; +var mdiShieldCheckOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9"; +var mdiShieldCross = "M12,1L3,5V11C3,16.5 6.8,21.7 12,23C17.2,21.7 21,16.5 21,11V5L12,1M16,10H13V18H11V10H8V8H11V5H13V8H16V10Z"; +var mdiShieldCrossOutline = "M21,11C21,16.5 17.2,21.7 12,23C6.8,21.7 3,16.5 3,11V5L12,1L21,5V11M12,21C15.8,20 19,15.5 19,11.2V6.3L12,3.2L5,6.3V11.2C5,15.5 8.3,20 12,21M16,9H13V6H11V9H8V11H11V19H13V11H16V9Z"; +var mdiShieldEdit = "M21.7 14.4L20.7 15.4L18.6 13.3L19.6 12.3C19.8 12.1 20.2 12.1 20.4 12.3L21.7 13.6C21.9 13.8 21.9 14.1 21.7 14.4M12 19.9L18.1 13.8L20.2 15.9L14.1 22H12V19.9M10 19.1L21 8.1V5L12 1L3 5V11C3 15.8 5.9 20.3 10 22.3V19.1Z"; +var mdiShieldEditOutline = "M21.7 13.6L20.4 12.3C20.3 12.2 20.2 12.1 20 12.1C19.9 12.1 19.7 12.2 19.6 12.3L18.6 13.3L20.6 15.3L21.6 14.3C21.9 14.1 21.9 13.8 21.7 13.6M12 19.9V22H14.1L20.2 15.9L18.2 13.8L12 19.9M10 22.3C5.9 20.3 3 15.8 3 11V5L12 1L21 5V8.1L19 10.1V6.3L12 3.2L5 6.3V11.2C5 14.7 7.2 18.3 10 20.1V22.3Z"; +var mdiShieldHalf = "M12 1L3 5V11C3 16.5 6.8 21.7 12 23V1Z"; +var mdiShieldHalfFull = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18V21Z"; +var mdiShieldHome = "M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z"; +var mdiShieldHomeOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M11,14H13V17H16V12H18L12,7L6,12H8V17H11V14"; +var mdiShieldKey = "M12,8A1,1 0 0,1 13,9A1,1 0 0,1 12,10A1,1 0 0,1 11,9A1,1 0 0,1 12,8M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,6A3,3 0 0,0 9,9C9,10.31 9.83,11.42 11,11.83V18H13V16H15V14H13V11.83C14.17,11.42 15,10.31 15,9A3,3 0 0,0 12,6Z"; +var mdiShieldKeyOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M12,6A3,3 0 0,1 15,9C15,10.31 14.17,11.42 13,11.83V14H15V16H13V18H11V11.83C9.83,11.42 9,10.31 9,9A3,3 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z"; +var mdiShieldLinkVariant = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M14.28,14.08L12.26,16.1C11.66,16.7 10.87,17 10.08,17C9.29,17 8.5,16.7 7.9,16.1C6.7,14.9 6.7,12.95 7.9,11.74L9.15,10.5L9.14,11.06C9.14,11.5 9.21,11.95 9.36,12.37L9.41,12.5L9.04,12.87C8.76,13.15 8.6,13.53 8.6,13.92C8.6,14.32 8.76,14.69 9.04,14.97C9.6,15.53 10.57,15.53 11.13,14.97L13.14,12.96C13.43,12.67 13.58,12.3 13.58,11.91C13.58,11.5 13.43,11.14 13.15,10.86C13,10.71 12.9,10.5 12.9,10.29C12.9,10.08 13,9.88 13.15,9.73C13.45,9.42 14,9.43 14.28,9.73C14.86,10.31 15.18,11.08 15.18,11.9C15.18,12.73 14.86,13.5 14.28,14.08M17.1,11.26L15.85,12.5L15.86,11.94C15.86,11.5 15.79,11.06 15.64,10.64L15.6,10.5L15.96,10.13C16.25,9.85 16.4,9.5 16.4,9.08C16.4,8.69 16.25,8.32 15.97,8.04C15.4,7.47 14.43,7.47 13.87,8.04L11.86,10.05C11.58,10.33 11.42,10.7 11.42,11.1C11.42,11.5 11.57,11.86 11.86,12.14C12,12.29 12.1,12.5 12.1,12.71C12.1,12.93 12,13.13 11.85,13.28C11.7,13.44 11.5,13.5 11.29,13.5C11.09,13.5 10.88,13.43 10.72,13.28C9.5,12.08 9.5,10.12 10.72,8.92L12.74,6.9C13.95,5.7 15.9,5.7 17.1,6.9C17.68,7.5 18,8.26 18,9.08C18,9.9 17.68,10.68 17.1,11.26Z"; +var mdiShieldLinkVariantOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M14.28,9.73C14.86,10.31 15.18,11.08 15.18,11.9C15.18,12.73 14.86,13.5 14.28,14.08L12.26,16.1C11.66,16.7 10.87,17 10.08,17C9.29,17 8.5,16.7 7.9,16.1C6.7,14.9 6.7,12.95 7.9,11.74L9.15,10.5L9.14,11.06C9.14,11.5 9.21,11.95 9.36,12.36L9.4,12.5L9.04,12.87C8.75,13.15 8.6,13.5 8.6,13.92C8.6,14.31 8.75,14.68 9.03,14.96C9.6,15.53 10.57,15.53 11.13,14.97L13.14,12.95C13.43,12.67 13.58,12.3 13.58,11.91C13.58,11.5 13.43,11.14 13.14,10.86C13,10.71 12.9,10.5 12.9,10.29C12.9,10.08 13,9.87 13.14,9.72C13.45,9.42 14,9.42 14.28,9.73M18,9.08C18,9.9 17.68,10.68 17.1,11.26L15.85,12.5L15.86,11.94C15.86,11.5 15.79,11.06 15.64,10.64L15.59,10.5L15.96,10.13C16.25,9.85 16.4,9.5 16.4,9.08C16.4,8.69 16.25,8.32 15.96,8.04C15.4,7.47 14.43,7.47 13.87,8.03L11.86,10.05C11.57,10.33 11.42,10.7 11.42,11.1C11.42,11.5 11.57,11.86 11.85,12.14C12,12.29 12.1,12.5 12.1,12.71C12.1,12.93 12,13.13 11.85,13.28C11.7,13.43 11.5,13.5 11.29,13.5C11.09,13.5 10.88,13.43 10.72,13.28C9.5,12.07 9.5,10.12 10.72,8.92L12.74,6.9C13.95,5.7 15.9,5.7 17.1,6.9C17.68,7.5 18,8.26 18,9.08Z"; +var mdiShieldLock = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,7C13.4,7 14.8,8.1 14.8,9.5V11C15.4,11 16,11.6 16,12.3V15.8C16,16.4 15.4,17 14.7,17H9.2C8.6,17 8,16.4 8,15.7V12.2C8,11.6 8.6,11 9.2,11V9.5C9.2,8.1 10.6,7 12,7M12,8.2C11.2,8.2 10.5,8.7 10.5,9.5V11H13.5V9.5C13.5,8.7 12.8,8.2 12,8.2Z"; +var mdiShieldLockOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M14.8,11V9.5C14.8,8.1 13.4,7 12,7C10.6,7 9.2,8.1 9.2,9.5V11C8.6,11 8,11.6 8,12.2V15.7C8,16.4 8.6,17 9.2,17H14.7C15.4,17 16,16.4 16,15.8V12.3C16,11.6 15.4,11 14.8,11M13.5,11H10.5V9.5C10.5,8.7 11.2,8.2 12,8.2C12.8,8.2 13.5,8.7 13.5,9.5V11Z"; +var mdiShieldOff = "M1,4.27L2.28,3L20.5,21.22L19.23,22.5L17,20.25C15.57,21.57 13.87,22.54 12,23C6.84,21.74 3,16.55 3,11V6.27L1,4.27M12,1L21,5V11C21,13.28 20.35,15.5 19.23,17.41L5.65,3.82L12,1Z"; +var mdiShieldOffOutline = "M1,4.27L3,6.27V11C3,16.55 6.84,21.74 12,23C13.87,22.54 15.57,21.56 16.97,20.24L19.23,22.5L20.5,21.22L2.28,3L1,4.27M12,21C8.25,20 5,15.54 5,11.22V8.27L15.59,18.86C14.53,19.89 13.3,20.65 12,21M21,5V11C21,13.28 20.35,15.5 19.23,17.4L17.77,15.95C18.54,14.5 19,12.84 19,11.22V6.3L12,3.18L7.16,5.34L5.65,3.82L12,1L21,5Z"; +var mdiShieldOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z"; +var mdiShieldPlus = "M19,20V22.97H17V20H14V18H17V15H19V18H22V20H19M12,1L21,5V11C21,11.9 20.9,12.78 20.71,13.65C19.9,13.23 19,13 18,13A6,6 0 0,0 12,19C12,20.36 12.45,21.62 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1Z"; +var mdiShieldPlusOutline = "M19,20V22.97H17V20H14V18H17V15H19V18H22V20H19M21,11C21,11.9 20.9,12.78 20.71,13.65C20.13,13.35 19.5,13.15 18.81,13.05C18.93,12.45 19,11.83 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21L12.31,20.91C12.5,21.53 12.83,22.11 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11Z"; +var mdiShieldRefresh = "M18 12C19 12 20 12.2 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8 21.7 12 23C12.4 22.9 12.7 22.8 13 22.7C12 21.5 11.5 20 11.5 18.5C11.5 14.9 14.4 12 18 12M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5Z"; +var mdiShieldRefreshOutline = "M12 21C8.2 20 5 15.5 5 11.2V6.3L12 3.2L19 6.3V12.1C19.7 12.2 20.3 12.4 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8 21.7 12 23C12.4 22.9 12.7 22.8 13 22.7C12.6 22.2 12.2 21.6 12 21M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5Z"; +var mdiShieldRemove = "M19.43,19L21.5,21.11L20.12,22.5L18.03,20.41L15.91,22.53L14.5,21.11L16.61,19L14.5,16.86L15.88,15.47L18,17.59L20.12,15.47L21.55,16.9L19.43,19M12,1L21,5V11C21,11.9 20.9,12.78 20.71,13.65C19.9,13.23 19,13 18,13A6,6 0 0,0 12,19C12,20.36 12.45,21.62 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1Z"; +var mdiShieldRemoveOutline = "M19.43,19L21.5,21.11L20.12,22.5L18.03,20.41L15.91,22.53L14.5,21.11L16.61,19L14.5,16.86L15.88,15.47L18,17.59L20.12,15.47L21.55,16.9L19.43,19M21,11C21,11.9 20.9,12.78 20.71,13.65C20.13,13.35 19.5,13.15 18.81,13.05C18.93,12.45 19,11.83 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21L12.31,20.91C12.5,21.53 12.83,22.11 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11Z"; +var mdiShieldSearch = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M17.86,19.31C16.23,21.22 14.28,22.45 12,23C9.44,22.39 7.3,20.93 5.58,18.63C3.86,16.34 3,13.8 3,11V5L12,1L21,5V11C21,13.39 20.36,15.61 19.08,17.67L16.17,14.76C16.69,13.97 17,13 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C13,17 13.97,16.69 14.76,16.17L17.86,19.31Z"; +var mdiShieldStar = "M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1M15.08 16L12 14.15L8.93 16L9.74 12.5L7.03 10.16L10.61 9.85L12 6.55L13.39 9.84L16.97 10.15L14.26 12.5L15.08 16Z"; +var mdiShieldStarOutline = "M21 11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5V11M12 21C15.75 20 19 15.54 19 11.22V6.3L12 3.18L5 6.3V11.22C5 15.54 8.25 20 12 21M15.05 16L11.97 14.15L8.9 16L9.71 12.5L7 10.16L10.58 9.85L11.97 6.55L13.37 9.84L16.95 10.15L14.23 12.5L15.05 16"; +var mdiShieldSun = "M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1M12 8.89C13.6 8.89 14.89 10.18 14.89 11.78S13.6 14.67 12 14.67 9.11 13.37 9.11 11.78 10.41 8.89 12 8.89M12 6L13.38 8C12.96 7.82 12.5 7.73 12 7.73S11.05 7.82 10.62 8L12 6M7 8.89L9.4 8.69C9.06 9 8.74 9.34 8.5 9.76C8.25 10.18 8.1 10.62 8 11.08L7 8.89M7 14.67L8.03 12.5C8.11 12.93 8.27 13.38 8.5 13.8C8.75 14.23 9.06 14.59 9.4 14.88L7 14.67M17 8.89L16 11.08C15.9 10.62 15.74 10.18 15.5 9.76C15.26 9.34 14.95 9 14.6 8.68L17 8.89M17 14.67L14.6 14.87C14.94 14.58 15.25 14.22 15.5 13.8C15.74 13.38 15.89 12.93 15.97 12.5L17 14.67M12 17.55L10.61 15.57C11.04 15.72 11.5 15.82 12 15.82C12.5 15.82 12.95 15.72 13.37 15.57L12 17.55Z"; +var mdiShieldSunOutline = "M21 11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5V11M12 21C15.75 20 19 15.54 19 11.22V6.3L12 3.18L5 6.3V11.22C5 15.54 8.25 20 12 21M12 8.89C13.6 8.89 14.89 10.18 14.89 11.78S13.6 14.67 12 14.67 9.11 13.37 9.11 11.78 10.41 8.89 12 8.89M12 6L13.38 8C12.96 7.82 12.5 7.73 12 7.73S11.05 7.82 10.62 8L12 6M7 8.89L9.4 8.69C9.06 9 8.74 9.34 8.5 9.76C8.25 10.18 8.1 10.62 8 11.08L7 8.89M7 14.67L8.03 12.5C8.11 12.93 8.27 13.38 8.5 13.8C8.75 14.23 9.06 14.59 9.4 14.88L7 14.67M17 8.89L16 11.08C15.9 10.62 15.74 10.18 15.5 9.76C15.26 9.34 14.95 9 14.6 8.68L17 8.89M17 14.67L14.6 14.87C14.94 14.58 15.25 14.22 15.5 13.8C15.74 13.38 15.89 12.93 15.97 12.5L17 14.67M12 17.55L10.61 15.57C11.04 15.72 11.5 15.82 12 15.82C12.5 15.82 12.95 15.72 13.37 15.57L12 17.55Z"; +var mdiShieldSync = "M18 12A6.41 6.41 0 0 1 20.87 12.67A11.63 11.63 0 0 0 21 11V5L12 1L3 5V11C3 16.55 6.84 21.74 12 23C12.35 22.91 12.7 22.8 13 22.68A6.42 6.42 0 0 1 11.5 18.5A6.5 6.5 0 0 1 18 12M18 14.5V13L15.75 15.25L18 17.5V16A2.5 2.5 0 0 1 20.24 19.62L21.33 20.71A4 4 0 0 0 18 14.5M18 21A2.5 2.5 0 0 1 15.76 17.38L14.67 16.29A4 4 0 0 0 18 22.5V24L20.25 21.75L18 19.5Z"; +var mdiShieldSyncOutline = "M12 21C8.25 20 5 15.54 5 11.22V6.3L12 3.18L19 6.3V12.07A6.45 6.45 0 0 1 20.91 12.67A11.63 11.63 0 0 0 21 11V5L12 1L3 5V11C3 16.55 6.84 21.74 12 23C12.35 22.91 12.7 22.8 13 22.68A6.3 6.3 0 0 1 12 21M18 14.5V13L15.75 15.25L18 17.5V16A2.5 2.5 0 0 1 20.24 19.62L21.33 20.71A4 4 0 0 0 18 14.5M18 21A2.5 2.5 0 0 1 15.76 17.38L14.67 16.29A4 4 0 0 0 18 22.5V24L20.25 21.75L18 19.5Z"; +var mdiShipWheel = "M2,11L4.05,11.1C4.3,8.83 5.5,6.85 7.25,5.56L6.13,3.84C5.86,3.36 6,2.75 6.5,2.47C7,2.2 7.59,2.36 7.87,2.84L8.8,4.66C9.78,4.24 10.86,4 12,4C13.14,4 14.22,4.24 15.2,4.66L16.13,2.84C16.41,2.36 17,2.2 17.5,2.47C18,2.75 18.14,3.36 17.87,3.84L16.75,5.56C18.5,6.85 19.7,8.83 19.95,11.1L22,11A1,1 0 0,1 23,12A1,1 0 0,1 22,13L19.95,12.9C19.7,15.17 18.5,17.15 16.75,18.44L17.87,20.16C18.14,20.64 18,21.25 17.5,21.53C17,21.8 16.41,21.64 16.13,21.16L15.2,19.34C14.22,19.76 13.14,20 12,20C10.86,20 9.78,19.76 8.8,19.34L7.87,21.16C7.59,21.64 7,21.8 6.5,21.53C6,21.25 5.86,20.64 6.13,20.16L7.25,18.44C5.5,17.15 4.3,15.17 4.05,12.9L2,13A1,1 0 0,1 1,12A1,1 0 0,1 2,11M9.07,11.35C9.2,10.74 9.53,10.2 10,9.79L8.34,7.25C7.11,8.19 6.27,9.6 6.05,11.2L9.07,11.35M12,9C12.32,9 12.62,9.05 12.9,9.14L14.28,6.45C13.58,6.16 12.81,6 12,6C11.19,6 10.42,6.16 9.72,6.45L11.1,9.14C11.38,9.05 11.68,9 12,9M14.93,11.35L17.95,11.2C17.73,9.6 16.89,8.19 15.66,7.25L14,9.79C14.47,10.2 14.8,10.74 14.93,11.35M14.93,12.65C14.8,13.26 14.47,13.8 14,14.21L15.66,16.75C16.89,15.81 17.73,14.4 17.95,12.8L14.93,12.65M12,15C11.68,15 11.38,14.95 11.09,14.86L9.72,17.55C10.42,17.84 11.19,18 12,18C12.81,18 13.58,17.84 14.28,17.55L12.91,14.86C12.62,14.95 12.32,15 12,15M9.07,12.65L6.05,12.8C6.27,14.4 7.11,15.81 8.34,16.75L10,14.21C9.53,13.8 9.2,13.26 9.07,12.65Z"; +var mdiShoeBallet = "M12.78 11.97C12.27 8.54 10.86 2 7.53 2S2.8 8.54 2.28 11.97C2.07 13.42 2 14.89 2.16 16.35C2.5 19.39 3.55 20.84 4.27 21.5C4.64 21.83 5.11 22 5.6 22H9.47C9.96 22 10.43 21.83 10.8 21.5C11.5 20.84 12.55 19.39 12.91 16.35C13.08 14.89 13 13.42 12.78 11.97M7.53 4C7.89 3.87 8.59 4.73 9.27 6.31L4.58 10.33C5.41 6.26 6.94 3.79 7.53 4M9.75 13H5.31C5.1 13 4.92 12.92 4.76 12.81L10 8.33C10.29 9.35 10.56 10.5 10.75 11.83C10.84 12.44 10.37 13 9.75 13M21.78 11.97C21.27 8.54 19.86 2 16.53 2C15.04 2 13.94 3.32 13.13 5.08C13.5 6.04 13.84 7.14 14.13 8.37L19.31 12.81C19.15 12.92 18.97 13 18.75 13H14.92C15.04 14.27 15.03 15.45 14.89 16.59C14.62 18.87 14 20.45 13.32 21.53C13.68 21.84 14.13 22 14.6 22H18.47C18.96 22 19.43 21.83 19.8 21.5C20.5 20.84 21.55 19.39 21.91 16.35C22.08 14.89 22 13.42 21.78 11.97M14.8 6.31C15.5 4.73 16.18 3.87 16.53 4C17.13 3.79 18.65 6.26 19.5 10.33L14.8 6.31Z"; +var mdiShoeCleat = "M21 8C20.76 8 20.53 8 20.3 8L20.25 7.97C18.14 7.84 16.38 7.17 15.53 6.23L14 7C13.95 7.1 13.89 7.19 13.84 7.28C14.55 7.89 15 8.65 15 9.5C15 9.83 14.91 10.14 14.79 10.45L12.92 8.58C12.7 8.83 12.47 9.07 12.22 9.29L14.25 11.32C14.04 11.57 13.8 11.79 13.5 12L11.43 9.91C11.14 10.11 10.85 10.28 10.55 10.45L12.58 12.5C12.25 12.63 11.89 12.74 11.5 12.82L9.59 10.91C9.25 11.05 8.91 11.18 8.56 11.29L10.26 13C10.17 13 10.09 13 10 13C8.5 13 7.2 12.54 6.28 11.82C5.46 11.95 4.68 12 4 12C2 12 2 15 2 15V15C2 16.11 2.89 17 4 17H4V18C4 18.55 4.45 19 5 19S6 18.55 6 18V17H7V18C7 18.55 7.45 19 8 19S9 18.55 9 18V17H10V18C10 18.55 10.45 19 11 19S12 18.55 12 18V17H15V18C15 18.55 15.45 19 16 19S17 18.55 17 18V17H18V18C18 18.55 18.45 19 19 19S20 18.55 20 18V17H21C21 17 22 17 22 12.5C22 9 21 8 21 8Z"; +var mdiShoeFormal = "M21.5,9V8H20.5L19.5,9H15L14,8H13L7,12H4A2,2 0 0,0 2,14V16H10L13,15H15V16H21.5V14C21.5,14 22,13 22,11.5C22,10 21.5,9 21.5,9Z"; +var mdiShoeHeel = "M3,18H11.7L17,14H18V18H20V14C20,14 21,12 21,10C21,8 20.5,6 20.5,6H18.5L18,7L10,14H8L3,16V18Z"; +var mdiShoePrint = "M10.74,11.72C11.21,12.95 11.16,14.23 9.75,14.74C6.85,15.81 6.2,13 6.16,12.86L10.74,11.72M5.71,10.91L10.03,9.84C9.84,8.79 10.13,7.74 10.13,6.5C10.13,4.82 8.8,1.53 6.68,2.06C4.26,2.66 3.91,5.35 4,6.65C4.12,7.95 5.64,10.73 5.71,10.91M17.85,19.85C17.82,20 17.16,22.8 14.26,21.74C12.86,21.22 12.8,19.94 13.27,18.71L17.85,19.85M20,13.65C20.1,12.35 19.76,9.65 17.33,9.05C15.22,8.5 13.89,11.81 13.89,13.5C13.89,14.73 14.17,15.78 14,16.83L18.3,17.9C18.38,17.72 19.89,14.94 20,13.65Z"; +var mdiShoeSneaker = "M2 15C2 15 2 12 4 12C4.68 12 5.46 11.95 6.28 11.82C7.2 12.54 8.5 13 10 13H10.25L8.56 11.29C8.91 11.18 9.25 11.05 9.59 10.91L11.5 12.82C11.89 12.74 12.25 12.63 12.58 12.5L10.55 10.45C10.85 10.28 11.14 10.11 11.43 9.91L13.5 12C13.8 11.79 14.04 11.56 14.25 11.32L12.22 9.29C12.46 9.07 12.7 8.83 12.92 8.58L14.79 10.45C14.91 10.14 15 9.83 15 9.5C15 8.65 14.55 7.89 13.84 7.28C13.89 7.19 13.95 7.1 14 7L15.53 6.23C16.38 7.17 18.14 7.84 20.25 7.97L20.3 8H21C21 8 22 9 22 12.5C22 13.07 22 13.57 21.96 14H19C17.9 14 16.58 14.26 15.3 14.5C14.12 14.76 12.9 15 12 15H2M21 17C21 17 21.58 17 21.86 15H19C17 15 14 16 12 16H2.28C2.62 16.6 3.26 17 4 17H21Z"; +var mdiShopping = "M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z"; +var mdiShoppingMusic = "M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z"; +var mdiShoppingOutline = "M19 6H17C17 3.2 14.8 1 12 1S7 3.2 7 6H5C3.9 6 3 6.9 3 8V20C3 21.1 3.9 22 5 22H19C20.1 22 21 21.1 21 20V8C21 6.9 20.1 6 19 6M12 3C13.7 3 15 4.3 15 6H9C9 4.3 10.3 3 12 3M19 20H5V8H19V20M12 12C10.3 12 9 10.7 9 9H7C7 11.8 9.2 14 12 14S17 11.8 17 9H15C15 10.7 13.7 12 12 12Z"; +var mdiShoppingSearch = "M19 6H17A5 5 0 0 0 7 6H5A2 2 0 0 0 3 8V20A2 2 0 0 0 5 22H12.05A6.5 6.5 0 0 1 9 16.5A6.4 6.4 0 0 1 10.25 12.68A5 5 0 0 1 7 8H9A3 3 0 0 0 12 11H12.06A6.22 6.22 0 0 1 14.06 10.16A3 3 0 0 0 15 8H17A4.88 4.88 0 0 1 16.54 10.09A6.5 6.5 0 0 1 21 13.09V8A2 2 0 0 0 19 6M9 6A3 3 0 0 1 15 6M19.31 18.9A4.5 4.5 0 1 0 17.88 20.32L21 23.39L22.39 22M15.5 19A2.5 2.5 0 1 1 18 16.5A2.5 2.5 0 0 1 15.5 19Z"; +var mdiShore = "M20 12H22V14H20C18.6 14 17.3 13.6 16 13C13.5 14.3 10.5 14.3 8 13C6.7 13.6 5.4 14 4 14H2V12H4C5.4 12 6.8 11.5 8 10.7C10.4 12.4 13.6 12.4 16 10.7C17.2 11.5 18.6 12 20 12M20 6H22V8H20C18.6 8 17.3 7.7 16 7C13.5 8.3 10.5 8.3 8 7C6.7 7.7 5.4 8 4 8H2V6H4C5.4 6 6.8 5.5 8 4.7C10.4 6.4 13.6 6.4 16 4.7C17.2 5.5 18.6 6 20 6M22 20H2V18H22"; +var mdiShovel = "M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z"; +var mdiShovelOff = "M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z"; +var mdiShower = "M21,14V15C21,16.91 19.93,18.57 18.35,19.41L19,22H17L16.5,20C16.33,20 16.17,20 16,20H8C7.83,20 7.67,20 7.5,20L7,22H5L5.65,19.41C4.07,18.57 3,16.91 3,15V14H2V12H20V5A1,1 0 0,0 19,4C18.5,4 18.12,4.34 18,4.79C18.63,5.33 19,6.13 19,7H13A3,3 0 0,1 16,4C16.06,4 16.11,4 16.17,4C16.58,2.84 17.69,2 19,2A3,3 0 0,1 22,5V14H21V14M19,14H5V15A3,3 0 0,0 8,18H16A3,3 0 0,0 19,15V14Z"; +var mdiShowerHead = "M20,20A1,1 0 0,1 21,21A1,1 0 0,1 20,22A1,1 0 0,1 19,21A1,1 0 0,1 20,20M16,20A1,1 0 0,1 17,21A1,1 0 0,1 16,22A1,1 0 0,1 15,21A1,1 0 0,1 16,20M12,20A1,1 0 0,1 13,21A1,1 0 0,1 12,22A1,1 0 0,1 11,21A1,1 0 0,1 12,20M8,20A1,1 0 0,1 9,21A1,1 0 0,1 8,22A1,1 0 0,1 7,21A1,1 0 0,1 8,20M4,20A1,1 0 0,1 5,21A1,1 0 0,1 4,22A1,1 0 0,1 3,21A1,1 0 0,1 4,20M6,17A1,1 0 0,1 7,18A1,1 0 0,1 6,19H6A1,1 0 0,1 5,18A1,1 0 0,1 6,17H6M10,17A1,1 0 0,1 11,18A1,1 0 0,1 10,19A1,1 0 0,1 9,18A1,1 0 0,1 10,17M14,17A1,1 0 0,1 15,18A1,1 0 0,1 14,19A1,1 0 0,1 13,18A1,1 0 0,1 14,17M18,17A1,1 0 0,1 19,18A1,1 0 0,1 18,19A1,1 0 0,1 17,18A1,1 0 0,1 18,17M8,14A1,1 0 0,1 9,15A1,1 0 0,1 8,16A1,1 0 0,1 7,15A1,1 0 0,1 8,14M12,14A1,1 0 0,1 13,15A1,1 0 0,1 12,16A1,1 0 0,1 11,15A1,1 0 0,1 12,14M16,14A1,1 0 0,1 17,15A1,1 0 0,1 16,16A1,1 0 0,1 15,15A1,1 0 0,1 16,14M19,12H5V10H19V12M17.92,9H6.08C6.5,6.5 8.5,4.5 11,4.08V2H13V4.08C15.5,4.5 17.5,6.5 17.92,9Z"; +var mdiShredder = "M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z"; +var mdiShuffle = "M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z"; +var mdiShuffleDisabled = "M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16"; +var mdiShuffleVariant = "M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z"; +var mdiShuriken = "M14.5 9.5L12 2L9.5 9.5L2 12L9.5 14.5L12 22L14.5 14.5L22 12L14.5 9.5M12 13.7C11.1 13.7 10.3 13 10.3 12C10.3 11.1 11 10.3 12 10.3C12.9 10.3 13.7 11 13.7 12C13.7 12.9 12.9 13.7 12 13.7Z"; +var mdiSigma = "M18,6H8.83L14.83,12L8.83,18H18V20H6V18L12,12L6,6V4H18V6Z"; +var mdiSigmaLower = "M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z"; +var mdiSignCaution = "M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z"; +var mdiSignDirection = "M11,12H3.5L6,9.5L3.5,7H11V3L12,2L13,3V7H18L20.5,9.5L18,12H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V12Z"; +var mdiSignDirectionMinus = "M20.5 9.5L18 12H13V22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18M23 18H15V20H23Z"; +var mdiSignDirectionPlus = "M13 20H13.09A5.5 5.5 0 0 0 13.81 22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18L20.5 9.5L18 12H13M18 15V18H15V20H18V23H20V20H23V18H20V15Z"; +var mdiSignDirectionRemove = "M13 20H13.09A5.5 5.5 0 0 0 13.81 22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18L20.5 9.5L18 12H13M21.12 15.46L19 17.59L16.88 15.46L15.46 16.88L17.59 19L15.46 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; +var mdiSignPole = "M11 3L12 2L13 3V20C14.11 20 15 20.9 15 22H9C9 20.9 9.9 20 11 20V3Z"; +var mdiSignRealEstate = "M18 8H8C6.9 8 6 8.9 6 10V16C6 17.11 6.9 18 8 18H18C19.11 18 20 17.11 20 16V10C20 8.9 19.11 8 18 8M14 16H8V14H14V16M18 12H8V10H18V12M22 6H4V22H2V2H4V4H22V6Z"; +var mdiSignText = "M11,3L12,2L13,3V5H20A1,1 0 0,1 21,6V16A1,1 0 0,1 20,17H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V17H4A1,1 0 0,1 3,16V6A1,1 0 0,1 4,5H11V3M6,8V10H18V8H6M6,12V14H13V12H6Z"; +var mdiSignal = "M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z"; +var mdiSignal2g = "M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5"; +var mdiSignal3g = "M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z"; +var mdiSignal4g = "M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z"; +var mdiSignal5g = "M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M10,4.5H3V12L3,13.5H7V16.5H3V19.5H8.5A1.5,1.5 0 0,0 10,18V12A1.5,1.5 0 0,0 8.5,10.5H6V7.5H10V4.5Z"; +var mdiSignalCellular1 = "M19.5,5.5V18.5H17.5V5.5H19.5M12.5,10.5V18.5H10.5V10.5H12.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; +var mdiSignalCellular2 = "M19.5,5.5V18.5H17.5V5.5H19.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; +var mdiSignalCellular3 = "M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; +var mdiSignalCellularOutline = "M19.5,5.5V18.5H17.5V5.5H19.5M12.5,10.5V18.5H10.5V10.5H12.5M5.5,15.5V18.5H3.5V15.5H5.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; +var mdiSignalDistanceVariant = "M4,6V4A12,12 0 0,1 16,16H14A10,10 0 0,0 4,6M4,10V8A8,8 0 0,1 12,16H10A6,6 0 0,0 4,10M4,12A4,4 0 0,1 8,16H4V12M3,18H19V16L22,19L19,22V20H3V18Z"; +var mdiSignalHspa = "M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z"; +var mdiSignalHspaPlus = "M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z"; +var mdiSignalOff = "M18,3V16.18L21,19.18V3H18M4.28,5L3,6.27L10.73,14H8V21H11V14.27L13,16.27V21H16V19.27L19.73,23L21,21.72L4.28,5M13,9V11.18L16,14.18V9H13M3,18V21H6V18H3Z"; +var mdiSignalVariant = "M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z"; +var mdiSignature = "M22,22H2V20H22V22M2.26,16.83L5.09,14L2.26,11.17L3.67,9.76L6.5,12.59L9.33,9.76L10.74,11.17L7.91,14L10.74,16.83L9.33,18.24L6.5,15.41L3.67,18.24L2.26,16.83Z"; +var mdiSignatureFreehand = "M22,22H2V20H22V22M6.2,17.3L5.5,18L4.1,16.6L2.7,18L2,17.3L3.4,15.9L2,14.5L2.7,13.8L4.1,15.2L5.5,13.8L6.2,14.5L4.8,15.9L6.2,17.3M16.22,14.43C16.22,13.85 15.5,13.2 14.06,12.46C12.23,11.54 11,10.79 10.36,10.24C9.71,9.68 9.39,9.06 9.39,8.37C9.39,6.59 10.3,5.12 12.12,3.95C13.94,2.78 15.43,2.19 16.57,2.19C17.31,2.19 17.85,2.32 18.18,2.58C18.5,2.83 18.68,3.27 18.68,3.9C18.68,4.18 18.56,4.42 18.31,4.63C18.07,4.83 17.87,4.93 17.74,4.93C17.63,4.93 17.43,4.83 17.13,4.64L16.55,4.38C16.08,4.38 15.14,4.71 13.71,5.38C12.29,6.04 11.58,6.79 11.58,7.63C11.58,8.14 11.82,8.6 12.32,9C12.82,9.42 13.71,9.93 15,10.53C16.03,11 16.86,11.5 17.5,12.07C18.1,12.61 18.41,13.25 18.41,14C18.41,15.34 17.47,16.41 15.58,17.17C13.7,17.94 11.9,18.32 10.19,18.32C8.75,18.32 8,17.83 8,16.86C8,16.5 8.19,16.27 8.5,16.11C8.83,15.95 9.16,15.87 9.5,15.87L10.25,16L10.97,16.13C11.95,16.13 13,15.97 14.13,15.64C15.26,15.32 15.96,14.91 16.22,14.43Z"; +var mdiSignatureImage = "M22,22H2V20H22V22M6.2,17.3L4.8,15.9L6.2,14.5L5.5,13.8L4.1,15.2L2.7,13.8L2,14.5L3.4,15.9L2,17.3L2.7,18L4.1,16.6L5.5,18L6.2,17.3M20,5H10A2,2 0 0,0 8,7V16A2,2 0 0,0 10,18H20A2,2 0 0,0 22,16V7A2,2 0 0,0 20,5M10,16L12.6,12.7L14.4,14.9L16.8,11.6L20,16H10Z"; +var mdiSignatureText = "M22,22H2V20H22V22M6.2,17.3L4.8,15.9L6.2,14.5L5.5,13.8L4.1,15.2L2.7,13.8L2,14.5L3.4,15.9L2,17.3L2.7,18L4.1,16.6L5.5,18L6.2,17.3M20.5,3L21.7,7.4L20.7,7.7C20.2,6.8 19.8,6 19.3,5.5C18.7,5 18.1,5 17.5,5H15V15.5C15,16 15,16.5 15.3,16.7C15.6,16.9 16.3,16.9 17,16.9V17.9H11V16.9C11.7,16.9 12.3,16.9 12.7,16.7C13,16.5 13,16 13,15.5V5H10.5C9.9,5 9.3,5 8.7,5.4C8.2,5.8 7.7,6.7 7.3,7.6L6.3,7.3L7.5,3H20.5Z"; +var mdiSilo = "M8.5,2C11.85,2 14.6,4.53 14.96,7.78L22,12V14L20,12.8V22H18V11.6L15,9.8V22H13V9H4V22H2V8.5A6.5,6.5 0 0,1 8.5,2M8.5,4C6.54,4 4.87,5.25 4.26,7H12.74C12.13,5.25 10.46,4 8.5,4M6,11H11V13H6V11M6,15H11V17H6V15M6,19H11V21H6V19Z"; +var mdiSilverware = "M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z"; +var mdiSilverwareClean = "M15 0L14.38 1.37L13 2L14.38 2.63L15 4L15.63 2.63L17 2L15.63 1.37L15 0M10.5 2L9.41 4.41L7 5.5L9.41 6.59L10.5 9L11.6 6.59L14 5.5L11.6 4.41L10.5 2M18.89 5.14C17.56 5.06 16.04 5.65 14.84 6.84C13.25 8.43 12.75 10.58 13.46 12.11L3.7 21.87L5.11 23.28L12 16.41L18.88 23.29L20.29 21.88L13.41 15L14.88 13.53C16.41 14.24 18.56 13.74 20.15 12.15C22.06 10.24 22.43 7.5 20.96 6.03C20.41 5.5 19.68 5.19 18.89 5.14M3.91 5.5C2.35 7.06 2.35 9.59 3.91 11.16L8.1 15.34L10.93 12.5L3.91 5.5Z"; +var mdiSilverwareFork = "M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z"; +var mdiSilverwareForkKnife = "M11,9H9V2H7V9H5V2H3V9C3,11.12 4.66,12.84 6.75,12.97V22H9.25V12.97C11.34,12.84 13,11.12 13,9V2H11V9M16,6V14H18.5V22H21V2C18.24,2 16,4.24 16,6Z"; +var mdiSilverwareSpoon = "M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z"; +var mdiSilverwareVariant = "M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z"; +var mdiSim = "M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z"; +var mdiSimAlert = "M13 13H11V7H13M13 17H11V15H13M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2Z"; +var mdiSimAlertOutline = "M13 13H11V7H13M13 17H11V15H13M18 4V20H6V8.8L10.8 4H18M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2Z"; +var mdiSimOff = "M20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20V8L5.06 6.95L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M20 4C20 2.9 19.11 2 18 2H10L7.6 4.4L20 16.8V4Z"; +var mdiSimOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5.06 6.95L4 8V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M18 20H6V8.83L6.47 8.36L18 19.89V20M10.83 4H18V14.8L20 16.8V4C20 2.9 19.11 2 18 2H10L7.6 4.4L9 5.81L10.83 4Z"; +var mdiSimOutline = "M18 4V20H6V8.8L10.8 4H18M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2M9.5 19H7.5V17H9.5V19M16.5 19H14.5V17H16.5V19M9.5 15H7.5V11H9.5V15M13 19H11V15H13V19M13 13H11V11H13V13M16.5 15H14.5V11H16.5V15Z"; +var mdiSimpleIcons = "M18.25 17C18.25 17.88 18.07 18.74 17.71 19.53H16.31C17.71 17.15 16.91 14.09 14.53 12.69C13.76 12.24 12.89 12 12 12C9.24 12 7 9.76 7 7C7 4.24 9.24 2 12 2C14.76 2 17 4.24 17 7H15.75C15.75 4.93 14.07 3.25 12 3.25C9.93 3.25 8.25 4.93 8.25 7C8.25 9.07 9.93 10.75 12 10.75C15.45 10.75 18.25 13.56 18.25 17M6.29 19.53C5.93 18.74 5.75 17.87 5.75 17H7C7 17.93 7.25 18.79 7.69 19.53H6.29M18.25 20.75V22H5.75V20.75H9.5V15.75H8.25V14.5H15.75V15.75H14.5V20.75H18.25M13.25 15.75H10.75V20.75H13.25V15.75M14.44 7.07C14.4 8.4 13.33 9.47 12 9.5C10.62 9.46 9.53 8.32 9.57 6.94C9.6 5.61 10.67 4.53 12 4.5C13.38 4.54 14.47 5.68 14.44 7.07M13.25 7C13.25 6.31 12.69 5.75 12 5.75C11.31 5.75 10.75 6.31 10.75 7C10.75 7.69 11.31 8.25 12 8.25C12.69 8.25 13.25 7.69 13.25 7Z"; +var mdiSinaWeibo = "M9.82,13.87C10.89,13.87 11.77,14.74 11.77,15.82A1.95,1.95 0 0,1 9.82,17.77C8.74,17.77 7.87,16.89 7.87,15.82C7.87,14.74 8.74,13.87 9.82,13.87M14.5,3.34L15.18,3.31C18.94,3.31 22,6.37 22,10.13L21.95,10.95L20.76,10.58L20.78,10.13C20.78,7.04 18.27,4.53 15.18,4.53L14.83,4.54L14.5,3.34M15.32,6.23C17.38,6.3 19.05,8 19.08,10.06L17.84,9.68C17.65,8.56 16.78,7.68 15.67,7.5L15.32,6.23M2,15.41C1.97,14.8 2.07,12.64 4.95,9.97C8.35,6.81 9.82,7.05 9.82,7.05C9.82,7.05 13,6.75 11.06,10.46H11.13C11.6,9.96 12.62,9.21 14.69,9C16.77,8.79 16.77,10.5 16.5,11.7C18.38,12.64 19.56,14.03 19.56,15.58C19.56,18.4 15.63,20.69 10.78,20.69H10.65L10.5,20.69C7,20.69 4,19.42 2.71,17.59C2.25,16.97 2,16.29 2,15.58V15.41M9.82,11.92C6.59,11.92 3.97,13.67 3.97,15.82C3.97,17.97 6.59,19.72 9.82,19.72C13.05,19.72 15.67,17.97 15.67,15.82C15.67,13.67 13.05,11.92 9.82,11.92Z"; +var mdiSineWave = "M16.5,21C13.5,21 12.31,16.76 11.05,12.28C10.14,9.04 9,5 7.5,5C4.11,5 4,11.93 4,12H2C2,11.63 2.06,3 7.5,3C10.5,3 11.71,7.25 12.97,11.74C13.83,14.8 15,19 16.5,19C19.94,19 20.03,12.07 20.03,12H22.03C22.03,12.37 21.97,21 16.5,21Z"; +var mdiSitemap = "M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z"; +var mdiSizeL = "M9 7V17H15V15H11V7H9Z"; +var mdiSizeM = "M9 7C7.9 7 7 7.9 7 9V17H9V9H11V16H13V9H15V17H17V9C17 7.9 16.11 7 15 7H9Z"; +var mdiSizeS = "M11 7C9.9 7 9 7.9 9 9V11C9 12.11 9.9 13 11 13H13V15H9V17H13C14.11 17 15 16.11 15 15V13C15 11.9 14.11 11 13 11H11V9H15V7H11Z"; +var mdiSizeXl = "M6 7H8L9 9.5L10 7H12L10 12L12 17H10L9 14.5L8 17H6L8 12L6 7M13 7H15V15H19V17H13V7Z"; +var mdiSizeXs = "M6 7H8L9 9.5L10 7H12L10 12L12 17H10L9 14.5L8 17H6L8 12L6 7M15 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H13V15H17V13H15C13.9 13 13 12.11 13 11V9C13 7.9 13.9 7 15 7Z"; +var mdiSizeXxl = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M16 7H18V15H22V17H16V7M2 7H4L5 9.5L6 7H8L6 12L8 17H6L5 14.5L4 17H2L4 12L2 7Z"; +var mdiSizeXxs = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M18 7H22V9H18V11H20C21.11 11 22 11.9 22 13V15C22 16.11 21.11 17 20 17H16V15H20V13H18C16.9 13 16 12.11 16 11V9C16 7.9 16.9 7 18 7M2 7H4L5 9.5L6 7H8L6 12L8 17H6L5 14.5L4 17H2L4 12L2 7Z"; +var mdiSizeXxxl = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M16 7H18V15H22V17H16V7M8 15C8 16.11 7.11 17 6 17H2V15H6V13H4V11H6V9H2V7H6C7.1 7 8 7.89 8 9V10.5C8 11.33 7.33 12 6.5 12C7.33 12 8 12.67 8 13.5V15Z"; +var mdiSkate = "M21.1,16.5C20.36,16.17 19.5,16.5 19.19,17.26C19.06,17.58 18.8,17.87 18.5,18H3V21H17.97C19.68,21 21.22,20 21.88,18.41C22.2,17.67 21.86,16.81 21.1,16.5M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15Z"; +var mdiSkateboard = "M9 14.5C9 15.33 8.33 16 7.5 16S6 15.33 6 14.5 6.67 13 7.5 13 9 13.67 9 14.5M16.5 13C15.67 13 15 13.67 15 14.5S15.67 16 16.5 16C17.33 16 18 15.33 18 14.5S17.33 13 16.5 13M21.59 9.19C21.14 8.87 20.5 8.97 20.19 9.41L20.06 9.59C19.88 9.85 19.57 10 19.26 10L4.74 10C4.43 10 4.13 9.85 3.94 9.59L3.81 9.41C3.5 8.97 2.86 8.87 2.41 9.19C1.96 9.5 1.87 10.15 2.19 10.59L2.32 10.77C2.88 11.54 3.79 12 4.74 12H19.26C20.21 12 21.12 11.54 21.68 10.77L21.81 10.59C22.13 10.15 22.04 9.5 21.59 9.19Z"; +var mdiSkewLess = "M17.5,11L15.41,20H10.5L12.59,11H17.5M20,9H11L8,22H17L20,9M4,6L8,2V5H16V7H8V10L4,6Z"; +var mdiSkewMore = "M12.5,11L10.41,20H5.5L7.59,11H12.5M15,9H6L3,22H12L15,9M21,6L17,2V5H9V7H17V10L21,6Z"; +var mdiSki = "M15.3 18.3L17 12.9L18.4 13.3L16.7 18.7L15.3 18.3M17.3 5.2C18.2 5.2 19 4.4 19 3.5S18.3 1.8 17.3 1.8C16.4 1.8 15.6 2.6 15.6 3.5S16.4 5.2 17.3 5.2M21.3 19.8C20.7 20.1 20.1 20.4 19.4 20.5C18.7 20.6 18 20.6 17.3 20.4L11 18.5L13.4 11.7L10.9 8.7L13.8 7.1C13.8 7.1 14.9 10 15 10.3S15.3 10.8 15.6 10.9L19.7 12.1L20.2 10.3L19.3 9.9L19.9 7.8L18.5 7.4L18 9.4L16.8 8.9L15.4 5C15 4.2 14 3.8 13.1 4.2L8.5 6.7C7.6 7.2 7.3 8.3 7.8 9.1C7.9 9.3 10.8 12.3 10.8 12.3L9.1 18L2.3 16L2 17.3L16.9 21.7C18.6 22.2 20.4 22 22 21.1L21.3 19.8Z"; +var mdiSkiCrossCountry = "M15 1.2C16 1.2 16.8 2 16.8 3S16 4.8 15 4.8 13.2 4 13.2 3 14 1.2 15 1.2M11 23V21.7H9.3L11.7 14.9L14 18V21.7H13V23H20V21.7H15.8V16.5L13.3 12L14 9.2L15.1 11H20V9.1H16.4L14.4 5.8C14.1 5.3 13.5 5 12.9 5C12.7 5 12.6 5.1 12.4 5.1L7 6.8V12H8.8V8.3L11 7.7L7.4 21.7H4V23"; +var mdiSkiWater = "M4.2 3.5C4.2 2.7 4.9 1.9 5.8 1.9C6.7 1.9 7.4 2.6 7.4 3.5S6.6 5 5.8 5 4.2 4.3 4.2 3.5M22 3.9L21.5 3L13.5 7.1L14 8L22 3.9M20.8 20.3L21.7 21.2C21.1 21.8 20.5 22.2 19.8 22.5S18.3 23 17.5 23H2V21.7H4.7L6.8 18.2L4.5 15L3.7 7.2C3.7 6.3 4.5 5.5 5.4 5.5C5.7 5.5 6 5.6 6.2 5.7L9.7 8.3L12 7.5L12.8 9.1L9.3 10.6C9.2 10.5 7.7 9.4 6.6 8.5L7 12L12.3 16.5L14 21.7H17.5C18.1 21.7 18.7 21.6 19.3 21.3C19.9 21.1 20.4 20.7 20.8 20.3M7 21.7H12L10.4 17.8L8.1 15.9L9.3 18.4L7 21.7Z"; +var mdiSkipBackward = "M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12"; +var mdiSkipBackwardOutline = "M18,14.17L15.83,12L18,9.83V14.17M20,19V5L13,12M4,19H6V5H4M11,14.17L8.83,12L11,9.83V14.17M13,19V5L6,12"; +var mdiSkipForward = "M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12"; +var mdiSkipForwardOutline = "M6,9.83L8.17,12L6,14.17V9.83M4,5V19L11,12M20,5H18V19H20M13,9.83L15.17,12L13,14.17V9.83M11,5V19L18,12"; +var mdiSkipNext = "M16,18H18V6H16M6,18L14.5,12L6,6V18Z"; +var mdiSkipNextCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14"; +var mdiSkipNextCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8"; +var mdiSkipNextOutline = "M6,18L14.5,12L6,6M8,9.86L11.03,12L8,14.14M16,6H18V18H16"; +var mdiSkipPrevious = "M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z"; +var mdiSkipPreviousCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12"; +var mdiSkipPreviousCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8"; +var mdiSkipPreviousOutline = "M6,6H8V18H6M9.5,12L18,18V6M16,14.14L12.97,12L16,9.86V14.14Z"; +var mdiSkull = "M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z"; +var mdiSkullCrossbones = "M15.8,18.5L21.8,20.1L21.4,22L12,19.5L2.6,22L2.1,20.1L8.1,18.5L2,16.9L2.5,15L11.9,17.5L21.3,15L21.8,16.9L15.8,18.5M18,8C18,9.8 17.2,11.3 16,12.4V15H14V13.7L14,13H13V15H11V13H10V13.7L10,15H8V12.4C6.8,11.3 6,9.8 6,8A6,6 0 0,1 12,2A6,6 0 0,1 18,8M11,7.5C11,6.7 10.3,6 9.5,6C8.7,6 8,6.7 8,7.5C8,8.3 8.7,9 9.5,9C10.3,9 11,8.3 11,7.5M13,11L12,9L11,11H13M16,7.5C16,6.7 15.3,6 14.5,6C13.7,6 13,6.7 13,7.5C13,8.3 13.7,9 14.5,9C15.3,9 16,8.3 16,7.5Z"; +var mdiSkullCrossbonesOutline = "M15.8,18.5L21.8,20.1L21.4,22L12,19.5L2.6,22L2.1,20.1L8.1,18.5L2,16.9L2.5,15L11.9,17.5L21.3,15L21.8,16.9L15.8,18.5M9.5,6C8.7,6 8,6.7 8,7.5C8,8.3 8.7,9 9.5,9C10.3,9 11,8.3 11,7.5C11,6.7 10.3,6 9.5,6M14.5,6C13.7,6 13,6.7 13,7.5C13,8.3 13.7,9 14.5,9C15.3,9 16,8.3 16,7.5C16,6.7 15.3,6 14.5,6M13,11L12,9L11,11H13M12,1C8.1,1 5,4.1 5,8C5,9.9 5.8,11.6 7,12.9V16H17V12.9C18.2,11.6 19,9.9 19,8C19,4.1 15.9,1 12,1M15,12V14H14V12H13V14H11V12H10V14H9V12H9C7.8,11.1 7,9.7 7,8C7,5.2 9.2,3 12,3C14.8,3 17,5.2 17,8C17,9.6 16.2,11.1 15,12Z"; +var mdiSkullOutline = "M8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15M10.5,17L12,14L13.5,17H10.5M16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15M22,11A10,10 0 0,0 12,1A10,10 0 0,0 2,11C2,13.8 3.2,16.3 5,18.1V22H19V18.1C20.8,16.3 22,13.8 22,11M17,20H15V18H13V20H11V18H9V20H7V17.2C5.2,15.7 4,13.5 4,11A8,8 0 0,1 12,3A8,8 0 0,1 20,11C20,13.5 18.8,15.8 17,17.2V20Z"; +var mdiSkullScan = "M2 0C.9 0 0 .9 0 2V6H2V2H6V0H2M18 0V2H22V6H24V2C24 .9 23.1 0 22 0H18M12 3C7.6 3 4 6.6 4 11C4 13.5 5.2 15.8 7 17.2V21H9V18H11V21H13V18H15V21H17V17.2C18.8 15.7 20 13.5 20 11C20 6.6 16.4 3 12 3M8 14C6.9 14 6 13.1 6 12S6.9 10 8 10 10 10.9 10 12 9.1 14 8 14M10.5 16L12 13L13.5 16H10.5M16 14C14.9 14 14 13.1 14 12S14.9 10 16 10 18 10.9 18 12 17.1 14 16 14M0 18V22C0 23.1 .9 24 2 24H6V22H2V18H0M22 18V22H18V24H22C23.1 24 24 23.1 24 22V18H22Z"; +var mdiSkullScanOutline = "M2 0C.9 0 0 .9 0 2V6H2V2H6V0H2M18 0V2H22V6H24V2C24 .9 23.1 0 22 0H18M9.5 13C8.7 13 8 12.3 8 11.5S8.7 10 9.5 10 11 10.7 11 11.5 10.3 13 9.5 13M11 15L12 13L13 15H11M14.5 13C13.7 13 13 12.3 13 11.5S13.7 10 14.5 10 16 10.7 16 11.5 15.3 13 14.5 13M0 18V22C0 23.1 .9 24 2 24H6V22H2V18H0M22 18V22H18V24H22C23.1 24 24 23.1 24 22V18H22M12 3C7.6 3 4 6.6 4 11C4 13 4.8 14.9 6 16.3V21H18V16.3C19.2 14.9 20 13.1 20 11C20 6.6 16.4 3 12 3M16 15.4V19H14V17H13V19H11V17H10V19H8V15.4C6.8 14.3 6 12.7 6 11C6 7.7 8.7 5 12 5S18 7.7 18 11C18 12.8 17.2 14.3 16 15.4Z"; +var mdiSkype = "M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z"; +var mdiSkypeBusiness = "M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z"; +var mdiSlack = "M6,15A2,2 0 0,1 4,17A2,2 0 0,1 2,15A2,2 0 0,1 4,13H6V15M7,15A2,2 0 0,1 9,13A2,2 0 0,1 11,15V20A2,2 0 0,1 9,22A2,2 0 0,1 7,20V15M9,7A2,2 0 0,1 7,5A2,2 0 0,1 9,3A2,2 0 0,1 11,5V7H9M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12H4A2,2 0 0,1 2,10A2,2 0 0,1 4,8H9M17,10A2,2 0 0,1 19,8A2,2 0 0,1 21,10A2,2 0 0,1 19,12H17V10M16,10A2,2 0 0,1 14,12A2,2 0 0,1 12,10V5A2,2 0 0,1 14,3A2,2 0 0,1 16,5V10M14,18A2,2 0 0,1 16,20A2,2 0 0,1 14,22A2,2 0 0,1 12,20V18H14M14,17A2,2 0 0,1 12,15A2,2 0 0,1 14,13H19A2,2 0 0,1 21,15A2,2 0 0,1 19,17H14Z"; +var mdiSlashForward = "M7 21L14.9 3H17L9.1 21H7Z"; +var mdiSlashForwardBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.3 19H7L14.7 5H17L9.3 19Z"; +var mdiSleep = "M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z"; +var mdiSleepOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z"; +var mdiSlide = "M14.83 15.45C14.47 14.9 14.18 14.39 13.91 13.92C12.74 11.91 11.79 10.55 9 10.13V5.5C9 3.57 7.43 2 5.5 2S2 3.57 2 5.5V22H4V20H7V22H9V12.16C10.76 12.5 11.29 13.39 12.17 14.92C12.46 15.43 12.78 15.97 13.17 16.56C15.41 19.92 17.67 22 22 22V20C18.53 20 16.8 18.4 14.83 15.45M5.5 4C6.33 4 7 4.67 7 5.5V10H4V5.5C4 4.67 4.67 4 5.5 4M4 18V16H7V18H4M7 14H4V12H7V14Z"; +var mdiSlopeDownhill = "M22,19V22H2V13L22,19M19.09,7.5L18.25,10.26L8.13,7.26C8.06,5.66 6.7,4.42 5.1,4.5C3.5,4.57 2.26,5.93 2.34,7.53C2.41,9.13 3.77,10.36 5.37,10.29C6.24,10.25 7.05,9.82 7.57,9.11L17.69,12.11L16.85,14.89L21.67,12.29L19.09,7.5Z"; +var mdiSlopeUphill = "M22,13V22H2V19L22,13M21.68,7.06L16.86,4.46L17.7,7.24L7.58,10.24C6.63,8.95 4.82,8.67 3.53,9.62C2.24,10.57 1.96,12.38 2.91,13.67C3.85,14.97 5.67,15.24 6.96,14.29C7.67,13.78 8.1,12.97 8.14,12.09L18.26,9.09L19.1,11.87L21.68,7.06Z"; +var mdiSlotMachine = "M5 12L7 8V7H4V8H6L4 12M9 12L11 8V7H8V8H10L8 12M13 12L15 8V7H12V8H14L12 12M21 2C19.9 2 19 2.9 19 4C19 4.7 19.4 5.4 20 5.7V17H17V15C17.6 15 18 14.6 18 14V5C18 4.4 17.6 4 17 4H13.2C12.4 2.8 11 2 9.5 2S6.6 2.8 5.8 4H2C1.4 4 1 4.4 1 5V14C1 14.6 1.4 15 2 15V22H17V19H20C21.1 19 22 18.1 22 17V5.7C22.6 5.4 23 4.7 23 4C23 2.9 22.1 2 21 2M13 19H6V17H13V19M16 13H3V6H16V13Z"; +var mdiSlotMachineOutline = "M5 12L7 8V7H4V8H6L4 12M9 12L11 8V7H8V8H10L8 12M13 12L15 8V7H12V8H14L12 12M21 2C19.9 2 19 2.9 19 4C19 4.7 19.4 5.4 20 5.7V17H17V15C17.6 15 18 14.6 18 14V5C18 4.4 17.6 4 17 4H13.2C12.4 2.8 11 2 9.5 2S6.6 2.8 5.8 4H2C1.4 4 1 4.4 1 5V14C1 14.6 1.4 15 2 15V22H17V19H20C21.1 19 22 18.1 22 17V5.7C22.6 5.4 23 4.7 23 4C23 2.9 22.1 2 21 2M3 6H16V13H3V6M15 20H4V15H15V20M13 19H6V17H13V19Z"; +var mdiSmartCard = "M2 3H22A2.07 2.07 0 0 1 24 5V19A2.07 2.07 0 0 1 22 21H2A2.07 2.07 0 0 1 0 19V5A2.07 2.07 0 0 1 2 3M8 13.91C6 13.91 2 15 2 17V18H14V17C14 15 10 13.91 8 13.91M8 6A3 3 0 1 0 11 9A3 3 0 0 0 8 6M17 10V13H21V10H17"; +var mdiSmartCardOutline = "M22 3H2A2.07 2.07 0 0 0 0 5V19A2.07 2.07 0 0 0 2 21H22A2.07 2.07 0 0 0 24 19V5A2.07 2.07 0 0 0 22 3M22 19H2V5H22M14 17V15.75C14 14.09 10.66 13.25 9 13.25S4 14.09 4 15.75V17H14M9 7A2.5 2.5 0 1 0 11.5 9.5A2.5 2.5 0 0 0 9 7M15 10V13H19V10H15"; +var mdiSmartCardReader = "M21 4A2.07 2.07 0 0 0 19 2H5A2.07 2.07 0 0 0 3 4V18H21M8.25 16H7V6H8.25C9.91 6 10.75 9.34 10.75 11S9.91 16 8.25 16M14.5 13.5A2.5 2.5 0 1 1 17 11A2.5 2.5 0 0 1 14.5 13.5M23 21V22H1V21A2 2 0 0 1 3 19H21A2 2 0 0 1 23 21Z"; +var mdiSmartCardReaderOutline = "M14.5 8.5A2.5 2.5 0 1 0 17 11A2.5 2.5 0 0 0 14.5 8.5M8.25 6H7V16H8.25C9.91 16 10.75 12.66 10.75 11S9.91 6 8.25 6M19 2H5A2.07 2.07 0 0 0 3 4V18H5V4H19V18H21V4A2.07 2.07 0 0 0 19 2M23 22H1V21A2 2 0 0 1 3 19H21A2 2 0 0 1 23 21Z"; +var mdiSmog = "M12,2C10.08,2 8.5,3.35 8.09,5.15C7.45,4.44 6.53,4 5.5,4A3.5,3.5 0 0,0 2,7.5H2A3.5,3.5 0 0,0 5.5,11H6.68V12H10.72V11H13.28V12H17.32V11H18.5A3.5,3.5 0 0,0 22,7.5H22A3.5,3.5 0 0,0 18.5,4H18.5C17.47,4 16.55,4.44 15.91,5.15C15.5,3.35 13.92,2 12,2M7.2,14L6.4,22H11L10.2,14H7.2M13.8,14L13,22H17.6L16.8,14H13.8Z"; +var mdiSmokeDetector = "M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z"; +var mdiSmoking = "M2,16H17V19H2V16M20.5,16H22V19H20.5V16M18,16H19.5V19H18V16M18.85,7.73C19.47,7.12 19.85,6.28 19.85,5.35C19.85,3.5 18.35,2 16.5,2V3.5C17.5,3.5 18.35,4.33 18.35,5.35C18.35,6.37 17.5,7.2 16.5,7.2V8.7C18.74,8.7 20.5,10.53 20.5,12.77V15H22V12.76C22,10.54 20.72,8.62 18.85,7.73M16.03,10.2H14.5C13.5,10.2 12.65,9.22 12.65,8.2C12.65,7.18 13.5,6.45 14.5,6.45V4.95C12.65,4.95 11.15,6.45 11.15,8.3A3.35,3.35 0 0,0 14.5,11.65H16.03C17.08,11.65 18,12.39 18,13.7V15H19.5V13.36C19.5,11.55 17.9,10.2 16.03,10.2Z"; +var mdiSmokingOff = "M2,6L9,13H2V16H12L19,23L20.25,21.75L3.25,4.75L2,6M20.5,13H22V16H20.5V13M18,13H19.5V16H18V13M18.85,4.88C19.47,4.27 19.85,3.43 19.85,2.5H18.35C18.35,3.5 17.5,4.35 16.5,4.35V5.85C18.74,5.85 20.5,7.68 20.5,9.92V12H22V9.92C22,7.69 20.72,5.77 18.85,4.88M14.5,8.7H16.03C17.08,8.7 18,9.44 18,10.75V12H19.5V10.41C19.5,8.61 17.9,7.25 16.03,7.25H14.5C13.5,7.25 12.65,6.27 12.65,5.25C12.65,4.23 13.5,3.5 14.5,3.5V2A3.35,3.35 0 0,0 11.15,5.35A3.35,3.35 0 0,0 14.5,8.7M17,15.93V13H14.07L17,15.93Z"; +var mdiSmokingPipe = "M16 13C14.89 13 14 13.89 14 15V18H13C12 18 11 17.92 10.3 17.23L6.53 13.47C5.6 12.53 4.33 12 3 12H2V14H3C3.8 14 4.56 14.32 5.12 14.88L8.89 18.65C11.72 21.5 13 22 16 22H18C20.21 22 22 20.21 22 18V15C22 13.89 21.11 13 20 13H16M14 7.2H12.5C11.45 7.12 10.65 6.25 10.65 5.2C10.67 4.22 11.5 3.43 12.46 3.45L12.5 3.45V2C10.65 2 9.15 3.5 9.15 5.35S10.65 8.7 12.5 8.7H14C15.07 8.66 15.96 9.5 16 10.56C16 10.61 16 10.65 16 10.7V12H17.5V10.36C17.42 8.53 15.88 7.12 14.05 7.2L14 7.2M20 9.76V12H18.5V9.77L18.5 9.7C18.5 7.5 16.71 5.7 14.5 5.7V4.2H14.5C15.5 4.2 16.35 3.37 16.35 2.35C16.35 2.23 16.34 2.11 16.32 2H17.79C17.89 3 17.58 4 16.82 4.73H16.85C18.78 5.66 20 7.62 20 9.76Z"; +var mdiSmokingPipeOff = "M20.84 22.73L19.71 21.6C19.19 21.85 18.62 22 18 22H16C13 22 11.72 21.5 8.89 18.65L5.12 14.88C4.56 14.32 3.8 14 3 14H2V12H3C4.33 12 5.6 12.53 6.53 13.47L10.3 17.23C11 17.92 12 18 13 18H14V15.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21.93 18.73C21.97 18.5 22 18.25 22 18V15C22 13.89 21.11 13 20 13H16.2L21.93 18.73M18.5 9.7L18.5 9.77V12H20V9.76C20 7.62 18.78 5.66 16.85 4.73H16.82C17.58 4 17.9 3 17.8 2H16.32C16.34 2.11 16.35 2.23 16.35 2.35C16.35 3.37 15.5 4.2 14.5 4.2H14.5V5.7C16.71 5.7 18.5 7.5 18.5 9.7M11.83 8.63C12.05 8.68 12.27 8.7 12.5 8.7H14C15.07 8.66 15.96 9.5 16 10.56C16 10.61 16 10.65 16 10.7V12H17.5V10.36C17.42 8.53 15.88 7.12 14.05 7.2L14 7.2H12.5C11.45 7.12 10.65 6.25 10.65 5.2C10.67 4.22 11.5 3.43 12.46 3.45L12.5 3.45V2C10.65 2 9.15 3.5 9.15 5.35C9.15 5.58 9.17 5.8 9.22 6L11.83 8.63Z"; +var mdiSnail = "M20.31 8.03L21.24 4.95C21.67 4.85 22 4.47 22 4C22 3.45 21.55 3 21 3S20 3.45 20 4C20 4.26 20.11 4.5 20.27 4.68L19.5 7.26L18.73 4.68C18.89 4.5 19 4.26 19 4C19 3.45 18.55 3 18 3S17 3.45 17 4C17 4.47 17.33 4.85 17.76 4.95L18.69 8.03C17.73 8.18 17 9 17 10V12.25C15.65 9.16 12.63 7 9.11 7C5.19 7 2 10.26 2 14.26C2 16.1 2.82 17.75 4.1 18.85L2.88 19C2.38 19.06 2 19.5 2 20C2 20.55 2.45 21 3 21L19.12 21C20.16 21 21 20.16 21 19.12V11.72C21.6 11.38 22 10.74 22 10C22 9 21.27 8.18 20.31 8.03M15.6 17.41L12.07 17.86C12.5 17.1 12.8 16.21 12.8 15.26C12.8 12.94 10.95 11.06 8.67 11.06C8.14 11.06 7.62 11.18 7.14 11.41C6.65 11.66 6.44 12.26 6.69 12.75C6.93 13.25 7.53 13.45 8.03 13.21C8.23 13.11 8.45 13.06 8.67 13.06C9.85 13.06 10.8 14.04 10.8 15.26C10.8 16.92 9.5 18.27 7.89 18.27C5.75 18.27 4 16.47 4 14.26C4 11.36 6.29 9 9.11 9C12.77 9 15.75 12.06 15.75 15.82C15.75 16.36 15.69 16.89 15.6 17.41Z"; +var mdiSnake = "M19.5 17H18C19.1 17 20 16.1 20 15S19.1 13 18 13V9C18 8 18 7 16.92 6.14C16.97 5.93 17 5.72 17 5.5C17 3.57 15 2 12.5 2C10.24 2 8.38 3.31 8.07 5H6L3.71 2.79L3 3.5L5 5.5L3 7.5L3.71 8.21L6 6H8.07C8.38 7.69 10.24 9 12.5 9C13 9 13.5 8.92 13.93 8.8C13.97 8.87 14 8.94 14 9V13H8C6.9 13 6 13.9 6 15S6.9 17 8 17H6.5C5.12 17 4 18.12 4 19.5C4 19.67 4 19.84 4.05 20H4C2.9 20 2 20.9 2 22H19.5C20.88 22 22 20.88 22 19.5S20.88 17 19.5 17M12 5C11.45 5 11 4.55 11 4S11.45 3 12 3 13 3.45 13 4 12.55 5 12 5Z"; +var mdiSnapchat = "M21.93 16.56C21.79 16.18 21.5 16 21.22 15.81C21.17 15.78 21.11 15.75 21.07 15.73C21 15.68 20.89 15.64 20.8 15.59C19.86 15.09 19.12 14.46 18.61 13.72C18.47 13.5 18.35 13.29 18.24 13.06C18.2 12.93 18.2 12.86 18.23 12.8C18.26 12.75 18.3 12.7 18.35 12.67C18.5 12.56 18.68 12.46 18.79 12.38C19 12.25 19.15 12.15 19.25 12.08C19.64 11.81 19.91 11.5 20.08 11.2C20.32 10.75 20.35 10.22 20.16 9.75C19.91 9.08 19.27 8.66 18.5 8.66C18.34 8.66 18.18 8.68 18 8.71C18 8.72 17.94 8.73 17.9 8.74C17.9 8.28 17.89 7.8 17.85 7.32C17.71 5.64 17.12 4.76 16.5 4.06C16.11 3.62 15.65 3.24 15.14 2.95C14.21 2.42 13.15 2.15 12 2.15S9.8 2.42 8.87 2.95C8.35 3.24 7.89 3.62 7.5 4.06C6.88 4.76 6.3 5.64 6.15 7.32C6.11 7.8 6.1 8.28 6.11 8.74C6.06 8.73 6 8.72 6 8.71C5.82 8.68 5.66 8.66 5.5 8.66C4.73 8.66 4.09 9.08 3.84 9.75C3.65 10.22 3.68 10.75 3.92 11.2C4.09 11.5 4.36 11.81 4.75 12.08C4.85 12.15 5 12.25 5.21 12.39L5.63 12.66C5.69 12.7 5.73 12.75 5.77 12.8C5.8 12.87 5.8 12.94 5.75 13.07C5.65 13.3 5.53 13.5 5.39 13.72C4.89 14.45 4.18 15.07 3.27 15.56C2.78 15.82 2.28 16 2.07 16.56C1.91 17 2 17.5 2.42 17.91C2.57 18.06 2.74 18.19 2.93 18.29C3.33 18.5 3.75 18.68 4.18 18.79C4.27 18.82 4.36 18.85 4.43 18.91C4.58 19.03 4.56 19.23 4.76 19.5C4.86 19.66 5 19.79 5.13 19.89C5.54 20.18 6 20.19 6.5 20.21C6.94 20.23 7.44 20.25 8 20.44C8.26 20.5 8.5 20.67 8.79 20.85C9.5 21.27 10.42 21.85 12 21.85C13.57 21.85 14.5 21.27 15.22 20.84C15.5 20.67 15.75 20.5 16 20.44C16.55 20.25 17.06 20.23 17.5 20.21C18 20.2 18.46 20.18 18.87 19.89C19.04 19.77 19.18 19.61 19.29 19.43C19.43 19.19 19.43 19 19.56 18.91C19.63 18.86 19.71 18.82 19.8 18.8C20.24 18.68 20.66 18.5 21.06 18.29C21.27 18.18 21.45 18.04 21.6 17.87L21.61 17.87C22 17.46 22.08 17 21.93 16.56M20.53 17.31C19.67 17.78 19.1 17.73 18.66 18C18.5 18.12 18.45 18.28 18.42 18.44C18.41 18.5 18.4 18.58 18.39 18.64C18.37 18.78 18.34 18.9 18.24 18.97C17.9 19.2 16.91 18.95 15.63 19.37C14.57 19.72 13.9 20.73 12 20.73C10.1 20.73 9.45 19.73 8.37 19.37C7.1 18.95 6.1 19.2 5.77 18.97C5.5 18.78 5.72 18.26 5.34 18C4.9 17.73 4.33 17.78 3.5 17.31C3.19 17.15 3.14 17 3.18 16.93C3.22 16.84 3.34 16.77 3.42 16.73C5.07 15.94 6 14.91 6.47 14.1C6.91 13.38 7 12.83 7.03 12.75C7.06 12.54 7.09 12.38 6.86 12.17C6.64 11.96 5.66 11.36 5.39 11.17C4.93 10.85 4.74 10.54 4.88 10.15L4.88 10.15V10.15C5 9.88 5.23 9.78 5.5 9.78C5.58 9.78 5.66 9.79 5.74 9.81C6.24 9.91 6.72 10.16 7 10.23C7.03 10.24 7.06 10.24 7.1 10.24C7.19 10.24 7.24 10.21 7.27 10.15C7.28 10.11 7.29 10.06 7.29 10C7.25 9.46 7.18 8.41 7.26 7.42C7.3 7 7.37 6.64 7.46 6.33C7.66 5.65 8 5.2 8.34 4.79C8.59 4.5 9.75 3.27 12 3.27C13.85 3.27 14.96 4.11 15.44 4.56C15.54 4.66 15.62 4.74 15.66 4.79C16.04 5.23 16.38 5.71 16.58 6.47C16.65 6.74 16.71 7.06 16.74 7.42C16.82 8.4 16.75 9.46 16.71 10C16.71 10.04 16.71 10.08 16.72 10.11C16.73 10.2 16.79 10.24 16.9 10.24C16.94 10.24 16.97 10.24 17 10.23C17.28 10.16 17.76 9.91 18.26 9.8C18.34 9.79 18.42 9.78 18.5 9.78C18.75 9.78 19 9.87 19.1 10.1L19.11 10.14L19.12 10.14L19.12 10.15C19.27 10.53 19.07 10.85 18.62 11.16C18.35 11.35 17.36 11.96 17.14 12.16C16.91 12.38 16.94 12.54 16.97 12.75C17 12.85 17.18 13.8 18.08 14.86C18.63 15.5 19.42 16.17 20.58 16.73C20.65 16.76 20.74 16.81 20.79 16.87C20.82 16.92 20.84 16.96 20.83 17C20.82 17.1 20.73 17.2 20.53 17.31Z"; +var mdiSnowboard = "M15.4 5.4C15.4 4.3 16.3 3.4 17.4 3.4C18.5 3.4 19.4 4.3 19.4 5.4C19.4 6.5 18.5 7.4 17.4 7.4C16.3 7.4 15.4 6.5 15.4 5.4M22 19.2C21.4 19.8 20.8 20.2 20.1 20.5C19.4 20.8 18.6 21 17.8 21H6.2C5.4 21 4.6 20.8 3.9 20.5C3.2 20.2 2.6 19.8 2 19.2L2.9 18.3C3.3 18.7 3.8 19.1 4.4 19.3C4.9 19.6 5.4 19.7 5.9 19.7L9.7 16L8.5 12.5C8.3 11.9 8.6 11.4 9.1 11L11 9H6V7H14C14.5 7 14.7 7.1 15 7.3L17.3 9.5C18.3 10.5 19.5 11 20.9 11L21 13.1C19.1 13.1 17.4 12.4 15.9 11L15.2 10.3L12.9 12.7L15 15V19.7H17.8C18.4 19.7 19 19.6 19.6 19.3C20.2 19.1 20.7 18.7 21.1 18.3L22 19.2M8.8 19.7H13V15.8L11.7 14.6V16.8L8.8 19.7Z"; +var mdiSnowflake = "M20.79,13.95L18.46,14.57L16.46,13.44V10.56L18.46,9.43L20.79,10.05L21.31,8.12L19.54,7.65L20,5.88L18.07,5.36L17.45,7.69L15.45,8.82L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L15.5,15.17L17.5,16.3L18.12,18.63L20,18.12L19.53,16.35L21.3,15.88L20.79,13.95M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44V10.56Z"; +var mdiSnowflakeAlert = "M16.46,9.41L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L16.46,14.61M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44M19,13V7H21V13H19M19,17V15H21V17H19Z"; +var mdiSnowflakeMelt = "M8 17.85C8 19.04 7.11 20 6 20S4 19.04 4 17.85C4 16.42 6 14 6 14S8 16.42 8 17.85M16.46 12V10.56L18.46 9.43L20.79 10.05L21.31 8.12L19.54 7.65L20 5.88L18.07 5.36L17.45 7.69L15.45 8.82L13 7.38V5.12L14.71 3.41L13.29 2L12 3.29L10.71 2L9.29 3.41L11 5.12V7.38L8.5 8.82L6.5 7.69L5.92 5.36L4 5.88L4.47 7.65L2.7 8.12L3.22 10.05L5.55 9.43L7.55 10.56V12H2V13H22V12H16.46M9.5 12V10.56L12 9.11L14.5 10.56V12H9.5M20 17.85C20 19.04 19.11 20 18 20S16 19.04 16 17.85C16 16.42 18 14 18 14S20 16.42 20 17.85M14 20.85C14 22.04 13.11 23 12 23S10 22.04 10 20.85C10 19.42 12 17 12 17S14 19.42 14 20.85Z"; +var mdiSnowflakeOff = "M11 5.12L9.29 3.41L10.71 2L12 3.29L13.29 2L14.71 3.41L13 5.12V7.38L15.45 8.82L17.45 7.69L18.07 5.36L20 5.88L19.54 7.65L21.31 8.12L20.79 10.05L18.46 9.43L16.46 10.56V13.26L14.5 11.3V10.56L12.74 9.54L10.73 7.53L11 7.38V5.12M18.46 14.57L16.87 13.67L19.55 16.35L21.3 15.88L20.79 13.95L18.46 14.57M13 16.62V18.88L14.7 20.59L13.29 22L12 20.71L10.71 22L9.29 20.59L11 18.88V16.62L8.55 15.18L6.55 16.31L5.93 18.64L4 18.12L4.47 16.36L2.7 15.89L3.22 13.96L5.55 14.58L7.55 13.45V10.56L5.55 9.43L3.22 10.05L2.7 8.12L4.47 7.65L4 5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73L14.1 16L13 16.62M12 14.89L12.63 14.5L9.5 11.39V13.44L12 14.89Z"; +var mdiSnowflakeVariant = "M14.25,12L16.27,11H23L22,9H18.03L20.42,5.83L19.43,3.83L15.37,9.2L13.35,10.21L13.75,8L17.83,2.62L15.64,2.22L12,7L8.4,2.2L6.2,2.6L10.26,8L10.66,10.21L8.82,9.29L8.66,9.21L4.6,3.8L3.6,5.8L6,9H2L1,11H7.77L9.75,12L7.73,13H1L2,15H5.97L3.58,18.17L4.57,20.17L8.63,14.8L10.65,13.79L10.25,16L6.17,21.38L8.36,21.79L12,17L15.6,21.8L17.8,21.4L13.74,16L13.34,13.79L15.34,14.79L19.4,20.2L20.4,18.2L18,15H22L23,13H16.23"; +var mdiSnowman = "M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z"; +var mdiSoccer = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z"; +var mdiSoccerField = "M4,4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4H4M4,6H11V8.13C9.24,8.59 8,10.18 8,12C8,13.82 9.24,15.41 11,15.87V18H4V16H7V8H4V6M13,6H20V8H17V16H20V18H13V15.87C14.76,15.41 16,13.82 16,12C16,10.18 14.76,8.59 13,8.13V6M4,10H5V14H4V10M19,10H20V14H19V10M13,10.27C13.62,10.63 14,11.29 14,12C14,12.71 13.62,13.37 13,13.73V10.27M11,10.27V13.73C10.38,13.37 10,12.71 10,12C10,11.29 10.38,10.63 11,10.27Z"; +var mdiSocialDistance2Meters = "M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M10 9.43C10 8.62 9.5 7.9 8.78 7.58C7.93 7.21 7 7 6 7S4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H10V9.43M18 6C19.1 6 20 5.1 20 4S19.1 2 18 2 16 2.9 16 4 16.9 6 18 6M22 9.43C22 8.62 21.5 7.9 20.78 7.58C19.93 7.21 19 7 18 7S16.07 7.21 15.22 7.58C14.5 7.9 14 8.62 14 9.43V10H22V9.43M19 17V15L5 15V17L2 14L5 11V13L19 13V11L22 14L19 17M9 20.5V21H11V22H8V20.5C8 19.95 8.45 19.5 9 19.5H10V19H8V18H10C10.55 18 11 18.45 11 19V19.5C11 20.05 10.55 20.5 10 20.5H9M16 19V22H15V19H14.5V21H13.5V19H13V22H12V19C12 18.45 12.45 18 13 18H15C15.55 18 16 18.45 16 19Z"; +var mdiSocialDistance6Feet = "M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M10 9.43C10 8.62 9.5 7.9 8.78 7.58C7.93 7.21 7 7 6 7S4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H10V9.43M18 6C19.1 6 20 5.1 20 4S19.1 2 18 2 16 2.9 16 4 16.9 6 18 6M22 9.43C22 8.62 21.5 7.9 20.78 7.58C19.93 7.21 19 7 18 7S16.07 7.21 15.22 7.58C14.5 7.9 14 8.62 14 9.43V10H22V9.43M19 17V15H5V17L2 14L5 11V13H19V11L22 14L19 17M10 19V18H7.5C7.22 18 7 18.22 7 18.5V21.5C7 21.78 7.22 22 7.5 22H9.5C9.78 22 10 21.78 10 21.5V20C10 19.72 9.78 19.5 9.5 19.5H8V19H10M9 20.5V21H8V20.5H9M17.5 19H16.5V22H15.5V19H14.5V18H17.5V19M12.5 19V19.5H13.5V20.5H12.5V22H11.5V18H14V19H12.5Z"; +var mdiSofa = "M12.5 7C12.5 5.89 13.39 5 14.5 5H18C19.1 5 20 5.9 20 7V9.16C18.84 9.57 18 10.67 18 11.97V14H12.5V7M6 11.96V14H11.5V7C11.5 5.89 10.61 5 9.5 5H6C4.9 5 4 5.9 4 7V9.15C5.16 9.56 6 10.67 6 11.96M20.66 10.03C19.68 10.19 19 11.12 19 12.12V15H5V12C5 10.9 4.11 10 3 10S1 10.9 1 12V17C1 18.1 1.9 19 3 19V21H5V19H19V21H21V19C22.1 19 23 18.1 23 17V12C23 10.79 21.91 9.82 20.66 10.03Z"; +var mdiSofaOutline = "M21 9V7C21 5.35 19.65 4 18 4H14C13.23 4 12.53 4.3 12 4.78C11.47 4.3 10.77 4 10 4H6C4.35 4 3 5.35 3 7V9C1.35 9 0 10.35 0 12V17C0 18.65 1.35 20 3 20V22H5V20H19V22H21V20C22.65 20 24 18.65 24 17V12C24 10.35 22.65 9 21 9M14 6H18C18.55 6 19 6.45 19 7V9.78C18.39 10.33 18 11.12 18 12V14H13V7C13 6.45 13.45 6 14 6M5 7C5 6.45 5.45 6 6 6H10C10.55 6 11 6.45 11 7V14H6V12C6 11.12 5.61 10.33 5 9.78V7M22 17C22 17.55 21.55 18 21 18H3C2.45 18 2 17.55 2 17V12C2 11.45 2.45 11 3 11S4 11.45 4 12V16H20V12C20 11.45 20.45 11 21 11S22 11.45 22 12V17Z"; +var mdiSofaSingle = "M5 9.15V7C5 5.9 5.9 5 7 5H17C18.1 5 19 5.9 19 7V9.16C17.84 9.57 17 10.67 17 11.97V14H7V11.96C7 10.67 6.16 9.56 5 9.15M20 10C18.9 10 18 10.9 18 12V15H6V12C6 10.9 5.11 10 4 10S2 10.9 2 12V17C2 18.1 2.9 19 4 19V21H6V19H18V21H20V19C21.1 19 22 18.1 22 17V12C22 10.9 21.1 10 20 10Z"; +var mdiSofaSingleOutline = "M19 9V7C19 5.35 17.65 4 16 4H8C6.35 4 5 5.35 5 7V9C3.35 9 2 10.35 2 12V17C2 18.65 3.35 20 5 20V22H7V20H17V22H19V20C20.65 20 22 18.65 22 17V12C22 10.35 20.65 9 19 9M7 7C7 6.45 7.45 6 8 6H16C16.55 6 17 6.45 17 7V9.78C16.39 10.33 16 11.12 16 12V14H8V12C8 11.12 7.61 10.33 7 9.78V7M20 17C20 17.55 19.55 18 19 18H5C4.45 18 4 17.55 4 17V12C4 11.45 4.45 11 5 11S6 11.45 6 12V16H18V12C18 11.45 18.45 11 19 11S20 11.45 20 12V17Z"; +var mdiSolarPanel = "M4,2H20A2,2 0 0,1 22,4V14A2,2 0 0,1 20,16H15V20H18V22H13V16H11V22H6V20H9V16H4A2,2 0 0,1 2,14V4A2,2 0 0,1 4,2M4,4V8H11V4H4M4,14H11V10H4V14M20,14V10H13V14H20M20,4H13V8H20V4Z"; +var mdiSolarPanelLarge = "M3,6H6V3H3V6M8,3V6H11V3H8M13,3V6H16V3H13M18,3V6H21V3H18M21,8H18V11H21V8M21,13H18V16H21V13M16,16V13H13V16H16M11,16V13H8V16H11M6,16V13H3V16H6M3,11H6V8H3V11M13,8V11H16V8H13M8,8V11H11V8H8M3,1H21A2,2 0 0,1 23,3V16A2,2 0 0,1 21,18H15V21H18V23H13V18H11V23H6V21H9V18H3A2,2 0 0,1 1,16V3A2,2 0 0,1 3,1Z"; +var mdiSolarPower = "M11.45,2V5.55L15,3.77L11.45,2M10.45,8L8,10.46L11.75,11.71L10.45,8M2,11.45L3.77,15L5.55,11.45H2M10,2H2V10C2.57,10.17 3.17,10.25 3.77,10.25C7.35,10.26 10.26,7.35 10.27,3.75C10.26,3.16 10.17,2.57 10,2M17,22V16H14L19,7V13H22L17,22Z"; +var mdiSolderingIron = "M4.86 4.03L2.03 6.86L5.21 10.04V12.87L6.63 14.28L12.28 8.63L10.87 7.21H8.04L4.86 4.03M17 6V7.5C18 7.5 18.85 8.33 18.85 9.35C18.85 10.37 18 11.2 17 11.2V12.7C19.24 12.7 21 14.53 21 16.77V21H22.5V16.76C22.5 14.54 21.22 12.62 19.35 11.73C19.97 11.12 20.35 10.28 20.35 9.35C20.35 7.5 18.85 6 17 6M11.93 11.1L9.1 13.93L14.05 18.88L14.76 18.17L16.88 20.29L19 21L18.29 18.88L16.17 16.76L16.88 16.05L11.93 11.1Z"; +var mdiSolid = "M0,0H24V24H0"; +var mdiSonyPlaystation = "M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z"; +var mdiSort = "M18 21L14 17H17V7H14L18 3L22 7H19V17H22M2 19V17H12V19M2 13V11H9V13M2 7V5H6V7H2Z"; +var mdiSortAlphabeticalAscending = "M19 17H22L18 21L14 17H17V3H19M11 13V15L7.67 19H11V21H5V19L8.33 15H5V13M9 3H7C5.9 3 5 3.9 5 5V11H7V9H9V11H11V5C11 3.9 10.11 3 9 3M9 7H7V5H9Z"; +var mdiSortAlphabeticalAscendingVariant = "M9.25 5L12.5 1.75L15.75 5H9.25M8.89 14.3H6L5.28 17H2.91L6 7H9L12.13 17H9.67L8.89 14.3M6.33 12.68H8.56L7.93 10.56L7.67 9.59L7.42 8.63H7.39L7.17 9.6L6.93 10.58L6.33 12.68M13.05 17V15.74L17.8 8.97V8.91H13.5V7H20.73V8.34L16.09 15V15.08H20.8V17H13.05Z"; +var mdiSortAlphabeticalDescending = "M19 7H22L18 3L14 7H17V21H19M11 13V15L7.67 19H11V21H5V19L8.33 15H5V13M9 3H7C5.9 3 5 3.9 5 5V11H7V9H9V11H11V5C11 3.9 10.11 3 9 3M9 7H7V5H9Z"; +var mdiSortAlphabeticalDescendingVariant = "M15.75 19L12.5 22.25L9.25 19H15.75M8.89 14.3H6L5.28 17H2.91L6 7H9L12.13 17H9.67L8.89 14.3M6.33 12.68H8.56L7.93 10.56L7.67 9.59L7.42 8.63H7.39L7.17 9.6L6.93 10.58L6.33 12.68M13.05 17V15.74L17.8 8.97V8.91H13.5V7H20.73V8.34L16.09 15V15.08H20.8V17H13.05Z"; +var mdiSortAlphabeticalVariant = "M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z"; +var mdiSortAscending = "M19 17H22L18 21L14 17H17V3H19M2 17H12V19H2M6 5V7H2V5M2 11H9V13H2V11Z"; +var mdiSortBoolAscending = "M19 17H22L18 21L14 17H17V3H19V17M7 3C4.79 3 3 4.79 3 7S4.79 11 7 11 11 9.21 11 7 9.21 3 7 3M7 9C5.9 9 5 8.1 5 7S5.9 5 7 5 9 5.9 9 7 8.1 9 7 9M7 13C4.79 13 3 14.79 3 17S4.79 21 7 21 11 19.21 11 17 9.21 13 7 13Z"; +var mdiSortBoolAscendingVariant = "M19 17H22L18 21L14 17H17V3H19V17M9 13H5C3.89 13 3 13.89 3 15V19C3 20.11 3.89 21 5 21H9C10.11 21 11 20.11 11 19V15C11 13.89 10.11 13 9 13M6.27 19.5L3.74 16.95L4.81 15.9L6.28 17.39L9.2 14.5L10.26 15.55L6.27 19.5M9 3H5C3.89 3 3 3.89 3 5V9C3 10.11 3.89 11 5 11H9C10.11 11 11 10.11 11 9V5C11 3.89 10.11 3 9 3M9 9H5V5H9V9Z"; +var mdiSortBoolDescending = "M19 7H22L18 3L14 7H17V21H19M5 7C5 8.1 5.9 9 7 9C8.1 9 9 8.1 9 7C9 5.9 8.1 5 7 5C5.9 5 5 5.9 5 7M7 3C9.21 3 11 4.79 11 7C11 9.21 9.21 11 7 11C4.79 11 3 9.21 3 7C3 4.79 4.79 3 7 3M7 13C4.79 13 3 14.79 3 17C3 19.21 4.79 21 7 21C9.21 21 11 19.21 11 17C11 14.79 9.21 13 7 13Z"; +var mdiSortBoolDescendingVariant = "M19 7H22L18 3L14 7H17V21H19M5 13C3.89 13 3 13.89 3 15V19C3 20.11 3.89 21 5 21H9C10.11 21 11 20.11 11 19V15C11 13.89 10.11 13 9 13M9.2 14.5L10.26 15.55L6.27 19.5L3.74 16.95L4.81 15.9L6.28 17.39M5 3C3.89 3 3 3.89 3 5V9C3 10.11 3.89 11 5 11H9C10.11 11 11 10.11 11 9V5C11 3.89 10.11 3 9 3M5 5H9V9H5Z"; +var mdiSortCalendarAscending = "M21 17H24L20 21L16 17H19V3H21V17M8 16H11V13H8V16M13 5H12V3H10V5H6V3H4V5H3C1.89 5 1 5.89 1 7V18C1 19.11 1.89 20 3 20H13C14.11 20 15 19.11 15 18V7C15 5.89 14.11 5 13 5M3 18L3 11H13L13 18L3 18Z"; +var mdiSortCalendarDescending = "M19 7H16L20 3L24 7H21V21H19V7M8 16H11V13H8V16M13 5H12V3H10V5H6V3H4V5H3C1.89 5 1 5.89 1 7V18C1 19.11 1.89 20 3 20H13C14.11 20 15 19.11 15 18V7C15 5.89 14.11 5 13 5M3 18L3 11H13L13 18L3 18Z"; +var mdiSortClockAscending = "M20 17H23L19 21L15 17H18V3H20V17M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M10.19 14.53L7 12.69V9H8.5V11.82L10.94 13.23L10.19 14.53Z"; +var mdiSortClockAscendingOutline = "M20 17H23L19 21L15 17H18V3H20V17M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M8 7.15C10.67 7.15 12.85 9.32 12.85 12C12.85 14.68 10.68 16.85 8 16.85C5.32 16.85 3.15 14.68 3.15 12C3.15 9.32 5.32 7.15 8 7.15M7 9V12.69L10.19 14.53L10.94 13.23L8.5 11.82V9"; +var mdiSortClockDescending = "M18 7H15L19 3L23 7H20V21H18V7M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M10.19 14.53L7 12.69V9H8.5V11.82L10.94 13.23L10.19 14.53Z"; +var mdiSortClockDescendingOutline = "M18 7H15L19 3L23 7H20V21H18V7M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M8 7.15C10.67 7.15 12.85 9.32 12.85 12C12.85 14.68 10.68 16.85 8 16.85C5.32 16.85 3.15 14.68 3.15 12C3.15 9.32 5.32 7.15 8 7.15M7 9V12.69L10.19 14.53L10.94 13.23L8.5 11.82V9"; +var mdiSortDescending = "M19 7H22L18 3L14 7H17V21H19M2 17H12V19H2M6 5V7H2V5M2 11H9V13H2V11Z"; +var mdiSortNumericAscending = "M19 17H22L18 21L14 17H17V3H19V17M9 13H7C5.9 13 5 13.9 5 15V16C5 17.11 5.9 18 7 18H9V19H5V21H9C10.11 21 11 20.11 11 19V15C11 13.9 10.11 13 9 13M9 16H7V15H9V16M9 3H7C5.9 3 5 3.9 5 5V9C5 10.11 5.9 11 7 11H9C10.11 11 11 10.11 11 9V5C11 3.9 10.11 3 9 3M9 9H7V5H9V9Z"; +var mdiSortNumericAscendingVariant = "M7.78 7C9.08 7.04 10 7.53 10.57 8.46C11.13 9.4 11.41 10.56 11.39 11.95C11.4 13.5 11.09 14.73 10.5 15.62C9.88 16.5 8.95 16.97 7.71 17C6.45 16.96 5.54 16.5 4.96 15.56C4.38 14.63 4.09 13.45 4.09 12S4.39 9.36 5 8.44C5.59 7.5 6.5 7.04 7.78 7M7.75 8.63C7.31 8.63 6.96 8.9 6.7 9.46C6.44 10 6.32 10.87 6.32 12C6.31 13.15 6.44 14 6.69 14.54C6.95 15.1 7.31 15.37 7.77 15.37C8.69 15.37 9.16 14.24 9.17 12C9.17 9.77 8.7 8.65 7.75 8.63M13.33 17V15.22L13.76 15.24L14.3 15.22L15.34 15.03C15.68 14.92 16 14.78 16.26 14.58C16.59 14.35 16.86 14.08 17.07 13.76C17.29 13.45 17.44 13.12 17.53 12.78L17.5 12.77C17.05 13.19 16.38 13.4 15.47 13.41C14.62 13.4 13.91 13.15 13.34 12.65S12.5 11.43 12.46 10.5C12.47 9.5 12.81 8.69 13.47 8.03C14.14 7.37 15 7.03 16.12 7C17.37 7.04 18.29 7.45 18.88 8.24C19.47 9 19.76 10 19.76 11.19C19.75 12.15 19.61 13 19.32 13.76C19.03 14.5 18.64 15.13 18.12 15.64C17.66 16.06 17.11 16.38 16.47 16.61C15.83 16.83 15.12 16.96 14.34 17H13.33M16.06 8.63C15.65 8.64 15.32 8.8 15.06 9.11C14.81 9.42 14.68 9.84 14.68 10.36C14.68 10.8 14.8 11.16 15.03 11.46C15.27 11.77 15.63 11.92 16.11 11.93C16.43 11.93 16.7 11.86 16.92 11.74C17.14 11.61 17.3 11.46 17.41 11.28C17.5 11.17 17.53 10.97 17.53 10.71C17.54 10.16 17.43 9.69 17.2 9.28C16.97 8.87 16.59 8.65 16.06 8.63M9.25 5L12.5 1.75L15.75 5H9.25"; +var mdiSortNumericDescending = "M19 7H22L18 3L14 7H17V21H19M9 21H5V19H9V18H7C5.9 18 5 17.11 5 16V15C5 13.9 5.9 13 7 13H9C10.11 13 11 13.9 11 15V19C11 20.11 10.11 21 9 21M9 15H7V16H9M7 3H9C10.11 3 11 3.9 11 5V9C11 10.11 10.11 11 9 11H7C5.9 11 5 10.11 5 9V5C5 3.9 5.9 3 7 3M7 9H9V5H7Z"; +var mdiSortNumericDescendingVariant = "M7.78 7C9.08 7.04 10 7.53 10.57 8.46C11.13 9.4 11.41 10.56 11.39 11.95C11.4 13.5 11.09 14.73 10.5 15.62C9.88 16.5 8.95 16.97 7.71 17C6.45 16.96 5.54 16.5 4.96 15.56C4.38 14.63 4.09 13.45 4.09 12S4.39 9.36 5 8.44C5.59 7.5 6.5 7.04 7.78 7M7.75 8.63C7.31 8.63 6.96 8.9 6.7 9.46C6.44 10 6.32 10.87 6.32 12C6.31 13.15 6.44 14 6.69 14.54C6.95 15.1 7.31 15.37 7.77 15.37C8.69 15.37 9.16 14.24 9.17 12C9.17 9.77 8.7 8.65 7.75 8.63M13.33 17V15.22L13.76 15.24L14.3 15.22L15.34 15.03C15.68 14.92 16 14.78 16.26 14.58C16.59 14.35 16.86 14.08 17.07 13.76C17.29 13.45 17.44 13.12 17.53 12.78L17.5 12.77C17.05 13.19 16.38 13.4 15.47 13.41C14.62 13.4 13.91 13.15 13.34 12.65S12.5 11.43 12.46 10.5C12.47 9.5 12.81 8.69 13.47 8.03C14.14 7.37 15 7.03 16.12 7C17.37 7.04 18.29 7.45 18.88 8.24C19.47 9 19.76 10 19.76 11.19C19.75 12.15 19.61 13 19.32 13.76C19.03 14.5 18.64 15.13 18.12 15.64C17.66 16.06 17.11 16.38 16.47 16.61C15.83 16.83 15.12 16.96 14.34 17H13.33M16.06 8.63C15.65 8.64 15.32 8.8 15.06 9.11C14.81 9.42 14.68 9.84 14.68 10.36C14.68 10.8 14.8 11.16 15.03 11.46C15.27 11.77 15.63 11.92 16.11 11.93C16.43 11.93 16.7 11.86 16.92 11.74C17.14 11.61 17.3 11.46 17.41 11.28C17.5 11.17 17.53 10.97 17.53 10.71C17.54 10.16 17.43 9.69 17.2 9.28C16.97 8.87 16.59 8.65 16.06 8.63M15.75 19L12.5 22.25L9.25 19H15.75Z"; +var mdiSortNumericVariant = "M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z"; +var mdiSortReverseVariant = "M3 11H15V13H3M3 18V16H21V18M3 6H9V8H3Z"; +var mdiSortVariant = "M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z"; +var mdiSortVariantLock = "M3,13V11H15V13H3M3,6H21V8H3V6M3,18V16H9V18H3M22,22H14V18H15V17A3,3 0 0,1 18,14A3,3 0 0,1 21,17V18H22V22M18,16A1,1 0 0,0 17,17V18H19V17A1,1 0 0,0 18,16Z"; +var mdiSortVariantLockOpen = "M3,13V11H15V13H3M3,6H21V8H3V6M3,18V16H9V18H3M22,22H14V18H15V16A3,3 0 0,1 18,13A3,3 0 0,1 21,16H19A1,1 0 0,0 18,15A1,1 0 0,0 17,16V18H22V22Z"; +var mdiSortVariantRemove = "M3 13H15V11H3M3 6V8H21V6M3 18H9V16H3V18M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88"; +var mdiSoundcloud = "M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z"; +var mdiSourceBranch = "M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z"; +var mdiSourceBranchCheck = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M16.75 21.16L14 18.16L15.16 17L16.75 18.59L20.34 15L21.5 16.41L16.75 21.16"; +var mdiSourceBranchMinus = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M14 17V19H22V17H14Z"; +var mdiSourceBranchPlus = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; +var mdiSourceBranchRefresh = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M18 14C19.1 14 20.1 14.4 20.8 15.2L22 14V18H18L19.8 16.2C19.3 15.8 18.7 15.5 18 15.5C16.6 15.5 15.5 16.6 15.5 18S16.6 20.5 18 20.5C18.8 20.5 19.5 20.1 20 19.5H21.7C21.1 21 19.7 22 18 22C15.8 22 14 20.2 14 18S15.8 14 18 14Z"; +var mdiSourceBranchRemove = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88L20.12 14.46Z"; +var mdiSourceBranchSync = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M18 13V14.5C20.21 14.5 22 16.29 22 18.5C22 19.32 21.75 20.08 21.33 20.71L20.24 19.62C20.41 19.28 20.5 18.9 20.5 18.5C20.5 17.12 19.38 16 18 16V17.5L15.75 15.25L15.72 15.22C15.78 15.17 15.85 15.13 18 13M18 24V22.5C15.79 22.5 14 20.71 14 18.5C14 17.68 14.25 16.92 14.67 16.29L15.76 17.38C15.59 17.72 15.5 18.1 15.5 18.5C15.5 19.88 16.62 21 18 21V19.5L20.25 21.75L20.28 21.78C20.22 21.83 20.15 21.87 18 24"; +var mdiSourceCommit = "M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiSourceCommitEnd = "M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiSourceCommitEndLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z"; +var mdiSourceCommitLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z"; +var mdiSourceCommitNextLocal = "M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z"; +var mdiSourceCommitStart = "M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; +var mdiSourceCommitStartNextLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z"; +var mdiSourceFork = "M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z"; +var mdiSourceMerge = "M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z"; +var mdiSourcePull = "M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z"; +var mdiSourceRepository = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12.75,13.5C15.5,13.5 16.24,11.47 16.43,10.4C17.34,10.11 18,9.26 18,8.25C18,7 17,6 15.75,6C14.5,6 13.5,7 13.5,8.25C13.5,9.19 14.07,10 14.89,10.33C14.67,11 14,12 12,12C10.62,12 9.66,12.35 9,12.84V8.87C9.87,8.56 10.5,7.73 10.5,6.75C10.5,5.5 9.5,4.5 8.25,4.5C7,4.5 6,5.5 6,6.75C6,7.73 6.63,8.56 7.5,8.87V15.13C6.63,15.44 6,16.27 6,17.25C6,18.5 7,19.5 8.25,19.5C9.5,19.5 10.5,18.5 10.5,17.25C10.5,16.32 9.94,15.5 9.13,15.18C9.41,14.5 10.23,13.5 12.75,13.5M8.25,16.5A0.75,0.75 0 0,1 9,17.25A0.75,0.75 0 0,1 8.25,18A0.75,0.75 0 0,1 7.5,17.25A0.75,0.75 0 0,1 8.25,16.5M8.25,6A0.75,0.75 0 0,1 9,6.75A0.75,0.75 0 0,1 8.25,7.5A0.75,0.75 0 0,1 7.5,6.75A0.75,0.75 0 0,1 8.25,6M15.75,7.5A0.75,0.75 0 0,1 16.5,8.25A0.75,0.75 0 0,1 15.75,9A0.75,0.75 0 0,1 15,8.25A0.75,0.75 0 0,1 15.75,7.5Z"; +var mdiSourceRepositoryMultiple = "M8,0H20A2,2 0 0,1 22,2V18A2,2 0 0,1 20,20H8A2,2 0 0,1 6,18V2A2,2 0 0,1 8,0M14.75,11.5C17.5,11.5 18.24,9.47 18.43,8.4C19.34,8.11 20,7.26 20,6.25C20,5 19,4 17.75,4C16.5,4 15.5,5 15.5,6.25C15.5,7.19 16.07,8 16.89,8.33C16.67,9 16,10 14,10C12.62,10 11.66,10.35 11,10.84V6.87C11.87,6.56 12.5,5.73 12.5,4.75C12.5,3.5 11.5,2.5 10.25,2.5C9,2.5 8,3.5 8,4.75C8,5.73 8.63,6.56 9.5,6.87V13.13C8.63,13.44 8,14.27 8,15.25C8,16.5 9,17.5 10.25,17.5C11.5,17.5 12.5,16.5 12.5,15.25C12.5,14.32 11.94,13.5 11.13,13.18C11.41,12.5 12.23,11.5 14.75,11.5M10.25,14.5A0.75,0.75 0 0,1 11,15.25A0.75,0.75 0 0,1 10.25,16A0.75,0.75 0 0,1 9.5,15.25A0.75,0.75 0 0,1 10.25,14.5M10.25,4A0.75,0.75 0 0,1 11,4.75A0.75,0.75 0 0,1 10.25,5.5A0.75,0.75 0 0,1 9.5,4.75A0.75,0.75 0 0,1 10.25,4M17.75,5.5A0.75,0.75 0 0,1 18.5,6.25A0.75,0.75 0 0,1 17.75,7A0.75,0.75 0 0,1 17,6.25A0.75,0.75 0 0,1 17.75,5.5M16,22V24H4A2,2 0 0,1 2,22V6H4V22H16Z"; +var mdiSoySauce = "M13.9,7.5C13.9,6.8 14.1,6.3 14.2,6H14.8L15.7,3.5H16.5V2H7.5V3.5H8.3L9.2,6H9.8C10,6.3 10.1,6.8 10.1,7.5C10.1,8.8 6,13.7 6,17.6V19.6C6,21 8.7,21.9 12,21.9C15.3,21.9 18,21 18,19.6V17.6C18,13.7 13.9,8.8 13.9,7.5M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15Z"; +var mdiSoySauceOff = "M22.1 21.5L2.4 1.7L1.1 3L8.6 10.5C7.5 12.6 6 15.3 6 17.6V19.6C6 21 8.7 21.9 12 21.9C15.1 21.9 17.7 21.1 18 19.9L20.9 22.8L22.1 21.5M12 15C10.9 15 10 14.1 10 13C10 12.7 10.1 12.4 10.2 12.1L12.9 14.8C12.6 14.9 12.3 15 12 15M8.3 3.5H7.5V2H16.5V3.5H15.7L14.8 6H14.2C14.1 6.3 13.9 6.8 13.9 7.5C13.9 8.4 15.9 11 17.1 13.9L10.1 6.9C10 6.5 9.9 6.2 9.8 6H9.2L8.3 3.5Z"; +var mdiSpa = "M15.5,9.63C15.31,6.84 14.18,4.12 12.06,2C9.92,4.14 8.74,6.86 8.5,9.63C9.79,10.31 10.97,11.19 12,12.26C13.03,11.2 14.21,10.32 15.5,9.63M12,15.45C9.85,12.17 6.18,10 2,10C2,20 11.32,21.89 12,22C12.68,21.88 22,20 22,10C17.82,10 14.15,12.17 12,15.45Z"; +var mdiSpaOutline = "M15.5,9.63C14.21,10.32 13.03,11.2 12,12.26C10.97,11.19 9.79,10.31 8.5,9.63C8.74,6.86 9.92,4.14 12.06,2C14.18,4.12 15.31,6.84 15.5,9.63M12,15.45C14.15,12.17 17.82,10 22,10C22,20 12.68,21.88 12,22C11.32,21.89 2,20 2,10C6.18,10 9.85,12.17 12,15.45M12.05,5.19C11.39,6.23 10.93,7.38 10.68,8.58L12,9.55L13.35,8.57C13.12,7.37 12.68,6.22 12.05,5.19M12,19.97C12,19.97 18,19 19.74,12.25C14,14 12,19.1 12,19.1C12,19.1 9,13 4.26,12.26C6,19 12,19.97 12,19.97Z"; +var mdiSpaceInvaders = "M7,6H5V4H7V6M17,6H19V4H17V6M23,12V18H21V14H19V18H17V16H7V18H5V14H3V18H1V12H3V10H5V8H7V6H9V8H15V6H17V8H19V10H21V12H23M15,10V12H17V10H15M7,12H9V10H7V12M11,18H7V20H11V18M17,18H13V20H17V18Z"; +var mdiSpaceStation = "M15.5 19V21H13.73C13.39 21.6 12.74 22 12 22C11.26 22 10.61 21.6 10.27 21H8.5V19H10.27C10.44 18.7 10.7 18.44 11 18.27V17H10C9.45 17 9 16.55 9 16V13H6V17C6 17.55 5.55 18 5 18H3C2.45 18 2 17.55 2 17V8C2 7.45 2.45 7 3 7H5C5.55 7 6 7.45 6 8V11H9V8C9 7.45 9.45 7 10 7H11V6H10C9.45 6 9 5.55 9 5V4C9 3.45 9.45 3 10 3H14C14.55 3 15 3.45 15 4V5C15 5.55 14.55 6 14 6H13V7H14C14.55 7 15 7.45 15 8V11H18V8C18 7.45 18.45 7 19 7H21C21.55 7 22 7.45 22 8V17C22 17.55 21.55 18 21 18H19C18.45 18 18 17.55 18 17V13H15V16C15 16.55 14.55 17 14 17H13V18.27C13.3 18.44 13.56 18.7 13.73 19H15.5M3 16V17H5V16H3M3 14V15H5V14H3M3 12V13H5V12H3M3 10V11H5V10H3M3 8V9H5V8H3M19 16V17H21V16H19M19 14V15H21V14H19M19 12V13H21V12H19M19 10V11H21V10H19M19 8V9H21V8H19Z"; +var mdiSpade = "M15.71,1.22L12.88,4.05C12.1,4.83 12.1,6.09 12.88,6.87L14.3,8.29L10.06,12.53L7.58,10.06L1.22,16.42L7.58,22.78L13.94,16.42L11.47,13.94L15.71,9.7L17.13,11.12C17.91,11.9 19.17,11.9 19.95,11.12L22.78,8.29L15.71,1.22M15.71,4.05L19.95,8.29L18.54,9.7L14.3,5.46L15.71,4.05Z"; +var mdiSparkles = "M10.6 9.6L9 15L7.4 9.6L2 8L7.4 6.4L9 1L10.6 6.4L16 8L10.6 9.6M17 14.2L21 12L18.8 16L21 20L17 17.8L13 20L15.2 16L13 12L17 14.2M10 16L8.3 19L10 22L7 20.3L4 22L5.7 19L4 16L7 17.7L10 16"; +var mdiSpeaker = "M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z"; +var mdiSpeakerBluetooth = "M4,3A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H12A2,2 0 0,0 14,19V5A2,2 0 0,0 12,3H4M8,5A2,2 0 0,1 10,7A2,2 0 0,1 8,9A2,2 0 0,1 6,7A2,2 0 0,1 8,5M19,7V10.79L16.71,8.5L16,9.21L18.79,12L16,14.79L16.71,15.5L19,13.21V17H19.5L22.35,14.14L20.21,12L22.35,9.85L19.5,7H19M20,8.91L20.94,9.85L20,10.79V8.91M8,11A4,4 0 0,1 12,15A4,4 0 0,1 8,19A4,4 0 0,1 4,15A4,4 0 0,1 8,11M8,13A2,2 0 0,0 6,15A2,2 0 0,0 8,17A2,2 0 0,0 10,15A2,2 0 0,0 8,13M20,13.21L20.94,14.14L20,15.08V13.21Z"; +var mdiSpeakerMultiple = "M14,10A3,3 0 0,0 11,13A3,3 0 0,0 14,16A3,3 0 0,0 17,13A3,3 0 0,0 14,10M14,18A5,5 0 0,1 9,13A5,5 0 0,1 14,8A5,5 0 0,1 19,13A5,5 0 0,1 14,18M14,2A2,2 0 0,1 16,4A2,2 0 0,1 14,6A2,2 0 0,1 12,4A2,2 0 0,1 14,2M19,0H9A2,2 0 0,0 7,2V18A2,2 0 0,0 9,20H19A2,2 0 0,0 21,18V2A2,2 0 0,0 19,0M5,22H17V24H5A2,2 0 0,1 3,22V4H5"; +var mdiSpeakerOff = "M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z"; +var mdiSpeakerWireless = "M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z"; +var mdiSpeedometer = "M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z"; +var mdiSpeedometerMedium = "M12 1.38L9.14 12.06C8.8 13.1 9.04 14.29 9.86 15.12C11.04 16.29 12.94 16.29 14.11 15.12C14.9 14.33 15.16 13.2 14.89 12.21M14.6 3.35L15.22 5.68C18.04 6.92 20 9.73 20 13C20 15.21 19.11 17.21 17.66 18.65H17.65C17.26 19.04 17.26 19.67 17.65 20.06C18.04 20.45 18.68 20.45 19.07 20.07C20.88 18.26 22 15.76 22 13C22 8.38 18.86 4.5 14.6 3.35M9.4 3.36C5.15 4.5 2 8.4 2 13C2 15.76 3.12 18.26 4.93 20.07C5.32 20.45 5.95 20.45 6.34 20.06C6.73 19.67 6.73 19.04 6.34 18.65C4.89 17.2 4 15.21 4 13C4 9.65 5.94 6.86 8.79 5.65"; +var mdiSpeedometerSlow = "M12 16C13.66 16 15 14.66 15 13C15 11.88 14.39 10.9 13.5 10.39L3.79 4.77L9.32 14.35C9.82 15.33 10.83 16 12 16M12 3C10.19 3 8.5 3.5 7.03 4.32L9.13 5.53C10 5.19 11 5 12 5C16.42 5 20 8.58 20 13C20 15.21 19.11 17.21 17.66 18.65H17.65C17.26 19.04 17.26 19.67 17.65 20.06C18.04 20.45 18.68 20.45 19.07 20.07C20.88 18.26 22 15.76 22 13C22 7.5 17.5 3 12 3M2 13C2 15.76 3.12 18.26 4.93 20.07C5.32 20.45 5.95 20.45 6.34 20.06C6.73 19.67 6.73 19.04 6.34 18.65C4.89 17.2 4 15.21 4 13C4 12 4.19 11 4.54 10.1L3.33 8C2.5 9.5 2 11.18 2 13Z"; +var mdiSpellcheck = "M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z"; +var mdiSpider = "M21.29 16.71L22.71 15.29L19.5 12.11L16.5 11.26L18.41 11L22.6 7.8L21.4 6.2L17.59 9.05L14.91 9.5L18.11 6.31L17 1.76L15 2.24L15.86 5.69L14.76 6.83A3 3 0 0 0 9.24 6.83L8.11 5.69L9 2.24L7 1.76L5.89 6.31L9.09 9.5L6.4 9.05L2.6 6.2L1.4 7.8L5.6 11L7.46 11.31L4.46 12.16L1.29 15.29L2.71 16.71L5.5 13.89L7.87 13.22L4 16.54V22H6V17.46L7.56 16.12A4.5 4.5 0 0 0 16.44 16.12L18 17.46V22H20V16.54L16.13 13.22L18.5 13.89Z"; +var mdiSpiderThread = "M13 2V7.08A5.47 5.47 0 0 0 12 7A5.47 5.47 0 0 0 11 7.08V2M16.9 15A5 5 0 0 1 16.73 15.55L20 17.42V22H18V18.58L15.74 17.29A4.94 4.94 0 0 1 8.26 17.29L6 18.58V22H4V17.42L7.27 15.55A5 5 0 0 1 7.1 15H5.3L2.55 16.83L1.45 15.17L4.7 13H7.1A5 5 0 0 1 7.37 12.12L5.81 11.12L2.24 12L1.76 10L6.19 8.92L8.5 10.45A5 5 0 0 1 15.5 10.45L17.77 8.92L22.24 10L21.76 12L18.19 11.11L16.63 12.11A5 5 0 0 1 16.9 13H19.3L22.55 15.16L21.45 16.82L18.7 15M11 14A1 1 0 1 0 10 15A1 1 0 0 0 11 14M15 14A1 1 0 1 0 14 15A1 1 0 0 0 15 14Z"; +var mdiSpiderWeb = "M13.62,13.28L15.26,15.54C15.29,15 15.38,14.47 15.56,13.93C15.74,13.37 16,12.86 16.3,12.41L13.62,13.28M17.77,19C17.75,17.68 17.95,16.27 18.41,14.85C18.88,13.42 19.56,12.14 20.36,11.09L18.32,11.75C17.54,12.26 16.87,13.14 16.5,14.23C16.17,15.29 16.18,16.36 16.5,17.22L17.77,19M19.25,21C18.75,21.46 18.21,21.86 17.63,22.2L17.31,21.76C15.9,21 14.04,20.5 12,20.5C9.96,20.5 8.1,21 6.69,21.76L6.37,22.2C5.79,21.86 5.25,21.46 4.75,21L5,20.69C5.33,19.08 5.22,17.12 4.58,15.14C3.94,13.19 2.9,11.56 1.71,10.46L1.27,10.32C1.42,9.66 1.63,9 1.89,8.41L2.29,8.54C3.92,8.37 5.74,7.65 7.43,6.43C9.09,5.22 10.32,3.73 11,2.26V1.79L12,1.75L13,1.79V2.21C13.67,3.71 14.91,5.23 16.6,6.45C18.26,7.66 20.06,8.37 21.67,8.56L22.11,8.41C22.37,9 22.58,9.66 22.73,10.32L22.23,10.5C21.04,11.58 20,13.21 19.37,15.16C18.74,17.09 18.62,19 18.92,20.57L19.25,21M11,11.37V8.5C10.66,8.92 10.26,9.32 9.78,9.67C9.29,10 8.77,10.29 8.25,10.5L11,11.37M11,4.22C10.25,5.31 9.24,6.35 8,7.24C6.78,8.14 5.46,8.78 4.18,9.16L6.15,9.8C7.11,9.88 8.22,9.56 9.19,8.86C10.13,8.18 10.76,7.27 11,6.36V4.22M13,11.37L15.74,10.5C15.23,10.3 14.72,10.03 14.25,9.69C13.76,9.33 13.34,8.92 13,8.5V11.37M19.8,9.16C18.53,8.78 17.23,8.15 16,7.26C14.77,6.36 13.76,5.31 13,4.2V6.27C13.22,7.21 13.86,8.17 14.84,8.88C15.77,9.56 16.83,9.87 17.77,9.82L19.8,9.16M10.38,13.28L7.64,12.39C7.95,12.84 8.2,13.35 8.38,13.91C8.57,14.5 8.66,15.06 8.68,15.62L10.38,13.28M3.58,11.07C4.38,12.12 5.06,13.4 5.53,14.83C6,16.29 6.2,17.74 6.17,19.08L7.38,17.41C7.76,16.5 7.8,15.36 7.43,14.22C7.07,13.12 6.4,12.24 5.61,11.73L3.58,11.07M12,14.45L10.35,16.72C10.87,16.58 11.42,16.5 12,16.5C12.58,16.5 13.13,16.58 13.65,16.72L12,14.45M7.84,20.18C9.08,19.75 10.5,19.5 12,19.5C13.5,19.5 14.92,19.75 16.16,20.18L14.88,18.42C14.16,17.85 13.13,17.5 12,17.5C10.87,17.5 9.84,17.85 9.12,18.42L7.84,20.18Z"; +var mdiSpiritLevel = "M22 8H2V16H22V8M18 14V10H20V14H18M11 12H13C14.1 12 15 11.11 15 10H17V14H7V10H9C9 11.11 9.9 12 11 12M4 14V10H6V14H4Z"; +var mdiSpoonSugar = "M6 13H3V10H6V13M10 10H7V13H10V10M8 6H5V9H8V6M18 12C14.25 12 12.28 13.25 11 14H2C2 16.21 3.79 18 6 18H7C8 18 8.92 17.63 9.62 17C11.06 15.78 12.68 14.74 14.55 14.36C15.61 14.15 16.78 14 18 14H22V12H18Z"; +var mdiSpotify = "M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiSpotlight = "M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiSpotlightBeam = "M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z"; +var mdiSpray = "M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z"; +var mdiSprayBottle = "M12,7H15C15.66,7.64 16,8.31 16,9V22H8V15C8,14.72 8.11,14.39 8.3,14L12,7M16,4L15,6H12V5L10,7H9L10,5V4H9V2H14.5A1.5,1.5 0 0,1 16,3.5V4Z"; +var mdiSprinkler = "M11 7H13V9H11V7M5 22H9V10H5V22M14 11H16V9H14V11M17 10H19V8H17V10M17 5V7H19V5H17M14 8H16V6H14V8M17 13H19V11H17V13M5 7H5.33L6 9H8L8.67 7H9V6H5V7Z"; +var mdiSprinklerVariant = "M10 10H14V22H10V10M7 9H9V7H7V9M4 8H6V6H4V8M4 11H6V9H4V11M1 13H3V11H1V13M1 7H3V5H1V7M1 10H3V8H1V10M18 11H20V9H18V11M21 10H23V8H21V10M21 5V7H23V5H21M21 13H23V11H21V13M15 9H17V7H15V9M18 8H20V6H18V8M10 7H10.33L11 9H13L13.67 7H14V6H10V7Z"; +var mdiSprout = "M2,22V20C2,20 7,18 12,18C17,18 22,20 22,20V22H2M11.3,9.1C10.1,5.2 4,6.1 4,6.1C4,6.1 4.2,13.9 9.9,12.7C9.5,9.8 8,9 8,9C10.8,9 11,12.4 11,12.4V17C11.3,17 11.7,17 12,17C12.3,17 12.7,17 13,17V12.8C13,12.8 13,8.9 16,7.9C16,7.9 14,10.9 14,12.9C21,13.6 21,4 21,4C21,4 12.1,3 11.3,9.1Z"; +var mdiSproutOutline = "M23,4.1V2.3L21.2,2.1C21.1,2.1 20.5,2 19.5,2C15.4,2 12.4,3.2 10.7,5.3C9.4,4.5 7.6,4 5.5,4C4.5,4 3.8,4.1 3.8,4.1L1.9,4.4L2,6.1C2.1,9.1 3.6,14.8 8.8,14.8C8.9,14.8 8.9,14.8 9,14.8V18.2C5.2,18.7 2,20 2,20V22H22V20C22,20 18.8,18.7 15,18.2V15C21.3,14.9 23,7.8 23,4.1M12,18C11.7,18 11.3,18 11,18V12.4C11,12.4 10.8,9 8,9C8,9 9.5,9.8 9.9,12.7C9.5,12.8 9.1,12.8 8.8,12.8C4.2,12.8 4,6.1 4,6.1C4,6.1 4.6,6 5.5,6C7.4,6 10.5,6.4 11.4,9.1C11.9,4.6 17,4 19.5,4C20.4,4 21,4.1 21,4.1C21,4.1 21,13.1 14.7,13.1C14.5,13.1 14.2,13.1 14,13.1C14,11.1 16,8.1 16,8.1C13,9.1 13,13 13,13V18C12.7,18 12.3,18 12,18Z"; +var mdiSquare = "M3,3V21H21V3"; +var mdiSquareCircle = "M20 4V20H4V4H20M22 2H2V22H22V2M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12 15.31 6 12 6Z"; +var mdiSquareEditOutline = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19H5V5H12V3H5M17.78,4C17.61,4 17.43,4.07 17.3,4.2L16.08,5.41L18.58,7.91L19.8,6.7C20.06,6.44 20.06,6 19.8,5.75L18.25,4.2C18.12,4.07 17.95,4 17.78,4M15.37,6.12L8,13.5V16H10.5L17.87,8.62L15.37,6.12Z"; +var mdiSquareMedium = "M16,8H8V16H16V8Z"; +var mdiSquareMediumOutline = "M14,10V14H10V10H14M16,8H8V16H16V8Z"; +var mdiSquareOff = "M20.84 22.73L19.11 21H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 3H6.2L21 17.8V3Z"; +var mdiSquareOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L3 4.89V21H19.11L20.84 22.73L22.11 21.46M5 19V6.89L17.11 19H5M8.2 5L6.2 3H21V17.8L19 15.8V5H8.2Z"; +var mdiSquareOutline = "M3,3H21V21H3V3M5,5V19H19V5H5Z"; +var mdiSquareRoot = "M11.76,16.83L14.59,14L11.76,11.17L13.17,9.76L16,12.59L18.83,9.76L20.24,11.17L17.41,14L20.24,16.83L18.83,18.24L16,15.41L13.17,18.24L11.76,16.83M2,11H5V11H5L7.29,16.4L10,6H22V8H11.55L8.68,19H6.22L3.68,13H2V11Z"; +var mdiSquareRootBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M11.24,6H19V8H12.76L10,18H8L6.25,12H5V10H7.75L9,14.28L11.24,6V6M14,10.59L15.79,12.38L17.59,10.59L19,12L17.21,13.79L19,15.59L17.59,17L15.79,15.21L14,17L12.59,15.59L14.38,13.79L12.59,12L14,10.59Z"; +var mdiSquareRounded = "M8 3H16C18.76 3 21 5.24 21 8V16C21 18.76 18.76 21 16 21H8C5.24 21 3 18.76 3 16V8C3 5.24 5.24 3 8 3Z"; +var mdiSquareRoundedOutline = "M8 3H16C18.76 3 21 5.24 21 8V16C21 18.76 18.76 21 16 21H8C5.24 21 3 18.76 3 16V8C3 5.24 5.24 3 8 3M8 5C6.34 5 5 6.34 5 8V16C5 17.66 6.34 19 8 19H16C17.66 19 19 17.66 19 16V8C19 6.34 17.66 5 16 5H8Z"; +var mdiSquareSmall = "M10,14V10H14V14H10Z"; +var mdiSquareWave = "M2 2V12H4V4H11V22H22V12H20V20H13V2H2Z"; +var mdiSqueegee = "M22,2V5H2V2H22M2,8H7L9,10H10V20A2,2 0 0,0 12,22A2,2 0 0,0 14,20V10H15L17,8H22V6H2V8Z"; +var mdiSsh = "M4.5,9C3.9,9 3.5,9.5 3.5,10V11.75C3.5,12.25 3.9,12.75 4.5,12.75H7V13.5H3.5V15H7.5C8.1,15 8.5,14.5 8.5,14V12.25C8.5,11.75 8.1,11.25 7.5,11.25H5V10.5H8.5V9H4.5M10.5,9C9.9,9 9.5,9.5 9.5,10V11.75C9.5,12.25 9.9,12.75 10.5,12.75H13V13.5H9.5V15H13.5C14.1,15 14.5,14.5 14.5,14V12.25C14.5,11.75 14.1,11.25 13.5,11.25H11V10.5H14.5V9H10.5M15.5,9V15H17V12.5H19V15H20.5V9H19V11H17V9H15.5Z"; +var mdiStackExchange = "M3.9 10.72H20V14.03H3.9V10.72M3.9 6.44H20V9.75H3.9V6.44M17.5 2H6.5C5.06 2 3.9 3.18 3.9 4.65V5.5H20V4.65C20 3.18 18.88 2 17.5 2M3.9 15V15.84C3.9 17.31 5.06 18.5 6.5 18.5H13.37V22L16.77 18.5H17.5C18.94 18.5 20.11 17.31 20.11 15.84V15H3.9Z"; +var mdiStackOverflow = "M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z"; +var mdiStackpath = "M4.91 8C4.04 8 3.32 8.2 2.76 8.61C2.19 9 1.91 9.53 1.91 10.19C1.91 10.85 2.15 11.37 2.62 11.72C3.1 12.07 3.82 12.41 4.8 12.72C5.27 12.88 5.6 13.04 5.78 13.19C5.96 13.34 6.05 13.55 6.05 13.83C6.05 14.07 5.96 14.26 5.78 14.41C5.6 14.56 5.32 14.63 4.94 14.63C4.45 14.63 4.09 14.54 3.85 14.35C3.6 14.16 3.5 13.84 3.5 13.39H1.72L1.71 13.42C1.7 14.25 2 14.89 2.66 15.33C3.3 15.78 4.06 16 4.94 16C5.82 16 6.5 15.8 7.06 15.42C7.59 15.03 7.86 14.5 7.86 13.81C7.86 13.14 7.63 12.61 7.19 12.23C6.74 11.84 6.08 11.5 5.2 11.26C4.62 11.05 4.23 10.88 4 10.74C3.81 10.6 3.71 10.42 3.71 10.2C3.71 9.96 3.81 9.76 4 9.6C4.22 9.44 4.5 9.36 4.87 9.36C5.24 9.36 5.53 9.46 5.74 9.65C5.96 9.84 6.07 10.12 6.06 10.41H7.8L7.82 10.37C7.84 9.68 7.57 9.11 7 8.66C6.47 8.22 5.77 8 4.91 8M9 8.05V15.93H10.84V13.23H11.96C12.89 13.23 13.63 13 14.18 12.5C14.73 12.05 15 11.42 15 10.64C15 9.87 14.73 9.25 14.18 8.77C13.63 8.29 12.89 8.05 11.96 8.05H9M17.24 8.05L14.5 15.93H16.22L19 8.05M20.5 8.05L17.79 15.93H19.5L22.29 8.05M10.84 9.46H11.96C12.35 9.46 12.66 9.57 12.86 9.8C13.07 10 13.17 10.31 13.17 10.65C13.17 11 13.07 11.28 12.86 11.5C12.66 11.71 12.35 11.82 11.96 11.82H10.84"; +var mdiStadium = "M22 13.5V17.5C22 19.2 17.5 20.5 12 20.5C10.6 20.5 9.2 20.4 8 20.2V17.5L4 16.5V19.3C2.7 18.8 2 18.2 2 17.5V11.5C2 10.5 4 9.5 6 9.5C12 9.5 14 15 19 15C21 15 22 13.5 22 13.5M5 8L9 9V6L5 5V8M18 6.5L22 7.5V4.5L18 3.5V6.5M22.3 10.8C22.3 9.8 21.5 8 18.7 8S13.4 10.7 13.3 10.9C15.1 12.2 16.5 13.5 19 13.5C22.3 13.5 22.3 10.8 22.3 10.8Z"; +var mdiStadiumVariant = "M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z"; +var mdiStairs = "M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z"; +var mdiStairsBox = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M14 7H19V9H16V12H13V15H10V18H5V16H8V13H11V10H14V7Z"; +var mdiStairsDown = "M15 6H22V9H18V13H14V17H10V21H3V18H7V14H11V10H15V6M4.83 8.34L10.34 2.83L12.17 4.66L6.66 10.17L8.5 12H3V6.5L4.83 8.34Z"; +var mdiStairsUp = "M15 6H22V9H18V13H14V17H10V21H3V18H7V14H11V10H15V6M10.17 6.66L4.66 12.17L2.83 10.34L8.34 4.83L6.5 3H12V8.5L10.17 6.66Z"; +var mdiStamper = "M12,3A3,3 0 0,0 9,6C9,9 14,13 6,13A2,2 0 0,0 4,15V17H20V15A2,2 0 0,0 18,13C10,13 15,9 15,6C15,4 13.66,3 12,3M6,19V21H18V19H6Z"; +var mdiStandardDefinition = "M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16M7,7H11V9H7V11H9A2,2 0 0,1 11,13V15A2,2 0 0,1 9,17H5V15H9V13H7A2,2 0 0,1 5,11V9A2,2 0 0,1 7,7Z"; +var mdiStar = "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"; +var mdiStarBox = "M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M15.58,17L14.63,12.92L17.79,10.19L13.62,9.83L12,6L10.38,9.84L6.21,10.2L9.37,12.93L8.42,17L12,14.84L15.58,17Z"; +var mdiStarBoxMultiple = "M4 6V20H18V22H3C2.4 22 2 21.6 2 21V6H4M8 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H8C6.9 18 6 17.11 6 16V4C6 2.9 6.9 2 8 2M16.3 13.3L15.9 10.7L17.8 8.8L15.2 8.4L14 6L12.8 8.4L10.2 8.8L12.1 10.6L11.6 13.2L14 12L16.3 13.3Z"; +var mdiStarBoxMultipleOutline = "M4 6V20H18V22H3C2.4 22 2 21.6 2 21V6H4M12.1 10.6L10.2 8.8L12.8 8.4L14 6L15.2 8.4L17.8 8.8L15.9 10.7L16.3 13.3L14 12L11.6 13.2L12.1 10.6M8 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H8C6.9 18 6 17.11 6 16V4C6 2.9 6.9 2 8 2M8 4V16H20V4H8Z"; +var mdiStarBoxOutline = "M15.58,17L12,14.84L8.42,17L9.37,12.93L6.21,10.2L10.38,9.84L12,6L13.62,9.83L17.79,10.19L14.63,12.92L15.58,17M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z"; +var mdiStarCheck = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M17.8 21.2L22.6 16.4L21.3 15L17.7 18.6L16.2 17L15 18.2L17.8 21.2"; +var mdiStarCheckOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M17.8 21.2L15 18.2L16.2 17L17.8 18.6L21.4 15L22.6 16.4L17.8 21.2"; +var mdiStarCircle = "M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiStarCircleOutline = "M8.58,17.25L9.5,13.36L6.5,10.78L10.45,10.41L12,6.8L13.55,10.45L17.5,10.78L14.5,13.36L15.42,17.25L12,15.19L8.58,17.25M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; +var mdiStarCog = "M18.8 12C15.59 12.1 12.91 14.37 12.19 17.39L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.62L12 2L14.81 8.62L22 9.24L18.8 12M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; +var mdiStarCogOutline = "M10.29 10.13L5.91 10.5L9.23 13.38L8.24 17.66L12 15.39L12.76 15.85C12.5 16.33 12.32 16.85 12.19 17.39L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.63L12 2L14.81 8.63L22 9.24L18.8 12C17.29 12.05 15.91 12.57 14.78 13.43L14.77 13.38L18.09 10.5L13.71 10.13L12 6.09L10.29 10.13M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; +var mdiStarFace = "M12,2.5L8.42,8.06L2,9.74L6.2,14.88L5.82,21.5L12,19.09L18.18,21.5L17.8,14.88L22,9.74L15.58,8.06L12,2.5M9.38,10.5C10,10.5 10.5,11 10.5,11.63A1.12,1.12 0 0,1 9.38,12.75C8.75,12.75 8.25,12.25 8.25,11.63C8.25,11 8.75,10.5 9.38,10.5M14.63,10.5C15.25,10.5 15.75,11 15.75,11.63A1.12,1.12 0 0,1 14.63,12.75C14,12.75 13.5,12.25 13.5,11.63C13.5,11 14,10.5 14.63,10.5M9,15H15C14.5,16.21 13.31,17 12,17C10.69,17 9.5,16.21 9,15Z"; +var mdiStarFourPoints = "M12,1L9,9L1,12L9,15L12,23L15,15L23,12L15,9L12,1Z"; +var mdiStarFourPointsOutline = "M12,6.7L13.45,10.55L17.3,12L13.45,13.45L12,17.3L10.55,13.45L6.7,12L10.55,10.55L12,6.7M12,1L9,9L1,12L9,15L12,23L15,15L23,12L15,9L12,1Z"; +var mdiStarHalf = "M12 2L9.19 8.62L2 9.24L7.45 13.97L5.82 21L12 17.27V2Z"; +var mdiStarHalfFull = "M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z"; +var mdiStarMinus = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M14 17V19H22V17H14Z"; +var mdiStarMinusOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M14 17V19H22V17H14Z"; +var mdiStarOff = "M20.8 22.7L17.9 19.8L18.2 21L12 17.3L5.8 21L7.4 14L2 9.2L6.9 8.8L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M22 9.2L14.8 8.6L12 2L10 6.8L16.9 13.7L22 9.2Z"; +var mdiStarOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L6.9 8.8L2 9.2L7.5 14L5.9 21L12.1 17.3L18.3 21L18 19.8L20.9 22.7L22.1 21.5M15.8 17.7L12 15.4L8.2 17.7L9.2 13.4L5.9 10.5L8.4 10.3L15.8 17.7M11.2 8L10 6.8L12 2L14.8 8.6L22 9.2L16.9 13.6L15.8 12.5L18.2 10.5L13.8 10.1L12.1 6.1L11.2 8Z"; +var mdiStarOutline = "M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z"; +var mdiStarPlus = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; +var mdiStarPlusOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; +var mdiStarRemove = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z"; +var mdiStarRemoveOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z"; +var mdiStarSettings = "M7 22H9V24H7V22M11 24H13V22H11V24M15 24H17V22H15V24M22 9.24L14.81 8.62L12 2L9.19 8.62L2 9.24L7.45 13.97L5.82 21L12 17.27L18.18 21L16.54 13.97L22 9.24Z"; +var mdiStarSettingsOutline = "M11 22H13V24H11V22M7 24H9V22H7V24M15 24H17V22H15V24M16.54 13.97L18.18 21L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.63L12 2L14.81 8.63L22 9.24L16.54 13.97M15.76 17.66L14.77 13.38L18.09 10.5L13.71 10.13L12 6.09L10.29 10.13L5.91 10.5L9.23 13.38L8.24 17.66L12 15.39L15.76 17.66Z"; +var mdiStarShooting = "M18.09 11.77L19.56 18.1L14 14.74L8.44 18.1L9.9 11.77L5 7.5L11.47 6.96L14 1L16.53 6.96L23 7.5L18.09 11.77M2 12.43C2.19 12.43 2.38 12.37 2.55 12.26L5.75 10.15L4.18 8.79L1.45 10.59C.989 10.89 .861 11.5 1.16 12C1.36 12.27 1.68 12.43 2 12.43M1.16 21.55C1.36 21.84 1.68 22 2 22C2.19 22 2.38 21.95 2.55 21.84L6.66 19.13L7 17.76L7.31 16.31L1.45 20.16C.989 20.47 .861 21.09 1.16 21.55M1.45 15.38C.989 15.68 .861 16.3 1.16 16.76C1.36 17.06 1.68 17.21 2 17.21C2.19 17.21 2.38 17.16 2.55 17.05L7.97 13.5L8.24 12.31L7.32 11.5L1.45 15.38Z"; +var mdiStarShootingOutline = "M23 7.5L16.53 6.96L14 1L11.47 6.96L5 7.5L9.9 11.77L8.44 18.1L14 14.74L19.56 18.1L18.09 11.77L23 7.5M16.14 12.23L16.54 13.94L15.03 13.03L14 12.41L12.97 13.03L11.46 13.94L11.85 12.23L12.13 11.05L11.22 10.26L9.88 9.1L11.64 8.95L12.84 8.85L13.31 7.74L14 6.12L14.69 7.74L15.16 8.85L16.36 8.95L18.11 9.1L16.78 10.26L15.86 11.05L16.14 12.23M1.16 12C.861 11.5 .989 10.89 1.45 10.59L4.18 8.79L5.75 10.15L2.55 12.26C2.38 12.37 2.19 12.43 2 12.43C1.68 12.43 1.36 12.27 1.16 12M1.45 20.16L7.31 16.31L7 17.76L6.66 19.13L2.55 21.84C2.38 21.95 2.19 22 2 22C1.68 22 1.36 21.84 1.16 21.55C.861 21.09 .989 20.47 1.45 20.16M7.32 11.5L8.24 12.31L7.97 13.5L2.55 17.05C2.38 17.16 2.19 17.21 2 17.21C1.68 17.21 1.36 17.06 1.16 16.76C.861 16.3 .989 15.68 1.45 15.38L7.32 11.5Z"; +var mdiStarThreePoints = "M12,2.6L9,12.4L2,19.9L12,17.6L22,20L15,12.5L12,2.6Z"; +var mdiStarThreePointsOutline = "M12,9.5L13.2,13.5L16,16.5L12,15.6L7.9,16.5L10.7,13.5L12,9.5M12,2.6L9,12.4L2,19.9L12,17.6L22,20L15,12.5L12,2.6Z"; +var mdiStateMachine = "M6.27 17.05C6.72 17.58 7 18.25 7 19C7 20.66 5.66 22 4 22S1 20.66 1 19 2.34 16 4 16C4.18 16 4.36 16 4.53 16.05L7.6 10.69L5.86 9.7L9.95 8.58L11.07 12.67L9.33 11.68L6.27 17.05M20 16C18.7 16 17.6 16.84 17.18 18H11V16L8 19L11 22V20H17.18C17.6 21.16 18.7 22 20 22C21.66 22 23 20.66 23 19S21.66 16 20 16M12 8C12.18 8 12.36 8 12.53 7.95L15.6 13.31L13.86 14.3L17.95 15.42L19.07 11.33L17.33 12.32L14.27 6.95C14.72 6.42 15 5.75 15 5C15 3.34 13.66 2 12 2S9 3.34 9 5 10.34 8 12 8Z"; +var mdiSteam = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C7.4,22 3.55,18.92 2.36,14.73L6.19,16.31C6.45,17.6 7.6,18.58 8.97,18.58C10.53,18.58 11.8,17.31 11.8,15.75V15.62L15.2,13.19H15.28C17.36,13.19 19.05,11.5 19.05,9.42C19.05,7.34 17.36,5.65 15.28,5.65C13.2,5.65 11.5,7.34 11.5,9.42V9.47L9.13,12.93L8.97,12.92C8.38,12.92 7.83,13.1 7.38,13.41L2,11.2C2.43,6.05 6.73,2 12,2M8.28,17.17C9.08,17.5 10,17.13 10.33,16.33C10.66,15.53 10.28,14.62 9.5,14.29L8.22,13.76C8.71,13.58 9.26,13.57 9.78,13.79C10.31,14 10.72,14.41 10.93,14.94C11.15,15.46 11.15,16.04 10.93,16.56C10.5,17.64 9.23,18.16 8.15,17.71C7.65,17.5 7.27,17.12 7.06,16.67L8.28,17.17M17.8,9.42C17.8,10.81 16.67,11.94 15.28,11.94C13.9,11.94 12.77,10.81 12.77,9.42A2.5,2.5 0 0,1 15.28,6.91C16.67,6.91 17.8,8.04 17.8,9.42M13.4,9.42C13.4,10.46 14.24,11.31 15.29,11.31C16.33,11.31 17.17,10.46 17.17,9.42C17.17,8.38 16.33,7.53 15.29,7.53C14.24,7.53 13.4,8.38 13.4,9.42Z"; +var mdiSteering = "M13,19.92C14.8,19.7 16.35,18.95 17.65,17.65C18.95,16.35 19.7,14.8 19.92,13H16.92C16.7,14 16.24,14.84 15.54,15.54C14.84,16.24 14,16.7 13,16.92V19.92M10,8H14L17,11H19.92C19.67,9.05 18.79,7.38 17.27,6C15.76,4.66 14,4 12,4C10,4 8.24,4.66 6.73,6C5.21,7.38 4.33,9.05 4.08,11H7L10,8M11,19.92V16.92C10,16.7 9.16,16.24 8.46,15.54C7.76,14.84 7.3,14 7.08,13H4.08C4.3,14.77 5.05,16.3 6.35,17.6C7.65,18.9 9.2,19.67 11,19.92M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; +var mdiSteeringOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.25,20.5C15.7,21.5 13.95,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,10.05 2.5,8.3 3.5,6.75L2,5.27M13,19.92C14,19.8 14.93,19.5 15.78,19.05L13.5,16.78C13.34,16.84 13.16,16.88 13,16.92V19.92M4.08,11H7L7.37,10.63L4.96,8.23C4.5,9.08 4.21,10 4.08,11M19.92,13H16.92C16.8,13.54 16.6,14.05 16.33,14.5L9.91,8.09L10,8H14L17,11H19.92C19.67,9.05 18.79,7.38 17.27,6C15.76,4.66 14,4 12,4C10.26,4 8.71,4.5 7.34,5.5L5.91,4.09C7.66,2.71 9.69,2 12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.31 21.29,16.34 19.91,18.09L18.5,16.67C19.28,15.59 19.76,14.36 19.92,13M11,19.92V16.92C10,16.7 9.16,16.24 8.46,15.54C7.76,14.84 7.3,14 7.08,13H4.08C4.3,14.77 5.05,16.3 6.35,17.6C7.65,18.9 9.2,19.67 11,19.92Z"; +var mdiStepBackward = "M19,5V19H16V5M14,5V19L3,12"; +var mdiStepBackward2 = "M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z"; +var mdiStepForward = "M5,5V19H8V5M10,5V19L21,12"; +var mdiStepForward2 = "M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z"; +var mdiStethoscope = "M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z"; +var mdiSticker = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; +var mdiStickerAlert = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M13 17H11V15H13V16M13 13H11V7H13V12M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; +var mdiStickerAlertOutline = "M11 15H13V17H11V15M11 13H13V7H11V13M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; +var mdiStickerCheck = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M7 12.5L8.3 11.1L10.4 13.2L15.6 8L17 9.4L10.5 16L7 12.5M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; +var mdiStickerCheckOutline = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M20 15H18.5C16.6 15 15 16.6 15 18.5V20H5.8C4.8 20 4 19.2 4 18.2V5.8C4 4.8 4.8 4 5.8 4H18.3C19.3 4 20.1 4.8 20.1 5.8V15M15.2 8.2L16.7 9.7L10.7 15.7L7.2 12.2L8.7 10.7L10.7 12.7L15.2 8.2Z"; +var mdiStickerCircleOutline = "M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z"; +var mdiStickerEmoji = "M5.5,2C3.56,2 2,3.56 2,5.5V18.5C2,20.44 3.56,22 5.5,22H16L22,16V5.5C22,3.56 20.44,2 18.5,2H5.5M5.75,4H18.25A1.75,1.75 0 0,1 20,5.75V15H18.5C16.56,15 15,16.56 15,18.5V20H5.75A1.75,1.75 0 0,1 4,18.25V5.75A1.75,1.75 0 0,1 5.75,4M14.44,6.77C14.28,6.77 14.12,6.79 13.97,6.83C13.03,7.09 12.5,8.05 12.74,9C12.79,9.15 12.86,9.3 12.95,9.44L16.18,8.56C16.18,8.39 16.16,8.22 16.12,8.05C15.91,7.3 15.22,6.77 14.44,6.77M8.17,8.5C8,8.5 7.85,8.5 7.7,8.55C6.77,8.81 6.22,9.77 6.47,10.7C6.5,10.86 6.59,11 6.68,11.16L9.91,10.28C9.91,10.11 9.89,9.94 9.85,9.78C9.64,9 8.95,8.5 8.17,8.5M16.72,11.26L7.59,13.77C8.91,15.3 11,15.94 12.95,15.41C14.9,14.87 16.36,13.25 16.72,11.26Z"; +var mdiStickerMinus = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M8 11H16V13H8V11M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; +var mdiStickerMinusOutline = "M8 11H16V13H8V11M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; +var mdiStickerOutline = "M5.5 2C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2H5.5M5.8 4H18.3C19.3 4 20.1 4.8 20.1 5.8V15H18.6C16.7 15 15.1 16.6 15.1 18.5V20H5.8C4.8 20 4 19.2 4 18.2V5.8C4 4.8 4.8 4 5.8 4"; +var mdiStickerPlus = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M13 16H11V13H8V11H11V8H13V11H16V13H13V16M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; +var mdiStickerPlusOutline = "M13 11H16V13H13V16H11V13H8V11H11V8H13V11M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; +var mdiStickerRemove = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M12 13.4L9.9 15.5L8.5 14.1L10.6 12L8.5 9.9L9.9 8.5L12 10.6L14.1 8.5L15.5 9.9L13.4 12L15.5 14.1L14.1 15.5L12 13.4M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; +var mdiStickerRemoveOutline = "M16 9.4L13.4 12L16 14.6L14.6 16L12 13.4L9.4 16L8 14.6L10.6 12L8 9.4L9.4 8L12 10.6L14.6 8L16 9.4M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; +var mdiStocking = "M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z"; +var mdiStomach = "M4 18C4.67 19.85 6.07 22 12 22C14.36 22 17.07 21.93 19 20C20 19 22 17 22 11S20 4 18 4C16.62 4 15 4 14 6V6.03A1.82 1.82 0 0 1 12.13 6.95C11 6.81 11 6.37 11 6V2H9V6A2.92 2.92 0 0 0 12 9C13 9 13 10.78 13 12C13 13.89 12.5 15.26 11 16C8.69 17.15 6.39 17 5.61 15.47A1.5 1.5 0 0 0 3.14 14.87A3.67 3.67 0 0 0 2 18V22H4Z"; +var mdiStop = "M18,18H6V6H18V18Z"; +var mdiStopCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9"; +var mdiStopCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9"; +var mdiStore = "M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z"; +var mdiStore24Hour = "M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z"; +var mdiStoreMinus = "M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M15 18V20H23V18"; +var mdiStoreOutline = "M18.36 9L18.96 12H5.04L5.64 9H18.36M20 4H4V6H20V4M20 7H4L3 12V14H4V20H14V14H18V20H20V14H21V12L20 7M6 18V14H12V18H6Z"; +var mdiStorePlus = "M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M18 15V18H15V20H18V23H20V20H23V18H20V15"; +var mdiStoreRemove = "M4 4H20V6H4V4M15.46 16.88L16.88 15.46L19 17.59L21.12 15.47L22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.47 16.88M4 7H20L21 12V13.34C20.33 13.09 19.62 12.96 18.91 12.96C17.71 12.96 16.54 13.33 15.54 14H14V15.53C13.3 16.53 12.92 17.73 12.92 18.95L13 20H4V14H3V12L4 7M6 14V18H12V14H6Z"; +var mdiStorefront = "M5.06 3C4.63 3 4.22 3.14 3.84 3.42C3.46 3.7 3.24 4.06 3.14 4.5L2.11 8.91C1.86 10 2.06 10.92 2.69 11.73C2.81 11.85 2.93 11.97 3.04 12.07C3.63 12.64 4.28 13 5.22 13C6.16 13 6.91 12.59 7.47 12.05C8.1 12.67 8.86 13 9.8 13C10.64 13 11.44 12.63 12 12.07C12.68 12.7 13.45 13 14.3 13C15.17 13 15.91 12.67 16.54 12.05C17.11 12.62 17.86 13 18.81 13C19.76 13 20.43 12.65 21 12.06C21.09 11.97 21.18 11.87 21.28 11.77C21.94 10.95 22.14 10 21.89 8.91L20.86 4.5C20.73 4.06 20.5 3.7 20.13 3.42C19.77 3.14 19.38 3 18.94 3M18.89 4.97L19.97 9.38C20.06 9.81 19.97 10.2 19.69 10.55C19.44 10.86 19.13 11 18.75 11C18.44 11 18.17 10.9 17.95 10.66C17.73 10.43 17.61 10.16 17.58 9.84L16.97 5M5.06 5H7.03L6.42 9.84C6.3 10.63 5.91 11 5.25 11C4.84 11 4.53 10.86 4.31 10.55C4.03 10.2 3.94 9.81 4.03 9.38M9.05 5H11V9.7C11 10.05 10.89 10.35 10.64 10.62C10.39 10.88 10.08 11 9.7 11C9.36 11 9.07 10.88 8.84 10.59C8.61 10.3 8.5 10 8.5 9.66V9.5M13 5H14.95L15.5 9.5C15.58 9.92 15.5 10.27 15.21 10.57C14.95 10.87 14.61 11 14.2 11C13.89 11 13.61 10.88 13.36 10.62C13.11 10.35 13 10.05 13 9.7M3 14.03V19C3 20.11 3.89 21 5 21C9.67 21 14.33 21 19 21C20.1 21 21 20.11 21 19V14.05C20.45 14.63 19.75 14.96 19 15C18 15.03 17.25 14.74 16.54 14.05C15.94 14.65 15.14 15 14.3 15C13.4 15 12.6 14.64 12 14.07C11.43 14.64 10.65 15 9.78 15C8.87 15 8.07 14.65 7.47 14.05C6.89 14.64 6.1 15 5.23 15C4.33 15 3.66 14.65 3 14.03Z"; +var mdiStorefrontOutline = "M5.06 3C4.63 3 4.22 3.14 3.84 3.42S3.24 4.06 3.14 4.5L2.11 8.91C1.86 10 2.06 10.95 2.72 11.77L3 12.05V19C3 19.5 3.2 20 3.61 20.39S4.5 21 5 21H19C19.5 21 20 20.8 20.39 20.39S21 19.5 21 19V12.05L21.28 11.77C21.94 10.95 22.14 10 21.89 8.91L20.86 4.5C20.73 4.06 20.5 3.7 20.13 3.42C19.77 3.14 19.38 3 18.94 3H5.06M18.89 4.97L19.97 9.38C20.06 9.81 19.97 10.2 19.69 10.55C19.44 10.86 19.13 11 18.75 11C18.44 11 18.17 10.9 17.95 10.66C17.73 10.43 17.61 10.16 17.58 9.84L16.97 5L18.89 4.97M5.06 5H7.03L6.42 9.84C6.3 10.63 5.91 11 5.25 11C4.84 11 4.53 10.86 4.31 10.55C4.03 10.2 3.94 9.81 4.03 9.38L5.06 5M9.05 5H11V9.7C11 10.05 10.89 10.35 10.64 10.62C10.39 10.88 10.08 11 9.7 11C9.36 11 9.07 10.88 8.84 10.59S8.5 10 8.5 9.66V9.5L9.05 5M13 5H14.95L15.5 9.5C15.58 9.92 15.5 10.27 15.21 10.57C14.95 10.87 14.61 11 14.2 11C13.89 11 13.61 10.88 13.36 10.62C13.11 10.35 13 10.05 13 9.7V5M7.45 12.05C8.08 12.67 8.86 13 9.8 13C10.64 13 11.38 12.67 12 12.05C12.69 12.67 13.45 13 14.3 13C15.17 13 15.92 12.67 16.55 12.05C17.11 12.67 17.86 13 18.8 13H19.03V19H5V13H5.25C6.16 13 6.89 12.67 7.45 12.05Z"; +var mdiStove = "M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z"; +var mdiStrategy = "M6.91 5.5L9.21 7.79L7.79 9.21L5.5 6.91L3.21 9.21L1.79 7.79L4.09 5.5L1.79 3.21L3.21 1.79L5.5 4.09L7.79 1.79L9.21 3.21M22.21 16.21L20.79 14.79L18.5 17.09L16.21 14.79L14.79 16.21L17.09 18.5L14.79 20.79L16.21 22.21L18.5 19.91L20.79 22.21L22.21 20.79L19.91 18.5M20.4 6.83L17.18 11L15.6 9.73L16.77 8.23A9.08 9.08 0 0 0 10.11 13.85A4.5 4.5 0 1 1 7.5 13A4 4 0 0 1 8.28 13.08A11.27 11.27 0 0 1 16.43 6.26L15 5.18L16.27 3.6M10 17.5A2.5 2.5 0 1 0 7.5 20A2.5 2.5 0 0 0 10 17.5Z"; +var mdiStretchToPage = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M9,19H5V15L6.29,16.29L7.83,14.75L9.25,16.17L7.71,17.71M7.83,9.25L6.29,7.71L5,9V5H9L7.71,6.29L9.25,7.83M19,19H15L16.29,17.71L14.75,16.17L16.17,14.75L17.71,16.29L19,15M19,9L17.71,7.71L16.17,9.25L14.75,7.83L16.29,6.29L15,5H19"; +var mdiStretchToPageOutline = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M20,20H4V4H20M8.83,10.25L7.29,8.71L6,10V6H10L8.71,7.29L10.25,8.83M13.75,8.83L15.29,7.29L14,6H18V10L16.71,8.71L15.17,10.25M15.17,13.75L16.71,15.29L18,14V18H14L15.29,16.71L13.75,15.17M10.25,15.17L8.71,16.71L10,18H6V14L7.29,15.29L8.83,13.75"; +var mdiStringLights = "M22.56 11.39C22.36 10.59 21.82 9.85 21.05 9.44L20.63 7.74C21.11 7.58 21.57 7.41 22 7.23V5C20 6.07 16.53 7.03 12 7.03S4 6.07 2 5V7.23C2.43 7.41 2.89 7.58 3.37 7.74L2.95 9.44C2.18 9.85 1.64 10.59 1.44 11.39C.905 13.57 .385 17.31 2.92 17.93C4 18.2 6 17.89 7.27 12.82C7.46 12 7.33 11.12 6.84 10.39L7.26 8.67C8.14 8.81 9.05 8.9 10 8.96V10.74C9.35 11.33 9 12.17 9 13C9 15.24 9.39 19 12 19C13.12 19 15 18.22 15 13C15 12.17 14.65 11.33 14 10.74V8.96C14.95 8.9 15.86 8.81 16.74 8.67L17.16 10.39C16.67 11.12 16.54 12 16.73 12.82C18 17.89 20 18.2 21.08 17.93C23.61 17.31 23.09 13.57 22.56 11.39M5.81 12.47C5.81 12.47 4.74 16.84 3.28 16.5C1.82 16.12 2.9 11.75 2.9 11.75S3.26 10.29 4.71 10.65 5.81 12.47 5.81 12.47M12 17.5C10.5 17.5 10.5 13 10.5 13S10.5 11.5 12 11.5 13.5 13 13.5 13 13.5 17.5 12 17.5M20.72 16.5C19.27 16.84 18.19 12.47 18.19 12.47S17.83 11 19.29 10.65 21.1 11.75 21.1 11.75 22.18 16.12 20.72 16.5Z"; +var mdiStringLightsOff = "M14 10.74V8.96C14.95 8.9 15.86 8.81 16.74 8.67L17.16 10.39C16.67 11.12 16.54 12 16.73 12.82C16.82 13.17 16.91 13.5 17 13.8L21.12 17.92C23.61 17.26 23.09 13.55 22.56 11.39C22.36 10.59 21.82 9.85 21.05 9.44L20.63 7.74C21.11 7.58 21.57 7.41 22 7.23V5C20 6.07 16.53 7.03 12 7.03C11.37 7.03 10.76 7 10.17 6.97M20.72 16.5C19.27 16.84 18.19 12.47 18.19 12.47S17.83 11 19.29 10.65 21.1 11.75 21.1 11.75 22.18 16.12 20.72 16.5M14.95 14.29L13.5 12.83V12.83L12.18 11.5H12.18L10 9.34V9.34L9.58 8.93H9.59L7.32 6.66H7.32L2.39 1.73L1.11 3L3.91 5.8C3.19 5.55 2.53 5.28 2 5V7.23C2.43 7.41 2.89 7.58 3.37 7.74L2.95 9.44C2.18 9.85 1.64 10.59 1.44 11.39C.905 13.57 .385 17.31 2.92 17.93C4 18.2 6 17.89 7.27 12.82C7.46 12 7.33 11.12 6.84 10.39L7.17 9.06L9.5 11.38C9.18 11.87 9 12.44 9 13C9 15.24 9.39 19 12 19C12.8 19 13.97 18.59 14.59 16.5L20.84 22.73L22.11 21.46L14.95 14.3L14.95 14.29M5.81 12.47C5.81 12.47 4.74 16.84 3.28 16.5C1.82 16.12 2.9 11.75 2.9 11.75S3.26 10.29 4.71 10.65 5.81 12.47 5.81 12.47M12 17.5C10.5 17.5 10.5 13 10.5 13S10.5 12.77 10.6 12.5L13.32 15.21C13.13 16.35 12.76 17.5 12 17.5Z"; +var mdiSubdirectoryArrowLeft = "M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z"; +var mdiSubdirectoryArrowRight = "M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z"; +var mdiSubmarine = "M8 3.67C6.78 4.53 5.39 4.93 4 5H2V7H4C5.37 7 6.74 6.65 8 6C10.5 7.3 13.5 7.3 16 6C17.26 6.65 18.62 6.94 20 7H22V5H20C18.61 5 17.22 4.53 16 3.67C13.56 5.38 10.44 5.38 8 3.67M16 8.67L15 10V12H14L12 14H9L6 16L5 14H4V16L2 17L4 18V20H5.14L6 18L9 20H20A2 2 0 0 0 22 18V16A2 2 0 0 0 20 14H18L17 13V12H16V10H17V8.67Z"; +var mdiSubtitles = "M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M4,12H8V14H4V12M14,18H4V16H14V18M20,18H16V16H20V18M20,14H10V12H20V14Z"; +var mdiSubtitlesOutline = "M20,4A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20M20,18V6H4V18H20M6,10H8V12H6V10M6,14H14V16H6V14M16,14H18V16H16V14M10,10H18V12H10V10Z"; +var mdiSubway = "M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z"; +var mdiSubwayAlertVariant = "M16 11V6H11V11H16M14.5 17C15.3 17 16 16.3 16 15.5C16 14.7 15.3 14 14.5 14S13 14.7 13 15.5C13 16.3 13.7 17 14.5 17M9 11V6H4V11H9M5.5 17C6.3 17 7 16.3 7 15.5C7 14.7 6.3 14 5.5 14S4 14.7 4 15.5C4 16.3 4.7 17 5.5 17M10 2C14.4 2 18 2.5 18 6V15.5C18 17.4 16.4 19 14.5 19L16 20.5V21H4V20.5L5.5 19C3.6 19 2 17.4 2 15.5V6C2 2.5 5.6 2 10 2M20 13V7H22V13H20M20 17V15H22V17H20Z"; +var mdiSubwayVariant = "M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z"; +var mdiSummit = "M15,3H17L22,5L17,7V10.17L22,21H2L8,13L11.5,17.7L15,10.17V3Z"; +var mdiSunglasses = "M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z"; +var mdiSurroundSound = "M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; +var mdiSurroundSound20 = "M17,7H19A2,2 0 0,1 21,9V15A2,2 0 0,1 19,17H17A2,2 0 0,1 15,15V9A2,2 0 0,1 17,7M17,9V15H19V9H17M9,17H3V15L7,9H3V7H7A2,2 0 0,1 9,9C9,9.42 8.87,9.81 8.65,10.13L5.41,15H9V17M12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17Z"; +var mdiSurroundSound21 = "M4 7V9H8V11H6A2 2 0 0 0 4 13V17H10V15H6V13H8A2 2 0 0 0 10 11V9A2 2 0 0 0 8 7H4M16 7V9H18V17H20V7H16M12 15V17H14V15H12Z"; +var mdiSurroundSound31 = "M13,17A1,1 0 0,1 12,16A1,1 0 0,1 13,15A1,1 0 0,1 14,16A1,1 0 0,1 13,17M19,7V15H20V17H16V15H17V9H16L17,7H19M4,7H8A2,2 0 0,1 10,9V15A2,2 0 0,1 8,17H4V15H8V13H5V11H8V9H4V7Z"; +var mdiSurroundSound51 = "M13,17A1,1 0 0,1 12,16A1,1 0 0,1 13,15A1,1 0 0,1 14,16A1,1 0 0,1 13,17M19,7V15H20V17H16V15H17V9H16L17,7H19M6,13A2,2 0 0,1 4,11V7H10V9H6V11H8A2,2 0 0,1 10,13V15A2,2 0 0,1 8,17H4V15H8V13H6Z"; +var mdiSurroundSound512 = "M2 8V13H5V14H2V16H5C6.11 16 7 15.11 7 14V13C7 11.9 6.11 11 5 11H4V10H7V8H2M10 8V10H11V16H13V8H10M17 8V10H20V11H19C17.9 11 17 11.9 17 13V16H22V14H19V13H20C21.11 13 22 12.11 22 11V10C22 8.9 21.11 8 20 8H17M8 14V16H10V14H8M14 14V16H16V14H14Z"; +var mdiSurroundSound71 = "M12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17M18,7V15H19V17H15V15H16V9H15L16,7H18M11,7L8,17H6L8.4,9H5V7H11Z"; +var mdiSvg = "M5.13,10.71H8.87L6.22,8.06C5.21,8.06 4.39,7.24 4.39,6.22A1.83,1.83 0 0,1 6.22,4.39C7.24,4.39 8.06,5.21 8.06,6.22L10.71,8.87V5.13C10,4.41 10,3.25 10.71,2.54C11.42,1.82 12.58,1.82 13.29,2.54C14,3.25 14,4.41 13.29,5.13V8.87L15.95,6.22C15.95,5.21 16.76,4.39 17.78,4.39C18.79,4.39 19.61,5.21 19.61,6.22C19.61,7.24 18.79,8.06 17.78,8.06L15.13,10.71H18.87C19.59,10 20.75,10 21.46,10.71C22.18,11.42 22.18,12.58 21.46,13.29C20.75,14 19.59,14 18.87,13.29H15.13L17.78,15.95C18.79,15.95 19.61,16.76 19.61,17.78A1.83,1.83 0 0,1 17.78,19.61C16.76,19.61 15.95,18.79 15.95,17.78L13.29,15.13V18.87C14,19.59 14,20.75 13.29,21.46C12.58,22.18 11.42,22.18 10.71,21.46C10,20.75 10,19.59 10.71,18.87V15.13L8.06,17.78C8.06,18.79 7.24,19.61 6.22,19.61C5.21,19.61 4.39,18.79 4.39,17.78C4.39,16.76 5.21,15.95 6.22,15.95L8.87,13.29H5.13C4.41,14 3.25,14 2.54,13.29C1.82,12.58 1.82,11.42 2.54,10.71C3.25,10 4.41,10 5.13,10.71Z"; +var mdiSwapHorizontal = "M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z"; +var mdiSwapHorizontalBold = "M8,10V13H14V18H8V21L2,15.5L8,10M22,8.5L16,3V6H10V11H16V14L22,8.5Z"; +var mdiSwapHorizontalCircle = "M22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22 22 17.5 22 12M15 6.5L18.5 10L15 13.5V11H11V9H15V6.5M9 17.5L5.5 14L9 10.5V13H13V15H9V17.5Z"; +var mdiSwapHorizontalCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M15 6.5V9H11V11H15V13.5L18.5 10L15 6.5M9 10.5L5.5 14L9 17.5V15H13V13H9V10.5Z"; +var mdiSwapHorizontalVariant = "M4,6L8,10V7H16A2,2 0 0,1 18,9A2,2 0 0,1 16,11H8A4,4 0 0,0 4,15A4,4 0 0,0 8,19H16V22L20,18L16,14V17H8A2,2 0 0,1 6,15A2,2 0 0,1 8,13H16A4,4 0 0,0 20,9A4,4 0 0,0 16,5H8V2L4,6Z"; +var mdiSwapVertical = "M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z"; +var mdiSwapVerticalBold = "M14,8H11V14H6V8H3L8.5,2L14,8M15.5,22L21,16H18V10H13V16H10L15.5,22Z"; +var mdiSwapVerticalCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M6.5 9L10 5.5L13.5 9H11V13H9V9H6.5M17.5 15L14 18.5L10.5 15H13V11H15V15H17.5Z"; +var mdiSwapVerticalCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M6.5 9L10 5.5L13.5 9H11V13H9V9H6.5M17.5 15L14 18.5L10.5 15H13V11H15V15H17.5Z"; +var mdiSwapVerticalVariant = "M18,4L14,8H17V16A2,2 0 0,1 15,18A2,2 0 0,1 13,16V8A4,4 0 0,0 9,4A4,4 0 0,0 5,8V16H2L6,20L10,16H7V8A2,2 0 0,1 9,6A2,2 0 0,1 11,8V16A4,4 0 0,0 15,20A4,4 0 0,0 19,16V8H22L18,4Z"; +var mdiSwim = "M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z"; +var mdiSwitch = "M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z"; +var mdiSword = "M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z"; +var mdiSwordCross = "M6.2,2.44L18.1,14.34L20.22,12.22L21.63,13.63L19.16,16.1L22.34,19.28C22.73,19.67 22.73,20.3 22.34,20.69L21.63,21.4C21.24,21.79 20.61,21.79 20.22,21.4L17,18.23L14.56,20.7L13.15,19.29L15.27,17.17L3.37,5.27V2.44H6.2M15.89,10L20.63,5.26V2.44H17.8L13.06,7.18L15.89,10M10.94,15L8.11,12.13L5.9,14.34L3.78,12.22L2.37,13.63L4.84,16.1L1.66,19.29C1.27,19.68 1.27,20.31 1.66,20.7L2.37,21.41C2.76,21.8 3.39,21.8 3.78,21.41L7,18.23L9.44,20.7L10.85,19.29L8.73,17.17L10.94,15Z"; +var mdiSyllabaryHangul = "M8 4V6H4V8H6.39C5.55 8.74 5 9.8 5 11C5 13.2 6.8 15 9 15C11.2 15 13 13.2 13 11C13 9.8 12.45 8.74 11.61 8H14V6H10V4M15 4V16H17V11H20V9H17V4M9 9C10.12 9 11 9.88 11 11C11 12.12 10.12 13 9 13C7.88 13 7 12.12 7 11C7 9.88 7.88 9 9 9M7 16V20H17V18H9V16Z"; +var mdiSyllabaryHiragana = "M9 4V6H6V8H9V10C6.25 10 4 12.27 4 15.03C4 17.8 6.26 20.06 9.03 20.06C9.89 20.06 10.72 19.77 11.4 19.26C11.63 19.54 11.88 19.82 12.15 20.09L13.56 18.67C13.3 18.42 13.07 18.15 12.86 17.89L13.86 16.89C14.93 15.82 15.78 14.23 16.42 12.59C17.31 13.11 18 13.9 18 15C18 16.32 17.47 17.6 16.54 18.54L17.95 19.95C19.26 18.64 20 16.86 20 15C20 13.04 18.82 11.36 17.15 10.55L17.5 9.29L15.55 8.78L15.21 10.05C15.13 10.05 15.06 10 14.97 10H11V8H16V6H11V4M11 12H14.5C13.94 13.37 13.19 14.72 12.44 15.47L11.79 16.13C11.25 14.93 11 13.59 11 12M9 12C9 14.07 9.41 15.94 10.3 17.59C9.94 17.89 9.5 18.06 9.03 18.06C7.33 18.06 6 16.73 6 15.03C6 13.34 7.32 12 9 12Z"; +var mdiSyllabaryKatakana = "M4 4V6H18V6.09L14.29 9.79L15.71 11.21L20 6.91V4M11 9V13C11 15.78 10.25 16.89 8.36 18.46L9.64 20C11.75 18.24 13 16.22 13 13V9Z"; +var mdiSyllabaryKatakanaHalfwidth = "M8 4V6H14L13 10.81L15 11.2L16 6.1V4M10 9V12C10 14.86 9.34 17.29 8.08 18.61L9.5 20C11.35 18.08 12 15.15 12 12V9Z"; +var mdiSymbol = "M2 7V14H4V7H2M6 7V9H10V11H8V14H10V13C11.11 13 12 12.11 12 11V9C12 7.89 11.11 7 10 7H6M15.8 7L15.6 9H14V11H15.4L15.2 13H14V15H15L14.8 17H16.8L17 15H18.4L18.2 17H20.2L20.4 15H22V13H20.6L20.8 11H22V9H21L21.2 7H19.2L19 9H17.6L17.8 7H15.8M17.4 11H18.8L18.6 13H17.2L17.4 11M2 15V17H4V15H2M8 15V17H10V15H8Z"; +var mdiSymfony = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.37,5.7V5.7C17.39,5.67 18.15,6.13 18.21,6.84C18.22,7.15 18.04,7.75 17.42,7.77C16.95,7.79 16.63,7.5 16.62,7.09C16.61,6.93 16.88,6.42 16.88,6.33C16.87,6.06 16.47,6.05 16.36,6.06C14.86,6.11 14.46,8.13 14.14,9.78L14,10.65C14.84,10.78 15.46,10.62 15.8,10.4C16.28,10.09 15.66,9.77 15.74,9.41C15.82,9.04 16.15,8.87 16.41,8.86C16.78,8.85 17.04,9.23 17.03,9.62C17,10.26 16.17,11.14 14.5,11.1C14.28,11.1 14.09,11.08 13.91,11.06C13.3,14.16 12.92,16 11.56,17.58C10.39,18.97 9.2,19.18 8.67,19.2C7.67,19.24 7,18.71 7,18C6.97,17.32 7.57,16.94 7.97,16.93C8.5,16.91 8.87,17.3 8.88,17.74C8.9,18.11 8.7,18.23 8.57,18.3C8.5,18.37 8.35,18.45 8.36,18.6C8.36,18.67 8.43,18.82 8.65,18.81C9.07,18.8 9.34,18.59 9.54,18.45C10.5,17.65 10.88,16.24 11.37,13.68C11.63,12.23 11.82,11.3 12.1,10.38C11.42,9.87 11,9.23 10.09,9C9.46,8.81 9.08,8.96 8.81,9.3C8.5,9.71 8.6,10.23 8.9,10.54C10.05,11.82 10.39,12.38 10.26,13.14C10.06,14.35 8.62,15.27 6.92,14.75C5.47,14.3 5.2,13.28 5.37,12.71C5.53,12.22 5.92,12.12 6.31,12.24C6.73,12.37 6.89,12.87 6.77,13.26C6.75,13.3 6.55,13.67 6.5,13.79C6.41,14.1 6.83,14.31 7.12,14.4C7.77,14.6 8.4,14.26 8.55,13.73C8.7,13.25 8.4,12.91 8.27,12.78C7.38,11.8 6.76,10.93 7.06,9.95C7.18,9.58 7.42,9.18 7.78,8.91C8.53,8.36 9.35,8.26 10.12,8.5C11.13,8.77 11.61,9.44 12.24,9.95C12.59,8.93 13.08,7.92 13.81,7.07C14.47,6.3 15.35,5.74 16.37,5.7Z"; +var mdiSync = "M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z"; +var mdiSyncAlert = "M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z"; +var mdiSyncCircle = "M2 12A10 10 0 1 0 12 2A10 10 0 0 0 2 12M15.6 13.72A4 4 0 0 0 16 12A4 4 0 0 0 12 8V10L8.88 7L12 4V6A6 6 0 0 1 18 12A5.9 5.9 0 0 1 17.07 15.19M6 12A5.9 5.9 0 0 1 6.93 8.81L8.4 10.28A4 4 0 0 0 8 12A4 4 0 0 0 12 16V14L15 17L12 20V18A6 6 0 0 1 6 12Z"; +var mdiSyncOff = "M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z"; +var mdiTab = "M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H13V9H21V19Z"; +var mdiTabMinus = "M3,3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3H3M3,5H13V9H21V19H3V5M7,13V15H15V13H7Z"; +var mdiTabPlus = "M3,3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3H3M3,5H13V9H21V19H3V5M10,10V13H7V15H10V18H12V15H15V13H12V10H10Z"; +var mdiTabRemove = "M7.46,11.88L8.88,10.46L11,12.59L13.12,10.46L14.54,11.88L12.41,14L14.54,16.12L13.12,17.54L11,15.41L8.88,17.54L7.46,16.12L9.59,14L7.46,11.88M3,3H21A2,2 0 0,1 23,5V19A2,2 0 0,1 21,21H3A2,2 0 0,1 1,19V5A2,2 0 0,1 3,3M3,5V19H21V9H13V5H3Z"; +var mdiTabUnselected = "M1,9H3V7H1V9M1,13H3V11H1V13M1,5H3V3A2,2 0 0,0 1,5M9,21H11V19H9V21M1,17H3V15H1V17M3,21V19H1A2,2 0 0,0 3,21M21,3H13V9H23V5A2,2 0 0,0 21,3M21,17H23V15H21V17M9,5H11V3H9V5M5,21H7V19H5V21M5,5H7V3H5V5M21,21A2,2 0 0,0 23,19H21V21M21,13H23V11H21V13M13,21H15V19H13V21M17,21H19V19H17V21Z"; +var mdiTable = "M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z"; +var mdiTableAccount = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M23 22V21C23 19.67 20.33 19 19 19S15 19.67 15 21V22H23M19 14C17.9 14 17 14.9 17 16S17.9 18 19 18 21 17.11 21 16 20.11 14 19 14Z"; +var mdiTableAlert = "M3 4H17C18.11 4 19 4.89 19 6V18C19 19.11 18.11 20 17 20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4M3 8V12H9V8H3M11 8V12H17V8H11M3 14V18H9V14H3M11 14V18H17V14H11M23 7H21V13H23V7M23 15H21V17H23V15Z"; +var mdiTableArrowDown = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M15.94 18.5H17.94V14.5H19.94V18.5H21.94L18.94 21.5L15.94 18.5"; +var mdiTableArrowLeft = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M18.44 15V17H22.44V19H18.44V21L15.44 18L18.44 15"; +var mdiTableArrowRight = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M19.44 21V19H15.44V17H19.44V15L22.44 18L19.44 21"; +var mdiTableArrowUp = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M21.94 17.5H19.94V21.5H17.94V17.5H15.94L18.94 14.5L21.94 17.5"; +var mdiTableBorder = "M21,19A1,1 0 0,1 20,20H19V18H21V19M15,20V18H17V20H15M11,20V18H13V20H11M7,20V18H9V20H7M4,20A1,1 0 0,1 3,19V18H5V20H4M19,4H5A2,2 0 0,0 3,6V8H5L11,8H13L19,8H21V6C21,4.89 20.11,4 19,4M5,14H3V16H5V14M5,10H3V12H5V10M21,10H19V12H21V10M21,14H19V16H21V14M11,16V14H13V16H11M11,12V10H13V12H11"; +var mdiTableCancel = "M3 3H17C18.11 3 19 3.9 19 5V12.08C17.45 11.82 15.92 12.18 14.68 13H11V17H12.08C11.97 17.68 11.97 18.35 12.08 19H3C1.9 19 1 18.11 1 17V5C1 3.9 1.9 3 3 3M3 7V11H9V7H3M11 7V11H17V7H11M3 13V17H9V13H3M18.5 14C16 14 14 16 14 18.5S16 23 18.5 23 23 21 23 18.5 21 14 18.5 14M18.5 21.5C16.84 21.5 15.5 20.16 15.5 18.5C15.5 17.94 15.65 17.42 15.92 17L20 21.08C19.58 21.35 19.06 21.5 18.5 21.5M21.08 20L17 15.92C17.42 15.65 17.94 15.5 18.5 15.5C20.16 15.5 21.5 16.84 21.5 18.5C21.5 19.06 21.35 19.58 21.08 20Z"; +var mdiTableChair = "M12 22H6A2 2 0 0 1 8 20V8H2V5H16V8H10V20A2 2 0 0 1 12 22M22 2V22H20V15H15V22H13V14A2 2 0 0 1 15 12H20V2Z"; +var mdiTableCheck = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M17.75 21L15 18L16.16 16.84L17.75 18.43L21.34 14.84L22.5 16.25L17.75 21"; +var mdiTableClock = "M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82M20 10.26V5C20 3.9 19.11 3 18 3H4C2.9 3 2 3.9 2 5V17C2 18.11 2.9 19 4 19H9.68C10.81 21.36 13.21 23 16 23C19.87 23 23 19.87 23 16C23 13.62 21.81 11.53 20 10.26M18 7V9.29C17.37 9.11 16.7 9 16 9C14.5 9 13.13 9.47 12 10.26V7H18M4 7H10V11H4V7M4 17V13H9.68C9.25 13.91 9 14.93 9 16C9 16.34 9.03 16.67 9.08 17H4M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21Z"; +var mdiTableCog = "M3 3H17C18.11 3 19 3.9 19 5V12.08C17.45 11.82 15.92 12.18 14.68 13H11V17H12.08C11.97 17.68 11.97 18.35 12.08 19H3C1.9 19 1 18.11 1 17V5C1 3.9 1.9 3 3 3M3 7V11H9V7H3M11 7V11H17V7H11M3 13V17H9V13H3M22.78 19.32L21.71 18.5C21.73 18.33 21.75 18.17 21.75 18S21.74 17.67 21.71 17.5L22.77 16.68C22.86 16.6 22.89 16.47 22.83 16.36L21.83 14.63C21.77 14.5 21.64 14.5 21.5 14.5L20.28 15C20 14.82 19.74 14.65 19.43 14.53L19.24 13.21C19.23 13.09 19.12 13 19 13H17C16.88 13 16.77 13.09 16.75 13.21L16.56 14.53C16.26 14.66 15.97 14.82 15.71 15L14.47 14.5C14.36 14.5 14.23 14.5 14.16 14.63L13.16 16.36C13.1 16.47 13.12 16.6 13.22 16.68L14.28 17.5C14.26 17.67 14.25 17.83 14.25 18S14.26 18.33 14.28 18.5L13.22 19.32C13.13 19.4 13.1 19.53 13.16 19.64L14.16 21.37C14.22 21.5 14.35 21.5 14.47 21.5L15.71 21C15.97 21.18 16.25 21.35 16.56 21.47L16.75 22.79C16.77 22.91 16.87 23 17 23H19C19.12 23 19.23 22.91 19.25 22.79L19.44 21.47C19.74 21.34 20 21.18 20.28 21L21.5 21.5C21.64 21.5 21.77 21.5 21.84 21.37L22.84 19.64C22.9 19.53 22.87 19.4 22.78 19.32M18 19.5C17.17 19.5 16.5 18.83 16.5 18S17.18 16.5 18 16.5 19.5 17.17 19.5 18 18.84 19.5 18 19.5Z"; +var mdiTableColumn = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,10V14H16V10H8M8,16V20H16V16H8M8,4V8H16V4H8Z"; +var mdiTableColumnPlusAfter = "M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z"; +var mdiTableColumnPlusBefore = "M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z"; +var mdiTableColumnRemove = "M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z"; +var mdiTableColumnWidth = "M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z"; +var mdiTableEdit = "M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z"; +var mdiTableEye = "M17 16.88C17.56 16.88 18 17.32 18 17.88S17.56 18.88 17 18.88 16 18.43 16 17.88 16.44 16.88 17 16.88M17 13.88C19.73 13.88 22.06 15.54 23 17.88C22.06 20.22 19.73 21.88 17 21.88S11.94 20.22 11 17.88C11.94 15.54 14.27 13.88 17 13.88M17 15.38C15.62 15.38 14.5 16.5 14.5 17.88S15.62 20.38 17 20.38 19.5 19.26 19.5 17.88 18.38 15.38 17 15.38M18 3H4C2.9 3 2 3.9 2 5V17C2 18.1 2.9 19 4 19H9.42C9.26 18.68 9.12 18.34 9 18C9.12 17.66 9.26 17.32 9.42 17H4V13H10V15.97C10.55 15.11 11.23 14.37 12 13.76V13H13.15C14.31 12.36 15.62 12 17 12C18.06 12 19.07 12.21 20 12.59V5C20 3.9 19.1 3 18 3M10 11H4V7H10V11M18 11H12V7H18V11Z"; +var mdiTableEyeOff = "M12 8.8L6.2 3H18C19.1 3 20 3.9 20 5V12.59C19.07 12.21 18.06 12 17 12C16.45 12 15.91 12.07 15.38 12.18L14.2 11H18V7H12V8.8M17.09 13.89L22.31 19.11C22.58 18.73 22.82 18.32 23 17.88C22.07 15.57 19.78 13.92 17.09 13.89M22.11 21.46L20.84 22.73L19.5 21.37C18.71 21.69 17.88 21.88 17 21.88C14.27 21.88 11.94 20.22 11 17.88C11.45 16.76 12.23 15.8 13.21 15.1L11.93 13.82C11.19 14.42 10.53 15.14 10 15.97V13H4V17H9.42C9.26 17.32 9.12 17.66 9 18C9.12 18.34 9.26 18.68 9.42 19H4C2.9 19 2 18.1 2 17V5C2 4.68 2.08 4.38 2.22 4.11L1.11 3L2.39 1.73L22.11 21.46M9.11 11L5.11 7H4V11H9.11M18.18 20.07L14.81 16.7C14.61 17.05 14.5 17.45 14.5 17.88C14.5 19.26 15.62 20.38 17 20.38C17.43 20.38 17.83 20.27 18.18 20.07Z"; +var mdiTableFurniture = "M2 7H22V10H20L21 19H18.5L17.94 14H6.06L5.5 19H3L4 10H2V7M17.5 10H6.5L6.29 12H17.71L17.5 10Z"; +var mdiTableHeadersEye = "M1 6V19A2 2 0 0 0 3 21H9V11H21V6A2 2 0 0 0 19 4H3A2 2 0 0 0 1 6M3 6H7V9H3M7 19H3V16H7M7 14H3V11H7M9 9V6H13V9M19 9H15V6H19M17 16A1 1 0 1 1 16 17A1 1 0 0 1 17 16M17 13A6.45 6.45 0 0 1 23 17A6.5 6.5 0 0 1 11 17A6.45 6.45 0 0 1 17 13M17 14.5A2.5 2.5 0 1 0 19.5 17A2.5 2.5 0 0 0 17 14.5"; +var mdiTableHeadersEyeOff = "M2.38 1.73L1.11 3L2.26 4.15A2 2 0 0 0 1 6V19A2 2 0 0 0 3 21H9V11H9.11L12.72 14.61A6.21 6.21 0 0 0 11 17A6.45 6.45 0 0 0 17 21A6.55 6.55 0 0 0 18.84 20.73L20.84 22.73L22.11 21.46L20.58 19.93M7 19H3V16H7M7 14H3V11H7M7 9H3V6H4.11L7 8.89M17 19.5A2.5 2.5 0 0 1 14.56 16.45L17.56 19.45A2.5 2.5 0 0 1 17 19.5M16.24 13L17.85 14.61A2.5 2.5 0 0 1 19.35 16.11L21.94 18.7A6.44 6.44 0 0 0 23 17A6.45 6.45 0 0 0 17 13H16.24M13 6V9H12.2L14.2 11H21V6A2 2 0 0 0 19 4H7.2L9.2 6M15 6H19V9H15Z"; +var mdiTableHeart = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M19 22.3L18.4 21.8C16.4 19.9 15 18.7 15 17.2C15 16 16 15 17.2 15C17.9 15 18.6 15.3 19 15.8C19.4 15.3 20.1 15 20.8 15C22 15 23 15.9 23 17.2C23 18.7 21.6 19.9 19.6 21.8L19 22.3"; +var mdiTableKey = "M16.83 17C16.42 15.83 15.31 15 14 15C12.34 15 11 16.34 11 18S12.34 21 14 21C15.31 21 16.42 20.17 16.83 19H19V21H21V19H22V17H16.83M14 19C13.45 19 13 18.55 13 18S13.45 17 14 17 15 17.45 15 18 14.55 19 14 19M9 18H4V14H10V15.03C10.91 13.81 12.36 13 14 13C15.1 13 16.14 13.37 17 14H18V15L18 15H20V6C20 4.89 19.11 4 18 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H9.42C9.15 19.39 9 18.71 9 18M12 8H18V12H12V8M4 8H10V12H4V8Z"; +var mdiTableLarge = "M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z"; +var mdiTableLargePlus = "M12.35 20H10V17H12.09C12.21 16.28 12.46 15.61 12.81 15H10V12H14V13.54C14.58 13 15.25 12.61 16 12.35V12H20V12.35C20.75 12.61 21.42 13 22 13.54V5C22 3.9 21.1 3 20 3H4C2.9 3 2 3.9 2 5V20C2 21.1 2.9 22 4 22H13.54C13 21.42 12.61 20.75 12.35 20M16 7H20V10H16V7M10 7H14V10H10V7M8 20H4V17H8V20M8 15H4V12H8V15M8 10H4V7H8V10M17 14H19V17H22V19H19V22H17V19H14V17H17V14"; +var mdiTableLargeRemove = "M12.35 20H10V17H12.09C12.21 16.28 12.46 15.61 12.81 15H10V12H14V13.54C14.58 13 15.25 12.61 16 12.35V12H20V12.35C20.75 12.61 21.42 13 22 13.54V5C22 3.9 21.1 3 20 3H4C2.9 3 2 3.9 2 5V20C2 21.1 2.9 22 4 22H13.54C13 21.42 12.61 20.75 12.35 20M16 7H20V10H16V7M10 7H14V10H10V7M8 20H4V17H8V20M8 15H4V12H8V15M8 10H4V7H8V10M14.46 15.88L15.88 14.46L18 16.59L20.12 14.46L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.46 15.88"; +var mdiTableLock = "M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16M13 18H12V14H14.26C14.54 13.21 15.04 12.5 15.69 12H12V8H18V11.05C18.17 11.03 18.33 11 18.5 11C19.03 11 19.53 11.1 20 11.26V6C20 4.89 19.11 4 18 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13V18M10 18H4V14H10V18M10 12H4V8H10V12Z"; +var mdiTableMergeCells = "M5,10H3V4H11V6H5V10M19,18H13V20H21V14H19V18M5,18V14H3V20H11V18H5M21,4H13V6H19V10H21V4M8,13V15L11,12L8,9V11H3V13H8M16,11V9L13,12L16,15V13H21V11H16Z"; +var mdiTableMinus = "M15 19V17H23V19H15M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z"; +var mdiTableMultiple = "M7 2H21C22.11 2 23 2.9 23 4V16C23 17.11 22.11 18 21 18H7C5.9 18 5 17.11 5 16V4C5 2.9 5.9 2 7 2M7 6V10H13V6H7M15 6V10H21V6H15M7 12V16H13V12H7M15 12V16H21V12H15M3 20V6H1V20C1 21.11 1.89 22 3 22H19V20H3Z"; +var mdiTableNetwork = "M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V3C21 1.9 20.11 1 19 1H5C3.9 1 3 1.9 3 3V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M13 5H19V9H13V5M13 11H19V15H13V11M5 5H11V9H5V5M5 15V11H11V15H5Z"; +var mdiTableOfContents = "M3,9H17V7H3V9M3,13H17V11H3V13M3,17H17V15H3V17M19,17H21V15H19V17M19,7V9H21V7H19M19,13H21V11H19V13Z"; +var mdiTableOff = "M22.11 21.46L2.39 1.73L1.11 3L3.22 5.11C3.08 5.38 3 5.68 3 6V18C3 19.11 3.9 20 5 20H18.11L20.84 22.73L22.11 21.46M10.11 12H5V8H6.11L10.11 12M11 18H5V14H11V18M13 18V14.89L16.11 18H13M13 9.8L7.2 4H19C20.11 4 21 4.89 21 6V17.8L19 15.8V14H17.2L15.2 12H19V8H13V9.8Z"; +var mdiTablePicnic = "M4 6H20V9H18L18.22 11H23V13H18.44L19 18H16.5L15.94 13H8.06L7.5 18H5L5.56 13H1V11H5.78L6 9H4M15.5 9H8.5L8.29 11H15.71Z"; +var mdiTablePlus = "M18,14H20V17H23V19H20V22H18V19H15V17H18V14M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z"; +var mdiTableRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.55 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M4 3H18C19.11 3 20 3.9 20 5V12.17C19.5 12.06 19 12 18.5 12C17.23 12 16.04 12.37 15.04 13H12V17H12.18C12.06 17.5 12 18 12 18.5L12 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z"; +var mdiTableRemove = "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z"; +var mdiTableRow = "M22,14A2,2 0 0,1 20,16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8H20A2,2 0 0,1 22,10V14M4,14H8V10H4V14M10,14H14V10H10V14M16,14H20V10H16V14Z"; +var mdiTableRowHeight = "M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z"; +var mdiTableRowPlusAfter = "M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z"; +var mdiTableRowPlusBefore = "M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z"; +var mdiTableRowRemove = "M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z"; +var mdiTableSearch = "M19.3,17.89C20.62,15.79 20,13 17.89,11.68C15.79,10.36 13,11 11.68,13.09C10.36,15.2 11,18 13.09,19.3C14.56,20.22 16.42,20.22 17.89,19.3L21,22.39L22.39,21L19.3,17.89M17.3,17.27C16.32,18.25 14.74,18.24 13.76,17.27C12.79,16.29 12.79,14.71 13.77,13.73C14.74,12.76 16.32,12.76 17.3,13.73C18.26,14.72 18.25,16.3 17.27,17.27H17.3M19,4H5A2,2 0 0,0 3,6V18A2,2 0 0,0 5,20H10.81C10.25,19.42 9.8,18.74 9.5,18H5V14H9.18C9.34,13.29 9.61,12.61 10,12H5V8H11V10.81C11.58,10.25 12.26,9.8 13,9.5V8H19V10C19.4,10.25 19.77,10.55 20.1,10.88C20.44,11.22 20.74,11.59 21,12V6A2,2 0 0,0 19,4Z"; +var mdiTableSettings = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z"; +var mdiTableSplitCell = "M19 14H21V20H3V14H5V18H19V14M3 4V10H5V6H19V10H21V4H3M11 11V13H8V15L5 12L8 9V11H11M16 11V9L19 12L16 15V13H13V11H16Z"; +var mdiTableStar = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M16.5 21.6L17.2 18.8L15 16.9L17.9 16.7L19 14L20.1 16.6L23 16.8L20.8 18.7L21.5 21.5L19 20.1L16.5 21.6Z"; +var mdiTableSync = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.76 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L19 23M4 3H18C19.11 3 20 3.9 20 5V11L19.5 11C17.66 11 16 11.77 14.81 13H12V17H13L13 17.5C13 18 13.06 18.5 13.17 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z"; +var mdiTableTennis = "M18.5,14C19.9,14 21,15.1 21,16.5C21,17.9 19.9,19 18.5,19C17.1,19 16,17.9 16,16.5C16,15.1 17.1,14 18.5,14M7,15C7,15 8,16 8,17V20.5C8,21.3 8.7,22 9.5,22C10.3,22 11,21.3 11,20.5V17C11,16 12,15 12,15H7M8,14H11C11,14 16,14 16,9C16,4 12,2 9.5,2C7,2 3,4 3,9C3,14 8,14 8,14Z"; +var mdiTablet = "M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z"; +var mdiTabletAndroid = "M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z"; +var mdiTabletCellphone = "M3,4H20A2,2 0 0,1 22,6V8H18V6H5V18H14V20H3A2,2 0 0,1 1,18V6A2,2 0 0,1 3,4M17,10H23A1,1 0 0,1 24,11V21A1,1 0 0,1 23,22H17A1,1 0 0,1 16,21V11A1,1 0 0,1 17,10M18,12V19H22V12H18Z"; +var mdiTabletDashboard = "M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4M7,8H13V13H7V8M14,8H17V10H14V8M17,11V16H14V11H17M7,14H13V16H7V14Z"; +var mdiTabletIpad = "M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z"; +var mdiTaco = "M19,18H5A4,4 0 0,1 1,14A8,8 0 0,1 9,6C10.06,6 11.07,6.21 12,6.58C12.93,6.21 13.94,6 15,6A8,8 0 0,1 23,14A4,4 0 0,1 19,18M3,14A2,2 0 0,0 5,16A2,2 0 0,0 7,14C7,11.63 8.03,9.5 9.67,8.04L9,8A6,6 0 0,0 3,14M19,16A2,2 0 0,0 21,14A6,6 0 0,0 15,8A6,6 0 0,0 9,14C9,14.73 8.81,15.41 8.46,16H19Z"; +var mdiTag = "M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z"; +var mdiTagArrowDown = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M7 19V15H5V19H3L6 22L9 19H7Z"; +var mdiTagArrowDownOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M8 18V14H6V18H4L7 21L10 18H8Z"; +var mdiTagArrowLeft = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M5 19H9V17H5V15L2 18L5 21V19Z"; +var mdiTagArrowLeftOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M5 19H9V17H5V15L2 18L5 21V19Z"; +var mdiTagArrowRight = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M6 17H2V19H6V21L9 18L6 15V17Z"; +var mdiTagArrowRightOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6 17H2V19H6V21L9 18L6 15V17Z"; +var mdiTagArrowUp = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M5 17V21H7V17H9L6 14L3 17H5Z"; +var mdiTagArrowUpOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6 17V21H8V17H10L7 14L4 17H6Z"; +var mdiTagFaces = "M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z"; +var mdiTagHeart = "M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z"; +var mdiTagHeartOutline = "M4,2A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4V2M11,4L20,13L13,20L4,11V4H11V4H11M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M10.95,10.5C9.82,10.5 8.9,11.42 8.9,12.55C8.9,13.12 9.13,13.62 9.5,14L13,17.5L16.5,14C16.87,13.63 17.1,13.11 17.1,12.55A2.05,2.05 0 0,0 15.05,10.5C14.5,10.5 13.97,10.73 13.6,11.1L13,11.7L12.4,11.11C12.03,10.73 11.5,10.5 10.95,10.5Z"; +var mdiTagMinus = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M10,19H2V17H10V19Z"; +var mdiTagMinusOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M10 19H2V17H10V19Z"; +var mdiTagMultiple = "M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z"; +var mdiTagMultipleOutline = "M6.5 10C7.3 10 8 9.3 8 8.5S7.3 7 6.5 7 5 7.7 5 8.5 5.7 10 6.5 10M9 6L16 13L11 18L4 11V6H9M9 4H4C2.9 4 2 4.9 2 6V11C2 11.6 2.2 12.1 2.6 12.4L9.6 19.4C9.9 19.8 10.4 20 11 20S12.1 19.8 12.4 19.4L17.4 14.4C17.8 14 18 13.5 18 13C18 12.4 17.8 11.9 17.4 11.6L10.4 4.6C10.1 4.2 9.6 4 9 4M13.5 5.7L14.5 4.7L21.4 11.6C21.8 12 22 12.5 22 13S21.8 14.1 21.4 14.4L16 19.8L15 18.8L20.7 13L13.5 5.7Z"; +var mdiTagOff = "M18.33 8.5L22.92 3.92L21.5 2.5L2.5 21.5L3.92 22.92L8.5 18.33L11.58 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M5.61 15.43L15.47 5.65L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.41M5.5 4A1.5 1.5 0 1 1 4 5.5A1.5 1.5 0 0 1 5.5 4Z"; +var mdiTagOffOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M18.33 8.5L22.92 3.92L21.5 2.5L2.5 21.5L3.92 22.92L8.5 18.33L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L9.92 16.92L16.92 9.92L20 13M5.61 15.43L7 14L4 11V4H11L14.06 7.06L15.47 5.66L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42M5 6.5A1.5 1.5 0 1 0 6.5 5A1.5 1.5 0 0 0 5 6.5Z"; +var mdiTagOutline = "M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z"; +var mdiTagPlus = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M10,19H7V22H5V19H2V17H5V14H7V17H10V19Z"; +var mdiTagPlusOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L3 12.82A5.62 5.62 0 0 1 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92A5.57 5.57 0 0 1 11.18 21L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M10 19H7V22H5V19H2V17H5V14H7V17H10Z"; +var mdiTagRemove = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M8.12,21.54L6,19.41L3.88,21.54L2.46,20.12L4.59,18L2.46,15.88L3.87,14.47L6,16.59L8.12,14.47L9.53,15.88L7.41,18L9.53,20.12L8.12,21.54Z"; +var mdiTagRemoveOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L3 12.82A5.62 5.62 0 0 1 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92A5.57 5.57 0 0 1 11.18 21L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M8.12 21.54L6 19.41L3.88 21.54L2.46 20.12L4.59 18L2.46 15.88L3.88 14.46L6 16.59L8.12 14.46L9.54 15.88L7.41 18L9.54 20.12Z"; +var mdiTagText = "M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.41L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 8A1.5 1.5 0 1 1 8 6.5A1.5 1.5 0 0 1 6.5 8M11.59 15.41L7.59 11.41L9 10L13 14M15.59 14.41L10.09 8.91L11.5 7.5L17 13Z"; +var mdiTagTextOutline = "M21.4 11.6L12.4 2.6C12 2.2 11.5 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.5 2.2 12 2.6 12.4L11.6 21.4C12 21.8 12.5 22 13 22C13.5 22 14 21.8 14.4 21.4L21.4 14.4C21.8 14 22 13.5 22 13C22 12.5 21.8 12 21.4 11.6M13 20L4 11V4H11L20 13M6.5 5C7.3 5 8 5.7 8 6.5S7.3 8 6.5 8 5 7.3 5 6.5 5.7 5 6.5 5M10.1 8.9L11.5 7.5L17 13L15.6 14.4L10.1 8.9M7.6 11.4L9 10L13 14L11.6 15.4L7.6 11.4Z"; +var mdiTailwind = "M12 6C9.33 6 7.67 7.33 7 10C8 8.67 9.17 8.17 10.5 8.5C11.26 8.69 11.81 9.24 12.41 9.85C13.39 10.85 14.5 12 17 12C19.67 12 21.33 10.67 22 8C21 9.33 19.83 9.83 18.5 9.5C17.74 9.31 17.2 8.76 16.59 8.15C15.61 7.15 14.5 6 12 6M7 12C4.33 12 2.67 13.33 2 16C3 14.67 4.17 14.17 5.5 14.5C6.26 14.69 6.8 15.24 7.41 15.85C8.39 16.85 9.5 18 12 18C14.67 18 16.33 16.67 17 14C16 15.33 14.83 15.83 13.5 15.5C12.74 15.31 12.2 14.76 11.59 14.15C10.61 13.15 9.5 12 7 12Z"; +var mdiTank = "M20,12H4V11H6L7,6H12L13,11H20V12M13.22,7L13.62,9H22V7H13.22M22,16A3,3 0 0,1 19,19H5A3,3 0 0,1 2,16A3,3 0 0,1 5,13H19A3,3 0 0,1 22,16M6,16A1,1 0 0,0 5,15A1,1 0 0,0 4,16A1,1 0 0,0 5,17A1,1 0 0,0 6,16M13,16A1,1 0 0,0 12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16M20,16A1,1 0 0,0 19,15A1,1 0 0,0 18,16A1,1 0 0,0 19,17A1,1 0 0,0 20,16Z"; +var mdiTankerTruck = "M20 8H15V14H2V17H3C3 18.7 4.3 20 6 20S9 18.7 9 17H15C15 18.7 16.3 20 18 20S21 18.7 21 17H23V12L20 8M6 18.5C5.2 18.5 4.5 17.8 4.5 17S5.2 15.5 6 15.5 7.5 16.2 7.5 17 6.8 18.5 6 18.5M18 18.5C17.2 18.5 16.5 17.8 16.5 17S17.2 15.5 18 15.5 19.5 16.2 19.5 17 18.8 18.5 18 18.5M17 12V9.5H19.5L21.5 12H17M14 9.5C14 11.4 12.4 13 10.5 13H4.5C2.6 13 1 11.4 1 9.5S2.6 6 4.5 6H5V5H4V4H8V5H7V6H10.5C12.4 6 14 7.6 14 9.5Z"; +var mdiTapeDrive = "M12 10C13.11 10 14 10.9 14 12C14 13.11 13.11 14 12 14C10.9 14 10 13.11 10 12C10 10.9 10.9 10 12 10M5 3H19C20.11 3 21 3.9 21 5V17H16.9C18.2 15.73 19 13.96 19 12C19 8.13 15.87 5 12 5C8.13 5 5 8.13 5 12C5 15.87 8.13 19 12 19H21C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3Z"; +var mdiTapeMeasure = "M9,5A7,7 0 0,1 16,12H17V15H16V19H9A7,7 0 0,1 2,12A7,7 0 0,1 9,5M9,8A4,4 0 0,0 5,12A4,4 0 0,0 9,16A4,4 0 0,0 13,12A4,4 0 0,0 9,8M17,17H22V19L22,21H20V19H17V17Z"; +var mdiTarget = "M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z"; +var mdiTargetAccount = "M20.95,11H22.5V13H20.95C20.5,17.17 17.17,20.5 13,20.95V22.5H11V20.95C6.83,20.5 3.5,17.17 3.05,13H1.5V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1.5H13V3.05C17.17,3.5 20.5,6.83 20.95,11M5.07,11H6.5V13H5.07C5.5,16.07 7.93,18.5 11,18.93V17.5H13V18.93C16.07,18.5 18.5,16.07 18.93,13H17.5V11H18.93C18.5,7.93 16.07,5.5 13,5.07V6.5H11V5.07C7.93,5.5 5.5,7.93 5.07,11M16,16H8V15C8,13.67 10.67,13 12,13C13.33,13 16,13.67 16,15V16M12,8A2,2 0 0,1 14,10A2,2 0 0,1 12,12A2,2 0 0,1 10,10A2,2 0 0,1 12,8Z"; +var mdiTargetVariant = "M22.08,11.04H20.08V4H13.05V2H11.04V4H4V11.04H2V13.05H4V20.08H11.04V22.08H13.05V20.08H20.08V13.05H22.08V11.04M18.07,18.07H13.05V16.06H11.04V18.07H6V13.05H8.03V11.04H6V6H11.04V8.03H13.05V6H18.07V11.04H16.06V13.05H18.07V18.07M13.05,12.05A1,1 0 0,1 12.05,13.05C11.5,13.05 11.04,12.6 11.04,12.05C11.04,11.5 11.5,11.04 12.05,11.04C12.6,11.04 13.05,11.5 13.05,12.05Z"; +var mdiTaxi = "M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z"; +var mdiTea = "M4,19H20V21H4V19M20,8V5H18V8H20M20,3C20.6,3 21,3.2 21.4,3.6C21.8,4 22,4.5 22,5V8C22,8.6 21.8,9 21.4,9.4C21,9.8 20.6,10 20,10H18V13C18,14.1 17.6,15 16.8,15.8C16,16.6 15.1,17 14,17H8C6.9,17 6,16.6 5.2,15.8C4.4,15 4,14.1 4,13V3H9V5.4L7.2,6.8C7.1,6.9 7,7.1 7,7.2V11.5C7,11.8 7.2,12 7.5,12H11.5C11.8,12 12,11.8 12,11.5V7.2C12,7 11.9,6.9 11.8,6.8L10,5.4V3H20Z"; +var mdiTeaOutline = "M4,19H20V21H4V19M21.4,3.6C21,3.2 20.6,3 20,3H4V13C4,14.1 4.4,15 5.2,15.8C6,16.6 6.9,17 8,17H14C15.1,17 16,16.6 16.8,15.8C17.6,15 18,14.1 18,13V10H20C20.6,10 21,9.8 21.4,9.4C21.8,9 22,8.6 22,8V5C22,4.5 21.8,4 21.4,3.6M16,5V8L16,10V13C16,13.6 15.8,14 15.4,14.4C15,14.8 14.6,15 14,15H8C7.4,15 7,14.8 6.6,14.4C6.2,14 6,13.5 6,13V5H10V6.4L8.2,7.8C8,7.9 8,8.1 8,8.2V12.5C8,12.8 8.2,13 8.5,13H12.5C12.8,13 13,12.8 13,12.5V8.2C13,8 12.9,7.9 12.8,7.8L11,6.4V5H16M20,8H18V5H20V8Z"; +var mdiTeach = "M20,17A2,2 0 0,0 22,15V4A2,2 0 0,0 20,2H9.46C9.81,2.61 10,3.3 10,4H20V15H11V17M15,7V9H9V22H7V16H5V22H3V14H1.5V9A2,2 0 0,1 3.5,7H15M8,4A2,2 0 0,1 6,6A2,2 0 0,1 4,4A2,2 0 0,1 6,2A2,2 0 0,1 8,4Z"; +var mdiTeamviewer = "M10.04 9.2L9.3 11H14.75L14 9.2L19.55 12L14 14.8L14.75 13H9.3L10.04 14.8L4.5 12L10.04 9.2M20.83 22H3.17C2.53 22 2 21.5 2 20.83V3.17C2 2.53 2.53 2 3.17 2H20.83C21.5 2 22 2.53 22 3.17V20.83C22 21.47 21.5 22 20.83 22M11.93 3.76C7.41 3.82 3.78 7.5 3.76 12C3.72 16.5 7.35 20.2 11.86 20.24H12C16.53 20.18 20.18 16.53 20.24 12C20.31 7.5 16.74 3.83 12.26 3.76C12.15 3.75 12.04 3.76 11.93 3.76Z"; +var mdiTelegram = "M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z"; +var mdiTelescope = "M21.9,8.9L20.2,9.9L16.2,3L17.9,2L21.9,8.9M9.8,7.9L12.8,13.1L18.9,9.6L15.9,4.4L9.8,7.9M11.4,12.7L9.4,9.2L5.1,11.7L7.1,15.2L11.4,12.7M2.1,14.6L3.1,16.3L5.7,14.8L4.7,13.1L2.1,14.6M12.1,14L11.8,13.6L7.5,16.1L7.8,16.5C8,16.8 8.3,17.1 8.6,17.3L7,22H9L10.4,17.7H10.5L12,22H14L12.1,16.4C12.6,15.7 12.6,14.8 12.1,14Z"; +var mdiTelevision = "M21,17H3V5H21M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H8V21H16V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z"; +var mdiTelevisionAmbientLight = "M3 11H0V9H3V11M3 14H0V16H3V14M5 5.12L2.88 3L1.46 4.41L3.59 6.54L5 5.12M10 5V2H8V5H10M24 9H21V11H24V9M16 5V2H14V5H16M20.41 6.54L22.54 4.42L21.12 3L19 5.12L20.41 6.54M24 14H21V16H24V14M19 9V16C19 17.1 18.1 18 17 18H15V20H9V18H7C5.9 18 5 17.1 5 16V9C5 7.9 5.9 7 7 7H17C18.1 7 19 7.9 19 9M17 9H7V16H17V9M19 19.88L21.12 22L22.54 20.59L20.41 18.47L19 19.88M3.59 18.46L1.47 20.59L2.88 22L5 19.88L3.59 18.46Z"; +var mdiTelevisionBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M16,16L19,8H16.5L15,12.5L13.5,8H5V10H8V16H10V10H11.77L14,16H16Z"; +var mdiTelevisionClassic = "M8.16,3L6.75,4.41L9.34,7H4C2.89,7 2,7.89 2,9V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V9C22,7.89 21.11,7 20,7H14.66L17.25,4.41L15.84,3L12,6.84L8.16,3M4,9H17V19H4V9M19.5,9A1,1 0 0,1 20.5,10A1,1 0 0,1 19.5,11A1,1 0 0,1 18.5,10A1,1 0 0,1 19.5,9M19.5,12A1,1 0 0,1 20.5,13A1,1 0 0,1 19.5,14A1,1 0 0,1 18.5,13A1,1 0 0,1 19.5,12Z"; +var mdiTelevisionClassicOff = "M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H4C2.89,21 2,20.11 2,19V9C2,8 2.76,7.14 3.75,7L2,5.27M8.16,3L12,6.84L15.84,3L17.25,4.41L14.66,7H20C21.11,7 22,7.89 22,9V19C22,19.34 21.92,19.66 21.77,19.94L17,15.18V9H10.82L8.82,7H9.34L6.75,4.41L8.16,3M4,9V19H15.73L5.73,9H4M19.5,9A1,1 0 0,0 18.5,10A1,1 0 0,0 19.5,11A1,1 0 0,0 20.5,10A1,1 0 0,0 19.5,9M19.5,12A1,1 0 0,0 18.5,13A1,1 0 0,0 19.5,14A1,1 0 0,0 20.5,13A1,1 0 0,0 19.5,12Z"; +var mdiTelevisionClean = "M21 17H3V5H21M21 3H3C1.9 3 1 3.9 1 5V17C1 18.11 1.9 19 3 19H8V21H16V19H21C22.11 19 23 18.11 23 17V5C23 3.9 22.11 3 21 3M15 6.5L14.38 7.87L13 8.5L14.38 9.13L15 10.5L15.63 9.13L17 8.5L15.63 7.87L15 6.5M10.5 8.5L9.41 10.91L7 12L9.41 13.09L10.5 15.5L11.6 13.09L14 12L11.6 10.91L10.5 8.5"; +var mdiTelevisionGuide = "M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z"; +var mdiTelevisionOff = "M0.5,2.77L1.78,1.5L21,20.72L19.73,22L16.73,19H16V21H8V19H3A2,2 0 0,1 1,17V5C1,4.5 1.17,4.07 1.46,3.73L0.5,2.77M21,17V5H7.82L5.82,3H21A2,2 0 0,1 23,5V17C23,17.85 22.45,18.59 21.7,18.87L19.82,17H21M3,17H14.73L3,5.27V17Z"; +var mdiTelevisionPause = "M3 3C1.89 3 1 3.89 1 5V17C1 18.1 1.9 19 3 19H8V21H16V19H21C22.1 19 23 18.1 23 17V5C23 3.89 22.1 3 21 3M3 5H21V17H3M9 8V14H11V8M13 8V14H15V8"; +var mdiTelevisionPlay = "M21,3H3C1.89,3 1,3.89 1,5V17A2,2 0 0,0 3,19H8V21H16V19H21A2,2 0 0,0 23,17V5C23,3.89 22.1,3 21,3M21,17H3V5H21M16,11L9,15V7"; +var mdiTelevisionStop = "M3 3H21C22.1 3 23 3.89 23 5V17C23 18.1 22.1 19 21 19H16V21H8V19H3C1.9 19 1 18.1 1 17V5C1 3.89 1.89 3 3 3M3 5V17H21V5H3M9 8H15V14H9V8Z"; +var mdiTemperatureCelsius = "M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z"; +var mdiTemperatureFahrenheit = "M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z"; +var mdiTemperatureKelvin = "M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z"; +var mdiTennis = "M18,15A4,4 0 0,1 22,19A4,4 0 0,1 18,23A4,4 0 0,1 14,19A4,4 0 0,1 18,15M18,17A2,2 0 0,0 16,19A2,2 0 0,0 18,21A2,2 0 0,0 20,19A2,2 0 0,0 18,17M6.05,14.54C6.05,14.54 7.46,13.12 7.47,10.3C7.11,8.11 7.97,5.54 9.94,3.58C12.87,0.65 17.14,0.17 19.5,2.5C21.83,4.86 21.35,9.13 18.42,12.06C16.46,14.03 13.89,14.89 11.7,14.53C8.88,14.54 7.46,15.95 7.46,15.95L3.22,20.19L1.81,18.78L6.05,14.54M18.07,3.93C16.5,2.37 13.5,2.84 11.35,5C9.21,7.14 8.73,10.15 10.29,11.71C11.86,13.27 14.86,12.79 17,10.65C19.16,8.5 19.63,5.5 18.07,3.93Z"; +var mdiTennisBall = "M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z"; +var mdiTent = "M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z"; +var mdiTerraform = "M21 5.4V11.8L15.4 15V8.7L21 5.4M14.8 8.7V15L9.2 11.8V5.4L14.8 8.7M14.8 15.7V22.1L9.2 18.9V12.5L14.8 15.7M8.6 5.1V11.5L3 8.3V1.9L8.6 5.1Z"; +var mdiTerrain = "M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z"; +var mdiTestTube = "M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z"; +var mdiTestTubeEmpty = "M7,2H17V4H16V18A4,4 0 0,1 12,22A4,4 0 0,1 8,18V4H7V2M14,4H10V18A2,2 0 0,0 12,20A2,2 0 0,0 14,18V4Z"; +var mdiTestTubeOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15.84,19.11C15.36,20.77 13.82,22 12,22A4,4 0 0,1 8,18V11.27L2,5.27M7,2H17V4H16V14.18L13.63,11.81C13.86,11.63 14,11.35 14,11C14,10.4 13.6,10 13,10C12.65,10 12.37,10.14 12.19,10.37L8,6.18V4H7V2M11,16C11.5,16 11.88,15.71 12,15.24L10.76,14C10.29,14.12 10,14.5 10,15C10,15.6 10.4,16 11,16M14,7V4H10V7H14Z"; +var mdiText = "M21,6V8H3V6H21M3,18H12V16H3V18M3,13H21V11H3V13Z"; +var mdiTextAccount = "M21 5V7H3V5H21M3 17H12V15H3V17M3 12H21V10H3V12M18 14C19.11 14 20 14.9 20 16S19.11 18 18 18 16 17.11 16 16 16.9 14 18 14M14 22V21C14 19.9 15.79 19 18 19S22 19.9 22 21V22H14Z"; +var mdiTextBox = "M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiTextBoxCheck = "M17,21L14.25,18L15.41,16.84L17,18.43L20.59,14.84L21.75,16.25M12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21M12,15H7V17H12M17,7H7V9H17"; +var mdiTextBoxCheckOutline = "M17,21L14.25,18L15.41,16.84L17,18.43L20.59,14.84L21.75,16.25M12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21M12,17H7V15H12M14.68,13H7V11H17V12.08C16.15,12.22 15.37,12.54 14.68,13M17,9H7V7H17"; +var mdiTextBoxMinus = "M22,17V19H14V17H22M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z"; +var mdiTextBoxMinusOutline = "M22,17V19H14V17H22M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z"; +var mdiTextBoxMultiple = "M16,15H9V13H16M19,11H9V9H19M19,7H9V5H19M21,1H7C5.89,1 5,1.89 5,3V17C5,18.11 5.9,19 7,19H21C22.11,19 23,18.11 23,17V3C23,1.89 22.1,1 21,1M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3Z"; +var mdiTextBoxMultipleOutline = "M16,15H9V13H16V15M19,11H9V9H19V11M19,7H9V5H19V7M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17C23,18.11 22.11,19 21,19H7A2,2 0 0,1 5,17V3C5,1.89 5.89,1 7,1H21M7,3V17H21V3H7Z"; +var mdiTextBoxOutline = "M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H19C20.11,21 21,20.11 21,19V5C21,3.89 20.11,3 19,3H5M5,5H19V19H5V5M7,7V9H17V7H7M7,11V13H17V11H7M7,15V17H14V15H7Z"; +var mdiTextBoxPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z"; +var mdiTextBoxPlusOutline = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z"; +var mdiTextBoxRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z"; +var mdiTextBoxRemoveOutline = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z"; +var mdiTextBoxSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M7,15V17H9C9.14,18.55 9.8,19.94 10.81,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V13.03C19.85,11.21 17.82,10 15.5,10C14.23,10 13.04,10.37 12.04,11H7V13H10C9.64,13.6 9.34,14.28 9.17,15H7M17,9V7H7V9H17Z"; +var mdiTextBoxSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M5,3H19C20.11,3 21,3.89 21,5V13.03C20.5,12.23 19.81,11.54 19,11V5H5V19H9.5C9.81,19.75 10.26,20.42 10.81,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H12.03C11.23,11.5 10.54,12.19 10,13H7V11M7,15H9.17C9.06,15.5 9,16 9,16.5V17H7V15Z"; +var mdiTextRecognition = "M2 4C2 2.9 2.9 2 4 2H8V4H4V8H2V4M22 20C22 21.11 21.11 22 20 22H16V20H20V16H22V20M4 22C2.9 22 2 21.11 2 20V16H4V20H8V22H4M20 2C21.11 2 22 2.9 22 4V8H20V4H16V2H20M9 7V9H11V17H13V9H15V7H9Z"; +var mdiTextSearch = "M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z"; +var mdiTextShadow = "M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z"; +var mdiTextShort = "M4,9H20V11H4V9M4,13H14V15H4V13Z"; +var mdiTextSubject = "M4,5H20V7H4V5M4,9H20V11H4V9M4,13H20V15H4V13M4,17H14V19H4V17Z"; +var mdiTextToSpeech = "M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z"; +var mdiTextToSpeechOff = "M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z"; +var mdiTexture = "M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z"; +var mdiTextureBox = "M20 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.9 21.11 2 20 2M4 6L6 4H10.9L4 10.9V6M4 13.7L13.7 4H18.6L4 18.6V13.7M20 18L18 20H13.1L20 13.1V18M20 10.3L10.3 20H5.4L20 5.4V10.3Z"; +var mdiTheater = "M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z"; +var mdiThemeLightDark = "M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z"; +var mdiThermometer = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V8H11V5A1 1 0 0 1 12 4Z"; +var mdiThermometerAlert = "M17 13V7H19V13H17M17 17V15H19V17H17M13 13V5C13 3.3 11.7 2 10 2S7 3.3 7 5V13C4.8 14.7 4.3 17.8 6 20S10.8 22.7 13 21 15.7 16.2 14 14C13.7 13.6 13.4 13.3 13 13M10 4C10.6 4 11 4.4 11 5V8H9V5C9 4.4 9.4 4 10 4Z"; +var mdiThermometerChevronDown = "M17.41 12.17L14.24 9L12.83 10.41L17.41 15L22 10.41L20.58 9M10 13V5C10 3.34 8.66 2 7 2S4 3.34 4 5V13C1.79 14.66 1.34 17.79 3 20S7.79 22.66 10 21 12.66 16.21 11 14C10.72 13.62 10.38 13.28 10 13M7 4C7.55 4 8 4.45 8 5V8H6V5C6 4.45 6.45 4 7 4Z"; +var mdiThermometerChevronUp = "M17.41 11.83L20.58 15L22 13.59L17.41 9L12.82 13.59L14.24 15L17.41 11.83M10 13V5C10 3.34 8.66 2 7 2S4 3.34 4 5V13C1.79 14.66 1.34 17.79 3 20S7.79 22.66 10 21 12.66 16.21 11 14C10.72 13.62 10.38 13.28 10 13M7 4C7.55 4 8 4.45 8 5V8H6V5C6 4.45 6.45 4 7 4Z"; +var mdiThermometerHigh = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5H11A1 1 0 0 1 12 4Z"; +var mdiThermometerLines = "M17 3H21V5H17V3M17 7H21V9H17V7M17 11H21V13H17.75L17 12.1V11M21 15V17H19C19 16.31 18.9 15.63 18.71 15H21M7 3V5H3V3H7M7 7V9H3V7H7M7 11V12.1L6.25 13H3V11H7M3 15H5.29C5.1 15.63 5 16.31 5 17H3V15M15 13V5C15 3.34 13.66 2 12 2S9 3.34 9 5V13C6.79 14.66 6.34 17.79 8 20S12.79 22.66 15 21 17.66 16.21 16 14C15.72 13.62 15.38 13.28 15 13M12 4C12.55 4 13 4.45 13 5V8H11V5C11 4.45 11.45 4 12 4Z"; +var mdiThermometerLow = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V12H11V5A1 1 0 0 1 12 4Z"; +var mdiThermometerMinus = "M22 11H14V13H22V11M11 13V5C11 3.34 9.66 2 8 2S5 3.34 5 5V13C2.79 14.66 2.34 17.79 4 20S8.79 22.66 11 21 13.66 16.21 12 14C11.72 13.62 11.38 13.28 11 13M8 4C8.55 4 9 4.45 9 5V8H7V5C7 4.45 7.45 4 8 4Z"; +var mdiThermometerOff = "M11 7.8L9 5.8V5C9 3.34 10.34 2 12 2S15 3.34 15 5V11.8L11.2 8H13V5C13 4.45 12.55 4 12 4S11 4.45 11 5V7.8M22.11 21.46L2.39 1.73L1.11 3L9 10.89V13C6.79 14.66 6.34 17.79 8 20C9.66 22.21 12.79 22.66 15 21C15.84 20.37 16.4 19.5 16.71 18.6L20.84 22.73L22.11 21.46Z"; +var mdiThermometerPlus = "M19 11V8H17V11H14V13H17V16H19V13H22V11M11 13V5C11 3.34 9.66 2 8 2S5 3.34 5 5V13C2.79 14.66 2.34 17.79 4 20S8.79 22.66 11 21 13.66 16.21 12 14C11.72 13.62 11.38 13.28 11 13M8 4C8.55 4 9 4.45 9 5V8H7V5C7 4.45 7.45 4 8 4Z"; +var mdiThermostat = "M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"; +var mdiThermostatBox = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81Z"; +var mdiThoughtBubble = "M3.5,19A1.5,1.5 0 0,1 5,20.5A1.5,1.5 0 0,1 3.5,22A1.5,1.5 0 0,1 2,20.5A1.5,1.5 0 0,1 3.5,19M8.5,16A2.5,2.5 0 0,1 11,18.5A2.5,2.5 0 0,1 8.5,21A2.5,2.5 0 0,1 6,18.5A2.5,2.5 0 0,1 8.5,16M14.5,15C13.31,15 12.23,14.5 11.5,13.65C10.77,14.5 9.69,15 8.5,15C6.54,15 4.91,13.59 4.57,11.74C3.07,11.16 2,9.7 2,8A4,4 0 0,1 6,4C6.26,4 6.5,4.03 6.77,4.07C7.5,3.41 8.45,3 9.5,3C10.69,3 11.77,3.5 12.5,4.35C13.23,3.5 14.31,3 15.5,3C17.46,3 19.09,4.41 19.43,6.26C20.93,6.84 22,8.3 22,10A4,4 0 0,1 18,14L17.23,13.93C16.5,14.59 15.55,15 14.5,15Z"; +var mdiThoughtBubbleOutline = "M3.5,19A1.5,1.5 0 0,1 5,20.5A1.5,1.5 0 0,1 3.5,22A1.5,1.5 0 0,1 2,20.5A1.5,1.5 0 0,1 3.5,19M8.5,16A2.5,2.5 0 0,1 11,18.5A2.5,2.5 0 0,1 8.5,21A2.5,2.5 0 0,1 6,18.5A2.5,2.5 0 0,1 8.5,16M14.5,15C13.31,15 12.23,14.5 11.5,13.65C10.77,14.5 9.69,15 8.5,15C6.54,15 4.91,13.59 4.57,11.74C3.07,11.16 2,9.7 2,8A4,4 0 0,1 6,4L6.77,4.07C7.5,3.41 8.45,3 9.5,3C10.69,3 11.77,3.5 12.5,4.35C13.23,3.5 14.31,3 15.5,3C17.46,3 19.09,4.41 19.43,6.26C20.93,6.84 22,8.3 22,10A4,4 0 0,1 18,14L17.23,13.93C16.5,14.59 15.55,15 14.5,15M6,6A2,2 0 0,0 4,8A2,2 0 0,0 6,10C6.33,10 6.64,9.92 6.92,9.78C6.66,10.12 6.5,10.54 6.5,11A2,2 0 0,0 8.5,13C9.1,13 9.64,12.73 10,12.31V12.31L11.47,10.63L13,12.34V12.34C13.38,12.74 13.91,13 14.5,13C15.5,13 16.33,12.26 16.5,11.3C16.84,11.73 17.39,12 18,12A2,2 0 0,0 20,10A2,2 0 0,0 18,8C17.67,8 17.36,8.08 17.08,8.22C17.34,7.88 17.5,7.46 17.5,7A2,2 0 0,0 15.5,5C14.91,5 14.38,5.26 14,5.66L12.47,7.37L11,5.69V5.69C10.64,5.27 10.1,5 9.5,5C8.5,5 7.67,5.74 7.5,6.7C7.16,6.27 6.61,6 6,6M8.5,17.5A1,1 0 0,0 7.5,18.5A1,1 0 0,0 8.5,19.5A1,1 0 0,0 9.5,18.5A1,1 0 0,0 8.5,17.5Z"; +var mdiThumbDown = "M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z"; +var mdiThumbDownOutline = "M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z"; +var mdiThumbUp = "M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10M1,21H5V9H1V21Z"; +var mdiThumbUpOutline = "M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z"; +var mdiThumbsUpDown = "M22.5,10H15.75C15.13,10 14.6,10.38 14.37,10.91L12.11,16.2C12.04,16.37 12,16.56 12,16.75V18A1,1 0 0,0 13,19H18.18L17.5,22.18V22.42C17.5,22.73 17.63,23 17.83,23.22L18.62,24L23.56,19.06C23.83,18.79 24,18.41 24,18V11.5A1.5,1.5 0 0,0 22.5,10M12,6A1,1 0 0,0 11,5H5.82L6.5,1.82V1.59C6.5,1.28 6.37,1 6.17,0.79L5.38,0L0.44,4.94C0.17,5.21 0,5.59 0,6V12.5A1.5,1.5 0 0,0 1.5,14H8.25C8.87,14 9.4,13.62 9.63,13.09L11.89,7.8C11.96,7.63 12,7.44 12,7.25V6Z"; +var mdiTicket = "M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z"; +var mdiTicketAccount = "M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z"; +var mdiTicketConfirmation = "M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z"; +var mdiTicketConfirmationOutline = "M22 10V6C22 4.89 21.1 4 20 4H4C2.9 4 2 4.89 2 6V10C3.11 10 4 10.9 4 12S3.11 14 2 14V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V14C20.9 14 20 13.1 20 12S20.9 10 22 10M20 8.54C18.81 9.23 18 10.53 18 12S18.81 14.77 20 15.46V18H4V15.46C5.19 14.77 6 13.47 6 12C6 10.5 5.2 9.23 4 8.54L4 6H20V8.54M11 15H13V17H11M11 11H13V13H11M11 7H13V9H11Z"; +var mdiTicketOutline = "M4,4A2,2 0 0,0 2,6V10A2,2 0 0,1 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10V6A2,2 0 0,0 20,4H4M4,6H20V8.54C18.76,9.25 18,10.57 18,12C18,13.43 18.76,14.75 20,15.46V18H4V15.46C5.24,14.75 6,13.43 6,12C6,10.57 5.24,9.25 4,8.54V6Z"; +var mdiTicketPercent = "M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z"; +var mdiTicketPercentOutline = "M14.8 8L16 9.2L9.2 16L8 14.8L14.8 8M4 4H20C21.11 4 22 4.89 22 6V10C20.9 10 20 10.9 20 12C20 13.11 20.9 14 22 14V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V14C3.11 14 4 13.11 4 12C4 10.9 3.11 10 2 10V6C2 4.89 2.9 4 4 4M4 6V8.54C5.24 9.26 6 10.57 6 12C6 13.43 5.24 14.75 4 15.46V18H20V15.46C18.76 14.75 18 13.43 18 12C18 10.57 18.76 9.26 20 8.54V6H4M9.5 8C10.33 8 11 8.67 11 9.5C11 10.33 10.33 11 9.5 11C8.67 11 8 10.33 8 9.5C8 8.67 8.67 8 9.5 8M14.5 13C15.33 13 16 13.67 16 14.5C16 15.33 15.33 16 14.5 16C13.67 16 13 15.33 13 14.5C13 13.67 13.67 13 14.5 13Z"; +var mdiTie = "M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z"; +var mdiTilde = "M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2"; +var mdiTimelapse = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z"; +var mdiTimeline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6Z"; +var mdiTimelineAlert = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M15 7V13H17V7H15M15 15V17H17V15H15Z"; +var mdiTimelineAlertOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10M15 7H17V13H15V7M15 15H17V17H15V15Z"; +var mdiTimelineCheck = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M19.75 10.33L18.59 8.92L15 12.5L13.41 10.92L12.25 12.08L15 15.08L19.75 10.33Z"; +var mdiTimelineCheckOutline = "M22 4H10C8.9 4 8 4.89 8 6V10L6 12L8 14V18C8 19.11 8.9 20 10 20H22C23.11 20 24 19.11 24 18V6C24 4.89 23.11 4 22 4M22 18H10V6H22V18M4 8H2V2H4V8M2 16H4V22H2V16M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M15 15.08L12.25 12.08L13.41 10.92L15 12.5L18.59 8.92L19.75 10.33L15 15.08Z"; +var mdiTimelineClock = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M16 4C20.42 4 24 7.58 24 12C24 16.42 20.42 20 16 20C12.4 20 9.36 17.62 8.35 14.35L6 12L8.35 9.65C9.36 6.38 12.4 4 16 4M15 13L19.53 15.79L20.33 14.5L16.5 12.2V7H15V13Z"; +var mdiTimelineClockOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M16 4C20.42 4 24 7.58 24 12C24 16.42 20.42 20 16 20C12.4 20 9.36 17.62 8.35 14.35L6 12L8.35 9.65C9.36 6.38 12.4 4 16 4M16 6C12.69 6 10 8.69 10 12C10 15.31 12.69 18 16 18C19.31 18 22 15.31 22 12C22 8.69 19.31 6 16 6M15 13V8H16.5V12.2L19.5 14L18.68 15.26L15 13Z"; +var mdiTimelineHelp = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M16.5 15.5H15V17H16.5V15.5M14.5 10.5V10C14.5 9.17 15.17 8.5 16 8.5C16.83 8.5 17.5 9.18 17.5 10C17.5 10.47 17.27 10.9 16.88 11.16L16.59 11.35C15.6 12 15 13.11 15 14.3V14.5H16.5V14.3C16.5 13.62 16.84 13 17.41 12.6L17.71 12.41C18.5 11.88 19 10.97 19 10C19 8.34 17.66 7 16 7C14.34 7 13 8.34 13 10V10.5H14.5Z"; +var mdiTimelineHelpOutline = "M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M4 2V8H2V2H4M2 22V16H4V22H2M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V10.83L8.83 12L10 13.17V18H22V6M16.5 15.5V17H15V15.5H16.5M14.5 10.5H13V10C13 8.34 14.34 7 16 7C17.66 7 19 8.34 19 10C19 10.97 18.5 11.88 17.71 12.41L17.41 12.6C16.84 13 16.5 13.62 16.5 14.3V14.5H15V14.3C15 13.11 15.6 12 16.59 11.35L16.88 11.16C17.27 10.9 17.5 10.47 17.5 10C17.5 9.18 16.83 8.5 16 8.5C15.17 8.5 14.5 9.17 14.5 10V10.5Z"; +var mdiTimelineMinus = "M4 8H2V2H4V8M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M20 11H12V13H20V11M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10Z"; +var mdiTimelineMinusOutline = "M2 16H4V22H2V16M4 2H2V8H4V2M20 11H12V13H20V11M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V18H22V6Z"; +var mdiTimelineOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10Z"; +var mdiTimelinePlus = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M20 11H17V8H15V11H12V13H15V16H17V13H20V11Z"; +var mdiTimelinePlusOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M20 11V13H17V16H15V13H12V11H15V8H17V11H20M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10Z"; +var mdiTimelineRemove = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M17.41 12L19.53 9.88L18.12 8.47L16 10.59L13.88 8.47L12.47 9.88L14.59 12L12.47 14.12L13.88 15.53L16 13.41L18.12 15.53L19.53 14.12L17.41 12Z"; +var mdiTimelineRemoveOutline = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M13.88 15.54L16 13.41L18.12 15.53L19.53 14.12L17.41 12L19.53 9.88L18.12 8.47L16 10.59L13.88 8.47L12.47 9.88L14.59 12L12.47 14.12L13.88 15.54M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V18H22V6Z"; +var mdiTimelineText = "M4 2V8H2V2H4M2 22H4V16H2V22M5 12C5 10.9 4.11 10 3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M19 13H11V15H19V13M21 9H11V11H21V9Z"; +var mdiTimelineTextOutline = "M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M4 2V8H2V2H4M2 22V16H4V22H2M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V10.83L8.83 12L10 13.17V18H22V6M12 9H20V11H12V9M12 13H18V15H12V13Z"; +var mdiTimer = "M19.03 7.39L20.45 5.97C20 5.46 19.55 5 19.04 4.56L17.62 6C16.07 4.74 14.12 4 12 4C7.03 4 3 8.03 3 13S7.03 22 12 22C17 22 21 17.97 21 13C21 10.88 20.26 8.93 19.03 7.39M13 14H11V7H13V14M15 1H9V3H15V1Z"; +var mdiTimer10 = "M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z"; +var mdiTimer3 = "M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z"; +var mdiTimerOff = "M3 4L1.75 5.27L4.5 8.03C3.55 9.45 3 11.16 3 13C3 17.97 7.03 22 12 22C13.84 22 15.55 21.45 17 20.5L19.5 23L20.75 21.73L13.04 14L3 4M15 1H9V3H15M21 13C21 14.83 20.45 16.53 19.5 17.94L13 11.45V7H11V9.45L7.05 5.5C8.47 4.55 10.17 4 12 4C14.12 4 16.07 4.74 17.62 5.97L19.04 4.55L20.45 5.97L19.03 7.39C20.26 8.93 21 10.88 21 13Z"; +var mdiTimerOffOutline = "M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z"; +var mdiTimerOutline = "M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z"; +var mdiTimerSand = "M6,2H18V8H18V8L14,12L18,16V16H18V22H6V16H6V16L10,12L6,8V8H6V2M16,16.5L12,12.5L8,16.5V20H16V16.5M12,11.5L16,7.5V4H8V7.5L12,11.5M10,6H14V6.75L12,8.75L10,6.75V6Z"; +var mdiTimerSandEmpty = "M6,2V8H6V8L10,12L6,16V16H6V22H18V16H18V16L14,12L18,8V8H18V2H6M16,16.5V20H8V16.5L12,12.5L16,16.5M12,11.5L8,7.5V4H16V7.5L12,11.5Z"; +var mdiTimerSandFull = "M6,2V8H6V8L10,12L6,16V16H6V22H18V16H18V16L14,12L18,8V8H18V2H6Z"; +var mdiTimetable = "M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z"; +var mdiToaster = "M21 11A2 2 0 0 0 19 9H5A2 2 0 0 0 3 11H2V13H3V20H21V13H22V11M17 15A2 2 0 1 1 19 13A2 2 0 0 1 17 15M18 8H6C6.33 5.75 8.88 4 12 4S17.63 5.75 18 8Z"; +var mdiToasterOff = "M20.8 22.7L18.1 20H3V13H2V11H3C3 9.9 3.9 9 5 9H7.1L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M15.3 12.1C15.6 11.5 16.3 11 17 11C18.1 11 19 11.9 19 13C19 13.8 18.6 14.4 17.9 14.7L21 17.8V13H22V11H21C21 9.9 20.1 9 19 9H12.2L15.3 12.1M18 8C17.6 5.8 15.1 4 12 4C10.6 4 9.2 4.4 8.2 5L11.2 8H18Z"; +var mdiToasterOven = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H16V17H4V7M19,7A1,1 0 0,1 20,8A1,1 0 0,1 19,9A1,1 0 0,1 18,8A1,1 0 0,1 19,7M6,9V11H14V9H6M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11Z"; +var mdiToggleSwitch = "M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"; +var mdiToggleSwitchOff = "M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z"; +var mdiToggleSwitchOffOutline = "M7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7H17M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15H17A3,3 0 0,0 20,12A3,3 0 0,0 17,9H7Z"; +var mdiToggleSwitchOutline = "M17,10A2,2 0 0,1 19,12A2,2 0 0,1 17,14A2,2 0 0,1 15,12A2,2 0 0,1 17,10M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7H17M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15H17A3,3 0 0,0 20,12A3,3 0 0,0 17,9H7Z"; +var mdiToilet = "M9,22H17V19.5C19.41,17.87 21,15.12 21,12V4A2,2 0 0,0 19,2H15C13.89,2 13,2.9 13,4V12H3C3,15.09 5,18 9,19.5V22M5.29,14H18.71C18.14,15.91 16.77,17.5 15,18.33V20H11V18.33C9,18 5.86,15.91 5.29,14M15,4H19V12H15V4M16,5V8H18V5H16Z"; +var mdiToolbox = "M9,5V6H15V5H9M22,18C22,18.53 21.79,19 21.4,19.41C21,19.81 20.55,20 20,20H4C3.45,20 3,19.81 2.6,19.41C2.21,19 2,18.53 2,18V14H7V15H9V14H15V15H17V14H22V18M4.5,7.22C4.84,6.41 5.45,6 6.33,6H7V5C7,4.45 7.18,4 7.57,3.59C7.96,3.2 8.44,3 9,3H15C15.56,3 16.04,3.2 16.43,3.59C16.82,4 17,4.45 17,5V6H17.67C18.55,6 19.16,6.41 19.5,7.22L21.58,12H17V11H15V12H9V11H7V12H2.42L4.5,7.22Z"; +var mdiToolboxOutline = "M20,18V14H17V15H15V14H9V15H7V14H4V18H20M6.33,8L4.59,12H7V11H9V12H15V11H17V12H19.41L17.67,8H6.33M9,5V6H15V5H9M21.84,12.61C21.94,12.83 22,13.09 22,13.41V18C22,18.53 21.79,19 21.4,19.41C21,19.81 20.55,20 20,20H4C3.45,20 3,19.81 2.6,19.41C2.21,19 2,18.53 2,18V13.41C2,13.09 2.06,12.83 2.16,12.61L4.5,7.22C4.84,6.41 5.45,6 6.33,6H7V5C7,4.45 7.18,4 7.57,3.59C7.96,3.2 8.44,3 9,3H15C15.56,3 16.04,3.2 16.43,3.59C16.82,4 17,4.45 17,5V6H17.67C18.55,6 19.16,6.41 19.5,7.22L21.84,12.61Z"; +var mdiTools = "M21.71 20.29L20.29 21.71A1 1 0 0 1 18.88 21.71L7 9.85A3.81 3.81 0 0 1 6 10A4 4 0 0 1 2.22 4.7L4.76 7.24L5.29 6.71L6.71 5.29L7.24 4.76L4.7 2.22A4 4 0 0 1 10 6A3.81 3.81 0 0 1 9.85 7L21.71 18.88A1 1 0 0 1 21.71 20.29M2.29 18.88A1 1 0 0 0 2.29 20.29L3.71 21.71A1 1 0 0 0 5.12 21.71L10.59 16.25L7.76 13.42M20 2L16 4V6L13.83 8.17L15.83 10.17L18 8H20L22 4Z"; +var mdiTooltip = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z"; +var mdiTooltipAccount = "M20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8L12,22L16,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,4.3C13.5,4.3 14.7,5.5 14.7,7C14.7,8.5 13.5,9.7 12,9.7C10.5,9.7 9.3,8.5 9.3,7C9.3,5.5 10.5,4.3 12,4.3M18,15H6V14.1C6,12.1 10,11 12,11C14,11 18,12.1 18,14.1V15Z"; +var mdiTooltipCheck = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M10.46 14L6.96 10.5L8.37 9.08L10.46 11.17L15.64 6L17.05 7.41L10.46 14Z"; +var mdiTooltipCheckOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M10.75 13.71L7.25 10.21L8.66 8.79L10.75 10.88L15.34 6.3L16.75 7.71L10.75 13.71Z"; +var mdiTooltipEdit = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M9.08 15H7V12.91L13.17 6.72L15.24 8.8L9.08 15M16.84 7.2L15.83 8.21L13.76 6.18L14.77 5.16C14.97 4.95 15.31 4.94 15.55 5.16L16.84 6.41C17.05 6.62 17.06 6.96 16.84 7.2Z"; +var mdiTooltipEditOutline = "M4 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H16L12 22L8 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2M4 4V16H8.83L12 19.17L15.17 16H20V4H4M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z"; +var mdiTooltipImage = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z"; +var mdiTooltipImageOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M7.5,6A1.5,1.5 0 0,1 9,7.5A1.5,1.5 0 0,1 7.5,9A1.5,1.5 0 0,1 6,7.5A1.5,1.5 0 0,1 7.5,6M6,14L11,9L13,11L18,6V14H6Z"; +var mdiTooltipMinus = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M16 11H8V9H16V11Z"; +var mdiTooltipMinusOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M16 11H8V9H16V11Z"; +var mdiTooltipOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z"; +var mdiTooltipPlus = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z"; +var mdiTooltipPlusOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z"; +var mdiTooltipRemove = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M15.54 12.12L14.12 13.54L12 11.41L9.88 13.54L8.47 12.12L10.59 10L8.46 7.88L9.88 6.47L12 8.59L14.12 6.47L15.54 7.88L13.41 10L15.54 12.12Z"; +var mdiTooltipRemoveOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M8.46 12.12L10.59 10L8.46 7.88L9.88 6.47L12 8.59L14.12 6.47L15.54 7.88L13.41 10L15.54 12.12L14.12 13.54L12 11.41L9.88 13.54L8.46 12.12Z"; +var mdiTooltipText = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z"; +var mdiTooltipTextOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M6,7H18V9H6V7M6,11H16V13H6V11Z"; +var mdiTooth = "M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2Z"; +var mdiToothOutline = "M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z"; +var mdiToothbrush = "M12.91 6.43L15.03 8.55L16.09 7.5L15.03 6.43L17.86 3.6L18.92 4.66L20 3.6L17.86 1.5M3 20.57L4.43 22L14.5 11.9L16.63 11.19L21.4 6.43C22.18 5.65 22.18 4.38 21.4 3.6L15.55 9.44L13.43 10.15Z"; +var mdiToothbrushElectric = "M12 1.5V14C10.34 14 9 15.34 9 17V22H17V17C17 15.34 15.66 14 14 14V3.5C14 2.4 13.11 1.5 12 1.5M7.5 2V9H11V7.5H9V3.5H11V2H7.5M13 17.5C13.83 17.5 14.5 18.17 14.5 19C14.5 19.83 13.83 20.5 13 20.5C12.17 20.5 11.5 19.83 11.5 19C11.5 18.17 12.17 17.5 13 17.5Z"; +var mdiToothbrushPaste = "M17.86 1.5L12.91 6.43L15.03 8.55L16.09 7.5L15.03 6.43L17.86 3.6L18.92 4.66L20 3.6M21.4 3.6L15.56 9.44L13.43 10.15L3 20.57L4.43 22L10.08 16.33L14.33 20.57L18.57 16.33L14.33 12.09L14.5 11.9L16.63 11.19L21.4 6.43C22.18 5.65 22.18 4.38 21.4 3.6M6.55 4.31L2.31 8.55L7.26 13.5L11.5 9.26M18.22 18.1L16.09 20.22L17.5 21.63L19.63 19.5Z"; +var mdiTorch = "M8.6 9.6C9 10.2 9.5 10.7 10.2 11H14.2C14.5 10.9 14.7 10.7 14.9 10.5C15.9 9.5 16.3 8 15.8 6.7L15.7 6.5C15.6 6.2 15.4 6 15.2 5.8C15.1 5.6 14.9 5.5 14.8 5.3C14.4 5 14 4.7 13.6 4.3C12.7 3.4 12.6 2 13.1 1C12.6 1.1 12.1 1.4 11.7 1.8C10.2 3 9.6 5.1 10.3 7V7.2C10.3 7.3 10.2 7.4 10.1 7.5C10 7.6 9.8 7.5 9.7 7.4L9.6 7.3C9 6.5 8.9 5.3 9.3 4.3C8.4 5.1 7.9 6.4 8 7.7C8 8 8.1 8.3 8.2 8.6C8.2 8.9 8.4 9.3 8.6 9.6M12.3 8.1C12.4 7.6 12.2 7.2 12.1 6.8C12 6.4 12 6 12.2 5.6L12.5 6.2C12.9 6.8 13.6 7 13.8 7.8V8.1C13.8 8.6 13.6 9.1 13.3 9.4C13.1 9.5 12.9 9.7 12.7 9.7C12.1 9.9 11.4 9.6 11 9.2C11.8 9.2 12.2 8.6 12.3 8.1M15 12V14H14L13 22H11L10 14H9V12H15Z"; +var mdiTortoise = "M19.31,5.6C18.09,5.56 16.88,6.5 16.5,8C16,10 16,10 15,11C13,13 10,14 4,15C3,15.16 2.5,15.5 2,16C4,16 6,16 4.5,17.5L3,19H6L8,17C10,18 11.33,18 13.33,17L14,19H17L16,16C16,16 17,12 18,11C19,10 19,11 20,11C21,11 22,10 22,8.5C22,8 22,7 20.5,6C20.15,5.76 19.74,5.62 19.31,5.6M9,6A6,6 0 0,0 3,12C3,12.6 3.13,13.08 3.23,13.6C9.15,12.62 12.29,11.59 13.93,9.94L14.43,9.44C13.44,7.34 11.32,6 9,6Z"; +var mdiToslink = "M20 10V7L17 4H7L4 7V10C2.9 10 2 10.9 2 12S2.9 14 4 14V18C4 19.1 4.9 20 6 20H18C19.1 20 20 19.1 20 18V14C21.11 14 22 13.11 22 12S21.11 10 20 10M12 16C9.79 16 8 14.21 8 12S9.79 8 12 8 16 9.79 16 12 14.21 16 12 16M14 12C14 13.11 13.11 14 12 14S10 13.11 10 12 10.9 10 12 10 14 10.9 14 12Z"; +var mdiTournament = "M2,2V4H7V8H2V10H7C8.11,10 9,9.11 9,8V7H14V17H9V16C9,14.89 8.11,14 7,14H2V16H7V20H2V22H7C8.11,22 9,21.11 9,20V19H14C15.11,19 16,18.11 16,17V13H22V11H16V7C16,5.89 15.11,5 14,5H9V4C9,2.89 8.11,2 7,2H2Z"; +var mdiTowTruck = "M15,10H20.39L17.06,6H15V10M17.5,18.5C17.89,18.5 18.24,18.37 18.54,18.07C18.84,17.77 19,17.42 19,17C19,16.61 18.84,16.26 18.54,15.96C18.24,15.66 17.89,15.5 17.5,15.5C17.08,15.5 16.73,15.66 16.43,15.96C16.13,16.26 16,16.61 16,17C16,17.42 16.13,17.77 16.43,18.07C16.73,18.37 17.08,18.5 17.5,18.5M6,18.5C6.44,18.5 6.8,18.37 7.08,18.07C7.36,17.77 7.5,17.42 7.5,17C7.5,16.61 7.36,16.26 7.08,15.96C6.8,15.66 6.44,15.5 6,15.5C5.56,15.5 5.2,15.66 4.92,15.96C4.64,16.26 4.5,16.61 4.5,17C4.5,17.42 4.64,17.77 4.92,18.07C5.2,18.37 5.56,18.5 6,18.5M18,4L23,10V17H20.5C20.5,17.83 20.19,18.53 19.59,19.13C19,19.72 18.3,20 17.5,20C16.67,20 15.97,19.72 15.38,19.13C14.78,18.53 14.5,17.83 14.5,17H9C9,17.83 8.7,18.53 8.11,19.13C7.5,19.72 6.81,20 6,20C5.19,20 4.5,19.72 3.89,19.13C3.3,18.53 3,17.83 3,17H1V13H9.19L3,8.11V11H1V5H2L13,11.06V4H18Z"; +var mdiTowerBeach = "M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z"; +var mdiTowerFire = "M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z"; +var mdiToyBrick = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H21V6Z"; +var mdiToyBrickMarker = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14.54A9.55 9.55 0 0 1 13 15.5A5.58 5.58 0 0 1 18.5 10A5.3 5.3 0 0 1 21 10.63V6M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8Z"; +var mdiToyBrickMarkerOutline = "M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14.54A15.55 15.55 0 0 1 13.54 18H5V8H19V10A5.11 5.11 0 0 1 21 10.6V6Z"; +var mdiToyBrickMinus = "M23 20H15V18H23V20M13 19C13 15.69 15.69 13 19 13C19.7 13 20.37 13.13 21 13.35V6H19V5C19 3.9 18.11 3 17 3H15C13.9 3 13 3.9 13 5V6H11V5C11 3.9 10.11 3 9 3H7C5.9 3 5 3.9 5 5V6H3V20H13.09C13.04 19.67 13 19.34 13 19Z"; +var mdiToyBrickMinusOutline = "M13.09 20H3V6H5V5C5 3.9 5.9 3 7 3H9C10.11 3 11 3.9 11 5V6H13V5C13 3.9 13.9 3 15 3H17C18.11 3 19 3.9 19 5V6H21V13.35C20.37 13.13 19.7 13 19 13V8H5V18H13.09C13.04 18.33 13 18.66 13 19S13.04 19.67 13.09 20M23 18H15V20H23V18Z"; +var mdiToyBrickOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H21V6M19 18H5V8H19Z"; +var mdiToyBrickPlus = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 21 13.34V6M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; +var mdiToyBrickPlusOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14V18H5V8H19V13H21V6M21 15V18H24V20H21V23H19V20H16V18H19V15Z"; +var mdiToyBrickRemove = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 21 13.34V6M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; +var mdiToyBrickRemoveOutline = "M19 6V5C19 3.9 18.1 3 17 3H15C13.9 3 13 3.9 13 5V6H11V5C11 3.9 10.1 3 9 3H7C5.9 3 5 3.9 5 5V6H3V20H14V18H5V8H19V13H21V6M17.88 15.46L20 17.59L22.12 15.47L23.54 16.88L21.41 19L23.54 21.12L22.12 22.54L20 20.41L17.88 22.54L16.46 21.12L18.59 19L16.47 16.88"; +var mdiToyBrickSearch = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H11.81A6.5 6.5 0 0 1 21 10.81V6M20.31 17.9A4.5 4.5 0 1 0 18.88 19.32L22 22.39L23.39 21M16.5 18A2.5 2.5 0 1 1 19 15.5A2.5 2.5 0 0 1 16.5 18Z"; +var mdiToyBrickSearchOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H11.81A6.59 6.59 0 0 1 10.5 18H5V8H19V9.5A6.59 6.59 0 0 1 21 10.81V6M20.31 17.9A4.5 4.5 0 1 0 18.88 19.32L22 22.39L23.39 21M16.5 18A2.5 2.5 0 1 1 19 15.5A2.5 2.5 0 0 1 16.5 18Z"; +var mdiTrackLight = "M6,1V3H9V6.4L4.11,4.38L1.43,10.84L6.97,13.14L11.94,16.82L13.79,17.59L17.62,8.35L15.77,7.58L11,6.87V3H14V1H6M21.81,6.29L19.5,7.25L20.26,9.1L22.57,8.14L21.81,6.29M19.78,13.57L19,15.42L21.79,16.57L22.55,14.72L19.78,13.57M16.19,18.93L14.34,19.69L15.3,22L17.15,21.23L16.19,18.93Z"; +var mdiTrackpad = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V13H20V5H4M4,19H11V15H4V19M20,19V15H13V19H20Z"; +var mdiTrackpadLock = "M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H14V17H12V13H16.68C17.5,12.35 18.47,12 19.5,12C20,12 20.5,12.09 21,12.26V3C21,1.89 20.11,1 19,1H3M3,3H19V11H3V3M3,13H10V17H3V13M19.5,14A2.5,2.5 0 0,0 17,16.5V17A1,1 0 0,0 16,18V22A1,1 0 0,0 17,23H22A1,1 0 0,0 23,22V18A1,1 0 0,0 22,17V16.5A2.5,2.5 0 0,0 19.5,14M19.5,15A1.5,1.5 0 0,1 21,16.5V17H18V16.5A1.5,1.5 0 0,1 19.5,15Z"; +var mdiTractor = "M5,4V11.26C3.2,11.9 2,13.6 2,15.5C2,18 4,20 6.5,20C8.79,20 10.71,18.28 10.97,16H15.17C15.06,16.32 15,16.66 15,17A3,3 0 0,0 18,20A3,3 0 0,0 21,17C21,16.66 20.94,16.32 20.82,16H22V13C22,11.89 21.11,11 20,11H15.04L13.65,4H5M7,6H12L13,11V14H10.74C10.16,12.38 8.71,11.23 7,11.03V6M6.5,13.25A2.25,2.25 0 0,1 8.75,15.5A2.25,2.25 0 0,1 6.5,17.75A2.25,2.25 0 0,1 4.25,15.5A2.25,2.25 0 0,1 6.5,13.25M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; +var mdiTractorVariant = "M13.3 2.79L9.8 6.29L10.5 7L11.9 5.61L13 6.71V9C13 10.11 12.11 11 11 11H10.46A6 6 0 0 1 12 15A6 6 0 0 1 11.91 16H15.03A4.5 4.5 0 0 1 19.5 12A4.5 4.5 0 0 1 22 12.76V8C22 6.89 21.11 6 20 6H13.71L12.61 4.9L14 3.5L13.3 2.79M4 7C3.45 7 3 7.45 3 8C3 8.55 3.45 9 4 9H9C9 7.9 8.11 7 7 7H4M6 10A5 5 0 0 0 4.44 10.25L4.8 11.18L4.33 11.36L4 10.43A5 5 0 0 0 1.54 12.74L2.45 13.15L2.24 13.6L1.34 13.2A5 5 0 0 0 1 15A5 5 0 0 0 1.25 16.56L2.18 16.2L2.36 16.67L1.43 17A5 5 0 0 0 3.74 19.46L4.14 18.55L4.6 18.76L4.2 19.66A5 5 0 0 0 6 20A5 5 0 0 0 7.56 19.75L7.2 18.82L7.67 18.64L8 19.57A5 5 0 0 0 10.46 17.26L9.55 16.86L9.76 16.4L10.66 16.8A5 5 0 0 0 11 15A5 5 0 0 0 10.75 13.44L9.82 13.8L9.64 13.33L10.57 13A5 5 0 0 0 8.26 10.54L7.86 11.45L7.4 11.24L7.8 10.34A5 5 0 0 0 6 10M6 12A3 3 0 0 1 9 15A3 3 0 0 1 6 18A3 3 0 0 1 3 15A3 3 0 0 1 6 12M19.5 13A3.5 3.5 0 0 0 16 16.5A3.5 3.5 0 0 0 19.5 20A3.5 3.5 0 0 0 23 16.5A3.5 3.5 0 0 0 19.5 13M19.5 15A1.5 1.5 0 0 1 21 16.5A1.5 1.5 0 0 1 19.5 18A1.5 1.5 0 0 1 18 16.5A1.5 1.5 0 0 1 19.5 15Z"; +var mdiTrademark = "M9.8,8.44H6.87V16H4.89V8.44H2V7H9.8V8.44M13.5,7L15.96,13.5L18.41,7H21V16H19V13.5L19.22,9.24L16.63,16H15.28L12.7,9.25L12.9,13.5V16H10.93V7H13.5Z"; +var mdiTrafficCone = "M17 15L18 19H21V22H3V19H6L7 15H17M15 8L16 12H8L9 8H15M13 1L14 5H10L11 1H13Z"; +var mdiTrafficLight = "M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z"; +var mdiTrain = "M12,2C8,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H8.23L10.23,19H14L16,21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M11,10H6V6H11V10M13,10V6H18V10H13M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17Z"; +var mdiTrainCar = "M12,4H5A3,3 0 0,0 2,7V15A3,3 0 0,0 5,18L4,19V20H5L7,17.97L9,18V13H4V6H13V8H15V7A3,3 0 0,0 12,4M5,14A1,1 0 0,1 6,15A1,1 0 0,1 5,16A1,1 0 0,1 4,15A1,1 0 0,1 5,14M20.57,9.66C20.43,9.26 20.05,9 19.6,9H12.41C11.95,9 11.58,9.26 11.43,9.66L10,13.77V19.28C10,19.66 10.32,20 10.7,20H11.32C11.7,20 12,19.62 12,19.24V18H20V19.24C20,19.62 20.31,20 20.69,20H21.3C21.68,20 22,19.66 22,19.28V17.91L22,13.77L20.57,9.66M12.41,10H19.6L20.63,13H11.38L12.41,10M12,16A1,1 0 0,1 11,15A1,1 0 0,1 12,14A1,1 0 0,1 13,15A1,1 0 0,1 12,16M20,16A1,1 0 0,1 19,15A1,1 0 0,1 20,14A1,1 0 0,1 21,15A1,1 0 0,1 20,16Z"; +var mdiTrainCarPassenger = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M7 12H3V9H7V12M15 12H9V9H15V12M21 12H17V9H21V12Z"; +var mdiTrainCarPassengerDoor = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M7 12H3V9H7V12M11 16H9V9H11V16M15 16H13V9H15V16M21 12H17V9H21V12Z"; +var mdiTrainCarPassengerDoorOpen = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M8 12H3V9H8V12M14 16H10V9H14V16M21 12H16V9H21V12Z"; +var mdiTrainCarPassengerVariant = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M11 12H3V9H11V12M21 12H13V9H21V12Z"; +var mdiTrainVariant = "M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z"; +var mdiTram = "M19,16.94V8.5C19,5.71 16.39,5.1 13,5L13.75,3.5H17V2H7V3.5H11.75L11,5C7.86,5.11 5,5.73 5,8.5V16.94C5,18.39 6.19,19.6 7.59,19.91L6,21.5V22H8.23L10.23,20H14L16,22H18V21.5L16.5,20H16.42C18.11,20 19,18.63 19,16.94M12,18.5A1.5,1.5 0 0,1 10.5,17A1.5,1.5 0 0,1 12,15.5A1.5,1.5 0 0,1 13.5,17A1.5,1.5 0 0,1 12,18.5M17,14H7V9H17V14Z"; +var mdiTramSide = "M9 1L5 4L7.5 6H5C5 6 2 6 2 9V19H7C7 19 7 17 9 17H22V14H18V8H22V6H10.5L13 4L9 1M4 8H9V14H4V8M11 8H16V14H11V8M4 16H5V18H4V16M9 19V19.5C9 20.88 10.12 22 11.5 22C12.5 22 13.39 21.41 13.79 20.5H15.21C15.61 21.41 16.5 22 17.5 22C18.88 22 20 20.88 20 19.5V19H9Z"; +var mdiTranscribe = "M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z"; +var mdiTranscribeClose = "M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z"; +var mdiTransfer = "M8 4A2 2 0 0 0 6 6V10H8V6H16V9H13.5L17 12.5L20.5 9H18V6A2 2 0 0 0 16 4H8M3 12V14H11V12H3M3 15V17H11V15H3M13 15V17H21V15H13M3 18V20H11V18H3M13 18V20H21V18H13Z"; +var mdiTransferDown = "M16,3V5H8V3H16M16,7V9H8V7H16M16,11V13H8V11H16M5,15H19L12,22L5,15Z"; +var mdiTransferLeft = "M21,16H19V8H21V16M17,16H15V8H17V16M13,16H11V8H13V16M9,5V19L2,12L9,5Z"; +var mdiTransferRight = "M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z"; +var mdiTransferUp = "M8,21V19H16V21H8M8,17V15H16V17H8M8,13V11H16V13H8M19,9H5L12,2L19,9Z"; +var mdiTransitConnection = "M15,12C15,10.7 14.16,9.6 13,9.18V6.82C14.16,6.4 15,5.3 15,4A3,3 0 0,0 12,1A3,3 0 0,0 9,4C9,5.3 9.84,6.4 11,6.82V9.19C9.84,9.6 9,10.7 9,12C9,13.3 9.84,14.4 11,14.82V17.18C9.84,17.6 9,18.7 9,20A3,3 0 0,0 12,23A3,3 0 0,0 15,20C15,18.7 14.16,17.6 13,17.18V14.82C14.16,14.4 15,13.3 15,12M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M12,21A1,1 0 0,1 11,20A1,1 0 0,1 12,19A1,1 0 0,1 13,20A1,1 0 0,1 12,21Z"; +var mdiTransitConnectionHorizontal = "M12 9C10.7 9 9.6 9.8 9.2 11H6.8C6.4 9.8 5.3 9 4 9C2.3 9 1 10.3 1 12S2.3 15 4 15C5.3 15 6.4 14.2 6.8 13H9.2C9.6 14.2 10.7 15 12 15S14.4 14.2 14.8 13H17.2C17.6 14.2 18.7 15 20 15C21.7 15 23 13.7 23 12S21.7 9 20 9C18.7 9 17.6 9.8 17.2 11H14.8C14.4 9.8 13.3 9 12 9M3 12C3 11.4 3.4 11 4 11S5 11.4 5 12 4.6 13 4 13 3 12.6 3 12M21 12C21 12.6 20.6 13 20 13S19 12.6 19 12 19.4 11 20 11 21 11.4 21 12Z"; +var mdiTransitConnectionVariant = "M18,11H14.82C14.4,9.84 13.3,9 12,9C10.7,9 9.6,9.84 9.18,11H6C5.67,11 4,10.9 4,9V8C4,6.17 5.54,6 6,6H16.18C16.6,7.16 17.7,8 19,8A3,3 0 0,0 22,5A3,3 0 0,0 19,2C17.7,2 16.6,2.84 16.18,4H6C4.39,4 2,5.06 2,8V9C2,11.94 4.39,13 6,13H9.18C9.6,14.16 10.7,15 12,15C13.3,15 14.4,14.16 14.82,13H18C18.33,13 20,13.1 20,15V16C20,17.83 18.46,18 18,18H7.82C7.4,16.84 6.3,16 5,16A3,3 0 0,0 2,19A3,3 0 0,0 5,22C6.3,22 7.4,21.16 7.82,20H18C19.61,20 22,18.93 22,16V15C22,12.07 19.61,11 18,11M19,4A1,1 0 0,1 20,5A1,1 0 0,1 19,6A1,1 0 0,1 18,5A1,1 0 0,1 19,4M5,20A1,1 0 0,1 4,19A1,1 0 0,1 5,18A1,1 0 0,1 6,19A1,1 0 0,1 5,20Z"; +var mdiTransitDetour = "M19 3A3 3 0 0 0 16.61 4.21A11.5 11.5 0 0 0 13.75 4L13.88 6A9.47 9.47 0 0 1 16 6.13A3 3 0 1 0 19 3M19 7A1 1 0 1 1 20 6A1 1 0 0 1 19 7M8.86 7.86L7.67 6.25A11.5 11.5 0 0 1 11.6 4.37L12.1 6.31A9.5 9.5 0 0 0 8.86 7.86M21 18A3 3 0 1 1 15.69 16.11A9.47 9.47 0 0 0 8.59 13.46C8.37 13.47 8.16 13.5 7.94 13.54A3 3 0 1 1 4.39 10.06A11.54 11.54 0 0 1 6.04 7.7L7.5 9.06A9.34 9.34 0 0 0 6.5 10.41A3.04 3.04 0 0 1 7.62 11.56C7.91 11.5 8.19 11.5 8.5 11.46A11.47 11.47 0 0 1 17.46 15.05A2.96 2.96 0 0 1 18 15A3 3 0 0 1 21 18Z"; +var mdiTransitSkip = "M21 12C21 8 18.5 4.7 15 3.5C14.7 2.1 13.5 1 12 1C10.3 1 9 2.3 9 4S10.3 7 12 7C13.1 7 14.1 6.4 14.6 5.5C17.2 6.5 19 9 19 12C19 14.9 17.2 17.5 14.6 18.5C14.1 17.6 13.1 17 12 17C10.3 17 9 18.3 9 20S10.3 23 12 23C13.5 23 14.7 21.9 15 20.5C18.5 19.3 21 15.9 21 12M12 5C11.4 5 11 4.6 11 4S11.4 3 12 3 13 3.4 13 4 12.6 5 12 5M12 21C11.4 21 11 20.6 11 20S11.4 19 12 19 13 19.4 13 20 12.6 21 12 21M12 9C13.7 9 15 10.3 15 12S13.7 15 12 15 9 13.7 9 12 10.3 9 12 9Z"; +var mdiTransitTransfer = "M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z"; +var mdiTransition = "M15,2A7,7 0 0,1 22,9C22,11.71 20.46,14.05 18.22,15.22C17.55,16.5 16.5,17.55 15.22,18.22C14.05,20.46 11.71,22 9,22A7,7 0 0,1 2,15C2,12.29 3.54,9.95 5.78,8.78C6.45,7.5 7.5,6.45 8.78,5.78C9.95,3.54 12.29,2 15,2M12,19A7,7 0 0,1 5,12C4.37,12.84 4,13.87 4,15A5,5 0 0,0 9,20C10.13,20 11.16,19.63 12,19M15,16A7,7 0 0,1 8,9H8C7.37,9.84 7,10.87 7,12A5,5 0 0,0 12,17C13.13,17 14.16,16.63 15,16V16M15,4C13.87,4 12.84,4.37 12,5V5A7,7 0 0,1 19,12H19C19.63,11.16 20,10.13 20,9A5,5 0 0,0 15,4M10,9A5,5 0 0,0 15,14C15.6,14 16.17,13.9 16.7,13.7C16.9,13.17 17,12.6 17,12A5,5 0 0,0 12,7C11.4,7 10.83,7.1 10.3,7.3C10.1,7.83 10,8.4 10,9Z"; +var mdiTransitionMasked = "M15,2C16.94,2 18.59,2.7 19.95,4.05C21.3,5.41 22,7.06 22,9C22,10.56 21.5,11.96 20.58,13.2C19.64,14.43 18.44,15.27 16.97,15.7L17,15.38V15C17,12.81 16.23,10.93 14.65,9.35C13.07,7.77 11.19,7 9,7H8.63L8.3,7.03C8.73,5.56 9.57,4.36 10.8,3.42C12.04,2.5 13.44,2 15,2M9,8A7,7 0 0,1 16,15A7,7 0 0,1 9,22A7,7 0 0,1 2,15A7,7 0 0,1 9,8M9,10A5,5 0 0,0 4,15A5,5 0 0,0 9,20A5,5 0 0,0 14,15A5,5 0 0,0 9,10Z"; +var mdiTranslate = "M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z"; +var mdiTranslateOff = "M12.17,5.81C11.87,6.69 11.47,7.55 11,8.39L12.35,9.74C13.11,8.5 13.71,7.18 14.13,5.81H17.16V3.75H9.94V1.69H7.87V3.75H6.37L8.43,5.81H12.17M15.53,12.91L17.03,14.41L17.67,12.69L19.08,16.47L22.39,19.77L18.7,9.94H16.64L15.53,12.91M1.31,1.31L0,2.62L1.13,3.75H0.65V5.81H3.19L5.26,7.88H4.46C5.21,9.56 6.24,11.15 7.53,12.58L2.28,17.76L3.75,19.22L8.91,14.07L12.11,17.27L12.8,15.43L14.1,16.72L12,22.31H14.06L15.22,19.22H16.6L21.38,24L22.69,22.69L1.31,1.31Z"; +var mdiTransmissionTower = "M8.28,5.45L6.5,4.55L7.76,2H16.23L17.5,4.55L15.72,5.44L15,4H9L8.28,5.45M18.62,8H14.09L13.3,5H10.7L9.91,8H5.38L4.1,10.55L5.89,11.44L6.62,10H17.38L18.1,11.45L19.89,10.56L18.62,8M17.77,22H15.7L15.46,21.1L12,15.9L8.53,21.1L8.3,22H6.23L9.12,11H11.19L10.83,12.35L12,14.1L13.16,12.35L12.81,11H14.88L17.77,22M11.4,15L10.5,13.65L9.32,18.13L11.4,15M14.68,18.12L13.5,13.64L12.6,15L14.68,18.12Z"; +var mdiTrashCan = "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M9,8H11V17H9V8M13,8H15V17H13V8Z"; +var mdiTrashCanOutline = "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z"; +var mdiTray = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17Z"; +var mdiTrayAlert = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M13 12H11V14H13M13 4H11V10H13Z"; +var mdiTrayFull = "M18 5H6V7H18M6 9H18V11H6M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M18 13H6V15H18Z"; +var mdiTrayMinus = "M16 10H8V8H16M2 17A2 2 0 0 0 4 19H20A2 2 0 0 0 22 17V12H20V17H4V12H2Z"; +var mdiTrayPlus = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M11 5H13V8H16V10H13V13H11V10H8V8H11Z"; +var mdiTrayRemove = "M2 17A2 2 0 0 0 4 19H20A2 2 0 0 0 22 17V12H20V17H4V12H2M14.12 5.46L15.54 6.88L13.41 9L15.54 11.12L14.12 12.54L12 10.41L9.88 12.54L8.46 11.12L10.59 9L8.46 6.88L9.88 5.46L12 7.59Z"; +var mdiTreasureChest = "M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z"; +var mdiTree = "M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z"; +var mdiTreeOutline = "M10.5,3C8,3 6,5 6,7.5C6,8.11 6.13,8.71 6.37,9.27C5.5,10.12 5,11.28 5,12.5C5,15 7,17 9.5,17C10,17 10.5,16.89 11,16.72V21H13V15.77C13.5,15.91 14,16 14.5,16A5.5,5.5 0 0,0 20,10.5A5.5,5.5 0 0,0 14.5,5C14.41,5 14.33,5 14.24,5C13.41,3.76 12,3 10.5,3M10.5,5C11.82,5 12.91,6.03 13,7.35C13.46,7.12 14,7 14.5,7A3.5,3.5 0 0,1 18,10.5A3.5,3.5 0 0,1 14.5,14C13.54,14 12.63,13.61 11.96,12.91C11.76,14.12 10.72,15 9.5,15A2.5,2.5 0 0,1 7,12.5C7,11.12 7.8,10.54 9,9.79C8.2,8.76 8,8.16 8,7.5A2.5,2.5 0 0,1 10.5,5Z"; +var mdiTrello = "M19.5,2H4.5A2.5,2.5 0 0,0 2,4.5V19.5A2.5,2.5 0 0,0 4.5,22H19.5A2.5,2.5 0 0,0 22,19.5V4.5A2.5,2.5 0 0,0 19.5,2M10.7,17.2A1.2,1.2 0 0,1 9.5,18.4H5.8C5.14,18.4 4.6,17.86 4.6,17.2V5.8A1.2,1.2 0 0,1 5.8,4.6H9.5C10.16,4.6 10.7,5.14 10.7,5.8V17.2M19.4,12.2C19.4,12.86 18.86,13.4 18.2,13.4H14.5C13.84,13.4 13.3,12.86 13.3,12.2V5.8C13.3,5.14 13.84,4.6 14.5,4.6H18.2C18.86,4.6 19.4,5.14 19.4,5.8V12.2Z"; +var mdiTrendingDown = "M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z"; +var mdiTrendingNeutral = "M22,12L18,8V11H3V13H18V16L22,12Z"; +var mdiTrendingUp = "M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z"; +var mdiTriangle = "M1,21H23L12,2"; +var mdiTriangleOutline = "M12,2L1,21H23M12,6L19.53,19H4.47"; +var mdiTriangleWave = "M22 12L17 22L7.1 6.04L4.24 12H2L7 2L16.9 17.96L19.76 12H22Z"; +var mdiTriforce = "M1.5,21L12,3.5L22.5,21H1.5M12,21L17,12H7L12,21Z"; +var mdiTrophy = "M18 2C17.1 2 16 3 16 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2C6.6 15 7.9 16.7 11 17V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V17C16.1 16.7 17.4 15 17.8 13H20C21 13 22 12 22 11V2H18M6 11H4V4H6V11M20 11H18V4H20V11Z"; +var mdiTrophyAward = "M15.2 10.7L16.6 16L12 12.2L7.4 16L8.8 10.8L4.6 7.3L10 7L12 2L14 7L19.4 7.3L15.2 10.7M14 19H13V16L12 15L11 16V19H10C8.9 19 8 19.9 8 21V22H16V21C16 19.9 15.11 19 14 19Z"; +var mdiTrophyBroken = "M6.2 13C6.6 14.8 7.6 16.3 10 16.8V19.34C8 20.12 8 22 8 22H13.2L10.2 15L14.2 10L10.7 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2M6 11H4V4H6V11M17.8 13H20C21 13 22 12 22 11V2H18C17.1 2 16 3 16 4H13.9L16.7 10L12.2 15L13.2 22H16C16 22 16 20.12 14 19.34L14 16.85C16.39 16.35 17.5 14.7 17.8 13M20 11H18V4H20V11Z"; +var mdiTrophyOutline = "M18 2C17.1 2 16 3 16 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2C6.6 15 7.9 16.7 11 17V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V17C16.1 16.7 17.4 15 17.8 13H20C21 13 22 12 22 11V2H18M6 11H4V4H6V11M16 11.5C16 13.43 15.42 15 12 15C8.59 15 8 13.43 8 11.5V6H16V11.5M20 11H18V4H20V11Z"; +var mdiTrophyVariant = "M17 4V2H7V4H2V11C2 12.1 2.9 13 4 13H7.1C7.5 14.96 9.04 16.5 11 16.9V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V16.9C14.96 16.5 16.5 14.96 16.9 13H20C21.1 13 22 12.1 22 11V4H17M4 11V6H7V11L4 11M20 11L17 11V6H20L20 11Z"; +var mdiTrophyVariantOutline = "M17 4V2H7V4H2V11C2 12.1 2.9 13 4 13H7.1C7.5 14.96 9.04 16.5 11 16.9V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V16.9C14.96 16.5 16.5 14.96 16.9 13H20C21.1 13 22 12.1 22 11V4H17M4 11V6H7V11L4 11M15 12C15 13.65 13.65 15 12 15S9 13.65 9 12V4H15V12M20 11L17 11V6H20L20 11Z"; +var mdiTruck = "M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z"; +var mdiTruckCheck = "M3,4H17V8H20L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.9,4 3,4M17,9.5V12H21.47L19.5,9.5H17M6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5M18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5M8,14L14,8L12.59,6.58L8,11.17L5.91,9.08L4.5,10.5L8,14Z"; +var mdiTruckCheckOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3M5 10.5L6.5 9L8 10.5L11.5 7L13 8.5L8 13.5L5 10.5Z"; +var mdiTruckDelivery = "M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; +var mdiTruckDeliveryOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3M10 7L13.5 10.5L10 14V11.5H5V9.5H10V7Z"; +var mdiTruckFast = "M3,13.5L2.25,12H7.5L6.9,10.5H2L1.25,9H9.05L8.45,7.5H1.11L0.25,6H4A2,2 0 0,1 6,4H18V8H21L24,12V17H22A3,3 0 0,1 19,20A3,3 0 0,1 16,17H12A3,3 0 0,1 9,20A3,3 0 0,1 6,17H4V13.5H3M19,18.5A1.5,1.5 0 0,0 20.5,17A1.5,1.5 0 0,0 19,15.5A1.5,1.5 0 0,0 17.5,17A1.5,1.5 0 0,0 19,18.5M20.5,9.5H18V12H22.46L20.5,9.5M9,18.5A1.5,1.5 0 0,0 10.5,17A1.5,1.5 0 0,0 9,15.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 9,18.5Z"; +var mdiTruckFastOutline = "M.75 7.5H10.5L11.25 9H1.5L.75 7.5M1.75 10.5H11.5L12.25 12H2.5L1.75 10.5M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M8 18.5C8.83 18.5 9.5 17.83 9.5 17C9.5 16.17 8.83 15.5 8 15.5C7.17 15.5 6.5 16.17 6.5 17C6.5 17.83 7.17 18.5 8 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H11C11 18.66 9.65 20 8 20C6.34 20 5 18.66 5 17H3V13.5 13.5H5V15H5.76C6.31 14.39 7.11 14 8 14C8.89 14 9.69 14.39 10.24 15H15V6H3V6C3 4.89 3.89 4 5 4H17V8H20Z"; +var mdiTruckOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3Z"; +var mdiTruckTrailer = "M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z"; +var mdiTrumpet = "M22 6C21 11 15 11 15 11H4C3 11 2 10 2 10H1V14H2C2 14 3 13 4 13H4.3C4.1 13.3 4 13.6 4 14V16C4 17.1 4.9 18 6 18H7V19H9V18H10V19H12V18H13V19H15V18H16C17.1 18 18 17.1 18 16V14C18 13.9 18 13.7 17.9 13.6C19.6 14.2 21.4 15.4 22 18H23V6H22M6 16.5C5.7 16.5 5.5 16.3 5.5 16V14C5.5 13.7 5.7 13.5 6 13.5H7V16.5H6M9 16.5V13.5H10V16.5H9M12 16.5V13.5H13V16.5H12M16.5 16C16.5 16.3 16.3 16.5 16 16.5H15V13.5H16C16.3 13.5 16.5 13.7 16.5 14V16M9 10H7V9H9V10M12 10H10V9H12V10M15 10H13V9H15V10Z"; +var mdiTshirtCrew = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.07C5.31,13.46 4.68,13.46 4.29,13.07L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.12V20A1,1 0 0,1 16,21"; +var mdiTshirtCrewOutline = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z"; +var mdiTshirtV = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.07C5.31,13.46 4.68,13.46 4.29,13.07L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9.29,4.8 10.4,6.37 12,7.25C13.6,6.37 14.71,4.8 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.12V20A1,1 0 0,1 16,21"; +var mdiTshirtVOutline = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z"; +var mdiTumbleDryer = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8M8.11,10.5H10C9.76,11.88 10,12.67 10.58,13.29C11.68,14.36 12.16,15.71 11.89,17.5H10C10.24,16.12 10,15.33 9.42,14.71C8.32,13.64 7.85,12.29 8.11,10.5M12.11,10.5H14C13.76,11.88 14,12.67 14.58,13.29C15.68,14.36 16.16,15.71 15.89,17.5H14C14.24,16.12 14,15.33 13.42,14.71C12.32,13.64 11.85,12.29 12.11,10.5Z"; +var mdiTumbleDryerAlert = "M4 2H16C17.11 2 18 2.9 18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M5 4C4.45 4 4 4.45 4 5S4.45 6 5 6 6 5.55 6 5 5.55 4 5 4M8 4C7.45 4 7 4.45 7 5S7.45 6 8 6 9 5.55 9 5 8.55 4 8 4M10 8C6.69 8 4 10.69 4 14S6.69 20 10 20 16 17.31 16 14 13.31 8 10 8M6.11 10.5H8C7.76 11.88 8 12.67 8.58 13.29C9.68 14.36 10.16 15.71 9.89 17.5H8C8.24 16.12 8 15.33 7.42 14.71C6.32 13.64 5.85 12.29 6.11 10.5M10.11 10.5H12C11.76 11.88 12 12.67 12.58 13.29C13.68 14.36 14.16 15.71 13.89 17.5H12C12.24 16.12 12 15.33 11.42 14.71C10.32 13.64 9.85 12.29 10.11 10.5M20 15H22V17H20V15M20 7H22V13H20V7Z"; +var mdiTumbleDryerOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M12 20C8.69 20 6 17.31 6 14C6 12.32 6.7 10.8 7.82 9.71L8.61 10.5H8.11C7.85 12.29 8.32 13.64 9.42 14.71C10 15.33 10.24 16.12 10 17.5H11.89C12.16 15.71 11.68 14.36 10.58 13.29C10.22 12.91 10 12.44 9.95 11.84L14.03 15.92C14.11 16.35 14.11 16.86 14 17.5H15.61L16.29 18.18C15.2 19.3 13.69 20 12 20M11.25 8.05C11.5 8 11.75 8 12 8C15.31 8 18 10.69 18 14C18 14.25 18 14.5 17.95 14.75L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.25 8.05M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z"; +var mdiTune = "M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"; +var mdiTuneVariant = "M8 13C6.14 13 4.59 14.28 4.14 16H2V18H4.14C4.59 19.72 6.14 21 8 21S11.41 19.72 11.86 18H22V16H11.86C11.41 14.28 9.86 13 8 13M8 19C6.9 19 6 18.1 6 17C6 15.9 6.9 15 8 15S10 15.9 10 17C10 18.1 9.1 19 8 19M19.86 6C19.41 4.28 17.86 3 16 3S12.59 4.28 12.14 6H2V8H12.14C12.59 9.72 14.14 11 16 11S19.41 9.72 19.86 8H22V6H19.86M16 9C14.9 9 14 8.1 14 7C14 5.9 14.9 5 16 5S18 5.9 18 7C18 8.1 17.1 9 16 9Z"; +var mdiTuneVertical = "M7 3H5V9H7V3M19 3H17V13H19V3M3 13H5V21H7V13H9V11H3V13M15 7H13V3H11V7H9V9H15V7M11 21H13V11H11V21M15 15V17H17V21H19V17H21V15H15Z"; +var mdiTuneVerticalVariant = "M8 12.14V2H6V12.14C4.28 12.59 3 14.14 3 16S4.28 19.41 6 19.86V22H8V19.86C9.72 19.41 11 17.86 11 16S9.72 12.59 8 12.14M7 14C8.1 14 9 14.9 9 16S8.1 18 7 18C5.9 18 5 17.1 5 16S5.9 14 7 14M18 2H16V4.14C14.28 4.59 13 6.14 13 8S14.28 11.41 16 11.86V22H18V11.86C19.72 11.41 21 9.86 21 8S19.72 4.59 18 4.14V2M17 6C18.1 6 19 6.9 19 8S18.1 10 17 10C15.9 10 15 9.1 15 8S15.9 6 17 6Z"; +var mdiTurkey = "M10.5 19.44C9.75 19.8 8.9 20 8 20C4.69 20 2 17.31 2 14V9C2 5.69 4.69 3 8 3L10.5 7.58C8.1 8.81 6.5 11 6.5 13.5C6.5 16 8.11 18.2 10.5 19.44M16 18.94V20H17C17.55 20 18 20.45 18 21S17.55 22 17 22H14C13.45 22 13 21.55 13 21S13.45 20 14 20V18.94C10.61 18.56 8 16.27 8 13.5C8 10.46 11.13 8 15 8C15.19 8 15.37 8 15.56 8C14.84 6.63 14 5.23 14 4C14 2.9 14.9 2 16 2C18.21 2 20 3.79 20 6H18C18 6 22 9 22 13.5C22 16.27 19.39 18.56 16 18.94M16 4C16 4.55 16.45 5 17 5S18 4.55 18 4 17.55 3 17 3 16 3.45 16 4M17 12C17 10.9 16.11 10 15 10C12.79 10 11 11.79 11 14H15C16.11 14 17 13.11 17 12Z"; +var mdiTurnstile = "M22,22H16V11L10,5V2H22V22M9.17,6.17C8.42,6.92 8,7.94 8,9H2V11H8.55C8.9,11.6 9.4,12.1 10,12.45V19H12V13C13.06,13 14.08,12.58 14.83,11.83L9.17,6.17Z"; +var mdiTurnstileOutline = "M13.41,10.41C13.04,10.79 12.53,11 12,11A2,2 0 0,1 10,9C10,8.47 10.21,7.96 10.59,7.59L9.17,6.17C8.42,6.92 8,7.94 8,9H2V11H8.55C8.9,11.6 9.4,12.1 10,12.45V19H12V13C13.06,13 14.08,12.58 14.83,11.83L13.41,10.41M10,2V5L16,11V22H22V2H10M20,20H18V10.17L12,4.17V4H20V20Z"; +var mdiTurtle = "M8.47,5.95C8.95,5.67 9.47,5.44 10,5.28V4C10,2.9 10.87,2 11.97,1.97C13.13,2 14,2.9 14,4V5.28C14.53,5.45 15.05,5.67 15.53,5.95L13.93,8.07H10.07L8.47,5.95M19,12C19,12.5 18.95,12.95 18.86,13.4L16.33,12.62L15.14,8.96L16.74,6.85C17.17,7.25 17.55,7.7 17.88,8.2C18.67,8.13 19.43,8.25 20.11,8.59C21.14,9.12 21.84,10.13 22,11.28L19,11.64C19,11.76 19,11.88 19,12M5,12C5,11.88 5,11.76 5,11.65L2,11.28C2.16,10.13 2.86,9.12 3.89,8.59C4.57,8.25 5.34,8.13 6.08,8.26C6.41,7.75 6.79,7.28 7.24,6.87L8.86,8.95L7.67,12.62L5.14,13.4C5.05,12.95 5,12.5 5,12M10.24,9.57H13.76L14.85,12.93L12,15L9.15,12.93L10.24,9.57M8.13,14.05L11.25,16.31V18.96C10.68,18.9 10.13,18.77 9.62,18.58L8.39,21.34C7.33,20.87 6.57,19.9 6.37,18.76C6.23,18 6.35,17.24 6.69,16.56C6.24,16.04 5.87,15.46 5.59,14.82L8.13,14.05M15.87,14.05L18.41,14.82C18.13,15.46 17.76,16.04 17.31,16.56C17.65,17.24 17.77,18 17.64,18.76C17.43,19.9 16.67,20.87 15.61,21.34L14.39,18.58C13.86,18.77 13.33,18.94 12.75,19V16.31L15.87,14.05Z"; +var mdiTwitch = "M11.64 5.93H13.07V10.21H11.64M15.57 5.93H17V10.21H15.57M7 2L3.43 5.57V18.43H7.71V22L11.29 18.43H14.14L20.57 12V2M19.14 11.29L16.29 14.14H13.43L10.93 16.64V14.14H7.71V3.43H19.14Z"; +var mdiTwitter = "M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z"; +var mdiTwitterRetweet = "M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z"; +var mdiTwoFactorAuthentication = "M2,7V9H6V11H4A2,2 0 0,0 2,13V17H8V15H4V13H6A2,2 0 0,0 8,11V9C8,7.89 7.1,7 6,7H2M9,7V17H11V13H14V11H11V9H15V7H9M18,7A2,2 0 0,0 16,9V17H18V14H20V17H22V9A2,2 0 0,0 20,7H18M18,9H20V12H18V9Z"; +var mdiTypewriter = "M20 13H16C16 14.1 15.1 15 14 15H10C8.9 15 8 14.1 8 13H4L2 18V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V18M6 20C5.11 20 4.66 18.92 5.29 18.29C5.92 17.66 7 18.11 7 19C7 19.55 6.55 20 6 20M10 20C9.11 20 8.66 18.92 9.29 18.29C9.92 17.66 11 18.11 11 19C11 19.55 10.55 20 10 20M14 20C13.11 20 12.66 18.92 13.29 18.29C13.92 17.66 15 18.11 15 19C15 19.55 14.55 20 14 20M18 20C17.11 20 16.66 18.92 17.29 18.29C17.92 17.66 19 18.11 19 19C19 19.55 18.55 20 18 20M18 10V3H6V10H3V12H21V10M8 5H16V6H8M8 7H14V8H8"; +var mdiUbisoft = "M11.41,2C5.21,2 2.53,7.53 2.53,7.53L3.32,8.09C3.32,8.09 2.33,10 2.35,12.4C2.35,17.34 6.29,22 12.07,22C17.33,22 21.67,17.71 21.67,12.41C21.67,5.5 16.31,2 11.41,2M11.47,3.69C16.31,3.69 20.07,7.6 20.07,12.14C20.07,16.95 16.45,20.3 12.23,20.3C9.13,20.3 6.33,17.94 6.33,14.7C6.33,12.82 7.32,11.5 8.44,10.82L8.6,11C8.3,11.24 7.43,12.64 7.43,14C7.43,16.56 9.43,18.33 11.95,18.33C15.16,18.33 17.3,15.59 17.3,12.41C17.3,8.71 14.03,5.57 10.1,5.57C7.93,5.57 6.09,6.5 5.03,7.33L4.86,7.18C6.25,5.04 8.65,3.69 11.47,3.69M10,7.23C12.53,7.23 14.97,8.89 15.59,11.25L15.36,11.33C14.27,9.88 12.47,8.68 10.35,8.68C6.44,8.68 4.39,12.23 4.69,15.19L4.46,15.28C4.46,15.28 4.03,14.33 4.03,13.2C4.03,9.93 6.71,7.23 10,7.23M11.68,11.33C12.86,11.33 13.81,12.3 13.81,13.44C13.81,14.38 13.21,14.94 13.21,14.94L13.92,15.45C13.92,15.45 13.21,16.57 11.76,16.57C10.37,16.57 9.13,15.44 9.13,13.93C9.13,12.38 10.47,11.33 11.68,11.33Z"; +var mdiUbuntu = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z"; +var mdiUfo = "M15.94 10.28C15.66 7.87 14 6 12 6S8.34 7.87 8.06 10.28C4.5 10.82 2 12.06 2 13.5C2 15.43 6.5 17 12 17S22 15.43 22 13.5C22 12.06 19.5 10.82 15.94 10.28Z"; +var mdiUfoOutline = "M17 10.54C16.78 7.44 14.63 5 12 5S7.22 7.44 7 10.54C4 11.23 2 12.5 2 14C2 16.21 6.5 18 12 18S22 16.21 22 14C22 12.5 20 11.23 17 10.54M14.93 11.84C13.03 12.05 10.97 12.05 9.07 11.84C9.03 11.56 9 11.28 9 11C9 8.8 10.35 7 12 7S15 8.8 15 11C15 11.28 15 11.56 14.93 11.84Z"; +var mdiUltraHighDefinition = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M17,7H20A3,3 0 0,1 23,10V14A3,3 0 0,1 20,17H17V7M20,15A1,1 0 0,0 21,14V10A1,1 0 0,0 20,9H19V15H20M7,14A3,3 0 0,1 4,17A3,3 0 0,1 1,14V7H3V14A1,1 0 0,0 4,15A1,1 0 0,0 5,14V7H7V14Z"; +var mdiUmbraco = "M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z"; +var mdiUmbrella = "M12,2A9,9 0 0,1 21,11H13V19A3,3 0 0,1 10,22A3,3 0 0,1 7,19V18H9V19A1,1 0 0,0 10,20A1,1 0 0,0 11,19V11H3A9,9 0 0,1 12,2Z"; +var mdiUmbrellaClosed = "M12 2C11.6 2 11.3 2.2 11.1 2.6L6.5 15H11V19C11 19.6 10.6 20 10 20C9.4 20 9 19.6 9 19V18H7V19C7 20.7 8.3 22 10 22S13 20.7 13 19V15H17.5L12.9 2.6C12.7 2.2 12.4 2 12 2Z"; +var mdiUmbrellaClosedOutline = "M12 2C12.4 2 12.8 2.2 12.9 2.6L17.5 15H13V19C13 20.7 11.7 22 10 22S7 20.7 7 19V18H9V19C9 19.6 9.4 20 10 20C10.6 20 11 19.6 11 19V15H6.5L11.1 2.6C11.2 2.2 11.6 2 12 2M12 5.9L9.4 13H14.7L12 5.9Z"; +var mdiUmbrellaClosedVariant = "M15 7L13 6V3.5C13 3.2 13.2 3 13.5 3S14 3.2 14 3.5V4H16V3.5C16 2.1 14.9 1 13.5 1S11 2.1 11 3.5V6L9 7L6 6L11.1 21.3C11.4 22.2 12.7 22.2 13 21.3C14.6 16.2 18 6 18 6L15 7M11 15L9 8.9L9.7 9.1L11 8.1V15M13 8.1L14.3 9.1L15 8.9L13 15V8.1Z"; +var mdiUmbrellaOutline = "M12,4C8.9,4 6.18,6.03 5.3,9H18.7C17.82,6.04 15.09,4 12,4M12,2A9,9 0 0,1 21,11H13V19A3,3 0 0,1 10,22A3,3 0 0,1 7,19V18H9V19A1,1 0 0,0 10,20A1,1 0 0,0 11,19V11H3A9,9 0 0,1 12,2Z"; +var mdiUndo = "M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"; +var mdiUndoVariant = "M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"; +var mdiUnfoldLessHorizontal = "M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z"; +var mdiUnfoldLessVertical = "M5.41,7.41L10,12L5.41,16.59L4,15.17L7.17,12L4,8.83L5.41,7.41M18.59,16.59L14,12L18.59,7.42L20,8.83L16.83,12L20,15.17L18.59,16.59Z"; +var mdiUnfoldMoreHorizontal = "M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"; +var mdiUnfoldMoreVertical = "M18.17,12L15,8.83L16.41,7.41L21,12L16.41,16.58L15,15.17L18.17,12M5.83,12L9,15.17L7.59,16.59L3,12L7.59,7.42L9,8.83L5.83,12Z"; +var mdiUngroup = "M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z"; +var mdiUnicode = "M22 6A1.46 1.46 0 0 1 20.54 7.44A1.46 1.46 0 0 1 19.09 6A1.46 1.46 0 0 1 20.54 4.5A1.46 1.46 0 0 1 22 6M21.56 8.86H19.53C19.4 8.85 19.34 8.91 19.34 9V12.59C19.34 13.08 19.34 13.5 19.35 13.86L19.37 14.76C19.38 15 19.39 15.21 19.39 15.39C19.4 15.56 19.4 15.72 19.4 15.86H19.38C19.26 15.6 19.07 15.22 18.82 14.74C18.58 14.27 18.29 13.72 17.97 13.11C17.64 12.5 17.29 11.84 16.92 11.15C16.55 10.47 16.18 9.78 15.81 9.11C15.45 8.43 15.09 7.78 14.75 7.16C14.4 6.54 14.1 6 13.85 5.54C13.82 5.5 13.79 5.44 13.77 5.42C13.74 5.4 13.68 5.39 13.6 5.39H10.62C10.5 5.39 10.47 5.44 10.47 5.54H10.5C10.47 5.56 10.47 5.57 10.47 5.58V13.84C10.47 14.5 10.4 15 10.25 15.45C10.1 15.88 9.9 16.23 9.64 16.5C9.38 16.75 9.07 16.93 8.72 17.05C8.36 17.16 8 17.22 7.56 17.22C6.54 17.22 5.79 16.91 5.3 16.31C4.8 15.7 4.56 14.89 4.56 13.88V5.56C4.56 5.45 4.5 5.39 4.39 5.39H2.17C2.06 5.39 2 5.45 2 5.58V14.07C2 15 2.13 15.78 2.38 16.46C2.63 17.13 3 17.69 3.5 18.14C3.96 18.58 4.53 18.92 5.21 19.14C5.89 19.36 6.64 19.5 7.47 19.5C8.24 19.5 8.97 19.38 9.65 19.17C10.34 18.97 10.93 18.64 11.42 18.2C11.91 17.75 12.3 17.18 12.59 16.5C12.88 15.79 13.03 14.95 13.03 13.96V8.62C13.14 8.86 13.28 9.15 13.44 9.47C13.73 10.05 14.05 10.68 14.42 11.38C14.79 12.08 15.17 12.8 15.58 13.56C16 14.32 16.39 15.06 16.77 15.76C17.16 16.46 17.5 17.11 17.83 17.7C18.15 18.29 18.4 18.76 18.58 19.12C18.63 19.22 18.73 19.27 18.85 19.27H21.54C21.68 19.27 21.75 19.2 21.75 19.08V9.05C21.75 8.92 21.68 8.85 21.56 8.85Z"; +var mdiUnicorn = "M22 5L21.11 6.34C21.65 6.7 22 7.31 22 8V11.5L20.5 12L18.96 9.54C18.83 9.33 18.5 9.42 18.5 9.67V13.25C18.5 14.23 18.11 15.11 17.5 15.78V22H15V17C14.92 17 14.84 17 14.75 17C14.54 17 14.33 16.97 14.13 16.94L9.45 16.16L8.57 18.12L9.54 22H6.96L6.04 18.3C5.97 18.03 6 17.74 6.11 17.5L7 15.5C6.12 14.92 5.53 13.94 5.5 12.81C5.46 12.96 5.44 13.18 5.47 13.5C5.5 13.94 5.61 14.59 5.54 15.31C5.5 16.03 5.18 16.77 4.76 17.26C4.32 17.75 3.85 18.09 3.35 18.35L2.65 17.65C2.84 17.18 3.03 16.76 3.07 16.37C3.13 16 3.06 15.7 2.95 15.43L2.42 14.3C2.21 13.79 1.95 13.05 2 12.18C2.03 11.33 2.5 10.22 3.39 9.61C4.29 9 5.26 8.91 6.05 9.08C6.55 9.18 7.06 9.42 7.5 9.76C7.87 9.59 8.3 9.5 8.75 9.5H14.5V9C14.5 6.79 16.29 5 18.5 5L22 2L21 5H22Z"; +var mdiUnicornVariant = "M20 12V19L17 20L14 15.33C13.71 14.89 13 15.14 13.08 15.67L14 23L4 18L4.96 12.75C5.56 9.42 8.46 7 11.84 7H13L19 1L17 7H20L18.42 9.37C19.36 9.88 20 10.86 20 12Z"; +var mdiUnicycle = "M13 9.09V5H14C14.55 5 15 4.55 15 4S14.55 3 14 3H10C9.45 3 9 3.45 9 4S9.45 5 10 5H11V9.09C8.16 9.57 6 12.03 6 15C6 18.31 8.69 21 12 21S18 18.31 18 15C18 12.03 15.84 9.57 13 9.09M12 19C9.79 19 8 17.21 8 15C8 13.14 9.28 11.59 11 11.14V16H13V11.14C14.72 11.59 16 13.14 16 15C16 17.21 14.21 19 12 19Z"; +var mdiUnity = "M10.11,17H7.5L2.59,12L7.5,7H10.11L11.42,4.74L18.21,3L20.08,9.74L18.77,12L20.08,14.26L18.21,21L11.42,19.26L10.11,17M10.25,16.75L15.38,18.13L12.42,13H6.5L10.25,16.75M17.12,17.13L18.5,12L17.12,6.87L14.15,12L17.12,17.13M10.25,7.25L6.5,11H12.42L15.38,5.87L10.25,7.25Z"; +var mdiUnreal = "M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M5.24,18.76C3.43,16.95 2.44,14.55 2.44,12C2.44,9.45 3.43,7.05 5.24,5.24C7.05,3.43 9.45,2.44 12,2.44C14.55,2.44 16.95,3.43 18.76,5.24C20.57,7.05 21.56,9.45 21.56,12C21.56,14.55 20.57,16.95 18.76,18.76C16.95,20.57 14.55,21.56 12,21.56C9.45,21.56 7.05,20.57 5.24,18.76M6.35,9.5C4.34,11.79 4.73,13.68 4.73,13.68C4.73,13.68 5.28,12.38 6.61,11C7.25,10.37 7.72,10.15 8.04,10.15C8.4,10.15 8.57,10.41 8.57,10.65V15.29C8.57,15.75 8.27,15.85 8,15.84C7.77,15.84 7.55,15.76 7.55,15.76C8.92,17.73 12.19,18 12.19,18L13.63,16.5H13.67L15,17.63C17.39,16.21 18.55,13.58 18.55,13.58C17.5,14.7 16.79,14.97 16.39,14.96C16.03,14.96 15.88,14.75 15.88,14.75C15.87,14.65 15.82,8.9 15.89,8.9C16.31,8.13 17.63,6.56 17.63,6.56C15.16,7.05 13.81,8.66 13.81,8.66C13.41,8.35 12.59,8.4 12.59,8.4C12.97,8.61 13.35,9.21 13.35,9.72V14.65C13.35,14.65 12.5,15.38 11.88,15.38C11.5,15.38 11.27,15.17 11.14,15C11.05,14.88 11,14.79 11,14.79V8.69C10.93,8.75 10.82,8.8 10.71,8.8C10.57,8.79 10.43,8.73 10.34,8.53C10.26,8.38 10.22,8.15 10.22,7.83C10.22,6.7 11.5,5.96 11.5,5.96C9.87,6.39 8.36,7.22 6.35,9.5"; +var mdiUntappd = "M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z"; +var mdiUpdate = "M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z"; +var mdiUpload = "M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"; +var mdiUploadLock = "M22 22H17C16.5 22 16 21.5 16 21V17C16 16.5 16.5 16 17 16V14.5C17 13.1 18.1 12 19.5 12C20.9 12 22 13.1 22 14.5V16C22.5 16 23 16.5 23 17V21C23 21.5 22.5 22 22 22M14 20H5V18H14V20M21 16V14.5C21 13.7 20.3 13 19.5 13C18.7 13 18 13.7 18 14.5V16H21M15 16H9V10H5L12 3L19 10H15V16Z"; +var mdiUploadLockOutline = "M22 22H17C16.5 22 16 21.5 16 21V17C16 16.5 16.5 16 17 16V14.5C17 13.1 18.1 12 19.5 12C20.9 12 22 13.1 22 14.5V16C22.5 16 23 16.5 23 17V21C23 21.5 22.5 22 22 22M5 18H14V20H5V18M21 16V14.5C21 13.7 20.3 13 19.5 13C18.7 13 18 13.7 18 14.5V16H21M9 16V10H5L12 3L19 10H15V16H9M9.83 8H11V14H13V8H14.17L12 5.83L9.83 8Z"; +var mdiUploadMultiple = "M9,14V8H5L12,1L19,8H15V14H9M5,18V16H19V18H5M19,20H5V22H19V20Z"; +var mdiUploadNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12,5.5L7.5,10H11V14H13V10H16.5L12,5.5Z"; +var mdiUploadNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M12,6L8,10H11V14H13V10H16L12,6Z"; +var mdiUploadOff = "M22.11 21.46L2.39 1.73L1.11 3L6.56 8.45L5 10H8.11L9 10.89V16H14.11L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M15 10H19L12 3L9.1 5.9L15 11.8V10Z"; +var mdiUploadOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.56 8.45L5 10H8.11L9 10.89V16H14.11L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M11 14V12.89L12.11 14H11M12 5.8L14.2 8H13V9.8L15 11.8V10H19L12 3L9.1 5.9L10.5 7.3L12 5.8Z"; +var mdiUploadOutline = "M9,10V16H15V10H19L12,3L5,10H9M12,5.8L14.2,8H13V14H11V8H9.8L12,5.8M19,18H5V20H19V18Z"; +var mdiUsb = "M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z"; +var mdiUsbFlashDrive = "M8 15C8.55 15 9 15.45 9 16C9 16.55 8.55 17 8 17C7.45 17 7 16.55 7 16C7 15.45 7.45 15 8 15M15.07 4.69L16.5 6.1L15.07 7.5L13.66 6.1L15.07 4.69M17.9 7.5L19.31 8.93L17.9 10.34L16.5 8.93L17.9 7.5M8 13C6.34 13 5 14.34 5 16C5 17.66 6.34 19 8 19C9.66 19 11 17.66 11 16C11 14.34 9.66 13 8 13M9.77 4.33L10.5 5.08L14.29 1.29C14.47 1.11 14.72 1 15 1C15.28 1 15.53 1.11 15.71 1.29L22.78 8.36L22.78 8.37C22.92 8.54 23 8.76 23 9C23 9.3 22.87 9.57 22.66 9.76L22.66 9.76L18.93 13.5L19.67 14.23L12.95 20.95C11.68 22.22 9.93 23 8 23C4.13 23 1 19.87 1 16C1 14.07 1.78 12.32 3.05 11.05L9.77 4.33M20.59 9L15 3.41L11.93 6.5L17.5 12.08L20.59 9Z"; +var mdiUsbFlashDriveOutline = "M8 13C9.66 13 11 14.34 11 16C11 17.66 9.66 19 8 19C6.34 19 5 17.66 5 16C5 14.34 6.34 13 8 13M8 15C7.45 15 7 15.45 7 16C7 16.55 7.45 17 8 17C8.55 17 9 16.55 9 16C9 15.45 8.55 15 8 15M9.77 4.33L10.5 5.08L14.29 1.29C14.47 1.11 14.72 1 15 1C15.28 1 15.53 1.11 15.71 1.29L22.78 8.36L22.78 8.37C22.92 8.54 23 8.76 23 9C23 9.3 22.87 9.57 22.66 9.76L22.66 9.76L18.93 13.5L19.67 14.23L12.95 20.95C11.68 22.22 9.93 23 8 23C4.13 23 1 19.87 1 16C1 14.07 1.78 12.32 3.05 11.05L9.77 4.33M11.54 19.54L16.84 14.23L9.77 7.16L4.46 12.46C3.56 13.37 3 14.62 3 16C3 18.76 5.24 21 8 21C9.38 21 10.63 20.44 11.54 19.54M15.07 4.69L16.5 6.1L15.07 7.5L13.66 6.1L15.07 4.69M17.9 7.5L19.31 8.93L17.9 10.34L16.5 8.93L17.9 7.5M20.59 9L15 3.41L11.93 6.5L17.5 12.08L20.59 9Z"; +var mdiUsbPort = "M8 2C6.9 2 6 2.9 6 4V12H5V16L9 20V22H15V20L19 16V12H18V4C18 2.9 17.11 2 16 2M8 4H16V12H8M9 7V9H11V7M13 7V9H15V7Z"; +var mdiValve = "M4 22H2V2H4M22 2H20V22H22M17.24 5.34L13.24 9.34A3 3 0 0 0 9.24 13.34L5.24 17.34L6.66 18.76L10.66 14.76A3 3 0 0 0 14.66 10.76L18.66 6.76Z"; +var mdiValveClosed = "M22 2V22H20V13H14.82A3 3 0 0 1 9.18 13H4V22H2V2H4V11H9.18A3 3 0 0 1 14.82 11H20V2Z"; +var mdiValveOpen = "M4 22H2V2H4M22 2H20V22H22M11 4V9.18A3 3 0 0 0 11 14.82V20H13V14.82A3 3 0 0 0 13 9.18V4Z"; +var mdiVanPassenger = "M3,7C1.89,7 1,7.89 1,9V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V13C23,11.89 22.11,11 21,11L18,7H3M3,8.5H7V11H3V8.5M9,8.5H13V11H9V8.5M15,8.5H17.5L19.46,11H15V8.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; +var mdiVanUtility = "M3,7C1.89,7 1,7.89 1,9V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V13C23,11.89 22.11,11 21,11L18,7H3M15,8.5H17.5L19.46,11H15V8.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; +var mdiVanish = "M16,13V11H21V13H16M14.83,7.76L17.66,4.93L19.07,6.34L16.24,9.17L14.83,7.76M11,16H13V21H11V16M11,3H13V8H11V3M4.93,17.66L7.76,14.83L9.17,16.24L6.34,19.07L4.93,17.66M4.93,6.34L6.34,4.93L9.17,7.76L7.76,9.17L4.93,6.34M8,13H3V11H8V13M19.07,17.66L17.66,19.07L14.83,16.24L16.24,14.83L19.07,17.66Z"; +var mdiVanishQuarter = "M11 3H13V8H11V3M4.9 6.3L6.3 4.9L9.1 7.7L7.8 9.2L4.9 6.3M8 13H3V11H8V13"; +var mdiVanityLight = "M22 20H16C16 18.34 17.34 13 19 13S22 18.34 22 20M12 13C10.34 13 9 18.34 9 20H15C15 18.34 13.66 13 12 13M5 13C3.34 13 2 18.34 2 20H8C8 18.34 6.66 13 5 13M14.82 6C14.26 4.44 12.53 3.64 11 4.2C10.14 4.5 9.5 5.17 9.18 6H2V8H4V12H6V8H9.18C9.5 8.85 10.15 9.5 11 9.82V12H13V9.82C13.85 9.5 14.5 8.85 14.82 8H18V12H20V8H22V6H14.82Z"; +var mdiVariable = "M20.41,3C21.8,5.71 22.35,8.84 22,12C21.8,15.16 20.7,18.29 18.83,21L17.3,20C18.91,17.57 19.85,14.8 20,12C20.34,9.2 19.89,6.43 18.7,4L20.41,3M5.17,3L6.7,4C5.09,6.43 4.15,9.2 4,12C3.66,14.8 4.12,17.57 5.3,20L3.61,21C2.21,18.29 1.65,15.17 2,12C2.2,8.84 3.3,5.71 5.17,3M12.08,10.68L14.4,7.45H16.93L13.15,12.45L15.35,17.37H13.09L11.71,14L9.28,17.33H6.76L10.66,12.21L8.53,7.45H10.8L12.08,10.68Z"; +var mdiVariableBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.4 18C5.9 16.5 5 14.3 5 12S5.9 7.5 7.4 6L9 6.7C7.7 7.9 7 9.9 7 12S7.7 16.1 9 17.3L7.4 18M12.7 15L11.9 13L10.5 15H9L11.3 11.9L10 9H11.3L12.1 11L13.5 9H15L12.8 12L14.1 15H12.7M16.6 18L15 17.3C16.3 16 17 14.1 17 12S16.3 7.9 15 6.7L16.6 6C18.1 7.5 19 9.7 19 12S18.1 16.5 16.6 18Z"; +var mdiVectorArrangeAbove = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z"; +var mdiVectorArrangeBelow = "M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z"; +var mdiVectorBezier = "M7.5,4A1.5,1.5 0 0,0 6,5.5A1.5,1.5 0 0,0 7.5,7C8.13,7 8.7,6.6 8.91,6H13C13.67,5.33 14.33,5 15,5H8.91C8.7,4.4 8.13,4 7.5,4M19,5C8,5 14,17 5,17V19C16,19 10,7 19,7V5M16.5,17C15.87,17 15.3,17.4 15.09,18H11C10.33,18.67 9.67,19 9,19H15.09C15.3,19.6 15.87,20 16.5,20A1.5,1.5 0 0,0 18,18.5A1.5,1.5 0 0,0 16.5,17Z"; +var mdiVectorCircle = "M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11"; +var mdiVectorCircleVariant = "M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15"; +var mdiVectorCombine = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z"; +var mdiVectorCurve = "M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z"; +var mdiVectorDifference = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z"; +var mdiVectorDifferenceAb = "M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z"; +var mdiVectorDifferenceBa = "M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z"; +var mdiVectorEllipse = "M23,9V15H20.35C19.38,17.12 17.43,18.78 15,19.54V22H9V19.54C5.5,18.45 3,15.5 3,12C3,7.58 7.03,4 12,4C15.78,4 19,6.07 20.35,9H23M17,15V9H18.06C16.85,7.21 14.59,6 12,6C8.13,6 5,8.69 5,12C5,14.39 6.64,16.46 9,17.42V16H15V17.42C16.29,16.9 17.35,16.05 18.06,15H17M19,13H21V11H19V13M11,20H13V18H11V20Z"; +var mdiVectorIntersection = "M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z"; +var mdiVectorLine = "M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5"; +var mdiVectorLink = "M3 1C1.89 1 1 1.89 1 3V14C1 15.11 1.89 16 3 16H14C15.11 16 16 15.11 16 14V11H14V14H3V3H14V5H16V3C16 1.89 15.11 1 14 1M9 7C7.89 7 7 7.89 7 9V12H9V9H20V20H9V18H7V20C7 21.11 7.89 22 9 22H20C21.11 22 22 21.11 22 20V9C22 7.89 21.11 7 20 7H9"; +var mdiVectorPoint = "M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z"; +var mdiVectorPolygon = "M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17"; +var mdiVectorPolyline = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3M4 5H6V7H4M18 7H20V9H18M8 17H10V19H8Z"; +var mdiVectorPolylineEdit = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M21.15 13C21 13 20.87 13.05 20.76 13.16L19.75 14.18L21.82 16.25L22.84 15.24C23.05 15.03 23.05 14.67 22.84 14.46L21.54 13.16C21.43 13.05 21.29 13 21.15 13M19.15 14.76L13 20.91V23H15.09L21.23 16.84L19.15 14.76M8 17H10V19H8V17Z"; +var mdiVectorPolylineMinus = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M8 17H10V19H8V17M15 18V20H23V18H15Z"; +var mdiVectorPolylinePlus = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M18 15V18H15V20H18V23H20V20H23V18H20V15H18M8 17H10V19H8V17Z"; +var mdiVectorPolylineRemove = "M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9L21.1 15.5M16 5V9.6L10.6 15H9.1L7.1 9H8V3H2V9H5L7 15H6V21H12V16.4L17.4 11H22V5H16M6 7H4V5H6V7M10 19H8V17H10V19M20 9H18V7H20V9"; +var mdiVectorRadius = "M2,4H4V2H10V4A10,10 0 0,1 20,14H22V20H20V22H18V20H16V14H18A8,8 0 0,0 10,6V8H4V6H2V4M18,16V18H20V16H18M6,4V6H8V4H6Z"; +var mdiVectorRectangle = "M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z"; +var mdiVectorSelection = "M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z"; +var mdiVectorSquare = "M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z"; +var mdiVectorTriangle = "M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18"; +var mdiVectorUnion = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z"; +var mdiVhs = "M4,6A2,2 0 0,0 2,8V16A2,2 0 0,0 4,18H20A2,2 0 0,0 22,16V8A2,2 0 0,0 20,6H4M4.54,10H7V14H4.54C4.19,13.39 4,12.7 4,12C4,11.3 4.19,10.61 4.54,10M9,10H15V14H9V10M17,10H19.46C19.81,10.61 20,11.3 20,12C20,12.7 19.81,13.39 19.46,14H17V10Z"; +var mdiVibrate = "M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z"; +var mdiVibrateOff = "M8.2,5L6.55,3.35C6.81,3.12 7.15,3 7.5,3H16.5A1.5,1.5 0 0,1 18,4.5V14.8L16,12.8V5H8.2M0,15H2V9H0V15M21,17V7H19V15.8L20.2,17H21M3,17H5V7H3V17M18,17.35L22.11,21.46L20.84,22.73L18,19.85C17.83,20.54 17.21,21 16.5,21H7.5A1.5,1.5 0 0,1 6,19.5V7.89L1.11,3L2.39,1.73L6.09,5.44L8,7.34L16,15.34L18,17.34V17.35M16,17.89L8,9.89V19H16V17.89M22,9V15H24V9H22Z"; +var mdiVideo = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z"; +var mdiVideo3d = "M5,7H9A2,2 0 0,1 11,9V15A2,2 0 0,1 9,17H5V15H9V13H6V11H9V9H5V7M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16Z"; +var mdiVideo3dOff = "M2.61 2L21.35 20.74L19.94 22.15L14.8 17H13V15.2L11 13.23V15.21C10.93 15.68 10.74 16.08 10.41 16.41C10.08 16.73 9.68 16.93 9.21 17H5V15H9V13H6V11H8.8L6.79 9H5V7.23L1.2 3.41L2.61 2M16 7H16.22C17 7.07 17.63 7.36 18.14 7.88C18.65 8.39 18.93 9 19 9.76V14.24C18.95 14.63 18.87 15 18.72 15.3L17 13.6V9.85C16.95 9.63 16.84 9.44 16.69 9.28C16.53 9.13 16.34 9.03 16.12 9H15V11.59L13 9.57V7H16Z"; +var mdiVideo3dVariant = "M14,10V14A0.5,0.5 0 0,1 13.5,14.5H12.5V9.5H13.5A0.5,0.5 0 0,1 14,10M21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M9.5,9.5A1.5,1.5 0 0,0 8,8H4.5V9.5H8V11.25H5.5V12.75H8V14.5H4.5V16H8A1.5,1.5 0 0,0 9.5,14.5M15.5,9.5A1.5,1.5 0 0,0 14,8H11V16H14A1.5,1.5 0 0,0 15.5,14.5"; +var mdiVideo4kBox = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,13.5H11V15H9.5V13.5H6.5V9H8V12H9.5V9H11V12H12V13.5M18,15H16.2L14.4,12.8V15H13V9H14.5V11.2L16.2,9H18L15.8,12L18,15Z"; +var mdiVideoAccount = "M17,10.5L21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M14,16V15C14,13.67 11.33,13 10,13C8.67,13 6,13.67 6,15V16H14M10,8A2,2 0 0,0 8,10A2,2 0 0,0 10,12A2,2 0 0,0 12,10A2,2 0 0,0 10,8Z"; +var mdiVideoBox = "M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; +var mdiVideoBoxOff = "M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z"; +var mdiVideoCheck = "M17 10.5V7C17 6.45 16.55 6 16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5M8.93 15L6 11.8L7.24 10.56L8.93 12.26L12.76 8.43L14 9.93L8.93 15Z"; +var mdiVideoCheckOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M6.35 12.08L7.5 10.95L9 12.5L12.5 9L13.65 10.37L9 15L6.35 12.08Z"; +var mdiVideoHighDefinition = "M14 10V14C14 14.3 13.8 14.5 13.5 14.5H12.5V9.5H13.5C13.8 9.5 14 9.7 14 10M17 10.5V7C17 6.4 16.6 6 16 6H4C3.4 6 3 6.4 3 7V17C3 17.6 3.4 18 4 18H16C16.6 18 17 17.6 17 17V13.5L21 17.5V6.5L17 10.5M9.5 16H8V12.8H6V16H4.5V8H6V11.2H8V8H9.5V16M15.5 14.5C15.5 15.3 14.8 16 14 16H11V8H14C14.8 8 15.5 8.7 15.5 9.5V14.5Z"; +var mdiVideoImage = "M17,10.5L21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M10.91,9.55L9.2,11.82L10.5,13.55L9.77,14.09L7.73,11.36L5,15H15L10.91,9.55Z"; +var mdiVideoInputAntenna = "M12,5A7,7 0 0,0 5,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H19A7,7 0 0,0 12,5M13,14.29C13.88,13.9 14.5,13.03 14.5,12A2.5,2.5 0 0,0 12,9.5A2.5,2.5 0 0,0 9.5,12C9.5,13 10.12,13.9 11,14.29V17.59L7.59,21L9,22.41L12,19.41L15,22.41L16.41,21L13,17.59V14.29M12,1A11,11 0 0,0 1,12H3A9,9 0 0,1 12,3A9,9 0 0,1 21,12H23A11,11 0 0,0 12,1Z"; +var mdiVideoInputComponent = "M5,2A1,1 0 0,0 4,1A1,1 0 0,0 3,2V6H1V12H7V6H5V2M9,16C9,17.3 9.84,18.4 11,18.82V23H13V18.82C14.16,18.41 15,17.31 15,16V14H9V16M1,16C1,17.3 1.84,18.4 3,18.82V23H5V18.82C6.16,18.4 7,17.3 7,16V14H1V16M21,6V2A1,1 0 0,0 20,1A1,1 0 0,0 19,2V6H17V12H23V6H21M13,2A1,1 0 0,0 12,1A1,1 0 0,0 11,2V6H9V12H15V6H13V2M17,16C17,17.3 17.84,18.4 19,18.82V23H21V18.82C22.16,18.41 23,17.31 23,16V14H17V16Z"; +var mdiVideoInputHdmi = "M18,7V4A2,2 0 0,0 16,2H8A2,2 0 0,0 6,4V7H5V13L8,19V22H16V19L19,13V7H18M8,4H16V7H14V5H13V7H11V5H10V7H8V4Z"; +var mdiVideoInputScart = "M20.6 2.2L17.3 2.4L13.8 4.4L13.3 3.5L2 10V17H3V19C3 20.1 3.9 21 5 21H15C16.1 21 17 20.1 17 19V17H18V10H17L16.8 9.6L20.3 7.6L22.1 4.8L20.6 2.2M15 17V19H5V17H15Z"; +var mdiVideoInputSvideo = "M8,11.5A1.5,1.5 0 0,0 6.5,10A1.5,1.5 0 0,0 5,11.5A1.5,1.5 0 0,0 6.5,13A1.5,1.5 0 0,0 8,11.5M15,6.5A1.5,1.5 0 0,0 13.5,5H10.5A1.5,1.5 0 0,0 9,6.5A1.5,1.5 0 0,0 10.5,8H13.5A1.5,1.5 0 0,0 15,6.5M8.5,15A1.5,1.5 0 0,0 7,16.5A1.5,1.5 0 0,0 8.5,18A1.5,1.5 0 0,0 10,16.5A1.5,1.5 0 0,0 8.5,15M12,1A11,11 0 0,0 1,12A11,11 0 0,0 12,23A11,11 0 0,0 23,12A11,11 0 0,0 12,1M12,21C7.04,21 3,16.96 3,12C3,7.04 7.04,3 12,3C16.96,3 21,7.04 21,12C21,16.96 16.96,21 12,21M17.5,10A1.5,1.5 0 0,0 16,11.5A1.5,1.5 0 0,0 17.5,13A1.5,1.5 0 0,0 19,11.5A1.5,1.5 0 0,0 17.5,10M15.5,15A1.5,1.5 0 0,0 14,16.5A1.5,1.5 0 0,0 15.5,18A1.5,1.5 0 0,0 17,16.5A1.5,1.5 0 0,0 15.5,15Z"; +var mdiVideoMinus = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5M14,13H6V11H14V13Z"; +var mdiVideoMinusOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M13 13H7V11H13V13Z"; +var mdiVideoOff = "M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z"; +var mdiVideoOffOutline = "M3.41,1.86L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.21,18 16.39,17.92 16.55,17.82L19.73,21L21.14,19.59L12.28,10.73L3.41,1.86M5,16V8H6.73L14.73,16H5M15,8V10.61L21,16.61V6.5L17,10.5V7A1,1 0 0,0 16,6H10.39L12.39,8H15Z"; +var mdiVideoOutline = "M15,8V16H5V8H15M16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5V7A1,1 0 0,0 16,6Z"; +var mdiVideoPlus = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5M14,13H11V16H9V13H6V11H9V8H11V11H14V13Z"; +var mdiVideoPlusOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M13 13H11V15H9V13H7V11H9V9H11V11H13V13Z"; +var mdiVideoStabilization = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M7.24,6.58L18.83,9.69L16.76,17.42L5.17,14.31L7.24,6.58Z"; +var mdiVideoSwitch = "M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z"; +var mdiVideoSwitchOutline = "M8 13H12V15L15 12L12 9V11H8V9L5 12L8 15V13M18 9.5V6C18 5.4 17.5 5 17 5H3C2.5 5 2 5.4 2 6V18C2 18.5 2.5 19 3 19H17C17.5 19 18 18.5 18 18V14.5L22 18.5V5.5L18 9.5M16 17H4V7H16V17Z"; +var mdiVideoVintage = "M18,14.5V11A1,1 0 0,0 17,10H16C18.24,8.39 18.76,5.27 17.15,3C15.54,0.78 12.42,0.26 10.17,1.87C9.5,2.35 8.96,3 8.6,3.73C6.25,2.28 3.17,3 1.72,5.37C0.28,7.72 1,10.8 3.36,12.25C3.57,12.37 3.78,12.5 4,12.58V21A1,1 0 0,0 5,22H17A1,1 0 0,0 18,21V17.5L22,21.5V10.5L18,14.5M13,4A2,2 0 0,1 15,6A2,2 0 0,1 13,8A2,2 0 0,1 11,6A2,2 0 0,1 13,4M6,6A2,2 0 0,1 8,8A2,2 0 0,1 6,10A2,2 0 0,1 4,8A2,2 0 0,1 6,6Z"; +var mdiVideoWireless = "M17,14.5V11A1,1 0 0,0 16,10H4A1,1 0 0,0 3,11V21A1,1 0 0,0 4,22H16A1,1 0 0,0 17,21V17.5L21,21.5V10.5M3,3.86L4.4,5.24C7.5,2.19 12.5,2.19 15.6,5.24L17,3.86C13.14,0.05 6.87,0.05 3,3.86M5.8,6.62L7.2,8C8.75,6.5 11.25,6.5 12.8,8L14.2,6.62C11.88,4.34 8.12,4.34 5.8,6.62Z"; +var mdiVideoWirelessOutline = "M15,12V20H5V12H15M16,10H4A1,1 0 0,0 3,11V21A1,1 0 0,0 4,22H16A1,1 0 0,0 17,21V17.5L21,21.5V10.5L17,14.5V11A1,1 0 0,0 16,10M3,3.86L4.4,5.24C7.5,2.19 12.5,2.19 15.6,5.24L17,3.86C13.14,0.05 6.87,0.05 3,3.86M5.8,6.63L7.2,8C8.75,6.5 11.25,6.5 12.8,8L14.2,6.63C11.88,4.34 8.12,4.34 5.8,6.63Z"; +var mdiViewAgenda = "M21 3H3C2.4 3 2 3.4 2 4V10C2 10.6 2.4 11 3 11H21C21.6 11 22 10.6 22 10V4C22 3.4 21.6 3 21 3M21 13H3C2.4 13 2 13.4 2 14V20C2 20.6 2.4 21 3 21H21C21.6 21 22 20.6 22 20V14C22 13.4 21.6 13 21 13Z"; +var mdiViewAgendaOutline = "M21 13H3A1 1 0 0 0 2 14V20A1 1 0 0 0 3 21H21A1 1 0 0 0 22 20V14A1 1 0 0 0 21 13M20 19H4V15H20M21 3H3A1 1 0 0 0 2 4V10A1 1 0 0 0 3 11H21A1 1 0 0 0 22 10V4A1 1 0 0 0 21 3M20 9H4V5H20Z"; +var mdiViewArray = "M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z"; +var mdiViewArrayOutline = "M15 7V16H10V7H15M21 5H18V18H21V5M17 5H8V18H17V5M7 5H4V18H7V5Z"; +var mdiViewCarousel = "M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z"; +var mdiViewCarouselOutline = "M2 6H6V17H2V6M7 19H17V4H7V19M9 6H15V17H9V6M18 6H22V17H18V6Z"; +var mdiViewColumn = "M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z"; +var mdiViewColumnOutline = "M4 5V18H21V5H4M14 7V16H11V7H14M6 7H9V16H6V7M19 16H16V7H19V16Z"; +var mdiViewComfy = "M3,9H7V5H3V9M3,14H7V10H3V14M8,14H12V10H8V14M13,14H17V10H13V14M8,9H12V5H8V9M13,5V9H17V5H13M18,14H22V10H18V14M3,19H7V15H3V19M8,19H12V15H8V19M13,19H17V15H13V19M18,19H22V15H18V19M18,5V9H22V5H18Z"; +var mdiViewComfyOutline = "M3 5V19H22V5H3M20 9H17.75V7H20V9M9.25 11H11.5V13H9.25V11M7.25 13H5V11H7.25V13M11.5 9H9.25V7H11.5V9M13.5 7H15.75V9H13.5V7M11.5 15V17H9.25V15H11.5M13.5 15H15.75V17H13.5V15M13.5 13V11H15.75V13H13.5M17.75 11H20V13H17.75V11M7.25 7V9H5V7H7.25M5 15H7.25V17H5V15M17.75 17V15H20V17H17.75Z"; +var mdiViewCompact = "M3,19H9V12H3V19M10,19H22V12H10V19M3,5V11H22V5H3Z"; +var mdiViewCompactOutline = "M3,5V19H22V5H3M5,7H20V11H5V7M5,17V13H9V17H5M11,17V13H20V17H11Z"; +var mdiViewDashboard = "M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z"; +var mdiViewDashboardOutline = "M19,5V7H15V5H19M9,5V11H5V5H9M19,13V19H15V13H19M9,17V19H5V17H9M21,3H13V9H21V3M11,3H3V13H11V3M21,11H13V21H21V11M11,15H3V21H11V15Z"; +var mdiViewDashboardVariant = "M2,5V19H8V5H2M9,5V10H15V5H9M16,5V14H22V5H16M9,11V19H15V11H9M16,15V19H22V15H16Z"; +var mdiViewDashboardVariantOutline = "M2 5V19H22V5H2M20 12H16V7H20V12M14 10H10V7H14V10M10 12H14V17H10V12M4 7H8V17H4V7M16 17V14H20V17H16Z"; +var mdiViewDay = "M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z"; +var mdiViewDayOutline = "M21 18H2V20H21V18M19 10V14H4V10H19M20 8H3C2.45 8 2 8.45 2 9V15C2 15.55 2.45 16 3 16H20C20.55 16 21 15.55 21 15V9C21 8.45 20.55 8 20 8M21 4H2V6H21V4Z"; +var mdiViewGrid = "M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3"; +var mdiViewGridOutline = "M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z"; +var mdiViewGridPlus = "M13 3V11H21V3H13M3 21H11V13H3V21M3 3V11H11V3H3M13 16H16V13H18V16H21V18H18V21H16V18H13V16Z"; +var mdiViewGridPlusOutline = "M3 21H11V13H3M5 15H9V19H5M3 11H11V3H3M5 5H9V9H5M13 3V11H21V3M19 9H15V5H19M18 16H21V18H18V21H16V18H13V16H16V13H18Z"; +var mdiViewHeadline = "M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z"; +var mdiViewList = "M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z"; +var mdiViewListOutline = "M3 5V19H20V5H3M7 7V9H5V7H7M5 13V11H7V13H5M5 15H7V17H5V15M18 17H9V15H18V17M18 13H9V11H18V13M18 9H9V7H18V9Z"; +var mdiViewModule = "M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z"; +var mdiViewModuleOutline = "M4 5V18H21V5H4M14 7V10.5H11V7H14M6 7H9V10.5H6V7M6 16V12.5H9V16H6M11 16V12.5H14V16H11M19 16H16V12.5H19V16M16 10.5V7H19V10.5H16Z"; +var mdiViewParallel = "M19 3V21H15V3H19M14 3V21H10V3H14M9 3V21H5V3H9Z"; +var mdiViewParallelOutline = "M19 3H5V21H19V3M17 19H15V5H17V19M13 19H11V5H13V19M7 5H9V19H7V5Z"; +var mdiViewQuilt = "M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z"; +var mdiViewQuiltOutline = "M4 5V18H21V5H4M6 16V7H9V16H6M11 16V12.5H14V16H11M19 16H16V12.5H19V16M11 10.5V7H19V10.5H11Z"; +var mdiViewSequential = "M3 5H21V9H3V5M3 10H21V14H3V10M3 15H21V19H3V15Z"; +var mdiViewSequentialOutline = "M3 5V19H21V5H3M19 7V9H5V7H19M19 11V13H5V11H19M5 17V15H19V17H5Z"; +var mdiViewSplitHorizontal = "M3,5H21V7H3V5M3,11V9H21V11H3M3,19V13H21V19H3Z"; +var mdiViewSplitVertical = "M13,5H21V19H13V5M3,5H11V7H3V5M3,11V9H11V11H3M3,19V17H11V19H3M3,15V13H11V15H3Z"; +var mdiViewStream = "M4,5V11H21V5M4,18H21V12H4V18Z"; +var mdiViewStreamOutline = "M4 6V18H21V6H4M19 16H6V13H19V16M6 11V8H19V11H6Z"; +var mdiViewWeek = "M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z"; +var mdiViewWeekOutline = "M21 4H3C2.45 4 2 4.45 2 5V19C2 19.55 2.45 20 3 20H21C21.55 20 22 19.55 22 19V5C22 4.45 21.55 4 21 4M8 18H4V6H8V18M14 18H10V6H14V18M20 18H16V6H20V18Z"; +var mdiVimeo = "M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z"; +var mdiViolin = "M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z"; +var mdiVirtualReality = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M6,9H7.5L8.5,12.43L9.5,9H11L9.25,15H7.75L6,9M13,9H16.5C17.35,9 18,9.65 18,10.5V11.5C18,12.1 17.6,12.65 17.1,12.9L18,15H16.5L15.65,13H14.5V15H13V9M14.5,10.5V11.5H16.5V10.5H14.5Z"; +var mdiVirus = "M19.82 14C20.13 14.45 20.66 14.75 21.25 14.75C22.22 14.75 23 13.97 23 13S22.22 11.25 21.25 11.25C20.66 11.25 20.13 11.55 19.82 12H19C19 10.43 18.5 9 17.6 7.81L18.94 6.47C19.5 6.57 20.07 6.41 20.5 6C21.17 5.31 21.17 4.2 20.5 3.5C19.81 2.83 18.7 2.83 18 3.5C17.59 3.93 17.43 4.5 17.53 5.06L16.19 6.4C15.27 5.71 14.19 5.25 13 5.08V3.68C13.45 3.37 13.75 2.84 13.75 2.25C13.75 1.28 12.97 .5 12 .5S10.25 1.28 10.25 2.25C10.25 2.84 10.55 3.37 11 3.68V5.08C10.1 5.21 9.26 5.5 8.5 5.94L7.39 4.35C7.58 3.83 7.53 3.23 7.19 2.75C6.63 1.96 5.54 1.76 4.75 2.32C3.96 2.87 3.76 3.96 4.32 4.75C4.66 5.24 5.2 5.5 5.75 5.5L6.93 7.18C6.5 7.61 6.16 8.09 5.87 8.62C5.25 8.38 4.5 8.5 4 9C3.33 9.7 3.33 10.8 4 11.5C4.29 11.77 4.64 11.93 5 12L5 12C5 12.54 5.07 13.06 5.18 13.56L3.87 13.91C3.45 13.56 2.87 13.41 2.29 13.56C1.36 13.81 .808 14.77 1.06 15.71C1.31 16.64 2.28 17.19 3.21 16.94C3.78 16.78 4.21 16.36 4.39 15.84L5.9 15.43C6.35 16.22 6.95 16.92 7.65 17.5L6.55 19.5C6 19.58 5.5 19.89 5.21 20.42C4.75 21.27 5.07 22.33 5.92 22.79C6.77 23.25 7.83 22.93 8.29 22.08C8.57 21.56 8.56 20.96 8.31 20.47L9.38 18.5C10.19 18.82 11.07 19 12 19C12.06 19 12.12 19 12.18 19C12.05 19.26 12 19.56 12 19.88C12.08 20.85 12.92 21.57 13.88 21.5S15.57 20.58 15.5 19.62C15.46 19.12 15.21 18.68 14.85 18.39C15.32 18.18 15.77 17.91 16.19 17.6L18.53 19.94C18.43 20.5 18.59 21.07 19 21.5C19.7 22.17 20.8 22.17 21.5 21.5S22.17 19.7 21.5 19C21.07 18.59 20.5 18.43 19.94 18.53L17.6 16.19C18.09 15.54 18.47 14.8 18.71 14H19.82M10.5 12C9.67 12 9 11.33 9 10.5S9.67 9 10.5 9 12 9.67 12 10.5 11.33 12 10.5 12M14 15C13.45 15 13 14.55 13 14C13 13.45 13.45 13 14 13S15 13.45 15 14C15 14.55 14.55 15 14 15Z"; +var mdiVirusOutline = "M12 .5C11.03 .5 10.25 1.28 10.25 2.25C10.25 2.84 10.55 3.37 11 3.68V5.08C10.1 5.21 9.26 5.5 8.5 5.94L7.39 4.35C7.58 3.83 7.53 3.23 7.19 2.75C6.84 2.26 6.3 2 5.75 2C5.4 2 5.05 2.1 4.75 2.32C3.96 2.87 3.76 3.96 4.32 4.75C4.66 5.24 5.2 5.5 5.75 5.5L6.93 7.18C6.5 7.61 6.16 8.09 5.87 8.62C5.67 8.54 5.46 8.5 5.25 8.5C4.8 8.5 4.35 8.67 4 9C3.33 9.7 3.33 10.8 4 11.5C4.29 11.77 4.64 11.92 5 12L5 12C5 12.54 5.07 13.06 5.18 13.56L3.87 13.91C3.56 13.65 3.16 13.5 2.75 13.5C2.6 13.5 2.44 13.5 2.29 13.56C1.36 13.81 .809 14.77 1.06 15.71C1.27 16.5 2 17 2.75 17C2.9 17 3.05 17 3.21 16.94C3.78 16.78 4.21 16.36 4.39 15.84L5.9 15.43C6.35 16.22 6.95 16.92 7.65 17.5L6.55 19.5C6 19.58 5.5 19.89 5.21 20.42C4.75 21.27 5.07 22.33 5.92 22.79C6.18 22.93 6.47 23 6.75 23C7.37 23 7.97 22.67 8.29 22.08C8.57 21.56 8.56 20.96 8.31 20.47L9.38 18.5C10.19 18.82 11.07 19 12 19C12.06 19 12.12 19 12.18 19C12.05 19.26 12 19.56 12 19.88C12.08 20.8 12.84 21.5 13.75 21.5C13.79 21.5 13.84 21.5 13.88 21.5C14.85 21.42 15.57 20.58 15.5 19.62C15.46 19.12 15.21 18.68 14.85 18.39C15.32 18.18 15.77 17.91 16.19 17.6L18.53 19.94C18.43 20.5 18.59 21.07 19 21.5C19.35 21.83 19.8 22 20.25 22S21.15 21.83 21.5 21.5C22.17 20.8 22.17 19.7 21.5 19C21.15 18.67 20.7 18.5 20.25 18.5C20.15 18.5 20.05 18.5 19.94 18.53L17.6 16.19C18.09 15.54 18.47 14.8 18.71 14H19.82C20.13 14.45 20.66 14.75 21.25 14.75C22.22 14.75 23 13.97 23 13S22.22 11.25 21.25 11.25C20.66 11.25 20.13 11.55 19.82 12H19C19 10.43 18.5 9 17.6 7.81L18.94 6.47C19.05 6.5 19.15 6.5 19.25 6.5C19.7 6.5 20.15 6.33 20.5 6C21.17 5.31 21.17 4.2 20.5 3.5C20.15 3.17 19.7 3 19.25 3S18.35 3.17 18 3.5C17.59 3.93 17.43 4.5 17.53 5.06L16.19 6.4C15.27 5.71 14.19 5.25 13 5.08V3.68C13.45 3.37 13.75 2.84 13.75 2.25C13.75 1.28 12.97 .5 12 .5M12 17C9.24 17 7 14.76 7 12S9.24 7 12 7 17 9.24 17 12 14.76 17 12 17M10.5 9C9.67 9 9 9.67 9 10.5S9.67 12 10.5 12 12 11.33 12 10.5 11.33 9 10.5 9M14 13C13.45 13 13 13.45 13 14C13 14.55 13.45 15 14 15C14.55 15 15 14.55 15 14C15 13.45 14.55 13 14 13Z"; +var mdiVk = "M15.07 2H8.93C3.33 2 2 3.33 2 8.93V15.07C2 20.67 3.33 22 8.93 22H15.07C20.67 22 22 20.67 22 15.07V8.93C22 3.33 20.67 2 15.07 2M18.15 16.27H16.69C16.14 16.27 15.97 15.82 15 14.83C14.12 14 13.74 13.88 13.53 13.88C13.24 13.88 13.15 13.96 13.15 14.38V15.69C13.15 16.04 13.04 16.26 12.11 16.26C10.57 16.26 8.86 15.32 7.66 13.59C5.85 11.05 5.36 9.13 5.36 8.75C5.36 8.54 5.43 8.34 5.85 8.34H7.32C7.69 8.34 7.83 8.5 7.97 8.9C8.69 11 9.89 12.8 10.38 12.8C10.57 12.8 10.65 12.71 10.65 12.25V10.1C10.6 9.12 10.07 9.03 10.07 8.68C10.07 8.5 10.21 8.34 10.44 8.34H12.73C13.04 8.34 13.15 8.5 13.15 8.88V11.77C13.15 12.08 13.28 12.19 13.38 12.19C13.56 12.19 13.72 12.08 14.05 11.74C15.1 10.57 15.85 8.76 15.85 8.76C15.95 8.55 16.11 8.35 16.5 8.35H17.93C18.37 8.35 18.47 8.58 18.37 8.89C18.19 9.74 16.41 12.25 16.43 12.25C16.27 12.5 16.21 12.61 16.43 12.9C16.58 13.11 17.09 13.55 17.43 13.94C18.05 14.65 18.53 15.24 18.66 15.65C18.77 16.06 18.57 16.27 18.15 16.27Z"; +var mdiVlc = "M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z"; +var mdiVoiceOff = "M2,3.27L3.28,2L22,20.72L20.73,22L16.73,18C16.9,18.31 17,18.64 17,19V21H1V19C1,16.34 6.33,15 9,15C10.77,15 13.72,15.59 15.5,16.77L11.12,12.39C10.5,12.78 9.78,13 9,13A4,4 0 0,1 5,9C5,8.22 5.22,7.5 5.61,6.88L2,3.27M9,5A4,4 0 0,1 13,9V9.17L8.83,5H9M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z"; +var mdiVoicemail = "M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z"; +var mdiVolleyball = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13.6,20.35C15.96,18.04 17.69,15.08 18.5,11.76C17.84,11.62 17.18,11.54 16.5,11.5C15.56,15.11 13.41,18.22 10.5,20.37C11,20.45 11.5,20.5 12,20.5C12.55,20.5 13.08,20.45 13.6,20.35M9.23,20.04C12.23,18.07 14.5,15.05 15.46,11.5C14.71,11.55 13.97,11.65 13.27,11.81C12.18,14.89 9.97,17.44 7.13,18.97C7.77,19.42 8.5,19.78 9.23,20.04M20.5,12.37C20.16,12.23 19.81,12.11 19.46,12C18.76,14.9 17.39,17.53 15.54,19.73C18.36,18.44 20.35,15.64 20.5,12.37M3.56,11.04C3.5,11.35 3.5,11.68 3.5,12C3.5,14.5 4.57,16.73 6.27,18.28C6.86,18 7.41,17.66 7.94,17.29C6.08,15.54 4.58,13.41 3.56,11.04M5.33,6.74C4.73,7.5 4.26,8.35 3.95,9.28C4.92,12.13 6.58,14.66 8.74,16.67C9.25,16.24 9.72,15.77 10.15,15.26C7.74,13.03 6,10.08 5.33,6.74M8.04,4.5C7.36,4.85 6.73,5.3 6.18,5.82C6.71,9.21 8.37,12.23 10.77,14.47C11.17,13.91 11.5,13.32 11.82,12.7C9.68,10.56 8.28,7.69 8.04,4.5M19.96,9.03C18.7,8.68 17.37,8.5 16,8.5C14.1,8.5 12.28,8.85 10.61,9.5C10.96,10.1 11.35,10.67 11.8,11.2C13.12,10.75 14.53,10.5 16,10.5C17.57,10.5 19.08,10.78 20.47,11.29C20.4,10.5 20.23,9.74 19.96,9.03M17.54,5.57C17.03,5.5 16.5,5.5 16,5.5C13.69,5.5 11.47,5.94 9.44,6.73C9.62,7.38 9.86,8 10.14,8.61C11.96,7.89 13.93,7.5 16,7.5C17.18,7.5 18.32,7.63 19.42,7.87C18.93,7 18.29,6.21 17.54,5.57M16,4.5C14.79,3.87 13.44,3.5 12,3.5C10.95,3.5 9.94,3.7 9,4.05C9.04,4.63 9.11,5.2 9.21,5.75C11.31,4.95 13.6,4.5 16,4.5Z"; +var mdiVolumeHigh = "M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z"; +var mdiVolumeLow = "M7,9V15H11L16,20V4L11,9H7Z"; +var mdiVolumeMedium = "M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z"; +var mdiVolumeMinus = "M3,9H7L12,4V20L7,15H3V9M14,11H22V13H14V11Z"; +var mdiVolumeMute = "M3,9H7L12,4V20L7,15H3V9M16.59,12L14,9.41L15.41,8L18,10.59L20.59,8L22,9.41L19.41,12L22,14.59L20.59,16L18,13.41L15.41,16L14,14.59L16.59,12Z"; +var mdiVolumeOff = "M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z"; +var mdiVolumePlus = "M3,9H7L12,4V20L7,15H3V9M14,11H17V8H19V11H22V13H19V16H17V13H14V11Z"; +var mdiVolumeSource = "M3 9V15H7L12 20V4L7 9H3M16 15H14V9H16V15M20 19H18V5H20V19Z"; +var mdiVolumeVariantOff = "M5.64,3.64L21.36,19.36L19.95,20.78L16,16.83V20L11,15H7V9H8.17L4.22,5.05L5.64,3.64M16,4V11.17L12.41,7.58L16,4Z"; +var mdiVolumeVibrate = "M4 9V15H8L13 20V4L8 9H4M16.55 2.47L15.5 3.53L17.93 6L15 9L17.93 12L15 15L17.93 18L15.5 20.47L16.55 21.53L20 18L17.07 15L20 12L17.07 9L20 6L16.55 2.47Z"; +var mdiVote = "M18,13H17.32L15.32,15H17.23L19,17H5L6.78,15H8.83L6.83,13H6L3,16V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V16L18,13M17,7.95L12.05,12.9L8.5,9.36L13.46,4.41L17,7.95M12.76,2.29L6.39,8.66C6,9.05 6,9.68 6.39,10.07L11.34,15C11.73,15.41 12.36,15.41 12.75,15L19.11,8.66C19.5,8.27 19.5,7.64 19.11,7.25L14.16,2.3C13.78,1.9 13.15,1.9 12.76,2.29Z"; +var mdiVoteOutline = "M18,13L21,16V20C21,21.11 20.1,22 19,22H5C3.89,22 3,21.1 3,20V16L6,13H6.83L8.83,15H6.78L5,17H19L17.23,15H15.32L17.32,13H18M19,20V19H5V20H19M11.34,15L6.39,10.07C6,9.68 6,9.05 6.39,8.66L12.76,2.29C13.15,1.9 13.78,1.9 14.16,2.3L19.11,7.25C19.5,7.64 19.5,8.27 19.11,8.66L12.75,15C12.36,15.41 11.73,15.41 11.34,15M13.46,4.41L8.5,9.36L12.05,12.9L17,7.95L13.46,4.41Z"; +var mdiVpn = "M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z"; +var mdiVuejs = "M2,3H5.5L12,15L18.5,3H22L12,21L2,3M6.5,3H9.5L12,7.58L14.5,3H17.5L12,13.08L6.5,3Z"; +var mdiVuetify = "M12,11.64L7.92,2H16.08L12,11.64M12,21.95L3.27,4.91H7.84L12,14.47L16.16,4.91H20.73L12,21.95Z"; +var mdiWalk = "M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z"; +var mdiWall = "M3,16H12V21H3V16M2,10H8V15H2V10M9,10H15V15H9V10M16,10H22V15H16V10M13,16H21V21H13V16M3,4H11V9H3V4M12,4H21V9H12V4Z"; +var mdiWallSconce = "M11,4L7,13H19L15,4H11M4,14V22H6V19H14V14H12V17H6V14H4Z"; +var mdiWallSconceFlat = "M5,5V11H19V5H5M5.27,13.32L3.5,15.09L4.91,16.5L6.68,14.73L5.27,13.32M18.73,13.32L17.32,14.73L19.09,16.5L20.5,15.09L18.73,13.32M11,16V19H13V16H11Z"; +var mdiWallSconceFlatVariant = "M19 19V13H5V19H19M18.73 10.68L20.5 8.91L19.09 7.5L17.32 9.27L18.73 10.68M5.27 10.68L6.68 9.27L4.91 7.5L3.5 8.91L5.27 10.68M13 8V5H11V8H13Z"; +var mdiWallSconceRound = "M13 19V16H11V19H13M19.09 16.5L20.5 15.09L18.73 13.32L17.32 14.73L19.09 16.5M4.91 16.5L6.68 14.73L5.27 13.32L3.5 15.09L4.91 16.5M20 12C20 9.14 18.5 6.5 16 5.07S10.5 3.64 8 5.07 4 9.14 4 12H20Z"; +var mdiWallSconceRoundVariant = "M11 5V8H13V5H11M4.91 7.5L3.5 8.91L5.27 10.68L6.68 9.27L4.91 7.5M19.09 7.5L17.32 9.27L18.73 10.68L20.5 8.91L19.09 7.5M4 12C4 14.86 5.5 17.5 8 18.93S13.5 20.36 16 18.93 20 14.86 20 12H4Z"; +var mdiWallet = "M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z"; +var mdiWalletGiftcard = "M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z"; +var mdiWalletMembership = "M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z"; +var mdiWalletOutline = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V16.72C21.59,16.37 22,15.74 22,15V9C22,8.26 21.59,7.63 21,7.28V5A2,2 0 0,0 19,3H5M5,5H19V7H13A2,2 0 0,0 11,9V15A2,2 0 0,0 13,17H19V19H5V5M13,9H20V15H13V9M16,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,13.5A1.5,1.5 0 0,0 17.5,12A1.5,1.5 0 0,0 16,10.5Z"; +var mdiWalletPlus = "M3 0V3H0V5H3V8H5V5H8V3H5V0H3M9 3V6H6V9H3V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V18H12C10.9 18 10 17.11 10 16V8C10 6.9 10.89 6 12 6H21V5C21 3.9 20.11 3 19 3H9M12 8V16H22V8H12M16 10.5C16.83 10.5 17.5 11.17 17.5 12C17.5 12.83 16.83 13.5 16 13.5C15.17 13.5 14.5 12.83 14.5 12C14.5 11.17 15.17 10.5 16 10.5Z"; +var mdiWalletPlusOutline = "M3 0V3H0V5H3V8H5V5H8V3H5V0H3M10 3V5H19V7H13C11.9 7 11 7.9 11 9V15C11 16.1 11.9 17 13 17H19V19H5V10H3V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V16.72C21.59 16.37 22 15.74 22 15V9C22 8.26 21.59 7.63 21 7.28V5C21 3.9 20.1 3 19 3H10M13 9H20V15H13V9M16 10.5A1.5 1.5 0 0 0 14.5 12A1.5 1.5 0 0 0 16 13.5A1.5 1.5 0 0 0 17.5 12A1.5 1.5 0 0 0 16 10.5Z"; +var mdiWalletTravel = "M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z"; +var mdiWallpaper = "M4,4H11V2H4A2,2 0 0,0 2,4V11H4V4M10,13L6,18H18L15,14L12.97,16.71L10,13M17,8.5A1.5,1.5 0 0,0 15.5,7A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5M20,2H13V4H20V11H22V4A2,2 0 0,0 20,2M20,20H13V22H20A2,2 0 0,0 22,20V13H20V20M4,13H2V20A2,2 0 0,0 4,22H11V20H4V13Z"; +var mdiWan = "M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z"; +var mdiWardrobe = "M4 4V19C4 20.1 4.9 21 6 21V22H8V21H11.5V2H6C4.9 2 4 2.9 4 4M8 10H10V13H8V10M18 2H12.5V21H16V22H18V21C19.1 21 20 20.1 20 19V4C20 2.9 19.1 2 18 2M16 13H14V10H16V13Z"; +var mdiWardrobeOutline = "M6 2C4.89 2 4 2.9 4 4V19C4 20.11 4.89 21 6 21V22H8V21H16V22H18V21C19.11 21 20 20.11 20 19V4C20 2.9 19.11 2 18 2H6M6 4H11V19H6V4M13 4H18V19H13V4M8 10V13H10V10H8M14 10V13H16V10H14Z"; +var mdiWarehouse = "M6 19H8V21H6V19M12 3L2 8V21H4V13H20V21H22V8L12 3M8 11H4V9H8V11M14 11H10V9H14V11M20 11H16V9H20V11M6 15H8V17H6V15M10 15H12V17H10V15M10 19H12V21H10V19M14 19H16V21H14V19Z"; +var mdiWashingMachine = "M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z"; +var mdiWashingMachineAlert = "M12.83 11.17C14.39 12.73 14.39 15.27 12.83 16.83S8.73 18.39 7.17 16.83L12.83 11.17M4 2H16C17.11 2 18 2.9 18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M5 4C4.45 4 4 4.45 4 5S4.45 6 5 6 6 5.55 6 5 5.55 4 5 4M8 4C7.45 4 7 4.45 7 5S7.45 6 8 6 9 5.55 9 5 8.55 4 8 4M10 8C6.69 8 4 10.69 4 14S6.69 20 10 20 16 17.31 16 14 13.31 8 10 8M20 15H22V17H20V15M20 7H22V13H20V7Z"; +var mdiWashingMachineOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M12 20C8.69 20 6 17.31 6 14C6 12.32 6.7 10.8 7.82 9.71L12.06 13.95L9.17 16.83C10.73 18.39 13.27 18.39 14.83 16.83C14.85 16.81 14.86 16.79 14.88 16.77L16.29 18.18C15.2 19.3 13.69 20 12 20M11.25 8.05C11.5 8 11.75 8 12 8C15.31 8 18 10.69 18 14C18 14.25 18 14.5 17.95 14.75L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.25 8.05M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z"; +var mdiWatch = "M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z"; +var mdiWatchExport = "M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z"; +var mdiWatchExportVariant = "M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M8,0H16L16.83,5H17C17.28,5 17.54,5.06 17.78,5.16L15.94,7H7V17H15.94L17.78,18.84C17.54,18.94 17.28,19 17,19H16.83L16,24H8L7.17,19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H7.17L8,0Z"; +var mdiWatchImport = "M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z"; +var mdiWatchImportVariant = "M1,11H6L3.5,8.5L4.92,7.08L9.84,12L4.92,16.92L3.5,15.5L6,13H1V11M8,0H16L16.83,5H17A2,2 0 0,1 19,7V17C19,18.11 18.1,19 17,19H16.83L16,24H8L7.17,19H7C6.46,19 6,18.79 5.62,18.44L7.06,17H17V7H7.06L5.62,5.56C6,5.21 6.46,5 7,5H7.17L8,0Z"; +var mdiWatchVariant = "M8,0L7.17,5H7A2,2 0 0,0 5,7V17C5,18.11 5.9,19 7,19H7.17L8,24H16L16.83,19H17A2,2 0 0,0 19,17V7C19,5.89 18.1,5 17,5H16.83L16,0H8M7,7H17V17H7V7Z"; +var mdiWatchVibrate = "M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.5,4.5 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z"; +var mdiWatchVibrateOff = "M0,9H2V15H0V9M12,7.5C14.47,7.5 16.47,9.53 16.46,12C16.45,12.38 16.4,12.76 16.3,13.13L17.5,14.31C17.81,13.58 18,12.8 18,12C18,10.17 17.16,8.44 15.72,7.31L15,3H9L8.59,5.39L10.86,7.66C11.23,7.55 11.61,7.5 12,7.5M21,17V7H19V15.8L20.2,17H21M16.5,15.86L22.11,21.46L20.84,22.73L15.55,17.44L15,21H9L8.27,16.72C5.85,14.82 5.27,11.4 6.91,8.8L1.11,3L2.39,1.73L8.09,7.44L9.17,8.5L15.44,14.79L16.5,15.86M14.05,15.94L8.05,9.94C7.7,10.57 7.5,11.28 7.5,12C7.5,14.47 9.53,16.47 12,16.46C12.72,16.46 13.42,16.28 14.05,15.94M22,9V15H24V9H22M3,17H5V7H3V17Z"; +var mdiWater = "M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z"; +var mdiWaterAlert = "M10 3.25C10 3.25 16 10 16 14C16 17.31 13.31 20 10 20S4 17.31 4 14C4 10 10 3.25 10 3.25M20 7V13H18V7H20M18 17H20V15H18V17Z"; +var mdiWaterAlertOutline = "M10 3.25C10 3.25 4 10 4 14C4 17.31 6.69 20 10 20S16 17.31 16 14C16 10 10 3.25 10 3.25M10 18C7.79 18 6 16.21 6 14C6 12.23 8 8.96 10 6.39C12 8.95 14 12.23 14 14C14 16.21 12.21 18 10 18M20 7V13H18V7H20M18 17H20V15H18V17Z"; +var mdiWaterBoiler = "M8 2C6.89 2 6 2.89 6 4V16C6 17.11 6.89 18 8 18H9V20H6V22H9C10.11 22 11 21.11 11 20V18H13V20C13 21.11 13.89 22 15 22H18V20H15V18H16C17.11 18 18 17.11 18 16V4C18 2.89 17.11 2 16 2H8M12 4.97A2 2 0 0 1 14 6.97A2 2 0 0 1 12 8.97A2 2 0 0 1 10 6.97A2 2 0 0 1 12 4.97M10 14.5H14V16H10V14.5Z"; +var mdiWaterBoilerAlert = "M6 2C4.89 2 4 2.89 4 4V16C4 17.11 4.89 18 6 18H7V20H4V22H7C8.11 22 9 21.11 9 20V18H11V20C11 21.11 11.89 22 13 22H16V20H13V18H14C15.11 18 16 17.11 16 16V4C16 2.89 15.11 2 14 2H6M10 4.97C11.11 4.97 12 5.87 12 6.97S11.11 8.97 10 8.97C8.9 8.97 8 8.07 8 6.97C8 5.87 8.9 4.97 10 4.97M8 14.5H12V16H8V14.5M18 15H20V17H18V15M18 7H20V13H18V7Z"; +var mdiWaterBoilerOff = "M10 6.82L6.25 3.05C6.59 2.42 7.24 2 8 2H16C17.11 2 18 2.89 18 4V14.8L12.16 8.96C13.19 8.87 14 8 14 6.97C14 5.87 13.11 4.97 12 4.97C10.95 4.97 10.1 5.78 10 6.82M15 18V20H18V22H15C13.89 22 13 21.11 13 20V18H11V20C11 21.11 10.11 22 9 22H6V20H9V18H8C6.89 18 6 17.11 6 16V7.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73L16.1 18C16.06 18 16.03 18 16 18H15M14 16V15.89L12.61 14.5H10V16H14Z"; +var mdiWaterCheck = "M21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84L21.75 16.25M17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20H12.34C12.12 19.36 12 18.7 12 18C12 14.82 14.5 12.22 17.62 12Z"; +var mdiWaterCheckOutline = "M21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84L21.75 16.25M8 14C8 12.23 10 8.96 12 6.39C13.5 8.33 15 10.67 15.67 12.47C16.27 12.21 16.93 12.06 17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C9.79 18 8 16.21 8 14Z"; +var mdiWaterMinus = "M22 17V19H14V17H22M17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C12 14.82 14.5 12.22 17.62 12Z"; +var mdiWaterMinusOutline = "M22 17V19H14V17H22M8 14C8 12.23 10 8.96 12 6.39C13.5 8.33 15 10.67 15.67 12.47C16.27 12.21 16.93 12.06 17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C9.79 18 8 16.21 8 14Z"; +var mdiWaterOff = "M20.84 22.73L16.29 18.18C15.2 19.3 13.69 20 12 20C8.69 20 6 17.31 6 14C6 12.67 6.67 11.03 7.55 9.44L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M18 14C18 10 12 3.25 12 3.25S10.84 4.55 9.55 6.35L17.95 14.75C18 14.5 18 14.25 18 14Z"; +var mdiWaterOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L7.65 9.54C6.74 11.03 6 12.65 6 14.23C6 17.54 8.69 20.23 12 20.23C13.74 20.23 15.3 19.5 16.4 18.29L20.84 22.73L22.11 21.46M12 18.23C9.78 18.23 8 16.45 8 14.23C8 13.5 8.5 12.27 9.14 11.03L15 16.88C14.26 17.71 13.2 18.23 12 18.23M11.14 7.94L9.71 6.5C10.57 5.38 11.25 4.61 11.25 4.61L12 3.77L12.75 4.61C12.75 4.61 14.03 6.06 15.32 7.94S18 12.07 18 14.23C18 14.41 18 14.59 17.97 14.77L15.46 12.26C15 11.23 14.37 10.07 13.68 9.07C12.84 7.85 12.44 7.42 12 6.9C11.73 7.21 11.5 7.5 11.14 7.94Z"; +var mdiWaterOutline = "M12,3.77L11.25,4.61C11.25,4.61 9.97,6.06 8.68,7.94C7.39,9.82 6,12.07 6,14.23A6,6 0 0,0 12,20.23A6,6 0 0,0 18,14.23C18,12.07 16.61,9.82 15.32,7.94C14.03,6.06 12.75,4.61 12.75,4.61L12,3.77M12,6.9C12.44,7.42 12.84,7.85 13.68,9.07C14.89,10.83 16,13.07 16,14.23C16,16.45 14.22,18.23 12,18.23C9.78,18.23 8,16.45 8,14.23C8,13.07 9.11,10.83 10.32,9.07C11.16,7.85 11.56,7.42 12,6.9Z"; +var mdiWaterPercent = "M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z"; +var mdiWaterPercentAlert = "M20 7V13H18V7H20M18 17H20V15H18V17M10 3.25C10 3.25 4 10 4 14C4 17.32 6.69 20 10 20S16 17.31 16 14C16 10 10 3.25 10 3.25M7.75 10C8.44 10 9 10.56 9 11.25S8.44 12.5 7.75 12.5 6.5 11.94 6.5 11.25 7.06 10 7.75 10M12.25 17C11.56 17 11 16.44 11 15.75S11.56 14.5 12.25 14.5 13.5 15.06 13.5 15.75 12.94 17 12.25 17M7.53 17.03L6.47 15.97L12.47 9.97L13.53 11.03L7.53 17.03Z"; +var mdiWaterPlus = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C14.5 12.22 12 14.82 12 18M19 17V14H17V17H14V19H17V22H19V19H22V17H19Z"; +var mdiWaterPlusOutline = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C16.93 12.06 16.28 12.22 15.67 12.47C15 10.68 13.5 8.33 12 6.39C10 8.96 8 12.23 8 14C8 16.21 9.79 18 12 18M19 17V14H17V17H14V19H17V22H19V19H22V17H19Z"; +var mdiWaterPolo = "M20 16H22V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16M13 10.6C13.6 10.3 14.3 10 15 9.9V10.2C15.3 11.2 15.3 12.1 15.2 13.1C14.3 13.6 13.2 13.9 12.2 13.9C12.7 12.9 13 11.7 13 10.6M12.9 3.6C11.5 4 10.3 4.7 9.3 5.7C8.9 4.7 8.7 3.7 8.7 2.7C10.9 1.7 13.4 1.8 15.6 2.9C15.9 3 16.2 3.1 16.4 3.3C15.2 3.2 14 3.3 12.9 3.6M6.8 13.3C6.2 13.6 5.6 13.8 5 13.9C4.3 12.6 4 11.2 4 9.8C4.5 10.8 5.2 11.8 6 12.6C6.3 12.8 6.5 13.1 6.8 13.3M19 13.9C18.4 13.8 17.8 13.6 17.3 13.4C17.5 12.2 17.4 11 17.1 9.8C18.2 9.9 19.2 10.2 20.1 10.8C20 11.8 19.7 12.7 19.2 13.6L19 13.9M7.4 11.2C6.2 10.1 5.5 8.5 5.2 6.9L5.1 6C5.6 5.2 6.1 4.6 6.8 4C6.9 5.4 7.4 6.7 8.2 7.8C8.9 8.9 9.9 9.9 11 10.5C11 11.3 10.8 12.1 10.5 12.9C9.3 12.6 8.3 12 7.4 11.2M13.5 5.5C15 5.1 16.7 5.2 18.2 5.7L19 6.1C19.4 6.8 19.6 7.6 19.8 8.4C17.3 7.3 14.4 7.5 12 8.8C11.3 8.5 10.8 8 10.3 7.4L10.4 7.3C11.3 6.5 12.3 5.8 13.5 5.5M16 18.7C17.2 19.5 18.6 20 20 20H22V22H20C18.6 22 17.2 21.6 16 21C13.5 22.3 10.5 22.3 8 21C6.8 21.6 5.4 22 4 22H2V20H4C5.4 20 6.8 19.5 8 18.7C10.4 20.4 13.6 20.4 16 18.7Z"; +var mdiWaterPump = "M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z"; +var mdiWaterPumpOff = "M5.7 2.5A2 2 0 0 1 7 2H9A2 2 0 0 1 11 4V5H19A2 2 0 0 1 21 7V11A1 1 0 0 1 21 13H17A1 1 0 0 1 17 11V9H12.2M20.84 22.73L22.11 21.46L11 10.34L2.39 1.73L1.11 3L3.65 5.54A2 2 0 0 0 5 9V18H4A2 2 0 0 0 2 20V22H14V20A2 2 0 0 0 12 18H11V12.89Z"; +var mdiWaterRemove = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C14.5 12.22 12 14.82 12 18M21.54 15.88L20.13 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.54 15.88Z"; +var mdiWaterRemoveOutline = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C16.93 12.06 16.28 12.22 15.67 12.47C15 10.68 13.5 8.33 12 6.39C10 8.96 8 12.23 8 14C8 16.21 9.79 18 12 18M21.54 15.88L20.13 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.54 15.88Z"; +var mdiWaterWell = "M22 16H2V18H4V22H20V18H22V16M10.44 15C10.19 15 10 14.81 9.95 14.56L9.57 11.56C9.57 11.54 9.57 11.5 9.57 11.5C9.57 11.22 9.79 11 10.07 11H13.93C13.95 11 13.97 11 14 11C14.27 11.04 14.46 11.29 14.43 11.56L14.05 14.56C14 14.81 13.81 15 13.56 15H10.44M19 2L21.56 6.68C21.6 6.78 21.61 6.89 21.61 7C21.61 7.56 21.16 8 20.61 8H19V15H17V8H13V10H11V8H7V15H5V8H3.62C3.46 8 3.31 7.96 3.16 7.89C2.67 7.64 2.47 7.04 2.72 6.55L5 2H19Z"; +var mdiWaterWellOutline = "M3.62 8H5V15H7V8H11V10H13V8H17V15H19V8H20.61C21.16 8 21.61 7.56 21.61 7C21.61 6.89 21.6 6.78 21.56 6.68L19 2H5L2.72 6.55C2.47 7.04 2.67 7.64 3.16 7.89C3.31 7.96 3.46 8 3.62 8M6.24 4H17.76L18.76 6H5.24L6.24 4M2 16V18H4V22H20V18H22V16H2M18 20H6V18H18V20M13.93 11C14.21 11 14.43 11.22 14.43 11.5C14.43 11.5 14.43 11.54 14.43 11.56L14.05 14.56C14 14.81 13.81 15 13.56 15H10.44C10.19 15 10 14.81 9.95 14.56L9.57 11.56C9.54 11.29 9.73 11.04 10 11C10.03 11 10.05 11 10.07 11H13.93Z"; +var mdiWateringCan = "M18.5 7.47C17.76 8.2 17.57 9.25 17.92 10.15L15 13.07V11C15 10.45 14.55 10 14 10H12.97C13 9.83 13 9.67 13 9.5C13 6.46 10.54 4 7.5 4S2 6.46 2 9.5C2 11.21 2.78 12.73 4 13.74V20C4 20.55 4.45 21 5 21H14C14.55 21 15 20.55 15 20V15.89L19.33 11.56C20.23 11.91 21.28 11.73 22 11L18.5 7.47M4.05 10C4.03 9.83 4 9.67 4 9.5C4 7.57 5.57 6 7.5 6S11 7.57 11 9.5C11 9.67 10.97 9.83 10.95 10H4.05Z"; +var mdiWateringCanOutline = "M18.5 7.47C17.76 8.2 17.57 9.25 17.92 10.15L15 13.07V11C15 10.45 14.55 10 14 10H12.97C13 9.83 13 9.67 13 9.5C13 6.46 10.54 4 7.5 4S2 6.46 2 9.5C2 11.21 2.78 12.73 4 13.74V20C4 20.55 4.45 21 5 21H14C14.55 21 15 20.55 15 20V15.89L19.33 11.56C20.23 11.91 21.28 11.73 22 11L18.5 7.47M4.05 10C4.03 9.83 4 9.67 4 9.5C4 7.57 5.57 6 7.5 6S11 7.57 11 9.5C11 9.67 10.97 9.83 10.95 10M13 19H6V12H13V19Z"; +var mdiWatermark = "M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z"; +var mdiWave = "M20,12C18.61,12 17.22,11.53 16,10.67C13.56,12.38 10.44,12.38 8,10.67C6.78,11.53 5.39,12 4,12H2V14H4C5.37,14 6.74,13.65 8,13C10.5,14.3 13.5,14.3 16,13C17.26,13.65 18.62,14 20,14H22V12"; +var mdiWaveform = "M22 12L20 13L19 14L18 13L17 16L16 13L15 21L14 13L13 15L12 13L11 17L10 13L9 22L8 13L7 19L6 13L5 14L4 13L2 12L4 11L5 10L6 11L7 5L8 11L9 2L10 11L11 7L12 11L13 9L14 11L15 3L16 11L17 8L18 11L19 10L20 11L22 12Z"; +var mdiWaves = "M20,12H22V14H20C18.62,14 17.26,13.65 16,13C13.5,14.3 10.5,14.3 8,13C6.74,13.65 5.37,14 4,14H2V12H4C5.39,12 6.78,11.53 8,10.67C10.44,12.38 13.56,12.38 16,10.67C17.22,11.53 18.61,12 20,12M20,6H22V8H20C18.62,8 17.26,7.65 16,7C13.5,8.3 10.5,8.3 8,7C6.74,7.65 5.37,8 4,8H2V6H4C5.39,6 6.78,5.53 8,4.67C10.44,6.38 13.56,6.38 16,4.67C17.22,5.53 18.61,6 20,6M20,18H22V20H20C18.62,20 17.26,19.65 16,19C13.5,20.3 10.5,20.3 8,19C6.74,19.65 5.37,20 4,20H2V18H4C5.39,18 6.78,17.53 8,16.67C10.44,18.38 13.56,18.38 16,16.67C17.22,17.53 18.61,18 20,18Z"; +var mdiWaze = "M20.54,6.63C21.23,7.57 21.69,8.67 21.89,9.82C22.1,11.07 22,12.34 21.58,13.54C21.18,14.71 20.5,15.76 19.58,16.6C18.91,17.24 18.15,17.77 17.32,18.18C17.73,19.25 17.19,20.45 16.12,20.86C15.88,20.95 15.63,21 15.38,21C14.27,21 13.35,20.11 13.31,19C13.05,19 10.73,19 10.24,19C10.13,20.14 9.11,21 7.97,20.87C6.91,20.77 6.11,19.89 6.09,18.83C6.1,18.64 6.13,18.44 6.19,18.26C4.6,17.73 3.21,16.74 2.19,15.41C1.86,14.97 1.96,14.34 2.42,14C2.6,13.86 2.82,13.78 3.05,13.78C3.77,13.78 4.05,13.53 4.22,13.15C4.46,12.43 4.6,11.68 4.61,10.92C4.64,10.39 4.7,9.87 4.78,9.35C5.13,7.62 6.1,6.07 7.5,5C9.16,3.7 11.19,3 13.29,3C14.72,3 16.13,3.35 17.4,4C18.64,4.62 19.71,5.5 20.54,6.63M16.72,17.31C18.5,16.5 19.9,15.04 20.59,13.21C22.21,8.27 18,4.05 13.29,4.05C12.94,4.05 12.58,4.07 12.23,4.12C9.36,4.5 6.4,6.5 5.81,9.5C5.43,11.5 6,14.79 3.05,14.79C4,16 5.32,16.93 6.81,17.37C7.66,16.61 8.97,16.69 9.74,17.55C9.85,17.67 9.94,17.8 10,17.94C10.59,17.94 13.2,17.94 13.55,17.94C14.07,16.92 15.33,16.5 16.35,17.04C16.5,17.12 16.6,17.21 16.72,17.31M10.97,10.31C10.39,10.34 9.88,9.9 9.85,9.31C9.82,8.73 10.27,8.23 10.85,8.19C11.43,8.16 11.94,8.61 11.97,9.25C12,9.8 11.56,10.27 11,10.29L10.97,10.31M15.66,10.31C15.08,10.34 14.57,9.9 14.54,9.31C14.5,8.73 14.96,8.23 15.54,8.19C16.12,8.16 16.63,8.61 16.66,9.25C16.68,9.8 16.25,10.27 15.66,10.29V10.31M9.71,12.07C9.65,11.79 9.84,11.5 10.12,11.45C10.4,11.4 10.68,11.58 10.74,11.86V11.86C11.09,12.97 12.16,13.69 13.32,13.6C14.46,13.66 15.5,12.96 15.89,11.88C16.03,11.62 16.35,11.5 16.6,11.65C16.78,11.75 16.89,11.92 16.89,12.12C16.7,12.83 16.26,13.45 15.66,13.88C14.97,14.36 14.16,14.63 13.32,14.64H13.21C11.58,14.71 10.11,13.64 9.68,12.06L9.71,12.07Z"; +var mdiWeatherCloudy = "M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z"; +var mdiWeatherCloudyAlert = "M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13M13,12H11V8H13V12M13,16H11V14H13"; +var mdiWeatherCloudyArrowRight = "M6,7L6.69,7.06C7.32,4.72 9.46,3 12,3A5.5,5.5 0 0,1 17.5,8.5L17.42,9.45C17.88,9.16 18.42,9 19,9A3,3 0 0,1 22,12A3,3 0 0,1 19,15H6A4,4 0 0,1 2,11A4,4 0 0,1 6,7M6,9A2,2 0 0,0 4,11A2,2 0 0,0 6,13H19A1,1 0 0,0 20,12A1,1 0 0,0 19,11H15.5V8.5A3.5,3.5 0 0,0 12,5A3.5,3.5 0 0,0 8.5,8.5V9H6M22,19L19,22V20H2V18H19V16L22,19"; +var mdiWeatherFog = "M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z"; +var mdiWeatherHail = "M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z"; +var mdiWeatherHazy = "M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64M14,15A1,1 0 0,0 13,14H3A1,1 0 0,0 2,15A1,1 0 0,0 3,16H13A1,1 0 0,0 14,15M22,15A1,1 0 0,0 21,14H17A1,1 0 0,0 16,15A1,1 0 0,0 17,16H21A1,1 0 0,0 22,15M10,19A1,1 0 0,0 11,20H20A1,1 0 0,0 21,19A1,1 0 0,0 20,18H11A1,1 0 0,0 10,19M3,19A1,1 0 0,0 4,20H7A1,1 0 0,0 8,19A1,1 0 0,0 7,18H4A1,1 0 0,0 3,19M12,9A3,3 0 0,1 15,12H17A5,5 0 0,0 12,7A5,5 0 0,0 7,12H9A3,3 0 0,1 12,9Z"; +var mdiWeatherHurricane = "M15,6.79C16.86,7.86 18,9.85 18,12C18,22 6,22 6,22C7.25,21.06 8.38,19.95 9.34,18.71C9.38,18.66 9.41,18.61 9.44,18.55C9.69,18.06 9.5,17.46 9,17.21C7.14,16.14 6,14.15 6,12C6,2 18,2 18,2C16.75,2.94 15.62,4.05 14.66,5.29C14.62,5.34 14.59,5.39 14.56,5.45C14.31,5.94 14.5,6.54 15,6.79M12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14Z"; +var mdiWeatherLightning = "M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z"; +var mdiWeatherLightningRainy = "M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z"; +var mdiWeatherNight = "M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z"; +var mdiWeatherNightPartlyCloudy = "M22,10.28C21.74,10.3 21.5,10.31 21.26,10.31C19.32,10.31 17.39,9.57 15.91,8.09C14.25,6.44 13.5,4.19 13.72,2C13.77,1.53 13.22,1 12.71,1C12.57,1 12.44,1.04 12.32,1.12C12,1.36 11.66,1.64 11.36,1.94C9.05,4.24 8.55,7.66 9.84,10.46C8.31,11.11 7.13,12.43 6.69,14.06L6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22H19A3,3 0 0,0 22,19A3,3 0 0,0 19,16C18.42,16 17.88,16.16 17.42,16.45L17.5,15.5C17.5,15.28 17.5,15.05 17.46,14.83C19.14,14.67 20.77,13.94 22.06,12.64C22.38,12.34 22.64,12 22.88,11.68C23.27,11.13 22.65,10.28 22.04,10.28M19,18A1,1 0 0,1 20,19A1,1 0 0,1 19,20H6A2,2 0 0,1 4,18A2,2 0 0,1 6,16H8.5V15.5C8.5,13.94 9.53,12.64 10.94,12.18C11.1,12.13 11.26,12.09 11.43,12.06C11.61,12.03 11.8,12 12,12C12.23,12 12.45,12.03 12.66,12.07C12.73,12.08 12.8,12.1 12.87,12.13C13,12.16 13.15,12.2 13.28,12.25C13.36,12.28 13.44,12.32 13.5,12.36C13.63,12.41 13.74,12.47 13.84,12.54C13.92,12.59 14,12.64 14.07,12.7C14.17,12.77 14.25,12.84 14.34,12.92C14.41,13 14.5,13.05 14.55,13.12C14.63,13.2 14.69,13.29 14.76,13.37C14.82,13.45 14.89,13.53 14.94,13.62C15,13.71 15.04,13.8 15.09,13.9C15.14,14 15.2,14.08 15.24,14.18C15.41,14.59 15.5,15.03 15.5,15.5V18M16.83,12.86C15.9,11.16 14.08,10 12,10H11.87C11.41,9.19 11.14,8.26 11.14,7.29C11.14,6.31 11.39,5.37 11.86,4.55C12.21,6.41 13.12,8.14 14.5,9.5C15.86,10.88 17.58,11.79 19.45,12.14C18.66,12.6 17.76,12.84 16.83,12.86Z"; +var mdiWeatherPartlyCloudy = "M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z"; +var mdiWeatherPartlyLightning = "M19,15C18.65,15 18.31,15.06 18,15.17V15C18,13.19 17.19,11.56 15.92,10.46C16.35,8.03 15.1,5.5 12.75,4.47C9.97,3.24 6.72,4.5 5.5,7.25C4.6,9.24 5,11.45 6.27,13H6A4,4 0 0,0 2,17A4,4 0 0,0 6,21H7C7,21 8,21 8,20C8,19 7,19 7,19H6A2,2 0 0,1 4,17A2,2 0 0,1 6,15H8A4,4 0 0,1 12,11A4,4 0 0,1 16,15V17H19A1,1 0 0,1 20,18A1,1 0 0,1 19,19H17C17,19 16,19 16,20C16,21 17,21 17,21H19A3,3 0 0,0 22,18A3,3 0 0,0 19,15M12,9C10.16,9 8.5,9.83 7.41,11.13C6.93,10.22 6.85,9.09 7.31,8.07C8.09,6.31 10.16,5.5 11.93,6.3C13.18,6.86 13.94,8.06 14,9.34C13.38,9.12 12.7,9 12,9M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M11.8,15H14.25L12.61,18.27H14.25L11.18,24L11.8,19.91H9.75"; +var mdiWeatherPartlyRainy = "M12.75,4.47C15.1,5.5 16.35,8.03 15.92,10.46C17.19,11.56 18,13.19 18,15V15.17C18.31,15.06 18.65,15 19,15A3,3 0 0,1 22,18A3,3 0 0,1 19,21H17C17,21 16,21 16,20C16,19 17,19 17,19H19A1,1 0 0,0 20,18A1,1 0 0,0 19,17H16V15A4,4 0 0,0 12,11A4,4 0 0,0 8,15H6A2,2 0 0,0 4,17A2,2 0 0,0 6,19H7C7,19 8,19 8,20C8,21 7,21 7,21H6A4,4 0 0,1 2,17A4,4 0 0,1 6,13H6.27C5,11.45 4.6,9.24 5.5,7.25C6.72,4.5 9.97,3.24 12.75,4.47M11.93,6.3C10.16,5.5 8.09,6.31 7.31,8.07C6.85,9.09 6.93,10.22 7.41,11.13C8.5,9.83 10.16,9 12,9C12.7,9 13.38,9.12 14,9.34C13.94,8.06 13.18,6.86 11.93,6.3M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M12,18.91C12.59,19.82 13,20.63 13,21A1,1 0 0,1 12,22A1,1 0 0,1 11,21C11,20.63 11.41,19.82 12,18.91M12,15.62C12,15.62 9,19 9,21A3,3 0 0,0 12,24A3,3 0 0,0 15,21C15,19 12,15.62 12,15.62Z"; +var mdiWeatherPartlySnowy = "M6,19.03A2,2 0 0,1 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03A4,4 0 0,1 16,15.03V17.03H19A1,1 0 0,1 20,18.03C20,18.57 19.55,19.03 19,19.03H17C17,19.03 16,19.03 16,20.03C16,21.03 17,21.03 17,21.03H19A3,3 0 0,0 22,18.03C22,16.37 20.66,15.03 19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03A4,4 0 0,0 6,21.03C6,21.03 7,21.03 7,20.03C7,19.03 6,19.03 6,19.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M8.03,21.45C8.13,21.84 8.53,22.06 8.91,21.96L10.5,21.54L10.06,23.11C9.96,23.5 10.19,23.9 10.57,24C10.95,24.1 11.35,23.87 11.45,23.5L11.87,21.91L13.03,23.07C13.3,23.35 13.77,23.35 14.05,23.07C14.33,22.79 14.33,22.32 14.05,22.05L12.89,20.88L14.47,20.47C14.85,20.37 15.08,19.97 15,19.59C14.88,19.21 14.5,19 14.09,19.08L12.5,19.5L12.94,17.93C13.04,17.54 12.82,17.15 12.43,17.05C12.05,16.95 11.66,17.17 11.55,17.56L11.14,19.14L10,17.97C9.7,17.69 9.23,17.69 8.95,17.97C8.68,18.27 8.68,18.72 8.95,19L10.11,20.16L8.54,20.57C8.15,20.68 7.93,21.07 8.03,21.45Z"; +var mdiWeatherPartlySnowyRainy = "M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M16.68,22.21C16.68,23.2 15.91,24 14.95,24C14,24 13.23,23.2 13.23,22.21C13.23,21.03 14.95,19.03 14.95,19.03C14.95,19.03 16.68,21.03 16.68,22.21M6.03,21.45C5.93,21.07 6.15,20.68 6.54,20.58L8.13,20.15L6.96,19C6.68,18.72 6.68,18.27 6.96,18C7.23,17.7 7.7,17.7 8,18L9.14,19.14L9.55,17.56C9.65,17.17 10.05,16.94 10.43,17.05C10.82,17.15 11.05,17.55 10.93,17.93L10.5,19.5L12.1,19.1C12.5,19 12.88,19.21 13,19.6C13.08,19.97 12.86,20.37 12.47,20.47L10.89,20.89L12.05,22.05C12.33,22.32 12.33,22.79 12.05,23.07C11.77,23.35 11.31,23.35 11.03,23.07L9.87,21.9L9.45,23.5C9.35,23.88 8.95,24.1 8.57,24C8.18,23.9 7.97,23.5 8.06,23.12L8.5,21.55L6.91,21.96C6.5,22.06 6.13,21.84 6.03,21.45M19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03C2,18.17 2.5,19.2 3.27,19.93V19.93C3.27,19.93 3.97,20.64 4.68,19.93C5.39,19.22 4.68,18.5 4.68,18.5C4.27,18.15 4,17.62 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03A4,4 0 0,1 16,15.03V17.03H19A1,1 0 0,1 20,18.03C20,18.57 19.55,19.03 19,19.03H18C18,19.03 17,19.03 17,20.03C17,21.03 18,21.03 18,21.03H19A3,3 0 0,0 22,18.03C22,16.37 20.66,15.03 19,15.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03Z"; +var mdiWeatherPouring = "M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z"; +var mdiWeatherRainy = "M6,14.03A1,1 0 0,1 7,15.03C7,15.58 6.55,16.03 6,16.03C3.24,16.03 1,13.79 1,11.03C1,8.27 3.24,6.03 6,6.03C7,3.68 9.3,2.03 12,2.03C15.43,2.03 18.24,4.69 18.5,8.06L19,8.03A4,4 0 0,1 23,12.03C23,14.23 21.21,16.03 19,16.03H18C17.45,16.03 17,15.58 17,15.03C17,14.47 17.45,14.03 18,14.03H19A2,2 0 0,0 21,12.03A2,2 0 0,0 19,10.03H17V9.03C17,6.27 14.76,4.03 12,4.03C9.5,4.03 7.45,5.84 7.06,8.21C6.73,8.09 6.37,8.03 6,8.03A3,3 0 0,0 3,11.03A3,3 0 0,0 6,14.03M12,14.15C12.18,14.39 12.37,14.66 12.56,14.94C13,15.56 14,17.03 14,18C14,19.11 13.1,20 12,20A2,2 0 0,1 10,18C10,17.03 11,15.56 11.44,14.94C11.63,14.66 11.82,14.4 12,14.15M12,11.03L11.5,11.59C11.5,11.59 10.65,12.55 9.79,13.81C8.93,15.06 8,16.56 8,18A4,4 0 0,0 12,22A4,4 0 0,0 16,18C16,16.56 15.07,15.06 14.21,13.81C13.35,12.55 12.5,11.59 12.5,11.59"; +var mdiWeatherSnowy = "M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z"; +var mdiWeatherSnowyHeavy = "M4,16.36C3.86,15.82 4.18,15.25 4.73,15.11L7,14.5L5.33,12.86C4.93,12.46 4.93,11.81 5.33,11.4C5.73,11 6.4,11 6.79,11.4L8.45,13.05L9.04,10.8C9.18,10.24 9.75,9.92 10.29,10.07C10.85,10.21 11.17,10.78 11,11.33L10.42,13.58L12.67,13C13.22,12.83 13.79,13.15 13.93,13.71C14.08,14.25 13.76,14.82 13.2,14.96L10.95,15.55L12.6,17.21C13,17.6 13,18.27 12.6,18.67C12.2,19.07 11.54,19.07 11.15,18.67L9.5,17L8.89,19.27C8.75,19.83 8.18,20.14 7.64,20C7.08,19.86 6.77,19.29 6.91,18.74L7.5,16.5L5.26,17.09C4.71,17.23 4.14,16.92 4,16.36M1,10A5,5 0 0,1 6,5C7,2.65 9.3,1 12,1C15.43,1 18.24,3.66 18.5,7.03L19,7A4,4 0 0,1 23,11A4,4 0 0,1 19,15A1,1 0 0,1 18,14A1,1 0 0,1 19,13A2,2 0 0,0 21,11A2,2 0 0,0 19,9H17V8A5,5 0 0,0 12,3C9.5,3 7.45,4.82 7.06,7.19C6.73,7.07 6.37,7 6,7A3,3 0 0,0 3,10C3,10.85 3.35,11.61 3.91,12.16C4.27,12.55 4.26,13.16 3.88,13.54C3.5,13.93 2.85,13.93 2.47,13.54C1.56,12.63 1,11.38 1,10M14.03,20.43C14.13,20.82 14.5,21.04 14.91,20.94L16.5,20.5L16.06,22.09C15.96,22.5 16.18,22.87 16.57,22.97C16.95,23.08 17.35,22.85 17.45,22.46L17.86,20.89L19.03,22.05C19.3,22.33 19.77,22.33 20.05,22.05C20.33,21.77 20.33,21.3 20.05,21.03L18.89,19.86L20.46,19.45C20.85,19.35 21.08,18.95 20.97,18.57C20.87,18.18 20.5,17.96 20.09,18.06L18.5,18.5L18.94,16.91C19.04,16.5 18.82,16.13 18.43,16.03C18.05,15.92 17.65,16.15 17.55,16.54L17.14,18.11L15.97,16.95C15.7,16.67 15.23,16.67 14.95,16.95C14.67,17.24 14.67,17.7 14.95,17.97L16.11,19.14L14.54,19.55C14.15,19.65 13.92,20.05 14.03,20.43Z"; +var mdiWeatherSnowyRainy = "M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z"; +var mdiWeatherSunny = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z"; +var mdiWeatherSunnyAlert = "M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56M19,13V7H21V13H19M19,17V15H21V17"; +var mdiWeatherSunnyOff = "M22.11 21.46L2.39 1.73L1.11 3L4.97 6.86L3.34 7L5.11 10.79C5.25 10 5.5 9.24 5.94 8.5C6 8.36 6.13 8.24 6.22 8.11L7.66 9.55C7.25 10.27 7 11.11 7 12C7 14.76 9.24 17 12 17C12.9 17 13.73 16.75 14.45 16.34L20.84 22.73L22.11 21.46M12 15C10.34 15 9 13.66 9 12C9 11.67 9.07 11.36 9.17 11.06L12.94 14.83C12.64 14.93 12.33 15 12 15M18.05 8.5C17.63 7.78 17.1 7.15 16.5 6.64L20.65 7L18.88 10.79C18.74 10 18.47 9.23 18.05 8.5M12 7C14.76 7 17 9.24 17 12C17 12.54 16.89 13.05 16.74 13.54L15 11.78C14.87 10.3 13.7 9.13 12.22 9L10.47 7.27C10.95 7.11 11.46 7 12 7M12 5C11.16 5 10.35 5.15 9.61 5.42L12 2L14.39 5.42C13.65 5.15 12.84 5 12 5M18.87 13.21L20.64 17L20.24 17.04L18.25 15.05C18.54 14.45 18.76 13.84 18.87 13.21M12 19C12.82 19 13.63 18.83 14.37 18.56L12 22L9.59 18.56C10.33 18.83 11.14 19 12 19M5.95 15.5C6.37 16.24 6.91 16.86 7.5 17.37L3.36 17L5.12 13.23C5.26 14 5.53 14.78 5.95 15.5Z"; +var mdiWeatherSunset = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z"; +var mdiWeatherSunsetDown = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z"; +var mdiWeatherSunsetUp = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z"; +var mdiWeatherTornado = "M21,5H3A1,1 0 0,1 2,4A1,1 0 0,1 3,3H21A1,1 0 0,1 22,4A1,1 0 0,1 21,5M20,8A1,1 0 0,0 19,7H5A1,1 0 0,0 4,8A1,1 0 0,0 5,9H19A1,1 0 0,0 20,8M21,12A1,1 0 0,0 20,11H10A1,1 0 0,0 9,12A1,1 0 0,0 10,13H20A1,1 0 0,0 21,12M16,16A1,1 0 0,0 15,15H9A1,1 0 0,0 8,16A1,1 0 0,0 9,17H15A1,1 0 0,0 16,16M13,20A1,1 0 0,0 12,19H10A1,1 0 0,0 9,20A1,1 0 0,0 10,21H12A1,1 0 0,0 13,20Z"; +var mdiWeatherWindy = "M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z"; +var mdiWeatherWindyVariant = "M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z"; +var mdiWeb = "M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; +var mdiWebBox = "M8.95 13.4H6.58A5.5 5.5 0 0 1 6.58 10.6H8.95A11.56 11.56 0 0 0 8.85 12A11.56 11.56 0 0 0 8.95 13.4M7.16 9.2H9.2A12.06 12.06 0 0 1 10.18 6.71A5.55 5.55 0 0 0 7.16 9.2M16.84 9.2A5.59 5.59 0 0 0 13.81 6.71A10.95 10.95 0 0 1 14.78 9.2M12 17.57A9.5 9.5 0 0 0 13.34 14.8H10.66A9.5 9.5 0 0 0 12 17.57M12 6.42A9.53 9.53 0 0 0 10.66 9.2H13.34A9.53 9.53 0 0 0 12 6.42M7.16 14.8A5.61 5.61 0 0 0 10.18 17.29A12.06 12.06 0 0 1 9.2 14.8M21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19A2 2 0 0 1 21 5M19 12A7 7 0 1 0 12 19A7 7 0 0 0 19 12M15.15 12A11.56 11.56 0 0 1 15.05 13.4H17.42A5.5 5.5 0 0 0 17.42 10.6H15.05A11.56 11.56 0 0 1 15.15 12M13.81 17.29A5.62 5.62 0 0 0 16.84 14.8H14.78A10.95 10.95 0 0 1 13.81 17.29M10.36 10.6A8.81 8.81 0 0 0 10.36 13.4H13.64A10.3 10.3 0 0 0 13.75 12A10.21 10.21 0 0 0 13.64 10.6Z"; +var mdiWebClock = "M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15M22 12.39C22 12.26 22 12.13 22 12C22 6.5 17.5 2 12 2C6.47 2 2 6.5 2 12C2 17.5 6.5 22 12 22C12.13 22 12.24 22 12.37 21.97C13.43 22.62 14.67 23 16 23C19.86 23 23 19.86 23 16C23 14.68 22.62 13.44 22 12.39M19.76 10.11C19.7 10.07 19.65 10.04 19.59 10H19.74C19.75 10.03 19.75 10.07 19.76 10.11M18.92 8H15.97C15.65 6.75 15.19 5.55 14.59 4.44C16.43 5.07 17.96 6.34 18.92 8M12 4.03C12.83 5.23 13.5 6.57 13.91 8H10.09C10.5 6.57 11.17 5.23 12 4.03M9.66 10H12.41C11.16 10.75 10.15 11.88 9.57 13.24C9.53 12.83 9.5 12.42 9.5 12C9.5 11.32 9.56 10.65 9.66 10M9.4 4.44C8.8 5.55 8.35 6.75 8 8H5.08C6.03 6.34 7.57 5.06 9.4 4.44M4.26 14C4.1 13.36 4 12.69 4 12S4.1 10.64 4.26 10H7.64C7.56 10.66 7.5 11.32 7.5 12S7.56 13.34 7.64 14H4.26M5.08 16H8C8.35 17.25 8.8 18.45 9.4 19.56C7.57 18.93 6.03 17.65 5.08 16M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21Z"; +var mdiWebcam = "M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z"; +var mdiWebcamOff = "M12 6C13.66 6 15 7.34 15 9C15 9.78 14.7 10.5 14.21 11L10 6.79C10.5 6.3 11.22 6 12 6M12 4C14.76 4 17 6.24 17 9C17 10.33 16.47 11.53 15.62 12.42L17.04 13.84C18.25 12.59 19 10.88 19 9C19 5.13 15.87 2 12 2C10.12 2 8.41 2.75 7.16 3.96L8.58 5.38C9.47 4.53 10.67 4 12 4M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20C4 19.62 4.1 19.27 4.29 18.97L6.11 15.81C7.69 17.17 9.75 18 12 18C13.21 18 14.37 17.75 15.43 17.32L13.85 15.74C13.26 15.91 12.64 16 12 16C8.13 16 5 12.87 5 9C5 8.36 5.09 7.74 5.26 7.15L1.11 3L2.39 1.73L22.11 21.46M12.1 14L7 8.9C7 8.93 7 8.97 7 9C7 11.76 9.24 14 12 14C12.03 14 12.07 14 12.1 14Z"; +var mdiWebhook = "M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z"; +var mdiWebpack = "M20.45 17.39L12.36 21.97V18.4L17.4 15.63L20.45 17.39M21 16.89V7.31L18.04 9V15.18L21 16.89M3.55 17.39L11.64 21.96V18.4L6.6 15.63L3.55 17.39M3 16.89V7.31L5.96 9V15.18L3 16.89M3.35 6.69L11.64 2V5.45L6.33 8.37L6.28 8.39L3.35 6.69M20.65 6.69L12.36 2V5.45L17.67 8.38L17.71 8.4L20.65 6.69M11.64 17.59L6.67 14.85V9.44L11.64 12.31V17.59M12.36 17.59L17.33 14.86V9.44L12.36 12.31V17.59M7 8.81L12 6.06L17 8.81L12 11.69L7 8.81Z"; +var mdiWebrtc = "M12 2C14.44 2 16.5 3.75 16.91 6.07L17.75 6C20.5 6 22.75 8.24 22.75 11C22.75 12.89 21.7 14.53 20.16 15.38C20.54 16.09 20.75 16.89 20.75 17.75C20.75 20.5 18.5 22.75 15.75 22.75C14.26 22.75 12.92 22.1 12 21.06C11.08 22.1 9.74 22.75 8.25 22.75C5.5 22.75 3.25 20.5 3.25 17.75C3.25 16.89 3.47 16.09 3.84 15.38C2.3 14.53 1.25 12.89 1.25 11C1.25 8.24 3.5 6 6.25 6L7.09 6.07C7.5 3.75 9.56 2 12 2M6.75 20.25L13.66 17H17C17.55 17 18 16.55 18 16V9C18 8.45 17.55 8 17 8H7C6.45 8 6 8.45 6 9V16C6 16.55 6.45 17 7 17H7.77L6.75 20.25Z"; +var mdiWechat = "M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z"; +var mdiWeight = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z"; +var mdiWeightGram = "M19.95,10.56C19.75,9.67 18.95,9 18,9H15.46C15.81,8.41 16,7.73 16,7A4,4 0 0,0 12,3A4,4 0 0,0 8,7C8,7.73 8.19,8.41 8.54,9H6C5.05,9 4.25,9.67 4.05,10.56C2.04,18.57 2,18.78 2,19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19C22,18.78 21.96,18.57 19.95,10.56M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M15,13H11V17H13V14H15V19H11C9.89,19 9,18.11 9,17V13C9,11.89 9.89,11 11,11H15V13Z"; +var mdiWeightKilogram = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M6,11V19H8V16.5L9,17.5V19H11V17L9,15L11,13V11H9V12.5L8,13.5V11H6M15,11C13.89,11 13,11.89 13,13V17C13,18.11 13.89,19 15,19H18V14H16V17H15V13H18V11H15Z"; +var mdiWeightLifter = "M12 5C10.89 5 10 5.89 10 7S10.89 9 12 9 14 8.11 14 7 13.11 5 12 5M22 1V6H20V4H4V6H2V1H4V3H20V1H22M15 11.26V23H13V18H11V23H9V11.26C6.93 10.17 5.5 8 5.5 5.5L5.5 5H7.5L7.5 5.5C7.5 8 9.5 10 12 10S16.5 8 16.5 5.5L16.5 5H18.5L18.5 5.5C18.5 8 17.07 10.17 15 11.26Z"; +var mdiWeightPound = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M6,11V19H11V17H8V11H6M13,11V19H16C17.11,19 18,18.11 18,17V16.5C18,15.93 17.75,15.38 17.32,15C17.75,14.62 18,14.07 18,13.5V13C18,11.89 17.11,11 16,11H13M15,13H16V14H15V13M15,16H16V17H15V16Z"; +var mdiWhatsapp = "M12.04 2C6.58 2 2.13 6.45 2.13 11.91C2.13 13.66 2.59 15.36 3.45 16.86L2.05 22L7.3 20.62C8.75 21.41 10.38 21.83 12.04 21.83C17.5 21.83 21.95 17.38 21.95 11.92C21.95 9.27 20.92 6.78 19.05 4.91C17.18 3.03 14.69 2 12.04 2M12.05 3.67C14.25 3.67 16.31 4.53 17.87 6.09C19.42 7.65 20.28 9.72 20.28 11.92C20.28 16.46 16.58 20.15 12.04 20.15C10.56 20.15 9.11 19.76 7.85 19L7.55 18.83L4.43 19.65L5.26 16.61L5.06 16.29C4.24 15 3.8 13.47 3.8 11.91C3.81 7.37 7.5 3.67 12.05 3.67M8.53 7.33C8.37 7.33 8.1 7.39 7.87 7.64C7.65 7.89 7 8.5 7 9.71C7 10.93 7.89 12.1 8 12.27C8.14 12.44 9.76 14.94 12.25 16C12.84 16.27 13.3 16.42 13.66 16.53C14.25 16.72 14.79 16.69 15.22 16.63C15.7 16.56 16.68 16.03 16.89 15.45C17.1 14.87 17.1 14.38 17.04 14.27C16.97 14.17 16.81 14.11 16.56 14C16.31 13.86 15.09 13.26 14.87 13.18C14.64 13.1 14.5 13.06 14.31 13.3C14.15 13.55 13.67 14.11 13.53 14.27C13.38 14.44 13.24 14.46 13 14.34C12.74 14.21 11.94 13.95 11 13.11C10.26 12.45 9.77 11.64 9.62 11.39C9.5 11.15 9.61 11 9.73 10.89C9.84 10.78 10 10.6 10.1 10.45C10.23 10.31 10.27 10.2 10.35 10.04C10.43 9.87 10.39 9.73 10.33 9.61C10.27 9.5 9.77 8.26 9.56 7.77C9.36 7.29 9.16 7.35 9 7.34C8.86 7.34 8.7 7.33 8.53 7.33Z"; +var mdiWheelBarrow = "M18 15.5C18.83 15.5 19.5 16.17 19.5 17S18.83 18.5 18 18.5 16.5 17.83 16.5 17 17.17 15.5 18 15.5M18 14C16.34 14 15 15.34 15 17S16.34 20 18 20C19.66 20 21 18.66 21 17S19.66 14 18 14M7 8L5 5H2V7H5.13L8 11.3V20H10L12.57 15H14.55C15.25 13.81 16.5 13 18 13C18.88 13 19.69 13.29 20.35 13.78L22 8H7M9.39 19H9V12.8L9.87 14.11C10.23 14.64 10.82 14.96 11.45 15L9.39 19Z"; +var mdiWheelchairAccessibility = "M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z"; +var mdiWhistle = "M8.5,9A6.5,6.5 0 0,0 2,15.5A6.5,6.5 0 0,0 8.5,22A6.5,6.5 0 0,0 15,15.5V13.91L22,12V9H11V11H9V9H8.5M11,2V7H9V2H11M6.35,7.28C5.68,7.44 5.04,7.68 4.43,8L2.14,4.88L3.76,3.7L6.35,7.28M17.86,4.88L16.32,7H13.85L16.24,3.7L17.86,4.88Z"; +var mdiWhistleOutline = "M3.76 3.7L2.14 4.88L4.43 8A8.23 8.23 0 0 1 6.35 7.28M11 9V11H18V11.29L13 12.71V15.5A4.5 4.5 0 1 1 8.5 11H9V9H8.5A6.5 6.5 0 1 0 15 15.5V13.91L22 12V9M16.24 3.7L13.85 7H16.32L17.86 4.88M9 2V7H11V2Z"; +var mdiWhiteBalanceAuto = "M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z"; +var mdiWhiteBalanceIncandescent = "M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z"; +var mdiWhiteBalanceIridescent = "M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z"; +var mdiWhiteBalanceSunny = "M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z"; +var mdiWidgets = "M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z"; +var mdiWidgetsOutline = "M16.7 4.5L19.5 7.3L16.7 10.1L13.9 7.3L16.7 4.5M9 5V9H5V5H9M19 15V19H15V15H19M16.7 1.7L11 7.3L16.7 13H13V21H21V13H16.7L22.3 7.3L16.7 1.7M11 3H3V11H11V3M9 15V19H5V15H9M11 13H3V21H11V13Z"; +var mdiWifi = "M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z"; +var mdiWifiAlert = "M20.24 5H18V7.25C16.16 6.45 14.13 6 12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3C14.97 3 17.77 3.73 20.24 5M8.4 16.2L12 21L15.6 16.2C14.6 15.45 13.35 15 12 15S9.4 15.45 8.4 16.2M4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12S15.9 12.67 17.4 13.8L18 13V10.62C16.23 9.59 14.19 9 12 9C9.3 9 6.81 9.89 4.8 11.4M20 17H22V15H20V17M20 7V13H22V7H20Z"; +var mdiWifiArrowDown = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M20 16H18V20H16L19 23L22 20H20V16Z"; +var mdiWifiArrowLeft = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M18 16L15 19L18 22V20H22V18H18V16Z"; +var mdiWifiArrowLeftRight = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M18 18.5L15 21L18 23.5V22H22V20H18V18.5M23 17L20 14.5V16H16V18H20V19.5L23 17Z"; +var mdiWifiArrowRight = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M23 19L20 16V18H16V20H20V22L23 19Z"; +var mdiWifiArrowUp = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16 18H18V22H20V18H22L19 15L16 18Z"; +var mdiWifiArrowUpDown = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M17 15L14.5 18H16V22H18V18H19.5L17 15M22 20V16H20V20H18.5L21 23L23.5 20H22Z"; +var mdiWifiCancel = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M15.53 12.72C16.42 12.26 17.43 12 18.5 12C18.58 12 18.66 12 18.74 12L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.26 12 14.45 12.26 15.53 12.72M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z"; +var mdiWifiCheck = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84L17.75 19.43Z"; +var mdiWifiCog = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C17.66 12.05 16.63 12.33 15.73 12.81C14.6 12.29 13.33 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.22 20.71C12.08 20.16 12 19.59 12 19C12 17.57 12.43 16.24 13.17 15.13C12.79 15.05 12.4 15 12 15M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; +var mdiWifiLock = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M17.4 10.29C15.77 9.47 13.94 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.97 12 13.9 12.16 14.78 12.44C15.34 11.45 16.27 10.68 17.4 10.29M8.4 16.2L12 21L13 19.67V17.2C13 16.5 13.27 15.81 13.7 15.26C13.16 15.1 12.59 15 12 15C10.65 15 9.4 15.45 8.4 16.2M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiWifiLockOpen = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.31 9.81C14.97 9.29 13.5 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.83 12 13.63 12.12 14.39 12.33C14.7 11.3 15.38 10.41 16.31 9.81M8.4 16.2L12 21L13 19.67V17.2C13 16.5 13.27 15.81 13.7 15.26C13.16 15.1 12.59 15 12 15C10.65 15 9.4 15.45 8.4 16.2M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiWifiMarker = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M13 15.09C12.69 15.03 12.35 15 12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.8 18.6C13.33 17.58 13 16.5 13 15.5C13 15.36 13 15.23 13 15.09M12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.73 12 13.43 12.09 14.1 12.25C14.86 11.25 15.93 10.5 17.17 10.18C15.6 9.43 13.85 9 12 9M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z"; +var mdiWifiMinus = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M15 18V20H23V18H15Z"; +var mdiWifiOff = "M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z"; +var mdiWifiPlus = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; +var mdiWifiRefresh = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C18.66 12 18.58 12 18.5 12C17.43 12 16.42 12.26 15.53 12.72C14.45 12.26 13.26 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5Z"; +var mdiWifiRemove = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M21.12 15.46L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; +var mdiWifiSettings = "M12 20L8.4 15.2C9.4 14.45 10.65 14 12 14S14.6 14.45 15.6 15.2L12 20M4.8 10.4L6.6 12.8C8.1 11.67 9.97 11 12 11S15.9 11.67 17.4 12.8L19.2 10.4C17.19 8.89 14.7 8 12 8S6.81 8.89 4.8 10.4M12 2C7.95 2 4.21 3.34 1.2 5.6L3 8C5.5 6.12 8.62 5 12 5S18.5 6.12 21 8L22.8 5.6C19.79 3.34 16.05 2 12 2M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; +var mdiWifiStar = "M12,6C8.6,6 5.5,7.1 3,9L1.2,6.6C4.2,4.3 8,3 12,3C16,3 19.8,4.3 22.8,6.6L21,9C18.5,7.1 15.4,6 12,6M13,19C13,17.7 13.4,16.4 14.2,15.4C13.5,15.2 12.8,15 12,15C10.7,15 9.4,15.5 8.4,16.2L12,21L13,19.6C13,19.4 13,19.2 13,19M16.8,13.4C17.1,13.3 17.5,13.2 17.9,13.1L19.2,11.4C17.2,9.9 14.7,9 12,9C9.3,9 6.8,9.9 4.8,11.4L6.6,13.8C8.1,12.7 10,12 12,12C13.8,12 15.4,12.5 16.8,13.4M16.5,22.6L17.2,19.8L15,17.9L17.9,17.7L19,15L20.1,17.6L23,17.8L20.8,19.7L21.5,22.5L19,21.1L16.5,22.6Z"; +var mdiWifiStrength1 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L15.61,13.81C14.5,13.28 13.25,13 12,13C10.75,13 9.5,13.28 8.39,13.8L3.27,7.44C5.91,5.85 8.93,5 12,5Z"; +var mdiWifiStrength1Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L15.6 13.8C14.5 13.3 13.2 13 12 13S9.5 13.3 8.4 13.8L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; +var mdiWifiStrength1Lock = "M12 13C12.8 13 13.61 13.13 14.38 13.36C14.28 13.73 14.2 14.11 14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.75 10.03 18.62 10.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L8.38 13.8C9.5 13.28 10.74 13 12 13M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiWifiStrength1LockOpen = "M12 13C12.74 13 13.5 13.12 14.22 13.31C14.22 13.38 14.2 13.44 14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.16 9.11 19.42 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L8.38 13.8C9.5 13.28 10.74 13 12 13M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiWifiStrength2 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L17.5,11.43C16.26,10.74 14.37,10 12,10C9.62,10 7.74,10.75 6.5,11.43L3.27,7.44C5.91,5.85 8.93,5 12,5Z"; +var mdiWifiStrength2Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L17.5 11.4C16.3 10.7 14.4 10 12 10C9.6 10 7.7 10.8 6.5 11.4L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; +var mdiWifiStrength2Lock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.74 10.03 18.61 10.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L6.5 11.43C7.73 10.75 9.61 10 12 10C13.68 10 15.12 10.38 16.26 10.84C15.03 11.67 14.2 13 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiWifiStrength2LockOpen = "M15.44 10.55C14.68 11.35 14.2 12.38 14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.16 9.1 19.41 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L6.5 11.43C7.73 10.75 9.61 10 12 10C13.29 10 14.45 10.23 15.44 10.55M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiWifiStrength3 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L18.77,9.88C17.26,9 14.88,8 12,8C9,8 6.68,9 5.21,9.84L3.27,7.44C5.91,5.85 8.93,5 12,5Z"; +var mdiWifiStrength3Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L18.8 9.9C17.3 9 14.9 8 12 8C9 8 6.7 9 5.2 9.8L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; +var mdiWifiStrength3Lock = "M19 10C19.68 10 20.32 10.14 20.91 10.39L23.64 7C20.31 4.41 16.2 3 12 3C7.78 3 3.69 4.41 .365 7C4.39 12.06 7.88 16.37 12 21.5L13 20.24V17.2C13 16.24 13.5 15.34 14.2 14.74V14.5C14.2 12.06 16.4 10 19 10M12 8C9 8 6.67 9 5.2 9.84L3.26 7.44C5.9 5.85 8.91 5 12 5S18.08 5.86 20.7 7.45L18.76 9.88C17.25 9 14.87 8 12 8M21.8 16V14.5C21.8 13.1 20.4 12 19 12S16.2 13.1 16.2 14.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16M20.5 16H17.5V14.5C17.5 13.7 18.2 13.2 19 13.2S20.5 13.7 20.5 14.5V16Z"; +var mdiWifiStrength3LockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.17 9.11 19.42 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L5.2 9.84C6.67 9 9 8 12 8C14.18 8 16.08 8.58 17.53 9.25C15.63 9.85 14.2 11.54 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiWifiStrength4 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3Z"; +var mdiWifiStrength4Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V8H22.8C23 7.7 23.4 7.3 23.6 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; +var mdiWifiStrength4Lock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C16.4 10 14.2 12.06 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiWifiStrength4LockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.75 9.26 19.9 9 19 9C16.4 9 14.2 11.06 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiWifiStrengthAlertOutline = "M12 3C7.8 3 3.7 4.4 .4 7C4.3 11.8 8.2 16.7 12 21.5C14.3 18.6 16.7 15.7 19 12.8V9.6L12 18.3L3.3 7.4C5.9 5.8 8.9 5 12 5C15.1 5 18.1 5.9 20.7 7.4L20.3 8H22.9C23.2 7.7 23.4 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; +var mdiWifiStrengthLockOpenOutline = "M23.65 7H23.64C22.92 7.9 22.2 8.79 21.5 9.69C20.87 9.33 20.17 9.11 19.43 9.04L20.71 7.45C18.09 5.86 15.07 5 12 5C8.91 5 5.9 5.85 3.27 7.44L12 18.3L13 17C13 17.08 13 17.14 13 17.2V20.25L12 21.5C8.13 16.66 4.24 11.83 .355 7H.375C3.7 4.41 7.79 3 12 3C16.22 3 20.32 4.41 23.65 7M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; +var mdiWifiStrengthLockOutline = "M23.65 7H23.64L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.75 10.03 18.63 10.04L20.71 7.45C18.09 5.86 15.07 5 12 5C8.91 5 5.9 5.85 3.27 7.44L12 18.3L13 17C13 17.08 13 17.14 13 17.2V20.25L12 21.5C8.13 16.66 4.24 11.83 .355 7H.375C3.7 4.41 7.79 3 12 3C16.22 3 20.32 4.41 23.65 7M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; +var mdiWifiStrengthOff = "M3.27,1.44L2,2.72L4.05,4.77C2.75,5.37 1.5,6.11 0.38,7C4.41,12.06 12,21.5 12,21.5L15.91,16.63L19.23,19.95L20.5,18.68M12,3C10.6,3 9.21,3.17 7.86,3.5L18.18,13.81C20,11.5 22.05,9 23.65,7C20.32,4.41 16.22,3 12,3Z"; +var mdiWifiStrengthOffOutline = "M3.27,1.44L2,2.72L4.05,4.77C2.75,5.37 1.5,6.11 0.38,7C4.2,11.8 8.14,16.67 12,21.5L15.91,16.63L19.23,19.95L20.5,18.68C14.87,13.04 3.27,1.44 3.27,1.44M12,3C10.6,3 9.21,3.17 7.86,3.5L9.56,5.19C10.37,5.07 11.18,5 12,5C15.07,5 18.09,5.86 20.71,7.45L16.76,12.38L18.18,13.8C20.08,11.43 22,9 23.65,7C20.32,4.41 16.22,3 12,3M5.57,6.29L14.5,15.21L12,18.3L3.27,7.44C4,7 4.78,6.61 5.57,6.29Z"; +var mdiWifiStrengthOutline = "M12,3C7.79,3 3.7,4.41 0.38,7H0.36C4.24,11.83 8.13,16.66 12,21.5C15.89,16.66 19.77,11.83 23.64,7H23.65C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L12,18.3L3.27,7.44C5.9,5.85 8.92,5 12,5Z"; +var mdiWifiSync = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.26 19.32C13.1 18.74 13 18.13 13 17.5C13 16.69 13.16 15.91 13.43 15.19C12.97 15.08 12.5 15 12 15M15.23 12.61C16.19 11.77 17.38 11.22 18.7 11.05C16.78 9.76 14.5 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.14 12 14.23 12.22 15.23 12.61M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; +var mdiWikipedia = "M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z"; +var mdiWindTurbine = "M13.33,11.67L16.21,14.58C17.62,13.16 16.21,11.75 16.21,11.75L14.72,10.24C14.9,9.86 15,9.44 15,9C15,7.95 14.46,7.03 13.64,6.5L15,2.11C13.09,1.53 12.5,3.44 12.5,3.44L11.69,6.03C10.46,6.16 9.46,7 9.13,8.18L4.67,9.63C5.31,11.53 7.2,10.9 7.2,10.9L9.27,10.23C9.61,10.97 10.23,11.54 11,11.82V19C11,19 9,19 9,21C9,21.5 9,21.81 9,22H15V21C15,21 15,19 13,19V11.82C13.12,11.78 13.23,11.72 13.33,11.67M10.5,9A1.5,1.5 0 0,1 12,7.5A1.5,1.5 0 0,1 13.5,9A1.5,1.5 0 0,1 12,10.5A1.5,1.5 0 0,1 10.5,9Z"; +var mdiWindowClose = "M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z"; +var mdiWindowClosed = "M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z"; +var mdiWindowClosedVariant = "M21 20V2H3V20H1V23H23V20M19 4V11H13V4M5 4H11V11H5M5 20V13H11V20M13 20V13H19V20Z"; +var mdiWindowMaximize = "M4,4H20V20H4V4M6,8V18H18V8H6Z"; +var mdiWindowMinimize = "M20,14H4V10H20"; +var mdiWindowOpen = "M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z"; +var mdiWindowOpenVariant = "M21 20V2H3V20H1V23H23V20M19 4V11H17V4M5 4H7V11H5M5 20V13H7V20M9 20V4H15V20M17 20V13H19V20Z"; +var mdiWindowRestore = "M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z"; +var mdiWindowShutter = "M3 4H21V8H19V20H17V8H7V20H5V8H3V4M8 9H16V11H8V9M8 12H16V14H8V12M8 15H16V17H8V15M8 18H16V20H8V18Z"; +var mdiWindowShutterAlert = "M2 4H20V8H18V20H16V8H6V20H4V8H2V4M7 9H15V11H7V9M7 12H15V14H7V12M20 19V17H22V19H20M20 15V10H22V15H20Z"; +var mdiWindowShutterOpen = "M3 4H21V8H19V20H17V8H7V20H5V8H3V4M8 9H16V11H8V9Z"; +var mdiWindsock = "M7 5V13L22 11V7L7 5M10 6.91L13 7.31V10.69L10 11.09V6.91M16 7.71L19 8.11V9.89L16 10.29V7.71M5 10V11H6V12H5V21H3V4C3 3.45 3.45 3 4 3S5 3.45 5 4V6H6V7H5V10Z"; +var mdiWiper = "M12,4C5,4 2,9 2,9L9,16C9,16 9.5,15.1 10.4,14.5L10.7,16.5C10.3,16.8 10,17.4 10,18A2,2 0 0,0 12,20A2,2 0 0,0 14,18C14,17.1 13.5,16.4 12.7,16.1L12.3,14C14.1,14.2 15,16 15,16L22,9C22,9 19,4 12,4M15.1,13.1C14.3,12.5 13.3,12 12,12L11,6.1C11.3,6 11.7,6 12,6C15.7,6 18.1,7.7 19.3,8.9L15.1,13.1M8.9,13.1L4.7,8.9C5.5,8 7,7 9,6.4L10,12.4C9.6,12.6 9.2,12.8 8.9,13.1Z"; +var mdiWiperWash = "M13,6C13,5.7 13.1,4.6 13.8,3.8L12,2.4L10.2,3.9C10.9,4.6 11,5.7 11,6C4.7,6.4 2,11 2,11L9,18C9,18 9.7,16.7 11,16.2V18.3C10.4,18.6 10,19.3 10,20A2,2 0 0,0 12,22A2,2 0 0,0 14,20C14,19.3 13.6,18.6 13,18.3V16.2C14.3,16.7 15,18 15,18L22,11C22,11 19.3,6.5 13,6M11,14.1C10.2,14.3 9.5,14.6 8.9,15.1L4.7,10.9C5.8,9.8 7.8,8.3 11,8.1V14.1M15.1,15.1C14.5,14.7 13.8,14.3 13,14.1V8.1C16.2,8.4 18.2,9.8 19.3,10.9L15.1,15.1M18,1.3L17.3,3.2C16.6,2.9 15.5,2.9 14.7,3.2L14,1.3C15.2,0.9 16.8,0.9 18,1.3M21,6H19C19,6 19,4.7 18.2,3.9L19.7,2.6C21,4 21,5.9 21,6M4.2,2.6L5.7,3.9C5,4.7 5,6 5,6H3C3,5.9 3,4 4.2,2.6M10,1.3L9.3,3.2C8.6,2.9 7.5,2.9 6.7,3.2L6,1.3C7.2,0.9 8.8,0.9 10,1.3Z"; +var mdiWizardHat = "M21 22H3V20H21V22M19 19H5L11.1 2.6C11.3 2.2 11.6 2 12 2L18 5H13.9L19 19M10 7.5L11.04 7.97L11.5 9L11.97 7.97L13 7.5L11.97 7.03L11.5 6L11.04 7.03L10 7.5M13 15L10.94 14.07L10 12L9.07 14.07L7 15L9.07 15.93L10 18L10.94 15.93L13 15M13.97 11.97L15 11.5L13.97 11.03L13.5 10L13.04 11.03L12 11.5L13.04 11.97L13.5 13L13.97 11.97M15.97 15.97L17 15.5L15.97 15.03L15.5 14L15.04 15.03L14 15.5L15.04 15.97L15.5 17L15.97 15.97Z"; +var mdiWordpress = "M3.42,12C3.42,10.76 3.69,9.58 4.16,8.5L8.26,19.72C5.39,18.33 3.42,15.4 3.42,12M17.79,11.57C17.79,12.3 17.5,13.15 17.14,14.34L16.28,17.2L13.18,8L14.16,7.9C14.63,7.84 14.57,7.16 14.11,7.19C14.11,7.19 12.72,7.3 11.82,7.3L9.56,7.19C9.1,7.16 9.05,7.87 9.5,7.9L10.41,8L11.75,11.64L9.87,17.27L6.74,8L7.73,7.9C8.19,7.84 8.13,7.16 7.67,7.19C7.67,7.19 6.28,7.3 5.38,7.3L4.83,7.29C6.37,4.96 9,3.42 12,3.42C14.23,3.42 16.27,4.28 17.79,5.67H17.68C16.84,5.67 16.24,6.4 16.24,7.19C16.24,7.9 16.65,8.5 17.08,9.2C17.41,9.77 17.79,10.5 17.79,11.57M12.15,12.75L14.79,19.97L14.85,20.09C13.96,20.41 13,20.58 12,20.58C11.16,20.58 10.35,20.46 9.58,20.23L12.15,12.75M19.53,7.88C20.2,9.11 20.58,10.5 20.58,12C20.58,15.16 18.86,17.93 16.31,19.41L18.93,11.84C19.42,10.62 19.59,9.64 19.59,8.77L19.53,7.88M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,21.54C17.26,21.54 21.54,17.26 21.54,12C21.54,6.74 17.26,2.46 12,2.46C6.74,2.46 2.46,6.74 2.46,12C2.46,17.26 6.74,21.54 12,21.54Z"; +var mdiWrap = "M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z"; +var mdiWrapDisabled = "M16,7H3V5H16V7M3,19H16V17H3V19M22,12L18,9V11H3V13H18V15L22,12Z"; +var mdiWrench = "M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z"; +var mdiWrenchOutline = "M22.61,19L13.53,9.91C14.46,7.57 14,4.81 12.09,2.91C9.79,0.61 6.21,0.4 3.66,2.26L7.5,6.11L6.08,7.5L2.25,3.69C0.39,6.23 0.6,9.82 2.9,12.11C4.76,13.97 7.47,14.46 9.79,13.59L18.9,22.7C19.29,23.09 19.92,23.09 20.31,22.7L22.61,20.4C23,20 23,19.39 22.61,19M19.61,20.59L10.15,11.13C9.54,11.58 8.86,11.85 8.15,11.95C6.79,12.15 5.36,11.74 4.32,10.7C3.37,9.76 2.93,8.5 3,7.26L6.09,10.35L10.33,6.11L7.24,3C8.5,2.95 9.73,3.39 10.68,4.33C11.76,5.41 12.17,6.9 11.92,8.29C11.8,9 11.5,9.66 11.04,10.25L20.5,19.7L19.61,20.59Z"; +var mdiXamarin = "M22.75,11.07C22.91,11.35 23,11.67 23,12C23,12.33 22.91,12.65 22.75,12.93L18.08,21C17.72,21.62 17.06,22 16.35,22H7.65C6.94,22 6.28,21.62 5.92,21L1.25,12.93C1.09,12.65 1,12.33 1,12C1,11.67 1.09,11.35 1.25,11.07L5.92,3C6.28,2.38 6.94,2 7.65,2H16.35C17.06,2 17.72,2.38 18.08,3L22.75,11.07M12,12V11.9L9.42,7.1L9.25,7H7.66L7.5,7.1V7.3L10,12L7.5,16.7V16.9L7.66,17H9.25L9.42,16.9L12,12.1V12L12.03,12.1L14.58,16.9L14.75,17H16.34L16.5,16.9V16.7L14,12L16.5,7.3V7.1L16.34,7H14.75L14.58,7.1L12.03,11.9L12,12Z"; +var mdiXamarinOutline = "M12,12L12.03,11.9L14.58,7.1L14.75,7H16.34L16.5,7.1V7.3L14,12L16.5,16.7V16.9L16.34,17H14.75L14.58,16.9L12.03,12.1L12,12V12.1L9.42,16.9L9.25,17H7.66L7.5,16.9V16.7L10,12L7.5,7.3V7.1L7.66,7H9.25L9.42,7.1L12,11.9V12M22.75,11.07C22.91,11.35 23,11.67 23,12C23,12.33 22.91,12.65 22.75,12.93L18.08,21C17.72,21.62 17.06,22 16.35,22H7.65C6.94,22 6.28,21.62 5.92,21L1.25,12.93C1.09,12.65 1,12.33 1,12C1,11.67 1.09,11.35 1.25,11.07L5.92,3C6.28,2.38 6.94,2 7.65,2H16.35C17.06,2 17.72,2.38 18.08,3L22.75,11.07M20.8,11.25L16.97,4.8C16.68,4.3 16.14,4 15.56,4H8.44C7.86,4 7.32,4.3 7.03,4.8L3.2,11.25C3.07,11.5 3,11.74 3,12C3,12.26 3.07,12.5 3.2,12.75L7.03,19.2C7.32,19.7 7.86,20 8.44,20H15.56C16.14,20 16.68,19.7 16.97,19.2L20.8,12.75C20.93,12.5 21,12.26 21,12C21,11.74 20.93,11.5 20.8,11.25Z"; +var mdiXing = "M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z"; +var mdiXml = "M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z"; +var mdiXmpp = "M12,15.4C9.75,13.09 8,9.54 8,6C2,4 8,6 2,4C2,9.65 6.33,14.11 10.55,16.66C9.38,17.5 8.15,18 7,18C7,19 7,18 7,19C8.2,19 10.03,18.46 12,17.46C13.97,18.46 15.8,19 17,19C17,18 17,19 17,18C15.85,18 14.62,17.5 13.45,16.66C17.66,14.11 22,9.65 22,4C16,6 22,4 16,6C16,9.54 14.25,13.09 12,15.4Z"; +var mdiYCombinator = "M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z"; +var mdiYahoo = "M10.5 7.59L8.16 13.2L5.85 7.59H2L6.29 17.23L4.75 20.7H8.5L14.24 7.59H10.5M15 12.73C13.63 12.73 12.59 13.77 12.59 15C12.59 16.17 13.59 17.16 14.93 17.16C16.32 17.16 17.36 16.13 17.36 14.9C17.36 13.69 16.36 12.73 15 12.73M17.72 3.3L13.89 11.89H18.17L22 3.3H17.72Z"; +var mdiYeast = "M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; +var mdiYinYang = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z"; +var mdiYoga = "M13 2C11.9 2 11 2.9 11 4C11 5.11 11.9 6 13 6C14.11 6 15 5.11 15 4C15 2.9 14.11 2 13 2M4 7V9H10V15L4.93 20.07L6.34 21.5L13.06 14.77L17 17.13V21H19V16.57C19 16.21 18.82 15.89 18.5 15.71L15 13.6V9H21V7H4Z"; +var mdiYoutube = "M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z"; +var mdiYoutubeGaming = "M22 13V8L17 5L12 8L7 5L2 8V13L12 19L22 13M9 11H7V13H6V11H4V10H6V8H7V10H9V11M15 13C14.45 13 14 12.55 14 12S14.45 11 15 11 16 11.45 16 12 15.55 13 15 13M18 11C17.45 11 17 10.55 17 10S17.45 9 18 9 19 9.45 19 10 18.55 11 18 11Z"; +var mdiYoutubeStudio = "M10,15L15,12L10,9V15M19.45,13L21.56,14.63C21.78,14.78 21.81,15 21.66,15.28L19.64,18.75C19.5,18.97 19.31,19.03 19.03,18.94L16.55,17.95C15.89,18.42 15.33,18.75 14.86,18.94L14.5,21.56C14.42,21.84 14.27,22 14,22H10C9.73,22 9.58,21.84 9.5,21.56L9.14,18.94C8.55,18.69 8,18.36 7.45,17.95L4.97,18.94C4.69,19.03 4.5,18.97 4.36,18.75L2.34,15.28C2.19,15 2.22,14.78 2.44,14.63L4.55,13C4.5,12.77 4.5,12.44 4.5,12C4.5,11.56 4.5,11.23 4.55,11L2.44,9.38C2.22,9.22 2.19,9 2.34,8.72L4.36,5.25C4.5,5.03 4.69,4.97 4.97,5.06L7.45,6.05C8.11,5.58 8.67,5.25 9.14,5.06L9.5,2.44C9.58,2.16 9.73,2 10,2H14C14.27,2 14.42,2.16 14.5,2.44L14.86,5.06C15.45,5.31 16,5.64 16.55,6.05L19.03,5.06C19.31,4.97 19.5,5.03 19.64,5.25L21.66,8.72C21.81,9 21.78,9.22 21.56,9.38L19.45,11C19.5,11.23 19.5,11.56 19.5,12C19.5,12.44 19.5,12.77 19.45,13Z"; +var mdiYoutubeSubscription = "M20,8H4V6H20V8M18,2H6V4H18V2M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A2,2 0 0,1 4,10H20A2,2 0 0,1 22,12M16,16L10,12.73V19.26L16,16Z"; +var mdiYoutubeTv = "M2.5,4.5H21.5C22.34,4.5 23,5.15 23,6V17.5C23,18.35 22.34,19 21.5,19H2.5C1.65,19 1,18.35 1,17.5V6C1,5.15 1.65,4.5 2.5,4.5M9.71,8.5V15L15.42,11.7L9.71,8.5M17.25,21H6.65C6.35,21 6.15,20.8 6.15,20.5C6.15,20.2 6.35,20 6.65,20H17.35C17.65,20 17.85,20.2 17.85,20.5C17.85,20.8 17.55,21 17.25,21Z"; +var mdiYurt = "M22 14.87V22H14V16H10V22H2V14.87C2 14.33 2.29 13.83 2.76 13.57L8.66 10.2C8.88 10.07 9.14 10 9.4 10H12.5V9H14V10H14.59C14.85 10 15.11 10.07 15.33 10.2L21.23 13.57C21.71 13.84 22 14.33 22 14.87M7.86 6.25H9.4C10.73 6.25 11.92 6.95 12.5 8H14C13.6 6.2 12 4.85 10.1 4.85V3.35C11.1 3.35 11.95 2.5 11.95 1.5V1H7.86V2.5C6.86 2.5 6 3.23 6 4.25S6.86 6.25 7.86 6.25Z"; +var mdiZWave = "M16.3,10.58C13.14,10.58 10.6,13.13 10.6,16.28C10.6,19.43 13.15,22 16.3,22C19.45,22 22,19.43 22,16.28C22,13.13 19.45,10.58 16.3,10.58M18,19.08H13.19L15.81,15H13.31L14.4,13.23H19.18L16.63,17.28H19.18L18,19.08M16.3,3.93V2C8.41,2 2,8.42 2,16.31H3.92C3.94,9.46 9.5,3.93 16.3,3.93M16.3,7.74V5.82C10.5,5.82 5.81,10.53 5.81,16.31H7.73C7.75,11.58 11.59,7.74 16.3,7.74"; +var mdiZend = "M11.28,9.81C11.28,9.81 11.28,7 14.09,7H22.5C22.5,7 22.5,9.81 19.71,9.81H11.28M11.28,13.41C11.28,13.41 11.28,10.6 14.09,10.6H18.31C18.31,10.6 18.31,13.41 15.5,13.41H11.28M11.28,17C11.28,17 11.28,14.19 14.09,14.19H15.5C15.5,14.19 15.5,17 12.68,17H11.28M10.46,14.8V17H1.58L7.3,9.21H2.4V7H11.66L5.96,14.8H10.46Z"; +var mdiZigbee = "M4.06,6.15C3.97,6.17 3.88,6.22 3.8,6.28C2.66,7.9 2,9.87 2,12A10,10 0 0,0 12,22C15,22 17.68,20.68 19.5,18.6L17,18.85C14.25,19.15 11.45,19.19 8.66,18.96C7.95,18.94 7.24,18.76 6.59,18.45C5.73,18.06 5.15,17.23 5.07,16.29C5.06,16.13 5.12,16 5.23,15.87L7.42,13.6L15.03,5.7V5.6H10.84C8.57,5.64 6.31,5.82 4.06,6.15M20.17,17.5C20.26,17.47 20.35,17.44 20.43,17.39C21.42,15.83 22,14 22,12A10,10 0 0,0 12,2C9.22,2 6.7,3.13 4.89,4.97H5.17C8.28,4.57 11.43,4.47 14.56,4.65C15.5,4.64 16.45,4.82 17.33,5.17C18.25,5.53 18.89,6.38 19,7.37C19,7.53 18.93,7.7 18.82,7.82L9.71,17.19L9,17.95V18.06H13.14C15.5,18 17.84,17.81 20.17,17.5Z"; +var mdiZipBox = "M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; +var mdiZipBoxOutline = "M12 17V15H14V17H12M14 13V11H12V13H14M14 9V7H12V9H14M10 11H12V9H10V11M10 15H12V13H10V15M21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5M19 5H12V7H10V5H5V19H19V5Z"; +var mdiZipDisk = "M7,3L3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5L17,3V5A1,1 0 0,1 16,6H10A1,1 0 0,1 9,5V3H7M8,10H16A1,1 0 0,1 17,11V19H7V11A1,1 0 0,1 8,10Z"; +var mdiZodiacAquarius = "M15,12.41L12,9.41L9,12.41L6,9.41L3.71,11.71L2.29,10.29L6,6.59L9,9.59L12,6.59L15,9.59L18,6.59L21.71,10.29L20.29,11.71L18,9.41L15,12.41M18,15.41L20.29,17.71L21.71,16.29L18,12.59L15,15.59L12,12.59L9,15.59L6,12.59L2.29,16.29L3.71,17.71L6,15.41L9,18.41L12,15.41L15,18.41L18,15.41Z"; +var mdiZodiacAries = "M16,2C14.95,2 13.91,2.27 13,2.81C12.64,3 12.3,3.26 12,3.54C11.7,3.26 11.36,3 11,2.81C10.09,2.27 9.05,2 8,2A6,6 0 0,0 2,8A6,6 0 0,0 8,14V12A4,4 0 0,1 4,8A4,4 0 0,1 8,4C9,4 10,4.39 10.75,5.1C10.84,5.18 10.92,5.27 11,5.36V22H13V5.36C13.08,5.27 13.16,5.18 13.25,5.1C14.85,3.58 17.38,3.64 18.91,5.25C20.43,6.85 20.36,9.38 18.76,10.9C18,11.61 17.03,12 16,12V14A6,6 0 0,0 22,8A6,6 0 0,0 16,2Z"; +var mdiZodiacCancer = "M12,4C6.5,4 2,7.58 2,12C2,14.12 3.65,15.87 5.76,16H6A4,4 0 0,0 10,12A4,4 0 0,0 6,8H5.76C7.44,6.41 9.69,5.55 12,5.6C13.77,5.58 15.5,6.07 17,7L18.25,5.75C16.38,4.58 14.21,3.97 12,4M6,10A2,2 0 0,1 8,12C8,13.11 7.08,14 6,14C4.96,14 4.1,13.22 4,12.2C4,12.07 4,11.93 4,11.8C4.1,10.77 4.97,10 6,10M18.24,8H18A4,4 0 0,0 14,12A4,4 0 0,0 18,16H18.24C16.56,17.59 14.31,18.45 12,18.4C10.23,18.42 8.5,17.93 7,17L5.76,18.24C7.63,19.41 9.79,20 12,20C17.5,20 22,16.42 22,12C22,9.88 20.35,8.13 18.24,8M18,14A2,2 0 0,1 16,12C16,10.89 16.92,10 18,10C19.04,10 19.9,10.78 20,11.8C20,11.93 20,12.07 20,12.2C19.9,13.23 19.03,14 18,14Z"; +var mdiZodiacCapricorn = "M15,13C14.3,13 13.61,13.19 13,13.55V6A3,3 0 0,0 10,3C9.25,3 8.55,3.29 8,3.78C7.45,3.28 6.74,3 6,3V5A1,1 0 0,1 7,6V16H9V6A1,1 0 0,1 10,5A1,1 0 0,1 11,6V17A2,2 0 0,1 9,19V21C10.15,21 11.25,20.5 12,19.62C13.45,21.29 15.97,21.47 17.64,20C19.31,18.58 19.5,16.05 18.04,14.38C17.28,13.5 16.17,13 15,13M15,19A2,2 0 0,1 13,17A2,2 0 0,1 15,15A2,2 0 0,1 17,17A2,2 0 0,1 15,19Z"; +var mdiZodiacGemini = "M18,5.3C19.35,4.97 20.66,4.54 21.94,4L21.18,2.14C18.27,3.36 15.15,4 12,4C8.85,4 5.73,3.38 2.82,2.17L2.06,4C3.34,4.54 4.65,4.97 6,5.3V18.7C4.65,19.03 3.34,19.46 2.06,20L2.82,21.86C8.7,19.42 15.3,19.42 21.18,21.86L21.94,20C20.66,19.46 19.35,19.03 18,18.7V5.3M8,18.3V5.69C9.32,5.89 10.66,6 12,6C13.34,6 14.68,5.89 16,5.69V18.31C13.35,17.9 10.65,17.9 8,18.31V18.3Z"; +var mdiZodiacLeo = "M20,17A3,3 0 0,1 17,20C15.38,19.92 14.08,18.62 14,17C14.16,15.39 14.5,13.8 15,12.26C15.54,10.55 15.87,8.79 16,7C15.93,4.27 13.73,2.07 11,2C8.27,2.07 6.07,4.27 6,7C6.15,8.53 6.5,10.03 7,11.5L7.21,12.2C5.1,11.53 2.86,12.7 2.19,14.8C1.5,16.91 2.68,19.16 4.79,19.83C6.9,20.5 9.14,19.33 9.81,17.22C9.94,16.83 10,16.41 10,16C9.84,14.27 9.5,12.56 8.91,10.92C8.47,9.65 8.16,8.34 8,7C8.08,5.38 9.38,4.08 11,4C12.62,4.08 13.92,5.38 14,7C13.84,8.61 13.5,10.2 13,11.74C12.46,13.45 12.13,15.21 12,17C12.07,19.73 14.27,21.93 17,22A5,5 0 0,0 22,17H20M6,18A2,2 0 0,1 4,16A2,2 0 0,1 6,14A2,2 0 0,1 8,16A2,2 0 0,1 6,18Z"; +var mdiZodiacLibra = "M20,16V18H13V15.91C16,15.36 17.96,12.5 17.41,9.5C16.86,6.5 14,4.54 11,5.09C8,5.65 6.04,8.5 6.59,11.5C7,13.74 8.76,15.5 11,15.91V18H4V16H6.92C5.37,14.59 4.5,12.59 4.5,10.5A7.5,7.5 0 0,1 12,3A7.5,7.5 0 0,1 19.5,10.5C19.5,12.59 18.63,14.59 17.08,16H20M20,19H4V21H20V19Z"; +var mdiZodiacPisces = "M20,11H18C18.11,8.19 18.73,5.42 19.81,2.82L18,2.06C16.81,4.9 16.13,7.92 16,11H8C7.87,7.92 7.19,4.9 6,2.06L4.14,2.82C5.24,5.41 5.87,8.18 6,11H4V13H6C5.89,15.81 5.27,18.58 4.19,21.18L6,21.94C7.19,19.1 7.87,16.08 8,13H16C16.13,16.08 16.81,19.1 18,21.94L19.86,21.18C18.76,18.59 18.13,15.82 18,13H20V11Z"; +var mdiZodiacSagittarius = "M22,2V12H20V5.41L10.41,15L12.71,17.29L11.29,18.71L9,16.41L3.71,21.71L2.29,20.29L7.59,15L5.29,12.71L6.71,11.29L9,13.59L18.59,4H12V2H22Z"; +var mdiZodiacScorpio = "M17.71,15.29L16.29,16.71L17.59,18H16A2,2 0 0,1 14,16V6A3,3 0 0,0 11,3C10.25,3 9.55,3.29 9,3.78C7.86,2.76 6.14,2.76 5,3.78C4.45,3.28 3.74,3 3,3V5A1,1 0 0,1 4,6V16H6V6A1,1 0 0,1 7,5A1,1 0 0,1 8,6V16H10V6A1,1 0 0,1 11,5A1,1 0 0,1 12,6V16A4,4 0 0,0 16,20H17.59L16.29,21.29L17.71,22.71L21.41,19L17.71,15.29Z"; +var mdiZodiacTaurus = "M15.59,9C17.7,7.74 19,5.46 19,3H17A5,5 0 0,1 12,8A5,5 0 0,1 7,3H5C5,5.46 6.3,7.74 8.41,9C5.09,11 4,15.28 6,18.6C7.97,21.92 12.27,23 15.59,21C18.91,19.04 20,14.74 18,11.42C17.42,10.43 16.58,9.59 15.59,9M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20Z"; +var mdiZodiacVirgo = "M18.5,19.13C20,17.77 20,15.18 20,14A4,4 0 0,0 16,10C15.3,10 14.6,10.2 14,10.56V6A3,3 0 0,0 11,3C10.25,3 9.55,3.29 9,3.78C7.86,2.76 6.14,2.76 5,3.78C4.45,3.28 3.74,3 3,3V5A1,1 0 0,1 4,6V16H6V6A1,1 0 0,1 7,5A1,1 0 0,1 8,6V16H10V6A1,1 0 0,1 11,5A1,1 0 0,1 12,6V14C12,15.18 12,17.77 13.5,19.13C12.72,19.54 11.88,19.84 11,20V22C12.29,22 14.84,20.74 16,20.13C17.16,20.74 19.71,22 21,22V20C20.12,19.84 19.28,19.54 18.5,19.13M16,12A2,2 0 0,1 18,14C18,16.92 17.46,18 16,18C14.54,18 14,16.92 14,14A2,2 0 0,1 16,12Z"; + +var mdiIcons = /*#__PURE__*/Object.freeze({ + __proto__: null, + mdiAbTesting: mdiAbTesting, + mdiAbacus: mdiAbacus, + mdiAbjadArabic: mdiAbjadArabic, + mdiAbjadHebrew: mdiAbjadHebrew, + mdiAbugidaDevanagari: mdiAbugidaDevanagari, + mdiAbugidaThai: mdiAbugidaThai, + mdiAccessPoint: mdiAccessPoint, + mdiAccessPointCheck: mdiAccessPointCheck, + mdiAccessPointMinus: mdiAccessPointMinus, + mdiAccessPointNetwork: mdiAccessPointNetwork, + mdiAccessPointNetworkOff: mdiAccessPointNetworkOff, + mdiAccessPointOff: mdiAccessPointOff, + mdiAccessPointPlus: mdiAccessPointPlus, + mdiAccessPointRemove: mdiAccessPointRemove, + mdiAccount: mdiAccount, + mdiAccountAlert: mdiAccountAlert, + mdiAccountAlertOutline: mdiAccountAlertOutline, + mdiAccountArrowLeft: mdiAccountArrowLeft, + mdiAccountArrowLeftOutline: mdiAccountArrowLeftOutline, + mdiAccountArrowRight: mdiAccountArrowRight, + mdiAccountArrowRightOutline: mdiAccountArrowRightOutline, + mdiAccountBox: mdiAccountBox, + mdiAccountBoxMultiple: mdiAccountBoxMultiple, + mdiAccountBoxMultipleOutline: mdiAccountBoxMultipleOutline, + mdiAccountBoxOutline: mdiAccountBoxOutline, + mdiAccountCancel: mdiAccountCancel, + mdiAccountCancelOutline: mdiAccountCancelOutline, + mdiAccountCash: mdiAccountCash, + mdiAccountCashOutline: mdiAccountCashOutline, + mdiAccountCheck: mdiAccountCheck, + mdiAccountCheckOutline: mdiAccountCheckOutline, + mdiAccountChild: mdiAccountChild, + mdiAccountChildCircle: mdiAccountChildCircle, + mdiAccountChildOutline: mdiAccountChildOutline, + mdiAccountCircle: mdiAccountCircle, + mdiAccountCircleOutline: mdiAccountCircleOutline, + mdiAccountClock: mdiAccountClock, + mdiAccountClockOutline: mdiAccountClockOutline, + mdiAccountCog: mdiAccountCog, + mdiAccountCogOutline: mdiAccountCogOutline, + mdiAccountConvert: mdiAccountConvert, + mdiAccountConvertOutline: mdiAccountConvertOutline, + mdiAccountCowboyHat: mdiAccountCowboyHat, + mdiAccountDetails: mdiAccountDetails, + mdiAccountDetailsOutline: mdiAccountDetailsOutline, + mdiAccountEdit: mdiAccountEdit, + mdiAccountEditOutline: mdiAccountEditOutline, + mdiAccountGroup: mdiAccountGroup, + mdiAccountGroupOutline: mdiAccountGroupOutline, + mdiAccountHardHat: mdiAccountHardHat, + mdiAccountHeart: mdiAccountHeart, + mdiAccountHeartOutline: mdiAccountHeartOutline, + mdiAccountKey: mdiAccountKey, + mdiAccountKeyOutline: mdiAccountKeyOutline, + mdiAccountLock: mdiAccountLock, + mdiAccountLockOutline: mdiAccountLockOutline, + mdiAccountMinus: mdiAccountMinus, + mdiAccountMinusOutline: mdiAccountMinusOutline, + mdiAccountMultiple: mdiAccountMultiple, + mdiAccountMultipleCheck: mdiAccountMultipleCheck, + mdiAccountMultipleCheckOutline: mdiAccountMultipleCheckOutline, + mdiAccountMultipleMinus: mdiAccountMultipleMinus, + mdiAccountMultipleMinusOutline: mdiAccountMultipleMinusOutline, + mdiAccountMultipleOutline: mdiAccountMultipleOutline, + mdiAccountMultiplePlus: mdiAccountMultiplePlus, + mdiAccountMultiplePlusOutline: mdiAccountMultiplePlusOutline, + mdiAccountMultipleRemove: mdiAccountMultipleRemove, + mdiAccountMultipleRemoveOutline: mdiAccountMultipleRemoveOutline, + mdiAccountMusic: mdiAccountMusic, + mdiAccountMusicOutline: mdiAccountMusicOutline, + mdiAccountNetwork: mdiAccountNetwork, + mdiAccountNetworkOutline: mdiAccountNetworkOutline, + mdiAccountOff: mdiAccountOff, + mdiAccountOffOutline: mdiAccountOffOutline, + mdiAccountOutline: mdiAccountOutline, + mdiAccountPlus: mdiAccountPlus, + mdiAccountPlusOutline: mdiAccountPlusOutline, + mdiAccountQuestion: mdiAccountQuestion, + mdiAccountQuestionOutline: mdiAccountQuestionOutline, + mdiAccountReactivate: mdiAccountReactivate, + mdiAccountReactivateOutline: mdiAccountReactivateOutline, + mdiAccountRemove: mdiAccountRemove, + mdiAccountRemoveOutline: mdiAccountRemoveOutline, + mdiAccountSearch: mdiAccountSearch, + mdiAccountSearchOutline: mdiAccountSearchOutline, + mdiAccountSettings: mdiAccountSettings, + mdiAccountSettingsOutline: mdiAccountSettingsOutline, + mdiAccountStar: mdiAccountStar, + mdiAccountStarOutline: mdiAccountStarOutline, + mdiAccountSupervisor: mdiAccountSupervisor, + mdiAccountSupervisorCircle: mdiAccountSupervisorCircle, + mdiAccountSupervisorCircleOutline: mdiAccountSupervisorCircleOutline, + mdiAccountSupervisorOutline: mdiAccountSupervisorOutline, + mdiAccountSwitch: mdiAccountSwitch, + mdiAccountSwitchOutline: mdiAccountSwitchOutline, + mdiAccountTie: mdiAccountTie, + mdiAccountTieOutline: mdiAccountTieOutline, + mdiAccountTieVoice: mdiAccountTieVoice, + mdiAccountTieVoiceOff: mdiAccountTieVoiceOff, + mdiAccountTieVoiceOffOutline: mdiAccountTieVoiceOffOutline, + mdiAccountTieVoiceOutline: mdiAccountTieVoiceOutline, + mdiAccountVoice: mdiAccountVoice, + mdiAdjust: mdiAdjust, + mdiAdobe: mdiAdobe, + mdiAdobeAcrobat: mdiAdobeAcrobat, + mdiAirConditioner: mdiAirConditioner, + mdiAirFilter: mdiAirFilter, + mdiAirHorn: mdiAirHorn, + mdiAirHumidifier: mdiAirHumidifier, + mdiAirHumidifierOff: mdiAirHumidifierOff, + mdiAirPurifier: mdiAirPurifier, + mdiAirbag: mdiAirbag, + mdiAirballoon: mdiAirballoon, + mdiAirballoonOutline: mdiAirballoonOutline, + mdiAirplane: mdiAirplane, + mdiAirplaneLanding: mdiAirplaneLanding, + mdiAirplaneOff: mdiAirplaneOff, + mdiAirplaneTakeoff: mdiAirplaneTakeoff, + mdiAirport: mdiAirport, + mdiAlarm: mdiAlarm, + mdiAlarmBell: mdiAlarmBell, + mdiAlarmCheck: mdiAlarmCheck, + mdiAlarmLight: mdiAlarmLight, + mdiAlarmLightOff: mdiAlarmLightOff, + mdiAlarmLightOffOutline: mdiAlarmLightOffOutline, + mdiAlarmLightOutline: mdiAlarmLightOutline, + mdiAlarmMultiple: mdiAlarmMultiple, + mdiAlarmNote: mdiAlarmNote, + mdiAlarmNoteOff: mdiAlarmNoteOff, + mdiAlarmOff: mdiAlarmOff, + mdiAlarmPanel: mdiAlarmPanel, + mdiAlarmPanelOutline: mdiAlarmPanelOutline, + mdiAlarmPlus: mdiAlarmPlus, + mdiAlarmSnooze: mdiAlarmSnooze, + mdiAlbum: mdiAlbum, + mdiAlert: mdiAlert, + mdiAlertBox: mdiAlertBox, + mdiAlertBoxOutline: mdiAlertBoxOutline, + mdiAlertCircle: mdiAlertCircle, + mdiAlertCircleCheck: mdiAlertCircleCheck, + mdiAlertCircleCheckOutline: mdiAlertCircleCheckOutline, + mdiAlertCircleOutline: mdiAlertCircleOutline, + mdiAlertDecagram: mdiAlertDecagram, + mdiAlertDecagramOutline: mdiAlertDecagramOutline, + mdiAlertMinus: mdiAlertMinus, + mdiAlertMinusOutline: mdiAlertMinusOutline, + mdiAlertOctagon: mdiAlertOctagon, + mdiAlertOctagonOutline: mdiAlertOctagonOutline, + mdiAlertOctagram: mdiAlertOctagram, + mdiAlertOctagramOutline: mdiAlertOctagramOutline, + mdiAlertOutline: mdiAlertOutline, + mdiAlertPlus: mdiAlertPlus, + mdiAlertPlusOutline: mdiAlertPlusOutline, + mdiAlertRemove: mdiAlertRemove, + mdiAlertRemoveOutline: mdiAlertRemoveOutline, + mdiAlertRhombus: mdiAlertRhombus, + mdiAlertRhombusOutline: mdiAlertRhombusOutline, + mdiAlien: mdiAlien, + mdiAlienOutline: mdiAlienOutline, + mdiAlignHorizontalCenter: mdiAlignHorizontalCenter, + mdiAlignHorizontalLeft: mdiAlignHorizontalLeft, + mdiAlignHorizontalRight: mdiAlignHorizontalRight, + mdiAlignVerticalBottom: mdiAlignVerticalBottom, + mdiAlignVerticalCenter: mdiAlignVerticalCenter, + mdiAlignVerticalTop: mdiAlignVerticalTop, + mdiAllInclusive: mdiAllInclusive, + mdiAllergy: mdiAllergy, + mdiAlpha: mdiAlpha, + mdiAlphaA: mdiAlphaA, + mdiAlphaABox: mdiAlphaABox, + mdiAlphaABoxOutline: mdiAlphaABoxOutline, + mdiAlphaACircle: mdiAlphaACircle, + mdiAlphaACircleOutline: mdiAlphaACircleOutline, + mdiAlphaB: mdiAlphaB, + mdiAlphaBBox: mdiAlphaBBox, + mdiAlphaBBoxOutline: mdiAlphaBBoxOutline, + mdiAlphaBCircle: mdiAlphaBCircle, + mdiAlphaBCircleOutline: mdiAlphaBCircleOutline, + mdiAlphaC: mdiAlphaC, + mdiAlphaCBox: mdiAlphaCBox, + mdiAlphaCBoxOutline: mdiAlphaCBoxOutline, + mdiAlphaCCircle: mdiAlphaCCircle, + mdiAlphaCCircleOutline: mdiAlphaCCircleOutline, + mdiAlphaD: mdiAlphaD, + mdiAlphaDBox: mdiAlphaDBox, + mdiAlphaDBoxOutline: mdiAlphaDBoxOutline, + mdiAlphaDCircle: mdiAlphaDCircle, + mdiAlphaDCircleOutline: mdiAlphaDCircleOutline, + mdiAlphaE: mdiAlphaE, + mdiAlphaEBox: mdiAlphaEBox, + mdiAlphaEBoxOutline: mdiAlphaEBoxOutline, + mdiAlphaECircle: mdiAlphaECircle, + mdiAlphaECircleOutline: mdiAlphaECircleOutline, + mdiAlphaF: mdiAlphaF, + mdiAlphaFBox: mdiAlphaFBox, + mdiAlphaFBoxOutline: mdiAlphaFBoxOutline, + mdiAlphaFCircle: mdiAlphaFCircle, + mdiAlphaFCircleOutline: mdiAlphaFCircleOutline, + mdiAlphaG: mdiAlphaG, + mdiAlphaGBox: mdiAlphaGBox, + mdiAlphaGBoxOutline: mdiAlphaGBoxOutline, + mdiAlphaGCircle: mdiAlphaGCircle, + mdiAlphaGCircleOutline: mdiAlphaGCircleOutline, + mdiAlphaH: mdiAlphaH, + mdiAlphaHBox: mdiAlphaHBox, + mdiAlphaHBoxOutline: mdiAlphaHBoxOutline, + mdiAlphaHCircle: mdiAlphaHCircle, + mdiAlphaHCircleOutline: mdiAlphaHCircleOutline, + mdiAlphaI: mdiAlphaI, + mdiAlphaIBox: mdiAlphaIBox, + mdiAlphaIBoxOutline: mdiAlphaIBoxOutline, + mdiAlphaICircle: mdiAlphaICircle, + mdiAlphaICircleOutline: mdiAlphaICircleOutline, + mdiAlphaJ: mdiAlphaJ, + mdiAlphaJBox: mdiAlphaJBox, + mdiAlphaJBoxOutline: mdiAlphaJBoxOutline, + mdiAlphaJCircle: mdiAlphaJCircle, + mdiAlphaJCircleOutline: mdiAlphaJCircleOutline, + mdiAlphaK: mdiAlphaK, + mdiAlphaKBox: mdiAlphaKBox, + mdiAlphaKBoxOutline: mdiAlphaKBoxOutline, + mdiAlphaKCircle: mdiAlphaKCircle, + mdiAlphaKCircleOutline: mdiAlphaKCircleOutline, + mdiAlphaL: mdiAlphaL, + mdiAlphaLBox: mdiAlphaLBox, + mdiAlphaLBoxOutline: mdiAlphaLBoxOutline, + mdiAlphaLCircle: mdiAlphaLCircle, + mdiAlphaLCircleOutline: mdiAlphaLCircleOutline, + mdiAlphaM: mdiAlphaM, + mdiAlphaMBox: mdiAlphaMBox, + mdiAlphaMBoxOutline: mdiAlphaMBoxOutline, + mdiAlphaMCircle: mdiAlphaMCircle, + mdiAlphaMCircleOutline: mdiAlphaMCircleOutline, + mdiAlphaN: mdiAlphaN, + mdiAlphaNBox: mdiAlphaNBox, + mdiAlphaNBoxOutline: mdiAlphaNBoxOutline, + mdiAlphaNCircle: mdiAlphaNCircle, + mdiAlphaNCircleOutline: mdiAlphaNCircleOutline, + mdiAlphaO: mdiAlphaO, + mdiAlphaOBox: mdiAlphaOBox, + mdiAlphaOBoxOutline: mdiAlphaOBoxOutline, + mdiAlphaOCircle: mdiAlphaOCircle, + mdiAlphaOCircleOutline: mdiAlphaOCircleOutline, + mdiAlphaP: mdiAlphaP, + mdiAlphaPBox: mdiAlphaPBox, + mdiAlphaPBoxOutline: mdiAlphaPBoxOutline, + mdiAlphaPCircle: mdiAlphaPCircle, + mdiAlphaPCircleOutline: mdiAlphaPCircleOutline, + mdiAlphaQ: mdiAlphaQ, + mdiAlphaQBox: mdiAlphaQBox, + mdiAlphaQBoxOutline: mdiAlphaQBoxOutline, + mdiAlphaQCircle: mdiAlphaQCircle, + mdiAlphaQCircleOutline: mdiAlphaQCircleOutline, + mdiAlphaR: mdiAlphaR, + mdiAlphaRBox: mdiAlphaRBox, + mdiAlphaRBoxOutline: mdiAlphaRBoxOutline, + mdiAlphaRCircle: mdiAlphaRCircle, + mdiAlphaRCircleOutline: mdiAlphaRCircleOutline, + mdiAlphaS: mdiAlphaS, + mdiAlphaSBox: mdiAlphaSBox, + mdiAlphaSBoxOutline: mdiAlphaSBoxOutline, + mdiAlphaSCircle: mdiAlphaSCircle, + mdiAlphaSCircleOutline: mdiAlphaSCircleOutline, + mdiAlphaT: mdiAlphaT, + mdiAlphaTBox: mdiAlphaTBox, + mdiAlphaTBoxOutline: mdiAlphaTBoxOutline, + mdiAlphaTCircle: mdiAlphaTCircle, + mdiAlphaTCircleOutline: mdiAlphaTCircleOutline, + mdiAlphaU: mdiAlphaU, + mdiAlphaUBox: mdiAlphaUBox, + mdiAlphaUBoxOutline: mdiAlphaUBoxOutline, + mdiAlphaUCircle: mdiAlphaUCircle, + mdiAlphaUCircleOutline: mdiAlphaUCircleOutline, + mdiAlphaV: mdiAlphaV, + mdiAlphaVBox: mdiAlphaVBox, + mdiAlphaVBoxOutline: mdiAlphaVBoxOutline, + mdiAlphaVCircle: mdiAlphaVCircle, + mdiAlphaVCircleOutline: mdiAlphaVCircleOutline, + mdiAlphaW: mdiAlphaW, + mdiAlphaWBox: mdiAlphaWBox, + mdiAlphaWBoxOutline: mdiAlphaWBoxOutline, + mdiAlphaWCircle: mdiAlphaWCircle, + mdiAlphaWCircleOutline: mdiAlphaWCircleOutline, + mdiAlphaX: mdiAlphaX, + mdiAlphaXBox: mdiAlphaXBox, + mdiAlphaXBoxOutline: mdiAlphaXBoxOutline, + mdiAlphaXCircle: mdiAlphaXCircle, + mdiAlphaXCircleOutline: mdiAlphaXCircleOutline, + mdiAlphaY: mdiAlphaY, + mdiAlphaYBox: mdiAlphaYBox, + mdiAlphaYBoxOutline: mdiAlphaYBoxOutline, + mdiAlphaYCircle: mdiAlphaYCircle, + mdiAlphaYCircleOutline: mdiAlphaYCircleOutline, + mdiAlphaZ: mdiAlphaZ, + mdiAlphaZBox: mdiAlphaZBox, + mdiAlphaZBoxOutline: mdiAlphaZBoxOutline, + mdiAlphaZCircle: mdiAlphaZCircle, + mdiAlphaZCircleOutline: mdiAlphaZCircleOutline, + mdiAlphabetAurebesh: mdiAlphabetAurebesh, + mdiAlphabetCyrillic: mdiAlphabetCyrillic, + mdiAlphabetGreek: mdiAlphabetGreek, + mdiAlphabetLatin: mdiAlphabetLatin, + mdiAlphabetPiqad: mdiAlphabetPiqad, + mdiAlphabetTengwar: mdiAlphabetTengwar, + mdiAlphabetical: mdiAlphabetical, + mdiAlphabeticalOff: mdiAlphabeticalOff, + mdiAlphabeticalVariant: mdiAlphabeticalVariant, + mdiAlphabeticalVariantOff: mdiAlphabeticalVariantOff, + mdiAltimeter: mdiAltimeter, + mdiAmazon: mdiAmazon, + mdiAmazonAlexa: mdiAmazonAlexa, + mdiAmbulance: mdiAmbulance, + mdiAmmunition: mdiAmmunition, + mdiAmpersand: mdiAmpersand, + mdiAmplifier: mdiAmplifier, + mdiAmplifierOff: mdiAmplifierOff, + mdiAnchor: mdiAnchor, + mdiAndroid: mdiAndroid, + mdiAndroidAuto: mdiAndroidAuto, + mdiAndroidDebugBridge: mdiAndroidDebugBridge, + mdiAndroidMessages: mdiAndroidMessages, + mdiAndroidStudio: mdiAndroidStudio, + mdiAngleAcute: mdiAngleAcute, + mdiAngleObtuse: mdiAngleObtuse, + mdiAngleRight: mdiAngleRight, + mdiAngular: mdiAngular, + mdiAngularjs: mdiAngularjs, + mdiAnimation: mdiAnimation, + mdiAnimationOutline: mdiAnimationOutline, + mdiAnimationPlay: mdiAnimationPlay, + mdiAnimationPlayOutline: mdiAnimationPlayOutline, + mdiAnsible: mdiAnsible, + mdiAntenna: mdiAntenna, + mdiAnvil: mdiAnvil, + mdiApacheKafka: mdiApacheKafka, + mdiApi: mdiApi, + mdiApiOff: mdiApiOff, + mdiApple: mdiApple, + mdiAppleAirplay: mdiAppleAirplay, + mdiAppleFinder: mdiAppleFinder, + mdiAppleIcloud: mdiAppleIcloud, + mdiAppleIos: mdiAppleIos, + mdiAppleKeyboardCaps: mdiAppleKeyboardCaps, + mdiAppleKeyboardCommand: mdiAppleKeyboardCommand, + mdiAppleKeyboardControl: mdiAppleKeyboardControl, + mdiAppleKeyboardOption: mdiAppleKeyboardOption, + mdiAppleKeyboardShift: mdiAppleKeyboardShift, + mdiAppleSafari: mdiAppleSafari, + mdiApplication: mdiApplication, + mdiApplicationCog: mdiApplicationCog, + mdiApplicationExport: mdiApplicationExport, + mdiApplicationImport: mdiApplicationImport, + mdiApplicationSettings: mdiApplicationSettings, + mdiApproximatelyEqual: mdiApproximatelyEqual, + mdiApproximatelyEqualBox: mdiApproximatelyEqualBox, + mdiApps: mdiApps, + mdiAppsBox: mdiAppsBox, + mdiArch: mdiArch, + mdiArchive: mdiArchive, + mdiArchiveAlert: mdiArchiveAlert, + mdiArchiveAlertOutline: mdiArchiveAlertOutline, + mdiArchiveArrowDown: mdiArchiveArrowDown, + mdiArchiveArrowDownOutline: mdiArchiveArrowDownOutline, + mdiArchiveArrowUp: mdiArchiveArrowUp, + mdiArchiveArrowUpOutline: mdiArchiveArrowUpOutline, + mdiArchiveOutline: mdiArchiveOutline, + mdiArmFlex: mdiArmFlex, + mdiArmFlexOutline: mdiArmFlexOutline, + mdiArrangeBringForward: mdiArrangeBringForward, + mdiArrangeBringToFront: mdiArrangeBringToFront, + mdiArrangeSendBackward: mdiArrangeSendBackward, + mdiArrangeSendToBack: mdiArrangeSendToBack, + mdiArrowAll: mdiArrowAll, + mdiArrowBottomLeft: mdiArrowBottomLeft, + mdiArrowBottomLeftBoldOutline: mdiArrowBottomLeftBoldOutline, + mdiArrowBottomLeftThick: mdiArrowBottomLeftThick, + mdiArrowBottomLeftThinCircleOutline: mdiArrowBottomLeftThinCircleOutline, + mdiArrowBottomRight: mdiArrowBottomRight, + mdiArrowBottomRightBoldOutline: mdiArrowBottomRightBoldOutline, + mdiArrowBottomRightThick: mdiArrowBottomRightThick, + mdiArrowBottomRightThinCircleOutline: mdiArrowBottomRightThinCircleOutline, + mdiArrowCollapse: mdiArrowCollapse, + mdiArrowCollapseAll: mdiArrowCollapseAll, + mdiArrowCollapseDown: mdiArrowCollapseDown, + mdiArrowCollapseHorizontal: mdiArrowCollapseHorizontal, + mdiArrowCollapseLeft: mdiArrowCollapseLeft, + mdiArrowCollapseRight: mdiArrowCollapseRight, + mdiArrowCollapseUp: mdiArrowCollapseUp, + mdiArrowCollapseVertical: mdiArrowCollapseVertical, + mdiArrowDecision: mdiArrowDecision, + mdiArrowDecisionAuto: mdiArrowDecisionAuto, + mdiArrowDecisionAutoOutline: mdiArrowDecisionAutoOutline, + mdiArrowDecisionOutline: mdiArrowDecisionOutline, + mdiArrowDown: mdiArrowDown, + mdiArrowDownBold: mdiArrowDownBold, + mdiArrowDownBoldBox: mdiArrowDownBoldBox, + mdiArrowDownBoldBoxOutline: mdiArrowDownBoldBoxOutline, + mdiArrowDownBoldCircle: mdiArrowDownBoldCircle, + mdiArrowDownBoldCircleOutline: mdiArrowDownBoldCircleOutline, + mdiArrowDownBoldHexagonOutline: mdiArrowDownBoldHexagonOutline, + mdiArrowDownBoldOutline: mdiArrowDownBoldOutline, + mdiArrowDownBox: mdiArrowDownBox, + mdiArrowDownCircle: mdiArrowDownCircle, + mdiArrowDownCircleOutline: mdiArrowDownCircleOutline, + mdiArrowDownDropCircle: mdiArrowDownDropCircle, + mdiArrowDownDropCircleOutline: mdiArrowDownDropCircleOutline, + mdiArrowDownThick: mdiArrowDownThick, + mdiArrowDownThinCircleOutline: mdiArrowDownThinCircleOutline, + mdiArrowExpand: mdiArrowExpand, + mdiArrowExpandAll: mdiArrowExpandAll, + mdiArrowExpandDown: mdiArrowExpandDown, + mdiArrowExpandHorizontal: mdiArrowExpandHorizontal, + mdiArrowExpandLeft: mdiArrowExpandLeft, + mdiArrowExpandRight: mdiArrowExpandRight, + mdiArrowExpandUp: mdiArrowExpandUp, + mdiArrowExpandVertical: mdiArrowExpandVertical, + mdiArrowHorizontalLock: mdiArrowHorizontalLock, + mdiArrowLeft: mdiArrowLeft, + mdiArrowLeftBold: mdiArrowLeftBold, + mdiArrowLeftBoldBox: mdiArrowLeftBoldBox, + mdiArrowLeftBoldBoxOutline: mdiArrowLeftBoldBoxOutline, + mdiArrowLeftBoldCircle: mdiArrowLeftBoldCircle, + mdiArrowLeftBoldCircleOutline: mdiArrowLeftBoldCircleOutline, + mdiArrowLeftBoldHexagonOutline: mdiArrowLeftBoldHexagonOutline, + mdiArrowLeftBoldOutline: mdiArrowLeftBoldOutline, + mdiArrowLeftBox: mdiArrowLeftBox, + mdiArrowLeftCircle: mdiArrowLeftCircle, + mdiArrowLeftCircleOutline: mdiArrowLeftCircleOutline, + mdiArrowLeftDropCircle: mdiArrowLeftDropCircle, + mdiArrowLeftDropCircleOutline: mdiArrowLeftDropCircleOutline, + mdiArrowLeftRight: mdiArrowLeftRight, + mdiArrowLeftRightBold: mdiArrowLeftRightBold, + mdiArrowLeftRightBoldOutline: mdiArrowLeftRightBoldOutline, + mdiArrowLeftThick: mdiArrowLeftThick, + mdiArrowLeftThinCircleOutline: mdiArrowLeftThinCircleOutline, + mdiArrowRight: mdiArrowRight, + mdiArrowRightBold: mdiArrowRightBold, + mdiArrowRightBoldBox: mdiArrowRightBoldBox, + mdiArrowRightBoldBoxOutline: mdiArrowRightBoldBoxOutline, + mdiArrowRightBoldCircle: mdiArrowRightBoldCircle, + mdiArrowRightBoldCircleOutline: mdiArrowRightBoldCircleOutline, + mdiArrowRightBoldHexagonOutline: mdiArrowRightBoldHexagonOutline, + mdiArrowRightBoldOutline: mdiArrowRightBoldOutline, + mdiArrowRightBox: mdiArrowRightBox, + mdiArrowRightCircle: mdiArrowRightCircle, + mdiArrowRightCircleOutline: mdiArrowRightCircleOutline, + mdiArrowRightDropCircle: mdiArrowRightDropCircle, + mdiArrowRightDropCircleOutline: mdiArrowRightDropCircleOutline, + mdiArrowRightThick: mdiArrowRightThick, + mdiArrowRightThinCircleOutline: mdiArrowRightThinCircleOutline, + mdiArrowSplitHorizontal: mdiArrowSplitHorizontal, + mdiArrowSplitVertical: mdiArrowSplitVertical, + mdiArrowTopLeft: mdiArrowTopLeft, + mdiArrowTopLeftBoldOutline: mdiArrowTopLeftBoldOutline, + mdiArrowTopLeftBottomRight: mdiArrowTopLeftBottomRight, + mdiArrowTopLeftBottomRightBold: mdiArrowTopLeftBottomRightBold, + mdiArrowTopLeftThick: mdiArrowTopLeftThick, + mdiArrowTopLeftThinCircleOutline: mdiArrowTopLeftThinCircleOutline, + mdiArrowTopRight: mdiArrowTopRight, + mdiArrowTopRightBoldOutline: mdiArrowTopRightBoldOutline, + mdiArrowTopRightBottomLeft: mdiArrowTopRightBottomLeft, + mdiArrowTopRightBottomLeftBold: mdiArrowTopRightBottomLeftBold, + mdiArrowTopRightThick: mdiArrowTopRightThick, + mdiArrowTopRightThinCircleOutline: mdiArrowTopRightThinCircleOutline, + mdiArrowUp: mdiArrowUp, + mdiArrowUpBold: mdiArrowUpBold, + mdiArrowUpBoldBox: mdiArrowUpBoldBox, + mdiArrowUpBoldBoxOutline: mdiArrowUpBoldBoxOutline, + mdiArrowUpBoldCircle: mdiArrowUpBoldCircle, + mdiArrowUpBoldCircleOutline: mdiArrowUpBoldCircleOutline, + mdiArrowUpBoldHexagonOutline: mdiArrowUpBoldHexagonOutline, + mdiArrowUpBoldOutline: mdiArrowUpBoldOutline, + mdiArrowUpBox: mdiArrowUpBox, + mdiArrowUpCircle: mdiArrowUpCircle, + mdiArrowUpCircleOutline: mdiArrowUpCircleOutline, + mdiArrowUpDown: mdiArrowUpDown, + mdiArrowUpDownBold: mdiArrowUpDownBold, + mdiArrowUpDownBoldOutline: mdiArrowUpDownBoldOutline, + mdiArrowUpDropCircle: mdiArrowUpDropCircle, + mdiArrowUpDropCircleOutline: mdiArrowUpDropCircleOutline, + mdiArrowUpThick: mdiArrowUpThick, + mdiArrowUpThinCircleOutline: mdiArrowUpThinCircleOutline, + mdiArrowVerticalLock: mdiArrowVerticalLock, + mdiArtstation: mdiArtstation, + mdiAspectRatio: mdiAspectRatio, + mdiAssistant: mdiAssistant, + mdiAsterisk: mdiAsterisk, + mdiAt: mdiAt, + mdiAtlassian: mdiAtlassian, + mdiAtm: mdiAtm, + mdiAtom: mdiAtom, + mdiAtomVariant: mdiAtomVariant, + mdiAttachment: mdiAttachment, + mdiAudioVideo: mdiAudioVideo, + mdiAudioVideoOff: mdiAudioVideoOff, + mdiAugmentedReality: mdiAugmentedReality, + mdiAutoDownload: mdiAutoDownload, + mdiAutoFix: mdiAutoFix, + mdiAutoUpload: mdiAutoUpload, + mdiAutorenew: mdiAutorenew, + mdiAvTimer: mdiAvTimer, + mdiAws: mdiAws, + mdiAxe: mdiAxe, + mdiAxis: mdiAxis, + mdiAxisArrow: mdiAxisArrow, + mdiAxisArrowInfo: mdiAxisArrowInfo, + mdiAxisArrowLock: mdiAxisArrowLock, + mdiAxisLock: mdiAxisLock, + mdiAxisXArrow: mdiAxisXArrow, + mdiAxisXArrowLock: mdiAxisXArrowLock, + mdiAxisXRotateClockwise: mdiAxisXRotateClockwise, + mdiAxisXRotateCounterclockwise: mdiAxisXRotateCounterclockwise, + mdiAxisXYArrowLock: mdiAxisXYArrowLock, + mdiAxisYArrow: mdiAxisYArrow, + mdiAxisYArrowLock: mdiAxisYArrowLock, + mdiAxisYRotateClockwise: mdiAxisYRotateClockwise, + mdiAxisYRotateCounterclockwise: mdiAxisYRotateCounterclockwise, + mdiAxisZArrow: mdiAxisZArrow, + mdiAxisZArrowLock: mdiAxisZArrowLock, + mdiAxisZRotateClockwise: mdiAxisZRotateClockwise, + mdiAxisZRotateCounterclockwise: mdiAxisZRotateCounterclockwise, + mdiBabel: mdiBabel, + mdiBaby: mdiBaby, + mdiBabyBottle: mdiBabyBottle, + mdiBabyBottleOutline: mdiBabyBottleOutline, + mdiBabyBuggy: mdiBabyBuggy, + mdiBabyCarriage: mdiBabyCarriage, + mdiBabyCarriageOff: mdiBabyCarriageOff, + mdiBabyFace: mdiBabyFace, + mdiBabyFaceOutline: mdiBabyFaceOutline, + mdiBackburger: mdiBackburger, + mdiBackspace: mdiBackspace, + mdiBackspaceOutline: mdiBackspaceOutline, + mdiBackspaceReverse: mdiBackspaceReverse, + mdiBackspaceReverseOutline: mdiBackspaceReverseOutline, + mdiBackupRestore: mdiBackupRestore, + mdiBacteria: mdiBacteria, + mdiBacteriaOutline: mdiBacteriaOutline, + mdiBadgeAccount: mdiBadgeAccount, + mdiBadgeAccountAlert: mdiBadgeAccountAlert, + mdiBadgeAccountAlertOutline: mdiBadgeAccountAlertOutline, + mdiBadgeAccountHorizontal: mdiBadgeAccountHorizontal, + mdiBadgeAccountHorizontalOutline: mdiBadgeAccountHorizontalOutline, + mdiBadgeAccountOutline: mdiBadgeAccountOutline, + mdiBadminton: mdiBadminton, + mdiBagCarryOn: mdiBagCarryOn, + mdiBagCarryOnCheck: mdiBagCarryOnCheck, + mdiBagCarryOnOff: mdiBagCarryOnOff, + mdiBagChecked: mdiBagChecked, + mdiBagPersonal: mdiBagPersonal, + mdiBagPersonalOff: mdiBagPersonalOff, + mdiBagPersonalOffOutline: mdiBagPersonalOffOutline, + mdiBagPersonalOutline: mdiBagPersonalOutline, + mdiBagSuitcase: mdiBagSuitcase, + mdiBagSuitcaseOff: mdiBagSuitcaseOff, + mdiBagSuitcaseOffOutline: mdiBagSuitcaseOffOutline, + mdiBagSuitcaseOutline: mdiBagSuitcaseOutline, + mdiBaguette: mdiBaguette, + mdiBalloon: mdiBalloon, + mdiBallot: mdiBallot, + mdiBallotOutline: mdiBallotOutline, + mdiBallotRecount: mdiBallotRecount, + mdiBallotRecountOutline: mdiBallotRecountOutline, + mdiBandage: mdiBandage, + mdiBandcamp: mdiBandcamp, + mdiBank: mdiBank, + mdiBankCheck: mdiBankCheck, + mdiBankMinus: mdiBankMinus, + mdiBankOff: mdiBankOff, + mdiBankOffOutline: mdiBankOffOutline, + mdiBankOutline: mdiBankOutline, + mdiBankPlus: mdiBankPlus, + mdiBankRemove: mdiBankRemove, + mdiBankTransfer: mdiBankTransfer, + mdiBankTransferIn: mdiBankTransferIn, + mdiBankTransferOut: mdiBankTransferOut, + mdiBarcode: mdiBarcode, + mdiBarcodeOff: mdiBarcodeOff, + mdiBarcodeScan: mdiBarcodeScan, + mdiBarley: mdiBarley, + mdiBarleyOff: mdiBarleyOff, + mdiBarn: mdiBarn, + mdiBarrel: mdiBarrel, + mdiBaseball: mdiBaseball, + mdiBaseballBat: mdiBaseballBat, + mdiBaseballDiamond: mdiBaseballDiamond, + mdiBaseballDiamondOutline: mdiBaseballDiamondOutline, + mdiBash: mdiBash, + mdiBasket: mdiBasket, + mdiBasketFill: mdiBasketFill, + mdiBasketMinus: mdiBasketMinus, + mdiBasketMinusOutline: mdiBasketMinusOutline, + mdiBasketOff: mdiBasketOff, + mdiBasketOffOutline: mdiBasketOffOutline, + mdiBasketOutline: mdiBasketOutline, + mdiBasketPlus: mdiBasketPlus, + mdiBasketPlusOutline: mdiBasketPlusOutline, + mdiBasketRemove: mdiBasketRemove, + mdiBasketRemoveOutline: mdiBasketRemoveOutline, + mdiBasketUnfill: mdiBasketUnfill, + mdiBasketball: mdiBasketball, + mdiBasketballHoop: mdiBasketballHoop, + mdiBasketballHoopOutline: mdiBasketballHoopOutline, + mdiBat: mdiBat, + mdiBattery: mdiBattery, + mdiBattery10: mdiBattery10, + mdiBattery10Bluetooth: mdiBattery10Bluetooth, + mdiBattery20: mdiBattery20, + mdiBattery20Bluetooth: mdiBattery20Bluetooth, + mdiBattery30: mdiBattery30, + mdiBattery30Bluetooth: mdiBattery30Bluetooth, + mdiBattery40: mdiBattery40, + mdiBattery40Bluetooth: mdiBattery40Bluetooth, + mdiBattery50: mdiBattery50, + mdiBattery50Bluetooth: mdiBattery50Bluetooth, + mdiBattery60: mdiBattery60, + mdiBattery60Bluetooth: mdiBattery60Bluetooth, + mdiBattery70: mdiBattery70, + mdiBattery70Bluetooth: mdiBattery70Bluetooth, + mdiBattery80: mdiBattery80, + mdiBattery80Bluetooth: mdiBattery80Bluetooth, + mdiBattery90: mdiBattery90, + mdiBattery90Bluetooth: mdiBattery90Bluetooth, + mdiBatteryAlert: mdiBatteryAlert, + mdiBatteryAlertBluetooth: mdiBatteryAlertBluetooth, + mdiBatteryAlertVariant: mdiBatteryAlertVariant, + mdiBatteryAlertVariantOutline: mdiBatteryAlertVariantOutline, + mdiBatteryBluetooth: mdiBatteryBluetooth, + mdiBatteryBluetoothVariant: mdiBatteryBluetoothVariant, + mdiBatteryCharging: mdiBatteryCharging, + mdiBatteryCharging10: mdiBatteryCharging10, + mdiBatteryCharging100: mdiBatteryCharging100, + mdiBatteryCharging20: mdiBatteryCharging20, + mdiBatteryCharging30: mdiBatteryCharging30, + mdiBatteryCharging40: mdiBatteryCharging40, + mdiBatteryCharging50: mdiBatteryCharging50, + mdiBatteryCharging60: mdiBatteryCharging60, + mdiBatteryCharging70: mdiBatteryCharging70, + mdiBatteryCharging80: mdiBatteryCharging80, + mdiBatteryCharging90: mdiBatteryCharging90, + mdiBatteryChargingHigh: mdiBatteryChargingHigh, + mdiBatteryChargingLow: mdiBatteryChargingLow, + mdiBatteryChargingMedium: mdiBatteryChargingMedium, + mdiBatteryChargingOutline: mdiBatteryChargingOutline, + mdiBatteryChargingWireless: mdiBatteryChargingWireless, + mdiBatteryChargingWireless10: mdiBatteryChargingWireless10, + mdiBatteryChargingWireless20: mdiBatteryChargingWireless20, + mdiBatteryChargingWireless30: mdiBatteryChargingWireless30, + mdiBatteryChargingWireless40: mdiBatteryChargingWireless40, + mdiBatteryChargingWireless50: mdiBatteryChargingWireless50, + mdiBatteryChargingWireless60: mdiBatteryChargingWireless60, + mdiBatteryChargingWireless70: mdiBatteryChargingWireless70, + mdiBatteryChargingWireless80: mdiBatteryChargingWireless80, + mdiBatteryChargingWireless90: mdiBatteryChargingWireless90, + mdiBatteryChargingWirelessAlert: mdiBatteryChargingWirelessAlert, + mdiBatteryChargingWirelessOutline: mdiBatteryChargingWirelessOutline, + mdiBatteryHeart: mdiBatteryHeart, + mdiBatteryHeartOutline: mdiBatteryHeartOutline, + mdiBatteryHeartVariant: mdiBatteryHeartVariant, + mdiBatteryHigh: mdiBatteryHigh, + mdiBatteryLow: mdiBatteryLow, + mdiBatteryMedium: mdiBatteryMedium, + mdiBatteryMinus: mdiBatteryMinus, + mdiBatteryNegative: mdiBatteryNegative, + mdiBatteryOff: mdiBatteryOff, + mdiBatteryOffOutline: mdiBatteryOffOutline, + mdiBatteryOutline: mdiBatteryOutline, + mdiBatteryPlus: mdiBatteryPlus, + mdiBatteryPositive: mdiBatteryPositive, + mdiBatteryUnknown: mdiBatteryUnknown, + mdiBatteryUnknownBluetooth: mdiBatteryUnknownBluetooth, + mdiBattlenet: mdiBattlenet, + mdiBeach: mdiBeach, + mdiBeaker: mdiBeaker, + mdiBeakerAlert: mdiBeakerAlert, + mdiBeakerAlertOutline: mdiBeakerAlertOutline, + mdiBeakerCheck: mdiBeakerCheck, + mdiBeakerCheckOutline: mdiBeakerCheckOutline, + mdiBeakerMinus: mdiBeakerMinus, + mdiBeakerMinusOutline: mdiBeakerMinusOutline, + mdiBeakerOutline: mdiBeakerOutline, + mdiBeakerPlus: mdiBeakerPlus, + mdiBeakerPlusOutline: mdiBeakerPlusOutline, + mdiBeakerQuestion: mdiBeakerQuestion, + mdiBeakerQuestionOutline: mdiBeakerQuestionOutline, + mdiBeakerRemove: mdiBeakerRemove, + mdiBeakerRemoveOutline: mdiBeakerRemoveOutline, + mdiBed: mdiBed, + mdiBedDouble: mdiBedDouble, + mdiBedDoubleOutline: mdiBedDoubleOutline, + mdiBedEmpty: mdiBedEmpty, + mdiBedKing: mdiBedKing, + mdiBedKingOutline: mdiBedKingOutline, + mdiBedOutline: mdiBedOutline, + mdiBedQueen: mdiBedQueen, + mdiBedQueenOutline: mdiBedQueenOutline, + mdiBedSingle: mdiBedSingle, + mdiBedSingleOutline: mdiBedSingleOutline, + mdiBee: mdiBee, + mdiBeeFlower: mdiBeeFlower, + mdiBeehiveOffOutline: mdiBeehiveOffOutline, + mdiBeehiveOutline: mdiBeehiveOutline, + mdiBeekeeper: mdiBeekeeper, + mdiBeer: mdiBeer, + mdiBeerOutline: mdiBeerOutline, + mdiBell: mdiBell, + mdiBellAlert: mdiBellAlert, + mdiBellAlertOutline: mdiBellAlertOutline, + mdiBellCancel: mdiBellCancel, + mdiBellCancelOutline: mdiBellCancelOutline, + mdiBellCheck: mdiBellCheck, + mdiBellCheckOutline: mdiBellCheckOutline, + mdiBellCircle: mdiBellCircle, + mdiBellCircleOutline: mdiBellCircleOutline, + mdiBellMinus: mdiBellMinus, + mdiBellMinusOutline: mdiBellMinusOutline, + mdiBellOff: mdiBellOff, + mdiBellOffOutline: mdiBellOffOutline, + mdiBellOutline: mdiBellOutline, + mdiBellPlus: mdiBellPlus, + mdiBellPlusOutline: mdiBellPlusOutline, + mdiBellRemove: mdiBellRemove, + mdiBellRemoveOutline: mdiBellRemoveOutline, + mdiBellRing: mdiBellRing, + mdiBellRingOutline: mdiBellRingOutline, + mdiBellSleep: mdiBellSleep, + mdiBellSleepOutline: mdiBellSleepOutline, + mdiBeta: mdiBeta, + mdiBetamax: mdiBetamax, + mdiBiathlon: mdiBiathlon, + mdiBicycle: mdiBicycle, + mdiBicycleBasket: mdiBicycleBasket, + mdiBicycleElectric: mdiBicycleElectric, + mdiBicyclePennyFarthing: mdiBicyclePennyFarthing, + mdiBike: mdiBike, + mdiBikeFast: mdiBikeFast, + mdiBillboard: mdiBillboard, + mdiBilliards: mdiBilliards, + mdiBilliardsRack: mdiBilliardsRack, + mdiBinoculars: mdiBinoculars, + mdiBio: mdiBio, + mdiBiohazard: mdiBiohazard, + mdiBird: mdiBird, + mdiBitbucket: mdiBitbucket, + mdiBitcoin: mdiBitcoin, + mdiBlackMesa: mdiBlackMesa, + mdiBlender: mdiBlender, + mdiBlenderSoftware: mdiBlenderSoftware, + mdiBlinds: mdiBlinds, + mdiBlindsOpen: mdiBlindsOpen, + mdiBlockHelper: mdiBlockHelper, + mdiBlogger: mdiBlogger, + mdiBloodBag: mdiBloodBag, + mdiBluetooth: mdiBluetooth, + mdiBluetoothAudio: mdiBluetoothAudio, + mdiBluetoothConnect: mdiBluetoothConnect, + mdiBluetoothOff: mdiBluetoothOff, + mdiBluetoothSettings: mdiBluetoothSettings, + mdiBluetoothTransfer: mdiBluetoothTransfer, + mdiBlur: mdiBlur, + mdiBlurLinear: mdiBlurLinear, + mdiBlurOff: mdiBlurOff, + mdiBlurRadial: mdiBlurRadial, + mdiBolnisiCross: mdiBolnisiCross, + mdiBolt: mdiBolt, + mdiBomb: mdiBomb, + mdiBombOff: mdiBombOff, + mdiBone: mdiBone, + mdiBook: mdiBook, + mdiBookAccount: mdiBookAccount, + mdiBookAccountOutline: mdiBookAccountOutline, + mdiBookAlert: mdiBookAlert, + mdiBookAlertOutline: mdiBookAlertOutline, + mdiBookAlphabet: mdiBookAlphabet, + mdiBookArrowDown: mdiBookArrowDown, + mdiBookArrowDownOutline: mdiBookArrowDownOutline, + mdiBookArrowLeft: mdiBookArrowLeft, + mdiBookArrowLeftOutline: mdiBookArrowLeftOutline, + mdiBookArrowRight: mdiBookArrowRight, + mdiBookArrowRightOutline: mdiBookArrowRightOutline, + mdiBookArrowUp: mdiBookArrowUp, + mdiBookArrowUpOutline: mdiBookArrowUpOutline, + mdiBookCancel: mdiBookCancel, + mdiBookCancelOutline: mdiBookCancelOutline, + mdiBookCheck: mdiBookCheck, + mdiBookCheckOutline: mdiBookCheckOutline, + mdiBookClock: mdiBookClock, + mdiBookClockOutline: mdiBookClockOutline, + mdiBookCog: mdiBookCog, + mdiBookCogOutline: mdiBookCogOutline, + mdiBookCross: mdiBookCross, + mdiBookEdit: mdiBookEdit, + mdiBookEditOutline: mdiBookEditOutline, + mdiBookEducation: mdiBookEducation, + mdiBookEducationOutline: mdiBookEducationOutline, + mdiBookInformationVariant: mdiBookInformationVariant, + mdiBookLock: mdiBookLock, + mdiBookLockOpen: mdiBookLockOpen, + mdiBookLockOpenOutline: mdiBookLockOpenOutline, + mdiBookLockOutline: mdiBookLockOutline, + mdiBookMarker: mdiBookMarker, + mdiBookMarkerOutline: mdiBookMarkerOutline, + mdiBookMinus: mdiBookMinus, + mdiBookMinusMultiple: mdiBookMinusMultiple, + mdiBookMinusMultipleOutline: mdiBookMinusMultipleOutline, + mdiBookMinusOutline: mdiBookMinusOutline, + mdiBookMultiple: mdiBookMultiple, + mdiBookMultipleOutline: mdiBookMultipleOutline, + mdiBookMusic: mdiBookMusic, + mdiBookMusicOutline: mdiBookMusicOutline, + mdiBookOff: mdiBookOff, + mdiBookOffOutline: mdiBookOffOutline, + mdiBookOpen: mdiBookOpen, + mdiBookOpenBlankVariant: mdiBookOpenBlankVariant, + mdiBookOpenOutline: mdiBookOpenOutline, + mdiBookOpenPageVariant: mdiBookOpenPageVariant, + mdiBookOpenPageVariantOutline: mdiBookOpenPageVariantOutline, + mdiBookOpenVariant: mdiBookOpenVariant, + mdiBookOutline: mdiBookOutline, + mdiBookPlay: mdiBookPlay, + mdiBookPlayOutline: mdiBookPlayOutline, + mdiBookPlus: mdiBookPlus, + mdiBookPlusMultiple: mdiBookPlusMultiple, + mdiBookPlusMultipleOutline: mdiBookPlusMultipleOutline, + mdiBookPlusOutline: mdiBookPlusOutline, + mdiBookRefresh: mdiBookRefresh, + mdiBookRefreshOutline: mdiBookRefreshOutline, + mdiBookRemove: mdiBookRemove, + mdiBookRemoveMultiple: mdiBookRemoveMultiple, + mdiBookRemoveMultipleOutline: mdiBookRemoveMultipleOutline, + mdiBookRemoveOutline: mdiBookRemoveOutline, + mdiBookSearch: mdiBookSearch, + mdiBookSearchOutline: mdiBookSearchOutline, + mdiBookSettings: mdiBookSettings, + mdiBookSettingsOutline: mdiBookSettingsOutline, + mdiBookSync: mdiBookSync, + mdiBookSyncOutline: mdiBookSyncOutline, + mdiBookVariant: mdiBookVariant, + mdiBookVariantMultiple: mdiBookVariantMultiple, + mdiBookmark: mdiBookmark, + mdiBookmarkCheck: mdiBookmarkCheck, + mdiBookmarkCheckOutline: mdiBookmarkCheckOutline, + mdiBookmarkMinus: mdiBookmarkMinus, + mdiBookmarkMinusOutline: mdiBookmarkMinusOutline, + mdiBookmarkMultiple: mdiBookmarkMultiple, + mdiBookmarkMultipleOutline: mdiBookmarkMultipleOutline, + mdiBookmarkMusic: mdiBookmarkMusic, + mdiBookmarkMusicOutline: mdiBookmarkMusicOutline, + mdiBookmarkOff: mdiBookmarkOff, + mdiBookmarkOffOutline: mdiBookmarkOffOutline, + mdiBookmarkOutline: mdiBookmarkOutline, + mdiBookmarkPlus: mdiBookmarkPlus, + mdiBookmarkPlusOutline: mdiBookmarkPlusOutline, + mdiBookmarkRemove: mdiBookmarkRemove, + mdiBookmarkRemoveOutline: mdiBookmarkRemoveOutline, + mdiBookshelf: mdiBookshelf, + mdiBoomGate: mdiBoomGate, + mdiBoomGateAlert: mdiBoomGateAlert, + mdiBoomGateAlertOutline: mdiBoomGateAlertOutline, + mdiBoomGateDown: mdiBoomGateDown, + mdiBoomGateDownOutline: mdiBoomGateDownOutline, + mdiBoomGateOutline: mdiBoomGateOutline, + mdiBoomGateUp: mdiBoomGateUp, + mdiBoomGateUpOutline: mdiBoomGateUpOutline, + mdiBoombox: mdiBoombox, + mdiBoomerang: mdiBoomerang, + mdiBootstrap: mdiBootstrap, + mdiBorderAll: mdiBorderAll, + mdiBorderAllVariant: mdiBorderAllVariant, + mdiBorderBottom: mdiBorderBottom, + mdiBorderBottomVariant: mdiBorderBottomVariant, + mdiBorderColor: mdiBorderColor, + mdiBorderHorizontal: mdiBorderHorizontal, + mdiBorderInside: mdiBorderInside, + mdiBorderLeft: mdiBorderLeft, + mdiBorderLeftVariant: mdiBorderLeftVariant, + mdiBorderNone: mdiBorderNone, + mdiBorderNoneVariant: mdiBorderNoneVariant, + mdiBorderOutside: mdiBorderOutside, + mdiBorderRight: mdiBorderRight, + mdiBorderRightVariant: mdiBorderRightVariant, + mdiBorderStyle: mdiBorderStyle, + mdiBorderTop: mdiBorderTop, + mdiBorderTopVariant: mdiBorderTopVariant, + mdiBorderVertical: mdiBorderVertical, + mdiBottleSoda: mdiBottleSoda, + mdiBottleSodaClassic: mdiBottleSodaClassic, + mdiBottleSodaClassicOutline: mdiBottleSodaClassicOutline, + mdiBottleSodaOutline: mdiBottleSodaOutline, + mdiBottleTonic: mdiBottleTonic, + mdiBottleTonicOutline: mdiBottleTonicOutline, + mdiBottleTonicPlus: mdiBottleTonicPlus, + mdiBottleTonicPlusOutline: mdiBottleTonicPlusOutline, + mdiBottleTonicSkull: mdiBottleTonicSkull, + mdiBottleTonicSkullOutline: mdiBottleTonicSkullOutline, + mdiBottleWine: mdiBottleWine, + mdiBottleWineOutline: mdiBottleWineOutline, + mdiBowTie: mdiBowTie, + mdiBowl: mdiBowl, + mdiBowlMix: mdiBowlMix, + mdiBowlMixOutline: mdiBowlMixOutline, + mdiBowlOutline: mdiBowlOutline, + mdiBowling: mdiBowling, + mdiBox: mdiBox, + mdiBoxCutter: mdiBoxCutter, + mdiBoxCutterOff: mdiBoxCutterOff, + mdiBoxShadow: mdiBoxShadow, + mdiBoxingGlove: mdiBoxingGlove, + mdiBraille: mdiBraille, + mdiBrain: mdiBrain, + mdiBreadSlice: mdiBreadSlice, + mdiBreadSliceOutline: mdiBreadSliceOutline, + mdiBridge: mdiBridge, + mdiBriefcase: mdiBriefcase, + mdiBriefcaseAccount: mdiBriefcaseAccount, + mdiBriefcaseAccountOutline: mdiBriefcaseAccountOutline, + mdiBriefcaseCheck: mdiBriefcaseCheck, + mdiBriefcaseCheckOutline: mdiBriefcaseCheckOutline, + mdiBriefcaseClock: mdiBriefcaseClock, + mdiBriefcaseClockOutline: mdiBriefcaseClockOutline, + mdiBriefcaseDownload: mdiBriefcaseDownload, + mdiBriefcaseDownloadOutline: mdiBriefcaseDownloadOutline, + mdiBriefcaseEdit: mdiBriefcaseEdit, + mdiBriefcaseEditOutline: mdiBriefcaseEditOutline, + mdiBriefcaseMinus: mdiBriefcaseMinus, + mdiBriefcaseMinusOutline: mdiBriefcaseMinusOutline, + mdiBriefcaseOff: mdiBriefcaseOff, + mdiBriefcaseOffOutline: mdiBriefcaseOffOutline, + mdiBriefcaseOutline: mdiBriefcaseOutline, + mdiBriefcasePlus: mdiBriefcasePlus, + mdiBriefcasePlusOutline: mdiBriefcasePlusOutline, + mdiBriefcaseRemove: mdiBriefcaseRemove, + mdiBriefcaseRemoveOutline: mdiBriefcaseRemoveOutline, + mdiBriefcaseSearch: mdiBriefcaseSearch, + mdiBriefcaseSearchOutline: mdiBriefcaseSearchOutline, + mdiBriefcaseUpload: mdiBriefcaseUpload, + mdiBriefcaseUploadOutline: mdiBriefcaseUploadOutline, + mdiBriefcaseVariant: mdiBriefcaseVariant, + mdiBriefcaseVariantOff: mdiBriefcaseVariantOff, + mdiBriefcaseVariantOffOutline: mdiBriefcaseVariantOffOutline, + mdiBriefcaseVariantOutline: mdiBriefcaseVariantOutline, + mdiBrightness1: mdiBrightness1, + mdiBrightness2: mdiBrightness2, + mdiBrightness3: mdiBrightness3, + mdiBrightness4: mdiBrightness4, + mdiBrightness5: mdiBrightness5, + mdiBrightness6: mdiBrightness6, + mdiBrightness7: mdiBrightness7, + mdiBrightnessAuto: mdiBrightnessAuto, + mdiBrightnessPercent: mdiBrightnessPercent, + mdiBroadcast: mdiBroadcast, + mdiBroadcastOff: mdiBroadcastOff, + mdiBroom: mdiBroom, + mdiBrush: mdiBrush, + mdiBucket: mdiBucket, + mdiBucketOutline: mdiBucketOutline, + mdiBuddhism: mdiBuddhism, + mdiBuffer: mdiBuffer, + mdiBuffet: mdiBuffet, + mdiBug: mdiBug, + mdiBugCheck: mdiBugCheck, + mdiBugCheckOutline: mdiBugCheckOutline, + mdiBugOutline: mdiBugOutline, + mdiBugle: mdiBugle, + mdiBulldozer: mdiBulldozer, + mdiBullet: mdiBullet, + mdiBulletinBoard: mdiBulletinBoard, + mdiBullhorn: mdiBullhorn, + mdiBullhornOutline: mdiBullhornOutline, + mdiBullseye: mdiBullseye, + mdiBullseyeArrow: mdiBullseyeArrow, + mdiBulma: mdiBulma, + mdiBunkBed: mdiBunkBed, + mdiBunkBedOutline: mdiBunkBedOutline, + mdiBus: mdiBus, + mdiBusAlert: mdiBusAlert, + mdiBusArticulatedEnd: mdiBusArticulatedEnd, + mdiBusArticulatedFront: mdiBusArticulatedFront, + mdiBusClock: mdiBusClock, + mdiBusDoubleDecker: mdiBusDoubleDecker, + mdiBusMarker: mdiBusMarker, + mdiBusMultiple: mdiBusMultiple, + mdiBusSchool: mdiBusSchool, + mdiBusSide: mdiBusSide, + mdiBusStop: mdiBusStop, + mdiBusStopCovered: mdiBusStopCovered, + mdiBusStopUncovered: mdiBusStopUncovered, + mdiButterfly: mdiButterfly, + mdiButterflyOutline: mdiButterflyOutline, + mdiCableData: mdiCableData, + mdiCached: mdiCached, + mdiCactus: mdiCactus, + mdiCake: mdiCake, + mdiCakeLayered: mdiCakeLayered, + mdiCakeVariant: mdiCakeVariant, + mdiCalculator: mdiCalculator, + mdiCalculatorVariant: mdiCalculatorVariant, + mdiCalculatorVariantOutline: mdiCalculatorVariantOutline, + mdiCalendar: mdiCalendar, + mdiCalendarAccount: mdiCalendarAccount, + mdiCalendarAccountOutline: mdiCalendarAccountOutline, + mdiCalendarAlert: mdiCalendarAlert, + mdiCalendarArrowLeft: mdiCalendarArrowLeft, + mdiCalendarArrowRight: mdiCalendarArrowRight, + mdiCalendarBlank: mdiCalendarBlank, + mdiCalendarBlankMultiple: mdiCalendarBlankMultiple, + mdiCalendarBlankOutline: mdiCalendarBlankOutline, + mdiCalendarCheck: mdiCalendarCheck, + mdiCalendarCheckOutline: mdiCalendarCheckOutline, + mdiCalendarClock: mdiCalendarClock, + mdiCalendarClockOutline: mdiCalendarClockOutline, + mdiCalendarCursor: mdiCalendarCursor, + mdiCalendarEdit: mdiCalendarEdit, + mdiCalendarEnd: mdiCalendarEnd, + mdiCalendarExport: mdiCalendarExport, + mdiCalendarHeart: mdiCalendarHeart, + mdiCalendarImport: mdiCalendarImport, + mdiCalendarLock: mdiCalendarLock, + mdiCalendarLockOutline: mdiCalendarLockOutline, + mdiCalendarMinus: mdiCalendarMinus, + mdiCalendarMonth: mdiCalendarMonth, + mdiCalendarMonthOutline: mdiCalendarMonthOutline, + mdiCalendarMultiple: mdiCalendarMultiple, + mdiCalendarMultipleCheck: mdiCalendarMultipleCheck, + mdiCalendarMultiselect: mdiCalendarMultiselect, + mdiCalendarOutline: mdiCalendarOutline, + mdiCalendarPlus: mdiCalendarPlus, + mdiCalendarQuestion: mdiCalendarQuestion, + mdiCalendarRange: mdiCalendarRange, + mdiCalendarRangeOutline: mdiCalendarRangeOutline, + mdiCalendarRefresh: mdiCalendarRefresh, + mdiCalendarRefreshOutline: mdiCalendarRefreshOutline, + mdiCalendarRemove: mdiCalendarRemove, + mdiCalendarRemoveOutline: mdiCalendarRemoveOutline, + mdiCalendarSearch: mdiCalendarSearch, + mdiCalendarStar: mdiCalendarStar, + mdiCalendarStart: mdiCalendarStart, + mdiCalendarSync: mdiCalendarSync, + mdiCalendarSyncOutline: mdiCalendarSyncOutline, + mdiCalendarText: mdiCalendarText, + mdiCalendarTextOutline: mdiCalendarTextOutline, + mdiCalendarToday: mdiCalendarToday, + mdiCalendarWeek: mdiCalendarWeek, + mdiCalendarWeekBegin: mdiCalendarWeekBegin, + mdiCalendarWeekend: mdiCalendarWeekend, + mdiCalendarWeekendOutline: mdiCalendarWeekendOutline, + mdiCallMade: mdiCallMade, + mdiCallMerge: mdiCallMerge, + mdiCallMissed: mdiCallMissed, + mdiCallReceived: mdiCallReceived, + mdiCallSplit: mdiCallSplit, + mdiCamcorder: mdiCamcorder, + mdiCamcorderOff: mdiCamcorderOff, + mdiCamera: mdiCamera, + mdiCameraAccount: mdiCameraAccount, + mdiCameraBurst: mdiCameraBurst, + mdiCameraControl: mdiCameraControl, + mdiCameraEnhance: mdiCameraEnhance, + mdiCameraEnhanceOutline: mdiCameraEnhanceOutline, + mdiCameraFlip: mdiCameraFlip, + mdiCameraFlipOutline: mdiCameraFlipOutline, + mdiCameraFront: mdiCameraFront, + mdiCameraFrontVariant: mdiCameraFrontVariant, + mdiCameraGopro: mdiCameraGopro, + mdiCameraImage: mdiCameraImage, + mdiCameraIris: mdiCameraIris, + mdiCameraMeteringCenter: mdiCameraMeteringCenter, + mdiCameraMeteringMatrix: mdiCameraMeteringMatrix, + mdiCameraMeteringPartial: mdiCameraMeteringPartial, + mdiCameraMeteringSpot: mdiCameraMeteringSpot, + mdiCameraOff: mdiCameraOff, + mdiCameraOutline: mdiCameraOutline, + mdiCameraPartyMode: mdiCameraPartyMode, + mdiCameraPlus: mdiCameraPlus, + mdiCameraPlusOutline: mdiCameraPlusOutline, + mdiCameraRear: mdiCameraRear, + mdiCameraRearVariant: mdiCameraRearVariant, + mdiCameraRetake: mdiCameraRetake, + mdiCameraRetakeOutline: mdiCameraRetakeOutline, + mdiCameraSwitch: mdiCameraSwitch, + mdiCameraSwitchOutline: mdiCameraSwitchOutline, + mdiCameraTimer: mdiCameraTimer, + mdiCameraWireless: mdiCameraWireless, + mdiCameraWirelessOutline: mdiCameraWirelessOutline, + mdiCampfire: mdiCampfire, + mdiCancel: mdiCancel, + mdiCandle: mdiCandle, + mdiCandycane: mdiCandycane, + mdiCannabis: mdiCannabis, + mdiCannabisOff: mdiCannabisOff, + mdiCapsLock: mdiCapsLock, + mdiCar: mdiCar, + mdiCar2Plus: mdiCar2Plus, + mdiCar3Plus: mdiCar3Plus, + mdiCarArrowLeft: mdiCarArrowLeft, + mdiCarArrowRight: mdiCarArrowRight, + mdiCarBack: mdiCarBack, + mdiCarBattery: mdiCarBattery, + mdiCarBrakeAbs: mdiCarBrakeAbs, + mdiCarBrakeAlert: mdiCarBrakeAlert, + mdiCarBrakeHold: mdiCarBrakeHold, + mdiCarBrakeParking: mdiCarBrakeParking, + mdiCarBrakeRetarder: mdiCarBrakeRetarder, + mdiCarChildSeat: mdiCarChildSeat, + mdiCarClutch: mdiCarClutch, + mdiCarCog: mdiCarCog, + mdiCarConnected: mdiCarConnected, + mdiCarConvertible: mdiCarConvertible, + mdiCarCoolantLevel: mdiCarCoolantLevel, + mdiCarCruiseControl: mdiCarCruiseControl, + mdiCarDefrostFront: mdiCarDefrostFront, + mdiCarDefrostRear: mdiCarDefrostRear, + mdiCarDoor: mdiCarDoor, + mdiCarDoorLock: mdiCarDoorLock, + mdiCarElectric: mdiCarElectric, + mdiCarElectricOutline: mdiCarElectricOutline, + mdiCarEmergency: mdiCarEmergency, + mdiCarEsp: mdiCarEsp, + mdiCarEstate: mdiCarEstate, + mdiCarHatchback: mdiCarHatchback, + mdiCarInfo: mdiCarInfo, + mdiCarKey: mdiCarKey, + mdiCarLiftedPickup: mdiCarLiftedPickup, + mdiCarLightDimmed: mdiCarLightDimmed, + mdiCarLightFog: mdiCarLightFog, + mdiCarLightHigh: mdiCarLightHigh, + mdiCarLimousine: mdiCarLimousine, + mdiCarMultiple: mdiCarMultiple, + mdiCarOff: mdiCarOff, + mdiCarOutline: mdiCarOutline, + mdiCarParkingLights: mdiCarParkingLights, + mdiCarPickup: mdiCarPickup, + mdiCarSeat: mdiCarSeat, + mdiCarSeatCooler: mdiCarSeatCooler, + mdiCarSeatHeater: mdiCarSeatHeater, + mdiCarSettings: mdiCarSettings, + mdiCarShiftPattern: mdiCarShiftPattern, + mdiCarSide: mdiCarSide, + mdiCarSports: mdiCarSports, + mdiCarTireAlert: mdiCarTireAlert, + mdiCarTractionControl: mdiCarTractionControl, + mdiCarTurbocharger: mdiCarTurbocharger, + mdiCarWash: mdiCarWash, + mdiCarWindshield: mdiCarWindshield, + mdiCarWindshieldOutline: mdiCarWindshieldOutline, + mdiCarabiner: mdiCarabiner, + mdiCaravan: mdiCaravan, + mdiCard: mdiCard, + mdiCardAccountDetails: mdiCardAccountDetails, + mdiCardAccountDetailsOutline: mdiCardAccountDetailsOutline, + mdiCardAccountDetailsStar: mdiCardAccountDetailsStar, + mdiCardAccountDetailsStarOutline: mdiCardAccountDetailsStarOutline, + mdiCardAccountMail: mdiCardAccountMail, + mdiCardAccountMailOutline: mdiCardAccountMailOutline, + mdiCardAccountPhone: mdiCardAccountPhone, + mdiCardAccountPhoneOutline: mdiCardAccountPhoneOutline, + mdiCardBulleted: mdiCardBulleted, + mdiCardBulletedOff: mdiCardBulletedOff, + mdiCardBulletedOffOutline: mdiCardBulletedOffOutline, + mdiCardBulletedOutline: mdiCardBulletedOutline, + mdiCardBulletedSettings: mdiCardBulletedSettings, + mdiCardBulletedSettingsOutline: mdiCardBulletedSettingsOutline, + mdiCardMinus: mdiCardMinus, + mdiCardMinusOutline: mdiCardMinusOutline, + mdiCardOff: mdiCardOff, + mdiCardOffOutline: mdiCardOffOutline, + mdiCardOutline: mdiCardOutline, + mdiCardPlus: mdiCardPlus, + mdiCardPlusOutline: mdiCardPlusOutline, + mdiCardRemove: mdiCardRemove, + mdiCardRemoveOutline: mdiCardRemoveOutline, + mdiCardSearch: mdiCardSearch, + mdiCardSearchOutline: mdiCardSearchOutline, + mdiCardText: mdiCardText, + mdiCardTextOutline: mdiCardTextOutline, + mdiCards: mdiCards, + mdiCardsClub: mdiCardsClub, + mdiCardsDiamond: mdiCardsDiamond, + mdiCardsDiamondOutline: mdiCardsDiamondOutline, + mdiCardsHeart: mdiCardsHeart, + mdiCardsOutline: mdiCardsOutline, + mdiCardsPlayingOutline: mdiCardsPlayingOutline, + mdiCardsSpade: mdiCardsSpade, + mdiCardsVariant: mdiCardsVariant, + mdiCarrot: mdiCarrot, + mdiCart: mdiCart, + mdiCartArrowDown: mdiCartArrowDown, + mdiCartArrowRight: mdiCartArrowRight, + mdiCartArrowUp: mdiCartArrowUp, + mdiCartCheck: mdiCartCheck, + mdiCartMinus: mdiCartMinus, + mdiCartOff: mdiCartOff, + mdiCartOutline: mdiCartOutline, + mdiCartPlus: mdiCartPlus, + mdiCartRemove: mdiCartRemove, + mdiCartVariant: mdiCartVariant, + mdiCaseSensitiveAlt: mdiCaseSensitiveAlt, + mdiCash: mdiCash, + mdiCash100: mdiCash100, + mdiCashCheck: mdiCashCheck, + mdiCashLock: mdiCashLock, + mdiCashLockOpen: mdiCashLockOpen, + mdiCashMarker: mdiCashMarker, + mdiCashMinus: mdiCashMinus, + mdiCashMultiple: mdiCashMultiple, + mdiCashPlus: mdiCashPlus, + mdiCashRefund: mdiCashRefund, + mdiCashRegister: mdiCashRegister, + mdiCashRemove: mdiCashRemove, + mdiCashUsd: mdiCashUsd, + mdiCashUsdOutline: mdiCashUsdOutline, + mdiCassette: mdiCassette, + mdiCast: mdiCast, + mdiCastAudio: mdiCastAudio, + mdiCastConnected: mdiCastConnected, + mdiCastEducation: mdiCastEducation, + mdiCastOff: mdiCastOff, + mdiCastle: mdiCastle, + mdiCat: mdiCat, + mdiCctv: mdiCctv, + mdiCeilingLight: mdiCeilingLight, + mdiCellphone: mdiCellphone, + mdiCellphoneAndroid: mdiCellphoneAndroid, + mdiCellphoneArrowDown: mdiCellphoneArrowDown, + mdiCellphoneBasic: mdiCellphoneBasic, + mdiCellphoneCharging: mdiCellphoneCharging, + mdiCellphoneCog: mdiCellphoneCog, + mdiCellphoneDock: mdiCellphoneDock, + mdiCellphoneErase: mdiCellphoneErase, + mdiCellphoneInformation: mdiCellphoneInformation, + mdiCellphoneIphone: mdiCellphoneIphone, + mdiCellphoneKey: mdiCellphoneKey, + mdiCellphoneLink: mdiCellphoneLink, + mdiCellphoneLinkOff: mdiCellphoneLinkOff, + mdiCellphoneLock: mdiCellphoneLock, + mdiCellphoneMessage: mdiCellphoneMessage, + mdiCellphoneMessageOff: mdiCellphoneMessageOff, + mdiCellphoneNfc: mdiCellphoneNfc, + mdiCellphoneNfcOff: mdiCellphoneNfcOff, + mdiCellphoneOff: mdiCellphoneOff, + mdiCellphonePlay: mdiCellphonePlay, + mdiCellphoneScreenshot: mdiCellphoneScreenshot, + mdiCellphoneSettings: mdiCellphoneSettings, + mdiCellphoneSound: mdiCellphoneSound, + mdiCellphoneText: mdiCellphoneText, + mdiCellphoneWireless: mdiCellphoneWireless, + mdiCelticCross: mdiCelticCross, + mdiCentos: mdiCentos, + mdiCertificate: mdiCertificate, + mdiCertificateOutline: mdiCertificateOutline, + mdiChairRolling: mdiChairRolling, + mdiChairSchool: mdiChairSchool, + mdiCharity: mdiCharity, + mdiChartArc: mdiChartArc, + mdiChartAreaspline: mdiChartAreaspline, + mdiChartAreasplineVariant: mdiChartAreasplineVariant, + mdiChartBar: mdiChartBar, + mdiChartBarStacked: mdiChartBarStacked, + mdiChartBellCurve: mdiChartBellCurve, + mdiChartBellCurveCumulative: mdiChartBellCurveCumulative, + mdiChartBox: mdiChartBox, + mdiChartBoxOutline: mdiChartBoxOutline, + mdiChartBoxPlusOutline: mdiChartBoxPlusOutline, + mdiChartBubble: mdiChartBubble, + mdiChartDonut: mdiChartDonut, + mdiChartDonutVariant: mdiChartDonutVariant, + mdiChartGantt: mdiChartGantt, + mdiChartHistogram: mdiChartHistogram, + mdiChartLine: mdiChartLine, + mdiChartLineStacked: mdiChartLineStacked, + mdiChartLineVariant: mdiChartLineVariant, + mdiChartMultiline: mdiChartMultiline, + mdiChartMultiple: mdiChartMultiple, + mdiChartPie: mdiChartPie, + mdiChartPpf: mdiChartPpf, + mdiChartSankey: mdiChartSankey, + mdiChartSankeyVariant: mdiChartSankeyVariant, + mdiChartScatterPlot: mdiChartScatterPlot, + mdiChartScatterPlotHexbin: mdiChartScatterPlotHexbin, + mdiChartTimeline: mdiChartTimeline, + mdiChartTimelineVariant: mdiChartTimelineVariant, + mdiChartTimelineVariantShimmer: mdiChartTimelineVariantShimmer, + mdiChartTree: mdiChartTree, + mdiChat: mdiChat, + mdiChatAlert: mdiChatAlert, + mdiChatAlertOutline: mdiChatAlertOutline, + mdiChatMinus: mdiChatMinus, + mdiChatMinusOutline: mdiChatMinusOutline, + mdiChatOutline: mdiChatOutline, + mdiChatPlus: mdiChatPlus, + mdiChatPlusOutline: mdiChatPlusOutline, + mdiChatProcessing: mdiChatProcessing, + mdiChatProcessingOutline: mdiChatProcessingOutline, + mdiChatQuestion: mdiChatQuestion, + mdiChatQuestionOutline: mdiChatQuestionOutline, + mdiChatRemove: mdiChatRemove, + mdiChatRemoveOutline: mdiChatRemoveOutline, + mdiChatSleep: mdiChatSleep, + mdiChatSleepOutline: mdiChatSleepOutline, + mdiCheck: mdiCheck, + mdiCheckAll: mdiCheckAll, + mdiCheckBold: mdiCheckBold, + mdiCheckBoxMultipleOutline: mdiCheckBoxMultipleOutline, + mdiCheckBoxOutline: mdiCheckBoxOutline, + mdiCheckCircle: mdiCheckCircle, + mdiCheckCircleOutline: mdiCheckCircleOutline, + mdiCheckDecagram: mdiCheckDecagram, + mdiCheckDecagramOutline: mdiCheckDecagramOutline, + mdiCheckNetwork: mdiCheckNetwork, + mdiCheckNetworkOutline: mdiCheckNetworkOutline, + mdiCheckOutline: mdiCheckOutline, + mdiCheckUnderline: mdiCheckUnderline, + mdiCheckUnderlineCircle: mdiCheckUnderlineCircle, + mdiCheckUnderlineCircleOutline: mdiCheckUnderlineCircleOutline, + mdiCheckbook: mdiCheckbook, + mdiCheckboxBlank: mdiCheckboxBlank, + mdiCheckboxBlankCircle: mdiCheckboxBlankCircle, + mdiCheckboxBlankCircleOutline: mdiCheckboxBlankCircleOutline, + mdiCheckboxBlankOff: mdiCheckboxBlankOff, + mdiCheckboxBlankOffOutline: mdiCheckboxBlankOffOutline, + mdiCheckboxBlankOutline: mdiCheckboxBlankOutline, + mdiCheckboxIntermediate: mdiCheckboxIntermediate, + mdiCheckboxMarked: mdiCheckboxMarked, + mdiCheckboxMarkedCircle: mdiCheckboxMarkedCircle, + mdiCheckboxMarkedCircleOutline: mdiCheckboxMarkedCircleOutline, + mdiCheckboxMarkedOutline: mdiCheckboxMarkedOutline, + mdiCheckboxMultipleBlank: mdiCheckboxMultipleBlank, + mdiCheckboxMultipleBlankCircle: mdiCheckboxMultipleBlankCircle, + mdiCheckboxMultipleBlankCircleOutline: mdiCheckboxMultipleBlankCircleOutline, + mdiCheckboxMultipleBlankOutline: mdiCheckboxMultipleBlankOutline, + mdiCheckboxMultipleMarked: mdiCheckboxMultipleMarked, + mdiCheckboxMultipleMarkedCircle: mdiCheckboxMultipleMarkedCircle, + mdiCheckboxMultipleMarkedCircleOutline: mdiCheckboxMultipleMarkedCircleOutline, + mdiCheckboxMultipleMarkedOutline: mdiCheckboxMultipleMarkedOutline, + mdiCheckerboard: mdiCheckerboard, + mdiCheckerboardMinus: mdiCheckerboardMinus, + mdiCheckerboardPlus: mdiCheckerboardPlus, + mdiCheckerboardRemove: mdiCheckerboardRemove, + mdiCheese: mdiCheese, + mdiCheeseOff: mdiCheeseOff, + mdiChefHat: mdiChefHat, + mdiChemicalWeapon: mdiChemicalWeapon, + mdiChessBishop: mdiChessBishop, + mdiChessKing: mdiChessKing, + mdiChessKnight: mdiChessKnight, + mdiChessPawn: mdiChessPawn, + mdiChessQueen: mdiChessQueen, + mdiChessRook: mdiChessRook, + mdiChevronDoubleDown: mdiChevronDoubleDown, + mdiChevronDoubleLeft: mdiChevronDoubleLeft, + mdiChevronDoubleRight: mdiChevronDoubleRight, + mdiChevronDoubleUp: mdiChevronDoubleUp, + mdiChevronDown: mdiChevronDown, + mdiChevronDownBox: mdiChevronDownBox, + mdiChevronDownBoxOutline: mdiChevronDownBoxOutline, + mdiChevronDownCircle: mdiChevronDownCircle, + mdiChevronDownCircleOutline: mdiChevronDownCircleOutline, + mdiChevronLeft: mdiChevronLeft, + mdiChevronLeftBox: mdiChevronLeftBox, + mdiChevronLeftBoxOutline: mdiChevronLeftBoxOutline, + mdiChevronLeftCircle: mdiChevronLeftCircle, + mdiChevronLeftCircleOutline: mdiChevronLeftCircleOutline, + mdiChevronRight: mdiChevronRight, + mdiChevronRightBox: mdiChevronRightBox, + mdiChevronRightBoxOutline: mdiChevronRightBoxOutline, + mdiChevronRightCircle: mdiChevronRightCircle, + mdiChevronRightCircleOutline: mdiChevronRightCircleOutline, + mdiChevronTripleDown: mdiChevronTripleDown, + mdiChevronTripleLeft: mdiChevronTripleLeft, + mdiChevronTripleRight: mdiChevronTripleRight, + mdiChevronTripleUp: mdiChevronTripleUp, + mdiChevronUp: mdiChevronUp, + mdiChevronUpBox: mdiChevronUpBox, + mdiChevronUpBoxOutline: mdiChevronUpBoxOutline, + mdiChevronUpCircle: mdiChevronUpCircle, + mdiChevronUpCircleOutline: mdiChevronUpCircleOutline, + mdiChiliHot: mdiChiliHot, + mdiChiliMedium: mdiChiliMedium, + mdiChiliMild: mdiChiliMild, + mdiChiliOff: mdiChiliOff, + mdiChip: mdiChip, + mdiChristianity: mdiChristianity, + mdiChristianityOutline: mdiChristianityOutline, + mdiChurch: mdiChurch, + mdiCigar: mdiCigar, + mdiCigarOff: mdiCigarOff, + mdiCircle: mdiCircle, + mdiCircleBox: mdiCircleBox, + mdiCircleBoxOutline: mdiCircleBoxOutline, + mdiCircleDouble: mdiCircleDouble, + mdiCircleEditOutline: mdiCircleEditOutline, + mdiCircleExpand: mdiCircleExpand, + mdiCircleHalf: mdiCircleHalf, + mdiCircleHalfFull: mdiCircleHalfFull, + mdiCircleMedium: mdiCircleMedium, + mdiCircleMultiple: mdiCircleMultiple, + mdiCircleMultipleOutline: mdiCircleMultipleOutline, + mdiCircleOffOutline: mdiCircleOffOutline, + mdiCircleOutline: mdiCircleOutline, + mdiCircleSlice1: mdiCircleSlice1, + mdiCircleSlice2: mdiCircleSlice2, + mdiCircleSlice3: mdiCircleSlice3, + mdiCircleSlice4: mdiCircleSlice4, + mdiCircleSlice5: mdiCircleSlice5, + mdiCircleSlice6: mdiCircleSlice6, + mdiCircleSlice7: mdiCircleSlice7, + mdiCircleSlice8: mdiCircleSlice8, + mdiCircleSmall: mdiCircleSmall, + mdiCircularSaw: mdiCircularSaw, + mdiCity: mdiCity, + mdiCityVariant: mdiCityVariant, + mdiCityVariantOutline: mdiCityVariantOutline, + mdiClipboard: mdiClipboard, + mdiClipboardAccount: mdiClipboardAccount, + mdiClipboardAccountOutline: mdiClipboardAccountOutline, + mdiClipboardAlert: mdiClipboardAlert, + mdiClipboardAlertOutline: mdiClipboardAlertOutline, + mdiClipboardArrowDown: mdiClipboardArrowDown, + mdiClipboardArrowDownOutline: mdiClipboardArrowDownOutline, + mdiClipboardArrowLeft: mdiClipboardArrowLeft, + mdiClipboardArrowLeftOutline: mdiClipboardArrowLeftOutline, + mdiClipboardArrowRight: mdiClipboardArrowRight, + mdiClipboardArrowRightOutline: mdiClipboardArrowRightOutline, + mdiClipboardArrowUp: mdiClipboardArrowUp, + mdiClipboardArrowUpOutline: mdiClipboardArrowUpOutline, + mdiClipboardCheck: mdiClipboardCheck, + mdiClipboardCheckMultiple: mdiClipboardCheckMultiple, + mdiClipboardCheckMultipleOutline: mdiClipboardCheckMultipleOutline, + mdiClipboardCheckOutline: mdiClipboardCheckOutline, + mdiClipboardClock: mdiClipboardClock, + mdiClipboardClockOutline: mdiClipboardClockOutline, + mdiClipboardEdit: mdiClipboardEdit, + mdiClipboardEditOutline: mdiClipboardEditOutline, + mdiClipboardFile: mdiClipboardFile, + mdiClipboardFileOutline: mdiClipboardFileOutline, + mdiClipboardFlow: mdiClipboardFlow, + mdiClipboardFlowOutline: mdiClipboardFlowOutline, + mdiClipboardList: mdiClipboardList, + mdiClipboardListOutline: mdiClipboardListOutline, + mdiClipboardMinus: mdiClipboardMinus, + mdiClipboardMinusOutline: mdiClipboardMinusOutline, + mdiClipboardMultiple: mdiClipboardMultiple, + mdiClipboardMultipleOutline: mdiClipboardMultipleOutline, + mdiClipboardOff: mdiClipboardOff, + mdiClipboardOffOutline: mdiClipboardOffOutline, + mdiClipboardOutline: mdiClipboardOutline, + mdiClipboardPlay: mdiClipboardPlay, + mdiClipboardPlayMultiple: mdiClipboardPlayMultiple, + mdiClipboardPlayMultipleOutline: mdiClipboardPlayMultipleOutline, + mdiClipboardPlayOutline: mdiClipboardPlayOutline, + mdiClipboardPlus: mdiClipboardPlus, + mdiClipboardPlusOutline: mdiClipboardPlusOutline, + mdiClipboardPulse: mdiClipboardPulse, + mdiClipboardPulseOutline: mdiClipboardPulseOutline, + mdiClipboardRemove: mdiClipboardRemove, + mdiClipboardRemoveOutline: mdiClipboardRemoveOutline, + mdiClipboardSearch: mdiClipboardSearch, + mdiClipboardSearchOutline: mdiClipboardSearchOutline, + mdiClipboardText: mdiClipboardText, + mdiClipboardTextMultiple: mdiClipboardTextMultiple, + mdiClipboardTextMultipleOutline: mdiClipboardTextMultipleOutline, + mdiClipboardTextOff: mdiClipboardTextOff, + mdiClipboardTextOffOutline: mdiClipboardTextOffOutline, + mdiClipboardTextOutline: mdiClipboardTextOutline, + mdiClipboardTextPlay: mdiClipboardTextPlay, + mdiClipboardTextPlayOutline: mdiClipboardTextPlayOutline, + mdiClipboardTextSearch: mdiClipboardTextSearch, + mdiClipboardTextSearchOutline: mdiClipboardTextSearchOutline, + mdiClippy: mdiClippy, + mdiClock: mdiClock, + mdiClockAlert: mdiClockAlert, + mdiClockAlertOutline: mdiClockAlertOutline, + mdiClockCheck: mdiClockCheck, + mdiClockCheckOutline: mdiClockCheckOutline, + mdiClockDigital: mdiClockDigital, + mdiClockEnd: mdiClockEnd, + mdiClockFast: mdiClockFast, + mdiClockIn: mdiClockIn, + mdiClockOut: mdiClockOut, + mdiClockOutline: mdiClockOutline, + mdiClockStart: mdiClockStart, + mdiClockTimeEight: mdiClockTimeEight, + mdiClockTimeEightOutline: mdiClockTimeEightOutline, + mdiClockTimeEleven: mdiClockTimeEleven, + mdiClockTimeElevenOutline: mdiClockTimeElevenOutline, + mdiClockTimeFive: mdiClockTimeFive, + mdiClockTimeFiveOutline: mdiClockTimeFiveOutline, + mdiClockTimeFour: mdiClockTimeFour, + mdiClockTimeFourOutline: mdiClockTimeFourOutline, + mdiClockTimeNine: mdiClockTimeNine, + mdiClockTimeNineOutline: mdiClockTimeNineOutline, + mdiClockTimeOne: mdiClockTimeOne, + mdiClockTimeOneOutline: mdiClockTimeOneOutline, + mdiClockTimeSeven: mdiClockTimeSeven, + mdiClockTimeSevenOutline: mdiClockTimeSevenOutline, + mdiClockTimeSix: mdiClockTimeSix, + mdiClockTimeSixOutline: mdiClockTimeSixOutline, + mdiClockTimeTen: mdiClockTimeTen, + mdiClockTimeTenOutline: mdiClockTimeTenOutline, + mdiClockTimeThree: mdiClockTimeThree, + mdiClockTimeThreeOutline: mdiClockTimeThreeOutline, + mdiClockTimeTwelve: mdiClockTimeTwelve, + mdiClockTimeTwelveOutline: mdiClockTimeTwelveOutline, + mdiClockTimeTwo: mdiClockTimeTwo, + mdiClockTimeTwoOutline: mdiClockTimeTwoOutline, + mdiClose: mdiClose, + mdiCloseBox: mdiCloseBox, + mdiCloseBoxMultiple: mdiCloseBoxMultiple, + mdiCloseBoxMultipleOutline: mdiCloseBoxMultipleOutline, + mdiCloseBoxOutline: mdiCloseBoxOutline, + mdiCloseCircle: mdiCloseCircle, + mdiCloseCircleMultiple: mdiCloseCircleMultiple, + mdiCloseCircleMultipleOutline: mdiCloseCircleMultipleOutline, + mdiCloseCircleOutline: mdiCloseCircleOutline, + mdiCloseNetwork: mdiCloseNetwork, + mdiCloseNetworkOutline: mdiCloseNetworkOutline, + mdiCloseOctagon: mdiCloseOctagon, + mdiCloseOctagonOutline: mdiCloseOctagonOutline, + mdiCloseOutline: mdiCloseOutline, + mdiCloseThick: mdiCloseThick, + mdiClosedCaption: mdiClosedCaption, + mdiClosedCaptionOutline: mdiClosedCaptionOutline, + mdiCloud: mdiCloud, + mdiCloudAlert: mdiCloudAlert, + mdiCloudBraces: mdiCloudBraces, + mdiCloudCheck: mdiCloudCheck, + mdiCloudCheckOutline: mdiCloudCheckOutline, + mdiCloudCircle: mdiCloudCircle, + mdiCloudDownload: mdiCloudDownload, + mdiCloudDownloadOutline: mdiCloudDownloadOutline, + mdiCloudLock: mdiCloudLock, + mdiCloudLockOutline: mdiCloudLockOutline, + mdiCloudOffOutline: mdiCloudOffOutline, + mdiCloudOutline: mdiCloudOutline, + mdiCloudPrint: mdiCloudPrint, + mdiCloudPrintOutline: mdiCloudPrintOutline, + mdiCloudQuestion: mdiCloudQuestion, + mdiCloudRefresh: mdiCloudRefresh, + mdiCloudSearch: mdiCloudSearch, + mdiCloudSearchOutline: mdiCloudSearchOutline, + mdiCloudSync: mdiCloudSync, + mdiCloudSyncOutline: mdiCloudSyncOutline, + mdiCloudTags: mdiCloudTags, + mdiCloudUpload: mdiCloudUpload, + mdiCloudUploadOutline: mdiCloudUploadOutline, + mdiClover: mdiClover, + mdiCoachLamp: mdiCoachLamp, + mdiCoatRack: mdiCoatRack, + mdiCodeArray: mdiCodeArray, + mdiCodeBraces: mdiCodeBraces, + mdiCodeBracesBox: mdiCodeBracesBox, + mdiCodeBrackets: mdiCodeBrackets, + mdiCodeEqual: mdiCodeEqual, + mdiCodeGreaterThan: mdiCodeGreaterThan, + mdiCodeGreaterThanOrEqual: mdiCodeGreaterThanOrEqual, + mdiCodeJson: mdiCodeJson, + mdiCodeLessThan: mdiCodeLessThan, + mdiCodeLessThanOrEqual: mdiCodeLessThanOrEqual, + mdiCodeNotEqual: mdiCodeNotEqual, + mdiCodeNotEqualVariant: mdiCodeNotEqualVariant, + mdiCodeParentheses: mdiCodeParentheses, + mdiCodeParenthesesBox: mdiCodeParenthesesBox, + mdiCodeString: mdiCodeString, + mdiCodeTags: mdiCodeTags, + mdiCodeTagsCheck: mdiCodeTagsCheck, + mdiCodepen: mdiCodepen, + mdiCoffee: mdiCoffee, + mdiCoffeeMaker: mdiCoffeeMaker, + mdiCoffeeOff: mdiCoffeeOff, + mdiCoffeeOffOutline: mdiCoffeeOffOutline, + mdiCoffeeOutline: mdiCoffeeOutline, + mdiCoffeeToGo: mdiCoffeeToGo, + mdiCoffeeToGoOutline: mdiCoffeeToGoOutline, + mdiCoffin: mdiCoffin, + mdiCog: mdiCog, + mdiCogBox: mdiCogBox, + mdiCogClockwise: mdiCogClockwise, + mdiCogCounterclockwise: mdiCogCounterclockwise, + mdiCogOff: mdiCogOff, + mdiCogOffOutline: mdiCogOffOutline, + mdiCogOutline: mdiCogOutline, + mdiCogRefresh: mdiCogRefresh, + mdiCogRefreshOutline: mdiCogRefreshOutline, + mdiCogSync: mdiCogSync, + mdiCogSyncOutline: mdiCogSyncOutline, + mdiCogTransfer: mdiCogTransfer, + mdiCogTransferOutline: mdiCogTransferOutline, + mdiCogs: mdiCogs, + mdiCollage: mdiCollage, + mdiCollapseAll: mdiCollapseAll, + mdiCollapseAllOutline: mdiCollapseAllOutline, + mdiColorHelper: mdiColorHelper, + mdiComma: mdiComma, + mdiCommaBox: mdiCommaBox, + mdiCommaBoxOutline: mdiCommaBoxOutline, + mdiCommaCircle: mdiCommaCircle, + mdiCommaCircleOutline: mdiCommaCircleOutline, + mdiComment: mdiComment, + mdiCommentAccount: mdiCommentAccount, + mdiCommentAccountOutline: mdiCommentAccountOutline, + mdiCommentAlert: mdiCommentAlert, + mdiCommentAlertOutline: mdiCommentAlertOutline, + mdiCommentArrowLeft: mdiCommentArrowLeft, + mdiCommentArrowLeftOutline: mdiCommentArrowLeftOutline, + mdiCommentArrowRight: mdiCommentArrowRight, + mdiCommentArrowRightOutline: mdiCommentArrowRightOutline, + mdiCommentBookmark: mdiCommentBookmark, + mdiCommentBookmarkOutline: mdiCommentBookmarkOutline, + mdiCommentCheck: mdiCommentCheck, + mdiCommentCheckOutline: mdiCommentCheckOutline, + mdiCommentEdit: mdiCommentEdit, + mdiCommentEditOutline: mdiCommentEditOutline, + mdiCommentEye: mdiCommentEye, + mdiCommentEyeOutline: mdiCommentEyeOutline, + mdiCommentFlash: mdiCommentFlash, + mdiCommentFlashOutline: mdiCommentFlashOutline, + mdiCommentMinus: mdiCommentMinus, + mdiCommentMinusOutline: mdiCommentMinusOutline, + mdiCommentMultiple: mdiCommentMultiple, + mdiCommentMultipleOutline: mdiCommentMultipleOutline, + mdiCommentOff: mdiCommentOff, + mdiCommentOffOutline: mdiCommentOffOutline, + mdiCommentOutline: mdiCommentOutline, + mdiCommentPlus: mdiCommentPlus, + mdiCommentPlusOutline: mdiCommentPlusOutline, + mdiCommentProcessing: mdiCommentProcessing, + mdiCommentProcessingOutline: mdiCommentProcessingOutline, + mdiCommentQuestion: mdiCommentQuestion, + mdiCommentQuestionOutline: mdiCommentQuestionOutline, + mdiCommentQuote: mdiCommentQuote, + mdiCommentQuoteOutline: mdiCommentQuoteOutline, + mdiCommentRemove: mdiCommentRemove, + mdiCommentRemoveOutline: mdiCommentRemoveOutline, + mdiCommentSearch: mdiCommentSearch, + mdiCommentSearchOutline: mdiCommentSearchOutline, + mdiCommentText: mdiCommentText, + mdiCommentTextMultiple: mdiCommentTextMultiple, + mdiCommentTextMultipleOutline: mdiCommentTextMultipleOutline, + mdiCommentTextOutline: mdiCommentTextOutline, + mdiCompare: mdiCompare, + mdiCompareHorizontal: mdiCompareHorizontal, + mdiCompareVertical: mdiCompareVertical, + mdiCompass: mdiCompass, + mdiCompassOff: mdiCompassOff, + mdiCompassOffOutline: mdiCompassOffOutline, + mdiCompassOutline: mdiCompassOutline, + mdiCompassRose: mdiCompassRose, + mdiConcourseCi: mdiConcourseCi, + mdiConnection: mdiConnection, + mdiConsole: mdiConsole, + mdiConsoleLine: mdiConsoleLine, + mdiConsoleNetwork: mdiConsoleNetwork, + mdiConsoleNetworkOutline: mdiConsoleNetworkOutline, + mdiConsolidate: mdiConsolidate, + mdiContactlessPayment: mdiContactlessPayment, + mdiContactlessPaymentCircle: mdiContactlessPaymentCircle, + mdiContactlessPaymentCircleOutline: mdiContactlessPaymentCircleOutline, + mdiContacts: mdiContacts, + mdiContactsOutline: mdiContactsOutline, + mdiContain: mdiContain, + mdiContainEnd: mdiContainEnd, + mdiContainStart: mdiContainStart, + mdiContentCopy: mdiContentCopy, + mdiContentCut: mdiContentCut, + mdiContentDuplicate: mdiContentDuplicate, + mdiContentPaste: mdiContentPaste, + mdiContentSave: mdiContentSave, + mdiContentSaveAlert: mdiContentSaveAlert, + mdiContentSaveAlertOutline: mdiContentSaveAlertOutline, + mdiContentSaveAll: mdiContentSaveAll, + mdiContentSaveAllOutline: mdiContentSaveAllOutline, + mdiContentSaveCog: mdiContentSaveCog, + mdiContentSaveCogOutline: mdiContentSaveCogOutline, + mdiContentSaveEdit: mdiContentSaveEdit, + mdiContentSaveEditOutline: mdiContentSaveEditOutline, + mdiContentSaveMove: mdiContentSaveMove, + mdiContentSaveMoveOutline: mdiContentSaveMoveOutline, + mdiContentSaveOff: mdiContentSaveOff, + mdiContentSaveOffOutline: mdiContentSaveOffOutline, + mdiContentSaveOutline: mdiContentSaveOutline, + mdiContentSaveSettings: mdiContentSaveSettings, + mdiContentSaveSettingsOutline: mdiContentSaveSettingsOutline, + mdiContrast: mdiContrast, + mdiContrastBox: mdiContrastBox, + mdiContrastCircle: mdiContrastCircle, + mdiControllerClassic: mdiControllerClassic, + mdiControllerClassicOutline: mdiControllerClassicOutline, + mdiCookie: mdiCookie, + mdiCookieAlert: mdiCookieAlert, + mdiCookieAlertOutline: mdiCookieAlertOutline, + mdiCookieCheck: mdiCookieCheck, + mdiCookieCheckOutline: mdiCookieCheckOutline, + mdiCookieClock: mdiCookieClock, + mdiCookieClockOutline: mdiCookieClockOutline, + mdiCookieCog: mdiCookieCog, + mdiCookieCogOutline: mdiCookieCogOutline, + mdiCookieEdit: mdiCookieEdit, + mdiCookieEditOutline: mdiCookieEditOutline, + mdiCookieLock: mdiCookieLock, + mdiCookieLockOutline: mdiCookieLockOutline, + mdiCookieMinus: mdiCookieMinus, + mdiCookieMinusOutline: mdiCookieMinusOutline, + mdiCookieOff: mdiCookieOff, + mdiCookieOffOutline: mdiCookieOffOutline, + mdiCookieOutline: mdiCookieOutline, + mdiCookiePlus: mdiCookiePlus, + mdiCookiePlusOutline: mdiCookiePlusOutline, + mdiCookieRefresh: mdiCookieRefresh, + mdiCookieRefreshOutline: mdiCookieRefreshOutline, + mdiCookieRemove: mdiCookieRemove, + mdiCookieRemoveOutline: mdiCookieRemoveOutline, + mdiCookieSettings: mdiCookieSettings, + mdiCookieSettingsOutline: mdiCookieSettingsOutline, + mdiCoolantTemperature: mdiCoolantTemperature, + mdiCopyright: mdiCopyright, + mdiCordova: mdiCordova, + mdiCorn: mdiCorn, + mdiCornOff: mdiCornOff, + mdiCosineWave: mdiCosineWave, + mdiCounter: mdiCounter, + mdiCow: mdiCow, + mdiCpu32Bit: mdiCpu32Bit, + mdiCpu64Bit: mdiCpu64Bit, + mdiCrane: mdiCrane, + mdiCreation: mdiCreation, + mdiCreativeCommons: mdiCreativeCommons, + mdiCreditCard: mdiCreditCard, + mdiCreditCardCheck: mdiCreditCardCheck, + mdiCreditCardCheckOutline: mdiCreditCardCheckOutline, + mdiCreditCardClock: mdiCreditCardClock, + mdiCreditCardClockOutline: mdiCreditCardClockOutline, + mdiCreditCardMarker: mdiCreditCardMarker, + mdiCreditCardMarkerOutline: mdiCreditCardMarkerOutline, + mdiCreditCardMinus: mdiCreditCardMinus, + mdiCreditCardMinusOutline: mdiCreditCardMinusOutline, + mdiCreditCardMultiple: mdiCreditCardMultiple, + mdiCreditCardMultipleOutline: mdiCreditCardMultipleOutline, + mdiCreditCardOff: mdiCreditCardOff, + mdiCreditCardOffOutline: mdiCreditCardOffOutline, + mdiCreditCardOutline: mdiCreditCardOutline, + mdiCreditCardPlus: mdiCreditCardPlus, + mdiCreditCardPlusOutline: mdiCreditCardPlusOutline, + mdiCreditCardRefresh: mdiCreditCardRefresh, + mdiCreditCardRefreshOutline: mdiCreditCardRefreshOutline, + mdiCreditCardRefund: mdiCreditCardRefund, + mdiCreditCardRefundOutline: mdiCreditCardRefundOutline, + mdiCreditCardRemove: mdiCreditCardRemove, + mdiCreditCardRemoveOutline: mdiCreditCardRemoveOutline, + mdiCreditCardScan: mdiCreditCardScan, + mdiCreditCardScanOutline: mdiCreditCardScanOutline, + mdiCreditCardSearch: mdiCreditCardSearch, + mdiCreditCardSearchOutline: mdiCreditCardSearchOutline, + mdiCreditCardSettings: mdiCreditCardSettings, + mdiCreditCardSettingsOutline: mdiCreditCardSettingsOutline, + mdiCreditCardSync: mdiCreditCardSync, + mdiCreditCardSyncOutline: mdiCreditCardSyncOutline, + mdiCreditCardWireless: mdiCreditCardWireless, + mdiCreditCardWirelessOff: mdiCreditCardWirelessOff, + mdiCreditCardWirelessOffOutline: mdiCreditCardWirelessOffOutline, + mdiCreditCardWirelessOutline: mdiCreditCardWirelessOutline, + mdiCricket: mdiCricket, + mdiCrop: mdiCrop, + mdiCropFree: mdiCropFree, + mdiCropLandscape: mdiCropLandscape, + mdiCropPortrait: mdiCropPortrait, + mdiCropRotate: mdiCropRotate, + mdiCropSquare: mdiCropSquare, + mdiCrosshairs: mdiCrosshairs, + mdiCrosshairsGps: mdiCrosshairsGps, + mdiCrosshairsOff: mdiCrosshairsOff, + mdiCrosshairsQuestion: mdiCrosshairsQuestion, + mdiCrown: mdiCrown, + mdiCrownOutline: mdiCrownOutline, + mdiCryengine: mdiCryengine, + mdiCrystalBall: mdiCrystalBall, + mdiCube: mdiCube, + mdiCubeOff: mdiCubeOff, + mdiCubeOffOutline: mdiCubeOffOutline, + mdiCubeOutline: mdiCubeOutline, + mdiCubeScan: mdiCubeScan, + mdiCubeSend: mdiCubeSend, + mdiCubeUnfolded: mdiCubeUnfolded, + mdiCup: mdiCup, + mdiCupOff: mdiCupOff, + mdiCupOffOutline: mdiCupOffOutline, + mdiCupOutline: mdiCupOutline, + mdiCupWater: mdiCupWater, + mdiCupboard: mdiCupboard, + mdiCupboardOutline: mdiCupboardOutline, + mdiCupcake: mdiCupcake, + mdiCurling: mdiCurling, + mdiCurrencyBdt: mdiCurrencyBdt, + mdiCurrencyBrl: mdiCurrencyBrl, + mdiCurrencyBtc: mdiCurrencyBtc, + mdiCurrencyCny: mdiCurrencyCny, + mdiCurrencyEth: mdiCurrencyEth, + mdiCurrencyEur: mdiCurrencyEur, + mdiCurrencyEurOff: mdiCurrencyEurOff, + mdiCurrencyGbp: mdiCurrencyGbp, + mdiCurrencyIls: mdiCurrencyIls, + mdiCurrencyInr: mdiCurrencyInr, + mdiCurrencyJpy: mdiCurrencyJpy, + mdiCurrencyKrw: mdiCurrencyKrw, + mdiCurrencyKzt: mdiCurrencyKzt, + mdiCurrencyMnt: mdiCurrencyMnt, + mdiCurrencyNgn: mdiCurrencyNgn, + mdiCurrencyPhp: mdiCurrencyPhp, + mdiCurrencyRial: mdiCurrencyRial, + mdiCurrencyRub: mdiCurrencyRub, + mdiCurrencySign: mdiCurrencySign, + mdiCurrencyTry: mdiCurrencyTry, + mdiCurrencyTwd: mdiCurrencyTwd, + mdiCurrencyUsd: mdiCurrencyUsd, + mdiCurrencyUsdCircle: mdiCurrencyUsdCircle, + mdiCurrencyUsdCircleOutline: mdiCurrencyUsdCircleOutline, + mdiCurrencyUsdOff: mdiCurrencyUsdOff, + mdiCurrentAc: mdiCurrentAc, + mdiCurrentDc: mdiCurrentDc, + mdiCursorDefault: mdiCursorDefault, + mdiCursorDefaultClick: mdiCursorDefaultClick, + mdiCursorDefaultClickOutline: mdiCursorDefaultClickOutline, + mdiCursorDefaultGesture: mdiCursorDefaultGesture, + mdiCursorDefaultGestureOutline: mdiCursorDefaultGestureOutline, + mdiCursorDefaultOutline: mdiCursorDefaultOutline, + mdiCursorMove: mdiCursorMove, + mdiCursorPointer: mdiCursorPointer, + mdiCursorText: mdiCursorText, + mdiDanceBallroom: mdiDanceBallroom, + mdiDancePole: mdiDancePole, + mdiDataMatrix: mdiDataMatrix, + mdiDataMatrixEdit: mdiDataMatrixEdit, + mdiDataMatrixMinus: mdiDataMatrixMinus, + mdiDataMatrixPlus: mdiDataMatrixPlus, + mdiDataMatrixRemove: mdiDataMatrixRemove, + mdiDataMatrixScan: mdiDataMatrixScan, + mdiDatabase: mdiDatabase, + mdiDatabaseAlert: mdiDatabaseAlert, + mdiDatabaseAlertOutline: mdiDatabaseAlertOutline, + mdiDatabaseArrowDown: mdiDatabaseArrowDown, + mdiDatabaseArrowDownOutline: mdiDatabaseArrowDownOutline, + mdiDatabaseArrowLeft: mdiDatabaseArrowLeft, + mdiDatabaseArrowLeftOutline: mdiDatabaseArrowLeftOutline, + mdiDatabaseArrowRight: mdiDatabaseArrowRight, + mdiDatabaseArrowRightOutline: mdiDatabaseArrowRightOutline, + mdiDatabaseArrowUp: mdiDatabaseArrowUp, + mdiDatabaseArrowUpOutline: mdiDatabaseArrowUpOutline, + mdiDatabaseCheck: mdiDatabaseCheck, + mdiDatabaseCheckOutline: mdiDatabaseCheckOutline, + mdiDatabaseClock: mdiDatabaseClock, + mdiDatabaseClockOutline: mdiDatabaseClockOutline, + mdiDatabaseCog: mdiDatabaseCog, + mdiDatabaseCogOutline: mdiDatabaseCogOutline, + mdiDatabaseEdit: mdiDatabaseEdit, + mdiDatabaseEditOutline: mdiDatabaseEditOutline, + mdiDatabaseExport: mdiDatabaseExport, + mdiDatabaseExportOutline: mdiDatabaseExportOutline, + mdiDatabaseImport: mdiDatabaseImport, + mdiDatabaseImportOutline: mdiDatabaseImportOutline, + mdiDatabaseLock: mdiDatabaseLock, + mdiDatabaseLockOutline: mdiDatabaseLockOutline, + mdiDatabaseMarker: mdiDatabaseMarker, + mdiDatabaseMarkerOutline: mdiDatabaseMarkerOutline, + mdiDatabaseMinus: mdiDatabaseMinus, + mdiDatabaseMinusOutline: mdiDatabaseMinusOutline, + mdiDatabaseOff: mdiDatabaseOff, + mdiDatabaseOffOutline: mdiDatabaseOffOutline, + mdiDatabaseOutline: mdiDatabaseOutline, + mdiDatabasePlus: mdiDatabasePlus, + mdiDatabasePlusOutline: mdiDatabasePlusOutline, + mdiDatabaseRefresh: mdiDatabaseRefresh, + mdiDatabaseRefreshOutline: mdiDatabaseRefreshOutline, + mdiDatabaseRemove: mdiDatabaseRemove, + mdiDatabaseRemoveOutline: mdiDatabaseRemoveOutline, + mdiDatabaseSearch: mdiDatabaseSearch, + mdiDatabaseSearchOutline: mdiDatabaseSearchOutline, + mdiDatabaseSettings: mdiDatabaseSettings, + mdiDatabaseSettingsOutline: mdiDatabaseSettingsOutline, + mdiDatabaseSync: mdiDatabaseSync, + mdiDatabaseSyncOutline: mdiDatabaseSyncOutline, + mdiDeathStar: mdiDeathStar, + mdiDeathStarVariant: mdiDeathStarVariant, + mdiDeathlyHallows: mdiDeathlyHallows, + mdiDebian: mdiDebian, + mdiDebugStepInto: mdiDebugStepInto, + mdiDebugStepOut: mdiDebugStepOut, + mdiDebugStepOver: mdiDebugStepOver, + mdiDecagram: mdiDecagram, + mdiDecagramOutline: mdiDecagramOutline, + mdiDecimal: mdiDecimal, + mdiDecimalComma: mdiDecimalComma, + mdiDecimalCommaDecrease: mdiDecimalCommaDecrease, + mdiDecimalCommaIncrease: mdiDecimalCommaIncrease, + mdiDecimalDecrease: mdiDecimalDecrease, + mdiDecimalIncrease: mdiDecimalIncrease, + mdiDelete: mdiDelete, + mdiDeleteAlert: mdiDeleteAlert, + mdiDeleteAlertOutline: mdiDeleteAlertOutline, + mdiDeleteCircle: mdiDeleteCircle, + mdiDeleteCircleOutline: mdiDeleteCircleOutline, + mdiDeleteClock: mdiDeleteClock, + mdiDeleteClockOutline: mdiDeleteClockOutline, + mdiDeleteEmpty: mdiDeleteEmpty, + mdiDeleteEmptyOutline: mdiDeleteEmptyOutline, + mdiDeleteForever: mdiDeleteForever, + mdiDeleteForeverOutline: mdiDeleteForeverOutline, + mdiDeleteOff: mdiDeleteOff, + mdiDeleteOffOutline: mdiDeleteOffOutline, + mdiDeleteOutline: mdiDeleteOutline, + mdiDeleteRestore: mdiDeleteRestore, + mdiDeleteSweep: mdiDeleteSweep, + mdiDeleteSweepOutline: mdiDeleteSweepOutline, + mdiDeleteVariant: mdiDeleteVariant, + mdiDelta: mdiDelta, + mdiDesk: mdiDesk, + mdiDeskLamp: mdiDeskLamp, + mdiDeskphone: mdiDeskphone, + mdiDesktopClassic: mdiDesktopClassic, + mdiDesktopMac: mdiDesktopMac, + mdiDesktopMacDashboard: mdiDesktopMacDashboard, + mdiDesktopTower: mdiDesktopTower, + mdiDesktopTowerMonitor: mdiDesktopTowerMonitor, + mdiDetails: mdiDetails, + mdiDevTo: mdiDevTo, + mdiDeveloperBoard: mdiDeveloperBoard, + mdiDeviantart: mdiDeviantart, + mdiDevices: mdiDevices, + mdiDiabetes: mdiDiabetes, + mdiDialpad: mdiDialpad, + mdiDiameter: mdiDiameter, + mdiDiameterOutline: mdiDiameterOutline, + mdiDiameterVariant: mdiDiameterVariant, + mdiDiamond: mdiDiamond, + mdiDiamondOutline: mdiDiamondOutline, + mdiDiamondStone: mdiDiamondStone, + mdiDice1: mdiDice1, + mdiDice1Outline: mdiDice1Outline, + mdiDice2: mdiDice2, + mdiDice2Outline: mdiDice2Outline, + mdiDice3: mdiDice3, + mdiDice3Outline: mdiDice3Outline, + mdiDice4: mdiDice4, + mdiDice4Outline: mdiDice4Outline, + mdiDice5: mdiDice5, + mdiDice5Outline: mdiDice5Outline, + mdiDice6: mdiDice6, + mdiDice6Outline: mdiDice6Outline, + mdiDiceD10: mdiDiceD10, + mdiDiceD10Outline: mdiDiceD10Outline, + mdiDiceD12: mdiDiceD12, + mdiDiceD12Outline: mdiDiceD12Outline, + mdiDiceD20: mdiDiceD20, + mdiDiceD20Outline: mdiDiceD20Outline, + mdiDiceD4: mdiDiceD4, + mdiDiceD4Outline: mdiDiceD4Outline, + mdiDiceD6: mdiDiceD6, + mdiDiceD6Outline: mdiDiceD6Outline, + mdiDiceD8: mdiDiceD8, + mdiDiceD8Outline: mdiDiceD8Outline, + mdiDiceMultiple: mdiDiceMultiple, + mdiDiceMultipleOutline: mdiDiceMultipleOutline, + mdiDigitalOcean: mdiDigitalOcean, + mdiDipSwitch: mdiDipSwitch, + mdiDirections: mdiDirections, + mdiDirectionsFork: mdiDirectionsFork, + mdiDisc: mdiDisc, + mdiDiscAlert: mdiDiscAlert, + mdiDiscPlayer: mdiDiscPlayer, + mdiDiscord: mdiDiscord, + mdiDishwasher: mdiDishwasher, + mdiDishwasherAlert: mdiDishwasherAlert, + mdiDishwasherOff: mdiDishwasherOff, + mdiDisqus: mdiDisqus, + mdiDistributeHorizontalCenter: mdiDistributeHorizontalCenter, + mdiDistributeHorizontalLeft: mdiDistributeHorizontalLeft, + mdiDistributeHorizontalRight: mdiDistributeHorizontalRight, + mdiDistributeVerticalBottom: mdiDistributeVerticalBottom, + mdiDistributeVerticalCenter: mdiDistributeVerticalCenter, + mdiDistributeVerticalTop: mdiDistributeVerticalTop, + mdiDivingFlippers: mdiDivingFlippers, + mdiDivingHelmet: mdiDivingHelmet, + mdiDivingScuba: mdiDivingScuba, + mdiDivingScubaFlag: mdiDivingScubaFlag, + mdiDivingScubaTank: mdiDivingScubaTank, + mdiDivingScubaTankMultiple: mdiDivingScubaTankMultiple, + mdiDivingSnorkel: mdiDivingSnorkel, + mdiDivision: mdiDivision, + mdiDivisionBox: mdiDivisionBox, + mdiDlna: mdiDlna, + mdiDna: mdiDna, + mdiDns: mdiDns, + mdiDnsOutline: mdiDnsOutline, + mdiDoNotDisturb: mdiDoNotDisturb, + mdiDoNotDisturbOff: mdiDoNotDisturbOff, + mdiDockBottom: mdiDockBottom, + mdiDockLeft: mdiDockLeft, + mdiDockRight: mdiDockRight, + mdiDockTop: mdiDockTop, + mdiDockWindow: mdiDockWindow, + mdiDocker: mdiDocker, + mdiDoctor: mdiDoctor, + mdiDog: mdiDog, + mdiDogService: mdiDogService, + mdiDogSide: mdiDogSide, + mdiDogSideOff: mdiDogSideOff, + mdiDolby: mdiDolby, + mdiDolly: mdiDolly, + mdiDomain: mdiDomain, + mdiDomainOff: mdiDomainOff, + mdiDomainPlus: mdiDomainPlus, + mdiDomainRemove: mdiDomainRemove, + mdiDomeLight: mdiDomeLight, + mdiDominoMask: mdiDominoMask, + mdiDonkey: mdiDonkey, + mdiDoor: mdiDoor, + mdiDoorClosed: mdiDoorClosed, + mdiDoorClosedLock: mdiDoorClosedLock, + mdiDoorOpen: mdiDoorOpen, + mdiDoorbell: mdiDoorbell, + mdiDoorbellVideo: mdiDoorbellVideo, + mdiDotNet: mdiDotNet, + mdiDotsGrid: mdiDotsGrid, + mdiDotsHexagon: mdiDotsHexagon, + mdiDotsHorizontal: mdiDotsHorizontal, + mdiDotsHorizontalCircle: mdiDotsHorizontalCircle, + mdiDotsHorizontalCircleOutline: mdiDotsHorizontalCircleOutline, + mdiDotsSquare: mdiDotsSquare, + mdiDotsTriangle: mdiDotsTriangle, + mdiDotsVertical: mdiDotsVertical, + mdiDotsVerticalCircle: mdiDotsVerticalCircle, + mdiDotsVerticalCircleOutline: mdiDotsVerticalCircleOutline, + mdiDouban: mdiDouban, + mdiDownload: mdiDownload, + mdiDownloadBox: mdiDownloadBox, + mdiDownloadBoxOutline: mdiDownloadBoxOutline, + mdiDownloadCircle: mdiDownloadCircle, + mdiDownloadCircleOutline: mdiDownloadCircleOutline, + mdiDownloadLock: mdiDownloadLock, + mdiDownloadLockOutline: mdiDownloadLockOutline, + mdiDownloadMultiple: mdiDownloadMultiple, + mdiDownloadNetwork: mdiDownloadNetwork, + mdiDownloadNetworkOutline: mdiDownloadNetworkOutline, + mdiDownloadOff: mdiDownloadOff, + mdiDownloadOffOutline: mdiDownloadOffOutline, + mdiDownloadOutline: mdiDownloadOutline, + mdiDrag: mdiDrag, + mdiDragHorizontal: mdiDragHorizontal, + mdiDragHorizontalVariant: mdiDragHorizontalVariant, + mdiDragVariant: mdiDragVariant, + mdiDragVertical: mdiDragVertical, + mdiDragVerticalVariant: mdiDragVerticalVariant, + mdiDramaMasks: mdiDramaMasks, + mdiDraw: mdiDraw, + mdiDrawing: mdiDrawing, + mdiDrawingBox: mdiDrawingBox, + mdiDresser: mdiDresser, + mdiDresserOutline: mdiDresserOutline, + mdiDrone: mdiDrone, + mdiDropbox: mdiDropbox, + mdiDrupal: mdiDrupal, + mdiDuck: mdiDuck, + mdiDumbbell: mdiDumbbell, + mdiDumpTruck: mdiDumpTruck, + mdiEarHearing: mdiEarHearing, + mdiEarHearingOff: mdiEarHearingOff, + mdiEarth: mdiEarth, + mdiEarthArrowRight: mdiEarthArrowRight, + mdiEarthBox: mdiEarthBox, + mdiEarthBoxMinus: mdiEarthBoxMinus, + mdiEarthBoxOff: mdiEarthBoxOff, + mdiEarthBoxPlus: mdiEarthBoxPlus, + mdiEarthBoxRemove: mdiEarthBoxRemove, + mdiEarthMinus: mdiEarthMinus, + mdiEarthOff: mdiEarthOff, + mdiEarthPlus: mdiEarthPlus, + mdiEarthRemove: mdiEarthRemove, + mdiEgg: mdiEgg, + mdiEggEaster: mdiEggEaster, + mdiEggOff: mdiEggOff, + mdiEggOffOutline: mdiEggOffOutline, + mdiEggOutline: mdiEggOutline, + mdiEiffelTower: mdiEiffelTower, + mdiEightTrack: mdiEightTrack, + mdiEject: mdiEject, + mdiEjectOutline: mdiEjectOutline, + mdiElectricSwitch: mdiElectricSwitch, + mdiElectricSwitchClosed: mdiElectricSwitchClosed, + mdiElectronFramework: mdiElectronFramework, + mdiElephant: mdiElephant, + mdiElevationDecline: mdiElevationDecline, + mdiElevationRise: mdiElevationRise, + mdiElevator: mdiElevator, + mdiElevatorDown: mdiElevatorDown, + mdiElevatorPassenger: mdiElevatorPassenger, + mdiElevatorUp: mdiElevatorUp, + mdiEllipse: mdiEllipse, + mdiEllipseOutline: mdiEllipseOutline, + mdiEmail: mdiEmail, + mdiEmailAlert: mdiEmailAlert, + mdiEmailAlertOutline: mdiEmailAlertOutline, + mdiEmailBox: mdiEmailBox, + mdiEmailCheck: mdiEmailCheck, + mdiEmailCheckOutline: mdiEmailCheckOutline, + mdiEmailEdit: mdiEmailEdit, + mdiEmailEditOutline: mdiEmailEditOutline, + mdiEmailLock: mdiEmailLock, + mdiEmailMarkAsUnread: mdiEmailMarkAsUnread, + mdiEmailMinus: mdiEmailMinus, + mdiEmailMinusOutline: mdiEmailMinusOutline, + mdiEmailMultiple: mdiEmailMultiple, + mdiEmailMultipleOutline: mdiEmailMultipleOutline, + mdiEmailNewsletter: mdiEmailNewsletter, + mdiEmailOff: mdiEmailOff, + mdiEmailOffOutline: mdiEmailOffOutline, + mdiEmailOpen: mdiEmailOpen, + mdiEmailOpenMultiple: mdiEmailOpenMultiple, + mdiEmailOpenMultipleOutline: mdiEmailOpenMultipleOutline, + mdiEmailOpenOutline: mdiEmailOpenOutline, + mdiEmailOutline: mdiEmailOutline, + mdiEmailPlus: mdiEmailPlus, + mdiEmailPlusOutline: mdiEmailPlusOutline, + mdiEmailReceive: mdiEmailReceive, + mdiEmailReceiveOutline: mdiEmailReceiveOutline, + mdiEmailRemove: mdiEmailRemove, + mdiEmailRemoveOutline: mdiEmailRemoveOutline, + mdiEmailSearch: mdiEmailSearch, + mdiEmailSearchOutline: mdiEmailSearchOutline, + mdiEmailSend: mdiEmailSend, + mdiEmailSendOutline: mdiEmailSendOutline, + mdiEmailSync: mdiEmailSync, + mdiEmailSyncOutline: mdiEmailSyncOutline, + mdiEmailVariant: mdiEmailVariant, + mdiEmber: mdiEmber, + mdiEmby: mdiEmby, + mdiEmoticon: mdiEmoticon, + mdiEmoticonAngry: mdiEmoticonAngry, + mdiEmoticonAngryOutline: mdiEmoticonAngryOutline, + mdiEmoticonConfused: mdiEmoticonConfused, + mdiEmoticonConfusedOutline: mdiEmoticonConfusedOutline, + mdiEmoticonCool: mdiEmoticonCool, + mdiEmoticonCoolOutline: mdiEmoticonCoolOutline, + mdiEmoticonCry: mdiEmoticonCry, + mdiEmoticonCryOutline: mdiEmoticonCryOutline, + mdiEmoticonDead: mdiEmoticonDead, + mdiEmoticonDeadOutline: mdiEmoticonDeadOutline, + mdiEmoticonDevil: mdiEmoticonDevil, + mdiEmoticonDevilOutline: mdiEmoticonDevilOutline, + mdiEmoticonExcited: mdiEmoticonExcited, + mdiEmoticonExcitedOutline: mdiEmoticonExcitedOutline, + mdiEmoticonFrown: mdiEmoticonFrown, + mdiEmoticonFrownOutline: mdiEmoticonFrownOutline, + mdiEmoticonHappy: mdiEmoticonHappy, + mdiEmoticonHappyOutline: mdiEmoticonHappyOutline, + mdiEmoticonKiss: mdiEmoticonKiss, + mdiEmoticonKissOutline: mdiEmoticonKissOutline, + mdiEmoticonLol: mdiEmoticonLol, + mdiEmoticonLolOutline: mdiEmoticonLolOutline, + mdiEmoticonNeutral: mdiEmoticonNeutral, + mdiEmoticonNeutralOutline: mdiEmoticonNeutralOutline, + mdiEmoticonOutline: mdiEmoticonOutline, + mdiEmoticonPoop: mdiEmoticonPoop, + mdiEmoticonPoopOutline: mdiEmoticonPoopOutline, + mdiEmoticonSad: mdiEmoticonSad, + mdiEmoticonSadOutline: mdiEmoticonSadOutline, + mdiEmoticonSick: mdiEmoticonSick, + mdiEmoticonSickOutline: mdiEmoticonSickOutline, + mdiEmoticonTongue: mdiEmoticonTongue, + mdiEmoticonTongueOutline: mdiEmoticonTongueOutline, + mdiEmoticonWink: mdiEmoticonWink, + mdiEmoticonWinkOutline: mdiEmoticonWinkOutline, + mdiEngine: mdiEngine, + mdiEngineOff: mdiEngineOff, + mdiEngineOffOutline: mdiEngineOffOutline, + mdiEngineOutline: mdiEngineOutline, + mdiEpsilon: mdiEpsilon, + mdiEqual: mdiEqual, + mdiEqualBox: mdiEqualBox, + mdiEqualizer: mdiEqualizer, + mdiEqualizerOutline: mdiEqualizerOutline, + mdiEraser: mdiEraser, + mdiEraserVariant: mdiEraserVariant, + mdiEscalator: mdiEscalator, + mdiEscalatorBox: mdiEscalatorBox, + mdiEscalatorDown: mdiEscalatorDown, + mdiEscalatorUp: mdiEscalatorUp, + mdiEslint: mdiEslint, + mdiEt: mdiEt, + mdiEthereum: mdiEthereum, + mdiEthernet: mdiEthernet, + mdiEthernetCable: mdiEthernetCable, + mdiEthernetCableOff: mdiEthernetCableOff, + mdiEvPlugCcs1: mdiEvPlugCcs1, + mdiEvPlugCcs2: mdiEvPlugCcs2, + mdiEvPlugChademo: mdiEvPlugChademo, + mdiEvPlugTesla: mdiEvPlugTesla, + mdiEvPlugType1: mdiEvPlugType1, + mdiEvPlugType2: mdiEvPlugType2, + mdiEvStation: mdiEvStation, + mdiEvernote: mdiEvernote, + mdiExcavator: mdiExcavator, + mdiExclamation: mdiExclamation, + mdiExclamationThick: mdiExclamationThick, + mdiExitRun: mdiExitRun, + mdiExitToApp: mdiExitToApp, + mdiExpandAll: mdiExpandAll, + mdiExpandAllOutline: mdiExpandAllOutline, + mdiExpansionCard: mdiExpansionCard, + mdiExpansionCardVariant: mdiExpansionCardVariant, + mdiExponent: mdiExponent, + mdiExponentBox: mdiExponentBox, + mdiExport: mdiExport, + mdiExportVariant: mdiExportVariant, + mdiEye: mdiEye, + mdiEyeCheck: mdiEyeCheck, + mdiEyeCheckOutline: mdiEyeCheckOutline, + mdiEyeCircle: mdiEyeCircle, + mdiEyeCircleOutline: mdiEyeCircleOutline, + mdiEyeMinus: mdiEyeMinus, + mdiEyeMinusOutline: mdiEyeMinusOutline, + mdiEyeOff: mdiEyeOff, + mdiEyeOffOutline: mdiEyeOffOutline, + mdiEyeOutline: mdiEyeOutline, + mdiEyePlus: mdiEyePlus, + mdiEyePlusOutline: mdiEyePlusOutline, + mdiEyeRemove: mdiEyeRemove, + mdiEyeRemoveOutline: mdiEyeRemoveOutline, + mdiEyeSettings: mdiEyeSettings, + mdiEyeSettingsOutline: mdiEyeSettingsOutline, + mdiEyedropper: mdiEyedropper, + mdiEyedropperMinus: mdiEyedropperMinus, + mdiEyedropperOff: mdiEyedropperOff, + mdiEyedropperPlus: mdiEyedropperPlus, + mdiEyedropperRemove: mdiEyedropperRemove, + mdiEyedropperVariant: mdiEyedropperVariant, + mdiFace: mdiFace, + mdiFaceAgent: mdiFaceAgent, + mdiFaceMask: mdiFaceMask, + mdiFaceMaskOutline: mdiFaceMaskOutline, + mdiFaceOutline: mdiFaceOutline, + mdiFaceProfile: mdiFaceProfile, + mdiFaceProfileWoman: mdiFaceProfileWoman, + mdiFaceRecognition: mdiFaceRecognition, + mdiFaceShimmer: mdiFaceShimmer, + mdiFaceShimmerOutline: mdiFaceShimmerOutline, + mdiFaceWoman: mdiFaceWoman, + mdiFaceWomanOutline: mdiFaceWomanOutline, + mdiFaceWomanShimmer: mdiFaceWomanShimmer, + mdiFaceWomanShimmerOutline: mdiFaceWomanShimmerOutline, + mdiFacebook: mdiFacebook, + mdiFacebookGaming: mdiFacebookGaming, + mdiFacebookMessenger: mdiFacebookMessenger, + mdiFacebookWorkplace: mdiFacebookWorkplace, + mdiFactory: mdiFactory, + mdiFamilyTree: mdiFamilyTree, + mdiFan: mdiFan, + mdiFanAlert: mdiFanAlert, + mdiFanAuto: mdiFanAuto, + mdiFanChevronDown: mdiFanChevronDown, + mdiFanChevronUp: mdiFanChevronUp, + mdiFanMinus: mdiFanMinus, + mdiFanOff: mdiFanOff, + mdiFanPlus: mdiFanPlus, + mdiFanRemove: mdiFanRemove, + mdiFanSpeed1: mdiFanSpeed1, + mdiFanSpeed2: mdiFanSpeed2, + mdiFanSpeed3: mdiFanSpeed3, + mdiFastForward: mdiFastForward, + mdiFastForward10: mdiFastForward10, + mdiFastForward30: mdiFastForward30, + mdiFastForward5: mdiFastForward5, + mdiFastForward60: mdiFastForward60, + mdiFastForwardOutline: mdiFastForwardOutline, + mdiFax: mdiFax, + mdiFeather: mdiFeather, + mdiFeatureSearch: mdiFeatureSearch, + mdiFeatureSearchOutline: mdiFeatureSearchOutline, + mdiFedora: mdiFedora, + mdiFencing: mdiFencing, + mdiFerrisWheel: mdiFerrisWheel, + mdiFerry: mdiFerry, + mdiFile: mdiFile, + mdiFileAccount: mdiFileAccount, + mdiFileAccountOutline: mdiFileAccountOutline, + mdiFileAlert: mdiFileAlert, + mdiFileAlertOutline: mdiFileAlertOutline, + mdiFileCabinet: mdiFileCabinet, + mdiFileCad: mdiFileCad, + mdiFileCadBox: mdiFileCadBox, + mdiFileCancel: mdiFileCancel, + mdiFileCancelOutline: mdiFileCancelOutline, + mdiFileCertificate: mdiFileCertificate, + mdiFileCertificateOutline: mdiFileCertificateOutline, + mdiFileChart: mdiFileChart, + mdiFileChartOutline: mdiFileChartOutline, + mdiFileCheck: mdiFileCheck, + mdiFileCheckOutline: mdiFileCheckOutline, + mdiFileClock: mdiFileClock, + mdiFileClockOutline: mdiFileClockOutline, + mdiFileCloud: mdiFileCloud, + mdiFileCloudOutline: mdiFileCloudOutline, + mdiFileCode: mdiFileCode, + mdiFileCodeOutline: mdiFileCodeOutline, + mdiFileCog: mdiFileCog, + mdiFileCogOutline: mdiFileCogOutline, + mdiFileCompare: mdiFileCompare, + mdiFileDelimited: mdiFileDelimited, + mdiFileDelimitedOutline: mdiFileDelimitedOutline, + mdiFileDocument: mdiFileDocument, + mdiFileDocumentEdit: mdiFileDocumentEdit, + mdiFileDocumentEditOutline: mdiFileDocumentEditOutline, + mdiFileDocumentMultiple: mdiFileDocumentMultiple, + mdiFileDocumentMultipleOutline: mdiFileDocumentMultipleOutline, + mdiFileDocumentOutline: mdiFileDocumentOutline, + mdiFileDownload: mdiFileDownload, + mdiFileDownloadOutline: mdiFileDownloadOutline, + mdiFileEdit: mdiFileEdit, + mdiFileEditOutline: mdiFileEditOutline, + mdiFileExcel: mdiFileExcel, + mdiFileExcelBox: mdiFileExcelBox, + mdiFileExcelBoxOutline: mdiFileExcelBoxOutline, + mdiFileExcelOutline: mdiFileExcelOutline, + mdiFileExport: mdiFileExport, + mdiFileExportOutline: mdiFileExportOutline, + mdiFileEye: mdiFileEye, + mdiFileEyeOutline: mdiFileEyeOutline, + mdiFileFind: mdiFileFind, + mdiFileFindOutline: mdiFileFindOutline, + mdiFileHidden: mdiFileHidden, + mdiFileImage: mdiFileImage, + mdiFileImageOutline: mdiFileImageOutline, + mdiFileImport: mdiFileImport, + mdiFileImportOutline: mdiFileImportOutline, + mdiFileKey: mdiFileKey, + mdiFileKeyOutline: mdiFileKeyOutline, + mdiFileLink: mdiFileLink, + mdiFileLinkOutline: mdiFileLinkOutline, + mdiFileLock: mdiFileLock, + mdiFileLockOutline: mdiFileLockOutline, + mdiFileMove: mdiFileMove, + mdiFileMoveOutline: mdiFileMoveOutline, + mdiFileMultiple: mdiFileMultiple, + mdiFileMultipleOutline: mdiFileMultipleOutline, + mdiFileMusic: mdiFileMusic, + mdiFileMusicOutline: mdiFileMusicOutline, + mdiFileOutline: mdiFileOutline, + mdiFilePdf: mdiFilePdf, + mdiFilePdfBox: mdiFilePdfBox, + mdiFilePdfBoxOutline: mdiFilePdfBoxOutline, + mdiFilePdfOutline: mdiFilePdfOutline, + mdiFilePercent: mdiFilePercent, + mdiFilePercentOutline: mdiFilePercentOutline, + mdiFilePhone: mdiFilePhone, + mdiFilePhoneOutline: mdiFilePhoneOutline, + mdiFilePlus: mdiFilePlus, + mdiFilePlusOutline: mdiFilePlusOutline, + mdiFilePowerpoint: mdiFilePowerpoint, + mdiFilePowerpointBox: mdiFilePowerpointBox, + mdiFilePowerpointBoxOutline: mdiFilePowerpointBoxOutline, + mdiFilePowerpointOutline: mdiFilePowerpointOutline, + mdiFilePresentationBox: mdiFilePresentationBox, + mdiFileQuestion: mdiFileQuestion, + mdiFileQuestionOutline: mdiFileQuestionOutline, + mdiFileRefresh: mdiFileRefresh, + mdiFileRefreshOutline: mdiFileRefreshOutline, + mdiFileRemove: mdiFileRemove, + mdiFileRemoveOutline: mdiFileRemoveOutline, + mdiFileReplace: mdiFileReplace, + mdiFileReplaceOutline: mdiFileReplaceOutline, + mdiFileRestore: mdiFileRestore, + mdiFileRestoreOutline: mdiFileRestoreOutline, + mdiFileSearch: mdiFileSearch, + mdiFileSearchOutline: mdiFileSearchOutline, + mdiFileSend: mdiFileSend, + mdiFileSendOutline: mdiFileSendOutline, + mdiFileSettings: mdiFileSettings, + mdiFileSettingsOutline: mdiFileSettingsOutline, + mdiFileStar: mdiFileStar, + mdiFileStarOutline: mdiFileStarOutline, + mdiFileSwap: mdiFileSwap, + mdiFileSwapOutline: mdiFileSwapOutline, + mdiFileSync: mdiFileSync, + mdiFileSyncOutline: mdiFileSyncOutline, + mdiFileTable: mdiFileTable, + mdiFileTableBox: mdiFileTableBox, + mdiFileTableBoxMultiple: mdiFileTableBoxMultiple, + mdiFileTableBoxMultipleOutline: mdiFileTableBoxMultipleOutline, + mdiFileTableBoxOutline: mdiFileTableBoxOutline, + mdiFileTableOutline: mdiFileTableOutline, + mdiFileTree: mdiFileTree, + mdiFileTreeOutline: mdiFileTreeOutline, + mdiFileUndo: mdiFileUndo, + mdiFileUndoOutline: mdiFileUndoOutline, + mdiFileUpload: mdiFileUpload, + mdiFileUploadOutline: mdiFileUploadOutline, + mdiFileVideo: mdiFileVideo, + mdiFileVideoOutline: mdiFileVideoOutline, + mdiFileWord: mdiFileWord, + mdiFileWordBox: mdiFileWordBox, + mdiFileWordBoxOutline: mdiFileWordBoxOutline, + mdiFileWordOutline: mdiFileWordOutline, + mdiFilm: mdiFilm, + mdiFilmstrip: mdiFilmstrip, + mdiFilmstripBox: mdiFilmstripBox, + mdiFilmstripBoxMultiple: mdiFilmstripBoxMultiple, + mdiFilmstripOff: mdiFilmstripOff, + mdiFilter: mdiFilter, + mdiFilterMenu: mdiFilterMenu, + mdiFilterMenuOutline: mdiFilterMenuOutline, + mdiFilterMinus: mdiFilterMinus, + mdiFilterMinusOutline: mdiFilterMinusOutline, + mdiFilterOff: mdiFilterOff, + mdiFilterOffOutline: mdiFilterOffOutline, + mdiFilterOutline: mdiFilterOutline, + mdiFilterPlus: mdiFilterPlus, + mdiFilterPlusOutline: mdiFilterPlusOutline, + mdiFilterRemove: mdiFilterRemove, + mdiFilterRemoveOutline: mdiFilterRemoveOutline, + mdiFilterVariant: mdiFilterVariant, + mdiFilterVariantMinus: mdiFilterVariantMinus, + mdiFilterVariantPlus: mdiFilterVariantPlus, + mdiFilterVariantRemove: mdiFilterVariantRemove, + mdiFinance: mdiFinance, + mdiFindReplace: mdiFindReplace, + mdiFingerprint: mdiFingerprint, + mdiFingerprintOff: mdiFingerprintOff, + mdiFire: mdiFire, + mdiFireAlert: mdiFireAlert, + mdiFireExtinguisher: mdiFireExtinguisher, + mdiFireHydrant: mdiFireHydrant, + mdiFireHydrantAlert: mdiFireHydrantAlert, + mdiFireHydrantOff: mdiFireHydrantOff, + mdiFireOff: mdiFireOff, + mdiFireTruck: mdiFireTruck, + mdiFirebase: mdiFirebase, + mdiFirefox: mdiFirefox, + mdiFireplace: mdiFireplace, + mdiFireplaceOff: mdiFireplaceOff, + mdiFirework: mdiFirework, + mdiFireworkOff: mdiFireworkOff, + mdiFish: mdiFish, + mdiFishOff: mdiFishOff, + mdiFishbowl: mdiFishbowl, + mdiFishbowlOutline: mdiFishbowlOutline, + mdiFitToPage: mdiFitToPage, + mdiFitToPageOutline: mdiFitToPageOutline, + mdiFlag: mdiFlag, + mdiFlagCheckered: mdiFlagCheckered, + mdiFlagMinus: mdiFlagMinus, + mdiFlagMinusOutline: mdiFlagMinusOutline, + mdiFlagOutline: mdiFlagOutline, + mdiFlagPlus: mdiFlagPlus, + mdiFlagPlusOutline: mdiFlagPlusOutline, + mdiFlagRemove: mdiFlagRemove, + mdiFlagRemoveOutline: mdiFlagRemoveOutline, + mdiFlagTriangle: mdiFlagTriangle, + mdiFlagVariant: mdiFlagVariant, + mdiFlagVariantOutline: mdiFlagVariantOutline, + mdiFlare: mdiFlare, + mdiFlash: mdiFlash, + mdiFlashAlert: mdiFlashAlert, + mdiFlashAlertOutline: mdiFlashAlertOutline, + mdiFlashAuto: mdiFlashAuto, + mdiFlashCircle: mdiFlashCircle, + mdiFlashOff: mdiFlashOff, + mdiFlashOutline: mdiFlashOutline, + mdiFlashRedEye: mdiFlashRedEye, + mdiFlashlight: mdiFlashlight, + mdiFlashlightOff: mdiFlashlightOff, + mdiFlask: mdiFlask, + mdiFlaskEmpty: mdiFlaskEmpty, + mdiFlaskEmptyMinus: mdiFlaskEmptyMinus, + mdiFlaskEmptyMinusOutline: mdiFlaskEmptyMinusOutline, + mdiFlaskEmptyOff: mdiFlaskEmptyOff, + mdiFlaskEmptyOffOutline: mdiFlaskEmptyOffOutline, + mdiFlaskEmptyOutline: mdiFlaskEmptyOutline, + mdiFlaskEmptyPlus: mdiFlaskEmptyPlus, + mdiFlaskEmptyPlusOutline: mdiFlaskEmptyPlusOutline, + mdiFlaskEmptyRemove: mdiFlaskEmptyRemove, + mdiFlaskEmptyRemoveOutline: mdiFlaskEmptyRemoveOutline, + mdiFlaskMinus: mdiFlaskMinus, + mdiFlaskMinusOutline: mdiFlaskMinusOutline, + mdiFlaskOff: mdiFlaskOff, + mdiFlaskOffOutline: mdiFlaskOffOutline, + mdiFlaskOutline: mdiFlaskOutline, + mdiFlaskPlus: mdiFlaskPlus, + mdiFlaskPlusOutline: mdiFlaskPlusOutline, + mdiFlaskRemove: mdiFlaskRemove, + mdiFlaskRemoveOutline: mdiFlaskRemoveOutline, + mdiFlaskRoundBottom: mdiFlaskRoundBottom, + mdiFlaskRoundBottomEmpty: mdiFlaskRoundBottomEmpty, + mdiFlaskRoundBottomEmptyOutline: mdiFlaskRoundBottomEmptyOutline, + mdiFlaskRoundBottomOutline: mdiFlaskRoundBottomOutline, + mdiFleurDeLis: mdiFleurDeLis, + mdiFlipHorizontal: mdiFlipHorizontal, + mdiFlipToBack: mdiFlipToBack, + mdiFlipToFront: mdiFlipToFront, + mdiFlipVertical: mdiFlipVertical, + mdiFloorLamp: mdiFloorLamp, + mdiFloorLampDual: mdiFloorLampDual, + mdiFloorLampVariant: mdiFloorLampVariant, + mdiFloorPlan: mdiFloorPlan, + mdiFloppy: mdiFloppy, + mdiFloppyVariant: mdiFloppyVariant, + mdiFlower: mdiFlower, + mdiFlowerOutline: mdiFlowerOutline, + mdiFlowerPoppy: mdiFlowerPoppy, + mdiFlowerTulip: mdiFlowerTulip, + mdiFlowerTulipOutline: mdiFlowerTulipOutline, + mdiFocusAuto: mdiFocusAuto, + mdiFocusField: mdiFocusField, + mdiFocusFieldHorizontal: mdiFocusFieldHorizontal, + mdiFocusFieldVertical: mdiFocusFieldVertical, + mdiFolder: mdiFolder, + mdiFolderAccount: mdiFolderAccount, + mdiFolderAccountOutline: mdiFolderAccountOutline, + mdiFolderAlert: mdiFolderAlert, + mdiFolderAlertOutline: mdiFolderAlertOutline, + mdiFolderClock: mdiFolderClock, + mdiFolderClockOutline: mdiFolderClockOutline, + mdiFolderCog: mdiFolderCog, + mdiFolderCogOutline: mdiFolderCogOutline, + mdiFolderDownload: mdiFolderDownload, + mdiFolderDownloadOutline: mdiFolderDownloadOutline, + mdiFolderEdit: mdiFolderEdit, + mdiFolderEditOutline: mdiFolderEditOutline, + mdiFolderGoogleDrive: mdiFolderGoogleDrive, + mdiFolderHeart: mdiFolderHeart, + mdiFolderHeartOutline: mdiFolderHeartOutline, + mdiFolderHome: mdiFolderHome, + mdiFolderHomeOutline: mdiFolderHomeOutline, + mdiFolderImage: mdiFolderImage, + mdiFolderInformation: mdiFolderInformation, + mdiFolderInformationOutline: mdiFolderInformationOutline, + mdiFolderKey: mdiFolderKey, + mdiFolderKeyNetwork: mdiFolderKeyNetwork, + mdiFolderKeyNetworkOutline: mdiFolderKeyNetworkOutline, + mdiFolderKeyOutline: mdiFolderKeyOutline, + mdiFolderLock: mdiFolderLock, + mdiFolderLockOpen: mdiFolderLockOpen, + mdiFolderMarker: mdiFolderMarker, + mdiFolderMarkerOutline: mdiFolderMarkerOutline, + mdiFolderMove: mdiFolderMove, + mdiFolderMoveOutline: mdiFolderMoveOutline, + mdiFolderMultiple: mdiFolderMultiple, + mdiFolderMultipleImage: mdiFolderMultipleImage, + mdiFolderMultipleOutline: mdiFolderMultipleOutline, + mdiFolderMultiplePlus: mdiFolderMultiplePlus, + mdiFolderMultiplePlusOutline: mdiFolderMultiplePlusOutline, + mdiFolderMusic: mdiFolderMusic, + mdiFolderMusicOutline: mdiFolderMusicOutline, + mdiFolderNetwork: mdiFolderNetwork, + mdiFolderNetworkOutline: mdiFolderNetworkOutline, + mdiFolderOpen: mdiFolderOpen, + mdiFolderOpenOutline: mdiFolderOpenOutline, + mdiFolderOutline: mdiFolderOutline, + mdiFolderPlus: mdiFolderPlus, + mdiFolderPlusOutline: mdiFolderPlusOutline, + mdiFolderPound: mdiFolderPound, + mdiFolderPoundOutline: mdiFolderPoundOutline, + mdiFolderRefresh: mdiFolderRefresh, + mdiFolderRefreshOutline: mdiFolderRefreshOutline, + mdiFolderRemove: mdiFolderRemove, + mdiFolderRemoveOutline: mdiFolderRemoveOutline, + mdiFolderSearch: mdiFolderSearch, + mdiFolderSearchOutline: mdiFolderSearchOutline, + mdiFolderSettings: mdiFolderSettings, + mdiFolderSettingsOutline: mdiFolderSettingsOutline, + mdiFolderStar: mdiFolderStar, + mdiFolderStarMultiple: mdiFolderStarMultiple, + mdiFolderStarMultipleOutline: mdiFolderStarMultipleOutline, + mdiFolderStarOutline: mdiFolderStarOutline, + mdiFolderSwap: mdiFolderSwap, + mdiFolderSwapOutline: mdiFolderSwapOutline, + mdiFolderSync: mdiFolderSync, + mdiFolderSyncOutline: mdiFolderSyncOutline, + mdiFolderTable: mdiFolderTable, + mdiFolderTableOutline: mdiFolderTableOutline, + mdiFolderText: mdiFolderText, + mdiFolderTextOutline: mdiFolderTextOutline, + mdiFolderUpload: mdiFolderUpload, + mdiFolderUploadOutline: mdiFolderUploadOutline, + mdiFolderZip: mdiFolderZip, + mdiFolderZipOutline: mdiFolderZipOutline, + mdiFontAwesome: mdiFontAwesome, + mdiFood: mdiFood, + mdiFoodApple: mdiFoodApple, + mdiFoodAppleOutline: mdiFoodAppleOutline, + mdiFoodCroissant: mdiFoodCroissant, + mdiFoodDrumstick: mdiFoodDrumstick, + mdiFoodDrumstickOff: mdiFoodDrumstickOff, + mdiFoodDrumstickOffOutline: mdiFoodDrumstickOffOutline, + mdiFoodDrumstickOutline: mdiFoodDrumstickOutline, + mdiFoodForkDrink: mdiFoodForkDrink, + mdiFoodHalal: mdiFoodHalal, + mdiFoodKosher: mdiFoodKosher, + mdiFoodOff: mdiFoodOff, + mdiFoodSteak: mdiFoodSteak, + mdiFoodSteakOff: mdiFoodSteakOff, + mdiFoodTurkey: mdiFoodTurkey, + mdiFoodVariant: mdiFoodVariant, + mdiFoodVariantOff: mdiFoodVariantOff, + mdiFootPrint: mdiFootPrint, + mdiFootball: mdiFootball, + mdiFootballAustralian: mdiFootballAustralian, + mdiFootballHelmet: mdiFootballHelmet, + mdiForklift: mdiForklift, + mdiFormDropdown: mdiFormDropdown, + mdiFormSelect: mdiFormSelect, + mdiFormTextarea: mdiFormTextarea, + mdiFormTextbox: mdiFormTextbox, + mdiFormTextboxLock: mdiFormTextboxLock, + mdiFormTextboxPassword: mdiFormTextboxPassword, + mdiFormatAlignBottom: mdiFormatAlignBottom, + mdiFormatAlignCenter: mdiFormatAlignCenter, + mdiFormatAlignJustify: mdiFormatAlignJustify, + mdiFormatAlignLeft: mdiFormatAlignLeft, + mdiFormatAlignMiddle: mdiFormatAlignMiddle, + mdiFormatAlignRight: mdiFormatAlignRight, + mdiFormatAlignTop: mdiFormatAlignTop, + mdiFormatAnnotationMinus: mdiFormatAnnotationMinus, + mdiFormatAnnotationPlus: mdiFormatAnnotationPlus, + mdiFormatBold: mdiFormatBold, + mdiFormatClear: mdiFormatClear, + mdiFormatColorFill: mdiFormatColorFill, + mdiFormatColorHighlight: mdiFormatColorHighlight, + mdiFormatColorMarkerCancel: mdiFormatColorMarkerCancel, + mdiFormatColorText: mdiFormatColorText, + mdiFormatColumns: mdiFormatColumns, + mdiFormatFloatCenter: mdiFormatFloatCenter, + mdiFormatFloatLeft: mdiFormatFloatLeft, + mdiFormatFloatNone: mdiFormatFloatNone, + mdiFormatFloatRight: mdiFormatFloatRight, + mdiFormatFont: mdiFormatFont, + mdiFormatFontSizeDecrease: mdiFormatFontSizeDecrease, + mdiFormatFontSizeIncrease: mdiFormatFontSizeIncrease, + mdiFormatHeader1: mdiFormatHeader1, + mdiFormatHeader2: mdiFormatHeader2, + mdiFormatHeader3: mdiFormatHeader3, + mdiFormatHeader4: mdiFormatHeader4, + mdiFormatHeader5: mdiFormatHeader5, + mdiFormatHeader6: mdiFormatHeader6, + mdiFormatHeaderDecrease: mdiFormatHeaderDecrease, + mdiFormatHeaderEqual: mdiFormatHeaderEqual, + mdiFormatHeaderIncrease: mdiFormatHeaderIncrease, + mdiFormatHeaderPound: mdiFormatHeaderPound, + mdiFormatHorizontalAlignCenter: mdiFormatHorizontalAlignCenter, + mdiFormatHorizontalAlignLeft: mdiFormatHorizontalAlignLeft, + mdiFormatHorizontalAlignRight: mdiFormatHorizontalAlignRight, + mdiFormatIndentDecrease: mdiFormatIndentDecrease, + mdiFormatIndentIncrease: mdiFormatIndentIncrease, + mdiFormatItalic: mdiFormatItalic, + mdiFormatLetterCase: mdiFormatLetterCase, + mdiFormatLetterCaseLower: mdiFormatLetterCaseLower, + mdiFormatLetterCaseUpper: mdiFormatLetterCaseUpper, + mdiFormatLetterEndsWith: mdiFormatLetterEndsWith, + mdiFormatLetterMatches: mdiFormatLetterMatches, + mdiFormatLetterStartsWith: mdiFormatLetterStartsWith, + mdiFormatLineSpacing: mdiFormatLineSpacing, + mdiFormatLineStyle: mdiFormatLineStyle, + mdiFormatLineWeight: mdiFormatLineWeight, + mdiFormatListBulleted: mdiFormatListBulleted, + mdiFormatListBulletedSquare: mdiFormatListBulletedSquare, + mdiFormatListBulletedTriangle: mdiFormatListBulletedTriangle, + mdiFormatListBulletedType: mdiFormatListBulletedType, + mdiFormatListCheckbox: mdiFormatListCheckbox, + mdiFormatListChecks: mdiFormatListChecks, + mdiFormatListNumbered: mdiFormatListNumbered, + mdiFormatListNumberedRtl: mdiFormatListNumberedRtl, + mdiFormatListText: mdiFormatListText, + mdiFormatOverline: mdiFormatOverline, + mdiFormatPageBreak: mdiFormatPageBreak, + mdiFormatPaint: mdiFormatPaint, + mdiFormatParagraph: mdiFormatParagraph, + mdiFormatPilcrow: mdiFormatPilcrow, + mdiFormatQuoteClose: mdiFormatQuoteClose, + mdiFormatQuoteCloseOutline: mdiFormatQuoteCloseOutline, + mdiFormatQuoteOpen: mdiFormatQuoteOpen, + mdiFormatQuoteOpenOutline: mdiFormatQuoteOpenOutline, + mdiFormatRotate90: mdiFormatRotate90, + mdiFormatSection: mdiFormatSection, + mdiFormatSize: mdiFormatSize, + mdiFormatStrikethrough: mdiFormatStrikethrough, + mdiFormatStrikethroughVariant: mdiFormatStrikethroughVariant, + mdiFormatSubscript: mdiFormatSubscript, + mdiFormatSuperscript: mdiFormatSuperscript, + mdiFormatText: mdiFormatText, + mdiFormatTextRotationAngleDown: mdiFormatTextRotationAngleDown, + mdiFormatTextRotationAngleUp: mdiFormatTextRotationAngleUp, + mdiFormatTextRotationDown: mdiFormatTextRotationDown, + mdiFormatTextRotationDownVertical: mdiFormatTextRotationDownVertical, + mdiFormatTextRotationNone: mdiFormatTextRotationNone, + mdiFormatTextRotationUp: mdiFormatTextRotationUp, + mdiFormatTextRotationVertical: mdiFormatTextRotationVertical, + mdiFormatTextVariant: mdiFormatTextVariant, + mdiFormatTextVariantOutline: mdiFormatTextVariantOutline, + mdiFormatTextWrappingClip: mdiFormatTextWrappingClip, + mdiFormatTextWrappingOverflow: mdiFormatTextWrappingOverflow, + mdiFormatTextWrappingWrap: mdiFormatTextWrappingWrap, + mdiFormatTextbox: mdiFormatTextbox, + mdiFormatTextdirectionLToR: mdiFormatTextdirectionLToR, + mdiFormatTextdirectionRToL: mdiFormatTextdirectionRToL, + mdiFormatTitle: mdiFormatTitle, + mdiFormatUnderline: mdiFormatUnderline, + mdiFormatVerticalAlignBottom: mdiFormatVerticalAlignBottom, + mdiFormatVerticalAlignCenter: mdiFormatVerticalAlignCenter, + mdiFormatVerticalAlignTop: mdiFormatVerticalAlignTop, + mdiFormatWrapInline: mdiFormatWrapInline, + mdiFormatWrapSquare: mdiFormatWrapSquare, + mdiFormatWrapTight: mdiFormatWrapTight, + mdiFormatWrapTopBottom: mdiFormatWrapTopBottom, + mdiForum: mdiForum, + mdiForumOutline: mdiForumOutline, + mdiForward: mdiForward, + mdiForwardburger: mdiForwardburger, + mdiFountain: mdiFountain, + mdiFountainPen: mdiFountainPen, + mdiFountainPenTip: mdiFountainPenTip, + mdiFreebsd: mdiFreebsd, + mdiFrequentlyAskedQuestions: mdiFrequentlyAskedQuestions, + mdiFridge: mdiFridge, + mdiFridgeAlert: mdiFridgeAlert, + mdiFridgeAlertOutline: mdiFridgeAlertOutline, + mdiFridgeBottom: mdiFridgeBottom, + mdiFridgeIndustrial: mdiFridgeIndustrial, + mdiFridgeIndustrialAlert: mdiFridgeIndustrialAlert, + mdiFridgeIndustrialAlertOutline: mdiFridgeIndustrialAlertOutline, + mdiFridgeIndustrialOff: mdiFridgeIndustrialOff, + mdiFridgeIndustrialOffOutline: mdiFridgeIndustrialOffOutline, + mdiFridgeIndustrialOutline: mdiFridgeIndustrialOutline, + mdiFridgeOff: mdiFridgeOff, + mdiFridgeOffOutline: mdiFridgeOffOutline, + mdiFridgeOutline: mdiFridgeOutline, + mdiFridgeTop: mdiFridgeTop, + mdiFridgeVariant: mdiFridgeVariant, + mdiFridgeVariantAlert: mdiFridgeVariantAlert, + mdiFridgeVariantAlertOutline: mdiFridgeVariantAlertOutline, + mdiFridgeVariantOff: mdiFridgeVariantOff, + mdiFridgeVariantOffOutline: mdiFridgeVariantOffOutline, + mdiFridgeVariantOutline: mdiFridgeVariantOutline, + mdiFruitCherries: mdiFruitCherries, + mdiFruitCherriesOff: mdiFruitCherriesOff, + mdiFruitCitrus: mdiFruitCitrus, + mdiFruitCitrusOff: mdiFruitCitrusOff, + mdiFruitGrapes: mdiFruitGrapes, + mdiFruitGrapesOutline: mdiFruitGrapesOutline, + mdiFruitPineapple: mdiFruitPineapple, + mdiFruitWatermelon: mdiFruitWatermelon, + mdiFuel: mdiFuel, + mdiFullscreen: mdiFullscreen, + mdiFullscreenExit: mdiFullscreenExit, + mdiFunction: mdiFunction, + mdiFunctionVariant: mdiFunctionVariant, + mdiFuriganaHorizontal: mdiFuriganaHorizontal, + mdiFuriganaVertical: mdiFuriganaVertical, + mdiFuse: mdiFuse, + mdiFuseAlert: mdiFuseAlert, + mdiFuseBlade: mdiFuseBlade, + mdiFuseOff: mdiFuseOff, + mdiGamepad: mdiGamepad, + mdiGamepadCircle: mdiGamepadCircle, + mdiGamepadCircleDown: mdiGamepadCircleDown, + mdiGamepadCircleLeft: mdiGamepadCircleLeft, + mdiGamepadCircleOutline: mdiGamepadCircleOutline, + mdiGamepadCircleRight: mdiGamepadCircleRight, + mdiGamepadCircleUp: mdiGamepadCircleUp, + mdiGamepadDown: mdiGamepadDown, + mdiGamepadLeft: mdiGamepadLeft, + mdiGamepadRight: mdiGamepadRight, + mdiGamepadRound: mdiGamepadRound, + mdiGamepadRoundDown: mdiGamepadRoundDown, + mdiGamepadRoundLeft: mdiGamepadRoundLeft, + mdiGamepadRoundOutline: mdiGamepadRoundOutline, + mdiGamepadRoundRight: mdiGamepadRoundRight, + mdiGamepadRoundUp: mdiGamepadRoundUp, + mdiGamepadSquare: mdiGamepadSquare, + mdiGamepadSquareOutline: mdiGamepadSquareOutline, + mdiGamepadUp: mdiGamepadUp, + mdiGamepadVariant: mdiGamepadVariant, + mdiGamepadVariantOutline: mdiGamepadVariantOutline, + mdiGamma: mdiGamma, + mdiGantryCrane: mdiGantryCrane, + mdiGarage: mdiGarage, + mdiGarageAlert: mdiGarageAlert, + mdiGarageAlertVariant: mdiGarageAlertVariant, + mdiGarageOpen: mdiGarageOpen, + mdiGarageOpenVariant: mdiGarageOpenVariant, + mdiGarageVariant: mdiGarageVariant, + mdiGasCylinder: mdiGasCylinder, + mdiGasStation: mdiGasStation, + mdiGasStationOff: mdiGasStationOff, + mdiGasStationOffOutline: mdiGasStationOffOutline, + mdiGasStationOutline: mdiGasStationOutline, + mdiGate: mdiGate, + mdiGateAnd: mdiGateAnd, + mdiGateArrowRight: mdiGateArrowRight, + mdiGateNand: mdiGateNand, + mdiGateNor: mdiGateNor, + mdiGateNot: mdiGateNot, + mdiGateOpen: mdiGateOpen, + mdiGateOr: mdiGateOr, + mdiGateXnor: mdiGateXnor, + mdiGateXor: mdiGateXor, + mdiGatsby: mdiGatsby, + mdiGauge: mdiGauge, + mdiGaugeEmpty: mdiGaugeEmpty, + mdiGaugeFull: mdiGaugeFull, + mdiGaugeLow: mdiGaugeLow, + mdiGavel: mdiGavel, + mdiGenderFemale: mdiGenderFemale, + mdiGenderMale: mdiGenderMale, + mdiGenderMaleFemale: mdiGenderMaleFemale, + mdiGenderMaleFemaleVariant: mdiGenderMaleFemaleVariant, + mdiGenderNonBinary: mdiGenderNonBinary, + mdiGenderTransgender: mdiGenderTransgender, + mdiGentoo: mdiGentoo, + mdiGesture: mdiGesture, + mdiGestureDoubleTap: mdiGestureDoubleTap, + mdiGesturePinch: mdiGesturePinch, + mdiGestureSpread: mdiGestureSpread, + mdiGestureSwipe: mdiGestureSwipe, + mdiGestureSwipeDown: mdiGestureSwipeDown, + mdiGestureSwipeHorizontal: mdiGestureSwipeHorizontal, + mdiGestureSwipeLeft: mdiGestureSwipeLeft, + mdiGestureSwipeRight: mdiGestureSwipeRight, + mdiGestureSwipeUp: mdiGestureSwipeUp, + mdiGestureSwipeVertical: mdiGestureSwipeVertical, + mdiGestureTap: mdiGestureTap, + mdiGestureTapBox: mdiGestureTapBox, + mdiGestureTapButton: mdiGestureTapButton, + mdiGestureTapHold: mdiGestureTapHold, + mdiGestureTwoDoubleTap: mdiGestureTwoDoubleTap, + mdiGestureTwoTap: mdiGestureTwoTap, + mdiGhost: mdiGhost, + mdiGhostOff: mdiGhostOff, + mdiGhostOffOutline: mdiGhostOffOutline, + mdiGhostOutline: mdiGhostOutline, + mdiGif: mdiGif, + mdiGift: mdiGift, + mdiGiftOff: mdiGiftOff, + mdiGiftOffOutline: mdiGiftOffOutline, + mdiGiftOpen: mdiGiftOpen, + mdiGiftOpenOutline: mdiGiftOpenOutline, + mdiGiftOutline: mdiGiftOutline, + mdiGit: mdiGit, + mdiGithub: mdiGithub, + mdiGitlab: mdiGitlab, + mdiGlassCocktail: mdiGlassCocktail, + mdiGlassCocktailOff: mdiGlassCocktailOff, + mdiGlassFlute: mdiGlassFlute, + mdiGlassMug: mdiGlassMug, + mdiGlassMugOff: mdiGlassMugOff, + mdiGlassMugVariant: mdiGlassMugVariant, + mdiGlassMugVariantOff: mdiGlassMugVariantOff, + mdiGlassPintOutline: mdiGlassPintOutline, + mdiGlassStange: mdiGlassStange, + mdiGlassTulip: mdiGlassTulip, + mdiGlassWine: mdiGlassWine, + mdiGlasses: mdiGlasses, + mdiGlobeLight: mdiGlobeLight, + mdiGlobeModel: mdiGlobeModel, + mdiGmail: mdiGmail, + mdiGnome: mdiGnome, + mdiGoKart: mdiGoKart, + mdiGoKartTrack: mdiGoKartTrack, + mdiGog: mdiGog, + mdiGold: mdiGold, + mdiGolf: mdiGolf, + mdiGolfCart: mdiGolfCart, + mdiGolfTee: mdiGolfTee, + mdiGondola: mdiGondola, + mdiGoodreads: mdiGoodreads, + mdiGoogle: mdiGoogle, + mdiGoogleAds: mdiGoogleAds, + mdiGoogleAnalytics: mdiGoogleAnalytics, + mdiGoogleAssistant: mdiGoogleAssistant, + mdiGoogleCardboard: mdiGoogleCardboard, + mdiGoogleChrome: mdiGoogleChrome, + mdiGoogleCircles: mdiGoogleCircles, + mdiGoogleCirclesCommunities: mdiGoogleCirclesCommunities, + mdiGoogleCirclesExtended: mdiGoogleCirclesExtended, + mdiGoogleCirclesGroup: mdiGoogleCirclesGroup, + mdiGoogleClassroom: mdiGoogleClassroom, + mdiGoogleCloud: mdiGoogleCloud, + mdiGoogleController: mdiGoogleController, + mdiGoogleControllerOff: mdiGoogleControllerOff, + mdiGoogleDownasaur: mdiGoogleDownasaur, + mdiGoogleDrive: mdiGoogleDrive, + mdiGoogleEarth: mdiGoogleEarth, + mdiGoogleFit: mdiGoogleFit, + mdiGoogleGlass: mdiGoogleGlass, + mdiGoogleHangouts: mdiGoogleHangouts, + mdiGoogleHome: mdiGoogleHome, + mdiGoogleKeep: mdiGoogleKeep, + mdiGoogleLens: mdiGoogleLens, + mdiGoogleMaps: mdiGoogleMaps, + mdiGoogleMyBusiness: mdiGoogleMyBusiness, + mdiGoogleNearby: mdiGoogleNearby, + mdiGooglePhotos: mdiGooglePhotos, + mdiGooglePlay: mdiGooglePlay, + mdiGooglePlus: mdiGooglePlus, + mdiGooglePodcast: mdiGooglePodcast, + mdiGoogleSpreadsheet: mdiGoogleSpreadsheet, + mdiGoogleStreetView: mdiGoogleStreetView, + mdiGoogleTranslate: mdiGoogleTranslate, + mdiGradient: mdiGradient, + mdiGrain: mdiGrain, + mdiGraph: mdiGraph, + mdiGraphOutline: mdiGraphOutline, + mdiGraphql: mdiGraphql, + mdiGrass: mdiGrass, + mdiGraveStone: mdiGraveStone, + mdiGreasePencil: mdiGreasePencil, + mdiGreaterThan: mdiGreaterThan, + mdiGreaterThanOrEqual: mdiGreaterThanOrEqual, + mdiGrid: mdiGrid, + mdiGridLarge: mdiGridLarge, + mdiGridOff: mdiGridOff, + mdiGrill: mdiGrill, + mdiGrillOutline: mdiGrillOutline, + mdiGroup: mdiGroup, + mdiGuitarAcoustic: mdiGuitarAcoustic, + mdiGuitarElectric: mdiGuitarElectric, + mdiGuitarPick: mdiGuitarPick, + mdiGuitarPickOutline: mdiGuitarPickOutline, + mdiGuyFawkesMask: mdiGuyFawkesMask, + mdiHail: mdiHail, + mdiHairDryer: mdiHairDryer, + mdiHairDryerOutline: mdiHairDryerOutline, + mdiHalloween: mdiHalloween, + mdiHamburger: mdiHamburger, + mdiHammer: mdiHammer, + mdiHammerScrewdriver: mdiHammerScrewdriver, + mdiHammerWrench: mdiHammerWrench, + mdiHand: mdiHand, + mdiHandHeart: mdiHandHeart, + mdiHandHeartOutline: mdiHandHeartOutline, + mdiHandLeft: mdiHandLeft, + mdiHandOkay: mdiHandOkay, + mdiHandPeace: mdiHandPeace, + mdiHandPeaceVariant: mdiHandPeaceVariant, + mdiHandPointingDown: mdiHandPointingDown, + mdiHandPointingLeft: mdiHandPointingLeft, + mdiHandPointingRight: mdiHandPointingRight, + mdiHandPointingUp: mdiHandPointingUp, + mdiHandRight: mdiHandRight, + mdiHandSaw: mdiHandSaw, + mdiHandWash: mdiHandWash, + mdiHandWashOutline: mdiHandWashOutline, + mdiHandWater: mdiHandWater, + mdiHandball: mdiHandball, + mdiHandcuffs: mdiHandcuffs, + mdiHandshake: mdiHandshake, + mdiHandshakeOutline: mdiHandshakeOutline, + mdiHanger: mdiHanger, + mdiHardHat: mdiHardHat, + mdiHarddisk: mdiHarddisk, + mdiHarddiskPlus: mdiHarddiskPlus, + mdiHarddiskRemove: mdiHarddiskRemove, + mdiHatFedora: mdiHatFedora, + mdiHazardLights: mdiHazardLights, + mdiHdr: mdiHdr, + mdiHdrOff: mdiHdrOff, + mdiHead: mdiHead, + mdiHeadAlert: mdiHeadAlert, + mdiHeadAlertOutline: mdiHeadAlertOutline, + mdiHeadCheck: mdiHeadCheck, + mdiHeadCheckOutline: mdiHeadCheckOutline, + mdiHeadCog: mdiHeadCog, + mdiHeadCogOutline: mdiHeadCogOutline, + mdiHeadDotsHorizontal: mdiHeadDotsHorizontal, + mdiHeadDotsHorizontalOutline: mdiHeadDotsHorizontalOutline, + mdiHeadFlash: mdiHeadFlash, + mdiHeadFlashOutline: mdiHeadFlashOutline, + mdiHeadHeart: mdiHeadHeart, + mdiHeadHeartOutline: mdiHeadHeartOutline, + mdiHeadLightbulb: mdiHeadLightbulb, + mdiHeadLightbulbOutline: mdiHeadLightbulbOutline, + mdiHeadMinus: mdiHeadMinus, + mdiHeadMinusOutline: mdiHeadMinusOutline, + mdiHeadOutline: mdiHeadOutline, + mdiHeadPlus: mdiHeadPlus, + mdiHeadPlusOutline: mdiHeadPlusOutline, + mdiHeadQuestion: mdiHeadQuestion, + mdiHeadQuestionOutline: mdiHeadQuestionOutline, + mdiHeadRemove: mdiHeadRemove, + mdiHeadRemoveOutline: mdiHeadRemoveOutline, + mdiHeadSnowflake: mdiHeadSnowflake, + mdiHeadSnowflakeOutline: mdiHeadSnowflakeOutline, + mdiHeadSync: mdiHeadSync, + mdiHeadSyncOutline: mdiHeadSyncOutline, + mdiHeadphones: mdiHeadphones, + mdiHeadphonesBluetooth: mdiHeadphonesBluetooth, + mdiHeadphonesBox: mdiHeadphonesBox, + mdiHeadphonesOff: mdiHeadphonesOff, + mdiHeadphonesSettings: mdiHeadphonesSettings, + mdiHeadset: mdiHeadset, + mdiHeadsetDock: mdiHeadsetDock, + mdiHeadsetOff: mdiHeadsetOff, + mdiHeart: mdiHeart, + mdiHeartBox: mdiHeartBox, + mdiHeartBoxOutline: mdiHeartBoxOutline, + mdiHeartBroken: mdiHeartBroken, + mdiHeartBrokenOutline: mdiHeartBrokenOutline, + mdiHeartCircle: mdiHeartCircle, + mdiHeartCircleOutline: mdiHeartCircleOutline, + mdiHeartCog: mdiHeartCog, + mdiHeartCogOutline: mdiHeartCogOutline, + mdiHeartFlash: mdiHeartFlash, + mdiHeartHalf: mdiHeartHalf, + mdiHeartHalfFull: mdiHeartHalfFull, + mdiHeartHalfOutline: mdiHeartHalfOutline, + mdiHeartMinus: mdiHeartMinus, + mdiHeartMinusOutline: mdiHeartMinusOutline, + mdiHeartMultiple: mdiHeartMultiple, + mdiHeartMultipleOutline: mdiHeartMultipleOutline, + mdiHeartOff: mdiHeartOff, + mdiHeartOffOutline: mdiHeartOffOutline, + mdiHeartOutline: mdiHeartOutline, + mdiHeartPlus: mdiHeartPlus, + mdiHeartPlusOutline: mdiHeartPlusOutline, + mdiHeartPulse: mdiHeartPulse, + mdiHeartRemove: mdiHeartRemove, + mdiHeartRemoveOutline: mdiHeartRemoveOutline, + mdiHeartSettings: mdiHeartSettings, + mdiHeartSettingsOutline: mdiHeartSettingsOutline, + mdiHelicopter: mdiHelicopter, + mdiHelp: mdiHelp, + mdiHelpBox: mdiHelpBox, + mdiHelpCircle: mdiHelpCircle, + mdiHelpCircleOutline: mdiHelpCircleOutline, + mdiHelpNetwork: mdiHelpNetwork, + mdiHelpNetworkOutline: mdiHelpNetworkOutline, + mdiHelpRhombus: mdiHelpRhombus, + mdiHelpRhombusOutline: mdiHelpRhombusOutline, + mdiHexadecimal: mdiHexadecimal, + mdiHexagon: mdiHexagon, + mdiHexagonMultiple: mdiHexagonMultiple, + mdiHexagonMultipleOutline: mdiHexagonMultipleOutline, + mdiHexagonOutline: mdiHexagonOutline, + mdiHexagonSlice1: mdiHexagonSlice1, + mdiHexagonSlice2: mdiHexagonSlice2, + mdiHexagonSlice3: mdiHexagonSlice3, + mdiHexagonSlice4: mdiHexagonSlice4, + mdiHexagonSlice5: mdiHexagonSlice5, + mdiHexagonSlice6: mdiHexagonSlice6, + mdiHexagram: mdiHexagram, + mdiHexagramOutline: mdiHexagramOutline, + mdiHighDefinition: mdiHighDefinition, + mdiHighDefinitionBox: mdiHighDefinitionBox, + mdiHighway: mdiHighway, + mdiHiking: mdiHiking, + mdiHinduism: mdiHinduism, + mdiHistory: mdiHistory, + mdiHockeyPuck: mdiHockeyPuck, + mdiHockeySticks: mdiHockeySticks, + mdiHololens: mdiHololens, + mdiHome: mdiHome, + mdiHomeAccount: mdiHomeAccount, + mdiHomeAlert: mdiHomeAlert, + mdiHomeAlertOutline: mdiHomeAlertOutline, + mdiHomeAnalytics: mdiHomeAnalytics, + mdiHomeAssistant: mdiHomeAssistant, + mdiHomeAutomation: mdiHomeAutomation, + mdiHomeCircle: mdiHomeCircle, + mdiHomeCircleOutline: mdiHomeCircleOutline, + mdiHomeCity: mdiHomeCity, + mdiHomeCityOutline: mdiHomeCityOutline, + mdiHomeCurrencyUsd: mdiHomeCurrencyUsd, + mdiHomeEdit: mdiHomeEdit, + mdiHomeEditOutline: mdiHomeEditOutline, + mdiHomeExportOutline: mdiHomeExportOutline, + mdiHomeFlood: mdiHomeFlood, + mdiHomeFloor0: mdiHomeFloor0, + mdiHomeFloor1: mdiHomeFloor1, + mdiHomeFloor2: mdiHomeFloor2, + mdiHomeFloor3: mdiHomeFloor3, + mdiHomeFloorA: mdiHomeFloorA, + mdiHomeFloorB: mdiHomeFloorB, + mdiHomeFloorG: mdiHomeFloorG, + mdiHomeFloorL: mdiHomeFloorL, + mdiHomeFloorNegative1: mdiHomeFloorNegative1, + mdiHomeGroup: mdiHomeGroup, + mdiHomeHeart: mdiHomeHeart, + mdiHomeImportOutline: mdiHomeImportOutline, + mdiHomeLightbulb: mdiHomeLightbulb, + mdiHomeLightbulbOutline: mdiHomeLightbulbOutline, + mdiHomeLock: mdiHomeLock, + mdiHomeLockOpen: mdiHomeLockOpen, + mdiHomeMapMarker: mdiHomeMapMarker, + mdiHomeMinus: mdiHomeMinus, + mdiHomeMinusOutline: mdiHomeMinusOutline, + mdiHomeModern: mdiHomeModern, + mdiHomeOutline: mdiHomeOutline, + mdiHomePlus: mdiHomePlus, + mdiHomePlusOutline: mdiHomePlusOutline, + mdiHomeRemove: mdiHomeRemove, + mdiHomeRemoveOutline: mdiHomeRemoveOutline, + mdiHomeRoof: mdiHomeRoof, + mdiHomeSearch: mdiHomeSearch, + mdiHomeSearchOutline: mdiHomeSearchOutline, + mdiHomeThermometer: mdiHomeThermometer, + mdiHomeThermometerOutline: mdiHomeThermometerOutline, + mdiHomeVariant: mdiHomeVariant, + mdiHomeVariantOutline: mdiHomeVariantOutline, + mdiHook: mdiHook, + mdiHookOff: mdiHookOff, + mdiHops: mdiHops, + mdiHorizontalRotateClockwise: mdiHorizontalRotateClockwise, + mdiHorizontalRotateCounterclockwise: mdiHorizontalRotateCounterclockwise, + mdiHorse: mdiHorse, + mdiHorseHuman: mdiHorseHuman, + mdiHorseVariant: mdiHorseVariant, + mdiHorseshoe: mdiHorseshoe, + mdiHospital: mdiHospital, + mdiHospitalBox: mdiHospitalBox, + mdiHospitalBoxOutline: mdiHospitalBoxOutline, + mdiHospitalBuilding: mdiHospitalBuilding, + mdiHospitalMarker: mdiHospitalMarker, + mdiHotTub: mdiHotTub, + mdiHours24: mdiHours24, + mdiHubspot: mdiHubspot, + mdiHulu: mdiHulu, + mdiHuman: mdiHuman, + mdiHumanBabyChangingTable: mdiHumanBabyChangingTable, + mdiHumanCane: mdiHumanCane, + mdiHumanCapacityDecrease: mdiHumanCapacityDecrease, + mdiHumanCapacityIncrease: mdiHumanCapacityIncrease, + mdiHumanChild: mdiHumanChild, + mdiHumanEdit: mdiHumanEdit, + mdiHumanFemale: mdiHumanFemale, + mdiHumanFemaleBoy: mdiHumanFemaleBoy, + mdiHumanFemaleDance: mdiHumanFemaleDance, + mdiHumanFemaleFemale: mdiHumanFemaleFemale, + mdiHumanFemaleGirl: mdiHumanFemaleGirl, + mdiHumanGreeting: mdiHumanGreeting, + mdiHumanGreetingProximity: mdiHumanGreetingProximity, + mdiHumanHandsdown: mdiHumanHandsdown, + mdiHumanHandsup: mdiHumanHandsup, + mdiHumanMale: mdiHumanMale, + mdiHumanMaleBoy: mdiHumanMaleBoy, + mdiHumanMaleChild: mdiHumanMaleChild, + mdiHumanMaleFemale: mdiHumanMaleFemale, + mdiHumanMaleGirl: mdiHumanMaleGirl, + mdiHumanMaleHeight: mdiHumanMaleHeight, + mdiHumanMaleHeightVariant: mdiHumanMaleHeightVariant, + mdiHumanMaleMale: mdiHumanMaleMale, + mdiHumanPregnant: mdiHumanPregnant, + mdiHumanQueue: mdiHumanQueue, + mdiHumanScooter: mdiHumanScooter, + mdiHumanWheelchair: mdiHumanWheelchair, + mdiHumbleBundle: mdiHumbleBundle, + mdiHvac: mdiHvac, + mdiHvacOff: mdiHvacOff, + mdiHydraulicOilLevel: mdiHydraulicOilLevel, + mdiHydraulicOilTemperature: mdiHydraulicOilTemperature, + mdiHydroPower: mdiHydroPower, + mdiIceCream: mdiIceCream, + mdiIceCreamOff: mdiIceCreamOff, + mdiIcePop: mdiIcePop, + mdiIdCard: mdiIdCard, + mdiIdentifier: mdiIdentifier, + mdiIdeogramCjk: mdiIdeogramCjk, + mdiIdeogramCjkVariant: mdiIdeogramCjkVariant, + mdiIframe: mdiIframe, + mdiIframeArray: mdiIframeArray, + mdiIframeArrayOutline: mdiIframeArrayOutline, + mdiIframeBraces: mdiIframeBraces, + mdiIframeBracesOutline: mdiIframeBracesOutline, + mdiIframeOutline: mdiIframeOutline, + mdiIframeParentheses: mdiIframeParentheses, + mdiIframeParenthesesOutline: mdiIframeParenthesesOutline, + mdiIframeVariable: mdiIframeVariable, + mdiIframeVariableOutline: mdiIframeVariableOutline, + mdiImage: mdiImage, + mdiImageAlbum: mdiImageAlbum, + mdiImageArea: mdiImageArea, + mdiImageAreaClose: mdiImageAreaClose, + mdiImageAutoAdjust: mdiImageAutoAdjust, + mdiImageBroken: mdiImageBroken, + mdiImageBrokenVariant: mdiImageBrokenVariant, + mdiImageEdit: mdiImageEdit, + mdiImageEditOutline: mdiImageEditOutline, + mdiImageFilterBlackWhite: mdiImageFilterBlackWhite, + mdiImageFilterCenterFocus: mdiImageFilterCenterFocus, + mdiImageFilterCenterFocusStrong: mdiImageFilterCenterFocusStrong, + mdiImageFilterCenterFocusStrongOutline: mdiImageFilterCenterFocusStrongOutline, + mdiImageFilterCenterFocusWeak: mdiImageFilterCenterFocusWeak, + mdiImageFilterDrama: mdiImageFilterDrama, + mdiImageFilterFrames: mdiImageFilterFrames, + mdiImageFilterHdr: mdiImageFilterHdr, + mdiImageFilterNone: mdiImageFilterNone, + mdiImageFilterTiltShift: mdiImageFilterTiltShift, + mdiImageFilterVintage: mdiImageFilterVintage, + mdiImageFrame: mdiImageFrame, + mdiImageMinus: mdiImageMinus, + mdiImageMove: mdiImageMove, + mdiImageMultiple: mdiImageMultiple, + mdiImageMultipleOutline: mdiImageMultipleOutline, + mdiImageOff: mdiImageOff, + mdiImageOffOutline: mdiImageOffOutline, + mdiImageOutline: mdiImageOutline, + mdiImagePlus: mdiImagePlus, + mdiImageRemove: mdiImageRemove, + mdiImageSearch: mdiImageSearch, + mdiImageSearchOutline: mdiImageSearchOutline, + mdiImageSizeSelectActual: mdiImageSizeSelectActual, + mdiImageSizeSelectLarge: mdiImageSizeSelectLarge, + mdiImageSizeSelectSmall: mdiImageSizeSelectSmall, + mdiImageText: mdiImageText, + mdiImport: mdiImport, + mdiInbox: mdiInbox, + mdiInboxArrowDown: mdiInboxArrowDown, + mdiInboxArrowDownOutline: mdiInboxArrowDownOutline, + mdiInboxArrowUp: mdiInboxArrowUp, + mdiInboxArrowUpOutline: mdiInboxArrowUpOutline, + mdiInboxFull: mdiInboxFull, + mdiInboxFullOutline: mdiInboxFullOutline, + mdiInboxMultiple: mdiInboxMultiple, + mdiInboxMultipleOutline: mdiInboxMultipleOutline, + mdiInboxOutline: mdiInboxOutline, + mdiInboxRemove: mdiInboxRemove, + mdiInboxRemoveOutline: mdiInboxRemoveOutline, + mdiIncognito: mdiIncognito, + mdiIncognitoCircle: mdiIncognitoCircle, + mdiIncognitoCircleOff: mdiIncognitoCircleOff, + mdiIncognitoOff: mdiIncognitoOff, + mdiInfinity: mdiInfinity, + mdiInformation: mdiInformation, + mdiInformationOutline: mdiInformationOutline, + mdiInformationVariant: mdiInformationVariant, + mdiInstagram: mdiInstagram, + mdiInstrumentTriangle: mdiInstrumentTriangle, + mdiInvertColors: mdiInvertColors, + mdiInvertColorsOff: mdiInvertColorsOff, + mdiIobroker: mdiIobroker, + mdiIp: mdiIp, + mdiIpNetwork: mdiIpNetwork, + mdiIpNetworkOutline: mdiIpNetworkOutline, + mdiIpod: mdiIpod, + mdiIslam: mdiIslam, + mdiIsland: mdiIsland, + mdiIvBag: mdiIvBag, + mdiJabber: mdiJabber, + mdiJeepney: mdiJeepney, + mdiJellyfish: mdiJellyfish, + mdiJellyfishOutline: mdiJellyfishOutline, + mdiJira: mdiJira, + mdiJquery: mdiJquery, + mdiJsfiddle: mdiJsfiddle, + mdiJudaism: mdiJudaism, + mdiJumpRope: mdiJumpRope, + mdiKabaddi: mdiKabaddi, + mdiKangaroo: mdiKangaroo, + mdiKarate: mdiKarate, + mdiKeg: mdiKeg, + mdiKettle: mdiKettle, + mdiKettleAlert: mdiKettleAlert, + mdiKettleAlertOutline: mdiKettleAlertOutline, + mdiKettleOff: mdiKettleOff, + mdiKettleOffOutline: mdiKettleOffOutline, + mdiKettleOutline: mdiKettleOutline, + mdiKettlePourOver: mdiKettlePourOver, + mdiKettleSteam: mdiKettleSteam, + mdiKettleSteamOutline: mdiKettleSteamOutline, + mdiKettlebell: mdiKettlebell, + mdiKey: mdiKey, + mdiKeyArrowRight: mdiKeyArrowRight, + mdiKeyChain: mdiKeyChain, + mdiKeyChainVariant: mdiKeyChainVariant, + mdiKeyChange: mdiKeyChange, + mdiKeyLink: mdiKeyLink, + mdiKeyMinus: mdiKeyMinus, + mdiKeyOutline: mdiKeyOutline, + mdiKeyPlus: mdiKeyPlus, + mdiKeyRemove: mdiKeyRemove, + mdiKeyStar: mdiKeyStar, + mdiKeyVariant: mdiKeyVariant, + mdiKeyWireless: mdiKeyWireless, + mdiKeyboard: mdiKeyboard, + mdiKeyboardBackspace: mdiKeyboardBackspace, + mdiKeyboardCaps: mdiKeyboardCaps, + mdiKeyboardClose: mdiKeyboardClose, + mdiKeyboardEsc: mdiKeyboardEsc, + mdiKeyboardF1: mdiKeyboardF1, + mdiKeyboardF10: mdiKeyboardF10, + mdiKeyboardF11: mdiKeyboardF11, + mdiKeyboardF12: mdiKeyboardF12, + mdiKeyboardF2: mdiKeyboardF2, + mdiKeyboardF3: mdiKeyboardF3, + mdiKeyboardF4: mdiKeyboardF4, + mdiKeyboardF5: mdiKeyboardF5, + mdiKeyboardF6: mdiKeyboardF6, + mdiKeyboardF7: mdiKeyboardF7, + mdiKeyboardF8: mdiKeyboardF8, + mdiKeyboardF9: mdiKeyboardF9, + mdiKeyboardOff: mdiKeyboardOff, + mdiKeyboardOffOutline: mdiKeyboardOffOutline, + mdiKeyboardOutline: mdiKeyboardOutline, + mdiKeyboardReturn: mdiKeyboardReturn, + mdiKeyboardSettings: mdiKeyboardSettings, + mdiKeyboardSettingsOutline: mdiKeyboardSettingsOutline, + mdiKeyboardSpace: mdiKeyboardSpace, + mdiKeyboardTab: mdiKeyboardTab, + mdiKeyboardVariant: mdiKeyboardVariant, + mdiKhanda: mdiKhanda, + mdiKickstarter: mdiKickstarter, + mdiKlingon: mdiKlingon, + mdiKnife: mdiKnife, + mdiKnifeMilitary: mdiKnifeMilitary, + mdiKoala: mdiKoala, + mdiKodi: mdiKodi, + mdiKubernetes: mdiKubernetes, + mdiLabel: mdiLabel, + mdiLabelMultiple: mdiLabelMultiple, + mdiLabelMultipleOutline: mdiLabelMultipleOutline, + mdiLabelOff: mdiLabelOff, + mdiLabelOffOutline: mdiLabelOffOutline, + mdiLabelOutline: mdiLabelOutline, + mdiLabelPercent: mdiLabelPercent, + mdiLabelPercentOutline: mdiLabelPercentOutline, + mdiLabelVariant: mdiLabelVariant, + mdiLabelVariantOutline: mdiLabelVariantOutline, + mdiLadder: mdiLadder, + mdiLadybug: mdiLadybug, + mdiLambda: mdiLambda, + mdiLamp: mdiLamp, + mdiLamps: mdiLamps, + mdiLan: mdiLan, + mdiLanCheck: mdiLanCheck, + mdiLanConnect: mdiLanConnect, + mdiLanDisconnect: mdiLanDisconnect, + mdiLanPending: mdiLanPending, + mdiLanguageC: mdiLanguageC, + mdiLanguageCpp: mdiLanguageCpp, + mdiLanguageCsharp: mdiLanguageCsharp, + mdiLanguageCss3: mdiLanguageCss3, + mdiLanguageFortran: mdiLanguageFortran, + mdiLanguageGo: mdiLanguageGo, + mdiLanguageHaskell: mdiLanguageHaskell, + mdiLanguageHtml5: mdiLanguageHtml5, + mdiLanguageJava: mdiLanguageJava, + mdiLanguageJavascript: mdiLanguageJavascript, + mdiLanguageKotlin: mdiLanguageKotlin, + mdiLanguageLua: mdiLanguageLua, + mdiLanguageMarkdown: mdiLanguageMarkdown, + mdiLanguageMarkdownOutline: mdiLanguageMarkdownOutline, + mdiLanguagePhp: mdiLanguagePhp, + mdiLanguagePython: mdiLanguagePython, + mdiLanguageR: mdiLanguageR, + mdiLanguageRuby: mdiLanguageRuby, + mdiLanguageRubyOnRails: mdiLanguageRubyOnRails, + mdiLanguageRust: mdiLanguageRust, + mdiLanguageSwift: mdiLanguageSwift, + mdiLanguageTypescript: mdiLanguageTypescript, + mdiLanguageXaml: mdiLanguageXaml, + mdiLaptop: mdiLaptop, + mdiLaptopChromebook: mdiLaptopChromebook, + mdiLaptopMac: mdiLaptopMac, + mdiLaptopOff: mdiLaptopOff, + mdiLaptopWindows: mdiLaptopWindows, + mdiLaravel: mdiLaravel, + mdiLaserPointer: mdiLaserPointer, + mdiLasso: mdiLasso, + mdiLastpass: mdiLastpass, + mdiLatitude: mdiLatitude, + mdiLaunch: mdiLaunch, + mdiLavaLamp: mdiLavaLamp, + mdiLayers: mdiLayers, + mdiLayersMinus: mdiLayersMinus, + mdiLayersOff: mdiLayersOff, + mdiLayersOffOutline: mdiLayersOffOutline, + mdiLayersOutline: mdiLayersOutline, + mdiLayersPlus: mdiLayersPlus, + mdiLayersRemove: mdiLayersRemove, + mdiLayersSearch: mdiLayersSearch, + mdiLayersSearchOutline: mdiLayersSearchOutline, + mdiLayersTriple: mdiLayersTriple, + mdiLayersTripleOutline: mdiLayersTripleOutline, + mdiLeadPencil: mdiLeadPencil, + mdiLeaf: mdiLeaf, + mdiLeafMaple: mdiLeafMaple, + mdiLeafMapleOff: mdiLeafMapleOff, + mdiLeafOff: mdiLeafOff, + mdiLeak: mdiLeak, + mdiLeakOff: mdiLeakOff, + mdiLedOff: mdiLedOff, + mdiLedOn: mdiLedOn, + mdiLedOutline: mdiLedOutline, + mdiLedStrip: mdiLedStrip, + mdiLedStripVariant: mdiLedStripVariant, + mdiLedVariantOff: mdiLedVariantOff, + mdiLedVariantOn: mdiLedVariantOn, + mdiLedVariantOutline: mdiLedVariantOutline, + mdiLeek: mdiLeek, + mdiLessThan: mdiLessThan, + mdiLessThanOrEqual: mdiLessThanOrEqual, + mdiLibrary: mdiLibrary, + mdiLibraryShelves: mdiLibraryShelves, + mdiLicense: mdiLicense, + mdiLifebuoy: mdiLifebuoy, + mdiLightSwitch: mdiLightSwitch, + mdiLightbulb: mdiLightbulb, + mdiLightbulbCfl: mdiLightbulbCfl, + mdiLightbulbCflOff: mdiLightbulbCflOff, + mdiLightbulbCflSpiral: mdiLightbulbCflSpiral, + mdiLightbulbCflSpiralOff: mdiLightbulbCflSpiralOff, + mdiLightbulbGroup: mdiLightbulbGroup, + mdiLightbulbGroupOff: mdiLightbulbGroupOff, + mdiLightbulbGroupOffOutline: mdiLightbulbGroupOffOutline, + mdiLightbulbGroupOutline: mdiLightbulbGroupOutline, + mdiLightbulbMultiple: mdiLightbulbMultiple, + mdiLightbulbMultipleOff: mdiLightbulbMultipleOff, + mdiLightbulbMultipleOffOutline: mdiLightbulbMultipleOffOutline, + mdiLightbulbMultipleOutline: mdiLightbulbMultipleOutline, + mdiLightbulbOff: mdiLightbulbOff, + mdiLightbulbOffOutline: mdiLightbulbOffOutline, + mdiLightbulbOn: mdiLightbulbOn, + mdiLightbulbOnOutline: mdiLightbulbOnOutline, + mdiLightbulbOutline: mdiLightbulbOutline, + mdiLighthouse: mdiLighthouse, + mdiLighthouseOn: mdiLighthouseOn, + mdiLightningBolt: mdiLightningBolt, + mdiLightningBoltOutline: mdiLightningBoltOutline, + mdiLingerie: mdiLingerie, + mdiLink: mdiLink, + mdiLinkBox: mdiLinkBox, + mdiLinkBoxOutline: mdiLinkBoxOutline, + mdiLinkBoxVariant: mdiLinkBoxVariant, + mdiLinkBoxVariantOutline: mdiLinkBoxVariantOutline, + mdiLinkLock: mdiLinkLock, + mdiLinkOff: mdiLinkOff, + mdiLinkPlus: mdiLinkPlus, + mdiLinkVariant: mdiLinkVariant, + mdiLinkVariantMinus: mdiLinkVariantMinus, + mdiLinkVariantOff: mdiLinkVariantOff, + mdiLinkVariantPlus: mdiLinkVariantPlus, + mdiLinkVariantRemove: mdiLinkVariantRemove, + mdiLinkedin: mdiLinkedin, + mdiLinux: mdiLinux, + mdiLinuxMint: mdiLinuxMint, + mdiLipstick: mdiLipstick, + mdiListStatus: mdiListStatus, + mdiLitecoin: mdiLitecoin, + mdiLoading: mdiLoading, + mdiLocationEnter: mdiLocationEnter, + mdiLocationExit: mdiLocationExit, + mdiLock: mdiLock, + mdiLockAlert: mdiLockAlert, + mdiLockAlertOutline: mdiLockAlertOutline, + mdiLockCheck: mdiLockCheck, + mdiLockCheckOutline: mdiLockCheckOutline, + mdiLockClock: mdiLockClock, + mdiLockMinus: mdiLockMinus, + mdiLockMinusOutline: mdiLockMinusOutline, + mdiLockOff: mdiLockOff, + mdiLockOffOutline: mdiLockOffOutline, + mdiLockOpen: mdiLockOpen, + mdiLockOpenAlert: mdiLockOpenAlert, + mdiLockOpenAlertOutline: mdiLockOpenAlertOutline, + mdiLockOpenCheck: mdiLockOpenCheck, + mdiLockOpenCheckOutline: mdiLockOpenCheckOutline, + mdiLockOpenMinus: mdiLockOpenMinus, + mdiLockOpenMinusOutline: mdiLockOpenMinusOutline, + mdiLockOpenOutline: mdiLockOpenOutline, + mdiLockOpenPlus: mdiLockOpenPlus, + mdiLockOpenPlusOutline: mdiLockOpenPlusOutline, + mdiLockOpenRemove: mdiLockOpenRemove, + mdiLockOpenRemoveOutline: mdiLockOpenRemoveOutline, + mdiLockOpenVariant: mdiLockOpenVariant, + mdiLockOpenVariantOutline: mdiLockOpenVariantOutline, + mdiLockOutline: mdiLockOutline, + mdiLockPattern: mdiLockPattern, + mdiLockPlus: mdiLockPlus, + mdiLockPlusOutline: mdiLockPlusOutline, + mdiLockQuestion: mdiLockQuestion, + mdiLockRemove: mdiLockRemove, + mdiLockRemoveOutline: mdiLockRemoveOutline, + mdiLockReset: mdiLockReset, + mdiLockSmart: mdiLockSmart, + mdiLocker: mdiLocker, + mdiLockerMultiple: mdiLockerMultiple, + mdiLogin: mdiLogin, + mdiLoginVariant: mdiLoginVariant, + mdiLogout: mdiLogout, + mdiLogoutVariant: mdiLogoutVariant, + mdiLongitude: mdiLongitude, + mdiLooks: mdiLooks, + mdiLotion: mdiLotion, + mdiLotionOutline: mdiLotionOutline, + mdiLotionPlus: mdiLotionPlus, + mdiLotionPlusOutline: mdiLotionPlusOutline, + mdiLoupe: mdiLoupe, + mdiLumx: mdiLumx, + mdiLungs: mdiLungs, + mdiMagnet: mdiMagnet, + mdiMagnetOn: mdiMagnetOn, + mdiMagnify: mdiMagnify, + mdiMagnifyClose: mdiMagnifyClose, + mdiMagnifyMinus: mdiMagnifyMinus, + mdiMagnifyMinusCursor: mdiMagnifyMinusCursor, + mdiMagnifyMinusOutline: mdiMagnifyMinusOutline, + mdiMagnifyPlus: mdiMagnifyPlus, + mdiMagnifyPlusCursor: mdiMagnifyPlusCursor, + mdiMagnifyPlusOutline: mdiMagnifyPlusOutline, + mdiMagnifyRemoveCursor: mdiMagnifyRemoveCursor, + mdiMagnifyRemoveOutline: mdiMagnifyRemoveOutline, + mdiMagnifyScan: mdiMagnifyScan, + mdiMail: mdiMail, + mdiMailbox: mdiMailbox, + mdiMailboxOpen: mdiMailboxOpen, + mdiMailboxOpenOutline: mdiMailboxOpenOutline, + mdiMailboxOpenUp: mdiMailboxOpenUp, + mdiMailboxOpenUpOutline: mdiMailboxOpenUpOutline, + mdiMailboxOutline: mdiMailboxOutline, + mdiMailboxUp: mdiMailboxUp, + mdiMailboxUpOutline: mdiMailboxUpOutline, + mdiManjaro: mdiManjaro, + mdiMap: mdiMap, + mdiMapCheck: mdiMapCheck, + mdiMapCheckOutline: mdiMapCheckOutline, + mdiMapClock: mdiMapClock, + mdiMapClockOutline: mdiMapClockOutline, + mdiMapLegend: mdiMapLegend, + mdiMapMarker: mdiMapMarker, + mdiMapMarkerAlert: mdiMapMarkerAlert, + mdiMapMarkerAlertOutline: mdiMapMarkerAlertOutline, + mdiMapMarkerCheck: mdiMapMarkerCheck, + mdiMapMarkerCheckOutline: mdiMapMarkerCheckOutline, + mdiMapMarkerCircle: mdiMapMarkerCircle, + mdiMapMarkerDistance: mdiMapMarkerDistance, + mdiMapMarkerDown: mdiMapMarkerDown, + mdiMapMarkerLeft: mdiMapMarkerLeft, + mdiMapMarkerLeftOutline: mdiMapMarkerLeftOutline, + mdiMapMarkerMinus: mdiMapMarkerMinus, + mdiMapMarkerMinusOutline: mdiMapMarkerMinusOutline, + mdiMapMarkerMultiple: mdiMapMarkerMultiple, + mdiMapMarkerMultipleOutline: mdiMapMarkerMultipleOutline, + mdiMapMarkerOff: mdiMapMarkerOff, + mdiMapMarkerOffOutline: mdiMapMarkerOffOutline, + mdiMapMarkerOutline: mdiMapMarkerOutline, + mdiMapMarkerPath: mdiMapMarkerPath, + mdiMapMarkerPlus: mdiMapMarkerPlus, + mdiMapMarkerPlusOutline: mdiMapMarkerPlusOutline, + mdiMapMarkerQuestion: mdiMapMarkerQuestion, + mdiMapMarkerQuestionOutline: mdiMapMarkerQuestionOutline, + mdiMapMarkerRadius: mdiMapMarkerRadius, + mdiMapMarkerRadiusOutline: mdiMapMarkerRadiusOutline, + mdiMapMarkerRemove: mdiMapMarkerRemove, + mdiMapMarkerRemoveOutline: mdiMapMarkerRemoveOutline, + mdiMapMarkerRemoveVariant: mdiMapMarkerRemoveVariant, + mdiMapMarkerRight: mdiMapMarkerRight, + mdiMapMarkerRightOutline: mdiMapMarkerRightOutline, + mdiMapMarkerStar: mdiMapMarkerStar, + mdiMapMarkerStarOutline: mdiMapMarkerStarOutline, + mdiMapMarkerUp: mdiMapMarkerUp, + mdiMapMinus: mdiMapMinus, + mdiMapOutline: mdiMapOutline, + mdiMapPlus: mdiMapPlus, + mdiMapSearch: mdiMapSearch, + mdiMapSearchOutline: mdiMapSearchOutline, + mdiMapbox: mdiMapbox, + mdiMargin: mdiMargin, + mdiMarker: mdiMarker, + mdiMarkerCancel: mdiMarkerCancel, + mdiMarkerCheck: mdiMarkerCheck, + mdiMastodon: mdiMastodon, + mdiMaterialDesign: mdiMaterialDesign, + mdiMaterialUi: mdiMaterialUi, + mdiMathCompass: mdiMathCompass, + mdiMathCos: mdiMathCos, + mdiMathIntegral: mdiMathIntegral, + mdiMathIntegralBox: mdiMathIntegralBox, + mdiMathLog: mdiMathLog, + mdiMathNorm: mdiMathNorm, + mdiMathNormBox: mdiMathNormBox, + mdiMathSin: mdiMathSin, + mdiMathTan: mdiMathTan, + mdiMatrix: mdiMatrix, + mdiMedal: mdiMedal, + mdiMedalOutline: mdiMedalOutline, + mdiMedicalBag: mdiMedicalBag, + mdiMeditation: mdiMeditation, + mdiMemory: mdiMemory, + mdiMenu: mdiMenu, + mdiMenuDown: mdiMenuDown, + mdiMenuDownOutline: mdiMenuDownOutline, + mdiMenuLeft: mdiMenuLeft, + mdiMenuLeftOutline: mdiMenuLeftOutline, + mdiMenuOpen: mdiMenuOpen, + mdiMenuRight: mdiMenuRight, + mdiMenuRightOutline: mdiMenuRightOutline, + mdiMenuSwap: mdiMenuSwap, + mdiMenuSwapOutline: mdiMenuSwapOutline, + mdiMenuUp: mdiMenuUp, + mdiMenuUpOutline: mdiMenuUpOutline, + mdiMerge: mdiMerge, + mdiMessage: mdiMessage, + mdiMessageAlert: mdiMessageAlert, + mdiMessageAlertOutline: mdiMessageAlertOutline, + mdiMessageArrowLeft: mdiMessageArrowLeft, + mdiMessageArrowLeftOutline: mdiMessageArrowLeftOutline, + mdiMessageArrowRight: mdiMessageArrowRight, + mdiMessageArrowRightOutline: mdiMessageArrowRightOutline, + mdiMessageBookmark: mdiMessageBookmark, + mdiMessageBookmarkOutline: mdiMessageBookmarkOutline, + mdiMessageBulleted: mdiMessageBulleted, + mdiMessageBulletedOff: mdiMessageBulletedOff, + mdiMessageCog: mdiMessageCog, + mdiMessageCogOutline: mdiMessageCogOutline, + mdiMessageDraw: mdiMessageDraw, + mdiMessageFlash: mdiMessageFlash, + mdiMessageFlashOutline: mdiMessageFlashOutline, + mdiMessageImage: mdiMessageImage, + mdiMessageImageOutline: mdiMessageImageOutline, + mdiMessageLock: mdiMessageLock, + mdiMessageLockOutline: mdiMessageLockOutline, + mdiMessageMinus: mdiMessageMinus, + mdiMessageMinusOutline: mdiMessageMinusOutline, + mdiMessageOff: mdiMessageOff, + mdiMessageOffOutline: mdiMessageOffOutline, + mdiMessageOutline: mdiMessageOutline, + mdiMessagePlus: mdiMessagePlus, + mdiMessagePlusOutline: mdiMessagePlusOutline, + mdiMessageProcessing: mdiMessageProcessing, + mdiMessageProcessingOutline: mdiMessageProcessingOutline, + mdiMessageQuestion: mdiMessageQuestion, + mdiMessageQuestionOutline: mdiMessageQuestionOutline, + mdiMessageReply: mdiMessageReply, + mdiMessageReplyOutline: mdiMessageReplyOutline, + mdiMessageReplyText: mdiMessageReplyText, + mdiMessageReplyTextOutline: mdiMessageReplyTextOutline, + mdiMessageSettings: mdiMessageSettings, + mdiMessageSettingsOutline: mdiMessageSettingsOutline, + mdiMessageText: mdiMessageText, + mdiMessageTextClock: mdiMessageTextClock, + mdiMessageTextClockOutline: mdiMessageTextClockOutline, + mdiMessageTextLock: mdiMessageTextLock, + mdiMessageTextLockOutline: mdiMessageTextLockOutline, + mdiMessageTextOutline: mdiMessageTextOutline, + mdiMessageVideo: mdiMessageVideo, + mdiMeteor: mdiMeteor, + mdiMetronome: mdiMetronome, + mdiMetronomeTick: mdiMetronomeTick, + mdiMicroSd: mdiMicroSd, + mdiMicrophone: mdiMicrophone, + mdiMicrophoneMinus: mdiMicrophoneMinus, + mdiMicrophoneOff: mdiMicrophoneOff, + mdiMicrophoneOutline: mdiMicrophoneOutline, + mdiMicrophonePlus: mdiMicrophonePlus, + mdiMicrophoneSettings: mdiMicrophoneSettings, + mdiMicrophoneVariant: mdiMicrophoneVariant, + mdiMicrophoneVariantOff: mdiMicrophoneVariantOff, + mdiMicroscope: mdiMicroscope, + mdiMicrosoft: mdiMicrosoft, + mdiMicrosoftAccess: mdiMicrosoftAccess, + mdiMicrosoftAzure: mdiMicrosoftAzure, + mdiMicrosoftAzureDevops: mdiMicrosoftAzureDevops, + mdiMicrosoftBing: mdiMicrosoftBing, + mdiMicrosoftDynamics365: mdiMicrosoftDynamics365, + mdiMicrosoftEdge: mdiMicrosoftEdge, + mdiMicrosoftEdgeLegacy: mdiMicrosoftEdgeLegacy, + mdiMicrosoftExcel: mdiMicrosoftExcel, + mdiMicrosoftInternetExplorer: mdiMicrosoftInternetExplorer, + mdiMicrosoftOffice: mdiMicrosoftOffice, + mdiMicrosoftOnedrive: mdiMicrosoftOnedrive, + mdiMicrosoftOnenote: mdiMicrosoftOnenote, + mdiMicrosoftOutlook: mdiMicrosoftOutlook, + mdiMicrosoftPowerpoint: mdiMicrosoftPowerpoint, + mdiMicrosoftSharepoint: mdiMicrosoftSharepoint, + mdiMicrosoftTeams: mdiMicrosoftTeams, + mdiMicrosoftVisualStudio: mdiMicrosoftVisualStudio, + mdiMicrosoftVisualStudioCode: mdiMicrosoftVisualStudioCode, + mdiMicrosoftWindows: mdiMicrosoftWindows, + mdiMicrosoftWindowsClassic: mdiMicrosoftWindowsClassic, + mdiMicrosoftWord: mdiMicrosoftWord, + mdiMicrosoftXbox: mdiMicrosoftXbox, + mdiMicrosoftXboxController: mdiMicrosoftXboxController, + mdiMicrosoftXboxControllerBatteryAlert: mdiMicrosoftXboxControllerBatteryAlert, + mdiMicrosoftXboxControllerBatteryCharging: mdiMicrosoftXboxControllerBatteryCharging, + mdiMicrosoftXboxControllerBatteryEmpty: mdiMicrosoftXboxControllerBatteryEmpty, + mdiMicrosoftXboxControllerBatteryFull: mdiMicrosoftXboxControllerBatteryFull, + mdiMicrosoftXboxControllerBatteryLow: mdiMicrosoftXboxControllerBatteryLow, + mdiMicrosoftXboxControllerBatteryMedium: mdiMicrosoftXboxControllerBatteryMedium, + mdiMicrosoftXboxControllerBatteryUnknown: mdiMicrosoftXboxControllerBatteryUnknown, + mdiMicrosoftXboxControllerMenu: mdiMicrosoftXboxControllerMenu, + mdiMicrosoftXboxControllerOff: mdiMicrosoftXboxControllerOff, + mdiMicrosoftXboxControllerView: mdiMicrosoftXboxControllerView, + mdiMicrosoftYammer: mdiMicrosoftYammer, + mdiMicrowave: mdiMicrowave, + mdiMicrowaveOff: mdiMicrowaveOff, + mdiMiddleware: mdiMiddleware, + mdiMiddlewareOutline: mdiMiddlewareOutline, + mdiMidi: mdiMidi, + mdiMidiPort: mdiMidiPort, + mdiMine: mdiMine, + mdiMinecraft: mdiMinecraft, + mdiMiniSd: mdiMiniSd, + mdiMinidisc: mdiMinidisc, + mdiMinus: mdiMinus, + mdiMinusBox: mdiMinusBox, + mdiMinusBoxMultiple: mdiMinusBoxMultiple, + mdiMinusBoxMultipleOutline: mdiMinusBoxMultipleOutline, + mdiMinusBoxOutline: mdiMinusBoxOutline, + mdiMinusCircle: mdiMinusCircle, + mdiMinusCircleMultiple: mdiMinusCircleMultiple, + mdiMinusCircleMultipleOutline: mdiMinusCircleMultipleOutline, + mdiMinusCircleOff: mdiMinusCircleOff, + mdiMinusCircleOffOutline: mdiMinusCircleOffOutline, + mdiMinusCircleOutline: mdiMinusCircleOutline, + mdiMinusNetwork: mdiMinusNetwork, + mdiMinusNetworkOutline: mdiMinusNetworkOutline, + mdiMinusThick: mdiMinusThick, + mdiMirror: mdiMirror, + mdiMixedMartialArts: mdiMixedMartialArts, + mdiMixedReality: mdiMixedReality, + mdiMolecule: mdiMolecule, + mdiMoleculeCo: mdiMoleculeCo, + mdiMoleculeCo2: mdiMoleculeCo2, + mdiMonitor: mdiMonitor, + mdiMonitorCellphone: mdiMonitorCellphone, + mdiMonitorCellphoneStar: mdiMonitorCellphoneStar, + mdiMonitorClean: mdiMonitorClean, + mdiMonitorDashboard: mdiMonitorDashboard, + mdiMonitorEdit: mdiMonitorEdit, + mdiMonitorEye: mdiMonitorEye, + mdiMonitorLock: mdiMonitorLock, + mdiMonitorMultiple: mdiMonitorMultiple, + mdiMonitorOff: mdiMonitorOff, + mdiMonitorScreenshot: mdiMonitorScreenshot, + mdiMonitorShare: mdiMonitorShare, + mdiMonitorSpeaker: mdiMonitorSpeaker, + mdiMonitorSpeakerOff: mdiMonitorSpeakerOff, + mdiMonitorStar: mdiMonitorStar, + mdiMoonFirstQuarter: mdiMoonFirstQuarter, + mdiMoonFull: mdiMoonFull, + mdiMoonLastQuarter: mdiMoonLastQuarter, + mdiMoonNew: mdiMoonNew, + mdiMoonWaningCrescent: mdiMoonWaningCrescent, + mdiMoonWaningGibbous: mdiMoonWaningGibbous, + mdiMoonWaxingCrescent: mdiMoonWaxingCrescent, + mdiMoonWaxingGibbous: mdiMoonWaxingGibbous, + mdiMoped: mdiMoped, + mdiMopedElectric: mdiMopedElectric, + mdiMopedElectricOutline: mdiMopedElectricOutline, + mdiMopedOutline: mdiMopedOutline, + mdiMore: mdiMore, + mdiMotherHeart: mdiMotherHeart, + mdiMotherNurse: mdiMotherNurse, + mdiMotion: mdiMotion, + mdiMotionOutline: mdiMotionOutline, + mdiMotionPause: mdiMotionPause, + mdiMotionPauseOutline: mdiMotionPauseOutline, + mdiMotionPlay: mdiMotionPlay, + mdiMotionPlayOutline: mdiMotionPlayOutline, + mdiMotionSensor: mdiMotionSensor, + mdiMotionSensorOff: mdiMotionSensorOff, + mdiMotorbike: mdiMotorbike, + mdiMotorbikeElectric: mdiMotorbikeElectric, + mdiMouse: mdiMouse, + mdiMouseBluetooth: mdiMouseBluetooth, + mdiMouseMoveDown: mdiMouseMoveDown, + mdiMouseMoveUp: mdiMouseMoveUp, + mdiMouseMoveVertical: mdiMouseMoveVertical, + mdiMouseOff: mdiMouseOff, + mdiMouseVariant: mdiMouseVariant, + mdiMouseVariantOff: mdiMouseVariantOff, + mdiMoveResize: mdiMoveResize, + mdiMoveResizeVariant: mdiMoveResizeVariant, + mdiMovie: mdiMovie, + mdiMovieCheck: mdiMovieCheck, + mdiMovieCheckOutline: mdiMovieCheckOutline, + mdiMovieCog: mdiMovieCog, + mdiMovieCogOutline: mdiMovieCogOutline, + mdiMovieEdit: mdiMovieEdit, + mdiMovieEditOutline: mdiMovieEditOutline, + mdiMovieFilter: mdiMovieFilter, + mdiMovieFilterOutline: mdiMovieFilterOutline, + mdiMovieMinus: mdiMovieMinus, + mdiMovieMinusOutline: mdiMovieMinusOutline, + mdiMovieOff: mdiMovieOff, + mdiMovieOffOutline: mdiMovieOffOutline, + mdiMovieOpen: mdiMovieOpen, + mdiMovieOpenCheck: mdiMovieOpenCheck, + mdiMovieOpenCheckOutline: mdiMovieOpenCheckOutline, + mdiMovieOpenCog: mdiMovieOpenCog, + mdiMovieOpenCogOutline: mdiMovieOpenCogOutline, + mdiMovieOpenEdit: mdiMovieOpenEdit, + mdiMovieOpenEditOutline: mdiMovieOpenEditOutline, + mdiMovieOpenMinus: mdiMovieOpenMinus, + mdiMovieOpenMinusOutline: mdiMovieOpenMinusOutline, + mdiMovieOpenOff: mdiMovieOpenOff, + mdiMovieOpenOffOutline: mdiMovieOpenOffOutline, + mdiMovieOpenOutline: mdiMovieOpenOutline, + mdiMovieOpenPlay: mdiMovieOpenPlay, + mdiMovieOpenPlayOutline: mdiMovieOpenPlayOutline, + mdiMovieOpenPlus: mdiMovieOpenPlus, + mdiMovieOpenPlusOutline: mdiMovieOpenPlusOutline, + mdiMovieOpenRemove: mdiMovieOpenRemove, + mdiMovieOpenRemoveOutline: mdiMovieOpenRemoveOutline, + mdiMovieOpenSettings: mdiMovieOpenSettings, + mdiMovieOpenSettingsOutline: mdiMovieOpenSettingsOutline, + mdiMovieOpenStar: mdiMovieOpenStar, + mdiMovieOpenStarOutline: mdiMovieOpenStarOutline, + mdiMovieOutline: mdiMovieOutline, + mdiMoviePlay: mdiMoviePlay, + mdiMoviePlayOutline: mdiMoviePlayOutline, + mdiMoviePlus: mdiMoviePlus, + mdiMoviePlusOutline: mdiMoviePlusOutline, + mdiMovieRemove: mdiMovieRemove, + mdiMovieRemoveOutline: mdiMovieRemoveOutline, + mdiMovieRoll: mdiMovieRoll, + mdiMovieSearch: mdiMovieSearch, + mdiMovieSearchOutline: mdiMovieSearchOutline, + mdiMovieSettings: mdiMovieSettings, + mdiMovieSettingsOutline: mdiMovieSettingsOutline, + mdiMovieStar: mdiMovieStar, + mdiMovieStarOutline: mdiMovieStarOutline, + mdiMower: mdiMower, + mdiMowerBag: mdiMowerBag, + mdiMuffin: mdiMuffin, + mdiMultiplication: mdiMultiplication, + mdiMultiplicationBox: mdiMultiplicationBox, + mdiMushroom: mdiMushroom, + mdiMushroomOff: mdiMushroomOff, + mdiMushroomOffOutline: mdiMushroomOffOutline, + mdiMushroomOutline: mdiMushroomOutline, + mdiMusic: mdiMusic, + mdiMusicAccidentalDoubleFlat: mdiMusicAccidentalDoubleFlat, + mdiMusicAccidentalDoubleSharp: mdiMusicAccidentalDoubleSharp, + mdiMusicAccidentalFlat: mdiMusicAccidentalFlat, + mdiMusicAccidentalNatural: mdiMusicAccidentalNatural, + mdiMusicAccidentalSharp: mdiMusicAccidentalSharp, + mdiMusicBox: mdiMusicBox, + mdiMusicBoxMultiple: mdiMusicBoxMultiple, + mdiMusicBoxMultipleOutline: mdiMusicBoxMultipleOutline, + mdiMusicBoxOutline: mdiMusicBoxOutline, + mdiMusicCircle: mdiMusicCircle, + mdiMusicCircleOutline: mdiMusicCircleOutline, + mdiMusicClefAlto: mdiMusicClefAlto, + mdiMusicClefBass: mdiMusicClefBass, + mdiMusicClefTreble: mdiMusicClefTreble, + mdiMusicNote: mdiMusicNote, + mdiMusicNoteBluetooth: mdiMusicNoteBluetooth, + mdiMusicNoteBluetoothOff: mdiMusicNoteBluetoothOff, + mdiMusicNoteEighth: mdiMusicNoteEighth, + mdiMusicNoteEighthDotted: mdiMusicNoteEighthDotted, + mdiMusicNoteHalf: mdiMusicNoteHalf, + mdiMusicNoteHalfDotted: mdiMusicNoteHalfDotted, + mdiMusicNoteOff: mdiMusicNoteOff, + mdiMusicNoteOffOutline: mdiMusicNoteOffOutline, + mdiMusicNoteOutline: mdiMusicNoteOutline, + mdiMusicNotePlus: mdiMusicNotePlus, + mdiMusicNoteQuarter: mdiMusicNoteQuarter, + mdiMusicNoteQuarterDotted: mdiMusicNoteQuarterDotted, + mdiMusicNoteSixteenth: mdiMusicNoteSixteenth, + mdiMusicNoteSixteenthDotted: mdiMusicNoteSixteenthDotted, + mdiMusicNoteWhole: mdiMusicNoteWhole, + mdiMusicNoteWholeDotted: mdiMusicNoteWholeDotted, + mdiMusicOff: mdiMusicOff, + mdiMusicRestEighth: mdiMusicRestEighth, + mdiMusicRestHalf: mdiMusicRestHalf, + mdiMusicRestQuarter: mdiMusicRestQuarter, + mdiMusicRestSixteenth: mdiMusicRestSixteenth, + mdiMusicRestWhole: mdiMusicRestWhole, + mdiMustache: mdiMustache, + mdiNail: mdiNail, + mdiNas: mdiNas, + mdiNativescript: mdiNativescript, + mdiNature: mdiNature, + mdiNaturePeople: mdiNaturePeople, + mdiNavigation: mdiNavigation, + mdiNavigationOutline: mdiNavigationOutline, + mdiNearMe: mdiNearMe, + mdiNecklace: mdiNecklace, + mdiNeedle: mdiNeedle, + mdiNetflix: mdiNetflix, + mdiNetwork: mdiNetwork, + mdiNetworkOff: mdiNetworkOff, + mdiNetworkOffOutline: mdiNetworkOffOutline, + mdiNetworkOutline: mdiNetworkOutline, + mdiNetworkStrength1: mdiNetworkStrength1, + mdiNetworkStrength1Alert: mdiNetworkStrength1Alert, + mdiNetworkStrength2: mdiNetworkStrength2, + mdiNetworkStrength2Alert: mdiNetworkStrength2Alert, + mdiNetworkStrength3: mdiNetworkStrength3, + mdiNetworkStrength3Alert: mdiNetworkStrength3Alert, + mdiNetworkStrength4: mdiNetworkStrength4, + mdiNetworkStrength4Alert: mdiNetworkStrength4Alert, + mdiNetworkStrengthOff: mdiNetworkStrengthOff, + mdiNetworkStrengthOffOutline: mdiNetworkStrengthOffOutline, + mdiNetworkStrengthOutline: mdiNetworkStrengthOutline, + mdiNewBox: mdiNewBox, + mdiNewspaper: mdiNewspaper, + mdiNewspaperMinus: mdiNewspaperMinus, + mdiNewspaperPlus: mdiNewspaperPlus, + mdiNewspaperVariant: mdiNewspaperVariant, + mdiNewspaperVariantMultiple: mdiNewspaperVariantMultiple, + mdiNewspaperVariantMultipleOutline: mdiNewspaperVariantMultipleOutline, + mdiNewspaperVariantOutline: mdiNewspaperVariantOutline, + mdiNfc: mdiNfc, + mdiNfcSearchVariant: mdiNfcSearchVariant, + mdiNfcTap: mdiNfcTap, + mdiNfcVariant: mdiNfcVariant, + mdiNfcVariantOff: mdiNfcVariantOff, + mdiNinja: mdiNinja, + mdiNintendoGameBoy: mdiNintendoGameBoy, + mdiNintendoSwitch: mdiNintendoSwitch, + mdiNintendoWii: mdiNintendoWii, + mdiNintendoWiiu: mdiNintendoWiiu, + mdiNix: mdiNix, + mdiNodejs: mdiNodejs, + mdiNoodles: mdiNoodles, + mdiNotEqual: mdiNotEqual, + mdiNotEqualVariant: mdiNotEqualVariant, + mdiNote: mdiNote, + mdiNoteMinus: mdiNoteMinus, + mdiNoteMinusOutline: mdiNoteMinusOutline, + mdiNoteMultiple: mdiNoteMultiple, + mdiNoteMultipleOutline: mdiNoteMultipleOutline, + mdiNoteOutline: mdiNoteOutline, + mdiNotePlus: mdiNotePlus, + mdiNotePlusOutline: mdiNotePlusOutline, + mdiNoteRemove: mdiNoteRemove, + mdiNoteRemoveOutline: mdiNoteRemoveOutline, + mdiNoteSearch: mdiNoteSearch, + mdiNoteSearchOutline: mdiNoteSearchOutline, + mdiNoteText: mdiNoteText, + mdiNoteTextOutline: mdiNoteTextOutline, + mdiNotebook: mdiNotebook, + mdiNotebookCheck: mdiNotebookCheck, + mdiNotebookCheckOutline: mdiNotebookCheckOutline, + mdiNotebookEdit: mdiNotebookEdit, + mdiNotebookEditOutline: mdiNotebookEditOutline, + mdiNotebookMinus: mdiNotebookMinus, + mdiNotebookMinusOutline: mdiNotebookMinusOutline, + mdiNotebookMultiple: mdiNotebookMultiple, + mdiNotebookOutline: mdiNotebookOutline, + mdiNotebookPlus: mdiNotebookPlus, + mdiNotebookPlusOutline: mdiNotebookPlusOutline, + mdiNotebookRemove: mdiNotebookRemove, + mdiNotebookRemoveOutline: mdiNotebookRemoveOutline, + mdiNotificationClearAll: mdiNotificationClearAll, + mdiNpm: mdiNpm, + mdiNuke: mdiNuke, + mdiNull: mdiNull, + mdiNumeric: mdiNumeric, + mdiNumeric0: mdiNumeric0, + mdiNumeric0Box: mdiNumeric0Box, + mdiNumeric0BoxMultiple: mdiNumeric0BoxMultiple, + mdiNumeric0BoxMultipleOutline: mdiNumeric0BoxMultipleOutline, + mdiNumeric0BoxOutline: mdiNumeric0BoxOutline, + mdiNumeric0Circle: mdiNumeric0Circle, + mdiNumeric0CircleOutline: mdiNumeric0CircleOutline, + mdiNumeric1: mdiNumeric1, + mdiNumeric1Box: mdiNumeric1Box, + mdiNumeric1BoxMultiple: mdiNumeric1BoxMultiple, + mdiNumeric1BoxMultipleOutline: mdiNumeric1BoxMultipleOutline, + mdiNumeric1BoxOutline: mdiNumeric1BoxOutline, + mdiNumeric1Circle: mdiNumeric1Circle, + mdiNumeric1CircleOutline: mdiNumeric1CircleOutline, + mdiNumeric10: mdiNumeric10, + mdiNumeric10Box: mdiNumeric10Box, + mdiNumeric10BoxMultiple: mdiNumeric10BoxMultiple, + mdiNumeric10BoxMultipleOutline: mdiNumeric10BoxMultipleOutline, + mdiNumeric10BoxOutline: mdiNumeric10BoxOutline, + mdiNumeric10Circle: mdiNumeric10Circle, + mdiNumeric10CircleOutline: mdiNumeric10CircleOutline, + mdiNumeric2: mdiNumeric2, + mdiNumeric2Box: mdiNumeric2Box, + mdiNumeric2BoxMultiple: mdiNumeric2BoxMultiple, + mdiNumeric2BoxMultipleOutline: mdiNumeric2BoxMultipleOutline, + mdiNumeric2BoxOutline: mdiNumeric2BoxOutline, + mdiNumeric2Circle: mdiNumeric2Circle, + mdiNumeric2CircleOutline: mdiNumeric2CircleOutline, + mdiNumeric3: mdiNumeric3, + mdiNumeric3Box: mdiNumeric3Box, + mdiNumeric3BoxMultiple: mdiNumeric3BoxMultiple, + mdiNumeric3BoxMultipleOutline: mdiNumeric3BoxMultipleOutline, + mdiNumeric3BoxOutline: mdiNumeric3BoxOutline, + mdiNumeric3Circle: mdiNumeric3Circle, + mdiNumeric3CircleOutline: mdiNumeric3CircleOutline, + mdiNumeric4: mdiNumeric4, + mdiNumeric4Box: mdiNumeric4Box, + mdiNumeric4BoxMultiple: mdiNumeric4BoxMultiple, + mdiNumeric4BoxMultipleOutline: mdiNumeric4BoxMultipleOutline, + mdiNumeric4BoxOutline: mdiNumeric4BoxOutline, + mdiNumeric4Circle: mdiNumeric4Circle, + mdiNumeric4CircleOutline: mdiNumeric4CircleOutline, + mdiNumeric5: mdiNumeric5, + mdiNumeric5Box: mdiNumeric5Box, + mdiNumeric5BoxMultiple: mdiNumeric5BoxMultiple, + mdiNumeric5BoxMultipleOutline: mdiNumeric5BoxMultipleOutline, + mdiNumeric5BoxOutline: mdiNumeric5BoxOutline, + mdiNumeric5Circle: mdiNumeric5Circle, + mdiNumeric5CircleOutline: mdiNumeric5CircleOutline, + mdiNumeric6: mdiNumeric6, + mdiNumeric6Box: mdiNumeric6Box, + mdiNumeric6BoxMultiple: mdiNumeric6BoxMultiple, + mdiNumeric6BoxMultipleOutline: mdiNumeric6BoxMultipleOutline, + mdiNumeric6BoxOutline: mdiNumeric6BoxOutline, + mdiNumeric6Circle: mdiNumeric6Circle, + mdiNumeric6CircleOutline: mdiNumeric6CircleOutline, + mdiNumeric7: mdiNumeric7, + mdiNumeric7Box: mdiNumeric7Box, + mdiNumeric7BoxMultiple: mdiNumeric7BoxMultiple, + mdiNumeric7BoxMultipleOutline: mdiNumeric7BoxMultipleOutline, + mdiNumeric7BoxOutline: mdiNumeric7BoxOutline, + mdiNumeric7Circle: mdiNumeric7Circle, + mdiNumeric7CircleOutline: mdiNumeric7CircleOutline, + mdiNumeric8: mdiNumeric8, + mdiNumeric8Box: mdiNumeric8Box, + mdiNumeric8BoxMultiple: mdiNumeric8BoxMultiple, + mdiNumeric8BoxMultipleOutline: mdiNumeric8BoxMultipleOutline, + mdiNumeric8BoxOutline: mdiNumeric8BoxOutline, + mdiNumeric8Circle: mdiNumeric8Circle, + mdiNumeric8CircleOutline: mdiNumeric8CircleOutline, + mdiNumeric9: mdiNumeric9, + mdiNumeric9Box: mdiNumeric9Box, + mdiNumeric9BoxMultiple: mdiNumeric9BoxMultiple, + mdiNumeric9BoxMultipleOutline: mdiNumeric9BoxMultipleOutline, + mdiNumeric9BoxOutline: mdiNumeric9BoxOutline, + mdiNumeric9Circle: mdiNumeric9Circle, + mdiNumeric9CircleOutline: mdiNumeric9CircleOutline, + mdiNumeric9Plus: mdiNumeric9Plus, + mdiNumeric9PlusBox: mdiNumeric9PlusBox, + mdiNumeric9PlusBoxMultiple: mdiNumeric9PlusBoxMultiple, + mdiNumeric9PlusBoxMultipleOutline: mdiNumeric9PlusBoxMultipleOutline, + mdiNumeric9PlusBoxOutline: mdiNumeric9PlusBoxOutline, + mdiNumeric9PlusCircle: mdiNumeric9PlusCircle, + mdiNumeric9PlusCircleOutline: mdiNumeric9PlusCircleOutline, + mdiNumericNegative1: mdiNumericNegative1, + mdiNumericPositive1: mdiNumericPositive1, + mdiNut: mdiNut, + mdiNutrition: mdiNutrition, + mdiNuxt: mdiNuxt, + mdiOar: mdiOar, + mdiOcarina: mdiOcarina, + mdiOci: mdiOci, + mdiOcr: mdiOcr, + mdiOctagon: mdiOctagon, + mdiOctagonOutline: mdiOctagonOutline, + mdiOctagram: mdiOctagram, + mdiOctagramOutline: mdiOctagramOutline, + mdiOdnoklassniki: mdiOdnoklassniki, + mdiOffer: mdiOffer, + mdiOfficeBuilding: mdiOfficeBuilding, + mdiOfficeBuildingMarker: mdiOfficeBuildingMarker, + mdiOfficeBuildingMarkerOutline: mdiOfficeBuildingMarkerOutline, + mdiOfficeBuildingOutline: mdiOfficeBuildingOutline, + mdiOil: mdiOil, + mdiOilLamp: mdiOilLamp, + mdiOilLevel: mdiOilLevel, + mdiOilTemperature: mdiOilTemperature, + mdiOmega: mdiOmega, + mdiOneUp: mdiOneUp, + mdiOnepassword: mdiOnepassword, + mdiOpacity: mdiOpacity, + mdiOpenInApp: mdiOpenInApp, + mdiOpenInNew: mdiOpenInNew, + mdiOpenSourceInitiative: mdiOpenSourceInitiative, + mdiOpenid: mdiOpenid, + mdiOpera: mdiOpera, + mdiOrbit: mdiOrbit, + mdiOrbitVariant: mdiOrbitVariant, + mdiOrderAlphabeticalAscending: mdiOrderAlphabeticalAscending, + mdiOrderAlphabeticalDescending: mdiOrderAlphabeticalDescending, + mdiOrderBoolAscending: mdiOrderBoolAscending, + mdiOrderBoolAscendingVariant: mdiOrderBoolAscendingVariant, + mdiOrderBoolDescending: mdiOrderBoolDescending, + mdiOrderBoolDescendingVariant: mdiOrderBoolDescendingVariant, + mdiOrderNumericAscending: mdiOrderNumericAscending, + mdiOrderNumericDescending: mdiOrderNumericDescending, + mdiOrigin: mdiOrigin, + mdiOrnament: mdiOrnament, + mdiOrnamentVariant: mdiOrnamentVariant, + mdiOutdoorLamp: mdiOutdoorLamp, + mdiOverscan: mdiOverscan, + mdiOwl: mdiOwl, + mdiPacMan: mdiPacMan, + mdiPackage: mdiPackage, + mdiPackageDown: mdiPackageDown, + mdiPackageUp: mdiPackageUp, + mdiPackageVariant: mdiPackageVariant, + mdiPackageVariantClosed: mdiPackageVariantClosed, + mdiPageFirst: mdiPageFirst, + mdiPageLast: mdiPageLast, + mdiPageLayoutBody: mdiPageLayoutBody, + mdiPageLayoutFooter: mdiPageLayoutFooter, + mdiPageLayoutHeader: mdiPageLayoutHeader, + mdiPageLayoutHeaderFooter: mdiPageLayoutHeaderFooter, + mdiPageLayoutSidebarLeft: mdiPageLayoutSidebarLeft, + mdiPageLayoutSidebarRight: mdiPageLayoutSidebarRight, + mdiPageNext: mdiPageNext, + mdiPageNextOutline: mdiPageNextOutline, + mdiPagePrevious: mdiPagePrevious, + mdiPagePreviousOutline: mdiPagePreviousOutline, + mdiPail: mdiPail, + mdiPailMinus: mdiPailMinus, + mdiPailMinusOutline: mdiPailMinusOutline, + mdiPailOff: mdiPailOff, + mdiPailOffOutline: mdiPailOffOutline, + mdiPailOutline: mdiPailOutline, + mdiPailPlus: mdiPailPlus, + mdiPailPlusOutline: mdiPailPlusOutline, + mdiPailRemove: mdiPailRemove, + mdiPailRemoveOutline: mdiPailRemoveOutline, + mdiPalette: mdiPalette, + mdiPaletteAdvanced: mdiPaletteAdvanced, + mdiPaletteOutline: mdiPaletteOutline, + mdiPaletteSwatch: mdiPaletteSwatch, + mdiPaletteSwatchOutline: mdiPaletteSwatchOutline, + mdiPalmTree: mdiPalmTree, + mdiPan: mdiPan, + mdiPanBottomLeft: mdiPanBottomLeft, + mdiPanBottomRight: mdiPanBottomRight, + mdiPanDown: mdiPanDown, + mdiPanHorizontal: mdiPanHorizontal, + mdiPanLeft: mdiPanLeft, + mdiPanRight: mdiPanRight, + mdiPanTopLeft: mdiPanTopLeft, + mdiPanTopRight: mdiPanTopRight, + mdiPanUp: mdiPanUp, + mdiPanVertical: mdiPanVertical, + mdiPanda: mdiPanda, + mdiPandora: mdiPandora, + mdiPanorama: mdiPanorama, + mdiPanoramaFisheye: mdiPanoramaFisheye, + mdiPanoramaHorizontal: mdiPanoramaHorizontal, + mdiPanoramaVertical: mdiPanoramaVertical, + mdiPanoramaWideAngle: mdiPanoramaWideAngle, + mdiPaperCutVertical: mdiPaperCutVertical, + mdiPaperRoll: mdiPaperRoll, + mdiPaperRollOutline: mdiPaperRollOutline, + mdiPaperclip: mdiPaperclip, + mdiParachute: mdiParachute, + mdiParachuteOutline: mdiParachuteOutline, + mdiParking: mdiParking, + mdiPartyPopper: mdiPartyPopper, + mdiPassport: mdiPassport, + mdiPassportBiometric: mdiPassportBiometric, + mdiPasta: mdiPasta, + mdiPatioHeater: mdiPatioHeater, + mdiPatreon: mdiPatreon, + mdiPause: mdiPause, + mdiPauseCircle: mdiPauseCircle, + mdiPauseCircleOutline: mdiPauseCircleOutline, + mdiPauseOctagon: mdiPauseOctagon, + mdiPauseOctagonOutline: mdiPauseOctagonOutline, + mdiPaw: mdiPaw, + mdiPawOff: mdiPawOff, + mdiPawOffOutline: mdiPawOffOutline, + mdiPawOutline: mdiPawOutline, + mdiPdfBox: mdiPdfBox, + mdiPeace: mdiPeace, + mdiPeanut: mdiPeanut, + mdiPeanutOff: mdiPeanutOff, + mdiPeanutOffOutline: mdiPeanutOffOutline, + mdiPeanutOutline: mdiPeanutOutline, + mdiPen: mdiPen, + mdiPenLock: mdiPenLock, + mdiPenMinus: mdiPenMinus, + mdiPenOff: mdiPenOff, + mdiPenPlus: mdiPenPlus, + mdiPenRemove: mdiPenRemove, + mdiPencil: mdiPencil, + mdiPencilBox: mdiPencilBox, + mdiPencilBoxMultiple: mdiPencilBoxMultiple, + mdiPencilBoxMultipleOutline: mdiPencilBoxMultipleOutline, + mdiPencilBoxOutline: mdiPencilBoxOutline, + mdiPencilCircle: mdiPencilCircle, + mdiPencilCircleOutline: mdiPencilCircleOutline, + mdiPencilLock: mdiPencilLock, + mdiPencilLockOutline: mdiPencilLockOutline, + mdiPencilMinus: mdiPencilMinus, + mdiPencilMinusOutline: mdiPencilMinusOutline, + mdiPencilOff: mdiPencilOff, + mdiPencilOffOutline: mdiPencilOffOutline, + mdiPencilOutline: mdiPencilOutline, + mdiPencilPlus: mdiPencilPlus, + mdiPencilPlusOutline: mdiPencilPlusOutline, + mdiPencilRemove: mdiPencilRemove, + mdiPencilRemoveOutline: mdiPencilRemoveOutline, + mdiPencilRuler: mdiPencilRuler, + mdiPenguin: mdiPenguin, + mdiPentagon: mdiPentagon, + mdiPentagonOutline: mdiPentagonOutline, + mdiPentagram: mdiPentagram, + mdiPercent: mdiPercent, + mdiPercentOutline: mdiPercentOutline, + mdiPeriodicTable: mdiPeriodicTable, + mdiPerspectiveLess: mdiPerspectiveLess, + mdiPerspectiveMore: mdiPerspectiveMore, + mdiPharmacy: mdiPharmacy, + mdiPhone: mdiPhone, + mdiPhoneAlert: mdiPhoneAlert, + mdiPhoneAlertOutline: mdiPhoneAlertOutline, + mdiPhoneBluetooth: mdiPhoneBluetooth, + mdiPhoneBluetoothOutline: mdiPhoneBluetoothOutline, + mdiPhoneCancel: mdiPhoneCancel, + mdiPhoneCancelOutline: mdiPhoneCancelOutline, + mdiPhoneCheck: mdiPhoneCheck, + mdiPhoneCheckOutline: mdiPhoneCheckOutline, + mdiPhoneClassic: mdiPhoneClassic, + mdiPhoneClassicOff: mdiPhoneClassicOff, + mdiPhoneDial: mdiPhoneDial, + mdiPhoneDialOutline: mdiPhoneDialOutline, + mdiPhoneForward: mdiPhoneForward, + mdiPhoneForwardOutline: mdiPhoneForwardOutline, + mdiPhoneHangup: mdiPhoneHangup, + mdiPhoneHangupOutline: mdiPhoneHangupOutline, + mdiPhoneInTalk: mdiPhoneInTalk, + mdiPhoneInTalkOutline: mdiPhoneInTalkOutline, + mdiPhoneIncoming: mdiPhoneIncoming, + mdiPhoneIncomingOutline: mdiPhoneIncomingOutline, + mdiPhoneLock: mdiPhoneLock, + mdiPhoneLockOutline: mdiPhoneLockOutline, + mdiPhoneLog: mdiPhoneLog, + mdiPhoneLogOutline: mdiPhoneLogOutline, + mdiPhoneMessage: mdiPhoneMessage, + mdiPhoneMessageOutline: mdiPhoneMessageOutline, + mdiPhoneMinus: mdiPhoneMinus, + mdiPhoneMinusOutline: mdiPhoneMinusOutline, + mdiPhoneMissed: mdiPhoneMissed, + mdiPhoneMissedOutline: mdiPhoneMissedOutline, + mdiPhoneOff: mdiPhoneOff, + mdiPhoneOffOutline: mdiPhoneOffOutline, + mdiPhoneOutgoing: mdiPhoneOutgoing, + mdiPhoneOutgoingOutline: mdiPhoneOutgoingOutline, + mdiPhoneOutline: mdiPhoneOutline, + mdiPhonePaused: mdiPhonePaused, + mdiPhonePausedOutline: mdiPhonePausedOutline, + mdiPhonePlus: mdiPhonePlus, + mdiPhonePlusOutline: mdiPhonePlusOutline, + mdiPhoneRemove: mdiPhoneRemove, + mdiPhoneRemoveOutline: mdiPhoneRemoveOutline, + mdiPhoneReturn: mdiPhoneReturn, + mdiPhoneReturnOutline: mdiPhoneReturnOutline, + mdiPhoneRing: mdiPhoneRing, + mdiPhoneRingOutline: mdiPhoneRingOutline, + mdiPhoneRotateLandscape: mdiPhoneRotateLandscape, + mdiPhoneRotatePortrait: mdiPhoneRotatePortrait, + mdiPhoneSettings: mdiPhoneSettings, + mdiPhoneSettingsOutline: mdiPhoneSettingsOutline, + mdiPhoneVoip: mdiPhoneVoip, + mdiPi: mdiPi, + mdiPiBox: mdiPiBox, + mdiPiHole: mdiPiHole, + mdiPiano: mdiPiano, + mdiPickaxe: mdiPickaxe, + mdiPictureInPictureBottomRight: mdiPictureInPictureBottomRight, + mdiPictureInPictureBottomRightOutline: mdiPictureInPictureBottomRightOutline, + mdiPictureInPictureTopRight: mdiPictureInPictureTopRight, + mdiPictureInPictureTopRightOutline: mdiPictureInPictureTopRightOutline, + mdiPier: mdiPier, + mdiPierCrane: mdiPierCrane, + mdiPig: mdiPig, + mdiPigVariant: mdiPigVariant, + mdiPigVariantOutline: mdiPigVariantOutline, + mdiPiggyBank: mdiPiggyBank, + mdiPiggyBankOutline: mdiPiggyBankOutline, + mdiPill: mdiPill, + mdiPillar: mdiPillar, + mdiPin: mdiPin, + mdiPinOff: mdiPinOff, + mdiPinOffOutline: mdiPinOffOutline, + mdiPinOutline: mdiPinOutline, + mdiPineTree: mdiPineTree, + mdiPineTreeBox: mdiPineTreeBox, + mdiPineTreeFire: mdiPineTreeFire, + mdiPinterest: mdiPinterest, + mdiPinwheel: mdiPinwheel, + mdiPinwheelOutline: mdiPinwheelOutline, + mdiPipe: mdiPipe, + mdiPipeDisconnected: mdiPipeDisconnected, + mdiPipeLeak: mdiPipeLeak, + mdiPipeWrench: mdiPipeWrench, + mdiPirate: mdiPirate, + mdiPistol: mdiPistol, + mdiPiston: mdiPiston, + mdiPitchfork: mdiPitchfork, + mdiPizza: mdiPizza, + mdiPlay: mdiPlay, + mdiPlayBox: mdiPlayBox, + mdiPlayBoxMultiple: mdiPlayBoxMultiple, + mdiPlayBoxMultipleOutline: mdiPlayBoxMultipleOutline, + mdiPlayBoxOutline: mdiPlayBoxOutline, + mdiPlayCircle: mdiPlayCircle, + mdiPlayCircleOutline: mdiPlayCircleOutline, + mdiPlayNetwork: mdiPlayNetwork, + mdiPlayNetworkOutline: mdiPlayNetworkOutline, + mdiPlayOutline: mdiPlayOutline, + mdiPlayPause: mdiPlayPause, + mdiPlayProtectedContent: mdiPlayProtectedContent, + mdiPlaySpeed: mdiPlaySpeed, + mdiPlaylistCheck: mdiPlaylistCheck, + mdiPlaylistEdit: mdiPlaylistEdit, + mdiPlaylistMinus: mdiPlaylistMinus, + mdiPlaylistMusic: mdiPlaylistMusic, + mdiPlaylistMusicOutline: mdiPlaylistMusicOutline, + mdiPlaylistPlay: mdiPlaylistPlay, + mdiPlaylistPlus: mdiPlaylistPlus, + mdiPlaylistRemove: mdiPlaylistRemove, + mdiPlaylistStar: mdiPlaylistStar, + mdiPlex: mdiPlex, + mdiPlus: mdiPlus, + mdiPlusBox: mdiPlusBox, + mdiPlusBoxMultiple: mdiPlusBoxMultiple, + mdiPlusBoxMultipleOutline: mdiPlusBoxMultipleOutline, + mdiPlusBoxOutline: mdiPlusBoxOutline, + mdiPlusCircle: mdiPlusCircle, + mdiPlusCircleMultiple: mdiPlusCircleMultiple, + mdiPlusCircleMultipleOutline: mdiPlusCircleMultipleOutline, + mdiPlusCircleOutline: mdiPlusCircleOutline, + mdiPlusMinus: mdiPlusMinus, + mdiPlusMinusBox: mdiPlusMinusBox, + mdiPlusMinusVariant: mdiPlusMinusVariant, + mdiPlusNetwork: mdiPlusNetwork, + mdiPlusNetworkOutline: mdiPlusNetworkOutline, + mdiPlusOne: mdiPlusOne, + mdiPlusOutline: mdiPlusOutline, + mdiPlusThick: mdiPlusThick, + mdiPodcast: mdiPodcast, + mdiPodium: mdiPodium, + mdiPodiumBronze: mdiPodiumBronze, + mdiPodiumGold: mdiPodiumGold, + mdiPodiumSilver: mdiPodiumSilver, + mdiPointOfSale: mdiPointOfSale, + mdiPokeball: mdiPokeball, + mdiPokemonGo: mdiPokemonGo, + mdiPokerChip: mdiPokerChip, + mdiPolaroid: mdiPolaroid, + mdiPoliceBadge: mdiPoliceBadge, + mdiPoliceBadgeOutline: mdiPoliceBadgeOutline, + mdiPoll: mdiPoll, + mdiPollBox: mdiPollBox, + mdiPollBoxOutline: mdiPollBoxOutline, + mdiPolo: mdiPolo, + mdiPolymer: mdiPolymer, + mdiPool: mdiPool, + mdiPopcorn: mdiPopcorn, + mdiPost: mdiPost, + mdiPostOutline: mdiPostOutline, + mdiPostageStamp: mdiPostageStamp, + mdiPot: mdiPot, + mdiPotMix: mdiPotMix, + mdiPotMixOutline: mdiPotMixOutline, + mdiPotOutline: mdiPotOutline, + mdiPotSteam: mdiPotSteam, + mdiPotSteamOutline: mdiPotSteamOutline, + mdiPound: mdiPound, + mdiPoundBox: mdiPoundBox, + mdiPoundBoxOutline: mdiPoundBoxOutline, + mdiPower: mdiPower, + mdiPowerCycle: mdiPowerCycle, + mdiPowerOff: mdiPowerOff, + mdiPowerOn: mdiPowerOn, + mdiPowerPlug: mdiPowerPlug, + mdiPowerPlugOff: mdiPowerPlugOff, + mdiPowerPlugOffOutline: mdiPowerPlugOffOutline, + mdiPowerPlugOutline: mdiPowerPlugOutline, + mdiPowerSettings: mdiPowerSettings, + mdiPowerSleep: mdiPowerSleep, + mdiPowerSocket: mdiPowerSocket, + mdiPowerSocketAu: mdiPowerSocketAu, + mdiPowerSocketDe: mdiPowerSocketDe, + mdiPowerSocketEu: mdiPowerSocketEu, + mdiPowerSocketFr: mdiPowerSocketFr, + mdiPowerSocketIt: mdiPowerSocketIt, + mdiPowerSocketJp: mdiPowerSocketJp, + mdiPowerSocketUk: mdiPowerSocketUk, + mdiPowerSocketUs: mdiPowerSocketUs, + mdiPowerStandby: mdiPowerStandby, + mdiPowershell: mdiPowershell, + mdiPrescription: mdiPrescription, + mdiPresentation: mdiPresentation, + mdiPresentationPlay: mdiPresentationPlay, + mdiPretzel: mdiPretzel, + mdiPrinter: mdiPrinter, + mdiPrinter3d: mdiPrinter3d, + mdiPrinter3dNozzle: mdiPrinter3dNozzle, + mdiPrinter3dNozzleAlert: mdiPrinter3dNozzleAlert, + mdiPrinter3dNozzleAlertOutline: mdiPrinter3dNozzleAlertOutline, + mdiPrinter3dNozzleOutline: mdiPrinter3dNozzleOutline, + mdiPrinterAlert: mdiPrinterAlert, + mdiPrinterCheck: mdiPrinterCheck, + mdiPrinterEye: mdiPrinterEye, + mdiPrinterOff: mdiPrinterOff, + mdiPrinterPos: mdiPrinterPos, + mdiPrinterSearch: mdiPrinterSearch, + mdiPrinterSettings: mdiPrinterSettings, + mdiPrinterWireless: mdiPrinterWireless, + mdiPriorityHigh: mdiPriorityHigh, + mdiPriorityLow: mdiPriorityLow, + mdiProfessionalHexagon: mdiProfessionalHexagon, + mdiProgressAlert: mdiProgressAlert, + mdiProgressCheck: mdiProgressCheck, + mdiProgressClock: mdiProgressClock, + mdiProgressClose: mdiProgressClose, + mdiProgressDownload: mdiProgressDownload, + mdiProgressQuestion: mdiProgressQuestion, + mdiProgressUpload: mdiProgressUpload, + mdiProgressWrench: mdiProgressWrench, + mdiProjector: mdiProjector, + mdiProjectorScreen: mdiProjectorScreen, + mdiProjectorScreenOutline: mdiProjectorScreenOutline, + mdiPropaneTank: mdiPropaneTank, + mdiPropaneTankOutline: mdiPropaneTankOutline, + mdiProtocol: mdiProtocol, + mdiPublish: mdiPublish, + mdiPulse: mdiPulse, + mdiPump: mdiPump, + mdiPumpkin: mdiPumpkin, + mdiPurse: mdiPurse, + mdiPurseOutline: mdiPurseOutline, + mdiPuzzle: mdiPuzzle, + mdiPuzzleCheck: mdiPuzzleCheck, + mdiPuzzleCheckOutline: mdiPuzzleCheckOutline, + mdiPuzzleEdit: mdiPuzzleEdit, + mdiPuzzleEditOutline: mdiPuzzleEditOutline, + mdiPuzzleHeart: mdiPuzzleHeart, + mdiPuzzleHeartOutline: mdiPuzzleHeartOutline, + mdiPuzzleMinus: mdiPuzzleMinus, + mdiPuzzleMinusOutline: mdiPuzzleMinusOutline, + mdiPuzzleOutline: mdiPuzzleOutline, + mdiPuzzlePlus: mdiPuzzlePlus, + mdiPuzzlePlusOutline: mdiPuzzlePlusOutline, + mdiPuzzleRemove: mdiPuzzleRemove, + mdiPuzzleRemoveOutline: mdiPuzzleRemoveOutline, + mdiPuzzleStar: mdiPuzzleStar, + mdiPuzzleStarOutline: mdiPuzzleStarOutline, + mdiQi: mdiQi, + mdiQqchat: mdiQqchat, + mdiQrcode: mdiQrcode, + mdiQrcodeEdit: mdiQrcodeEdit, + mdiQrcodeMinus: mdiQrcodeMinus, + mdiQrcodePlus: mdiQrcodePlus, + mdiQrcodeRemove: mdiQrcodeRemove, + mdiQrcodeScan: mdiQrcodeScan, + mdiQuadcopter: mdiQuadcopter, + mdiQualityHigh: mdiQualityHigh, + mdiQualityLow: mdiQualityLow, + mdiQualityMedium: mdiQualityMedium, + mdiQuora: mdiQuora, + mdiRabbit: mdiRabbit, + mdiRacingHelmet: mdiRacingHelmet, + mdiRacquetball: mdiRacquetball, + mdiRadar: mdiRadar, + mdiRadiator: mdiRadiator, + mdiRadiatorDisabled: mdiRadiatorDisabled, + mdiRadiatorOff: mdiRadiatorOff, + mdiRadio: mdiRadio, + mdiRadioAm: mdiRadioAm, + mdiRadioFm: mdiRadioFm, + mdiRadioHandheld: mdiRadioHandheld, + mdiRadioOff: mdiRadioOff, + mdiRadioTower: mdiRadioTower, + mdiRadioactive: mdiRadioactive, + mdiRadioactiveOff: mdiRadioactiveOff, + mdiRadioboxBlank: mdiRadioboxBlank, + mdiRadioboxMarked: mdiRadioboxMarked, + mdiRadiologyBox: mdiRadiologyBox, + mdiRadiologyBoxOutline: mdiRadiologyBoxOutline, + mdiRadius: mdiRadius, + mdiRadiusOutline: mdiRadiusOutline, + mdiRailroadLight: mdiRailroadLight, + mdiRake: mdiRake, + mdiRaspberryPi: mdiRaspberryPi, + mdiRayEnd: mdiRayEnd, + mdiRayEndArrow: mdiRayEndArrow, + mdiRayStart: mdiRayStart, + mdiRayStartArrow: mdiRayStartArrow, + mdiRayStartEnd: mdiRayStartEnd, + mdiRayStartVertexEnd: mdiRayStartVertexEnd, + mdiRayVertex: mdiRayVertex, + mdiReact: mdiReact, + mdiRead: mdiRead, + mdiReceipt: mdiReceipt, + mdiRecord: mdiRecord, + mdiRecordCircle: mdiRecordCircle, + mdiRecordCircleOutline: mdiRecordCircleOutline, + mdiRecordPlayer: mdiRecordPlayer, + mdiRecordRec: mdiRecordRec, + mdiRectangle: mdiRectangle, + mdiRectangleOutline: mdiRectangleOutline, + mdiRecycle: mdiRecycle, + mdiRecycleVariant: mdiRecycleVariant, + mdiReddit: mdiReddit, + mdiRedhat: mdiRedhat, + mdiRedo: mdiRedo, + mdiRedoVariant: mdiRedoVariant, + mdiReflectHorizontal: mdiReflectHorizontal, + mdiReflectVertical: mdiReflectVertical, + mdiRefresh: mdiRefresh, + mdiRefreshCircle: mdiRefreshCircle, + mdiRegex: mdiRegex, + mdiRegisteredTrademark: mdiRegisteredTrademark, + mdiReiterate: mdiReiterate, + mdiRelationManyToMany: mdiRelationManyToMany, + mdiRelationManyToOne: mdiRelationManyToOne, + mdiRelationManyToOneOrMany: mdiRelationManyToOneOrMany, + mdiRelationManyToOnlyOne: mdiRelationManyToOnlyOne, + mdiRelationManyToZeroOrMany: mdiRelationManyToZeroOrMany, + mdiRelationManyToZeroOrOne: mdiRelationManyToZeroOrOne, + mdiRelationOneOrManyToMany: mdiRelationOneOrManyToMany, + mdiRelationOneOrManyToOne: mdiRelationOneOrManyToOne, + mdiRelationOneOrManyToOneOrMany: mdiRelationOneOrManyToOneOrMany, + mdiRelationOneOrManyToOnlyOne: mdiRelationOneOrManyToOnlyOne, + mdiRelationOneOrManyToZeroOrMany: mdiRelationOneOrManyToZeroOrMany, + mdiRelationOneOrManyToZeroOrOne: mdiRelationOneOrManyToZeroOrOne, + mdiRelationOneToMany: mdiRelationOneToMany, + mdiRelationOneToOne: mdiRelationOneToOne, + mdiRelationOneToOneOrMany: mdiRelationOneToOneOrMany, + mdiRelationOneToOnlyOne: mdiRelationOneToOnlyOne, + mdiRelationOneToZeroOrMany: mdiRelationOneToZeroOrMany, + mdiRelationOneToZeroOrOne: mdiRelationOneToZeroOrOne, + mdiRelationOnlyOneToMany: mdiRelationOnlyOneToMany, + mdiRelationOnlyOneToOne: mdiRelationOnlyOneToOne, + mdiRelationOnlyOneToOneOrMany: mdiRelationOnlyOneToOneOrMany, + mdiRelationOnlyOneToOnlyOne: mdiRelationOnlyOneToOnlyOne, + mdiRelationOnlyOneToZeroOrMany: mdiRelationOnlyOneToZeroOrMany, + mdiRelationOnlyOneToZeroOrOne: mdiRelationOnlyOneToZeroOrOne, + mdiRelationZeroOrManyToMany: mdiRelationZeroOrManyToMany, + mdiRelationZeroOrManyToOne: mdiRelationZeroOrManyToOne, + mdiRelationZeroOrManyToOneOrMany: mdiRelationZeroOrManyToOneOrMany, + mdiRelationZeroOrManyToOnlyOne: mdiRelationZeroOrManyToOnlyOne, + mdiRelationZeroOrManyToZeroOrMany: mdiRelationZeroOrManyToZeroOrMany, + mdiRelationZeroOrManyToZeroOrOne: mdiRelationZeroOrManyToZeroOrOne, + mdiRelationZeroOrOneToMany: mdiRelationZeroOrOneToMany, + mdiRelationZeroOrOneToOne: mdiRelationZeroOrOneToOne, + mdiRelationZeroOrOneToOneOrMany: mdiRelationZeroOrOneToOneOrMany, + mdiRelationZeroOrOneToOnlyOne: mdiRelationZeroOrOneToOnlyOne, + mdiRelationZeroOrOneToZeroOrMany: mdiRelationZeroOrOneToZeroOrMany, + mdiRelationZeroOrOneToZeroOrOne: mdiRelationZeroOrOneToZeroOrOne, + mdiRelativeScale: mdiRelativeScale, + mdiReload: mdiReload, + mdiReloadAlert: mdiReloadAlert, + mdiReminder: mdiReminder, + mdiRemote: mdiRemote, + mdiRemoteDesktop: mdiRemoteDesktop, + mdiRemoteOff: mdiRemoteOff, + mdiRemoteTv: mdiRemoteTv, + mdiRemoteTvOff: mdiRemoteTvOff, + mdiRenameBox: mdiRenameBox, + mdiReorderHorizontal: mdiReorderHorizontal, + mdiReorderVertical: mdiReorderVertical, + mdiRepeat: mdiRepeat, + mdiRepeatOff: mdiRepeatOff, + mdiRepeatOnce: mdiRepeatOnce, + mdiReplay: mdiReplay, + mdiReply: mdiReply, + mdiReplyAll: mdiReplyAll, + mdiReplyAllOutline: mdiReplyAllOutline, + mdiReplyCircle: mdiReplyCircle, + mdiReplyOutline: mdiReplyOutline, + mdiReproduction: mdiReproduction, + mdiResistor: mdiResistor, + mdiResistorNodes: mdiResistorNodes, + mdiResize: mdiResize, + mdiResizeBottomRight: mdiResizeBottomRight, + mdiResponsive: mdiResponsive, + mdiRestart: mdiRestart, + mdiRestartAlert: mdiRestartAlert, + mdiRestartOff: mdiRestartOff, + mdiRestore: mdiRestore, + mdiRestoreAlert: mdiRestoreAlert, + mdiRewind: mdiRewind, + mdiRewind10: mdiRewind10, + mdiRewind30: mdiRewind30, + mdiRewind5: mdiRewind5, + mdiRewind60: mdiRewind60, + mdiRewindOutline: mdiRewindOutline, + mdiRhombus: mdiRhombus, + mdiRhombusMedium: mdiRhombusMedium, + mdiRhombusMediumOutline: mdiRhombusMediumOutline, + mdiRhombusOutline: mdiRhombusOutline, + mdiRhombusSplit: mdiRhombusSplit, + mdiRhombusSplitOutline: mdiRhombusSplitOutline, + mdiRibbon: mdiRibbon, + mdiRice: mdiRice, + mdiRickshaw: mdiRickshaw, + mdiRickshawElectric: mdiRickshawElectric, + mdiRing: mdiRing, + mdiRivet: mdiRivet, + mdiRoad: mdiRoad, + mdiRoadVariant: mdiRoadVariant, + mdiRobber: mdiRobber, + mdiRobot: mdiRobot, + mdiRobotAngry: mdiRobotAngry, + mdiRobotAngryOutline: mdiRobotAngryOutline, + mdiRobotConfused: mdiRobotConfused, + mdiRobotConfusedOutline: mdiRobotConfusedOutline, + mdiRobotDead: mdiRobotDead, + mdiRobotDeadOutline: mdiRobotDeadOutline, + mdiRobotExcited: mdiRobotExcited, + mdiRobotExcitedOutline: mdiRobotExcitedOutline, + mdiRobotHappy: mdiRobotHappy, + mdiRobotHappyOutline: mdiRobotHappyOutline, + mdiRobotIndustrial: mdiRobotIndustrial, + mdiRobotLove: mdiRobotLove, + mdiRobotLoveOutline: mdiRobotLoveOutline, + mdiRobotMower: mdiRobotMower, + mdiRobotMowerOutline: mdiRobotMowerOutline, + mdiRobotOff: mdiRobotOff, + mdiRobotOffOutline: mdiRobotOffOutline, + mdiRobotOutline: mdiRobotOutline, + mdiRobotVacuum: mdiRobotVacuum, + mdiRobotVacuumVariant: mdiRobotVacuumVariant, + mdiRocket: mdiRocket, + mdiRocketLaunch: mdiRocketLaunch, + mdiRocketLaunchOutline: mdiRocketLaunchOutline, + mdiRocketOutline: mdiRocketOutline, + mdiRodent: mdiRodent, + mdiRollerSkate: mdiRollerSkate, + mdiRollerSkateOff: mdiRollerSkateOff, + mdiRollerblade: mdiRollerblade, + mdiRollerbladeOff: mdiRollerbladeOff, + mdiRollupjs: mdiRollupjs, + mdiRomanNumeral1: mdiRomanNumeral1, + mdiRomanNumeral10: mdiRomanNumeral10, + mdiRomanNumeral2: mdiRomanNumeral2, + mdiRomanNumeral3: mdiRomanNumeral3, + mdiRomanNumeral4: mdiRomanNumeral4, + mdiRomanNumeral5: mdiRomanNumeral5, + mdiRomanNumeral6: mdiRomanNumeral6, + mdiRomanNumeral7: mdiRomanNumeral7, + mdiRomanNumeral8: mdiRomanNumeral8, + mdiRomanNumeral9: mdiRomanNumeral9, + mdiRoomService: mdiRoomService, + mdiRoomServiceOutline: mdiRoomServiceOutline, + mdiRotate3d: mdiRotate3d, + mdiRotate3dVariant: mdiRotate3dVariant, + mdiRotateLeft: mdiRotateLeft, + mdiRotateLeftVariant: mdiRotateLeftVariant, + mdiRotateOrbit: mdiRotateOrbit, + mdiRotateRight: mdiRotateRight, + mdiRotateRightVariant: mdiRotateRightVariant, + mdiRoundedCorner: mdiRoundedCorner, + mdiRouter: mdiRouter, + mdiRouterNetwork: mdiRouterNetwork, + mdiRouterWireless: mdiRouterWireless, + mdiRouterWirelessOff: mdiRouterWirelessOff, + mdiRouterWirelessSettings: mdiRouterWirelessSettings, + mdiRoutes: mdiRoutes, + mdiRoutesClock: mdiRoutesClock, + mdiRowing: mdiRowing, + mdiRss: mdiRss, + mdiRssBox: mdiRssBox, + mdiRssOff: mdiRssOff, + mdiRug: mdiRug, + mdiRugby: mdiRugby, + mdiRuler: mdiRuler, + mdiRulerSquare: mdiRulerSquare, + mdiRulerSquareCompass: mdiRulerSquareCompass, + mdiRun: mdiRun, + mdiRunFast: mdiRunFast, + mdiRvTruck: mdiRvTruck, + mdiSack: mdiSack, + mdiSackPercent: mdiSackPercent, + mdiSafe: mdiSafe, + mdiSafeSquare: mdiSafeSquare, + mdiSafeSquareOutline: mdiSafeSquareOutline, + mdiSafetyGoggles: mdiSafetyGoggles, + mdiSailBoat: mdiSailBoat, + mdiSale: mdiSale, + mdiSalesforce: mdiSalesforce, + mdiSass: mdiSass, + mdiSatellite: mdiSatellite, + mdiSatelliteUplink: mdiSatelliteUplink, + mdiSatelliteVariant: mdiSatelliteVariant, + mdiSausage: mdiSausage, + mdiSawBlade: mdiSawBlade, + mdiSawtoothWave: mdiSawtoothWave, + mdiSaxophone: mdiSaxophone, + mdiScale: mdiScale, + mdiScaleBalance: mdiScaleBalance, + mdiScaleBathroom: mdiScaleBathroom, + mdiScaleOff: mdiScaleOff, + mdiScanHelper: mdiScanHelper, + mdiScanner: mdiScanner, + mdiScannerOff: mdiScannerOff, + mdiScatterPlot: mdiScatterPlot, + mdiScatterPlotOutline: mdiScatterPlotOutline, + mdiSchool: mdiSchool, + mdiSchoolOutline: mdiSchoolOutline, + mdiScissorsCutting: mdiScissorsCutting, + mdiScooter: mdiScooter, + mdiScooterElectric: mdiScooterElectric, + mdiScoreboard: mdiScoreboard, + mdiScoreboardOutline: mdiScoreboardOutline, + mdiScreenRotation: mdiScreenRotation, + mdiScreenRotationLock: mdiScreenRotationLock, + mdiScrewFlatTop: mdiScrewFlatTop, + mdiScrewLag: mdiScrewLag, + mdiScrewMachineFlatTop: mdiScrewMachineFlatTop, + mdiScrewMachineRoundTop: mdiScrewMachineRoundTop, + mdiScrewRoundTop: mdiScrewRoundTop, + mdiScrewdriver: mdiScrewdriver, + mdiScript: mdiScript, + mdiScriptOutline: mdiScriptOutline, + mdiScriptText: mdiScriptText, + mdiScriptTextKey: mdiScriptTextKey, + mdiScriptTextKeyOutline: mdiScriptTextKeyOutline, + mdiScriptTextOutline: mdiScriptTextOutline, + mdiScriptTextPlay: mdiScriptTextPlay, + mdiScriptTextPlayOutline: mdiScriptTextPlayOutline, + mdiSd: mdiSd, + mdiSeal: mdiSeal, + mdiSealVariant: mdiSealVariant, + mdiSearchWeb: mdiSearchWeb, + mdiSeat: mdiSeat, + mdiSeatFlat: mdiSeatFlat, + mdiSeatFlatAngled: mdiSeatFlatAngled, + mdiSeatIndividualSuite: mdiSeatIndividualSuite, + mdiSeatLegroomExtra: mdiSeatLegroomExtra, + mdiSeatLegroomNormal: mdiSeatLegroomNormal, + mdiSeatLegroomReduced: mdiSeatLegroomReduced, + mdiSeatOutline: mdiSeatOutline, + mdiSeatPassenger: mdiSeatPassenger, + mdiSeatReclineExtra: mdiSeatReclineExtra, + mdiSeatReclineNormal: mdiSeatReclineNormal, + mdiSeatbelt: mdiSeatbelt, + mdiSecurity: mdiSecurity, + mdiSecurityNetwork: mdiSecurityNetwork, + mdiSeed: mdiSeed, + mdiSeedOff: mdiSeedOff, + mdiSeedOffOutline: mdiSeedOffOutline, + mdiSeedOutline: mdiSeedOutline, + mdiSeesaw: mdiSeesaw, + mdiSegment: mdiSegment, + mdiSelect: mdiSelect, + mdiSelectAll: mdiSelectAll, + mdiSelectColor: mdiSelectColor, + mdiSelectCompare: mdiSelectCompare, + mdiSelectDrag: mdiSelectDrag, + mdiSelectGroup: mdiSelectGroup, + mdiSelectInverse: mdiSelectInverse, + mdiSelectMarker: mdiSelectMarker, + mdiSelectMultiple: mdiSelectMultiple, + mdiSelectMultipleMarker: mdiSelectMultipleMarker, + mdiSelectOff: mdiSelectOff, + mdiSelectPlace: mdiSelectPlace, + mdiSelectSearch: mdiSelectSearch, + mdiSelection: mdiSelection, + mdiSelectionDrag: mdiSelectionDrag, + mdiSelectionEllipse: mdiSelectionEllipse, + mdiSelectionEllipseArrowInside: mdiSelectionEllipseArrowInside, + mdiSelectionMarker: mdiSelectionMarker, + mdiSelectionMultiple: mdiSelectionMultiple, + mdiSelectionMultipleMarker: mdiSelectionMultipleMarker, + mdiSelectionOff: mdiSelectionOff, + mdiSelectionSearch: mdiSelectionSearch, + mdiSemanticWeb: mdiSemanticWeb, + mdiSend: mdiSend, + mdiSendCheck: mdiSendCheck, + mdiSendCheckOutline: mdiSendCheckOutline, + mdiSendCircle: mdiSendCircle, + mdiSendCircleOutline: mdiSendCircleOutline, + mdiSendClock: mdiSendClock, + mdiSendClockOutline: mdiSendClockOutline, + mdiSendLock: mdiSendLock, + mdiSendLockOutline: mdiSendLockOutline, + mdiSendOutline: mdiSendOutline, + mdiSerialPort: mdiSerialPort, + mdiServer: mdiServer, + mdiServerMinus: mdiServerMinus, + mdiServerNetwork: mdiServerNetwork, + mdiServerNetworkOff: mdiServerNetworkOff, + mdiServerOff: mdiServerOff, + mdiServerPlus: mdiServerPlus, + mdiServerRemove: mdiServerRemove, + mdiServerSecurity: mdiServerSecurity, + mdiSetAll: mdiSetAll, + mdiSetCenter: mdiSetCenter, + mdiSetCenterRight: mdiSetCenterRight, + mdiSetLeft: mdiSetLeft, + mdiSetLeftCenter: mdiSetLeftCenter, + mdiSetLeftRight: mdiSetLeftRight, + mdiSetMerge: mdiSetMerge, + mdiSetNone: mdiSetNone, + mdiSetRight: mdiSetRight, + mdiSetSplit: mdiSetSplit, + mdiSetSquare: mdiSetSquare, + mdiSetTopBox: mdiSetTopBox, + mdiSettingsHelper: mdiSettingsHelper, + mdiShaker: mdiShaker, + mdiShakerOutline: mdiShakerOutline, + mdiShape: mdiShape, + mdiShapeCirclePlus: mdiShapeCirclePlus, + mdiShapeOutline: mdiShapeOutline, + mdiShapeOvalPlus: mdiShapeOvalPlus, + mdiShapePlus: mdiShapePlus, + mdiShapePolygonPlus: mdiShapePolygonPlus, + mdiShapeRectanglePlus: mdiShapeRectanglePlus, + mdiShapeSquarePlus: mdiShapeSquarePlus, + mdiShapeSquareRoundedPlus: mdiShapeSquareRoundedPlus, + mdiShare: mdiShare, + mdiShareAll: mdiShareAll, + mdiShareAllOutline: mdiShareAllOutline, + mdiShareCircle: mdiShareCircle, + mdiShareOff: mdiShareOff, + mdiShareOffOutline: mdiShareOffOutline, + mdiShareOutline: mdiShareOutline, + mdiShareVariant: mdiShareVariant, + mdiShareVariantOutline: mdiShareVariantOutline, + mdiSharkFin: mdiSharkFin, + mdiSharkFinOutline: mdiSharkFinOutline, + mdiSheep: mdiSheep, + mdiShield: mdiShield, + mdiShieldAccount: mdiShieldAccount, + mdiShieldAccountOutline: mdiShieldAccountOutline, + mdiShieldAccountVariant: mdiShieldAccountVariant, + mdiShieldAccountVariantOutline: mdiShieldAccountVariantOutline, + mdiShieldAirplane: mdiShieldAirplane, + mdiShieldAirplaneOutline: mdiShieldAirplaneOutline, + mdiShieldAlert: mdiShieldAlert, + mdiShieldAlertOutline: mdiShieldAlertOutline, + mdiShieldBug: mdiShieldBug, + mdiShieldBugOutline: mdiShieldBugOutline, + mdiShieldCar: mdiShieldCar, + mdiShieldCheck: mdiShieldCheck, + mdiShieldCheckOutline: mdiShieldCheckOutline, + mdiShieldCross: mdiShieldCross, + mdiShieldCrossOutline: mdiShieldCrossOutline, + mdiShieldEdit: mdiShieldEdit, + mdiShieldEditOutline: mdiShieldEditOutline, + mdiShieldHalf: mdiShieldHalf, + mdiShieldHalfFull: mdiShieldHalfFull, + mdiShieldHome: mdiShieldHome, + mdiShieldHomeOutline: mdiShieldHomeOutline, + mdiShieldKey: mdiShieldKey, + mdiShieldKeyOutline: mdiShieldKeyOutline, + mdiShieldLinkVariant: mdiShieldLinkVariant, + mdiShieldLinkVariantOutline: mdiShieldLinkVariantOutline, + mdiShieldLock: mdiShieldLock, + mdiShieldLockOutline: mdiShieldLockOutline, + mdiShieldOff: mdiShieldOff, + mdiShieldOffOutline: mdiShieldOffOutline, + mdiShieldOutline: mdiShieldOutline, + mdiShieldPlus: mdiShieldPlus, + mdiShieldPlusOutline: mdiShieldPlusOutline, + mdiShieldRefresh: mdiShieldRefresh, + mdiShieldRefreshOutline: mdiShieldRefreshOutline, + mdiShieldRemove: mdiShieldRemove, + mdiShieldRemoveOutline: mdiShieldRemoveOutline, + mdiShieldSearch: mdiShieldSearch, + mdiShieldStar: mdiShieldStar, + mdiShieldStarOutline: mdiShieldStarOutline, + mdiShieldSun: mdiShieldSun, + mdiShieldSunOutline: mdiShieldSunOutline, + mdiShieldSync: mdiShieldSync, + mdiShieldSyncOutline: mdiShieldSyncOutline, + mdiShipWheel: mdiShipWheel, + mdiShoeBallet: mdiShoeBallet, + mdiShoeCleat: mdiShoeCleat, + mdiShoeFormal: mdiShoeFormal, + mdiShoeHeel: mdiShoeHeel, + mdiShoePrint: mdiShoePrint, + mdiShoeSneaker: mdiShoeSneaker, + mdiShopping: mdiShopping, + mdiShoppingMusic: mdiShoppingMusic, + mdiShoppingOutline: mdiShoppingOutline, + mdiShoppingSearch: mdiShoppingSearch, + mdiShore: mdiShore, + mdiShovel: mdiShovel, + mdiShovelOff: mdiShovelOff, + mdiShower: mdiShower, + mdiShowerHead: mdiShowerHead, + mdiShredder: mdiShredder, + mdiShuffle: mdiShuffle, + mdiShuffleDisabled: mdiShuffleDisabled, + mdiShuffleVariant: mdiShuffleVariant, + mdiShuriken: mdiShuriken, + mdiSigma: mdiSigma, + mdiSigmaLower: mdiSigmaLower, + mdiSignCaution: mdiSignCaution, + mdiSignDirection: mdiSignDirection, + mdiSignDirectionMinus: mdiSignDirectionMinus, + mdiSignDirectionPlus: mdiSignDirectionPlus, + mdiSignDirectionRemove: mdiSignDirectionRemove, + mdiSignPole: mdiSignPole, + mdiSignRealEstate: mdiSignRealEstate, + mdiSignText: mdiSignText, + mdiSignal: mdiSignal, + mdiSignal2g: mdiSignal2g, + mdiSignal3g: mdiSignal3g, + mdiSignal4g: mdiSignal4g, + mdiSignal5g: mdiSignal5g, + mdiSignalCellular1: mdiSignalCellular1, + mdiSignalCellular2: mdiSignalCellular2, + mdiSignalCellular3: mdiSignalCellular3, + mdiSignalCellularOutline: mdiSignalCellularOutline, + mdiSignalDistanceVariant: mdiSignalDistanceVariant, + mdiSignalHspa: mdiSignalHspa, + mdiSignalHspaPlus: mdiSignalHspaPlus, + mdiSignalOff: mdiSignalOff, + mdiSignalVariant: mdiSignalVariant, + mdiSignature: mdiSignature, + mdiSignatureFreehand: mdiSignatureFreehand, + mdiSignatureImage: mdiSignatureImage, + mdiSignatureText: mdiSignatureText, + mdiSilo: mdiSilo, + mdiSilverware: mdiSilverware, + mdiSilverwareClean: mdiSilverwareClean, + mdiSilverwareFork: mdiSilverwareFork, + mdiSilverwareForkKnife: mdiSilverwareForkKnife, + mdiSilverwareSpoon: mdiSilverwareSpoon, + mdiSilverwareVariant: mdiSilverwareVariant, + mdiSim: mdiSim, + mdiSimAlert: mdiSimAlert, + mdiSimAlertOutline: mdiSimAlertOutline, + mdiSimOff: mdiSimOff, + mdiSimOffOutline: mdiSimOffOutline, + mdiSimOutline: mdiSimOutline, + mdiSimpleIcons: mdiSimpleIcons, + mdiSinaWeibo: mdiSinaWeibo, + mdiSineWave: mdiSineWave, + mdiSitemap: mdiSitemap, + mdiSizeL: mdiSizeL, + mdiSizeM: mdiSizeM, + mdiSizeS: mdiSizeS, + mdiSizeXl: mdiSizeXl, + mdiSizeXs: mdiSizeXs, + mdiSizeXxl: mdiSizeXxl, + mdiSizeXxs: mdiSizeXxs, + mdiSizeXxxl: mdiSizeXxxl, + mdiSkate: mdiSkate, + mdiSkateboard: mdiSkateboard, + mdiSkewLess: mdiSkewLess, + mdiSkewMore: mdiSkewMore, + mdiSki: mdiSki, + mdiSkiCrossCountry: mdiSkiCrossCountry, + mdiSkiWater: mdiSkiWater, + mdiSkipBackward: mdiSkipBackward, + mdiSkipBackwardOutline: mdiSkipBackwardOutline, + mdiSkipForward: mdiSkipForward, + mdiSkipForwardOutline: mdiSkipForwardOutline, + mdiSkipNext: mdiSkipNext, + mdiSkipNextCircle: mdiSkipNextCircle, + mdiSkipNextCircleOutline: mdiSkipNextCircleOutline, + mdiSkipNextOutline: mdiSkipNextOutline, + mdiSkipPrevious: mdiSkipPrevious, + mdiSkipPreviousCircle: mdiSkipPreviousCircle, + mdiSkipPreviousCircleOutline: mdiSkipPreviousCircleOutline, + mdiSkipPreviousOutline: mdiSkipPreviousOutline, + mdiSkull: mdiSkull, + mdiSkullCrossbones: mdiSkullCrossbones, + mdiSkullCrossbonesOutline: mdiSkullCrossbonesOutline, + mdiSkullOutline: mdiSkullOutline, + mdiSkullScan: mdiSkullScan, + mdiSkullScanOutline: mdiSkullScanOutline, + mdiSkype: mdiSkype, + mdiSkypeBusiness: mdiSkypeBusiness, + mdiSlack: mdiSlack, + mdiSlashForward: mdiSlashForward, + mdiSlashForwardBox: mdiSlashForwardBox, + mdiSleep: mdiSleep, + mdiSleepOff: mdiSleepOff, + mdiSlide: mdiSlide, + mdiSlopeDownhill: mdiSlopeDownhill, + mdiSlopeUphill: mdiSlopeUphill, + mdiSlotMachine: mdiSlotMachine, + mdiSlotMachineOutline: mdiSlotMachineOutline, + mdiSmartCard: mdiSmartCard, + mdiSmartCardOutline: mdiSmartCardOutline, + mdiSmartCardReader: mdiSmartCardReader, + mdiSmartCardReaderOutline: mdiSmartCardReaderOutline, + mdiSmog: mdiSmog, + mdiSmokeDetector: mdiSmokeDetector, + mdiSmoking: mdiSmoking, + mdiSmokingOff: mdiSmokingOff, + mdiSmokingPipe: mdiSmokingPipe, + mdiSmokingPipeOff: mdiSmokingPipeOff, + mdiSnail: mdiSnail, + mdiSnake: mdiSnake, + mdiSnapchat: mdiSnapchat, + mdiSnowboard: mdiSnowboard, + mdiSnowflake: mdiSnowflake, + mdiSnowflakeAlert: mdiSnowflakeAlert, + mdiSnowflakeMelt: mdiSnowflakeMelt, + mdiSnowflakeOff: mdiSnowflakeOff, + mdiSnowflakeVariant: mdiSnowflakeVariant, + mdiSnowman: mdiSnowman, + mdiSoccer: mdiSoccer, + mdiSoccerField: mdiSoccerField, + mdiSocialDistance2Meters: mdiSocialDistance2Meters, + mdiSocialDistance6Feet: mdiSocialDistance6Feet, + mdiSofa: mdiSofa, + mdiSofaOutline: mdiSofaOutline, + mdiSofaSingle: mdiSofaSingle, + mdiSofaSingleOutline: mdiSofaSingleOutline, + mdiSolarPanel: mdiSolarPanel, + mdiSolarPanelLarge: mdiSolarPanelLarge, + mdiSolarPower: mdiSolarPower, + mdiSolderingIron: mdiSolderingIron, + mdiSolid: mdiSolid, + mdiSonyPlaystation: mdiSonyPlaystation, + mdiSort: mdiSort, + mdiSortAlphabeticalAscending: mdiSortAlphabeticalAscending, + mdiSortAlphabeticalAscendingVariant: mdiSortAlphabeticalAscendingVariant, + mdiSortAlphabeticalDescending: mdiSortAlphabeticalDescending, + mdiSortAlphabeticalDescendingVariant: mdiSortAlphabeticalDescendingVariant, + mdiSortAlphabeticalVariant: mdiSortAlphabeticalVariant, + mdiSortAscending: mdiSortAscending, + mdiSortBoolAscending: mdiSortBoolAscending, + mdiSortBoolAscendingVariant: mdiSortBoolAscendingVariant, + mdiSortBoolDescending: mdiSortBoolDescending, + mdiSortBoolDescendingVariant: mdiSortBoolDescendingVariant, + mdiSortCalendarAscending: mdiSortCalendarAscending, + mdiSortCalendarDescending: mdiSortCalendarDescending, + mdiSortClockAscending: mdiSortClockAscending, + mdiSortClockAscendingOutline: mdiSortClockAscendingOutline, + mdiSortClockDescending: mdiSortClockDescending, + mdiSortClockDescendingOutline: mdiSortClockDescendingOutline, + mdiSortDescending: mdiSortDescending, + mdiSortNumericAscending: mdiSortNumericAscending, + mdiSortNumericAscendingVariant: mdiSortNumericAscendingVariant, + mdiSortNumericDescending: mdiSortNumericDescending, + mdiSortNumericDescendingVariant: mdiSortNumericDescendingVariant, + mdiSortNumericVariant: mdiSortNumericVariant, + mdiSortReverseVariant: mdiSortReverseVariant, + mdiSortVariant: mdiSortVariant, + mdiSortVariantLock: mdiSortVariantLock, + mdiSortVariantLockOpen: mdiSortVariantLockOpen, + mdiSortVariantRemove: mdiSortVariantRemove, + mdiSoundcloud: mdiSoundcloud, + mdiSourceBranch: mdiSourceBranch, + mdiSourceBranchCheck: mdiSourceBranchCheck, + mdiSourceBranchMinus: mdiSourceBranchMinus, + mdiSourceBranchPlus: mdiSourceBranchPlus, + mdiSourceBranchRefresh: mdiSourceBranchRefresh, + mdiSourceBranchRemove: mdiSourceBranchRemove, + mdiSourceBranchSync: mdiSourceBranchSync, + mdiSourceCommit: mdiSourceCommit, + mdiSourceCommitEnd: mdiSourceCommitEnd, + mdiSourceCommitEndLocal: mdiSourceCommitEndLocal, + mdiSourceCommitLocal: mdiSourceCommitLocal, + mdiSourceCommitNextLocal: mdiSourceCommitNextLocal, + mdiSourceCommitStart: mdiSourceCommitStart, + mdiSourceCommitStartNextLocal: mdiSourceCommitStartNextLocal, + mdiSourceFork: mdiSourceFork, + mdiSourceMerge: mdiSourceMerge, + mdiSourcePull: mdiSourcePull, + mdiSourceRepository: mdiSourceRepository, + mdiSourceRepositoryMultiple: mdiSourceRepositoryMultiple, + mdiSoySauce: mdiSoySauce, + mdiSoySauceOff: mdiSoySauceOff, + mdiSpa: mdiSpa, + mdiSpaOutline: mdiSpaOutline, + mdiSpaceInvaders: mdiSpaceInvaders, + mdiSpaceStation: mdiSpaceStation, + mdiSpade: mdiSpade, + mdiSparkles: mdiSparkles, + mdiSpeaker: mdiSpeaker, + mdiSpeakerBluetooth: mdiSpeakerBluetooth, + mdiSpeakerMultiple: mdiSpeakerMultiple, + mdiSpeakerOff: mdiSpeakerOff, + mdiSpeakerWireless: mdiSpeakerWireless, + mdiSpeedometer: mdiSpeedometer, + mdiSpeedometerMedium: mdiSpeedometerMedium, + mdiSpeedometerSlow: mdiSpeedometerSlow, + mdiSpellcheck: mdiSpellcheck, + mdiSpider: mdiSpider, + mdiSpiderThread: mdiSpiderThread, + mdiSpiderWeb: mdiSpiderWeb, + mdiSpiritLevel: mdiSpiritLevel, + mdiSpoonSugar: mdiSpoonSugar, + mdiSpotify: mdiSpotify, + mdiSpotlight: mdiSpotlight, + mdiSpotlightBeam: mdiSpotlightBeam, + mdiSpray: mdiSpray, + mdiSprayBottle: mdiSprayBottle, + mdiSprinkler: mdiSprinkler, + mdiSprinklerVariant: mdiSprinklerVariant, + mdiSprout: mdiSprout, + mdiSproutOutline: mdiSproutOutline, + mdiSquare: mdiSquare, + mdiSquareCircle: mdiSquareCircle, + mdiSquareEditOutline: mdiSquareEditOutline, + mdiSquareMedium: mdiSquareMedium, + mdiSquareMediumOutline: mdiSquareMediumOutline, + mdiSquareOff: mdiSquareOff, + mdiSquareOffOutline: mdiSquareOffOutline, + mdiSquareOutline: mdiSquareOutline, + mdiSquareRoot: mdiSquareRoot, + mdiSquareRootBox: mdiSquareRootBox, + mdiSquareRounded: mdiSquareRounded, + mdiSquareRoundedOutline: mdiSquareRoundedOutline, + mdiSquareSmall: mdiSquareSmall, + mdiSquareWave: mdiSquareWave, + mdiSqueegee: mdiSqueegee, + mdiSsh: mdiSsh, + mdiStackExchange: mdiStackExchange, + mdiStackOverflow: mdiStackOverflow, + mdiStackpath: mdiStackpath, + mdiStadium: mdiStadium, + mdiStadiumVariant: mdiStadiumVariant, + mdiStairs: mdiStairs, + mdiStairsBox: mdiStairsBox, + mdiStairsDown: mdiStairsDown, + mdiStairsUp: mdiStairsUp, + mdiStamper: mdiStamper, + mdiStandardDefinition: mdiStandardDefinition, + mdiStar: mdiStar, + mdiStarBox: mdiStarBox, + mdiStarBoxMultiple: mdiStarBoxMultiple, + mdiStarBoxMultipleOutline: mdiStarBoxMultipleOutline, + mdiStarBoxOutline: mdiStarBoxOutline, + mdiStarCheck: mdiStarCheck, + mdiStarCheckOutline: mdiStarCheckOutline, + mdiStarCircle: mdiStarCircle, + mdiStarCircleOutline: mdiStarCircleOutline, + mdiStarCog: mdiStarCog, + mdiStarCogOutline: mdiStarCogOutline, + mdiStarFace: mdiStarFace, + mdiStarFourPoints: mdiStarFourPoints, + mdiStarFourPointsOutline: mdiStarFourPointsOutline, + mdiStarHalf: mdiStarHalf, + mdiStarHalfFull: mdiStarHalfFull, + mdiStarMinus: mdiStarMinus, + mdiStarMinusOutline: mdiStarMinusOutline, + mdiStarOff: mdiStarOff, + mdiStarOffOutline: mdiStarOffOutline, + mdiStarOutline: mdiStarOutline, + mdiStarPlus: mdiStarPlus, + mdiStarPlusOutline: mdiStarPlusOutline, + mdiStarRemove: mdiStarRemove, + mdiStarRemoveOutline: mdiStarRemoveOutline, + mdiStarSettings: mdiStarSettings, + mdiStarSettingsOutline: mdiStarSettingsOutline, + mdiStarShooting: mdiStarShooting, + mdiStarShootingOutline: mdiStarShootingOutline, + mdiStarThreePoints: mdiStarThreePoints, + mdiStarThreePointsOutline: mdiStarThreePointsOutline, + mdiStateMachine: mdiStateMachine, + mdiSteam: mdiSteam, + mdiSteering: mdiSteering, + mdiSteeringOff: mdiSteeringOff, + mdiStepBackward: mdiStepBackward, + mdiStepBackward2: mdiStepBackward2, + mdiStepForward: mdiStepForward, + mdiStepForward2: mdiStepForward2, + mdiStethoscope: mdiStethoscope, + mdiSticker: mdiSticker, + mdiStickerAlert: mdiStickerAlert, + mdiStickerAlertOutline: mdiStickerAlertOutline, + mdiStickerCheck: mdiStickerCheck, + mdiStickerCheckOutline: mdiStickerCheckOutline, + mdiStickerCircleOutline: mdiStickerCircleOutline, + mdiStickerEmoji: mdiStickerEmoji, + mdiStickerMinus: mdiStickerMinus, + mdiStickerMinusOutline: mdiStickerMinusOutline, + mdiStickerOutline: mdiStickerOutline, + mdiStickerPlus: mdiStickerPlus, + mdiStickerPlusOutline: mdiStickerPlusOutline, + mdiStickerRemove: mdiStickerRemove, + mdiStickerRemoveOutline: mdiStickerRemoveOutline, + mdiStocking: mdiStocking, + mdiStomach: mdiStomach, + mdiStop: mdiStop, + mdiStopCircle: mdiStopCircle, + mdiStopCircleOutline: mdiStopCircleOutline, + mdiStore: mdiStore, + mdiStore24Hour: mdiStore24Hour, + mdiStoreMinus: mdiStoreMinus, + mdiStoreOutline: mdiStoreOutline, + mdiStorePlus: mdiStorePlus, + mdiStoreRemove: mdiStoreRemove, + mdiStorefront: mdiStorefront, + mdiStorefrontOutline: mdiStorefrontOutline, + mdiStove: mdiStove, + mdiStrategy: mdiStrategy, + mdiStretchToPage: mdiStretchToPage, + mdiStretchToPageOutline: mdiStretchToPageOutline, + mdiStringLights: mdiStringLights, + mdiStringLightsOff: mdiStringLightsOff, + mdiSubdirectoryArrowLeft: mdiSubdirectoryArrowLeft, + mdiSubdirectoryArrowRight: mdiSubdirectoryArrowRight, + mdiSubmarine: mdiSubmarine, + mdiSubtitles: mdiSubtitles, + mdiSubtitlesOutline: mdiSubtitlesOutline, + mdiSubway: mdiSubway, + mdiSubwayAlertVariant: mdiSubwayAlertVariant, + mdiSubwayVariant: mdiSubwayVariant, + mdiSummit: mdiSummit, + mdiSunglasses: mdiSunglasses, + mdiSurroundSound: mdiSurroundSound, + mdiSurroundSound20: mdiSurroundSound20, + mdiSurroundSound21: mdiSurroundSound21, + mdiSurroundSound31: mdiSurroundSound31, + mdiSurroundSound51: mdiSurroundSound51, + mdiSurroundSound512: mdiSurroundSound512, + mdiSurroundSound71: mdiSurroundSound71, + mdiSvg: mdiSvg, + mdiSwapHorizontal: mdiSwapHorizontal, + mdiSwapHorizontalBold: mdiSwapHorizontalBold, + mdiSwapHorizontalCircle: mdiSwapHorizontalCircle, + mdiSwapHorizontalCircleOutline: mdiSwapHorizontalCircleOutline, + mdiSwapHorizontalVariant: mdiSwapHorizontalVariant, + mdiSwapVertical: mdiSwapVertical, + mdiSwapVerticalBold: mdiSwapVerticalBold, + mdiSwapVerticalCircle: mdiSwapVerticalCircle, + mdiSwapVerticalCircleOutline: mdiSwapVerticalCircleOutline, + mdiSwapVerticalVariant: mdiSwapVerticalVariant, + mdiSwim: mdiSwim, + mdiSwitch: mdiSwitch, + mdiSword: mdiSword, + mdiSwordCross: mdiSwordCross, + mdiSyllabaryHangul: mdiSyllabaryHangul, + mdiSyllabaryHiragana: mdiSyllabaryHiragana, + mdiSyllabaryKatakana: mdiSyllabaryKatakana, + mdiSyllabaryKatakanaHalfwidth: mdiSyllabaryKatakanaHalfwidth, + mdiSymbol: mdiSymbol, + mdiSymfony: mdiSymfony, + mdiSync: mdiSync, + mdiSyncAlert: mdiSyncAlert, + mdiSyncCircle: mdiSyncCircle, + mdiSyncOff: mdiSyncOff, + mdiTab: mdiTab, + mdiTabMinus: mdiTabMinus, + mdiTabPlus: mdiTabPlus, + mdiTabRemove: mdiTabRemove, + mdiTabUnselected: mdiTabUnselected, + mdiTable: mdiTable, + mdiTableAccount: mdiTableAccount, + mdiTableAlert: mdiTableAlert, + mdiTableArrowDown: mdiTableArrowDown, + mdiTableArrowLeft: mdiTableArrowLeft, + mdiTableArrowRight: mdiTableArrowRight, + mdiTableArrowUp: mdiTableArrowUp, + mdiTableBorder: mdiTableBorder, + mdiTableCancel: mdiTableCancel, + mdiTableChair: mdiTableChair, + mdiTableCheck: mdiTableCheck, + mdiTableClock: mdiTableClock, + mdiTableCog: mdiTableCog, + mdiTableColumn: mdiTableColumn, + mdiTableColumnPlusAfter: mdiTableColumnPlusAfter, + mdiTableColumnPlusBefore: mdiTableColumnPlusBefore, + mdiTableColumnRemove: mdiTableColumnRemove, + mdiTableColumnWidth: mdiTableColumnWidth, + mdiTableEdit: mdiTableEdit, + mdiTableEye: mdiTableEye, + mdiTableEyeOff: mdiTableEyeOff, + mdiTableFurniture: mdiTableFurniture, + mdiTableHeadersEye: mdiTableHeadersEye, + mdiTableHeadersEyeOff: mdiTableHeadersEyeOff, + mdiTableHeart: mdiTableHeart, + mdiTableKey: mdiTableKey, + mdiTableLarge: mdiTableLarge, + mdiTableLargePlus: mdiTableLargePlus, + mdiTableLargeRemove: mdiTableLargeRemove, + mdiTableLock: mdiTableLock, + mdiTableMergeCells: mdiTableMergeCells, + mdiTableMinus: mdiTableMinus, + mdiTableMultiple: mdiTableMultiple, + mdiTableNetwork: mdiTableNetwork, + mdiTableOfContents: mdiTableOfContents, + mdiTableOff: mdiTableOff, + mdiTablePicnic: mdiTablePicnic, + mdiTablePlus: mdiTablePlus, + mdiTableRefresh: mdiTableRefresh, + mdiTableRemove: mdiTableRemove, + mdiTableRow: mdiTableRow, + mdiTableRowHeight: mdiTableRowHeight, + mdiTableRowPlusAfter: mdiTableRowPlusAfter, + mdiTableRowPlusBefore: mdiTableRowPlusBefore, + mdiTableRowRemove: mdiTableRowRemove, + mdiTableSearch: mdiTableSearch, + mdiTableSettings: mdiTableSettings, + mdiTableSplitCell: mdiTableSplitCell, + mdiTableStar: mdiTableStar, + mdiTableSync: mdiTableSync, + mdiTableTennis: mdiTableTennis, + mdiTablet: mdiTablet, + mdiTabletAndroid: mdiTabletAndroid, + mdiTabletCellphone: mdiTabletCellphone, + mdiTabletDashboard: mdiTabletDashboard, + mdiTabletIpad: mdiTabletIpad, + mdiTaco: mdiTaco, + mdiTag: mdiTag, + mdiTagArrowDown: mdiTagArrowDown, + mdiTagArrowDownOutline: mdiTagArrowDownOutline, + mdiTagArrowLeft: mdiTagArrowLeft, + mdiTagArrowLeftOutline: mdiTagArrowLeftOutline, + mdiTagArrowRight: mdiTagArrowRight, + mdiTagArrowRightOutline: mdiTagArrowRightOutline, + mdiTagArrowUp: mdiTagArrowUp, + mdiTagArrowUpOutline: mdiTagArrowUpOutline, + mdiTagFaces: mdiTagFaces, + mdiTagHeart: mdiTagHeart, + mdiTagHeartOutline: mdiTagHeartOutline, + mdiTagMinus: mdiTagMinus, + mdiTagMinusOutline: mdiTagMinusOutline, + mdiTagMultiple: mdiTagMultiple, + mdiTagMultipleOutline: mdiTagMultipleOutline, + mdiTagOff: mdiTagOff, + mdiTagOffOutline: mdiTagOffOutline, + mdiTagOutline: mdiTagOutline, + mdiTagPlus: mdiTagPlus, + mdiTagPlusOutline: mdiTagPlusOutline, + mdiTagRemove: mdiTagRemove, + mdiTagRemoveOutline: mdiTagRemoveOutline, + mdiTagText: mdiTagText, + mdiTagTextOutline: mdiTagTextOutline, + mdiTailwind: mdiTailwind, + mdiTank: mdiTank, + mdiTankerTruck: mdiTankerTruck, + mdiTapeDrive: mdiTapeDrive, + mdiTapeMeasure: mdiTapeMeasure, + mdiTarget: mdiTarget, + mdiTargetAccount: mdiTargetAccount, + mdiTargetVariant: mdiTargetVariant, + mdiTaxi: mdiTaxi, + mdiTea: mdiTea, + mdiTeaOutline: mdiTeaOutline, + mdiTeach: mdiTeach, + mdiTeamviewer: mdiTeamviewer, + mdiTelegram: mdiTelegram, + mdiTelescope: mdiTelescope, + mdiTelevision: mdiTelevision, + mdiTelevisionAmbientLight: mdiTelevisionAmbientLight, + mdiTelevisionBox: mdiTelevisionBox, + mdiTelevisionClassic: mdiTelevisionClassic, + mdiTelevisionClassicOff: mdiTelevisionClassicOff, + mdiTelevisionClean: mdiTelevisionClean, + mdiTelevisionGuide: mdiTelevisionGuide, + mdiTelevisionOff: mdiTelevisionOff, + mdiTelevisionPause: mdiTelevisionPause, + mdiTelevisionPlay: mdiTelevisionPlay, + mdiTelevisionStop: mdiTelevisionStop, + mdiTemperatureCelsius: mdiTemperatureCelsius, + mdiTemperatureFahrenheit: mdiTemperatureFahrenheit, + mdiTemperatureKelvin: mdiTemperatureKelvin, + mdiTennis: mdiTennis, + mdiTennisBall: mdiTennisBall, + mdiTent: mdiTent, + mdiTerraform: mdiTerraform, + mdiTerrain: mdiTerrain, + mdiTestTube: mdiTestTube, + mdiTestTubeEmpty: mdiTestTubeEmpty, + mdiTestTubeOff: mdiTestTubeOff, + mdiText: mdiText, + mdiTextAccount: mdiTextAccount, + mdiTextBox: mdiTextBox, + mdiTextBoxCheck: mdiTextBoxCheck, + mdiTextBoxCheckOutline: mdiTextBoxCheckOutline, + mdiTextBoxMinus: mdiTextBoxMinus, + mdiTextBoxMinusOutline: mdiTextBoxMinusOutline, + mdiTextBoxMultiple: mdiTextBoxMultiple, + mdiTextBoxMultipleOutline: mdiTextBoxMultipleOutline, + mdiTextBoxOutline: mdiTextBoxOutline, + mdiTextBoxPlus: mdiTextBoxPlus, + mdiTextBoxPlusOutline: mdiTextBoxPlusOutline, + mdiTextBoxRemove: mdiTextBoxRemove, + mdiTextBoxRemoveOutline: mdiTextBoxRemoveOutline, + mdiTextBoxSearch: mdiTextBoxSearch, + mdiTextBoxSearchOutline: mdiTextBoxSearchOutline, + mdiTextRecognition: mdiTextRecognition, + mdiTextSearch: mdiTextSearch, + mdiTextShadow: mdiTextShadow, + mdiTextShort: mdiTextShort, + mdiTextSubject: mdiTextSubject, + mdiTextToSpeech: mdiTextToSpeech, + mdiTextToSpeechOff: mdiTextToSpeechOff, + mdiTexture: mdiTexture, + mdiTextureBox: mdiTextureBox, + mdiTheater: mdiTheater, + mdiThemeLightDark: mdiThemeLightDark, + mdiThermometer: mdiThermometer, + mdiThermometerAlert: mdiThermometerAlert, + mdiThermometerChevronDown: mdiThermometerChevronDown, + mdiThermometerChevronUp: mdiThermometerChevronUp, + mdiThermometerHigh: mdiThermometerHigh, + mdiThermometerLines: mdiThermometerLines, + mdiThermometerLow: mdiThermometerLow, + mdiThermometerMinus: mdiThermometerMinus, + mdiThermometerOff: mdiThermometerOff, + mdiThermometerPlus: mdiThermometerPlus, + mdiThermostat: mdiThermostat, + mdiThermostatBox: mdiThermostatBox, + mdiThoughtBubble: mdiThoughtBubble, + mdiThoughtBubbleOutline: mdiThoughtBubbleOutline, + mdiThumbDown: mdiThumbDown, + mdiThumbDownOutline: mdiThumbDownOutline, + mdiThumbUp: mdiThumbUp, + mdiThumbUpOutline: mdiThumbUpOutline, + mdiThumbsUpDown: mdiThumbsUpDown, + mdiTicket: mdiTicket, + mdiTicketAccount: mdiTicketAccount, + mdiTicketConfirmation: mdiTicketConfirmation, + mdiTicketConfirmationOutline: mdiTicketConfirmationOutline, + mdiTicketOutline: mdiTicketOutline, + mdiTicketPercent: mdiTicketPercent, + mdiTicketPercentOutline: mdiTicketPercentOutline, + mdiTie: mdiTie, + mdiTilde: mdiTilde, + mdiTimelapse: mdiTimelapse, + mdiTimeline: mdiTimeline, + mdiTimelineAlert: mdiTimelineAlert, + mdiTimelineAlertOutline: mdiTimelineAlertOutline, + mdiTimelineCheck: mdiTimelineCheck, + mdiTimelineCheckOutline: mdiTimelineCheckOutline, + mdiTimelineClock: mdiTimelineClock, + mdiTimelineClockOutline: mdiTimelineClockOutline, + mdiTimelineHelp: mdiTimelineHelp, + mdiTimelineHelpOutline: mdiTimelineHelpOutline, + mdiTimelineMinus: mdiTimelineMinus, + mdiTimelineMinusOutline: mdiTimelineMinusOutline, + mdiTimelineOutline: mdiTimelineOutline, + mdiTimelinePlus: mdiTimelinePlus, + mdiTimelinePlusOutline: mdiTimelinePlusOutline, + mdiTimelineRemove: mdiTimelineRemove, + mdiTimelineRemoveOutline: mdiTimelineRemoveOutline, + mdiTimelineText: mdiTimelineText, + mdiTimelineTextOutline: mdiTimelineTextOutline, + mdiTimer: mdiTimer, + mdiTimer10: mdiTimer10, + mdiTimer3: mdiTimer3, + mdiTimerOff: mdiTimerOff, + mdiTimerOffOutline: mdiTimerOffOutline, + mdiTimerOutline: mdiTimerOutline, + mdiTimerSand: mdiTimerSand, + mdiTimerSandEmpty: mdiTimerSandEmpty, + mdiTimerSandFull: mdiTimerSandFull, + mdiTimetable: mdiTimetable, + mdiToaster: mdiToaster, + mdiToasterOff: mdiToasterOff, + mdiToasterOven: mdiToasterOven, + mdiToggleSwitch: mdiToggleSwitch, + mdiToggleSwitchOff: mdiToggleSwitchOff, + mdiToggleSwitchOffOutline: mdiToggleSwitchOffOutline, + mdiToggleSwitchOutline: mdiToggleSwitchOutline, + mdiToilet: mdiToilet, + mdiToolbox: mdiToolbox, + mdiToolboxOutline: mdiToolboxOutline, + mdiTools: mdiTools, + mdiTooltip: mdiTooltip, + mdiTooltipAccount: mdiTooltipAccount, + mdiTooltipCheck: mdiTooltipCheck, + mdiTooltipCheckOutline: mdiTooltipCheckOutline, + mdiTooltipEdit: mdiTooltipEdit, + mdiTooltipEditOutline: mdiTooltipEditOutline, + mdiTooltipImage: mdiTooltipImage, + mdiTooltipImageOutline: mdiTooltipImageOutline, + mdiTooltipMinus: mdiTooltipMinus, + mdiTooltipMinusOutline: mdiTooltipMinusOutline, + mdiTooltipOutline: mdiTooltipOutline, + mdiTooltipPlus: mdiTooltipPlus, + mdiTooltipPlusOutline: mdiTooltipPlusOutline, + mdiTooltipRemove: mdiTooltipRemove, + mdiTooltipRemoveOutline: mdiTooltipRemoveOutline, + mdiTooltipText: mdiTooltipText, + mdiTooltipTextOutline: mdiTooltipTextOutline, + mdiTooth: mdiTooth, + mdiToothOutline: mdiToothOutline, + mdiToothbrush: mdiToothbrush, + mdiToothbrushElectric: mdiToothbrushElectric, + mdiToothbrushPaste: mdiToothbrushPaste, + mdiTorch: mdiTorch, + mdiTortoise: mdiTortoise, + mdiToslink: mdiToslink, + mdiTournament: mdiTournament, + mdiTowTruck: mdiTowTruck, + mdiTowerBeach: mdiTowerBeach, + mdiTowerFire: mdiTowerFire, + mdiToyBrick: mdiToyBrick, + mdiToyBrickMarker: mdiToyBrickMarker, + mdiToyBrickMarkerOutline: mdiToyBrickMarkerOutline, + mdiToyBrickMinus: mdiToyBrickMinus, + mdiToyBrickMinusOutline: mdiToyBrickMinusOutline, + mdiToyBrickOutline: mdiToyBrickOutline, + mdiToyBrickPlus: mdiToyBrickPlus, + mdiToyBrickPlusOutline: mdiToyBrickPlusOutline, + mdiToyBrickRemove: mdiToyBrickRemove, + mdiToyBrickRemoveOutline: mdiToyBrickRemoveOutline, + mdiToyBrickSearch: mdiToyBrickSearch, + mdiToyBrickSearchOutline: mdiToyBrickSearchOutline, + mdiTrackLight: mdiTrackLight, + mdiTrackpad: mdiTrackpad, + mdiTrackpadLock: mdiTrackpadLock, + mdiTractor: mdiTractor, + mdiTractorVariant: mdiTractorVariant, + mdiTrademark: mdiTrademark, + mdiTrafficCone: mdiTrafficCone, + mdiTrafficLight: mdiTrafficLight, + mdiTrain: mdiTrain, + mdiTrainCar: mdiTrainCar, + mdiTrainCarPassenger: mdiTrainCarPassenger, + mdiTrainCarPassengerDoor: mdiTrainCarPassengerDoor, + mdiTrainCarPassengerDoorOpen: mdiTrainCarPassengerDoorOpen, + mdiTrainCarPassengerVariant: mdiTrainCarPassengerVariant, + mdiTrainVariant: mdiTrainVariant, + mdiTram: mdiTram, + mdiTramSide: mdiTramSide, + mdiTranscribe: mdiTranscribe, + mdiTranscribeClose: mdiTranscribeClose, + mdiTransfer: mdiTransfer, + mdiTransferDown: mdiTransferDown, + mdiTransferLeft: mdiTransferLeft, + mdiTransferRight: mdiTransferRight, + mdiTransferUp: mdiTransferUp, + mdiTransitConnection: mdiTransitConnection, + mdiTransitConnectionHorizontal: mdiTransitConnectionHorizontal, + mdiTransitConnectionVariant: mdiTransitConnectionVariant, + mdiTransitDetour: mdiTransitDetour, + mdiTransitSkip: mdiTransitSkip, + mdiTransitTransfer: mdiTransitTransfer, + mdiTransition: mdiTransition, + mdiTransitionMasked: mdiTransitionMasked, + mdiTranslate: mdiTranslate, + mdiTranslateOff: mdiTranslateOff, + mdiTransmissionTower: mdiTransmissionTower, + mdiTrashCan: mdiTrashCan, + mdiTrashCanOutline: mdiTrashCanOutline, + mdiTray: mdiTray, + mdiTrayAlert: mdiTrayAlert, + mdiTrayFull: mdiTrayFull, + mdiTrayMinus: mdiTrayMinus, + mdiTrayPlus: mdiTrayPlus, + mdiTrayRemove: mdiTrayRemove, + mdiTreasureChest: mdiTreasureChest, + mdiTree: mdiTree, + mdiTreeOutline: mdiTreeOutline, + mdiTrello: mdiTrello, + mdiTrendingDown: mdiTrendingDown, + mdiTrendingNeutral: mdiTrendingNeutral, + mdiTrendingUp: mdiTrendingUp, + mdiTriangle: mdiTriangle, + mdiTriangleOutline: mdiTriangleOutline, + mdiTriangleWave: mdiTriangleWave, + mdiTriforce: mdiTriforce, + mdiTrophy: mdiTrophy, + mdiTrophyAward: mdiTrophyAward, + mdiTrophyBroken: mdiTrophyBroken, + mdiTrophyOutline: mdiTrophyOutline, + mdiTrophyVariant: mdiTrophyVariant, + mdiTrophyVariantOutline: mdiTrophyVariantOutline, + mdiTruck: mdiTruck, + mdiTruckCheck: mdiTruckCheck, + mdiTruckCheckOutline: mdiTruckCheckOutline, + mdiTruckDelivery: mdiTruckDelivery, + mdiTruckDeliveryOutline: mdiTruckDeliveryOutline, + mdiTruckFast: mdiTruckFast, + mdiTruckFastOutline: mdiTruckFastOutline, + mdiTruckOutline: mdiTruckOutline, + mdiTruckTrailer: mdiTruckTrailer, + mdiTrumpet: mdiTrumpet, + mdiTshirtCrew: mdiTshirtCrew, + mdiTshirtCrewOutline: mdiTshirtCrewOutline, + mdiTshirtV: mdiTshirtV, + mdiTshirtVOutline: mdiTshirtVOutline, + mdiTumbleDryer: mdiTumbleDryer, + mdiTumbleDryerAlert: mdiTumbleDryerAlert, + mdiTumbleDryerOff: mdiTumbleDryerOff, + mdiTune: mdiTune, + mdiTuneVariant: mdiTuneVariant, + mdiTuneVertical: mdiTuneVertical, + mdiTuneVerticalVariant: mdiTuneVerticalVariant, + mdiTurkey: mdiTurkey, + mdiTurnstile: mdiTurnstile, + mdiTurnstileOutline: mdiTurnstileOutline, + mdiTurtle: mdiTurtle, + mdiTwitch: mdiTwitch, + mdiTwitter: mdiTwitter, + mdiTwitterRetweet: mdiTwitterRetweet, + mdiTwoFactorAuthentication: mdiTwoFactorAuthentication, + mdiTypewriter: mdiTypewriter, + mdiUbisoft: mdiUbisoft, + mdiUbuntu: mdiUbuntu, + mdiUfo: mdiUfo, + mdiUfoOutline: mdiUfoOutline, + mdiUltraHighDefinition: mdiUltraHighDefinition, + mdiUmbraco: mdiUmbraco, + mdiUmbrella: mdiUmbrella, + mdiUmbrellaClosed: mdiUmbrellaClosed, + mdiUmbrellaClosedOutline: mdiUmbrellaClosedOutline, + mdiUmbrellaClosedVariant: mdiUmbrellaClosedVariant, + mdiUmbrellaOutline: mdiUmbrellaOutline, + mdiUndo: mdiUndo, + mdiUndoVariant: mdiUndoVariant, + mdiUnfoldLessHorizontal: mdiUnfoldLessHorizontal, + mdiUnfoldLessVertical: mdiUnfoldLessVertical, + mdiUnfoldMoreHorizontal: mdiUnfoldMoreHorizontal, + mdiUnfoldMoreVertical: mdiUnfoldMoreVertical, + mdiUngroup: mdiUngroup, + mdiUnicode: mdiUnicode, + mdiUnicorn: mdiUnicorn, + mdiUnicornVariant: mdiUnicornVariant, + mdiUnicycle: mdiUnicycle, + mdiUnity: mdiUnity, + mdiUnreal: mdiUnreal, + mdiUntappd: mdiUntappd, + mdiUpdate: mdiUpdate, + mdiUpload: mdiUpload, + mdiUploadLock: mdiUploadLock, + mdiUploadLockOutline: mdiUploadLockOutline, + mdiUploadMultiple: mdiUploadMultiple, + mdiUploadNetwork: mdiUploadNetwork, + mdiUploadNetworkOutline: mdiUploadNetworkOutline, + mdiUploadOff: mdiUploadOff, + mdiUploadOffOutline: mdiUploadOffOutline, + mdiUploadOutline: mdiUploadOutline, + mdiUsb: mdiUsb, + mdiUsbFlashDrive: mdiUsbFlashDrive, + mdiUsbFlashDriveOutline: mdiUsbFlashDriveOutline, + mdiUsbPort: mdiUsbPort, + mdiValve: mdiValve, + mdiValveClosed: mdiValveClosed, + mdiValveOpen: mdiValveOpen, + mdiVanPassenger: mdiVanPassenger, + mdiVanUtility: mdiVanUtility, + mdiVanish: mdiVanish, + mdiVanishQuarter: mdiVanishQuarter, + mdiVanityLight: mdiVanityLight, + mdiVariable: mdiVariable, + mdiVariableBox: mdiVariableBox, + mdiVectorArrangeAbove: mdiVectorArrangeAbove, + mdiVectorArrangeBelow: mdiVectorArrangeBelow, + mdiVectorBezier: mdiVectorBezier, + mdiVectorCircle: mdiVectorCircle, + mdiVectorCircleVariant: mdiVectorCircleVariant, + mdiVectorCombine: mdiVectorCombine, + mdiVectorCurve: mdiVectorCurve, + mdiVectorDifference: mdiVectorDifference, + mdiVectorDifferenceAb: mdiVectorDifferenceAb, + mdiVectorDifferenceBa: mdiVectorDifferenceBa, + mdiVectorEllipse: mdiVectorEllipse, + mdiVectorIntersection: mdiVectorIntersection, + mdiVectorLine: mdiVectorLine, + mdiVectorLink: mdiVectorLink, + mdiVectorPoint: mdiVectorPoint, + mdiVectorPolygon: mdiVectorPolygon, + mdiVectorPolyline: mdiVectorPolyline, + mdiVectorPolylineEdit: mdiVectorPolylineEdit, + mdiVectorPolylineMinus: mdiVectorPolylineMinus, + mdiVectorPolylinePlus: mdiVectorPolylinePlus, + mdiVectorPolylineRemove: mdiVectorPolylineRemove, + mdiVectorRadius: mdiVectorRadius, + mdiVectorRectangle: mdiVectorRectangle, + mdiVectorSelection: mdiVectorSelection, + mdiVectorSquare: mdiVectorSquare, + mdiVectorTriangle: mdiVectorTriangle, + mdiVectorUnion: mdiVectorUnion, + mdiVhs: mdiVhs, + mdiVibrate: mdiVibrate, + mdiVibrateOff: mdiVibrateOff, + mdiVideo: mdiVideo, + mdiVideo3d: mdiVideo3d, + mdiVideo3dOff: mdiVideo3dOff, + mdiVideo3dVariant: mdiVideo3dVariant, + mdiVideo4kBox: mdiVideo4kBox, + mdiVideoAccount: mdiVideoAccount, + mdiVideoBox: mdiVideoBox, + mdiVideoBoxOff: mdiVideoBoxOff, + mdiVideoCheck: mdiVideoCheck, + mdiVideoCheckOutline: mdiVideoCheckOutline, + mdiVideoHighDefinition: mdiVideoHighDefinition, + mdiVideoImage: mdiVideoImage, + mdiVideoInputAntenna: mdiVideoInputAntenna, + mdiVideoInputComponent: mdiVideoInputComponent, + mdiVideoInputHdmi: mdiVideoInputHdmi, + mdiVideoInputScart: mdiVideoInputScart, + mdiVideoInputSvideo: mdiVideoInputSvideo, + mdiVideoMinus: mdiVideoMinus, + mdiVideoMinusOutline: mdiVideoMinusOutline, + mdiVideoOff: mdiVideoOff, + mdiVideoOffOutline: mdiVideoOffOutline, + mdiVideoOutline: mdiVideoOutline, + mdiVideoPlus: mdiVideoPlus, + mdiVideoPlusOutline: mdiVideoPlusOutline, + mdiVideoStabilization: mdiVideoStabilization, + mdiVideoSwitch: mdiVideoSwitch, + mdiVideoSwitchOutline: mdiVideoSwitchOutline, + mdiVideoVintage: mdiVideoVintage, + mdiVideoWireless: mdiVideoWireless, + mdiVideoWirelessOutline: mdiVideoWirelessOutline, + mdiViewAgenda: mdiViewAgenda, + mdiViewAgendaOutline: mdiViewAgendaOutline, + mdiViewArray: mdiViewArray, + mdiViewArrayOutline: mdiViewArrayOutline, + mdiViewCarousel: mdiViewCarousel, + mdiViewCarouselOutline: mdiViewCarouselOutline, + mdiViewColumn: mdiViewColumn, + mdiViewColumnOutline: mdiViewColumnOutline, + mdiViewComfy: mdiViewComfy, + mdiViewComfyOutline: mdiViewComfyOutline, + mdiViewCompact: mdiViewCompact, + mdiViewCompactOutline: mdiViewCompactOutline, + mdiViewDashboard: mdiViewDashboard, + mdiViewDashboardOutline: mdiViewDashboardOutline, + mdiViewDashboardVariant: mdiViewDashboardVariant, + mdiViewDashboardVariantOutline: mdiViewDashboardVariantOutline, + mdiViewDay: mdiViewDay, + mdiViewDayOutline: mdiViewDayOutline, + mdiViewGrid: mdiViewGrid, + mdiViewGridOutline: mdiViewGridOutline, + mdiViewGridPlus: mdiViewGridPlus, + mdiViewGridPlusOutline: mdiViewGridPlusOutline, + mdiViewHeadline: mdiViewHeadline, + mdiViewList: mdiViewList, + mdiViewListOutline: mdiViewListOutline, + mdiViewModule: mdiViewModule, + mdiViewModuleOutline: mdiViewModuleOutline, + mdiViewParallel: mdiViewParallel, + mdiViewParallelOutline: mdiViewParallelOutline, + mdiViewQuilt: mdiViewQuilt, + mdiViewQuiltOutline: mdiViewQuiltOutline, + mdiViewSequential: mdiViewSequential, + mdiViewSequentialOutline: mdiViewSequentialOutline, + mdiViewSplitHorizontal: mdiViewSplitHorizontal, + mdiViewSplitVertical: mdiViewSplitVertical, + mdiViewStream: mdiViewStream, + mdiViewStreamOutline: mdiViewStreamOutline, + mdiViewWeek: mdiViewWeek, + mdiViewWeekOutline: mdiViewWeekOutline, + mdiVimeo: mdiVimeo, + mdiViolin: mdiViolin, + mdiVirtualReality: mdiVirtualReality, + mdiVirus: mdiVirus, + mdiVirusOutline: mdiVirusOutline, + mdiVk: mdiVk, + mdiVlc: mdiVlc, + mdiVoiceOff: mdiVoiceOff, + mdiVoicemail: mdiVoicemail, + mdiVolleyball: mdiVolleyball, + mdiVolumeHigh: mdiVolumeHigh, + mdiVolumeLow: mdiVolumeLow, + mdiVolumeMedium: mdiVolumeMedium, + mdiVolumeMinus: mdiVolumeMinus, + mdiVolumeMute: mdiVolumeMute, + mdiVolumeOff: mdiVolumeOff, + mdiVolumePlus: mdiVolumePlus, + mdiVolumeSource: mdiVolumeSource, + mdiVolumeVariantOff: mdiVolumeVariantOff, + mdiVolumeVibrate: mdiVolumeVibrate, + mdiVote: mdiVote, + mdiVoteOutline: mdiVoteOutline, + mdiVpn: mdiVpn, + mdiVuejs: mdiVuejs, + mdiVuetify: mdiVuetify, + mdiWalk: mdiWalk, + mdiWall: mdiWall, + mdiWallSconce: mdiWallSconce, + mdiWallSconceFlat: mdiWallSconceFlat, + mdiWallSconceFlatVariant: mdiWallSconceFlatVariant, + mdiWallSconceRound: mdiWallSconceRound, + mdiWallSconceRoundVariant: mdiWallSconceRoundVariant, + mdiWallet: mdiWallet, + mdiWalletGiftcard: mdiWalletGiftcard, + mdiWalletMembership: mdiWalletMembership, + mdiWalletOutline: mdiWalletOutline, + mdiWalletPlus: mdiWalletPlus, + mdiWalletPlusOutline: mdiWalletPlusOutline, + mdiWalletTravel: mdiWalletTravel, + mdiWallpaper: mdiWallpaper, + mdiWan: mdiWan, + mdiWardrobe: mdiWardrobe, + mdiWardrobeOutline: mdiWardrobeOutline, + mdiWarehouse: mdiWarehouse, + mdiWashingMachine: mdiWashingMachine, + mdiWashingMachineAlert: mdiWashingMachineAlert, + mdiWashingMachineOff: mdiWashingMachineOff, + mdiWatch: mdiWatch, + mdiWatchExport: mdiWatchExport, + mdiWatchExportVariant: mdiWatchExportVariant, + mdiWatchImport: mdiWatchImport, + mdiWatchImportVariant: mdiWatchImportVariant, + mdiWatchVariant: mdiWatchVariant, + mdiWatchVibrate: mdiWatchVibrate, + mdiWatchVibrateOff: mdiWatchVibrateOff, + mdiWater: mdiWater, + mdiWaterAlert: mdiWaterAlert, + mdiWaterAlertOutline: mdiWaterAlertOutline, + mdiWaterBoiler: mdiWaterBoiler, + mdiWaterBoilerAlert: mdiWaterBoilerAlert, + mdiWaterBoilerOff: mdiWaterBoilerOff, + mdiWaterCheck: mdiWaterCheck, + mdiWaterCheckOutline: mdiWaterCheckOutline, + mdiWaterMinus: mdiWaterMinus, + mdiWaterMinusOutline: mdiWaterMinusOutline, + mdiWaterOff: mdiWaterOff, + mdiWaterOffOutline: mdiWaterOffOutline, + mdiWaterOutline: mdiWaterOutline, + mdiWaterPercent: mdiWaterPercent, + mdiWaterPercentAlert: mdiWaterPercentAlert, + mdiWaterPlus: mdiWaterPlus, + mdiWaterPlusOutline: mdiWaterPlusOutline, + mdiWaterPolo: mdiWaterPolo, + mdiWaterPump: mdiWaterPump, + mdiWaterPumpOff: mdiWaterPumpOff, + mdiWaterRemove: mdiWaterRemove, + mdiWaterRemoveOutline: mdiWaterRemoveOutline, + mdiWaterWell: mdiWaterWell, + mdiWaterWellOutline: mdiWaterWellOutline, + mdiWateringCan: mdiWateringCan, + mdiWateringCanOutline: mdiWateringCanOutline, + mdiWatermark: mdiWatermark, + mdiWave: mdiWave, + mdiWaveform: mdiWaveform, + mdiWaves: mdiWaves, + mdiWaze: mdiWaze, + mdiWeatherCloudy: mdiWeatherCloudy, + mdiWeatherCloudyAlert: mdiWeatherCloudyAlert, + mdiWeatherCloudyArrowRight: mdiWeatherCloudyArrowRight, + mdiWeatherFog: mdiWeatherFog, + mdiWeatherHail: mdiWeatherHail, + mdiWeatherHazy: mdiWeatherHazy, + mdiWeatherHurricane: mdiWeatherHurricane, + mdiWeatherLightning: mdiWeatherLightning, + mdiWeatherLightningRainy: mdiWeatherLightningRainy, + mdiWeatherNight: mdiWeatherNight, + mdiWeatherNightPartlyCloudy: mdiWeatherNightPartlyCloudy, + mdiWeatherPartlyCloudy: mdiWeatherPartlyCloudy, + mdiWeatherPartlyLightning: mdiWeatherPartlyLightning, + mdiWeatherPartlyRainy: mdiWeatherPartlyRainy, + mdiWeatherPartlySnowy: mdiWeatherPartlySnowy, + mdiWeatherPartlySnowyRainy: mdiWeatherPartlySnowyRainy, + mdiWeatherPouring: mdiWeatherPouring, + mdiWeatherRainy: mdiWeatherRainy, + mdiWeatherSnowy: mdiWeatherSnowy, + mdiWeatherSnowyHeavy: mdiWeatherSnowyHeavy, + mdiWeatherSnowyRainy: mdiWeatherSnowyRainy, + mdiWeatherSunny: mdiWeatherSunny, + mdiWeatherSunnyAlert: mdiWeatherSunnyAlert, + mdiWeatherSunnyOff: mdiWeatherSunnyOff, + mdiWeatherSunset: mdiWeatherSunset, + mdiWeatherSunsetDown: mdiWeatherSunsetDown, + mdiWeatherSunsetUp: mdiWeatherSunsetUp, + mdiWeatherTornado: mdiWeatherTornado, + mdiWeatherWindy: mdiWeatherWindy, + mdiWeatherWindyVariant: mdiWeatherWindyVariant, + mdiWeb: mdiWeb, + mdiWebBox: mdiWebBox, + mdiWebClock: mdiWebClock, + mdiWebcam: mdiWebcam, + mdiWebcamOff: mdiWebcamOff, + mdiWebhook: mdiWebhook, + mdiWebpack: mdiWebpack, + mdiWebrtc: mdiWebrtc, + mdiWechat: mdiWechat, + mdiWeight: mdiWeight, + mdiWeightGram: mdiWeightGram, + mdiWeightKilogram: mdiWeightKilogram, + mdiWeightLifter: mdiWeightLifter, + mdiWeightPound: mdiWeightPound, + mdiWhatsapp: mdiWhatsapp, + mdiWheelBarrow: mdiWheelBarrow, + mdiWheelchairAccessibility: mdiWheelchairAccessibility, + mdiWhistle: mdiWhistle, + mdiWhistleOutline: mdiWhistleOutline, + mdiWhiteBalanceAuto: mdiWhiteBalanceAuto, + mdiWhiteBalanceIncandescent: mdiWhiteBalanceIncandescent, + mdiWhiteBalanceIridescent: mdiWhiteBalanceIridescent, + mdiWhiteBalanceSunny: mdiWhiteBalanceSunny, + mdiWidgets: mdiWidgets, + mdiWidgetsOutline: mdiWidgetsOutline, + mdiWifi: mdiWifi, + mdiWifiAlert: mdiWifiAlert, + mdiWifiArrowDown: mdiWifiArrowDown, + mdiWifiArrowLeft: mdiWifiArrowLeft, + mdiWifiArrowLeftRight: mdiWifiArrowLeftRight, + mdiWifiArrowRight: mdiWifiArrowRight, + mdiWifiArrowUp: mdiWifiArrowUp, + mdiWifiArrowUpDown: mdiWifiArrowUpDown, + mdiWifiCancel: mdiWifiCancel, + mdiWifiCheck: mdiWifiCheck, + mdiWifiCog: mdiWifiCog, + mdiWifiLock: mdiWifiLock, + mdiWifiLockOpen: mdiWifiLockOpen, + mdiWifiMarker: mdiWifiMarker, + mdiWifiMinus: mdiWifiMinus, + mdiWifiOff: mdiWifiOff, + mdiWifiPlus: mdiWifiPlus, + mdiWifiRefresh: mdiWifiRefresh, + mdiWifiRemove: mdiWifiRemove, + mdiWifiSettings: mdiWifiSettings, + mdiWifiStar: mdiWifiStar, + mdiWifiStrength1: mdiWifiStrength1, + mdiWifiStrength1Alert: mdiWifiStrength1Alert, + mdiWifiStrength1Lock: mdiWifiStrength1Lock, + mdiWifiStrength1LockOpen: mdiWifiStrength1LockOpen, + mdiWifiStrength2: mdiWifiStrength2, + mdiWifiStrength2Alert: mdiWifiStrength2Alert, + mdiWifiStrength2Lock: mdiWifiStrength2Lock, + mdiWifiStrength2LockOpen: mdiWifiStrength2LockOpen, + mdiWifiStrength3: mdiWifiStrength3, + mdiWifiStrength3Alert: mdiWifiStrength3Alert, + mdiWifiStrength3Lock: mdiWifiStrength3Lock, + mdiWifiStrength3LockOpen: mdiWifiStrength3LockOpen, + mdiWifiStrength4: mdiWifiStrength4, + mdiWifiStrength4Alert: mdiWifiStrength4Alert, + mdiWifiStrength4Lock: mdiWifiStrength4Lock, + mdiWifiStrength4LockOpen: mdiWifiStrength4LockOpen, + mdiWifiStrengthAlertOutline: mdiWifiStrengthAlertOutline, + mdiWifiStrengthLockOpenOutline: mdiWifiStrengthLockOpenOutline, + mdiWifiStrengthLockOutline: mdiWifiStrengthLockOutline, + mdiWifiStrengthOff: mdiWifiStrengthOff, + mdiWifiStrengthOffOutline: mdiWifiStrengthOffOutline, + mdiWifiStrengthOutline: mdiWifiStrengthOutline, + mdiWifiSync: mdiWifiSync, + mdiWikipedia: mdiWikipedia, + mdiWindTurbine: mdiWindTurbine, + mdiWindowClose: mdiWindowClose, + mdiWindowClosed: mdiWindowClosed, + mdiWindowClosedVariant: mdiWindowClosedVariant, + mdiWindowMaximize: mdiWindowMaximize, + mdiWindowMinimize: mdiWindowMinimize, + mdiWindowOpen: mdiWindowOpen, + mdiWindowOpenVariant: mdiWindowOpenVariant, + mdiWindowRestore: mdiWindowRestore, + mdiWindowShutter: mdiWindowShutter, + mdiWindowShutterAlert: mdiWindowShutterAlert, + mdiWindowShutterOpen: mdiWindowShutterOpen, + mdiWindsock: mdiWindsock, + mdiWiper: mdiWiper, + mdiWiperWash: mdiWiperWash, + mdiWizardHat: mdiWizardHat, + mdiWordpress: mdiWordpress, + mdiWrap: mdiWrap, + mdiWrapDisabled: mdiWrapDisabled, + mdiWrench: mdiWrench, + mdiWrenchOutline: mdiWrenchOutline, + mdiXamarin: mdiXamarin, + mdiXamarinOutline: mdiXamarinOutline, + mdiXing: mdiXing, + mdiXml: mdiXml, + mdiXmpp: mdiXmpp, + mdiYCombinator: mdiYCombinator, + mdiYahoo: mdiYahoo, + mdiYeast: mdiYeast, + mdiYinYang: mdiYinYang, + mdiYoga: mdiYoga, + mdiYoutube: mdiYoutube, + mdiYoutubeGaming: mdiYoutubeGaming, + mdiYoutubeStudio: mdiYoutubeStudio, + mdiYoutubeSubscription: mdiYoutubeSubscription, + mdiYoutubeTv: mdiYoutubeTv, + mdiYurt: mdiYurt, + mdiZWave: mdiZWave, + mdiZend: mdiZend, + mdiZigbee: mdiZigbee, + mdiZipBox: mdiZipBox, + mdiZipBoxOutline: mdiZipBoxOutline, + mdiZipDisk: mdiZipDisk, + mdiZodiacAquarius: mdiZodiacAquarius, + mdiZodiacAries: mdiZodiacAries, + mdiZodiacCancer: mdiZodiacCancer, + mdiZodiacCapricorn: mdiZodiacCapricorn, + mdiZodiacGemini: mdiZodiacGemini, + mdiZodiacLeo: mdiZodiacLeo, + mdiZodiacLibra: mdiZodiacLibra, + mdiZodiacPisces: mdiZodiacPisces, + mdiZodiacSagittarius: mdiZodiacSagittarius, + mdiZodiacScorpio: mdiZodiacScorpio, + mdiZodiacTaurus: mdiZodiacTaurus, + mdiZodiacVirgo: mdiZodiacVirgo +}); + +// Attribution: https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/blob/main/src/icons.ts +function pathToSvg(icon) { + return ` + + + `; // +} +const icons = { + ag_expand: mdiArrowExpandAll, + ag_collapse: mdiArrowCollapseAll, + ag_select_all: mdiSelectAll, + ag_select_inverse: mdiSelectCompare, + ag_select_neighbors: mdiSelectGroup, + ag_lock: mdiLock, + ag_unlock: mdiLockOpenVariantOutline, + ag_hide: mdiEyeOff, + ag_unhide: mdiEye, + ag_fit: mdiFitToPageOutline, + ag_image: mdiImage, + ag_workspace: mdiToolboxOutline, + ag_local: mdiFlare, + ag_fdgd: mdiGrain, + ag_concentric: mdiGraphql, + ag_grid: mdiDotsGrid, + ag_hierarchy: mdiGraph, + ag_file: mdiFileOutline, + ag_filter: mdiFilterOutline, + ag_save: mdiContentSave, + ag_node_list: mdiFormatListBulletedType, + ag_style: mdiPaletteOutline, + ag_help: mdiHelp, +}; +const addIcons = () => { + Object.keys(icons).forEach((key) => { + obsidian.addIcon(key.replace('_', '-').replace('_', '-'), pathToSvg(icons[key])); + }); +}; + +/* src/ui/toolbar/ToolbarButton.svelte generated by Svelte v3.45.0 */ + +function create_fragment$a(ctx) { + let button; + let svg; + let path; + let mounted; + let dispose; + + return { + c() { + button = element$1("button"); + svg = svg_element("svg"); + path = svg_element("path"); + attr(path, "d", /*icon*/ ctx[0]); + set_style(svg, "width", "17px"); + set_style(svg, "height", "17px"); + attr(svg, "viewBox", "0 0 24 24"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + attr(button, "type", "button"); + attr(button, "class", "juggl-button"); + attr(button, "aria-label", /*title*/ ctx[3]); + button.disabled = /*disabled*/ ctx[2]; + }, + m(target, anchor) { + insert(target, button, anchor); + append(button, svg); + append(svg, path); + + if (!mounted) { + dispose = listen(button, "click", function () { + if (is_function(/*onClick*/ ctx[1])) /*onClick*/ ctx[1].apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + + if (dirty & /*icon*/ 1) { + attr(path, "d", /*icon*/ ctx[0]); + } + + if (dirty & /*title*/ 8) { + attr(button, "aria-label", /*title*/ ctx[3]); + } + + if (dirty & /*disabled*/ 4) { + button.disabled = /*disabled*/ ctx[2]; + } + }, + i: noop$2, + o: noop$2, + d(detaching) { + if (detaching) detach(button); + mounted = false; + dispose(); + } + }; +} + +function instance$a($$self, $$props, $$invalidate) { + let { icon } = $$props; + let { onClick } = $$props; + let { disabled = false } = $$props; + let { title } = $$props; + + $$self.$$set = $$props => { + if ('icon' in $$props) $$invalidate(0, icon = $$props.icon); + if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick); + if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled); + if ('title' in $$props) $$invalidate(3, title = $$props.title); + }; + + return [icon, onClick, disabled, title]; +} + +class ToolbarButton extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance$a, create_fragment$a, safe_not_equal, { + icon: 0, + onClick: 1, + disabled: 2, + title: 3 + }); + } +} + +class JugglHelpView extends obsidian.ItemView { + constructor() { + super(...arguments); + this.frame = null; + } + async onOpen() { + this.frame = document.createElement('iframe'); + this.frame.addClass(`juggl-site`); + this.frame.setAttr('style', 'height: 100%; width:100%'); + this.frame.setAttr('src', 'https://juggl.io'); + this.frame.setAttr('tabindex', '0'); + this.containerEl.children[1].appendChild(this.frame); + } + getDisplayText() { + return 'Juggl help'; + } + getViewType() { + return JUGGL_HELP_VIEW; + } +} + +/* src/ui/toolbar/HelpButton.svelte generated by Svelte v3.45.0 */ + +function create_fragment$9(ctx) { + let toolbarbutton; + let current; + + toolbarbutton = new ToolbarButton({ + props: { + icon: icons.ag_help, + title: "Help", + onClick: /*openHelp*/ ctx[0] + } + }); + + return { + c() { + create_component(toolbarbutton.$$.fragment); + }, + m(target, anchor) { + mount_component(toolbarbutton, target, anchor); + current = true; + }, + p: noop$2, + i(local) { + if (current) return; + transition_in(toolbarbutton.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(toolbarbutton.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(toolbarbutton, detaching); + } + }; +} + +function instance$9($$self, $$props, $$invalidate) { + let { workspace } = $$props; + + let openHelp = function () { + let leaf = workspace.getLeaf(true); + let view = new JugglHelpView(leaf); + leaf.open(view); + }; + + $$self.$$set = $$props => { + if ('workspace' in $$props) $$invalidate(1, workspace = $$props.workspace); + }; + + return [openHelp, workspace]; +} + +class HelpButton extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$9, create_fragment$9, safe_not_equal, { workspace: 1 }); + } +} + +/* src/ui/toolbar/Toolbar.svelte generated by Svelte v3.45.0 */ + +function create_fragment$8(ctx) { + let div0; + let toolbarbutton0; + let t0; + let toolbarbutton1; + let t1; + let toolbarbutton2; + let t2; + let toolbarbutton3; + let t3; + let div1; + let toolbarbutton4; + let t4; + let toolbarbutton5; + let t5; + let div2; + let helpbutton; + let t6; + let toolbarbutton6; + let t7; + let div3; + let toolbarbutton7; + let t8; + let toolbarbutton8; + let t9; + let toolbarbutton9; + let t10; + let div4; + let toolbarbutton10; + let t11; + let toolbarbutton11; + let t12; + let toolbarbutton12; + let t13; + let div5; + let toolbarbutton13; + let t14; + let toolbarbutton14; + let t15; + let br; + let label; + let input; + let current; + let mounted; + let dispose; + + toolbarbutton0 = new ToolbarButton({ + props: { + icon: icons.ag_fdgd, + onClick: /*fdgdClick*/ ctx[2], + title: "Force directed layout" + } + }); + + toolbarbutton1 = new ToolbarButton({ + props: { + icon: icons.ag_concentric, + onClick: /*concentricClick*/ ctx[3], + title: "Circle layout" + } + }); + + toolbarbutton2 = new ToolbarButton({ + props: { + icon: icons.ag_grid, + onClick: /*gridClick*/ ctx[4], + title: "Grid layout" + } + }); + + toolbarbutton3 = new ToolbarButton({ + props: { + icon: icons.ag_hierarchy, + onClick: /*hierarchyClick*/ ctx[5], + title: "Hierarchical layout" + } + }); + + toolbarbutton4 = new ToolbarButton({ + props: { + icon: icons.ag_fit, + onClick: /*fitClick*/ ctx[14], + title: "Fit view" + } + }); + + toolbarbutton5 = new ToolbarButton({ + props: { + icon: icons.ag_local, + onClick: /*localModeClick*/ ctx[15], + title: "Local mode" + } + }); + + helpbutton = new HelpButton({ + props: { workspace: /*workspace*/ ctx[17] } + }); + + toolbarbutton6 = new ToolbarButton({ + props: { + icon: icons.ag_save, + onClick: /*saveClick*/ ctx[16], + title: "Manage workspace graphs" + } + }); + + toolbarbutton7 = new ToolbarButton({ + props: { + icon: icons.ag_expand, + onClick: /*expandClick*/ ctx[6], + disabled: /*disableOnNoneSelected*/ ctx[18], + title: "Expand selected nodes (E)" + } + }); + + toolbarbutton8 = new ToolbarButton({ + props: { + icon: icons.ag_collapse, + onClick: /*collapseClick*/ ctx[7], + disabled: /*disableOnNoneSelected*/ ctx[18], + title: "Collapse expanded nodes (C)" + } + }); + + toolbarbutton9 = new ToolbarButton({ + props: { + icon: icons.ag_hide, + onClick: /*hideClick*/ ctx[8], + disabled: /*disableOnNoneSelected*/ ctx[18], + title: "Hide selected nodes (H)" + } + }); + + toolbarbutton10 = new ToolbarButton({ + props: { + icon: icons.ag_select_all, + onClick: /*selectAllClick*/ ctx[9], + title: "Select all nodes (A)" + } + }); + + toolbarbutton11 = new ToolbarButton({ + props: { + icon: icons.ag_select_inverse, + onClick: /*selectInvertClick*/ ctx[10], + disabled: /*disableOnNoneSelected*/ ctx[18], + title: "Invert selection (I)" + } + }); + + toolbarbutton12 = new ToolbarButton({ + props: { + icon: icons.ag_select_neighbors, + onClick: /*selectNeighborClick*/ ctx[11], + disabled: /*disableOnNoneSelected*/ ctx[18], + title: "Select neighbors (N)" + } + }); + + toolbarbutton13 = new ToolbarButton({ + props: { + icon: icons.ag_lock, + onClick: /*lockClick*/ ctx[12], + disabled: /*disableOnAllPinned*/ ctx[19], + title: "Lock selected nodes in place (P)" + } + }); + + toolbarbutton14 = new ToolbarButton({ + props: { + icon: icons.ag_unlock, + onClick: /*unlockClick*/ ctx[13], + disabled: /*disableOnNonePinned*/ ctx[20], + title: "Unlock selected nodes in place (U)" + } + }); + + return { + c() { + div0 = element$1("div"); + create_component(toolbarbutton0.$$.fragment); + t0 = space(); + create_component(toolbarbutton1.$$.fragment); + t1 = space(); + create_component(toolbarbutton2.$$.fragment); + t2 = space(); + create_component(toolbarbutton3.$$.fragment); + t3 = space(); + div1 = element$1("div"); + create_component(toolbarbutton4.$$.fragment); + t4 = space(); + create_component(toolbarbutton5.$$.fragment); + t5 = space(); + div2 = element$1("div"); + create_component(helpbutton.$$.fragment); + t6 = space(); + create_component(toolbarbutton6.$$.fragment); + t7 = space(); + div3 = element$1("div"); + create_component(toolbarbutton7.$$.fragment); + t8 = space(); + create_component(toolbarbutton8.$$.fragment); + t9 = space(); + create_component(toolbarbutton9.$$.fragment); + t10 = space(); + div4 = element$1("div"); + create_component(toolbarbutton10.$$.fragment); + t11 = space(); + create_component(toolbarbutton11.$$.fragment); + t12 = space(); + create_component(toolbarbutton12.$$.fragment); + t13 = space(); + div5 = element$1("div"); + create_component(toolbarbutton13.$$.fragment); + t14 = space(); + create_component(toolbarbutton14.$$.fragment); + t15 = space(); + br = element$1("br"); + label = element$1("label"); + label.textContent = "Filter: "; + input = element$1("input"); + attr(div0, "class", "cy-toolbar-section"); + attr(div1, "class", "cy-toolbar-section"); + attr(div2, "class", "cy-toolbar-section"); + attr(div3, "class", "cy-toolbar-section"); + attr(div4, "class", "cy-toolbar-section"); + attr(div5, "class", "cy-toolbar-section"); + attr(label, "for", "ag-filter"); + attr(input, "type", "text"); + attr(input, "id", "ag-filter"); + attr(input, "name", "ag-filter"); + input.value = /*filterValue*/ ctx[1]; + }, + m(target, anchor) { + insert(target, div0, anchor); + mount_component(toolbarbutton0, div0, null); + append(div0, t0); + mount_component(toolbarbutton1, div0, null); + append(div0, t1); + mount_component(toolbarbutton2, div0, null); + append(div0, t2); + mount_component(toolbarbutton3, div0, null); + insert(target, t3, anchor); + insert(target, div1, anchor); + mount_component(toolbarbutton4, div1, null); + append(div1, t4); + mount_component(toolbarbutton5, div1, null); + insert(target, t5, anchor); + insert(target, div2, anchor); + mount_component(helpbutton, div2, null); + append(div2, t6); + mount_component(toolbarbutton6, div2, null); + insert(target, t7, anchor); + insert(target, div3, anchor); + mount_component(toolbarbutton7, div3, null); + append(div3, t8); + mount_component(toolbarbutton8, div3, null); + append(div3, t9); + mount_component(toolbarbutton9, div3, null); + insert(target, t10, anchor); + insert(target, div4, anchor); + mount_component(toolbarbutton10, div4, null); + append(div4, t11); + mount_component(toolbarbutton11, div4, null); + append(div4, t12); + mount_component(toolbarbutton12, div4, null); + insert(target, t13, anchor); + insert(target, div5, anchor); + mount_component(toolbarbutton13, div5, null); + append(div5, t14); + mount_component(toolbarbutton14, div5, null); + insert(target, t15, anchor); + insert(target, br, anchor); + insert(target, label, anchor); + insert(target, input, anchor); + current = true; + + if (!mounted) { + dispose = listen(input, "input", function () { + if (is_function(/*filterInput*/ ctx[0])) /*filterInput*/ ctx[0].apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + const toolbarbutton0_changes = {}; + if (dirty & /*fdgdClick*/ 4) toolbarbutton0_changes.onClick = /*fdgdClick*/ ctx[2]; + toolbarbutton0.$set(toolbarbutton0_changes); + const toolbarbutton1_changes = {}; + if (dirty & /*concentricClick*/ 8) toolbarbutton1_changes.onClick = /*concentricClick*/ ctx[3]; + toolbarbutton1.$set(toolbarbutton1_changes); + const toolbarbutton2_changes = {}; + if (dirty & /*gridClick*/ 16) toolbarbutton2_changes.onClick = /*gridClick*/ ctx[4]; + toolbarbutton2.$set(toolbarbutton2_changes); + const toolbarbutton3_changes = {}; + if (dirty & /*hierarchyClick*/ 32) toolbarbutton3_changes.onClick = /*hierarchyClick*/ ctx[5]; + toolbarbutton3.$set(toolbarbutton3_changes); + const toolbarbutton4_changes = {}; + if (dirty & /*fitClick*/ 16384) toolbarbutton4_changes.onClick = /*fitClick*/ ctx[14]; + toolbarbutton4.$set(toolbarbutton4_changes); + const toolbarbutton5_changes = {}; + if (dirty & /*localModeClick*/ 32768) toolbarbutton5_changes.onClick = /*localModeClick*/ ctx[15]; + toolbarbutton5.$set(toolbarbutton5_changes); + const helpbutton_changes = {}; + if (dirty & /*workspace*/ 131072) helpbutton_changes.workspace = /*workspace*/ ctx[17]; + helpbutton.$set(helpbutton_changes); + const toolbarbutton6_changes = {}; + if (dirty & /*saveClick*/ 65536) toolbarbutton6_changes.onClick = /*saveClick*/ ctx[16]; + toolbarbutton6.$set(toolbarbutton6_changes); + const toolbarbutton7_changes = {}; + if (dirty & /*expandClick*/ 64) toolbarbutton7_changes.onClick = /*expandClick*/ ctx[6]; + if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton7_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; + toolbarbutton7.$set(toolbarbutton7_changes); + const toolbarbutton8_changes = {}; + if (dirty & /*collapseClick*/ 128) toolbarbutton8_changes.onClick = /*collapseClick*/ ctx[7]; + if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton8_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; + toolbarbutton8.$set(toolbarbutton8_changes); + const toolbarbutton9_changes = {}; + if (dirty & /*hideClick*/ 256) toolbarbutton9_changes.onClick = /*hideClick*/ ctx[8]; + if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton9_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; + toolbarbutton9.$set(toolbarbutton9_changes); + const toolbarbutton10_changes = {}; + if (dirty & /*selectAllClick*/ 512) toolbarbutton10_changes.onClick = /*selectAllClick*/ ctx[9]; + toolbarbutton10.$set(toolbarbutton10_changes); + const toolbarbutton11_changes = {}; + if (dirty & /*selectInvertClick*/ 1024) toolbarbutton11_changes.onClick = /*selectInvertClick*/ ctx[10]; + if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton11_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; + toolbarbutton11.$set(toolbarbutton11_changes); + const toolbarbutton12_changes = {}; + if (dirty & /*selectNeighborClick*/ 2048) toolbarbutton12_changes.onClick = /*selectNeighborClick*/ ctx[11]; + if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton12_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; + toolbarbutton12.$set(toolbarbutton12_changes); + const toolbarbutton13_changes = {}; + if (dirty & /*lockClick*/ 4096) toolbarbutton13_changes.onClick = /*lockClick*/ ctx[12]; + if (dirty & /*disableOnAllPinned*/ 524288) toolbarbutton13_changes.disabled = /*disableOnAllPinned*/ ctx[19]; + toolbarbutton13.$set(toolbarbutton13_changes); + const toolbarbutton14_changes = {}; + if (dirty & /*unlockClick*/ 8192) toolbarbutton14_changes.onClick = /*unlockClick*/ ctx[13]; + if (dirty & /*disableOnNonePinned*/ 1048576) toolbarbutton14_changes.disabled = /*disableOnNonePinned*/ ctx[20]; + toolbarbutton14.$set(toolbarbutton14_changes); + + if (!current || dirty & /*filterValue*/ 2 && input.value !== /*filterValue*/ ctx[1]) { + input.value = /*filterValue*/ ctx[1]; + } + }, + i(local) { + if (current) return; + transition_in(toolbarbutton0.$$.fragment, local); + transition_in(toolbarbutton1.$$.fragment, local); + transition_in(toolbarbutton2.$$.fragment, local); + transition_in(toolbarbutton3.$$.fragment, local); + transition_in(toolbarbutton4.$$.fragment, local); + transition_in(toolbarbutton5.$$.fragment, local); + transition_in(helpbutton.$$.fragment, local); + transition_in(toolbarbutton6.$$.fragment, local); + transition_in(toolbarbutton7.$$.fragment, local); + transition_in(toolbarbutton8.$$.fragment, local); + transition_in(toolbarbutton9.$$.fragment, local); + transition_in(toolbarbutton10.$$.fragment, local); + transition_in(toolbarbutton11.$$.fragment, local); + transition_in(toolbarbutton12.$$.fragment, local); + transition_in(toolbarbutton13.$$.fragment, local); + transition_in(toolbarbutton14.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(toolbarbutton0.$$.fragment, local); + transition_out(toolbarbutton1.$$.fragment, local); + transition_out(toolbarbutton2.$$.fragment, local); + transition_out(toolbarbutton3.$$.fragment, local); + transition_out(toolbarbutton4.$$.fragment, local); + transition_out(toolbarbutton5.$$.fragment, local); + transition_out(helpbutton.$$.fragment, local); + transition_out(toolbarbutton6.$$.fragment, local); + transition_out(toolbarbutton7.$$.fragment, local); + transition_out(toolbarbutton8.$$.fragment, local); + transition_out(toolbarbutton9.$$.fragment, local); + transition_out(toolbarbutton10.$$.fragment, local); + transition_out(toolbarbutton11.$$.fragment, local); + transition_out(toolbarbutton12.$$.fragment, local); + transition_out(toolbarbutton13.$$.fragment, local); + transition_out(toolbarbutton14.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(div0); + destroy_component(toolbarbutton0); + destroy_component(toolbarbutton1); + destroy_component(toolbarbutton2); + destroy_component(toolbarbutton3); + if (detaching) detach(t3); + if (detaching) detach(div1); + destroy_component(toolbarbutton4); + destroy_component(toolbarbutton5); + if (detaching) detach(t5); + if (detaching) detach(div2); + destroy_component(helpbutton); + destroy_component(toolbarbutton6); + if (detaching) detach(t7); + if (detaching) detach(div3); + destroy_component(toolbarbutton7); + destroy_component(toolbarbutton8); + destroy_component(toolbarbutton9); + if (detaching) detach(t10); + if (detaching) detach(div4); + destroy_component(toolbarbutton10); + destroy_component(toolbarbutton11); + destroy_component(toolbarbutton12); + if (detaching) detach(t13); + if (detaching) detach(div5); + destroy_component(toolbarbutton13); + destroy_component(toolbarbutton14); + if (detaching) detach(t15); + if (detaching) detach(br); + if (detaching) detach(label); + if (detaching) detach(input); + mounted = false; + dispose(); + } + }; +} + +function instance$8($$self, $$props, $$invalidate) { + let { viz } = $$props; + let { filterValue } = $$props; + let { fdgdClick } = $$props; + let { concentricClick } = $$props; + let { gridClick } = $$props; + let { hierarchyClick } = $$props; + let { expandClick } = $$props; + let { collapseClick } = $$props; + let { hideClick } = $$props; + let { selectAllClick } = $$props; + let { selectInvertClick } = $$props; + let { selectNeighborClick } = $$props; + let { lockClick } = $$props; + let { unlockClick } = $$props; + let { fitClick } = $$props; + let { localModeClick } = $$props; + let { filterInput } = $$props; + let { saveClick } = $$props; + let { workspace } = $$props; + filterInput = obsidian.debounce(filterInput, 500, true); + let disableOnNoneSelected = false; + let disableOnAllPinned = false; + let disableOnNonePinned = true; + + const onSelect = function () { + let selected = viz.nodes(":selected"); + $$invalidate(18, disableOnNoneSelected = selected.length === 0); + + // TODO: Hardcoded class + let pinned = viz.nodes(".pinned"); + + let anyUnpinned = selected.difference(pinned).length > 0; + let anyPinned = selected.intersection(pinned); + $$invalidate(19, disableOnAllPinned = !anyUnpinned || disableOnNoneSelected); + $$invalidate(20, disableOnNonePinned = !anyPinned || disableOnNoneSelected); + }; + + $$self.$$set = $$props => { + if ('viz' in $$props) $$invalidate(21, viz = $$props.viz); + if ('filterValue' in $$props) $$invalidate(1, filterValue = $$props.filterValue); + if ('fdgdClick' in $$props) $$invalidate(2, fdgdClick = $$props.fdgdClick); + if ('concentricClick' in $$props) $$invalidate(3, concentricClick = $$props.concentricClick); + if ('gridClick' in $$props) $$invalidate(4, gridClick = $$props.gridClick); + if ('hierarchyClick' in $$props) $$invalidate(5, hierarchyClick = $$props.hierarchyClick); + if ('expandClick' in $$props) $$invalidate(6, expandClick = $$props.expandClick); + if ('collapseClick' in $$props) $$invalidate(7, collapseClick = $$props.collapseClick); + if ('hideClick' in $$props) $$invalidate(8, hideClick = $$props.hideClick); + if ('selectAllClick' in $$props) $$invalidate(9, selectAllClick = $$props.selectAllClick); + if ('selectInvertClick' in $$props) $$invalidate(10, selectInvertClick = $$props.selectInvertClick); + if ('selectNeighborClick' in $$props) $$invalidate(11, selectNeighborClick = $$props.selectNeighborClick); + if ('lockClick' in $$props) $$invalidate(12, lockClick = $$props.lockClick); + if ('unlockClick' in $$props) $$invalidate(13, unlockClick = $$props.unlockClick); + if ('fitClick' in $$props) $$invalidate(14, fitClick = $$props.fitClick); + if ('localModeClick' in $$props) $$invalidate(15, localModeClick = $$props.localModeClick); + if ('filterInput' in $$props) $$invalidate(0, filterInput = $$props.filterInput); + if ('saveClick' in $$props) $$invalidate(16, saveClick = $$props.saveClick); + if ('workspace' in $$props) $$invalidate(17, workspace = $$props.workspace); + }; + + return [ + filterInput, + filterValue, + fdgdClick, + concentricClick, + gridClick, + hierarchyClick, + expandClick, + collapseClick, + hideClick, + selectAllClick, + selectInvertClick, + selectNeighborClick, + lockClick, + unlockClick, + fitClick, + localModeClick, + saveClick, + workspace, + disableOnNoneSelected, + disableOnAllPinned, + disableOnNonePinned, + viz, + onSelect + ]; +} + +class Toolbar extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance$8, create_fragment$8, safe_not_equal, { + viz: 21, + filterValue: 1, + fdgdClick: 2, + concentricClick: 3, + gridClick: 4, + hierarchyClick: 5, + expandClick: 6, + collapseClick: 7, + hideClick: 8, + selectAllClick: 9, + selectInvertClick: 10, + selectNeighborClick: 11, + lockClick: 12, + unlockClick: 13, + fitClick: 14, + localModeClick: 15, + filterInput: 0, + saveClick: 16, + workspace: 17, + onSelect: 22 + }); + } + + get onSelect() { + return this.$$.ctx[22]; + } +} + +class ColaGlobalLayout { + constructor(options, animate) { + this.options = Object.assign({}, ColaGlobalLayout.DEFAULT, options, { animate: animate ? 'end' : false }); + } + startLayout(view) { + return view.viz.layout(this.options).start(); + } +} +ColaGlobalLayout.DEFAULT = { + name: 'cola', + // @ts-ignore + animate: true, + refresh: 2, + maxSimulationTime: LAYOUT_ANIMATION_TIME, + ungrabifyWhileSimulating: false, + fit: false, + padding: 30, + nodeDimensionsIncludeLabels: true, + // positioning options + randomize: false, + avoidOverlap: true, + handleDisconnected: true, + convergenceThreshold: 0.01, + nodeSpacing: 10, // extra spacing around nodes +}; +class D3GlobalLayout { + constructor(options, animate) { + this.options = Object.assign({}, D3GlobalLayout.DEFAULT, options, { animate: animate ? 'end' : false }); + } + startLayout(view) { + return view.viz.layout(Object.assign(this.options, { linkId: function id(d) { + return d.id; + }, // sets the node id accessor to the specified function + })).start(); + } +} +D3GlobalLayout.DEFAULT = { + name: 'd3-force', + // @ts-ignore + animate: 'end', + maxIterations: 0, + maxSimulationTime: LAYOUT_ANIMATION_TIME, + ungrabifyWhileSimulating: false, + fixedAfterDragging: false, + fit: false, + padding: 30, + /** d3-force API**/ + alpha: 1, + alphaMin: 0.001, + alphaDecay: 1 - Math.pow(0.001, 1 / 300), + alphaTarget: 0, + velocityDecay: 0.4, + collideRadius: 60, + collideStrength: 0.9, + collideIterations: 1, + linkDistance: 150, + linkStrength: 0.7, + linkIterations: 1, + manyBodyStrength: -600, + manyBodyDistanceMin: 5, + xStrength: 0.1, + xX: 0, + yStrength: 0.1, + yY: 0, + radialStrength: 0.1, + radialX: 0, + radialY: 0, + radialRadius: 10, + // positioning optsions + randomize: false, + // infinite layout options + infinite: false, // overrides all other options for a forces-all-the-time mode +}; +class GridGlobalLayout { + constructor(options) { + this.options = Object.assign({}, GridGlobalLayout.DEFAULT, options); + } + startLayout(view) { + return view.viz.layout(this.options).start(); + } +} +GridGlobalLayout.DEFAULT = { + name: 'grid', + animate: true, + animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME, + // animationEasing // Should probably add something here + spacingFactor: DISCRETE_SPACING_FACTOR, + fit: false, + padding: 30, + nodeDimensionsIncludeLabels: true, + // positioning options + avoidOverlap: true, // if true, prevents overlap of node bounding boxes +}; +class DagreGlobalLayout { + constructor(options) { + this.options = Object.assign({}, DagreGlobalLayout.DEFAULT, options); + } + startLayout(view) { + return view.viz.layout(this.options).start(); + } +} +DagreGlobalLayout.DEFAULT = { + name: 'dagre', + // @ts-ignore + animate: true, + animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME, + spacingFactor: DISCRETE_SPACING_FACTOR, + // animationEasing // Should probably add something here + fit: false, + padding: 30, + nodeDimensionsIncludeLabels: true, + // positioning options + avoidOverlap: true, // if true, prevents overlap of node bounding boxes +}; +class ConcentricLayout { + constructor(options) { + this.options = Object.assign({}, ConcentricLayout.DEFAULT, options); + } + startLayout(view) { + return view.viz.layout(Object.assign(this.options, { concentric: (n) => { + // @ts-ignore + if (n.hasClass(CLASS_ACTIVE_NODE)) { + return 1000; + } + // @ts-ignore + if (n.hasClass(CLASS_EXPANDED)) { + return 100; + } + return 1; + } })).start(); + } +} +ConcentricLayout.DEFAULT = { + name: 'concentric', + // @ts-ignore + animate: 'end', + animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME, + // animationEasing // Should probably add something here + fit: false, + padding: 30, + nodeDimensionsIncludeLabels: true, + // positioning options + avoidOverlap: true, // if true, prevents overlap of node bounding boxes +}; +const getLayoutSetting = function (layoutType, settings, options) { + switch (layoutType) { + case 'circle': + case 'concentric': return new ConcentricLayout(options); + case 'force-directed': if (settings && settings.fdgdLayout === 'd3-force') { + return new D3GlobalLayout(options, settings.animateLayout); + } + else { + return new ColaGlobalLayout(options, settings.animateLayout); + } + case 'hierarchy': + case 'dagre': + return new DagreGlobalLayout(options); + case 'grid': return new GridGlobalLayout(options); + case 'cola': return new ColaGlobalLayout(options, settings.animateLayout); + case 'd3-force': return new D3GlobalLayout(options, settings.animateLayout); + } +}; +const parseLayoutSettings = function (settings) { + if (typeof settings.layout === 'string' || settings.layout instanceof String) { + return getLayoutSetting(settings.layout, settings); + } + else { + return getLayoutSetting(settings.layout.name, settings, settings.layout); + } +}; + +/* src/ui/SaveWorkspaceItem.svelte generated by Svelte v3.45.0 */ + +function create_fragment$7(ctx) { + let div2; + let div0; + let t0; + let t1; + let button; + let t3; + let div1; + let mounted; + let dispose; + + return { + c() { + div2 = element$1("div"); + div0 = element$1("div"); + t0 = text(/*name*/ ctx[0]); + t1 = space(); + button = element$1("button"); + button.textContent = "Load"; + t3 = space(); + div1 = element$1("div"); + div1.innerHTML = ``; + attr(div0, "class", "list-item-part mod-extended"); + attr(button, "class", "list-item-part"); + attr(div1, "class", "list-item-part clickable-icon"); + attr(div1, "aria-label", "Delete graph"); + attr(div2, "class", "list-item"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + append(div0, t0); + append(div2, t1); + append(div2, button); + append(div2, t3); + append(div2, div1); + + if (!mounted) { + dispose = [ + listen(button, "click", function () { + if (is_function(/*onClick*/ ctx[1](/*name*/ ctx[0]))) /*onClick*/ ctx[1](/*name*/ ctx[0]).apply(this, arguments); + }), + listen(div1, "click", function () { + if (is_function(/*onDelete*/ ctx[2](/*name*/ ctx[0]))) /*onDelete*/ ctx[2](/*name*/ ctx[0]).apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + if (dirty & /*name*/ 1) set_data(t0, /*name*/ ctx[0]); + }, + i: noop$2, + o: noop$2, + d(detaching) { + if (detaching) detach(div2); + mounted = false; + run_all(dispose); + } + }; +} + +function instance$7($$self, $$props, $$invalidate) { + let { name } = $$props; + let { onClick } = $$props; + let { onDelete } = $$props; + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick); + if ('onDelete' in $$props) $$invalidate(2, onDelete = $$props.onDelete); + }; + + return [name, onClick, onDelete]; +} + +class SaveWorkspaceItem extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$7, create_fragment$7, safe_not_equal, { name: 0, onClick: 1, onDelete: 2 }); + } +} + +/* src/ui/SaveWorkspaces.svelte generated by Svelte v3.45.0 */ + +function get_each_context$2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i]; + return child_ctx; +} + +// (31:4) {#each savedGraphs as graphName} +function create_each_block$2(ctx) { + let saveworkspaceitem; + let current; + + saveworkspaceitem = new SaveWorkspaceItem({ + props: { + name: /*graphName*/ ctx[9], + onClick: /*onLoad*/ ctx[1], + onDelete: /*_onDelete*/ ctx[4] + } + }); + + return { + c() { + create_component(saveworkspaceitem.$$.fragment); + }, + m(target, anchor) { + mount_component(saveworkspaceitem, target, anchor); + current = true; + }, + p(ctx, dirty) { + const saveworkspaceitem_changes = {}; + if (dirty & /*savedGraphs*/ 1) saveworkspaceitem_changes.name = /*graphName*/ ctx[9]; + if (dirty & /*onLoad*/ 2) saveworkspaceitem_changes.onClick = /*onLoad*/ ctx[1]; + saveworkspaceitem.$set(saveworkspaceitem_changes); + }, + i(local) { + if (current) return; + transition_in(saveworkspaceitem.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(saveworkspaceitem.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(saveworkspaceitem, detaching); + } + }; +} + +function create_fragment$6(ctx) { + let div0; + let input; + let t0; + let button; + let t2; + let hr; + let t3; + let div1; + let current; + let mounted; + let dispose; + let each_value = /*savedGraphs*/ ctx[0]; + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); + } + + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + + return { + c() { + div0 = element$1("div"); + input = element$1("input"); + t0 = space(); + button = element$1("button"); + button.textContent = "Save"; + t2 = space(); + hr = element$1("hr"); + t3 = space(); + div1 = element$1("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr(input, "class", "list-item-part mod-extended"); + attr(input, "type", "text"); + attr(input, "placeholder", "Save current graph as..."); + attr(button, "class", "list-item-part"); + attr(div0, "class", "modal-content"); + }, + m(target, anchor) { + insert(target, div0, anchor); + append(div0, input); + set_input_value(input, /*saveName*/ ctx[2]); + append(div0, t0); + append(div0, button); + insert(target, t2, anchor); + insert(target, hr, anchor); + insert(target, t3, anchor); + insert(target, div1, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div1, null); + } + + current = true; + + if (!mounted) { + dispose = [ + listen(input, "input", /*input_input_handler*/ ctx[8]), + listen(input, "keydown", /*filterInput*/ ctx[5]), + listen(button, "click", function () { + if (is_function(/*_onSave*/ ctx[3](/*saveName*/ ctx[2]))) /*_onSave*/ ctx[3](/*saveName*/ ctx[2]).apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + + if (dirty & /*saveName*/ 4 && input.value !== /*saveName*/ ctx[2]) { + set_input_value(input, /*saveName*/ ctx[2]); + } + + if (dirty & /*savedGraphs, onLoad, _onDelete*/ 19) { + each_value = /*savedGraphs*/ ctx[0]; + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$2(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block$2(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div1, null); + } + } + + group_outros(); + + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + + check_outros(); + } + }, + i(local) { + if (current) return; + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d(detaching) { + if (detaching) detach(div0); + if (detaching) detach(t2); + if (detaching) detach(hr); + if (detaching) detach(t3); + if (detaching) detach(div1); + destroy_each(each_blocks, detaching); + mounted = false; + run_all(dispose); + } + }; +} + +function instance$6($$self, $$props, $$invalidate) { + let { onLoad } = $$props; + let { onSave } = $$props; + let { onDelete } = $$props; + let { savedGraphs } = $$props; + let saveName = ''; + + let _onSave = async s => { + await onSave(s); + + // Ensures svelte reacts. + $$invalidate(0, savedGraphs); + }; + + let _onDelete = async s => { + await onDelete(s); + $$invalidate(0, savedGraphs); + }; + + let filterInput = event => { + if (event.key === '/') { + event.preventDefault(); + return false; + } + + return true; + }; + + function input_input_handler() { + saveName = this.value; + $$invalidate(2, saveName); + } + + $$self.$$set = $$props => { + if ('onLoad' in $$props) $$invalidate(1, onLoad = $$props.onLoad); + if ('onSave' in $$props) $$invalidate(6, onSave = $$props.onSave); + if ('onDelete' in $$props) $$invalidate(7, onDelete = $$props.onDelete); + if ('savedGraphs' in $$props) $$invalidate(0, savedGraphs = $$props.savedGraphs); + }; + + return [ + savedGraphs, + onLoad, + saveName, + _onSave, + _onDelete, + filterInput, + onSave, + onDelete, + input_input_handler + ]; +} + +class SaveWorkspaces extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance$6, create_fragment$6, safe_not_equal, { + onLoad: 1, + onSave: 6, + onDelete: 7, + savedGraphs: 0 + }); + } +} + +class WorkspaceModal extends obsidian.Modal { + constructor(app, workspaceManager, view) { + super(app); + this.manager = workspaceManager; + this.view = view; + } + onOpen() { + super.onOpen(); + this.titleEl.innerHTML = 'Manage workspace graphs'; + new SaveWorkspaces({ + target: this.contentEl, + props: { + onSave: (s) => this.manager.saveGraph(s, this.view), + savedGraphs: this.manager.graphs, + onLoad: (s) => this.manager.loadGraph(s, this.view), + onDelete: (s) => this.manager.deleteGraph(s, this.view), + }, + }); + } +} + +class WorkspaceMode extends obsidian.Component { + constructor(view) { + super(); + this.events = []; + this.recursionPreventer = false; + this.view = view; + } + onload() { + if (this.view.vizReady) { + this._onLoad(); + } + else { + this.registerEvent(this.view.on('vizReady', (viz) => { + this._onLoad(); + })); + } + } + _onLoad() { + this.viz = this.view.viz; + const mode = this; + const view = this.view; + const style = getComputedStyle(document.body); + const selectColor = style.getPropertyValue('--text-selection'); + const backgroundColor = style.getPropertyValue('--background-secondary'); + const textColor = style.getPropertyValue('--text-normal'); + style.getPropertyValue('--text'); + const plugin = this.view.plugin; + // the default values of each option are outlined below: + const defaults = { + menuRadius: 70, + selector: 'node', + commands: (n) => { + const commands = []; + const id = VizId.fromNode(n); + if (id.storeId === 'core') { + commands.push({ + content: pathToSvg(icons.ag_file), + select: async function (ele, gestureStart, event) { + // @ts-ignore + await plugin.openFileFromNode(ele, event.originalEvent.metaKey); + }, + enabled: true, + }); + } + commands.push({ + content: pathToSvg(icons.ag_hide), + select: function (ele) { + mode.removeNodes(ele); + }, + enabled: true, + }, { + content: pathToSvg(icons.ag_fit), + select: function (ele) { + mode.updateActiveNode(ele, true); + }, + enabled: true, // whether the command is selectable + }); + if (n.hasClass(CLASS_PINNED)) { + commands.push({ + content: pathToSvg(icons.ag_unlock), + select: function (ele) { + mode.unpin(ele); + }, + enabled: true, // whether the command is selectable + }); + } + else { + commands.push({ + content: pathToSvg(icons.ag_lock), + select: function (ele) { + mode.pin(ele); + }, + enabled: true, // whether the command is selectable + }); + } + if (n.hasClass(CLASS_EXPANDED)) { + commands.push({ + content: pathToSvg(icons.ag_collapse), + select: function (ele) { + mode.removeNodes(ele); + }, + enabled: true, // whether the command is selectable + }); + } + else { + commands.push({ + content: pathToSvg(icons.ag_expand), + select: function (ele) { + view.expand(ele); + }, + enabled: true, // whether the command is selectable + }); + } + return commands; + }, + fillColor: `${backgroundColor}`, + activeFillColor: `${selectColor}`, + activePadding: 20, + indicatorSize: 24, + separatorWidth: 3, + spotlightPadding: 0, + adaptativeNodeSpotlightRadius: true, + // minSpotlightRadius: 12, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) + // maxSpotlightRadius: 28, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) + openMenuEvents: 'taphold', + itemColor: `${textColor}`, + itemTextShadowColor: 'transparent', + zIndex: 9999, + atMouse: false, + outsideMenuCancel: 15, + }; + // @ts-ignore + this.menu = this.viz.cxtmenu(defaults); + this.registerCyEvent('tap', 'node', async (e) => { + if (!this.view.settings.openWithShift || e.originalEvent.shiftKey) { + const file = await this.view.plugin.openFileFromNode(e.target, e.originalEvent.metaKey); + if (file) { + this.updateActiveNode(e.target, this.view.settings.autoZoom); + } + } + }); + this.registerCyEvent('taphold', 'node', (e) => { + if (this.view.destroyHover) { + this.view.destroyHover(); + } + }); + this.registerCyEvent('dblclick', 'node', async (e) => { + await this.view.expand(e.target); + }); + this.registerCyEvent('tapselect tapunselect boxselect', null, (e) => { + this.view.trigger('selectChange'); + }); + // Register on file open event + this.registerEvent(this.view.workspace.on('file-open', async (file) => { + if (!this.view.settings.autoAddNodes) { + return; + } + if (file && this.view.settings.autoAddNodes) { + const name = file.name; + const id = new VizId(name, 'core'); + let followImmediate = true; + if (this.viz.$id(id.toId()).length === 0) { + const node = await this.view.datastores.coreStore.get(id, this.view); + this.viz.startBatch(); + // Make sure it doesn't immediately get removed + this.viz.add(node).addClass(CLASS_PROTECTED); + const edges = await this.view.buildEdges(this.viz.$id(id.toId())); + this.viz.add(edges); + this.view.onGraphChanged(false, true); + this.viz.endBatch(); + followImmediate = false; + } + const node = this.viz.$id(id.toId()); + node.addClass(CLASS_PROTECTED); + this.updateActiveNode(node, followImmediate && this.view.settings.autoZoom); + } + })); + this.registerEvent(this.view.on('expand', (expanded) => { + this.updateActiveNode(expanded, false); + })); + // TODO: What to do with this? + this.registerEvent(this.view.on('elementsChange', () => { + if (this.recursionPreventer) { + return; + } + // Remove nodes that are not protected and not connected to expanded nodes + this.viz.nodes() + .difference(this.viz.nodes(`.${CLASS_PROTECTED}`)) + .filter((ele) => { + // If none in the closed neighborhood are expanded. + // Note that the closed neighborhood includes the current note. + return ele.closedNeighborhood(`node.${CLASS_PROTECTED}`).length === 0; + }) + .remove(); + this.updateActiveNode(this.viz.nodes(`.${CLASS_ACTIVE_NODE}`), false); + this.recursionPreventer = true; + this.view.onGraphChanged(); + this.recursionPreventer = false; + })); + this.windowEvent = async (evt) => { + if (!(document.activeElement === this.view.element)) { + return; + } + if (evt.key === 'e') { + await this.expandSelection(); + } + else if (evt.key === 'h' || evt.key === 'Backspace') { + this.removeSelection(); + } + else if (evt.key === 'i') { + this.invertSelection(); + } + else if (evt.key === 'a') { + this.selectAll(); + } + else if (evt.key === 'n') { + this.selectNeighboursOfSelected(); + } + else if (evt.key === 'p') { + this.pinSelection(); + } + else if (evt.key === 'u') { + this.unpinSelection(); + } + else if (evt.key === 'c') { + this.collapseSelection(); + } + else if (evt.key === 'v') { + this.view.fitView(); + } + else if (evt.key === 'f') { + this.view.fitView(this.viz.nodes(':selected')); + } + }; + // // Register keypress event + // Note: Registered on window because it wouldn't fire on the div... + document.on('keydown', '.cy-content', this.windowEvent, true); + } + registerCyEvent(name, selector, callback) { + this.events.push({ eventName: name, selector: selector, event: callback }); + if (selector) { + this.viz.on(name, selector, callback); + } + else { + this.viz.on(name, callback); + } + } + onunload() { + for (const listener of this.events) { + if (listener.selector) { + this.viz.off(listener.eventName, listener.selector, listener.event); + } + else { + this.viz.off(listener.eventName, listener.event); + } + } + this.events = []; + document.off('keydown', '.cy-content', this.windowEvent, true); + if (this.toolbar) { + this.toolbar.$destroy(); + } + if (this.menu) { + this.menu.destroy(); + } + } + getName() { + return 'workspace'; + } + fillMenu(menu, nodes) { + if (nodes.length > 0) { + menu.addItem((item) => { + item.setTitle('Expand selection (E)').setIcon('ag-expand') + .onClick(async (evt) => { + await this.view.expand(nodes); + }); + }); + menu.addItem((item) => { + item.setTitle('Collapse selection (C)').setIcon('ag-collapse') + .onClick((evt) => { + this.collapse(nodes); + }); + }); + menu.addItem((item) => { + item.setTitle('Hide selection (H)').setIcon('ag-hide') + .onClick((evt) => { + this.removeNodes(nodes); + }); + }); + menu.addItem((item) => { + item.setTitle('Select all (A)').setIcon('ag-select-all') + .onClick((evt) => { + this.selectAll(); + }); + }); + menu.addItem((item) => { + item.setTitle('Invert selection (I)').setIcon('ag-select-inverse') + .onClick((evt) => { + this.invertSelection(); + }); + }); + } + if (nodes.length > 0) { + menu.addItem((item) => { + item.setTitle('Select neighbors (N)').setIcon('ag-select-neighbors') + .onClick((evt) => { + this.selectNeighbourhood(nodes); + }); + }); + const pinned = this.view.getPinned(); + if (nodes.difference(pinned).length > 0) { + menu.addItem((item) => { + item.setTitle('Pin selection (P)').setIcon('ag-lock') + .onClick((evt) => { + this.pin(nodes); + }); + }); + } + if (nodes.intersect(pinned).length > 0) { + menu.addItem((item) => { + item.setTitle('Unpin selection (U)').setIcon('ag-unlock') + .onClick((evt) => { + this.unpin(nodes); + }); + }); + } + } + } + createToolbar(element) { + this.toolbar = new Toolbar({ + target: element, + props: { + viz: this.viz, + filterValue: this.view.settings.filter, + expandClick: this.expandSelection.bind(this), + fdgdClick: () => this.view.setLayout(getLayoutSetting('force-directed', this.view.settings)), + concentricClick: () => this.view.setLayout(getLayoutSetting('circle')), + gridClick: () => this.view.setLayout(getLayoutSetting('grid')), + hierarchyClick: () => this.view.setLayout(getLayoutSetting('hierarchy')), + collapseClick: this.collapseSelection.bind(this), + hideClick: this.removeSelection.bind(this), + selectAllClick: this.selectAll.bind(this), + selectInvertClick: this.invertSelection.bind(this), + selectNeighborClick: this.selectNeighboursOfSelected.bind(this), + lockClick: this.pinSelection.bind(this), + unlockClick: this.unpinSelection.bind(this), + fitClick: this.view.fitView.bind(this.view), + localModeClick: () => this.view.setMode('local'), + filterInput: (handler) => { + // @ts-ignore + this.view.searchFilter(handler.target.value); + this.view.restartLayout(); + }, + saveClick: () => { + if ('app' in this.view.plugin && 'workspaceManager' in this.view.plugin) { + // @ts-ignore + new WorkspaceModal(this.view.plugin.app, this.view.plugin.workspaceManager, this.view).open(); + } + }, + workspace: this.view.plugin.app.workspace, + }, + }); + this.view.on('selectChange', this.toolbar.onSelect.bind(this.toolbar)); + this.view.on('vizReady', (viz) => { + this.toolbar.$set({ viz: viz }); + this.toolbar.onSelect.bind(this.toolbar)(); // + }); + } + updateActiveNode(node, followImmediate) { + this.viz.elements() + .removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]) + .difference(node.closedNeighborhood()) + .addClass(CLASS_INACTIVE_NODE); + node.addClass(CLASS_ACTIVE_NODE); + const neighbourhood = node.connectedEdges() + .addClass(CLASS_CONNECTED_ACTIVE_NODE) + .connectedNodes() + .addClass(CLASS_CONNECTED_ACTIVE_NODE) + .union(node); + if (followImmediate) { + this.viz.animate({ + fit: { + eles: neighbourhood, + padding: 0, + }, + duration: VIEWPORT_ANIMATION_TIME, + queue: false, + }); + } + this.viz.one('tap', (e) => { + e.cy.elements().removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]); + }); + } + async expandSelection() { + await this.view.expand(this.viz.nodes(':selected')); + } + collapse(nodes) { + const selectedProtected = nodes.filter(`:selected`) + .removeClass([CLASS_PROTECTED, CLASS_EXPANDED]); + selectedProtected.openNeighborhood() + .nodes() + .filter((ele) => { + // If none in the closed neighborhood are protected that aren't also selected + // (their PROTECTED flag has been removed) + return ele.closedNeighborhood(`node.${CLASS_PROTECTED}`).length === 0; + }) + .remove(); + // can this cause race conditions with on elementsChange? + this.recursionPreventer = true; + this.view.onGraphChanged(true, true); + this.recursionPreventer = false; + } + collapseSelection() { + this.collapse(this.viz.nodes(':selected')); + } + removeNodes(nodes) { + nodes.addClass(CLASS_HARD_FILTERED); + this.view.onGraphChanged(true, true); + this.view.trigger('hide', nodes); + this.view.trigger('selectChange'); + } + removeSelection() { + this.removeNodes(this.viz.nodes(':selected')); + } + selectAll() { + this.viz.nodes().select(); + this.view.trigger('selectChange'); + } + invertSelection() { + this.viz.$(':selected') + .unselect() + .absoluteComplement() + .select(); + this.view.trigger('selectChange'); + } + selectNeighboursOfSelected() { + this.selectNeighbourhood(this.viz.nodes(':selected')); + } + selectNeighbourhood(nodes) { + // TODO: This keeps self-loops selected. + this.viz.nodes(':selected') + .unselect(); + nodes.openNeighborhood() + .select(); + this.view.trigger('selectChange'); + } + unpin(nodes) { + const unlocked = nodes + .unlock() + .removeClass(CLASS_PINNED); + this.view.restartLayout(); + this.view.trigger('unpin', unlocked); + } + unpinSelection() { + this.unpin(this.viz.nodes(':selected')); + } + pin(nodes) { + const locked = nodes + .lock() + .addClass(CLASS_PINNED); + this.view.restartLayout(); + this.view.trigger('pin', locked); + } + pinSelection() { + this.pin(this.viz.nodes(':selected')); + } +} + +/* src/ui/toolbar/ToolbarLocal.svelte generated by Svelte v3.45.0 */ + +function create_fragment$5(ctx) { + let div0; + let toolbarbutton0; + let t0; + let toolbarbutton1; + let t1; + let toolbarbutton2; + let t2; + let toolbarbutton3; + let t3; + let div1; + let toolbarbutton4; + let t4; + let toolbarbutton5; + let t5; + let div2; + let helpbutton; + let t6; + let br; + let label; + let input; + let current; + let mounted; + let dispose; + + toolbarbutton0 = new ToolbarButton({ + props: { + icon: icons.ag_fdgd, + onClick: /*fdgdClick*/ ctx[1], + title: "Force directed layout" + } + }); + + toolbarbutton1 = new ToolbarButton({ + props: { + icon: icons.ag_concentric, + onClick: /*concentricClick*/ ctx[2], + title: "Circle layout" + } + }); + + toolbarbutton2 = new ToolbarButton({ + props: { + icon: icons.ag_grid, + onClick: /*gridClick*/ ctx[3], + title: "Grid layout" + } + }); + + toolbarbutton3 = new ToolbarButton({ + props: { + icon: icons.ag_hierarchy, + onClick: /*hierarchyClick*/ ctx[4], + title: "Hierarchical layout" + } + }); + + toolbarbutton4 = new ToolbarButton({ + props: { + icon: icons.ag_fit, + onClick: /*fitClick*/ ctx[5], + title: "Fit view" + } + }); + + toolbarbutton5 = new ToolbarButton({ + props: { + icon: icons.ag_workspace, + onClick: /*workspaceModeClick*/ ctx[6], + title: "Workspace mode" + } + }); + + helpbutton = new HelpButton({ + props: { workspace: /*workspace*/ ctx[8] } + }); + + return { + c() { + div0 = element$1("div"); + create_component(toolbarbutton0.$$.fragment); + t0 = space(); + create_component(toolbarbutton1.$$.fragment); + t1 = space(); + create_component(toolbarbutton2.$$.fragment); + t2 = space(); + create_component(toolbarbutton3.$$.fragment); + t3 = space(); + div1 = element$1("div"); + create_component(toolbarbutton4.$$.fragment); + t4 = space(); + create_component(toolbarbutton5.$$.fragment); + t5 = space(); + div2 = element$1("div"); + create_component(helpbutton.$$.fragment); + t6 = space(); + br = element$1("br"); + label = element$1("label"); + label.textContent = "Filter: "; + input = element$1("input"); + attr(div0, "class", "cy-toolbar-section"); + attr(div1, "class", "cy-toolbar-section"); + attr(div2, "class", "cy-toolbar-section"); + attr(label, "for", "ag-filter"); + attr(input, "type", "text"); + attr(input, "id", "ag-filter"); + attr(input, "name", "ag-filter"); + input.value = /*filterValue*/ ctx[7]; + }, + m(target, anchor) { + insert(target, div0, anchor); + mount_component(toolbarbutton0, div0, null); + append(div0, t0); + mount_component(toolbarbutton1, div0, null); + append(div0, t1); + mount_component(toolbarbutton2, div0, null); + append(div0, t2); + mount_component(toolbarbutton3, div0, null); + insert(target, t3, anchor); + insert(target, div1, anchor); + mount_component(toolbarbutton4, div1, null); + append(div1, t4); + mount_component(toolbarbutton5, div1, null); + insert(target, t5, anchor); + insert(target, div2, anchor); + mount_component(helpbutton, div2, null); + insert(target, t6, anchor); + insert(target, br, anchor); + insert(target, label, anchor); + insert(target, input, anchor); + current = true; + + if (!mounted) { + dispose = listen(input, "input", function () { + if (is_function(/*filterInput*/ ctx[0])) /*filterInput*/ ctx[0].apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + const toolbarbutton0_changes = {}; + if (dirty & /*fdgdClick*/ 2) toolbarbutton0_changes.onClick = /*fdgdClick*/ ctx[1]; + toolbarbutton0.$set(toolbarbutton0_changes); + const toolbarbutton1_changes = {}; + if (dirty & /*concentricClick*/ 4) toolbarbutton1_changes.onClick = /*concentricClick*/ ctx[2]; + toolbarbutton1.$set(toolbarbutton1_changes); + const toolbarbutton2_changes = {}; + if (dirty & /*gridClick*/ 8) toolbarbutton2_changes.onClick = /*gridClick*/ ctx[3]; + toolbarbutton2.$set(toolbarbutton2_changes); + const toolbarbutton3_changes = {}; + if (dirty & /*hierarchyClick*/ 16) toolbarbutton3_changes.onClick = /*hierarchyClick*/ ctx[4]; + toolbarbutton3.$set(toolbarbutton3_changes); + const toolbarbutton4_changes = {}; + if (dirty & /*fitClick*/ 32) toolbarbutton4_changes.onClick = /*fitClick*/ ctx[5]; + toolbarbutton4.$set(toolbarbutton4_changes); + const toolbarbutton5_changes = {}; + if (dirty & /*workspaceModeClick*/ 64) toolbarbutton5_changes.onClick = /*workspaceModeClick*/ ctx[6]; + toolbarbutton5.$set(toolbarbutton5_changes); + const helpbutton_changes = {}; + if (dirty & /*workspace*/ 256) helpbutton_changes.workspace = /*workspace*/ ctx[8]; + helpbutton.$set(helpbutton_changes); + + if (!current || dirty & /*filterValue*/ 128 && input.value !== /*filterValue*/ ctx[7]) { + input.value = /*filterValue*/ ctx[7]; + } + }, + i(local) { + if (current) return; + transition_in(toolbarbutton0.$$.fragment, local); + transition_in(toolbarbutton1.$$.fragment, local); + transition_in(toolbarbutton2.$$.fragment, local); + transition_in(toolbarbutton3.$$.fragment, local); + transition_in(toolbarbutton4.$$.fragment, local); + transition_in(toolbarbutton5.$$.fragment, local); + transition_in(helpbutton.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(toolbarbutton0.$$.fragment, local); + transition_out(toolbarbutton1.$$.fragment, local); + transition_out(toolbarbutton2.$$.fragment, local); + transition_out(toolbarbutton3.$$.fragment, local); + transition_out(toolbarbutton4.$$.fragment, local); + transition_out(toolbarbutton5.$$.fragment, local); + transition_out(helpbutton.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(div0); + destroy_component(toolbarbutton0); + destroy_component(toolbarbutton1); + destroy_component(toolbarbutton2); + destroy_component(toolbarbutton3); + if (detaching) detach(t3); + if (detaching) detach(div1); + destroy_component(toolbarbutton4); + destroy_component(toolbarbutton5); + if (detaching) detach(t5); + if (detaching) detach(div2); + destroy_component(helpbutton); + if (detaching) detach(t6); + if (detaching) detach(br); + if (detaching) detach(label); + if (detaching) detach(input); + mounted = false; + dispose(); + } + }; +} + +function instance$5($$self, $$props, $$invalidate) { + let { fdgdClick } = $$props; + let { concentricClick } = $$props; + let { gridClick } = $$props; + let { hierarchyClick } = $$props; + let { fitClick } = $$props; + let { workspaceModeClick } = $$props; + let { filterInput } = $$props; + let { filterValue } = $$props; + let { workspace } = $$props; + filterInput = obsidian.debounce(filterInput, 500, true); + + $$self.$$set = $$props => { + if ('fdgdClick' in $$props) $$invalidate(1, fdgdClick = $$props.fdgdClick); + if ('concentricClick' in $$props) $$invalidate(2, concentricClick = $$props.concentricClick); + if ('gridClick' in $$props) $$invalidate(3, gridClick = $$props.gridClick); + if ('hierarchyClick' in $$props) $$invalidate(4, hierarchyClick = $$props.hierarchyClick); + if ('fitClick' in $$props) $$invalidate(5, fitClick = $$props.fitClick); + if ('workspaceModeClick' in $$props) $$invalidate(6, workspaceModeClick = $$props.workspaceModeClick); + if ('filterInput' in $$props) $$invalidate(0, filterInput = $$props.filterInput); + if ('filterValue' in $$props) $$invalidate(7, filterValue = $$props.filterValue); + if ('workspace' in $$props) $$invalidate(8, workspace = $$props.workspace); + }; + + return [ + filterInput, + fdgdClick, + concentricClick, + gridClick, + hierarchyClick, + fitClick, + workspaceModeClick, + filterValue, + workspace + ]; +} + +class ToolbarLocal extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance$5, create_fragment$5, safe_not_equal, { + fdgdClick: 1, + concentricClick: 2, + gridClick: 3, + hierarchyClick: 4, + fitClick: 5, + workspaceModeClick: 6, + filterInput: 0, + filterValue: 7, + workspace: 8 + }); + } +} + +class LocalMode extends obsidian.Component { + constructor(view) { + super(); + this.events = []; + this.view = view; + } + onload() { + if (this.view.vizReady) { + this._onLoad(); + } + else { + this.registerEvent(this.view.on('vizReady', (viz) => { + this._onLoad(); + })); + } + } + _onLoad() { + this.viz = this.view.viz; + this.registerCyEvent('tap', 'node', async (e) => { + const file = await this.view.plugin.openFileFromNode(e.target, e.originalEvent.metaKey); + if (file) { + await this.onOpenFile(file); + } + }); + // Register on file open event + this.registerEvent(this.view.workspace.on('file-open', async (file) => { + if (file) { + await this.onOpenFile(file); + } + })); + } + async onOpenFile(file) { + if (!this.view.settings.autoAddNodes) { + return; + } + const id = new VizId(file.name, 'core'); + let node; + this.viz.startBatch(); + if (this.viz.$id(id.toId()).length === 0) { + const nodeDef = await this.view.datastores.coreStore.get(id, this.view); + node = this.viz.add(nodeDef); + } + else { + node = this.viz.$id(id.toId()); + } + await this.view.expand(node, false); + node.addClass(CLASS_ACTIVE_NODE); + this.viz.nodes() + .difference(node.closedNeighborhood()) + .remove(); + this.view.onGraphChanged(false); + this.updateActiveFile(node); + this.viz.endBatch(); + } + registerCyEvent(name, selector, callback) { + this.events.push({ eventName: name, selector: selector, event: callback }); + if (selector) { + this.viz.on(name, selector, callback); + } + else { + this.viz.on(name, callback); + } + } + onunload() { + for (const listener of this.events) { + if (listener.selector) { + this.viz.off(listener.eventName, listener.selector, listener.event); + } + else { + this.viz.off(listener.eventName, listener.event); + } + } + this.events = []; + this.toolbar.$destroy(); + } + getName() { + return 'local'; + } + fillMenu(menu, nodes) { + } + createToolbar(element) { + const view = this.view; + this.toolbar = new ToolbarLocal({ + target: element, + props: { + viz: this.viz, + fitClick: this.view.fitView.bind(view), + fdgdClick: () => this.view.setLayout(getLayoutSetting('force-directed', this.view.settings)), + concentricClick: () => this.view.setLayout(getLayoutSetting('circle')), + gridClick: () => this.view.setLayout(getLayoutSetting('grid')), + hierarchyClick: () => this.view.setLayout(getLayoutSetting('hierarchy')), + workspaceModeClick: () => view.setMode('workspace'), + filterInput: (handler) => { + // @ts-ignore + this.view.searchFilter(handler.target.value); + this.view.restartLayout(); + }, + filterValue: this.view.settings.filter, + workspace: this.view.plugin.app.workspace, + }, + }); + // this.view.on('vizReady', (viz) => { + // tb.$set({viz: viz}); + // tb.onSelect.bind(tb)(); + // }); + } + updateActiveFile(node) { + this.viz.elements() + .removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]) + .difference(node.closedNeighborhood()) + .addClass(CLASS_INACTIVE_NODE); + node.addClass(CLASS_ACTIVE_NODE); + node.connectedEdges() + .addClass(CLASS_CONNECTED_ACTIVE_NODE) + .connectedNodes() + .addClass(CLASS_CONNECTED_ACTIVE_NODE) + .union(node); + // this.viz.one('tap', (e) => { + // e.cy.elements().removeClass(['connected-active-file', 'active-file', 'inactive-file']); + // }); + } +} + /*! * search-query-parser.js * Copyright(c) 2014-2019 * MIT Licensed - */var Ya=fe((function(e,t){t.parse=function(e,t){if(t?t.offsets=void 0===t.offsets||t.offsets:t={offsets:!0},e||(e=""),-1!==e.indexOf(":")||t.tokenize){if(t.keywords||t.ranges||t.tokenize){var C={text:[]};t.offsets&&(C.offsets=[]);for(var i,H={},n=[],V=/(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g;null!==(i=V.exec(e));){var r,L=(r=i[0]).indexOf(":");if(-1!==L){r.split(":");var o=r.slice(0,L),a=r.slice(L+1);a=((a=a.replace(/^\"|\"$|^\'|\'$/g,""))+"").replace(/\\(.?)/g,(function(e,t){switch(t){case"\\":return"\\";case"0":return"\0";case"":return"";default:return t}})),n.push({keyword:o,value:a,offsetStart:i.index,offsetEnd:i.index+r.length})}else{var M=!1;"-"===r[0]&&(M=!0,r=r.slice(1)),r=((r=r.replace(/^\"|\"$|^\'|\'$/g,""))+"").replace(/\\(.?)/g,(function(e,t){switch(t){case"\\":return"\\";case"0":return"\0";case"":return"";default:return t}})),M?H.text?(H.text instanceof Array||(H.text=[H.text]),H.text.push(r)):H.text=r:n.push({text:r,offsetStart:i.index,offsetEnd:i.index+r.length})}}for(n.reverse();r=n.pop();)if(r.text)C.text.push(r.text),t.offsets&&C.offsets.push(r);else{o=r.keyword;t.keywords=t.keywords||[];var s=!1,l=!1;if(/^-/.test(o)){if("-"===o[0]){var d=o.slice(1);(s=!(-1===t.keywords.indexOf(d)))&&(o=d,l=!0)}}else s=!(-1===t.keywords.indexOf(o));t.ranges=t.ranges||[];var u=!(-1===t.ranges.indexOf(o));if(s){if(t.offsets&&C.offsets.push({keyword:o,value:r.value,offsetStart:l?r.offsetStart+1:r.offsetStart,offsetEnd:r.offsetEnd}),(c=r.value).length){var A=c.split(",");l?H[o]?H[o]instanceof Array?A.length>1?H[o]=H[o].concat(A):H[o].push(c):(H[o]=[H[o]],H[o].push(c)):A.length>1?H[o]=A:t.alwaysArray?H[o]=[c]:H[o]=c:C[o]?C[o]instanceof Array?A.length>1?C[o]=C[o].concat(A):C[o].push(c):(C[o]=[C[o]],C[o].push(c)):A.length>1?C[o]=A:t.alwaysArray?C[o]=[c]:C[o]=c}}else if(u){t.offsets&&C.offsets.push(r);var c,h=(c=r.value).split("-");C[o]={},2===h.length?(C[o].from=h[0],C[o].to=h[1]):!h.length%2||(C[o].from=c)}else{var m=r.keyword+":"+r.value;C.text.push(m),t.offsets&&C.offsets.push({text:m,offsetStart:r.offsetStart,offsetEnd:r.offsetEnd})}}return C.text.length?t.tokenize||(C.text=C.text.join(" ").trim()):delete C.text,C.exclude=H,C}return e}return e},t.stringify=function(e,C,i){if(C||(C={offsets:!0}),!e)return"";if("string"==typeof e)return e;if(Array.isArray(e))return e.join(" ");if(!Object.keys(e).length)return"";if(3===Object.keys(e).length&&e.text&&e.offsets&&e.exclude&&"string"==typeof e.text)return e.text;i||(i="");var H=function(e){return e.indexOf(" ")>-1?JSON.stringify(e):e},n=function(e){return i+e},V=[];if(e.text){var r=[];"string"==typeof e.text?r.push(e.text):r.push.apply(r,e.text),r.length>0&&V.push(r.map(H).map(n).join(" "))}return C.keywords&&C.keywords.forEach((function(t){if(e[t]){var C=[];"string"==typeof e[t]?C.push(e[t]):C.push.apply(C,e[t]),C.length>0&&V.push(n(t+":"+C.map(H).join(",")))}})),C.ranges&&C.ranges.forEach((function(t){if(e[t]){var C=e[t].from,i=e[t].to;i&&(C=C+"-"+i),C&&V.push(n(t+":"+C))}})),e.exclude&&Object.keys(e.exclude).length>0&&V.push(t.stringify(e.exclude,C,"-")),V.join(" ")}})),Xa=Ya;const qa=function(e,t,C="*="){return"string"==typeof t||t instanceof String?[`[${e} ${C} '${t}']`]:t.map((t=>`[${e} ${C} '${t}']`))},Qa=function(e,t){switch(t){case"exclude":return[];case"content":case"ignore-case":case"text":return qa("content",e[t],"@*=");case"match-case":return qa("content",e[t],"*=");case"file":return qa("name",e[t]);case"name":return qa("name",e[t],"@*=");case"tag":return"string"==typeof(i=e[t])||i instanceof String?i.length>0&&"#"===i[0]?(i.slice(1),[`.tag-${i.slice(1).replaceAll("/","-")}`]):[]:i.map((e=>e.length>0&&"#"===e[0]?`.tag-${e.slice(1).replaceAll("/","-")}`:""));case"class":return"string"==typeof(C=e[t])||C instanceof String?[`.${C}`]:C.map((e=>`.${e}`));case"raw":return[e[t]];default:return qa(t,e[t])}var C,i},Ka=function(e,t,C){if(C===e)return function(e,t){const C=new Set;t.forEach((e=>{Object.keys(e.data()).forEach((e=>C.add(e)))}));const i=["file","tag","raw","match-case","ignore-case","class"];i.push(...C);const H={keywords:i,tokenize:!0,offsets:!1},n=Xa.parse(e,H);let V="node";for(const e of Object.keys(n))V+=Qa(n,e).join();let r=t.filter(V);if(n.exclude)for(const e of Object.keys(n.exclude))for(const t of Qa(n.exclude,e)){const e="node"+t;r=r.not(e)}return r}(e,t);const i=[];let H=0,n=0;for(let t=0;te.union(function(e,t){const C=[],i=[];let H=0,n=-1,V=-1;for(let t=0;t0&&"-"===e[t-1]?t-1:t);H.trim().length>0&&(i.push(!1),C.push(H))}H+=1}else if(")"===e[t])H-=1,0===H&&(V=t,i.push(n>0&&"-"===e[n-1]),C.push(e.slice(n+1,V)));else if(t===e.length-1){const t=e.slice(V+1);t.trim().length>0&&(i.push(!1),C.push(t))}let r=t;for(let t=0;tnew n(e,this.datastores.coreStore.storeId()))),C=this.settings.expandInitial?await this.neighbourhood(i):await Promise.all(i.map((e=>this.datastores.coreStore.get(e,this)))),C=C.filter((e=>e)),this.viz=Wo({container:t,elements:C,minZoom:.3,maxZoom:10,wheelSensitivity:this.settings.zoomSpeed})):this.viz=Wo({container:t,elements:[{data:{id:"a"}},{data:{id:"b"}}],minZoom:.3,maxZoom:10,wheelSensitivity:this.settings.zoomSpeed}),this.viz.dblclick(),this.settings.navigator){const e=document.createElement("div");e.id="cynav"+eM,t.children[0].appendChild(e),e.addClass("cy-navigator"),this.viz.navigator({container:"#cynav"+eM,viewLiveFramerate:0,thumbnailEventFramerate:10,thumbnailLiveFramerate:!1,dblClickDelay:200,removeCustomContainer:!0,rerenderDelay:100})}if(eM+=1,i){for(const e of i){const t=this.viz.$id(e.toId());this.settings.expandInitial&&t.addClass("expanded"),t.addClass("protected")}const e=this.viz.nodes(),t=await this.buildEdges(e);this.viz.add(t),this.onGraphChanged(!0)}await this.updateStylesheet(),i&&this.restartLayout();const H=this;this.viz.on("tap boxselect",(async e=>{this.element.focus()})),this.viz.on("tap","node",(async e=>{n.fromNode(e.target).storeId})),this.viz.on("tap","edge",(async e=>{})),this.viz.on("mouseover","node",(async e=>{e.target.unlock();const t=e.target;e.cy.elements().difference(t.closedNeighborhood()).addClass("unhover"),t.addClass("hover").connectedEdges().addClass("connected-hover").connectedNodes().addClass("connected-hover");const C=n.fromNode(e.target);if("core"===C.storeId){const t=this.plugin.metadata.getFirstLinkpathDest(C.id,"");if(t&&"md"===t.extension&&(e.originalEvent.metaKey||!this.settings.metaKeyHover)){const C=await H.vault.cachedRead(t);this.hoverTimeout[e.target.id()]=setTimeout((async()=>await this.popover(C,t.path,e.target,"advanced-graph-preview-node")),400)}}})),this.viz.on("mouseover","edge",(async e=>{const t=e.target;this.settings.hoverEdges&&(e.cy.elements().difference(t.connectedNodes().union(t)).addClass("unhover"),t.addClass("hover").connectedNodes().addClass("connected-hover")),!("context"in t.data())||!e.originalEvent.metaKey&&this.settings.metaKeyHover||(this.hoverTimeout[e.target.id()]=setTimeout((async()=>await this.popover(t.data().context,"",t,"juggl-preview-edge")),800))})),this.viz.on("mouseout",(e=>{if(e.target===e.cy)return;const t=e.target.id();t in this.hoverTimeout&&(clearTimeout(this.hoverTimeout[t]),this.hoverTimeout[t]=void 0),e.cy.elements().removeClass(["hover","unhover","connected-hover"]),e.target.hasClass("pinned")&&e.target.lock()})),this.viz.on("grab",(e=>{this.activeLayout&&this.activeLayout.stop()})),this.viz.on("dragfree",(e=>{this.activeLayout&&this.activeLayout.stop(),this.activeLayout.start();const t=e.target;t.lock(),this.activeLayout.one("layoutstop",(e=>{t.hasClass("pinned")||t.unlock()}))})),this.viz.on("cxttap",(t=>{const C=new e.Menu(this.plugin.app);if(t.target!==this.viz&&"nodes"===t.target.group()){const e=n.fromNode(t.target);if(t.target.select(),"core"===e.storeId){const t=this.plugin.app.metadataCache.getFirstLinkpathDest(e.id,"");void 0!==t&&this.plugin.app.workspace.trigger("file-menu",C,t,"my-context-menu",null)}}this.mode.fillMenu(C,this.viz.nodes(":selected")),C.showAtPosition({x:t.originalEvent.x,y:t.originalEvent.y})})),this.viz.on("layoutstop",e.debounce((e=>{if(!this.settings.autoZoom)return;let t;const C=this.viz.nodes(".active-node");t=C.length>0?C.closedNeighborhood():this.viz.nodes(),e.cy.animate({fit:{eles:t,padding:0},duration:250,queue:!1})}),500,!0)),this.vizReady=!0,this.trigger("vizReady",this.viz),console.log("Visualization ready")}catch(e){throw console.log(e),e}}async popover(t,C,i,H){const n=document.createElement("div");n.addClasses(["popover","hover-popover","is-loaded","juggl-hover"]);const V=document.createElement("div");V.addClasses(["markdown-embed",H]),n.appendChild(V);const r=document.createElement("div");r.addClasses(["markdown-embed-content"]),V.appendChild(r);const L=document.createElement("div");L.addClasses(["markdown-preview-view"]),r.appendChild(L);const o=document.createElement("div");o.addClasses(["markdown-preview-sizer","markdown-preview-section"]),L.appendChild(o),await e.MarkdownRenderer.renderMarkdown(t,o,C,null),document.body.appendChild(n);const a=i.popper({content:()=>n,popper:{placement:"top"}}),M=function(){a.update()};i.on("position",M),this.viz.on("pan zoom resize",M),n.addEventListener("mouseenter",(e=>{n.addClass("popover-hovered")})),this.destroyHover=()=>{a.destroy(),n.remove(),this.destroyHover=null},n.addEventListener("mouseleave",this.destroyHover);const s=this.destroyHover;this.viz.one("mouseout",(e=>{setTimeout((function(){n.hasClass("popover-hovered")||s()}),300)}))}async neighbourhood(e){const t=[];for(const C of this.datastores.dataStores){const i=await C.getNeighbourhood(e,this);t.push(...i)}return t}async buildEdges(e){const t=[];for(const C of this.datastores.dataStores)t.push(...await C.connectNodes(this.viz.nodes(),e,this));return t}async expand(e,t=!0,C=!0){if(0===e.length)return null;t&&this.viz.startBatch(),e.addClass("expanded"),e.addClass("protected");const i=e.map((e=>n.fromNode(e))),H=await this.neighbourhood(i);this.mergeToGraph(H,!1,!1);const V=this.viz.collection();H.forEach((e=>{V.merge(this.viz.$id(e.data.id))}));const r=await this.buildEdges(V),L=this.mergeToGraph(r,!1,C);return t&&this.viz.endBatch(),this.trigger("expand",e),L}async updateStylesheet(){const e=new Ve(this.plugin);this.trigger("stylesheet",e);const t=await e.getStylesheet(this);this.viz.style(t)}onunload(){}removeNodes(e){let t=null;return this.viz.batch((()=>{this.getExpanded().intersection(e.neighborhood()).removeClass("expanded"),t=e.remove(),this.onGraphChanged(!1,!0)})),t}fitView(e){e?this.viz.fit(e):this.viz.fit()}restartLayout(){this.activeLayout&&this.activeLayout.stop();const e="string"==typeof(t=this.settings).layout||t.layout instanceof String?Pa(t.layout,t):Pa(t.layout.name,t,t.layout);var t;try{this.activeLayout=e.startLayout(this)}catch(e){console.log(e)}}setLayout(e){this.settings.layout=e.options,this.restartLayout()}mergeToGraph(e,t=!0,C=!0){t&&this.viz.startBatch();const H=[],n=this.viz.collection();e.forEach((e=>{if(0===this.viz.$id(e.data.id).length)H.push(e);else{const t=this.viz.$id(e.data.id),C=i.filter((e=>t.hasClass(e)));C.push(...t.classes().filter((e=>e.startsWith("global-")||e.startsWith("local-")))),t.classes(e.classes);for(const e of C)t.addClass(e);t.data(e.data),n.merge(t)}}));const V=this.viz.add(H);return n.merge(V),C&&this.onGraphChanged(!1),t&&this.viz.endBatch(),{merged:n,added:V}}assignStyleGroups(){const e=this.viz,t=function(t,C){for(const[i,H]of t.entries()){const t=`${C}-${i}`;e.nodes().removeClass(t);Ja(H.filter,e.nodes()).addClass(t)}};t(this.settings.styleGroups,"local"),"settings"in this.plugin&&t(this.plugin.settings.globalStyleGroups,"global")}onGraphChanged(e=!0,t=!1){e&&this.viz.startBatch(),this.viz.nodes().forEach((e=>{e.data("degree",e.degree(!1)),e.data("nameLength",e.data("name").length),e.addClass([...new Set(e.incomers("edge").map((e=>"has-incoming-"+(e.data("type")?e.data("type"):"inline"))))]),e.addClass([...new Set(e.outgoers("edge").map((e=>"has-outgoing-"+(e.data("type")?e.data("type"):"inline"))))])})),e&&this.viz.endBatch(),this.trigger("elementsChange"),this.searchFilter(this.settings.filter),t?this.debouncedRestartLayout():this.restartLayout(),this.assignStyleGroups()}getViz(){return this.viz}setMode(e){this.removeChild(this.mode),"local"===e?this.mode=new Ua(this):"workspace"===e&&(this.mode=new ja(this)),this.addChild(this.mode),this.settings.toolbar&&this.mode.createToolbar(this.element.children[0])}searchFilter(e){this.viz.nodes().removeClass("filtered");const t=Ja(e,this.viz.nodes());this.viz.nodes().difference(t).addClass("filtered"),this.settings.filter=e}getPinned(){return this.viz.nodes(".pinned")}getExpanded(){return this.viz.nodes(".expanded")}getProtected(){return this.viz.nodes(".protected")}on(e,t,C){return this.events.on(e,t,C)}off(e,t){this.events.off(e,t)}offref(e){this.events.offref(e)}trigger(e,...t){this.events.trigger(e,...t)}tryTrigger(e,t){this.events.tryTrigger(e,t)}}class CM extends e.Component{constructor(e){super(),this.settings=e.settings,this.plugin=e,this.imgServer=null}async onload(){if(super.onload(),e.Platform.isMobile||!this.settings.useImgServer)return;const t=require("path"),C=require("http"),i=require("fs");let H=null;try{H=t.join(this.plugin.path)}catch(e){return console.log("Couldn't start image server. This is likely because we're on mobile!"),console.log("Alternatively, windows might block it using the firewall"),void console.log(e)}const n={gif:"image/gif",jpg:"image/jpeg",png:"image/png",svg:"image/svg+xml"},V=this.settings,r=this.plugin.app.vault;this.imgServer=C.createServer((function(e,C){const L=e.url.toString().split("?")[0];if("GET"!==e.method)return C.statusCode=501,C.setHeader("Content-Type","text/plain"),C.end("Method not implemented");let o=t.join(H,decodeURI(L.replace(/\/$/,"/index.html")));o=r.adapter.getFullPath(o),V.debug&&(console.log("entering server query"),console.log(e),console.log(o));const a=n[t.extname(o).slice(1)],M=i.createReadStream(o);M.on("open",(function(){C.setHeader("Content-Type",a),C.setHeader("Access-Control-Allow-Origin","*"),M.pipe(C)})),M.on("error",(function(){console.log("Here3"),C.setHeader("Content-Type","text/plain"),C.statusCode=404,C.end("Not found")}))}));try{const e=this.settings.imgServerPort;this.imgServer.listen(e,(function(){console.log("Image server listening on http://localhost:"+e+"/")}))}catch(t){console.log(t),new e.Notice("Juggl: Couldn't start image server, see console")}}async onunload(){super.onunload(),this.imgServer&&(this.imgServer.close(),this.imgServer=null)}}var iM=fe((function(e){!function(){var t={container:!1,viewLiveFramerate:0,dblClickDelay:200,removeCustomContainer:!0,rerenderDelay:500},C=function(){var e=Math.max,t=Date.now||function(){return(new Date).getTime()};return function(C,i,H){var n,V,r,L,o,a,M,s,l,d=0,u=!1,A=!0;if("function"!=typeof C)throw new TypeError("Expected a function");if(i=i<0?0:+i||0,!0===H){var c=!0;A=!1}else l=typeof(s=H),!s||"object"!=l&&"function"!=l||(c=!!H.leading,u="maxWait"in H&&e(+H.maxWait||0,i),A="trailing"in H?!!H.trailing:A);function h(e,i){i&&clearTimeout(i),V=a=M=void 0,e&&(d=t(),r=C.apply(o,n),a||V||(n=o=void 0))}function m(){var e=i-(t()-L);e<=0||e>i?h(M,V):a=setTimeout(m,e)}function f(){h(A,a)}function p(){if(n=arguments,L=t(),o=this,M=A&&(a||!c),!1===u)var e=c&&!a;else{V||c||(d=L);var H=u-(L-d),s=H<=0||H>u;s?(V&&(V=clearTimeout(V)),d=L,r=C.apply(o,n)):V||(V=setTimeout(f,H))}return s&&a?a=clearTimeout(a):a||i===u||(a=setTimeout(m,i)),e&&(s=!0,r=C.apply(o,n)),!s||a||V||(n=o=void 0),r}return p.cancel=function(){a&&clearTimeout(a),V&&clearTimeout(V),d=0,V=a=M=void 0},p}}(),i=function(e,t){this._init(e,t)},H=function(){for(var e=1;e0?-1!==e.container.indexOf("#")?this.$panel=document.getElementById(e.container.replace("#","")):this.$panel=document.getElementsByClassName(e.container.replace(".",""))[0]:(this.$panel=document.createElement("div"),this.$panel.className="cytoscape-navigator",document.body.appendChild(this.$panel)),this._setupPanel(),this._addCyListener("resize",this.resize.bind(this))},_setupPanel:function(){this.panelWidth=n(this.$panel),this.panelHeight=V(this.$panel)},_initThumbnail:function(){this.$thumbnail=document.createElement("img"),this.$panel.appendChild(this.$thumbnail),this._setupThumbnailSizes(),this._setupThumbnail()},_setupThumbnail:function(){this._updateThumbnailImage()},_setupThumbnailSizes:function(){this.boundingBox=this.bb(),this.thumbnailZoom=Math.min(this.panelHeight/this.boundingBox.h,this.panelWidth/this.boundingBox.w),this.thumbnailPan={x:(this.panelWidth-this.thumbnailZoom*(this.boundingBox.x1+this.boundingBox.x2))/2,y:(this.panelHeight-this.thumbnailZoom*(this.boundingBox.y1+this.boundingBox.y2))/2}},_checkThumbnailSizesAndUpdate:function(){var e=this.thumbnailZoom,t=this.thumbnailPan.x,C=this.thumbnailPan.y;this._setupThumbnailSizes(),e!=this.thumbnailZoom||t!=this.thumbnailPan.x||C!=this.thumbnailPan.y?(this._setupThumbnail(),this._setupView()):this._updateThumbnailImage()},_initView:function(){this.$view=document.createElement("div"),this.$view.className="cytoscape-navigatorView",this.$panel.appendChild(this.$view),this.viewBorderTop=parseInt(this.$view.style["border-top-width"],10)||0,this.viewBorderRight=parseInt(this.$view.style["border-right-width"],10)||0,this.viewBorderBottom=parseInt(this.$view.style["border-bottom-width"],10)||0,this.viewBorderLeft=parseInt(this.$view.style["border-left-width"],10)||0,this.viewBorderHorizontal=this.viewBorderLeft+this.viewBorderRight,this.viewBorderVertical=this.viewBorderTop+this.viewBorderBottom,this._setupView(),this._addCyListener("zoom pan",this._setupView.bind(this))},_setupView:function(){if(!this.viewLocked){var e=this.cy.zoom(),t=this.cy.pan();this.viewW=this.width/e*this.thumbnailZoom,this.viewX=-t.x*this.viewW/this.width+this.thumbnailPan.x-this.viewBorderLeft,this.viewH=this.height/e*this.thumbnailZoom,this.viewY=-t.y*this.viewH/this.height+this.thumbnailPan.y-this.viewBorderTop,this.$view.style.width=this.viewW+"px",this.$view.style.height=this.viewH+"px",this.$view.style.position="absolute",this.$view.style.left=this.viewX+"px",this.$view.style.top=this.viewY+"px"}},_initOverlay:function(){this.$overlay=document.createElement("div"),this.$overlay.className="cytoscape-navigatorOverlay",this.$panel.appendChild(this.$overlay),this.overlayHookPointX=0,this.overlayHookPointY=0,this._initEventsHandling()},resize:function(){this.width=n(this.$element),this.height=V(this.$element),this._thumbnailSetup=!1,this._setupPanel(),this._checkThumbnailSizesAndUpdate(),this._setupView()},_initEventsHandling:function(){for(var e=this,t=["mousedown","mousewheel","DOMMouseScroll","touchstart"],C=["mouseup","mouseout","mousemove","touchmove","touchend"],i=function(t){if("touchstart"==t.type&&(Object.defineProperty(t,"offsetX",{value:e.viewX+e.viewW/2,writable:!0}),Object.defineProperty(t,"offsetY",{value:e.viewY+e.viewH/2,writable:!0})),void 0===t.offsetX||void 0===t.offsetY){var C=t.target.getBoundingClientRect(),i={top:C.top+window.scrollY,left:C.left+window.scrollX};Object.defineProperty(t,"offsetX",{value:t.pageX-i.left,writable:!0}),Object.defineProperty(t,"offsetY",{value:t.pageY-i.top,writable:!0})}return"mousedown"==t.type||"touchstart"==t.type?e._eventMoveStart(t):"mousewheel"!=t.type&&"DOMMouseScroll"!=t.type||e._eventZoom(t),!1},H=function(t){if(e.overlayInMovement){if("touchend"==t.type?(Object.defineProperty(t,"offsetX",{value:e.viewX+e.viewW/2,writable:!0}),Object.defineProperty(t,"offsetY",{value:e.viewY+e.viewH/2,writable:!0})):"touchmove"==t.type&&(Object.defineProperty(t,"pageX",{value:t.originalEvent.touches[0].pageX,writable:!0}),Object.defineProperty(t,"pageY",{value:t.originalEvent.touches[0].pageY,writable:!0})),void 0===t.offsetX||void 0===t.offsetY){var C={top:(i=t.target.getBoundingClientRect()).top+window.scrollY,left:i.left+window.scrollX};Object.defineProperty(t,"offsetX",{value:t.pageX-C.left,writable:!0}),Object.defineProperty(t,"offsetY",{value:t.pageY-C.top,writable:!0})}if(t.target!==e.$overlay){var i=t.target.getBoundingClientRect(),H=e.$overlay.getBoundingClientRect(),n=(C={top:i.top+window.scrollY,left:i.left+window.scrollX},{top:H.top+window.scrollY,left:H.left+window.scrollX});if(!C||!n)return!1;Object.defineProperty(t,"offsetX",{value:t.offsetX-n.left+C.left,writable:!0}),Object.defineProperty(t,"offsetY",{value:t.offsetY-n.top+C.top,writable:!0})}return"mousemove"==t.type||"touchmove"==t.type?e._eventMove(t):"mouseup"!=t.type&&"touchend"!=t.type||e._eventMoveEnd(t),!1}},n=0;nt?(this.overlayLastMoveStartTime=0,this.overlayInMovement=!0,this.overlayHookPointX=this.viewW/2,this.overlayHookPointY=this.viewH/2,!1!==this.options.viewLiveFramerate?this._eventMove({offsetX:this.panelWidth/2,offsetY:this.panelHeight/2}):this._eventMoveEnd({offsetX:this.panelWidth/2,offsetY:this.panelHeight/2}),this.overlayInMovement=!1):(this.overlayLastMoveStartTime=t,this.overlayInMovement=!0,this.viewLocked=!0,e.offsetX>=this.viewX&&e.offsetX<=this.viewX+this.viewW&&e.offsetY>=this.viewY&&e.offsetY<=this.viewY+this.viewH?(this.overlayHookPointX=e.offsetX-this.viewX,this.overlayHookPointY=e.offsetY-this.viewY):(this.overlayHookPointX=this.viewW/2,this.overlayHookPointY=this.viewH/2,this._eventMove(e)))},_eventMove:function(e){var t=this;this._checkMousePosition(e),this.overlayInMovement&&(this.viewX=e.offsetX-this.overlayHookPointX,this.viewY=e.offsetY-this.overlayHookPointY,this.$view.style.left=this.viewX+"px",this.$view.style.top=this.viewY+"px",!1!==this.options.viewLiveFramerate&&(0==this.options.viewLiveFramerate?this._moveCy():this.overlayTimeout||(this.overlayTimeout=setTimeout((function(){t._moveCy(),t.overlayTimeout=!1}),1e3/this.options.viewLiveFramerate))))},_checkMousePosition:function(e){e.offsetX>this.viewX&&e.offsetXthis.viewY&&e.offsetY0&&(i=gM(C.width)/V||1),n>0&&(H=gM(C.height)/n||1)}return{width:C.width/i,height:C.height/H,top:C.top/H,right:C.right/i,bottom:C.bottom/H,left:C.left/i,x:C.left/i,y:C.top/H}}function yM(e){var t=vM(e),C=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-C)<=1&&(C=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:C,height:i}}function ZM(e,t){var C=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(C&&cM(C)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function SM(e){return dM(e).getComputedStyle(e)}function bM(e){return["table","td","th"].indexOf(lM(e))>=0}function wM(e){return((uM(e)?e.ownerDocument:e.document)||window.document).documentElement}function xM(e){return"html"===lM(e)?e:e.assignedSlot||e.parentNode||(cM(e)?e.host:null)||wM(e)}function OM(e){return AM(e)&&"fixed"!==SM(e).position?e.offsetParent:null}function kM(e){for(var t=dM(e),C=OM(e);C&&bM(C)&&"static"===SM(C).position;)C=OM(C);return C&&("html"===lM(C)||"body"===lM(C)&&"static"===SM(C).position)?t:C||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&AM(e)&&"fixed"===SM(e).position)return null;for(var C=xM(e);AM(C)&&["html","body"].indexOf(lM(C))<0;){var i=SM(C);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return C;C=C.parentNode}return null}(e)||t}function EM(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function PM(e,t,C){return fM(e,pM(t,C))}function TM(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function _M(e,t){return t.reduce((function(t,C){return t[C]=e,t}),{})}var BM={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,C=e.state,i=e.name,H=e.options,n=C.elements.arrow,V=C.modifiersData.popperOffsets,r=mM(C.placement),L=EM(r),o=[rM,VM].indexOf(r)>=0?"height":"width";if(n&&V){var a=function(e,t){return TM("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:_M(e,LM))}(H.padding,C),M=yM(n),s="y"===L?HM:rM,l="y"===L?nM:VM,d=C.rects.reference[o]+C.rects.reference[L]-V[L]-C.rects.popper[o],u=V[L]-C.rects.reference[L],A=kM(n),c=A?"y"===L?A.clientHeight||0:A.clientWidth||0:0,h=d/2-u/2,m=a[s],f=c-M[o]-a[l],p=c/2-M[o]/2+h,g=PM(m,p,f),v=L;C.modifiersData[i]=((t={})[v]=g,t.centerOffset=g-p,t)}},effect:function(e){var t=e.state,C=e.options.element,i=void 0===C?"[data-popper-arrow]":C;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&("production"!==process.env.NODE_ENV&&(AM(i)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" "))),ZM(t.elements.popper,i)?t.elements.arrow=i:"production"!==process.env.NODE_ENV&&console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" ")))},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function DM(e){return e.split("-")[1]}var NM={top:"auto",right:"auto",bottom:"auto",left:"auto"};function RM(e){var t,C=e.popper,i=e.popperRect,H=e.placement,n=e.variation,V=e.offsets,r=e.position,L=e.gpuAcceleration,o=e.adaptive,a=e.roundOffsets,M=e.isFixed,s=V.x,l=void 0===s?0:s,d=V.y,u=void 0===d?0:d,A="function"==typeof a?a({x:l,y:u}):{x:l,y:u};l=A.x,u=A.y;var c=V.hasOwnProperty("x"),h=V.hasOwnProperty("y"),m=rM,f=HM,p=window;if(o){var g=kM(C),v="clientHeight",y="clientWidth";if(g===dM(C)&&"static"!==SM(g=wM(C)).position&&"absolute"===r&&(v="scrollHeight",y="scrollWidth"),g=g,H===HM||(H===rM||H===VM)&&n===oM)f=nM,u-=(M&&p.visualViewport?p.visualViewport.height:g[v])-i.height,u*=L?1:-1;if(H===rM||(H===HM||H===nM)&&n===oM)m=VM,l-=(M&&p.visualViewport?p.visualViewport.width:g[y])-i.width,l*=L?1:-1}var Z,S=Object.assign({position:r},o&&NM),b=!0===a?function(e){var t=e.x,C=e.y,i=window.devicePixelRatio||1;return{x:gM(t*i)/i||0,y:gM(C*i)/i||0}}({x:l,y:u}):{x:l,y:u};return l=b.x,u=b.y,L?Object.assign({},S,((Z={})[f]=h?"0":"",Z[m]=c?"0":"",Z.transform=(p.devicePixelRatio||1)<=1?"translate("+l+"px, "+u+"px)":"translate3d("+l+"px, "+u+"px, 0)",Z)):Object.assign({},S,((t={})[f]=h?u+"px":"",t[m]=c?l+"px":"",t.transform="",t))}var FM={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,C=e.options,i=C.gpuAcceleration,H=void 0===i||i,n=C.adaptive,V=void 0===n||n,r=C.roundOffsets,L=void 0===r||r;if("production"!==process.env.NODE_ENV){var o=SM(t.elements.popper).transitionProperty||"";V&&["transform","top","right","bottom","left"].some((function(e){return o.indexOf(e)>=0}))&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',"\n\n",'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.","\n\n","We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "))}var a={placement:mM(t.placement),variation:DM(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:H,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,RM(Object.assign({},a,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:V,roundOffsets:L})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,RM(Object.assign({},a,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:L})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},IM={passive:!0};var zM={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,C=e.instance,i=e.options,H=i.scroll,n=void 0===H||H,V=i.resize,r=void 0===V||V,L=dM(t.elements.popper),o=[].concat(t.scrollParents.reference,t.scrollParents.popper);return n&&o.forEach((function(e){e.addEventListener("scroll",C.update,IM)})),r&&L.addEventListener("resize",C.update,IM),function(){n&&o.forEach((function(e){e.removeEventListener("scroll",C.update,IM)})),r&&L.removeEventListener("resize",C.update,IM)}},data:{}},jM={left:"right",right:"left",bottom:"top",top:"bottom"};function GM(e){return e.replace(/left|right|bottom|top/g,(function(e){return jM[e]}))}var WM={start:"end",end:"start"};function $M(e){return e.replace(/start|end/g,(function(e){return WM[e]}))}function UM(e){var t=dM(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function YM(e){return vM(wM(e)).left+UM(e).scrollLeft}function XM(e){var t=SM(e),C=t.overflow,i=t.overflowX,H=t.overflowY;return/auto|scroll|overlay|hidden/.test(C+H+i)}function qM(e){return["html","body","#document"].indexOf(lM(e))>=0?e.ownerDocument.body:AM(e)&&XM(e)?e:qM(xM(e))}function QM(e,t){var C;void 0===t&&(t=[]);var i=qM(e),H=i===(null==(C=e.ownerDocument)?void 0:C.body),n=dM(i),V=H?[n].concat(n.visualViewport||[],XM(i)?i:[]):i,r=t.concat(V);return H?r:r.concat(QM(xM(V)))}function KM(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function JM(e,t){return"viewport"===t?KM(function(e){var t=dM(e),C=wM(e),i=t.visualViewport,H=C.clientWidth,n=C.clientHeight,V=0,r=0;return i&&(H=i.width,n=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(V=i.offsetLeft,r=i.offsetTop)),{width:H,height:n,x:V+YM(e),y:r}}(e)):uM(t)?function(e){var t=vM(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):KM(function(e){var t,C=wM(e),i=UM(e),H=null==(t=e.ownerDocument)?void 0:t.body,n=fM(C.scrollWidth,C.clientWidth,H?H.scrollWidth:0,H?H.clientWidth:0),V=fM(C.scrollHeight,C.clientHeight,H?H.scrollHeight:0,H?H.clientHeight:0),r=-i.scrollLeft+YM(e),L=-i.scrollTop;return"rtl"===SM(H||C).direction&&(r+=fM(C.clientWidth,H?H.clientWidth:0)-n),{width:n,height:V,x:r,y:L}}(wM(e)))}function es(e,t,C){var i="clippingParents"===t?function(e){var t=QM(xM(e)),C=["absolute","fixed"].indexOf(SM(e).position)>=0&&AM(e)?kM(e):e;return uM(C)?t.filter((function(e){return uM(e)&&ZM(e,C)&&"body"!==lM(e)})):[]}(e):[].concat(t),H=[].concat(i,[C]),n=H[0],V=H.reduce((function(t,C){var i=JM(e,C);return t.top=fM(i.top,t.top),t.right=pM(i.right,t.right),t.bottom=pM(i.bottom,t.bottom),t.left=fM(i.left,t.left),t}),JM(e,n));return V.width=V.right-V.left,V.height=V.bottom-V.top,V.x=V.left,V.y=V.top,V}function ts(e){var t,C=e.reference,i=e.element,H=e.placement,n=H?mM(H):null,V=H?DM(H):null,r=C.x+C.width/2-i.width/2,L=C.y+C.height/2-i.height/2;switch(n){case HM:t={x:r,y:C.y-i.height};break;case nM:t={x:r,y:C.y+C.height};break;case VM:t={x:C.x+C.width,y:L};break;case rM:t={x:C.x-i.width,y:L};break;default:t={x:C.x,y:C.y}}var o=n?EM(n):null;if(null!=o){var a="y"===o?"height":"width";switch(V){case"start":t[o]=t[o]-(C[a]/2-i[a]/2);break;case oM:t[o]=t[o]+(C[a]/2-i[a]/2)}}return t}function Cs(e,t){void 0===t&&(t={});var C=t,i=C.placement,H=void 0===i?e.placement:i,n=C.boundary,V=void 0===n?"clippingParents":n,r=C.rootBoundary,L=void 0===r?"viewport":r,o=C.elementContext,a=void 0===o?"popper":o,M=C.altBoundary,s=void 0!==M&&M,l=C.padding,d=void 0===l?0:l,u=TM("number"!=typeof d?d:_M(d,LM)),A="popper"===a?"reference":"popper",c=e.rects.popper,h=e.elements[s?A:a],m=es(uM(h)?h:h.contextElement||wM(e.elements.popper),V,L),f=vM(e.elements.reference),p=ts({reference:f,element:c,strategy:"absolute",placement:H}),g=KM(Object.assign({},c,p)),v="popper"===a?g:f,y={top:m.top-v.top+u.top,bottom:v.bottom-m.bottom+u.bottom,left:m.left-v.left+u.left,right:v.right-m.right+u.right},Z=e.modifiersData.offset;if("popper"===a&&Z){var S=Z[H];Object.keys(y).forEach((function(e){var t=[VM,nM].indexOf(e)>=0?1:-1,C=[HM,nM].indexOf(e)>=0?"y":"x";y[e]+=S[C]*t}))}return y}function is(e,t){void 0===t&&(t={});var C=t,i=C.placement,H=C.boundary,n=C.rootBoundary,V=C.padding,r=C.flipVariations,L=C.allowedAutoPlacements,o=void 0===L?MM:L,a=DM(i),M=a?r?aM:aM.filter((function(e){return DM(e)===a})):LM,s=M.filter((function(e){return o.indexOf(e)>=0}));0===s.length&&(s=M,"production"!==process.env.NODE_ENV&&console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var l=s.reduce((function(t,C){return t[C]=Cs(e,{placement:C,boundary:H,rootBoundary:n,padding:V})[mM(C)],t}),{});return Object.keys(l).sort((function(e,t){return l[e]-l[t]}))}var Hs={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,C=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var H=C.mainAxis,n=void 0===H||H,V=C.altAxis,r=void 0===V||V,L=C.fallbackPlacements,o=C.padding,a=C.boundary,M=C.rootBoundary,s=C.altBoundary,l=C.flipVariations,d=void 0===l||l,u=C.allowedAutoPlacements,A=t.options.placement,c=mM(A),h=L||(c===A||!d?[GM(A)]:function(e){if("auto"===mM(e))return[];var t=GM(e);return[$M(e),t,$M(t)]}(A)),m=[A].concat(h).reduce((function(e,C){return e.concat("auto"===mM(C)?is(t,{placement:C,boundary:a,rootBoundary:M,padding:o,flipVariations:d,allowedAutoPlacements:u}):C)}),[]),f=t.rects.reference,p=t.rects.popper,g=new Map,v=!0,y=m[0],Z=0;Z=0,O=x?"width":"height",k=Cs(t,{placement:S,boundary:a,rootBoundary:M,altBoundary:s,padding:o}),E=x?w?VM:rM:w?nM:HM;f[O]>p[O]&&(E=GM(E));var P=GM(E),T=[];if(n&&T.push(k[b]<=0),r&&T.push(k[E]<=0,k[P]<=0),T.every((function(e){return e}))){y=S,v=!1;break}g.set(S,T)}if(v)for(var _=function(e){var t=m.find((function(t){var C=g.get(t);if(C)return C.slice(0,e).every((function(e){return e}))}));if(t)return y=t,"break"},B=d?3:1;B>0;B--){if("break"===_(B))break}t.placement!==y&&(t.modifiersData[i]._skip=!0,t.placement=y,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ns(e,t,C){return void 0===C&&(C={x:0,y:0}),{top:e.top-t.height-C.y,right:e.right-t.width+C.x,bottom:e.bottom-t.height+C.y,left:e.left-t.width-C.x}}function Vs(e){return[HM,VM,nM,rM].some((function(t){return e[t]>=0}))}var rs={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,C=e.name,i=t.rects.reference,H=t.rects.popper,n=t.modifiersData.preventOverflow,V=Cs(t,{elementContext:"reference"}),r=Cs(t,{altBoundary:!0}),L=ns(V,i),o=ns(r,H,n),a=Vs(L),M=Vs(o);t.modifiersData[C]={referenceClippingOffsets:L,popperEscapeOffsets:o,isReferenceHidden:a,hasPopperEscaped:M},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":a,"data-popper-escaped":M})}};var Ls={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,C=e.options,i=e.name,H=C.offset,n=void 0===H?[0,0]:H,V=MM.reduce((function(e,C){return e[C]=function(e,t,C){var i=mM(e),H=[rM,HM].indexOf(i)>=0?-1:1,n="function"==typeof C?C(Object.assign({},t,{placement:e})):C,V=n[0],r=n[1];return V=V||0,r=(r||0)*H,[rM,VM].indexOf(i)>=0?{x:r,y:V}:{x:V,y:r}}(C,t.rects,n),e}),{}),r=V[t.placement],L=r.x,o=r.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=L,t.modifiersData.popperOffsets.y+=o),t.modifiersData[i]=V}};var os={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,C=e.name;t.modifiersData[C]=ts({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var as={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,C=e.options,i=e.name,H=C.mainAxis,n=void 0===H||H,V=C.altAxis,r=void 0!==V&&V,L=C.boundary,o=C.rootBoundary,a=C.altBoundary,M=C.padding,s=C.tether,l=void 0===s||s,d=C.tetherOffset,u=void 0===d?0:d,A=Cs(t,{boundary:L,rootBoundary:o,padding:M,altBoundary:a}),c=mM(t.placement),h=DM(t.placement),m=!h,f=EM(c),p="x"===f?"y":"x",g=t.modifiersData.popperOffsets,v=t.rects.reference,y=t.rects.popper,Z="function"==typeof u?u(Object.assign({},t.rects,{placement:t.placement})):u,S="number"==typeof Z?{mainAxis:Z,altAxis:Z}:Object.assign({mainAxis:0,altAxis:0},Z),b=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,w={x:0,y:0};if(g){if(n){var x,O="y"===f?HM:rM,k="y"===f?nM:VM,E="y"===f?"height":"width",P=g[f],T=P+A[O],_=P-A[k],B=l?-y[E]/2:0,D="start"===h?v[E]:y[E],N="start"===h?-y[E]:-v[E],R=t.elements.arrow,F=l&&R?yM(R):{width:0,height:0},I=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=I[O],j=I[k],G=PM(0,v[E],F[E]),W=m?v[E]/2-B-G-z-S.mainAxis:D-G-z-S.mainAxis,$=m?-v[E]/2+B+G+j+S.mainAxis:N+G+j+S.mainAxis,U=t.elements.arrow&&kM(t.elements.arrow),Y=U?"y"===f?U.clientTop||0:U.clientLeft||0:0,X=null!=(x=null==b?void 0:b[f])?x:0,q=P+$-X,Q=PM(l?pM(T,P+W-X-Y):T,P,l?fM(_,q):_);g[f]=Q,w[f]=Q-P}if(r){var K,J="x"===f?HM:rM,ee="x"===f?nM:VM,te=g[p],Ce="y"===p?"height":"width",ie=te+A[J],He=te-A[ee],ne=-1!==[HM,rM].indexOf(c),Ve=null!=(K=null==b?void 0:b[p])?K:0,re=ne?ie:te-v[Ce]-y[Ce]-Ve+S.altAxis,Le=ne?te+v[Ce]+y[Ce]-Ve-S.altAxis:He,oe=l&&ne?function(e,t,C){var i=PM(e,t,C);return i>C?C:i}(re,te,Le):PM(l?re:ie,te,l?Le:He);g[p]=oe,w[p]=oe-te}t.modifiersData[i]=w}},requiresIfExists:["offset"]};function Ms(e,t,C){void 0===C&&(C=!1);var i,H=AM(t),n=AM(t)&&function(e){var t=e.getBoundingClientRect(),C=gM(t.width)/e.offsetWidth||1,i=gM(t.height)/e.offsetHeight||1;return 1!==C||1!==i}(t),V=wM(t),r=vM(e,n),L={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(H||!H&&!C)&&(("body"!==lM(t)||XM(V))&&(L=(i=t)!==dM(i)&&AM(i)?function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}(i):UM(i)),AM(t)?((o=vM(t,!0)).x+=t.clientLeft,o.y+=t.clientTop):V&&(o.x=YM(V))),{x:r.left+L.scrollLeft-o.x,y:r.top+L.scrollTop-o.y,width:r.width,height:r.height}}function ss(e){var t=new Map,C=new Set,i=[];function H(e){C.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!C.has(e)){var i=t.get(e);i&&H(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){C.has(e.name)||H(e)})),i}function ls(e){var t;return function(){return t||(t=new Promise((function(C){Promise.resolve().then((function(){t=void 0,C(e())}))}))),t}}function ds(e){for(var t=arguments.length,C=new Array(t>1?t-1:0),i=1;i100){console.error("Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.");break}if(!0!==H.reset){var V=H.orderedModifiers[n],o=V.fn,a=V.options,M=void 0===a?{}:a,s=V.name;"function"==typeof o&&(H=o({state:H,options:M,name:s,instance:L})||H)}else H.reset=!1,n=-1}}else"production"!==process.env.NODE_ENV&&console.error(cs)}},update:ls((function(){return new Promise((function(e){L.forceUpdate(),e(H)}))})),destroy:function(){o(),r=!0}};if(!ms(e,t))return"production"!==process.env.NODE_ENV&&console.error(cs),L;function o(){V.forEach((function(e){return e()})),V=[]}return L.setOptions(C).then((function(e){!r&&C.onFirstUpdate&&C.onFirstUpdate(e)})),L}}var ps=fs(),gs=fs({defaultModifiers:[zM,os,FM,hM]}),vs=fs({defaultModifiers:[zM,os,FM,hM,Ls,Hs,as,BM,rs]}),ys=me(Object.freeze({__proto__:null,popperGenerator:fs,detectOverflow:Cs,createPopperBase:ps,createPopper:vs,createPopperLite:gs,top:HM,bottom:nM,right:VM,left:rM,auto:"auto",basePlacements:LM,start:"start",end:oM,clippingParents:"clippingParents",viewport:"viewport",popper:"popper",reference:"reference",variationPlacements:aM,placements:MM,beforeRead:"beforeRead",read:"read",afterRead:"afterRead",beforeMain:"beforeMain",main:"main",afterMain:"afterMain",beforeWrite:"beforeWrite",write:"write",afterWrite:"afterWrite",modifierPhases:sM,applyStyles:hM,arrow:BM,computeStyles:FM,eventListeners:zM,flip:Hs,hide:rs,offset:Ls,popperOffsets:os,preventOverflow:as})),Zs=fe((function(e,t){var C;C=function(e){return function(e){var t={};function C(i){if(t[i])return t[i].exports;var H=t[i]={i:i,l:!1,exports:{}};return e[i].call(H.exports,H,H.exports,C),H.l=!0,H.exports}return C.m=e,C.c=t,C.i=function(e){return e},C.d=function(e,t,i){C.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},C.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return C.d(t,"a",t),t},C.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},C.p="",C(C.s=7)}([function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;i1&&(console.warn("Popper.js Extension should only be used on one element."),console.warn("Ignoring all subsequent elements"))}e.exports={popper:function(e){return r(this),H(this[0],V(this[0],e))},popperRef:function(e){return r(this),n(this[0],V(this[0],e))}}},function(e,t,C){var i=C(0),H=C(2).getPopper,n=C(1).getRef;function V(e,t){return i({},{boundingBox:{top:0,left:0,right:0,bottom:0,w:3,h:3},renderedDimensions:function(){return{w:3,h:3}},renderedPosition:function(){return{x:0,y:0}},popper:{},cy:e},t)}e.exports={popper:function(e){return H(this,V(this,e))},popperRef:function(e){return n(this,V(this,e))}}},function(e,t,C){e.exports={getBoundingBox:function(e,t){var C=t.renderedPosition,i=t.cy,H=t.renderedDimensions,n=i.container().getBoundingClientRect(),V=H(e),r=C(e);return{top:r.y+n.top,left:r.x+n.left,right:r.x+V.w+n.left,bottom:r.y+V.h+n.top,width:V.w,height:V.h}}}},function(e,t,C){e.exports={getContent:function(e,t){var C=null;if("function"!=typeof t){if(t instanceof HTMLElement)return t;throw new Error("Can not create popper from 'target' with unknown type")}if(null===(C=t(e)))throw new Error("No 'target' specified to create popper");return C}}},function(e,t,C){var i=C(4),H=C(3),n=function(e){e&&(e("core","popper",i.popper),e("collection","popper",H.popper),e("core","popperRef",i.popperRef),e("collection","popperRef",H.popperRef))};"undefined"!=typeof cytoscape&&n(cytoscape),e.exports=n},function(t,C){t.exports=e}])},e.exports=C(ys)})),Ss=he(Zs),bs=function(e,t,C){this.source=e,this.target=t,this.type=C},ws=bs,xs=function(){function e(e,t,C,i){var H=this;if(this.linkAccessor=C,this.modules=new Array(e),this.roots=[],i)this.initModulesFromGroup(i);else{this.roots.push(new Ts);for(var n=0;n=this.R))return this.merge(t.a,t.b,e),!0}},e.prototype.nEdges=function(e,t){var C=e.incoming.intersection(t.incoming),i=e.outgoing.intersection(t.outgoing);return this.R-C.count()-i.count()},e.prototype.getGroupHierarchy=function(e){var t=this,C=[];return ks(this.roots[0],{},C),this.allEdges().forEach((function(i){var H=t.modules[i.source],n=t.modules[i.target];e.push(new bs(void 0===H.gid?i.source:C[H.gid],void 0===n.gid?i.target:C[n.gid],i.type))})),C},e.prototype.allEdges=function(){var t=[];return e.getEdges(this.roots[0],t),t},e.getEdges=function(t,C){t.forAll((function(t){t.getEdges(C),e.getEdges(t.children,C)}))},e}(),Os=xs;function ks(e,t,C){e.forAll((function(e){if(e.isLeaf())t.leaves||(t.leaves=[]),t.leaves.push(e.id);else{var i=t;if(e.gid=C.length,!e.isIsland()||e.isPredefined()){if(i={id:e.gid},e.isPredefined())for(var H in e.definition)i[H]=e.definition[H];t.groups||(t.groups=[]),t.groups.push(e.gid),C.push(i)}ks(e.children,i,C)}}))}var Es=function(){function e(e,t,C,i,H){void 0===t&&(t=new Bs),void 0===C&&(C=new Bs),void 0===i&&(i=new Ts),this.id=e,this.outgoing=t,this.incoming=C,this.children=i,this.definition=H}return e.prototype.getEdges=function(e){var t=this;this.outgoing.forAll((function(C,i){C.forAll((function(C){e.push(new bs(t.id,C.id,i))}))}))},e.prototype.isLeaf=function(){return 0===this.children.count()},e.prototype.isIsland=function(){return 0===this.outgoing.count()&&0===this.incoming.count()},e.prototype.isPredefined=function(){return void 0!==this.definition},e}(),Ps=Es;var Ts=function(){function e(){this.table={}}return e.prototype.count=function(){return Object.keys(this.table).length},e.prototype.intersection=function(t){var C=new e;return C.table=function(e,t){var C={};for(var i in e)i in t&&(C[i]=e[i]);return C}(this.table,t.table),C},e.prototype.intersectionCount=function(e){return this.intersection(e).count()},e.prototype.contains=function(e){return e in this.table},e.prototype.add=function(e){this.table[e.id]=e},e.prototype.remove=function(e){delete this.table[e.id]},e.prototype.forAll=function(e){for(var t in this.table)e(this.table[t])},e.prototype.modules=function(){var e=[];return this.forAll((function(t){t.isPredefined()||e.push(t)})),e},e}(),_s=Ts,Bs=function(){function e(){this.sets={},this.n=0}return e.prototype.count=function(){return this.n},e.prototype.contains=function(e){var t=!1;return this.forAllModules((function(C){t||C.id!=e||(t=!0)})),t},e.prototype.add=function(e,t){(e in this.sets?this.sets[e]:this.sets[e]=new Ts).add(t),++this.n},e.prototype.remove=function(e,t){var C=this.sets[e];C.remove(t),0===C.count()&&delete this.sets[e],--this.n},e.prototype.forAll=function(e){for(var t in this.sets)e(this.sets[t],Number(t))},e.prototype.forAllModules=function(e){this.forAll((function(t,C){return t.forAll(e)}))},e.prototype.intersection=function(t){var C=new e;return this.forAll((function(e,i){if(i in t.sets){var H=e.intersection(t.sets[i]),n=H.count();n>0&&(C.sets[i]=H,C.n+=n)}})),C},e}(),Ds=Bs;var Ns=function(e,t,C,i){for(var H=e.length,n=new xs(H,t,C,i);n.greedyMerge(););var V=[],r=n.getGroupHierarchy(V);return V.forEach((function(t){var C=function(C){var i=t[C];"number"==typeof i&&(t[C]=e[i])};C("source"),C("target")})),{groups:r,powerEdges:V}},Rs=Object.defineProperty({PowerEdge:ws,Configuration:Os,Module:Ps,ModuleSet:_s,LinkSets:Ds,getGroups:Ns},"__esModule",{value:!0});function Fs(e,t){var C={};for(var i in e)C[i]={};for(var i in t)C[i]={};return Object.keys(C).length}function Is(e,t){var C=0;for(var i in e)void 0!==t[i]&&++C;return C}function zs(e,t,C,i){var H=function(e,t){var C={},i=function(e,t){void 0===C[e]&&(C[e]={}),C[e][t]={}};return e.forEach((function(e){var C=t.getSourceIndex(e),H=t.getTargetIndex(e);i(C,H),i(H,C)})),C}(e,i);e.forEach((function(e){var n=H[i.getSourceIndex(e)],V=H[i.getTargetIndex(e)];i.setLength(e,1+t*C(n,V))}))}var js=function(e,t,C){void 0===C&&(C=1),zs(e,C,(function(e,t){return Math.sqrt(Fs(e,t)-Is(e,t))}),t)};var Gs=function(e,t,C){void 0===C&&(C=1),zs(e,C,(function(e,t){return Math.min(Object.keys(e).length,Object.keys(t).length)<1.1?0:Is(e,t)/Fs(e,t)}),t)};var Ws=function(e,t,C,i){var H=$s(e,t,i),n={};H.forEach((function(e,t){return e.forEach((function(e){return n[e]=t}))}));var V=[];return t.forEach((function(e){var t=i.getSourceIndex(e),H=i.getTargetIndex(e);n[t]!==n[H]&&V.push({axis:C,left:t,right:H,gap:i.getMinSeparation(e)})})),V};function $s(e,t,C){var i=[],H=0,n=[],V=[];function r(e){e.index=e.lowlink=H++,n.push(e),e.onStack=!0;for(var t=0,C=e.out;tn;){var V=t[n][H];V>0&&V1e-9)break;var l=this.offsetDir();for(i=0;i1&&d>u||!isFinite(u))for(i=0;i1&&(A=1);var c=u*u,h=2*A*(d-u)/(c*d),m=d*d*d,f=2*-A/(c*m);for(isFinite(h)||console.log(h),i=0;i0?Z-(w+1)*g:Z-(w-1)*g)&&s<=p&&(this.scaleSnapByMaxH?(this.g[i][L]+=r*v*s,this.H[i][L][L]+=r*v):(this.g[i][L]+=v*s,this.H[i][L][L]+=v))}this.locks.isEmpty()||this.locks.apply((function(C,H){for(i=0;i0;)for(var H=t;H-- >0;)C(i,H)},e.prototype.matrixApply=function(t){e.mApply(this.k,this.n,t)},e.prototype.computeNextPosition=function(e,t){var C=this;this.computeDerivatives(e);var i=this.computeStepSize(this.g);if(this.stepAndProject(e,t,this.g,i),this.project){this.matrixApply((function(i,H){return C.e[i][H]=e[i][H]-t[i][H]}));var H=this.computeStepSize(this.e);H=Math.max(.2,Math.min(H,1)),this.stepAndProject(e,t,this.e,H)}},e.prototype.run=function(e){for(var t=Number.MAX_VALUE,C=!1;!C&&e-- >0;){var i=this.rungeKutta();C=Math.abs(t/i-1)>16)/this.range},e.prototype.getNextBetween=function(e,t){return e+this.getNext()*(t-e)},e}(),el=Js,tl=Object.defineProperty({Locks:qs,Descent:Ks,PseudoRandom:el},"__esModule",{value:!0}),Cl=function(){function e(e){this.scale=e,this.AB=0,this.AD=0,this.A2=0}return e.prototype.addVariable=function(e){var t=this.scale/e.scale,C=e.offset/e.scale,i=e.weight;this.AB+=i*t*C,this.AD+=i*t*e.desiredPosition,this.A2+=i*t*t},e.prototype.getPosn=function(){return(this.AD-this.AB)/this.A2},e}(),il=Cl,Hl=function(){function e(e,t,C,i){void 0===i&&(i=!1),this.left=e,this.right=t,this.gap=C,this.equality=i,this.active=!1,this.unsatisfiable=!1,this.left=e,this.right=t,this.gap=C,this.equality=i}return e.prototype.slack=function(){return this.unsatisfiable?Number.MAX_VALUE:this.right.scale*this.right.position()-this.gap-this.left.scale*this.left.position()},e}(),nl=Hl,Vl=function(){function e(e,t,C){void 0===t&&(t=1),void 0===C&&(C=1),this.desiredPosition=e,this.weight=t,this.scale=C,this.offset=0}return e.prototype.dfdv=function(){return 2*this.weight*(this.position()-this.desiredPosition)},e.prototype.position=function(){return(this.block.ps.scale*this.block.posn+this.offset)/this.scale},e.prototype.visitNeighbours=function(e,t){var C=function(C,i){return C.active&&e!==i&&t(C,i)};this.cOut.forEach((function(e){return C(e,e.right)})),this.cIn.forEach((function(e){return C(e,e.left)}))},e}(),rl=Vl,Ll=function(){function e(e){this.vars=[],e.offset=0,this.ps=new Cl(e.scale),this.addVariable(e)}return e.prototype.addVariable=function(e){e.block=this,this.vars.push(e),this.ps.addVariable(e),this.posn=this.ps.getPosn()},e.prototype.updateWeightedPosition=function(){this.ps.AB=this.ps.AD=this.ps.A2=0;for(var e=0,t=this.vars.length;e=0?this.inactive.push(t):this.bs.merge(t)}}},e.prototype.solve=function(){this.satisfy();for(var e=Number.MAX_VALUE,t=this.bs.cost();Math.abs(e-t)>1e-4;)this.satisfy(),e=t,t=this.bs.cost();return t},e.LAGRANGIAN_TOLERANCE=-1e-4,e.ZERO_UPPERBOUND=-1e-10,e}(),ll=sl;var dl,ul=function(e,t,C){for(var i=e.map((function(e){return new Vl(e.desiredCenter)})),H=[],n=e.length,V=0;V0)}return null}}return e.prototype.clear=function(){this._root=null,this.size=0},e.prototype.find=function(e){for(var t=this._root;null!==t;){var C=this._comparator(e,t.data);if(0===C)return t.data;t=t.get_child(C>0)}return null},e.prototype.lowerBound=function(e){return this._bound(e,this._comparator)},e.prototype.upperBound=function(e){var t=this._comparator;return this._bound(e,(function(e,C){return t(C,e)}))},e.prototype.min=function(){var e=this._root;if(null===e)return null;for(;null!==e.left;)e=e.left;return e.data},e.prototype.max=function(){var e=this._root;if(null===e)return null;for(;null!==e.right;)e=e.right;return e.data},e.prototype.iterator=function(){return new fl(this)},e.prototype.each=function(e){for(var t,C=this.iterator();null!==(t=C.next());)e(t)},e.prototype.reach=function(e){for(var t,C=this.iterator();null!==(t=C.prev());)e(t)},e.prototype._bound=function(e,t){for(var C=this._root,i=this.iterator();null!==C;){var H=this._comparator(e,C.data);if(0===H)return i._cursor=C,i;i._ancestors.push(C),C=C.get_child(H>0)}for(var n=i._ancestors.length-1;n>=0;--n)if(t(e,(C=i._ancestors[n]).data)>0)return i._cursor=C,i._ancestors.length=n,i;return i._ancestors.length=0,i},e}(),ml=hl,fl=function(){function e(e){this._tree=e,this._ancestors=[],this._cursor=null}return e.prototype.data=function(){return null!==this._cursor?this._cursor.data:null},e.prototype.next=function(){if(null===this._cursor){var e=this._tree._root;null!==e&&this._minNode(e)}else{var t;if(null===this._cursor.right)do{if(t=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.right===t);else this._ancestors.push(this._cursor),this._minNode(this._cursor.right)}return null!==this._cursor?this._cursor.data:null},e.prototype.prev=function(){if(null===this._cursor){var e=this._tree._root;null!==e&&this._maxNode(e)}else{var t;if(null===this._cursor.left)do{if(t=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.left===t);else this._ancestors.push(this._cursor),this._maxNode(this._cursor.left)}return null!==this._cursor?this._cursor.data:null},e.prototype._minNode=function(e){for(;null!==e.left;)this._ancestors.push(e),e=e.left;this._cursor=e},e.prototype._maxNode=function(e){for(;null!==e.right;)this._ancestors.push(e),e=e.right;this._cursor=e},e}(),pl=fl,gl=function(){function e(e){this.data=e,this.left=null,this.right=null,this.red=!0}return e.prototype.get_child=function(e){return e?this.right:this.left},e.prototype.set_child=function(e,t){e?this.right=t:this.left=t},e}(),vl=function(e){function t(t){var C=e.call(this)||this;return C._root=null,C._comparator=t,C.size=0,C}return cl(t,e),t.prototype.insert=function(e){var C=!1;if(null===this._root)this._root=new gl(e),C=!0,this.size++;else{var i=new gl(void 0),H=!1,n=!1,V=null,r=i,L=null,o=this._root;for(r.right=this._root;;){if(null===o?(o=new gl(e),L.set_child(H,o),C=!0,this.size++):t.is_red(o.left)&&t.is_red(o.right)&&(o.red=!0,o.left.red=!1,o.right.red=!1),t.is_red(o)&&t.is_red(L)){var a=r.right===V;o===L.get_child(n)?r.set_child(a,t.single_rotate(V,!n)):r.set_child(a,t.double_rotate(V,!n))}var M=this._comparator(o.data,e);if(0===M)break;n=H,H=M<0,null!==V&&(r=V),V=L,L=o,o=o.get_child(H)}this._root=i.right}return this._root.red=!1,C},t.prototype.remove=function(e){if(null===this._root)return!1;var C=new gl(void 0),i=C;i.right=this._root;for(var H=null,n=null,V=null,r=!0;null!==i.get_child(r);){var L=r;n=H,H=i,i=i.get_child(r);var o=this._comparator(e,i.data);if(r=o>0,0===o&&(V=i),!t.is_red(i)&&!t.is_red(i.get_child(r)))if(t.is_red(i.get_child(!r))){var a=t.single_rotate(i,r);H.set_child(L,a),H=a}else if(!t.is_red(i.get_child(!r))){var M=H.get_child(!L);if(null!==M)if(t.is_red(M.get_child(!L))||t.is_red(M.get_child(L))){var s=n.right===H;t.is_red(M.get_child(L))?n.set_child(s,t.double_rotate(H,L)):t.is_red(M.get_child(!L))&&n.set_child(s,t.single_rotate(H,L));var l=n.get_child(s);l.red=!0,i.red=!0,l.left.red=!1,l.right.red=!1}else H.red=!1,M.red=!0,i.red=!0}}return null!==V&&(V.data=i.data,H.set_child(H.right===i,i.get_child(null===i.left)),this.size--),this._root=C.right,null!==this._root&&(this._root.red=!1),null!==V},t.is_red=function(e){return null!==e&&e.red},t.single_rotate=function(e,t){var C=e.get_child(!t);return e.set_child(!t,C.get_child(t)),C.set_child(t,e),e.red=!0,C.red=!1,C},t.double_rotate=function(e,C){return e.set_child(!C,t.single_rotate(e.get_child(!C),!C)),t.single_rotate(e,C)},t}(hl),yl=vl,Zl=Object.defineProperty({TreeBase:ml,Iterator:pl,RBTree:yl},"__esModule",{value:!0}),Sl=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}();function bl(e){return e.bounds=void 0!==e.leaves?e.leaves.reduce((function(e,t){return t.bounds.union(e)}),xl.empty()):xl.empty(),void 0!==e.groups&&(e.bounds=e.groups.reduce((function(e,t){return bl(t).union(e)}),e.bounds)),e.bounds=e.bounds.inflate(e.padding),e.bounds}var wl=bl,xl=function(){function e(e,t,C,i){this.x=e,this.X=t,this.y=C,this.Y=i}return e.empty=function(){return new e(Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY)},e.prototype.cx=function(){return(this.x+this.X)/2},e.prototype.cy=function(){return(this.y+this.Y)/2},e.prototype.overlapX=function(e){var t=this.cx(),C=e.cx();return t<=C&&e.x0?C[0]:null},e.prototype.vertices=function(){return[{x:this.x,y:this.y},{x:this.X,y:this.y},{x:this.X,y:this.Y},{x:this.x,y:this.Y}]},e.lineIntersection=function(e,t,C,i,H,n,V,r){var L=C-e,o=V-H,a=i-t,M=r-n,s=M*L-o*a;if(0==s)return null;var l=e-H,d=t-n,u=(o*d-M*l)/s,A=(L*d-a*l)/s;return u>=0&&u<=1&&A>=0&&A<=1?{x:e+u*L,y:t+u*a}:null},e.prototype.inflate=function(t){return new e(this.x-t,this.X+t,this.y-t,this.Y+t)},e}(),Ol=xl;var kl=function(e,t,C){var i=e.rayIntersection(t.cx(),t.cy())||{x:e.cx(),y:e.cy()},H=t.rayIntersection(e.cx(),e.cy())||{x:t.cx(),y:t.cy()},n=H.x-i.x,V=H.y-i.y,r=Math.sqrt(n*n+V*V),L=r-C;return{sourceIntersection:i,targetIntersection:H,arrowStart:{x:i.x+L*n/r,y:i.y+L*V/r}}};var El=function(e,t,C){var i=t.rayIntersection(e.x,e.y);i||(i={x:t.cx(),y:t.cy()});var H=i.x-e.x,n=i.y-e.y,V=Math.sqrt(H*H+n*n);return{x:i.x-C*H/V,y:i.y-C*n/V}},Pl=function(e,t,C){this.v=e,this.r=t,this.pos=C,this.prev=Bl(),this.next=Bl()},Tl=function(e,t,C){this.isOpen=e,this.v=t,this.pos=C};function _l(e,t){return e.pos>t.pos?1:e.pos0&&(e[C].insert(H),H[i].insert(e))};C("next","prev"),C("prev","next")}};function Rl(e,t,C,i){void 0===i&&(i=!1);var H=e.padding,n=void 0!==e.groups?e.groups.length:0,V=void 0!==e.leaves?e.leaves.length:0,r=n?e.groups.reduce((function(e,i){return e.concat(Rl(i,t,C,!0))}),[]):[],L=(i?2:0)+V+n,o=new Array(L),a=new Array(L),M=0,s=function(e,t){a[M]=e,o[M++]=t};if(i){var l=e.bounds,d=t.getCentre(l),u=t.getSize(l)/2,A=t.getOpen(l),c=t.getClose(l),h=d-u+H/2,m=d+u-H/2;e.minVar.desiredPosition=h,s(t.makeRect(A,c,h,H),e.minVar),e.maxVar.desiredPosition=m,s(t.makeRect(A,c,m,H),e.maxVar)}V&&e.leaves.forEach((function(e){return s(e.bounds,e.variable)})),n&&e.groups.forEach((function(e){var C=e.bounds;s(t.makeRect(t.getOpen(C),t.getClose(C),t.getCentre(C),t.getSize(C)),e.minVar)}));var f=Fl(a,o,t,C);return n&&(o.forEach((function(e){e.cOut=[],e.cIn=[]})),f.forEach((function(e){e.left.cOut.push(e),e.right.cIn.push(e)})),e.groups.forEach((function(e){var C=(e.padding-t.getSize(e.bounds))/2;e.minVar.cIn.forEach((function(e){return e.gap+=C})),e.minVar.cOut.forEach((function(t){t.left=e.maxVar,t.gap+=C}))}))),r.concat(f)}function Fl(e,t,C,i){var H,n=e.length,V=2*n;console.assert(t.length>=n);var r=new Array(V);for(H=0;He[C]&&(e[C]=t)}n=e}))}},e.prototype.createAlignment=function(e){var t=this,C=this.nodes[e.offsets[0].node].variable;this.makeFeasible(e);var i="x"===e.axis?this.xConstraints:this.yConstraints;e.offsets.slice(1).forEach((function(e){var H=t.nodes[e.node].variable;i.push(new Al.Constraint(C,H,e.offset,!0))}))},e.prototype.createConstraints=function(e){var t=this,C=function(e){return void 0===e.type||"separation"===e.type};this.xConstraints=e.filter((function(e){return"x"===e.axis&&C(e)})).map((function(e){return t.createSeparation(e)})),this.yConstraints=e.filter((function(e){return"y"===e.axis&&C(e)})).map((function(e){return t.createSeparation(e)})),e.filter((function(e){return"alignment"===e.type})).forEach((function(e){return t.createAlignment(e)}))},e.prototype.setupVariablesAndBounds=function(e,t,C,i){this.nodes.forEach((function(H,n){H.fixed?(H.variable.weight=H.fixedWeight?H.fixedWeight:1e3,C[n]=i(H)):H.variable.weight=1;var V=(H.width||0)/2,r=(H.height||0)/2,L=e[n],o=t[n];H.bounds=new xl(L-V,L+V,o-r,o+r)}))},e.prototype.xProject=function(e,t,C){(this.rootGroup||this.avoidOverlaps||this.xConstraints)&&this.project(e,t,e,C,(function(e){return e.px}),this.xConstraints,Wl,(function(e){return e.bounds.setXCentre(C[e.variable.index]=e.variable.position())}),(function(e){var t=C[e.minVar.index]=e.minVar.position(),i=C[e.maxVar.index]=e.maxVar.position(),H=e.padding/2;e.bounds.x=t-H,e.bounds.X=i+H}))},e.prototype.yProject=function(e,t,C){(this.rootGroup||this.yConstraints)&&this.project(e,t,t,C,(function(e){return e.py}),this.yConstraints,Ul,(function(e){return e.bounds.setYCentre(C[e.variable.index]=e.variable.position())}),(function(e){var t=C[e.minVar.index]=e.minVar.position(),i=C[e.maxVar.index]=e.maxVar.position(),H=e.padding/2;e.bounds.y=t-H,e.bounds.Y=i+H}))},e.prototype.projectFunctions=function(){var e=this;return[function(t,C,i){return e.xProject(t,C,i)},function(t,C,i){return e.yProject(t,C,i)}]},e.prototype.project=function(e,t,C,i,H,n,V,r,L){this.setupVariablesAndBounds(e,t,i,H),this.rootGroup&&this.avoidOverlaps&&(bl(this.rootGroup),n=n.concat(V(this.rootGroup))),this.solve(this.variables,n,C,i),this.nodes.forEach(r),this.rootGroup&&this.avoidOverlaps&&(this.groups.forEach(L),bl(this.rootGroup))},e.prototype.solve=function(e,t,C,i){var H=new Al.Solver(e,t);H.setStartingPositions(C),H.setDesiredPositions(i),H.solve()},e}(),Jl=Kl,ed=Object.defineProperty({computeGroupBounds:wl,Rectangle:Ol,makeEdgeBetween:kl,makeEdgeTo:El,generateXConstraints:zl,generateYConstraints:Gl,generateXGroupConstraints:$l,generateYGroupConstraints:Yl,removeOverlaps:Xl,IndexedVariable:Ql,Projection:Jl},"__esModule",{value:!0}),td=function(){function e(e){this.elem=e,this.subheaps=[]}return e.prototype.toString=function(e){for(var t="",C=!1,i=0;ia&&(L.d=a,L.prev=V,C.reduceKey(L.q,L,(function(e,t){return e.q=t})))}}return H},e}(),ad=od,Md=Object.defineProperty({Calculator:ad},"__esModule",{value:!0}),sd=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),ld=function(){},dd=ld,ud=function(e,t,C,i){this.x1=e,this.y1=t,this.x2=C,this.y2=i},Ad=ud,cd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return sd(t,e),t}(ld);function hd(e,t,C){return(t.x-e.x)*(C.y-e.y)-(C.x-e.x)*(t.y-e.y)}var md=hd;function fd(e,t,C){return hd(e,t,C)>0}function pd(e,t,C){return hd(e,t,C)<0}var gd=function(e){var t,C=e.slice(0).sort((function(e,t){return e.x!==t.x?t.x-e.x:t.y-e.y})),i=e.length,H=C[0].x;for(t=1;t=0&&C[t].x===o;t--);for(r=t+1,t=n;++t<=r;)if(!(hd(C[0],C[r],C[t])>=0&&t1&&!(hd(V[V.length-2],V[V.length-1],C[t])>0);)V.length-=1;0!=t&&V.push(C[t])}L!=r&&V.push(C[L]);var a=V.length;for(t=r;--t>=n;)if(!(hd(C[L],C[n],C[t])>=0&&t>n)){for(;V.length>a&&!(hd(V[V.length-2],V[V.length-1],C[t])>0);)V.length-=1;0!=t&&V.push(C[t])}}return V};var vd=function(e,t,C){t.slice(0).sort((function(t,C){return Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(C.y-e.y,C.x-e.x)})).forEach(C)};function yd(e,t){var C,i,H,n,V=t.length-1;if(pd(e,t[1],t[0])&&!fd(e,t[V-1],t[0]))return 0;for(C=0,i=V;;){if(i-C==1)return fd(e,t[C],t[i])?C:i;if((n=pd(e,t[(H=Math.floor((C+i)/2))+1],t[H]))&&!fd(e,t[H-1],t[H]))return H;fd(e,t[C+1],t[C])?n||fd(e,t[C],t[H])?i=H:C=H:n&&pd(e,t[C],t[H])?i=H:C=H}}function Zd(e,t){var C,i,H,n,V=t.length-1;if(fd(e,t[V-1],t[0])&&!pd(e,t[1],t[0]))return 0;for(C=0,i=V;;){if(i-C==1)return pd(e,t[C],t[i])?C:i;if(n=pd(e,t[(H=Math.floor((C+i)/2))+1],t[H]),fd(e,t[H-1],t[H])&&!n)return H;pd(e,t[C+1],t[C])?n?pd(e,t[C],t[H])?i=H:C=H:i=H:n?C=H:fd(e,t[C],t[H])?i=H:C=H}}function Sd(e,t,C,i,H,n){var V,r;r=i(e[V=C(t[0],e)],t);for(var L=!1;!L;){for(L=!0;V===e.length-1&&(V=0),!H(t[r],e[V],e[V+1]);)++V;for(;0===r&&(r=t.length-1),!n(e[V],t[r],t[r-1]);)--r,L=!1}return{t1:V,t2:r}}var bd=Sd;var wd=function(e,t){var C=xd(t,e);return{t1:C.t2,t2:C.t1}};function xd(e,t){return Sd(e,t,yd,Zd,fd,pd)}var Od=xd;var kd=function(e,t){return Sd(e,t,Zd,Zd,pd,pd)};var Ed=function(e,t){return Sd(e,t,yd,yd,fd,fd)},Pd=function(e,t){this.t1=e,this.t2=t},Td=Pd,_d=function(){},Bd=_d,Dd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return sd(t,e),t}(ld),Nd=function(e,t,C,i){this.id=e,this.polyid=t,this.polyvertid=C,this.p=i,i.vv=this},Rd=Nd,Fd=function(){function e(e,t){this.source=e,this.target=t}return e.prototype.length=function(){var e=this.source.p.x-this.target.p.x,t=this.source.p.y-this.target.p.y;return Math.sqrt(e*e+t*t)},e}(),Id=Fd,zd=function(){function e(e,t){if(this.P=e,this.V=[],this.E=[],t)this.V=t.V.slice(0),this.E=t.E.slice(0);else{for(var C=e.length,i=0;i0&&this.E.push(new Fd(H[n-1].vv,r))}H.length>1&&this.E.push(new Fd(H[0].vv,H[H.length-1].vv))}for(i=0;i0)return!0;return!1},e}(),jd=zd;function Gd(e,t){for(var C=[],i=1,H=t.length;i=0&&d>=0&&u<0&&A>=0&&c>=0&&h<0?H.ll=new Pd(n,V):l<=0&&d<=0&&u>0&&A<=0&&c<=0&&h>0?H.rr=new Pd(n,V):l<=0&&d>0&&u<=0&&A>=0&&c<0&&h>=0?H.rl=new Pd(n,V):l>=0&&d<0&&u>=0&&A<=0&&c>0&&h<=0&&(H.lr=new Pd(n,V))}return H}var $d=Wd;function Ud(e,t){return!e.every((function(e){return!function(e,t){for(var C=1,i=t.length;C0)return!0}return!1},Xd=Object.defineProperty({Point:dd,LineSegment:Ad,PolyPoint:cd,isLeft:md,ConvexHull:gd,clockwiseRadialSweep:vd,tangent_PolyPolyC:bd,LRtangent_PolyPolyC:wd,RLtangent_PolyPolyC:Od,LLtangent_PolyPolyC:kd,RRtangent_PolyPolyC:Ed,BiTangent:Td,BiTangents:Bd,TVGPoint:Dd,VisibilityVertex:Rd,VisibilityEdge:Id,TangentVisibilityGraph:jd,tangents:$d,polysOverlap:Yd},"__esModule",{value:!0}),qd=10,Qd=(1+Math.sqrt(5))/2,Kd=1e-4;var Jd=function(e,t,C,i,H,n){void 0===H&&(H=1),void 0===n&&(n=!0);var V=t,r=C,L=(H=void 0!==H?H:1,i=void 0!==i?i:0,0),o=0,a=0,M=0,s=[];function l(e,t){s=[],L=0,o=0,M=0;for(var C=0;C=e.height&&s[i].x+s[i].width+e.width+qd-t<=Kd){C=s[i];break}s.push(e),void 0!==C?(e.x=C.x+C.width+qd,e.y=C.bottom,e.space_left=e.height,e.bottom=e.y,C.space_left-=e.height+qd,C.bottom+=e.height+qd):(e.y=M,M+=e.height+qd,e.x=0,e.bottom=e.y,e.space_left=e.height),e.y+e.height-o>-Kd&&(o=e.y+e.height-0),e.x+e.width-L>-Kd&&(L=e.x+e.width-0)}0!=e.length&&(function(e){e.forEach((function(e){!function(e){var t=Number.MAX_VALUE,C=Number.MAX_VALUE,H=0,n=0;e.array.forEach((function(e){var V=void 0!==e.width?e.width:i,r=void 0!==e.height?e.height:i;V/=2,r/=2,H=Math.max(e.x+V,H),t=Math.min(e.x-V,t),n=Math.max(e.y+r,n),C=Math.min(e.y-r,C)})),e.width=H-t,e.height=n-C}(e)}))}(e),function(e,t){var C=Number.POSITIVE_INFINITY,i=0;e.sort((function(e,t){return t.height-e.height})),a=e.reduce((function(e,t){return e.widtha||s>Kd;){if(1!=o){var d=n-(n-H)/Qd;r=l(e,d)}if(0!=o){var u=H+(n-H)/Qd;L=l(e,u)}if(M=Math.abs(d-u),s=Math.abs(r-L),rL?(H=d,d=u,r=L,o=1):(n=u,u=d,L=r,o=0),V++>100)break}l(e,i)}(e),n&&function(e){e.forEach((function(e){var t={x:0,y:0};e.array.forEach((function(e){t.x+=e.x,t.y+=e.y})),t.x/=e.array.length,t.y/=e.array.length;var C={x:t.x-e.width/2,y:t.y-e.height/2},i={x:e.x-C.x+V/2-L/2,y:e.y-C.y+r/2-o/2};e.array.forEach((function(e){e.x+=i.x,e.y+=i.y}))}))}(e))};var eu=function(e,t){for(var C={},i={},H=[],n=0,V=0;V0){var t=0;this._links.forEach((function(e){t=Math.max(t,e.source,e.target)})),this._nodes=new Array(++t);for(var C=0;C0?e:0:e>0&&(this._running||(this._running=!0,this.trigger({type:C.start,alpha:this._alpha=e}),this.kick())),this):this._alpha},e.prototype.getLinkLength=function(e){return"function"==typeof this._linkDistance?+this._linkDistance(e):this._linkDistance},e.setLinkLength=function(e,t){e.length=t},e.prototype.getLinkType=function(e){return"function"==typeof this._linkType?this._linkType(e):0},e.prototype.symmetricDiffLinkLengths=function(e,t){var C=this;return void 0===t&&(t=1),this.linkDistance((function(t){return e*t.length})),this._linkLengthCalculator=function(){return Ys.symmetricDiffLinkLengths(C._links,C.linkAccessor,t)},this},e.prototype.jaccardLinkLengths=function(e,t){var C=this;return void 0===t&&(t=1),this.linkDistance((function(t){return e*t.length})),this._linkLengthCalculator=function(){return Ys.jaccardLinkLengths(C._links,C.linkAccessor,t)},this},e.prototype.start=function(t,C,i,H,n,V){var r=this;void 0===t&&(t=0),void 0===C&&(C=0),void 0===i&&(i=0),void 0===H&&(H=0),void 0===n&&(n=!0),void 0===V&&(V=!0);var L=this.nodes().length,o=L+2*this._groups.length;this._links.length;var a,M=this._canvasSize[0],s=this._canvasSize[1],l=new Array(o),d=new Array(o),u=null,A=this._avoidOverlaps;this._nodes.forEach((function(e,t){e.index=t,void 0===e.x&&(e.x=M/2,e.y=s/2),l[t]=e.x,d[t]=e.y})),this._linkLengthCalculator&&this._linkLengthCalculator(),this._distanceMatrix?a=this._distanceMatrix:(a=new Md.Calculator(o,this._links,e.getSourceIndex,e.getTargetIndex,(function(e){return r.getLinkLength(e)})).DistanceMatrix(),u=tl.Descent.createSquareMatrix(o,(function(){return 2})),this._links.forEach((function(e){"number"==typeof e.source&&(e.source=r._nodes[e.source]),"number"==typeof e.target&&(e.target=r._nodes[e.target])})),this._links.forEach((function(t){var C=e.getSourceIndex(t),i=e.getTargetIndex(t);u[C][i]=u[i][C]=t.weight||1})));var c=tl.Descent.createSquareMatrix(o,(function(e,t){return a[e][t]}));if(this._rootGroup&&void 0!==this._rootGroup.groups){var h=L;this._groups.forEach((function(e){!function(e,t,C,i){u[e][t]=u[t][e]=C,c[e][t]=c[t][e]=i}(h,h+1,r._groupCompactness,.1),l[h]=0,d[h++]=0,l[h]=0,d[h++]=0}))}else this._rootGroup={leaves:this._nodes,groups:[]};var m=this._constraints||[];this._directedLinkConstraints&&(this.linkAccessor.getMinSeparation=this._directedLinkConstraints.getMinSeparation,m=m.concat(Ys.generateDirectedEdgeConstraints(L,this._links,this._directedLinkConstraints.axis,this.linkAccessor))),this.avoidOverlaps(!1),this._descent=new tl.Descent([l,d],c),this._descent.locks.clear();for(h=0;h0&&(this._descent.project=new ed.Projection(this._nodes,this._groups,this._rootGroup,m).projectFunctions()),this._descent.run(C),this.separateOverlappingComponents(M,s,V),this.avoidOverlaps(A),A&&(this._nodes.forEach((function(e,t){e.x=l[t],e.y=d[t]})),this._descent.project=new ed.Projection(this._nodes,this._groups,this._rootGroup,m,!0).projectFunctions(),this._nodes.forEach((function(e,t){l[t]=e.x,d[t]=e.y}))),this._descent.G=u,this._descent.run(i),H){this._descent.snapStrength=1e3,this._descent.snapGridSize=this._nodes[0].width,this._descent.numGridSnapNodes=L,this._descent.scaleSnapByMaxH=L!=o;var g=tl.Descent.createSquareMatrix(o,(function(e,t){return e>=L||t>=L?u[e][t]:0}));this._descent.G=g,this._descent.run(H)}return this.updateNodePositions(),this.separateOverlappingComponents(M,s,V),n?this.resume():this},e.prototype.initialLayout=function(t,C,i){if(this._groups.length>0&&t>0){var H=this._nodes.length,n=this._links.map((function(e){return{source:e.source.index,target:e.target.index}})),V=this._nodes.map((function(e){return{index:e.index}}));this._groups.forEach((function(e,t){V.push({index:e.index=H+t})})),this._groups.forEach((function(e,t){void 0!==e.leaves&&e.leaves.forEach((function(t){return n.push({source:e.index,target:t.index})})),void 0!==e.groups&&e.groups.forEach((function(t){return n.push({source:e.index,target:t.index})}))})),(new e).size(this.size()).nodes(V).links(n).avoidOverlaps(!1).linkDistance(this.linkDistance()).symmetricDiffLinkLengths(5).convergenceThreshold(1e-4).start(t,0,0,0,!1),this._nodes.forEach((function(e){C[e.index]=V[e.index].x,i[e.index]=V[e.index].y}))}else this._descent.run(t)},e.prototype.separateOverlappingComponents=function(e,t,C){var i=this;if(void 0===C&&(C=!0),!this._distanceMatrix&&this._handleDisconnected){var H=this._descent.x[0],n=this._descent.x[1];this._nodes.forEach((function(e,t){e.x=H[t],e.y=n[t]}));var V=tu.separateGraphs(this._nodes,this._links);tu.applyPacking(V,e,t,this._defaultNodeSize,1,C),this._nodes.forEach((function(e,t){i._descent.x[0][t]=e.x,i._descent.x[1][t]=e.y,e.bounds&&(e.bounds.setXCentre(e.x),e.bounds.setYCentre(e.y))}))}},e.prototype.resume=function(){return this.alpha(.1)},e.prototype.stop=function(){return this.alpha(0)},e.prototype.prepareEdgeRouting=function(e){void 0===e&&(e=0),this._visibilityGraph=new Xd.TangentVisibilityGraph(this._nodes.map((function(t){return t.bounds.inflate(-e).vertices()})))},e.prototype.routeEdge=function(e,t,C){void 0===t&&(t=5);var i=[],H=new Xd.TangentVisibilityGraph(this._visibilityGraph.P,{V:this._visibilityGraph.V,E:this._visibilityGraph.E}),n={x:e.source.x,y:e.source.y},V={x:e.target.x,y:e.target.y},r=H.addPoint(n,e.source.index),L=H.addPoint(V,e.target.index);H.addEdgeIfVisible(n,V,e.source.index,e.target.index),void 0!==C&&C(H);var o=new Md.Calculator(H.V.length,H.E,(function(e){return e.source.id}),(function(e){return e.target.id}),(function(e){return e.length()})).PathFromNodeToNode(r.id,L.id);if(1===o.length||o.length===H.V.length){var a=ed.makeEdgeBetween(e.source.innerBounds,e.target.innerBounds,t);i=[a.sourceIntersection,a.arrowStart]}else{for(var M=o.length-2,s=H.V[o[M]].p,l=H.V[o[0]].p,d=(i=[e.source.innerBounds.rayIntersection(s.x,s.y)],M);d>=0;--d)i.push(H.V[o[d]].p);i.push(ed.makeEdgeTo(l,e.target.innerBounds,t))}return i},e.getSourceIndex=function(e){return"number"==typeof e.source?e.source:e.source.index},e.getTargetIndex=function(e){return"number"==typeof e.target?e.target:e.target.index},e.linkId=function(t){return e.getSourceIndex(t)+"-"+e.getTargetIndex(t)},e.dragStart=function(t){i(t)?e.storeOffset(t,e.dragOrigin(t)):(e.stopNode(t),t.fixed|=2)},e.stopNode=function(e){e.px=e.x,e.py=e.y},e.storeOffset=function(t,C){void 0!==t.leaves&&t.leaves.forEach((function(t){t.fixed|=2,e.stopNode(t),t._dragGroupOffsetX=t.x-C.x,t._dragGroupOffsetY=t.y-C.y})),void 0!==t.groups&&t.groups.forEach((function(t){return e.storeOffset(t,C)}))},e.dragOrigin=function(e){return i(e)?{x:e.bounds.cx(),y:e.bounds.cy()}:e},e.drag=function(t,C){i(t)?(void 0!==t.leaves&&t.leaves.forEach((function(e){t.bounds.setXCentre(C.x),t.bounds.setYCentre(C.y),e.px=e._dragGroupOffsetX+C.x,e.py=e._dragGroupOffsetY+C.y})),void 0!==t.groups&&t.groups.forEach((function(t){return e.drag(t,C)}))):(t.px=C.x,t.py=C.y)},e.dragEnd=function(t){i(t)?(void 0!==t.leaves&&t.leaves.forEach((function(t){e.dragEnd(t),delete t._dragGroupOffsetX,delete t._dragGroupOffsetY})),void 0!==t.groups&&t.groups.forEach(e.dragEnd)):t.fixed&=-7},e.mouseOver=function(e){e.fixed|=4,e.px=e.x,e.py=e.y},e.mouseOut=function(e){e.fixed&=-5},e}();t.Layout=H})),iu=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),Hu=function(e){function t(t){var C=e.call(this)||this,i=t;return i.trigger&&(C.trigger=i.trigger),i.kick&&(C.kick=i.kick),i.drag&&(C.drag=i.drag),i.on&&(C.on=i.on),C.dragstart=C.dragStart=Cu.Layout.dragStart,C.dragend=C.dragEnd=Cu.Layout.dragEnd,C}return iu(t,e),t.prototype.trigger=function(e){},t.prototype.kick=function(){},t.prototype.drag=function(){},t.prototype.on=function(e,t){return this},t}(Cu.Layout),nu=Hu;var Vu=function(e){return new Hu(e)},ru=Object.defineProperty({LayoutAdaptor:nu,adaptor:Vu},"__esModule",{value:!0}),Lu=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),ou=function(e){function t(){var t=e.call(this)||this;t.event=d3.dispatch(Cu.EventType[Cu.EventType.start],Cu.EventType[Cu.EventType.tick],Cu.EventType[Cu.EventType.end]);var C=t;return t.drag=function(){if(!e)var e=d3.behavior.drag().origin(Cu.Layout.dragOrigin).on("dragstart.d3adaptor",Cu.Layout.dragStart).on("drag.d3adaptor",(function(e){Cu.Layout.drag(e,d3.event),C.resume()})).on("dragend.d3adaptor",Cu.Layout.dragEnd);if(!arguments.length)return e;this.call(e)},t}return Lu(t,e),t.prototype.trigger=function(e){var t={type:Cu.EventType[e.type],alpha:e.alpha,stress:e.stress};this.event[t.type](t)},t.prototype.kick=function(){var t=this;d3.timer((function(){return e.prototype.tick.call(t)}))},t.prototype.on=function(e,t){return"string"==typeof e?this.event.on(e,t):this.event.on(Cu.EventType[e],t),this},t}(Cu.Layout),au=ou;var Mu=function(){return new ou},su=Object.defineProperty({D3StyleLayoutAdaptor:au,d3adaptor:Mu},"__esModule",{value:!0}),lu=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),du=function(e){function t(t){var C=e.call(this)||this;C.d3Context=t,C.event=t.dispatch(Cu.EventType[Cu.EventType.start],Cu.EventType[Cu.EventType.tick],Cu.EventType[Cu.EventType.end]);var i=C;return C.drag=function(){if(!e)var e=t.drag().subject(Cu.Layout.dragOrigin).on("start.d3adaptor",Cu.Layout.dragStart).on("drag.d3adaptor",(function(e){Cu.Layout.drag(e,t.event),i.resume()})).on("end.d3adaptor",Cu.Layout.dragEnd);if(!arguments.length)return e;arguments[0].call(e)},C}return lu(t,e),t.prototype.trigger=function(e){var t={type:Cu.EventType[e.type],alpha:e.alpha,stress:e.stress};this.event.call(t.type,t)},t.prototype.kick=function(){var t=this,C=this.d3Context.timer((function(){return e.prototype.tick.call(t)&&C.stop()}))},t.prototype.on=function(e,t){return"string"==typeof e?this.event.on(e,t):this.event.on(Cu.EventType[e],t),this},t}(Cu.Layout),uu=Object.defineProperty({D3StyleLayoutAdaptor:du},"__esModule",{value:!0});var Au=function(e){return!e||function(e){var t=/^3\./;return e.version&&null!==e.version.match(t)}(e)?new su.D3StyleLayoutAdaptor:new uu.D3StyleLayoutAdaptor(e)};var cu=Object.defineProperty({d3adaptor:Au},"__esModule",{value:!0}),hu=function(e,t,C){this.id=e,this.rect=t,this.children=C,this.leaf=void 0===C||0===C.length},mu=hu,fu=function(e,t,C,i,H){void 0===i&&(i=null),void 0===H&&(H=null),this.id=e,this.x=t,this.y=C,this.node=i,this.line=H},pu=fu,gu=function(){function e(t,C){this.s=t,this.t=C;var i=e.findMatch(t,C),H=C.slice(0).reverse(),n=e.findMatch(t,H);i.length>=n.length?(this.length=i.length,this.si=i.si,this.ti=i.ti,this.reversed=!1):(this.length=n.length,this.si=n.si,this.ti=C.length-n.ti-n.length,this.reversed=!0)}return e.findMatch=function(e,t){for(var C=e.length,i=t.length,H={length:0,si:-1,ti:-1},n=new Array(C),V=0;VH.length&&(H.length=L,H.si=V-L+1,H.ti=r-L+1)}else n[V][r]=0}return H},e.prototype.getSequence=function(){return this.length>=0?this.s.slice(this.si,this.si+this.length):[]},e}(),vu=gu,yu=function(){function e(e,t,C){var i=this;void 0===C&&(C=12),this.originalnodes=e,this.groupPadding=C,this.leaves=null,this.nodes=e.map((function(e,C){return new hu(C,t.getBounds(e),t.getChildren(e))})),this.leaves=this.nodes.filter((function(e){return e.leaf})),this.groups=this.nodes.filter((function(e){return!e.leaf})),this.cols=this.getGridLines("x"),this.rows=this.getGridLines("y"),this.groups.forEach((function(e){return e.children.forEach((function(t){return i.nodes[t].parent=e}))})),this.root={children:[]},this.nodes.forEach((function(e){void 0===e.parent&&(e.parent=i.root,i.root.children.push(e.id)),e.ports=[]})),this.backToFront=this.nodes.slice(0),this.backToFront.sort((function(e,t){return i.getDepth(e)-i.getDepth(t)})),this.backToFront.slice(0).reverse().filter((function(e){return!e.leaf})).forEach((function(e){var t=ed.Rectangle.empty();e.children.forEach((function(e){return t=t.union(i.nodes[e].rect)})),e.rect=t.inflate(i.groupPadding)}));var H=this.midPoints(this.cols.map((function(e){return e.pos}))),n=this.midPoints(this.rows.map((function(e){return e.pos}))),V=H[0],r=H[H.length-1],L=n[0],o=n[n.length-1],a=this.rows.map((function(e){return{x1:V,x2:r,y1:e.pos,y2:e.pos}})).concat(n.map((function(e){return{x1:V,x2:r,y1:e,y2:e}}))),M=this.cols.map((function(e){return{x1:e.pos,x2:e.pos,y1:L,y2:o}})).concat(H.map((function(e){return{x1:e,x2:e,y1:L,y2:o}}))),s=a.concat(M);s.forEach((function(e){return e.verts=[]})),this.verts=[],this.edges=[],a.forEach((function(e){return M.forEach((function(t){var C=new fu(i.verts.length,t.x1,e.y1);e.verts.push(C),t.verts.push(C),i.verts.push(C);for(var H=i.backToFront.length;H-- >0;){var n=i.backToFront[H],V=n.rect,r=Math.abs(C.x-V.cx()),L=Math.abs(C.y-V.cy());if(r0;){var i=C.filter((function(t){return t.rect["overlap"+e.toUpperCase()](C[0].rect)})),H={nodes:i,pos:this.avg(i.map((function(t){return t.rect["c"+e]()})))};t.push(H),H.nodes.forEach((function(e){return C.splice(C.indexOf(e),1)}))}return t.sort((function(e,t){return e.pos-t.pos})),t},e.prototype.getDepth=function(e){for(var t=0;e.parent!==this.root;)t++,e=e.parent;return t},e.prototype.midPoints=function(e){for(var t=e[1]-e[0],C=[e[0]-t/2],i=1;i.1)&&(o={pos:M[0][t],segments:[]},L.push(o)),o.segments.push(M)}return L},e.nudgeSegs=function(e,t,C,i,H,n){var V=i.length;if(!(V<=1)){for(var r=i.map((function(t){return new Al.Variable(t[0][e])})),L=[],o=0;o=0&&L.push(new Al.Constraint(r[u],r[A],n))}new Al.Solver(r,L).solve(),r.forEach((function(t,H){var n=i[H],V=t.position();n[0][e]=n[1][e]=V;var r=C[n.edgeid];n.i>0&&(r[n.i-1][1][e]=V),n.iMath.PI||H<-Math.PI)&&(H=i-C),H},e.isLeft=function(e,t,C){return(t.x-e.x)*(C.y-e.y)-(t.y-e.y)*(C.x-e.x)<=0},e.getOrder=function(e){for(var t={},C=0;C=L.length||a.ti+a.length>=o.length)?C.push({l:i,r:H}):(a.si+a.length>=L.length||a.ti+a.length>=o.length?(n=L[a.si+1],r=L[a.si-1],V=o[a.ti-1]):(n=L[a.si+a.length-2],V=L[a.si+a.length],r=o[a.ti+a.length]),e.isLeft(n,V,r)?C.push({l:H,r:i}):C.push({l:i,r:H})))}return e.getOrder(C)},e.makeSegments=function(e){function t(e){return{x:e.x,y:e.y}}for(var C=function(e,t,C){return Math.abs((t.x-e.x)*(C.y-e.y)-(t.y-e.y)*(C.x-e.x))<.001},i=[],H=t(e[0]),n=1;n1&&a>1?1e3:0})),a=o.reverse().map((function(e){return C.verts[e]}));return a.push(this.nodes[H.id].ports[0]),a.filter((function(e,t){return!(t0&&e.node===H&&a[t-1].node===H)}))},e.getRoutePath=function(t,C,i,H){var n={routepath:"M "+t[0][0].x+" "+t[0][0].y+" ",arrowpath:""};if(t.length>1)for(var V=0;V0?r-=o/Math.abs(o)*C:L-=a/Math.abs(a)*C,n.routepath+="L "+r+" "+L+" ";var M=t[V+1],s=M[0].x,l=M[0].y;o=M[1].x-s,a=M[1].y-l;var d,u,A=e.angleBetween2Lines(f,M)<0?1:0;Math.abs(o)>0?(d=s+o/Math.abs(o)*C,u=l):(d=s,u=l+a/Math.abs(a)*C);var c=Math.abs(d-r),h=Math.abs(u-L);n.routepath+="A "+c+" "+h+" 0 0 "+A+" "+d+" "+u+" "}else{var m=[r,L];Math.abs(o)>0?(p=[r-=o/Math.abs(o)*H,L+i],g=[r,L-i]):(p=[r+i,L-=a/Math.abs(a)*H],g=[r-i,L]),n.routepath+="L "+r+" "+L+" ",H>0&&(n.arrowpath="M "+m[0]+" "+m[1]+" L "+p[0]+" "+p[1]+" L "+g[0]+" "+g[1])}}else{var f,p,g;r=(f=t[0])[1].x,L=f[1].y,o=r-f[0].x,a=L-f[0].y,m=[r,L];Math.abs(o)>0?(p=[r-=o/Math.abs(o)*H,L+i],g=[r,L-i]):(p=[r+i,L-=a/Math.abs(a)*H],g=[r-i,L]),n.routepath+="L "+r+" "+L+" ",H>0&&(n.arrowpath="M "+m[0]+" "+m[1]+" L "+p[0]+" "+p[1]+" L "+g[0]+" "+g[1])}return n},e}(),Zu=yu,Su=Object.defineProperty({NodeWrapper:mu,Vert:pu,LongestCommonSubsequence:vu,GridRouter:Zu},"__esModule",{value:!0}),bu=function(){function e(e,t){this.source=e,this.target=t}return e.prototype.actualLength=function(e){var t=this;return Math.sqrt(e.reduce((function(e,C){var i=C[t.target]-C[t.source];return e+i*i}),0))},e}(),wu=function(e,t,C){void 0===e&&(e=0),void 0===t&&(t=0),void 0===C&&(C=0),this.x=e,this.y=t,this.z=C},xu=function(){function e(t,C,i){var H=this;void 0===i&&(i=1),this.nodes=t,this.links=C,this.idealLinkLength=i,this.constraints=null,this.useJaccardLinkLengths=!0,this.result=new Array(e.k);for(var n=0;n0&&f.constraints(Z),f.groups(l.map((function(e,C){var i=a(t.nodeSpacing,e),H=function(t){return parseFloat(e.style("padding-"+t))},n=H("left")+i,V=H("right")+i,r=H("top")+i,L=H("bottom")+i;return e.scratch().cola={index:C,padding:Math.max(n,V,r,L),leaves:e.children().intersection(d).map((function(e){return e[0].scratch().cola.index})),fixed:e.locked()},e})).map((function(e){return e.scratch().cola.groups=e.children().intersection(l).map((function(e){return e.scratch().cola.index})),e.scratch().cola})));var S,b=void 0,w=void 0;if(null!=t.edgeLength?(b=t.edgeLength,w="linkDistance"):null!=t.edgeSymDiffLength?(b=t.edgeSymDiffLength,w="symmetricDiffLinkLengths"):null!=t.edgeJaccardLength?(b=t.edgeJaccardLength,w="jaccardLinkLengths"):(b=100,w="linkDistance"),f.links(M.stdFilter((function(e){return d.contains(e.source())&&d.contains(e.target())})).map((function(e){var t=e.scratch().cola={source:e.source()[0].scratch().cola.index,target:e.target()[0].scratch().cola.index};return null!=b&&(t.calcLength=a(b,e)),t}))),f.size([u.w,u.h]),null!=b&&f[w]((function(e){return e.calcLength})),t.flow){var x=void 0;(void 0===(S=t.flow)?"undefined":i(S))===i("")?x={axis:t.flow,minSeparation:50}:L(t.flow)?x={axis:"y",minSeparation:t.flow}:function(e){return null!=e&&(void 0===e?"undefined":i(e))===i({})}(t.flow)?((x=t.flow).axis=x.axis||"y",x.minSeparation=null!=x.minSeparation?x.minSeparation:50):x={axis:"y",minSeparation:50},f.flowLayout(x.axis,x.minSeparation)}return e.trigger({type:"layoutstart",layout:e}),f.avoidOverlaps(t.avoidOverlap).handleDisconnected(t.handleDisconnected).start(t.unconstrIter,t.userConstIter,t.allConstIter,void 0,void 0,t.centerGraph),t.infinite||setTimeout((function(){e.manuallyStopped||f.stop()}),t.maxSimulationTime),this},M.prototype.stop=function(){return this.adaptor&&(this.manuallyStopped=!0,this.adaptor.stop()),this},e.exports=M},function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;it&&(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)),this.labelHeight>C&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-C)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-C),this.setHeight(this.labelHeight))}}},o.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==H.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},o.prototype.transform=function(e){var t=this.rect.x;t>V.WORLD_BOUNDARY?t=V.WORLD_BOUNDARY:t<-V.WORLD_BOUNDARY&&(t=-V.WORLD_BOUNDARY);var C=this.rect.y;C>V.WORLD_BOUNDARY?C=V.WORLD_BOUNDARY:C<-V.WORLD_BOUNDARY&&(C=-V.WORLD_BOUNDARY);var i=new L(t,C),H=e.inverseTransformPoint(i);this.setLocation(H.x,H.y)},o.prototype.getLeft=function(){return this.rect.x},o.prototype.getRight=function(){return this.rect.x+this.rect.width},o.prototype.getTop=function(){return this.rect.y},o.prototype.getBottom=function(){return this.rect.y+this.rect.height},o.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},e.exports=o},function(e,t,C){function i(e,t){null==e&&null==t?(this.x=0,this.y=0):(this.x=e,this.y=t)}i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.setX=function(e){this.x=e},i.prototype.setY=function(e){this.y=e},i.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},i.prototype.getCopy=function(){return new i(this.x,this.y)},i.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=i},function(e,t,C){var i=C(2),H=C(10),n=C(0),V=C(6),r=C(3),L=C(1),o=C(13),a=C(12),M=C(11);function s(e,t,C){i.call(this,C),this.estimatedSize=H.MIN_VALUE,this.margin=n.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,null!=t&&t instanceof V?this.graphManager=t:null!=t&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var l in s.prototype=Object.create(i.prototype),i)s[l]=i[l];s.prototype.getNodes=function(){return this.nodes},s.prototype.getEdges=function(){return this.edges},s.prototype.getGraphManager=function(){return this.graphManager},s.prototype.getParent=function(){return this.parent},s.prototype.getLeft=function(){return this.left},s.prototype.getRight=function(){return this.right},s.prototype.getTop=function(){return this.top},s.prototype.getBottom=function(){return this.bottom},s.prototype.isConnected=function(){return this.isConnected},s.prototype.add=function(e,t,C){if(null==t&&null==C){var i=e;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(i)>-1)throw"Node already in graph!";return i.owner=this,this.getNodes().push(i),i}var H=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(C)>-1))throw"Source or target not in graph!";if(t.owner!=C.owner||t.owner!=this)throw"Both owners must be this graph!";return t.owner!=C.owner?null:(H.source=t,H.target=C,H.isInterGraph=!1,this.getEdges().push(H),t.edges.push(H),C!=t&&C.edges.push(H),H)},s.prototype.remove=function(e){var t=e;if(e instanceof r){if(null==t)throw"Node is null!";if(null==t.owner||t.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var C=t.edges.slice(),i=C.length,H=0;H-1&&a>-1))throw"Source and/or target doesn't know this edge!";if(n.source.edges.splice(o,1),n.target!=n.source&&n.target.edges.splice(a,1),-1==(V=n.source.owner.getEdges().indexOf(n)))throw"Not in owner's edge list!";n.source.owner.getEdges().splice(V,1)}},s.prototype.updateLeftTop=function(){for(var e,t,C,i=H.MAX_VALUE,n=H.MAX_VALUE,V=this.getNodes(),r=V.length,L=0;L(e=o.getTop())&&(i=e),n>(t=o.getLeft())&&(n=t)}return i==H.MAX_VALUE?null:(C=null!=V[0].getParent().paddingLeft?V[0].getParent().paddingLeft:this.margin,this.left=n-C,this.top=i-C,new a(this.left,this.top))},s.prototype.updateBounds=function(e){for(var t,C,i,n,V,r=H.MAX_VALUE,L=-H.MAX_VALUE,a=H.MAX_VALUE,M=-H.MAX_VALUE,s=this.nodes,l=s.length,d=0;d(t=u.getLeft())&&(r=t),L<(C=u.getRight())&&(L=C),a>(i=u.getTop())&&(a=i),M<(n=u.getBottom())&&(M=n)}var A=new o(r,a,L-r,M-a);r==H.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),V=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=A.x-V,this.right=A.x+A.width+V,this.top=A.y-V,this.bottom=A.y+A.height+V},s.calculateBounds=function(e){for(var t,C,i,n,V=H.MAX_VALUE,r=-H.MAX_VALUE,L=H.MAX_VALUE,a=-H.MAX_VALUE,M=e.length,s=0;s(t=l.getLeft())&&(V=t),r<(C=l.getRight())&&(r=C),L>(i=l.getTop())&&(L=i),a<(n=l.getBottom())&&(a=n)}return new o(V,L,r-V,a-L)},s.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},s.prototype.getEstimatedSize=function(){if(this.estimatedSize==H.MIN_VALUE)throw"assert failed";return this.estimatedSize},s.prototype.calcEstimatedSize=function(){for(var e=0,t=this.nodes,C=t.length,i=0;i=this.nodes.length){var L=0;H.forEach((function(t){t.owner==e&&L++})),L==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},e.exports=s},function(e,t,C){var i,H=C(1);function n(e){i=C(5),this.layout=e,this.graphs=[],this.edges=[]}n.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),C=this.add(e,t);return this.setRootGraph(C),this.rootGraph},n.prototype.add=function(e,t,C,i,H){if(null==C&&null==i&&null==H){if(null==e)throw"Graph is null!";if(null==t)throw"Parent node is null!";if(this.graphs.indexOf(e)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(e),null!=e.parent)throw"Already has a parent!";if(null!=t.child)throw"Already has a child!";return e.parent=t,t.child=e,e}H=C,C=e;var n=(i=t).getOwner(),V=H.getOwner();if(null==n||n.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==V||V.getGraphManager()!=this)throw"Target not in this graph mgr!";if(n==V)return C.isInterGraph=!1,n.add(C,i,H);if(C.isInterGraph=!0,C.source=i,C.target=H,this.edges.indexOf(C)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(C),null==C.source||null==C.target)throw"Edge source and/or target is null!";if(-1!=C.source.edges.indexOf(C)||-1!=C.target.edges.indexOf(C))throw"Edge already in source and/or target incidency list!";return C.source.edges.push(C),C.target.edges.push(C),C},n.prototype.remove=function(e){if(e instanceof i){var t=e;if(t.getGraphManager()!=this)throw"Graph not in this graph mgr";if(t!=this.rootGraph&&(null==t.parent||t.parent.graphManager!=this))throw"Invalid parent node!";for(var C,n=[],V=(n=n.concat(t.getEdges())).length,r=0;r=t.getRight()?C[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(C[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?C[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(C[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var n=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(n=1);var V=n*C[0],r=C[1]/n;C[0]V)return C[0]=i,C[1]=L,C[2]=n,C[3]=m,!1;if(Hn)return C[0]=r,C[1]=H,C[2]=c,C[3]=V,!1;if(in?(C[0]=a,C[1]=M,v=!0):(C[0]=o,C[1]=L,v=!0):Z===b&&(i>n?(C[0]=r,C[1]=L,v=!0):(C[0]=s,C[1]=M,v=!0)),-S===b?n>i?(C[2]=h,C[3]=m,y=!0):(C[2]=c,C[3]=A,y=!0):S===b&&(n>i?(C[2]=u,C[3]=A,y=!0):(C[2]=f,C[3]=m,y=!0)),v&&y)return!1;if(i>n?H>V?(w=this.getCardinalDirection(Z,b,4),x=this.getCardinalDirection(S,b,2)):(w=this.getCardinalDirection(-Z,b,3),x=this.getCardinalDirection(-S,b,1)):H>V?(w=this.getCardinalDirection(-Z,b,1),x=this.getCardinalDirection(-S,b,3)):(w=this.getCardinalDirection(Z,b,2),x=this.getCardinalDirection(S,b,4)),!v)switch(w){case 1:k=L,O=i+-d/b,C[0]=O,C[1]=k;break;case 2:O=s,k=H+l*b,C[0]=O,C[1]=k;break;case 3:k=M,O=i+d/b,C[0]=O,C[1]=k;break;case 4:O=a,k=H+-l*b,C[0]=O,C[1]=k}if(!y)switch(x){case 1:P=A,E=n+-g/b,C[2]=E,C[3]=P;break;case 2:E=f,P=V+p*b,C[2]=E,C[3]=P;break;case 3:P=m,E=n+g/b,C[2]=E,C[3]=P;break;case 4:E=h,P=V+-p*b,C[2]=E,C[3]=P}}return!1},H.getCardinalDirection=function(e,t,C){return e>t?C:1+C%4},H.getIntersection=function(e,t,C,H){if(null==H)return this.getIntersection2(e,t,C);var n,V,r,L,o,a,M,s=e.x,l=e.y,d=t.x,u=t.y,A=C.x,c=C.y,h=H.x,m=H.y;return 0==(M=(n=u-l)*(L=A-h)-(V=m-c)*(r=s-d))?null:new i((r*(a=h*c-A*m)-L*(o=d*l-s*u))/M,(V*o-n*a)/M)},H.angleOfVector=function(e,t,C,i){var H=void 0;return e!==C?(H=Math.atan((i-t)/(C-e)),C0?1:e<0?-1:0},i.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},i.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=i},function(e,t,C){function i(){}i.MAX_VALUE=2147483647,i.MIN_VALUE=-2147483648,e.exports=i},function(e,t,C){var i=function(){function e(e,t){for(var C=0;C0&&t;){for(r.push(o[0]);r.length>0&&t;){var a=r[0];r.splice(0,1),V.add(a);var M=a.getEdges();for(n=0;n-1&&o.splice(u,1)}V=new Set,L=new Map}else e=[]}return e},s.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],C=e.source,i=this.graphManager.calcLowestCommonAncestor(e.source,e.target),H=0;H0){for(var H=this.edgeToDummyNodes.get(C),n=0;n=0&&t.splice(M,1),a.getNeighborsList().forEach((function(e){if(C.indexOf(e)<0){var t=i.get(e)-1;1==t&&L.push(e),i.set(e,t)}}))}C=C.concat(L),1!=t.length&&2!=t.length||(H=!0,n=t[0])}return n},s.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=s},function(e,t,C){function i(){}i.seed=1,i.x=0,i.nextDouble=function(){return i.x=1e4*Math.sin(i.seed++),i.x-Math.floor(i.x)},e.exports=i},function(e,t,C){var i=C(4);function H(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}H.prototype.getWorldOrgX=function(){return this.lworldOrgX},H.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},H.prototype.getWorldOrgY=function(){return this.lworldOrgY},H.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},H.prototype.getWorldExtX=function(){return this.lworldExtX},H.prototype.setWorldExtX=function(e){this.lworldExtX=e},H.prototype.getWorldExtY=function(){return this.lworldExtY},H.prototype.setWorldExtY=function(e){this.lworldExtY=e},H.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},H.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},H.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},H.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},H.prototype.getDeviceExtX=function(){return this.ldeviceExtX},H.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},H.prototype.getDeviceExtY=function(){return this.ldeviceExtY},H.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},H.prototype.transformX=function(e){var t=0,C=this.lworldExtX;return 0!=C&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/C),t},H.prototype.transformY=function(e){var t=0,C=this.lworldExtY;return 0!=C&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/C),t},H.prototype.inverseTransformX=function(e){var t=0,C=this.ldeviceExtX;return 0!=C&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/C),t},H.prototype.inverseTransformY=function(e){var t=0,C=this.ldeviceExtY;return 0!=C&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/C),t},H.prototype.inverseTransformPoint=function(e){return new i(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=H},function(e,t,C){var i=C(15),H=C(7),n=C(0),V=C(8),r=C(9);function L(){i.call(this),this.useSmartIdealEdgeLengthCalculation=H.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=H.DEFAULT_EDGE_LENGTH,this.springConstant=H.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=H.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=H.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=H.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=H.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=H.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*H.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=H.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=H.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=H.MAX_ITERATIONS}for(var o in L.prototype=Object.create(i.prototype),i)L[o]=i[o];L.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=H.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},L.prototype.calcIdealEdgeLengths=function(){for(var e,t,C,i,V,r,L=this.getGraphManager().getAllEdges(),o=0;oH.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*H.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-H.ADAPTATION_LOWER_NODE_LIMIT)/(H.ADAPTATION_UPPER_NODE_LIMIT-H.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-H.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=H.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>H.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(H.COOLING_ADAPTATION_FACTOR,1-(e-H.ADAPTATION_LOWER_NODE_LIMIT)/(H.ADAPTATION_UPPER_NODE_LIMIT-H.ADAPTATION_LOWER_NODE_LIMIT)*(1-H.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=H.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},L.prototype.calcSpringForces=function(){for(var e,t=this.getAllEdges(),C=0;C0&&void 0!==arguments[0])||arguments[0],r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],L=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%H.GRID_CALCULATION_CHECK_PERIOD==1&&V&&this.updateGrid(),n=new Set,e=0;e(L=t.getEstimatedSize()*this.gravityRangeFactor)||r>L)&&(e.gravitationForceX=-this.gravityConstant*H,e.gravitationForceY=-this.gravityConstant*n):(V>(L=t.getEstimatedSize()*this.compoundGravityRangeFactor)||r>L)&&(e.gravitationForceX=-this.gravityConstant*H*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*n*this.compoundGravityConstant)},L.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=r.length||o>=r[0].length))for(var a=0;ae}}]),e}();e.exports=n},function(e,t,C){var i=function(){function e(e,t){for(var C=0;C2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,V=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;H(this,e),this.sequence1=t,this.sequence2=C,this.match_score=i,this.mismatch_penalty=n,this.gap_penalty=V,this.iMax=t.length+1,this.jMax=C.length+1,this.grid=new Array(this.iMax);for(var r=0;r=0;C--){var i=this.listeners[C];i.event===e&&i.callback===t&&this.listeners.splice(C,1)}},H.emit=function(e,t){for(var C=0;C=0;H--){var n=i[H];n.isOrdered()||e.stack.push(n)}return t},H.prototype.calculateRadius=function(){var e=this,t=0;e.getNodes().forEach((function(e){return t+=Math.sqrt(e.getWidth()*e.getWidth()+e.getHeight()*e.getHeight())})),e.perimeter=t+e.getNodes().length*e.nodeSeparation;var C=e.perimeter/(2*Math.PI);e.getParent().setWidth(2*C),e.getParent().setHeight(2*C),e.getParent().setCenter(e.getParent().getWidth(),e.getParent().getHeight()),e.centerX=e.getParent().getCenterX(),e.centerY=e.getParent().getCenterY(),e.radius=e.getParent().getHeight()/2},H.prototype.calculateEdgeCrossingsOfNodes=function(){this.getNodes().forEach((function(e){return e.calculateTotalCrossing()}))},H.prototype.loadOldIndicesOfNodes=function(){for(var e=0;eMath.min(V,r)&&0!==r&&0!==V},H.prototype.crossingWithEdge=function(e){return this.crossesWithEdge(e)?1:0},H.prototype.calculateTotalCrossingWithList=function(e){var t=this,C=0;return e.forEach((function(e){return C+=t.crossingWithEdge(e)})),C},e.exports=H},function(e,t,C){var i=C(0).LNode;function H(e,t,C,H){void 0!==C&&void 0!==H?i.call(this,e,t,C,H):i.call(this,e,t),this.angle=0,this.circleIndex=-1,this.totalCrossingOfEdges=-1,this.isCrossingNumberValid=!1}for(var n in C(0).Quicksort,H.prototype=Object.create(i.prototype),i)H[n]=i[n];H.prototype.getCircle=function(){return this.getOwner()},H.prototype.setIndex=function(e){this.circleIndex=e,this.isCrossingNumberValid=!1},H.prototype.getIndex=function(){return this.circleIndex},H.prototype.getNeighborsSortedByDegree=function(){var e=Array.from(this.getNeighborsList());return(e=e.filter((function(e){return-1===e.getIndex()}))).sort((function(e,t){return e.getDegree()-t.getDegree()})),e},H.prototype.getDegree=function(){return this.getEdges().length},H.prototype.isOrdered=function(){return this.getIndex()>-1},H.prototype.setAngle=function(e){this.angle=e},H.prototype.getAngle=function(){return this.angle},H.prototype.getCircDistWithTheNode=function(e){var t=this,C=e.getIndex();if(-1===C||-1===t.getIndex())return-1;var i=t.getIndex()-C;return i<0&&(i+=t.getCircle().getSize()),i},H.prototype.getCrossingNumberWithNode=function(e){var t=0;return this.getEdges().forEach((function(C){e.getEdges().forEach((function(e){t+=C.crossingWithEdge(e)}))})),t},H.prototype.getTotalCrossingOfEdges=function(){var e=this;return e.isCrossingNumberValid||(e.calculateTotalCrossing(),e.isCrossingNumberValid=!0),e.totalCrossingOfEdges},H.prototype.calculateTotalCrossing=function(){var e=this,t=0,C=[];C.push.apply(C,e.getCircle().getEdges()),C=C.filter((function(t){return e.getEdges().indexOf(t)<0})),e.getEdges().forEach((function(e){return t+=e.calculateTotalCrossingWithList(C)})),e.totalCrossingOfEdges=t},e.exports=H},function(e,t,C){var i=C(0).Layout,H=C(2),n=C(1),V=C(4),r=C(3);function L(){i.call(this),this.nodeSeparation=H.DEFAULT_NODE_SEPARATION}for(var o in L.prototype=Object.create(i.prototype),i)L[o]=i[o];L.prototype.newGraph=function(e){return this.avsdfCircle=new n(null,this.graphManager,e),this.avsdfCircle},L.prototype.newNode=function(e){return new V(this.graphManager,e)},L.prototype.newEdge=function(e){return new r(null,null,e)},L.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},C=0;C1)return!1;var e=this.avsdfCircle;for(e.setNodeSeparation(this.nodeSeparation),e.calculateRadius(),e.initOrdering();!e.hasFinishedOrdering();){var t=e.findNodeToPlace();e.putInOrder(t)}return!0},L.prototype.updateNodeAngles=function(){this.graphManager.getRoot().correctAngles()},L.prototype.updateNodeCoordinates=function(){var e=this.graphManager.getRoot();e.getNodes().forEach((function(t){t.setCenter(e.getCenterX()+e.getRadius()*Math.cos(t.getAngle()),e.getCenterY()+e.getRadius()*Math.sin(t.getAngle()))}))},L.prototype.initPostProcess=function(){this.avsdfCircle.calculateEdgeCrossingsOfNodes();var e=this.avsdfCircle.getNodes();return e.sort((function(e,t){return t.getTotalCrossingOfEdges()-e.getTotalCrossingOfEdges()})),e},L.prototype.oneStepPostProcess=function(e){for(var t=this,C=e.getTotalCrossingOfEdges(),i=void 0,H=Array.from(e.getNeighborsList()),n=0;n=C?t.avsdfCircle.loadOldIndicesOfNodes():(t.avsdfCircle.reOrderVertices(),C=i)}}},e.exports=L},function(e,t,C){var i={};i.layoutBase=C(0),i.AVSDFConstants=C(2),i.AVSDFEdge=C(3),i.AVSDFCircle=C(1),i.AVSDFLayout=C(5),i.AVSDFNode=C(4),e.exports=i}])},e.exports=C(Fu)})),zu=fe((function(e,t){var C;C=function(e){return function(e){var t={};function C(i){if(t[i])return t[i].exports;var H=t[i]={i:i,l:!1,exports:{}};return e[i].call(H.exports,H,H.exports,C),H.l=!0,H.exports}return C.m=e,C.c=t,C.i=function(e){return e},C.d=function(e,t,i){C.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},C.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return C.d(t,"a",t),t},C.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},C.p="",C(C.s=3)}([function(t,C){t.exports=e},function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;i=t.nodes.size())return!0;this.avsdfLayout.oneStepPostProcess(this.sortedByDegreeList[t.tickIndex]),this.avsdfLayout.updateNodeAngles(),this.avsdfLayout.updateNodeCoordinates()}},{key:"postrun",value:function(){}},{key:"destroy",value:function(){return H(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this),this}},{key:"processChildrenList",value:function(e,t,C){for(var i=t.length,H=0;H1&&void 0!==arguments[1]?arguments[1]:i,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i,n=!1,V=e,r=0;r-1};var Qu=function(e,t){var C=this.__data__,i=$u(C,e);return i<0?(++this.size,C.push([e,t])):C[i][1]=t,this};function Ku(e){var t=-1,C=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},vc={};vc["[object Float32Array]"]=vc["[object Float64Array]"]=vc["[object Int8Array]"]=vc["[object Int16Array]"]=vc["[object Int32Array]"]=vc["[object Uint8Array]"]=vc["[object Uint8ClampedArray]"]=vc["[object Uint16Array]"]=vc["[object Uint32Array]"]=!0,vc["[object Arguments]"]=vc["[object Array]"]=vc["[object ArrayBuffer]"]=vc["[object Boolean]"]=vc["[object DataView]"]=vc["[object Date]"]=vc["[object Error]"]=vc["[object Function]"]=vc["[object Map]"]=vc["[object Number]"]=vc["[object Object]"]=vc["[object RegExp]"]=vc["[object Set]"]=vc["[object String]"]=vc["[object WeakMap]"]=!1;var yc=function(e){return Mc(e)&&gc(e.length)&&!!vc[AA(e)]};var Zc=function(e){return function(t){return e(t)}},Sc=fe((function(e,t){var C=t&&!t.nodeType&&t,i=C&&e&&!e.nodeType&&e,H=i&&i.exports===C&&HA.process,n=function(){try{var e=i&&i.require&&i.require("util").types;return e||H&&H.binding&&H.binding("util")}catch(e){}}();e.exports=n})),bc=Sc&&Sc.isTypedArray,wc=bc?Zc(bc):yc,xc=Object.prototype.hasOwnProperty;var Oc=function(e,t){var C=cc(e),i=!C&&Ac(e),H=!C&&!i&&mc(e),n=!C&&!i&&!H&&wc(e),V=C||i||H||n,r=V?ac(e.length,String):[],L=r.length;for(var o in e)!t&&!xc.call(e,o)||V&&("length"==o||H&&("offset"==o||"parent"==o)||n&&("buffer"==o||"byteLength"==o||"byteOffset"==o)||pc(o,L))||r.push(o);return r},kc=Object.prototype;var Ec=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||kc)};var Pc=function(e,t){return function(C){return e(t(C))}},Tc=Pc(Object.keys,Object),_c=Object.prototype.hasOwnProperty;var Bc=function(e){if(!Ec(e))return Tc(e);var t=[];for(var C in Object(e))_c.call(e,C)&&"constructor"!=C&&t.push(C);return t};var Dc=function(e){return null!=e&&gc(e.length)&&!mA(e)};var Nc=function(e){return Dc(e)?Oc(e):Bc(e)};var Rc=function(e,t){return e&&oc(t,Nc(t),e)};var Fc=function(e){var t=[];if(null!=e)for(var C in Object(e))t.push(C);return t},Ic=Object.prototype.hasOwnProperty;var zc=function(e){if(!cA(e))return Fc(e);var t=Ec(e),C=[];for(var i in e)("constructor"!=i||!t&&Ic.call(e,i))&&C.push(i);return C};var jc=function(e){return Dc(e)?Oc(e,!0):zc(e)};var Gc=function(e,t){return e&&oc(t,jc(t),e)},Wc=fe((function(e,t){var C=t&&!t.nodeType&&t,i=C&&e&&!e.nodeType&&e,H=i&&i.exports===C?VA.Buffer:void 0,n=H?H.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var C=e.length,i=n?n(C):new e.constructor(C);return e.copy(i),i}}));var $c=function(e,t){var C=-1,i=e.length;for(t||(t=Array(i));++Cr))return!1;var o=n.get(e),a=n.get(t);if(o&&a)return o==t&&a==e;var M=-1,s=!0,l=2&C?new Hm:void 0;for(n.set(e,t),n.set(t,e);++M0&&i(L)?C>1?e(L,C-1,i,H,n):eh(n,L):H||(n[n.length]=L)}return n};var kf=function(e,t,C){switch(C.length){case 0:return e.call(t);case 1:return e.call(t,C[0]);case 2:return e.call(t,C[0],C[1]);case 3:return e.call(t,C[0],C[1],C[2])}return e.apply(t,C)},Ef=Math.max;var Pf=function(e,t,C){return t=Ef(void 0===t?e.length-1:t,0),function(){for(var i=arguments,H=-1,n=Ef(i.length-t,0),V=Array(n);++H0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}},Nf=Df(_f);var Rf=function(e,t){return Nf(Pf(e,t,qh),e+"")};var Ff=function(e,t,C,i){for(var H=e.length,n=C+(i?1:-1);i?n--:++n-1};var Wf=function(e,t,C){for(var i=-1,H=null==e?0:e.length;++i=200){var o=t?null:Yf(e);if(o)return om(o);V=!1,H=Vm,L=new Hm}else L=t?[]:r;e:for(;++in){var V=H;H=n,n=V}return H+""+n+""+(tp.isUndefined(i)?"\0":i)}function rp(e,t,C,i){var H=""+t,n=""+C;if(!e&&H>n){var V=H;H=n,n=V}var r={v:H,w:n};return i&&(r.name=i),r}function Lp(e,t){return Vp(e,t.v,t.w,t.name)}ip.prototype._nodeCount=0,ip.prototype._edgeCount=0,ip.prototype.isDirected=function(){return this._isDirected},ip.prototype.isMultigraph=function(){return this._isMultigraph},ip.prototype.isCompound=function(){return this._isCompound},ip.prototype.setGraph=function(e){return this._label=e,this},ip.prototype.graph=function(){return this._label},ip.prototype.setDefaultNodeLabel=function(e){return tp.isFunction(e)||(e=tp.constant(e)),this._defaultNodeLabelFn=e,this},ip.prototype.nodeCount=function(){return this._nodeCount},ip.prototype.nodes=function(){return tp.keys(this._nodes)},ip.prototype.sources=function(){var e=this;return tp.filter(this.nodes(),(function(t){return tp.isEmpty(e._in[t])}))},ip.prototype.sinks=function(){var e=this;return tp.filter(this.nodes(),(function(t){return tp.isEmpty(e._out[t])}))},ip.prototype.setNodes=function(e,t){var C=arguments,i=this;return tp.each(e,(function(e){C.length>1?i.setNode(e,t):i.setNode(e)})),this},ip.prototype.setNode=function(e,t){return tp.has(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]="\0",this._children[e]={},this._children["\0"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)},ip.prototype.node=function(e){return this._nodes[e]},ip.prototype.hasNode=function(e){return tp.has(this._nodes,e)},ip.prototype.removeNode=function(e){var t=this;if(tp.has(this._nodes,e)){var C=function(e){t.removeEdge(t._edgeObjs[e])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],tp.each(this.children(e),(function(e){t.setParent(e)})),delete this._children[e]),tp.each(tp.keys(this._in[e]),C),delete this._in[e],delete this._preds[e],tp.each(tp.keys(this._out[e]),C),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this},ip.prototype.setParent=function(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(tp.isUndefined(t))t="\0";else{for(var C=t+="";!tp.isUndefined(C);C=this.parent(C))if(C===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this},ip.prototype._removeFromParentsChildList=function(e){delete this._children[this._parent[e]][e]},ip.prototype.parent=function(e){if(this._isCompound){var t=this._parent[e];if("\0"!==t)return t}},ip.prototype.children=function(e){if(tp.isUndefined(e)&&(e="\0"),this._isCompound){var t=this._children[e];if(t)return tp.keys(t)}else{if("\0"===e)return this.nodes();if(this.hasNode(e))return[]}},ip.prototype.predecessors=function(e){var t=this._preds[e];if(t)return tp.keys(t)},ip.prototype.successors=function(e){var t=this._sucs[e];if(t)return tp.keys(t)},ip.prototype.neighbors=function(e){var t=this.predecessors(e);if(t)return tp.union(t,this.successors(e))},ip.prototype.isLeaf=function(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length},ip.prototype.filterNodes=function(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var C=this;tp.each(this._nodes,(function(C,i){e(i)&&t.setNode(i,C)})),tp.each(this._edgeObjs,(function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,C.edge(e))}));var i={};function H(e){var n=C.parent(e);return void 0===n||t.hasNode(n)?(i[e]=n,n):n in i?i[n]:H(n)}return this._isCompound&&tp.each(t.nodes(),(function(e){t.setParent(e,H(e))})),t},ip.prototype.setDefaultEdgeLabel=function(e){return tp.isFunction(e)||(e=tp.constant(e)),this._defaultEdgeLabelFn=e,this},ip.prototype.edgeCount=function(){return this._edgeCount},ip.prototype.edges=function(){return tp.values(this._edgeObjs)},ip.prototype.setPath=function(e,t){var C=this,i=arguments;return tp.reduce(e,(function(e,H){return i.length>1?C.setEdge(e,H,t):C.setEdge(e,H),H})),this},ip.prototype.setEdge=function(){var e,t,C,i,H=!1,n=arguments[0];"object"==typeof n&&null!==n&&"v"in n?(e=n.v,t=n.w,C=n.name,2===arguments.length&&(i=arguments[1],H=!0)):(e=n,t=arguments[1],C=arguments[3],arguments.length>2&&(i=arguments[2],H=!0)),e=""+e,t=""+t,tp.isUndefined(C)||(C=""+C);var V=Vp(this._isDirected,e,t,C);if(tp.has(this._edgeLabels,V))return H&&(this._edgeLabels[V]=i),this;if(!tp.isUndefined(C)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[V]=H?i:this._defaultEdgeLabelFn(e,t,C);var r=rp(this._isDirected,e,t,C);return e=r.v,t=r.w,Object.freeze(r),this._edgeObjs[V]=r,Hp(this._preds[t],e),Hp(this._sucs[e],t),this._in[t][V]=r,this._out[e][V]=r,this._edgeCount++,this},ip.prototype.edge=function(e,t,C){var i=1===arguments.length?Lp(this._isDirected,arguments[0]):Vp(this._isDirected,e,t,C);return this._edgeLabels[i]},ip.prototype.hasEdge=function(e,t,C){var i=1===arguments.length?Lp(this._isDirected,arguments[0]):Vp(this._isDirected,e,t,C);return tp.has(this._edgeLabels,i)},ip.prototype.removeEdge=function(e,t,C){var i=1===arguments.length?Lp(this._isDirected,arguments[0]):Vp(this._isDirected,e,t,C),H=this._edgeObjs[i];return H&&(e=H.v,t=H.w,delete this._edgeLabels[i],delete this._edgeObjs[i],np(this._preds[t],e),np(this._sucs[e],t),delete this._in[t][i],delete this._out[e][i],this._edgeCount--),this},ip.prototype.inEdges=function(e,t){var C=this._in[e];if(C){var i=tp.values(C);return t?tp.filter(i,(function(e){return e.v===t})):i}},ip.prototype.outEdges=function(e,t){var C=this._out[e];if(C){var i=tp.values(C);return t?tp.filter(i,(function(e){return e.w===t})):i}},ip.prototype.nodeEdges=function(e,t){var C=this.inEdges(e,t);if(C)return C.concat(this.outEdges(e,t))};var op={Graph:Cp,version:"2.1.8"},ap={write:function(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Mp(e),edges:sp(e)};tp.isUndefined(e.graph())||(t.value=tp.clone(e.graph()));return t},read:function(e){var t=new Cp(e.options).setGraph(e.value);return tp.each(e.nodes,(function(e){t.setNode(e.v,e.value),e.parent&&t.setParent(e.v,e.parent)})),tp.each(e.edges,(function(e){t.setEdge({v:e.v,w:e.w,name:e.name},e.value)})),t}};function Mp(e){return tp.map(e.nodes(),(function(t){var C=e.node(t),i=e.parent(t),H={v:t};return tp.isUndefined(C)||(H.value=C),tp.isUndefined(i)||(H.parent=i),H}))}function sp(e){return tp.map(e.edges(),(function(t){var C=e.edge(t),i={v:t.v,w:t.w};return tp.isUndefined(t.name)||(i.name=t.name),tp.isUndefined(C)||(i.value=C),i}))}var lp=function(e){var t,C={},i=[];function H(i){tp.has(C,i)||(C[i]=!0,t.push(i),tp.each(e.successors(i),H),tp.each(e.predecessors(i),H))}return tp.each(e.nodes(),(function(e){t=[],H(e),t.length&&i.push(t)})),i};var dp=up;function up(){this._arr=[],this._keyIndices={}}up.prototype.size=function(){return this._arr.length},up.prototype.keys=function(){return this._arr.map((function(e){return e.key}))},up.prototype.has=function(e){return tp.has(this._keyIndices,e)},up.prototype.priority=function(e){var t=this._keyIndices[e];if(void 0!==t)return this._arr[t].priority},up.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},up.prototype.add=function(e,t){var C=this._keyIndices;if(e=String(e),!tp.has(C,e)){var i=this._arr,H=i.length;return C[e]=H,i.push({key:e,priority:t}),this._decrease(H),!0}return!1},up.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key},up.prototype.decrease=function(e,t){var C=this._keyIndices[e];if(t>this._arr[C].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[C].priority+" New: "+t);this._arr[C].priority=t,this._decrease(C)},up.prototype._heapify=function(e){var t=this._arr,C=2*e,i=C+1,H=e;C>1].priority0&&(H=r.removeMin(),(n=V[H]).distance!==Number.POSITIVE_INFINITY);)i(H).forEach(L);return V}(e,String(t),C||cp,i||function(t){return e.outEdges(t)})},cp=tp.constant(1);var hp=function(e,t,C){return tp.transform(e.nodes(),(function(i,H){i[H]=Ap(e,H,t,C)}),{})};var mp=function(e){var t=0,C=[],i={},H=[];function n(V){var r=i[V]={onStack:!0,lowlink:t,index:t++};if(C.push(V),e.successors(V).forEach((function(e){tp.has(i,e)?i[e].onStack&&(r.lowlink=Math.min(r.lowlink,i[e].index)):(n(e),r.lowlink=Math.min(r.lowlink,i[e].lowlink))})),r.lowlink===r.index){var L,o=[];do{L=C.pop(),i[L].onStack=!1,o.push(L)}while(V!==L);H.push(o)}}return e.nodes().forEach((function(e){tp.has(i,e)||n(e)})),H};var fp=function(e){return tp.filter(mp(e),(function(t){return t.length>1||1===t.length&&e.hasEdge(t[0],t[0])}))};var pp=function(e,t,C){return function(e,t,C){var i={},H=e.nodes();return H.forEach((function(e){i[e]={},i[e][e]={distance:0},H.forEach((function(t){e!==t&&(i[e][t]={distance:Number.POSITIVE_INFINITY})})),C(e).forEach((function(C){var H=C.v===e?C.w:C.v,n=t(C);i[e][H]={distance:n,predecessor:e}}))})),H.forEach((function(e){var t=i[e];H.forEach((function(C){var n=i[C];H.forEach((function(C){var i=n[e],H=t[C],V=n[C],r=i.distance+H.distance;r0;){if(C=n.removeMin(),tp.has(H,C))i.setEdge(C,H[C]);else{if(r)throw new Error("Input graph is not connected: "+e);r=!0}e.nodeEdges(C).forEach(V)}return i};var xp,Op={Graph:op.Graph,json:ap,alg:{components:lp,dijkstra:Ap,dijkstraAll:hp,findCycles:fp,floydWarshall:pp,isAcyclic:function(e){try{vp(e)}catch(e){if(e instanceof vp.CycleException)return!1;throw e}return!0},postorder:function(e,t){return Sp(e,t,"post")},preorder:function(e,t){return Sp(e,t,"pre")},prim:wp,tarjan:mp,topsort:vp},version:op.version};try{xp=Op}catch(e){}xp||(xp=window.graphlib);var kp=xp;var Ep=function(e){return zh(e,5)};var Pp=function(e,t,C){if(!cA(C))return!1;var i=typeof t;return!!("number"==i?Dc(C)&&pc(t,C.length):"string"==i&&t in C)&&Wu(C[t],e)},Tp=Object.prototype,_p=Tp.hasOwnProperty,Bp=Rf((function(e,t){e=Object(e);var C=-1,i=t.length,H=i>2?t[2]:void 0;for(H&&Pp(t[0],t[1],H)&&(i=1);++C-1?H[n?t[V]:V]:void 0}},Rp=/\s/;var Fp=function(e){for(var t=e.length;t--&&Rp.test(e.charAt(t)););return t},Ip=/^\s+/;var zp=function(e){return e?e.slice(0,Fp(e)+1).replace(Ip,""):e},jp=/^[-+]0x[0-9a-f]+$/i,Gp=/^0b[01]+$/i,Wp=/^0o[0-7]+$/i,$p=parseInt;var Up=function(e){if("number"==typeof e)return e;if(vm(e))return NaN;if(cA(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=cA(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=zp(e);var C=Gp.test(e);return C||Wp.test(e)?$p(e.slice(2),C?2:8):jp.test(e)?NaN:+e};var Yp=function(e){return e?Infinity===(e=Up(e))||-Infinity===e?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0};var Xp=function(e){var t=Yp(e),C=t%1;return t==t?C?t-C:t:0},qp=Math.max;var Qp=function(e,t,C){var i=null==e?0:e.length;if(!i)return-1;var H=null==C?0:Xp(C);return H<0&&(H=qp(i+H,0)),Ff(e,qm(t),H)},Kp=Np(Qp);var Jp=function(e){return(null==e?0:e.length)?Of(e,1):[]};var eg=function(e,t){return null==e?e:$h(e,Qh(t),jc)};var tg=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var Cg=function(e,t){var C={};return t=qm(t),Uh(e,(function(e,i,H){Vc(C,i,t(e,i,H))})),C};var ig=function(e,t,C){for(var i=-1,H=e.length;++it};var ng=function(e){return e&&e.length?ig(e,qh,Hg):void 0};var Vg=function(e,t,C){(void 0!==C&&!Wu(e[t],C)||void 0===C&&!(t in e))&&Vc(e,t,C)},rg=Function.prototype,Lg=Object.prototype,og=rg.toString,ag=Lg.hasOwnProperty,Mg=og.call(Object);var sg=function(e){if(!Mc(e)||"[object Object]"!=AA(e))return!1;var t=th(e);if(null===t)return!0;var C=ag.call(t,"constructor")&&t.constructor;return"function"==typeof C&&C instanceof C&&og.call(C)==Mg};var lg=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var dg=function(e){return oc(e,jc(e))};var ug=function(e,t,C,i,H,n,V){var r=lg(e,C),L=lg(t,C),o=V.get(L);if(o)Vg(e,C,o);else{var a=n?n(r,L,C+"",e,t,V):void 0,M=void 0===a;if(M){var s=cc(L),l=!s&&mc(L),d=!s&&!l&&wc(L);a=L,s||l||d?cc(r)?a=r:qf(r)?a=$c(r):l?(M=!1,a=Wc(L,!0)):d?(M=!1,a=xh(L,!0)):a=[]:sg(L)||Ac(L)?(a=r,Ac(r)?a=dg(r):cA(r)&&!mA(r)||(a=Th(L))):M=!1}M&&(V.set(L,a),H(a,L,i,n,V),V.delete(L)),Vg(e,C,a)}};var Ag=function e(t,C,i,H,n){t!==C&&$h(C,(function(V,r){if(n||(n=new Cc),cA(V))ug(t,C,r,i,e,H,n);else{var L=H?H(lg(t,r),V,r+"",t,C,n):void 0;void 0===L&&(L=V),Vg(t,r,L)}}),jc)};var cg=function(e){return Rf((function(t,C){var i=-1,H=C.length,n=H>1?C[H-1]:void 0,V=H>2?C[2]:void 0;for(n=e.length>3&&"function"==typeof n?(H--,n):void 0,V&&Pp(C[0],C[1],V)&&(n=H<3?void 0:n,H=1),t=Object(t);++it||n&&V&&L&&!r&&!o||i&&V&&L||!C&&L||!H)return 1;if(!i&&!n&&!o&&e=r?L:L*("desc"==C[i]?-1:1)}return e.index-t.index};var Ng=function(e,t,C){t=t.length?Tm(t,(function(e){return cc(e)?function(t){return Im(t,1===e.length?e[0]:e)}:e})):[qh];var i=-1;t=Tm(t,Zc(qm));var H=nf(e,(function(e,C,H){return{criteria:Tm(t,(function(t){return t(e)})),index:++i,value:e}}));return _g(H,(function(e,t){return Dg(e,t,C)}))},Rg=Rf((function(e,t){if(null==e)return[];var C=t.length;return C>1&&Pp(e,t[0],t[1])?t=[]:C>2&&Pp(t[0],t[1],t[2])&&(t=[t[0]]),Ng(e,Of(t,1),[])})),Fg=Rg,Ig=0;var zg=function(e){var t=++Ig;return Nm(e)+t};var jg=function(e,t,C){for(var i=-1,H=e.length,n=t.length,V={};++i0;--r)if(i=t[r].dequeue()){H=H.concat(ev(e,t,C,i,!0));break}}return H}(C.graph,C.buckets,C.zeroIdx);return $g.flatten($g.map(i,(function(t){return e.outEdges(t.v,t.w)})),!0)},Jg=$g.constant(1);function ev(e,t,C,i,H){var n=H?[]:void 0;return $g.forEach(e.inEdges(i.v),(function(i){var V=e.edge(i),r=e.node(i.v);H&&n.push({v:i.v,w:i.w}),r.out-=V,tv(t,C,r)})),$g.forEach(e.outEdges(i.v),(function(i){var H=e.edge(i),n=i.w,V=e.node(n);V.in-=H,tv(t,C,V)})),e.removeNode(i.v),n}function tv(e,t,C){C.out?C.in?e[C.out-C.in+t].enqueue(C):e[e.length-1].enqueue(C):e[0].enqueue(C)}var Cv={run:function(e){var t="greedy"===e.graph().acyclicer?Kg(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],C={},i={};function H(n){$g.has(i,n)||(i[n]=!0,C[n]=!0,$g.forEach(e.outEdges(n),(function(e){$g.has(C,e.w)?t.push(e):H(e.w)})),delete C[n])}return $g.forEach(e.nodes(),H),t}(e);$g.forEach(t,(function(t){var C=e.edge(t);e.removeEdge(t),C.forwardName=t.name,C.reversed=!0,e.setEdge(t.w,t.v,C,$g.uniqueId("rev"))}))},undo:function(e){$g.forEach(e.edges(),(function(t){var C=e.edge(t);if(C.reversed){e.removeEdge(t);var i=C.forwardName;delete C.reversed,delete C.forwardName,e.setEdge(t.w,t.v,C,i)}}))}};var iv=kp.Graph,Hv={addDummyNode:nv,simplify:function(e){var t=(new iv).setGraph(e.graph());return $g.forEach(e.nodes(),(function(C){t.setNode(C,e.node(C))})),$g.forEach(e.edges(),(function(C){var i=t.edge(C.v,C.w)||{weight:0,minlen:1},H=e.edge(C);t.setEdge(C.v,C.w,{weight:i.weight+H.weight,minlen:Math.max(i.minlen,H.minlen)})})),t},asNonCompoundGraph:function(e){var t=new iv({multigraph:e.isMultigraph()}).setGraph(e.graph());return $g.forEach(e.nodes(),(function(C){e.children(C).length||t.setNode(C,e.node(C))})),$g.forEach(e.edges(),(function(C){t.setEdge(C,e.edge(C))})),t},successorWeights:function(e){var t=$g.map(e.nodes(),(function(t){var C={};return $g.forEach(e.outEdges(t),(function(t){C[t.w]=(C[t.w]||0)+e.edge(t).weight})),C}));return $g.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=$g.map(e.nodes(),(function(t){var C={};return $g.forEach(e.inEdges(t),(function(t){C[t.v]=(C[t.v]||0)+e.edge(t).weight})),C}));return $g.zipObject(e.nodes(),t)},intersectRect:function(e,t){var C,i,H=e.x,n=e.y,V=t.x-H,r=t.y-n,L=e.width/2,o=e.height/2;if(!V&&!r)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(r)*L>Math.abs(V)*o?(r<0&&(o=-o),C=o*V/r,i=o):(V<0&&(L=-L),C=L,i=L*r/V);return{x:H+C,y:n+i}},buildLayerMatrix:function(e){var t=$g.map($g.range(Vv(e)+1),(function(){return[]}));return $g.forEach(e.nodes(),(function(C){var i=e.node(C),H=i.rank;$g.isUndefined(H)||(t[H][i.order]=C)})),t},normalizeRanks:function(e){var t=$g.min($g.map(e.nodes(),(function(t){return e.node(t).rank})));$g.forEach(e.nodes(),(function(C){var i=e.node(C);$g.has(i,"rank")&&(i.rank-=t)}))},removeEmptyRanks:function(e){var t=$g.min($g.map(e.nodes(),(function(t){return e.node(t).rank}))),C=[];$g.forEach(e.nodes(),(function(i){var H=e.node(i).rank-t;C[H]||(C[H]=[]),C[H].push(i)}));var i=0,H=e.graph().nodeRankFactor;$g.forEach(C,(function(t,C){$g.isUndefined(t)&&C%H!=0?--i:i&&$g.forEach(t,(function(t){e.node(t).rank+=i}))}))},addBorderNode:function(e,t,C,i){var H={width:0,height:0};arguments.length>=4&&(H.rank=C,H.order=i);return nv(e,"border",H,t)},maxRank:Vv,partition:function(e,t){var C={lhs:[],rhs:[]};return $g.forEach(e,(function(e){t(e)?C.lhs.push(e):C.rhs.push(e)})),C},time:function(e,t){var C=$g.now();try{return t()}finally{console.log(e+" time: "+($g.now()-C)+"ms")}},notime:function(e,t){return t()}};function nv(e,t,C,i){var H;do{H=$g.uniqueId(i)}while(e.hasNode(H));return C.dummy=t,e.setNode(H,C),H}function Vv(e){return $g.max($g.map(e.nodes(),(function(t){var C=e.node(t).rank;if(!$g.isUndefined(C))return C})))}var rv={run:function(e){e.graph().dummyChains=[],$g.forEach(e.edges(),(function(t){!function(e,t){var C,i,H,n=t.v,V=e.node(n).rank,r=t.w,L=e.node(r).rank,o=t.name,a=e.edge(t),M=a.labelRank;if(L===V+1)return;for(e.removeEdge(t),H=0,++V;VV.lim&&(r=V,L=!0);var o=$g.filter(t.edges(),(function(t){return L===Ov(e,e.node(t.v),r)&&L!==Ov(e,e.node(t.w),r)}));return $g.minBy(o,(function(e){return Av(t,e)}))}function xv(e,t,C,i){var H=C.v,n=C.w;e.removeEdge(H,n),e.setEdge(i.v,i.w,{}),Zv(e),vv(e,t),function(e,t){var C=$g.find(e.nodes(),(function(e){return!t.node(e).parent})),i=hv(e,C);i=i.slice(1),$g.forEach(i,(function(C){var i=e.node(C).parent,H=t.edge(C,i),n=!1;H||(H=t.edge(i,C),n=!0),t.node(C).rank=t.node(i).rank+(n?H.minlen:-H.minlen)}))}(e,t)}function Ov(e,t,C){return C.low<=t.lim&&t.lim<=C.lim}gv.initLowLimValues=Zv,gv.initCutValues=vv,gv.calcCutValue=yv,gv.leaveEdge=bv,gv.enterEdge=wv,gv.exchangeEdges=xv;var kv=Lv,Ev=function(e){if("function"==typeof e.graph().ranker)e.graph().ranker(e);else switch(e.graph().ranker){case"network-simplex":default:Tv(e);break;case"tight-tree":!function(e){kv(e),sv(e)}(e);break;case"longest-path":Pv(e)}};var Pv=kv;function Tv(e){pv(e)}var _v=function(e){var t=function(e){var t={},C=0;function i(H){var n=C;$g.forEach(e.children(H),i),t[H]={low:n,lim:C++}}return $g.forEach(e.children(),i),t}(e);$g.forEach(e.graph().dummyChains,(function(C){for(var i=e.node(C),H=i.edgeObj,n=function(e,t,C,i){var H,n,V=[],r=[],L=Math.min(t[C].low,t[i].low),o=Math.max(t[C].lim,t[i].lim);H=C;do{H=e.parent(H),V.push(H)}while(H&&(t[H].low>L||o>t[H].lim));n=H,H=i;for(;(H=e.parent(H))!==n;)r.push(H);return{path:V.concat(r.reverse()),lca:n}}(e,t,H.v,H.w),V=n.path,r=n.lca,L=0,o=V[L],a=!0;C!==H.w;){if(i=e.node(C),a){for(;(o=V[L])!==r&&e.node(o).maxRank0;)t%2&&(C+=r[t+1]),r[t=t-1>>1]+=e.weight;L+=e.weight*C}))),L}var Yv=function(e,t){return $g.map(t,(function(t){var C=e.inEdges(t);if(C.length){var i=$g.reduce(C,(function(t,C){var i=e.edge(C),H=e.node(C.v);return{sum:t.sum+i.weight*H.order,weight:t.weight+i.weight}}),{sum:0,weight:0});return{v:t,barycenter:i.sum/i.weight,weight:i.weight}}return{v:t}}))};var Xv=function(e,t){var C={};return $g.forEach(e,(function(e,t){var i=C[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};$g.isUndefined(e.barycenter)||(i.barycenter=e.barycenter,i.weight=e.weight)})),$g.forEach(t.edges(),(function(e){var t=C[e.v],i=C[e.w];$g.isUndefined(t)||$g.isUndefined(i)||(i.indegree++,t.out.push(C[e.w]))})),function(e){var t=[];function C(e){return function(t){t.merged||($g.isUndefined(t.barycenter)||$g.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&function(e,t){var C=0,i=0;e.weight&&(C+=e.barycenter*e.weight,i+=e.weight);t.weight&&(C+=t.barycenter*t.weight,i+=t.weight);e.vs=t.vs.concat(e.vs),e.barycenter=C/i,e.weight=i,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}function i(t){return function(C){C.in.push(t),0==--C.indegree&&e.push(C)}}for(;e.length;){var H=e.pop();t.push(H),$g.forEach(H.in.reverse(),C(H)),$g.forEach(H.out,i(H))}return $g.map($g.filter(t,(function(e){return!e.merged})),(function(e){return $g.pick(e,["vs","i","barycenter","weight"])}))}($g.filter(C,(function(e){return!e.indegree})))};var qv=function(e,t){var C=Hv.partition(e,(function(e){return $g.has(e,"barycenter")})),i=C.lhs,H=$g.sortBy(C.rhs,(function(e){return-e.i})),n=[],V=0,r=0,L=0;i.sort((o=!!t,function(e,t){return e.barycentert.barycenter?1:o?t.i-e.i:e.i-t.i})),L=Qv(n,H,L),$g.forEach(i,(function(e){L+=e.vs.length,n.push(e.vs),V+=e.barycenter*e.weight,r+=e.weight,L=Qv(n,H,L)}));var o;var a={vs:$g.flatten(n,!0)};r&&(a.barycenter=V/r,a.weight=r);return a};function Qv(e,t,C){for(var i;t.length&&(i=$g.last(t)).i<=C;)t.pop(),e.push(i.vs),C++;return C}var Kv=function e(t,C,i,H){var n=t.children(C),V=t.node(C),r=V?V.borderLeft:void 0,L=V?V.borderRight:void 0,o={};r&&(n=$g.filter(n,(function(e){return e!==r&&e!==L})));var a=Yv(t,n);$g.forEach(a,(function(C){if(t.children(C.v).length){var n=e(t,C.v,i,H);o[C.v]=n,$g.has(n,"barycenter")&&(V=C,r=n,$g.isUndefined(V.barycenter)?(V.barycenter=r.barycenter,V.weight=r.weight):(V.barycenter=(V.barycenter*V.weight+r.barycenter*r.weight)/(V.weight+r.weight),V.weight+=r.weight))}var V,r}));var M=Xv(a,i);!function(e,t){$g.forEach(e,(function(e){e.vs=$g.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(M,o);var s=qv(M,H);if(r&&(s.vs=$g.flatten([r,s.vs,L],!0),t.predecessors(r).length)){var l=t.node(t.predecessors(r)[0]),d=t.node(t.predecessors(L)[0]);$g.has(s,"barycenter")||(s.barycenter=0,s.weight=0),s.barycenter=(s.barycenter*s.weight+l.order+d.order)/(s.weight+2),s.weight+=2}return s};var Jv=kp.Graph,ey=function(e,t,C){var i=function(e){var t;for(;e.hasNode(t=$g.uniqueId("_root")););return t}(e),H=new Jv({compound:!0}).setGraph({root:i}).setDefaultNodeLabel((function(t){return e.node(t)}));return $g.forEach(e.nodes(),(function(n){var V=e.node(n),r=e.parent(n);(V.rank===t||V.minRank<=t&&t<=V.maxRank)&&(H.setNode(n),H.setParent(n,r||i),$g.forEach(e[C](n),(function(t){var C=t.v===n?t.w:t.v,i=H.edge(C,n),V=$g.isUndefined(i)?0:i.weight;H.setEdge(C,n,{weight:e.edge(t).weight+V})})),$g.has(V,"minRank")&&H.setNode(n,{borderLeft:V.borderLeft[t],borderRight:V.borderRight[t]}))})),H};var ty=function(e,t,C){var i,H={};$g.forEach(C,(function(C){for(var n,V,r=e.parent(C);r;){if((n=e.parent(r))?(V=H[n],H[n]=r):(V=i,i=r),V&&V!==r)return void t.setEdge(V,r);r=n}}))};var Cy=kp.Graph,iy=function(e){var t=Hv.maxRank(e),C=Hy(e,$g.range(1,t+1),"inEdges"),i=Hy(e,$g.range(t-1,-1,-1),"outEdges"),H=Wv(e);Vy(e,H);for(var n,V=Number.POSITIVE_INFINITY,r=0,L=0;L<4;++r,++L){ny(r%2?C:i,r%4>=2),H=Hv.buildLayerMatrix(e);var o=$v(e,H);oV)&&My(C,t,r)}))}))}return $g.reduce(t,(function(t,C){var H,n=-1,V=0;return $g.forEach(C,(function(r,L){if("border"===e.node(r).dummy){var o=e.predecessors(r);o.length&&(H=e.node(o[0]).order,i(C,V,L,n,H),V=L,n=H)}i(C,V,C.length,H,t.length)})),C})),C}function My(e,t,C){if(t>C){var i=t;t=C,C=i}var H=e[t];H||(e[t]=H={}),H[C]=!0}function sy(e,t,C){if(t>C){var i=t;t=C,C=i}return $g.has(e[t],C)}function ly(e,t,C,i){var H={},n={},V={};return $g.forEach(t,(function(e){$g.forEach(e,(function(e,t){H[e]=e,n[e]=e,V[e]=t}))})),$g.forEach(t,(function(e){var t=-1;$g.forEach(e,(function(e){var r=i(e);if(r.length){r=$g.sortBy(r,(function(e){return V[e]}));for(var L=(r.length-1)/2,o=Math.floor(L),a=Math.ceil(L);o<=a;++o){var M=r[o];n[e]===e&&t1?t-1:0),i=1;i=(n=(u+c)/2))?u=n:c=n,(a=C>=(V=(A+h)/2))?A=V:h=V,H=l,!(l=l[M=a<<1|o]))return H[M]=d,e;if(r=+e._x.call(null,l.data),L=+e._y.call(null,l.data),t===r&&C===L)return d.next=l,H?H[M]=d:e._root=d,e;do{H=H?H[M]=new Array(4):e._root=new Array(4),(o=t>=(n=(u+c)/2))?u=n:c=n,(a=C>=(V=(A+h)/2))?A=V:h=V}while((M=a<<1|o)==(s=(L>=V)<<1|r>=n));return H[s]=l,H[M]=d,e}function i(e){var t,i,H,n,V=e.length,r=new Array(V),L=new Array(V),o=1/0,a=1/0,M=-1/0,s=-1/0;for(i=0;iM&&(M=H),ns&&(s=n));if(o>M||a>s)return this;for(this.cover(o,a).cover(M,s),i=0;ie||e>=H||i>t||t>=n;)switch(r=(tl||(n=o.y0)>d||(V=o.x1)=h)<<1|e>=c)&&(o=u[u.length-1],u[u.length-1]=u[u.length-1-a],u[u.length-1-a]=o)}else{var m=e-+this._x.call(null,A.data),f=t-+this._y.call(null,A.data),p=m*m+f*f;if(p=(r=(d+A)/2))?d=r:A=r,(a=V>=(L=(u+c)/2))?u=L:c=L,t=l,!(l=l[M=a<<1|o]))return this;if(!l.length)break;(t[M+1&3]||t[M+2&3]||t[M+3&3])&&(C=t,s=M)}for(;l.data!==e;)if(i=l,!(l=l.next))return this;return(H=l.next)&&delete l.next,i?(H?i.next=H:delete i.next,this):t?(H?t[M]=H:delete t[M],(l=t[0]||t[1]||t[2]||t[3])&&l===(t[3]||t[2]||t[1]||t[0])&&!l.length&&(C?C[s]=l:this._root=l),this):(this._root=H,this)}function a(e){for(var t=0,C=e.length;t{}};function C(){for(var e,t=0,C=arguments.length,H={};t=0&&(C=e.slice(i+1),e=e.slice(0,i)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:C}}))}function n(e,t){for(var C,i=0,H=e.length;i0)for(var C,i,H=new Array(C),n=0;n=0&&C._call.call(null,e),C=C._next;--i}function c(){L=(r=a.now())+o,i=H=0;try{A()}finally{i=0,m(),L=0}}function h(){var e=a.now(),t=e-r;t>V&&(o-=t,r=e)}function m(){for(var e,i,H=t,n=1/0;H;)H._call?(n>H._time&&(n=H._time),e=H,H=H._next):(i=H._next,H._next=null,H=e?e._next=i:t=i);C=e,f(n)}function f(e){i||(H&&(H=clearTimeout(H)),e-L>24?(e<1/0&&(H=setTimeout(c,e-a.now()-o)),n&&(n=clearInterval(n))):(n||(r=a.now(),n=setInterval(h,V)),i=1,M(c)))}function p(e,t,C){var i=new d;return t=null==t?0:+t,i.restart((C=>{i.stop(),e(C+t)}),t,C),i}function g(e,t,C){var i=new d,H=t;return null==t?(i.restart(e,t,C),i):(i._restart=i.restart,i.restart=function(e,t,C){t=+t,C=null==C?s():+C,i._restart((function n(V){V+=H,i._restart(n,H+=t,C),e(V)}),t,C)},i.restart(e,t,C),i)}d.prototype=u.prototype={constructor:d,restart:function(e,i,H){if("function"!=typeof e)throw new TypeError("callback is not a function");H=(null==H?s():+H)+(null==i?0:+i),this._next||C===this||(C?C._next=this:t=this,C=this),this._call=e,this._time=H,f()},stop:function(){this._call&&(this._call=null,this._time=1/0,f())}},e.interval=g,e.now=s,e.timeout=p,e.timer=u,e.timerFlush=A,Object.defineProperty(e,"__esModule",{value:!0})}(t)})),zy=fe((function(e,t){!function(e,t,C,i){function H(e,t){var C,i=1;function H(){var H,n,V=C.length,r=0,L=0;for(H=0;Hl+a||id+a||nM.index){var s=l-r.x-r.vx,c=d-r.y-r.vy,h=s*s+c*c;he.r&&(e.r=e[t].r)}function l(){if(C){var t,H,n=C.length;for(i=new Array(n),t=0;t[o(e,t,i),e])));for(n=0,H=new Array(L);n(e=(l*e+d)%u)/u}function c(e){return e.x}function h(e){return e.y}var m=10,f=Math.PI*(3-Math.sqrt(5));function p(e){var t,H=1,n=.001,V=1-Math.pow(n,1/300),r=0,L=.6,o=new Map,a=i.timer(l),M=C.dispatch("tick","end"),s=A();function l(){d(),M.call("tick",t),H1?(null==C?o.delete(e):o.set(e,c(C)),t):o.get(e)},find:function(t,C,i){var H,n,V,r,L,o=0,a=e.length;for(null==i?i=1/0:i*=i,o=0;o1?(M.on(e,C),t):M.on(e)}}}function g(){var e,C,i,H,r,L=n(-30),o=1,a=1/0,M=.81;function s(i){var n,V=e.length,r=t.quadtree(e,c,h).visitAfter(d);for(H=i,n=0;n=a)){(e.data!==C||e.next)&&(0===s&&(u+=(s=V(i))*s),0===l&&(u+=(l=V(i))*l),u1?1:H)>=1?this.end(!e.infinite):(e.tick&&e.tick(H),e.animate&&this.refreshPositions(e.nodes,e,e.fit))}},{key:"end",value:function(e){var t=this.state;this.refreshPositions(t.nodes,t,t.fit),this.emit("layoutstop",t.cy),this.reset(e)}},{key:"reset",value:function(e){this.simulation&&this.simulation.stop();var t=this.state;return this.destroyedEvent&&this.destroyedEvent(),(e||!t.infinite)&&this.removeCytoscapeEvents&&this.removeCytoscapeEvents(),t.animate&&this.regrabify(t.nodes),this}},{key:"run",value:function(){var e=this;this.reset();var t,C=this,i=this.state,H=!1;if(i.currentBoundingBox=this.makeBoundingBox(i.boundingBox,i.cy),i.ready&&C.one("layoutready",i.ready),i.stop&&C.one("layoutstop",i.stop),i.nodes.forEach((function(t){return e.setInitialPositionState(t,i)})),H||(H=!0,C.emit("layoutready")),!C.simulation){var r=i.nodes.map((function(e){return V(C.getScratch(e),e.data())})),L=i.edges.map((function(e){return V({},e.data())}));C.simulation=n.forceSimulation(r),i.alpha&&C.simulation.alpha(i.alpha),i.alphaMin&&C.simulation.alphaMin(i.alphaMin),i.alphaDecay&&C.simulation.alphaDecay(i.alphaDecay),i.alphaTarget&&C.simulation.alphaTarget(i.alphaTarget),i.velocityDecay&&C.simulation.velocityDecay(i.velocityDecay);var o=n.forceCollide();i.collideRadius&&o.radius(i.collideRadius),i.collideStrength&&o.strength(i.collideStrength),i.collideIterations&&o.iterations(i.collideIterations);var a=n.forceLink(L);i.linkId&&a.id(i.linkId),i.linkDistance&&a.distance(i.linkDistance),i.linkStrength&&a.strength(i.linkStrength),i.linkIterations&&a.iterations(i.linkIterations);var M=n.forceManyBody();i.manyBodyStrength&&M.strength(i.manyBodyStrength),i.manyBodyTheta&&M.theta(i.manyBodyTheta),i.manyBodyDistanceMin&&M.distanceMin(i.manyBodyDistanceMin),i.manyBodyDistanceMax&&M.distanceMax(i.manyBodyDistanceMax);var s=n.forceX();i.xX&&s.x(i.xX),i.xStrength&&s.strength(i.xStrength);var l=n.forceY();i.yY&&l.y(i.yY),i.yStrength&&l.strength(i.yStrength);var d=null;(i.radialRadius||i.radialStrength||i.radialX||i.radialY)&&(d=n.forceRadial(),i.radialRadius&&d.radius(i.radialRadius),i.radialStrength&&d.strength(i.radialStrength),i.radialX&&d.x(i.radialX),i.radialY&&d.y(i.radialY));var u=n.forceCenter(i.currentBoundingBox.w/2,i.currentBoundingBox.h/2);C.simulation.force("collide",o).force("link",a).force("many-body",M).force("x",s).force("y",l).force("center",u),d&&C.simulation.force("radius",d),C.simulation.on("tick",(function(){C.tick()})).on("end",(function(){C.end()}))}C.destroyedEvent||(i.cy.one("destroy",t=function(){C.stop()}),C.destroyedEvent=function(){i.cy.off("destroy",t),C.destroyedEvent=null});if(C.prerun(i),C.emit("layoutstart"),i.progress=0,i.iterations=0,i.startTime=Date.now(),i.animate){var A=Math.abs((i.alpha||1)-(i.alphaTarget||0))/3;if(!C.removeCytoscapeEvents){var c=function(e){var t=this,H=t.position();if(e.cyTarget===t||e.target===t){var n=C.getScratch(t);i.progress=0,i.iterations=0,i.startTime=Date.now(),n.x=H.x,n.y=H.y,"grab"===e.type?C.simulation.alphaTarget(A).restart():"unlock"===e.type||"free"===e.type?(i.fixedAfterDragging?(n.fx=H.x,n.fy=H.y):(delete n.fx,delete n.fy),C.simulation.alphaTarget(A).restart()):(n.fx=H.x,n.fy=H.y)}};C.removeCytoscapeEvents=function(){i.nodes.off("grab free drag lock unlock",c),C.removeCytoscapeEvents=null},i.nodes.on("grab free drag lock unlock",c)}C.ungrabify(i.nodes)}return C.postrun(i),this}},{key:"prerun",value:function(){}},{key:"postrun",value:function(){}},{key:"stop",value:function(){return this.reset(!0)}}]),e}();e.exports=r},function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;in+t.spotlightPadding?n+t.spotlightPadding:t.indicatorSize;c.beginPath(),c.fillRect(-s/2,-s/2,s,s),c.closePath(),c.fill(),c.rotate(-M),c.translate(-o,-a),c.beginPath(),c.arc(i+t.activePadding,i+t.activePadding,n+t.spotlightPadding,0,2*Math.PI,!0),c.closePath(),c.fill(),c.globalCompositeOperation="source-over"}function Z(){var e=o(),t=m,C=m;u.width=t*e,u.height=C*e,u.style.width=t+"px",u.style.height=C+"px",c.setTransform(1,0,0,1,0,0),c.scale(e,e)}n.insertBefore(l,n.firstChild),l.appendChild(d),d.appendChild(u),r(l,{position:"absolute",zIndex:t.zIndex,userSelect:"none",pointerEvents:"none"}),["mousedown","mousemove","mouseup","contextmenu"].forEach((function(e){l.addEventListener(e,(function(e){return e.preventDefault(),!1}))})),r(d,{display:"none",width:m+"px",height:m+"px",position:"absolute",zIndex:1,marginLeft:-t.activePadding+"px",marginTop:-t.activePadding+"px",userSelect:"none"}),u.width=m,u.height=m;var S=!0,b={},w=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){return setTimeout(e,16)};Z(),function e(){b.drawBg&&v.apply(null,b.drawBg),b.drawCommands&&y.apply(null,b.drawCommands),b={},S&&w(e)}();var x,O,k,E,P,T,_,B,D=void 0,N=void 0,R=void 0,F={on:function(e,t,i){var H=i;return"core"===t&&(H=function(e){if(e.cyTarget===C||e.target===C)return i.apply(this,[e])}),s.handlers.push({events:e,selector:t,fn:H}),"core"===t?C.on(e,H):C.on(e,t,H),this}};function I(){S=!1,function(){for(var e=s.handlers,t=0;t0,H=(i?C.touches[0].pageX:C.pageX)-window.pageXOffset,n=(i?C.touches[0].pageY:C.pageY)-window.pageYOffset;f=void 0;var V=H-p.left-D,r=n-p.top-N;0===V&&(V=.01);var L=Math.sqrt(V*V+r*r),o=(r*r-L*L-V*V)/(-2*L*V),a=Math.acos(o),s=void 0;if(M&&M.isNode instanceof Function&&M.isNode()&&!M.isParent()&&!t.atMouse?(s=M.renderedOuterWidth(),R=s/2,R=!t.adaptativeNodeSpotlightRadius&&t.minSpotlightRadius?Math.max(R,t.minSpotlightRadius):R,R=!t.adaptativeNodeSpotlightRadius&&t.maxSpotlightRadius?Math.min(R,t.maxSpotlightRadius):R):(R=(s=1)/2,R=t.minSpotlightRadius?Math.max(R,t.minSpotlightRadius):R,R=t.maxSpotlightRadius?Math.min(R,t.maxSpotlightRadius):R),h=s/2+(t.menuRadius instanceof Function?t.menuRadius(M):Number(t.menuRadius)),Lh+t.activePadding+t.outsideMenuCancel)g(h,R);else{g(h,R);var l=V*h/L,d=r*h/L;r>0&&(a=Math.PI+Math.abs(a-Math.PI));for(var u=2*Math.PI/A.length,c=Math.PI/2,m=c+u,v=0;v1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:document,C=t.querySelectorAll(e),i=0;ie.data("name").localeCompare(t.data("name"));function CZ(e,t,C){let{name:i}=t,{nodes:H}=t,{onClickText:n}=t,{onClickButton:V}=t,{icon:r=null}=t,{icon_tooltip:L=null}=t,{ctxmenu:o}=t,a=!0;return e.$$set=e=>{"name"in e&&C(0,i=e.name),"nodes"in e&&C(1,H=e.nodes),"onClickText"in e&&C(2,n=e.onClickText),"onClickButton"in e&&C(3,V=e.onClickButton),"icon"in e&&C(4,r=e.icon),"icon_tooltip"in e&&C(5,L=e.icon_tooltip),"ctxmenu"in e&&C(6,o=e.ctxmenu)},[i,H,n,V,r,L,o,a,function(){C(7,a=!a)},(e,t)=>n(e,t),(e,t)=>o(e,t)]}class iZ extends te{constructor(e){super(),ee(this,e,CZ,eZ,A,{name:0,nodes:1,onClickText:2,onClickButton:3,icon:4,icon_tooltip:5,ctxmenu:6})}}function HZ(e){let t,C,i,H,n;return C=new iZ({props:{nodes:e[0],name:"Nodes in graph",ctxmenu:e[2],onClickText:e[3]}}),H=new iZ({props:{nodes:e[1],name:"Hidden nodes",ctxmenu:e[2],onClickText:e[3],icon:ca.ag_unhide,icon_tooltip:"Show in graph",onClickButton:e[4]}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),x(t,"class","juggl-nodes-pane")},m(e,V){f(e,t,V),Q(C,t,null),m(t,i),Q(H,t,null),n=!0},p(e,[t]){const i={};1&t&&(i.nodes=e[0]),C.$set(i);const n={};2&t&&(n.nodes=e[1]),H.$set(n)},i(e){n||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),n=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),n=!1},d(e){e&&p(t),K(C),K(H)}}}function nZ(t,C,i){let H=null,V=Wo().collection(),r=Wo().collection();return[V,r,function(t,C){const i=new e.Menu,V=n.fromNode(t),r=H.plugin.metadata.getFirstLinkpathDest(V.id,"");void 0!==r&&H.plugin.app.workspace.trigger("file-menu",i,r,"my-context-menu",null),H.mode.fillMenu(i,t),i.showAtPosition({x:C.x,y:C.y})},function(e,t){H.plugin.openFileFromNode(e,t.metaKey)},function(e){e.removeClass("hard-filtered"),H.onGraphChanged(!0,!0)},function(e){if(!e)return H=null,i(0,V=Wo().collection()),void i(1,r=Wo().collection());H=e,i(0,V=H.viz.nodes(":visible")),i(1,r=H.viz.nodes(".hard-filtered"))}]}class VZ extends te{constructor(e){super(),ee(this,e,nZ,HZ,A,{setViz:5})}get setViz(){return this.$$.ctx[5]}}class rZ extends e.FuzzySuggestModal{constructor(e,t,C){super(e),this.callback=t,this.resultContainerEl.addClass("juggl-icon-picker"),this.color=C}getItemText(e){return e.name}getItems(){const e=[{name:"No icon",path:"",color:this.color}];return e.push(...Object.keys(ua).map((e=>({name:e.slice(3).replace(/([A-Z])/g," $1").trim(),path:ua[e],color:this.color})))),e}onChooseItem(e,t){this.callback(e)}renderSuggestion(e,t){t.empty();const C=Aa(e.item.path);t.createEl("span",{cls:"react-icon "}).innerHTML=C,super.renderSuggestion(e,t)}}function LZ(e,t,C){const i=e.slice();return i[15]=t[C],i[16]=t,i[17]=C,i}function oZ(e,t,C){const i=e.slice();return i[18]=t[C],i}function aZ(e){let t,C,i,H,n,V,r,L,o=e[15].filter+"";return{c(){t=v("div"),C=v("div"),C.innerHTML='',i=S(),H=Z(o),n=S(),V=v("br"),x(C,"class","clickable-icon"),E(C,"display","inline"),x(C,"aria-label","Show group options"),x(t,"class","juggl-style-group-hidden")},m(o,a){f(o,t,a),m(t,C),m(t,i),m(t,H),f(o,n,a),f(o,V,a),r||(L=w(C,"click",(function(){u(e[7](e[15],!0))&&e[7](e[15],!0).apply(this,arguments)})),r=!0)},p(t,C){e=t,1&C&&o!==(o=e[15].filter+"")&&O(H,o)},d(e){e&&p(t),e&&p(n),e&&p(V),r=!1,L()}}}function MZ(e){let t,C,i,H,n,V,r,L,o,a,M,s,l,A,c,h,b,E,T,_,B,D,N,R,F,z,j,G,W,$,U,Y,X,q,Q,K=Math.round(100*e[15].size)/100+"";function J(){e[10].call(M,e[16],e[17])}function ee(){e[11].call(E,e[16],e[17])}let te=ie,Ce=[];for(let t=0;t',H=S(),n=v("div"),V=y("svg"),r=y("path"),a=S(),M=v("input"),s=S(),l=v("div"),l.innerHTML='',A=S(),c=v("div"),h=S(),b=v("div"),E=v("input"),T=S(),_=v("select");for(let e=0;eNew group',x(t,"class","juggl-list-header"),x(V,"class","graph-color-button-container"),x(H,"class","juggl-style-group-container")},m(o,M){f(o,t,M),m(t,C),f(o,i,M),f(o,H,M);for(let e=0;e{"groups"in e&&C(0,i=e.groups),"title"in e&&C(1,H=e.title),"onChangeFilter"in e&&C(2,n=e.onChangeFilter),"onChangeGroups"in e&&C(3,V=e.onChangeGroups),"plugin"in e&&C(9,r=e.plugin)},[i,H,n,V,function(){i.push({...de}),C(0,i),V()},function(e){i.remove(e),C(0,i),n(),V()},function(e){new rZ(r.app,(function(t){e.icon=t,V(),C(0,i)}),e.icon.color).open()},function(e,t){e.showInPane=t,C(0,i)},function(e){e.show=!e.show,V(),C(0,i)},r,function(e,t){e[t].filter=this.value,C(0,i)},function(e,t){e[t].color=this.value,C(0,i)},function(e,t){e[t].shape=function(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}(this),C(0,i)},function(e,t){e[t].icon.color=this.value,C(0,i)},function(e,t){var H;e[t].size=""===(H=this.value)?null:+H,C(0,i)}]}class mZ extends te{constructor(e){super(),ee(this,e,hZ,cZ,A,{groups:0,title:1,onChangeFilter:2,onChangeGroups:3,plugin:9})}}function fZ(e){let t,C,i,H,n;return C=new mZ({props:{groups:e[1],title:"Local style groups",onChangeGroups:e[3],onChangeFilter:e[5],plugin:e[0]}}),H=new mZ({props:{groups:e[2],title:"Global style groups",onChangeGroups:e[4],onChangeFilter:e[6],plugin:e[0]}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),x(t,"class","juggl-style-pane")},m(e,V){f(e,t,V),Q(C,t,null),m(t,i),Q(H,t,null),n=!0},p(e,[t]){const i={};2&t&&(i.groups=e[1]),1&t&&(i.plugin=e[0]),C.$set(i);const n={};1&t&&(n.plugin=e[0]),H.$set(n)},i(e){n||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),n=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),n=!1},d(e){e&&p(t),K(C),K(H)}}}function pZ(e,t,C){let{viz:i}=t,{plugin:H}=t,n=H?.settings;let V=[],r=n.globalStyleGroups;return e.$$set=e=>{"viz"in e&&C(7,i=e.viz),"plugin"in e&&C(0,H=e.plugin)},[H,V,r,function(){i&&i.updateStylesheet()},function(){H.saveData(n),H.activeGraphs().forEach((e=>e.updateStylesheet()))},function(){i&&i.assignStyleGroups()},function(){H.saveData(n),H.activeGraphs().forEach((e=>e.assignStyleGroups()))},i,function(e){C(7,i=e),C(1,V=i?i.settings.styleGroups:[])}]}class gZ extends te{constructor(e){super(),ee(this,e,pZ,fZ,A,{viz:7,plugin:0,setViz:8})}get setViz(){return this.$$.ctx[8]}}class vZ extends e.ItemView{constructor(e,t){super(e),this.activeViz=null,this.changeRef=null,this.plugin=t;const C=this;this.registerEvent(this.plugin.app.workspace.on("active-leaf-change",(e=>{if(this.changeRef&&(this.activeViz.offref(this.changeRef),this.changeRef=null),e)if("juggl_view"===e.view.getViewType()){const t=e.view.juggl;if(this.changeRef=t.on("elementsChange",(()=>{C.onActiveVizChange()})),t===this.activeViz)return;this.activeViz=t}else e.view instanceof vZ||(this.activeViz=null);else this.activeViz=null;this.onActiveVizChange()})))}setViz(e){this.activeViz=e,this.onActiveVizChange()}}class yZ extends vZ{constructor(e,t){super(e,t),this.icon="ag-node-list"}onload(){super.onload(),this.pane=new VZ({target:this.contentEl})}getDisplayText(){return"Juggl nodes"}getViewType(){return"juggl_nodes"}onActiveVizChange(){this.pane&&this.pane.setViz.bind(this.pane)(this.activeViz)}}class ZZ extends vZ{constructor(e,t){super(e,t),this.icon="ag-style"}onload(){super.onload(),this.pane=new gZ({target:this.contentEl,props:{plugin:this.plugin}})}getDisplayText(){return"Juggl style"}getViewType(){return"juggl_style"}onActiveVizChange(){this.pane&&this.pane.setViz.bind(this.pane)(this.activeViz)}}class SZ extends e.Component{constructor(e){super(),this.graphs=[],this.plugin=e,this.adapter=this.plugin.app.vault.adapter}async onload(){super.onload();try{await this.adapter.mkdir(H(this.plugin.vault));const e=require("path");this.graphs=(await this.adapter.list(H(this.plugin.vault))).folders.map((t=>e.basename(t)))}catch(e){console.log(e)}}async saveGraph(e,t){try{const C=H(t.vault)+e;await this.adapter.mkdir(C);const i=t.viz.json();await this.adapter.write(C+"/graph.json",JSON.stringify(i));const n=t.settings;await this.adapter.write(C+"/settings.json",JSON.stringify(n)),this.graphs.contains(e)||this.graphs.push(e)}catch(e){console.log(e)}}async loadGraph(e,t){try{const C=H(t.vault)+e,i=JSON.parse(await this.adapter.read(C+"/graph.json")),V=JSON.parse(await this.adapter.read(C+"/settings.json"));t.viz.json(i),t.settings=V;const r=t.viz.nodes();for(let e=1;e{"cancelCallback"in e&&C(0,i=e.cancelCallback),"continueCallback"in e&&C(1,H=e.continueCallback)},[i,H]}class xZ extends te{constructor(e){super(),ee(this,e,wZ,bZ,A,{cancelCallback:0,continueCallback:1})}}class OZ extends e.Modal{constructor(e,t){super(e);new xZ({target:this.modalEl,props:{cancelCallback:this.close.bind(this),continueCallback:t}})}}class kZ extends e.Plugin{constructor(){super(...arguments),this.coreStores={},this.stores=[]}async onload(){super.onload(),console.log("Loading Juggl"),iM(Wo),Wo.use(Ss),Wo.use(Ru),Wo.use(Ny),Wo.use(ju),Wo.use(Gy),Wo.use($y),Wo.use(Yy),Object.keys(ca).forEach((t=>{e.addIcon(t.replace("_","-").replace("_","-"),Aa(ca[t]))})),this.vault=this.app.vault,this.metadata=this.app.metadataCache,this.path=this.vault.getRoot().path;const t=new a(this);this.addChild(t),this.workspaceManager=new SZ(this),this.addChild(this.workspaceManager),this.registerCoreStore(t,"Obsidian"),ue.globalStyleGroups=function(e){const t={},C=[["#0089BA","#2C73D2","#008E9B","#0081CF","#008F7A","#008E9B"],["#D65DB1","#0082C1","#9270D3","#007F93","#007ED9","#007660"],["#FF9671","#A36AAA","#F27D88","#6967A9","#D26F9D","#1b6299"],["#FFC75F","#4C9A52","#C3BB4E","#00855B","#88AC4B","#006F61"],["#FF6F91","#6F7F22","#E07250","#257A3E","#AC7C26","#006F5F"],["#F9F871","#2FAB63","#B8E067","#008E63","#78C664","#007160"]],i=[];for(const e of Array(6).keys())for(const t of Array(6).keys())i.push(C[t][e]);let H=0;for(const C of e.vault.getMarkdownFiles()){const n=e.metadata.getFileCache(C);n?.tags&&n.tags.forEach((e=>{const C=e.tag.slice(1).split("/"),n=[];for(const e in C){const t=C.slice(0,parseInt(e)+1).join("-");n.push(t)}for(const e of n)e in t||(t[e]=i[H],H+=1,H>=i.length&&(H=0))}))}const n=[{filter:"class:dangling",color:ne("color-fill-unresolved"),shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1},{filter:"class:file -class:image",color:ne("color-fill"),shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1}];for(const e of Object.keys(t))n.push({filter:`tag:#${e}`,color:t[e],shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1});return n}(this),this.settings=Object.assign({},ue,await this.loadData()),this.settings.globalStyleGroups=this.settings.globalStyleGroups.map((e=>Object.assign({},de,e))),this.settings.graphSettings=Object.assign({},ue.graphSettings,this.settings.graphSettings),this.settings.embedSettings=Object.assign({},ue.embedSettings,this.settings.embedSettings),this.addCommand({id:"open-vis",name:"Open local graph of note",callback:()=>{const e=this.app.workspace.getActiveFile().name;this.openLocalGraph(e)}}),this.addCommand({id:"open-vis-global",name:"Open global graph",callback:()=>{this.openGlobalGraph()}}),this.addSettingTab(new Ae(this.app,this)),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t&&e.addItem((e=>{e.setTitle("Open Juggl").setIcon("dot-network").onClick((e=>{"md"===t.extension?this.openLocalGraph(t.basename):this.openLocalGraph(t.name)}))}))}))),this.registerMarkdownCodeBlockProcessor("juggl",(async(t,C,i)=>{setTimeout((async()=>{const i=e.parseYaml(t);try{const e=Object.assign({},this.settings.embedSettings,i);if(!le.contains(e.layout))throw new Error(`Invalid layout. Choose one from ${le}`);const t={dataStores:[this.coreStores[e.coreStore]].concat(this.stores),coreStore:this.coreStores[e.coreStore]};if(C.style.width=e.width,C.style.height=e.height,Object.keys(i).contains("local"))this.addChild(new tM(C,this,t,e,[i.local]));else if(Object.keys(i).contains("workspace")){const H=new tM(C,this,t,e,null);if(!this.workspaceManager.graphs.contains(i.workspace))throw new Error("Did not recognize workspace. Did you misspell its name?");this.addChild(H),await this.workspaceManager.loadGraph(i.workspace,H)}else{if(!Object.keys(i).contains("oql"))throw new Error("Invalid query. Specify either the local property or the workspace property.");if(!("obsidian-query-language"in this.app.plugins.plugins))throw new Error("The Obsidian Query Language plugin isn't loaded, so cannot query using oql!");{const H=await this.app.plugins.plugins["obsidian-query-language"].search(i.oql);e.expandInitial=!1,this.addChild(new tM(C,this,t,e,H.map((e=>e.title))))}}}catch(e){const t=document.createElement("div");t.addClass("juggl-error"),t.innerText=e.message,C.appendChild(t)}}),200)}));const C=this;this.registerView("juggl_nodes",(e=>new yZ(e,C))),this.registerView("juggl_style",(e=>new ZZ(e,C)));const i=function(){if(0===C.app.workspace.getLeavesOfType("juggl_nodes").length){C.app.workspace.getRightLeaf(!1).setViewState({type:"juggl_nodes"})}},H=function(){if(0===C.app.workspace.getLeavesOfType("juggl_style").length){C.app.workspace.getRightLeaf(!1).setViewState({type:"juggl_style"})}};this.app.workspace.onLayoutReady(i),this.app.workspace.onLayoutReady(H),this.addCommand({id:"show-nodes-pane",name:"Open Nodes Pane",checkCallback:e=>{if(e)return 0===this.app.workspace.getLeavesOfType("juggl_nodes").length;i()}}),this.addCommand({id:"show-style-pane",name:"Open Style Pane",checkCallback:e=>{if(e)return 0===this.app.workspace.getLeavesOfType("juggl_style").length;H()}});const n=Ce(this.vault);this.registerEvent(this.vault.on("raw",(e=>{if(e===n){console.log(`Updating stylesheet from ${n}`);for(const e of this.activeGraphs())e.updateStylesheet().then()}}))),this.setGlobalIcon(),this.addChild(new CM(this))}setGlobalIcon(){this.ribbonIcon&&this.ribbonIcon.detach(),this.settings.globalGraphRibbon&&(this.ribbonIcon=this.addRibbonIcon("ag-concentric","Juggl global graph",(()=>{this.openGlobalGraph()})))}async openFileFromNode(e,t=!1){const C=n.fromNode(e);if("core"!==C.storeId)return null;let i=this.app.metadataCache.getFirstLinkpathDest(C.id,"");if(i)await this.openFile(i);else{const e=C.id+".md";i=await this.vault.create(e,""),await this.openFile(i)}return i}async openFile(e,t=!1){await this.app.workspace.getLeaf(t).openFile(e)}async openLocalGraph(e){const t=this.app.workspace.splitActiveLeaf(this.settings.splitDirection),C=new Xy(t,this.settings.graphSettings,this,[e]);await t.open(C)}async openGlobalGraph(){const e=this.app.workspace.getLeaf(!1),t=this.app.vault.getFiles().map((e=>"md"===e.extension?e.basename:e.name));if(t.length>250){const C=new OZ(this.app,(async()=>{const i=new Xy(e,this.settings.globalGraphSettings,this,t);await e.open(i),C.close()}));C.open()}else{const C=new Xy(e,this.settings.globalGraphSettings,this,t);await e.open(C)}}activeGraphs(){return this.app.workspace.getLeavesOfType("juggl_view").map((e=>e.view.juggl))}async onunload(){super.onunload(),console.log("Unloading Juggl"),this.app.workspace.detachLeavesOfType("juggl_nodes"),this.app.workspace.detachLeavesOfType("juggl_style"),this.watcher&&this.watcher.close()}registerStore(e){this.stores.push(e)}removeStore(e){this.stores.remove(e)}registerCoreStore(e,t){if("core"!==e.storeId())throw new Error("Can only register IDataStores as core if their storeId is core");this.coreStores[t]=e}createJuggl(e,t,C,i){return t||(t=Object.assign({},ue.embedSettings),i&&(t.expandInitial=!1)),C||(C=this.defaultStores()),new tM(e,this,C,t,i)}defaultStores(){return{dataStores:[this.coreStores.Obsidian].concat(this.stores),coreStore:this.coreStores.Obsidian}}}kZ.CAT_DANGLING="dangling",module.exports=kZ; + */ + +var searchQueryParser$1 = createCommonjsModule(function (module, exports) { +exports.parse = function (string, options) { + + // Set a default options object when none is provided + if (!options) { + options = {offsets: true}; + } else { + // If options offsets was't passed, set it to true + options.offsets = (typeof options.offsets === 'undefined' ? true : options.offsets); + } + + if (!string) { + string = ''; + } + + // When a simple string, return it + if (-1 === string.indexOf(':') && !options.tokenize) { + return string; + } + // When no keywords or ranges set, treat as a simple string + else if (!options.keywords && !options.ranges && !options.tokenize){ + return string; + } + // Otherwise parse the advanced query syntax + else { + // Our object to store the query object + var query = {text: []}; + // When offsets is true, create their array + if (options.offsets) { + query.offsets = []; + } + var exclusion = {}; + var terms = []; + // Get a list of search terms respecting single and double quotes + var regex = /(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g; + var match; + while ((match = regex.exec(string)) !== null) { + var term = match[0]; + var sepIndex = term.indexOf(':'); + if (sepIndex !== -1) { + term.split(':'); + var key = term.slice(0, sepIndex), + val = term.slice(sepIndex + 1); + // Strip surrounding quotes + val = val.replace(/^\"|\"$|^\'|\'$/g, ''); + // Strip backslashes respecting escapes + val = (val + '').replace(/\\(.?)/g, function (s, n1) { + switch (n1) { + case '\\': + return '\\'; + case '0': + return '\u0000'; + case '': + return ''; + default: + return n1; + } + }); + terms.push({ + keyword: key, + value: val, + offsetStart: match.index, + offsetEnd: match.index + term.length + }); + } else { + var isExcludedTerm = false; + if (term[0] === '-') { + isExcludedTerm = true; + term = term.slice(1); + } + + // Strip surrounding quotes + term = term.replace(/^\"|\"$|^\'|\'$/g, ''); + // Strip backslashes respecting escapes + term = (term + '').replace(/\\(.?)/g, function (s, n1) { + switch (n1) { + case '\\': + return '\\'; + case '0': + return '\u0000'; + case '': + return ''; + default: + return n1; + } + }); + + if (isExcludedTerm) { + if (exclusion['text']) { + if (exclusion['text'] instanceof Array) { + exclusion['text'].push(term); + } else { + exclusion['text'] = [exclusion['text']]; + exclusion['text'].push(term); + } + } else { + // First time seeing an excluded text term + exclusion['text'] = term; + } + } else { + terms.push({ + text: term, + offsetStart: match.index, + offsetEnd: match.index + term.length + }); + } + } + } + // Reverse to ensure proper order when pop()'ing. + terms.reverse(); + // For each search term + var term; + while (term = terms.pop()) { + // When just a simple term + if (term.text) { + // We add it as pure text + query.text.push(term.text); + // When offsets is true, push a new offset + if (options.offsets) { + query.offsets.push(term); + } + } + // We got an advanced search syntax + else { + var key = term.keyword; + // Check if the key is a registered keyword + options.keywords = options.keywords || []; + var isKeyword = false; + var isExclusion = false; + if (!/^-/.test(key)) { + isKeyword = !(-1 === options.keywords.indexOf(key)); + } else if (key[0] === '-') { + var _key = key.slice(1); + isKeyword = !(-1 === options.keywords.indexOf(_key)); + if (isKeyword) { + key = _key; + isExclusion = true; + } + } + + // Check if the key is a registered range + options.ranges = options.ranges || []; + var isRange = !(-1 === options.ranges.indexOf(key)); + // When the key matches a keyword + if (isKeyword) { + // When offsets is true, push a new offset + if (options.offsets) { + query.offsets.push({ + keyword: key, + value: term.value, + offsetStart: isExclusion ? term.offsetStart + 1 : term.offsetStart, + offsetEnd: term.offsetEnd + }); + } + + var value = term.value; + // When value is a thing + if (value.length) { + // Get an array of values when several are there + var values = value.split(','); + if (isExclusion) { + if (exclusion[key]) { + // ...many times... + if (exclusion[key] instanceof Array) { + // ...and got several values this time... + if (values.length > 1) { + // ... concatenate both arrays. + exclusion[key] = exclusion[key].concat(values); + } + else { + // ... append the current single value. + exclusion[key].push(value); + } + } + // We saw that keyword only once before + else { + // Put both the current value and the new + // value in an array + exclusion[key] = [exclusion[key]]; + exclusion[key].push(value); + } + } + // First time we see that keyword + else { + // ...and got several values this time... + if (values.length > 1) { + // ...add all values seen. + exclusion[key] = values; + } + // Got only a single value this time + else { + // Record its value as a string + if (options.alwaysArray) { + // ...but we always return an array if option alwaysArray is true + exclusion[key] = [value]; + } else { + // Record its value as a string + exclusion[key] = value; + } + } + } + } else { + // If we already have seen that keyword... + if (query[key]) { + // ...many times... + if (query[key] instanceof Array) { + // ...and got several values this time... + if (values.length > 1) { + // ... concatenate both arrays. + query[key] = query[key].concat(values); + } + else { + // ... append the current single value. + query[key].push(value); + } + } + // We saw that keyword only once before + else { + // Put both the current value and the new + // value in an array + query[key] = [query[key]]; + query[key].push(value); + } + } + // First time we see that keyword + else { + // ...and got several values this time... + if (values.length > 1) { + // ...add all values seen. + query[key] = values; + } + // Got only a single value this time + else { + if (options.alwaysArray) { + // ...but we always return an array if option alwaysArray is true + query[key] = [value]; + } else { + // Record its value as a string + query[key] = value; + } + } + } + } + } + } + // The key allows a range + else if (isRange) { + // When offsets is true, push a new offset + if (options.offsets) { + query.offsets.push(term); + } + + var value = term.value; + // Range are separated with a dash + var rangeValues = value.split('-'); + // When both end of the range are specified + // keyword:XXXX-YYYY + query[key] = {}; + if (2 === rangeValues.length) { + query[key].from = rangeValues[0]; + query[key].to = rangeValues[1]; + } + // When pairs of ranges are specified + // keyword:XXXX-YYYY,AAAA-BBBB + else if (!rangeValues.length % 2) ; + // When only getting a single value, + // or an odd number of values + else { + query[key].from = value; + } + } + else { + // We add it as pure text + var text = term.keyword + ':' + term.value; + query.text.push(text); + + // When offsets is true, push a new offset + if (options.offsets) { + query.offsets.push({ + text: text, + offsetStart: term.offsetStart, + offsetEnd: term.offsetEnd + }); + } + } + } + } + + // Concatenate all text terms if any + if (query.text.length) { + if (!options.tokenize) { + query.text = query.text.join(' ').trim(); + } + } + // Just remove the attribute text when it's empty + else { + delete query.text; + } + + // Return forged query object + query.exclude = exclusion; + return query; + } + +}; + +exports.stringify = function (queryObject, options, prefix) { + + // Set a default options object when none is provided + if (!options) { + options = {offsets: true}; + } + + // If the query object is falsy we can just return an empty string + if (!queryObject) { + return ''; + } + + // If the query object is already a string, we can return it immediately + if (typeof queryObject === 'string') { + return queryObject; + } + + // If the query object is an array, we can return it concatenated with a space + if (Array.isArray(queryObject)) { + return queryObject.join(' '); + } + + // If the query object does not have any keys, we can return an empty string + if (!Object.keys(queryObject).length) { + return ''; + } + + // If the query object contains only text which is a string, we can return it immediately + if (Object.keys(queryObject).length === 3 && !!queryObject.text && !!queryObject.offsets && !!queryObject.exclude && typeof queryObject.text === 'string') { + return queryObject.text; + } + + // We will use a prefix for the exclude syntax later one + if (!prefix) { + prefix = ''; + } + + // Helpers + var addQuotes = function (string) { + return string.indexOf(' ') > - 1 ? JSON.stringify(string) : string; + }; + var addPrefix = function (string) { + return prefix + string; + }; + + // Keep track of all single parts in this array + var parts = []; + + // Text + if (queryObject.text) { + var value = []; + if (typeof queryObject.text === 'string') { + value.push(queryObject.text); + } else { + value.push.apply(value, queryObject.text); + } + + if (value.length > 0) { + parts.push(value.map(addQuotes).map(addPrefix).join(' ')); + } + } + + // Keywords + if (options.keywords) { + options.keywords.forEach(function (keyword) { + if (!queryObject[keyword]) { + return + } + + var value = []; + if (typeof queryObject[keyword] === 'string') { + value.push(queryObject[keyword]); + } else { + value.push.apply(value, queryObject[keyword]); + } + + if (value.length > 0) { + parts.push(addPrefix(keyword + ':' + value.map(addQuotes).join(','))); + } + }); + } + + // Ranges + if (options.ranges) { + options.ranges.forEach(function (range) { + if (!queryObject[range]) { + return + } + + var value = queryObject[range].from; + var to = queryObject[range].to; + if (to) { + value = value + '-' + to; + } + + if (value) { + parts.push(addPrefix(range + ':' + value)); + } + }); + } + + // Exclude + if (queryObject.exclude) { + if (Object.keys(queryObject.exclude).length > 0) { + parts.push(exports.stringify(queryObject.exclude, options, '-')); + } + } + + return parts.join(' '); + +}; +}); + +var searchQueryParser = searchQueryParser$1; + +const _containsSelector = function (attribute, filters, op = '*=') { + if (typeof (filters) === 'string' || filters instanceof String) { + return [`[${attribute} ${op} '${filters}']`]; + } + return filters.map((s) => `[${attribute} ${op} '${s}']`); +}; +const _tagSelector = function (tag) { + if (typeof (tag) === 'string' || tag instanceof String) { + if (tag.length > 0 && tag[0] === '#') { + tag.slice(1); + // @ts-ignore + return [`.tag-${tag.slice(1).replaceAll('/', '-')}`]; + } + return []; + } + return tag.map((t) => { + if (t.length > 0 && t[0] === '#') { + // @ts-ignore + return `.tag-${t.slice(1).replaceAll('/', '-')}`; + } + return ''; + }); +}; +const _classSelector = function (clazz) { + if (typeof (clazz) === 'string' || clazz instanceof String) { + return [`.${clazz}`]; + } + return clazz.map((c) => `.${c}`); +}; +const literal = function (atomicQuery, key) { + switch (key) { + case 'exclude': return []; + case 'content': + case 'ignore-case': + case 'text': return _containsSelector('content', atomicQuery[key], '@*='); + case 'match-case': + return _containsSelector('content', atomicQuery[key], '*='); + case 'file': return _containsSelector('name', atomicQuery[key]); + case 'name': return _containsSelector('name', atomicQuery[key], '@*='); + case 'tag': return _tagSelector(atomicQuery[key]); + case 'class': return _classSelector(atomicQuery[key]); + case 'raw': return [atomicQuery[key]]; + default: return _containsSelector(key, atomicQuery[key]); + } +}; +const _parseAtomicQuery = function (query, nodes) { + const keys = new Set(); + nodes.forEach((node) => { + Object.keys(node.data()).forEach((key) => keys.add(key)); + }); + const keywords = ['file', 'tag', 'raw', 'match-case', 'ignore-case', 'class']; + keywords.push(...keys); + const options = { + keywords: keywords, + tokenize: true, + offsets: false, + }; + const parsedQuery = searchQueryParser.parse(query, options); + let selector = 'node'; + for (const key of Object.keys(parsedQuery)) { + selector += literal(parsedQuery, key).join(); + } + let filteredNodes = nodes.filter(selector); + if (parsedQuery.exclude) { + for (const key of Object.keys(parsedQuery.exclude)) { + for (const query of literal(parsedQuery.exclude, key)) { + const selector = 'node' + query; + filteredNodes = filteredNodes.not(selector); + } + } + } + return filteredNodes; +}; +const _parseConjuncts = function (query, toFilter) { + const conjuncts = []; + const negated = []; + let nesting = 0; + let startBrace = -1; + let lastEndBrace = -1; + for (let i = 0; i < query.length; i++) { + if (query[i] === '(') { + if (nesting === 0) { + startBrace = i; + const betweenBraces = query.slice(lastEndBrace + 1, i > 0 ? (query[i - 1] === '-' ? i - 1 : i) : i); + if (betweenBraces.trim().length > 0) { + negated.push(false); + conjuncts.push(betweenBraces); + } + } + nesting += 1; + } + else if (query[i] === ')') { + nesting -= 1; + if (nesting === 0) { + lastEndBrace = i; + negated.push(startBrace > 0 ? query[startBrace - 1] === '-' : false); + conjuncts.push(query.slice(startBrace + 1, lastEndBrace)); + } + } + else if (i === query.length - 1) { + const betweenBraces = query.slice(lastEndBrace + 1); + if (betweenBraces.trim().length > 0) { + negated.push(false); + conjuncts.push(betweenBraces); + } + } + } + let coll = toFilter; + for (let i = 0; i < conjuncts.length; i++) { + const recFiltered = _parseDisjuncts(conjuncts[i], coll, query); + if (negated[i]) { + coll = coll.difference(recFiltered); + } + else { + coll = coll.intersection(recFiltered); + } + } + return coll; +}; +const _parseDisjuncts = function (query, toFilter, lastDisjunct) { + if (lastDisjunct === query) { + return _parseAtomicQuery(query, toFilter); + } + const disjuncts = []; + let lastEnd = 0; + let nesting = 0; + for (let i = 0; i < query.length; i++) { + if (query[i] === '(') { + nesting += 1; + } + else if (query[i] === ')') { + nesting -= 1; + } + else if (nesting === 0 && query[i] === 'O' && + i + 1 < query.length && query[i + 1] === 'R') { + disjuncts.push(query.slice(lastEnd, i)); + lastEnd = i + 2; + } + } + if (lastEnd < query.length) { + disjuncts.push(query.slice(lastEnd)); + } + return disjuncts.reduce((acc, s) => + // Performance optimization: Use toFilter - acc to not consider elements that are already matched + acc.union(_parseConjuncts(s, toFilter.difference(acc))), cytoscape_cjs().collection()); +}; +const filter$1 = function (query, nodes) { + return _parseDisjuncts(query, nodes, ''); +}; + +let VIEW_COUNTER = 0; +class Juggl extends obsidian.Component { + constructor(element, plugin, dataStores, settings, initialNodes) { + super(); + this.rebuildRelations = true; + this.selectName = undefined; + this.hoverTimeout = {}; + this.vizReady = false; + this.destroyHover = null; + this.element = element; + this.settings = settings; + this.workspace = plugin.app.workspace; + this.initialNodes = initialNodes; + this.vault = plugin.app.vault; + this.plugin = plugin; + this.datastores = dataStores; + this.events = new obsidian.Events(); + if (this.settings.mode === 'local') { + this.mode = new LocalMode(this); + } + else if (this.settings.mode === 'workspace') { + this.mode = new WorkspaceMode(this); + } + this.addChild(this.mode); + this.debouncedRestartLayout = obsidian.debounce(this.restartLayout, DEBOUNCE_LAYOUT, true); + } + async onload() { + try { + this.element.addClass('cy-content'); + // Ensure the canvas fits the whole container + // this.element.setAttr('style', 'padding: 0'); + this.element.setAttr('tabindex', 0); + if (this.settings.toolbar) { + const toolbarDiv = document.createElement('div'); + toolbarDiv.addClass('cy-toolbar'); + this.element.appendChild(toolbarDiv); + this.mode.createToolbar(toolbarDiv); + } + const div = document.createElement('div'); + div.id = 'cy' + VIEW_COUNTER; + this.element.appendChild(div); + div.setAttr('style', `height: ${this.settings.height}; width:${this.settings.width}`); + div.setAttr('tabindex', '0'); + let nodes; + let idsInitial = null; + if (this.initialNodes) { + idsInitial = this.initialNodes.map((s) => new VizId(s, this.datastores.coreStore.storeId())); + if (this.settings.expandInitial) { + nodes = await this.neighbourhood(idsInitial); + } + else { + nodes = await Promise.all(idsInitial.map((id) => this.datastores.coreStore.get(id, this))); + } + // Filter nulls + nodes = nodes.filter((n) => n); + this.viz = cytoscape_cjs({ + container: div, + elements: nodes, + minZoom: 0.3, + maxZoom: 10, + wheelSensitivity: this.settings.zoomSpeed, + }); + } + else { + this.viz = cytoscape_cjs({ + container: div, + elements: [{ data: { id: 'a' } }, { data: { id: 'b' } }], + minZoom: 0.3, + maxZoom: 10, + wheelSensitivity: this.settings.zoomSpeed, + }); + } + this.viz.dblclick(); + if (this.settings.navigator) { + const navDiv = document.createElement('div'); + navDiv.id = 'cynav' + VIEW_COUNTER; + div.children[0].appendChild(navDiv); + navDiv.addClass('cy-navigator'); + // @ts-ignore + this.viz.navigator({ + container: '#cynav' + VIEW_COUNTER, + viewLiveFramerate: 0, + thumbnailEventFramerate: 10, + thumbnailLiveFramerate: false, + dblClickDelay: 200, + removeCustomContainer: true, + rerenderDelay: 100, // ms to throttle rerender updates to the panzoom for performance + }); + } + VIEW_COUNTER += 1; + if (idsInitial) { + for (const id of idsInitial) { + const initialNode = this.viz.$id(id.toId()); + if (this.settings.expandInitial) { + initialNode.addClass(CLASS_EXPANDED); + } + initialNode.addClass(CLASS_PROTECTED); + } + const nodez = this.viz.nodes(); + const edges = await this.buildEdges(nodez); + this.viz.add(edges); + this.onGraphChanged(true); + } + await this.updateStylesheet(); + // Shouldn'' this just call restartLayout? + if (idsInitial) { + this.restartLayout(); + } + const view = this; + this.viz.on('tap boxselect', async (e) => { + // @ts-ignore + this.element.focus(); + }); + this.viz.on('tap', 'node', async (e) => { + const id = VizId.fromNode(e.target); + if (!(id.storeId === 'core')) { + return; + } + // TODO THIS SHOULD BE MOVED TO LOCAL MODE! + }); + this.viz.on('tap', 'edge', async (e) => { + // todo: move to correct spot in the file. + }); + this.viz.on('mouseover', 'node', async (e) => { + e.target.unlock(); + const node = e.target; + e.cy.elements() + .difference(node.closedNeighborhood()) + .addClass(CLASS_UNHOVER); + node.addClass(CLASS_HOVER) + .connectedEdges() + .addClass(CLASS_CONNECTED_HOVER) + .connectedNodes() + .addClass(CLASS_CONNECTED_HOVER); + const id = VizId.fromNode(e.target); + if (id.storeId === 'core') { + const file = this.plugin.metadata.getFirstLinkpathDest(id.id, ''); + if (file && file.extension === 'md' && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) { + // const content = await view.vault.cachedRead(file); + this.hoverTimeout[e.target.id()] = setTimeout(async () => this.plugin.app.workspace.trigger('link-hover', this.element, null, file.path, ''), 300); + } + } + }); + this.viz.on('mouseover', 'edge', async (e) => { + const edge = e.target; + if (this.settings.hoverEdges) { + e.cy.elements() + .difference(edge.connectedNodes().union(edge)) + .addClass(CLASS_UNHOVER); + edge.addClass('hover') + .connectedNodes() + .addClass(CLASS_CONNECTED_HOVER); + } + if ('context' in edge.data() && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) { // && e.originalEvent.metaKey) { + // TODO resolve SourcePath, can be done using the source file. + this.hoverTimeout[e.target.id()] = setTimeout(async () => + // @ts-ignore + await this.popover(edge.data()['context'], '', edge, 'juggl-preview-edge'), 800); + } + }); + this.viz.on('mouseout', (e) => { + if (e.target === e.cy) { + return; + } + const id = e.target.id(); + if (id in this.hoverTimeout) { + clearTimeout(this.hoverTimeout[id]); + this.hoverTimeout[id] = undefined; + } + e.cy.elements().removeClass([CLASS_HOVER, CLASS_UNHOVER, CLASS_CONNECTED_HOVER]); + if (e.target.hasClass(CLASS_PINNED)) { + e.target.lock(); + } + }); + this.viz.on('grab', (e) => { + if (this.activeLayout) { + this.activeLayout.stop(); + } + }); + this.viz.on('dragfree', (e) => { + if (this.activeLayout) { + this.activeLayout.stop(); + } + // this.activeLayout = this.viz.layout(this.colaLayout()).start(); + this.activeLayout.start(); + const node = e.target; + node.lock(); + this.activeLayout.one('layoutstop', (e) => { + if (!node.hasClass(CLASS_PINNED)) { + node.unlock(); + } + }); + }); + this.viz.on('cxttap', (e) => { + // Thanks Liam for sharing how to do context menus + const fileMenu = new obsidian.Menu(this.plugin.app); // Creates empty file menu + if (!(e.target === this.viz) && e.target.group() === 'nodes') { + const id = VizId.fromNode(e.target); + e.target.select(); + if (id.storeId === 'core') { + const file = this.plugin.app.metadataCache.getFirstLinkpathDest(id.id, ''); + if (!(file === undefined)) { + // hook for plugins to populate menu with "file-aware" menu items + this.plugin.app.workspace.trigger('file-menu', fileMenu, file, 'my-context-menu', null); + } + } + } + this.mode.fillMenu(fileMenu, this.viz.nodes(':selected')); + fileMenu.showAtPosition({ x: e.originalEvent.x, y: e.originalEvent.y }); + }); + this.viz.on('layoutstop', obsidian.debounce((e) => { + if (!this.settings.autoZoom) { + return; + } + let fitNodes; + const activeFile = this.viz.nodes(`.${CLASS_ACTIVE_NODE}`); + if (activeFile.length > 0) { + fitNodes = activeFile.closedNeighborhood(); + } + else { + fitNodes = this.viz.nodes(); + } + e.cy.animate({ + fit: { + eles: fitNodes, + padding: 0, + }, + duration: VIEWPORT_ANIMATION_TIME, + queue: false, + }); + }, DEBOUNCE_FOLLOW, true)); + this.vizReady = true; + this.trigger('vizReady', this.viz); + console.log('Visualization ready'); + } + catch (e) { + // Needed to ensure errors are thrown in console. + console.log(e); + throw e; + } + } + async popover(mdContent, sourcePath, target, styleClass) { + const newDiv = document.createElement('div'); + newDiv.addClasses(['popover', 'hover-popover', 'is-loaded', 'juggl-hover']); + const mdEmbedDiv = document.createElement('div'); + mdEmbedDiv.addClasses(['markdown-embed', styleClass]); + newDiv.appendChild(mdEmbedDiv); + const mdEmbedContentDiv = document.createElement('div'); + mdEmbedContentDiv.addClasses(['markdown-embed-content']); + mdEmbedDiv.appendChild(mdEmbedContentDiv); + const mdPreviewView = document.createElement('div'); + mdPreviewView.addClasses(['markdown-preview-view']); + mdEmbedContentDiv.appendChild(mdPreviewView); + const mdPreviewSection = document.createElement('div'); + mdPreviewSection.addClasses(['markdown-preview-sizer', 'markdown-preview-section']); + mdPreviewView.appendChild(mdPreviewSection); + await obsidian.MarkdownRenderer.renderMarkdown(mdContent, mdPreviewSection, sourcePath, null); + document.body.appendChild(newDiv); + // @ts-ignore + const popper = target.popper({ + content: () => { + return newDiv; + }, + popper: { + placement: 'top', + }, // my popper options here + }); + const updatePopper = function () { + popper.update(); + }; + target.on('position', updatePopper); + this.viz.on('pan zoom resize', updatePopper); + newDiv.addEventListener('mouseenter', (e) => { + newDiv.addClass('popover-hovered'); + }); + this.destroyHover = () => { + popper.destroy(); + newDiv.remove(); + this.destroyHover = null; + }; + newDiv.addEventListener('mouseleave', this.destroyHover); + const destroyHover = this.destroyHover; + this.viz.one('mouseout', (e) => { + setTimeout(function () { + if (!newDiv.hasClass('popover-hovered')) { + destroyHover(); + } + }, 300); + }); + } + async neighbourhood(toExpand) { + const nodes = []; + for (const store of this.datastores.dataStores) { + const storeNodes = await store.getNeighbourhood(toExpand, this); + nodes.push(...storeNodes); + } + return nodes; + } + async buildEdges(newNodes) { + const edges = []; + for (const store of this.datastores.dataStores) { + edges.push(...await store.connectNodes(this.viz.nodes(), newNodes, this)); + } + return edges; + } + async expand(toExpand, batch = true, triggerGraphChanged = true) { + if (toExpand.length === 0) { + return null; + } + if (batch) { + this.viz.startBatch(); + } + toExpand.addClass(CLASS_EXPANDED); + toExpand.addClass(CLASS_PROTECTED); + // Currently returns the edges merged into the graph, not the full neighborhood + const expandedIds = toExpand.map((n) => VizId.fromNode(n)); + const neighbourhood = await this.neighbourhood(expandedIds); + this.mergeToGraph(neighbourhood, false, false); + const nodes = this.viz.collection(); + neighbourhood.forEach((n) => { + nodes.merge(this.viz.$id(n.data.id)); + }); + const edges = await this.buildEdges(nodes); + const edgesInGraph = this.mergeToGraph(edges, false, triggerGraphChanged); + if (batch) { + this.viz.endBatch(); + } + this.trigger('expand', toExpand); + return edgesInGraph; + } + async updateStylesheet() { + const sheet = new GraphStyleSheet(this.plugin); + this.trigger('stylesheet', sheet); + const sSheet = await sheet.getStylesheet(this); + this.viz.style(sSheet); + } + onunload() { + } + removeNodes(nodes) { + // Only call this method if the node is forcefully removed from the graph, not when the node no longer exists + // on the back-end. This is because of how it handles expanded. + // Remove as expanded if a neighbour is removed from the graph. + let removed = null; + this.viz.batch(() => { + this.getExpanded() + .intersection(nodes.neighborhood()) + .removeClass('expanded'); + removed = nodes.remove(); + this.onGraphChanged(false, true); + }); + return removed; + } + fitView(nodes) { + if (nodes) { + this.viz.fit(nodes); + } + else { + this.viz.fit(); + } + } + // getInQuery(nodes: IdType[]): string { + // let query = 'IN ['; + // let first = true; + // for (const id of nodes) { + // // @ts-ignore + // const title = this.findNodeRaw(id).properties['name'] as string; + // if (!first) { + // query += ', '; + // } + // query += '"' + title + '"'; + // first = false; + // } + // query += ']'; + // return query; + // } + restartLayout() { + if (this.activeLayout) { + this.activeLayout.stop(); + } + const layoutSettings = parseLayoutSettings(this.settings); + try { + this.activeLayout = layoutSettings.startLayout(this); + } + catch (e) { + console.log(e); + } + } + setLayout(settings) { + this.settings.layout = settings.options; + this.restartLayout(); + } + mergeToGraph(elements, batch = true, triggerGraphChanged = true) { + if (batch) { + this.viz.startBatch(); + } + const addElements = []; + const mergedCollection = this.viz.collection(); + elements.forEach((n) => { + if (this.viz.$id(n.data.id).length === 0) { + addElements.push(n); + } + else { + const gElement = this.viz.$id(n.data.id); + const extraClasses = CLASSES.filter((clazz) => gElement.hasClass(clazz)); + // @ts-ignore + extraClasses.push(...gElement.classes().filter((el) => el.startsWith('global-') || el.startsWith('local-'))); + // TODO: Maybe make an event here + gElement.classes(n.classes); + for (const clazz of extraClasses) { + gElement.addClass(clazz); + } + gElement.data(n.data); + mergedCollection.merge(gElement); + } + }); + const addCollection = this.viz.add(addElements); + mergedCollection.merge(addCollection); + if (triggerGraphChanged) { + this.onGraphChanged(false); + } + if (batch) { + this.viz.endBatch(); + } + return { merged: mergedCollection, added: addCollection }; + } + assignStyleGroups() { + const viz = this.viz; + const _assignGroups = function (groups, prefix) { + for (const [index, group] of groups.entries()) { + const clazz = `${prefix}-${index}`; + viz.nodes().removeClass(clazz); + const filteredNodes = filter$1(group.filter, viz.nodes()); + filteredNodes.addClass(clazz); + } + }; + _assignGroups(this.settings.styleGroups, 'local'); + if ('settings' in this.plugin) { + // @ts-ignore + _assignGroups(this.plugin.settings.globalStyleGroups, 'global'); + } + } + onGraphChanged(batch = true, debounceLayout = false) { + if (batch) { + this.viz.startBatch(); + } + this.viz.nodes().forEach((node) => { + node.data('degree', node.degree(false)); + node.data('nameLength', node.data('name').length); + node.addClass([...new Set(node.incomers('edge') + .map((edge) => 'has-incoming-' + (edge.data('type') ? edge.data('type') : 'inline')))]); + node.addClass([...new Set(node.outgoers('edge') + .map((edge) => 'has-outgoing-' + (edge.data('type') ? edge.data('type') : 'inline')))]); + }); + if (batch) { + this.viz.endBatch(); + } + this.trigger('elementsChange'); + this.searchFilter(this.settings.filter); + if (debounceLayout) { + this.debouncedRestartLayout(); + } + else { + this.restartLayout(); + } + this.assignStyleGroups(); + } + getViz() { + return this.viz; + } + setMode(modeName) { + this.removeChild(this.mode); + if (modeName === 'local') { + this.mode = new LocalMode(this); + } + else if (modeName === 'workspace') { + this.mode = new WorkspaceMode(this); + } + this.addChild(this.mode); + if (this.settings.toolbar) { + this.mode.createToolbar(this.element.children[0]); + } + } + searchFilter(query) { + // The query here is in approximately the format of Obsidian search queries + // This is much less efficient than using selectors, so only use this if you need to parse user input. + this.viz.nodes().removeClass(CLASS_FILTERED); + const filteredNodes = filter$1(query, this.viz.nodes()); + this.viz.nodes().difference(filteredNodes).addClass(CLASS_FILTERED); + this.settings.filter = query; + } + getPinned() { + return this.viz.nodes(`.${CLASS_PINNED}`); + } + getExpanded() { + return this.viz.nodes(`.${CLASS_EXPANDED}`); + } + getProtected() { + return this.viz.nodes(`.${CLASS_PROTECTED}`); + } + on(name, callback, ctx) { + return this.events.on(name, callback, ctx); + } + off(name, callback) { + this.events.off(name, callback); + } + offref(ref) { + this.events.offref(ref); + } + trigger(name, ...data) { + this.events.trigger(name, ...data); + } + tryTrigger(evt, args) { + this.events.tryTrigger(evt, args); + } +} + +class ImageServer extends obsidian.Component { + constructor(plugin) { + super(); + this.settings = plugin.settings; + this.plugin = plugin; + this.imgServer = null; + } + async onload() { + super.onload(); + if (obsidian.Platform.isMobile || !this.settings.useImgServer) { + return; + } + const path = require('path'); + const http = require('http'); + const fs = require('fs'); + let dir = null; + try { + dir = path.join(this.plugin.path); + } + catch (e) { + console.log('Couldn\'t start image server. This is likely because we\'re on mobile!'); + console.log('Alternatively, windows might block it using the firewall'); + console.log(e); + return; + } + const mime = { + gif: 'image/gif', + jpg: 'image/jpeg', + png: 'image/png', + svg: 'image/svg+xml', + }; + const settings = this.settings; + const vault = this.plugin.app.vault; + this.imgServer = http.createServer(function (req, res) { + const reqpath = req.url.toString().split('?')[0]; + if (req.method !== 'GET') { + res.statusCode = 501; + res.setHeader('Content-Type', 'text/plain'); + return res.end('Method not implemented'); + } + let file = path.join(dir, decodeURI(reqpath.replace(/\/$/, '/index.html'))); + file = vault.adapter.getFullPath(file); + // console.log(vault.getResourcePath(nFile as TFile)); + if (settings.debug) { + console.log('entering server query'); + console.log(req); + console.log(file); + } + // if (file.indexOf(dir + path.sep) !== 0) { + // res.statusCode = 403; + // res.setHeader('Content-Type', 'text/plain'); + // return res.end('Forbidden'); + // } + // @ts-ignore + const type = mime[path.extname(file).slice(1)]; + const s = fs.createReadStream(file); + s.on('open', function () { + res.setHeader('Content-Type', type); + res.setHeader('Access-Control-Allow-Origin', '*'); + s.pipe(res); + }); + s.on('error', function () { + console.log('Here3'); + res.setHeader('Content-Type', 'text/plain'); + res.statusCode = 404; + res.end('Not found'); + }); + }); + try { + const port = this.settings.imgServerPort; + this.imgServer.listen(port, function () { + console.log('Image server listening on http://localhost:' + port + '/'); + }); + } + catch (e) { + console.log(e); + new obsidian.Notice('Juggl: Couldn\'t start image server, see console'); + } + } + async onunload() { + super.onunload(); + if (this.imgServer) { + this.imgServer.close(); + this.imgServer = null; + } + } +} + +var cytoscapeNavigator = createCommonjsModule(function (module) { +(function(){ + var defaults = { + container: false // can be a HTML or jQuery element or jQuery selector + , viewLiveFramerate: 0 // set false to update graph pan only on drag end; set 0 to do it instantly; set a number (frames per second) to update not more than N times per second + , dblClickDelay: 200 // milliseconds + , removeCustomContainer: true // destroy the container specified by user on plugin destroy + , rerenderDelay: 500 // ms to throttle rerender updates to the panzoom for performance + }; + + var debounce = (function(){ + /** + * lodash 3.1.1 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + /** Used as the `TypeError` message for "Functions" methods. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /* Native method references for those with the same name as other `lodash` methods. */ + var nativeMax = Math.max, + nativeNow = Date.now; + + /** + * Gets the number of milliseconds that have elapsed since the Unix epoch + * (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @category Date + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => logs the number of milliseconds it took for the deferred function to be invoked + */ + var now = nativeNow || function() { + return new Date().getTime(); + }; + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed invocations. Provide an options object to indicate that `func` + * should be invoked on the leading and/or trailing edge of the `wait` timeout. + * Subsequent calls to the debounced function return the result of the last + * `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the debounced function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=false] Specify invoking on the leading + * edge of the timeout. + * @param {number} [options.maxWait] The maximum time `func` is allowed to be + * delayed before it's invoked. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // avoid costly calculations while the window size is in flux + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // invoke `sendMail` when the click event is fired, debouncing subsequent calls + * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // ensure `batchLog` is invoked once after 1 second of debounced calls + * var source = new EventSource('/stream'); + * jQuery(source).on('message', _.debounce(batchLog, 250, { + * 'maxWait': 1000 + * })); + * + * // cancel a debounced call + * var todoChanges = _.debounce(batchLog, 1000); + * Object.observe(models.todo, todoChanges); + * + * Object.observe(models, function(changes) { + * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { + * todoChanges.cancel(); + * } + * }, ['delete']); + * + * // ...at some point `models.todo` is changed + * models.todo.completed = true; + * + * // ...before 1 second has passed `models.todo` is deleted + * // which cancels the debounced `todoChanges` call + * delete models.todo; + */ + function debounce(func, wait, options) { + var args, + maxTimeoutId, + result, + stamp, + thisArg, + timeoutId, + trailingCall, + lastCalled = 0, + maxWait = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = wait < 0 ? 0 : (+wait || 0); + if (options === true) { + var leading = true; + trailing = false; + } else if (isObject(options)) { + leading = !!options.leading; + maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function cancel() { + if (timeoutId) { + clearTimeout(timeoutId); + } + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + lastCalled = 0; + maxTimeoutId = timeoutId = trailingCall = undefined; + } + + function complete(isCalled, id) { + if (id) { + clearTimeout(id); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + if (isCalled) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = undefined; + } + } + } + + function delayed() { + var remaining = wait - (now() - stamp); + if (remaining <= 0 || remaining > wait) { + complete(trailingCall, maxTimeoutId); + } else { + timeoutId = setTimeout(delayed, remaining); + } + } + + function maxDelayed() { + complete(trailing, timeoutId); + } + + function debounced() { + args = arguments; + stamp = now(); + thisArg = this; + trailingCall = trailing && (timeoutId || !leading); + + if (maxWait === false) { + var leadingCall = leading && !timeoutId; + } else { + if (!maxTimeoutId && !leading) { + lastCalled = stamp; + } + var remaining = maxWait - (stamp - lastCalled), + isCalled = remaining <= 0 || remaining > maxWait; + + if (isCalled) { + if (maxTimeoutId) { + maxTimeoutId = clearTimeout(maxTimeoutId); + } + lastCalled = stamp; + result = func.apply(thisArg, args); + } + else if (!maxTimeoutId) { + maxTimeoutId = setTimeout(maxDelayed, remaining); + } + } + if (isCalled && timeoutId) { + timeoutId = clearTimeout(timeoutId); + } + else if (!timeoutId && wait !== maxWait) { + timeoutId = setTimeout(delayed, wait); + } + if (leadingCall) { + isCalled = true; + result = func.apply(thisArg, args); + } + if (isCalled && !timeoutId && !maxTimeoutId) { + args = thisArg = undefined; + } + return result; + } + debounced.cancel = cancel; + return debounced; + } + + /** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ + function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + return debounce; + + })(); + + // ported lodash throttle function + var throttle = function( func, wait, options ){ + var leading = true, + trailing = true; + + if( options === false ){ + leading = false; + } else if( typeof options === typeof {} ){ + leading = 'leading' in options ? options.leading : leading; + trailing = 'trailing' in options ? options.trailing : trailing; + } + options = options || {}; + options.leading = leading; + options.maxWait = wait; + options.trailing = trailing; + + return debounce( func, wait, options ); + }; + + var Navigator = function ( element, options ) { + this._init(element, options); + }; + + var extend = function() { + for(var i = 1; i < arguments.length; i++) { + for(var key in arguments[i]) { + if(arguments[i].hasOwnProperty(key)) { + arguments[0][key] = arguments[i][key]; + } + } + } + return arguments[0]; + }; + + var wid = function(elem) { + return elem.getBoundingClientRect().width; + }; + + var hei = function(elem) { + return elem.getBoundingClientRect().height; + }; + + Navigator.prototype = { + + constructor: Navigator + + /**************************** + Main functions + ****************************/ + + , bb: function(){ + var bb = this.cy.elements().boundingBox(); + + if( bb.w === 0 || bb.h === 0 ){ + return { + x1: 0, + x2: Infinity, + y1: 0, + y2: Infinity, + w: Infinity, + h: Infinity + } // => hide interactive overlay + } + + return bb + } + + , _addCyListener: function(events, handler){ + this._cyListeners.push({ + events: events, + handler: handler + }); + + this.cy.on(events, handler); + } + + , _removeCyListeners: function(){ + var cy = this.cy; + + this._cyListeners.forEach(function(l){ + cy.off(l.events, l.handler); + }); + + cy.offRender(this._onRenderHandler); + } + + , _init: function ( cy, options ) { + this._cyListeners = []; + + this.$element = cy.container(); + this.options = extend({}, defaults, options); + + this.cy = cy; + + // Cache bounding box + this.boundingBox = this.bb(); + + // Cache sizes + this.width = wid(this.$element); + this.height = hei(this.$element); + + // Init components + this._initPanel(); + this._initThumbnail(); + this._initView(); + this._initOverlay(); + } + + , destroy: function () { + this._removeEventsHandling(); + + // If container is not created by navigator and its removal is prohibited + if (this.options.container && !this.options.removeCustomContainer) { + this.$panel.innerHTML = ''; + } else { + this.$panel.parentElement.removeChild(this.$panel); + } + } + + /**************************** + Navigator elements functions + ****************************/ + + /* + * Used inner attributes + * + * w {number} width + * h {number} height + */ + , _initPanel: function () { + var options = this.options; + if(options.container && typeof options.container === 'string' && options.container.length > 0) { + // to not break users which gives a jquery string selector + if (options.container.indexOf('#') !== -1) { + this.$panel = document.getElementById(options.container.replace('#', '')); + } else { + this.$panel = document.getElementsByClassName(options.container.replace('.', ''))[0]; + } + } else { + this.$panel = document.createElement('div'); + this.$panel.className = 'cytoscape-navigator'; + document.body.appendChild(this.$panel); + } + this._setupPanel(); + this._addCyListener('resize', this.resize.bind(this)); + } + + , _setupPanel: function () { + // Cache sizes + this.panelWidth = wid(this.$panel); + this.panelHeight = hei(this.$panel); + } + + /* + * Used inner attributes + * + * zoom {number} + * pan {object} - {x: 0, y: 0} + */ + , _initThumbnail: function () { + // Create thumbnail + this.$thumbnail = document.createElement('img'); + + // Add thumbnail canvas to the DOM + this.$panel.appendChild(this.$thumbnail); + + // Setup thumbnail + this._setupThumbnailSizes(); + this._setupThumbnail(); + } + + , _setupThumbnail: function () { + this._updateThumbnailImage(); + } + + , _setupThumbnailSizes: function () { + // Update bounding box cache + this.boundingBox = this.bb(); + + this.thumbnailZoom = Math.min(this.panelHeight / this.boundingBox.h, this.panelWidth / this.boundingBox.w); + + // Used on thumbnail generation + this.thumbnailPan = { + x: (this.panelWidth - this.thumbnailZoom * (this.boundingBox.x1 + this.boundingBox.x2))/2 + , y: (this.panelHeight - this.thumbnailZoom * (this.boundingBox.y1 + this.boundingBox.y2))/2 + }; + } + + // If bounding box has changed then update sizes + // Otherwise just update the thumbnail + , _checkThumbnailSizesAndUpdate: function () { + // Cache previous values + var _zoom = this.thumbnailZoom + , _pan_x = this.thumbnailPan.x + , _pan_y = this.thumbnailPan.y; + + this._setupThumbnailSizes(); + + if (_zoom != this.thumbnailZoom || _pan_x != this.thumbnailPan.x || _pan_y != this.thumbnailPan.y) { + this._setupThumbnail(); + this._setupView(); + } else { + this._updateThumbnailImage(); + } + } + + /* + * Used inner attributes + * + * w {number} width + * h {number} height + * x {number} + * y {number} + * borderWidth {number} + * locked {boolean} + */ + , _initView: function () { + this.$view = document.createElement('div'); + this.$view.className = 'cytoscape-navigatorView'; + this.$panel.appendChild(this.$view); + // Compute borders + this.viewBorderTop = parseInt(this.$view.style['border-top-width'], 10) || 0; + this.viewBorderRight = parseInt(this.$view.style['border-right-width'], 10) || 0; + this.viewBorderBottom = parseInt(this.$view.style['border-bottom-width'], 10) || 0; + this.viewBorderLeft = parseInt(this.$view.style['border-left-width'], 10) || 0; + + // Abstract borders + this.viewBorderHorizontal = this.viewBorderLeft + this.viewBorderRight; + this.viewBorderVertical = this.viewBorderTop + this.viewBorderBottom; + + this._setupView(); + + // Hook graph zoom and pan + this._addCyListener('zoom pan', this._setupView.bind(this)); + } + + , _setupView: function () { + if (this.viewLocked) + return + + var cyZoom = this.cy.zoom() + , cyPan = this.cy.pan(); + + // Horizontal computation + this.viewW = this.width / cyZoom * this.thumbnailZoom; + this.viewX = -cyPan.x * this.viewW / this.width + this.thumbnailPan.x - this.viewBorderLeft; + + // Vertical computation + this.viewH = this.height / cyZoom * this.thumbnailZoom; + this.viewY = -cyPan.y * this.viewH / this.height + this.thumbnailPan.y - this.viewBorderTop; + + // CSS view + this.$view.style['width'] = this.viewW + 'px'; + this.$view.style['height'] = this.viewH + 'px'; + this.$view.style['position'] = 'absolute'; + this.$view.style['left'] = this.viewX + 'px'; + this.$view.style['top'] = this.viewY + 'px'; + } + + /* + * Used inner attributes + * + * timeout {number} used to keep stable frame rate + * lastMoveStartTime {number} + * inMovement {boolean} + * hookPoint {object} {x: 0, y: 0} + */ + , _initOverlay: function () { + // Used to capture mouse events + this.$overlay = document.createElement('div'); + this.$overlay.className = 'cytoscape-navigatorOverlay'; + + // Add overlay to the DOM + this.$panel.appendChild(this.$overlay); + + // Init some attributes + this.overlayHookPointX = 0; + this.overlayHookPointY = 0; + + // Listen for events + this._initEventsHandling(); + } + + /**************************** + Event handling functions + ****************************/ + + , resize: function () { + // Cache sizes + this.width = wid(this.$element); + this.height = hei(this.$element); + this._thumbnailSetup = false; + this._setupPanel(); + this._checkThumbnailSizesAndUpdate(); + this._setupView(); + } + + , _initEventsHandling: function () { + var that = this + , eventsLocal = [ + // Mouse events + 'mousedown' + , 'mousewheel' + , 'DOMMouseScroll' // Mozilla specific event + // Touch events + , 'touchstart' + ] + , eventsGlobal = [ + 'mouseup' + , 'mouseout' + , 'mousemove' + // Touch events + , 'touchmove' + , 'touchend' + ]; + + // handle events and stop their propagation + var overlayListener = function (ev) { + // Touch events + if (ev.type == 'touchstart') { + // Will count as middle of View + Object.defineProperty(ev, 'offsetX', { + value: that.viewX + that.viewW / 2, + writable: true + }); + Object.defineProperty(ev, 'offsetY', { + value: that.viewY + that.viewH / 2, + writable: true + }); + } + + // Normalize offset for browsers which do not provide that value + if (ev.offsetX === undefined || ev.offsetY === undefined) { + var rect = ev.target.getBoundingClientRect(); + var targetOffset = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX, + }; + Object.defineProperty(ev, 'offsetX', { + value: ev.pageX - targetOffset.left, + writable: true + }); + Object.defineProperty(ev, 'offsetY', { + value: ev.pageY - targetOffset.top, + writable: true + }); + } + + if (ev.type == 'mousedown' || ev.type == 'touchstart') { + that._eventMoveStart(ev); + } else if (ev.type == 'mousewheel' || ev.type == 'DOMMouseScroll') { + that._eventZoom(ev); + } + + // Prevent default and propagation + // Don't use peventPropagation as it breaks mouse events + return false; + }; + + // Hook global events + var globalListener = function (ev) { + + // Do not make any computations if it is has no effect on Navigator + if (!that.overlayInMovement) + return; + + // Touch events + if (ev.type == 'touchend') { + // Will count as middle of View + Object.defineProperty(ev, 'offsetX', { + value: that.viewX + that.viewW / 2, + writable: true + }); + Object.defineProperty(ev, 'offsetY', { + value: that.viewY + that.viewH / 2, + writable: true + }); + } else if (ev.type == 'touchmove') { + // Hack - we take in account only first touch + Object.defineProperty(ev, 'pageX', { + value: ev.originalEvent.touches[0].pageX, + writable: true + }); + Object.defineProperty(ev, 'pageY', { + value: ev.originalEvent.touches[0].pageY, + writable: true + }); + } + + // Normalize offset for browsers which do not provide that value + if (ev.offsetX === undefined || ev.offsetY === undefined) { + var rect = ev.target.getBoundingClientRect(); + var targetOffset = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX, + }; + Object.defineProperty(ev, 'offsetX', { + value: ev.pageX - targetOffset.left, + writable: true + }); + Object.defineProperty(ev, 'offsetY', { + value: ev.pageY - targetOffset.top, + writable: true + }); + } + + // Translate global events into local coordinates + if (ev.target !== that.$overlay) { + var rect = ev.target.getBoundingClientRect(); + var rect2 = that.$overlay.getBoundingClientRect(); + var targetOffset = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX, + }; + var overlayOffset = { + top: rect2.top + window.scrollY, + left: rect2.left + window.scrollX, + }; + + if(targetOffset && overlayOffset) { + Object.defineProperty(ev, 'offsetX', { + value: ev.offsetX - overlayOffset.left + targetOffset.left, + writable: true + }); + Object.defineProperty(ev, 'offsetY', { + value: ev.offsetY - overlayOffset.top + targetOffset.top, + writable: true + }); + } else { + return false; + } + } + + if (ev.type == 'mousemove' || ev.type == 'touchmove') { + that._eventMove(ev); + } else if (ev.type == 'mouseup' || ev.type == 'touchend') { + that._eventMoveEnd(ev); + } + + // Prevent default and propagation + // Don't use peventPropagation as it breaks mouse events + return false; + }; + + for (var i = 0; i < eventsLocal.length; i++) { + this.$overlay.addEventListener(eventsLocal[i], overlayListener, false); + } + + for (var i = 0; i < eventsGlobal.length; i++) { + window.addEventListener(eventsGlobal[i], globalListener, false); + } + + this._removeEventsHandling = function(){ + + for (var i = 0; i < eventsLocal.length; i++) { + this.$overlay.removeEventListener(eventsLocal[i], overlayListener); + } + + for (var i = 0; i < eventsGlobal.length; i++) { + window.removeEventListener(eventsGlobal[i], globalListener); + } + }; + } + + , _eventMoveStart: function (ev) { + var now = new Date().getTime(); + + // Check if it was double click + if (this.overlayLastMoveStartTime + && this.overlayLastMoveStartTime + this.options.dblClickDelay > now) { + // Reset lastMoveStartTime + this.overlayLastMoveStartTime = 0; + // Enable View in order to move it to the center + this.overlayInMovement = true; + + // Set hook point as View center + this.overlayHookPointX = this.viewW / 2; + this.overlayHookPointY = this.viewH / 2; + + // Move View to start point + if (this.options.viewLiveFramerate !== false) { + this._eventMove({ + offsetX: this.panelWidth / 2 + , offsetY: this.panelHeight / 2 + }); + } else { + this._eventMoveEnd({ + offsetX: this.panelWidth / 2 + , offsetY: this.panelHeight / 2 + }); + } + + // View should be inactive as we don't want to move it right after double click + this.overlayInMovement = false; + } + // This is a single click + // Take care as single click happens before double click 2 times + else { + this.overlayLastMoveStartTime = now; + this.overlayInMovement = true; + // Lock view moving caused by cy events + this.viewLocked = true; + + // if event started in View + if (ev.offsetX >= this.viewX && ev.offsetX <= this.viewX + this.viewW + && ev.offsetY >= this.viewY && ev.offsetY <= this.viewY + this.viewH + ) { + this.overlayHookPointX = ev.offsetX - this.viewX; + this.overlayHookPointY = ev.offsetY - this.viewY; + } + // if event started in Thumbnail (outside of View) + else { + // Set hook point as View center + this.overlayHookPointX = this.viewW / 2; + this.overlayHookPointY = this.viewH / 2; + + // Move View to start point + this._eventMove(ev); + } + } + } + + , _eventMove: function (ev) { + var that = this; + + this._checkMousePosition(ev); + + // break if it is useless event + if (!this.overlayInMovement) { + return; + } + + // Update cache + this.viewX = ev.offsetX - this.overlayHookPointX; + this.viewY = ev.offsetY - this.overlayHookPointY; + + // Update view position + this.$view.style['left'] = this.viewX + 'px'; + this.$view.style['top'] = this.viewY + 'px'; + + // Move Cy + if (this.options.viewLiveFramerate !== false) { + // trigger instantly + if (this.options.viewLiveFramerate == 0) { + this._moveCy(); + } + // trigger less often than frame rate + else if (!this.overlayTimeout) { + // Set a timeout for graph movement + this.overlayTimeout = setTimeout(function () { + that._moveCy(); + that.overlayTimeout = false; + }, 1000 / this.options.viewLiveFramerate); + } + } + } + + , _checkMousePosition: function (ev) { + // If mouse in over View + if(ev.offsetX > this.viewX && ev.offsetX < this.viewX + this.viewBorderHorizontal + this.viewW + && ev.offsetY > this.viewY && ev.offsetY < this.viewY + this.viewBorderVertical + this.viewH) { + this.$panel.classList.add('mouseover-view'); + } else { + this.$panel.classList.remove('mouseover-view'); + } + } + + , _eventMoveEnd: function (ev) { + // Unlock view changing caused by graph events + this.viewLocked = false; + + // Remove class when mouse is not over Navigator + this.$panel.classList.remove('mouseover-view'); + + if (!this.overlayInMovement) { + return; + } + + // Trigger one last move + this._eventMove(ev); + + // If mode is not live then move graph on drag end + if (this.options.viewLiveFramerate === false) { + this._moveCy(); + } + + // Stop movement permission + this.overlayInMovement = false; + } + + , _eventZoom: function (ev) { + var ev2 = extend({}, ev.originalEvent); + var delta = ev.wheelDeltaY / 1000 || ev.wheelDelta / 1000 || ev.detail / -32 || ev2.wheelDeltaY / 1000 || ev2.wheelDelta / 1000 || ev2.detail / -32; + var zoomRate = Math.pow(10, delta) + , mousePosition = { + left: ev.offsetX + , top: ev.offsetY + }; + + if (this.cy.zoomingEnabled()) { + this._zoomCy(zoomRate, mousePosition); + } + } + + , _updateThumbnailImage: function () { + var that = this; + + if( this._thumbnailUpdating ){ + return; + } + + this._thumbnailUpdating = true; + + var render = function() { + that._checkThumbnailSizesAndUpdate(); + that._setupView(); + + var $img = that.$thumbnail; + var img = $img; + + var w = that.panelWidth; + var h = that.panelHeight; + var bb = that.boundingBox; + var zoom = Math.min( w/bb.w, h/bb.h ); + + var png = that.cy.png({ + full: true, + scale: zoom, + maxHeight: h, + maxWidth: w + }); + if( png.indexOf('image/png') < 0 ){ + img.removeAttribute( 'src' ); + } else { + img.setAttribute( 'src', png ); + } + + var translate = { + x: (w - zoom*( bb.w ))/2, + y: (h - zoom*( bb.h ))/2 + }; + + $img.style['position'] = 'absolute'; + $img.style['left'] = translate.x + 'px'; + $img.style['top'] = translate.y + 'px'; + + }; + + this._onRenderHandler = throttle(render, that.options.rerenderDelay); + + this.cy.onRender( this._onRenderHandler ); + } + + /**************************** + Navigator view moving + ****************************/ + + , _moveCy: function () { + this.cy.pan({ + x: -(this.viewX + this.viewBorderLeft - this.thumbnailPan.x) * this.width / this.viewW + , y: -(this.viewY + this.viewBorderLeft - this.thumbnailPan.y) * this.height / this.viewH + }); + } + + /** + * Zooms graph. + * + * @this {cytoscapeNavigator} + * @param {number} zoomRate The zoom rate value. 1 is 100%. + */ + , _zoomCy: function (zoomRate, zoomCenterRaw) { + var zoomCenter + ; + + zoomCenter = { + x: this.width / 2 + , y: this.height / 2 + }; + + this.cy.zoom({ + level: this.cy.zoom() * zoomRate + , renderedPosition: zoomCenter + }); + } + }; + + // registers the extension on a cytoscape lib ref + var register = function( cytoscape ){ + + if (!cytoscape){ return; } // can't register if cytoscape unspecified + + cytoscape( 'core', 'navigator', function( options ){ + var cy = this; + + return new Navigator( cy, options ); + } ); + + }; + + if (module.exports) { // expose as a commonjs module + module.exports = function( cytoscape ){ + register( cytoscape ); + }; + } + + if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); + } + +})(); +}); + +var top = 'top'; +var bottom = 'bottom'; +var right = 'right'; +var left = 'left'; +var auto = 'auto'; +var basePlacements = [top, bottom, right, left]; +var start = 'start'; +var end = 'end'; +var clippingParents = 'clippingParents'; +var viewport = 'viewport'; +var popper$1 = 'popper'; +var reference = 'reference'; +var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); +}, []); +var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); +}, []); // modifiers that need to read the DOM + +var beforeRead = 'beforeRead'; +var read$1 = 'read'; +var afterRead = 'afterRead'; // pure-logic modifiers + +var beforeMain = 'beforeMain'; +var main = 'main'; +var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + +var beforeWrite = 'beforeWrite'; +var write$1 = 'write'; +var afterWrite = 'afterWrite'; +var modifierPhases = [beforeRead, read$1, afterRead, beforeMain, main, afterMain, beforeWrite, write$1, afterWrite]; + +function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; +} + +function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; +} + +function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; +} + +function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; +} + +function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; +} + +// and applies them to the HTMLElements such as popper and arrow + +function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); +} + +function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; +} // eslint-disable-next-line import/no-unused-modules + + +var applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] +}; + +function getBasePlacement(placement) { + return placement.split('-')[0]; +} + +var max$1 = Math.max; +var min$1 = Math.min; +var round = Math.round; + +function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale + // Fallback to 1 in case both values are `0` + + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; +} + +// means it doesn't take into account transforms. + +function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; +} + +function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; +} + +function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); +} + +function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; +} + +function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; +} + +function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); +} + +function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle$1(element).position === 'fixed') { + return null; + } + + return element.offsetParent; +} // `.offsetParent` reports `null` for fixed elements, while absolute elements +// return the containing block + + +function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; + var isIE = navigator.userAgent.indexOf('Trident') !== -1; + + if (isIE && isHTMLElement(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = getComputedStyle$1(element); + + if (elementCss.position === 'fixed') { + return null; + } + } + + var currentNode = getParentNode(element); + + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; +} // Gets the closest ancestor positioned element. Handles some edge cases, +// such as table ancestors and cross browser bugs. + + +function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; +} + +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; +} + +function within(min, value, max) { + return max$1(min, min$1(value, max)); +} +function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; +} + +function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; +} + +function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); +} + +function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); +} + +var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); +}; + +function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +} + +function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (process.env.NODE_ENV !== "production") { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + } + } + + if (!contains(state.elements.popper, arrowElement)) { + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + } + + return; + } + + state.elements.arrow = arrowElement; +} // eslint-disable-next-line import/no-unused-modules + + +var arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] +}; + +function getVariation(placement) { + return placement.split('-')[1]; +} + +var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' +}; // Round the offsets to the nearest suitable subpixel based on the DPR. +// Zooming can change the DPR, but it seems to report a value that will +// cleanly divide the values into the appropriate subpixels. + +function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; +} + +function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + + if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); +} + +function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + + if (process.env.NODE_ENV !== "production") { + var transitionProperty = getComputedStyle$1(state.elements.popper).transitionProperty || ''; + + if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); + } + } + + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +var computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} +}; + +var passive = { + passive: true +}; + +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} // eslint-disable-next-line import/no-unused-modules + + +var eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +}; + +var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); +} + +var hash = { + start: 'end', + end: 'start' +}; +function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); +} + +function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; +} + +function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; +} + +function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper + // can be obscured underneath it. + // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even + // if it isn't open, so if this isn't available, the popper will be detected + // to overflow the bottom of the screen too early. + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) + // In Chrome, it returns a value very close to 0 (+/-) but contains rounding + // errors due to floating point numbers, so we need to check precision. + // Safari returns a number <= 0, usually < -1 when pinch-zoomed + // Feature detection fails in mobile emulation mode in Chrome. + // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < + // 0.001 + // Fallback here: "Not Safari" userAgent + + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; +} + +// of the `` and `` rect bounds if horizontally scrollable + +function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max$1(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max$1(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max$1(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; +} + +function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +} + +function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); +} + +/* +given a DOM element, return the list of all scroll parents, up the list of ancesors +until we get to the top window object. This list is what we attach scroll listeners +to, because if any of these parent elements scroll, we'll need to re-calculate the +reference element's position. +*/ + +function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); +} + +function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); +} + +function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; +} + +function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); +} // A "clipping parent" is an overflowable container with the characteristic of +// clipping (or hiding) overflowing elements with a position different from +// `initial` + + +function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); +} // Gets the maximum area that the element is visible in due to any number of +// clipping parents + + +function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max$1(rect.top, accRect.top); + accRect.right = min$1(rect.right, accRect.right); + accRect.bottom = min$1(rect.bottom, accRect.bottom); + accRect.left = max$1(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; +} + +function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + + return offsets; +} + +function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper$1 : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper$1 ? reference : popper$1; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper$1 ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === popper$1 && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; +} + +function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); + } + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); +} + +function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; +} + +function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } +} // eslint-disable-next-line import/no-unused-modules + + +var flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } +}; + +function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; +} + +function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); +} + +function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); +} // eslint-disable-next-line import/no-unused-modules + + +var hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide +}; + +function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; +} + +function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +var offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset +}; + +function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +var popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} +}; + +function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; +} + +function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis) { + var _offsetModifierState$; + + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min = offset + overflow[mainSide]; + var max = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min$1(min, tetherMin) : min, offset, tether ? max$1(max, tetherMax) : max); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _offsetModifierState$2; + + var _mainSide = mainAxis === 'x' ? top : left; + + var _altSide = mainAxis === 'x' ? bottom : right; + + var _offset = popperOffsets[altAxis]; + + var _len = altAxis === 'y' ? 'height' : 'width'; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +var preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] +}; + +function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; +} + +function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } +} + +function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; +} // Returns the composite rect of an element relative to its offsetParent. +// Composite means it takes into account transforms as well as layout. + + +function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; +} + +function order$1(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; +} + +function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order$1(modifiers); // order based on phase + + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); +} + +function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; +} + +function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return [].concat(args).reduce(function (p, c) { + return p.replace(/%s/, c); + }, str); +} + +var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; +var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; +var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; +function validateModifiers(modifiers) { + modifiers.forEach(function (modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` + .filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (key) { + switch (key) { + case 'name': + if (typeof modifier.name !== 'string') { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + } + + break; + + case 'enabled': + if (typeof modifier.enabled !== 'boolean') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); + } + + break; + + case 'phase': + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + } + + break; + + case 'fn': + if (typeof modifier.fn !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'effect': + if (modifier.effect != null && typeof modifier.effect !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'requires': + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); + } + + break; + + case 'requiresIfExists': + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + } + + break; + + case 'options': + case 'data': + break; + + default: + console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { + return "\"" + s + "\""; + }).join(', ') + "; but \"" + key + "\" was provided."); + } + + modifier.requires && modifier.requires.forEach(function (requirement) { + if (modifiers.find(function (mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); +} + +function uniqueBy(arr, fn) { + var identifiers = new Set(); + return arr.filter(function (item) { + var identifier = fn(item); + + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); +} + +function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); +} + +var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; +var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; +var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' +}; + +function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); +} + +function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + // if one of the modifiers is invalid for any reason + + if (process.env.NODE_ENV !== "production") { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function (_ref2) { + var name = _ref2.name; + return name === 'flip'; + }); + + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); + } + } + + var _getComputedStyle = getComputedStyle$1(popper), + marginTop = _getComputedStyle.marginTop, + marginRight = _getComputedStyle.marginRight, + marginBottom = _getComputedStyle.marginBottom, + marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can + // cause bugs with positioning, so we'll warn the consumer + + + if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + } + } + + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } + + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (process.env.NODE_ENV !== "production") { + __debug_loops__ += 1; + + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } + + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; +} +var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + +var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; +var createPopper$1 = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers$1 +}); // eslint-disable-next-line import/no-unused-modules + +var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; +var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules + +var lib$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + popperGenerator: popperGenerator, + detectOverflow: detectOverflow, + createPopperBase: createPopper$2, + createPopper: createPopper, + createPopperLite: createPopper$1, + top: top, + bottom: bottom, + right: right, + left: left, + auto: auto, + basePlacements: basePlacements, + start: start, + end: end, + clippingParents: clippingParents, + viewport: viewport, + popper: popper$1, + reference: reference, + variationPlacements: variationPlacements, + placements: placements, + beforeRead: beforeRead, + read: read$1, + afterRead: afterRead, + beforeMain: beforeMain, + main: main, + afterMain: afterMain, + beforeWrite: beforeWrite, + write: write$1, + afterWrite: afterWrite, + modifierPhases: modifierPhases, + applyStyles: applyStyles$1, + arrow: arrow$1, + computeStyles: computeStyles$1, + eventListeners: eventListeners, + flip: flip$1, + hide: hide$1, + offset: offset$1, + popperOffsets: popperOffsets$1, + preventOverflow: preventOverflow$1 +}); + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(lib$1); + +var cytoscapePopper = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(require$$0); +})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_8__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 7); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + +// Simple, internal Object.assign() polyfill for options objects etc. + +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + if (src !== null && src !== undefined) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + } + }); + + return tgt; +}; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _require = __webpack_require__(5), + getBoundingBox = _require.getBoundingBox; + +// Create a popper virtual element (aka popper v1 reference object) +// https://popper.js.org/docs/v2/virtual-elements/ + + +function getRef(target, opts) { + + //Define popper reference object and cy reference object + var refObject = { + getBoundingClientRect: function getBoundingClientRect() { + return getBoundingBox(target, opts); + } + }; + + return refObject; +} + +module.exports = { getRef: getRef }; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +var assign = __webpack_require__(0); + +var _require = __webpack_require__(1), + getRef = _require.getRef; + +var _require2 = __webpack_require__(6), + getContent = _require2.getContent; + +var popperDefaults = {}; + +var _require3 = __webpack_require__(8), + createPopper = _require3.createPopper; + +// Create a new popper object for a core or element target + + +function getPopper(target, opts) { + var refObject = getRef(target, opts); + var content = getContent(target, opts.content); + var popperOpts = assign({}, popperDefaults, opts.popper); + + return createPopper(refObject, content, popperOpts); +} + +module.exports = { getPopper: getPopper }; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +var assign = __webpack_require__(0); + +var _require = __webpack_require__(2), + getPopper = _require.getPopper; + +var _require2 = __webpack_require__(1), + getRef = _require2.getRef; + +function popper(opts) { + checkForWarning(this); + + return getPopper(this[0], createOptionsObject(this[0], opts)); +} + +function popperRef(opts) { + checkForWarning(this); + + return getRef(this[0], createOptionsObject(this[0], opts)); +} + +function createOptionsObject(target, opts) { + var renderedDimensions = function renderedDimensions(el) { + return el.isNode() ? { w: el.renderedWidth(), h: el.renderedHeight() } : { w: 3, h: 3 }; + }; + var renderedPosition = function renderedPosition(el) { + return el.isNode() ? getRenderedCenter(el, renderedDimensions) : getRenderedMidpoint(el); + }; + var popper = {}; + var cy = target.cy(); + + var defaults = { renderedDimensions: renderedDimensions, renderedPosition: renderedPosition, popper: popper, cy: cy }; + + return assign({}, defaults, opts); +} + +//Get the rendered center +function getRenderedCenter(target, renderedDimensions) { + var pos = target.renderedPosition(); + var dimensions = renderedDimensions(target); + var offsetX = dimensions.w / 2; + var offsetY = dimensions.h / 2; + + return { + x: pos.x - offsetX, + y: pos.y - offsetY + }; +} + +//Get the rendered position of the midpoint +function getRenderedMidpoint(target) { + var p = target.midpoint(); + var pan = target.cy().pan(); + var zoom = target.cy().zoom(); + + return { + x: p.x * zoom + pan.x, + y: p.y * zoom + pan.y + }; +} + +//Warn user about misuse of the plugin +function checkForWarning(elements) { + /* eslint-disable no-console */ + + //Popper.js Should only be used on 1 element + if (elements.length > 1) { + console.warn("Popper.js Extension should only be used on one element."); + console.warn("Ignoring all subsequent elements"); + } + + /* eslint-enable */ +} + +module.exports = { popper: popper, popperRef: popperRef }; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + +var assign = __webpack_require__(0); + +var _require = __webpack_require__(2), + getPopper = _require.getPopper; + +var _require2 = __webpack_require__(1), + getRef = _require2.getRef; + +function popper(opts) { + return getPopper(this, createOptionsObject(this, opts)); +} + +function popperRef(opts) { + return getRef(this, createOptionsObject(this, opts)); +} + +//Create a options object with required default values +function createOptionsObject(target, opts) { + var defaults = { + boundingBox: { + top: 0, + left: 0, + right: 0, + bottom: 0, + w: 3, + h: 3 + }, + renderedDimensions: function renderedDimensions() { + return { w: 3, h: 3 }; + }, + renderedPosition: function renderedPosition() { + return { x: 0, y: 0 }; + }, + popper: {}, + cy: target + }; + + return assign({}, defaults, opts); +} + +module.exports = { popper: popper, popperRef: popperRef }; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + +function getBoundingBox(target, opts) { + var renderedPosition = opts.renderedPosition, + cy = opts.cy, + renderedDimensions = opts.renderedDimensions; + + var offset = cy.container().getBoundingClientRect(); + var dims = renderedDimensions(target); + var pos = renderedPosition(target); + + return { + top: pos.y + offset.top, + left: pos.x + offset.left, + right: pos.x + dims.w + offset.left, + bottom: pos.y + dims.h + offset.top, + width: dims.w, + height: dims.h + }; +} + +module.exports = { getBoundingBox: getBoundingBox }; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + +function getContent(target, content) { + var contentObject = null; + + if (typeof content === "function") { + //Execute function if user opted for a dyanamic target + contentObject = content(target); + } else if (content instanceof HTMLElement) { + //Target option is an HTML element + return content; + } else { + throw new Error("Can not create popper from 'target' with unknown type"); + } + + // Check validity of parsed target + if (contentObject === null) { + throw new Error("No 'target' specified to create popper"); + } else { + return contentObject; + } +} + +module.exports = { getContent: getContent }; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + +/* global cytoscape */ + +var coreImpl = __webpack_require__(4); +var collectionImpl = __webpack_require__(3); + +// registers the extension on a cytoscape lib ref +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + // register with cytoscape.js + cytoscape('core', 'popper', coreImpl.popper); //Cytoscape Core + cytoscape('collection', 'popper', collectionImpl.popper); //Cytoscape Collections + cytoscape('core', 'popperRef', coreImpl.popperRef); //Cytoscape Core for References + cytoscape('collection', 'popperRef', collectionImpl.popperRef); //Cytoscape Collections for References +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_8__; + +/***/ }) +/******/ ]); +}); +}); + +var popper = /*@__PURE__*/getDefaultExportFromCjs(cytoscapePopper); + +var PowerEdge = (function () { + function PowerEdge(source, target, type) { + this.source = source; + this.target = target; + this.type = type; + } + return PowerEdge; +}()); +var PowerEdge_1 = PowerEdge; +var Configuration = (function () { + function Configuration(n, edges, linkAccessor, rootGroup) { + var _this = this; + this.linkAccessor = linkAccessor; + this.modules = new Array(n); + this.roots = []; + if (rootGroup) { + this.initModulesFromGroup(rootGroup); + } + else { + this.roots.push(new ModuleSet()); + for (var i = 0; i < n; ++i) + this.roots[0].add(this.modules[i] = new Module(i)); + } + this.R = edges.length; + edges.forEach(function (e) { + var s = _this.modules[linkAccessor.getSourceIndex(e)], t = _this.modules[linkAccessor.getTargetIndex(e)], type = linkAccessor.getType(e); + s.outgoing.add(type, t); + t.incoming.add(type, s); + }); + } + Configuration.prototype.initModulesFromGroup = function (group) { + var moduleSet = new ModuleSet(); + this.roots.push(moduleSet); + for (var i = 0; i < group.leaves.length; ++i) { + var node = group.leaves[i]; + var module = new Module(node.id); + this.modules[node.id] = module; + moduleSet.add(module); + } + if (group.groups) { + for (var j = 0; j < group.groups.length; ++j) { + var child = group.groups[j]; + var definition = {}; + for (var prop in child) + if (prop !== "leaves" && prop !== "groups" && child.hasOwnProperty(prop)) + definition[prop] = child[prop]; + moduleSet.add(new Module(-1 - j, new LinkSets(), new LinkSets(), this.initModulesFromGroup(child), definition)); + } + } + return moduleSet; + }; + Configuration.prototype.merge = function (a, b, k) { + if (k === void 0) { k = 0; } + var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing); + var children = new ModuleSet(); + children.add(a); + children.add(b); + var m = new Module(this.modules.length, outInt, inInt, children); + this.modules.push(m); + var update = function (s, i, o) { + s.forAll(function (ms, linktype) { + ms.forAll(function (n) { + var nls = n[i]; + nls.add(linktype, m); + nls.remove(linktype, a); + nls.remove(linktype, b); + a[o].remove(linktype, n); + b[o].remove(linktype, n); + }); + }); + }; + update(outInt, "incoming", "outgoing"); + update(inInt, "outgoing", "incoming"); + this.R -= inInt.count() + outInt.count(); + this.roots[k].remove(a); + this.roots[k].remove(b); + this.roots[k].add(m); + return m; + }; + Configuration.prototype.rootMerges = function (k) { + if (k === void 0) { k = 0; } + var rs = this.roots[k].modules(); + var n = rs.length; + var merges = new Array(n * (n - 1)); + var ctr = 0; + for (var i = 0, i_ = n - 1; i < i_; ++i) { + for (var j = i + 1; j < n; ++j) { + var a = rs[i], b = rs[j]; + merges[ctr] = { id: ctr, nEdges: this.nEdges(a, b), a: a, b: b }; + ctr++; + } + } + return merges; + }; + Configuration.prototype.greedyMerge = function () { + for (var i = 0; i < this.roots.length; ++i) { + if (this.roots[i].modules().length < 2) + continue; + var ms = this.rootMerges(i).sort(function (a, b) { return a.nEdges == b.nEdges ? a.id - b.id : a.nEdges - b.nEdges; }); + var m = ms[0]; + if (m.nEdges >= this.R) + continue; + this.merge(m.a, m.b, i); + return true; + } + }; + Configuration.prototype.nEdges = function (a, b) { + var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing); + return this.R - inInt.count() - outInt.count(); + }; + Configuration.prototype.getGroupHierarchy = function (retargetedEdges) { + var _this = this; + var groups = []; + var root = {}; + toGroups(this.roots[0], root, groups); + var es = this.allEdges(); + es.forEach(function (e) { + var a = _this.modules[e.source]; + var b = _this.modules[e.target]; + retargetedEdges.push(new PowerEdge(typeof a.gid === "undefined" ? e.source : groups[a.gid], typeof b.gid === "undefined" ? e.target : groups[b.gid], e.type)); + }); + return groups; + }; + Configuration.prototype.allEdges = function () { + var es = []; + Configuration.getEdges(this.roots[0], es); + return es; + }; + Configuration.getEdges = function (modules, es) { + modules.forAll(function (m) { + m.getEdges(es); + Configuration.getEdges(m.children, es); + }); + }; + return Configuration; +}()); +var Configuration_1 = Configuration; +function toGroups(modules, group, groups) { + modules.forAll(function (m) { + if (m.isLeaf()) { + if (!group.leaves) + group.leaves = []; + group.leaves.push(m.id); + } + else { + var g = group; + m.gid = groups.length; + if (!m.isIsland() || m.isPredefined()) { + g = { id: m.gid }; + if (m.isPredefined()) + for (var prop in m.definition) + g[prop] = m.definition[prop]; + if (!group.groups) + group.groups = []; + group.groups.push(m.gid); + groups.push(g); + } + toGroups(m.children, g, groups); + } + }); +} +var Module = (function () { + function Module(id, outgoing, incoming, children, definition) { + if (outgoing === void 0) { outgoing = new LinkSets(); } + if (incoming === void 0) { incoming = new LinkSets(); } + if (children === void 0) { children = new ModuleSet(); } + this.id = id; + this.outgoing = outgoing; + this.incoming = incoming; + this.children = children; + this.definition = definition; + } + Module.prototype.getEdges = function (es) { + var _this = this; + this.outgoing.forAll(function (ms, edgetype) { + ms.forAll(function (target) { + es.push(new PowerEdge(_this.id, target.id, edgetype)); + }); + }); + }; + Module.prototype.isLeaf = function () { + return this.children.count() === 0; + }; + Module.prototype.isIsland = function () { + return this.outgoing.count() === 0 && this.incoming.count() === 0; + }; + Module.prototype.isPredefined = function () { + return typeof this.definition !== "undefined"; + }; + return Module; +}()); +var Module_1 = Module; +function intersection(m, n) { + var i = {}; + for (var v in m) + if (v in n) + i[v] = m[v]; + return i; +} +var ModuleSet = (function () { + function ModuleSet() { + this.table = {}; + } + ModuleSet.prototype.count = function () { + return Object.keys(this.table).length; + }; + ModuleSet.prototype.intersection = function (other) { + var result = new ModuleSet(); + result.table = intersection(this.table, other.table); + return result; + }; + ModuleSet.prototype.intersectionCount = function (other) { + return this.intersection(other).count(); + }; + ModuleSet.prototype.contains = function (id) { + return id in this.table; + }; + ModuleSet.prototype.add = function (m) { + this.table[m.id] = m; + }; + ModuleSet.prototype.remove = function (m) { + delete this.table[m.id]; + }; + ModuleSet.prototype.forAll = function (f) { + for (var mid in this.table) { + f(this.table[mid]); + } + }; + ModuleSet.prototype.modules = function () { + var vs = []; + this.forAll(function (m) { + if (!m.isPredefined()) + vs.push(m); + }); + return vs; + }; + return ModuleSet; +}()); +var ModuleSet_1 = ModuleSet; +var LinkSets = (function () { + function LinkSets() { + this.sets = {}; + this.n = 0; + } + LinkSets.prototype.count = function () { + return this.n; + }; + LinkSets.prototype.contains = function (id) { + var result = false; + this.forAllModules(function (m) { + if (!result && m.id == id) { + result = true; + } + }); + return result; + }; + LinkSets.prototype.add = function (linktype, m) { + var s = linktype in this.sets ? this.sets[linktype] : this.sets[linktype] = new ModuleSet(); + s.add(m); + ++this.n; + }; + LinkSets.prototype.remove = function (linktype, m) { + var ms = this.sets[linktype]; + ms.remove(m); + if (ms.count() === 0) { + delete this.sets[linktype]; + } + --this.n; + }; + LinkSets.prototype.forAll = function (f) { + for (var linktype in this.sets) { + f(this.sets[linktype], Number(linktype)); + } + }; + LinkSets.prototype.forAllModules = function (f) { + this.forAll(function (ms, lt) { return ms.forAll(f); }); + }; + LinkSets.prototype.intersection = function (other) { + var result = new LinkSets(); + this.forAll(function (ms, lt) { + if (lt in other.sets) { + var i = ms.intersection(other.sets[lt]), n = i.count(); + if (n > 0) { + result.sets[lt] = i; + result.n += n; + } + } + }); + return result; + }; + return LinkSets; +}()); +var LinkSets_1 = LinkSets; +function getGroups(nodes, links, la, rootGroup) { + var n = nodes.length, c = new Configuration(n, links, la, rootGroup); + while (c.greedyMerge()) + ; + var powerEdges = []; + var g = c.getGroupHierarchy(powerEdges); + powerEdges.forEach(function (e) { + var f = function (end) { + var g = e[end]; + if (typeof g == "number") + e[end] = nodes[g]; + }; + f("source"); + f("target"); + }); + return { groups: g, powerEdges: powerEdges }; +} +var getGroups_1 = getGroups; + + +var powergraph = /*#__PURE__*/Object.defineProperty({ + PowerEdge: PowerEdge_1, + Configuration: Configuration_1, + Module: Module_1, + ModuleSet: ModuleSet_1, + LinkSets: LinkSets_1, + getGroups: getGroups_1 +}, '__esModule', {value: true}); + +function unionCount(a, b) { + var u = {}; + for (var i in a) + u[i] = {}; + for (var i in b) + u[i] = {}; + return Object.keys(u).length; +} +function intersectionCount(a, b) { + var n = 0; + for (var i in a) + if (typeof b[i] !== 'undefined') + ++n; + return n; +} +function getNeighbours(links, la) { + var neighbours = {}; + var addNeighbours = function (u, v) { + if (typeof neighbours[u] === 'undefined') + neighbours[u] = {}; + neighbours[u][v] = {}; + }; + links.forEach(function (e) { + var u = la.getSourceIndex(e), v = la.getTargetIndex(e); + addNeighbours(u, v); + addNeighbours(v, u); + }); + return neighbours; +} +function computeLinkLengths(links, w, f, la) { + var neighbours = getNeighbours(links, la); + links.forEach(function (l) { + var a = neighbours[la.getSourceIndex(l)]; + var b = neighbours[la.getTargetIndex(l)]; + la.setLength(l, 1 + w * f(a, b)); + }); +} +function symmetricDiffLinkLengths(links, la, w) { + if (w === void 0) { w = 1; } + computeLinkLengths(links, w, function (a, b) { return Math.sqrt(unionCount(a, b) - intersectionCount(a, b)); }, la); +} +var symmetricDiffLinkLengths_1 = symmetricDiffLinkLengths; +function jaccardLinkLengths(links, la, w) { + if (w === void 0) { w = 1; } + computeLinkLengths(links, w, function (a, b) { + return Math.min(Object.keys(a).length, Object.keys(b).length) < 1.1 ? 0 : intersectionCount(a, b) / unionCount(a, b); + }, la); +} +var jaccardLinkLengths_1 = jaccardLinkLengths; +function generateDirectedEdgeConstraints(n, links, axis, la) { + var components = stronglyConnectedComponents(n, links, la); + var nodes = {}; + components.forEach(function (c, i) { + return c.forEach(function (v) { return nodes[v] = i; }); + }); + var constraints = []; + links.forEach(function (l) { + var ui = la.getSourceIndex(l), vi = la.getTargetIndex(l), u = nodes[ui], v = nodes[vi]; + if (u !== v) { + constraints.push({ + axis: axis, + left: ui, + right: vi, + gap: la.getMinSeparation(l) + }); + } + }); + return constraints; +} +var generateDirectedEdgeConstraints_1 = generateDirectedEdgeConstraints; +function stronglyConnectedComponents(numVertices, edges, la) { + var nodes = []; + var index = 0; + var stack = []; + var components = []; + function strongConnect(v) { + v.index = v.lowlink = index++; + stack.push(v); + v.onStack = true; + for (var _i = 0, _a = v.out; _i < _a.length; _i++) { + var w = _a[_i]; + if (typeof w.index === 'undefined') { + strongConnect(w); + v.lowlink = Math.min(v.lowlink, w.lowlink); + } + else if (w.onStack) { + v.lowlink = Math.min(v.lowlink, w.index); + } + } + if (v.lowlink === v.index) { + var component = []; + while (stack.length) { + w = stack.pop(); + w.onStack = false; + component.push(w); + if (w === v) + break; + } + components.push(component.map(function (v) { return v.id; })); + } + } + for (var i = 0; i < numVertices; i++) { + nodes.push({ id: i, out: [] }); + } + for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) { + var e = edges_1[_i]; + var v_1 = nodes[la.getSourceIndex(e)], w = nodes[la.getTargetIndex(e)]; + v_1.out.push(w); + } + for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) { + var v = nodes_1[_a]; + if (typeof v.index === 'undefined') + strongConnect(v); + } + return components; +} +var stronglyConnectedComponents_1 = stronglyConnectedComponents; + + +var linklengths = /*#__PURE__*/Object.defineProperty({ + symmetricDiffLinkLengths: symmetricDiffLinkLengths_1, + jaccardLinkLengths: jaccardLinkLengths_1, + generateDirectedEdgeConstraints: generateDirectedEdgeConstraints_1, + stronglyConnectedComponents: stronglyConnectedComponents_1 +}, '__esModule', {value: true}); + +var Locks = (function () { + function Locks() { + this.locks = {}; + } + Locks.prototype.add = function (id, x) { + this.locks[id] = x; + }; + Locks.prototype.clear = function () { + this.locks = {}; + }; + Locks.prototype.isEmpty = function () { + for (var l in this.locks) + return false; + return true; + }; + Locks.prototype.apply = function (f) { + for (var l in this.locks) { + f(Number(l), this.locks[l]); + } + }; + return Locks; +}()); +var Locks_1 = Locks; +var Descent = (function () { + function Descent(x, D, G) { + if (G === void 0) { G = null; } + this.D = D; + this.G = G; + this.threshold = 0.0001; + this.numGridSnapNodes = 0; + this.snapGridSize = 100; + this.snapStrength = 1000; + this.scaleSnapByMaxH = false; + this.random = new PseudoRandom(); + this.project = null; + this.x = x; + this.k = x.length; + var n = this.n = x[0].length; + this.H = new Array(this.k); + this.g = new Array(this.k); + this.Hd = new Array(this.k); + this.a = new Array(this.k); + this.b = new Array(this.k); + this.c = new Array(this.k); + this.d = new Array(this.k); + this.e = new Array(this.k); + this.ia = new Array(this.k); + this.ib = new Array(this.k); + this.xtmp = new Array(this.k); + this.locks = new Locks(); + this.minD = Number.MAX_VALUE; + var i = n, j; + while (i--) { + j = n; + while (--j > i) { + var d = D[i][j]; + if (d > 0 && d < this.minD) { + this.minD = d; + } + } + } + if (this.minD === Number.MAX_VALUE) + this.minD = 1; + i = this.k; + while (i--) { + this.g[i] = new Array(n); + this.H[i] = new Array(n); + j = n; + while (j--) { + this.H[i][j] = new Array(n); + } + this.Hd[i] = new Array(n); + this.a[i] = new Array(n); + this.b[i] = new Array(n); + this.c[i] = new Array(n); + this.d[i] = new Array(n); + this.e[i] = new Array(n); + this.ia[i] = new Array(n); + this.ib[i] = new Array(n); + this.xtmp[i] = new Array(n); + } + } + Descent.createSquareMatrix = function (n, f) { + var M = new Array(n); + for (var i = 0; i < n; ++i) { + M[i] = new Array(n); + for (var j = 0; j < n; ++j) { + M[i][j] = f(i, j); + } + } + return M; + }; + Descent.prototype.offsetDir = function () { + var _this = this; + var u = new Array(this.k); + var l = 0; + for (var i = 0; i < this.k; ++i) { + var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5; + l += x * x; + } + l = Math.sqrt(l); + return u.map(function (x) { return x *= _this.minD / l; }); + }; + Descent.prototype.computeDerivatives = function (x) { + var _this = this; + var n = this.n; + if (n < 1) + return; + var i; + var d = new Array(this.k); + var d2 = new Array(this.k); + var Huu = new Array(this.k); + var maxH = 0; + for (var u = 0; u < n; ++u) { + for (i = 0; i < this.k; ++i) + Huu[i] = this.g[i][u] = 0; + for (var v = 0; v < n; ++v) { + if (u === v) + continue; + var maxDisplaces = n; + while (maxDisplaces--) { + var sd2 = 0; + for (i = 0; i < this.k; ++i) { + var dx = d[i] = x[i][u] - x[i][v]; + sd2 += d2[i] = dx * dx; + } + if (sd2 > 1e-9) + break; + var rd = this.offsetDir(); + for (i = 0; i < this.k; ++i) + x[i][v] += rd[i]; + } + var l = Math.sqrt(sd2); + var D = this.D[u][v]; + var weight = this.G != null ? this.G[u][v] : 1; + if (weight > 1 && l > D || !isFinite(D)) { + for (i = 0; i < this.k; ++i) + this.H[i][u][v] = 0; + continue; + } + if (weight > 1) { + weight = 1; + } + var D2 = D * D; + var gs = 2 * weight * (l - D) / (D2 * l); + var l3 = l * l * l; + var hs = 2 * -weight / (D2 * l3); + if (!isFinite(gs)) + console.log(gs); + for (i = 0; i < this.k; ++i) { + this.g[i][u] += d[i] * gs; + Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2); + } + } + for (i = 0; i < this.k; ++i) + maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]); + } + var r = this.snapGridSize / 2; + var g = this.snapGridSize; + var w = this.snapStrength; + var k = w / (r * r); + var numNodes = this.numGridSnapNodes; + for (var u = 0; u < numNodes; ++u) { + for (i = 0; i < this.k; ++i) { + var xiu = this.x[i][u]; + var m = xiu / g; + var f = m % 1; + var q = m - f; + var a = Math.abs(f); + var dx = (a <= 0.5) ? xiu - q * g : + (xiu > 0) ? xiu - (q + 1) * g : xiu - (q - 1) * g; + if (-r < dx && dx <= r) { + if (this.scaleSnapByMaxH) { + this.g[i][u] += maxH * k * dx; + this.H[i][u][u] += maxH * k; + } + else { + this.g[i][u] += k * dx; + this.H[i][u][u] += k; + } + } + } + } + if (!this.locks.isEmpty()) { + this.locks.apply(function (u, p) { + for (i = 0; i < _this.k; ++i) { + _this.H[i][u][u] += maxH; + _this.g[i][u] -= maxH * (p[i] - x[i][u]); + } + }); + } + }; + Descent.dotProd = function (a, b) { + var x = 0, i = a.length; + while (i--) + x += a[i] * b[i]; + return x; + }; + Descent.rightMultiply = function (m, v, r) { + var i = m.length; + while (i--) + r[i] = Descent.dotProd(m[i], v); + }; + Descent.prototype.computeStepSize = function (d) { + var numerator = 0, denominator = 0; + for (var i = 0; i < this.k; ++i) { + numerator += Descent.dotProd(this.g[i], d[i]); + Descent.rightMultiply(this.H[i], d[i], this.Hd[i]); + denominator += Descent.dotProd(d[i], this.Hd[i]); + } + if (denominator === 0 || !isFinite(denominator)) + return 0; + return 1 * numerator / denominator; + }; + Descent.prototype.reduceStress = function () { + this.computeDerivatives(this.x); + var alpha = this.computeStepSize(this.g); + for (var i = 0; i < this.k; ++i) { + this.takeDescentStep(this.x[i], this.g[i], alpha); + } + return this.computeStress(); + }; + Descent.copy = function (a, b) { + var m = a.length, n = b[0].length; + for (var i = 0; i < m; ++i) { + for (var j = 0; j < n; ++j) { + b[i][j] = a[i][j]; + } + } + }; + Descent.prototype.stepAndProject = function (x0, r, d, stepSize) { + Descent.copy(x0, r); + this.takeDescentStep(r[0], d[0], stepSize); + if (this.project) + this.project[0](x0[0], x0[1], r[0]); + this.takeDescentStep(r[1], d[1], stepSize); + if (this.project) + this.project[1](r[0], x0[1], r[1]); + for (var i = 2; i < this.k; i++) + this.takeDescentStep(r[i], d[i], stepSize); + }; + Descent.mApply = function (m, n, f) { + var i = m; + while (i-- > 0) { + var j = n; + while (j-- > 0) + f(i, j); + } + }; + Descent.prototype.matrixApply = function (f) { + Descent.mApply(this.k, this.n, f); + }; + Descent.prototype.computeNextPosition = function (x0, r) { + var _this = this; + this.computeDerivatives(x0); + var alpha = this.computeStepSize(this.g); + this.stepAndProject(x0, r, this.g, alpha); + if (this.project) { + this.matrixApply(function (i, j) { return _this.e[i][j] = x0[i][j] - r[i][j]; }); + var beta = this.computeStepSize(this.e); + beta = Math.max(0.2, Math.min(beta, 1)); + this.stepAndProject(x0, r, this.e, beta); + } + }; + Descent.prototype.run = function (iterations) { + var stress = Number.MAX_VALUE, converged = false; + while (!converged && iterations-- > 0) { + var s = this.rungeKutta(); + converged = Math.abs(stress / s - 1) < this.threshold; + stress = s; + } + return stress; + }; + Descent.prototype.rungeKutta = function () { + var _this = this; + this.computeNextPosition(this.x, this.a); + Descent.mid(this.x, this.a, this.ia); + this.computeNextPosition(this.ia, this.b); + Descent.mid(this.x, this.b, this.ib); + this.computeNextPosition(this.ib, this.c); + this.computeNextPosition(this.c, this.d); + var disp = 0; + this.matrixApply(function (i, j) { + var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0, d = _this.x[i][j] - x; + disp += d * d; + _this.x[i][j] = x; + }); + return disp; + }; + Descent.mid = function (a, b, m) { + Descent.mApply(a.length, a[0].length, function (i, j) { + return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0; + }); + }; + Descent.prototype.takeDescentStep = function (x, d, stepSize) { + for (var i = 0; i < this.n; ++i) { + x[i] = x[i] - stepSize * d[i]; + } + }; + Descent.prototype.computeStress = function () { + var stress = 0; + for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) { + for (var v = u + 1, n = this.n; v < n; ++v) { + var l = 0; + for (var i = 0; i < this.k; ++i) { + var dx = this.x[i][u] - this.x[i][v]; + l += dx * dx; + } + l = Math.sqrt(l); + var d = this.D[u][v]; + if (!isFinite(d)) + continue; + var rl = d - l; + var d2 = d * d; + stress += rl * rl / d2; + } + } + return stress; + }; + Descent.zeroDistance = 1e-10; + return Descent; +}()); +var Descent_1 = Descent; +var PseudoRandom = (function () { + function PseudoRandom(seed) { + if (seed === void 0) { seed = 1; } + this.seed = seed; + this.a = 214013; + this.c = 2531011; + this.m = 2147483648; + this.range = 32767; + } + PseudoRandom.prototype.getNext = function () { + this.seed = (this.seed * this.a + this.c) % this.m; + return (this.seed >> 16) / this.range; + }; + PseudoRandom.prototype.getNextBetween = function (min, max) { + return min + this.getNext() * (max - min); + }; + return PseudoRandom; +}()); +var PseudoRandom_1 = PseudoRandom; + + +var descent = /*#__PURE__*/Object.defineProperty({ + Locks: Locks_1, + Descent: Descent_1, + PseudoRandom: PseudoRandom_1 +}, '__esModule', {value: true}); + +var PositionStats = (function () { + function PositionStats(scale) { + this.scale = scale; + this.AB = 0; + this.AD = 0; + this.A2 = 0; + } + PositionStats.prototype.addVariable = function (v) { + var ai = this.scale / v.scale; + var bi = v.offset / v.scale; + var wi = v.weight; + this.AB += wi * ai * bi; + this.AD += wi * ai * v.desiredPosition; + this.A2 += wi * ai * ai; + }; + PositionStats.prototype.getPosn = function () { + return (this.AD - this.AB) / this.A2; + }; + return PositionStats; +}()); +var PositionStats_1 = PositionStats; +var Constraint = (function () { + function Constraint(left, right, gap, equality) { + if (equality === void 0) { equality = false; } + this.left = left; + this.right = right; + this.gap = gap; + this.equality = equality; + this.active = false; + this.unsatisfiable = false; + this.left = left; + this.right = right; + this.gap = gap; + this.equality = equality; + } + Constraint.prototype.slack = function () { + return this.unsatisfiable ? Number.MAX_VALUE + : this.right.scale * this.right.position() - this.gap + - this.left.scale * this.left.position(); + }; + return Constraint; +}()); +var Constraint_1 = Constraint; +var Variable = (function () { + function Variable(desiredPosition, weight, scale) { + if (weight === void 0) { weight = 1; } + if (scale === void 0) { scale = 1; } + this.desiredPosition = desiredPosition; + this.weight = weight; + this.scale = scale; + this.offset = 0; + } + Variable.prototype.dfdv = function () { + return 2.0 * this.weight * (this.position() - this.desiredPosition); + }; + Variable.prototype.position = function () { + return (this.block.ps.scale * this.block.posn + this.offset) / this.scale; + }; + Variable.prototype.visitNeighbours = function (prev, f) { + var ff = function (c, next) { return c.active && prev !== next && f(c, next); }; + this.cOut.forEach(function (c) { return ff(c, c.right); }); + this.cIn.forEach(function (c) { return ff(c, c.left); }); + }; + return Variable; +}()); +var Variable_1 = Variable; +var Block = (function () { + function Block(v) { + this.vars = []; + v.offset = 0; + this.ps = new PositionStats(v.scale); + this.addVariable(v); + } + Block.prototype.addVariable = function (v) { + v.block = this; + this.vars.push(v); + this.ps.addVariable(v); + this.posn = this.ps.getPosn(); + }; + Block.prototype.updateWeightedPosition = function () { + this.ps.AB = this.ps.AD = this.ps.A2 = 0; + for (var i = 0, n = this.vars.length; i < n; ++i) + this.ps.addVariable(this.vars[i]); + this.posn = this.ps.getPosn(); + }; + Block.prototype.compute_lm = function (v, u, postAction) { + var _this = this; + var dfdv = v.dfdv(); + v.visitNeighbours(u, function (c, next) { + var _dfdv = _this.compute_lm(next, v, postAction); + if (next === c.right) { + dfdv += _dfdv * c.left.scale; + c.lm = _dfdv; + } + else { + dfdv += _dfdv * c.right.scale; + c.lm = -_dfdv; + } + postAction(c); + }); + return dfdv / v.scale; + }; + Block.prototype.populateSplitBlock = function (v, prev) { + var _this = this; + v.visitNeighbours(prev, function (c, next) { + next.offset = v.offset + (next === c.right ? c.gap : -c.gap); + _this.addVariable(next); + _this.populateSplitBlock(next, v); + }); + }; + Block.prototype.traverse = function (visit, acc, v, prev) { + var _this = this; + if (v === void 0) { v = this.vars[0]; } + if (prev === void 0) { prev = null; } + v.visitNeighbours(prev, function (c, next) { + acc.push(visit(c)); + _this.traverse(visit, acc, next, v); + }); + }; + Block.prototype.findMinLM = function () { + var m = null; + this.compute_lm(this.vars[0], null, function (c) { + if (!c.equality && (m === null || c.lm < m.lm)) + m = c; + }); + return m; + }; + Block.prototype.findMinLMBetween = function (lv, rv) { + this.compute_lm(lv, null, function () { }); + var m = null; + this.findPath(lv, null, rv, function (c, next) { + if (!c.equality && c.right === next && (m === null || c.lm < m.lm)) + m = c; + }); + return m; + }; + Block.prototype.findPath = function (v, prev, to, visit) { + var _this = this; + var endFound = false; + v.visitNeighbours(prev, function (c, next) { + if (!endFound && (next === to || _this.findPath(next, v, to, visit))) { + endFound = true; + visit(c, next); + } + }); + return endFound; + }; + Block.prototype.isActiveDirectedPathBetween = function (u, v) { + if (u === v) + return true; + var i = u.cOut.length; + while (i--) { + var c = u.cOut[i]; + if (c.active && this.isActiveDirectedPathBetween(c.right, v)) + return true; + } + return false; + }; + Block.split = function (c) { + c.active = false; + return [Block.createSplitBlock(c.left), Block.createSplitBlock(c.right)]; + }; + Block.createSplitBlock = function (startVar) { + var b = new Block(startVar); + b.populateSplitBlock(startVar, null); + return b; + }; + Block.prototype.splitBetween = function (vl, vr) { + var c = this.findMinLMBetween(vl, vr); + if (c !== null) { + var bs = Block.split(c); + return { constraint: c, lb: bs[0], rb: bs[1] }; + } + return null; + }; + Block.prototype.mergeAcross = function (b, c, dist) { + c.active = true; + for (var i = 0, n = b.vars.length; i < n; ++i) { + var v = b.vars[i]; + v.offset += dist; + this.addVariable(v); + } + this.posn = this.ps.getPosn(); + }; + Block.prototype.cost = function () { + var sum = 0, i = this.vars.length; + while (i--) { + var v = this.vars[i], d = v.position() - v.desiredPosition; + sum += d * d * v.weight; + } + return sum; + }; + return Block; +}()); +var Block_1 = Block; +var Blocks = (function () { + function Blocks(vs) { + this.vs = vs; + var n = vs.length; + this.list = new Array(n); + while (n--) { + var b = new Block(vs[n]); + this.list[n] = b; + b.blockInd = n; + } + } + Blocks.prototype.cost = function () { + var sum = 0, i = this.list.length; + while (i--) + sum += this.list[i].cost(); + return sum; + }; + Blocks.prototype.insert = function (b) { + b.blockInd = this.list.length; + this.list.push(b); + }; + Blocks.prototype.remove = function (b) { + var last = this.list.length - 1; + var swapBlock = this.list[last]; + this.list.length = last; + if (b !== swapBlock) { + this.list[b.blockInd] = swapBlock; + swapBlock.blockInd = b.blockInd; + } + }; + Blocks.prototype.merge = function (c) { + var l = c.left.block, r = c.right.block; + var dist = c.right.offset - c.left.offset - c.gap; + if (l.vars.length < r.vars.length) { + r.mergeAcross(l, c, dist); + this.remove(l); + } + else { + l.mergeAcross(r, c, -dist); + this.remove(r); + } + }; + Blocks.prototype.forEach = function (f) { + this.list.forEach(f); + }; + Blocks.prototype.updateBlockPositions = function () { + this.list.forEach(function (b) { return b.updateWeightedPosition(); }); + }; + Blocks.prototype.split = function (inactive) { + var _this = this; + this.updateBlockPositions(); + this.list.forEach(function (b) { + var v = b.findMinLM(); + if (v !== null && v.lm < Solver.LAGRANGIAN_TOLERANCE) { + b = v.left.block; + Block.split(v).forEach(function (nb) { return _this.insert(nb); }); + _this.remove(b); + inactive.push(v); + } + }); + }; + return Blocks; +}()); +var Blocks_1 = Blocks; +var Solver = (function () { + function Solver(vs, cs) { + this.vs = vs; + this.cs = cs; + this.vs = vs; + vs.forEach(function (v) { + v.cIn = [], v.cOut = []; + }); + this.cs = cs; + cs.forEach(function (c) { + c.left.cOut.push(c); + c.right.cIn.push(c); + }); + this.inactive = cs.map(function (c) { c.active = false; return c; }); + this.bs = null; + } + Solver.prototype.cost = function () { + return this.bs.cost(); + }; + Solver.prototype.setStartingPositions = function (ps) { + this.inactive = this.cs.map(function (c) { c.active = false; return c; }); + this.bs = new Blocks(this.vs); + this.bs.forEach(function (b, i) { return b.posn = ps[i]; }); + }; + Solver.prototype.setDesiredPositions = function (ps) { + this.vs.forEach(function (v, i) { return v.desiredPosition = ps[i]; }); + }; + Solver.prototype.mostViolated = function () { + var minSlack = Number.MAX_VALUE, v = null, l = this.inactive, n = l.length, deletePoint = n; + for (var i = 0; i < n; ++i) { + var c = l[i]; + if (c.unsatisfiable) + continue; + var slack = c.slack(); + if (c.equality || slack < minSlack) { + minSlack = slack; + v = c; + deletePoint = i; + if (c.equality) + break; + } + } + if (deletePoint !== n && + (minSlack < Solver.ZERO_UPPERBOUND && !v.active || v.equality)) { + l[deletePoint] = l[n - 1]; + l.length = n - 1; + } + return v; + }; + Solver.prototype.satisfy = function () { + if (this.bs == null) { + this.bs = new Blocks(this.vs); + } + this.bs.split(this.inactive); + var v = null; + while ((v = this.mostViolated()) && (v.equality || v.slack() < Solver.ZERO_UPPERBOUND && !v.active)) { + var lb = v.left.block, rb = v.right.block; + if (lb !== rb) { + this.bs.merge(v); + } + else { + if (lb.isActiveDirectedPathBetween(v.right, v.left)) { + v.unsatisfiable = true; + continue; + } + var split = lb.splitBetween(v.left, v.right); + if (split !== null) { + this.bs.insert(split.lb); + this.bs.insert(split.rb); + this.bs.remove(lb); + this.inactive.push(split.constraint); + } + else { + v.unsatisfiable = true; + continue; + } + if (v.slack() >= 0) { + this.inactive.push(v); + } + else { + this.bs.merge(v); + } + } + } + }; + Solver.prototype.solve = function () { + this.satisfy(); + var lastcost = Number.MAX_VALUE, cost = this.bs.cost(); + while (Math.abs(lastcost - cost) > 0.0001) { + this.satisfy(); + lastcost = cost; + cost = this.bs.cost(); + } + return cost; + }; + Solver.LAGRANGIAN_TOLERANCE = -1e-4; + Solver.ZERO_UPPERBOUND = -1e-10; + return Solver; +}()); +var Solver_1 = Solver; +function removeOverlapInOneDimension(spans, lowerBound, upperBound) { + var vs = spans.map(function (s) { return new Variable(s.desiredCenter); }); + var cs = []; + var n = spans.length; + for (var i = 0; i < n - 1; i++) { + var left = spans[i], right = spans[i + 1]; + cs.push(new Constraint(vs[i], vs[i + 1], (left.size + right.size) / 2)); + } + var leftMost = vs[0], rightMost = vs[n - 1], leftMostSize = spans[0].size / 2, rightMostSize = spans[n - 1].size / 2; + var vLower = null, vUpper = null; + if (lowerBound) { + vLower = new Variable(lowerBound, leftMost.weight * 1000); + vs.push(vLower); + cs.push(new Constraint(vLower, leftMost, leftMostSize)); + } + if (upperBound) { + vUpper = new Variable(upperBound, rightMost.weight * 1000); + vs.push(vUpper); + cs.push(new Constraint(rightMost, vUpper, rightMostSize)); + } + var solver = new Solver(vs, cs); + solver.solve(); + return { + newCenters: vs.slice(0, spans.length).map(function (v) { return v.position(); }), + lowerBound: vLower ? vLower.position() : leftMost.position() - leftMostSize, + upperBound: vUpper ? vUpper.position() : rightMost.position() + rightMostSize + }; +} +var removeOverlapInOneDimension_1 = removeOverlapInOneDimension; + + +var vpsc = /*#__PURE__*/Object.defineProperty({ + PositionStats: PositionStats_1, + Constraint: Constraint_1, + Variable: Variable_1, + Block: Block_1, + Blocks: Blocks_1, + Solver: Solver_1, + removeOverlapInOneDimension: removeOverlapInOneDimension_1 +}, '__esModule', {value: true}); + +var __extends$5 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); + +var TreeBase = (function () { + function TreeBase() { + this.findIter = function (data) { + var res = this._root; + var iter = this.iterator(); + while (res !== null) { + var c = this._comparator(data, res.data); + if (c === 0) { + iter._cursor = res; + return iter; + } + else { + iter._ancestors.push(res); + res = res.get_child(c > 0); + } + } + return null; + }; + } + TreeBase.prototype.clear = function () { + this._root = null; + this.size = 0; + }; + TreeBase.prototype.find = function (data) { + var res = this._root; + while (res !== null) { + var c = this._comparator(data, res.data); + if (c === 0) { + return res.data; + } + else { + res = res.get_child(c > 0); + } + } + return null; + }; + TreeBase.prototype.lowerBound = function (data) { + return this._bound(data, this._comparator); + }; + TreeBase.prototype.upperBound = function (data) { + var cmp = this._comparator; + function reverse_cmp(a, b) { + return cmp(b, a); + } + return this._bound(data, reverse_cmp); + }; + TreeBase.prototype.min = function () { + var res = this._root; + if (res === null) { + return null; + } + while (res.left !== null) { + res = res.left; + } + return res.data; + }; + TreeBase.prototype.max = function () { + var res = this._root; + if (res === null) { + return null; + } + while (res.right !== null) { + res = res.right; + } + return res.data; + }; + TreeBase.prototype.iterator = function () { + return new Iterator(this); + }; + TreeBase.prototype.each = function (cb) { + var it = this.iterator(), data; + while ((data = it.next()) !== null) { + cb(data); + } + }; + TreeBase.prototype.reach = function (cb) { + var it = this.iterator(), data; + while ((data = it.prev()) !== null) { + cb(data); + } + }; + TreeBase.prototype._bound = function (data, cmp) { + var cur = this._root; + var iter = this.iterator(); + while (cur !== null) { + var c = this._comparator(data, cur.data); + if (c === 0) { + iter._cursor = cur; + return iter; + } + iter._ancestors.push(cur); + cur = cur.get_child(c > 0); + } + for (var i = iter._ancestors.length - 1; i >= 0; --i) { + cur = iter._ancestors[i]; + if (cmp(data, cur.data) > 0) { + iter._cursor = cur; + iter._ancestors.length = i; + return iter; + } + } + iter._ancestors.length = 0; + return iter; + }; + return TreeBase; +}()); +var TreeBase_1 = TreeBase; +var Iterator = (function () { + function Iterator(tree) { + this._tree = tree; + this._ancestors = []; + this._cursor = null; + } + Iterator.prototype.data = function () { + return this._cursor !== null ? this._cursor.data : null; + }; + Iterator.prototype.next = function () { + if (this._cursor === null) { + var root = this._tree._root; + if (root !== null) { + this._minNode(root); + } + } + else { + if (this._cursor.right === null) { + var save; + do { + save = this._cursor; + if (this._ancestors.length) { + this._cursor = this._ancestors.pop(); + } + else { + this._cursor = null; + break; + } + } while (this._cursor.right === save); + } + else { + this._ancestors.push(this._cursor); + this._minNode(this._cursor.right); + } + } + return this._cursor !== null ? this._cursor.data : null; + }; + Iterator.prototype.prev = function () { + if (this._cursor === null) { + var root = this._tree._root; + if (root !== null) { + this._maxNode(root); + } + } + else { + if (this._cursor.left === null) { + var save; + do { + save = this._cursor; + if (this._ancestors.length) { + this._cursor = this._ancestors.pop(); + } + else { + this._cursor = null; + break; + } + } while (this._cursor.left === save); + } + else { + this._ancestors.push(this._cursor); + this._maxNode(this._cursor.left); + } + } + return this._cursor !== null ? this._cursor.data : null; + }; + Iterator.prototype._minNode = function (start) { + while (start.left !== null) { + this._ancestors.push(start); + start = start.left; + } + this._cursor = start; + }; + Iterator.prototype._maxNode = function (start) { + while (start.right !== null) { + this._ancestors.push(start); + start = start.right; + } + this._cursor = start; + }; + return Iterator; +}()); +var Iterator_1 = Iterator; +var Node$2 = (function () { + function Node(data) { + this.data = data; + this.left = null; + this.right = null; + this.red = true; + } + Node.prototype.get_child = function (dir) { + return dir ? this.right : this.left; + }; + Node.prototype.set_child = function (dir, val) { + if (dir) { + this.right = val; + } + else { + this.left = val; + } + }; + return Node; +}()); +var RBTree = (function (_super) { + __extends$5(RBTree, _super); + function RBTree(comparator) { + var _this = _super.call(this) || this; + _this._root = null; + _this._comparator = comparator; + _this.size = 0; + return _this; + } + RBTree.prototype.insert = function (data) { + var ret = false; + if (this._root === null) { + this._root = new Node$2(data); + ret = true; + this.size++; + } + else { + var head = new Node$2(undefined); + var dir = false; + var last = false; + var gp = null; + var ggp = head; + var p = null; + var node = this._root; + ggp.right = this._root; + while (true) { + if (node === null) { + node = new Node$2(data); + p.set_child(dir, node); + ret = true; + this.size++; + } + else if (RBTree.is_red(node.left) && RBTree.is_red(node.right)) { + node.red = true; + node.left.red = false; + node.right.red = false; + } + if (RBTree.is_red(node) && RBTree.is_red(p)) { + var dir2 = ggp.right === gp; + if (node === p.get_child(last)) { + ggp.set_child(dir2, RBTree.single_rotate(gp, !last)); + } + else { + ggp.set_child(dir2, RBTree.double_rotate(gp, !last)); + } + } + var cmp = this._comparator(node.data, data); + if (cmp === 0) { + break; + } + last = dir; + dir = cmp < 0; + if (gp !== null) { + ggp = gp; + } + gp = p; + p = node; + node = node.get_child(dir); + } + this._root = head.right; + } + this._root.red = false; + return ret; + }; + RBTree.prototype.remove = function (data) { + if (this._root === null) { + return false; + } + var head = new Node$2(undefined); + var node = head; + node.right = this._root; + var p = null; + var gp = null; + var found = null; + var dir = true; + while (node.get_child(dir) !== null) { + var last = dir; + gp = p; + p = node; + node = node.get_child(dir); + var cmp = this._comparator(data, node.data); + dir = cmp > 0; + if (cmp === 0) { + found = node; + } + if (!RBTree.is_red(node) && !RBTree.is_red(node.get_child(dir))) { + if (RBTree.is_red(node.get_child(!dir))) { + var sr = RBTree.single_rotate(node, dir); + p.set_child(last, sr); + p = sr; + } + else if (!RBTree.is_red(node.get_child(!dir))) { + var sibling = p.get_child(!last); + if (sibling !== null) { + if (!RBTree.is_red(sibling.get_child(!last)) && !RBTree.is_red(sibling.get_child(last))) { + p.red = false; + sibling.red = true; + node.red = true; + } + else { + var dir2 = gp.right === p; + if (RBTree.is_red(sibling.get_child(last))) { + gp.set_child(dir2, RBTree.double_rotate(p, last)); + } + else if (RBTree.is_red(sibling.get_child(!last))) { + gp.set_child(dir2, RBTree.single_rotate(p, last)); + } + var gpc = gp.get_child(dir2); + gpc.red = true; + node.red = true; + gpc.left.red = false; + gpc.right.red = false; + } + } + } + } + } + if (found !== null) { + found.data = node.data; + p.set_child(p.right === node, node.get_child(node.left === null)); + this.size--; + } + this._root = head.right; + if (this._root !== null) { + this._root.red = false; + } + return found !== null; + }; + RBTree.is_red = function (node) { + return node !== null && node.red; + }; + RBTree.single_rotate = function (root, dir) { + var save = root.get_child(!dir); + root.set_child(!dir, save.get_child(dir)); + save.set_child(dir, root); + root.red = true; + save.red = false; + return save; + }; + RBTree.double_rotate = function (root, dir) { + root.set_child(!dir, RBTree.single_rotate(root.get_child(!dir), !dir)); + return RBTree.single_rotate(root, dir); + }; + return RBTree; +}(TreeBase)); +var RBTree_1 = RBTree; + + +var rbtree = /*#__PURE__*/Object.defineProperty({ + TreeBase: TreeBase_1, + Iterator: Iterator_1, + RBTree: RBTree_1 +}, '__esModule', {value: true}); + +var __extends$4 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); + + + +function computeGroupBounds(g) { + g.bounds = typeof g.leaves !== "undefined" ? + g.leaves.reduce(function (r, c) { return c.bounds.union(r); }, Rectangle.empty()) : + Rectangle.empty(); + if (typeof g.groups !== "undefined") + g.bounds = g.groups.reduce(function (r, c) { return computeGroupBounds(c).union(r); }, g.bounds); + g.bounds = g.bounds.inflate(g.padding); + return g.bounds; +} +var computeGroupBounds_1 = computeGroupBounds; +var Rectangle = (function () { + function Rectangle(x, X, y, Y) { + this.x = x; + this.X = X; + this.y = y; + this.Y = Y; + } + Rectangle.empty = function () { return new Rectangle(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY); }; + Rectangle.prototype.cx = function () { return (this.x + this.X) / 2; }; + Rectangle.prototype.cy = function () { return (this.y + this.Y) / 2; }; + Rectangle.prototype.overlapX = function (r) { + var ux = this.cx(), vx = r.cx(); + if (ux <= vx && r.x < this.X) + return this.X - r.x; + if (vx <= ux && this.x < r.X) + return r.X - this.x; + return 0; + }; + Rectangle.prototype.overlapY = function (r) { + var uy = this.cy(), vy = r.cy(); + if (uy <= vy && r.y < this.Y) + return this.Y - r.y; + if (vy <= uy && this.y < r.Y) + return r.Y - this.y; + return 0; + }; + Rectangle.prototype.setXCentre = function (cx) { + var dx = cx - this.cx(); + this.x += dx; + this.X += dx; + }; + Rectangle.prototype.setYCentre = function (cy) { + var dy = cy - this.cy(); + this.y += dy; + this.Y += dy; + }; + Rectangle.prototype.width = function () { + return this.X - this.x; + }; + Rectangle.prototype.height = function () { + return this.Y - this.y; + }; + Rectangle.prototype.union = function (r) { + return new Rectangle(Math.min(this.x, r.x), Math.max(this.X, r.X), Math.min(this.y, r.y), Math.max(this.Y, r.Y)); + }; + Rectangle.prototype.lineIntersections = function (x1, y1, x2, y2) { + var sides = [[this.x, this.y, this.X, this.y], + [this.X, this.y, this.X, this.Y], + [this.X, this.Y, this.x, this.Y], + [this.x, this.Y, this.x, this.y]]; + var intersections = []; + for (var i = 0; i < 4; ++i) { + var r = Rectangle.lineIntersection(x1, y1, x2, y2, sides[i][0], sides[i][1], sides[i][2], sides[i][3]); + if (r !== null) + intersections.push({ x: r.x, y: r.y }); + } + return intersections; + }; + Rectangle.prototype.rayIntersection = function (x2, y2) { + var ints = this.lineIntersections(this.cx(), this.cy(), x2, y2); + return ints.length > 0 ? ints[0] : null; + }; + Rectangle.prototype.vertices = function () { + return [ + { x: this.x, y: this.y }, + { x: this.X, y: this.y }, + { x: this.X, y: this.Y }, + { x: this.x, y: this.Y } + ]; + }; + Rectangle.lineIntersection = function (x1, y1, x2, y2, x3, y3, x4, y4) { + var dx12 = x2 - x1, dx34 = x4 - x3, dy12 = y2 - y1, dy34 = y4 - y3, denominator = dy34 * dx12 - dx34 * dy12; + if (denominator == 0) + return null; + var dx31 = x1 - x3, dy31 = y1 - y3, numa = dx34 * dy31 - dy34 * dx31, a = numa / denominator, numb = dx12 * dy31 - dy12 * dx31, b = numb / denominator; + if (a >= 0 && a <= 1 && b >= 0 && b <= 1) { + return { + x: x1 + a * dx12, + y: y1 + a * dy12 + }; + } + return null; + }; + Rectangle.prototype.inflate = function (pad) { + return new Rectangle(this.x - pad, this.X + pad, this.y - pad, this.Y + pad); + }; + return Rectangle; +}()); +var Rectangle_1 = Rectangle; +function makeEdgeBetween(source, target, ah) { + var si = source.rayIntersection(target.cx(), target.cy()) || { x: source.cx(), y: source.cy() }, ti = target.rayIntersection(source.cx(), source.cy()) || { x: target.cx(), y: target.cy() }, dx = ti.x - si.x, dy = ti.y - si.y, l = Math.sqrt(dx * dx + dy * dy), al = l - ah; + return { + sourceIntersection: si, + targetIntersection: ti, + arrowStart: { x: si.x + al * dx / l, y: si.y + al * dy / l } + }; +} +var makeEdgeBetween_1 = makeEdgeBetween; +function makeEdgeTo(s, target, ah) { + var ti = target.rayIntersection(s.x, s.y); + if (!ti) + ti = { x: target.cx(), y: target.cy() }; + var dx = ti.x - s.x, dy = ti.y - s.y, l = Math.sqrt(dx * dx + dy * dy); + return { x: ti.x - ah * dx / l, y: ti.y - ah * dy / l }; +} +var makeEdgeTo_1 = makeEdgeTo; +var Node$1 = (function () { + function Node(v, r, pos) { + this.v = v; + this.r = r; + this.pos = pos; + this.prev = makeRBTree(); + this.next = makeRBTree(); + } + return Node; +}()); +var Event = (function () { + function Event(isOpen, v, pos) { + this.isOpen = isOpen; + this.v = v; + this.pos = pos; + } + return Event; +}()); +function compareEvents(a, b) { + if (a.pos > b.pos) { + return 1; + } + if (a.pos < b.pos) { + return -1; + } + if (a.isOpen) { + return -1; + } + if (b.isOpen) { + return 1; + } + return 0; +} +function makeRBTree() { + return new rbtree.RBTree(function (a, b) { return a.pos - b.pos; }); +} +var xRect = { + getCentre: function (r) { return r.cx(); }, + getOpen: function (r) { return r.y; }, + getClose: function (r) { return r.Y; }, + getSize: function (r) { return r.width(); }, + makeRect: function (open, close, center, size) { return new Rectangle(center - size / 2, center + size / 2, open, close); }, + findNeighbours: findXNeighbours +}; +var yRect = { + getCentre: function (r) { return r.cy(); }, + getOpen: function (r) { return r.x; }, + getClose: function (r) { return r.X; }, + getSize: function (r) { return r.height(); }, + makeRect: function (open, close, center, size) { return new Rectangle(open, close, center - size / 2, center + size / 2); }, + findNeighbours: findYNeighbours +}; +function generateGroupConstraints(root, f, minSep, isContained) { + if (isContained === void 0) { isContained = false; } + var padding = root.padding, gn = typeof root.groups !== 'undefined' ? root.groups.length : 0, ln = typeof root.leaves !== 'undefined' ? root.leaves.length : 0, childConstraints = !gn ? [] + : root.groups.reduce(function (ccs, g) { return ccs.concat(generateGroupConstraints(g, f, minSep, true)); }, []), n = (isContained ? 2 : 0) + ln + gn, vs = new Array(n), rs = new Array(n), i = 0, add = function (r, v) { rs[i] = r; vs[i++] = v; }; + if (isContained) { + var b = root.bounds, c = f.getCentre(b), s = f.getSize(b) / 2, open = f.getOpen(b), close = f.getClose(b), min = c - s + padding / 2, max = c + s - padding / 2; + root.minVar.desiredPosition = min; + add(f.makeRect(open, close, min, padding), root.minVar); + root.maxVar.desiredPosition = max; + add(f.makeRect(open, close, max, padding), root.maxVar); + } + if (ln) + root.leaves.forEach(function (l) { return add(l.bounds, l.variable); }); + if (gn) + root.groups.forEach(function (g) { + var b = g.bounds; + add(f.makeRect(f.getOpen(b), f.getClose(b), f.getCentre(b), f.getSize(b)), g.minVar); + }); + var cs = generateConstraints(rs, vs, f, minSep); + if (gn) { + vs.forEach(function (v) { v.cOut = [], v.cIn = []; }); + cs.forEach(function (c) { c.left.cOut.push(c), c.right.cIn.push(c); }); + root.groups.forEach(function (g) { + var gapAdjustment = (g.padding - f.getSize(g.bounds)) / 2; + g.minVar.cIn.forEach(function (c) { return c.gap += gapAdjustment; }); + g.minVar.cOut.forEach(function (c) { c.left = g.maxVar; c.gap += gapAdjustment; }); + }); + } + return childConstraints.concat(cs); +} +function generateConstraints(rs, vars, rect, minSep) { + var i, n = rs.length; + var N = 2 * n; + console.assert(vars.length >= n); + var events = new Array(N); + for (i = 0; i < n; ++i) { + var r = rs[i]; + var v = new Node$1(vars[i], r, rect.getCentre(r)); + events[i] = new Event(true, v, rect.getOpen(r)); + events[i + n] = new Event(false, v, rect.getClose(r)); + } + events.sort(compareEvents); + var cs = new Array(); + var scanline = makeRBTree(); + for (i = 0; i < N; ++i) { + var e = events[i]; + var v = e.v; + if (e.isOpen) { + scanline.insert(v); + rect.findNeighbours(v, scanline); + } + else { + scanline.remove(v); + var makeConstraint = function (l, r) { + var sep = (rect.getSize(l.r) + rect.getSize(r.r)) / 2 + minSep; + cs.push(new vpsc.Constraint(l.v, r.v, sep)); + }; + var visitNeighbours = function (forward, reverse, mkcon) { + var u, it = v[forward].iterator(); + while ((u = it[forward]()) !== null) { + mkcon(u, v); + u[reverse].remove(v); + } + }; + visitNeighbours("prev", "next", function (u, v) { return makeConstraint(u, v); }); + visitNeighbours("next", "prev", function (u, v) { return makeConstraint(v, u); }); + } + } + console.assert(scanline.size === 0); + return cs; +} +function findXNeighbours(v, scanline) { + var f = function (forward, reverse) { + var it = scanline.findIter(v); + var u; + while ((u = it[forward]()) !== null) { + var uovervX = u.r.overlapX(v.r); + if (uovervX <= 0 || uovervX <= u.r.overlapY(v.r)) { + v[forward].insert(u); + u[reverse].insert(v); + } + if (uovervX <= 0) { + break; + } + } + }; + f("next", "prev"); + f("prev", "next"); +} +function findYNeighbours(v, scanline) { + var f = function (forward, reverse) { + var u = scanline.findIter(v)[forward](); + if (u !== null && u.r.overlapX(v.r) > 0) { + v[forward].insert(u); + u[reverse].insert(v); + } + }; + f("next", "prev"); + f("prev", "next"); +} +function generateXConstraints(rs, vars) { + return generateConstraints(rs, vars, xRect, 1e-6); +} +var generateXConstraints_1 = generateXConstraints; +function generateYConstraints(rs, vars) { + return generateConstraints(rs, vars, yRect, 1e-6); +} +var generateYConstraints_1 = generateYConstraints; +function generateXGroupConstraints(root) { + return generateGroupConstraints(root, xRect, 1e-6); +} +var generateXGroupConstraints_1 = generateXGroupConstraints; +function generateYGroupConstraints(root) { + return generateGroupConstraints(root, yRect, 1e-6); +} +var generateYGroupConstraints_1 = generateYGroupConstraints; +function removeOverlaps(rs) { + var vs = rs.map(function (r) { return new vpsc.Variable(r.cx()); }); + var cs = generateXConstraints(rs, vs); + var solver = new vpsc.Solver(vs, cs); + solver.solve(); + vs.forEach(function (v, i) { return rs[i].setXCentre(v.position()); }); + vs = rs.map(function (r) { return new vpsc.Variable(r.cy()); }); + cs = generateYConstraints(rs, vs); + solver = new vpsc.Solver(vs, cs); + solver.solve(); + vs.forEach(function (v, i) { return rs[i].setYCentre(v.position()); }); +} +var removeOverlaps_1 = removeOverlaps; +var IndexedVariable = (function (_super) { + __extends$4(IndexedVariable, _super); + function IndexedVariable(index, w) { + var _this = _super.call(this, 0, w) || this; + _this.index = index; + return _this; + } + return IndexedVariable; +}(vpsc.Variable)); +var IndexedVariable_1 = IndexedVariable; +var Projection = (function () { + function Projection(nodes, groups, rootGroup, constraints, avoidOverlaps) { + var _this = this; + if (rootGroup === void 0) { rootGroup = null; } + if (constraints === void 0) { constraints = null; } + if (avoidOverlaps === void 0) { avoidOverlaps = false; } + this.nodes = nodes; + this.groups = groups; + this.rootGroup = rootGroup; + this.avoidOverlaps = avoidOverlaps; + this.variables = nodes.map(function (v, i) { + return v.variable = new IndexedVariable(i, 1); + }); + if (constraints) + this.createConstraints(constraints); + if (avoidOverlaps && rootGroup && typeof rootGroup.groups !== 'undefined') { + nodes.forEach(function (v) { + if (!v.width || !v.height) { + v.bounds = new Rectangle(v.x, v.x, v.y, v.y); + return; + } + var w2 = v.width / 2, h2 = v.height / 2; + v.bounds = new Rectangle(v.x - w2, v.x + w2, v.y - h2, v.y + h2); + }); + computeGroupBounds(rootGroup); + var i = nodes.length; + groups.forEach(function (g) { + _this.variables[i] = g.minVar = new IndexedVariable(i++, typeof g.stiffness !== "undefined" ? g.stiffness : 0.01); + _this.variables[i] = g.maxVar = new IndexedVariable(i++, typeof g.stiffness !== "undefined" ? g.stiffness : 0.01); + }); + } + } + Projection.prototype.createSeparation = function (c) { + return new vpsc.Constraint(this.nodes[c.left].variable, this.nodes[c.right].variable, c.gap, typeof c.equality !== "undefined" ? c.equality : false); + }; + Projection.prototype.makeFeasible = function (c) { + var _this = this; + if (!this.avoidOverlaps) + return; + var axis = 'x', dim = 'width'; + if (c.axis === 'x') + axis = 'y', dim = 'height'; + var vs = c.offsets.map(function (o) { return _this.nodes[o.node]; }).sort(function (a, b) { return a[axis] - b[axis]; }); + var p = null; + vs.forEach(function (v) { + if (p) { + var nextPos = p[axis] + p[dim]; + if (nextPos > v[axis]) { + v[axis] = nextPos; + } + } + p = v; + }); + }; + Projection.prototype.createAlignment = function (c) { + var _this = this; + var u = this.nodes[c.offsets[0].node].variable; + this.makeFeasible(c); + var cs = c.axis === 'x' ? this.xConstraints : this.yConstraints; + c.offsets.slice(1).forEach(function (o) { + var v = _this.nodes[o.node].variable; + cs.push(new vpsc.Constraint(u, v, o.offset, true)); + }); + }; + Projection.prototype.createConstraints = function (constraints) { + var _this = this; + var isSep = function (c) { return typeof c.type === 'undefined' || c.type === 'separation'; }; + this.xConstraints = constraints + .filter(function (c) { return c.axis === "x" && isSep(c); }) + .map(function (c) { return _this.createSeparation(c); }); + this.yConstraints = constraints + .filter(function (c) { return c.axis === "y" && isSep(c); }) + .map(function (c) { return _this.createSeparation(c); }); + constraints + .filter(function (c) { return c.type === 'alignment'; }) + .forEach(function (c) { return _this.createAlignment(c); }); + }; + Projection.prototype.setupVariablesAndBounds = function (x0, y0, desired, getDesired) { + this.nodes.forEach(function (v, i) { + if (v.fixed) { + v.variable.weight = v.fixedWeight ? v.fixedWeight : 1000; + desired[i] = getDesired(v); + } + else { + v.variable.weight = 1; + } + var w = (v.width || 0) / 2, h = (v.height || 0) / 2; + var ix = x0[i], iy = y0[i]; + v.bounds = new Rectangle(ix - w, ix + w, iy - h, iy + h); + }); + }; + Projection.prototype.xProject = function (x0, y0, x) { + if (!this.rootGroup && !(this.avoidOverlaps || this.xConstraints)) + return; + this.project(x0, y0, x0, x, function (v) { return v.px; }, this.xConstraints, generateXGroupConstraints, function (v) { return v.bounds.setXCentre(x[v.variable.index] = v.variable.position()); }, function (g) { + var xmin = x[g.minVar.index] = g.minVar.position(); + var xmax = x[g.maxVar.index] = g.maxVar.position(); + var p2 = g.padding / 2; + g.bounds.x = xmin - p2; + g.bounds.X = xmax + p2; + }); + }; + Projection.prototype.yProject = function (x0, y0, y) { + if (!this.rootGroup && !this.yConstraints) + return; + this.project(x0, y0, y0, y, function (v) { return v.py; }, this.yConstraints, generateYGroupConstraints, function (v) { return v.bounds.setYCentre(y[v.variable.index] = v.variable.position()); }, function (g) { + var ymin = y[g.minVar.index] = g.minVar.position(); + var ymax = y[g.maxVar.index] = g.maxVar.position(); + var p2 = g.padding / 2; + g.bounds.y = ymin - p2; + g.bounds.Y = ymax + p2; + }); + }; + Projection.prototype.projectFunctions = function () { + var _this = this; + return [ + function (x0, y0, x) { return _this.xProject(x0, y0, x); }, + function (x0, y0, y) { return _this.yProject(x0, y0, y); } + ]; + }; + Projection.prototype.project = function (x0, y0, start, desired, getDesired, cs, generateConstraints, updateNodeBounds, updateGroupBounds) { + this.setupVariablesAndBounds(x0, y0, desired, getDesired); + if (this.rootGroup && this.avoidOverlaps) { + computeGroupBounds(this.rootGroup); + cs = cs.concat(generateConstraints(this.rootGroup)); + } + this.solve(this.variables, cs, start, desired); + this.nodes.forEach(updateNodeBounds); + if (this.rootGroup && this.avoidOverlaps) { + this.groups.forEach(updateGroupBounds); + computeGroupBounds(this.rootGroup); + } + }; + Projection.prototype.solve = function (vs, cs, starting, desired) { + var solver = new vpsc.Solver(vs, cs); + solver.setStartingPositions(starting); + solver.setDesiredPositions(desired); + solver.solve(); + }; + return Projection; +}()); +var Projection_1 = Projection; + + +var rectangle = /*#__PURE__*/Object.defineProperty({ + computeGroupBounds: computeGroupBounds_1, + Rectangle: Rectangle_1, + makeEdgeBetween: makeEdgeBetween_1, + makeEdgeTo: makeEdgeTo_1, + generateXConstraints: generateXConstraints_1, + generateYConstraints: generateYConstraints_1, + generateXGroupConstraints: generateXGroupConstraints_1, + generateYGroupConstraints: generateYGroupConstraints_1, + removeOverlaps: removeOverlaps_1, + IndexedVariable: IndexedVariable_1, + Projection: Projection_1 +}, '__esModule', {value: true}); + +var PairingHeap = (function () { + function PairingHeap(elem) { + this.elem = elem; + this.subheaps = []; + } + PairingHeap.prototype.toString = function (selector) { + var str = "", needComma = false; + for (var i = 0; i < this.subheaps.length; ++i) { + var subheap = this.subheaps[i]; + if (!subheap.elem) { + needComma = false; + continue; + } + if (needComma) { + str = str + ","; + } + str = str + subheap.toString(selector); + needComma = true; + } + if (str !== "") { + str = "(" + str + ")"; + } + return (this.elem ? selector(this.elem) : "") + str; + }; + PairingHeap.prototype.forEach = function (f) { + if (!this.empty()) { + f(this.elem, this); + this.subheaps.forEach(function (s) { return s.forEach(f); }); + } + }; + PairingHeap.prototype.count = function () { + return this.empty() ? 0 : 1 + this.subheaps.reduce(function (n, h) { + return n + h.count(); + }, 0); + }; + PairingHeap.prototype.min = function () { + return this.elem; + }; + PairingHeap.prototype.empty = function () { + return this.elem == null; + }; + PairingHeap.prototype.contains = function (h) { + if (this === h) + return true; + for (var i = 0; i < this.subheaps.length; i++) { + if (this.subheaps[i].contains(h)) + return true; + } + return false; + }; + PairingHeap.prototype.isHeap = function (lessThan) { + var _this = this; + return this.subheaps.every(function (h) { return lessThan(_this.elem, h.elem) && h.isHeap(lessThan); }); + }; + PairingHeap.prototype.insert = function (obj, lessThan) { + return this.merge(new PairingHeap(obj), lessThan); + }; + PairingHeap.prototype.merge = function (heap2, lessThan) { + if (this.empty()) + return heap2; + else if (heap2.empty()) + return this; + else if (lessThan(this.elem, heap2.elem)) { + this.subheaps.push(heap2); + return this; + } + else { + heap2.subheaps.push(this); + return heap2; + } + }; + PairingHeap.prototype.removeMin = function (lessThan) { + if (this.empty()) + return null; + else + return this.mergePairs(lessThan); + }; + PairingHeap.prototype.mergePairs = function (lessThan) { + if (this.subheaps.length == 0) + return new PairingHeap(null); + else if (this.subheaps.length == 1) { + return this.subheaps[0]; + } + else { + var firstPair = this.subheaps.pop().merge(this.subheaps.pop(), lessThan); + var remaining = this.mergePairs(lessThan); + return firstPair.merge(remaining, lessThan); + } + }; + PairingHeap.prototype.decreaseKey = function (subheap, newValue, setHeapNode, lessThan) { + var newHeap = subheap.removeMin(lessThan); + subheap.elem = newHeap.elem; + subheap.subheaps = newHeap.subheaps; + if (setHeapNode !== null && newHeap.elem !== null) { + setHeapNode(subheap.elem, subheap); + } + var pairingNode = new PairingHeap(newValue); + if (setHeapNode !== null) { + setHeapNode(newValue, pairingNode); + } + return this.merge(pairingNode, lessThan); + }; + return PairingHeap; +}()); +var PairingHeap_1 = PairingHeap; +var PriorityQueue$1 = (function () { + function PriorityQueue(lessThan) { + this.lessThan = lessThan; + } + PriorityQueue.prototype.top = function () { + if (this.empty()) { + return null; + } + return this.root.elem; + }; + PriorityQueue.prototype.push = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var pairingNode; + for (var i = 0, arg; arg = args[i]; ++i) { + pairingNode = new PairingHeap(arg); + this.root = this.empty() ? + pairingNode : this.root.merge(pairingNode, this.lessThan); + } + return pairingNode; + }; + PriorityQueue.prototype.empty = function () { + return !this.root || !this.root.elem; + }; + PriorityQueue.prototype.isHeap = function () { + return this.root.isHeap(this.lessThan); + }; + PriorityQueue.prototype.forEach = function (f) { + this.root.forEach(f); + }; + PriorityQueue.prototype.pop = function () { + if (this.empty()) { + return null; + } + var obj = this.root.min(); + this.root = this.root.removeMin(this.lessThan); + return obj; + }; + PriorityQueue.prototype.reduceKey = function (heapNode, newKey, setHeapNode) { + if (setHeapNode === void 0) { setHeapNode = null; } + this.root = this.root.decreaseKey(heapNode, newKey, setHeapNode, this.lessThan); + }; + PriorityQueue.prototype.toString = function (selector) { + return this.root.toString(selector); + }; + PriorityQueue.prototype.count = function () { + return this.root.count(); + }; + return PriorityQueue; +}()); +var PriorityQueue_1 = PriorityQueue$1; + + +var pqueue = /*#__PURE__*/Object.defineProperty({ + PairingHeap: PairingHeap_1, + PriorityQueue: PriorityQueue_1 +}, '__esModule', {value: true}); + +var Neighbour = (function () { + function Neighbour(id, distance) { + this.id = id; + this.distance = distance; + } + return Neighbour; +}()); +var Node = (function () { + function Node(id) { + this.id = id; + this.neighbours = []; + } + return Node; +}()); +var QueueEntry = (function () { + function QueueEntry(node, prev, d) { + this.node = node; + this.prev = prev; + this.d = d; + } + return QueueEntry; +}()); +var Calculator = (function () { + function Calculator(n, es, getSourceIndex, getTargetIndex, getLength) { + this.n = n; + this.es = es; + this.neighbours = new Array(this.n); + var i = this.n; + while (i--) + this.neighbours[i] = new Node(i); + i = this.es.length; + while (i--) { + var e = this.es[i]; + var u = getSourceIndex(e), v = getTargetIndex(e); + var d = getLength(e); + this.neighbours[u].neighbours.push(new Neighbour(v, d)); + this.neighbours[v].neighbours.push(new Neighbour(u, d)); + } + } + Calculator.prototype.DistanceMatrix = function () { + var D = new Array(this.n); + for (var i = 0; i < this.n; ++i) { + D[i] = this.dijkstraNeighbours(i); + } + return D; + }; + Calculator.prototype.DistancesFromNode = function (start) { + return this.dijkstraNeighbours(start); + }; + Calculator.prototype.PathFromNodeToNode = function (start, end) { + return this.dijkstraNeighbours(start, end); + }; + Calculator.prototype.PathFromNodeToNodeWithPrevCost = function (start, end, prevCost) { + var q = new pqueue.PriorityQueue(function (a, b) { return a.d <= b.d; }), u = this.neighbours[start], qu = new QueueEntry(u, null, 0), visitedFrom = {}; + q.push(qu); + while (!q.empty()) { + qu = q.pop(); + u = qu.node; + if (u.id === end) { + break; + } + var i = u.neighbours.length; + while (i--) { + var neighbour = u.neighbours[i], v = this.neighbours[neighbour.id]; + if (qu.prev && v.id === qu.prev.node.id) + continue; + var viduid = v.id + ',' + u.id; + if (viduid in visitedFrom && visitedFrom[viduid] <= qu.d) + continue; + var cc = qu.prev ? prevCost(qu.prev.node.id, u.id, v.id) : 0, t = qu.d + neighbour.distance + cc; + visitedFrom[viduid] = t; + q.push(new QueueEntry(v, qu, t)); + } + } + var path = []; + while (qu.prev) { + qu = qu.prev; + path.push(qu.node.id); + } + return path; + }; + Calculator.prototype.dijkstraNeighbours = function (start, dest) { + if (dest === void 0) { dest = -1; } + var q = new pqueue.PriorityQueue(function (a, b) { return a.d <= b.d; }), i = this.neighbours.length, d = new Array(i); + while (i--) { + var node = this.neighbours[i]; + node.d = i === start ? 0 : Number.POSITIVE_INFINITY; + node.q = q.push(node); + } + while (!q.empty()) { + var u = q.pop(); + d[u.id] = u.d; + if (u.id === dest) { + var path = []; + var v = u; + while (typeof v.prev !== 'undefined') { + path.push(v.prev.id); + v = v.prev; + } + return path; + } + i = u.neighbours.length; + while (i--) { + var neighbour = u.neighbours[i]; + var v = this.neighbours[neighbour.id]; + var t = u.d + neighbour.distance; + if (u.d !== Number.MAX_VALUE && v.d > t) { + v.d = t; + v.prev = u; + q.reduceKey(v.q, v, function (e, q) { return e.q = q; }); + } + } + } + return d; + }; + return Calculator; +}()); +var Calculator_1 = Calculator; + + +var shortestpaths = /*#__PURE__*/Object.defineProperty({ + Calculator: Calculator_1 +}, '__esModule', {value: true}); + +var __extends$3 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); + + +var Point$1 = (function () { + function Point() { + } + return Point; +}()); +var Point_1 = Point$1; +var LineSegment = (function () { + function LineSegment(x1, y1, x2, y2) { + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + } + return LineSegment; +}()); +var LineSegment_1 = LineSegment; +var PolyPoint = (function (_super) { + __extends$3(PolyPoint, _super); + function PolyPoint() { + return _super !== null && _super.apply(this, arguments) || this; + } + return PolyPoint; +}(Point$1)); +var PolyPoint_1 = PolyPoint; +function isLeft(P0, P1, P2) { + return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y); +} +var isLeft_1 = isLeft; +function above(p, vi, vj) { + return isLeft(p, vi, vj) > 0; +} +function below(p, vi, vj) { + return isLeft(p, vi, vj) < 0; +} +function ConvexHull(S) { + var P = S.slice(0).sort(function (a, b) { return a.x !== b.x ? b.x - a.x : b.y - a.y; }); + var n = S.length, i; + var minmin = 0; + var xmin = P[0].x; + for (i = 1; i < n; ++i) { + if (P[i].x !== xmin) + break; + } + var minmax = i - 1; + var H = []; + H.push(P[minmin]); + if (minmax === n - 1) { + if (P[minmax].y !== P[minmin].y) + H.push(P[minmax]); + } + else { + var maxmin, maxmax = n - 1; + var xmax = P[n - 1].x; + for (i = n - 2; i >= 0; i--) + if (P[i].x !== xmax) + break; + maxmin = i + 1; + i = minmax; + while (++i <= maxmin) { + if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin) + continue; + while (H.length > 1) { + if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0) + break; + else + H.length -= 1; + } + if (i != minmin) + H.push(P[i]); + } + if (maxmax != maxmin) + H.push(P[maxmax]); + var bot = H.length; + i = maxmin; + while (--i >= minmax) { + if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax) + continue; + while (H.length > bot) { + if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0) + break; + else + H.length -= 1; + } + if (i != minmin) + H.push(P[i]); + } + } + return H; +} +var ConvexHull_1 = ConvexHull; +function clockwiseRadialSweep(p, P, f) { + P.slice(0).sort(function (a, b) { return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x); }).forEach(f); +} +var clockwiseRadialSweep_1 = clockwiseRadialSweep; +function tangent_PointPolyC(P, V) { + var Vclosed = V.slice(0); + Vclosed.push(V[0]); + return { rtan: Rtangent_PointPolyC(P, Vclosed), ltan: Ltangent_PointPolyC(P, Vclosed) }; +} +function Rtangent_PointPolyC(P, V) { + var n = V.length - 1; + var a, b, c; + var upA, dnC; + if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0])) + return 0; + for (a = 0, b = n;;) { + if (b - a === 1) + if (above(P, V[a], V[b])) + return a; + else + return b; + c = Math.floor((a + b) / 2); + dnC = below(P, V[c + 1], V[c]); + if (dnC && !above(P, V[c - 1], V[c])) + return c; + upA = above(P, V[a + 1], V[a]); + if (upA) { + if (dnC) + b = c; + else { + if (above(P, V[a], V[c])) + b = c; + else + a = c; + } + } + else { + if (!dnC) + a = c; + else { + if (below(P, V[a], V[c])) + b = c; + else + a = c; + } + } + } +} +function Ltangent_PointPolyC(P, V) { + var n = V.length - 1; + var a, b, c; + var dnA, dnC; + if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0])) + return 0; + for (a = 0, b = n;;) { + if (b - a === 1) + if (below(P, V[a], V[b])) + return a; + else + return b; + c = Math.floor((a + b) / 2); + dnC = below(P, V[c + 1], V[c]); + if (above(P, V[c - 1], V[c]) && !dnC) + return c; + dnA = below(P, V[a + 1], V[a]); + if (dnA) { + if (!dnC) + b = c; + else { + if (below(P, V[a], V[c])) + b = c; + else + a = c; + } + } + else { + if (dnC) + a = c; + else { + if (above(P, V[a], V[c])) + b = c; + else + a = c; + } + } + } +} +function tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) { + var ix1, ix2; + ix1 = t1(W[0], V); + ix2 = t2(V[ix1], W); + var done = false; + while (!done) { + done = true; + while (true) { + if (ix1 === V.length - 1) + ix1 = 0; + if (cmp1(W[ix2], V[ix1], V[ix1 + 1])) + break; + ++ix1; + } + while (true) { + if (ix2 === 0) + ix2 = W.length - 1; + if (cmp2(V[ix1], W[ix2], W[ix2 - 1])) + break; + --ix2; + done = false; + } + } + return { t1: ix1, t2: ix2 }; +} +var tangent_PolyPolyC_1 = tangent_PolyPolyC; +function LRtangent_PolyPolyC(V, W) { + var rl = RLtangent_PolyPolyC(W, V); + return { t1: rl.t2, t2: rl.t1 }; +} +var LRtangent_PolyPolyC_1 = LRtangent_PolyPolyC; +function RLtangent_PolyPolyC(V, W) { + return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below); +} +var RLtangent_PolyPolyC_1 = RLtangent_PolyPolyC; +function LLtangent_PolyPolyC(V, W) { + return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below); +} +var LLtangent_PolyPolyC_1 = LLtangent_PolyPolyC; +function RRtangent_PolyPolyC(V, W) { + return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above); +} +var RRtangent_PolyPolyC_1 = RRtangent_PolyPolyC; +var BiTangent = (function () { + function BiTangent(t1, t2) { + this.t1 = t1; + this.t2 = t2; + } + return BiTangent; +}()); +var BiTangent_1 = BiTangent; +var BiTangents = (function () { + function BiTangents() { + } + return BiTangents; +}()); +var BiTangents_1 = BiTangents; +var TVGPoint = (function (_super) { + __extends$3(TVGPoint, _super); + function TVGPoint() { + return _super !== null && _super.apply(this, arguments) || this; + } + return TVGPoint; +}(Point$1)); +var TVGPoint_1 = TVGPoint; +var VisibilityVertex = (function () { + function VisibilityVertex(id, polyid, polyvertid, p) { + this.id = id; + this.polyid = polyid; + this.polyvertid = polyvertid; + this.p = p; + p.vv = this; + } + return VisibilityVertex; +}()); +var VisibilityVertex_1 = VisibilityVertex; +var VisibilityEdge = (function () { + function VisibilityEdge(source, target) { + this.source = source; + this.target = target; + } + VisibilityEdge.prototype.length = function () { + var dx = this.source.p.x - this.target.p.x; + var dy = this.source.p.y - this.target.p.y; + return Math.sqrt(dx * dx + dy * dy); + }; + return VisibilityEdge; +}()); +var VisibilityEdge_1 = VisibilityEdge; +var TangentVisibilityGraph = (function () { + function TangentVisibilityGraph(P, g0) { + this.P = P; + this.V = []; + this.E = []; + if (!g0) { + var n = P.length; + for (var i = 0; i < n; i++) { + var p = P[i]; + for (var j = 0; j < p.length; ++j) { + var pj = p[j], vv = new VisibilityVertex(this.V.length, i, j, pj); + this.V.push(vv); + if (j > 0) + this.E.push(new VisibilityEdge(p[j - 1].vv, vv)); + } + if (p.length > 1) + this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv)); + } + for (var i = 0; i < n - 1; i++) { + var Pi = P[i]; + for (var j = i + 1; j < n; j++) { + var Pj = P[j], t = tangents(Pi, Pj); + for (var q in t) { + var c = t[q], source = Pi[c.t1], target = Pj[c.t2]; + this.addEdgeIfVisible(source, target, i, j); + } + } + } + } + else { + this.V = g0.V.slice(0); + this.E = g0.E.slice(0); + } + } + TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) { + if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) { + this.E.push(new VisibilityEdge(u.vv, v.vv)); + } + }; + TangentVisibilityGraph.prototype.addPoint = function (p, i1) { + var n = this.P.length; + this.V.push(new VisibilityVertex(this.V.length, n, 0, p)); + for (var i = 0; i < n; ++i) { + if (i === i1) + continue; + var poly = this.P[i], t = tangent_PointPolyC(p, poly); + this.addEdgeIfVisible(p, poly[t.ltan], i1, i); + this.addEdgeIfVisible(p, poly[t.rtan], i1, i); + } + return p.vv; + }; + TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) { + for (var i = 0, n = this.P.length; i < n; ++i) { + if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) { + return true; + } + } + return false; + }; + return TangentVisibilityGraph; +}()); +var TangentVisibilityGraph_1 = TangentVisibilityGraph; +function intersects(l, P) { + var ints = []; + for (var i = 1, n = P.length; i < n; ++i) { + var int = rectangle.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y); + if (int) + ints.push(int); + } + return ints; +} +function tangents(V, W) { + var m = V.length - 1, n = W.length - 1; + var bt = new BiTangents(); + for (var i = 0; i < m; ++i) { + for (var j = 0; j < n; ++j) { + var v1 = V[i == 0 ? m - 1 : i - 1]; + var v2 = V[i]; + var v3 = V[i + 1]; + var w1 = W[j == 0 ? n - 1 : j - 1]; + var w2 = W[j]; + var w3 = W[j + 1]; + var v1v2w2 = isLeft(v1, v2, w2); + var v2w1w2 = isLeft(v2, w1, w2); + var v2w2w3 = isLeft(v2, w2, w3); + var w1w2v2 = isLeft(w1, w2, v2); + var w2v1v2 = isLeft(w2, v1, v2); + var w2v2v3 = isLeft(w2, v2, v3); + if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0 + && w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) { + bt.ll = new BiTangent(i, j); + } + else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0 + && w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) { + bt.rr = new BiTangent(i, j); + } + else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0 + && w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) { + bt.rl = new BiTangent(i, j); + } + else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0 + && w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) { + bt.lr = new BiTangent(i, j); + } + } + } + return bt; +} +var tangents_1 = tangents; +function isPointInsidePoly(p, poly) { + for (var i = 1, n = poly.length; i < n; ++i) + if (below(poly[i - 1], poly[i], p)) + return false; + return true; +} +function isAnyPInQ(p, q) { + return !p.every(function (v) { return !isPointInsidePoly(v, q); }); +} +function polysOverlap(p, q) { + if (isAnyPInQ(p, q)) + return true; + if (isAnyPInQ(q, p)) + return true; + for (var i = 1, n = p.length; i < n; ++i) { + var v = p[i], u = p[i - 1]; + if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0) + return true; + } + return false; +} +var polysOverlap_1 = polysOverlap; + + +var geom = /*#__PURE__*/Object.defineProperty({ + Point: Point_1, + LineSegment: LineSegment_1, + PolyPoint: PolyPoint_1, + isLeft: isLeft_1, + ConvexHull: ConvexHull_1, + clockwiseRadialSweep: clockwiseRadialSweep_1, + tangent_PolyPolyC: tangent_PolyPolyC_1, + LRtangent_PolyPolyC: LRtangent_PolyPolyC_1, + RLtangent_PolyPolyC: RLtangent_PolyPolyC_1, + LLtangent_PolyPolyC: LLtangent_PolyPolyC_1, + RRtangent_PolyPolyC: RRtangent_PolyPolyC_1, + BiTangent: BiTangent_1, + BiTangents: BiTangents_1, + TVGPoint: TVGPoint_1, + VisibilityVertex: VisibilityVertex_1, + VisibilityEdge: VisibilityEdge_1, + TangentVisibilityGraph: TangentVisibilityGraph_1, + tangents: tangents_1, + polysOverlap: polysOverlap_1 +}, '__esModule', {value: true}); + +var packingOptions = { + PADDING: 10, + GOLDEN_SECTION: (1 + Math.sqrt(5)) / 2, + FLOAT_EPSILON: 0.0001, + MAX_INERATIONS: 100 +}; +function applyPacking(graphs, w, h, node_size, desired_ratio, centerGraph) { + if (desired_ratio === void 0) { desired_ratio = 1; } + if (centerGraph === void 0) { centerGraph = true; } + var init_x = 0, init_y = 0, svg_width = w, svg_height = h, desired_ratio = typeof desired_ratio !== 'undefined' ? desired_ratio : 1, node_size = typeof node_size !== 'undefined' ? node_size : 0, real_width = 0, real_height = 0, min_width = 0, global_bottom = 0, line = []; + if (graphs.length == 0) + return; + calculate_bb(graphs); + apply(graphs); + if (centerGraph) { + put_nodes_to_right_positions(graphs); + } + function calculate_bb(graphs) { + graphs.forEach(function (g) { + calculate_single_bb(g); + }); + function calculate_single_bb(graph) { + var min_x = Number.MAX_VALUE, min_y = Number.MAX_VALUE, max_x = 0, max_y = 0; + graph.array.forEach(function (v) { + var w = typeof v.width !== 'undefined' ? v.width : node_size; + var h = typeof v.height !== 'undefined' ? v.height : node_size; + w /= 2; + h /= 2; + max_x = Math.max(v.x + w, max_x); + min_x = Math.min(v.x - w, min_x); + max_y = Math.max(v.y + h, max_y); + min_y = Math.min(v.y - h, min_y); + }); + graph.width = max_x - min_x; + graph.height = max_y - min_y; + } + } + function put_nodes_to_right_positions(graphs) { + graphs.forEach(function (g) { + var center = { x: 0, y: 0 }; + g.array.forEach(function (node) { + center.x += node.x; + center.y += node.y; + }); + center.x /= g.array.length; + center.y /= g.array.length; + var corner = { x: center.x - g.width / 2, y: center.y - g.height / 2 }; + var offset = { x: g.x - corner.x + svg_width / 2 - real_width / 2, y: g.y - corner.y + svg_height / 2 - real_height / 2 }; + g.array.forEach(function (node) { + node.x += offset.x; + node.y += offset.y; + }); + }); + } + function apply(data, desired_ratio) { + var curr_best_f = Number.POSITIVE_INFINITY; + var curr_best = 0; + data.sort(function (a, b) { return b.height - a.height; }); + min_width = data.reduce(function (a, b) { + return a.width < b.width ? a.width : b.width; + }); + var left = x1 = min_width; + var right = x2 = get_entire_width(data); + var iterationCounter = 0; + var f_x1 = Number.MAX_VALUE; + var f_x2 = Number.MAX_VALUE; + var flag = -1; + var dx = Number.MAX_VALUE; + var df = Number.MAX_VALUE; + while ((dx > min_width) || df > packingOptions.FLOAT_EPSILON) { + if (flag != 1) { + var x1 = right - (right - left) / packingOptions.GOLDEN_SECTION; + var f_x1 = step(data, x1); + } + if (flag != 0) { + var x2 = left + (right - left) / packingOptions.GOLDEN_SECTION; + var f_x2 = step(data, x2); + } + dx = Math.abs(x1 - x2); + df = Math.abs(f_x1 - f_x2); + if (f_x1 < curr_best_f) { + curr_best_f = f_x1; + curr_best = x1; + } + if (f_x2 < curr_best_f) { + curr_best_f = f_x2; + curr_best = x2; + } + if (f_x1 > f_x2) { + left = x1; + x1 = x2; + f_x1 = f_x2; + flag = 1; + } + else { + right = x2; + x2 = x1; + f_x2 = f_x1; + flag = 0; + } + if (iterationCounter++ > 100) { + break; + } + } + step(data, curr_best); + } + function step(data, max_width) { + line = []; + real_width = 0; + real_height = 0; + global_bottom = init_y; + for (var i = 0; i < data.length; i++) { + var o = data[i]; + put_rect(o, max_width); + } + return Math.abs(get_real_ratio() - desired_ratio); + } + function put_rect(rect, max_width) { + var parent = undefined; + for (var i = 0; i < line.length; i++) { + if ((line[i].space_left >= rect.height) && (line[i].x + line[i].width + rect.width + packingOptions.PADDING - max_width) <= packingOptions.FLOAT_EPSILON) { + parent = line[i]; + break; + } + } + line.push(rect); + if (parent !== undefined) { + rect.x = parent.x + parent.width + packingOptions.PADDING; + rect.y = parent.bottom; + rect.space_left = rect.height; + rect.bottom = rect.y; + parent.space_left -= rect.height + packingOptions.PADDING; + parent.bottom += rect.height + packingOptions.PADDING; + } + else { + rect.y = global_bottom; + global_bottom += rect.height + packingOptions.PADDING; + rect.x = init_x; + rect.bottom = rect.y; + rect.space_left = rect.height; + } + if (rect.y + rect.height - real_height > -packingOptions.FLOAT_EPSILON) + real_height = rect.y + rect.height - init_y; + if (rect.x + rect.width - real_width > -packingOptions.FLOAT_EPSILON) + real_width = rect.x + rect.width - init_x; + } + function get_entire_width(data) { + var width = 0; + data.forEach(function (d) { return width += d.width + packingOptions.PADDING; }); + return width; + } + function get_real_ratio() { + return (real_width / real_height); + } +} +var applyPacking_1 = applyPacking; +function separateGraphs(nodes, links) { + var marks = {}; + var ways = {}; + var graphs = []; + var clusters = 0; + for (var i = 0; i < links.length; i++) { + var link = links[i]; + var n1 = link.source; + var n2 = link.target; + if (ways[n1.index]) + ways[n1.index].push(n2); + else + ways[n1.index] = [n2]; + if (ways[n2.index]) + ways[n2.index].push(n1); + else + ways[n2.index] = [n1]; + } + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + if (marks[node.index]) + continue; + explore_node(node, true); + } + function explore_node(n, is_new) { + if (marks[n.index] !== undefined) + return; + if (is_new) { + clusters++; + graphs.push({ array: [] }); + } + marks[n.index] = clusters; + graphs[clusters - 1].array.push(n); + var adjacent = ways[n.index]; + if (!adjacent) + return; + for (var j = 0; j < adjacent.length; j++) { + explore_node(adjacent[j], false); + } + } + return graphs; +} +var separateGraphs_1 = separateGraphs; + + +var handledisconnected = /*#__PURE__*/Object.defineProperty({ + applyPacking: applyPacking_1, + separateGraphs: separateGraphs_1 +}, '__esModule', {value: true}); + +var layout$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); + + + + + + + +var EventType; +(function (EventType) { + EventType[EventType["start"] = 0] = "start"; + EventType[EventType["tick"] = 1] = "tick"; + EventType[EventType["end"] = 2] = "end"; +})(EventType = exports.EventType || (exports.EventType = {})); +function isGroup(g) { + return typeof g.leaves !== 'undefined' || typeof g.groups !== 'undefined'; +} +var Layout = (function () { + function Layout() { + var _this = this; + this._canvasSize = [1, 1]; + this._linkDistance = 20; + this._defaultNodeSize = 10; + this._linkLengthCalculator = null; + this._linkType = null; + this._avoidOverlaps = false; + this._handleDisconnected = true; + this._running = false; + this._nodes = []; + this._groups = []; + this._rootGroup = null; + this._links = []; + this._constraints = []; + this._distanceMatrix = null; + this._descent = null; + this._directedLinkConstraints = null; + this._threshold = 0.01; + this._visibilityGraph = null; + this._groupCompactness = 1e-6; + this.event = null; + this.linkAccessor = { + getSourceIndex: Layout.getSourceIndex, + getTargetIndex: Layout.getTargetIndex, + setLength: Layout.setLinkLength, + getType: function (l) { return typeof _this._linkType === "function" ? _this._linkType(l) : 0; } + }; + } + Layout.prototype.on = function (e, listener) { + if (!this.event) + this.event = {}; + if (typeof e === 'string') { + this.event[EventType[e]] = listener; + } + else { + this.event[e] = listener; + } + return this; + }; + Layout.prototype.trigger = function (e) { + if (this.event && typeof this.event[e.type] !== 'undefined') { + this.event[e.type](e); + } + }; + Layout.prototype.kick = function () { + while (!this.tick()) + ; + }; + Layout.prototype.tick = function () { + if (this._alpha < this._threshold) { + this._running = false; + this.trigger({ type: EventType.end, alpha: this._alpha = 0, stress: this._lastStress }); + return true; + } + var n = this._nodes.length; this._links.length; + var o, i; + this._descent.locks.clear(); + for (i = 0; i < n; ++i) { + o = this._nodes[i]; + if (o.fixed) { + if (typeof o.px === 'undefined' || typeof o.py === 'undefined') { + o.px = o.x; + o.py = o.y; + } + var p = [o.px, o.py]; + this._descent.locks.add(i, p); + } + } + var s1 = this._descent.rungeKutta(); + if (s1 === 0) { + this._alpha = 0; + } + else if (typeof this._lastStress !== 'undefined') { + this._alpha = s1; + } + this._lastStress = s1; + this.updateNodePositions(); + this.trigger({ type: EventType.tick, alpha: this._alpha, stress: this._lastStress }); + return false; + }; + Layout.prototype.updateNodePositions = function () { + var x = this._descent.x[0], y = this._descent.x[1]; + var o, i = this._nodes.length; + while (i--) { + o = this._nodes[i]; + o.x = x[i]; + o.y = y[i]; + } + }; + Layout.prototype.nodes = function (v) { + if (!v) { + if (this._nodes.length === 0 && this._links.length > 0) { + var n = 0; + this._links.forEach(function (l) { + n = Math.max(n, l.source, l.target); + }); + this._nodes = new Array(++n); + for (var i = 0; i < n; ++i) { + this._nodes[i] = {}; + } + } + return this._nodes; + } + this._nodes = v; + return this; + }; + Layout.prototype.groups = function (x) { + var _this = this; + if (!x) + return this._groups; + this._groups = x; + this._rootGroup = {}; + this._groups.forEach(function (g) { + if (typeof g.padding === "undefined") + g.padding = 1; + if (typeof g.leaves !== "undefined") { + g.leaves.forEach(function (v, i) { + if (typeof v === 'number') + (g.leaves[i] = _this._nodes[v]).parent = g; + }); + } + if (typeof g.groups !== "undefined") { + g.groups.forEach(function (gi, i) { + if (typeof gi === 'number') + (g.groups[i] = _this._groups[gi]).parent = g; + }); + } + }); + this._rootGroup.leaves = this._nodes.filter(function (v) { return typeof v.parent === 'undefined'; }); + this._rootGroup.groups = this._groups.filter(function (g) { return typeof g.parent === 'undefined'; }); + return this; + }; + Layout.prototype.powerGraphGroups = function (f) { + var g = powergraph.getGroups(this._nodes, this._links, this.linkAccessor, this._rootGroup); + this.groups(g.groups); + f(g); + return this; + }; + Layout.prototype.avoidOverlaps = function (v) { + if (!arguments.length) + return this._avoidOverlaps; + this._avoidOverlaps = v; + return this; + }; + Layout.prototype.handleDisconnected = function (v) { + if (!arguments.length) + return this._handleDisconnected; + this._handleDisconnected = v; + return this; + }; + Layout.prototype.flowLayout = function (axis, minSeparation) { + if (!arguments.length) + axis = 'y'; + this._directedLinkConstraints = { + axis: axis, + getMinSeparation: typeof minSeparation === 'number' ? function () { return minSeparation; } : minSeparation + }; + return this; + }; + Layout.prototype.links = function (x) { + if (!arguments.length) + return this._links; + this._links = x; + return this; + }; + Layout.prototype.constraints = function (c) { + if (!arguments.length) + return this._constraints; + this._constraints = c; + return this; + }; + Layout.prototype.distanceMatrix = function (d) { + if (!arguments.length) + return this._distanceMatrix; + this._distanceMatrix = d; + return this; + }; + Layout.prototype.size = function (x) { + if (!x) + return this._canvasSize; + this._canvasSize = x; + return this; + }; + Layout.prototype.defaultNodeSize = function (x) { + if (!x) + return this._defaultNodeSize; + this._defaultNodeSize = x; + return this; + }; + Layout.prototype.groupCompactness = function (x) { + if (!x) + return this._groupCompactness; + this._groupCompactness = x; + return this; + }; + Layout.prototype.linkDistance = function (x) { + if (!x) { + return this._linkDistance; + } + this._linkDistance = typeof x === "function" ? x : +x; + this._linkLengthCalculator = null; + return this; + }; + Layout.prototype.linkType = function (f) { + this._linkType = f; + return this; + }; + Layout.prototype.convergenceThreshold = function (x) { + if (!x) + return this._threshold; + this._threshold = typeof x === "function" ? x : +x; + return this; + }; + Layout.prototype.alpha = function (x) { + if (!arguments.length) + return this._alpha; + else { + x = +x; + if (this._alpha) { + if (x > 0) + this._alpha = x; + else + this._alpha = 0; + } + else if (x > 0) { + if (!this._running) { + this._running = true; + this.trigger({ type: EventType.start, alpha: this._alpha = x }); + this.kick(); + } + } + return this; + } + }; + Layout.prototype.getLinkLength = function (link) { + return typeof this._linkDistance === "function" ? +(this._linkDistance(link)) : this._linkDistance; + }; + Layout.setLinkLength = function (link, length) { + link.length = length; + }; + Layout.prototype.getLinkType = function (link) { + return typeof this._linkType === "function" ? this._linkType(link) : 0; + }; + Layout.prototype.symmetricDiffLinkLengths = function (idealLength, w) { + var _this = this; + if (w === void 0) { w = 1; } + this.linkDistance(function (l) { return idealLength * l.length; }); + this._linkLengthCalculator = function () { return linklengths.symmetricDiffLinkLengths(_this._links, _this.linkAccessor, w); }; + return this; + }; + Layout.prototype.jaccardLinkLengths = function (idealLength, w) { + var _this = this; + if (w === void 0) { w = 1; } + this.linkDistance(function (l) { return idealLength * l.length; }); + this._linkLengthCalculator = function () { return linklengths.jaccardLinkLengths(_this._links, _this.linkAccessor, w); }; + return this; + }; + Layout.prototype.start = function (initialUnconstrainedIterations, initialUserConstraintIterations, initialAllConstraintsIterations, gridSnapIterations, keepRunning, centerGraph) { + var _this = this; + if (initialUnconstrainedIterations === void 0) { initialUnconstrainedIterations = 0; } + if (initialUserConstraintIterations === void 0) { initialUserConstraintIterations = 0; } + if (initialAllConstraintsIterations === void 0) { initialAllConstraintsIterations = 0; } + if (gridSnapIterations === void 0) { gridSnapIterations = 0; } + if (keepRunning === void 0) { keepRunning = true; } + if (centerGraph === void 0) { centerGraph = true; } + var i, n = this.nodes().length, N = n + 2 * this._groups.length; this._links.length; var w = this._canvasSize[0], h = this._canvasSize[1]; + var x = new Array(N), y = new Array(N); + var G = null; + var ao = this._avoidOverlaps; + this._nodes.forEach(function (v, i) { + v.index = i; + if (typeof v.x === 'undefined') { + v.x = w / 2, v.y = h / 2; + } + x[i] = v.x, y[i] = v.y; + }); + if (this._linkLengthCalculator) + this._linkLengthCalculator(); + var distances; + if (this._distanceMatrix) { + distances = this._distanceMatrix; + } + else { + distances = (new shortestpaths.Calculator(N, this._links, Layout.getSourceIndex, Layout.getTargetIndex, function (l) { return _this.getLinkLength(l); })).DistanceMatrix(); + G = descent.Descent.createSquareMatrix(N, function () { return 2; }); + this._links.forEach(function (l) { + if (typeof l.source == "number") + l.source = _this._nodes[l.source]; + if (typeof l.target == "number") + l.target = _this._nodes[l.target]; + }); + this._links.forEach(function (e) { + var u = Layout.getSourceIndex(e), v = Layout.getTargetIndex(e); + G[u][v] = G[v][u] = e.weight || 1; + }); + } + var D = descent.Descent.createSquareMatrix(N, function (i, j) { + return distances[i][j]; + }); + if (this._rootGroup && typeof this._rootGroup.groups !== 'undefined') { + var i = n; + var addAttraction = function (i, j, strength, idealDistance) { + G[i][j] = G[j][i] = strength; + D[i][j] = D[j][i] = idealDistance; + }; + this._groups.forEach(function (g) { + addAttraction(i, i + 1, _this._groupCompactness, 0.1); + x[i] = 0, y[i++] = 0; + x[i] = 0, y[i++] = 0; + }); + } + else + this._rootGroup = { leaves: this._nodes, groups: [] }; + var curConstraints = this._constraints || []; + if (this._directedLinkConstraints) { + this.linkAccessor.getMinSeparation = this._directedLinkConstraints.getMinSeparation; + curConstraints = curConstraints.concat(linklengths.generateDirectedEdgeConstraints(n, this._links, this._directedLinkConstraints.axis, (this.linkAccessor))); + } + this.avoidOverlaps(false); + this._descent = new descent.Descent([x, y], D); + this._descent.locks.clear(); + for (var i = 0; i < n; ++i) { + var o = this._nodes[i]; + if (o.fixed) { + o.px = o.x; + o.py = o.y; + var p = [o.x, o.y]; + this._descent.locks.add(i, p); + } + } + this._descent.threshold = this._threshold; + this.initialLayout(initialUnconstrainedIterations, x, y); + if (curConstraints.length > 0) + this._descent.project = new rectangle.Projection(this._nodes, this._groups, this._rootGroup, curConstraints).projectFunctions(); + this._descent.run(initialUserConstraintIterations); + this.separateOverlappingComponents(w, h, centerGraph); + this.avoidOverlaps(ao); + if (ao) { + this._nodes.forEach(function (v, i) { v.x = x[i], v.y = y[i]; }); + this._descent.project = new rectangle.Projection(this._nodes, this._groups, this._rootGroup, curConstraints, true).projectFunctions(); + this._nodes.forEach(function (v, i) { x[i] = v.x, y[i] = v.y; }); + } + this._descent.G = G; + this._descent.run(initialAllConstraintsIterations); + if (gridSnapIterations) { + this._descent.snapStrength = 1000; + this._descent.snapGridSize = this._nodes[0].width; + this._descent.numGridSnapNodes = n; + this._descent.scaleSnapByMaxH = n != N; + var G0 = descent.Descent.createSquareMatrix(N, function (i, j) { + if (i >= n || j >= n) + return G[i][j]; + return 0; + }); + this._descent.G = G0; + this._descent.run(gridSnapIterations); + } + this.updateNodePositions(); + this.separateOverlappingComponents(w, h, centerGraph); + return keepRunning ? this.resume() : this; + }; + Layout.prototype.initialLayout = function (iterations, x, y) { + if (this._groups.length > 0 && iterations > 0) { + var n = this._nodes.length; + var edges = this._links.map(function (e) { return ({ source: e.source.index, target: e.target.index }); }); + var vs = this._nodes.map(function (v) { return ({ index: v.index }); }); + this._groups.forEach(function (g, i) { + vs.push({ index: g.index = n + i }); + }); + this._groups.forEach(function (g, i) { + if (typeof g.leaves !== 'undefined') + g.leaves.forEach(function (v) { return edges.push({ source: g.index, target: v.index }); }); + if (typeof g.groups !== 'undefined') + g.groups.forEach(function (gg) { return edges.push({ source: g.index, target: gg.index }); }); + }); + new Layout() + .size(this.size()) + .nodes(vs) + .links(edges) + .avoidOverlaps(false) + .linkDistance(this.linkDistance()) + .symmetricDiffLinkLengths(5) + .convergenceThreshold(1e-4) + .start(iterations, 0, 0, 0, false); + this._nodes.forEach(function (v) { + x[v.index] = vs[v.index].x; + y[v.index] = vs[v.index].y; + }); + } + else { + this._descent.run(iterations); + } + }; + Layout.prototype.separateOverlappingComponents = function (width, height, centerGraph) { + var _this = this; + if (centerGraph === void 0) { centerGraph = true; } + if (!this._distanceMatrix && this._handleDisconnected) { + var x_1 = this._descent.x[0], y_1 = this._descent.x[1]; + this._nodes.forEach(function (v, i) { v.x = x_1[i], v.y = y_1[i]; }); + var graphs = handledisconnected.separateGraphs(this._nodes, this._links); + handledisconnected.applyPacking(graphs, width, height, this._defaultNodeSize, 1, centerGraph); + this._nodes.forEach(function (v, i) { + _this._descent.x[0][i] = v.x, _this._descent.x[1][i] = v.y; + if (v.bounds) { + v.bounds.setXCentre(v.x); + v.bounds.setYCentre(v.y); + } + }); + } + }; + Layout.prototype.resume = function () { + return this.alpha(0.1); + }; + Layout.prototype.stop = function () { + return this.alpha(0); + }; + Layout.prototype.prepareEdgeRouting = function (nodeMargin) { + if (nodeMargin === void 0) { nodeMargin = 0; } + this._visibilityGraph = new geom.TangentVisibilityGraph(this._nodes.map(function (v) { + return v.bounds.inflate(-nodeMargin).vertices(); + })); + }; + Layout.prototype.routeEdge = function (edge, ah, draw) { + if (ah === void 0) { ah = 5; } + var lineData = []; + var vg2 = new geom.TangentVisibilityGraph(this._visibilityGraph.P, { V: this._visibilityGraph.V, E: this._visibilityGraph.E }), port1 = { x: edge.source.x, y: edge.source.y }, port2 = { x: edge.target.x, y: edge.target.y }, start = vg2.addPoint(port1, edge.source.index), end = vg2.addPoint(port2, edge.target.index); + vg2.addEdgeIfVisible(port1, port2, edge.source.index, edge.target.index); + if (typeof draw !== 'undefined') { + draw(vg2); + } + var sourceInd = function (e) { return e.source.id; }, targetInd = function (e) { return e.target.id; }, length = function (e) { return e.length(); }, spCalc = new shortestpaths.Calculator(vg2.V.length, vg2.E, sourceInd, targetInd, length), shortestPath = spCalc.PathFromNodeToNode(start.id, end.id); + if (shortestPath.length === 1 || shortestPath.length === vg2.V.length) { + var route = rectangle.makeEdgeBetween(edge.source.innerBounds, edge.target.innerBounds, ah); + lineData = [route.sourceIntersection, route.arrowStart]; + } + else { + var n = shortestPath.length - 2, p = vg2.V[shortestPath[n]].p, q = vg2.V[shortestPath[0]].p, lineData = [edge.source.innerBounds.rayIntersection(p.x, p.y)]; + for (var i = n; i >= 0; --i) + lineData.push(vg2.V[shortestPath[i]].p); + lineData.push(rectangle.makeEdgeTo(q, edge.target.innerBounds, ah)); + } + return lineData; + }; + Layout.getSourceIndex = function (e) { + return typeof e.source === 'number' ? e.source : e.source.index; + }; + Layout.getTargetIndex = function (e) { + return typeof e.target === 'number' ? e.target : e.target.index; + }; + Layout.linkId = function (e) { + return Layout.getSourceIndex(e) + "-" + Layout.getTargetIndex(e); + }; + Layout.dragStart = function (d) { + if (isGroup(d)) { + Layout.storeOffset(d, Layout.dragOrigin(d)); + } + else { + Layout.stopNode(d); + d.fixed |= 2; + } + }; + Layout.stopNode = function (v) { + v.px = v.x; + v.py = v.y; + }; + Layout.storeOffset = function (d, origin) { + if (typeof d.leaves !== 'undefined') { + d.leaves.forEach(function (v) { + v.fixed |= 2; + Layout.stopNode(v); + v._dragGroupOffsetX = v.x - origin.x; + v._dragGroupOffsetY = v.y - origin.y; + }); + } + if (typeof d.groups !== 'undefined') { + d.groups.forEach(function (g) { return Layout.storeOffset(g, origin); }); + } + }; + Layout.dragOrigin = function (d) { + if (isGroup(d)) { + return { + x: d.bounds.cx(), + y: d.bounds.cy() + }; + } + else { + return d; + } + }; + Layout.drag = function (d, position) { + if (isGroup(d)) { + if (typeof d.leaves !== 'undefined') { + d.leaves.forEach(function (v) { + d.bounds.setXCentre(position.x); + d.bounds.setYCentre(position.y); + v.px = v._dragGroupOffsetX + position.x; + v.py = v._dragGroupOffsetY + position.y; + }); + } + if (typeof d.groups !== 'undefined') { + d.groups.forEach(function (g) { return Layout.drag(g, position); }); + } + } + else { + d.px = position.x; + d.py = position.y; + } + }; + Layout.dragEnd = function (d) { + if (isGroup(d)) { + if (typeof d.leaves !== 'undefined') { + d.leaves.forEach(function (v) { + Layout.dragEnd(v); + delete v._dragGroupOffsetX; + delete v._dragGroupOffsetY; + }); + } + if (typeof d.groups !== 'undefined') { + d.groups.forEach(Layout.dragEnd); + } + } + else { + d.fixed &= ~6; + } + }; + Layout.mouseOver = function (d) { + d.fixed |= 4; + d.px = d.x, d.py = d.y; + }; + Layout.mouseOut = function (d) { + d.fixed &= ~4; + }; + return Layout; +}()); +exports.Layout = Layout; + +}); + +var __extends$2 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); + + +var LayoutAdaptor = (function (_super) { + __extends$2(LayoutAdaptor, _super); + function LayoutAdaptor(options) { + var _this = _super.call(this) || this; + var o = options; + if (o.trigger) { + _this.trigger = o.trigger; + } + if (o.kick) { + _this.kick = o.kick; + } + if (o.drag) { + _this.drag = o.drag; + } + if (o.on) { + _this.on = o.on; + } + _this.dragstart = _this.dragStart = layout$1.Layout.dragStart; + _this.dragend = _this.dragEnd = layout$1.Layout.dragEnd; + return _this; + } + LayoutAdaptor.prototype.trigger = function (e) { }; + LayoutAdaptor.prototype.kick = function () { }; + LayoutAdaptor.prototype.drag = function () { }; + LayoutAdaptor.prototype.on = function (eventType, listener) { return this; }; + return LayoutAdaptor; +}(layout$1.Layout)); +var LayoutAdaptor_1 = LayoutAdaptor; +function adaptor(options) { + return new LayoutAdaptor(options); +} +var adaptor_2 = adaptor; + + +var adaptor_1 = /*#__PURE__*/Object.defineProperty({ + LayoutAdaptor: LayoutAdaptor_1, + adaptor: adaptor_2 +}, '__esModule', {value: true}); + +var __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); + + +var D3StyleLayoutAdaptor$1 = (function (_super) { + __extends$1(D3StyleLayoutAdaptor, _super); + function D3StyleLayoutAdaptor() { + var _this = _super.call(this) || this; + _this.event = d3.dispatch(layout$1.EventType[layout$1.EventType.start], layout$1.EventType[layout$1.EventType.tick], layout$1.EventType[layout$1.EventType.end]); + var d3layout = _this; + _this.drag = function () { + if (!drag) { + var drag = d3.behavior.drag() + .origin(layout$1.Layout.dragOrigin) + .on("dragstart.d3adaptor", layout$1.Layout.dragStart) + .on("drag.d3adaptor", function (d) { + layout$1.Layout.drag(d, d3.event); + d3layout.resume(); + }) + .on("dragend.d3adaptor", layout$1.Layout.dragEnd); + } + if (!arguments.length) + return drag; + this + .call(drag); + }; + return _this; + } + D3StyleLayoutAdaptor.prototype.trigger = function (e) { + var d3event = { type: layout$1.EventType[e.type], alpha: e.alpha, stress: e.stress }; + this.event[d3event.type](d3event); + }; + D3StyleLayoutAdaptor.prototype.kick = function () { + var _this = this; + d3.timer(function () { return _super.prototype.tick.call(_this); }); + }; + D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) { + if (typeof eventType === 'string') { + this.event.on(eventType, listener); + } + else { + this.event.on(layout$1.EventType[eventType], listener); + } + return this; + }; + return D3StyleLayoutAdaptor; +}(layout$1.Layout)); +var D3StyleLayoutAdaptor_1$1 = D3StyleLayoutAdaptor$1; +function d3adaptor$1() { + return new D3StyleLayoutAdaptor$1(); +} +var d3adaptor_1$1 = d3adaptor$1; + + +var d3v3adaptor = /*#__PURE__*/Object.defineProperty({ + D3StyleLayoutAdaptor: D3StyleLayoutAdaptor_1$1, + d3adaptor: d3adaptor_1$1 +}, '__esModule', {value: true}); + +var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); + + +var D3StyleLayoutAdaptor = (function (_super) { + __extends(D3StyleLayoutAdaptor, _super); + function D3StyleLayoutAdaptor(d3Context) { + var _this = _super.call(this) || this; + _this.d3Context = d3Context; + _this.event = d3Context.dispatch(layout$1.EventType[layout$1.EventType.start], layout$1.EventType[layout$1.EventType.tick], layout$1.EventType[layout$1.EventType.end]); + var d3layout = _this; + _this.drag = function () { + if (!drag) { + var drag = d3Context.drag() + .subject(layout$1.Layout.dragOrigin) + .on("start.d3adaptor", layout$1.Layout.dragStart) + .on("drag.d3adaptor", function (d) { + layout$1.Layout.drag(d, d3Context.event); + d3layout.resume(); + }) + .on("end.d3adaptor", layout$1.Layout.dragEnd); + } + if (!arguments.length) + return drag; + arguments[0].call(drag); + }; + return _this; + } + D3StyleLayoutAdaptor.prototype.trigger = function (e) { + var d3event = { type: layout$1.EventType[e.type], alpha: e.alpha, stress: e.stress }; + this.event.call(d3event.type, d3event); + }; + D3StyleLayoutAdaptor.prototype.kick = function () { + var _this = this; + var t = this.d3Context.timer(function () { return _super.prototype.tick.call(_this) && t.stop(); }); + }; + D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) { + if (typeof eventType === 'string') { + this.event.on(eventType, listener); + } + else { + this.event.on(layout$1.EventType[eventType], listener); + } + return this; + }; + return D3StyleLayoutAdaptor; +}(layout$1.Layout)); +var D3StyleLayoutAdaptor_1 = D3StyleLayoutAdaptor; + + +var d3v4adaptor = /*#__PURE__*/Object.defineProperty({ + D3StyleLayoutAdaptor: D3StyleLayoutAdaptor_1 +}, '__esModule', {value: true}); + +function d3adaptor(d3Context) { + if (!d3Context || isD3V3(d3Context)) { + return new d3v3adaptor.D3StyleLayoutAdaptor(); + } + return new d3v4adaptor.D3StyleLayoutAdaptor(d3Context); +} +var d3adaptor_2 = d3adaptor; +function isD3V3(d3Context) { + var v3exp = /^3\./; + return d3Context.version && d3Context.version.match(v3exp) !== null; +} + + +var d3adaptor_1 = /*#__PURE__*/Object.defineProperty({ + d3adaptor: d3adaptor_2 +}, '__esModule', {value: true}); + +var NodeWrapper = (function () { + function NodeWrapper(id, rect, children) { + this.id = id; + this.rect = rect; + this.children = children; + this.leaf = typeof children === 'undefined' || children.length === 0; + } + return NodeWrapper; +}()); +var NodeWrapper_1 = NodeWrapper; +var Vert = (function () { + function Vert(id, x, y, node, line) { + if (node === void 0) { node = null; } + if (line === void 0) { line = null; } + this.id = id; + this.x = x; + this.y = y; + this.node = node; + this.line = line; + } + return Vert; +}()); +var Vert_1 = Vert; +var LongestCommonSubsequence = (function () { + function LongestCommonSubsequence(s, t) { + this.s = s; + this.t = t; + var mf = LongestCommonSubsequence.findMatch(s, t); + var tr = t.slice(0).reverse(); + var mr = LongestCommonSubsequence.findMatch(s, tr); + if (mf.length >= mr.length) { + this.length = mf.length; + this.si = mf.si; + this.ti = mf.ti; + this.reversed = false; + } + else { + this.length = mr.length; + this.si = mr.si; + this.ti = t.length - mr.ti - mr.length; + this.reversed = true; + } + } + LongestCommonSubsequence.findMatch = function (s, t) { + var m = s.length; + var n = t.length; + var match = { length: 0, si: -1, ti: -1 }; + var l = new Array(m); + for (var i = 0; i < m; i++) { + l[i] = new Array(n); + for (var j = 0; j < n; j++) + if (s[i] === t[j]) { + var v = l[i][j] = (i === 0 || j === 0) ? 1 : l[i - 1][j - 1] + 1; + if (v > match.length) { + match.length = v; + match.si = i - v + 1; + match.ti = j - v + 1; + } + } + else + l[i][j] = 0; + } + return match; + }; + LongestCommonSubsequence.prototype.getSequence = function () { + return this.length >= 0 ? this.s.slice(this.si, this.si + this.length) : []; + }; + return LongestCommonSubsequence; +}()); +var LongestCommonSubsequence_1 = LongestCommonSubsequence; +var GridRouter = (function () { + function GridRouter(originalnodes, accessor, groupPadding) { + var _this = this; + if (groupPadding === void 0) { groupPadding = 12; } + this.originalnodes = originalnodes; + this.groupPadding = groupPadding; + this.leaves = null; + this.nodes = originalnodes.map(function (v, i) { return new NodeWrapper(i, accessor.getBounds(v), accessor.getChildren(v)); }); + this.leaves = this.nodes.filter(function (v) { return v.leaf; }); + this.groups = this.nodes.filter(function (g) { return !g.leaf; }); + this.cols = this.getGridLines('x'); + this.rows = this.getGridLines('y'); + this.groups.forEach(function (v) { + return v.children.forEach(function (c) { return _this.nodes[c].parent = v; }); + }); + this.root = { children: [] }; + this.nodes.forEach(function (v) { + if (typeof v.parent === 'undefined') { + v.parent = _this.root; + _this.root.children.push(v.id); + } + v.ports = []; + }); + this.backToFront = this.nodes.slice(0); + this.backToFront.sort(function (x, y) { return _this.getDepth(x) - _this.getDepth(y); }); + var frontToBackGroups = this.backToFront.slice(0).reverse().filter(function (g) { return !g.leaf; }); + frontToBackGroups.forEach(function (v) { + var r = rectangle.Rectangle.empty(); + v.children.forEach(function (c) { return r = r.union(_this.nodes[c].rect); }); + v.rect = r.inflate(_this.groupPadding); + }); + var colMids = this.midPoints(this.cols.map(function (r) { return r.pos; })); + var rowMids = this.midPoints(this.rows.map(function (r) { return r.pos; })); + var rowx = colMids[0], rowX = colMids[colMids.length - 1]; + var coly = rowMids[0], colY = rowMids[rowMids.length - 1]; + var hlines = this.rows.map(function (r) { return ({ x1: rowx, x2: rowX, y1: r.pos, y2: r.pos }); }) + .concat(rowMids.map(function (m) { return ({ x1: rowx, x2: rowX, y1: m, y2: m }); })); + var vlines = this.cols.map(function (c) { return ({ x1: c.pos, x2: c.pos, y1: coly, y2: colY }); }) + .concat(colMids.map(function (m) { return ({ x1: m, x2: m, y1: coly, y2: colY }); })); + var lines = hlines.concat(vlines); + lines.forEach(function (l) { return l.verts = []; }); + this.verts = []; + this.edges = []; + hlines.forEach(function (h) { + return vlines.forEach(function (v) { + var p = new Vert(_this.verts.length, v.x1, h.y1); + h.verts.push(p); + v.verts.push(p); + _this.verts.push(p); + var i = _this.backToFront.length; + while (i-- > 0) { + var node = _this.backToFront[i], r = node.rect; + var dx = Math.abs(p.x - r.cx()), dy = Math.abs(p.y - r.cy()); + if (dx < r.width() / 2 && dy < r.height() / 2) { + p.node = node; + break; + } + } + }); + }); + lines.forEach(function (l, li) { + _this.nodes.forEach(function (v, i) { + v.rect.lineIntersections(l.x1, l.y1, l.x2, l.y2).forEach(function (intersect, j) { + var p = new Vert(_this.verts.length, intersect.x, intersect.y, v, l); + _this.verts.push(p); + l.verts.push(p); + v.ports.push(p); + }); + }); + var isHoriz = Math.abs(l.y1 - l.y2) < 0.1; + var delta = function (a, b) { return isHoriz ? b.x - a.x : b.y - a.y; }; + l.verts.sort(delta); + for (var i = 1; i < l.verts.length; i++) { + var u = l.verts[i - 1], v = l.verts[i]; + if (u.node && u.node === v.node && u.node.leaf) + continue; + _this.edges.push({ source: u.id, target: v.id, length: Math.abs(delta(u, v)) }); + } + }); + } + GridRouter.prototype.avg = function (a) { return a.reduce(function (x, y) { return x + y; }) / a.length; }; + GridRouter.prototype.getGridLines = function (axis) { + var columns = []; + var ls = this.leaves.slice(0, this.leaves.length); + while (ls.length > 0) { + var overlapping = ls.filter(function (v) { return v.rect['overlap' + axis.toUpperCase()](ls[0].rect); }); + var col = { + nodes: overlapping, + pos: this.avg(overlapping.map(function (v) { return v.rect['c' + axis](); })) + }; + columns.push(col); + col.nodes.forEach(function (v) { return ls.splice(ls.indexOf(v), 1); }); + } + columns.sort(function (a, b) { return a.pos - b.pos; }); + return columns; + }; + GridRouter.prototype.getDepth = function (v) { + var depth = 0; + while (v.parent !== this.root) { + depth++; + v = v.parent; + } + return depth; + }; + GridRouter.prototype.midPoints = function (a) { + var gap = a[1] - a[0]; + var mids = [a[0] - gap / 2]; + for (var i = 1; i < a.length; i++) { + mids.push((a[i] + a[i - 1]) / 2); + } + mids.push(a[a.length - 1] + gap / 2); + return mids; + }; + GridRouter.prototype.findLineage = function (v) { + var lineage = [v]; + do { + v = v.parent; + lineage.push(v); + } while (v !== this.root); + return lineage.reverse(); + }; + GridRouter.prototype.findAncestorPathBetween = function (a, b) { + var aa = this.findLineage(a), ba = this.findLineage(b), i = 0; + while (aa[i] === ba[i]) + i++; + return { commonAncestor: aa[i - 1], lineages: aa.slice(i).concat(ba.slice(i)) }; + }; + GridRouter.prototype.siblingObstacles = function (a, b) { + var _this = this; + var path = this.findAncestorPathBetween(a, b); + var lineageLookup = {}; + path.lineages.forEach(function (v) { return lineageLookup[v.id] = {}; }); + var obstacles = path.commonAncestor.children.filter(function (v) { return !(v in lineageLookup); }); + path.lineages + .filter(function (v) { return v.parent !== path.commonAncestor; }) + .forEach(function (v) { return obstacles = obstacles.concat(v.parent.children.filter(function (c) { return c !== v.id; })); }); + return obstacles.map(function (v) { return _this.nodes[v]; }); + }; + GridRouter.getSegmentSets = function (routes, x, y) { + var vsegments = []; + for (var ei = 0; ei < routes.length; ei++) { + var route = routes[ei]; + for (var si = 0; si < route.length; si++) { + var s = route[si]; + s.edgeid = ei; + s.i = si; + var sdx = s[1][x] - s[0][x]; + if (Math.abs(sdx) < 0.1) { + vsegments.push(s); + } + } + } + vsegments.sort(function (a, b) { return a[0][x] - b[0][x]; }); + var vsegmentsets = []; + var segmentset = null; + for (var i = 0; i < vsegments.length; i++) { + var s = vsegments[i]; + if (!segmentset || Math.abs(s[0][x] - segmentset.pos) > 0.1) { + segmentset = { pos: s[0][x], segments: [] }; + vsegmentsets.push(segmentset); + } + segmentset.segments.push(s); + } + return vsegmentsets; + }; + GridRouter.nudgeSegs = function (x, y, routes, segments, leftOf, gap) { + var n = segments.length; + if (n <= 1) + return; + var vs = segments.map(function (s) { return new vpsc.Variable(s[0][x]); }); + var cs = []; + for (var i = 0; i < n; i++) { + for (var j = 0; j < n; j++) { + if (i === j) + continue; + var s1 = segments[i], s2 = segments[j], e1 = s1.edgeid, e2 = s2.edgeid, lind = -1, rind = -1; + if (x == 'x') { + if (leftOf(e1, e2)) { + if (s1[0][y] < s1[1][y]) { + lind = j, rind = i; + } + else { + lind = i, rind = j; + } + } + } + else { + if (leftOf(e1, e2)) { + if (s1[0][y] < s1[1][y]) { + lind = i, rind = j; + } + else { + lind = j, rind = i; + } + } + } + if (lind >= 0) { + cs.push(new vpsc.Constraint(vs[lind], vs[rind], gap)); + } + } + } + var solver = new vpsc.Solver(vs, cs); + solver.solve(); + vs.forEach(function (v, i) { + var s = segments[i]; + var pos = v.position(); + s[0][x] = s[1][x] = pos; + var route = routes[s.edgeid]; + if (s.i > 0) + route[s.i - 1][1][x] = pos; + if (s.i < route.length - 1) + route[s.i + 1][0][x] = pos; + }); + }; + GridRouter.nudgeSegments = function (routes, x, y, leftOf, gap) { + var vsegmentsets = GridRouter.getSegmentSets(routes, x, y); + for (var i = 0; i < vsegmentsets.length; i++) { + var ss = vsegmentsets[i]; + var events = []; + for (var j = 0; j < ss.segments.length; j++) { + var s = ss.segments[j]; + events.push({ type: 0, s: s, pos: Math.min(s[0][y], s[1][y]) }); + events.push({ type: 1, s: s, pos: Math.max(s[0][y], s[1][y]) }); + } + events.sort(function (a, b) { return a.pos - b.pos + a.type - b.type; }); + var open = []; + var openCount = 0; + events.forEach(function (e) { + if (e.type === 0) { + open.push(e.s); + openCount++; + } + else { + openCount--; + } + if (openCount == 0) { + GridRouter.nudgeSegs(x, y, routes, open, leftOf, gap); + open = []; + } + }); + } + }; + GridRouter.prototype.routeEdges = function (edges, nudgeGap, source, target) { + var _this = this; + var routePaths = edges.map(function (e) { return _this.route(source(e), target(e)); }); + var order = GridRouter.orderEdges(routePaths); + var routes = routePaths.map(function (e) { return GridRouter.makeSegments(e); }); + GridRouter.nudgeSegments(routes, 'x', 'y', order, nudgeGap); + GridRouter.nudgeSegments(routes, 'y', 'x', order, nudgeGap); + GridRouter.unreverseEdges(routes, routePaths); + return routes; + }; + GridRouter.unreverseEdges = function (routes, routePaths) { + routes.forEach(function (segments, i) { + var path = routePaths[i]; + if (path.reversed) { + segments.reverse(); + segments.forEach(function (segment) { + segment.reverse(); + }); + } + }); + }; + GridRouter.angleBetween2Lines = function (line1, line2) { + var angle1 = Math.atan2(line1[0].y - line1[1].y, line1[0].x - line1[1].x); + var angle2 = Math.atan2(line2[0].y - line2[1].y, line2[0].x - line2[1].x); + var diff = angle1 - angle2; + if (diff > Math.PI || diff < -Math.PI) { + diff = angle2 - angle1; + } + return diff; + }; + GridRouter.isLeft = function (a, b, c) { + return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) <= 0; + }; + GridRouter.getOrder = function (pairs) { + var outgoing = {}; + for (var i = 0; i < pairs.length; i++) { + var p = pairs[i]; + if (typeof outgoing[p.l] === 'undefined') + outgoing[p.l] = {}; + outgoing[p.l][p.r] = true; + } + return function (l, r) { return typeof outgoing[l] !== 'undefined' && outgoing[l][r]; }; + }; + GridRouter.orderEdges = function (edges) { + var edgeOrder = []; + for (var i = 0; i < edges.length - 1; i++) { + for (var j = i + 1; j < edges.length; j++) { + var e = edges[i], f = edges[j], lcs = new LongestCommonSubsequence(e, f); + var u, vi, vj; + if (lcs.length === 0) + continue; + if (lcs.reversed) { + f.reverse(); + f.reversed = true; + lcs = new LongestCommonSubsequence(e, f); + } + if ((lcs.si <= 0 || lcs.ti <= 0) && + (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length)) { + edgeOrder.push({ l: i, r: j }); + continue; + } + if (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length) { + u = e[lcs.si + 1]; + vj = e[lcs.si - 1]; + vi = f[lcs.ti - 1]; + } + else { + u = e[lcs.si + lcs.length - 2]; + vi = e[lcs.si + lcs.length]; + vj = f[lcs.ti + lcs.length]; + } + if (GridRouter.isLeft(u, vi, vj)) { + edgeOrder.push({ l: j, r: i }); + } + else { + edgeOrder.push({ l: i, r: j }); + } + } + } + return GridRouter.getOrder(edgeOrder); + }; + GridRouter.makeSegments = function (path) { + function copyPoint(p) { + return { x: p.x, y: p.y }; + } + var isStraight = function (a, b, c) { return Math.abs((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) < 0.001; }; + var segments = []; + var a = copyPoint(path[0]); + for (var i = 1; i < path.length; i++) { + var b = copyPoint(path[i]), c = i < path.length - 1 ? path[i + 1] : null; + if (!c || !isStraight(a, b, c)) { + segments.push([a, b]); + a = b; + } + } + return segments; + }; + GridRouter.prototype.route = function (s, t) { + var _this = this; + var source = this.nodes[s], target = this.nodes[t]; + this.obstacles = this.siblingObstacles(source, target); + var obstacleLookup = {}; + this.obstacles.forEach(function (o) { return obstacleLookup[o.id] = o; }); + this.passableEdges = this.edges.filter(function (e) { + var u = _this.verts[e.source], v = _this.verts[e.target]; + return !(u.node && u.node.id in obstacleLookup + || v.node && v.node.id in obstacleLookup); + }); + for (var i = 1; i < source.ports.length; i++) { + var u = source.ports[0].id; + var v = source.ports[i].id; + this.passableEdges.push({ + source: u, + target: v, + length: 0 + }); + } + for (var i = 1; i < target.ports.length; i++) { + var u = target.ports[0].id; + var v = target.ports[i].id; + this.passableEdges.push({ + source: u, + target: v, + length: 0 + }); + } + var getSource = function (e) { return e.source; }, getTarget = function (e) { return e.target; }, getLength = function (e) { return e.length; }; + var shortestPathCalculator = new shortestpaths.Calculator(this.verts.length, this.passableEdges, getSource, getTarget, getLength); + var bendPenalty = function (u, v, w) { + var a = _this.verts[u], b = _this.verts[v], c = _this.verts[w]; + var dx = Math.abs(c.x - a.x), dy = Math.abs(c.y - a.y); + if (a.node === source && a.node === b.node || b.node === target && b.node === c.node) + return 0; + return dx > 1 && dy > 1 ? 1000 : 0; + }; + var shortestPath = shortestPathCalculator.PathFromNodeToNodeWithPrevCost(source.ports[0].id, target.ports[0].id, bendPenalty); + var pathPoints = shortestPath.reverse().map(function (vi) { return _this.verts[vi]; }); + pathPoints.push(this.nodes[target.id].ports[0]); + return pathPoints.filter(function (v, i) { + return !(i < pathPoints.length - 1 && pathPoints[i + 1].node === source && v.node === source + || i > 0 && v.node === target && pathPoints[i - 1].node === target); + }); + }; + GridRouter.getRoutePath = function (route, cornerradius, arrowwidth, arrowheight) { + var result = { + routepath: 'M ' + route[0][0].x + ' ' + route[0][0].y + ' ', + arrowpath: '' + }; + if (route.length > 1) { + for (var i = 0; i < route.length; i++) { + var li = route[i]; + var x = li[1].x, y = li[1].y; + var dx = x - li[0].x; + var dy = y - li[0].y; + if (i < route.length - 1) { + if (Math.abs(dx) > 0) { + x -= dx / Math.abs(dx) * cornerradius; + } + else { + y -= dy / Math.abs(dy) * cornerradius; + } + result.routepath += 'L ' + x + ' ' + y + ' '; + var l = route[i + 1]; + var x0 = l[0].x, y0 = l[0].y; + var x1 = l[1].x; + var y1 = l[1].y; + dx = x1 - x0; + dy = y1 - y0; + var angle = GridRouter.angleBetween2Lines(li, l) < 0 ? 1 : 0; + var x2, y2; + if (Math.abs(dx) > 0) { + x2 = x0 + dx / Math.abs(dx) * cornerradius; + y2 = y0; + } + else { + x2 = x0; + y2 = y0 + dy / Math.abs(dy) * cornerradius; + } + var cx = Math.abs(x2 - x); + var cy = Math.abs(y2 - y); + result.routepath += 'A ' + cx + ' ' + cy + ' 0 0 ' + angle + ' ' + x2 + ' ' + y2 + ' '; + } + else { + var arrowtip = [x, y]; + var arrowcorner1, arrowcorner2; + if (Math.abs(dx) > 0) { + x -= dx / Math.abs(dx) * arrowheight; + arrowcorner1 = [x, y + arrowwidth]; + arrowcorner2 = [x, y - arrowwidth]; + } + else { + y -= dy / Math.abs(dy) * arrowheight; + arrowcorner1 = [x + arrowwidth, y]; + arrowcorner2 = [x - arrowwidth, y]; + } + result.routepath += 'L ' + x + ' ' + y + ' '; + if (arrowheight > 0) { + result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1] + + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1]; + } + } + } + } + else { + var li = route[0]; + var x = li[1].x, y = li[1].y; + var dx = x - li[0].x; + var dy = y - li[0].y; + var arrowtip = [x, y]; + var arrowcorner1, arrowcorner2; + if (Math.abs(dx) > 0) { + x -= dx / Math.abs(dx) * arrowheight; + arrowcorner1 = [x, y + arrowwidth]; + arrowcorner2 = [x, y - arrowwidth]; + } + else { + y -= dy / Math.abs(dy) * arrowheight; + arrowcorner1 = [x + arrowwidth, y]; + arrowcorner2 = [x - arrowwidth, y]; + } + result.routepath += 'L ' + x + ' ' + y + ' '; + if (arrowheight > 0) { + result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1] + + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1]; + } + } + return result; + }; + return GridRouter; +}()); +var GridRouter_1 = GridRouter; + + +var gridrouter = /*#__PURE__*/Object.defineProperty({ + NodeWrapper: NodeWrapper_1, + Vert: Vert_1, + LongestCommonSubsequence: LongestCommonSubsequence_1, + GridRouter: GridRouter_1 +}, '__esModule', {value: true}); + +var Link3D = (function () { + function Link3D(source, target) { + this.source = source; + this.target = target; + } + Link3D.prototype.actualLength = function (x) { + var _this = this; + return Math.sqrt(x.reduce(function (c, v) { + var dx = v[_this.target] - v[_this.source]; + return c + dx * dx; + }, 0)); + }; + return Link3D; +}()); +var Link3D_1 = Link3D; +var Node3D = (function () { + function Node3D(x, y, z) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + if (z === void 0) { z = 0; } + this.x = x; + this.y = y; + this.z = z; + } + return Node3D; +}()); +var Node3D_1 = Node3D; +var Layout3D = (function () { + function Layout3D(nodes, links, idealLinkLength) { + var _this = this; + if (idealLinkLength === void 0) { idealLinkLength = 1; } + this.nodes = nodes; + this.links = links; + this.idealLinkLength = idealLinkLength; + this.constraints = null; + this.useJaccardLinkLengths = true; + this.result = new Array(Layout3D.k); + for (var i = 0; i < Layout3D.k; ++i) { + this.result[i] = new Array(nodes.length); + } + nodes.forEach(function (v, i) { + for (var _i = 0, _a = Layout3D.dims; _i < _a.length; _i++) { + var dim = _a[_i]; + if (typeof v[dim] == 'undefined') + v[dim] = Math.random(); + } + _this.result[0][i] = v.x; + _this.result[1][i] = v.y; + _this.result[2][i] = v.z; + }); + } + Layout3D.prototype.linkLength = function (l) { + return l.actualLength(this.result); + }; + Layout3D.prototype.start = function (iterations) { + var _this = this; + if (iterations === void 0) { iterations = 100; } + var n = this.nodes.length; + var linkAccessor = new LinkAccessor(); + if (this.useJaccardLinkLengths) + linklengths.jaccardLinkLengths(this.links, linkAccessor, 1.5); + this.links.forEach(function (e) { return e.length *= _this.idealLinkLength; }); + var distanceMatrix = (new shortestpaths.Calculator(n, this.links, function (e) { return e.source; }, function (e) { return e.target; }, function (e) { return e.length; })).DistanceMatrix(); + var D = descent.Descent.createSquareMatrix(n, function (i, j) { return distanceMatrix[i][j]; }); + var G = descent.Descent.createSquareMatrix(n, function () { return 2; }); + this.links.forEach(function (_a) { + var source = _a.source, target = _a.target; + return G[source][target] = G[target][source] = 1; + }); + this.descent = new descent.Descent(this.result, D); + this.descent.threshold = 1e-3; + this.descent.G = G; + if (this.constraints) + this.descent.project = new rectangle.Projection(this.nodes, null, null, this.constraints).projectFunctions(); + for (var i = 0; i < this.nodes.length; i++) { + var v = this.nodes[i]; + if (v.fixed) { + this.descent.locks.add(i, [v.x, v.y, v.z]); + } + } + this.descent.run(iterations); + return this; + }; + Layout3D.prototype.tick = function () { + this.descent.locks.clear(); + for (var i = 0; i < this.nodes.length; i++) { + var v = this.nodes[i]; + if (v.fixed) { + this.descent.locks.add(i, [v.x, v.y, v.z]); + } + } + return this.descent.rungeKutta(); + }; + Layout3D.dims = ['x', 'y', 'z']; + Layout3D.k = Layout3D.dims.length; + return Layout3D; +}()); +var Layout3D_1 = Layout3D; +var LinkAccessor = (function () { + function LinkAccessor() { + } + LinkAccessor.prototype.getSourceIndex = function (e) { return e.source; }; + LinkAccessor.prototype.getTargetIndex = function (e) { return e.target; }; + LinkAccessor.prototype.getLength = function (e) { return e.length; }; + LinkAccessor.prototype.setLength = function (e, l) { e.length = l; }; + return LinkAccessor; +}()); + + +var layout3d = /*#__PURE__*/Object.defineProperty({ + Link3D: Link3D_1, + Node3D: Node3D_1, + Layout3D: Layout3D_1 +}, '__esModule', {value: true}); + +function gridify(pgLayout, nudgeGap, margin, groupMargin) { + pgLayout.cola.start(0, 0, 0, 10, false); + var gridrouter = route(pgLayout.cola.nodes(), pgLayout.cola.groups(), margin, groupMargin); + return gridrouter.routeEdges(pgLayout.powerGraph.powerEdges, nudgeGap, function (e) { return e.source.routerNode.id; }, function (e) { return e.target.routerNode.id; }); +} +var gridify_1 = gridify; +function route(nodes, groups, margin, groupMargin) { + nodes.forEach(function (d) { + d.routerNode = { + name: d.name, + bounds: d.bounds.inflate(-margin) + }; + }); + groups.forEach(function (d) { + d.routerNode = { + bounds: d.bounds.inflate(-groupMargin), + children: (typeof d.groups !== 'undefined' ? d.groups.map(function (c) { return nodes.length + c.id; }) : []) + .concat(typeof d.leaves !== 'undefined' ? d.leaves.map(function (c) { return c.index; }) : []) + }; + }); + var gridRouterNodes = nodes.concat(groups).map(function (d, i) { + d.routerNode.id = i; + return d.routerNode; + }); + return new gridrouter.GridRouter(gridRouterNodes, { + getChildren: function (v) { return v.children; }, + getBounds: function (v) { return v.bounds; } + }, margin - groupMargin); +} +function powerGraphGridLayout(graph, size, grouppadding) { + var powerGraph; + graph.nodes.forEach(function (v, i) { return v.index = i; }); + new layout$1.Layout() + .avoidOverlaps(false) + .nodes(graph.nodes) + .links(graph.links) + .powerGraphGroups(function (d) { + powerGraph = d; + powerGraph.groups.forEach(function (v) { return v.padding = grouppadding; }); + }); + var n = graph.nodes.length; + var edges = []; + var vs = graph.nodes.slice(0); + vs.forEach(function (v, i) { return v.index = i; }); + powerGraph.groups.forEach(function (g) { + var sourceInd = g.index = g.id + n; + vs.push(g); + if (typeof g.leaves !== 'undefined') + g.leaves.forEach(function (v) { return edges.push({ source: sourceInd, target: v.index }); }); + if (typeof g.groups !== 'undefined') + g.groups.forEach(function (gg) { return edges.push({ source: sourceInd, target: gg.id + n }); }); + }); + powerGraph.powerEdges.forEach(function (e) { + edges.push({ source: e.source.index, target: e.target.index }); + }); + new layout$1.Layout() + .size(size) + .nodes(vs) + .links(edges) + .avoidOverlaps(false) + .linkDistance(30) + .symmetricDiffLinkLengths(5) + .convergenceThreshold(1e-4) + .start(100, 0, 0, 0, false); + return { + cola: new layout$1.Layout() + .convergenceThreshold(1e-3) + .size(size) + .avoidOverlaps(true) + .nodes(graph.nodes) + .links(graph.links) + .groupCompactness(1e-4) + .linkDistance(30) + .symmetricDiffLinkLengths(5) + .powerGraphGroups(function (d) { + powerGraph = d; + powerGraph.groups.forEach(function (v) { + v.padding = grouppadding; + }); + }).start(50, 0, 100, 0, false), + powerGraph: powerGraph + }; +} +var powerGraphGridLayout_1 = powerGraphGridLayout; + + +var batch = /*#__PURE__*/Object.defineProperty({ + gridify: gridify_1, + powerGraphGridLayout: powerGraphGridLayout_1 +}, '__esModule', {value: true}); + +var dist = createCommonjsModule(function (module, exports) { +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +__export(adaptor_1); +__export(d3adaptor_1); +__export(descent); +__export(geom); +__export(gridrouter); +__export(handledisconnected); +__export(layout$1); +__export(layout3d); +__export(linklengths); +__export(powergraph); +__export(pqueue); +__export(rbtree); +__export(rectangle); +__export(shortestpaths); +__export(vpsc); +__export(batch); + +}); + +var cytoscapeCola = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(dist); +})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_5__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 3); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var assign = __webpack_require__(1); +var defaults = __webpack_require__(2); +var cola = __webpack_require__(5) || (typeof window !== 'undefined' ? window.cola : null); +var raf = __webpack_require__(4); +var isString = function isString(o) { + return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(''); +}; +var isNumber = function isNumber(o) { + return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(0); +}; +var isObject = function isObject(o) { + return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof({}); +}; +var isFunction = function isFunction(o) { + return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(function () {}); +}; +var nop = function nop() {}; + +var getOptVal = function getOptVal(val, ele) { + if (isFunction(val)) { + var fn = val; + return fn.apply(ele, [ele]); + } else { + return val; + } +}; + +// constructor +// options : object containing layout options +function ColaLayout(options) { + this.options = assign({}, defaults, options); +} + +// runs the layout +ColaLayout.prototype.run = function () { + var layout = this; + var options = this.options; + + layout.manuallyStopped = false; + + var cy = options.cy; // cy is automatically populated for us in the constructor + var eles = options.eles; + var nodes = eles.nodes(); + var edges = eles.edges(); + var ready = false; + + var isParent = function isParent(ele) { + return ele.isParent(); + }; + + var parentNodes = nodes.filter(isParent); + + var nonparentNodes = nodes.subtract(parentNodes); + + var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() }; + if (bb.x2 === undefined) { + bb.x2 = bb.x1 + bb.w; + } + if (bb.w === undefined) { + bb.w = bb.x2 - bb.x1; + } + if (bb.y2 === undefined) { + bb.y2 = bb.y1 + bb.h; + } + if (bb.h === undefined) { + bb.h = bb.y2 - bb.y1; + } + + var updateNodePositions = function updateNodePositions() { + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var dimensions = node.layoutDimensions(options); + var scratch = node.scratch('cola'); + + // update node dims + if (!scratch.updatedDims) { + var padding = getOptVal(options.nodeSpacing, node); + + scratch.width = dimensions.w + 2 * padding; + scratch.height = dimensions.h + 2 * padding; + } + } + + nodes.positions(function (node) { + var scratch = node.scratch().cola; + var retPos = void 0; + + if (!node.grabbed() && nonparentNodes.contains(node)) { + retPos = { + x: bb.x1 + scratch.x, + y: bb.y1 + scratch.y + }; + + if (!isNumber(retPos.x) || !isNumber(retPos.y)) { + retPos = undefined; + } + } + + return retPos; + }); + + nodes.updateCompoundBounds(); // because the way this layout sets positions is buggy for some reason; ref #878 + + if (!ready) { + onReady(); + ready = true; + } + + if (options.fit) { + cy.fit(options.padding); + } + }; + + var onDone = function onDone() { + if (options.ungrabifyWhileSimulating) { + grabbableNodes.grabify(); + } + + cy.off('destroy', destroyHandler); + + nodes.off('grab free position', grabHandler); + nodes.off('lock unlock', lockHandler); + + // trigger layoutstop when the layout stops (e.g. finishes) + layout.one('layoutstop', options.stop); + layout.trigger({ type: 'layoutstop', layout: layout }); + }; + + var onReady = function onReady() { + // trigger layoutready when each node has had its position set at least once + layout.one('layoutready', options.ready); + layout.trigger({ type: 'layoutready', layout: layout }); + }; + + var ticksPerFrame = options.refresh; + + if (options.refresh < 0) { + ticksPerFrame = 1; + } else { + ticksPerFrame = Math.max(1, ticksPerFrame); // at least 1 + } + + var adaptor = layout.adaptor = cola.adaptor({ + trigger: function trigger(e) { + // on sim event + var TICK = cola.EventType ? cola.EventType.tick : null; + var END = cola.EventType ? cola.EventType.end : null; + + switch (e.type) { + case 'tick': + case TICK: + if (options.animate) { + updateNodePositions(); + } + break; + + case 'end': + case END: + updateNodePositions(); + if (!options.infinite) { + onDone(); + } + break; + } + }, + + kick: function kick() { + // kick off the simulation + //let skip = 0; + + var firstTick = true; + + var inftick = function inftick() { + if (layout.manuallyStopped) { + onDone(); + + return true; + } + + var ret = adaptor.tick(); + + if (!options.infinite && !firstTick) { + adaptor.convergenceThreshold(options.convergenceThreshold); + } + + firstTick = false; + + if (ret && options.infinite) { + // resume layout if done + adaptor.resume(); // resume => new kick + } + + return ret; // allow regular finish b/c of new kick + }; + + var multitick = function multitick() { + // multiple ticks in a row + var ret = void 0; + + for (var i = 0; i < ticksPerFrame && !ret; i++) { + ret = ret || inftick(); // pick up true ret vals => sim done + } + + return ret; + }; + + if (options.animate) { + var frame = function frame() { + if (multitick()) { + return; + } + + raf(frame); + }; + + raf(frame); + } else { + while (!inftick()) { + // keep going... + } + } + }, + + on: nop, // dummy; not needed + + drag: nop // not needed for our case + }); + layout.adaptor = adaptor; + + // if set no grabbing during layout + var grabbableNodes = nodes.filter(':grabbable'); + if (options.ungrabifyWhileSimulating) { + grabbableNodes.ungrabify(); + } + + var destroyHandler = void 0; + cy.one('destroy', destroyHandler = function destroyHandler() { + layout.stop(); + }); + + // handle node dragging + var grabHandler = void 0; + nodes.on('grab free position', grabHandler = function grabHandler(e) { + var node = this; + var scrCola = node.scratch().cola; + var pos = node.position(); + var nodeIsTarget = e.cyTarget === node || e.target === node; + + if (!nodeIsTarget) { + return; + } + + switch (e.type) { + case 'grab': + adaptor.dragstart(scrCola); + break; + case 'free': + adaptor.dragend(scrCola); + break; + case 'position': + // only update when different (i.e. manual .position() call or drag) so we don't loop needlessly + if (scrCola.px !== pos.x - bb.x1 || scrCola.py !== pos.y - bb.y1) { + scrCola.px = pos.x - bb.x1; + scrCola.py = pos.y - bb.y1; + } + break; + } + }); + + var lockHandler = void 0; + nodes.on('lock unlock', lockHandler = function lockHandler() { + var node = this; + var scrCola = node.scratch().cola; + + scrCola.fixed = node.locked(); + + if (node.locked()) { + adaptor.dragstart(scrCola); + } else { + adaptor.dragend(scrCola); + } + }); + + // add nodes to cola + adaptor.nodes(nonparentNodes.map(function (node, i) { + var padding = getOptVal(options.nodeSpacing, node); + var pos = node.position(); + var dimensions = node.layoutDimensions(options); + + var struct = node.scratch().cola = { + x: options.randomize && !node.locked() || pos.x === undefined ? Math.round(Math.random() * bb.w) : pos.x, + y: options.randomize && !node.locked() || pos.y === undefined ? Math.round(Math.random() * bb.h) : pos.y, + width: dimensions.w + 2 * padding, + height: dimensions.h + 2 * padding, + index: i, + fixed: node.locked() + }; + + return struct; + })); + + // the constraints to be added on nodes + var constraints = []; + + if (options.alignment) { + // then set alignment constraints + + if (options.alignment.vertical) { + var verticalAlignments = options.alignment.vertical; + verticalAlignments.forEach(function (alignment) { + var offsetsX = []; + alignment.forEach(function (nodeData) { + var node = nodeData.node; + var scrCola = node.scratch().cola; + var index = scrCola.index; + offsetsX.push({ + node: index, + offset: nodeData.offset ? nodeData.offset : 0 + }); + }); + constraints.push({ + type: 'alignment', + axis: 'x', + offsets: offsetsX + }); + }); + } + + if (options.alignment.horizontal) { + var horizontalAlignments = options.alignment.horizontal; + horizontalAlignments.forEach(function (alignment) { + var offsetsY = []; + alignment.forEach(function (nodeData) { + var node = nodeData.node; + var scrCola = node.scratch().cola; + var index = scrCola.index; + offsetsY.push({ + node: index, + offset: nodeData.offset ? nodeData.offset : 0 + }); + }); + constraints.push({ + type: 'alignment', + axis: 'y', + offsets: offsetsY + }); + }); + } + } + + // if gapInequalities variable is set add each inequality constraint to list of constraints + if (options.gapInequalities) { + options.gapInequalities.forEach(function (inequality) { + + // for the constraints to be passed to cola layout adaptor use indices of nodes, + // not the nodes themselves + var leftIndex = inequality.left.scratch().cola.index; + var rightIndex = inequality.right.scratch().cola.index; + + constraints.push({ + axis: inequality.axis, + left: leftIndex, + right: rightIndex, + gap: inequality.gap, + equality: inequality.equality + }); + }); + } + + // add constraints if any + if (constraints.length > 0) { + adaptor.constraints(constraints); + } + + // add compound nodes to cola + adaptor.groups(parentNodes.map(function (node, i) { + // add basic group incl leaf nodes + var optPadding = getOptVal(options.nodeSpacing, node); + var getPadding = function getPadding(d) { + return parseFloat(node.style('padding-' + d)); + }; + + var pleft = getPadding('left') + optPadding; + var pright = getPadding('right') + optPadding; + var ptop = getPadding('top') + optPadding; + var pbottom = getPadding('bottom') + optPadding; + + node.scratch().cola = { + index: i, + + padding: Math.max(pleft, pright, ptop, pbottom), + + // leaves should only contain direct descendants (children), + // not the leaves of nested compound nodes or any nodes that are compounds themselves + leaves: node.children().intersection(nonparentNodes).map(function (child) { + return child[0].scratch().cola.index; + }), + + fixed: node.locked() + }; + + return node; + }).map(function (node) { + // add subgroups + node.scratch().cola.groups = node.children().intersection(parentNodes).map(function (child) { + return child.scratch().cola.index; + }); + + return node.scratch().cola; + })); + + // get the edge length setting mechanism + var length = void 0; + var lengthFnName = void 0; + if (options.edgeLength != null) { + length = options.edgeLength; + lengthFnName = 'linkDistance'; + } else if (options.edgeSymDiffLength != null) { + length = options.edgeSymDiffLength; + lengthFnName = 'symmetricDiffLinkLengths'; + } else if (options.edgeJaccardLength != null) { + length = options.edgeJaccardLength; + lengthFnName = 'jaccardLinkLengths'; + } else { + length = 100; + lengthFnName = 'linkDistance'; + } + + var lengthGetter = function lengthGetter(link) { + return link.calcLength; + }; + + // add the edges to cola + adaptor.links(edges.stdFilter(function (edge) { + return nonparentNodes.contains(edge.source()) && nonparentNodes.contains(edge.target()); + }).map(function (edge) { + var c = edge.scratch().cola = { + source: edge.source()[0].scratch().cola.index, + target: edge.target()[0].scratch().cola.index + }; + + if (length != null) { + c.calcLength = getOptVal(length, edge); + } + + return c; + })); + + adaptor.size([bb.w, bb.h]); + + if (length != null) { + adaptor[lengthFnName](lengthGetter); + } + + // set the flow of cola + if (options.flow) { + var flow = void 0; + var defAxis = 'y'; + var defMinSep = 50; + + if (isString(options.flow)) { + flow = { + axis: options.flow, + minSeparation: defMinSep + }; + } else if (isNumber(options.flow)) { + flow = { + axis: defAxis, + minSeparation: options.flow + }; + } else if (isObject(options.flow)) { + flow = options.flow; + + flow.axis = flow.axis || defAxis; + flow.minSeparation = flow.minSeparation != null ? flow.minSeparation : defMinSep; + } else { + // e.g. options.flow: true + flow = { + axis: defAxis, + minSeparation: defMinSep + }; + } + + adaptor.flowLayout(flow.axis, flow.minSeparation); + } + + layout.trigger({ type: 'layoutstart', layout: layout }); + + adaptor.avoidOverlaps(options.avoidOverlap).handleDisconnected(options.handleDisconnected).start(options.unconstrIter, options.userConstIter, options.allConstIter, undefined, // gridSnapIterations = 0 + undefined, // keepRunning = true + options.centerGraph); + + if (!options.infinite) { + setTimeout(function () { + if (!layout.manuallyStopped) { + adaptor.stop(); + } + }, options.maxSimulationTime); + } + + return this; // chaining +}; + +// called on continuous layouts to stop them before they finish +ColaLayout.prototype.stop = function () { + if (this.adaptor) { + this.manuallyStopped = true; + this.adaptor.stop(); + } + + return this; // chaining +}; + +module.exports = ColaLayout; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +// Simple, internal Object.assign() polyfill for options objects etc. + +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.filter(function (src) { + return src != null; + }).forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + + return tgt; +}; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +// default layout options +var defaults = { + animate: true, // whether to show the layout as it's running + refresh: 1, // number of ticks per frame; higher is faster but more jerky + maxSimulationTime: 4000, // max length in ms to run the layout + ungrabifyWhileSimulating: false, // so you can't drag nodes during layout + fit: true, // on every layout reposition of nodes, fit the viewport + padding: 30, // padding around the simulation + boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + nodeDimensionsIncludeLabels: false, // whether labels should be included in determining the space used by a node + + // layout event callbacks + ready: function ready() {}, // on layoutready + stop: function stop() {}, // on layoutstop + + // positioning options + randomize: false, // use random node positions at beginning of layout + avoidOverlap: true, // if true, prevents overlap of node bounding boxes + handleDisconnected: true, // if true, avoids disconnected components from overlapping + convergenceThreshold: 0.01, // when the alpha value (system energy) falls below this value, the layout stops + nodeSpacing: function nodeSpacing(node) { + return 10; + }, // extra spacing around nodes + flow: undefined, // use DAG/tree flow layout if specified, e.g. { axis: 'y', minSeparation: 30 } + alignment: undefined, // relative alignment constraints on nodes, e.g. function( node ){ return { x: 0, y: 1 } } + gapInequalities: undefined, // list of inequality constraints for the gap between the nodes, e.g. [{"axis":"y", "left":node1, "right":node2, "gap":25}] + centerGraph: true, // adjusts the node positions initially to center the graph (pass false if you want to start the layout from the current position) + + + // different methods of specifying edge length + // each can be a constant numerical value or a function like `function( edge ){ return 2; }` + edgeLength: undefined, // sets edge length directly in simulation + edgeSymDiffLength: undefined, // symmetric diff edge length in simulation + edgeJaccardLength: undefined, // jaccard edge length in simulation + + // iterations of cola algorithm; uses default values on undefined + unconstrIter: undefined, // unconstrained initial layout iterations + userConstIter: undefined, // initial layout iterations with user-specified constraints + allConstIter: undefined, // initial layout iterations with all constraints including non-overlap + + // infinite layout options + infinite: false // overrides all other options for a forces-all-the-time mode +}; + +module.exports = defaults; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +var impl = __webpack_require__(0); + +// registers the extension on a cytoscape lib ref +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + cytoscape('layout', 'cola', impl); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var raf = void 0; + +if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== ( "undefined" )) { + raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) { + return setTimeout(fn, 16); + }; +} else { + // if not available, all you get is immediate calls + raf = function raf(cb) { + cb(); + }; +} + +module.exports = raf; + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_5__; + +/***/ }) +/******/ ]); +}); +}); + +var cola = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeCola); + +var layoutBase = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(); +})(commonjsGlobal, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 26); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + +function LayoutConstants() {} + +/** + * Layout Quality: 0:draft, 1:default, 2:proof + */ +LayoutConstants.QUALITY = 1; + +/** + * Default parameters + */ +LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false; +LayoutConstants.DEFAULT_INCREMENTAL = false; +LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true; +LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false; +LayoutConstants.DEFAULT_ANIMATION_PERIOD = 50; +LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false; + +// ----------------------------------------------------------------------------- +// Section: General other constants +// ----------------------------------------------------------------------------- +/* + * Margins of a graph to be applied on bouding rectangle of its contents. We + * assume margins on all four sides to be uniform. + */ +LayoutConstants.DEFAULT_GRAPH_MARGIN = 15; + +/* + * Whether to consider labels in node dimensions or not + */ +LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false; + +/* + * Default dimension of a non-compound node. + */ +LayoutConstants.SIMPLE_NODE_SIZE = 40; + +/* + * Default dimension of a non-compound node. + */ +LayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2; + +/* + * Empty compound node size. When a compound node is empty, its both + * dimensions should be of this value. + */ +LayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40; + +/* + * Minimum length that an edge should take during layout + */ +LayoutConstants.MIN_EDGE_LENGTH = 1; + +/* + * World boundaries that layout operates on + */ +LayoutConstants.WORLD_BOUNDARY = 1000000; + +/* + * World boundaries that random positioning can be performed with + */ +LayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000; + +/* + * Coordinates of the world center + */ +LayoutConstants.WORLD_CENTER_X = 1200; +LayoutConstants.WORLD_CENTER_Y = 900; + +module.exports = LayoutConstants; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LGraphObject = __webpack_require__(2); +var IGeometry = __webpack_require__(8); +var IMath = __webpack_require__(9); + +function LEdge(source, target, vEdge) { + LGraphObject.call(this, vEdge); + + this.isOverlapingSourceAndTarget = false; + this.vGraphObject = vEdge; + this.bendpoints = []; + this.source = source; + this.target = target; +} + +LEdge.prototype = Object.create(LGraphObject.prototype); + +for (var prop in LGraphObject) { + LEdge[prop] = LGraphObject[prop]; +} + +LEdge.prototype.getSource = function () { + return this.source; +}; + +LEdge.prototype.getTarget = function () { + return this.target; +}; + +LEdge.prototype.isInterGraph = function () { + return this.isInterGraph; +}; + +LEdge.prototype.getLength = function () { + return this.length; +}; + +LEdge.prototype.isOverlapingSourceAndTarget = function () { + return this.isOverlapingSourceAndTarget; +}; + +LEdge.prototype.getBendpoints = function () { + return this.bendpoints; +}; + +LEdge.prototype.getLca = function () { + return this.lca; +}; + +LEdge.prototype.getSourceInLca = function () { + return this.sourceInLca; +}; + +LEdge.prototype.getTargetInLca = function () { + return this.targetInLca; +}; + +LEdge.prototype.getOtherEnd = function (node) { + if (this.source === node) { + return this.target; + } else if (this.target === node) { + return this.source; + } else { + throw "Node is not incident with this edge"; + } +}; + +LEdge.prototype.getOtherEndInGraph = function (node, graph) { + var otherEnd = this.getOtherEnd(node); + var root = graph.getGraphManager().getRoot(); + + while (true) { + if (otherEnd.getOwner() == graph) { + return otherEnd; + } + + if (otherEnd.getOwner() == root) { + break; + } + + otherEnd = otherEnd.getOwner().getParent(); + } + + return null; +}; + +LEdge.prototype.updateLength = function () { + var clipPointCoordinates = new Array(4); + + this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates); + + if (!this.isOverlapingSourceAndTarget) { + this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2]; + this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3]; + + if (Math.abs(this.lengthX) < 1.0) { + this.lengthX = IMath.sign(this.lengthX); + } + + if (Math.abs(this.lengthY) < 1.0) { + this.lengthY = IMath.sign(this.lengthY); + } + + this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); + } +}; + +LEdge.prototype.updateLengthSimple = function () { + this.lengthX = this.target.getCenterX() - this.source.getCenterX(); + this.lengthY = this.target.getCenterY() - this.source.getCenterY(); + + if (Math.abs(this.lengthX) < 1.0) { + this.lengthX = IMath.sign(this.lengthX); + } + + if (Math.abs(this.lengthY) < 1.0) { + this.lengthY = IMath.sign(this.lengthY); + } + + this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); +}; + +module.exports = LEdge; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +function LGraphObject(vGraphObject) { + this.vGraphObject = vGraphObject; +} + +module.exports = LGraphObject; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LGraphObject = __webpack_require__(2); +var Integer = __webpack_require__(10); +var RectangleD = __webpack_require__(13); +var LayoutConstants = __webpack_require__(0); +var RandomSeed = __webpack_require__(16); +var PointD = __webpack_require__(4); + +function LNode(gm, loc, size, vNode) { + //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode) + if (size == null && vNode == null) { + vNode = loc; + } + + LGraphObject.call(this, vNode); + + //Alternative constructor 2 : LNode(Layout layout, Object vNode) + if (gm.graphManager != null) gm = gm.graphManager; + + this.estimatedSize = Integer.MIN_VALUE; + this.inclusionTreeDepth = Integer.MAX_VALUE; + this.vGraphObject = vNode; + this.edges = []; + this.graphManager = gm; + + if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD(); +} + +LNode.prototype = Object.create(LGraphObject.prototype); +for (var prop in LGraphObject) { + LNode[prop] = LGraphObject[prop]; +} + +LNode.prototype.getEdges = function () { + return this.edges; +}; + +LNode.prototype.getChild = function () { + return this.child; +}; + +LNode.prototype.getOwner = function () { + // if (this.owner != null) { + // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) { + // throw "assert failed"; + // } + // } + + return this.owner; +}; + +LNode.prototype.getWidth = function () { + return this.rect.width; +}; + +LNode.prototype.setWidth = function (width) { + this.rect.width = width; +}; + +LNode.prototype.getHeight = function () { + return this.rect.height; +}; + +LNode.prototype.setHeight = function (height) { + this.rect.height = height; +}; + +LNode.prototype.getCenterX = function () { + return this.rect.x + this.rect.width / 2; +}; + +LNode.prototype.getCenterY = function () { + return this.rect.y + this.rect.height / 2; +}; + +LNode.prototype.getCenter = function () { + return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2); +}; + +LNode.prototype.getLocation = function () { + return new PointD(this.rect.x, this.rect.y); +}; + +LNode.prototype.getRect = function () { + return this.rect; +}; + +LNode.prototype.getDiagonal = function () { + return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height); +}; + +/** + * This method returns half the diagonal length of this node. + */ +LNode.prototype.getHalfTheDiagonal = function () { + return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2; +}; + +LNode.prototype.setRect = function (upperLeft, dimension) { + this.rect.x = upperLeft.x; + this.rect.y = upperLeft.y; + this.rect.width = dimension.width; + this.rect.height = dimension.height; +}; + +LNode.prototype.setCenter = function (cx, cy) { + this.rect.x = cx - this.rect.width / 2; + this.rect.y = cy - this.rect.height / 2; +}; + +LNode.prototype.setLocation = function (x, y) { + this.rect.x = x; + this.rect.y = y; +}; + +LNode.prototype.moveBy = function (dx, dy) { + this.rect.x += dx; + this.rect.y += dy; +}; + +LNode.prototype.getEdgeListToNode = function (to) { + var edgeList = []; + var self = this; + + self.edges.forEach(function (edge) { + + if (edge.target == to) { + if (edge.source != self) throw "Incorrect edge source!"; + + edgeList.push(edge); + } + }); + + return edgeList; +}; + +LNode.prototype.getEdgesBetween = function (other) { + var edgeList = []; + + var self = this; + self.edges.forEach(function (edge) { + + if (!(edge.source == self || edge.target == self)) throw "Incorrect edge source and/or target"; + + if (edge.target == other || edge.source == other) { + edgeList.push(edge); + } + }); + + return edgeList; +}; + +LNode.prototype.getNeighborsList = function () { + var neighbors = new Set(); + + var self = this; + self.edges.forEach(function (edge) { + + if (edge.source == self) { + neighbors.add(edge.target); + } else { + if (edge.target != self) { + throw "Incorrect incidency!"; + } + + neighbors.add(edge.source); + } + }); + + return neighbors; +}; + +LNode.prototype.withChildren = function () { + var withNeighborsList = new Set(); + var childNode; + var children; + + withNeighborsList.add(this); + + if (this.child != null) { + var nodes = this.child.getNodes(); + for (var i = 0; i < nodes.length; i++) { + childNode = nodes[i]; + children = childNode.withChildren(); + children.forEach(function (node) { + withNeighborsList.add(node); + }); + } + } + + return withNeighborsList; +}; + +LNode.prototype.getNoOfChildren = function () { + var noOfChildren = 0; + var childNode; + + if (this.child == null) { + noOfChildren = 1; + } else { + var nodes = this.child.getNodes(); + for (var i = 0; i < nodes.length; i++) { + childNode = nodes[i]; + + noOfChildren += childNode.getNoOfChildren(); + } + } + + if (noOfChildren == 0) { + noOfChildren = 1; + } + return noOfChildren; +}; + +LNode.prototype.getEstimatedSize = function () { + if (this.estimatedSize == Integer.MIN_VALUE) { + throw "assert failed"; + } + return this.estimatedSize; +}; + +LNode.prototype.calcEstimatedSize = function () { + if (this.child == null) { + return this.estimatedSize = (this.rect.width + this.rect.height) / 2; + } else { + this.estimatedSize = this.child.calcEstimatedSize(); + this.rect.width = this.estimatedSize; + this.rect.height = this.estimatedSize; + + return this.estimatedSize; + } +}; + +LNode.prototype.scatter = function () { + var randomCenterX; + var randomCenterY; + + var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY; + var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY; + randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX; + + var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY; + var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY; + randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY; + + this.rect.x = randomCenterX; + this.rect.y = randomCenterY; +}; + +LNode.prototype.updateBounds = function () { + if (this.getChild() == null) { + throw "assert failed"; + } + if (this.getChild().getNodes().length != 0) { + // wrap the children nodes by re-arranging the boundaries + var childGraph = this.getChild(); + childGraph.updateBounds(true); + + this.rect.x = childGraph.getLeft(); + this.rect.y = childGraph.getTop(); + + this.setWidth(childGraph.getRight() - childGraph.getLeft()); + this.setHeight(childGraph.getBottom() - childGraph.getTop()); + + // Update compound bounds considering its label properties + if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { + + var width = childGraph.getRight() - childGraph.getLeft(); + var height = childGraph.getBottom() - childGraph.getTop(); + + if (this.labelWidth > width) { + this.rect.x -= (this.labelWidth - width) / 2; + this.setWidth(this.labelWidth); + } + + if (this.labelHeight > height) { + if (this.labelPos == "center") { + this.rect.y -= (this.labelHeight - height) / 2; + } else if (this.labelPos == "top") { + this.rect.y -= this.labelHeight - height; + } + this.setHeight(this.labelHeight); + } + } + } +}; + +LNode.prototype.getInclusionTreeDepth = function () { + if (this.inclusionTreeDepth == Integer.MAX_VALUE) { + throw "assert failed"; + } + return this.inclusionTreeDepth; +}; + +LNode.prototype.transform = function (trans) { + var left = this.rect.x; + + if (left > LayoutConstants.WORLD_BOUNDARY) { + left = LayoutConstants.WORLD_BOUNDARY; + } else if (left < -LayoutConstants.WORLD_BOUNDARY) { + left = -LayoutConstants.WORLD_BOUNDARY; + } + + var top = this.rect.y; + + if (top > LayoutConstants.WORLD_BOUNDARY) { + top = LayoutConstants.WORLD_BOUNDARY; + } else if (top < -LayoutConstants.WORLD_BOUNDARY) { + top = -LayoutConstants.WORLD_BOUNDARY; + } + + var leftTop = new PointD(left, top); + var vLeftTop = trans.inverseTransformPoint(leftTop); + + this.setLocation(vLeftTop.x, vLeftTop.y); +}; + +LNode.prototype.getLeft = function () { + return this.rect.x; +}; + +LNode.prototype.getRight = function () { + return this.rect.x + this.rect.width; +}; + +LNode.prototype.getTop = function () { + return this.rect.y; +}; + +LNode.prototype.getBottom = function () { + return this.rect.y + this.rect.height; +}; + +LNode.prototype.getParent = function () { + if (this.owner == null) { + return null; + } + + return this.owner.getParent(); +}; + +module.exports = LNode; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + +function PointD(x, y) { + if (x == null && y == null) { + this.x = 0; + this.y = 0; + } else { + this.x = x; + this.y = y; + } +} + +PointD.prototype.getX = function () { + return this.x; +}; + +PointD.prototype.getY = function () { + return this.y; +}; + +PointD.prototype.setX = function (x) { + this.x = x; +}; + +PointD.prototype.setY = function (y) { + this.y = y; +}; + +PointD.prototype.getDifference = function (pt) { + return new DimensionD(this.x - pt.x, this.y - pt.y); +}; + +PointD.prototype.getCopy = function () { + return new PointD(this.x, this.y); +}; + +PointD.prototype.translate = function (dim) { + this.x += dim.width; + this.y += dim.height; + return this; +}; + +module.exports = PointD; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LGraphObject = __webpack_require__(2); +var Integer = __webpack_require__(10); +var LayoutConstants = __webpack_require__(0); +var LGraphManager = __webpack_require__(6); +var LNode = __webpack_require__(3); +var LEdge = __webpack_require__(1); +var RectangleD = __webpack_require__(13); +var Point = __webpack_require__(12); +var LinkedList = __webpack_require__(11); + +function LGraph(parent, obj2, vGraph) { + LGraphObject.call(this, vGraph); + this.estimatedSize = Integer.MIN_VALUE; + this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN; + this.edges = []; + this.nodes = []; + this.isConnected = false; + this.parent = parent; + + if (obj2 != null && obj2 instanceof LGraphManager) { + this.graphManager = obj2; + } else if (obj2 != null && obj2 instanceof Layout) { + this.graphManager = obj2.graphManager; + } +} + +LGraph.prototype = Object.create(LGraphObject.prototype); +for (var prop in LGraphObject) { + LGraph[prop] = LGraphObject[prop]; +} + +LGraph.prototype.getNodes = function () { + return this.nodes; +}; + +LGraph.prototype.getEdges = function () { + return this.edges; +}; + +LGraph.prototype.getGraphManager = function () { + return this.graphManager; +}; + +LGraph.prototype.getParent = function () { + return this.parent; +}; + +LGraph.prototype.getLeft = function () { + return this.left; +}; + +LGraph.prototype.getRight = function () { + return this.right; +}; + +LGraph.prototype.getTop = function () { + return this.top; +}; + +LGraph.prototype.getBottom = function () { + return this.bottom; +}; + +LGraph.prototype.isConnected = function () { + return this.isConnected; +}; + +LGraph.prototype.add = function (obj1, sourceNode, targetNode) { + if (sourceNode == null && targetNode == null) { + var newNode = obj1; + if (this.graphManager == null) { + throw "Graph has no graph mgr!"; + } + if (this.getNodes().indexOf(newNode) > -1) { + throw "Node already in graph!"; + } + newNode.owner = this; + this.getNodes().push(newNode); + + return newNode; + } else { + var newEdge = obj1; + if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) { + throw "Source or target not in graph!"; + } + + if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) { + throw "Both owners must be this graph!"; + } + + if (sourceNode.owner != targetNode.owner) { + return null; + } + + // set source and target + newEdge.source = sourceNode; + newEdge.target = targetNode; + + // set as intra-graph edge + newEdge.isInterGraph = false; + + // add to graph edge list + this.getEdges().push(newEdge); + + // add to incidency lists + sourceNode.edges.push(newEdge); + + if (targetNode != sourceNode) { + targetNode.edges.push(newEdge); + } + + return newEdge; + } +}; + +LGraph.prototype.remove = function (obj) { + var node = obj; + if (obj instanceof LNode) { + if (node == null) { + throw "Node is null!"; + } + if (!(node.owner != null && node.owner == this)) { + throw "Owner graph is invalid!"; + } + if (this.graphManager == null) { + throw "Owner graph manager is invalid!"; + } + // remove incident edges first (make a copy to do it safely) + var edgesToBeRemoved = node.edges.slice(); + var edge; + var s = edgesToBeRemoved.length; + for (var i = 0; i < s; i++) { + edge = edgesToBeRemoved[i]; + + if (edge.isInterGraph) { + this.graphManager.remove(edge); + } else { + edge.source.owner.remove(edge); + } + } + + // now the node itself + var index = this.nodes.indexOf(node); + if (index == -1) { + throw "Node not in owner node list!"; + } + + this.nodes.splice(index, 1); + } else if (obj instanceof LEdge) { + var edge = obj; + if (edge == null) { + throw "Edge is null!"; + } + if (!(edge.source != null && edge.target != null)) { + throw "Source and/or target is null!"; + } + if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) { + throw "Source and/or target owner is invalid!"; + } + + var sourceIndex = edge.source.edges.indexOf(edge); + var targetIndex = edge.target.edges.indexOf(edge); + if (!(sourceIndex > -1 && targetIndex > -1)) { + throw "Source and/or target doesn't know this edge!"; + } + + edge.source.edges.splice(sourceIndex, 1); + + if (edge.target != edge.source) { + edge.target.edges.splice(targetIndex, 1); + } + + var index = edge.source.owner.getEdges().indexOf(edge); + if (index == -1) { + throw "Not in owner's edge list!"; + } + + edge.source.owner.getEdges().splice(index, 1); + } +}; + +LGraph.prototype.updateLeftTop = function () { + var top = Integer.MAX_VALUE; + var left = Integer.MAX_VALUE; + var nodeTop; + var nodeLeft; + var margin; + + var nodes = this.getNodes(); + var s = nodes.length; + + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + nodeTop = lNode.getTop(); + nodeLeft = lNode.getLeft(); + + if (top > nodeTop) { + top = nodeTop; + } + + if (left > nodeLeft) { + left = nodeLeft; + } + } + + // Do we have any nodes in this graph? + if (top == Integer.MAX_VALUE) { + return null; + } + + if (nodes[0].getParent().paddingLeft != undefined) { + margin = nodes[0].getParent().paddingLeft; + } else { + margin = this.margin; + } + + this.left = left - margin; + this.top = top - margin; + + // Apply the margins and return the result + return new Point(this.left, this.top); +}; + +LGraph.prototype.updateBounds = function (recursive) { + // calculate bounds + var left = Integer.MAX_VALUE; + var right = -Integer.MAX_VALUE; + var top = Integer.MAX_VALUE; + var bottom = -Integer.MAX_VALUE; + var nodeLeft; + var nodeRight; + var nodeTop; + var nodeBottom; + var margin; + + var nodes = this.nodes; + var s = nodes.length; + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + + if (recursive && lNode.child != null) { + lNode.updateBounds(); + } + nodeLeft = lNode.getLeft(); + nodeRight = lNode.getRight(); + nodeTop = lNode.getTop(); + nodeBottom = lNode.getBottom(); + + if (left > nodeLeft) { + left = nodeLeft; + } + + if (right < nodeRight) { + right = nodeRight; + } + + if (top > nodeTop) { + top = nodeTop; + } + + if (bottom < nodeBottom) { + bottom = nodeBottom; + } + } + + var boundingRect = new RectangleD(left, top, right - left, bottom - top); + if (left == Integer.MAX_VALUE) { + this.left = this.parent.getLeft(); + this.right = this.parent.getRight(); + this.top = this.parent.getTop(); + this.bottom = this.parent.getBottom(); + } + + if (nodes[0].getParent().paddingLeft != undefined) { + margin = nodes[0].getParent().paddingLeft; + } else { + margin = this.margin; + } + + this.left = boundingRect.x - margin; + this.right = boundingRect.x + boundingRect.width + margin; + this.top = boundingRect.y - margin; + this.bottom = boundingRect.y + boundingRect.height + margin; +}; + +LGraph.calculateBounds = function (nodes) { + var left = Integer.MAX_VALUE; + var right = -Integer.MAX_VALUE; + var top = Integer.MAX_VALUE; + var bottom = -Integer.MAX_VALUE; + var nodeLeft; + var nodeRight; + var nodeTop; + var nodeBottom; + + var s = nodes.length; + + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + nodeLeft = lNode.getLeft(); + nodeRight = lNode.getRight(); + nodeTop = lNode.getTop(); + nodeBottom = lNode.getBottom(); + + if (left > nodeLeft) { + left = nodeLeft; + } + + if (right < nodeRight) { + right = nodeRight; + } + + if (top > nodeTop) { + top = nodeTop; + } + + if (bottom < nodeBottom) { + bottom = nodeBottom; + } + } + + var boundingRect = new RectangleD(left, top, right - left, bottom - top); + + return boundingRect; +}; + +LGraph.prototype.getInclusionTreeDepth = function () { + if (this == this.graphManager.getRoot()) { + return 1; + } else { + return this.parent.getInclusionTreeDepth(); + } +}; + +LGraph.prototype.getEstimatedSize = function () { + if (this.estimatedSize == Integer.MIN_VALUE) { + throw "assert failed"; + } + return this.estimatedSize; +}; + +LGraph.prototype.calcEstimatedSize = function () { + var size = 0; + var nodes = this.nodes; + var s = nodes.length; + + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + size += lNode.calcEstimatedSize(); + } + + if (size == 0) { + this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE; + } else { + this.estimatedSize = size / Math.sqrt(this.nodes.length); + } + + return this.estimatedSize; +}; + +LGraph.prototype.updateConnected = function () { + var self = this; + if (this.nodes.length == 0) { + this.isConnected = true; + return; + } + + var queue = new LinkedList(); + var visited = new Set(); + var currentNode = this.nodes[0]; + var neighborEdges; + var currentNeighbor; + var childrenOfNode = currentNode.withChildren(); + childrenOfNode.forEach(function (node) { + queue.push(node); + visited.add(node); + }); + + while (queue.length !== 0) { + currentNode = queue.shift(); + + // Traverse all neighbors of this node + neighborEdges = currentNode.getEdges(); + var size = neighborEdges.length; + for (var i = 0; i < size; i++) { + var neighborEdge = neighborEdges[i]; + currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this); + + // Add unvisited neighbors to the list to visit + if (currentNeighbor != null && !visited.has(currentNeighbor)) { + var childrenOfNeighbor = currentNeighbor.withChildren(); + + childrenOfNeighbor.forEach(function (node) { + queue.push(node); + visited.add(node); + }); + } + } + } + + this.isConnected = false; + + if (visited.size >= this.nodes.length) { + var noOfVisitedInThisGraph = 0; + + visited.forEach(function (visitedNode) { + if (visitedNode.owner == self) { + noOfVisitedInThisGraph++; + } + }); + + if (noOfVisitedInThisGraph == this.nodes.length) { + this.isConnected = true; + } + } +}; + +module.exports = LGraph; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LGraph; +var LEdge = __webpack_require__(1); + +function LGraphManager(layout) { + LGraph = __webpack_require__(5); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now. + this.layout = layout; + + this.graphs = []; + this.edges = []; +} + +LGraphManager.prototype.addRoot = function () { + var ngraph = this.layout.newGraph(); + var nnode = this.layout.newNode(null); + var root = this.add(ngraph, nnode); + this.setRootGraph(root); + return this.rootGraph; +}; + +LGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) { + //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge + if (newEdge == null && sourceNode == null && targetNode == null) { + if (newGraph == null) { + throw "Graph is null!"; + } + if (parentNode == null) { + throw "Parent node is null!"; + } + if (this.graphs.indexOf(newGraph) > -1) { + throw "Graph already in this graph mgr!"; + } + + this.graphs.push(newGraph); + + if (newGraph.parent != null) { + throw "Already has a parent!"; + } + if (parentNode.child != null) { + throw "Already has a child!"; + } + + newGraph.parent = parentNode; + parentNode.child = newGraph; + + return newGraph; + } else { + //change the order of the parameters + targetNode = newEdge; + sourceNode = parentNode; + newEdge = newGraph; + var sourceGraph = sourceNode.getOwner(); + var targetGraph = targetNode.getOwner(); + + if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) { + throw "Source not in this graph mgr!"; + } + if (!(targetGraph != null && targetGraph.getGraphManager() == this)) { + throw "Target not in this graph mgr!"; + } + + if (sourceGraph == targetGraph) { + newEdge.isInterGraph = false; + return sourceGraph.add(newEdge, sourceNode, targetNode); + } else { + newEdge.isInterGraph = true; + + // set source and target + newEdge.source = sourceNode; + newEdge.target = targetNode; + + // add edge to inter-graph edge list + if (this.edges.indexOf(newEdge) > -1) { + throw "Edge already in inter-graph edge list!"; + } + + this.edges.push(newEdge); + + // add edge to source and target incidency lists + if (!(newEdge.source != null && newEdge.target != null)) { + throw "Edge source and/or target is null!"; + } + + if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) { + throw "Edge already in source and/or target incidency list!"; + } + + newEdge.source.edges.push(newEdge); + newEdge.target.edges.push(newEdge); + + return newEdge; + } + } +}; + +LGraphManager.prototype.remove = function (lObj) { + if (lObj instanceof LGraph) { + var graph = lObj; + if (graph.getGraphManager() != this) { + throw "Graph not in this graph mgr"; + } + if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) { + throw "Invalid parent node!"; + } + + // first the edges (make a copy to do it safely) + var edgesToBeRemoved = []; + + edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges()); + + var edge; + var s = edgesToBeRemoved.length; + for (var i = 0; i < s; i++) { + edge = edgesToBeRemoved[i]; + graph.remove(edge); + } + + // then the nodes (make a copy to do it safely) + var nodesToBeRemoved = []; + + nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes()); + + var node; + s = nodesToBeRemoved.length; + for (var i = 0; i < s; i++) { + node = nodesToBeRemoved[i]; + graph.remove(node); + } + + // check if graph is the root + if (graph == this.rootGraph) { + this.setRootGraph(null); + } + + // now remove the graph itself + var index = this.graphs.indexOf(graph); + this.graphs.splice(index, 1); + + // also reset the parent of the graph + graph.parent = null; + } else if (lObj instanceof LEdge) { + edge = lObj; + if (edge == null) { + throw "Edge is null!"; + } + if (!edge.isInterGraph) { + throw "Not an inter-graph edge!"; + } + if (!(edge.source != null && edge.target != null)) { + throw "Source and/or target is null!"; + } + + // remove edge from source and target nodes' incidency lists + + if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) { + throw "Source and/or target doesn't know this edge!"; + } + + var index = edge.source.edges.indexOf(edge); + edge.source.edges.splice(index, 1); + index = edge.target.edges.indexOf(edge); + edge.target.edges.splice(index, 1); + + // remove edge from owner graph manager's inter-graph edge list + + if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) { + throw "Edge owner graph or owner graph manager is null!"; + } + if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) { + throw "Not in owner graph manager's edge list!"; + } + + var index = edge.source.owner.getGraphManager().edges.indexOf(edge); + edge.source.owner.getGraphManager().edges.splice(index, 1); + } +}; + +LGraphManager.prototype.updateBounds = function () { + this.rootGraph.updateBounds(true); +}; + +LGraphManager.prototype.getGraphs = function () { + return this.graphs; +}; + +LGraphManager.prototype.getAllNodes = function () { + if (this.allNodes == null) { + var nodeList = []; + var graphs = this.getGraphs(); + var s = graphs.length; + for (var i = 0; i < s; i++) { + nodeList = nodeList.concat(graphs[i].getNodes()); + } + this.allNodes = nodeList; + } + return this.allNodes; +}; + +LGraphManager.prototype.resetAllNodes = function () { + this.allNodes = null; +}; + +LGraphManager.prototype.resetAllEdges = function () { + this.allEdges = null; +}; + +LGraphManager.prototype.resetAllNodesToApplyGravitation = function () { + this.allNodesToApplyGravitation = null; +}; + +LGraphManager.prototype.getAllEdges = function () { + if (this.allEdges == null) { + var edgeList = []; + var graphs = this.getGraphs(); + graphs.length; + for (var i = 0; i < graphs.length; i++) { + edgeList = edgeList.concat(graphs[i].getEdges()); + } + + edgeList = edgeList.concat(this.edges); + + this.allEdges = edgeList; + } + return this.allEdges; +}; + +LGraphManager.prototype.getAllNodesToApplyGravitation = function () { + return this.allNodesToApplyGravitation; +}; + +LGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) { + if (this.allNodesToApplyGravitation != null) { + throw "assert failed"; + } + + this.allNodesToApplyGravitation = nodeList; +}; + +LGraphManager.prototype.getRoot = function () { + return this.rootGraph; +}; + +LGraphManager.prototype.setRootGraph = function (graph) { + if (graph.getGraphManager() != this) { + throw "Root not in this graph mgr!"; + } + + this.rootGraph = graph; + // root graph must have a root node associated with it for convenience + if (graph.parent == null) { + graph.parent = this.layout.newNode("Root node"); + } +}; + +LGraphManager.prototype.getLayout = function () { + return this.layout; +}; + +LGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) { + if (!(firstNode != null && secondNode != null)) { + throw "assert failed"; + } + + if (firstNode == secondNode) { + return true; + } + // Is second node an ancestor of the first one? + var ownerGraph = firstNode.getOwner(); + var parentNode; + + do { + parentNode = ownerGraph.getParent(); + + if (parentNode == null) { + break; + } + + if (parentNode == secondNode) { + return true; + } + + ownerGraph = parentNode.getOwner(); + if (ownerGraph == null) { + break; + } + } while (true); + // Is first node an ancestor of the second one? + ownerGraph = secondNode.getOwner(); + + do { + parentNode = ownerGraph.getParent(); + + if (parentNode == null) { + break; + } + + if (parentNode == firstNode) { + return true; + } + + ownerGraph = parentNode.getOwner(); + if (ownerGraph == null) { + break; + } + } while (true); + + return false; +}; + +LGraphManager.prototype.calcLowestCommonAncestors = function () { + var edge; + var sourceNode; + var targetNode; + var sourceAncestorGraph; + var targetAncestorGraph; + + var edges = this.getAllEdges(); + var s = edges.length; + for (var i = 0; i < s; i++) { + edge = edges[i]; + + sourceNode = edge.source; + targetNode = edge.target; + edge.lca = null; + edge.sourceInLca = sourceNode; + edge.targetInLca = targetNode; + + if (sourceNode == targetNode) { + edge.lca = sourceNode.getOwner(); + continue; + } + + sourceAncestorGraph = sourceNode.getOwner(); + + while (edge.lca == null) { + edge.targetInLca = targetNode; + targetAncestorGraph = targetNode.getOwner(); + + while (edge.lca == null) { + if (targetAncestorGraph == sourceAncestorGraph) { + edge.lca = targetAncestorGraph; + break; + } + + if (targetAncestorGraph == this.rootGraph) { + break; + } + + if (edge.lca != null) { + throw "assert failed"; + } + edge.targetInLca = targetAncestorGraph.getParent(); + targetAncestorGraph = edge.targetInLca.getOwner(); + } + + if (sourceAncestorGraph == this.rootGraph) { + break; + } + + if (edge.lca == null) { + edge.sourceInLca = sourceAncestorGraph.getParent(); + sourceAncestorGraph = edge.sourceInLca.getOwner(); + } + } + + if (edge.lca == null) { + throw "assert failed"; + } + } +}; + +LGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) { + if (firstNode == secondNode) { + return firstNode.getOwner(); + } + var firstOwnerGraph = firstNode.getOwner(); + + do { + if (firstOwnerGraph == null) { + break; + } + var secondOwnerGraph = secondNode.getOwner(); + + do { + if (secondOwnerGraph == null) { + break; + } + + if (secondOwnerGraph == firstOwnerGraph) { + return secondOwnerGraph; + } + secondOwnerGraph = secondOwnerGraph.getParent().getOwner(); + } while (true); + + firstOwnerGraph = firstOwnerGraph.getParent().getOwner(); + } while (true); + + return firstOwnerGraph; +}; + +LGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) { + if (graph == null && depth == null) { + graph = this.rootGraph; + depth = 1; + } + var node; + + var nodes = graph.getNodes(); + var s = nodes.length; + for (var i = 0; i < s; i++) { + node = nodes[i]; + node.inclusionTreeDepth = depth; + + if (node.child != null) { + this.calcInclusionTreeDepths(node.child, depth + 1); + } + } +}; + +LGraphManager.prototype.includesInvalidEdge = function () { + var edge; + + var s = this.edges.length; + for (var i = 0; i < s; i++) { + edge = this.edges[i]; + + if (this.isOneAncestorOfOther(edge.source, edge.target)) { + return true; + } + } + return false; +}; + +module.exports = LGraphManager; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LayoutConstants = __webpack_require__(0); + +function FDLayoutConstants() {} + +//FDLayoutConstants inherits static props in LayoutConstants +for (var prop in LayoutConstants) { + FDLayoutConstants[prop] = LayoutConstants[prop]; +} + +FDLayoutConstants.MAX_ITERATIONS = 2500; + +FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; +FDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45; +FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0; +FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4; +FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0; +FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8; +FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5; +FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true; +FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true; +FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3; +FDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33; +FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000; +FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000; +FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0; +FDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3; +FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0; +FDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100; +FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1; +FDLayoutConstants.MIN_EDGE_LENGTH = 1; +FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10; + +module.exports = FDLayoutConstants; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This class maintains a list of static geometry related utility methods. + * + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var Point = __webpack_require__(12); + +function IGeometry() {} + +/** + * This method calculates *half* the amount in x and y directions of the two + * input rectangles needed to separate them keeping their respective + * positioning, and returns the result in the input array. An input + * separation buffer added to the amount in both directions. We assume that + * the two rectangles do intersect. + */ +IGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) { + if (!rectA.intersects(rectB)) { + throw "assert failed"; + } + + var directions = new Array(2); + + this.decideDirectionsForOverlappingNodes(rectA, rectB, directions); + + overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x); + overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y); + + // update the overlapping amounts for the following cases: + if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) { + /* Case x.1: + * + * rectA + * | | + * | _________ | + * | | | | + * |________|_______|______| + * | | + * | | + * rectB + */ + overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight()); + } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) { + /* Case x.2: + * + * rectB + * | | + * | _________ | + * | | | | + * |________|_______|______| + * | | + * | | + * rectA + */ + overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight()); + } + if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) { + /* Case y.1: + * ________ rectA + * | + * | + * ______|____ rectB + * | | + * | | + * ______|____| + * | + * | + * |________ + * + */ + overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom()); + } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) { + /* Case y.2: + * ________ rectB + * | + * | + * ______|____ rectA + * | | + * | | + * ______|____| + * | + * | + * |________ + * + */ + overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom()); + } + + // find slope of the line passes two centers + var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX())); + // if centers are overlapped + if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) { + // assume the slope is 1 (45 degree) + slope = 1.0; + } + + var moveByY = slope * overlapAmount[0]; + var moveByX = overlapAmount[1] / slope; + if (overlapAmount[0] < moveByX) { + moveByX = overlapAmount[0]; + } else { + moveByY = overlapAmount[1]; + } + // return half the amount so that if each rectangle is moved by these + // amounts in opposite directions, overlap will be resolved + overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer); + overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer); +}; + +/** + * This method decides the separation direction of overlapping nodes + * + * if directions[0] = -1, then rectA goes left + * if directions[0] = 1, then rectA goes right + * if directions[1] = -1, then rectA goes up + * if directions[1] = 1, then rectA goes down + */ +IGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) { + if (rectA.getCenterX() < rectB.getCenterX()) { + directions[0] = -1; + } else { + directions[0] = 1; + } + + if (rectA.getCenterY() < rectB.getCenterY()) { + directions[1] = -1; + } else { + directions[1] = 1; + } +}; + +/** + * This method calculates the intersection (clipping) points of the two + * input rectangles with line segment defined by the centers of these two + * rectangles. The clipping points are saved in the input double array and + * whether or not the two rectangles overlap is returned. + */ +IGeometry.getIntersection2 = function (rectA, rectB, result) { + //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB + var p1x = rectA.getCenterX(); + var p1y = rectA.getCenterY(); + var p2x = rectB.getCenterX(); + var p2y = rectB.getCenterY(); + + //if two rectangles intersect, then clipping points are centers + if (rectA.intersects(rectB)) { + result[0] = p1x; + result[1] = p1y; + result[2] = p2x; + result[3] = p2y; + return true; + } + //variables for rectA + var topLeftAx = rectA.getX(); + var topLeftAy = rectA.getY(); + var topRightAx = rectA.getRight(); + var bottomLeftAx = rectA.getX(); + var bottomLeftAy = rectA.getBottom(); + var bottomRightAx = rectA.getRight(); + var halfWidthA = rectA.getWidthHalf(); + var halfHeightA = rectA.getHeightHalf(); + //variables for rectB + var topLeftBx = rectB.getX(); + var topLeftBy = rectB.getY(); + var topRightBx = rectB.getRight(); + var bottomLeftBx = rectB.getX(); + var bottomLeftBy = rectB.getBottom(); + var bottomRightBx = rectB.getRight(); + var halfWidthB = rectB.getWidthHalf(); + var halfHeightB = rectB.getHeightHalf(); + + //flag whether clipping points are found + var clipPointAFound = false; + var clipPointBFound = false; + + // line is vertical + if (p1x === p2x) { + if (p1y > p2y) { + result[0] = p1x; + result[1] = topLeftAy; + result[2] = p2x; + result[3] = bottomLeftBy; + return false; + } else if (p1y < p2y) { + result[0] = p1x; + result[1] = bottomLeftAy; + result[2] = p2x; + result[3] = topLeftBy; + return false; + } else ; + } + // line is horizontal + else if (p1y === p2y) { + if (p1x > p2x) { + result[0] = topLeftAx; + result[1] = p1y; + result[2] = topRightBx; + result[3] = p2y; + return false; + } else if (p1x < p2x) { + result[0] = topRightAx; + result[1] = p1y; + result[2] = topLeftBx; + result[3] = p2y; + return false; + } else ; + } else { + //slopes of rectA's and rectB's diagonals + var slopeA = rectA.height / rectA.width; + var slopeB = rectB.height / rectB.width; + + //slope of line between center of rectA and center of rectB + var slopePrime = (p2y - p1y) / (p2x - p1x); + var cardinalDirectionA = void 0; + var cardinalDirectionB = void 0; + var tempPointAx = void 0; + var tempPointAy = void 0; + var tempPointBx = void 0; + var tempPointBy = void 0; + + //determine whether clipping point is the corner of nodeA + if (-slopeA === slopePrime) { + if (p1x > p2x) { + result[0] = bottomLeftAx; + result[1] = bottomLeftAy; + clipPointAFound = true; + } else { + result[0] = topRightAx; + result[1] = topLeftAy; + clipPointAFound = true; + } + } else if (slopeA === slopePrime) { + if (p1x > p2x) { + result[0] = topLeftAx; + result[1] = topLeftAy; + clipPointAFound = true; + } else { + result[0] = bottomRightAx; + result[1] = bottomLeftAy; + clipPointAFound = true; + } + } + + //determine whether clipping point is the corner of nodeB + if (-slopeB === slopePrime) { + if (p2x > p1x) { + result[2] = bottomLeftBx; + result[3] = bottomLeftBy; + clipPointBFound = true; + } else { + result[2] = topRightBx; + result[3] = topLeftBy; + clipPointBFound = true; + } + } else if (slopeB === slopePrime) { + if (p2x > p1x) { + result[2] = topLeftBx; + result[3] = topLeftBy; + clipPointBFound = true; + } else { + result[2] = bottomRightBx; + result[3] = bottomLeftBy; + clipPointBFound = true; + } + } + + //if both clipping points are corners + if (clipPointAFound && clipPointBFound) { + return false; + } + + //determine Cardinal Direction of rectangles + if (p1x > p2x) { + if (p1y > p2y) { + cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4); + cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2); + } else { + cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3); + cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1); + } + } else { + if (p1y > p2y) { + cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1); + cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3); + } else { + cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2); + cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4); + } + } + //calculate clipping Point if it is not found before + if (!clipPointAFound) { + switch (cardinalDirectionA) { + case 1: + tempPointAy = topLeftAy; + tempPointAx = p1x + -halfHeightA / slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 2: + tempPointAx = bottomRightAx; + tempPointAy = p1y + halfWidthA * slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 3: + tempPointAy = bottomLeftAy; + tempPointAx = p1x + halfHeightA / slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 4: + tempPointAx = bottomLeftAx; + tempPointAy = p1y + -halfWidthA * slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + } + } + if (!clipPointBFound) { + switch (cardinalDirectionB) { + case 1: + tempPointBy = topLeftBy; + tempPointBx = p2x + -halfHeightB / slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 2: + tempPointBx = bottomRightBx; + tempPointBy = p2y + halfWidthB * slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 3: + tempPointBy = bottomLeftBy; + tempPointBx = p2x + halfHeightB / slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 4: + tempPointBx = bottomLeftBx; + tempPointBy = p2y + -halfWidthB * slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + } + } + } + return false; +}; + +/** + * This method returns in which cardinal direction does input point stays + * 1: North + * 2: East + * 3: South + * 4: West + */ +IGeometry.getCardinalDirection = function (slope, slopePrime, line) { + if (slope > slopePrime) { + return line; + } else { + return 1 + line % 4; + } +}; + +/** + * This method calculates the intersection of the two lines defined by + * point pairs (s1,s2) and (f1,f2). + */ +IGeometry.getIntersection = function (s1, s2, f1, f2) { + if (f2 == null) { + return this.getIntersection2(s1, s2, f1); + } + + var x1 = s1.x; + var y1 = s1.y; + var x2 = s2.x; + var y2 = s2.y; + var x3 = f1.x; + var y3 = f1.y; + var x4 = f2.x; + var y4 = f2.y; + var x = void 0, + y = void 0; // intersection point + var a1 = void 0, + a2 = void 0, + b1 = void 0, + b2 = void 0, + c1 = void 0, + c2 = void 0; // coefficients of line eqns. + var denom = void 0; + + a1 = y2 - y1; + b1 = x1 - x2; + c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 } + + a2 = y4 - y3; + b2 = x3 - x4; + c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 } + + denom = a1 * b2 - a2 * b1; + + if (denom === 0) { + return null; + } + + x = (b1 * c2 - b2 * c1) / denom; + y = (a2 * c1 - a1 * c2) / denom; + + return new Point(x, y); +}; + +/** + * This method finds and returns the angle of the vector from the + x-axis + * in clockwise direction (compatible w/ Java coordinate system!). + */ +IGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) { + var C_angle = void 0; + + if (Cx !== Nx) { + C_angle = Math.atan((Ny - Cy) / (Nx - Cx)); + + if (Nx < Cx) { + C_angle += Math.PI; + } else if (Ny < Cy) { + C_angle += this.TWO_PI; + } + } else if (Ny < Cy) { + C_angle = this.ONE_AND_HALF_PI; // 270 degrees + } else { + C_angle = this.HALF_PI; // 90 degrees + } + + return C_angle; +}; + +/** + * This method checks whether the given two line segments (one with point + * p1 and p2, the other with point p3 and p4) intersect at a point other + * than these points. + */ +IGeometry.doIntersect = function (p1, p2, p3, p4) { + var a = p1.x; + var b = p1.y; + var c = p2.x; + var d = p2.y; + var p = p3.x; + var q = p3.y; + var r = p4.x; + var s = p4.y; + var det = (c - a) * (s - q) - (r - p) * (d - b); + + if (det === 0) { + return false; + } else { + var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det; + var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det; + return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1; + } +}; + +// ----------------------------------------------------------------------------- +// Section: Class Constants +// ----------------------------------------------------------------------------- +/** + * Some useful pre-calculated constants + */ +IGeometry.HALF_PI = 0.5 * Math.PI; +IGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI; +IGeometry.TWO_PI = 2.0 * Math.PI; +IGeometry.THREE_PI = 3.0 * Math.PI; + +module.exports = IGeometry; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + + +function IMath() {} + +/** + * This method returns the sign of the input value. + */ +IMath.sign = function (value) { + if (value > 0) { + return 1; + } else if (value < 0) { + return -1; + } else { + return 0; + } +}; + +IMath.floor = function (value) { + return value < 0 ? Math.ceil(value) : Math.floor(value); +}; + +IMath.ceil = function (value) { + return value < 0 ? Math.floor(value) : Math.ceil(value); +}; + +module.exports = IMath; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + + +function Integer() {} + +Integer.MAX_VALUE = 2147483647; +Integer.MIN_VALUE = -2147483648; + +module.exports = Integer; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var nodeFrom = function nodeFrom(value) { + return { value: value, next: null, prev: null }; +}; + +var add = function add(prev, node, next, list) { + if (prev !== null) { + prev.next = node; + } else { + list.head = node; + } + + if (next !== null) { + next.prev = node; + } else { + list.tail = node; + } + + node.prev = prev; + node.next = next; + + list.length++; + + return node; +}; + +var _remove = function _remove(node, list) { + var prev = node.prev, + next = node.next; + + + if (prev !== null) { + prev.next = next; + } else { + list.head = next; + } + + if (next !== null) { + next.prev = prev; + } else { + list.tail = prev; + } + + node.prev = node.next = null; + + list.length--; + + return node; +}; + +var LinkedList = function () { + function LinkedList(vals) { + var _this = this; + + _classCallCheck(this, LinkedList); + + this.length = 0; + this.head = null; + this.tail = null; + + if (vals != null) { + vals.forEach(function (v) { + return _this.push(v); + }); + } + } + + _createClass(LinkedList, [{ + key: "size", + value: function size() { + return this.length; + } + }, { + key: "insertBefore", + value: function insertBefore(val, otherNode) { + return add(otherNode.prev, nodeFrom(val), otherNode, this); + } + }, { + key: "insertAfter", + value: function insertAfter(val, otherNode) { + return add(otherNode, nodeFrom(val), otherNode.next, this); + } + }, { + key: "insertNodeBefore", + value: function insertNodeBefore(newNode, otherNode) { + return add(otherNode.prev, newNode, otherNode, this); + } + }, { + key: "insertNodeAfter", + value: function insertNodeAfter(newNode, otherNode) { + return add(otherNode, newNode, otherNode.next, this); + } + }, { + key: "push", + value: function push(val) { + return add(this.tail, nodeFrom(val), null, this); + } + }, { + key: "unshift", + value: function unshift(val) { + return add(null, nodeFrom(val), this.head, this); + } + }, { + key: "remove", + value: function remove(node) { + return _remove(node, this); + } + }, { + key: "pop", + value: function pop() { + return _remove(this.tail, this).value; + } + }, { + key: "popNode", + value: function popNode() { + return _remove(this.tail, this); + } + }, { + key: "shift", + value: function shift() { + return _remove(this.head, this).value; + } + }, { + key: "shiftNode", + value: function shiftNode() { + return _remove(this.head, this); + } + }, { + key: "get_object_at", + value: function get_object_at(index) { + if (index <= this.length()) { + var i = 1; + var current = this.head; + while (i < index) { + current = current.next; + i++; + } + return current.value; + } + } + }, { + key: "set_object_at", + value: function set_object_at(index, value) { + if (index <= this.length()) { + var i = 1; + var current = this.head; + while (i < index) { + current = current.next; + i++; + } + current.value = value; + } + } + }]); + + return LinkedList; +}(); + +module.exports = LinkedList; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + + +/* + *This class is the javascript implementation of the Point.java class in jdk + */ +function Point(x, y, p) { + this.x = null; + this.y = null; + if (x == null && y == null && p == null) { + this.x = 0; + this.y = 0; + } else if (typeof x == 'number' && typeof y == 'number' && p == null) { + this.x = x; + this.y = y; + } else if (x.constructor.name == 'Point' && y == null && p == null) { + p = x; + this.x = p.x; + this.y = p.y; + } +} + +Point.prototype.getX = function () { + return this.x; +}; + +Point.prototype.getY = function () { + return this.y; +}; + +Point.prototype.getLocation = function () { + return new Point(this.x, this.y); +}; + +Point.prototype.setLocation = function (x, y, p) { + if (x.constructor.name == 'Point' && y == null && p == null) { + p = x; + this.setLocation(p.x, p.y); + } else if (typeof x == 'number' && typeof y == 'number' && p == null) { + //if both parameters are integer just move (x,y) location + if (parseInt(x) == x && parseInt(y) == y) { + this.move(x, y); + } else { + this.x = Math.floor(x + 0.5); + this.y = Math.floor(y + 0.5); + } + } +}; + +Point.prototype.move = function (x, y) { + this.x = x; + this.y = y; +}; + +Point.prototype.translate = function (dx, dy) { + this.x += dx; + this.y += dy; +}; + +Point.prototype.equals = function (obj) { + if (obj.constructor.name == "Point") { + var pt = obj; + return this.x == pt.x && this.y == pt.y; + } + return this == obj; +}; + +Point.prototype.toString = function () { + return new Point().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; +}; + +module.exports = Point; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + + +function RectangleD(x, y, width, height) { + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + + if (x != null && y != null && width != null && height != null) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } +} + +RectangleD.prototype.getX = function () { + return this.x; +}; + +RectangleD.prototype.setX = function (x) { + this.x = x; +}; + +RectangleD.prototype.getY = function () { + return this.y; +}; + +RectangleD.prototype.setY = function (y) { + this.y = y; +}; + +RectangleD.prototype.getWidth = function () { + return this.width; +}; + +RectangleD.prototype.setWidth = function (width) { + this.width = width; +}; + +RectangleD.prototype.getHeight = function () { + return this.height; +}; + +RectangleD.prototype.setHeight = function (height) { + this.height = height; +}; + +RectangleD.prototype.getRight = function () { + return this.x + this.width; +}; + +RectangleD.prototype.getBottom = function () { + return this.y + this.height; +}; + +RectangleD.prototype.intersects = function (a) { + if (this.getRight() < a.x) { + return false; + } + + if (this.getBottom() < a.y) { + return false; + } + + if (a.getRight() < this.x) { + return false; + } + + if (a.getBottom() < this.y) { + return false; + } + + return true; +}; + +RectangleD.prototype.getCenterX = function () { + return this.x + this.width / 2; +}; + +RectangleD.prototype.getMinX = function () { + return this.getX(); +}; + +RectangleD.prototype.getMaxX = function () { + return this.getX() + this.width; +}; + +RectangleD.prototype.getCenterY = function () { + return this.y + this.height / 2; +}; + +RectangleD.prototype.getMinY = function () { + return this.getY(); +}; + +RectangleD.prototype.getMaxY = function () { + return this.getY() + this.height; +}; + +RectangleD.prototype.getWidthHalf = function () { + return this.width / 2; +}; + +RectangleD.prototype.getHeightHalf = function () { + return this.height / 2; +}; + +module.exports = RectangleD; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function UniqueIDGeneretor() {} + +UniqueIDGeneretor.lastID = 0; + +UniqueIDGeneretor.createID = function (obj) { + if (UniqueIDGeneretor.isPrimitive(obj)) { + return obj; + } + if (obj.uniqueID != null) { + return obj.uniqueID; + } + obj.uniqueID = UniqueIDGeneretor.getString(); + UniqueIDGeneretor.lastID++; + return obj.uniqueID; +}; + +UniqueIDGeneretor.getString = function (id) { + if (id == null) id = UniqueIDGeneretor.lastID; + return "Object#" + id + ""; +}; + +UniqueIDGeneretor.isPrimitive = function (arg) { + var type = typeof arg === "undefined" ? "undefined" : _typeof(arg); + return arg == null || type != "object" && type != "function"; +}; + +module.exports = UniqueIDGeneretor; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var LayoutConstants = __webpack_require__(0); +var LGraphManager = __webpack_require__(6); +var LNode = __webpack_require__(3); +var LEdge = __webpack_require__(1); +var LGraph = __webpack_require__(5); +var PointD = __webpack_require__(4); +var Transform = __webpack_require__(17); +var Emitter = __webpack_require__(27); + +function Layout(isRemoteUse) { + Emitter.call(this); + + //Layout Quality: 0:draft, 1:default, 2:proof + this.layoutQuality = LayoutConstants.QUALITY; + //Whether layout should create bendpoints as needed or not + this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + //Whether layout should be incremental or not + this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; + //Whether we animate from before to after layout node positions + this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; + //Whether we animate the layout process or not + this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; + //Number iterations that should be done between two successive animations + this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; + /** + * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When + * they are, both spring and repulsion forces between two leaf nodes can be + * calculated without the expensive clipping point calculations, resulting + * in major speed-up. + */ + this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; + /** + * This is used for creation of bendpoints by using dummy nodes and edges. + * Maps an LEdge to its dummy bendpoint path. + */ + this.edgeToDummyNodes = new Map(); + this.graphManager = new LGraphManager(this); + this.isLayoutFinished = false; + this.isSubLayout = false; + this.isRemoteUse = false; + + if (isRemoteUse != null) { + this.isRemoteUse = isRemoteUse; + } +} + +Layout.RANDOM_SEED = 1; + +Layout.prototype = Object.create(Emitter.prototype); + +Layout.prototype.getGraphManager = function () { + return this.graphManager; +}; + +Layout.prototype.getAllNodes = function () { + return this.graphManager.getAllNodes(); +}; + +Layout.prototype.getAllEdges = function () { + return this.graphManager.getAllEdges(); +}; + +Layout.prototype.getAllNodesToApplyGravitation = function () { + return this.graphManager.getAllNodesToApplyGravitation(); +}; + +Layout.prototype.newGraphManager = function () { + var gm = new LGraphManager(this); + this.graphManager = gm; + return gm; +}; + +Layout.prototype.newGraph = function (vGraph) { + return new LGraph(null, this.graphManager, vGraph); +}; + +Layout.prototype.newNode = function (vNode) { + return new LNode(this.graphManager, vNode); +}; + +Layout.prototype.newEdge = function (vEdge) { + return new LEdge(null, null, vEdge); +}; + +Layout.prototype.checkLayoutSuccess = function () { + return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge(); +}; + +Layout.prototype.runLayout = function () { + this.isLayoutFinished = false; + + if (this.tilingPreLayout) { + this.tilingPreLayout(); + } + + this.initParameters(); + var isLayoutSuccessfull; + + if (this.checkLayoutSuccess()) { + isLayoutSuccessfull = false; + } else { + isLayoutSuccessfull = this.layout(); + } + + if (LayoutConstants.ANIMATE === 'during') { + // If this is a 'during' layout animation. Layout is not finished yet. + // We need to perform these in index.js when layout is really finished. + return false; + } + + if (isLayoutSuccessfull) { + if (!this.isSubLayout) { + this.doPostLayout(); + } + } + + if (this.tilingPostLayout) { + this.tilingPostLayout(); + } + + this.isLayoutFinished = true; + + return isLayoutSuccessfull; +}; + +/** + * This method performs the operations required after layout. + */ +Layout.prototype.doPostLayout = function () { + //assert !isSubLayout : "Should not be called on sub-layout!"; + // Propagate geometric changes to v-level objects + if (!this.incremental) { + this.transform(); + } + this.update(); +}; + +/** + * This method updates the geometry of the target graph according to + * calculated layout. + */ +Layout.prototype.update2 = function () { + // update bend points + if (this.createBendsAsNeeded) { + this.createBendpointsFromDummyNodes(); + + // reset all edges, since the topology has changed + this.graphManager.resetAllEdges(); + } + + // perform edge, node and root updates if layout is not called + // remotely + if (!this.isRemoteUse) { + var allEdges = this.graphManager.getAllEdges(); + for (var i = 0; i < allEdges.length; i++) { + // this.update(edge); + } + var nodes = this.graphManager.getRoot().getNodes(); + for (var i = 0; i < nodes.length; i++) { + // this.update(node); + } + + // update root graph + this.update(this.graphManager.getRoot()); + } +}; + +Layout.prototype.update = function (obj) { + if (obj == null) { + this.update2(); + } else if (obj instanceof LNode) { + var node = obj; + if (node.getChild() != null) { + // since node is compound, recursively update child nodes + var nodes = node.getChild().getNodes(); + for (var i = 0; i < nodes.length; i++) { + update(nodes[i]); + } + } + + // if the l-level node is associated with a v-level graph object, + // then it is assumed that the v-level node implements the + // interface Updatable. + if (node.vGraphObject != null) { + // cast to Updatable without any type check + var vNode = node.vGraphObject; + + // call the update method of the interface + vNode.update(node); + } + } else if (obj instanceof LEdge) { + var edge = obj; + // if the l-level edge is associated with a v-level graph object, + // then it is assumed that the v-level edge implements the + // interface Updatable. + + if (edge.vGraphObject != null) { + // cast to Updatable without any type check + var vEdge = edge.vGraphObject; + + // call the update method of the interface + vEdge.update(edge); + } + } else if (obj instanceof LGraph) { + var graph = obj; + // if the l-level graph is associated with a v-level graph object, + // then it is assumed that the v-level object implements the + // interface Updatable. + + if (graph.vGraphObject != null) { + // cast to Updatable without any type check + var vGraph = graph.vGraphObject; + + // call the update method of the interface + vGraph.update(graph); + } + } +}; + +/** + * This method is used to set all layout parameters to default values + * determined at compile time. + */ +Layout.prototype.initParameters = function () { + if (!this.isSubLayout) { + this.layoutQuality = LayoutConstants.QUALITY; + this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; + this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; + this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; + this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; + this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; + } + + if (this.animationDuringLayout) { + this.animationOnLayout = false; + } +}; + +Layout.prototype.transform = function (newLeftTop) { + if (newLeftTop == undefined) { + this.transform(new PointD(0, 0)); + } else { + // create a transformation object (from Eclipse to layout). When an + // inverse transform is applied, we get upper-left coordinate of the + // drawing or the root graph at given input coordinate (some margins + // already included in calculation of left-top). + + var trans = new Transform(); + var leftTop = this.graphManager.getRoot().updateLeftTop(); + + if (leftTop != null) { + trans.setWorldOrgX(newLeftTop.x); + trans.setWorldOrgY(newLeftTop.y); + + trans.setDeviceOrgX(leftTop.x); + trans.setDeviceOrgY(leftTop.y); + + var nodes = this.getAllNodes(); + var node; + + for (var i = 0; i < nodes.length; i++) { + node = nodes[i]; + node.transform(trans); + } + } + } +}; + +Layout.prototype.positionNodesRandomly = function (graph) { + + if (graph == undefined) { + //assert !this.incremental; + this.positionNodesRandomly(this.getGraphManager().getRoot()); + this.getGraphManager().getRoot().updateBounds(true); + } else { + var lNode; + var childGraph; + + var nodes = graph.getNodes(); + for (var i = 0; i < nodes.length; i++) { + lNode = nodes[i]; + childGraph = lNode.getChild(); + + if (childGraph == null) { + lNode.scatter(); + } else if (childGraph.getNodes().length == 0) { + lNode.scatter(); + } else { + this.positionNodesRandomly(childGraph); + lNode.updateBounds(); + } + } + } +}; + +/** + * This method returns a list of trees where each tree is represented as a + * list of l-nodes. The method returns a list of size 0 when: + * - The graph is not flat or + * - One of the component(s) of the graph is not a tree. + */ +Layout.prototype.getFlatForest = function () { + var flatForest = []; + var isForest = true; + + // Quick reference for all nodes in the graph manager associated with + // this layout. The list should not be changed. + var allNodes = this.graphManager.getRoot().getNodes(); + + // First be sure that the graph is flat + var isFlat = true; + + for (var i = 0; i < allNodes.length; i++) { + if (allNodes[i].getChild() != null) { + isFlat = false; + } + } + + // Return empty forest if the graph is not flat. + if (!isFlat) { + return flatForest; + } + + // Run BFS for each component of the graph. + + var visited = new Set(); + var toBeVisited = []; + var parents = new Map(); + var unProcessedNodes = []; + + unProcessedNodes = unProcessedNodes.concat(allNodes); + + // Each iteration of this loop finds a component of the graph and + // decides whether it is a tree or not. If it is a tree, adds it to the + // forest and continued with the next component. + + while (unProcessedNodes.length > 0 && isForest) { + toBeVisited.push(unProcessedNodes[0]); + + // Start the BFS. Each iteration of this loop visits a node in a + // BFS manner. + while (toBeVisited.length > 0 && isForest) { + //pool operation + var currentNode = toBeVisited[0]; + toBeVisited.splice(0, 1); + visited.add(currentNode); + + // Traverse all neighbors of this node + var neighborEdges = currentNode.getEdges(); + + for (var i = 0; i < neighborEdges.length; i++) { + var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode); + + // If BFS is not growing from this neighbor. + if (parents.get(currentNode) != currentNeighbor) { + // We haven't previously visited this neighbor. + if (!visited.has(currentNeighbor)) { + toBeVisited.push(currentNeighbor); + parents.set(currentNeighbor, currentNode); + } + // Since we have previously visited this neighbor and + // this neighbor is not parent of currentNode, given + // graph contains a component that is not tree, hence + // it is not a forest. + else { + isForest = false; + break; + } + } + } + } + + // The graph contains a component that is not a tree. Empty + // previously found trees. The method will end. + if (!isForest) { + flatForest = []; + } + // Save currently visited nodes as a tree in our forest. Reset + // visited and parents lists. Continue with the next component of + // the graph, if any. + else { + var temp = [].concat(_toConsumableArray(visited)); + flatForest.push(temp); + //flatForest = flatForest.concat(temp); + //unProcessedNodes.removeAll(visited); + for (var i = 0; i < temp.length; i++) { + var value = temp[i]; + var index = unProcessedNodes.indexOf(value); + if (index > -1) { + unProcessedNodes.splice(index, 1); + } + } + visited = new Set(); + parents = new Map(); + } + } + + return flatForest; +}; + +/** + * This method creates dummy nodes (an l-level node with minimal dimensions) + * for the given edge (one per bendpoint). The existing l-level structure + * is updated accordingly. + */ +Layout.prototype.createDummyNodesForBendpoints = function (edge) { + var dummyNodes = []; + var prev = edge.source; + + var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target); + + for (var i = 0; i < edge.bendpoints.length; i++) { + // create new dummy node + var dummyNode = this.newNode(null); + dummyNode.setRect(new Point(0, 0), new Dimension(1, 1)); + + graph.add(dummyNode); + + // create new dummy edge between prev and dummy node + var dummyEdge = this.newEdge(null); + this.graphManager.add(dummyEdge, prev, dummyNode); + + dummyNodes.add(dummyNode); + prev = dummyNode; + } + + var dummyEdge = this.newEdge(null); + this.graphManager.add(dummyEdge, prev, edge.target); + + this.edgeToDummyNodes.set(edge, dummyNodes); + + // remove real edge from graph manager if it is inter-graph + if (edge.isInterGraph()) { + this.graphManager.remove(edge); + } + // else, remove the edge from the current graph + else { + graph.remove(edge); + } + + return dummyNodes; +}; + +/** + * This method creates bendpoints for edges from the dummy nodes + * at l-level. + */ +Layout.prototype.createBendpointsFromDummyNodes = function () { + var edges = []; + edges = edges.concat(this.graphManager.getAllEdges()); + edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges); + + for (var k = 0; k < edges.length; k++) { + var lEdge = edges[k]; + + if (lEdge.bendpoints.length > 0) { + var path = this.edgeToDummyNodes.get(lEdge); + + for (var i = 0; i < path.length; i++) { + var dummyNode = path[i]; + var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY()); + + // update bendpoint's location according to dummy node + var ebp = lEdge.bendpoints.get(i); + ebp.x = p.x; + ebp.y = p.y; + + // remove the dummy node, dummy edges incident with this + // dummy node is also removed (within the remove method) + dummyNode.getOwner().remove(dummyNode); + } + + // add the real edge to graph + this.graphManager.add(lEdge, lEdge.source, lEdge.target); + } + } +}; + +Layout.transform = function (sliderValue, defaultValue, minDiv, maxMul) { + if (minDiv != undefined && maxMul != undefined) { + var value = defaultValue; + + if (sliderValue <= 50) { + var minValue = defaultValue / minDiv; + value -= (defaultValue - minValue) / 50 * (50 - sliderValue); + } else { + var maxValue = defaultValue * maxMul; + value += (maxValue - defaultValue) / 50 * (sliderValue - 50); + } + + return value; + } else { + var a, b; + + if (sliderValue <= 50) { + a = 9.0 * defaultValue / 500.0; + b = defaultValue / 10.0; + } else { + a = 9.0 * defaultValue / 50.0; + b = -8 * defaultValue; + } + + return a * sliderValue + b; + } +}; + +/** + * This method finds and returns the center of the given nodes, assuming + * that the given nodes form a tree in themselves. + */ +Layout.findCenterOfTree = function (nodes) { + var list = []; + list = list.concat(nodes); + + var removedNodes = []; + var remainingDegrees = new Map(); + var foundCenter = false; + var centerNode = null; + + if (list.length == 1 || list.length == 2) { + foundCenter = true; + centerNode = list[0]; + } + + for (var i = 0; i < list.length; i++) { + var node = list[i]; + var degree = node.getNeighborsList().size; + remainingDegrees.set(node, node.getNeighborsList().size); + + if (degree == 1) { + removedNodes.push(node); + } + } + + var tempList = []; + tempList = tempList.concat(removedNodes); + + while (!foundCenter) { + var tempList2 = []; + tempList2 = tempList2.concat(tempList); + tempList = []; + + for (var i = 0; i < list.length; i++) { + var node = list[i]; + + var index = list.indexOf(node); + if (index >= 0) { + list.splice(index, 1); + } + + var neighbours = node.getNeighborsList(); + + neighbours.forEach(function (neighbour) { + if (removedNodes.indexOf(neighbour) < 0) { + var otherDegree = remainingDegrees.get(neighbour); + var newDegree = otherDegree - 1; + + if (newDegree == 1) { + tempList.push(neighbour); + } + + remainingDegrees.set(neighbour, newDegree); + } + }); + } + + removedNodes = removedNodes.concat(tempList); + + if (list.length == 1 || list.length == 2) { + foundCenter = true; + centerNode = list[0]; + } + } + + return centerNode; +}; + +/** + * During the coarsening process, this layout may be referenced by two graph managers + * this setter function grants access to change the currently being used graph manager + */ +Layout.prototype.setGraphManager = function (gm) { + this.graphManager = gm; +}; + +module.exports = Layout; + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + + +function RandomSeed() {} +// adapted from: https://stackoverflow.com/a/19303725 +RandomSeed.seed = 1; +RandomSeed.x = 0; + +RandomSeed.nextDouble = function () { + RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000; + return RandomSeed.x - Math.floor(RandomSeed.x); +}; + +module.exports = RandomSeed; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + + +var PointD = __webpack_require__(4); + +function Transform(x, y) { + this.lworldOrgX = 0.0; + this.lworldOrgY = 0.0; + this.ldeviceOrgX = 0.0; + this.ldeviceOrgY = 0.0; + this.lworldExtX = 1.0; + this.lworldExtY = 1.0; + this.ldeviceExtX = 1.0; + this.ldeviceExtY = 1.0; +} + +Transform.prototype.getWorldOrgX = function () { + return this.lworldOrgX; +}; + +Transform.prototype.setWorldOrgX = function (wox) { + this.lworldOrgX = wox; +}; + +Transform.prototype.getWorldOrgY = function () { + return this.lworldOrgY; +}; + +Transform.prototype.setWorldOrgY = function (woy) { + this.lworldOrgY = woy; +}; + +Transform.prototype.getWorldExtX = function () { + return this.lworldExtX; +}; + +Transform.prototype.setWorldExtX = function (wex) { + this.lworldExtX = wex; +}; + +Transform.prototype.getWorldExtY = function () { + return this.lworldExtY; +}; + +Transform.prototype.setWorldExtY = function (wey) { + this.lworldExtY = wey; +}; + +/* Device related */ + +Transform.prototype.getDeviceOrgX = function () { + return this.ldeviceOrgX; +}; + +Transform.prototype.setDeviceOrgX = function (dox) { + this.ldeviceOrgX = dox; +}; + +Transform.prototype.getDeviceOrgY = function () { + return this.ldeviceOrgY; +}; + +Transform.prototype.setDeviceOrgY = function (doy) { + this.ldeviceOrgY = doy; +}; + +Transform.prototype.getDeviceExtX = function () { + return this.ldeviceExtX; +}; + +Transform.prototype.setDeviceExtX = function (dex) { + this.ldeviceExtX = dex; +}; + +Transform.prototype.getDeviceExtY = function () { + return this.ldeviceExtY; +}; + +Transform.prototype.setDeviceExtY = function (dey) { + this.ldeviceExtY = dey; +}; + +Transform.prototype.transformX = function (x) { + var xDevice = 0.0; + var worldExtX = this.lworldExtX; + if (worldExtX != 0.0) { + xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX; + } + + return xDevice; +}; + +Transform.prototype.transformY = function (y) { + var yDevice = 0.0; + var worldExtY = this.lworldExtY; + if (worldExtY != 0.0) { + yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY; + } + + return yDevice; +}; + +Transform.prototype.inverseTransformX = function (x) { + var xWorld = 0.0; + var deviceExtX = this.ldeviceExtX; + if (deviceExtX != 0.0) { + xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX; + } + + return xWorld; +}; + +Transform.prototype.inverseTransformY = function (y) { + var yWorld = 0.0; + var deviceExtY = this.ldeviceExtY; + if (deviceExtY != 0.0) { + yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; + } + return yWorld; +}; + +Transform.prototype.inverseTransformPoint = function (inPoint) { + var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y)); + return outPoint; +}; + +module.exports = Transform; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var Layout = __webpack_require__(15); +var FDLayoutConstants = __webpack_require__(7); +var LayoutConstants = __webpack_require__(0); +var IGeometry = __webpack_require__(8); +var IMath = __webpack_require__(9); + +function FDLayout() { + Layout.call(this); + + this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; + this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; + this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; + this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; + this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; + this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; + this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; + this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; + this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100; + this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + this.totalDisplacement = 0.0; + this.oldTotalDisplacement = 0.0; + this.maxIterations = FDLayoutConstants.MAX_ITERATIONS; +} + +FDLayout.prototype = Object.create(Layout.prototype); + +for (var prop in Layout) { + FDLayout[prop] = Layout[prop]; +} + +FDLayout.prototype.initParameters = function () { + Layout.prototype.initParameters.call(this, arguments); + + this.totalIterations = 0; + this.notAnimatedIterations = 0; + + this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION; + + this.grid = []; +}; + +FDLayout.prototype.calcIdealEdgeLengths = function () { + var edge; + var lcaDepth; + var source; + var target; + var sizeOfSourceInLca; + var sizeOfTargetInLca; + + var allEdges = this.getGraphManager().getAllEdges(); + for (var i = 0; i < allEdges.length; i++) { + edge = allEdges[i]; + + edge.idealLength = this.idealEdgeLength; + + if (edge.isInterGraph) { + source = edge.getSource(); + target = edge.getTarget(); + + sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize(); + sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize(); + + if (this.useSmartIdealEdgeLengthCalculation) { + edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE; + } + + lcaDepth = edge.getLca().getInclusionTreeDepth(); + + edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth); + } + } +}; + +FDLayout.prototype.initSpringEmbedder = function () { + + var s = this.getAllNodes().length; + if (this.incremental) { + if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { + this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); + } + this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL; + } else { + if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { + this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); + } else { + this.coolingFactor = 1.0; + } + this.initialCoolingFactor = this.coolingFactor; + this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT; + } + + this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations); + + this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length; + + this.repulsionRange = this.calcRepulsionRange(); +}; + +FDLayout.prototype.calcSpringForces = function () { + var lEdges = this.getAllEdges(); + var edge; + + for (var i = 0; i < lEdges.length; i++) { + edge = lEdges[i]; + + this.calcSpringForce(edge, edge.idealLength); + } +}; + +FDLayout.prototype.calcRepulsionForces = function () { + var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var i, j; + var nodeA, nodeB; + var lNodes = this.getAllNodes(); + var processedNodeSet; + + if (this.useFRGridVariant) { + if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) { + this.updateGrid(); + } + + processedNodeSet = new Set(); + + // calculate repulsion forces between each nodes and its surrounding + for (i = 0; i < lNodes.length; i++) { + nodeA = lNodes[i]; + this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate); + processedNodeSet.add(nodeA); + } + } else { + for (i = 0; i < lNodes.length; i++) { + nodeA = lNodes[i]; + + for (j = i + 1; j < lNodes.length; j++) { + nodeB = lNodes[j]; + + // If both nodes are not members of the same graph, skip. + if (nodeA.getOwner() != nodeB.getOwner()) { + continue; + } + + this.calcRepulsionForce(nodeA, nodeB); + } + } + } +}; + +FDLayout.prototype.calcGravitationalForces = function () { + var node; + var lNodes = this.getAllNodesToApplyGravitation(); + + for (var i = 0; i < lNodes.length; i++) { + node = lNodes[i]; + this.calcGravitationalForce(node); + } +}; + +FDLayout.prototype.moveNodes = function () { + var lNodes = this.getAllNodes(); + var node; + + for (var i = 0; i < lNodes.length; i++) { + node = lNodes[i]; + node.move(); + } +}; + +FDLayout.prototype.calcSpringForce = function (edge, idealLength) { + var sourceNode = edge.getSource(); + var targetNode = edge.getTarget(); + + var length; + var springForce; + var springForceX; + var springForceY; + + // Update edge length + if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) { + edge.updateLengthSimple(); + } else { + edge.updateLength(); + + if (edge.isOverlapingSourceAndTarget) { + return; + } + } + + length = edge.getLength(); + + if (length == 0) return; + + // Calculate spring forces + springForce = this.springConstant * (length - idealLength); + + // Project force onto x and y axes + springForceX = springForce * (edge.lengthX / length); + springForceY = springForce * (edge.lengthY / length); + + // Apply forces on the end nodes + sourceNode.springForceX += springForceX; + sourceNode.springForceY += springForceY; + targetNode.springForceX -= springForceX; + targetNode.springForceY -= springForceY; +}; + +FDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) { + var rectA = nodeA.getRect(); + var rectB = nodeB.getRect(); + var overlapAmount = new Array(2); + var clipPoints = new Array(4); + var distanceX; + var distanceY; + var distanceSquared; + var distance; + var repulsionForce; + var repulsionForceX; + var repulsionForceY; + + if (rectA.intersects(rectB)) // two nodes overlap + { + // calculate separation amount in x and y directions + IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0); + + repulsionForceX = 2 * overlapAmount[0]; + repulsionForceY = 2 * overlapAmount[1]; + + var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren); + + // Apply forces on the two nodes + nodeA.repulsionForceX -= childrenConstant * repulsionForceX; + nodeA.repulsionForceY -= childrenConstant * repulsionForceY; + nodeB.repulsionForceX += childrenConstant * repulsionForceX; + nodeB.repulsionForceY += childrenConstant * repulsionForceY; + } else // no overlap + { + // calculate distance + + if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers + { + distanceX = rectB.getCenterX() - rectA.getCenterX(); + distanceY = rectB.getCenterY() - rectA.getCenterY(); + } else // use clipping points + { + IGeometry.getIntersection(rectA, rectB, clipPoints); + + distanceX = clipPoints[2] - clipPoints[0]; + distanceY = clipPoints[3] - clipPoints[1]; + } + + // No repulsion range. FR grid variant should take care of this. + if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) { + distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST; + } + + if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) { + distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST; + } + + distanceSquared = distanceX * distanceX + distanceY * distanceY; + distance = Math.sqrt(distanceSquared); + + repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared; + + // Project force onto x and y axes + repulsionForceX = repulsionForce * distanceX / distance; + repulsionForceY = repulsionForce * distanceY / distance; + + // Apply forces on the two nodes + nodeA.repulsionForceX -= repulsionForceX; + nodeA.repulsionForceY -= repulsionForceY; + nodeB.repulsionForceX += repulsionForceX; + nodeB.repulsionForceY += repulsionForceY; + } +}; + +FDLayout.prototype.calcGravitationalForce = function (node) { + var ownerGraph; + var ownerCenterX; + var ownerCenterY; + var distanceX; + var distanceY; + var absDistanceX; + var absDistanceY; + var estimatedSize; + ownerGraph = node.getOwner(); + + ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2; + ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2; + distanceX = node.getCenterX() - ownerCenterX; + distanceY = node.getCenterY() - ownerCenterY; + absDistanceX = Math.abs(distanceX) + node.getWidth() / 2; + absDistanceY = Math.abs(distanceY) + node.getHeight() / 2; + + if (node.getOwner() == this.graphManager.getRoot()) // in the root graph + { + estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor; + + if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { + node.gravitationForceX = -this.gravityConstant * distanceX; + node.gravitationForceY = -this.gravityConstant * distanceY; + } + } else // inside a compound + { + estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor; + + if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { + node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant; + node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant; + } + } +}; + +FDLayout.prototype.isConverged = function () { + var converged; + var oscilating = false; + + if (this.totalIterations > this.maxIterations / 3) { + oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2; + } + + converged = this.totalDisplacement < this.totalDisplacementThreshold; + + this.oldTotalDisplacement = this.totalDisplacement; + + return converged || oscilating; +}; + +FDLayout.prototype.animate = function () { + if (this.animationDuringLayout && !this.isSubLayout) { + if (this.notAnimatedIterations == this.animationPeriod) { + this.update(); + this.notAnimatedIterations = 0; + } else { + this.notAnimatedIterations++; + } + } +}; + +//This method calculates the number of children (weight) for all nodes +FDLayout.prototype.calcNoOfChildrenForAllNodes = function () { + var node; + var allNodes = this.graphManager.getAllNodes(); + + for (var i = 0; i < allNodes.length; i++) { + node = allNodes[i]; + node.noOfChildren = node.getNoOfChildren(); + } +}; + +// ----------------------------------------------------------------------------- +// Section: FR-Grid Variant Repulsion Force Calculation +// ----------------------------------------------------------------------------- + +FDLayout.prototype.calcGrid = function (graph) { + + var sizeX = 0; + var sizeY = 0; + + sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange)); + sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange)); + + var grid = new Array(sizeX); + + for (var i = 0; i < sizeX; i++) { + grid[i] = new Array(sizeY); + } + + for (var i = 0; i < sizeX; i++) { + for (var j = 0; j < sizeY; j++) { + grid[i][j] = new Array(); + } + } + + return grid; +}; + +FDLayout.prototype.addNodeToGrid = function (v, left, top) { + + var startX = 0; + var finishX = 0; + var startY = 0; + var finishY = 0; + + startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange)); + finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange)); + startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange)); + finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange)); + + for (var i = startX; i <= finishX; i++) { + for (var j = startY; j <= finishY; j++) { + this.grid[i][j].push(v); + v.setGridCoordinates(startX, finishX, startY, finishY); + } + } +}; + +FDLayout.prototype.updateGrid = function () { + var i; + var nodeA; + var lNodes = this.getAllNodes(); + + this.grid = this.calcGrid(this.graphManager.getRoot()); + + // put all nodes to proper grid cells + for (i = 0; i < lNodes.length; i++) { + nodeA = lNodes[i]; + this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop()); + } +}; + +FDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) { + + if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) { + var surrounding = new Set(); + nodeA.surrounding = new Array(); + var nodeB; + var grid = this.grid; + + for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) { + for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) { + if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) { + for (var k = 0; k < grid[i][j].length; k++) { + nodeB = grid[i][j][k]; + + // If both nodes are not members of the same graph, + // or both nodes are the same, skip. + if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) { + continue; + } + + // check if the repulsion force between + // nodeA and nodeB has already been calculated + if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) { + var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2); + var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2); + + // if the distance between nodeA and nodeB + // is less then calculation range + if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) { + //then add nodeB to surrounding of nodeA + surrounding.add(nodeB); + } + } + } + } + } + } + + nodeA.surrounding = [].concat(_toConsumableArray(surrounding)); + } + for (i = 0; i < nodeA.surrounding.length; i++) { + this.calcRepulsionForce(nodeA, nodeA.surrounding[i]); + } +}; + +FDLayout.prototype.calcRepulsionRange = function () { + return 0.0; +}; + +module.exports = FDLayout; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LEdge = __webpack_require__(1); +var FDLayoutConstants = __webpack_require__(7); + +function FDLayoutEdge(source, target, vEdge) { + LEdge.call(this, source, target, vEdge); + this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; +} + +FDLayoutEdge.prototype = Object.create(LEdge.prototype); + +for (var prop in LEdge) { + FDLayoutEdge[prop] = LEdge[prop]; +} + +module.exports = FDLayoutEdge; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LNode = __webpack_require__(3); + +function FDLayoutNode(gm, loc, size, vNode) { + // alternative constructor is handled inside LNode + LNode.call(this, gm, loc, size, vNode); + //Spring, repulsion and gravitational forces acting on this node + this.springForceX = 0; + this.springForceY = 0; + this.repulsionForceX = 0; + this.repulsionForceY = 0; + this.gravitationForceX = 0; + this.gravitationForceY = 0; + //Amount by which this node is to be moved in this iteration + this.displacementX = 0; + this.displacementY = 0; + + //Start and finish grid coordinates that this node is fallen into + this.startX = 0; + this.finishX = 0; + this.startY = 0; + this.finishY = 0; + + //Geometric neighbors of this node + this.surrounding = []; +} + +FDLayoutNode.prototype = Object.create(LNode.prototype); + +for (var prop in LNode) { + FDLayoutNode[prop] = LNode[prop]; +} + +FDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) { + this.startX = _startX; + this.finishX = _finishX; + this.startY = _startY; + this.finishY = _finishY; +}; + +module.exports = FDLayoutNode; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + + +function DimensionD(width, height) { + this.width = 0; + this.height = 0; + if (width !== null && height !== null) { + this.height = height; + this.width = width; + } +} + +DimensionD.prototype.getWidth = function () { + return this.width; +}; + +DimensionD.prototype.setWidth = function (width) { + this.width = width; +}; + +DimensionD.prototype.getHeight = function () { + return this.height; +}; + +DimensionD.prototype.setHeight = function (height) { + this.height = height; +}; + +module.exports = DimensionD; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + + +var UniqueIDGeneretor = __webpack_require__(14); + +function HashMap() { + this.map = {}; + this.keys = []; +} + +HashMap.prototype.put = function (key, value) { + var theId = UniqueIDGeneretor.createID(key); + if (!this.contains(theId)) { + this.map[theId] = value; + this.keys.push(key); + } +}; + +HashMap.prototype.contains = function (key) { + UniqueIDGeneretor.createID(key); + return this.map[key] != null; +}; + +HashMap.prototype.get = function (key) { + var theId = UniqueIDGeneretor.createID(key); + return this.map[theId]; +}; + +HashMap.prototype.keySet = function () { + return this.keys; +}; + +module.exports = HashMap; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + + +var UniqueIDGeneretor = __webpack_require__(14); + +function HashSet() { + this.set = {}; +} + +HashSet.prototype.add = function (obj) { + var theId = UniqueIDGeneretor.createID(obj); + if (!this.contains(theId)) this.set[theId] = obj; +}; + +HashSet.prototype.remove = function (obj) { + delete this.set[UniqueIDGeneretor.createID(obj)]; +}; + +HashSet.prototype.clear = function () { + this.set = {}; +}; + +HashSet.prototype.contains = function (obj) { + return this.set[UniqueIDGeneretor.createID(obj)] == obj; +}; + +HashSet.prototype.isEmpty = function () { + return this.size() === 0; +}; + +HashSet.prototype.size = function () { + return Object.keys(this.set).length; +}; + +//concats this.set to the given list +HashSet.prototype.addAllTo = function (list) { + var keys = Object.keys(this.set); + var length = keys.length; + for (var i = 0; i < length; i++) { + list.push(this.set[keys[i]]); + } +}; + +HashSet.prototype.size = function () { + return Object.keys(this.set).length; +}; + +HashSet.prototype.addAll = function (list) { + var s = list.length; + for (var i = 0; i < s; i++) { + var v = list[i]; + this.add(v); + } +}; + +module.exports = HashSet; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * A classic Quicksort algorithm with Hoare's partition + * - Works also on LinkedList objects + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var LinkedList = __webpack_require__(11); + +var Quicksort = function () { + function Quicksort(A, compareFunction) { + _classCallCheck(this, Quicksort); + + if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction; + + var length = void 0; + if (A instanceof LinkedList) length = A.size();else length = A.length; + + this._quicksort(A, 0, length - 1); + } + + _createClass(Quicksort, [{ + key: '_quicksort', + value: function _quicksort(A, p, r) { + if (p < r) { + var q = this._partition(A, p, r); + this._quicksort(A, p, q); + this._quicksort(A, q + 1, r); + } + } + }, { + key: '_partition', + value: function _partition(A, p, r) { + var x = this._get(A, p); + var i = p; + var j = r; + while (true) { + while (this.compareFunction(x, this._get(A, j))) { + j--; + }while (this.compareFunction(this._get(A, i), x)) { + i++; + }if (i < j) { + this._swap(A, i, j); + i++; + j--; + } else return j; + } + } + }, { + key: '_get', + value: function _get(object, index) { + if (object instanceof LinkedList) return object.get_object_at(index);else return object[index]; + } + }, { + key: '_set', + value: function _set(object, index, value) { + if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value; + } + }, { + key: '_swap', + value: function _swap(A, i, j) { + var temp = this._get(A, i); + this._set(A, i, this._get(A, j)); + this._set(A, j, temp); + } + }, { + key: '_defaultCompareFunction', + value: function _defaultCompareFunction(a, b) { + return b > a; + } + }]); + + return Quicksort; +}(); + +module.exports = Quicksort; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string + * sequences by S.B.Needleman and C.D.Wunsch (1970). + * + * Aside from the inputs, you can assign the scores for, + * - Match: The two characters at the current index are same. + * - Mismatch: The two characters at the current index are different. + * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string. + */ + +var NeedlemanWunsch = function () { + function NeedlemanWunsch(sequence1, sequence2) { + var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1; + var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; + + _classCallCheck(this, NeedlemanWunsch); + + this.sequence1 = sequence1; + this.sequence2 = sequence2; + this.match_score = match_score; + this.mismatch_penalty = mismatch_penalty; + this.gap_penalty = gap_penalty; + + // Just the remove redundancy + this.iMax = sequence1.length + 1; + this.jMax = sequence2.length + 1; + + // Grid matrix of scores + this.grid = new Array(this.iMax); + for (var i = 0; i < this.iMax; i++) { + this.grid[i] = new Array(this.jMax); + + for (var j = 0; j < this.jMax; j++) { + this.grid[i][j] = 0; + } + } + + // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions) + this.tracebackGrid = new Array(this.iMax); + for (var _i = 0; _i < this.iMax; _i++) { + this.tracebackGrid[_i] = new Array(this.jMax); + + for (var _j = 0; _j < this.jMax; _j++) { + this.tracebackGrid[_i][_j] = [null, null, null]; + } + } + + // The aligned sequences (return multiple possibilities) + this.alignments = []; + + // Final alignment score + this.score = -1; + + // Calculate scores and tracebacks + this.computeGrids(); + } + + _createClass(NeedlemanWunsch, [{ + key: "getScore", + value: function getScore() { + return this.score; + } + }, { + key: "getAlignments", + value: function getAlignments() { + return this.alignments; + } + + // Main dynamic programming procedure + + }, { + key: "computeGrids", + value: function computeGrids() { + // Fill in the first row + for (var j = 1; j < this.jMax; j++) { + this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty; + this.tracebackGrid[0][j] = [false, false, true]; + } + + // Fill in the first column + for (var i = 1; i < this.iMax; i++) { + this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty; + this.tracebackGrid[i][0] = [false, true, false]; + } + + // Fill the rest of the grid + for (var _i2 = 1; _i2 < this.iMax; _i2++) { + for (var _j2 = 1; _j2 < this.jMax; _j2++) { + // Find the max score(s) among [`Diag`, `Up`, `Left`] + var diag = void 0; + if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty; + + var up = this.grid[_i2 - 1][_j2] + this.gap_penalty; + var left = this.grid[_i2][_j2 - 1] + this.gap_penalty; + + // If there exists multiple max values, capture them for multiple paths + var maxOf = [diag, up, left]; + var indices = this.arrayAllMaxIndexes(maxOf); + + // Update Grids + this.grid[_i2][_j2] = maxOf[indices[0]]; + this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)]; + } + } + + // Update alignment score + this.score = this.grid[this.iMax - 1][this.jMax - 1]; + } + + // Gets all possible valid sequence combinations + + }, { + key: "alignmentTraceback", + value: function alignmentTraceback() { + var inProcessAlignments = []; + + inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length], + seq1: "", + seq2: "" + }); + + while (inProcessAlignments[0]) { + var current = inProcessAlignments[0]; + var directions = this.tracebackGrid[current.pos[0]][current.pos[1]]; + + if (directions[0]) { + inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1], + seq1: this.sequence1[current.pos[0] - 1] + current.seq1, + seq2: this.sequence2[current.pos[1] - 1] + current.seq2 + }); + } + if (directions[1]) { + inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]], + seq1: this.sequence1[current.pos[0] - 1] + current.seq1, + seq2: '-' + current.seq2 + }); + } + if (directions[2]) { + inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1], + seq1: '-' + current.seq1, + seq2: this.sequence2[current.pos[1] - 1] + current.seq2 + }); + } + + if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1, + sequence2: current.seq2 + }); + + inProcessAlignments.shift(); + } + + return this.alignments; + } + + // Helper Functions + + }, { + key: "getAllIndexes", + value: function getAllIndexes(arr, val) { + var indexes = [], + i = -1; + while ((i = arr.indexOf(val, i + 1)) !== -1) { + indexes.push(i); + } + return indexes; + } + }, { + key: "arrayAllMaxIndexes", + value: function arrayAllMaxIndexes(array) { + return this.getAllIndexes(array, Math.max.apply(null, array)); + } + }]); + + return NeedlemanWunsch; +}(); + +module.exports = NeedlemanWunsch; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + + +var layoutBase = function layoutBase() { + return; +}; + +layoutBase.FDLayout = __webpack_require__(18); +layoutBase.FDLayoutConstants = __webpack_require__(7); +layoutBase.FDLayoutEdge = __webpack_require__(19); +layoutBase.FDLayoutNode = __webpack_require__(20); +layoutBase.DimensionD = __webpack_require__(21); +layoutBase.HashMap = __webpack_require__(22); +layoutBase.HashSet = __webpack_require__(23); +layoutBase.IGeometry = __webpack_require__(8); +layoutBase.IMath = __webpack_require__(9); +layoutBase.Integer = __webpack_require__(10); +layoutBase.Point = __webpack_require__(12); +layoutBase.PointD = __webpack_require__(4); +layoutBase.RandomSeed = __webpack_require__(16); +layoutBase.RectangleD = __webpack_require__(13); +layoutBase.Transform = __webpack_require__(17); +layoutBase.UniqueIDGeneretor = __webpack_require__(14); +layoutBase.Quicksort = __webpack_require__(24); +layoutBase.LinkedList = __webpack_require__(11); +layoutBase.LGraphObject = __webpack_require__(2); +layoutBase.LGraph = __webpack_require__(5); +layoutBase.LEdge = __webpack_require__(1); +layoutBase.LGraphManager = __webpack_require__(6); +layoutBase.LNode = __webpack_require__(3); +layoutBase.Layout = __webpack_require__(15); +layoutBase.LayoutConstants = __webpack_require__(0); +layoutBase.NeedlemanWunsch = __webpack_require__(25); + +module.exports = layoutBase; + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + + +function Emitter() { + this.listeners = []; +} + +var p = Emitter.prototype; + +p.addListener = function (event, callback) { + this.listeners.push({ + event: event, + callback: callback + }); +}; + +p.removeListener = function (event, callback) { + for (var i = this.listeners.length; i >= 0; i--) { + var l = this.listeners[i]; + + if (l.event === event && l.callback === callback) { + this.listeners.splice(i, 1); + } + } +}; + +p.emit = function (event, data) { + for (var i = 0; i < this.listeners.length; i++) { + var l = this.listeners[i]; + + if (event === l.event) { + l.callback(data); + } + } +}; + +module.exports = Emitter; + +/***/ }) +/******/ ]); +}); +}); + +var avsdfBase = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(layoutBase); +})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_0__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 6); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_0__; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This class implements data and functionality required for AVSDF layout per + * circle. + * + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var LGraph = __webpack_require__(0).LGraph; + +// ----------------------------------------------------------------------------- +// Section: Initializations +// ----------------------------------------------------------------------------- + +function AVSDFCircle(parent, graphMgr, vObject) { + LGraph.call(this, parent, graphMgr, vObject); + this.inOrder = undefined; + this.currentIndex = 0; + this.nodeSeparation = undefined; + this.stack = []; + this.perimeter = 0; + this.centerX = 0; + this.centerY = 0; + this.radius = 0; +} + +AVSDFCircle.prototype = Object.create(LGraph.prototype); + +for (var property in LGraph) { + AVSDFCircle[property] = LGraph[property]; +} + +AVSDFCircle.prototype.initOrdering = function () { + this.inOrder = []; +}; + +// ----------------------------------------------------------------------------- +// Section: Accessor Functions +// ----------------------------------------------------------------------------- + +// This function returns the array in which the nodes of this circle are kept in order. +AVSDFCircle.prototype.getOrder = function () { + return this.inOrder; +}; + +// This function returns the x-coordinate of the center of this circle. +AVSDFCircle.prototype.getCenterX = function () { + return this.centerX; +}; + +// This function returns the y-coordinate of the center of this circle. +AVSDFCircle.prototype.getCenterY = function () { + return this.centerY; +}; + +// This function returns the radius of this circle. +AVSDFCircle.prototype.getRadius = function () { + return this.radius; +}; + +// This function returns the total number of vertices of this circle. +AVSDFCircle.prototype.getSize = function () { + return this.getNodes().length; +}; + +// This function calculates and returns the total number of crossings in this +// circle by adding up the crossing number of individual nodes on it. +AVSDFCircle.prototype.getTotalCrossingOfCircle = function () { + var self = this; + var crossingNumber = 0; + + for (var node in self.inOrder) { + var nodeCrossing = node.getTotalCrossingOfEdges(); + if (nodeCrossing === -1) { + return -1; + } + crossingNumber += nodeCrossing; + } + + return crossingNumber / 4; +}; + +// This function checks whether or not all of the vertices of this circle are +// assigned an index on the circle. +AVSDFCircle.prototype.hasFinishedOrdering = function () { + return this.currentIndex === this.getNodes().length; +}; + +// This function returns the node separation of this circle. +AVSDFCircle.prototype.getNodeSeparation = function () { + return this.nodeSeparation; +}; + +// This function sets the node separation of this circle. +AVSDFCircle.prototype.setNodeSeparation = function (nodeSeparation) { + this.nodeSeparation = nodeSeparation; +}; + +// ----------------------------------------------------------------------------- +// Section: Remaining Functions +// ----------------------------------------------------------------------------- + +// This function traverses the vertices of this circle and corrects the angle +// of the vertices with respect to their circle indices. +AVSDFCircle.prototype.correctAngles = function () { + var self = this; + self.currentIndex = 0; + + self.inOrder.forEach(function (node) { + return self.putInOrder(node); + }); +}; + +// This function puts the given node on the circle in the current order and +// sets its angle appropriately. +AVSDFCircle.prototype.putInOrder = function (node) { + var self = this; + + var nodes = self.getNodes(); + + // Note that id attribute of a node is added before + // AVSDFLayout is called + var found = false; + for (var i = 0; i < nodes.length; i++) { + if (nodes[i].id == node.id) { + found = true; + break; + } + } + + if (!found) { + throw "The node must be a member of LGraph"; + } + + self.inOrder[self.currentIndex] = node; + node.setIndex(self.currentIndex); + + if (self.currentIndex === 0) { + node.setAngle(0.0); + } else { + node.setAngle(self.inOrder[self.currentIndex - 1].getAngle() + 2 * Math.PI * (node.getDiagonal() / 2 + self.nodeSeparation + self.inOrder[self.currentIndex - 1].getDiagonal() / 2) / self.perimeter); + } + + self.currentIndex++; +}; + +// This function returns the next node to be placed on this circle with +// respect to the AVSDF algorithm. +AVSDFCircle.prototype.findNodeToPlace = function () { + var self = this; + var sDegreeNode = undefined; + + // Find the smallest degree vertex if the stack is empty + if (self.stack.length === 0) { + sDegreeNode = self.findUnorderedSmallestDegreeNode(); + } + // Find the first vertex in the stack not yet placed + else { + var foundUnorderNode = false; + + while (!foundUnorderNode && !(self.stack.length === 0)) { + sDegreeNode = self.stack.pop(); + foundUnorderNode = !sDegreeNode.isOrdered(); + } + + if (!foundUnorderNode) { + sDegreeNode = undefined; + } + } + + // If no unordered vertex is found in the stack, find one + // from the remaining ones + if (sDegreeNode === undefined) { + sDegreeNode = self.findUnorderedSmallestDegreeNode(); + } + + // Add the unordered neighbors of this node to the stack + if (sDegreeNode !== undefined) { + var neighbors = sDegreeNode.getNeighborsSortedByDegree(); + + for (var i = neighbors.length - 1; i >= 0; i--) { + var neighbor = neighbors[i]; + + if (!neighbor.isOrdered()) // Check here for possible error + { + self.stack.push(neighbor); + } + } + } + + return sDegreeNode; +}; + +// This function calculates the radius of this circle with respect to the sizes +// of the vertices and the node separation parameter. +AVSDFCircle.prototype.calculateRadius = function () { + var self = this; + var totalDiagonal = 0; + + self.getNodes().forEach(function (node) { + return totalDiagonal += Math.sqrt(node.getWidth() * node.getWidth() + node.getHeight() * node.getHeight()); + }); + + self.perimeter = totalDiagonal + self.getNodes().length * self.nodeSeparation; + var radius = self.perimeter / (2 * Math.PI); + + // Check here for possible error + + self.getParent().setWidth(2 * radius); + self.getParent().setHeight(2 * radius); + self.getParent().setCenter(self.getParent().getWidth(), self.getParent().getHeight()); + + self.centerX = self.getParent().getCenterX(); + self.centerY = self.getParent().getCenterY(); + self.radius = self.getParent().getHeight() / 2; +}; + +// This function calculates the total number of crossings of all vertices of +// this circle. +AVSDFCircle.prototype.calculateEdgeCrossingsOfNodes = function () { + this.getNodes().forEach(function (node) { + return node.calculateTotalCrossing(); + }); +}; + +// This function sets the index of each vertex to its position in inOrder +// array. Note that index of a node can be different from its place in the +// array due to crossing reduction phase of the AVSDF algorithm. It loads +// old index values to vertices due to an increase in the number of +// crossings with the new indices. +AVSDFCircle.prototype.loadOldIndicesOfNodes = function () { + //this.inOrder.forEach( (node,index) => node.setIndex(index)); + var self = this; + for (var i = 0; i < this.inOrder.length; i++) { + self.inOrder[i].setIndex(i); + } +}; + +// This function sets the position of each node in inOrder array to its index. +// Note that index of a node can be different from its place in the inOrder +// array due to crossing reduction phase of the AVSDF algorithm. This function +// puts the nodes to their new index values in inOrder array due to a +// decrease in the number of crossings with the new indices. +AVSDFCircle.prototype.reOrderVertices = function () { + var self = this; + this.getNodes().forEach(function (node) { + return self.inOrder[node.getIndex()] = node; + }); +}; + +// This function finds and returns the unordered smallest degree vertex on +// this circle. +AVSDFCircle.prototype.findUnorderedSmallestDegreeNode = function () { + var minDegree = Number.MAX_SAFE_INTEGER; + var sDegreeNode = void 0; + + this.getNodes().forEach(function (node) { + if (node.getDegree() < minDegree && !node.isOrdered()) { + minDegree = node.getDegree(); + sDegreeNode = node; + } + }); + + return sDegreeNode; +}; + +module.exports = AVSDFCircle; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +var LayoutConstants = __webpack_require__(0).LayoutConstants; + +function AVSDFConstants() {} + +// AVSDFConstants inherits properties in LayoutConstants +for (var prop in LayoutConstants) { + AVSDFConstants[prop] = LayoutConstants[prop]; +} + +AVSDFConstants.DEFAULT_NODE_SEPARATION = 60; + +module.exports = AVSDFConstants; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This class implements data and functionality required for AVSDF layout per + * edge. + * + + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var LEdge = __webpack_require__(0).LEdge; + +// ----------------------------------------------------------------------------- +// Section: Initializations +// ----------------------------------------------------------------------------- + +function AVSDFEdge(source, target, vEdge) { + LEdge.call(this, source, target, vEdge); +} + +AVSDFEdge.prototype = Object.create(LEdge.prototype); + +for (var properties in LEdge) { + AVSDFEdge[properties] = LEdge[properties]; +} + +// ----------------------------------------------------------------------------- +// Section: Accessor Functions +// ----------------------------------------------------------------------------- + +// The function getOtherEnd returns the other end of this edge. +AVSDFEdge.prototype.getOtherEnd = function (node) { + return LEdge.prototype.getOtherEnd(node); +}; + +// ----------------------------------------------------------------------------- +// Section: Remaining Functions +// ----------------------------------------------------------------------------- + +// This function checks whether this edge crosses with the input edge. It +// returns false, if any of the vertices those edges are incident to are not +// yet placed on the circle. +AVSDFEdge.prototype.crossesWithEdge = function (otherEdge) { + var self = this; + var sourcePos = self.getSource().getIndex(); + var targetPos = self.getTarget().getIndex(); + var otherSourcePos = otherEdge.getSource().getIndex(); + var otherTargetPos = otherEdge.getTarget().getIndex(); + + // if any of the vertices those two edges are not yet placed + if (sourcePos === -1 || targetPos === -1 || otherSourcePos === -1 || otherTargetPos === -1) { + return false; + } + + var otherSourceDist = otherEdge.getSource().getCircDistWithTheNode(self.getSource()); + var otherTargetDist = otherEdge.getTarget().getCircDistWithTheNode(self.getSource()); + var thisTargetDist = self.getTarget().getCircDistWithTheNode(self.getSource()); + + if (thisTargetDist < Math.max(otherSourceDist, otherTargetDist) && thisTargetDist > Math.min(otherSourceDist, otherTargetDist) && otherTargetDist !== 0 && otherSourceDist !== 0) { + return true; + } + + return false; +}; + +// This function returns 1 if this edge crosses with the input edge, 0 +// otherwise. +AVSDFEdge.prototype.crossingWithEdge = function (otherEdge) { + var self = this; + var result = self.crossesWithEdge(otherEdge); + + return result ? 1 : 0; +}; + +// This function calculates the total number of crossings of this edge with +// all the edges given in the input list. +AVSDFEdge.prototype.calculateTotalCrossingWithList = function (edgeList) { + var self = this; + var totalCrossing = 0; + + edgeList.forEach(function (edge) { + return totalCrossing += self.crossingWithEdge(edge); + }); + + return totalCrossing; +}; + +module.exports = AVSDFEdge; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This class implements data and functionality required for AVSDF layout per + * node. + * + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var LNode = __webpack_require__(0).LNode; +__webpack_require__(0).Quicksort; + +// ----------------------------------------------------------------------------- +// Section: Initializations +// ----------------------------------------------------------------------------- + +function AVSDFNode(gm, vNode, loc, size) { + // Constructor 1: AVSDFNode(gm, vNode, loc, size) + if (loc !== undefined && size !== undefined) { + LNode.call(this, gm, vNode, loc, size); + } + // Constructor 2: AVSDFNode(gm, vNode) + else { + LNode.call(this, gm, vNode); + } + + // Angle of this node on the owner circle in radians + this.angle = 0; + + // Index of this node on the owner circle + this.circleIndex = -1; + + // Total number of crossings of the edges this node is incident to + this.totalCrossingOfEdges = -1; + + // Whether the current edge crossing number is valid or it needs to be + // recalculated + this.isCrossingNumberValid = false; +} + +AVSDFNode.prototype = Object.create(LNode.prototype); +for (var properties in LNode) { + AVSDFNode[properties] = LNode[properties]; +} + +// ----------------------------------------------------------------------------- +// Section: Accessor Functions +// ----------------------------------------------------------------------------- + +// This function returns the circle this node is owned by. +AVSDFNode.prototype.getCircle = function () { + return this.getOwner(); +}; + +// This function sets the index of this node on the circle, and sets the +// crossing number invalid. Due to the index change of the node; it needs to +// be recalculated. +AVSDFNode.prototype.setIndex = function (index) { + this.circleIndex = index; + this.isCrossingNumberValid = false; +}; + +// This function returns the index of this node in the ordering of its owner +// circle. Here -1 means that the vertex is not yet placed on its owner +//circle. +AVSDFNode.prototype.getIndex = function () { + return this.circleIndex; +}; + +// This function returns the array of the neigbors of this node sorted in +// ascending order. +AVSDFNode.prototype.getNeighborsSortedByDegree = function () { + var self = this; + + var result = Array.from(self.getNeighborsList()); + result = result.filter(function (node) { + return node.getIndex() === -1; + }); + + result.sort(function (a, b) { + return a.getDegree() - b.getDegree(); + }); + + return result; +}; + +// This function returns the degree of this node. +AVSDFNode.prototype.getDegree = function () { + return this.getEdges().length; +}; + +// This function returns whether or not this node is currently placed on its +// owner circle. +AVSDFNode.prototype.isOrdered = function () { + return this.getIndex() > -1; +}; + +// This function sets the angle of this node w.r.t. its owner circle. Here +// the angle value is in radian. +AVSDFNode.prototype.setAngle = function (angle) { + this.angle = angle; +}; + +// This function returns the angle of this node w.r.t. its owner circle. Here +// the angle value is in radian. +AVSDFNode.prototype.getAngle = function () { + return this.angle; +}; + +// This function returns the index difference of this node with the input +// node. Note that the index difference cannot be negative if both nodes are +// placed on the circle. Here -1 means at least one of the nodes are not yet +// placed on the circle. +AVSDFNode.prototype.getCircDistWithTheNode = function (refNode) { + var self = this; + var otherIndex = refNode.getIndex(); + + if (otherIndex === -1 || self.getIndex() === -1) { + return -1; + } + + var diff = self.getIndex() - otherIndex; + + if (diff < 0) { + diff += self.getCircle().getSize(); + } + + return diff; +}; + +// This function finds the number of edge crossings between the edges of +// this node and the edges of the input one. +AVSDFNode.prototype.getCrossingNumberWithNode = function (otherNode) { + var self = this; + var totalCrossing = 0; + + self.getEdges().forEach(function (edge) { + otherNode.getEdges().forEach(function (otherEdge) { + totalCrossing += edge.crossingWithEdge(otherEdge); + }); + }); + + return totalCrossing; +}; + +// This function returns the total number of edge crossings. If the previously +// calculated value is not valid due to an index change on the circle, then +// a recalculation is performed. +AVSDFNode.prototype.getTotalCrossingOfEdges = function () { + var self = this; + + if (!self.isCrossingNumberValid) { + self.calculateTotalCrossing(); + self.isCrossingNumberValid = true; + } + + return self.totalCrossingOfEdges; +}; + +// ----------------------------------------------------------------------------- +// Section: Remaining Functions +// ----------------------------------------------------------------------------- + +// This function calculates the total number of crossings the edges of this +// node cause. +AVSDFNode.prototype.calculateTotalCrossing = function () { + var self = this; + var temp_crossing_count = 0; + var temp_edge_list = []; + temp_edge_list.push.apply(temp_edge_list, self.getCircle().getEdges()); + temp_edge_list = temp_edge_list.filter(function (ele) { + return self.getEdges().indexOf(ele) < 0; + }); + + self.getEdges().forEach(function (edge) { + return temp_crossing_count += edge.calculateTotalCrossingWithList(temp_edge_list); + }); + + self.totalCrossingOfEdges = temp_crossing_count; +}; + +module.exports = AVSDFNode; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This class implements the overall layout process for the AVSDF algorithm + * (Circular Drawing Algorithm by He and Sykora). + * + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var Layout = __webpack_require__(0).Layout; +var AVSDFConstants = __webpack_require__(2); +var AVSDFCircle = __webpack_require__(1); +var AVSDFNode = __webpack_require__(4); +var AVSDFEdge = __webpack_require__(3); + +// ----------------------------------------------------------------------------- +// Section: Initializations +// ----------------------------------------------------------------------------- + +// Constructor +function AVSDFLayout() { + Layout.call(this); + this.nodeSeparation = AVSDFConstants.DEFAULT_NODE_SEPARATION; +} + +AVSDFLayout.prototype = Object.create(Layout.prototype); + +for (var property in Layout) { + AVSDFLayout[property] = Layout[property]; +} + +AVSDFLayout.prototype.newGraph = function (vObject) { + this.avsdfCircle = new AVSDFCircle(null, this.graphManager, vObject); + + return this.avsdfCircle; +}; + +AVSDFLayout.prototype.newNode = function (vNode) { + return new AVSDFNode(this.graphManager, vNode); +}; + +AVSDFLayout.prototype.newEdge = function (vEdge) { + return new AVSDFEdge(null, null, vEdge); +}; + +// ----------------------------------------------------------------------------- +// Section: Accessor Functions +// ----------------------------------------------------------------------------- + +// This function returns the position data for all nodes +AVSDFLayout.prototype.getPositionsData = function () { + var allNodes = this.graphManager.getAllNodes(); + var pData = {}; + + for (var i = 0; i < allNodes.length; i++) { + var rect = allNodes[i].rect; + var id = allNodes[i].id; + + pData[id] = { + id: id, + x: rect.getCenterX(), + y: rect.getCenterY(), + w: rect.width, + h: rect.height + }; + } + + return pData; +}; + +// ----------------------------------------------------------------------------- +// Section: Layout Related +// ----------------------------------------------------------------------------- + +/** + * This function performs layout on constructed l-level graph. + * It returns true on success, false otherwise. + * Important!: If you want to see the results of this function then, after this function is called, you have to calculate + * and set the positions of every node. To do this call updateNodeCoordinates. However, updateNodeAngles on the other + * hand is not needed (redundant) for this function. + */ +AVSDFLayout.prototype.layout = function () { + var self = this; + + // Check if graph contains any compound structures + if (self.graphManager.getGraphs().length > 1) { + return false; + } + + var clusterGraph = this.avsdfCircle; // Fixed reference, but now it is a bit redundant + + clusterGraph.setNodeSeparation(this.nodeSeparation); + clusterGraph.calculateRadius(); + clusterGraph.initOrdering(); + + while (!clusterGraph.hasFinishedOrdering()) { + var node = clusterGraph.findNodeToPlace(); + clusterGraph.putInOrder(node); + } + + return true; +}; + +// This function updates the angle (in radians) property of AVSDFNode elements in the circle +AVSDFLayout.prototype.updateNodeAngles = function () { + this.graphManager.getRoot().correctAngles(); //AVSDFCircle object +}; + +// This function traverses the vertices of the graph and sets their correct coordinates with respect to the owner circle. +AVSDFLayout.prototype.updateNodeCoordinates = function () { + var clusterGraph = this.graphManager.getRoot(); + + clusterGraph.getNodes().forEach(function (node) { + node.setCenter(clusterGraph.getCenterX() + clusterGraph.getRadius() * Math.cos(node.getAngle()), clusterGraph.getCenterY() + clusterGraph.getRadius() * Math.sin(node.getAngle())); + }); +}; + +// ----------------------------------------------------------------------------- +// Section: Post Processing +// ----------------------------------------------------------------------------- + +/** + * This method implements the post processing step of the algorithm, which + * tries to minimize the number of edges further with respect to the local + * adjusting algorithm described by He and Sykora. + */ +AVSDFLayout.prototype.initPostProcess = function () { + this.avsdfCircle.calculateEdgeCrossingsOfNodes(); + + var list = this.avsdfCircle.getNodes(); + + list.sort(function (a, b) { + return b.getTotalCrossingOfEdges() - a.getTotalCrossingOfEdges(); + }); + + return list; +}; + +AVSDFLayout.prototype.oneStepPostProcess = function (node) { + var self = this; + + var currentCrossingNumber = node.getTotalCrossingOfEdges(); + var newCrossingNumber = void 0; + + var neighbours = Array.from(node.getNeighborsList()); + + for (var j = 0; j < neighbours.length; j++) { + var neighbour = neighbours[j]; + + var oldIndex = node.getIndex(); + var newIndex = (neighbour.getIndex() + 1) % self.avsdfCircle.getSize(); + + if (oldIndex !== newIndex) { + node.setIndex(newIndex); + + if (oldIndex < node.getIndex()) { + oldIndex += self.avsdfCircle.getSize(); + } + + var index = node.getIndex(); + + while (index < oldIndex) { + var temp = self.avsdfCircle.getOrder()[index % self.avsdfCircle.getSize()]; + temp.setIndex((temp.getIndex() + 1) % self.avsdfCircle.getSize()); + index += 1; + } + + node.calculateTotalCrossing(); + newCrossingNumber = node.getTotalCrossingOfEdges(); + + if (newCrossingNumber >= currentCrossingNumber) { + self.avsdfCircle.loadOldIndicesOfNodes(); + } else { + self.avsdfCircle.reOrderVertices(); + currentCrossingNumber = newCrossingNumber; + } + } + } +}; + +module.exports = AVSDFLayout; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + +var avsdfBase = {}; + +avsdfBase.layoutBase = __webpack_require__(0); +avsdfBase.AVSDFConstants = __webpack_require__(2); +avsdfBase.AVSDFEdge = __webpack_require__(3); +avsdfBase.AVSDFCircle = __webpack_require__(1); +avsdfBase.AVSDFLayout = __webpack_require__(5); +avsdfBase.AVSDFNode = __webpack_require__(4); + +module.exports = avsdfBase; + +/***/ }) +/******/ ]); +}); +}); + +var cytoscapeAvsdf = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(avsdfBase); +})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_0__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 3); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_0__; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +// Simple, internal Object.assign() polyfill for options objects etc. + +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + + return tgt; +}; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * + * Choose the type of layout that best suits your usecase as a starting point. + * + * A discrete layout is one that algorithmically sets resultant positions. It + * does not have intermediate positions. + * + * A continuous layout is one that updates positions continuously, like a force- + * directed / physics simulation layout. + */ + +module.exports = __webpack_require__(4); + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +var impl = __webpack_require__(2); + +// registers the extension on a cytoscape lib ref +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + cytoscape('layout', 'avsdf', impl); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * This class implements the overall layout process for the + * Adjacent Vertex with Smallest Degree First (AVSDF) algorithm. + * (Circular Drawing Algorithm by Hongmei He & Ondrej Sýkora). + * + * @author Doruk Çakmakçı + * @author Alihan Okka + * + * Copyright: i-Vis (Information Visualization) Research Lab, Bilkent University, 2019 - present +*/ + +// cytosscape.js-avsdf REQUIRES avsdf-base library elements +var AVSDFLayout = __webpack_require__(0).AVSDFLayout; +var AVSDFNode = __webpack_require__(0).AVSDFNode; +var AVSDFConstants = __webpack_require__(0).AVSDFConstants; +var PointD = __webpack_require__(0).layoutBase.PointD; +var DimensionD = __webpack_require__(0).layoutBase.DimensionD; + +// Cytoscape-extention template requirements +// More details can be found in NPM 'slush-cytoscape-extension' package +var assign = __webpack_require__(1); +var ContinuousLayout = __webpack_require__(6); + +var defaults = { + ready: function ready() {}, // Called on `layoutready` + stop: function stop() {}, // Called on `layoutstop` + refresh: 30, // number of ticks per frame; higher is faster but more jerky + fit: true, // Whether to fit the network view after when done + padding: 10, // Padding on fit + randomize: false, // Whether to enable incremental mode + animate: 'end', // Type of layout animation. The option set is {'during', 'end', false} + animationDuration: 500, // Duration for animate:end + nodeSeparation: 60 // How apart the nodes are +}; + +/** + * This is the main class that does all the functionality. + * The class is utilized by functions in the continuous-base folder. + */ + +var AVSDF = function (_ContinuousLayout) { + _inherits(AVSDF, _ContinuousLayout); + + function AVSDF(options) { + _classCallCheck(this, AVSDF); + + // Whether node separation value is used + var _this = _possibleConstructorReturn(this, (AVSDF.__proto__ || Object.getPrototypeOf(AVSDF)).call(this, assign({}, defaults, options))); + + if (options.nodeSeparation != null) AVSDFConstants.DEFAULT_NODE_SEPARATION = options.nodeSeparation;else AVSDFConstants.DEFAULT_NODE_SEPARATION = defaults.nodeSeparation; + return _this; + } + + /** + * Initializing AVSDF elements and arranging the nodes of the graph around the circle + */ + + + _createClass(AVSDF, [{ + key: 'prerun', + value: function prerun() { + var state = this.state; // options object combined with current state + + // Initialize AVSDF elements and their requirements + var avsdfLayout = this.avsdfLayout = new AVSDFLayout(); + var graphManager = this.graphManager = avsdfLayout.newGraphManager(); + var root = this.root = graphManager.addRoot(); + var nodes = state.nodes; + var edges = state.edges; + + // Getting nodes of cytoscape and converting it to AVSDF structure + this.idToLNode = {}; + this.processChildrenList(root, nodes, avsdfLayout); + + // Getting edges of cytoscape and transfering it to GraphManager + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var sourceNode = this.idToLNode[edge.data("source")]; + var targetNode = this.idToLNode[edge.data("target")]; + if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length === 0) { + var e1 = graphManager.add(avsdfLayout.newEdge(), sourceNode, targetNode); + e1.id = edge.id(); + } + } + + // Running the AVSDF layout. + // Note: This function doesn't do post-processing. Plus, nodes have to be positioned. + // See AVSDFLayout for details. + avsdfLayout.layout(); + + // We need to calculate the initial circle position if we want to render it + avsdfLayout.updateNodeCoordinates(); + + // Post process is iterated over the sorted list of vertex degrees (descending) + this.sortedByDegreeList = avsdfLayout.initPostProcess(); + } + + /** + * Runs this in each iteration + */ + + }, { + key: 'tick', + value: function tick() { + var _this2 = this; + + var state = this.state; + + // This function is used for getting coordinates from AVSDF elements and passing it to cytoscape + var positions = this.avsdfLayout.getPositionsData(); + state.nodes.forEach(function (n) { + var s = _this2.getScratch(n); + + // example : put node at random position + s.x = positions[n.data('id')].x; + s.y = positions[n.data('id')].y; + }); + + if (state.tickIndex >= state.nodes.size()) return true; + + this.avsdfLayout.oneStepPostProcess(this.sortedByDegreeList[state.tickIndex]); + this.avsdfLayout.updateNodeAngles(); + this.avsdfLayout.updateNodeCoordinates(); + } + + /** + * Runs this function after the layout is done ticking + */ + + }, { + key: 'postrun', + value: function postrun() {} + + /** + * Clean up any object refs that could prevent garbage collection, etc. + */ + + }, { + key: 'destroy', + value: function destroy() { + _get(AVSDF.prototype.__proto__ || Object.getPrototypeOf(AVSDF.prototype), 'destroy', this).call(this); + return this; + } + + /** + * Transition from cytoscape nodes to AVSDF elements + */ + + }, { + key: 'processChildrenList', + value: function processChildrenList(parent, children, layout) { + var size = children.length; + for (var i = 0; i < size; i++) { + var theChild = children[i]; + var theNode = void 0; + + //Label dimensions are NOT included when calculating node dimensions + var dimensions = theChild.layoutDimensions({ + nodeDimensionsIncludeLabels: false + }); + + if (theChild.outerWidth() != null && theChild.outerHeight() != null) { + theNode = parent.add(new AVSDFNode(layout.graphManager, null, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h)))); + } else { + theNode = parent.add(new AVSDFNode(this.graphManager)); + } + + // Attach id to the layout node + theNode.id = theChild.data("id"); + + // Attach the paddings of cy node to layout node + theNode.paddingLeft = parseInt(theChild.css('padding')); + theNode.paddingTop = parseInt(theChild.css('padding')); + theNode.paddingRight = parseInt(theChild.css('padding')); + theNode.paddingBottom = parseInt(theChild.css('padding')); + + // Map the layout node + this.idToLNode[theChild.data("id")] = theNode; + + if (isNaN(theNode.rect.x)) { + theNode.rect.x = 0; + } + + if (isNaN(theNode.rect.y)) { + theNode.rect.y = 0; + } + } + } + }]); + + return AVSDF; +}(ContinuousLayout); + +module.exports = AVSDF; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + +// general default options for force-directed layout + +module.exports = Object.freeze({ + animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout + refresh: 10, // number of ticks per frame; higher is faster but more jerky + maxIterations: 1000, // max iterations before the layout will bail out + ungrabifyWhileSimulating: false, // so you can't drag nodes during layout + fit: true, // on every layout reposition of nodes, fit the viewport + padding: 30, // padding around the simulation + boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + + // layout event callbacks + ready: function ready() {}, // on layoutready + stop: function stop() {}, // on layoutstop + + // positioning options + randomize: false, // use random node positions at beginning of layout + + // infinite layout options + infinite: false // overrides all other options for a forces-all-the-time mode +}); + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + A generic continuous layout class + */ + +var assign = __webpack_require__(1); +var defaults = __webpack_require__(5); +var makeBoundingBox = __webpack_require__(7); + +var _require = __webpack_require__(8), + setInitialPositionState = _require.setInitialPositionState, + refreshPositions = _require.refreshPositions, + getNodePositionData = _require.getNodePositionData; + +var _require2 = __webpack_require__(9), + multitick = _require2.multitick; + +var Layout = function () { + function Layout(options) { + _classCallCheck(this, Layout); + + var o = this.options = assign({}, defaults, options); + + var s = this.state = assign({}, o, { + layout: this, + nodes: o.eles.nodes(), + edges: o.eles.edges(), + tickIndex: 0, + firstUpdate: true + }); + + s.animateEnd = o.animate && o.animate === 'end'; + s.animateContinuously = o.animate && !s.animateEnd; + } + + _createClass(Layout, [{ + key: 'getScratch', + value: function getScratch(el) { + var name = this.state.name; + var scratch = el.scratch(name); + + if (!scratch) { + scratch = {}; + + el.scratch(name, scratch); + } + + return scratch; + } + }, { + key: 'run', + value: function run() { + var l = this; + var s = this.state; + + s.tickIndex = 0; + s.firstUpdate = true; + s.startTime = Date.now(); + s.running = true; + + s.currentBoundingBox = makeBoundingBox(s.boundingBox, s.cy); + + if (s.ready) { + l.one('ready', s.ready); + } + if (s.stop) { + l.one('stop', s.stop); + } + + s.nodes.forEach(function (n) { + return setInitialPositionState(n, s); + }); + + l.prerun(s); + + if (s.animateContinuously) { + var ungrabify = function ungrabify(node) { + if (!s.ungrabifyWhileSimulating) { + return; + } + + var grabbable = getNodePositionData(node, s).grabbable = node.grabbable(); + + if (grabbable) { + node.ungrabify(); + } + }; + + var regrabify = function regrabify(node) { + if (!s.ungrabifyWhileSimulating) { + return; + } + + var grabbable = getNodePositionData(node, s).grabbable; + + if (grabbable) { + node.grabify(); + } + }; + + var updateGrabState = function updateGrabState(node) { + return getNodePositionData(node, s).grabbed = node.grabbed(); + }; + + var onGrab = function onGrab(_ref) { + var target = _ref.target; + + updateGrabState(target); + }; + + var onFree = onGrab; + + var onDrag = function onDrag(_ref2) { + var target = _ref2.target; + + var p = getNodePositionData(target, s); + var tp = target.position(); + + p.x = tp.x; + p.y = tp.y; + }; + + var listenToGrab = function listenToGrab(node) { + node.on('grab', onGrab); + node.on('free', onFree); + node.on('drag', onDrag); + }; + + var unlistenToGrab = function unlistenToGrab(node) { + node.removeListener('grab', onGrab); + node.removeListener('free', onFree); + node.removeListener('drag', onDrag); + }; + + var fit = function fit() { + if (s.fit && s.animateContinuously) { + s.cy.fit(s.padding); + } + }; + + var onNotDone = function onNotDone() { + refreshPositions(s.nodes, s); + fit(); + + requestAnimationFrame(_frame); + }; + + var _frame = function _frame() { + multitick(s, onNotDone, _onDone); + }; + + var _onDone = function _onDone() { + refreshPositions(s.nodes, s); + fit(); + + s.nodes.forEach(function (n) { + regrabify(n); + unlistenToGrab(n); + }); + + s.running = false; + + l.emit('layoutstop'); + }; + + l.emit('layoutstart'); + + s.nodes.forEach(function (n) { + ungrabify(n); + listenToGrab(n); + }); + + _frame(); // kick off + } else { + var done = false; + var _onNotDone = function _onNotDone() {}; + var _onDone2 = function _onDone2() { + return done = true; + }; + + while (!done) { + multitick(s, _onNotDone, _onDone2); + } + + s.eles.layoutPositions(this, s, function (node) { + var pd = getNodePositionData(node, s); + + return { x: pd.x, y: pd.y }; + }); + } + + l.postrun(s); + + return this; // chaining + } + }, { + key: 'prerun', + value: function prerun() {} + }, { + key: 'postrun', + value: function postrun() {} + }, { + key: 'tick', + value: function tick() {} + }, { + key: 'stop', + value: function stop() { + this.state.running = false; + + return this; // chaining + } + }, { + key: 'destroy', + value: function destroy() { + return this; // chaining + } + }]); + + return Layout; +}(); + +module.exports = Layout; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + +module.exports = function (bb, cy) { + if (bb == null) { + bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() }; + } else { + // copy + bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h }; + } + + if (bb.x2 == null) { + bb.x2 = bb.x1 + bb.w; + } + if (bb.w == null) { + bb.w = bb.x2 - bb.x1; + } + if (bb.y2 == null) { + bb.y2 = bb.y1 + bb.h; + } + if (bb.h == null) { + bb.h = bb.y2 - bb.y1; + } + + return bb; +}; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + + +var assign = __webpack_require__(1); + +var setInitialPositionState = function setInitialPositionState(node, state) { + var p = node.position(); + var bb = state.currentBoundingBox; + var scratch = node.scratch(state.name); + + if (scratch == null) { + scratch = {}; + + node.scratch(state.name, scratch); + } + + assign(scratch, state.randomize ? { + x: bb.x1 + Math.round(Math.random() * bb.w), + y: bb.y1 + Math.round(Math.random() * bb.h) + } : { + x: p.x, + y: p.y + }); + + scratch.locked = node.locked(); +}; + +var getNodePositionData = function getNodePositionData(node, state) { + return node.scratch(state.name); +}; + +var refreshPositions = function refreshPositions(nodes, state) { + nodes.positions(function (node) { + var scratch = node.scratch(state.name); + + return { + x: scratch.x, + y: scratch.y + }; + }); +}; + +module.exports = { setInitialPositionState: setInitialPositionState, getNodePositionData: getNodePositionData, refreshPositions: refreshPositions }; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + + +var nop = function nop() {}; + +var tick = function tick(state) { + var s = state; + var l = state.layout; + + var tickIndicatesDone = l.tick(s); + + if (s.firstUpdate) { + if (s.animateContinuously) { + // indicate the initial positions have been set + s.layout.emit('layoutready'); + } + s.firstUpdate = false; + } + + s.tickIndex++; + + Date.now() - s.startTime; + + return !s.infinite && tickIndicatesDone; +}; + +var multitick = function multitick(state) { + var onNotDone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : nop; + var onDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : nop; + + var done = false; + var s = state; + + for (var i = 0; i < s.refresh; i++) { + done = !s.running || tick(s); + + if (done) { + break; + } + } + + if (!done) { + onNotDone(); + } else { + onDone(); + } +}; + +module.exports = { tick: tick, multitick: multitick }; + +/***/ }) +/******/ ]); +}); +}); + +var avsdf = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeAvsdf); + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +var _listCacheClear = listCacheClear; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +var eq_1 = eq; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq_1(array[length][0], key)) { + return length; + } + } + return -1; +} + +var _assocIndexOf = assocIndexOf; + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = _assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +var _listCacheDelete = listCacheDelete; + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = _assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +var _listCacheGet = listCacheGet; + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return _assocIndexOf(this.__data__, key) > -1; +} + +var _listCacheHas = listCacheHas; + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = _assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +var _listCacheSet = listCacheSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = _listCacheClear; +ListCache.prototype['delete'] = _listCacheDelete; +ListCache.prototype.get = _listCacheGet; +ListCache.prototype.has = _listCacheHas; +ListCache.prototype.set = _listCacheSet; + +var _ListCache = ListCache; + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new _ListCache; + this.size = 0; +} + +var _stackClear = stackClear; + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +var _stackDelete = stackDelete; + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +var _stackGet = stackGet; + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +var _stackHas = stackHas; + +/** Detect free variable `global` from Node.js. */ + +var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + +var _freeGlobal = freeGlobal; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = _freeGlobal || freeSelf || Function('return this')(); + +var _root = root; + +/** Built-in value references. */ +var Symbol$1 = _root.Symbol; + +var _Symbol = Symbol$1; + +/** Used for built-in method references. */ +var objectProto$i = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$f = objectProto$i.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString$1 = objectProto$i.toString; + +/** Built-in value references. */ +var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty$f.call(value, symToStringTag$1), + tag = value[symToStringTag$1]; + + try { + value[symToStringTag$1] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString$1.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag$1] = tag; + } else { + delete value[symToStringTag$1]; + } + } + return result; +} + +var _getRawTag = getRawTag; + +/** Used for built-in method references. */ +var objectProto$h = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto$h.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +var _objectToString = objectToString; + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? _getRawTag(value) + : _objectToString(value); +} + +var _baseGetTag = baseGetTag; + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +var isObject_1 = isObject; + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag$2 = '[object Function]', + genTag$1 = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject_1(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = _baseGetTag(value); + return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag; +} + +var isFunction_1 = isFunction; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = _root['__core-js_shared__']; + +var _coreJsData = coreJsData; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +var _isMasked = isMasked; + +/** Used for built-in method references. */ +var funcProto$2 = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString$2 = funcProto$2.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString$2.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +var _toSource = toSource; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto$1 = Function.prototype, + objectProto$g = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString$1 = funcProto$1.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty$e = objectProto$g.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString$1.call(hasOwnProperty$e).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject_1(value) || _isMasked(value)) { + return false; + } + var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor; + return pattern.test(_toSource(value)); +} + +var _baseIsNative = baseIsNative; + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +var _getValue = getValue; + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = _getValue(object, key); + return _baseIsNative(value) ? value : undefined; +} + +var _getNative = getNative; + +/* Built-in method references that are verified to be native. */ +var Map$1 = _getNative(_root, 'Map'); + +var _Map = Map$1; + +/* Built-in method references that are verified to be native. */ +var nativeCreate = _getNative(Object, 'create'); + +var _nativeCreate = nativeCreate; + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = _nativeCreate ? _nativeCreate(null) : {}; + this.size = 0; +} + +var _hashClear = hashClear; + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +var _hashDelete = hashDelete; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto$f = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$d = objectProto$f.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (_nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED$2 ? undefined : result; + } + return hasOwnProperty$d.call(data, key) ? data[key] : undefined; +} + +var _hashGet = hashGet; + +/** Used for built-in method references. */ +var objectProto$e = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$c = objectProto$e.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$c.call(data, key); +} + +var _hashHas = hashHas; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value; + return this; +} + +var _hashSet = hashSet; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = _hashClear; +Hash.prototype['delete'] = _hashDelete; +Hash.prototype.get = _hashGet; +Hash.prototype.has = _hashHas; +Hash.prototype.set = _hashSet; + +var _Hash = Hash; + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new _Hash, + 'map': new (_Map || _ListCache), + 'string': new _Hash + }; +} + +var _mapCacheClear = mapCacheClear; + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +var _isKeyable = isKeyable; + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return _isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +var _getMapData = getMapData; + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = _getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +var _mapCacheDelete = mapCacheDelete; + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return _getMapData(this, key).get(key); +} + +var _mapCacheGet = mapCacheGet; + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return _getMapData(this, key).has(key); +} + +var _mapCacheHas = mapCacheHas; + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = _getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +var _mapCacheSet = mapCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = _mapCacheClear; +MapCache.prototype['delete'] = _mapCacheDelete; +MapCache.prototype.get = _mapCacheGet; +MapCache.prototype.has = _mapCacheHas; +MapCache.prototype.set = _mapCacheSet; + +var _MapCache = MapCache; + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE$1 = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof _ListCache) { + var pairs = data.__data__; + if (!_Map || (pairs.length < LARGE_ARRAY_SIZE$1 - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new _MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +var _stackSet = stackSet; + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new _ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = _stackClear; +Stack.prototype['delete'] = _stackDelete; +Stack.prototype.get = _stackGet; +Stack.prototype.has = _stackHas; +Stack.prototype.set = _stackSet; + +var _Stack = Stack; + +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +var _arrayEach = arrayEach; + +var defineProperty = (function() { + try { + var func = _getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +var _defineProperty = defineProperty; + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && _defineProperty) { + _defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +var _baseAssignValue = baseAssignValue; + +/** Used for built-in method references. */ +var objectProto$d = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$b = objectProto$d.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty$b.call(object, key) && eq_1(objValue, value)) || + (value === undefined && !(key in object))) { + _baseAssignValue(object, key, value); + } +} + +var _assignValue = assignValue; + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + _baseAssignValue(object, key, newValue); + } else { + _assignValue(object, key, newValue); + } + } + return object; +} + +var _copyObject = copyObject; + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +var _baseTimes = baseTimes; + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +var isObjectLike_1 = isObjectLike; + +/** `Object#toString` result references. */ +var argsTag$3 = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike_1(value) && _baseGetTag(value) == argsTag$3; +} + +var _baseIsArguments = baseIsArguments; + +/** Used for built-in method references. */ +var objectProto$c = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$a = objectProto$c.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) { + return isObjectLike_1(value) && hasOwnProperty$a.call(value, 'callee') && + !propertyIsEnumerable$1.call(value, 'callee'); +}; + +var isArguments_1 = isArguments; + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +var isArray_1 = isArray; + +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +var stubFalse_1 = stubFalse; + +var isBuffer_1 = createCommonjsModule(function (module, exports) { +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? _root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse_1; + +module.exports = isBuffer; +}); + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER$1 = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER$1 : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +var _isIndex = isIndex; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +var isLength_1 = isLength; + +/** `Object#toString` result references. */ +var argsTag$2 = '[object Arguments]', + arrayTag$2 = '[object Array]', + boolTag$3 = '[object Boolean]', + dateTag$3 = '[object Date]', + errorTag$2 = '[object Error]', + funcTag$1 = '[object Function]', + mapTag$7 = '[object Map]', + numberTag$3 = '[object Number]', + objectTag$4 = '[object Object]', + regexpTag$3 = '[object RegExp]', + setTag$7 = '[object Set]', + stringTag$4 = '[object String]', + weakMapTag$2 = '[object WeakMap]'; + +var arrayBufferTag$3 = '[object ArrayBuffer]', + dataViewTag$4 = '[object DataView]', + float32Tag$2 = '[object Float32Array]', + float64Tag$2 = '[object Float64Array]', + int8Tag$2 = '[object Int8Array]', + int16Tag$2 = '[object Int16Array]', + int32Tag$2 = '[object Int32Array]', + uint8Tag$2 = '[object Uint8Array]', + uint8ClampedTag$2 = '[object Uint8ClampedArray]', + uint16Tag$2 = '[object Uint16Array]', + uint32Tag$2 = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = +typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = +typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = +typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = +typedArrayTags[uint32Tag$2] = true; +typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = +typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = +typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = +typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = +typedArrayTags[mapTag$7] = typedArrayTags[numberTag$3] = +typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = +typedArrayTags[setTag$7] = typedArrayTags[stringTag$4] = +typedArrayTags[weakMapTag$2] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike_1(value) && + isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)]; +} + +var _baseIsTypedArray = baseIsTypedArray; + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +var _baseUnary = baseUnary; + +var _nodeUtil = createCommonjsModule(function (module, exports) { +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && _freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; +}); + +/* Node.js helper references. */ +var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray; + +var isTypedArray_1 = isTypedArray; + +/** Used for built-in method references. */ +var objectProto$b = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$9 = objectProto$b.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray_1(value), + isArg = !isArr && isArguments_1(value), + isBuff = !isArr && !isArg && isBuffer_1(value), + isType = !isArr && !isArg && !isBuff && isTypedArray_1(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? _baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty$9.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + _isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +var _arrayLikeKeys = arrayLikeKeys; + +/** Used for built-in method references. */ +var objectProto$a = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$a; + + return value === proto; +} + +var _isPrototype = isPrototype; + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +var _overArg = overArg; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = _overArg(Object.keys, Object); + +var _nativeKeys = nativeKeys; + +/** Used for built-in method references. */ +var objectProto$9 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$8 = objectProto$9.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!_isPrototype(object)) { + return _nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty$8.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +var _baseKeys = baseKeys; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength_1(value.length) && !isFunction_1(value); +} + +var isArrayLike_1 = isArrayLike; + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object); +} + +var keys_1 = keys; + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && _copyObject(source, keys_1(source), object); +} + +var _baseAssign = baseAssign; + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +var _nativeKeysIn = nativeKeysIn; + +/** Used for built-in method references. */ +var objectProto$8 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$7 = objectProto$8.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject_1(object)) { + return _nativeKeysIn(object); + } + var isProto = _isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty$7.call(object, key)))) { + result.push(key); + } + } + return result; +} + +var _baseKeysIn = baseKeysIn; + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object); +} + +var keysIn_1 = keysIn; + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && _copyObject(source, keysIn_1(source), object); +} + +var _baseAssignIn = baseAssignIn; + +var _cloneBuffer = createCommonjsModule(function (module, exports) { +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? _root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +module.exports = cloneBuffer; +}); + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +var _copyArray = copyArray; + +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +var _arrayFilter = arrayFilter; + +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +var stubArray_1 = stubArray; + +/** Used for built-in method references. */ +var objectProto$7 = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto$7.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols$1 = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols$1 ? stubArray_1 : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return _arrayFilter(nativeGetSymbols$1(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +var _getSymbols = getSymbols; + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return _copyObject(source, _getSymbols(source), object); +} + +var _copySymbols = copySymbols; + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +var _arrayPush = arrayPush; + +/** Built-in value references. */ +var getPrototype = _overArg(Object.getPrototypeOf, Object); + +var _getPrototype = getPrototype; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray_1 : function(object) { + var result = []; + while (object) { + _arrayPush(result, _getSymbols(object)); + object = _getPrototype(object); + } + return result; +}; + +var _getSymbolsIn = getSymbolsIn; + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return _copyObject(source, _getSymbolsIn(source), object); +} + +var _copySymbolsIn = copySymbolsIn; + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray_1(object) ? result : _arrayPush(result, symbolsFunc(object)); +} + +var _baseGetAllKeys = baseGetAllKeys; + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return _baseGetAllKeys(object, keys_1, _getSymbols); +} + +var _getAllKeys = getAllKeys; + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return _baseGetAllKeys(object, keysIn_1, _getSymbolsIn); +} + +var _getAllKeysIn = getAllKeysIn; + +/* Built-in method references that are verified to be native. */ +var DataView = _getNative(_root, 'DataView'); + +var _DataView = DataView; + +/* Built-in method references that are verified to be native. */ +var Promise$1 = _getNative(_root, 'Promise'); + +var _Promise = Promise$1; + +/* Built-in method references that are verified to be native. */ +var Set$1 = _getNative(_root, 'Set'); + +var _Set = Set$1; + +/* Built-in method references that are verified to be native. */ +var WeakMap = _getNative(_root, 'WeakMap'); + +var _WeakMap = WeakMap; + +/** `Object#toString` result references. */ +var mapTag$6 = '[object Map]', + objectTag$3 = '[object Object]', + promiseTag = '[object Promise]', + setTag$6 = '[object Set]', + weakMapTag$1 = '[object WeakMap]'; + +var dataViewTag$3 = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = _toSource(_DataView), + mapCtorString = _toSource(_Map), + promiseCtorString = _toSource(_Promise), + setCtorString = _toSource(_Set), + weakMapCtorString = _toSource(_WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = _baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$3) || + (_Map && getTag(new _Map) != mapTag$6) || + (_Promise && getTag(_Promise.resolve()) != promiseTag) || + (_Set && getTag(new _Set) != setTag$6) || + (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) { + getTag = function(value) { + var result = _baseGetTag(value), + Ctor = result == objectTag$3 ? value.constructor : undefined, + ctorString = Ctor ? _toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag$3; + case mapCtorString: return mapTag$6; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag$6; + case weakMapCtorString: return weakMapTag$1; + } + } + return result; + }; +} + +var _getTag = getTag; + +/** Used for built-in method references. */ +var objectProto$6 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$6 = objectProto$6.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty$6.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +var _initCloneArray = initCloneArray; + +/** Built-in value references. */ +var Uint8Array$1 = _root.Uint8Array; + +var _Uint8Array = Uint8Array$1; + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new _Uint8Array(result).set(new _Uint8Array(arrayBuffer)); + return result; +} + +var _cloneArrayBuffer = cloneArrayBuffer; + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? _cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +var _cloneDataView = cloneDataView; + +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +var _cloneRegExp = cloneRegExp; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto$2 = _Symbol ? _Symbol.prototype : undefined, + symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {}; +} + +var _cloneSymbol = cloneSymbol; + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +var _cloneTypedArray = cloneTypedArray; + +/** `Object#toString` result references. */ +var boolTag$2 = '[object Boolean]', + dateTag$2 = '[object Date]', + mapTag$5 = '[object Map]', + numberTag$2 = '[object Number]', + regexpTag$2 = '[object RegExp]', + setTag$5 = '[object Set]', + stringTag$3 = '[object String]', + symbolTag$3 = '[object Symbol]'; + +var arrayBufferTag$2 = '[object ArrayBuffer]', + dataViewTag$2 = '[object DataView]', + float32Tag$1 = '[object Float32Array]', + float64Tag$1 = '[object Float64Array]', + int8Tag$1 = '[object Int8Array]', + int16Tag$1 = '[object Int16Array]', + int32Tag$1 = '[object Int32Array]', + uint8Tag$1 = '[object Uint8Array]', + uint8ClampedTag$1 = '[object Uint8ClampedArray]', + uint16Tag$1 = '[object Uint16Array]', + uint32Tag$1 = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag$2: + return _cloneArrayBuffer(object); + + case boolTag$2: + case dateTag$2: + return new Ctor(+object); + + case dataViewTag$2: + return _cloneDataView(object, isDeep); + + case float32Tag$1: case float64Tag$1: + case int8Tag$1: case int16Tag$1: case int32Tag$1: + case uint8Tag$1: case uint8ClampedTag$1: case uint16Tag$1: case uint32Tag$1: + return _cloneTypedArray(object, isDeep); + + case mapTag$5: + return new Ctor; + + case numberTag$2: + case stringTag$3: + return new Ctor(object); + + case regexpTag$2: + return _cloneRegExp(object); + + case setTag$5: + return new Ctor; + + case symbolTag$3: + return _cloneSymbol(object); + } +} + +var _initCloneByTag = initCloneByTag; + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject_1(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +var _baseCreate = baseCreate; + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !_isPrototype(object)) + ? _baseCreate(_getPrototype(object)) + : {}; +} + +var _initCloneObject = initCloneObject; + +/** `Object#toString` result references. */ +var mapTag$4 = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike_1(value) && _getTag(value) == mapTag$4; +} + +var _baseIsMap = baseIsMap; + +/* Node.js helper references. */ +var nodeIsMap = _nodeUtil && _nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? _baseUnary(nodeIsMap) : _baseIsMap; + +var isMap_1 = isMap; + +/** `Object#toString` result references. */ +var setTag$4 = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike_1(value) && _getTag(value) == setTag$4; +} + +var _baseIsSet = baseIsSet; + +/* Node.js helper references. */ +var nodeIsSet = _nodeUtil && _nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? _baseUnary(nodeIsSet) : _baseIsSet; + +var isSet_1 = isSet; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG$1 = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG$2 = 4; + +/** `Object#toString` result references. */ +var argsTag$1 = '[object Arguments]', + arrayTag$1 = '[object Array]', + boolTag$1 = '[object Boolean]', + dateTag$1 = '[object Date]', + errorTag$1 = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag$3 = '[object Map]', + numberTag$1 = '[object Number]', + objectTag$2 = '[object Object]', + regexpTag$1 = '[object RegExp]', + setTag$3 = '[object Set]', + stringTag$2 = '[object String]', + symbolTag$2 = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag$1 = '[object ArrayBuffer]', + dataViewTag$1 = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = +cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = +cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag$3] = +cloneableTags[numberTag$1] = cloneableTags[objectTag$2] = +cloneableTags[regexpTag$1] = cloneableTags[setTag$3] = +cloneableTags[stringTag$2] = cloneableTags[symbolTag$2] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag$1] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG$1, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG$2; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject_1(value)) { + return value; + } + var isArr = isArray_1(value); + if (isArr) { + result = _initCloneArray(value); + if (!isDeep) { + return _copyArray(value, result); + } + } else { + var tag = _getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer_1(value)) { + return _cloneBuffer(value, isDeep); + } + if (tag == objectTag$2 || tag == argsTag$1 || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : _initCloneObject(value); + if (!isDeep) { + return isFlat + ? _copySymbolsIn(value, _baseAssignIn(result, value)) + : _copySymbols(value, _baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = _initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new _Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet_1(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap_1(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? _getAllKeysIn : _getAllKeys) + : (isFlat ? keysIn_1 : keys_1); + + var props = isArr ? undefined : keysFunc(value); + _arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + _assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +var _baseClone = baseClone; + +/** Used to compose bitmasks for cloning. */ +var CLONE_SYMBOLS_FLAG$1 = 4; + +/** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ +function clone(value) { + return _baseClone(value, CLONE_SYMBOLS_FLAG$1); +} + +var clone_1 = clone; + +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +var constant_1 = constant; + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +var _createBaseFor = createBaseFor; + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = _createBaseFor(); + +var _baseFor = baseFor; + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && _baseFor(object, iteratee, keys_1); +} + +var _baseForOwn = baseForOwn; + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike_1(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +var _createBaseEach = createBaseEach; + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = _createBaseEach(_baseForOwn); + +var _baseEach = baseEach; + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +var identity_1 = identity; + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : identity_1; +} + +var _castFunction = castFunction; + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray_1(collection) ? _arrayEach : _baseEach; + return func(collection, _castFunction(iteratee)); +} + +var forEach_1 = forEach; + +var each = forEach_1; + +/** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function baseFilter(collection, predicate) { + var result = []; + _baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; +} + +var _baseFilter = baseFilter; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +var _setCacheAdd = setCacheAdd; + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +var _setCacheHas = setCacheHas; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new _MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = _setCacheAdd; +SetCache.prototype.has = _setCacheHas; + +var _SetCache = SetCache; + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +var _arraySome = arraySome; + +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +var _cacheHas = cacheHas; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$5 = 1, + COMPARE_UNORDERED_FLAG$3 = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG$3) ? new _SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!_arraySome(other, function(othValue, othIndex) { + if (!_cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +var _equalArrays = equalArrays; + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +var _mapToArray = mapToArray; + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +var _setToArray = setToArray; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$4 = 1, + COMPARE_UNORDERED_FLAG$2 = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag$2 = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag$2 = '[object Set]', + stringTag$1 = '[object String]', + symbolTag$1 = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto$1 = _Symbol ? _Symbol.prototype : undefined, + symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new _Uint8Array(object), new _Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq_1(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag$1: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag$2: + var convert = _mapToArray; + + case setTag$2: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4; + convert || (convert = _setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG$2; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag$1: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +var _equalByTag = equalByTag; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$3 = 1; + +/** Used for built-in method references. */ +var objectProto$5 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$5 = objectProto$5.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, + objProps = _getAllKeys(object), + objLength = objProps.length, + othProps = _getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty$5.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +var _equalObjects = equalObjects; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$2 = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag$1 = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto$4 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$4 = objectProto$4.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray_1(object), + othIsArr = isArray_1(other), + objTag = objIsArr ? arrayTag : _getTag(object), + othTag = othIsArr ? arrayTag : _getTag(other); + + objTag = objTag == argsTag ? objectTag$1 : objTag; + othTag = othTag == argsTag ? objectTag$1 : othTag; + + var objIsObj = objTag == objectTag$1, + othIsObj = othTag == objectTag$1, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer_1(object)) { + if (!isBuffer_1(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new _Stack); + return (objIsArr || isTypedArray_1(object)) + ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) { + var objIsWrapped = objIsObj && hasOwnProperty$4.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty$4.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new _Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new _Stack); + return _equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +var _baseIsEqualDeep = baseIsEqualDeep; + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike_1(value) && !isObjectLike_1(other))) { + return value !== value && other !== other; + } + return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +var _baseIsEqual = baseIsEqual; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$1 = 1, + COMPARE_UNORDERED_FLAG$1 = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new _Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +var _baseIsMatch = baseIsMatch; + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject_1(value); +} + +var _isStrictComparable = isStrictComparable; + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys_1(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, _isStrictComparable(value)]; + } + return result; +} + +var _getMatchData = getMatchData; + +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +var _matchesStrictComparable = matchesStrictComparable; + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = _getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return _matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || _baseIsMatch(object, source, matchData); + }; +} + +var _baseMatches = baseMatches; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike_1(value) && _baseGetTag(value) == symbolTag); +} + +var isSymbol_1 = isSymbol; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray_1(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol_1(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +var _isKey = isKey; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || _MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = _MapCache; + +var memoize_1 = memoize; + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize_1(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +var _memoizeCapped = memoizeCapped; + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = _memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +var _stringToPath = stringToPath; + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +var _arrayMap = arrayMap; + +/** Used as references for various `Number` constants. */ +var INFINITY$3 = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = _Symbol ? _Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray_1(value)) { + // Recursively convert values (susceptible to call stack limits). + return _arrayMap(value, baseToString) + ''; + } + if (isSymbol_1(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY$3) ? '-0' : result; +} + +var _baseToString = baseToString; + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : _baseToString(value); +} + +var toString_1 = toString; + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray_1(value)) { + return value; + } + return _isKey(value, object) ? [value] : _stringToPath(toString_1(value)); +} + +var _castPath = castPath; + +/** Used as references for various `Number` constants. */ +var INFINITY$2 = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol_1(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result; +} + +var _toKey = toKey; + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = _castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[_toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +var _baseGet = baseGet; + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : _baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +var get_1 = get; + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +var _baseHasIn = baseHasIn; + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = _castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = _toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength_1(length) && _isIndex(key, length) && + (isArray_1(object) || isArguments_1(object)); +} + +var _hasPath = hasPath; + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && _hasPath(object, path, _baseHasIn); +} + +var hasIn_1 = hasIn; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (_isKey(path) && _isStrictComparable(srcValue)) { + return _matchesStrictComparable(_toKey(path), srcValue); + } + return function(object) { + var objValue = get_1(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn_1(object, path) + : _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +var _baseMatchesProperty = baseMatchesProperty; + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +var _baseProperty = baseProperty; + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return _baseGet(object, path); + }; +} + +var _basePropertyDeep = basePropertyDeep; + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path); +} + +var property_1 = property; + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity_1; + } + if (typeof value == 'object') { + return isArray_1(value) + ? _baseMatchesProperty(value[0], value[1]) + : _baseMatches(value); + } + return property_1(value); +} + +var _baseIteratee = baseIteratee; + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ +function filter(collection, predicate) { + var func = isArray_1(collection) ? _arrayFilter : _baseFilter; + return func(collection, _baseIteratee(predicate)); +} + +var filter_1 = filter; + +/** Used for built-in method references. */ +var objectProto$3 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$3 = objectProto$3.hasOwnProperty; + +/** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHas(object, key) { + return object != null && hasOwnProperty$3.call(object, key); +} + +var _baseHas = baseHas; + +/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ +function has(object, path) { + return object != null && _hasPath(object, path, _baseHas); +} + +var has_1 = has; + +/** `Object#toString` result references. */ +var mapTag$1 = '[object Map]', + setTag$1 = '[object Set]'; + +/** Used for built-in method references. */ +var objectProto$2 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$2 = objectProto$2.hasOwnProperty; + +/** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ +function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike_1(value) && + (isArray_1(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer_1(value) || isTypedArray_1(value) || isArguments_1(value))) { + return !value.length; + } + var tag = _getTag(value); + if (tag == mapTag$1 || tag == setTag$1) { + return !value.size; + } + if (_isPrototype(value)) { + return !_baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty$2.call(value, key)) { + return false; + } + } + return true; +} + +var isEmpty_1 = isEmpty; + +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +var isUndefined_1 = isUndefined; + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike_1(collection) ? Array(collection.length) : []; + + _baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +var _baseMap = baseMap; + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray_1(collection) ? _arrayMap : _baseMap; + return func(collection, _baseIteratee(iteratee)); +} + +var map_1 = map; + +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +var _arrayReduce = arrayReduce; + +/** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; +} + +var _baseReduce = baseReduce; + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator) { + var func = isArray_1(collection) ? _arrayReduce : _baseReduce, + initAccum = arguments.length < 3; + + return func(collection, _baseIteratee(iteratee), accumulator, initAccum, _baseEach); +} + +var reduce_1 = reduce; + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag); +} + +var isString_1 = isString; + +/** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +var asciiSize = _baseProperty('length'); + +var _asciiSize = asciiSize; + +/** Used to compose unicode character classes. */ +var rsAstralRange$1 = '\\ud800-\\udfff', + rsComboMarksRange$1 = '\\u0300-\\u036f', + reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f', + rsComboSymbolsRange$1 = '\\u20d0-\\u20ff', + rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1, + rsVarRange$1 = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsZWJ$1 = '\\u200d'; + +/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ +var reHasUnicode = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + ']'); + +/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ +function hasUnicode(string) { + return reHasUnicode.test(string); +} + +var _hasUnicode = hasUnicode; + +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; +} + +var _unicodeSize = unicodeSize; + +/** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ +function stringSize(string) { + return _hasUnicode(string) + ? _unicodeSize(string) + : _asciiSize(string); +} + +var _stringSize = stringSize; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ +function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike_1(collection)) { + return isString_1(collection) ? _stringSize(collection) : collection.length; + } + var tag = _getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return _baseKeys(collection).length; +} + +var size_1 = size; + +/** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ +function transform(object, iteratee, accumulator) { + var isArr = isArray_1(object), + isArrLike = isArr || isBuffer_1(object) || isTypedArray_1(object); + + iteratee = _baseIteratee(iteratee); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject_1(object)) { + accumulator = isFunction_1(Ctor) ? _baseCreate(_getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? _arrayEach : _baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; +} + +var transform_1 = transform; + +/** Built-in value references. */ +var spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined; + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray_1(value) || isArguments_1(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +var _isFlattenable = isFlattenable; + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = _isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + _arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +var _baseFlatten = baseFlatten; + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +var _apply = apply; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax$2 = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax$2(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax$2(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return _apply(func, this, otherArgs); + }; +} + +var _overRest = overRest; + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !_defineProperty ? identity_1 : function(func, string) { + return _defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant_1(string), + 'writable': true + }); +}; + +var _baseSetToString = baseSetToString; + +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +var _shortOut = shortOut; + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = _shortOut(_baseSetToString); + +var _setToString = setToString; + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return _setToString(_overRest(func, start, identity_1), func + ''); +} + +var _baseRest = baseRest; + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +var _baseFindIndex = baseFindIndex; + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +var _baseIsNaN = baseIsNaN; + +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +var _strictIndexOf = strictIndexOf; + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? _strictIndexOf(array, value, fromIndex) + : _baseFindIndex(array, _baseIsNaN, fromIndex); +} + +var _baseIndexOf = baseIndexOf; + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && _baseIndexOf(array, value, 0) > -1; +} + +var _arrayIncludes = arrayIncludes; + +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +var _arrayIncludesWith = arrayIncludesWith; + +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} + +var noop_1 = noop; + +/** Used as references for various `Number` constants. */ +var INFINITY$1 = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY$1) ? noop_1 : function(values) { + return new _Set(values); +}; + +var _createSet = createSet; + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = _arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = _arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : _createSet(array); + if (set) { + return _setToArray(set); + } + isCommon = false; + includes = _cacheHas; + seen = new _SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +var _baseUniq = baseUniq; + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike_1(value) && isArrayLike_1(value); +} + +var isArrayLikeObject_1 = isArrayLikeObject; + +/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ +var union = _baseRest(function(arrays) { + return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true)); +}); + +var union_1 = union; + +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return _arrayMap(props, function(key) { + return object[key]; + }); +} + +var _baseValues = baseValues; + +/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ +function values(object) { + return object == null ? [] : _baseValues(object, keys_1(object)); +} + +var values_1 = values; + +/* global window */ + +var lodash$1; + +if (typeof commonjsRequire === "function") { + try { + lodash$1 = { + clone: clone_1, + constant: constant_1, + each: each, + filter: filter_1, + has: has_1, + isArray: isArray_1, + isEmpty: isEmpty_1, + isFunction: isFunction_1, + isUndefined: isUndefined_1, + keys: keys_1, + map: map_1, + reduce: reduce_1, + size: size_1, + transform: transform_1, + union: union_1, + values: values_1 + }; + } catch (e) { + // continue regardless of error + } +} + +if (!lodash$1) { + lodash$1 = window._; +} + +var lodash_1$1 = lodash$1; + +var graph = Graph$8; + +var DEFAULT_EDGE_NAME = "\x00"; +var GRAPH_NODE = "\x00"; +var EDGE_KEY_DELIM = "\x01"; + +// Implementation notes: +// +// * Node id query functions should return string ids for the nodes +// * Edge id query functions should return an "edgeObj", edge object, that is +// composed of enough information to uniquely identify an edge: {v, w, name}. +// * Internally we use an "edgeId", a stringified form of the edgeObj, to +// reference edges. This is because we need a performant way to look these +// edges up and, object properties, which have string keys, are the closest +// we're going to get to a performant hashtable in JavaScript. + +function Graph$8(opts) { + this._isDirected = lodash_1$1.has(opts, "directed") ? opts.directed : true; + this._isMultigraph = lodash_1$1.has(opts, "multigraph") ? opts.multigraph : false; + this._isCompound = lodash_1$1.has(opts, "compound") ? opts.compound : false; + + // Label for the graph itself + this._label = undefined; + + // Defaults to be set when creating a new node + this._defaultNodeLabelFn = lodash_1$1.constant(undefined); + + // Defaults to be set when creating a new edge + this._defaultEdgeLabelFn = lodash_1$1.constant(undefined); + + // v -> label + this._nodes = {}; + + if (this._isCompound) { + // v -> parent + this._parent = {}; + + // v -> children + this._children = {}; + this._children[GRAPH_NODE] = {}; + } + + // v -> edgeObj + this._in = {}; + + // u -> v -> Number + this._preds = {}; + + // v -> edgeObj + this._out = {}; + + // v -> w -> Number + this._sucs = {}; + + // e -> edgeObj + this._edgeObjs = {}; + + // e -> label + this._edgeLabels = {}; +} + +/* Number of nodes in the graph. Should only be changed by the implementation. */ +Graph$8.prototype._nodeCount = 0; + +/* Number of edges in the graph. Should only be changed by the implementation. */ +Graph$8.prototype._edgeCount = 0; + + +/* === Graph functions ========= */ + +Graph$8.prototype.isDirected = function() { + return this._isDirected; +}; + +Graph$8.prototype.isMultigraph = function() { + return this._isMultigraph; +}; + +Graph$8.prototype.isCompound = function() { + return this._isCompound; +}; + +Graph$8.prototype.setGraph = function(label) { + this._label = label; + return this; +}; + +Graph$8.prototype.graph = function() { + return this._label; +}; + + +/* === Node functions ========== */ + +Graph$8.prototype.setDefaultNodeLabel = function(newDefault) { + if (!lodash_1$1.isFunction(newDefault)) { + newDefault = lodash_1$1.constant(newDefault); + } + this._defaultNodeLabelFn = newDefault; + return this; +}; + +Graph$8.prototype.nodeCount = function() { + return this._nodeCount; +}; + +Graph$8.prototype.nodes = function() { + return lodash_1$1.keys(this._nodes); +}; + +Graph$8.prototype.sources = function() { + var self = this; + return lodash_1$1.filter(this.nodes(), function(v) { + return lodash_1$1.isEmpty(self._in[v]); + }); +}; + +Graph$8.prototype.sinks = function() { + var self = this; + return lodash_1$1.filter(this.nodes(), function(v) { + return lodash_1$1.isEmpty(self._out[v]); + }); +}; + +Graph$8.prototype.setNodes = function(vs, value) { + var args = arguments; + var self = this; + lodash_1$1.each(vs, function(v) { + if (args.length > 1) { + self.setNode(v, value); + } else { + self.setNode(v); + } + }); + return this; +}; + +Graph$8.prototype.setNode = function(v, value) { + if (lodash_1$1.has(this._nodes, v)) { + if (arguments.length > 1) { + this._nodes[v] = value; + } + return this; + } + + this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v); + if (this._isCompound) { + this._parent[v] = GRAPH_NODE; + this._children[v] = {}; + this._children[GRAPH_NODE][v] = true; + } + this._in[v] = {}; + this._preds[v] = {}; + this._out[v] = {}; + this._sucs[v] = {}; + ++this._nodeCount; + return this; +}; + +Graph$8.prototype.node = function(v) { + return this._nodes[v]; +}; + +Graph$8.prototype.hasNode = function(v) { + return lodash_1$1.has(this._nodes, v); +}; + +Graph$8.prototype.removeNode = function(v) { + var self = this; + if (lodash_1$1.has(this._nodes, v)) { + var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); }; + delete this._nodes[v]; + if (this._isCompound) { + this._removeFromParentsChildList(v); + delete this._parent[v]; + lodash_1$1.each(this.children(v), function(child) { + self.setParent(child); + }); + delete this._children[v]; + } + lodash_1$1.each(lodash_1$1.keys(this._in[v]), removeEdge); + delete this._in[v]; + delete this._preds[v]; + lodash_1$1.each(lodash_1$1.keys(this._out[v]), removeEdge); + delete this._out[v]; + delete this._sucs[v]; + --this._nodeCount; + } + return this; +}; + +Graph$8.prototype.setParent = function(v, parent) { + if (!this._isCompound) { + throw new Error("Cannot set parent in a non-compound graph"); + } + + if (lodash_1$1.isUndefined(parent)) { + parent = GRAPH_NODE; + } else { + // Coerce parent to string + parent += ""; + for (var ancestor = parent; + !lodash_1$1.isUndefined(ancestor); + ancestor = this.parent(ancestor)) { + if (ancestor === v) { + throw new Error("Setting " + parent+ " as parent of " + v + + " would create a cycle"); + } + } + + this.setNode(parent); + } + + this.setNode(v); + this._removeFromParentsChildList(v); + this._parent[v] = parent; + this._children[parent][v] = true; + return this; +}; + +Graph$8.prototype._removeFromParentsChildList = function(v) { + delete this._children[this._parent[v]][v]; +}; + +Graph$8.prototype.parent = function(v) { + if (this._isCompound) { + var parent = this._parent[v]; + if (parent !== GRAPH_NODE) { + return parent; + } + } +}; + +Graph$8.prototype.children = function(v) { + if (lodash_1$1.isUndefined(v)) { + v = GRAPH_NODE; + } + + if (this._isCompound) { + var children = this._children[v]; + if (children) { + return lodash_1$1.keys(children); + } + } else if (v === GRAPH_NODE) { + return this.nodes(); + } else if (this.hasNode(v)) { + return []; + } +}; + +Graph$8.prototype.predecessors = function(v) { + var predsV = this._preds[v]; + if (predsV) { + return lodash_1$1.keys(predsV); + } +}; + +Graph$8.prototype.successors = function(v) { + var sucsV = this._sucs[v]; + if (sucsV) { + return lodash_1$1.keys(sucsV); + } +}; + +Graph$8.prototype.neighbors = function(v) { + var preds = this.predecessors(v); + if (preds) { + return lodash_1$1.union(preds, this.successors(v)); + } +}; + +Graph$8.prototype.isLeaf = function (v) { + var neighbors; + if (this.isDirected()) { + neighbors = this.successors(v); + } else { + neighbors = this.neighbors(v); + } + return neighbors.length === 0; +}; + +Graph$8.prototype.filterNodes = function(filter) { + var copy = new this.constructor({ + directed: this._isDirected, + multigraph: this._isMultigraph, + compound: this._isCompound + }); + + copy.setGraph(this.graph()); + + var self = this; + lodash_1$1.each(this._nodes, function(value, v) { + if (filter(v)) { + copy.setNode(v, value); + } + }); + + lodash_1$1.each(this._edgeObjs, function(e) { + if (copy.hasNode(e.v) && copy.hasNode(e.w)) { + copy.setEdge(e, self.edge(e)); + } + }); + + var parents = {}; + function findParent(v) { + var parent = self.parent(v); + if (parent === undefined || copy.hasNode(parent)) { + parents[v] = parent; + return parent; + } else if (parent in parents) { + return parents[parent]; + } else { + return findParent(parent); + } + } + + if (this._isCompound) { + lodash_1$1.each(copy.nodes(), function(v) { + copy.setParent(v, findParent(v)); + }); + } + + return copy; +}; + +/* === Edge functions ========== */ + +Graph$8.prototype.setDefaultEdgeLabel = function(newDefault) { + if (!lodash_1$1.isFunction(newDefault)) { + newDefault = lodash_1$1.constant(newDefault); + } + this._defaultEdgeLabelFn = newDefault; + return this; +}; + +Graph$8.prototype.edgeCount = function() { + return this._edgeCount; +}; + +Graph$8.prototype.edges = function() { + return lodash_1$1.values(this._edgeObjs); +}; + +Graph$8.prototype.setPath = function(vs, value) { + var self = this; + var args = arguments; + lodash_1$1.reduce(vs, function(v, w) { + if (args.length > 1) { + self.setEdge(v, w, value); + } else { + self.setEdge(v, w); + } + return w; + }); + return this; +}; + +/* + * setEdge(v, w, [value, [name]]) + * setEdge({ v, w, [name] }, [value]) + */ +Graph$8.prototype.setEdge = function() { + var v, w, name, value; + var valueSpecified = false; + var arg0 = arguments[0]; + + if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) { + v = arg0.v; + w = arg0.w; + name = arg0.name; + if (arguments.length === 2) { + value = arguments[1]; + valueSpecified = true; + } + } else { + v = arg0; + w = arguments[1]; + name = arguments[3]; + if (arguments.length > 2) { + value = arguments[2]; + valueSpecified = true; + } + } + + v = "" + v; + w = "" + w; + if (!lodash_1$1.isUndefined(name)) { + name = "" + name; + } + + var e = edgeArgsToId(this._isDirected, v, w, name); + if (lodash_1$1.has(this._edgeLabels, e)) { + if (valueSpecified) { + this._edgeLabels[e] = value; + } + return this; + } + + if (!lodash_1$1.isUndefined(name) && !this._isMultigraph) { + throw new Error("Cannot set a named edge when isMultigraph = false"); + } + + // It didn't exist, so we need to create it. + // First ensure the nodes exist. + this.setNode(v); + this.setNode(w); + + this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name); + + var edgeObj = edgeArgsToObj(this._isDirected, v, w, name); + // Ensure we add undirected edges in a consistent way. + v = edgeObj.v; + w = edgeObj.w; + + Object.freeze(edgeObj); + this._edgeObjs[e] = edgeObj; + incrementOrInitEntry(this._preds[w], v); + incrementOrInitEntry(this._sucs[v], w); + this._in[w][e] = edgeObj; + this._out[v][e] = edgeObj; + this._edgeCount++; + return this; +}; + +Graph$8.prototype.edge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + return this._edgeLabels[e]; +}; + +Graph$8.prototype.hasEdge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + return lodash_1$1.has(this._edgeLabels, e); +}; + +Graph$8.prototype.removeEdge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + var edge = this._edgeObjs[e]; + if (edge) { + v = edge.v; + w = edge.w; + delete this._edgeLabels[e]; + delete this._edgeObjs[e]; + decrementOrRemoveEntry(this._preds[w], v); + decrementOrRemoveEntry(this._sucs[v], w); + delete this._in[w][e]; + delete this._out[v][e]; + this._edgeCount--; + } + return this; +}; + +Graph$8.prototype.inEdges = function(v, u) { + var inV = this._in[v]; + if (inV) { + var edges = lodash_1$1.values(inV); + if (!u) { + return edges; + } + return lodash_1$1.filter(edges, function(edge) { return edge.v === u; }); + } +}; + +Graph$8.prototype.outEdges = function(v, w) { + var outV = this._out[v]; + if (outV) { + var edges = lodash_1$1.values(outV); + if (!w) { + return edges; + } + return lodash_1$1.filter(edges, function(edge) { return edge.w === w; }); + } +}; + +Graph$8.prototype.nodeEdges = function(v, w) { + var inEdges = this.inEdges(v, w); + if (inEdges) { + return inEdges.concat(this.outEdges(v, w)); + } +}; + +function incrementOrInitEntry(map, k) { + if (map[k]) { + map[k]++; + } else { + map[k] = 1; + } +} + +function decrementOrRemoveEntry(map, k) { + if (!--map[k]) { delete map[k]; } +} + +function edgeArgsToId(isDirected, v_, w_, name) { + var v = "" + v_; + var w = "" + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + + (lodash_1$1.isUndefined(name) ? DEFAULT_EDGE_NAME : name); +} + +function edgeArgsToObj(isDirected, v_, w_, name) { + var v = "" + v_; + var w = "" + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + var edgeObj = { v: v, w: w }; + if (name) { + edgeObj.name = name; + } + return edgeObj; +} + +function edgeObjToId(isDirected, edgeObj) { + return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name); +} + +var version$1 = '2.1.8'; + +// Includes only the "core" of graphlib +var lib = { + Graph: graph, + version: version$1 +}; + +var json = { + write: write, + read: read +}; + +function write(g) { + var json = { + options: { + directed: g.isDirected(), + multigraph: g.isMultigraph(), + compound: g.isCompound() + }, + nodes: writeNodes(g), + edges: writeEdges(g) + }; + if (!lodash_1$1.isUndefined(g.graph())) { + json.value = lodash_1$1.clone(g.graph()); + } + return json; +} + +function writeNodes(g) { + return lodash_1$1.map(g.nodes(), function(v) { + var nodeValue = g.node(v); + var parent = g.parent(v); + var node = { v: v }; + if (!lodash_1$1.isUndefined(nodeValue)) { + node.value = nodeValue; + } + if (!lodash_1$1.isUndefined(parent)) { + node.parent = parent; + } + return node; + }); +} + +function writeEdges(g) { + return lodash_1$1.map(g.edges(), function(e) { + var edgeValue = g.edge(e); + var edge = { v: e.v, w: e.w }; + if (!lodash_1$1.isUndefined(e.name)) { + edge.name = e.name; + } + if (!lodash_1$1.isUndefined(edgeValue)) { + edge.value = edgeValue; + } + return edge; + }); +} + +function read(json) { + var g = new graph(json.options).setGraph(json.value); + lodash_1$1.each(json.nodes, function(entry) { + g.setNode(entry.v, entry.value); + if (entry.parent) { + g.setParent(entry.v, entry.parent); + } + }); + lodash_1$1.each(json.edges, function(entry) { + g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value); + }); + return g; +} + +var components_1 = components; + +function components(g) { + var visited = {}; + var cmpts = []; + var cmpt; + + function dfs(v) { + if (lodash_1$1.has(visited, v)) return; + visited[v] = true; + cmpt.push(v); + lodash_1$1.each(g.successors(v), dfs); + lodash_1$1.each(g.predecessors(v), dfs); + } + + lodash_1$1.each(g.nodes(), function(v) { + cmpt = []; + dfs(v); + if (cmpt.length) { + cmpts.push(cmpt); + } + }); + + return cmpts; +} + +var priorityQueue = PriorityQueue; + +/** + * A min-priority queue data structure. This algorithm is derived from Cormen, + * et al., "Introduction to Algorithms". The basic idea of a min-priority + * queue is that you can efficiently (in O(1) time) get the smallest key in + * the queue. Adding and removing elements takes O(log n) time. A key can + * have its priority decreased in O(log n) time. + */ +function PriorityQueue() { + this._arr = []; + this._keyIndices = {}; +} + +/** + * Returns the number of elements in the queue. Takes `O(1)` time. + */ +PriorityQueue.prototype.size = function() { + return this._arr.length; +}; + +/** + * Returns the keys that are in the queue. Takes `O(n)` time. + */ +PriorityQueue.prototype.keys = function() { + return this._arr.map(function(x) { return x.key; }); +}; + +/** + * Returns `true` if **key** is in the queue and `false` if not. + */ +PriorityQueue.prototype.has = function(key) { + return lodash_1$1.has(this._keyIndices, key); +}; + +/** + * Returns the priority for **key**. If **key** is not present in the queue + * then this function returns `undefined`. Takes `O(1)` time. + * + * @param {Object} key + */ +PriorityQueue.prototype.priority = function(key) { + var index = this._keyIndices[key]; + if (index !== undefined) { + return this._arr[index].priority; + } +}; + +/** + * Returns the key for the minimum element in this queue. If the queue is + * empty this function throws an Error. Takes `O(1)` time. + */ +PriorityQueue.prototype.min = function() { + if (this.size() === 0) { + throw new Error("Queue underflow"); + } + return this._arr[0].key; +}; + +/** + * Inserts a new key into the priority queue. If the key already exists in + * the queue this function returns `false`; otherwise it will return `true`. + * Takes `O(n)` time. + * + * @param {Object} key the key to add + * @param {Number} priority the initial priority for the key + */ +PriorityQueue.prototype.add = function(key, priority) { + var keyIndices = this._keyIndices; + key = String(key); + if (!lodash_1$1.has(keyIndices, key)) { + var arr = this._arr; + var index = arr.length; + keyIndices[key] = index; + arr.push({key: key, priority: priority}); + this._decrease(index); + return true; + } + return false; +}; + +/** + * Removes and returns the smallest key in the queue. Takes `O(log n)` time. + */ +PriorityQueue.prototype.removeMin = function() { + this._swap(0, this._arr.length - 1); + var min = this._arr.pop(); + delete this._keyIndices[min.key]; + this._heapify(0); + return min.key; +}; + +/** + * Decreases the priority for **key** to **priority**. If the new priority is + * greater than the previous priority, this function will throw an Error. + * + * @param {Object} key the key for which to raise priority + * @param {Number} priority the new priority for the key + */ +PriorityQueue.prototype.decrease = function(key, priority) { + var index = this._keyIndices[key]; + if (priority > this._arr[index].priority) { + throw new Error("New priority is greater than current priority. " + + "Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority); + } + this._arr[index].priority = priority; + this._decrease(index); +}; + +PriorityQueue.prototype._heapify = function(i) { + var arr = this._arr; + var l = 2 * i; + var r = l + 1; + var largest = i; + if (l < arr.length) { + largest = arr[l].priority < arr[largest].priority ? l : largest; + if (r < arr.length) { + largest = arr[r].priority < arr[largest].priority ? r : largest; + } + if (largest !== i) { + this._swap(i, largest); + this._heapify(largest); + } + } +}; + +PriorityQueue.prototype._decrease = function(index) { + var arr = this._arr; + var priority = arr[index].priority; + var parent; + while (index !== 0) { + parent = index >> 1; + if (arr[parent].priority < priority) { + break; + } + this._swap(index, parent); + index = parent; + } +}; + +PriorityQueue.prototype._swap = function(i, j) { + var arr = this._arr; + var keyIndices = this._keyIndices; + var origArrI = arr[i]; + var origArrJ = arr[j]; + arr[i] = origArrJ; + arr[j] = origArrI; + keyIndices[origArrJ.key] = i; + keyIndices[origArrI.key] = j; +}; + +var dijkstra_1 = dijkstra; + +var DEFAULT_WEIGHT_FUNC$1 = lodash_1$1.constant(1); + +function dijkstra(g, source, weightFn, edgeFn) { + return runDijkstra(g, String(source), + weightFn || DEFAULT_WEIGHT_FUNC$1, + edgeFn || function(v) { return g.outEdges(v); }); +} + +function runDijkstra(g, source, weightFn, edgeFn) { + var results = {}; + var pq = new priorityQueue(); + var v, vEntry; + + var updateNeighbors = function(edge) { + var w = edge.v !== v ? edge.v : edge.w; + var wEntry = results[w]; + var weight = weightFn(edge); + var distance = vEntry.distance + weight; + + if (weight < 0) { + throw new Error("dijkstra does not allow negative edge weights. " + + "Bad edge: " + edge + " Weight: " + weight); + } + + if (distance < wEntry.distance) { + wEntry.distance = distance; + wEntry.predecessor = v; + pq.decrease(w, distance); + } + }; + + g.nodes().forEach(function(v) { + var distance = v === source ? 0 : Number.POSITIVE_INFINITY; + results[v] = { distance: distance }; + pq.add(v, distance); + }); + + while (pq.size() > 0) { + v = pq.removeMin(); + vEntry = results[v]; + if (vEntry.distance === Number.POSITIVE_INFINITY) { + break; + } + + edgeFn(v).forEach(updateNeighbors); + } + + return results; +} + +var dijkstraAll_1 = dijkstraAll; + +function dijkstraAll(g, weightFunc, edgeFunc) { + return lodash_1$1.transform(g.nodes(), function(acc, v) { + acc[v] = dijkstra_1(g, v, weightFunc, edgeFunc); + }, {}); +} + +var tarjan_1 = tarjan; + +function tarjan(g) { + var index = 0; + var stack = []; + var visited = {}; // node id -> { onStack, lowlink, index } + var results = []; + + function dfs(v) { + var entry = visited[v] = { + onStack: true, + lowlink: index, + index: index++ + }; + stack.push(v); + + g.successors(v).forEach(function(w) { + if (!lodash_1$1.has(visited, w)) { + dfs(w); + entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink); + } else if (visited[w].onStack) { + entry.lowlink = Math.min(entry.lowlink, visited[w].index); + } + }); + + if (entry.lowlink === entry.index) { + var cmpt = []; + var w; + do { + w = stack.pop(); + visited[w].onStack = false; + cmpt.push(w); + } while (v !== w); + results.push(cmpt); + } + } + + g.nodes().forEach(function(v) { + if (!lodash_1$1.has(visited, v)) { + dfs(v); + } + }); + + return results; +} + +var findCycles_1 = findCycles; + +function findCycles(g) { + return lodash_1$1.filter(tarjan_1(g), function(cmpt) { + return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0])); + }); +} + +var floydWarshall_1 = floydWarshall; + +var DEFAULT_WEIGHT_FUNC = lodash_1$1.constant(1); + +function floydWarshall(g, weightFn, edgeFn) { + return runFloydWarshall(g, + weightFn || DEFAULT_WEIGHT_FUNC, + edgeFn || function(v) { return g.outEdges(v); }); +} + +function runFloydWarshall(g, weightFn, edgeFn) { + var results = {}; + var nodes = g.nodes(); + + nodes.forEach(function(v) { + results[v] = {}; + results[v][v] = { distance: 0 }; + nodes.forEach(function(w) { + if (v !== w) { + results[v][w] = { distance: Number.POSITIVE_INFINITY }; + } + }); + edgeFn(v).forEach(function(edge) { + var w = edge.v === v ? edge.w : edge.v; + var d = weightFn(edge); + results[v][w] = { distance: d, predecessor: v }; + }); + }); + + nodes.forEach(function(k) { + var rowK = results[k]; + nodes.forEach(function(i) { + var rowI = results[i]; + nodes.forEach(function(j) { + var ik = rowI[k]; + var kj = rowK[j]; + var ij = rowI[j]; + var altDistance = ik.distance + kj.distance; + if (altDistance < ij.distance) { + ij.distance = altDistance; + ij.predecessor = kj.predecessor; + } + }); + }); + }); + + return results; +} + +var topsort_1 = topsort; +topsort.CycleException = CycleException; + +function topsort(g) { + var visited = {}; + var stack = {}; + var results = []; + + function visit(node) { + if (lodash_1$1.has(stack, node)) { + throw new CycleException(); + } + + if (!lodash_1$1.has(visited, node)) { + stack[node] = true; + visited[node] = true; + lodash_1$1.each(g.predecessors(node), visit); + delete stack[node]; + results.push(node); + } + } + + lodash_1$1.each(g.sinks(), visit); + + if (lodash_1$1.size(visited) !== g.nodeCount()) { + throw new CycleException(); + } + + return results; +} + +function CycleException() {} +CycleException.prototype = new Error(); // must be an instance of Error to pass testing + +var isAcyclic_1 = isAcyclic; + +function isAcyclic(g) { + try { + topsort_1(g); + } catch (e) { + if (e instanceof topsort_1.CycleException) { + return false; + } + throw e; + } + return true; +} + +var dfs_1 = dfs$1; + +/* + * A helper that preforms a pre- or post-order traversal on the input graph + * and returns the nodes in the order they were visited. If the graph is + * undirected then this algorithm will navigate using neighbors. If the graph + * is directed then this algorithm will navigate using successors. + * + * Order must be one of "pre" or "post". + */ +function dfs$1(g, vs, order) { + if (!lodash_1$1.isArray(vs)) { + vs = [vs]; + } + + var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g); + + var acc = []; + var visited = {}; + lodash_1$1.each(vs, function(v) { + if (!g.hasNode(v)) { + throw new Error("Graph does not have node: " + v); + } + + doDfs(g, v, order === "post", visited, navigation, acc); + }); + return acc; +} + +function doDfs(g, v, postorder, visited, navigation, acc) { + if (!lodash_1$1.has(visited, v)) { + visited[v] = true; + + if (!postorder) { acc.push(v); } + lodash_1$1.each(navigation(v), function(w) { + doDfs(g, w, postorder, visited, navigation, acc); + }); + if (postorder) { acc.push(v); } + } +} + +var postorder_1 = postorder$2; + +function postorder$2(g, vs) { + return dfs_1(g, vs, "post"); +} + +var preorder_1 = preorder$1; + +function preorder$1(g, vs) { + return dfs_1(g, vs, "pre"); +} + +var prim_1 = prim; + +function prim(g, weightFunc) { + var result = new graph(); + var parents = {}; + var pq = new priorityQueue(); + var v; + + function updateNeighbors(edge) { + var w = edge.v === v ? edge.w : edge.v; + var pri = pq.priority(w); + if (pri !== undefined) { + var edgeWeight = weightFunc(edge); + if (edgeWeight < pri) { + parents[w] = v; + pq.decrease(w, edgeWeight); + } + } + } + + if (g.nodeCount() === 0) { + return result; + } + + lodash_1$1.each(g.nodes(), function(v) { + pq.add(v, Number.POSITIVE_INFINITY); + result.setNode(v); + }); + + // Start from an arbitrary node + pq.decrease(g.nodes()[0], 0); + + var init = false; + while (pq.size() > 0) { + v = pq.removeMin(); + if (lodash_1$1.has(parents, v)) { + result.setEdge(v, parents[v]); + } else if (init) { + throw new Error("Input graph is not connected: " + g); + } else { + init = true; + } + + g.nodeEdges(v).forEach(updateNeighbors); + } + + return result; +} + +var alg = { + components: components_1, + dijkstra: dijkstra_1, + dijkstraAll: dijkstraAll_1, + findCycles: findCycles_1, + floydWarshall: floydWarshall_1, + isAcyclic: isAcyclic_1, + postorder: postorder_1, + preorder: preorder_1, + prim: prim_1, + tarjan: tarjan_1, + topsort: topsort_1 +}; + +/** + * Copyright (c) 2014, Chris Pettitt + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var graphlib$1 = { + Graph: lib.Graph, + json: json, + alg: alg, + version: lib.version +}; + +// eslint-disable-next-line no-redeclare +/* global window */ + +var graphlib; + +if (typeof commonjsRequire === "function") { + try { + graphlib = graphlib$1; + } catch (e) { + // continue regardless of error + } +} + +if (!graphlib) { + graphlib = window.graphlib; +} + +var graphlib_1 = graphlib; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return _baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +var cloneDeep_1 = cloneDeep; + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject_1(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike_1(object) && _isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq_1(object[index], value); + } + return false; +} + +var _isIterateeCall = isIterateeCall; + +/** Used for built-in method references. */ +var objectProto$1 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$1 = objectProto$1.hasOwnProperty; + +/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var defaults = _baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && _isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn_1(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq_1(value, objectProto$1[key]) && !hasOwnProperty$1.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; +}); + +var defaults_1 = defaults; + +/** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ +function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike_1(collection)) { + var iteratee = _baseIteratee(predicate); + collection = keys_1(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; +} + +var _createFind = createFind; + +/** Used to match a single whitespace character. */ +var reWhitespace = /\s/; + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ +function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; +} + +var _trimmedEndIndex = trimmedEndIndex; + +/** Used to match leading whitespace. */ +var reTrimStart = /^\s+/; + +/** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ +function baseTrim(string) { + return string + ? string.slice(0, _trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; +} + +var _baseTrim = baseTrim; + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol_1(value)) { + return NAN; + } + if (isObject_1(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject_1(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = _baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +var toNumber_1 = toNumber; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber_1(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +var toFinite_1 = toFinite; + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = toFinite_1(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +var toInteger_1 = toInteger; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax$1 = Math.max; + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger_1(fromIndex); + if (index < 0) { + index = nativeMax$1(length + index, 0); + } + return _baseFindIndex(array, _baseIteratee(predicate), index); +} + +var findIndex_1 = findIndex; + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ +var find = _createFind(findIndex_1); + +var find_1 = find; + +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ +function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? _baseFlatten(array, 1) : []; +} + +var flatten_1 = flatten; + +/** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ +function forIn(object, iteratee) { + return object == null + ? object + : _baseFor(object, _castFunction(iteratee), keysIn_1); +} + +var forIn_1 = forIn; + +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ +function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; +} + +var last_1 = last; + +/** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ +function mapValues(object, iteratee) { + var result = {}; + iteratee = _baseIteratee(iteratee); + + _baseForOwn(object, function(value, key, object) { + _baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; +} + +var mapValues_1 = mapValues; + +/** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ +function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol_1(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; +} + +var _baseExtremum = baseExtremum; + +/** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ +function baseGt(value, other) { + return value > other; +} + +var _baseGt = baseGt; + +/** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ +function max(array) { + return (array && array.length) + ? _baseExtremum(array, identity_1, _baseGt) + : undefined; +} + +var max_1 = max; + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq_1(object[key], value)) || + (value === undefined && !(key in object))) { + _baseAssignValue(object, key, value); + } +} + +var _assignMergeValue = assignMergeValue; + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) { + return false; + } + var proto = _getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +var isPlainObject_1 = isPlainObject; + +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +var _safeGet = safeGet; + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return _copyObject(value, keysIn_1(value)); +} + +var toPlainObject_1 = toPlainObject; + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = _safeGet(object, key), + srcValue = _safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + _assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray_1(srcValue), + isBuff = !isArr && isBuffer_1(srcValue), + isTyped = !isArr && !isBuff && isTypedArray_1(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray_1(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject_1(objValue)) { + newValue = _copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = _cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = _cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) { + newValue = objValue; + if (isArguments_1(objValue)) { + newValue = toPlainObject_1(objValue); + } + else if (!isObject_1(objValue) || isFunction_1(objValue)) { + newValue = _initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + _assignMergeValue(object, key, newValue); +} + +var _baseMergeDeep = baseMergeDeep; + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + _baseFor(source, function(srcValue, key) { + stack || (stack = new _Stack); + if (isObject_1(srcValue)) { + _baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(_safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + _assignMergeValue(object, key, newValue); + } + }, keysIn_1); +} + +var _baseMerge = baseMerge; + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return _baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && _isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +var _createAssigner = createAssigner; + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = _createAssigner(function(object, source, srcIndex) { + _baseMerge(object, source, srcIndex); +}); + +var merge_1 = merge; + +/** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ +function baseLt(value, other) { + return value < other; +} + +var _baseLt = baseLt; + +/** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ +function min(array) { + return (array && array.length) + ? _baseExtremum(array, identity_1, _baseLt) + : undefined; +} + +var min_1 = min; + +/** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ +function minBy(array, iteratee) { + return (array && array.length) + ? _baseExtremum(array, _baseIteratee(iteratee), _baseLt) + : undefined; +} + +var minBy_1 = minBy; + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return _root.Date.now(); +}; + +var now_1 = now; + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!isObject_1(object)) { + return object; + } + path = _castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = _toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject_1(objValue) + ? objValue + : (_isIndex(path[index + 1]) ? [] : {}); + } + } + _assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +var _baseSet = baseSet; + +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ +function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = _baseGet(object, path); + + if (predicate(value, path)) { + _baseSet(result, _castPath(path, object), value); + } + } + return result; +} + +var _basePickBy = basePickBy; + +/** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ +function basePick(object, paths) { + return _basePickBy(object, paths, function(value, path) { + return hasIn_1(object, path); + }); +} + +var _basePick = basePick; + +/** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +function flatRest(func) { + return _setToString(_overRest(func, undefined, flatten_1), func + ''); +} + +var _flatRest = flatRest; + +/** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ +var pick = _flatRest(function(object, paths) { + return object == null ? {} : _basePick(object, paths); +}); + +var pick_1 = pick; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ +function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; +} + +var _baseRange = baseRange; + +/** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ +function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && _isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite_1(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite_1(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite_1(step); + return _baseRange(start, end, step, fromRight); + }; +} + +var _createRange = createRange; + +/** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ +var range = _createRange(); + +var range_1 = range; + +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} + +var _baseSortBy = baseSortBy; + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol_1(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol_1(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; +} + +var _compareAscending = compareAscending; + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = _compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; +} + +var _compareMultiple = compareMultiple; + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = _arrayMap(iteratees, function(iteratee) { + if (isArray_1(iteratee)) { + return function(value) { + return _baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity_1]; + } + + var index = -1; + iteratees = _arrayMap(iteratees, _baseUnary(_baseIteratee)); + + var result = _baseMap(collection, function(value, key, collection) { + var criteria = _arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return _baseSortBy(result, function(object, other) { + return _compareMultiple(object, other, orders); + }); +} + +var _baseOrderBy = baseOrderBy; + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ +var sortBy = _baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && _isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && _isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return _baseOrderBy(collection, _baseFlatten(iteratees, 1), []); +}); + +var sortBy_1 = sortBy; + +/** Used to generate unique IDs. */ +var idCounter = 0; + +/** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ +function uniqueId(prefix) { + var id = ++idCounter; + return toString_1(prefix) + id; +} + +var uniqueId_1 = uniqueId; + +/** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ +function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; +} + +var _baseZipObject = baseZipObject; + +/** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ +function zipObject(props, values) { + return _baseZipObject(props || [], values || [], _assignValue); +} + +var zipObject_1 = zipObject; + +// eslint-disable-next-line no-redeclare +/* global window */ + +var lodash; + +if (typeof commonjsRequire === "function") { + try { + lodash = { + cloneDeep: cloneDeep_1, + constant: constant_1, + defaults: defaults_1, + each: each, + filter: filter_1, + find: find_1, + flatten: flatten_1, + forEach: forEach_1, + forIn: forIn_1, + has: has_1, + isUndefined: isUndefined_1, + last: last_1, + map: map_1, + mapValues: mapValues_1, + max: max_1, + merge: merge_1, + min: min_1, + minBy: minBy_1, + now: now_1, + pick: pick_1, + range: range_1, + reduce: reduce_1, + sortBy: sortBy_1, + uniqueId: uniqueId_1, + values: values_1, + zipObject: zipObject_1, + }; + } catch (e) { + // continue regardless of error + } +} + +if (!lodash) { + lodash = window._; +} + +var lodash_1 = lodash; + +/* + * Simple doubly linked list implementation derived from Cormen, et al., + * "Introduction to Algorithms". + */ +var list = List; + +function List() { + var sentinel = {}; + sentinel._next = sentinel._prev = sentinel; + this._sentinel = sentinel; +} + +List.prototype.dequeue = function() { + var sentinel = this._sentinel; + var entry = sentinel._prev; + if (entry !== sentinel) { + unlink(entry); + return entry; + } +}; + +List.prototype.enqueue = function(entry) { + var sentinel = this._sentinel; + if (entry._prev && entry._next) { + unlink(entry); + } + entry._next = sentinel._next; + sentinel._next._prev = entry; + sentinel._next = entry; + entry._prev = sentinel; +}; + +List.prototype.toString = function() { + var strs = []; + var sentinel = this._sentinel; + var curr = sentinel._prev; + while (curr !== sentinel) { + strs.push(JSON.stringify(curr, filterOutLinks)); + curr = curr._prev; + } + return "[" + strs.join(", ") + "]"; +}; + +function unlink(entry) { + entry._prev._next = entry._next; + entry._next._prev = entry._prev; + delete entry._next; + delete entry._prev; +} + +function filterOutLinks(k, v) { + if (k !== "_next" && k !== "_prev") { + return v; + } +} + +var Graph$7 = graphlib_1.Graph; + + +/* + * A greedy heuristic for finding a feedback arc set for a graph. A feedback + * arc set is a set of edges that can be removed to make a graph acyclic. + * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and + * effective heuristic for the feedback arc set problem." This implementation + * adjusts that from the paper to allow for weighted edges. + */ +var greedyFas = greedyFAS; + +var DEFAULT_WEIGHT_FN = lodash_1.constant(1); + +function greedyFAS(g, weightFn) { + if (g.nodeCount() <= 1) { + return []; + } + var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN); + var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); + + // Expand multi-edges + return lodash_1.flatten(lodash_1.map(results, function(e) { + return g.outEdges(e.v, e.w); + }), true); +} + +function doGreedyFAS(g, buckets, zeroIdx) { + var results = []; + var sources = buckets[buckets.length - 1]; + var sinks = buckets[0]; + + var entry; + while (g.nodeCount()) { + while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } + while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } + if (g.nodeCount()) { + for (var i = buckets.length - 2; i > 0; --i) { + entry = buckets[i].dequeue(); + if (entry) { + results = results.concat(removeNode(g, buckets, zeroIdx, entry, true)); + break; + } + } + } + } + + return results; +} + +function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) { + var results = collectPredecessors ? [] : undefined; + + lodash_1.forEach(g.inEdges(entry.v), function(edge) { + var weight = g.edge(edge); + var uEntry = g.node(edge.v); + + if (collectPredecessors) { + results.push({ v: edge.v, w: edge.w }); + } + + uEntry.out -= weight; + assignBucket(buckets, zeroIdx, uEntry); + }); + + lodash_1.forEach(g.outEdges(entry.v), function(edge) { + var weight = g.edge(edge); + var w = edge.w; + var wEntry = g.node(w); + wEntry["in"] -= weight; + assignBucket(buckets, zeroIdx, wEntry); + }); + + g.removeNode(entry.v); + + return results; +} + +function buildState(g, weightFn) { + var fasGraph = new Graph$7(); + var maxIn = 0; + var maxOut = 0; + + lodash_1.forEach(g.nodes(), function(v) { + fasGraph.setNode(v, { v: v, "in": 0, out: 0 }); + }); + + // Aggregate weights on nodes, but also sum the weights across multi-edges + // into a single edge for the fasGraph. + lodash_1.forEach(g.edges(), function(e) { + var prevWeight = fasGraph.edge(e.v, e.w) || 0; + var weight = weightFn(e); + var edgeWeight = prevWeight + weight; + fasGraph.setEdge(e.v, e.w, edgeWeight); + maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight); + maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight); + }); + + var buckets = lodash_1.range(maxOut + maxIn + 3).map(function() { return new list(); }); + var zeroIdx = maxIn + 1; + + lodash_1.forEach(fasGraph.nodes(), function(v) { + assignBucket(buckets, zeroIdx, fasGraph.node(v)); + }); + + return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx }; +} + +function assignBucket(buckets, zeroIdx, entry) { + if (!entry.out) { + buckets[0].enqueue(entry); + } else if (!entry["in"]) { + buckets[buckets.length - 1].enqueue(entry); + } else { + buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry); + } +} + +var acyclic = { + run: run$2, + undo: undo$2 +}; + +function run$2(g) { + var fas = (g.graph().acyclicer === "greedy" + ? greedyFas(g, weightFn(g)) + : dfsFAS(g)); + lodash_1.forEach(fas, function(e) { + var label = g.edge(e); + g.removeEdge(e); + label.forwardName = e.name; + label.reversed = true; + g.setEdge(e.w, e.v, label, lodash_1.uniqueId("rev")); + }); + + function weightFn(g) { + return function(e) { + return g.edge(e).weight; + }; + } +} + +function dfsFAS(g) { + var fas = []; + var stack = {}; + var visited = {}; + + function dfs(v) { + if (lodash_1.has(visited, v)) { + return; + } + visited[v] = true; + stack[v] = true; + lodash_1.forEach(g.outEdges(v), function(e) { + if (lodash_1.has(stack, e.w)) { + fas.push(e); + } else { + dfs(e.w); + } + }); + delete stack[v]; + } + + lodash_1.forEach(g.nodes(), dfs); + return fas; +} + +function undo$2(g) { + lodash_1.forEach(g.edges(), function(e) { + var label = g.edge(e); + if (label.reversed) { + g.removeEdge(e); + + var forwardName = label.forwardName; + delete label.reversed; + delete label.forwardName; + g.setEdge(e.w, e.v, label, forwardName); + } + }); +} + +/* eslint "no-console": off */ + + +var Graph$6 = graphlib_1.Graph; + +var util$1 = { + addDummyNode: addDummyNode, + simplify: simplify$1, + asNonCompoundGraph: asNonCompoundGraph, + successorWeights: successorWeights, + predecessorWeights: predecessorWeights, + intersectRect: intersectRect, + buildLayerMatrix: buildLayerMatrix, + normalizeRanks: normalizeRanks$1, + removeEmptyRanks: removeEmptyRanks$1, + addBorderNode: addBorderNode$1, + maxRank: maxRank, + partition: partition, + time: time, + notime: notime +}; + +/* + * Adds a dummy node to the graph and return v. + */ +function addDummyNode(g, type, attrs, name) { + var v; + do { + v = lodash_1.uniqueId(name); + } while (g.hasNode(v)); + + attrs.dummy = type; + g.setNode(v, attrs); + return v; +} + +/* + * Returns a new graph with only simple edges. Handles aggregation of data + * associated with multi-edges. + */ +function simplify$1(g) { + var simplified = new Graph$6().setGraph(g.graph()); + lodash_1.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); }); + lodash_1.forEach(g.edges(), function(e) { + var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; + var label = g.edge(e); + simplified.setEdge(e.v, e.w, { + weight: simpleLabel.weight + label.weight, + minlen: Math.max(simpleLabel.minlen, label.minlen) + }); + }); + return simplified; +} + +function asNonCompoundGraph(g) { + var simplified = new Graph$6({ multigraph: g.isMultigraph() }).setGraph(g.graph()); + lodash_1.forEach(g.nodes(), function(v) { + if (!g.children(v).length) { + simplified.setNode(v, g.node(v)); + } + }); + lodash_1.forEach(g.edges(), function(e) { + simplified.setEdge(e, g.edge(e)); + }); + return simplified; +} + +function successorWeights(g) { + var weightMap = lodash_1.map(g.nodes(), function(v) { + var sucs = {}; + lodash_1.forEach(g.outEdges(v), function(e) { + sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight; + }); + return sucs; + }); + return lodash_1.zipObject(g.nodes(), weightMap); +} + +function predecessorWeights(g) { + var weightMap = lodash_1.map(g.nodes(), function(v) { + var preds = {}; + lodash_1.forEach(g.inEdges(v), function(e) { + preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight; + }); + return preds; + }); + return lodash_1.zipObject(g.nodes(), weightMap); +} + +/* + * Finds where a line starting at point ({x, y}) would intersect a rectangle + * ({x, y, width, height}) if it were pointing at the rectangle's center. + */ +function intersectRect(rect, point) { + var x = rect.x; + var y = rect.y; + + // Rectangle intersection algorithm from: + // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes + var dx = point.x - x; + var dy = point.y - y; + var w = rect.width / 2; + var h = rect.height / 2; + + if (!dx && !dy) { + throw new Error("Not possible to find intersection inside of the rectangle"); + } + + var sx, sy; + if (Math.abs(dy) * w > Math.abs(dx) * h) { + // Intersection is top or bottom of rect. + if (dy < 0) { + h = -h; + } + sx = h * dx / dy; + sy = h; + } else { + // Intersection is left or right of rect. + if (dx < 0) { + w = -w; + } + sx = w; + sy = w * dy / dx; + } + + return { x: x + sx, y: y + sy }; +} + +/* + * Given a DAG with each node assigned "rank" and "order" properties, this + * function will produce a matrix with the ids of each node. + */ +function buildLayerMatrix(g) { + var layering = lodash_1.map(lodash_1.range(maxRank(g) + 1), function() { return []; }); + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v); + var rank = node.rank; + if (!lodash_1.isUndefined(rank)) { + layering[rank][node.order] = v; + } + }); + return layering; +} + +/* + * Adjusts the ranks for all nodes in the graph such that all nodes v have + * rank(v) >= 0 and at least one node w has rank(w) = 0. + */ +function normalizeRanks$1(g) { + var min = lodash_1.min(lodash_1.map(g.nodes(), function(v) { return g.node(v).rank; })); + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (lodash_1.has(node, "rank")) { + node.rank -= min; + } + }); +} + +function removeEmptyRanks$1(g) { + // Ranks may not start at 0, so we need to offset them + var offset = lodash_1.min(lodash_1.map(g.nodes(), function(v) { return g.node(v).rank; })); + + var layers = []; + lodash_1.forEach(g.nodes(), function(v) { + var rank = g.node(v).rank - offset; + if (!layers[rank]) { + layers[rank] = []; + } + layers[rank].push(v); + }); + + var delta = 0; + var nodeRankFactor = g.graph().nodeRankFactor; + lodash_1.forEach(layers, function(vs, i) { + if (lodash_1.isUndefined(vs) && i % nodeRankFactor !== 0) { + --delta; + } else if (delta) { + lodash_1.forEach(vs, function(v) { g.node(v).rank += delta; }); + } + }); +} + +function addBorderNode$1(g, prefix, rank, order) { + var node = { + width: 0, + height: 0 + }; + if (arguments.length >= 4) { + node.rank = rank; + node.order = order; + } + return addDummyNode(g, "border", node, prefix); +} + +function maxRank(g) { + return lodash_1.max(lodash_1.map(g.nodes(), function(v) { + var rank = g.node(v).rank; + if (!lodash_1.isUndefined(rank)) { + return rank; + } + })); +} + +/* + * Partition a collection into two groups: `lhs` and `rhs`. If the supplied + * function returns true for an entry it goes into `lhs`. Otherwise it goes + * into `rhs. + */ +function partition(collection, fn) { + var result = { lhs: [], rhs: [] }; + lodash_1.forEach(collection, function(value) { + if (fn(value)) { + result.lhs.push(value); + } else { + result.rhs.push(value); + } + }); + return result; +} + +/* + * Returns a new function that wraps `fn` with a timer. The wrapper logs the + * time it takes to execute the function. + */ +function time(name, fn) { + var start = lodash_1.now(); + try { + return fn(); + } finally { + console.log(name + " time: " + (lodash_1.now() - start) + "ms"); + } +} + +function notime(name, fn) { + return fn(); +} + +var normalize = { + run: run$1, + undo: undo$1 +}; + +/* + * Breaks any long edges in the graph into short segments that span 1 layer + * each. This operation is undoable with the denormalize function. + * + * Pre-conditions: + * + * 1. The input graph is a DAG. + * 2. Each node in the graph has a "rank" property. + * + * Post-condition: + * + * 1. All edges in the graph have a length of 1. + * 2. Dummy nodes are added where edges have been split into segments. + * 3. The graph is augmented with a "dummyChains" attribute which contains + * the first dummy in each chain of dummy nodes produced. + */ +function run$1(g) { + g.graph().dummyChains = []; + lodash_1.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); }); +} + +function normalizeEdge(g, e) { + var v = e.v; + var vRank = g.node(v).rank; + var w = e.w; + var wRank = g.node(w).rank; + var name = e.name; + var edgeLabel = g.edge(e); + var labelRank = edgeLabel.labelRank; + + if (wRank === vRank + 1) return; + + g.removeEdge(e); + + var dummy, attrs, i; + for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { + edgeLabel.points = []; + attrs = { + width: 0, height: 0, + edgeLabel: edgeLabel, edgeObj: e, + rank: vRank + }; + dummy = util$1.addDummyNode(g, "edge", attrs, "_d"); + if (vRank === labelRank) { + attrs.width = edgeLabel.width; + attrs.height = edgeLabel.height; + attrs.dummy = "edge-label"; + attrs.labelpos = edgeLabel.labelpos; + } + g.setEdge(v, dummy, { weight: edgeLabel.weight }, name); + if (i === 0) { + g.graph().dummyChains.push(dummy); + } + v = dummy; + } + + g.setEdge(v, w, { weight: edgeLabel.weight }, name); +} + +function undo$1(g) { + lodash_1.forEach(g.graph().dummyChains, function(v) { + var node = g.node(v); + var origLabel = node.edgeLabel; + var w; + g.setEdge(node.edgeObj, origLabel); + while (node.dummy) { + w = g.successors(v)[0]; + g.removeNode(v); + origLabel.points.push({ x: node.x, y: node.y }); + if (node.dummy === "edge-label") { + origLabel.x = node.x; + origLabel.y = node.y; + origLabel.width = node.width; + origLabel.height = node.height; + } + v = w; + node = g.node(v); + } + }); +} + +var util = { + longestPath: longestPath$1, + slack: slack$2 +}; + +/* + * Initializes ranks for the input graph using the longest path algorithm. This + * algorithm scales well and is fast in practice, it yields rather poor + * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom + * ranks wide and leaving edges longer than necessary. However, due to its + * speed, this algorithm is good for getting an initial ranking that can be fed + * into other algorithms. + * + * This algorithm does not normalize layers because it will be used by other + * algorithms in most cases. If using this algorithm directly, be sure to + * run normalize at the end. + * + * Pre-conditions: + * + * 1. Input graph is a DAG. + * 2. Input graph node labels can be assigned properties. + * + * Post-conditions: + * + * 1. Each node will be assign an (unnormalized) "rank" property. + */ +function longestPath$1(g) { + var visited = {}; + + function dfs(v) { + var label = g.node(v); + if (lodash_1.has(visited, v)) { + return label.rank; + } + visited[v] = true; + + var rank = lodash_1.min(lodash_1.map(g.outEdges(v), function(e) { + return dfs(e.w) - g.edge(e).minlen; + })); + + if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 + rank === undefined || // return value of _.map([]) for Lodash 4 + rank === null) { // return value of _.map([null]) + rank = 0; + } + + return (label.rank = rank); + } + + lodash_1.forEach(g.sources(), dfs); +} + +/* + * Returns the amount of slack for the given edge. The slack is defined as the + * difference between the length of the edge and its minimum length. + */ +function slack$2(g, e) { + return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen; +} + +var Graph$5 = graphlib_1.Graph; +var slack$1 = util.slack; + +var feasibleTree_1 = feasibleTree; + +/* + * Constructs a spanning tree with tight edges and adjusted the input node's + * ranks to achieve this. A tight edge is one that is has a length that matches + * its "minlen" attribute. + * + * The basic structure for this function is derived from Gansner, et al., "A + * Technique for Drawing Directed Graphs." + * + * Pre-conditions: + * + * 1. Graph must be a DAG. + * 2. Graph must be connected. + * 3. Graph must have at least one node. + * 5. Graph nodes must have been previously assigned a "rank" property that + * respects the "minlen" property of incident edges. + * 6. Graph edges must have a "minlen" property. + * + * Post-conditions: + * + * - Graph nodes will have their rank adjusted to ensure that all edges are + * tight. + * + * Returns a tree (undirected graph) that is constructed using only "tight" + * edges. + */ +function feasibleTree(g) { + var t = new Graph$5({ directed: false }); + + // Choose arbitrary node from which to start our tree + var start = g.nodes()[0]; + var size = g.nodeCount(); + t.setNode(start, {}); + + var edge, delta; + while (tightTree(t, g) < size) { + edge = findMinSlackEdge(t, g); + delta = t.hasNode(edge.v) ? slack$1(g, edge) : -slack$1(g, edge); + shiftRanks(t, g, delta); + } + + return t; +} + +/* + * Finds a maximal tree of tight edges and returns the number of nodes in the + * tree. + */ +function tightTree(t, g) { + function dfs(v) { + lodash_1.forEach(g.nodeEdges(v), function(e) { + var edgeV = e.v, + w = (v === edgeV) ? e.w : edgeV; + if (!t.hasNode(w) && !slack$1(g, e)) { + t.setNode(w, {}); + t.setEdge(v, w, {}); + dfs(w); + } + }); + } + + lodash_1.forEach(t.nodes(), dfs); + return t.nodeCount(); +} + +/* + * Finds the edge with the smallest slack that is incident on tree and returns + * it. + */ +function findMinSlackEdge(t, g) { + return lodash_1.minBy(g.edges(), function(e) { + if (t.hasNode(e.v) !== t.hasNode(e.w)) { + return slack$1(g, e); + } + }); +} + +function shiftRanks(t, g, delta) { + lodash_1.forEach(t.nodes(), function(v) { + g.node(v).rank += delta; + }); +} + +var slack = util.slack; +var initRank = util.longestPath; +var preorder = graphlib_1.alg.preorder; +var postorder$1 = graphlib_1.alg.postorder; +var simplify = util$1.simplify; + +var networkSimplex_1 = networkSimplex; + +// Expose some internals for testing purposes +networkSimplex.initLowLimValues = initLowLimValues; +networkSimplex.initCutValues = initCutValues; +networkSimplex.calcCutValue = calcCutValue; +networkSimplex.leaveEdge = leaveEdge; +networkSimplex.enterEdge = enterEdge; +networkSimplex.exchangeEdges = exchangeEdges; + +/* + * The network simplex algorithm assigns ranks to each node in the input graph + * and iteratively improves the ranking to reduce the length of edges. + * + * Preconditions: + * + * 1. The input graph must be a DAG. + * 2. All nodes in the graph must have an object value. + * 3. All edges in the graph must have "minlen" and "weight" attributes. + * + * Postconditions: + * + * 1. All nodes in the graph will have an assigned "rank" attribute that has + * been optimized by the network simplex algorithm. Ranks start at 0. + * + * + * A rough sketch of the algorithm is as follows: + * + * 1. Assign initial ranks to each node. We use the longest path algorithm, + * which assigns ranks to the lowest position possible. In general this + * leads to very wide bottom ranks and unnecessarily long edges. + * 2. Construct a feasible tight tree. A tight tree is one such that all + * edges in the tree have no slack (difference between length of edge + * and minlen for the edge). This by itself greatly improves the assigned + * rankings by shorting edges. + * 3. Iteratively find edges that have negative cut values. Generally a + * negative cut value indicates that the edge could be removed and a new + * tree edge could be added to produce a more compact graph. + * + * Much of the algorithms here are derived from Gansner, et al., "A Technique + * for Drawing Directed Graphs." The structure of the file roughly follows the + * structure of the overall algorithm. + */ +function networkSimplex(g) { + g = simplify(g); + initRank(g); + var t = feasibleTree_1(g); + initLowLimValues(t); + initCutValues(t, g); + + var e, f; + while ((e = leaveEdge(t))) { + f = enterEdge(t, g, e); + exchangeEdges(t, g, e, f); + } +} + +/* + * Initializes cut values for all edges in the tree. + */ +function initCutValues(t, g) { + var vs = postorder$1(t, t.nodes()); + vs = vs.slice(0, vs.length - 1); + lodash_1.forEach(vs, function(v) { + assignCutValue(t, g, v); + }); +} + +function assignCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + t.edge(child, parent).cutvalue = calcCutValue(t, g, child); +} + +/* + * Given the tight tree, its graph, and a child in the graph calculate and + * return the cut value for the edge between the child and its parent. + */ +function calcCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + // True if the child is on the tail end of the edge in the directed graph + var childIsTail = true; + // The graph's view of the tree edge we're inspecting + var graphEdge = g.edge(child, parent); + // The accumulated cut value for the edge between this node and its parent + var cutValue = 0; + + if (!graphEdge) { + childIsTail = false; + graphEdge = g.edge(parent, child); + } + + cutValue = graphEdge.weight; + + lodash_1.forEach(g.nodeEdges(child), function(e) { + var isOutEdge = e.v === child, + other = isOutEdge ? e.w : e.v; + + if (other !== parent) { + var pointsToHead = isOutEdge === childIsTail, + otherWeight = g.edge(e).weight; + + cutValue += pointsToHead ? otherWeight : -otherWeight; + if (isTreeEdge(t, child, other)) { + var otherCutValue = t.edge(child, other).cutvalue; + cutValue += pointsToHead ? -otherCutValue : otherCutValue; + } + } + }); + + return cutValue; +} + +function initLowLimValues(tree, root) { + if (arguments.length < 2) { + root = tree.nodes()[0]; + } + dfsAssignLowLim(tree, {}, 1, root); +} + +function dfsAssignLowLim(tree, visited, nextLim, v, parent) { + var low = nextLim; + var label = tree.node(v); + + visited[v] = true; + lodash_1.forEach(tree.neighbors(v), function(w) { + if (!lodash_1.has(visited, w)) { + nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v); + } + }); + + label.low = low; + label.lim = nextLim++; + if (parent) { + label.parent = parent; + } else { + // TODO should be able to remove this when we incrementally update low lim + delete label.parent; + } + + return nextLim; +} + +function leaveEdge(tree) { + return lodash_1.find(tree.edges(), function(e) { + return tree.edge(e).cutvalue < 0; + }); +} + +function enterEdge(t, g, edge) { + var v = edge.v; + var w = edge.w; + + // For the rest of this function we assume that v is the tail and w is the + // head, so if we don't have this edge in the graph we should flip it to + // match the correct orientation. + if (!g.hasEdge(v, w)) { + v = edge.w; + w = edge.v; + } + + var vLabel = t.node(v); + var wLabel = t.node(w); + var tailLabel = vLabel; + var flip = false; + + // If the root is in the tail of the edge then we need to flip the logic that + // checks for the head and tail nodes in the candidates function below. + if (vLabel.lim > wLabel.lim) { + tailLabel = wLabel; + flip = true; + } + + var candidates = lodash_1.filter(g.edges(), function(edge) { + return flip === isDescendant(t, t.node(edge.v), tailLabel) && + flip !== isDescendant(t, t.node(edge.w), tailLabel); + }); + + return lodash_1.minBy(candidates, function(edge) { return slack(g, edge); }); +} + +function exchangeEdges(t, g, e, f) { + var v = e.v; + var w = e.w; + t.removeEdge(v, w); + t.setEdge(f.v, f.w, {}); + initLowLimValues(t); + initCutValues(t, g); + updateRanks(t, g); +} + +function updateRanks(t, g) { + var root = lodash_1.find(t.nodes(), function(v) { return !g.node(v).parent; }); + var vs = preorder(t, root); + vs = vs.slice(1); + lodash_1.forEach(vs, function(v) { + var parent = t.node(v).parent, + edge = g.edge(v, parent), + flipped = false; + + if (!edge) { + edge = g.edge(parent, v); + flipped = true; + } + + g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); + }); +} + +/* + * Returns true if the edge is in the tree. + */ +function isTreeEdge(tree, u, v) { + return tree.hasEdge(u, v); +} + +/* + * Returns true if the specified node is descendant of the root node per the + * assigned low and lim attributes in the tree. + */ +function isDescendant(tree, vLabel, rootLabel) { + return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; +} + +var longestPath = util.longestPath; + + + +var rank_1 = rank; + +/* + * Assigns a rank to each node in the input graph that respects the "minlen" + * constraint specified on edges between nodes. + * + * This basic structure is derived from Gansner, et al., "A Technique for + * Drawing Directed Graphs." + * + * Pre-conditions: + * + * 1. Graph must be a connected DAG + * 2. Graph nodes must be objects + * 3. Graph edges must have "weight" and "minlen" attributes + * + * Post-conditions: + * + * 1. Graph nodes will have a "rank" attribute based on the results of the + * algorithm. Ranks can start at any index (including negative), we'll + * fix them up later. + */ +function rank(g) { + if (typeof g.graph().ranker === "function") { + g.graph().ranker(g); + } + else { + switch (g.graph().ranker) { + case "network-simplex": + networkSimplexRanker(g); + break; + case "tight-tree": + tightTreeRanker(g); + break; + case "longest-path": + longestPathRanker(g); + break; + default: + networkSimplexRanker(g); + } + } +} + +// A fast and simple ranker, but results are far from optimal. +var longestPathRanker = longestPath; + +function tightTreeRanker(g) { + longestPath(g); + feasibleTree_1(g); +} + +function networkSimplexRanker(g) { + networkSimplex_1(g); +} + +var parentDummyChains_1 = parentDummyChains; + +function parentDummyChains(g) { + var postorderNums = postorder(g); + + lodash_1.forEach(g.graph().dummyChains, function(v) { + var node = g.node(v); + var edgeObj = node.edgeObj; + var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w); + var path = pathData.path; + var lca = pathData.lca; + var pathIdx = 0; + var pathV = path[pathIdx]; + var ascending = true; + + while (v !== edgeObj.w) { + node = g.node(v); + + if (ascending) { + while ((pathV = path[pathIdx]) !== lca && + g.node(pathV).maxRank < node.rank) { + pathIdx++; + } + + if (pathV === lca) { + ascending = false; + } + } + + if (!ascending) { + while (pathIdx < path.length - 1 && + g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) { + pathIdx++; + } + pathV = path[pathIdx]; + } + + g.setParent(v, pathV); + v = g.successors(v)[0]; + } + }); +} + +// Find a path from v to w through the lowest common ancestor (LCA). Return the +// full path and the LCA. +function findPath(g, postorderNums, v, w) { + var vPath = []; + var wPath = []; + var low = Math.min(postorderNums[v].low, postorderNums[w].low); + var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim); + var parent; + var lca; + + // Traverse up from v to find the LCA + parent = v; + do { + parent = g.parent(parent); + vPath.push(parent); + } while (parent && + (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); + lca = parent; + + // Traverse from w to LCA + parent = w; + while ((parent = g.parent(parent)) !== lca) { + wPath.push(parent); + } + + return { path: vPath.concat(wPath.reverse()), lca: lca }; +} + +function postorder(g) { + var result = {}; + var lim = 0; + + function dfs(v) { + var low = lim; + lodash_1.forEach(g.children(v), dfs); + result[v] = { low: low, lim: lim++ }; + } + lodash_1.forEach(g.children(), dfs); + + return result; +} + +var nestingGraph = { + run: run, + cleanup: cleanup +}; + +/* + * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs, + * adds appropriate edges to ensure that all cluster nodes are placed between + * these boundries, and ensures that the graph is connected. + * + * In addition we ensure, through the use of the minlen property, that nodes + * and subgraph border nodes to not end up on the same rank. + * + * Preconditions: + * + * 1. Input graph is a DAG + * 2. Nodes in the input graph has a minlen attribute + * + * Postconditions: + * + * 1. Input graph is connected. + * 2. Dummy nodes are added for the tops and bottoms of subgraphs. + * 3. The minlen attribute for nodes is adjusted to ensure nodes do not + * get placed on the same rank as subgraph border nodes. + * + * The nesting graph idea comes from Sander, "Layout of Compound Directed + * Graphs." + */ +function run(g) { + var root = util$1.addDummyNode(g, "root", {}, "_root"); + var depths = treeDepths(g); + var height = lodash_1.max(lodash_1.values(depths)) - 1; // Note: depths is an Object not an array + var nodeSep = 2 * height + 1; + + g.graph().nestingRoot = root; + + // Multiply minlen by nodeSep to align nodes on non-border ranks. + lodash_1.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; }); + + // Calculate a weight that is sufficient to keep subgraphs vertically compact + var weight = sumWeights(g) + 1; + + // Create border nodes and link them up + lodash_1.forEach(g.children(), function(child) { + dfs(g, root, nodeSep, weight, height, depths, child); + }); + + // Save the multiplier for node layers for later removal of empty border + // layers. + g.graph().nodeRankFactor = nodeSep; +} + +function dfs(g, root, nodeSep, weight, height, depths, v) { + var children = g.children(v); + if (!children.length) { + if (v !== root) { + g.setEdge(root, v, { weight: 0, minlen: nodeSep }); + } + return; + } + + var top = util$1.addBorderNode(g, "_bt"); + var bottom = util$1.addBorderNode(g, "_bb"); + var label = g.node(v); + + g.setParent(top, v); + label.borderTop = top; + g.setParent(bottom, v); + label.borderBottom = bottom; + + lodash_1.forEach(children, function(child) { + dfs(g, root, nodeSep, weight, height, depths, child); + + var childNode = g.node(child); + var childTop = childNode.borderTop ? childNode.borderTop : child; + var childBottom = childNode.borderBottom ? childNode.borderBottom : child; + var thisWeight = childNode.borderTop ? weight : 2 * weight; + var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1; + + g.setEdge(top, childTop, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true + }); + + g.setEdge(childBottom, bottom, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true + }); + }); + + if (!g.parent(v)) { + g.setEdge(root, top, { weight: 0, minlen: height + depths[v] }); + } +} + +function treeDepths(g) { + var depths = {}; + function dfs(v, depth) { + var children = g.children(v); + if (children && children.length) { + lodash_1.forEach(children, function(child) { + dfs(child, depth + 1); + }); + } + depths[v] = depth; + } + lodash_1.forEach(g.children(), function(v) { dfs(v, 1); }); + return depths; +} + +function sumWeights(g) { + return lodash_1.reduce(g.edges(), function(acc, e) { + return acc + g.edge(e).weight; + }, 0); +} + +function cleanup(g) { + var graphLabel = g.graph(); + g.removeNode(graphLabel.nestingRoot); + delete graphLabel.nestingRoot; + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.nestingEdge) { + g.removeEdge(e); + } + }); +} + +var addBorderSegments_1 = addBorderSegments; + +function addBorderSegments(g) { + function dfs(v) { + var children = g.children(v); + var node = g.node(v); + if (children.length) { + lodash_1.forEach(children, dfs); + } + + if (lodash_1.has(node, "minRank")) { + node.borderLeft = []; + node.borderRight = []; + for (var rank = node.minRank, maxRank = node.maxRank + 1; + rank < maxRank; + ++rank) { + addBorderNode(g, "borderLeft", "_bl", v, node, rank); + addBorderNode(g, "borderRight", "_br", v, node, rank); + } + } + } + + lodash_1.forEach(g.children(), dfs); +} + +function addBorderNode(g, prop, prefix, sg, sgNode, rank) { + var label = { width: 0, height: 0, rank: rank, borderType: prop }; + var prev = sgNode[prop][rank - 1]; + var curr = util$1.addDummyNode(g, "border", label, prefix); + sgNode[prop][rank] = curr; + g.setParent(curr, sg); + if (prev) { + g.setEdge(prev, curr, { weight: 1 }); + } +} + +var coordinateSystem = { + adjust: adjust, + undo: undo +}; + +function adjust(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === "lr" || rankDir === "rl") { + swapWidthHeight(g); + } +} + +function undo(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === "bt" || rankDir === "rl") { + reverseY(g); + } + + if (rankDir === "lr" || rankDir === "rl") { + swapXY(g); + swapWidthHeight(g); + } +} + +function swapWidthHeight(g) { + lodash_1.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); }); + lodash_1.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); }); +} + +function swapWidthHeightOne(attrs) { + var w = attrs.width; + attrs.width = attrs.height; + attrs.height = w; +} + +function reverseY(g) { + lodash_1.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); }); + + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + lodash_1.forEach(edge.points, reverseYOne); + if (lodash_1.has(edge, "y")) { + reverseYOne(edge); + } + }); +} + +function reverseYOne(attrs) { + attrs.y = -attrs.y; +} + +function swapXY(g) { + lodash_1.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); }); + + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + lodash_1.forEach(edge.points, swapXYOne); + if (lodash_1.has(edge, "x")) { + swapXYOne(edge); + } + }); +} + +function swapXYOne(attrs) { + var x = attrs.x; + attrs.x = attrs.y; + attrs.y = x; +} + +var initOrder_1 = initOrder; + +/* + * Assigns an initial order value for each node by performing a DFS search + * starting from nodes in the first rank. Nodes are assigned an order in their + * rank as they are first visited. + * + * This approach comes from Gansner, et al., "A Technique for Drawing Directed + * Graphs." + * + * Returns a layering matrix with an array per layer and each layer sorted by + * the order of its nodes. + */ +function initOrder(g) { + var visited = {}; + var simpleNodes = lodash_1.filter(g.nodes(), function(v) { + return !g.children(v).length; + }); + var maxRank = lodash_1.max(lodash_1.map(simpleNodes, function(v) { return g.node(v).rank; })); + var layers = lodash_1.map(lodash_1.range(maxRank + 1), function() { return []; }); + + function dfs(v) { + if (lodash_1.has(visited, v)) return; + visited[v] = true; + var node = g.node(v); + layers[node.rank].push(v); + lodash_1.forEach(g.successors(v), dfs); + } + + var orderedVs = lodash_1.sortBy(simpleNodes, function(v) { return g.node(v).rank; }); + lodash_1.forEach(orderedVs, dfs); + + return layers; +} + +var crossCount_1 = crossCount; + +/* + * A function that takes a layering (an array of layers, each with an array of + * ordererd nodes) and a graph and returns a weighted crossing count. + * + * Pre-conditions: + * + * 1. Input graph must be simple (not a multigraph), directed, and include + * only simple edges. + * 2. Edges in the input graph must have assigned weights. + * + * Post-conditions: + * + * 1. The graph and layering matrix are left unchanged. + * + * This algorithm is derived from Barth, et al., "Bilayer Cross Counting." + */ +function crossCount(g, layering) { + var cc = 0; + for (var i = 1; i < layering.length; ++i) { + cc += twoLayerCrossCount(g, layering[i-1], layering[i]); + } + return cc; +} + +function twoLayerCrossCount(g, northLayer, southLayer) { + // Sort all of the edges between the north and south layers by their position + // in the north layer and then the south. Map these edges to the position of + // their head in the south layer. + var southPos = lodash_1.zipObject(southLayer, + lodash_1.map(southLayer, function (v, i) { return i; })); + var southEntries = lodash_1.flatten(lodash_1.map(northLayer, function(v) { + return lodash_1.sortBy(lodash_1.map(g.outEdges(v), function(e) { + return { pos: southPos[e.w], weight: g.edge(e).weight }; + }), "pos"); + }), true); + + // Build the accumulator tree + var firstIndex = 1; + while (firstIndex < southLayer.length) firstIndex <<= 1; + var treeSize = 2 * firstIndex - 1; + firstIndex -= 1; + var tree = lodash_1.map(new Array(treeSize), function() { return 0; }); + + // Calculate the weighted crossings + var cc = 0; + lodash_1.forEach(southEntries.forEach(function(entry) { + var index = entry.pos + firstIndex; + tree[index] += entry.weight; + var weightSum = 0; + while (index > 0) { + if (index % 2) { + weightSum += tree[index + 1]; + } + index = (index - 1) >> 1; + tree[index] += entry.weight; + } + cc += entry.weight * weightSum; + })); + + return cc; +} + +var barycenter_1 = barycenter; + +function barycenter(g, movable) { + return lodash_1.map(movable, function(v) { + var inV = g.inEdges(v); + if (!inV.length) { + return { v: v }; + } else { + var result = lodash_1.reduce(inV, function(acc, e) { + var edge = g.edge(e), + nodeU = g.node(e.v); + return { + sum: acc.sum + (edge.weight * nodeU.order), + weight: acc.weight + edge.weight + }; + }, { sum: 0, weight: 0 }); + + return { + v: v, + barycenter: result.sum / result.weight, + weight: result.weight + }; + } + }); +} + +var resolveConflicts_1 = resolveConflicts; + +/* + * Given a list of entries of the form {v, barycenter, weight} and a + * constraint graph this function will resolve any conflicts between the + * constraint graph and the barycenters for the entries. If the barycenters for + * an entry would violate a constraint in the constraint graph then we coalesce + * the nodes in the conflict into a new node that respects the contraint and + * aggregates barycenter and weight information. + * + * This implementation is based on the description in Forster, "A Fast and + * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it + * differs in some specific details. + * + * Pre-conditions: + * + * 1. Each entry has the form {v, barycenter, weight}, or if the node has + * no barycenter, then {v}. + * + * Returns: + * + * A new list of entries of the form {vs, i, barycenter, weight}. The list + * `vs` may either be a singleton or it may be an aggregation of nodes + * ordered such that they do not violate constraints from the constraint + * graph. The property `i` is the lowest original index of any of the + * elements in `vs`. + */ +function resolveConflicts(entries, cg) { + var mappedEntries = {}; + lodash_1.forEach(entries, function(entry, i) { + var tmp = mappedEntries[entry.v] = { + indegree: 0, + "in": [], + out: [], + vs: [entry.v], + i: i + }; + if (!lodash_1.isUndefined(entry.barycenter)) { + tmp.barycenter = entry.barycenter; + tmp.weight = entry.weight; + } + }); + + lodash_1.forEach(cg.edges(), function(e) { + var entryV = mappedEntries[e.v]; + var entryW = mappedEntries[e.w]; + if (!lodash_1.isUndefined(entryV) && !lodash_1.isUndefined(entryW)) { + entryW.indegree++; + entryV.out.push(mappedEntries[e.w]); + } + }); + + var sourceSet = lodash_1.filter(mappedEntries, function(entry) { + return !entry.indegree; + }); + + return doResolveConflicts(sourceSet); +} + +function doResolveConflicts(sourceSet) { + var entries = []; + + function handleIn(vEntry) { + return function(uEntry) { + if (uEntry.merged) { + return; + } + if (lodash_1.isUndefined(uEntry.barycenter) || + lodash_1.isUndefined(vEntry.barycenter) || + uEntry.barycenter >= vEntry.barycenter) { + mergeEntries(vEntry, uEntry); + } + }; + } + + function handleOut(vEntry) { + return function(wEntry) { + wEntry["in"].push(vEntry); + if (--wEntry.indegree === 0) { + sourceSet.push(wEntry); + } + }; + } + + while (sourceSet.length) { + var entry = sourceSet.pop(); + entries.push(entry); + lodash_1.forEach(entry["in"].reverse(), handleIn(entry)); + lodash_1.forEach(entry.out, handleOut(entry)); + } + + return lodash_1.map(lodash_1.filter(entries, function(entry) { return !entry.merged; }), + function(entry) { + return lodash_1.pick(entry, ["vs", "i", "barycenter", "weight"]); + }); + +} + +function mergeEntries(target, source) { + var sum = 0; + var weight = 0; + + if (target.weight) { + sum += target.barycenter * target.weight; + weight += target.weight; + } + + if (source.weight) { + sum += source.barycenter * source.weight; + weight += source.weight; + } + + target.vs = source.vs.concat(target.vs); + target.barycenter = sum / weight; + target.weight = weight; + target.i = Math.min(source.i, target.i); + source.merged = true; +} + +var sort_1 = sort; + +function sort(entries, biasRight) { + var parts = util$1.partition(entries, function(entry) { + return lodash_1.has(entry, "barycenter"); + }); + var sortable = parts.lhs, + unsortable = lodash_1.sortBy(parts.rhs, function(entry) { return -entry.i; }), + vs = [], + sum = 0, + weight = 0, + vsIndex = 0; + + sortable.sort(compareWithBias(!!biasRight)); + + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + + lodash_1.forEach(sortable, function (entry) { + vsIndex += entry.vs.length; + vs.push(entry.vs); + sum += entry.barycenter * entry.weight; + weight += entry.weight; + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + }); + + var result = { vs: lodash_1.flatten(vs, true) }; + if (weight) { + result.barycenter = sum / weight; + result.weight = weight; + } + return result; +} + +function consumeUnsortable(vs, unsortable, index) { + var last; + while (unsortable.length && (last = lodash_1.last(unsortable)).i <= index) { + unsortable.pop(); + vs.push(last.vs); + index++; + } + return index; +} + +function compareWithBias(bias) { + return function(entryV, entryW) { + if (entryV.barycenter < entryW.barycenter) { + return -1; + } else if (entryV.barycenter > entryW.barycenter) { + return 1; + } + + return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; + }; +} + +var sortSubgraph_1 = sortSubgraph; + +function sortSubgraph(g, v, cg, biasRight) { + var movable = g.children(v); + var node = g.node(v); + var bl = node ? node.borderLeft : undefined; + var br = node ? node.borderRight: undefined; + var subgraphs = {}; + + if (bl) { + movable = lodash_1.filter(movable, function(w) { + return w !== bl && w !== br; + }); + } + + var barycenters = barycenter_1(g, movable); + lodash_1.forEach(barycenters, function(entry) { + if (g.children(entry.v).length) { + var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight); + subgraphs[entry.v] = subgraphResult; + if (lodash_1.has(subgraphResult, "barycenter")) { + mergeBarycenters(entry, subgraphResult); + } + } + }); + + var entries = resolveConflicts_1(barycenters, cg); + expandSubgraphs(entries, subgraphs); + + var result = sort_1(entries, biasRight); + + if (bl) { + result.vs = lodash_1.flatten([bl, result.vs, br], true); + if (g.predecessors(bl).length) { + var blPred = g.node(g.predecessors(bl)[0]), + brPred = g.node(g.predecessors(br)[0]); + if (!lodash_1.has(result, "barycenter")) { + result.barycenter = 0; + result.weight = 0; + } + result.barycenter = (result.barycenter * result.weight + + blPred.order + brPred.order) / (result.weight + 2); + result.weight += 2; + } + } + + return result; +} + +function expandSubgraphs(entries, subgraphs) { + lodash_1.forEach(entries, function(entry) { + entry.vs = lodash_1.flatten(entry.vs.map(function(v) { + if (subgraphs[v]) { + return subgraphs[v].vs; + } + return v; + }), true); + }); +} + +function mergeBarycenters(target, other) { + if (!lodash_1.isUndefined(target.barycenter)) { + target.barycenter = (target.barycenter * target.weight + + other.barycenter * other.weight) / + (target.weight + other.weight); + target.weight += other.weight; + } else { + target.barycenter = other.barycenter; + target.weight = other.weight; + } +} + +var Graph$4 = graphlib_1.Graph; + +var buildLayerGraph_1 = buildLayerGraph; + +/* + * Constructs a graph that can be used to sort a layer of nodes. The graph will + * contain all base and subgraph nodes from the request layer in their original + * hierarchy and any edges that are incident on these nodes and are of the type + * requested by the "relationship" parameter. + * + * Nodes from the requested rank that do not have parents are assigned a root + * node in the output graph, which is set in the root graph attribute. This + * makes it easy to walk the hierarchy of movable nodes during ordering. + * + * Pre-conditions: + * + * 1. Input graph is a DAG + * 2. Base nodes in the input graph have a rank attribute + * 3. Subgraph nodes in the input graph has minRank and maxRank attributes + * 4. Edges have an assigned weight + * + * Post-conditions: + * + * 1. Output graph has all nodes in the movable rank with preserved + * hierarchy. + * 2. Root nodes in the movable layer are made children of the node + * indicated by the root attribute of the graph. + * 3. Non-movable nodes incident on movable nodes, selected by the + * relationship parameter, are included in the graph (without hierarchy). + * 4. Edges incident on movable nodes, selected by the relationship + * parameter, are added to the output graph. + * 5. The weights for copied edges are aggregated as need, since the output + * graph is not a multi-graph. + */ +function buildLayerGraph(g, rank, relationship) { + var root = createRootNode(g), + result = new Graph$4({ compound: true }).setGraph({ root: root }) + .setDefaultNodeLabel(function(v) { return g.node(v); }); + + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v), + parent = g.parent(v); + + if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) { + result.setNode(v); + result.setParent(v, parent || root); + + // This assumes we have only short edges! + lodash_1.forEach(g[relationship](v), function(e) { + var u = e.v === v ? e.w : e.v, + edge = result.edge(u, v), + weight = !lodash_1.isUndefined(edge) ? edge.weight : 0; + result.setEdge(u, v, { weight: g.edge(e).weight + weight }); + }); + + if (lodash_1.has(node, "minRank")) { + result.setNode(v, { + borderLeft: node.borderLeft[rank], + borderRight: node.borderRight[rank] + }); + } + } + }); + + return result; +} + +function createRootNode(g) { + var v; + while (g.hasNode((v = lodash_1.uniqueId("_root")))); + return v; +} + +var addSubgraphConstraints_1 = addSubgraphConstraints; + +function addSubgraphConstraints(g, cg, vs) { + var prev = {}, + rootPrev; + + lodash_1.forEach(vs, function(v) { + var child = g.parent(v), + parent, + prevChild; + while (child) { + parent = g.parent(child); + if (parent) { + prevChild = prev[parent]; + prev[parent] = child; + } else { + prevChild = rootPrev; + rootPrev = child; + } + if (prevChild && prevChild !== child) { + cg.setEdge(prevChild, child); + return; + } + child = parent; + } + }); + + /* + function dfs(v) { + var children = v ? g.children(v) : g.children(); + if (children.length) { + var min = Number.POSITIVE_INFINITY, + subgraphs = []; + _.each(children, function(child) { + var childMin = dfs(child); + if (g.children(child).length) { + subgraphs.push({ v: child, order: childMin }); + } + min = Math.min(min, childMin); + }); + _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) { + cg.setEdge(prev.v, curr.v); + return curr; + }); + return min; + } + return g.node(v).order; + } + dfs(undefined); + */ +} + +var Graph$3 = graphlib_1.Graph; + + +var order_1 = order; + +/* + * Applies heuristics to minimize edge crossings in the graph and sets the best + * order solution as an order attribute on each node. + * + * Pre-conditions: + * + * 1. Graph must be DAG + * 2. Graph nodes must be objects with a "rank" attribute + * 3. Graph edges must have the "weight" attribute + * + * Post-conditions: + * + * 1. Graph nodes will have an "order" attribute based on the results of the + * algorithm. + */ +function order(g) { + var maxRank = util$1.maxRank(g), + downLayerGraphs = buildLayerGraphs(g, lodash_1.range(1, maxRank + 1), "inEdges"), + upLayerGraphs = buildLayerGraphs(g, lodash_1.range(maxRank - 1, -1, -1), "outEdges"); + + var layering = initOrder_1(g); + assignOrder(g, layering); + + var bestCC = Number.POSITIVE_INFINITY, + best; + + for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { + sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2); + + layering = util$1.buildLayerMatrix(g); + var cc = crossCount_1(g, layering); + if (cc < bestCC) { + lastBest = 0; + best = lodash_1.cloneDeep(layering); + bestCC = cc; + } + } + + assignOrder(g, best); +} + +function buildLayerGraphs(g, ranks, relationship) { + return lodash_1.map(ranks, function(rank) { + return buildLayerGraph_1(g, rank, relationship); + }); +} + +function sweepLayerGraphs(layerGraphs, biasRight) { + var cg = new Graph$3(); + lodash_1.forEach(layerGraphs, function(lg) { + var root = lg.graph().root; + var sorted = sortSubgraph_1(lg, root, cg, biasRight); + lodash_1.forEach(sorted.vs, function(v, i) { + lg.node(v).order = i; + }); + addSubgraphConstraints_1(lg, cg, sorted.vs); + }); +} + +function assignOrder(g, layering) { + lodash_1.forEach(layering, function(layer) { + lodash_1.forEach(layer, function(v, i) { + g.node(v).order = i; + }); + }); +} + +var Graph$2 = graphlib_1.Graph; + + +/* + * This module provides coordinate assignment based on Brandes and Köpf, "Fast + * and Simple Horizontal Coordinate Assignment." + */ + +var bk = { + positionX: positionX$1, + findType1Conflicts: findType1Conflicts, + findType2Conflicts: findType2Conflicts, + addConflict: addConflict, + hasConflict: hasConflict, + verticalAlignment: verticalAlignment, + horizontalCompaction: horizontalCompaction, + alignCoordinates: alignCoordinates, + findSmallestWidthAlignment: findSmallestWidthAlignment, + balance: balance +}; + +/* + * Marks all edges in the graph with a type-1 conflict with the "type1Conflict" + * property. A type-1 conflict is one where a non-inner segment crosses an + * inner segment. An inner segment is an edge with both incident nodes marked + * with the "dummy" property. + * + * This algorithm scans layer by layer, starting with the second, for type-1 + * conflicts between the current layer and the previous layer. For each layer + * it scans the nodes from left to right until it reaches one that is incident + * on an inner segment. It then scans predecessors to determine if they have + * edges that cross that inner segment. At the end a final scan is done for all + * nodes on the current rank to see if they cross the last visited inner + * segment. + * + * This algorithm (safely) assumes that a dummy node will only be incident on a + * single node in the layers being scanned. + */ +function findType1Conflicts(g, layering) { + var conflicts = {}; + + function visitLayer(prevLayer, layer) { + var + // last visited node in the previous layer that is incident on an inner + // segment. + k0 = 0, + // Tracks the last node in this layer scanned for crossings with a type-1 + // segment. + scanPos = 0, + prevLayerLength = prevLayer.length, + lastNode = lodash_1.last(layer); + + lodash_1.forEach(layer, function(v, i) { + var w = findOtherInnerSegmentNode(g, v), + k1 = w ? g.node(w).order : prevLayerLength; + + if (w || v === lastNode) { + lodash_1.forEach(layer.slice(scanPos, i +1), function(scanNode) { + lodash_1.forEach(g.predecessors(scanNode), function(u) { + var uLabel = g.node(u), + uPos = uLabel.order; + if ((uPos < k0 || k1 < uPos) && + !(uLabel.dummy && g.node(scanNode).dummy)) { + addConflict(conflicts, u, scanNode); + } + }); + }); + scanPos = i + 1; + k0 = k1; + } + }); + + return layer; + } + + lodash_1.reduce(layering, visitLayer); + return conflicts; +} + +function findType2Conflicts(g, layering) { + var conflicts = {}; + + function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { + var v; + lodash_1.forEach(lodash_1.range(southPos, southEnd), function(i) { + v = south[i]; + if (g.node(v).dummy) { + lodash_1.forEach(g.predecessors(v), function(u) { + var uNode = g.node(u); + if (uNode.dummy && + (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { + addConflict(conflicts, u, v); + } + }); + } + }); + } + + + function visitLayer(north, south) { + var prevNorthPos = -1, + nextNorthPos, + southPos = 0; + + lodash_1.forEach(south, function(v, southLookahead) { + if (g.node(v).dummy === "border") { + var predecessors = g.predecessors(v); + if (predecessors.length) { + nextNorthPos = g.node(predecessors[0]).order; + scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); + southPos = southLookahead; + prevNorthPos = nextNorthPos; + } + } + scan(south, southPos, south.length, nextNorthPos, north.length); + }); + + return south; + } + + lodash_1.reduce(layering, visitLayer); + return conflicts; +} + +function findOtherInnerSegmentNode(g, v) { + if (g.node(v).dummy) { + return lodash_1.find(g.predecessors(v), function(u) { + return g.node(u).dummy; + }); + } +} + +function addConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + + var conflictsV = conflicts[v]; + if (!conflictsV) { + conflicts[v] = conflictsV = {}; + } + conflictsV[w] = true; +} + +function hasConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + return lodash_1.has(conflicts[v], w); +} + +/* + * Try to align nodes into vertical "blocks" where possible. This algorithm + * attempts to align a node with one of its median neighbors. If the edge + * connecting a neighbor is a type-1 conflict then we ignore that possibility. + * If a previous node has already formed a block with a node after the node + * we're trying to form a block with, we also ignore that possibility - our + * blocks would be split in that scenario. + */ +function verticalAlignment(g, layering, conflicts, neighborFn) { + var root = {}, + align = {}, + pos = {}; + + // We cache the position here based on the layering because the graph and + // layering may be out of sync. The layering matrix is manipulated to + // generate different extreme alignments. + lodash_1.forEach(layering, function(layer) { + lodash_1.forEach(layer, function(v, order) { + root[v] = v; + align[v] = v; + pos[v] = order; + }); + }); + + lodash_1.forEach(layering, function(layer) { + var prevIdx = -1; + lodash_1.forEach(layer, function(v) { + var ws = neighborFn(v); + if (ws.length) { + ws = lodash_1.sortBy(ws, function(w) { return pos[w]; }); + var mp = (ws.length - 1) / 2; + for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { + var w = ws[i]; + if (align[v] === v && + prevIdx < pos[w] && + !hasConflict(conflicts, v, w)) { + align[w] = v; + align[v] = root[v] = root[w]; + prevIdx = pos[w]; + } + } + } + }); + }); + + return { root: root, align: align }; +} + +function horizontalCompaction(g, layering, root, align, reverseSep) { + // This portion of the algorithm differs from BK due to a number of problems. + // Instead of their algorithm we construct a new block graph and do two + // sweeps. The first sweep places blocks with the smallest possible + // coordinates. The second sweep removes unused space by moving blocks to the + // greatest coordinates without violating separation. + var xs = {}, + blockG = buildBlockGraph(g, layering, root, reverseSep), + borderType = reverseSep ? "borderLeft" : "borderRight"; + + function iterate(setXsFunc, nextNodesFunc) { + var stack = blockG.nodes(); + var elem = stack.pop(); + var visited = {}; + while (elem) { + if (visited[elem]) { + setXsFunc(elem); + } else { + visited[elem] = true; + stack.push(elem); + stack = stack.concat(nextNodesFunc(elem)); + } + + elem = stack.pop(); + } + } + + // First pass, assign smallest coordinates + function pass1(elem) { + xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) { + if(!xs[e.v]) { + // EMILE: this one can be undefined sometimes for some reason. + xs[e.v] = 0; + } + return Math.max(acc, xs[e.v] + blockG.edge(e)); + }, 0); + } + + // Second pass, assign greatest coordinates + function pass2(elem) { + var min = blockG.outEdges(elem).reduce(function(acc, e) { + return Math.min(acc, xs[e.w] - blockG.edge(e)); + }, Number.POSITIVE_INFINITY); + + var node = g.node(elem); + if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { + xs[elem] = Math.max(xs[elem], min); + } + } + + iterate(pass1, blockG.predecessors.bind(blockG)); + iterate(pass2, blockG.successors.bind(blockG)); + + // Assign x coordinates to all nodes + lodash_1.forEach(align, function(v) { + xs[v] = xs[root[v]]; + }); + + return xs; +} + + +function buildBlockGraph(g, layering, root, reverseSep) { + var blockGraph = new Graph$2(), + graphLabel = g.graph(), + sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); + + lodash_1.forEach(layering, function(layer) { + var u; + lodash_1.forEach(layer, function(v) { + var vRoot = root[v]; + blockGraph.setNode(vRoot); + if (u) { + var uRoot = root[u], + prevMax = blockGraph.edge(uRoot, vRoot); + blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0)); + } + u = v; + }); + }); + + return blockGraph; +} + +/* + * Returns the alignment that has the smallest width of the given alignments. + */ +function findSmallestWidthAlignment(g, xss) { + return lodash_1.minBy(lodash_1.values(xss), function (xs) { + var max = Number.NEGATIVE_INFINITY; + var min = Number.POSITIVE_INFINITY; + + lodash_1.forIn(xs, function (x, v) { + var halfWidth = width(g, v) / 2; + + max = Math.max(x + halfWidth, max); + min = Math.min(x - halfWidth, min); + }); + + return max - min; + }); +} + +/* + * Align the coordinates of each of the layout alignments such that + * left-biased alignments have their minimum coordinate at the same point as + * the minimum coordinate of the smallest width alignment and right-biased + * alignments have their maximum coordinate at the same point as the maximum + * coordinate of the smallest width alignment. + */ +function alignCoordinates(xss, alignTo) { + var alignToVals = lodash_1.values(alignTo), + alignToMin = lodash_1.min(alignToVals), + alignToMax = lodash_1.max(alignToVals); + + lodash_1.forEach(["u", "d"], function(vert) { + lodash_1.forEach(["l", "r"], function(horiz) { + var alignment = vert + horiz, + xs = xss[alignment], + delta; + if (xs === alignTo) return; + + var xsVals = lodash_1.values(xs); + delta = horiz === "l" ? alignToMin - lodash_1.min(xsVals) : alignToMax - lodash_1.max(xsVals); + + if (delta) { + xss[alignment] = lodash_1.mapValues(xs, function(x) { return x + delta; }); + } + }); + }); +} + +function balance(xss, align) { + return lodash_1.mapValues(xss.ul, function(ignore, v) { + if (align) { + return xss[align.toLowerCase()][v]; + } else { + var xs = lodash_1.sortBy(lodash_1.map(xss, v)); + var xs1 = xs[1]; + var xs2 = xs[2]; + if (!xs2 && xs2 !== 0) { + return xs1 / 2; + } + if (!xs1 && xs1 !== 0) { + return xs2 / 2; + } + return (xs1 + xs2) / 2; + } + }); +} + +function positionX$1(g) { + var layering = util$1.buildLayerMatrix(g); + var conflicts = lodash_1.merge( + findType1Conflicts(g, layering), + findType2Conflicts(g, layering)); + + var xss = {}; + var adjustedLayering; + lodash_1.forEach(["u", "d"], function(vert) { + adjustedLayering = vert === "u" ? layering : lodash_1.values(layering).reverse(); + lodash_1.forEach(["l", "r"], function(horiz) { + if (horiz === "r") { + adjustedLayering = lodash_1.map(adjustedLayering, function(inner) { + return lodash_1.values(inner).reverse(); + }); + } + + var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g); + var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn); + var xs = horizontalCompaction(g, adjustedLayering, + align.root, align.align, horiz === "r"); + if (horiz === "r") { + xs = lodash_1.mapValues(xs, function(x) { return -x; }); + } + xss[vert + horiz] = xs; + }); + }); + + var smallestWidth = findSmallestWidthAlignment(g, xss); + alignCoordinates(xss, smallestWidth); + return balance(xss, g.graph().align); +} + +function sep(nodeSep, edgeSep, reverseSep) { + return function(g, v, w) { + var vLabel = g.node(v); + var wLabel = g.node(w); + var sum = 0; + var delta; + + sum += vLabel.width / 2; + if (lodash_1.has(vLabel, "labelpos")) { + switch (vLabel.labelpos.toLowerCase()) { + case "l": delta = -vLabel.width / 2; break; + case "r": delta = vLabel.width / 2; break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; + sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; + + sum += wLabel.width / 2; + if (lodash_1.has(wLabel, "labelpos")) { + switch (wLabel.labelpos.toLowerCase()) { + case "l": delta = wLabel.width / 2; break; + case "r": delta = -wLabel.width / 2; break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + return sum; + }; +} + +function width(g, v) { + return g.node(v).width; +} + +var positionX = bk.positionX; + +var position_1 = position; + +function position(g) { + g = util$1.asNonCompoundGraph(g); + + positionY(g); + lodash_1.forEach(positionX(g), function(x, v) { + g.node(v).x = x; + }); +} + +function positionY(g) { + var layering = util$1.buildLayerMatrix(g); + var rankSep = g.graph().ranksep; + var prevY = 0; + lodash_1.forEach(layering, function(layer) { + var maxHeight = lodash_1.max(lodash_1.map(layer, function(v) { return g.node(v).height; })); + lodash_1.forEach(layer, function(v) { + g.node(v).y = prevY + maxHeight / 2; + }); + prevY += maxHeight + rankSep; + }); +} + +var normalizeRanks = util$1.normalizeRanks; + +var removeEmptyRanks = util$1.removeEmptyRanks; + + + + + + +var Graph$1 = graphlib_1.Graph; + +var layout_1 = layout; + +function layout(g, opts) { + var time = opts && opts.debugTiming ? util$1.time : util$1.notime; + time("layout", function() { + var layoutGraph = + time(" buildLayoutGraph", function() { return buildLayoutGraph(g); }); + time(" runLayout", function() { runLayout(layoutGraph, time); }); + time(" updateInputGraph", function() { updateInputGraph(g, layoutGraph); }); + }); +} + +function runLayout(g, time) { + time(" makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); }); + time(" removeSelfEdges", function() { removeSelfEdges(g); }); + time(" acyclic", function() { acyclic.run(g); }); + time(" nestingGraph.run", function() { nestingGraph.run(g); }); + time(" rank", function() { rank_1(util$1.asNonCompoundGraph(g)); }); + time(" injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); }); + time(" removeEmptyRanks", function() { removeEmptyRanks(g); }); + time(" nestingGraph.cleanup", function() { nestingGraph.cleanup(g); }); + time(" normalizeRanks", function() { normalizeRanks(g); }); + time(" assignRankMinMax", function() { assignRankMinMax(g); }); + time(" removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); }); + time(" normalize.run", function() { normalize.run(g); }); + time(" parentDummyChains", function() { parentDummyChains_1(g); }); + time(" addBorderSegments", function() { addBorderSegments_1(g); }); + time(" order", function() { order_1(g); }); + time(" insertSelfEdges", function() { insertSelfEdges(g); }); + time(" adjustCoordinateSystem", function() { coordinateSystem.adjust(g); }); + time(" position", function() { position_1(g); }); + // Fix sometimes not assigning x position for whatever reason. + // Gives mediocre results, but better to bandaid fix it than no result at all + // TODO: Should try to figure out why it even gives these undefined results. + lodash_1.forEach(g.nodes(), function(n) { + var node = g.node(n); + if (!node.x && node.x !== 0) { + node.x = 0; + console.log(n); + console.log("Missing x coordinate, might give poor results."); + } + }); + time(" positionSelfEdges", function() { positionSelfEdges(g); }); + time(" removeBorderNodes", function() { removeBorderNodes(g); }); + time(" normalize.undo", function() { normalize.undo(g); }); + time(" fixupEdgeLabelCoords", function() { fixupEdgeLabelCoords(g); }); + time(" undoCoordinateSystem", function() { coordinateSystem.undo(g); }); + time(" translateGraph", function() { translateGraph(g); }); + time(" assignNodeIntersects", function() { assignNodeIntersects(g); }); + time(" reversePoints", function() { reversePointsForReversedEdges(g); }); + time(" acyclic.undo", function() { acyclic.undo(g); }); +} + +/* + * Copies final layout information from the layout graph back to the input + * graph. This process only copies whitelisted attributes from the layout graph + * to the input graph, so it serves as a good place to determine what + * attributes can influence layout. + */ +function updateInputGraph(inputGraph, layoutGraph) { + lodash_1.forEach(inputGraph.nodes(), function(v) { + var inputLabel = inputGraph.node(v); + var layoutLabel = layoutGraph.node(v); + + if (inputLabel) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + + if (layoutGraph.children(v).length) { + inputLabel.width = layoutLabel.width; + inputLabel.height = layoutLabel.height; + } + } + }); + + lodash_1.forEach(inputGraph.edges(), function(e) { + var inputLabel = inputGraph.edge(e); + var layoutLabel = layoutGraph.edge(e); + + if (!layoutLabel) { + // Random crash I sometimes got... + return; + } + + inputLabel.points = layoutLabel.points; + if (lodash_1.has(layoutLabel, "x")) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + } + }); + + inputGraph.graph().width = layoutGraph.graph().width; + inputGraph.graph().height = layoutGraph.graph().height; +} + +var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; +var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }; +var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"]; +var nodeNumAttrs = ["width", "height"]; +var nodeDefaults = { width: 0, height: 0 }; +var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; +var edgeDefaults = { + minlen: 1, weight: 1, width: 0, height: 0, + labeloffset: 10, labelpos: "r" +}; +var edgeAttrs = ["labelpos"]; + +/* + * Constructs a new graph from the input graph, which can be used for layout. + * This process copies only whitelisted attributes from the input graph to the + * layout graph. Thus this function serves as a good place to determine what + * attributes can influence layout. + */ +function buildLayoutGraph(inputGraph) { + var g = new Graph$1({ multigraph: true, compound: true }); + var graph = canonicalize(inputGraph.graph()); + + g.setGraph(lodash_1.merge({}, + graphDefaults, + selectNumberAttrs(graph, graphNumAttrs), + lodash_1.pick(graph, graphAttrs))); + + lodash_1.forEach(inputGraph.nodes(), function(v) { + var node = canonicalize(inputGraph.node(v)); + g.setNode(v, lodash_1.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults)); + g.setParent(v, inputGraph.parent(v)); + }); + + lodash_1.forEach(inputGraph.edges(), function(e) { + var edge = canonicalize(inputGraph.edge(e)); + g.setEdge(e, lodash_1.merge({}, + edgeDefaults, + selectNumberAttrs(edge, edgeNumAttrs), + lodash_1.pick(edge, edgeAttrs))); + }); + + return g; +} + +/* + * This idea comes from the Gansner paper: to account for edge labels in our + * layout we split each rank in half by doubling minlen and halving ranksep. + * Then we can place labels at these mid-points between nodes. + * + * We also add some minimal padding to the width to push the label for the edge + * away from the edge itself a bit. + */ +function makeSpaceForEdgeLabels(g) { + var graph = g.graph(); + graph.ranksep /= 2; + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + edge.minlen *= 2; + if (edge.labelpos.toLowerCase() !== "c") { + if (graph.rankdir === "TB" || graph.rankdir === "BT") { + edge.width += edge.labeloffset; + } else { + edge.height += edge.labeloffset; + } + } + }); +} + +/* + * Creates temporary dummy nodes that capture the rank in which each edge's + * label is going to, if it has one of non-zero width and height. We do this + * so that we can safely remove empty ranks while preserving balance for the + * label's position. + */ +function injectEdgeLabelProxies(g) { + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.width && edge.height) { + var v = g.node(e.v); + var w = g.node(e.w); + var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e }; + util$1.addDummyNode(g, "edge-proxy", label, "_ep"); + } + }); +} + +function assignRankMinMax(g) { + var maxRank = 0; + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.borderTop) { + node.minRank = g.node(node.borderTop).rank; + node.maxRank = g.node(node.borderBottom).rank; + maxRank = lodash_1.max(maxRank, node.maxRank); + } + }); + g.graph().maxRank = maxRank; +} + +function removeEdgeLabelProxies(g) { + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.dummy === "edge-proxy") { + g.edge(node.e).labelRank = node.rank; + g.removeNode(v); + } + }); +} + +function translateGraph(g) { + var minX = Number.POSITIVE_INFINITY; + var maxX = 0; + var minY = Number.POSITIVE_INFINITY; + var maxY = 0; + var graphLabel = g.graph(); + var marginX = graphLabel.marginx || 0; + var marginY = graphLabel.marginy || 0; + + function getExtremes(attrs) { + var x = attrs.x; + var y = attrs.y; + var w = attrs.width; + var h = attrs.height; + minX = Math.min(minX, x - w / 2); + maxX = Math.max(maxX, x + w / 2); + minY = Math.min(minY, y - h / 2); + maxY = Math.max(maxY, y + h / 2); + } + + lodash_1.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); }); + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (lodash_1.has(edge, "x")) { + getExtremes(edge); + } + }); + + minX -= marginX; + minY -= marginY; + + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v); + node.x -= minX; + node.y -= minY; + }); + + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + lodash_1.forEach(edge.points, function(p) { + p.x -= minX; + p.y -= minY; + }); + if (lodash_1.has(edge, "x")) { edge.x -= minX; } + if (lodash_1.has(edge, "y")) { edge.y -= minY; } + }); + + graphLabel.width = maxX - minX + marginX; + graphLabel.height = maxY - minY + marginY; +} + +function assignNodeIntersects(g) { + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + var nodeV = g.node(e.v); + var nodeW = g.node(e.w); + var p1, p2; + if (!edge.points) { + edge.points = []; + p1 = nodeW; + p2 = nodeV; + } else { + p1 = edge.points[0]; + p2 = edge.points[edge.points.length - 1]; + } + edge.points.unshift(util$1.intersectRect(nodeV, p1)); + edge.points.push(util$1.intersectRect(nodeW, p2)); + }); +} + +function fixupEdgeLabelCoords(g) { + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (lodash_1.has(edge, "x")) { + if (edge.labelpos === "l" || edge.labelpos === "r") { + edge.width -= edge.labeloffset; + } + switch (edge.labelpos) { + case "l": edge.x -= edge.width / 2 + edge.labeloffset; break; + case "r": edge.x += edge.width / 2 + edge.labeloffset; break; + } + } + }); +} + +function reversePointsForReversedEdges(g) { + lodash_1.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.reversed) { + edge.points.reverse(); + } + }); +} + +function removeBorderNodes(g) { + lodash_1.forEach(g.nodes(), function(v) { + if (g.children(v).length) { + var node = g.node(v); + var t = g.node(node.borderTop); + var b = g.node(node.borderBottom); + var l = g.node(lodash_1.last(node.borderLeft)); + var r = g.node(lodash_1.last(node.borderRight)); + + node.width = Math.abs(r.x - l.x); + node.height = Math.abs(b.y - t.y); + node.x = l.x + node.width / 2; + node.y = t.y + node.height / 2; + } + }); + + lodash_1.forEach(g.nodes(), function(v) { + if (g.node(v).dummy === "border") { + g.removeNode(v); + } + }); +} + +function removeSelfEdges(g) { + lodash_1.forEach(g.edges(), function(e) { + if (e.v === e.w) { + var node = g.node(e.v); + if (!node.selfEdges) { + node.selfEdges = []; + } + node.selfEdges.push({ e: e, label: g.edge(e) }); + g.removeEdge(e); + } + }); +} + +function insertSelfEdges(g) { + var layers = util$1.buildLayerMatrix(g); + lodash_1.forEach(layers, function(layer) { + var orderShift = 0; + lodash_1.forEach(layer, function(v, i) { + var node = g.node(v); + node.order = i + orderShift; + lodash_1.forEach(node.selfEdges, function(selfEdge) { + util$1.addDummyNode(g, "selfedge", { + width: selfEdge.label.width, + height: selfEdge.label.height, + rank: node.rank, + order: i + (++orderShift), + e: selfEdge.e, + label: selfEdge.label + }, "_se"); + }); + delete node.selfEdges; + }); + }); +} + +function positionSelfEdges(g) { + lodash_1.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.dummy === "selfedge") { + var selfNode = g.node(node.e.v); + var x = selfNode.x + selfNode.width / 2; + var y = selfNode.y; + var dx = node.x - x; + var dy = selfNode.height / 2; + g.setEdge(node.e, node.label); + g.removeNode(v); + node.label.points = [ + { x: x + 2 * dx / 3, y: y - dy }, + { x: x + 5 * dx / 6, y: y - dy }, + { x: x + dx , y: y }, + { x: x + 5 * dx / 6, y: y + dy }, + { x: x + 2 * dx / 3, y: y + dy } + ]; + node.label.x = node.x; + node.label.y = node.y; + } + }); +} + +function selectNumberAttrs(obj, attrs) { + return lodash_1.mapValues(lodash_1.pick(obj, attrs), Number); +} + +function canonicalize(attrs) { + var newAttrs = {}; + lodash_1.forEach(attrs, function(v, k) { + newAttrs[k.toLowerCase()] = v; + }); + return newAttrs; +} + +var Graph = graphlib_1.Graph; + +var debug = { + debugOrdering: debugOrdering +}; + +/* istanbul ignore next */ +function debugOrdering(g) { + var layerMatrix = util$1.buildLayerMatrix(g); + + var h = new Graph({ compound: true, multigraph: true }).setGraph({}); + + lodash_1.forEach(g.nodes(), function(v) { + h.setNode(v, { label: v }); + h.setParent(v, "layer" + g.node(v).rank); + }); + + lodash_1.forEach(g.edges(), function(e) { + h.setEdge(e.v, e.w, {}, e.name); + }); + + lodash_1.forEach(layerMatrix, function(layer, i) { + var layerV = "layer" + i; + h.setNode(layerV, { rank: "same" }); + lodash_1.reduce(layer, function(u, v) { + h.setEdge(u, v, { style: "invis" }); + return v; + }); + }); + + return h; +} + +var version = "0.8.6-pre"; + +/* +Copyright (c) 2012-2014 Chris Pettitt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +var dagre$1 = { + graphlib: graphlib_1, + + layout: layout_1, + debug: debug, + util: { + time: util$1.time, + notime: util$1.notime + }, + version: version +}; + +var cytoscapeDagre = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(dagre$1); +})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE__4__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +var impl = __webpack_require__(1); // registers the extension on a cytoscape lib ref + + +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + + cytoscape('layout', 'dagre', impl); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +var isFunction = function isFunction(o) { + return typeof o === 'function'; +}; + +var defaults = __webpack_require__(2); + +var assign = __webpack_require__(3); + +var dagre = __webpack_require__(4); // constructor +// options : object containing layout options + + +function DagreLayout(options) { + this.options = assign({}, defaults, options); +} // runs the layout + + +DagreLayout.prototype.run = function () { + var options = this.options; + var layout = this; + var cy = options.cy; // cy is automatically populated for us in the constructor + + var eles = options.eles; + + var getVal = function getVal(ele, val) { + return isFunction(val) ? val.apply(ele, [ele]) : val; + }; + + var bb = options.boundingBox || { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }; + + if (bb.x2 === undefined) { + bb.x2 = bb.x1 + bb.w; + } + + if (bb.w === undefined) { + bb.w = bb.x2 - bb.x1; + } + + if (bb.y2 === undefined) { + bb.y2 = bb.y1 + bb.h; + } + + if (bb.h === undefined) { + bb.h = bb.y2 - bb.y1; + } + + var g = new dagre.graphlib.Graph({ + multigraph: true, + compound: true + }); + var gObj = {}; + + var setGObj = function setGObj(name, val) { + if (val != null) { + gObj[name] = val; + } + }; + + setGObj('nodesep', options.nodeSep); + setGObj('edgesep', options.edgeSep); + setGObj('ranksep', options.rankSep); + setGObj('rankdir', options.rankDir); + setGObj('ranker', options.ranker); + g.setGraph(gObj); + g.setDefaultEdgeLabel(function () { + return {}; + }); + g.setDefaultNodeLabel(function () { + return {}; + }); // add nodes to dagre + + var nodes = eles.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var nbb = node.layoutDimensions(options); + g.setNode(node.id(), { + width: nbb.w, + height: nbb.h, + name: node.id() + }); // console.log( g.node(node.id()) ); + } // set compound parents + + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + + if (_node.isChild()) { + g.setParent(_node.id(), _node.parent().id()); + } + } // add edges to dagre + + + var edges = eles.edges().stdFilter(function (edge) { + return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes + }); + + for (var _i2 = 0; _i2 < edges.length; _i2++) { + var edge = edges[_i2]; + g.setEdge(edge.source().id(), edge.target().id(), { + minlen: getVal(edge, options.minLen), + weight: getVal(edge, options.edgeWeight), + name: edge.id() + }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) ); + } + + dagre.layout(g); + var gNodeIds = g.nodes(); + + for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) { + var id = gNodeIds[_i3]; + var n = g.node(id); + cy.getElementById(id).scratch().dagre = n; + } + + var dagreBB; + + if (options.boundingBox) { + dagreBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + nodes.forEach(function (node) { + var dModel = node.scratch().dagre; + dagreBB.x1 = Math.min(dagreBB.x1, dModel.x); + dagreBB.x2 = Math.max(dagreBB.x2, dModel.x); + dagreBB.y1 = Math.min(dagreBB.y1, dModel.y); + dagreBB.y2 = Math.max(dagreBB.y2, dModel.y); + }); + dagreBB.w = dagreBB.x2 - dagreBB.x1; + dagreBB.h = dagreBB.y2 - dagreBB.y1; + } else { + dagreBB = bb; + } + + var constrainPos = function constrainPos(p) { + if (options.boundingBox) { + var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w; + var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h; + return { + x: bb.x1 + xPct * bb.w, + y: bb.y1 + yPct * bb.h + }; + } else { + return p; + } + }; + + nodes.layoutPositions(layout, options, function (ele) { + ele = _typeof(ele) === "object" ? ele : this; + var dModel = ele.scratch().dagre; + return constrainPos({ + x: dModel.x, + y: dModel.y + }); + }); + return this; // chaining +}; + +module.exports = DagreLayout; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +var defaults = { + // dagre algo options, uses default value on undefined + nodeSep: undefined, + // the separation between adjacent nodes in the same rank + edgeSep: undefined, + // the separation between adjacent edges in the same rank + rankSep: undefined, + // the separation between adjacent nodes in the same rank + rankDir: undefined, + // 'TB' for top to bottom flow, 'LR' for left to right, + ranker: undefined, + // Type of algorithm to assigns a rank to each node in the input graph. + // Possible values: network-simplex, tight-tree or longest-path + minLen: function minLen(edge) { + return 1; + }, + // number of ranks to keep between the source and target of the edge + edgeWeight: function edgeWeight(edge) { + return 1; + }, + // higher weight edges are generally made shorter and straighter than lower weight edges + // general layout options + fit: true, + // whether to fit to viewport + padding: 30, + // fit padding + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + nodeDimensionsIncludeLabels: false, + // whether labels should be included in determining the space used by a node + animate: false, + // whether to transition the node positions + animateFilter: function animateFilter(node, i) { + return true; + }, + // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + transform: function transform(node, pos) { + return pos; + }, + // a function that applies a transform to the final node position + ready: function ready() {}, + // on layoutready + stop: function stop() {} // on layoutstop + +}; +module.exports = defaults; + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +// Simple, internal Object.assign() polyfill for options objects etc. +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + return tgt; +}; + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__4__; + +/***/ }) +/******/ ]); +}); +}); + +var dagre = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeDagre); + +var d3Quadtree = createCommonjsModule(function (module, exports) { +// https://d3js.org/d3-quadtree/ v2.0.0 Copyright 2020 Mike Bostock +(function (global, factory) { +factory(exports) ; +}(commonjsGlobal, function (exports) { +function tree_add(d) { + const x = +this._x.call(null, d), + y = +this._y.call(null, d); + return add(this.cover(x, y), x, y, d); +} + +function add(tree, x, y, d) { + if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points + + var parent, + node = tree._root, + leaf = {data: d}, + x0 = tree._x0, + y0 = tree._y0, + x1 = tree._x1, + y1 = tree._y1, + xm, + ym, + xp, + yp, + right, + bottom, + i, + j; + + // If the tree is empty, initialize the root as a leaf. + if (!node) return tree._root = leaf, tree; + + // Find the existing leaf for the new point, or add it. + while (node.length) { + if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; + if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; + if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; + } + + // Is the new point is exactly coincident with the existing point? + xp = +tree._x.call(null, node.data); + yp = +tree._y.call(null, node.data); + if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; + + // Otherwise, split the leaf node until the old and new point are separated. + do { + parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); + if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; + if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; + } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); + return parent[j] = node, parent[i] = leaf, tree; +} + +function addAll(data) { + var d, i, n = data.length, + x, + y, + xz = new Array(n), + yz = new Array(n), + x0 = Infinity, + y0 = Infinity, + x1 = -Infinity, + y1 = -Infinity; + + // Compute the points and their extent. + for (i = 0; i < n; ++i) { + if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; + xz[i] = x; + yz[i] = y; + if (x < x0) x0 = x; + if (x > x1) x1 = x; + if (y < y0) y0 = y; + if (y > y1) y1 = y; + } + + // If there were no (valid) points, abort. + if (x0 > x1 || y0 > y1) return this; + + // Expand the tree to cover the new points. + this.cover(x0, y0).cover(x1, y1); + + // Add the new points. + for (i = 0; i < n; ++i) { + add(this, xz[i], yz[i], data[i]); + } + + return this; +} + +function tree_cover(x, y) { + if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points + + var x0 = this._x0, + y0 = this._y0, + x1 = this._x1, + y1 = this._y1; + + // If the quadtree has no extent, initialize them. + // Integer extent are necessary so that if we later double the extent, + // the existing quadrant boundaries don’t change due to floating point error! + if (isNaN(x0)) { + x1 = (x0 = Math.floor(x)) + 1; + y1 = (y0 = Math.floor(y)) + 1; + } + + // Otherwise, double repeatedly to cover. + else { + var z = x1 - x0 || 1, + node = this._root, + parent, + i; + + while (x0 > x || x >= x1 || y0 > y || y >= y1) { + i = (y < y0) << 1 | (x < x0); + parent = new Array(4), parent[i] = node, node = parent, z *= 2; + switch (i) { + case 0: x1 = x0 + z, y1 = y0 + z; break; + case 1: x0 = x1 - z, y1 = y0 + z; break; + case 2: x1 = x0 + z, y0 = y1 - z; break; + case 3: x0 = x1 - z, y0 = y1 - z; break; + } + } + + if (this._root && this._root.length) this._root = node; + } + + this._x0 = x0; + this._y0 = y0; + this._x1 = x1; + this._y1 = y1; + return this; +} + +function tree_data() { + var data = []; + this.visit(function(node) { + if (!node.length) do data.push(node.data); while (node = node.next) + }); + return data; +} + +function tree_extent(_) { + return arguments.length + ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) + : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; +} + +function Quad(node, x0, y0, x1, y1) { + this.node = node; + this.x0 = x0; + this.y0 = y0; + this.x1 = x1; + this.y1 = y1; +} + +function tree_find(x, y, radius) { + var data, + x0 = this._x0, + y0 = this._y0, + x1, + y1, + x2, + y2, + x3 = this._x1, + y3 = this._y1, + quads = [], + node = this._root, + q, + i; + + if (node) quads.push(new Quad(node, x0, y0, x3, y3)); + if (radius == null) radius = Infinity; + else { + x0 = x - radius, y0 = y - radius; + x3 = x + radius, y3 = y + radius; + radius *= radius; + } + + while (q = quads.pop()) { + + // Stop searching if this quadrant can’t contain a closer node. + if (!(node = q.node) + || (x1 = q.x0) > x3 + || (y1 = q.y0) > y3 + || (x2 = q.x1) < x0 + || (y2 = q.y1) < y0) continue; + + // Bisect the current quadrant. + if (node.length) { + var xm = (x1 + x2) / 2, + ym = (y1 + y2) / 2; + + quads.push( + new Quad(node[3], xm, ym, x2, y2), + new Quad(node[2], x1, ym, xm, y2), + new Quad(node[1], xm, y1, x2, ym), + new Quad(node[0], x1, y1, xm, ym) + ); + + // Visit the closest quadrant first. + if (i = (y >= ym) << 1 | (x >= xm)) { + q = quads[quads.length - 1]; + quads[quads.length - 1] = quads[quads.length - 1 - i]; + quads[quads.length - 1 - i] = q; + } + } + + // Visit this point. (Visiting coincident points isn’t necessary!) + else { + var dx = x - +this._x.call(null, node.data), + dy = y - +this._y.call(null, node.data), + d2 = dx * dx + dy * dy; + if (d2 < radius) { + var d = Math.sqrt(radius = d2); + x0 = x - d, y0 = y - d; + x3 = x + d, y3 = y + d; + data = node.data; + } + } + } + + return data; +} + +function tree_remove(d) { + if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points + + var parent, + node = this._root, + retainer, + previous, + next, + x0 = this._x0, + y0 = this._y0, + x1 = this._x1, + y1 = this._y1, + x, + y, + xm, + ym, + right, + bottom, + i, + j; + + // If the tree is empty, initialize the root as a leaf. + if (!node) return this; + + // Find the leaf node for the point. + // While descending, also retain the deepest parent with a non-removed sibling. + if (node.length) while (true) { + if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; + if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; + if (!(parent = node, node = node[i = bottom << 1 | right])) return this; + if (!node.length) break; + if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; + } + + // Find the point to remove. + while (node.data !== d) if (!(previous = node, node = node.next)) return this; + if (next = node.next) delete node.next; + + // If there are multiple coincident points, remove just the point. + if (previous) return (next ? previous.next = next : delete previous.next), this; + + // If this is the root point, remove it. + if (!parent) return this._root = next, this; + + // Remove this leaf. + next ? parent[i] = next : delete parent[i]; + + // If the parent now contains exactly one leaf, collapse superfluous parents. + if ((node = parent[0] || parent[1] || parent[2] || parent[3]) + && node === (parent[3] || parent[2] || parent[1] || parent[0]) + && !node.length) { + if (retainer) retainer[j] = node; + else this._root = node; + } + + return this; +} + +function removeAll(data) { + for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); + return this; +} + +function tree_root() { + return this._root; +} + +function tree_size() { + var size = 0; + this.visit(function(node) { + if (!node.length) do ++size; while (node = node.next) + }); + return size; +} + +function tree_visit(callback) { + var quads = [], q, node = this._root, child, x0, y0, x1, y1; + if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); + while (q = quads.pop()) { + if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { + var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; + if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); + if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); + if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); + if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); + } + } + return this; +} + +function tree_visitAfter(callback) { + var quads = [], next = [], q; + if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); + while (q = quads.pop()) { + var node = q.node; + if (node.length) { + var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; + if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); + if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); + if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); + if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); + } + next.push(q); + } + while (q = next.pop()) { + callback(q.node, q.x0, q.y0, q.x1, q.y1); + } + return this; +} + +function defaultX(d) { + return d[0]; +} + +function tree_x(_) { + return arguments.length ? (this._x = _, this) : this._x; +} + +function defaultY(d) { + return d[1]; +} + +function tree_y(_) { + return arguments.length ? (this._y = _, this) : this._y; +} + +function quadtree(nodes, x, y) { + var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); + return nodes == null ? tree : tree.addAll(nodes); +} + +function Quadtree(x, y, x0, y0, x1, y1) { + this._x = x; + this._y = y; + this._x0 = x0; + this._y0 = y0; + this._x1 = x1; + this._y1 = y1; + this._root = undefined; +} + +function leaf_copy(leaf) { + var copy = {data: leaf.data}, next = copy; + while (leaf = leaf.next) next = next.next = {data: leaf.data}; + return copy; +} + +var treeProto = quadtree.prototype = Quadtree.prototype; + +treeProto.copy = function() { + var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), + node = this._root, + nodes, + child; + + if (!node) return copy; + + if (!node.length) return copy._root = leaf_copy(node), copy; + + nodes = [{source: node, target: copy._root = new Array(4)}]; + while (node = nodes.pop()) { + for (var i = 0; i < 4; ++i) { + if (child = node.source[i]) { + if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); + else node.target[i] = leaf_copy(child); + } + } + } + + return copy; +}; + +treeProto.add = tree_add; +treeProto.addAll = addAll; +treeProto.cover = tree_cover; +treeProto.data = tree_data; +treeProto.extent = tree_extent; +treeProto.find = tree_find; +treeProto.remove = tree_remove; +treeProto.removeAll = removeAll; +treeProto.root = tree_root; +treeProto.size = tree_size; +treeProto.visit = tree_visit; +treeProto.visitAfter = tree_visitAfter; +treeProto.x = tree_x; +treeProto.y = tree_y; + +exports.quadtree = quadtree; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); +}); + +var d3Dispatch = createCommonjsModule(function (module, exports) { +// https://d3js.org/d3-dispatch/ v2.0.0 Copyright 2020 Mike Bostock +(function (global, factory) { +factory(exports) ; +}(commonjsGlobal, function (exports) { +var noop = {value: () => {}}; + +function dispatch() { + for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { + if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); + _[t] = []; + } + return new Dispatch(_); +} + +function Dispatch(_) { + this._ = _; +} + +function parseTypenames(typenames, types) { + return typenames.trim().split(/^|\s+/).map(function(t) { + var name = "", i = t.indexOf("."); + if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); + if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); + return {type: t, name: name}; + }); +} + +Dispatch.prototype = dispatch.prototype = { + constructor: Dispatch, + on: function(typename, callback) { + var _ = this._, + T = parseTypenames(typename + "", _), + t, + i = -1, + n = T.length; + + // If no callback was specified, return the callback of the given type and name. + if (arguments.length < 2) { + while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; + return; + } + + // If a type was specified, set the callback for the given type and name. + // Otherwise, if a null callback was specified, remove callbacks of the given name. + if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); + while (++i < n) { + if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); + else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); + } + + return this; + }, + copy: function() { + var copy = {}, _ = this._; + for (var t in _) copy[t] = _[t].slice(); + return new Dispatch(copy); + }, + call: function(type, that) { + if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; + if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); + for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); + }, + apply: function(type, that, args) { + if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); + for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); + } +}; + +function get(type, name) { + for (var i = 0, n = type.length, c; i < n; ++i) { + if ((c = type[i]).name === name) { + return c.value; + } + } +} + +function set(type, name, callback) { + for (var i = 0, n = type.length; i < n; ++i) { + if (type[i].name === name) { + type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); + break; + } + } + if (callback != null) type.push({name: name, value: callback}); + return type; +} + +exports.dispatch = dispatch; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); +}); + +var d3Timer = createCommonjsModule(function (module, exports) { +// https://d3js.org/d3-timer/ v2.0.0 Copyright 2020 Mike Bostock +(function (global, factory) { +factory(exports) ; +}(commonjsGlobal, function (exports) { +var frame = 0, // is an animation frame pending? + timeout = 0, // is a timeout pending? + interval = 0, // are any timers active? + pokeDelay = 1000, // how frequently we check for clock skew + taskHead, + taskTail, + clockLast = 0, + clockNow = 0, + clockSkew = 0, + clock = typeof performance === "object" && performance.now ? performance : Date, + setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; + +function now() { + return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); +} + +function clearNow() { + clockNow = 0; +} + +function Timer() { + this._call = + this._time = + this._next = null; +} + +Timer.prototype = timer.prototype = { + constructor: Timer, + restart: function(callback, delay, time) { + if (typeof callback !== "function") throw new TypeError("callback is not a function"); + time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); + if (!this._next && taskTail !== this) { + if (taskTail) taskTail._next = this; + else taskHead = this; + taskTail = this; + } + this._call = callback; + this._time = time; + sleep(); + }, + stop: function() { + if (this._call) { + this._call = null; + this._time = Infinity; + sleep(); + } + } +}; + +function timer(callback, delay, time) { + var t = new Timer; + t.restart(callback, delay, time); + return t; +} + +function timerFlush() { + now(); // Get the current time, if not already set. + ++frame; // Pretend we’ve set an alarm, if we haven’t already. + var t = taskHead, e; + while (t) { + if ((e = clockNow - t._time) >= 0) t._call.call(null, e); + t = t._next; + } + --frame; +} + +function wake() { + clockNow = (clockLast = clock.now()) + clockSkew; + frame = timeout = 0; + try { + timerFlush(); + } finally { + frame = 0; + nap(); + clockNow = 0; + } +} + +function poke() { + var now = clock.now(), delay = now - clockLast; + if (delay > pokeDelay) clockSkew -= delay, clockLast = now; +} + +function nap() { + var t0, t1 = taskHead, t2, time = Infinity; + while (t1) { + if (t1._call) { + if (time > t1._time) time = t1._time; + t0 = t1, t1 = t1._next; + } else { + t2 = t1._next, t1._next = null; + t1 = t0 ? t0._next = t2 : taskHead = t2; + } + } + taskTail = t0; + sleep(time); +} + +function sleep(time) { + if (frame) return; // Soonest alarm already set, or will be. + if (timeout) timeout = clearTimeout(timeout); + var delay = time - clockNow; // Strictly less than if we recomputed clockNow. + if (delay > 24) { + if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); + if (interval) interval = clearInterval(interval); + } else { + if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); + frame = 1, setFrame(wake); + } +} + +function timeout$1(callback, delay, time) { + var t = new Timer; + delay = delay == null ? 0 : +delay; + t.restart(elapsed => { + t.stop(); + callback(elapsed + delay); + }, delay, time); + return t; +} + +function interval$1(callback, delay, time) { + var t = new Timer, total = delay; + if (delay == null) return t.restart(callback, delay, time), t; + t._restart = t.restart; + t.restart = function(callback, delay, time) { + delay = +delay, time = time == null ? now() : +time; + t._restart(function tick(elapsed) { + elapsed += total; + t._restart(tick, total += delay, time); + callback(elapsed); + }, delay, time); + }; + t.restart(callback, delay, time); + return t; +} + +exports.interval = interval$1; +exports.now = now; +exports.timeout = timeout$1; +exports.timer = timer; +exports.timerFlush = timerFlush; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); +}); + +var d3Force$1 = createCommonjsModule(function (module, exports) { +// https://d3js.org/d3-force/ v2.1.1 Copyright 2020 Mike Bostock +(function (global, factory) { +factory(exports, d3Quadtree, d3Dispatch, d3Timer) ; +}(commonjsGlobal, function (exports, d3Quadtree, d3Dispatch, d3Timer) { +function center(x, y) { + var nodes, strength = 1; + + if (x == null) x = 0; + if (y == null) y = 0; + + function force() { + var i, + n = nodes.length, + node, + sx = 0, + sy = 0; + + for (i = 0; i < n; ++i) { + node = nodes[i], sx += node.x, sy += node.y; + } + + for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) { + node = nodes[i], node.x -= sx, node.y -= sy; + } + } + + force.initialize = function(_) { + nodes = _; + }; + + force.x = function(_) { + return arguments.length ? (x = +_, force) : x; + }; + + force.y = function(_) { + return arguments.length ? (y = +_, force) : y; + }; + + force.strength = function(_) { + return arguments.length ? (strength = +_, force) : strength; + }; + + return force; +} + +function constant(x) { + return function() { + return x; + }; +} + +function jiggle(random) { + return (random() - 0.5) * 1e-6; +} + +function x(d) { + return d.x + d.vx; +} + +function y(d) { + return d.y + d.vy; +} + +function collide(radius) { + var nodes, + radii, + random, + strength = 1, + iterations = 1; + + if (typeof radius !== "function") radius = constant(radius == null ? 1 : +radius); + + function force() { + var i, n = nodes.length, + tree, + node, + xi, + yi, + ri, + ri2; + + for (var k = 0; k < iterations; ++k) { + tree = d3Quadtree.quadtree(nodes, x, y).visitAfter(prepare); + for (i = 0; i < n; ++i) { + node = nodes[i]; + ri = radii[node.index], ri2 = ri * ri; + xi = node.x + node.vx; + yi = node.y + node.vy; + tree.visit(apply); + } + } + + function apply(quad, x0, y0, x1, y1) { + var data = quad.data, rj = quad.r, r = ri + rj; + if (data) { + if (data.index > node.index) { + var x = xi - data.x - data.vx, + y = yi - data.y - data.vy, + l = x * x + y * y; + if (l < r * r) { + if (x === 0) x = jiggle(random), l += x * x; + if (y === 0) y = jiggle(random), l += y * y; + l = (r - (l = Math.sqrt(l))) / l * strength; + node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); + node.vy += (y *= l) * r; + data.vx -= x * (r = 1 - r); + data.vy -= y * r; + } + } + return; + } + return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; + } + } + + function prepare(quad) { + if (quad.data) return quad.r = radii[quad.data.index]; + for (var i = quad.r = 0; i < 4; ++i) { + if (quad[i] && quad[i].r > quad.r) { + quad.r = quad[i].r; + } + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length, node; + radii = new Array(n); + for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); + } + + force.initialize = function(_nodes, _random) { + nodes = _nodes; + random = _random; + initialize(); + }; + + force.iterations = function(_) { + return arguments.length ? (iterations = +_, force) : iterations; + }; + + force.strength = function(_) { + return arguments.length ? (strength = +_, force) : strength; + }; + + force.radius = function(_) { + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; + }; + + return force; +} + +function index(d) { + return d.index; +} + +function find(nodeById, nodeId) { + var node = nodeById.get(nodeId); + if (!node) throw new Error("node not found: " + nodeId); + return node; +} + +function link(links) { + var id = index, + strength = defaultStrength, + strengths, + distance = constant(30), + distances, + nodes, + count, + bias, + random, + iterations = 1; + + if (links == null) links = []; + + function defaultStrength(link) { + return 1 / Math.min(count[link.source.index], count[link.target.index]); + } + + function force(alpha) { + for (var k = 0, n = links.length; k < iterations; ++k) { + for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { + link = links[i], source = link.source, target = link.target; + x = target.x + target.vx - source.x - source.vx || jiggle(random); + y = target.y + target.vy - source.y - source.vy || jiggle(random); + l = Math.sqrt(x * x + y * y); + l = (l - distances[i]) / l * alpha * strengths[i]; + x *= l, y *= l; + target.vx -= x * (b = bias[i]); + target.vy -= y * b; + source.vx += x * (b = 1 - b); + source.vy += y * b; + } + } + } + + function initialize() { + if (!nodes) return; + + var i, + n = nodes.length, + m = links.length, + nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])), + link; + + for (i = 0, count = new Array(n); i < m; ++i) { + link = links[i], link.index = i; + if (typeof link.source !== "object") link.source = find(nodeById, link.source); + if (typeof link.target !== "object") link.target = find(nodeById, link.target); + count[link.source.index] = (count[link.source.index] || 0) + 1; + count[link.target.index] = (count[link.target.index] || 0) + 1; + } + + for (i = 0, bias = new Array(m); i < m; ++i) { + link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); + } + + strengths = new Array(m), initializeStrength(); + distances = new Array(m), initializeDistance(); + } + + function initializeStrength() { + if (!nodes) return; + + for (var i = 0, n = links.length; i < n; ++i) { + strengths[i] = +strength(links[i], i, links); + } + } + + function initializeDistance() { + if (!nodes) return; + + for (var i = 0, n = links.length; i < n; ++i) { + distances[i] = +distance(links[i], i, links); + } + } + + force.initialize = function(_nodes, _random) { + nodes = _nodes; + random = _random; + initialize(); + }; + + force.links = function(_) { + return arguments.length ? (links = _, initialize(), force) : links; + }; + + force.id = function(_) { + return arguments.length ? (id = _, force) : id; + }; + + force.iterations = function(_) { + return arguments.length ? (iterations = +_, force) : iterations; + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initializeStrength(), force) : strength; + }; + + force.distance = function(_) { + return arguments.length ? (distance = typeof _ === "function" ? _ : constant(+_), initializeDistance(), force) : distance; + }; + + return force; +} + +// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use +const a = 1664525; +const c = 1013904223; +const m = 4294967296; // 2^32 + +function lcg() { + let s = 1; + return () => (s = (a * s + c) % m) / m; +} + +function x$1(d) { + return d.x; +} + +function y$1(d) { + return d.y; +} + +var initialRadius = 10, + initialAngle = Math.PI * (3 - Math.sqrt(5)); + +function simulation(nodes) { + var simulation, + alpha = 1, + alphaMin = 0.001, + alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), + alphaTarget = 0, + velocityDecay = 0.6, + forces = new Map(), + stepper = d3Timer.timer(step), + event = d3Dispatch.dispatch("tick", "end"), + random = lcg(); + + if (nodes == null) nodes = []; + + function step() { + tick(); + event.call("tick", simulation); + if (alpha < alphaMin) { + stepper.stop(); + event.call("end", simulation); + } + } + + function tick(iterations) { + var i, n = nodes.length, node; + + if (iterations === undefined) iterations = 1; + + for (var k = 0; k < iterations; ++k) { + alpha += (alphaTarget - alpha) * alphaDecay; + + forces.forEach(function(force) { + force(alpha); + }); + + for (i = 0; i < n; ++i) { + node = nodes[i]; + if (node.fx == null) node.x += node.vx *= velocityDecay; + else node.x = node.fx, node.vx = 0; + if (node.fy == null) node.y += node.vy *= velocityDecay; + else node.y = node.fy, node.vy = 0; + } + } + + return simulation; + } + + function initializeNodes() { + for (var i = 0, n = nodes.length, node; i < n; ++i) { + node = nodes[i], node.index = i; + if (node.fx != null) node.x = node.fx; + if (node.fy != null) node.y = node.fy; + if (isNaN(node.x) || isNaN(node.y)) { + var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle; + node.x = radius * Math.cos(angle); + node.y = radius * Math.sin(angle); + } + if (isNaN(node.vx) || isNaN(node.vy)) { + node.vx = node.vy = 0; + } + } + } + + function initializeForce(force) { + if (force.initialize) force.initialize(nodes, random); + return force; + } + + initializeNodes(); + + return simulation = { + tick: tick, + + restart: function() { + return stepper.restart(step), simulation; + }, + + stop: function() { + return stepper.stop(), simulation; + }, + + nodes: function(_) { + return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes; + }, + + alpha: function(_) { + return arguments.length ? (alpha = +_, simulation) : alpha; + }, + + alphaMin: function(_) { + return arguments.length ? (alphaMin = +_, simulation) : alphaMin; + }, + + alphaDecay: function(_) { + return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; + }, + + alphaTarget: function(_) { + return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; + }, + + velocityDecay: function(_) { + return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; + }, + + randomSource: function(_) { + return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random; + }, + + force: function(name, _) { + return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); + }, + + find: function(x, y, radius) { + var i = 0, + n = nodes.length, + dx, + dy, + d2, + node, + closest; + + if (radius == null) radius = Infinity; + else radius *= radius; + + for (i = 0; i < n; ++i) { + node = nodes[i]; + dx = x - node.x; + dy = y - node.y; + d2 = dx * dx + dy * dy; + if (d2 < radius) closest = node, radius = d2; + } + + return closest; + }, + + on: function(name, _) { + return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); + } + }; +} + +function manyBody() { + var nodes, + node, + random, + alpha, + strength = constant(-30), + strengths, + distanceMin2 = 1, + distanceMax2 = Infinity, + theta2 = 0.81; + + function force(_) { + var i, n = nodes.length, tree = d3Quadtree.quadtree(nodes, x$1, y$1).visitAfter(accumulate); + for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length, node; + strengths = new Array(n); + for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); + } + + function accumulate(quad) { + var strength = 0, q, c, weight = 0, x, y, i; + + // For internal nodes, accumulate forces from child quadrants. + if (quad.length) { + for (x = y = i = 0; i < 4; ++i) { + if ((q = quad[i]) && (c = Math.abs(q.value))) { + strength += q.value, weight += c, x += c * q.x, y += c * q.y; + } + } + quad.x = x / weight; + quad.y = y / weight; + } + + // For leaf nodes, accumulate forces from coincident quadrants. + else { + q = quad; + q.x = q.data.x; + q.y = q.data.y; + do strength += strengths[q.data.index]; + while (q = q.next); + } + + quad.value = strength; + } + + function apply(quad, x1, _, x2) { + if (!quad.value) return true; + + var x = quad.x - node.x, + y = quad.y - node.y, + w = x2 - x1, + l = x * x + y * y; + + // Apply the Barnes-Hut approximation if possible. + // Limit forces for very close nodes; randomize direction if coincident. + if (w * w / theta2 < l) { + if (l < distanceMax2) { + if (x === 0) x = jiggle(random), l += x * x; + if (y === 0) y = jiggle(random), l += y * y; + if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); + node.vx += x * quad.value * alpha / l; + node.vy += y * quad.value * alpha / l; + } + return true; + } + + // Otherwise, process points directly. + else if (quad.length || l >= distanceMax2) return; + + // Limit forces for very close nodes; randomize direction if coincident. + if (quad.data !== node || quad.next) { + if (x === 0) x = jiggle(random), l += x * x; + if (y === 0) y = jiggle(random), l += y * y; + if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); + } + + do if (quad.data !== node) { + w = strengths[quad.data.index] * alpha / l; + node.vx += x * w; + node.vy += y * w; + } while (quad = quad.next); + } + + force.initialize = function(_nodes, _random) { + nodes = _nodes; + random = _random; + initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.distanceMin = function(_) { + return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); + }; + + force.distanceMax = function(_) { + return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); + }; + + force.theta = function(_) { + return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); + }; + + return force; +} + +function radial(radius, x, y) { + var nodes, + strength = constant(0.1), + strengths, + radiuses; + + if (typeof radius !== "function") radius = constant(+radius); + if (x == null) x = 0; + if (y == null) y = 0; + + function force(alpha) { + for (var i = 0, n = nodes.length; i < n; ++i) { + var node = nodes[i], + dx = node.x - x || 1e-6, + dy = node.y - y || 1e-6, + r = Math.sqrt(dx * dx + dy * dy), + k = (radiuses[i] - r) * strengths[i] * alpha / r; + node.vx += dx * k; + node.vy += dy * k; + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length; + strengths = new Array(n); + radiuses = new Array(n); + for (i = 0; i < n; ++i) { + radiuses[i] = +radius(nodes[i], i, nodes); + strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); + } + } + + force.initialize = function(_) { + nodes = _, initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.radius = function(_) { + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; + }; + + force.x = function(_) { + return arguments.length ? (x = +_, force) : x; + }; + + force.y = function(_) { + return arguments.length ? (y = +_, force) : y; + }; + + return force; +} + +function x$2(x) { + var strength = constant(0.1), + nodes, + strengths, + xz; + + if (typeof x !== "function") x = constant(x == null ? 0 : +x); + + function force(alpha) { + for (var i = 0, n = nodes.length, node; i < n; ++i) { + node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length; + strengths = new Array(n); + xz = new Array(n); + for (i = 0; i < n; ++i) { + strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); + } + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.x = function(_) { + return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), initialize(), force) : x; + }; + + return force; +} + +function y$2(y) { + var strength = constant(0.1), + nodes, + strengths, + yz; + + if (typeof y !== "function") y = constant(y == null ? 0 : +y); + + function force(alpha) { + for (var i = 0, n = nodes.length, node; i < n; ++i) { + node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length; + strengths = new Array(n); + yz = new Array(n); + for (i = 0; i < n; ++i) { + strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); + } + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.y = function(_) { + return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), initialize(), force) : y; + }; + + return force; +} + +exports.forceCenter = center; +exports.forceCollide = collide; +exports.forceLink = link; +exports.forceManyBody = manyBody; +exports.forceRadial = radial; +exports.forceSimulation = simulation; +exports.forceX = x$2; +exports.forceY = y$2; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); +}); + +var cytoscapeD3Force = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(d3Force$1); +})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_4__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 3); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** +* cytoscape-d3-force +*/ + +var defaults = __webpack_require__(2); +var d3 = __webpack_require__(4); +var assign = __webpack_require__(1); + +var ContinuousLayout = function () { + function ContinuousLayout(options) { + _classCallCheck(this, ContinuousLayout); + + var o = this.options = assign({}, defaults, options); + this.state = assign({}, o, { + layout: this, + nodes: o.eles.nodes(), + edges: o.eles.edges(), + progress: 0, + iterations: 0, + startTime: 0 + }); + this.simulation = null; + this.removeCytoscapeEvents = null; + this.destroyedEvent = null; + } + + _createClass(ContinuousLayout, [{ + key: 'makeBoundingBox', + value: function makeBoundingBox(bb, cy) { + if (bb == null) { + bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() }; + } else { + bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h }; + } + if (bb.x2 == null) { + bb.x2 = bb.x1 + bb.w; + } + if (bb.w == null) { + bb.w = bb.x2 - bb.x1; + } + if (bb.y2 == null) { + bb.y2 = bb.y1 + bb.h; + } + if (bb.h == null) { + bb.h = bb.y2 - bb.y1; + } + + return bb; + } + }, { + key: 'setInitialPositionState', + value: function setInitialPositionState(node, state) { + var p = node.position(); + var bb = state.currentBoundingBox; + var scratch = node.scratch(state.name); + + if (scratch == null) { + scratch = {}; + + node.scratch(state.name, scratch); + } + + assign(scratch, state.randomize ? { + x: bb.x1 + Math.round(Math.random() * bb.w), + y: bb.y1 + Math.round(Math.random() * bb.h) + } : { + x: p.x, + y: p.y + }); + if (node.locked()) { + assign(scratch, { + fx: p.x, + fy: p.y + }); + } + } + }, { + key: 'refreshPositions', + value: function refreshPositions(nodes, state, fit) { + nodes.positions(function (node) { + var scratch = node.scratch(state.name); + return { + x: scratch.x, + y: scratch.y + }; + }); + fit && state.cy.fit(state.padding); + } + }, { + key: 'getScratch', + value: function getScratch(el) { + var name = this.state.name; + var scratch = el.scratch(name); + + if (!scratch) { + scratch = {}; + + el.scratch(name, scratch); + } + return scratch; + } + }, { + key: 'ungrabify', + value: function ungrabify(nodes) { + var _this = this; + + if (!this.state.ungrabifyWhileSimulating) { + return; + } + nodes.filter(function (node) { + var nodeGrabbable = _this.getScratch(node).grabbable = node.grabbable(); + return nodeGrabbable; + }); + nodes.ungrabify(); + } + }, { + key: 'regrabify', + value: function regrabify(nodes) { + var _this2 = this; + + if (!this.state.ungrabifyWhileSimulating) { + return; + } + nodes.filter(function (node) { + var nodeGrabbable = _this2.getScratch(node).grabbable; + return nodeGrabbable; + }); + nodes.grabify(); + } + }, { + key: 'tick', + value: function tick() { + var s = this.state; + s.progress += 1 / Math.ceil(Math.log(this.simulation.alphaMin()) / Math.log(1 - this.simulation.alphaDecay())); + s.iterations++; + var _iterations = s.maxIterations && !s.infinite ? s.iterations / s.maxIterations : 0; + var _timeRunning = Date.now() - s.startTime; + var _timeIterations = s.maxSimulationTime && !s.infinite ? _timeRunning / s.maxSimulationTime : 0; + var _progress = Math.max(_iterations, _timeIterations, s.progress); + _progress = _progress > 1 ? 1 : _progress; + if (_progress >= 1) { + this.end(!s.infinite); + return; + } + s.tick && s.tick(_progress); + if (s.animate) { + this.refreshPositions(s.nodes, s, s.fit); + } + } + }, { + key: 'end', + value: function end(destroyed) { + var s = this.state; + this.refreshPositions(s.nodes, s, s.fit); + this.emit('layoutstop', s.cy); + this.reset(destroyed); + } + }, { + key: 'reset', + value: function reset(destroyed) { + this.simulation && this.simulation.stop(); + var s = this.state; + this.destroyedEvent && this.destroyedEvent(); + (destroyed || !s.infinite) && this.removeCytoscapeEvents && this.removeCytoscapeEvents(); + s.animate && this.regrabify(s.nodes); + return this; + } + }, { + key: 'run', + value: function run() { + var _this3 = this; + + this.reset(); + var l = this; + var s = this.state; + var ready = false; + s.currentBoundingBox = this.makeBoundingBox(s.boundingBox, s.cy); + if (s.ready) { + l.one('layoutready', s.ready); + } + if (s.stop) { + l.one('layoutstop', s.stop); + } + s.nodes.forEach(function (n) { + return _this3.setInitialPositionState(n, s); + }); + if (!ready) { + ready = true; + l.emit('layoutready'); + } + + if (!l.simulation) { + var _forcenodes = s.nodes.map(function (n) { + return assign(l.getScratch(n), n.data()); + }); + var _forceedges = s.edges.map(function (e) { + return assign({}, e.data()); + }); + l.simulation = d3.forceSimulation(_forcenodes); + s.alpha && l.simulation.alpha(s.alpha); + s.alphaMin && l.simulation.alphaMin(s.alphaMin); + s.alphaDecay && l.simulation.alphaDecay(s.alphaDecay); + s.alphaTarget && l.simulation.alphaTarget(s.alphaTarget); + s.velocityDecay && l.simulation.velocityDecay(s.velocityDecay); + var _collide = d3.forceCollide(); + s.collideRadius && _collide.radius(s.collideRadius); + s.collideStrength && _collide.strength(s.collideStrength); + s.collideIterations && _collide.iterations(s.collideIterations); + var _link = d3.forceLink(_forceedges); + s.linkId && _link.id(s.linkId); + s.linkDistance && _link.distance(s.linkDistance); + s.linkStrength && _link.strength(s.linkStrength); + s.linkIterations && _link.iterations(s.linkIterations); + var _manyBody = d3.forceManyBody(); + s.manyBodyStrength && _manyBody.strength(s.manyBodyStrength); + s.manyBodyTheta && _manyBody.theta(s.manyBodyTheta); + s.manyBodyDistanceMin && _manyBody.distanceMin(s.manyBodyDistanceMin); + s.manyBodyDistanceMax && _manyBody.distanceMax(s.manyBodyDistanceMax); + var _x = d3.forceX(); + s.xX && _x.x(s.xX); + s.xStrength && _x.strength(s.xStrength); + var _y = d3.forceY(); + s.yY && _y.y(s.yY); + s.yStrength && _y.strength(s.yStrength); + var _radius = null; + if (s.radialRadius || s.radialStrength || s.radialX || s.radialY) { + _radius = d3.forceRadial(); + s.radialRadius && _radius.radius(s.radialRadius); + s.radialStrength && _radius.strength(s.radialStrength); + s.radialX && _radius.x(s.radialX); + s.radialY && _radius.y(s.radialY); + } + var _center = d3.forceCenter(s.currentBoundingBox.w / 2, s.currentBoundingBox.h / 2); + l.simulation.force('collide', _collide).force('link', _link).force('many-body', _manyBody).force('x', _x).force('y', _y).force("center", _center); + _radius && l.simulation.force('radius', _radius); + l.simulation.on("tick", function () { + l.tick(); + }).on("end", function () { + l.end(); + }); + } + if (!l.destroyedEvent) { + var destroyHandler = void 0; + s.cy.one('destroy', destroyHandler = function destroyHandler() { + l.stop(); + }); + l.destroyedEvent = function () { + s.cy.off('destroy', destroyHandler); + l.destroyedEvent = null; + }; + } + l.prerun(s); + l.emit('layoutstart'); + s.progress = 0; + s.iterations = 0; + s.startTime = Date.now(); + + if (s.animate) { + var restartAlphaTarget = Math.abs((s.alpha || 1) - (s.alphaTarget || 0)) / 3; + if (!l.removeCytoscapeEvents) { + var _cytoscapeEvent = function _cytoscapeEvent(e) { + var node = this; + var pos = node.position(); + var nodeIsTarget = e.cyTarget === node || e.target === node; + if (!nodeIsTarget) { + return; + } + var _scratch = l.getScratch(node); + s.progress = 0; + s.iterations = 0; + s.startTime = Date.now(); + _scratch.x = pos.x; + _scratch.y = pos.y; + if (e.type === 'grab') { + l.simulation.alphaTarget(restartAlphaTarget).restart(); + } else if (e.type === 'unlock' || e.type === 'free') { + if (!s.fixedAfterDragging) { + delete _scratch.fx; + delete _scratch.fy; + } else { + _scratch.fx = pos.x; + _scratch.fy = pos.y; + } + l.simulation.alphaTarget(restartAlphaTarget).restart(); + } else { + _scratch.fx = pos.x; + _scratch.fy = pos.y; + } + }; + l.removeCytoscapeEvents = function () { + s.nodes.off('grab free drag lock unlock', _cytoscapeEvent); + l.removeCytoscapeEvents = null; + }; + s.nodes.on('grab free drag lock unlock', _cytoscapeEvent); + } + l.ungrabify(s.nodes); + } + l.postrun(s); + return this; + } + }, { + key: 'prerun', + value: function prerun() {} + }, { + key: 'postrun', + value: function postrun() {} + }, { + key: 'stop', + value: function stop() { + return this.reset(true); + } + }]); + + return ContinuousLayout; +}(); + +module.exports = ContinuousLayout; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +// Simple, internal Object.assign() polyfill for options objects etc. + +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + + return tgt; +}; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +module.exports = Object.freeze({ + animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout + maxIterations: 0, // max iterations before the layout will bail out + maxSimulationTime: 0, // max length in ms to run the layout + ungrabifyWhileSimulating: false, // so you can't drag nodes during layout + fixedAfterDragging: false, // fixed node after dragging + fit: false, // on every layout reposition of nodes, fit the viewport + padding: 30, // padding around the simulation + boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + /**d3-force API**/ + alpha: undefined, // sets the current alpha to the specified number in the range [0,1] + alphaMin: undefined, // sets the minimum alpha to the specified number in the range [0,1] + alphaDecay: undefined, // sets the alpha decay rate to the specified number in the range [0,1] + alphaTarget: undefined, // sets the current target alpha to the specified number in the range [0,1] + velocityDecay: undefined, // sets the velocity decay factor to the specified number in the range [0,1] + collideRadius: undefined, // sets the radius accessor to the specified number or function + collideStrength: undefined, // sets the force strength to the specified number in the range [0,1] + collideIterations: undefined, // sets the number of iterations per application to the specified number + linkId: undefined, // sets the node id accessor to the specified function + linkDistance: 30, // sets the distance accessor to the specified number or function + linkStrength: undefined, // sets the strength accessor to the specified number or function + linkIterations: undefined, // sets the number of iterations per application to the specified number + manyBodyStrength: undefined, // sets the strength accessor to the specified number or function + manyBodyTheta: undefined, // sets the Barnes–Hut approximation criterion to the specified number + manyBodyDistanceMin: undefined, // sets the minimum distance between nodes over which this force is considered + manyBodyDistanceMax: undefined, // sets the maximum distance between nodes over which this force is considered + xStrength: undefined, // sets the strength accessor to the specified number or function + xX: undefined, // sets the x-coordinate accessor to the specified number or function + yStrength: undefined, // sets the strength accessor to the specified number or function + yY: undefined, // sets the y-coordinate accessor to the specified number or function + radialStrength: undefined, // sets the strength accessor to the specified number or function + radialRadius: undefined, // sets the circle radius to the specified number or function + radialX: undefined, // sets the x-coordinate of the circle center to the specified number + radialY: undefined, // sets the y-coordinate of the circle center to the specified number + // layout event callbacks + ready: function ready() {}, // on layoutready + stop: function stop() {}, // on layoutstop + tick: function tick() {}, // on every iteration + // positioning options + randomize: false, // use random node positions at beginning of layout + // infinite layout options + infinite: false // overrides all other options for a forces-all-the-time mode +}); + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +var impl = __webpack_require__(0); + +// registers the extension on a cytoscape lib ref +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + cytoscape('layout', 'd3-force', impl); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_4__; + +/***/ }) +/******/ ]); +}); +}); + +var d3Force = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeD3Force); + +// https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setdoubleclicktime +var INTERVAL = 500; +function extension(interval) { + if (interval === void 0) { interval = INTERVAL; } + var clicked = null; + this.on('click', function (evt) { + if (clicked && clicked === evt.target) { + clicked = null; + evt.preventDefault(); + evt.stopPropagation(); + evt.target.emit('dblclick', [evt]); + } + else { + clicked = evt.target; + setTimeout(function () { + if (clicked && clicked === evt.target) { + clicked = null; + evt.target.emit('dblclick:timeout', [evt]); + } + }, interval); + } + }); + return this; // chainability +} + +function register(cy) { + if (!cy) { + return; + } + // Initialize extension + // Register extension + var extensionName = 'dblclick'; + cy('core', extensionName, extension); + // cy('collection', extensionName, extension); + // cy('layout', extensionName, extension); + // cy('renderer', extensionName, extension); +} +if (typeof window.cytoscape !== 'undefined') { + register(window.cytoscape); +} + +var cytoscapeCxtmenu = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(); +})(commonjsGlobal, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 4); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + +var defaults = __webpack_require__(2); +var assign = __webpack_require__(1); + +var _require = __webpack_require__(3), + removeEles = _require.removeEles, + setStyles = _require.setStyles, + createElement = _require.createElement, + getPixelRatio = _require.getPixelRatio, + getOffset = _require.getOffset; + +var cxtmenu = function cxtmenu(params) { + var options = assign({}, defaults, params); + var cy = this; + var container = cy.container(); + var target = void 0; + + var data = { + options: options, + handlers: [], + container: createElement({ class: 'cxtmenu' }) + }; + + var wrapper = data.container; + var parent = createElement(); + var canvas = createElement({ tag: 'canvas' }); + var commands = []; + var c2d = canvas.getContext('2d'); + + var r = 100; // defailt radius; + var containerSize = (r + options.activePadding) * 2; + var activeCommandI = void 0; + var offset = void 0; + + container.insertBefore(wrapper, container.firstChild); + wrapper.appendChild(parent); + parent.appendChild(canvas); + + setStyles(wrapper, { + position: 'absolute', + zIndex: options.zIndex, + userSelect: 'none', + pointerEvents: 'none' // prevent events on menu in modern browsers + }); + + // prevent events on menu in legacy browsers + ['mousedown', 'mousemove', 'mouseup', 'contextmenu'].forEach(function (evt) { + wrapper.addEventListener(evt, function (e) { + e.preventDefault(); + + return false; + }); + }); + + setStyles(parent, { + display: 'none', + width: containerSize + 'px', + height: containerSize + 'px', + position: 'absolute', + zIndex: 1, + marginLeft: -options.activePadding + 'px', + marginTop: -options.activePadding + 'px', + userSelect: 'none' + }); + + canvas.width = containerSize; + canvas.height = containerSize; + + function createMenuItems(r, rs) { + removeEles('.cxtmenu-item', parent); + var dtheta = 2 * Math.PI / commands.length; + var theta1 = Math.PI / 2; + var theta2 = theta1 + dtheta; + + for (var i = 0; i < commands.length; i++) { + var command = commands[i]; + + var midtheta = (theta1 + theta2) / 2; + var rx1 = (r + rs) / 2 * Math.cos(midtheta); + var ry1 = (r + rs) / 2 * Math.sin(midtheta); + + // Arbitrary multiplier to increase the sizing of the space + // available for the item. + var width = 1 * Math.abs((r - rs) * Math.cos(midtheta)); + var height = 1 * Math.abs((r - rs) * Math.sin(midtheta)); + width = Math.max(width, height); + + var item = createElement({ class: 'cxtmenu-item' }); + setStyles(item, { + color: options.itemColor, + cursor: 'default', + display: 'table', + 'text-align': 'center', + //background: 'red', + position: 'absolute', + 'text-shadow': '-1px -1px 2px ' + options.itemTextShadowColor + ', 1px -1px 2px ' + options.itemTextShadowColor + ', -1px 1px 2px ' + options.itemTextShadowColor + ', 1px 1px 1px ' + options.itemTextShadowColor, + left: '50%', + top: '50%', + 'min-height': width + 'px', + width: width + 'px', + height: width + 'px', + marginLeft: rx1 - width / 2 + 'px', + marginTop: -ry1 - width / 2 + 'px' + }); + + var content = createElement({ class: 'cxtmenu-content' }); + + if (command.content instanceof HTMLElement) { + content.appendChild(command.content); + } else { + content.innerHTML = command.content; + } + + setStyles(content, { + 'width': width + 'px', + 'height': width + 'px', + 'vertical-align': 'middle', + 'display': 'table-cell' + }); + + setStyles(content, command.contentStyle || {}); + + if (command.disabled === true || command.enabled === false) { + content.setAttribute('class', 'cxtmenu-content cxtmenu-disabled'); + } + + parent.appendChild(item); + item.appendChild(content); + + theta1 += dtheta; + theta2 += dtheta; + } + } + + function queueDrawBg(radius, rspotlight) { + redrawQueue.drawBg = [radius, rspotlight]; + } + + function drawBg(radius, rspotlight) { + c2d.globalCompositeOperation = 'source-over'; + + c2d.clearRect(0, 0, containerSize, containerSize); + + // draw background items + c2d.fillStyle = options.fillColor; + var dtheta = 2 * Math.PI / commands.length; + var theta1 = Math.PI / 2; + var theta2 = theta1 + dtheta; + + for (var index = 0; index < commands.length; index++) { + var command = commands[index]; + + if (command.fillColor) { + c2d.fillStyle = command.fillColor; + } + c2d.beginPath(); + c2d.moveTo(radius + options.activePadding, radius + options.activePadding); + c2d.arc(radius + options.activePadding, radius + options.activePadding, radius, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true); + c2d.closePath(); + c2d.fill(); + + theta1 += dtheta; + theta2 += dtheta; + + c2d.fillStyle = options.fillColor; + } + + // draw separators between items + c2d.globalCompositeOperation = 'destination-out'; + c2d.strokeStyle = 'white'; + c2d.lineWidth = options.separatorWidth; + theta1 = Math.PI / 2; + theta2 = theta1 + dtheta; + + for (var i = 0; i < commands.length; i++) { + var rx1 = radius * Math.cos(theta1); + var ry1 = radius * Math.sin(theta1); + c2d.beginPath(); + c2d.moveTo(radius + options.activePadding, radius + options.activePadding); + c2d.lineTo(radius + options.activePadding + rx1, radius + options.activePadding - ry1); + c2d.closePath(); + c2d.stroke(); + + theta1 += dtheta; + theta2 += dtheta; + } + + c2d.fillStyle = 'white'; + c2d.globalCompositeOperation = 'destination-out'; + c2d.beginPath(); + c2d.arc(radius + options.activePadding, radius + options.activePadding, rspotlight + options.spotlightPadding, 0, Math.PI * 2, true); + c2d.closePath(); + c2d.fill(); + + c2d.globalCompositeOperation = 'source-over'; + } + + function queueDrawCommands(rx, ry, radius, theta, rspotlight) { + redrawQueue.drawCommands = [rx, ry, radius, theta, rspotlight]; + } + + function drawCommands(rx, ry, radius, theta, rs) { + var dtheta = 2 * Math.PI / commands.length; + var theta1 = Math.PI / 2; + var theta2 = theta1 + dtheta; + + theta1 += dtheta * activeCommandI; + theta2 += dtheta * activeCommandI; + + c2d.fillStyle = options.activeFillColor; + c2d.strokeStyle = 'black'; + c2d.lineWidth = 1; + c2d.beginPath(); + c2d.moveTo(radius + options.activePadding, radius + options.activePadding); + c2d.arc(radius + options.activePadding, radius + options.activePadding, radius + options.activePadding, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true); + c2d.closePath(); + c2d.fill(); + + c2d.fillStyle = 'white'; + c2d.globalCompositeOperation = 'destination-out'; + + var tx = radius + options.activePadding + rx / radius * (rs + options.spotlightPadding - options.indicatorSize / 4); + var ty = radius + options.activePadding + ry / radius * (rs + options.spotlightPadding - options.indicatorSize / 4); + var rot = Math.PI / 4 - theta; + + c2d.translate(tx, ty); + c2d.rotate(rot); + + // clear the indicator + // The indicator size (arrow) depends on the node size as well. If the indicator size is bigger and the rendered node size + padding, + // use the rendered node size + padding as the indicator size. + var indicatorSize = options.indicatorSize > rs + options.spotlightPadding ? rs + options.spotlightPadding : options.indicatorSize; + c2d.beginPath(); + c2d.fillRect(-indicatorSize / 2, -indicatorSize / 2, indicatorSize, indicatorSize); + c2d.closePath(); + c2d.fill(); + + c2d.rotate(-rot); + c2d.translate(-tx, -ty); + + // c2d.setTransform( 1, 0, 0, 1, 0, 0 ); + + // clear the spotlight + c2d.beginPath(); + c2d.arc(radius + options.activePadding, radius + options.activePadding, rs + options.spotlightPadding, 0, Math.PI * 2, true); + c2d.closePath(); + c2d.fill(); + + c2d.globalCompositeOperation = 'source-over'; + } + + function updatePixelRatio() { + var pxr = getPixelRatio(); + var w = containerSize; + var h = containerSize; + + canvas.width = w * pxr; + canvas.height = h * pxr; + + canvas.style.width = w + 'px'; + canvas.style.height = h + 'px'; + + c2d.setTransform(1, 0, 0, 1, 0, 0); + c2d.scale(pxr, pxr); + } + + var redrawing = true; + var redrawQueue = {}; + + var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) { + return setTimeout(fn, 16); + }; + + var redraw = function redraw() { + if (redrawQueue.drawBg) { + drawBg.apply(null, redrawQueue.drawBg); + } + + if (redrawQueue.drawCommands) { + drawCommands.apply(null, redrawQueue.drawCommands); + } + + redrawQueue = {}; + + if (redrawing) { + raf(redraw); + } + }; + + // kick off + updatePixelRatio(); + redraw(); + + var ctrx = void 0, + ctry = void 0, + rs = void 0; + + var bindings = { + on: function on(events, selector, fn) { + + var _fn = fn; + if (selector === 'core') { + _fn = function _fn(e) { + if (e.cyTarget === cy || e.target === cy) { + // only if event target is directly core + return fn.apply(this, [e]); + } + }; + } + + data.handlers.push({ + events: events, + selector: selector, + fn: _fn + }); + + if (selector === 'core') { + cy.on(events, _fn); + } else { + cy.on(events, selector, _fn); + } + + return this; + } + }; + + function addEventListeners() { + var grabbable = void 0; + var inGesture = false; + var dragHandler = void 0; + var zoomEnabled = void 0; + var panEnabled = void 0; + var boxEnabled = void 0; + var gestureStartEvent = void 0; + + var restoreZoom = function restoreZoom() { + if (zoomEnabled) { + cy.userZoomingEnabled(true); + } + }; + + var restoreGrab = function restoreGrab() { + if (grabbable) { + target.grabify(); + } + }; + + var restorePan = function restorePan() { + if (panEnabled) { + cy.userPanningEnabled(true); + } + }; + + var restoreBoxSeln = function restoreBoxSeln() { + if (boxEnabled) { + cy.boxSelectionEnabled(true); + } + }; + + var restoreGestures = function restoreGestures() { + restoreGrab(); + restoreZoom(); + restorePan(); + restoreBoxSeln(); + }; + + window.addEventListener('resize', updatePixelRatio); + + bindings.on('resize', function () { + updatePixelRatio(); + }).on(options.openMenuEvents, options.selector, function (e) { + target = this; // Remember which node the context menu is for + var ele = this; + var isCy = this === cy; + + if (inGesture) { + parent.style.display = 'none'; + + inGesture = false; + + restoreGestures(); + } + + if (typeof options.commands === 'function') { + var res = options.commands(target); + if (res.then) { + res.then(function (_commands) { + commands = _commands; + openMenu(); + }); + } else { + commands = res; + openMenu(); + } + } else { + commands = options.commands; + openMenu(); + } + + function openMenu() { + if (!commands || commands.length === 0) { + return; + } + + zoomEnabled = cy.userZoomingEnabled(); + cy.userZoomingEnabled(false); + + panEnabled = cy.userPanningEnabled(); + cy.userPanningEnabled(false); + + boxEnabled = cy.boxSelectionEnabled(); + cy.boxSelectionEnabled(false); + + grabbable = target.grabbable && target.grabbable(); + if (grabbable) { + target.ungrabify(); + } + + var rp = void 0, + rw = void 0, + rs = void 0; + if (!isCy && ele && ele.isNode instanceof Function && ele.isNode() && !ele.isParent() && !options.atMouse) { + // If it's a node, the default spotlight radius for a node is the node width + rp = ele.renderedPosition(); + rw = ele.renderedOuterWidth(); + ele.renderedOuterHeight(); + rs = rw / 2; + // If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead + rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; + rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; + } else { + // If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius + rp = e.renderedPosition || e.cyRenderedPosition; + rw = 1; + rs = rw / 2; + rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; + rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; + } + + offset = getOffset(container); + + ctrx = rp.x; + ctry = rp.y; + r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius)); + containerSize = (r + options.activePadding) * 2; + updatePixelRatio(); + + setStyles(parent, { + width: containerSize + 'px', + height: containerSize + 'px', + display: 'block', + left: rp.x - r + 'px', + top: rp.y - r + 'px' + }); + createMenuItems(r, rs); + queueDrawBg(r, rs); + + activeCommandI = undefined; + + inGesture = true; + gestureStartEvent = e; + } + }).on('cxtdrag tapdrag', options.selector, dragHandler = function dragHandler(e) { + + if (!inGesture) { + return; + } + e.preventDefault(); // Otherwise, on mobile, the pull-down refresh gesture gets activated + + var origE = e.originalEvent; + var isTouch = origE.touches && origE.touches.length > 0; + + var pageX = (isTouch ? origE.touches[0].pageX : origE.pageX) - window.pageXOffset; + var pageY = (isTouch ? origE.touches[0].pageY : origE.pageY) - window.pageYOffset; + + activeCommandI = undefined; + + var dx = pageX - offset.left - ctrx; + var dy = pageY - offset.top - ctry; + + if (dx === 0) { + dx = 0.01; + } + + var d = Math.sqrt(dx * dx + dy * dy); + var cosTheta = (dy * dy - d * d - dx * dx) / (-2 * d * dx); + var theta = Math.acos(cosTheta); + + var rw = void 0; + if (target && target.isNode instanceof Function && target.isNode() && !target.isParent() && !options.atMouse) { + // If it's a node, the default spotlight radius for a node is the node width + rw = target.renderedOuterWidth(); + rs = rw / 2; + // If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead + rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; + rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; + } else { + // If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius + rw = 1; + rs = rw / 2; + rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; + rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; + } + + r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius)); + if (d < rs + options.spotlightPadding || typeof options.outsideMenuCancel === "number" && d > r + options.activePadding + options.outsideMenuCancel) { + // + + queueDrawBg(r, rs); + return; + } + queueDrawBg(r, rs); + + var rx = dx * r / d; + var ry = dy * r / d; + + if (dy > 0) { + theta = Math.PI + Math.abs(theta - Math.PI); + } + + var dtheta = 2 * Math.PI / commands.length; + var theta1 = Math.PI / 2; + var theta2 = theta1 + dtheta; + + for (var i = 0; i < commands.length; i++) { + var command = commands[i]; + + var inThisCommand = theta1 <= theta && theta <= theta2 || theta1 <= theta + 2 * Math.PI && theta + 2 * Math.PI <= theta2; + + if (command.disabled === true || command.enabled === false) { + inThisCommand = false; + } + + if (inThisCommand) { + activeCommandI = i; + break; + } + + theta1 += dtheta; + theta2 += dtheta; + } + queueDrawCommands(rx, ry, r, theta, rs); + }).on('tapdrag', dragHandler).on('cxttapend tapend', function (e) { + parent.style.display = 'none'; + if (activeCommandI !== undefined) { + var select = commands[activeCommandI].select; + + if (select) { + select.apply(target, [target, gestureStartEvent, e]); + activeCommandI = undefined; + } + } + + inGesture = false; + + restoreGestures(); + }); + } + + function removeEventListeners() { + var handlers = data.handlers; + + for (var i = 0; i < handlers.length; i++) { + var h = handlers[i]; + + if (h.selector === 'core') { + cy.off(h.events, h.fn); + } else { + cy.off(h.events, h.selector, h.fn); + } + } + + window.removeEventListener('resize', updatePixelRatio); + } + + function destroyInstance() { + redrawing = false; + + removeEventListeners(); + + wrapper.remove(); + } + + addEventListeners(); + + return { + destroy: function destroy() { + destroyInstance(); + } + }; +}; + +module.exports = cxtmenu; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + +// Simple, internal Object.assign() polyfill for options objects etc. + +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.filter(function (src) { + return src != null; + }).forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + + return tgt; +}; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + +var defaults = { + menuRadius: function menuRadius(ele) { + return 100; + }, // the radius of the circular menu in pixels + selector: 'node', // elements matching this Cytoscape.js selector will trigger cxtmenus + commands: [// an array of commands to list in the menu or a function that returns the array + /* + { // example command + fillColor: 'rgba(200, 200, 200, 0.75)', // optional: custom background color for item + content: 'a command name' // html/text content to be displayed in the menu + contentStyle: {}, // css key:value pairs to set the command's css in js if you want + select: function(ele){ // a function to execute when the command is selected + console.log( ele.id() ) // `ele` holds the reference to the active element + }, + enabled: true // whether the command is selectable + } + */ + ], // function( ele ){ return [ /*...*/ ] }, // example function for commands + fillColor: 'rgba(0, 0, 0, 0.75)', // the background colour of the menu + activeFillColor: 'rgba(1, 105, 217, 0.75)', // the colour used to indicate the selected command + activePadding: 20, // additional size in pixels for the active command + indicatorSize: 24, // the size in pixels of the pointer to the active command, will default to the node size if the node size is smaller than the indicator size, + separatorWidth: 3, // the empty spacing in pixels between successive commands + spotlightPadding: 4, // extra spacing in pixels between the element and the spotlight + adaptativeNodeSpotlightRadius: false, // specify whether the spotlight radius should adapt to the node size + minSpotlightRadius: 24, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) + maxSpotlightRadius: 38, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) + openMenuEvents: 'cxttapstart taphold', // space-separated cytoscape events that will open the menu; only `cxttapstart` and/or `taphold` work here + itemColor: 'white', // the colour of text in the command's content + itemTextShadowColor: 'transparent', // the text shadow colour of the command's content + zIndex: 9999, // the z-index of the ui div + atMouse: false, // draw menu at mouse position + outsideMenuCancel: false // if set to a number, this will cancel the command if the pointer is released outside of the spotlight, padded by the number given +}; + +module.exports = defaults; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + +var removeEles = function removeEles(query) { + var ancestor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document; + + var els = ancestor.querySelectorAll(query); + + for (var i = 0; i < els.length; i++) { + var el = els[i]; + + el.parentNode.removeChild(el); + } +}; + +var setStyles = function setStyles(el, style) { + var props = Object.keys(style); + + for (var i = 0, l = props.length; i < l; i++) { + el.style[props[i]] = style[props[i]]; + } +}; + +var createElement = function createElement(options) { + options = options || {}; + + var el = document.createElement(options.tag || 'div'); + + el.className = options.class || ''; + + if (options.style) { + setStyles(el, options.style); + } + + return el; +}; + +var getPixelRatio = function getPixelRatio() { + return window.devicePixelRatio || 1; +}; + +var getOffset = function getOffset(el) { + var offset = el.getBoundingClientRect(); + + return { + left: offset.left + document.body.scrollLeft + parseFloat(getComputedStyle(document.body)['padding-left']) + parseFloat(getComputedStyle(document.body)['border-left-width']), + top: offset.top + document.body.scrollTop + parseFloat(getComputedStyle(document.body)['padding-top']) + parseFloat(getComputedStyle(document.body)['border-top-width']) + }; +}; + +module.exports = { removeEles: removeEles, setStyles: setStyles, createElement: createElement, getPixelRatio: getPixelRatio, getOffset: getOffset }; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + +var cxtmenu = __webpack_require__(0); + +// registers the extension on a cytoscape lib ref +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }) +/******/ ]); +}); +}); + +var cxtmenu = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeCxtmenu); + +class JugglView extends obsidian.ItemView { + constructor(leaf, settings, plugin, initialNodes) { + super(leaf); + // TODO: Maybe make this configurable + leaf.setPinned(true); + const coreStore = plugin.coreStores[settings.coreStore]; + const stores = { + dataStores: [coreStore].concat(plugin.stores), + coreStore: coreStore + }; + this.juggl = new Juggl(this.containerEl.children[1], plugin, stores, settings, initialNodes); + this.addChild(this.juggl); + } + getDisplayText() { + // TODO: Make this interactive: Either the active workspace or the local graph + return 'Juggl'; + } + getViewType() { + return JUGGL_VIEW_TYPE; + } +} + +/* src/pane/NodesList.svelte generated by Svelte v3.45.0 */ + +function get_each_context$1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[11] = list[i]; + return child_ctx; +} + +// (18:0) {#if displayList} +function create_if_block$1(ctx) { + let each_1_anchor; + let each_value = /*nodes*/ ctx[1].sort(func); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); + } + + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } + + insert(target, each_1_anchor, anchor); + }, + p(ctx, dirty) { + if (dirty & /*icon_tooltip, onClickButton, nodes, icon, onClickText, ctxmenu*/ 126) { + each_value = /*nodes*/ ctx[1].sort(func); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$1(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block$1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach(each_1_anchor); + } + }; +} + +// (27:16) {#if icon} +function create_if_block_1$1(ctx) { + let button; + let svg; + let path; + let mounted; + let dispose; + + return { + c() { + button = element$1("button"); + svg = svg_element("svg"); + path = svg_element("path"); + attr(path, "d", /*icon*/ ctx[4]); + set_style(svg, "width", "14px"); + set_style(svg, "height", "14px"); + attr(svg, "viewBox", "0 0 24 24"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + attr(button, "type", "button"); + attr(button, "class", "juggl-button juggl-button-pane"); + attr(button, "aria-label", /*icon_tooltip*/ ctx[5]); + }, + m(target, anchor) { + insert(target, button, anchor); + append(button, svg); + append(svg, path); + + if (!mounted) { + dispose = listen(button, "click", function () { + if (is_function(/*onClickButton*/ ctx[3](/*v*/ ctx[11]))) /*onClickButton*/ ctx[3](/*v*/ ctx[11]).apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + + if (dirty & /*icon*/ 16) { + attr(path, "d", /*icon*/ ctx[4]); + } + + if (dirty & /*icon_tooltip*/ 32) { + attr(button, "aria-label", /*icon_tooltip*/ ctx[5]); + } + }, + d(detaching) { + if (detaching) detach(button); + mounted = false; + dispose(); + } + }; +} + +// (19:4) {#each nodes.sort((a, b) => a.data("name").localeCompare(b.data("name"))) as v} +function create_each_block$1(ctx) { + let div2; + let div1; + let div0; + let t0_value = /*v*/ ctx[11].data("name") + ""; + let t0; + let t1; + let t2; + let mounted; + let dispose; + + function click_handler(...args) { + return /*click_handler*/ ctx[9](/*v*/ ctx[11], ...args); + } + + function contextmenu_handler(...args) { + return /*contextmenu_handler*/ ctx[10](/*v*/ ctx[11], ...args); + } + + let if_block = /*icon*/ ctx[4] && create_if_block_1$1(ctx); + + return { + c() { + div2 = element$1("div"); + div1 = element$1("div"); + div0 = element$1("div"); + t0 = text(t0_value); + t1 = space(); + if (if_block) if_block.c(); + t2 = space(); + attr(div0, "class", "tree-item-inner juggl-list-text"); + set_style(div0, "color", /*v*/ ctx[11].style('background-color')); + attr(div1, "class", "tree-item-self is-clickable"); + attr(div2, "class", "tree-item"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div1); + append(div1, div0); + append(div0, t0); + append(div1, t1); + if (if_block) if_block.m(div1, null); + append(div2, t2); + + if (!mounted) { + dispose = [ + listen(div0, "click", click_handler), + listen(div0, "contextmenu", contextmenu_handler) + ]; + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*nodes*/ 2 && t0_value !== (t0_value = /*v*/ ctx[11].data("name") + "")) set_data(t0, t0_value); + + if (dirty & /*nodes*/ 2) { + set_style(div0, "color", /*v*/ ctx[11].style('background-color')); + } + + if (/*icon*/ ctx[4]) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block_1$1(ctx); + if_block.c(); + if_block.m(div1, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d(detaching) { + if (detaching) detach(div2); + if (if_block) if_block.d(); + mounted = false; + run_all(dispose); + } + }; +} + +function create_fragment$4(ctx) { + let div; + let t0; + let t1; + let if_block_anchor; + let mounted; + let dispose; + let if_block = /*displayList*/ ctx[7] && create_if_block$1(ctx); + + return { + c() { + div = element$1("div"); + t0 = text(/*name*/ ctx[0]); + t1 = space(); + if (if_block) if_block.c(); + if_block_anchor = empty(); + attr(div, "class", "juggl-list-header"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, t0); + insert(target, t1, anchor); + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + + if (!mounted) { + dispose = listen(div, "click", /*setDisplayList*/ ctx[8]); + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*name*/ 1) set_data(t0, /*name*/ ctx[0]); + + if (/*displayList*/ ctx[7]) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$1(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop$2, + o: noop$2, + d(detaching) { + if (detaching) detach(div); + if (detaching) detach(t1); + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + mounted = false; + dispose(); + } + }; +} + +const func = (a, b) => a.data("name").localeCompare(b.data("name")); + +function instance$4($$self, $$props, $$invalidate) { + let { name } = $$props; + let { nodes } = $$props; + let { onClickText } = $$props; + let { onClickButton } = $$props; + let { icon = null } = $$props; + let { icon_tooltip = null } = $$props; + let { ctxmenu } = $$props; + let displayList = true; + + let setDisplayList = function () { + $$invalidate(7, displayList = !displayList); + }; + + const click_handler = (v, e) => onClickText(v, e); + const contextmenu_handler = (v, e) => ctxmenu(v, e); + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('nodes' in $$props) $$invalidate(1, nodes = $$props.nodes); + if ('onClickText' in $$props) $$invalidate(2, onClickText = $$props.onClickText); + if ('onClickButton' in $$props) $$invalidate(3, onClickButton = $$props.onClickButton); + if ('icon' in $$props) $$invalidate(4, icon = $$props.icon); + if ('icon_tooltip' in $$props) $$invalidate(5, icon_tooltip = $$props.icon_tooltip); + if ('ctxmenu' in $$props) $$invalidate(6, ctxmenu = $$props.ctxmenu); + }; + + return [ + name, + nodes, + onClickText, + onClickButton, + icon, + icon_tooltip, + ctxmenu, + displayList, + setDisplayList, + click_handler, + contextmenu_handler + ]; +} + +class NodesList extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance$4, create_fragment$4, safe_not_equal, { + name: 0, + nodes: 1, + onClickText: 2, + onClickButton: 3, + icon: 4, + icon_tooltip: 5, + ctxmenu: 6 + }); + } +} + +/* src/pane/NodesPane.svelte generated by Svelte v3.45.0 */ + +function create_fragment$3(ctx) { + let div; + let nodeslist0; + let t; + let nodeslist1; + let current; + + nodeslist0 = new NodesList({ + props: { + nodes: /*visible*/ ctx[0], + name: "Nodes in graph", + ctxmenu: /*ctxMenu*/ ctx[2], + onClickText: /*clickTxt*/ ctx[3] + } + }); + + nodeslist1 = new NodesList({ + props: { + nodes: /*hidden*/ ctx[1], + name: "Hidden nodes", + ctxmenu: /*ctxMenu*/ ctx[2], + onClickText: /*clickTxt*/ ctx[3], + icon: icons.ag_unhide, + icon_tooltip: "Show in graph", + onClickButton: /*filterButtonClick*/ ctx[4] + } + }); + + return { + c() { + div = element$1("div"); + create_component(nodeslist0.$$.fragment); + t = space(); + create_component(nodeslist1.$$.fragment); + attr(div, "class", "juggl-nodes-pane"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(nodeslist0, div, null); + append(div, t); + mount_component(nodeslist1, div, null); + current = true; + }, + p(ctx, [dirty]) { + const nodeslist0_changes = {}; + if (dirty & /*visible*/ 1) nodeslist0_changes.nodes = /*visible*/ ctx[0]; + nodeslist0.$set(nodeslist0_changes); + const nodeslist1_changes = {}; + if (dirty & /*hidden*/ 2) nodeslist1_changes.nodes = /*hidden*/ ctx[1]; + nodeslist1.$set(nodeslist1_changes); + }, + i(local) { + if (current) return; + transition_in(nodeslist0.$$.fragment, local); + transition_in(nodeslist1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(nodeslist0.$$.fragment, local); + transition_out(nodeslist1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(div); + destroy_component(nodeslist0); + destroy_component(nodeslist1); + } + }; +} + +function instance$3($$self, $$props, $$invalidate) { + let viz = null; + let visible = cytoscape_cjs().collection(); + let hidden = cytoscape_cjs().collection(); + + const setViz = function (juggl) { + if (!juggl) { + viz = null; + $$invalidate(0, visible = cytoscape_cjs().collection()); + $$invalidate(1, hidden = cytoscape_cjs().collection()); + return; + } + + viz = juggl; + + // TODO: Can probably do something like not HARD FILTERED, rather than relying on styling. + $$invalidate(0, visible = viz.viz.nodes(":visible")); + + $$invalidate(1, hidden = viz.viz.nodes(`.${CLASS_HARD_FILTERED}`)); + }; + + let ctxMenu = function (node, e) { + const fileMenu = new obsidian.Menu(); // Creates empty file menu + const id = VizId.fromNode(node); + const file = viz.plugin.metadata.getFirstLinkpathDest(id.id, ''); + + if (!(file === undefined)) { + // hook for plugins to populate menu with "file-aware" menu items + viz.plugin.app.workspace.trigger('file-menu', fileMenu, file, 'my-context-menu', null); + } + + viz.mode.fillMenu(fileMenu, node); + fileMenu.showAtPosition({ x: e.x, y: e.y }); + }; + + let clickTxt = function (node, e) { + viz.plugin.openFileFromNode(node, e.metaKey); + }; + + let filterButtonClick = function (node) { + node.removeClass(CLASS_HARD_FILTERED); + viz.onGraphChanged(true, true); + }; + + return [visible, hidden, ctxMenu, clickTxt, filterButtonClick, setViz]; +} + +class NodesPane extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$3, create_fragment$3, safe_not_equal, { setViz: 5 }); + } + + get setViz() { + return this.$$.ctx[5]; + } +} + +class IconModal extends obsidian.FuzzySuggestModal { + constructor(app, callback, color) { + super(app); + this.callback = callback; + this.resultContainerEl.addClass('juggl-icon-picker'); + this.color = color; + } + getItemText(item) { + return item.name; + } + getItems() { + const icons = [{ name: 'No icon', path: '', color: this.color }]; + icons.push(...Object.keys(mdiIcons).map((k) => { + return { name: k.slice(3).replace(/([A-Z])/g, ' $1').trim(), + // @ts-ignore + path: mdiIcons[k], + color: this.color }; + })); + return icons; + } + onChooseItem(item, evt) { + this.callback(item); + } + renderSuggestion(item, el) { + el.empty(); + const iconHtml = pathToSvg(item.item.path); + // // const renderedResult = el.createEl('span', {cls: ''}); + const innerResult = el.createEl('span', { + cls: 'react-icon ', + }); + innerResult.innerHTML = iconHtml; + // el.createEl('span', { + super.renderSuggestion(item, el); + // cls: '', + // text: item.item.name, + // }); + } +} + +/* src/pane/StyleGroups.svelte generated by Svelte v3.45.0 */ + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[15] = list[i]; + child_ctx[16] = list; + child_ctx[17] = i; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[18] = list[i]; + return child_ctx; +} + +// (103:8) {:else} +function create_else_block_1(ctx) { + let div1; + let div0; + let t0; + let t1_value = /*group*/ ctx[15].filter + ""; + let t1; + let t2; + let br; + let mounted; + let dispose; + + return { + c() { + div1 = element$1("div"); + div0 = element$1("div"); + div0.innerHTML = ``; + t0 = space(); + t1 = text(t1_value); + t2 = space(); + br = element$1("br"); + attr(div0, "class", "clickable-icon"); + set_style(div0, "display", "inline"); + attr(div0, "aria-label", "Show group options"); + attr(div1, "class", "juggl-style-group-hidden"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + append(div1, t0); + append(div1, t1); + insert(target, t2, anchor); + insert(target, br, anchor); + + if (!mounted) { + dispose = listen(div0, "click", function () { + if (is_function(/*showGroup*/ ctx[7](/*group*/ ctx[15], true))) /*showGroup*/ ctx[7](/*group*/ ctx[15], true).apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*groups*/ 1 && t1_value !== (t1_value = /*group*/ ctx[15].filter + "")) set_data(t1, t1_value); + }, + d(detaching) { + if (detaching) detach(div1); + if (detaching) detach(t2); + if (detaching) detach(br); + mounted = false; + dispose(); + } + }; +} + +// (47:8) {#if group.showInPane} +function create_if_block(ctx) { + let div10; + let div2; + let div0; + let t0; + let div1; + let svg1; + let path1; + let path1_d_value; + let div1_aria_label_value; + let t1; + let input0; + let t2; + let div3; + let t3; + let div4; + let t4; + let div5; + let input1; + let t5; + let select; + let t6; + let div6; + let t7; + let div7; + let t8; + let button; + let t9; + let div8; + let t10; + let div9; + let t11_value = Math.round(/*group*/ ctx[15].size * 100) / 100 + ""; + let t11; + let t12; + let input2; + let mounted; + let dispose; + + function input0_input_handler() { + /*input0_input_handler*/ ctx[10].call(input0, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); + } + + function input1_input_handler() { + /*input1_input_handler*/ ctx[11].call(input1, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); + } + + let each_value_1 = SHAPES; + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + function select_change_handler() { + /*select_change_handler*/ ctx[12].call(select, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); + } + + let if_block0 = /*group*/ ctx[15].icon.path && create_if_block_2(ctx); + + function select_block_type_1(ctx, dirty) { + if (/*group*/ ctx[15].icon.path) return create_if_block_1; + return create_else_block; + } + + let current_block_type = select_block_type_1(ctx); + let if_block1 = current_block_type(ctx); + + function input2_change_input_handler() { + /*input2_change_input_handler*/ ctx[14].call(input2, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); + } + + return { + c() { + div10 = element$1("div"); + div2 = element$1("div"); + div0 = element$1("div"); + div0.innerHTML = ``; + t0 = space(); + div1 = element$1("div"); + svg1 = svg_element("svg"); + path1 = svg_element("path"); + t1 = space(); + input0 = element$1("input"); + t2 = space(); + div3 = element$1("div"); + div3.innerHTML = ``; + t3 = space(); + div4 = element$1("div"); + t4 = space(); + div5 = element$1("div"); + input1 = element$1("input"); + t5 = space(); + select = element$1("select"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t6 = space(); + div6 = element$1("div"); + t7 = space(); + div7 = element$1("div"); + if (if_block0) if_block0.c(); + t8 = space(); + button = element$1("button"); + if_block1.c(); + t9 = space(); + div8 = element$1("div"); + t10 = space(); + div9 = element$1("div"); + t11 = text(t11_value); + t12 = space(); + input2 = element$1("input"); + attr(div0, "class", "clickable-icon"); + attr(div0, "aria-label", "Hide group options"); + attr(div0, "flex-basis", "100%"); + attr(path1, "fill", "currentColor"); + attr(path1, "stroke", "currentColor"); + attr(path1, "d", path1_d_value = /*group*/ ctx[15].show ? icons.ag_unhide : icons.ag_hide); + attr(svg1, "viewBox", "0 0 24 24"); + attr(svg1, "width", "16"); + attr(svg1, "height", "16"); + attr(svg1, "class", "right-triangle"); + attr(div1, "class", "clickable-icon"); + attr(div1, "aria-label", div1_aria_label_value = /*group*/ ctx[15].show ? "Hide group" : "Show group"); + attr(div1, "flex-basis", "100%"); + attr(div2, "class", "juggl-style-pane-left"); + attr(input0, "type", "text"); + attr(input0, "placeholder", "Enter filter..."); + attr(div3, "class", "clickable-icon"); + attr(div3, "aria-label", "Delete group"); + attr(div3, "flex-basis", "100%"); + attr(div4, "class", "break"); + attr(input1, "type", "color"); + attr(input1, "aria-label", "Click to change color"); + attr(input1, "flex-basis", "100%"); + attr(div5, "class", "juggl-style-pane-left"); + attr(select, "class", "dropdown"); + if (/*group*/ ctx[15].shape === void 0) add_render_callback(select_change_handler); + attr(div6, "class", "break"); + attr(div7, "class", "juggl-style-pane-left"); + attr(button, "class", "juggl-icon-button"); + attr(div8, "class", "break"); + attr(div9, "class", "juggl-style-pane-left"); + attr(input2, "class", "slider"); + attr(input2, "type", "range"); + attr(input2, "min", "0.01"); + attr(input2, "max", "10"); + attr(input2, "step", "any"); + attr(input2, "aria-label", "Size"); + attr(div10, "class", "juggl-style-group"); + }, + m(target, anchor) { + insert(target, div10, anchor); + append(div10, div2); + append(div2, div0); + append(div2, t0); + append(div2, div1); + append(div1, svg1); + append(svg1, path1); + append(div10, t1); + append(div10, input0); + set_input_value(input0, /*group*/ ctx[15].filter); + append(div10, t2); + append(div10, div3); + append(div10, t3); + append(div10, div4); + append(div10, t4); + append(div10, div5); + append(div5, input1); + set_input_value(input1, /*group*/ ctx[15].color); + append(div10, t5); + append(div10, select); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(select, null); + } + + select_option(select, /*group*/ ctx[15].shape); + append(div10, t6); + append(div10, div6); + append(div10, t7); + append(div10, div7); + if (if_block0) if_block0.m(div7, null); + append(div10, t8); + append(div10, button); + if_block1.m(button, null); + append(div10, t9); + append(div10, div8); + append(div10, t10); + append(div10, div9); + append(div9, t11); + append(div10, t12); + append(div10, input2); + set_input_value(input2, /*group*/ ctx[15].size); + + if (!mounted) { + dispose = [ + listen(div0, "click", function () { + if (is_function(/*showGroup*/ ctx[7](/*group*/ ctx[15], false))) /*showGroup*/ ctx[7](/*group*/ ctx[15], false).apply(this, arguments); + }), + listen(div1, "click", function () { + if (is_function(/*changeShow*/ ctx[8](/*group*/ ctx[15]))) /*changeShow*/ ctx[8](/*group*/ ctx[15]).apply(this, arguments); + }), + listen(input0, "input", input0_input_handler), + listen(input0, "change", function () { + if (is_function(/*onChangeFilter*/ ctx[2])) /*onChangeFilter*/ ctx[2].apply(this, arguments); + }), + listen(div3, "click", function () { + if (is_function(/*onDeleteGroup*/ ctx[5](/*group*/ ctx[15]))) /*onDeleteGroup*/ ctx[5](/*group*/ ctx[15]).apply(this, arguments); + }), + listen(input1, "input", input1_input_handler), + listen(input1, "change", function () { + if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); + }), + listen(select, "change", select_change_handler), + listen(select, "blur", function () { + if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); + }), + listen(button, "click", function () { + if (is_function(/*onIconButton*/ ctx[6](/*group*/ ctx[15]))) /*onIconButton*/ ctx[6](/*group*/ ctx[15]).apply(this, arguments); + }), + listen(input2, "change", input2_change_input_handler), + listen(input2, "input", input2_change_input_handler), + listen(input2, "change", function () { + if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + + if (dirty & /*groups, SHAPES*/ 1 && path1_d_value !== (path1_d_value = /*group*/ ctx[15].show ? icons.ag_unhide : icons.ag_hide)) { + attr(path1, "d", path1_d_value); + } + + if (dirty & /*groups, SHAPES*/ 1 && div1_aria_label_value !== (div1_aria_label_value = /*group*/ ctx[15].show ? "Hide group" : "Show group")) { + attr(div1, "aria-label", div1_aria_label_value); + } + + if (dirty & /*groups, SHAPES*/ 1 && input0.value !== /*group*/ ctx[15].filter) { + set_input_value(input0, /*group*/ ctx[15].filter); + } + + if (dirty & /*groups, SHAPES*/ 1) { + set_input_value(input1, /*group*/ ctx[15].color); + } + + if (dirty & /*SHAPES*/ 0) { + each_value_1 = SHAPES; + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(select, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + + if (dirty & /*groups, SHAPES*/ 1) { + select_option(select, /*group*/ ctx[15].shape); + } + + if (/*group*/ ctx[15].icon.path) { + if (if_block0) { + if_block0.p(ctx, dirty); + } else { + if_block0 = create_if_block_2(ctx); + if_block0.c(); + if_block0.m(div7, null); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + + if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block1) { + if_block1.p(ctx, dirty); + } else { + if_block1.d(1); + if_block1 = current_block_type(ctx); + + if (if_block1) { + if_block1.c(); + if_block1.m(button, null); + } + } + + if (dirty & /*groups*/ 1 && t11_value !== (t11_value = Math.round(/*group*/ ctx[15].size * 100) / 100 + "")) set_data(t11, t11_value); + + if (dirty & /*groups, SHAPES*/ 1) { + set_input_value(input2, /*group*/ ctx[15].size); + } + }, + d(detaching) { + if (detaching) detach(div10); + destroy_each(each_blocks, detaching); + if (if_block0) if_block0.d(); + if_block1.d(); + mounted = false; + run_all(dispose); + } + }; +} + +// (78:16) {#each SHAPES as shape} +function create_each_block_1(ctx) { + let option; + let t_value = /*shape*/ ctx[18] + ""; + let t; + let option_value_value; + + return { + c() { + option = element$1("option"); + t = text(t_value); + option.__value = option_value_value = /*shape*/ ctx[18]; + option.value = option.__value; + }, + m(target, anchor) { + insert(target, option, anchor); + append(option, t); + }, + p: noop$2, + d(detaching) { + if (detaching) detach(option); + } + }; +} + +// (84:16) {#if group.icon.path} +function create_if_block_2(ctx) { + let input; + let mounted; + let dispose; + + function input_input_handler() { + /*input_input_handler*/ ctx[13].call(input, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); + } + + return { + c() { + input = element$1("input"); + attr(input, "type", "color"); + attr(input, "aria-label", "Click to change icon color"); + attr(input, "flex-basis", "100%"); + }, + m(target, anchor) { + insert(target, input, anchor); + set_input_value(input, /*group*/ ctx[15].icon.color); + + if (!mounted) { + dispose = [ + listen(input, "input", input_input_handler), + listen(input, "change", function () { + if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + + if (dirty & /*groups, SHAPES*/ 1) { + set_input_value(input, /*group*/ ctx[15].icon.color); + } + }, + d(detaching) { + if (detaching) detach(input); + mounted = false; + run_all(dispose); + } + }; +} + +// (93:16) {:else} +function create_else_block(ctx) { + let t_value = /*group*/ ctx[15].icon.name + ""; + let t; + + return { + c() { + t = text(t_value); + }, + m(target, anchor) { + insert(target, t, anchor); + }, + p(ctx, dirty) { + if (dirty & /*groups*/ 1 && t_value !== (t_value = /*group*/ ctx[15].icon.name + "")) set_data(t, t_value); + }, + d(detaching) { + if (detaching) detach(t); + } + }; +} + +// (89:16) {#if group.icon.path} +function create_if_block_1(ctx) { + let svg; + let path; + let path_d_value; + + return { + c() { + svg = svg_element("svg"); + path = svg_element("path"); + attr(path, "fill", "currentcolor"); + attr(path, "d", path_d_value = /*group*/ ctx[15].icon.path); + set_style(svg, "width", "24px"); + set_style(svg, "height", "24px"); + attr(svg, "viewBox", "0 0 24 24"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + }, + m(target, anchor) { + insert(target, svg, anchor); + append(svg, path); + }, + p(ctx, dirty) { + if (dirty & /*groups, SHAPES*/ 1 && path_d_value !== (path_d_value = /*group*/ ctx[15].icon.path)) { + attr(path, "d", path_d_value); + } + }, + d(detaching) { + if (detaching) detach(svg); + } + }; +} + +// (46:4) {#each groups as group} +function create_each_block(ctx) { + let if_block_anchor; + + function select_block_type(ctx, dirty) { + if (/*group*/ ctx[15].showInPane) return create_if_block; + return create_else_block_1; + } + + let current_block_type = select_block_type(ctx); + let if_block = current_block_type(ctx); + + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx, dirty) { + if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { + if_block.p(ctx, dirty); + } else { + if_block.d(1); + if_block = current_block_type(ctx); + + if (if_block) { + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } + }, + d(detaching) { + if_block.d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} + +function create_fragment$2(ctx) { + let div0; + let t0; + let t1; + let div2; + let t2; + let div1; + let mounted; + let dispose; + let each_value = /*groups*/ ctx[0]; + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + return { + c() { + div0 = element$1("div"); + t0 = text(/*title*/ ctx[1]); + t1 = space(); + div2 = element$1("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + div1 = element$1("div"); + div1.innerHTML = ``; + attr(div0, "class", "juggl-list-header"); + attr(div1, "class", "graph-color-button-container"); + attr(div2, "class", "juggl-style-group-container"); + }, + m(target, anchor) { + insert(target, div0, anchor); + append(div0, t0); + insert(target, t1, anchor); + insert(target, div2, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div2, null); + } + + append(div2, t2); + append(div2, div1); + + if (!mounted) { + dispose = listen(div1, "click", /*onNewGroup*/ ctx[4]); + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*title*/ 2) set_data(t0, /*title*/ ctx[1]); + + if (dirty & /*groups, onChangeGroups, Math, onIconButton, SHAPES, onDeleteGroup, onChangeFilter, changeShow, icons, showGroup*/ 493) { + each_value = /*groups*/ ctx[0]; + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div2, t2); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + i: noop$2, + o: noop$2, + d(detaching) { + if (detaching) detach(div0); + if (detaching) detach(t1); + if (detaching) detach(div2); + destroy_each(each_blocks, detaching); + mounted = false; + dispose(); + } + }; +} + +function instance$2($$self, $$props, $$invalidate) { + let { groups } = $$props; + let { title } = $$props; + let { onChangeFilter } = $$props; + let { onChangeGroups } = $$props; + let { plugin } = $$props; + + let onNewGroup = function () { + groups.push({ ...emptyStyleGroup }); + $$invalidate(0, groups); + onChangeGroups(); + }; + + let onDeleteGroup = function (group) { + groups.remove(group); + $$invalidate(0, groups); + onChangeFilter(); + onChangeGroups(); + }; + + let onIconButton = function (group) { + let callback = function (icon) { + group.icon = icon; + onChangeGroups(); + $$invalidate(0, groups); + }; + + let iconModal = new IconModal(plugin.app, callback, group.icon.color); + iconModal.open(); + }; + + let showGroup = function (group, show) { + group.showInPane = show; + $$invalidate(0, groups); + }; + + let changeShow = function (group) { + group.show = !group.show; + onChangeGroups(); + $$invalidate(0, groups); + }; + + function input0_input_handler(each_value, group_index) { + each_value[group_index].filter = this.value; + $$invalidate(0, groups); + } + + function input1_input_handler(each_value, group_index) { + each_value[group_index].color = this.value; + $$invalidate(0, groups); + } + + function select_change_handler(each_value, group_index) { + each_value[group_index].shape = select_value(this); + $$invalidate(0, groups); + } + + function input_input_handler(each_value, group_index) { + each_value[group_index].icon.color = this.value; + $$invalidate(0, groups); + } + + function input2_change_input_handler(each_value, group_index) { + each_value[group_index].size = to_number(this.value); + $$invalidate(0, groups); + } + + $$self.$$set = $$props => { + if ('groups' in $$props) $$invalidate(0, groups = $$props.groups); + if ('title' in $$props) $$invalidate(1, title = $$props.title); + if ('onChangeFilter' in $$props) $$invalidate(2, onChangeFilter = $$props.onChangeFilter); + if ('onChangeGroups' in $$props) $$invalidate(3, onChangeGroups = $$props.onChangeGroups); + if ('plugin' in $$props) $$invalidate(9, plugin = $$props.plugin); + }; + + return [ + groups, + title, + onChangeFilter, + onChangeGroups, + onNewGroup, + onDeleteGroup, + onIconButton, + showGroup, + changeShow, + plugin, + input0_input_handler, + input1_input_handler, + select_change_handler, + input_input_handler, + input2_change_input_handler + ]; +} + +class StyleGroups extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance$2, create_fragment$2, safe_not_equal, { + groups: 0, + title: 1, + onChangeFilter: 2, + onChangeGroups: 3, + plugin: 9 + }); + } +} + +/* src/pane/StylePane.svelte generated by Svelte v3.45.0 */ + +function create_fragment$1(ctx) { + let div; + let stylegroups0; + let t; + let stylegroups1; + let current; + + stylegroups0 = new StyleGroups({ + props: { + groups: /*localGroups*/ ctx[1], + title: "Local style groups", + onChangeGroups: /*onChangeGroups*/ ctx[3], + onChangeFilter: /*onChangeFilter*/ ctx[5], + plugin: /*plugin*/ ctx[0] + } + }); + + stylegroups1 = new StyleGroups({ + props: { + groups: /*globalGroups*/ ctx[2], + title: "Global style groups", + onChangeGroups: /*onChangeGroupsGlobal*/ ctx[4], + onChangeFilter: /*onChangeFilterGlobal*/ ctx[6], + plugin: /*plugin*/ ctx[0] + } + }); + + return { + c() { + div = element$1("div"); + create_component(stylegroups0.$$.fragment); + t = space(); + create_component(stylegroups1.$$.fragment); + attr(div, "class", "juggl-style-pane"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(stylegroups0, div, null); + append(div, t); + mount_component(stylegroups1, div, null); + current = true; + }, + p(ctx, [dirty]) { + const stylegroups0_changes = {}; + if (dirty & /*localGroups*/ 2) stylegroups0_changes.groups = /*localGroups*/ ctx[1]; + if (dirty & /*plugin*/ 1) stylegroups0_changes.plugin = /*plugin*/ ctx[0]; + stylegroups0.$set(stylegroups0_changes); + const stylegroups1_changes = {}; + if (dirty & /*plugin*/ 1) stylegroups1_changes.plugin = /*plugin*/ ctx[0]; + stylegroups1.$set(stylegroups1_changes); + }, + i(local) { + if (current) return; + transition_in(stylegroups0.$$.fragment, local); + transition_in(stylegroups1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(stylegroups0.$$.fragment, local); + transition_out(stylegroups1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(div); + destroy_component(stylegroups0); + destroy_component(stylegroups1); + } + }; +} + +function instance$1($$self, $$props, $$invalidate) { + let { viz } = $$props; + let { plugin } = $$props; + let settings = plugin?.settings; + + const setViz = function (_viz) { + $$invalidate(7, viz = _viz); + + if (viz) { + $$invalidate(1, localGroups = viz.settings.styleGroups); + } else { + $$invalidate(1, localGroups = []); + } + }; + + let localGroups = []; + let globalGroups = settings.globalStyleGroups; + + let onChangeGroups = function () { + if (viz) { + viz.updateStylesheet(); + } + }; + + let onChangeGroupsGlobal = function () { + plugin.saveData(settings); + plugin.activeGraphs().forEach(j => j.updateStylesheet()); + }; + + let onChangeFilter = function () { + if (viz) { + viz.assignStyleGroups(); + } + }; + + let onChangeFilterGlobal = function () { + plugin.saveData(settings); + plugin.activeGraphs().forEach(j => j.assignStyleGroups()); + }; + + $$self.$$set = $$props => { + if ('viz' in $$props) $$invalidate(7, viz = $$props.viz); + if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin); + }; + + return [ + plugin, + localGroups, + globalGroups, + onChangeGroups, + onChangeGroupsGlobal, + onChangeFilter, + onChangeFilterGlobal, + viz, + setViz + ]; +} + +class StylePane extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$1, create_fragment$1, safe_not_equal, { viz: 7, plugin: 0, setViz: 8 }); + } + + get setViz() { + return this.$$.ctx[8]; + } +} + +class JugglPane extends obsidian.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.activeViz = null; + this.changeRef = null; + this.plugin = plugin; + const view = this; + this.registerEvent(this.plugin.app.workspace.on('active-leaf-change', (leaf) => { + if (this.changeRef) { + this.activeViz.offref(this.changeRef); + this.changeRef = null; + } + if (leaf) { + if (leaf.view.getViewType() === JUGGL_VIEW_TYPE) { + const activeViz = leaf.view.juggl; + this.changeRef = activeViz.on('elementsChange', () => { + view.onActiveVizChange(); + }); + if (activeViz === this.activeViz) { + return; + } + this.activeViz = activeViz; + } + else if (!(leaf.view instanceof JugglPane)) { + this.activeViz = null; + } + } + else { + this.activeViz = null; + } + this.onActiveVizChange(); + })); + } + setViz(viz) { + this.activeViz = viz; + this.onActiveVizChange(); + } +} +class JugglNodesPane extends JugglPane { + constructor(leaf, plugin) { + super(leaf, plugin); + this.icon = 'ag-node-list'; + } + onload() { + super.onload(); + this.pane = new NodesPane({ target: this.contentEl }); + } + getDisplayText() { + return 'Juggl nodes'; + } + getViewType() { + return JUGGL_NODES_VIEW_TYPE; + } + onActiveVizChange() { + if (this.pane) { + this.pane.setViz.bind(this.pane)(this.activeViz); + } + } +} +class JugglStylePane extends JugglPane { + constructor(leaf, plugin) { + super(leaf, plugin); + this.icon = 'ag-style'; + } + onload() { + super.onload(); + this.pane = new StylePane({ target: this.contentEl, props: { + plugin: this.plugin, + } }); + } + getDisplayText() { + return 'Juggl style'; + } + getViewType() { + return JUGGL_STYLE_VIEW_TYPE; + } + onActiveVizChange() { + if (this.pane) { + this.pane.setViz.bind(this.pane)(this.activeViz); + } + } +} + +class WorkspaceManager extends obsidian.Component { + constructor(plugin) { + super(); + this.graphs = []; + this.plugin = plugin; + this.adapter = this.plugin.app.vault.adapter; + } + async onload() { + super.onload(); + try { + await this.adapter.mkdir(DATA_FOLDER(this.plugin.vault)); + const path = require('path'); + this.graphs = (await this.adapter.list(DATA_FOLDER(this.plugin.vault))).folders.map((s) => path.basename(s)); + } + catch (e) { + console.log(e); + } + } + async saveGraph(name, viz) { + try { + const folder = DATA_FOLDER(viz.vault) + name; + await this.adapter.mkdir(folder); + const graphJson = viz.viz.json(); + await this.adapter.write(folder + '/graph.json', JSON.stringify(graphJson)); + const settings = viz.settings; + await this.adapter.write(folder + '/settings.json', JSON.stringify(settings)); + if (!this.graphs.contains(name)) { + this.graphs.push(name); + } + } + catch (e) { + console.log(e); + } + } + async loadGraph(name, viz) { + try { + const folder = DATA_FOLDER(viz.vault) + name; + const graph = JSON.parse(await this.adapter.read(folder + '/graph.json')); + const settings = JSON.parse(await this.adapter.read(folder + '/settings.json')); + viz.viz.json(graph); + viz.settings = settings; + // After loading in the graph, we have to validate with the datastores that the data is still up-to-date: + // This could create race-condition conflicts possibly when a node updates in the meantime. + const nodes = viz.viz.nodes(); + for (let i = 1; i < nodes.length; i++) { + if (!nodes[i]) { + continue; + } + const vId = VizId.fromNode(nodes[i]); + for (const store of viz.datastores.dataStores) { + if (store.storeId() === vId.storeId) { + await store.refreshNode(vId, viz); + break; + } + } + } + } + catch (e) { + console.log(e); + } + } + ; + async deleteGraph(name, view) { + try { + await this.adapter.rmdir(DATA_FOLDER + name, true); + this.graphs.remove(name); + } + catch (e) { + console.log(e); + } + } +} + +/* src/ui/settings/GlobalGraphModal.svelte generated by Svelte v3.45.0 */ + +function create_fragment(ctx) { + let t0; + let br; + let t1; + let button0; + let t3; + let button1; + let mounted; + let dispose; + + return { + c() { + t0 = text("Warning: Juggl is not optimized for large graphs. We advise not to use the global graph if your vault\ncontains more than 250 notes to prevent Obsidian from freezing. "); + br = element$1("br"); + t1 = space(); + button0 = element$1("button"); + button0.textContent = "Cancel"; + t3 = space(); + button1 = element$1("button"); + button1.textContent = "Understood, continue"; + attr(button0, "class", "mod-cta"); + attr(button1, "class", "mod-cta"); + }, + m(target, anchor) { + insert(target, t0, anchor); + insert(target, br, anchor); + insert(target, t1, anchor); + insert(target, button0, anchor); + insert(target, t3, anchor); + insert(target, button1, anchor); + + if (!mounted) { + dispose = [ + listen(button0, "click", function () { + if (is_function(/*cancelCallback*/ ctx[0])) /*cancelCallback*/ ctx[0].apply(this, arguments); + }), + listen(button1, "click", function () { + if (is_function(/*continueCallback*/ ctx[1])) /*continueCallback*/ ctx[1].apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + }, + i: noop$2, + o: noop$2, + d(detaching) { + if (detaching) detach(t0); + if (detaching) detach(br); + if (detaching) detach(t1); + if (detaching) detach(button0); + if (detaching) detach(t3); + if (detaching) detach(button1); + mounted = false; + run_all(dispose); + } + }; +} + +function instance($$self, $$props, $$invalidate) { + let { cancelCallback } = $$props; + let { continueCallback } = $$props; + + $$self.$$set = $$props => { + if ('cancelCallback' in $$props) $$invalidate(0, cancelCallback = $$props.cancelCallback); + if ('continueCallback' in $$props) $$invalidate(1, continueCallback = $$props.continueCallback); + }; + + return [cancelCallback, continueCallback]; +} + +class GlobalGraphModal extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance, create_fragment, safe_not_equal, { cancelCallback: 0, continueCallback: 1 }); + } +} + +class GlobalWarningModal extends obsidian.Modal { + constructor(app, callback) { + super(app); + const modal = this; + new GlobalGraphModal({ target: this.modalEl, props: { + cancelCallback: this.close.bind(modal), + continueCallback: callback, + } }); + } +} + +// I got this from https://github.com/SilentVoid13/Templater/blob/master/src/fuzzy_suggester.ts +// const STATUS_OFFLINE = 'Neo4j stream offline'; +class JugglPlugin extends obsidian.Plugin { + constructor() { + super(...arguments); + this.coreStores = {}; + this.stores = []; + } + async onload() { + super.onload(); + console.log('Loading Juggl'); + cytoscapeNavigator(cytoscape_cjs); + cytoscape_cjs.use(popper); + cytoscape_cjs.use(cola); + cytoscape_cjs.use(dagre); + cytoscape_cjs.use(avsdf); + cytoscape_cjs.use(d3Force); + cytoscape_cjs.use(register); + cytoscape_cjs.use(cxtmenu); + addIcons(); + this.vault = this.app.vault; + this.metadata = this.app.metadataCache; + this.path = this.vault.getRoot().path; + const obsidianStore = new ObsidianStore(this); + this.addChild(obsidianStore); + this.workspaceManager = new WorkspaceManager(this); + this.addChild(this.workspaceManager); + this.registerCoreStore(obsidianStore, OBSIDIAN_STORE_NAME); + DefaultJugglSettings.globalStyleGroups = genStyleGroups(this); + this.settings = Object.assign({}, DefaultJugglSettings, await this.loadData()); + this.settings.globalStyleGroups = this.settings.globalStyleGroups.map((g) => Object.assign({}, emptyStyleGroup, g)); + this.settings.graphSettings = Object.assign({}, DefaultJugglSettings.graphSettings, this.settings.graphSettings); + this.settings.embedSettings = Object.assign({}, DefaultJugglSettings.embedSettings, this.settings.embedSettings); + this.addCommand({ + id: 'open-vis', + name: 'Open local graph of note', + callback: () => { + const file = this.app.workspace.getActiveFile(); + const name = file.name; + this.openLocalGraph(name); + }, + }); + this.addCommand({ + id: 'open-vis-global', + name: 'Open global graph', + callback: () => { + this.openGlobalGraph(); + }, + }); + this.addSettingTab(new JugglGraphSettingsTab(this.app, this)); + this.registerEvent(this.app.workspace.on('file-menu', (menu, file) => { + if (!file) { + return; + } + menu.addItem((item) => { + item.setTitle('Open Juggl').setIcon('dot-network') + .onClick((evt) => { + if (file.extension === 'md') { + this.openLocalGraph(file.basename); + } + else { + this.openLocalGraph(file.name); + } + }); + }); + })); + this.registerMarkdownCodeBlockProcessor('juggl', async (src, el, context) => { + // timeout is needed to ensure the div is added to the window. The graph will only load if + // it is attached. This will also prevent any annoying hickups while looading the graph. + setTimeout(async () => { + const parsed = obsidian.parseYaml(src); + try { + const settings = Object.assign({}, this.settings.embedSettings, parsed); + if (!(LAYOUTS.contains(settings.layout))) { + throw new Error(`Invalid layout. Choose one from ${LAYOUTS}`); + } + const stores = { + dataStores: [this.coreStores[settings.coreStore]].concat(this.stores), + coreStore: this.coreStores[settings.coreStore], + }; + el.style.width = settings.width; + el.style.height = settings.height; + if (Object.keys(parsed).contains('local')) { + this.addChild(new Juggl(el, this, stores, settings, [parsed.local])); + } + else if (Object.keys(parsed).contains('workspace')) { + const graph = new Juggl(el, this, stores, settings, null); + if (!this.workspaceManager.graphs.contains(parsed.workspace)) { + throw new Error('Did not recognize workspace. Did you misspell its name?'); + } + this.addChild(graph); + await this.workspaceManager.loadGraph(parsed.workspace, graph); + } + else if (Object.keys(parsed).contains('oql')) { + // @ts-ignore + if ('obsidian-query-language' in this.app.plugins.plugins) { + // @ts-ignore + const searchResults = await this.app.plugins.plugins['obsidian-query-language'].search(parsed.oql); + settings.expandInitial = false; + this.addChild(new Juggl(el, this, stores, settings, searchResults.map((file) => file.title))); + } + else { + throw new Error('The Obsidian Query Language plugin isn\'t loaded, so cannot query using oql!'); + } + } + else { + throw new Error('Invalid query. Specify either the local property or the workspace property.'); + } + } + catch (error) { + // taken from https://github.com/jplattel/obsidian-query-language/blob/main/src/renderer.ts + const errorElement = document.createElement('div'); + errorElement.addClass('juggl-error'); + errorElement.innerText = error.message; + el.appendChild(errorElement); + } + }, 200); + }); + const plugin = this; + // Adapted from https://github.com/liamcain/obsidian-calendar-plugin/blob/master/src/main.ts + this.registerView(JUGGL_NODES_VIEW_TYPE, (leaf) => new JugglNodesPane(leaf, plugin)); + this.registerView(JUGGL_STYLE_VIEW_TYPE, (leaf) => new JugglStylePane(leaf, plugin)); + const createNodesPane = function () { + if (plugin.app.workspace.getLeavesOfType(JUGGL_NODES_VIEW_TYPE).length === 0) { + const leaf = plugin.app.workspace.getRightLeaf(false); + leaf.setViewState({ type: JUGGL_NODES_VIEW_TYPE }); + } // + }; + const createStylePane = function () { + if (plugin.app.workspace.getLeavesOfType(JUGGL_STYLE_VIEW_TYPE).length === 0) { + const leaf = plugin.app.workspace.getRightLeaf(false); + leaf.setViewState({ type: JUGGL_STYLE_VIEW_TYPE }); + } + }; + this.app.workspace.onLayoutReady(createNodesPane); + this.app.workspace.onLayoutReady(createStylePane); + this.addCommand({ + id: 'show-nodes-pane', + name: 'Open Nodes Pane', + checkCallback: (checking) => { + if (checking) { + return (this.app.workspace.getLeavesOfType(JUGGL_NODES_VIEW_TYPE).length === 0); + } + createNodesPane(); + }, + }); + this.addCommand({ + id: 'show-style-pane', + name: 'Open Style Pane', + checkCallback: (checking) => { + if (checking) { + return (this.app.workspace.getLeavesOfType(JUGGL_STYLE_VIEW_TYPE).length === 0); + } + createStylePane(); + }, + }); + const sheetPath = STYLESHEET_PATH(this.vault); + // @ts-ignore + this.registerEvent(this.vault.on('raw', (file) => { + // @ts-ignore + if (file === sheetPath) { + console.log(`Updating stylesheet from ${sheetPath}`); + for (const view of this.activeGraphs()) { + view.updateStylesheet().then(); + } + } + })); + this.setGlobalIcon(); + this.addChild(new ImageServer(this)); + } + setGlobalIcon() { + if (this.ribbonIcon) { + this.ribbonIcon.detach(); + } + if (this.settings.globalGraphRibbon) { + this.ribbonIcon = this.addRibbonIcon('ag-concentric', 'Juggl global graph', () => { + this.openGlobalGraph(); + }); + } + } + async openFileFromNode(node, newLeaf = false) { + const id = VizId.fromNode(node); + if (!(id.storeId === 'core')) { + return null; + } + let file = this.app.metadataCache.getFirstLinkpathDest(id.id, ''); + if (file) { + await this.openFile(file); + } + else { + // create dangling file + // todo: add default folder + const filename = id.id + '.md'; + file = await this.vault.create(filename, ''); + await this.openFile(file); + } + return file; + } + async openFile(file, newLeaf = false) { + await this.app.workspace.getLeaf(newLeaf).openFile(file); + } + async openLocalGraph(name) { + const leaf = this.app.workspace.splitActiveLeaf(this.settings.splitDirection); + // const query = this.localNeighborhoodCypher(name); + const neovisView = new JugglView(leaf, this.settings.graphSettings, this, [name]); + await leaf.open(neovisView); + } + async openGlobalGraph() { + const leaf = this.app.workspace.getLeaf(false); + // const query = this.localNeighborhoodCypher(name); + const names = this.app.vault.getFiles().map((f) => f.extension === 'md' ? f.basename : f.name); + if (names.length > 250) { + const modal = new GlobalWarningModal(this.app, async () => { + const neovisView = new JugglView(leaf, this.settings.globalGraphSettings, this, names); + await leaf.open(neovisView); + modal.close(); + }); + modal.open(); + } + else { + const neovisView = new JugglView(leaf, this.settings.globalGraphSettings, this, names); + await leaf.open(neovisView); + } + } + activeGraphs() { + // TODO: This is not a great method, no way to find back the inline graphs! + return this.app.workspace + .getLeavesOfType(JUGGL_VIEW_TYPE) + .map((l) => l.view.juggl); + } + async onunload() { + super.onunload(); + console.log('Unloading Juggl'); + this.app.workspace.detachLeavesOfType(JUGGL_NODES_VIEW_TYPE); + this.app.workspace.detachLeavesOfType(JUGGL_STYLE_VIEW_TYPE); + if (this.watcher) { + this.watcher.close(); + } + } + registerStore(store) { + this.stores.push(store); + } + removeStore(store) { + this.stores.remove(store); + } + registerCoreStore(store, name) { + if (!(store.storeId() === 'core')) { + throw new Error('Can only register IDataStores as core if their storeId is core'); + } + this.coreStores[name] = store; + } + createJuggl(el, settings, datastores, initialNodes) { + // Public constructor for Juggl instances. Used for the API. + if (!settings) { + settings = Object.assign({}, DefaultJugglSettings.embedSettings); + if (initialNodes) { + settings.expandInitial = false; + } + } + if (!datastores) { + datastores = this.defaultStores(); + } + return new Juggl(el, this, datastores, settings, initialNodes); + } + defaultStores() { + return { + dataStores: [this.coreStores[OBSIDIAN_STORE_NAME]].concat(this.stores), + coreStore: this.coreStores[OBSIDIAN_STORE_NAME], + }; + } +} +// Match around [[ and ]], and ensure content isn't a wikilnk closure +// This doesn't explicitly parse aliases. +JugglPlugin.CAT_DANGLING = 'dangling'; + +module.exports = JugglPlugin; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsic3JjL2V2ZW50cy50cyIsInNyYy9jb25zdGFudHMudHMiLCJub2RlX21vZHVsZXMvanVnZ2wtYXBpL2Rpc3QvaW5kZXgubWpzIiwic3JjL29ic2lkaWFuLXN0b3JlLnRzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9pbnRlcm5hbC9pbmRleC5tanMiLCJzcmMvdml6L3N0eWxlc2hlZXQudHMiLCJzcmMvdWkvc2V0dGluZ3MvQXBwZWFyYW5jZVNldHRpbmdzLnN2ZWx0ZSIsInNyYy91aS9Lb0ZpLnN2ZWx0ZSIsInNyYy9zZXR0aW5ncy50cyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2guZGVib3VuY2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaGVhcC9saWIvaGVhcC5qcyIsIm5vZGVfbW9kdWxlcy9oZWFwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2N5dG9zY2FwZS9kaXN0L2N5dG9zY2FwZS5janMuanMiLCJub2RlX21vZHVsZXMvQG1kaS9qcy9tZGkuanMiLCJzcmMvdWkvaWNvbnMudHMiLCJzcmMvdWkvdG9vbGJhci9Ub29sYmFyQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS9oZWxwLXZpZXcudHMiLCJzcmMvdWkvdG9vbGJhci9IZWxwQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS90b29sYmFyL1Rvb2xiYXIuc3ZlbHRlIiwic3JjL3Zpei9sYXlvdXQtc2V0dGluZ3MudHMiLCJzcmMvdWkvU2F2ZVdvcmtzcGFjZUl0ZW0uc3ZlbHRlIiwic3JjL3VpL1NhdmVXb3Jrc3BhY2VzLnN2ZWx0ZSIsInNyYy91aS93b3Jrc3BhY2UtbW9kYWwudHMiLCJzcmMvdml6L3dvcmtzcGFjZXMvd29ya3NwYWNlLW1vZGUudHMiLCJzcmMvdWkvdG9vbGJhci9Ub29sYmFyTG9jYWwuc3ZlbHRlIiwic3JjL3Zpei9sb2NhbC1tb2RlLnRzIiwibm9kZV9tb2R1bGVzL3NlYXJjaC1xdWVyeS1wYXJzZXIvbGliL3NlYXJjaC1xdWVyeS1wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvc2VhcmNoLXF1ZXJ5LXBhcnNlci9pbmRleC5qcyIsInNyYy92aXovcXVlcnktYnVpbGRlci50cyIsInNyYy92aXovdmlzdWFsaXphdGlvbi50cyIsInNyYy9pbWFnZS1zZXJ2ZXIudHMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLW5hdmlnYXRvci9jeXRvc2NhcGUtbmF2aWdhdG9yLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdW5pcXVlQnkuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9jcmVhdGVQb3BwZXIuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLXBvcHBlci9jeXRvc2NhcGUtcG9wcGVyLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvcG93ZXJncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xpbmtsZW5ndGhzLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZGVzY2VudC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL3Zwc2MuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9yYnRyZWUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9yZWN0YW5nbGUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9wcXVldWUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9zaG9ydGVzdHBhdGhzLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZ2VvbS5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2hhbmRsZWRpc2Nvbm5lY3RlZC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xheW91dC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2FkYXB0b3IuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9kM3YzYWRhcHRvci5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2QzdjRhZGFwdG9yLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZDNhZGFwdG9yLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZ3JpZHJvdXRlci5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xheW91dDNkLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvYmF0Y2guanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2N5dG9zY2FwZS1jb2xhL2N5dG9zY2FwZS1jb2xhLmpzIiwibm9kZV9tb2R1bGVzL2xheW91dC1iYXNlL2xheW91dC1iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2F2c2RmLWJhc2UvYXZzZGYtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtYXZzZGYvY3l0b3NjYXBlLWF2c2RmLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gva2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUJ5VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNsb25lLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VFYWNoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaWx0ZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eURlZXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUl0ZXJhdGVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9oYXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzVW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlSZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVkdWNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNjaWlTaXplLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzVW5pY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVTaXplLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nU2l6ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvc2l6ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNGbGF0dGVuYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXRUb1N0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaW5kSW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2YuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3VuaW9uLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9sb2Rhc2guanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2dyYXBoLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2RhdGEvcHJpb3JpdHktcXVldWUuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2RpamtzdHJhLWFsbC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3Rhcmphbi5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvaXMtYWN5Y2xpYy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2Rmcy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3Bvc3RvcmRlci5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByZW9yZGVyLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvcHJpbS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmFwaGxpYi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2RlZmF1bHRzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9maW5kLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9mb3JJbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwVmFsdWVzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUV4dHJlbXVtLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9tYXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL21pbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWluQnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9yYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTb3J0QnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlQXNjZW5kaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU9yZGVyQnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcXVlSWQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlWmlwT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC96aXBPYmplY3QuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvZGF0YS9saXN0LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmVlZHktZmFzLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9hY3ljbGljLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ub3JtYWxpemUuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9mZWFzaWJsZS10cmVlLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9yYW5rL25ldHdvcmstc2ltcGxleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcGFyZW50LWR1bW15LWNoYWlucy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvbmVzdGluZy1ncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2luaXQtb3JkZXIuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2Nyb3NzLWNvdW50LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9iYXJ5Y2VudGVyLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9yZXNvbHZlLWNvbmZsaWN0cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvc29ydC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvc29ydC1zdWJncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL3Bvc2l0aW9uL2JrLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wb3NpdGlvbi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvbGF5b3V0LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtZGFncmUvY3l0b3NjYXBlLWRhZ3JlLmpzIiwibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL2Rpc3QvZDMtcXVhZHRyZWUuanMiLCJub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvZGlzdC9kMy1kaXNwYXRjaC5qcyIsIm5vZGVfbW9kdWxlcy9kMy10aW1lci9kaXN0L2QzLXRpbWVyLmpzIiwibm9kZV9tb2R1bGVzL2QzLWZvcmNlL2Rpc3QvZDMtZm9yY2UuanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLWQzLWZvcmNlL2N5dG9zY2FwZS1kMy1mb3JjZS5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtZGJsY2xpY2svZGlzdC9pbmRleC5lc20uanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLWN4dG1lbnUvY3l0b3NjYXBlLWN4dG1lbnUuanMiLCJzcmMvdml6L2p1Z2dsLXZpZXcudHMiLCJzcmMvcGFuZS9Ob2Rlc0xpc3Quc3ZlbHRlIiwic3JjL3BhbmUvTm9kZXNQYW5lLnN2ZWx0ZSIsInNyYy9wYW5lL2ljb24tbW9kYWwudHMiLCJzcmMvcGFuZS9TdHlsZUdyb3Vwcy5zdmVsdGUiLCJzcmMvcGFuZS9TdHlsZVBhbmUuc3ZlbHRlIiwic3JjL3BhbmUvdmlldy50cyIsInNyYy92aXovd29ya3NwYWNlcy93b3Jrc3BhY2UtbWFuYWdlci50cyIsInNyYy91aS9zZXR0aW5ncy9HbG9iYWxHcmFwaE1vZGFsLnN2ZWx0ZSIsInNyYy91aS9zZXR0aW5ncy9nbG9iYWwtZ3JhcGgtbW9kYWwudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudHMgfSBmcm9tICdvYnNpZGlhbic7XG5leHBvcnQgY2xhc3MgRGF0YVN0b3JlRXZlbnRzIGV4dGVuZHMgRXZlbnRzIHtcbiAgICB0cmlnZ2VyKG5hbWUsIC4uLmRhdGEpIHtcbiAgICAgICAgc3VwZXIudHJpZ2dlcihuYW1lLCAuLi5kYXRhKTtcbiAgICB9XG4gICAgb24obmFtZSwgY2FsbGJhY2ssIGN0eCkge1xuICAgICAgICByZXR1cm4gc3VwZXIub24obmFtZSwgY2FsbGJhY2ssIGN0eCk7XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IENMQVNTX1BJTk5FRCA9ICdwaW5uZWQnO1xuZXhwb3J0IGNvbnN0IENMQVNTX0VYUEFOREVEID0gJ2V4cGFuZGVkJztcbmV4cG9ydCBjb25zdCBDTEFTU19BQ1RJVkVfTk9ERSA9ICdhY3RpdmUtbm9kZSc7XG5leHBvcnQgY29uc3QgQ0xBU1NfSU5BQ1RJVkVfTk9ERSA9ICdpbmFjdGl2ZS1ub2RlJztcbmV4cG9ydCBjb25zdCBDTEFTU19DT05ORUNURURfQUNUSVZFX05PREUgPSAnY29ubmVjdGVkLWFjdGl2ZS1ub2RlJztcbmV4cG9ydCBjb25zdCBDTEFTU19IT1ZFUiA9ICdob3Zlcic7XG5leHBvcnQgY29uc3QgQ0xBU1NfVU5IT1ZFUiA9ICd1bmhvdmVyJztcbmV4cG9ydCBjb25zdCBDTEFTU19QUk9URUNURUQgPSAncHJvdGVjdGVkJztcbmV4cG9ydCBjb25zdCBDTEFTU19DT05ORUNURURfSE9WRVIgPSAnY29ubmVjdGVkLWhvdmVyJztcbmV4cG9ydCBjb25zdCBDTEFTU19GSUxURVJFRCA9ICdmaWx0ZXJlZCc7XG5leHBvcnQgY29uc3QgQ0xBU1NfSEFSRF9GSUxURVJFRCA9ICdoYXJkLWZpbHRlcmVkJztcbmV4cG9ydCBjb25zdCBDTEFTU0VTID0gW0NMQVNTX1BJTk5FRCwgQ0xBU1NfRVhQQU5ERUQsIENMQVNTX0FDVElWRV9OT0RFLFxuICAgIENMQVNTX0lOQUNUSVZFX05PREUsIENMQVNTX0NPTk5FQ1RFRF9BQ1RJVkVfTk9ERSwgQ0xBU1NfSE9WRVIsIENMQVNTX1VOSE9WRVIsXG4gICAgQ0xBU1NfQ09OTkVDVEVEX0hPVkVSLCBDTEFTU19QUk9URUNURUQsIENMQVNTX0ZJTFRFUkVELCBDTEFTU19IQVJEX0ZJTFRFUkVEXTtcbmV4cG9ydCBjb25zdCBWSUVXUE9SVF9BTklNQVRJT05fVElNRSA9IDI1MDtcbmV4cG9ydCBjb25zdCBMQVlPVVRfQU5JTUFUSU9OX1RJTUUgPSAxNTAwO1xuZXhwb3J0IGNvbnN0IERJU0NSRVRFX0xBWU9VVF9BTklNQVRJT05fVElNRSA9IDUwMDtcbmV4cG9ydCBjb25zdCBESVNDUkVURV9TUEFDSU5HX0ZBQ1RPUiA9IDAuNTtcbmV4cG9ydCBjb25zdCBERUJPVU5DRV9GT0xMT1cgPSA1MDA7XG5leHBvcnQgY29uc3QgREVCT1VOQ0VfTEFZT1VUID0gMjMwMDtcbmV4cG9ydCBjb25zdCBNSU5fTk9ERV9TSVpFID0gNTtcbmV4cG9ydCBjb25zdCBNQVhfTk9ERV9TSVpFID0gMzU7XG5leHBvcnQgY29uc3QgTUlOX0ZPTlRfU0laRSA9IDU7XG5leHBvcnQgY29uc3QgTUFYX0ZPTlRfU0laRSA9IDExO1xuZXhwb3J0IGNvbnN0IE1JTl9URVhUX1dJRFRIID0gNjU7XG5leHBvcnQgY29uc3QgTUFYX1RFWFRfV0lEVEggPSAxMDA7XG5leHBvcnQgY29uc3QgSlVHR0xfVklFV19UWVBFID0gJ2p1Z2dsX3ZpZXcnO1xuZXhwb3J0IGNvbnN0IEpVR0dMX05PREVTX1ZJRVdfVFlQRSA9ICdqdWdnbF9ub2Rlcyc7XG5leHBvcnQgY29uc3QgSlVHR0xfU1RZTEVfVklFV19UWVBFID0gJ2p1Z2dsX3N0eWxlJztcbmV4cG9ydCBjb25zdCBKVUdHTF9IRUxQX1ZJRVcgPSAnanVnZ2wtaGVscCc7XG5leHBvcnQgY29uc3QgREFUQV9GT0xERVIgPSBmdW5jdGlvbiAodmF1bHQpIHtcbiAgICByZXR1cm4gYCR7dmF1bHQuY29uZmlnRGlyfS9wbHVnaW5zL2p1Z2dsL2A7XG59O1xuIiwiaW1wb3J0IHsgcGFyc2VGcm9udE1hdHRlclRhZ3MsIHBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheSB9IGZyb20gJ29ic2lkaWFuJztcblxuY29uc3QgQ0FUX0RBTkdMSU5HID0gJ2RhbmdsaW5nJztcbmNvbnN0IENPUkVfU1RPUkVfSUQgPSAnY29yZSc7XG5jbGFzcyBWaXpJZCB7XG4gICAgY29uc3RydWN0b3IoaWQsIHN0b3JlSWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnN0b3JlSWQgPSBzdG9yZUlkO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc3RvcmVJZH06JHt0aGlzLmlkfWA7XG4gICAgfVxuICAgIHRvSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tSWQoaWQpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSBpZC5zcGxpdCgnOicpO1xuICAgICAgICBjb25zdCBzdG9yZUlkID0gc3BsaXRbMF07XG4gICAgICAgIGNvbnN0IF9pZCA9IHNwbGl0LnNsaWNlKDEpLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChfaWQsIHN0b3JlSWQpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gVml6SWQuZnJvbUlkKG5vZGUuaWQoKSk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tTm9kZXMobm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIG5vZGVzLm1hcCgobikgPT4gVml6SWQuZnJvbU5vZGUobikpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUZpbGUoZmlsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFZpeklkKGZpbGUubmFtZSwgJ2NvcmUnKTtcbiAgICB9XG4gICAgc3RhdGljIHRvSWQoaWQsIHN0b3JlSWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChpZCwgc3RvcmVJZCkudG9JZCgpO1xuICAgIH1cbn1cbmNvbnN0IF9wYXJzZVRhZ3MgPSBmdW5jdGlvbiAodGFncykge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4udGFnc1xuICAgICAgICAubWFwKCh0YWcpID0+IHtcbiAgICAgICAgdGFnID0gdGFnLnNsaWNlKDEpO1xuICAgICAgICBjb25zdCBoU3BsaXQgPSB0YWcuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgdGFncyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgaW4gaFNwbGl0KSB7XG4gICAgICAgICAgICBjb25zdCBoVGFnID0gaFNwbGl0LnNsaWNlKDAsIHBhcnNlSW50KGkpICsgMSkuam9pbignLScpO1xuICAgICAgICAgICAgdGFncy5wdXNoKGB0YWctJHtoVGFnfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdzO1xuICAgIH0pKTtcbn07XG5jb25zdCBnZXRDbGFzc2VzID0gZnVuY3Rpb24gKGZpbGUsIG1ldGFkYXRhQ2FjaGUpIHtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgICAgIGlmIChbJ3BuZycsICdqcGcnLCAnanBlZycsICdnaWYnLCAnYm1wJywgJ3N2ZycsICd0aWZmJ10uY29udGFpbnMoZmlsZS5leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ2ltYWdlJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoWydtcDMnLCAnd2VibScsICd3YXYnLCAnbTRhJywgJ29nZycsICczZ3AnLCAnZmxhYyddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdhdWRpbycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFsnbXA0JywgJ3dlYm0nLCAnb2d2J10uY29udGFpbnMoZmlsZS5leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3ZpZGVvJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlsZS5leHRlbnNpb24gPT09ICdwZGYnKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3BkZicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgcmVwbGFjZWQgYnkgdGhlICdwYXRoJyBkYXRhIGF0dHJpYnV0ZS5cbiAgICAgICAgLy8gaWYgKCEoZmlsZS5wYXJlbnQubmFtZSA9PT0gJy8nIHx8IGZpbGUucGFyZW50Lm5hbWUgPT09ICcnKSkge1xuICAgICAgICAvLyAgIGNsYXNzZXMucHVzaChgZm9sZGVyLSR7ZmlsZS5wYXJlbnQubmFtZVxuICAgICAgICAvLyAgICAgICAucmVwbGFjZSgnICcsICdfJyl9YCk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgY2xhc3Nlcy5wdXNoKCdyb290Jyk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKGZpbGUuZXh0ZW5zaW9uID09PSAnbWQnKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ25vdGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gbWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICAgICAgICBpZiAoY2FjaGU/LmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCdpbWFnZScgaW4gY2FjaGUuZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpbWFnZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJ3RhZ3MnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBwYXJzZUZyb250TWF0dGVyVGFncyhjYWNoZS5mcm9udG1hdHRlcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uX3BhcnNlVGFncyh0YWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCdjc3NjbGFzcycgaW4gY2FjaGUuZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xhenplcyA9IHBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheShjYWNoZS5mcm9udG1hdHRlciwgJ2Nzc2NsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGF6emVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uY2xhenplcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FjaGU/LnRhZ3MpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uX3BhcnNlVGFncyhjYWNoZS50YWdzLm1hcCgodCkgPT4gdC50YWcpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ2ZpbGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG4gICAgcmV0dXJuIFtDQVRfREFOR0xJTkddO1xufTtcbmNvbnN0IG5vZGVGcm9tRmlsZSA9IGFzeW5jIGZ1bmN0aW9uIChmaWxlLCBwbHVnaW4sIHNldHRpbmdzLCBpZCkge1xuICAgIGlmICghaWQpIHtcbiAgICAgICAgaWQgPSBWaXpJZC50b0lkKGZpbGUubmFtZSwgQ09SRV9TVE9SRV9JRCk7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcbiAgICBjb25zdCBuYW1lID0gZmlsZS5leHRlbnNpb24gPT09ICdtZCcgPyBmaWxlLmJhc2VuYW1lIDogZmlsZS5uYW1lO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBnZXRDbGFzc2VzKGZpbGUsIHBsdWdpbi5hcHAubWV0YWRhdGFDYWNoZSkuam9pbignICcpO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgfTtcbiAgICBpZiAoWydwbmcnLCAnanBnJywgJ2pwZWcnLCAnZ2lmJywgJ2JtcCcsICdzdmcnLCAndGlmZiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZGF0YVsncmVzb3VyY2VfdXJsJ10gPSBgaHR0cDovL2xvY2FsaG9zdDoke3BsdWdpbi5zZXR0aW5ncy5pbWdTZXJ2ZXJQb3J0fS8ke2VuY29kZVVSSShmaWxlLnBhdGgpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggeyB9XG4gICAgfVxuICAgIGlmIChzZXR0aW5ncy5yZWFkQ29udGVudCAmJiBmaWxlLmV4dGVuc2lvbiA9PSAnbWQnKSB7XG4gICAgICAgIGRhdGFbJ2NvbnRlbnQnXSA9IGF3YWl0IHBsdWdpbi5hcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlKTtcbiAgICB9XG4gICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBjYWNoZT8uZnJvbnRtYXR0ZXI7XG4gICAgaWYgKGZyb250bWF0dGVyKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZyb250bWF0dGVyKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBpZiAoIShrID09PSAncG9zaXRpb24nKSkge1xuICAgICAgICAgICAgICAgIGlmIChrID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlRmllbGQgPSBmcm9udG1hdHRlcltrXTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHVybC4gdGhyb3dzIGVycm9yIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChpbWFnZUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBpbWFnZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBgaHR0cDovL2xvY2FsaG9zdDoke3BsdWdpbi5zZXR0aW5ncy5pbWdTZXJ2ZXJQb3J0fS8ke2VuY29kZVVSSShpbWFnZUZpZWxkKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBmcm9udG1hdHRlcltrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBncm91cDogJ25vZGVzJyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICB9O1xufTtcbmNvbnN0IG5vZGVEYW5nbGluZyA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdub2RlcycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGlkOiBWaXpJZC50b0lkKHBhdGgsIENPUkVfU1RPUkVfSUQpLFxuICAgICAgICAgICAgbmFtZTogcGF0aCxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczogJ2RhbmdsaW5nJyxcbiAgICB9O1xufTtcbmNvbnN0IHdpa2lsaW5rUmVnZXggPSAnXFxcXFtcXFxcWyhbXlxcXFxdXFxcXHJcXFxcbl0rPylcXFxcXVxcXFxdJztcbmNvbnN0IG5hbWVSZWdleCA9ICdbXlxcXFxXXFxcXGRdXFxcXHcqJztcbmNvbnN0IHJlZ2V4RXNjYXBlID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuY29uc3QgcGFyc2VUeXBlZExpbmsgPSBmdW5jdGlvbiAobGluaywgbGluZSwgdHlwZWRMaW5rUHJlZml4KSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBzb21ldGhpbmcgc3BlY2lmaWMgSSB1c2UsIGJ1dCBzaG91bGRuJ3Qga2VlcCBiZWluZyBpbiB0aGlzIHJlcG8uXG4gICAgY29uc3QgcmVnZXhQdWJsaXNoZWRJbiA9IG5ldyBSZWdFeHAoYF4ke3JlZ2V4RXNjYXBlKHR5cGVkTGlua1ByZWZpeCl9IChwdWJsaXNoZWRJbikgKFxcXFxkXFxcXGRcXFxcZFxcXFxkKSAoJHt3aWtpbGlua1JlZ2V4fSw/ICopKyRgKTtcbiAgICBjb25zdCBtYXRjaFBJID0gcmVnZXhQdWJsaXNoZWRJbi5leGVjKGxpbmUpO1xuICAgIGlmICghKG1hdGNoUEkgPT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGFzczogJ3R5cGUtcHVibGlzaGVkSW4nLFxuICAgICAgICAgICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHllYXI6IG1hdGNoUElbMl0sXG4gICAgICAgICAgICAgICAgY29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3B1Ymxpc2hlZEluJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIEludHVpdGlvbjogU3RhcnQgd2l0aCB0aGUgdHlwZWQgbGluayBwcmVmaXguIFRoZW4gYSBuZW80aiBuYW1lIChuYW1lUmVnZXgpLlxuICAgIC8vIFRoZW4gb25lIG9yIG1vcmUgb2YgdGhlIHdpa2lsaW5rIGdyb3VwOiB3aWtpbGluayByZWdleCBzZXBhcmF0ZWQgYnkgb3B0aW9uYWwgY29tbWEgYW5kIG11bHRpcGxlIHNwYWNlc1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cmVnZXhFc2NhcGUodHlwZWRMaW5rUHJlZml4KX0gKCR7bmFtZVJlZ2V4fSkgKCR7d2lraWxpbmtSZWdleH0sPyAqKSskYCk7XG4gICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpO1xuICAgIGNvbnN0IHNwbGl0TGluayA9IGxpbmsub3JpZ2luYWwuc3BsaXQoJ3wnKTtcbiAgICBsZXQgYWxpYXMgPSBudWxsO1xuICAgIGlmIChzcGxpdExpbmsubGVuZ3RoID4gMSkge1xuICAgICAgICBhbGlhcyA9IHNwbGl0TGluay5zbGljZSgxKS5qb2luKCkuc2xpY2UoMCwgLTIpO1xuICAgIH1cbiAgICBpZiAoIShtYXRjaCA9PT0gbnVsbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzOiBgdHlwZS0ke21hdGNoWzFdfWAsXG4gICAgICAgICAgICBpc0lubGluZTogZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgYWxpYXM6IGFsaWFzLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgcGFyc2VSZWZDYWNoZSA9IGZ1bmN0aW9uIChyZWYsIGNvbnRlbnQsIGlkLCBzb3VyY2UsIHRhcmdldCwgdHlwZWRMaW5rUHJlZml4KSB7XG4gICAgY29uc3QgbGluZSA9IGNvbnRlbnRbcmVmLnBvc2l0aW9uLnN0YXJ0LmxpbmVdO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgY29udGV4dDogbGluZSxcbiAgICAgICAgZWRnZUNvdW50OiAxLFxuICAgIH07XG4gICAgY29uc3Qgc3BsaXRMaW5rID0gcmVmLm9yaWdpbmFsLnNwbGl0KCd8Jyk7XG4gICAgaWYgKHNwbGl0TGluay5sZW5ndGggPiAxKSB7XG4gICAgICAgIGRhdGFbJ2FsaWFzJ10gPSBzcGxpdExpbmsuc2xpY2UoMSkuam9pbigpLnNsaWNlKDAsIC0yKTtcbiAgICB9XG4gICAgbGV0IGNsYXNzZXMgPSAnJztcbiAgICBjb25zdCB0eXBlZExpbmsgPSBwYXJzZVR5cGVkTGluayhyZWYsIGxpbmUsIHR5cGVkTGlua1ByZWZpeCk7XG4gICAgaWYgKHR5cGVkTGluayA9PT0gbnVsbCkge1xuICAgICAgICBjbGFzc2VzID0gYCR7Y2xhc3Nlc30gaW5saW5lYDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSB7IC4uLnR5cGVkTGluay5wcm9wZXJ0aWVzLCAuLi5kYXRhIH07XG4gICAgICAgIGNsYXNzZXMgPSBgJHtjbGFzc2VzfSAke3R5cGVkTGluay5jbGFzc31gO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBncm91cDogJ2VkZ2VzJyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICB9O1xufTtcblxuY29uc3QgZ2V0UGx1Z2luID0gZnVuY3Rpb24gKGFwcCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoJ2p1Z2dsJyBpbiBhcHAucGx1Z2lucy5wbHVnaW5zKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGFwcC5wbHVnaW5zLnBsdWdpbnNbJ2p1Z2dsJ107XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IHsgVml6SWQsIGdldENsYXNzZXMsIGdldFBsdWdpbiwgbm9kZURhbmdsaW5nLCBub2RlRnJvbUZpbGUsIHBhcnNlUmVmQ2FjaGUsIHBhcnNlVHlwZWRMaW5rIH07XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIGdldExpbmtwYXRoLCBpdGVyYXRlQ2FjaGVSZWZzLCBURmlsZSwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBEYXRhU3RvcmVFdmVudHMgfSBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyBDTEFTU19FWFBBTkRFRCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IG5vZGVEYW5nbGluZywgbm9kZUZyb21GaWxlLCBwYXJzZVJlZkNhY2hlLCBWaXpJZCB9IGZyb20gJ2p1Z2dsLWFwaSc7XG5leHBvcnQgY29uc3QgT0JTSURJQU5fU1RPUkVfTkFNRSA9ICdPYnNpZGlhbic7XG5leHBvcnQgY2xhc3MgT2JzaWRpYW5TdG9yZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocGx1Z2luKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmV2ZW50cyA9IG5ldyBEYXRhU3RvcmVFdmVudHMoKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YSA9IHBsdWdpbi5hcHAubWV0YWRhdGFDYWNoZTtcbiAgICAgICAgdGhpcy52YXVsdCA9IHBsdWdpbi5hcHAudmF1bHQ7XG4gICAgfVxuICAgIGdldEV2ZW50cyh2aWV3KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50cztcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlRWRnZXMoc3JjRmlsZSwgc3JjSWQsIHRvTm9kZXMsIHZpZXcpIHtcbiAgICAgICAgaWYgKCEoc3JjRmlsZS5leHRlbnNpb24gPT09ICdtZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLm1ldGFkYXRhLmdldEZpbGVDYWNoZShzcmNGaWxlKTtcbiAgICAgICAgaWYgKCFjYWNoZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVkZ2VzID0ge307XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoYXdhaXQgdGhpcy52YXVsdC5jYWNoZWRSZWFkKHNyY0ZpbGUpKS5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGl0ZXJhdGVDYWNoZVJlZnMoY2FjaGUsIChyZWYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG90aGVySWQgPSB0aGlzLmdldE90aGVySWQocmVmLCBzcmNGaWxlLnBhdGgpLnRvSWQoKTtcbiAgICAgICAgICAgIGlmICh0b05vZGVzLiRpZChvdGhlcklkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gYCR7c3JjSWR9LT4ke290aGVySWR9YDtcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudCA9IGVkZ2VJZCBpbiBlZGdlcyA/IGVkZ2VzW2VkZ2VJZF0ubGVuZ3RoICsgMSA6IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRnZSA9IHBhcnNlUmVmQ2FjaGUocmVmLCBjb250ZW50LCBgJHtlZGdlSWR9JHtjb3VudH1gLCBzcmNJZCwgb3RoZXJJZCwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHlwZWRMaW5rUHJlZml4KTtcbiAgICAgICAgICAgICAgICBpZiAoZWRnZUlkIGluIGVkZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzW2VkZ2VJZF0ucHVzaChlZGdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzW2VkZ2VJZF0gPSBbZWRnZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHZpZXcuc2V0dGluZ3MubWVyZ2VFZGdlcykge1xuICAgICAgICAgICAgLy8gTWVyZ2VzIGlubGluZSBlZGdlcy5cbiAgICAgICAgICAgIGNvbnN0IHJldHVybkVkZ2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVkZ2VJZCBvZiBPYmplY3Qua2V5cyhlZGdlcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0ZWRFZGdlcyA9IGVkZ2VzW2VkZ2VJZF07XG4gICAgICAgICAgICAgICAgbGV0IGlubGluZUVkZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxldCBjb3VudElubGluZSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlZGdlIG9mIGNvbm5lY3RlZEVkZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLmNsYXNzZXMgPT09ICcgaW5saW5lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUVkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVFZGdlLmRhdGEuY29udGV4dCArPSBgXG4gICAgICAgICAgICAgICAgXG4tLS1cblxuJHtlZGdlLmRhdGEuY29udGV4dH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50SW5saW5lICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVFZGdlID0gZWRnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudElubGluZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5FZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpbmxpbmVFZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlubGluZUVkZ2UuZGF0YS5lZGdlQ291bnQgPSBjb3VudElubGluZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuRWRnZXMucHVzaChpbmxpbmVFZGdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuRWRnZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKGVkZ2VzKSk7XG4gICAgfVxuICAgIGFzeW5jIGNvbm5lY3ROb2RlcyhhbGxOb2RlcywgbmV3Tm9kZXMsIHZpZXcpIHtcbiAgICAgICAgY29uc3QgZWRnZXMgPSBbXTtcbiAgICAgICAgLy8gRmluZCBlZGdlcyBmcm9tIG5ld05vZGVzIHRvIG90aGVyIG5vZGVzXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5ld05vZGVzKSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IFZpeklkLmZyb21Ob2RlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlkLnN0b3JlSWQgPT09IHRoaXMuc3RvcmVJZCgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZShpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3JjSWQgPSBpZC50b0lkKCk7XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzLnB1c2goLi4uYXdhaXQgdGhpcy5jcmVhdGVFZGdlcyhmaWxlLCBzcmNJZCwgYWxsTm9kZXMsIHZpZXcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYWxsTm9kZXMuZGlmZmVyZW5jZShuZXdOb2RlcykpIHtcbiAgICAgICAgICAgIC8vIEZvciBhbGwgbm9kZXMgb3RoZXIgdGhhbiB0aGUgbmV3IG5vZGVzXG4gICAgICAgICAgICBjb25zdCBpZCA9IFZpeklkLmZyb21Ob2RlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlkLnN0b3JlSWQgPT09IHRoaXMuc3RvcmVJZCgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZShpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3JjSWQgPSBpZC50b0lkKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbm5lY3Qgb25seSB0byBuZXdOb2RlcyFcbiAgICAgICAgICAgICAgICAgICAgZWRnZXMucHVzaCguLi5hd2FpdCB0aGlzLmNyZWF0ZUVkZ2VzKGZpbGUsIHNyY0lkLCBuZXdOb2RlcywgdmlldykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIGdldE90aGVySWQobGluaywgc291cmNlUGF0aCkge1xuICAgICAgICBjb25zdCBwYXRoID0gZ2V0TGlua3BhdGgobGluay5saW5rKTtcbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMubWV0YWRhdGEuZ2V0Rmlyc3RMaW5rcGF0aERlc3QocGF0aCwgc291cmNlUGF0aCk7XG4gICAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFZpeklkKGZpbGUubmFtZSwgdGhpcy5zdG9yZUlkKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChwYXRoLCB0aGlzLnN0b3JlSWQoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZ2V0Tm9kZUZyb21MaW5rKGxpbmssIHNvdXJjZVBhdGgsIGdyYXBoKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBnZXRMaW5rcGF0aChsaW5rLmxpbmspO1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5tZXRhZGF0YS5nZXRGaXJzdExpbmtwYXRoRGVzdChwYXRoLCBzb3VyY2VQYXRoKTtcbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBub2RlRnJvbUZpbGUoZmlsZSwgdGhpcy5wbHVnaW4sIGdyYXBoLnNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlRGFuZ2xpbmcocGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RmlsZShub2RlSWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YWRhdGEuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm9kZUlkLmlkLCAnJyk7XG4gICAgfVxuICAgIGFzeW5jIGZpbGxXaXRoQmFja2xpbmtzKG5vZGVzLCBub2RlSWQsIGdyYXBoKSB7XG4gICAgICAgIC8vIENvdWxkIGJlIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24uLi4gTm8gY2FjaGVkIGJhY2tsaW5rcyBpbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIE9ic2lkaWFuIEFQSSB0aG91Z2guXG4gICAgICAgIGlmIChub2RlSWQuc3RvcmVJZCA9PT0gJ2NvcmUnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRGaWxlKG5vZGVJZCkucGF0aDtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkTGlua3MgPSB0aGlzLm1ldGFkYXRhLnJlc29sdmVkTGlua3M7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG90aGVyUGF0aCBvZiBPYmplY3Qua2V5cyhyZXNvbHZlZExpbmtzKSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXRoIGluIHJlc29sdmVkTGlua3Nbb3RoZXJQYXRoXSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgob3RoZXJQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSBWaXpJZC5mcm9tRmlsZShmaWxlKS50b0lkKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNbaWRdID0gYXdhaXQgbm9kZUZyb21GaWxlKGZpbGUsIHRoaXMucGx1Z2luLCBncmFwaC5zZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZ2V0TmVpZ2hib3VyaG9vZChub2RlSWRzLCB2aXopIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBub2RlSWQgb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKG5vZGVJZC5zdG9yZUlkID09PSB0aGlzLnN0b3JlSWQoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGUobm9kZUlkKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLm1ldGFkYXRhLmdldEZpbGVDYWNoZShmaWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FjaGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghKG5vZGVJZC50b0lkKCkgaW4gbm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW25vZGVJZC50b0lkKCldID0gYXdhaXQgbm9kZUZyb21GaWxlKGZpbGUsIHRoaXMucGx1Z2luLCB2aXouc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwcm9taXNlTm9kZXMgPSB7fTtcbiAgICAgICAgICAgICAgICBpdGVyYXRlQ2FjaGVSZWZzKGNhY2hlLCAocmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRPdGhlcklkKHJlZiwgZmlsZS5wYXRoKS50b0lkKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU5vZGVzW2lkXSA9IHRoaXMuZ2V0Tm9kZUZyb21MaW5rKHJlZiwgZmlsZS5wYXRoLCB2aXopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBPYmplY3Qua2V5cyhwcm9taXNlTm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNbaWRdID0gYXdhaXQgcHJvbWlzZU5vZGVzW2lkXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbGxXaXRoQmFja2xpbmtzKG5vZGVzLCBub2RlSWQsIHZpeik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobm9kZXMpO1xuICAgIH1cbiAgICBzdG9yZUlkKCkge1xuICAgICAgICByZXR1cm4gJ2NvcmUnO1xuICAgIH1cbiAgICBnZXQobm9kZUlkLCB2aWV3KSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGUobm9kZUlkKTtcbiAgICAgICAgaWYgKGZpbGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5tZXRhZGF0YS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICAgIGlmIChjYWNoZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3JldHVybmluZyBlbXB0eSBjYWNoZScsIG5vZGVJZCwgdmlldyk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5vZGVGcm9tRmlsZShmaWxlLCB0aGlzLnBsdWdpbiwgdmlldy5zZXR0aW5ncykpO1xuICAgIH1cbiAgICBhc3luYyByZWZyZXNoTm9kZShpZCwgdmlldykge1xuICAgICAgICBjb25zdCBpZFMgPSBpZC50b0lkKCk7XG4gICAgICAgIGxldCBjb3JyZWN0RWRnZXM7XG4gICAgICAgIGxldCBub2RlID0gdmlldy52aXouJGlkKGlkUyk7XG4gICAgICAgIGlmICh0aGlzLmdldEZpbGUoaWQpID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGaWxlIGRvZXMgbm90IGV4aXN0XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIElmIGEgbm9kZSBleGlzdHMgZm9yIHRoaXMgZmlsZSwgcmVtb3ZlIGl0LlxuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdmlldy5vbkdyYXBoQ2hhbmdlZCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5sZW5ndGggPiAwICYmIG5vZGUuaGFzQ2xhc3MoQ0xBU1NfRVhQQU5ERUQpKSB7XG4gICAgICAgICAgICBjb3JyZWN0RWRnZXMgPSBhd2FpdCB2aWV3LmV4cGFuZChub2RlLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub2RlRGVmID0gYXdhaXQgdGhpcy5nZXQoaWQsIHZpZXcpO1xuICAgICAgICAgICAgdmlldy5tZXJnZVRvR3JhcGgoW25vZGVEZWZdLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICBub2RlID0gdmlldy52aXouJGlkKGlkUyk7XG4gICAgICAgICAgICBjb25zdCBlZGdlcyA9IGF3YWl0IHZpZXcuYnVpbGRFZGdlcyhub2RlKTtcbiAgICAgICAgICAgIGNvcnJlY3RFZGdlcyA9IHZpZXcubWVyZ2VUb0dyYXBoKGVkZ2VzLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVtb3ZlIG91dGdvaW5nIGVkZ2VzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0LlxuICAgICAgICBjb25zdCByZW1vdmVkID0gbm9kZS5jb25uZWN0ZWRFZGdlcygpXG4gICAgICAgICAgICAuZGlmZmVyZW5jZShjb3JyZWN0RWRnZXMubWVyZ2VkKVxuICAgICAgICAgICAgLnJlbW92ZSgpO1xuICAgICAgICBpZiAocmVtb3ZlZC5sZW5ndGggPiAwIHx8IGNvcnJlY3RFZGdlcy5hZGRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB2aWV3Lm9uR3JhcGhDaGFuZ2VkKHRydWUsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9ubG9hZCgpIHtcbiAgICAgICAgc3VwZXIub25sb2FkKCk7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcztcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMubWV0YWRhdGEub24oJ2NoYW5nZWQnLCAoZmlsZSkgPT4ge1xuICAgICAgICAgICAgc3RvcmUucGx1Z2luLmFjdGl2ZUdyYXBocygpLmZvckVhY2goYXN5bmMgKHYpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBzdG9yZS5yZWZyZXNoTm9kZShWaXpJZC5mcm9tRmlsZShmaWxlKSwgdik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy52YXVsdC5vbigncmVuYW1lJywgKGZpbGUsIG9sZFBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IFZpeklkLmZyb21GaWxlKGZpbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZElkID0gVml6SWQuZnJvbVBhdGgob2xkUGF0aCk7XG4gICAgICAgICAgICAgICAgc3RvcmUucGx1Z2luLmFjdGl2ZUdyYXBocygpLmZvckVhY2goYXN5bmMgKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2luZyB0aGUgSUQgb2YgYSBub2RlIGluIEN5dG9zY2FwZSBpcyBub3QgYWxsb3dlZCwgc28gcmVtb3ZlIGFuZCB0aGVuIHJlc3RvcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQdXQgaW4gc2V0VGltZW91dCBiZWNhdXNlIE9ic2lkaWFuIGRvZXNuJ3QgaW1tZWRpYXRlbHkgdXBkYXRlIHRoZSBtZXRhZGF0YSBvbiByZW5hbWUuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIHYudml6LiRpZChvbGRJZC50b0lkKCkpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc3RvcmUucmVmcmVzaE5vZGUoaWQsIHYpO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLnZhdWx0Lm9uKCdkZWxldGUnLCAoZmlsZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIHN0b3JlLnBsdWdpbi5hY3RpdmVHcmFwaHMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHYudml6LiRpZChWaXpJZC5mcm9tRmlsZShmaWxlKS50b0lkKCkpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgfVxufVxuIiwiZnVuY3Rpb24gbm9vcCgpIHsgfVxuY29uc3QgaWRlbnRpdHkgPSB4ID0+IHg7XG5mdW5jdGlvbiBhc3NpZ24odGFyLCBzcmMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZm9yIChjb25zdCBrIGluIHNyYylcbiAgICAgICAgdGFyW2tdID0gc3JjW2tdO1xuICAgIHJldHVybiB0YXI7XG59XG5mdW5jdGlvbiBpc19wcm9taXNlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5mdW5jdGlvbiBhZGRfbG9jYXRpb24oZWxlbWVudCwgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyKSB7XG4gICAgZWxlbWVudC5fX3N2ZWx0ZV9tZXRhID0ge1xuICAgICAgICBsb2M6IHsgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gcnVuKGZuKSB7XG4gICAgcmV0dXJuIGZuKCk7XG59XG5mdW5jdGlvbiBibGFua19vYmplY3QoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5mdW5jdGlvbiBydW5fYWxsKGZucykge1xuICAgIGZucy5mb3JFYWNoKHJ1bik7XG59XG5mdW5jdGlvbiBpc19mdW5jdGlvbih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09ICdmdW5jdGlvbic7XG59XG5mdW5jdGlvbiBzYWZlX25vdF9lcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEgIT0gYSA/IGIgPT0gYiA6IGEgIT09IGIgfHwgKChhICYmIHR5cGVvZiBhID09PSAnb2JqZWN0JykgfHwgdHlwZW9mIGEgPT09ICdmdW5jdGlvbicpO1xufVxubGV0IHNyY191cmxfZXF1YWxfYW5jaG9yO1xuZnVuY3Rpb24gc3JjX3VybF9lcXVhbChlbGVtZW50X3NyYywgdXJsKSB7XG4gICAgaWYgKCFzcmNfdXJsX2VxdWFsX2FuY2hvcikge1xuICAgICAgICBzcmNfdXJsX2VxdWFsX2FuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICB9XG4gICAgc3JjX3VybF9lcXVhbF9hbmNob3IuaHJlZiA9IHVybDtcbiAgICByZXR1cm4gZWxlbWVudF9zcmMgPT09IHNyY191cmxfZXF1YWxfYW5jaG9yLmhyZWY7XG59XG5mdW5jdGlvbiBub3RfZXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhICE9IGEgPyBiID09IGIgOiBhICE9PSBiO1xufVxuZnVuY3Rpb24gaXNfZW1wdHkob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVfc3RvcmUoc3RvcmUsIG5hbWUpIHtcbiAgICBpZiAoc3RvcmUgIT0gbnVsbCAmJiB0eXBlb2Ygc3RvcmUuc3Vic2NyaWJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGlzIG5vdCBhIHN0b3JlIHdpdGggYSAnc3Vic2NyaWJlJyBtZXRob2RgKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdWJzY3JpYmUoc3RvcmUsIC4uLmNhbGxiYWNrcykge1xuICAgIGlmIChzdG9yZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cbiAgICBjb25zdCB1bnN1YiA9IHN0b3JlLnN1YnNjcmliZSguLi5jYWxsYmFja3MpO1xuICAgIHJldHVybiB1bnN1Yi51bnN1YnNjcmliZSA/ICgpID0+IHVuc3ViLnVuc3Vic2NyaWJlKCkgOiB1bnN1Yjtcbn1cbmZ1bmN0aW9uIGdldF9zdG9yZV92YWx1ZShzdG9yZSkge1xuICAgIGxldCB2YWx1ZTtcbiAgICBzdWJzY3JpYmUoc3RvcmUsIF8gPT4gdmFsdWUgPSBfKSgpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNvbXBvbmVudF9zdWJzY3JpYmUoY29tcG9uZW50LCBzdG9yZSwgY2FsbGJhY2spIHtcbiAgICBjb21wb25lbnQuJCQub25fZGVzdHJveS5wdXNoKHN1YnNjcmliZShzdG9yZSwgY2FsbGJhY2spKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9zbG90KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pIHtcbiAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgICBjb25zdCBzbG90X2N0eCA9IGdldF9zbG90X2NvbnRleHQoZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBmbik7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uWzBdKHNsb3RfY3R4KTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pIHtcbiAgICByZXR1cm4gZGVmaW5pdGlvblsxXSAmJiBmblxuICAgICAgICA/IGFzc2lnbigkJHNjb3BlLmN0eC5zbGljZSgpLCBkZWZpbml0aW9uWzFdKGZuKGN0eCkpKVxuICAgICAgICA6ICQkc2NvcGUuY3R4O1xufVxuZnVuY3Rpb24gZ2V0X3Nsb3RfY2hhbmdlcyhkZWZpbml0aW9uLCAkJHNjb3BlLCBkaXJ0eSwgZm4pIHtcbiAgICBpZiAoZGVmaW5pdGlvblsyXSAmJiBmbikge1xuICAgICAgICBjb25zdCBsZXRzID0gZGVmaW5pdGlvblsyXShmbihkaXJ0eSkpO1xuICAgICAgICBpZiAoJCRzY29wZS5kaXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGV0cztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGxldHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWF4KCQkc2NvcGUuZGlydHkubGVuZ3RoLCBsZXRzLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkW2ldID0gJCRzY29wZS5kaXJ0eVtpXSB8IGxldHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAkJHNjb3BlLmRpcnR5IHwgbGV0cztcbiAgICB9XG4gICAgcmV0dXJuICQkc2NvcGUuZGlydHk7XG59XG5mdW5jdGlvbiB1cGRhdGVfc2xvdF9iYXNlKHNsb3QsIHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBzbG90X2NoYW5nZXMsIGdldF9zbG90X2NvbnRleHRfZm4pIHtcbiAgICBpZiAoc2xvdF9jaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHNsb3RfY29udGV4dCA9IGdldF9zbG90X2NvbnRleHQoc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGdldF9zbG90X2NvbnRleHRfZm4pO1xuICAgICAgICBzbG90LnAoc2xvdF9jb250ZXh0LCBzbG90X2NoYW5nZXMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHVwZGF0ZV9zbG90KHNsb3QsIHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBkaXJ0eSwgZ2V0X3Nsb3RfY2hhbmdlc19mbiwgZ2V0X3Nsb3RfY29udGV4dF9mbikge1xuICAgIGNvbnN0IHNsb3RfY2hhbmdlcyA9IGdldF9zbG90X2NoYW5nZXMoc2xvdF9kZWZpbml0aW9uLCAkJHNjb3BlLCBkaXJ0eSwgZ2V0X3Nsb3RfY2hhbmdlc19mbik7XG4gICAgdXBkYXRlX3Nsb3RfYmFzZShzbG90LCBzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgc2xvdF9jaGFuZ2VzLCBnZXRfc2xvdF9jb250ZXh0X2ZuKTtcbn1cbmZ1bmN0aW9uIGdldF9hbGxfZGlydHlfZnJvbV9zY29wZSgkJHNjb3BlKSB7XG4gICAgaWYgKCQkc2NvcGUuY3R4Lmxlbmd0aCA+IDMyKSB7XG4gICAgICAgIGNvbnN0IGRpcnR5ID0gW107XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9ICQkc2NvcGUuY3R4Lmxlbmd0aCAvIDMyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkaXJ0eVtpXSA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxuZnVuY3Rpb24gZXhjbHVkZV9pbnRlcm5hbF9wcm9wcyhwcm9wcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBpbiBwcm9wcylcbiAgICAgICAgaWYgKGtbMF0gIT09ICckJylcbiAgICAgICAgICAgIHJlc3VsdFtrXSA9IHByb3BzW2tdO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjb21wdXRlX3Jlc3RfcHJvcHMocHJvcHMsIGtleXMpIHtcbiAgICBjb25zdCByZXN0ID0ge307XG4gICAga2V5cyA9IG5ldyBTZXQoa2V5cyk7XG4gICAgZm9yIChjb25zdCBrIGluIHByb3BzKVxuICAgICAgICBpZiAoIWtleXMuaGFzKGspICYmIGtbMF0gIT09ICckJylcbiAgICAgICAgICAgIHJlc3Rba10gPSBwcm9wc1trXTtcbiAgICByZXR1cm4gcmVzdDtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVfc2xvdHMoc2xvdHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzbG90cykge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBvbmNlKGZuKSB7XG4gICAgbGV0IHJhbiA9IGZhbHNlO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAocmFuKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICByYW4gPSB0cnVlO1xuICAgICAgICBmbi5jYWxsKHRoaXMsIC4uLmFyZ3MpO1xuICAgIH07XG59XG5mdW5jdGlvbiBudWxsX3RvX2VtcHR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xufVxuZnVuY3Rpb24gc2V0X3N0b3JlX3ZhbHVlKHN0b3JlLCByZXQsIHZhbHVlKSB7XG4gICAgc3RvcmUuc2V0KHZhbHVlKTtcbiAgICByZXR1cm4gcmV0O1xufVxuY29uc3QgaGFzX3Byb3AgPSAob2JqLCBwcm9wKSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbmZ1bmN0aW9uIGFjdGlvbl9kZXN0cm95ZXIoYWN0aW9uX3Jlc3VsdCkge1xuICAgIHJldHVybiBhY3Rpb25fcmVzdWx0ICYmIGlzX2Z1bmN0aW9uKGFjdGlvbl9yZXN1bHQuZGVzdHJveSkgPyBhY3Rpb25fcmVzdWx0LmRlc3Ryb3kgOiBub29wO1xufVxuXG5jb25zdCBpc19jbGllbnQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbmxldCBub3cgPSBpc19jbGllbnRcbiAgICA/ICgpID0+IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKVxuICAgIDogKCkgPT4gRGF0ZS5ub3coKTtcbmxldCByYWYgPSBpc19jbGllbnQgPyBjYiA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpIDogbm9vcDtcbi8vIHVzZWQgaW50ZXJuYWxseSBmb3IgdGVzdGluZ1xuZnVuY3Rpb24gc2V0X25vdyhmbikge1xuICAgIG5vdyA9IGZuO1xufVxuZnVuY3Rpb24gc2V0X3JhZihmbikge1xuICAgIHJhZiA9IGZuO1xufVxuXG5jb25zdCB0YXNrcyA9IG5ldyBTZXQoKTtcbmZ1bmN0aW9uIHJ1bl90YXNrcyhub3cpIHtcbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICBpZiAoIXRhc2suYyhub3cpKSB7XG4gICAgICAgICAgICB0YXNrcy5kZWxldGUodGFzayk7XG4gICAgICAgICAgICB0YXNrLmYoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0YXNrcy5zaXplICE9PSAwKVxuICAgICAgICByYWYocnVuX3Rhc2tzKTtcbn1cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMgb25seSFcbiAqL1xuZnVuY3Rpb24gY2xlYXJfbG9vcHMoKSB7XG4gICAgdGFza3MuY2xlYXIoKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB0YXNrIHRoYXQgcnVucyBvbiBlYWNoIHJhZiBmcmFtZVxuICogdW50aWwgaXQgcmV0dXJucyBhIGZhbHN5IHZhbHVlIG9yIGlzIGFib3J0ZWRcbiAqL1xuZnVuY3Rpb24gbG9vcChjYWxsYmFjaykge1xuICAgIGxldCB0YXNrO1xuICAgIGlmICh0YXNrcy5zaXplID09PSAwKVxuICAgICAgICByYWYocnVuX3Rhc2tzKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9taXNlOiBuZXcgUHJvbWlzZShmdWxmaWxsID0+IHtcbiAgICAgICAgICAgIHRhc2tzLmFkZCh0YXNrID0geyBjOiBjYWxsYmFjaywgZjogZnVsZmlsbCB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIGFib3J0KCkge1xuICAgICAgICAgICAgdGFza3MuZGVsZXRlKHRhc2spO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuLy8gVHJhY2sgd2hpY2ggbm9kZXMgYXJlIGNsYWltZWQgZHVyaW5nIGh5ZHJhdGlvbi4gVW5jbGFpbWVkIG5vZGVzIGNhbiB0aGVuIGJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4vLyBhdCB0aGUgZW5kIG9mIGh5ZHJhdGlvbiB3aXRob3V0IHRvdWNoaW5nIHRoZSByZW1haW5pbmcgbm9kZXMuXG5sZXQgaXNfaHlkcmF0aW5nID0gZmFsc2U7XG5mdW5jdGlvbiBzdGFydF9oeWRyYXRpbmcoKSB7XG4gICAgaXNfaHlkcmF0aW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGVuZF9oeWRyYXRpbmcoKSB7XG4gICAgaXNfaHlkcmF0aW5nID0gZmFsc2U7XG59XG5mdW5jdGlvbiB1cHBlcl9ib3VuZChsb3csIGhpZ2gsIGtleSwgdmFsdWUpIHtcbiAgICAvLyBSZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUgbGFyZ2VyIHRoYW4gaW5wdXQgdmFsdWUgaW4gdGhlIHJhbmdlIFtsb3csIGhpZ2gpXG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgY29uc3QgbWlkID0gbG93ICsgKChoaWdoIC0gbG93KSA+PiAxKTtcbiAgICAgICAgaWYgKGtleShtaWQpIDw9IHZhbHVlKSB7XG4gICAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbG93O1xufVxuZnVuY3Rpb24gaW5pdF9oeWRyYXRlKHRhcmdldCkge1xuICAgIGlmICh0YXJnZXQuaHlkcmF0ZV9pbml0KVxuICAgICAgICByZXR1cm47XG4gICAgdGFyZ2V0Lmh5ZHJhdGVfaW5pdCA9IHRydWU7XG4gICAgLy8gV2Uga25vdyB0aGF0IGFsbCBjaGlsZHJlbiBoYXZlIGNsYWltX29yZGVyIHZhbHVlcyBzaW5jZSB0aGUgdW5jbGFpbWVkIGhhdmUgYmVlbiBkZXRhY2hlZCBpZiB0YXJnZXQgaXMgbm90IDxoZWFkPlxuICAgIGxldCBjaGlsZHJlbiA9IHRhcmdldC5jaGlsZE5vZGVzO1xuICAgIC8vIElmIHRhcmdldCBpcyA8aGVhZD4sIHRoZXJlIG1heSBiZSBjaGlsZHJlbiB3aXRob3V0IGNsYWltX29yZGVyXG4gICAgaWYgKHRhcmdldC5ub2RlTmFtZSA9PT0gJ0hFQUQnKSB7XG4gICAgICAgIGNvbnN0IG15Q2hpbGRyZW4gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgaWYgKG5vZGUuY2xhaW1fb3JkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG15Q2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbiA9IG15Q2hpbGRyZW47XG4gICAgfVxuICAgIC8qXG4gICAgKiBSZW9yZGVyIGNsYWltZWQgY2hpbGRyZW4gb3B0aW1hbGx5LlxuICAgICogV2UgY2FuIHJlb3JkZXIgY2xhaW1lZCBjaGlsZHJlbiBvcHRpbWFsbHkgYnkgZmluZGluZyB0aGUgbG9uZ2VzdCBzdWJzZXF1ZW5jZSBvZlxuICAgICogbm9kZXMgdGhhdCBhcmUgYWxyZWFkeSBjbGFpbWVkIGluIG9yZGVyIGFuZCBvbmx5IG1vdmluZyB0aGUgcmVzdC4gVGhlIGxvbmdlc3RcbiAgICAqIHN1YnNlcXVlbmNlIHN1YnNlcXVlbmNlIG9mIG5vZGVzIHRoYXQgYXJlIGNsYWltZWQgaW4gb3JkZXIgY2FuIGJlIGZvdW5kIGJ5XG4gICAgKiBjb21wdXRpbmcgdGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiAuY2xhaW1fb3JkZXIgdmFsdWVzLlxuICAgICpcbiAgICAqIFRoaXMgYWxnb3JpdGhtIGlzIG9wdGltYWwgaW4gZ2VuZXJhdGluZyB0aGUgbGVhc3QgYW1vdW50IG9mIHJlb3JkZXIgb3BlcmF0aW9uc1xuICAgICogcG9zc2libGUuXG4gICAgKlxuICAgICogUHJvb2Y6XG4gICAgKiBXZSBrbm93IHRoYXQsIGdpdmVuIGEgc2V0IG9mIHJlb3JkZXJpbmcgb3BlcmF0aW9ucywgdGhlIG5vZGVzIHRoYXQgZG8gbm90IG1vdmVcbiAgICAqIGFsd2F5cyBmb3JtIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2UsIHNpbmNlIHRoZXkgZG8gbm90IG1vdmUgYW1vbmcgZWFjaCBvdGhlclxuICAgICogbWVhbmluZyB0aGF0IHRoZXkgbXVzdCBiZSBhbHJlYWR5IG9yZGVyZWQgYW1vbmcgZWFjaCBvdGhlci4gVGh1cywgdGhlIG1heGltYWxcbiAgICAqIHNldCBvZiBub2RlcyB0aGF0IGRvIG5vdCBtb3ZlIGZvcm0gYSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2UuXG4gICAgKi9cbiAgICAvLyBDb21wdXRlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZVxuICAgIC8vIG06IHN1YnNlcXVlbmNlIGxlbmd0aCBqID0+IGluZGV4IGsgb2Ygc21hbGxlc3QgdmFsdWUgdGhhdCBlbmRzIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgbGVuZ3RoIGpcbiAgICBjb25zdCBtID0gbmV3IEludDMyQXJyYXkoY2hpbGRyZW4ubGVuZ3RoICsgMSk7XG4gICAgLy8gUHJlZGVjZXNzb3IgaW5kaWNlcyArIDFcbiAgICBjb25zdCBwID0gbmV3IEludDMyQXJyYXkoY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICBtWzBdID0gLTE7XG4gICAgbGV0IGxvbmdlc3QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNoaWxkcmVuW2ldLmNsYWltX29yZGVyO1xuICAgICAgICAvLyBGaW5kIHRoZSBsYXJnZXN0IHN1YnNlcXVlbmNlIGxlbmd0aCBzdWNoIHRoYXQgaXQgZW5kcyBpbiBhIHZhbHVlIGxlc3MgdGhhbiBvdXIgY3VycmVudCB2YWx1ZVxuICAgICAgICAvLyB1cHBlcl9ib3VuZCByZXR1cm5zIGZpcnN0IGdyZWF0ZXIgdmFsdWUsIHNvIHdlIHN1YnRyYWN0IG9uZVxuICAgICAgICAvLyB3aXRoIGZhc3QgcGF0aCBmb3Igd2hlbiB3ZSBhcmUgb24gdGhlIGN1cnJlbnQgbG9uZ2VzdCBzdWJzZXF1ZW5jZVxuICAgICAgICBjb25zdCBzZXFMZW4gPSAoKGxvbmdlc3QgPiAwICYmIGNoaWxkcmVuW21bbG9uZ2VzdF1dLmNsYWltX29yZGVyIDw9IGN1cnJlbnQpID8gbG9uZ2VzdCArIDEgOiB1cHBlcl9ib3VuZCgxLCBsb25nZXN0LCBpZHggPT4gY2hpbGRyZW5bbVtpZHhdXS5jbGFpbV9vcmRlciwgY3VycmVudCkpIC0gMTtcbiAgICAgICAgcFtpXSA9IG1bc2VxTGVuXSArIDE7XG4gICAgICAgIGNvbnN0IG5ld0xlbiA9IHNlcUxlbiArIDE7XG4gICAgICAgIC8vIFdlIGNhbiBndWFyYW50ZWUgdGhhdCBjdXJyZW50IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBoYXZlIGdlbmVyYXRlZCBhIGxvbmdlciBzZXF1ZW5jZS5cbiAgICAgICAgbVtuZXdMZW5dID0gaTtcbiAgICAgICAgbG9uZ2VzdCA9IE1hdGgubWF4KG5ld0xlbiwgbG9uZ2VzdCk7XG4gICAgfVxuICAgIC8vIFRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2Ygbm9kZXMgKGluaXRpYWxseSByZXZlcnNlZClcbiAgICBjb25zdCBsaXMgPSBbXTtcbiAgICAvLyBUaGUgcmVzdCBvZiB0aGUgbm9kZXMsIG5vZGVzIHRoYXQgd2lsbCBiZSBtb3ZlZFxuICAgIGNvbnN0IHRvTW92ZSA9IFtdO1xuICAgIGxldCBsYXN0ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICBmb3IgKGxldCBjdXIgPSBtW2xvbmdlc3RdICsgMTsgY3VyICE9IDA7IGN1ciA9IHBbY3VyIC0gMV0pIHtcbiAgICAgICAgbGlzLnB1c2goY2hpbGRyZW5bY3VyIC0gMV0pO1xuICAgICAgICBmb3IgKDsgbGFzdCA+PSBjdXI7IGxhc3QtLSkge1xuICAgICAgICAgICAgdG9Nb3ZlLnB1c2goY2hpbGRyZW5bbGFzdF0pO1xuICAgICAgICB9XG4gICAgICAgIGxhc3QtLTtcbiAgICB9XG4gICAgZm9yICg7IGxhc3QgPj0gMDsgbGFzdC0tKSB7XG4gICAgICAgIHRvTW92ZS5wdXNoKGNoaWxkcmVuW2xhc3RdKTtcbiAgICB9XG4gICAgbGlzLnJldmVyc2UoKTtcbiAgICAvLyBXZSBzb3J0IHRoZSBub2RlcyBiZWluZyBtb3ZlZCB0byBndWFyYW50ZWUgdGhhdCB0aGVpciBpbnNlcnRpb24gb3JkZXIgbWF0Y2hlcyB0aGUgY2xhaW0gb3JkZXJcbiAgICB0b01vdmUuc29ydCgoYSwgYikgPT4gYS5jbGFpbV9vcmRlciAtIGIuY2xhaW1fb3JkZXIpO1xuICAgIC8vIEZpbmFsbHksIHdlIG1vdmUgdGhlIG5vZGVzXG4gICAgZm9yIChsZXQgaSA9IDAsIGogPSAwOyBpIDwgdG9Nb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdoaWxlIChqIDwgbGlzLmxlbmd0aCAmJiB0b01vdmVbaV0uY2xhaW1fb3JkZXIgPj0gbGlzW2pdLmNsYWltX29yZGVyKSB7XG4gICAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yID0gaiA8IGxpcy5sZW5ndGggPyBsaXNbal0gOiBudWxsO1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKHRvTW92ZVtpXSwgYW5jaG9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhcHBlbmQodGFyZ2V0LCBub2RlKSB7XG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKG5vZGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX3N0eWxlcyh0YXJnZXQsIHN0eWxlX3NoZWV0X2lkLCBzdHlsZXMpIHtcbiAgICBjb25zdCBhcHBlbmRfc3R5bGVzX3RvID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKHRhcmdldCk7XG4gICAgaWYgKCFhcHBlbmRfc3R5bGVzX3RvLmdldEVsZW1lbnRCeUlkKHN0eWxlX3NoZWV0X2lkKSkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHN0eWxlLmlkID0gc3R5bGVfc2hlZXRfaWQ7XG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gc3R5bGVzO1xuICAgICAgICBhcHBlbmRfc3R5bGVzaGVldChhcHBlbmRfc3R5bGVzX3RvLCBzdHlsZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUpXG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICBjb25zdCByb290ID0gbm9kZS5nZXRSb290Tm9kZSA/IG5vZGUuZ2V0Um9vdE5vZGUoKSA6IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICBpZiAocm9vdCAmJiByb290Lmhvc3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQ7XG59XG5mdW5jdGlvbiBhcHBlbmRfZW1wdHlfc3R5bGVzaGVldChub2RlKSB7XG4gICAgY29uc3Qgc3R5bGVfZWxlbWVudCA9IGVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgYXBwZW5kX3N0eWxlc2hlZXQoZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpLCBzdHlsZV9lbGVtZW50KTtcbiAgICByZXR1cm4gc3R5bGVfZWxlbWVudDtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9zdHlsZXNoZWV0KG5vZGUsIHN0eWxlKSB7XG4gICAgYXBwZW5kKG5vZGUuaGVhZCB8fCBub2RlLCBzdHlsZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSkge1xuICAgIGlmIChpc19oeWRyYXRpbmcpIHtcbiAgICAgICAgaW5pdF9oeWRyYXRlKHRhcmdldCk7XG4gICAgICAgIGlmICgodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPT09IHVuZGVmaW5lZCkgfHwgKCh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCAhPT0gbnVsbCkgJiYgKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkLnBhcmVudEVsZW1lbnQgIT09IHRhcmdldCkpKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9IHRhcmdldC5maXJzdENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNraXAgbm9kZXMgb2YgdW5kZWZpbmVkIG9yZGVyaW5nXG4gICAgICAgIHdoaWxlICgodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwpICYmICh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5jbGFpbV9vcmRlciA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZSAhPT0gdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQpIHtcbiAgICAgICAgICAgIC8vIFdlIG9ubHkgaW5zZXJ0IGlmIHRoZSBvcmRlcmluZyBvZiB0aGlzIG5vZGUgc2hvdWxkIGJlIG1vZGlmaWVkIG9yIHRoZSBwYXJlbnQgbm9kZSBpcyBub3QgdGFyZ2V0XG4gICAgICAgICAgICBpZiAobm9kZS5jbGFpbV9vcmRlciAhPT0gdW5kZWZpbmVkIHx8IG5vZGUucGFyZW50Tm9kZSAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlICE9PSB0YXJnZXQgfHwgbm9kZS5uZXh0U2libGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gaW5zZXJ0KHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgdGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCBhbmNob3IgfHwgbnVsbCk7XG59XG5mdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgaWYgKGlzX2h5ZHJhdGluZyAmJiAhYW5jaG9yKSB7XG4gICAgICAgIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlICE9PSB0YXJnZXQgfHwgbm9kZS5uZXh0U2libGluZyAhPSBhbmNob3IpIHtcbiAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCBhbmNob3IgfHwgbnVsbCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZGV0YWNoKG5vZGUpIHtcbiAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG59XG5mdW5jdGlvbiBkZXN0cm95X2VhY2goaXRlcmF0aW9ucywgZGV0YWNoaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyYXRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChpdGVyYXRpb25zW2ldKVxuICAgICAgICAgICAgaXRlcmF0aW9uc1tpXS5kKGRldGFjaGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZWxlbWVudChuYW1lKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7XG59XG5mdW5jdGlvbiBlbGVtZW50X2lzKG5hbWUsIGlzKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSwgeyBpcyB9KTtcbn1cbmZ1bmN0aW9uIG9iamVjdF93aXRob3V0X3Byb3BlcnRpZXMob2JqLCBleGNsdWRlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0ge307XG4gICAgZm9yIChjb25zdCBrIGluIG9iaikge1xuICAgICAgICBpZiAoaGFzX3Byb3Aob2JqLCBrKVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgJiYgZXhjbHVkZS5pbmRleE9mKGspID09PSAtMSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGFyZ2V0W2tdID0gb2JqW2tdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiBzdmdfZWxlbWVudChuYW1lKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCBuYW1lKTtcbn1cbmZ1bmN0aW9uIHRleHQoZGF0YSkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkYXRhKTtcbn1cbmZ1bmN0aW9uIHNwYWNlKCkge1xuICAgIHJldHVybiB0ZXh0KCcgJyk7XG59XG5mdW5jdGlvbiBlbXB0eSgpIHtcbiAgICByZXR1cm4gdGV4dCgnJyk7XG59XG5mdW5jdGlvbiBsaXN0ZW4obm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcHJldmVudF9kZWZhdWx0KGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gc3RvcF9wcm9wYWdhdGlvbihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiBzZWxmKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMpXG4gICAgICAgICAgICBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gdHJ1c3RlZChmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoZXZlbnQuaXNUcnVzdGVkKVxuICAgICAgICAgICAgZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGF0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKVxuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIGVsc2UgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkgIT09IHZhbHVlKVxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbn1cbmZ1bmN0aW9uIHNldF9hdHRyaWJ1dGVzKG5vZGUsIGF0dHJpYnV0ZXMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhub2RlLl9fcHJvdG9fXyk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBpZiAoYXR0cmlidXRlc1trZXldID09IG51bGwpIHtcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmNzc1RleHQgPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnX192YWx1ZScpIHtcbiAgICAgICAgICAgIG5vZGUudmFsdWUgPSBub2RlW2tleV0gPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvcnNba2V5XSAmJiBkZXNjcmlwdG9yc1trZXldLnNldCkge1xuICAgICAgICAgICAgbm9kZVtrZXldID0gYXR0cmlidXRlc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXR0cihub2RlLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBzZXRfc3ZnX2F0dHJpYnV0ZXMobm9kZSwgYXR0cmlidXRlcykge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXR0cihub2RlLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0X2N1c3RvbV9lbGVtZW50X2RhdGEobm9kZSwgcHJvcCwgdmFsdWUpIHtcbiAgICBpZiAocHJvcCBpbiBub2RlKSB7XG4gICAgICAgIG5vZGVbcHJvcF0gPSB0eXBlb2Ygbm9kZVtwcm9wXSA9PT0gJ2Jvb2xlYW4nICYmIHZhbHVlID09PSAnJyA/IHRydWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGF0dHIobm9kZSwgcHJvcCwgdmFsdWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHhsaW5rX2F0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGdldF9iaW5kaW5nX2dyb3VwX3ZhbHVlKGdyb3VwLCBfX3ZhbHVlLCBjaGVja2VkKSB7XG4gICAgY29uc3QgdmFsdWUgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAoZ3JvdXBbaV0uY2hlY2tlZClcbiAgICAgICAgICAgIHZhbHVlLmFkZChncm91cFtpXS5fX3ZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCFjaGVja2VkKSB7XG4gICAgICAgIHZhbHVlLmRlbGV0ZShfX3ZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xufVxuZnVuY3Rpb24gdG9fbnVtYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnJyA/IG51bGwgOiArdmFsdWU7XG59XG5mdW5jdGlvbiB0aW1lX3Jhbmdlc190b19hcnJheShyYW5nZXMpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGFycmF5LnB1c2goeyBzdGFydDogcmFuZ2VzLnN0YXJ0KGkpLCBlbmQ6IHJhbmdlcy5lbmQoaSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cbmZ1bmN0aW9uIGNoaWxkcmVuKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpO1xufVxuZnVuY3Rpb24gaW5pdF9jbGFpbV9pbmZvKG5vZGVzKSB7XG4gICAgaWYgKG5vZGVzLmNsYWltX2luZm8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2Rlcy5jbGFpbV9pbmZvID0geyBsYXN0X2luZGV4OiAwLCB0b3RhbF9jbGFpbWVkOiAwIH07XG4gICAgfVxufVxuZnVuY3Rpb24gY2xhaW1fbm9kZShub2RlcywgcHJlZGljYXRlLCBwcm9jZXNzTm9kZSwgY3JlYXRlTm9kZSwgZG9udFVwZGF0ZUxhc3RJbmRleCA9IGZhbHNlKSB7XG4gICAgLy8gVHJ5IHRvIGZpbmQgbm9kZXMgaW4gYW4gb3JkZXIgc3VjaCB0aGF0IHdlIGxlbmd0aGVuIHRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2VcbiAgICBpbml0X2NsYWltX2luZm8obm9kZXMpO1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSAoKCkgPT4ge1xuICAgICAgICAvLyBXZSBmaXJzdCB0cnkgdG8gZmluZCBhbiBlbGVtZW50IGFmdGVyIHRoZSBwcmV2aW91cyBvbmVcbiAgICAgICAgZm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBwcm9jZXNzTm9kZShub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWRvbnRVcGRhdGVMYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4ID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZmluZCBvbmUgYmVmb3JlXG4gICAgICAgIC8vIFdlIGl0ZXJhdGUgaW4gcmV2ZXJzZSBzbyB0aGF0IHdlIGRvbid0IGdvIHRvbyBmYXIgYmFja1xuICAgICAgICBmb3IgKGxldCBpID0gbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHByb2Nlc3NOb2RlKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZG9udFVwZGF0ZUxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIHNwbGljZWQgYmVmb3JlIHRoZSBsYXN0X2luZGV4LCB3ZSBkZWNyZWFzZSBpdFxuICAgICAgICAgICAgICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXgtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbnkgbWF0Y2hpbmcgbm9kZSwgd2UgY3JlYXRlIGEgbmV3IG9uZVxuICAgICAgICByZXR1cm4gY3JlYXRlTm9kZSgpO1xuICAgIH0pKCk7XG4gICAgcmVzdWx0Tm9kZS5jbGFpbV9vcmRlciA9IG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZDtcbiAgICBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQgKz0gMTtcbiAgICByZXR1cm4gcmVzdWx0Tm9kZTtcbn1cbmZ1bmN0aW9uIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgY3JlYXRlX2VsZW1lbnQpIHtcbiAgICByZXR1cm4gY2xhaW1fbm9kZShub2RlcywgKG5vZGUpID0+IG5vZGUubm9kZU5hbWUgPT09IG5hbWUsIChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG5vZGUuYXR0cmlidXRlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlID0gbm9kZS5hdHRyaWJ1dGVzW2pdO1xuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZS5wdXNoKGF0dHJpYnV0ZS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZW1vdmUuZm9yRWFjaCh2ID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKHYpKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LCAoKSA9PiBjcmVhdGVfZWxlbWVudChuYW1lKSk7XG59XG5mdW5jdGlvbiBjbGFpbV9lbGVtZW50KG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzKSB7XG4gICAgcmV0dXJuIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgZWxlbWVudCk7XG59XG5mdW5jdGlvbiBjbGFpbV9zdmdfZWxlbWVudChub2RlcywgbmFtZSwgYXR0cmlidXRlcykge1xuICAgIHJldHVybiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIHN2Z19lbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGNsYWltX3RleHQobm9kZXMsIGRhdGEpIHtcbiAgICByZXR1cm4gY2xhaW1fbm9kZShub2RlcywgKG5vZGUpID0+IG5vZGUubm9kZVR5cGUgPT09IDMsIChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSAnJyArIGRhdGE7XG4gICAgICAgIGlmIChub2RlLmRhdGEuc3RhcnRzV2l0aChkYXRhU3RyKSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuZGF0YS5sZW5ndGggIT09IGRhdGFTdHIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuc3BsaXRUZXh0KGRhdGFTdHIubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUuZGF0YSA9IGRhdGFTdHI7XG4gICAgICAgIH1cbiAgICB9LCAoKSA9PiB0ZXh0KGRhdGEpLCB0cnVlIC8vIFRleHQgbm9kZXMgc2hvdWxkIG5vdCB1cGRhdGUgbGFzdCBpbmRleCBzaW5jZSBpdCBpcyBsaWtlbHkgbm90IHdvcnRoIGl0IHRvIGVsaW1pbmF0ZSBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIGFjdHVhbCBlbGVtZW50c1xuICAgICk7XG59XG5mdW5jdGlvbiBjbGFpbV9zcGFjZShub2Rlcykge1xuICAgIHJldHVybiBjbGFpbV90ZXh0KG5vZGVzLCAnICcpO1xufVxuZnVuY3Rpb24gZmluZF9jb21tZW50KG5vZGVzLCB0ZXh0LCBzdGFydCkge1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IG5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDggLyogY29tbWVudCBub2RlICovICYmIG5vZGUudGV4dENvbnRlbnQudHJpbSgpID09PSB0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZXMubGVuZ3RoO1xufVxuZnVuY3Rpb24gY2xhaW1faHRtbF90YWcobm9kZXMpIHtcbiAgICAvLyBmaW5kIGh0bWwgb3BlbmluZyB0YWdcbiAgICBjb25zdCBzdGFydF9pbmRleCA9IGZpbmRfY29tbWVudChub2RlcywgJ0hUTUxfVEFHX1NUQVJUJywgMCk7XG4gICAgY29uc3QgZW5kX2luZGV4ID0gZmluZF9jb21tZW50KG5vZGVzLCAnSFRNTF9UQUdfRU5EJywgc3RhcnRfaW5kZXgpO1xuICAgIGlmIChzdGFydF9pbmRleCA9PT0gZW5kX2luZGV4KSB7XG4gICAgICAgIHJldHVybiBuZXcgSHRtbFRhZ0h5ZHJhdGlvbigpO1xuICAgIH1cbiAgICBpbml0X2NsYWltX2luZm8obm9kZXMpO1xuICAgIGNvbnN0IGh0bWxfdGFnX25vZGVzID0gbm9kZXMuc3BsaWNlKHN0YXJ0X2luZGV4LCBlbmRfaW5kZXggKyAxKTtcbiAgICBkZXRhY2goaHRtbF90YWdfbm9kZXNbMF0pO1xuICAgIGRldGFjaChodG1sX3RhZ19ub2Rlc1todG1sX3RhZ19ub2Rlcy5sZW5ndGggLSAxXSk7XG4gICAgY29uc3QgY2xhaW1lZF9ub2RlcyA9IGh0bWxfdGFnX25vZGVzLnNsaWNlKDEsIGh0bWxfdGFnX25vZGVzLmxlbmd0aCAtIDEpO1xuICAgIGZvciAoY29uc3QgbiBvZiBjbGFpbWVkX25vZGVzKSB7XG4gICAgICAgIG4uY2xhaW1fb3JkZXIgPSBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQ7XG4gICAgICAgIG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oY2xhaW1lZF9ub2Rlcyk7XG59XG5mdW5jdGlvbiBzZXRfZGF0YSh0ZXh0LCBkYXRhKSB7XG4gICAgZGF0YSA9ICcnICsgZGF0YTtcbiAgICBpZiAodGV4dC53aG9sZVRleHQgIT09IGRhdGEpXG4gICAgICAgIHRleHQuZGF0YSA9IGRhdGE7XG59XG5mdW5jdGlvbiBzZXRfaW5wdXRfdmFsdWUoaW5wdXQsIHZhbHVlKSB7XG4gICAgaW5wdXQudmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHNldF9pbnB1dF90eXBlKGlucHV0LCB0eXBlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaW5wdXQudHlwZSA9IHR5cGU7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG59XG5mdW5jdGlvbiBzZXRfc3R5bGUobm9kZSwga2V5LCB2YWx1ZSwgaW1wb3J0YW50KSB7XG4gICAgbm9kZS5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCBpbXBvcnRhbnQgPyAnaW1wb3J0YW50JyA6ICcnKTtcbn1cbmZ1bmN0aW9uIHNlbGVjdF9vcHRpb24oc2VsZWN0LCB2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gc2VsZWN0Lm9wdGlvbnNbaV07XG4gICAgICAgIGlmIChvcHRpb24uX192YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggPSAtMTsgLy8gbm8gb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZFxufVxuZnVuY3Rpb24gc2VsZWN0X29wdGlvbnMoc2VsZWN0LCB2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gc2VsZWN0Lm9wdGlvbnNbaV07XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IH52YWx1ZS5pbmRleE9mKG9wdGlvbi5fX3ZhbHVlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZWxlY3RfdmFsdWUoc2VsZWN0KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRfb3B0aW9uID0gc2VsZWN0LnF1ZXJ5U2VsZWN0b3IoJzpjaGVja2VkJykgfHwgc2VsZWN0Lm9wdGlvbnNbMF07XG4gICAgcmV0dXJuIHNlbGVjdGVkX29wdGlvbiAmJiBzZWxlY3RlZF9vcHRpb24uX192YWx1ZTtcbn1cbmZ1bmN0aW9uIHNlbGVjdF9tdWx0aXBsZV92YWx1ZShzZWxlY3QpIHtcbiAgICByZXR1cm4gW10ubWFwLmNhbGwoc2VsZWN0LnF1ZXJ5U2VsZWN0b3JBbGwoJzpjaGVja2VkJyksIG9wdGlvbiA9PiBvcHRpb24uX192YWx1ZSk7XG59XG4vLyB1bmZvcnR1bmF0ZWx5IHRoaXMgY2FuJ3QgYmUgYSBjb25zdGFudCBhcyB0aGF0IHdvdWxkbid0IGJlIHRyZWUtc2hha2VhYmxlXG4vLyBzbyB3ZSBjYWNoZSB0aGUgcmVzdWx0IGluc3RlYWRcbmxldCBjcm9zc29yaWdpbjtcbmZ1bmN0aW9uIGlzX2Nyb3Nzb3JpZ2luKCkge1xuICAgIGlmIChjcm9zc29yaWdpbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNyb3Nzb3JpZ2luID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnBhcmVudCkge1xuICAgICAgICAgICAgICAgIHZvaWQgd2luZG93LnBhcmVudC5kb2N1bWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNyb3Nzb3JpZ2luID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3Jvc3NvcmlnaW47XG59XG5mdW5jdGlvbiBhZGRfcmVzaXplX2xpc3RlbmVyKG5vZGUsIGZuKSB7XG4gICAgY29uc3QgY29tcHV0ZWRfc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIGlmIChjb21wdXRlZF9zdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgbm9kZS5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgfVxuICAgIGNvbnN0IGlmcmFtZSA9IGVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgJyArXG4gICAgICAgICdvdmVyZmxvdzogaGlkZGVuOyBib3JkZXI6IDA7IG9wYWNpdHk6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAtMTsnKTtcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgaWZyYW1lLnRhYkluZGV4ID0gLTE7XG4gICAgY29uc3QgY3Jvc3NvcmlnaW4gPSBpc19jcm9zc29yaWdpbigpO1xuICAgIGxldCB1bnN1YnNjcmliZTtcbiAgICBpZiAoY3Jvc3NvcmlnaW4pIHtcbiAgICAgICAgaWZyYW1lLnNyYyA9IFwiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5vbnJlc2l6ZT1mdW5jdGlvbigpe3BhcmVudC5wb3N0TWVzc2FnZSgwLCcqJyl9PC9zY3JpcHQ+XCI7XG4gICAgICAgIHVuc3Vic2NyaWJlID0gbGlzdGVuKHdpbmRvdywgJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2UgPT09IGlmcmFtZS5jb250ZW50V2luZG93KVxuICAgICAgICAgICAgICAgIGZuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWZyYW1lLnNyYyA9ICdhYm91dDpibGFuayc7XG4gICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZSA9IGxpc3RlbihpZnJhbWUuY29udGVudFdpbmRvdywgJ3Jlc2l6ZScsIGZuKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXBwZW5kKG5vZGUsIGlmcmFtZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNyb3Nzb3JpZ2luKSB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVuc3Vic2NyaWJlICYmIGlmcmFtZS5jb250ZW50V2luZG93KSB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGRldGFjaChpZnJhbWUpO1xuICAgIH07XG59XG5mdW5jdGlvbiB0b2dnbGVfY2xhc3MoZWxlbWVudCwgbmFtZSwgdG9nZ2xlKSB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3RbdG9nZ2xlID8gJ2FkZCcgOiAncmVtb3ZlJ10obmFtZSk7XG59XG5mdW5jdGlvbiBjdXN0b21fZXZlbnQodHlwZSwgZGV0YWlsLCBidWJibGVzID0gZmFsc2UpIHtcbiAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiBxdWVyeV9zZWxlY3Rvcl9hbGwoc2VsZWN0b3IsIHBhcmVudCA9IGRvY3VtZW50LmJvZHkpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpO1xufVxuY2xhc3MgSHRtbFRhZyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZSA9IHRoaXMubiA9IG51bGw7XG4gICAgfVxuICAgIGMoaHRtbCkge1xuICAgICAgICB0aGlzLmgoaHRtbCk7XG4gICAgfVxuICAgIG0oaHRtbCwgdGFyZ2V0LCBhbmNob3IgPSBudWxsKSB7XG4gICAgICAgIGlmICghdGhpcy5lKSB7XG4gICAgICAgICAgICB0aGlzLmUgPSBlbGVtZW50KHRhcmdldC5ub2RlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICB0aGlzLmMoaHRtbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pKGFuY2hvcik7XG4gICAgfVxuICAgIGgoaHRtbCkge1xuICAgICAgICB0aGlzLmUuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgICAgdGhpcy5uID0gQXJyYXkuZnJvbSh0aGlzLmUuY2hpbGROb2Rlcyk7XG4gICAgfVxuICAgIGkoYW5jaG9yKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpbnNlcnQodGhpcy50LCB0aGlzLm5baV0sIGFuY2hvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcChodG1sKSB7XG4gICAgICAgIHRoaXMuZCgpO1xuICAgICAgICB0aGlzLmgoaHRtbCk7XG4gICAgICAgIHRoaXMuaSh0aGlzLmEpO1xuICAgIH1cbiAgICBkKCkge1xuICAgICAgICB0aGlzLm4uZm9yRWFjaChkZXRhY2gpO1xuICAgIH1cbn1cbmNsYXNzIEh0bWxUYWdIeWRyYXRpb24gZXh0ZW5kcyBIdG1sVGFnIHtcbiAgICBjb25zdHJ1Y3RvcihjbGFpbWVkX25vZGVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZSA9IHRoaXMubiA9IG51bGw7XG4gICAgICAgIHRoaXMubCA9IGNsYWltZWRfbm9kZXM7XG4gICAgfVxuICAgIGMoaHRtbCkge1xuICAgICAgICBpZiAodGhpcy5sKSB7XG4gICAgICAgICAgICB0aGlzLm4gPSB0aGlzLmw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5jKGh0bWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGkoYW5jaG9yKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpbnNlcnRfaHlkcmF0aW9uKHRoaXMudCwgdGhpcy5uW2ldLCBhbmNob3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gYXR0cmlidXRlX3RvX29iamVjdChhdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgICByZXN1bHRbYXR0cmlidXRlLm5hbWVdID0gYXR0cmlidXRlLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0X2N1c3RvbV9lbGVtZW50c19zbG90cyhlbGVtZW50KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZWxlbWVudC5jaGlsZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgcmVzdWx0W25vZGUuc2xvdCB8fCAnZGVmYXVsdCddID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5jb25zdCBhY3RpdmVfZG9jcyA9IG5ldyBTZXQoKTtcbmxldCBhY3RpdmUgPSAwO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Rhcmtza3lhcHAvc3RyaW5nLWhhc2gvYmxvYi9tYXN0ZXIvaW5kZXguanNcbmZ1bmN0aW9uIGhhc2goc3RyKSB7XG4gICAgbGV0IGhhc2ggPSA1MzgxO1xuICAgIGxldCBpID0gc3RyLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKVxuICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgXiBzdHIuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gaGFzaCA+Pj4gMDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9ydWxlKG5vZGUsIGEsIGIsIGR1cmF0aW9uLCBkZWxheSwgZWFzZSwgZm4sIHVpZCA9IDApIHtcbiAgICBjb25zdCBzdGVwID0gMTYuNjY2IC8gZHVyYXRpb247XG4gICAgbGV0IGtleWZyYW1lcyA9ICd7XFxuJztcbiAgICBmb3IgKGxldCBwID0gMDsgcCA8PSAxOyBwICs9IHN0ZXApIHtcbiAgICAgICAgY29uc3QgdCA9IGEgKyAoYiAtIGEpICogZWFzZShwKTtcbiAgICAgICAga2V5ZnJhbWVzICs9IHAgKiAxMDAgKyBgJXske2ZuKHQsIDEgLSB0KX19XFxuYDtcbiAgICB9XG4gICAgY29uc3QgcnVsZSA9IGtleWZyYW1lcyArIGAxMDAlIHske2ZuKGIsIDEgLSBiKX19XFxufWA7XG4gICAgY29uc3QgbmFtZSA9IGBfX3N2ZWx0ZV8ke2hhc2gocnVsZSl9XyR7dWlkfWA7XG4gICAgY29uc3QgZG9jID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpO1xuICAgIGFjdGl2ZV9kb2NzLmFkZChkb2MpO1xuICAgIGNvbnN0IHN0eWxlc2hlZXQgPSBkb2MuX19zdmVsdGVfc3R5bGVzaGVldCB8fCAoZG9jLl9fc3ZlbHRlX3N0eWxlc2hlZXQgPSBhcHBlbmRfZW1wdHlfc3R5bGVzaGVldChub2RlKS5zaGVldCk7XG4gICAgY29uc3QgY3VycmVudF9ydWxlcyA9IGRvYy5fX3N2ZWx0ZV9ydWxlcyB8fCAoZG9jLl9fc3ZlbHRlX3J1bGVzID0ge30pO1xuICAgIGlmICghY3VycmVudF9ydWxlc1tuYW1lXSkge1xuICAgICAgICBjdXJyZW50X3J1bGVzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKGBAa2V5ZnJhbWVzICR7bmFtZX0gJHtydWxlfWAsIHN0eWxlc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgYW5pbWF0aW9uID0gbm9kZS5zdHlsZS5hbmltYXRpb24gfHwgJyc7XG4gICAgbm9kZS5zdHlsZS5hbmltYXRpb24gPSBgJHthbmltYXRpb24gPyBgJHthbmltYXRpb259LCBgIDogJyd9JHtuYW1lfSAke2R1cmF0aW9ufW1zIGxpbmVhciAke2RlbGF5fW1zIDEgYm90aGA7XG4gICAgYWN0aXZlICs9IDE7XG4gICAgcmV0dXJuIG5hbWU7XG59XG5mdW5jdGlvbiBkZWxldGVfcnVsZShub2RlLCBuYW1lKSB7XG4gICAgY29uc3QgcHJldmlvdXMgPSAobm9kZS5zdHlsZS5hbmltYXRpb24gfHwgJycpLnNwbGl0KCcsICcpO1xuICAgIGNvbnN0IG5leHQgPSBwcmV2aW91cy5maWx0ZXIobmFtZVxuICAgICAgICA/IGFuaW0gPT4gYW5pbS5pbmRleE9mKG5hbWUpIDwgMCAvLyByZW1vdmUgc3BlY2lmaWMgYW5pbWF0aW9uXG4gICAgICAgIDogYW5pbSA9PiBhbmltLmluZGV4T2YoJ19fc3ZlbHRlJykgPT09IC0xIC8vIHJlbW92ZSBhbGwgU3ZlbHRlIGFuaW1hdGlvbnNcbiAgICApO1xuICAgIGNvbnN0IGRlbGV0ZWQgPSBwcmV2aW91cy5sZW5ndGggLSBuZXh0Lmxlbmd0aDtcbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgICBub2RlLnN0eWxlLmFuaW1hdGlvbiA9IG5leHQuam9pbignLCAnKTtcbiAgICAgICAgYWN0aXZlIC09IGRlbGV0ZWQ7XG4gICAgICAgIGlmICghYWN0aXZlKVxuICAgICAgICAgICAgY2xlYXJfcnVsZXMoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjbGVhcl9ydWxlcygpIHtcbiAgICByYWYoKCkgPT4ge1xuICAgICAgICBpZiAoYWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBhY3RpdmVfZG9jcy5mb3JFYWNoKGRvYyA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZXNoZWV0ID0gZG9jLl9fc3ZlbHRlX3N0eWxlc2hlZXQ7XG4gICAgICAgICAgICBsZXQgaSA9IHN0eWxlc2hlZXQuY3NzUnVsZXMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGktLSlcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LmRlbGV0ZVJ1bGUoaSk7XG4gICAgICAgICAgICBkb2MuX19zdmVsdGVfcnVsZXMgPSB7fTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2ZV9kb2NzLmNsZWFyKCk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZV9hbmltYXRpb24obm9kZSwgZnJvbSwgZm4sIHBhcmFtcykge1xuICAgIGlmICghZnJvbSlcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgY29uc3QgdG8gPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChmcm9tLmxlZnQgPT09IHRvLmxlZnQgJiYgZnJvbS5yaWdodCA9PT0gdG8ucmlnaHQgJiYgZnJvbS50b3AgPT09IHRvLnRvcCAmJiBmcm9tLmJvdHRvbSA9PT0gdG8uYm90dG9tKVxuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCBcbiAgICAvLyBAdHMtaWdub3JlIHRvZG86IHNob3VsZCB0aGlzIGJlIHNlcGFyYXRlZCBmcm9tIGRlc3RydWN0dXJpbmc/IE9yIHN0YXJ0L2VuZCBhZGRlZCB0byBwdWJsaWMgYXBpIGFuZCBkb2N1bWVudGF0aW9uP1xuICAgIHN0YXJ0OiBzdGFydF90aW1lID0gbm93KCkgKyBkZWxheSwgXG4gICAgLy8gQHRzLWlnbm9yZSB0b2RvOlxuICAgIGVuZCA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbiwgdGljayA9IG5vb3AsIGNzcyB9ID0gZm4obm9kZSwgeyBmcm9tLCB0byB9LCBwYXJhbXMpO1xuICAgIGxldCBydW5uaW5nID0gdHJ1ZTtcbiAgICBsZXQgc3RhcnRlZCA9IGZhbHNlO1xuICAgIGxldCBuYW1lO1xuICAgIGZ1bmN0aW9uIHN0YXJ0KCkge1xuICAgICAgICBpZiAoY3NzKSB7XG4gICAgICAgICAgICBuYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgMCwgMSwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZWxheSkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgICAgaWYgKGNzcylcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUsIG5hbWUpO1xuICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIGxvb3Aobm93ID0+IHtcbiAgICAgICAgaWYgKCFzdGFydGVkICYmIG5vdyA+PSBzdGFydF90aW1lKSB7XG4gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRlZCAmJiBub3cgPj0gZW5kKSB7XG4gICAgICAgICAgICB0aWNrKDEsIDApO1xuICAgICAgICAgICAgc3RvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcnVubmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydGVkKSB7XG4gICAgICAgICAgICBjb25zdCBwID0gbm93IC0gc3RhcnRfdGltZTtcbiAgICAgICAgICAgIGNvbnN0IHQgPSAwICsgMSAqIGVhc2luZyhwIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgdGljayh0LCAxIC0gdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgc3RhcnQoKTtcbiAgICB0aWNrKDAsIDEpO1xuICAgIHJldHVybiBzdG9wO1xufVxuZnVuY3Rpb24gZml4X3Bvc2l0aW9uKG5vZGUpIHtcbiAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgaWYgKHN0eWxlLnBvc2l0aW9uICE9PSAnYWJzb2x1dGUnICYmIHN0eWxlLnBvc2l0aW9uICE9PSAnZml4ZWQnKSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gc3R5bGU7XG4gICAgICAgIGNvbnN0IGEgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBub2RlLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgbm9kZS5zdHlsZS53aWR0aCA9IHdpZHRoO1xuICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgYWRkX3RyYW5zZm9ybShub2RlLCBhKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRfdHJhbnNmb3JtKG5vZGUsIGEpIHtcbiAgICBjb25zdCBiID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoYS5sZWZ0ICE9PSBiLmxlZnQgfHwgYS50b3AgIT09IGIudG9wKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gc3R5bGUudHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IHN0eWxlLnRyYW5zZm9ybTtcbiAgICAgICAgbm9kZS5zdHlsZS50cmFuc2Zvcm0gPSBgJHt0cmFuc2Zvcm19IHRyYW5zbGF0ZSgke2EubGVmdCAtIGIubGVmdH1weCwgJHthLnRvcCAtIGIudG9wfXB4KWA7XG4gICAgfVxufVxuXG5sZXQgY3VycmVudF9jb21wb25lbnQ7XG5mdW5jdGlvbiBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgY3VycmVudF9jb21wb25lbnQgPSBjb21wb25lbnQ7XG59XG5mdW5jdGlvbiBnZXRfY3VycmVudF9jb21wb25lbnQoKSB7XG4gICAgaWYgKCFjdXJyZW50X2NvbXBvbmVudClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiBjYWxsZWQgb3V0c2lkZSBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24nKTtcbiAgICByZXR1cm4gY3VycmVudF9jb21wb25lbnQ7XG59XG5mdW5jdGlvbiBiZWZvcmVVcGRhdGUoZm4pIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5iZWZvcmVfdXBkYXRlLnB1c2goZm4pO1xufVxuZnVuY3Rpb24gb25Nb3VudChmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLm9uX21vdW50LnB1c2goZm4pO1xufVxuZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoZm4pIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5hZnRlcl91cGRhdGUucHVzaChmbik7XG59XG5mdW5jdGlvbiBvbkRlc3Ryb3koZm4pIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5vbl9kZXN0cm95LnB1c2goZm4pO1xufVxuZnVuY3Rpb24gY3JlYXRlRXZlbnREaXNwYXRjaGVyKCkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGdldF9jdXJyZW50X2NvbXBvbmVudCgpO1xuICAgIHJldHVybiAodHlwZSwgZGV0YWlsKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNvbXBvbmVudC4kJC5jYWxsYmFja3NbdHlwZV07XG4gICAgICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gYXJlIHRoZXJlIHNpdHVhdGlvbnMgd2hlcmUgZXZlbnRzIGNvdWxkIGJlIGRpc3BhdGNoZWRcbiAgICAgICAgICAgIC8vIGluIGEgc2VydmVyIChub24tRE9NKSBlbnZpcm9ubWVudD9cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gY3VzdG9tX2V2ZW50KHR5cGUsIGRldGFpbCk7XG4gICAgICAgICAgICBjYWxsYmFja3Muc2xpY2UoKS5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgICAgICAgICBmbi5jYWxsKGNvbXBvbmVudCwgZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gc2V0Q29udGV4dChrZXksIGNvbnRleHQpIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LnNldChrZXksIGNvbnRleHQpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGV4dChrZXkpIHtcbiAgICByZXR1cm4gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dC5nZXQoa2V5KTtcbn1cbmZ1bmN0aW9uIGdldEFsbENvbnRleHRzKCkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0O1xufVxuZnVuY3Rpb24gaGFzQ29udGV4dChrZXkpIHtcbiAgICByZXR1cm4gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dC5oYXMoa2V5KTtcbn1cbi8vIFRPRE8gZmlndXJlIG91dCBpZiB3ZSBzdGlsbCB3YW50IHRvIHN1cHBvcnRcbi8vIHNob3J0aGFuZCBldmVudHMsIG9yIGlmIHdlIHdhbnQgdG8gaW1wbGVtZW50XG4vLyBhIHJlYWwgYnViYmxpbmcgbWVjaGFuaXNtXG5mdW5jdGlvbiBidWJibGUoY29tcG9uZW50LCBldmVudCkge1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNvbXBvbmVudC4kJC5jYWxsYmFja3NbZXZlbnQudHlwZV07XG4gICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNhbGxiYWNrcy5zbGljZSgpLmZvckVhY2goZm4gPT4gZm4uY2FsbCh0aGlzLCBldmVudCkpO1xuICAgIH1cbn1cblxuY29uc3QgZGlydHlfY29tcG9uZW50cyA9IFtdO1xuY29uc3QgaW50cm9zID0geyBlbmFibGVkOiBmYWxzZSB9O1xuY29uc3QgYmluZGluZ19jYWxsYmFja3MgPSBbXTtcbmNvbnN0IHJlbmRlcl9jYWxsYmFja3MgPSBbXTtcbmNvbnN0IGZsdXNoX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgcmVzb2x2ZWRfcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xubGV0IHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIHNjaGVkdWxlX3VwZGF0ZSgpIHtcbiAgICBpZiAoIXVwZGF0ZV9zY2hlZHVsZWQpIHtcbiAgICAgICAgdXBkYXRlX3NjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgIHJlc29sdmVkX3Byb21pc2UudGhlbihmbHVzaCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdGljaygpIHtcbiAgICBzY2hlZHVsZV91cGRhdGUoKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRfcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGFkZF9yZW5kZXJfY2FsbGJhY2soZm4pIHtcbiAgICByZW5kZXJfY2FsbGJhY2tzLnB1c2goZm4pO1xufVxuZnVuY3Rpb24gYWRkX2ZsdXNoX2NhbGxiYWNrKGZuKSB7XG4gICAgZmx1c2hfY2FsbGJhY2tzLnB1c2goZm4pO1xufVxuLy8gZmx1c2goKSBjYWxscyBjYWxsYmFja3MgaW4gdGhpcyBvcmRlcjpcbi8vIDEuIEFsbCBiZWZvcmVVcGRhdGUgY2FsbGJhY2tzLCBpbiBvcmRlcjogcGFyZW50cyBiZWZvcmUgY2hpbGRyZW5cbi8vIDIuIEFsbCBiaW5kOnRoaXMgY2FsbGJhY2tzLCBpbiByZXZlcnNlIG9yZGVyOiBjaGlsZHJlbiBiZWZvcmUgcGFyZW50cy5cbi8vIDMuIEFsbCBhZnRlclVwZGF0ZSBjYWxsYmFja3MsIGluIG9yZGVyOiBwYXJlbnRzIGJlZm9yZSBjaGlsZHJlbi4gRVhDRVBUXG4vLyAgICBmb3IgYWZ0ZXJVcGRhdGVzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWwgb25Nb3VudCwgd2hpY2ggYXJlIGNhbGxlZCBpblxuLy8gICAgcmV2ZXJzZSBvcmRlcjogY2hpbGRyZW4gYmVmb3JlIHBhcmVudHMuXG4vLyBTaW5jZSBjYWxsYmFja3MgbWlnaHQgdXBkYXRlIGNvbXBvbmVudCB2YWx1ZXMsIHdoaWNoIGNvdWxkIHRyaWdnZXIgYW5vdGhlclxuLy8gY2FsbCB0byBmbHVzaCgpLCB0aGUgZm9sbG93aW5nIHN0ZXBzIGd1YXJkIGFnYWluc3QgdGhpczpcbi8vIDEuIER1cmluZyBiZWZvcmVVcGRhdGUsIGFueSB1cGRhdGVkIGNvbXBvbmVudHMgd2lsbCBiZSBhZGRlZCB0byB0aGVcbi8vICAgIGRpcnR5X2NvbXBvbmVudHMgYXJyYXkgYW5kIHdpbGwgY2F1c2UgYSByZWVudHJhbnQgY2FsbCB0byBmbHVzaCgpLiBCZWNhdXNlXG4vLyAgICB0aGUgZmx1c2ggaW5kZXggaXMga2VwdCBvdXRzaWRlIHRoZSBmdW5jdGlvbiwgdGhlIHJlZW50cmFudCBjYWxsIHdpbGwgcGlja1xuLy8gICAgdXAgd2hlcmUgdGhlIGVhcmxpZXIgY2FsbCBsZWZ0IG9mZiBhbmQgZ28gdGhyb3VnaCBhbGwgZGlydHkgY29tcG9uZW50cy4gVGhlXG4vLyAgICBjdXJyZW50X2NvbXBvbmVudCB2YWx1ZSBpcyBzYXZlZCBhbmQgcmVzdG9yZWQgc28gdGhhdCB0aGUgcmVlbnRyYW50IGNhbGwgd2lsbFxuLy8gICAgbm90IGludGVyZmVyZSB3aXRoIHRoZSBcInBhcmVudFwiIGZsdXNoKCkgY2FsbC5cbi8vIDIuIGJpbmQ6dGhpcyBjYWxsYmFja3MgY2Fubm90IHRyaWdnZXIgbmV3IGZsdXNoKCkgY2FsbHMuXG4vLyAzLiBEdXJpbmcgYWZ0ZXJVcGRhdGUsIGFueSB1cGRhdGVkIGNvbXBvbmVudHMgd2lsbCBOT1QgaGF2ZSB0aGVpciBhZnRlclVwZGF0ZVxuLy8gICAgY2FsbGJhY2sgY2FsbGVkIGEgc2Vjb25kIHRpbWU7IHRoZSBzZWVuX2NhbGxiYWNrcyBzZXQsIG91dHNpZGUgdGhlIGZsdXNoKClcbi8vICAgIGZ1bmN0aW9uLCBndWFyYW50ZWVzIHRoaXMgYmVoYXZpb3IuXG5jb25zdCBzZWVuX2NhbGxiYWNrcyA9IG5ldyBTZXQoKTtcbmxldCBmbHVzaGlkeCA9IDA7IC8vIERvICpub3QqIG1vdmUgdGhpcyBpbnNpZGUgdGhlIGZsdXNoKCkgZnVuY3Rpb25cbmZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIGNvbnN0IHNhdmVkX2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuICAgIGRvIHtcbiAgICAgICAgLy8gZmlyc3QsIGNhbGwgYmVmb3JlVXBkYXRlIGZ1bmN0aW9uc1xuICAgICAgICAvLyBhbmQgdXBkYXRlIGNvbXBvbmVudHNcbiAgICAgICAgd2hpbGUgKGZsdXNoaWR4IDwgZGlydHlfY29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRpcnR5X2NvbXBvbmVudHNbZmx1c2hpZHhdO1xuICAgICAgICAgICAgZmx1c2hpZHgrKztcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICAgICAgdXBkYXRlKGNvbXBvbmVudC4kJCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KG51bGwpO1xuICAgICAgICBkaXJ0eV9jb21wb25lbnRzLmxlbmd0aCA9IDA7XG4gICAgICAgIGZsdXNoaWR4ID0gMDtcbiAgICAgICAgd2hpbGUgKGJpbmRpbmdfY2FsbGJhY2tzLmxlbmd0aClcbiAgICAgICAgICAgIGJpbmRpbmdfY2FsbGJhY2tzLnBvcCgpKCk7XG4gICAgICAgIC8vIHRoZW4sIG9uY2UgY29tcG9uZW50cyBhcmUgdXBkYXRlZCwgY2FsbFxuICAgICAgICAvLyBhZnRlclVwZGF0ZSBmdW5jdGlvbnMuIFRoaXMgbWF5IGNhdXNlXG4gICAgICAgIC8vIHN1YnNlcXVlbnQgdXBkYXRlcy4uLlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gcmVuZGVyX2NhbGxiYWNrc1tpXTtcbiAgICAgICAgICAgIGlmICghc2Vlbl9jYWxsYmFja3MuaGFzKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgICAgIC8vIC4uLnNvIGd1YXJkIGFnYWluc3QgaW5maW5pdGUgbG9vcHNcbiAgICAgICAgICAgICAgICBzZWVuX2NhbGxiYWNrcy5hZGQoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyX2NhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgIH0gd2hpbGUgKGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoKTtcbiAgICB3aGlsZSAoZmx1c2hfY2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgICBmbHVzaF9jYWxsYmFja3MucG9wKCkoKTtcbiAgICB9XG4gICAgdXBkYXRlX3NjaGVkdWxlZCA9IGZhbHNlO1xuICAgIHNlZW5fY2FsbGJhY2tzLmNsZWFyKCk7XG4gICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHNhdmVkX2NvbXBvbmVudCk7XG59XG5mdW5jdGlvbiB1cGRhdGUoJCQpIHtcbiAgICBpZiAoJCQuZnJhZ21lbnQgIT09IG51bGwpIHtcbiAgICAgICAgJCQudXBkYXRlKCk7XG4gICAgICAgIHJ1bl9hbGwoJCQuYmVmb3JlX3VwZGF0ZSk7XG4gICAgICAgIGNvbnN0IGRpcnR5ID0gJCQuZGlydHk7XG4gICAgICAgICQkLmRpcnR5ID0gWy0xXTtcbiAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQucCgkJC5jdHgsIGRpcnR5KTtcbiAgICAgICAgJCQuYWZ0ZXJfdXBkYXRlLmZvckVhY2goYWRkX3JlbmRlcl9jYWxsYmFjayk7XG4gICAgfVxufVxuXG5sZXQgcHJvbWlzZTtcbmZ1bmN0aW9uIHdhaXQoKSB7XG4gICAgaWYgKCFwcm9taXNlKSB7XG4gICAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHByb21pc2UgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBkaXNwYXRjaChub2RlLCBkaXJlY3Rpb24sIGtpbmQpIHtcbiAgICBub2RlLmRpc3BhdGNoRXZlbnQoY3VzdG9tX2V2ZW50KGAke2RpcmVjdGlvbiA/ICdpbnRybycgOiAnb3V0cm8nfSR7a2luZH1gKSk7XG59XG5jb25zdCBvdXRyb2luZyA9IG5ldyBTZXQoKTtcbmxldCBvdXRyb3M7XG5mdW5jdGlvbiBncm91cF9vdXRyb3MoKSB7XG4gICAgb3V0cm9zID0ge1xuICAgICAgICByOiAwLFxuICAgICAgICBjOiBbXSxcbiAgICAgICAgcDogb3V0cm9zIC8vIHBhcmVudCBncm91cFxuICAgIH07XG59XG5mdW5jdGlvbiBjaGVja19vdXRyb3MoKSB7XG4gICAgaWYgKCFvdXRyb3Mucikge1xuICAgICAgICBydW5fYWxsKG91dHJvcy5jKTtcbiAgICB9XG4gICAgb3V0cm9zID0gb3V0cm9zLnA7XG59XG5mdW5jdGlvbiB0cmFuc2l0aW9uX2luKGJsb2NrLCBsb2NhbCkge1xuICAgIGlmIChibG9jayAmJiBibG9jay5pKSB7XG4gICAgICAgIG91dHJvaW5nLmRlbGV0ZShibG9jayk7XG4gICAgICAgIGJsb2NrLmkobG9jYWwpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRyYW5zaXRpb25fb3V0KGJsb2NrLCBsb2NhbCwgZGV0YWNoLCBjYWxsYmFjaykge1xuICAgIGlmIChibG9jayAmJiBibG9jay5vKSB7XG4gICAgICAgIGlmIChvdXRyb2luZy5oYXMoYmxvY2spKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBvdXRyb2luZy5hZGQoYmxvY2spO1xuICAgICAgICBvdXRyb3MuYy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgIG91dHJvaW5nLmRlbGV0ZShibG9jayk7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoZGV0YWNoKVxuICAgICAgICAgICAgICAgICAgICBibG9jay5kKDEpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBibG9jay5vKGxvY2FsKTtcbiAgICB9XG59XG5jb25zdCBudWxsX3RyYW5zaXRpb24gPSB7IGR1cmF0aW9uOiAwIH07XG5mdW5jdGlvbiBjcmVhdGVfaW5fdHJhbnNpdGlvbihub2RlLCBmbiwgcGFyYW1zKSB7XG4gICAgbGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcyk7XG4gICAgbGV0IHJ1bm5pbmcgPSBmYWxzZTtcbiAgICBsZXQgYW5pbWF0aW9uX25hbWU7XG4gICAgbGV0IHRhc2s7XG4gICAgbGV0IHVpZCA9IDA7XG4gICAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgICAgaWYgKGFuaW1hdGlvbl9uYW1lKVxuICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnbygpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgaWYgKGNzcylcbiAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgMCwgMSwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcywgdWlkKyspO1xuICAgICAgICB0aWNrKDAsIDEpO1xuICAgICAgICBjb25zdCBzdGFydF90aW1lID0gbm93KCkgKyBkZWxheTtcbiAgICAgICAgY29uc3QgZW5kX3RpbWUgPSBzdGFydF90aW1lICsgZHVyYXRpb247XG4gICAgICAgIGlmICh0YXNrKVxuICAgICAgICAgICAgdGFzay5hYm9ydCgpO1xuICAgICAgICBydW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiBkaXNwYXRjaChub2RlLCB0cnVlLCAnc3RhcnQnKSk7XG4gICAgICAgIHRhc2sgPSBsb29wKG5vdyA9PiB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gZW5kX3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGljaygxLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgdHJ1ZSwgJ2VuZCcpO1xuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gc3RhcnRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZWFzaW5nKChub3cgLSBzdGFydF90aW1lKSAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGljayh0LCAxIC0gdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJ1bm5pbmc7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgc3RhcnRlZCA9IGZhbHNlO1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0KCkge1xuICAgICAgICAgICAgaWYgKHN0YXJ0ZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlKTtcbiAgICAgICAgICAgIGlmIChpc19mdW5jdGlvbihjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICAgICAgd2FpdCgpLnRoZW4oZ28pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ28oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW52YWxpZGF0ZSgpIHtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5kKCkge1xuICAgICAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9vdXRfdHJhbnNpdGlvbihub2RlLCBmbiwgcGFyYW1zKSB7XG4gICAgbGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcyk7XG4gICAgbGV0IHJ1bm5pbmcgPSB0cnVlO1xuICAgIGxldCBhbmltYXRpb25fbmFtZTtcbiAgICBjb25zdCBncm91cCA9IG91dHJvcztcbiAgICBncm91cC5yICs9IDE7XG4gICAgZnVuY3Rpb24gZ28oKSB7XG4gICAgICAgIGNvbnN0IHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDMwMCwgZWFzaW5nID0gaWRlbnRpdHksIHRpY2sgPSBub29wLCBjc3MgfSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG4gICAgICAgIGlmIChjc3MpXG4gICAgICAgICAgICBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDEsIDAsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuICAgICAgICBjb25zdCBzdGFydF90aW1lID0gbm93KCkgKyBkZWxheTtcbiAgICAgICAgY29uc3QgZW5kX3RpbWUgPSBzdGFydF90aW1lICsgZHVyYXRpb247XG4gICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgZmFsc2UsICdzdGFydCcpKTtcbiAgICAgICAgbG9vcChub3cgPT4ge1xuICAgICAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93ID49IGVuZF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRpY2soMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG5vZGUsIGZhbHNlLCAnZW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghLS1ncm91cC5yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdpbGwgcmVzdWx0IGluIGBlbmQoKWAgYmVpbmcgY2FsbGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICBydW5fYWxsKGdyb3VwLmMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBzdGFydF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlYXNpbmcoKG5vdyAtIHN0YXJ0X3RpbWUpIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aWNrKDEgLSB0LCB0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVubmluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpc19mdW5jdGlvbihjb25maWcpKSB7XG4gICAgICAgIHdhaXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZygpO1xuICAgICAgICAgICAgZ28oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBnbygpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBlbmQocmVzZXQpIHtcbiAgICAgICAgICAgIGlmIChyZXNldCAmJiBjb25maWcudGljaykge1xuICAgICAgICAgICAgICAgIGNvbmZpZy50aWNrKDEsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcbiAgICAgICAgICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlX2JpZGlyZWN0aW9uYWxfdHJhbnNpdGlvbihub2RlLCBmbiwgcGFyYW1zLCBpbnRybykge1xuICAgIGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMpO1xuICAgIGxldCB0ID0gaW50cm8gPyAwIDogMTtcbiAgICBsZXQgcnVubmluZ19wcm9ncmFtID0gbnVsbDtcbiAgICBsZXQgcGVuZGluZ19wcm9ncmFtID0gbnVsbDtcbiAgICBsZXQgYW5pbWF0aW9uX25hbWUgPSBudWxsO1xuICAgIGZ1bmN0aW9uIGNsZWFyX2FuaW1hdGlvbigpIHtcbiAgICAgICAgaWYgKGFuaW1hdGlvbl9uYW1lKVxuICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0KHByb2dyYW0sIGR1cmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGQgPSAocHJvZ3JhbS5iIC0gdCk7XG4gICAgICAgIGR1cmF0aW9uICo9IE1hdGguYWJzKGQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYTogdCxcbiAgICAgICAgICAgIGI6IHByb2dyYW0uYixcbiAgICAgICAgICAgIGQsXG4gICAgICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgICAgIHN0YXJ0OiBwcm9ncmFtLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBwcm9ncmFtLnN0YXJ0ICsgZHVyYXRpb24sXG4gICAgICAgICAgICBncm91cDogcHJvZ3JhbS5ncm91cFxuICAgICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBnbyhiKSB7XG4gICAgICAgIGNvbnN0IHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDMwMCwgZWFzaW5nID0gaWRlbnRpdHksIHRpY2sgPSBub29wLCBjc3MgfSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG4gICAgICAgIGNvbnN0IHByb2dyYW0gPSB7XG4gICAgICAgICAgICBzdGFydDogbm93KCkgKyBkZWxheSxcbiAgICAgICAgICAgIGJcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFiKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHRvZG86IGltcHJvdmUgdHlwaW5nc1xuICAgICAgICAgICAgcHJvZ3JhbS5ncm91cCA9IG91dHJvcztcbiAgICAgICAgICAgIG91dHJvcy5yICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bm5pbmdfcHJvZ3JhbSB8fCBwZW5kaW5nX3Byb2dyYW0pIHtcbiAgICAgICAgICAgIHBlbmRpbmdfcHJvZ3JhbSA9IHByb2dyYW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGFuIGludHJvLCBhbmQgdGhlcmUncyBhIGRlbGF5LCB3ZSBuZWVkIHRvIGRvXG4gICAgICAgICAgICAvLyBhbiBpbml0aWFsIHRpY2sgYW5kL29yIGFwcGx5IENTUyBhbmltYXRpb24gaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIGlmIChjc3MpIHtcbiAgICAgICAgICAgICAgICBjbGVhcl9hbmltYXRpb24oKTtcbiAgICAgICAgICAgICAgICBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIHQsIGIsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGIpXG4gICAgICAgICAgICAgICAgdGljaygwLCAxKTtcbiAgICAgICAgICAgIHJ1bm5pbmdfcHJvZ3JhbSA9IGluaXQocHJvZ3JhbSwgZHVyYXRpb24pO1xuICAgICAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiBkaXNwYXRjaChub2RlLCBiLCAnc3RhcnQnKSk7XG4gICAgICAgICAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdfcHJvZ3JhbSAmJiBub3cgPiBwZW5kaW5nX3Byb2dyYW0uc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gaW5pdChwZW5kaW5nX3Byb2dyYW0sIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgcnVubmluZ19wcm9ncmFtLmIsICdzdGFydCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3NzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9hbmltYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgdCwgcnVubmluZ19wcm9ncmFtLmIsIHJ1bm5pbmdfcHJvZ3JhbS5kdXJhdGlvbiwgMCwgZWFzaW5nLCBjb25maWcuY3NzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVubmluZ19wcm9ncmFtKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub3cgPj0gcnVubmluZ19wcm9ncmFtLmVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGljayh0ID0gcnVubmluZ19wcm9ncmFtLmIsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG5vZGUsIHJ1bm5pbmdfcHJvZ3JhbS5iLCAnZW5kJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBlbmRpbmdfcHJvZ3JhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGRvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVubmluZ19wcm9ncmFtLmIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50cm8g4oCUIHdlIGNhbiB0aWR5IHVwIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cm8g4oCUIG5lZWRzIHRvIGJlIGNvb3JkaW5hdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghLS1ydW5uaW5nX3Byb2dyYW0uZ3JvdXAucilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9hbGwocnVubmluZ19wcm9ncmFtLmdyb3VwLmMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm93ID49IHJ1bm5pbmdfcHJvZ3JhbS5zdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IG5vdyAtIHJ1bm5pbmdfcHJvZ3JhbS5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBydW5uaW5nX3Byb2dyYW0uYSArIHJ1bm5pbmdfcHJvZ3JhbS5kICogZWFzaW5nKHAgLyBydW5uaW5nX3Byb2dyYW0uZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGljayh0LCAxIC0gdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhKHJ1bm5pbmdfcHJvZ3JhbSB8fCBwZW5kaW5nX3Byb2dyYW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcnVuKGIpIHtcbiAgICAgICAgICAgIGlmIChpc19mdW5jdGlvbihjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgd2FpdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZygpO1xuICAgICAgICAgICAgICAgICAgICBnbyhiKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdvKGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlbmQoKSB7XG4gICAgICAgICAgICBjbGVhcl9hbmltYXRpb24oKTtcbiAgICAgICAgICAgIHJ1bm5pbmdfcHJvZ3JhbSA9IHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBoYW5kbGVfcHJvbWlzZShwcm9taXNlLCBpbmZvKSB7XG4gICAgY29uc3QgdG9rZW4gPSBpbmZvLnRva2VuID0ge307XG4gICAgZnVuY3Rpb24gdXBkYXRlKHR5cGUsIGluZGV4LCBrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmIChpbmZvLnRva2VuICE9PSB0b2tlbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaW5mby5yZXNvbHZlZCA9IHZhbHVlO1xuICAgICAgICBsZXQgY2hpbGRfY3R4ID0gaW5mby5jdHg7XG4gICAgICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2hpbGRfY3R4ID0gY2hpbGRfY3R4LnNsaWNlKCk7XG4gICAgICAgICAgICBjaGlsZF9jdHhba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJsb2NrID0gdHlwZSAmJiAoaW5mby5jdXJyZW50ID0gdHlwZSkoY2hpbGRfY3R4KTtcbiAgICAgICAgbGV0IG5lZWRzX2ZsdXNoID0gZmFsc2U7XG4gICAgICAgIGlmIChpbmZvLmJsb2NrKSB7XG4gICAgICAgICAgICBpZiAoaW5mby5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICBpbmZvLmJsb2Nrcy5mb3JFYWNoKChibG9jaywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gaW5kZXggJiYgYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX291dHJvcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbl9vdXQoYmxvY2ssIDEsIDEsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5mby5ibG9ja3NbaV0gPT09IGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYmxvY2tzW2ldID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX291dHJvcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmZvLmJsb2NrLmQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBibG9jay5jKCk7XG4gICAgICAgICAgICB0cmFuc2l0aW9uX2luKGJsb2NrLCAxKTtcbiAgICAgICAgICAgIGJsb2NrLm0oaW5mby5tb3VudCgpLCBpbmZvLmFuY2hvcik7XG4gICAgICAgICAgICBuZWVkc19mbHVzaCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5mby5ibG9jayA9IGJsb2NrO1xuICAgICAgICBpZiAoaW5mby5ibG9ja3MpXG4gICAgICAgICAgICBpbmZvLmJsb2Nrc1tpbmRleF0gPSBibG9jaztcbiAgICAgICAgaWYgKG5lZWRzX2ZsdXNoKSB7XG4gICAgICAgICAgICBmbHVzaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc19wcm9taXNlKHByb21pc2UpKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRfY29tcG9uZW50ID0gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCk7XG4gICAgICAgIHByb21pc2UudGhlbih2YWx1ZSA9PiB7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY3VycmVudF9jb21wb25lbnQpO1xuICAgICAgICAgICAgdXBkYXRlKGluZm8udGhlbiwgMSwgaW5mby52YWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KG51bGwpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY3VycmVudF9jb21wb25lbnQpO1xuICAgICAgICAgICAgdXBkYXRlKGluZm8uY2F0Y2gsIDIsIGluZm8uZXJyb3IsIGVycm9yKTtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChudWxsKTtcbiAgICAgICAgICAgIGlmICghaW5mby5oYXNDYXRjaCkge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gaWYgd2UgcHJldmlvdXNseSBoYWQgYSB0aGVuL2NhdGNoIGJsb2NrLCBkZXN0cm95IGl0XG4gICAgICAgIGlmIChpbmZvLmN1cnJlbnQgIT09IGluZm8ucGVuZGluZykge1xuICAgICAgICAgICAgdXBkYXRlKGluZm8ucGVuZGluZywgMCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKGluZm8uY3VycmVudCAhPT0gaW5mby50aGVuKSB7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby50aGVuLCAxLCBpbmZvLnZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGluZm8ucmVzb2x2ZWQgPSBwcm9taXNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHVwZGF0ZV9hd2FpdF9ibG9ja19icmFuY2goaW5mbywgY3R4LCBkaXJ0eSkge1xuICAgIGNvbnN0IGNoaWxkX2N0eCA9IGN0eC5zbGljZSgpO1xuICAgIGNvbnN0IHsgcmVzb2x2ZWQgfSA9IGluZm87XG4gICAgaWYgKGluZm8uY3VycmVudCA9PT0gaW5mby50aGVuKSB7XG4gICAgICAgIGNoaWxkX2N0eFtpbmZvLnZhbHVlXSA9IHJlc29sdmVkO1xuICAgIH1cbiAgICBpZiAoaW5mby5jdXJyZW50ID09PSBpbmZvLmNhdGNoKSB7XG4gICAgICAgIGNoaWxkX2N0eFtpbmZvLmVycm9yXSA9IHJlc29sdmVkO1xuICAgIH1cbiAgICBpbmZvLmJsb2NrLnAoY2hpbGRfY3R4LCBkaXJ0eSk7XG59XG5cbmNvbnN0IGdsb2JhbHMgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IHdpbmRvd1xuICAgIDogdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gZ2xvYmFsVGhpc1xuICAgICAgICA6IGdsb2JhbCk7XG5cbmZ1bmN0aW9uIGRlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIGJsb2NrLmQoMSk7XG4gICAgbG9va3VwLmRlbGV0ZShibG9jay5rZXkpO1xufVxuZnVuY3Rpb24gb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIHRyYW5zaXRpb25fb3V0KGJsb2NrLCAxLCAxLCAoKSA9PiB7XG4gICAgICAgIGxvb2t1cC5kZWxldGUoYmxvY2sua2V5KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZpeF9hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgYmxvY2suZigpO1xuICAgIGRlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCk7XG59XG5mdW5jdGlvbiBmaXhfYW5kX291dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICBibG9jay5mKCk7XG4gICAgb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCk7XG59XG5mdW5jdGlvbiB1cGRhdGVfa2V5ZWRfZWFjaChvbGRfYmxvY2tzLCBkaXJ0eSwgZ2V0X2tleSwgZHluYW1pYywgY3R4LCBsaXN0LCBsb29rdXAsIG5vZGUsIGRlc3Ryb3ksIGNyZWF0ZV9lYWNoX2Jsb2NrLCBuZXh0LCBnZXRfY29udGV4dCkge1xuICAgIGxldCBvID0gb2xkX2Jsb2Nrcy5sZW5ndGg7XG4gICAgbGV0IG4gPSBsaXN0Lmxlbmd0aDtcbiAgICBsZXQgaSA9IG87XG4gICAgY29uc3Qgb2xkX2luZGV4ZXMgPSB7fTtcbiAgICB3aGlsZSAoaS0tKVxuICAgICAgICBvbGRfaW5kZXhlc1tvbGRfYmxvY2tzW2ldLmtleV0gPSBpO1xuICAgIGNvbnN0IG5ld19ibG9ja3MgPSBbXTtcbiAgICBjb25zdCBuZXdfbG9va3VwID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IGRlbHRhcyA9IG5ldyBNYXAoKTtcbiAgICBpID0gbjtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkX2N0eCA9IGdldF9jb250ZXh0KGN0eCwgbGlzdCwgaSk7XG4gICAgICAgIGNvbnN0IGtleSA9IGdldF9rZXkoY2hpbGRfY3R4KTtcbiAgICAgICAgbGV0IGJsb2NrID0gbG9va3VwLmdldChrZXkpO1xuICAgICAgICBpZiAoIWJsb2NrKSB7XG4gICAgICAgICAgICBibG9jayA9IGNyZWF0ZV9lYWNoX2Jsb2NrKGtleSwgY2hpbGRfY3R4KTtcbiAgICAgICAgICAgIGJsb2NrLmMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkeW5hbWljKSB7XG4gICAgICAgICAgICBibG9jay5wKGNoaWxkX2N0eCwgZGlydHkpO1xuICAgICAgICB9XG4gICAgICAgIG5ld19sb29rdXAuc2V0KGtleSwgbmV3X2Jsb2Nrc1tpXSA9IGJsb2NrKTtcbiAgICAgICAgaWYgKGtleSBpbiBvbGRfaW5kZXhlcylcbiAgICAgICAgICAgIGRlbHRhcy5zZXQoa2V5LCBNYXRoLmFicyhpIC0gb2xkX2luZGV4ZXNba2V5XSkpO1xuICAgIH1cbiAgICBjb25zdCB3aWxsX21vdmUgPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgZGlkX21vdmUgPSBuZXcgU2V0KCk7XG4gICAgZnVuY3Rpb24gaW5zZXJ0KGJsb2NrKSB7XG4gICAgICAgIHRyYW5zaXRpb25faW4oYmxvY2ssIDEpO1xuICAgICAgICBibG9jay5tKG5vZGUsIG5leHQpO1xuICAgICAgICBsb29rdXAuc2V0KGJsb2NrLmtleSwgYmxvY2spO1xuICAgICAgICBuZXh0ID0gYmxvY2suZmlyc3Q7XG4gICAgICAgIG4tLTtcbiAgICB9XG4gICAgd2hpbGUgKG8gJiYgbikge1xuICAgICAgICBjb25zdCBuZXdfYmxvY2sgPSBuZXdfYmxvY2tzW24gLSAxXTtcbiAgICAgICAgY29uc3Qgb2xkX2Jsb2NrID0gb2xkX2Jsb2Nrc1tvIC0gMV07XG4gICAgICAgIGNvbnN0IG5ld19rZXkgPSBuZXdfYmxvY2sua2V5O1xuICAgICAgICBjb25zdCBvbGRfa2V5ID0gb2xkX2Jsb2NrLmtleTtcbiAgICAgICAgaWYgKG5ld19ibG9jayA9PT0gb2xkX2Jsb2NrKSB7XG4gICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgICBuZXh0ID0gbmV3X2Jsb2NrLmZpcnN0O1xuICAgICAgICAgICAgby0tO1xuICAgICAgICAgICAgbi0tO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFuZXdfbG9va3VwLmhhcyhvbGRfa2V5KSkge1xuICAgICAgICAgICAgLy8gcmVtb3ZlIG9sZCBibG9ja1xuICAgICAgICAgICAgZGVzdHJveShvbGRfYmxvY2ssIGxvb2t1cCk7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWxvb2t1cC5oYXMobmV3X2tleSkgfHwgd2lsbF9tb3ZlLmhhcyhuZXdfa2V5KSkge1xuICAgICAgICAgICAgaW5zZXJ0KG5ld19ibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGlkX21vdmUuaGFzKG9sZF9rZXkpKSB7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGVsdGFzLmdldChuZXdfa2V5KSA+IGRlbHRhcy5nZXQob2xkX2tleSkpIHtcbiAgICAgICAgICAgIGRpZF9tb3ZlLmFkZChuZXdfa2V5KTtcbiAgICAgICAgICAgIGluc2VydChuZXdfYmxvY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2lsbF9tb3ZlLmFkZChvbGRfa2V5KTtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3aGlsZSAoby0tKSB7XG4gICAgICAgIGNvbnN0IG9sZF9ibG9jayA9IG9sZF9ibG9ja3Nbb107XG4gICAgICAgIGlmICghbmV3X2xvb2t1cC5oYXMob2xkX2Jsb2NrLmtleSkpXG4gICAgICAgICAgICBkZXN0cm95KG9sZF9ibG9jaywgbG9va3VwKTtcbiAgICB9XG4gICAgd2hpbGUgKG4pXG4gICAgICAgIGluc2VydChuZXdfYmxvY2tzW24gLSAxXSk7XG4gICAgcmV0dXJuIG5ld19ibG9ja3M7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9lYWNoX2tleXMoY3R4LCBsaXN0LCBnZXRfY29udGV4dCwgZ2V0X2tleSkge1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGdldF9rZXkoZ2V0X2NvbnRleHQoY3R4LCBsaXN0LCBpKSk7XG4gICAgICAgIGlmIChrZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBoYXZlIGR1cGxpY2F0ZSBrZXlzIGluIGEga2V5ZWQgZWFjaCcpO1xuICAgICAgICB9XG4gICAgICAgIGtleXMuYWRkKGtleSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRfc3ByZWFkX3VwZGF0ZShsZXZlbHMsIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB1cGRhdGUgPSB7fTtcbiAgICBjb25zdCB0b19udWxsX291dCA9IHt9O1xuICAgIGNvbnN0IGFjY291bnRlZF9mb3IgPSB7ICQkc2NvcGU6IDEgfTtcbiAgICBsZXQgaSA9IGxldmVscy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBjb25zdCBvID0gbGV2ZWxzW2ldO1xuICAgICAgICBjb25zdCBuID0gdXBkYXRlc1tpXTtcbiAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG8pIHtcbiAgICAgICAgICAgICAgICBpZiAoIShrZXkgaW4gbikpXG4gICAgICAgICAgICAgICAgICAgIHRvX251bGxfb3V0W2tleV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbikge1xuICAgICAgICAgICAgICAgIGlmICghYWNjb3VudGVkX2ZvcltrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVtrZXldID0gbltrZXldO1xuICAgICAgICAgICAgICAgICAgICBhY2NvdW50ZWRfZm9yW2tleV0gPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldmVsc1tpXSA9IG47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvKSB7XG4gICAgICAgICAgICAgICAgYWNjb3VudGVkX2ZvcltrZXldID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0b19udWxsX291dCkge1xuICAgICAgICBpZiAoIShrZXkgaW4gdXBkYXRlKSlcbiAgICAgICAgICAgIHVwZGF0ZVtrZXldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlO1xufVxuZnVuY3Rpb24gZ2V0X3NwcmVhZF9vYmplY3Qoc3ByZWFkX3Byb3BzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBzcHJlYWRfcHJvcHMgPT09ICdvYmplY3QnICYmIHNwcmVhZF9wcm9wcyAhPT0gbnVsbCA/IHNwcmVhZF9wcm9wcyA6IHt9O1xufVxuXG4vLyBzb3VyY2U6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZGljZXMuaHRtbFxuY29uc3QgYm9vbGVhbl9hdHRyaWJ1dGVzID0gbmV3IFNldChbXG4gICAgJ2FsbG93ZnVsbHNjcmVlbicsXG4gICAgJ2FsbG93cGF5bWVudHJlcXVlc3QnLFxuICAgICdhc3luYycsXG4gICAgJ2F1dG9mb2N1cycsXG4gICAgJ2F1dG9wbGF5JyxcbiAgICAnY2hlY2tlZCcsXG4gICAgJ2NvbnRyb2xzJyxcbiAgICAnZGVmYXVsdCcsXG4gICAgJ2RlZmVyJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdmb3Jtbm92YWxpZGF0ZScsXG4gICAgJ2hpZGRlbicsXG4gICAgJ2lzbWFwJyxcbiAgICAnbG9vcCcsXG4gICAgJ211bHRpcGxlJyxcbiAgICAnbXV0ZWQnLFxuICAgICdub21vZHVsZScsXG4gICAgJ25vdmFsaWRhdGUnLFxuICAgICdvcGVuJyxcbiAgICAncGxheXNpbmxpbmUnLFxuICAgICdyZWFkb25seScsXG4gICAgJ3JlcXVpcmVkJyxcbiAgICAncmV2ZXJzZWQnLFxuICAgICdzZWxlY3RlZCdcbl0pO1xuXG5jb25zdCBpbnZhbGlkX2F0dHJpYnV0ZV9uYW1lX2NoYXJhY3RlciA9IC9bXFxzJ1wiPi89XFx1e0ZERDB9LVxcdXtGREVGfVxcdXtGRkZFfVxcdXtGRkZGfVxcdXsxRkZGRX1cXHV7MUZGRkZ9XFx1ezJGRkZFfVxcdXsyRkZGRn1cXHV7M0ZGRkV9XFx1ezNGRkZGfVxcdXs0RkZGRX1cXHV7NEZGRkZ9XFx1ezVGRkZFfVxcdXs1RkZGRn1cXHV7NkZGRkV9XFx1ezZGRkZGfVxcdXs3RkZGRX1cXHV7N0ZGRkZ9XFx1ezhGRkZFfVxcdXs4RkZGRn1cXHV7OUZGRkV9XFx1ezlGRkZGfVxcdXtBRkZGRX1cXHV7QUZGRkZ9XFx1e0JGRkZFfVxcdXtCRkZGRn1cXHV7Q0ZGRkV9XFx1e0NGRkZGfVxcdXtERkZGRX1cXHV7REZGRkZ9XFx1e0VGRkZFfVxcdXtFRkZGRn1cXHV7RkZGRkV9XFx1e0ZGRkZGfVxcdXsxMEZGRkV9XFx1ezEwRkZGRn1dL3U7XG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTJcbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNub25jaGFyYWN0ZXJcbmZ1bmN0aW9uIHNwcmVhZChhcmdzLCBjbGFzc2VzX3RvX2FkZCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5hcmdzKTtcbiAgICBpZiAoY2xhc3Nlc190b19hZGQpIHtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMuY2xhc3MgPT0gbnVsbCkge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5jbGFzcyA9IGNsYXNzZXNfdG9fYWRkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5jbGFzcyArPSAnICcgKyBjbGFzc2VzX3RvX2FkZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgc3RyID0gJyc7XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgaWYgKGludmFsaWRfYXR0cmlidXRlX25hbWVfY2hhcmFjdGVyLnRlc3QobmFtZSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXR0cmlidXRlc1tuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKVxuICAgICAgICAgICAgc3RyICs9ICcgJyArIG5hbWU7XG4gICAgICAgIGVsc2UgaWYgKGJvb2xlYW5fYXR0cmlidXRlcy5oYXMobmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKVxuICAgICAgICAgICAgICAgIHN0ciArPSAnICcgKyBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHN0ciArPSBgICR7bmFtZX09XCIke3ZhbHVlfVwiYDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzdHI7XG59XG5jb25zdCBlc2NhcGVkID0ge1xuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnLFxuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7J1xufTtcbmZ1bmN0aW9uIGVzY2FwZShodG1sKSB7XG4gICAgcmV0dXJuIFN0cmluZyhodG1sKS5yZXBsYWNlKC9bXCInJjw+XS9nLCBtYXRjaCA9PiBlc2NhcGVkW21hdGNoXSk7XG59XG5mdW5jdGlvbiBlc2NhcGVfYXR0cmlidXRlX3ZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBlc2NhcGUodmFsdWUpIDogdmFsdWU7XG59XG5mdW5jdGlvbiBlc2NhcGVfb2JqZWN0KG9iaikge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IGVzY2FwZV9hdHRyaWJ1dGVfdmFsdWUob2JqW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZWFjaChpdGVtcywgZm4pIHtcbiAgICBsZXQgc3RyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBzdHIgKz0gZm4oaXRlbXNbaV0sIGkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufVxuY29uc3QgbWlzc2luZ19jb21wb25lbnQgPSB7XG4gICAgJCRyZW5kZXI6ICgpID0+ICcnXG59O1xuZnVuY3Rpb24gdmFsaWRhdGVfY29tcG9uZW50KGNvbXBvbmVudCwgbmFtZSkge1xuICAgIGlmICghY29tcG9uZW50IHx8ICFjb21wb25lbnQuJCRyZW5kZXIpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzdmVsdGU6Y29tcG9uZW50JylcbiAgICAgICAgICAgIG5hbWUgKz0gJyB0aGlzPXsuLi59JztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGA8JHtuYW1lfT4gaXMgbm90IGEgdmFsaWQgU1NSIGNvbXBvbmVudC4gWW91IG1heSBuZWVkIHRvIHJldmlldyB5b3VyIGJ1aWxkIGNvbmZpZyB0byBlbnN1cmUgdGhhdCBkZXBlbmRlbmNpZXMgYXJlIGNvbXBpbGVkLCByYXRoZXIgdGhhbiBpbXBvcnRlZCBhcyBwcmUtY29tcGlsZWQgbW9kdWxlc2ApO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50O1xufVxuZnVuY3Rpb24gZGVidWcoZmlsZSwgbGluZSwgY29sdW1uLCB2YWx1ZXMpIHtcbiAgICBjb25zb2xlLmxvZyhge0BkZWJ1Z30gJHtmaWxlID8gZmlsZSArICcgJyA6ICcnfSgke2xpbmV9OiR7Y29sdW1ufSlgKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2codmFsdWVzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgcmV0dXJuICcnO1xufVxubGV0IG9uX2Rlc3Ryb3k7XG5mdW5jdGlvbiBjcmVhdGVfc3NyX2NvbXBvbmVudChmbikge1xuICAgIGZ1bmN0aW9uICQkcmVuZGVyKHJlc3VsdCwgcHJvcHMsIGJpbmRpbmdzLCBzbG90cywgY29udGV4dCkge1xuICAgICAgICBjb25zdCBwYXJlbnRfY29tcG9uZW50ID0gY3VycmVudF9jb21wb25lbnQ7XG4gICAgICAgIGNvbnN0ICQkID0ge1xuICAgICAgICAgICAgb25fZGVzdHJveSxcbiAgICAgICAgICAgIGNvbnRleHQ6IG5ldyBNYXAoY29udGV4dCB8fCAocGFyZW50X2NvbXBvbmVudCA/IHBhcmVudF9jb21wb25lbnQuJCQuY29udGV4dCA6IFtdKSksXG4gICAgICAgICAgICAvLyB0aGVzZSB3aWxsIGJlIGltbWVkaWF0ZWx5IGRpc2NhcmRlZFxuICAgICAgICAgICAgb25fbW91bnQ6IFtdLFxuICAgICAgICAgICAgYmVmb3JlX3VwZGF0ZTogW10sXG4gICAgICAgICAgICBhZnRlcl91cGRhdGU6IFtdLFxuICAgICAgICAgICAgY2FsbGJhY2tzOiBibGFua19vYmplY3QoKVxuICAgICAgICB9O1xuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQoeyAkJCB9KTtcbiAgICAgICAgY29uc3QgaHRtbCA9IGZuKHJlc3VsdCwgcHJvcHMsIGJpbmRpbmdzLCBzbG90cyk7XG4gICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChwYXJlbnRfY29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHJlbmRlcjogKHByb3BzID0ge30sIHsgJCRzbG90cyA9IHt9LCBjb250ZXh0ID0gbmV3IE1hcCgpIH0gPSB7fSkgPT4ge1xuICAgICAgICAgICAgb25fZGVzdHJveSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geyB0aXRsZTogJycsIGhlYWQ6ICcnLCBjc3M6IG5ldyBTZXQoKSB9O1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9ICQkcmVuZGVyKHJlc3VsdCwgcHJvcHMsIHt9LCAkJHNsb3RzLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHJ1bl9hbGwob25fZGVzdHJveSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgICAgY3NzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IEFycmF5LmZyb20ocmVzdWx0LmNzcykubWFwKGNzcyA9PiBjc3MuY29kZSkuam9pbignXFxuJyksXG4gICAgICAgICAgICAgICAgICAgIG1hcDogbnVsbCAvLyBUT0RPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBoZWFkOiByZXN1bHQudGl0bGUgKyByZXN1bHQuaGVhZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgJCRyZW5kZXJcbiAgICB9O1xufVxuZnVuY3Rpb24gYWRkX2F0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChib29sZWFuICYmICF2YWx1ZSkpXG4gICAgICAgIHJldHVybiAnJztcbiAgICByZXR1cm4gYCAke25hbWV9JHt2YWx1ZSA9PT0gdHJ1ZSAmJiBib29sZWFuX2F0dHJpYnV0ZXMuaGFzKG5hbWUpID8gJycgOiBgPSR7dHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IEpTT04uc3RyaW5naWZ5KGVzY2FwZSh2YWx1ZSkpIDogYFwiJHt2YWx1ZX1cImB9YH1gO1xufVxuZnVuY3Rpb24gYWRkX2NsYXNzZXMoY2xhc3Nlcykge1xuICAgIHJldHVybiBjbGFzc2VzID8gYCBjbGFzcz1cIiR7Y2xhc3Nlc31cImAgOiAnJztcbn1cblxuZnVuY3Rpb24gYmluZChjb21wb25lbnQsIG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgaW5kZXggPSBjb21wb25lbnQuJCQucHJvcHNbbmFtZV07XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29tcG9uZW50LiQkLmJvdW5kW2luZGV4XSA9IGNhbGxiYWNrO1xuICAgICAgICBjYWxsYmFjayhjb21wb25lbnQuJCQuY3R4W2luZGV4XSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlX2NvbXBvbmVudChibG9jaykge1xuICAgIGJsb2NrICYmIGJsb2NrLmMoKTtcbn1cbmZ1bmN0aW9uIGNsYWltX2NvbXBvbmVudChibG9jaywgcGFyZW50X25vZGVzKSB7XG4gICAgYmxvY2sgJiYgYmxvY2subChwYXJlbnRfbm9kZXMpO1xufVxuZnVuY3Rpb24gbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgdGFyZ2V0LCBhbmNob3IsIGN1c3RvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB7IGZyYWdtZW50LCBvbl9tb3VudCwgb25fZGVzdHJveSwgYWZ0ZXJfdXBkYXRlIH0gPSBjb21wb25lbnQuJCQ7XG4gICAgZnJhZ21lbnQgJiYgZnJhZ21lbnQubSh0YXJnZXQsIGFuY2hvcik7XG4gICAgaWYgKCFjdXN0b21FbGVtZW50KSB7XG4gICAgICAgIC8vIG9uTW91bnQgaGFwcGVucyBiZWZvcmUgdGhlIGluaXRpYWwgYWZ0ZXJVcGRhdGVcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdfb25fZGVzdHJveSA9IG9uX21vdW50Lm1hcChydW4pLmZpbHRlcihpc19mdW5jdGlvbik7XG4gICAgICAgICAgICBpZiAob25fZGVzdHJveSkge1xuICAgICAgICAgICAgICAgIG9uX2Rlc3Ryb3kucHVzaCguLi5uZXdfb25fZGVzdHJveSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFZGdlIGNhc2UgLSBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBpbW1lZGlhdGVseSxcbiAgICAgICAgICAgICAgICAvLyBtb3N0IGxpa2VseSBhcyBhIHJlc3VsdCBvZiBhIGJpbmRpbmcgaW5pdGlhbGlzaW5nXG4gICAgICAgICAgICAgICAgcnVuX2FsbChuZXdfb25fZGVzdHJveSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnQuJCQub25fbW91bnQgPSBbXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFmdGVyX3VwZGF0ZS5mb3JFYWNoKGFkZF9yZW5kZXJfY2FsbGJhY2spO1xufVxuZnVuY3Rpb24gZGVzdHJveV9jb21wb25lbnQoY29tcG9uZW50LCBkZXRhY2hpbmcpIHtcbiAgICBjb25zdCAkJCA9IGNvbXBvbmVudC4kJDtcbiAgICBpZiAoJCQuZnJhZ21lbnQgIT09IG51bGwpIHtcbiAgICAgICAgcnVuX2FsbCgkJC5vbl9kZXN0cm95KTtcbiAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuZChkZXRhY2hpbmcpO1xuICAgICAgICAvLyBUT0RPIG51bGwgb3V0IG90aGVyIHJlZnMsIGluY2x1ZGluZyBjb21wb25lbnQuJCQgKGJ1dCBuZWVkIHRvXG4gICAgICAgIC8vIHByZXNlcnZlIGZpbmFsIHN0YXRlPylcbiAgICAgICAgJCQub25fZGVzdHJveSA9ICQkLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgJCQuY3R4ID0gW107XG4gICAgfVxufVxuZnVuY3Rpb24gbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpIHtcbiAgICBpZiAoY29tcG9uZW50LiQkLmRpcnR5WzBdID09PSAtMSkge1xuICAgICAgICBkaXJ0eV9jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgc2NoZWR1bGVfdXBkYXRlKCk7XG4gICAgICAgIGNvbXBvbmVudC4kJC5kaXJ0eS5maWxsKDApO1xuICAgIH1cbiAgICBjb21wb25lbnQuJCQuZGlydHlbKGkgLyAzMSkgfCAwXSB8PSAoMSA8PCAoaSAlIDMxKSk7XG59XG5mdW5jdGlvbiBpbml0KGNvbXBvbmVudCwgb3B0aW9ucywgaW5zdGFuY2UsIGNyZWF0ZV9mcmFnbWVudCwgbm90X2VxdWFsLCBwcm9wcywgYXBwZW5kX3N0eWxlcywgZGlydHkgPSBbLTFdKSB7XG4gICAgY29uc3QgcGFyZW50X2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpO1xuICAgIGNvbnN0ICQkID0gY29tcG9uZW50LiQkID0ge1xuICAgICAgICBmcmFnbWVudDogbnVsbCxcbiAgICAgICAgY3R4OiBudWxsLFxuICAgICAgICAvLyBzdGF0ZVxuICAgICAgICBwcm9wcyxcbiAgICAgICAgdXBkYXRlOiBub29wLFxuICAgICAgICBub3RfZXF1YWwsXG4gICAgICAgIGJvdW5kOiBibGFua19vYmplY3QoKSxcbiAgICAgICAgLy8gbGlmZWN5Y2xlXG4gICAgICAgIG9uX21vdW50OiBbXSxcbiAgICAgICAgb25fZGVzdHJveTogW10sXG4gICAgICAgIG9uX2Rpc2Nvbm5lY3Q6IFtdLFxuICAgICAgICBiZWZvcmVfdXBkYXRlOiBbXSxcbiAgICAgICAgYWZ0ZXJfdXBkYXRlOiBbXSxcbiAgICAgICAgY29udGV4dDogbmV3IE1hcChvcHRpb25zLmNvbnRleHQgfHwgKHBhcmVudF9jb21wb25lbnQgPyBwYXJlbnRfY29tcG9uZW50LiQkLmNvbnRleHQgOiBbXSkpLFxuICAgICAgICAvLyBldmVyeXRoaW5nIGVsc2VcbiAgICAgICAgY2FsbGJhY2tzOiBibGFua19vYmplY3QoKSxcbiAgICAgICAgZGlydHksXG4gICAgICAgIHNraXBfYm91bmQ6IGZhbHNlLFxuICAgICAgICByb290OiBvcHRpb25zLnRhcmdldCB8fCBwYXJlbnRfY29tcG9uZW50LiQkLnJvb3RcbiAgICB9O1xuICAgIGFwcGVuZF9zdHlsZXMgJiYgYXBwZW5kX3N0eWxlcygkJC5yb290KTtcbiAgICBsZXQgcmVhZHkgPSBmYWxzZTtcbiAgICAkJC5jdHggPSBpbnN0YW5jZVxuICAgICAgICA/IGluc3RhbmNlKGNvbXBvbmVudCwgb3B0aW9ucy5wcm9wcyB8fCB7fSwgKGksIHJldCwgLi4ucmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXN0Lmxlbmd0aCA/IHJlc3RbMF0gOiByZXQ7XG4gICAgICAgICAgICBpZiAoJCQuY3R4ICYmIG5vdF9lcXVhbCgkJC5jdHhbaV0sICQkLmN0eFtpXSA9IHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICghJCQuc2tpcF9ib3VuZCAmJiAkJC5ib3VuZFtpXSlcbiAgICAgICAgICAgICAgICAgICAgJCQuYm91bmRbaV0odmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWFkeSlcbiAgICAgICAgICAgICAgICAgICAgbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfSlcbiAgICAgICAgOiBbXTtcbiAgICAkJC51cGRhdGUoKTtcbiAgICByZWFkeSA9IHRydWU7XG4gICAgcnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcbiAgICAvLyBgZmFsc2VgIGFzIGEgc3BlY2lhbCBjYXNlIG9mIG5vIERPTSBjb21wb25lbnRcbiAgICAkJC5mcmFnbWVudCA9IGNyZWF0ZV9mcmFnbWVudCA/IGNyZWF0ZV9mcmFnbWVudCgkJC5jdHgpIDogZmFsc2U7XG4gICAgaWYgKG9wdGlvbnMudGFyZ2V0KSB7XG4gICAgICAgIGlmIChvcHRpb25zLmh5ZHJhdGUpIHtcbiAgICAgICAgICAgIHN0YXJ0X2h5ZHJhdGluZygpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBjaGlsZHJlbihvcHRpb25zLnRhcmdldCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQubChub2Rlcyk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKGRldGFjaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuYygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmludHJvKVxuICAgICAgICAgICAgdHJhbnNpdGlvbl9pbihjb21wb25lbnQuJCQuZnJhZ21lbnQpO1xuICAgICAgICBtb3VudF9jb21wb25lbnQoY29tcG9uZW50LCBvcHRpb25zLnRhcmdldCwgb3B0aW9ucy5hbmNob3IsIG9wdGlvbnMuY3VzdG9tRWxlbWVudCk7XG4gICAgICAgIGVuZF9oeWRyYXRpbmcoKTtcbiAgICAgICAgZmx1c2goKTtcbiAgICB9XG4gICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHBhcmVudF9jb21wb25lbnQpO1xufVxubGV0IFN2ZWx0ZUVsZW1lbnQ7XG5pZiAodHlwZW9mIEhUTUxFbGVtZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgU3ZlbHRlRWxlbWVudCA9IGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25fbW91bnQgfSA9IHRoaXMuJCQ7XG4gICAgICAgICAgICB0aGlzLiQkLm9uX2Rpc2Nvbm5lY3QgPSBvbl9tb3VudC5tYXAocnVuKS5maWx0ZXIoaXNfZnVuY3Rpb24pO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBpbXByb3ZlIHR5cGluZ3NcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuJCQuc2xvdHRlZCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLiQkLnNsb3R0ZWRba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGF0dHIsIF9vbGRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXNbYXR0cl0gPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIHJ1bl9hbGwodGhpcy4kJC5vbl9kaXNjb25uZWN0KTtcbiAgICAgICAgfVxuICAgICAgICAkZGVzdHJveSgpIHtcbiAgICAgICAgICAgIGRlc3Ryb3lfY29tcG9uZW50KHRoaXMsIDEpO1xuICAgICAgICAgICAgdGhpcy4kZGVzdHJveSA9IG5vb3A7XG4gICAgICAgIH1cbiAgICAgICAgJG9uKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAvLyBUT0RPIHNob3VsZCB0aGlzIGRlbGVnYXRlIHRvIGFkZEV2ZW50TGlzdGVuZXI/XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFja3MgPSAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pKTtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgICRzZXQoJCRwcm9wcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KCQkcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kJC5za2lwX2JvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLiQkc2V0KCQkcHJvcHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgU3ZlbHRlIGNvbXBvbmVudHMuIFVzZWQgd2hlbiBkZXY9ZmFsc2UuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudCB7XG4gICAgJGRlc3Ryb3koKSB7XG4gICAgICAgIGRlc3Ryb3lfY29tcG9uZW50KHRoaXMsIDEpO1xuICAgICAgICB0aGlzLiRkZXN0cm95ID0gbm9vcDtcbiAgICB9XG4gICAgJG9uKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrcyA9ICh0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSB8fCAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gPSBbXSkpO1xuICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGNhbGxiYWNrcy5pbmRleE9mKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgICRzZXQoJCRwcm9wcykge1xuICAgICAgICBpZiAodGhpcy4kJHNldCAmJiAhaXNfZW1wdHkoJCRwcm9wcykpIHtcbiAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiQkc2V0KCQkcHJvcHMpO1xuICAgICAgICAgICAgdGhpcy4kJC5za2lwX2JvdW5kID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoX2Rldih0eXBlLCBkZXRhaWwpIHtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbV9ldmVudCh0eXBlLCBPYmplY3QuYXNzaWduKHsgdmVyc2lvbjogJzMuNDUuMCcgfSwgZGV0YWlsKSwgdHJ1ZSkpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2Rldih0YXJnZXQsIG5vZGUpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlIH0pO1xuICAgIGFwcGVuZCh0YXJnZXQsIG5vZGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2h5ZHJhdGlvbl9kZXYodGFyZ2V0LCBub2RlKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSB9KTtcbiAgICBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSk7XG59XG5mdW5jdGlvbiBpbnNlcnRfZGV2KHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSwgYW5jaG9yIH0pO1xuICAgIGluc2VydCh0YXJnZXQsIG5vZGUsIGFuY2hvcik7XG59XG5mdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uX2Rldih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUsIGFuY2hvciB9KTtcbiAgICBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKTtcbn1cbmZ1bmN0aW9uIGRldGFjaF9kZXYobm9kZSkge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlJywgeyBub2RlIH0pO1xuICAgIGRldGFjaChub2RlKTtcbn1cbmZ1bmN0aW9uIGRldGFjaF9iZXR3ZWVuX2RldihiZWZvcmUsIGFmdGVyKSB7XG4gICAgd2hpbGUgKGJlZm9yZS5uZXh0U2libGluZyAmJiBiZWZvcmUubmV4dFNpYmxpbmcgIT09IGFmdGVyKSB7XG4gICAgICAgIGRldGFjaF9kZXYoYmVmb3JlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2hfYmVmb3JlX2RldihhZnRlcikge1xuICAgIHdoaWxlIChhZnRlci5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgZGV0YWNoX2RldihhZnRlci5wcmV2aW91c1NpYmxpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRldGFjaF9hZnRlcl9kZXYoYmVmb3JlKSB7XG4gICAgd2hpbGUgKGJlZm9yZS5uZXh0U2libGluZykge1xuICAgICAgICBkZXRhY2hfZGV2KGJlZm9yZS5uZXh0U2libGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbGlzdGVuX2Rldihub2RlLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucywgaGFzX3ByZXZlbnRfZGVmYXVsdCwgaGFzX3N0b3BfcHJvcGFnYXRpb24pIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBvcHRpb25zID09PSB0cnVlID8gWydjYXB0dXJlJ10gOiBvcHRpb25zID8gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvcHRpb25zKSkgOiBbXTtcbiAgICBpZiAoaGFzX3ByZXZlbnRfZGVmYXVsdClcbiAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3ByZXZlbnREZWZhdWx0Jyk7XG4gICAgaWYgKGhhc19zdG9wX3Byb3BhZ2F0aW9uKVxuICAgICAgICBtb2RpZmllcnMucHVzaCgnc3RvcFByb3BhZ2F0aW9uJyk7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01BZGRFdmVudExpc3RlbmVyJywgeyBub2RlLCBldmVudCwgaGFuZGxlciwgbW9kaWZpZXJzIH0pO1xuICAgIGNvbnN0IGRpc3Bvc2UgPSBsaXN0ZW4obm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlRXZlbnRMaXN0ZW5lcicsIHsgbm9kZSwgZXZlbnQsIGhhbmRsZXIsIG1vZGlmaWVycyB9KTtcbiAgICAgICAgZGlzcG9zZSgpO1xuICAgIH07XG59XG5mdW5jdGlvbiBhdHRyX2Rldihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01SZW1vdmVBdHRyaWJ1dGUnLCB7IG5vZGUsIGF0dHJpYnV0ZSB9KTtcbiAgICBlbHNlXG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0QXR0cmlidXRlJywgeyBub2RlLCBhdHRyaWJ1dGUsIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gcHJvcF9kZXYobm9kZSwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgbm9kZVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldFByb3BlcnR5JywgeyBub2RlLCBwcm9wZXJ0eSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBkYXRhc2V0X2Rldihub2RlLCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICBub2RlLmRhdGFzZXRbcHJvcGVydHldID0gdmFsdWU7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXREYXRhc2V0JywgeyBub2RlLCBwcm9wZXJ0eSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBzZXRfZGF0YV9kZXYodGV4dCwgZGF0YSkge1xuICAgIGRhdGEgPSAnJyArIGRhdGE7XG4gICAgaWYgKHRleHQud2hvbGVUZXh0ID09PSBkYXRhKVxuICAgICAgICByZXR1cm47XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXREYXRhJywgeyBub2RlOiB0ZXh0LCBkYXRhIH0pO1xuICAgIHRleHQuZGF0YSA9IGRhdGE7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9lYWNoX2FyZ3VtZW50KGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnc3RyaW5nJyAmJiAhKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBhcmcpKSB7XG4gICAgICAgIGxldCBtc2cgPSAneyNlYWNofSBvbmx5IGl0ZXJhdGVzIG92ZXIgYXJyYXktbGlrZSBvYmplY3RzLic7XG4gICAgICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIGFyZyAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gYXJnKSB7XG4gICAgICAgICAgICBtc2cgKz0gJyBZb3UgY2FuIHVzZSBhIHNwcmVhZCB0byBjb252ZXJ0IHRoaXMgaXRlcmFibGUgaW50byBhbiBhcnJheS4nO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX3Nsb3RzKG5hbWUsIHNsb3QsIGtleXMpIHtcbiAgICBmb3IgKGNvbnN0IHNsb3Rfa2V5IG9mIE9iamVjdC5rZXlzKHNsb3QpKSB7XG4gICAgICAgIGlmICghfmtleXMuaW5kZXhPZihzbG90X2tleSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgPCR7bmFtZX0+IHJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgc2xvdCBcIiR7c2xvdF9rZXl9XCIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzIHdpdGggc29tZSBtaW5vciBkZXYtZW5oYW5jZW1lbnRzLiBVc2VkIHdoZW4gZGV2PXRydWUuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudERldiBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgKCFvcHRpb25zLnRhcmdldCAmJiAhb3B0aW9ucy4kJGlubGluZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIid0YXJnZXQnIGlzIGEgcmVxdWlyZWQgb3B0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgICRkZXN0cm95KCkge1xuICAgICAgICBzdXBlci4kZGVzdHJveSgpO1xuICAgICAgICB0aGlzLiRkZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnQgd2FzIGFscmVhZHkgZGVzdHJveWVkJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAkY2FwdHVyZV9zdGF0ZSgpIHsgfVxuICAgICRpbmplY3Rfc3RhdGUoKSB7IH1cbn1cbi8qKlxuICogQmFzZSBjbGFzcyB0byBjcmVhdGUgc3Ryb25nbHkgdHlwZWQgU3ZlbHRlIGNvbXBvbmVudHMuXG4gKiBUaGlzIG9ubHkgZXhpc3RzIGZvciB0eXBpbmcgcHVycG9zZXMgYW5kIHNob3VsZCBiZSB1c2VkIGluIGAuZC50c2AgZmlsZXMuXG4gKlxuICogIyMjIEV4YW1wbGU6XG4gKlxuICogWW91IGhhdmUgY29tcG9uZW50IGxpYnJhcnkgb24gbnBtIGNhbGxlZCBgY29tcG9uZW50LWxpYnJhcnlgLCBmcm9tIHdoaWNoXG4gKiB5b3UgZXhwb3J0IGEgY29tcG9uZW50IGNhbGxlZCBgTXlDb21wb25lbnRgLiBGb3IgU3ZlbHRlK1R5cGVTY3JpcHQgdXNlcnMsXG4gKiB5b3Ugd2FudCB0byBwcm92aWRlIHR5cGluZ3MuIFRoZXJlZm9yZSB5b3UgY3JlYXRlIGEgYGluZGV4LmQudHNgOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFN2ZWx0ZUNvbXBvbmVudFR5cGVkIH0gZnJvbSBcInN2ZWx0ZVwiO1xuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50VHlwZWQ8e2Zvbzogc3RyaW5nfT4ge31cbiAqIGBgYFxuICogVHlwaW5nIHRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIElERXMgbGlrZSBWUyBDb2RlIHdpdGggdGhlIFN2ZWx0ZSBleHRlbnNpb25cbiAqIHRvIHByb3ZpZGUgaW50ZWxsaXNlbnNlIGFuZCB0byB1c2UgdGhlIGNvbXBvbmVudCBsaWtlIHRoaXMgaW4gYSBTdmVsdGUgZmlsZVxuICogd2l0aCBUeXBlU2NyaXB0OlxuICogYGBgc3ZlbHRlXG4gKiA8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICogXHRpbXBvcnQgeyBNeUNvbXBvbmVudCB9IGZyb20gXCJjb21wb25lbnQtbGlicmFyeVwiO1xuICogPC9zY3JpcHQ+XG4gKiA8TXlDb21wb25lbnQgZm9vPXsnYmFyJ30gLz5cbiAqIGBgYFxuICpcbiAqICMjIyMgV2h5IG5vdCBtYWtlIHRoaXMgcGFydCBvZiBgU3ZlbHRlQ29tcG9uZW50KERldilgP1xuICogQmVjYXVzZVxuICogYGBgdHNcbiAqIGNsYXNzIEFTdWJjbGFzc09mU3ZlbHRlQ29tcG9uZW50IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50PHtmb286IHN0cmluZ30+IHt9XG4gKiBjb25zdCBjb21wb25lbnQ6IHR5cGVvZiBTdmVsdGVDb21wb25lbnQgPSBBU3ViY2xhc3NPZlN2ZWx0ZUNvbXBvbmVudDtcbiAqIGBgYFxuICogd2lsbCB0aHJvdyBhIHR5cGUgZXJyb3IsIHNvIHdlIG5lZWQgdG8gc2VwYXJhdGUgdGhlIG1vcmUgc3RyaWN0bHkgdHlwZWQgY2xhc3MuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudFR5cGVkIGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50RGV2IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvb3BfZ3VhcmQodGltZW91dCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gdGltZW91dCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmZpbml0ZSBsb29wIGRldGVjdGVkJyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgeyBIdG1sVGFnLCBIdG1sVGFnSHlkcmF0aW9uLCBTdmVsdGVDb21wb25lbnQsIFN2ZWx0ZUNvbXBvbmVudERldiwgU3ZlbHRlQ29tcG9uZW50VHlwZWQsIFN2ZWx0ZUVsZW1lbnQsIGFjdGlvbl9kZXN0cm95ZXIsIGFkZF9hdHRyaWJ1dGUsIGFkZF9jbGFzc2VzLCBhZGRfZmx1c2hfY2FsbGJhY2ssIGFkZF9sb2NhdGlvbiwgYWRkX3JlbmRlcl9jYWxsYmFjaywgYWRkX3Jlc2l6ZV9saXN0ZW5lciwgYWRkX3RyYW5zZm9ybSwgYWZ0ZXJVcGRhdGUsIGFwcGVuZCwgYXBwZW5kX2RldiwgYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQsIGFwcGVuZF9oeWRyYXRpb24sIGFwcGVuZF9oeWRyYXRpb25fZGV2LCBhcHBlbmRfc3R5bGVzLCBhc3NpZ24sIGF0dHIsIGF0dHJfZGV2LCBhdHRyaWJ1dGVfdG9fb2JqZWN0LCBiZWZvcmVVcGRhdGUsIGJpbmQsIGJpbmRpbmdfY2FsbGJhY2tzLCBibGFua19vYmplY3QsIGJ1YmJsZSwgY2hlY2tfb3V0cm9zLCBjaGlsZHJlbiwgY2xhaW1fY29tcG9uZW50LCBjbGFpbV9lbGVtZW50LCBjbGFpbV9odG1sX3RhZywgY2xhaW1fc3BhY2UsIGNsYWltX3N2Z19lbGVtZW50LCBjbGFpbV90ZXh0LCBjbGVhcl9sb29wcywgY29tcG9uZW50X3N1YnNjcmliZSwgY29tcHV0ZV9yZXN0X3Byb3BzLCBjb21wdXRlX3Nsb3RzLCBjcmVhdGVFdmVudERpc3BhdGNoZXIsIGNyZWF0ZV9hbmltYXRpb24sIGNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24sIGNyZWF0ZV9jb21wb25lbnQsIGNyZWF0ZV9pbl90cmFuc2l0aW9uLCBjcmVhdGVfb3V0X3RyYW5zaXRpb24sIGNyZWF0ZV9zbG90LCBjcmVhdGVfc3NyX2NvbXBvbmVudCwgY3VycmVudF9jb21wb25lbnQsIGN1c3RvbV9ldmVudCwgZGF0YXNldF9kZXYsIGRlYnVnLCBkZXN0cm95X2Jsb2NrLCBkZXN0cm95X2NvbXBvbmVudCwgZGVzdHJveV9lYWNoLCBkZXRhY2gsIGRldGFjaF9hZnRlcl9kZXYsIGRldGFjaF9iZWZvcmVfZGV2LCBkZXRhY2hfYmV0d2Vlbl9kZXYsIGRldGFjaF9kZXYsIGRpcnR5X2NvbXBvbmVudHMsIGRpc3BhdGNoX2RldiwgZWFjaCwgZWxlbWVudCwgZWxlbWVudF9pcywgZW1wdHksIGVuZF9oeWRyYXRpbmcsIGVzY2FwZSwgZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZSwgZXNjYXBlX29iamVjdCwgZXNjYXBlZCwgZXhjbHVkZV9pbnRlcm5hbF9wcm9wcywgZml4X2FuZF9kZXN0cm95X2Jsb2NrLCBmaXhfYW5kX291dHJvX2FuZF9kZXN0cm95X2Jsb2NrLCBmaXhfcG9zaXRpb24sIGZsdXNoLCBnZXRBbGxDb250ZXh0cywgZ2V0Q29udGV4dCwgZ2V0X2FsbF9kaXJ0eV9mcm9tX3Njb3BlLCBnZXRfYmluZGluZ19ncm91cF92YWx1ZSwgZ2V0X2N1cnJlbnRfY29tcG9uZW50LCBnZXRfY3VzdG9tX2VsZW1lbnRzX3Nsb3RzLCBnZXRfcm9vdF9mb3Jfc3R5bGUsIGdldF9zbG90X2NoYW5nZXMsIGdldF9zcHJlYWRfb2JqZWN0LCBnZXRfc3ByZWFkX3VwZGF0ZSwgZ2V0X3N0b3JlX3ZhbHVlLCBnbG9iYWxzLCBncm91cF9vdXRyb3MsIGhhbmRsZV9wcm9taXNlLCBoYXNDb250ZXh0LCBoYXNfcHJvcCwgaWRlbnRpdHksIGluaXQsIGluc2VydCwgaW5zZXJ0X2RldiwgaW5zZXJ0X2h5ZHJhdGlvbiwgaW5zZXJ0X2h5ZHJhdGlvbl9kZXYsIGludHJvcywgaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIsIGlzX2NsaWVudCwgaXNfY3Jvc3NvcmlnaW4sIGlzX2VtcHR5LCBpc19mdW5jdGlvbiwgaXNfcHJvbWlzZSwgbGlzdGVuLCBsaXN0ZW5fZGV2LCBsb29wLCBsb29wX2d1YXJkLCBtaXNzaW5nX2NvbXBvbmVudCwgbW91bnRfY29tcG9uZW50LCBub29wLCBub3RfZXF1YWwsIG5vdywgbnVsbF90b19lbXB0eSwgb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllcywgb25EZXN0cm95LCBvbk1vdW50LCBvbmNlLCBvdXRyb19hbmRfZGVzdHJveV9ibG9jaywgcHJldmVudF9kZWZhdWx0LCBwcm9wX2RldiwgcXVlcnlfc2VsZWN0b3JfYWxsLCByYWYsIHJ1biwgcnVuX2FsbCwgc2FmZV9ub3RfZXF1YWwsIHNjaGVkdWxlX3VwZGF0ZSwgc2VsZWN0X211bHRpcGxlX3ZhbHVlLCBzZWxlY3Rfb3B0aW9uLCBzZWxlY3Rfb3B0aW9ucywgc2VsZWN0X3ZhbHVlLCBzZWxmLCBzZXRDb250ZXh0LCBzZXRfYXR0cmlidXRlcywgc2V0X2N1cnJlbnRfY29tcG9uZW50LCBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YSwgc2V0X2RhdGEsIHNldF9kYXRhX2Rldiwgc2V0X2lucHV0X3R5cGUsIHNldF9pbnB1dF92YWx1ZSwgc2V0X25vdywgc2V0X3JhZiwgc2V0X3N0b3JlX3ZhbHVlLCBzZXRfc3R5bGUsIHNldF9zdmdfYXR0cmlidXRlcywgc3BhY2UsIHNwcmVhZCwgc3JjX3VybF9lcXVhbCwgc3RhcnRfaHlkcmF0aW5nLCBzdG9wX3Byb3BhZ2F0aW9uLCBzdWJzY3JpYmUsIHN2Z19lbGVtZW50LCB0ZXh0LCB0aWNrLCB0aW1lX3Jhbmdlc190b19hcnJheSwgdG9fbnVtYmVyLCB0b2dnbGVfY2xhc3MsIHRyYW5zaXRpb25faW4sIHRyYW5zaXRpb25fb3V0LCB0cnVzdGVkLCB1cGRhdGVfYXdhaXRfYmxvY2tfYnJhbmNoLCB1cGRhdGVfa2V5ZWRfZWFjaCwgdXBkYXRlX3Nsb3QsIHVwZGF0ZV9zbG90X2Jhc2UsIHZhbGlkYXRlX2NvbXBvbmVudCwgdmFsaWRhdGVfZWFjaF9hcmd1bWVudCwgdmFsaWRhdGVfZWFjaF9rZXlzLCB2YWxpZGF0ZV9zbG90cywgdmFsaWRhdGVfc3RvcmUsIHhsaW5rX2F0dHIgfTtcbiIsImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgTUFYX0ZPTlRfU0laRSwgTUFYX05PREVfU0laRSwgTUFYX1RFWFRfV0lEVEgsIE1JTl9GT05UX1NJWkUsIE1JTl9OT0RFX1NJWkUsIE1JTl9URVhUX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmV4cG9ydCBjb25zdCBTVFlMRVNIRUVUX1BBVEggPSBmdW5jdGlvbiAodmF1bHQpIHtcbiAgICByZXR1cm4gYCR7dmF1bHQuY29uZmlnRGlyfS9wbHVnaW5zL2p1Z2dsL2dyYXBoLmNzc2A7XG59O1xuZXhwb3J0IGNvbnN0IFNIQVBFUyA9IFsnZWxsaXBzZScsXG4gICAgJ3JlY3RhbmdsZScsXG4gICAgJ3RyaWFuZ2xlJyxcbiAgICAnZGlhbW9uZCcsXG4gICAgJ3BlbnRhZ29uJyxcbiAgICAnaGV4YWdvbicsXG4gICAgJ3RhZycsXG4gICAgJ3Job21ib2lkJyxcbiAgICAnc3RhcicsXG4gICAgJ3ZlZScsXG4gICAgJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgJ3JvdW5kLXRyaWFuZ2xlJyxcbiAgICAncm91bmQtZGlhbW9uZCcsXG4gICAgJ3JvdW5kLXBlbnRhZ29uJyxcbiAgICAncm91bmQtaGV4YWdvbicsXG4gICAgJ3JvdW5kLXRhZycsXG5dO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFUl9TSEVFVCA9IGBcbi8qIEZvciBhIGZ1bGwgb3ZlcnZpZXcgb2Ygc3R5bGluZyBvcHRpb25zLCBzZWUgaHR0cHM6Ly9qcy5jeXRvc2NhcGUub3JnLyNzdHlsZSAqL1xuYDtcbmNvbnN0IFlBTUxfTU9ESUZZX1NIRUVUID0gYFxuXG5cbm5vZGVbdGl0bGVdIHtcbiAgbGFiZWw6IGRhdGEodGl0bGUpO1xufVxuXG5ub2RlW2NvbG9yXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IGRhdGEoY29sb3IpO1xufVxuXG5ub2RlW3NoYXBlXSB7XG4gIHNoYXBlOiBkYXRhKHNoYXBlKTtcbn1cblxubm9kZVt3aWR0aF0ge1xuICB3aWR0aDogZGF0YSh3aWR0aCk7XG59XG5cbm5vZGVbaGVpZ2h0XSB7XG4gIHdpZHRoOiBkYXRhKGhlaWdodCk7XG59XG5cbm5vZGVbaW1hZ2VdIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogZGF0YShpbWFnZSk7XG59XG5gO1xuZXhwb3J0IGNvbnN0IGdldEdyYXBoQ29sb3IgPSBmdW5jdGlvbiAoY2xhenopIHtcbiAgICAvLyBIYWNreSB3YXkgdG8gZ2V0IHN0eWxlIHByb3BlcnRpZXMgc2V0IGZvciBPYnNpZGlhbnMgZ3JhcGggdmlld1xuICAgIGNvbnN0IGdyYXBoRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZ3JhcGhEaXYuYWRkQ2xhc3MoJ2dyYXBoLXZpZXcnLCBjbGF6eik7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChncmFwaERpdik7XG4gICAgY29uc3QgY29tcHV0ZWRDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZ3JhcGhEaXYpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJyk7XG4gICAgZ3JhcGhEaXYuZGV0YWNoKCk7XG4gICAgcmV0dXJuIGNvbXB1dGVkQ29sb3I7XG59O1xuLypcbmRlZmF1bHRTaGVldCBjb21lcyBiZWZvcmUgZ3JhcGguY3NzLCB5YW1sTW9kaWZ5U2hlZXQgY29tZXMgYWZ0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFN0eWxlU2hlZXQge1xuICAgIGNvbnN0cnVjdG9yKHBsdWdpbikge1xuICAgICAgICB0aGlzLmRlZmF1bHRTaGVldCA9IHRoaXMuZ2V0RGVmYXVsdFN0eWxlc2hlZXQoKTtcbiAgICAgICAgdGhpcy55YW1sTW9kaWZ5U2hlZXQgPSBZQU1MX01PRElGWV9TSEVFVDtcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgfVxuICAgIGFzeW5jIGdldFN0eWxlc2hlZXQodml6KSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnBsdWdpbi52YXVsdC5hZGFwdGVyLmdldEZ1bGxQYXRoKFNUWUxFU0hFRVRfUEFUSCh0aGlzLnBsdWdpbi52YXVsdCkpO1xuICAgICAgICAvLyBjb25zdCBjdXN0b21TaGVldCA9ICcnO1xuICAgICAgICBsZXQgY3VzdG9tU2hlZXQgPSAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGN1c3RvbVNoZWV0ID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZSwgJ3V0Zi04JylcbiAgICAgICAgICAgICAgICAuY2F0Y2goYXN5bmMgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3N0bVNoZWV0ID0gREVGQVVMVF9VU0VSX1NIRUVUO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZSwgY3N0bVNoZWV0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzdG1TaGVldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvdWxkblxcJ3QgbG9hZCB1c2VyIHN0eWxlc2hlZXQuIFRoaXMgaXMgcHJvYmFibHkgYmVjYXVzZSB3ZSBhcmUgb24gbW9iaWxlJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBPcmRlcmluZzogSWYgcGVvcGxlIHNwZWNpZnkgc29tZSBuZXcgWUFNTCBwcm9wZXJ0eSB0byB0YWtlIGludG8gYWNjb3VudCwgc3R5bGUgZ3JvdXBzIHdpbGwgb3ZlcnJpZGUgdGhpcyFcbiAgICAgICAgbGV0IGdsb2JhbEdyb3VwcyA9ICcnO1xuICAgICAgICBpZiAoJ3NldHRpbmdzJyBpbiB0aGlzLnBsdWdpbikge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZ2xvYmFsR3JvdXBzID0gdGhpcy5zdHlsZUdyb3Vwc1RvU2hlZXQodGhpcy5wbHVnaW4uc2V0dGluZ3MuZ2xvYmFsU3R5bGVHcm91cHMsICdnbG9iYWwnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2NhbEdyb3VwcyA9IHRoaXMuc3R5bGVHcm91cHNUb1NoZWV0KHZpei5zZXR0aW5ncy5zdHlsZUdyb3VwcywgJ2xvY2FsJyk7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRTaGVldCArIGdsb2JhbEdyb3VwcyArIGN1c3RvbVNoZWV0ICsgbG9jYWxHcm91cHMgKyB0aGlzLnlhbWxNb2RpZnlTaGVldDtcbiAgICB9XG4gICAgY29sb3JUb1JHQkEoY29sKSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXMud2lkdGggPSBjYW52YXMuaGVpZ2h0ID0gMTtcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgMSwgMSk7XG4gICAgICAgIC8vIEluIG9yZGVyIHRvIGRldGVjdCBpbnZhbGlkIHZhbHVlcyxcbiAgICAgICAgLy8gd2UgY2FuJ3QgcmVseSBvbiBjb2wgYmVpbmcgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHdoYXQgZmlsbFN0eWxlIGlzIGNvbXB1dGVkIGFzLFxuICAgICAgICAvLyBidXQgd2UgY2FuIGFzayBpdCB0byBpbXBsaWNpdGx5IGNvbXB1dGUgYSBub3JtYWxpemVkIHZhbHVlIHR3aWNlIGFuZCBjb21wYXJlLlxuICAgICAgICBjdHguZmlsbFN0eWxlID0gJyMwMDAnO1xuICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sO1xuICAgICAgICBjb25zdCBjb21wdXRlZCA9IGN0eC5maWxsU3R5bGU7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZic7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2w7XG4gICAgICAgIGlmIChjb21wdXRlZCAhPT0gY3R4LmZpbGxTdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpbnZhbGlkIGNvbG9yXG4gICAgICAgIH1cbiAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEsIDEpO1xuICAgICAgICBjb25zdCByZ2JhID0gWy4uLmN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkuZGF0YV07XG4gICAgICAgIHJldHVybiBgcmdiKCR7cmdiYVswXX0sICR7cmdiYVsxXX0sICR7cmdiYVsyXX0pYDtcbiAgICB9XG4gICAgc3R5bGVHcm91cHNUb1NoZWV0KGdyb3VwcywgZ3JvdXBQcmVmaXgpIHtcbiAgICAgICAgbGV0IHNoZWV0ID0gJyc7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXI7XG4gICAgICAgIGZvciAoY29uc3QgW2luZGV4LCB2YWxdIG9mIGdyb3Vwcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmICh2YWwuc2hvdykge1xuICAgICAgICAgICAgICAgIGxldCBpY29uID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHZhbC5pY29uICYmIHZhbC5pY29uLnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ZnID0gJzw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCIgPz4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8IURPQ1RZUEUgc3ZnPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZlcnNpb249XCIxLjFcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGA8cGF0aCBmaWxsPVwiJHt2YWwuaWNvbi5jb2xvcn1cIiBkPVwiJHt2YWwuaWNvbi5wYXRofVwiIC8+YCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPC9zdmc+JztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3ZnLCAndGV4dC94bWwnKS5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICAgICAgICAgICAgICBpY29uID0gYGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCR7ZW5jb2RlVVJJQ29tcG9uZW50KGh0bWwpfScpO2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFVudGlsIHNpemUgPSAxLCBsZXQgdGV4dCBzaXplIGxpbmVhcmx5IHNjYWxlIHdpdGggbm9kZSwgdGhlbiBzY2FsZSB0aGUgc3F1YXJlIHJvb3QuXG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dFNpemVNb2RpZmllciA9IE1hdGgubWF4KE1hdGgubWluKHZhbC5zaXplLCAxKSwgTWF0aC5zcXJ0KHZhbC5zaXplKSk7XG4gICAgICAgICAgICAgICAgc2hlZXQgKz0gYFxubm9kZS4ke2dyb3VwUHJlZml4fS0ke2luZGV4fSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7dmFsLmNvbG9yfTtcbiAgc2hhcGU6ICR7dmFsLnNoYXBlfTtcbiAgYmFja2dyb3VuZC1maXQ6IGNvbnRhaW47XG4gICR7aWNvbn0gXG4gIHdpZHRoOiBtYXBEYXRhKGRlZ3JlZSwgMCwgNjAsICR7TUlOX05PREVfU0laRSAqIHZhbC5zaXplfSwgJHtNQVhfTk9ERV9TSVpFICogdmFsLnNpemV9KTtcbiAgaGVpZ2h0OiBtYXBEYXRhKGRlZ3JlZSwgMCwgNjAsICR7TUlOX05PREVfU0laRSAqIHZhbC5zaXplfSwgJHtNQVhfTk9ERV9TSVpFICogdmFsLnNpemV9KTtcbiAgZm9udC1zaXplOiBtYXBEYXRhKGRlZ3JlZSwgMCwgNjAsICR7TUlOX0ZPTlRfU0laRSAqIHRleHRTaXplTW9kaWZpZXJ9LCAke01BWF9GT05UX1NJWkUgKiB0ZXh0U2l6ZU1vZGlmaWVyfSk7XG4gIHRleHQtbWF4LXdpZHRoOiBtYXBEYXRhKGRlZ3JlZSwgMCwgNjAsICR7TWF0aC5yb3VuZChNSU5fVEVYVF9XSURUSCAqIHRleHRTaXplTW9kaWZpZXIpfXB4LCAke01hdGgucm91bmQoTUFYX1RFWFRfV0lEVEggKiB0ZXh0U2l6ZU1vZGlmaWVyKX1weCk7XG59ICAgICAgICAgXG5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hlZXQgKz0gYFxubm9kZS4ke2dyb3VwUHJlZml4fS0ke2luZGV4fSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGVldDtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdFN0eWxlc2hlZXQoKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgbGV0IGZvbnQgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXRleHQnKTtcbiAgICAgICAgZm9udCA9IGZvbnQucmVwbGFjZSgnQmxpbmtNYWNTeXN0ZW1Gb250LCcsICcnKTsgLy8gVGhpcyBjcmFzaGVzIGVsZWN0cm9uIGZvciBzb21lIHJlYXNvbi5cbiAgICAgICAgaWYgKGZvbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBmb250ID0gJ0hlbHZldGljYSBOZXVlJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxsQ29sb3IgPSBnZXRHcmFwaENvbG9yKCdjb2xvci1maWxsJyk7XG4gICAgICAgIGNvbnN0IGZpbGxIaWdobGlnaHRDb2xvciA9IGdldEdyYXBoQ29sb3IoJ2NvbG9yLWZpbGwtaGlnaGxpZ2h0Jyk7XG4gICAgICAgIGNvbnN0IGFjY2VudEJvcmRlckNvbG9yID0gZ2V0R3JhcGhDb2xvcignY29sb3ItY2lyY2xlJyk7XG4gICAgICAgIGNvbnN0IGxpbmVDb2xvciA9IGdldEdyYXBoQ29sb3IoJ2NvbG9yLWxpbmUnKTtcbiAgICAgICAgY29uc3QgbGluZUhpZ2hsaWdodENvbG9yID0gZ2V0R3JhcGhDb2xvcignY29sb3ItbGluZS1oaWdobGlnaHQnKTtcbiAgICAgICAgY29uc3QgdGV4dENvbG9yID0gZ2V0R3JhcGhDb2xvcignY29sb3ItdGV4dCcpO1xuICAgICAgICBjb25zdCBkYW5nbGluZ0NvbG9yID0gZ2V0R3JhcGhDb2xvcignY29sb3ItZmlsbC11bnJlc29sdmVkJyk7XG4gICAgICAgIHJldHVybiBgXG5ub2RlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtmaWxsQ29sb3J9O1xuICBjb2xvcjogJHt0ZXh0Q29sb3J9O1xuICBmb250LWZhbWlseTogJHtmb250fTtcbiAgdGV4dC12YWxpZ246IGJvdHRvbTtcbiAgc2hhcGU6IGVsbGlwc2U7XG4gIGJvcmRlci13aWR0aDogMDtcbiAgdGV4dC13cmFwOiB3cmFwO1xuICBtaW4tem9vbWVkLWZvbnQtc2l6ZTogODtcbn1cblxubm9kZVtuYW1lXSB7XG4gIGxhYmVsOiBkYXRhKG5hbWUpO1xufVxubm9kZVtkZWdyZWVdIHtcbiAgd2lkdGg6IG1hcERhdGEoZGVncmVlLCAwLCA2MCwgJHtNSU5fTk9ERV9TSVpFfSwgJHtNQVhfTk9ERV9TSVpFfSk7XG4gIGhlaWdodDogbWFwRGF0YShkZWdyZWUsIDAsIDYwLCAke01JTl9OT0RFX1NJWkV9LCAke01BWF9OT0RFX1NJWkV9KTtcbiAgZm9udC1zaXplOiBtYXBEYXRhKGRlZ3JlZSwgMCwgNjAsICR7TUlOX0ZPTlRfU0laRX0sICR7TUFYX0ZPTlRfU0laRX0pO1xuICB0ZXh0LW9wYWNpdHk6IG1hcERhdGEoZGVncmVlLCAwLCA2MCwgMC43LCAxKTtcbiAgdGV4dC1tYXgtd2lkdGg6IG1hcERhdGEoZGVncmVlLCAwLCA2MCwgJHtNSU5fVEVYVF9XSURUSH1weCwgJHtNQVhfVEVYVF9XSURUSH1weCk7XG59XG5cbm5vZGU6c2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWJsYWNrZW46IDAuMztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIFxufVxubm9kZTpzZWxlY3RlZFtkZWdyZWVdIHtcbiAgYm9yZGVyLXdpZHRoOiBtYXBEYXRhKGRlZ3JlZSwgMCwgNjAsIDEsIDMpO1xufVxuXG4uZGFuZ2xpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2RhbmdsaW5nQ29sb3J9O1xufVxuXG4uaW1hZ2Uge1xuICBzaGFwZTogcm91bmQtcmVjdGFuZ2xlO1xuICB3aWR0aDogNTA7XG4gIGhlaWdodDogNTA7XG4gIGJhY2tncm91bmQtb3BhY2l0eTogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogZGF0YShyZXNvdXJjZV91cmwpO1xuICBiYWNrZ3JvdW5kLWltYWdlLWNyb3Nzb3JpZ2luOiBhbm9ueW1vdXM7XG4gIGJhY2tncm91bmQtaW1hZ2Utb3BhY2l0eTogMTtcbiAgYmFja2dyb3VuZC1maXQ6IGNvbnRhaW47XG4gIGZvbnQtc2l6ZTogMDtcbiAgYmFja2dyb3VuZC1jbGlwOiBub2RlO1xufVxuXG4uaW1hZ2Uubm90ZSB7XG4gIGZvbnQtc2l6ZTogbWFwRGF0YShkZWdyZWUsIDAsIDYwLCA1LCAxMSk7XG59XG5cbmVkZ2Uge1xuICBsaW5lLWNvbG9yOiAke2xpbmVDb2xvcn07XG4gIGxvb3Atc3dlZXA6IC01MGRlZztcbiAgbG9vcC1kaXJlY3Rpb246IC00NWRlZztcbiAgd2lkdGg6IDAuNzA7XG4gICBcbiAgdGFyZ2V0LWFycm93LXNoYXBlOiB2ZWU7XG4gIHRhcmdldC1hcnJvdy1maWxsOiBmaWxsZWQ7XG4gIHRhcmdldC1hcnJvdy1jb2xvcjogJHtsaW5lQ29sb3J9O1xuICBcbiAgYXJyb3ctc2NhbGU6IDAuNTU7XG5cbiAgZm9udC1zaXplOiA2O1xuICBmb250LWZhbWlseTogJHtmb250fTtcbiAgY29sb3I6ICR7dGV4dENvbG9yfTtcbiAgY3VydmUtc3R5bGU6IHN0cmFpZ2h0O1xuXG59XG5cbmVkZ2VbZWRnZUNvdW50XSB7XG4gIHdpZHRoOiBtYXBEYXRhKGVkZ2VDb3VudCwgMSwgNTAsIDAuNTUsIDMpO1xuICBhcnJvdy1zY2FsZTogbWFwRGF0YShlZGdlQ291bnQsIDEsIDUwLCAwLjM1LCAxLjUpO1xufVxuXG5lZGdlOnNlbGVjdGVkIHtcbiAgd2lkdGg6IDAuNztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtY29sb3I6ICR7bGluZUhpZ2hsaWdodENvbG9yfTtcbn1cblxuOmxvb3Age1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5lZGdlW3R5cGVdIHtcbiAgbGFiZWw6IGRhdGEodHlwZSk7XG59XG4uaW5hY3RpdmUtbm9kZSxcbi51bmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjM7XG59XG5ub2RlLmFjdGl2ZS1ub2RlLFxubm9kZS5ob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtmaWxsSGlnaGxpZ2h0Q29sb3J9O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJvcmRlci13aWR0aDogMC40O1xuICAgIGJvcmRlci1jb2xvcjogJHthY2NlbnRCb3JkZXJDb2xvcn07XG4gICAgb3BhY2l0eTogMTtcbn1cbmVkZ2UuaG92ZXIsXG5lZGdlLmNvbm5lY3RlZC1hY3RpdmUtbm9kZSxcbmVkZ2UuY29ubmVjdGVkLWhvdmVyIHtcbiAgICB3aWR0aDogMTtcbiAgICBvcGFjaXR5OiAxO1xufVxuZWRnZS5ob3ZlcixcbmVkZ2UuY29ubmVjdGVkLWhvdmVyIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWNvbG9yOiAke2xpbmVIaWdobGlnaHRDb2xvcn07ICBcbiAgICB0YXJnZXQtYXJyb3ctY29sb3I6ICR7bGluZUhpZ2hsaWdodENvbG9yfTtcbn1cblxubm9kZS5waW5uZWQge1xuICAgIGJvcmRlci1zdHlsZTogZG90dGVkO1xuICAgIGJvcmRlci13aWR0aDogMjtcbn1cbm5vZGUucHJvdGVjdGVkIHtcbiAgICBnaG9zdDogeWVzO1xuICAgIGdob3N0LW9mZnNldC14OiAxcHg7XG4gICAgZ2hvc3Qtb2Zmc2V0LXk6IDFweDtcbiAgICBnaG9zdC1vcGFjaXR5OiAwLjU7XG59XG5ub2RlLmhhcmQtZmlsdGVyZWQsXG5ub2RlLmZpbHRlcmVkIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuYDtcbiAgICB9XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7RmlsZVN5c3RlbUFkYXB0ZXJ9IGZyb20gXCJvYnNpZGlhblwiO1xuICAgIGltcG9ydCB7U1RZTEVTSEVFVF9QQVRILCBHcmFwaFN0eWxlU2hlZXQsIERFRkFVTFRfVVNFUl9TSEVFVH0gZnJvbSBcIi4uLy4uL3Zpei9zdHlsZXNoZWV0XCI7XG4gICAgLy8gaW1wb3J0IHtwcm9taXNlcyBhcyBmc30gZnJvbSBcImZzXCI7XG4gICAgaW1wb3J0IHR5cGUgSnVnZ2xQbHVnaW4gZnJvbSBcIi4uLy4uLy4uL21haW5cIjtcblxuICAgIGV4cG9ydCBsZXQgcGx1Z2luOiBKdWdnbFBsdWdpbjtcbiAgICBsZXQgc3R5bGVzaGVldFBhdGggPSBTVFlMRVNIRUVUX1BBVEgocGx1Z2luLnZhdWx0KTtcbiAgICBsZXQgb3BlbkdyYXBoQ1NTID0gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBmdWxsUGF0aCA9IChwbHVnaW4udmF1bHQuYWRhcHRlciBhcyBGaWxlU3lzdGVtQWRhcHRlcikuZ2V0RnVsbFBhdGgoc3R5bGVzaGVldFBhdGgpO1xuICAgICAgICAvLyBXcml0ZSBhIGZpbGUsIHRocm93IGFuIGVycm9yIGlmIGl0IGFscmVhZHkgZXhpc3RzIChmbGFnIHd4KS4gSnVzdCBjYXRjaCB0aGF0IGJlY2F1c2UgaXQncyBmaW5lLlxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2hlbGwgPSByZXF1aXJlKCdlbGVjdHJvbicpLnNoZWxsO1xuICAgICAgICAgICAgY29uc3Qge3Byb21pc2VzfSA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2VzLndyaXRlRmlsZShmdWxsUGF0aCxcbiAgICAgICAgICAgICAgICBERUZBVUxUX1VTRVJfU0hFRVQsXG4gICAgICAgICAgICAgICAge2ZsYWc6ICd3eCd9KS5jYXRjaChlID0+IHtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgc2hlbGwub3BlblBhdGgoZnVsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNvdWxkbid0IG9wZW4gZ3JhcGguY3NzLiBUaGlzIGlzIHByb2JhYmx5IGJlY2F1c2Ugd2UgYXJlIG9uIG1vYmlsZS5cIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgIH1cblxuPC9zY3JpcHQ+XG5cbjxoMz5cbiAgICBBcHBlYXJhbmNlXG48L2gzPlxuPHA+XG4gICAgWW91IGNhbiBzdHlsZSB0aGUgZ3JhcGggd2l0aCBjc3MuIFRoaXMgaXMgZG9uZSBpbiB0aGUge3N0eWxlc2hlZXRQYXRofSBmaWxlLlxuICAgIFNlZSA8YSBocmVmPVwiaHR0cHM6Ly9wdWJsaXNoLm9ic2lkaWFuLm1kL3NlbWFudGljLW9ic2lkaWFuL05vZGUrc3R5bGluZ1wiPnRoaXMgcGFnZTwvYT4gZm9yIGhlbHAgd2l0aCBzdHlsaW5nLlxuPC9wPlxuXG48YnV0dG9uIG9uOmNsaWNrPXtvcGVuR3JhcGhDU1N9PlxuICAgIE9wZW4gZ3JhcGguY3NzIGluIGRlZmF1bHQgZWRpdG9yLlxuPC9idXR0b24+IiwiXG48c2NyaXB0PlxuICAgIGxldCBidXR0b247XG4gICAgdmFyIGluaXRpYWxpemVLb2ZpID0gKCkgPT4ge1xuICAgICAgICBrb2Zpd2lkZ2V0Mi5pbml0KCdTdXBwb3J0IEp1Z2dsIGRldmVsb3BtZW50IScsICcjMjlhYmUwJywgJ0IwQjIzT1BVRScpO1xuICAgICAgICBidXR0b24uaW5uZXJIVE1MID0ga29maXdpZGdldDIuZ2V0SFRNTCgpO1xuICAgIH1cbjwvc2NyaXB0PlxuXG48c3ZlbHRlOmhlYWQ+XG4gICAgPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPSdodHRwczovL2tvLWZpLmNvbS93aWRnZXRzL3dpZGdldF8yLmpzJyBvbjpsb2FkPXtpbml0aWFsaXplS29maX0+XG4gICAgPC9zY3JpcHQ+XG48L3N2ZWx0ZTpoZWFkPlxuPGRpdiBiaW5kOnRoaXM9e2J1dHRvbn0+PC9kaXY+XG4iLCJpbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgT0JTSURJQU5fU1RPUkVfTkFNRSB9IGZyb20gJy4vb2JzaWRpYW4tc3RvcmUnO1xuaW1wb3J0IEFwcGVhcmFuY2VTZXR0aW5ncyBmcm9tICcuL3VpL3NldHRpbmdzL0FwcGVhcmFuY2VTZXR0aW5ncy5zdmVsdGUnO1xuZXhwb3J0IGNvbnN0IExBWU9VVFMgPSBbJ2ZvcmNlLWRpcmVjdGVkJywgJ2NpcmNsZScsICdncmlkJywgJ2hpZXJhcmNoeScsICdjb2xhJ107XG5pbXBvcnQgS29GaSBmcm9tICcuL3VpL0tvRmkuc3ZlbHRlJztcbmltcG9ydCB7IGdldEdyYXBoQ29sb3IgfSBmcm9tICcuL3Zpei9zdHlsZXNoZWV0JztcbmV4cG9ydCBjb25zdCBlbXB0eVN0eWxlR3JvdXAgPSB7IGZpbHRlcjogJycsXG4gICAgY29sb3I6ICdibGFjaycsXG4gICAgc2hhcGU6ICdlbGxpcHNlJyxcbiAgICBpY29uOiB7IG5hbWU6ICdObyBpY29uJywgcGF0aDogJycsIGNvbG9yOiAnd2hpdGUnIH0sXG4gICAgc2hvd0luUGFuZTogdHJ1ZSxcbiAgICBzaG93OiB0cnVlLFxuICAgIHNpemU6IDEuMCB9O1xuZXhwb3J0IGNvbnN0IGdlblN0eWxlR3JvdXBzID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIGNvbnN0IHRhZ0NvbG9yTWFwID0ge307XG4gICAgY29uc3QgY29sb3JTZXQgPSBbW1xuICAgICAgICAgICAgJyMwMDg5QkEnLFxuICAgICAgICAgICAgJyMyQzczRDInLFxuICAgICAgICAgICAgJyMwMDhFOUInLFxuICAgICAgICAgICAgJyMwMDgxQ0YnLFxuICAgICAgICAgICAgJyMwMDhGN0EnLFxuICAgICAgICAgICAgJyMwMDhFOUInLCAvLyBUaGlzIG9uZSBpcyBkb3VibGUgb29wcyFcbiAgICAgICAgXSwgW1xuICAgICAgICAgICAgJyNENjVEQjEnLFxuICAgICAgICAgICAgJyMwMDgyQzEnLFxuICAgICAgICAgICAgJyM5MjcwRDMnLFxuICAgICAgICAgICAgJyMwMDdGOTMnLFxuICAgICAgICAgICAgJyMwMDdFRDknLFxuICAgICAgICAgICAgJyMwMDc2NjAnLFxuICAgICAgICBdLCBbXG4gICAgICAgICAgICAnI0ZGOTY3MScsXG4gICAgICAgICAgICAnI0EzNkFBQScsXG4gICAgICAgICAgICAnI0YyN0Q4OCcsXG4gICAgICAgICAgICAnIzY5NjdBOScsXG4gICAgICAgICAgICAnI0QyNkY5RCcsXG4gICAgICAgICAgICAnIzFiNjI5OScsXG4gICAgICAgIF0sIFtcbiAgICAgICAgICAgICcjRkZDNzVGJyxcbiAgICAgICAgICAgICcjNEM5QTUyJyxcbiAgICAgICAgICAgICcjQzNCQjRFJyxcbiAgICAgICAgICAgICcjMDA4NTVCJyxcbiAgICAgICAgICAgICcjODhBQzRCJyxcbiAgICAgICAgICAgICcjMDA2RjYxJyxcbiAgICAgICAgXSwgW1xuICAgICAgICAgICAgJyNGRjZGOTEnLFxuICAgICAgICAgICAgJyM2RjdGMjInLFxuICAgICAgICAgICAgJyNFMDcyNTAnLFxuICAgICAgICAgICAgJyMyNTdBM0UnLFxuICAgICAgICAgICAgJyNBQzdDMjYnLFxuICAgICAgICAgICAgJyMwMDZGNUYnLFxuICAgICAgICBdLCBbXG4gICAgICAgICAgICAnI0Y5Rjg3MScsXG4gICAgICAgICAgICAnIzJGQUI2MycsXG4gICAgICAgICAgICAnI0I4RTA2NycsXG4gICAgICAgICAgICAnIzAwOEU2MycsXG4gICAgICAgICAgICAnIzc4QzY2NCcsXG4gICAgICAgICAgICAnIzAwNzE2MCcsXG4gICAgICAgIF1dO1xuICAgIGNvbnN0IGNvbG9ycyA9IFtdO1xuICAgIGZvciAoY29uc3QgaSBvZiBBcnJheSg2KS5rZXlzKCkpIHtcbiAgICAgICAgZm9yIChjb25zdCBqIG9mIEFycmF5KDYpLmtleXMoKSkge1xuICAgICAgICAgICAgY29sb3JzLnB1c2goY29sb3JTZXRbal1baV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCB0YWdzSXRlciA9IDA7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHBsdWdpbi52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkpIHtcbiAgICAgICAgY29uc3QgY2FjaGUgPSBwbHVnaW4ubWV0YWRhdGEuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgICAgICBpZiAoY2FjaGU/LnRhZ3MpIHtcbiAgICAgICAgICAgIGNhY2hlLnRhZ3MuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZyA9IHQudGFnLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhTcGxpdCA9IHRhZy5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gaFNwbGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhUYWcgPSBoU3BsaXQuc2xpY2UoMCwgcGFyc2VJbnQoaSkgKyAxKS5qb2luKCctJyk7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaChoVGFnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoISh0YWcgaW4gdGFnQ29sb3JNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdDb2xvck1hcFt0YWddID0gY29sb3JzW3RhZ3NJdGVyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3NJdGVyICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnc0l0ZXIgPj0gY29sb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3NJdGVyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGdlblNoZWV0ID0gW1xuICAgICAgICB7IGZpbHRlcjogYGNsYXNzOmRhbmdsaW5nYCxcbiAgICAgICAgICAgIGNvbG9yOiBnZXRHcmFwaENvbG9yKCdjb2xvci1maWxsLXVucmVzb2x2ZWQnKSxcbiAgICAgICAgICAgIHNoYXBlOiAnZWxsaXBzZScsXG4gICAgICAgICAgICBpY29uOiB7IG5hbWU6ICdObyBpY29uJywgcGF0aDogJycsIGNvbG9yOiAnd2hpdGUnIH0sXG4gICAgICAgICAgICBzaG93SW5QYW5lOiB0cnVlLFxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgIHNpemU6IDEuMCB9LFxuICAgICAgICB7IGZpbHRlcjogYGNsYXNzOmZpbGUgLWNsYXNzOmltYWdlYCxcbiAgICAgICAgICAgIGNvbG9yOiBnZXRHcmFwaENvbG9yKCdjb2xvci1maWxsJyksXG4gICAgICAgICAgICBzaGFwZTogJ2VsbGlwc2UnLFxuICAgICAgICAgICAgaWNvbjogeyBuYW1lOiAnTm8gaWNvbicsIHBhdGg6ICcnLCBjb2xvcjogJ3doaXRlJyB9LFxuICAgICAgICAgICAgc2hvd0luUGFuZTogdHJ1ZSxcbiAgICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgICBzaXplOiAxLjAgfSxcbiAgICBdO1xuICAgIGZvciAoY29uc3QgdGFnIG9mIE9iamVjdC5rZXlzKHRhZ0NvbG9yTWFwKSkge1xuICAgICAgICBnZW5TaGVldC5wdXNoKHsgZmlsdGVyOiBgdGFnOiMke3RhZ31gLFxuICAgICAgICAgICAgY29sb3I6IHRhZ0NvbG9yTWFwW3RhZ10sXG4gICAgICAgICAgICBzaGFwZTogJ2VsbGlwc2UnLFxuICAgICAgICAgICAgaWNvbjogeyBuYW1lOiAnTm8gaWNvbicsIHBhdGg6ICcnLCBjb2xvcjogJ3doaXRlJyB9LFxuICAgICAgICAgICAgc2hvd0luUGFuZTogdHJ1ZSxcbiAgICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgICBzaXplOiAxLjAgfSk7XG4gICAgfVxuICAgIHJldHVybiBnZW5TaGVldDtcbn07XG5leHBvcnQgY29uc3QgRGVmYXVsdEp1Z2dsU2V0dGluZ3MgPSB7XG4gICAgc3BsaXREaXJlY3Rpb246ICd2ZXJ0aWNhbCcsXG4gICAgdHlwZWRMaW5rUHJlZml4OiAnLScsXG4gICAgdXNlSW1nU2VydmVyOiBmYWxzZSxcbiAgICBpbWdTZXJ2ZXJQb3J0OiAzODM3LFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBnbG9iYWxTdHlsZUdyb3VwczogW10sXG4gICAgZ2xvYmFsR3JhcGhSaWJib246IHRydWUsXG4gICAgZ3JhcGhTZXR0aW5nczoge1xuICAgICAgICAvLyBUT0RPOiBOb3QgY3VycmVudGx5IHVzZWQgYW55d2hlcmVcbiAgICAgICAgYW5pbWF0ZUxheW91dDogdHJ1ZSxcbiAgICAgICAgYXV0b0FkZE5vZGVzOiB0cnVlLFxuICAgICAgICBhdXRvRXhwYW5kOiBmYWxzZSxcbiAgICAgICAgYXV0b1pvb206IGZhbHNlLFxuICAgICAgICBjb3JlU3RvcmU6IE9CU0lESUFOX1NUT1JFX05BTUUsXG4gICAgICAgIGV4cGFuZEluaXRpYWw6IHRydWUsXG4gICAgICAgIGZkZ2RMYXlvdXQ6ICdkMy1mb3JjZScsXG4gICAgICAgIGZpbHRlcjogJycsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBob3ZlckVkZ2VzOiBmYWxzZSxcbiAgICAgICAgbGF5b3V0OiAnZm9yY2UtZGlyZWN0ZWQnLFxuICAgICAgICBsaW1pdDogMTAwMDAsXG4gICAgICAgIG1lcmdlRWRnZXM6IHRydWUsXG4gICAgICAgIG1ldGFLZXlIb3ZlcjogZmFsc2UsXG4gICAgICAgIG1vZGU6ICd3b3Jrc3BhY2UnLFxuICAgICAgICBuYXZpZ2F0b3I6IHRydWUsXG4gICAgICAgIG9wZW5XaXRoU2hpZnQ6IGZhbHNlLFxuICAgICAgICByZWFkQ29udGVudDogdHJ1ZSxcbiAgICAgICAgc3R5bGVHcm91cHM6IFtdLFxuICAgICAgICB0b29sYmFyOiB0cnVlLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB6b29tU3BlZWQ6IDEsXG4gICAgfSxcbiAgICBlbWJlZFNldHRpbmdzOiB7XG4gICAgICAgIGFuaW1hdGVMYXlvdXQ6IHRydWUsXG4gICAgICAgIGF1dG9BZGROb2RlczogZmFsc2UsXG4gICAgICAgIGF1dG9FeHBhbmQ6IGZhbHNlLFxuICAgICAgICBhdXRvWm9vbTogZmFsc2UsXG4gICAgICAgIGNvcmVTdG9yZTogT0JTSURJQU5fU1RPUkVfTkFNRSxcbiAgICAgICAgZXhwYW5kSW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgZmRnZExheW91dDogJ2NvbGEnLFxuICAgICAgICBmaWx0ZXI6ICcnLFxuICAgICAgICBoZWlnaHQ6ICc0MDBweCcsXG4gICAgICAgIGhvdmVyRWRnZXM6IGZhbHNlLFxuICAgICAgICBsYXlvdXQ6ICdmb3JjZS1kaXJlY3RlZCcsXG4gICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICBtZXJnZUVkZ2VzOiB0cnVlLFxuICAgICAgICBtZXRhS2V5SG92ZXI6IGZhbHNlLFxuICAgICAgICBtb2RlOiAnbG9jYWwnLFxuICAgICAgICBuYXZpZ2F0b3I6IGZhbHNlLFxuICAgICAgICBvcGVuV2l0aFNoaWZ0OiBmYWxzZSxcbiAgICAgICAgcmVhZENvbnRlbnQ6IHRydWUsXG4gICAgICAgIHN0eWxlR3JvdXBzOiBbXSxcbiAgICAgICAgdG9vbGJhcjogZmFsc2UsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIHpvb21TcGVlZDogMSxcbiAgICB9LFxuICAgIGdsb2JhbEdyYXBoU2V0dGluZ3M6IHtcbiAgICAgICAgYW5pbWF0ZUxheW91dDogdHJ1ZSxcbiAgICAgICAgYXV0b0FkZE5vZGVzOiB0cnVlLFxuICAgICAgICBhdXRvRXhwYW5kOiBmYWxzZSxcbiAgICAgICAgYXV0b1pvb206IGZhbHNlLFxuICAgICAgICBjb3JlU3RvcmU6IE9CU0lESUFOX1NUT1JFX05BTUUsXG4gICAgICAgIGV4cGFuZEluaXRpYWw6IGZhbHNlLFxuICAgICAgICBmZGdkTGF5b3V0OiAnY29sYScsXG4gICAgICAgIGZpbHRlcjogJy1jbGFzczpkYW5nbGluZyAtY2xhc3M6ZmlsZScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBsaW1pdDogMTAwMDAsXG4gICAgICAgIGhvdmVyRWRnZXM6IGZhbHNlLFxuICAgICAgICBsYXlvdXQ6ICdmb3JjZS1kaXJlY3RlZCcsXG4gICAgICAgIG1lcmdlRWRnZXM6IHRydWUsXG4gICAgICAgIG1ldGFLZXlIb3ZlcjogZmFsc2UsXG4gICAgICAgIG1vZGU6ICd3b3Jrc3BhY2UnLFxuICAgICAgICBuYXZpZ2F0b3I6IHRydWUsXG4gICAgICAgIG9wZW5XaXRoU2hpZnQ6IGZhbHNlLFxuICAgICAgICByZWFkQ29udGVudDogZmFsc2UsXG4gICAgICAgIHN0eWxlR3JvdXBzOiBbXSxcbiAgICAgICAgdG9vbGJhcjogdHJ1ZSxcbiAgICAgICAgem9vbVNwZWVkOiAxLFxuICAgIH0sXG59O1xuZXhwb3J0IGNsYXNzIEp1Z2dsR3JhcGhTZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICAgIGNvbnN0cnVjdG9yKGFwcCwgcGx1Z2luKSB7XG4gICAgICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgfVxuICAgIGRpc3BsYXkoKSB7XG4gICAgICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG4gICAgICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycpO1xuICAgICAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7IHRleHQ6ICdKdWdnbCcgfSk7XG4gICAgICAgIG5ldyBLb0ZpKHsgdGFyZ2V0OiBjb250YWluZXJFbCB9KTtcbiAgICAgICAgY29uc3QgZG9jX2xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGRvY19saW5rLmhyZWYgPSAnaHR0cHM6Ly9qdWdnbC5pbyc7XG4gICAgICAgIGRvY19saW5rLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICBkb2NfbGluay5pbm5lckhUTUwgPSAndGhlIGRvY3VtZW50YXRpb24nO1xuICAgICAgICBjb25zdCBkaXNjb3JkX2xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGRpc2NvcmRfbGluay5ocmVmID0gJ2h0dHBzOi8vZGlzY29yZC5nZy9zQW1TR3BhUGdNJztcbiAgICAgICAgZGlzY29yZF9saW5rLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICBkaXNjb3JkX2xpbmsuaW5uZXJIVE1MID0gJ3RoZSBEaXNjb3JkIHNlcnZlcic7XG4gICAgICAgIGNvbnN0IGludHJvUGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgICAgICBpbnRyb1Bhci5pbm5lckhUTUwgPVxuICAgICAgICAgICAgJ0NoZWNrIG91dCAnICsgZG9jX2xpbmsub3V0ZXJIVE1MICsgJyBmb3IgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBwbHVnaW4uIDxicj4nICtcbiAgICAgICAgICAgICAgICAnSm9pbiAnICsgZGlzY29yZF9saW5rLm91dGVySFRNTCArICcgZm9yIGhlbHAsIG5pY2UgZGlzY3Vzc2lvbiBhbmQgaW5zaWdodCBpbnRvIGRldmVsb3BtZW50Lic7XG4gICAgICAgIGNvbnRhaW5lckVsLmFwcGVuZENoaWxkKGludHJvUGFyKTtcbiAgICAgICAgbmV3IEFwcGVhcmFuY2VTZXR0aW5ncyh7IHRhcmdldDogY29udGFpbmVyRWwsIHByb3BzOiB7IHBsdWdpbjogdGhpcy5wbHVnaW4gfSB9KTtcbiAgICAgICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJyk7XG4gICAgICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogJ0V4dGVuc2lvbnMnIH0pO1xuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKCdVc2UgbmF2aWdhdG9yJylcbiAgICAgICAgICAgIC5zZXREZXNjKCdVc2UgdGhlIG5hdmlnYXRvciBvdmVydmlldyBpbiB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lci4gRGlzYWJsaW5nIGNvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuJylcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MubmF2aWdhdG9yKVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5nbG9iYWxHcmFwaFNldHRpbmdzLm5hdmlnYXRvciA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MubmF2aWdhdG9yID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKCdEZWZhdWx0IG1vZGUnKVxuICAgICAgICAgICAgLnNldERlc2MoJ1RoZSBkZWZhdWx0IG1vZGUgdG8gb3BlbiB0aGUgQWR2YW5jZWQgR3JhcGggVmlldyBpbi4nKVxuICAgICAgICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICAgICAgZHJvcGRvd24uYWRkT3B0aW9uKCdsb2NhbCcsICdMb2NhbCBNb2RlJyk7XG4gICAgICAgICAgICBkcm9wZG93bi5hZGRPcHRpb24oJ3dvcmtzcGFjZScsICdXb3Jrc3BhY2UgTW9kZScpO1xuICAgICAgICAgICAgZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncy5tb2RlKVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLm1vZGUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ0ZvcmNlLWRpcmVjdGVkIGFsZ29yaXRobScpXG4gICAgICAgICAgICAuc2V0RGVzYygnVGhlIGRlZmF1bHQgZm9yY2UtZGlyZWN0ZWQgZ3JhcGggZHJhd2luZyBhbGdvcml0aG0gdG8gdXNlLiAnICtcbiAgICAgICAgICAgICdDb2xhIGlzIG5pY2UsIGJ1dCB1bnN0YWJsZSBpbiBzb21lIHVzZSBjYXNlcy4gT2JzaWRpYW4gdXNlcyBEMycpXG4gICAgICAgICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgICAgICBkcm9wZG93bi5hZGRPcHRpb24oJ2NvbGEnLCAnQ29sYScpO1xuICAgICAgICAgICAgZHJvcGRvd24uYWRkT3B0aW9uKCdkMy1mb3JjZScsICdEMycpO1xuICAgICAgICAgICAgZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncy5mZGdkTGF5b3V0KVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLmZkZ2RMYXlvdXQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbWJlZFNldHRpbmdzLmZkZ2RMYXlvdXQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5nbG9iYWxHcmFwaFNldHRpbmdzLmZkZ2RMYXlvdXQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ0dsb2JhbCBHcmFwaCBJY29uJylcbiAgICAgICAgICAgIC5zZXREZXNjKCdTaG93IHRoZSBHbG9iYWwgR3JhcGggSWNvbiBvbiB0aGUgbGVmdCByaWJib24uJylcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmdsb2JhbEdyYXBoUmliYm9uKVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3X3ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZ2xvYmFsR3JhcGhSaWJib24gPSBuZXdfdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldEdsb2JhbEljb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShgUmVxdWlyZSDijJgvY3RybCBmb3IgcHJldmlldyBob3ZlcnNgKVxuICAgICAgICAgICAgLnNldERlc2MoJ1doZW4gc2V0IHRvIHRydWUsIHlvdSB3aWxsIG5lZWQgdG8gaG9sZCBkb3duIOKMmCAobWFjKSBvciBjdHJsICh3aW5kb3dzKSB0byBzaG93IHByZXZpZXcgaG92ZXJzIG9mIG5vdGVzLicpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLm1ldGFLZXlIb3ZlcilcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKG5ld192YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MubWV0YUtleUhvdmVyID0gbmV3X3ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmdsb2JhbEdyYXBoU2V0dGluZ3MubWV0YUtleUhvdmVyID0gbmV3X3ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVtYmVkU2V0dGluZ3MubWV0YUtleUhvdmVyID0gbmV3X3ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gLy8gTm90ZTogVGhpcyBpc24ndCBjdXJyZW50bHkgdXNlZCBhbnl3aGVyZSwgYW5kIHRoZSBOZW80aiBzdHJlYW0gcGx1Z2luIHdpbGwgbGlrZWx5IG5vdCBwcm92aWRlIGEgYmFja2VuZC5cbiAgICAgICAgLy8gLy8gVGhlcmVmb3JlIHRoaXMgc2V0dGluZyBpcyBkaXNhYmxlZCB0byBwcmV2ZW50IGNvbmZ1c2lvbi5cbiAgICAgICAgLy8gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC8vICAgICAuc2V0TmFtZSgnRGF0YSBzdG9yZScpXG4gICAgICAgIC8vICAgICAuc2V0RGVzYygnU2V0IHdoYXQgZGF0YWJhc2UgdG8gZ2V0IHRoZSBPYnNpZGlhbiBncmFwaCBmcm9tLiBCeSBkZWZhdWx0LCBvbmx5IE9ic2lkaWFuIGl0c2VsZiBpcyBhbiBvcHRpb24uICcgK1xuICAgICAgICAvLyAgICAgICAgICAgJ0xhdGVyIG9uLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGluc3RhbGwgdGhlIE5lbzRqIFN0cmVhbSBQbHVnaW4gdG8gdXNlIGEgTmVvNGogYmFja2VuZCB3aGljaCBoYXMgbW9yZSBmZWF0dXJlcyBhbmQgc2NhbGVzIGJldHRlciB0byBsYXJnZSBncmFwaHMuJylcbiAgICAgICAgLy8gICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcbiAgICAgICAgLy8gICAgICAgT2JqZWN0LmtleXModGhpcy5wbHVnaW4uY29yZVN0b3JlcykuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGRyb3Bkb3duLmFkZE9wdGlvbihjLCBjKTtcbiAgICAgICAgLy8gICAgICAgfSk7XG4gICAgICAgIC8vICAgICAgIGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MuY29yZVN0b3JlKVxuICAgICAgICAvLyAgICAgICAgICAgLm9uQ2hhbmdlKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLmNvcmVTdG9yZSA9IG5ld1ZhbHVlO1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbWJlZFNldHRpbmdzLmNvcmVTdG9yZSA9IG5ld1ZhbHVlO1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgIC8vICAgICAgICAgICB9KTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7IHRleHQ6ICdXb3Jrc3BhY2UgbW9kZScgfSk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ0F1dG9tYXRpY2FsbHkgYWRkIG5vZGVzJylcbiAgICAgICAgICAgIC5zZXREZXNjKCdUaGlzIHdpbGwgYXV0b21hdGljYWxseSBhZGQgbm9kZXMgdG8gdGhlIGdyYXBoIHdoZW5ldmVyIGEgbm90ZSBpcyBvcGVuZWQuJylcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MuYXV0b0FkZE5vZGVzKVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3X3ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncy5hdXRvQWRkTm9kZXMgPSBuZXdfdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKCdBdXRvbWF0aWNhbGx5IHpvb20gb24gYWN0aXZlIG5vZGVzJylcbiAgICAgICAgICAgIC5zZXREZXNjKCdUaGlzIHdpbGwgYXV0b21hdGljYWxseSBrZWVwIGZpdHRpbmcgdGhlIHZpZXdwb3J0IG9uIHRoZSBjdXJyZW50bHkgYWN0aXZlIG5vZGUuICcgK1xuICAgICAgICAgICAgJ0luIHBhcnRpY3VsYXIsIHRoaXMgaGFwcGVucyB3aGVuIHlvdSBvcGVuIGEgZmlsZS4nKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncy5hdXRvWm9vbSlcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKG5ld192YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MuYXV0b1pvb20gPSBuZXdfdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZ2xvYmFsR3JhcGhTZXR0aW5ncy5hdXRvWm9vbSA9IG5ld192YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogJ0FkdmFuY2VkJyB9KTtcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZSgnWm9vbSBzcGVlZCcpXG4gICAgICAgICAgICAuc2V0RGVzYygnU3BlZWQgd2l0aCB3aGljaCB6b29taW5nIGluIGFuZCBvdXQgaGFwcGVucy4gJyArXG4gICAgICAgICAgICAnQSB2YWx1ZSBvZiAxIGlzIHJlY29tbWVuZGVkLCBidXQgY2FuIGJlIHRvbyBxdWljayBmb3Igc29tZSBtaWNlLicpXG4gICAgICAgICAgICAuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtcbiAgICAgICAgICAgIHNsaWRlclxuICAgICAgICAgICAgICAgIC5zZXREeW5hbWljVG9vbHRpcCgpXG4gICAgICAgICAgICAgICAgLnNldExpbWl0cygwLjAxLCAxLjUsIDAuMDEpXG4gICAgICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3Muem9vbVNwZWVkKVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLnpvb21TcGVlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVtYmVkU2V0dGluZ3Muem9vbVNwZWVkID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZ2xvYmFsR3JhcGhTZXR0aW5ncy56b29tU3BlZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWRcbiAgICAgICAgLy8gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC8vICAgICAuc2V0TmFtZSgnQXV0b21hdGljIGV4cGFuZCcpXG4gICAgICAgIC8vICAgICAuc2V0RGVzYygnVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwYW5kIHRoZSBuZWlnaGJvdXJob29kIGFyb3VuZCBhbnkgbm9kZXMgY2xpY2tlZCBvbiBvciBhZGRlZCB0byB0aGUgZ3JhcGguICcgK1xuICAgICAgICAvLyAgICAgICAgICAgJ1RoaXMgbm9ybWFsbHkgb25seSBoYXBwZW5zIHdoZW4gcHJlc3NpbmcgRSBvciB3aGVuIGRvdWJsZS1jbGlja2luZy4nKVxuICAgICAgICAvLyAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIC8vICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5hdXRvRXhwYW5kKVxuICAgICAgICAvLyAgICAgICAgICAgLm9uQ2hhbmdlKChuZXdfdmFsdWUpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYXV0b0V4cGFuZCA9IG5ld192YWx1ZTtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAvLyAgICAgICAgICAgfSk7XG4gICAgICAgIC8vICAgICB9KTtcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZSgnSG92ZXIgb24gZWRnZXMnKVxuICAgICAgICAgICAgLnNldERlc2MoJ0hvdmVyIG9uIGVkZ2VzIHRvIHNob3cgd2hhdCB0aGV5IGFyZSBjb25uZWN0ZWQgdG8uJylcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MuaG92ZXJFZGdlcylcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKG5ld192YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmdyYXBoU2V0dGluZ3MuaG92ZXJFZGdlcyA9IG5ld192YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbWJlZFNldHRpbmdzLmhvdmVyRWRnZXMgPSBuZXdfdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZ2xvYmFsR3JhcGhTZXR0aW5ncy5ob3ZlckVkZ2VzID0gbmV3X3ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZSgnT3BlbiB3aXRoIHNoaWZ0JylcbiAgICAgICAgICAgIC5zZXREZXNjKCdPbmx5IG9wZW5zIGZpbGUgd2hlbiBjbGlja2luZyBvbiBhIG5vZGUgd2hlbiBzaGlmdCBpcyBwcmVzc2VkLicpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLm9wZW5XaXRoU2hpZnQpXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKChuZXdfdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ncmFwaFNldHRpbmdzLm9wZW5XaXRoU2hpZnQgPSBuZXdfdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZW1iZWRTZXR0aW5ncy5vcGVuV2l0aFNoaWZ0ID0gbmV3X3ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmdsb2JhbEdyYXBoU2V0dGluZ3Mub3BlbldpdGhTaGlmdCA9IG5ld192YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAvLyAgICAgLnNldE5hbWUoJ0luZGV4IG5vdGUgY29udGVudCcpXG4gICAgICAgIC8vICAgICAuc2V0RGVzYygnVGhpcyB3aWxsIGZ1bGwtdGV4dCBpbmRleCB0aGUgY29udGVudCBvZiBub3Rlcy4gJyArXG4gICAgICAgIC8vICAgICAgICAgICAnVGhpcyBhbGxvd3Mgc2VhcmNoaW5nIHdpdGhpbiBub3RlcyB1c2luZyB0aGUgTmVvNGogQmxvb20gc2VhcmNoIGJhci4gSG93ZXZlciwgaXQgY291bGQgZGVjcmVhc2UgcGVyZm9ybWFuY2UuJylcbiAgICAgICAgLy8gICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAvLyAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW5kZXhDb250ZW50KVxuICAgICAgICAvLyAgICAgICAgICAgLm9uQ2hhbmdlKChuZXdfdmFsdWUpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW5kZXhDb250ZW50ID0gbmV3X3ZhbHVlO1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgIC8vICAgICAgICAgICB9KTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKCdUeXBlZCBsaW5rcyBwcmVmaXgnKVxuICAgICAgICAgICAgLnNldERlc2MoJ1ByZWZpeCB0byB1c2UgZm9yIHR5cGVkIGxpbmtzLiBEZWZhdWx0IGlzIFxcJy1cXCcuIFJlcXVpcmVzIGEgc2VydmVyIHJlc3RhcnQuJylcbiAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICB0ZXh0LnNldFBsYWNlaG9sZGVyKCcnKVxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50eXBlZExpbmtQcmVmaXgpXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKChuZXdfZm9sZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHlwZWRMaW5rUHJlZml4ID0gbmV3X2ZvbGRlcjtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ1JlbmRlciBpbWFnZXMgaW4gZ3JhcGgnKVxuICAgICAgICAgICAgLnNldERlc2MoJ1RoaXMgd2lsbCBzaG93IGltYWdlIGF0dGFjaG1lbnRzIGluIHlvdXIgdmF1bHQgYXMgaW1hZ2VzIGluIHRoZSBncmFwaC4gUmVxdWlyZXMgcmVsb2FkaW5nIEp1Z2dsLiAnICtcbiAgICAgICAgICAgICdXQVJOSU5HOiBPbiBXaW5kb3dzIHRoaXMgd2lsbCB0cmlnZ2VyIHlvdXIgZmlyZXdhbGwhJylcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZUltZ1NlcnZlcilcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKG5ld192YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZUltZ1NlcnZlciA9IG5ld192YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ0ltYWdlIHNlcnZlciBwb3J0JylcbiAgICAgICAgICAgIC5zZXREZXNjKCdTZXQgdGhlIHBvcnQgb2YgdGhlIGltYWdlIHNlcnZlci4gSWYgeW91IHVzZSBtdWx0aXBsZSB2YXVsdHMsIHRoZXNlIG5lZWQgdG8gYmUgc2V0IGRpZmZlcmVudGx5LiBEZWZhdWx0IDM4MzcuJylcbiAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICB0ZXh0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ1NlcnZlclBvcnQgKyAnJylcbiAgICAgICAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoJzM4MzcnKVxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgobmV3X3ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nU2VydmVyUG9ydCA9IHBhcnNlSW50KG5ld192YWx1ZS50cmltKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZSgnRGVidWcnKVxuICAgICAgICAgICAgLnNldERlc2MoJ0VuYWJsZSBkZWJ1ZyBtb2RlLCB3aGljaCBwcmludHMgYSBsb3Qgb2Ygc3R1ZmYgaW4gdGhlIGRldmVsb3BlcnMgY29uc29sZS4nKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcpXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKChuZXdfdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWJ1ZyA9IG5ld192YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHRoZSBgVHlwZUVycm9yYCBtZXNzYWdlIGZvciBcIkZ1bmN0aW9uc1wiIG1ldGhvZHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICByZXN1bHQgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nID8gbmF0aXZlTWluKHJlc3VsdCwgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjguMFxuKGZ1bmN0aW9uKCkge1xuICB2YXIgSGVhcCwgZGVmYXVsdENtcCwgZmxvb3IsIGhlYXBpZnksIGhlYXBwb3AsIGhlYXBwdXNoLCBoZWFwcHVzaHBvcCwgaGVhcHJlcGxhY2UsIGluc29ydCwgbWluLCBubGFyZ2VzdCwgbnNtYWxsZXN0LCB1cGRhdGVJdGVtLCBfc2lmdGRvd24sIF9zaWZ0dXA7XG5cbiAgZmxvb3IgPSBNYXRoLmZsb29yLCBtaW4gPSBNYXRoLm1pbjtcblxuXG4gIC8qXG4gIERlZmF1bHQgY29tcGFyaXNvbiBmdW5jdGlvbiB0byBiZSB1c2VkXG4gICAqL1xuXG4gIGRlZmF1bHRDbXAgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgaWYgKHggPCB5KSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh4ID4geSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9O1xuXG5cbiAgLypcbiAgSW5zZXJ0IGl0ZW0geCBpbiBsaXN0IGEsIGFuZCBrZWVwIGl0IHNvcnRlZCBhc3N1bWluZyBhIGlzIHNvcnRlZC5cbiAgXG4gIElmIHggaXMgYWxyZWFkeSBpbiBhLCBpbnNlcnQgaXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSByaWdodG1vc3QgeC5cbiAgXG4gIE9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGEubGVuZ3RoKSBib3VuZCB0aGUgc2xpY2VcbiAgb2YgYSB0byBiZSBzZWFyY2hlZC5cbiAgICovXG5cbiAgaW5zb3J0ID0gZnVuY3Rpb24oYSwgeCwgbG8sIGhpLCBjbXApIHtcbiAgICB2YXIgbWlkO1xuICAgIGlmIChsbyA9PSBudWxsKSB7XG4gICAgICBsbyA9IDA7XG4gICAgfVxuICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICB9XG4gICAgaWYgKGxvIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICBpZiAoaGkgPT0gbnVsbCkge1xuICAgICAgaGkgPSBhLmxlbmd0aDtcbiAgICB9XG4gICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgIG1pZCA9IGZsb29yKChsbyArIGhpKSAvIDIpO1xuICAgICAgaWYgKGNtcCh4LCBhW21pZF0pIDwgMCkge1xuICAgICAgICBoaSA9IG1pZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvID0gbWlkICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChbXS5zcGxpY2UuYXBwbHkoYSwgW2xvLCBsbyAtIGxvXS5jb25jYXQoeCkpLCB4KTtcbiAgfTtcblxuXG4gIC8qXG4gIFB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC5cbiAgICovXG5cbiAgaGVhcHB1c2ggPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBhcnJheS5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBfc2lmdGRvd24oYXJyYXksIDAsIGFycmF5Lmxlbmd0aCAtIDEsIGNtcCk7XG4gIH07XG5cblxuICAvKlxuICBQb3AgdGhlIHNtYWxsZXN0IGl0ZW0gb2ZmIHRoZSBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuXG4gICAqL1xuXG4gIGhlYXBwb3AgPSBmdW5jdGlvbihhcnJheSwgY21wKSB7XG4gICAgdmFyIGxhc3RlbHQsIHJldHVybml0ZW07XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBsYXN0ZWx0ID0gYXJyYXkucG9wKCk7XG4gICAgaWYgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuaXRlbSA9IGFycmF5WzBdO1xuICAgICAgYXJyYXlbMF0gPSBsYXN0ZWx0O1xuICAgICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuaXRlbSA9IGxhc3RlbHQ7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5pdGVtO1xuICB9O1xuXG5cbiAgLypcbiAgUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLlxuICBcbiAgVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXBwb3AoKSBmb2xsb3dlZCBieSBoZWFwcHVzaCgpLCBhbmQgY2FuIGJlXG4gIG1vcmUgYXBwcm9wcmlhdGUgd2hlbiB1c2luZyBhIGZpeGVkIHNpemUgaGVhcC4gTm90ZSB0aGF0IHRoZSB2YWx1ZVxuICByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyIHRoYW4gaXRlbSEgVGhhdCBjb25zdHJhaW5zIHJlYXNvbmFibGUgdXNlIG9mXG4gIHRoaXMgcm91dGluZSB1bmxlc3Mgd3JpdHRlbiBhcyBwYXJ0IG9mIGEgY29uZGl0aW9uYWwgcmVwbGFjZW1lbnQ6XG4gICAgICBpZiBpdGVtID4gYXJyYXlbMF1cbiAgICAgICAgaXRlbSA9IGhlYXByZXBsYWNlKGFycmF5LCBpdGVtKVxuICAgKi9cblxuICBoZWFwcmVwbGFjZSA9IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBjbXApIHtcbiAgICB2YXIgcmV0dXJuaXRlbTtcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIHJldHVybml0ZW0gPSBhcnJheVswXTtcbiAgICBhcnJheVswXSA9IGl0ZW07XG4gICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICByZXR1cm4gcmV0dXJuaXRlbTtcbiAgfTtcblxuXG4gIC8qXG4gIEZhc3QgdmVyc2lvbiBvZiBhIGhlYXBwdXNoIGZvbGxvd2VkIGJ5IGEgaGVhcHBvcC5cbiAgICovXG5cbiAgaGVhcHB1c2hwb3AgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgdmFyIF9yZWY7XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoICYmIGNtcChhcnJheVswXSwgaXRlbSkgPCAwKSB7XG4gICAgICBfcmVmID0gW2FycmF5WzBdLCBpdGVtXSwgaXRlbSA9IF9yZWZbMF0sIGFycmF5WzBdID0gX3JlZlsxXTtcbiAgICAgIF9zaWZ0dXAoYXJyYXksIDAsIGNtcCk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9O1xuXG5cbiAgLypcbiAgVHJhbnNmb3JtIGxpc3QgaW50byBhIGhlYXAsIGluLXBsYWNlLCBpbiBPKGFycmF5Lmxlbmd0aCkgdGltZS5cbiAgICovXG5cbiAgaGVhcGlmeSA9IGZ1bmN0aW9uKGFycmF5LCBjbXApIHtcbiAgICB2YXIgaSwgX2ksIF9qLCBfbGVuLCBfcmVmLCBfcmVmMSwgX3Jlc3VsdHMsIF9yZXN1bHRzMTtcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIF9yZWYxID0gKGZ1bmN0aW9uKCkge1xuICAgICAgX3Jlc3VsdHMxID0gW107XG4gICAgICBmb3IgKHZhciBfaiA9IDAsIF9yZWYgPSBmbG9vcihhcnJheS5sZW5ndGggLyAyKTsgMCA8PSBfcmVmID8gX2ogPCBfcmVmIDogX2ogPiBfcmVmOyAwIDw9IF9yZWYgPyBfaisrIDogX2otLSl7IF9yZXN1bHRzMS5wdXNoKF9qKTsgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzMTtcbiAgICB9KS5hcHBseSh0aGlzKS5yZXZlcnNlKCk7XG4gICAgX3Jlc3VsdHMgPSBbXTtcbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYxLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBpID0gX3JlZjFbX2ldO1xuICAgICAgX3Jlc3VsdHMucHVzaChfc2lmdHVwKGFycmF5LCBpLCBjbXApKTtcbiAgICB9XG4gICAgcmV0dXJuIF9yZXN1bHRzO1xuICB9O1xuXG5cbiAgLypcbiAgVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gaXRlbSBpbiB0aGUgaGVhcC5cbiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGl0ZW0gaXMgYmVpbmcgbW9kaWZpZWQuXG4gICAqL1xuXG4gIHVwZGF0ZUl0ZW0gPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgdmFyIHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIHBvcyA9IGFycmF5LmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgX3NpZnRkb3duKGFycmF5LCAwLCBwb3MsIGNtcCk7XG4gICAgcmV0dXJuIF9zaWZ0dXAoYXJyYXksIHBvcywgY21wKTtcbiAgfTtcblxuXG4gIC8qXG4gIEZpbmQgdGhlIG4gbGFyZ2VzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuXG4gICAqL1xuXG4gIG5sYXJnZXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGNtcCkge1xuICAgIHZhciBlbGVtLCByZXN1bHQsIF9pLCBfbGVuLCBfcmVmO1xuICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICB9XG4gICAgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgbik7XG4gICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBoZWFwaWZ5KHJlc3VsdCwgY21wKTtcbiAgICBfcmVmID0gYXJyYXkuc2xpY2Uobik7XG4gICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBlbGVtID0gX3JlZltfaV07XG4gICAgICBoZWFwcHVzaHBvcChyZXN1bHQsIGVsZW0sIGNtcCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQuc29ydChjbXApLnJldmVyc2UoKTtcbiAgfTtcblxuXG4gIC8qXG4gIEZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LlxuICAgKi9cblxuICBuc21hbGxlc3QgPSBmdW5jdGlvbihhcnJheSwgbiwgY21wKSB7XG4gICAgdmFyIGVsZW0sIGksIGxvcywgcmVzdWx0LCBfaSwgX2osIF9sZW4sIF9yZWYsIF9yZWYxLCBfcmVzdWx0cztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIGlmIChuICogMTAgPD0gYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSBhcnJheS5zbGljZSgwLCBuKS5zb3J0KGNtcCk7XG4gICAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxvcyA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICBfcmVmID0gYXJyYXkuc2xpY2Uobik7XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZWxlbSA9IF9yZWZbX2ldO1xuICAgICAgICBpZiAoY21wKGVsZW0sIGxvcykgPCAwKSB7XG4gICAgICAgICAgaW5zb3J0KHJlc3VsdCwgZWxlbSwgMCwgbnVsbCwgY21wKTtcbiAgICAgICAgICByZXN1bHQucG9wKCk7XG4gICAgICAgICAgbG9zID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaGVhcGlmeShhcnJheSwgY21wKTtcbiAgICBfcmVzdWx0cyA9IFtdO1xuICAgIGZvciAoaSA9IF9qID0gMCwgX3JlZjEgPSBtaW4obiwgYXJyYXkubGVuZ3RoKTsgMCA8PSBfcmVmMSA/IF9qIDwgX3JlZjEgOiBfaiA+IF9yZWYxOyBpID0gMCA8PSBfcmVmMSA/ICsrX2ogOiAtLV9qKSB7XG4gICAgICBfcmVzdWx0cy5wdXNoKGhlYXBwb3AoYXJyYXksIGNtcCkpO1xuICAgIH1cbiAgICByZXR1cm4gX3Jlc3VsdHM7XG4gIH07XG5cbiAgX3NpZnRkb3duID0gZnVuY3Rpb24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCkge1xuICAgIHZhciBuZXdpdGVtLCBwYXJlbnQsIHBhcmVudHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIG5ld2l0ZW0gPSBhcnJheVtwb3NdO1xuICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcykge1xuICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDE7XG4gICAgICBwYXJlbnQgPSBhcnJheVtwYXJlbnRwb3NdO1xuICAgICAgaWYgKGNtcChuZXdpdGVtLCBwYXJlbnQpIDwgMCkge1xuICAgICAgICBhcnJheVtwb3NdID0gcGFyZW50O1xuICAgICAgICBwb3MgPSBwYXJlbnRwb3M7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBhcnJheVtwb3NdID0gbmV3aXRlbTtcbiAgfTtcblxuICBfc2lmdHVwID0gZnVuY3Rpb24oYXJyYXksIHBvcywgY21wKSB7XG4gICAgdmFyIGNoaWxkcG9zLCBlbmRwb3MsIG5ld2l0ZW0sIHJpZ2h0cG9zLCBzdGFydHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIGVuZHBvcyA9IGFycmF5Lmxlbmd0aDtcbiAgICBzdGFydHBvcyA9IHBvcztcbiAgICBuZXdpdGVtID0gYXJyYXlbcG9zXTtcbiAgICBjaGlsZHBvcyA9IDIgKiBwb3MgKyAxO1xuICAgIHdoaWxlIChjaGlsZHBvcyA8IGVuZHBvcykge1xuICAgICAgcmlnaHRwb3MgPSBjaGlsZHBvcyArIDE7XG4gICAgICBpZiAocmlnaHRwb3MgPCBlbmRwb3MgJiYgIShjbXAoYXJyYXlbY2hpbGRwb3NdLCBhcnJheVtyaWdodHBvc10pIDwgMCkpIHtcbiAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvcztcbiAgICAgIH1cbiAgICAgIGFycmF5W3Bvc10gPSBhcnJheVtjaGlsZHBvc107XG4gICAgICBwb3MgPSBjaGlsZHBvcztcbiAgICAgIGNoaWxkcG9zID0gMiAqIHBvcyArIDE7XG4gICAgfVxuICAgIGFycmF5W3Bvc10gPSBuZXdpdGVtO1xuICAgIHJldHVybiBfc2lmdGRvd24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCk7XG4gIH07XG5cbiAgSGVhcCA9IChmdW5jdGlvbigpIHtcbiAgICBIZWFwLnB1c2ggPSBoZWFwcHVzaDtcblxuICAgIEhlYXAucG9wID0gaGVhcHBvcDtcblxuICAgIEhlYXAucmVwbGFjZSA9IGhlYXByZXBsYWNlO1xuXG4gICAgSGVhcC5wdXNocG9wID0gaGVhcHB1c2hwb3A7XG5cbiAgICBIZWFwLmhlYXBpZnkgPSBoZWFwaWZ5O1xuXG4gICAgSGVhcC51cGRhdGVJdGVtID0gdXBkYXRlSXRlbTtcblxuICAgIEhlYXAubmxhcmdlc3QgPSBubGFyZ2VzdDtcblxuICAgIEhlYXAubnNtYWxsZXN0ID0gbnNtYWxsZXN0O1xuXG4gICAgZnVuY3Rpb24gSGVhcChjbXApIHtcbiAgICAgIHRoaXMuY21wID0gY21wICE9IG51bGwgPyBjbXAgOiBkZWZhdWx0Q21wO1xuICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgIH1cblxuICAgIEhlYXAucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gaGVhcHB1c2godGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBoZWFwcG9wKHRoaXMubm9kZXMsIHRoaXMuY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXNbMF07XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZih4KSAhPT0gLTE7XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gaGVhcHJlcGxhY2UodGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5wdXNocG9wID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIGhlYXBwdXNocG9wKHRoaXMubm9kZXMsIHgsIHRoaXMuY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuaGVhcGlmeSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGhlYXBpZnkodGhpcy5ub2RlcywgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS51cGRhdGVJdGVtID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHVwZGF0ZUl0ZW0odGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMgPSBbXTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLmxlbmd0aCA9PT0gMDtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhlYXA7XG4gICAgICBoZWFwID0gbmV3IEhlYXAoKTtcbiAgICAgIGhlYXAubm9kZXMgPSB0aGlzLm5vZGVzLnNsaWNlKDApO1xuICAgICAgcmV0dXJuIGhlYXA7XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLnNsaWNlKDApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBIZWFwLnByb3RvdHlwZS5wdXNoO1xuXG4gICAgSGVhcC5wcm90b3R5cGUudG9wID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgIEhlYXAucHJvdG90eXBlLmZyb250ID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgIEhlYXAucHJvdG90eXBlLmhhcyA9IEhlYXAucHJvdG90eXBlLmNvbnRhaW5zO1xuXG4gICAgSGVhcC5wcm90b3R5cGUuY29weSA9IEhlYXAucHJvdG90eXBlLmNsb25lO1xuXG4gICAgcmV0dXJuIEhlYXA7XG5cbiAgfSkoKTtcblxuICAoZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkge1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgIHJldHVybiBkZWZpbmUoW10sIGZhY3RvcnkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb290LkhlYXAgPSBmYWN0b3J5KCk7XG4gICAgfVxuICB9KSh0aGlzLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gSGVhcDtcbiAgfSk7XG5cbn0pLmNhbGwodGhpcyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2hlYXAnKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEsIFRoZSBDeXRvc2NhcGUgQ29uc29ydGl1bS5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mXG4gKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSDigJxTb2Z0d2FyZeKAnSksIHRvIGRlYWwgaW5cbiAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbiAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzXG4gKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG9cbiAqIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfVxuXG52YXIgdXRpbCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdsb2Rhc2guZGVib3VuY2UnKSk7XG52YXIgSGVhcCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdoZWFwJykpO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG4gIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbn1cblxudmFyIHdpbmRvdyQxID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogd2luZG93OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbnZhciBuYXZpZ2F0b3IgPSB3aW5kb3ckMSA/IHdpbmRvdyQxLm5hdmlnYXRvciA6IG51bGw7XG52YXIgZG9jdW1lbnQkMSA9IHdpbmRvdyQxID8gd2luZG93JDEuZG9jdW1lbnQgOiBudWxsO1xuXG52YXIgdHlwZW9mc3RyID0gX3R5cGVvZignJyk7XG5cbnZhciB0eXBlb2ZvYmogPSBfdHlwZW9mKHt9KTtcblxudmFyIHR5cGVvZmZuID0gX3R5cGVvZihmdW5jdGlvbiAoKSB7fSk7XG5cbnZhciB0eXBlb2ZodG1sZWxlID0gdHlwZW9mIEhUTUxFbGVtZW50ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoSFRNTEVsZW1lbnQpO1xuXG52YXIgaW5zdGFuY2VTdHIgPSBmdW5jdGlvbiBpbnN0YW5jZVN0cihvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouaW5zdGFuY2VTdHJpbmcgJiYgZm4ob2JqLmluc3RhbmNlU3RyaW5nKSA/IG9iai5pbnN0YW5jZVN0cmluZygpIDogbnVsbDtcbn07XG5cbnZhciBzdHJpbmcgPSBmdW5jdGlvbiBzdHJpbmcob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT0gdHlwZW9mc3RyO1xufTtcbnZhciBmbiA9IGZ1bmN0aW9uIGZuKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgX3R5cGVvZihvYmopID09PSB0eXBlb2Zmbjtcbn07XG52YXIgYXJyYXkgPSBmdW5jdGlvbiBhcnJheShvYmopIHtcbiAgcmV0dXJuICFlbGVtZW50T3JDb2xsZWN0aW9uKG9iaikgJiYgKEFycmF5LmlzQXJyYXkgPyBBcnJheS5pc0FycmF5KG9iaikgOiBvYmogIT0gbnVsbCAmJiBvYmogaW5zdGFuY2VvZiBBcnJheSk7XG59O1xudmFyIHBsYWluT2JqZWN0ID0gZnVuY3Rpb24gcGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT09IHR5cGVvZm9iaiAmJiAhYXJyYXkob2JqKSAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdDtcbn07XG52YXIgb2JqZWN0ID0gZnVuY3Rpb24gb2JqZWN0KG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgX3R5cGVvZihvYmopID09PSB0eXBlb2ZvYmo7XG59O1xudmFyIG51bWJlciA9IGZ1bmN0aW9uIG51bWJlcihvYmopIHtcbiAgcmV0dXJuIG9iaiAhPSBudWxsICYmIF90eXBlb2Yob2JqKSA9PT0gX3R5cGVvZigxKSAmJiAhaXNOYU4ob2JqKTtcbn07XG52YXIgaW50ZWdlciA9IGZ1bmN0aW9uIGludGVnZXIob2JqKSB7XG4gIHJldHVybiBudW1iZXIob2JqKSAmJiBNYXRoLmZsb29yKG9iaikgPT09IG9iajtcbn07XG52YXIgaHRtbEVsZW1lbnQgPSBmdW5jdGlvbiBodG1sRWxlbWVudChvYmopIHtcbiAgaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2ZodG1sZWxlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbCAhPSBvYmogJiYgb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gIH1cbn07XG52YXIgZWxlbWVudE9yQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIGVsZW1lbnRPckNvbGxlY3Rpb24ob2JqKSB7XG4gIHJldHVybiBlbGVtZW50KG9iaikgfHwgY29sbGVjdGlvbihvYmopO1xufTtcbnZhciBlbGVtZW50ID0gZnVuY3Rpb24gZWxlbWVudChvYmopIHtcbiAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb2xsZWN0aW9uJyAmJiBvYmouX3ByaXZhdGUuc2luZ2xlO1xufTtcbnZhciBjb2xsZWN0aW9uID0gZnVuY3Rpb24gY29sbGVjdGlvbihvYmopIHtcbiAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb2xsZWN0aW9uJyAmJiAhb2JqLl9wcml2YXRlLnNpbmdsZTtcbn07XG52YXIgY29yZSA9IGZ1bmN0aW9uIGNvcmUob2JqKSB7XG4gIHJldHVybiBpbnN0YW5jZVN0cihvYmopID09PSAnY29yZSc7XG59O1xudmFyIHN0eWxlc2hlZXQgPSBmdW5jdGlvbiBzdHlsZXNoZWV0KG9iaikge1xuICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ3N0eWxlc2hlZXQnO1xufTtcbnZhciBldmVudCA9IGZ1bmN0aW9uIGV2ZW50KG9iaikge1xuICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ2V2ZW50Jztcbn07XG52YXIgZW1wdHlTdHJpbmcgPSBmdW5jdGlvbiBlbXB0eVN0cmluZyhvYmopIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIC8vIG51bGwgaXMgZW1wdHlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvYmogPT09ICcnIHx8IG9iai5tYXRjaCgvXlxccyskLykpIHtcbiAgICByZXR1cm4gdHJ1ZTsgLy8gZW1wdHkgc3RyaW5nIGlzIGVtcHR5XG4gIH1cblxuICByZXR1cm4gZmFsc2U7IC8vIG90aGVyd2lzZSwgd2UgZG9uJ3Qga25vdyB3aGF0IHdlJ3ZlIGdvdFxufTtcbnZhciBkb21FbGVtZW50ID0gZnVuY3Rpb24gZG9tRWxlbWVudChvYmopIHtcbiAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXIgc28gaXQgZG9lc24ndCBtYXR0ZXJcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gIH1cbn07XG52YXIgYm91bmRpbmdCb3ggPSBmdW5jdGlvbiBib3VuZGluZ0JveChvYmopIHtcbiAgcmV0dXJuIHBsYWluT2JqZWN0KG9iaikgJiYgbnVtYmVyKG9iai54MSkgJiYgbnVtYmVyKG9iai54MikgJiYgbnVtYmVyKG9iai55MSkgJiYgbnVtYmVyKG9iai55Mik7XG59O1xudmFyIHByb21pc2UgPSBmdW5jdGlvbiBwcm9taXNlKG9iaikge1xuICByZXR1cm4gb2JqZWN0KG9iaikgJiYgZm4ob2JqLnRoZW4pO1xufTtcbnZhciBtcyA9IGZ1bmN0aW9uIG1zKCkge1xuICByZXR1cm4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21zaWV8dHJpZGVudHxlZGdlL2kpO1xufTsgLy8gcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRldGVjdCB0aGlzLi4uXG5cbnZhciBtZW1vaXplID0gZnVuY3Rpb24gbWVtb2l6ZShmbiwga2V5Rm4pIHtcbiAgaWYgKCFrZXlGbikge1xuICAgIGtleUZuID0gZnVuY3Rpb24ga2V5Rm4oKSB7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhcmdzLmpvaW4oJyQnKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIG1lbW9pemVkRm4gPSBmdW5jdGlvbiBtZW1vaXplZEZuKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgcmV0O1xuICAgIHZhciBrID0ga2V5Rm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgdmFyIGNhY2hlID0gbWVtb2l6ZWRGbi5jYWNoZTtcblxuICAgIGlmICghKHJldCA9IGNhY2hlW2tdKSkge1xuICAgICAgcmV0ID0gY2FjaGVba10gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIG1lbW9pemVkRm4uY2FjaGUgPSB7fTtcbiAgcmV0dXJuIG1lbW9pemVkRm47XG59O1xuXG52YXIgY2FtZWwyZGFzaCA9IG1lbW9pemUoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gJy0nICsgdi50b0xvd2VyQ2FzZSgpO1xuICB9KTtcbn0pO1xudmFyIGRhc2gyY2FtZWwgPSBtZW1vaXplKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oLVxcdykvZywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gdlsxXS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn0pO1xudmFyIHByZXBlbmRDYW1lbCA9IG1lbW9pemUoZnVuY3Rpb24gKHByZWZpeCwgc3RyKSB7XG4gIHJldHVybiBwcmVmaXggKyBzdHJbMF0udG9VcHBlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59LCBmdW5jdGlvbiAocHJlZml4LCBzdHIpIHtcbiAgcmV0dXJuIHByZWZpeCArICckJyArIHN0cjtcbn0pO1xudmFyIGNhcGl0YWxpemUgPSBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cikge1xuICBpZiAoZW1wdHlTdHJpbmcoc3RyKSkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5cbnZhciBudW1iZXIkMSA9ICcoPzpbLStdPyg/Oig/OlxcXFxkK3xcXFxcZCpcXFxcLlxcXFxkKykoPzpbRWVdWystXT9cXFxcZCspPykpJztcbnZhciByZ2JhID0gJ3JnYlthXT9cXFxcKCgnICsgbnVtYmVyJDEgKyAnWyVdPylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICdbJV0/KVxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnKSk/XFxcXCknO1xudmFyIHJnYmFOb0JhY2tSZWZzID0gJ3JnYlthXT9cXFxcKCg/OicgKyBudW1iZXIkMSArICdbJV0/KVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdPylcXFxccyosXFxcXHMqKD86JyArIG51bWJlciQxICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKig/OicgKyBudW1iZXIkMSArICcpKT9cXFxcKSc7XG52YXIgaHNsYSA9ICdoc2xbYV0/XFxcXCgoJyArIG51bWJlciQxICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICdbJV0pXFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJykpP1xcXFwpJztcbnZhciBoc2xhTm9CYWNrUmVmcyA9ICdoc2xbYV0/XFxcXCgoPzonICsgbnVtYmVyJDEgKyAnKVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdKVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnKSk/XFxcXCknO1xudmFyIGhleDMgPSAnXFxcXCNbMC05YS1mQS1GXXszfSc7XG52YXIgaGV4NiA9ICdcXFxcI1swLTlhLWZBLUZdezZ9JztcblxudmFyIGFzY2VuZGluZyA9IGZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gIGlmIChhIDwgYikge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChhID4gYikge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xudmFyIGRlc2NlbmRpbmcgPSBmdW5jdGlvbiBkZXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIC0xICogYXNjZW5kaW5nKGEsIGIpO1xufTtcblxudmFyIGV4dGVuZCA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2JqID0gYXJnc1tpXTtcblxuICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgayA9IGtleXNbal07XG4gICAgICB0Z3Rba10gPSBvYmpba107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbnZhciBoZXgydHVwbGUgPSBmdW5jdGlvbiBoZXgydHVwbGUoaGV4KSB7XG4gIGlmICghKGhleC5sZW5ndGggPT09IDQgfHwgaGV4Lmxlbmd0aCA9PT0gNykgfHwgaGV4WzBdICE9PSAnIycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2hvcnRIZXggPSBoZXgubGVuZ3RoID09PSA0O1xuICB2YXIgciwgZywgYjtcbiAgdmFyIGJhc2UgPSAxNjtcblxuICBpZiAoc2hvcnRIZXgpIHtcbiAgICByID0gcGFyc2VJbnQoaGV4WzFdICsgaGV4WzFdLCBiYXNlKTtcbiAgICBnID0gcGFyc2VJbnQoaGV4WzJdICsgaGV4WzJdLCBiYXNlKTtcbiAgICBiID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzNdLCBiYXNlKTtcbiAgfSBlbHNlIHtcbiAgICByID0gcGFyc2VJbnQoaGV4WzFdICsgaGV4WzJdLCBiYXNlKTtcbiAgICBnID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzRdLCBiYXNlKTtcbiAgICBiID0gcGFyc2VJbnQoaGV4WzVdICsgaGV4WzZdLCBiYXNlKTtcbiAgfVxuXG4gIHJldHVybiBbciwgZywgYl07XG59OyAvLyBnZXQgW3IsIGcsIGIsIGFdIGZyb20gaHNsKDAsIDAsIDApIG9yIGhzbGEoMCwgMCwgMCwgMClcblxudmFyIGhzbDJ0dXBsZSA9IGZ1bmN0aW9uIGhzbDJ0dXBsZShoc2wpIHtcbiAgdmFyIHJldDtcbiAgdmFyIGgsIHMsIGwsIGEsIHIsIGcsIGI7XG5cbiAgZnVuY3Rpb24gaHVlMnJnYihwLCBxLCB0KSB7XG4gICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgaWYgKHQgPiAxKSB0IC09IDE7XG4gICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgaWYgKHQgPCAyIC8gMykgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgdmFyIG0gPSBuZXcgUmVnRXhwKCdeJyArIGhzbGEgKyAnJCcpLmV4ZWMoaHNsKTtcblxuICBpZiAobSkge1xuICAgIC8vIGdldCBodWVcbiAgICBoID0gcGFyc2VJbnQobVsxXSk7XG5cbiAgICBpZiAoaCA8IDApIHtcbiAgICAgIGggPSAoMzYwIC0gLTEgKiBoICUgMzYwKSAlIDM2MDtcbiAgICB9IGVsc2UgaWYgKGggPiAzNjApIHtcbiAgICAgIGggPSBoICUgMzYwO1xuICAgIH1cblxuICAgIGggLz0gMzYwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICBzID0gcGFyc2VGbG9hdChtWzJdKTtcblxuICAgIGlmIChzIDwgMCB8fCBzID4gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBzYXR1cmF0aW9uIGlzIFswLCAxMDBdXG5cblxuICAgIHMgPSBzIC8gMTAwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICBsID0gcGFyc2VGbG9hdChtWzNdKTtcblxuICAgIGlmIChsIDwgMCB8fCBsID4gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBsaWdodG5lc3MgaXMgWzAsIDEwMF1cblxuXG4gICAgbCA9IGwgLyAxMDA7IC8vIG5vcm1hbGlzZSBvbiBbMCwgMV1cblxuICAgIGEgPSBtWzRdO1xuXG4gICAgaWYgKGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYSA9IHBhcnNlRmxvYXQoYSk7XG5cbiAgICAgIGlmIChhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGFscGhhIGlzIFswLCAxXVxuXG4gICAgfSAvLyBub3csIGNvbnZlcnQgdG8gcmdiXG4gICAgLy8gY29kZSBmcm9tIGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHRcblxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIHIgPSBnID0gYiA9IE1hdGgucm91bmQobCAqIDI1NSk7IC8vIGFjaHJvbWF0aWNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgdmFyIHAgPSAyICogbCAtIHE7XG4gICAgICByID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggKyAxIC8gMykpO1xuICAgICAgZyA9IE1hdGgucm91bmQoMjU1ICogaHVlMnJnYihwLCBxLCBoKSk7XG4gICAgICBiID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggLSAxIC8gMykpO1xuICAgIH1cblxuICAgIHJldCA9IFtyLCBnLCBiLCBhXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59OyAvLyBnZXQgW3IsIGcsIGIsIGFdIGZyb20gcmdiKDAsIDAsIDApIG9yIHJnYmEoMCwgMCwgMCwgMClcblxudmFyIHJnYjJ0dXBsZSA9IGZ1bmN0aW9uIHJnYjJ0dXBsZShyZ2IpIHtcbiAgdmFyIHJldDtcbiAgdmFyIG0gPSBuZXcgUmVnRXhwKCdeJyArIHJnYmEgKyAnJCcpLmV4ZWMocmdiKTtcblxuICBpZiAobSkge1xuICAgIHJldCA9IFtdO1xuICAgIHZhciBpc1BjdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgICB2YXIgY2hhbm5lbCA9IG1baV07XG5cbiAgICAgIGlmIChjaGFubmVsW2NoYW5uZWwubGVuZ3RoIC0gMV0gPT09ICclJykge1xuICAgICAgICBpc1BjdFtpXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNoYW5uZWwgPSBwYXJzZUZsb2F0KGNoYW5uZWwpO1xuXG4gICAgICBpZiAoaXNQY3RbaV0pIHtcbiAgICAgICAgY2hhbm5lbCA9IGNoYW5uZWwgLyAxMDAgKiAyNTU7IC8vIG5vcm1hbGlzZSB0byBbMCwgMjU1XVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbm5lbCA8IDAgfHwgY2hhbm5lbCA+IDI1NSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGludmFsaWQgY2hhbm5lbCB2YWx1ZVxuXG5cbiAgICAgIHJldC5wdXNoKE1hdGguZmxvb3IoY2hhbm5lbCkpO1xuICAgIH1cblxuICAgIHZhciBhdExlYXN0T25lSXNQY3QgPSBpc1BjdFsxXSB8fCBpc1BjdFsyXSB8fCBpc1BjdFszXTtcbiAgICB2YXIgYWxsQXJlUGN0ID0gaXNQY3RbMV0gJiYgaXNQY3RbMl0gJiYgaXNQY3RbM107XG5cbiAgICBpZiAoYXRMZWFzdE9uZUlzUGN0ICYmICFhbGxBcmVQY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIG11c3QgYWxsIGJlIHBlcmNlbnQgdmFsdWVzIGlmIG9uZSBpc1xuXG5cbiAgICB2YXIgYWxwaGEgPSBtWzRdO1xuXG4gICAgaWYgKGFscGhhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFscGhhID0gcGFyc2VGbG9hdChhbHBoYSk7XG5cbiAgICAgIGlmIChhbHBoYSA8IDAgfHwgYWxwaGEgPiAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gaW52YWxpZCBhbHBoYSB2YWx1ZVxuXG5cbiAgICAgIHJldC5wdXNoKGFscGhhKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcbnZhciBjb2xvcm5hbWUydHVwbGUgPSBmdW5jdGlvbiBjb2xvcm5hbWUydHVwbGUoY29sb3IpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvci50b0xvd2VyQ2FzZSgpXTtcbn07XG52YXIgY29sb3IydHVwbGUgPSBmdW5jdGlvbiBjb2xvcjJ0dXBsZShjb2xvcikge1xuICByZXR1cm4gKGFycmF5KGNvbG9yKSA/IGNvbG9yIDogbnVsbCkgfHwgY29sb3JuYW1lMnR1cGxlKGNvbG9yKSB8fCBoZXgydHVwbGUoY29sb3IpIHx8IHJnYjJ0dXBsZShjb2xvcikgfHwgaHNsMnR1cGxlKGNvbG9yKTtcbn07XG52YXIgY29sb3JzID0ge1xuICAvLyBzcGVjaWFsIGNvbG91ciBuYW1lc1xuICB0cmFuc3BhcmVudDogWzAsIDAsIDAsIDBdLFxuICAvLyBOQiBhbHBoYSA9PT0gMFxuICAvLyByZWd1bGFyIGNvbG91cnNcbiAgYWxpY2VibHVlOiBbMjQwLCAyNDgsIDI1NV0sXG4gIGFudGlxdWV3aGl0ZTogWzI1MCwgMjM1LCAyMTVdLFxuICBhcXVhOiBbMCwgMjU1LCAyNTVdLFxuICBhcXVhbWFyaW5lOiBbMTI3LCAyNTUsIDIxMl0sXG4gIGF6dXJlOiBbMjQwLCAyNTUsIDI1NV0sXG4gIGJlaWdlOiBbMjQ1LCAyNDUsIDIyMF0sXG4gIGJpc3F1ZTogWzI1NSwgMjI4LCAxOTZdLFxuICBibGFjazogWzAsIDAsIDBdLFxuICBibGFuY2hlZGFsbW9uZDogWzI1NSwgMjM1LCAyMDVdLFxuICBibHVlOiBbMCwgMCwgMjU1XSxcbiAgYmx1ZXZpb2xldDogWzEzOCwgNDMsIDIyNl0sXG4gIGJyb3duOiBbMTY1LCA0MiwgNDJdLFxuICBidXJseXdvb2Q6IFsyMjIsIDE4NCwgMTM1XSxcbiAgY2FkZXRibHVlOiBbOTUsIDE1OCwgMTYwXSxcbiAgY2hhcnRyZXVzZTogWzEyNywgMjU1LCAwXSxcbiAgY2hvY29sYXRlOiBbMjEwLCAxMDUsIDMwXSxcbiAgY29yYWw6IFsyNTUsIDEyNywgODBdLFxuICBjb3JuZmxvd2VyYmx1ZTogWzEwMCwgMTQ5LCAyMzddLFxuICBjb3Juc2lsazogWzI1NSwgMjQ4LCAyMjBdLFxuICBjcmltc29uOiBbMjIwLCAyMCwgNjBdLFxuICBjeWFuOiBbMCwgMjU1LCAyNTVdLFxuICBkYXJrYmx1ZTogWzAsIDAsIDEzOV0sXG4gIGRhcmtjeWFuOiBbMCwgMTM5LCAxMzldLFxuICBkYXJrZ29sZGVucm9kOiBbMTg0LCAxMzQsIDExXSxcbiAgZGFya2dyYXk6IFsxNjksIDE2OSwgMTY5XSxcbiAgZGFya2dyZWVuOiBbMCwgMTAwLCAwXSxcbiAgZGFya2dyZXk6IFsxNjksIDE2OSwgMTY5XSxcbiAgZGFya2toYWtpOiBbMTg5LCAxODMsIDEwN10sXG4gIGRhcmttYWdlbnRhOiBbMTM5LCAwLCAxMzldLFxuICBkYXJrb2xpdmVncmVlbjogWzg1LCAxMDcsIDQ3XSxcbiAgZGFya29yYW5nZTogWzI1NSwgMTQwLCAwXSxcbiAgZGFya29yY2hpZDogWzE1MywgNTAsIDIwNF0sXG4gIGRhcmtyZWQ6IFsxMzksIDAsIDBdLFxuICBkYXJrc2FsbW9uOiBbMjMzLCAxNTAsIDEyMl0sXG4gIGRhcmtzZWFncmVlbjogWzE0MywgMTg4LCAxNDNdLFxuICBkYXJrc2xhdGVibHVlOiBbNzIsIDYxLCAxMzldLFxuICBkYXJrc2xhdGVncmF5OiBbNDcsIDc5LCA3OV0sXG4gIGRhcmtzbGF0ZWdyZXk6IFs0NywgNzksIDc5XSxcbiAgZGFya3R1cnF1b2lzZTogWzAsIDIwNiwgMjA5XSxcbiAgZGFya3Zpb2xldDogWzE0OCwgMCwgMjExXSxcbiAgZGVlcHBpbms6IFsyNTUsIDIwLCAxNDddLFxuICBkZWVwc2t5Ymx1ZTogWzAsIDE5MSwgMjU1XSxcbiAgZGltZ3JheTogWzEwNSwgMTA1LCAxMDVdLFxuICBkaW1ncmV5OiBbMTA1LCAxMDUsIDEwNV0sXG4gIGRvZGdlcmJsdWU6IFszMCwgMTQ0LCAyNTVdLFxuICBmaXJlYnJpY2s6IFsxNzgsIDM0LCAzNF0sXG4gIGZsb3JhbHdoaXRlOiBbMjU1LCAyNTAsIDI0MF0sXG4gIGZvcmVzdGdyZWVuOiBbMzQsIDEzOSwgMzRdLFxuICBmdWNoc2lhOiBbMjU1LCAwLCAyNTVdLFxuICBnYWluc2Jvcm86IFsyMjAsIDIyMCwgMjIwXSxcbiAgZ2hvc3R3aGl0ZTogWzI0OCwgMjQ4LCAyNTVdLFxuICBnb2xkOiBbMjU1LCAyMTUsIDBdLFxuICBnb2xkZW5yb2Q6IFsyMTgsIDE2NSwgMzJdLFxuICBncmF5OiBbMTI4LCAxMjgsIDEyOF0sXG4gIGdyZXk6IFsxMjgsIDEyOCwgMTI4XSxcbiAgZ3JlZW46IFswLCAxMjgsIDBdLFxuICBncmVlbnllbGxvdzogWzE3MywgMjU1LCA0N10sXG4gIGhvbmV5ZGV3OiBbMjQwLCAyNTUsIDI0MF0sXG4gIGhvdHBpbms6IFsyNTUsIDEwNSwgMTgwXSxcbiAgaW5kaWFucmVkOiBbMjA1LCA5MiwgOTJdLFxuICBpbmRpZ286IFs3NSwgMCwgMTMwXSxcbiAgaXZvcnk6IFsyNTUsIDI1NSwgMjQwXSxcbiAga2hha2k6IFsyNDAsIDIzMCwgMTQwXSxcbiAgbGF2ZW5kZXI6IFsyMzAsIDIzMCwgMjUwXSxcbiAgbGF2ZW5kZXJibHVzaDogWzI1NSwgMjQwLCAyNDVdLFxuICBsYXduZ3JlZW46IFsxMjQsIDI1MiwgMF0sXG4gIGxlbW9uY2hpZmZvbjogWzI1NSwgMjUwLCAyMDVdLFxuICBsaWdodGJsdWU6IFsxNzMsIDIxNiwgMjMwXSxcbiAgbGlnaHRjb3JhbDogWzI0MCwgMTI4LCAxMjhdLFxuICBsaWdodGN5YW46IFsyMjQsIDI1NSwgMjU1XSxcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFsyNTAsIDI1MCwgMjEwXSxcbiAgbGlnaHRncmF5OiBbMjExLCAyMTEsIDIxMV0sXG4gIGxpZ2h0Z3JlZW46IFsxNDQsIDIzOCwgMTQ0XSxcbiAgbGlnaHRncmV5OiBbMjExLCAyMTEsIDIxMV0sXG4gIGxpZ2h0cGluazogWzI1NSwgMTgyLCAxOTNdLFxuICBsaWdodHNhbG1vbjogWzI1NSwgMTYwLCAxMjJdLFxuICBsaWdodHNlYWdyZWVuOiBbMzIsIDE3OCwgMTcwXSxcbiAgbGlnaHRza3libHVlOiBbMTM1LCAyMDYsIDI1MF0sXG4gIGxpZ2h0c2xhdGVncmF5OiBbMTE5LCAxMzYsIDE1M10sXG4gIGxpZ2h0c2xhdGVncmV5OiBbMTE5LCAxMzYsIDE1M10sXG4gIGxpZ2h0c3RlZWxibHVlOiBbMTc2LCAxOTYsIDIyMl0sXG4gIGxpZ2h0eWVsbG93OiBbMjU1LCAyNTUsIDIyNF0sXG4gIGxpbWU6IFswLCAyNTUsIDBdLFxuICBsaW1lZ3JlZW46IFs1MCwgMjA1LCA1MF0sXG4gIGxpbmVuOiBbMjUwLCAyNDAsIDIzMF0sXG4gIG1hZ2VudGE6IFsyNTUsIDAsIDI1NV0sXG4gIG1hcm9vbjogWzEyOCwgMCwgMF0sXG4gIG1lZGl1bWFxdWFtYXJpbmU6IFsxMDIsIDIwNSwgMTcwXSxcbiAgbWVkaXVtYmx1ZTogWzAsIDAsIDIwNV0sXG4gIG1lZGl1bW9yY2hpZDogWzE4NiwgODUsIDIxMV0sXG4gIG1lZGl1bXB1cnBsZTogWzE0NywgMTEyLCAyMTldLFxuICBtZWRpdW1zZWFncmVlbjogWzYwLCAxNzksIDExM10sXG4gIG1lZGl1bXNsYXRlYmx1ZTogWzEyMywgMTA0LCAyMzhdLFxuICBtZWRpdW1zcHJpbmdncmVlbjogWzAsIDI1MCwgMTU0XSxcbiAgbWVkaXVtdHVycXVvaXNlOiBbNzIsIDIwOSwgMjA0XSxcbiAgbWVkaXVtdmlvbGV0cmVkOiBbMTk5LCAyMSwgMTMzXSxcbiAgbWlkbmlnaHRibHVlOiBbMjUsIDI1LCAxMTJdLFxuICBtaW50Y3JlYW06IFsyNDUsIDI1NSwgMjUwXSxcbiAgbWlzdHlyb3NlOiBbMjU1LCAyMjgsIDIyNV0sXG4gIG1vY2Nhc2luOiBbMjU1LCAyMjgsIDE4MV0sXG4gIG5hdmFqb3doaXRlOiBbMjU1LCAyMjIsIDE3M10sXG4gIG5hdnk6IFswLCAwLCAxMjhdLFxuICBvbGRsYWNlOiBbMjUzLCAyNDUsIDIzMF0sXG4gIG9saXZlOiBbMTI4LCAxMjgsIDBdLFxuICBvbGl2ZWRyYWI6IFsxMDcsIDE0MiwgMzVdLFxuICBvcmFuZ2U6IFsyNTUsIDE2NSwgMF0sXG4gIG9yYW5nZXJlZDogWzI1NSwgNjksIDBdLFxuICBvcmNoaWQ6IFsyMTgsIDExMiwgMjE0XSxcbiAgcGFsZWdvbGRlbnJvZDogWzIzOCwgMjMyLCAxNzBdLFxuICBwYWxlZ3JlZW46IFsxNTIsIDI1MSwgMTUyXSxcbiAgcGFsZXR1cnF1b2lzZTogWzE3NSwgMjM4LCAyMzhdLFxuICBwYWxldmlvbGV0cmVkOiBbMjE5LCAxMTIsIDE0N10sXG4gIHBhcGF5YXdoaXA6IFsyNTUsIDIzOSwgMjEzXSxcbiAgcGVhY2hwdWZmOiBbMjU1LCAyMTgsIDE4NV0sXG4gIHBlcnU6IFsyMDUsIDEzMywgNjNdLFxuICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sXG4gIHBsdW06IFsyMjEsIDE2MCwgMjIxXSxcbiAgcG93ZGVyYmx1ZTogWzE3NiwgMjI0LCAyMzBdLFxuICBwdXJwbGU6IFsxMjgsIDAsIDEyOF0sXG4gIHJlZDogWzI1NSwgMCwgMF0sXG4gIHJvc3licm93bjogWzE4OCwgMTQzLCAxNDNdLFxuICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLFxuICBzYWRkbGVicm93bjogWzEzOSwgNjksIDE5XSxcbiAgc2FsbW9uOiBbMjUwLCAxMjgsIDExNF0sXG4gIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLFxuICBzZWFncmVlbjogWzQ2LCAxMzksIDg3XSxcbiAgc2Vhc2hlbGw6IFsyNTUsIDI0NSwgMjM4XSxcbiAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLFxuICBzaWx2ZXI6IFsxOTIsIDE5MiwgMTkyXSxcbiAgc2t5Ymx1ZTogWzEzNSwgMjA2LCAyMzVdLFxuICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLFxuICBzbGF0ZWdyYXk6IFsxMTIsIDEyOCwgMTQ0XSxcbiAgc2xhdGVncmV5OiBbMTEyLCAxMjgsIDE0NF0sXG4gIHNub3c6IFsyNTUsIDI1MCwgMjUwXSxcbiAgc3ByaW5nZ3JlZW46IFswLCAyNTUsIDEyN10sXG4gIHN0ZWVsYmx1ZTogWzcwLCAxMzAsIDE4MF0sXG4gIHRhbjogWzIxMCwgMTgwLCAxNDBdLFxuICB0ZWFsOiBbMCwgMTI4LCAxMjhdLFxuICB0aGlzdGxlOiBbMjE2LCAxOTEsIDIxNl0sXG4gIHRvbWF0bzogWzI1NSwgOTksIDcxXSxcbiAgdHVycXVvaXNlOiBbNjQsIDIyNCwgMjA4XSxcbiAgdmlvbGV0OiBbMjM4LCAxMzAsIDIzOF0sXG4gIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sXG4gIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sXG4gIHdoaXRlc21va2U6IFsyNDUsIDI0NSwgMjQ1XSxcbiAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLFxuICB5ZWxsb3dncmVlbjogWzE1NCwgMjA1LCA1MF1cbn07XG5cbnZhciBzZXRNYXAgPSBmdW5jdGlvbiBzZXRNYXAob3B0aW9ucykge1xuICB2YXIgb2JqID0gb3B0aW9ucy5tYXA7XG4gIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyaWVkIHRvIHNldCBtYXAgd2l0aCBvYmplY3Qga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGkgPCBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIGV4dGVuZCB0aGUgbWFwIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKG9ialtrZXldID09IG51bGwpIHtcbiAgICAgICAgb2JqW2tleV0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNldCB0aGUgdmFsdWVcbiAgICAgIG9ialtrZXldID0gb3B0aW9ucy52YWx1ZTtcbiAgICB9XG4gIH1cbn07IC8vIGdldHMgdGhlIHZhbHVlIGluIGEgbWFwIGV2ZW4gaWYgaXQncyBub3QgYnVpbHQgaW4gcGxhY2VzXG5cbnZhciBnZXRNYXAgPSBmdW5jdGlvbiBnZXRNYXAob3B0aW9ucykge1xuICB2YXIgb2JqID0gb3B0aW9ucy5tYXA7XG4gIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyaWVkIHRvIGdldCBtYXAgd2l0aCBvYmplY3Qga2V5Jyk7XG4gICAgfVxuXG4gICAgb2JqID0gb2JqW2tleV07XG5cbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07IC8vIGRlbGV0ZXMgdGhlIGVudHJ5IGluIHRoZSBtYXBcblxudmFyIHBlcmZvcm1hbmNlID0gd2luZG93JDEgPyB3aW5kb3ckMS5wZXJmb3JtYW5jZSA6IG51bGw7XG52YXIgcG5vdyA9IHBlcmZvcm1hbmNlICYmIHBlcmZvcm1hbmNlLm5vdyA/IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpO1xufSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIERhdGUubm93KCk7XG59O1xuXG52YXIgcmFmID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93JDEpIHtcbiAgICBpZiAod2luZG93JDEucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLnJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLm1velJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgd2luZG93JDEubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKGZuKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm4ocG5vdygpKTtcbiAgICAgIH0sIDEwMDAgLyA2MCk7XG4gICAgfVxuICB9O1xufSgpO1xuXG52YXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKSB7XG4gIHJldHVybiByYWYoZm4pO1xufTtcbnZhciBwZXJmb3JtYW5jZU5vdyA9IHBub3c7XG5cbnZhciBERUZBVUxUX0hBU0hfU0VFRCA9IDkyNjE7XG52YXIgSyA9IDY1NTk5OyAvLyAzNyBhbHNvIHdvcmtzIHByZXR0eSB3ZWxsXG5cbnZhciBERUZBVUxUX0hBU0hfU0VFRF9BTFQgPSA1MzgxO1xudmFyIGhhc2hJdGVyYWJsZUludHMgPSBmdW5jdGlvbiBoYXNoSXRlcmFibGVJbnRzKGl0ZXJhdG9yKSB7XG4gIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRDtcbiAgLy8gc2RibS9zdHJpbmctaGFzaFxuICB2YXIgaGFzaCA9IHNlZWQ7XG4gIHZhciBlbnRyeTtcblxuICBmb3IgKDs7KSB7XG4gICAgZW50cnkgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoZW50cnkuZG9uZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzaCA9IGhhc2ggKiBLICsgZW50cnkudmFsdWUgfCAwO1xuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xudmFyIGhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KG51bSkge1xuICB2YXIgc2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogREVGQVVMVF9IQVNIX1NFRUQ7XG4gIC8vIHNkYm0vc3RyaW5nLWhhc2hcbiAgcmV0dXJuIHNlZWQgKiBLICsgbnVtIHwgMDtcbn07XG52YXIgaGFzaEludEFsdCA9IGZ1bmN0aW9uIGhhc2hJbnRBbHQobnVtKSB7XG4gIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRF9BTFQ7XG4gIC8vIGRqYjIvc3RyaW5nLWhhc2hcbiAgcmV0dXJuIChzZWVkIDw8IDUpICsgc2VlZCArIG51bSB8IDA7XG59O1xudmFyIGNvbWJpbmVIYXNoZXMgPSBmdW5jdGlvbiBjb21iaW5lSGFzaGVzKGhhc2gxLCBoYXNoMikge1xuICByZXR1cm4gaGFzaDEgKiAweDIwMDAwMCArIGhhc2gyO1xufTtcbnZhciBjb21iaW5lSGFzaGVzQXJyYXkgPSBmdW5jdGlvbiBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaGVzKSB7XG4gIHJldHVybiBoYXNoZXNbMF0gKiAweDIwMDAwMCArIGhhc2hlc1sxXTtcbn07XG52YXIgaGFzaEFycmF5cyA9IGZ1bmN0aW9uIGhhc2hBcnJheXMoaGFzaGVzMSwgaGFzaGVzMikge1xuICByZXR1cm4gW2hhc2hJbnQoaGFzaGVzMVswXSwgaGFzaGVzMlswXSksIGhhc2hJbnRBbHQoaGFzaGVzMVsxXSwgaGFzaGVzMlsxXSldO1xufTtcbnZhciBoYXNoSW50c0FycmF5ID0gZnVuY3Rpb24gaGFzaEludHNBcnJheShpbnRzLCBzZWVkKSB7XG4gIHZhciBlbnRyeSA9IHtcbiAgICB2YWx1ZTogMCxcbiAgICBkb25lOiBmYWxzZVxuICB9O1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW5ndGggPSBpbnRzLmxlbmd0aDtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICBlbnRyeS52YWx1ZSA9IGludHNbaSsrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudHJ5LmRvbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gaGFzaEl0ZXJhYmxlSW50cyhpdGVyYXRvciwgc2VlZCk7XG59O1xudmFyIGhhc2hTdHJpbmcgPSBmdW5jdGlvbiBoYXNoU3RyaW5nKHN0ciwgc2VlZCkge1xuICB2YXIgZW50cnkgPSB7XG4gICAgdmFsdWU6IDAsXG4gICAgZG9uZTogZmFsc2VcbiAgfTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICBlbnRyeS52YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhhc2hJdGVyYWJsZUludHMoaXRlcmF0b3IsIHNlZWQpO1xufTtcbnZhciBoYXNoU3RyaW5ncyA9IGZ1bmN0aW9uIGhhc2hTdHJpbmdzKCkge1xuICByZXR1cm4gaGFzaFN0cmluZ3NBcnJheShhcmd1bWVudHMpO1xufTtcbnZhciBoYXNoU3RyaW5nc0FycmF5ID0gZnVuY3Rpb24gaGFzaFN0cmluZ3NBcnJheShzdHJzKSB7XG4gIHZhciBoYXNoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3Rycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzdHIgPSBzdHJzW2ldO1xuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0ciwgaGFzaCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xuXG4vKmdsb2JhbCBjb25zb2xlICovXG52YXIgd2FybmluZ3NFbmFibGVkID0gdHJ1ZTtcbnZhciB3YXJuU3VwcG9ydGVkID0gY29uc29sZS53YXJuICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG52YXIgdHJhY2VTdXBwb3J0ZWQgPSBjb25zb2xlLnRyYWNlICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG52YXIgTUFYX0lOVCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIHx8IDkwMDcxOTkyNTQ3NDA5OTE7XG52YXIgdHJ1ZWlmeSA9IGZ1bmN0aW9uIHRydWVpZnkoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBmYWxzaWZ5ID0gZnVuY3Rpb24gZmFsc2lmeSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciB6ZXJvaWZ5ID0gZnVuY3Rpb24gemVyb2lmeSgpIHtcbiAgcmV0dXJuIDA7XG59O1xudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG52YXIgZXJyb3IgPSBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG59O1xudmFyIHdhcm5pbmdzID0gZnVuY3Rpb24gd2FybmluZ3MoZW5hYmxlZCkge1xuICBpZiAoZW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2FybmluZ3NFbmFibGVkID0gISFlbmFibGVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB3YXJuaW5nc0VuYWJsZWQ7XG4gIH1cbn07XG52YXIgd2FybiA9IGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgaWYgKCF3YXJuaW5ncygpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHdhcm5TdXBwb3J0ZWQpIHtcbiAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhtc2cpO1xuXG4gICAgaWYgKHRyYWNlU3VwcG9ydGVkKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgfVxuICB9XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG52YXIgY2xvbmUgPSBmdW5jdGlvbiBjbG9uZShvYmopIHtcbiAgcmV0dXJuIGV4dGVuZCh7fSwgb2JqKTtcbn07IC8vIGdldHMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGFyZ3VtZW50XG5cbnZhciBjb3B5ID0gZnVuY3Rpb24gY29weShvYmopIHtcbiAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChhcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gY2xvbmUob2JqKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG59O1xudmFyIGNvcHlBcnJheSA9IGZ1bmN0aW9uIGNvcHlBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFyci5zbGljZSgpO1xufTtcbnZhciB1dWlkID0gZnVuY3Rpb24gdXVpZChhLCBiXG4vKiBwbGFjZWhvbGRlcnMgKi9cbikge1xuICBmb3IgKCAvLyBsb29wIDopXG4gIGIgPSBhID0gJyc7IC8vIGIgLSByZXN1bHQgLCBhIC0gbnVtZXJpYyBsZXRpYWJsZVxuICBhKysgPCAzNjsgLy9cbiAgYiArPSBhICogNTEgJiA1MiAvLyBpZiBcImFcIiBpcyBub3QgOSBvciAxNCBvciAxOSBvciAyNFxuICA/IC8vICByZXR1cm4gYSByYW5kb20gbnVtYmVyIG9yIDRcbiAgKGEgXiAxNSAvLyBpZiBcImFcIiBpcyBub3QgMTVcbiAgPyAvLyBnZW5ldGF0ZSBhIHJhbmRvbSBudW1iZXIgZnJvbSAwIHRvIDE1XG4gIDggXiBNYXRoLnJhbmRvbSgpICogKGEgXiAyMCA/IDE2IDogNCkgLy8gdW5sZXNzIFwiYVwiIGlzIDIwLCBpbiB3aGljaCBjYXNlIGEgcmFuZG9tIG51bWJlciBmcm9tIDggdG8gMTFcbiAgOiA0IC8vICBvdGhlcndpc2UgNFxuICApLnRvU3RyaW5nKDE2KSA6ICctJyAvLyAgaW4gb3RoZXIgY2FzZXMgKGlmIFwiYVwiIGlzIDksMTQsMTksMjQpIGluc2VydCBcIi1cIlxuICApIHtcbiAgfVxuXG4gIHJldHVybiBiO1xufTtcbnZhciBfc3RhdGljRW1wdHlPYmplY3QgPSB7fTtcbnZhciBzdGF0aWNFbXB0eU9iamVjdCA9IGZ1bmN0aW9uIHN0YXRpY0VtcHR5T2JqZWN0KCkge1xuICByZXR1cm4gX3N0YXRpY0VtcHR5T2JqZWN0O1xufTtcbnZhciBkZWZhdWx0cyA9IGZ1bmN0aW9uIGRlZmF1bHRzKF9kZWZhdWx0cykge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKF9kZWZhdWx0cyk7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0cykge1xuICAgIHZhciBmaWxsZWRPcHRzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIG9wdFZhbCA9IG9wdHMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9wdHNba2V5XTtcbiAgICAgIGZpbGxlZE9wdHNba2V5XSA9IG9wdFZhbCA9PT0gdW5kZWZpbmVkID8gX2RlZmF1bHRzW2tleV0gOiBvcHRWYWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGxlZE9wdHM7XG4gIH07XG59O1xudmFyIHJlbW92ZUZyb21BcnJheSA9IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnIsIGVsZSwgb25lQ29weSkge1xuICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGFycltpXSA9PT0gZWxlKSB7XG4gICAgICBhcnIuc3BsaWNlKGksIDEpO1xuXG4gICAgICBpZiAob25lQ29weSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG52YXIgY2xlYXJBcnJheSA9IGZ1bmN0aW9uIGNsZWFyQXJyYXkoYXJyKSB7XG4gIGFyci5zcGxpY2UoMCwgYXJyLmxlbmd0aCk7XG59O1xudmFyIHB1c2ggPSBmdW5jdGlvbiBwdXNoKGFyciwgb3RoZXJBcnIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckFyci5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IG90aGVyQXJyW2ldO1xuICAgIGFyci5wdXNoKGVsKTtcbiAgfVxufTtcbnZhciBnZXRQcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gZ2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIHByb3BOYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHByZWZpeCkge1xuICAgIHByb3BOYW1lID0gcHJlcGVuZENhbWVsKHByZWZpeCwgcHJvcE5hbWUpOyAvLyBlLmcuIChsYWJlbFdpZHRoLCBzb3VyY2UpID0+IHNvdXJjZUxhYmVsV2lkdGhcbiAgfVxuXG4gIHJldHVybiBvYmpbcHJvcE5hbWVdO1xufTtcbnZhciBzZXRQcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKSB7XG4gIGlmIChwcmVmaXgpIHtcbiAgICBwcm9wTmFtZSA9IHByZXBlbmRDYW1lbChwcmVmaXgsIHByb3BOYW1lKTsgLy8gZS5nLiAobGFiZWxXaWR0aCwgc291cmNlKSA9PiBzb3VyY2VMYWJlbFdpZHRoXG4gIH1cblxuICBvYmpbcHJvcE5hbWVdID0gdmFsdWU7XG59O1xuXG4vKiBnbG9iYWwgTWFwICovXG52YXIgT2JqZWN0TWFwID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gT2JqZWN0TWFwKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPYmplY3RNYXApO1xuXG4gICAgdGhpcy5fb2JqID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoT2JqZWN0TWFwLCBbe1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGtleSwgdmFsKSB7XG4gICAgICB0aGlzLl9vYmpba2V5XSA9IHZhbDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZShrZXkpIHtcbiAgICAgIHRoaXMuX29ialtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5fb2JqID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fb2JqW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmpba2V5XTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gT2JqZWN0TWFwO1xufSgpO1xuXG52YXIgTWFwJDEgPSB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyA/IE1hcCA6IE9iamVjdE1hcDtcblxuLyogZ2xvYmFsIFNldCAqL1xudmFyIHVuZGVmID0gIFwidW5kZWZpbmVkXCIgO1xuXG52YXIgT2JqZWN0U2V0ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gT2JqZWN0U2V0KGFycmF5T3JPYmplY3RTZXQpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgT2JqZWN0U2V0KTtcblxuICAgIHRoaXMuX29iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5zaXplID0gMDtcblxuICAgIGlmIChhcnJheU9yT2JqZWN0U2V0ICE9IG51bGwpIHtcbiAgICAgIHZhciBhcnI7XG5cbiAgICAgIGlmIChhcnJheU9yT2JqZWN0U2V0Lmluc3RhbmNlU3RyaW5nICE9IG51bGwgJiYgYXJyYXlPck9iamVjdFNldC5pbnN0YW5jZVN0cmluZygpID09PSB0aGlzLmluc3RhbmNlU3RyaW5nKCkpIHtcbiAgICAgICAgYXJyID0gYXJyYXlPck9iamVjdFNldC50b0FycmF5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnIgPSBhcnJheU9yT2JqZWN0U2V0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmFkZChhcnJbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhPYmplY3RTZXQsIFt7XG4gICAga2V5OiBcImluc3RhbmNlU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICdzZXQnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKHZhbCkge1xuICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgIGlmIChvW3ZhbF0gIT09IDEpIHtcbiAgICAgICAgb1t2YWxdID0gMTtcbiAgICAgICAgdGhpcy5zaXplKys7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlbGV0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZGVsZXRlKHZhbCkge1xuICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgIGlmIChvW3ZhbF0gPT09IDEpIHtcbiAgICAgICAgb1t2YWxdID0gMDtcbiAgICAgICAgdGhpcy5zaXplLS07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5fb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyh2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmpbdmFsXSA9PT0gMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9BcnJheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX29iaikuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmhhcyhrZXkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvckVhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZykge1xuICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBPYmplY3RTZXQ7XG59KCk7XG5cbnZhciBTZXQkMSA9ICh0eXBlb2YgU2V0ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoU2V0KSkgIT09IHVuZGVmID8gU2V0IDogT2JqZWN0U2V0O1xuXG52YXIgRWxlbWVudCA9IGZ1bmN0aW9uIEVsZW1lbnQoY3ksIHBhcmFtcykge1xuICB2YXIgcmVzdG9yZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogdHJ1ZTtcblxuICBpZiAoY3kgPT09IHVuZGVmaW5lZCB8fCBwYXJhbXMgPT09IHVuZGVmaW5lZCB8fCAhY29yZShjeSkpIHtcbiAgICBlcnJvcignQW4gZWxlbWVudCBtdXN0IGhhdmUgYSBjb3JlIHJlZmVyZW5jZSBhbmQgcGFyYW1ldGVycyBzZXQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZ3JvdXAgPSBwYXJhbXMuZ3JvdXA7IC8vIHRyeSB0byBhdXRvbWF0aWNhbGx5IGluZmVyIHRoZSBncm91cCBpZiB1bnNwZWNpZmllZFxuXG4gIGlmIChncm91cCA9PSBudWxsKSB7XG4gICAgaWYgKHBhcmFtcy5kYXRhICYmIHBhcmFtcy5kYXRhLnNvdXJjZSAhPSBudWxsICYmIHBhcmFtcy5kYXRhLnRhcmdldCAhPSBudWxsKSB7XG4gICAgICBncm91cCA9ICdlZGdlcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwID0gJ25vZGVzJztcbiAgICB9XG4gIH0gLy8gdmFsaWRhdGUgZ3JvdXBcblxuXG4gIGlmIChncm91cCAhPT0gJ25vZGVzJyAmJiBncm91cCAhPT0gJ2VkZ2VzJykge1xuICAgIGVycm9yKCdBbiBlbGVtZW50IG11c3QgYmUgb2YgdHlwZSBgbm9kZXNgIG9yIGBlZGdlc2A7IHlvdSBzcGVjaWZpZWQgYCcgKyBncm91cCArICdgJyk7XG4gICAgcmV0dXJuO1xuICB9IC8vIG1ha2UgdGhlIGVsZW1lbnQgYXJyYXktbGlrZSwganVzdCBsaWtlIGEgY29sbGVjdGlvblxuXG5cbiAgdGhpcy5sZW5ndGggPSAxO1xuICB0aGlzWzBdID0gdGhpczsgLy8gTk9URTogd2hlbiBzb21ldGhpbmcgaXMgYWRkZWQgaGVyZSwgYWRkIGFsc28gdG8gZWxlLmpzb24oKVxuXG4gIHZhciBfcCA9IHRoaXMuX3ByaXZhdGUgPSB7XG4gICAgY3k6IGN5LFxuICAgIHNpbmdsZTogdHJ1ZSxcbiAgICAvLyBpbmRpY2F0ZXMgdGhpcyBpcyBhbiBlbGVtZW50XG4gICAgZGF0YTogcGFyYW1zLmRhdGEgfHwge30sXG4gICAgLy8gZGF0YSBvYmplY3RcbiAgICBwb3NpdGlvbjogcGFyYW1zLnBvc2l0aW9uIHx8IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfSxcbiAgICAvLyAoeCwgeSkgcG9zaXRpb24gcGFpclxuICAgIGF1dG9XaWR0aDogdW5kZWZpbmVkLFxuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgb2Ygbm9kZXMgY2FsY3VsYXRlZCBieSB0aGUgcmVuZGVyZXIgd2hlbiBzZXQgdG8gc3BlY2lhbCAnYXV0bycgdmFsdWVcbiAgICBhdXRvSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgYXV0b1BhZGRpbmc6IHVuZGVmaW5lZCxcbiAgICBjb21wb3VuZEJvdW5kc0NsZWFuOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBjb21wb3VuZCBkaW1lbnNpb25zIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkIHRoZSBuZXh0IHRpbWUgZGltZW5zaW9ucyBhcmUgcmVhZFxuICAgIGxpc3RlbmVyczogW10sXG4gICAgLy8gYXJyYXkgb2YgYm91bmQgbGlzdGVuZXJzXG4gICAgZ3JvdXA6IGdyb3VwLFxuICAgIC8vIHN0cmluZzsgJ25vZGVzJyBvciAnZWRnZXMnXG4gICAgc3R5bGU6IHt9LFxuICAgIC8vIHByb3BlcnRpZXMgYXMgc2V0IGJ5IHRoZSBzdHlsZVxuICAgIHJzdHlsZToge30sXG4gICAgLy8gcHJvcGVydGllcyBmb3Igc3R5bGUgc2VudCBmcm9tIHRoZSByZW5kZXJlciB0byB0aGUgY29yZVxuICAgIHN0eWxlQ3h0czogW10sXG4gICAgLy8gYXBwbGllZCBzdHlsZSBjb250ZXh0cyBmcm9tIHRoZSBzdHlsZXJcbiAgICBzdHlsZUtleXM6IHt9LFxuICAgIC8vIHBlci1ncm91cCBrZXlzIG9mIHN0eWxlIHByb3BlcnR5IHZhbHVlc1xuICAgIHJlbW92ZWQ6IHRydWUsXG4gICAgLy8gd2hldGhlciBpdCdzIGluc2lkZSB0aGUgdmlzOyB0cnVlIGlmIHJlbW92ZWQgKHNldCB0cnVlIGhlcmUgc2luY2Ugd2UgY2FsbCByZXN0b3JlKVxuICAgIHNlbGVjdGVkOiBwYXJhbXMuc2VsZWN0ZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBpdCdzIHNlbGVjdGVkXG4gICAgc2VsZWN0YWJsZTogcGFyYW1zLnNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuc2VsZWN0YWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIGl0J3Mgc2VsZWN0YWJsZVxuICAgIGxvY2tlZDogcGFyYW1zLmxvY2tlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGxvY2tlZCAoY2Fubm90IGJlIG1vdmVkKVxuICAgIGdyYWJiZWQ6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgZ3JhYmJlZCBieSB0aGUgbW91c2U7IHJlbmRlcmVyIHNldHMgdGhpcyBwcml2YXRlbHlcbiAgICBncmFiYmFibGU6IHBhcmFtcy5ncmFiYmFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuZ3JhYmJhYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGJlIGdyYWJiZWRcbiAgICBwYW5uYWJsZTogcGFyYW1zLnBhbm5hYmxlID09PSB1bmRlZmluZWQgPyBncm91cCA9PT0gJ2VkZ2VzJyA/IHRydWUgOiBmYWxzZSA6IHBhcmFtcy5wYW5uYWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBwYXNzdGhyb3VnaCBwYW5uaW5nIGVuYWJsZWRcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgYWN0aXZlIGZyb20gdXNlciBpbnRlcmFjdGlvblxuICAgIGNsYXNzZXM6IG5ldyBTZXQkMSgpLFxuICAgIC8vIG1hcCAoIGNsYXNzTmFtZSA9PiB0cnVlIClcbiAgICBhbmltYXRpb246IHtcbiAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgY3VycmVudDogW10sXG4gICAgICBxdWV1ZTogW11cbiAgICB9LFxuICAgIHJzY3JhdGNoOiB7fSxcbiAgICAvLyBvYmplY3QgaW4gd2hpY2ggdGhlIHJlbmRlcmVyIGNhbiBzdG9yZSBpbmZvcm1hdGlvblxuICAgIHNjcmF0Y2g6IHBhcmFtcy5zY3JhdGNoIHx8IHt9LFxuICAgIC8vIHNjcmF0Y2ggb2JqZWN0c1xuICAgIGVkZ2VzOiBbXSxcbiAgICAvLyBhcnJheSBvZiBjb25uZWN0ZWQgZWRnZXNcbiAgICBjaGlsZHJlbjogW10sXG4gICAgLy8gYXJyYXkgb2YgY2hpbGRyZW5cbiAgICBwYXJlbnQ6IG51bGwsXG4gICAgLy8gcGFyZW50IHJlZlxuICAgIHRyYXZlcnNhbENhY2hlOiB7fSxcbiAgICAvLyBjYWNoZSBvZiBvdXRwdXQgb2YgdHJhdmVyc2FsIGZ1bmN0aW9uc1xuICAgIGJhY2tncm91bmRpbmc6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgYmFja2dyb3VuZCBpbWFnZXMgYXJlIGxvYWRpbmdcbiAgICBiYkNhY2hlOiBudWxsLFxuICAgIC8vIGNhY2hlIG9mIHRoZSBjdXJyZW50IGJvdW5kaW5nIGJveFxuICAgIGJiQ2FjaGVTaGlmdDoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LFxuICAgIC8vIHNoaWZ0IGFwcGxpZWQgdG8gY2FjaGVkIGJiIHRvIGJlIGFwcGxpZWQgb24gbmV4dCBnZXRcbiAgICBib2R5Qm91bmRzOiBudWxsLFxuICAgIC8vIGJvdW5kcyBjYWNoZSBvZiBlbGVtZW50IGJvZHksIHcvbyBvdmVybGF5XG4gICAgb3ZlcmxheUJvdW5kczogbnVsbCxcbiAgICAvLyBib3VuZHMgY2FjaGUgb2YgZWxlbWVudCBib2R5LCBpbmNsdWRpbmcgb3ZlcmxheVxuICAgIGxhYmVsQm91bmRzOiB7XG4gICAgICAvLyBib3VuZHMgY2FjaGUgb2YgbGFiZWxzXG4gICAgICBhbGw6IG51bGwsXG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICBtYWluOiBudWxsXG4gICAgfSxcbiAgICBhcnJvd0JvdW5kczoge1xuICAgICAgLy8gYm91bmRzIGNhY2hlIG9mIGVkZ2UgYXJyb3dzXG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAnbWlkLXNvdXJjZSc6IG51bGwsXG4gICAgICAnbWlkLXRhcmdldCc6IG51bGxcbiAgICB9XG4gIH07XG5cbiAgaWYgKF9wLnBvc2l0aW9uLnggPT0gbnVsbCkge1xuICAgIF9wLnBvc2l0aW9uLnggPSAwO1xuICB9XG5cbiAgaWYgKF9wLnBvc2l0aW9uLnkgPT0gbnVsbCkge1xuICAgIF9wLnBvc2l0aW9uLnkgPSAwO1xuICB9IC8vIHJlbmRlcmVkUG9zaXRpb24gb3ZlcnJpZGVzIGlmIHNwZWNpZmllZFxuXG5cbiAgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uKSB7XG4gICAgdmFyIHJwb3MgPSBwYXJhbXMucmVuZGVyZWRQb3NpdGlvbjtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgX3AucG9zaXRpb24gPSB7XG4gICAgICB4OiAocnBvcy54IC0gcGFuLngpIC8gem9vbSxcbiAgICAgIHk6IChycG9zLnkgLSBwYW4ueSkgLyB6b29tXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjbGFzc2VzID0gW107XG5cbiAgaWYgKGFycmF5KHBhcmFtcy5jbGFzc2VzKSkge1xuICAgIGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcztcbiAgfSBlbHNlIGlmIChzdHJpbmcocGFyYW1zLmNsYXNzZXMpKSB7XG4gICAgY2xhc3NlcyA9IHBhcmFtcy5jbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNscyA9IGNsYXNzZXNbaV07XG5cbiAgICBpZiAoIWNscyB8fCBjbHMgPT09ICcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBfcC5jbGFzc2VzLmFkZChjbHMpO1xuICB9XG5cbiAgdGhpcy5jcmVhdGVFbWl0dGVyKCk7XG4gIHZhciBieXBhc3MgPSBwYXJhbXMuc3R5bGUgfHwgcGFyYW1zLmNzcztcblxuICBpZiAoYnlwYXNzKSB7XG4gICAgd2FybignU2V0dGluZyBhIGBzdHlsZWAgYnlwYXNzIGF0IGVsZW1lbnQgY3JlYXRpb24gc2hvdWxkIGJlIGRvbmUgb25seSB3aGVuIGFic29sdXRlbHkgbmVjZXNzYXJ5LiAgVHJ5IHRvIHVzZSB0aGUgc3R5bGVzaGVldCBpbnN0ZWFkLicpO1xuICAgIHRoaXMuc3R5bGUoYnlwYXNzKTtcbiAgfVxuXG4gIGlmIChyZXN0b3JlID09PSB1bmRlZmluZWQgfHwgcmVzdG9yZSkge1xuICAgIHRoaXMucmVzdG9yZSgpO1xuICB9XG59O1xuXG52YXIgZGVmaW5lU2VhcmNoID0gZnVuY3Rpb24gZGVmaW5lU2VhcmNoKHBhcmFtcykge1xuICBwYXJhbXMgPSB7XG4gICAgYmZzOiBwYXJhbXMuYmZzIHx8ICFwYXJhbXMuZGZzLFxuICAgIGRmczogcGFyYW1zLmRmcyB8fCAhcGFyYW1zLmJmc1xuICB9OyAvLyBmcm9tIHBzZXVkb2NvZGUgb24gd2lraXBlZGlhXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHNlYXJjaEZuKHJvb3RzLCBmbiQxLCBkaXJlY3RlZCkge1xuICAgIHZhciBvcHRpb25zO1xuXG4gICAgaWYgKHBsYWluT2JqZWN0KHJvb3RzKSAmJiAhZWxlbWVudE9yQ29sbGVjdGlvbihyb290cykpIHtcbiAgICAgIG9wdGlvbnMgPSByb290cztcbiAgICAgIHJvb3RzID0gb3B0aW9ucy5yb290cyB8fCBvcHRpb25zLnJvb3Q7XG4gICAgICBmbiQxID0gb3B0aW9ucy52aXNpdDtcbiAgICAgIGRpcmVjdGVkID0gb3B0aW9ucy5kaXJlY3RlZDtcbiAgICB9XG5cbiAgICBkaXJlY3RlZCA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgIWZuKGZuJDEpID8gZm4kMSA6IGRpcmVjdGVkO1xuICAgIGZuJDEgPSBmbihmbiQxKSA/IGZuJDEgOiBmdW5jdGlvbiAoKSB7fTtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICAgIHZhciB2ID0gcm9vdHMgPSBzdHJpbmcocm9vdHMpID8gdGhpcy5maWx0ZXIocm9vdHMpIDogcm9vdHM7XG4gICAgdmFyIFEgPSBbXTtcbiAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBbXTtcbiAgICB2YXIgY29ubmVjdGVkQnkgPSB7fTtcbiAgICB2YXIgaWQyZGVwdGggPSB7fTtcbiAgICB2YXIgViA9IHt9O1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIgZm91bmQ7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlczsgLy8gZW5xdWV1ZSB2XG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZpID0gdltpXTtcbiAgICAgIHZhciB2aUlkID0gdmkuaWQoKTtcblxuICAgICAgaWYgKHZpLmlzTm9kZSgpKSB7XG4gICAgICAgIFEudW5zaGlmdCh2aSk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5iZnMpIHtcbiAgICAgICAgICBWW3ZpSWRdID0gdHJ1ZTtcbiAgICAgICAgICBjb25uZWN0ZWROb2Rlcy5wdXNoKHZpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlkMmRlcHRoW3ZpSWRdID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgX2xvb3AyID0gZnVuY3Rpb24gX2xvb3AyKCkge1xuICAgICAgdmFyIHYgPSBwYXJhbXMuYmZzID8gUS5zaGlmdCgpIDogUS5wb3AoKTtcbiAgICAgIHZhciB2SWQgPSB2LmlkKCk7XG5cbiAgICAgIGlmIChwYXJhbXMuZGZzKSB7XG4gICAgICAgIGlmIChWW3ZJZF0pIHtcbiAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgVlt2SWRdID0gdHJ1ZTtcbiAgICAgICAgY29ubmVjdGVkTm9kZXMucHVzaCh2KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlcHRoID0gaWQyZGVwdGhbdklkXTtcbiAgICAgIHZhciBwcmV2RWRnZSA9IGNvbm5lY3RlZEJ5W3ZJZF07XG4gICAgICB2YXIgc3JjID0gcHJldkVkZ2UgIT0gbnVsbCA/IHByZXZFZGdlLnNvdXJjZSgpIDogbnVsbDtcbiAgICAgIHZhciB0Z3QgPSBwcmV2RWRnZSAhPSBudWxsID8gcHJldkVkZ2UudGFyZ2V0KCkgOiBudWxsO1xuICAgICAgdmFyIHByZXZOb2RlID0gcHJldkVkZ2UgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHYuc2FtZShzcmMpID8gdGd0WzBdIDogc3JjWzBdO1xuICAgICAgdmFyIHJldCA9IHZvaWQgMDtcbiAgICAgIHJldCA9IGZuJDEodiwgcHJldkVkZ2UsIHByZXZOb2RlLCBqKyssIGRlcHRoKTtcblxuICAgICAgaWYgKHJldCA9PT0gdHJ1ZSkge1xuICAgICAgICBmb3VuZCA9IHY7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG5cbiAgICAgIHZhciB2d0VkZ2VzID0gdi5jb25uZWN0ZWRFZGdlcygpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gKCFkaXJlY3RlZCB8fCBlLnNvdXJjZSgpLnNhbWUodikpICYmIGVkZ2VzLmhhcyhlKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCB2d0VkZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIGUgPSB2d0VkZ2VzW19pMl07XG4gICAgICAgIHZhciB3ID0gZS5jb25uZWN0ZWROb2RlcygpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICAgIHJldHVybiAhbi5zYW1lKHYpICYmIG5vZGVzLmhhcyhuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3SWQgPSB3LmlkKCk7XG5cbiAgICAgICAgaWYgKHcubGVuZ3RoICE9PSAwICYmICFWW3dJZF0pIHtcbiAgICAgICAgICB3ID0gd1swXTtcbiAgICAgICAgICBRLnB1c2godyk7XG5cbiAgICAgICAgICBpZiAocGFyYW1zLmJmcykge1xuICAgICAgICAgICAgVlt3SWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzLnB1c2godyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29ubmVjdGVkQnlbd0lkXSA9IGU7XG4gICAgICAgICAgaWQyZGVwdGhbd0lkXSA9IGlkMmRlcHRoW3ZJZF0gKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9sb29wOiB3aGlsZSAoUS5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AyKCk7XG5cbiAgICAgIHN3aXRjaCAoX3JldCkge1xuICAgICAgICBjYXNlIFwiY29udGludWVcIjpcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIFwiYnJlYWtcIjpcbiAgICAgICAgICBicmVhayBfbG9vcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29ubmVjdGVkRWxlcyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBjb25uZWN0ZWROb2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBub2RlID0gY29ubmVjdGVkTm9kZXNbX2ldO1xuICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRCeVtub2RlLmlkKCldO1xuXG4gICAgICBpZiAoZWRnZSAhPSBudWxsKSB7XG4gICAgICAgIGNvbm5lY3RlZEVsZXMucHVzaChlZGdlKTtcbiAgICAgIH1cblxuICAgICAgY29ubmVjdGVkRWxlcy5wdXNoKG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBjeS5jb2xsZWN0aW9uKGNvbm5lY3RlZEVsZXMpLFxuICAgICAgZm91bmQ6IGN5LmNvbGxlY3Rpb24oZm91bmQpXG4gICAgfTtcbiAgfTtcbn07IC8vIHNlYXJjaCwgc3Bhbm5pbmcgdHJlZXMsIGV0Y1xuXG5cbnZhciBlbGVzZm4gPSB7XG4gIGJyZWFkdGhGaXJzdFNlYXJjaDogZGVmaW5lU2VhcmNoKHtcbiAgICBiZnM6IHRydWVcbiAgfSksXG4gIGRlcHRoRmlyc3RTZWFyY2g6IGRlZmluZVNlYXJjaCh7XG4gICAgZGZzOiB0cnVlXG4gIH0pXG59OyAvLyBuaWNlLCBzaG9ydCBtYXRoZW1hdGhpY2FsIGFsaWFzXG5cbmVsZXNmbi5iZnMgPSBlbGVzZm4uYnJlYWR0aEZpcnN0U2VhcmNoO1xuZWxlc2ZuLmRmcyA9IGVsZXNmbi5kZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgZGlqa3N0cmFEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiQxID0ge1xuICBkaWprc3RyYTogZnVuY3Rpb24gZGlqa3N0cmEob3B0aW9ucykge1xuICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgd2VpZ2h0OiBhcmdzWzFdLFxuICAgICAgICBkaXJlY3RlZDogYXJnc1syXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgX2RpamtzdHJhRGVmYXVsdHMgPSBkaWprc3RyYURlZmF1bHRzKG9wdGlvbnMpLFxuICAgICAgICByb290ID0gX2RpamtzdHJhRGVmYXVsdHMucm9vdCxcbiAgICAgICAgd2VpZ2h0ID0gX2RpamtzdHJhRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9kaWprc3RyYURlZmF1bHRzLmRpcmVjdGVkO1xuXG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICB2YXIgc291cmNlID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0gOiByb290WzBdO1xuICAgIHZhciBkaXN0ID0ge307XG4gICAgdmFyIHByZXYgPSB7fTtcbiAgICB2YXIga25vd25EaXN0ID0ge307XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIGVkZ2VzLnVubWVyZ2VCeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTG9vcCgpO1xuICAgIH0pO1xuXG4gICAgdmFyIGdldERpc3QgPSBmdW5jdGlvbiBnZXREaXN0KG5vZGUpIHtcbiAgICAgIHJldHVybiBkaXN0W25vZGUuaWQoKV07XG4gICAgfTtcblxuICAgIHZhciBzZXREaXN0ID0gZnVuY3Rpb24gc2V0RGlzdChub2RlLCBkKSB7XG4gICAgICBkaXN0W25vZGUuaWQoKV0gPSBkO1xuICAgICAgUS51cGRhdGVJdGVtKG5vZGUpO1xuICAgIH07XG5cbiAgICB2YXIgUSA9IG5ldyBIZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZ2V0RGlzdChhKSAtIGdldERpc3QoYik7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgZGlzdFtub2RlLmlkKCldID0gbm9kZS5zYW1lKHNvdXJjZSkgPyAwIDogSW5maW5pdHk7XG4gICAgICBRLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpc3RCZXR3ZWVuID0gZnVuY3Rpb24gZGlzdEJldHdlZW4odSwgdikge1xuICAgICAgdmFyIHV2cyA9IChkaXJlY3RlZCA/IHUuZWRnZXNUbyh2KSA6IHUuZWRnZXNXaXRoKHYpKS5pbnRlcnNlY3QoZWRnZXMpO1xuICAgICAgdmFyIHNtYWxsZXN0RGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICAgIHZhciBzbWFsbGVzdEVkZ2U7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB1dnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gdXZzW19pXTtcblxuICAgICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpO1xuXG4gICAgICAgIGlmIChfd2VpZ2h0IDwgc21hbGxlc3REaXN0YW5jZSB8fCAhc21hbGxlc3RFZGdlKSB7XG4gICAgICAgICAgc21hbGxlc3REaXN0YW5jZSA9IF93ZWlnaHQ7XG4gICAgICAgICAgc21hbGxlc3RFZGdlID0gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlZGdlOiBzbWFsbGVzdEVkZ2UsXG4gICAgICAgIGRpc3Q6IHNtYWxsZXN0RGlzdGFuY2VcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHdoaWxlIChRLnNpemUoKSA+IDApIHtcbiAgICAgIHZhciB1ID0gUS5wb3AoKTtcbiAgICAgIHZhciBzbWFsbGV0c0Rpc3QgPSBnZXREaXN0KHUpO1xuICAgICAgdmFyIHVpZCA9IHUuaWQoKTtcbiAgICAgIGtub3duRGlzdFt1aWRdID0gc21hbGxldHNEaXN0O1xuXG4gICAgICBpZiAoc21hbGxldHNEaXN0ID09PSBJbmZpbml0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9ycyA9IHUubmVpZ2hib3Job29kKCkuaW50ZXJzZWN0KG5vZGVzKTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbmVpZ2hib3JzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIHYgPSBuZWlnaGJvcnNbX2kyXTtcbiAgICAgICAgdmFyIHZpZCA9IHYuaWQoKTtcbiAgICAgICAgdmFyIHZEaXN0ID0gZGlzdEJldHdlZW4odSwgdik7XG4gICAgICAgIHZhciBhbHQgPSBzbWFsbGV0c0Rpc3QgKyB2RGlzdC5kaXN0O1xuXG4gICAgICAgIGlmIChhbHQgPCBnZXREaXN0KHYpKSB7XG4gICAgICAgICAgc2V0RGlzdCh2LCBhbHQpO1xuICAgICAgICAgIHByZXZbdmlkXSA9IHtcbiAgICAgICAgICAgIG5vZGU6IHUsXG4gICAgICAgICAgICBlZGdlOiB2RGlzdC5lZGdlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3JcblxuICAgIH0gLy8gd2hpbGVcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3RhbmNlVG86IGZ1bmN0aW9uIGRpc3RhbmNlVG8obm9kZSkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgcmV0dXJuIGtub3duRGlzdFt0YXJnZXQuaWQoKV07XG4gICAgICB9LFxuICAgICAgcGF0aFRvOiBmdW5jdGlvbiBwYXRoVG8obm9kZSkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgdmFyIFMgPSBbXTtcbiAgICAgICAgdmFyIHUgPSB0YXJnZXQ7XG4gICAgICAgIHZhciB1aWQgPSB1LmlkKCk7XG5cbiAgICAgICAgaWYgKHRhcmdldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgUy51bnNoaWZ0KHRhcmdldCk7XG5cbiAgICAgICAgICB3aGlsZSAocHJldlt1aWRdKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHByZXZbdWlkXTtcbiAgICAgICAgICAgIFMudW5zaGlmdChwLmVkZ2UpO1xuICAgICAgICAgICAgUy51bnNoaWZ0KHAubm9kZSk7XG4gICAgICAgICAgICB1ID0gcC5ub2RlO1xuICAgICAgICAgICAgdWlkID0gdS5pZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbGVzLnNwYXduKFMpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBlbGVzZm4kMiA9IHtcbiAgLy8ga3J1c2thbCdzIGFsZ29yaXRobSAoZmluZHMgbWluIHNwYW5uaW5nIHRyZWUsIGFzc3VtaW5nIHVuZGlyZWN0ZWQgZ3JhcGgpXG4gIC8vIGltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBrcnVza2FsOiBmdW5jdGlvbiBrcnVza2FsKHdlaWdodEZuKSB7XG4gICAgd2VpZ2h0Rm4gPSB3ZWlnaHRGbiB8fCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfTtcblxuICAgIHZhciBfdGhpcyRieUdyb3VwID0gdGhpcy5ieUdyb3VwKCksXG4gICAgICAgIG5vZGVzID0gX3RoaXMkYnlHcm91cC5ub2RlcyxcbiAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzO1xuXG4gICAgdmFyIG51bU5vZGVzID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBmb3Jlc3QgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBBID0gbm9kZXM7IC8vIGFzc3VtZXMgYnlHcm91cCgpIGNyZWF0ZXMgbmV3IGNvbGxlY3Rpb25zIHRoYXQgY2FuIGJlIHNhZmVseSBtdXRhdGVkXG5cbiAgICB2YXIgZmluZFNldEluZGV4ID0gZnVuY3Rpb24gZmluZFNldEluZGV4KGVsZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3Jlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZXMgPSBmb3Jlc3RbaV07XG5cbiAgICAgICAgaWYgKGVsZXMuaGFzKGVsZSkpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07IC8vIHN0YXJ0IHdpdGggb25lIGZvcmVzdCBwZXIgbm9kZVxuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgIGZvcmVzdFtpXSA9IHRoaXMuc3Bhd24obm9kZXNbaV0pO1xuICAgIH1cblxuICAgIHZhciBTID0gZWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIHdlaWdodEZuKGEpIC0gd2VpZ2h0Rm4oYik7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgUy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gU1tfaV07XG4gICAgICB2YXIgdSA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICB2YXIgdiA9IGVkZ2UudGFyZ2V0KClbMF07XG4gICAgICB2YXIgc2V0VUluZGV4ID0gZmluZFNldEluZGV4KHUpO1xuICAgICAgdmFyIHNldFZJbmRleCA9IGZpbmRTZXRJbmRleCh2KTtcbiAgICAgIHZhciBzZXRVID0gZm9yZXN0W3NldFVJbmRleF07XG4gICAgICB2YXIgc2V0ViA9IGZvcmVzdFtzZXRWSW5kZXhdO1xuXG4gICAgICBpZiAoc2V0VUluZGV4ICE9PSBzZXRWSW5kZXgpIHtcbiAgICAgICAgQS5tZXJnZShlZGdlKTsgLy8gY29tYmluZSBmb3Jlc3RzIGZvciB1IGFuZCB2XG5cbiAgICAgICAgc2V0VS5tZXJnZShzZXRWKTtcbiAgICAgICAgZm9yZXN0LnNwbGljZShzZXRWSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBBO1xuICB9XG59O1xuXG52YXIgYVN0YXJEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgZ29hbDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBoZXVyaXN0aWM6IGZ1bmN0aW9uIGhldXJpc3RpYyhlZGdlKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIGRpcmVjdGVkOiBmYWxzZVxufSk7XG52YXIgZWxlc2ZuJDMgPSB7XG4gIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBhU3RhcjogZnVuY3Rpb24gYVN0YXIob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIHZhciBfYVN0YXJEZWZhdWx0cyA9IGFTdGFyRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfYVN0YXJEZWZhdWx0cy5yb290LFxuICAgICAgICBnb2FsID0gX2FTdGFyRGVmYXVsdHMuZ29hbCxcbiAgICAgICAgaGV1cmlzdGljID0gX2FTdGFyRGVmYXVsdHMuaGV1cmlzdGljLFxuICAgICAgICBkaXJlY3RlZCA9IF9hU3RhckRlZmF1bHRzLmRpcmVjdGVkLFxuICAgICAgICB3ZWlnaHQgPSBfYVN0YXJEZWZhdWx0cy53ZWlnaHQ7XG5cbiAgICByb290ID0gY3kuY29sbGVjdGlvbihyb290KVswXTtcbiAgICBnb2FsID0gY3kuY29sbGVjdGlvbihnb2FsKVswXTtcbiAgICB2YXIgc2lkID0gcm9vdC5pZCgpO1xuICAgIHZhciB0aWQgPSBnb2FsLmlkKCk7XG4gICAgdmFyIGdTY29yZSA9IHt9O1xuICAgIHZhciBmU2NvcmUgPSB7fTtcbiAgICB2YXIgY2xvc2VkU2V0SWRzID0ge307XG4gICAgdmFyIG9wZW5TZXQgPSBuZXcgSGVhcChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZTY29yZVthLmlkKCldIC0gZlNjb3JlW2IuaWQoKV07XG4gICAgfSk7XG4gICAgdmFyIG9wZW5TZXRJZHMgPSBuZXcgU2V0JDEoKTtcbiAgICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgICB2YXIgY2FtZUZyb21FZGdlID0ge307XG5cbiAgICB2YXIgYWRkVG9PcGVuU2V0ID0gZnVuY3Rpb24gYWRkVG9PcGVuU2V0KGVsZSwgaWQpIHtcbiAgICAgIG9wZW5TZXQucHVzaChlbGUpO1xuICAgICAgb3BlblNldElkcy5hZGQoaWQpO1xuICAgIH07XG5cbiAgICB2YXIgY01pbiwgY01pbklkO1xuXG4gICAgdmFyIHBvcEZyb21PcGVuU2V0ID0gZnVuY3Rpb24gcG9wRnJvbU9wZW5TZXQoKSB7XG4gICAgICBjTWluID0gb3BlblNldC5wb3AoKTtcbiAgICAgIGNNaW5JZCA9IGNNaW4uaWQoKTtcbiAgICAgIG9wZW5TZXRJZHNbXCJkZWxldGVcIl0oY01pbklkKTtcbiAgICB9O1xuXG4gICAgdmFyIGlzSW5PcGVuU2V0ID0gZnVuY3Rpb24gaXNJbk9wZW5TZXQoaWQpIHtcbiAgICAgIHJldHVybiBvcGVuU2V0SWRzLmhhcyhpZCk7XG4gICAgfTtcblxuICAgIGFkZFRvT3BlblNldChyb290LCBzaWQpO1xuICAgIGdTY29yZVtzaWRdID0gMDtcbiAgICBmU2NvcmVbc2lkXSA9IGhldXJpc3RpYyhyb290KTsgLy8gQ291bnRlclxuXG4gICAgdmFyIHN0ZXBzID0gMDsgLy8gTWFpbiBsb29wXG5cbiAgICB3aGlsZSAob3BlblNldC5zaXplKCkgPiAwKSB7XG4gICAgICBwb3BGcm9tT3BlblNldCgpO1xuICAgICAgc3RlcHMrKzsgLy8gSWYgd2UndmUgZm91bmQgb3VyIGdvYWwsIHRoZW4gd2UgYXJlIGRvbmVcblxuICAgICAgaWYgKGNNaW5JZCA9PT0gdGlkKSB7XG4gICAgICAgIHZhciBwYXRoID0gW107XG4gICAgICAgIHZhciBwYXRoTm9kZSA9IGdvYWw7XG4gICAgICAgIHZhciBwYXRoTm9kZUlkID0gdGlkO1xuICAgICAgICB2YXIgcGF0aEVkZ2UgPSBjYW1lRnJvbUVkZ2VbcGF0aE5vZGVJZF07XG5cbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHBhdGgudW5zaGlmdChwYXRoTm9kZSk7XG5cbiAgICAgICAgICBpZiAocGF0aEVkZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KHBhdGhFZGdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRoTm9kZSA9IGNhbWVGcm9tW3BhdGhOb2RlSWRdO1xuXG4gICAgICAgICAgaWYgKHBhdGhOb2RlID09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGhOb2RlSWQgPSBwYXRoTm9kZS5pZCgpO1xuICAgICAgICAgIHBhdGhFZGdlID0gY2FtZUZyb21FZGdlW3BhdGhOb2RlSWRdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3VuZDogdHJ1ZSxcbiAgICAgICAgICBkaXN0YW5jZTogZ1Njb3JlW2NNaW5JZF0sXG4gICAgICAgICAgcGF0aDogdGhpcy5zcGF3bihwYXRoKSxcbiAgICAgICAgICBzdGVwczogc3RlcHNcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gQWRkIGNNaW4gdG8gcHJvY2Vzc2VkIG5vZGVzXG5cblxuICAgICAgY2xvc2VkU2V0SWRzW2NNaW5JZF0gPSB0cnVlOyAvLyBVcGRhdGUgc2NvcmVzIGZvciBuZWlnaGJvcnMgb2YgY01pblxuICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgaWYgZ3JhcGggaXMgZGlyZWN0ZWQgb3Igbm90XG5cbiAgICAgIHZhciB2d0VkZ2VzID0gY01pbi5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2d0VkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlID0gdndFZGdlc1tpXTsgLy8gZWRnZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZChlLmlkKCkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gY01pbiBtdXN0IGJlIHRoZSBzb3VyY2Ugb2YgZWRnZSBpZiBkaXJlY3RlZFxuXG5cbiAgICAgICAgaWYgKGRpcmVjdGVkICYmIGUuZGF0YSgnc291cmNlJykgIT09IGNNaW5JZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdTcmMgPSBlLnNvdXJjZSgpO1xuICAgICAgICB2YXIgd1RndCA9IGUudGFyZ2V0KCk7XG4gICAgICAgIHZhciB3ID0gd1NyYy5pZCgpICE9PSBjTWluSWQgPyB3U3JjIDogd1RndDtcbiAgICAgICAgdmFyIHdpZCA9IHcuaWQoKTsgLy8gbm9kZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZCh3aWQpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gaWYgbm9kZSBpcyBpbiBjbG9zZWRTZXQsIGlnbm9yZSBpdFxuXG5cbiAgICAgICAgaWYgKGNsb3NlZFNldElkc1t3aWRdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gTmV3IHRlbnRhdGl2ZSBzY29yZSBmb3Igbm9kZSB3XG5cblxuICAgICAgICB2YXIgdGVtcFNjb3JlID0gZ1Njb3JlW2NNaW5JZF0gKyB3ZWlnaHQoZSk7IC8vIFVwZGF0ZSBnU2NvcmUgZm9yIG5vZGUgdyBpZjpcbiAgICAgICAgLy8gICB3IG5vdCBwcmVzZW50IGluIG9wZW5TZXRcbiAgICAgICAgLy8gT1JcbiAgICAgICAgLy8gICB0ZW50YXRpdmUgZ1Njb3JlIGlzIGxlc3MgdGhhbiBwcmV2aW91cyB2YWx1ZVxuICAgICAgICAvLyB3IG5vdCBpbiBvcGVuU2V0XG5cbiAgICAgICAgaWYgKCFpc0luT3BlblNldCh3aWQpKSB7XG4gICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgZlNjb3JlW3dpZF0gPSB0ZW1wU2NvcmUgKyBoZXVyaXN0aWModyk7XG4gICAgICAgICAgYWRkVG9PcGVuU2V0KHcsIHdpZCk7XG4gICAgICAgICAgY2FtZUZyb21bd2lkXSA9IGNNaW47XG4gICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IC8vIHcgYWxyZWFkeSBpbiBvcGVuU2V0LCBidXQgd2l0aCBncmVhdGVyIGdTY29yZVxuXG5cbiAgICAgICAgaWYgKHRlbXBTY29yZSA8IGdTY29yZVt3aWRdKSB7XG4gICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgZlNjb3JlW3dpZF0gPSB0ZW1wU2NvcmUgKyBoZXVyaXN0aWModyk7XG4gICAgICAgICAgY2FtZUZyb21bd2lkXSA9IGNNaW47XG4gICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICB9XG4gICAgICB9IC8vIEVuZCBvZiBuZWlnaGJvcnMgdXBkYXRlXG5cbiAgICB9IC8vIEVuZCBvZiBtYWluIGxvb3BcbiAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIGhlcmUsIHRoZW4gd2UndmUgbm90IHJlYWNoZWQgb3VyIGdvYWxcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgIGRpc3RhbmNlOiB1bmRlZmluZWQsXG4gICAgICBwYXRoOiB1bmRlZmluZWQsXG4gICAgICBzdGVwczogc3RlcHNcbiAgICB9O1xuICB9XG59OyAvLyBlbGVzZm5cblxudmFyIGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiQ0ID0ge1xuICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgZmxveWRXYXJzaGFsbDogZnVuY3Rpb24gZmxveWRXYXJzaGFsbChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIF9mbG95ZFdhcnNoYWxsRGVmYXVsdCA9IGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgd2VpZ2h0ID0gX2Zsb3lkV2Fyc2hhbGxEZWZhdWx0LndlaWdodCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZmxveWRXYXJzaGFsbERlZmF1bHQuZGlyZWN0ZWQ7XG5cbiAgICB2YXIgd2VpZ2h0Rm4gPSB3ZWlnaHQ7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIHZhciBOID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBOc3EgPSBOICogTjtcblxuICAgIHZhciBpbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICB9O1xuXG4gICAgdmFyIGF0SW5kZXggPSBmdW5jdGlvbiBhdEluZGV4KGkpIHtcbiAgICAgIHJldHVybiBub2Rlc1tpXTtcbiAgICB9OyAvLyBJbml0aWFsaXplIGRpc3RhbmNlIG1hdHJpeFxuXG5cbiAgICB2YXIgZGlzdCA9IG5ldyBBcnJheShOc3EpO1xuXG4gICAgZm9yICh2YXIgbiA9IDA7IG4gPCBOc3E7IG4rKykge1xuICAgICAgdmFyIGogPSBuICUgTjtcbiAgICAgIHZhciBpID0gKG4gLSBqKSAvIE47XG5cbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3Rbbl0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtuXSA9IEluZmluaXR5O1xuICAgICAgfVxuICAgIH0gLy8gSW5pdGlhbGl6ZSBtYXRyaXggdXNlZCBmb3IgcGF0aCByZWNvbnN0cnVjdGlvblxuICAgIC8vIEluaXRpYWxpemUgZGlzdGFuY2UgbWF0cml4XG5cblxuICAgIHZhciBuZXh0ID0gbmV3IEFycmF5KE5zcSk7XG4gICAgdmFyIGVkZ2VOZXh0ID0gbmV3IEFycmF5KE5zcSk7IC8vIFByb2Nlc3MgZWRnZXNcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBlZGdlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbX2ldO1xuICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICB2YXIgdGd0ID0gZWRnZS50YXJnZXQoKVswXTtcblxuICAgICAgaWYgKHNyYyA9PT0gdGd0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBleGNsdWRlIGxvb3BzXG5cblxuICAgICAgdmFyIHMgPSBpbmRleE9mKHNyYyk7XG4gICAgICB2YXIgdCA9IGluZGV4T2YodGd0KTtcbiAgICAgIHZhciBzdCA9IHMgKiBOICsgdDsgLy8gc291cmNlIHRvIHRhcmdldCBpbmRleFxuXG4gICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpOyAvLyBDaGVjayBpZiBhbHJlYWR5IHByb2Nlc3MgYW5vdGhlciBlZGdlIGJldHdlZW4gc2FtZSAyIG5vZGVzXG5cblxuICAgICAgaWYgKGRpc3Rbc3RdID4gX3dlaWdodCkge1xuICAgICAgICBkaXN0W3N0XSA9IF93ZWlnaHQ7XG4gICAgICAgIG5leHRbc3RdID0gdDtcbiAgICAgICAgZWRnZU5leHRbc3RdID0gZWRnZTtcbiAgICAgIH0gLy8gSWYgdW5kaXJlY3RlZCBncmFwaCwgcHJvY2VzcyAncmV2ZXJzZWQnIGVkZ2VcblxuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIHZhciB0cyA9IHQgKiBOICsgczsgLy8gdGFyZ2V0IHRvIHNvdXJjZSBpbmRleFxuXG4gICAgICAgIGlmICghZGlyZWN0ZWQgJiYgZGlzdFt0c10gPiBfd2VpZ2h0KSB7XG4gICAgICAgICAgZGlzdFt0c10gPSBfd2VpZ2h0O1xuICAgICAgICAgIG5leHRbdHNdID0gcztcbiAgICAgICAgICBlZGdlTmV4dFt0c10gPSBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBNYWluIGxvb3BcblxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBOOyBrKyspIHtcbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IE47IF9pMisrKSB7XG4gICAgICAgIHZhciBpayA9IF9pMiAqIE4gKyBrO1xuXG4gICAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBOOyBfaisrKSB7XG4gICAgICAgICAgdmFyIGlqID0gX2kyICogTiArIF9qO1xuICAgICAgICAgIHZhciBraiA9IGsgKiBOICsgX2o7XG5cbiAgICAgICAgICBpZiAoZGlzdFtpa10gKyBkaXN0W2tqXSA8IGRpc3RbaWpdKSB7XG4gICAgICAgICAgICBkaXN0W2lqXSA9IGRpc3RbaWtdICsgZGlzdFtral07XG4gICAgICAgICAgICBuZXh0W2lqXSA9IG5leHRbaWtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBnZXRBcmdFbGUgPSBmdW5jdGlvbiBnZXRBcmdFbGUoZWxlKSB7XG4gICAgICByZXR1cm4gKHN0cmluZyhlbGUpID8gY3kuZmlsdGVyKGVsZSkgOiBlbGUpWzBdO1xuICAgIH07XG5cbiAgICB2YXIgaW5kZXhPZkFyZ0VsZSA9IGZ1bmN0aW9uIGluZGV4T2ZBcmdFbGUoZWxlKSB7XG4gICAgICByZXR1cm4gaW5kZXhPZihnZXRBcmdFbGUoZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciByZXMgPSB7XG4gICAgICBkaXN0YW5jZTogZnVuY3Rpb24gZGlzdGFuY2UoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGkgPSBpbmRleE9mQXJnRWxlKGZyb20pO1xuICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICByZXR1cm4gZGlzdFtpICogTiArIGpdO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IGZ1bmN0aW9uIHBhdGgoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGkgPSBpbmRleE9mQXJnRWxlKGZyb20pO1xuICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICB2YXIgZnJvbU5vZGUgPSBhdEluZGV4KGkpO1xuXG4gICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21Ob2RlLmNvbGxlY3Rpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0W2kgKiBOICsgal0gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGF0aCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgdmFyIHByZXYgPSBpO1xuICAgICAgICB2YXIgZWRnZTtcbiAgICAgICAgcGF0aC5tZXJnZShmcm9tTm9kZSk7XG5cbiAgICAgICAgd2hpbGUgKGkgIT09IGopIHtcbiAgICAgICAgICBwcmV2ID0gaTtcbiAgICAgICAgICBpID0gbmV4dFtpICogTiArIGpdO1xuICAgICAgICAgIGVkZ2UgPSBlZGdlTmV4dFtwcmV2ICogTiArIGldO1xuICAgICAgICAgIHBhdGgubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgcGF0aC5tZXJnZShhdEluZGV4KGkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBmbG95ZFdhcnNoYWxsXG5cbn07IC8vIGVsZXNmblxuXG52YXIgYmVsbG1hbkZvcmREZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2UsXG4gIHJvb3Q6IG51bGxcbn0pO1xudmFyIGVsZXNmbiQ1ID0ge1xuICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgYmVsbG1hbkZvcmQ6IGZ1bmN0aW9uIGJlbGxtYW5Gb3JkKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9iZWxsbWFuRm9yZERlZmF1bHRzID0gYmVsbG1hbkZvcmREZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgd2VpZ2h0ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9iZWxsbWFuRm9yZERlZmF1bHRzLmRpcmVjdGVkLFxuICAgICAgICByb290ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMucm9vdDtcblxuICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXM7XG5cbiAgICB2YXIgbnVtTm9kZXMgPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGluZm9NYXAgPSBuZXcgTWFwJDEoKTtcbiAgICB2YXIgaGFzTmVnYXRpdmVXZWlnaHRDeWNsZSA9IGZhbHNlO1xuICAgIHZhciBuZWdhdGl2ZVdlaWdodEN5Y2xlcyA9IFtdO1xuICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdOyAvLyBpbiBjYXNlIHNlbGVjdG9yIHBhc3NlZFxuXG4gICAgZWRnZXMudW5tZXJnZUJ5KGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5pc0xvb3AoKTtcbiAgICB9KTtcbiAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG5cbiAgICB2YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8obm9kZSkge1xuICAgICAgdmFyIG9iaiA9IGluZm9NYXAuZ2V0KG5vZGUuaWQoKSk7XG5cbiAgICAgIGlmICghb2JqKSB7XG4gICAgICAgIG9iaiA9IHt9O1xuICAgICAgICBpbmZvTWFwLnNldChub2RlLmlkKCksIG9iaik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfTtcblxuICAgIHZhciBnZXROb2RlRnJvbVRvID0gZnVuY3Rpb24gZ2V0Tm9kZUZyb21Ubyh0bykge1xuICAgICAgcmV0dXJuIChzdHJpbmcodG8pID8gY3kuJCh0bykgOiB0bylbMF07XG4gICAgfTtcblxuICAgIHZhciBkaXN0YW5jZVRvID0gZnVuY3Rpb24gZGlzdGFuY2VUbyh0bykge1xuICAgICAgcmV0dXJuIGdldEluZm8oZ2V0Tm9kZUZyb21Ubyh0bykpLmRpc3Q7XG4gICAgfTtcblxuICAgIHZhciBwYXRoVG8gPSBmdW5jdGlvbiBwYXRoVG8odG8pIHtcbiAgICAgIHZhciB0aGlzU3RhcnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHJvb3Q7XG4gICAgICB2YXIgZW5kID0gZ2V0Tm9kZUZyb21Ubyh0byk7XG4gICAgICB2YXIgcGF0aCA9IFtdO1xuICAgICAgdmFyIG5vZGUgPSBlbmQ7XG5cbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5zcGF3bigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9nZXRJbmZvID0gZ2V0SW5mbyhub2RlKSxcbiAgICAgICAgICAgIGVkZ2UgPSBfZ2V0SW5mby5lZGdlLFxuICAgICAgICAgICAgcHJlZCA9IF9nZXRJbmZvLnByZWQ7XG5cbiAgICAgICAgcGF0aC51bnNoaWZ0KG5vZGVbMF0pO1xuXG4gICAgICAgIGlmIChub2RlLnNhbWUodGhpc1N0YXJ0KSAmJiBwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlZGdlICE9IG51bGwpIHtcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoZWRnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlID0gcHJlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZXMuc3Bhd24ocGF0aCk7XG4gICAgfTsgLy8gSW5pdGlhbGl6YXRpb25zIHsgZGlzdCwgcHJlZCwgZWRnZSB9XG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBpbmZvID0gZ2V0SW5mbyhub2RlKTtcblxuICAgICAgaWYgKG5vZGUuc2FtZShyb290KSkge1xuICAgICAgICBpbmZvLmRpc3QgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5mby5kaXN0ID0gSW5maW5pdHk7XG4gICAgICB9XG5cbiAgICAgIGluZm8ucHJlZCA9IG51bGw7XG4gICAgICBpbmZvLmVkZ2UgPSBudWxsO1xuICAgIH0gLy8gRWRnZXMgcmVsYXhhdGlvblxuXG5cbiAgICB2YXIgcmVwbGFjZWRFZGdlID0gZmFsc2U7XG5cbiAgICB2YXIgY2hlY2tGb3JFZGdlUmVwbGFjZW1lbnQgPSBmdW5jdGlvbiBjaGVja0ZvckVkZ2VSZXBsYWNlbWVudChub2RlMSwgbm9kZTIsIGVkZ2UsIGluZm8xLCBpbmZvMiwgd2VpZ2h0KSB7XG4gICAgICB2YXIgZGlzdCA9IGluZm8xLmRpc3QgKyB3ZWlnaHQ7XG5cbiAgICAgIGlmIChkaXN0IDwgaW5mbzIuZGlzdCAmJiAhZWRnZS5zYW1lKGluZm8xLmVkZ2UpKSB7XG4gICAgICAgIGluZm8yLmRpc3QgPSBkaXN0O1xuICAgICAgICBpbmZvMi5wcmVkID0gbm9kZTE7XG4gICAgICAgIGluZm8yLmVkZ2UgPSBlZGdlO1xuICAgICAgICByZXBsYWNlZEVkZ2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgbnVtTm9kZXM7IF9pKyspIHtcbiAgICAgIHJlcGxhY2VkRWRnZSA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBlID0gMDsgZSA8IG51bUVkZ2VzOyBlKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tlXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuXG4gICAgICAgIHZhciBfd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG5cbiAgICAgICAgdmFyIHNyY0luZm8gPSBnZXRJbmZvKHNyYyk7XG4gICAgICAgIHZhciB0Z3RJbmZvID0gZ2V0SW5mbyh0Z3QpO1xuICAgICAgICBjaGVja0ZvckVkZ2VSZXBsYWNlbWVudChzcmMsIHRndCwgZWRnZSwgc3JjSW5mbywgdGd0SW5mbywgX3dlaWdodCk7IC8vIElmIHVuZGlyZWN0ZWQgZ3JhcGgsIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlICdyZXZlcnNlJyBlZGdlXG5cbiAgICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICAgIGNoZWNrRm9yRWRnZVJlcGxhY2VtZW50KHRndCwgc3JjLCBlZGdlLCB0Z3RJbmZvLCBzcmNJbmZvLCBfd2VpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJlcGxhY2VkRWRnZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVwbGFjZWRFZGdlKSB7XG4gICAgICAvLyBDaGVjayBmb3IgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlc1xuICAgICAgZm9yICh2YXIgX2UgPSAwOyBfZSA8IG51bUVkZ2VzOyBfZSsrKSB7XG4gICAgICAgIHZhciBfZWRnZSA9IGVkZ2VzW19lXTtcblxuICAgICAgICB2YXIgX3NyYyA9IF9lZGdlLnNvdXJjZSgpO1xuXG4gICAgICAgIHZhciBfdGd0ID0gX2VkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgdmFyIF93ZWlnaHQyID0gd2VpZ2h0Rm4oX2VkZ2UpO1xuXG4gICAgICAgIHZhciBzcmNEaXN0ID0gZ2V0SW5mbyhfc3JjKS5kaXN0O1xuICAgICAgICB2YXIgdGd0RGlzdCA9IGdldEluZm8oX3RndCkuZGlzdDtcblxuICAgICAgICBpZiAoc3JjRGlzdCArIF93ZWlnaHQyIDwgdGd0RGlzdCB8fCAhZGlyZWN0ZWQgJiYgdGd0RGlzdCArIF93ZWlnaHQyIDwgc3JjRGlzdCkge1xuICAgICAgICAgIHdhcm4oJ0dyYXBoIGNvbnRhaW5zIGEgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlIGZvciBCZWxsbWFuLUZvcmQnKTtcbiAgICAgICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXN0YW5jZVRvOiBkaXN0YW5jZVRvLFxuICAgICAgcGF0aFRvOiBwYXRoVG8sXG4gICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlOiBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlLFxuICAgICAgbmVnYXRpdmVXZWlnaHRDeWNsZXM6IG5lZ2F0aXZlV2VpZ2h0Q3ljbGVzXG4gICAgfTtcbiAgfSAvLyBiZWxsbWFuRm9yZFxuXG59OyAvLyBlbGVzZm5cblxudmFyIHNxcnQyID0gTWF0aC5zcXJ0KDIpOyAvLyBGdW5jdGlvbiB3aGljaCBjb2xhcHNlcyAyIChtZXRhKSBub2RlcyBpbnRvIG9uZVxuLy8gVXBkYXRlcyB0aGUgcmVtYWluaW5nIGVkZ2UgbGlzdHNcbi8vIFJlY2VpdmVzIGFzIGEgcGFyYW1hdGVyIHRoZSBlZGdlIHdoaWNoIGNhdXNlcyB0aGUgY29sbGFwc2VcblxudmFyIGNvbGxhcHNlID0gZnVuY3Rpb24gY29sbGFwc2UoZWRnZUluZGV4LCBub2RlTWFwLCByZW1haW5pbmdFZGdlcykge1xuICBpZiAocmVtYWluaW5nRWRnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgZXJyb3IoXCJLYXJnZXItU3RlaW4gbXVzdCBiZSBydW4gb24gYSBjb25uZWN0ZWQgKHN1YilncmFwaFwiKTtcbiAgfVxuXG4gIHZhciBlZGdlSW5mbyA9IHJlbWFpbmluZ0VkZ2VzW2VkZ2VJbmRleF07XG4gIHZhciBzb3VyY2VJbiA9IGVkZ2VJbmZvWzFdO1xuICB2YXIgdGFyZ2V0SW4gPSBlZGdlSW5mb1syXTtcbiAgdmFyIHBhcnRpdGlvbjEgPSBub2RlTWFwW3NvdXJjZUluXTtcbiAgdmFyIHBhcnRpdGlvbjIgPSBub2RlTWFwW3RhcmdldEluXTtcbiAgdmFyIG5ld0VkZ2VzID0gcmVtYWluaW5nRWRnZXM7IC8vIHJlLXVzZSBhcnJheVxuICAvLyBEZWxldGUgYWxsIGVkZ2VzIGJldHdlZW4gcGFydGl0aW9uMSBhbmQgcGFydGl0aW9uMlxuXG4gIGZvciAodmFyIGkgPSBuZXdFZGdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBlZGdlID0gbmV3RWRnZXNbaV07XG4gICAgdmFyIHNyYyA9IGVkZ2VbMV07XG4gICAgdmFyIHRndCA9IGVkZ2VbMl07XG5cbiAgICBpZiAobm9kZU1hcFtzcmNdID09PSBwYXJ0aXRpb24xICYmIG5vZGVNYXBbdGd0XSA9PT0gcGFydGl0aW9uMiB8fCBub2RlTWFwW3NyY10gPT09IHBhcnRpdGlvbjIgJiYgbm9kZU1hcFt0Z3RdID09PSBwYXJ0aXRpb24xKSB7XG4gICAgICBuZXdFZGdlcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9IC8vIEFsbCBlZGdlcyBwb2ludGluZyB0byBwYXJ0aXRpb24yIHNob3VsZCBub3cgcG9pbnQgdG8gcGFydGl0aW9uMVxuXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5ld0VkZ2VzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfZWRnZSA9IG5ld0VkZ2VzW19pXTtcblxuICAgIGlmIChfZWRnZVsxXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgLy8gQ2hlY2sgc291cmNlXG4gICAgICBuZXdFZGdlc1tfaV0gPSBfZWRnZS5zbGljZSgpOyAvLyBjb3B5XG5cbiAgICAgIG5ld0VkZ2VzW19pXVsxXSA9IHBhcnRpdGlvbjE7XG4gICAgfSBlbHNlIGlmIChfZWRnZVsyXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgLy8gQ2hlY2sgdGFyZ2V0XG4gICAgICBuZXdFZGdlc1tfaV0gPSBfZWRnZS5zbGljZSgpOyAvLyBjb3B5XG5cbiAgICAgIG5ld0VkZ2VzW19pXVsyXSA9IHBhcnRpdGlvbjE7XG4gICAgfVxuICB9IC8vIE1vdmUgYWxsIG5vZGVzIGZyb20gcGFydGl0aW9uMiB0byBwYXJ0aXRpb24xXG5cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2RlTWFwLmxlbmd0aDsgX2kyKyspIHtcbiAgICBpZiAobm9kZU1hcFtfaTJdID09PSBwYXJ0aXRpb24yKSB7XG4gICAgICBub2RlTWFwW19pMl0gPSBwYXJ0aXRpb24xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdFZGdlcztcbn07IC8vIENvbnRyYWN0cyBhIGdyYXBoIHVudGlsIHdlIHJlYWNoIGEgY2VydGFpbiBudW1iZXIgb2YgbWV0YSBub2Rlc1xuXG5cbnZhciBjb250cmFjdFVudGlsID0gZnVuY3Rpb24gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgcmVtYWluaW5nRWRnZXMsIHNpemUsIHNpemVMaW1pdCkge1xuICB3aGlsZSAoc2l6ZSA+IHNpemVMaW1pdCkge1xuICAgIC8vIENob29zZSBhbiBlZGdlIHJhbmRvbWx5XG4gICAgdmFyIGVkZ2VJbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJlbWFpbmluZ0VkZ2VzLmxlbmd0aCk7IC8vIENvbGxhcHNlIGdyYXBoIGJhc2VkIG9uIGVkZ2VcblxuICAgIHJlbWFpbmluZ0VkZ2VzID0gY29sbGFwc2UoZWRnZUluZGV4LCBtZXRhTm9kZU1hcCwgcmVtYWluaW5nRWRnZXMpO1xuICAgIHNpemUtLTtcbiAgfVxuXG4gIHJldHVybiByZW1haW5pbmdFZGdlcztcbn07XG5cbnZhciBlbGVzZm4kNiA9IHtcbiAgLy8gQ29tcHV0ZXMgdGhlIG1pbmltdW0gY3V0IG9mIGFuIHVuZGlyZWN0ZWQgZ3JhcGhcbiAgLy8gUmV0dXJucyB0aGUgY29ycmVjdCBhbnN3ZXIgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gIGthcmdlclN0ZWluOiBmdW5jdGlvbiBrYXJnZXJTdGVpbigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgbm9kZXMgPSBfdGhpcyRieUdyb3VwLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IF90aGlzJGJ5R3JvdXAuZWRnZXM7XG5cbiAgICBlZGdlcy51bm1lcmdlQnkoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmlzTG9vcCgpO1xuICAgIH0pO1xuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIG51bUl0ZXIgPSBNYXRoLmNlaWwoTWF0aC5wb3coTWF0aC5sb2cobnVtTm9kZXMpIC8gTWF0aC5MTjIsIDIpKTtcbiAgICB2YXIgc3RvcFNpemUgPSBNYXRoLmZsb29yKG51bU5vZGVzIC8gc3FydDIpO1xuXG4gICAgaWYgKG51bU5vZGVzIDwgMikge1xuICAgICAgZXJyb3IoJ0F0IGxlYXN0IDIgbm9kZXMgYXJlIHJlcXVpcmVkIGZvciBLYXJnZXItU3RlaW4gYWxnb3JpdGhtJyk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gTm93IHN0b3JlIGVkZ2UgZGVzdGluYXRpb24gYXMgaW5kZXhlc1xuICAgIC8vIEZvcm1hdCBmb3IgZWFjaCBlZGdlIChlZGdlIGluZGV4LCBzb3VyY2Ugbm9kZSBpbmRleCwgdGFyZ2V0IG5vZGUgaW5kZXgpXG5cblxuICAgIHZhciBlZGdlSW5kZXhlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FZGdlczsgaSsrKSB7XG4gICAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgICAgZWRnZUluZGV4ZXMucHVzaChbaSwgbm9kZXMuaW5kZXhPZihlLnNvdXJjZSgpKSwgbm9kZXMuaW5kZXhPZihlLnRhcmdldCgpKV0pO1xuICAgIH0gLy8gV2Ugd2lsbCBzdG9yZSB0aGUgYmVzdCBjdXQgZm91bmQgaGVyZVxuXG5cbiAgICB2YXIgbWluQ3V0U2l6ZSA9IEluZmluaXR5O1xuICAgIHZhciBtaW5DdXRFZGdlSW5kZXhlcyA9IFtdO1xuICAgIHZhciBtaW5DdXROb2RlTWFwID0gbmV3IEFycmF5KG51bU5vZGVzKTsgLy8gSW5pdGlhbCBtZXRhIG5vZGUgcGFydGl0aW9uXG5cbiAgICB2YXIgbWV0YU5vZGVNYXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBtZXRhTm9kZU1hcDIgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuXG4gICAgdmFyIGNvcHlOb2Rlc01hcCA9IGZ1bmN0aW9uIGNvcHlOb2Rlc01hcChmcm9tLCB0bykge1xuICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgbnVtTm9kZXM7IF9pMysrKSB7XG4gICAgICAgIHRvW19pM10gPSBmcm9tW19pM107XG4gICAgICB9XG4gICAgfTsgLy8gTWFpbiBsb29wXG5cblxuICAgIGZvciAodmFyIGl0ZXIgPSAwOyBpdGVyIDw9IG51bUl0ZXI7IGl0ZXIrKykge1xuICAgICAgLy8gUmVzZXQgbWV0YSBub2RlIHBhcnRpdGlvblxuICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbnVtTm9kZXM7IF9pNCsrKSB7XG4gICAgICAgIG1ldGFOb2RlTWFwW19pNF0gPSBfaTQ7XG4gICAgICB9IC8vIENvbnRyYWN0IHVudGlsIHN0b3AgcG9pbnQgKHN0b3BTaXplIG5vZGVzKVxuXG5cbiAgICAgIHZhciBlZGdlc1N0YXRlID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZUluZGV4ZXMuc2xpY2UoKSwgbnVtTm9kZXMsIHN0b3BTaXplKTtcbiAgICAgIHZhciBlZGdlc1N0YXRlMiA9IGVkZ2VzU3RhdGUuc2xpY2UoKTsgLy8gY29weVxuICAgICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgY29sYXBzZWQgbm9kZXMgc3RhdGVcblxuICAgICAgY29weU5vZGVzTWFwKG1ldGFOb2RlTWFwLCBtZXRhTm9kZU1hcDIpOyAvLyBSdW4gMiBpdGVyYXRpb25zIHN0YXJ0aW5nIGluIHRoZSBzdG9wIHN0YXRlXG5cbiAgICAgIHZhciByZXMxID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZXNTdGF0ZSwgc3RvcFNpemUsIDIpO1xuICAgICAgdmFyIHJlczIgPSBjb250cmFjdFVudGlsKG1ldGFOb2RlTWFwMiwgZWRnZXNTdGF0ZTIsIHN0b3BTaXplLCAyKTsgLy8gSXMgYW55IG9mIHRoZSAyIHJlc3VsdHMgdGhlIGJlc3QgY3V0IHNvIGZhcj9cblxuICAgICAgaWYgKHJlczEubGVuZ3RoIDw9IHJlczIubGVuZ3RoICYmIHJlczEubGVuZ3RoIDwgbWluQ3V0U2l6ZSkge1xuICAgICAgICBtaW5DdXRTaXplID0gcmVzMS5sZW5ndGg7XG4gICAgICAgIG1pbkN1dEVkZ2VJbmRleGVzID0gcmVzMTtcbiAgICAgICAgY29weU5vZGVzTWFwKG1ldGFOb2RlTWFwLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzMi5sZW5ndGggPD0gcmVzMS5sZW5ndGggJiYgcmVzMi5sZW5ndGggPCBtaW5DdXRTaXplKSB7XG4gICAgICAgIG1pbkN1dFNpemUgPSByZXMyLmxlbmd0aDtcbiAgICAgICAgbWluQ3V0RWRnZUluZGV4ZXMgPSByZXMyO1xuICAgICAgICBjb3B5Tm9kZXNNYXAobWV0YU5vZGVNYXAyLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgIH1cbiAgICB9IC8vIGVuZCBvZiBtYWluIGxvb3BcbiAgICAvLyBDb25zdHJ1Y3QgcmVzdWx0XG5cblxuICAgIHZhciBjdXQgPSB0aGlzLnNwYXduKG1pbkN1dEVkZ2VJbmRleGVzLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGVkZ2VzW2VbMF1dO1xuICAgIH0pKTtcbiAgICB2YXIgcGFydGl0aW9uMSA9IHRoaXMuc3Bhd24oKTtcbiAgICB2YXIgcGFydGl0aW9uMiA9IHRoaXMuc3Bhd24oKTsgLy8gdHJhdmVyc2UgbWV0YU5vZGVNYXAgZm9yIGJlc3QgY3V0XG5cbiAgICB2YXIgd2l0bmVzc05vZGVQYXJ0aXRpb24gPSBtaW5DdXROb2RlTWFwWzBdO1xuXG4gICAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbWluQ3V0Tm9kZU1hcC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgcGFydGl0aW9uSWQgPSBtaW5DdXROb2RlTWFwW19pNV07XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW19pNV07XG5cbiAgICAgIGlmIChwYXJ0aXRpb25JZCA9PT0gd2l0bmVzc05vZGVQYXJ0aXRpb24pIHtcbiAgICAgICAgcGFydGl0aW9uMS5tZXJnZShub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRpdGlvbjIubWVyZ2Uobm9kZSk7XG4gICAgICB9XG4gICAgfSAvLyBjb25zdHJ1Y3QgY29tcG9uZW50cyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZGlzam9pbnQgc3Vic2V0IG9mIG5vZGVzXG5cblxuICAgIHZhciBjb25zdHJ1Y3RDb21wb25lbnQgPSBmdW5jdGlvbiBjb25zdHJ1Y3RDb21wb25lbnQoc3Vic2V0KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMuc3Bhd24oKTtcblxuICAgICAgc3Vic2V0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgY29tcG9uZW50Lm1lcmdlKG5vZGUpO1xuICAgICAgICBub2RlLmNvbm5lY3RlZEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIC8vIGVuc3VyZSBlZGdlIGlzIHdpdGhpbiBjYWxsaW5nIGNvbGxlY3Rpb24gYW5kIGVkZ2UgaXMgbm90IGluIGN1dFxuICAgICAgICAgIGlmIChfdGhpcy5jb250YWlucyhlZGdlKSAmJiAhY3V0LmNvbnRhaW5zKGVkZ2UpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9O1xuXG4gICAgdmFyIGNvbXBvbmVudHMgPSBbY29uc3RydWN0Q29tcG9uZW50KHBhcnRpdGlvbjEpLCBjb25zdHJ1Y3RDb21wb25lbnQocGFydGl0aW9uMildO1xuICAgIHZhciByZXQgPSB7XG4gICAgICBjdXQ6IGN1dCxcbiAgICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHMsXG4gICAgICAvLyBuLmIuIHBhcnRpdGlvbnMgYXJlIGluY2x1ZGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGFwaSBzcGVjXG4gICAgICAvLyAoY291bGQgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uKVxuICAgICAgcGFydGl0aW9uMTogcGFydGl0aW9uMSxcbiAgICAgIHBhcnRpdGlvbjI6IHBhcnRpdGlvbjJcbiAgICB9O1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn07IC8vIGVsZXNmblxuXG52YXIgY29weVBvc2l0aW9uID0gZnVuY3Rpb24gY29weVBvc2l0aW9uKHApIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBwLngsXG4gICAgeTogcC55XG4gIH07XG59O1xudmFyIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uID0gZnVuY3Rpb24gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocCwgem9vbSwgcGFuKSB7XG4gIHJldHVybiB7XG4gICAgeDogcC54ICogem9vbSArIHBhbi54LFxuICAgIHk6IHAueSAqIHpvb20gKyBwYW4ueVxuICB9O1xufTtcbnZhciByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbiA9IGZ1bmN0aW9uIHJlbmRlcmVkVG9Nb2RlbFBvc2l0aW9uKHAsIHpvb20sIHBhbikge1xuICByZXR1cm4ge1xuICAgIHg6IChwLnggLSBwYW4ueCkgLyB6b29tLFxuICAgIHk6IChwLnkgLSBwYW4ueSkgLyB6b29tXG4gIH07XG59O1xudmFyIGFycmF5MnBvaW50ID0gZnVuY3Rpb24gYXJyYXkycG9pbnQoYXJyKSB7XG4gIHJldHVybiB7XG4gICAgeDogYXJyWzBdLFxuICAgIHk6IGFyclsxXVxuICB9O1xufTtcbnZhciBtaW4gPSBmdW5jdGlvbiBtaW4oYXJyKSB7XG4gIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgdmFyIG1pbiA9IEluZmluaXR5O1xuXG4gIGZvciAodmFyIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7XG4gICAgdmFyIHZhbCA9IGFycltpXTtcblxuICAgIGlmIChpc0Zpbml0ZSh2YWwpKSB7XG4gICAgICBtaW4gPSBNYXRoLm1pbih2YWwsIG1pbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbjtcbn07XG52YXIgbWF4ID0gZnVuY3Rpb24gbWF4KGFycikge1xuICB2YXIgYmVnaW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGFyci5sZW5ndGg7XG4gIHZhciBtYXggPSAtSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgIG1heCA9IE1hdGgubWF4KHZhbCwgbWF4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF4O1xufTtcbnZhciBtZWFuID0gZnVuY3Rpb24gbWVhbihhcnIpIHtcbiAgdmFyIGJlZ2luID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBhcnIubGVuZ3RoO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgbiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgIHRvdGFsICs9IHZhbDtcbiAgICAgIG4rKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG90YWwgLyBuO1xufTtcbnZhciBtZWRpYW4gPSBmdW5jdGlvbiBtZWRpYW4oYXJyKSB7XG4gIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgdmFyIGNvcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBzb3J0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB0cnVlO1xuICB2YXIgaW5jbHVkZUhvbGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuXG4gIGlmIChjb3B5KSB7XG4gICAgYXJyID0gYXJyLnNsaWNlKGJlZ2luLCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGlmIChlbmQgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBhcnIuc3BsaWNlKGVuZCwgYXJyLmxlbmd0aCAtIGVuZCk7XG4gICAgfVxuXG4gICAgaWYgKGJlZ2luID4gMCkge1xuICAgICAgYXJyLnNwbGljZSgwLCBiZWdpbik7XG4gICAgfVxuICB9IC8vIGFsbCBub24gZmluaXRlIChlLmcuIEluZmluaXR5LCBOYU4pIGVsZW1lbnRzIG11c3QgYmUgLUluZmluaXR5IHNvIHRoZXkgZ28gdG8gdGhlIHN0YXJ0XG5cblxuICB2YXIgb2ZmID0gMDsgLy8gb2Zmc2V0IGZyb20gbm9uLWZpbml0ZSB2YWx1ZXNcblxuICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHYgPSBhcnJbaV07XG5cbiAgICBpZiAoaW5jbHVkZUhvbGVzKSB7XG4gICAgICBpZiAoIWlzRmluaXRlKHYpKSB7XG4gICAgICAgIGFycltpXSA9IC1JbmZpbml0eTtcbiAgICAgICAgb2ZmKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGp1c3QgcmVtb3ZlIGl0IGlmIHdlIGRvbid0IHdhbnQgdG8gY29uc2lkZXIgaG9sZXNcbiAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNvcnQpIHtcbiAgICBhcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyByZXF1aXJlcyBjb3B5ID0gdHJ1ZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIG9yaWdcbiAgfVxuXG4gIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xuICB2YXIgbWlkID0gTWF0aC5mbG9vcihsZW4gLyAyKTtcblxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHJldHVybiBhcnJbbWlkICsgMSArIG9mZl07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChhcnJbbWlkIC0gMSArIG9mZl0gKyBhcnJbbWlkICsgb2ZmXSkgLyAyO1xuICB9XG59O1xudmFyIGRlZzJyYWQgPSBmdW5jdGlvbiBkZWcycmFkKGRlZykge1xuICByZXR1cm4gTWF0aC5QSSAqIGRlZyAvIDE4MDtcbn07XG52YXIgZ2V0QW5nbGVGcm9tRGlzcCA9IGZ1bmN0aW9uIGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKSB7XG4gIHJldHVybiBNYXRoLmF0YW4yKGRpc3BZLCBkaXNwWCkgLSBNYXRoLlBJIC8gMjtcbn07XG52YXIgbG9nMiA9IE1hdGgubG9nMiB8fCBmdW5jdGlvbiAobikge1xuICByZXR1cm4gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTtcbn07XG52YXIgc2lnbnVtID0gZnVuY3Rpb24gc2lnbnVtKHgpIHtcbiAgaWYgKHggPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSBpZiAoeCA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG52YXIgZGlzdCA9IGZ1bmN0aW9uIGRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLnNxcnQoc3FkaXN0KHAxLCBwMikpO1xufTtcbnZhciBzcWRpc3QgPSBmdW5jdGlvbiBzcWRpc3QocDEsIHAyKSB7XG4gIHZhciBkeCA9IHAyLnggLSBwMS54O1xuICB2YXIgZHkgPSBwMi55IC0gcDEueTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbnZhciBpblBsYWNlU3VtTm9ybWFsaXplID0gZnVuY3Rpb24gaW5QbGFjZVN1bU5vcm1hbGl6ZSh2KSB7XG4gIHZhciBsZW5ndGggPSB2Lmxlbmd0aDsgLy8gRmlyc3QsIGdldCBzdW0gb2YgYWxsIGVsZW1lbnRzXG5cbiAgdmFyIHRvdGFsID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdG90YWwgKz0gdltpXTtcbiAgfSAvLyBOb3csIGRpdmlkZSBlYWNoIGJ5IHRoZSBzdW0gb2YgYWxsIGVsZW1lbnRzXG5cblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuZ3RoOyBfaSsrKSB7XG4gICAgdltfaV0gPSB2W19pXSAvIHRvdGFsO1xuICB9XG5cbiAgcmV0dXJuIHY7XG59O1xuXG52YXIgcWJlemllckF0ID0gZnVuY3Rpb24gcWJlemllckF0KHAwLCBwMSwgcDIsIHQpIHtcbiAgcmV0dXJuICgxIC0gdCkgKiAoMSAtIHQpICogcDAgKyAyICogKDEgLSB0KSAqIHQgKiBwMSArIHQgKiB0ICogcDI7XG59O1xudmFyIHFiZXppZXJQdEF0ID0gZnVuY3Rpb24gcWJlemllclB0QXQocDAsIHAxLCBwMiwgdCkge1xuICByZXR1cm4ge1xuICAgIHg6IHFiZXppZXJBdChwMC54LCBwMS54LCBwMi54LCB0KSxcbiAgICB5OiBxYmV6aWVyQXQocDAueSwgcDEueSwgcDIueSwgdClcbiAgfTtcbn07XG52YXIgbGluZUF0ID0gZnVuY3Rpb24gbGluZUF0KHAwLCBwMSwgdCwgZCkge1xuICB2YXIgdmVjID0ge1xuICAgIHg6IHAxLnggLSBwMC54LFxuICAgIHk6IHAxLnkgLSBwMC55XG4gIH07XG4gIHZhciB2ZWNEaXN0ID0gZGlzdChwMCwgcDEpO1xuICB2YXIgbm9ybVZlYyA9IHtcbiAgICB4OiB2ZWMueCAvIHZlY0Rpc3QsXG4gICAgeTogdmVjLnkgLyB2ZWNEaXN0XG4gIH07XG4gIHQgPSB0ID09IG51bGwgPyAwIDogdDtcbiAgZCA9IGQgIT0gbnVsbCA/IGQgOiB0ICogdmVjRGlzdDtcbiAgcmV0dXJuIHtcbiAgICB4OiBwMC54ICsgbm9ybVZlYy54ICogZCxcbiAgICB5OiBwMC55ICsgbm9ybVZlYy55ICogZFxuICB9O1xufTtcbnZhciBib3VuZCA9IGZ1bmN0aW9uIGJvdW5kKG1pbiwgdmFsLCBtYXgpIHtcbiAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5taW4obWF4LCB2YWwpKTtcbn07IC8vIG1ha2VzIGEgZnVsbCBiYiAoeDEsIHkxLCB4MiwgeTIsIHcsIGgpIGZyb20gaW1wbGljaXQgcGFyYW1zXG5cbnZhciBtYWtlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiBtYWtlQm91bmRpbmdCb3goYmIpIHtcbiAgaWYgKGJiID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDE6IEluZmluaXR5LFxuICAgICAgeTE6IEluZmluaXR5LFxuICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgIHkyOiAtSW5maW5pdHksXG4gICAgICB3OiAwLFxuICAgICAgaDogMFxuICAgIH07XG4gIH0gZWxzZSBpZiAoYmIueDEgIT0gbnVsbCAmJiBiYi55MSAhPSBudWxsKSB7XG4gICAgaWYgKGJiLngyICE9IG51bGwgJiYgYmIueTIgIT0gbnVsbCAmJiBiYi54MiA+PSBiYi54MSAmJiBiYi55MiA+PSBiYi55MSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDE6IGJiLngxLFxuICAgICAgICB5MTogYmIueTEsXG4gICAgICAgIHgyOiBiYi54MixcbiAgICAgICAgeTI6IGJiLnkyLFxuICAgICAgICB3OiBiYi54MiAtIGJiLngxLFxuICAgICAgICBoOiBiYi55MiAtIGJiLnkxXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoYmIudyAhPSBudWxsICYmIGJiLmggIT0gbnVsbCAmJiBiYi53ID49IDAgJiYgYmIuaCA+PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4MTogYmIueDEsXG4gICAgICAgIHkxOiBiYi55MSxcbiAgICAgICAgeDI6IGJiLngxICsgYmIudyxcbiAgICAgICAgeTI6IGJiLnkxICsgYmIuaCxcbiAgICAgICAgdzogYmIudyxcbiAgICAgICAgaDogYmIuaFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG52YXIgY29weUJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY29weUJvdW5kaW5nQm94KGJiKSB7XG4gIHJldHVybiB7XG4gICAgeDE6IGJiLngxLFxuICAgIHgyOiBiYi54MixcbiAgICB3OiBiYi53LFxuICAgIHkxOiBiYi55MSxcbiAgICB5MjogYmIueTIsXG4gICAgaDogYmIuaFxuICB9O1xufTtcbnZhciBjbGVhckJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY2xlYXJCb3VuZGluZ0JveChiYikge1xuICBiYi54MSA9IEluZmluaXR5O1xuICBiYi55MSA9IEluZmluaXR5O1xuICBiYi54MiA9IC1JbmZpbml0eTtcbiAgYmIueTIgPSAtSW5maW5pdHk7XG4gIGJiLncgPSAwO1xuICBiYi5oID0gMDtcbn07XG52YXIgdXBkYXRlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiB1cGRhdGVCb3VuZGluZ0JveChiYjEsIGJiMikge1xuICAvLyB1cGRhdGUgYmIxIHdpdGggYmIyIGJvdW5kc1xuICBiYjEueDEgPSBNYXRoLm1pbihiYjEueDEsIGJiMi54MSk7XG4gIGJiMS54MiA9IE1hdGgubWF4KGJiMS54MiwgYmIyLngyKTtcbiAgYmIxLncgPSBiYjEueDIgLSBiYjEueDE7XG4gIGJiMS55MSA9IE1hdGgubWluKGJiMS55MSwgYmIyLnkxKTtcbiAgYmIxLnkyID0gTWF0aC5tYXgoYmIxLnkyLCBiYjIueTIpO1xuICBiYjEuaCA9IGJiMS55MiAtIGJiMS55MTtcbn07XG52YXIgZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50KGJiLCB4LCB5KSB7XG4gIGJiLngxID0gTWF0aC5taW4oYmIueDEsIHgpO1xuICBiYi54MiA9IE1hdGgubWF4KGJiLngyLCB4KTtcbiAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gIGJiLnkxID0gTWF0aC5taW4oYmIueTEsIHkpO1xuICBiYi55MiA9IE1hdGgubWF4KGJiLnkyLCB5KTtcbiAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG59O1xudmFyIGV4cGFuZEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3goYmIpIHtcbiAgdmFyIHBhZGRpbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIGJiLngxIC09IHBhZGRpbmc7XG4gIGJiLngyICs9IHBhZGRpbmc7XG4gIGJiLnkxIC09IHBhZGRpbmc7XG4gIGJiLnkyICs9IHBhZGRpbmc7XG4gIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgcmV0dXJuIGJiO1xufTtcbnZhciBleHBhbmRCb3VuZGluZ0JveFNpZGVzID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYikge1xuICB2YXIgcGFkZGluZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogWzBdO1xuICB2YXIgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0O1xuXG4gIGlmIChwYWRkaW5nLmxlbmd0aCA9PT0gMSkge1xuICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9tID0gbGVmdCA9IHBhZGRpbmdbMF07XG4gIH0gZWxzZSBpZiAocGFkZGluZy5sZW5ndGggPT09IDIpIHtcbiAgICB0b3AgPSBib3R0b20gPSBwYWRkaW5nWzBdO1xuICAgIGxlZnQgPSByaWdodCA9IHBhZGRpbmdbMV07XG4gIH0gZWxzZSBpZiAocGFkZGluZy5sZW5ndGggPT09IDQpIHtcbiAgICB2YXIgX3BhZGRpbmcgPSBfc2xpY2VkVG9BcnJheShwYWRkaW5nLCA0KTtcblxuICAgIHRvcCA9IF9wYWRkaW5nWzBdO1xuICAgIHJpZ2h0ID0gX3BhZGRpbmdbMV07XG4gICAgYm90dG9tID0gX3BhZGRpbmdbMl07XG4gICAgbGVmdCA9IF9wYWRkaW5nWzNdO1xuICB9XG5cbiAgYmIueDEgLT0gbGVmdDtcbiAgYmIueDIgKz0gcmlnaHQ7XG4gIGJiLnkxIC09IHRvcDtcbiAgYmIueTIgKz0gYm90dG9tO1xuICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG4gIHJldHVybiBiYjtcbn07XG5cbnZhciBhc3NpZ25Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGFzc2lnbkJvdW5kaW5nQm94KGJiMSwgYmIyKSB7XG4gIGJiMS54MSA9IGJiMi54MTtcbiAgYmIxLnkxID0gYmIyLnkxO1xuICBiYjEueDIgPSBiYjIueDI7XG4gIGJiMS55MiA9IGJiMi55MjtcbiAgYmIxLncgPSBiYjEueDIgLSBiYjEueDE7XG4gIGJiMS5oID0gYmIxLnkyIC0gYmIxLnkxO1xufTtcbnZhciBib3VuZGluZ0JveGVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gYm91bmRpbmdCb3hlc0ludGVyc2VjdChiYjEsIGJiMikge1xuICAvLyBjYXNlOiBvbmUgYmIgdG8gcmlnaHQgb2Ygb3RoZXJcbiAgaWYgKGJiMS54MSA+IGJiMi54Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChiYjIueDEgPiBiYjEueDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gY2FzZTogb25lIGJiIHRvIGxlZnQgb2Ygb3RoZXJcblxuXG4gIGlmIChiYjEueDIgPCBiYjIueDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYmIyLngyIDwgYmIxLngxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIGNhc2U6IG9uZSBiYiBhYm92ZSBvdGhlclxuXG5cbiAgaWYgKGJiMS55MiA8IGJiMi55MSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChiYjIueTIgPCBiYjEueTEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gY2FzZTogb25lIGJiIGJlbG93IG90aGVyXG5cblxuICBpZiAoYmIxLnkxID4gYmIyLnkyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGJiMi55MSA+IGJiMS55Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBvdGhlcndpc2UsIG11c3QgaGF2ZSBzb21lIG92ZXJsYXBcblxuXG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gaW5Cb3VuZGluZ0JveChiYiwgeCwgeSkge1xuICByZXR1cm4gYmIueDEgPD0geCAmJiB4IDw9IGJiLngyICYmIGJiLnkxIDw9IHkgJiYgeSA8PSBiYi55Mjtcbn07XG52YXIgcG9pbnRJbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gcG9pbnRJbkJvdW5kaW5nQm94KGJiLCBwdCkge1xuICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYiwgcHQueCwgcHQueSk7XG59O1xudmFyIGJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveChiYjEsIGJiMikge1xuICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYjEsIGJiMi54MSwgYmIyLnkxKSAmJiBpbkJvdW5kaW5nQm94KGJiMSwgYmIyLngyLCBiYjIueTIpO1xufTtcbnZhciByb3VuZFJlY3RhbmdsZUludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFJlY3RhbmdsZUludGVyc2VjdExpbmUoeCwgeSwgbm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nKSB7XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyOyAvLyBDaGVjayBpbnRlcnNlY3Rpb25zIHdpdGggc3RyYWlnaHQgbGluZSBzZWdtZW50c1xuXG4gIHZhciBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zOyAvLyBUb3Agc2VnbWVudCwgbGVmdCB0byByaWdodFxuXG4gIHtcbiAgICB2YXIgdG9wU3RhcnRYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgIHZhciB0b3BTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgLSBwYWRkaW5nO1xuICAgIHZhciB0b3BFbmRYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nO1xuICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMgPSBmaW5pdGVMaW5lc0ludGVyc2VjdCh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFN0YXJ0WCwgdG9wU3RhcnRZLCB0b3BFbmRYLCB0b3BFbmRZLCBmYWxzZSk7XG5cbiAgICBpZiAoc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucztcbiAgICB9XG4gIH0gLy8gUmlnaHQgc2VnbWVudCwgdG9wIHRvIGJvdHRvbVxuXG4gIHtcbiAgICB2YXIgcmlnaHRTdGFydFggPSBub2RlWCArIGhhbGZXaWR0aCArIHBhZGRpbmc7XG4gICAgdmFyIHJpZ2h0U3RhcnRZID0gbm9kZVkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyUmFkaXVzIC0gcGFkZGluZztcbiAgICB2YXIgcmlnaHRFbmRYID0gcmlnaHRTdGFydFg7XG4gICAgdmFyIHJpZ2h0RW5kWSA9IG5vZGVZICsgaGFsZkhlaWdodCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgcmlnaHRTdGFydFgsIHJpZ2h0U3RhcnRZLCByaWdodEVuZFgsIHJpZ2h0RW5kWSwgZmFsc2UpO1xuXG4gICAgaWYgKHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnM7XG4gICAgfVxuICB9IC8vIEJvdHRvbSBzZWdtZW50LCBsZWZ0IHRvIHJpZ2h0XG5cbiAge1xuICAgIHZhciBib3R0b21TdGFydFggPSBub2RlWCAtIGhhbGZXaWR0aCArIGNvcm5lclJhZGl1cyAtIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbVN0YXJ0WSA9IG5vZGVZICsgaGFsZkhlaWdodCArIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbUVuZFggPSBub2RlWCArIGhhbGZXaWR0aCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbUVuZFkgPSBib3R0b21TdGFydFk7XG4gICAgc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tU3RhcnRYLCBib3R0b21TdGFydFksIGJvdHRvbUVuZFgsIGJvdHRvbUVuZFksIGZhbHNlKTtcblxuICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zO1xuICAgIH1cbiAgfSAvLyBMZWZ0IHNlZ21lbnQsIHRvcCB0byBib3R0b21cblxuICB7XG4gICAgdmFyIGxlZnRTdGFydFggPSBub2RlWCAtIGhhbGZXaWR0aCAtIHBhZGRpbmc7XG4gICAgdmFyIGxlZnRTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgIHZhciBsZWZ0RW5kWCA9IGxlZnRTdGFydFg7XG4gICAgdmFyIGxlZnRFbmRZID0gbm9kZVkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyUmFkaXVzICsgcGFkZGluZztcbiAgICBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCBsZWZ0U3RhcnRYLCBsZWZ0U3RhcnRZLCBsZWZ0RW5kWCwgbGVmdEVuZFksIGZhbHNlKTtcblxuICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zO1xuICAgIH1cbiAgfSAvLyBDaGVjayBpbnRlcnNlY3Rpb25zIHdpdGggYXJjIHNlZ21lbnRzXG5cbiAgdmFyIGFyY0ludGVyc2VjdGlvbnM7IC8vIFRvcCBMZWZ0XG5cbiAge1xuICAgIHZhciB0b3BMZWZ0Q2VudGVyWCA9IG5vZGVYIC0gaGFsZldpZHRoICsgY29ybmVyUmFkaXVzO1xuICAgIHZhciB0b3BMZWZ0Q2VudGVyWSA9IG5vZGVZIC0gaGFsZkhlaWdodCArIGNvcm5lclJhZGl1cztcbiAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcExlZnRDZW50ZXJYLCB0b3BMZWZ0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgaWYgKGFyY0ludGVyc2VjdGlvbnMubGVuZ3RoID4gMCAmJiBhcmNJbnRlcnNlY3Rpb25zWzBdIDw9IHRvcExlZnRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wTGVmdENlbnRlclkpIHtcbiAgICAgIHJldHVybiBbYXJjSW50ZXJzZWN0aW9uc1swXSwgYXJjSW50ZXJzZWN0aW9uc1sxXV07XG4gICAgfVxuICB9IC8vIFRvcCBSaWdodFxuXG4gIHtcbiAgICB2YXIgdG9wUmlnaHRDZW50ZXJYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIHRvcFJpZ2h0Q2VudGVyWSA9IG5vZGVZIC0gaGFsZkhlaWdodCArIGNvcm5lclJhZGl1cztcbiAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFJpZ2h0Q2VudGVyWCwgdG9wUmlnaHRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPj0gdG9wUmlnaHRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wUmlnaHRDZW50ZXJZKSB7XG4gICAgICByZXR1cm4gW2FyY0ludGVyc2VjdGlvbnNbMF0sIGFyY0ludGVyc2VjdGlvbnNbMV1dO1xuICAgIH1cbiAgfSAvLyBCb3R0b20gUmlnaHRcblxuICB7XG4gICAgdmFyIGJvdHRvbVJpZ2h0Q2VudGVyWCA9IG5vZGVYICsgaGFsZldpZHRoIC0gY29ybmVyUmFkaXVzO1xuICAgIHZhciBib3R0b21SaWdodENlbnRlclkgPSBub2RlWSArIGhhbGZIZWlnaHQgLSBjb3JuZXJSYWRpdXM7XG4gICAgYXJjSW50ZXJzZWN0aW9ucyA9IGludGVyc2VjdExpbmVDaXJjbGUoeCwgeSwgbm9kZVgsIG5vZGVZLCBib3R0b21SaWdodENlbnRlclgsIGJvdHRvbVJpZ2h0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgaWYgKGFyY0ludGVyc2VjdGlvbnMubGVuZ3RoID4gMCAmJiBhcmNJbnRlcnNlY3Rpb25zWzBdID49IGJvdHRvbVJpZ2h0Q2VudGVyWCAmJiBhcmNJbnRlcnNlY3Rpb25zWzFdID49IGJvdHRvbVJpZ2h0Q2VudGVyWSkge1xuICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICB9XG4gIH0gLy8gQm90dG9tIExlZnRcblxuICB7XG4gICAgdmFyIGJvdHRvbUxlZnRDZW50ZXJYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIGJvdHRvbUxlZnRDZW50ZXJZID0gbm9kZVkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyUmFkaXVzO1xuICAgIGFyY0ludGVyc2VjdGlvbnMgPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tTGVmdENlbnRlclgsIGJvdHRvbUxlZnRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPD0gYm90dG9tTGVmdENlbnRlclggJiYgYXJjSW50ZXJzZWN0aW9uc1sxXSA+PSBib3R0b21MZWZ0Q2VudGVyWSkge1xuICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdOyAvLyBpZiBub3RoaW5nXG59O1xudmFyIGluTGluZVZpY2luaXR5ID0gZnVuY3Rpb24gaW5MaW5lVmljaW5pdHkoeCwgeSwgbHgxLCBseTEsIGx4MiwgbHkyLCB0b2xlcmFuY2UpIHtcbiAgdmFyIHQgPSB0b2xlcmFuY2U7XG4gIHZhciB4MSA9IE1hdGgubWluKGx4MSwgbHgyKTtcbiAgdmFyIHgyID0gTWF0aC5tYXgobHgxLCBseDIpO1xuICB2YXIgeTEgPSBNYXRoLm1pbihseTEsIGx5Mik7XG4gIHZhciB5MiA9IE1hdGgubWF4KGx5MSwgbHkyKTtcbiAgcmV0dXJuIHgxIC0gdCA8PSB4ICYmIHggPD0geDIgKyB0ICYmIHkxIC0gdCA8PSB5ICYmIHkgPD0geTIgKyB0O1xufTtcbnZhciBpbkJlemllclZpY2luaXR5ID0gZnVuY3Rpb24gaW5CZXppZXJWaWNpbml0eSh4LCB5LCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0b2xlcmFuY2UpIHtcbiAgdmFyIGJiID0ge1xuICAgIHgxOiBNYXRoLm1pbih4MSwgeDMsIHgyKSAtIHRvbGVyYW5jZSxcbiAgICB4MjogTWF0aC5tYXgoeDEsIHgzLCB4MikgKyB0b2xlcmFuY2UsXG4gICAgeTE6IE1hdGgubWluKHkxLCB5MywgeTIpIC0gdG9sZXJhbmNlLFxuICAgIHkyOiBNYXRoLm1heCh5MSwgeTMsIHkyKSArIHRvbGVyYW5jZVxuICB9OyAvLyBpZiBvdXRzaWRlIHRoZSByb3VnaCBib3VuZGluZyBib3ggZm9yIHRoZSBiZXppZXIsIHRoZW4gaXQgY2FuJ3QgYmUgYSBoaXRcblxuICBpZiAoeCA8IGJiLngxIHx8IHggPiBiYi54MiB8fCB5IDwgYmIueTEgfHwgeSA+IGJiLnkyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlemllciBvdXQgb2Ygcm91Z2ggYmInKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjb25zb2xlLmxvZygnZG8gbW9yZSBleHBlbnNpdmUgY2hlY2snKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbnZhciBzb2x2ZVF1YWRyYXRpYyA9IGZ1bmN0aW9uIHNvbHZlUXVhZHJhdGljKGEsIGIsIGMsIHZhbCkge1xuICBjIC09IHZhbDtcbiAgdmFyIHIgPSBiICogYiAtIDQgKiBhICogYztcblxuICBpZiAociA8IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgc3FydFIgPSBNYXRoLnNxcnQocik7XG4gIHZhciBkZW5vbSA9IDIgKiBhO1xuICB2YXIgcm9vdDEgPSAoLWIgKyBzcXJ0UikgLyBkZW5vbTtcbiAgdmFyIHJvb3QyID0gKC1iIC0gc3FydFIpIC8gZGVub207XG4gIHJldHVybiBbcm9vdDEsIHJvb3QyXTtcbn07XG52YXIgc29sdmVDdWJpYyA9IGZ1bmN0aW9uIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcmVzdWx0KSB7XG4gIC8vIFNvbHZlcyBhIGN1YmljIGZ1bmN0aW9uLCByZXR1cm5zIHJvb3QgaW4gZm9ybSBbcjEsIGkxLCByMiwgaTIsIHIzLCBpM10sIHdoZXJlXG4gIC8vIHIgaXMgdGhlIHJlYWwgY29tcG9uZW50LCBpIGlzIHRoZSBpbWFnaW5hcnkgY29tcG9uZW50XG4gIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDYXJkYW5vIG1ldGhvZCBmcm9tIHRoZSB5ZWFyIDE1NDVcbiAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DdWJpY19mdW5jdGlvbiNUaGVfbmF0dXJlX29mX3RoZV9yb290c1xuICB2YXIgZXBzaWxvbiA9IDAuMDAwMDE7IC8vIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gd2hpbGUga2VlcGluZyB0aGUgb3ZlcmFsbCBleHByZXNzaW9uIGNsb3NlIGluIHZhbHVlXG5cbiAgaWYgKGEgPT09IDApIHtcbiAgICBhID0gZXBzaWxvbjtcbiAgfVxuXG4gIGIgLz0gYTtcbiAgYyAvPSBhO1xuICBkIC89IGE7XG4gIHZhciBkaXNjcmltaW5hbnQsIHEsIHIsIGR1bTEsIHMsIHQsIHRlcm0xLCByMTM7XG4gIHEgPSAoMy4wICogYyAtIGIgKiBiKSAvIDkuMDtcbiAgciA9IC0oMjcuMCAqIGQpICsgYiAqICg5LjAgKiBjIC0gMi4wICogKGIgKiBiKSk7XG4gIHIgLz0gNTQuMDtcbiAgZGlzY3JpbWluYW50ID0gcSAqIHEgKiBxICsgciAqIHI7XG4gIHJlc3VsdFsxXSA9IDA7XG4gIHRlcm0xID0gYiAvIDMuMDtcblxuICBpZiAoZGlzY3JpbWluYW50ID4gMCkge1xuICAgIHMgPSByICsgTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCk7XG4gICAgcyA9IHMgPCAwID8gLU1hdGgucG93KC1zLCAxLjAgLyAzLjApIDogTWF0aC5wb3cocywgMS4wIC8gMy4wKTtcbiAgICB0ID0gciAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpO1xuICAgIHQgPSB0IDwgMCA/IC1NYXRoLnBvdygtdCwgMS4wIC8gMy4wKSA6IE1hdGgucG93KHQsIDEuMCAvIDMuMCk7XG4gICAgcmVzdWx0WzBdID0gLXRlcm0xICsgcyArIHQ7XG4gICAgdGVybTEgKz0gKHMgKyB0KSAvIDIuMDtcbiAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtdGVybTE7XG4gICAgdGVybTEgPSBNYXRoLnNxcnQoMy4wKSAqICgtdCArIHMpIC8gMjtcbiAgICByZXN1bHRbM10gPSB0ZXJtMTtcbiAgICByZXN1bHRbNV0gPSAtdGVybTE7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVzdWx0WzVdID0gcmVzdWx0WzNdID0gMDtcblxuICBpZiAoZGlzY3JpbWluYW50ID09PSAwKSB7XG4gICAgcjEzID0gciA8IDAgPyAtTWF0aC5wb3coLXIsIDEuMCAvIDMuMCkgOiBNYXRoLnBvdyhyLCAxLjAgLyAzLjApO1xuICAgIHJlc3VsdFswXSA9IC10ZXJtMSArIDIuMCAqIHIxMztcbiAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtKHIxMyArIHRlcm0xKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBxID0gLXE7XG4gIGR1bTEgPSBxICogcSAqIHE7XG4gIGR1bTEgPSBNYXRoLmFjb3MociAvIE1hdGguc3FydChkdW0xKSk7XG4gIHIxMyA9IDIuMCAqIE1hdGguc3FydChxKTtcbiAgcmVzdWx0WzBdID0gLXRlcm0xICsgcjEzICogTWF0aC5jb3MoZHVtMSAvIDMuMCk7XG4gIHJlc3VsdFsyXSA9IC10ZXJtMSArIHIxMyAqIE1hdGguY29zKChkdW0xICsgMi4wICogTWF0aC5QSSkgLyAzLjApO1xuICByZXN1bHRbNF0gPSAtdGVybTEgKyByMTMgKiBNYXRoLmNvcygoZHVtMSArIDQuMCAqIE1hdGguUEkpIC8gMy4wKTtcbiAgcmV0dXJuO1xufTtcbnZhciBzcWRpc3RUb1F1YWRyYXRpY0JlemllciA9IGZ1bmN0aW9uIHNxZGlzdFRvUXVhZHJhdGljQmV6aWVyKHgsIHksIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgLy8gRmluZCBtaW5pbXVtIGRpc3RhbmNlIGJ5IHVzaW5nIHRoZSBtaW5pbXVtIG9mIHRoZSBkaXN0YW5jZVxuICAvLyBmdW5jdGlvbiBiZXR3ZWVuIHRoZSBnaXZlbiBwb2ludCBhbmQgdGhlIGN1cnZlXG4gIC8vIFRoaXMgZ2l2ZXMgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcmVzdWx0aW5nIGN1YmljIGVxdWF0aW9uXG4gIC8vIHdob3NlIHJvb3RzIHRlbGwgdXMgd2hlcmUgYSBwb3NzaWJsZSBtaW5pbXVtIGlzXG4gIC8vIChDb2VmZmljaWVudHMgYXJlIGRpdmlkZWQgYnkgNClcbiAgdmFyIGEgPSAxLjAgKiB4MSAqIHgxIC0gNCAqIHgxICogeDIgKyAyICogeDEgKiB4MyArIDQgKiB4MiAqIHgyIC0gNCAqIHgyICogeDMgKyB4MyAqIHgzICsgeTEgKiB5MSAtIDQgKiB5MSAqIHkyICsgMiAqIHkxICogeTMgKyA0ICogeTIgKiB5MiAtIDQgKiB5MiAqIHkzICsgeTMgKiB5MztcbiAgdmFyIGIgPSAxLjAgKiA5ICogeDEgKiB4MiAtIDMgKiB4MSAqIHgxIC0gMyAqIHgxICogeDMgLSA2ICogeDIgKiB4MiArIDMgKiB4MiAqIHgzICsgOSAqIHkxICogeTIgLSAzICogeTEgKiB5MSAtIDMgKiB5MSAqIHkzIC0gNiAqIHkyICogeTIgKyAzICogeTIgKiB5MztcbiAgdmFyIGMgPSAxLjAgKiAzICogeDEgKiB4MSAtIDYgKiB4MSAqIHgyICsgeDEgKiB4MyAtIHgxICogeCArIDIgKiB4MiAqIHgyICsgMiAqIHgyICogeCAtIHgzICogeCArIDMgKiB5MSAqIHkxIC0gNiAqIHkxICogeTIgKyB5MSAqIHkzIC0geTEgKiB5ICsgMiAqIHkyICogeTIgKyAyICogeTIgKiB5IC0geTMgKiB5O1xuICB2YXIgZCA9IDEuMCAqIHgxICogeDIgLSB4MSAqIHgxICsgeDEgKiB4IC0geDIgKiB4ICsgeTEgKiB5MiAtIHkxICogeTEgKyB5MSAqIHkgLSB5MiAqIHk7IC8vIGRlYnVnKFwiY29lZmZpY2llbnRzOiBcIiArIGEgLyBhICsgXCIsIFwiICsgYiAvIGEgKyBcIiwgXCIgKyBjIC8gYSArIFwiLCBcIiArIGQgLyBhKTtcblxuICB2YXIgcm9vdHMgPSBbXTsgLy8gVXNlIHRoZSBjdWJpYyBzb2x2aW5nIGFsZ29yaXRobVxuXG4gIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcm9vdHMpO1xuICB2YXIgemVyb1RocmVzaG9sZCA9IDAuMDAwMDAwMTtcbiAgdmFyIHBhcmFtcyA9IFtdO1xuXG4gIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCA2OyBpbmRleCArPSAyKSB7XG4gICAgaWYgKE1hdGguYWJzKHJvb3RzW2luZGV4ICsgMV0pIDwgemVyb1RocmVzaG9sZCAmJiByb290c1tpbmRleF0gPj0gMCAmJiByb290c1tpbmRleF0gPD0gMS4wKSB7XG4gICAgICBwYXJhbXMucHVzaChyb290c1tpbmRleF0pO1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtcy5wdXNoKDEuMCk7XG4gIHBhcmFtcy5wdXNoKDAuMCk7XG4gIHZhciBtaW5EaXN0YW5jZVNxdWFyZWQgPSAtMTtcbiAgdmFyIGN1clgsIGN1clksIGRpc3RTcXVhcmVkO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgY3VyWCA9IE1hdGgucG93KDEuMCAtIHBhcmFtc1tpXSwgMi4wKSAqIHgxICsgMi4wICogKDEgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeDIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB4MztcbiAgICBjdXJZID0gTWF0aC5wb3coMSAtIHBhcmFtc1tpXSwgMi4wKSAqIHkxICsgMiAqICgxLjAgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeTIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB5MztcbiAgICBkaXN0U3F1YXJlZCA9IE1hdGgucG93KGN1clggLSB4LCAyKSArIE1hdGgucG93KGN1clkgLSB5LCAyKTsgLy8gZGVidWcoJ2Rpc3RhbmNlIGZvciBwYXJhbSAnICsgcGFyYW1zW2ldICsgXCI6IFwiICsgTWF0aC5zcXJ0KGRpc3RTcXVhcmVkKSk7XG5cbiAgICBpZiAobWluRGlzdGFuY2VTcXVhcmVkID49IDApIHtcbiAgICAgIGlmIChkaXN0U3F1YXJlZCA8IG1pbkRpc3RhbmNlU3F1YXJlZCkge1xuICAgICAgICBtaW5EaXN0YW5jZVNxdWFyZWQgPSBkaXN0U3F1YXJlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWluRGlzdGFuY2VTcXVhcmVkID0gZGlzdFNxdWFyZWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbkRpc3RhbmNlU3F1YXJlZDtcbn07XG52YXIgc3FkaXN0VG9GaW5pdGVMaW5lID0gZnVuY3Rpb24gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHgxLCB5MSwgeDIsIHkyKSB7XG4gIHZhciBvZmZzZXQgPSBbeCAtIHgxLCB5IC0geTFdO1xuICB2YXIgbGluZSA9IFt4MiAtIHgxLCB5MiAtIHkxXTtcbiAgdmFyIGxpbmVTcSA9IGxpbmVbMF0gKiBsaW5lWzBdICsgbGluZVsxXSAqIGxpbmVbMV07XG4gIHZhciBoeXBTcSA9IG9mZnNldFswXSAqIG9mZnNldFswXSArIG9mZnNldFsxXSAqIG9mZnNldFsxXTtcbiAgdmFyIGRvdFByb2R1Y3QgPSBvZmZzZXRbMF0gKiBsaW5lWzBdICsgb2Zmc2V0WzFdICogbGluZVsxXTtcbiAgdmFyIGFkalNxID0gZG90UHJvZHVjdCAqIGRvdFByb2R1Y3QgLyBsaW5lU3E7XG5cbiAgaWYgKGRvdFByb2R1Y3QgPCAwKSB7XG4gICAgcmV0dXJuIGh5cFNxO1xuICB9XG5cbiAgaWYgKGFkalNxID4gbGluZVNxKSB7XG4gICAgcmV0dXJuICh4IC0geDIpICogKHggLSB4MikgKyAoeSAtIHkyKSAqICh5IC0geTIpO1xuICB9XG5cbiAgcmV0dXJuIGh5cFNxIC0gYWRqU3E7XG59O1xudmFyIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyA9IGZ1bmN0aW9uIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBwb2ludHMpIHtcbiAgdmFyIHgxLCB5MSwgeDIsIHkyO1xuICB2YXIgeTM7IC8vIEludGVyc2VjdCB3aXRoIHZlcnRpY2FsIGxpbmUgdGhyb3VnaCAoeCwgeSlcblxuICB2YXIgdXAgPSAwOyAvLyBsZXQgZG93biA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgeDEgPSBwb2ludHNbaSAqIDJdO1xuICAgIHkxID0gcG9pbnRzW2kgKiAyICsgMV07XG5cbiAgICBpZiAoaSArIDEgPCBwb2ludHMubGVuZ3RoIC8gMikge1xuICAgICAgeDIgPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgeTIgPSBwb2ludHNbKGkgKyAxKSAqIDIgKyAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgeDIgPSBwb2ludHNbKGkgKyAxIC0gcG9pbnRzLmxlbmd0aCAvIDIpICogMl07XG4gICAgICB5MiA9IHBvaW50c1soaSArIDEgLSBwb2ludHMubGVuZ3RoIC8gMikgKiAyICsgMV07XG4gICAgfVxuXG4gICAgaWYgKHgxID09IHggJiYgeDIgPT0geCkgOyBlbHNlIGlmICh4MSA+PSB4ICYmIHggPj0geDIgfHwgeDEgPD0geCAmJiB4IDw9IHgyKSB7XG4gICAgICB5MyA9ICh4IC0geDEpIC8gKHgyIC0geDEpICogKHkyIC0geTEpICsgeTE7XG5cbiAgICAgIGlmICh5MyA+IHkpIHtcbiAgICAgICAgdXArKztcbiAgICAgIH0gLy8gaWYoIHkzIDwgeSApe1xuICAgICAgLy8gZG93bisrO1xuICAgICAgLy8gfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1cCAlIDIgPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG52YXIgcG9pbnRJbnNpZGVQb2x5Z29uID0gZnVuY3Rpb24gcG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIGRpcmVjdGlvbiwgcGFkZGluZykge1xuICB2YXIgdHJhbnNmb3JtZWRQb2ludHMgPSBuZXcgQXJyYXkoYmFzZVBvaW50cy5sZW5ndGgpOyAvLyBHaXZlcyBuZWdhdGl2ZSBhbmdsZVxuXG4gIHZhciBhbmdsZTtcblxuICBpZiAoZGlyZWN0aW9uWzBdICE9IG51bGwpIHtcbiAgICBhbmdsZSA9IE1hdGguYXRhbihkaXJlY3Rpb25bMV0gLyBkaXJlY3Rpb25bMF0pO1xuXG4gICAgaWYgKGRpcmVjdGlvblswXSA8IDApIHtcbiAgICAgIGFuZ2xlID0gYW5nbGUgKyBNYXRoLlBJIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5nbGUgPSAtYW5nbGUgLSBNYXRoLlBJIC8gMjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYW5nbGUgPSBkaXJlY3Rpb247XG4gIH1cblxuICB2YXIgY29zID0gTWF0aC5jb3MoLWFuZ2xlKTtcbiAgdmFyIHNpbiA9IE1hdGguc2luKC1hbmdsZSk7IC8vICAgIGNvbnNvbGUubG9nKFwiYmFzZTogXCIgKyBiYXNlUG9pbnRzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybWVkUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSA9IHdpZHRoIC8gMiAqIChiYXNlUG9pbnRzW2kgKiAyXSAqIGNvcyAtIGJhc2VQb2ludHNbaSAqIDIgKyAxXSAqIHNpbik7XG4gICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDIgKyAxXSA9IGhlaWdodCAvIDIgKiAoYmFzZVBvaW50c1tpICogMiArIDFdICogY29zICsgYmFzZVBvaW50c1tpICogMl0gKiBzaW4pO1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSArPSBjZW50ZXJYO1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyICsgMV0gKz0gY2VudGVyWTtcbiAgfVxuXG4gIHZhciBwb2ludHM7XG5cbiAgaWYgKHBhZGRpbmcgPiAwKSB7XG4gICAgdmFyIGV4cGFuZGVkTGluZVNldCA9IGV4cGFuZFBvbHlnb24odHJhbnNmb3JtZWRQb2ludHMsIC1wYWRkaW5nKTtcbiAgICBwb2ludHMgPSBqb2luTGluZXMoZXhwYW5kZWRMaW5lU2V0KTtcbiAgfSBlbHNlIHtcbiAgICBwb2ludHMgPSB0cmFuc2Zvcm1lZFBvaW50cztcbiAgfVxuXG4gIHJldHVybiBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbn07XG52YXIgcG9pbnRJbnNpZGVSb3VuZFBvbHlnb24gPSBmdW5jdGlvbiBwb2ludEluc2lkZVJvdW5kUG9seWdvbih4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBjdXRQb2x5Z29uUG9pbnRzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgdmFyIGhhbGZXID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgc3F1YXJlZENvcm5lclJhZGl1cyA9IGNvcm5lclJhZGl1cyAqIGNvcm5lclJhZGl1cztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2VQb2ludHMubGVuZ3RoIC8gNDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICBkZXN0VXYgPSB2b2lkIDA7XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgc291cmNlVXYgPSBiYXNlUG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZVV2ID0gaSAqIDQgLSAyO1xuICAgIH1cblxuICAgIGRlc3RVdiA9IGkgKiA0ICsgMjtcbiAgICB2YXIgcHggPSBjZW50ZXJYICsgaGFsZlcgKiBiYXNlUG9pbnRzW2kgKiA0XTtcbiAgICB2YXIgcHkgPSBjZW50ZXJZICsgaGFsZkggKiBiYXNlUG9pbnRzW2kgKiA0ICsgMV07XG4gICAgdmFyIGNvc1RoZXRhID0gLWJhc2VQb2ludHNbc291cmNlVXZdICogYmFzZVBvaW50c1tkZXN0VXZdIC0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcbiAgICB2YXIgb2Zmc2V0ID0gY29ybmVyUmFkaXVzIC8gTWF0aC50YW4oTWF0aC5hY29zKGNvc1RoZXRhKSAvIDIpO1xuICAgIHZhciBjcDB4ID0gcHggLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY3AweSA9IHB5IC0gb2Zmc2V0ICogYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgIHZhciBjcDF4ID0gcHggKyBvZmZzZXQgKiBiYXNlUG9pbnRzW2Rlc3RVdl07XG4gICAgdmFyIGNwMXkgPSBweSArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG4gICAgY3V0UG9seWdvblBvaW50c1tpICogNF0gPSBjcDB4O1xuICAgIGN1dFBvbHlnb25Qb2ludHNbaSAqIDQgKyAxXSA9IGNwMHk7XG4gICAgY3V0UG9seWdvblBvaW50c1tpICogNCArIDJdID0gY3AxeDtcbiAgICBjdXRQb2x5Z29uUG9pbnRzW2kgKiA0ICsgM10gPSBjcDF5O1xuICAgIHZhciBvcnRoeCA9IGJhc2VQb2ludHNbc291cmNlVXYgKyAxXTtcbiAgICB2YXIgb3J0aHkgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl07XG4gICAgdmFyIGNvc0FscGhhID0gb3J0aHggKiBiYXNlUG9pbnRzW2Rlc3RVdl0gKyBvcnRoeSAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICBpZiAoY29zQWxwaGEgPCAwKSB7XG4gICAgICBvcnRoeCAqPSAtMTtcbiAgICAgIG9ydGh5ICo9IC0xO1xuICAgIH1cblxuICAgIHZhciBjeCA9IGNwMHggKyBvcnRoeCAqIGNvcm5lclJhZGl1cztcbiAgICB2YXIgY3kgPSBjcDB5ICsgb3J0aHkgKiBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGN4IC0geCwgMikgKyBNYXRoLnBvdyhjeSAtIHksIDIpO1xuXG4gICAgaWYgKHNxdWFyZWREaXN0YW5jZSA8PSBzcXVhcmVkQ29ybmVyUmFkaXVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFBvbHlnb25Qb2ludHMpO1xufTtcbnZhciBqb2luTGluZXMgPSBmdW5jdGlvbiBqb2luTGluZXMobGluZVNldCkge1xuICB2YXIgdmVydGljZXMgPSBuZXcgQXJyYXkobGluZVNldC5sZW5ndGggLyAyKTtcbiAgdmFyIGN1cnJlbnRMaW5lU3RhcnRYLCBjdXJyZW50TGluZVN0YXJ0WSwgY3VycmVudExpbmVFbmRYLCBjdXJyZW50TGluZUVuZFk7XG4gIHZhciBuZXh0TGluZVN0YXJ0WCwgbmV4dExpbmVTdGFydFksIG5leHRMaW5lRW5kWCwgbmV4dExpbmVFbmRZO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZVNldC5sZW5ndGggLyA0OyBpKyspIHtcbiAgICBjdXJyZW50TGluZVN0YXJ0WCA9IGxpbmVTZXRbaSAqIDRdO1xuICAgIGN1cnJlbnRMaW5lU3RhcnRZID0gbGluZVNldFtpICogNCArIDFdO1xuICAgIGN1cnJlbnRMaW5lRW5kWCA9IGxpbmVTZXRbaSAqIDQgKyAyXTtcbiAgICBjdXJyZW50TGluZUVuZFkgPSBsaW5lU2V0W2kgKiA0ICsgM107XG5cbiAgICBpZiAoaSA8IGxpbmVTZXQubGVuZ3RoIC8gNCAtIDEpIHtcbiAgICAgIG5leHRMaW5lU3RhcnRYID0gbGluZVNldFsoaSArIDEpICogNF07XG4gICAgICBuZXh0TGluZVN0YXJ0WSA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAxXTtcbiAgICAgIG5leHRMaW5lRW5kWCA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAyXTtcbiAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dExpbmVTdGFydFggPSBsaW5lU2V0WzBdO1xuICAgICAgbmV4dExpbmVTdGFydFkgPSBsaW5lU2V0WzFdO1xuICAgICAgbmV4dExpbmVFbmRYID0gbGluZVNldFsyXTtcbiAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbM107XG4gICAgfVxuXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KGN1cnJlbnRMaW5lU3RhcnRYLCBjdXJyZW50TGluZVN0YXJ0WSwgY3VycmVudExpbmVFbmRYLCBjdXJyZW50TGluZUVuZFksIG5leHRMaW5lU3RhcnRYLCBuZXh0TGluZVN0YXJ0WSwgbmV4dExpbmVFbmRYLCBuZXh0TGluZUVuZFksIHRydWUpO1xuICAgIHZlcnRpY2VzW2kgKiAyXSA9IGludGVyc2VjdGlvblswXTtcbiAgICB2ZXJ0aWNlc1tpICogMiArIDFdID0gaW50ZXJzZWN0aW9uWzFdO1xuICB9XG5cbiAgcmV0dXJuIHZlcnRpY2VzO1xufTtcbnZhciBleHBhbmRQb2x5Z29uID0gZnVuY3Rpb24gZXhwYW5kUG9seWdvbihwb2ludHMsIHBhZCkge1xuICB2YXIgZXhwYW5kZWRMaW5lU2V0ID0gbmV3IEFycmF5KHBvaW50cy5sZW5ndGggKiAyKTtcbiAgdmFyIGN1cnJlbnRQb2ludFgsIGN1cnJlbnRQb2ludFksIG5leHRQb2ludFgsIG5leHRQb2ludFk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgY3VycmVudFBvaW50WCA9IHBvaW50c1tpICogMl07XG4gICAgY3VycmVudFBvaW50WSA9IHBvaW50c1tpICogMiArIDFdO1xuXG4gICAgaWYgKGkgPCBwb2ludHMubGVuZ3RoIC8gMiAtIDEpIHtcbiAgICAgIG5leHRQb2ludFggPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgbmV4dFBvaW50WSA9IHBvaW50c1soaSArIDEpICogMiArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0UG9pbnRYID0gcG9pbnRzWzBdO1xuICAgICAgbmV4dFBvaW50WSA9IHBvaW50c1sxXTtcbiAgICB9IC8vIEN1cnJlbnQgbGluZTogW2N1cnJlbnRQb2ludFgsIGN1cnJlbnRQb2ludFldIHRvIFtuZXh0UG9pbnRYLCBuZXh0UG9pbnRZXVxuICAgIC8vIEFzc3VtZSBDQ1cgcG9seWdvbiB3aW5kaW5nXG5cblxuICAgIHZhciBvZmZzZXRYID0gbmV4dFBvaW50WSAtIGN1cnJlbnRQb2ludFk7XG4gICAgdmFyIG9mZnNldFkgPSAtKG5leHRQb2ludFggLSBjdXJyZW50UG9pbnRYKTsgLy8gTm9ybWFsaXplXG5cbiAgICB2YXIgb2Zmc2V0TGVuZ3RoID0gTWF0aC5zcXJ0KG9mZnNldFggKiBvZmZzZXRYICsgb2Zmc2V0WSAqIG9mZnNldFkpO1xuICAgIHZhciBub3JtYWxpemVkT2Zmc2V0WCA9IG9mZnNldFggLyBvZmZzZXRMZW5ndGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRPZmZzZXRZID0gb2Zmc2V0WSAvIG9mZnNldExlbmd0aDtcbiAgICBleHBhbmRlZExpbmVTZXRbaSAqIDRdID0gY3VycmVudFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDFdID0gY3VycmVudFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDJdID0gbmV4dFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDNdID0gbmV4dFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICB9XG5cbiAgcmV0dXJuIGV4cGFuZGVkTGluZVNldDtcbn07XG52YXIgaW50ZXJzZWN0TGluZUVsbGlwc2UgPSBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lRWxsaXBzZSh4LCB5LCBjZW50ZXJYLCBjZW50ZXJZLCBlbGxpcHNlV3JhZGl1cywgZWxsaXBzZUhyYWRpdXMpIHtcbiAgdmFyIGRpc3BYID0gY2VudGVyWCAtIHg7XG4gIHZhciBkaXNwWSA9IGNlbnRlclkgLSB5O1xuICBkaXNwWCAvPSBlbGxpcHNlV3JhZGl1cztcbiAgZGlzcFkgLz0gZWxsaXBzZUhyYWRpdXM7XG4gIHZhciBsZW4gPSBNYXRoLnNxcnQoZGlzcFggKiBkaXNwWCArIGRpc3BZICogZGlzcFkpO1xuICB2YXIgbmV3TGVuZ3RoID0gbGVuIC0gMTtcblxuICBpZiAobmV3TGVuZ3RoIDwgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBsZW5Qcm9wb3J0aW9uID0gbmV3TGVuZ3RoIC8gbGVuO1xuICByZXR1cm4gWyhjZW50ZXJYIC0geCkgKiBsZW5Qcm9wb3J0aW9uICsgeCwgKGNlbnRlclkgLSB5KSAqIGxlblByb3BvcnRpb24gKyB5XTtcbn07XG52YXIgY2hlY2tJbkVsbGlwc2UgPSBmdW5jdGlvbiBjaGVja0luRWxsaXBzZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZLCBwYWRkaW5nKSB7XG4gIHggLT0gY2VudGVyWDtcbiAgeSAtPSBjZW50ZXJZO1xuICB4IC89IHdpZHRoIC8gMiArIHBhZGRpbmc7XG4gIHkgLz0gaGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gIHJldHVybiB4ICogeCArIHkgKiB5IDw9IDE7XG59OyAvLyBSZXR1cm5zIGludGVyc2VjdGlvbnMgb2YgaW5jcmVhc2luZyBkaXN0YW5jZSBmcm9tIGxpbmUncyBzdGFydCBwb2ludFxuXG52YXIgaW50ZXJzZWN0TGluZUNpcmNsZSA9IGZ1bmN0aW9uIGludGVyc2VjdExpbmVDaXJjbGUoeDEsIHkxLCB4MiwgeTIsIGNlbnRlclgsIGNlbnRlclksIHJhZGl1cykge1xuICAvLyBDYWxjdWxhdGUgZCwgZGlyZWN0aW9uIHZlY3RvciBvZiBsaW5lXG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdOyAvLyBEaXJlY3Rpb24gdmVjdG9yIG9mIGxpbmVcblxuICB2YXIgZiA9IFt4MSAtIGNlbnRlclgsIHkxIC0gY2VudGVyWV07XG4gIHZhciBhID0gZFswXSAqIGRbMF0gKyBkWzFdICogZFsxXTtcbiAgdmFyIGIgPSAyICogKGZbMF0gKiBkWzBdICsgZlsxXSAqIGRbMV0pO1xuICB2YXIgYyA9IGZbMF0gKiBmWzBdICsgZlsxXSAqIGZbMV0gLSByYWRpdXMgKiByYWRpdXM7XG4gIHZhciBkaXNjcmltaW5hbnQgPSBiICogYiAtIDQgKiBhICogYztcblxuICBpZiAoZGlzY3JpbWluYW50IDwgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciB0MSA9ICgtYiArIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gIHZhciB0TWluID0gTWF0aC5taW4odDEsIHQyKTtcbiAgdmFyIHRNYXggPSBNYXRoLm1heCh0MSwgdDIpO1xuICB2YXIgaW5SYW5nZVBhcmFtcyA9IFtdO1xuXG4gIGlmICh0TWluID49IDAgJiYgdE1pbiA8PSAxKSB7XG4gICAgaW5SYW5nZVBhcmFtcy5wdXNoKHRNaW4pO1xuICB9XG5cbiAgaWYgKHRNYXggPj0gMCAmJiB0TWF4IDw9IDEpIHtcbiAgICBpblJhbmdlUGFyYW1zLnB1c2godE1heCk7XG4gIH1cblxuICBpZiAoaW5SYW5nZVBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgbmVhckludGVyc2VjdGlvblggPSBpblJhbmdlUGFyYW1zWzBdICogZFswXSArIHgxO1xuICB2YXIgbmVhckludGVyc2VjdGlvblkgPSBpblJhbmdlUGFyYW1zWzBdICogZFsxXSArIHkxO1xuXG4gIGlmIChpblJhbmdlUGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoaW5SYW5nZVBhcmFtc1swXSA9PSBpblJhbmdlUGFyYW1zWzFdKSB7XG4gICAgICByZXR1cm4gW25lYXJJbnRlcnNlY3Rpb25YLCBuZWFySW50ZXJzZWN0aW9uWV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBmYXJJbnRlcnNlY3Rpb25YID0gaW5SYW5nZVBhcmFtc1sxXSAqIGRbMF0gKyB4MTtcbiAgICAgIHZhciBmYXJJbnRlcnNlY3Rpb25ZID0gaW5SYW5nZVBhcmFtc1sxXSAqIGRbMV0gKyB5MTtcbiAgICAgIHJldHVybiBbbmVhckludGVyc2VjdGlvblgsIG5lYXJJbnRlcnNlY3Rpb25ZLCBmYXJJbnRlcnNlY3Rpb25YLCBmYXJJbnRlcnNlY3Rpb25ZXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtuZWFySW50ZXJzZWN0aW9uWCwgbmVhckludGVyc2VjdGlvblldO1xuICB9XG59O1xudmFyIG1pZE9mVGhyZWUgPSBmdW5jdGlvbiBtaWRPZlRocmVlKGEsIGIsIGMpIHtcbiAgaWYgKGIgPD0gYSAmJiBhIDw9IGMgfHwgYyA8PSBhICYmIGEgPD0gYikge1xuICAgIHJldHVybiBhO1xuICB9IGVsc2UgaWYgKGEgPD0gYiAmJiBiIDw9IGMgfHwgYyA8PSBiICYmIGIgPD0gYSkge1xuICAgIHJldHVybiBiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjO1xuICB9XG59OyAvLyAoeDEseTEpPT4oeDIseTIpIGludGVyc2VjdCB3aXRoICh4Myx5Myk9Pih4NCx5NClcblxudmFyIGZpbml0ZUxpbmVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gZmluaXRlTGluZXNJbnRlcnNlY3QoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBpbmZpbml0ZUxpbmVzKSB7XG4gIHZhciBkeDEzID0geDEgLSB4MztcbiAgdmFyIGR4MjEgPSB4MiAtIHgxO1xuICB2YXIgZHg0MyA9IHg0IC0geDM7XG4gIHZhciBkeTEzID0geTEgLSB5MztcbiAgdmFyIGR5MjEgPSB5MiAtIHkxO1xuICB2YXIgZHk0MyA9IHk0IC0geTM7XG4gIHZhciB1YV90ID0gZHg0MyAqIGR5MTMgLSBkeTQzICogZHgxMztcbiAgdmFyIHViX3QgPSBkeDIxICogZHkxMyAtIGR5MjEgKiBkeDEzO1xuICB2YXIgdV9iID0gZHk0MyAqIGR4MjEgLSBkeDQzICogZHkyMTtcblxuICBpZiAodV9iICE9PSAwKSB7XG4gICAgdmFyIHVhID0gdWFfdCAvIHVfYjtcbiAgICB2YXIgdWIgPSB1Yl90IC8gdV9iO1xuICAgIHZhciBmbHB0VGhyZXNob2xkID0gMC4wMDE7XG5cbiAgICB2YXIgX21pbiA9IDAgLSBmbHB0VGhyZXNob2xkO1xuXG4gICAgdmFyIF9tYXggPSAxICsgZmxwdFRocmVzaG9sZDtcblxuICAgIGlmIChfbWluIDw9IHVhICYmIHVhIDw9IF9tYXggJiYgX21pbiA8PSB1YiAmJiB1YiA8PSBfbWF4KSB7XG4gICAgICByZXR1cm4gW3gxICsgdWEgKiBkeDIxLCB5MSArIHVhICogZHkyMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaW5maW5pdGVMaW5lcykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3gxICsgdWEgKiBkeDIxLCB5MSArIHVhICogZHkyMV07XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh1YV90ID09PSAwIHx8IHViX3QgPT09IDApIHtcbiAgICAgIC8vIFBhcmFsbGVsLCBjb2luY2lkZW50IGxpbmVzLiBDaGVjayBpZiBvdmVybGFwXG4gICAgICAvLyBDaGVjayBlbmRwb2ludCBvZiBzZWNvbmQgbGluZVxuICAgICAgaWYgKG1pZE9mVGhyZWUoeDEsIHgyLCB4NCkgPT09IHg0KSB7XG4gICAgICAgIHJldHVybiBbeDQsIHk0XTtcbiAgICAgIH0gLy8gQ2hlY2sgc3RhcnQgcG9pbnQgb2Ygc2Vjb25kIGxpbmVcblxuXG4gICAgICBpZiAobWlkT2ZUaHJlZSh4MSwgeDIsIHgzKSA9PT0geDMpIHtcbiAgICAgICAgcmV0dXJuIFt4MywgeTNdO1xuICAgICAgfSAvLyBFbmRwb2ludCBvZiBmaXJzdCBsaW5lXG5cblxuICAgICAgaWYgKG1pZE9mVGhyZWUoeDMsIHg0LCB4MikgPT09IHgyKSB7XG4gICAgICAgIHJldHVybiBbeDIsIHkyXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQYXJhbGxlbCwgbm9uLWNvaW5jaWRlbnRcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07IC8vIG1hdGgucG9seWdvbkludGVyc2VjdExpbmUoIHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcgKVxuLy8gaW50ZXJzZWN0IGEgbm9kZSBwb2x5Z29uIChwdHMgdHJhbnNmb3JtZWQpXG4vL1xuLy8gbWF0aC5wb2x5Z29uSW50ZXJzZWN0TGluZSggeCwgeSwgYmFzZVBvaW50cywgY2VudGVyWCwgY2VudGVyWSApXG4vLyBpbnRlcnNlY3QgdGhlIHBvaW50cyAobm8gdHJhbnNmb3JtKVxuXG52YXIgcG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiBwb2x5Z29uSW50ZXJzZWN0TGluZSh4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nKSB7XG4gIHZhciBpbnRlcnNlY3Rpb25zID0gW107XG4gIHZhciBpbnRlcnNlY3Rpb247XG4gIHZhciB0cmFuc2Zvcm1lZFBvaW50cyA9IG5ldyBBcnJheShiYXNlUG9pbnRzLmxlbmd0aCk7XG4gIHZhciBkb1RyYW5zZm9ybSA9IHRydWU7XG5cbiAgaWYgKHdpZHRoID09IG51bGwpIHtcbiAgICBkb1RyYW5zZm9ybSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIHBvaW50cztcblxuICBpZiAoZG9UcmFuc2Zvcm0pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybWVkUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDJdID0gYmFzZVBvaW50c1tpICogMl0gKiB3aWR0aCArIGNlbnRlclg7XG4gICAgICB0cmFuc2Zvcm1lZFBvaW50c1tpICogMiArIDFdID0gYmFzZVBvaW50c1tpICogMiArIDFdICogaGVpZ2h0ICsgY2VudGVyWTtcbiAgICB9XG5cbiAgICBpZiAocGFkZGluZyA+IDApIHtcbiAgICAgIHZhciBleHBhbmRlZExpbmVTZXQgPSBleHBhbmRQb2x5Z29uKHRyYW5zZm9ybWVkUG9pbnRzLCAtcGFkZGluZyk7XG4gICAgICBwb2ludHMgPSBqb2luTGluZXMoZXhwYW5kZWRMaW5lU2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRzID0gdHJhbnNmb3JtZWRQb2ludHM7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBvaW50cyA9IGJhc2VQb2ludHM7XG4gIH1cblxuICB2YXIgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFk7XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcG9pbnRzLmxlbmd0aCAvIDI7IF9pMisrKSB7XG4gICAgY3VycmVudFggPSBwb2ludHNbX2kyICogMl07XG4gICAgY3VycmVudFkgPSBwb2ludHNbX2kyICogMiArIDFdO1xuXG4gICAgaWYgKF9pMiA8IHBvaW50cy5sZW5ndGggLyAyIC0gMSkge1xuICAgICAgbmV4dFggPSBwb2ludHNbKF9pMiArIDEpICogMl07XG4gICAgICBuZXh0WSA9IHBvaW50c1soX2kyICsgMSkgKiAyICsgMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRYID0gcG9pbnRzWzBdO1xuICAgICAgbmV4dFkgPSBwb2ludHNbMV07XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFkpO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbi5sZW5ndGggIT09IDApIHtcbiAgICAgIGludGVyc2VjdGlvbnMucHVzaChpbnRlcnNlY3Rpb25bMF0sIGludGVyc2VjdGlvblsxXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGludGVyc2VjdGlvbnM7XG59O1xudmFyIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcpIHtcbiAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcbiAgdmFyIGludGVyc2VjdGlvbjtcbiAgdmFyIGxpbmVzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgdmFyIGhhbGZXID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZVBvaW50cy5sZW5ndGggLyA0OyBpKyspIHtcbiAgICB2YXIgc291cmNlVXYgPSB2b2lkIDAsXG4gICAgICAgIGRlc3RVdiA9IHZvaWQgMDtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzb3VyY2VVdiA9IGJhc2VQb2ludHMubGVuZ3RoIC0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlVXYgPSBpICogNCAtIDI7XG4gICAgfVxuXG4gICAgZGVzdFV2ID0gaSAqIDQgKyAyO1xuICAgIHZhciBweCA9IGNlbnRlclggKyBoYWxmVyAqIGJhc2VQb2ludHNbaSAqIDRdO1xuICAgIHZhciBweSA9IGNlbnRlclkgKyBoYWxmSCAqIGJhc2VQb2ludHNbaSAqIDQgKyAxXTtcbiAgICB2YXIgY29zVGhldGEgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl0gKiBiYXNlUG9pbnRzW2Rlc3RVdl0gLSBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBiYXNlUG9pbnRzW2Rlc3RVdiArIDFdO1xuICAgIHZhciBvZmZzZXQgPSBjb3JuZXJSYWRpdXMgLyBNYXRoLnRhbihNYXRoLmFjb3MoY29zVGhldGEpIC8gMik7XG4gICAgdmFyIGNwMHggPSBweCAtIG9mZnNldCAqIGJhc2VQb2ludHNbc291cmNlVXZdO1xuICAgIHZhciBjcDB5ID0gcHkgLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2XTtcbiAgICB2YXIgY3AxeSA9IHB5ICsgb2Zmc2V0ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBsaW5lc1tiYXNlUG9pbnRzLmxlbmd0aCAtIDJdID0gY3AweDtcbiAgICAgIGxpbmVzW2Jhc2VQb2ludHMubGVuZ3RoIC0gMV0gPSBjcDB5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lc1tpICogNCAtIDJdID0gY3AweDtcbiAgICAgIGxpbmVzW2kgKiA0IC0gMV0gPSBjcDB5O1xuICAgIH1cblxuICAgIGxpbmVzW2kgKiA0XSA9IGNwMXg7XG4gICAgbGluZXNbaSAqIDQgKyAxXSA9IGNwMXk7XG4gICAgdmFyIG9ydGh4ID0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgIHZhciBvcnRoeSA9IC1iYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY29zQWxwaGEgPSBvcnRoeCAqIGJhc2VQb2ludHNbZGVzdFV2XSArIG9ydGh5ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgIGlmIChjb3NBbHBoYSA8IDApIHtcbiAgICAgIG9ydGh4ICo9IC0xO1xuICAgICAgb3J0aHkgKj0gLTE7XG4gICAgfVxuXG4gICAgdmFyIGN4ID0gY3AweCArIG9ydGh4ICogY29ybmVyUmFkaXVzO1xuICAgIHZhciBjeSA9IGNwMHkgKyBvcnRoeSAqIGNvcm5lclJhZGl1cztcbiAgICBpbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIGNlbnRlclgsIGNlbnRlclksIGN4LCBjeSwgY29ybmVyUmFkaXVzKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0aW9uWzBdLCBpbnRlcnNlY3Rpb25bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGxpbmVzLmxlbmd0aCAvIDQ7IF9pMysrKSB7XG4gICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgbGluZXNbX2kzICogNF0sIGxpbmVzW19pMyAqIDQgKyAxXSwgbGluZXNbX2kzICogNCArIDJdLCBsaW5lc1tfaTMgKiA0ICsgM10sIGZhbHNlKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0aW9uWzBdLCBpbnRlcnNlY3Rpb25bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDIpIHtcbiAgICB2YXIgbG93ZXN0SW50ZXJzZWN0aW9uID0gW2ludGVyc2VjdGlvbnNbMF0sIGludGVyc2VjdGlvbnNbMV1dO1xuICAgIHZhciBsb3dlc3RTcXVhcmVkRGlzdGFuY2UgPSBNYXRoLnBvdyhsb3dlc3RJbnRlcnNlY3Rpb25bMF0gLSB4LCAyKSArIE1hdGgucG93KGxvd2VzdEludGVyc2VjdGlvblsxXSAtIHksIDIpO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMTsgX2k0IDwgaW50ZXJzZWN0aW9ucy5sZW5ndGggLyAyOyBfaTQrKykge1xuICAgICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMl0gLSB4LCAyKSArIE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdIC0geSwgMik7XG5cbiAgICAgIGlmIChzcXVhcmVkRGlzdGFuY2UgPD0gbG93ZXN0U3F1YXJlZERpc3RhbmNlKSB7XG4gICAgICAgIGxvd2VzdEludGVyc2VjdGlvblswXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMl07XG4gICAgICAgIGxvd2VzdEludGVyc2VjdGlvblsxXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdO1xuICAgICAgICBsb3dlc3RTcXVhcmVkRGlzdGFuY2UgPSBzcXVhcmVkRGlzdGFuY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvd2VzdEludGVyc2VjdGlvbjtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnNlY3Rpb25zO1xufTtcbnZhciBzaG9ydGVuSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3Rpb24sIG9mZnNldCwgYW1vdW50KSB7XG4gIHZhciBkaXNwID0gW2ludGVyc2VjdGlvblswXSAtIG9mZnNldFswXSwgaW50ZXJzZWN0aW9uWzFdIC0gb2Zmc2V0WzFdXTtcbiAgdmFyIGxlbmd0aCA9IE1hdGguc3FydChkaXNwWzBdICogZGlzcFswXSArIGRpc3BbMV0gKiBkaXNwWzFdKTtcbiAgdmFyIGxlblJhdGlvID0gKGxlbmd0aCAtIGFtb3VudCkgLyBsZW5ndGg7XG5cbiAgaWYgKGxlblJhdGlvIDwgMCkge1xuICAgIGxlblJhdGlvID0gMC4wMDAwMTtcbiAgfVxuXG4gIHJldHVybiBbb2Zmc2V0WzBdICsgbGVuUmF0aW8gKiBkaXNwWzBdLCBvZmZzZXRbMV0gKyBsZW5SYXRpbyAqIGRpc3BbMV1dO1xufTtcbnZhciBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUgPSBmdW5jdGlvbiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICB2YXIgcG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyhzaWRlcywgcm90YXRpb25SYWRpYW5zKTtcbiAgcG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHBvaW50cyk7XG4gIHJldHVybiBwb2ludHM7XG59O1xudmFyIGZpdFBvbHlnb25Ub1NxdWFyZSA9IGZ1bmN0aW9uIGZpdFBvbHlnb25Ub1NxdWFyZShwb2ludHMpIHtcbiAgdmFyIHgsIHk7XG4gIHZhciBzaWRlcyA9IHBvaW50cy5sZW5ndGggLyAyO1xuICB2YXIgbWluWCA9IEluZmluaXR5LFxuICAgICAgbWluWSA9IEluZmluaXR5LFxuICAgICAgbWF4WCA9IC1JbmZpbml0eSxcbiAgICAgIG1heFkgPSAtSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWRlczsgaSsrKSB7XG4gICAgeCA9IHBvaW50c1syICogaV07XG4gICAgeSA9IHBvaW50c1syICogaSArIDFdO1xuICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcbiAgfSAvLyBzdHJldGNoIGZhY3RvcnNcblxuXG4gIHZhciBzeCA9IDIgLyAobWF4WCAtIG1pblgpO1xuICB2YXIgc3kgPSAyIC8gKG1heFkgLSBtaW5ZKTtcblxuICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBzaWRlczsgX2k1KyspIHtcbiAgICB4ID0gcG9pbnRzWzIgKiBfaTVdID0gcG9pbnRzWzIgKiBfaTVdICogc3g7XG4gICAgeSA9IHBvaW50c1syICogX2k1ICsgMV0gPSBwb2ludHNbMiAqIF9pNSArIDFdICogc3k7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHgpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4KTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkpO1xuICB9XG5cbiAgaWYgKG1pblkgPCAtMSkge1xuICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHNpZGVzOyBfaTYrKykge1xuICAgICAgeSA9IHBvaW50c1syICogX2k2ICsgMV0gPSBwb2ludHNbMiAqIF9pNiArIDFdICsgKC0xIC0gbWluWSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn07XG52YXIgZ2VuZXJhdGVVbml0TmdvblBvaW50cyA9IGZ1bmN0aW9uIGdlbmVyYXRlVW5pdE5nb25Qb2ludHMoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICB2YXIgaW5jcmVtZW50ID0gMS4wIC8gc2lkZXMgKiAyICogTWF0aC5QSTtcbiAgdmFyIHN0YXJ0QW5nbGUgPSBzaWRlcyAlIDIgPT09IDAgPyBNYXRoLlBJIC8gMi4wICsgaW5jcmVtZW50IC8gMi4wIDogTWF0aC5QSSAvIDIuMDtcbiAgc3RhcnRBbmdsZSArPSByb3RhdGlvblJhZGlhbnM7XG4gIHZhciBwb2ludHMgPSBuZXcgQXJyYXkoc2lkZXMgKiAyKTtcbiAgdmFyIGN1cnJlbnRBbmdsZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGVzOyBpKyspIHtcbiAgICBjdXJyZW50QW5nbGUgPSBpICogaW5jcmVtZW50ICsgc3RhcnRBbmdsZTtcbiAgICBwb2ludHNbMiAqIGldID0gTWF0aC5jb3MoY3VycmVudEFuZ2xlKTsgLy8geFxuXG4gICAgcG9pbnRzWzIgKiBpICsgMV0gPSBNYXRoLnNpbigtY3VycmVudEFuZ2xlKTsgLy8geVxuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn07IC8vIFNldCB0aGUgZGVmYXVsdCByYWRpdXMsIHVubGVzcyBoYWxmIG9mIHdpZHRoIG9yIGhlaWdodCBpcyBzbWFsbGVyIHRoYW4gZGVmYXVsdFxuXG52YXIgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMgPSBmdW5jdGlvbiBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KSB7XG4gIHJldHVybiBNYXRoLm1pbih3aWR0aCAvIDQsIGhlaWdodCAvIDQsIDgpO1xufTsgLy8gU2V0IHRoZSBkZWZhdWx0IHJhZGl1c1xuXG52YXIgZ2V0Um91bmRQb2x5Z29uUmFkaXVzID0gZnVuY3Rpb24gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpIHtcbiAgcmV0dXJuIE1hdGgubWluKHdpZHRoIC8gMTAsIGhlaWdodCAvIDEwLCA4KTtcbn07XG52YXIgZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoID0gZnVuY3Rpb24gZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoKCkge1xuICByZXR1cm4gODtcbn07XG52YXIgYmV6aWVyUHRzVG9RdWFkQ29lZmYgPSBmdW5jdGlvbiBiZXppZXJQdHNUb1F1YWRDb2VmZihwMCwgcDEsIHAyKSB7XG4gIHJldHVybiBbcDAgLSAyICogcDEgKyBwMiwgMiAqIChwMSAtIHAwKSwgcDBdO1xufTsgLy8gZ2V0IGN1cnZlIHdpZHRoLCBoZWlnaHQsIGFuZCBjb250cm9sIHBvaW50IHBvc2l0aW9uIG9mZnNldHMgYXMgYSBwZXJjZW50YWdlIG9mIG5vZGUgaGVpZ2h0IC8gd2lkdGhcblxudmFyIGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzID0gZnVuY3Rpb24gZ2V0QmFycmVsQ3VydmVDb25zdGFudHMod2lkdGgsIGhlaWdodCkge1xuICByZXR1cm4ge1xuICAgIGhlaWdodE9mZnNldDogTWF0aC5taW4oMTUsIDAuMDUgKiBoZWlnaHQpLFxuICAgIHdpZHRoT2Zmc2V0OiBNYXRoLm1pbigxMDAsIDAuMjUgKiB3aWR0aCksXG4gICAgY3RybFB0T2Zmc2V0UGN0OiAwLjA1XG4gIH07XG59O1xuXG52YXIgcGFnZVJhbmtEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgZGFtcGluZ0ZhY3RvcjogMC44LFxuICBwcmVjaXNpb246IDAuMDAwMDAxLFxuICBpdGVyYXRpb25zOiAyMDAsXG4gIHdlaWdodDogZnVuY3Rpb24gd2VpZ2h0KGVkZ2UpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufSk7XG52YXIgZWxlc2ZuJDcgPSB7XG4gIHBhZ2VSYW5rOiBmdW5jdGlvbiBwYWdlUmFuayhvcHRpb25zKSB7XG4gICAgdmFyIF9wYWdlUmFua0RlZmF1bHRzID0gcGFnZVJhbmtEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgZGFtcGluZ0ZhY3RvciA9IF9wYWdlUmFua0RlZmF1bHRzLmRhbXBpbmdGYWN0b3IsXG4gICAgICAgIHByZWNpc2lvbiA9IF9wYWdlUmFua0RlZmF1bHRzLnByZWNpc2lvbixcbiAgICAgICAgaXRlcmF0aW9ucyA9IF9wYWdlUmFua0RlZmF1bHRzLml0ZXJhdGlvbnMsXG4gICAgICAgIHdlaWdodCA9IF9wYWdlUmFua0RlZmF1bHRzLndlaWdodDtcblxuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICB2YXIgbnVtTm9kZXNTcWQgPSBudW1Ob2RlcyAqIG51bU5vZGVzO1xuICAgIHZhciBudW1FZGdlcyA9IGVkZ2VzLmxlbmd0aDsgLy8gQ29uc3RydWN0IHRyYW5zcG9zZWQgYWRqYWNlbmN5IG1hdHJpeFxuICAgIC8vIEZpcnN0IGxldHMgaGF2ZSBhIHplcm9lZCBtYXRyaXggb2YgdGhlIHJpZ2h0IHNpemVcbiAgICAvLyBXZSdsbCBhbHNvIGtlZXAgdHJhY2sgb2YgdGhlIHN1bSBvZiBlYWNoIGNvbHVtblxuXG4gICAgdmFyIG1hdHJpeCA9IG5ldyBBcnJheShudW1Ob2Rlc1NxZCk7XG4gICAgdmFyIGNvbHVtblN1bSA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9iID0gKDEgLSBkYW1waW5nRmFjdG9yKSAvIG51bU5vZGVzOyAvLyBDcmVhdGUgbnVsbCBtYXRyaXhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICAgIHZhciBuID0gaSAqIG51bU5vZGVzICsgajtcbiAgICAgICAgbWF0cml4W25dID0gMDtcbiAgICAgIH1cblxuICAgICAgY29sdW1uU3VtW2ldID0gMDtcbiAgICB9IC8vIE5vdywgcHJvY2VzcyBlZGdlc1xuXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbnVtRWRnZXM7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbX2ldO1xuICAgICAgdmFyIHNyY0lkID0gZWRnZS5kYXRhKCdzb3VyY2UnKTtcbiAgICAgIHZhciB0Z3RJZCA9IGVkZ2UuZGF0YSgndGFyZ2V0Jyk7IC8vIERvbid0IGluY2x1ZGUgbG9vcHMgaW4gdGhlIG1hdHJpeFxuXG4gICAgICBpZiAoc3JjSWQgPT09IHRndElkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcyA9IG5vZGVzLmluZGV4T2ZJZChzcmNJZCk7XG4gICAgICB2YXIgdCA9IG5vZGVzLmluZGV4T2ZJZCh0Z3RJZCk7XG4gICAgICB2YXIgdyA9IHdlaWdodChlZGdlKTtcblxuICAgICAgdmFyIF9uID0gdCAqIG51bU5vZGVzICsgczsgLy8gVXBkYXRlIG1hdHJpeFxuXG5cbiAgICAgIG1hdHJpeFtfbl0gKz0gdzsgLy8gVXBkYXRlIGNvbHVtbiBzdW1cblxuICAgICAgY29sdW1uU3VtW3NdICs9IHc7XG4gICAgfSAvLyBBZGQgYWRkaXRpb25hbCBwcm9iYWJpbGl0eSBiYXNlZCBvbiBkYW1waW5nIGZhY3RvclxuICAgIC8vIEFsc28sIHRha2UgaW50byBhY2NvdW50IGNvbHVtbnMgdGhhdCBoYXZlIHN1bSA9IDBcblxuXG4gICAgdmFyIHAgPSAxLjAgLyBudW1Ob2RlcyArIGFkZGl0aW9uYWxQcm9iOyAvLyBTaG9ydGhhbmRcbiAgICAvLyBUcmF2ZXJzZSBtYXRyaXgsIGNvbHVtbiBieSBjb2x1bW5cblxuICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBudW1Ob2RlczsgX2orKykge1xuICAgICAgaWYgKGNvbHVtblN1bVtfal0gPT09IDApIHtcbiAgICAgICAgLy8gTm8gJ2xpbmtzJyBvdXQgZnJvbSBub2RlIGp0aCwgYXNzdW1lIGVxdWFsIHByb2JhYmlsaXR5IGZvciBlYWNoIHBvc3NpYmxlIG5vZGVcbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbnVtTm9kZXM7IF9pMisrKSB7XG4gICAgICAgICAgdmFyIF9uMiA9IF9pMiAqIG51bU5vZGVzICsgX2o7XG5cbiAgICAgICAgICBtYXRyaXhbX24yXSA9IHA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vZGUganRoIGhhcyBvdXRnb2luZyBsaW5rLCBjb21wdXRlIG5vcm1hbGl6ZWQgcHJvYmFiaWxpdGllc1xuICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBudW1Ob2RlczsgX2kzKyspIHtcbiAgICAgICAgICB2YXIgX24zID0gX2kzICogbnVtTm9kZXMgKyBfajtcblxuICAgICAgICAgIG1hdHJpeFtfbjNdID0gbWF0cml4W19uM10gLyBjb2x1bW5TdW1bX2pdICsgYWRkaXRpb25hbFByb2I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIENvbXB1dGUgZG9taW5hbnQgZWlnZW52ZWN0b3IgdXNpbmcgcG93ZXIgbWV0aG9kXG5cblxuICAgIHZhciBlaWdlbnZlY3RvciA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgdmFyIHRlbXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBwcmV2aW91czsgLy8gU3RhcnQgd2l0aCBhIHZlY3RvciBvZiBhbGwgMSdzXG4gICAgLy8gQWxzbywgaW5pdGlhbGl6ZSBhIG51bGwgdmVjdG9yIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBzaG9ydGhhbmRcblxuICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bU5vZGVzOyBfaTQrKykge1xuICAgICAgZWlnZW52ZWN0b3JbX2k0XSA9IDE7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaXRlciA9IDA7IGl0ZXIgPCBpdGVyYXRpb25zOyBpdGVyKyspIHtcbiAgICAgIC8vIFRlbXAgYXJyYXkgd2l0aCBhbGwgMCdzXG4gICAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBudW1Ob2RlczsgX2k1KyspIHtcbiAgICAgICAgdGVtcFtfaTVdID0gMDtcbiAgICAgIH0gLy8gTXVsdGlwbHkgbWF0cml4IHdpdGggcHJldmlvdXMgcmVzdWx0XG5cblxuICAgICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbnVtTm9kZXM7IF9pNisrKSB7XG4gICAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IG51bU5vZGVzOyBfajIrKykge1xuICAgICAgICAgIHZhciBfbjQgPSBfaTYgKiBudW1Ob2RlcyArIF9qMjtcblxuICAgICAgICAgIHRlbXBbX2k2XSArPSBtYXRyaXhbX240XSAqIGVpZ2VudmVjdG9yW19qMl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5QbGFjZVN1bU5vcm1hbGl6ZSh0ZW1wKTtcbiAgICAgIHByZXZpb3VzID0gZWlnZW52ZWN0b3I7XG4gICAgICBlaWdlbnZlY3RvciA9IHRlbXA7XG4gICAgICB0ZW1wID0gcHJldmlvdXM7XG4gICAgICB2YXIgZGlmZiA9IDA7IC8vIENvbXB1dGUgZGlmZmVyZW5jZSAoc3F1YXJlZCBtb2R1bGUpIG9mIGJvdGggdmVjdG9yc1xuXG4gICAgICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCBudW1Ob2RlczsgX2k3KyspIHtcbiAgICAgICAgdmFyIGRlbHRhID0gcHJldmlvdXNbX2k3XSAtIGVpZ2VudmVjdG9yW19pN107XG4gICAgICAgIGRpZmYgKz0gZGVsdGEgKiBkZWx0YTtcbiAgICAgIH0gLy8gSWYgZGlmZmVyZW5jZSBpcyBsZXNzIHRoYW4gdGhlIGRlc2lyZWQgdGhyZXNob2xkLCBzdG9wIGl0ZXJhdGluZ1xuXG5cbiAgICAgIGlmIChkaWZmIDwgcHJlY2lzaW9uKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gQ29uc3RydWN0IHJlc3VsdFxuXG5cbiAgICB2YXIgcmVzID0ge1xuICAgICAgcmFuazogZnVuY3Rpb24gcmFuayhub2RlKSB7XG4gICAgICAgIG5vZGUgPSBjeS5jb2xsZWN0aW9uKG5vZGUpWzBdO1xuICAgICAgICByZXR1cm4gZWlnZW52ZWN0b3Jbbm9kZXMuaW5kZXhPZihub2RlKV07XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcmVzO1xuICB9IC8vIHBhZ2VSYW5rXG5cbn07IC8vIGVsZXNmblxuXG52YXIgZGVmYXVsdHMkMSA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2UsXG4gIGFscGhhOiAwXG59KTtcbnZhciBlbGVzZm4kOCA9IHtcbiAgZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWQ6IGZ1bmN0aW9uIGRlZ3JlZUNlbnRyYWxpdHlOb3JtYWxpemVkKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHMkMShvcHRpb25zKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcblxuICAgIGlmICghb3B0aW9ucy5kaXJlY3RlZCkge1xuICAgICAgdmFyIGRlZ3JlZXMgPSB7fTtcbiAgICAgIHZhciBtYXhEZWdyZWUgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTsgLy8gYWRkIGN1cnJlbnQgbm9kZSB0byB0aGUgY3VycmVudCBvcHRpb25zIG9iamVjdCBhbmQgY2FsbCBkZWdyZWVDZW50cmFsaXR5XG5cbiAgICAgICAgb3B0aW9ucy5yb290ID0gbm9kZTtcbiAgICAgICAgdmFyIGN1cnJEZWdyZWUgPSB0aGlzLmRlZ3JlZUNlbnRyYWxpdHkob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG1heERlZ3JlZSA8IGN1cnJEZWdyZWUuZGVncmVlKSB7XG4gICAgICAgICAgbWF4RGVncmVlID0gY3VyckRlZ3JlZS5kZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWVzW25vZGUuaWQoKV0gPSBjdXJyRGVncmVlLmRlZ3JlZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVncmVlOiBmdW5jdGlvbiBkZWdyZWUobm9kZSkge1xuICAgICAgICAgIGlmIChtYXhEZWdyZWUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdHJpbmcobm9kZSkpIHtcbiAgICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICAgIG5vZGUgPSBjeS5maWx0ZXIobm9kZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heERlZ3JlZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGluZGVncmVlcyA9IHt9O1xuICAgICAgdmFyIG91dGRlZ3JlZXMgPSB7fTtcbiAgICAgIHZhciBtYXhJbmRlZ3JlZSA9IDA7XG4gICAgICB2YXIgbWF4T3V0ZGVncmVlID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG51bU5vZGVzOyBfaSsrKSB7XG4gICAgICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcblxuICAgICAgICB2YXIgaWQgPSBfbm9kZS5pZCgpOyAvLyBhZGQgY3VycmVudCBub2RlIHRvIHRoZSBjdXJyZW50IG9wdGlvbnMgb2JqZWN0IGFuZCBjYWxsIGRlZ3JlZUNlbnRyYWxpdHlcblxuXG4gICAgICAgIG9wdGlvbnMucm9vdCA9IF9ub2RlO1xuXG4gICAgICAgIHZhciBfY3VyckRlZ3JlZSA9IHRoaXMuZGVncmVlQ2VudHJhbGl0eShvcHRpb25zKTtcblxuICAgICAgICBpZiAobWF4SW5kZWdyZWUgPCBfY3VyckRlZ3JlZS5pbmRlZ3JlZSkgbWF4SW5kZWdyZWUgPSBfY3VyckRlZ3JlZS5pbmRlZ3JlZTtcbiAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA8IF9jdXJyRGVncmVlLm91dGRlZ3JlZSkgbWF4T3V0ZGVncmVlID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgICBpbmRlZ3JlZXNbaWRdID0gX2N1cnJEZWdyZWUuaW5kZWdyZWU7XG4gICAgICAgIG91dGRlZ3JlZXNbaWRdID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbmRlZ3JlZTogZnVuY3Rpb24gaW5kZWdyZWUobm9kZSkge1xuICAgICAgICAgIGlmIChtYXhJbmRlZ3JlZSA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RyaW5nKG5vZGUpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIGlzIGEgc2VsZWN0b3Igc3RyaW5nXG4gICAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBpbmRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heEluZGVncmVlO1xuICAgICAgICB9LFxuICAgICAgICBvdXRkZWdyZWU6IGZ1bmN0aW9uIG91dGRlZ3JlZShub2RlKSB7XG4gICAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0cmluZyhub2RlKSkge1xuICAgICAgICAgICAgLy8gZnJvbSBpcyBhIHNlbGVjdG9yIHN0cmluZ1xuICAgICAgICAgICAgbm9kZSA9IGN5LmZpbHRlcihub2RlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb3V0ZGVncmVlc1tub2RlLmlkKCldIC8gbWF4T3V0ZGVncmVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgLy8gZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWRcbiAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIE9wc2FobCdzIHBhcGVyXG4gIC8vIFwiTm9kZSBjZW50cmFsaXR5IGluIHdlaWdodGVkIG5ldHdvcmtzOiBHZW5lcmFsaXppbmcgZGVncmVlIGFuZCBzaG9ydGVzdCBwYXRoc1wiXG4gIC8vIGNoZWNrIHRoZSBoZWFkaW5nIDIgXCJEZWdyZWVcIlxuICBkZWdyZWVDZW50cmFsaXR5OiBmdW5jdGlvbiBkZWdyZWVDZW50cmFsaXR5KG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHMkMShvcHRpb25zKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIGNhbGxpbmdFbGVzID0gdGhpcztcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICByb290ID0gX29wdGlvbnMucm9vdCxcbiAgICAgICAgd2VpZ2h0ID0gX29wdGlvbnMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9vcHRpb25zLmRpcmVjdGVkLFxuICAgICAgICBhbHBoYSA9IF9vcHRpb25zLmFscGhhO1xuICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdO1xuXG4gICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgdmFyIGNvbm5FZGdlcyA9IHJvb3QuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oY2FsbGluZ0VsZXMpO1xuICAgICAgdmFyIGsgPSBjb25uRWRnZXMubGVuZ3RoO1xuICAgICAgdmFyIHMgPSAwOyAvLyBOb3csIHN1bSBlZGdlIHdlaWdodHNcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25uRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcyArPSB3ZWlnaHQoY29ubkVkZ2VzW2ldKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVncmVlOiBNYXRoLnBvdyhrLCAxIC0gYWxwaGEpICogTWF0aC5wb3cocywgYWxwaGEpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWRnZXMgPSByb290LmNvbm5lY3RlZEVkZ2VzKCk7XG4gICAgICB2YXIgaW5jb21pbmcgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0KCkuc2FtZShyb290KSAmJiBjYWxsaW5nRWxlcy5oYXMoZWRnZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBvdXRnb2luZyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5zb3VyY2UoKS5zYW1lKHJvb3QpICYmIGNhbGxpbmdFbGVzLmhhcyhlZGdlKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGtfaW4gPSBpbmNvbWluZy5sZW5ndGg7XG4gICAgICB2YXIga19vdXQgPSBvdXRnb2luZy5sZW5ndGg7XG4gICAgICB2YXIgc19pbiA9IDA7XG4gICAgICB2YXIgc19vdXQgPSAwOyAvLyBOb3csIHN1bSBpbmNvbWluZyBlZGdlIHdlaWdodHNcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgaW5jb21pbmcubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICBzX2luICs9IHdlaWdodChpbmNvbWluZ1tfaTJdKTtcbiAgICAgIH0gLy8gTm93LCBzdW0gb3V0Z29pbmcgZWRnZSB3ZWlnaHRzXG5cblxuICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgb3V0Z29pbmcubGVuZ3RoOyBfaTMrKykge1xuICAgICAgICBzX291dCArPSB3ZWlnaHQob3V0Z29pbmdbX2kzXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGluZGVncmVlOiBNYXRoLnBvdyhrX2luLCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19pbiwgYWxwaGEpLFxuICAgICAgICBvdXRkZWdyZWU6IE1hdGgucG93KGtfb3V0LCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19vdXQsIGFscGhhKVxuICAgICAgfTtcbiAgICB9XG4gIH0gLy8gZGVncmVlQ2VudHJhbGl0eVxuXG59OyAvLyBlbGVzZm5cbi8vIG5pY2UsIHNob3J0IG1hdGhlbWF0aGljYWwgYWxpYXNcblxuZWxlc2ZuJDguZGMgPSBlbGVzZm4kOC5kZWdyZWVDZW50cmFsaXR5O1xuZWxlc2ZuJDguZGNuID0gZWxlc2ZuJDguZGVncmVlQ2VudHJhbGl0eU5vcm1hbGlzZWQgPSBlbGVzZm4kOC5kZWdyZWVDZW50cmFsaXR5Tm9ybWFsaXplZDtcblxudmFyIGRlZmF1bHRzJDIgPSBkZWZhdWx0cyh7XG4gIGhhcm1vbmljOiB0cnVlLFxuICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodCgpIHtcbiAgICByZXR1cm4gMTtcbiAgfSxcbiAgZGlyZWN0ZWQ6IGZhbHNlLFxuICByb290OiBudWxsXG59KTtcbnZhciBlbGVzZm4kOSA9IHtcbiAgY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGl6ZWQ6IGZ1bmN0aW9uIGNsb3NlbmVzc0NlbnRyYWxpdHlOb3JtYWxpemVkKG9wdGlvbnMpIHtcbiAgICB2YXIgX2RlZmF1bHRzID0gZGVmYXVsdHMkMihvcHRpb25zKSxcbiAgICAgICAgaGFybW9uaWMgPSBfZGVmYXVsdHMuaGFybW9uaWMsXG4gICAgICAgIHdlaWdodCA9IF9kZWZhdWx0cy53ZWlnaHQsXG4gICAgICAgIGRpcmVjdGVkID0gX2RlZmF1bHRzLmRpcmVjdGVkO1xuXG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciBjbG9zZW5lc3NlcyA9IHt9O1xuICAgIHZhciBtYXhDbG9zZW5lc3MgPSAwO1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgICB2YXIgZncgPSB0aGlzLmZsb3lkV2Fyc2hhbGwoe1xuICAgICAgd2VpZ2h0OiB3ZWlnaHQsXG4gICAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgICB9KTsgLy8gQ29tcHV0ZSBjbG9zZW5lc3MgZm9yIGV2ZXJ5IG5vZGUgYW5kIGZpbmQgdGhlIG1heGltdW0gY2xvc2VuZXNzXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY3VyckNsb3NlbmVzcyA9IDA7XG4gICAgICB2YXIgbm9kZV9pID0gbm9kZXNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKGkgIT09IGopIHtcbiAgICAgICAgICB2YXIgZCA9IGZ3LmRpc3RhbmNlKG5vZGVfaSwgbm9kZXNbal0pO1xuXG4gICAgICAgICAgaWYgKGhhcm1vbmljKSB7XG4gICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IDEgLyBkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFybW9uaWMpIHtcbiAgICAgICAgY3VyckNsb3NlbmVzcyA9IDEgLyBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4Q2xvc2VuZXNzIDwgY3VyckNsb3NlbmVzcykge1xuICAgICAgICBtYXhDbG9zZW5lc3MgPSBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICBjbG9zZW5lc3Nlc1tub2RlX2kuaWQoKV0gPSBjdXJyQ2xvc2VuZXNzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjbG9zZW5lc3M6IGZ1bmN0aW9uIGNsb3NlbmVzcyhub2RlKSB7XG4gICAgICAgIGlmIChtYXhDbG9zZW5lc3MgPT0gMCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmluZyhub2RlKSkge1xuICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpWzBdLmlkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZnJvbSBpcyBhIG5vZGVcbiAgICAgICAgICBub2RlID0gbm9kZS5pZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsb3NlbmVzc2VzW25vZGVdIC8gbWF4Q2xvc2VuZXNzO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBjbG9zZW5lc3NDZW50cmFsaXR5OiBmdW5jdGlvbiBjbG9zZW5lc3NDZW50cmFsaXR5KG9wdGlvbnMpIHtcbiAgICB2YXIgX2RlZmF1bHRzMiA9IGRlZmF1bHRzJDIob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfZGVmYXVsdHMyLnJvb3QsXG4gICAgICAgIHdlaWdodCA9IF9kZWZhdWx0czIud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0czIuZGlyZWN0ZWQsXG4gICAgICAgIGhhcm1vbmljID0gX2RlZmF1bHRzMi5oYXJtb25pYztcblxuICAgIHJvb3QgPSB0aGlzLmZpbHRlcihyb290KVswXTsgLy8gd2UgbmVlZCBkaXN0YW5jZSBmcm9tIHRoaXMgbm9kZSB0byBldmVyeSBvdGhlciBub2RlXG5cbiAgICB2YXIgZGlqa3N0cmEgPSB0aGlzLmRpamtzdHJhKHtcbiAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICAgIH0pO1xuICAgIHZhciB0b3RhbERpc3RhbmNlID0gMDtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IG5vZGVzW2ldO1xuXG4gICAgICBpZiAoIW4uc2FtZShyb290KSkge1xuICAgICAgICB2YXIgZCA9IGRpamtzdHJhLmRpc3RhbmNlVG8obik7XG5cbiAgICAgICAgaWYgKGhhcm1vbmljKSB7XG4gICAgICAgICAgdG90YWxEaXN0YW5jZSArPSAxIC8gZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b3RhbERpc3RhbmNlICs9IGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFybW9uaWMgPyB0b3RhbERpc3RhbmNlIDogMSAvIHRvdGFsRGlzdGFuY2U7XG4gIH0gLy8gY2xvc2VuZXNzQ2VudHJhbGl0eVxuXG59OyAvLyBlbGVzZm5cbi8vIG5pY2UsIHNob3J0IG1hdGhlbWF0aGljYWwgYWxpYXNcblxuZWxlc2ZuJDkuY2MgPSBlbGVzZm4kOS5jbG9zZW5lc3NDZW50cmFsaXR5O1xuZWxlc2ZuJDkuY2NuID0gZWxlc2ZuJDkuY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGlzZWQgPSBlbGVzZm4kOS5jbG9zZW5lc3NDZW50cmFsaXR5Tm9ybWFsaXplZDtcblxudmFyIGRlZmF1bHRzJDMgPSBkZWZhdWx0cyh7XG4gIHdlaWdodDogbnVsbCxcbiAgZGlyZWN0ZWQ6IGZhbHNlXG59KTtcbnZhciBlbGVzZm4kYSA9IHtcbiAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIHRoZSBwYXBlciBcIk9uIFZhcmlhbnRzIG9mIFNob3J0ZXN0LVBhdGggQmV0d2Vlbm5lc3MgQ2VudHJhbGl0eSBhbmQgdGhlaXIgR2VuZXJpYyBDb21wdXRhdGlvblwiIGJ5IFVscmlrIEJyYW5kZXNcbiAgYmV0d2Vlbm5lc3NDZW50cmFsaXR5OiBmdW5jdGlvbiBiZXR3ZWVubmVzc0NlbnRyYWxpdHkob3B0aW9ucykge1xuICAgIHZhciBfZGVmYXVsdHMgPSBkZWZhdWx0cyQzKG9wdGlvbnMpLFxuICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0cy5kaXJlY3RlZCxcbiAgICAgICAgd2VpZ2h0ID0gX2RlZmF1bHRzLndlaWdodDtcblxuICAgIHZhciB3ZWlnaHRlZCA9IHdlaWdodCAhPSBudWxsO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTsgLy8gc3RhcnRpbmdcblxuICAgIHZhciBWID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBBID0ge307XG4gICAgdmFyIF9DID0ge307XG4gICAgdmFyIG1heCA9IDA7XG4gICAgdmFyIEMgPSB7XG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgICAgICBfQ1trZXldID0gdmFsO1xuXG4gICAgICAgIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgICBtYXggPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIF9DW2tleV07XG4gICAgICB9XG4gICAgfTsgLy8gQSBjb250YWlucyB0aGUgbmVpZ2hib3Job29kcyBvZiBldmVyeSBub2RlXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IFYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2ID0gVltpXTtcbiAgICAgIHZhciB2aWQgPSB2LmlkKCk7XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICBBW3ZpZF0gPSB2Lm91dGdvZXJzKCkubm9kZXMoKTsgLy8gZ2V0IG91dGdvZXJzIG9mIGV2ZXJ5IG5vZGVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFbdmlkXSA9IHYub3Blbk5laWdoYm9yaG9vZCgpLm5vZGVzKCk7IC8vIGdldCBuZWlnaGJvcnMgb2YgZXZlcnkgbm9kZVxuICAgICAgfVxuXG4gICAgICBDLnNldCh2aWQsIDApO1xuICAgIH1cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKHMpIHtcbiAgICAgIHZhciBzaWQgPSBWW3NdLmlkKCk7XG4gICAgICB2YXIgUyA9IFtdOyAvLyBzdGFja1xuXG4gICAgICB2YXIgUCA9IHt9O1xuICAgICAgdmFyIGcgPSB7fTtcbiAgICAgIHZhciBkID0ge307XG4gICAgICB2YXIgUSA9IG5ldyBIZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBkW2FdIC0gZFtiXTtcbiAgICAgIH0pOyAvLyBxdWV1ZVxuICAgICAgLy8gaW5pdCBkaWN0aW9uYXJpZXNcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IFYubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfdmlkID0gVltfaV0uaWQoKTtcblxuICAgICAgICBQW192aWRdID0gW107XG4gICAgICAgIGdbX3ZpZF0gPSAwO1xuICAgICAgICBkW192aWRdID0gSW5maW5pdHk7XG4gICAgICB9XG5cbiAgICAgIGdbc2lkXSA9IDE7IC8vIHNpZ21hXG5cbiAgICAgIGRbc2lkXSA9IDA7IC8vIGRpc3RhbmNlIHRvIHNcblxuICAgICAgUS5wdXNoKHNpZCk7XG5cbiAgICAgIHdoaWxlICghUS5lbXB0eSgpKSB7XG4gICAgICAgIHZhciBfdiA9IFEucG9wKCk7XG5cbiAgICAgICAgUy5wdXNoKF92KTtcblxuICAgICAgICBpZiAod2VpZ2h0ZWQpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IEFbX3ZdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgdyA9IEFbX3ZdW2pdO1xuICAgICAgICAgICAgdmFyIHZFbGUgPSBjeS5nZXRFbGVtZW50QnlJZChfdik7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IHZvaWQgMDtcblxuICAgICAgICAgICAgaWYgKHZFbGUuZWRnZXNUbyh3KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGVkZ2UgPSB2RWxlLmVkZ2VzVG8odylbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlZGdlID0gdy5lZGdlc1RvKHZFbGUpWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgZWRnZVdlaWdodCA9IHdlaWdodChlZGdlKTtcbiAgICAgICAgICAgIHcgPSB3LmlkKCk7XG5cbiAgICAgICAgICAgIGlmIChkW3ddID4gZFtfdl0gKyBlZGdlV2VpZ2h0KSB7XG4gICAgICAgICAgICAgIGRbd10gPSBkW192XSArIGVkZ2VXZWlnaHQ7XG5cbiAgICAgICAgICAgICAgaWYgKFEubm9kZXMuaW5kZXhPZih3KSA8IDApIHtcbiAgICAgICAgICAgICAgICAvL2lmIHcgaXMgbm90IGluIFFcbiAgICAgICAgICAgICAgICBRLnB1c2godyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHBvc2l0aW9uIGlmIHcgaXMgaW4gUVxuICAgICAgICAgICAgICAgIFEudXBkYXRlSXRlbSh3KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGdbd10gPSAwO1xuICAgICAgICAgICAgICBQW3ddID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkW3ddID09IGRbX3ZdICsgZWRnZVdlaWdodCkge1xuICAgICAgICAgICAgICBnW3ddID0gZ1t3XSArIGdbX3ZdO1xuICAgICAgICAgICAgICBQW3ddLnB1c2goX3YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgQVtfdl0ubGVuZ3RoOyBfaisrKSB7XG4gICAgICAgICAgICB2YXIgX3cgPSBBW192XVtfal0uaWQoKTtcblxuICAgICAgICAgICAgaWYgKGRbX3ddID09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgIFEucHVzaChfdyk7XG4gICAgICAgICAgICAgIGRbX3ddID0gZFtfdl0gKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZFtfd10gPT0gZFtfdl0gKyAxKSB7XG4gICAgICAgICAgICAgIGdbX3ddID0gZ1tfd10gKyBnW192XTtcblxuICAgICAgICAgICAgICBQW193XS5wdXNoKF92KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGUgPSB7fTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgVi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIGVbVltfaTJdLmlkKCldID0gMDtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKFMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgX3cyID0gUy5wb3AoKTtcblxuICAgICAgICBmb3IgKHZhciBfajIgPSAwOyBfajIgPCBQW193Ml0ubGVuZ3RoOyBfajIrKykge1xuICAgICAgICAgIHZhciBfdjIgPSBQW193Ml1bX2oyXTtcbiAgICAgICAgICBlW192Ml0gPSBlW192Ml0gKyBnW192Ml0gLyBnW193Ml0gKiAoMSArIGVbX3cyXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3cyICE9IFZbc10uaWQoKSkge1xuICAgICAgICAgIEMuc2V0KF93MiwgQy5nZXQoX3cyKSArIGVbX3cyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPCBWLmxlbmd0aDsgcysrKSB7XG4gICAgICBfbG9vcChzKTtcbiAgICB9XG5cbiAgICB2YXIgcmV0ID0ge1xuICAgICAgYmV0d2Vlbm5lc3M6IGZ1bmN0aW9uIGJldHdlZW5uZXNzKG5vZGUpIHtcbiAgICAgICAgdmFyIGlkID0gY3kuY29sbGVjdGlvbihub2RlKS5pZCgpO1xuICAgICAgICByZXR1cm4gQy5nZXQoaWQpO1xuICAgICAgfSxcbiAgICAgIGJldHdlZW5uZXNzTm9ybWFsaXplZDogZnVuY3Rpb24gYmV0d2Vlbm5lc3NOb3JtYWxpemVkKG5vZGUpIHtcbiAgICAgICAgaWYgKG1heCA9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWQgPSBjeS5jb2xsZWN0aW9uKG5vZGUpLmlkKCk7XG4gICAgICAgIHJldHVybiBDLmdldChpZCkgLyBtYXg7XG4gICAgICB9XG4gICAgfTsgLy8gYWxpYXNcblxuICAgIHJldC5iZXR3ZWVubmVzc05vcm1hbGlzZWQgPSByZXQuYmV0d2Vlbm5lc3NOb3JtYWxpemVkO1xuICAgIHJldHVybiByZXQ7XG4gIH0gLy8gYmV0d2Vlbm5lc3NDZW50cmFsaXR5XG5cbn07IC8vIGVsZXNmblxuLy8gbmljZSwgc2hvcnQgbWF0aGVtYXRoaWNhbCBhbGlhc1xuXG5lbGVzZm4kYS5iYyA9IGVsZXNmbiRhLmJldHdlZW5uZXNzQ2VudHJhbGl0eTtcblxuLy8gSW1wbGVtZW50ZWQgYnkgWm9lIFhpIEB6b2V4aSBmb3IgR1NPQyAyMDE2XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG52YXIgZGVmYXVsdHMkNCA9IGRlZmF1bHRzKHtcbiAgZXhwYW5kRmFjdG9yOiAyLFxuICAvLyBhZmZlY3RzIHRpbWUgb2YgY29tcHV0YXRpb24gYW5kIGNsdXN0ZXIgZ3JhbnVsYXJpdHkgdG8gc29tZSBleHRlbnQ6IE0gKiBNXG4gIGluZmxhdGVGYWN0b3I6IDIsXG4gIC8vIGFmZmVjdHMgY2x1c3RlciBncmFudWxhcml0eSAodGhlIGdyZWF0ZXIgdGhlIHZhbHVlLCB0aGUgbW9yZSBjbHVzdGVycyk6IE0oaSxqKSAvIEUoailcbiAgbXVsdEZhY3RvcjogMSxcbiAgLy8gb3B0aW9uYWwgc2VsZiBsb29wcyBmb3IgZWFjaCBub2RlLiBVc2UgYSBuZXV0cmFsIHZhbHVlIHRvIGltcHJvdmUgY2x1c3RlciBjb21wdXRhdGlvbnMuXG4gIG1heEl0ZXJhdGlvbnM6IDIwLFxuICAvLyBtYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIG9mIHRoZSBNQ0wgYWxnb3JpdGhtIGluIGEgc2luZ2xlIHJ1blxuICBhdHRyaWJ1dGVzOiBbLy8gYXR0cmlidXRlcy9mZWF0dXJlcyB1c2VkIHRvIGdyb3VwIG5vZGVzLCBpZS4gc2ltaWxhcml0eSB2YWx1ZXMgYmV0d2VlbiBub2Rlc1xuICBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9XVxufSk7XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbnZhciBzZXRPcHRpb25zID0gZnVuY3Rpb24gc2V0T3B0aW9ucyhvcHRpb25zKSB7XG4gIHJldHVybiBkZWZhdWx0cyQ0KG9wdGlvbnMpO1xufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG52YXIgZ2V0U2ltaWxhcml0eSA9IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHkoZWRnZSwgYXR0cmlidXRlcykge1xuICB2YXIgdG90YWwgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIHRvdGFsICs9IGF0dHJpYnV0ZXNbaV0oZWRnZSk7XG4gIH1cblxuICByZXR1cm4gdG90YWw7XG59O1xuXG52YXIgYWRkTG9vcHMgPSBmdW5jdGlvbiBhZGRMb29wcyhNLCBuLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBNW2kgKiBuICsgaV0gPSB2YWw7XG4gIH1cbn07XG5cbnZhciBub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoTSwgbikge1xuICB2YXIgc3VtO1xuXG4gIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG47IGNvbCsrKSB7XG4gICAgc3VtID0gMDtcblxuICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IG47IHJvdysrKSB7XG4gICAgICBzdW0gKz0gTVtyb3cgKiBuICsgY29sXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfcm93ID0gMDsgX3JvdyA8IG47IF9yb3crKykge1xuICAgICAgTVtfcm93ICogbiArIGNvbF0gPSBNW19yb3cgKiBuICsgY29sXSAvIHN1bTtcbiAgICB9XG4gIH1cbn07IC8vIFRPRE86IGJsb2NrZWQgbWF0cml4IG11bHRpcGxpY2F0aW9uP1xuXG5cbnZhciBtbXVsdCA9IGZ1bmN0aW9uIG1tdWx0KEEsIEIsIG4pIHtcbiAgdmFyIEMgPSBuZXcgQXJyYXkobiAqIG4pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgIENbaSAqIG4gKyBqXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBuOyBfaisrKSB7XG4gICAgICAgIENbaSAqIG4gKyBfal0gKz0gQVtpICogbiArIGtdICogQltrICogbiArIF9qXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gQztcbn07XG5cbnZhciBleHBhbmQgPSBmdW5jdGlvbiBleHBhbmQoTSwgbiwgZXhwYW5kRmFjdG9yXG4vKiogcG93ZXIgKiovXG4pIHtcbiAgdmFyIF9NID0gTS5zbGljZSgwKTtcblxuICBmb3IgKHZhciBwID0gMTsgcCA8IGV4cGFuZEZhY3RvcjsgcCsrKSB7XG4gICAgTSA9IG1tdWx0KE0sIF9NLCBuKTtcbiAgfVxuXG4gIHJldHVybiBNO1xufTtcblxudmFyIGluZmxhdGUgPSBmdW5jdGlvbiBpbmZsYXRlKE0sIG4sIGluZmxhdGVGYWN0b3Jcbi8qKiByICoqL1xuKSB7XG4gIHZhciBfTSA9IG5ldyBBcnJheShuICogbik7IC8vIE0oaSxqKSBeIGluZmxhdGVQb3dlclxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbjsgaSsrKSB7XG4gICAgX01baV0gPSBNYXRoLnBvdyhNW2ldLCBpbmZsYXRlRmFjdG9yKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZShfTSwgbik7XG4gIHJldHVybiBfTTtcbn07XG5cbnZhciBoYXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXNDb252ZXJnZWQoTSwgX00sIG4yLCByb3VuZEZhY3Rvcikge1xuICAvLyBDaGVjayB0aGF0IGJvdGggbWF0cmljZXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyAoaSxqKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG4yOyBpKyspIHtcbiAgICB2YXIgdjEgPSBNYXRoLnJvdW5kKE1baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7IC8vIHRydW5jYXRlIHRvICdyb3VuZEZhY3RvcicgZGVjaW1hbCBwbGFjZXNcblxuICAgIHZhciB2MiA9IE1hdGgucm91bmQoX01baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7XG5cbiAgICBpZiAodjEgIT09IHYyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG52YXIgYXNzaWduID0gZnVuY3Rpb24gYXNzaWduKE0sIG4sIG5vZGVzLCBjeSkge1xuICB2YXIgY2x1c3RlcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIHZhciBjbHVzdGVyID0gW107XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgLy8gUm93LXdpc2UgYXR0cmFjdG9ycyBhbmQgZWxlbWVudHMgdGhhdCB0aGV5IGF0dHJhY3QgYmVsb25nIGluIHNhbWUgY2x1c3RlclxuICAgICAgaWYgKE1hdGgucm91bmQoTVtpICogbiArIGpdICogMTAwMCkgLyAxMDAwID4gMCkge1xuICAgICAgICBjbHVzdGVyLnB1c2gobm9kZXNbal0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbHVzdGVyLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY2x1c3RlcnMucHVzaChjeS5jb2xsZWN0aW9uKGNsdXN0ZXIpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgaXNEdXBsaWNhdGUgPSBmdW5jdGlvbiBpc0R1cGxpY2F0ZShjMSwgYzIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjMS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghYzJbaV0gfHwgYzFbaV0uaWQoKSAhPT0gYzJbaV0uaWQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIHJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGNsdXN0ZXJzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSAhPSBqICYmIGlzRHVwbGljYXRlKGNsdXN0ZXJzW2ldLCBjbHVzdGVyc1tqXSkpIHtcbiAgICAgICAgY2x1c3RlcnMuc3BsaWNlKGosIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHVzdGVycztcbn07XG5cbnZhciBtYXJrb3ZDbHVzdGVyaW5nID0gZnVuY3Rpb24gbWFya292Q2x1c3RlcmluZyhvcHRpb25zKSB7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTpcblxuICB2YXIgb3B0cyA9IHNldE9wdGlvbnMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICB2YXIgaWQycG9zaXRpb24gPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICB9IC8vIEdlbmVyYXRlIHN0b2NoYXN0aWMgbWF0cml4IE0gZnJvbSBpbnB1dCBncmFwaCBHIChzaG91bGQgYmUgc3ltbWV0cmljL3VuZGlyZWN0ZWQpXG5cblxuICB2YXIgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIG4yID0gbiAqIG47XG5cbiAgdmFyIE0gPSBuZXcgQXJyYXkobjIpLFxuICAgICAgX007XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG4yOyBfaSsrKSB7XG4gICAgTVtfaV0gPSAwO1xuICB9XG5cbiAgZm9yICh2YXIgZSA9IDA7IGUgPCBlZGdlcy5sZW5ndGg7IGUrKykge1xuICAgIHZhciBlZGdlID0gZWRnZXNbZV07XG4gICAgdmFyIF9pMiA9IGlkMnBvc2l0aW9uW2VkZ2Uuc291cmNlKCkuaWQoKV07XG4gICAgdmFyIGogPSBpZDJwb3NpdGlvbltlZGdlLnRhcmdldCgpLmlkKCldO1xuICAgIHZhciBzaW0gPSBnZXRTaW1pbGFyaXR5KGVkZ2UsIG9wdHMuYXR0cmlidXRlcyk7XG4gICAgTVtfaTIgKiBuICsgal0gKz0gc2ltOyAvLyBHIHNob3VsZCBiZSBzeW1tZXRyaWMgYW5kIHVuZGlyZWN0ZWRcblxuICAgIE1baiAqIG4gKyBfaTJdICs9IHNpbTtcbiAgfSAvLyBCZWdpbiBNYXJrb3YgY2x1c3RlciBhbGdvcml0aG1cbiAgLy8gU3RlcCAxOiBBZGQgc2VsZiBsb29wcyB0byBlYWNoIG5vZGUsIGllLiBhZGQgbXVsdEZhY3RvciB0byBtYXRyaXggZGlhZ29uYWxcblxuXG4gIGFkZExvb3BzKE0sIG4sIG9wdHMubXVsdEZhY3Rvcik7IC8vIFN0ZXAgMjogTSA9IG5vcm1hbGl6ZSggTSApO1xuXG4gIG5vcm1hbGl6ZShNLCBuKTtcbiAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOlxuXG4gICAgX00gPSBleHBhbmQoTSwgbiwgb3B0cy5leHBhbmRGYWN0b3IpOyAvLyBTdGVwIDQ6XG5cbiAgICBNID0gaW5mbGF0ZShfTSwgbiwgb3B0cy5pbmZsYXRlRmFjdG9yKTsgLy8gU3RlcCA1OiBjaGVjayB0byBzZWUgaWYgfnN0ZWFkeSBzdGF0ZSBoYXMgYmVlbiByZWFjaGVkXG5cbiAgICBpZiAoIWhhc0NvbnZlcmdlZChNLCBfTSwgbjIsIDQpKSB7XG4gICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH0gLy8gQnVpbGQgY2x1c3RlcnMgZnJvbSBtYXRyaXhcblxuXG4gIHZhciBjbHVzdGVycyA9IGFzc2lnbihNLCBuLCBub2RlcywgY3kpOyAvLyBSZW1vdmUgZHVwbGljYXRlIGNsdXN0ZXJzIGR1ZSB0byBzeW1tZXRyeSBvZiBncmFwaCBhbmQgTSBtYXRyaXhcblxuICBjbHVzdGVycyA9IHJlbW92ZUR1cGxpY2F0ZXMoY2x1c3RlcnMpO1xuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgbWFya292Q2x1c3RlcmluZyQxID0ge1xuICBtYXJrb3ZDbHVzdGVyaW5nOiBtYXJrb3ZDbHVzdGVyaW5nLFxuICBtY2w6IG1hcmtvdkNsdXN0ZXJpbmdcbn07XG5cbi8vIENvbW1vbiBkaXN0YW5jZSBtZXRyaWNzIGZvciBjbHVzdGVyaW5nIGFsZ29yaXRobXNcblxudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICByZXR1cm4geDtcbn07XG5cbnZhciBhYnNEaWZmID0gZnVuY3Rpb24gYWJzRGlmZihwLCBxKSB7XG4gIHJldHVybiBNYXRoLmFicyhxIC0gcCk7XG59O1xuXG52YXIgYWRkQWJzRGlmZiA9IGZ1bmN0aW9uIGFkZEFic0RpZmYodG90YWwsIHAsIHEpIHtcbiAgcmV0dXJuIHRvdGFsICsgYWJzRGlmZihwLCBxKTtcbn07XG5cbnZhciBhZGRTcXVhcmVkRGlmZiA9IGZ1bmN0aW9uIGFkZFNxdWFyZWREaWZmKHRvdGFsLCBwLCBxKSB7XG4gIHJldHVybiB0b3RhbCArIE1hdGgucG93KHEgLSBwLCAyKTtcbn07XG5cbnZhciBzcXJ0ID0gZnVuY3Rpb24gc3FydCh4KSB7XG4gIHJldHVybiBNYXRoLnNxcnQoeCk7XG59O1xuXG52YXIgbWF4QWJzRGlmZiA9IGZ1bmN0aW9uIG1heEFic0RpZmYoY3VycmVudE1heCwgcCwgcSkge1xuICByZXR1cm4gTWF0aC5tYXgoY3VycmVudE1heCwgYWJzRGlmZihwLCBxKSk7XG59O1xuXG52YXIgZ2V0RGlzdGFuY2UgPSBmdW5jdGlvbiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIGluaXQsIHZpc2l0KSB7XG4gIHZhciBwb3N0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiBpZGVudGl0eTtcbiAgdmFyIHJldCA9IGluaXQ7XG4gIHZhciBwLCBxO1xuXG4gIGZvciAodmFyIGRpbSA9IDA7IGRpbSA8IGxlbmd0aDsgZGltKyspIHtcbiAgICBwID0gZ2V0UChkaW0pO1xuICAgIHEgPSBnZXRRKGRpbSk7XG4gICAgcmV0ID0gdmlzaXQocmV0LCBwLCBxKTtcbiAgfVxuXG4gIHJldHVybiBwb3N0KHJldCk7XG59O1xuXG52YXIgZGlzdGFuY2VzID0ge1xuICBldWNsaWRlYW46IGZ1bmN0aW9uIGV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICBpZiAobGVuZ3RoID49IDIpIHtcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZFNxdWFyZWREaWZmLCBzcXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm9yIHNpbmdsZSBhdHRyIGNhc2UsIG1vcmUgZWZmaWNpZW50IHRvIGF2b2lkIHNxcnRcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICAgIH1cbiAgfSxcbiAgc3F1YXJlZEV1Y2xpZGVhbjogZnVuY3Rpb24gc3F1YXJlZEV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAwLCBhZGRTcXVhcmVkRGlmZik7XG4gIH0sXG4gIG1hbmhhdHRhbjogZnVuY3Rpb24gbWFuaGF0dGFuKGxlbmd0aCwgZ2V0UCwgZ2V0USkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICB9LFxuICBtYXg6IGZ1bmN0aW9uIG1heChsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAtSW5maW5pdHksIG1heEFic0RpZmYpO1xuICB9XG59OyAvLyBpbiBjYXNlIHRoZSB1c2VyIGFjY2lkZW50YWxseSBkb2Vzbid0IHVzZSBjYW1lbCBjYXNlXG5cbmRpc3RhbmNlc1snc3F1YXJlZC1ldWNsaWRlYW4nXSA9IGRpc3RhbmNlc1snc3F1YXJlZEV1Y2xpZGVhbiddO1xuZGlzdGFuY2VzWydzcXVhcmVkZXVjbGlkZWFuJ10gPSBkaXN0YW5jZXNbJ3NxdWFyZWRFdWNsaWRlYW4nXTtcbmZ1bmN0aW9uIGNsdXN0ZXJpbmdEaXN0YW5jZSAobWV0aG9kLCBsZW5ndGgsIGdldFAsIGdldFEsIG5vZGVQLCBub2RlUSkge1xuICB2YXIgaW1wbDtcblxuICBpZiAoZm4obWV0aG9kKSkge1xuICAgIGltcGwgPSBtZXRob2Q7XG4gIH0gZWxzZSB7XG4gICAgaW1wbCA9IGRpc3RhbmNlc1ttZXRob2RdIHx8IGRpc3RhbmNlcy5ldWNsaWRlYW47XG4gIH1cblxuICBpZiAobGVuZ3RoID09PSAwICYmIGZuKG1ldGhvZCkpIHtcbiAgICByZXR1cm4gaW1wbChub2RlUCwgbm9kZVEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbXBsKGxlbmd0aCwgZ2V0UCwgZ2V0USwgbm9kZVAsIG5vZGVRKTtcbiAgfVxufVxuXG52YXIgZGVmYXVsdHMkNSA9IGRlZmF1bHRzKHtcbiAgazogMixcbiAgbTogMixcbiAgc2Vuc2l0aXZpdHlUaHJlc2hvbGQ6IDAuMDAwMSxcbiAgZGlzdGFuY2U6ICdldWNsaWRlYW4nLFxuICBtYXhJdGVyYXRpb25zOiAxMCxcbiAgYXR0cmlidXRlczogW10sXG4gIHRlc3RNb2RlOiBmYWxzZSxcbiAgdGVzdENlbnRyb2lkczogbnVsbFxufSk7XG5cbnZhciBzZXRPcHRpb25zJDEgPSBmdW5jdGlvbiBzZXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRlZmF1bHRzJDUob3B0aW9ucyk7XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbnZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdCh0eXBlLCBub2RlLCBjZW50cm9pZCwgYXR0cmlidXRlcywgbW9kZSkge1xuICB2YXIgbm9Ob2RlUCA9IG1vZGUgIT09ICdrTWVkb2lkcyc7XG4gIHZhciBnZXRQID0gbm9Ob2RlUCA/IGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGNlbnRyb2lkW2ldO1xuICB9IDogZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShjZW50cm9pZCk7XG4gIH07XG5cbiAgdmFyIGdldFEgPSBmdW5jdGlvbiBnZXRRKGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShub2RlKTtcbiAgfTtcblxuICB2YXIgbm9kZVAgPSBjZW50cm9pZDtcbiAgdmFyIG5vZGVRID0gbm9kZTtcbiAgcmV0dXJuIGNsdXN0ZXJpbmdEaXN0YW5jZSh0eXBlLCBhdHRyaWJ1dGVzLmxlbmd0aCwgZ2V0UCwgZ2V0USwgbm9kZVAsIG5vZGVRKTtcbn07XG5cbnZhciByYW5kb21DZW50cm9pZHMgPSBmdW5jdGlvbiByYW5kb21DZW50cm9pZHMobm9kZXMsIGssIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIG5kaW0gPSBhdHRyaWJ1dGVzLmxlbmd0aDtcbiAgdmFyIG1pbiA9IG5ldyBBcnJheShuZGltKTtcbiAgdmFyIG1heCA9IG5ldyBBcnJheShuZGltKTtcbiAgdmFyIGNlbnRyb2lkcyA9IG5ldyBBcnJheShrKTtcbiAgdmFyIGNlbnRyb2lkID0gbnVsbDsgLy8gRmluZCBtaW4sIG1heCB2YWx1ZXMgZm9yIGVhY2ggYXR0cmlidXRlIGRpbWVuc2lvblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7XG4gICAgbWluW2ldID0gbm9kZXMubWluKGF0dHJpYnV0ZXNbaV0pLnZhbHVlO1xuICAgIG1heFtpXSA9IG5vZGVzLm1heChhdHRyaWJ1dGVzW2ldKS52YWx1ZTtcbiAgfSAvLyBCdWlsZCBrIGNlbnRyb2lkcywgZWFjaCByZXByZXNlbnRlZCBhcyBhbiBuLWRpbSBmZWF0dXJlIHZlY3RvclxuXG5cbiAgZm9yICh2YXIgYyA9IDA7IGMgPCBrOyBjKyspIHtcbiAgICBjZW50cm9pZCA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5kaW07IF9pKyspIHtcbiAgICAgIGNlbnRyb2lkW19pXSA9IE1hdGgucmFuZG9tKCkgKiAobWF4W19pXSAtIG1pbltfaV0pICsgbWluW19pXTsgLy8gcmFuZG9tIGluaXRpYWwgdmFsdWVcbiAgICB9XG5cbiAgICBjZW50cm9pZHNbY10gPSBjZW50cm9pZDtcbiAgfVxuXG4gIHJldHVybiBjZW50cm9pZHM7XG59O1xuXG52YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiBjbGFzc2lmeShub2RlLCBjZW50cm9pZHMsIGRpc3RhbmNlLCBhdHRyaWJ1dGVzLCB0eXBlKSB7XG4gIHZhciBtaW4gPSBJbmZpbml0eTtcbiAgdmFyIGluZGV4ID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbnRyb2lkcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaXN0ID0gZ2V0RGlzdChkaXN0YW5jZSwgbm9kZSwgY2VudHJvaWRzW2ldLCBhdHRyaWJ1dGVzLCB0eXBlKTtcblxuICAgIGlmIChkaXN0IDwgbWluKSB7XG4gICAgICBtaW4gPSBkaXN0O1xuICAgICAgaW5kZXggPSBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG5cbnZhciBidWlsZENsdXN0ZXIgPSBmdW5jdGlvbiBidWlsZENsdXN0ZXIoY2VudHJvaWQsIG5vZGVzLCBhc3NpZ25tZW50KSB7XG4gIHZhciBjbHVzdGVyID0gW107XG4gIHZhciBub2RlID0gbnVsbDtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgbm9kZSA9IG5vZGVzW25dO1xuXG4gICAgaWYgKGFzc2lnbm1lbnRbbm9kZS5pZCgpXSA9PT0gY2VudHJvaWQpIHtcbiAgICAgIC8vY29uc29sZS5sb2coXCJOb2RlIFwiICsgbm9kZS5pZCgpICsgXCIgaXMgYXNzb2NpYXRlZCB3aXRoIG1lZG9pZCAjOiBcIiArIG0pO1xuICAgICAgY2x1c3Rlci5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHVzdGVyO1xufTtcblxudmFyIGhhdmVWYWx1ZXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXZlVmFsdWVzQ29udmVyZ2VkKHYxLCB2Miwgc2Vuc2l0aXZpdHlUaHJlc2hvbGQpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHYyIC0gdjEpIDw9IHNlbnNpdGl2aXR5VGhyZXNob2xkO1xufTtcblxudmFyIGhhdmVNYXRyaWNlc0NvbnZlcmdlZCA9IGZ1bmN0aW9uIGhhdmVNYXRyaWNlc0NvbnZlcmdlZCh2MSwgdjIsIHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHYxW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKHYxW2ldW2pdIC0gdjJbaV1bal0pO1xuXG4gICAgICBpZiAoZGlmZiA+IHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBzZWVuQmVmb3JlID0gZnVuY3Rpb24gc2VlbkJlZm9yZShub2RlLCBtZWRvaWRzLCBuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgaWYgKG5vZGUgPT09IG1lZG9pZHNbaV0pIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIHJhbmRvbU1lZG9pZHMgPSBmdW5jdGlvbiByYW5kb21NZWRvaWRzKG5vZGVzLCBrKSB7XG4gIHZhciBtZWRvaWRzID0gbmV3IEFycmF5KGspOyAvLyBGb3Igc21hbGwgZGF0YSBzZXRzLCB0aGUgcHJvYmFiaWxpdHkgb2YgbWVkb2lkIGNvbmZsaWN0IGlzIGdyZWF0ZXIsXG4gIC8vIHNvIHdlIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBvciBjaG9zZSB0aGlzIG5vZGUgYmVmb3JlLlxuXG4gIGlmIChub2Rlcy5sZW5ndGggPCA1MCkge1xuICAgIC8vIFJhbmRvbWx5IHNlbGVjdCBrIG1lZG9pZHMgZnJvbSB0aGUgbiBub2Rlc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldOyAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNob3NlbiB0aGlzIG5vZGUgdG8gYmUgYSBtZWRvaWQsIGRvbid0IGNob29zZSBpdCBhZ2FpbiAoZm9yIHNtYWxsIGRhdGEgc2V0cykuXG4gICAgICAvLyBJbnN0ZWFkIGNob29zZSBhIGRpZmZlcmVudCByYW5kb20gbm9kZS5cblxuICAgICAgd2hpbGUgKHNlZW5CZWZvcmUobm9kZSwgbWVkb2lkcywgaSkpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldO1xuICAgICAgfVxuXG4gICAgICBtZWRvaWRzW2ldID0gbm9kZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gUmVsYXRpdmVseSBsYXJnZSBkYXRhIHNldCwgc28gcHJldHR5IHNhZmUgdG8gbm90IGNoZWNrIGFuZCBqdXN0IHNlbGVjdCByYW5kb20gbm9kZXNcbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrOyBfaTIrKykge1xuICAgICAgbWVkb2lkc1tfaTJdID0gbm9kZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZXMubGVuZ3RoKV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lZG9pZHM7XG59O1xuXG52YXIgZmluZENvc3QgPSBmdW5jdGlvbiBmaW5kQ29zdChwb3RlbnRpYWxOZXdNZWRvaWQsIGNsdXN0ZXIsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGNvc3QgPSAwO1xuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgY2x1c3Rlci5sZW5ndGg7IG4rKykge1xuICAgIGNvc3QgKz0gZ2V0RGlzdCgnbWFuaGF0dGFuJywgY2x1c3RlcltuXSwgcG90ZW50aWFsTmV3TWVkb2lkLCBhdHRyaWJ1dGVzLCAna01lZG9pZHMnKTtcbiAgfVxuXG4gIHJldHVybiBjb3N0O1xufTtcblxudmFyIGtNZWFucyA9IGZ1bmN0aW9uIGtNZWFucyhvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICB2YXIgbm9kZSA9IG51bGw7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogIyBvZiBjbHVzdGVycywgZGlzdGFuY2UgbWV0cmljLCBldGMuXG5cbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDEob3B0aW9ucyk7IC8vIEJlZ2luIGstbWVhbnMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gIHZhciBhc3NpZ25tZW50ID0ge307XG4gIHZhciBjZW50cm9pZHM7IC8vIFN0ZXAgMTogSW5pdGlhbGl6ZSBjZW50cm9pZCBwb3NpdGlvbnNcblxuICBpZiAob3B0cy50ZXN0TW9kZSkge1xuICAgIGlmICh0eXBlb2Ygb3B0cy50ZXN0Q2VudHJvaWRzID09PSAnbnVtYmVyJykge1xuICAgICAgY2VudHJvaWRzID0gcmFuZG9tQ2VudHJvaWRzKG5vZGVzLCBvcHRzLmssIG9wdHMuYXR0cmlidXRlcyk7XG4gICAgfSBlbHNlIGlmIChfdHlwZW9mKG9wdHMudGVzdENlbnRyb2lkcykgPT09ICdvYmplY3QnKSB7XG4gICAgICBjZW50cm9pZHMgPSBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRyb2lkcyA9IHJhbmRvbUNlbnRyb2lkcyhub2Rlcywgb3B0cy5rLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjZW50cm9pZHMgPSByYW5kb21DZW50cm9pZHMobm9kZXMsIG9wdHMuaywgb3B0cy5hdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBjZW50cm9pZFxuICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tuXTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhpcyBub2RlIGJlbG9uZ3MgdG86IG5vZGUgaWQgPT4gY2x1c3RlciAjXG5cbiAgICAgIGFzc2lnbm1lbnRbbm9kZS5pZCgpXSA9IGNsYXNzaWZ5KG5vZGUsIGNlbnRyb2lkcywgb3B0cy5kaXN0YW5jZSwgb3B0cy5hdHRyaWJ1dGVzLCAna01lYW5zJyk7XG4gICAgfSAvLyBTdGVwIDM6IEZvciBlYWNoIG9mIHRoZSBrIGNsdXN0ZXJzLCB1cGRhdGUgaXRzIGNlbnRyb2lkXG5cblxuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGMgPSAwOyBjIDwgb3B0cy5rOyBjKyspIHtcbiAgICAgIC8vIEdldCBhbGwgbm9kZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBjbHVzdGVyXG4gICAgICB2YXIgY2x1c3RlciA9IGJ1aWxkQ2x1c3RlcihjLCBub2RlcywgYXNzaWdubWVudCk7XG5cbiAgICAgIGlmIChjbHVzdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBJZiBjbHVzdGVyIGlzIGVtcHR5LCBicmVhayBvdXQgZWFybHkgJiBtb3ZlIHRvIG5leHQgY2x1c3RlclxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gVXBkYXRlIGNlbnRyb2lkcyBieSBjYWxjdWxhdGluZyBhdmcgb2YgYWxsIG5vZGVzIHdpdGhpbiB0aGUgY2x1c3Rlci5cblxuXG4gICAgICB2YXIgbmRpbSA9IG9wdHMuYXR0cmlidXRlcy5sZW5ndGg7XG4gICAgICB2YXIgY2VudHJvaWQgPSBjZW50cm9pZHNbY107IC8vIFsgZGltXzEsIGRpbV8yLCBkaW1fMywgLi4uICwgZGltX24gXVxuXG4gICAgICB2YXIgbmV3Q2VudHJvaWQgPSBuZXcgQXJyYXkobmRpbSk7XG4gICAgICB2YXIgc3VtID0gbmV3IEFycmF5KG5kaW0pO1xuXG4gICAgICBmb3IgKHZhciBkID0gMDsgZCA8IG5kaW07IGQrKykge1xuICAgICAgICBzdW1bZF0gPSAwLjA7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZSA9IGNsdXN0ZXJbaV07XG4gICAgICAgICAgc3VtW2RdICs9IG9wdHMuYXR0cmlidXRlc1tkXShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0NlbnRyb2lkW2RdID0gc3VtW2RdIC8gY2x1c3Rlci5sZW5ndGg7IC8vIENoZWNrIHRvIHNlZSBpZiBhbGdvcml0aG0gaGFzIGNvbnZlcmdlZCwgaS5lLiB3aGVuIGNlbnRyb2lkcyBubyBsb25nZXIgY2hhbmdlXG5cbiAgICAgICAgaWYgKCFoYXZlVmFsdWVzQ29udmVyZ2VkKG5ld0NlbnRyb2lkW2RdLCBjZW50cm9pZFtkXSwgb3B0cy5zZW5zaXRpdml0eVRocmVzaG9sZCkpIHtcbiAgICAgICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjZW50cm9pZHNbY10gPSBuZXdDZW50cm9pZDtcbiAgICAgIGNsdXN0ZXJzW2NdID0gY3kuY29sbGVjdGlvbihjbHVzdGVyKTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIga01lZG9pZHMgPSBmdW5jdGlvbiBrTWVkb2lkcyhvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICB2YXIgbm9kZSA9IG51bGw7XG4gIHZhciBvcHRzID0gc2V0T3B0aW9ucyQxKG9wdGlvbnMpOyAvLyBCZWdpbiBrLW1lZG9pZHMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gIHZhciBtZWRvaWRzO1xuICB2YXIgYXNzaWdubWVudCA9IHt9O1xuICB2YXIgY3VyQ29zdDtcbiAgdmFyIG1pbkNvc3RzID0gbmV3IEFycmF5KG9wdHMuayk7IC8vIG1pbmltdW0gY29zdCBjb25maWd1cmF0aW9uIGZvciBlYWNoIGNsdXN0ZXJcbiAgLy8gU3RlcCAxOiBJbml0aWFsaXplIGsgbWVkb2lkc1xuXG4gIGlmIChvcHRzLnRlc3RNb2RlKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRzLnRlc3RDZW50cm9pZHMgPT09ICdudW1iZXInKSA7IGVsc2UgaWYgKF90eXBlb2Yob3B0cy50ZXN0Q2VudHJvaWRzKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG1lZG9pZHMgPSBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lZG9pZHMgPSByYW5kb21NZWRvaWRzKG5vZGVzLCBvcHRzLmspO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtZWRvaWRzID0gcmFuZG9tTWVkb2lkcyhub2Rlcywgb3B0cy5rKTtcbiAgfVxuXG4gIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBtZWRvaWRcbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICBub2RlID0gbm9kZXNbbl07IC8vIERldGVybWluZSB3aGljaCBjbHVzdGVyIHRoaXMgbm9kZSBiZWxvbmdzIHRvOiBub2RlIGlkID0+IGNsdXN0ZXIgI1xuXG4gICAgICBhc3NpZ25tZW50W25vZGUuaWQoKV0gPSBjbGFzc2lmeShub2RlLCBtZWRvaWRzLCBvcHRzLmRpc3RhbmNlLCBvcHRzLmF0dHJpYnV0ZXMsICdrTWVkb2lkcycpO1xuICAgIH1cblxuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOiBGb3IgZWFjaCBtZWRvaWQgbSwgYW5kIGZvciBlYWNoIG5vZGUgYXNzY2lhdGVkIHdpdGggbWVkaW9kIG0sXG4gICAgLy8gc2VsZWN0IHRoZSBub2RlIHdpdGggdGhlIGxvd2VzdCBjb25maWd1cmF0aW9uIGNvc3QgYXMgbmV3IG1lZG9pZC5cblxuICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbWVkb2lkcy5sZW5ndGg7IG0rKykge1xuICAgICAgLy8gR2V0IGFsbCBub2RlcyB0aGF0IGJlbG9uZyB0byB0aGlzIG1lZG9pZFxuICAgICAgdmFyIGNsdXN0ZXIgPSBidWlsZENsdXN0ZXIobSwgbm9kZXMsIGFzc2lnbm1lbnQpO1xuXG4gICAgICBpZiAoY2x1c3Rlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gSWYgY2x1c3RlciBpcyBlbXB0eSwgYnJlYWsgb3V0IGVhcmx5ICYgbW92ZSB0byBuZXh0IGNsdXN0ZXJcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1pbkNvc3RzW21dID0gZmluZENvc3QobWVkb2lkc1ttXSwgY2x1c3Rlciwgb3B0cy5hdHRyaWJ1dGVzKTsgLy8gb3JpZ2luYWwgY29zdFxuICAgICAgLy8gU2VsZWN0IGRpZmZlcmVudCBtZWRvaWQgaWYgaXRzIGNvbmZpZ3VyYXRpb24gaGFzIHRoZSBsb3dlc3QgY29zdFxuXG4gICAgICBmb3IgKHZhciBfbiA9IDA7IF9uIDwgY2x1c3Rlci5sZW5ndGg7IF9uKyspIHtcbiAgICAgICAgY3VyQ29zdCA9IGZpbmRDb3N0KGNsdXN0ZXJbX25dLCBjbHVzdGVyLCBvcHRzLmF0dHJpYnV0ZXMpO1xuXG4gICAgICAgIGlmIChjdXJDb3N0IDwgbWluQ29zdHNbbV0pIHtcbiAgICAgICAgICBtaW5Db3N0c1ttXSA9IGN1ckNvc3Q7XG4gICAgICAgICAgbWVkb2lkc1ttXSA9IGNsdXN0ZXJbX25dO1xuICAgICAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsdXN0ZXJzW21dID0gY3kuY29sbGVjdGlvbihjbHVzdGVyKTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgdXBkYXRlQ2VudHJvaWRzID0gZnVuY3Rpb24gdXBkYXRlQ2VudHJvaWRzKGNlbnRyb2lkcywgbm9kZXMsIFUsIHdlaWdodCwgb3B0cykge1xuICB2YXIgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjZW50cm9pZHMubGVuZ3RoOyBjKyspIHtcbiAgICAgIHdlaWdodFtuXVtjXSA9IE1hdGgucG93KFVbbl1bY10sIG9wdHMubSk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2MgPSAwOyBfYyA8IGNlbnRyb2lkcy5sZW5ndGg7IF9jKyspIHtcbiAgICBmb3IgKHZhciBkaW0gPSAwOyBkaW0gPCBvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoOyBkaW0rKykge1xuICAgICAgbnVtZXJhdG9yID0gMDtcbiAgICAgIGRlbm9taW5hdG9yID0gMDtcblxuICAgICAgZm9yICh2YXIgX24yID0gMDsgX24yIDwgbm9kZXMubGVuZ3RoOyBfbjIrKykge1xuICAgICAgICBudW1lcmF0b3IgKz0gd2VpZ2h0W19uMl1bX2NdICogb3B0cy5hdHRyaWJ1dGVzW2RpbV0obm9kZXNbX24yXSk7XG4gICAgICAgIGRlbm9taW5hdG9yICs9IHdlaWdodFtfbjJdW19jXTtcbiAgICAgIH1cblxuICAgICAgY2VudHJvaWRzW19jXVtkaW1dID0gbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7XG4gICAgfVxuICB9XG59O1xuXG52YXIgdXBkYXRlTWVtYmVyc2hpcCA9IGZ1bmN0aW9uIHVwZGF0ZU1lbWJlcnNoaXAoVSwgX1UsIGNlbnRyb2lkcywgbm9kZXMsIG9wdHMpIHtcbiAgLy8gU2F2ZSBwcmV2aW91cyBzdGVwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVS5sZW5ndGg7IGkrKykge1xuICAgIF9VW2ldID0gVVtpXS5zbGljZSgpO1xuICB9XG5cbiAgdmFyIHN1bSwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcbiAgdmFyIHBvdyA9IDIgLyAob3B0cy5tIC0gMSk7XG5cbiAgZm9yICh2YXIgYyA9IDA7IGMgPCBjZW50cm9pZHMubGVuZ3RoOyBjKyspIHtcbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICBzdW0gPSAwO1xuXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGNlbnRyb2lkcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAvLyBhZ2FpbnN0IGFsbCBvdGhlciBjZW50cm9pZHNcbiAgICAgICAgbnVtZXJhdG9yID0gZ2V0RGlzdChvcHRzLmRpc3RhbmNlLCBub2Rlc1tuXSwgY2VudHJvaWRzW2NdLCBvcHRzLmF0dHJpYnV0ZXMsICdjbWVhbnMnKTtcbiAgICAgICAgZGVub21pbmF0b3IgPSBnZXREaXN0KG9wdHMuZGlzdGFuY2UsIG5vZGVzW25dLCBjZW50cm9pZHNba10sIG9wdHMuYXR0cmlidXRlcywgJ2NtZWFucycpO1xuICAgICAgICBzdW0gKz0gTWF0aC5wb3cobnVtZXJhdG9yIC8gZGVub21pbmF0b3IsIHBvdyk7XG4gICAgICB9XG5cbiAgICAgIFVbbl1bY10gPSAxIC8gc3VtO1xuICAgIH1cbiAgfVxufTtcblxudmFyIGFzc2lnbiQxID0gZnVuY3Rpb24gYXNzaWduKG5vZGVzLCBVLCBvcHRzLCBjeSkge1xuICB2YXIgY2x1c3RlcnMgPSBuZXcgQXJyYXkob3B0cy5rKTtcblxuICBmb3IgKHZhciBjID0gMDsgYyA8IGNsdXN0ZXJzLmxlbmd0aDsgYysrKSB7XG4gICAgY2x1c3RlcnNbY10gPSBbXTtcbiAgfVxuXG4gIHZhciBtYXg7XG4gIHZhciBpbmRleDtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IFUubGVuZ3RoOyBuKyspIHtcbiAgICAvLyBmb3IgZWFjaCBub2RlIChVIGlzIE4geCBDIG1hdHJpeClcbiAgICBtYXggPSAtSW5maW5pdHk7XG4gICAgaW5kZXggPSAtMTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhlIG5vZGUgaXMgbW9zdCBsaWtlbHkgdG8gYmVsb25nIGluXG5cbiAgICBmb3IgKHZhciBfYzIgPSAwOyBfYzIgPCBVWzBdLmxlbmd0aDsgX2MyKyspIHtcbiAgICAgIGlmIChVW25dW19jMl0gPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gVVtuXVtfYzJdO1xuICAgICAgICBpbmRleCA9IF9jMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjbHVzdGVyc1tpbmRleF0ucHVzaChub2Rlc1tuXSk7XG4gIH0gLy8gVHVybiBldmVyeSBhcnJheSBpbnRvIGEgY29sbGVjdGlvbiBvZiBub2Rlc1xuXG5cbiAgZm9yICh2YXIgX2MzID0gMDsgX2MzIDwgY2x1c3RlcnMubGVuZ3RoOyBfYzMrKykge1xuICAgIGNsdXN0ZXJzW19jM10gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXJzW19jM10pO1xuICB9XG5cbiAgcmV0dXJuIGNsdXN0ZXJzO1xufTtcblxudmFyIGZ1enp5Q01lYW5zID0gZnVuY3Rpb24gZnV6enlDTWVhbnMob3B0aW9ucykge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDEob3B0aW9ucyk7IC8vIEJlZ2luIGZ1enp5IGMtbWVhbnMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzO1xuICB2YXIgY2VudHJvaWRzO1xuICB2YXIgVTtcblxuICB2YXIgX1U7XG5cbiAgdmFyIHdlaWdodDsgLy8gU3RlcCAxOiBJbml0aWFsaXplIGxldGlhYmxlcy5cblxuICBfVSA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICBfVVtpXSA9IG5ldyBBcnJheShvcHRzLmspO1xuICB9XG5cbiAgVSA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IG5vZGVzLmxlbmd0aDsgX2kzKyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICBVW19pM10gPSBuZXcgQXJyYXkob3B0cy5rKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG5vZGVzLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgdG90YWwgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBvcHRzLms7IGorKykge1xuICAgICAgVVtfaTRdW2pdID0gTWF0aC5yYW5kb20oKTtcbiAgICAgIHRvdGFsICs9IFVbX2k0XVtqXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgb3B0cy5rOyBfaisrKSB7XG4gICAgICBVW19pNF1bX2pdID0gVVtfaTRdW19qXSAvIHRvdGFsO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRyb2lkcyA9IG5ldyBBcnJheShvcHRzLmspO1xuXG4gIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG9wdHMuazsgX2k1KyspIHtcbiAgICBjZW50cm9pZHNbX2k1XSA9IG5ldyBBcnJheShvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoKTtcbiAgfVxuXG4gIHdlaWdodCA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IG5vZGVzLmxlbmd0aDsgX2k2KyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICB3ZWlnaHRbX2k2XSA9IG5ldyBBcnJheShvcHRzLmspO1xuICB9IC8vIGVuZCBpbml0IEZDTVxuXG5cbiAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAyOiBDYWxjdWxhdGUgdGhlIGNlbnRyb2lkcyBmb3IgZWFjaCBzdGVwLlxuXG4gICAgdXBkYXRlQ2VudHJvaWRzKGNlbnRyb2lkcywgbm9kZXMsIFUsIHdlaWdodCwgb3B0cyk7IC8vIFN0ZXAgMzogVXBkYXRlIHRoZSBwYXJ0aXRpb24gbWF0cml4IFUuXG5cbiAgICB1cGRhdGVNZW1iZXJzaGlwKFUsIF9VLCBjZW50cm9pZHMsIG5vZGVzLCBvcHRzKTsgLy8gU3RlcCA0OiBDaGVjayBmb3IgY29udmVyZ2VuY2UuXG5cbiAgICBpZiAoIWhhdmVNYXRyaWNlc0NvbnZlcmdlZChVLCBfVSwgb3B0cy5zZW5zaXRpdml0eVRocmVzaG9sZCkpIHtcbiAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIGl0ZXJhdGlvbnMrKztcbiAgfSAvLyBBc3NpZ24gbm9kZXMgdG8gY2x1c3RlcnMgd2l0aCBoaWdoZXN0IHByb2JhYmlsaXR5LlxuXG5cbiAgY2x1c3RlcnMgPSBhc3NpZ24kMShub2RlcywgVSwgb3B0cywgY3kpO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVycyxcbiAgICBkZWdyZWVPZk1lbWJlcnNoaXA6IFVcbiAgfTtcbn07XG5cbnZhciBrQ2x1c3RlcmluZyA9IHtcbiAga01lYW5zOiBrTWVhbnMsXG4gIGtNZWRvaWRzOiBrTWVkb2lkcyxcbiAgZnV6enlDTWVhbnM6IGZ1enp5Q01lYW5zLFxuICBmY206IGZ1enp5Q01lYW5zXG59O1xuXG4vLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbnZhciBkZWZhdWx0cyQ2ID0gZGVmYXVsdHMoe1xuICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gIC8vIGRpc3RhbmNlIG1ldHJpYyB0byBjb21wYXJlIG5vZGVzXG4gIGxpbmthZ2U6ICdtaW4nLFxuICAvLyBsaW5rYWdlIGNyaXRlcmlvbiA6IGhvdyB0byBkZXRlcm1pbmUgdGhlIGRpc3RhbmNlIGJldHdlZW4gY2x1c3RlcnMgb2Ygbm9kZXNcbiAgbW9kZTogJ3RocmVzaG9sZCcsXG4gIC8vIG1vZGU6J3RocmVzaG9sZCcgPT4gY2x1c3RlcnMgbXVzdCBiZSB0aHJlc2hvbGQgZGlzdGFuY2UgYXBhcnRcbiAgdGhyZXNob2xkOiBJbmZpbml0eSxcbiAgLy8gdGhlIGRpc3RhbmNlIHRocmVzaG9sZFxuICAvLyBtb2RlOidkZW5kcm9ncmFtJyA9PiB0aGUgbm9kZXMgYXJlIG9yZ2FuaXNlZCBhcyBsZWF2ZXMgaW4gYSB0cmVlIChzaWJsaW5ncyBhcmUgY2xvc2UpLCBtZXJnaW5nIG1ha2VzIGNsdXN0ZXJzXG4gIGFkZERlbmRyb2dyYW06IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGFkZCB0aGUgZGVuZHJvZ3JhbSB0byB0aGUgZ3JhcGggZm9yIHZpelxuICBkZW5kcm9ncmFtRGVwdGg6IDAsXG4gIC8vIGRlcHRoIGF0IHdoaWNoIGRlbmRyb2dyYW0gYnJhbmNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZXR1cm5lZCBjbHVzdGVyc1xuICBhdHRyaWJ1dGVzOiBbXSAvLyBhcnJheSBvZiBhdHRyIGZ1bmN0aW9uc1xuXG59KTtcbnZhciBsaW5rYWdlQWxpYXNlcyA9IHtcbiAgJ3NpbmdsZSc6ICdtaW4nLFxuICAnY29tcGxldGUnOiAnbWF4J1xufTtcblxudmFyIHNldE9wdGlvbnMkMiA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IGRlZmF1bHRzJDYob3B0aW9ucyk7XG4gIHZhciBwcmVmZXJyZWRBbGlhcyA9IGxpbmthZ2VBbGlhc2VzW29wdHMubGlua2FnZV07XG5cbiAgaWYgKHByZWZlcnJlZEFsaWFzICE9IG51bGwpIHtcbiAgICBvcHRzLmxpbmthZ2UgPSBwcmVmZXJyZWRBbGlhcztcbiAgfVxuXG4gIHJldHVybiBvcHRzO1xufTtcblxudmFyIG1lcmdlQ2xvc2VzdCA9IGZ1bmN0aW9uIG1lcmdlQ2xvc2VzdChjbHVzdGVycywgaW5kZXgsIGRpc3RzLCBtaW5zLCBvcHRzKSB7XG4gIC8vIEZpbmQgdHdvIGNsb3Nlc3QgY2x1c3RlcnMgZnJvbSBjYWNoZWQgbWluc1xuICB2YXIgbWluS2V5ID0gMDtcbiAgdmFyIG1pbiA9IEluZmluaXR5O1xuICB2YXIgZGlzdDtcbiAgdmFyIGF0dHJzID0gb3B0cy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICByZXR1cm4gY2x1c3RlcmluZ0Rpc3RhbmNlKG9wdHMuZGlzdGFuY2UsIGF0dHJzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMik7XG4gICAgfSwgbjEsIG4yKTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNsdXN0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGNsdXN0ZXJzW2ldLmtleTtcbiAgICB2YXIgX2Rpc3QgPSBkaXN0c1trZXldW21pbnNba2V5XV07XG5cbiAgICBpZiAoX2Rpc3QgPCBtaW4pIHtcbiAgICAgIG1pbktleSA9IGtleTtcbiAgICAgIG1pbiA9IF9kaXN0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICd0aHJlc2hvbGQnICYmIG1pbiA+PSBvcHRzLnRocmVzaG9sZCB8fCBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyAmJiBjbHVzdGVycy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgYzEgPSBpbmRleFttaW5LZXldO1xuICB2YXIgYzIgPSBpbmRleFttaW5zW21pbktleV1dO1xuICB2YXIgbWVyZ2VkOyAvLyBNZXJnZSB0d28gY2xvc2VzdCBjbHVzdGVyc1xuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgIG1lcmdlZCA9IHtcbiAgICAgIGxlZnQ6IGMxLFxuICAgICAgcmlnaHQ6IGMyLFxuICAgICAga2V5OiBjMS5rZXlcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG1lcmdlZCA9IHtcbiAgICAgIHZhbHVlOiBjMS52YWx1ZS5jb25jYXQoYzIudmFsdWUpLFxuICAgICAga2V5OiBjMS5rZXlcbiAgICB9O1xuICB9XG5cbiAgY2x1c3RlcnNbYzEuaW5kZXhdID0gbWVyZ2VkO1xuICBjbHVzdGVycy5zcGxpY2UoYzIuaW5kZXgsIDEpO1xuICBpbmRleFtjMS5rZXldID0gbWVyZ2VkOyAvLyBVcGRhdGUgZGlzdGFuY2VzIHdpdGggbmV3IG1lcmdlZCBjbHVzdGVyXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGNsdXN0ZXJzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjdXIgPSBjbHVzdGVyc1tfaV07XG5cbiAgICBpZiAoYzEua2V5ID09PSBjdXIua2V5KSB7XG4gICAgICBkaXN0ID0gSW5maW5pdHk7XG4gICAgfSBlbHNlIGlmIChvcHRzLmxpbmthZ2UgPT09ICdtaW4nKSB7XG4gICAgICBkaXN0ID0gZGlzdHNbYzEua2V5XVtjdXIua2V5XTtcblxuICAgICAgaWYgKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPiBkaXN0c1tjMi5rZXldW2N1ci5rZXldKSB7XG4gICAgICAgIGRpc3QgPSBkaXN0c1tjMi5rZXldW2N1ci5rZXldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0cy5saW5rYWdlID09PSAnbWF4Jykge1xuICAgICAgZGlzdCA9IGRpc3RzW2MxLmtleV1bY3VyLmtleV07XG5cbiAgICAgIGlmIChkaXN0c1tjMS5rZXldW2N1ci5rZXldIDwgZGlzdHNbYzIua2V5XVtjdXIua2V5XSkge1xuICAgICAgICBkaXN0ID0gZGlzdHNbYzIua2V5XVtjdXIua2V5XTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wdHMubGlua2FnZSA9PT0gJ21lYW4nKSB7XG4gICAgICBkaXN0ID0gKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gKiBjMS5zaXplICsgZGlzdHNbYzIua2V5XVtjdXIua2V5XSAqIGMyLnNpemUpIC8gKGMxLnNpemUgKyBjMi5zaXplKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdHMubW9kZSA9PT0gJ2RlbmRyb2dyYW0nKSBkaXN0ID0gZ2V0RGlzdChjdXIudmFsdWUsIGMxLnZhbHVlKTtlbHNlIGRpc3QgPSBnZXREaXN0KGN1ci52YWx1ZVswXSwgYzEudmFsdWVbMF0pO1xuICAgIH1cblxuICAgIGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPSBkaXN0c1tjdXIua2V5XVtjMS5rZXldID0gZGlzdDsgLy8gZGlzdGFuY2UgbWF0cml4IGlzIHN5bW1ldHJpY1xuICB9IC8vIFVwZGF0ZSBjYWNoZWQgbWluc1xuXG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgY2x1c3RlcnMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBrZXkxID0gY2x1c3RlcnNbX2kyXS5rZXk7XG5cbiAgICBpZiAobWluc1trZXkxXSA9PT0gYzEua2V5IHx8IG1pbnNba2V5MV0gPT09IGMyLmtleSkge1xuICAgICAgdmFyIF9taW4gPSBrZXkxO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBrZXkyID0gY2x1c3RlcnNbal0ua2V5O1xuXG4gICAgICAgIGlmIChkaXN0c1trZXkxXVtrZXkyXSA8IGRpc3RzW2tleTFdW19taW5dKSB7XG4gICAgICAgICAgX21pbiA9IGtleTI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWluc1trZXkxXSA9IF9taW47XG4gICAgfVxuXG4gICAgY2x1c3RlcnNbX2kyXS5pbmRleCA9IF9pMjtcbiAgfSAvLyBDbGVhbiB1cCBtZXRhIGRhdGEgdXNlZCBmb3IgY2x1c3RlcmluZ1xuXG5cbiAgYzEua2V5ID0gYzIua2V5ID0gYzEuaW5kZXggPSBjMi5pbmRleCA9IG51bGw7XG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIGdldEFsbENoaWxkcmVuID0gZnVuY3Rpb24gZ2V0QWxsQ2hpbGRyZW4ocm9vdCwgYXJyLCBjeSkge1xuICBpZiAoIXJvb3QpIHJldHVybjtcblxuICBpZiAocm9vdC52YWx1ZSkge1xuICAgIGFyci5wdXNoKHJvb3QudmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgYXJyKTtcbiAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgYXJyKTtcbiAgfVxufTtcblxudmFyIGJ1aWxkRGVuZHJvZ3JhbSA9IGZ1bmN0aW9uIGJ1aWxkRGVuZHJvZ3JhbShyb290LCBjeSkge1xuICBpZiAoIXJvb3QpIHJldHVybiAnJztcblxuICBpZiAocm9vdC5sZWZ0ICYmIHJvb3QucmlnaHQpIHtcbiAgICB2YXIgbGVmdFN0ciA9IGJ1aWxkRGVuZHJvZ3JhbShyb290LmxlZnQsIGN5KTtcbiAgICB2YXIgcmlnaHRTdHIgPSBidWlsZERlbmRyb2dyYW0ocm9vdC5yaWdodCwgY3kpO1xuICAgIHZhciBub2RlID0gY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnbm9kZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBpZDogbGVmdFN0ciArICcsJyArIHJpZ2h0U3RyXG4gICAgICB9XG4gICAgfSk7XG4gICAgY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzb3VyY2U6IGxlZnRTdHIsXG4gICAgICAgIHRhcmdldDogbm9kZS5pZCgpXG4gICAgICB9XG4gICAgfSk7XG4gICAgY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzb3VyY2U6IHJpZ2h0U3RyLFxuICAgICAgICB0YXJnZXQ6IG5vZGUuaWQoKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub2RlLmlkKCk7XG4gIH0gZWxzZSBpZiAocm9vdC52YWx1ZSkge1xuICAgIHJldHVybiByb290LnZhbHVlLmlkKCk7XG4gIH1cbn07XG5cbnZhciBidWlsZENsdXN0ZXJzRnJvbVRyZWUgPSBmdW5jdGlvbiBidWlsZENsdXN0ZXJzRnJvbVRyZWUocm9vdCwgaywgY3kpIHtcbiAgaWYgKCFyb290KSByZXR1cm4gW107XG4gIHZhciBsZWZ0ID0gW10sXG4gICAgICByaWdodCA9IFtdLFxuICAgICAgbGVhdmVzID0gW107XG5cbiAgaWYgKGsgPT09IDApIHtcbiAgICAvLyBkb24ndCBjdXQgdHJlZSwgc2ltcGx5IHJldHVybiBhbGwgbm9kZXMgYXMgMSBzaW5nbGUgY2x1c3RlclxuICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgaWYgKHJvb3QucmlnaHQpIGdldEFsbENoaWxkcmVuKHJvb3QucmlnaHQsIHJpZ2h0KTtcbiAgICBsZWF2ZXMgPSBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlYXZlcyldO1xuICB9IGVsc2UgaWYgKGsgPT09IDEpIHtcbiAgICAvLyBjdXQgYXQgcm9vdFxuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICAvLyBsZWFmIG5vZGVcbiAgICAgIHJldHVybiBbY3kuY29sbGVjdGlvbihyb290LnZhbHVlKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgcmlnaHQpO1xuICAgICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlZnQpLCBjeS5jb2xsZWN0aW9uKHJpZ2h0KV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICByZXR1cm4gW2N5LmNvbGxlY3Rpb24ocm9vdC52YWx1ZSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocm9vdC5sZWZ0KSBsZWZ0ID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKHJvb3QubGVmdCwgayAtIDEsIGN5KTtcbiAgICAgIGlmIChyb290LnJpZ2h0KSByaWdodCA9IGJ1aWxkQ2x1c3RlcnNGcm9tVHJlZShyb290LnJpZ2h0LCBrIC0gMSwgY3kpO1xuICAgICAgcmV0dXJuIGxlZnQuY29uY2F0KHJpZ2h0KTtcbiAgICB9XG4gIH1cbn07XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cblxudmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmcgPSBmdW5jdGlvbiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nKG9wdGlvbnMpIHtcbiAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogbGlua2FnZSB0eXBlLCBkaXN0YW5jZSBtZXRyaWMsIGV0Yy5cblxuICB2YXIgb3B0cyA9IHNldE9wdGlvbnMkMihvcHRpb25zKTtcbiAgdmFyIGF0dHJzID0gb3B0cy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICByZXR1cm4gY2x1c3RlcmluZ0Rpc3RhbmNlKG9wdHMuZGlzdGFuY2UsIGF0dHJzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMik7XG4gICAgfSwgbjEsIG4yKTtcbiAgfTsgLy8gQmVnaW4gaGllcmFyY2hpY2FsIGFsZ29yaXRobVxuXG5cbiAgdmFyIGNsdXN0ZXJzID0gW107XG4gIHZhciBkaXN0cyA9IFtdOyAvLyBkaXN0YW5jZXMgYmV0d2VlbiBlYWNoIHBhaXIgb2YgY2x1c3RlcnNcblxuICB2YXIgbWlucyA9IFtdOyAvLyBjbG9zZXN0IGNsdXN0ZXIgZm9yIGVhY2ggY2x1c3RlclxuXG4gIHZhciBpbmRleCA9IFtdOyAvLyBoYXNoIG9mIGFsbCBjbHVzdGVycyBieSBrZXlcbiAgLy8gSW4gYWdnbG9tZXJhdGl2ZSAoYm90dG9tLXVwKSBjbHVzdGVyaW5nLCBlYWNoIG5vZGUgc3RhcnRzIGFzIGl0cyBvd24gY2x1c3RlclxuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICB2YXIgY2x1c3RlciA9IHtcbiAgICAgIHZhbHVlOiBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyA/IG5vZGVzW25dIDogW25vZGVzW25dXSxcbiAgICAgIGtleTogbixcbiAgICAgIGluZGV4OiBuXG4gICAgfTtcbiAgICBjbHVzdGVyc1tuXSA9IGNsdXN0ZXI7XG4gICAgaW5kZXhbbl0gPSBjbHVzdGVyO1xuICAgIGRpc3RzW25dID0gW107XG4gICAgbWluc1tuXSA9IDA7XG4gIH0gLy8gQ2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGVhY2ggcGFpciBvZiBjbHVzdGVyc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVycy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgdmFyIGRpc3QgPSB2b2lkIDA7XG5cbiAgICAgIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgICAgICAvLyBtb2RlcyBzdG9yZSBjbHVzdGVyIHZhbHVlcyBkaWZmZXJlbnRseVxuICAgICAgICBkaXN0ID0gaSA9PT0gaiA/IEluZmluaXR5IDogZ2V0RGlzdChjbHVzdGVyc1tpXS52YWx1ZSwgY2x1c3RlcnNbal0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdCA9IGkgPT09IGogPyBJbmZpbml0eSA6IGdldERpc3QoY2x1c3RlcnNbaV0udmFsdWVbMF0sIGNsdXN0ZXJzW2pdLnZhbHVlWzBdKTtcbiAgICAgIH1cblxuICAgICAgZGlzdHNbaV1bal0gPSBkaXN0O1xuICAgICAgZGlzdHNbal1baV0gPSBkaXN0O1xuXG4gICAgICBpZiAoZGlzdCA8IGRpc3RzW2ldW21pbnNbaV1dKSB7XG4gICAgICAgIG1pbnNbaV0gPSBqOyAvLyBDYWNoZSBtaW5zOiBjbG9zZXN0IGNsdXN0ZXIgdG8gY2x1c3RlciBpIGlzIGNsdXN0ZXIgalxuICAgICAgfVxuICAgIH1cbiAgfSAvLyBGaW5kIHRoZSBjbG9zZXN0IHBhaXIgb2YgY2x1c3RlcnMgYW5kIG1lcmdlIHRoZW0gaW50byBhIHNpbmdsZSBjbHVzdGVyLlxuICAvLyBVcGRhdGUgZGlzdGFuY2VzIGJldHdlZW4gbmV3IGNsdXN0ZXIgYW5kIGVhY2ggb2YgdGhlIG9sZCBjbHVzdGVycywgYW5kIGxvb3AgdW50aWwgdGhyZXNob2xkIHJlYWNoZWQuXG5cblxuICB2YXIgbWVyZ2VkID0gbWVyZ2VDbG9zZXN0KGNsdXN0ZXJzLCBpbmRleCwgZGlzdHMsIG1pbnMsIG9wdHMpO1xuXG4gIHdoaWxlIChtZXJnZWQpIHtcbiAgICBtZXJnZWQgPSBtZXJnZUNsb3Nlc3QoY2x1c3RlcnMsIGluZGV4LCBkaXN0cywgbWlucywgb3B0cyk7XG4gIH1cblxuICB2YXIgcmV0Q2x1c3RlcnM7IC8vIERlbmRyb2dyYW0gbW9kZSBidWlsZHMgdGhlIGhpZXJhcmNoeSBhbmQgYWRkcyBpbnRlcm1lZGlhcnkgbm9kZXMgKyBlZGdlc1xuICAvLyBpbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgdGhlIGNsdXN0ZXJzLlxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgIHJldENsdXN0ZXJzID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKGNsdXN0ZXJzWzBdLCBvcHRzLmRlbmRyb2dyYW1EZXB0aCwgY3kpO1xuICAgIGlmIChvcHRzLmFkZERlbmRyb2dyYW0pIGJ1aWxkRGVuZHJvZ3JhbShjbHVzdGVyc1swXSwgY3kpO1xuICB9IGVsc2Uge1xuICAgIC8vIFJlZ3VsYXIgbW9kZSBzaW1wbHkgcmV0dXJucyB0aGUgY2x1c3RlcnNcbiAgICByZXRDbHVzdGVycyA9IG5ldyBBcnJheShjbHVzdGVycy5sZW5ndGgpO1xuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXIsIGkpIHtcbiAgICAgIC8vIENsZWFuIHVwIG1ldGEgZGF0YSB1c2VkIGZvciBjbHVzdGVyaW5nXG4gICAgICBjbHVzdGVyLmtleSA9IGNsdXN0ZXIuaW5kZXggPSBudWxsO1xuICAgICAgcmV0Q2x1c3RlcnNbaV0gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXIudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJldENsdXN0ZXJzO1xufTtcblxudmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmckMSA9IHtcbiAgaGllcmFyY2hpY2FsQ2x1c3RlcmluZzogaGllcmFyY2hpY2FsQ2x1c3RlcmluZyxcbiAgaGNhOiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nXG59O1xuXG4vLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbnZhciBkZWZhdWx0cyQ3ID0gZGVmYXVsdHMoe1xuICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gIC8vIGRpc3RhbmNlIG1ldHJpYyB0byBjb21wYXJlIGF0dHJpYnV0ZXMgYmV0d2VlbiB0d28gbm9kZXNcbiAgcHJlZmVyZW5jZTogJ21lZGlhbicsXG4gIC8vIHN1aXRhYmlsaXR5IG9mIGEgZGF0YSBwb2ludCB0byBzZXJ2ZSBhcyBhbiBleGVtcGxhclxuICBkYW1waW5nOiAwLjgsXG4gIC8vIGRhbXBpbmcgZmFjdG9yIGJldHdlZW4gWzAuNSwgMSlcbiAgbWF4SXRlcmF0aW9uczogMTAwMCxcbiAgLy8gbWF4IG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHJ1blxuICBtaW5JdGVyYXRpb25zOiAxMDAsXG4gIC8vIG1pbiBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW4gaW4gb3JkZXIgZm9yIGNsdXN0ZXJpbmcgdG8gc3RvcFxuICBhdHRyaWJ1dGVzOiBbLy8gZnVuY3Rpb25zIHRvIHF1YW50aWZ5IHRoZSBzaW1pbGFyaXR5IGJldHdlZW4gYW55IHR3byBwb2ludHNcbiAgICAvLyBlLmcuIG5vZGUgPT4gbm9kZS5kYXRhKCd3ZWlnaHQnKVxuICBdXG59KTtcblxudmFyIHNldE9wdGlvbnMkMyA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgZG1wID0gb3B0aW9ucy5kYW1waW5nO1xuICB2YXIgcHJlZiA9IG9wdGlvbnMucHJlZmVyZW5jZTtcblxuICBpZiAoISgwLjUgPD0gZG1wICYmIGRtcCA8IDEpKSB7XG4gICAgZXJyb3IoXCJEYW1waW5nIG11c3QgcmFuZ2Ugb24gWzAuNSwgMSkuICBHb3Q6IFwiLmNvbmNhdChkbXApKTtcbiAgfVxuXG4gIHZhciB2YWxpZFByZWZzID0gWydtZWRpYW4nLCAnbWVhbicsICdtaW4nLCAnbWF4J107XG5cbiAgaWYgKCEodmFsaWRQcmVmcy5zb21lKGZ1bmN0aW9uICh2KSB7XG4gICAgcmV0dXJuIHYgPT09IHByZWY7XG4gIH0pIHx8IG51bWJlcihwcmVmKSkpIHtcbiAgICBlcnJvcihcIlByZWZlcmVuY2UgbXVzdCBiZSBvbmUgb2YgW1wiLmNvbmNhdCh2YWxpZFByZWZzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIFwiJ1wiLmNvbmNhdChwLCBcIidcIik7XG4gICAgfSkuam9pbignLCAnKSwgXCJdIG9yIGEgbnVtYmVyLiAgR290OiBcIikuY29uY2F0KHByZWYpKTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0cyQ3KG9wdGlvbnMpO1xufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG52YXIgZ2V0U2ltaWxhcml0eSQxID0gZnVuY3Rpb24gZ2V0U2ltaWxhcml0eSh0eXBlLCBuMSwgbjIsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGF0dHIgPSBmdW5jdGlvbiBhdHRyKG4sIGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShuKTtcbiAgfTsgLy8gbmIgbmVnYXRpdmUgYmVjYXVzZSBzaW1pbGFyaXR5IHNob3VsZCBoYXZlIGFuIGludmVyc2UgcmVsYXRpb25zaGlwIHRvIGRpc3RhbmNlXG5cblxuICByZXR1cm4gLWNsdXN0ZXJpbmdEaXN0YW5jZSh0eXBlLCBhdHRyaWJ1dGVzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gYXR0cihuMSwgaSk7XG4gIH0sIGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGF0dHIobjIsIGkpO1xuICB9LCBuMSwgbjIpO1xufTtcblxudmFyIGdldFByZWZlcmVuY2UgPSBmdW5jdGlvbiBnZXRQcmVmZXJlbmNlKFMsIHByZWZlcmVuY2UpIHtcbiAgLy8gbGFyZ2VyIHByZWZlcmVuY2UgPSBncmVhdGVyICMgb2YgY2x1c3RlcnNcbiAgdmFyIHAgPSBudWxsO1xuXG4gIGlmIChwcmVmZXJlbmNlID09PSAnbWVkaWFuJykge1xuICAgIHAgPSBtZWRpYW4oUyk7XG4gIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21lYW4nKSB7XG4gICAgcCA9IG1lYW4oUyk7XG4gIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21pbicpIHtcbiAgICBwID0gbWluKFMpO1xuICB9IGVsc2UgaWYgKHByZWZlcmVuY2UgPT09ICdtYXgnKSB7XG4gICAgcCA9IG1heChTKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDdXN0b20gcHJlZmVyZW5jZSBudW1iZXIsIGFzIHNldCBieSB1c2VyXG4gICAgcCA9IHByZWZlcmVuY2U7XG4gIH1cblxuICByZXR1cm4gcDtcbn07XG5cbnZhciBmaW5kRXhlbXBsYXJzID0gZnVuY3Rpb24gZmluZEV4ZW1wbGFycyhuLCBSLCBBKSB7XG4gIHZhciBpbmRpY2VzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBpZiAoUltpICogbiArIGldICsgQVtpICogbiArIGldID4gMCkge1xuICAgICAgaW5kaWNlcy5wdXNoKGkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRpY2VzO1xufTtcblxudmFyIGFzc2lnbkNsdXN0ZXJzID0gZnVuY3Rpb24gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKSB7XG4gIHZhciBjbHVzdGVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcblxuICAgIGZvciAodmFyIGVpID0gMDsgZWkgPCBleGVtcGxhcnMubGVuZ3RoOyBlaSsrKSB7XG4gICAgICB2YXIgZSA9IGV4ZW1wbGFyc1tlaV07XG5cbiAgICAgIGlmIChTW2kgKiBuICsgZV0gPiBtYXgpIHtcbiAgICAgICAgaW5kZXggPSBlO1xuICAgICAgICBtYXggPSBTW2kgKiBuICsgZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgY2x1c3RlcnMucHVzaChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2VpID0gMDsgX2VpIDwgZXhlbXBsYXJzLmxlbmd0aDsgX2VpKyspIHtcbiAgICBjbHVzdGVyc1tleGVtcGxhcnNbX2VpXV0gPSBleGVtcGxhcnNbX2VpXTtcbiAgfVxuXG4gIHJldHVybiBjbHVzdGVycztcbn07XG5cbnZhciBhc3NpZ24kMiA9IGZ1bmN0aW9uIGFzc2lnbihuLCBTLCBleGVtcGxhcnMpIHtcbiAgdmFyIGNsdXN0ZXJzID0gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKTtcblxuICBmb3IgKHZhciBlaSA9IDA7IGVpIDwgZXhlbXBsYXJzLmxlbmd0aDsgZWkrKykge1xuICAgIHZhciBpaSA9IFtdO1xuXG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjbHVzdGVycy5sZW5ndGg7IGMrKykge1xuICAgICAgaWYgKGNsdXN0ZXJzW2NdID09PSBleGVtcGxhcnNbZWldKSB7XG4gICAgICAgIGlpLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1heEkgPSAtMTtcbiAgICB2YXIgbWF4U3VtID0gLUluZmluaXR5O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpaS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHN1bSA9IDA7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaWkubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgc3VtICs9IFNbaWlbal0gKiBuICsgaWlbaV1dO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3VtID4gbWF4U3VtKSB7XG4gICAgICAgIG1heEkgPSBpO1xuICAgICAgICBtYXhTdW0gPSBzdW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZXhlbXBsYXJzW2VpXSA9IGlpW21heEldO1xuICB9XG5cbiAgY2x1c3RlcnMgPSBhc3NpZ25DbHVzdGVycyhuLCBTLCBleGVtcGxhcnMpO1xuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgYWZmaW5pdHlQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGFmZmluaXR5UHJvcGFnYXRpb24ob3B0aW9ucykge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICB2YXIgaWQycG9zaXRpb24gPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICB9IC8vIEJlZ2luIGFmZmluaXR5IHByb3BhZ2F0aW9uIGFsZ29yaXRobVxuXG5cbiAgdmFyIG47IC8vIG51bWJlciBvZiBkYXRhIHBvaW50c1xuXG4gIHZhciBuMjsgLy8gc2l6ZSBvZiBtYXRyaWNlc1xuXG4gIHZhciBTOyAvLyBzaW1pbGFyaXR5IG1hdHJpeCAoMUQgYXJyYXkpXG5cbiAgdmFyIHA7IC8vIHByZWZlcmVuY2Uvc3VpdGFiaWxpdHkgb2YgYSBkYXRhIHBvaW50IHRvIHNlcnZlIGFzIGFuIGV4ZW1wbGFyXG5cbiAgdmFyIFI7IC8vIHJlc3BvbnNpYmlsaXR5IG1hdHJpeCAoMUQgYXJyYXkpXG5cbiAgdmFyIEE7IC8vIGF2YWlsYWJpbGl0eSBtYXRyaXggKDFEIGFycmF5KVxuXG4gIG4gPSBub2Rlcy5sZW5ndGg7XG4gIG4yID0gbiAqIG47IC8vIEluaXRpYWxpemUgYW5kIGJ1aWxkIFMgc2ltaWxhcml0eSBtYXRyaXhcblxuICBTID0gbmV3IEFycmF5KG4yKTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbjI7IF9pKyspIHtcbiAgICBTW19pXSA9IC1JbmZpbml0eTsgLy8gZm9yIGNhc2VzIHdoZXJlIHR3byBkYXRhIHBvaW50cyBzaG91bGRuJ3QgYmUgbGlua2VkIHRvZ2V0aGVyXG4gIH1cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBuOyBfaTIrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICBpZiAoX2kyICE9PSBqKSB7XG4gICAgICAgIFNbX2kyICogbiArIGpdID0gZ2V0U2ltaWxhcml0eSQxKG9wdHMuZGlzdGFuY2UsIG5vZGVzW19pMl0sIG5vZGVzW2pdLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBQbGFjZSBwcmVmZXJlbmNlcyBvbiB0aGUgZGlhZ29uYWwgb2YgU1xuXG5cbiAgcCA9IGdldFByZWZlcmVuY2UoUywgb3B0cy5wcmVmZXJlbmNlKTtcblxuICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBuOyBfaTMrKykge1xuICAgIFNbX2kzICogbiArIF9pM10gPSBwO1xuICB9IC8vIEluaXRpYWxpemUgUiByZXNwb25zaWJpbGl0eSBtYXRyaXhcblxuXG4gIFIgPSBuZXcgQXJyYXkobjIpO1xuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG4yOyBfaTQrKykge1xuICAgIFJbX2k0XSA9IDAuMDtcbiAgfSAvLyBJbml0aWFsaXplIEEgYXZhaWxhYmlsaXR5IG1hdHJpeFxuXG5cbiAgQSA9IG5ldyBBcnJheShuMik7XG5cbiAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbjI7IF9pNSsrKSB7XG4gICAgQVtfaTVdID0gMC4wO1xuICB9XG5cbiAgdmFyIG9sZCA9IG5ldyBBcnJheShuKTtcbiAgdmFyIFJwID0gbmV3IEFycmF5KG4pO1xuICB2YXIgc2UgPSBuZXcgQXJyYXkobik7XG5cbiAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbjsgX2k2KyspIHtcbiAgICBvbGRbX2k2XSA9IDAuMDtcbiAgICBScFtfaTZdID0gMC4wO1xuICAgIHNlW19pNl0gPSAwO1xuICB9XG5cbiAgdmFyIGUgPSBuZXcgQXJyYXkobiAqIG9wdHMubWluSXRlcmF0aW9ucyk7XG5cbiAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZS5sZW5ndGg7IF9pNysrKSB7XG4gICAgZVtfaTddID0gMDtcbiAgfVxuXG4gIHZhciBpdGVyO1xuXG4gIGZvciAoaXRlciA9IDA7IGl0ZXIgPCBvcHRzLm1heEl0ZXJhdGlvbnM7IGl0ZXIrKykge1xuICAgIC8vIG1haW4gYWxnb3JpdGhtaWMgbG9vcFxuICAgIC8vIFVwZGF0ZSBSIHJlc3BvbnNpYmlsaXR5IG1hdHJpeFxuICAgIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IG47IF9pOCsrKSB7XG4gICAgICB2YXIgbWF4ID0gLUluZmluaXR5LFxuICAgICAgICAgIG1heDIgPSAtSW5maW5pdHksXG4gICAgICAgICAgbWF4SSA9IC0xLFxuICAgICAgICAgIEFTID0gMC4wO1xuXG4gICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgbjsgX2orKykge1xuICAgICAgICBvbGRbX2pdID0gUltfaTggKiBuICsgX2pdO1xuICAgICAgICBBUyA9IEFbX2k4ICogbiArIF9qXSArIFNbX2k4ICogbiArIF9qXTtcblxuICAgICAgICBpZiAoQVMgPj0gbWF4KSB7XG4gICAgICAgICAgbWF4MiA9IG1heDtcbiAgICAgICAgICBtYXggPSBBUztcbiAgICAgICAgICBtYXhJID0gX2o7XG4gICAgICAgIH0gZWxzZSBpZiAoQVMgPiBtYXgyKSB7XG4gICAgICAgICAgbWF4MiA9IEFTO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IG47IF9qMisrKSB7XG4gICAgICAgIFJbX2k4ICogbiArIF9qMl0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgX2oyXSAtIG1heCkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2oyXTtcbiAgICAgIH1cblxuICAgICAgUltfaTggKiBuICsgbWF4SV0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgbWF4SV0gLSBtYXgyKSArIG9wdHMuZGFtcGluZyAqIG9sZFttYXhJXTtcbiAgICB9IC8vIFVwZGF0ZSBBIGF2YWlsYWJpbGl0eSBtYXRyaXhcblxuXG4gICAgZm9yICh2YXIgX2k5ID0gMDsgX2k5IDwgbjsgX2k5KyspIHtcbiAgICAgIHZhciBzdW0gPSAwO1xuXG4gICAgICBmb3IgKHZhciBfajMgPSAwOyBfajMgPCBuOyBfajMrKykge1xuICAgICAgICBvbGRbX2ozXSA9IEFbX2ozICogbiArIF9pOV07XG4gICAgICAgIFJwW19qM10gPSBNYXRoLm1heCgwLCBSW19qMyAqIG4gKyBfaTldKTtcbiAgICAgICAgc3VtICs9IFJwW19qM107XG4gICAgICB9XG5cbiAgICAgIHN1bSAtPSBScFtfaTldO1xuICAgICAgUnBbX2k5XSA9IFJbX2k5ICogbiArIF9pOV07XG4gICAgICBzdW0gKz0gUnBbX2k5XTtcblxuICAgICAgZm9yICh2YXIgX2o0ID0gMDsgX2o0IDwgbjsgX2o0KyspIHtcbiAgICAgICAgQVtfajQgKiBuICsgX2k5XSA9ICgxIC0gb3B0cy5kYW1waW5nKSAqIE1hdGgubWluKDAsIHN1bSAtIFJwW19qNF0pICsgb3B0cy5kYW1waW5nICogb2xkW19qNF07XG4gICAgICB9XG5cbiAgICAgIEFbX2k5ICogbiArIF9pOV0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoc3VtIC0gUnBbX2k5XSkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2k5XTtcbiAgICB9IC8vIENoZWNrIGZvciBjb252ZXJnZW5jZVxuXG5cbiAgICB2YXIgSyA9IDA7XG5cbiAgICBmb3IgKHZhciBfaTEwID0gMDsgX2kxMCA8IG47IF9pMTArKykge1xuICAgICAgdmFyIEUgPSBBW19pMTAgKiBuICsgX2kxMF0gKyBSW19pMTAgKiBuICsgX2kxMF0gPiAwID8gMSA6IDA7XG4gICAgICBlW2l0ZXIgJSBvcHRzLm1pbkl0ZXJhdGlvbnMgKiBuICsgX2kxMF0gPSBFO1xuICAgICAgSyArPSBFO1xuICAgIH1cblxuICAgIGlmIChLID4gMCAmJiAoaXRlciA+PSBvcHRzLm1pbkl0ZXJhdGlvbnMgLSAxIHx8IGl0ZXIgPT0gb3B0cy5tYXhJdGVyYXRpb25zIC0gMSkpIHtcbiAgICAgIHZhciBfc3VtID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kxMSA9IDA7IF9pMTEgPCBuOyBfaTExKyspIHtcbiAgICAgICAgc2VbX2kxMV0gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIF9qNSA9IDA7IF9qNSA8IG9wdHMubWluSXRlcmF0aW9uczsgX2o1KyspIHtcbiAgICAgICAgICBzZVtfaTExXSArPSBlW19qNSAqIG4gKyBfaTExXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZVtfaTExXSA9PT0gMCB8fCBzZVtfaTExXSA9PT0gb3B0cy5taW5JdGVyYXRpb25zKSB7XG4gICAgICAgICAgX3N1bSsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChfc3VtID09PSBuKSB7XG4gICAgICAgIC8vIHRoZW4gd2UgaGF2ZSBjb252ZXJnZW5jZVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gSWRlbnRpZnkgZXhlbXBsYXJzIChjbHVzdGVyIGNlbnRlcnMpXG5cblxuICB2YXIgZXhlbXBsYXJzSW5kaWNlcyA9IGZpbmRFeGVtcGxhcnMobiwgUiwgQSk7IC8vIEFzc2lnbiBub2RlcyB0byBjbHVzdGVyc1xuXG4gIHZhciBjbHVzdGVySW5kaWNlcyA9IGFzc2lnbiQyKG4sIFMsIGV4ZW1wbGFyc0luZGljZXMpO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcblxuICBmb3IgKHZhciBjID0gMDsgYyA8IGV4ZW1wbGFyc0luZGljZXMubGVuZ3RoOyBjKyspIHtcbiAgICBjbHVzdGVyc1tleGVtcGxhcnNJbmRpY2VzW2NdXSA9IFtdO1xuICB9XG5cbiAgZm9yICh2YXIgX2kxMiA9IDA7IF9pMTIgPCBub2Rlcy5sZW5ndGg7IF9pMTIrKykge1xuICAgIHZhciBwb3MgPSBpZDJwb3NpdGlvbltub2Rlc1tfaTEyXS5pZCgpXTtcblxuICAgIHZhciBjbHVzdGVySW5kZXggPSBjbHVzdGVySW5kaWNlc1twb3NdO1xuXG4gICAgaWYgKGNsdXN0ZXJJbmRleCAhPSBudWxsKSB7XG4gICAgICAvLyB0aGUgbm9kZSBtYXkgaGF2ZSBub3QgYmVlbiBhc3NpZ25lZCBhIGNsdXN0ZXIgaWYgbm8gdmFsaWQgYXR0cmlidXRlcyB3ZXJlIHNwZWNpZmllZFxuICAgICAgY2x1c3RlcnNbY2x1c3RlckluZGV4XS5wdXNoKG5vZGVzW19pMTJdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmV0Q2x1c3RlcnMgPSBuZXcgQXJyYXkoZXhlbXBsYXJzSW5kaWNlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9jID0gMDsgX2MgPCBleGVtcGxhcnNJbmRpY2VzLmxlbmd0aDsgX2MrKykge1xuICAgIHJldENsdXN0ZXJzW19jXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3RlcnNbZXhlbXBsYXJzSW5kaWNlc1tfY11dKTtcbiAgfVxuXG4gIHJldHVybiByZXRDbHVzdGVycztcbn07XG5cbnZhciBhZmZpbml0eVByb3BhZ2F0aW9uJDEgPSB7XG4gIGFmZmluaXR5UHJvcGFnYXRpb246IGFmZmluaXR5UHJvcGFnYXRpb24sXG4gIGFwOiBhZmZpbml0eVByb3BhZ2F0aW9uXG59O1xuXG52YXIgaGllcmhvbHplckRlZmF1bHRzID0gZGVmYXVsdHMoe1xuICByb290OiB1bmRlZmluZWQsXG4gIGRpcmVjdGVkOiBmYWxzZVxufSk7XG52YXIgZWxlc2ZuJGIgPSB7XG4gIGhpZXJob2x6ZXI6IGZ1bmN0aW9uIGhpZXJob2x6ZXIob3B0aW9ucykge1xuICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgZGlyZWN0ZWQ6IGFyZ3NbMV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIF9oaWVyaG9semVyRGVmYXVsdHMgPSBoaWVyaG9semVyRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfaGllcmhvbHplckRlZmF1bHRzLnJvb3QsXG4gICAgICAgIGRpcmVjdGVkID0gX2hpZXJob2x6ZXJEZWZhdWx0cy5kaXJlY3RlZDtcblxuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgZGZsYWcgPSBmYWxzZTtcbiAgICB2YXIgb2RkSW47XG4gICAgdmFyIG9kZE91dDtcbiAgICB2YXIgc3RhcnRWZXJ0ZXg7XG4gICAgaWYgKHJvb3QpIHN0YXJ0VmVydGV4ID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0uaWQoKSA6IHJvb3RbMF0uaWQoKTtcbiAgICB2YXIgbm9kZXMgPSB7fTtcbiAgICB2YXIgZWRnZXMgPSB7fTtcblxuICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgZWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG5cbiAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgIHZhciBpbmQgPSBlbGUuaW5kZWdyZWUodHJ1ZSk7XG4gICAgICAgICAgdmFyIG91dGQgPSBlbGUub3V0ZGVncmVlKHRydWUpO1xuICAgICAgICAgIHZhciBkMSA9IGluZCAtIG91dGQ7XG4gICAgICAgICAgdmFyIGQyID0gb3V0ZCAtIGluZDtcblxuICAgICAgICAgIGlmIChkMSA9PSAxKSB7XG4gICAgICAgICAgICBpZiAob2RkSW4pIGRmbGFnID0gdHJ1ZTtlbHNlIG9kZEluID0gaWQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChkMiA9PSAxKSB7XG4gICAgICAgICAgICBpZiAob2RkT3V0KSBkZmxhZyA9IHRydWU7ZWxzZSBvZGRPdXQgPSBpZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGQyID4gMSB8fCBkMSA+IDEpIHtcbiAgICAgICAgICAgIGRmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2Rlc1tpZF0gPSBbXTtcbiAgICAgICAgICBlbGUub3V0Z29lcnMoKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoZS5pc0VkZ2UoKSkgbm9kZXNbaWRdLnB1c2goZS5pZCgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlZGdlc1tpZF0gPSBbdW5kZWZpbmVkLCBlbGUudGFyZ2V0KCkuaWQoKV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcblxuICAgICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgICAgdmFyIGQgPSBlbGUuZGVncmVlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKGQgJSAyKSB7XG4gICAgICAgICAgICBpZiAoIW9kZEluKSBvZGRJbiA9IGlkO2Vsc2UgaWYgKCFvZGRPdXQpIG9kZE91dCA9IGlkO2Vsc2UgZGZsYWcgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVzW2lkXSA9IFtdO1xuICAgICAgICAgIGVsZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub2Rlc1tpZF0ucHVzaChlLmlkKCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVkZ2VzW2lkXSA9IFtlbGUuc291cmNlKCkuaWQoKSwgZWxlLnRhcmdldCgpLmlkKCldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgZm91bmQ6IGZhbHNlLFxuICAgICAgdHJhaWw6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgaWYgKGRmbGFnKSByZXR1cm4gcmVzdWx0O2Vsc2UgaWYgKG9kZE91dCAmJiBvZGRJbikge1xuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChzdGFydFZlcnRleCAmJiBvZGRPdXQgIT0gc3RhcnRWZXJ0ZXgpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRWZXJ0ZXggPSBvZGRPdXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnRWZXJ0ZXggJiYgb2RkT3V0ICE9IHN0YXJ0VmVydGV4ICYmIG9kZEluICE9IHN0YXJ0VmVydGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmICghc3RhcnRWZXJ0ZXgpIHtcbiAgICAgICAgICBzdGFydFZlcnRleCA9IG9kZE91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXN0YXJ0VmVydGV4KSBzdGFydFZlcnRleCA9IGVsZXNbMF0uaWQoKTtcbiAgICB9XG5cbiAgICB2YXIgd2FsayA9IGZ1bmN0aW9uIHdhbGsodikge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gdjtcbiAgICAgIHZhciBzdWJ0b3VyID0gW3ZdO1xuICAgICAgdmFyIGFkaiwgYWRqVGFpbCwgYWRqSGVhZDtcblxuICAgICAgd2hpbGUgKG5vZGVzW2N1cnJlbnROb2RlXS5sZW5ndGgpIHtcbiAgICAgICAgYWRqID0gbm9kZXNbY3VycmVudE5vZGVdLnNoaWZ0KCk7XG4gICAgICAgIGFkalRhaWwgPSBlZGdlc1thZGpdWzBdO1xuICAgICAgICBhZGpIZWFkID0gZWRnZXNbYWRqXVsxXTtcblxuICAgICAgICBpZiAoY3VycmVudE5vZGUgIT0gYWRqSGVhZCkge1xuICAgICAgICAgIG5vZGVzW2FkakhlYWRdID0gbm9kZXNbYWRqSGVhZF0uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZSAhPSBhZGo7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBhZGpIZWFkO1xuICAgICAgICB9IGVsc2UgaWYgKCFkaXJlY3RlZCAmJiBjdXJyZW50Tm9kZSAhPSBhZGpUYWlsKSB7XG4gICAgICAgICAgbm9kZXNbYWRqVGFpbF0gPSBub2Rlc1thZGpUYWlsXS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlICE9IGFkajtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjdXJyZW50Tm9kZSA9IGFkalRhaWw7XG4gICAgICAgIH1cblxuICAgICAgICBzdWJ0b3VyLnVuc2hpZnQoYWRqKTtcbiAgICAgICAgc3VidG91ci51bnNoaWZ0KGN1cnJlbnROb2RlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN1YnRvdXI7XG4gICAgfTtcblxuICAgIHZhciB0cmFpbCA9IFtdO1xuICAgIHZhciBzdWJ0b3VyID0gW107XG4gICAgc3VidG91ciA9IHdhbGsoc3RhcnRWZXJ0ZXgpO1xuXG4gICAgd2hpbGUgKHN1YnRvdXIubGVuZ3RoICE9IDEpIHtcbiAgICAgIGlmIChub2Rlc1tzdWJ0b3VyWzBdXS5sZW5ndGggPT0gMCkge1xuICAgICAgICB0cmFpbC51bnNoaWZ0KGVsZXMuZ2V0RWxlbWVudEJ5SWQoc3VidG91ci5zaGlmdCgpKSk7XG4gICAgICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnRvdXIgPSB3YWxrKHN1YnRvdXIuc2hpZnQoKSkuY29uY2F0KHN1YnRvdXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTsgLy8gZmluYWwgbm9kZVxuXG4gICAgZm9yICh2YXIgZCBpbiBub2Rlcykge1xuICAgICAgaWYgKG5vZGVzW2RdLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdC5mb3VuZCA9IHRydWU7XG4gICAgcmVzdWx0LnRyYWlsID0gdGhpcy5zcGF3bih0cmFpbCwgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQgPSBmdW5jdGlvbiBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkKCkge1xuICB2YXIgZWxlcyA9IHRoaXM7XG4gIHZhciBub2RlcyA9IHt9O1xuICB2YXIgaWQgPSAwO1xuICB2YXIgZWRnZUNvdW50ID0gMDtcbiAgdmFyIGNvbXBvbmVudHMgPSBbXTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkRWRnZXMgPSB7fTtcblxuICB2YXIgYnVpbGRDb21wb25lbnQgPSBmdW5jdGlvbiBidWlsZENvbXBvbmVudCh4LCB5KSB7XG4gICAgdmFyIGkgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgIHZhciBjdXRzZXQgPSBbXTtcbiAgICB2YXIgY29tcG9uZW50ID0gZWxlcy5zcGF3bigpO1xuXG4gICAgd2hpbGUgKHN0YWNrW2ldLnggIT0geCB8fCBzdGFja1tpXS55ICE9IHkpIHtcbiAgICAgIGN1dHNldC5wdXNoKHN0YWNrLnBvcCgpLmVkZ2UpO1xuICAgICAgaS0tO1xuICAgIH1cblxuICAgIGN1dHNldC5wdXNoKHN0YWNrLnBvcCgpLmVkZ2UpO1xuICAgIGN1dHNldC5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBlZGdlLmNvbm5lY3RlZE5vZGVzKCkuaW50ZXJzZWN0aW9uKGVsZXMpO1xuICAgICAgY29tcG9uZW50Lm1lcmdlKGVkZ2UpO1xuICAgICAgY29ubmVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZCgpO1xuICAgICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLmNvbm5lY3RlZEVkZ2VzKCkuaW50ZXJzZWN0aW9uKGVsZXMpO1xuICAgICAgICBjb21wb25lbnQubWVyZ2Uobm9kZSk7XG5cbiAgICAgICAgaWYgKCFub2Rlc1tub2RlSWRdLmN1dFZlcnRleCkge1xuICAgICAgICAgIGNvbXBvbmVudC5tZXJnZShjb25uZWN0ZWRFZGdlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tcG9uZW50Lm1lcmdlKGNvbm5lY3RlZEVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVkZ2UuaXNMb29wKCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgfTtcblxuICB2YXIgYmljb25uZWN0ZWRTZWFyY2ggPSBmdW5jdGlvbiBiaWNvbm5lY3RlZFNlYXJjaChyb290LCBjdXJyZW50Tm9kZSwgcGFyZW50KSB7XG4gICAgaWYgKHJvb3QgPT09IHBhcmVudCkgZWRnZUNvdW50ICs9IDE7XG4gICAgbm9kZXNbY3VycmVudE5vZGVdID0ge1xuICAgICAgaWQ6IGlkLFxuICAgICAgbG93OiBpZCsrLFxuICAgICAgY3V0VmVydGV4OiBmYWxzZVxuICAgIH07XG4gICAgdmFyIGVkZ2VzID0gZWxlcy5nZXRFbGVtZW50QnlJZChjdXJyZW50Tm9kZSkuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oZWxlcyk7XG5cbiAgICBpZiAoZWRnZXMuc2l6ZSgpID09PSAwKSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goZWxlcy5zcGF3bihlbGVzLmdldEVsZW1lbnRCeUlkKGN1cnJlbnROb2RlKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc291cmNlSWQsIHRhcmdldElkLCBvdGhlck5vZGVJZCwgZWRnZUlkO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICBzb3VyY2VJZCA9IGVkZ2Uuc291cmNlKCkuaWQoKTtcbiAgICAgICAgdGFyZ2V0SWQgPSBlZGdlLnRhcmdldCgpLmlkKCk7XG4gICAgICAgIG90aGVyTm9kZUlkID0gc291cmNlSWQgPT09IGN1cnJlbnROb2RlID8gdGFyZ2V0SWQgOiBzb3VyY2VJZDtcblxuICAgICAgICBpZiAob3RoZXJOb2RlSWQgIT09IHBhcmVudCkge1xuICAgICAgICAgIGVkZ2VJZCA9IGVkZ2UuaWQoKTtcblxuICAgICAgICAgIGlmICghdmlzaXRlZEVkZ2VzW2VkZ2VJZF0pIHtcbiAgICAgICAgICAgIHZpc2l0ZWRFZGdlc1tlZGdlSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICB4OiBjdXJyZW50Tm9kZSxcbiAgICAgICAgICAgICAgeTogb3RoZXJOb2RlSWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghKG90aGVyTm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgYmljb25uZWN0ZWRTZWFyY2gocm9vdCwgb3RoZXJOb2RlSWQsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5sb3cgPSBNYXRoLm1pbihub2Rlc1tjdXJyZW50Tm9kZV0ubG93LCBub2Rlc1tvdGhlck5vZGVJZF0ubG93KTtcblxuICAgICAgICAgICAgaWYgKG5vZGVzW2N1cnJlbnROb2RlXS5pZCA8PSBub2Rlc1tvdGhlck5vZGVJZF0ubG93KSB7XG4gICAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5jdXRWZXJ0ZXggPSB0cnVlO1xuICAgICAgICAgICAgICBidWlsZENvbXBvbmVudChjdXJyZW50Tm9kZSwgb3RoZXJOb2RlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2Rlc1tjdXJyZW50Tm9kZV0ubG93ID0gTWF0aC5taW4obm9kZXNbY3VycmVudE5vZGVdLmxvdywgbm9kZXNbb3RoZXJOb2RlSWRdLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBlbGUuaWQoKTtcblxuICAgICAgaWYgKCEobm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICBlZGdlQ291bnQgPSAwO1xuICAgICAgICBiaWNvbm5lY3RlZFNlYXJjaChub2RlSWQsIG5vZGVJZCk7XG4gICAgICAgIG5vZGVzW25vZGVJZF0uY3V0VmVydGV4ID0gZWRnZUNvdW50ID4gMTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB2YXIgY3V0VmVydGljZXMgPSBPYmplY3Qua2V5cyhub2RlcykuZmlsdGVyKGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBub2Rlc1tpZF0uY3V0VmVydGV4O1xuICB9KS5tYXAoZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGVsZXMuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjdXQ6IGVsZXMuc3Bhd24oY3V0VmVydGljZXMpLFxuICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgfTtcbn07XG5cbnZhciBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkJDEgPSB7XG4gIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQ6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQsXG4gIGh0YmM6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQsXG4gIGh0YjogaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCxcbiAgaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZENvbXBvbmVudHM6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWRcbn07XG5cbnZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCA9IGZ1bmN0aW9uIHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkKCkge1xuICB2YXIgZWxlcyA9IHRoaXM7XG4gIHZhciBub2RlcyA9IHt9O1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgY29tcG9uZW50cyA9IFtdO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGN1dCA9IGVsZXMuc3Bhd24oZWxlcyk7XG5cbiAgdmFyIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoID0gZnVuY3Rpb24gc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2goc291cmNlTm9kZUlkKSB7XG4gICAgc3RhY2sucHVzaChzb3VyY2VOb2RlSWQpO1xuICAgIG5vZGVzW3NvdXJjZU5vZGVJZF0gPSB7XG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICBsb3c6IGluZGV4KyssXG4gICAgICBleHBsb3JlZDogZmFsc2VcbiAgICB9O1xuICAgIHZhciBjb25uZWN0ZWRFZGdlcyA9IGVsZXMuZ2V0RWxlbWVudEJ5SWQoc291cmNlTm9kZUlkKS5jb25uZWN0ZWRFZGdlcygpLmludGVyc2VjdGlvbihlbGVzKTtcbiAgICBjb25uZWN0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgdGFyZ2V0Tm9kZUlkID0gZWRnZS50YXJnZXQoKS5pZCgpO1xuXG4gICAgICBpZiAodGFyZ2V0Tm9kZUlkICE9PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgaWYgKCEodGFyZ2V0Tm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoKHRhcmdldE5vZGVJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5vZGVzW3RhcmdldE5vZGVJZF0uZXhwbG9yZWQpIHtcbiAgICAgICAgICBub2Rlc1tzb3VyY2VOb2RlSWRdLmxvdyA9IE1hdGgubWluKG5vZGVzW3NvdXJjZU5vZGVJZF0ubG93LCBub2Rlc1t0YXJnZXROb2RlSWRdLmxvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChub2Rlc1tzb3VyY2VOb2RlSWRdLmluZGV4ID09PSBub2Rlc1tzb3VyY2VOb2RlSWRdLmxvdykge1xuICAgICAgdmFyIGNvbXBvbmVudE5vZGVzID0gZWxlcy5zcGF3bigpO1xuXG4gICAgICBmb3IgKDs7KSB7XG4gICAgICAgIHZhciBub2RlSWQgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgY29tcG9uZW50Tm9kZXMubWVyZ2UoZWxlcy5nZXRFbGVtZW50QnlJZChub2RlSWQpKTtcbiAgICAgICAgbm9kZXNbbm9kZUlkXS5sb3cgPSBub2Rlc1tzb3VyY2VOb2RlSWRdLmluZGV4O1xuICAgICAgICBub2Rlc1tub2RlSWRdLmV4cGxvcmVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAobm9kZUlkID09PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcG9uZW50RWRnZXMgPSBjb21wb25lbnROb2Rlcy5lZGdlc1dpdGgoY29tcG9uZW50Tm9kZXMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudE5vZGVzLm1lcmdlKGNvbXBvbmVudEVkZ2VzKTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgY3V0ID0gY3V0LmRpZmZlcmVuY2UoY29tcG9uZW50KTtcbiAgICB9XG4gIH07XG5cbiAgZWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICB2YXIgbm9kZUlkID0gZWxlLmlkKCk7XG5cbiAgICAgIGlmICghKG5vZGVJZCBpbiBub2RlcykpIHtcbiAgICAgICAgc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2gobm9kZUlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGN1dDogY3V0LFxuICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgfTtcbn07XG5cbnZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCQxID0ge1xuICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZDogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gIHRzYzogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gIHRzY2M6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkLFxuICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkXG59O1xuXG52YXIgZWxlc2ZuJGMgPSB7fTtcbltlbGVzZm4sIGVsZXNmbiQxLCBlbGVzZm4kMiwgZWxlc2ZuJDMsIGVsZXNmbiQ0LCBlbGVzZm4kNSwgZWxlc2ZuJDYsIGVsZXNmbiQ3LCBlbGVzZm4kOCwgZWxlc2ZuJDksIGVsZXNmbiRhLCBtYXJrb3ZDbHVzdGVyaW5nJDEsIGtDbHVzdGVyaW5nLCBoaWVyYXJjaGljYWxDbHVzdGVyaW5nJDEsIGFmZmluaXR5UHJvcGFnYXRpb24kMSwgZWxlc2ZuJGIsIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQkMSwgdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQkMV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcHMpIHtcbiAgZXh0ZW5kKGVsZXNmbiRjLCBwcm9wcyk7XG59KTtcblxuLyohXG5FbWJlZGRhYmxlIE1pbmltdW0gU3RyaWN0bHktQ29tcGxpYW50IFByb21pc2VzL0ErIDEuMS4xIFRoZW5hYmxlXG5Db3B5cmlnaHQgKGMpIDIwMTMtMjAxNCBSYWxmIFMuIEVuZ2Vsc2NoYWxsIChodHRwOi8vZW5nZWxzY2hhbGwuY29tKVxuTGljZW5zZWQgdW5kZXIgVGhlIE1JVCBMaWNlbnNlIChodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKVxuKi9cblxuLyogIHByb21pc2Ugc3RhdGVzIFtQcm9taXNlcy9BKyAyLjFdICAqL1xudmFyIFNUQVRFX1BFTkRJTkcgPSAwO1xuLyogIFtQcm9taXNlcy9BKyAyLjEuMV0gICovXG5cbnZhciBTVEFURV9GVUxGSUxMRUQgPSAxO1xuLyogIFtQcm9taXNlcy9BKyAyLjEuMl0gICovXG5cbnZhciBTVEFURV9SRUpFQ1RFRCA9IDI7XG4vKiAgW1Byb21pc2VzL0ErIDIuMS4zXSAgKi9cblxuLyogIHByb21pc2Ugb2JqZWN0IGNvbnN0cnVjdG9yICAqL1xuXG52YXIgYXBpID0gZnVuY3Rpb24gYXBpKGV4ZWN1dG9yKSB7XG4gIC8qICBvcHRpb25hbGx5IHN1cHBvcnQgbm9uLWNvbnN0cnVjdG9yL3BsYWluLWZ1bmN0aW9uIGNhbGwgICovXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBhcGkpKSByZXR1cm4gbmV3IGFwaShleGVjdXRvcik7XG4gIC8qICBpbml0aWFsaXplIG9iamVjdCAgKi9cblxuICB0aGlzLmlkID0gJ1RoZW5hYmxlLzEuMC43JztcbiAgdGhpcy5zdGF0ZSA9IFNUQVRFX1BFTkRJTkc7XG4gIC8qICBpbml0aWFsIHN0YXRlICAqL1xuXG4gIHRoaXMuZnVsZmlsbFZhbHVlID0gdW5kZWZpbmVkO1xuICAvKiAgaW5pdGlhbCB2YWx1ZSAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDEuMywgMi4xLjIuMl0gICovXG5cbiAgdGhpcy5yZWplY3RSZWFzb24gPSB1bmRlZmluZWQ7XG4gIC8qICBpbml0aWFsIHJlYXNvbiAqL1xuXG4gIC8qICBbUHJvbWlzZXMvQSsgMS41LCAyLjEuMy4yXSAgKi9cblxuICB0aGlzLm9uRnVsZmlsbGVkID0gW107XG4gIC8qICBpbml0aWFsIGhhbmRsZXJzICAqL1xuXG4gIHRoaXMub25SZWplY3RlZCA9IFtdO1xuICAvKiAgaW5pdGlhbCBoYW5kbGVycyAgKi9cblxuICAvKiAgcHJvdmlkZSBvcHRpb25hbCBpbmZvcm1hdGlvbi1oaWRpbmcgcHJveHkgICovXG5cbiAgdGhpcy5wcm94eSA9IHtcbiAgICB0aGVuOiB0aGlzLnRoZW4uYmluZCh0aGlzKVxuICB9O1xuICAvKiAgc3VwcG9ydCBvcHRpb25hbCBleGVjdXRvciBmdW5jdGlvbiAgKi9cblxuICBpZiAodHlwZW9mIGV4ZWN1dG9yID09PSAnZnVuY3Rpb24nKSBleGVjdXRvci5jYWxsKHRoaXMsIHRoaXMuZnVsZmlsbC5iaW5kKHRoaXMpLCB0aGlzLnJlamVjdC5iaW5kKHRoaXMpKTtcbn07XG4vKiAgcHJvbWlzZSBBUEkgbWV0aG9kcyAgKi9cblxuXG5hcGkucHJvdG90eXBlID0ge1xuICAvKiAgcHJvbWlzZSByZXNvbHZpbmcgbWV0aG9kcyAgKi9cbiAgZnVsZmlsbDogZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkge1xuICAgIHJldHVybiBkZWxpdmVyKHRoaXMsIFNUQVRFX0ZVTEZJTExFRCwgJ2Z1bGZpbGxWYWx1ZScsIHZhbHVlKTtcbiAgfSxcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gZGVsaXZlcih0aGlzLCBTVEFURV9SRUpFQ1RFRCwgJ3JlamVjdFJlYXNvbicsIHZhbHVlKTtcbiAgfSxcblxuICAvKiAgXCJUaGUgdGhlbiBNZXRob2RcIiBbUHJvbWlzZXMvQSsgMS4xLCAxLjIsIDIuMl0gICovXG4gIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICB2YXIgY3VyciA9IHRoaXM7XG4gICAgdmFyIG5leHQgPSBuZXcgYXBpKCk7XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuN10gICovXG5cbiAgICBjdXJyLm9uRnVsZmlsbGVkLnB1c2gocmVzb2x2ZXIob25GdWxmaWxsZWQsIG5leHQsICdmdWxmaWxsJykpO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIvMi4yLjZdICAqL1xuXG4gICAgY3Vyci5vblJlamVjdGVkLnB1c2gocmVzb2x2ZXIob25SZWplY3RlZCwgbmV4dCwgJ3JlamVjdCcpKTtcbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi4zLzIuMi42XSAgKi9cblxuICAgIGV4ZWN1dGUoY3Vycik7XG4gICAgcmV0dXJuIG5leHQucHJveHk7XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNywgMy4zXSAgKi9cbiAgfVxufTtcbi8qICBkZWxpdmVyIGFuIGFjdGlvbiAgKi9cblxudmFyIGRlbGl2ZXIgPSBmdW5jdGlvbiBkZWxpdmVyKGN1cnIsIHN0YXRlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAoY3Vyci5zdGF0ZSA9PT0gU1RBVEVfUEVORElORykge1xuICAgIGN1cnIuc3RhdGUgPSBzdGF0ZTtcbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMS4yLjEsIDIuMS4zLjFdICAqL1xuXG4gICAgY3VycltuYW1lXSA9IHZhbHVlO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4xLjIuMiwgMi4xLjMuMl0gICovXG5cbiAgICBleGVjdXRlKGN1cnIpO1xuICB9XG5cbiAgcmV0dXJuIGN1cnI7XG59O1xuLyogIGV4ZWN1dGUgYWxsIGhhbmRsZXJzICAqL1xuXG5cbnZhciBleGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZShjdXJyKSB7XG4gIGlmIChjdXJyLnN0YXRlID09PSBTVEFURV9GVUxGSUxMRUQpIGV4ZWN1dGVfaGFuZGxlcnMoY3VyciwgJ29uRnVsZmlsbGVkJywgY3Vyci5mdWxmaWxsVmFsdWUpO2Vsc2UgaWYgKGN1cnIuc3RhdGUgPT09IFNUQVRFX1JFSkVDVEVEKSBleGVjdXRlX2hhbmRsZXJzKGN1cnIsICdvblJlamVjdGVkJywgY3Vyci5yZWplY3RSZWFzb24pO1xufTtcbi8qICBleGVjdXRlIHBhcnRpY3VsYXIgc2V0IG9mIGhhbmRsZXJzICAqL1xuXG5cbnZhciBleGVjdXRlX2hhbmRsZXJzID0gZnVuY3Rpb24gZXhlY3V0ZV9oYW5kbGVycyhjdXJyLCBuYW1lLCB2YWx1ZSkge1xuICAvKiBnbG9iYWwgc2V0SW1tZWRpYXRlOiB0cnVlICovXG5cbiAgLyogZ2xvYmFsIHNldFRpbWVvdXQ6IHRydWUgKi9cblxuICAvKiAgc2hvcnQtY2lyY3VpdCBwcm9jZXNzaW5nICAqL1xuICBpZiAoY3VycltuYW1lXS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgLyogIGl0ZXJhdGUgb3ZlciBhbGwgaGFuZGxlcnMsIGV4YWN0bHkgb25jZSAgKi9cblxuICB2YXIgaGFuZGxlcnMgPSBjdXJyW25hbWVdO1xuICBjdXJyW25hbWVdID0gW107XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIuMywgMi4yLjMuM10gICovXG5cbiAgdmFyIGZ1bmMgPSBmdW5jdGlvbiBmdW5jKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZXJzW2ldKHZhbHVlKTtcbiAgICB9XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNV0gICovXG5cbiAgfTtcbiAgLyogIGV4ZWN1dGUgcHJvY2VkdXJlIGFzeW5jaHJvbm91c2x5ICAqL1xuXG4gIC8qICBbUHJvbWlzZXMvQSsgMi4yLjQsIDMuMV0gICovXG5cblxuICBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJykgc2V0SW1tZWRpYXRlKGZ1bmMpO2Vsc2Ugc2V0VGltZW91dChmdW5jLCAwKTtcbn07XG4vKiAgZ2VuZXJhdGUgYSByZXNvbHZlciBmdW5jdGlvbiAgKi9cblxuXG52YXIgcmVzb2x2ZXIgPSBmdW5jdGlvbiByZXNvbHZlcihjYiwgbmV4dCwgbWV0aG9kKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKVxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuMSwgMi4yLjcuMywgMi4yLjcuNF0gICovXG4gICAgICBuZXh0W21ldGhvZF0uY2FsbChuZXh0LCB2YWx1ZSk7XG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LjMsIDIuMi43LjRdICAqL1xuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2IodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIuMSwgMi4yLjMuMSwgMi4yLjUsIDMuMl0gICovXG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgbmV4dC5yZWplY3QoZSk7XG4gICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNy4yXSAgKi9cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUobmV4dCwgcmVzdWx0KTtcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNy4xXSAgKi9cbiAgICAgIH1cbiAgfTtcbn07XG4vKiAgXCJQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlXCIgICovXG5cbi8qICBbUHJvbWlzZXMvQSsgMi4zXSAgKi9cblxuXG52YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUocHJvbWlzZSwgeCkge1xuICAvKiAgc2FuaXR5IGNoZWNrIGFyZ3VtZW50cyAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDIuMy4xXSAgKi9cbiAgaWYgKHByb21pc2UgPT09IHggfHwgcHJvbWlzZS5wcm94eSA9PT0geCkge1xuICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGYnKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qICBzdXJnaWNhbGx5IGNoZWNrIGZvciBhIFwidGhlblwiIG1ldGhvZFxuICAgIChtYWlubHkgdG8ganVzdCBjYWxsIHRoZSBcImdldHRlclwiIG9mIFwidGhlblwiIG9ubHkgb25jZSkgICovXG5cblxuICB2YXIgdGhlbjtcblxuICBpZiAoX3R5cGVvZih4KSA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICB0aGVuID0geC50aGVuO1xuICAgIH1cbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjEsIDMuNV0gICovXG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4yXSAgKi9cblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICAvKiAgaGFuZGxlIG93biBUaGVuYWJsZXMgICAgW1Byb21pc2VzL0ErIDIuMy4yXVxuICAgIGFuZCBzaW1pbGFyIFwidGhlbmFibGVzXCIgW1Byb21pc2VzL0ErIDIuMy4zXSAgKi9cblxuXG4gIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8qICBjYWxsIHJldHJpZXZlZCBcInRoZW5cIiBtZXRob2QgKi9cblxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zXSAgKi9cbiAgICAgIHRoZW4uY2FsbCh4LFxuICAgICAgLyogIHJlc29sdmVQcm9taXNlICAqL1xuXG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuMV0gICovXG4gICAgICBmdW5jdGlvbiAoeSkge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuM10gICovXG5cbiAgICAgICAgaWYgKHkgPT09IHgpXG4gICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAzLjZdICAqL1xuICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ2NpcmN1bGFyIHRoZW5hYmxlIGNoYWluJykpO2Vsc2UgcmVzb2x2ZShwcm9taXNlLCB5KTtcbiAgICAgIH0sXG4gICAgICAvKiAgcmVqZWN0UHJvbWlzZSAgKi9cblxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjJdICAqL1xuICAgICAgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkKSByZXR1cm47XG4gICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjNdICAqL1xuXG4gICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFyZXNvbHZlZClcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjNdICAqL1xuICAgICAgICBwcm9taXNlLnJlamVjdChlKTtcbiAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMy40XSAgKi9cbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cbiAgLyogIGhhbmRsZSBvdGhlciB2YWx1ZXMgICovXG5cblxuICBwcm9taXNlLmZ1bGZpbGwoeCk7XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4zLjQsIDIuMy4zLjRdICAqL1xufTsgLy8gc28gd2UgYWx3YXlzIGhhdmUgUHJvbWlzZS5hbGwoKVxuXG5cbmFwaS5hbGwgPSBmdW5jdGlvbiAocHMpIHtcbiAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmVBbGwsIHJlamVjdEFsbCkge1xuICAgIHZhciB2YWxzID0gbmV3IEFycmF5KHBzLmxlbmd0aCk7XG4gICAgdmFyIGRvbmVDb3VudCA9IDA7XG5cbiAgICB2YXIgZnVsZmlsbCA9IGZ1bmN0aW9uIGZ1bGZpbGwoaSwgdmFsKSB7XG4gICAgICB2YWxzW2ldID0gdmFsO1xuICAgICAgZG9uZUNvdW50Kys7XG5cbiAgICAgIGlmIChkb25lQ291bnQgPT09IHBzLmxlbmd0aCkge1xuICAgICAgICByZXNvbHZlQWxsKHZhbHMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgdmFyIHAgPSBwc1tpXTtcbiAgICAgICAgdmFyIGlzUHJvbWlzZSA9IHAgIT0gbnVsbCAmJiBwLnRoZW4gIT0gbnVsbDtcblxuICAgICAgICBpZiAoaXNQcm9taXNlKSB7XG4gICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIGZ1bGZpbGwoaSwgdmFsKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3RBbGwoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdmFsID0gcDtcbiAgICAgICAgICBmdWxmaWxsKGksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pKGkpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5hcGkucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlc29sdmUodmFsKTtcbiAgfSk7XG59O1xuXG5hcGkucmVqZWN0ID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gbmV3IGFwaShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVqZWN0KHZhbCk7XG4gIH0pO1xufTtcblxudmFyIFByb21pc2UkMSA9IHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyA/IFByb21pc2UgOiBhcGk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxudmFyIEFuaW1hdGlvbiA9IGZ1bmN0aW9uIEFuaW1hdGlvbih0YXJnZXQsIG9wdHMsIG9wdHMyKSB7XG4gIHZhciBpc0NvcmUgPSBjb3JlKHRhcmdldCk7XG4gIHZhciBpc0VsZSA9ICFpc0NvcmU7XG5cbiAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZSA9IGV4dGVuZCh7XG4gICAgZHVyYXRpb246IDEwMDBcbiAgfSwgb3B0cywgb3B0czIpO1xuXG4gIF9wLnRhcmdldCA9IHRhcmdldDtcbiAgX3Auc3R5bGUgPSBfcC5zdHlsZSB8fCBfcC5jc3M7XG4gIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgX3AucGxheWluZyA9IGZhbHNlO1xuICBfcC5ob29rZWQgPSBmYWxzZTtcbiAgX3AuYXBwbHlpbmcgPSBmYWxzZTtcbiAgX3AucHJvZ3Jlc3MgPSAwO1xuICBfcC5jb21wbGV0ZXMgPSBbXTtcbiAgX3AuZnJhbWVzID0gW107XG5cbiAgaWYgKF9wLmNvbXBsZXRlICYmIGZuKF9wLmNvbXBsZXRlKSkge1xuICAgIF9wLmNvbXBsZXRlcy5wdXNoKF9wLmNvbXBsZXRlKTtcbiAgfVxuXG4gIGlmIChpc0VsZSkge1xuICAgIHZhciBwb3MgPSB0YXJnZXQucG9zaXRpb24oKTtcbiAgICBfcC5zdGFydFBvc2l0aW9uID0gX3Auc3RhcnRQb3NpdGlvbiB8fCB7XG4gICAgICB4OiBwb3MueCxcbiAgICAgIHk6IHBvcy55XG4gICAgfTtcbiAgICBfcC5zdGFydFN0eWxlID0gX3Auc3RhcnRTdHlsZSB8fCB0YXJnZXQuY3koKS5zdHlsZSgpLmdldEFuaW1hdGlvblN0YXJ0U3R5bGUodGFyZ2V0LCBfcC5zdHlsZSk7XG4gIH1cblxuICBpZiAoaXNDb3JlKSB7XG4gICAgdmFyIHBhbiA9IHRhcmdldC5wYW4oKTtcbiAgICBfcC5zdGFydFBhbiA9IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9O1xuICAgIF9wLnN0YXJ0Wm9vbSA9IHRhcmdldC56b29tKCk7XG4gIH0gLy8gZm9yIGZ1dHVyZSB0aW1lbGluZS9hbmltYXRpb25zIGltcGxcblxuXG4gIHRoaXMubGVuZ3RoID0gMTtcbiAgdGhpc1swXSA9IHRoaXM7XG59O1xuXG52YXIgYW5pZm4gPSBBbmltYXRpb24ucHJvdG90eXBlO1xuZXh0ZW5kKGFuaWZuLCB7XG4gIGluc3RhbmNlU3RyaW5nOiBmdW5jdGlvbiBpbnN0YW5jZVN0cmluZygpIHtcbiAgICByZXR1cm4gJ2FuaW1hdGlvbic7XG4gIH0sXG4gIGhvb2s6IGZ1bmN0aW9uIGhvb2soKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgIGlmICghX3AuaG9va2VkKSB7XG4gICAgICAvLyBhZGQgdG8gdGFyZ2V0J3MgYW5pbWF0aW9uIHF1ZXVlXG4gICAgICB2YXIgcTtcbiAgICAgIHZhciB0QW5pID0gX3AudGFyZ2V0Ll9wcml2YXRlLmFuaW1hdGlvbjtcblxuICAgICAgaWYgKF9wLnF1ZXVlKSB7XG4gICAgICAgIHEgPSB0QW5pLnF1ZXVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcSA9IHRBbmkuY3VycmVudDtcbiAgICAgIH1cblxuICAgICAgcS5wdXNoKHRoaXMpOyAvLyBhZGQgdG8gdGhlIGFuaW1hdGlvbiBsb29wIHBvb2xcblxuICAgICAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24oX3AudGFyZ2V0KSkge1xuICAgICAgICBfcC50YXJnZXQuY3koKS5hZGRUb0FuaW1hdGlvblBvb2woX3AudGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgX3AuaG9va2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcGxheTogZnVuY3Rpb24gcGxheSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlOyAvLyBhdXRvcmV3aW5kXG5cbiAgICBpZiAoX3AucHJvZ3Jlc3MgPT09IDEpIHtcbiAgICAgIF9wLnByb2dyZXNzID0gMDtcbiAgICB9XG5cbiAgICBfcC5wbGF5aW5nID0gdHJ1ZTtcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7IC8vIG5lZWRzIHRvIGJlIHN0YXJ0ZWQgYnkgYW5pbWF0aW9uIGxvb3BcblxuICAgIF9wLnN0b3BwZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhvb2soKTsgLy8gdGhlIGFuaW1hdGlvbiBsb29wIHdpbGwgc3RhcnQgdGhlIGFuaW1hdGlvbi4uLlxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHBsYXlpbmc6IGZ1bmN0aW9uIHBsYXlpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucGxheWluZztcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgX3AuYXBwbHlpbmcgPSB0cnVlO1xuICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTsgLy8gbmVlZHMgdG8gYmUgc3RhcnRlZCBieSBhbmltYXRpb24gbG9vcFxuXG4gICAgX3Auc3RvcHBlZCA9IGZhbHNlO1xuICAgIHRoaXMuaG9vaygpOyAvLyB0aGUgYW5pbWF0aW9uIGxvb3Agd2lsbCBhcHBseSB0aGUgYW5pbWF0aW9uIGF0IHRoaXMgcHJvZ3Jlc3NcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBhcHBseWluZzogZnVuY3Rpb24gYXBwbHlpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuYXBwbHlpbmc7XG4gIH0sXG4gIHBhdXNlOiBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIF9wLnBsYXlpbmcgPSBmYWxzZTtcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICBfcC5wbGF5aW5nID0gZmFsc2U7XG4gICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuICAgIF9wLnN0b3BwZWQgPSB0cnVlOyAvLyB0byBiZSByZW1vdmVkIGZyb20gYW5pbWF0aW9uIHF1ZXVlc1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJld2luZDogZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyZXNzKDApO1xuICB9LFxuICBmYXN0Zm9yd2FyZDogZnVuY3Rpb24gZmFzdGZvcndhcmQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3MoMSk7XG4gIH0sXG4gIHRpbWU6IGZ1bmN0aW9uIHRpbWUodCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AucHJvZ3Jlc3MgKiBfcC5kdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3ModCAvIF9wLmR1cmF0aW9uKTtcbiAgICB9XG4gIH0sXG4gIHByb2dyZXNzOiBmdW5jdGlvbiBwcm9ncmVzcyhwKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgd2FzUGxheWluZyA9IF9wLnBsYXlpbmc7XG5cbiAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AucHJvZ3Jlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICAgIHRoaXMucGF1c2UoKTtcbiAgICAgIH1cblxuICAgICAgX3AucHJvZ3Jlc3MgPSBwO1xuICAgICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAod2FzUGxheWluZykge1xuICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29tcGxldGVkOiBmdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucHJvZ3Jlc3MgPT09IDE7XG4gIH0sXG4gIHJldmVyc2U6IGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgd2FzUGxheWluZyA9IF9wLnBsYXlpbmc7XG5cbiAgICBpZiAod2FzUGxheWluZykge1xuICAgICAgdGhpcy5wYXVzZSgpO1xuICAgIH1cblxuICAgIF9wLnByb2dyZXNzID0gMSAtIF9wLnByb2dyZXNzO1xuICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIHZhciBzd2FwID0gZnVuY3Rpb24gc3dhcChhLCBiKSB7XG4gICAgICB2YXIgX3BhID0gX3BbYV07XG5cbiAgICAgIGlmIChfcGEgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF9wW2FdID0gX3BbYl07XG4gICAgICBfcFtiXSA9IF9wYTtcbiAgICB9O1xuXG4gICAgc3dhcCgnem9vbScsICdzdGFydFpvb20nKTtcbiAgICBzd2FwKCdwYW4nLCAnc3RhcnRQYW4nKTtcbiAgICBzd2FwKCdwb3NpdGlvbicsICdzdGFydFBvc2l0aW9uJyk7IC8vIHN3YXAgc3R5bGVzXG5cbiAgICBpZiAoX3Auc3R5bGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3Auc3R5bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHByb3AgPSBfcC5zdHlsZVtpXTtcbiAgICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgICAgIHZhciBzdGFydFN0eWxlUHJvcCA9IF9wLnN0YXJ0U3R5bGVbbmFtZV07XG4gICAgICAgIF9wLnN0YXJ0U3R5bGVbbmFtZV0gPSBwcm9wO1xuICAgICAgICBfcC5zdHlsZVtpXSA9IHN0YXJ0U3R5bGVQcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcHJvbWlzZTogZnVuY3Rpb24gcHJvbWlzZSh0eXBlKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgYXJyO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdmcmFtZSc6XG4gICAgICAgIGFyciA9IF9wLmZyYW1lcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICBhcnIgPSBfcC5jb21wbGV0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgYXJyLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSk7XG5hbmlmbi5jb21wbGV0ZSA9IGFuaWZuLmNvbXBsZXRlZDtcbmFuaWZuLnJ1biA9IGFuaWZuLnBsYXk7XG5hbmlmbi5ydW5uaW5nID0gYW5pZm4ucGxheWluZztcblxudmFyIGRlZmluZSA9IHtcbiAgYW5pbWF0ZWQ6IGZ1bmN0aW9uIGFuaW1hdGVkKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBhbmltYXRlZEltcGwoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IGFsbFswXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLl9wcml2YXRlLmFuaW1hdGlvbi5jdXJyZW50Lmxlbmd0aCA+IDA7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgLy8gYW5pbWF0ZWRcbiAgY2xlYXJRdWV1ZTogZnVuY3Rpb24gY2xlYXJRdWV1ZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYXJRdWV1ZUltcGwoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICBlbGUuX3ByaXZhdGUuYW5pbWF0aW9uLnF1ZXVlID0gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gIH0sXG4gIC8vIGNsZWFyUXVldWVcbiAgZGVsYXk6IGZ1bmN0aW9uIGRlbGF5KCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBkZWxheUltcGwodGltZSwgY29tcGxldGUpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSh7XG4gICAgICAgIGRlbGF5OiB0aW1lLFxuICAgICAgICBkdXJhdGlvbjogdGltZSxcbiAgICAgICAgY29tcGxldGU6IGNvbXBsZXRlXG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxuICAvLyBkZWxheVxuICBkZWxheUFuaW1hdGlvbjogZnVuY3Rpb24gZGVsYXlBbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRlbGF5QW5pbWF0aW9uSW1wbCh0aW1lLCBjb21wbGV0ZSkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5hbmltYXRpb24oe1xuICAgICAgICBkZWxheTogdGltZSxcbiAgICAgICAgZHVyYXRpb246IHRpbWUsXG4gICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSxcbiAgLy8gZGVsYXlcbiAgYW5pbWF0aW9uOiBmdW5jdGlvbiBhbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFuaW1hdGlvbkltcGwocHJvcGVydGllcywgcGFyYW1zKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuICAgICAgdmFyIGlzQ29yZSA9ICFzZWxmSXNBcnJheUxpa2U7XG4gICAgICB2YXIgaXNFbGVzID0gIWlzQ29yZTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcbiAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICB2YXIgcHJvcGVydGllc0VtcHR5ID0gT2JqZWN0LmtleXMocHJvcGVydGllcykubGVuZ3RoID09PSAwO1xuXG4gICAgICBpZiAocHJvcGVydGllc0VtcHR5KSB7XG4gICAgICAgIHJldHVybiBuZXcgQW5pbWF0aW9uKGFsbFswXSwgcHJvcGVydGllcyk7IC8vIG5vdGhpbmcgdG8gYW5pbWF0ZVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydGllcy5kdXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSA0MDA7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcGVydGllcy5kdXJhdGlvbikge1xuICAgICAgICBjYXNlICdzbG93JzpcbiAgICAgICAgICBwcm9wZXJ0aWVzLmR1cmF0aW9uID0gNjAwO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Zhc3QnOlxuICAgICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSAyMDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZXMpIHtcbiAgICAgICAgcHJvcGVydGllcy5zdHlsZSA9IHN0eWxlLmdldFByb3BzTGlzdChwcm9wZXJ0aWVzLnN0eWxlIHx8IHByb3BlcnRpZXMuY3NzKTtcbiAgICAgICAgcHJvcGVydGllcy5jc3MgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZXMgJiYgcHJvcGVydGllcy5yZW5kZXJlZFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHJwb3MgPSBwcm9wZXJ0aWVzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pO1xuICAgICAgfSAvLyBvdmVycmlkZSBwYW4gdy8gcGFuQnkgaWYgc2V0XG5cblxuICAgICAgaWYgKGlzQ29yZSAmJiBwcm9wZXJ0aWVzLnBhbkJ5ICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHBhbkJ5ID0gcHJvcGVydGllcy5wYW5CeTtcbiAgICAgICAgdmFyIGN5UGFuID0gY3kucGFuKCk7XG4gICAgICAgIHByb3BlcnRpZXMucGFuID0ge1xuICAgICAgICAgIHg6IGN5UGFuLnggKyBwYW5CeS54LFxuICAgICAgICAgIHk6IGN5UGFuLnkgKyBwYW5CeS55XG4gICAgICAgIH07XG4gICAgICB9IC8vIG92ZXJyaWRlIHBhbiB3LyBjZW50ZXIgaWYgc2V0XG5cblxuICAgICAgdmFyIGNlbnRlciA9IHByb3BlcnRpZXMuY2VudGVyIHx8IHByb3BlcnRpZXMuY2VudHJlO1xuXG4gICAgICBpZiAoaXNDb3JlICYmIGNlbnRlciAhPSBudWxsKSB7XG4gICAgICAgIHZhciBjZW50ZXJQYW4gPSBjeS5nZXRDZW50ZXJQYW4oY2VudGVyLmVsZXMsIHByb3BlcnRpZXMuem9vbSk7XG5cbiAgICAgICAgaWYgKGNlbnRlclBhbiAhPSBudWxsKSB7XG4gICAgICAgICAgcHJvcGVydGllcy5wYW4gPSBjZW50ZXJQYW47XG4gICAgICAgIH1cbiAgICAgIH0gLy8gb3ZlcnJpZGUgcGFuICYgem9vbSB3LyBmaXQgaWYgc2V0XG5cblxuICAgICAgaWYgKGlzQ29yZSAmJiBwcm9wZXJ0aWVzLmZpdCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBmaXQgPSBwcm9wZXJ0aWVzLmZpdDtcbiAgICAgICAgdmFyIGZpdFZwID0gY3kuZ2V0Rml0Vmlld3BvcnQoZml0LmVsZXMgfHwgZml0LmJvdW5kaW5nQm94LCBmaXQucGFkZGluZyk7XG5cbiAgICAgICAgaWYgKGZpdFZwICE9IG51bGwpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnBhbiA9IGZpdFZwLnBhbjtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnpvb20gPSBmaXRWcC56b29tO1xuICAgICAgICB9XG4gICAgICB9IC8vIG92ZXJyaWRlIHpvb20gKCYgcG90ZW50aWFsbHkgcGFuKSB3LyB6b29tIG9iaiBpZiBzZXRcblxuXG4gICAgICBpZiAoaXNDb3JlICYmIHBsYWluT2JqZWN0KHByb3BlcnRpZXMuem9vbSkpIHtcbiAgICAgICAgdmFyIHZwID0gY3kuZ2V0Wm9vbWVkVmlld3BvcnQocHJvcGVydGllcy56b29tKTtcblxuICAgICAgICBpZiAodnAgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh2cC56b29tZWQpIHtcbiAgICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IHZwLnpvb207XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZwLnBhbm5lZCkge1xuICAgICAgICAgICAgcHJvcGVydGllcy5wYW4gPSB2cC5wYW47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IG51bGw7IC8vIGFuIGluYXZhbGlkIHpvb20gKGUuZy4gbm8gZGVsdGEpIGdldHMgYXV0b21hdGljYWxseSBkZXN0cm95ZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEFuaW1hdGlvbihhbGxbMF0sIHByb3BlcnRpZXMpO1xuICAgIH07XG4gIH0sXG4gIC8vIGFuaW1hdGVcbiAgYW5pbWF0ZTogZnVuY3Rpb24gYW5pbWF0ZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gYW5pbWF0ZUltcGwocHJvcGVydGllcywgcGFyYW1zKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICB9IC8vIG1hbnVhbGx5IGhvb2sgYW5kIHJ1biB0aGUgYW5pbWF0aW9uXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGFsbFtpXTtcbiAgICAgICAgdmFyIHF1ZXVlID0gZWxlLmFuaW1hdGVkKCkgJiYgKHByb3BlcnRpZXMucXVldWUgPT09IHVuZGVmaW5lZCB8fCBwcm9wZXJ0aWVzLnF1ZXVlKTtcbiAgICAgICAgdmFyIGFuaSA9IGVsZS5hbmltYXRpb24ocHJvcGVydGllcywgcXVldWUgPyB7XG4gICAgICAgICAgcXVldWU6IHRydWVcbiAgICAgICAgfSA6IHVuZGVmaW5lZCk7XG4gICAgICAgIGFuaS5wbGF5KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH07XG4gIH0sXG4gIC8vIGFuaW1hdGVcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gc3RvcEltcGwoY2xlYXJRdWV1ZSwganVtcFRvRW5kKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciBhbmlzID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhbmlzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIGFuaSA9IGFuaXNbal07XG4gICAgICAgICAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuXG4gICAgICAgICAgaWYgKGp1bXBUb0VuZCkge1xuICAgICAgICAgICAgLy8gbmV4dCBpdGVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBsb29wLCB0aGUgYW5pbWF0aW9uXG4gICAgICAgICAgICAvLyB3aWxsIGdvIHN0cmFpZ2h0IHRvIHRoZSBlbmQgYW5kIGJlIHJlbW92ZWRcbiAgICAgICAgICAgIGFuaV9wLmR1cmF0aW9uID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2xlYXIgdGhlIHF1ZXVlIG9mIGZ1dHVyZSBhbmltYXRpb25zXG5cblxuICAgICAgICBpZiAoY2xlYXJRdWV1ZSkge1xuICAgICAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFqdW1wVG9FbmQpIHtcbiAgICAgICAgICBfcC5hbmltYXRpb24uY3VycmVudCA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IC8vIHdlIGhhdmUgdG8gbm90aWZ5ICh0aGUgYW5pbWF0aW9uIGxvb3AgZG9lc24ndCBkbyBpdCBmb3IgdXMgb24gYHN0b3BgKVxuXG5cbiAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgfSAvLyBzdG9wXG5cbn07IC8vIGRlZmluZVxuXG52YXIgZGVmaW5lJDEgPSB7XG4gIC8vIGFjY2VzcyBkYXRhIGZpZWxkXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEocGFyYW1zKSB7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgZmllbGQ6ICdkYXRhJyxcbiAgICAgIGJpbmRpbmdFdmVudDogJ2RhdGEnLFxuICAgICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICAgIGFsbG93U2V0dGluZzogZmFsc2UsXG4gICAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgICAgc2V0dGluZ0V2ZW50OiAnZGF0YScsXG4gICAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogZmFsc2UsXG4gICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICBpbW11dGFibGVLZXlzOiB7fSxcbiAgICAgIC8vIGtleSA9PiB0cnVlIGlmIGltbXV0YWJsZVxuICAgICAgdXBkYXRlU3R5bGU6IGZhbHNlLFxuICAgICAgYmVmb3JlR2V0OiBmdW5jdGlvbiBiZWZvcmVHZXQoc2VsZikge30sXG4gICAgICBiZWZvcmVTZXQ6IGZ1bmN0aW9uIGJlZm9yZVNldChzZWxmLCBvYmopIHt9LFxuICAgICAgb25TZXQ6IGZ1bmN0aW9uIG9uU2V0KHNlbGYpIHt9LFxuICAgICAgY2FuU2V0OiBmdW5jdGlvbiBjYW5TZXQoc2VsZikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRhdGFJbXBsKG5hbWUsIHZhbHVlKSB7XG4gICAgICB2YXIgcCA9IHBhcmFtcztcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBzZWxmSXNBcnJheUxpa2UgPSBzZWxmLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICB2YXIgc2luZ2xlID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZlswXSA6IHNlbGY7IC8vIC5kYXRhKCdmb28nLCAuLi4pXG5cbiAgICAgIGlmIChzdHJpbmcobmFtZSkpIHtcbiAgICAgICAgLy8gc2V0IG9yIGdldCBwcm9wZXJ0eVxuICAgICAgICAvLyAuZGF0YSgnZm9vJylcbiAgICAgICAgaWYgKHAuYWxsb3dHZXR0aW5nICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBnZXRcbiAgICAgICAgICB2YXIgcmV0O1xuXG4gICAgICAgICAgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgcC5iZWZvcmVHZXQoc2luZ2xlKTtcbiAgICAgICAgICAgIHJldCA9IHNpbmdsZS5fcHJpdmF0ZVtwLmZpZWxkXVtuYW1lXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmV0OyAvLyAuZGF0YSgnZm9vJywgJ2JhcicpXG4gICAgICAgIH0gZWxzZSBpZiAocC5hbGxvd1NldHRpbmcgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHNldFxuICAgICAgICAgIHZhciB2YWxpZCA9ICFwLmltbXV0YWJsZUtleXNbbmFtZV07XG5cbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjaGFuZ2UgPSBfZGVmaW5lUHJvcGVydHkoe30sIG5hbWUsIHZhbHVlKTtcblxuICAgICAgICAgICAgcC5iZWZvcmVTZXQoc2VsZiwgY2hhbmdlKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhbGwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBlbGUgPSBhbGxbaV07XG5cbiAgICAgICAgICAgICAgaWYgKHAuY2FuU2V0KGVsZSkpIHtcbiAgICAgICAgICAgICAgICBlbGUuX3ByaXZhdGVbcC5maWVsZF1bbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgICAgIGlmIChwLnVwZGF0ZVN0eWxlKSB7XG4gICAgICAgICAgICAgIHNlbGYudXBkYXRlU3R5bGUoKTtcbiAgICAgICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgICAgIHAub25TZXQoc2VsZik7XG5cbiAgICAgICAgICAgIGlmIChwLnNldHRpbmdUcmlnZ2Vyc0V2ZW50KSB7XG4gICAgICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIC5kYXRhKHsgJ2Zvbyc6ICdiYXInIH0pXG5cbiAgICAgIH0gZWxzZSBpZiAocC5hbGxvd1NldHRpbmcgJiYgcGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgICAgLy8gZXh0ZW5kXG4gICAgICAgIHZhciBvYmogPSBuYW1lO1xuICAgICAgICB2YXIgaywgdjtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBwLmJlZm9yZVNldChzZWxmLCBvYmopO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBrZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIGsgPSBrZXlzW19pXTtcbiAgICAgICAgICB2ID0gb2JqW2tdO1xuXG4gICAgICAgICAgdmFyIF92YWxpZCA9ICFwLmltbXV0YWJsZUtleXNba107XG5cbiAgICAgICAgICBpZiAoX3ZhbGlkKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFsbC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB2YXIgX2VsZSA9IGFsbFtqXTtcblxuICAgICAgICAgICAgICBpZiAocC5jYW5TZXQoX2VsZSkpIHtcbiAgICAgICAgICAgICAgICBfZWxlLl9wcml2YXRlW3AuZmllbGRdW2tdID0gdjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgaWYgKHAudXBkYXRlU3R5bGUpIHtcbiAgICAgICAgICBzZWxmLnVwZGF0ZVN0eWxlKCk7XG4gICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgcC5vblNldChzZWxmKTtcblxuICAgICAgICBpZiAocC5zZXR0aW5nVHJpZ2dlcnNFdmVudCkge1xuICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgIH0gLy8gLmRhdGEoZnVuY3Rpb24oKXsgLi4uIH0pXG5cbiAgICAgIH0gZWxzZSBpZiAocC5hbGxvd0JpbmRpbmcgJiYgZm4obmFtZSkpIHtcbiAgICAgICAgLy8gYmluZCB0byBldmVudFxuICAgICAgICB2YXIgZm4kMSA9IG5hbWU7XG4gICAgICAgIHNlbGYub24ocC5iaW5kaW5nRXZlbnQsIGZuJDEpOyAvLyAuZGF0YSgpXG4gICAgICB9IGVsc2UgaWYgKHAuYWxsb3dHZXR0aW5nICYmIG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBnZXQgd2hvbGUgb2JqZWN0XG4gICAgICAgIHZhciBfcmV0O1xuXG4gICAgICAgIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICBwLmJlZm9yZUdldChzaW5nbGUpO1xuICAgICAgICAgIF9yZXQgPSBzaW5nbGUuX3ByaXZhdGVbcC5maWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX3JldDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluYWJpbGl0eVxuICAgIH07IC8vIGZ1bmN0aW9uXG4gIH0sXG4gIC8vIGRhdGFcbiAgLy8gcmVtb3ZlIGRhdGEgZmllbGRcbiAgcmVtb3ZlRGF0YTogZnVuY3Rpb24gcmVtb3ZlRGF0YShwYXJhbXMpIHtcbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBmaWVsZDogJ2RhdGEnLFxuICAgICAgZXZlbnQ6ICdkYXRhJyxcbiAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgIHRyaWdnZXJFdmVudDogZmFsc2UsXG4gICAgICBpbW11dGFibGVLZXlzOiB7fSAvLyBrZXkgPT4gdHJ1ZSBpZiBpbW11dGFibGVcblxuICAgIH07XG4gICAgcGFyYW1zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgcGFyYW1zKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVtb3ZlRGF0YUltcGwobmFtZXMpIHtcbiAgICAgIHZhciBwID0gcGFyYW1zO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHNlbGZJc0FycmF5TGlrZSA9IHNlbGYubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgICB2YXIgYWxsID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZiA6IFtzZWxmXTsgLy8gcHV0IGluIGFycmF5IGlmIG5vdCBhcnJheS1saWtlXG4gICAgICAvLyAucmVtb3ZlRGF0YSgnZm9vIGJhcicpXG5cbiAgICAgIGlmIChzdHJpbmcobmFtZXMpKSB7XG4gICAgICAgIC8vIHRoZW4gZ2V0IHRoZSBsaXN0IG9mIGtleXMsIGFuZCBkZWxldGUgdGhlbVxuICAgICAgICB2YXIga2V5cyA9IG5hbWVzLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIHZhciBsID0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAvLyBkZWxldGUgZWFjaCBub24tZW1wdHkga2V5XG4gICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgICAgICBpZiAoZW1wdHlTdHJpbmcoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZhbGlkID0gIXAuaW1tdXRhYmxlS2V5c1trZXldOyAvLyBub3QgdmFsaWQgaWYgaW1tdXRhYmxlXG5cbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGlfYSA9IDAsIGxfYSA9IGFsbC5sZW5ndGg7IGlfYSA8IGxfYTsgaV9hKyspIHtcbiAgICAgICAgICAgICAgYWxsW2lfYV0uX3ByaXZhdGVbcC5maWVsZF1ba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgIH0gLy8gLnJlbW92ZURhdGEoKVxuXG4gICAgICB9IGVsc2UgaWYgKG5hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gdGhlbiBkZWxldGUgYWxsIGtleXNcbiAgICAgICAgZm9yICh2YXIgX2lfYSA9IDAsIF9sX2EgPSBhbGwubGVuZ3RoOyBfaV9hIDwgX2xfYTsgX2lfYSsrKSB7XG4gICAgICAgICAgdmFyIF9wcml2YXRlRmllbGRzID0gYWxsW19pX2FdLl9wcml2YXRlW3AuZmllbGRdO1xuXG4gICAgICAgICAgdmFyIF9rZXlzID0gT2JqZWN0LmtleXMoX3ByaXZhdGVGaWVsZHMpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgX2tleXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgICAgdmFyIF9rZXkgPSBfa2V5c1tfaTJdO1xuICAgICAgICAgICAgdmFyIHZhbGlkS2V5VG9EZWxldGUgPSAhcC5pbW11dGFibGVLZXlzW19rZXldO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRLZXlUb0RlbGV0ZSkge1xuICAgICAgICAgICAgICBfcHJpdmF0ZUZpZWxkc1tfa2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluaW5nXG4gICAgfTsgLy8gZnVuY3Rpb25cbiAgfSAvLyByZW1vdmVEYXRhXG5cbn07IC8vIGRlZmluZVxuXG52YXIgZGVmaW5lJDIgPSB7XG4gIGV2ZW50QWxpYXNlc09uOiBmdW5jdGlvbiBldmVudEFsaWFzZXNPbihwcm90bykge1xuICAgIHZhciBwID0gcHJvdG87XG4gICAgcC5hZGRMaXN0ZW5lciA9IHAubGlzdGVuID0gcC5iaW5kID0gcC5vbjtcbiAgICBwLnVubGlzdGVuID0gcC51bmJpbmQgPSBwLm9mZiA9IHAucmVtb3ZlTGlzdGVuZXI7XG4gICAgcC50cmlnZ2VyID0gcC5lbWl0OyAvLyB0aGlzIGlzIGp1c3QgYSB3cmFwcGVyIGFsaWFzIG9mIC5vbigpXG5cbiAgICBwLnBvbiA9IHAucHJvbWlzZU9uID0gZnVuY3Rpb24gKGV2ZW50cywgc2VsZWN0b3IpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge1xuICAgICAgICAgIHNlbGYub2ZmLmFwcGx5KHNlbGYsIG9mZkFyZ3MpO1xuICAgICAgICAgIHJlc29sdmUoZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uQXJncyA9IGFyZ3MuY29uY2F0KFtjYWxsYmFja10pO1xuICAgICAgICB2YXIgb2ZmQXJncyA9IG9uQXJncy5jb25jYXQoW10pO1xuICAgICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIG9uQXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59OyAvLyBkZWZpbmVcblxuLy8gdXNlIHRoaXMgbW9kdWxlIHRvIGNoZXJyeSBwaWNrIGZ1bmN0aW9ucyBpbnRvIHlvdXIgcHJvdG90eXBlXG52YXIgZGVmaW5lJDMgPSB7fTtcbltkZWZpbmUsIGRlZmluZSQxLCBkZWZpbmUkMl0uZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICBleHRlbmQoZGVmaW5lJDMsIG0pO1xufSk7XG5cbnZhciBlbGVzZm4kZCA9IHtcbiAgYW5pbWF0ZTogZGVmaW5lJDMuYW5pbWF0ZSgpLFxuICBhbmltYXRpb246IGRlZmluZSQzLmFuaW1hdGlvbigpLFxuICBhbmltYXRlZDogZGVmaW5lJDMuYW5pbWF0ZWQoKSxcbiAgY2xlYXJRdWV1ZTogZGVmaW5lJDMuY2xlYXJRdWV1ZSgpLFxuICBkZWxheTogZGVmaW5lJDMuZGVsYXkoKSxcbiAgZGVsYXlBbmltYXRpb246IGRlZmluZSQzLmRlbGF5QW5pbWF0aW9uKCksXG4gIHN0b3A6IGRlZmluZSQzLnN0b3AoKVxufTtcblxudmFyIGVsZXNmbiRlID0ge1xuICBjbGFzc2VzOiBmdW5jdGlvbiBjbGFzc2VzKF9jbGFzc2VzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKF9jbGFzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciByZXQgPSBbXTtcblxuICAgICAgc2VsZlswXS5fcHJpdmF0ZS5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICByZXR1cm4gcmV0LnB1c2goY2xzKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSBpZiAoIWFycmF5KF9jbGFzc2VzKSkge1xuICAgICAgLy8gZXh0cmFjdCBjbGFzc2VzIGZyb20gc3RyaW5nXG4gICAgICBfY2xhc3NlcyA9IChfY2xhc3NlcyB8fCAnJykubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgfVxuXG4gICAgdmFyIGNoYW5nZWQgPSBbXTtcbiAgICB2YXIgY2xhc3Nlc1NldCA9IG5ldyBTZXQkMShfY2xhc3Nlcyk7IC8vIGNoZWNrIGFuZCB1cGRhdGUgZWFjaCBlbGVcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VsZi5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGVsZSA9IHNlbGZbal07XG4gICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICB2YXIgZWxlQ2xhc3NlcyA9IF9wLmNsYXNzZXM7XG4gICAgICB2YXIgY2hhbmdlZEVsZSA9IGZhbHNlOyAvLyBjaGVjayBpZiBlbGUgaGFzIGFsbCBvZiB0aGUgcGFzc2VkIGNsYXNzZXNcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfY2xhc3Nlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2xzID0gX2NsYXNzZXNbaV07XG4gICAgICAgIHZhciBlbGVIYXNDbGFzcyA9IGVsZUNsYXNzZXMuaGFzKGNscyk7XG5cbiAgICAgICAgaWYgKCFlbGVIYXNDbGFzcykge1xuICAgICAgICAgIGNoYW5nZWRFbGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNoZWNrIGlmIGVsZSBoYXMgY2xhc3NlcyBvdXRzaWRlIG9mIHRob3NlIHBhc3NlZFxuXG5cbiAgICAgIGlmICghY2hhbmdlZEVsZSkge1xuICAgICAgICBjaGFuZ2VkRWxlID0gZWxlQ2xhc3Nlcy5zaXplICE9PSBfY2xhc3Nlcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRWxlKSB7XG4gICAgICAgIF9wLmNsYXNzZXMgPSBjbGFzc2VzU2V0O1xuICAgICAgICBjaGFuZ2VkLnB1c2goZWxlKTtcbiAgICAgIH1cbiAgICB9IC8vIHRyaWdnZXIgdXBkYXRlIHN0eWxlIG9uIHRob3NlIGVsZXMgdGhhdCBoYWQgY2xhc3MgY2hhbmdlc1xuXG5cbiAgICBpZiAoY2hhbmdlZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNwYXduKGNoYW5nZWQpLnVwZGF0ZVN0eWxlKCkuZW1pdCgnY2xhc3MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgYWRkQ2xhc3M6IGZ1bmN0aW9uIGFkZENsYXNzKGNsYXNzZXMpIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGVDbGFzcyhjbGFzc2VzLCB0cnVlKTtcbiAgfSxcbiAgaGFzQ2xhc3M6IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUgIT0gbnVsbCAmJiBlbGUuX3ByaXZhdGUuY2xhc3Nlcy5oYXMoY2xhc3NOYW1lKTtcbiAgfSxcbiAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGNsYXNzZXMsIHRvZ2dsZSkge1xuICAgIGlmICghYXJyYXkoY2xhc3NlcykpIHtcbiAgICAgIC8vIGV4dHJhY3QgY2xhc3NlcyBmcm9tIHN0cmluZ1xuICAgICAgY2xhc3NlcyA9IGNsYXNzZXMubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b2dnbGVVbmRlZmQgPSB0b2dnbGUgPT09IHVuZGVmaW5lZDtcbiAgICB2YXIgY2hhbmdlZCA9IFtdOyAvLyBlbGVzIHdobyBoYWQgY2xhc3NlcyBjaGFuZ2VkXG5cbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBzZWxmLmxlbmd0aDsgaSA8IGlsOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBzZWxmW2ldO1xuICAgICAgdmFyIGVsZUNsYXNzZXMgPSBlbGUuX3ByaXZhdGUuY2xhc3NlcztcbiAgICAgIHZhciBjaGFuZ2VkRWxlID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2xhc3Nlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgY2xzID0gY2xhc3Nlc1tqXTtcbiAgICAgICAgdmFyIGhhc0NsYXNzID0gZWxlQ2xhc3Nlcy5oYXMoY2xzKTtcbiAgICAgICAgdmFyIGNoYW5nZWROb3cgPSBmYWxzZTtcblxuICAgICAgICBpZiAodG9nZ2xlIHx8IHRvZ2dsZVVuZGVmZCAmJiAhaGFzQ2xhc3MpIHtcbiAgICAgICAgICBlbGVDbGFzc2VzLmFkZChjbHMpO1xuICAgICAgICAgIGNoYW5nZWROb3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCF0b2dnbGUgfHwgdG9nZ2xlVW5kZWZkICYmIGhhc0NsYXNzKSB7XG4gICAgICAgICAgZWxlQ2xhc3Nlc1tcImRlbGV0ZVwiXShjbHMpO1xuICAgICAgICAgIGNoYW5nZWROb3cgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VkRWxlICYmIGNoYW5nZWROb3cpIHtcbiAgICAgICAgICBjaGFuZ2VkLnB1c2goZWxlKTtcbiAgICAgICAgICBjaGFuZ2VkRWxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3IgaiBjbGFzc2VzXG5cbiAgICB9IC8vIGZvciBpIGVsZXNcbiAgICAvLyB0cmlnZ2VyIHVwZGF0ZSBzdHlsZSBvbiB0aG9zZSBlbGVzIHRoYXQgaGFkIGNsYXNzIGNoYW5nZXNcblxuXG4gICAgaWYgKGNoYW5nZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zcGF3bihjaGFuZ2VkKS51cGRhdGVTdHlsZSgpLmVtaXQoJ2NsYXNzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7XG4gIH0sXG4gIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiByZW1vdmVDbGFzcyhjbGFzc2VzKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlQ2xhc3MoY2xhc3NlcywgZmFsc2UpO1xuICB9LFxuICBmbGFzaENsYXNzOiBmdW5jdGlvbiBmbGFzaENsYXNzKGNsYXNzZXMsIGR1cmF0aW9uKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcbiAgICAgIGR1cmF0aW9uID0gMjUwO1xuICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiBzZWxmOyAvLyBub3RoaW5nIHRvIGRvIHJlYWxseVxuICAgIH1cblxuICAgIHNlbGYuYWRkQ2xhc3MoY2xhc3Nlcyk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLnJlbW92ZUNsYXNzKGNsYXNzZXMpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgICByZXR1cm4gc2VsZjtcbiAgfVxufTtcbmVsZXNmbiRlLmNsYXNzTmFtZSA9IGVsZXNmbiRlLmNsYXNzTmFtZXMgPSBlbGVzZm4kZS5jbGFzc2VzO1xuXG52YXIgdG9rZW5zID0ge1xuICBtZXRhQ2hhcjogJ1tcXFxcIVxcXFxcIlxcXFwjXFxcXCRcXFxcJVxcXFwmXFxcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcLlxcXFwvXFxcXDpcXFxcO1xcXFw8XFxcXD1cXFxcPlxcXFw/XFxcXEBcXFxcW1xcXFxdXFxcXF5cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XScsXG4gIC8vIGNoYXJzIHdlIG5lZWQgdG8gZXNjYXBlIGluIGxldCBuYW1lcywgZXRjXG4gIGNvbXBhcmF0b3JPcDogJz18XFxcXCE9fD58Pj18PHw8PXxcXFxcJD18XFxcXF49fFxcXFwqPScsXG4gIC8vIGJpbmFyeSBjb21wYXJpc29uIG9wICh1c2VkIGluIGRhdGEgc2VsZWN0b3JzKVxuICBib29sT3A6ICdcXFxcP3xcXFxcIXxcXFxcXicsXG4gIC8vIGJvb2xlYW4gKHVuYXJ5KSBvcGVyYXRvcnMgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpXG4gIHN0cmluZzogJ1wiKD86XFxcXFxcXFxcInxbXlwiXSkqXCInICsgJ3wnICsgXCInKD86XFxcXFxcXFwnfFteJ10pKidcIixcbiAgLy8gc3RyaW5nIGxpdGVyYWxzICh1c2VkIGluIGRhdGEgc2VsZWN0b3JzKSAtLSBkb3VibGVxdW90ZXMgfCBzaW5nbGVxdW90ZXNcbiAgbnVtYmVyOiBudW1iZXIkMSxcbiAgLy8gbnVtYmVyIGxpdGVyYWwgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpIC0tLSBlLmcuIDAuMTIzNCwgMTIzNCwgMTJlMTIzXG4gIG1ldGE6ICdkZWdyZWV8aW5kZWdyZWV8b3V0ZGVncmVlJyxcbiAgLy8gYWxsb3dlZCBtZXRhZGF0YSBmaWVsZHMgKGkuZS4gYWxsb3dlZCBmdW5jdGlvbnMgdG8gdXNlIGZyb20gQ29sbGVjdGlvbilcbiAgc2VwYXJhdG9yOiAnXFxcXHMqLFxcXFxzKicsXG4gIC8vIHF1ZXJpZXMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGUuZy4gZWRnZVtmb28gPSAnYmFyJ10sIG5vZGUuc29tZUNsYXNzXG4gIGRlc2NlbmRhbnQ6ICdcXFxccysnLFxuICBjaGlsZDogJ1xcXFxzKz5cXFxccysnLFxuICBzdWJqZWN0OiAnXFxcXCQnLFxuICBncm91cDogJ25vZGV8ZWRnZXxcXFxcKicsXG4gIGRpcmVjdGVkRWRnZTogJ1xcXFxzKy0+XFxcXHMrJyxcbiAgdW5kaXJlY3RlZEVkZ2U6ICdcXFxccys8LT5cXFxccysnXG59O1xudG9rZW5zLnZhcmlhYmxlID0gJyg/OltcXFxcdy1dfCg/OlxcXFxcXFxcJyArIHRva2Vucy5tZXRhQ2hhciArICcpKSsnOyAvLyBhIHZhcmlhYmxlIG5hbWVcblxudG9rZW5zLnZhbHVlID0gdG9rZW5zLnN0cmluZyArICd8JyArIHRva2Vucy5udW1iZXI7IC8vIGEgdmFsdWUgbGl0ZXJhbCwgZWl0aGVyIGEgc3RyaW5nIG9yIG51bWJlclxuXG50b2tlbnMuY2xhc3NOYW1lID0gdG9rZW5zLnZhcmlhYmxlOyAvLyBhIGNsYXNzIG5hbWUgKGZvbGxvd3MgdmFyaWFibGUgY29udmVudGlvbnMpXG5cbnRva2Vucy5pZCA9IHRva2Vucy52YXJpYWJsZTsgLy8gYW4gZWxlbWVudCBpZCAoZm9sbG93cyB2YXJpYWJsZSBjb252ZW50aW9ucylcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG9wcywgb3AsIGk7IC8vIGFkZCBAIHZhcmlhbnRzIHRvIGNvbXBhcmF0b3JPcFxuXG4gIG9wcyA9IHRva2Vucy5jb21wYXJhdG9yT3Auc3BsaXQoJ3wnKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3AgPSBvcHNbaV07XG4gICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfEAnICsgb3A7XG4gIH0gLy8gYWRkICEgdmFyaWFudHMgdG8gY29tcGFyYXRvck9wXG5cblxuICBvcHMgPSB0b2tlbnMuY29tcGFyYXRvck9wLnNwbGl0KCd8Jyk7XG5cbiAgZm9yIChpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xuICAgIG9wID0gb3BzW2ldO1xuXG4gICAgaWYgKG9wLmluZGV4T2YoJyEnKSA+PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIHNraXAgb3BzIHRoYXQgZXhwbGljaXRseSBjb250YWluICFcblxuXG4gICAgaWYgKG9wID09PSAnPScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gc2tpcCA9IGIvYyAhPSBpcyBleHBsaWNpdGx5IGRlZmluZWRcblxuXG4gICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfFxcXFwhJyArIG9wO1xuICB9XG59KSgpO1xuXG4vKipcbiAqIE1ha2UgYSBuZXcgcXVlcnkgb2JqZWN0XG4gKlxuICogQHByb3AgdHlwZSB7VHlwZX0gVGhlIHR5cGUgZW51bSAoaW50KSBvZiB0aGUgcXVlcnlcbiAqIEBwcm9wIGNoZWNrcyBMaXN0IG9mIGNoZWNrcyB0byBtYWtlIGFnYWluc3QgYW4gZWxlIHRvIHRlc3QgZm9yIGEgbWF0Y2hcbiAqL1xudmFyIG5ld1F1ZXJ5ID0gZnVuY3Rpb24gbmV3UXVlcnkoKSB7XG4gIHJldHVybiB7XG4gICAgY2hlY2tzOiBbXVxuICB9O1xufTtcblxuLyoqXG4gKiBBIGNoZWNrIHR5cGUgZW51bS1saWtlIG9iamVjdC4gIFVzZXMgaW50ZWdlciB2YWx1ZXMgZm9yIGZhc3QgbWF0Y2goKSBsb29rdXAuXG4gKiBUaGUgb3JkZXJpbmcgZG9lcyBub3QgbWF0dGVyIGFzIGxvbmcgYXMgdGhlIGludHMgYXJlIHVuaXF1ZS5cbiAqL1xudmFyIFR5cGUgPSB7XG4gIC8qKiBFLmcuIG5vZGUgKi9cbiAgR1JPVVA6IDAsXG5cbiAgLyoqIEEgY29sbGVjdGlvbiBvZiBlbGVtZW50cyAqL1xuICBDT0xMRUNUSU9OOiAxLFxuXG4gIC8qKiBBIGZpbHRlcihlbGUpIGZ1bmN0aW9uICovXG4gIEZJTFRFUjogMixcblxuICAvKiogRS5nLiBbZm9vID4gMV0gKi9cbiAgREFUQV9DT01QQVJFOiAzLFxuXG4gIC8qKiBFLmcuIFtmb29dICovXG4gIERBVEFfRVhJU1Q6IDQsXG5cbiAgLyoqIEUuZy4gWz9mb29dICovXG4gIERBVEFfQk9PTDogNSxcblxuICAvKiogRS5nLiBbW2RlZ3JlZSA+IDJdXSAqL1xuICBNRVRBX0NPTVBBUkU6IDYsXG5cbiAgLyoqIEUuZy4gOnNlbGVjdGVkICovXG4gIFNUQVRFOiA3LFxuXG4gIC8qKiBFLmcuICNmb28gKi9cbiAgSUQ6IDgsXG5cbiAgLyoqIEUuZy4gLmZvbyAqL1xuICBDTEFTUzogOSxcblxuICAvKiogRS5nLiAjZm9vIDwtPiAjYmFyICovXG4gIFVORElSRUNURURfRURHRTogMTAsXG5cbiAgLyoqIEUuZy4gI2ZvbyAtPiAjYmFyICovXG4gIERJUkVDVEVEX0VER0U6IDExLFxuXG4gIC8qKiBFLmcuICQjZm9vIC0+ICNiYXIgKi9cbiAgTk9ERV9TT1VSQ0U6IDEyLFxuXG4gIC8qKiBFLmcuICNmb28gLT4gJCNiYXIgKi9cbiAgTk9ERV9UQVJHRVQ6IDEzLFxuXG4gIC8qKiBFLmcuICQjZm9vIDwtPiAjYmFyICovXG4gIE5PREVfTkVJR0hCT1I6IDE0LFxuXG4gIC8qKiBFLmcuICNmb28gPiAjYmFyICovXG4gIENISUxEOiAxNSxcblxuICAvKiogRS5nLiAjZm9vICNiYXIgKi9cbiAgREVTQ0VOREFOVDogMTYsXG5cbiAgLyoqIEUuZy4gJCNmb28gPiAjYmFyICovXG4gIFBBUkVOVDogMTcsXG5cbiAgLyoqIEUuZy4gJCNmb28gI2JhciAqL1xuICBBTkNFU1RPUjogMTgsXG5cbiAgLyoqIEUuZy4gI2ZvbyA+ICRiYXIgPiAjYmF6ICovXG4gIENPTVBPVU5EX1NQTElUOiAxOSxcblxuICAvKiogQWx3YXlzIG1hdGNoZXMsIHVzZWZ1bCBwbGFjZWhvbGRlciBmb3Igc3ViamVjdCBpbiBgQ09NUE9VTkRfU1BMSVRgICovXG4gIFRSVUU6IDIwXG59O1xuXG52YXIgc3RhdGVTZWxlY3RvcnMgPSBbe1xuICBzZWxlY3RvcjogJzpzZWxlY3RlZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zZWxlY3RlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOnVuc2VsZWN0ZWQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnNlbGVjdGVkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6c2VsZWN0YWJsZScsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zZWxlY3RhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5zZWxlY3RhYmxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5zZWxlY3RhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6bG9ja2VkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmxvY2tlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOnVubG9ja2VkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5sb2NrZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzp2aXNpYmxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLnZpc2libGUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpoaWRkZW4nLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnZpc2libGUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzp0cmFuc3BhcmVudCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS50cmFuc3BhcmVudCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmdyYWJiZWQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuZ3JhYmJlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmZyZWUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLmdyYWJiZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpyZW1vdmVkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLnJlbW92ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzppbnNpZGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnJlbW92ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpncmFiYmFibGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuZ3JhYmJhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5ncmFiYmFibGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLmdyYWJiYWJsZSgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmFuaW1hdGVkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmFuaW1hdGVkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5hbmltYXRlZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuYW5pbWF0ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpwYXJlbnQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjaGlsZGxlc3MnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNDaGlsZGxlc3MoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjaGlsZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5pc0NoaWxkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6b3JwaGFuJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzT3JwaGFuKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6bm9ub3JwaGFuJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjb21wb3VuZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgcmV0dXJuIGVsZS5pc1BhcmVudCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZWxlLnNvdXJjZSgpLmlzUGFyZW50KCkgfHwgZWxlLnRhcmdldCgpLmlzUGFyZW50KCk7XG4gICAgfVxuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmxvb3AnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNMb29wKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6c2ltcGxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzU2ltcGxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6YWN0aXZlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmFjdGl2ZSgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmluYWN0aXZlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5hY3RpdmUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpiYWNrZ3JvdW5kaW5nJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmJhY2tncm91bmRpbmcoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpub25iYWNrZ3JvdW5kaW5nJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5iYWNrZ3JvdW5kaW5nKCk7XG4gIH1cbn1dLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgLy8gbi5iLiBzZWxlY3RvcnMgdGhhdCBhcmUgc3RhcnRpbmcgc3Vic3RyaW5ncyBvZiBvdGhlcnMgbXVzdCBoYXZlIHRoZSBsb25nZXIgb25lcyBmaXJzdFxuICByZXR1cm4gZGVzY2VuZGluZyhhLnNlbGVjdG9yLCBiLnNlbGVjdG9yKTtcbn0pO1xuXG52YXIgbG9va3VwID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsVG9GbiA9IHt9O1xuICB2YXIgcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlU2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgcyA9IHN0YXRlU2VsZWN0b3JzW2ldO1xuICAgIHNlbFRvRm5bcy5zZWxlY3Rvcl0gPSBzLm1hdGNoZXM7XG4gIH1cblxuICByZXR1cm4gc2VsVG9Gbjtcbn0oKTtcblxudmFyIHN0YXRlU2VsZWN0b3JNYXRjaGVzID0gZnVuY3Rpb24gc3RhdGVTZWxlY3Rvck1hdGNoZXMoc2VsLCBlbGUpIHtcbiAgcmV0dXJuIGxvb2t1cFtzZWxdKGVsZSk7XG59O1xudmFyIHN0YXRlU2VsZWN0b3JSZWdleCA9ICcoJyArIHN0YXRlU2VsZWN0b3JzLm1hcChmdW5jdGlvbiAocykge1xuICByZXR1cm4gcy5zZWxlY3Rvcjtcbn0pLmpvaW4oJ3wnKSArICcpJztcblxuLy8gc28gdGhhdCB2YWx1ZXMgZ2V0IGNvbXBhcmVkIHByb3Blcmx5IGluIFNlbGVjdG9yLmZpbHRlcigpXG5cbnZhciBjbGVhbk1ldGFDaGFycyA9IGZ1bmN0aW9uIGNsZWFuTWV0YUNoYXJzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcXFwoJyArIHRva2Vucy5tZXRhQ2hhciArICcpJywgJ2cnKSwgZnVuY3Rpb24gKG1hdGNoLCAkMSkge1xuICAgIHJldHVybiAkMTtcbiAgfSk7XG59O1xuXG52YXIgcmVwbGFjZUxhc3RRdWVyeSA9IGZ1bmN0aW9uIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGV4YW1pbmluZ1F1ZXJ5LCByZXBsYWNlbWVudFF1ZXJ5KSB7XG4gIHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdID0gcmVwbGFjZW1lbnRRdWVyeTtcbn07IC8vIE5PVEU6IGFkZCBuZXcgZXhwcmVzc2lvbiBzeW50YXggaGVyZSB0byBoYXZlIGl0IHJlY29nbmlzZWQgYnkgdGhlIHBhcnNlcjtcbi8vIC0gYSBxdWVyeSBjb250YWlucyBhbGwgYWRqYWNlbnQgKGkuZS4gbm8gc2VwYXJhdG9yIGluIGJldHdlZW4pIGV4cHJlc3Npb25zO1xuLy8gLSB0aGUgY3VycmVudCBxdWVyeSBpcyBzdG9yZWQgaW4gc2VsZWN0b3JbaV1cbi8vIC0geW91IG5lZWQgdG8gY2hlY2sgdGhlIHF1ZXJ5IG9iamVjdHMgaW4gbWF0Y2goKSBmb3IgaXQgYWN0dWFsbHkgZmlsdGVyIHByb3Blcmx5LCBidXQgdGhhdCdzIHByZXR0eSBzdHJhaWdodCBmb3J3YXJkXG5cblxudmFyIGV4cHJzID0gW3tcbiAgbmFtZTogJ2dyb3VwJyxcbiAgLy8ganVzdCB1c2VkIGZvciBpZGVudGlmeWluZyB3aGVuIGRlYnVnZ2luZ1xuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICcoJyArIHRva2Vucy5ncm91cCArICcpJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAgICBncm91cCA9IF9yZWYyWzBdO1xuXG4gICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgdHlwZTogVHlwZS5HUk9VUCxcbiAgICAgIHZhbHVlOiBncm91cCA9PT0gJyonID8gZ3JvdXAgOiBncm91cCArICdzJ1xuICAgIH0pO1xuICB9XG59LCB7XG4gIG5hbWU6ICdzdGF0ZScsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogc3RhdGVTZWxlY3RvclJlZ2V4LFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmMykge1xuICAgIHZhciBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCAxKSxcbiAgICAgICAgc3RhdGUgPSBfcmVmNFswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuU1RBVEUsXG4gICAgICB2YWx1ZTogc3RhdGVcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnaWQnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcIygnICsgdG9rZW5zLmlkICsgJyknLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmNSkge1xuICAgIHZhciBfcmVmNiA9IF9zbGljZWRUb0FycmF5KF9yZWY1LCAxKSxcbiAgICAgICAgaWQgPSBfcmVmNlswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuSUQsXG4gICAgICB2YWx1ZTogY2xlYW5NZXRhQ2hhcnMoaWQpXG4gICAgfSk7XG4gIH1cbn0sIHtcbiAgbmFtZTogJ2NsYXNzTmFtZScsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogJ1xcXFwuKCcgKyB0b2tlbnMuY2xhc3NOYW1lICsgJyknLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmNykge1xuICAgIHZhciBfcmVmOCA9IF9zbGljZWRUb0FycmF5KF9yZWY3LCAxKSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3JlZjhbMF07XG5cbiAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICB0eXBlOiBUeXBlLkNMQVNTLFxuICAgICAgdmFsdWU6IGNsZWFuTWV0YUNoYXJzKGNsYXNzTmFtZSlcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUV4aXN0cycsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogJ1xcXFxbXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjkpIHtcbiAgICB2YXIgX3JlZjEwID0gX3NsaWNlZFRvQXJyYXkoX3JlZjksIDEpLFxuICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMFswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuREFUQV9FWElTVCxcbiAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSlcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUNvbXBhcmUnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLnZhcmlhYmxlICsgJylcXFxccyooJyArIHRva2Vucy5jb21wYXJhdG9yT3AgKyAnKVxcXFxzKignICsgdG9rZW5zLnZhbHVlICsgJylcXFxccypcXFxcXScsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWYxMSkge1xuICAgIHZhciBfcmVmMTIgPSBfc2xpY2VkVG9BcnJheShfcmVmMTEsIDMpLFxuICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMlswXSxcbiAgICAgICAgY29tcGFyYXRvck9wID0gX3JlZjEyWzFdLFxuICAgICAgICB2YWx1ZSA9IF9yZWYxMlsyXTtcblxuICAgIHZhciB2YWx1ZUlzU3RyaW5nID0gbmV3IFJlZ0V4cCgnXicgKyB0b2tlbnMuc3RyaW5nICsgJyQnKS5leGVjKHZhbHVlKSAhPSBudWxsO1xuXG4gICAgaWYgKHZhbHVlSXNTdHJpbmcpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuREFUQV9DT01QQVJFLFxuICAgICAgZmllbGQ6IGNsZWFuTWV0YUNoYXJzKHZhcmlhYmxlKSxcbiAgICAgIG9wZXJhdG9yOiBjb21wYXJhdG9yT3AsXG4gICAgICB2YWx1ZTogdmFsdWVcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUJvb2wnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLmJvb2xPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjEzKSB7XG4gICAgdmFyIF9yZWYxNCA9IF9zbGljZWRUb0FycmF5KF9yZWYxMywgMiksXG4gICAgICAgIGJvb2xPcCA9IF9yZWYxNFswXSxcbiAgICAgICAgdmFyaWFibGUgPSBfcmVmMTRbMV07XG5cbiAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICB0eXBlOiBUeXBlLkRBVEFfQk9PTCxcbiAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSksXG4gICAgICBvcGVyYXRvcjogYm9vbE9wXG4gICAgfSk7XG4gIH1cbn0sIHtcbiAgbmFtZTogJ21ldGFDb21wYXJlJyxcbiAgcXVlcnk6IHRydWUsXG4gIHJlZ2V4OiAnXFxcXFtcXFxcW1xcXFxzKignICsgdG9rZW5zLm1ldGEgKyAnKVxcXFxzKignICsgdG9rZW5zLmNvbXBhcmF0b3JPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMubnVtYmVyICsgJylcXFxccypcXFxcXVxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjE1KSB7XG4gICAgdmFyIF9yZWYxNiA9IF9zbGljZWRUb0FycmF5KF9yZWYxNSwgMyksXG4gICAgICAgIG1ldGEgPSBfcmVmMTZbMF0sXG4gICAgICAgIGNvbXBhcmF0b3JPcCA9IF9yZWYxNlsxXSxcbiAgICAgICAgbnVtYmVyID0gX3JlZjE2WzJdO1xuXG4gICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgdHlwZTogVHlwZS5NRVRBX0NPTVBBUkUsXG4gICAgICBmaWVsZDogY2xlYW5NZXRhQ2hhcnMobWV0YSksXG4gICAgICBvcGVyYXRvcjogY29tcGFyYXRvck9wLFxuICAgICAgdmFsdWU6IHBhcnNlRmxvYXQobnVtYmVyKVxuICAgIH0pO1xuICB9XG59LCB7XG4gIG5hbWU6ICduZXh0UXVlcnknLFxuICBzZXBhcmF0b3I6IHRydWUsXG4gIHJlZ2V4OiB0b2tlbnMuc2VwYXJhdG9yLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgdmFyIGN1cnJlbnRTdWJqZWN0ID0gc2VsZWN0b3IuY3VycmVudFN1YmplY3Q7XG4gICAgdmFyIGVkZ2VDb3VudCA9IHNlbGVjdG9yLmVkZ2VDb3VudDtcbiAgICB2YXIgY29tcG91bmRDb3VudCA9IHNlbGVjdG9yLmNvbXBvdW5kQ291bnQ7XG4gICAgdmFyIGxhc3RRID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY3VycmVudFN1YmplY3QgIT0gbnVsbCkge1xuICAgICAgbGFzdFEuc3ViamVjdCA9IGN1cnJlbnRTdWJqZWN0O1xuICAgICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIGxhc3RRLmVkZ2VDb3VudCA9IGVkZ2VDb3VudDtcbiAgICBsYXN0US5jb21wb3VuZENvdW50ID0gY29tcG91bmRDb3VudDtcbiAgICBzZWxlY3Rvci5lZGdlQ291bnQgPSAwO1xuICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQgPSAwOyAvLyBnbyBvbiB0byBuZXh0IHF1ZXJ5XG5cbiAgICB2YXIgbmV4dFF1ZXJ5ID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoKytdID0gbmV3UXVlcnkoKTtcbiAgICByZXR1cm4gbmV4dFF1ZXJ5OyAvLyB0aGlzIGlzIHRoZSBuZXcgcXVlcnkgdG8gYmUgZmlsbGVkIGJ5IHRoZSBmb2xsb3dpbmcgZXhwcnNcbiAgfVxufSwge1xuICBuYW1lOiAnZGlyZWN0ZWRFZGdlJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmRpcmVjdGVkRWRnZSxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSkge1xuICAgIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PSBudWxsKSB7XG4gICAgICAvLyB1bmRpcmVjdGVkIGVkZ2VcbiAgICAgIHZhciBlZGdlUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIHNvdXJjZSA9IHF1ZXJ5O1xuICAgICAgdmFyIHRhcmdldCA9IG5ld1F1ZXJ5KCk7XG4gICAgICBlZGdlUXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLkRJUkVDVEVEX0VER0UsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldFxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBlZGdlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2VcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNvdXJjZS90YXJnZXRcbiAgICAgIHZhciBzcmNUZ3RRID0gbmV3UXVlcnkoKTtcbiAgICAgIHZhciBfc291cmNlID0gcXVlcnk7XG5cbiAgICAgIHZhciBfdGFyZ2V0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgc3JjVGd0US5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuTk9ERV9TT1VSQ0UsXG4gICAgICAgIHNvdXJjZTogX3NvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiBfdGFyZ2V0XG4gICAgICB9KTsgLy8gdGhlIHF1ZXJ5IGluIHRoZSBzZWxlY3RvciBzaG91bGQgYmUgdGhlIG5laWdoYm91cmhvb2QgcmF0aGVyIHRoYW4gdGhlIG5vZGVcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIHNyY1RndFEpO1xuICAgICAgc2VsZWN0b3IuZWRnZUNvdW50Kys7XG4gICAgICByZXR1cm4gX3RhcmdldDsgLy8gbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICB9XG4gIH1cbn0sIHtcbiAgbmFtZTogJ3VuZGlyZWN0ZWRFZGdlJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLnVuZGlyZWN0ZWRFZGdlLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgIC8vIHVuZGlyZWN0ZWQgZWRnZVxuICAgICAgdmFyIGVkZ2VRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgc291cmNlID0gcXVlcnk7XG4gICAgICB2YXIgdGFyZ2V0ID0gbmV3UXVlcnkoKTtcbiAgICAgIGVkZ2VRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuVU5ESVJFQ1RFRF9FREdFLFxuICAgICAgICBub2RlczogW3NvdXJjZSwgdGFyZ2V0XVxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBlZGdlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2VcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5laWdoYm91cmhvb2RcbiAgICAgIHZhciBuaG9vZFEgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIG5vZGUgPSBxdWVyeTtcbiAgICAgIHZhciBuZWlnaGJvciA9IG5ld1F1ZXJ5KCk7XG4gICAgICBuaG9vZFEuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLk5PREVfTkVJR0hCT1IsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIG5laWdoYm9yOiBuZWlnaGJvclxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBuZWlnaGJvdXJob29kIHJhdGhlciB0aGFuIHRoZSBub2RlXG5cbiAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBuaG9vZFEpO1xuICAgICAgcmV0dXJuIG5laWdoYm9yOyAvLyBub3cgcG9wdWxhdGluZyB0aGUgbmVpZ2hib3Igd2l0aCBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICB9XG4gIH1cbn0sIHtcbiAgbmFtZTogJ2NoaWxkJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmNoaWxkLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgIC8vIGRlZmF1bHQ6IGNoaWxkIHF1ZXJ5XG4gICAgICB2YXIgcGFyZW50Q2hpbGRRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgY2hpbGQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIHBhcmVudCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgcGFyZW50Q2hpbGRRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQ0hJTEQsXG4gICAgICAgIHBhcmVudDogcGFyZW50LFxuICAgICAgICBjaGlsZDogY2hpbGRcbiAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgcGFyZW50Q2hpbGRRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBjaGlsZCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09PSBxdWVyeSkge1xuICAgICAgLy8gY29tcG91bmQgc3BsaXQgcXVlcnlcbiAgICAgIHZhciBjb21wb3VuZCA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgbGVmdCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIHJpZ2h0ID0gbmV3UXVlcnkoKTtcbiAgICAgIHZhciBzdWJqZWN0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgdmFyIF9jaGlsZCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfcGFyZW50ID0gbmV3UXVlcnkoKTsgLy8gc2V0IHVwIHRoZSByb290IGNvbXBvdW5kIHFcblxuXG4gICAgICBjb21wb3VuZC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQ09NUE9VTkRfU1BMSVQsXG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgc3ViamVjdDogc3ViamVjdFxuICAgICAgfSk7IC8vIHBvcHVsYXRlIHRoZSBzdWJqZWN0IGFuZCByZXBsYWNlIHRoZSBxIGF0IHRoZSBvbGQgc3BvdCAod2l0aGluIGxlZnQpIHdpdGggVFJVRVxuXG4gICAgICBzdWJqZWN0LmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGFrZSB0aGUgY2hlY2tzIGZyb20gdGhlIGxlZnRcblxuICAgICAgcXVlcnkuY2hlY2tzID0gW3tcbiAgICAgICAgdHlwZTogVHlwZS5UUlVFXG4gICAgICB9XTsgLy8gY2hlY2tzIHVuZGVyIGxlZnQgcmVmcyB0aGUgc3ViamVjdCBpbXBsaWNpdGx5XG4gICAgICAvLyBzZXQgdXAgdGhlIHJpZ2h0IHFcblxuICAgICAgX3BhcmVudC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuVFJVRVxuICAgICAgfSk7IC8vIHBhcmVudCBpbXBsaWNpdGx5IHJlZnMgdGhlIHN1YmplY3RcblxuXG4gICAgICByaWdodC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICAvLyB0eXBlIGlzIHN3YXBwZWQgb24gcmlnaHQgc2lkZSBxdWVyaWVzXG4gICAgICAgIHBhcmVudDogX3BhcmVudCxcbiAgICAgICAgY2hpbGQ6IF9jaGlsZCAvLyBlbXB0eSBmb3Igbm93XG5cbiAgICAgIH0pO1xuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgbGVmdCwgY29tcG91bmQpOyAvLyB1cGRhdGUgdGhlIHJlZiBzaW5jZSB3ZSBtb3ZlZCB0aGluZ3MgYXJvdW5kIGZvciBgcXVlcnlgXG5cbiAgICAgIHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID0gc3ViamVjdDtcbiAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgIHJldHVybiBfY2hpbGQ7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSByaWdodCBzaWRlJ3MgY2hpbGRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcGFyZW50IHF1ZXJ5XG4gICAgICAvLyBpbmZvIGZvciBwYXJlbnQgcXVlcnlcbiAgICAgIHZhciBfcGFyZW50MiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfY2hpbGQyID0gbmV3UXVlcnkoKTtcblxuICAgICAgdmFyIHBjUUNoZWNrcyA9IFt7XG4gICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICBwYXJlbnQ6IF9wYXJlbnQyLFxuICAgICAgICBjaGlsZDogX2NoaWxkMlxuICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICBfcGFyZW50Mi5jaGVja3MgPSBxdWVyeS5jaGVja3M7IC8vIHRoZSBwcmV2aW91cyBxdWVyeSBjb250YWlucyB0aGUgY2hlY2tzIGZvciB0aGUgcGFyZW50XG5cbiAgICAgIHF1ZXJ5LmNoZWNrcyA9IHBjUUNoZWNrczsgLy8gcGMgcXVlcnkgdGFrZXMgb3ZlclxuXG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICByZXR1cm4gX2NoaWxkMjsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIGNoaWxkXG4gICAgfVxuICB9XG59LCB7XG4gIG5hbWU6ICdkZXNjZW5kYW50JyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmRlc2NlbmRhbnQsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPT0gbnVsbCkge1xuICAgICAgLy8gZGVmYXVsdDogZGVzY2VuZGFudCBxdWVyeVxuICAgICAgdmFyIGFuY0NoUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGRlc2NlbmRhbnQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGFuY2VzdG9yID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICBhbmNDaFF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5ERVNDRU5EQU5ULFxuICAgICAgICBhbmNlc3RvcjogYW5jZXN0b3IsXG4gICAgICAgIGRlc2NlbmRhbnQ6IGRlc2NlbmRhbnRcbiAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgYW5jQ2hRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBkZXNjZW5kYW50IHF1ZXJ5IHdpdGggZXhwcmVzc2lvbnMgdGhhdCBmb2xsb3dcblxuICAgICAgcmV0dXJuIGRlc2NlbmRhbnQ7XG4gICAgfSBlbHNlIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PT0gcXVlcnkpIHtcbiAgICAgIC8vIGNvbXBvdW5kIHNwbGl0IHF1ZXJ5XG4gICAgICB2YXIgY29tcG91bmQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGxlZnQgPSBzZWxlY3RvcltzZWxlY3Rvci5sZW5ndGggLSAxXTtcbiAgICAgIHZhciByaWdodCA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgc3ViamVjdCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfZGVzY2VuZGFudCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfYW5jZXN0b3IgPSBuZXdRdWVyeSgpOyAvLyBzZXQgdXAgdGhlIHJvb3QgY29tcG91bmQgcVxuXG5cbiAgICAgIGNvbXBvdW5kLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5DT01QT1VORF9TUExJVCxcbiAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgICAgICBzdWJqZWN0OiBzdWJqZWN0XG4gICAgICB9KTsgLy8gcG9wdWxhdGUgdGhlIHN1YmplY3QgYW5kIHJlcGxhY2UgdGhlIHEgYXQgdGhlIG9sZCBzcG90ICh3aXRoaW4gbGVmdCkgd2l0aCBUUlVFXG5cbiAgICAgIHN1YmplY3QuY2hlY2tzID0gcXVlcnkuY2hlY2tzOyAvLyB0YWtlIHRoZSBjaGVja3MgZnJvbSB0aGUgbGVmdFxuXG4gICAgICBxdWVyeS5jaGVja3MgPSBbe1xuICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgIH1dOyAvLyBjaGVja3MgdW5kZXIgbGVmdCByZWZzIHRoZSBzdWJqZWN0IGltcGxpY2l0bHlcbiAgICAgIC8vIHNldCB1cCB0aGUgcmlnaHQgcVxuXG4gICAgICBfYW5jZXN0b3IuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgIH0pOyAvLyBhbmNlc3RvciBpbXBsaWNpdGx5IHJlZnMgdGhlIHN1YmplY3RcblxuXG4gICAgICByaWdodC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQU5DRVNUT1IsXG4gICAgICAgIC8vIHR5cGUgaXMgc3dhcHBlZCBvbiByaWdodCBzaWRlIHF1ZXJpZXNcbiAgICAgICAgYW5jZXN0b3I6IF9hbmNlc3RvcixcbiAgICAgICAgZGVzY2VuZGFudDogX2Rlc2NlbmRhbnQgLy8gZW1wdHkgZm9yIG5vd1xuXG4gICAgICB9KTtcbiAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGxlZnQsIGNvbXBvdW5kKTsgLy8gdXBkYXRlIHRoZSByZWYgc2luY2Ugd2UgbW92ZWQgdGhpbmdzIGFyb3VuZCBmb3IgYHF1ZXJ5YFxuXG4gICAgICBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9IHN1YmplY3Q7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICByZXR1cm4gX2Rlc2NlbmRhbnQ7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSByaWdodCBzaWRlJ3MgZGVzY2VuZGFudFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhbmNlc3RvciBxdWVyeVxuICAgICAgLy8gaW5mbyBmb3IgcGFyZW50IHF1ZXJ5XG4gICAgICB2YXIgX2FuY2VzdG9yMiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfZGVzY2VuZGFudDIgPSBuZXdRdWVyeSgpO1xuXG4gICAgICB2YXIgYWRRQ2hlY2tzID0gW3tcbiAgICAgICAgdHlwZTogVHlwZS5BTkNFU1RPUixcbiAgICAgICAgYW5jZXN0b3I6IF9hbmNlc3RvcjIsXG4gICAgICAgIGRlc2NlbmRhbnQ6IF9kZXNjZW5kYW50MlxuICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICBfYW5jZXN0b3IyLmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGhlIHByZXZpb3VzIHF1ZXJ5IGNvbnRhaW5zIHRoZSBjaGVja3MgZm9yIHRoZSBwYXJlbnRcblxuICAgICAgcXVlcnkuY2hlY2tzID0gYWRRQ2hlY2tzOyAvLyBwYyBxdWVyeSB0YWtlcyBvdmVyXG5cbiAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgIHJldHVybiBfZGVzY2VuZGFudDI7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBjaGlsZFxuICAgIH1cbiAgfVxufSwge1xuICBuYW1lOiAnc3ViamVjdCcsXG4gIG1vZGlmaWVyOiB0cnVlLFxuICByZWdleDogdG9rZW5zLnN1YmplY3QsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgIT0gbnVsbCAmJiBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCAhPT0gcXVlcnkpIHtcbiAgICAgIHdhcm4oJ1JlZGVmaW5pdGlvbiBvZiBzdWJqZWN0IGluIHNlbGVjdG9yIGAnICsgc2VsZWN0b3IudG9TdHJpbmcoKSArICdgJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBxdWVyeTtcbiAgICB2YXIgdG9wUSA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgIHZhciB0b3BDaGsgPSB0b3BRLmNoZWNrc1swXTtcbiAgICB2YXIgdG9wVHlwZSA9IHRvcENoayA9PSBudWxsID8gbnVsbCA6IHRvcENoay50eXBlO1xuXG4gICAgaWYgKHRvcFR5cGUgPT09IFR5cGUuRElSRUNURURfRURHRSkge1xuICAgICAgLy8gZGlyZWN0ZWQgZWRnZSB3aXRoIHN1YmplY3Qgb24gdGhlIHRhcmdldFxuICAgICAgLy8gY2hhbmdlIHRvIHRhcmdldCBub2RlIGNoZWNrXG4gICAgICB0b3BDaGsudHlwZSA9IFR5cGUuTk9ERV9UQVJHRVQ7XG4gICAgfSBlbHNlIGlmICh0b3BUeXBlID09PSBUeXBlLlVORElSRUNURURfRURHRSkge1xuICAgICAgLy8gdW5kaXJlY3RlZCBlZGdlIHdpdGggc3ViamVjdCBvbiB0aGUgc2Vjb25kIG5vZGVcbiAgICAgIC8vIGNoYW5nZSB0byBuZWlnaGJvciBjaGVja1xuICAgICAgdG9wQ2hrLnR5cGUgPSBUeXBlLk5PREVfTkVJR0hCT1I7XG4gICAgICB0b3BDaGsubm9kZSA9IHRvcENoay5ub2Rlc1sxXTsgLy8gc2Vjb25kIG5vZGUgaXMgc3ViamVjdFxuXG4gICAgICB0b3BDaGsubmVpZ2hib3IgPSB0b3BDaGsubm9kZXNbMF07IC8vIGNsZWFuIHVwIHVudXNlZCBmaWVsZHMgZm9yIG5ldyB0eXBlXG5cbiAgICAgIHRvcENoay5ub2RlcyA9IG51bGw7XG4gICAgfVxuICB9XG59XTtcbmV4cHJzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGUucmVnZXhPYmogPSBuZXcgUmVnRXhwKCdeJyArIGUucmVnZXgpO1xufSk7XG5cbi8qKlxuICogT2YgYWxsIHRoZSBleHByZXNzaW9ucywgZmluZCB0aGUgZmlyc3QgbWF0Y2ggaW4gdGhlIHJlbWFpbmluZyB0ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbWFpbmluZyBUaGUgcmVtYWluaW5nIHRleHQgdG8gcGFyc2VcbiAqIEByZXR1cm5zIFRoZSBtYXRjaGVkIGV4cHJlc3Npb24gYW5kIHRoZSBuZXdseSByZW1haW5pbmcgdGV4dCBgeyBleHByLCBtYXRjaCwgbmFtZSwgcmVtYWluaW5nIH1gXG4gKi9cblxudmFyIGNvbnN1bWVFeHByID0gZnVuY3Rpb24gY29uc3VtZUV4cHIocmVtYWluaW5nKSB7XG4gIHZhciBleHByO1xuICB2YXIgbWF0Y2g7XG4gIHZhciBuYW1lO1xuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgZXhwcnMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgZSA9IGV4cHJzW2pdO1xuICAgIHZhciBuID0gZS5uYW1lO1xuICAgIHZhciBtID0gcmVtYWluaW5nLm1hdGNoKGUucmVnZXhPYmopO1xuXG4gICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgbWF0Y2ggPSBtO1xuICAgICAgZXhwciA9IGU7XG4gICAgICBuYW1lID0gbjtcbiAgICAgIHZhciBjb25zdW1lZCA9IG1bMF07XG4gICAgICByZW1haW5pbmcgPSByZW1haW5pbmcuc3Vic3RyaW5nKGNvbnN1bWVkLmxlbmd0aCk7XG4gICAgICBicmVhazsgLy8gd2UndmUgY29uc3VtZWQgb25lIGV4cHIsIHNvIHdlIGNhbiByZXR1cm4gbm93XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHByOiBleHByLFxuICAgIG1hdGNoOiBtYXRjaCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHJlbWFpbmluZzogcmVtYWluaW5nXG4gIH07XG59O1xuLyoqXG4gKiBDb25zdW1lIGFsbCB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtYWluaW5nIFRoZSB0ZXh0IHRvIGNvbnN1bWVcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSByZW1vdmVkXG4gKi9cblxuXG52YXIgY29uc3VtZVdoaXRlc3BhY2UgPSBmdW5jdGlvbiBjb25zdW1lV2hpdGVzcGFjZShyZW1haW5pbmcpIHtcbiAgdmFyIG1hdGNoID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKy8pO1xuXG4gIGlmIChtYXRjaCkge1xuICAgIHZhciBjb25zdW1lZCA9IG1hdGNoWzBdO1xuICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoY29uc3VtZWQubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiByZW1haW5pbmc7XG59O1xuLyoqXG4gKiBQYXJzZSB0aGUgc3RyaW5nIGFuZCBzdG9yZSB0aGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIGluIHRoZSBTZWxlY3Rvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBUaGUgc2VsZWN0b3Igc3RyaW5nXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdG9yIHdhcyBzdWNjZXNzZnVsbHkgcGFyc2VkLCBgZmFsc2VgIG90aGVyd2lzZVxuICovXG5cblxudmFyIHBhcnNlID0gZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcmVtYWluaW5nID0gc2VsZi5pbnB1dFRleHQgPSBzZWxlY3RvcjtcbiAgdmFyIGN1cnJlbnRRdWVyeSA9IHNlbGZbMF0gPSBuZXdRdWVyeSgpO1xuICBzZWxmLmxlbmd0aCA9IDE7XG4gIHJlbWFpbmluZyA9IGNvbnN1bWVXaGl0ZXNwYWNlKHJlbWFpbmluZyk7IC8vIGdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlXG5cbiAgZm9yICg7Oykge1xuICAgIHZhciBleHBySW5mbyA9IGNvbnN1bWVFeHByKHJlbWFpbmluZyk7XG5cbiAgICBpZiAoZXhwckluZm8uZXhwciA9PSBudWxsKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgaXMgaW52YWxpZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IGV4cHJJbmZvLm1hdGNoLnNsaWNlKDEpOyAvLyBsZXQgdGhlIHRva2VuIHBvcHVsYXRlIHRoZSBzZWxlY3RvciBvYmplY3QgaW4gY3VycmVudFF1ZXJ5XG5cbiAgICAgIHZhciByZXQgPSBleHBySW5mby5leHByLnBvcHVsYXRlKHNlbGYsIGN1cnJlbnRRdWVyeSwgYXJncyk7XG5cbiAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gZXhpdCBpZiBwb3B1bGF0aW9uIGZhaWxlZFxuICAgICAgfSBlbHNlIGlmIChyZXQgIT0gbnVsbCkge1xuICAgICAgICBjdXJyZW50UXVlcnkgPSByZXQ7IC8vIGNoYW5nZSB0aGUgY3VycmVudCBxdWVyeSB0byBiZSBmaWxsZWQgaWYgdGhlIGV4cHIgc3BlY2lmaWVzXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVtYWluaW5nID0gZXhwckluZm8ucmVtYWluaW5nOyAvLyB3ZSdyZSBkb25lIHdoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gcGFyc2VcblxuICAgIGlmIChyZW1haW5pbmcubWF0Y2goL15cXHMqJC8pKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgbGFzdFEgPSBzZWxmW3NlbGYubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHNlbGYuY3VycmVudFN1YmplY3QgIT0gbnVsbCkge1xuICAgIGxhc3RRLnN1YmplY3QgPSBzZWxmLmN1cnJlbnRTdWJqZWN0O1xuICB9XG5cbiAgbGFzdFEuZWRnZUNvdW50ID0gc2VsZi5lZGdlQ291bnQ7XG4gIGxhc3RRLmNvbXBvdW5kQ291bnQgPSBzZWxmLmNvbXBvdW5kQ291bnQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHEgPSBzZWxmW2ldOyAvLyBpbiBmdXR1cmUsIHRoaXMgY291bGQgcG90ZW50aWFsbHkgYmUgYWxsb3dlZCBpZiB0aGVyZSB3ZXJlIG9wZXJhdG9yIHByZWNlZGVuY2UgYW5kIGRldGVjdGlvbiBvZiBpbnZhbGlkIGNvbWJpbmF0aW9uc1xuXG4gICAgaWYgKHEuY29tcG91bmRDb3VudCA+IDAgJiYgcS5lZGdlQ291bnQgPiAwKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGludmFsaWQgYmVjYXVzZSBpdCB1c2VzIGJvdGggYSBjb21wb3VuZCBzZWxlY3RvciBhbmQgYW4gZWRnZSBzZWxlY3RvcicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChxLmVkZ2VDb3VudCA+IDEpIHtcbiAgICAgIHdhcm4oJ1RoZSBzZWxlY3RvciBgJyArIHNlbGVjdG9yICsgJ2AgaXMgaW52YWxpZCBiZWNhdXNlIGl0IHVzZXMgbXVsdGlwbGUgZWRnZSBzZWxlY3RvcnMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHEuZWRnZUNvdW50ID09PSAxKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGRlcHJlY2F0ZWQuICBFZGdlIHNlbGVjdG9ycyBkbyBub3QgdGFrZSBlZmZlY3Qgb24gY2hhbmdlcyB0byBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhZnRlciBhbiBlZGdlIGlzIGFkZGVkLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFVzZSBhIGNsYXNzIG9yIGRhdGEgc2VsZWN0b3Igb24gZWRnZXMgaW5zdGVhZCwgdXBkYXRpbmcgdGhlIGNsYXNzIG9yIGRhdGEgb2YgYW4gZWRnZSB3aGVuIHlvdXIgYXBwIGRldGVjdHMgYSBjaGFuZ2UgaW4gc291cmNlIG9yIHRhcmdldCBub2Rlcy4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTsgLy8gc3VjY2Vzc1xufTtcbi8qKlxuICogR2V0IHRoZSBzZWxlY3RvciByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4gIFRoaXMgdmFsdWUgdXNlcyBkZWZhdWx0IGZvcm1hdHRpbmcsXG4gKiBzbyB0aGluZ3MgbGlrZSBzcGFjaW5nIG1heSBkaWZmZXIgZnJvbSB0aGUgaW5wdXQgdGV4dCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHNlbGVjdG9yIHN0cmluZ1xuICovXG5cblxudmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIGlmICh0aGlzLnRvU3RyaW5nQ2FjaGUgIT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nQ2FjaGU7XG4gIH1cblxuICB2YXIgY2xlYW4gPSBmdW5jdGlvbiBjbGVhbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGNsZWFuVmFsID0gZnVuY3Rpb24gY2xlYW5WYWwodmFsKSB7XG4gICAgaWYgKHN0cmluZyh2YWwpKSB7XG4gICAgICByZXR1cm4gJ1wiJyArIHZhbCArICdcIic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjbGVhbih2YWwpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgc3BhY2UgPSBmdW5jdGlvbiBzcGFjZSh2YWwpIHtcbiAgICByZXR1cm4gJyAnICsgdmFsICsgJyAnO1xuICB9O1xuXG4gIHZhciBjaGVja1RvU3RyaW5nID0gZnVuY3Rpb24gY2hlY2tUb1N0cmluZyhjaGVjaywgc3ViamVjdCkge1xuICAgIHZhciB0eXBlID0gY2hlY2sudHlwZSxcbiAgICAgICAgdmFsdWUgPSBjaGVjay52YWx1ZTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBUeXBlLkdST1VQOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGdyb3VwID0gY2xlYW4odmFsdWUpO1xuICAgICAgICAgIHJldHVybiBncm91cC5zdWJzdHJpbmcoMCwgZ3JvdXAubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfQ09NUEFSRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgICAgICAgICBvcGVyYXRvciA9IGNoZWNrLm9wZXJhdG9yO1xuICAgICAgICAgIHJldHVybiAnWycgKyBmaWVsZCArIHNwYWNlKGNsZWFuKG9wZXJhdG9yKSkgKyBjbGVhblZhbCh2YWx1ZSkgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfQk9PTDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBfb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgICAgICAgICAgX2ZpZWxkID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgcmV0dXJuICdbJyArIGNsZWFuKF9vcGVyYXRvcikgKyBfZmllbGQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfRVhJU1Q6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX2ZpZWxkMiA9IGNoZWNrLmZpZWxkO1xuICAgICAgICAgIHJldHVybiAnWycgKyBfZmllbGQyICsgJ10nO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgVHlwZS5NRVRBX0NPTVBBUkU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX29wZXJhdG9yMiA9IGNoZWNrLm9wZXJhdG9yLFxuICAgICAgICAgICAgICBfZmllbGQzID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgcmV0dXJuICdbWycgKyBfZmllbGQzICsgc3BhY2UoY2xlYW4oX29wZXJhdG9yMikpICsgY2xlYW5WYWwodmFsdWUpICsgJ11dJztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuU1RBVEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLklEOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuICcjJyArIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgVHlwZS5DTEFTUzpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiAnLicgKyB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuUEFSRU5UOlxuICAgICAgY2FzZSBUeXBlLkNISUxEOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5VG9TdHJpbmcoY2hlY2sucGFyZW50LCBzdWJqZWN0KSArIHNwYWNlKCc+JykgKyBxdWVyeVRvU3RyaW5nKGNoZWNrLmNoaWxkLCBzdWJqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuQU5DRVNUT1I6XG4gICAgICBjYXNlIFR5cGUuREVTQ0VOREFOVDpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiBxdWVyeVRvU3RyaW5nKGNoZWNrLmFuY2VzdG9yLCBzdWJqZWN0KSArICcgJyArIHF1ZXJ5VG9TdHJpbmcoY2hlY2suZGVzY2VuZGFudCwgc3ViamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkNPTVBPVU5EX1NQTElUOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxocyA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2subGVmdCwgc3ViamVjdCk7XG4gICAgICAgICAgdmFyIHN1YiA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2suc3ViamVjdCwgc3ViamVjdCk7XG4gICAgICAgICAgdmFyIHJocyA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2sucmlnaHQsIHN1YmplY3QpO1xuICAgICAgICAgIHJldHVybiBsaHMgKyAobGhzLmxlbmd0aCA+IDAgPyAnICcgOiAnJykgKyBzdWIgKyByaHM7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLlRSVUU6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIHF1ZXJ5VG9TdHJpbmcgPSBmdW5jdGlvbiBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIHF1ZXJ5LmNoZWNrcy5yZWR1Y2UoZnVuY3Rpb24gKHN0ciwgY2hrLCBpKSB7XG4gICAgICByZXR1cm4gc3RyICsgKHN1YmplY3QgPT09IHF1ZXJ5ICYmIGkgPT09IDAgPyAnJCcgOiAnJykgKyBjaGVja1RvU3RyaW5nKGNoaywgc3ViamVjdCk7XG4gICAgfSwgJycpO1xuICB9O1xuXG4gIHZhciBzdHIgPSAnJztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcXVlcnkgPSB0aGlzW2ldO1xuICAgIHN0ciArPSBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBxdWVyeS5zdWJqZWN0KTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEgJiYgaSA8IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgc3RyICs9ICcsICc7XG4gICAgfVxuICB9XG5cbiAgdGhpcy50b1N0cmluZ0NhY2hlID0gc3RyO1xuICByZXR1cm4gc3RyO1xufTtcbnZhciBwYXJzZSQxID0ge1xuICBwYXJzZTogcGFyc2UsXG4gIHRvU3RyaW5nOiB0b1N0cmluZ1xufTtcblxudmFyIHZhbENtcCA9IGZ1bmN0aW9uIHZhbENtcChmaWVsZFZhbCwgb3BlcmF0b3IsIHZhbHVlKSB7XG4gIHZhciBtYXRjaGVzO1xuICB2YXIgaXNGaWVsZFN0ciA9IHN0cmluZyhmaWVsZFZhbCk7XG4gIHZhciBpc0ZpZWxkTnVtID0gbnVtYmVyKGZpZWxkVmFsKTtcbiAgdmFyIGlzVmFsU3RyID0gc3RyaW5nKHZhbHVlKTtcbiAgdmFyIGZpZWxkU3RyLCB2YWxTdHI7XG4gIHZhciBjYXNlSW5zZW5zaXRpdmUgPSBmYWxzZTtcbiAgdmFyIG5vdEV4cHIgPSBmYWxzZTtcbiAgdmFyIGlzSW5lcUNtcCA9IGZhbHNlO1xuXG4gIGlmIChvcGVyYXRvci5pbmRleE9mKCchJykgPj0gMCkge1xuICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnIScsICcnKTtcbiAgICBub3RFeHByID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcGVyYXRvci5pbmRleE9mKCdAJykgPj0gMCkge1xuICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnQCcsICcnKTtcbiAgICBjYXNlSW5zZW5zaXRpdmUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGlzRmllbGRTdHIgfHwgaXNWYWxTdHIgfHwgY2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgZmllbGRTdHIgPSAhaXNGaWVsZFN0ciAmJiAhaXNGaWVsZE51bSA/ICcnIDogJycgKyBmaWVsZFZhbDtcbiAgICB2YWxTdHIgPSAnJyArIHZhbHVlO1xuICB9IC8vIGlmIHdlJ3JlIGRvaW5nIGEgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLCB0aGVuIHdlJ3JlIHVzaW5nIGEgU1RSSU5HIGNvbXBhcmlzb25cbiAgLy8gZXZlbiBpZiB3ZSdyZSBjb21wYXJpbmcgbnVtYmVyc1xuXG5cbiAgaWYgKGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgIGZpZWxkVmFsID0gZmllbGRTdHIgPSBmaWVsZFN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbHVlID0gdmFsU3RyID0gdmFsU3RyLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnKj0nOlxuICAgICAgbWF0Y2hlcyA9IGZpZWxkU3RyLmluZGV4T2YodmFsU3RyKSA+PSAwO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICckPSc6XG4gICAgICBtYXRjaGVzID0gZmllbGRTdHIuaW5kZXhPZih2YWxTdHIsIGZpZWxkU3RyLmxlbmd0aCAtIHZhbFN0ci5sZW5ndGgpID49IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ149JzpcbiAgICAgIG1hdGNoZXMgPSBmaWVsZFN0ci5pbmRleE9mKHZhbFN0cikgPT09IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJz0nOlxuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID09PSB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnPic6XG4gICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID4gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJz49JzpcbiAgICAgIGlzSW5lcUNtcCA9IHRydWU7XG4gICAgICBtYXRjaGVzID0gZmllbGRWYWwgPj0gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJzwnOlxuICAgICAgaXNJbmVxQ21wID0gdHJ1ZTtcbiAgICAgIG1hdGNoZXMgPSBmaWVsZFZhbCA8IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICc8PSc6XG4gICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsIDw9IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gIH0gLy8gYXBwbHkgdGhlIG5vdCBvcCwgYnV0IG51bGwgdmFscyBmb3IgaW5lcXVhbGl0aWVzIHNob3VsZCBhbHdheXMgc3RheSBub24tbWF0Y2hpbmdcblxuXG4gIGlmIChub3RFeHByICYmIChmaWVsZFZhbCAhPSBudWxsIHx8ICFpc0luZXFDbXApKSB7XG4gICAgbWF0Y2hlcyA9ICFtYXRjaGVzO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoZXM7XG59O1xudmFyIGJvb2xDbXAgPSBmdW5jdGlvbiBib29sQ21wKGZpZWxkVmFsLCBvcGVyYXRvcikge1xuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnPyc6XG4gICAgICByZXR1cm4gZmllbGRWYWwgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBjYXNlICchJzpcbiAgICAgIHJldHVybiBmaWVsZFZhbCA/IGZhbHNlIDogdHJ1ZTtcblxuICAgIGNhc2UgJ14nOlxuICAgICAgcmV0dXJuIGZpZWxkVmFsID09PSB1bmRlZmluZWQ7XG4gIH1cbn07XG52YXIgZXhpc3RDbXAgPSBmdW5jdGlvbiBleGlzdENtcChmaWVsZFZhbCkge1xuICByZXR1cm4gZmllbGRWYWwgIT09IHVuZGVmaW5lZDtcbn07XG52YXIgZGF0YSA9IGZ1bmN0aW9uIGRhdGEoZWxlLCBmaWVsZCkge1xuICByZXR1cm4gZWxlLmRhdGEoZmllbGQpO1xufTtcbnZhciBtZXRhID0gZnVuY3Rpb24gbWV0YShlbGUsIGZpZWxkKSB7XG4gIHJldHVybiBlbGVbZmllbGRdKCk7XG59O1xuXG4vKiogQSBsb29rdXAgb2YgYG1hdGNoKGNoZWNrLCBlbGUpYCBmdW5jdGlvbnMgYnkgYFR5cGVgIGludCAqL1xuXG52YXIgbWF0Y2ggPSBbXTtcbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIGZvciB0aGUgZWxlbWVudFxuICogQHBhcmFtIHF1ZXJ5IFRoZSBgeyB0eXBlLCB2YWx1ZSwgLi4uIH1gIHF1ZXJ5IG9iamVjdFxuICogQHBhcmFtIGVsZSBUaGUgZWxlbWVudCB0byBjb21wYXJlIGFnYWluc3RcbiovXG5cbnZhciBtYXRjaGVzID0gZnVuY3Rpb24gbWF0Y2hlcyhxdWVyeSwgZWxlKSB7XG4gIHJldHVybiBxdWVyeS5jaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoaykge1xuICAgIHJldHVybiBtYXRjaFtjaGsudHlwZV0oY2hrLCBlbGUpO1xuICB9KTtcbn07XG5cbm1hdGNoW1R5cGUuR1JPVVBdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIGdyb3VwID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBncm91cCA9PT0gJyonIHx8IGdyb3VwID09PSBlbGUuZ3JvdXAoKTtcbn07XG5cbm1hdGNoW1R5cGUuU1RBVEVdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIHN0YXRlU2VsZWN0b3IgPSBjaGVjay52YWx1ZTtcbiAgcmV0dXJuIHN0YXRlU2VsZWN0b3JNYXRjaGVzKHN0YXRlU2VsZWN0b3IsIGVsZSk7XG59O1xuXG5tYXRjaFtUeXBlLklEXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBpZCA9IGNoZWNrLnZhbHVlO1xuICByZXR1cm4gZWxlLmlkKCkgPT09IGlkO1xufTtcblxubWF0Y2hbVHlwZS5DTEFTU10gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICB2YXIgY2xzID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBlbGUuaGFzQ2xhc3MoY2xzKTtcbn07XG5cbm1hdGNoW1R5cGUuTUVUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiB2YWxDbXAobWV0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IsIHZhbHVlKTtcbn07XG5cbm1hdGNoW1R5cGUuREFUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiB2YWxDbXAoZGF0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IsIHZhbHVlKTtcbn07XG5cbm1hdGNoW1R5cGUuREFUQV9CT09MXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgcmV0dXJuIGJvb2xDbXAoZGF0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IpO1xufTtcblxubWF0Y2hbVHlwZS5EQVRBX0VYSVNUXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgcmV0dXJuIGV4aXN0Q21wKGRhdGEoZWxlLCBmaWVsZCkpO1xufTtcblxubWF0Y2hbVHlwZS5VTkRJUkVDVEVEX0VER0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIHFBID0gY2hlY2subm9kZXNbMF07XG4gIHZhciBxQiA9IGNoZWNrLm5vZGVzWzFdO1xuICB2YXIgc3JjID0gZWxlLnNvdXJjZSgpO1xuICB2YXIgdGd0ID0gZWxlLnRhcmdldCgpO1xuICByZXR1cm4gbWF0Y2hlcyhxQSwgc3JjKSAmJiBtYXRjaGVzKHFCLCB0Z3QpIHx8IG1hdGNoZXMocUIsIHNyYykgJiYgbWF0Y2hlcyhxQSwgdGd0KTtcbn07XG5cbm1hdGNoW1R5cGUuTk9ERV9ORUlHSEJPUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5ub2RlLCBlbGUpICYmIGVsZS5uZWlnaGJvcmhvb2QoKS5zb21lKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuIG4uaXNOb2RlKCkgJiYgbWF0Y2hlcyhjaGVjay5uZWlnaGJvciwgbik7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5ESVJFQ1RFRF9FREdFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLnNvdXJjZSwgZWxlLnNvdXJjZSgpKSAmJiBtYXRjaGVzKGNoZWNrLnRhcmdldCwgZWxlLnRhcmdldCgpKTtcbn07XG5cbm1hdGNoW1R5cGUuTk9ERV9TT1VSQ0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgcmV0dXJuIG1hdGNoZXMoY2hlY2suc291cmNlLCBlbGUpICYmIGVsZS5vdXRnb2VycygpLnNvbWUoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pc05vZGUoKSAmJiBtYXRjaGVzKGNoZWNrLnRhcmdldCwgbik7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5OT0RFX1RBUkdFVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay50YXJnZXQsIGVsZSkgJiYgZWxlLmluY29tZXJzKCkuc29tZShmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlzTm9kZSgpICYmIG1hdGNoZXMoY2hlY2suc291cmNlLCBuKTtcbiAgfSk7XG59O1xuXG5tYXRjaFtUeXBlLkNISUxEXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLmNoaWxkLCBlbGUpICYmIG1hdGNoZXMoY2hlY2sucGFyZW50LCBlbGUucGFyZW50KCkpO1xufTtcblxubWF0Y2hbVHlwZS5QQVJFTlRdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgcmV0dXJuIG1hdGNoZXMoY2hlY2sucGFyZW50LCBlbGUpICYmIGVsZS5jaGlsZHJlbigpLnNvbWUoZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyhjaGVjay5jaGlsZCwgYyk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5ERVNDRU5EQU5UXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLmRlc2NlbmRhbnQsIGVsZSkgJiYgZWxlLmFuY2VzdG9ycygpLnNvbWUoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyhjaGVjay5hbmNlc3RvciwgYSk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5BTkNFU1RPUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5hbmNlc3RvciwgZWxlKSAmJiBlbGUuZGVzY2VuZGFudHMoKS5zb21lKGZ1bmN0aW9uIChkKSB7XG4gICAgcmV0dXJuIG1hdGNoZXMoY2hlY2suZGVzY2VuZGFudCwgZCk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5DT01QT1VORF9TUExJVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5zdWJqZWN0LCBlbGUpICYmIG1hdGNoZXMoY2hlY2subGVmdCwgZWxlKSAmJiBtYXRjaGVzKGNoZWNrLnJpZ2h0LCBlbGUpO1xufTtcblxubWF0Y2hbVHlwZS5UUlVFXSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5tYXRjaFtUeXBlLkNPTExFQ1RJT05dID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIGNvbGxlY3Rpb24gPSBjaGVjay52YWx1ZTtcbiAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzKGVsZSk7XG59O1xuXG5tYXRjaFtUeXBlLkZJTFRFUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICB2YXIgZmlsdGVyID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBmaWx0ZXIoZWxlKTtcbn07XG5cbnZhciBmaWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbikge1xuICB2YXIgc2VsZiA9IHRoaXM7IC8vIGZvciAxIGlkICNmb28gcXVlcmllcywganVzdCBnZXQgdGhlIGVsZW1lbnRcblxuICBpZiAoc2VsZi5sZW5ndGggPT09IDEgJiYgc2VsZlswXS5jaGVja3MubGVuZ3RoID09PSAxICYmIHNlbGZbMF0uY2hlY2tzWzBdLnR5cGUgPT09IFR5cGUuSUQpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5nZXRFbGVtZW50QnlJZChzZWxmWzBdLmNoZWNrc1swXS52YWx1ZSkuY29sbGVjdGlvbigpO1xuICB9XG5cbiAgdmFyIHNlbGVjdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiBzZWxlY3RvckZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGYubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBxdWVyeSA9IHNlbGZbal07XG5cbiAgICAgIGlmIChtYXRjaGVzKHF1ZXJ5LCBlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgaWYgKHNlbGYudGV4dCgpID09IG51bGwpIHtcbiAgICBzZWxlY3RvckZ1bmN0aW9uID0gZnVuY3Rpb24gc2VsZWN0b3JGdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoc2VsZWN0b3JGdW5jdGlvbik7XG59OyAvLyBmaWx0ZXJcbi8vIGRvZXMgc2VsZWN0b3IgbWF0Y2ggYSBzaW5nbGUgZWxlbWVudD9cblxuXG52YXIgbWF0Y2hlcyQxID0gZnVuY3Rpb24gbWF0Y2hlcyQxKGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxmLmxlbmd0aDsgaisrKSB7XG4gICAgdmFyIHF1ZXJ5ID0gc2VsZltqXTtcblxuICAgIGlmIChtYXRjaGVzKHF1ZXJ5LCBlbGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59OyAvLyBtYXRjaGVzXG5cblxudmFyIG1hdGNoaW5nID0ge1xuICBtYXRjaGVzOiBtYXRjaGVzJDEsXG4gIGZpbHRlcjogZmlsdGVyXG59O1xuXG52YXIgU2VsZWN0b3IgPSBmdW5jdGlvbiBTZWxlY3RvcihzZWxlY3Rvcikge1xuICB0aGlzLmlucHV0VGV4dCA9IHNlbGVjdG9yO1xuICB0aGlzLmN1cnJlbnRTdWJqZWN0ID0gbnVsbDtcbiAgdGhpcy5jb21wb3VuZENvdW50ID0gMDtcbiAgdGhpcy5lZGdlQ291bnQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgaWYgKHNlbGVjdG9yID09IG51bGwgfHwgc3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaCgvXlxccyokLykpIDsgZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihzZWxlY3RvcikpIHtcbiAgICB0aGlzLmFkZFF1ZXJ5KHtcbiAgICAgIGNoZWNrczogW3tcbiAgICAgICAgdHlwZTogVHlwZS5DT0xMRUNUSU9OLFxuICAgICAgICB2YWx1ZTogc2VsZWN0b3IuY29sbGVjdGlvbigpXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGZuKHNlbGVjdG9yKSkge1xuICAgIHRoaXMuYWRkUXVlcnkoe1xuICAgICAgY2hlY2tzOiBbe1xuICAgICAgICB0eXBlOiBUeXBlLkZJTFRFUixcbiAgICAgICAgdmFsdWU6IHNlbGVjdG9yXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHN0cmluZyhzZWxlY3RvcikpIHtcbiAgICBpZiAoIXRoaXMucGFyc2Uoc2VsZWN0b3IpKSB7XG4gICAgICB0aGlzLmludmFsaWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBlcnJvcignQSBzZWxlY3RvciBtdXN0IGJlIGNyZWF0ZWQgZnJvbSBhIHN0cmluZzsgZm91bmQgJyk7XG4gIH1cbn07XG5cbnZhciBzZWxmbiA9IFNlbGVjdG9yLnByb3RvdHlwZTtcbltwYXJzZSQxLCBtYXRjaGluZ10uZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICByZXR1cm4gZXh0ZW5kKHNlbGZuLCBwKTtcbn0pO1xuXG5zZWxmbi50ZXh0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pbnB1dFRleHQ7XG59O1xuXG5zZWxmbi5zaXplID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZW5ndGg7XG59O1xuXG5zZWxmbi5lcSA9IGZ1bmN0aW9uIChpKSB7XG4gIHJldHVybiB0aGlzW2ldO1xufTtcblxuc2VsZm4uc2FtZVRleHQgPSBmdW5jdGlvbiAob3RoZXJTZWwpIHtcbiAgcmV0dXJuICF0aGlzLmludmFsaWQgJiYgIW90aGVyU2VsLmludmFsaWQgJiYgdGhpcy50ZXh0KCkgPT09IG90aGVyU2VsLnRleHQoKTtcbn07XG5cbnNlbGZuLmFkZFF1ZXJ5ID0gZnVuY3Rpb24gKHEpIHtcbiAgdGhpc1t0aGlzLmxlbmd0aCsrXSA9IHE7XG59O1xuXG5zZWxmbi5zZWxlY3RvciA9IHNlbGZuLnRvU3RyaW5nO1xuXG52YXIgZWxlc2ZuJGYgPSB7XG4gIGFsbEFyZTogZnVuY3Rpb24gYWxsQXJlKHNlbGVjdG9yKSB7XG4gICAgdmFyIHNlbE9iaiA9IG5ldyBTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMuZXZlcnkoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgfSk7XG4gIH0sXG4gIGlzOiBmdW5jdGlvbiBpcyhzZWxlY3Rvcikge1xuICAgIHZhciBzZWxPYmogPSBuZXcgU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgfSk7XG4gIH0sXG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoZm4sIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByZXQgPSAhdGhpc0FyZyA/IGZuKHRoaXNbaV0sIGksIHRoaXMpIDogZm4uYXBwbHkodGhpc0FyZywgW3RoaXNbaV0sIGksIHRoaXNdKTtcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShmbiwgdGhpc0FyZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJldCA9ICF0aGlzQXJnID8gZm4odGhpc1tpXSwgaSwgdGhpcykgOiBmbi5hcHBseSh0aGlzQXJnLCBbdGhpc1tpXSwgaSwgdGhpc10pO1xuXG4gICAgICBpZiAoIXJldCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNhbWU6IGZ1bmN0aW9uIHNhbWUoY29sbGVjdGlvbikge1xuICAgIC8vIGNoZWFwIGNvbGxlY3Rpb24gcmVmIGNoZWNrXG4gICAgaWYgKHRoaXMgPT09IGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbGxlY3Rpb24gPSB0aGlzLmN5KCkuY29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICB2YXIgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIHZhciBjb2xsZWN0aW9uTGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7IC8vIGNoZWFwIGxlbmd0aCBjaGVja1xuXG4gICAgaWYgKHRoaXNMZW5ndGggIT09IGNvbGxlY3Rpb25MZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNoZWFwIGVsZW1lbnQgcmVmIGNoZWNrXG5cblxuICAgIGlmICh0aGlzTGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpc1swXSA9PT0gY29sbGVjdGlvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICB9KTtcbiAgfSxcbiAgYW55U2FtZTogZnVuY3Rpb24gYW55U2FtZShjb2xsZWN0aW9uKSB7XG4gICAgY29sbGVjdGlvbiA9IHRoaXMuY3koKS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgfSk7XG4gIH0sXG4gIGFsbEFyZU5laWdoYm9yczogZnVuY3Rpb24gYWxsQXJlTmVpZ2hib3JzKGNvbGxlY3Rpb24pIHtcbiAgICBjb2xsZWN0aW9uID0gdGhpcy5jeSgpLmNvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgdmFyIG5ob29kID0gdGhpcy5uZWlnaGJvcmhvb2QoKTtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gbmhvb2QuaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgfSk7XG4gIH0sXG4gIGNvbnRhaW5zOiBmdW5jdGlvbiBjb250YWlucyhjb2xsZWN0aW9uKSB7XG4gICAgY29sbGVjdGlvbiA9IHRoaXMuY3koKS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gc2VsZi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICB9KTtcbiAgfVxufTtcbmVsZXNmbiRmLmFsbEFyZU5laWdoYm91cnMgPSBlbGVzZm4kZi5hbGxBcmVOZWlnaGJvcnM7XG5lbGVzZm4kZi5oYXMgPSBlbGVzZm4kZi5jb250YWlucztcbmVsZXNmbiRmLmVxdWFsID0gZWxlc2ZuJGYuZXF1YWxzID0gZWxlc2ZuJGYuc2FtZTtcblxudmFyIGNhY2hlID0gZnVuY3Rpb24gY2FjaGUoZm4sIG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyYXZlcnNhbENhY2hlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpIHtcbiAgICB2YXIgc2VsZWN0b3JPckVsZXMgPSBhcmcxO1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIga2V5O1xuXG4gICAgaWYgKHNlbGVjdG9yT3JFbGVzID09IG51bGwpIHtcbiAgICAgIGtleSA9ICcnO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihzZWxlY3Rvck9yRWxlcykgJiYgc2VsZWN0b3JPckVsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBrZXkgPSBzZWxlY3Rvck9yRWxlcy5pZCgpO1xuICAgIH1cblxuICAgIGlmIChlbGVzLmxlbmd0aCA9PT0gMSAmJiBrZXkpIHtcbiAgICAgIHZhciBfcCA9IGVsZXNbMF0uX3ByaXZhdGU7XG4gICAgICB2YXIgdGNoID0gX3AudHJhdmVyc2FsQ2FjaGUgPSBfcC50cmF2ZXJzYWxDYWNoZSB8fCB7fTtcbiAgICAgIHZhciBjaCA9IHRjaFtuYW1lXSA9IHRjaFtuYW1lXSB8fCBbXTtcbiAgICAgIHZhciBoYXNoID0gaGFzaFN0cmluZyhrZXkpO1xuICAgICAgdmFyIGNhY2hlSGl0ID0gY2hbaGFzaF07XG5cbiAgICAgIGlmIChjYWNoZUhpdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVIaXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hbaGFzaF0gPSBmbi5jYWxsKGVsZXMsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZm4uY2FsbChlbGVzLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgZWxlc2ZuJGcgPSB7XG4gIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KHNlbGVjdG9yKSB7XG4gICAgdmFyIHBhcmVudHMgPSBbXTsgLy8gb3B0aW1pc2F0aW9uIGZvciBzaW5nbGUgZWxlIGNhbGxcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXNbMF0uX3ByaXZhdGUucGFyZW50O1xuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIHZhciBfcGFyZW50ID0gZWxlLl9wcml2YXRlLnBhcmVudDtcblxuICAgICAgaWYgKF9wYXJlbnQpIHtcbiAgICAgICAgcGFyZW50cy5wdXNoKF9wYXJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIHBhcmVudHM6IGZ1bmN0aW9uIHBhcmVudHMoc2VsZWN0b3IpIHtcbiAgICB2YXIgcGFyZW50cyA9IFtdO1xuICAgIHZhciBlbGVzID0gdGhpcy5wYXJlbnQoKTtcblxuICAgIHdoaWxlIChlbGVzLm5vbmVtcHR5KCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgcGFyZW50cy5wdXNoKGVsZSk7XG4gICAgICB9XG5cbiAgICAgIGVsZXMgPSBlbGVzLnBhcmVudCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIGNvbW1vbkFuY2VzdG9yczogZnVuY3Rpb24gY29tbW9uQW5jZXN0b3JzKHNlbGVjdG9yKSB7XG4gICAgdmFyIGFuY2VzdG9ycztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgcGFyZW50cyA9IGVsZS5wYXJlbnRzKCk7XG4gICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMgfHwgcGFyZW50cztcbiAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5pbnRlcnNlY3QocGFyZW50cyk7IC8vIGN1cnJlbnQgbGlzdCBtdXN0IGJlIGNvbW1vbiB3aXRoIGN1cnJlbnQgZWxlIHBhcmVudHMgc2V0XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9ycy5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBvcnBoYW5zOiBmdW5jdGlvbiBvcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNPcnBoYW4oKTtcbiAgICB9KS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBub25vcnBoYW5zOiBmdW5jdGlvbiBub25vcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNDaGlsZCgpO1xuICAgIH0pLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIGNoaWxkcmVuOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgZWxlQ2hpbGRyZW4gPSBlbGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChlbGVDaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oY2hpbGRyZW4sIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sICdjaGlsZHJlbicpLFxuICBzaWJsaW5nczogZnVuY3Rpb24gc2libGluZ3Moc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpLm5vdCh0aGlzKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBpc1BhcmVudDogZnVuY3Rpb24gaXNQYXJlbnQoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggIT09IDA7XG4gICAgfVxuICB9LFxuICBpc0NoaWxkbGVzczogZnVuY3Rpb24gaXNDaGlsZGxlc3MoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgfVxuICB9LFxuICBpc0NoaWxkOiBmdW5jdGlvbiBpc0NoaWxkKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSAmJiBlbGUuX3ByaXZhdGUucGFyZW50ICE9IG51bGw7XG4gICAgfVxuICB9LFxuICBpc09ycGhhbjogZnVuY3Rpb24gaXNPcnBoYW4oKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5wYXJlbnQgPT0gbnVsbDtcbiAgICB9XG4gIH0sXG4gIGRlc2NlbmRhbnRzOiBmdW5jdGlvbiBkZXNjZW5kYW50cyhzZWxlY3Rvcikge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuXG4gICAgZnVuY3Rpb24gYWRkKGVsZXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuXG4gICAgICAgIGlmIChlbGUuY2hpbGRyZW4oKS5ub25lbXB0eSgpKSB7XG4gICAgICAgICAgYWRkKGVsZS5jaGlsZHJlbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFkZCh0aGlzLmNoaWxkcmVuKCkpO1xuICAgIHJldHVybiB0aGlzLnNwYXduKGVsZW1lbnRzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBmb3JFYWNoQ29tcG91bmQoZWxlcywgZm4sIGluY2x1ZGVTZWxmLCByZWN1cnNpdmVTdGVwKSB7XG4gIHZhciBxID0gW107XG4gIHZhciBkaWQgPSBuZXcgU2V0JDEoKTtcbiAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICB2YXIgaGFzQ29tcG91bmRzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgaWYgKGluY2x1ZGVTZWxmKSB7XG4gICAgICBxLnB1c2goZWxlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIGVsZSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKHEubGVuZ3RoID4gMCkge1xuICAgIHZhciBfZWxlID0gcS5zaGlmdCgpO1xuXG4gICAgZm4oX2VsZSk7XG4gICAgZGlkLmFkZChfZWxlLmlkKCkpO1xuXG4gICAgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIF9lbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVzO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZHJlbihxLCBkaWQsIGVsZSkge1xuICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBlbGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgICAgaWYgKCFkaWQuaGFzKGNoaWxkLmlkKCkpKSB7XG4gICAgICAgIHEucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIHZlcnkgZWZmaWNpZW50IHZlcnNpb24gb2YgZWxlcy5hZGQoIGVsZXMuZGVzY2VuZGFudHMoKSApLmZvckVhY2goKVxuLy8gZm9yIGludGVybmFsIHVzZVxuXG5cbmVsZXNmbiRnLmZvckVhY2hEb3duID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZENoaWxkcmVuKTtcbn07XG5cbmZ1bmN0aW9uIGFkZFBhcmVudChxLCBkaWQsIGVsZSkge1xuICBpZiAoZWxlLmlzQ2hpbGQoKSkge1xuICAgIHZhciBwYXJlbnQgPSBlbGUuX3ByaXZhdGUucGFyZW50O1xuXG4gICAgaWYgKCFkaWQuaGFzKHBhcmVudC5pZCgpKSkge1xuICAgICAgcS5wdXNoKHBhcmVudCk7XG4gICAgfVxuICB9XG59XG5cbmVsZXNmbiRnLmZvckVhY2hVcCA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgaW5jbHVkZVNlbGYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gIHJldHVybiBmb3JFYWNoQ29tcG91bmQodGhpcywgZm4sIGluY2x1ZGVTZWxmLCBhZGRQYXJlbnQpO1xufTtcblxuZnVuY3Rpb24gYWRkUGFyZW50QW5kQ2hpbGRyZW4ocSwgZGlkLCBlbGUpIHtcbiAgYWRkUGFyZW50KHEsIGRpZCwgZWxlKTtcbiAgYWRkQ2hpbGRyZW4ocSwgZGlkLCBlbGUpO1xufVxuXG5lbGVzZm4kZy5mb3JFYWNoVXBBbmREb3duID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZFBhcmVudEFuZENoaWxkcmVuKTtcbn07IC8vIGFsaWFzZXNcblxuXG5lbGVzZm4kZy5hbmNlc3RvcnMgPSBlbGVzZm4kZy5wYXJlbnRzO1xuXG52YXIgZm4kMSwgZWxlc2ZuJGg7XG5mbiQxID0gZWxlc2ZuJGggPSB7XG4gIGRhdGE6IGRlZmluZSQzLmRhdGEoe1xuICAgIGZpZWxkOiAnZGF0YScsXG4gICAgYmluZGluZ0V2ZW50OiAnZGF0YScsXG4gICAgYWxsb3dCaW5kaW5nOiB0cnVlLFxuICAgIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgICBzZXR0aW5nRXZlbnQ6ICdkYXRhJyxcbiAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgYWxsb3dHZXR0aW5nOiB0cnVlLFxuICAgIGltbXV0YWJsZUtleXM6IHtcbiAgICAgICdpZCc6IHRydWUsXG4gICAgICAnc291cmNlJzogdHJ1ZSxcbiAgICAgICd0YXJnZXQnOiB0cnVlLFxuICAgICAgJ3BhcmVudCc6IHRydWVcbiAgICB9LFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICByZW1vdmVEYXRhOiBkZWZpbmUkMy5yZW1vdmVEYXRhKHtcbiAgICBmaWVsZDogJ2RhdGEnLFxuICAgIGV2ZW50OiAnZGF0YScsXG4gICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgIHRyaWdnZXJFdmVudDogdHJ1ZSxcbiAgICBpbW11dGFibGVLZXlzOiB7XG4gICAgICAnaWQnOiB0cnVlLFxuICAgICAgJ3NvdXJjZSc6IHRydWUsXG4gICAgICAndGFyZ2V0JzogdHJ1ZSxcbiAgICAgICdwYXJlbnQnOiB0cnVlXG4gICAgfSxcbiAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICB9KSxcbiAgc2NyYXRjaDogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICBiaW5kaW5nRXZlbnQ6ICdzY3JhdGNoJyxcbiAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSksXG4gIHJlbW92ZVNjcmF0Y2g6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAnc2NyYXRjaCcsXG4gICAgZXZlbnQ6ICdzY3JhdGNoJyxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICByc2NyYXRjaDogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdyc2NyYXRjaCcsXG4gICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IGZhbHNlLFxuICAgIGFsbG93R2V0dGluZzogdHJ1ZVxuICB9KSxcbiAgcmVtb3ZlUnNjcmF0Y2g6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAncnNjcmF0Y2gnLFxuICAgIHRyaWdnZXJFdmVudDogZmFsc2VcbiAgfSksXG4gIGlkOiBmdW5jdGlvbiBpZCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICB9XG4gIH1cbn07IC8vIGFsaWFzZXNcblxuZm4kMS5hdHRyID0gZm4kMS5kYXRhO1xuZm4kMS5yZW1vdmVBdHRyID0gZm4kMS5yZW1vdmVEYXRhO1xudmFyIGRhdGEkMSA9IGVsZXNmbiRoO1xuXG52YXIgZWxlc2ZuJGkgPSB7fTtcblxuZnVuY3Rpb24gZGVmaW5lRGVncmVlRnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoaW5jbHVkZUxvb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluY2x1ZGVMb29wcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuaXNOb2RlKCkgJiYgIXNlbGYucmVtb3ZlZCgpKSB7XG4gICAgICB2YXIgZGVncmVlID0gMDtcbiAgICAgIHZhciBub2RlID0gc2VsZlswXTtcbiAgICAgIHZhciBjb25uZWN0ZWRFZGdlcyA9IG5vZGUuX3ByaXZhdGUuZWRnZXM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRFZGdlc1tpXTtcblxuICAgICAgICBpZiAoIWluY2x1ZGVMb29wcyAmJiBlZGdlLmlzTG9vcCgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWUgKz0gY2FsbGJhY2sobm9kZSwgZWRnZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWdyZWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH07XG59XG5cbmV4dGVuZChlbGVzZm4kaSwge1xuICBkZWdyZWU6IGRlZmluZURlZ3JlZUZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBlZGdlKSB7XG4gICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShlZGdlLnRhcmdldCgpKSkge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSksXG4gIGluZGVncmVlOiBkZWZpbmVEZWdyZWVGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgZWRnZSkge1xuICAgIGlmIChlZGdlLnRhcmdldCgpLnNhbWUobm9kZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0pLFxuICBvdXRkZWdyZWU6IGRlZmluZURlZ3JlZUZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBlZGdlKSB7XG4gICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShub2RlKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSlcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVEZWdyZWVCb3VuZHNGdW5jdGlvbihkZWdyZWVGbiwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICB2YXIgcmV0O1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBkZWdyZWUgPSBlbGVbZGVncmVlRm5dKGluY2x1ZGVMb29wcyk7XG5cbiAgICAgIGlmIChkZWdyZWUgIT09IHVuZGVmaW5lZCAmJiAocmV0ID09PSB1bmRlZmluZWQgfHwgY2FsbGJhY2soZGVncmVlLCByZXQpKSkge1xuICAgICAgICByZXQgPSBkZWdyZWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbn1cblxuZXh0ZW5kKGVsZXNmbiRpLCB7XG4gIG1pbkRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2RlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhEZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICB9KSxcbiAgbWluSW5kZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdpbmRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhJbmRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2luZGVncmVlJywgZnVuY3Rpb24gKGRlZ3JlZSwgbWF4KSB7XG4gICAgcmV0dXJuIGRlZ3JlZSA+IG1heDtcbiAgfSksXG4gIG1pbk91dGRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ291dGRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhPdXRkZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdvdXRkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICB9KVxufSk7XG5leHRlbmQoZWxlc2ZuJGksIHtcbiAgdG90YWxEZWdyZWU6IGZ1bmN0aW9uIHRvdGFsRGVncmVlKGluY2x1ZGVMb29wcykge1xuICAgIHZhciB0b3RhbCA9IDA7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdG90YWwgKz0gbm9kZXNbaV0uZGVncmVlKGluY2x1ZGVMb29wcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG59KTtcblxudmFyIGZuJDIsIGVsZXNmbiRqO1xuXG52YXIgYmVmb3JlUG9zaXRpb25TZXQgPSBmdW5jdGlvbiBiZWZvcmVQb3NpdGlvblNldChlbGVzLCBuZXdQb3MsIHNpbGVudCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcblxuICAgIGlmICghZWxlLmxvY2tlZCgpKSB7XG4gICAgICB2YXIgb2xkUG9zID0gZWxlLl9wcml2YXRlLnBvc2l0aW9uO1xuICAgICAgdmFyIGRlbHRhID0ge1xuICAgICAgICB4OiBuZXdQb3MueCAhPSBudWxsID8gbmV3UG9zLnggLSBvbGRQb3MueCA6IDAsXG4gICAgICAgIHk6IG5ld1Bvcy55ICE9IG51bGwgPyBuZXdQb3MueSAtIG9sZFBvcy55IDogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGVsZS5pc1BhcmVudCgpICYmICEoZGVsdGEueCA9PT0gMCAmJiBkZWx0YS55ID09PSAwKSkge1xuICAgICAgICBlbGUuY2hpbGRyZW4oKS5zaGlmdChkZWx0YSwgc2lsZW50KTtcbiAgICAgIH1cblxuICAgICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBvc2l0aW9uRGVmID0ge1xuICBmaWVsZDogJ3Bvc2l0aW9uJyxcbiAgYmluZGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgc2V0dGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgdHJpZ2dlckZuTmFtZTogJ2VtaXRBbmROb3RpZnknLFxuICBhbGxvd0dldHRpbmc6IHRydWUsXG4gIHZhbGlkS2V5czogWyd4JywgJ3knXSxcbiAgYmVmb3JlR2V0OiBmdW5jdGlvbiBiZWZvcmVHZXQoZWxlKSB7XG4gICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gIH0sXG4gIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgIGJlZm9yZVBvc2l0aW9uU2V0KGVsZXMsIG5ld1BvcywgZmFsc2UpO1xuICB9LFxuICBvblNldDogZnVuY3Rpb24gb25TZXQoZWxlcykge1xuICAgIGVsZXMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gIH0sXG4gIGNhblNldDogZnVuY3Rpb24gY2FuU2V0KGVsZSkge1xuICAgIHJldHVybiAhZWxlLmxvY2tlZCgpO1xuICB9XG59O1xuZm4kMiA9IGVsZXNmbiRqID0ge1xuICBwb3NpdGlvbjogZGVmaW5lJDMuZGF0YShwb3NpdGlvbkRlZiksXG4gIC8vIHBvc2l0aW9uIGJ1dCBubyBub3RpZmljYXRpb24gdG8gcmVuZGVyZXJcbiAgc2lsZW50UG9zaXRpb246IGRlZmluZSQzLmRhdGEoZXh0ZW5kKHt9LCBwb3NpdGlvbkRlZiwge1xuICAgIGFsbG93QmluZGluZzogZmFsc2UsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiBmYWxzZSxcbiAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgICAgYmVmb3JlUG9zaXRpb25TZXQoZWxlcywgbmV3UG9zLCB0cnVlKTtcbiAgICB9LFxuICAgIG9uU2V0OiBmdW5jdGlvbiBvblNldChlbGVzKSB7XG4gICAgICBlbGVzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgIH1cbiAgfSkpLFxuICBwb3NpdGlvbnM6IGZ1bmN0aW9uIHBvc2l0aW9ucyhwb3MsIHNpbGVudCkge1xuICAgIGlmIChwbGFpbk9iamVjdChwb3MpKSB7XG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHRoaXMuc2lsZW50UG9zaXRpb24ocG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24ocG9zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZuKHBvcykpIHtcbiAgICAgIHZhciBfZm4gPSBwb3M7XG4gICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcblxuICAgICAgICB2YXIgX3BvcyA9IHZvaWQgMDtcblxuICAgICAgICBpZiAoX3BvcyA9IF9mbihlbGUsIGkpKSB7XG4gICAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgICAgZWxlLnNpbGVudFBvc2l0aW9uKF9wb3MpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGUucG9zaXRpb24oX3Bvcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHNpbGVudFBvc2l0aW9uczogZnVuY3Rpb24gc2lsZW50UG9zaXRpb25zKHBvcykge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9ucyhwb3MsIHRydWUpO1xuICB9LFxuICBzaGlmdDogZnVuY3Rpb24gc2hpZnQoZGltLCB2YWwsIHNpbGVudCkge1xuICAgIHZhciBkZWx0YTtcblxuICAgIGlmIChwbGFpbk9iamVjdChkaW0pKSB7XG4gICAgICBkZWx0YSA9IHtcbiAgICAgICAgeDogbnVtYmVyKGRpbS54KSA/IGRpbS54IDogMCxcbiAgICAgICAgeTogbnVtYmVyKGRpbS55KSA/IGRpbS55IDogMFxuICAgICAgfTtcbiAgICAgIHNpbGVudCA9IHZhbDtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyhkaW0pICYmIG51bWJlcih2YWwpKSB7XG4gICAgICBkZWx0YSA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfTtcbiAgICAgIGRlbHRhW2RpbV0gPSB2YWw7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhICE9IG51bGwpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcG9zID0gZWxlLnBvc2l0aW9uKCk7XG4gICAgICAgIHZhciBuZXdQb3MgPSB7XG4gICAgICAgICAgeDogcG9zLnggKyBkZWx0YS54LFxuICAgICAgICAgIHk6IHBvcy55ICsgZGVsdGEueVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICBlbGUuc2lsZW50UG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjeS5lbmRCYXRjaCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBzaWxlbnRTaGlmdDogZnVuY3Rpb24gc2lsZW50U2hpZnQoZGltLCB2YWwpIHtcbiAgICBpZiAocGxhaW5PYmplY3QoZGltKSkge1xuICAgICAgdGhpcy5zaGlmdChkaW0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKGRpbSkgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgIHRoaXMuc2hpZnQoZGltLCB2YWwsIHRydWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICAvLyBnZXQvc2V0IHRoZSByZW5kZXJlZCAoaS5lLiBvbiBzY3JlZW4pIHBvc2l0b24gb2YgdGhlIGVsZW1lbnRcbiAgcmVuZGVyZWRQb3NpdGlvbjogZnVuY3Rpb24gcmVuZGVyZWRQb3NpdGlvbihkaW0sIHZhbCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHJwb3MgPSBwbGFpbk9iamVjdChkaW0pID8gZGltIDogdW5kZWZpbmVkO1xuICAgIHZhciBzZXR0aW5nID0gcnBvcyAhPT0gdW5kZWZpbmVkIHx8IHZhbCAhPT0gdW5kZWZpbmVkICYmIHN0cmluZyhkaW0pO1xuXG4gICAgaWYgKGVsZSAmJiBlbGUuaXNOb2RlKCkpIHtcbiAgICAgIC8vIG11c3QgaGF2ZSBhbiBlbGVtZW50IGFuZCBtdXN0IGJlIGEgbm9kZSB0byByZXR1cm4gcG9zaXRpb25cbiAgICAgIGlmIChzZXR0aW5nKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBfZWxlID0gdGhpc1tpXTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgIF9lbGUucG9zaXRpb24oZGltLCAodmFsIC0gcGFuW2RpbV0pIC8gem9vbSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChycG9zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHNldCB3aG9sZSBwb3NpdGlvblxuICAgICAgICAgICAgX2VsZS5wb3NpdGlvbihyZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdldHRpbmdcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuICAgICAgICBycG9zID0gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocG9zLCB6b29tLCBwYW4pO1xuXG4gICAgICAgIGlmIChkaW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSB3aG9sZSByZW5kZXJlZCBwb3NpdGlvblxuICAgICAgICAgIHJldHVybiBycG9zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uXG4gICAgICAgICAgcmV0dXJuIHJwb3NbZGltXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXNldHRpbmcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIGZvciBlbXB0eSBjb2xsZWN0aW9uIGNhc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgLy8gZ2V0L3NldCB0aGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICByZWxhdGl2ZVBvc2l0aW9uOiBmdW5jdGlvbiByZWxhdGl2ZVBvc2l0aW9uKGRpbSwgdmFsKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciBwcG9zID0gcGxhaW5PYmplY3QoZGltKSA/IGRpbSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgc2V0dGluZyA9IHBwb3MgIT09IHVuZGVmaW5lZCB8fCB2YWwgIT09IHVuZGVmaW5lZCAmJiBzdHJpbmcoZGltKTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChlbGUgJiYgZWxlLmlzTm9kZSgpKSB7XG4gICAgICAvLyBtdXN0IGhhdmUgYW4gZWxlbWVudCBhbmQgbXVzdCBiZSBhIG5vZGUgdG8gcmV0dXJuIHBvc2l0aW9uXG4gICAgICBpZiAoc2V0dGluZykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgX2VsZTIgPSB0aGlzW2ldO1xuICAgICAgICAgIHZhciBwYXJlbnQgPSBoYXNDb21wb3VuZE5vZGVzID8gX2VsZTIucGFyZW50KCkgOiBudWxsO1xuICAgICAgICAgIHZhciBoYXNQYXJlbnQgPSBwYXJlbnQgJiYgcGFyZW50Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgdmFyIHJlbGF0aXZlVG9QYXJlbnQgPSBoYXNQYXJlbnQ7XG5cbiAgICAgICAgICBpZiAoaGFzUGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRbMF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIG9yaWdpbiA9IHJlbGF0aXZlVG9QYXJlbnQgPyBwYXJlbnQucG9zaXRpb24oKSA6IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKGRpbSwgdmFsICsgb3JpZ2luW2RpbV0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHBvcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBzZXQgd2hvbGUgcG9zaXRpb25cbiAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgeDogcHBvcy54ICsgb3JpZ2luLngsXG4gICAgICAgICAgICAgIHk6IHBwb3MueSArIG9yaWdpbi55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdldHRpbmdcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuXG4gICAgICAgIHZhciBfcGFyZW50ID0gaGFzQ29tcG91bmROb2RlcyA/IGVsZS5wYXJlbnQoKSA6IG51bGw7XG5cbiAgICAgICAgdmFyIF9oYXNQYXJlbnQgPSBfcGFyZW50ICYmIF9wYXJlbnQubGVuZ3RoID4gMDtcblxuICAgICAgICB2YXIgX3JlbGF0aXZlVG9QYXJlbnQgPSBfaGFzUGFyZW50O1xuXG4gICAgICAgIGlmIChfaGFzUGFyZW50KSB7XG4gICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnRbMF07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX29yaWdpbiA9IF9yZWxhdGl2ZVRvUGFyZW50ID8gX3BhcmVudC5wb3NpdGlvbigpIDoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9O1xuXG4gICAgICAgIHBwb3MgPSB7XG4gICAgICAgICAgeDogcG9zLnggLSBfb3JpZ2luLngsXG4gICAgICAgICAgeTogcG9zLnkgLSBfb3JpZ2luLnlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZGltID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgd2hvbGUgcmVuZGVyZWQgcG9zaXRpb25cbiAgICAgICAgICByZXR1cm4gcHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvblxuICAgICAgICAgIHJldHVybiBwcG9zW2RpbV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFzZXR0aW5nKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBmb3IgZW1wdHkgY29sbGVjdGlvbiBjYXNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH1cbn07IC8vIGFsaWFzZXNcblxuZm4kMi5tb2RlbFBvc2l0aW9uID0gZm4kMi5wb2ludCA9IGZuJDIucG9zaXRpb247XG5mbiQyLm1vZGVsUG9zaXRpb25zID0gZm4kMi5wb2ludHMgPSBmbiQyLnBvc2l0aW9ucztcbmZuJDIucmVuZGVyZWRQb2ludCA9IGZuJDIucmVuZGVyZWRQb3NpdGlvbjtcbmZuJDIucmVsYXRpdmVQb2ludCA9IGZuJDIucmVsYXRpdmVQb3NpdGlvbjtcbnZhciBwb3NpdGlvbiA9IGVsZXNmbiRqO1xuXG52YXIgZm4kMywgZWxlc2ZuJGs7XG5mbiQzID0gZWxlc2ZuJGsgPSB7fTtcblxuZWxlc2ZuJGsucmVuZGVyZWRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBiYiA9IHRoaXMuYm91bmRpbmdCb3gob3B0aW9ucyk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgdmFyIHgxID0gYmIueDEgKiB6b29tICsgcGFuLng7XG4gIHZhciB4MiA9IGJiLngyICogem9vbSArIHBhbi54O1xuICB2YXIgeTEgPSBiYi55MSAqIHpvb20gKyBwYW4ueTtcbiAgdmFyIHkyID0gYmIueTIgKiB6b29tICsgcGFuLnk7XG4gIHJldHVybiB7XG4gICAgeDE6IHgxLFxuICAgIHgyOiB4MixcbiAgICB5MTogeTEsXG4gICAgeTI6IHkyLFxuICAgIHc6IHgyIC0geDEsXG4gICAgaDogeTIgLSB5MVxuICB9O1xufTtcblxuZWxlc2ZuJGsuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2lsZW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gIGlmICghY3kuc3R5bGVFbmFibGVkKCkgfHwgIWN5Lmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5mb3JFYWNoVXAoZnVuY3Rpb24gKGVsZSkge1xuICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgX3AuY29tcG91bmRCb3VuZHNDbGVhbiA9IGZhbHNlO1xuICAgICAgX3AuYmJDYWNoZSA9IG51bGw7XG5cbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmVsZXNmbiRrLnVwZGF0ZUNvbXBvdW5kQm91bmRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7IC8vIG5vdCBwb3NzaWJsZSB0byBkbyBvbiBub24tY29tcG91bmQgZ3JhcGhzIG9yIHdpdGggdGhlIHN0eWxlIGRpc2FibGVkXG5cbiAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSB8fCAhY3kuaGFzQ29tcG91bmROb2RlcygpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gc2F2ZSBjeWNsZXMgd2hlbiBiYXRjaGluZyAtLSBidXQgYm91bmRzIHdpbGwgYmUgc3RhbGUgKG9yIG5vdCBleGlzdCB5ZXQpXG5cblxuICBpZiAoIWZvcmNlICYmIGN5LmJhdGNoaW5nKCkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYXJlbnQpIHtcbiAgICBpZiAoIXBhcmVudC5pc1BhcmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIF9wID0gcGFyZW50Ll9wcml2YXRlO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbigpO1xuICAgIHZhciBpbmNsdWRlTGFiZWxzID0gcGFyZW50LnBzdHlsZSgnY29tcG91bmQtc2l6aW5nLXdydC1sYWJlbHMnKS52YWx1ZSA9PT0gJ2luY2x1ZGUnO1xuICAgIHZhciBtaW4gPSB7XG4gICAgICB3aWR0aDoge1xuICAgICAgICB2YWw6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aCcpLnBmVmFsdWUsXG4gICAgICAgIGxlZnQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLWxlZnQnKSxcbiAgICAgICAgcmlnaHQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLXJpZ2h0JylcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6IHtcbiAgICAgICAgdmFsOiBwYXJlbnQucHN0eWxlKCdtaW4taGVpZ2h0JykucGZWYWx1ZSxcbiAgICAgICAgdG9wOiBwYXJlbnQucHN0eWxlKCdtaW4taGVpZ2h0LWJpYXMtdG9wJyksXG4gICAgICAgIGJvdHRvbTogcGFyZW50LnBzdHlsZSgnbWluLWhlaWdodC1iaWFzLWJvdHRvbScpXG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgYmIgPSBjaGlsZHJlbi5ib3VuZGluZ0JveCh7XG4gICAgICBpbmNsdWRlTGFiZWxzOiBpbmNsdWRlTGFiZWxzLFxuICAgICAgaW5jbHVkZU92ZXJsYXlzOiBmYWxzZSxcbiAgICAgIC8vIHVwZGF0aW5nIHRoZSBjb21wb3VuZCBib3VuZHMgaGFwcGVucyBvdXRzaWRlIG9mIHRoZSByZWd1bGFyXG4gICAgICAvLyBjYWNoZSBjeWNsZSAoaS5lLiBiZWZvcmUgZmlyZWQgZXZlbnRzKVxuICAgICAgdXNlQ2FjaGU6IGZhbHNlXG4gICAgfSk7XG4gICAgdmFyIHBvcyA9IF9wLnBvc2l0aW9uOyAvLyBpZiBjaGlsZHJlbiB0YWtlIHVwIHplcm8gYXJlYSB0aGVuIGtlZXAgcG9zaXRpb24gYW5kIGZhbGwgYmFjayBvbiBzdHlsZXNoZWV0IHcvaFxuXG4gICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCkge1xuICAgICAgYmIgPSB7XG4gICAgICAgIHc6IHBhcmVudC5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSxcbiAgICAgICAgaDogcGFyZW50LnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZVxuICAgICAgfTtcbiAgICAgIGJiLngxID0gcG9zLnggLSBiYi53IC8gMjtcbiAgICAgIGJiLngyID0gcG9zLnggKyBiYi53IC8gMjtcbiAgICAgIGJiLnkxID0gcG9zLnkgLSBiYi5oIC8gMjtcbiAgICAgIGJiLnkyID0gcG9zLnkgKyBiYi5oIC8gMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlQmlhc1ZhbHVlcyhwcm9wRGlmZiwgcHJvcEJpYXMsIHByb3BCaWFzQ29tcGxlbWVudCkge1xuICAgICAgdmFyIGJpYXNEaWZmID0gMDtcbiAgICAgIHZhciBiaWFzQ29tcGxlbWVudERpZmYgPSAwO1xuICAgICAgdmFyIGJpYXNUb3RhbCA9IHByb3BCaWFzICsgcHJvcEJpYXNDb21wbGVtZW50O1xuXG4gICAgICBpZiAocHJvcERpZmYgPiAwICYmIGJpYXNUb3RhbCA+IDApIHtcbiAgICAgICAgYmlhc0RpZmYgPSBwcm9wQmlhcyAvIGJpYXNUb3RhbCAqIHByb3BEaWZmO1xuICAgICAgICBiaWFzQ29tcGxlbWVudERpZmYgPSBwcm9wQmlhc0NvbXBsZW1lbnQgLyBiaWFzVG90YWwgKiBwcm9wRGlmZjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmlhc0RpZmY6IGJpYXNEaWZmLFxuICAgICAgICBiaWFzQ29tcGxlbWVudERpZmY6IGJpYXNDb21wbGVtZW50RGlmZlxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlUGFkZGluZ1ZhbHVlcyh3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nT2JqZWN0LCByZWxhdGl2ZVRvKSB7XG4gICAgICAvLyBBc3N1bWluZyBwZXJjZW50YWdlIGlzIG51bWJlciBmcm9tIDAgdG8gMVxuICAgICAgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICclJykge1xuICAgICAgICBzd2l0Y2ggKHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICBjYXNlICd3aWR0aCc6XG4gICAgICAgICAgICByZXR1cm4gd2lkdGggPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgY2FzZSAnaGVpZ2h0JzpcbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQgPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogMDtcblxuICAgICAgICAgIGNhc2UgJ2F2ZXJhZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogKHdpZHRoICsgaGVpZ2h0KSAvIDIgOiAwO1xuXG4gICAgICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiBwYWRkaW5nT2JqZWN0LnBmVmFsdWUgKiBoZWlnaHQgOiAwO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICdweCcpIHtcbiAgICAgICAgcmV0dXJuIHBhZGRpbmdPYmplY3QucGZWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsZWZ0VmFsID0gbWluLndpZHRoLmxlZnQudmFsdWU7XG5cbiAgICBpZiAobWluLndpZHRoLmxlZnQudW5pdHMgPT09ICdweCcgJiYgbWluLndpZHRoLnZhbCA+IDApIHtcbiAgICAgIGxlZnRWYWwgPSBsZWZ0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICB9XG5cbiAgICB2YXIgcmlnaHRWYWwgPSBtaW4ud2lkdGgucmlnaHQudmFsdWU7XG5cbiAgICBpZiAobWluLndpZHRoLnJpZ2h0LnVuaXRzID09PSAncHgnICYmIG1pbi53aWR0aC52YWwgPiAwKSB7XG4gICAgICByaWdodFZhbCA9IHJpZ2h0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICB9XG5cbiAgICB2YXIgdG9wVmFsID0gbWluLmhlaWdodC50b3AudmFsdWU7XG5cbiAgICBpZiAobWluLmhlaWdodC50b3AudW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICB0b3BWYWwgPSB0b3BWYWwgKiAxMDAgLyBtaW4uaGVpZ2h0LnZhbDtcbiAgICB9XG5cbiAgICB2YXIgYm90dG9tVmFsID0gbWluLmhlaWdodC5ib3R0b20udmFsdWU7XG5cbiAgICBpZiAobWluLmhlaWdodC5ib3R0b20udW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICBib3R0b21WYWwgPSBib3R0b21WYWwgKiAxMDAgLyBtaW4uaGVpZ2h0LnZhbDtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGhCaWFzRGlmZnMgPSBjb21wdXRlQmlhc1ZhbHVlcyhtaW4ud2lkdGgudmFsIC0gYmIudywgbGVmdFZhbCwgcmlnaHRWYWwpO1xuICAgIHZhciBkaWZmTGVmdCA9IHdpZHRoQmlhc0RpZmZzLmJpYXNEaWZmO1xuICAgIHZhciBkaWZmUmlnaHQgPSB3aWR0aEJpYXNEaWZmcy5iaWFzQ29tcGxlbWVudERpZmY7XG4gICAgdmFyIGhlaWdodEJpYXNEaWZmcyA9IGNvbXB1dGVCaWFzVmFsdWVzKG1pbi5oZWlnaHQudmFsIC0gYmIuaCwgdG9wVmFsLCBib3R0b21WYWwpO1xuICAgIHZhciBkaWZmVG9wID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNEaWZmO1xuICAgIHZhciBkaWZmQm90dG9tID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNDb21wbGVtZW50RGlmZjtcbiAgICBfcC5hdXRvUGFkZGluZyA9IGNvbXB1dGVQYWRkaW5nVmFsdWVzKGJiLncsIGJiLmgsIHBhcmVudC5wc3R5bGUoJ3BhZGRpbmcnKSwgcGFyZW50LnBzdHlsZSgncGFkZGluZy1yZWxhdGl2ZS10bycpLnZhbHVlKTtcbiAgICBfcC5hdXRvV2lkdGggPSBNYXRoLm1heChiYi53LCBtaW4ud2lkdGgudmFsKTtcbiAgICBwb3MueCA9ICgtZGlmZkxlZnQgKyBiYi54MSArIGJiLngyICsgZGlmZlJpZ2h0KSAvIDI7XG4gICAgX3AuYXV0b0hlaWdodCA9IE1hdGgubWF4KGJiLmgsIG1pbi5oZWlnaHQudmFsKTtcbiAgICBwb3MueSA9ICgtZGlmZlRvcCArIGJiLnkxICsgYmIueTIgKyBkaWZmQm90dG9tKSAvIDI7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG5cbiAgICBpZiAoIV9wLmNvbXBvdW5kQm91bmRzQ2xlYW4gfHwgZm9yY2UpIHtcbiAgICAgIHVwZGF0ZShlbGUpO1xuXG4gICAgICBpZiAoIWN5LmJhdGNoaW5nKCkpIHtcbiAgICAgICAgX3AuY29tcG91bmRCb3VuZHNDbGVhbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG52YXIgbm9uaW5mID0gZnVuY3Rpb24gbm9uaW5mKHgpIHtcbiAgaWYgKHggPT09IEluZmluaXR5IHx8IHggPT09IC1JbmZpbml0eSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHg7XG59O1xuXG52YXIgdXBkYXRlQm91bmRzID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzKGIsIHgxLCB5MSwgeDIsIHkyKSB7XG4gIC8vIGRvbid0IHVwZGF0ZSB3aXRoIHplcm8gYXJlYSBib3hlc1xuICBpZiAoeDIgLSB4MSA9PT0gMCB8fCB5MiAtIHkxID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGRvbid0IHVwZGF0ZSB3aXRoIG51bGwgZGltXG5cblxuICBpZiAoeDEgPT0gbnVsbCB8fCB5MSA9PSBudWxsIHx8IHgyID09IG51bGwgfHwgeTIgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGIueDEgPSB4MSA8IGIueDEgPyB4MSA6IGIueDE7XG4gIGIueDIgPSB4MiA+IGIueDIgPyB4MiA6IGIueDI7XG4gIGIueTEgPSB5MSA8IGIueTEgPyB5MSA6IGIueTE7XG4gIGIueTIgPSB5MiA+IGIueTIgPyB5MiA6IGIueTI7XG4gIGIudyA9IGIueDIgLSBiLngxO1xuICBiLmggPSBiLnkyIC0gYi55MTtcbn07XG5cbnZhciB1cGRhdGVCb3VuZHNGcm9tQm94ID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUJveChiLCBiMikge1xuICBpZiAoYjIgPT0gbnVsbCkge1xuICAgIHJldHVybiBiO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZUJvdW5kcyhiLCBiMi54MSwgYjIueTEsIGIyLngyLCBiMi55Mik7XG59O1xuXG52YXIgcHJlZml4ZWRQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByZWZpeGVkUHJvcGVydHkob2JqLCBmaWVsZCwgcHJlZml4KSB7XG4gIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgZmllbGQsIHByZWZpeCk7XG59O1xuXG52YXIgdXBkYXRlQm91bmRzRnJvbUFycm93ID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUFycm93KGJvdW5kcywgZWxlLCBwcmVmaXgpIHtcbiAgaWYgKGVsZS5jeSgpLmhlYWRsZXNzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gIHZhciBoYWxmQXJXID0gcnN0eWxlLmFycm93V2lkdGggLyAyO1xuICB2YXIgYXJyb3dUeXBlID0gZWxlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LXNoYXBlJykudmFsdWU7XG4gIHZhciB4O1xuICB2YXIgeTtcblxuICBpZiAoYXJyb3dUeXBlICE9PSAnbm9uZScpIHtcbiAgICBpZiAocHJlZml4ID09PSAnc291cmNlJykge1xuICAgICAgeCA9IHJzdHlsZS5zcmNYO1xuICAgICAgeSA9IHJzdHlsZS5zcmNZO1xuICAgIH0gZWxzZSBpZiAocHJlZml4ID09PSAndGFyZ2V0Jykge1xuICAgICAgeCA9IHJzdHlsZS50Z3RYO1xuICAgICAgeSA9IHJzdHlsZS50Z3RZO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0gcnN0eWxlLm1pZFg7XG4gICAgICB5ID0gcnN0eWxlLm1pZFk7XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGluZGl2aWR1YWwgYXJyb3cgYm91bmRzXG5cblxuICAgIHZhciBiYnMgPSBfcC5hcnJvd0JvdW5kcyA9IF9wLmFycm93Qm91bmRzIHx8IHt9O1xuICAgIHZhciBiYiA9IGJic1twcmVmaXhdID0gYmJzW3ByZWZpeF0gfHwge307XG4gICAgYmIueDEgPSB4IC0gaGFsZkFyVztcbiAgICBiYi55MSA9IHkgLSBoYWxmQXJXO1xuICAgIGJiLngyID0geCArIGhhbGZBclc7XG4gICAgYmIueTIgPSB5ICsgaGFsZkFyVztcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgICBleHBhbmRCb3VuZGluZ0JveChiYiwgMSk7XG4gICAgdXBkYXRlQm91bmRzKGJvdW5kcywgYmIueDEsIGJiLnkxLCBiYi54MiwgYmIueTIpO1xuICB9XG59O1xuXG52YXIgdXBkYXRlQm91bmRzRnJvbUxhYmVsID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUxhYmVsKGJvdW5kcywgZWxlLCBwcmVmaXgpIHtcbiAgaWYgKGVsZS5jeSgpLmhlYWRsZXNzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcHJlZml4RGFzaDtcblxuICBpZiAocHJlZml4KSB7XG4gICAgcHJlZml4RGFzaCA9IHByZWZpeCArICctJztcbiAgfSBlbHNlIHtcbiAgICBwcmVmaXhEYXNoID0gJyc7XG4gIH1cblxuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gIHZhciBsYWJlbCA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICdsYWJlbCcpLnN0clZhbHVlO1xuXG4gIGlmIChsYWJlbCkge1xuICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpO1xuICAgIHZhciB2YWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpO1xuICAgIHZhciBsYWJlbFdpZHRoID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFdpZHRoJywgcHJlZml4KTtcbiAgICB2YXIgbGFiZWxIZWlnaHQgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsSGVpZ2h0JywgcHJlZml4KTtcbiAgICB2YXIgbGFiZWxYID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFgnLCBwcmVmaXgpO1xuICAgIHZhciBsYWJlbFkgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teCcpLnBmVmFsdWU7XG4gICAgdmFyIG1hcmdpblkgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgICB2YXIgcm90YXRpb24gPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1yb3RhdGlvbicpO1xuICAgIHZhciBvdXRsaW5lV2lkdGggPSBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlO1xuICAgIHZhciBib3JkZXJXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgaGFsZkJvcmRlcldpZHRoID0gYm9yZGVyV2lkdGggLyAyO1xuICAgIHZhciBwYWRkaW5nID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnKS5wZlZhbHVlO1xuICAgIHZhciBtYXJnaW5PZkVycm9yID0gMjsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuXG4gICAgdmFyIGxoID0gbGFiZWxIZWlnaHQ7XG4gICAgdmFyIGx3ID0gbGFiZWxXaWR0aDtcbiAgICB2YXIgbHdfMiA9IGx3IC8gMjtcbiAgICB2YXIgbGhfMiA9IGxoIC8gMjtcbiAgICB2YXIgbHgxLCBseDIsIGx5MSwgbHkyO1xuXG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgIGx4MiA9IGxhYmVsWCArIGx3XzI7XG4gICAgICBseTEgPSBsYWJlbFkgLSBsaF8yO1xuICAgICAgbHkyID0gbGFiZWxZICsgbGhfMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChoYWxpZ24udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbHgxID0gbGFiZWxYIC0gbHc7XG4gICAgICAgICAgbHgyID0gbGFiZWxYO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgICAgICBseDIgPSBsYWJlbFggKyBsd18yO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBseDEgPSBsYWJlbFg7XG4gICAgICAgICAgbHgyID0gbGFiZWxYICsgbHc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmFsaWduLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGg7XG4gICAgICAgICAgbHkyID0gbGFiZWxZO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGhfMjtcbiAgICAgICAgICBseTIgPSBsYWJlbFkgKyBsaF8yO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgbHkxID0gbGFiZWxZO1xuICAgICAgICAgIGx5MiA9IGxhYmVsWSArIGxoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gc2hpZnQgYnkgbWFyZ2luIGFuZCBleHBhbmQgYnkgb3V0bGluZSBhbmQgYm9yZGVyXG5cblxuICAgIGx4MSArPSBtYXJnaW5YIC0gTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpIC0gcGFkZGluZyAtIG1hcmdpbk9mRXJyb3I7XG4gICAgbHgyICs9IG1hcmdpblggKyBNYXRoLm1heChvdXRsaW5lV2lkdGgsIGhhbGZCb3JkZXJXaWR0aCkgKyBwYWRkaW5nICsgbWFyZ2luT2ZFcnJvcjtcbiAgICBseTEgKz0gbWFyZ2luWSAtIE1hdGgubWF4KG91dGxpbmVXaWR0aCwgaGFsZkJvcmRlcldpZHRoKSAtIHBhZGRpbmcgLSBtYXJnaW5PZkVycm9yO1xuICAgIGx5MiArPSBtYXJnaW5ZICsgTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpICsgcGFkZGluZyArIG1hcmdpbk9mRXJyb3I7IC8vIGFsd2F5cyBzdG9yZSB0aGUgdW5yb3RhdGVkIGxhYmVsIGJvdW5kcyBzZXBhcmF0ZWx5XG5cbiAgICB2YXIgYmJQcmVmaXggPSBwcmVmaXggfHwgJ21haW4nO1xuICAgIHZhciBiYnMgPSBfcC5sYWJlbEJvdW5kcztcbiAgICB2YXIgYmIgPSBiYnNbYmJQcmVmaXhdID0gYmJzW2JiUHJlZml4XSB8fCB7fTtcbiAgICBiYi54MSA9IGx4MTtcbiAgICBiYi55MSA9IGx5MTtcbiAgICBiYi54MiA9IGx4MjtcbiAgICBiYi55MiA9IGx5MjtcbiAgICBiYi53ID0gbHgyIC0gbHgxO1xuICAgIGJiLmggPSBseTIgLSBseTE7XG4gICAgdmFyIGlzQXV0b3JvdGF0ZSA9IGlzRWRnZSAmJiByb3RhdGlvbi5zdHJWYWx1ZSA9PT0gJ2F1dG9yb3RhdGUnO1xuICAgIHZhciBpc1BmVmFsdWUgPSByb3RhdGlvbi5wZlZhbHVlICE9IG51bGwgJiYgcm90YXRpb24ucGZWYWx1ZSAhPT0gMDtcblxuICAgIGlmIChpc0F1dG9yb3RhdGUgfHwgaXNQZlZhbHVlKSB7XG4gICAgICB2YXIgdGhldGEgPSBpc0F1dG9yb3RhdGUgPyBwcmVmaXhlZFByb3BlcnR5KF9wLnJzdHlsZSwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpIDogcm90YXRpb24ucGZWYWx1ZTtcbiAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICB2YXIgc2luID0gTWF0aC5zaW4odGhldGEpOyAvLyByb3RhdGlvbiBwb2ludCAoZGVmYXVsdCB2YWx1ZSBmb3IgY2VudGVyLWNlbnRlcilcblxuICAgICAgdmFyIHhvID0gKGx4MSArIGx4MikgLyAyO1xuICAgICAgdmFyIHlvID0gKGx5MSArIGx5MikgLyAyO1xuXG4gICAgICBpZiAoIWlzRWRnZSkge1xuICAgICAgICBzd2l0Y2ggKGhhbGlnbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgeG8gPSBseDI7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgIHhvID0gbHgxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHZhbGlnbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB5byA9IGx5MjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIHlvID0gbHkxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZSh4LCB5KSB7XG4gICAgICAgIHggPSB4IC0geG87XG4gICAgICAgIHkgPSB5IC0geW87XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogeCAqIGNvcyAtIHkgKiBzaW4gKyB4byxcbiAgICAgICAgICB5OiB4ICogc2luICsgeSAqIGNvcyArIHlvXG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICB2YXIgcHgxeTEgPSByb3RhdGUobHgxLCBseTEpO1xuICAgICAgdmFyIHB4MXkyID0gcm90YXRlKGx4MSwgbHkyKTtcbiAgICAgIHZhciBweDJ5MSA9IHJvdGF0ZShseDIsIGx5MSk7XG4gICAgICB2YXIgcHgyeTIgPSByb3RhdGUobHgyLCBseTIpO1xuICAgICAgbHgxID0gTWF0aC5taW4ocHgxeTEueCwgcHgxeTIueCwgcHgyeTEueCwgcHgyeTIueCk7XG4gICAgICBseDIgPSBNYXRoLm1heChweDF5MS54LCBweDF5Mi54LCBweDJ5MS54LCBweDJ5Mi54KTtcbiAgICAgIGx5MSA9IE1hdGgubWluKHB4MXkxLnksIHB4MXkyLnksIHB4MnkxLnksIHB4MnkyLnkpO1xuICAgICAgbHkyID0gTWF0aC5tYXgocHgxeTEueSwgcHgxeTIueSwgcHgyeTEueSwgcHgyeTIueSk7XG4gICAgfVxuXG4gICAgdmFyIGJiUHJlZml4Um90ID0gYmJQcmVmaXggKyAnUm90JztcbiAgICB2YXIgYmJSb3QgPSBiYnNbYmJQcmVmaXhSb3RdID0gYmJzW2JiUHJlZml4Um90XSB8fCB7fTtcbiAgICBiYlJvdC54MSA9IGx4MTtcbiAgICBiYlJvdC55MSA9IGx5MTtcbiAgICBiYlJvdC54MiA9IGx4MjtcbiAgICBiYlJvdC55MiA9IGx5MjtcbiAgICBiYlJvdC53ID0gbHgyIC0gbHgxO1xuICAgIGJiUm90LmggPSBseTIgLSBseTE7XG4gICAgdXBkYXRlQm91bmRzKGJvdW5kcywgbHgxLCBseTEsIGx4MiwgbHkyKTtcbiAgICB1cGRhdGVCb3VuZHMoX3AubGFiZWxCb3VuZHMuYWxsLCBseDEsIGx5MSwgbHgyLCBseTIpO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kcztcbn07IC8vIGdldCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBlbGVtZW50cyAoaW4gcmF3IG1vZGVsIHBvc2l0aW9uKVxuXG5cbnZhciBib3VuZGluZ0JveEltcGwgPSBmdW5jdGlvbiBib3VuZGluZ0JveEltcGwoZWxlLCBvcHRpb25zKSB7XG4gIHZhciBjeSA9IGVsZS5fcHJpdmF0ZS5jeTtcbiAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuICB2YXIgaGVhZGxlc3MgPSBjeS5oZWFkbGVzcygpO1xuICB2YXIgYm91bmRzID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIGlzTm9kZSA9IGVsZS5pc05vZGUoKTtcbiAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgdmFyIGV4MSwgZXgyLCBleTEsIGV5MjsgLy8gZXh0cmVtYSBvZiBib2R5IC8gbGluZXNcblxuICB2YXIgeCwgeTsgLy8gbm9kZSBwb3NcblxuICB2YXIgcnN0eWxlID0gX3AucnN0eWxlO1xuICB2YXIgbWFudWFsRXhwYW5zaW9uID0gaXNOb2RlICYmIHN0eWxlRW5hYmxlZCA/IGVsZS5wc3R5bGUoJ2JvdW5kcy1leHBhbnNpb24nKS5wZlZhbHVlIDogWzBdOyAvLyBtdXN0IHVzZSBgZGlzcGxheWAgcHJvcCBvbmx5LCBhcyByZWFkaW5nIGBjb21wb3VuZC53aWR0aCgpYCBjYXVzZXMgcmVjdXJzaW9uXG4gIC8vIChvdGhlciBmYWN0b3JzIGxpa2Ugd2lkdGggdmFsdWVzIHdpbGwgYmUgY29uc2lkZXJlZCBsYXRlciBpbiB0aGlzIGZ1bmN0aW9uIGFueXdheSlcblxuICB2YXIgaXNEaXNwbGF5ZWQgPSBmdW5jdGlvbiBpc0Rpc3BsYXllZChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlICE9PSAnbm9uZSc7XG4gIH07XG5cbiAgdmFyIGRpc3BsYXllZCA9ICFzdHlsZUVuYWJsZWQgfHwgaXNEaXNwbGF5ZWQoZWxlKSAvLyBtdXN0IHRha2UgaW50byBhY2NvdW50IGNvbm5lY3RlZCBub2RlcyBiL2Mgb2YgaW1wbGljaXQgZWRnZSBoaWRpbmcgb24gZGlzcGxheTpub25lIG5vZGVcbiAgJiYgKCFpc0VkZ2UgfHwgaXNEaXNwbGF5ZWQoZWxlLnNvdXJjZSgpKSAmJiBpc0Rpc3BsYXllZChlbGUudGFyZ2V0KCkpKTtcblxuICBpZiAoZGlzcGxheWVkKSB7XG4gICAgLy8gZGlzcGxheWVkIHN1ZmZpY2VzLCBzaW5jZSB3ZSB3aWxsIGZpbmQgemVybyBhcmVhIGVsZXMgYW55d2F5XG4gICAgdmFyIG92ZXJsYXlPcGFjaXR5ID0gMDtcbiAgICB2YXIgb3ZlcmxheVBhZGRpbmcgPSAwO1xuXG4gICAgaWYgKHN0eWxlRW5hYmxlZCAmJiBvcHRpb25zLmluY2x1ZGVPdmVybGF5cykge1xuICAgICAgb3ZlcmxheU9wYWNpdHkgPSBlbGUucHN0eWxlKCdvdmVybGF5LW9wYWNpdHknKS52YWx1ZTtcblxuICAgICAgaWYgKG92ZXJsYXlPcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgIG92ZXJsYXlQYWRkaW5nID0gZWxlLnBzdHlsZSgnb3ZlcmxheS1wYWRkaW5nJykudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHcgPSAwO1xuICAgIHZhciB3SGFsZiA9IDA7XG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICB3ID0gZWxlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgICAgd0hhbGYgPSB3IC8gMjtcbiAgICB9XG5cbiAgICBpZiAoaXNOb2RlICYmIG9wdGlvbnMuaW5jbHVkZU5vZGVzKSB7XG4gICAgICB2YXIgcG9zID0gZWxlLnBvc2l0aW9uKCk7XG4gICAgICB4ID0gcG9zLng7XG4gICAgICB5ID0gcG9zLnk7XG5cbiAgICAgIHZhciBfdyA9IGVsZS5vdXRlcldpZHRoKCk7XG5cbiAgICAgIHZhciBoYWxmVyA9IF93IC8gMjtcbiAgICAgIHZhciBoID0gZWxlLm91dGVySGVpZ2h0KCk7XG4gICAgICB2YXIgaGFsZkggPSBoIC8gMjsgLy8gaGFuZGxlIG5vZGUgZGltZW5zaW9uc1xuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICBleDEgPSB4IC0gaGFsZlc7XG4gICAgICBleDIgPSB4ICsgaGFsZlc7XG4gICAgICBleTEgPSB5IC0gaGFsZkg7XG4gICAgICBleTIgPSB5ICsgaGFsZkg7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpO1xuICAgIH0gZWxzZSBpZiAoaXNFZGdlICYmIG9wdGlvbnMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICBpZiAoc3R5bGVFbmFibGVkICYmICFoZWFkbGVzcykge1xuICAgICAgICB2YXIgY3VydmVTdHlsZSA9IGVsZS5wc3R5bGUoJ2N1cnZlLXN0eWxlJykuc3RyVmFsdWU7IC8vIGhhbmRsZSBlZGdlIGRpbWVuc2lvbnMgKHJvdWdoIGJveCBlc3RpbWF0ZSlcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGV4MSA9IE1hdGgubWluKHJzdHlsZS5zcmNYLCByc3R5bGUubWlkWCwgcnN0eWxlLnRndFgpO1xuICAgICAgICBleDIgPSBNYXRoLm1heChyc3R5bGUuc3JjWCwgcnN0eWxlLm1pZFgsIHJzdHlsZS50Z3RYKTtcbiAgICAgICAgZXkxID0gTWF0aC5taW4ocnN0eWxlLnNyY1ksIHJzdHlsZS5taWRZLCByc3R5bGUudGd0WSk7XG4gICAgICAgIGV5MiA9IE1hdGgubWF4KHJzdHlsZS5zcmNZLCByc3R5bGUubWlkWSwgcnN0eWxlLnRndFkpOyAvLyB0YWtlIGludG8gYWNjb3VudCBlZGdlIHdpZHRoXG5cbiAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgIGV5MSAtPSB3SGFsZjtcbiAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpOyAvLyBwcmVjaXNlIGVkZ2VzXG4gICAgICAgIC8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBpZiAoY3VydmVTdHlsZSA9PT0gJ2hheXN0YWNrJykge1xuICAgICAgICAgIHZhciBocHRzID0gcnN0eWxlLmhheXN0YWNrUHRzO1xuXG4gICAgICAgICAgaWYgKGhwdHMgJiYgaHB0cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGV4MSA9IGhwdHNbMF0ueDtcbiAgICAgICAgICAgIGV5MSA9IGhwdHNbMF0ueTtcbiAgICAgICAgICAgIGV4MiA9IGhwdHNbMV0ueDtcbiAgICAgICAgICAgIGV5MiA9IGhwdHNbMV0ueTtcblxuICAgICAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgICAgICB2YXIgdGVtcCA9IGV4MTtcbiAgICAgICAgICAgICAgZXgxID0gZXgyO1xuICAgICAgICAgICAgICBleDIgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXkxID4gZXkyKSB7XG4gICAgICAgICAgICAgIHZhciBfdGVtcCA9IGV5MTtcbiAgICAgICAgICAgICAgZXkxID0gZXkyO1xuICAgICAgICAgICAgICBleTIgPSBfdGVtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlQm91bmRzKGJvdW5kcywgZXgxIC0gd0hhbGYsIGV5MSAtIHdIYWxmLCBleDIgKyB3SGFsZiwgZXkyICsgd0hhbGYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjdXJ2ZVN0eWxlID09PSAnYmV6aWVyJyB8fCBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAndGF4aScpIHtcbiAgICAgICAgICB2YXIgcHRzO1xuXG4gICAgICAgICAgc3dpdGNoIChjdXJ2ZVN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdiZXppZXInOlxuICAgICAgICAgICAgY2FzZSAndW5idW5kbGVkLWJlemllcic6XG4gICAgICAgICAgICAgIHB0cyA9IHJzdHlsZS5iZXppZXJQdHM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICAgICAgICBjYXNlICd0YXhpJzpcbiAgICAgICAgICAgICAgcHRzID0gcnN0eWxlLmxpbmVQdHM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwdHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgdmFyIHB0ID0gcHRzW2pdO1xuICAgICAgICAgICAgICBleDEgPSBwdC54IC0gd0hhbGY7XG4gICAgICAgICAgICAgIGV4MiA9IHB0LnggKyB3SGFsZjtcbiAgICAgICAgICAgICAgZXkxID0gcHQueSAtIHdIYWxmO1xuICAgICAgICAgICAgICBleTIgPSBwdC55ICsgd0hhbGY7XG4gICAgICAgICAgICAgIHVwZGF0ZUJvdW5kcyhib3VuZHMsIGV4MSwgZXkxLCBleDIsIGV5Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGJlemllci1saWtlIG9yIHNlZ21lbnQtbGlrZSBlZGdlXG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGhlYWRsZXNzIG9yIHN0eWxlIGRpc2FibGVkXG4gICAgICAgIC8vIGZhbGxiYWNrIG9uIHNvdXJjZSBhbmQgdGFyZ2V0IHBvc2l0aW9uc1xuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgdmFyIG4xID0gZWxlLnNvdXJjZSgpO1xuICAgICAgICB2YXIgbjFwb3MgPSBuMS5wb3NpdGlvbigpO1xuICAgICAgICB2YXIgbjIgPSBlbGUudGFyZ2V0KCk7XG4gICAgICAgIHZhciBuMnBvcyA9IG4yLnBvc2l0aW9uKCk7XG4gICAgICAgIGV4MSA9IG4xcG9zLng7XG4gICAgICAgIGV4MiA9IG4ycG9zLng7XG4gICAgICAgIGV5MSA9IG4xcG9zLnk7XG4gICAgICAgIGV5MiA9IG4ycG9zLnk7XG5cbiAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgIHZhciBfdGVtcDIgPSBleDE7XG4gICAgICAgICAgZXgxID0gZXgyO1xuICAgICAgICAgIGV4MiA9IF90ZW1wMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleTEgPiBleTIpIHtcbiAgICAgICAgICB2YXIgX3RlbXAzID0gZXkxO1xuICAgICAgICAgIGV5MSA9IGV5MjtcbiAgICAgICAgICBleTIgPSBfdGVtcDM7XG4gICAgICAgIH0gLy8gdGFrZSBpbnRvIGFjY291bnQgZWRnZSB3aWR0aFxuXG5cbiAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgIGV5MSAtPSB3SGFsZjtcbiAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpO1xuICAgICAgfSAvLyBoZWFkbGVzcyBvciBzdHlsZSBkaXNhYmxlZFxuXG4gICAgfSAvLyBlZGdlc1xuICAgIC8vIGhhbmRsZSBlZGdlIGFycm93IHNpemVcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cblxuICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlRWRnZXMgJiYgaXNFZGdlKSB7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdtaWQtc291cmNlJyk7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdtaWQtdGFyZ2V0Jyk7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdzb3VyY2UnKTtcbiAgICAgIHVwZGF0ZUJvdW5kc0Zyb21BcnJvdyhib3VuZHMsIGVsZSwgJ3RhcmdldCcpO1xuICAgIH0gLy8gZ2hvc3RcbiAgICAvLy8vLy8vL1xuXG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICB2YXIgZ2hvc3QgPSBlbGUucHN0eWxlKCdnaG9zdCcpLnZhbHVlID09PSAneWVzJztcblxuICAgICAgaWYgKGdob3N0KSB7XG4gICAgICAgIHZhciBneCA9IGVsZS5wc3R5bGUoJ2dob3N0LW9mZnNldC14JykucGZWYWx1ZTtcbiAgICAgICAgdmFyIGd5ID0gZWxlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXknKS5wZlZhbHVlO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBib3VuZHMueDEgKyBneCwgYm91bmRzLnkxICsgZ3ksIGJvdW5kcy54MiArIGd4LCBib3VuZHMueTIgKyBneSk7XG4gICAgICB9XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGJvZHkgYm91bmRzIHNlcGFyYXRlbHkgZnJvbSB0aGUgbGFiZWxzXG5cblxuICAgIHZhciBiYkJvZHkgPSBfcC5ib2R5Qm91bmRzID0gX3AuYm9keUJvdW5kcyB8fCB7fTtcbiAgICBhc3NpZ25Cb3VuZGluZ0JveChiYkJvZHksIGJvdW5kcyk7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYkJvZHksIG1hbnVhbEV4cGFuc2lvbik7XG4gICAgZXhwYW5kQm91bmRpbmdCb3goYmJCb2R5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgIC8vIG92ZXJsYXlcbiAgICAvLy8vLy8vLy8vXG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICBleDEgPSBib3VuZHMueDE7XG4gICAgICBleDIgPSBib3VuZHMueDI7XG4gICAgICBleTEgPSBib3VuZHMueTE7XG4gICAgICBleTIgPSBib3VuZHMueTI7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEgLSBvdmVybGF5UGFkZGluZywgZXkxIC0gb3ZlcmxheVBhZGRpbmcsIGV4MiArIG92ZXJsYXlQYWRkaW5nLCBleTIgKyBvdmVybGF5UGFkZGluZyk7XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGJvZHkgYm91bmRzIHNlcGFyYXRlbHkgZnJvbSB0aGUgbGFiZWxzXG5cblxuICAgIHZhciBiYk92ZXJsYXkgPSBfcC5vdmVybGF5Qm91bmRzID0gX3Aub3ZlcmxheUJvdW5kcyB8fCB7fTtcbiAgICBhc3NpZ25Cb3VuZGluZ0JveChiYk92ZXJsYXksIGJvdW5kcyk7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYk92ZXJsYXksIG1hbnVhbEV4cGFuc2lvbik7XG4gICAgZXhwYW5kQm91bmRpbmdCb3goYmJPdmVybGF5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgIC8vIGhhbmRsZSBsYWJlbCBkaW1lbnNpb25zXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHZhciBiYkxhYmVscyA9IF9wLmxhYmVsQm91bmRzID0gX3AubGFiZWxCb3VuZHMgfHwge307XG5cbiAgICBpZiAoYmJMYWJlbHMuYWxsICE9IG51bGwpIHtcbiAgICAgIGNsZWFyQm91bmRpbmdCb3goYmJMYWJlbHMuYWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmJMYWJlbHMuYWxsID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlRW5hYmxlZCAmJiBvcHRpb25zLmluY2x1ZGVMYWJlbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVNYWluTGFiZWxzKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZVNvdXJjZUxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgJ3NvdXJjZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZVRhcmdldExhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgJ3RhcmdldCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBzdHlsZSBlbmFibGVkIGZvciBsYWJlbHNcblxuICB9IC8vIGlmIGRpc3BsYXllZFxuXG5cbiAgYm91bmRzLngxID0gbm9uaW5mKGJvdW5kcy54MSk7XG4gIGJvdW5kcy55MSA9IG5vbmluZihib3VuZHMueTEpO1xuICBib3VuZHMueDIgPSBub25pbmYoYm91bmRzLngyKTtcbiAgYm91bmRzLnkyID0gbm9uaW5mKGJvdW5kcy55Mik7XG4gIGJvdW5kcy53ID0gbm9uaW5mKGJvdW5kcy54MiAtIGJvdW5kcy54MSk7XG4gIGJvdW5kcy5oID0gbm9uaW5mKGJvdW5kcy55MiAtIGJvdW5kcy55MSk7XG5cbiAgaWYgKGJvdW5kcy53ID4gMCAmJiBib3VuZHMuaCA+IDAgJiYgZGlzcGxheWVkKSB7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhib3VuZHMsIG1hbnVhbEV4cGFuc2lvbik7IC8vIGV4cGFuZCBib3VuZHMgYnkgMSBiZWNhdXNlIGFudGlhbGlhc2luZyBjYW4gaW5jcmVhc2UgdGhlIHZpc3VhbC9lZmZlY3RpdmUgc2l6ZSBieSAxIG9uIGFsbCBzaWRlc1xuXG4gICAgZXhwYW5kQm91bmRpbmdCb3goYm91bmRzLCAxKTtcbiAgfVxuXG4gIHJldHVybiBib3VuZHM7XG59O1xuXG52YXIgZ2V0S2V5ID0gZnVuY3Rpb24gZ2V0S2V5KG9wdHMpIHtcbiAgdmFyIGkgPSAwO1xuXG4gIHZhciB0ZiA9IGZ1bmN0aW9uIHRmKHZhbCkge1xuICAgIHJldHVybiAodmFsID8gMSA6IDApIDw8IGkrKztcbiAgfTtcblxuICB2YXIga2V5ID0gMDtcbiAga2V5ICs9IHRmKG9wdHMuaW5jdWRlTm9kZXMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlRWRnZXMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlTGFiZWxzKTtcbiAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZU1haW5MYWJlbHMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlU291cmNlTGFiZWxzKTtcbiAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZVRhcmdldExhYmVscyk7XG4gIGtleSArPSB0ZihvcHRzLmluY2x1ZGVPdmVybGF5cyk7XG4gIHJldHVybiBrZXk7XG59O1xuXG52YXIgZ2V0Qm91bmRpbmdCb3hQb3NLZXkgPSBmdW5jdGlvbiBnZXRCb3VuZGluZ0JveFBvc0tleShlbGUpIHtcbiAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgIHZhciBwMSA9IGVsZS5zb3VyY2UoKS5wb3NpdGlvbigpO1xuICAgIHZhciBwMiA9IGVsZS50YXJnZXQoKS5wb3NpdGlvbigpO1xuXG4gICAgdmFyIHIgPSBmdW5jdGlvbiByKHgpIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gaGFzaEludHNBcnJheShbcihwMS54KSwgcihwMS55KSwgcihwMi54KSwgcihwMi55KV0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG52YXIgY2FjaGVkQm91bmRpbmdCb3hJbXBsID0gZnVuY3Rpb24gY2FjaGVkQm91bmRpbmdCb3hJbXBsKGVsZSwgb3B0cykge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBiYjtcbiAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgdmFyIGtleSA9IG9wdHMgPT0gbnVsbCA/IGRlZkJiT3B0c0tleSA6IGdldEtleShvcHRzKTtcbiAgdmFyIHVzaW5nRGVmT3B0cyA9IGtleSA9PT0gZGVmQmJPcHRzS2V5O1xuICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gIHZhciBpc1Bvc0tleVNhbWUgPSBfcC5iYkNhY2hlUG9zS2V5ID09PSBjdXJyUG9zS2V5O1xuICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZTtcblxuICB2YXIgaXNEaXJ0eSA9IGZ1bmN0aW9uIGlzRGlydHkoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5iYkNhY2hlID09IG51bGwgfHwgZWxlLl9wcml2YXRlLnN0eWxlRGlydHk7XG4gIH07XG5cbiAgdmFyIG5lZWRSZWNhbGMgPSAhdXNlQ2FjaGUgfHwgaXNEaXJ0eShlbGUpIHx8IGlzRWRnZSAmJiBpc0RpcnR5KGVsZS5zb3VyY2UoKSkgfHwgaXNEaXJ0eShlbGUudGFyZ2V0KCkpO1xuXG4gIGlmIChuZWVkUmVjYWxjKSB7XG4gICAgaWYgKCFpc1Bvc0tleVNhbWUpIHtcbiAgICAgIGVsZS5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUodXNlQ2FjaGUpO1xuICAgIH1cblxuICAgIGJiID0gYm91bmRpbmdCb3hJbXBsKGVsZSwgZGVmQmJPcHRzKTtcbiAgICBfcC5iYkNhY2hlID0gYmI7XG4gICAgX3AuYmJDYWNoZVBvc0tleSA9IGN1cnJQb3NLZXk7XG4gIH0gZWxzZSB7XG4gICAgYmIgPSBfcC5iYkNhY2hlO1xuICB9IC8vIG5vdCB1c2luZyBkZWYgb3B0cyA9PiBuZWVkIHRvIGJ1aWxkIHVwIGJiIGZyb20gY29tYmluYXRpb24gb2Ygc3ViIGJic1xuXG5cbiAgaWYgKCF1c2luZ0RlZk9wdHMpIHtcbiAgICB2YXIgaXNOb2RlID0gZWxlLmlzTm9kZSgpO1xuICAgIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlTm9kZXMgJiYgaXNOb2RlIHx8IG9wdHMuaW5jbHVkZUVkZ2VzICYmICFpc05vZGUpIHtcbiAgICAgIGlmIChvcHRzLmluY2x1ZGVPdmVybGF5cykge1xuICAgICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJiLCBfcC5vdmVybGF5Qm91bmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmJvZHlCb3VuZHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRzLmluY2x1ZGVMYWJlbHMpIHtcbiAgICAgIGlmIChvcHRzLmluY2x1ZGVNYWluTGFiZWxzICYmICghaXNFZGdlIHx8IG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscyAmJiBvcHRzLmluY2x1ZGVUYXJnZXRMYWJlbHMpKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLmFsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3B0cy5pbmNsdWRlTWFpbkxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLm1haW5Sb3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLnNvdXJjZVJvdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cy5pbmNsdWRlVGFyZ2V0TGFiZWxzKSB7XG4gICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUJveChiYiwgX3AubGFiZWxCb3VuZHMudGFyZ2V0Um90KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgcmV0dXJuIGJiO1xufTtcblxudmFyIGRlZkJiT3B0cyA9IHtcbiAgaW5jbHVkZU5vZGVzOiB0cnVlLFxuICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gIGluY2x1ZGVMYWJlbHM6IHRydWUsXG4gIGluY2x1ZGVNYWluTGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlU291cmNlTGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlVGFyZ2V0TGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlT3ZlcmxheXM6IHRydWUsXG4gIHVzZUNhY2hlOiB0cnVlXG59O1xudmFyIGRlZkJiT3B0c0tleSA9IGdldEtleShkZWZCYk9wdHMpO1xudmFyIGZpbGxlZEJiT3B0cyA9IGRlZmF1bHRzKGRlZkJiT3B0cyk7XG5cbmVsZXNmbiRrLmJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGJvdW5kczsgLy8gdGhlIG1haW4gdXNlY2FzZSBpcyBlbGUuYm91bmRpbmdCb3goKSBmb3IgYSBzaW5nbGUgZWxlbWVudCB3aXRoIG5vL2RlZiBvcHRpb25zXG4gIC8vIHNwZWNpZmllZCBzLnQuIHRoZSBjYWNoZSBpcyB1c2VkLCBzbyBjaGVjayBmb3IgdGhpcyBjYXNlIHRvIG1ha2UgaXQgZmFzdGVyIGJ5XG4gIC8vIGF2b2lkaW5nIHRoZSBvdmVyaGVhZCBvZiB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25cblxuICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpc1swXS5fcHJpdmF0ZS5iYkNhY2hlICE9IG51bGwgJiYgIXRoaXNbMF0uX3ByaXZhdGUuc3R5bGVEaXJ0eSAmJiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMudXNlQ2FjaGUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnVzZUNhY2hlID09PSB0cnVlKSkge1xuICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZCYk9wdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMgPSBmaWxsZWRCYk9wdHMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgYm91bmRzID0gY2FjaGVkQm91bmRpbmdCb3hJbXBsKHRoaXNbMF0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kcyA9IG1ha2VCb3VuZGluZ0JveCgpO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IGRlZkJiT3B0cztcbiAgICB2YXIgb3B0cyA9IGZpbGxlZEJiT3B0cyhvcHRpb25zKTtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICAgIHZhciBzdHlsZUVuYWJsZWQgPSBjeS5zdHlsZUVuYWJsZWQoKTtcblxuICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gICAgICAgIHZhciBpc1Bvc0tleVNhbWUgPSBfcC5iYkNhY2hlUG9zS2V5ID09PSBjdXJyUG9zS2V5O1xuICAgICAgICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZSAmJiAhX3Auc3R5bGVEaXJ0eTtcbiAgICAgICAgZWxlLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSh1c2VDYWNoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb21wb3VuZEJvdW5kcyghb3B0aW9ucy51c2VDYWNoZSk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfZWxlID0gZWxlc1tfaV07XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJvdW5kcywgY2FjaGVkQm91bmRpbmdCb3hJbXBsKF9lbGUsIG9wdHMpKTtcbiAgICB9XG4gIH1cblxuICBib3VuZHMueDEgPSBub25pbmYoYm91bmRzLngxKTtcbiAgYm91bmRzLnkxID0gbm9uaW5mKGJvdW5kcy55MSk7XG4gIGJvdW5kcy54MiA9IG5vbmluZihib3VuZHMueDIpO1xuICBib3VuZHMueTIgPSBub25pbmYoYm91bmRzLnkyKTtcbiAgYm91bmRzLncgPSBub25pbmYoYm91bmRzLngyIC0gYm91bmRzLngxKTtcbiAgYm91bmRzLmggPSBub25pbmYoYm91bmRzLnkyIC0gYm91bmRzLnkxKTtcbiAgcmV0dXJuIGJvdW5kcztcbn07XG5cbmVsZXNmbiRrLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9wID0gdGhpc1tpXS5fcHJpdmF0ZTtcbiAgICBfcC5iYkNhY2hlID0gbnVsbDtcbiAgICBfcC5iYkNhY2hlUG9zS2V5ID0gbnVsbDtcbiAgICBfcC5ib2R5Qm91bmRzID0gbnVsbDtcbiAgICBfcC5vdmVybGF5Qm91bmRzID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5hbGwgPSBudWxsO1xuICAgIF9wLmxhYmVsQm91bmRzLnNvdXJjZSA9IG51bGw7XG4gICAgX3AubGFiZWxCb3VuZHMudGFyZ2V0ID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5tYWluID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5zb3VyY2VSb3QgPSBudWxsO1xuICAgIF9wLmxhYmVsQm91bmRzLnRhcmdldFJvdCA9IG51bGw7XG4gICAgX3AubGFiZWxCb3VuZHMubWFpblJvdCA9IG51bGw7XG4gICAgX3AuYXJyb3dCb3VuZHMuc291cmNlID0gbnVsbDtcbiAgICBfcC5hcnJvd0JvdW5kcy50YXJnZXQgPSBudWxsO1xuICAgIF9wLmFycm93Qm91bmRzWydtaWQtc291cmNlJ10gPSBudWxsO1xuICAgIF9wLmFycm93Qm91bmRzWydtaWQtdGFyZ2V0J10gPSBudWxsO1xuICB9XG5cbiAgdGhpcy5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgcmV0dXJuIHRoaXM7XG59OyAvLyBwcml2YXRlIGhlbHBlciB0byBnZXQgYm91bmRpbmcgYm94IGZvciBjdXN0b20gbm9kZSBwb3NpdGlvbnNcbi8vIC0gZ29vZCBmb3IgcGVyZiBpbiBjZXJ0YWluIGNhc2VzIGJ1dCBjdXJyZW50bHkgcmVxdWlyZXMgZGlydHlpbmcgdGhlIHJlbmRlcmVkIHN0eWxlXG4vLyAtIHdvdWxkIGJlIGJldHRlciB0byBub3QgbW9kaWZ5IHRoZSBub2RlcyBidXQgdGhlIG5vZGVzIGFyZSByZWFkIGRpcmVjdGx5IGV2ZXJ5d2hlcmUgaW4gdGhlIHJlbmRlcmVyLi4uXG4vLyAtIHRyeSB0byB1c2UgZm9yIG9ubHkgdGhpbmdzIGxpa2UgZGlzY3JldGUgbGF5b3V0cyB3aGVyZSB0aGUgbm9kZSBwb3NpdGlvbiB3b3VsZCBjaGFuZ2UgYW55d2F5XG5cblxuZWxlc2ZuJGsuYm91bmRpbmdCb3hBdCA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBwYXJlbnRzID0gY3kuY29sbGVjdGlvbigpO1xuXG4gIGlmIChoYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgcGFyZW50cyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaXNQYXJlbnQoKTtcbiAgICB9KTtcbiAgICBub2RlcyA9IG5vZGVzLm5vdChwYXJlbnRzKTtcbiAgfVxuXG4gIGlmIChwbGFpbk9iamVjdChmbikpIHtcbiAgICB2YXIgb2JqID0gZm47XG5cbiAgICBmbiA9IGZ1bmN0aW9uIGZuKCkge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICB9XG5cbiAgdmFyIHN0b3JlT2xkUG9zID0gZnVuY3Rpb24gc3RvcmVPbGRQb3Mobm9kZSwgaSkge1xuICAgIHJldHVybiBub2RlLl9wcml2YXRlLmJiQXRPbGRQb3MgPSBmbihub2RlLCBpKTtcbiAgfTtcblxuICB2YXIgZ2V0T2xkUG9zID0gZnVuY3Rpb24gZ2V0T2xkUG9zKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5iYkF0T2xkUG9zO1xuICB9O1xuXG4gIGN5LnN0YXJ0QmF0Y2goKTtcbiAgbm9kZXMuZm9yRWFjaChzdG9yZU9sZFBvcykuc2lsZW50UG9zaXRpb25zKGZuKTtcblxuICBpZiAoaGFzQ29tcG91bmROb2Rlcykge1xuICAgIHBhcmVudHMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgcGFyZW50cy5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICBwYXJlbnRzLnVwZGF0ZUNvbXBvdW5kQm91bmRzKHRydWUpOyAvLyBmb3JjZSB1cGRhdGUgYi9jIHdlJ3JlIGluc2lkZSBhIGJhdGNoIGN5Y2xlXG4gIH1cblxuICB2YXIgYmIgPSBjb3B5Qm91bmRpbmdCb3godGhpcy5ib3VuZGluZ0JveCh7XG4gICAgdXNlQ2FjaGU6IGZhbHNlXG4gIH0pKTtcbiAgbm9kZXMuc2lsZW50UG9zaXRpb25zKGdldE9sZFBvcyk7XG5cbiAgaWYgKGhhc0NvbXBvdW5kTm9kZXMpIHtcbiAgICBwYXJlbnRzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgIHBhcmVudHMuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgcGFyZW50cy51cGRhdGVDb21wb3VuZEJvdW5kcyh0cnVlKTsgLy8gZm9yY2UgdXBkYXRlIGIvYyB3ZSdyZSBpbnNpZGUgYSBiYXRjaCBjeWNsZVxuICB9XG5cbiAgY3kuZW5kQmF0Y2goKTtcbiAgcmV0dXJuIGJiO1xufTtcblxuZm4kMy5ib3VuZGluZ2JveCA9IGZuJDMuYmIgPSBmbiQzLmJvdW5kaW5nQm94O1xuZm4kMy5yZW5kZXJlZEJvdW5kaW5nYm94ID0gZm4kMy5yZW5kZXJlZEJvdW5kaW5nQm94O1xudmFyIGJvdW5kcyA9IGVsZXNmbiRrO1xuXG52YXIgZm4kNCwgZWxlc2ZuJGw7XG5mbiQ0ID0gZWxlc2ZuJGwgPSB7fTtcblxudmFyIGRlZmluZURpbUZucyA9IGZ1bmN0aW9uIGRlZmluZURpbUZucyhvcHRzKSB7XG4gIG9wdHMudXBwZXJjYXNlTmFtZSA9IGNhcGl0YWxpemUob3B0cy5uYW1lKTtcbiAgb3B0cy5hdXRvTmFtZSA9ICdhdXRvJyArIG9wdHMudXBwZXJjYXNlTmFtZTtcbiAgb3B0cy5sYWJlbE5hbWUgPSAnbGFiZWwnICsgb3B0cy51cHBlcmNhc2VOYW1lO1xuICBvcHRzLm91dGVyTmFtZSA9ICdvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWU7XG4gIG9wdHMudXBwZXJjYXNlT3V0ZXJOYW1lID0gY2FwaXRhbGl6ZShvcHRzLm91dGVyTmFtZSk7XG5cbiAgZm4kNFtvcHRzLm5hbWVdID0gZnVuY3Rpb24gZGltSW1wbCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIGN5ID0gX3AuY3k7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5Ll9wcml2YXRlLnN0eWxlRW5hYmxlZDtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgICAgaWYgKGVsZS5pc1BhcmVudCgpKSB7XG4gICAgICAgICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gICAgICAgICAgcmV0dXJuIF9wW29wdHMuYXV0b05hbWVdIHx8IDA7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZCA9IGVsZS5wc3R5bGUob3B0cy5uYW1lKTtcblxuICAgICAgICBzd2l0Y2ggKGQuc3RyVmFsdWUpIHtcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICBlbGUucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKCk7XG4gICAgICAgICAgICByZXR1cm4gX3AucnN0eWxlW29wdHMubGFiZWxOYW1lXSB8fCAwO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkLnBmVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmbiQ0WydvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWVdID0gZnVuY3Rpb24gb3V0ZXJEaW1JbXBsKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgY3kgPSBfcC5jeTtcbiAgICB2YXIgc3R5bGVFbmFibGVkID0gY3kuX3ByaXZhdGUuc3R5bGVFbmFibGVkO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgaWYgKHN0eWxlRW5hYmxlZCkge1xuICAgICAgICB2YXIgZGltID0gZWxlW29wdHMubmFtZV0oKTtcbiAgICAgICAgdmFyIGJvcmRlciA9IGVsZS5wc3R5bGUoJ2JvcmRlci13aWR0aCcpLnBmVmFsdWU7IC8vIG4uYi4gMS8yIGVhY2ggc2lkZVxuXG4gICAgICAgIHZhciBwYWRkaW5nID0gMiAqIGVsZS5wYWRkaW5nKCk7XG4gICAgICAgIHJldHVybiBkaW0gKyBib3JkZXIgKyBwYWRkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZuJDRbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlTmFtZV0gPSBmdW5jdGlvbiByZW5kZXJlZERpbUltcGwoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB2YXIgZCA9IGVsZVtvcHRzLm5hbWVdKCk7XG4gICAgICByZXR1cm4gZCAqIHRoaXMuY3koKS56b29tKCk7XG4gICAgfVxuICB9O1xuXG4gIGZuJDRbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlT3V0ZXJOYW1lXSA9IGZ1bmN0aW9uIHJlbmRlcmVkT3V0ZXJEaW1JbXBsKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIG9kID0gZWxlW29wdHMub3V0ZXJOYW1lXSgpO1xuICAgICAgcmV0dXJuIG9kICogdGhpcy5jeSgpLnpvb20oKTtcbiAgICB9XG4gIH07XG59O1xuXG5kZWZpbmVEaW1GbnMoe1xuICBuYW1lOiAnd2lkdGgnXG59KTtcbmRlZmluZURpbUZucyh7XG4gIG5hbWU6ICdoZWlnaHQnXG59KTtcblxuZWxlc2ZuJGwucGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVsZSA9IHRoaXNbMF07XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcblxuICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICBlbGUudXBkYXRlQ29tcG91bmRCb3VuZHMoKTtcblxuICAgIGlmIChfcC5hdXRvUGFkZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AuYXV0b1BhZGRpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbGUucHN0eWxlKCdwYWRkaW5nJykucGZWYWx1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsZS5wc3R5bGUoJ3BhZGRpbmcnKS5wZlZhbHVlO1xuICB9XG59O1xuXG5lbGVzZm4kbC5wYWRkZWRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuICByZXR1cm4gZWxlLmhlaWdodCgpICsgMiAqIGVsZS5wYWRkaW5nKCk7XG59O1xuXG5lbGVzZm4kbC5wYWRkZWRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVsZSA9IHRoaXNbMF07XG4gIHJldHVybiBlbGUud2lkdGgoKSArIDIgKiBlbGUucGFkZGluZygpO1xufTtcblxudmFyIHdpZHRoSGVpZ2h0ID0gZWxlc2ZuJGw7XG5cbnZhciBpZkVkZ2UgPSBmdW5jdGlvbiBpZkVkZ2UoZWxlLCBnZXRWYWx1ZSkge1xuICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgcmV0dXJuIGdldFZhbHVlKGVsZSk7XG4gIH1cbn07XG5cbnZhciBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9uID0gZnVuY3Rpb24gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbihlbGUsIGdldFBvaW50KSB7XG4gIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICByZXR1cm4gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24oZ2V0UG9pbnQoZWxlKSwgY3kuem9vbSgpLCBjeS5wYW4oKSk7XG4gIH1cbn07XG5cbnZhciBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9ucyA9IGZ1bmN0aW9uIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zKGVsZSwgZ2V0UG9pbnRzKSB7XG4gIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgcmV0dXJuIGdldFBvaW50cyhlbGUpLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uKHAsIHpvb20sIHBhbik7XG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBjb250cm9sUG9pbnRzID0gZnVuY3Rpb24gY29udHJvbFBvaW50cyhlbGUpIHtcbiAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldENvbnRyb2xQb2ludHMoZWxlKTtcbn07XG5cbnZhciBzZWdtZW50UG9pbnRzID0gZnVuY3Rpb24gc2VnbWVudFBvaW50cyhlbGUpIHtcbiAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldFNlZ21lbnRQb2ludHMoZWxlKTtcbn07XG5cbnZhciBzb3VyY2VFbmRwb2ludCA9IGZ1bmN0aW9uIHNvdXJjZUVuZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0U291cmNlRW5kcG9pbnQoZWxlKTtcbn07XG5cbnZhciB0YXJnZXRFbmRwb2ludCA9IGZ1bmN0aW9uIHRhcmdldEVuZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0VGFyZ2V0RW5kcG9pbnQoZWxlKTtcbn07XG5cbnZhciBtaWRwb2ludCA9IGZ1bmN0aW9uIG1pZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0RWRnZU1pZHBvaW50KGVsZSk7XG59O1xuXG52YXIgcHRzID0ge1xuICBjb250cm9sUG9pbnRzOiB7XG4gICAgZ2V0OiBjb250cm9sUG9pbnRzLFxuICAgIG11bHQ6IHRydWVcbiAgfSxcbiAgc2VnbWVudFBvaW50czoge1xuICAgIGdldDogc2VnbWVudFBvaW50cyxcbiAgICBtdWx0OiB0cnVlXG4gIH0sXG4gIHNvdXJjZUVuZHBvaW50OiB7XG4gICAgZ2V0OiBzb3VyY2VFbmRwb2ludFxuICB9LFxuICB0YXJnZXRFbmRwb2ludDoge1xuICAgIGdldDogdGFyZ2V0RW5kcG9pbnRcbiAgfSxcbiAgbWlkcG9pbnQ6IHtcbiAgICBnZXQ6IG1pZHBvaW50XG4gIH1cbn07XG5cbnZhciByZW5kZXJlZE5hbWUgPSBmdW5jdGlvbiByZW5kZXJlZE5hbWUobmFtZSkge1xuICByZXR1cm4gJ3JlbmRlcmVkJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc3Vic3RyKDEpO1xufTtcblxudmFyIGVkZ2VQb2ludHMgPSBPYmplY3Qua2V5cyhwdHMpLnJlZHVjZShmdW5jdGlvbiAob2JqLCBuYW1lKSB7XG4gIHZhciBzcGVjID0gcHRzW25hbWVdO1xuICB2YXIgck5hbWUgPSByZW5kZXJlZE5hbWUobmFtZSk7XG5cbiAgb2JqW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpZkVkZ2UodGhpcywgc3BlYy5nZXQpO1xuICB9O1xuXG4gIGlmIChzcGVjLm11bHQpIHtcbiAgICBvYmpbck5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zKHRoaXMsIHNwZWMuZ2V0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9ialtyTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbih0aGlzLCBzcGVjLmdldCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59LCB7fSk7XG5cbnZhciBkaW1lbnNpb25zID0gZXh0ZW5kKHt9LCBwb3NpdGlvbiwgYm91bmRzLCB3aWR0aEhlaWdodCwgZWRnZVBvaW50cyk7XG5cbi8qIVxuRXZlbnQgb2JqZWN0IGJhc2VkIG9uIGpRdWVyeSBldmVudHMsIE1JVCBsaWNlbnNlXG5cbmh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlL1xuaHR0cHM6Ly90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2Vcbmh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvbWFzdGVyL3NyYy9ldmVudC5qc1xuKi9cbnZhciBFdmVudCA9IGZ1bmN0aW9uIEV2ZW50KHNyYywgcHJvcHMpIHtcbiAgdGhpcy5yZWN5Y2xlKHNyYywgcHJvcHMpO1xufTtcblxuZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcbiAgcmV0dXJuIHRydWU7XG59IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxuXG5cbkV2ZW50LnByb3RvdHlwZSA9IHtcbiAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgIHJldHVybiAnZXZlbnQnO1xuICB9LFxuICByZWN5Y2xlOiBmdW5jdGlvbiByZWN5Y2xlKHNyYywgcHJvcHMpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuRmFsc2U7XG5cbiAgICBpZiAoc3JjICE9IG51bGwgJiYgc3JjLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAvLyBCcm93c2VyIEV2ZW50IG9iamVjdFxuICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7IC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG4gICAgICAvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblxuICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCA/IHJldHVyblRydWUgOiByZXR1cm5GYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNyYyAhPSBudWxsICYmIHNyYy50eXBlKSB7XG4gICAgICAvLyBQbGFpbiBvYmplY3QgY29udGFpbmluZyBhbGwgZXZlbnQgZGV0YWlsc1xuICAgICAgcHJvcHMgPSBzcmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEV2ZW50IHN0cmluZ1xuICAgICAgdGhpcy50eXBlID0gc3JjO1xuICAgIH0gLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3RcblxuXG4gICAgaWYgKHByb3BzICE9IG51bGwpIHtcbiAgICAgIC8vIG1vcmUgZWZmaWNpZW50IHRvIG1hbnVhbGx5IGNvcHkgZmllbGRzIHdlIHVzZVxuICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gcHJvcHMub3JpZ2luYWxFdmVudDtcbiAgICAgIHRoaXMudHlwZSA9IHByb3BzLnR5cGUgIT0gbnVsbCA/IHByb3BzLnR5cGUgOiB0aGlzLnR5cGU7XG4gICAgICB0aGlzLmN5ID0gcHJvcHMuY3k7XG4gICAgICB0aGlzLnRhcmdldCA9IHByb3BzLnRhcmdldDtcbiAgICAgIHRoaXMucG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgICAgIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9IHByb3BzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICB0aGlzLm5hbWVzcGFjZSA9IHByb3BzLm5hbWVzcGFjZTtcbiAgICAgIHRoaXMubGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN5ICE9IG51bGwgJiYgdGhpcy5wb3NpdGlvbiAhPSBudWxsICYmIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9PSBudWxsKSB7XG4gICAgICAvLyBjcmVhdGUgYSByZW5kZXJlZCBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgcGFzc2VkIHBvc2l0aW9uXG4gICAgICB2YXIgcG9zID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgIHZhciB6b29tID0gdGhpcy5jeS56b29tKCk7XG4gICAgICB2YXIgcGFuID0gdGhpcy5jeS5wYW4oKTtcbiAgICAgIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgeDogcG9zLnggKiB6b29tICsgcGFuLngsXG4gICAgICAgIHk6IHBvcy55ICogem9vbSArIHBhbi55XG4gICAgICB9O1xuICAgIH0gLy8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblxuXG4gICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICB9LFxuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gcHJldmVudERlZmF1bHQoKSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG4gICAgaWYgKCFlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBpZiBwcmV2ZW50RGVmYXVsdCBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxuXG5cbiAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfSxcbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG4gICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cbiAgICBpZiAoIWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxuXG5cbiAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9LFxuICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9LFxuICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG4gIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZVxufTtcblxudmFyIGV2ZW50UmVnZXggPSAvXihbXi5dKykoXFwuKD86W14uXSspKT8kLzsgLy8gcmVnZXggZm9yIG1hdGNoaW5nIGV2ZW50IHN0cmluZ3MgKGUuZy4gXCJjbGljay5uYW1lc3BhY2VcIilcblxudmFyIHVuaXZlcnNhbE5hbWVzcGFjZSA9ICcuKic7IC8vIG1hdGNoZXMgYXMgaWYgbm8gbmFtZXNwYWNlIHNwZWNpZmllZCBhbmQgcHJldmVudHMgdXNlcnMgZnJvbSB1bmJpbmRpbmcgYWNjaWRlbnRhbGx5XG5cbnZhciBkZWZhdWx0cyQ4ID0ge1xuICBxdWFsaWZpZXJDb21wYXJlOiBmdW5jdGlvbiBxdWFsaWZpZXJDb21wYXJlKHExLCBxMikge1xuICAgIHJldHVybiBxMSA9PT0gcTI7XG4gIH0sXG4gIGV2ZW50TWF0Y2hlczogZnVuY3Rpb24gZXZlbnRNYXRjaGVzKClcbiAgLypjb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmoqL1xuICB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvbiBhZGRFdmVudEZpZWxkcygpXG4gIC8qY29udGV4dCwgZXZ0Ki9cbiAge30sXG4gIGNhbGxiYWNrQ29udGV4dDogZnVuY3Rpb24gY2FsbGJhY2tDb250ZXh0KGNvbnRleHRcbiAgLyosIGxpc3RlbmVyLCBldmVudE9iaiovXG4gICkge1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9LFxuICBiZWZvcmVFbWl0OiBmdW5jdGlvbiBiZWZvcmVFbWl0KClcbiAgLyogY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqICovXG4gIHt9LFxuICBhZnRlckVtaXQ6IGZ1bmN0aW9uIGFmdGVyRW1pdCgpXG4gIC8qIGNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaiAqL1xuICB7fSxcbiAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKVxuICAvKmNvbnRleHQqL1xuICB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudCgpXG4gIC8qY29udGV4dCovXG4gIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgY29udGV4dDogbnVsbFxufTtcbnZhciBkZWZhdWx0c0tleXMgPSBPYmplY3Qua2V5cyhkZWZhdWx0cyQ4KTtcbnZhciBlbXB0eU9wdHMgPSB7fTtcblxuZnVuY3Rpb24gRW1pdHRlcigpIHtcbiAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVtcHR5T3B0cztcbiAgdmFyIGNvbnRleHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcblxuICAvLyBtaWNyby1vcHRpbWlzYXRpb24gdnMgT2JqZWN0LmFzc2lnbigpIC0tIHJlZHVjZXMgRWxlbWVudCBpbnN0YW50aWF0aW9uIHRpbWVcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWZhdWx0c0tleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gZGVmYXVsdHNLZXlzW2ldO1xuICAgIHRoaXNba2V5XSA9IG9wdHNba2V5XSB8fCBkZWZhdWx0cyQ4W2tleV07XG4gIH1cblxuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHRoaXMuY29udGV4dDtcbiAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgdGhpcy5lbWl0dGluZyA9IDA7XG59XG5cbnZhciBwID0gRW1pdHRlci5wcm90b3R5cGU7XG5cbnZhciBmb3JFYWNoRXZlbnQgPSBmdW5jdGlvbiBmb3JFYWNoRXZlbnQoc2VsZiwgaGFuZGxlciwgZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKSB7XG4gIGlmIChmbihxdWFsaWZpZXIpKSB7XG4gICAgY2FsbGJhY2sgPSBxdWFsaWZpZXI7XG4gICAgcXVhbGlmaWVyID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjb25mT3ZlcnJpZGVzKSB7XG4gICAgaWYgKGNvbmYgPT0gbnVsbCkge1xuICAgICAgY29uZiA9IGNvbmZPdmVycmlkZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmYgPSBleHRlbmQoe30sIGNvbmYsIGNvbmZPdmVycmlkZXMpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBldmVudExpc3QgPSBhcnJheShldmVudHMpID8gZXZlbnRzIDogZXZlbnRzLnNwbGl0KC9cXHMrLyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZXZ0ID0gZXZlbnRMaXN0W2ldO1xuXG4gICAgaWYgKGVtcHR5U3RyaW5nKGV2dCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IGV2dC5tYXRjaChldmVudFJlZ2V4KTsgLy8gdHlwZVsubmFtZXNwYWNlXVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB2YXIgdHlwZSA9IG1hdGNoWzFdO1xuICAgICAgdmFyIG5hbWVzcGFjZSA9IG1hdGNoWzJdID8gbWF0Y2hbMl0gOiBudWxsO1xuICAgICAgdmFyIHJldCA9IGhhbmRsZXIoc2VsZiwgZXZ0LCB0eXBlLCBuYW1lc3BhY2UsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpO1xuXG4gICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gYWxsb3cgZXhpdGluZyBlYXJseVxuXG4gICAgfVxuICB9XG59O1xuXG52YXIgbWFrZUV2ZW50T2JqID0gZnVuY3Rpb24gbWFrZUV2ZW50T2JqKHNlbGYsIG9iaikge1xuICBzZWxmLmFkZEV2ZW50RmllbGRzKHNlbGYuY29udGV4dCwgb2JqKTtcbiAgcmV0dXJuIG5ldyBFdmVudChvYmoudHlwZSwgb2JqKTtcbn07XG5cbnZhciBmb3JFYWNoRXZlbnRPYmogPSBmdW5jdGlvbiBmb3JFYWNoRXZlbnRPYmooc2VsZiwgaGFuZGxlciwgZXZlbnRzKSB7XG4gIGlmIChldmVudChldmVudHMpKSB7XG4gICAgaGFuZGxlcihzZWxmLCBldmVudHMpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChldmVudHMpKSB7XG4gICAgaGFuZGxlcihzZWxmLCBtYWtlRXZlbnRPYmooc2VsZiwgZXZlbnRzKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGV2ZW50TGlzdCA9IGFycmF5KGV2ZW50cykgPyBldmVudHMgOiBldmVudHMuc3BsaXQoL1xccysvKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50TGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBldnQgPSBldmVudExpc3RbaV07XG5cbiAgICBpZiAoZW1wdHlTdHJpbmcoZXZ0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gZXZ0Lm1hdGNoKGV2ZW50UmVnZXgpOyAvLyB0eXBlWy5uYW1lc3BhY2VdXG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHZhciB0eXBlID0gbWF0Y2hbMV07XG4gICAgICB2YXIgbmFtZXNwYWNlID0gbWF0Y2hbMl0gPyBtYXRjaFsyXSA6IG51bGw7XG4gICAgICB2YXIgZXZlbnRPYmogPSBtYWtlRXZlbnRPYmooc2VsZiwge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSxcbiAgICAgICAgdGFyZ2V0OiBzZWxmLmNvbnRleHRcbiAgICAgIH0pO1xuICAgICAgaGFuZGxlcihzZWxmLCBldmVudE9iaik7XG4gICAgfVxuICB9XG59O1xuXG5wLm9uID0gcC5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYsIGNvbmZPdmVycmlkZXMpIHtcbiAgZm9yRWFjaEV2ZW50KHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudCwgdHlwZSwgbmFtZXNwYWNlLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mKSB7XG4gICAgaWYgKGZuKGNhbGxiYWNrKSkge1xuICAgICAgc2VsZi5saXN0ZW5lcnMucHVzaCh7XG4gICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgLy8gZnVsbCBldmVudCBzdHJpbmdcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAvLyBjYWxsYmFjayB0byBydW5cbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgLy8gdGhlIGV2ZW50IHR5cGUgKGUuZy4gJ2NsaWNrJylcbiAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UsXG4gICAgICAgIC8vIHRoZSBldmVudCBuYW1lc3BhY2UgKGUuZy4gXCIuZm9vXCIpXG4gICAgICAgIHF1YWxpZmllcjogcXVhbGlmaWVyLFxuICAgICAgICAvLyBhIHJlc3RyaWN0aW9uIG9uIHdoZXRoZXIgdG8gbWF0Y2ggdGhpcyBlbWl0dGVyXG4gICAgICAgIGNvbmY6IGNvbmYgLy8gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG5cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wLm9uZSA9IGZ1bmN0aW9uIChldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpIHtcbiAgcmV0dXJuIHRoaXMub24oZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCB7XG4gICAgb25lOiB0cnVlXG4gIH0pO1xufTtcblxucC5yZW1vdmVMaXN0ZW5lciA9IHAub2ZmID0gZnVuY3Rpb24gKGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmVtaXR0aW5nICE9PSAwKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBjb3B5QXJyYXkodGhpcy5saXN0ZW5lcnMpO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzO1xuXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHtcbiAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAgZm9yRWFjaEV2ZW50KF90aGlzLCBmdW5jdGlvbiAoc2VsZiwgZXZlbnQsIHR5cGUsIG5hbWVzcGFjZSwgcXVhbGlmaWVyLCBjYWxsYmFja1xuICAgIC8qLCBjb25mKi9cbiAgICApIHtcbiAgICAgIGlmICgobGlzdGVuZXIudHlwZSA9PT0gdHlwZSB8fCBldmVudHMgPT09ICcqJykgJiYgKCFuYW1lc3BhY2UgJiYgbGlzdGVuZXIubmFtZXNwYWNlICE9PSAnLionIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gbmFtZXNwYWNlKSAmJiAoIXF1YWxpZmllciB8fCBzZWxmLnF1YWxpZmllckNvbXBhcmUobGlzdGVuZXIucXVhbGlmaWVyLCBxdWFsaWZpZXIpKSAmJiAoIWNhbGxiYWNrIHx8IGxpc3RlbmVyLmNhbGxiYWNrID09PSBjYWxsYmFjaykpIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZik7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIF9sb29wKGkpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVtb3ZlTGlzdGVuZXIoJyonKTtcbn07XG5cbnAuZW1pdCA9IHAudHJpZ2dlciA9IGZ1bmN0aW9uIChldmVudHMsIGV4dHJhUGFyYW1zLCBtYW51YWxDYWxsYmFjaykge1xuICB2YXIgbGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnM7XG4gIHZhciBudW1MaXN0ZW5lcnNCZWZvcmVFbWl0ID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgdGhpcy5lbWl0dGluZysrO1xuXG4gIGlmICghYXJyYXkoZXh0cmFQYXJhbXMpKSB7XG4gICAgZXh0cmFQYXJhbXMgPSBbZXh0cmFQYXJhbXNdO1xuICB9XG5cbiAgZm9yRWFjaEV2ZW50T2JqKHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudE9iaikge1xuICAgIGlmIChtYW51YWxDYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICBsaXN0ZW5lcnMgPSBbe1xuICAgICAgICBldmVudDogZXZlbnRPYmouZXZlbnQsXG4gICAgICAgIHR5cGU6IGV2ZW50T2JqLnR5cGUsXG4gICAgICAgIG5hbWVzcGFjZTogZXZlbnRPYmoubmFtZXNwYWNlLFxuICAgICAgICBjYWxsYmFjazogbWFudWFsQ2FsbGJhY2tcbiAgICAgIH1dO1xuICAgICAgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdCA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIF9sb29wMiA9IGZ1bmN0aW9uIF9sb29wMihpKSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cbiAgICAgIGlmIChsaXN0ZW5lci50eXBlID09PSBldmVudE9iai50eXBlICYmICghbGlzdGVuZXIubmFtZXNwYWNlIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gZXZlbnRPYmoubmFtZXNwYWNlIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gdW5pdmVyc2FsTmFtZXNwYWNlKSAmJiBzZWxmLmV2ZW50TWF0Y2hlcyhzZWxmLmNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaikpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbZXZlbnRPYmpdO1xuXG4gICAgICAgIGlmIChleHRyYVBhcmFtcyAhPSBudWxsKSB7XG4gICAgICAgICAgcHVzaChhcmdzLCBleHRyYVBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmJlZm9yZUVtaXQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuXG4gICAgICAgIGlmIChsaXN0ZW5lci5jb25mICYmIGxpc3RlbmVyLmNvbmYub25lKSB7XG4gICAgICAgICAgc2VsZi5saXN0ZW5lcnMgPSBzZWxmLmxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsICE9PSBsaXN0ZW5lcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb250ZXh0ID0gc2VsZi5jYWxsYmFja0NvbnRleHQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuICAgICAgICB2YXIgcmV0ID0gbGlzdGVuZXIuY2FsbGJhY2suYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIHNlbGYuYWZ0ZXJFbWl0KHNlbGYuY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqKTtcblxuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIGV2ZW50T2JqLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50T2JqLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gaWYgbGlzdGVuZXIgbWF0Y2hlc1xuXG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdDsgaSsrKSB7XG4gICAgICBfbG9vcDIoaSk7XG4gICAgfSAvLyBmb3IgbGlzdGVuZXJcblxuXG4gICAgaWYgKHNlbGYuYnViYmxlKHNlbGYuY29udGV4dCkgJiYgIWV2ZW50T2JqLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIHNlbGYucGFyZW50KHNlbGYuY29udGV4dCkuZW1pdChldmVudE9iaiwgZXh0cmFQYXJhbXMpO1xuICAgIH1cbiAgfSwgZXZlbnRzKTtcbiAgdGhpcy5lbWl0dGluZy0tO1xuICByZXR1cm4gdGhpcztcbn07XG5cbnZhciBlbWl0dGVyT3B0aW9ucyA9IHtcbiAgcXVhbGlmaWVyQ29tcGFyZTogZnVuY3Rpb24gcXVhbGlmaWVyQ29tcGFyZShzZWxlY3RvcjEsIHNlbGVjdG9yMikge1xuICAgIGlmIChzZWxlY3RvcjEgPT0gbnVsbCB8fCBzZWxlY3RvcjIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdG9yMSA9PSBudWxsICYmIHNlbGVjdG9yMiA9PSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3IxLnNhbWVUZXh0KHNlbGVjdG9yMik7XG4gICAgfVxuICB9LFxuICBldmVudE1hdGNoZXM6IGZ1bmN0aW9uIGV2ZW50TWF0Y2hlcyhlbGUsIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHZhciBzZWxlY3RvciA9IGxpc3RlbmVyLnF1YWxpZmllcjtcblxuICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gZWxlICE9PSBldmVudE9iai50YXJnZXQgJiYgZWxlbWVudChldmVudE9iai50YXJnZXQpICYmIHNlbGVjdG9yLm1hdGNoZXMoZXZlbnRPYmoudGFyZ2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYWRkRXZlbnRGaWVsZHM6IGZ1bmN0aW9uIGFkZEV2ZW50RmllbGRzKGVsZSwgZXZ0KSB7XG4gICAgZXZ0LmN5ID0gZWxlLmN5KCk7XG4gICAgZXZ0LnRhcmdldCA9IGVsZTtcbiAgfSxcbiAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoZWxlLCBsaXN0ZW5lciwgZXZlbnRPYmopIHtcbiAgICByZXR1cm4gbGlzdGVuZXIucXVhbGlmaWVyICE9IG51bGwgPyBldmVudE9iai50YXJnZXQgOiBlbGU7XG4gIH0sXG4gIGJlZm9yZUVtaXQ6IGZ1bmN0aW9uIGJlZm9yZUVtaXQoY29udGV4dCwgbGlzdGVuZXJcbiAgLyosIGV2ZW50T2JqKi9cbiAgKSB7XG4gICAgaWYgKGxpc3RlbmVyLmNvbmYgJiYgbGlzdGVuZXIuY29uZi5vbmNlKSB7XG4gICAgICBsaXN0ZW5lci5jb25mLm9uY2VDb2xsZWN0aW9uLnJlbW92ZUxpc3RlbmVyKGxpc3RlbmVyLmV2ZW50LCBsaXN0ZW5lci5xdWFsaWZpZXIsIGxpc3RlbmVyLmNhbGxiYWNrKTtcbiAgICB9XG4gIH0sXG4gIGJ1YmJsZTogZnVuY3Rpb24gYnViYmxlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudChlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKSA/IGVsZS5wYXJlbnQoKSA6IGVsZS5jeSgpO1xuICB9XG59O1xuXG52YXIgYXJnU2VsZWN0b3IgPSBmdW5jdGlvbiBhcmdTZWxlY3RvcihhcmcpIHtcbiAgaWYgKHN0cmluZyhhcmcpKSB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3RvcihhcmcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhcmc7XG4gIH1cbn07XG5cbnZhciBlbGVzZm4kbSA9IHtcbiAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuXG4gICAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgICAgX3AuZW1pdHRlciA9IG5ldyBFbWl0dGVyKGVtaXR0ZXJPcHRpb25zLCBlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBlbWl0dGVyOiBmdW5jdGlvbiBlbWl0dGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVtaXR0ZXI7XG4gIH0sXG4gIG9uOiBmdW5jdGlvbiBvbihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHZhciBhcmdTZWwgPSBhcmdTZWxlY3RvcihzZWxlY3Rvcik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgZWxlLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgYXJnU2VsID0gYXJnU2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBhcmdTZWwsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG9uZTogZnVuY3Rpb24gb25lKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICBlbGUuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBvbmNlOiBmdW5jdGlvbiBvbmNlKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICBlbGUuZW1pdHRlcigpLm9uKGV2ZW50cywgYXJnU2VsLCBjYWxsYmFjaywge1xuICAgICAgICBvbmNlOiB0cnVlLFxuICAgICAgICBvbmNlQ29sbGVjdGlvbjogdGhpc1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBlbWl0OiBmdW5jdGlvbiBlbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgZWxlLmVtaXR0ZXIoKS5lbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBlbWl0QW5kTm90aWZ5OiBmdW5jdGlvbiBlbWl0QW5kTm90aWZ5KGV2ZW50LCBleHRyYVBhcmFtcykge1xuICAgIC8vIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZW1wdHkgY29sbGVjdGlvbnMgZG9uJ3QgbmVlZCB0byBub3RpZnkgYW55dGhpbmdcbiAgICAvLyBub3RpZnkgcmVuZGVyZXJcblxuXG4gICAgdGhpcy5jeSgpLm5vdGlmeShldmVudCwgdGhpcyk7XG4gICAgdGhpcy5lbWl0KGV2ZW50LCBleHRyYVBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn07XG5kZWZpbmUkMy5ldmVudEFsaWFzZXNPbihlbGVzZm4kbSk7XG5cbnZhciBlbGVzZm4kbiA9IHtcbiAgbm9kZXM6IGZ1bmN0aW9uIG5vZGVzKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNOb2RlKCk7XG4gICAgfSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSxcbiAgZWRnZXM6IGZ1bmN0aW9uIGVkZ2VzKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNFZGdlKCk7XG4gICAgfSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSxcbiAgLy8gaW50ZXJuYWwgaGVscGVyIHRvIGdldCBub2RlcyBhbmQgZWRnZXMgYXMgc2VwYXJhdGUgY29sbGVjdGlvbnMgd2l0aCBzaW5nbGUgaXRlcmF0aW9uIG92ZXIgZWxlbWVudHNcbiAgYnlHcm91cDogZnVuY3Rpb24gYnlHcm91cCgpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLnNwYXduKCk7XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5zcGF3bigpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcblxuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlcy5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlc1xuICAgIH07XG4gIH0sXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKF9maWx0ZXIsIHRoaXNBcmcpIHtcbiAgICBpZiAoX2ZpbHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBjaGVjayB0aGlzIGZpcnN0IGIvYyBpdCdzIHRoZSBtb3N0IGNvbW1vbi9wZXJmb3JtYW50IGNhc2VcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKF9maWx0ZXIpIHx8IGVsZW1lbnRPckNvbGxlY3Rpb24oX2ZpbHRlcikpIHtcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0b3IoX2ZpbHRlcikuZmlsdGVyKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZm4oX2ZpbHRlcikpIHtcbiAgICAgIHZhciBmaWx0ZXJFbGVzID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgIHZhciBpbmNsdWRlID0gdGhpc0FyZyA/IF9maWx0ZXIuYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogX2ZpbHRlcihlbGUsIGksIGVsZXMpO1xuXG4gICAgICAgIGlmIChpbmNsdWRlKSB7XG4gICAgICAgICAgZmlsdGVyRWxlcy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbHRlckVsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oKTsgLy8gaWYgbm90IGhhbmRsZWQgYnkgYWJvdmUsIGdpdmUgJ2VtIGFuIGVtcHR5IGNvbGxlY3Rpb25cbiAgfSxcbiAgbm90OiBmdW5jdGlvbiBub3QodG9SZW1vdmUpIHtcbiAgICBpZiAoIXRvUmVtb3ZlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0cmluZyh0b1JlbW92ZSkpIHtcbiAgICAgICAgdG9SZW1vdmUgPSB0aGlzLmZpbHRlcih0b1JlbW92ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpc1tpXTtcbiAgICAgICAgdmFyIHJlbW92ZSA9IHRvUmVtb3ZlLmhhcyhlbGVtZW50KTtcblxuICAgICAgICBpZiAoIXJlbW92ZSkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH1cbiAgfSxcbiAgYWJzb2x1dGVDb21wbGVtZW50OiBmdW5jdGlvbiBhYnNvbHV0ZUNvbXBsZW1lbnQoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHJldHVybiBjeS5tdXRhYmxlRWxlbWVudHMoKS5ub3QodGhpcyk7XG4gIH0sXG4gIGludGVyc2VjdDogZnVuY3Rpb24gaW50ZXJzZWN0KG90aGVyKSB7XG4gICAgLy8gaWYgYSBzZWxlY3RvciBpcyBzcGVjaWZpZWQsIHRoZW4gZmlsdGVyIGJ5IGl0IGluc3RlYWRcbiAgICBpZiAoc3RyaW5nKG90aGVyKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gb3RoZXI7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcbiAgICB2YXIgY29sMSA9IHRoaXM7XG4gICAgdmFyIGNvbDIgPSBvdGhlcjtcbiAgICB2YXIgY29sMVNtYWxsZXIgPSB0aGlzLmxlbmd0aCA8IG90aGVyLmxlbmd0aDtcbiAgICB2YXIgY29sUyA9IGNvbDFTbWFsbGVyID8gY29sMSA6IGNvbDI7XG4gICAgdmFyIGNvbEwgPSBjb2wxU21hbGxlciA/IGNvbDIgOiBjb2wxO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xTLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gY29sU1tpXTtcblxuICAgICAgaWYgKGNvbEwuaGFzKGVsZSkpIHtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfSxcbiAgeG9yOiBmdW5jdGlvbiB4b3Iob3RoZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBjb2wxID0gdGhpcztcbiAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgdmFyIGFkZCA9IGZ1bmN0aW9uIGFkZChjb2wsIG90aGVyKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICB2YXIgaWQgPSBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIGluT3RoZXIgPSBvdGhlci5oYXNFbGVtZW50V2l0aElkKGlkKTtcblxuICAgICAgICBpZiAoIWluT3RoZXIpIHtcbiAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYWRkKGNvbDEsIGNvbDIpO1xuICAgIGFkZChjb2wyLCBjb2wxKTtcbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH0sXG4gIGRpZmY6IGZ1bmN0aW9uIGRpZmYob3RoZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSB0aGlzLnNwYXduKCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBib3RoID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBjb2wxID0gdGhpcztcbiAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgdmFyIGFkZCA9IGZ1bmN0aW9uIGFkZChjb2wsIG90aGVyLCByZXRFbGVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICB2YXIgaWQgPSBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIGluT3RoZXIgPSBvdGhlci5oYXNFbGVtZW50V2l0aElkKGlkKTtcblxuICAgICAgICBpZiAoaW5PdGhlcikge1xuICAgICAgICAgIGJvdGgubWVyZ2UoZWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGQoY29sMSwgY29sMiwgbGVmdCk7XG4gICAgYWRkKGNvbDIsIGNvbDEsIHJpZ2h0KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogbGVmdCxcbiAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgIGJvdGg6IGJvdGhcbiAgICB9O1xuICB9LFxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh0b0FkZCkge1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICBpZiAoIXRvQWRkKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoc3RyaW5nKHRvQWRkKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gdG9BZGQ7XG4gICAgICB0b0FkZCA9IGN5Lm11dGFibGVFbGVtZW50cygpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3blNlbGYoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9BZGQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0b0FkZFtpXTtcbiAgICAgIHZhciBhZGQgPSAhdGhpcy5oYXMoZWxlKTtcblxuICAgICAgaWYgKGFkZCkge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9LFxuICAvLyBpbiBwbGFjZSBtZXJnZSBvbiBjYWxsaW5nIGNvbGxlY3Rpb25cbiAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHRvQWRkKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgY3kgPSBfcC5jeTtcblxuICAgIGlmICghdG9BZGQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0b0FkZCAmJiBzdHJpbmcodG9BZGQpKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSB0b0FkZDtcbiAgICAgIHRvQWRkID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICB2YXIgbWFwID0gX3AubWFwO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b0FkZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRvQWRkRWxlID0gdG9BZGRbaV07XG4gICAgICB2YXIgaWQgPSB0b0FkZEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdmFyIGFkZCA9ICFtYXAuaGFzKGlkKTtcblxuICAgICAgaWYgKGFkZCkge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmxlbmd0aCsrO1xuICAgICAgICB0aGlzW2luZGV4XSA9IHRvQWRkRWxlO1xuICAgICAgICBtYXAuc2V0KGlkLCB7XG4gICAgICAgICAgZWxlOiB0b0FkZEVsZSxcbiAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHVubWVyZ2VBdDogZnVuY3Rpb24gdW5tZXJnZUF0KGkpIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIHZhciBtYXAgPSBfcC5tYXA7IC8vIHJlbW92ZSBlbGVcblxuICAgIHRoaXNbaV0gPSB1bmRlZmluZWQ7XG4gICAgbWFwW1wiZGVsZXRlXCJdKGlkKTtcbiAgICB2YXIgdW5tZXJnZWRMYXN0RWxlID0gaSA9PT0gdGhpcy5sZW5ndGggLSAxOyAvLyByZXBsYWNlIGVtcHR5IHNwb3Qgd2l0aCBsYXN0IGVsZSBpbiBjb2xsZWN0aW9uXG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiAxICYmICF1bm1lcmdlZExhc3RFbGUpIHtcbiAgICAgIHZhciBsYXN0RWxlSSA9IHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBsYXN0RWxlID0gdGhpc1tsYXN0RWxlSV07XG4gICAgICB2YXIgbGFzdEVsZUlkID0gbGFzdEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdGhpc1tsYXN0RWxlSV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzW2ldID0gbGFzdEVsZTtcbiAgICAgIG1hcC5zZXQobGFzdEVsZUlkLCB7XG4gICAgICAgIGVsZTogbGFzdEVsZSxcbiAgICAgICAgaW5kZXg6IGlcbiAgICAgIH0pO1xuICAgIH0gLy8gdGhlIGNvbGxlY3Rpb24gaXMgbm93IDEgZWxlIHNtYWxsZXJcblxuXG4gICAgdGhpcy5sZW5ndGgtLTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgLy8gcmVtb3ZlIHNpbmdsZSBlbGUgaW4gcGxhY2UgaW4gY2FsbGluZyBjb2xsZWN0aW9uXG4gIHVubWVyZ2VPbmU6IGZ1bmN0aW9uIHVubWVyZ2VPbmUoZWxlKSB7XG4gICAgZWxlID0gZWxlWzBdO1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIGlkID0gZWxlLl9wcml2YXRlLmRhdGEuaWQ7XG4gICAgdmFyIG1hcCA9IF9wLm1hcDtcbiAgICB2YXIgZW50cnkgPSBtYXAuZ2V0KGlkKTtcblxuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHJldHVybiB0aGlzOyAvLyBubyBuZWVkIHRvIHJlbW92ZVxuICAgIH1cblxuICAgIHZhciBpID0gZW50cnkuaW5kZXg7XG4gICAgdGhpcy51bm1lcmdlQXQoaSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIC8vIHJlbW92ZSBlbGVzIGluIHBsYWNlIG9uIGNhbGxpbmcgY29sbGVjdGlvblxuICB1bm1lcmdlOiBmdW5jdGlvbiB1bm1lcmdlKHRvUmVtb3ZlKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcblxuICAgIGlmICghdG9SZW1vdmUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0b1JlbW92ZSAmJiBzdHJpbmcodG9SZW1vdmUpKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSB0b1JlbW92ZTtcbiAgICAgIHRvUmVtb3ZlID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnVubWVyZ2VPbmUodG9SZW1vdmVbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICB1bm1lcmdlQnk6IGZ1bmN0aW9uIHVubWVyZ2VCeSh0b1JtRm4pIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgIGlmICh0b1JtRm4oZWxlKSkge1xuICAgICAgICB0aGlzLnVubWVyZ2VBdChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgbWFwOiBmdW5jdGlvbiBtYXAobWFwRm4sIHRoaXNBcmcpIHtcbiAgICB2YXIgYXJyID0gW107XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciByZXQgPSB0aGlzQXJnID8gbWFwRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogbWFwRm4oZWxlLCBpLCBlbGVzKTtcbiAgICAgIGFyci5wdXNoKHJldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjtcbiAgfSxcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoZm4sIGluaXRpYWxWYWx1ZSkge1xuICAgIHZhciB2YWwgPSBpbml0aWFsVmFsdWU7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWwgPSBmbih2YWwsIGVsZXNbaV0sIGksIGVsZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWw7XG4gIH0sXG4gIG1heDogZnVuY3Rpb24gbWF4KHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICB2YXIgbWF4RWxlO1xuICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICB2YXIgdmFsID0gdGhpc0FyZyA/IHZhbEZuLmFwcGx5KHRoaXNBcmcsIFtlbGUsIGksIGVsZXNdKSA6IHZhbEZuKGVsZSwgaSwgZWxlcyk7XG5cbiAgICAgIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gdmFsO1xuICAgICAgICBtYXhFbGUgPSBlbGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBtYXgsXG4gICAgICBlbGU6IG1heEVsZVxuICAgIH07XG4gIH0sXG4gIG1pbjogZnVuY3Rpb24gbWluKHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgdmFyIG1pbiA9IEluZmluaXR5O1xuICAgIHZhciBtaW5FbGU7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciB2YWwgPSB0aGlzQXJnID8gdmFsRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogdmFsRm4oZWxlLCBpLCBlbGVzKTtcblxuICAgICAgaWYgKHZhbCA8IG1pbikge1xuICAgICAgICBtaW4gPSB2YWw7XG4gICAgICAgIG1pbkVsZSA9IGVsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IG1pbixcbiAgICAgIGVsZTogbWluRWxlXG4gICAgfTtcbiAgfVxufTsgLy8gYWxpYXNlc1xuXG52YXIgZm4kNSA9IGVsZXNmbiRuO1xuZm4kNVsndSddID0gZm4kNVsnfCddID0gZm4kNVsnKyddID0gZm4kNS51bmlvbiA9IGZuJDUub3IgPSBmbiQ1LmFkZDtcbmZuJDVbJ1xcXFwnXSA9IGZuJDVbJyEnXSA9IGZuJDVbJy0nXSA9IGZuJDUuZGlmZmVyZW5jZSA9IGZuJDUucmVsYXRpdmVDb21wbGVtZW50ID0gZm4kNS5zdWJ0cmFjdCA9IGZuJDUubm90O1xuZm4kNVsnbiddID0gZm4kNVsnJiddID0gZm4kNVsnLiddID0gZm4kNS5hbmQgPSBmbiQ1LmludGVyc2VjdGlvbiA9IGZuJDUuaW50ZXJzZWN0O1xuZm4kNVsnXiddID0gZm4kNVsnKCspJ10gPSBmbiQ1WycoLSknXSA9IGZuJDUuc3ltbWV0cmljRGlmZmVyZW5jZSA9IGZuJDUuc3ltZGlmZiA9IGZuJDUueG9yO1xuZm4kNS5mbkZpbHRlciA9IGZuJDUuZmlsdGVyRm4gPSBmbiQ1LnN0ZEZpbHRlciA9IGZuJDUuZmlsdGVyO1xuZm4kNS5jb21wbGVtZW50ID0gZm4kNS5hYnNjb21wID0gZm4kNS5hYnNvbHV0ZUNvbXBsZW1lbnQ7XG5cbnZhciBlbGVzZm4kbyA9IHtcbiAgaXNOb2RlOiBmdW5jdGlvbiBpc05vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ25vZGVzJztcbiAgfSxcbiAgaXNFZGdlOiBmdW5jdGlvbiBpc0VkZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ2VkZ2VzJztcbiAgfSxcbiAgaXNMb29wOiBmdW5jdGlvbiBpc0xvb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGdlKCkgJiYgdGhpcy5zb3VyY2UoKVswXSA9PT0gdGhpcy50YXJnZXQoKVswXTtcbiAgfSxcbiAgaXNTaW1wbGU6IGZ1bmN0aW9uIGlzU2ltcGxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRWRnZSgpICYmIHRoaXMuc291cmNlKClbMF0gIT09IHRoaXMudGFyZ2V0KClbMF07XG4gIH0sXG4gIGdyb3VwOiBmdW5jdGlvbiBncm91cCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuZ3JvdXA7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqICBFbGVtZW50cyBhcmUgZHJhd24gaW4gYSBzcGVjaWZpYyBvcmRlciBiYXNlZCBvbiBjb21wb3VuZCBkZXB0aCAobG93IHRvIGhpZ2gpLCB0aGUgZWxlbWVudCB0eXBlIChub2RlcyBhYm92ZSBlZGdlcyksXG4gKiAgYW5kIHotaW5kZXggKGxvdyB0byBoaWdoKS4gIFRoZXNlIHN0eWxlcyBhZmZlY3QgaG93IHRoaXMgYXBwbGllczpcbiAqXG4gKiAgei1jb21wb3VuZC1kZXB0aDogTWF5IGJlIGBib3R0b20gfCBvcnBoYW4gfCBhdXRvIHwgdG9wYC4gIFRoZSBmaXJzdCBkcmF3biBpcyBgYm90dG9tYCwgdGhlbiBgb3JwaGFuYCB3aGljaCBpcyB0aGVcbiAqICAgICAgc2FtZSBkZXB0aCBhcyB0aGUgcm9vdCBvZiB0aGUgY29tcG91bmQgZ3JhcGgsIGZvbGxvd2VkIGJ5IHRoZSBkZWZhdWx0IHZhbHVlIGBhdXRvYCB3aGljaCBkcmF3cyBpbiBvcmRlciBmcm9tXG4gKiAgICAgIHJvb3QgdG8gbGVhdmVzIG9mIHRoZSBjb21wb3VuZCBncmFwaC4gIFRoZSBsYXN0IGRyYXduIGlzIGB0b3BgLlxuICogIHotaW5kZXgtY29tcGFyZTogTWF5IGJlIGBhdXRvIHwgbWFudWFsYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBhdXRvYCB3aGljaCBhbHdheXMgZHJhd3MgZWRnZXMgdW5kZXIgbm9kZXMuXG4gKiAgICAgIGBtYW51YWxgIGlnbm9yZXMgdGhpcyBjb252ZW50aW9uIGFuZCBkcmF3cyBiYXNlZCBvbiB0aGUgYHotaW5kZXhgIHZhbHVlIHNldHRpbmcuXG4gKiAgei1pbmRleDogQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGFmZmVjdHMgdGhlIHJlbGF0aXZlIGRyYXcgb3JkZXIgb2YgZWxlbWVudHMuICBJbiBnZW5lcmFsLCBhbiBlbGVtZW50IHdpdGggYSBoaWdoZXJcbiAqICAgICAgYHotaW5kZXhgIHdpbGwgYmUgZHJhd24gb24gdG9wIG9mIGFuIGVsZW1lbnQgd2l0aCBhIGxvd2VyIGB6LWluZGV4YC5cbiAqL1xuXG52YXIgekluZGV4U29ydCA9IGZ1bmN0aW9uIHpJbmRleFNvcnQoYSwgYikge1xuICB2YXIgY3kgPSBhLmN5KCk7XG4gIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gIGZ1bmN0aW9uIGdldERlcHRoKGVsZSkge1xuICAgIHZhciBzdHlsZSA9IGVsZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKTtcblxuICAgIGlmIChzdHlsZS52YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICByZXR1cm4gaGFzQ29tcG91bmROb2RlcyA/IGVsZS56RGVwdGgoKSA6IDA7XG4gICAgfSBlbHNlIGlmIChzdHlsZS52YWx1ZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKHN0eWxlLnZhbHVlID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIE1BWF9JTlQ7XG4gICAgfSAvLyAnb3JwaGFuJ1xuXG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBkZXB0aERpZmYgPSBnZXREZXB0aChhKSAtIGdldERlcHRoKGIpO1xuXG4gIGlmIChkZXB0aERpZmYgIT09IDApIHtcbiAgICByZXR1cm4gZGVwdGhEaWZmO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RWxlRGVwdGgoZWxlKSB7XG4gICAgdmFyIHN0eWxlID0gZWxlLnBzdHlsZSgnei1pbmRleC1jb21wYXJlJyk7XG5cbiAgICBpZiAoc3R5bGUudmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSA/IDEgOiAwO1xuICAgIH0gLy8gJ21hbnVhbCdcblxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgZWxlRGlmZiA9IGdldEVsZURlcHRoKGEpIC0gZ2V0RWxlRGVwdGgoYik7XG5cbiAgaWYgKGVsZURpZmYgIT09IDApIHtcbiAgICByZXR1cm4gZWxlRGlmZjtcbiAgfVxuXG4gIHZhciB6RGlmZiA9IGEucHN0eWxlKCd6LWluZGV4JykudmFsdWUgLSBiLnBzdHlsZSgnei1pbmRleCcpLnZhbHVlO1xuXG4gIGlmICh6RGlmZiAhPT0gMCkge1xuICAgIHJldHVybiB6RGlmZjtcbiAgfSAvLyBjb21wYXJlIGluZGljZXMgaW4gdGhlIGNvcmUgKG9yZGVyIGFkZGVkIHRvIGdyYXBoIHcvIGxhc3Qgb24gdG9wKVxuXG5cbiAgcmV0dXJuIGEucG9vbEluZGV4KCkgLSBiLnBvb2xJbmRleCgpO1xufTtcblxudmFyIGVsZXNmbiRwID0ge1xuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuJDEsIHRoaXNBcmcpIHtcbiAgICBpZiAoZm4oZm4kMSkpIHtcbiAgICAgIHZhciBOID0gdGhpcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcmV0ID0gdGhpc0FyZyA/IGZuJDEuYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgdGhpc10pIDogZm4kMShlbGUsIGksIHRoaXMpO1xuXG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gZXhpdCBlYWNoIGVhcmx5IG9uIHJldHVybiBmYWxzZVxuXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5LnB1c2godGhpc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5O1xuICB9LFxuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciB0aGlzU2l6ZSA9IHRoaXMubGVuZ3RoO1xuXG4gICAgaWYgKGVuZCA9PSBudWxsKSB7XG4gICAgICBlbmQgPSB0aGlzU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkge1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIHN0YXJ0ID0gdGhpc1NpemUgKyBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgZW5kID0gdGhpc1NpemUgKyBlbmQ7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpID49IDAgJiYgaSA8IGVuZCAmJiBpIDwgdGhpc1NpemU7IGkrKykge1xuICAgICAgYXJyYXkucHVzaCh0aGlzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihhcnJheSk7XG4gIH0sXG4gIHNpemU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICB9LFxuICBlcTogZnVuY3Rpb24gZXEoaSkge1xuICAgIHJldHVybiB0aGlzW2ldIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgZmlyc3Q6IGZ1bmN0aW9uIGZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzWzBdIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgbGFzdDogZnVuY3Rpb24gbGFzdCgpIHtcbiAgICByZXR1cm4gdGhpc1t0aGlzLmxlbmd0aCAtIDFdIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMDtcbiAgfSxcbiAgbm9uZW1wdHk6IGZ1bmN0aW9uIG5vbmVtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5lbXB0eSgpO1xuICB9LFxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KHNvcnRGbikge1xuICAgIGlmICghZm4oc29ydEZuKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIHNvcnRlZCA9IHRoaXMudG9BcnJheSgpLnNvcnQoc29ydEZuKTtcbiAgICByZXR1cm4gdGhpcy5zcGF3bihzb3J0ZWQpO1xuICB9LFxuICBzb3J0QnlaSW5kZXg6IGZ1bmN0aW9uIHNvcnRCeVpJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0KHpJbmRleFNvcnQpO1xuICB9LFxuICB6RGVwdGg6IGZ1bmN0aW9uIHpEZXB0aCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmICghZWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gbGV0IGN5ID0gZWxlLmN5KCk7XG5cblxuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgZ3JvdXAgPSBfcC5ncm91cDtcblxuICAgIGlmIChncm91cCA9PT0gJ25vZGVzJykge1xuICAgICAgdmFyIGRlcHRoID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpLnNpemUoKSA6IDA7XG5cbiAgICAgIGlmICghZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgICAgcmV0dXJuIE1BWF9JTlQgLSAxOyAvLyBjaGlsZGxlc3Mgbm9kZXMgYWx3YXlzIG9uIHRvcFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgICAgdmFyIHNyY0RlcHRoID0gc3JjLnpEZXB0aCgpO1xuICAgICAgdmFyIHRndERlcHRoID0gdGd0LnpEZXB0aCgpO1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHNyY0RlcHRoLCB0Z3REZXB0aCwgMCk7IC8vIGRlcHRoIG9mIGRlZXBlc3QgcGFyZW50XG4gICAgfVxuICB9XG59O1xuZWxlc2ZuJHAuZWFjaCA9IGVsZXNmbiRwLmZvckVhY2g7XG5cbnZhciBkZWZpbmVTeW1ib2xJdGVyYXRvciA9IGZ1bmN0aW9uIGRlZmluZVN5bWJvbEl0ZXJhdG9yKCkge1xuICB2YXIgdHlwZW9mVW5kZWYgPSAgXCJ1bmRlZmluZWRcIiA7XG4gIHZhciBpc0l0ZXJhdG9yU3VwcG9ydGVkID0gKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihTeW1ib2wpKSAhPSB0eXBlb2ZVbmRlZiAmJiBfdHlwZW9mKFN5bWJvbC5pdGVyYXRvcikgIT0gdHlwZW9mVW5kZWY7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICBpZiAoaXNJdGVyYXRvclN1cHBvcnRlZCkge1xuICAgIGVsZXNmbiRwW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICB2YXIgZW50cnkgPSB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgaWYgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gX3RoaXNbaSsrXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgIH1cbiAgICAgIH0sIFN5bWJvbC5pdGVyYXRvciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufTtcblxuZGVmaW5lU3ltYm9sSXRlcmF0b3IoKTtcblxudmFyIGdldExheW91dERpbWVuc2lvbk9wdGlvbnMgPSBkZWZhdWx0cyh7XG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiRxID0ge1xuICAvLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIG5vZGUgZGltZW5zaW9ucyB7IHgsIHkgfSBiYXNlZCBvbiBvcHRpb25zIGdpdmVuXG4gIGxheW91dERpbWVuc2lvbnM6IGZ1bmN0aW9uIGxheW91dERpbWVuc2lvbnMob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBnZXRMYXlvdXREaW1lbnNpb25PcHRpb25zKG9wdGlvbnMpO1xuICAgIHZhciBkaW1zO1xuXG4gICAgaWYgKCF0aGlzLnRha2VzVXBTcGFjZSgpKSB7XG4gICAgICBkaW1zID0ge1xuICAgICAgICB3OiAwLFxuICAgICAgICBoOiAwXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHMpIHtcbiAgICAgIHZhciBiYkRpbSA9IHRoaXMuYm91bmRpbmdCb3goKTtcbiAgICAgIGRpbXMgPSB7XG4gICAgICAgIHc6IGJiRGltLncsXG4gICAgICAgIGg6IGJiRGltLmhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpbXMgPSB7XG4gICAgICAgIHc6IHRoaXMub3V0ZXJXaWR0aCgpLFxuICAgICAgICBoOiB0aGlzLm91dGVySGVpZ2h0KClcbiAgICAgIH07XG4gICAgfSAvLyBzYW5pdGlzZSB0aGUgZGltZW5zaW9ucyBmb3IgZXh0ZXJuYWwgbGF5b3V0cyAoYXZvaWQgZGl2aXNpb24gYnkgemVybylcblxuXG4gICAgaWYgKGRpbXMudyA9PT0gMCB8fCBkaW1zLmggPT09IDApIHtcbiAgICAgIGRpbXMudyA9IGRpbXMuaCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpbXM7XG4gIH0sXG4gIC8vIHVzaW5nIHN0YW5kYXJkIGxheW91dCBvcHRpb25zLCBhcHBseSBwb3NpdGlvbiBmdW5jdGlvbiAody8gb3Igdy9vIGFuaW1hdGlvbilcbiAgbGF5b3V0UG9zaXRpb25zOiBmdW5jdGlvbiBsYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBmbikge1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiAhbi5pc1BhcmVudCgpO1xuICAgIH0pO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgbGF5b3V0RWxlcyA9IG9wdGlvbnMuZWxlczsgLy8gbm9kZXMgJiBlZGdlc1xuXG4gICAgdmFyIGdldE1lbW9pemVLZXkgPSBmdW5jdGlvbiBnZXRNZW1vaXplS2V5KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkKCk7XG4gICAgfTtcblxuICAgIHZhciBmbk1lbSA9IG1lbW9pemUoZm4sIGdldE1lbW9pemVLZXkpOyAvLyBtZW1vaXplZCB2ZXJzaW9uIG9mIHBvc2l0aW9uIGZ1bmN0aW9uXG5cbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICB9KTtcbiAgICBsYXlvdXQuYW5pbWF0aW9ucyA9IFtdO1xuXG4gICAgdmFyIGNhbGN1bGF0ZVNwYWNpbmcgPSBmdW5jdGlvbiBjYWxjdWxhdGVTcGFjaW5nKHNwYWNpbmcsIG5vZGVzQmIsIHBvcykge1xuICAgICAgdmFyIGNlbnRlciA9IHtcbiAgICAgICAgeDogbm9kZXNCYi54MSArIG5vZGVzQmIudyAvIDIsXG4gICAgICAgIHk6IG5vZGVzQmIueTEgKyBub2Rlc0JiLmggLyAyXG4gICAgICB9O1xuICAgICAgdmFyIHNwYWNpbmdWZWN0b3IgPSB7XG4gICAgICAgIC8vIHNjYWxlIGZyb20gY2VudGVyIG9mIGJvdW5kaW5nIGJveCAobm90IG5lY2Vzc2FyaWx5IDAsMClcbiAgICAgICAgeDogKHBvcy54IC0gY2VudGVyLngpICogc3BhY2luZyxcbiAgICAgICAgeTogKHBvcy55IC0gY2VudGVyLnkpICogc3BhY2luZ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGNlbnRlci54ICsgc3BhY2luZ1ZlY3Rvci54LFxuICAgICAgICB5OiBjZW50ZXIueSArIHNwYWNpbmdWZWN0b3IueVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIHVzZVNwYWNpbmdGYWN0b3IgPSBvcHRpb25zLnNwYWNpbmdGYWN0b3IgJiYgb3B0aW9ucy5zcGFjaW5nRmFjdG9yICE9PSAxO1xuXG4gICAgdmFyIHNwYWNpbmdCYiA9IGZ1bmN0aW9uIHNwYWNpbmdCYigpIHtcbiAgICAgIGlmICghdXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgdmFyIHBvcyA9IGZuTWVtKG5vZGUsIGkpO1xuICAgICAgICBleHBhbmRCb3VuZGluZ0JveEJ5UG9pbnQoYmIsIHBvcy54LCBwb3MueSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYjtcbiAgICB9O1xuXG4gICAgdmFyIGJiID0gc3BhY2luZ0JiKCk7XG4gICAgdmFyIGdldEZpbmFsUG9zID0gbWVtb2l6ZShmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIG5ld1BvcyA9IGZuTWVtKG5vZGUsIGkpO1xuXG4gICAgICBpZiAodXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICB2YXIgc3BhY2luZyA9IE1hdGguYWJzKG9wdGlvbnMuc3BhY2luZ0ZhY3Rvcik7XG4gICAgICAgIG5ld1BvcyA9IGNhbGN1bGF0ZVNwYWNpbmcoc3BhY2luZywgYmIsIG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRyYW5zZm9ybSAhPSBudWxsKSB7XG4gICAgICAgIG5ld1BvcyA9IG9wdGlvbnMudHJhbnNmb3JtKG5vZGUsIG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdQb3M7XG4gICAgfSwgZ2V0TWVtb2l6ZUtleSk7XG5cbiAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIHZhciBuZXdQb3MgPSBnZXRGaW5hbFBvcyhub2RlLCBpKTtcbiAgICAgICAgdmFyIGFuaW1hdGVOb2RlID0gb3B0aW9ucy5hbmltYXRlRmlsdGVyID09IG51bGwgfHwgb3B0aW9ucy5hbmltYXRlRmlsdGVyKG5vZGUsIGkpO1xuXG4gICAgICAgIGlmIChhbmltYXRlTm9kZSkge1xuICAgICAgICAgIHZhciBhbmkgPSBub2RlLmFuaW1hdGlvbih7XG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3UG9zLFxuICAgICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMucHVzaChhbmkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5maXQpIHtcbiAgICAgICAgdmFyIGZpdEFuaSA9IGN5LmFuaW1hdGlvbih7XG4gICAgICAgICAgZml0OiB7XG4gICAgICAgICAgICBib3VuZGluZ0JveDogbGF5b3V0RWxlcy5ib3VuZGluZ0JveEF0KGdldEZpbmFsUG9zKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgZWFzaW5nOiBvcHRpb25zLmFuaW1hdGlvbkVhc2luZ1xuICAgICAgICB9KTtcbiAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMucHVzaChmaXRBbmkpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnpvb20gIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnBhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciB6b29tUGFuQW5pID0gY3kuYW5pbWF0aW9uKHtcbiAgICAgICAgICB6b29tOiBvcHRpb25zLnpvb20sXG4gICAgICAgICAgcGFuOiBvcHRpb25zLnBhbixcbiAgICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgIH0pO1xuICAgICAgICBsYXlvdXQuYW5pbWF0aW9ucy5wdXNoKHpvb21QYW5BbmkpO1xuICAgICAgfVxuXG4gICAgICBsYXlvdXQuYW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChhbmkpIHtcbiAgICAgICAgcmV0dXJuIGFuaS5wbGF5KCk7XG4gICAgICB9KTtcbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHJlYWR5Jywgb3B0aW9ucy5yZWFkeSk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRyZWFkeScsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICAgIFByb21pc2UkMS5hbGwobGF5b3V0LmFuaW1hdGlvbnMubWFwKGZ1bmN0aW9uIChhbmkpIHtcbiAgICAgICAgcmV0dXJuIGFuaS5wcm9taXNlKCk7XG4gICAgICB9KSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2xheW91dHN0b3AnLFxuICAgICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzLnBvc2l0aW9ucyhnZXRGaW5hbFBvcyk7XG5cbiAgICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgICBjeS5maXQob3B0aW9ucy5lbGVzLCBvcHRpb25zLnBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy56b29tICE9IG51bGwpIHtcbiAgICAgICAgY3kuem9vbShvcHRpb25zLnpvb20pO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5wYW4pIHtcbiAgICAgICAgY3kucGFuKG9wdGlvbnMucGFuKTtcbiAgICAgIH1cblxuICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICAgIGxheW91dC5lbWl0KHtcbiAgICAgICAgdHlwZTogJ2xheW91dHJlYWR5JyxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRzdG9wJyxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBsYXlvdXQ6IGZ1bmN0aW9uIGxheW91dChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHJldHVybiBjeS5tYWtlTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgZWxlczogdGhpc1xuICAgIH0pKTtcbiAgfVxufTsgLy8gYWxpYXNlczpcblxuZWxlc2ZuJHEuY3JlYXRlTGF5b3V0ID0gZWxlc2ZuJHEubWFrZUxheW91dCA9IGVsZXNmbiRxLmxheW91dDtcblxuZnVuY3Rpb24gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpIHtcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgY2FjaGUgPSBfcC5zdHlsZUNhY2hlID0gX3Auc3R5bGVDYWNoZSB8fCBbXTtcbiAgdmFyIHZhbDtcblxuICBpZiAoKHZhbCA9IGNhY2hlW2tleV0pICE9IG51bGwpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9IGVsc2Uge1xuICAgIHZhbCA9IGNhY2hlW2tleV0gPSBmbihlbGUpO1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FjaGVTdHlsZUZ1bmN0aW9uKGtleSwgZm4pIHtcbiAga2V5ID0gaGFzaFN0cmluZyhrZXkpO1xuICByZXR1cm4gZnVuY3Rpb24gY2FjaGVkU3R5bGVGdW5jdGlvbihlbGUpIHtcbiAgICByZXR1cm4gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oa2V5LCBmbikge1xuICBrZXkgPSBoYXNoU3RyaW5nKGtleSk7XG5cbiAgdmFyIHNlbGZGbiA9IGZ1bmN0aW9uIHNlbGZGbihlbGUpIHtcbiAgICByZXR1cm4gZm4uY2FsbChlbGUpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIHN0eWxlQ2FjaGUoa2V5LCBzZWxmRm4sIGVsZSk7XG4gICAgfVxuICB9O1xufVxuXG52YXIgZWxlc2ZuJHIgPSB7XG4gIHJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZTogZnVuY3Rpb24gcmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHVzZUNhY2hlKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciByZW5kZXJlciA9IGN5LnJlbmRlcmVyKCk7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuXG4gICAgaWYgKHJlbmRlcmVyICYmIHN0eWxlRW5hYmxlZCkge1xuICAgICAgcmVuZGVyZXIucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHRoaXMsIHVzZUNhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZGlydHlTdHlsZUNhY2hlOiBmdW5jdGlvbiBkaXJ0eVN0eWxlQ2FjaGUoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIGRpcnR5ID0gZnVuY3Rpb24gZGlydHkoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlQ2FjaGUgPSBudWxsO1xuICAgIH07XG5cbiAgICBpZiAoY3kuaGFzQ29tcG91bmROb2RlcygpKSB7XG4gICAgICB2YXIgZWxlcztcbiAgICAgIGVsZXMgPSB0aGlzLnNwYXduU2VsZigpLm1lcmdlKHRoaXMuZGVzY2VuZGFudHMoKSkubWVyZ2UodGhpcy5wYXJlbnRzKCkpO1xuICAgICAgZWxlcy5tZXJnZShlbGVzLmNvbm5lY3RlZEVkZ2VzKCkpO1xuICAgICAgZWxlcy5mb3JFYWNoKGRpcnR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgZGlydHkoZWxlKTtcbiAgICAgICAgZWxlLmNvbm5lY3RlZEVkZ2VzKCkuZm9yRWFjaChkaXJ0eSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgLy8gZnVsbHkgdXBkYXRlcyAocmVjYWxjdWxhdGVzKSB0aGUgc3R5bGUgZm9yIHRoZSBlbGVtZW50c1xuICB1cGRhdGVTdHlsZTogZnVuY3Rpb24gdXBkYXRlU3R5bGUobm90aWZ5UmVuZGVyZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKGN5LmJhdGNoaW5nKCkpIHtcbiAgICAgIHZhciBiRWxlcyA9IGN5Ll9wcml2YXRlLmJhdGNoU3R5bGVFbGVzO1xuICAgICAgYkVsZXMubWVyZ2UodGhpcyk7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmcgYW5kIGV4aXQgZWFybHkgd2hlbiBiYXRjaGluZ1xuICAgIH1cblxuICAgIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gICAgdmFyIHVwZGF0ZWRFbGVzID0gdGhpcztcbiAgICBub3RpZnlSZW5kZXJlciA9IG5vdGlmeVJlbmRlcmVyIHx8IG5vdGlmeVJlbmRlcmVyID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAoaGFzQ29tcG91bmRzKSB7XG4gICAgICAvLyB0aGVuIGFkZCBldmVyeXRoaW5nIHVwIGFuZCBkb3duIGZvciBjb21wb3VuZCBzZWxlY3RvciBjaGVja3NcbiAgICAgIHVwZGF0ZWRFbGVzID0gdGhpcy5zcGF3blNlbGYoKS5tZXJnZSh0aGlzLmRlc2NlbmRhbnRzKCkpLm1lcmdlKHRoaXMucGFyZW50cygpKTtcbiAgICB9IC8vIGxldCBjaGFuZ2VkRWxlcyA9IHN0eWxlLmFwcGx5KCB1cGRhdGVkRWxlcyApO1xuXG5cbiAgICB2YXIgY2hhbmdlZEVsZXMgPSB1cGRhdGVkRWxlcztcblxuICAgIGlmIChub3RpZnlSZW5kZXJlcikge1xuICAgICAgY2hhbmdlZEVsZXMuZW1pdEFuZE5vdGlmeSgnc3R5bGUnKTsgLy8gbGV0IHJlbmRlcmVyIGtub3cgd2UgY2hhbmdlZCBzdHlsZVxuICAgIH0gZWxzZSB7XG4gICAgICBjaGFuZ2VkRWxlcy5lbWl0KCdzdHlsZScpOyAvLyBqdXN0IGZpcmUgdGhlIGV2ZW50XG4gICAgfVxuXG4gICAgdXBkYXRlZEVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICAvLyBwcml2YXRlOiBjbGVhcnMgZGlydHkgZmxhZyBhbmQgcmVjYWxjdWxhdGVzIHN0eWxlXG4gIGNsZWFuU3R5bGU6IGZ1bmN0aW9uIGNsZWFuU3R5bGUoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgIGlmIChlbGUuX3ByaXZhdGUuc3R5bGVEaXJ0eSkge1xuICAgICAgICAvLyBuLmIuIHRoaXMgZmxhZyBzaG91bGQgYmUgc2V0IGJlZm9yZSBhcHBseSgpIHRvIGF2b2lkIHBvdGVudGlhbCBpbmZpbml0ZSByZWN1cnNpb25cbiAgICAgICAgZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSBmYWxzZTtcbiAgICAgICAgY3kuc3R5bGUoKS5hcHBseShlbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLy8gZ2V0IHRoZSBpbnRlcm5hbCBwYXJzZWQgc3R5bGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIHByb3BlcnR5XG4gIHBhcnNlZFN0eWxlOiBmdW5jdGlvbiBwYXJzZWRTdHlsZShwcm9wZXJ0eSkge1xuICAgIHZhciBpbmNsdWRlTm9uRGVmYXVsdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB0aGlzLmNsZWFuU3R5bGUoKTtcbiAgICAgIHZhciBvdmVycmlkZGVuU3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGVbcHJvcGVydHldO1xuXG4gICAgICBpZiAob3ZlcnJpZGRlblN0eWxlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5TdHlsZTtcbiAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZU5vbkRlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIGN5LnN0eWxlKCkuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbnVtZXJpY1N0eWxlOiBmdW5jdGlvbiBudW1lcmljU3R5bGUocHJvcGVydHkpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmICghZWxlLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB2YXIgcHN0eWxlID0gZWxlLnBzdHlsZShwcm9wZXJ0eSk7XG4gICAgICByZXR1cm4gcHN0eWxlLnBmVmFsdWUgIT09IHVuZGVmaW5lZCA/IHBzdHlsZS5wZlZhbHVlIDogcHN0eWxlLnZhbHVlO1xuICAgIH1cbiAgfSxcbiAgbnVtZXJpY1N0eWxlVW5pdHM6IGZ1bmN0aW9uIG51bWVyaWNTdHlsZVVuaXRzKHByb3BlcnR5KSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoIWVsZS5jeSgpLnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5wc3R5bGUocHJvcGVydHkpLnVuaXRzO1xuICAgIH1cbiAgfSxcbiAgLy8gZ2V0IHRoZSBzcGVjaWZpZWQgY3NzIHByb3BlcnR5IGFzIGEgcmVuZGVyZWQgdmFsdWUgKGkuZS4gb24tc2NyZWVuIHZhbHVlKVxuICAvLyBvciBnZXQgdGhlIHdob2xlIHJlbmRlcmVkIHN0eWxlIGlmIG5vIHByb3BlcnR5IHNwZWNpZmllZCAoTkIgZG9lc24ndCBhbGxvdyBzZXR0aW5nKVxuICByZW5kZXJlZFN0eWxlOiBmdW5jdGlvbiByZW5kZXJlZFN0eWxlKHByb3BlcnR5KSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gY3kuc3R5bGUoKS5nZXRSZW5kZXJlZFN0eWxlKGVsZSwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSxcbiAgLy8gcmVhZCB0aGUgY2FsY3VsYXRlZCBjc3Mgc3R5bGUgb2YgdGhlIGVsZW1lbnQgb3Igb3ZlcnJpZGUgdGhlIHN0eWxlICh2aWEgYSBieXBhc3MpXG4gIHN0eWxlOiBmdW5jdGlvbiBzdHlsZShuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG5cbiAgICBpZiAocGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgIC8vIHRoZW4gZXh0ZW5kIHRoZSBieXBhc3NcbiAgICAgIHZhciBwcm9wcyA9IG5hbWU7XG4gICAgICBzdHlsZS5hcHBseUJ5cGFzcyh0aGlzLCBwcm9wcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xuICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyBsZXQgdGhlIHJlbmRlcmVyIGtub3cgd2UndmUgdXBkYXRlZCBzdHlsZVxuICAgIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0aGVuIGdldCB0aGUgcHJvcGVydHkgZnJvbSB0aGUgc3R5bGVcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgICAgaWYgKGVsZSkge1xuICAgICAgICAgIHJldHVybiBzdHlsZS5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbXB0eSBjb2xsZWN0aW9uID0+IGNhbid0IGdldCBhbnkgdmFsdWVcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZW4gc2V0IHRoZSBieXBhc3Mgd2l0aCB0aGUgcHJvcGVydHkgdmFsdWVcbiAgICAgICAgc3R5bGUuYXBwbHlCeXBhc3ModGhpcywgbmFtZSwgdmFsdWUsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyBsZXQgdGhlIHJlbmRlcmVyIGtub3cgd2UndmUgdXBkYXRlZCBzdHlsZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgX2VsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmIChfZWxlKSB7XG4gICAgICAgIHJldHVybiBzdHlsZS5nZXRSYXdTdHlsZShfZWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVtcHR5IGNvbGxlY3Rpb24gPT4gY2FuJ3QgZ2V0IGFueSB2YWx1ZVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHJlbW92ZVN0eWxlOiBmdW5jdGlvbiByZW1vdmVTdHlsZShuYW1lcykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgc3R5bGUucmVtb3ZlQWxsQnlwYXNzZXMoZWxlLCB1cGRhdGVUcmFuc2l0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWVzID0gbmFtZXMuc3BsaXQoL1xccysvKTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfZWxlMiA9IGVsZXNbX2ldO1xuICAgICAgICBzdHlsZS5yZW1vdmVCeXBhc3NlcyhfZWxlMiwgbmFtZXMsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIGxldCB0aGUgcmVuZGVyZXIga25vdyB3ZSd2ZSB1cGRhdGVkIHN0eWxlXG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgc2hvdzogZnVuY3Rpb24gc2hvdygpIHtcbiAgICB0aGlzLmNzcygnZGlzcGxheScsICdlbGVtZW50Jyk7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIGhpZGU6IGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgdGhpcy5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBlZmZlY3RpdmVPcGFjaXR5OiBmdW5jdGlvbiBlZmZlY3RpdmVPcGFjaXR5KCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgdmFyIHBhcmVudE9wYWNpdHkgPSBlbGUucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG5cbiAgICAgIGlmICghaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgICByZXR1cm4gcGFyZW50T3BhY2l0eTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmVudHMgPSAhX3AuZGF0YS5wYXJlbnQgPyBudWxsIDogZWxlLnBhcmVudHMoKTtcblxuICAgICAgaWYgKHBhcmVudHMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHBhcmVudCA9IHBhcmVudHNbaV07XG4gICAgICAgICAgdmFyIG9wYWNpdHkgPSBwYXJlbnQucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG4gICAgICAgICAgcGFyZW50T3BhY2l0eSA9IG9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJlbnRPcGFjaXR5O1xuICAgIH1cbiAgfSxcbiAgdHJhbnNwYXJlbnQ6IGZ1bmN0aW9uIHRyYW5zcGFyZW50KCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGVsZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmICghaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgICByZXR1cm4gZWxlLnBzdHlsZSgnb3BhY2l0eScpLnZhbHVlID09PSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgPT09IDA7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiYWNrZ3JvdW5kaW5nOiBmdW5jdGlvbiBiYWNrZ3JvdW5kaW5nKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICByZXR1cm4gZWxlLl9wcml2YXRlLmJhY2tncm91bmRpbmcgPyB0cnVlIDogZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNoZWNrQ29tcG91bmQoZWxlLCBwYXJlbnRPaykge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBwYXJlbnRzID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpIDogbnVsbDtcblxuICBpZiAocGFyZW50cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcmVudCA9IHBhcmVudHNbaV07XG5cbiAgICAgIGlmICghcGFyZW50T2socGFyZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRlZmluZURlcml2ZWRTdGF0ZUZ1bmN0aW9uKHNwZWNzKSB7XG4gIHZhciBvayA9IHNwZWNzLm9rO1xuICB2YXIgZWRnZU9rVmlhTm9kZSA9IHNwZWNzLmVkZ2VPa1ZpYU5vZGUgfHwgc3BlY3Mub2s7XG4gIHZhciBwYXJlbnRPayA9IHNwZWNzLnBhcmVudE9rIHx8IHNwZWNzLm9rO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuXG4gICAgICBpZiAoIW9rKGVsZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKGVsZSwgcGFyZW50T2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICAgICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICAgICAgcmV0dXJuIGVkZ2VPa1ZpYU5vZGUoc3JjKSAmJiAoIWhhc0NvbXBvdW5kTm9kZXMgfHwgY2hlY2tDb21wb3VuZChzcmMsIGVkZ2VPa1ZpYU5vZGUpKSAmJiAoc3JjID09PSB0Z3QgfHwgZWRnZU9rVmlhTm9kZSh0Z3QpICYmICghaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKHRndCwgZWRnZU9rVmlhTm9kZSkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbnZhciBlbGVUYWtlc1VwU3BhY2UgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVRha2VzVXBTcGFjZScsIGZ1bmN0aW9uIChlbGUpIHtcbiAgcmV0dXJuIGVsZS5wc3R5bGUoJ2Rpc3BsYXknKS52YWx1ZSA9PT0gJ2VsZW1lbnQnICYmIGVsZS53aWR0aCgpICE9PSAwICYmIChlbGUuaXNOb2RlKCkgPyBlbGUuaGVpZ2h0KCkgIT09IDAgOiB0cnVlKTtcbn0pO1xuZWxlc2ZuJHIudGFrZXNVcFNwYWNlID0gY2FjaGVQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCd0YWtlc1VwU3BhY2UnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gIG9rOiBlbGVUYWtlc1VwU3BhY2Vcbn0pKTtcbnZhciBlbGVJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbignZWxlSW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCdldmVudHMnKS52YWx1ZSA9PT0gJ3llcycgJiYgZWxlLnBzdHlsZSgndmlzaWJpbGl0eScpLnZhbHVlID09PSAndmlzaWJsZScgJiYgZWxlVGFrZXNVcFNwYWNlKGVsZSk7XG59KTtcbnZhciBwYXJlbnRJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbigncGFyZW50SW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAocGFyZW50KSB7XG4gIHJldHVybiBwYXJlbnQucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGVUYWtlc1VwU3BhY2UocGFyZW50KTtcbn0pO1xuZWxlc2ZuJHIuaW50ZXJhY3RpdmUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2ludGVyYWN0aXZlJywgZGVmaW5lRGVyaXZlZFN0YXRlRnVuY3Rpb24oe1xuICBvazogZWxlSW50ZXJhY3RpdmUsXG4gIHBhcmVudE9rOiBwYXJlbnRJbnRlcmFjdGl2ZSxcbiAgZWRnZU9rVmlhTm9kZTogZWxlVGFrZXNVcFNwYWNlXG59KSk7XG5cbmVsZXNmbiRyLm5vbmludGVyYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuaW50ZXJhY3RpdmUoKTtcbiAgfVxufTtcblxudmFyIGVsZVZpc2libGUgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVZpc2libGUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGUucHN0eWxlKCdvcGFjaXR5JykucGZWYWx1ZSAhPT0gMCAmJiBlbGVUYWtlc1VwU3BhY2UoZWxlKTtcbn0pO1xudmFyIGVkZ2VWaXNpYmxlVmlhTm9kZSA9IGVsZVRha2VzVXBTcGFjZTtcbmVsZXNmbiRyLnZpc2libGUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ3Zpc2libGUnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gIG9rOiBlbGVWaXNpYmxlLFxuICBlZGdlT2tWaWFOb2RlOiBlZGdlVmlzaWJsZVZpYU5vZGVcbn0pKTtcblxuZWxlc2ZuJHIuaGlkZGVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUudmlzaWJsZSgpO1xuICB9XG59O1xuXG5lbGVzZm4kci5pc0J1bmRsZWRCZXppZXIgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2lzQnVuZGxlZEJlemllcicsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIXRoaXMucmVtb3ZlZCgpICYmIHRoaXMucHN0eWxlKCdjdXJ2ZS1zdHlsZScpLnZhbHVlID09PSAnYmV6aWVyJyAmJiB0aGlzLnRha2VzVXBTcGFjZSgpO1xufSk7XG5lbGVzZm4kci5ieXBhc3MgPSBlbGVzZm4kci5jc3MgPSBlbGVzZm4kci5zdHlsZTtcbmVsZXNmbiRyLnJlbmRlcmVkQ3NzID0gZWxlc2ZuJHIucmVuZGVyZWRTdHlsZTtcbmVsZXNmbiRyLnJlbW92ZUJ5cGFzcyA9IGVsZXNmbiRyLnJlbW92ZUNzcyA9IGVsZXNmbiRyLnJlbW92ZVN0eWxlO1xuZWxlc2ZuJHIucHN0eWxlID0gZWxlc2ZuJHIucGFyc2VkU3R5bGU7XG5cbnZhciBlbGVzZm4kcyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZpbmVTd2l0Y2hGdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgY2hhbmdlZEVsZXMgPSBbXTsgLy8gZS5nLiBjeS5ub2RlcygpLnNlbGVjdCggZGF0YSwgaGFuZGxlciApXG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhciBkYXRhID0gYXJnc1swXTtcbiAgICAgIHZhciBoYW5kbGVyID0gYXJnc1sxXTtcbiAgICAgIHRoaXMub24ocGFyYW1zLmV2ZW50LCBkYXRhLCBoYW5kbGVyKTtcbiAgICB9IC8vIGUuZy4gY3kubm9kZXMoKS5zZWxlY3QoIGhhbmRsZXIgKVxuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGZuKGFyZ3NbMF0pKSB7XG4gICAgICAgIHZhciBfaGFuZGxlciA9IGFyZ3NbMF07XG4gICAgICAgIHRoaXMub24ocGFyYW1zLmV2ZW50LCBfaGFuZGxlcik7XG4gICAgICB9IC8vIGUuZy4gY3kubm9kZXMoKS5zZWxlY3QoKVxuICAgICAgLy8gZS5nLiAocHJpdmF0ZSkgY3kubm9kZXMoKS5zZWxlY3QoWyd0YXBzZWxlY3QnXSlcbiAgICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAwIHx8IGFyZ3MubGVuZ3RoID09PSAxICYmIGFycmF5KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgdmFyIGFkZGxFdmVudHMgPSBhcmdzLmxlbmd0aCA9PT0gMSA/IGFyZ3NbMF0gOiBudWxsO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgICAgIHZhciBhYmxlID0gIXBhcmFtcy5hYmxlRmllbGQgfHwgZWxlLl9wcml2YXRlW3BhcmFtcy5hYmxlRmllbGRdO1xuICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSAhPSBwYXJhbXMudmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChwYXJhbXMub3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgIHZhciBvdmVycmlkZUFibGUgPSBwYXJhbXMub3ZlcnJpZGVBYmxlKGVsZSk7XG5cbiAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlQWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYWJsZSA9IG92ZXJyaWRlQWJsZTtcblxuICAgICAgICAgICAgICAgIGlmICghb3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9IC8vIHRvIHNhdmUgY3ljbGVzIGFzc3VtZSBub3QgYWJsZSBmb3IgYWxsIG9uIG92ZXJyaWRlXG5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYWJsZSkge1xuICAgICAgICAgICAgICBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSA9IHBhcmFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZWRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjaGFuZ2VkQ29sbCA9IHRoaXMuc3Bhd24oY2hhbmdlZEVsZXMpO1xuICAgICAgICAgIGNoYW5nZWRDb2xsLnVwZGF0ZVN0eWxlKCk7IC8vIGNoYW5nZSBvZiBzdGF0ZSA9PiBwb3NzaWJsZSBjaGFuZ2Ugb2Ygc3R5bGVcblxuICAgICAgICAgIGNoYW5nZWRDb2xsLmVtaXQocGFyYW1zLmV2ZW50KTtcblxuICAgICAgICAgIGlmIChhZGRsRXZlbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkQ29sbC5lbWl0KGFkZGxFdmVudHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlZmluZVN3aXRjaFNldChwYXJhbXMpIHtcbiAgZWxlc2ZuJHNbcGFyYW1zLmZpZWxkXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmIChwYXJhbXMub3ZlcnJpZGVGaWVsZCkge1xuICAgICAgICB2YXIgdmFsID0gcGFyYW1zLm92ZXJyaWRlRmllbGQoZWxlKTtcblxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXTtcbiAgICB9XG4gIH07XG5cbiAgZWxlc2ZuJHNbcGFyYW1zLm9uXSA9IGRlZmluZVN3aXRjaEZ1bmN0aW9uKHtcbiAgICBldmVudDogcGFyYW1zLm9uLFxuICAgIGZpZWxkOiBwYXJhbXMuZmllbGQsXG4gICAgYWJsZUZpZWxkOiBwYXJhbXMuYWJsZUZpZWxkLFxuICAgIG92ZXJyaWRlQWJsZTogcGFyYW1zLm92ZXJyaWRlQWJsZSxcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZWxlc2ZuJHNbcGFyYW1zLm9mZl0gPSBkZWZpbmVTd2l0Y2hGdW5jdGlvbih7XG4gICAgZXZlbnQ6IHBhcmFtcy5vZmYsXG4gICAgZmllbGQ6IHBhcmFtcy5maWVsZCxcbiAgICBhYmxlRmllbGQ6IHBhcmFtcy5hYmxlRmllbGQsXG4gICAgb3ZlcnJpZGVBYmxlOiBwYXJhbXMub3ZlcnJpZGVBYmxlLFxuICAgIHZhbHVlOiBmYWxzZVxuICB9KTtcbn1cblxuZGVmaW5lU3dpdGNoU2V0KHtcbiAgZmllbGQ6ICdsb2NrZWQnLFxuICBvdmVycmlkZUZpZWxkOiBmdW5jdGlvbiBvdmVycmlkZUZpZWxkKGVsZSkge1xuICAgIHJldHVybiBlbGUuY3koKS5hdXRvbG9jaygpID8gdHJ1ZSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgb246ICdsb2NrJyxcbiAgb2ZmOiAndW5sb2NrJ1xufSk7XG5kZWZpbmVTd2l0Y2hTZXQoe1xuICBmaWVsZDogJ2dyYWJiYWJsZScsXG4gIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bmdyYWJpZnkoKSB8fCBlbGUucGFubmFibGUoKSA/IGZhbHNlIDogdW5kZWZpbmVkO1xuICB9LFxuICBvbjogJ2dyYWJpZnknLFxuICBvZmY6ICd1bmdyYWJpZnknXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnc2VsZWN0ZWQnLFxuICBhYmxlRmllbGQ6ICdzZWxlY3RhYmxlJyxcbiAgb3ZlcnJpZGVBYmxlOiBmdW5jdGlvbiBvdmVycmlkZUFibGUoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG9uOiAnc2VsZWN0JyxcbiAgb2ZmOiAndW5zZWxlY3QnXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnc2VsZWN0YWJsZScsXG4gIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG9uOiAnc2VsZWN0aWZ5JyxcbiAgb2ZmOiAndW5zZWxlY3RpZnknXG59KTtcbmVsZXNmbiRzLmRlc2VsZWN0ID0gZWxlc2ZuJHMudW5zZWxlY3Q7XG5cbmVsZXNmbiRzLmdyYWJiZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gIGlmIChlbGUpIHtcbiAgICByZXR1cm4gZWxlLl9wcml2YXRlLmdyYWJiZWQ7XG4gIH1cbn07XG5cbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnYWN0aXZlJyxcbiAgb246ICdhY3RpdmF0ZScsXG4gIG9mZjogJ3VuYWN0aXZhdGUnXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAncGFubmFibGUnLFxuICBvbjogJ3BhbmlmeScsXG4gIG9mZjogJ3VucGFuaWZ5J1xufSk7XG5cbmVsZXNmbiRzLmluYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuX3ByaXZhdGUuYWN0aXZlO1xuICB9XG59O1xuXG52YXIgZWxlc2ZuJHQgPSB7fTsgLy8gREFHIGZ1bmN0aW9uc1xuLy8vLy8vLy8vLy8vLy8vL1xuXG52YXIgZGVmaW5lRGFnRXh0cmVtaXR5ID0gZnVuY3Rpb24gZGVmaW5lRGFnRXh0cmVtaXR5KHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24gZGFnRXh0cmVtaXR5SW1wbChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgcmV0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRpc3F1YWxpZmllZCA9IGZhbHNlO1xuICAgICAgdmFyIGVkZ2VzID0gZWxlLmNvbm5lY3RlZEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tqXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuXG4gICAgICAgIGlmIChwYXJhbXMubm9JbmNvbWluZ0VkZ2VzICYmIHRndCA9PT0gZWxlICYmIHNyYyAhPT0gZWxlIHx8IHBhcmFtcy5ub091dGdvaW5nRWRnZXMgJiYgc3JjID09PSBlbGUgJiYgdGd0ICE9PSBlbGUpIHtcbiAgICAgICAgICBkaXNxdWFsaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzcXVhbGlmaWVkKSB7XG4gICAgICAgIHJldC5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0LCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufTtcblxudmFyIGRlZmluZURhZ09uZUhvcCA9IGZ1bmN0aW9uIGRlZmluZURhZ09uZUhvcChwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgb0VsZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWRnZXMgPSBlbGUuY29ubmVjdGVkRWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICB2YXIgc3JjID0gZWRnZS5zb3VyY2UoKTtcbiAgICAgICAgdmFyIHRndCA9IGVkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5vdXRnb2luZyAmJiBzcmMgPT09IGVsZSkge1xuICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgb0VsZXMucHVzaCh0Z3QpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5pbmNvbWluZyAmJiB0Z3QgPT09IGVsZSkge1xuICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgb0VsZXMucHVzaChzcmMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ob0VsZXMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH07XG59O1xuXG52YXIgZGVmaW5lRGFnQWxsSG9wcyA9IGZ1bmN0aW9uIGRlZmluZURhZ0FsbEhvcHMocGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIHNFbGVzID0gW107XG4gICAgdmFyIHNFbGVzSWRzID0ge307XG5cbiAgICBmb3IgKDs7KSB7XG4gICAgICB2YXIgbmV4dCA9IHBhcmFtcy5vdXRnb2luZyA/IGVsZXMub3V0Z29lcnMoKSA6IGVsZXMuaW5jb21lcnMoKTtcblxuICAgICAgaWYgKG5leHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBkb25lIGlmIG5vbmUgbGVmdFxuXG5cbiAgICAgIHZhciBuZXdOZXh0ID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbiA9IG5leHRbaV07XG4gICAgICAgIHZhciBuaWQgPSBuLmlkKCk7XG5cbiAgICAgICAgaWYgKCFzRWxlc0lkc1tuaWRdKSB7XG4gICAgICAgICAgc0VsZXNJZHNbbmlkXSA9IHRydWU7XG4gICAgICAgICAgc0VsZXMucHVzaChuKTtcbiAgICAgICAgICBuZXdOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIW5ld05leHQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IC8vIGRvbmUgaWYgdG91Y2hlZCBhbGwgb3V0Z29lcnMgYWxyZWFkeVxuXG5cbiAgICAgIGVsZXMgPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHNFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufTtcblxuZWxlc2ZuJHQuY2xlYXJUcmF2ZXJzYWxDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpc1tpXS5fcHJpdmF0ZS50cmF2ZXJzYWxDYWNoZSA9IG51bGw7XG4gIH1cbn07XG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICAvLyBnZXQgdGhlIHJvb3Qgbm9kZXMgaW4gdGhlIERBR1xuICByb290czogZGVmaW5lRGFnRXh0cmVtaXR5KHtcbiAgICBub0luY29taW5nRWRnZXM6IHRydWVcbiAgfSksXG4gIC8vIGdldCB0aGUgbGVhZiBub2RlcyBpbiB0aGUgREFHXG4gIGxlYXZlczogZGVmaW5lRGFnRXh0cmVtaXR5KHtcbiAgICBub091dGdvaW5nRWRnZXM6IHRydWVcbiAgfSksXG4gIC8vIG5vcm1hbGx5IGNhbGxlZCBjaGlsZHJlbiBpbiBncmFwaCB0aGVvcnlcbiAgLy8gdGhlc2Ugbm9kZXMgPWVkZ2VzPT4gb3V0Z29pbmcgbm9kZXNcbiAgb3V0Z29lcnM6IGNhY2hlKGRlZmluZURhZ09uZUhvcCh7XG4gICAgb3V0Z29pbmc6IHRydWVcbiAgfSksICdvdXRnb2VycycpLFxuICAvLyBha2EgREFHIGRlc2NlbmRhbnRzXG4gIHN1Y2Nlc3NvcnM6IGRlZmluZURhZ0FsbEhvcHMoe1xuICAgIG91dGdvaW5nOiB0cnVlXG4gIH0pLFxuICAvLyBub3JtYWxseSBjYWxsZWQgcGFyZW50cyBpbiBncmFwaCB0aGVvcnlcbiAgLy8gdGhlc2Ugbm9kZXMgPD1lZGdlcz0gaW5jb21pbmcgbm9kZXNcbiAgaW5jb21lcnM6IGNhY2hlKGRlZmluZURhZ09uZUhvcCh7XG4gICAgaW5jb21pbmc6IHRydWVcbiAgfSksICdpbmNvbWVycycpLFxuICAvLyBha2EgREFHIGFuY2VzdG9yc1xuICBwcmVkZWNlc3NvcnM6IGRlZmluZURhZ0FsbEhvcHMoe1xuICAgIGluY29taW5nOiB0cnVlXG4gIH0pXG59KTsgLy8gTmVpZ2hib3VyaG9vZCBmdW5jdGlvbnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICBuZWlnaGJvcmhvb2Q6IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIGZvciBhbGwgbm9kZXNcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLmNvbm5lY3RlZEVkZ2VzKCk7IC8vIGZvciBlYWNoIGNvbm5lY3RlZCBlZGdlLCBhZGQgdGhlIGVkZ2UgYW5kIHRoZSBvdGhlciBub2RlXG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRFZGdlc1tqXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZSA9PT0gc3JjID8gdGd0IDogc3JjOyAvLyBuZWVkIGNoZWNrIGluIGNhc2Ugb2YgbG9vcFxuXG4gICAgICAgIGlmIChvdGhlck5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2gob3RoZXJOb2RlWzBdKTsgLy8gYWRkIG5vZGUgMSBob3AgYXdheVxuICAgICAgICB9IC8vIGFkZCBjb25uZWN0ZWQgZWRnZVxuXG5cbiAgICAgICAgZWxlbWVudHMucHVzaChlZGdlWzBdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihlbGVtZW50cywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSwgJ25laWdoYm9yaG9vZCcpLFxuICBjbG9zZWROZWlnaGJvcmhvb2Q6IGZ1bmN0aW9uIGNsb3NlZE5laWdoYm9yaG9vZChzZWxlY3Rvcikge1xuICAgIHJldHVybiB0aGlzLm5laWdoYm9yaG9vZCgpLmFkZCh0aGlzKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBvcGVuTmVpZ2hib3Job29kOiBmdW5jdGlvbiBvcGVuTmVpZ2hib3Job29kKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMubmVpZ2hib3Job29kKHNlbGVjdG9yKTtcbiAgfVxufSk7IC8vIGFsaWFzZXNcblxuZWxlc2ZuJHQubmVpZ2hib3VyaG9vZCA9IGVsZXNmbiR0Lm5laWdoYm9yaG9vZDtcbmVsZXNmbiR0LmNsb3NlZE5laWdoYm91cmhvb2QgPSBlbGVzZm4kdC5jbG9zZWROZWlnaGJvcmhvb2Q7XG5lbGVzZm4kdC5vcGVuTmVpZ2hib3VyaG9vZCA9IGVsZXNmbiR0Lm9wZW5OZWlnaGJvcmhvb2Q7IC8vIEVkZ2UgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgc291cmNlOiBjYWNoZShmdW5jdGlvbiBzb3VyY2VJbXBsKHNlbGVjdG9yKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgdmFyIHNyYztcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHNyYyA9IGVsZS5fcHJpdmF0ZS5zb3VyY2UgfHwgZWxlLmN5KCkuY29sbGVjdGlvbigpO1xuICAgIH1cblxuICAgIHJldHVybiBzcmMgJiYgc2VsZWN0b3IgPyBzcmMuZmlsdGVyKHNlbGVjdG9yKSA6IHNyYztcbiAgfSwgJ3NvdXJjZScpLFxuICB0YXJnZXQ6IGNhY2hlKGZ1bmN0aW9uIHRhcmdldEltcGwoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgdGd0O1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdGd0ID0gZWxlLl9wcml2YXRlLnRhcmdldCB8fCBlbGUuY3koKS5jb2xsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRndCAmJiBzZWxlY3RvciA/IHRndC5maWx0ZXIoc2VsZWN0b3IpIDogdGd0O1xuICB9LCAndGFyZ2V0JyksXG4gIHNvdXJjZXM6IGRlZmluZVNvdXJjZUZ1bmN0aW9uKHtcbiAgICBhdHRyOiAnc291cmNlJ1xuICB9KSxcbiAgdGFyZ2V0czogZGVmaW5lU291cmNlRnVuY3Rpb24oe1xuICAgIGF0dHI6ICd0YXJnZXQnXG4gIH0pXG59KTtcblxuZnVuY3Rpb24gZGVmaW5lU291cmNlRnVuY3Rpb24ocGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzb3VyY2VJbXBsKHNlbGVjdG9yKSB7XG4gICAgdmFyIHNvdXJjZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgc3JjID0gZWxlLl9wcml2YXRlW3BhcmFtcy5hdHRyXTtcblxuICAgICAgaWYgKHNyYykge1xuICAgICAgICBzb3VyY2VzLnB1c2goc3JjKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihzb3VyY2VzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufVxuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgZWRnZXNXaXRoOiBjYWNoZShkZWZpbmVFZGdlc1dpdGhGdW5jdGlvbigpLCAnZWRnZXNXaXRoJyksXG4gIGVkZ2VzVG86IGNhY2hlKGRlZmluZUVkZ2VzV2l0aEZ1bmN0aW9uKHtcbiAgICB0aGlzSXNTcmM6IHRydWVcbiAgfSksICdlZGdlc1RvJylcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVFZGdlc1dpdGhGdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGVkZ2VzV2l0aEltcGwob3RoZXJOb2Rlcykge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgdmFyIHAgPSBwYXJhbXMgfHwge307IC8vIGdldCBlbGVtZW50cyBpZiBhIHNlbGVjdG9yIGlzIHNwZWNpZmllZFxuXG4gICAgaWYgKHN0cmluZyhvdGhlck5vZGVzKSkge1xuICAgICAgb3RoZXJOb2RlcyA9IGN5LiQob3RoZXJOb2Rlcyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaCA9IDA7IGggPCBvdGhlck5vZGVzLmxlbmd0aDsgaCsrKSB7XG4gICAgICB2YXIgZWRnZXMgPSBvdGhlck5vZGVzW2hdLl9wcml2YXRlLmVkZ2VzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgIHZhciBlZGdlRGF0YSA9IGVkZ2UuX3ByaXZhdGUuZGF0YTtcbiAgICAgICAgdmFyIHRoaXNUb090aGVyID0gdGhpcy5oYXNFbGVtZW50V2l0aElkKGVkZ2VEYXRhLnNvdXJjZSkgJiYgb3RoZXJOb2Rlcy5oYXNFbGVtZW50V2l0aElkKGVkZ2VEYXRhLnRhcmdldCk7XG4gICAgICAgIHZhciBvdGhlclRvVGhpcyA9IG90aGVyTm9kZXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS5zb3VyY2UpICYmIHRoaXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS50YXJnZXQpO1xuICAgICAgICB2YXIgZWRnZUNvbm5lY3RzVGhpc0FuZE90aGVyID0gdGhpc1RvT3RoZXIgfHwgb3RoZXJUb1RoaXM7XG5cbiAgICAgICAgaWYgKCFlZGdlQ29ubmVjdHNUaGlzQW5kT3RoZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLnRoaXNJc1NyYyB8fCBwLnRoaXNJc1RndCkge1xuICAgICAgICAgIGlmIChwLnRoaXNJc1NyYyAmJiAhdGhpc1RvT3RoZXIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwLnRoaXNJc1RndCAmJiAhb3RoZXJUb1RoaXMpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpO1xuICB9O1xufVxuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgY29ubmVjdGVkRWRnZXM6IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciByZXRFbGVzID0gW107XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghbm9kZS5pc05vZGUoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVkZ2VzID0gbm9kZS5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICByZXRFbGVzLnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0RWxlcywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSwgJ2Nvbm5lY3RlZEVkZ2VzJyksXG4gIGNvbm5lY3RlZE5vZGVzOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgcmV0RWxlcyA9IFtdO1xuICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoIWVkZ2UuaXNFZGdlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJldEVsZXMucHVzaChlZGdlLnNvdXJjZSgpWzBdKTtcbiAgICAgIHJldEVsZXMucHVzaChlZGdlLnRhcmdldCgpWzBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihyZXRFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LCAnY29ubmVjdGVkTm9kZXMnKSxcbiAgcGFyYWxsZWxFZGdlczogY2FjaGUoZGVmaW5lUGFyYWxsZWxFZGdlc0Z1bmN0aW9uKCksICdwYXJhbGxlbEVkZ2VzJyksXG4gIGNvZGlyZWN0ZWRFZGdlczogY2FjaGUoZGVmaW5lUGFyYWxsZWxFZGdlc0Z1bmN0aW9uKHtcbiAgICBjb2RpcmVjdGVkOiB0cnVlXG4gIH0pLCAnY29kaXJlY3RlZEVkZ2VzJylcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVQYXJhbGxlbEVkZ2VzRnVuY3Rpb24ocGFyYW1zKSB7XG4gIHZhciBkZWZhdWx0cyA9IHtcbiAgICBjb2RpcmVjdGVkOiBmYWxzZVxuICB9O1xuICBwYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBwYXJhbXMpO1xuICByZXR1cm4gZnVuY3Rpb24gcGFyYWxsZWxFZGdlc0ltcGwoc2VsZWN0b3IpIHtcbiAgICAvLyBtaWNyby1vcHRpbWlzZWQgZm9yIHJlbmRlcmVyXG4gICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICAgIHZhciBwID0gcGFyYW1zOyAvLyBsb29rIGF0IGFsbCB0aGUgZWRnZXMgaW4gdGhlIGNvbGxlY3Rpb25cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlMSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIGVkZ2UxX3AgPSBlZGdlMS5fcHJpdmF0ZTtcbiAgICAgIHZhciBzcmMxID0gZWRnZTFfcC5zb3VyY2U7XG4gICAgICB2YXIgc3JjaWQxID0gc3JjMS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdmFyIHRndGlkMSA9IGVkZ2UxX3AuZGF0YS50YXJnZXQ7XG4gICAgICB2YXIgc3JjRWRnZXMxID0gc3JjMS5fcHJpdmF0ZS5lZGdlczsgLy8gbG9vayBhdCBlZGdlcyBjb25uZWN0ZWQgdG8gdGhlIHNyYyBub2RlIG9mIHRoaXMgZWRnZVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNyY0VkZ2VzMS5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZTIgPSBzcmNFZGdlczFbal07XG4gICAgICAgIHZhciBlZGdlMmRhdGEgPSBlZGdlMi5fcHJpdmF0ZS5kYXRhO1xuICAgICAgICB2YXIgdGd0aWQyID0gZWRnZTJkYXRhLnRhcmdldDtcbiAgICAgICAgdmFyIHNyY2lkMiA9IGVkZ2UyZGF0YS5zb3VyY2U7XG4gICAgICAgIHZhciBjb2RpcmVjdGVkID0gdGd0aWQyID09PSB0Z3RpZDEgJiYgc3JjaWQyID09PSBzcmNpZDE7XG4gICAgICAgIHZhciBvcHBkaXJlY3RlZCA9IHNyY2lkMSA9PT0gdGd0aWQyICYmIHRndGlkMSA9PT0gc3JjaWQyO1xuXG4gICAgICAgIGlmIChwLmNvZGlyZWN0ZWQgJiYgY29kaXJlY3RlZCB8fCAhcC5jb2RpcmVjdGVkICYmIChjb2RpcmVjdGVkIHx8IG9wcGRpcmVjdGVkKSkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZTIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH07XG59IC8vIE1pc2MgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICBjb21wb25lbnRzOiBmdW5jdGlvbiBjb21wb25lbnRzKHJvb3QpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICAgIHZhciB2aXNpdGVkID0gY3kuY29sbGVjdGlvbigpO1xuICAgIHZhciB1bnZpc2l0ZWQgPSByb290ID09IG51bGwgPyBzZWxmLm5vZGVzKCkgOiByb290Lm5vZGVzKCk7XG4gICAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICAgIGlmIChyb290ICE9IG51bGwgJiYgdW52aXNpdGVkLmVtcHR5KCkpIHtcbiAgICAgIC8vIHJvb3QgbWF5IGNvbnRhaW4gb25seSBlZGdlc1xuICAgICAgdW52aXNpdGVkID0gcm9vdC5zb3VyY2VzKCk7IC8vIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIG5vZGUgdG8gdXNlICh1bmRpcmVjdGVkKSwgc28ganVzdCB1c2UgdGhlIHNvdXJjZSBzaWRlc1xuICAgIH1cblxuICAgIHZhciB2aXNpdEluQ29tcG9uZW50ID0gZnVuY3Rpb24gdmlzaXRJbkNvbXBvbmVudChub2RlLCBjb21wb25lbnQpIHtcbiAgICAgIHZpc2l0ZWQubWVyZ2Uobm9kZSk7XG4gICAgICB1bnZpc2l0ZWQudW5tZXJnZShub2RlKTtcbiAgICAgIGNvbXBvbmVudC5tZXJnZShub2RlKTtcbiAgICB9O1xuXG4gICAgaWYgKHVudmlzaXRlZC5lbXB0eSgpKSB7XG4gICAgICByZXR1cm4gc2VsZi5zcGF3bigpO1xuICAgIH1cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgLy8gZWFjaCBpdGVyYXRpb24geWllbGRzIGEgY29tcG9uZW50XG4gICAgICB2YXIgY21wdCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjbXB0KTtcbiAgICAgIHZhciByb290ID0gdW52aXNpdGVkWzBdO1xuICAgICAgdmlzaXRJbkNvbXBvbmVudChyb290LCBjbXB0KTtcbiAgICAgIHNlbGYuYmZzKHtcbiAgICAgICAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICByb290czogcm9vdCxcbiAgICAgICAgdmlzaXQ6IGZ1bmN0aW9uIHZpc2l0KHYpIHtcbiAgICAgICAgICByZXR1cm4gdmlzaXRJbkNvbXBvbmVudCh2LCBjbXB0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbXB0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAvLyBjb25uZWN0ZWRFZGdlcygpIHVzdWFsbHkgY2FjaGVkXG4gICAgICAgICAgaWYgKHNlbGYuaGFzKGUpICYmIGNtcHQuaGFzKGUuc291cmNlKCkpICYmIGNtcHQuaGFzKGUudGFyZ2V0KCkpKSB7XG4gICAgICAgICAgICAvLyBoYXMoKSBpcyBjaGVhcFxuICAgICAgICAgICAgY21wdC5tZXJnZShlKTsgLy8gZm9yRWFjaCgpIG9ubHkgY29uc2lkZXJzIG5vZGVzIC0tIHNldHMgTiBhdCBjYWxsIHRpbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGRvIHtcbiAgICAgIF9sb29wKCk7XG4gICAgfSB3aGlsZSAodW52aXNpdGVkLmxlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gIH0sXG4gIGNvbXBvbmVudDogZnVuY3Rpb24gY29tcG9uZW50KCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUuY3koKS5tdXRhYmxlRWxlbWVudHMoKS5jb21wb25lbnRzKGVsZSlbMF07XG4gIH1cbn0pO1xuZWxlc2ZuJHQuY29tcG9uZW50c09mID0gZWxlc2ZuJHQuY29tcG9uZW50cztcblxudmFyIENvbGxlY3Rpb24gPSBmdW5jdGlvbiBDb2xsZWN0aW9uKGN5LCBlbGVtZW50cykge1xuICB2YXIgdW5pcXVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcblxuICBpZiAoY3kgPT09IHVuZGVmaW5lZCkge1xuICAgIGVycm9yKCdBIGNvbGxlY3Rpb24gbXVzdCBoYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBjb3JlJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1hcCA9IG5ldyBNYXAkMSgpO1xuICB2YXIgY3JlYXRlZEVsZW1lbnRzID0gZmFsc2U7XG5cbiAgaWYgKCFlbGVtZW50cykge1xuICAgIGVsZW1lbnRzID0gW107XG4gIH0gZWxzZSBpZiAoZWxlbWVudHMubGVuZ3RoID4gMCAmJiBwbGFpbk9iamVjdChlbGVtZW50c1swXSkgJiYgIWVsZW1lbnQoZWxlbWVudHNbMF0pKSB7XG4gICAgY3JlYXRlZEVsZW1lbnRzID0gdHJ1ZTsgLy8gbWFrZSBlbGVtZW50cyBmcm9tIGpzb24gYW5kIHJlc3RvcmUgYWxsIGF0IG9uY2UgbGF0ZXJcblxuICAgIHZhciBlbGVzID0gW107XG4gICAgdmFyIGVsZXNJZHMgPSBuZXcgU2V0JDEoKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gZWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIganNvbiA9IGVsZW1lbnRzW2ldO1xuXG4gICAgICBpZiAoanNvbi5kYXRhID09IG51bGwpIHtcbiAgICAgICAganNvbi5kYXRhID0ge307XG4gICAgICB9XG5cbiAgICAgIHZhciBfZGF0YSA9IGpzb24uZGF0YTsgLy8gbWFrZSBzdXJlIG5ld2x5IGNyZWF0ZWQgZWxlbWVudHMgaGF2ZSB2YWxpZCBpZHNcblxuICAgICAgaWYgKF9kYXRhLmlkID09IG51bGwpIHtcbiAgICAgICAgX2RhdGEuaWQgPSB1dWlkKCk7XG4gICAgICB9IGVsc2UgaWYgKGN5Lmhhc0VsZW1lbnRXaXRoSWQoX2RhdGEuaWQpIHx8IGVsZXNJZHMuaGFzKF9kYXRhLmlkKSkge1xuICAgICAgICBjb250aW51ZTsgLy8gY2FuJ3QgY3JlYXRlIGVsZW1lbnQgaWYgcHJpb3IgaWQgYWxyZWFkeSBleGlzdHNcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7XG4gICAgICBlbGVzLnB1c2goZWxlKTtcbiAgICAgIGVsZXNJZHMuYWRkKF9kYXRhLmlkKTtcbiAgICB9XG5cbiAgICBlbGVtZW50cyA9IGVsZXM7XG4gIH1cblxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgZm9yICh2YXIgX2kgPSAwLCBfbCA9IGVsZW1lbnRzLmxlbmd0aDsgX2kgPCBfbDsgX2krKykge1xuICAgIHZhciBlbGVtZW50JDEgPSBlbGVtZW50c1tfaV1bMF07IC8vIFswXSBpbiBjYXNlIGVsZW1lbnRzIGlzIGFuIGFycmF5IG9mIGNvbGxlY3Rpb25zLCByYXRoZXIgdGhhbiBhcnJheSBvZiBlbGVtZW50c1xuXG4gICAgaWYgKGVsZW1lbnQkMSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgaWQgPSBlbGVtZW50JDEuX3ByaXZhdGUuZGF0YS5pZDtcblxuICAgIGlmICghdW5pcXVlIHx8ICFtYXAuaGFzKGlkKSkge1xuICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICBtYXAuc2V0KGlkLCB7XG4gICAgICAgICAgaW5kZXg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgIGVsZTogZWxlbWVudCQxXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzW3RoaXMubGVuZ3RoXSA9IGVsZW1lbnQkMTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fcHJpdmF0ZSA9IHtcbiAgICBlbGVzOiB0aGlzLFxuICAgIGN5OiBjeSxcblxuICAgIGdldCBtYXAoKSB7XG4gICAgICBpZiAodGhpcy5sYXp5TWFwID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5yZWJ1aWxkTWFwKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmxhenlNYXA7XG4gICAgfSxcblxuICAgIHNldCBtYXAobSkge1xuICAgICAgdGhpcy5sYXp5TWFwID0gbTtcbiAgICB9LFxuXG4gICAgcmVidWlsZE1hcDogZnVuY3Rpb24gcmVidWlsZE1hcCgpIHtcbiAgICAgIHZhciBtID0gdGhpcy5sYXp5TWFwID0gbmV3IE1hcCQxKCk7XG4gICAgICB2YXIgZWxlcyA9IHRoaXMuZWxlcztcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgZWxlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBfZWxlID0gZWxlc1tfaTJdO1xuICAgICAgICBtLnNldChfZWxlLmlkKCksIHtcbiAgICAgICAgICBpbmRleDogX2kyLFxuICAgICAgICAgIGVsZTogX2VsZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKHVuaXF1ZSkge1xuICAgIHRoaXMuX3ByaXZhdGUubWFwID0gbWFwO1xuICB9IC8vIHJlc3RvcmUgdGhlIGVsZW1lbnRzIGlmIHdlIGNyZWF0ZWQgdGhlbSBmcm9tIGpzb25cblxuXG4gIGlmIChjcmVhdGVkRWxlbWVudHMpIHtcbiAgICB0aGlzLnJlc3RvcmUoKTtcbiAgfVxufTsgLy8gRnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBrZWVwIHRoZSBwcm90b3R5cGVzIGluIHN5bmMgKGFuIGVsZW1lbnQgaGFzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyBhIGNvbGxlY3Rpb24pXG4vLyBhbmQgdXNlIGVsZWZuIGFuZCBlbGVzZm4gYXMgc2hvcnRoYW5kcyB0byB0aGUgcHJvdG90eXBlc1xuXG5cbnZhciBlbGVzZm4kdSA9IEVsZW1lbnQucHJvdG90eXBlID0gQ29sbGVjdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFycmF5LnByb3RvdHlwZSk7XG5cbmVsZXNmbiR1Lmluc3RhbmNlU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2NvbGxlY3Rpb24nO1xufTtcblxuZWxlc2ZuJHUuc3Bhd24gPSBmdW5jdGlvbiAoZWxlcywgdW5pcXVlKSB7XG4gIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXMsIHVuaXF1ZSk7XG59O1xuXG5lbGVzZm4kdS5zcGF3blNlbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnNwYXduKHRoaXMpO1xufTtcblxuZWxlc2ZuJHUuY3kgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9wcml2YXRlLmN5O1xufTtcblxuZWxlc2ZuJHUucmVuZGVyZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9wcml2YXRlLmN5LnJlbmRlcmVyKCk7XG59O1xuXG5lbGVzZm4kdS5lbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpc1swXTtcbn07XG5cbmVsZXNmbiR1LmNvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChjb2xsZWN0aW9uKHRoaXMpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSB7XG4gICAgLy8gYW4gZWxlbWVudFxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCBbdGhpc10pO1xuICB9XG59O1xuXG5lbGVzZm4kdS51bmlxdWUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCB0aGlzLCB0cnVlKTtcbn07XG5cbmVsZXNmbiR1Lmhhc0VsZW1lbnRXaXRoSWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWQgPSAnJyArIGlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gIHJldHVybiB0aGlzLl9wcml2YXRlLm1hcC5oYXMoaWQpO1xufTtcblxuZWxlc2ZuJHUuZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWQgPSAnJyArIGlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgdmFyIGVudHJ5ID0gdGhpcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKTtcblxuICByZXR1cm4gZW50cnkgPyBlbnRyeS5lbGUgOiBuZXcgQ29sbGVjdGlvbihjeSk7IC8vIGdldCBlbGUgb3IgZW1wdHkgY29sbGVjdGlvblxufTtcblxuZWxlc2ZuJHUuJGlkID0gZWxlc2ZuJHUuZ2V0RWxlbWVudEJ5SWQ7XG5cbmVsZXNmbiR1LnBvb2xJbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5lbGVtZW50cztcbiAgdmFyIGlkID0gdGhpc1swXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICByZXR1cm4gZWxlcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbn07XG5cbmVsZXNmbiR1LmluZGV4T2YgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBpZCA9IGVsZVswXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbn07XG5cbmVsZXNmbiR1LmluZGV4T2ZJZCA9IGZ1bmN0aW9uIChpZCkge1xuICBpZCA9ICcnICsgaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgcmV0dXJuIHRoaXMuX3ByaXZhdGUubWFwLmdldChpZCkuaW5kZXg7XG59O1xuXG5lbGVzZm4kdS5qc29uID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgZWxlID0gdGhpcy5lbGVtZW50KCk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICBpZiAoZWxlID09IG51bGwgJiYgb2JqKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gY2FuJ3Qgc2V0IHRvIG5vIGVsZXNcblxuXG4gIGlmIChlbGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gY2FuJ3QgZ2V0IGZyb20gbm8gZWxlc1xuXG5cbiAgdmFyIHAgPSBlbGUuX3ByaXZhdGU7XG5cbiAgaWYgKHBsYWluT2JqZWN0KG9iaikpIHtcbiAgICAvLyBzZXRcbiAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICBpZiAob2JqLmRhdGEpIHtcbiAgICAgIGVsZS5kYXRhKG9iai5kYXRhKTtcbiAgICAgIHZhciBfZGF0YTIgPSBwLmRhdGE7XG5cbiAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgLy8gc291cmNlIGFuZCB0YXJnZXQgYXJlIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgIHZhciBtb3ZlID0gZmFsc2U7XG4gICAgICAgIHZhciBzcGVjID0ge307XG4gICAgICAgIHZhciBzcmMgPSBvYmouZGF0YS5zb3VyY2U7XG4gICAgICAgIHZhciB0Z3QgPSBvYmouZGF0YS50YXJnZXQ7XG5cbiAgICAgICAgaWYgKHNyYyAhPSBudWxsICYmIHNyYyAhPSBfZGF0YTIuc291cmNlKSB7XG4gICAgICAgICAgc3BlYy5zb3VyY2UgPSAnJyArIHNyYzsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgIG1vdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRndCAhPSBudWxsICYmIHRndCAhPSBfZGF0YTIudGFyZ2V0KSB7XG4gICAgICAgICAgc3BlYy50YXJnZXQgPSAnJyArIHRndDsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgIG1vdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vdmUpIHtcbiAgICAgICAgICBlbGUgPSBlbGUubW92ZShzcGVjKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcGFyZW50IGlzIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgIHZhciBuZXdQYXJlbnRWYWxTcGVjZCA9ICdwYXJlbnQnIGluIG9iai5kYXRhO1xuICAgICAgICB2YXIgcGFyZW50ID0gb2JqLmRhdGEucGFyZW50O1xuXG4gICAgICAgIGlmIChuZXdQYXJlbnRWYWxTcGVjZCAmJiAocGFyZW50ICE9IG51bGwgfHwgX2RhdGEyLnBhcmVudCAhPSBudWxsKSAmJiBwYXJlbnQgIT0gX2RhdGEyLnBhcmVudCkge1xuICAgICAgICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gY2FuJ3Qgc2V0IHVuZGVmaW5lZCBpbXBlcmF0aXZlbHksIHNvIHVzZSBudWxsXG4gICAgICAgICAgICBwYXJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGFyZW50ID0gJycgKyBwYXJlbnQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlID0gZWxlLm1vdmUoe1xuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmoucG9zaXRpb24pIHtcbiAgICAgIGVsZS5wb3NpdGlvbihvYmoucG9zaXRpb24pO1xuICAgIH0gLy8gaWdub3JlIGdyb3VwIC0tIGltbXV0YWJsZVxuXG5cbiAgICB2YXIgY2hlY2tTd2l0Y2ggPSBmdW5jdGlvbiBjaGVja1N3aXRjaChrLCB0cnVlRm5OYW1lLCBmYWxzZUZuTmFtZSkge1xuICAgICAgdmFyIG9ial9rID0gb2JqW2tdO1xuXG4gICAgICBpZiAob2JqX2sgIT0gbnVsbCAmJiBvYmpfayAhPT0gcFtrXSkge1xuICAgICAgICBpZiAob2JqX2spIHtcbiAgICAgICAgICBlbGVbdHJ1ZUZuTmFtZV0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVbZmFsc2VGbk5hbWVdKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY2hlY2tTd2l0Y2goJ3JlbW92ZWQnLCAncmVtb3ZlJywgJ3Jlc3RvcmUnKTtcbiAgICBjaGVja1N3aXRjaCgnc2VsZWN0ZWQnLCAnc2VsZWN0JywgJ3Vuc2VsZWN0Jyk7XG4gICAgY2hlY2tTd2l0Y2goJ3NlbGVjdGFibGUnLCAnc2VsZWN0aWZ5JywgJ3Vuc2VsZWN0aWZ5Jyk7XG4gICAgY2hlY2tTd2l0Y2goJ2xvY2tlZCcsICdsb2NrJywgJ3VubG9jaycpO1xuICAgIGNoZWNrU3dpdGNoKCdncmFiYmFibGUnLCAnZ3JhYmlmeScsICd1bmdyYWJpZnknKTtcbiAgICBjaGVja1N3aXRjaCgncGFubmFibGUnLCAncGFuaWZ5JywgJ3VucGFuaWZ5Jyk7XG5cbiAgICBpZiAob2JqLmNsYXNzZXMgIT0gbnVsbCkge1xuICAgICAgZWxlLmNsYXNzZXMob2JqLmNsYXNzZXMpO1xuICAgIH1cblxuICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBnZXRcbiAgICB2YXIganNvbiA9IHtcbiAgICAgIGRhdGE6IGNvcHkocC5kYXRhKSxcbiAgICAgIHBvc2l0aW9uOiBjb3B5KHAucG9zaXRpb24pLFxuICAgICAgZ3JvdXA6IHAuZ3JvdXAsXG4gICAgICByZW1vdmVkOiBwLnJlbW92ZWQsXG4gICAgICBzZWxlY3RlZDogcC5zZWxlY3RlZCxcbiAgICAgIHNlbGVjdGFibGU6IHAuc2VsZWN0YWJsZSxcbiAgICAgIGxvY2tlZDogcC5sb2NrZWQsXG4gICAgICBncmFiYmFibGU6IHAuZ3JhYmJhYmxlLFxuICAgICAgcGFubmFibGU6IHAucGFubmFibGUsXG4gICAgICBjbGFzc2VzOiBudWxsXG4gICAgfTtcbiAgICBqc29uLmNsYXNzZXMgPSAnJztcbiAgICB2YXIgaSA9IDA7XG4gICAgcC5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgcmV0dXJuIGpzb24uY2xhc3NlcyArPSBpKysgPT09IDAgPyBjbHMgOiAnICcgKyBjbHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn07XG5cbmVsZXNmbiR1Lmpzb25zID0gZnVuY3Rpb24gKCkge1xuICB2YXIganNvbnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIganNvbiA9IGVsZS5qc29uKCk7XG4gICAganNvbnMucHVzaChqc29uKTtcbiAgfVxuXG4gIHJldHVybiBqc29ucztcbn07XG5cbmVsZXNmbiR1LmNsb25lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBlbGVzQXJyID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgdmFyIGpzb24gPSBlbGUuanNvbigpO1xuICAgIHZhciBjbG9uZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7IC8vIE5CIG5vIHJlc3RvcmVcblxuICAgIGVsZXNBcnIucHVzaChjbG9uZSk7XG4gIH1cblxuICByZXR1cm4gbmV3IENvbGxlY3Rpb24oY3ksIGVsZXNBcnIpO1xufTtcblxuZWxlc2ZuJHUuY29weSA9IGVsZXNmbiR1LmNsb25lO1xuXG5lbGVzZm4kdS5yZXN0b3JlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm90aWZ5UmVuZGVyZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRydWU7XG4gIHZhciBhZGRUb1Bvb2wgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICB2YXIgY3lfcCA9IGN5Ll9wcml2YXRlOyAvLyBjcmVhdGUgYXJyYXlzIG9mIG5vZGVzIGFuZCBlZGdlcywgc2luY2Ugd2UgbmVlZCB0b1xuICAvLyByZXN0b3JlIHRoZSBub2RlcyBmaXJzdFxuXG4gIHZhciBub2RlcyA9IFtdO1xuICB2YXIgZWRnZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzO1xuXG4gIGZvciAodmFyIF9pMyA9IDAsIGwgPSBzZWxmLmxlbmd0aDsgX2kzIDwgbDsgX2kzKyspIHtcbiAgICB2YXIgZWxlID0gc2VsZltfaTNdO1xuXG4gICAgaWYgKGFkZFRvUG9vbCAmJiAhZWxlLnJlbW92ZWQoKSkge1xuICAgICAgLy8gZG9uJ3QgbmVlZCB0byBoYW5kbGUgdGhpcyBlbGVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8ga2VlcCBub2RlcyBmaXJzdCBpbiB0aGUgYXJyYXkgYW5kIGVkZ2VzIGFmdGVyXG5cblxuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIC8vIHB1dCB0byBmcm9udCBvZiBhcnJheSBpZiBub2RlXG4gICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHB1dCB0byBlbmQgb2YgYXJyYXkgaWYgZWRnZVxuICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgIH1cbiAgfVxuXG4gIGVsZW1lbnRzID0gbm9kZXMuY29uY2F0KGVkZ2VzKTtcbiAgdmFyIGk7XG5cbiAgdmFyIHJlbW92ZUZyb21FbGVtZW50cyA9IGZ1bmN0aW9uIHJlbW92ZUZyb21FbGVtZW50cygpIHtcbiAgICBlbGVtZW50cy5zcGxpY2UoaSwgMSk7XG4gICAgaS0tO1xuICB9OyAvLyBub3csIHJlc3RvcmUgZWFjaCBlbGVtZW50XG5cblxuICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2VsZTIgPSBlbGVtZW50c1tpXTtcbiAgICB2YXIgX3ByaXZhdGUgPSBfZWxlMi5fcHJpdmF0ZTtcbiAgICB2YXIgX2RhdGEzID0gX3ByaXZhdGUuZGF0YTsgLy8gdGhlIHRyYXZlcnNhbCBjYWNoZSBzaG91bGQgc3RhcnQgZnJlc2ggd2hlbiBlbGUgaXMgYWRkZWRcblxuICAgIF9lbGUyLmNsZWFyVHJhdmVyc2FsQ2FjaGUoKTsgLy8gc2V0IGlkIGFuZCB2YWxpZGF0ZVxuXG5cbiAgICBpZiAoIWFkZFRvUG9vbCAmJiAhX3ByaXZhdGUucmVtb3ZlZCkgOyBlbHNlIGlmIChfZGF0YTMuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgX2RhdGEzLmlkID0gdXVpZCgpO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyKF9kYXRhMy5pZCkpIHtcbiAgICAgIF9kYXRhMy5pZCA9ICcnICsgX2RhdGEzLmlkOyAvLyBub3cgaXQncyBhIHN0cmluZ1xuICAgIH0gZWxzZSBpZiAoZW1wdHlTdHJpbmcoX2RhdGEzLmlkKSB8fCAhc3RyaW5nKF9kYXRhMy5pZCkpIHtcbiAgICAgIGVycm9yKCdDYW4gbm90IGNyZWF0ZSBlbGVtZW50IHdpdGggaW52YWxpZCBzdHJpbmcgSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBpdCBoYXMgZW1wdHkgc3RyaW5nIGFzIGlkIG9yIG5vbi1zdHJpbmcgaWRcblxuICAgICAgcmVtb3ZlRnJvbUVsZW1lbnRzKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKGN5Lmhhc0VsZW1lbnRXaXRoSWQoX2RhdGEzLmlkKSkge1xuICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIHNlY29uZCBlbGVtZW50IHdpdGggSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBvbmUgYWxyZWFkeSBoYXMgdGhhdCBpZFxuXG4gICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBpZCA9IF9kYXRhMy5pZDsgLy8gaWQgaXMgZmluYWxpc2VkLCBub3cgbGV0J3Mga2VlcCBhIHJlZlxuXG4gICAgaWYgKF9lbGUyLmlzTm9kZSgpKSB7XG4gICAgICAvLyBleHRyYSBjaGVja3MgZm9yIG5vZGVzXG4gICAgICB2YXIgcG9zID0gX3ByaXZhdGUucG9zaXRpb247IC8vIG1ha2Ugc3VyZSB0aGUgbm9kZXMgaGF2ZSBhIGRlZmluZWQgcG9zaXRpb25cblxuICAgICAgaWYgKHBvcy54ID09IG51bGwpIHtcbiAgICAgICAgcG9zLnggPSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9zLnkgPT0gbnVsbCkge1xuICAgICAgICBwb3MueSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF9lbGUyLmlzRWRnZSgpKSB7XG4gICAgICAvLyBleHRyYSBjaGVja3MgZm9yIGVkZ2VzXG4gICAgICB2YXIgZWRnZSA9IF9lbGUyO1xuICAgICAgdmFyIGZpZWxkcyA9IFsnc291cmNlJywgJ3RhcmdldCddO1xuICAgICAgdmFyIGZpZWxkc0xlbmd0aCA9IGZpZWxkcy5sZW5ndGg7XG4gICAgICB2YXIgYmFkU291cmNlT3JUYXJnZXQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWVsZHNMZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZmllbGQgPSBmaWVsZHNbal07XG4gICAgICAgIHZhciB2YWwgPSBfZGF0YTNbZmllbGRdO1xuXG4gICAgICAgIGlmIChudW1iZXIodmFsKSkge1xuICAgICAgICAgIHZhbCA9IF9kYXRhM1tmaWVsZF0gPSAnJyArIF9kYXRhM1tmaWVsZF07IC8vIG5vdyBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCB2YWwgPT09ICcnKSB7XG4gICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGlmIHNvdXJjZSBvciB0YXJnZXQgaXMgbm90IGRlZmluZWQgcHJvcGVybHlcbiAgICAgICAgICBlcnJvcignQ2FuIG5vdCBjcmVhdGUgZWRnZSBgJyArIGlkICsgJ2Agd2l0aCB1bnNwZWNpZmllZCAnICsgZmllbGQpO1xuICAgICAgICAgIGJhZFNvdXJjZU9yVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghY3kuaGFzRWxlbWVudFdpdGhJZCh2YWwpKSB7XG4gICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGVkZ2UgaWYgb25lIG9mIGl0cyBub2RlcyBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIGVkZ2UgYCcgKyBpZCArICdgIHdpdGggbm9uZXhpc3RhbnQgJyArIGZpZWxkICsgJyBgJyArIHZhbCArICdgJyk7XG4gICAgICAgICAgYmFkU291cmNlT3JUYXJnZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChiYWRTb3VyY2VPclRhcmdldCkge1xuICAgICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGNhbid0IGNyZWF0ZSB0aGlzXG5cblxuICAgICAgdmFyIHNyYyA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy5zb3VyY2UpO1xuICAgICAgdmFyIHRndCA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy50YXJnZXQpOyAvLyBvbmx5IG9uZSBlZGdlIGluIG5vZGUgaWYgbG9vcFxuXG4gICAgICBpZiAoc3JjLnNhbWUodGd0KSkge1xuICAgICAgICBzcmMuX3ByaXZhdGUuZWRnZXMucHVzaChlZGdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNyYy5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuXG4gICAgICAgIHRndC5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgfVxuXG4gICAgICBlZGdlLl9wcml2YXRlLnNvdXJjZSA9IHNyYztcbiAgICAgIGVkZ2UuX3ByaXZhdGUudGFyZ2V0ID0gdGd0O1xuICAgIH0gLy8gaWYgaXMgZWRnZVxuICAgIC8vIGNyZWF0ZSBtb2NrIGlkcyAvIGluZGV4ZXMgbWFwcyBmb3IgZWxlbWVudCBzbyBpdCBjYW4gYmUgdXNlZCBsaWtlIGNvbGxlY3Rpb25zXG5cblxuICAgIF9wcml2YXRlLm1hcCA9IG5ldyBNYXAkMSgpO1xuXG4gICAgX3ByaXZhdGUubWFwLnNldChpZCwge1xuICAgICAgZWxlOiBfZWxlMixcbiAgICAgIGluZGV4OiAwXG4gICAgfSk7XG5cbiAgICBfcHJpdmF0ZS5yZW1vdmVkID0gZmFsc2U7XG5cbiAgICBpZiAoYWRkVG9Qb29sKSB7XG4gICAgICBjeS5hZGRUb1Bvb2woX2VsZTIpO1xuICAgIH1cbiAgfSAvLyBmb3IgZWFjaCBlbGVtZW50XG4gIC8vIGRvIGNvbXBvdW5kIG5vZGUgc2FuaXR5IGNoZWNrc1xuXG5cbiAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbm9kZXMubGVuZ3RoOyBfaTQrKykge1xuICAgIC8vIGVhY2ggbm9kZVxuICAgIHZhciBub2RlID0gbm9kZXNbX2k0XTtcbiAgICB2YXIgX2RhdGE0ID0gbm9kZS5fcHJpdmF0ZS5kYXRhO1xuXG4gICAgaWYgKG51bWJlcihfZGF0YTQucGFyZW50KSkge1xuICAgICAgLy8gdGhlbiBhdXRvbWFrZSBzdHJpbmdcbiAgICAgIF9kYXRhNC5wYXJlbnQgPSAnJyArIF9kYXRhNC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudElkID0gX2RhdGE0LnBhcmVudDtcbiAgICB2YXIgc3BlY2lmaWVkUGFyZW50ID0gcGFyZW50SWQgIT0gbnVsbDtcblxuICAgIGlmIChzcGVjaWZpZWRQYXJlbnQpIHtcbiAgICAgIHZhciBwYXJlbnQgPSBjeS5nZXRFbGVtZW50QnlJZChwYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnQuZW1wdHkoKSkge1xuICAgICAgICAvLyBub24tZXhpc3RhbnQgcGFyZW50OyBqdXN0IHJlbW92ZSBpdFxuICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNlbGZBc1BhcmVudCA9IGZhbHNlO1xuICAgICAgICB2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG5cbiAgICAgICAgd2hpbGUgKCFhbmNlc3Rvci5lbXB0eSgpKSB7XG4gICAgICAgICAgaWYgKG5vZGUuc2FtZShhbmNlc3RvcikpIHtcbiAgICAgICAgICAgIC8vIG1hcmsgc2VsZiBhcyBwYXJlbnQgYW5kIHJlbW92ZSBmcm9tIGRhdGFcbiAgICAgICAgICAgIHNlbGZBc1BhcmVudCA9IHRydWU7XG4gICAgICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkOyAvLyByZW1vdmUgcGFyZW50IHJlZmVyZW5jZVxuICAgICAgICAgICAgLy8gZXhpdCBvciB3ZSBsb29wIGZvcmV2ZXJcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZkFzUGFyZW50KSB7XG4gICAgICAgICAgLy8gY29ubmVjdCB3aXRoIGNoaWxkcmVuXG4gICAgICAgICAgcGFyZW50WzBdLl9wcml2YXRlLmNoaWxkcmVuLnB1c2gobm9kZSk7XG5cbiAgICAgICAgICBub2RlLl9wcml2YXRlLnBhcmVudCA9IHBhcmVudFswXTsgLy8gbGV0IHRoZSBjb3JlIGtub3cgd2UgaGF2ZSBhIGNvbXBvdW5kIGdyYXBoXG5cbiAgICAgICAgICBjeV9wLmhhc0NvbXBvdW5kTm9kZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIGVsc2VcblxuICAgIH0gLy8gaWYgc3BlY2lmaWVkIHBhcmVudFxuXG4gIH0gLy8gZm9yIGVhY2ggbm9kZVxuXG5cbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgcmVzdG9yZWQgPSBlbGVtZW50cy5sZW5ndGggPT09IHNlbGYubGVuZ3RoID8gc2VsZiA6IG5ldyBDb2xsZWN0aW9uKGN5LCBlbGVtZW50cyk7XG5cbiAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCByZXN0b3JlZC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgX2VsZTMgPSByZXN0b3JlZFtfaTVdO1xuXG4gICAgICBpZiAoX2VsZTMuaXNOb2RlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGFkZGluZyBhbiBlZGdlIGludmFsaWRhdGVzIHRoZSB0cmF2ZXJzYWwgY2FjaGVzIGZvciB0aGUgcGFyYWxsZWwgZWRnZXNcblxuXG4gICAgICBfZWxlMy5wYXJhbGxlbEVkZ2VzKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpOyAvLyBhZGRpbmcgYW4gZWRnZSBpbnZhbGlkYXRlcyB0aGUgdHJhdmVyc2FsIGNhY2hlIGZvciB0aGUgY29ubmVjdGVkIG5vZGVzXG5cblxuICAgICAgX2VsZTMuc291cmNlKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpO1xuXG4gICAgICBfZWxlMy50YXJnZXQoKS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gICAgfVxuXG4gICAgdmFyIHRvVXBkYXRlU3R5bGU7XG5cbiAgICBpZiAoY3lfcC5oYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgICB0b1VwZGF0ZVN0eWxlID0gY3kuY29sbGVjdGlvbigpLm1lcmdlKHJlc3RvcmVkKS5tZXJnZShyZXN0b3JlZC5jb25uZWN0ZWROb2RlcygpKS5tZXJnZShyZXN0b3JlZC5wYXJlbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvVXBkYXRlU3R5bGUgPSByZXN0b3JlZDtcbiAgICB9XG5cbiAgICB0b1VwZGF0ZVN0eWxlLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpLnVwZGF0ZVN0eWxlKG5vdGlmeVJlbmRlcmVyKTtcblxuICAgIGlmIChub3RpZnlSZW5kZXJlcikge1xuICAgICAgcmVzdG9yZWQuZW1pdEFuZE5vdGlmeSgnYWRkJyk7XG4gICAgfSBlbHNlIGlmIChhZGRUb1Bvb2wpIHtcbiAgICAgIHJlc3RvcmVkLmVtaXQoJ2FkZCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxmOyAvLyBjaGFpbmFiaWxpdHlcbn07XG5cbmVsZXNmbiR1LnJlbW92ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuICByZXR1cm4gZWxlICYmIGVsZS5fcHJpdmF0ZS5yZW1vdmVkO1xufTtcblxuZWxlc2ZuJHUuaW5zaWRlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcbiAgcmV0dXJuIGVsZSAmJiAhZWxlLl9wcml2YXRlLnJlbW92ZWQ7XG59O1xuXG5lbGVzZm4kdS5yZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub3RpZnlSZW5kZXJlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgdmFyIHJlbW92ZUZyb21Qb29sID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBlbGVzVG9SZW1vdmUgPSBbXTtcbiAgdmFyIGVsZXNUb1JlbW92ZUlkcyA9IHt9O1xuICB2YXIgY3kgPSBzZWxmLl9wcml2YXRlLmN5OyAvLyBhZGQgY29ubmVjdGVkIGVkZ2VzXG5cbiAgZnVuY3Rpb24gYWRkQ29ubmVjdGVkRWRnZXMobm9kZSkge1xuICAgIHZhciBlZGdlcyA9IG5vZGUuX3ByaXZhdGUuZWRnZXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhZGQoZWRnZXNbaV0pO1xuICAgIH1cbiAgfSAvLyBhZGQgZGVzY2VuZGFudCBub2Rlc1xuXG5cbiAgZnVuY3Rpb24gYWRkQ2hpbGRyZW4obm9kZSkge1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhZGQoY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZChlbGUpIHtcbiAgICB2YXIgYWxyZWFkeUFkZGVkID0gZWxlc1RvUmVtb3ZlSWRzW2VsZS5pZCgpXTtcblxuICAgIGlmIChyZW1vdmVGcm9tUG9vbCAmJiBlbGUucmVtb3ZlZCgpIHx8IGFscmVhZHlBZGRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzVG9SZW1vdmVJZHNbZWxlLmlkKCldID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBlbGVzVG9SZW1vdmUucHVzaChlbGUpOyAvLyBub2RlcyBhcmUgcmVtb3ZlZCBsYXN0XG5cbiAgICAgIGFkZENvbm5lY3RlZEVkZ2VzKGVsZSk7XG4gICAgICBhZGRDaGlsZHJlbihlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzVG9SZW1vdmUudW5zaGlmdChlbGUpOyAvLyBlZGdlcyBhcmUgcmVtb3ZlZCBmaXJzdFxuICAgIH1cbiAgfSAvLyBtYWtlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZVxuICAvLyAobWF5IGJlIHJlbW92aW5nIG1vcmUgdGhhbiBzcGVjaWZpZWQgZHVlIHRvIGNvbm5lY3RlZCBlZGdlcyBldGMpXG5cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHNlbGYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IHNlbGZbaV07XG4gICAgYWRkKGVsZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFZGdlUmVmKG5vZGUsIGVkZ2UpIHtcbiAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLl9wcml2YXRlLmVkZ2VzO1xuICAgIHJlbW92ZUZyb21BcnJheShjb25uZWN0ZWRFZGdlcywgZWRnZSk7IC8vIHJlbW92aW5nIGFuIGVkZ2VzIGludmFsaWRhdGVzIHRoZSB0cmF2ZXJzYWwgY2FjaGUgZm9yIGl0cyBub2Rlc1xuXG4gICAgbm9kZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVQYXJhbGxlbFJlZihwbGxFZGdlKSB7XG4gICAgLy8gcmVtb3ZpbmcgYW4gZWRnZSBpbnZhbGlkYXRlcyB0aGUgdHJhdmVyc2FsIGNhY2hlcyBmb3IgdGhlIHBhcmFsbGVsIGVkZ2VzXG4gICAgcGxsRWRnZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gIH1cblxuICB2YXIgYWx0ZXJlZFBhcmVudHMgPSBbXTtcbiAgYWx0ZXJlZFBhcmVudHMuaWRzID0ge307XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRSZWYocGFyZW50LCBlbGUpIHtcbiAgICBlbGUgPSBlbGVbMF07XG4gICAgcGFyZW50ID0gcGFyZW50WzBdO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5fcHJpdmF0ZS5jaGlsZHJlbjtcbiAgICB2YXIgcGlkID0gcGFyZW50LmlkKCk7XG4gICAgcmVtb3ZlRnJvbUFycmF5KGNoaWxkcmVuLCBlbGUpOyAvLyByZW1vdmUgcGFyZW50ID0+IGNoaWxkIHJlZlxuXG4gICAgZWxlLl9wcml2YXRlLnBhcmVudCA9IG51bGw7IC8vIHJlbW92ZSBjaGlsZCA9PiBwYXJlbnQgcmVmXG5cbiAgICBpZiAoIWFsdGVyZWRQYXJlbnRzLmlkc1twaWRdKSB7XG4gICAgICBhbHRlcmVkUGFyZW50cy5pZHNbcGlkXSA9IHRydWU7XG4gICAgICBhbHRlcmVkUGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZi5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcblxuICBpZiAocmVtb3ZlRnJvbVBvb2wpIHtcbiAgICBjeS5yZW1vdmVGcm9tUG9vbChlbGVzVG9SZW1vdmUpOyAvLyByZW1vdmUgZnJvbSBjb3JlIHBvb2xcbiAgfVxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGVsZXNUb1JlbW92ZS5sZW5ndGg7IF9pNisrKSB7XG4gICAgdmFyIF9lbGU0ID0gZWxlc1RvUmVtb3ZlW19pNl07XG5cbiAgICBpZiAoX2VsZTQuaXNFZGdlKCkpIHtcbiAgICAgIC8vIHJlbW92ZSByZWZlcmVuY2VzIHRvIHRoaXMgZWRnZSBpbiBpdHMgY29ubmVjdGVkIG5vZGVzXG4gICAgICB2YXIgc3JjID0gX2VsZTQuc291cmNlKClbMF07XG5cbiAgICAgIHZhciB0Z3QgPSBfZWxlNC50YXJnZXQoKVswXTtcblxuICAgICAgcmVtb3ZlRWRnZVJlZihzcmMsIF9lbGU0KTtcbiAgICAgIHJlbW92ZUVkZ2VSZWYodGd0LCBfZWxlNCk7XG5cbiAgICAgIHZhciBwbGxFZGdlcyA9IF9lbGU0LnBhcmFsbGVsRWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwbGxFZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcGxsRWRnZSA9IHBsbEVkZ2VzW2pdO1xuICAgICAgICByZW1vdmVQYXJhbGxlbFJlZihwbGxFZGdlKTtcblxuICAgICAgICBpZiAocGxsRWRnZS5pc0J1bmRsZWRCZXppZXIoKSkge1xuICAgICAgICAgIHBsbEVkZ2UuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSB0byBwYXJlbnRcbiAgICAgIHZhciBwYXJlbnQgPSBfZWxlNC5wYXJlbnQoKTtcblxuICAgICAgaWYgKHBhcmVudC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmVtb3ZlQ2hpbGRSZWYocGFyZW50LCBfZWxlNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlbW92ZUZyb21Qb29sKSB7XG4gICAgICAvLyBtYXJrIGFzIHJlbW92ZWRcbiAgICAgIF9lbGU0Ll9wcml2YXRlLnJlbW92ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBjaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIGNvbXBvdW5kIGdyYXBoIG9yIG5vdFxuXG5cbiAgdmFyIGVsZXNTdGlsbEluc2lkZSA9IGN5Ll9wcml2YXRlLmVsZW1lbnRzO1xuICBjeS5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZWxlc1N0aWxsSW5zaWRlLmxlbmd0aDsgX2k3KyspIHtcbiAgICB2YXIgX2VsZTUgPSBlbGVzU3RpbGxJbnNpZGVbX2k3XTtcblxuICAgIGlmIChfZWxlNS5pc1BhcmVudCgpKSB7XG4gICAgICBjeS5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZW1vdmVkRWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXNUb1JlbW92ZSk7XG5cbiAgaWYgKHJlbW92ZWRFbGVtZW50cy5zaXplKCkgPiAwKSB7XG4gICAgLy8gbXVzdCBtYW51YWxseSBub3RpZnkgc2luY2UgdHJpZ2dlciB3b24ndCBkbyB0aGlzIGF1dG9tYXRpY2FsbHkgb25jZSByZW1vdmVkXG4gICAgaWYgKG5vdGlmeVJlbmRlcmVyKSB7XG4gICAgICByZW1vdmVkRWxlbWVudHMuZW1pdEFuZE5vdGlmeSgncmVtb3ZlJyk7XG4gICAgfSBlbHNlIGlmIChyZW1vdmVGcm9tUG9vbCkge1xuICAgICAgcmVtb3ZlZEVsZW1lbnRzLmVtaXQoJ3JlbW92ZScpO1xuICAgIH1cbiAgfSAvLyB0aGUgcGFyZW50cyB3aG8gd2VyZSBtb2RpZmllZCBieSB0aGUgcmVtb3ZhbCBuZWVkIHRoZWlyIHN0eWxlIHVwZGF0ZWRcblxuXG4gIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IGFsdGVyZWRQYXJlbnRzLmxlbmd0aDsgX2k4KyspIHtcbiAgICB2YXIgX2VsZTYgPSBhbHRlcmVkUGFyZW50c1tfaThdO1xuXG4gICAgaWYgKCFyZW1vdmVGcm9tUG9vbCB8fCAhX2VsZTYucmVtb3ZlZCgpKSB7XG4gICAgICBfZWxlNi51cGRhdGVTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW1vdmVkRWxlbWVudHM7XG59O1xuXG5lbGVzZm4kdS5tb3ZlID0gZnVuY3Rpb24gKHN0cnVjdCkge1xuICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICB2YXIgZWxlcyA9IHRoaXM7IC8vIGp1c3QgY2xlYW4gdXAgcmVmcywgY2FjaGVzLCBldGMuIGluIHRoZSBzYW1lIHdheSBhcyB3aGVuIHJlbW92aW5nIGFuZCB0aGVuIHJlc3RvcmluZ1xuICAvLyAob3VyIGNhbGxzIHRvIHJlbW92ZS9yZXN0b3JlIGRvIG5vdCByZW1vdmUgZnJvbSB0aGUgZ3JhcGggb3IgbWFrZSBldmVudHMpXG5cbiAgdmFyIG5vdGlmeVJlbmRlcmVyID0gZmFsc2U7XG4gIHZhciBtb2RpZnlQb29sID0gZmFsc2U7XG5cbiAgdmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoaWQpIHtcbiAgICByZXR1cm4gaWQgPT0gbnVsbCA/IGlkIDogJycgKyBpZDtcbiAgfTsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuXG4gIGlmIChzdHJ1Y3Quc291cmNlICE9PSB1bmRlZmluZWQgfHwgc3RydWN0LnRhcmdldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHNyY0lkID0gdG9TdHJpbmcoc3RydWN0LnNvdXJjZSk7XG4gICAgdmFyIHRndElkID0gdG9TdHJpbmcoc3RydWN0LnRhcmdldCk7XG4gICAgdmFyIHNyY0V4aXN0cyA9IHNyY0lkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZChzcmNJZCk7XG4gICAgdmFyIHRndEV4aXN0cyA9IHRndElkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZCh0Z3RJZCk7XG5cbiAgICBpZiAoc3JjRXhpc3RzIHx8IHRndEV4aXN0cykge1xuICAgICAgY3kuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICBlbGVzLnJlbW92ZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIGNsZWFuIHVwIHJlZnMgZXRjLlxuXG4gICAgICAgIGVsZXMuZW1pdEFuZE5vdGlmeSgnbW92ZW91dCcpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIHZhciBfZGF0YTUgPSBlbGUuX3ByaXZhdGUuZGF0YTtcblxuICAgICAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgICAgIGlmIChzcmNFeGlzdHMpIHtcbiAgICAgICAgICAgICAgX2RhdGE1LnNvdXJjZSA9IHNyY0lkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGd0RXhpc3RzKSB7XG4gICAgICAgICAgICAgIF9kYXRhNS50YXJnZXQgPSB0Z3RJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbGVzLnJlc3RvcmUobm90aWZ5UmVuZGVyZXIsIG1vZGlmeVBvb2wpOyAvLyBtYWtlIG5ldyByZWZzLCBzdHlsZSwgZXRjLlxuICAgICAgfSk7XG4gICAgICBlbGVzLmVtaXRBbmROb3RpZnkoJ21vdmUnKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RydWN0LnBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gbW92ZSBub2RlIHRvIG5ldyBwYXJlbnRcbiAgICB2YXIgcGFyZW50SWQgPSB0b1N0cmluZyhzdHJ1Y3QucGFyZW50KTtcbiAgICB2YXIgcGFyZW50RXhpc3RzID0gcGFyZW50SWQgPT09IG51bGwgfHwgY3kuaGFzRWxlbWVudFdpdGhJZChwYXJlbnRJZCk7XG5cbiAgICBpZiAocGFyZW50RXhpc3RzKSB7XG4gICAgICB2YXIgcGlkVG9Bc3NpZ24gPSBwYXJlbnRJZCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHBhcmVudElkO1xuICAgICAgY3kuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICB2YXIgdXBkYXRlZCA9IGVsZXMucmVtb3ZlKG5vdGlmeVJlbmRlcmVyLCBtb2RpZnlQb29sKTsgLy8gY2xlYW4gdXAgcmVmcyBldGMuXG5cbiAgICAgICAgdXBkYXRlZC5lbWl0QW5kTm90aWZ5KCdtb3Zlb3V0Jyk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgICAgdmFyIF9kYXRhNiA9IGVsZS5fcHJpdmF0ZS5kYXRhO1xuXG4gICAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgICAgX2RhdGE2LnBhcmVudCA9IHBpZFRvQXNzaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZWQucmVzdG9yZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIG1ha2UgbmV3IHJlZnMsIHN0eWxlLCBldGMuXG4gICAgICB9KTtcbiAgICAgIGVsZXMuZW1pdEFuZE5vdGlmeSgnbW92ZScpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuW2VsZXNmbiRjLCBlbGVzZm4kZCwgZWxlc2ZuJGUsIGVsZXNmbiRmLCBlbGVzZm4kZywgZGF0YSQxLCBlbGVzZm4kaSwgZGltZW5zaW9ucywgZWxlc2ZuJG0sIGVsZXNmbiRuLCBlbGVzZm4kbywgZWxlc2ZuJHAsIGVsZXNmbiRxLCBlbGVzZm4kciwgZWxlc2ZuJHMsIGVsZXNmbiR0XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoZWxlc2ZuJHUsIHByb3BzKTtcbn0pO1xuXG52YXIgY29yZWZuID0ge1xuICBhZGQ6IGZ1bmN0aW9uIGFkZChvcHRzKSB7XG4gICAgdmFyIGVsZW1lbnRzO1xuICAgIHZhciBjeSA9IHRoaXM7IC8vIGFkZCB0aGUgZWxlbWVudHNcblxuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKG9wdHMpKSB7XG4gICAgICB2YXIgZWxlcyA9IG9wdHM7XG5cbiAgICAgIGlmIChlbGVzLl9wcml2YXRlLmN5ID09PSBjeSkge1xuICAgICAgICAvLyBzYW1lIGluc3RhbmNlID0+IGp1c3QgcmVzdG9yZVxuICAgICAgICBlbGVtZW50cyA9IGVsZXMucmVzdG9yZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBjb3B5IGZyb20ganNvblxuICAgICAgICB2YXIganNvbnMgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgICBqc29ucy5wdXNoKGVsZS5qc29uKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbihjeSwganNvbnMpO1xuICAgICAgfVxuICAgIH0gLy8gc3BlY2lmeSBhbiBhcnJheSBvZiBvcHRpb25zXG4gICAgZWxzZSBpZiAoYXJyYXkob3B0cykpIHtcbiAgICAgICAgdmFyIF9qc29ucyA9IG9wdHM7XG4gICAgICAgIGVsZW1lbnRzID0gbmV3IENvbGxlY3Rpb24oY3ksIF9qc29ucyk7XG4gICAgICB9IC8vIHNwZWNpZnkgdmlhIG9wdHMubm9kZXMgYW5kIG9wdHMuZWRnZXNcbiAgICAgIGVsc2UgaWYgKHBsYWluT2JqZWN0KG9wdHMpICYmIChhcnJheShvcHRzLm5vZGVzKSB8fCBhcnJheShvcHRzLmVkZ2VzKSkpIHtcbiAgICAgICAgICB2YXIgZWxlc0J5R3JvdXAgPSBvcHRzO1xuICAgICAgICAgIHZhciBfanNvbnMyID0gW107XG4gICAgICAgICAgdmFyIGdycyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcblxuICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgaWwgPSBncnMubGVuZ3RoOyBfaSA8IGlsOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSBncnNbX2ldO1xuICAgICAgICAgICAgdmFyIGVsZXNBcnJheSA9IGVsZXNCeUdyb3VwW2dyb3VwXTtcblxuICAgICAgICAgICAgaWYgKGFycmF5KGVsZXNBcnJheSkpIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpsID0gZWxlc0FycmF5Lmxlbmd0aDsgaiA8IGpsOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIganNvbiA9IGV4dGVuZCh7XG4gICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXBcbiAgICAgICAgICAgICAgICB9LCBlbGVzQXJyYXlbal0pO1xuXG4gICAgICAgICAgICAgICAgX2pzb25zMi5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbihjeSwgX2pzb25zMik7XG4gICAgICAgIH0gLy8gc3BlY2lmeSBvcHRpb25zIGZvciBvbmUgZWxlbWVudFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBfanNvbiA9IG9wdHM7XG4gICAgICAgICAgICBlbGVtZW50cyA9IG5ldyBFbGVtZW50KGN5LCBfanNvbikuY29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoY29sbGVjdGlvbikge1xuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSA7IGVsc2UgaWYgKHN0cmluZyhjb2xsZWN0aW9uKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gY29sbGVjdGlvbjtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLiQoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uLnJlbW92ZSgpO1xuICB9XG59O1xuXG4vKiBnbG9iYWwgRmxvYXQzMkFycmF5ICovXG5cbi8qISBCZXppZXIgY3VydmUgZnVuY3Rpb24gZ2VuZXJhdG9yLiBDb3B5cmlnaHQgR2FldGFuIFJlbmF1ZGVhdS4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cbmZ1bmN0aW9uIGdlbmVyYXRlQ3ViaWNCZXppZXIobVgxLCBtWTEsIG1YMiwgbVkyKSB7XG4gIHZhciBORVdUT05fSVRFUkFUSU9OUyA9IDQsXG4gICAgICBORVdUT05fTUlOX1NMT1BFID0gMC4wMDEsXG4gICAgICBTVUJESVZJU0lPTl9QUkVDSVNJT04gPSAwLjAwMDAwMDEsXG4gICAgICBTVUJESVZJU0lPTl9NQVhfSVRFUkFUSU9OUyA9IDEwLFxuICAgICAga1NwbGluZVRhYmxlU2l6ZSA9IDExLFxuICAgICAga1NhbXBsZVN0ZXBTaXplID0gMS4wIC8gKGtTcGxpbmVUYWJsZVNpemUgLSAxLjApLFxuICAgICAgZmxvYXQzMkFycmF5U3VwcG9ydGVkID0gdHlwZW9mIEZsb2F0MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCc7XG4gIC8qIE11c3QgY29udGFpbiBmb3VyIGFyZ3VtZW50cy4gKi9cblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKiBBcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzLiAqL1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSAhPT0gXCJudW1iZXJcIiB8fCBpc05hTihhcmd1bWVudHNbaV0pIHx8ICFpc0Zpbml0ZShhcmd1bWVudHNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qIFggdmFsdWVzIG11c3QgYmUgaW4gdGhlIFswLCAxXSByYW5nZS4gKi9cblxuXG4gIG1YMSA9IE1hdGgubWluKG1YMSwgMSk7XG4gIG1YMiA9IE1hdGgubWluKG1YMiwgMSk7XG4gIG1YMSA9IE1hdGgubWF4KG1YMSwgMCk7XG4gIG1YMiA9IE1hdGgubWF4KG1YMiwgMCk7XG4gIHZhciBtU2FtcGxlVmFsdWVzID0gZmxvYXQzMkFycmF5U3VwcG9ydGVkID8gbmV3IEZsb2F0MzJBcnJheShrU3BsaW5lVGFibGVTaXplKSA6IG5ldyBBcnJheShrU3BsaW5lVGFibGVTaXplKTtcblxuICBmdW5jdGlvbiBBKGFBMSwgYUEyKSB7XG4gICAgcmV0dXJuIDEuMCAtIDMuMCAqIGFBMiArIDMuMCAqIGFBMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIEIoYUExLCBhQTIpIHtcbiAgICByZXR1cm4gMy4wICogYUEyIC0gNi4wICogYUExO1xuICB9XG5cbiAgZnVuY3Rpb24gQyhhQTEpIHtcbiAgICByZXR1cm4gMy4wICogYUExO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY0JlemllcihhVCwgYUExLCBhQTIpIHtcbiAgICByZXR1cm4gKChBKGFBMSwgYUEyKSAqIGFUICsgQihhQTEsIGFBMikpICogYVQgKyBDKGFBMSkpICogYVQ7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRTbG9wZShhVCwgYUExLCBhQTIpIHtcbiAgICByZXR1cm4gMy4wICogQShhQTEsIGFBMikgKiBhVCAqIGFUICsgMi4wICogQihhQTEsIGFBMikgKiBhVCArIEMoYUExKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld3RvblJhcGhzb25JdGVyYXRlKGFYLCBhR3Vlc3NUKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IE5FV1RPTl9JVEVSQVRJT05TOyArK19pKSB7XG4gICAgICB2YXIgY3VycmVudFNsb3BlID0gZ2V0U2xvcGUoYUd1ZXNzVCwgbVgxLCBtWDIpO1xuXG4gICAgICBpZiAoY3VycmVudFNsb3BlID09PSAwLjApIHtcbiAgICAgICAgcmV0dXJuIGFHdWVzc1Q7XG4gICAgICB9XG5cbiAgICAgIHZhciBjdXJyZW50WCA9IGNhbGNCZXppZXIoYUd1ZXNzVCwgbVgxLCBtWDIpIC0gYVg7XG4gICAgICBhR3Vlc3NUIC09IGN1cnJlbnRYIC8gY3VycmVudFNsb3BlO1xuICAgIH1cblxuICAgIHJldHVybiBhR3Vlc3NUO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY1NhbXBsZVZhbHVlcygpIHtcbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrU3BsaW5lVGFibGVTaXplOyArK19pMikge1xuICAgICAgbVNhbXBsZVZhbHVlc1tfaTJdID0gY2FsY0JlemllcihfaTIgKiBrU2FtcGxlU3RlcFNpemUsIG1YMSwgbVgyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBiaW5hcnlTdWJkaXZpZGUoYVgsIGFBLCBhQikge1xuICAgIHZhciBjdXJyZW50WCxcbiAgICAgICAgY3VycmVudFQsXG4gICAgICAgIGkgPSAwO1xuXG4gICAgZG8ge1xuICAgICAgY3VycmVudFQgPSBhQSArIChhQiAtIGFBKSAvIDIuMDtcbiAgICAgIGN1cnJlbnRYID0gY2FsY0JlemllcihjdXJyZW50VCwgbVgxLCBtWDIpIC0gYVg7XG5cbiAgICAgIGlmIChjdXJyZW50WCA+IDAuMCkge1xuICAgICAgICBhQiA9IGN1cnJlbnRUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYUEgPSBjdXJyZW50VDtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChNYXRoLmFicyhjdXJyZW50WCkgPiBTVUJESVZJU0lPTl9QUkVDSVNJT04gJiYgKytpIDwgU1VCRElWSVNJT05fTUFYX0lURVJBVElPTlMpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRUO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VEZvclgoYVgpIHtcbiAgICB2YXIgaW50ZXJ2YWxTdGFydCA9IDAuMCxcbiAgICAgICAgY3VycmVudFNhbXBsZSA9IDEsXG4gICAgICAgIGxhc3RTYW1wbGUgPSBrU3BsaW5lVGFibGVTaXplIC0gMTtcblxuICAgIGZvciAoOyBjdXJyZW50U2FtcGxlICE9PSBsYXN0U2FtcGxlICYmIG1TYW1wbGVWYWx1ZXNbY3VycmVudFNhbXBsZV0gPD0gYVg7ICsrY3VycmVudFNhbXBsZSkge1xuICAgICAgaW50ZXJ2YWxTdGFydCArPSBrU2FtcGxlU3RlcFNpemU7XG4gICAgfVxuXG4gICAgLS1jdXJyZW50U2FtcGxlO1xuICAgIHZhciBkaXN0ID0gKGFYIC0gbVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlXSkgLyAobVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlICsgMV0gLSBtU2FtcGxlVmFsdWVzW2N1cnJlbnRTYW1wbGVdKSxcbiAgICAgICAgZ3Vlc3NGb3JUID0gaW50ZXJ2YWxTdGFydCArIGRpc3QgKiBrU2FtcGxlU3RlcFNpemUsXG4gICAgICAgIGluaXRpYWxTbG9wZSA9IGdldFNsb3BlKGd1ZXNzRm9yVCwgbVgxLCBtWDIpO1xuXG4gICAgaWYgKGluaXRpYWxTbG9wZSA+PSBORVdUT05fTUlOX1NMT1BFKSB7XG4gICAgICByZXR1cm4gbmV3dG9uUmFwaHNvbkl0ZXJhdGUoYVgsIGd1ZXNzRm9yVCk7XG4gICAgfSBlbHNlIGlmIChpbml0aWFsU2xvcGUgPT09IDAuMCkge1xuICAgICAgcmV0dXJuIGd1ZXNzRm9yVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJpbmFyeVN1YmRpdmlkZShhWCwgaW50ZXJ2YWxTdGFydCwgaW50ZXJ2YWxTdGFydCArIGtTYW1wbGVTdGVwU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIF9wcmVjb21wdXRlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHByZWNvbXB1dGUoKSB7XG4gICAgX3ByZWNvbXB1dGVkID0gdHJ1ZTtcblxuICAgIGlmIChtWDEgIT09IG1ZMSB8fCBtWDIgIT09IG1ZMikge1xuICAgICAgY2FsY1NhbXBsZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBmID0gZnVuY3Rpb24gZihhWCkge1xuICAgIGlmICghX3ByZWNvbXB1dGVkKSB7XG4gICAgICBwcmVjb21wdXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKG1YMSA9PT0gbVkxICYmIG1YMiA9PT0gbVkyKSB7XG4gICAgICByZXR1cm4gYVg7XG4gICAgfVxuXG4gICAgaWYgKGFYID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoYVggPT09IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxjQmV6aWVyKGdldFRGb3JYKGFYKSwgbVkxLCBtWTIpO1xuICB9O1xuXG4gIGYuZ2V0Q29udHJvbFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gW3tcbiAgICAgIHg6IG1YMSxcbiAgICAgIHk6IG1ZMVxuICAgIH0sIHtcbiAgICAgIHg6IG1YMixcbiAgICAgIHk6IG1ZMlxuICAgIH1dO1xuICB9O1xuXG4gIHZhciBzdHIgPSBcImdlbmVyYXRlQmV6aWVyKFwiICsgW21YMSwgbVkxLCBtWDIsIG1ZMl0gKyBcIilcIjtcblxuICBmLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgcmV0dXJuIGY7XG59XG5cbi8qISBSdW5nZS1LdXR0YSBzcHJpbmcgcGh5c2ljcyBmdW5jdGlvbiBnZW5lcmF0b3IuIEFkYXB0ZWQgZnJvbSBGcmFtZXIuanMsIGNvcHlyaWdodCBLb2VuIEJvay4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cblxuLyogR2l2ZW4gYSB0ZW5zaW9uLCBmcmljdGlvbiwgYW5kIGR1cmF0aW9uLCBhIHNpbXVsYXRpb24gYXQgNjBGUFMgd2lsbCBmaXJzdCBydW4gd2l0aG91dCBhIGRlZmluZWQgZHVyYXRpb24gaW4gb3JkZXIgdG8gY2FsY3VsYXRlIHRoZSBmdWxsIHBhdGguIEEgc2Vjb25kIHBhc3NcbiAgIHRoZW4gYWRqdXN0cyB0aGUgdGltZSBkZWx0YSAtLSB1c2luZyB0aGUgcmVsYXRpb24gYmV0d2VlbiBhY3R1YWwgdGltZSBhbmQgZHVyYXRpb24gLS0gdG8gY2FsY3VsYXRlIHRoZSBwYXRoIGZvciB0aGUgZHVyYXRpb24tY29uc3RyYWluZWQgYW5pbWF0aW9uLiAqL1xudmFyIGdlbmVyYXRlU3ByaW5nUks0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSkge1xuICAgIHJldHVybiAtc3RhdGUudGVuc2lvbiAqIHN0YXRlLnggLSBzdGF0ZS5mcmljdGlvbiAqIHN0YXRlLnY7XG4gIH1cblxuICBmdW5jdGlvbiBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoaW5pdGlhbFN0YXRlLCBkdCwgZGVyaXZhdGl2ZSkge1xuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHg6IGluaXRpYWxTdGF0ZS54ICsgZGVyaXZhdGl2ZS5keCAqIGR0LFxuICAgICAgdjogaW5pdGlhbFN0YXRlLnYgKyBkZXJpdmF0aXZlLmR2ICogZHQsXG4gICAgICB0ZW5zaW9uOiBpbml0aWFsU3RhdGUudGVuc2lvbixcbiAgICAgIGZyaWN0aW9uOiBpbml0aWFsU3RhdGUuZnJpY3Rpb25cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBkeDogc3RhdGUudixcbiAgICAgIGR2OiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSlcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc3ByaW5nSW50ZWdyYXRlU3RhdGUoc3RhdGUsIGR0KSB7XG4gICAgdmFyIGEgPSB7XG4gICAgICBkeDogc3RhdGUudixcbiAgICAgIGR2OiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSlcbiAgICB9LFxuICAgICAgICBiID0gc3ByaW5nRXZhbHVhdGVTdGF0ZVdpdGhEZXJpdmF0aXZlKHN0YXRlLCBkdCAqIDAuNSwgYSksXG4gICAgICAgIGMgPSBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoc3RhdGUsIGR0ICogMC41LCBiKSxcbiAgICAgICAgZCA9IHNwcmluZ0V2YWx1YXRlU3RhdGVXaXRoRGVyaXZhdGl2ZShzdGF0ZSwgZHQsIGMpLFxuICAgICAgICBkeGR0ID0gMS4wIC8gNi4wICogKGEuZHggKyAyLjAgKiAoYi5keCArIGMuZHgpICsgZC5keCksXG4gICAgICAgIGR2ZHQgPSAxLjAgLyA2LjAgKiAoYS5kdiArIDIuMCAqIChiLmR2ICsgYy5kdikgKyBkLmR2KTtcbiAgICBzdGF0ZS54ID0gc3RhdGUueCArIGR4ZHQgKiBkdDtcbiAgICBzdGF0ZS52ID0gc3RhdGUudiArIGR2ZHQgKiBkdDtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gc3ByaW5nUks0RmFjdG9yeSh0ZW5zaW9uLCBmcmljdGlvbiwgZHVyYXRpb24pIHtcbiAgICB2YXIgaW5pdFN0YXRlID0ge1xuICAgICAgeDogLTEsXG4gICAgICB2OiAwLFxuICAgICAgdGVuc2lvbjogbnVsbCxcbiAgICAgIGZyaWN0aW9uOiBudWxsXG4gICAgfSxcbiAgICAgICAgcGF0aCA9IFswXSxcbiAgICAgICAgdGltZV9sYXBzZWQgPSAwLFxuICAgICAgICB0b2xlcmFuY2UgPSAxIC8gMTAwMDAsXG4gICAgICAgIERUID0gMTYgLyAxMDAwLFxuICAgICAgICBoYXZlX2R1cmF0aW9uLFxuICAgICAgICBkdCxcbiAgICAgICAgbGFzdF9zdGF0ZTtcbiAgICB0ZW5zaW9uID0gcGFyc2VGbG9hdCh0ZW5zaW9uKSB8fCA1MDA7XG4gICAgZnJpY3Rpb24gPSBwYXJzZUZsb2F0KGZyaWN0aW9uKSB8fCAyMDtcbiAgICBkdXJhdGlvbiA9IGR1cmF0aW9uIHx8IG51bGw7XG4gICAgaW5pdFN0YXRlLnRlbnNpb24gPSB0ZW5zaW9uO1xuICAgIGluaXRTdGF0ZS5mcmljdGlvbiA9IGZyaWN0aW9uO1xuICAgIGhhdmVfZHVyYXRpb24gPSBkdXJhdGlvbiAhPT0gbnVsbDtcbiAgICAvKiBDYWxjdWxhdGUgdGhlIGFjdHVhbCB0aW1lIGl0IHRha2VzIGZvciB0aGlzIGFuaW1hdGlvbiB0byBjb21wbGV0ZSB3aXRoIHRoZSBwcm92aWRlZCBjb25kaXRpb25zLiAqL1xuXG4gICAgaWYgKGhhdmVfZHVyYXRpb24pIHtcbiAgICAgIC8qIFJ1biB0aGUgc2ltdWxhdGlvbiB3aXRob3V0IGEgZHVyYXRpb24uICovXG4gICAgICB0aW1lX2xhcHNlZCA9IHNwcmluZ1JLNEZhY3RvcnkodGVuc2lvbiwgZnJpY3Rpb24pO1xuICAgICAgLyogQ29tcHV0ZSB0aGUgYWRqdXN0ZWQgdGltZSBkZWx0YS4gKi9cblxuICAgICAgZHQgPSB0aW1lX2xhcHNlZCAvIGR1cmF0aW9uICogRFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGR0ID0gRFQ7XG4gICAgfVxuXG4gICAgZm9yICg7Oykge1xuICAgICAgLyogTmV4dC9zdGVwIGZ1bmN0aW9uIC4qL1xuICAgICAgbGFzdF9zdGF0ZSA9IHNwcmluZ0ludGVncmF0ZVN0YXRlKGxhc3Rfc3RhdGUgfHwgaW5pdFN0YXRlLCBkdCk7XG4gICAgICAvKiBTdG9yZSB0aGUgcG9zaXRpb24uICovXG5cbiAgICAgIHBhdGgucHVzaCgxICsgbGFzdF9zdGF0ZS54KTtcbiAgICAgIHRpbWVfbGFwc2VkICs9IDE2O1xuICAgICAgLyogSWYgdGhlIGNoYW5nZSB0aHJlc2hvbGQgaXMgcmVhY2hlZCwgYnJlYWsuICovXG5cbiAgICAgIGlmICghKE1hdGguYWJzKGxhc3Rfc3RhdGUueCkgPiB0b2xlcmFuY2UgJiYgTWF0aC5hYnMobGFzdF9zdGF0ZS52KSA+IHRvbGVyYW5jZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIElmIGR1cmF0aW9uIGlzIG5vdCBkZWZpbmVkLCByZXR1cm4gdGhlIGFjdHVhbCB0aW1lIHJlcXVpcmVkIGZvciBjb21wbGV0aW5nIHRoaXMgYW5pbWF0aW9uLiBPdGhlcndpc2UsIHJldHVybiBhIGNsb3N1cmUgdGhhdCBob2xkcyB0aGVcbiAgICAgICBjb21wdXRlZCBwYXRoIGFuZCByZXR1cm5zIGEgc25hcHNob3Qgb2YgdGhlIHBvc2l0aW9uIGFjY29yZGluZyB0byBhIGdpdmVuIHBlcmNlbnRDb21wbGV0ZS4gKi9cblxuXG4gICAgcmV0dXJuICFoYXZlX2R1cmF0aW9uID8gdGltZV9sYXBzZWQgOiBmdW5jdGlvbiAocGVyY2VudENvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gcGF0aFtwZXJjZW50Q29tcGxldGUgKiAocGF0aC5sZW5ndGggLSAxKSB8IDBdO1xuICAgIH07XG4gIH07XG59KCk7XG5cbnZhciBjdWJpY0JlemllciA9IGZ1bmN0aW9uIGN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKSB7XG4gIHZhciBiZXppZXIgPSBnZW5lcmF0ZUN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwZXJjZW50KSB7XG4gICAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGJlemllcihwZXJjZW50KTtcbiAgfTtcbn07XG5cbnZhciBlYXNpbmdzID0ge1xuICAnbGluZWFyJzogZnVuY3Rpb24gbGluZWFyKHN0YXJ0LCBlbmQsIHBlcmNlbnQpIHtcbiAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogcGVyY2VudDtcbiAgfSxcbiAgLy8gZGVmYXVsdCBlYXNpbmdzXG4gICdlYXNlJzogY3ViaWNCZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSxcbiAgJ2Vhc2UtaW4nOiBjdWJpY0JlemllcigwLjQyLCAwLCAxLCAxKSxcbiAgJ2Vhc2Utb3V0JzogY3ViaWNCZXppZXIoMCwgMCwgMC41OCwgMSksXG4gICdlYXNlLWluLW91dCc6IGN1YmljQmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpLFxuICAvLyBzaW5lXG4gICdlYXNlLWluLXNpbmUnOiBjdWJpY0JlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpLFxuICAnZWFzZS1vdXQtc2luZSc6IGN1YmljQmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSksXG4gICdlYXNlLWluLW91dC1zaW5lJzogY3ViaWNCZXppZXIoMC40NDUsIDAuMDUsIDAuNTUsIDAuOTUpLFxuICAvLyBxdWFkXG4gICdlYXNlLWluLXF1YWQnOiBjdWJpY0JlemllcigwLjU1LCAwLjA4NSwgMC42OCwgMC41MyksXG4gICdlYXNlLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICdlYXNlLWluLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSksXG4gIC8vIGN1YmljXG4gICdlYXNlLWluLWN1YmljJzogY3ViaWNCZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KSxcbiAgJ2Vhc2Utb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSxcbiAgJ2Vhc2UtaW4tb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSksXG4gIC8vIHF1YXJ0XG4gICdlYXNlLWluLXF1YXJ0JzogY3ViaWNCZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSxcbiAgJ2Vhc2Utb3V0LXF1YXJ0JzogY3ViaWNCZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpLFxuICAnZWFzZS1pbi1vdXQtcXVhcnQnOiBjdWJpY0JlemllcigwLjc3LCAwLCAwLjE3NSwgMSksXG4gIC8vIHF1aW50XG4gICdlYXNlLWluLXF1aW50JzogY3ViaWNCZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KSxcbiAgJ2Vhc2Utb3V0LXF1aW50JzogY3ViaWNCZXppZXIoMC4yMywgMSwgMC4zMiwgMSksXG4gICdlYXNlLWluLW91dC1xdWludCc6IGN1YmljQmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpLFxuICAvLyBleHBvXG4gICdlYXNlLWluLWV4cG8nOiBjdWJpY0JlemllcigwLjk1LCAwLjA1LCAwLjc5NSwgMC4wMzUpLFxuICAnZWFzZS1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpLFxuICAnZWFzZS1pbi1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDEsIDAsIDAsIDEpLFxuICAvLyBjaXJjXG4gICdlYXNlLWluLWNpcmMnOiBjdWJpY0JlemllcigwLjYsIDAuMDQsIDAuOTgsIDAuMzM1KSxcbiAgJ2Vhc2Utb3V0LWNpcmMnOiBjdWJpY0JlemllcigwLjA3NSwgMC44MiwgMC4xNjUsIDEpLFxuICAnZWFzZS1pbi1vdXQtY2lyYyc6IGN1YmljQmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44NiksXG4gIC8vIHVzZXIgcGFyYW0gZWFzaW5ncy4uLlxuICAnc3ByaW5nJzogZnVuY3Rpb24gc3ByaW5nKHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbikge1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gY2FuJ3QgZ2V0IGEgc3ByaW5nIHcvIGR1cmF0aW9uIDBcbiAgICAgIHJldHVybiBlYXNpbmdzLmxpbmVhcjsgLy8gZHVyYXRpb24gMCA9PiBqdW1wIHRvIGVuZCBzbyBpbXBsIGRvZXNuJ3QgbWF0dGVyXG4gICAgfVxuXG4gICAgdmFyIHNwcmluZyA9IGdlbmVyYXRlU3ByaW5nUks0KHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwZXJjZW50KSB7XG4gICAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogc3ByaW5nKHBlcmNlbnQpO1xuICAgIH07XG4gIH0sXG4gICdjdWJpYy1iZXppZXInOiBjdWJpY0JlemllclxufTtcblxuZnVuY3Rpb24gZ2V0RWFzZWRWYWx1ZSh0eXBlLCBzdGFydCwgZW5kLCBwZXJjZW50LCBlYXNpbmdGbikge1xuICBpZiAocGVyY2VudCA9PT0gMSkge1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICB2YXIgdmFsID0gZWFzaW5nRm4oc3RhcnQsIGVuZCwgcGVyY2VudCk7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAodHlwZS5yb3VuZFZhbHVlIHx8IHR5cGUuY29sb3IpIHtcbiAgICB2YWwgPSBNYXRoLnJvdW5kKHZhbCk7XG4gIH1cblxuICBpZiAodHlwZS5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbCA9IE1hdGgubWF4KHZhbCwgdHlwZS5taW4pO1xuICB9XG5cbiAgaWYgKHR5cGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWwgPSBNYXRoLm1pbih2YWwsIHR5cGUubWF4KTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlKHByb3AsIHNwZWMpIHtcbiAgaWYgKHByb3AucGZWYWx1ZSAhPSBudWxsIHx8IHByb3AudmFsdWUgIT0gbnVsbCkge1xuICAgIGlmIChwcm9wLnBmVmFsdWUgIT0gbnVsbCAmJiAoc3BlYyA9PSBudWxsIHx8IHNwZWMudHlwZS51bml0cyAhPT0gJyUnKSkge1xuICAgICAgcmV0dXJuIHByb3AucGZWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb3AudmFsdWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcm9wO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVhc2Uoc3RhcnRQcm9wLCBlbmRQcm9wLCBwZXJjZW50LCBlYXNpbmdGbiwgcHJvcFNwZWMpIHtcbiAgdmFyIHR5cGUgPSBwcm9wU3BlYyAhPSBudWxsID8gcHJvcFNwZWMudHlwZSA6IG51bGw7XG5cbiAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgcGVyY2VudCA9IDA7XG4gIH0gZWxzZSBpZiAocGVyY2VudCA+IDEpIHtcbiAgICBwZXJjZW50ID0gMTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IGdldFZhbHVlKHN0YXJ0UHJvcCwgcHJvcFNwZWMpO1xuICB2YXIgZW5kID0gZ2V0VmFsdWUoZW5kUHJvcCwgcHJvcFNwZWMpO1xuXG4gIGlmIChudW1iZXIoc3RhcnQpICYmIG51bWJlcihlbmQpKSB7XG4gICAgcmV0dXJuIGdldEVhc2VkVmFsdWUodHlwZSwgc3RhcnQsIGVuZCwgcGVyY2VudCwgZWFzaW5nRm4pO1xuICB9IGVsc2UgaWYgKGFycmF5KHN0YXJ0KSAmJiBhcnJheShlbmQpKSB7XG4gICAgdmFyIGVhc2VkQXJyID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVuZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNpID0gc3RhcnRbaV07XG4gICAgICB2YXIgZWkgPSBlbmRbaV07XG5cbiAgICAgIGlmIChzaSAhPSBudWxsICYmIGVpICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHZhbCA9IGdldEVhc2VkVmFsdWUodHlwZSwgc2ksIGVpLCBwZXJjZW50LCBlYXNpbmdGbik7XG4gICAgICAgIGVhc2VkQXJyLnB1c2godmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVhc2VkQXJyLnB1c2goZWkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlYXNlZEFycjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHN0ZXAoc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICB2YXIgaXNFbGVzID0gIWlzQ29yZTtcbiAgdmFyIF9wID0gc2VsZi5fcHJpdmF0ZTtcbiAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuICB2YXIgcEVhc2luZyA9IGFuaV9wLmVhc2luZztcbiAgdmFyIHN0YXJ0VGltZSA9IGFuaV9wLnN0YXJ0VGltZTtcbiAgdmFyIGN5ID0gaXNDb3JlID8gc2VsZiA6IHNlbGYuY3koKTtcbiAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcblxuICBpZiAoIWFuaV9wLmVhc2luZ0ltcGwpIHtcbiAgICBpZiAocEVhc2luZyA9PSBudWxsKSB7XG4gICAgICAvLyB1c2UgZGVmYXVsdFxuICAgICAgYW5pX3AuZWFzaW5nSW1wbCA9IGVhc2luZ3NbJ2xpbmVhciddO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGVuIGRlZmluZSB3LyBuYW1lXG4gICAgICB2YXIgZWFzaW5nVmFscztcblxuICAgICAgaWYgKHN0cmluZyhwRWFzaW5nKSkge1xuICAgICAgICB2YXIgZWFzaW5nUHJvcCA9IHN0eWxlLnBhcnNlKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIHBFYXNpbmcpO1xuICAgICAgICBlYXNpbmdWYWxzID0gZWFzaW5nUHJvcC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZW4gYXNzdW1lIHByZXBhcnNlZCBhcnJheVxuICAgICAgICBlYXNpbmdWYWxzID0gcEVhc2luZztcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUsIGFyZ3M7XG5cbiAgICAgIGlmIChzdHJpbmcoZWFzaW5nVmFscykpIHtcbiAgICAgICAgbmFtZSA9IGVhc2luZ1ZhbHM7XG4gICAgICAgIGFyZ3MgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5hbWUgPSBlYXNpbmdWYWxzWzFdO1xuICAgICAgICBhcmdzID0gZWFzaW5nVmFscy5zbGljZSgyKS5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICByZXR1cm4gK247XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIGNyZWF0ZSB3aXRoIGFyZ3NcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzcHJpbmcnKSB7XG4gICAgICAgICAgYXJncy5wdXNoKGFuaV9wLmR1cmF0aW9uKTsgLy8gbmVlZCBkdXJhdGlvbiB0byBnZW5lcmF0ZSBzcHJpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIGFuaV9wLmVhc2luZ0ltcGwgPSBlYXNpbmdzW25hbWVdLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc3RhdGljIGltcGwgYnkgbmFtZVxuICAgICAgICBhbmlfcC5lYXNpbmdJbXBsID0gZWFzaW5nc1tuYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZWFzaW5nID0gYW5pX3AuZWFzaW5nSW1wbDtcbiAgdmFyIHBlcmNlbnQ7XG5cbiAgaWYgKGFuaV9wLmR1cmF0aW9uID09PSAwKSB7XG4gICAgcGVyY2VudCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGVyY2VudCA9IChub3cgLSBzdGFydFRpbWUpIC8gYW5pX3AuZHVyYXRpb247XG4gIH1cblxuICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICBwZXJjZW50ID0gYW5pX3AucHJvZ3Jlc3M7XG4gIH1cblxuICBpZiAocGVyY2VudCA8IDApIHtcbiAgICBwZXJjZW50ID0gMDtcbiAgfSBlbHNlIGlmIChwZXJjZW50ID4gMSkge1xuICAgIHBlcmNlbnQgPSAxO1xuICB9XG5cbiAgaWYgKGFuaV9wLmRlbGF5ID09IG51bGwpIHtcbiAgICAvLyB0aGVuIHVwZGF0ZVxuICAgIHZhciBzdGFydFBvcyA9IGFuaV9wLnN0YXJ0UG9zaXRpb247XG4gICAgdmFyIGVuZFBvcyA9IGFuaV9wLnBvc2l0aW9uO1xuXG4gICAgaWYgKGVuZFBvcyAmJiBpc0VsZXMgJiYgIXNlbGYubG9ja2VkKCkpIHtcbiAgICAgIHZhciBuZXdQb3MgPSB7fTtcblxuICAgICAgaWYgKHZhbGlkKHN0YXJ0UG9zLngsIGVuZFBvcy54KSkge1xuICAgICAgICBuZXdQb3MueCA9IGVhc2Uoc3RhcnRQb3MueCwgZW5kUG9zLngsIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZChzdGFydFBvcy55LCBlbmRQb3MueSkpIHtcbiAgICAgICAgbmV3UG9zLnkgPSBlYXNlKHN0YXJ0UG9zLnksIGVuZFBvcy55LCBwZXJjZW50LCBlYXNpbmcpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnBvc2l0aW9uKG5ld1Bvcyk7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0UGFuID0gYW5pX3Auc3RhcnRQYW47XG4gICAgdmFyIGVuZFBhbiA9IGFuaV9wLnBhbjtcbiAgICB2YXIgcGFuID0gX3AucGFuO1xuICAgIHZhciBhbmltYXRpbmdQYW4gPSBlbmRQYW4gIT0gbnVsbCAmJiBpc0NvcmU7XG5cbiAgICBpZiAoYW5pbWF0aW5nUGFuKSB7XG4gICAgICBpZiAodmFsaWQoc3RhcnRQYW4ueCwgZW5kUGFuLngpKSB7XG4gICAgICAgIHBhbi54ID0gZWFzZShzdGFydFBhbi54LCBlbmRQYW4ueCwgcGVyY2VudCwgZWFzaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkKHN0YXJ0UGFuLnksIGVuZFBhbi55KSkge1xuICAgICAgICBwYW4ueSA9IGVhc2Uoc3RhcnRQYW4ueSwgZW5kUGFuLnksIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZW1pdCgncGFuJyk7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0Wm9vbSA9IGFuaV9wLnN0YXJ0Wm9vbTtcbiAgICB2YXIgZW5kWm9vbSA9IGFuaV9wLnpvb207XG4gICAgdmFyIGFuaW1hdGluZ1pvb20gPSBlbmRab29tICE9IG51bGwgJiYgaXNDb3JlO1xuXG4gICAgaWYgKGFuaW1hdGluZ1pvb20pIHtcbiAgICAgIGlmICh2YWxpZChzdGFydFpvb20sIGVuZFpvb20pKSB7XG4gICAgICAgIF9wLnpvb20gPSBib3VuZChfcC5taW5ab29tLCBlYXNlKHN0YXJ0Wm9vbSwgZW5kWm9vbSwgcGVyY2VudCwgZWFzaW5nKSwgX3AubWF4Wm9vbSk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZW1pdCgnem9vbScpO1xuICAgIH1cblxuICAgIGlmIChhbmltYXRpbmdQYW4gfHwgYW5pbWF0aW5nWm9vbSkge1xuICAgICAgc2VsZi5lbWl0KCd2aWV3cG9ydCcpO1xuICAgIH1cblxuICAgIHZhciBwcm9wcyA9IGFuaV9wLnN0eWxlO1xuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmxlbmd0aCA+IDAgJiYgaXNFbGVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgICAgIHZhciBfbmFtZSA9IHByb3AubmFtZTtcbiAgICAgICAgdmFyIGVuZCA9IHByb3A7XG4gICAgICAgIHZhciBzdGFydCA9IGFuaV9wLnN0YXJ0U3R5bGVbX25hbWVdO1xuICAgICAgICB2YXIgcHJvcFNwZWMgPSBzdHlsZS5wcm9wZXJ0aWVzW3N0YXJ0Lm5hbWVdO1xuICAgICAgICB2YXIgZWFzZWRWYWwgPSBlYXNlKHN0YXJ0LCBlbmQsIHBlcmNlbnQsIGVhc2luZywgcHJvcFNwZWMpO1xuICAgICAgICBzdHlsZS5vdmVycmlkZUJ5cGFzcyhzZWxmLCBfbmFtZSwgZWFzZWRWYWwpO1xuICAgICAgfSAvLyBmb3IgcHJvcHNcblxuXG4gICAgICBzZWxmLmVtaXQoJ3N0eWxlJyk7XG4gICAgfSAvLyBpZlxuXG4gIH1cblxuICBhbmlfcC5wcm9ncmVzcyA9IHBlcmNlbnQ7XG4gIHJldHVybiBwZXJjZW50O1xufVxuXG5mdW5jdGlvbiB2YWxpZChzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PSBudWxsIHx8IGVuZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKG51bWJlcihzdGFydCkgJiYgbnVtYmVyKGVuZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc3RhcnRBbmltYXRpb24oc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG4gIGFuaV9wLnN0YXJ0ZWQgPSB0cnVlO1xuICBhbmlfcC5zdGFydFRpbWUgPSBub3cgLSBhbmlfcC5wcm9ncmVzcyAqIGFuaV9wLmR1cmF0aW9uO1xufVxuXG5mdW5jdGlvbiBzdGVwQWxsKG5vdywgY3kpIHtcbiAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5hbmlFbGVzO1xuICB2YXIgZG9uZUVsZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzdGVwT25lKGVsZSwgaXNDb3JlKSB7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciBjdXJyZW50ID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG4gICAgdmFyIHF1ZXVlID0gX3AuYW5pbWF0aW9uLnF1ZXVlO1xuICAgIHZhciByYW5BbmlzID0gZmFsc2U7IC8vIGlmIG5vdGhpbmcgY3VycmVudGx5IGFuaW1hdGluZywgZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBxdWV1ZVxuXG4gICAgaWYgKGN1cnJlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgbmV4dCA9IHF1ZXVlLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGN1cnJlbnQucHVzaChuZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2FsbGJhY2tzID0gZnVuY3Rpb24gY2FsbGJhY2tzKF9jYWxsYmFja3MpIHtcbiAgICAgIGZvciAodmFyIGogPSBfY2FsbGJhY2tzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBjYiA9IF9jYWxsYmFja3Nbal07XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG5cbiAgICAgIF9jYWxsYmFja3Muc3BsaWNlKDAsIF9jYWxsYmFja3MubGVuZ3RoKTtcbiAgICB9OyAvLyBzdGVwIGFuZCByZW1vdmUgaWYgZG9uZVxuXG5cbiAgICBmb3IgKHZhciBpID0gY3VycmVudC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGFuaSA9IGN1cnJlbnRbaV07XG4gICAgICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChhbmlfcC5zdG9wcGVkKSB7XG4gICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgYW5pX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGNhbGxiYWNrcyhhbmlfcC5mcmFtZXMpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbmlfcC5wbGF5aW5nICYmICFhbmlfcC5hcHBseWluZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gYW4gYXBwbHkoKSB3aGlsZSBwbGF5aW5nIHNob3VsZG4ndCBkbyBhbnl0aGluZ1xuXG5cbiAgICAgIGlmIChhbmlfcC5wbGF5aW5nICYmIGFuaV9wLmFwcGx5aW5nKSB7XG4gICAgICAgIGFuaV9wLmFwcGx5aW5nID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghYW5pX3Auc3RhcnRlZCkge1xuICAgICAgICBzdGFydEFuaW1hdGlvbihlbGUsIGFuaSwgbm93KTtcbiAgICAgIH1cblxuICAgICAgc3RlcChlbGUsIGFuaSwgbm93LCBpc0NvcmUpO1xuXG4gICAgICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICAgICAgYW5pX3AuYXBwbHlpbmcgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2tzKGFuaV9wLmZyYW1lcyk7XG5cbiAgICAgIGlmIChhbmlfcC5zdGVwICE9IG51bGwpIHtcbiAgICAgICAgYW5pX3Auc3RlcChub3cpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW5pLmNvbXBsZXRlZCgpKSB7XG4gICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgYW5pX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGNhbGxiYWNrcyhhbmlfcC5jb21wbGV0ZXMpO1xuICAgICAgfVxuXG4gICAgICByYW5BbmlzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ29yZSAmJiBjdXJyZW50Lmxlbmd0aCA9PT0gMCAmJiBxdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGRvbmVFbGVzLnB1c2goZWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmFuQW5pcztcbiAgfSAvLyBzdGVwRWxlbWVudFxuICAvLyBoYW5kbGUgYWxsIGVsZXNcblxuXG4gIHZhciByYW5FbGVBbmkgPSBmYWxzZTtcblxuICBmb3IgKHZhciBlID0gMDsgZSA8IGVsZXMubGVuZ3RoOyBlKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tlXTtcbiAgICB2YXIgaGFuZGxlZFRoaXNFbGUgPSBzdGVwT25lKGVsZSk7XG4gICAgcmFuRWxlQW5pID0gcmFuRWxlQW5pIHx8IGhhbmRsZWRUaGlzRWxlO1xuICB9IC8vIGVhY2ggZWxlbWVudFxuXG5cbiAgdmFyIHJhbkNvcmVBbmkgPSBzdGVwT25lKGN5LCB0cnVlKTsgLy8gbm90aWZ5IHJlbmRlcmVyXG5cbiAgaWYgKHJhbkVsZUFuaSB8fCByYW5Db3JlQW5pKSB7XG4gICAgaWYgKGVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY3kubm90aWZ5KCdkcmF3JywgZWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgIH1cbiAgfSAvLyByZW1vdmUgZWxlbWVudHMgZnJvbSBsaXN0IG9mIGN1cnJlbnRseSBhbmltYXRpbmcgaWYgaXRzIHF1ZXVlcyBhcmUgZW1wdHlcblxuXG4gIGVsZXMudW5tZXJnZShkb25lRWxlcyk7XG4gIGN5LmVtaXQoJ3N0ZXAnKTtcbn0gLy8gc3RlcEFsbFxuXG52YXIgY29yZWZuJDEgPSB7XG4gIC8vIHB1bGwgaW4gYW5pbWF0aW9uIGZ1bmN0aW9uc1xuICBhbmltYXRlOiBkZWZpbmUkMy5hbmltYXRlKCksXG4gIGFuaW1hdGlvbjogZGVmaW5lJDMuYW5pbWF0aW9uKCksXG4gIGFuaW1hdGVkOiBkZWZpbmUkMy5hbmltYXRlZCgpLFxuICBjbGVhclF1ZXVlOiBkZWZpbmUkMy5jbGVhclF1ZXVlKCksXG4gIGRlbGF5OiBkZWZpbmUkMy5kZWxheSgpLFxuICBkZWxheUFuaW1hdGlvbjogZGVmaW5lJDMuZGVsYXlBbmltYXRpb24oKSxcbiAgc3RvcDogZGVmaW5lJDMuc3RvcCgpLFxuICBhZGRUb0FuaW1hdGlvblBvb2w6IGZ1bmN0aW9uIGFkZFRvQW5pbWF0aW9uUG9vbChlbGVzKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuXG5cbiAgICBjeS5fcHJpdmF0ZS5hbmlFbGVzLm1lcmdlKGVsZXMpO1xuICB9LFxuICBzdG9wQW5pbWF0aW9uTG9vcDogZnVuY3Rpb24gc3RvcEFuaW1hdGlvbkxvb3AoKSB7XG4gICAgdGhpcy5fcHJpdmF0ZS5hbmltYXRpb25zUnVubmluZyA9IGZhbHNlO1xuICB9LFxuICBzdGFydEFuaW1hdGlvbkxvb3A6IGZ1bmN0aW9uIHN0YXJ0QW5pbWF0aW9uTG9vcCgpIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIGN5Ll9wcml2YXRlLmFuaW1hdGlvbnNSdW5uaW5nID0gdHJ1ZTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuICAgIC8vIE5CIHRoZSBhbmltYXRpb24gbG9vcCB3aWxsIGV4ZWMgaW4gaGVhZGxlc3MgZW52aXJvbm1lbnRzIGlmIHN0eWxlIGVuYWJsZWRcbiAgICAvLyBhbmQgZXhwbGljaXQgY3kuZGVzdHJveSgpIGlzIG5lY2Vzc2FyeSB0byBzdG9wIHRoZSBsb29wXG5cblxuICAgIGZ1bmN0aW9uIGhlYWRsZXNzU3RlcCgpIHtcbiAgICAgIGlmICghY3kuX3ByaXZhdGUuYW5pbWF0aW9uc1J1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gYW5pbWF0aW9uU3RlcChub3cpIHtcbiAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgICAgaGVhZGxlc3NTdGVwKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVuZGVyZXIgPSBjeS5yZW5kZXJlcigpO1xuXG4gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLmJlZm9yZVJlbmRlcikge1xuICAgICAgLy8gbGV0IHRoZSByZW5kZXJlciBzY2hlZHVsZSBhbmltYXRpb25zXG4gICAgICByZW5kZXJlci5iZWZvcmVSZW5kZXIoZnVuY3Rpb24gcmVuZGVyZXJBbmltYXRpb25TdGVwKHdpbGxEcmF3LCBub3cpIHtcbiAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgIH0sIHJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuYW5pbWF0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1hbmFnZSB0aGUgYW5pbWF0aW9uIGxvb3Agb3Vyc2VsdmVzXG4gICAgICBoZWFkbGVzc1N0ZXAoKTsgLy8gZmlyc3QgY2FsbFxuICAgIH1cbiAgfVxufTtcblxudmFyIGVtaXR0ZXJPcHRpb25zJDEgPSB7XG4gIHF1YWxpZmllckNvbXBhcmU6IGZ1bmN0aW9uIHF1YWxpZmllckNvbXBhcmUoc2VsZWN0b3IxLCBzZWxlY3RvcjIpIHtcbiAgICBpZiAoc2VsZWN0b3IxID09IG51bGwgfHwgc2VsZWN0b3IyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBzZWxlY3RvcjEgPT0gbnVsbCAmJiBzZWxlY3RvcjIgPT0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNlbGVjdG9yMS5zYW1lVGV4dChzZWxlY3RvcjIpO1xuICAgIH1cbiAgfSxcbiAgZXZlbnRNYXRjaGVzOiBmdW5jdGlvbiBldmVudE1hdGNoZXMoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHZhciBzZWxlY3RvciA9IGxpc3RlbmVyLnF1YWxpZmllcjtcblxuICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY3kgIT09IGV2ZW50T2JqLnRhcmdldCAmJiBlbGVtZW50KGV2ZW50T2JqLnRhcmdldCkgJiYgc2VsZWN0b3IubWF0Y2hlcyhldmVudE9iai50YXJnZXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBhZGRFdmVudEZpZWxkczogZnVuY3Rpb24gYWRkRXZlbnRGaWVsZHMoY3ksIGV2dCkge1xuICAgIGV2dC5jeSA9IGN5O1xuICAgIGV2dC50YXJnZXQgPSBjeTtcbiAgfSxcbiAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHJldHVybiBsaXN0ZW5lci5xdWFsaWZpZXIgIT0gbnVsbCA/IGV2ZW50T2JqLnRhcmdldCA6IGN5O1xuICB9XG59O1xuXG52YXIgYXJnU2VsZWN0b3IkMSA9IGZ1bmN0aW9uIGFyZ1NlbGVjdG9yKGFyZykge1xuICBpZiAoc3RyaW5nKGFyZykpIHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdG9yKGFyZyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfVxufTtcblxudmFyIGVsZXNmbiR2ID0ge1xuICBjcmVhdGVFbWl0dGVyOiBmdW5jdGlvbiBjcmVhdGVFbWl0dGVyKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgIF9wLmVtaXR0ZXIgPSBuZXcgRW1pdHRlcihlbWl0dGVyT3B0aW9ucyQxLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZW1pdHRlcjogZnVuY3Rpb24gZW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICB9LFxuICBvbjogZnVuY3Rpb24gb24oZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICB0aGlzLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZW1pdHRlcigpLnJlbW92ZUxpc3RlbmVyKGV2ZW50cywgYXJnU2VsZWN0b3IkMShzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG9uZTogZnVuY3Rpb24gb25lKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5lbWl0dGVyKCkub25lKGV2ZW50cywgYXJnU2VsZWN0b3IkMShzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgb25jZTogZnVuY3Rpb24gb25jZShldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGVtaXQ6IGZ1bmN0aW9uIGVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcykge1xuICAgIHRoaXMuZW1pdHRlcigpLmVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGVtaXRBbmROb3RpZnk6IGZ1bmN0aW9uIGVtaXRBbmROb3RpZnkoZXZlbnQsIGVsZXMpIHtcbiAgICB0aGlzLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMubm90aWZ5KGV2ZW50LCBlbGVzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTtcbmRlZmluZSQzLmV2ZW50QWxpYXNlc09uKGVsZXNmbiR2KTtcblxudmFyIGNvcmVmbiQyID0ge1xuICBwbmc6IGZ1bmN0aW9uIHBuZyhvcHRpb25zKSB7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gcmVuZGVyZXIucG5nKG9wdGlvbnMpO1xuICB9LFxuICBqcGc6IGZ1bmN0aW9uIGpwZyhvcHRpb25zKSB7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmJnID0gb3B0aW9ucy5iZyB8fCAnI2ZmZic7XG4gICAgcmV0dXJuIHJlbmRlcmVyLmpwZyhvcHRpb25zKTtcbiAgfVxufTtcbmNvcmVmbiQyLmpwZWcgPSBjb3JlZm4kMi5qcGc7XG5cbnZhciBjb3JlZm4kMyA9IHtcbiAgbGF5b3V0OiBmdW5jdGlvbiBsYXlvdXQob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXM7XG5cbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICBlcnJvcignTGF5b3V0IG9wdGlvbnMgbXVzdCBiZSBzcGVjaWZpZWQgdG8gbWFrZSBhIGxheW91dCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5hbWUgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ0EgYG5hbWVgIG11c3QgYmUgc3BlY2lmaWVkIHRvIG1ha2UgYSBsYXlvdXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICB2YXIgTGF5b3V0ID0gY3kuZXh0ZW5zaW9uKCdsYXlvdXQnLCBuYW1lKTtcblxuICAgIGlmIChMYXlvdXQgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ05vIHN1Y2ggbGF5b3V0IGAnICsgbmFtZSArICdgIGZvdW5kLiAgRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD8nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZWxlcztcblxuICAgIGlmIChzdHJpbmcob3B0aW9ucy5lbGVzKSkge1xuICAgICAgZWxlcyA9IGN5LiQob3B0aW9ucy5lbGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlcyA9IG9wdGlvbnMuZWxlcyAhPSBudWxsID8gb3B0aW9ucy5lbGVzIDogY3kuJCgpO1xuICAgIH1cblxuICAgIHZhciBsYXlvdXQgPSBuZXcgTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgY3k6IGN5LFxuICAgICAgZWxlczogZWxlc1xuICAgIH0pKTtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9XG59O1xuY29yZWZuJDMuY3JlYXRlTGF5b3V0ID0gY29yZWZuJDMubWFrZUxheW91dCA9IGNvcmVmbiQzLmxheW91dDtcblxudmFyIGNvcmVmbiQ0ID0ge1xuICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeShldmVudE5hbWUsIGV2ZW50RWxlcykge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAodGhpcy5iYXRjaGluZygpKSB7XG4gICAgICBfcC5iYXRjaE5vdGlmaWNhdGlvbnMgPSBfcC5iYXRjaE5vdGlmaWNhdGlvbnMgfHwge307XG4gICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdID0gX3AuYmF0Y2hOb3RpZmljYXRpb25zW2V2ZW50TmFtZV0gfHwgdGhpcy5jb2xsZWN0aW9uKCk7XG5cbiAgICAgIGlmIChldmVudEVsZXMgIT0gbnVsbCkge1xuICAgICAgICBlbGVzLm1lcmdlKGV2ZW50RWxlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjsgLy8gbm90aWZpY2F0aW9ucyBhcmUgZGlzYWJsZWQgZHVyaW5nIGJhdGNoaW5nXG4gICAgfVxuXG4gICAgaWYgKCFfcC5ub3RpZmljYXRpb25zRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZXhpdCBvbiBkaXNhYmxlZFxuXG5cbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyKCk7IC8vIGV4aXQgaWYgZGVzdHJveSgpIGNhbGxlZCBvbiBjb3JlIG9yIHJlbmRlcmVyIGluIGJldHdlZW4gZnJhbWVzICMxNDk5ICMxNTI4XG5cbiAgICBpZiAodGhpcy5kZXN0cm95ZWQoKSB8fCAhcmVuZGVyZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lLCBldmVudEVsZXMpO1xuICB9LFxuICBub3RpZmljYXRpb25zOiBmdW5jdGlvbiBub3RpZmljYXRpb25zKGJvb2wpIHtcbiAgICB2YXIgcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoYm9vbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcC5ub3RpZmljYXRpb25zRW5hYmxlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcC5ub3RpZmljYXRpb25zRW5hYmxlZCA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG5vTm90aWZpY2F0aW9uczogZnVuY3Rpb24gbm9Ob3RpZmljYXRpb25zKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zKGZhbHNlKTtcbiAgICBjYWxsYmFjaygpO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgfSxcbiAgYmF0Y2hpbmc6IGZ1bmN0aW9uIGJhdGNoaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmJhdGNoQ291bnQgPiAwO1xuICB9LFxuICBzdGFydEJhdGNoOiBmdW5jdGlvbiBzdGFydEJhdGNoKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PSBudWxsKSB7XG4gICAgICBfcC5iYXRjaENvdW50ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PT0gMCkge1xuICAgICAgX3AuYmF0Y2hTdHlsZUVsZXMgPSB0aGlzLmNvbGxlY3Rpb24oKTtcbiAgICAgIF9wLmJhdGNoTm90aWZpY2F0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIF9wLmJhdGNoQ291bnQrKztcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZW5kQmF0Y2g6IGZ1bmN0aW9uIGVuZEJhdGNoKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgX3AuYmF0Y2hDb3VudC0tO1xuXG4gICAgaWYgKF9wLmJhdGNoQ291bnQgPT09IDApIHtcbiAgICAgIC8vIHVwZGF0ZSBzdHlsZSBmb3IgZGlydHkgZWxlc1xuICAgICAgX3AuYmF0Y2hTdHlsZUVsZXMudXBkYXRlU3R5bGUoKTtcblxuICAgICAgdmFyIHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcigpOyAvLyBub3RpZnkgdGhlIHJlbmRlcmVyIG9mIHF1ZXVlZCBlbGVzIGFuZCBldmVudCB0eXBlc1xuXG4gICAgICBPYmplY3Qua2V5cyhfcC5iYXRjaE5vdGlmaWNhdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdO1xuXG4gICAgICAgIGlmIChlbGVzLmVtcHR5KCkpIHtcbiAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lLCBlbGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGJhdGNoOiBmdW5jdGlvbiBiYXRjaChjYWxsYmFjaykge1xuICAgIHRoaXMuc3RhcnRCYXRjaCgpO1xuICAgIGNhbGxiYWNrKCk7XG4gICAgdGhpcy5lbmRCYXRjaCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgYmF0Y2hEYXRhOiBmdW5jdGlvbiBiYXRjaERhdGEobWFwKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5iYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaWRzID0gT2JqZWN0LmtleXMobWFwKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGlkID0gaWRzW2ldO1xuICAgICAgICB2YXIgZGF0YSA9IG1hcFtpZF07XG4gICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIGVsZS5kYXRhKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuXG52YXIgcmVuZGVyZXJEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgaGlkZUVkZ2VzT25WaWV3cG9ydDogZmFsc2UsXG4gIHRleHR1cmVPblZpZXdwb3J0OiBmYWxzZSxcbiAgbW90aW9uQmx1cjogZmFsc2UsXG4gIG1vdGlvbkJsdXJPcGFjaXR5OiAwLjA1LFxuICBwaXhlbFJhdGlvOiB1bmRlZmluZWQsXG4gIGRlc2t0b3BUYXBUaHJlc2hvbGQ6IDQsXG4gIHRvdWNoVGFwVGhyZXNob2xkOiA4LFxuICB3aGVlbFNlbnNpdGl2aXR5OiAxLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHNob3dGcHM6IGZhbHNlXG59KTtcbnZhciBjb3JlZm4kNSA9IHtcbiAgcmVuZGVyVG86IGZ1bmN0aW9uIHJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbykge1xuICAgIHZhciByID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICByLnJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbmRlcmVyOiBmdW5jdGlvbiByZW5kZXJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgfSxcbiAgZm9yY2VSZW5kZXI6IGZ1bmN0aW9uIGZvcmNlUmVuZGVyKCkge1xuICAgIHRoaXMubm90aWZ5KCdkcmF3Jyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlc2l6ZTogZnVuY3Rpb24gcmVzaXplKCkge1xuICAgIHRoaXMuaW52YWxpZGF0ZVNpemUoKTtcbiAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3Jlc2l6ZScpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBpbml0UmVuZGVyZXI6IGZ1bmN0aW9uIGluaXRSZW5kZXJlcihvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICB2YXIgUmVuZGVyZXJQcm90byA9IGN5LmV4dGVuc2lvbigncmVuZGVyZXInLCBvcHRpb25zLm5hbWUpO1xuXG4gICAgaWYgKFJlbmRlcmVyUHJvdG8gPT0gbnVsbCkge1xuICAgICAgZXJyb3IoXCJDYW4gbm90IGluaXRpYWxpc2U6IE5vIHN1Y2ggcmVuZGVyZXIgYFwiLmNvbmNhdChvcHRpb25zLm5hbWUsIFwiYCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD9cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd2FybihcIllvdSBoYXZlIHNldCBhIGN1c3RvbSB3aGVlbCBzZW5zaXRpdml0eS4gIFRoaXMgd2lsbCBtYWtlIHlvdXIgYXBwIHpvb20gdW5uYXR1cmFsbHkgd2hlbiB1c2luZyBtYWluc3RyZWFtIG1pY2UuICBZb3Ugc2hvdWxkIGNoYW5nZSB0aGlzIHZhbHVlIGZyb20gdGhlIGRlZmF1bHQgb25seSBpZiB5b3UgY2FuIGd1YXJhbnRlZSB0aGF0IGFsbCB5b3VyIHVzZXJzIHdpbGwgdXNlIHRoZSBzYW1lIGhhcmR3YXJlIGFuZCBPUyBjb25maWd1cmF0aW9uIGFzIHlvdXIgY3VycmVudCBtYWNoaW5lLlwiKTtcbiAgICB9XG5cbiAgICB2YXIgck9wdHMgPSByZW5kZXJlckRlZmF1bHRzKG9wdGlvbnMpO1xuICAgIHJPcHRzLmN5ID0gY3k7XG4gICAgY3kuX3ByaXZhdGUucmVuZGVyZXIgPSBuZXcgUmVuZGVyZXJQcm90byhyT3B0cyk7XG4gICAgdGhpcy5ub3RpZnkoJ2luaXQnKTtcbiAgfSxcbiAgZGVzdHJveVJlbmRlcmVyOiBmdW5jdGlvbiBkZXN0cm95UmVuZGVyZXIoKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBjeS5ub3RpZnkoJ2Rlc3Ryb3knKTsgLy8gZGVzdHJveSB0aGUgcmVuZGVyZXJcblxuICAgIHZhciBkb21FbGUgPSBjeS5jb250YWluZXIoKTtcblxuICAgIGlmIChkb21FbGUpIHtcbiAgICAgIGRvbUVsZS5fY3lyZWcgPSBudWxsO1xuXG4gICAgICB3aGlsZSAoZG9tRWxlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkb21FbGUucmVtb3ZlQ2hpbGQoZG9tRWxlLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN5Ll9wcml2YXRlLnJlbmRlcmVyID0gbnVsbDsgLy8gdG8gYmUgZXh0cmEgc2FmZSwgcmVtb3ZlIHRoZSByZWZcblxuICAgIGN5Lm11dGFibGVFbGVtZW50cygpLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgX3AucnNjcmF0Y2ggPSB7fTtcbiAgICAgIF9wLnJzdHlsZSA9IHt9O1xuICAgICAgX3AuYW5pbWF0aW9uLmN1cnJlbnQgPSBbXTtcbiAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgIH0pO1xuICB9LFxuICBvblJlbmRlcjogZnVuY3Rpb24gb25SZW5kZXIoZm4pIHtcbiAgICByZXR1cm4gdGhpcy5vbigncmVuZGVyJywgZm4pO1xuICB9LFxuICBvZmZSZW5kZXI6IGZ1bmN0aW9uIG9mZlJlbmRlcihmbikge1xuICAgIHJldHVybiB0aGlzLm9mZigncmVuZGVyJywgZm4pO1xuICB9XG59O1xuY29yZWZuJDUuaW52YWxpZGF0ZURpbWVuc2lvbnMgPSBjb3JlZm4kNS5yZXNpemU7XG5cbnZhciBjb3JlZm4kNiA9IHtcbiAgLy8gZ2V0IGEgY29sbGVjdGlvblxuICAvLyAtIGVtcHR5IGNvbGxlY3Rpb24gb24gbm8gYXJnc1xuICAvLyAtIGNvbGxlY3Rpb24gb2YgZWxlbWVudHMgaW4gdGhlIGdyYXBoIG9uIHNlbGVjdG9yIGFyZ1xuICAvLyAtIGd1YXJhbnRlZSBhIHJldHVybmVkIGNvbGxlY3Rpb24gd2hlbiBlbGVtZW50cyBvciBjb2xsZWN0aW9uIHNwZWNpZmllZFxuICBjb2xsZWN0aW9uOiBmdW5jdGlvbiBjb2xsZWN0aW9uKGVsZXMsIG9wdHMpIHtcbiAgICBpZiAoc3RyaW5nKGVsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy4kKGVsZXMpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihlbGVzKSkge1xuICAgICAgcmV0dXJuIGVsZXMuY29sbGVjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkoZWxlcykpIHtcbiAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLCBlbGVzLCBvcHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24odGhpcyk7XG4gIH0sXG4gIG5vZGVzOiBmdW5jdGlvbiBub2RlcyhzZWxlY3Rvcikge1xuICAgIHZhciBub2RlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gbm9kZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH0sXG4gIGVkZ2VzOiBmdW5jdGlvbiBlZGdlcyhzZWxlY3Rvcikge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzRWRnZSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRnZXM7XG4gIH0sXG4gIC8vIHNlYXJjaCB0aGUgZ3JhcGggbGlrZSBqUXVlcnlcbiAgJDogZnVuY3Rpb24gJChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcblxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIGVsZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVsZXMuc3Bhd25TZWxmKCk7XG4gICAgfVxuICB9LFxuICBtdXRhYmxlRWxlbWVudHM6IGZ1bmN0aW9uIG11dGFibGVFbGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcbiAgfVxufTsgLy8gYWxpYXNlc1xuXG5jb3JlZm4kNi5lbGVtZW50cyA9IGNvcmVmbiQ2LmZpbHRlciA9IGNvcmVmbiQ2LiQ7XG5cbnZhciBzdHlmbiA9IHt9OyAvLyBrZXlzIGZvciBzdHlsZSBibG9ja3MsIGUuZy4gdHRmZnR0XG5cbnZhciBUUlVFID0gJ3QnO1xudmFyIEZBTFNFID0gJ2YnOyAvLyAocG90ZW50aWFsbHkgZXhwZW5zaXZlIGNhbGN1bGF0aW9uKVxuLy8gYXBwbHkgdGhlIHN0eWxlIHRvIHRoZSBlbGVtZW50IGJhc2VkIG9uXG4vLyAtIGl0cyBieXBhc3Ncbi8vIC0gd2hhdCBzZWxlY3RvcnMgbWF0Y2ggaXRcblxuc3R5Zm4uYXBwbHkgPSBmdW5jdGlvbiAoZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBfcCA9IHNlbGYuX3ByaXZhdGU7XG4gIHZhciBjeSA9IF9wLmN5O1xuICB2YXIgdXBkYXRlZEVsZXMgPSBjeS5jb2xsZWN0aW9uKCk7XG5cbiAgZm9yICh2YXIgaWUgPSAwOyBpZSA8IGVsZXMubGVuZ3RoOyBpZSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaWVdO1xuICAgIHZhciBjeHRNZXRhID0gc2VsZi5nZXRDb250ZXh0TWV0YShlbGUpO1xuXG4gICAgaWYgKGN4dE1ldGEuZW1wdHkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBjeHRTdHlsZSA9IHNlbGYuZ2V0Q29udGV4dFN0eWxlKGN4dE1ldGEpO1xuICAgIHZhciBhcHAgPSBzZWxmLmFwcGx5Q29udGV4dFN0eWxlKGN4dE1ldGEsIGN4dFN0eWxlLCBlbGUpO1xuXG4gICAgaWYgKGVsZS5fcHJpdmF0ZS5hcHBsaWVkSW5pdFN0eWxlKSB7XG4gICAgICBzZWxmLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgYXBwLmRpZmZQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZS5fcHJpdmF0ZS5hcHBsaWVkSW5pdFN0eWxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgaGludHNEaWZmID0gc2VsZi51cGRhdGVTdHlsZUhpbnRzKGVsZSk7XG5cbiAgICBpZiAoaGludHNEaWZmKSB7XG4gICAgICB1cGRhdGVkRWxlcy5wdXNoKGVsZSk7XG4gICAgfVxuICB9IC8vIGZvciBlbGVtZW50c1xuXG5cbiAgcmV0dXJuIHVwZGF0ZWRFbGVzO1xufTtcblxuc3R5Zm4uZ2V0UHJvcGVydGllc0RpZmYgPSBmdW5jdGlvbiAob2xkQ3h0S2V5LCBuZXdDeHRLZXkpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY2FjaGUgPSBzZWxmLl9wcml2YXRlLnByb3BEaWZmcyA9IHNlbGYuX3ByaXZhdGUucHJvcERpZmZzIHx8IHt9O1xuICB2YXIgZHVhbEN4dEtleSA9IG9sZEN4dEtleSArICctJyArIG5ld0N4dEtleTtcbiAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2R1YWxDeHRLZXldO1xuXG4gIGlmIChjYWNoZWRWYWwpIHtcbiAgICByZXR1cm4gY2FjaGVkVmFsO1xuICB9XG5cbiAgdmFyIGRpZmZQcm9wcyA9IFtdO1xuICB2YXIgYWRkZWRQcm9wID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHNlbGZbaV07XG4gICAgdmFyIG9sZEhhc0N4dCA9IG9sZEN4dEtleVtpXSA9PT0gVFJVRTtcbiAgICB2YXIgbmV3SGFzQ3h0ID0gbmV3Q3h0S2V5W2ldID09PSBUUlVFO1xuICAgIHZhciBjeHRIYXNEaWZmZWQgPSBvbGRIYXNDeHQgIT09IG5ld0hhc0N4dDtcbiAgICB2YXIgY3h0SGFzTWFwcGVkUHJvcHMgPSBjeHQubWFwcGVkUHJvcGVydGllcy5sZW5ndGggPiAwO1xuXG4gICAgaWYgKGN4dEhhc0RpZmZlZCB8fCBuZXdIYXNDeHQgJiYgY3h0SGFzTWFwcGVkUHJvcHMpIHtcbiAgICAgIHZhciBwcm9wcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGN4dEhhc0RpZmZlZCAmJiBjeHRIYXNNYXBwZWRQcm9wcykge1xuICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBzdWZmaWNlcyBiL2MgbWFwcGVkUHJvcGVydGllcyBpcyBhIHN1YnNldCBvZiBwcm9wZXJ0aWVzXG4gICAgICB9IGVsc2UgaWYgKGN4dEhhc0RpZmZlZCkge1xuICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBuZWVkIHRvIGNoZWNrIHRoZW0gYWxsXG4gICAgICB9IGVsc2UgaWYgKGN4dEhhc01hcHBlZFByb3BzKSB7XG4gICAgICAgIHByb3BzID0gY3h0Lm1hcHBlZFByb3BlcnRpZXM7IC8vIG9ubHkgbmVlZCB0byBjaGVjayBtYXBwZWRcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm9wcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcHJvcCA9IHByb3BzW2pdO1xuICAgICAgICB2YXIgbmFtZSA9IHByb3AubmFtZTsgLy8gaWYgYSBsYXRlciBjb250ZXh0IG92ZXJyaWRlcyB0aGlzIHByb3BlcnR5LCB0aGVuIHRoZSBmYWN0IHRoYXQgdGhpcyBjb250ZXh0IGhhcyBzd2l0Y2hlZC9kaWZmZWQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgLy8gKHNlbWkgZXhwZW5zaXZlIGNoZWNrIHNpbmNlIGl0IG1ha2VzIHRoaXMgZnVuY3Rpb24gTyhuXjIpIG9uIGNvbnRleHQgbGVuZ3RoLCBidXQgd29ydGggaXQgc2luY2Ugb3ZlcmFsbCByZXN1bHRcbiAgICAgICAgLy8gaXMgY2FjaGVkKVxuXG4gICAgICAgIHZhciBsYXRlckN4dE92ZXJyaWRlcyA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAodmFyIGsgPSBpICsgMTsgayA8IHNlbGYubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICB2YXIgbGF0ZXJDeHQgPSBzZWxmW2tdO1xuICAgICAgICAgIHZhciBoYXNMYXRlckN4dCA9IG5ld0N4dEtleVtrXSA9PT0gVFJVRTtcblxuICAgICAgICAgIGlmICghaGFzTGF0ZXJDeHQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gLy8gY2FuJ3Qgb3ZlcnJpZGUgdW5sZXNzIHRoZSBjb250ZXh0IGlzIGFjdGl2ZVxuXG5cbiAgICAgICAgICBsYXRlckN4dE92ZXJyaWRlcyA9IGxhdGVyQ3h0LnByb3BlcnRpZXNbcHJvcC5uYW1lXSAhPSBudWxsO1xuXG4gICAgICAgICAgaWYgKGxhdGVyQ3h0T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IC8vIGV4aXQgZWFybHkgYXMgbG9uZyBhcyBvbmUgbGF0ZXIgY29udGV4dCBvdmVycmlkZXNcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhZGRlZFByb3BbbmFtZV0gJiYgIWxhdGVyQ3h0T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgYWRkZWRQcm9wW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgICBkaWZmUHJvcHMucHVzaChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3IgcHJvcHNcblxuICAgIH0gLy8gaWZcblxuICB9IC8vIGZvciBjb250ZXh0c1xuXG5cbiAgY2FjaGVbZHVhbEN4dEtleV0gPSBkaWZmUHJvcHM7XG4gIHJldHVybiBkaWZmUHJvcHM7XG59O1xuXG5zdHlmbi5nZXRDb250ZXh0TWV0YSA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY3h0S2V5ID0gJyc7XG4gIHZhciBkaWZmUHJvcHM7XG4gIHZhciBwcmV2S2V5ID0gZWxlLl9wcml2YXRlLnN0eWxlQ3h0S2V5IHx8ICcnOyAvLyBnZXQgdGhlIGN4dCBrZXlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY29udGV4dCA9IHNlbGZbaV07XG4gICAgdmFyIGNvbnRleHRTZWxlY3Rvck1hdGNoZXMgPSBjb250ZXh0LnNlbGVjdG9yICYmIGNvbnRleHQuc2VsZWN0b3IubWF0Y2hlcyhlbGUpOyAvLyBOQjogY29udGV4dC5zZWxlY3RvciBtYXkgYmUgbnVsbCBmb3IgJ2NvcmUnXG5cbiAgICBpZiAoY29udGV4dFNlbGVjdG9yTWF0Y2hlcykge1xuICAgICAgY3h0S2V5ICs9IFRSVUU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN4dEtleSArPSBGQUxTRTtcbiAgICB9XG4gIH0gLy8gZm9yIGNvbnRleHRcblxuXG4gIGRpZmZQcm9wcyA9IHNlbGYuZ2V0UHJvcGVydGllc0RpZmYocHJldktleSwgY3h0S2V5KTtcbiAgZWxlLl9wcml2YXRlLnN0eWxlQ3h0S2V5ID0gY3h0S2V5O1xuICByZXR1cm4ge1xuICAgIGtleTogY3h0S2V5LFxuICAgIGRpZmZQcm9wTmFtZXM6IGRpZmZQcm9wcyxcbiAgICBlbXB0eTogZGlmZlByb3BzLmxlbmd0aCA9PT0gMFxuICB9O1xufTsgLy8gZ2V0cyBhIGNvbXB1dGVkIGVsZSBzdHlsZSBvYmplY3QgYmFzZWQgb24gbWF0Y2hlZCBjb250ZXh0c1xuXG5cbnN0eWZuLmdldENvbnRleHRTdHlsZSA9IGZ1bmN0aW9uIChjeHRNZXRhKSB7XG4gIHZhciBjeHRLZXkgPSBjeHRNZXRhLmtleTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY3h0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzIHx8IHt9OyAvLyBpZiBhbHJlYWR5IGNvbXB1dGVkIHN0eWxlLCByZXR1cm5lZCBjYWNoZWQgY29weVxuXG4gIGlmIChjeHRTdHlsZXNbY3h0S2V5XSkge1xuICAgIHJldHVybiBjeHRTdHlsZXNbY3h0S2V5XTtcbiAgfVxuXG4gIHZhciBzdHlsZSA9IHtcbiAgICBfcHJpdmF0ZToge1xuICAgICAga2V5OiBjeHRLZXlcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHNlbGZbaV07XG4gICAgdmFyIGhhc0N4dCA9IGN4dEtleVtpXSA9PT0gVFJVRTtcblxuICAgIGlmICghaGFzQ3h0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGN4dC5wcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgcHJvcCA9IGN4dC5wcm9wZXJ0aWVzW2pdO1xuICAgICAgc3R5bGVbcHJvcC5uYW1lXSA9IHByb3A7XG4gICAgfVxuICB9XG5cbiAgY3h0U3R5bGVzW2N4dEtleV0gPSBzdHlsZTtcbiAgcmV0dXJuIHN0eWxlO1xufTtcblxuc3R5Zm4uYXBwbHlDb250ZXh0U3R5bGUgPSBmdW5jdGlvbiAoY3h0TWV0YSwgY3h0U3R5bGUsIGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBkaWZmUHJvcHMgPSBjeHRNZXRhLmRpZmZQcm9wTmFtZXM7XG4gIHZhciByZXREaWZmUHJvcHMgPSB7fTtcbiAgdmFyIHR5cGVzID0gc2VsZi50eXBlcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmZQcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaWZmUHJvcE5hbWUgPSBkaWZmUHJvcHNbaV07XG4gICAgdmFyIGN4dFByb3AgPSBjeHRTdHlsZVtkaWZmUHJvcE5hbWVdO1xuICAgIHZhciBlbGVQcm9wID0gZWxlLnBzdHlsZShkaWZmUHJvcE5hbWUpO1xuXG4gICAgaWYgKCFjeHRQcm9wKSB7XG4gICAgICAvLyBubyBjb250ZXh0IHByb3AgbWVhbnMgZGVsZXRlXG4gICAgICBpZiAoIWVsZVByb3ApIHtcbiAgICAgICAgY29udGludWU7IC8vIG5vIGV4aXN0aW5nIHByb3AgbWVhbnMgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgIC8vIG5iIGFmZmVjdHMgaW5pdGlhbCBhcHBsaWNhdGlvbiBvbiBtYXBwZWQgdmFsdWVzIGxpa2UgY29udHJvbC1wb2ludC1kaXN0YW5jZXNcbiAgICAgIH0gZWxzZSBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgY3h0UHJvcCA9IHtcbiAgICAgICAgICBuYW1lOiBkaWZmUHJvcE5hbWUsXG4gICAgICAgICAgZGVsZXRlQnlwYXNzZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN4dFByb3AgPSB7XG4gICAgICAgICAgbmFtZTogZGlmZlByb3BOYW1lLFxuICAgICAgICAgIFwiZGVsZXRlXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gdGhlIGNvbnRleHQgcHJvcCBkb2Vzbid0IG5lZWQgdG8gYmUgYXBwbGllZFxuXG5cbiAgICBpZiAoZWxlUHJvcCA9PT0gY3h0UHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBzYXZlIGN5Y2xlcyB3aGVuIGEgbWFwcGVkIGNvbnRleHQgcHJvcCBkb2Vzbid0IG5lZWQgdG8gYmUgYXBwbGllZFxuXG5cbiAgICBpZiAoY3h0UHJvcC5tYXBwZWQgPT09IHR5cGVzLmZuIC8vIGNvbnRleHQgcHJvcCBpcyBmdW5jdGlvbiBtYXBwZXJcbiAgICAmJiBlbGVQcm9wICE9IG51bGwgLy8gc29tZSBwcm9wcyBjYW4gYmUgbnVsbCBldmVuIGJ5IGRlZmF1bHQgKGUuZy4gYSBwcm9wIHRoYXQgb3ZlcnJpZGVzIGFub3RoZXIgb25lKVxuICAgICYmIGVsZVByb3AubWFwcGluZyAhPSBudWxsIC8vIGVsZSBwcm9wIGlzIGEgY29uY3JldGUgdmFsdWUgZnJvbSBmcm9tIGEgbWFwcGVyXG4gICAgJiYgZWxlUHJvcC5tYXBwaW5nLnZhbHVlID09PSBjeHRQcm9wLnZhbHVlIC8vIHRoZSBjdXJyZW50IHByb3Agb24gdGhlIGVsZSBpcyBhIGZsYXQgcHJvcCB2YWx1ZSBmb3IgdGhlIGZ1bmN0aW9uIG1hcHBlclxuICAgICkge1xuICAgICAgICAvLyBOQiBkb24ndCB3cml0ZSB0byBjeHRQcm9wLCBhcyBpdCdzIHNoYXJlZCBhbW9uZyBlbGVzIChzdG9yZWQgaW4gc3R5bGVzaGVldClcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBlbGVQcm9wLm1hcHBpbmc7IC8vIGNhbiB3cml0ZSB0byBtYXBwaW5nLCBhcyBpdCdzIGEgcGVyLWVsZSBjb3B5XG5cbiAgICAgICAgdmFyIGZuVmFsdWUgPSBtYXBwaW5nLmZuVmFsdWUgPSBjeHRQcm9wLnZhbHVlKGVsZSk7IC8vIHRlbXBvcmFyaWx5IGNhY2hlIHRoZSB2YWx1ZSBpbiBjYXNlIG9mIGEgbWlzc1xuXG4gICAgICAgIGlmIChmblZhbHVlID09PSBtYXBwaW5nLnByZXZGblZhbHVlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIHZhciByZXREaWZmUHJvcCA9IHJldERpZmZQcm9wc1tkaWZmUHJvcE5hbWVdID0ge1xuICAgICAgcHJldjogZWxlUHJvcFxuICAgIH07XG4gICAgc2VsZi5hcHBseVBhcnNlZFByb3BlcnR5KGVsZSwgY3h0UHJvcCk7XG4gICAgcmV0RGlmZlByb3AubmV4dCA9IGVsZS5wc3R5bGUoZGlmZlByb3BOYW1lKTtcblxuICAgIGlmIChyZXREaWZmUHJvcC5uZXh0ICYmIHJldERpZmZQcm9wLm5leHQuYnlwYXNzKSB7XG4gICAgICByZXREaWZmUHJvcC5uZXh0ID0gcmV0RGlmZlByb3AubmV4dC5ieXBhc3NlZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRpZmZQcm9wczogcmV0RGlmZlByb3BzXG4gIH07XG59O1xuXG5zdHlmbi51cGRhdGVTdHlsZUhpbnRzID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHByb3BOYW1lcyA9IHNlbGYucHJvcGVydHlHcm91cE5hbWVzO1xuICB2YXIgcHJvcEdyS2V5cyA9IHNlbGYucHJvcGVydHlHcm91cEtleXM7XG5cbiAgdmFyIHByb3BIYXNoID0gZnVuY3Rpb24gcHJvcEhhc2goZWxlLCBwcm9wTmFtZXMsIHNlZWRLZXkpIHtcbiAgICByZXR1cm4gc2VsZi5nZXRQcm9wZXJ0aWVzSGFzaChlbGUsIHByb3BOYW1lcywgc2VlZEtleSk7XG4gIH07XG5cbiAgdmFyIG9sZFN0eWxlS2V5ID0gX3Auc3R5bGVLZXk7XG5cbiAgaWYgKGVsZS5yZW1vdmVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNOb2RlID0gX3AuZ3JvdXAgPT09ICdub2Rlcyc7IC8vIGdldCB0aGUgc3R5bGUga2V5IGhhc2hlcyBwZXIgcHJvcCBncm91cFxuICAvLyBidXQgbGF6aWx5IC0tIG9ubHkgdXNlIG5vbi1kZWZhdWx0IHByb3AgdmFsdWVzIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGhhc2hlc1xuICAvL1xuXG4gIHZhciBvdmVycmlkZGVuU3R5bGVzID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZGVuU3R5bGVzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BHcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZ3JLZXkgPSBwcm9wR3JLZXlzW2ldO1xuICAgIF9wLnN0eWxlS2V5c1tncktleV0gPSBbREVGQVVMVF9IQVNIX1NFRUQsIERFRkFVTFRfSEFTSF9TRUVEX0FMVF07XG4gIH1cblxuICB2YXIgdXBkYXRlR3JLZXkxID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpIHtcbiAgICByZXR1cm4gX3Auc3R5bGVLZXlzW2dyS2V5XVswXSA9IGhhc2hJbnQodmFsLCBfcC5zdHlsZUtleXNbZ3JLZXldWzBdKTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXkyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkyKHZhbCwgZ3JLZXkpIHtcbiAgICByZXR1cm4gX3Auc3R5bGVLZXlzW2dyS2V5XVsxXSA9IGhhc2hJbnRBbHQodmFsLCBfcC5zdHlsZUtleXNbZ3JLZXldWzFdKTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXkgPSBmdW5jdGlvbiB1cGRhdGVHcktleSh2YWwsIGdyS2V5KSB7XG4gICAgdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpO1xuICAgIHVwZGF0ZUdyS2V5Mih2YWwsIGdyS2V5KTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXlXU3RyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXlXU3RyKHN0clZhbCwgZ3JLZXkpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0clZhbC5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGNoID0gc3RyVmFsLmNoYXJDb2RlQXQoaik7XG4gICAgICB1cGRhdGVHcktleTEoY2gsIGdyS2V5KTtcbiAgICAgIHVwZGF0ZUdyS2V5MihjaCwgZ3JLZXkpO1xuICAgIH1cbiAgfTsgLy8gLSBoYXNoaW5nIHdvcmtzIG9uIDMyIGJpdCBpbnRzIGIvYyB3ZSB1c2UgYml0d2lzZSBvcHNcbiAgLy8gLSBzbWFsbCBudW1iZXJzIGdldCBjdXQgb2ZmIChlLmcuIDAuMTIzIGlzIHNlZW4gYXMgMCBieSB0aGUgaGFzaGluZyBmdW5jdGlvbilcbiAgLy8gLSByYWlzZSB1cCBzbWFsbCBudW1iZXJzIHNvIG1vcmUgc2lnbmlmaWNhbnQgZGlnaXRzIGFyZSBzZWVuIGJ5IGhhc2hpbmdcbiAgLy8gLSBtYWtlIHNtYWxsIG51bWJlcnMgbGFyZ2VyIHRoYW4gYSBub3JtYWwgdmFsdWUgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAvLyAtIHdvcmtzIGluIHByYWN0aWNlIGFuZCBpdCdzIHJlbGF0aXZlbHkgY2hlYXBcblxuXG4gIHZhciBOID0gMjAwMDAwMDAwMDtcblxuICB2YXIgY2xlYW5OdW0gPSBmdW5jdGlvbiBjbGVhbk51bSh2YWwpIHtcbiAgICByZXR1cm4gLTEyOCA8IHZhbCAmJiB2YWwgPCAxMjggJiYgTWF0aC5mbG9vcih2YWwpICE9PSB2YWwgPyBOIC0gKHZhbCAqIDEwMjQgfCAwKSA6IHZhbDtcbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcHJvcE5hbWVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBuYW1lID0gcHJvcE5hbWVzW19pXTtcbiAgICB2YXIgcGFyc2VkUHJvcCA9IG92ZXJyaWRkZW5TdHlsZXNbbmFtZV07XG5cbiAgICBpZiAocGFyc2VkUHJvcCA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcEluZm8gPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gICAgdmFyIHR5cGUgPSBwcm9wSW5mby50eXBlO1xuICAgIHZhciBfZ3JLZXkgPSBwcm9wSW5mby5ncm91cEtleTtcbiAgICB2YXIgbm9ybWFsaXplZE51bWJlclZhbCA9IHZvaWQgMDtcblxuICAgIGlmIChwcm9wSW5mby5oYXNoT3ZlcnJpZGUgIT0gbnVsbCkge1xuICAgICAgbm9ybWFsaXplZE51bWJlclZhbCA9IHByb3BJbmZvLmhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApO1xuICAgIH0gZWxzZSBpZiAocGFyc2VkUHJvcC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgIG5vcm1hbGl6ZWROdW1iZXJWYWwgPSBwYXJzZWRQcm9wLnBmVmFsdWU7XG4gICAgfSAvLyBtaWdodCBub3QgYmUgYSBudW1iZXIgaWYgaXQgYWxsb3dzIGVudW1zXG5cblxuICAgIHZhciBudW1iZXJWYWwgPSBwcm9wSW5mby5lbnVtcyA9PSBudWxsID8gcGFyc2VkUHJvcC52YWx1ZSA6IG51bGw7XG4gICAgdmFyIGhhdmVOb3JtTnVtID0gbm9ybWFsaXplZE51bWJlclZhbCAhPSBudWxsO1xuICAgIHZhciBoYXZlVW5pdGVkTnVtID0gbnVtYmVyVmFsICE9IG51bGw7XG4gICAgdmFyIGhhdmVOdW0gPSBoYXZlTm9ybU51bSB8fCBoYXZlVW5pdGVkTnVtO1xuICAgIHZhciB1bml0cyA9IHBhcnNlZFByb3AudW5pdHM7IC8vIG51bWJlcnMgYXJlIGNoZWFwZXIgdG8gaGFzaCB0aGFuIHN0cmluZ3NcbiAgICAvLyAxIGhhc2ggb3AgdnMgbiBoYXNoIG9wcyAoZm9yIGxlbmd0aCBuIHN0cmluZylcblxuICAgIGlmICh0eXBlLm51bWJlciAmJiBoYXZlTnVtICYmICF0eXBlLm11bHRpcGxlKSB7XG4gICAgICB2YXIgdiA9IGhhdmVOb3JtTnVtID8gbm9ybWFsaXplZE51bWJlclZhbCA6IG51bWJlclZhbDtcbiAgICAgIHVwZGF0ZUdyS2V5KGNsZWFuTnVtKHYpLCBfZ3JLZXkpO1xuXG4gICAgICBpZiAoIWhhdmVOb3JtTnVtICYmIHVuaXRzICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlR3JLZXlXU3RyKHVuaXRzLCBfZ3JLZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVHcktleVdTdHIocGFyc2VkUHJvcC5zdHJWYWx1ZSwgX2dyS2V5KTtcbiAgICB9XG4gIH0gLy8gb3ZlcmFsbCBzdHlsZSBrZXlcbiAgLy9cblxuXG4gIHZhciBoYXNoID0gW0RFRkFVTFRfSEFTSF9TRUVELCBERUZBVUxUX0hBU0hfU0VFRF9BTFRdO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHByb3BHcktleXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBfZ3JLZXkyID0gcHJvcEdyS2V5c1tfaTJdO1xuICAgIHZhciBnckhhc2ggPSBfcC5zdHlsZUtleXNbX2dyS2V5Ml07XG4gICAgaGFzaFswXSA9IGhhc2hJbnQoZ3JIYXNoWzBdLCBoYXNoWzBdKTtcbiAgICBoYXNoWzFdID0gaGFzaEludEFsdChnckhhc2hbMV0sIGhhc2hbMV0pO1xuICB9XG5cbiAgX3Auc3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzKGhhc2hbMF0sIGhhc2hbMV0pOyAvLyBsYWJlbCBkaW1zXG4gIC8vXG5cbiAgdmFyIHNrID0gX3Auc3R5bGVLZXlzO1xuICBfcC5sYWJlbERpbXNLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoc2subGFiZWxEaW1lbnNpb25zKTtcbiAgdmFyIGxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydsYWJlbCddLCBzay5sYWJlbERpbWVuc2lvbnMpO1xuICBfcC5sYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShsYWJlbEtleXMpO1xuICBfcC5sYWJlbFN0eWxlS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KGhhc2hBcnJheXMoc2suY29tbW9uTGFiZWwsIGxhYmVsS2V5cykpO1xuXG4gIGlmICghaXNOb2RlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydzb3VyY2UtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC5zb3VyY2VMYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShzb3VyY2VMYWJlbEtleXMpO1xuICAgIF9wLnNvdXJjZUxhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgc291cmNlTGFiZWxLZXlzKSk7XG4gICAgdmFyIHRhcmdldExhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWyd0YXJnZXQtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC50YXJnZXRMYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheSh0YXJnZXRMYWJlbEtleXMpO1xuICAgIF9wLnRhcmdldExhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgdGFyZ2V0TGFiZWxLZXlzKSk7XG4gIH0gLy8gbm9kZVxuICAvL1xuXG5cbiAgaWYgKGlzTm9kZSkge1xuICAgIHZhciBfcCRzdHlsZUtleXMgPSBfcC5zdHlsZUtleXMsXG4gICAgICAgIG5vZGVCb2R5ID0gX3Akc3R5bGVLZXlzLm5vZGVCb2R5LFxuICAgICAgICBub2RlQm9yZGVyID0gX3Akc3R5bGVLZXlzLm5vZGVCb3JkZXIsXG4gICAgICAgIGJhY2tncm91bmRJbWFnZSA9IF9wJHN0eWxlS2V5cy5iYWNrZ3JvdW5kSW1hZ2UsXG4gICAgICAgIGNvbXBvdW5kID0gX3Akc3R5bGVLZXlzLmNvbXBvdW5kLFxuICAgICAgICBwaWUgPSBfcCRzdHlsZUtleXMucGllO1xuICAgIHZhciBub2RlS2V5cyA9IFtub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBjb21wb3VuZCwgcGllXS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBrICE9IG51bGw7XG4gICAgfSkucmVkdWNlKGhhc2hBcnJheXMsIFtERUZBVUxUX0hBU0hfU0VFRCwgREVGQVVMVF9IQVNIX1NFRURfQUxUXSk7XG4gICAgX3Aubm9kZUtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShub2RlS2V5cyk7XG4gICAgX3AuaGFzUGllID0gcGllICE9IG51bGwgJiYgcGllWzBdICE9PSBERUZBVUxUX0hBU0hfU0VFRCAmJiBwaWVbMV0gIT09IERFRkFVTFRfSEFTSF9TRUVEX0FMVDtcbiAgfVxuXG4gIHJldHVybiBvbGRTdHlsZUtleSAhPT0gX3Auc3R5bGVLZXk7XG59O1xuXG5zdHlmbi5jbGVhclN0eWxlSGludHMgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgX3Auc3R5bGVDeHRLZXkgPSAnJztcbiAgX3Auc3R5bGVLZXlzID0ge307XG4gIF9wLnN0eWxlS2V5ID0gbnVsbDtcbiAgX3AubGFiZWxLZXkgPSBudWxsO1xuICBfcC5sYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3Auc291cmNlTGFiZWxLZXkgPSBudWxsO1xuICBfcC5zb3VyY2VMYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3AudGFyZ2V0TGFiZWxLZXkgPSBudWxsO1xuICBfcC50YXJnZXRMYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3Aubm9kZUtleSA9IG51bGw7XG4gIF9wLmhhc1BpZSA9IG51bGw7XG59OyAvLyBhcHBseSBhIHByb3BlcnR5IHRvIHRoZSBzdHlsZSAoZm9yIGludGVybmFsIHVzZSlcbi8vIHJldHVybnMgd2hldGhlciBhcHBsaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuLy9cbi8vIG5vdywgdGhpcyBmdW5jdGlvbiBmbGF0dGVucyB0aGUgcHJvcGVydHksIGFuZCBoZXJlJ3MgaG93OlxuLy9cbi8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlLCBkZWxldGVCeXBhc3M6IHRydWUgfVxuLy8gbm8gcHJvcGVydHkgaXMgZ2VuZXJhdGVkLCBpbnN0ZWFkIHRoZSBieXBhc3MgcHJvcGVydHkgaW4gdGhlXG4vLyBlbGVtZW50J3Mgc3R5bGUgaXMgcmVwbGFjZWQgYnkgd2hhdCdzIHBvaW50ZWQgdG8gYnkgdGhlIGBieXBhc3NlZGBcbi8vIGZpZWxkIGluIHRoZSBieXBhc3MgcHJvcGVydHkgKGkuZS4gcmVzdG9yaW5nIHRoZSBwcm9wZXJ0eSB0aGVcbi8vIGJ5cGFzcyB3YXMgb3ZlcnJpZGluZylcbi8vXG4vLyBmb3IgcGFyc2VkUHJvcDp7IG1hcHBlZDogdHJ1dGh5IH1cbi8vIHRoZSBnZW5lcmF0ZWQgZmxhdHRlbmVkUHJvcDp7IG1hcHBpbmc6IHByb3AgfVxuLy9cbi8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlIH1cbi8vIHRoZSBnZW5lcmF0ZWQgZmxhdHRlbmVkUHJvcDp7IGJ5cGFzc2VkOiBwYXJzZWRQcm9wIH1cblxuXG5zdHlmbi5hcHBseVBhcnNlZFByb3BlcnR5ID0gZnVuY3Rpb24gKGVsZSwgcGFyc2VkUHJvcCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBwcm9wID0gcGFyc2VkUHJvcDtcbiAgdmFyIHN0eWxlID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICB2YXIgZmxhdFByb3A7XG4gIHZhciB0eXBlcyA9IHNlbGYudHlwZXM7XG4gIHZhciB0eXBlID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3AubmFtZV0udHlwZTtcbiAgdmFyIHByb3BJc0J5cGFzcyA9IHByb3AuYnlwYXNzO1xuICB2YXIgb3JpZ1Byb3AgPSBzdHlsZVtwcm9wLm5hbWVdO1xuICB2YXIgb3JpZ1Byb3BJc0J5cGFzcyA9IG9yaWdQcm9wICYmIG9yaWdQcm9wLmJ5cGFzcztcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgZmxhdFByb3BNYXBwaW5nID0gJ21hcHBpbmcnO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwocCkge1xuICAgIGlmIChwID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAocC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwLnBmVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwLnZhbHVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgY2hlY2tUcmlnZ2VycyA9IGZ1bmN0aW9uIGNoZWNrVHJpZ2dlcnMoKSB7XG4gICAgdmFyIGZyb21WYWwgPSBnZXRWYWwob3JpZ1Byb3ApO1xuICAgIHZhciB0b1ZhbCA9IGdldFZhbChwcm9wKTtcbiAgICBzZWxmLmNoZWNrVHJpZ2dlcnMoZWxlLCBwcm9wLm5hbWUsIGZyb21WYWwsIHRvVmFsKTtcbiAgfTtcblxuICBpZiAocHJvcCAmJiBwcm9wLm5hbWUuc3Vic3RyKDAsIDMpID09PSAncGllJykge1xuICAgIHdhcm4oJ1RoZSBwaWUgc3R5bGUgcHJvcGVydGllcyBhcmUgZGVwcmVjYXRlZC4gIENyZWF0ZSBjaGFydHMgdXNpbmcgYmFja2dyb3VuZCBpbWFnZXMgaW5zdGVhZC4nKTtcbiAgfSAvLyBlZGdlIHNhbml0eSBjaGVja3MgdG8gcHJldmVudCB0aGUgY2xpZW50IGZyb20gbWFraW5nIHNlcmlvdXMgbWlzdGFrZXNcblxuXG4gIGlmIChwYXJzZWRQcm9wLm5hbWUgPT09ICdjdXJ2ZS1zdHlsZScgJiYgZWxlLmlzRWRnZSgpICYmICggLy8gbG9vcHMgbXVzdCBiZSBidW5kbGVkIGJlemllcnNcbiAgcGFyc2VkUHJvcC52YWx1ZSAhPT0gJ2JlemllcicgJiYgZWxlLmlzTG9vcCgpIHx8IC8vIGVkZ2VzIGNvbm5lY3RlZCB0byBjb21wb3VuZCBub2RlcyBjYW4gbm90IGJlIGhheXN0YWNrc1xuICBwYXJzZWRQcm9wLnZhbHVlID09PSAnaGF5c3RhY2snICYmIChlbGUuc291cmNlKCkuaXNQYXJlbnQoKSB8fCBlbGUudGFyZ2V0KCkuaXNQYXJlbnQoKSkpKSB7XG4gICAgcHJvcCA9IHBhcnNlZFByb3AgPSB0aGlzLnBhcnNlKHBhcnNlZFByb3AubmFtZSwgJ2JlemllcicsIHByb3BJc0J5cGFzcyk7XG4gIH1cblxuICBpZiAocHJvcFtcImRlbGV0ZVwiXSkge1xuICAgIC8vIGRlbGV0ZSB0aGUgcHJvcGVydHkgYW5kIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBvbiBmYWxzZXkgdmFsdWVcbiAgICBzdHlsZVtwcm9wLm5hbWVdID0gdW5kZWZpbmVkO1xuICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wLmRlbGV0ZUJ5cGFzc2VkKSB7XG4gICAgLy8gZGVsZXRlIHRoZSBwcm9wZXJ0eSB0aGF0IHRoZVxuICAgIGlmICghb3JpZ1Byb3ApIHtcbiAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBjYW4ndCBkZWxldGUgaWYgbm8gcHJvcFxuICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAvLyBkZWxldGUgYnlwYXNzZWRcbiAgICAgIG9yaWdQcm9wLmJ5cGFzc2VkID0gdW5kZWZpbmVkO1xuICAgICAgY2hlY2tUcmlnZ2VycygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gd2UncmUgdW5zdWNjZXNzZnVsIGRlbGV0aW5nIHRoZSBieXBhc3NlZFxuICAgIH1cbiAgfSAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIGRlbGV0ZSB0aGUgY3VycmVudCBieXBhc3NcblxuXG4gIGlmIChwcm9wLmRlbGV0ZUJ5cGFzcykge1xuICAgIC8vIHRoZW4gdGhpcyBwcm9wZXJ0eSBpcyBqdXN0IGhlcmUgdG8gaW5kaWNhdGUgd2UgbmVlZCB0byBkZWxldGVcbiAgICBpZiAoIW9yaWdQcm9wKSB7XG4gICAgICBjaGVja1RyaWdnZXJzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGVydHkgaXMgYWxyZWFkeSBub3QgZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAvLyB0aGVuIHJlcGxhY2UgdGhlIGJ5cGFzcyBwcm9wZXJ0eSB3aXRoIHRoZSBvcmlnaW5hbFxuICAgICAgLy8gYmVjYXVzZSB0aGUgYnlwYXNzZWQgcHJvcGVydHkgd2FzIGFscmVhZHkgYXBwbGllZCAoYW5kIHRoZXJlZm9yZSBwYXJzZWQpLCB3ZSBjYW4ganVzdCByZXBsYWNlIGl0IChubyByZWFwcGx5aW5nIG5lY2Vzc2FyeSlcbiAgICAgIHN0eWxlW3Byb3AubmFtZV0gPSBvcmlnUHJvcC5ieXBhc3NlZDtcbiAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIHVuc3VjY2Vzc2Z1bCBkZWxldGluZyB0aGUgYnlwYXNzXG4gICAgfVxuICB9XG5cbiAgdmFyIHByaW50TWFwcGluZ0VyciA9IGZ1bmN0aW9uIHByaW50TWFwcGluZ0VycigpIHtcbiAgICB3YXJuKCdEbyBub3QgYXNzaWduIG1hcHBpbmdzIHRvIGVsZW1lbnRzIHdpdGhvdXQgY29ycmVzcG9uZGluZyBkYXRhIChpLmUuIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaGFzIG5vIG1hcHBpbmcgZm9yIHByb3BlcnR5IGAnICsgcHJvcC5uYW1lICsgJ2Agd2l0aCBkYXRhIGZpZWxkIGAnICsgcHJvcC5maWVsZCArICdgKTsgdHJ5IGEgYFsnICsgcHJvcC5maWVsZCArICddYCBzZWxlY3RvciB0byBsaW1pdCBzY29wZSB0byBlbGVtZW50cyB3aXRoIGAnICsgcHJvcC5maWVsZCArICdgIGRlZmluZWQnKTtcbiAgfTsgLy8gcHV0IHRoZSBwcm9wZXJ0eSBpbiB0aGUgc3R5bGUgb2JqZWN0c1xuXG5cbiAgc3dpdGNoIChwcm9wLm1hcHBlZCkge1xuICAgIC8vIGZsYXR0ZW4gdGhlIHByb3BlcnR5IGlmIG1hcHBlZFxuICAgIGNhc2UgdHlwZXMubWFwRGF0YTpcbiAgICAgIHtcbiAgICAgICAgLy8gZmxhdHRlbiB0aGUgZmllbGQgKGUuZy4gZGF0YS5mb28uYmFyKVxuICAgICAgICB2YXIgZmllbGRzID0gcHJvcC5maWVsZC5zcGxpdCgnLicpO1xuICAgICAgICB2YXIgZmllbGRWYWwgPSBfcC5kYXRhO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aCAmJiBmaWVsZFZhbDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgIGZpZWxkVmFsID0gZmllbGRWYWxbZmllbGRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkVmFsID09IG51bGwpIHtcbiAgICAgICAgICBwcmludE1hcHBpbmdFcnIoKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGVyY2VudDtcblxuICAgICAgICBpZiAoIW51bWJlcihmaWVsZFZhbCkpIHtcbiAgICAgICAgICAvLyB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgd2FybignRG8gbm90IHVzZSBjb250aW51b3VzIG1hcHBlcnMgd2l0aG91dCBzcGVjaWZ5aW5nIG51bWVyaWMgZGF0YSAoaS5lLiBgJyArIHByb3AuZmllbGQgKyAnOiAnICsgZmllbGRWYWwgKyAnYCBmb3IgYCcgKyBlbGUuaWQoKSArICdgIGlzIG5vbi1udW1lcmljKScpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZmllbGRXaWR0aCA9IHByb3AuZmllbGRNYXggLSBwcm9wLmZpZWxkTWluO1xuXG4gICAgICAgICAgaWYgKGZpZWxkV2lkdGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIHNhZmV0eSBjaGVjayAtLSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGFzIG5vIHByb3BzIG9mIHplcm8gcmFuZ2Ugc2hvdWxkIGJlIHBhc3NlZCBoZXJlXG4gICAgICAgICAgICBwZXJjZW50ID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVyY2VudCA9IChmaWVsZFZhbCAtIHByb3AuZmllbGRNaW4pIC8gZmllbGRXaWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gbWFrZSBzdXJlIHRvIGJvdW5kIHBlcmNlbnQgdmFsdWVcblxuXG4gICAgICAgIGlmIChwZXJjZW50IDwgMCkge1xuICAgICAgICAgIHBlcmNlbnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxKSB7XG4gICAgICAgICAgcGVyY2VudCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZS5jb2xvcikge1xuICAgICAgICAgIHZhciByMSA9IHByb3AudmFsdWVNaW5bMF07XG4gICAgICAgICAgdmFyIHIyID0gcHJvcC52YWx1ZU1heFswXTtcbiAgICAgICAgICB2YXIgZzEgPSBwcm9wLnZhbHVlTWluWzFdO1xuICAgICAgICAgIHZhciBnMiA9IHByb3AudmFsdWVNYXhbMV07XG4gICAgICAgICAgdmFyIGIxID0gcHJvcC52YWx1ZU1pblsyXTtcbiAgICAgICAgICB2YXIgYjIgPSBwcm9wLnZhbHVlTWF4WzJdO1xuICAgICAgICAgIHZhciBhMSA9IHByb3AudmFsdWVNaW5bM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWluWzNdO1xuICAgICAgICAgIHZhciBhMiA9IHByb3AudmFsdWVNYXhbM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWF4WzNdO1xuICAgICAgICAgIHZhciBjbHIgPSBbTWF0aC5yb3VuZChyMSArIChyMiAtIHIxKSAqIHBlcmNlbnQpLCBNYXRoLnJvdW5kKGcxICsgKGcyIC0gZzEpICogcGVyY2VudCksIE1hdGgucm91bmQoYjEgKyAoYjIgLSBiMSkgKiBwZXJjZW50KSwgTWF0aC5yb3VuZChhMSArIChhMiAtIGExKSAqIHBlcmNlbnQpXTtcbiAgICAgICAgICBmbGF0UHJvcCA9IHtcbiAgICAgICAgICAgIC8vIGNvbG91cnMgYXJlIHNpbXBsZSwgc28ganVzdCBjcmVhdGUgdGhlIGZsYXQgcHJvcGVydHkgaW5zdGVhZCBvZiBleHBlbnNpdmUgc3RyaW5nIHBhcnNpbmdcbiAgICAgICAgICAgIGJ5cGFzczogcHJvcC5ieXBhc3MsXG4gICAgICAgICAgICAvLyB3ZSdyZSBhIGJ5cGFzcyBpZiB0aGUgbWFwcGluZyBwcm9wZXJ0eSBpcyBhIGJ5cGFzc1xuICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IGNscixcbiAgICAgICAgICAgIHN0clZhbHVlOiAncmdiKCcgKyBjbHJbMF0gKyAnLCAnICsgY2xyWzFdICsgJywgJyArIGNsclsyXSArICcpJ1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZS5udW1iZXIpIHtcbiAgICAgICAgICB2YXIgY2FsY1ZhbHVlID0gcHJvcC52YWx1ZU1pbiArIChwcm9wLnZhbHVlTWF4IC0gcHJvcC52YWx1ZU1pbikgKiBwZXJjZW50O1xuICAgICAgICAgIGZsYXRQcm9wID0gdGhpcy5wYXJzZShwcm9wLm5hbWUsIGNhbGNWYWx1ZSwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4gb25seSBtYXAgdG8gY29sb3VycyBhbmQgbnVtYmVyc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IHRoZSBwcm9wZXJ0eSBhbmQgZmFsbCBiYWNrIG9uIHRoZSBleGlzdGluZyBzdHlsZVxuICAgICAgICAgIHByaW50TWFwcGluZ0VycigpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZsYXRQcm9wLm1hcHBpbmcgPSBwcm9wOyAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwaW5nXG5cbiAgICAgICAgcHJvcCA9IGZsYXRQcm9wOyAvLyB0aGUgZmxhdHRlbmVkIChtYXBwZWQpIHByb3BlcnR5IGlzIHRoZSBvbmUgd2Ugd2FudFxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIC8vIGRpcmVjdCBtYXBwaW5nXG5cbiAgICBjYXNlIHR5cGVzLmRhdGE6XG4gICAgICB7XG4gICAgICAgIC8vIGZsYXR0ZW4gdGhlIGZpZWxkIChlLmcuIGRhdGEuZm9vLmJhcilcbiAgICAgICAgdmFyIF9maWVsZHMgPSBwcm9wLmZpZWxkLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgdmFyIF9maWVsZFZhbCA9IF9wLmRhdGE7XG5cbiAgICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgX2ZpZWxkcy5sZW5ndGggJiYgX2ZpZWxkVmFsOyBfaTMrKykge1xuICAgICAgICAgIHZhciBfZmllbGQgPSBfZmllbGRzW19pM107XG4gICAgICAgICAgX2ZpZWxkVmFsID0gX2ZpZWxkVmFsW19maWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2ZpZWxkVmFsICE9IG51bGwpIHtcbiAgICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBfZmllbGRWYWwsIHByb3AuYnlwYXNzLCBmbGF0UHJvcE1hcHBpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgcHJpbnRNYXBwaW5nRXJyKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IHByb3A7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIHR5cGVzLmZuOlxuICAgICAge1xuICAgICAgICB2YXIgZm4gPSBwcm9wLnZhbHVlO1xuICAgICAgICB2YXIgZm5SZXRWYWwgPSBwcm9wLmZuVmFsdWUgIT0gbnVsbCA/IHByb3AuZm5WYWx1ZSA6IGZuKGVsZSk7IC8vIGNoZWNrIGZvciBjYWNoZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgZnVuY3Rpb25cblxuICAgICAgICBwcm9wLnByZXZGblZhbHVlID0gZm5SZXRWYWw7XG5cbiAgICAgICAgaWYgKGZuUmV0VmFsID09IG51bGwpIHtcbiAgICAgICAgICB3YXJuKCdDdXN0b20gZnVuY3Rpb24gbWFwcGVycyBtYXkgbm90IHJldHVybiBudWxsIChpLmUuIGAnICsgcHJvcC5uYW1lICsgJ2AgZm9yIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaXMgbnVsbCknKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBmblJldFZhbCwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIHdhcm4oJ0N1c3RvbSBmdW5jdGlvbiBtYXBwZXJzIG1heSBub3QgcmV0dXJuIGludmFsaWQgdmFsdWVzIGZvciB0aGUgcHJvcGVydHkgdHlwZSAoaS5lLiBgJyArIHByb3AubmFtZSArICdgIGZvciBlbGUgYCcgKyBlbGUuaWQoKSArICdgIGlzIGludmFsaWQpJyk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IGNvcHkocHJvcCk7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgIGJyZWFrO1xuICAgIC8vIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBub3QgYSB2YWxpZCBtYXBwaW5nXG4gIH0gLy8gaWYgdGhlIHByb3BlcnR5IGlzIGEgYnlwYXNzIHByb3BlcnR5LCB0aGVuIGxpbmsgdGhlIHJlc3VsdGFudCBwcm9wZXJ0eSB0byB0aGUgb3JpZ2luYWwgb25lXG5cblxuICBpZiAocHJvcElzQnlwYXNzKSB7XG4gICAgaWYgKG9yaWdQcm9wSXNCeXBhc3MpIHtcbiAgICAgIC8vIHRoZW4gdGhpcyBieXBhc3Mgb3ZlcnJpZGVzIHRoZSBleGlzdGluZyBvbmVcbiAgICAgIHByb3AuYnlwYXNzZWQgPSBvcmlnUHJvcC5ieXBhc3NlZDsgLy8gc3RlYWwgYnlwYXNzZWQgcHJvcCBmcm9tIG9sZCBieXBhc3NcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhlbiBsaW5rIHRoZSBvcmlnIHByb3AgdG8gdGhlIG5ldyBieXBhc3NcbiAgICAgIHByb3AuYnlwYXNzZWQgPSBvcmlnUHJvcDtcbiAgICB9XG5cbiAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDsgLy8gYW5kIHNldFxuICB9IGVsc2Uge1xuICAgIC8vIHByb3AgaXMgbm90IGJ5cGFzc1xuICAgIGlmIChvcmlnUHJvcElzQnlwYXNzKSB7XG4gICAgICAvLyB0aGVuIGtlZXAgdGhlIG9yaWcgcHJvcCAoc2luY2UgaXQncyBhIGJ5cGFzcykgYW5kIGxpbmsgdG8gdGhlIG5ldyBwcm9wXG4gICAgICBvcmlnUHJvcC5ieXBhc3NlZCA9IHByb3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZW4ganVzdCByZXBsYWNlIHRoZSBvbGQgcHJvcCB3aXRoIHRoZSBuZXcgb25lXG4gICAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDtcbiAgICB9XG4gIH1cblxuICBjaGVja1RyaWdnZXJzKCk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuc3R5Zm4uY2xlYW5FbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzLCBrZWVwQnlwYXNzZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdGhpcy5jbGVhclN0eWxlSGludHMoZWxlKTtcbiAgICBlbGUuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuXG4gICAgaWYgKCFrZWVwQnlwYXNzZXMpIHtcbiAgICAgIGVsZS5fcHJpdmF0ZS5zdHlsZSA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGU7XG4gICAgICB2YXIgcHJvcE5hbWVzID0gT2JqZWN0LmtleXMoc3R5bGUpO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BOYW1lcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wTmFtZXNbal07XG4gICAgICAgIHZhciBlbGVQcm9wID0gc3R5bGVbcHJvcE5hbWVdO1xuXG4gICAgICAgIGlmIChlbGVQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgICAgIGVsZVByb3AuYnlwYXNzZWQgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZVtwcm9wTmFtZV0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTsgLy8gdXBkYXRlcyB0aGUgdmlzdWFsIHN0eWxlIGZvciBhbGwgZWxlbWVudHMgKHVzZWZ1bCBmb3IgbWFudWFsIHN0eWxlIG1vZGlmaWNhdGlvbiBhZnRlciBpbml0KVxuXG5cbnN0eWZuLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGVsZXMgPSBjeS5tdXRhYmxlRWxlbWVudHMoKTtcbiAgZWxlcy51cGRhdGVTdHlsZSgpO1xufTsgLy8gZGlmZlByb3BzIDogeyBuYW1lID0+IHsgcHJldiwgbmV4dCB9IH1cblxuXG5zdHlmbi51cGRhdGVUcmFuc2l0aW9ucyA9IGZ1bmN0aW9uIChlbGUsIGRpZmZQcm9wcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHByb3BzID0gZWxlLnBzdHlsZSgndHJhbnNpdGlvbi1wcm9wZXJ0eScpLnZhbHVlO1xuICB2YXIgZHVyYXRpb24gPSBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLWR1cmF0aW9uJykucGZWYWx1ZTtcbiAgdmFyIGRlbGF5ID0gZWxlLnBzdHlsZSgndHJhbnNpdGlvbi1kZWxheScpLnBmVmFsdWU7XG5cbiAgaWYgKHByb3BzLmxlbmd0aCA+IDAgJiYgZHVyYXRpb24gPiAwKSB7XG4gICAgdmFyIHN0eWxlID0ge307IC8vIGJ1aWxkIHVwIHRoZSBzdHlsZSB0byBhbmltYXRlIHRvd2FyZHNcblxuICAgIHZhciBhbnlQcmV2ID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgdmFyIHN0eVByb3AgPSBlbGUucHN0eWxlKHByb3ApO1xuICAgICAgdmFyIGRpZmZQcm9wID0gZGlmZlByb3BzW3Byb3BdO1xuXG4gICAgICBpZiAoIWRpZmZQcm9wKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJldlByb3AgPSBkaWZmUHJvcC5wcmV2O1xuICAgICAgdmFyIGZyb21Qcm9wID0gcHJldlByb3A7XG4gICAgICB2YXIgdG9Qcm9wID0gZGlmZlByb3AubmV4dCAhPSBudWxsID8gZGlmZlByb3AubmV4dCA6IHN0eVByb3A7XG4gICAgICB2YXIgZGlmZiA9IGZhbHNlO1xuICAgICAgdmFyIGluaXRWYWwgPSB2b2lkIDA7XG4gICAgICB2YXIgaW5pdER0ID0gMC4wMDAwMDE7IC8vIGRlbHRhIHRpbWUgJSB2YWx1ZSBmb3IgaW5pdFZhbCAoYWxsb3dzIGFuaW1hdGluZyBvdXQgb2YgaW5pdCB6ZXJvIG9wYWNpdHkpXG5cbiAgICAgIGlmICghZnJvbVByb3ApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGNvbnNpZGVyIHB4IHZhbHVlc1xuXG5cbiAgICAgIGlmIChudW1iZXIoZnJvbVByb3AucGZWYWx1ZSkgJiYgbnVtYmVyKHRvUHJvcC5wZlZhbHVlKSkge1xuICAgICAgICBkaWZmID0gdG9Qcm9wLnBmVmFsdWUgLSBmcm9tUHJvcC5wZlZhbHVlOyAvLyBub256ZXJvIGlzIHRydXRoeVxuXG4gICAgICAgIGluaXRWYWwgPSBmcm9tUHJvcC5wZlZhbHVlICsgaW5pdER0ICogZGlmZjsgLy8gY29uc2lkZXIgbnVtZXJpY2FsIHZhbHVlc1xuICAgICAgfSBlbHNlIGlmIChudW1iZXIoZnJvbVByb3AudmFsdWUpICYmIG51bWJlcih0b1Byb3AudmFsdWUpKSB7XG4gICAgICAgIGRpZmYgPSB0b1Byb3AudmFsdWUgLSBmcm9tUHJvcC52YWx1ZTsgLy8gbm9uemVybyBpcyB0cnV0aHlcblxuICAgICAgICBpbml0VmFsID0gZnJvbVByb3AudmFsdWUgKyBpbml0RHQgKiBkaWZmOyAvLyBjb25zaWRlciBjb2xvdXIgdmFsdWVzXG4gICAgICB9IGVsc2UgaWYgKGFycmF5KGZyb21Qcm9wLnZhbHVlKSAmJiBhcnJheSh0b1Byb3AudmFsdWUpKSB7XG4gICAgICAgIGRpZmYgPSBmcm9tUHJvcC52YWx1ZVswXSAhPT0gdG9Qcm9wLnZhbHVlWzBdIHx8IGZyb21Qcm9wLnZhbHVlWzFdICE9PSB0b1Byb3AudmFsdWVbMV0gfHwgZnJvbVByb3AudmFsdWVbMl0gIT09IHRvUHJvcC52YWx1ZVsyXTtcbiAgICAgICAgaW5pdFZhbCA9IGZyb21Qcm9wLnN0clZhbHVlO1xuICAgICAgfSAvLyB0aGUgcHJldmlvdXMgdmFsdWUgaXMgZ29vZCBmb3IgYW4gYW5pbWF0aW9uIG9ubHkgaWYgaXQncyBkaWZmZXJlbnRcblxuXG4gICAgICBpZiAoZGlmZikge1xuICAgICAgICBzdHlsZVtwcm9wXSA9IHRvUHJvcC5zdHJWYWx1ZTsgLy8gdG8gdmFsXG5cbiAgICAgICAgdGhpcy5hcHBseUJ5cGFzcyhlbGUsIHByb3AsIGluaXRWYWwpOyAvLyBmcm9tIHZhbFxuXG4gICAgICAgIGFueVByZXYgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gLy8gZW5kIGlmIHByb3BzIGFsbG93IGFuaVxuICAgIC8vIGNhbid0IHRyYW5zaXRpb24gaWYgdGhlcmUncyBub3RoaW5nIHByZXZpb3VzIHRvIHRyYW5zaXRpb24gZnJvbVxuXG5cbiAgICBpZiAoIWFueVByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfcC50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBpZiAoZGVsYXkgPiAwKSB7XG4gICAgICAgIGVsZS5kZWxheUFuaW1hdGlvbihkZWxheSkucGxheSgpLnByb21pc2UoKS50aGVuKHJlc29sdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGVsZS5hbmltYXRpb24oe1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICAgICAgZWFzaW5nOiBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicpLnZhbHVlLFxuICAgICAgICBxdWV1ZTogZmFsc2VcbiAgICAgIH0pLnBsYXkoKS5wcm9taXNlKCk7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBpZiggIWlzQnlwYXNzICl7XG4gICAgICBzZWxmLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgICAgZWxlLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIH1cblxuICAgICAgX3AudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKF9wLnRyYW5zaXRpb25pbmcpIHtcbiAgICB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdzdHlsZScpO1xuICAgIF9wLnRyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgfVxufTtcblxuc3R5Zm4uY2hlY2tUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBnZXRUcmlnZ2VyLCBvblRyaWdnZXIpIHtcbiAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gIHZhciB0cmlnZ2VyQ2hlY2sgPSBnZXRUcmlnZ2VyKHByb3ApO1xuXG4gIGlmICh0cmlnZ2VyQ2hlY2sgIT0gbnVsbCAmJiB0cmlnZ2VyQ2hlY2soZnJvbVZhbHVlLCB0b1ZhbHVlKSkge1xuICAgIG9uVHJpZ2dlcihwcm9wKTtcbiAgfVxufTtcblxuc3R5Zm4uY2hlY2taT3JkZXJUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5jaGVja1RyaWdnZXIoZWxlLCBuYW1lLCBmcm9tVmFsdWUsIHRvVmFsdWUsIGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AudHJpZ2dlcnNaT3JkZXI7XG4gIH0sIGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5fcHJpdmF0ZS5jeS5ub3RpZnkoJ3pvcmRlcicsIGVsZSk7XG4gIH0pO1xufTtcblxuc3R5Zm4uY2hlY2tCb3VuZHNUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gIHRoaXMuY2hlY2tUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBmdW5jdGlvbiAocHJvcCkge1xuICAgIHJldHVybiBwcm9wLnRyaWdnZXJzQm91bmRzO1xuICB9LCBmdW5jdGlvbiAocHJvcCkge1xuICAgIGVsZS5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcbiAgICBlbGUuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7IC8vIGlmIHRoZSBwcm9wIGNoYW5nZSBtYWtlcyB0aGUgYmIgb2YgcGxsIGJlemllciBlZGdlcyBpbnZhbGlkLFxuICAgIC8vIHRoZW4gZGlydHkgdGhlIHBsbCBlZGdlIGJiIGNhY2hlIGFzIHdlbGxcblxuICAgIGlmICggLy8gb25seSBmb3IgYmV6aWVycyAtLSBzbyBwZXJmb3JtYW5jZSBvZiBvdGhlciBlZGdlcyBpc24ndCBhZmZlY3RlZFxuICAgIG5hbWUgPT09ICdjdXJ2ZS1zdHlsZScgJiYgKGZyb21WYWx1ZSA9PT0gJ2JlemllcicgfHwgdG9WYWx1ZSA9PT0gJ2JlemllcicpICYmIHByb3AudHJpZ2dlcnNCb3VuZHNPZlBhcmFsbGVsQmV6aWVycykge1xuICAgICAgZWxlLnBhcmFsbGVsRWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChwbGxFZGdlKSB7XG4gICAgICAgIGlmIChwbGxFZGdlLmlzQnVuZGxlZEJlemllcigpKSB7XG4gICAgICAgICAgcGxsRWRnZS5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbnN0eWZuLmNoZWNrVHJpZ2dlcnMgPSBmdW5jdGlvbiAoZWxlLCBuYW1lLCBmcm9tVmFsdWUsIHRvVmFsdWUpIHtcbiAgZWxlLmRpcnR5U3R5bGVDYWNoZSgpO1xuICB0aGlzLmNoZWNrWk9yZGVyVHJpZ2dlcihlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSk7XG4gIHRoaXMuY2hlY2tCb3VuZHNUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKTtcbn07XG5cbnZhciBzdHlmbiQxID0ge307IC8vIGJ5cGFzc2VzIGFyZSBhcHBsaWVkIHRvIGFuIGV4aXN0aW5nIHN0eWxlIG9uIGFuIGVsZW1lbnQsIGFuZCBqdXN0IHRhY2tlZCBvbiB0ZW1wb3JhcmlseVxuLy8gcmV0dXJucyB0cnVlIGlmZiBhcHBsaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBmb3IgYXQgbGVhc3QgMSBzcGVjaWZpZWQgcHJvcGVydHlcblxuc3R5Zm4kMS5hcHBseUJ5cGFzcyA9IGZ1bmN0aW9uIChlbGVzLCBuYW1lLCB2YWx1ZSwgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcHJvcHMgPSBbXTtcbiAgdmFyIGlzQnlwYXNzID0gdHJ1ZTsgLy8gcHV0IGFsbCB0aGUgcHJvcGVydGllcyAoY2FuIHNwZWNpZnkgb25lIG9yIG1hbnkpIGluIGFuIGFycmF5IGFmdGVyIHBhcnNpbmcgdGhlbVxuXG4gIGlmIChuYW1lID09PSAnKicgfHwgbmFtZSA9PT0gJyoqJykge1xuICAgIC8vIGFwcGx5IHRvIGFsbCBwcm9wZXJ0eSBuYW1lc1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcHJvcCA9IHNlbGYucHJvcGVydGllc1tpXTtcbiAgICAgICAgdmFyIF9uYW1lID0gcHJvcC5uYW1lO1xuICAgICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UoX25hbWUsIHZhbHVlLCB0cnVlKTtcblxuICAgICAgICBpZiAocGFyc2VkUHJvcCkge1xuICAgICAgICAgIHByb3BzLnB1c2gocGFyc2VkUHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgLy8gdGhlbiBwYXJzZSB0aGUgc2luZ2xlIHByb3BlcnR5XG4gICAgdmFyIF9wYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZSwgdHJ1ZSk7XG5cbiAgICBpZiAoX3BhcnNlZFByb3ApIHtcbiAgICAgIHByb3BzLnB1c2goX3BhcnNlZFByb3ApO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChuYW1lKSkge1xuICAgIC8vIHRoZW4gcGFyc2UgZWFjaCBwcm9wZXJ0eVxuICAgIHZhciBzcGVjaWZpZWRQcm9wcyA9IG5hbWU7XG4gICAgdXBkYXRlVHJhbnNpdGlvbnMgPSB2YWx1ZTtcbiAgICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhzcGVjaWZpZWRQcm9wcyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbmFtZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX25hbWUyID0gbmFtZXNbX2ldO1xuICAgICAgdmFyIF92YWx1ZSA9IHNwZWNpZmllZFByb3BzW19uYW1lMl07XG5cbiAgICAgIGlmIChfdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0cnkgY2FtZWwgY2FzZSBuYW1lIHRvb1xuICAgICAgICBfdmFsdWUgPSBzcGVjaWZpZWRQcm9wc1tkYXNoMmNhbWVsKF9uYW1lMildO1xuICAgICAgfVxuXG4gICAgICBpZiAoX3ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIF9wYXJzZWRQcm9wMiA9IHRoaXMucGFyc2UoX25hbWUyLCBfdmFsdWUsIHRydWUpO1xuXG4gICAgICAgIGlmIChfcGFyc2VkUHJvcDIpIHtcbiAgICAgICAgICBwcm9wcy5wdXNoKF9wYXJzZWRQcm9wMik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gY2FuJ3QgZG8gYW55dGhpbmcgd2l0aG91dCB3ZWxsIGRlZmluZWQgcHJvcGVydGllc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyB3ZSd2ZSBmYWlsZWQgaWYgdGhlcmUgYXJlIG5vIHZhbGlkIHByb3BlcnRpZXNcblxuXG4gIGlmIChwcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gbm93LCBhcHBseSB0aGUgYnlwYXNzIHByb3BlcnRpZXMgb24gdGhlIGVsZW1lbnRzXG5cblxuICB2YXIgcmV0ID0gZmFsc2U7IC8vIHJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBzdWNjZXNmdWwgYnlwYXNzIGFwcGxpZWRcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBlbGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAvLyBmb3IgZWFjaCBlbGVcbiAgICB2YXIgZWxlID0gZWxlc1tfaTJdO1xuICAgIHZhciBkaWZmUHJvcHMgPSB7fTtcbiAgICB2YXIgZGlmZlByb3AgPSB2b2lkIDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAvLyBmb3IgZWFjaCBwcm9wXG4gICAgICB2YXIgX3Byb3AgPSBwcm9wc1tqXTtcblxuICAgICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICAgIHZhciBwcmV2UHJvcCA9IGVsZS5wc3R5bGUoX3Byb3AubmFtZSk7XG4gICAgICAgIGRpZmZQcm9wID0gZGlmZlByb3BzW19wcm9wLm5hbWVdID0ge1xuICAgICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHRoaXMuYXBwbHlQYXJzZWRQcm9wZXJ0eShlbGUsIGNvcHkoX3Byb3ApKSB8fCByZXQ7XG5cbiAgICAgIGlmICh1cGRhdGVUcmFuc2l0aW9ucykge1xuICAgICAgICBkaWZmUHJvcC5uZXh0ID0gZWxlLnBzdHlsZShfcHJvcC5uYW1lKTtcbiAgICAgIH1cbiAgICB9IC8vIGZvciBwcm9wc1xuXG5cbiAgICBpZiAocmV0KSB7XG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNpdGlvbnMoZWxlLCBkaWZmUHJvcHMsIGlzQnlwYXNzKTtcbiAgICB9XG4gIH0gLy8gZm9yIGVsZXNcblxuXG4gIHJldHVybiByZXQ7XG59OyAvLyBvbmx5IHVzZWZ1bCBpbiBzcGVjaWZpYyBjYXNlcyBsaWtlIGFuaW1hdGlvblxuXG5cbnN0eWZuJDEub3ZlcnJpZGVCeXBhc3MgPSBmdW5jdGlvbiAoZWxlcywgbmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdmFyIHByb3AgPSBlbGUuX3ByaXZhdGUuc3R5bGVbbmFtZV07XG4gICAgdmFyIHR5cGUgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV0udHlwZTtcbiAgICB2YXIgaXNDb2xvciA9IHR5cGUuY29sb3I7XG4gICAgdmFyIGlzTXVsdGkgPSB0eXBlLm11dGlwbGU7XG4gICAgdmFyIG9sZFZhbHVlID0gIXByb3AgPyBudWxsIDogcHJvcC5wZlZhbHVlICE9IG51bGwgPyBwcm9wLnBmVmFsdWUgOiBwcm9wLnZhbHVlO1xuXG4gICAgaWYgKCFwcm9wIHx8ICFwcm9wLmJ5cGFzcykge1xuICAgICAgLy8gbmVlZCBhIGJ5cGFzcyBpZiBvbmUgZG9lc24ndCBleGlzdFxuICAgICAgdGhpcy5hcHBseUJ5cGFzcyhlbGUsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICBpZiAocHJvcC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcHJvcC5wZlZhbHVlID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0NvbG9yKSB7XG4gICAgICAgIHByb3Auc3RyVmFsdWUgPSAncmdiKCcgKyB2YWx1ZS5qb2luKCcsJykgKyAnKSc7XG4gICAgICB9IGVsc2UgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcHJvcC5zdHJWYWx1ZSA9IHZhbHVlLmpvaW4oJyAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3Auc3RyVmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrVHJpZ2dlcnMoZWxlLCBuYW1lLCBvbGRWYWx1ZSwgdmFsdWUpO1xuICB9XG59O1xuXG5zdHlmbiQxLnJlbW92ZUFsbEJ5cGFzc2VzID0gZnVuY3Rpb24gKGVsZXMsIHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gIHJldHVybiB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZXMsIHRoaXMucHJvcGVydHlOYW1lcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xufTtcblxuc3R5Zm4kMS5yZW1vdmVCeXBhc3NlcyA9IGZ1bmN0aW9uIChlbGVzLCBwcm9wcywgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgdmFyIGlzQnlwYXNzID0gdHJ1ZTtcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IGVsZXMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tqXTtcbiAgICB2YXIgZGlmZlByb3BzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IHByb3BzW2ldO1xuICAgICAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gICAgICB2YXIgcHJldlByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICAgIGlmICghcHJldlByb3AgfHwgIXByZXZQcm9wLmJ5cGFzcykge1xuICAgICAgICAvLyBpZiBhIGJ5cGFzcyBkb2Vzbid0IGV4aXN0IGZvciB0aGUgcHJvcCwgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmFsdWUgPSAnJzsgLy8gZW1wdHkgPT4gcmVtb3ZlIGJ5cGFzc1xuXG4gICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUsIHRydWUpO1xuICAgICAgdmFyIGRpZmZQcm9wID0gZGlmZlByb3BzW3Byb3AubmFtZV0gPSB7XG4gICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICB9O1xuICAgICAgdGhpcy5hcHBseVBhcnNlZFByb3BlcnR5KGVsZSwgcGFyc2VkUHJvcCk7XG4gICAgICBkaWZmUHJvcC5uZXh0ID0gZWxlLnBzdHlsZShwcm9wLm5hbWUpO1xuICAgIH0gLy8gZm9yIHByb3BzXG5cblxuICAgIHRoaXMudXBkYXRlU3R5bGVIaW50cyhlbGUpO1xuXG4gICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgZGlmZlByb3BzLCBpc0J5cGFzcyk7XG4gICAgfVxuICB9IC8vIGZvciBlbGVzXG5cbn07XG5cbnZhciBzdHlmbiQyID0ge307IC8vIGdldHMgd2hhdCBhbiBlbSBzaXplIGNvcnJlc3BvbmRzIHRvIGluIHBpeGVscyByZWxhdGl2ZSB0byBhIGRvbSBlbGVtZW50XG5cbnN0eWZuJDIuZ2V0RW1TaXplSW5QaXhlbHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBweCA9IHRoaXMuY29udGFpbmVyQ3NzKCdmb250LXNpemUnKTtcblxuICBpZiAocHggIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHB4KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTsgLy8gZm9yIGhlYWRsZXNzXG4gIH1cbn07IC8vIGdldHMgY3NzIHByb3BlcnR5IGZyb20gdGhlIGNvcmUgY29udGFpbmVyXG5cblxuc3R5Zm4kMi5jb250YWluZXJDc3MgPSBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGRvbUVsZW1lbnQgPSBjeS5jb250YWluZXIoKTtcblxuICBpZiAod2luZG93JDEgJiYgZG9tRWxlbWVudCAmJiB3aW5kb3ckMS5nZXRDb21wdXRlZFN0eWxlKSB7XG4gICAgcmV0dXJuIHdpbmRvdyQxLmdldENvbXB1dGVkU3R5bGUoZG9tRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wTmFtZSk7XG4gIH1cbn07XG5cbnZhciBzdHlmbiQzID0ge307IC8vIGdldHMgdGhlIHJlbmRlcmVkIHN0eWxlIGZvciBhbiBlbGVtZW50XG5cbnN0eWZuJDMuZ2V0UmVuZGVyZWRTdHlsZSA9IGZ1bmN0aW9uIChlbGUsIHByb3ApIHtcbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBwcm9wLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSYXdTdHlsZShlbGUsIHRydWUpO1xuICB9XG59OyAvLyBnZXRzIHRoZSByYXcgc3R5bGUgZm9yIGFuIGVsZW1lbnRcblxuXG5zdHlmbiQzLmdldFJhd1N0eWxlID0gZnVuY3Rpb24gKGVsZSwgaXNSZW5kZXJlZFZhbCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGVsZSA9IGVsZVswXTsgLy8gaW5zdXJlIGl0J3MgYW4gZWxlbWVudFxuXG4gIGlmIChlbGUpIHtcbiAgICB2YXIgcnN0eWxlID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbaV07XG4gICAgICB2YXIgdmFsID0gc2VsZi5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBwcm9wLm5hbWUsIGlzUmVuZGVyZWRWYWwpO1xuXG4gICAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgICAgcnN0eWxlW3Byb3AubmFtZV0gPSB2YWw7XG4gICAgICAgIHJzdHlsZVtkYXNoMmNhbWVsKHByb3AubmFtZSldID0gdmFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByc3R5bGU7XG4gIH1cbn07XG5cbnN0eWZuJDMuZ2V0SW5kZXhlZFN0eWxlID0gZnVuY3Rpb24gKGVsZSwgcHJvcGVydHksIHN1YnByb3BlcnR5LCBpbmRleCkge1xuICB2YXIgcHN0eWxlID0gZWxlLnBzdHlsZShwcm9wZXJ0eSlbc3VicHJvcGVydHldW2luZGV4XTtcbiAgcmV0dXJuIHBzdHlsZSAhPSBudWxsID8gcHN0eWxlIDogZWxlLmN5KCkuc3R5bGUoKS5nZXREZWZhdWx0UHJvcGVydHkocHJvcGVydHkpW3N1YnByb3BlcnR5XVswXTtcbn07XG5cbnN0eWZuJDMuZ2V0U3R5bGVQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24gKGVsZSwgcHJvcE5hbWUsIGlzUmVuZGVyZWRWYWwpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBlbGUgPSBlbGVbMF07IC8vIGluc3VyZSBpdCdzIGFuIGVsZW1lbnRcblxuICBpZiAoZWxlKSB7XG4gICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXG4gICAgaWYgKHByb3AuYWxpYXMpIHtcbiAgICAgIHByb3AgPSBwcm9wLnBvaW50c1RvO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICAgIHZhciBzdHlsZVByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICBpZiAoc3R5bGVQcm9wKSB7XG4gICAgICB2YXIgdmFsdWUgPSBzdHlsZVByb3AudmFsdWUsXG4gICAgICAgICAgdW5pdHMgPSBzdHlsZVByb3AudW5pdHMsXG4gICAgICAgICAgc3RyVmFsdWUgPSBzdHlsZVByb3Auc3RyVmFsdWU7XG5cbiAgICAgIGlmIChpc1JlbmRlcmVkVmFsICYmIHR5cGUubnVtYmVyICYmIHZhbHVlICE9IG51bGwgJiYgbnVtYmVyKHZhbHVlKSkge1xuICAgICAgICB2YXIgem9vbSA9IGVsZS5jeSgpLnpvb20oKTtcblxuICAgICAgICB2YXIgZ2V0UmVuZGVyZWRWYWx1ZSA9IGZ1bmN0aW9uIGdldFJlbmRlcmVkVmFsdWUodmFsKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbCAqIHpvb207XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzID0gZnVuY3Rpb24gZ2V0VmFsdWVTdHJpbmdXaXRoVW5pdHModmFsLCB1bml0cykge1xuICAgICAgICAgIHJldHVybiBnZXRSZW5kZXJlZFZhbHVlKHZhbCkgKyB1bml0cztcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaXNBcnJheVZhbHVlID0gYXJyYXkodmFsdWUpO1xuICAgICAgICB2YXIgaGF2ZVVuaXRzID0gaXNBcnJheVZhbHVlID8gdW5pdHMuZXZlcnkoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICByZXR1cm4gdSAhPSBudWxsO1xuICAgICAgICB9KSA6IHVuaXRzICE9IG51bGw7XG5cbiAgICAgICAgaWYgKGhhdmVVbml0cykge1xuICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzKHYsIHVuaXRzW2ldKTtcbiAgICAgICAgICAgIH0pLmpvaW4oJyAnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzKHZhbHVlLCB1bml0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZyh2KSA/IHYgOiAnJyArIGdldFJlbmRlcmVkVmFsdWUodik7XG4gICAgICAgICAgICB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIGdldFJlbmRlcmVkVmFsdWUodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdHJWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuc3R5Zm4kMy5nZXRBbmltYXRpb25TdGFydFN0eWxlID0gZnVuY3Rpb24gKGVsZSwgYW5pUHJvcHMpIHtcbiAgdmFyIHJzdHlsZSA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pUHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYW5pUHJvcCA9IGFuaVByb3BzW2ldO1xuICAgIHZhciBuYW1lID0gYW5pUHJvcC5uYW1lO1xuICAgIHZhciBzdHlsZVByb3AgPSBlbGUucHN0eWxlKG5hbWUpO1xuXG4gICAgaWYgKHN0eWxlUHJvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyB0aGVuIG1ha2UgYSBwcm9wIG9mIGl0XG4gICAgICBpZiAocGxhaW5PYmplY3Qoc3R5bGVQcm9wKSkge1xuICAgICAgICBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKG5hbWUsIHN0eWxlUHJvcC5zdHJWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKG5hbWUsIHN0eWxlUHJvcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlUHJvcCkge1xuICAgICAgcnN0eWxlW25hbWVdID0gc3R5bGVQcm9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByc3R5bGU7XG59O1xuXG5zdHlmbiQzLmdldFByb3BzTGlzdCA9IGZ1bmN0aW9uIChwcm9wc09iaikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByc3R5bGUgPSBbXTtcbiAgdmFyIHN0eWxlID0gcHJvcHNPYmo7XG4gIHZhciBwcm9wcyA9IHNlbGYucHJvcGVydGllcztcblxuICBpZiAoc3R5bGUpIHtcbiAgICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhzdHlsZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgdmFyIHZhbCA9IHN0eWxlW25hbWVdO1xuICAgICAgdmFyIHByb3AgPSBwcm9wc1tuYW1lXSB8fCBwcm9wc1tjYW1lbDJkYXNoKG5hbWUpXTtcbiAgICAgIHZhciBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKHByb3AubmFtZSwgdmFsKTtcblxuICAgICAgaWYgKHN0eWxlUHJvcCkge1xuICAgICAgICByc3R5bGUucHVzaChzdHlsZVByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByc3R5bGU7XG59O1xuXG5zdHlmbiQzLmdldE5vbkRlZmF1bHRQcm9wZXJ0aWVzSGFzaCA9IGZ1bmN0aW9uIChlbGUsIHByb3BOYW1lcywgc2VlZCkge1xuICB2YXIgaGFzaCA9IHNlZWQuc2xpY2UoKTtcbiAgdmFyIG5hbWUsIHZhbCwgc3RyVmFsLCBjaFZhbDtcbiAgdmFyIGksIGo7XG5cbiAgZm9yIChpID0gMDsgaSA8IHByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIG5hbWUgPSBwcm9wTmFtZXNbaV07XG4gICAgdmFsID0gZWxlLnBzdHlsZShuYW1lLCBmYWxzZSk7XG5cbiAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAodmFsLnBmVmFsdWUgIT0gbnVsbCkge1xuICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgaGFzaFsxXSA9IGhhc2hJbnRBbHQoY2hWYWwsIGhhc2hbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJWYWwgPSB2YWwuc3RyVmFsdWU7XG5cbiAgICAgIGZvciAoaiA9IDA7IGogPCBzdHJWYWwubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2hWYWwgPSBzdHJWYWwuY2hhckNvZGVBdChqKTtcbiAgICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgICBoYXNoWzFdID0gaGFzaEludEFsdChjaFZhbCwgaGFzaFsxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xuXG5zdHlmbiQzLmdldFByb3BlcnRpZXNIYXNoID0gc3R5Zm4kMy5nZXROb25EZWZhdWx0UHJvcGVydGllc0hhc2g7XG5cbnZhciBzdHlmbiQ0ID0ge307XG5cbnN0eWZuJDQuYXBwZW5kRnJvbUpzb24gPSBmdW5jdGlvbiAoanNvbikge1xuICB2YXIgc3R5bGUgPSB0aGlzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb250ZXh0ID0ganNvbltpXTtcbiAgICB2YXIgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yO1xuICAgIHZhciBwcm9wcyA9IGNvbnRleHQuc3R5bGUgfHwgY29udGV4dC5jc3M7XG4gICAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yKTsgLy8gYXBwbHkgc2VsZWN0b3JcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmFtZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuYW1lID0gbmFtZXNbal07XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wc1tuYW1lXTtcbiAgICAgIHN0eWxlLmNzcyhuYW1lLCB2YWx1ZSk7IC8vIGFwcGx5IHByb3BlcnR5XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTsgLy8gYWNjZXNzaWJsZSBjeS5zdHlsZSgpIGZ1bmN0aW9uXG5cblxuc3R5Zm4kNC5mcm9tSnNvbiA9IGZ1bmN0aW9uIChqc29uKSB7XG4gIHZhciBzdHlsZSA9IHRoaXM7XG4gIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gIHN0eWxlLmFwcGVuZEZyb21Kc29uKGpzb24pO1xuICByZXR1cm4gc3R5bGU7XG59OyAvLyBnZXQganNvbiBmcm9tIGN5LnN0eWxlKCkgYXBpXG5cblxuc3R5Zm4kNC5qc29uID0gZnVuY3Rpb24gKCkge1xuICB2YXIganNvbiA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSB0aGlzLmRlZmF1bHRMZW5ndGg7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHRoaXNbaV07XG4gICAgdmFyIHNlbGVjdG9yID0gY3h0LnNlbGVjdG9yO1xuICAgIHZhciBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzO1xuICAgIHZhciBjc3MgPSB7fTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICBjc3NbcHJvcC5uYW1lXSA9IHByb3Auc3RyVmFsdWU7XG4gICAgfVxuXG4gICAganNvbi5wdXNoKHtcbiAgICAgIHNlbGVjdG9yOiAhc2VsZWN0b3IgPyAnY29yZScgOiBzZWxlY3Rvci50b1N0cmluZygpLFxuICAgICAgc3R5bGU6IGNzc1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGpzb247XG59O1xuXG52YXIgc3R5Zm4kNSA9IHt9O1xuXG5zdHlmbiQ1LmFwcGVuZEZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHN0eWxlID0gdGhpcztcbiAgdmFyIHJlbWFpbmluZyA9ICcnICsgc3RyaW5nO1xuICB2YXIgc2VsQW5kQmxvY2tTdHI7XG4gIHZhciBibG9ja1JlbTtcbiAgdmFyIHByb3BBbmRWYWxTdHI7IC8vIHJlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBzdHlsZSBzdHJpbmdcblxuICByZW1haW5pbmcgPSByZW1haW5pbmcucmVwbGFjZSgvWy9dWypdKFxcc3wuKSs/WypdWy9dL2csICcnKTtcblxuICBmdW5jdGlvbiByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKSB7XG4gICAgLy8gcmVtb3ZlIHRoZSBwYXJzZWQgc2VsZWN0b3IgYW5kIGJsb2NrIGZyb20gdGhlIHJlbWFpbmluZyB0ZXh0IHRvIHBhcnNlXG4gICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPiBzZWxBbmRCbG9ja1N0ci5sZW5ndGgpIHtcbiAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHIoc2VsQW5kQmxvY2tTdHIubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtYWluaW5nID0gJyc7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKSB7XG4gICAgLy8gcmVtb3ZlIHRoZSBwYXJzZWQgcHJvcGVydHkgYW5kIHZhbHVlIGZyb20gdGhlIHJlbWFpbmluZyBibG9jayB0ZXh0IHRvIHBhcnNlXG4gICAgaWYgKGJsb2NrUmVtLmxlbmd0aCA+IHByb3BBbmRWYWxTdHIubGVuZ3RoKSB7XG4gICAgICBibG9ja1JlbSA9IGJsb2NrUmVtLnN1YnN0cihwcm9wQW5kVmFsU3RyLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJsb2NrUmVtID0gJyc7XG4gICAgfVxuICB9XG5cbiAgZm9yICg7Oykge1xuICAgIHZhciBub3RoaW5nTGVmdFRvUGFyc2UgPSByZW1haW5pbmcubWF0Y2goL15cXHMqJC8pO1xuXG4gICAgaWYgKG5vdGhpbmdMZWZ0VG9QYXJzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIHNlbEFuZEJsb2NrID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKigoPzoufFxccykrPylcXHMqXFx7KCg/Oi58XFxzKSs/KVxcfS8pO1xuXG4gICAgaWYgKCFzZWxBbmRCbG9jaykge1xuICAgICAgd2FybignSGFsdGluZyBzdHlsZXNoZWV0IHBhcnNpbmc6IFN0cmluZyBzdHlsZXNoZWV0IGNvbnRhaW5zIG1vcmUgdG8gcGFyc2UgYnV0IG5vIHNlbGVjdG9yIGFuZCBibG9jayBmb3VuZCBpbjogJyArIHJlbWFpbmluZyk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzZWxBbmRCbG9ja1N0ciA9IHNlbEFuZEJsb2NrWzBdOyAvLyBwYXJzZSB0aGUgc2VsZWN0b3JcblxuICAgIHZhciBzZWxlY3RvclN0ciA9IHNlbEFuZEJsb2NrWzFdO1xuXG4gICAgaWYgKHNlbGVjdG9yU3RyICE9PSAnY29yZScpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IG5ldyBTZWxlY3RvcihzZWxlY3RvclN0cik7XG5cbiAgICAgIGlmIChzZWxlY3Rvci5pbnZhbGlkKSB7XG4gICAgICAgIHdhcm4oJ1NraXBwaW5nIHBhcnNpbmcgb2YgYmxvY2s6IEludmFsaWQgc2VsZWN0b3IgZm91bmQgaW4gc3RyaW5nIHN0eWxlc2hlZXQ6ICcgKyBzZWxlY3RvclN0cik7IC8vIHNraXAgdGhpcyBzZWxlY3RvciBhbmQgYmxvY2tcblxuICAgICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyBwYXJzZSB0aGUgYmxvY2sgb2YgcHJvcGVydGllcyBhbmQgdmFsdWVzXG5cblxuICAgIHZhciBibG9ja1N0ciA9IHNlbEFuZEJsb2NrWzJdO1xuICAgIHZhciBpbnZhbGlkQmxvY2sgPSBmYWxzZTtcbiAgICBibG9ja1JlbSA9IGJsb2NrU3RyO1xuICAgIHZhciBwcm9wcyA9IFtdO1xuXG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIF9ub3RoaW5nTGVmdFRvUGFyc2UgPSBibG9ja1JlbS5tYXRjaCgvXlxccyokLyk7XG5cbiAgICAgIGlmIChfbm90aGluZ0xlZnRUb1BhcnNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcEFuZFZhbCA9IGJsb2NrUmVtLm1hdGNoKC9eXFxzKiguKz8pXFxzKjpcXHMqKC4rPylcXHMqOy8pO1xuXG4gICAgICBpZiAoIXByb3BBbmRWYWwpIHtcbiAgICAgICAgd2FybignU2tpcHBpbmcgcGFyc2luZyBvZiBibG9jazogSW52YWxpZCBmb3JtYXR0aW5nIG9mIHN0eWxlIHByb3BlcnR5IGFuZCB2YWx1ZSBkZWZpbml0aW9ucyBmb3VuZCBpbjonICsgYmxvY2tTdHIpO1xuICAgICAgICBpbnZhbGlkQmxvY2sgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcHJvcEFuZFZhbFN0ciA9IHByb3BBbmRWYWxbMF07XG4gICAgICB2YXIgcHJvcFN0ciA9IHByb3BBbmRWYWxbMV07XG4gICAgICB2YXIgdmFsU3RyID0gcHJvcEFuZFZhbFsyXTtcbiAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3BTdHJdO1xuXG4gICAgICBpZiAoIXByb3ApIHtcbiAgICAgICAgd2FybignU2tpcHBpbmcgcHJvcGVydHk6IEludmFsaWQgcHJvcGVydHkgbmFtZSBpbjogJyArIHByb3BBbmRWYWxTdHIpOyAvLyBza2lwIHRoaXMgcHJvcGVydHkgaW4gdGhlIGJsb2NrXG5cbiAgICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJzZWRQcm9wID0gc3R5bGUucGFyc2UocHJvcFN0ciwgdmFsU3RyKTtcblxuICAgICAgaWYgKCFwYXJzZWRQcm9wKSB7XG4gICAgICAgIHdhcm4oJ1NraXBwaW5nIHByb3BlcnR5OiBJbnZhbGlkIHByb3BlcnR5IGRlZmluaXRpb24gaW46ICcgKyBwcm9wQW5kVmFsU3RyKTsgLy8gc2tpcCB0aGlzIHByb3BlcnR5IGluIHRoZSBibG9ja1xuXG4gICAgICAgIHJlbW92ZVByb3BBbmRWYWxGcm9tUmVtKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5wdXNoKHtcbiAgICAgICAgbmFtZTogcHJvcFN0cixcbiAgICAgICAgdmFsOiB2YWxTdHJcbiAgICAgIH0pO1xuICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICB9XG5cbiAgICBpZiAoaW52YWxpZEJsb2NrKSB7XG4gICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgIGJyZWFrO1xuICAgIH0gLy8gcHV0IHRoZSBwYXJzZWQgYmxvY2sgaW4gdGhlIHN0eWxlXG5cblxuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfcHJvcCA9IHByb3BzW2ldO1xuICAgICAgc3R5bGUuY3NzKF9wcm9wLm5hbWUsIF9wcm9wLnZhbCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VsQW5kQmxvY2tGcm9tUmVtYWluaW5nKCk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG5zdHlmbiQ1LmZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBzdHlsZSA9IHRoaXM7XG4gIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gIHN0eWxlLmFwcGVuZEZyb21TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIHN0eWZuJDYgPSB7fTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG51bWJlciA9IG51bWJlciQxO1xuICB2YXIgcmdiYSA9IHJnYmFOb0JhY2tSZWZzO1xuICB2YXIgaHNsYSA9IGhzbGFOb0JhY2tSZWZzO1xuICB2YXIgaGV4MyQxID0gaGV4MztcbiAgdmFyIGhleDYkMSA9IGhleDY7XG5cbiAgdmFyIGRhdGEgPSBmdW5jdGlvbiBkYXRhKHByZWZpeCkge1xuICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXChcXFxccyooW1xcXFx3XFxcXC5dKylcXFxccypcXFxcKSQnO1xuICB9O1xuXG4gIHZhciBtYXBEYXRhID0gZnVuY3Rpb24gbWFwRGF0YShwcmVmaXgpIHtcbiAgICB2YXIgbWFwQXJnID0gbnVtYmVyICsgJ3xcXFxcdyt8JyArIHJnYmEgKyAnfCcgKyBoc2xhICsgJ3wnICsgaGV4MyQxICsgJ3wnICsgaGV4NiQxO1xuICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXCgoW1xcXFx3XFxcXC5dKylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKCcgKyBtYXBBcmcgKyAnKVxcXFxzKlxcXFwsXFxcXHMqKCcgKyBtYXBBcmcgKyAnKVxcXFwpJCc7XG4gIH07XG5cbiAgdmFyIHVybFJlZ2V4ZXMgPSBbJ151cmxcXFxccypcXFxcKFxcXFxzKltcXCdcIl0/KC4rPylbXFwnXCJdP1xcXFxzKlxcXFwpJCcsICdeKG5vbmUpJCcsICdeKC4rKSQnXTsgLy8gZWFjaCB2aXN1YWwgc3R5bGUgcHJvcGVydHkgaGFzIGEgdHlwZSBhbmQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkIGFjY29yZGluZyB0byBpdFxuXG4gIHN0eWZuJDYudHlwZXMgPSB7XG4gICAgdGltZToge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgbWluOiAwLFxuICAgICAgdW5pdHM6ICdzfG1zJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICdtcydcbiAgICB9LFxuICAgIHBlcmNlbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgdW5pdHM6ICclJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICclJ1xuICAgIH0sXG4gICAgcGVyY2VudGFnZXM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgdW5pdHM6ICclJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICclJyxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICB6ZXJvT25lTnVtYmVyOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDEsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgemVyb09uZU51bWJlcnM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIG5PbmVPbmVOdW1iZXI6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogLTEsXG4gICAgICBtYXg6IDEsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgbm9uTmVnYXRpdmVJbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgcG9zaXRpb246IHtcbiAgICAgIGVudW1zOiBbJ3BhcmVudCcsICdvcmlnaW4nXVxuICAgIH0sXG4gICAgbm9kZVNpemU6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGVudW1zOiBbJ2xhYmVsJ11cbiAgICB9LFxuICAgIG51bWJlcjoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgdW5pdGxlc3M6IHRydWVcbiAgICB9LFxuICAgIG51bWJlcnM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIHBvc2l0aXZlTnVtYmVyOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICB1bml0bGVzczogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIHN0cmljdE1pbjogdHJ1ZVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgbWluOiAwXG4gICAgfSxcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZToge1xuICAgICAgbnVtYmVyOiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZU1heWJlUGVyY2VudDoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgYWxsb3dQZXJjZW50OiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZXM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBzaXplTWF5YmVQZXJjZW50OiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtaW46IDAsXG4gICAgICBhbGxvd1BlcmNlbnQ6IHRydWVcbiAgICB9LFxuICAgIGF4aXNEaXJlY3Rpb246IHtcbiAgICAgIGVudW1zOiBbJ2hvcml6b250YWwnLCAnbGVmdHdhcmQnLCAncmlnaHR3YXJkJywgJ3ZlcnRpY2FsJywgJ3Vwd2FyZCcsICdkb3dud2FyZCcsICdhdXRvJ11cbiAgICB9LFxuICAgIHBhZGRpbmdSZWxhdGl2ZVRvOiB7XG4gICAgICBlbnVtczogWyd3aWR0aCcsICdoZWlnaHQnLCAnYXZlcmFnZScsICdtaW4nLCAnbWF4J11cbiAgICB9LFxuICAgIGJnV0g6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGFsbG93UGVyY2VudDogdHJ1ZSxcbiAgICAgIGVudW1zOiBbJ2F1dG8nXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBiZ1Bvczoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgYWxsb3dQZXJjZW50OiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGJnUmVsYXRpdmVUbzoge1xuICAgICAgZW51bXM6IFsnaW5uZXInLCAnaW5jbHVkZS1wYWRkaW5nJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdSZXBlYXQ6IHtcbiAgICAgIGVudW1zOiBbJ3JlcGVhdCcsICdyZXBlYXQteCcsICdyZXBlYXQteScsICduby1yZXBlYXQnXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBiZ0ZpdDoge1xuICAgICAgZW51bXM6IFsnbm9uZScsICdjb250YWluJywgJ2NvdmVyJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdDcm9zc09yaWdpbjoge1xuICAgICAgZW51bXM6IFsnYW5vbnltb3VzJywgJ3VzZS1jcmVkZW50aWFscyddLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGJnQ2xpcDoge1xuICAgICAgZW51bXM6IFsnbm9uZScsICdub2RlJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdDb250YWlubWVudDoge1xuICAgICAgZW51bXM6IFsnaW5zaWRlJywgJ292ZXInXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgY29sb3I6IHRydWVcbiAgICB9LFxuICAgIGNvbG9yczoge1xuICAgICAgY29sb3I6IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgZmlsbDoge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnbGluZWFyLWdyYWRpZW50JywgJ3JhZGlhbC1ncmFkaWVudCddXG4gICAgfSxcbiAgICBib29sOiB7XG4gICAgICBlbnVtczogWyd5ZXMnLCAnbm8nXVxuICAgIH0sXG4gICAgYm9vbHM6IHtcbiAgICAgIGVudW1zOiBbJ3llcycsICdubyddLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGxpbmVTdHlsZToge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCddXG4gICAgfSxcbiAgICBsaW5lQ2FwOiB7XG4gICAgICBlbnVtczogWydidXR0JywgJ3JvdW5kJywgJ3NxdWFyZSddXG4gICAgfSxcbiAgICBib3JkZXJTdHlsZToge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCcsICdkb3VibGUnXVxuICAgIH0sXG4gICAgY3VydmVTdHlsZToge1xuICAgICAgZW51bXM6IFsnYmV6aWVyJywgJ3VuYnVuZGxlZC1iZXppZXInLCAnaGF5c3RhY2snLCAnc2VnbWVudHMnLCAnc3RyYWlnaHQnLCAnc3RyYWlnaHQtdHJpYW5nbGUnLCAndGF4aSddXG4gICAgfSxcbiAgICBmb250RmFtaWx5OiB7XG4gICAgICByZWdleDogJ14oW1xcXFx3LSBcXFxcXCJdKyg/OlxcXFxzKixcXFxccypbXFxcXHctIFxcXFxcIl0rKSopJCdcbiAgICB9LFxuICAgIGZvbnRTdHlsZToge1xuICAgICAgZW51bXM6IFsnaXRhbGljJywgJ25vcm1hbCcsICdvYmxpcXVlJ11cbiAgICB9LFxuICAgIGZvbnRXZWlnaHQ6IHtcbiAgICAgIGVudW1zOiBbJ25vcm1hbCcsICdib2xkJywgJ2JvbGRlcicsICdsaWdodGVyJywgJzEwMCcsICcyMDAnLCAnMzAwJywgJzQwMCcsICc1MDAnLCAnNjAwJywgJzgwMCcsICc5MDAnLCAxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCwgNjAwLCA3MDAsIDgwMCwgOTAwXVxuICAgIH0sXG4gICAgdGV4dERlY29yYXRpb246IHtcbiAgICAgIGVudW1zOiBbJ25vbmUnLCAndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCddXG4gICAgfSxcbiAgICB0ZXh0VHJhbnNmb3JtOiB7XG4gICAgICBlbnVtczogWydub25lJywgJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnXVxuICAgIH0sXG4gICAgdGV4dFdyYXA6IHtcbiAgICAgIGVudW1zOiBbJ25vbmUnLCAnd3JhcCcsICdlbGxpcHNpcyddXG4gICAgfSxcbiAgICB0ZXh0T3ZlcmZsb3dXcmFwOiB7XG4gICAgICBlbnVtczogWyd3aGl0ZXNwYWNlJywgJ2FueXdoZXJlJ11cbiAgICB9LFxuICAgIHRleHRCYWNrZ3JvdW5kU2hhcGU6IHtcbiAgICAgIGVudW1zOiBbJ3JlY3RhbmdsZScsICdyb3VuZHJlY3RhbmdsZScsICdyb3VuZC1yZWN0YW5nbGUnXVxuICAgIH0sXG4gICAgbm9kZVNoYXBlOiB7XG4gICAgICBlbnVtczogWydyZWN0YW5nbGUnLCAncm91bmRyZWN0YW5nbGUnLCAncm91bmQtcmVjdGFuZ2xlJywgJ2N1dHJlY3RhbmdsZScsICdjdXQtcmVjdGFuZ2xlJywgJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJywgJ2JvdHRvbS1yb3VuZC1yZWN0YW5nbGUnLCAnYmFycmVsJywgJ2VsbGlwc2UnLCAndHJpYW5nbGUnLCAncm91bmQtdHJpYW5nbGUnLCAnc3F1YXJlJywgJ3BlbnRhZ29uJywgJ3JvdW5kLXBlbnRhZ29uJywgJ2hleGFnb24nLCAncm91bmQtaGV4YWdvbicsICdjb25jYXZlaGV4YWdvbicsICdjb25jYXZlLWhleGFnb24nLCAnaGVwdGFnb24nLCAncm91bmQtaGVwdGFnb24nLCAnb2N0YWdvbicsICdyb3VuZC1vY3RhZ29uJywgJ3RhZycsICdyb3VuZC10YWcnLCAnc3RhcicsICdkaWFtb25kJywgJ3JvdW5kLWRpYW1vbmQnLCAndmVlJywgJ3Job21ib2lkJywgJ3BvbHlnb24nXVxuICAgIH0sXG4gICAgb3ZlcmxheVNoYXBlOiB7XG4gICAgICBlbnVtczogWydyb3VuZHJlY3RhbmdsZScsICdyb3VuZC1yZWN0YW5nbGUnLCAnZWxsaXBzZSddXG4gICAgfSxcbiAgICBjb21wb3VuZEluY2x1ZGVMYWJlbHM6IHtcbiAgICAgIGVudW1zOiBbJ2luY2x1ZGUnLCAnZXhjbHVkZSddXG4gICAgfSxcbiAgICBhcnJvd1NoYXBlOiB7XG4gICAgICBlbnVtczogWyd0ZWUnLCAndHJpYW5nbGUnLCAndHJpYW5nbGUtdGVlJywgJ2NpcmNsZS10cmlhbmdsZScsICd0cmlhbmdsZS1jcm9zcycsICd0cmlhbmdsZS1iYWNrY3VydmUnLCAndmVlJywgJ3NxdWFyZScsICdjaXJjbGUnLCAnZGlhbW9uZCcsICdjaGV2cm9uJywgJ25vbmUnXVxuICAgIH0sXG4gICAgYXJyb3dGaWxsOiB7XG4gICAgICBlbnVtczogWydmaWxsZWQnLCAnaG9sbG93J11cbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIGVudW1zOiBbJ2VsZW1lbnQnLCAnbm9uZSddXG4gICAgfSxcbiAgICB2aXNpYmlsaXR5OiB7XG4gICAgICBlbnVtczogWydoaWRkZW4nLCAndmlzaWJsZSddXG4gICAgfSxcbiAgICB6Q29tcG91bmREZXB0aDoge1xuICAgICAgZW51bXM6IFsnYm90dG9tJywgJ29ycGhhbicsICdhdXRvJywgJ3RvcCddXG4gICAgfSxcbiAgICB6SW5kZXhDb21wYXJlOiB7XG4gICAgICBlbnVtczogWydhdXRvJywgJ21hbnVhbCddXG4gICAgfSxcbiAgICB2YWxpZ246IHtcbiAgICAgIGVudW1zOiBbJ3RvcCcsICdjZW50ZXInLCAnYm90dG9tJ11cbiAgICB9LFxuICAgIGhhbGlnbjoge1xuICAgICAgZW51bXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXVxuICAgIH0sXG4gICAganVzdGlmaWNhdGlvbjoge1xuICAgICAgZW51bXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnYXV0byddXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBzdHJpbmc6IHRydWVcbiAgICB9LFxuICAgIGRhdGE6IHtcbiAgICAgIG1hcHBpbmc6IHRydWUsXG4gICAgICByZWdleDogZGF0YSgnZGF0YScpXG4gICAgfSxcbiAgICBsYXlvdXREYXRhOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgcmVnZXg6IGRhdGEoJ2xheW91dERhdGEnKVxuICAgIH0sXG4gICAgc2NyYXRjaDoge1xuICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgIHJlZ2V4OiBkYXRhKCdzY3JhdGNoJylcbiAgICB9LFxuICAgIG1hcERhdGE6IHtcbiAgICAgIG1hcHBpbmc6IHRydWUsXG4gICAgICByZWdleDogbWFwRGF0YSgnbWFwRGF0YScpXG4gICAgfSxcbiAgICBtYXBMYXlvdXREYXRhOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgcmVnZXg6IG1hcERhdGEoJ21hcExheW91dERhdGEnKVxuICAgIH0sXG4gICAgbWFwU2NyYXRjaDoge1xuICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgIHJlZ2V4OiBtYXBEYXRhKCdtYXBTY3JhdGNoJylcbiAgICB9LFxuICAgIGZuOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgZm46IHRydWVcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgIHNpbmdsZVJlZ2V4TWF0Y2hWYWx1ZTogdHJ1ZVxuICAgIH0sXG4gICAgdXJsczoge1xuICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgIHNpbmdsZVJlZ2V4TWF0Y2hWYWx1ZTogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBwcm9wTGlzdDoge1xuICAgICAgcHJvcExpc3Q6IHRydWVcbiAgICB9LFxuICAgIGFuZ2xlOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICB1bml0czogJ2RlZ3xyYWQnLFxuICAgICAgaW1wbGljaXRVbml0czogJ3JhZCdcbiAgICB9LFxuICAgIHRleHRSb3RhdGlvbjoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgdW5pdHM6ICdkZWd8cmFkJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICdyYWQnLFxuICAgICAgZW51bXM6IFsnbm9uZScsICdhdXRvcm90YXRlJ11cbiAgICB9LFxuICAgIHBvbHlnb25Qb2ludExpc3Q6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgZXZlbk11bHRpcGxlOiB0cnVlLFxuICAgICAgbWluOiAtMSxcbiAgICAgIG1heDogMSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlXG4gICAgfSxcbiAgICBlZGdlRGlzdGFuY2VzOiB7XG4gICAgICBlbnVtczogWydpbnRlcnNlY3Rpb24nLCAnbm9kZS1wb3NpdGlvbiddXG4gICAgfSxcbiAgICBlZGdlRW5kcG9pbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgdW5pdHM6ICclfHB4fGVtfGRlZ3xyYWQnLFxuICAgICAgaW1wbGljaXRVbml0czogJ3B4JyxcbiAgICAgIGVudW1zOiBbJ2luc2lkZS10by1ub2RlJywgJ291dHNpZGUtdG8tbm9kZScsICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnLCAnb3V0c2lkZS10by1saW5lJywgJ291dHNpZGUtdG8tbGluZS1vci1sYWJlbCddLFxuICAgICAgc2luZ2xlRW51bTogdHJ1ZSxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxBcnIsIHVuaXRzQXJyKSB7XG4gICAgICAgIHN3aXRjaCAodmFsQXJyLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIGNhbiBiZSAlIG9yIHB4IG9ubHlcbiAgICAgICAgICAgIHJldHVybiB1bml0c0FyclswXSAhPT0gJ2RlZycgJiYgdW5pdHNBcnJbMF0gIT09ICdyYWQnICYmIHVuaXRzQXJyWzFdICE9PSAnZGVnJyAmJiB1bml0c0FyclsxXSAhPT0gJ3JhZCc7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyBjYW4gYmUgZW51bSwgZGVnLCBvciByYWQgb25seVxuICAgICAgICAgICAgcmV0dXJuIHN0cmluZyh2YWxBcnJbMF0pIHx8IHVuaXRzQXJyWzBdID09PSAnZGVnJyB8fCB1bml0c0FyclswXSA9PT0gJ3JhZCc7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBlYXNpbmc6IHtcbiAgICAgIHJlZ2V4ZXM6IFsnXihzcHJpbmcpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccypcXFxcKSQnLCAnXihjdWJpYy1iZXppZXIpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIgKyAnKVxcXFxzKixcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqXFxcXCkkJ10sXG4gICAgICBlbnVtczogWydsaW5lYXInLCAnZWFzZScsICdlYXNlLWluJywgJ2Vhc2Utb3V0JywgJ2Vhc2UtaW4tb3V0JywgJ2Vhc2UtaW4tc2luZScsICdlYXNlLW91dC1zaW5lJywgJ2Vhc2UtaW4tb3V0LXNpbmUnLCAnZWFzZS1pbi1xdWFkJywgJ2Vhc2Utb3V0LXF1YWQnLCAnZWFzZS1pbi1vdXQtcXVhZCcsICdlYXNlLWluLWN1YmljJywgJ2Vhc2Utb3V0LWN1YmljJywgJ2Vhc2UtaW4tb3V0LWN1YmljJywgJ2Vhc2UtaW4tcXVhcnQnLCAnZWFzZS1vdXQtcXVhcnQnLCAnZWFzZS1pbi1vdXQtcXVhcnQnLCAnZWFzZS1pbi1xdWludCcsICdlYXNlLW91dC1xdWludCcsICdlYXNlLWluLW91dC1xdWludCcsICdlYXNlLWluLWV4cG8nLCAnZWFzZS1vdXQtZXhwbycsICdlYXNlLWluLW91dC1leHBvJywgJ2Vhc2UtaW4tY2lyYycsICdlYXNlLW91dC1jaXJjJywgJ2Vhc2UtaW4tb3V0LWNpcmMnXVxuICAgIH0sXG4gICAgZ3JhZGllbnREaXJlY3Rpb246IHtcbiAgICAgIGVudW1zOiBbJ3RvLWJvdHRvbScsICd0by10b3AnLCAndG8tbGVmdCcsICd0by1yaWdodCcsICd0by1ib3R0b20tcmlnaHQnLCAndG8tYm90dG9tLWxlZnQnLCAndG8tdG9wLXJpZ2h0JywgJ3RvLXRvcC1sZWZ0JywgJ3RvLXJpZ2h0LWJvdHRvbScsICd0by1sZWZ0LWJvdHRvbScsICd0by1yaWdodC10b3AnLCAndG8tbGVmdC10b3AnXVxuICAgIH0sXG4gICAgYm91bmRzRXhwYW5zaW9uOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxBcnIpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHZhbEFyci5sZW5ndGg7XG4gICAgICAgIHJldHVybiBsZW5ndGggPT09IDEgfHwgbGVuZ3RoID09PSAyIHx8IGxlbmd0aCA9PT0gNDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHZhciBkaWZmID0ge1xuICAgIHplcm9Ob25aZXJvOiBmdW5jdGlvbiB6ZXJvTm9uWmVybyh2YWwxLCB2YWwyKSB7XG4gICAgICBpZiAoKHZhbDEgPT0gbnVsbCB8fCB2YWwyID09IG51bGwpICYmIHZhbDEgIT09IHZhbDIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIG51bGwgY2FzZXMgY291bGQgcmVwcmVzZW50IGFueSB2YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsMSA9PSAwICYmIHZhbDIgIT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsMSAhPSAwICYmIHZhbDIgPT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFueTogZnVuY3Rpb24gYW55KHZhbDEsIHZhbDIpIHtcbiAgICAgIHJldHVybiB2YWwxICE9IHZhbDI7XG4gICAgfSxcbiAgICBlbXB0eU5vbkVtcHR5OiBmdW5jdGlvbiBlbXB0eU5vbkVtcHR5KHN0cjEsIHN0cjIpIHtcbiAgICAgIHZhciBlbXB0eTEgPSBlbXB0eVN0cmluZyhzdHIxKTtcbiAgICAgIHZhciBlbXB0eTIgPSBlbXB0eVN0cmluZyhzdHIyKTtcbiAgICAgIHJldHVybiBlbXB0eTEgJiYgIWVtcHR5MiB8fCAhZW1wdHkxICYmIGVtcHR5MjtcbiAgICB9XG4gIH07IC8vIGRlZmluZSB2aXN1YWwgc3R5bGUgcHJvcGVydGllc1xuICAvL1xuICAvLyAtIG4uYi4gYWRkaW5nIGEgbmV3IGdyb3VwIG9mIHByb3BzIG1heSByZXF1aXJlIHVwZGF0ZXMgdG8gdXBkYXRlU3R5bGVIaW50cygpXG4gIC8vIC0gYWRkaW5nIG5ldyBwcm9wcyB0byBhbiBleGlzdGluZyBncm91cCBnZXRzIGhhbmRsZWQgYXV0b21hdGljYWxseVxuXG4gIHZhciB0ID0gc3R5Zm4kNi50eXBlcztcbiAgdmFyIG1haW5MYWJlbCA9IFt7XG4gICAgbmFtZTogJ2xhYmVsJyxcbiAgICB0eXBlOiB0LnRleHQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmVtcHR5Tm9uRW1wdHlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LXJvdGF0aW9uJyxcbiAgICB0eXBlOiB0LnRleHRSb3RhdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LW1hcmdpbi14JyxcbiAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgc291cmNlTGFiZWwgPSBbe1xuICAgIG5hbWU6ICdzb3VyY2UtbGFiZWwnLFxuICAgIHR5cGU6IHQudGV4dCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzb3VyY2UtdGV4dC1yb3RhdGlvbicsXG4gICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtbWFyZ2luLXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtb2Zmc2V0JyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgdGFyZ2V0TGFiZWwgPSBbe1xuICAgIG5hbWU6ICd0YXJnZXQtbGFiZWwnLFxuICAgIHR5cGU6IHQudGV4dCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0YXJnZXQtdGV4dC1yb3RhdGlvbicsXG4gICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtbWFyZ2luLXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtb2Zmc2V0JyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgbGFiZWxEaW1lbnNpb25zID0gW3tcbiAgICBuYW1lOiAnZm9udC1mYW1pbHknLFxuICAgIHR5cGU6IHQuZm9udEZhbWlseSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdmb250LXN0eWxlJyxcbiAgICB0eXBlOiB0LmZvbnRTdHlsZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdmb250LXdlaWdodCcsXG4gICAgdHlwZTogdC5mb250V2VpZ2h0LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2ZvbnQtc2l6ZScsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtdHJhbnNmb3JtJyxcbiAgICB0eXBlOiB0LnRleHRUcmFuc2Zvcm0sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC13cmFwJyxcbiAgICB0eXBlOiB0LnRleHRXcmFwLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtb3ZlcmZsb3ctd3JhcCcsXG4gICAgdHlwZTogdC50ZXh0T3ZlcmZsb3dXcmFwLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtbWF4LXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbGluZS1oZWlnaHQnLFxuICAgIHR5cGU6IHQucG9zaXRpdmVOdW1iZXIsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgY29tbW9uTGFiZWwgPSBbe1xuICAgIG5hbWU6ICd0ZXh0LXZhbGlnbicsXG4gICAgdHlwZTogdC52YWxpZ24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1oYWxpZ24nLFxuICAgIHR5cGU6IHQuaGFsaWduLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2NvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYm9yZGVyLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYm9yZGVyLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1ib3JkZXItd2lkdGgnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJvcmRlci1zdHlsZScsXG4gICAgdHlwZTogdC5ib3JkZXJTdHlsZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnLFxuICAgIHR5cGU6IHQudGV4dEJhY2tncm91bmRTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWp1c3RpZmljYXRpb24nLFxuICAgIHR5cGU6IHQuanVzdGlmaWNhdGlvblxuICB9XTtcbiAgdmFyIGJlaGF2aW9yID0gW3tcbiAgICBuYW1lOiAnZXZlbnRzJyxcbiAgICB0eXBlOiB0LmJvb2xcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWV2ZW50cycsXG4gICAgdHlwZTogdC5ib29sXG4gIH1dO1xuICB2YXIgdmlzaWJpbGl0eSA9IFt7XG4gICAgbmFtZTogJ2Rpc3BsYXknLFxuICAgIHR5cGU6IHQuZGlzcGxheSxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnksXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzQm91bmRzT2ZQYXJhbGxlbEJlemllcnM6IHRydWVcbiAgfSwge1xuICAgIG5hbWU6ICd2aXNpYmlsaXR5JyxcbiAgICB0eXBlOiB0LnZpc2liaWxpdHksXG4gICAgdHJpZ2dlcnNaT3JkZXI6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyLFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLnplcm9Ob25aZXJvXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdtaW4tem9vbWVkLWZvbnQtc2l6ZScsXG4gICAgdHlwZTogdC5zaXplXG4gIH0sIHtcbiAgICBuYW1lOiAnei1jb21wb3VuZC1kZXB0aCcsXG4gICAgdHlwZTogdC56Q29tcG91bmREZXB0aCxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd6LWluZGV4LWNvbXBhcmUnLFxuICAgIHR5cGU6IHQuekluZGV4Q29tcGFyZSxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd6LWluZGV4JyxcbiAgICB0eXBlOiB0Lm5vbk5lZ2F0aXZlSW50LFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmFueVxuICB9XTtcbiAgdmFyIG92ZXJsYXkgPSBbe1xuICAgIG5hbWU6ICdvdmVybGF5LXBhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdvdmVybGF5LWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnb3ZlcmxheS1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXIsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuemVyb05vblplcm9cbiAgfSwge1xuICAgIG5hbWU6ICdvdmVybGF5LXNoYXBlJyxcbiAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciB1bmRlcmxheSA9IFt7XG4gICAgbmFtZTogJ3VuZGVybGF5LXBhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd1bmRlcmxheS1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ3VuZGVybGF5LW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi56ZXJvTm9uWmVyb1xuICB9LCB7XG4gICAgbmFtZTogJ3VuZGVybGF5LXNoYXBlJyxcbiAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciB0cmFuc2l0aW9uID0gW3tcbiAgICBuYW1lOiAndHJhbnNpdGlvbi1wcm9wZXJ0eScsXG4gICAgdHlwZTogdC5wcm9wTGlzdFxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tZHVyYXRpb24nLFxuICAgIHR5cGU6IHQudGltZVxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tZGVsYXknLFxuICAgIHR5cGU6IHQudGltZVxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICB0eXBlOiB0LmVhc2luZ1xuICB9XTtcblxuICB2YXIgbm9kZVNpemVIYXNoT3ZlcnJpZGUgPSBmdW5jdGlvbiBub2RlU2l6ZUhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApIHtcbiAgICBpZiAocGFyc2VkUHJvcC52YWx1ZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIC1lbGUucG9vbEluZGV4KCk7IC8vIG5vIGhhc2gga2V5IGhpdHMgaXMgdXNpbmcgbGFiZWwgc2l6ZSAoaGl0cmF0ZSBmb3IgcGVyZiBwcm9iYWJseSBsb3cgYW55d2F5KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyc2VkUHJvcC5wZlZhbHVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgbm9kZUJvZHkgPSBbe1xuICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgIHR5cGU6IHQubm9kZVNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIGhhc2hPdmVycmlkZTogbm9kZVNpemVIYXNoT3ZlcnJpZGVcbiAgfSwge1xuICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgdHlwZTogdC5ub2RlU2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnksXG4gICAgaGFzaE92ZXJyaWRlOiBub2RlU2l6ZUhhc2hPdmVycmlkZVxuICB9LCB7XG4gICAgbmFtZTogJ3NoYXBlJyxcbiAgICB0eXBlOiB0Lm5vZGVTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzaGFwZS1wb2x5Z29uLXBvaW50cycsXG4gICAgdHlwZTogdC5wb2x5Z29uUG9pbnRMaXN0LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWZpbGwnLFxuICAgIHR5cGU6IHQuZmlsbFxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1ibGFja2VuJyxcbiAgICB0eXBlOiB0Lm5PbmVPbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWdyYWRpZW50LXN0b3AtY29sb3JzJyxcbiAgICB0eXBlOiB0LmNvbG9yc1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtZ3JhZGllbnQtc3RvcC1wb3NpdGlvbnMnLFxuICAgIHR5cGU6IHQucGVyY2VudGFnZXNcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbicsXG4gICAgdHlwZTogdC5ncmFkaWVudERpcmVjdGlvblxuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdwYWRkaW5nLXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LnBhZGRpbmdSZWxhdGl2ZVRvLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2JvdW5kcy1leHBhbnNpb24nLFxuICAgIHR5cGU6IHQuYm91bmRzRXhwYW5zaW9uLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9XTtcbiAgdmFyIG5vZGVCb3JkZXIgPSBbe1xuICAgIG5hbWU6ICdib3JkZXItY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdib3JkZXItb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH0sIHtcbiAgICBuYW1lOiAnYm9yZGVyLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnYm9yZGVyLXN0eWxlJyxcbiAgICB0eXBlOiB0LmJvcmRlclN0eWxlXG4gIH1dO1xuICB2YXIgYmFja2dyb3VuZEltYWdlID0gW3tcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZScsXG4gICAgdHlwZTogdC51cmxzXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbicsXG4gICAgdHlwZTogdC5iZ0Nyb3NzT3JpZ2luXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJzXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1jb250YWlubWVudCcsXG4gICAgdHlwZTogdC5iZ0NvbnRhaW5tZW50XG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLFxuICAgIHR5cGU6IHQuYm9vbHNcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXdpZHRoLXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LmJnUmVsYXRpdmVUb1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LmJnUmVsYXRpdmVUb1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtcmVwZWF0JyxcbiAgICB0eXBlOiB0LmJnUmVwZWF0XG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1maXQnLFxuICAgIHR5cGU6IHQuYmdGaXRcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWNsaXAnLFxuICAgIHR5cGU6IHQuYmdDbGlwXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC13aWR0aCcsXG4gICAgdHlwZTogdC5iZ1dIXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1oZWlnaHQnLFxuICAgIHR5cGU6IHQuYmdXSFxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtb2Zmc2V0LXgnLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLW9mZnNldC15JyxcbiAgICB0eXBlOiB0LmJnUG9zXG4gIH1dO1xuICB2YXIgY29tcG91bmQgPSBbe1xuICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgdHlwZTogdC5wb3NpdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscycsXG4gICAgdHlwZTogdC5jb21wb3VuZEluY2x1ZGVMYWJlbHMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLXdpZHRoLWJpYXMtbGVmdCcsXG4gICAgdHlwZTogdC5zaXplTWF5YmVQZXJjZW50LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ21pbi13aWR0aC1iaWFzLXJpZ2h0JyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLWhlaWdodCcsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ21pbi1oZWlnaHQtYmlhcy10b3AnLFxuICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgZWRnZUxpbmUgPSBbe1xuICAgIG5hbWU6ICdsaW5lLXN0eWxlJyxcbiAgICB0eXBlOiB0LmxpbmVTdHlsZVxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLWZpbGwnLFxuICAgIHR5cGU6IHQuZmlsbFxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtY2FwJyxcbiAgICB0eXBlOiB0LmxpbmVDYXBcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtZGFzaC1wYXR0ZXJuJyxcbiAgICB0eXBlOiB0Lm51bWJlcnNcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLWRhc2gtb2Zmc2V0JyxcbiAgICB0eXBlOiB0Lm51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtZ3JhZGllbnQtc3RvcC1jb2xvcnMnLFxuICAgIHR5cGU6IHQuY29sb3JzXG4gIH0sIHtcbiAgICBuYW1lOiAnbGluZS1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucycsXG4gICAgdHlwZTogdC5wZXJjZW50YWdlc1xuICB9LCB7XG4gICAgbmFtZTogJ2N1cnZlLXN0eWxlJyxcbiAgICB0eXBlOiB0LmN1cnZlU3R5bGUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzQm91bmRzT2ZQYXJhbGxlbEJlemllcnM6IHRydWVcbiAgfSwge1xuICAgIG5hbWU6ICdoYXlzdGFjay1yYWRpdXMnLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzb3VyY2UtZW5kcG9pbnQnLFxuICAgIHR5cGU6IHQuZWRnZUVuZHBvaW50LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RhcmdldC1lbmRwb2ludCcsXG4gICAgdHlwZTogdC5lZGdlRW5kcG9pbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdjb250cm9sLXBvaW50LWRpc3RhbmNlcycsXG4gICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZXMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJyxcbiAgICB0eXBlOiB0Lm51bWJlcnMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc2VnbWVudC1kaXN0YW5jZXMnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemVzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3NlZ21lbnQtd2VpZ2h0cycsXG4gICAgdHlwZTogdC5udW1iZXJzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RheGktdHVybicsXG4gICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0YXhpLXR1cm4tbWluLWRpc3RhbmNlJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGF4aS1kaXJlY3Rpb24nLFxuICAgIHR5cGU6IHQuYXhpc0RpcmVjdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdlZGdlLWRpc3RhbmNlcycsXG4gICAgdHlwZTogdC5lZGdlRGlzdGFuY2VzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2Fycm93LXNjYWxlJyxcbiAgICB0eXBlOiB0LnBvc2l0aXZlTnVtYmVyLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2xvb3AtZGlyZWN0aW9uJyxcbiAgICB0eXBlOiB0LmFuZ2xlLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2xvb3Atc3dlZXAnLFxuICAgIHR5cGU6IHQuYW5nbGUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLWRpc3RhbmNlLWZyb20tbm9kZScsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciBnaG9zdCA9IFt7XG4gICAgbmFtZTogJ2dob3N0JyxcbiAgICB0eXBlOiB0LmJvb2wsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH1dO1xuICB2YXIgY29yZSA9IFt7XG4gICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdzZWxlY3Rpb24tYm94LW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnLFxuICAgIHR5cGU6IHQuc2l6ZVxuICB9LCB7XG4gICAgbmFtZTogJ2FjdGl2ZS1iZy1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ2FjdGl2ZS1iZy1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdhY3RpdmUtYmctc2l6ZScsXG4gICAgdHlwZTogdC5zaXplXG4gIH0sIHtcbiAgICBuYW1lOiAnb3V0c2lkZS10ZXh0dXJlLWJnLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9XTsgLy8gcGllIGJhY2tncm91bmRzIGZvciBub2Rlc1xuXG4gIHZhciBwaWUgPSBbXTtcbiAgc3R5Zm4kNi5waWVCYWNrZ3JvdW5kTiA9IDE2OyAvLyBiZWNhdXNlIHRoZSBwaWUgcHJvcGVydGllcyBhcmUgbnVtYmVyZWQsIGdpdmUgYWNjZXNzIHRvIGEgY29uc3RhbnQgTiAoZm9yIHJlbmRlcmVyIHVzZSlcblxuICBwaWUucHVzaCh7XG4gICAgbmFtZTogJ3BpZS1zaXplJyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnRcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc3R5Zm4kNi5waWVCYWNrZ3JvdW5kTjsgaSsrKSB7XG4gICAgcGllLnB1c2goe1xuICAgICAgbmFtZTogJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSk7XG4gICAgcGllLnB1c2goe1xuICAgICAgbmFtZTogJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1zaXplJyxcbiAgICAgIHR5cGU6IHQucGVyY2VudFxuICAgIH0pO1xuICAgIHBpZS5wdXNoKHtcbiAgICAgIG5hbWU6ICdwaWUtJyArIGkgKyAnLWJhY2tncm91bmQtb3BhY2l0eScsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgICB9KTtcbiAgfSAvLyBlZGdlIGFycm93c1xuXG5cbiAgdmFyIGVkZ2VBcnJvdyA9IFtdO1xuICB2YXIgYXJyb3dQcmVmaXhlcyA9IHN0eWZuJDYuYXJyb3dQcmVmaXhlcyA9IFsnc291cmNlJywgJ21pZC1zb3VyY2UnLCAndGFyZ2V0JywgJ21pZC10YXJnZXQnXTtcbiAgW3tcbiAgICBuYW1lOiAnYXJyb3ctc2hhcGUnLFxuICAgIHR5cGU6IHQuYXJyb3dTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdhcnJvdy1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ2Fycm93LWZpbGwnLFxuICAgIHR5cGU6IHQuYXJyb3dGaWxsXG4gIH1dLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBhcnJvd1ByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgdmFyIG5hbWUgPSBwcmVmaXggKyAnLScgKyBwcm9wLm5hbWU7XG4gICAgICB2YXIgdHlwZSA9IHByb3AudHlwZSxcbiAgICAgICAgICB0cmlnZ2Vyc0JvdW5kcyA9IHByb3AudHJpZ2dlcnNCb3VuZHM7XG4gICAgICBlZGdlQXJyb3cucHVzaCh7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIHRyaWdnZXJzQm91bmRzOiB0cmlnZ2Vyc0JvdW5kc1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHt9KTtcbiAgdmFyIHByb3BzID0gc3R5Zm4kNi5wcm9wZXJ0aWVzID0gW10uY29uY2F0KGJlaGF2aW9yLCB0cmFuc2l0aW9uLCB2aXNpYmlsaXR5LCBvdmVybGF5LCB1bmRlcmxheSwgZ2hvc3QsIGNvbW1vbkxhYmVsLCBsYWJlbERpbWVuc2lvbnMsIG1haW5MYWJlbCwgc291cmNlTGFiZWwsIHRhcmdldExhYmVsLCBub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBwaWUsIGNvbXBvdW5kLCBlZGdlTGluZSwgZWRnZUFycm93LCBjb3JlKTtcbiAgdmFyIHByb3BHcm91cHMgPSBzdHlmbiQ2LnByb3BlcnR5R3JvdXBzID0ge1xuICAgIC8vIGNvbW1vbiB0byBhbGwgZWxlc1xuICAgIGJlaGF2aW9yOiBiZWhhdmlvcixcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHksXG4gICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICB1bmRlcmxheTogdW5kZXJsYXksXG4gICAgZ2hvc3Q6IGdob3N0LFxuICAgIC8vIGxhYmVsc1xuICAgIGNvbW1vbkxhYmVsOiBjb21tb25MYWJlbCxcbiAgICBsYWJlbERpbWVuc2lvbnM6IGxhYmVsRGltZW5zaW9ucyxcbiAgICBtYWluTGFiZWw6IG1haW5MYWJlbCxcbiAgICBzb3VyY2VMYWJlbDogc291cmNlTGFiZWwsXG4gICAgdGFyZ2V0TGFiZWw6IHRhcmdldExhYmVsLFxuICAgIC8vIG5vZGUgcHJvcHNcbiAgICBub2RlQm9keTogbm9kZUJvZHksXG4gICAgbm9kZUJvcmRlcjogbm9kZUJvcmRlcixcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGJhY2tncm91bmRJbWFnZSxcbiAgICBwaWU6IHBpZSxcbiAgICBjb21wb3VuZDogY29tcG91bmQsXG4gICAgLy8gZWRnZSBwcm9wc1xuICAgIGVkZ2VMaW5lOiBlZGdlTGluZSxcbiAgICBlZGdlQXJyb3c6IGVkZ2VBcnJvdyxcbiAgICBjb3JlOiBjb3JlXG4gIH07XG4gIHZhciBwcm9wR3JvdXBOYW1lcyA9IHN0eWZuJDYucHJvcGVydHlHcm91cE5hbWVzID0ge307XG4gIHZhciBwcm9wR3JvdXBLZXlzID0gc3R5Zm4kNi5wcm9wZXJ0eUdyb3VwS2V5cyA9IE9iamVjdC5rZXlzKHByb3BHcm91cHMpO1xuICBwcm9wR3JvdXBLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHByb3BHcm91cE5hbWVzW2tleV0gPSBwcm9wR3JvdXBzW2tleV0ubWFwKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcC5uYW1lO1xuICAgIH0pO1xuICAgIHByb3BHcm91cHNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcC5ncm91cEtleSA9IGtleTtcbiAgICB9KTtcbiAgfSk7IC8vIGRlZmluZSBhbGlhc2VzXG5cbiAgdmFyIGFsaWFzZXMgPSBzdHlmbiQ2LmFsaWFzZXMgPSBbe1xuICAgIG5hbWU6ICdjb250ZW50JyxcbiAgICBwb2ludHNUbzogJ2xhYmVsJ1xuICB9LCB7XG4gICAgbmFtZTogJ2NvbnRyb2wtcG9pbnQtZGlzdGFuY2UnLFxuICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnXG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHQnLFxuICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJ1xuICB9LCB7XG4gICAgbmFtZTogJ2VkZ2UtdGV4dC1yb3RhdGlvbicsXG4gICAgcG9pbnRzVG86ICd0ZXh0LXJvdGF0aW9uJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctbGVmdCcsXG4gICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctcmlnaHQnLFxuICAgIHBvaW50c1RvOiAncGFkZGluZydcbiAgfSwge1xuICAgIG5hbWU6ICdwYWRkaW5nLXRvcCcsXG4gICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctYm90dG9tJyxcbiAgICBwb2ludHNUbzogJ3BhZGRpbmcnXG4gIH1dOyAvLyBsaXN0IG9mIHByb3BlcnR5IG5hbWVzXG5cbiAgc3R5Zm4kNi5wcm9wZXJ0eU5hbWVzID0gcHJvcHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgcmV0dXJuIHAubmFtZTtcbiAgfSk7IC8vIGFsbG93IGFjY2VzcyBvZiBwcm9wZXJ0aWVzIGJ5IG5hbWUgKCBlLmcuIHN0eWxlLnByb3BlcnRpZXMuaGVpZ2h0IClcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcHJvcHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9wc1tfaV07XG4gICAgcHJvcHNbcHJvcC5uYW1lXSA9IHByb3A7IC8vIGFsbG93IGxvb2t1cCBieSBuYW1lXG4gIH0gLy8gbWFwIGFsaWFzZXNcblxuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGFsaWFzZXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBhbGlhcyA9IGFsaWFzZXNbX2kyXTtcbiAgICB2YXIgcG9pbnRzVG9Qcm9wID0gcHJvcHNbYWxpYXMucG9pbnRzVG9dO1xuICAgIHZhciBhbGlhc1Byb3AgPSB7XG4gICAgICBuYW1lOiBhbGlhcy5uYW1lLFxuICAgICAgYWxpYXM6IHRydWUsXG4gICAgICBwb2ludHNUbzogcG9pbnRzVG9Qcm9wXG4gICAgfTsgLy8gYWRkIGFsaWFzIHByb3AgZm9yIHBhcnNpbmdcblxuICAgIHByb3BzLnB1c2goYWxpYXNQcm9wKTtcbiAgICBwcm9wc1thbGlhcy5uYW1lXSA9IGFsaWFzUHJvcDsgLy8gYWxsb3cgbG9va3VwIGJ5IG5hbWVcbiAgfVxufSkoKTtcblxuc3R5Zm4kNi5nZXREZWZhdWx0UHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gdGhpcy5nZXREZWZhdWx0UHJvcGVydGllcygpW25hbWVdO1xufTtcblxuc3R5Zm4kNi5nZXREZWZhdWx0UHJvcGVydGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICBpZiAoX3AuZGVmYXVsdFByb3BlcnRpZXMgIT0gbnVsbCkge1xuICAgIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbiAgfVxuXG4gIHZhciByYXdQcm9wcyA9IGV4dGVuZCh7XG4gICAgLy8gY29yZSBwcm9wc1xuICAgICdzZWxlY3Rpb24tYm94LWNvbG9yJzogJyNkZGQnLFxuICAgICdzZWxlY3Rpb24tYm94LW9wYWNpdHknOiAwLjY1LFxuICAgICdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcic6ICcjYWFhJyxcbiAgICAnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnOiAxLFxuICAgICdhY3RpdmUtYmctY29sb3InOiAnYmxhY2snLFxuICAgICdhY3RpdmUtYmctb3BhY2l0eSc6IDAuMTUsXG4gICAgJ2FjdGl2ZS1iZy1zaXplJzogMzAsXG4gICAgJ291dHNpZGUtdGV4dHVyZS1iZy1jb2xvcic6ICcjMDAwJyxcbiAgICAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknOiAwLjEyNSxcbiAgICAvLyBjb21tb24gbm9kZS9lZGdlIHByb3BzXG4gICAgJ2V2ZW50cyc6ICd5ZXMnLFxuICAgICd0ZXh0LWV2ZW50cyc6ICdubycsXG4gICAgJ3RleHQtdmFsaWduJzogJ3RvcCcsXG4gICAgJ3RleHQtaGFsaWduJzogJ2NlbnRlcicsXG4gICAgJ3RleHQtanVzdGlmaWNhdGlvbic6ICdhdXRvJyxcbiAgICAnbGluZS1oZWlnaHQnOiAxLFxuICAgICdjb2xvcic6ICcjMDAwJyxcbiAgICAndGV4dC1vdXRsaW5lLWNvbG9yJzogJyMwMDAnLFxuICAgICd0ZXh0LW91dGxpbmUtd2lkdGgnOiAwLFxuICAgICd0ZXh0LW91dGxpbmUtb3BhY2l0eSc6IDEsXG4gICAgJ3RleHQtb3BhY2l0eSc6IDEsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJyxcbiAgICAndGV4dC10cmFuc2Zvcm0nOiAnbm9uZScsXG4gICAgJ3RleHQtd3JhcCc6ICdub25lJyxcbiAgICAndGV4dC1vdmVyZmxvdy13cmFwJzogJ3doaXRlc3BhY2UnLFxuICAgICd0ZXh0LW1heC13aWR0aCc6IDk5OTksXG4gICAgJ3RleHQtYmFja2dyb3VuZC1jb2xvcic6ICcjMDAwJyxcbiAgICAndGV4dC1iYWNrZ3JvdW5kLW9wYWNpdHknOiAwLFxuICAgICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnOiAncmVjdGFuZ2xlJyxcbiAgICAndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnOiAwLFxuICAgICd0ZXh0LWJvcmRlci1vcGFjaXR5JzogMCxcbiAgICAndGV4dC1ib3JkZXItd2lkdGgnOiAwLFxuICAgICd0ZXh0LWJvcmRlci1zdHlsZSc6ICdzb2xpZCcsXG4gICAgJ3RleHQtYm9yZGVyLWNvbG9yJzogJyMwMDAnLFxuICAgICdmb250LWZhbWlseSc6ICdIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxcbiAgICAnZm9udC1zdHlsZSc6ICdub3JtYWwnLFxuICAgICdmb250LXdlaWdodCc6ICdub3JtYWwnLFxuICAgICdmb250LXNpemUnOiAxNixcbiAgICAnbWluLXpvb21lZC1mb250LXNpemUnOiAwLFxuICAgICd0ZXh0LXJvdGF0aW9uJzogJ25vbmUnLFxuICAgICdzb3VyY2UtdGV4dC1yb3RhdGlvbic6ICdub25lJyxcbiAgICAndGFyZ2V0LXRleHQtcm90YXRpb24nOiAnbm9uZScsXG4gICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsXG4gICAgJ2Rpc3BsYXknOiAnZWxlbWVudCcsXG4gICAgJ29wYWNpdHknOiAxLFxuICAgICd6LWNvbXBvdW5kLWRlcHRoJzogJ2F1dG8nLFxuICAgICd6LWluZGV4LWNvbXBhcmUnOiAnYXV0bycsXG4gICAgJ3otaW5kZXgnOiAwLFxuICAgICdsYWJlbCc6ICcnLFxuICAgICd0ZXh0LW1hcmdpbi14JzogMCxcbiAgICAndGV4dC1tYXJnaW4teSc6IDAsXG4gICAgJ3NvdXJjZS1sYWJlbCc6ICcnLFxuICAgICdzb3VyY2UtdGV4dC1vZmZzZXQnOiAwLFxuICAgICdzb3VyY2UtdGV4dC1tYXJnaW4teCc6IDAsXG4gICAgJ3NvdXJjZS10ZXh0LW1hcmdpbi15JzogMCxcbiAgICAndGFyZ2V0LWxhYmVsJzogJycsXG4gICAgJ3RhcmdldC10ZXh0LW9mZnNldCc6IDAsXG4gICAgJ3RhcmdldC10ZXh0LW1hcmdpbi14JzogMCxcbiAgICAndGFyZ2V0LXRleHQtbWFyZ2luLXknOiAwLFxuICAgICdvdmVybGF5LW9wYWNpdHknOiAwLFxuICAgICdvdmVybGF5LWNvbG9yJzogJyMwMDAnLFxuICAgICdvdmVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAnb3ZlcmxheS1zaGFwZSc6ICdyb3VuZC1yZWN0YW5nbGUnLFxuICAgICd1bmRlcmxheS1vcGFjaXR5JzogMCxcbiAgICAndW5kZXJsYXktY29sb3InOiAnIzAwMCcsXG4gICAgJ3VuZGVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAndW5kZXJsYXktc2hhcGUnOiAncm91bmQtcmVjdGFuZ2xlJyxcbiAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6ICdub25lJyxcbiAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IDAsXG4gICAgJ3RyYW5zaXRpb24tZGVsYXknOiAwLFxuICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6ICdsaW5lYXInLFxuICAgIC8vIG5vZGUgcHJvcHNcbiAgICAnYmFja2dyb3VuZC1ibGFja2VuJzogMCxcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjOTk5JyxcbiAgICAnYmFja2dyb3VuZC1maWxsJzogJ3NvbGlkJyxcbiAgICAnYmFja2dyb3VuZC1vcGFjaXR5JzogMSxcbiAgICAnYmFja2dyb3VuZC1pbWFnZSc6ICdub25lJyxcbiAgICAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbic6ICdhbm9ueW1vdXMnLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknOiAxLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JzogJ2luc2lkZScsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2Utc21vb3RoaW5nJzogJ3llcycsXG4gICAgJ2JhY2tncm91bmQtcG9zaXRpb24teCc6ICc1MCUnLFxuICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknOiAnNTAlJyxcbiAgICAnYmFja2dyb3VuZC1vZmZzZXQteCc6IDAsXG4gICAgJ2JhY2tncm91bmQtb2Zmc2V0LXknOiAwLFxuICAgICdiYWNrZ3JvdW5kLXdpZHRoLXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgJ2JhY2tncm91bmQtcmVwZWF0JzogJ25vLXJlcGVhdCcsXG4gICAgJ2JhY2tncm91bmQtZml0JzogJ25vbmUnLFxuICAgICdiYWNrZ3JvdW5kLWNsaXAnOiAnbm9kZScsXG4gICAgJ2JhY2tncm91bmQtd2lkdGgnOiAnYXV0bycsXG4gICAgJ2JhY2tncm91bmQtaGVpZ2h0JzogJ2F1dG8nLFxuICAgICdib3JkZXItY29sb3InOiAnIzAwMCcsXG4gICAgJ2JvcmRlci1vcGFjaXR5JzogMSxcbiAgICAnYm9yZGVyLXdpZHRoJzogMCxcbiAgICAnYm9yZGVyLXN0eWxlJzogJ3NvbGlkJyxcbiAgICAnaGVpZ2h0JzogMzAsXG4gICAgJ3dpZHRoJzogMzAsXG4gICAgJ3NoYXBlJzogJ2VsbGlwc2UnLFxuICAgICdzaGFwZS1wb2x5Z29uLXBvaW50cyc6ICctMSwgLTEsICAgMSwgLTEsICAgMSwgMSwgICAtMSwgMScsXG4gICAgJ2JvdW5kcy1leHBhbnNpb24nOiAwLFxuICAgIC8vIG5vZGUgZ3JhZGllbnRcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1kaXJlY3Rpb24nOiAndG8tYm90dG9tJyxcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLWNvbG9ycyc6ICcjOTk5JyxcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucyc6ICcwJScsXG4gICAgLy8gZ2hvc3QgcHJvcHNcbiAgICAnZ2hvc3QnOiAnbm8nLFxuICAgICdnaG9zdC1vZmZzZXQteSc6IDAsXG4gICAgJ2dob3N0LW9mZnNldC14JzogMCxcbiAgICAnZ2hvc3Qtb3BhY2l0eSc6IDAsXG4gICAgLy8gY29tcG91bmQgcHJvcHNcbiAgICAncGFkZGluZyc6IDAsXG4gICAgJ3BhZGRpbmctcmVsYXRpdmUtdG8nOiAnd2lkdGgnLFxuICAgICdwb3NpdGlvbic6ICdvcmlnaW4nLFxuICAgICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscyc6ICdpbmNsdWRlJyxcbiAgICAnbWluLXdpZHRoJzogMCxcbiAgICAnbWluLXdpZHRoLWJpYXMtbGVmdCc6IDAsXG4gICAgJ21pbi13aWR0aC1iaWFzLXJpZ2h0JzogMCxcbiAgICAnbWluLWhlaWdodCc6IDAsXG4gICAgJ21pbi1oZWlnaHQtYmlhcy10b3AnOiAwLFxuICAgICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJzogMFxuICB9LCB7XG4gICAgLy8gbm9kZSBwaWUgYmdcbiAgICAncGllLXNpemUnOiAnMTAwJSdcbiAgfSwgW3tcbiAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtY29sb3InLFxuICAgIHZhbHVlOiAnYmxhY2snXG4gIH0sIHtcbiAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtc2l6ZScsXG4gICAgdmFsdWU6ICcwJSdcbiAgfSwge1xuICAgIG5hbWU6ICdwaWUte3tpfX0tYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICB2YWx1ZTogMVxuICB9XS5yZWR1Y2UoZnVuY3Rpb24gKGNzcywgcHJvcCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHN0eWZuJDYucGllQmFja2dyb3VuZE47IGkrKykge1xuICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWUucmVwbGFjZSgne3tpfX0nLCBpKTtcbiAgICAgIHZhciB2YWwgPSBwcm9wLnZhbHVlO1xuICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgIH1cblxuICAgIHJldHVybiBjc3M7XG4gIH0sIHt9KSwge1xuICAgIC8vIGVkZ2UgcHJvcHNcbiAgICAnbGluZS1zdHlsZSc6ICdzb2xpZCcsXG4gICAgJ2xpbmUtY29sb3InOiAnIzk5OScsXG4gICAgJ2xpbmUtZmlsbCc6ICdzb2xpZCcsXG4gICAgJ2xpbmUtY2FwJzogJ2J1dHQnLFxuICAgICdsaW5lLW9wYWNpdHknOiAxLFxuICAgICdsaW5lLWdyYWRpZW50LXN0b3AtY29sb3JzJzogJyM5OTknLFxuICAgICdsaW5lLWdyYWRpZW50LXN0b3AtcG9zaXRpb25zJzogJzAlJyxcbiAgICAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnOiA0MCxcbiAgICAnY29udHJvbC1wb2ludC13ZWlnaHRzJzogMC41LFxuICAgICdzZWdtZW50LXdlaWdodHMnOiAwLjUsXG4gICAgJ3NlZ21lbnQtZGlzdGFuY2VzJzogMjAsXG4gICAgJ3RheGktdHVybic6ICc1MCUnLFxuICAgICd0YXhpLXR1cm4tbWluLWRpc3RhbmNlJzogMTAsXG4gICAgJ3RheGktZGlyZWN0aW9uJzogJ2F1dG8nLFxuICAgICdlZGdlLWRpc3RhbmNlcyc6ICdpbnRlcnNlY3Rpb24nLFxuICAgICdjdXJ2ZS1zdHlsZSc6ICdoYXlzdGFjaycsXG4gICAgJ2hheXN0YWNrLXJhZGl1cyc6IDAsXG4gICAgJ2Fycm93LXNjYWxlJzogMSxcbiAgICAnbG9vcC1kaXJlY3Rpb24nOiAnLTQ1ZGVnJyxcbiAgICAnbG9vcC1zd2VlcCc6ICctOTBkZWcnLFxuICAgICdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJzogMCxcbiAgICAndGFyZ2V0LWRpc3RhbmNlLWZyb20tbm9kZSc6IDAsXG4gICAgJ3NvdXJjZS1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLW5vZGUnLFxuICAgICd0YXJnZXQtZW5kcG9pbnQnOiAnb3V0c2lkZS10by1ub2RlJyxcbiAgICAnbGluZS1kYXNoLXBhdHRlcm4nOiBbNiwgM10sXG4gICAgJ2xpbmUtZGFzaC1vZmZzZXQnOiAwXG4gIH0sIFt7XG4gICAgbmFtZTogJ2Fycm93LXNoYXBlJyxcbiAgICB2YWx1ZTogJ25vbmUnXG4gIH0sIHtcbiAgICBuYW1lOiAnYXJyb3ctY29sb3InLFxuICAgIHZhbHVlOiAnIzk5OSdcbiAgfSwge1xuICAgIG5hbWU6ICdhcnJvdy1maWxsJyxcbiAgICB2YWx1ZTogJ2ZpbGxlZCdcbiAgfV0ucmVkdWNlKGZ1bmN0aW9uIChjc3MsIHByb3ApIHtcbiAgICBzdHlmbiQ2LmFycm93UHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG4gICAgICB2YXIgbmFtZSA9IHByZWZpeCArICctJyArIHByb3AubmFtZTtcbiAgICAgIHZhciB2YWwgPSBwcm9wLnZhbHVlO1xuICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgIH0pO1xuICAgIHJldHVybiBjc3M7XG4gIH0sIHt9KSk7XG4gIHZhciBwYXJzZWRQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbaV07XG5cbiAgICBpZiAocHJvcC5wb2ludHNUbykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgdmFyIHZhbCA9IHJhd1Byb3BzW25hbWVdO1xuICAgIHZhciBwYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWwpO1xuICAgIHBhcnNlZFByb3BzW25hbWVdID0gcGFyc2VkUHJvcDtcbiAgfVxuXG4gIF9wLmRlZmF1bHRQcm9wZXJ0aWVzID0gcGFyc2VkUHJvcHM7XG4gIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbn07XG5cbnN0eWZuJDYuYWRkRGVmYXVsdFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VsZWN0b3IoJzpwYXJlbnQnKS5jc3Moe1xuICAgICdzaGFwZSc6ICdyZWN0YW5nbGUnLFxuICAgICdwYWRkaW5nJzogMTAsXG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2VlZScsXG4gICAgJ2JvcmRlci1jb2xvcic6ICcjY2NjJyxcbiAgICAnYm9yZGVyLXdpZHRoJzogMVxuICB9KS5zZWxlY3RvcignZWRnZScpLmNzcyh7XG4gICAgJ3dpZHRoJzogM1xuICB9KS5zZWxlY3RvcignOmxvb3AnKS5jc3Moe1xuICAgICdjdXJ2ZS1zdHlsZSc6ICdiZXppZXInXG4gIH0pLnNlbGVjdG9yKCdlZGdlOmNvbXBvdW5kJykuY3NzKHtcbiAgICAnY3VydmUtc3R5bGUnOiAnYmV6aWVyJyxcbiAgICAnc291cmNlLWVuZHBvaW50JzogJ291dHNpZGUtdG8tbGluZScsXG4gICAgJ3RhcmdldC1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLWxpbmUnXG4gIH0pLnNlbGVjdG9yKCc6c2VsZWN0ZWQnKS5jc3Moe1xuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICdsaW5lLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICdzb3VyY2UtYXJyb3ctY29sb3InOiAnIzAxNjlEOScsXG4gICAgJ3RhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAnbWlkLXNvdXJjZS1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAnbWlkLXRhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5J1xuICB9KS5zZWxlY3RvcignOnBhcmVudDpzZWxlY3RlZCcpLmNzcyh7XG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI0NDRTFGOScsXG4gICAgJ2JvcmRlci1jb2xvcic6ICcjYWVjOGU1J1xuICB9KS5zZWxlY3RvcignOmFjdGl2ZScpLmNzcyh7XG4gICAgJ292ZXJsYXktY29sb3InOiAnYmxhY2snLFxuICAgICdvdmVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAnb3ZlcmxheS1vcGFjaXR5JzogMC4yNVxuICB9KTtcbiAgdGhpcy5kZWZhdWx0TGVuZ3RoID0gdGhpcy5sZW5ndGg7XG59O1xuXG52YXIgc3R5Zm4kNyA9IHt9OyAvLyBhIGNhY2hpbmcgbGF5ZXIgZm9yIHByb3BlcnR5IHBhcnNpbmdcblxuc3R5Zm4kNy5wYXJzZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gIHZhciBzZWxmID0gdGhpczsgLy8gZnVuY3Rpb24gdmFsdWVzIGNhbid0IGJlIGNhY2hlZCBpbiBhbGwgY2FzZXMsIGFuZCB0aGVyZSBpc24ndCBtdWNoIGJlbmVmaXQgb2YgY2FjaGluZyB0aGVtIGFueXdheVxuXG4gIGlmIChmbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZUltcGxXYXJuKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuICB9XG5cbiAgdmFyIGZsYXRLZXkgPSBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycgfHwgcHJvcElzRmxhdCA9PT0gdHJ1ZSB8fCBwcm9wSXNGbGF0ID09PSBmYWxzZSB8fCBwcm9wSXNGbGF0ID09IG51bGwgPyAnZG9udGNhcmUnIDogcHJvcElzRmxhdDtcbiAgdmFyIGJ5cGFzc0tleSA9IHByb3BJc0J5cGFzcyA/ICd0JyA6ICdmJztcbiAgdmFyIHZhbHVlS2V5ID0gJycgKyB2YWx1ZTtcbiAgdmFyIGFyZ0hhc2ggPSBoYXNoU3RyaW5ncyhuYW1lLCB2YWx1ZUtleSwgYnlwYXNzS2V5LCBmbGF0S2V5KTtcbiAgdmFyIHByb3BDYWNoZSA9IHNlbGYucHJvcENhY2hlID0gc2VsZi5wcm9wQ2FjaGUgfHwgW107XG4gIHZhciByZXQ7XG5cbiAgaWYgKCEocmV0ID0gcHJvcENhY2hlW2FyZ0hhc2hdKSkge1xuICAgIHJldCA9IHByb3BDYWNoZVthcmdIYXNoXSA9IHNlbGYucGFyc2VJbXBsV2FybihuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KTtcbiAgfSAvLyAtIGJ5cGFzc2VzIGNhbid0IGJlIHNoYXJlZCBiL2MgdGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIGJ5IGFuaW1hdGlvbnMgb3Igb3RoZXJ3aXNlIG92ZXJyaWRkZW5cbiAgLy8gLSBtYXBwaW5ncyBjYW4ndCBiZSBzaGFyZWQgYi9jIG1hcHBpbmdzIGFyZSBwZXItZWxlbWVudFxuXG5cbiAgaWYgKHByb3BJc0J5cGFzcyB8fCBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycpIHtcbiAgICAvLyBuZWVkIGEgY29weSBzaW5jZSBwcm9wcyBhcmUgbXV0YXRlZCBsYXRlciBpbiB0aGVpciBsaWZlY3ljbGVzXG4gICAgcmV0ID0gY29weShyZXQpO1xuXG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnZhbHVlID0gY29weShyZXQudmFsdWUpOyAvLyBiZWNhdXNlIGl0IGNvdWxkIGJlIGFuIGFycmF5LCBlLmcuIGNvbG91clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5zdHlmbiQ3LnBhcnNlSW1wbFdhcm4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHByb3BJc0J5cGFzcywgcHJvcElzRmxhdCkge1xuICB2YXIgcHJvcCA9IHRoaXMucGFyc2VJbXBsKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuXG4gIGlmICghcHJvcCAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgd2FybihcIlRoZSBzdHlsZSBwcm9wZXJ0eSBgXCIuY29uY2F0KG5hbWUsIFwiOiBcIikuY29uY2F0KHZhbHVlLCBcImAgaXMgaW52YWxpZFwiKSk7XG4gIH1cblxuICBpZiAocHJvcCAmJiAocHJvcC5uYW1lID09PSAnd2lkdGgnIHx8IHByb3AubmFtZSA9PT0gJ2hlaWdodCcpICYmIHZhbHVlID09PSAnbGFiZWwnKSB7XG4gICAgd2FybignVGhlIHN0eWxlIHZhbHVlIG9mIGBsYWJlbGAgaXMgZGVwcmVjYXRlZCBmb3IgYCcgKyBwcm9wLm5hbWUgKyAnYCcpO1xuICB9XG5cbiAgcmV0dXJuIHByb3A7XG59OyAvLyBwYXJzZSBhIHByb3BlcnR5OyByZXR1cm4gbnVsbCBvbiBpbnZhbGlkOyByZXR1cm4gcGFyc2VkIHByb3BlcnR5IG90aGVyd2lzZVxuLy8gZmllbGRzIDpcbi8vIC0gbmFtZSA6IHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVxuLy8gLSB2YWx1ZSA6IHRoZSBwYXJzZWQsIG5hdGl2ZS10eXBlZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcbi8vIC0gc3RyVmFsdWUgOiBhIHN0cmluZyB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhlIHByb3BlcnR5IHZhbHVlIGluIHZhbGlkIGNzc1xuLy8gLSBieXBhc3MgOiB0cnVlIGlmZiB0aGUgcHJvcGVydHkgaXMgYSBieXBhc3MgcHJvcGVydHlcblxuXG5zdHlmbiQ3LnBhcnNlSW1wbCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7IC8vIG1ha2Ugc3VyZSB0aGUgcHJvcGVydHkgbmFtZSBpcyBpbiBkYXNoIGZvcm0gKGUuZy4gJ3Byb3BlcnR5LW5hbWUnIG5vdCAncHJvcGVydHlOYW1lJylcblxuICB2YXIgcHJvcGVydHkgPSBzZWxmLnByb3BlcnRpZXNbbmFtZV07XG4gIHZhciBwYXNzZWRWYWx1ZSA9IHZhbHVlO1xuICB2YXIgdHlwZXMgPSBzZWxmLnR5cGVzO1xuXG4gIGlmICghcHJvcGVydHkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyByZXR1cm4gbnVsbCBvbiBwcm9wZXJ0eSBvZiB1bmtub3duIG5hbWVcblxuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gY2FuJ3QgYXNzaWduIHVuZGVmaW5lZFxuICAvLyB0aGUgcHJvcGVydHkgbWF5IGJlIGFuIGFsaWFzXG5cblxuICBpZiAocHJvcGVydHkuYWxpYXMpIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnBvaW50c1RvO1xuICAgIG5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xuICB9XG5cbiAgdmFyIHZhbHVlSXNTdHJpbmcgPSBzdHJpbmcodmFsdWUpO1xuXG4gIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgLy8gdHJpbSB0aGUgdmFsdWUgdG8gbWFrZSBwYXJzaW5nIGVhc2llclxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBwcm9wZXJ0eS50eXBlO1xuXG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIG5vIHR5cGUsIG5vIGx1Y2tcbiAgLy8gY2hlY2sgaWYgYnlwYXNzIGlzIG51bGwgb3IgZW1wdHkgc3RyaW5nIChpLmUuIGluZGljYXRpb24gdG8gZGVsZXRlIGJ5cGFzcyBwcm9wZXJ0eSlcblxuXG4gIGlmIChwcm9wSXNCeXBhc3MgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGJ5cGFzczogdHJ1ZSxcbiAgICAgIGRlbGV0ZUJ5cGFzczogdHJ1ZVxuICAgIH07XG4gIH0gLy8gY2hlY2sgaWYgdmFsdWUgaXMgYSBmdW5jdGlvbiB1c2VkIGFzIGEgbWFwcGVyXG5cblxuICBpZiAoZm4odmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBzdHJWYWx1ZTogJ2ZuJyxcbiAgICAgIG1hcHBlZDogdHlwZXMuZm4sXG4gICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgIH07XG4gIH0gLy8gY2hlY2sgaWYgdmFsdWUgaXMgbWFwcGVkXG5cblxuICB2YXIgZGF0YSwgbWFwRGF0YTtcblxuICBpZiAoIXZhbHVlSXNTdHJpbmcgfHwgcHJvcElzRmxhdCB8fCB2YWx1ZS5sZW5ndGggPCA3IHx8IHZhbHVlWzFdICE9PSAnYScpIDsgZWxzZSBpZiAodmFsdWUubGVuZ3RoID49IDcgJiYgdmFsdWVbMF0gPT09ICdkJyAmJiAoZGF0YSA9IG5ldyBSZWdFeHAodHlwZXMuZGF0YS5yZWdleCkuZXhlYyh2YWx1ZSkpKSB7XG4gICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gbWFwcGVycyBub3QgYWxsb3dlZCBpbiBieXBhc3NcblxuXG4gICAgdmFyIG1hcHBlZCA9IHR5cGVzLmRhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgbWFwcGVkOiBtYXBwZWQsXG4gICAgICBmaWVsZDogZGF0YVsxXSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPj0gMTAgJiYgdmFsdWVbMF0gPT09ICdtJyAmJiAobWFwRGF0YSA9IG5ldyBSZWdFeHAodHlwZXMubWFwRGF0YS5yZWdleCkuZXhlYyh2YWx1ZSkpKSB7XG4gICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gbWFwcGVycyBub3QgYWxsb3dlZCBpbiBieXBhc3NcblxuXG4gICAgaWYgKHR5cGUubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGltcG9zc2libGUgdG8gbWFwIHRvIG51bVxuXG5cbiAgICB2YXIgX21hcHBlZCA9IHR5cGVzLm1hcERhdGE7IC8vIHdlIGNhbiBtYXAgb25seSBpZiB0aGUgdHlwZSBpcyBhIGNvbG91ciBvciBhIG51bWJlclxuXG4gICAgaWYgKCEodHlwZS5jb2xvciB8fCB0eXBlLm51bWJlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVNaW4gPSB0aGlzLnBhcnNlKG5hbWUsIG1hcERhdGFbNF0pOyAvLyBwYXJzZSB0byB2YWxpZGF0ZVxuXG4gICAgaWYgKCF2YWx1ZU1pbiB8fCB2YWx1ZU1pbi5tYXBwZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNhbid0IGJlIGludmFsaWQgb3IgbWFwcGVkXG5cblxuICAgIHZhciB2YWx1ZU1heCA9IHRoaXMucGFyc2UobmFtZSwgbWFwRGF0YVs1XSk7IC8vIHBhcnNlIHRvIHZhbGlkYXRlXG5cbiAgICBpZiAoIXZhbHVlTWF4IHx8IHZhbHVlTWF4Lm1hcHBlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gY2FuJ3QgYmUgaW52YWxpZCBvciBtYXBwZWRcbiAgICAvLyBjaGVjayBpZiB2YWx1ZU1pbiBhbmQgdmFsdWVNYXggYXJlIHRoZSBzYW1lXG5cblxuICAgIGlmICh2YWx1ZU1pbi5wZlZhbHVlID09PSB2YWx1ZU1heC5wZlZhbHVlIHx8IHZhbHVlTWluLnN0clZhbHVlID09PSB2YWx1ZU1heC5zdHJWYWx1ZSkge1xuICAgICAgd2FybignYCcgKyBuYW1lICsgJzogJyArIHZhbHVlICsgJ2AgaXMgbm90IGEgdmFsaWQgbWFwcGVyIGJlY2F1c2UgdGhlIG91dHB1dCByYW5nZSBpcyB6ZXJvOyBjb252ZXJ0aW5nIHRvIGAnICsgbmFtZSArICc6ICcgKyB2YWx1ZU1pbi5zdHJWYWx1ZSArICdgJyk7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZU1pbi5zdHJWYWx1ZSk7IC8vIGNhbid0IG1ha2UgbXVjaCBvZiBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcbiAgICB9IGVsc2UgaWYgKHR5cGUuY29sb3IpIHtcbiAgICAgIHZhciBjMSA9IHZhbHVlTWluLnZhbHVlO1xuICAgICAgdmFyIGMyID0gdmFsdWVNYXgudmFsdWU7XG4gICAgICB2YXIgc2FtZSA9IGMxWzBdID09PSBjMlswXSAvLyByZWRcbiAgICAgICYmIGMxWzFdID09PSBjMlsxXSAvLyBncmVlblxuICAgICAgJiYgYzFbMl0gPT09IGMyWzJdIC8vIGJsdWVcbiAgICAgICYmICggLy8gb3B0aW9uYWwgYWxwaGFcbiAgICAgIGMxWzNdID09PSBjMlszXSAvLyBzYW1lIGFscGhhIG91dHJpZ2h0XG4gICAgICB8fCAoYzFbM10gPT0gbnVsbCB8fCBjMVszXSA9PT0gMSkgJiYgKCAvLyBmdWxsIG9wYWNpdHkgZm9yIGNvbG91ciAxP1xuICAgICAgYzJbM10gPT0gbnVsbCB8fCBjMlszXSA9PT0gMSkgLy8gZnVsbCBvcGFjaXR5IGZvciBjb2xvdXIgMj9cbiAgICAgICk7XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gY2FuJ3QgbWFrZSBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IG1hcERhdGEsXG4gICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgIG1hcHBlZDogX21hcHBlZCxcbiAgICAgIGZpZWxkOiBtYXBEYXRhWzFdLFxuICAgICAgZmllbGRNaW46IHBhcnNlRmxvYXQobWFwRGF0YVsyXSksXG4gICAgICAvLyBtaW4gJiBtYXggYXJlIG51bWVyaWNcbiAgICAgIGZpZWxkTWF4OiBwYXJzZUZsb2F0KG1hcERhdGFbM10pLFxuICAgICAgdmFsdWVNaW46IHZhbHVlTWluLnZhbHVlLFxuICAgICAgdmFsdWVNYXg6IHZhbHVlTWF4LnZhbHVlLFxuICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGUubXVsdGlwbGUgJiYgcHJvcElzRmxhdCAhPT0gJ211bHRpcGxlJykge1xuICAgIHZhciB2YWxzO1xuXG4gICAgaWYgKHZhbHVlSXNTdHJpbmcpIHtcbiAgICAgIHZhbHMgPSB2YWx1ZS5zcGxpdCgvXFxzKy8pO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWxzID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHMgPSBbdmFsdWVdO1xuICAgIH1cblxuICAgIGlmICh0eXBlLmV2ZW5NdWx0aXBsZSAmJiB2YWxzLmxlbmd0aCAlIDIgIT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciB2YWxBcnIgPSBbXTtcbiAgICB2YXIgdW5pdHNBcnIgPSBbXTtcbiAgICB2YXIgcGZWYWxBcnIgPSBbXTtcbiAgICB2YXIgc3RyVmFsID0gJyc7XG4gICAgdmFyIGhhc0VudW0gPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHAgPSBzZWxmLnBhcnNlKG5hbWUsIHZhbHNbaV0sIHByb3BJc0J5cGFzcywgJ211bHRpcGxlJyk7XG4gICAgICBoYXNFbnVtID0gaGFzRW51bSB8fCBzdHJpbmcocC52YWx1ZSk7XG4gICAgICB2YWxBcnIucHVzaChwLnZhbHVlKTtcbiAgICAgIHBmVmFsQXJyLnB1c2gocC5wZlZhbHVlICE9IG51bGwgPyBwLnBmVmFsdWUgOiBwLnZhbHVlKTtcbiAgICAgIHVuaXRzQXJyLnB1c2gocC51bml0cyk7XG4gICAgICBzdHJWYWwgKz0gKGkgPiAwID8gJyAnIDogJycpICsgcC5zdHJWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS52YWxpZGF0ZSAmJiAhdHlwZS52YWxpZGF0ZSh2YWxBcnIsIHVuaXRzQXJyKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUuc2luZ2xlRW51bSAmJiBoYXNFbnVtKSB7XG4gICAgICBpZiAodmFsQXJyLmxlbmd0aCA9PT0gMSAmJiBzdHJpbmcodmFsQXJyWzBdKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdmFsdWU6IHZhbEFyclswXSxcbiAgICAgICAgICBzdHJWYWx1ZTogdmFsQXJyWzBdLFxuICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWxBcnIsXG4gICAgICBwZlZhbHVlOiBwZlZhbEFycixcbiAgICAgIHN0clZhbHVlOiBzdHJWYWwsXG4gICAgICBieXBhc3M6IHByb3BJc0J5cGFzcyxcbiAgICAgIHVuaXRzOiB1bml0c0FyclxuICAgIH07XG4gIH0gLy8gc2V2ZXJhbCB0eXBlcyBhbHNvIGFsbG93IGVudW1zXG5cblxuICB2YXIgY2hlY2tFbnVtcyA9IGZ1bmN0aW9uIGNoZWNrRW51bXMoKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHR5cGUuZW51bXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgZW4gPSB0eXBlLmVudW1zW19pXTtcblxuICAgICAgaWYgKGVuID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07IC8vIGNoZWNrIHRoZSB0eXBlIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG9iamVjdFxuXG5cbiAgaWYgKHR5cGUubnVtYmVyKSB7XG4gICAgdmFyIHVuaXRzO1xuICAgIHZhciBpbXBsaWNpdFVuaXRzID0gJ3B4JzsgLy8gbm90IHNldCA9PiBweFxuXG4gICAgaWYgKHR5cGUudW5pdHMpIHtcbiAgICAgIC8vIHVzZSBzcGVjaWZpZWQgdW5pdHMgaWYgc2V0XG4gICAgICB1bml0cyA9IHR5cGUudW5pdHM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUuaW1wbGljaXRVbml0cykge1xuICAgICAgaW1wbGljaXRVbml0cyA9IHR5cGUuaW1wbGljaXRVbml0cztcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUudW5pdGxlc3MpIHtcbiAgICAgIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgICAgIHZhciB1bml0c1JlZ2V4ID0gJ3B4fGVtJyArICh0eXBlLmFsbG93UGVyY2VudCA/ICd8XFxcXCUnIDogJycpO1xuXG4gICAgICAgIGlmICh1bml0cykge1xuICAgICAgICAgIHVuaXRzUmVnZXggPSB1bml0cztcbiAgICAgICAgfSAvLyBvbmx5IGFsbG93IGV4cGxpY2l0IHVuaXRzIGlmIHNvIHNldFxuXG5cbiAgICAgICAgdmFyIG1hdGNoID0gdmFsdWUubWF0Y2goJ14oJyArIG51bWJlciQxICsgJykoJyArIHVuaXRzUmVnZXggKyAnKT8nICsgJyQnKTtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgICAgICAgIHVuaXRzID0gbWF0Y2hbMl0gfHwgaW1wbGljaXRVbml0cztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdW5pdHMgfHwgdHlwZS5pbXBsaWNpdFVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gaW1wbGljaXRVbml0czsgLy8gaW1wbGljaXRseSBweCBpZiB1bnNwZWNpZmllZFxuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7IC8vIGlmIG5vdCBhIG51bWJlciBhbmQgZW51bXMgbm90IGFsbG93ZWQsIHRoZW4gdGhlIHZhbHVlIGlzIGludmFsaWRcblxuICAgIGlmIChpc05hTih2YWx1ZSkgJiYgdHlwZS5lbnVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGNoZWNrIGlmIHRoaXMgbnVtYmVyIHR5cGUgYWxzbyBhY2NlcHRzIHNwZWNpYWwga2V5d29yZHMgaW4gcGxhY2Ugb2YgbnVtYmVyc1xuICAgIC8vIChpLmUuIGBsZWZ0YCwgYGF1dG9gLCBldGMpXG5cblxuICAgIGlmIChpc05hTih2YWx1ZSkgJiYgdHlwZS5lbnVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IHBhc3NlZFZhbHVlO1xuICAgICAgcmV0dXJuIGNoZWNrRW51bXMoKTtcbiAgICB9IC8vIGNoZWNrIGlmIHZhbHVlIG11c3QgYmUgYW4gaW50ZWdlclxuXG5cbiAgICBpZiAodHlwZS5pbnRlZ2VyICYmICFpbnRlZ2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSAvLyBjaGVjayB2YWx1ZSBpcyB3aXRoaW4gcmFuZ2VcblxuXG4gICAgaWYgKHR5cGUubWluICE9PSB1bmRlZmluZWQgJiYgKHZhbHVlIDwgdHlwZS5taW4gfHwgdHlwZS5zdHJpY3RNaW4gJiYgdmFsdWUgPT09IHR5cGUubWluKSB8fCB0eXBlLm1heCAhPT0gdW5kZWZpbmVkICYmICh2YWx1ZSA+IHR5cGUubWF4IHx8IHR5cGUuc3RyaWN0TWF4ICYmIHZhbHVlID09PSB0eXBlLm1heCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciByZXQgPSB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgc3RyVmFsdWU6ICcnICsgdmFsdWUgKyAodW5pdHMgPyB1bml0cyA6ICcnKSxcbiAgICAgIHVuaXRzOiB1bml0cyxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTsgLy8gbm9ybWFsaXNlIHZhbHVlIGluIHBpeGVsc1xuXG4gICAgaWYgKHR5cGUudW5pdGxlc3MgfHwgdW5pdHMgIT09ICdweCcgJiYgdW5pdHMgIT09ICdlbScpIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdW5pdHMgPT09ICdweCcgfHwgIXVuaXRzID8gdmFsdWUgOiB0aGlzLmdldEVtU2l6ZUluUGl4ZWxzKCkgKiB2YWx1ZTtcbiAgICB9IC8vIG5vcm1hbGlzZSB2YWx1ZSBpbiBtc1xuXG5cbiAgICBpZiAodW5pdHMgPT09ICdtcycgfHwgdW5pdHMgPT09ICdzJykge1xuICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ21zJyA/IHZhbHVlIDogMTAwMCAqIHZhbHVlO1xuICAgIH0gLy8gbm9ybWFsaXNlIHZhbHVlIGluIHJhZFxuXG5cbiAgICBpZiAodW5pdHMgPT09ICdkZWcnIHx8IHVuaXRzID09PSAncmFkJykge1xuICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ3JhZCcgPyB2YWx1ZSA6IGRlZzJyYWQodmFsdWUpO1xuICAgIH0gLy8gbm9ybWFsaXplIHZhbHVlIGluICVcblxuXG4gICAgaWYgKHVuaXRzID09PSAnJScpIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdmFsdWUgLyAxMDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlLnByb3BMaXN0KSB7XG4gICAgdmFyIHByb3BzID0gW107XG4gICAgdmFyIHByb3BzU3RyID0gJycgKyB2YWx1ZTtcblxuICAgIGlmIChwcm9wc1N0ciA9PT0gJ25vbmUnKSA7IGVsc2Uge1xuICAgICAgLy8gZ28gb3ZlciBlYWNoIHByb3BcbiAgICAgIHZhciBwcm9wc1NwbGl0ID0gcHJvcHNTdHIuc3BsaXQoL1xccyosXFxzKnxcXHMrLyk7XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHByb3BzU3BsaXQubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wc1NwbGl0W19pMl0udHJpbSgpO1xuXG4gICAgICAgIGlmIChzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdKSB7XG4gICAgICAgICAgcHJvcHMucHVzaChwcm9wTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2FybignYCcgKyBwcm9wTmFtZSArICdgIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG5hbWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHByb3BzLFxuICAgICAgc3RyVmFsdWU6IHByb3BzLmxlbmd0aCA9PT0gMCA/ICdub25lJyA6IHByb3BzLmpvaW4oJyAnKSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlLmNvbG9yKSB7XG4gICAgdmFyIHR1cGxlID0gY29sb3IydHVwbGUodmFsdWUpO1xuXG4gICAgaWYgKCF0dXBsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdHVwbGUsXG4gICAgICBwZlZhbHVlOiB0dXBsZSxcbiAgICAgIHN0clZhbHVlOiAncmdiKCcgKyB0dXBsZVswXSArICcsJyArIHR1cGxlWzFdICsgJywnICsgdHVwbGVbMl0gKyAnKScsXG4gICAgICAvLyBuLmIuIG5vIHNwYWNlcyBiL2Mgb2YgbXVsdGlwbGUgc3VwcG9ydFxuICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGUucmVnZXggfHwgdHlwZS5yZWdleGVzKSB7XG4gICAgLy8gZmlyc3QgY2hlY2sgZW51bXNcbiAgICBpZiAodHlwZS5lbnVtcykge1xuICAgICAgdmFyIGVudW1Qcm9wID0gY2hlY2tFbnVtcygpO1xuXG4gICAgICBpZiAoZW51bVByb3ApIHtcbiAgICAgICAgcmV0dXJuIGVudW1Qcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdleGVzID0gdHlwZS5yZWdleGVzID8gdHlwZS5yZWdleGVzIDogW3R5cGUucmVnZXhdO1xuXG4gICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgcmVnZXhlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4ZXNbX2kzXSk7IC8vIG1ha2UgYSByZWdleCBmcm9tIHRoZSB0eXBlIHN0cmluZ1xuXG4gICAgICB2YXIgbSA9IHJlZ2V4LmV4ZWModmFsdWUpO1xuXG4gICAgICBpZiAobSkge1xuICAgICAgICAvLyByZWdleCBtYXRjaGVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdHlwZS5zaW5nbGVSZWdleE1hdGNoVmFsdWUgPyBtWzFdIDogbSxcbiAgICAgICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsOyAvLyBkaWRuJ3QgbWF0Y2ggYW55XG4gIH0gZWxzZSBpZiAodHlwZS5zdHJpbmcpIHtcbiAgICAvLyBqdXN0IHJldHVyblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6ICcnICsgdmFsdWUsXG4gICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlLmVudW1zKSB7XG4gICAgLy8gY2hlY2sgZW51bXMgbGFzdCBiZWNhdXNlIGl0J3MgYSBjb21ibyB0eXBlIGluIG90aGVyc1xuICAgIHJldHVybiBjaGVja0VudW1zKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7IC8vIG5vdCBhIHR5cGUgd2UgY2FuIGhhbmRsZVxuICB9XG59O1xuXG52YXIgU3R5bGUgPSBmdW5jdGlvbiBTdHlsZShjeSkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3R5bGUpKSB7XG4gICAgcmV0dXJuIG5ldyBTdHlsZShjeSk7XG4gIH1cblxuICBpZiAoIWNvcmUoY3kpKSB7XG4gICAgZXJyb3IoJ0Egc3R5bGUgbXVzdCBoYXZlIGEgY29yZSByZWZlcmVuY2UnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl9wcml2YXRlID0ge1xuICAgIGN5OiBjeSxcbiAgICBjb3JlU3R5bGU6IHt9XG4gIH07XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5yZXNldFRvRGVmYXVsdCgpO1xufTtcblxudmFyIHN0eWZuJDggPSBTdHlsZS5wcm90b3R5cGU7XG5cbnN0eWZuJDguaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnc3R5bGUnO1xufTsgLy8gcmVtb3ZlIGFsbCBjb250ZXh0c1xuXG5cbnN0eWZuJDguY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gIHZhciBjeSA9IF9wLmN5O1xuICB2YXIgZWxlcyA9IGN5LmVsZW1lbnRzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpc1tpXSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgX3AuY29udGV4dFN0eWxlcyA9IHt9O1xuICBfcC5wcm9wRGlmZnMgPSB7fTtcbiAgdGhpcy5jbGVhbkVsZW1lbnRzKGVsZXMsIHRydWUpO1xuICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBlbGVfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICBlbGVfcC5zdHlsZURpcnR5ID0gdHJ1ZTtcbiAgICBlbGVfcC5hcHBsaWVkSW5pdFN0eWxlID0gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnN0eWZuJDgucmVzZXRUb0RlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2xlYXIoKTtcbiAgdGhpcy5hZGREZWZhdWx0U3R5bGVzaGVldCgpO1xuICByZXR1cm4gdGhpcztcbn07IC8vIGJ1aWxkcyBhIHN0eWxlIG9iamVjdCBmb3IgdGhlICdjb3JlJyBzZWxlY3RvclxuXG5cbnN0eWZuJDguY29yZSA9IGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5jb3JlU3R5bGVbcHJvcE5hbWVdIHx8IHRoaXMuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BOYW1lKTtcbn07IC8vIGNyZWF0ZSBhIG5ldyBjb250ZXh0IGZyb20gdGhlIHNwZWNpZmllZCBzZWxlY3RvciBzdHJpbmcgYW5kIHN3aXRjaCB0byB0aGF0IGNvbnRleHRcblxuXG5zdHlmbiQ4LnNlbGVjdG9yID0gZnVuY3Rpb24gKHNlbGVjdG9yU3RyKSB7XG4gIC8vICdjb3JlJyBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgZG9lcyBub3QgbmVlZCBhIHNlbGVjdG9yXG4gIHZhciBzZWxlY3RvciA9IHNlbGVjdG9yU3RyID09PSAnY29yZScgPyBudWxsIDogbmV3IFNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcbiAgdmFyIGkgPSB0aGlzLmxlbmd0aCsrOyAvLyBuZXcgY29udGV4dCBtZWFucyBuZXcgaW5kZXhcblxuICB0aGlzW2ldID0ge1xuICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICBtYXBwZWRQcm9wZXJ0aWVzOiBbXSxcbiAgICBpbmRleDogaVxuICB9O1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07IC8vIGFkZCBvbmUgb3IgbWFueSBjc3MgcnVsZXMgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5cbnN0eWZuJDguY3NzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBtYXAgPSBhcmdzWzBdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW2ldO1xuICAgICAgdmFyIG1hcFZhbCA9IG1hcFtwcm9wLm5hbWVdO1xuXG4gICAgICBpZiAobWFwVmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFwVmFsID0gbWFwW2Rhc2gyY2FtZWwocHJvcC5uYW1lKV07XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBWYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNzc1J1bGUocHJvcC5uYW1lLCBtYXBWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIHRoaXMuY3NzUnVsZShhcmdzWzBdLCBhcmdzWzFdKTtcbiAgfSAvLyBkbyBub3RoaW5nIGlmIGFyZ3MgYXJlIGludmFsaWRcblxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuc3R5Zm4kOC5zdHlsZSA9IHN0eWZuJDguY3NzOyAvLyBhZGQgYSBzaW5nbGUgY3NzIHJ1bGUgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5zdHlmbiQ4LmNzc1J1bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgLy8gbmFtZS12YWx1ZSBwYWlyXG4gIHZhciBwcm9wZXJ0eSA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUpOyAvLyBhZGQgcHJvcGVydHkgdG8gY3VycmVudCBjb250ZXh0IGlmIHZhbGlkXG5cbiAgaWYgKHByb3BlcnR5KSB7XG4gICAgdmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7XG4gICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICAgIHRoaXNbaV0ucHJvcGVydGllc1twcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5OyAvLyBhbGxvdyBhY2Nlc3MgYnkgbmFtZSBhcyB3ZWxsXG5cbiAgICBpZiAocHJvcGVydHkubmFtZS5tYXRjaCgvcGllLShcXGQrKS1iYWNrZ3JvdW5kLXNpemUvKSAmJiBwcm9wZXJ0eS52YWx1ZSkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5oYXNQaWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eS5tYXBwZWQpIHtcbiAgICAgIHRoaXNbaV0ubWFwcGVkUHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgICB9IC8vIGFkZCB0byBjb3JlIHN0eWxlIGlmIG5lY2Vzc2FyeVxuXG5cbiAgICB2YXIgY3VycmVudFNlbGVjdG9ySXNDb3JlID0gIXRoaXNbaV0uc2VsZWN0b3I7XG5cbiAgICBpZiAoY3VycmVudFNlbGVjdG9ySXNDb3JlKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmNvcmVTdHlsZVtwcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuc3R5Zm4kOC5hcHBlbmQgPSBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgaWYgKHN0eWxlc2hlZXQoc3R5bGUpKSB7XG4gICAgc3R5bGUuYXBwZW5kVG9TdHlsZSh0aGlzKTtcbiAgfSBlbHNlIGlmIChhcnJheShzdHlsZSkpIHtcbiAgICB0aGlzLmFwcGVuZEZyb21Kc29uKHN0eWxlKTtcbiAgfSBlbHNlIGlmIChzdHJpbmcoc3R5bGUpKSB7XG4gICAgdGhpcy5hcHBlbmRGcm9tU3RyaW5nKHN0eWxlKTtcbiAgfSAvLyB5b3UgcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBhcHBlbmQgYSBTdHlsZSwgc2luY2UgeW91J2QgZHVwbGljYXRlIHRoZSBkZWZhdWx0IHBhcnRzXG5cblxuICByZXR1cm4gdGhpcztcbn07IC8vIHN0YXRpYyBmdW5jdGlvblxuXG5cblN0eWxlLmZyb21Kc29uID0gZnVuY3Rpb24gKGN5LCBqc29uKSB7XG4gIHZhciBzdHlsZSA9IG5ldyBTdHlsZShjeSk7XG4gIHN0eWxlLmZyb21Kc29uKGpzb24pO1xuICByZXR1cm4gc3R5bGU7XG59O1xuXG5TdHlsZS5mcm9tU3RyaW5nID0gZnVuY3Rpb24gKGN5LCBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBTdHlsZShjeSkuZnJvbVN0cmluZyhzdHJpbmcpO1xufTtcblxuW3N0eWZuLCBzdHlmbiQxLCBzdHlmbiQyLCBzdHlmbiQzLCBzdHlmbiQ0LCBzdHlmbiQ1LCBzdHlmbiQ2LCBzdHlmbiQ3XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoc3R5Zm4kOCwgcHJvcHMpO1xufSk7XG5TdHlsZS50eXBlcyA9IHN0eWZuJDgudHlwZXM7XG5TdHlsZS5wcm9wZXJ0aWVzID0gc3R5Zm4kOC5wcm9wZXJ0aWVzO1xuU3R5bGUucHJvcGVydHlHcm91cHMgPSBzdHlmbiQ4LnByb3BlcnR5R3JvdXBzO1xuU3R5bGUucHJvcGVydHlHcm91cE5hbWVzID0gc3R5Zm4kOC5wcm9wZXJ0eUdyb3VwTmFtZXM7XG5TdHlsZS5wcm9wZXJ0eUdyb3VwS2V5cyA9IHN0eWZuJDgucHJvcGVydHlHcm91cEtleXM7XG5cbnZhciBjb3JlZm4kNyA9IHtcbiAgc3R5bGU6IGZ1bmN0aW9uIHN0eWxlKG5ld1N0eWxlKSB7XG4gICAgaWYgKG5ld1N0eWxlKSB7XG4gICAgICB2YXIgcyA9IHRoaXMuc2V0U3R5bGUobmV3U3R5bGUpO1xuICAgICAgcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5zdHlsZTtcbiAgfSxcbiAgc2V0U3R5bGU6IGZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgIGlmIChzdHlsZXNoZWV0KHN0eWxlKSkge1xuICAgICAgX3Auc3R5bGUgPSBzdHlsZS5nZW5lcmF0ZVN0eWxlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkoc3R5bGUpKSB7XG4gICAgICBfcC5zdHlsZSA9IFN0eWxlLmZyb21Kc29uKHRoaXMsIHN0eWxlKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyhzdHlsZSkpIHtcbiAgICAgIF9wLnN0eWxlID0gU3R5bGUuZnJvbVN0cmluZyh0aGlzLCBzdHlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9wLnN0eWxlID0gU3R5bGUodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9wLnN0eWxlO1xuICB9LFxuICAvLyBlLmcuIGN5LmRhdGEoKSBjaGFuZ2VkID0+IHJlY2FsYyBlbGUgbWFwcGVyc1xuICB1cGRhdGVTdHlsZTogZnVuY3Rpb24gdXBkYXRlU3R5bGUoKSB7XG4gICAgdGhpcy5tdXRhYmxlRWxlbWVudHMoKS51cGRhdGVTdHlsZSgpOyAvLyBqdXN0IHNlbmQgdG8gYWxsIGVsZXNcbiAgfVxufTtcblxudmFyIGRlZmF1bHRTZWxlY3Rpb25UeXBlID0gJ3NpbmdsZSc7XG52YXIgY29yZWZuJDggPSB7XG4gIGF1dG9sb2NrOiBmdW5jdGlvbiBhdXRvbG9jayhib29sKSB7XG4gICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5hdXRvbG9jayA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmF1dG9sb2NrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBhdXRvdW5ncmFiaWZ5OiBmdW5jdGlvbiBhdXRvdW5ncmFiaWZ5KGJvb2wpIHtcbiAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmF1dG91bmdyYWJpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hdXRvdW5ncmFiaWZ5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBhdXRvdW5zZWxlY3RpZnk6IGZ1bmN0aW9uIGF1dG91bnNlbGVjdGlmeShib29sKSB7XG4gICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5hdXRvdW5zZWxlY3RpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hdXRvdW5zZWxlY3RpZnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHNlbGVjdGlvblR5cGU6IGZ1bmN0aW9uIHNlbGVjdGlvblR5cGUoc2VsVHlwZSkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3Auc2VsZWN0aW9uVHlwZSA9PSBudWxsKSB7XG4gICAgICBfcC5zZWxlY3Rpb25UeXBlID0gZGVmYXVsdFNlbGVjdGlvblR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHNlbFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNlbFR5cGUgPT09ICdhZGRpdGl2ZScgfHwgc2VsVHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgX3Auc2VsZWN0aW9uVHlwZSA9IHNlbFR5cGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBfcC5zZWxlY3Rpb25UeXBlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBwYW5uaW5nRW5hYmxlZDogZnVuY3Rpb24gcGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgdXNlclBhbm5pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyUGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUudXNlclBhbm5pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUudXNlclBhbm5pbmdFbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICB6b29taW5nRW5hYmxlZDogZnVuY3Rpb24gem9vbWluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUuem9vbWluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgdXNlclpvb21pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyWm9vbWluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBib3hTZWxlY3Rpb25FbmFibGVkOiBmdW5jdGlvbiBib3hTZWxlY3Rpb25FbmFibGVkKGJvb2wpIHtcbiAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmJveFNlbGVjdGlvbkVuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5ib3hTZWxlY3Rpb25FbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBwYW46IGZ1bmN0aW9uIHBhbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgcGFuID0gdGhpcy5fcHJpdmF0ZS5wYW47XG4gICAgdmFyIGRpbSwgdmFsLCBkaW1zLCB4LCB5O1xuXG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAvLyAucGFuKClcbiAgICAgICAgcmV0dXJuIHBhbjtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAoc3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgLy8gLnBhbigneCcpXG4gICAgICAgICAgZGltID0gYXJnc1swXTtcbiAgICAgICAgICByZXR1cm4gcGFuW2RpbV07XG4gICAgICAgIH0gZWxzZSBpZiAocGxhaW5PYmplY3QoYXJnc1swXSkpIHtcbiAgICAgICAgICAvLyAucGFuKHsgeDogMCwgeTogMTAwIH0pXG4gICAgICAgICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkaW1zID0gYXJnc1swXTtcbiAgICAgICAgICB4ID0gZGltcy54O1xuICAgICAgICAgIHkgPSBkaW1zLnk7XG5cbiAgICAgICAgICBpZiAobnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBwYW4ueCA9IHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG51bWJlcih5KSkge1xuICAgICAgICAgICAgcGFuLnkgPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyAucGFuKCd4JywgMTAwKVxuICAgICAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGRpbSA9IGFyZ3NbMF07XG4gICAgICAgIHZhbCA9IGFyZ3NbMV07XG5cbiAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICBwYW5bZGltXSA9IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gaW52YWxpZFxuICAgIH1cblxuICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBwYW5CeTogZnVuY3Rpb24gcGFuQnkoYXJnMCwgYXJnMSkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICB2YXIgZGltLCB2YWwsIGRpbXMsIHgsIHk7XG5cbiAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKHBsYWluT2JqZWN0KGFyZzApKSB7XG4gICAgICAgICAgLy8gLnBhbkJ5KHsgeDogMCwgeTogMTAwIH0pXG4gICAgICAgICAgZGltcyA9IGFyZ3NbMF07XG4gICAgICAgICAgeCA9IGRpbXMueDtcbiAgICAgICAgICB5ID0gZGltcy55O1xuXG4gICAgICAgICAgaWYgKG51bWJlcih4KSkge1xuICAgICAgICAgICAgcGFuLnggKz0geDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobnVtYmVyKHkpKSB7XG4gICAgICAgICAgICBwYW4ueSArPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyAucGFuQnkoJ3gnLCAxMDApXG4gICAgICAgIGRpbSA9IGFyZzA7XG4gICAgICAgIHZhbCA9IGFyZzE7XG5cbiAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICBwYW5bZGltXSArPSB2YWw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGludmFsaWRcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgZml0OiBmdW5jdGlvbiBmaXQoZWxlbWVudHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgdmlld3BvcnRTdGF0ZSA9IHRoaXMuZ2V0Rml0Vmlld3BvcnQoZWxlbWVudHMsIHBhZGRpbmcpO1xuXG4gICAgaWYgKHZpZXdwb3J0U3RhdGUpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgICBfcC56b29tID0gdmlld3BvcnRTdGF0ZS56b29tO1xuICAgICAgX3AucGFuID0gdmlld3BvcnRTdGF0ZS5wYW47XG4gICAgICB0aGlzLmVtaXQoJ3BhbiB6b29tIHZpZXdwb3J0Jyk7XG4gICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgZ2V0Rml0Vmlld3BvcnQ6IGZ1bmN0aW9uIGdldEZpdFZpZXdwb3J0KGVsZW1lbnRzLCBwYWRkaW5nKSB7XG4gICAgaWYgKG51bWJlcihlbGVtZW50cykgJiYgcGFkZGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBlbGVtZW50cyBpcyBvcHRpb25hbFxuICAgICAgcGFkZGluZyA9IGVsZW1lbnRzO1xuICAgICAgZWxlbWVudHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkIHx8ICF0aGlzLl9wcml2YXRlLnpvb21pbmdFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGJiO1xuXG4gICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgIHZhciBzZWwgPSBlbGVtZW50cztcbiAgICAgIGVsZW1lbnRzID0gdGhpcy4kKHNlbCk7XG4gICAgfSBlbHNlIGlmIChib3VuZGluZ0JveChlbGVtZW50cykpIHtcbiAgICAgIC8vIGFzc3VtZSBiYlxuICAgICAgdmFyIGJiZSA9IGVsZW1lbnRzO1xuICAgICAgYmIgPSB7XG4gICAgICAgIHgxOiBiYmUueDEsXG4gICAgICAgIHkxOiBiYmUueTEsXG4gICAgICAgIHgyOiBiYmUueDIsXG4gICAgICAgIHkyOiBiYmUueTJcbiAgICAgIH07XG4gICAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICAgIH0gZWxzZSBpZiAoIWVsZW1lbnRPckNvbGxlY3Rpb24oZWxlbWVudHMpKSB7XG4gICAgICBlbGVtZW50cyA9IHRoaXMubXV0YWJsZUVsZW1lbnRzKCk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24oZWxlbWVudHMpICYmIGVsZW1lbnRzLmVtcHR5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGNhbid0IGZpdCB0byBub3RoaW5nXG5cblxuICAgIGJiID0gYmIgfHwgZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICB2YXIgaCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgdmFyIHpvb207XG4gICAgcGFkZGluZyA9IG51bWJlcihwYWRkaW5nKSA/IHBhZGRpbmcgOiAwO1xuXG4gICAgaWYgKCFpc05hTih3KSAmJiAhaXNOYU4oaCkgJiYgdyA+IDAgJiYgaCA+IDAgJiYgIWlzTmFOKGJiLncpICYmICFpc05hTihiYi5oKSAmJiBiYi53ID4gMCAmJiBiYi5oID4gMCkge1xuICAgICAgem9vbSA9IE1hdGgubWluKCh3IC0gMiAqIHBhZGRpbmcpIC8gYmIudywgKGggLSAyICogcGFkZGluZykgLyBiYi5oKTsgLy8gY3JvcCB6b29tXG5cbiAgICAgIHpvb20gPSB6b29tID4gdGhpcy5fcHJpdmF0ZS5tYXhab29tID8gdGhpcy5fcHJpdmF0ZS5tYXhab29tIDogem9vbTtcbiAgICAgIHpvb20gPSB6b29tIDwgdGhpcy5fcHJpdmF0ZS5taW5ab29tID8gdGhpcy5fcHJpdmF0ZS5taW5ab29tIDogem9vbTtcbiAgICAgIHZhciBwYW4gPSB7XG4gICAgICAgIC8vIG5vdyBwYW4gdG8gbWlkZGxlXG4gICAgICAgIHg6ICh3IC0gem9vbSAqIChiYi54MSArIGJiLngyKSkgLyAyLFxuICAgICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHpvb206IHpvb20sXG4gICAgICAgIHBhbjogcGFuXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfSxcbiAgem9vbVJhbmdlOiBmdW5jdGlvbiB6b29tUmFuZ2UobWluLCBtYXgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgaWYgKG1heCA9PSBudWxsKSB7XG4gICAgICB2YXIgb3B0cyA9IG1pbjtcbiAgICAgIG1pbiA9IG9wdHMubWluO1xuICAgICAgbWF4ID0gb3B0cy5tYXg7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlcihtaW4pICYmIG51bWJlcihtYXgpICYmIG1pbiA8PSBtYXgpIHtcbiAgICAgIF9wLm1pblpvb20gPSBtaW47XG4gICAgICBfcC5tYXhab29tID0gbWF4O1xuICAgIH0gZWxzZSBpZiAobnVtYmVyKG1pbikgJiYgbWF4ID09PSB1bmRlZmluZWQgJiYgbWluIDw9IF9wLm1heFpvb20pIHtcbiAgICAgIF9wLm1pblpvb20gPSBtaW47XG4gICAgfSBlbHNlIGlmIChudW1iZXIobWF4KSAmJiBtaW4gPT09IHVuZGVmaW5lZCAmJiBtYXggPj0gX3AubWluWm9vbSkge1xuICAgICAgX3AubWF4Wm9vbSA9IG1heDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgbWluWm9vbTogZnVuY3Rpb24gbWluWm9vbSh6b29tKSB7XG4gICAgaWYgKHpvb20gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUubWluWm9vbTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuem9vbVJhbmdlKHtcbiAgICAgICAgbWluOiB6b29tXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1heFpvb206IGZ1bmN0aW9uIG1heFpvb20oem9vbSkge1xuICAgIGlmICh6b29tID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLm1heFpvb207XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnpvb21SYW5nZSh7XG4gICAgICAgIG1heDogem9vbVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRab29tZWRWaWV3cG9ydDogZnVuY3Rpb24gZ2V0Wm9vbWVkVmlld3BvcnQocGFyYW1zKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgY3VycmVudFBhbiA9IF9wLnBhbjtcbiAgICB2YXIgY3VycmVudFpvb20gPSBfcC56b29tO1xuICAgIHZhciBwb3M7IC8vIGluIHJlbmRlcmVkIHB4XG5cbiAgICB2YXIgem9vbTtcbiAgICB2YXIgYmFpbCA9IGZhbHNlO1xuXG4gICAgaWYgKCFfcC56b29taW5nRW5hYmxlZCkge1xuICAgICAgLy8gem9vbWluZyBkaXNhYmxlZFxuICAgICAgYmFpbCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlcihwYXJhbXMpKSB7XG4gICAgICAvLyB0aGVuIHNldCB0aGUgem9vbVxuICAgICAgem9vbSA9IHBhcmFtcztcbiAgICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KHBhcmFtcykpIHtcbiAgICAgIC8vIHRoZW4gem9vbSBhYm91dCBhIHBvaW50XG4gICAgICB6b29tID0gcGFyYW1zLmxldmVsO1xuXG4gICAgICBpZiAocGFyYW1zLnBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcG9zID0gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocGFyYW1zLnBvc2l0aW9uLCBjdXJyZW50Wm9vbSwgY3VycmVudFBhbik7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcG9zID0gcGFyYW1zLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3MgIT0gbnVsbCAmJiAhX3AucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgLy8gcGFubmluZyBkaXNhYmxlZFxuICAgICAgICBiYWlsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IC8vIGNyb3Agem9vbVxuXG5cbiAgICB6b29tID0gem9vbSA+IF9wLm1heFpvb20gPyBfcC5tYXhab29tIDogem9vbTtcbiAgICB6b29tID0gem9vbSA8IF9wLm1pblpvb20gPyBfcC5taW5ab29tIDogem9vbTsgLy8gY2FuJ3Qgem9vbSB3aXRoIGludmFsaWQgcGFyYW1zXG5cbiAgICBpZiAoYmFpbCB8fCAhbnVtYmVyKHpvb20pIHx8IHpvb20gPT09IGN1cnJlbnRab29tIHx8IHBvcyAhPSBudWxsICYmICghbnVtYmVyKHBvcy54KSB8fCAhbnVtYmVyKHBvcy55KSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwb3MgIT0gbnVsbCkge1xuICAgICAgLy8gc2V0IHpvb20gYWJvdXQgcG9zaXRpb25cbiAgICAgIHZhciBwYW4xID0gY3VycmVudFBhbjtcbiAgICAgIHZhciB6b29tMSA9IGN1cnJlbnRab29tO1xuICAgICAgdmFyIHpvb20yID0gem9vbTtcbiAgICAgIHZhciBwYW4yID0ge1xuICAgICAgICB4OiAtem9vbTIgLyB6b29tMSAqIChwb3MueCAtIHBhbjEueCkgKyBwb3MueCxcbiAgICAgICAgeTogLXpvb20yIC8gem9vbTEgKiAocG9zLnkgLSBwYW4xLnkpICsgcG9zLnlcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB6b29tZWQ6IHRydWUsXG4gICAgICAgIHBhbm5lZDogdHJ1ZSxcbiAgICAgICAgem9vbTogem9vbTIsXG4gICAgICAgIHBhbjogcGFuMlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8ganVzdCBzZXQgdGhlIHpvb21cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHpvb21lZDogdHJ1ZSxcbiAgICAgICAgcGFubmVkOiBmYWxzZSxcbiAgICAgICAgem9vbTogem9vbSxcbiAgICAgICAgcGFuOiBjdXJyZW50UGFuXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgem9vbTogZnVuY3Rpb24gem9vbShwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGdldFxuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuem9vbTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2V0XG4gICAgICB2YXIgdnAgPSB0aGlzLmdldFpvb21lZFZpZXdwb3J0KHBhcmFtcyk7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgICBpZiAodnAgPT0gbnVsbCB8fCAhdnAuem9vbWVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBfcC56b29tID0gdnAuem9vbTtcblxuICAgICAgaWYgKHZwLnBhbm5lZCkge1xuICAgICAgICBfcC5wYW4ueCA9IHZwLnBhbi54O1xuICAgICAgICBfcC5wYW4ueSA9IHZwLnBhbi55O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXQoJ3pvb20nICsgKHZwLnBhbm5lZCA/ICcgcGFuJyA6ICcnKSArICcgdmlld3BvcnQnKTtcbiAgICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9LFxuICB2aWV3cG9ydDogZnVuY3Rpb24gdmlld3BvcnQob3B0cykge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIHpvb21EZWZkID0gdHJ1ZTtcbiAgICB2YXIgcGFuRGVmZCA9IHRydWU7XG4gICAgdmFyIGV2ZW50cyA9IFtdOyAvLyB0byB0cmlnZ2VyXG5cbiAgICB2YXIgem9vbUZhaWxlZCA9IGZhbHNlO1xuICAgIHZhciBwYW5GYWlsZWQgPSBmYWxzZTtcblxuICAgIGlmICghb3B0cykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXIob3B0cy56b29tKSkge1xuICAgICAgem9vbURlZmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXBsYWluT2JqZWN0KG9wdHMucGFuKSkge1xuICAgICAgcGFuRGVmZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghem9vbURlZmQgJiYgIXBhbkRlZmQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh6b29tRGVmZCkge1xuICAgICAgdmFyIHogPSBvcHRzLnpvb207XG5cbiAgICAgIGlmICh6IDwgX3AubWluWm9vbSB8fCB6ID4gX3AubWF4Wm9vbSB8fCAhX3Auem9vbWluZ0VuYWJsZWQpIHtcbiAgICAgICAgem9vbUZhaWxlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcC56b29tID0gejtcbiAgICAgICAgZXZlbnRzLnB1c2goJ3pvb20nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFuRGVmZCAmJiAoIXpvb21GYWlsZWQgfHwgIW9wdHMuY2FuY2VsT25GYWlsZWRab29tKSAmJiBfcC5wYW5uaW5nRW5hYmxlZCkge1xuICAgICAgdmFyIHAgPSBvcHRzLnBhbjtcblxuICAgICAgaWYgKG51bWJlcihwLngpKSB7XG4gICAgICAgIF9wLnBhbi54ID0gcC54O1xuICAgICAgICBwYW5GYWlsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG51bWJlcihwLnkpKSB7XG4gICAgICAgIF9wLnBhbi55ID0gcC55O1xuICAgICAgICBwYW5GYWlsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYW5GYWlsZWQpIHtcbiAgICAgICAgZXZlbnRzLnB1c2goJ3BhbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChldmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnRzLnB1c2goJ3ZpZXdwb3J0Jyk7XG4gICAgICB0aGlzLmVtaXQoZXZlbnRzLmpvaW4oJyAnKSk7XG4gICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgY2VudGVyOiBmdW5jdGlvbiBjZW50ZXIoZWxlbWVudHMpIHtcbiAgICB2YXIgcGFuID0gdGhpcy5nZXRDZW50ZXJQYW4oZWxlbWVudHMpO1xuXG4gICAgaWYgKHBhbikge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5wYW4gPSBwYW47XG4gICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgdGhpcy5ub3RpZnkoJ3ZpZXdwb3J0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIGdldENlbnRlclBhbjogZnVuY3Rpb24gZ2V0Q2VudGVyUGFuKGVsZW1lbnRzLCB6b29tKSB7XG4gICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IGVsZW1lbnRzO1xuICAgICAgZWxlbWVudHMgPSB0aGlzLm11dGFibGVFbGVtZW50cygpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSBlbHNlIGlmICghZWxlbWVudE9yQ29sbGVjdGlvbihlbGVtZW50cykpIHtcbiAgICAgIGVsZW1lbnRzID0gdGhpcy5tdXRhYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBjYW4ndCBjZW50cmUgcGFuIHRvIG5vdGhpbmdcblxuXG4gICAgdmFyIGJiID0gZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICB2YXIgaCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgem9vbSA9IHpvb20gPT09IHVuZGVmaW5lZCA/IHRoaXMuX3ByaXZhdGUuem9vbSA6IHpvb207XG4gICAgdmFyIHBhbiA9IHtcbiAgICAgIC8vIG1pZGRsZVxuICAgICAgeDogKHcgLSB6b29tICogKGJiLngxICsgYmIueDIpKSAvIDIsXG4gICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgIH07XG4gICAgcmV0dXJuIHBhbjtcbiAgfSxcbiAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZCB8fCAhdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy52aWV3cG9ydCh7XG4gICAgICBwYW46IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSxcbiAgICAgIHpvb206IDFcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgaW52YWxpZGF0ZVNpemU6IGZ1bmN0aW9uIGludmFsaWRhdGVTaXplKCkge1xuICAgIHRoaXMuX3ByaXZhdGUuc2l6ZUNhY2hlID0gbnVsbDtcbiAgfSxcbiAgc2l6ZTogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIHZhciBjb250YWluZXIgPSBfcC5jb250YWluZXI7XG4gICAgcmV0dXJuIF9wLnNpemVDYWNoZSA9IF9wLnNpemVDYWNoZSB8fCAoY29udGFpbmVyID8gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0eWxlID0gd2luZG93JDEuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpO1xuXG4gICAgICB2YXIgdmFsID0gZnVuY3Rpb24gdmFsKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogY29udGFpbmVyLmNsaWVudFdpZHRoIC0gdmFsKCdwYWRkaW5nLWxlZnQnKSAtIHZhbCgncGFkZGluZy1yaWdodCcpLFxuICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLSB2YWwoJ3BhZGRpbmctdG9wJykgLSB2YWwoJ3BhZGRpbmctYm90dG9tJylcbiAgICAgIH07XG4gICAgfSgpIDoge1xuICAgICAgLy8gZmFsbGJhY2sgaWYgbm8gY29udGFpbmVyIChub3QgMCBiL2MgY2FuIGJlIHVzZWQgZm9yIGRpdmlkaW5nIGV0YylcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxXG4gICAgfSk7XG4gIH0sXG4gIHdpZHRoOiBmdW5jdGlvbiB3aWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplKCkud2lkdGg7XG4gIH0sXG4gIGhlaWdodDogZnVuY3Rpb24gaGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnNpemUoKS5oZWlnaHQ7XG4gIH0sXG4gIGV4dGVudDogZnVuY3Rpb24gZXh0ZW50KCkge1xuICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICB2YXIgem9vbSA9IHRoaXMuX3ByaXZhdGUuem9vbTtcbiAgICB2YXIgcmIgPSB0aGlzLnJlbmRlcmVkRXh0ZW50KCk7XG4gICAgdmFyIGIgPSB7XG4gICAgICB4MTogKHJiLngxIC0gcGFuLngpIC8gem9vbSxcbiAgICAgIHgyOiAocmIueDIgLSBwYW4ueCkgLyB6b29tLFxuICAgICAgeTE6IChyYi55MSAtIHBhbi55KSAvIHpvb20sXG4gICAgICB5MjogKHJiLnkyIC0gcGFuLnkpIC8gem9vbVxuICAgIH07XG4gICAgYi53ID0gYi54MiAtIGIueDE7XG4gICAgYi5oID0gYi55MiAtIGIueTE7XG4gICAgcmV0dXJuIGI7XG4gIH0sXG4gIHJlbmRlcmVkRXh0ZW50OiBmdW5jdGlvbiByZW5kZXJlZEV4dGVudCgpIHtcbiAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoKCk7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHgxOiAwLFxuICAgICAgeTE6IDAsXG4gICAgICB4Mjogd2lkdGgsXG4gICAgICB5MjogaGVpZ2h0LFxuICAgICAgdzogd2lkdGgsXG4gICAgICBoOiBoZWlnaHRcbiAgICB9O1xuICB9LFxuICBtdWx0aUNsaWNrRGVib3VuY2VUaW1lOiBmdW5jdGlvbiBtdWx0aUNsaWNrRGVib3VuY2VUaW1lKF9pbnQpIHtcbiAgICBpZiAoX2ludCkgdGhpcy5fcHJpdmF0ZS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lID0gX2ludDtlbHNlIHJldHVybiB0aGlzLl9wcml2YXRlLm11bHRpQ2xpY2tEZWJvdW5jZVRpbWU7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH1cbn07IC8vIGFsaWFzZXNcblxuY29yZWZuJDguY2VudHJlID0gY29yZWZuJDguY2VudGVyOyAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG5jb3JlZm4kOC5hdXRvbG9ja05vZGVzID0gY29yZWZuJDguYXV0b2xvY2s7XG5jb3JlZm4kOC5hdXRvdW5ncmFiaWZ5Tm9kZXMgPSBjb3JlZm4kOC5hdXRvdW5ncmFiaWZ5O1xuXG52YXIgZm4kNiA9IHtcbiAgZGF0YTogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdkYXRhJyxcbiAgICBiaW5kaW5nRXZlbnQ6ICdkYXRhJyxcbiAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdFdmVudDogJ2RhdGEnLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSksXG4gIHJlbW92ZURhdGE6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAnZGF0YScsXG4gICAgZXZlbnQ6ICdkYXRhJyxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICBzY3JhdGNoOiBkZWZpbmUkMy5kYXRhKHtcbiAgICBmaWVsZDogJ3NjcmF0Y2gnLFxuICAgIGJpbmRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgIGFsbG93QmluZGluZzogdHJ1ZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ0V2ZW50OiAnc2NyYXRjaCcsXG4gICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IHRydWUsXG4gICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgIGFsbG93R2V0dGluZzogdHJ1ZSxcbiAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICB9KSxcbiAgcmVtb3ZlU2NyYXRjaDogZGVmaW5lJDMucmVtb3ZlRGF0YSh7XG4gICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICBldmVudDogJ3NjcmF0Y2gnLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICB0cmlnZ2VyRXZlbnQ6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSlcbn07IC8vIGFsaWFzZXNcblxuZm4kNi5hdHRyID0gZm4kNi5kYXRhO1xuZm4kNi5yZW1vdmVBdHRyID0gZm4kNi5yZW1vdmVEYXRhO1xuXG52YXIgQ29yZSA9IGZ1bmN0aW9uIENvcmUob3B0cykge1xuICB2YXIgY3kgPSB0aGlzO1xuICBvcHRzID0gZXh0ZW5kKHt9LCBvcHRzKTtcbiAgdmFyIGNvbnRhaW5lciA9IG9wdHMuY29udGFpbmVyOyAvLyBhbGxvdyBmb3IgcGFzc2luZyBhIHdyYXBwZWQganF1ZXJ5IG9iamVjdFxuICAvLyBlLmcuIGN5dG9zY2FwZSh7IGNvbnRhaW5lcjogJCgnI2N5JykgfSlcblxuICBpZiAoY29udGFpbmVyICYmICFodG1sRWxlbWVudChjb250YWluZXIpICYmIGh0bWxFbGVtZW50KGNvbnRhaW5lclswXSkpIHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXJbMF07XG4gIH1cblxuICB2YXIgcmVnID0gY29udGFpbmVyID8gY29udGFpbmVyLl9jeXJlZyA6IG51bGw7IC8vIGUuZy4gYWxyZWFkeSByZWdpc3RlcmVkIHNvbWUgaW5mbyAoZS5nLiByZWFkaWVzKSB2aWEganF1ZXJ5XG5cbiAgcmVnID0gcmVnIHx8IHt9O1xuXG4gIGlmIChyZWcgJiYgcmVnLmN5KSB7XG4gICAgcmVnLmN5LmRlc3Ryb3koKTtcbiAgICByZWcgPSB7fTsgLy8gb2xkIGluc3RhbmNlID0+IHJlcGxhY2UgcmVnIGNvbXBsZXRlbHlcbiAgfVxuXG4gIHZhciByZWFkaWVzID0gcmVnLnJlYWRpZXMgPSByZWcucmVhZGllcyB8fCBbXTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgY29udGFpbmVyLl9jeXJlZyA9IHJlZztcbiAgfSAvLyBtYWtlIHN1cmUgY29udGFpbmVyIGFzc29jJ2QgcmVnIHBvaW50cyB0byB0aGlzIGN5XG5cblxuICByZWcuY3kgPSBjeTtcbiAgdmFyIGhlYWQgPSB3aW5kb3ckMSAhPT0gdW5kZWZpbmVkICYmIGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkICYmICFvcHRzLmhlYWRsZXNzO1xuICB2YXIgb3B0aW9ucyA9IG9wdHM7XG4gIG9wdGlvbnMubGF5b3V0ID0gZXh0ZW5kKHtcbiAgICBuYW1lOiBoZWFkID8gJ2dyaWQnIDogJ251bGwnXG4gIH0sIG9wdGlvbnMubGF5b3V0KTtcbiAgb3B0aW9ucy5yZW5kZXJlciA9IGV4dGVuZCh7XG4gICAgbmFtZTogaGVhZCA/ICdjYW52YXMnIDogJ251bGwnXG4gIH0sIG9wdGlvbnMucmVuZGVyZXIpO1xuXG4gIHZhciBkZWZWYWwgPSBmdW5jdGlvbiBkZWZWYWwoZGVmLCB2YWwsIGFsdFZhbCkge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9IGVsc2UgaWYgKGFsdFZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYWx0VmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVmO1xuICAgIH1cbiAgfTtcblxuICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlID0ge1xuICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgIC8vIGh0bWwgZG9tIGVsZSBjb250YWluZXJcbiAgICByZWFkeTogZmFsc2UsXG4gICAgLy8gd2hldGhlciByZWFkeSBoYXMgYmVlbiB0cmlnZ2VyZWRcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIC8vIGNhY2hlZCBvcHRpb25zXG4gICAgZWxlbWVudHM6IG5ldyBDb2xsZWN0aW9uKHRoaXMpLFxuICAgIC8vIGVsZW1lbnRzIGluIHRoZSBncmFwaFxuICAgIGxpc3RlbmVyczogW10sXG4gICAgLy8gbGlzdCBvZiBsaXN0ZW5lcnNcbiAgICBhbmlFbGVzOiBuZXcgQ29sbGVjdGlvbih0aGlzKSxcbiAgICAvLyBlbGVtZW50cyBiZWluZyBhbmltYXRlZFxuICAgIGRhdGE6IG9wdGlvbnMuZGF0YSB8fCB7fSxcbiAgICAvLyBkYXRhIGZvciB0aGUgY29yZVxuICAgIHNjcmF0Y2g6IHt9LFxuICAgIC8vIHNjcmF0Y2ggb2JqZWN0IGZvciBjb3JlXG4gICAgbGF5b3V0OiBudWxsLFxuICAgIHJlbmRlcmVyOiBudWxsLFxuICAgIGRlc3Ryb3llZDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBkZXN0cm95IHdhcyBjYWxsZWRcbiAgICBub3RpZmljYXRpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gdGhlIHJlbmRlcmVyXG4gICAgbWluWm9vbTogMWUtNTAsXG4gICAgbWF4Wm9vbTogMWU1MCxcbiAgICB6b29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMuem9vbWluZ0VuYWJsZWQpLFxuICAgIHVzZXJab29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclpvb21pbmdFbmFibGVkKSxcbiAgICBwYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMucGFubmluZ0VuYWJsZWQpLFxuICAgIHVzZXJQYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclBhbm5pbmdFbmFibGVkKSxcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBkZWZWYWwodHJ1ZSwgb3B0aW9ucy5ib3hTZWxlY3Rpb25FbmFibGVkKSxcbiAgICBhdXRvbG9jazogZGVmVmFsKGZhbHNlLCBvcHRpb25zLmF1dG9sb2NrLCBvcHRpb25zLmF1dG9sb2NrTm9kZXMpLFxuICAgIGF1dG91bmdyYWJpZnk6IGRlZlZhbChmYWxzZSwgb3B0aW9ucy5hdXRvdW5ncmFiaWZ5LCBvcHRpb25zLmF1dG91bmdyYWJpZnlOb2RlcyksXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBkZWZWYWwoZmFsc2UsIG9wdGlvbnMuYXV0b3Vuc2VsZWN0aWZ5KSxcbiAgICBzdHlsZUVuYWJsZWQ6IG9wdGlvbnMuc3R5bGVFbmFibGVkID09PSB1bmRlZmluZWQgPyBoZWFkIDogb3B0aW9ucy5zdHlsZUVuYWJsZWQsXG4gICAgem9vbTogbnVtYmVyKG9wdGlvbnMuem9vbSkgPyBvcHRpb25zLnpvb20gOiAxLFxuICAgIHBhbjoge1xuICAgICAgeDogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlcihvcHRpb25zLnBhbi54KSA/IG9wdGlvbnMucGFuLnggOiAwLFxuICAgICAgeTogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlcihvcHRpb25zLnBhbi55KSA/IG9wdGlvbnMucGFuLnkgOiAwXG4gICAgfSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgY3VycmVudDogW10sXG4gICAgICBxdWV1ZTogW11cbiAgICB9LFxuICAgIGhhc0NvbXBvdW5kTm9kZXM6IGZhbHNlLFxuICAgIG11bHRpQ2xpY2tEZWJvdW5jZVRpbWU6IGRlZlZhbCgyNTAsIG9wdGlvbnMubXVsdGlDbGlja0RlYm91bmNlVGltZSlcbiAgfTtcblxuICB0aGlzLmNyZWF0ZUVtaXR0ZXIoKTsgLy8gc2V0IHNlbGVjdGlvbiB0eXBlXG5cbiAgdGhpcy5zZWxlY3Rpb25UeXBlKG9wdGlvbnMuc2VsZWN0aW9uVHlwZSk7IC8vIGluaXQgem9vbSBib3VuZHNcblxuICB0aGlzLnpvb21SYW5nZSh7XG4gICAgbWluOiBvcHRpb25zLm1pblpvb20sXG4gICAgbWF4OiBvcHRpb25zLm1heFpvb21cbiAgfSk7XG5cbiAgdmFyIGxvYWRFeHREYXRhID0gZnVuY3Rpb24gbG9hZEV4dERhdGEoZXh0RGF0YSwgbmV4dCkge1xuICAgIHZhciBhbnlJc1Byb21pc2UgPSBleHREYXRhLnNvbWUocHJvbWlzZSk7XG5cbiAgICBpZiAoYW55SXNQcm9taXNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZSQxLmFsbChleHREYXRhKS50aGVuKG5leHQpOyAvLyBsb2FkIGFsbCBkYXRhIGFzeW5jaHJvbm91c2x5LCB0aGVuIGV4ZWMgcmVzdCBvZiBpbml0XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoZXh0RGF0YSk7IC8vIGV4ZWMgc3luY2hyb25vdXNseSBmb3IgY29udmVuaWVuY2VcbiAgICB9XG4gIH07IC8vIHN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgc3R5bGVzaGVldCBzbyB3ZSBoYXZlIHNvbWV0aGluZyBiZWZvcmUgbG9hZGluZyBhbiBleHRlcm5hbCBzdHlsZXNoZWV0XG5cblxuICBpZiAoX3Auc3R5bGVFbmFibGVkKSB7XG4gICAgY3kuc2V0U3R5bGUoW10pO1xuICB9IC8vIGNyZWF0ZSB0aGUgcmVuZGVyZXJcblxuXG4gIHZhciByZW5kZXJlck9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMsIG9wdGlvbnMucmVuZGVyZXIpOyAvLyBhbGxvdyByZW5kZXJpbmcgaGludHMgaW4gdG9wIGxldmVsIG9wdGlvbnNcblxuICBjeS5pbml0UmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKTtcblxuICB2YXIgc2V0RWxlc0FuZExheW91dCA9IGZ1bmN0aW9uIHNldEVsZXNBbmRMYXlvdXQoZWxlbWVudHMsIG9ubG9hZCwgb25kb25lKSB7XG4gICAgY3kubm90aWZpY2F0aW9ucyhmYWxzZSk7IC8vIHJlbW92ZSBvbGQgZWxlbWVudHNcblxuICAgIHZhciBvbGRFbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG5cbiAgICBpZiAob2xkRWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBvbGRFbGVzLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cyAhPSBudWxsKSB7XG4gICAgICBpZiAocGxhaW5PYmplY3QoZWxlbWVudHMpIHx8IGFycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICBjeS5hZGQoZWxlbWVudHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN5Lm9uZSgnbGF5b3V0cmVhZHknLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY3kubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgICAgIGN5LmVtaXQoZSk7IC8vIHdlIG1pc3NlZCB0aGlzIGV2ZW50IGJ5IHR1cm5pbmcgbm90aWZpY2F0aW9ucyBvZmYsIHNvIHBhc3MgaXQgb25cblxuICAgICAgY3kub25lKCdsb2FkJywgb25sb2FkKTtcbiAgICAgIGN5LmVtaXRBbmROb3RpZnkoJ2xvYWQnKTtcbiAgICB9KS5vbmUoJ2xheW91dHN0b3AnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjeS5vbmUoJ2RvbmUnLCBvbmRvbmUpO1xuICAgICAgY3kuZW1pdCgnZG9uZScpO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXRPcHRzID0gZXh0ZW5kKHt9LCBjeS5fcHJpdmF0ZS5vcHRpb25zLmxheW91dCk7XG4gICAgbGF5b3V0T3B0cy5lbGVzID0gY3kuZWxlbWVudHMoKTtcbiAgICBjeS5sYXlvdXQobGF5b3V0T3B0cykucnVuKCk7XG4gIH07XG5cbiAgbG9hZEV4dERhdGEoW29wdGlvbnMuc3R5bGUsIG9wdGlvbnMuZWxlbWVudHNdLCBmdW5jdGlvbiAodGhlbnMpIHtcbiAgICB2YXIgaW5pdFN0eWxlID0gdGhlbnNbMF07XG4gICAgdmFyIGluaXRFbGVzID0gdGhlbnNbMV07IC8vIGluaXQgc3R5bGVcblxuICAgIGlmIChfcC5zdHlsZUVuYWJsZWQpIHtcbiAgICAgIGN5LnN0eWxlKCkuYXBwZW5kKGluaXRTdHlsZSk7XG4gICAgfSAvLyBpbml0aWFsIGxvYWRcblxuXG4gICAgc2V0RWxlc0FuZExheW91dChpbml0RWxlcywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gb25yZWFkeVxuICAgICAgY3kuc3RhcnRBbmltYXRpb25Mb29wKCk7XG4gICAgICBfcC5yZWFkeSA9IHRydWU7IC8vIGlmIGEgcmVhZHkgY2FsbGJhY2sgaXMgc3BlY2lmaWVkIGFzIGFuIG9wdGlvbiwgdGhlIGJpbmQgaXRcblxuICAgICAgaWYgKGZuKG9wdGlvbnMucmVhZHkpKSB7XG4gICAgICAgIGN5Lm9uKCdyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICAgICAgfSAvLyBiaW5kIGFsbCB0aGUgcmVhZHkgaGFuZGxlcnMgcmVnaXN0ZXJlZCBiZWZvcmUgY3JlYXRpbmcgdGhpcyBpbnN0YW5jZVxuXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVhZGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZm4kMSA9IHJlYWRpZXNbaV07XG4gICAgICAgIGN5Lm9uKCdyZWFkeScsIGZuJDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVnKSB7XG4gICAgICAgIHJlZy5yZWFkaWVzID0gW107XG4gICAgICB9IC8vIGNsZWFyIGIvYyB3ZSd2ZSBib3VuZCB0aGVtIGFsbCBhbmQgZG9uJ3Qgd2FudCB0byBrZWVwIGl0IGFyb3VuZCBpbiBjYXNlIGEgbmV3IGNvcmUgdXNlcyB0aGUgc2FtZSBkaXYgZXRjXG5cblxuICAgICAgY3kuZW1pdCgncmVhZHknKTtcbiAgICB9LCBvcHRpb25zLmRvbmUpO1xuICB9KTtcbn07XG5cbnZhciBjb3JlZm4kOSA9IENvcmUucHJvdG90eXBlOyAvLyBzaG9ydCBhbGlhc1xuXG5leHRlbmQoY29yZWZuJDksIHtcbiAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgIHJldHVybiAnY29yZSc7XG4gIH0sXG4gIGlzUmVhZHk6IGZ1bmN0aW9uIGlzUmVhZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucmVhZHk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KGZuKSB7XG4gICAgaWYgKHRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KCdyZWFkeScsIFtdLCBmbik7IC8vIGp1c3QgY2FsbHMgZm4gYXMgdGhvdWdoIHRyaWdnZXJlZCB2aWEgcmVhZHkgZXZlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbigncmVhZHknLCBmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBpZiAoY3kuZGVzdHJveWVkKCkpIHJldHVybjtcbiAgICBjeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuICAgIGN5LmRlc3Ryb3lSZW5kZXJlcigpO1xuICAgIHRoaXMuZW1pdCgnZGVzdHJveScpO1xuICAgIGN5Ll9wcml2YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgcmV0dXJuIGN5O1xuICB9LFxuICBoYXNFbGVtZW50V2l0aElkOiBmdW5jdGlvbiBoYXNFbGVtZW50V2l0aElkKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuZWxlbWVudHMuaGFzRWxlbWVudFdpdGhJZChpZCk7XG4gIH0sXG4gIGdldEVsZW1lbnRCeUlkOiBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVsZW1lbnRzLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgfSxcbiAgaGFzQ29tcG91bmROb2RlczogZnVuY3Rpb24gaGFzQ29tcG91bmROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzO1xuICB9LFxuICBoZWFkbGVzczogZnVuY3Rpb24gaGVhZGxlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucmVuZGVyZXIuaXNIZWFkbGVzcygpO1xuICB9LFxuICBzdHlsZUVuYWJsZWQ6IGZ1bmN0aW9uIHN0eWxlRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5zdHlsZUVuYWJsZWQ7XG4gIH0sXG4gIGFkZFRvUG9vbDogZnVuY3Rpb24gYWRkVG9Qb29sKGVsZXMpIHtcbiAgICB0aGlzLl9wcml2YXRlLmVsZW1lbnRzLm1lcmdlKGVsZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHJlbW92ZUZyb21Qb29sOiBmdW5jdGlvbiByZW1vdmVGcm9tUG9vbChlbGVzKSB7XG4gICAgdGhpcy5fcHJpdmF0ZS5lbGVtZW50cy51bm1lcmdlKGVsZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGNvbnRhaW5lcjogZnVuY3Rpb24gY29udGFpbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmNvbnRhaW5lciB8fCBudWxsO1xuICB9LFxuICBtb3VudDogZnVuY3Rpb24gbW91bnQoY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lciA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICB2YXIgX3AgPSBjeS5fcHJpdmF0ZTtcbiAgICB2YXIgb3B0aW9ucyA9IF9wLm9wdGlvbnM7XG5cbiAgICBpZiAoIWh0bWxFbGVtZW50KGNvbnRhaW5lcikgJiYgaHRtbEVsZW1lbnQoY29udGFpbmVyWzBdKSkge1xuICAgICAgY29udGFpbmVyID0gY29udGFpbmVyWzBdO1xuICAgIH1cblxuICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgX3AuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIF9wLnN0eWxlRW5hYmxlZCA9IHRydWU7XG4gICAgY3kuaW52YWxpZGF0ZVNpemUoKTtcbiAgICBjeS5pbml0UmVuZGVyZXIoZXh0ZW5kKHt9LCBvcHRpb25zLCBvcHRpb25zLnJlbmRlcmVyLCB7XG4gICAgICAvLyBhbGxvdyBjdXN0b20gcmVuZGVyZXIgbmFtZSB0byBiZSByZS11c2VkLCBvdGhlcndpc2UgdXNlIGNhbnZhc1xuICAgICAgbmFtZTogb3B0aW9ucy5yZW5kZXJlci5uYW1lID09PSAnbnVsbCcgPyAnY2FudmFzJyA6IG9wdGlvbnMucmVuZGVyZXIubmFtZVxuICAgIH0pKTtcbiAgICBjeS5zdGFydEFuaW1hdGlvbkxvb3AoKTtcbiAgICBjeS5zdHlsZShvcHRpb25zLnN0eWxlKTtcbiAgICBjeS5lbWl0KCdtb3VudCcpO1xuICAgIHJldHVybiBjeTtcbiAgfSxcbiAgdW5tb3VudDogZnVuY3Rpb24gdW5tb3VudCgpIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgY3kuaW5pdFJlbmRlcmVyKHtcbiAgICAgIG5hbWU6ICdudWxsJ1xuICAgIH0pO1xuICAgIGN5LmVtaXQoJ3VubW91bnQnKTtcbiAgICByZXR1cm4gY3k7XG4gIH0sXG4gIG9wdGlvbnM6IGZ1bmN0aW9uIG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIGNvcHkodGhpcy5fcHJpdmF0ZS5vcHRpb25zKTtcbiAgfSxcbiAganNvbjogZnVuY3Rpb24ganNvbihvYmopIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIHZhciBfcCA9IGN5Ll9wcml2YXRlO1xuICAgIHZhciBlbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG5cbiAgICB2YXIgZ2V0RnJlc2hSZWYgPSBmdW5jdGlvbiBnZXRGcmVzaFJlZihlbGUpIHtcbiAgICAgIHJldHVybiBjeS5nZXRFbGVtZW50QnlJZChlbGUuaWQoKSk7XG4gICAgfTtcblxuICAgIGlmIChwbGFpbk9iamVjdChvYmopKSB7XG4gICAgICAvLyBzZXRcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgaWYgKG9iai5lbGVtZW50cykge1xuICAgICAgICB2YXIgaWRJbkpzb24gPSB7fTtcblxuICAgICAgICB2YXIgdXBkYXRlRWxlcyA9IGZ1bmN0aW9uIHVwZGF0ZUVsZXMoanNvbnMsIGdyKSB7XG4gICAgICAgICAgdmFyIHRvQWRkID0gW107XG4gICAgICAgICAgdmFyIHRvTW9kID0gW107XG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIganNvbiA9IGpzb25zW2ldO1xuXG4gICAgICAgICAgICBpZiAoIWpzb24uZGF0YS5pZCkge1xuICAgICAgICAgICAgICB3YXJuKCdjeS5qc29uKCkgY2Fubm90IGhhbmRsZSBlbGVtZW50cyB3aXRob3V0IGFuIElEIGF0dHJpYnV0ZScpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGlkID0gJycgKyBqc29uLmRhdGEuaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgICAgICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICBpZEluSnNvbltpZF0gPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoZWxlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAvLyBleGlzdGluZyBlbGVtZW50IHNob3VsZCBiZSB1cGRhdGVkXG4gICAgICAgICAgICAgIHRvTW9kLnB1c2goe1xuICAgICAgICAgICAgICAgIGVsZTogZWxlLFxuICAgICAgICAgICAgICAgIGpzb246IGpzb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2hvdWxkIGJlIGFkZGVkXG4gICAgICAgICAgICAgIGlmIChncikge1xuICAgICAgICAgICAgICAgIGpzb24uZ3JvdXAgPSBncjtcbiAgICAgICAgICAgICAgICB0b0FkZC5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvQWRkLnB1c2goanNvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjeS5hZGQodG9BZGQpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRvTW9kLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIF90b01vZCRfaSA9IHRvTW9kW19pXSxcbiAgICAgICAgICAgICAgICBfZWxlID0gX3RvTW9kJF9pLmVsZSxcbiAgICAgICAgICAgICAgICBfanNvbiA9IF90b01vZCRfaS5qc29uO1xuXG4gICAgICAgICAgICBfZWxlLmpzb24oX2pzb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYXJyYXkob2JqLmVsZW1lbnRzKSkge1xuICAgICAgICAgIC8vIGVsZW1lbnRzOiBbXVxuICAgICAgICAgIHVwZGF0ZUVsZXMob2JqLmVsZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbGVtZW50czogeyBub2RlczogW10sIGVkZ2VzOiBbXSB9XG4gICAgICAgICAgdmFyIGdycyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3IgPSBncnNbaV07XG4gICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBvYmouZWxlbWVudHNbZ3JdO1xuXG4gICAgICAgICAgICBpZiAoYXJyYXkoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUVsZXMoZWxlbWVudHMsIGdyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGFyZW50c1RvUmVtb3ZlID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICBlbGVzLmZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuICFpZEluSnNvbltlbGUuaWQoKV07XG4gICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgICAgICAgcGFyZW50c1RvUmVtb3ZlLm1lcmdlKGVsZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZS5yZW1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pOyAvLyBzbyB0aGF0IGNoaWxkcmVuIGFyZSBub3QgcmVtb3ZlZCB3L3BhcmVudFxuXG4gICAgICAgIHBhcmVudHNUb1JlbW92ZS5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmNoaWxkcmVuKCkubW92ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IC8vIGludGVybWVkaWF0ZSBwYXJlbnRzIG1heSBiZSBtb3ZlZCBieSBwcmlvciBsaW5lLCBzbyBtYWtlIHN1cmUgd2UgcmVtb3ZlIGJ5IGZyZXNoIHJlZnNcblxuICAgICAgICBwYXJlbnRzVG9SZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdldEZyZXNoUmVmKGVsZSkucmVtb3ZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnN0eWxlKSB7XG4gICAgICAgIGN5LnN0eWxlKG9iai5zdHlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvYmouem9vbSAhPSBudWxsICYmIG9iai56b29tICE9PSBfcC56b29tKSB7XG4gICAgICAgIGN5Lnpvb20ob2JqLnpvb20pO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnBhbikge1xuICAgICAgICBpZiAob2JqLnBhbi54ICE9PSBfcC5wYW4ueCB8fCBvYmoucGFuLnkgIT09IF9wLnBhbi55KSB7XG4gICAgICAgICAgY3kucGFuKG9iai5wYW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvYmouZGF0YSkge1xuICAgICAgICBjeS5kYXRhKG9iai5kYXRhKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpZWxkcyA9IFsnbWluWm9vbScsICdtYXhab29tJywgJ3pvb21pbmdFbmFibGVkJywgJ3VzZXJab29taW5nRW5hYmxlZCcsICdwYW5uaW5nRW5hYmxlZCcsICd1c2VyUGFubmluZ0VuYWJsZWQnLCAnYm94U2VsZWN0aW9uRW5hYmxlZCcsICdhdXRvbG9jaycsICdhdXRvdW5ncmFiaWZ5JywgJ2F1dG91bnNlbGVjdGlmeScsICdtdWx0aUNsaWNrRGVib3VuY2VUaW1lJ107XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGZpZWxkcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBmID0gZmllbGRzW19pMl07XG5cbiAgICAgICAgaWYgKG9ialtmXSAhPSBudWxsKSB7XG4gICAgICAgICAgY3lbZl0ob2JqW2ZdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjeS5lbmRCYXRjaCgpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdldFxuICAgICAgdmFyIGZsYXQgPSAhIW9iajtcbiAgICAgIHZhciBqc29uID0ge307XG5cbiAgICAgIGlmIChmbGF0KSB7XG4gICAgICAgIGpzb24uZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCkubWFwKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmpzb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uLmVsZW1lbnRzID0ge307XG4gICAgICAgIGVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgdmFyIGdyb3VwID0gZWxlLmdyb3VwKCk7XG5cbiAgICAgICAgICBpZiAoIWpzb24uZWxlbWVudHNbZ3JvdXBdKSB7XG4gICAgICAgICAgICBqc29uLmVsZW1lbnRzW2dyb3VwXSA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGpzb24uZWxlbWVudHNbZ3JvdXBdLnB1c2goZWxlLmpzb24oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcHJpdmF0ZS5zdHlsZUVuYWJsZWQpIHtcbiAgICAgICAganNvbi5zdHlsZSA9IGN5LnN0eWxlKCkuanNvbigpO1xuICAgICAgfVxuXG4gICAgICBqc29uLmRhdGEgPSBjb3B5KGN5LmRhdGEoKSk7XG4gICAgICB2YXIgb3B0aW9ucyA9IF9wLm9wdGlvbnM7XG4gICAgICBqc29uLnpvb21pbmdFbmFibGVkID0gX3Auem9vbWluZ0VuYWJsZWQ7XG4gICAgICBqc29uLnVzZXJab29taW5nRW5hYmxlZCA9IF9wLnVzZXJab29taW5nRW5hYmxlZDtcbiAgICAgIGpzb24uem9vbSA9IF9wLnpvb207XG4gICAgICBqc29uLm1pblpvb20gPSBfcC5taW5ab29tO1xuICAgICAganNvbi5tYXhab29tID0gX3AubWF4Wm9vbTtcbiAgICAgIGpzb24ucGFubmluZ0VuYWJsZWQgPSBfcC5wYW5uaW5nRW5hYmxlZDtcbiAgICAgIGpzb24udXNlclBhbm5pbmdFbmFibGVkID0gX3AudXNlclBhbm5pbmdFbmFibGVkO1xuICAgICAganNvbi5wYW4gPSBjb3B5KF9wLnBhbik7XG4gICAgICBqc29uLmJveFNlbGVjdGlvbkVuYWJsZWQgPSBfcC5ib3hTZWxlY3Rpb25FbmFibGVkO1xuICAgICAganNvbi5yZW5kZXJlciA9IGNvcHkob3B0aW9ucy5yZW5kZXJlcik7XG4gICAgICBqc29uLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gICAgICBqc29uLnRleHR1cmVPblZpZXdwb3J0ID0gb3B0aW9ucy50ZXh0dXJlT25WaWV3cG9ydDtcbiAgICAgIGpzb24ud2hlZWxTZW5zaXRpdml0eSA9IG9wdGlvbnMud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgIGpzb24ubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjtcbiAgICAgIGpzb24ubXVsdGlDbGlja0RlYm91bmNlVGltZSA9IG9wdGlvbnMubXVsdGlDbGlja0RlYm91bmNlVGltZTtcbiAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgfVxufSk7XG5jb3JlZm4kOS4kaWQgPSBjb3JlZm4kOS5nZXRFbGVtZW50QnlJZDtcbltjb3JlZm4sIGNvcmVmbiQxLCBlbGVzZm4kdiwgY29yZWZuJDIsIGNvcmVmbiQzLCBjb3JlZm4kNCwgY29yZWZuJDUsIGNvcmVmbiQ2LCBjb3JlZm4kNywgY29yZWZuJDgsIGZuJDZdLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gIGV4dGVuZChjb3JlZm4kOSwgcHJvcHMpO1xufSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cbnZhciBkZWZhdWx0cyQ5ID0ge1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRoZSB0cmVlIGlzIGRpcmVjdGVkIGRvd253YXJkcyAob3IgZWRnZXMgY2FuIHBvaW50IGluIGFueSBkaXJlY3Rpb24gaWYgZmFsc2UpXG4gIHBhZGRpbmc6IDMwLFxuICAvLyBwYWRkaW5nIG9uIGZpdFxuICBjaXJjbGU6IGZhbHNlLFxuICAvLyBwdXQgZGVwdGhzIGluIGNvbmNlbnRyaWMgY2lyY2xlcyBpZiB0cnVlLCBwdXQgZGVwdGhzIHRvcCBkb3duIGlmIGZhbHNlXG4gIGdyaWQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGNyZWF0ZSBhbiBldmVuIGdyaWQgaW50byB3aGljaCB0aGUgREFHIGlzIHBsYWNlZCAoY2lyY2xlOmZhbHNlIG9ubHkpXG4gIHNwYWNpbmdGYWN0b3I6IDEuNzUsXG4gIC8vIHBvc2l0aXZlIHNwYWNpbmcgZmFjdG9yLCBsYXJnZXIgPT4gbW9yZSBzcGFjZSBiZXR3ZWVuIG5vZGVzIChOLkIuIG4vYSBpZiBjYXVzZXMgb3ZlcmxhcClcbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCxcbiAgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIGF2b2lkT3ZlcmxhcDogdHJ1ZSxcbiAgLy8gcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZVxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICByb290czogdW5kZWZpbmVkLFxuICAvLyB0aGUgcm9vdHMgb2YgdGhlIHRyZWVzXG4gIG1heGltYWw6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIHNoaWZ0IG5vZGVzIGRvd24gdGhlaXIgbmF0dXJhbCBCRlMgZGVwdGhzIGluIG9yZGVyIHRvIGF2b2lkIHVwd2FyZHMgZWRnZXMgKERBR1Mgb25seSlcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZCxcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIGFuaW1hdGVkLiAgQWxsIG5vZGVzIGFuaW1hdGVkIGJ5IGRlZmF1bHQgb24gYW5pbWF0ZSBlbmFibGVkLiAgTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgcmVhZHk6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRzdG9wXG4gIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUsIHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9IC8vIHRyYW5zZm9ybSBhIGdpdmVuIG5vZGUgcG9zaXRpb24uIFVzZWZ1bCBmb3IgY2hhbmdpbmcgZmxvdyBkaXJlY3Rpb24gaW4gZGlzY3JldGUgbGF5b3V0c1xuXG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG52YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8oZWxlKSB7XG4gIHJldHVybiBlbGUuc2NyYXRjaCgnYnJlYWR0aGZpcnN0Jyk7XG59O1xuXG52YXIgc2V0SW5mbyA9IGZ1bmN0aW9uIHNldEluZm8oZWxlLCBvYmopIHtcbiAgcmV0dXJuIGVsZS5zY3JhdGNoKCdicmVhZHRoZmlyc3QnLCBvYmopO1xufTtcblxuZnVuY3Rpb24gQnJlYWR0aEZpcnN0TGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyQ5LCBvcHRpb25zKTtcbn1cblxuQnJlYWR0aEZpcnN0TGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBwYXJhbXMgPSB0aGlzLm9wdGlvbnM7XG4gIHZhciBvcHRpb25zID0gcGFyYW1zO1xuICB2YXIgY3kgPSBwYXJhbXMuY3k7XG4gIHZhciBlbGVzID0gb3B0aW9ucy5lbGVzO1xuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuICFuLmlzUGFyZW50KCk7XG4gIH0pO1xuICB2YXIgZ3JhcGggPSBlbGVzO1xuICB2YXIgZGlyZWN0ZWQgPSBvcHRpb25zLmRpcmVjdGVkO1xuICB2YXIgbWF4aW1hbCA9IG9wdGlvbnMubWF4aW1hbCB8fCBvcHRpb25zLm1heGltYWxBZGp1c3RtZW50cyA+IDA7IC8vIG1heGltYWxBZGp1c3RtZW50cyBmb3IgY29tcGF0LiB3LyBvbGQgY29kZVxuXG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuICB2YXIgcm9vdHM7XG5cbiAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24ob3B0aW9ucy5yb290cykpIHtcbiAgICByb290cyA9IG9wdGlvbnMucm9vdHM7XG4gIH0gZWxzZSBpZiAoYXJyYXkob3B0aW9ucy5yb290cykpIHtcbiAgICB2YXIgcm9vdHNBcnJheSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLnJvb3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWQgPSBvcHRpb25zLnJvb3RzW2ldO1xuICAgICAgdmFyIGVsZSA9IGN5LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgIHJvb3RzQXJyYXkucHVzaChlbGUpO1xuICAgIH1cblxuICAgIHJvb3RzID0gY3kuY29sbGVjdGlvbihyb290c0FycmF5KTtcbiAgfSBlbHNlIGlmIChzdHJpbmcob3B0aW9ucy5yb290cykpIHtcbiAgICByb290cyA9IGN5LiQob3B0aW9ucy5yb290cyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICByb290cyA9IG5vZGVzLnJvb3RzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb21wb25lbnRzID0gZWxlcy5jb21wb25lbnRzKCk7XG4gICAgICByb290cyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW19pXTtcbiAgICAgICAgdmFyIG1heERlZ3JlZSA9IGNvbXAubWF4RGVncmVlKGZhbHNlKTtcbiAgICAgICAgdmFyIGNvbXBSb290cyA9IGNvbXAuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmRlZ3JlZShmYWxzZSkgPT09IG1heERlZ3JlZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJvb3RzID0gcm9vdHMuYWRkKGNvbXBSb290cyk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgY29tcG9uZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgX2xvb3AoX2kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZXB0aHMgPSBbXTtcbiAgdmFyIGZvdW5kQnlCZnMgPSB7fTtcblxuICB2YXIgYWRkVG9EZXB0aCA9IGZ1bmN0aW9uIGFkZFRvRGVwdGgoZWxlLCBkKSB7XG4gICAgaWYgKGRlcHRoc1tkXSA9PSBudWxsKSB7XG4gICAgICBkZXB0aHNbZF0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgaSA9IGRlcHRoc1tkXS5sZW5ndGg7XG4gICAgZGVwdGhzW2RdLnB1c2goZWxlKTtcbiAgICBzZXRJbmZvKGVsZSwge1xuICAgICAgaW5kZXg6IGksXG4gICAgICBkZXB0aDogZFxuICAgIH0pO1xuICB9O1xuXG4gIHZhciBjaGFuZ2VEZXB0aCA9IGZ1bmN0aW9uIGNoYW5nZURlcHRoKGVsZSwgbmV3RGVwdGgpIHtcbiAgICB2YXIgX2dldEluZm8gPSBnZXRJbmZvKGVsZSksXG4gICAgICAgIGRlcHRoID0gX2dldEluZm8uZGVwdGgsXG4gICAgICAgIGluZGV4ID0gX2dldEluZm8uaW5kZXg7XG5cbiAgICBkZXB0aHNbZGVwdGhdW2luZGV4XSA9IG51bGw7XG4gICAgYWRkVG9EZXB0aChlbGUsIG5ld0RlcHRoKTtcbiAgfTsgLy8gZmluZCB0aGUgZGVwdGhzIG9mIHRoZSBub2Rlc1xuXG5cbiAgZ3JhcGguYmZzKHtcbiAgICByb290czogcm9vdHMsXG4gICAgZGlyZWN0ZWQ6IG9wdGlvbnMuZGlyZWN0ZWQsXG4gICAgdmlzaXQ6IGZ1bmN0aW9uIHZpc2l0KG5vZGUsIGVkZ2UsIHBOb2RlLCBpLCBkZXB0aCkge1xuICAgICAgdmFyIGVsZSA9IG5vZGVbMF07XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIGFkZFRvRGVwdGgoZWxlLCBkZXB0aCk7XG4gICAgICBmb3VuZEJ5QmZzW2lkXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gY2hlY2sgZm9yIG5vZGVzIG5vdCBmb3VuZCBieSBiZnNcblxuICB2YXIgb3JwaGFuTm9kZXMgPSBbXTtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9lbGUgPSBub2Rlc1tfaTJdO1xuXG4gICAgaWYgKGZvdW5kQnlCZnNbX2VsZS5pZCgpXSkge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ycGhhbk5vZGVzLnB1c2goX2VsZSk7XG4gICAgfVxuICB9IC8vIGFzc2lnbiB0aGUgbm9kZXMgYSBkZXB0aCBhbmQgaW5kZXhcblxuXG4gIHZhciBhc3NpZ25EZXB0aHNBdCA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRoc0F0KGkpIHtcbiAgICB2YXIgZWxlcyA9IGRlcHRoc1tpXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIF9lbGUyID0gZWxlc1tqXTtcblxuICAgICAgaWYgKF9lbGUyID09IG51bGwpIHtcbiAgICAgICAgZWxlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIGotLTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHNldEluZm8oX2VsZTIsIHtcbiAgICAgICAgZGVwdGg6IGksXG4gICAgICAgIGluZGV4OiBqXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFzc2lnbkRlcHRocyA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRocygpIHtcbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBkZXB0aHMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgYXNzaWduRGVwdGhzQXQoX2kzKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkanVzdE1heGltYWxseSA9IGZ1bmN0aW9uIGFkanVzdE1heGltYWxseShlbGUsIHNoaWZ0ZWQpIHtcbiAgICB2YXIgZUluZm8gPSBnZXRJbmZvKGVsZSk7XG4gICAgdmFyIGluY29tZXJzID0gZWxlLmluY29tZXJzKCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgcmV0dXJuIGVsLmlzTm9kZSgpICYmIGVsZXMuaGFzKGVsKTtcbiAgICB9KTtcbiAgICB2YXIgbWF4RGVwdGggPSAtMTtcbiAgICB2YXIgaWQgPSBlbGUuaWQoKTtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaW5jb21lcnMubGVuZ3RoOyBrKyspIHtcbiAgICAgIHZhciBpbmNtciA9IGluY29tZXJzW2tdO1xuICAgICAgdmFyIGlJbmZvID0gZ2V0SW5mbyhpbmNtcik7XG4gICAgICBtYXhEZXB0aCA9IE1hdGgubWF4KG1heERlcHRoLCBpSW5mby5kZXB0aCk7XG4gICAgfVxuXG4gICAgaWYgKGVJbmZvLmRlcHRoIDw9IG1heERlcHRoKSB7XG4gICAgICBpZiAoc2hpZnRlZFtpZF0pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZURlcHRoKGVsZSwgbWF4RGVwdGggKyAxKTtcbiAgICAgIHNoaWZ0ZWRbaWRdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTsgLy8gZm9yIHRoZSBkaXJlY3RlZCBjYXNlLCB0cnkgdG8gbWFrZSB0aGUgZWRnZXMgYWxsIGdvIGRvd24gKGkuZS4gZGVwdGggaSA9PiBkZXB0aCBpICsgMSlcblxuXG4gIGlmIChkaXJlY3RlZCAmJiBtYXhpbWFsKSB7XG4gICAgdmFyIFEgPSBbXTtcbiAgICB2YXIgc2hpZnRlZCA9IHt9O1xuXG4gICAgdmFyIGVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKG4pIHtcbiAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgfTtcblxuICAgIHZhciBkZXF1ZXVlID0gZnVuY3Rpb24gZGVxdWV1ZSgpIHtcbiAgICAgIHJldHVybiBRLnNoaWZ0KCk7XG4gICAgfTtcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAoUS5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgX2VsZTMgPSBkZXF1ZXVlKCk7XG5cbiAgICAgIHZhciBkaWRTaGlmdCA9IGFkanVzdE1heGltYWxseShfZWxlMywgc2hpZnRlZCk7XG5cbiAgICAgIGlmIChkaWRTaGlmdCkge1xuICAgICAgICBfZWxlMy5vdXRnb2VycygpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWwuaXNOb2RlKCkgJiYgZWxlcy5oYXMoZWwpO1xuICAgICAgICB9KS5mb3JFYWNoKGVucXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChkaWRTaGlmdCA9PT0gbnVsbCkge1xuICAgICAgICB3YXJuKCdEZXRlY3RlZCBkb3VibGUgbWF4aW1hbCBzaGlmdCBmb3Igbm9kZSBgJyArIF9lbGUzLmlkKCkgKyAnYC4gIEJhaWxpbmcgbWF4aW1hbCBhZGp1c3RtZW50IGR1ZSB0byBjeWNsZS4gIFVzZSBgb3B0aW9ucy5tYXhpbWFsOiB0cnVlYCBvbmx5IG9uIERBR3MuJyk7XG4gICAgICAgIGJyZWFrOyAvLyBleGl0IG9uIGZhaWx1cmVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3NpZ25EZXB0aHMoKTsgLy8gY2xlYXIgaG9sZXNcbiAgLy8gZmluZCBtaW4gZGlzdGFuY2Ugd2UgbmVlZCB0byBsZWF2ZSBiZXR3ZWVuIG5vZGVzXG5cbiAgdmFyIG1pbkRpc3RhbmNlID0gMDtcblxuICBpZiAob3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICBmb3IgKHZhciBfaTQgPSAwOyBfaTQgPCBub2Rlcy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICB2YXIgbiA9IG5vZGVzW19pNF07XG4gICAgICB2YXIgbmJiID0gbi5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgICAgdmFyIHcgPSBuYmIudztcbiAgICAgIHZhciBoID0gbmJiLmg7XG4gICAgICBtaW5EaXN0YW5jZSA9IE1hdGgubWF4KG1pbkRpc3RhbmNlLCB3LCBoKTtcbiAgICB9XG4gIH0gLy8gZ2V0IHRoZSB3ZWlnaHRlZCBwZXJjZW50IGZvciBhbiBlbGVtZW50IGJhc2VkIG9uIGl0cyBjb25uZWN0aXZpdHkgdG8gb3RoZXIgbGV2ZWxzXG5cblxuICB2YXIgY2FjaGVkV2VpZ2h0ZWRQZXJjZW50ID0ge307XG5cbiAgdmFyIGdldFdlaWdodGVkUGVyY2VudCA9IGZ1bmN0aW9uIGdldFdlaWdodGVkUGVyY2VudChlbGUpIHtcbiAgICBpZiAoY2FjaGVkV2VpZ2h0ZWRQZXJjZW50W2VsZS5pZCgpXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV07XG4gICAgfVxuXG4gICAgdmFyIGVsZURlcHRoID0gZ2V0SW5mbyhlbGUpLmRlcHRoO1xuICAgIHZhciBuZWlnaGJvcnMgPSBlbGUubmVpZ2hib3Job29kKCk7XG4gICAgdmFyIHBlcmNlbnQgPSAwO1xuICAgIHZhciBzYW1wbGVzID0gMDtcblxuICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG5laWdoYm9ycy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbX2k1XTtcblxuICAgICAgaWYgKG5laWdoYm9yLmlzRWRnZSgpIHx8IG5laWdoYm9yLmlzUGFyZW50KCkgfHwgIW5vZGVzLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBiZiA9IGdldEluZm8obmVpZ2hib3IpO1xuXG4gICAgICBpZiAoYmYgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGluZGV4ID0gYmYuaW5kZXg7XG4gICAgICB2YXIgZGVwdGggPSBiZi5kZXB0aDsgLy8gdW5hc3NpZ25lZCBuZWlnaGJvdXJzIHNob3VsZG4ndCBhZmZlY3QgdGhlIG9yZGVyaW5nXG5cbiAgICAgIGlmIChpbmRleCA9PSBudWxsIHx8IGRlcHRoID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBuRGVwdGggPSBkZXB0aHNbZGVwdGhdLmxlbmd0aDtcblxuICAgICAgaWYgKGRlcHRoIDwgZWxlRGVwdGgpIHtcbiAgICAgICAgLy8gb25seSBnZXQgaW5mbHVlbmNlZCBieSBlbGVtZW50cyBhYm92ZVxuICAgICAgICBwZXJjZW50ICs9IGluZGV4IC8gbkRlcHRoO1xuICAgICAgICBzYW1wbGVzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2FtcGxlcyA9IE1hdGgubWF4KDEsIHNhbXBsZXMpO1xuICAgIHBlcmNlbnQgPSBwZXJjZW50IC8gc2FtcGxlcztcblxuICAgIGlmIChzYW1wbGVzID09PSAwKSB7XG4gICAgICAvLyBwdXQgbG9uZSBub2RlcyBhdCB0aGUgc3RhcnRcbiAgICAgIHBlcmNlbnQgPSAwO1xuICAgIH1cblxuICAgIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV0gPSBwZXJjZW50O1xuICAgIHJldHVybiBwZXJjZW50O1xuICB9OyAvLyByZWFycmFuZ2UgdGhlIGluZGljZXMgaW4gZWFjaCBkZXB0aCBsZXZlbCBiYXNlZCBvbiBjb25uZWN0aXZpdHlcblxuXG4gIHZhciBzb3J0Rm4gPSBmdW5jdGlvbiBzb3J0Rm4oYSwgYikge1xuICAgIHZhciBhcGN0ID0gZ2V0V2VpZ2h0ZWRQZXJjZW50KGEpO1xuICAgIHZhciBicGN0ID0gZ2V0V2VpZ2h0ZWRQZXJjZW50KGIpO1xuICAgIHZhciBkaWZmID0gYXBjdCAtIGJwY3Q7XG5cbiAgICBpZiAoZGlmZiA9PT0gMCkge1xuICAgICAgcmV0dXJuIGFzY2VuZGluZyhhLmlkKCksIGIuaWQoKSk7IC8vIG1ha2Ugc3VyZSBzb3J0IGRvZXNuJ3QgaGF2ZSBkb24ndC1jYXJlIGNvbXBhcmlzb25zXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWZmO1xuICAgIH1cbiAgfTsgLy8gc29ydCBlYWNoIGxldmVsIHRvIG1ha2UgY29ubmVjdGVkIG5vZGVzIGNsb3NlclxuXG5cbiAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgZGVwdGhzLmxlbmd0aDsgX2k2KyspIHtcbiAgICBkZXB0aHNbX2k2XS5zb3J0KHNvcnRGbik7XG5cbiAgICBhc3NpZ25EZXB0aHNBdChfaTYpO1xuICB9IC8vIGFzc2lnbiBvcnBoYW4gbm9kZXMgdG8gYSBuZXcgdG9wLWxldmVsIGRlcHRoXG5cblxuICB2YXIgb3JwaGFuRGVwdGggPSBbXTtcblxuICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCBvcnBoYW5Ob2Rlcy5sZW5ndGg7IF9pNysrKSB7XG4gICAgb3JwaGFuRGVwdGgucHVzaChvcnBoYW5Ob2Rlc1tfaTddKTtcbiAgfVxuXG4gIGRlcHRocy51bnNoaWZ0KG9ycGhhbkRlcHRoKTtcbiAgYXNzaWduRGVwdGhzKCk7XG4gIHZhciBiaWdnZXN0RGVwdGhTaXplID0gMDtcblxuICBmb3IgKHZhciBfaTggPSAwOyBfaTggPCBkZXB0aHMubGVuZ3RoOyBfaTgrKykge1xuICAgIGJpZ2dlc3REZXB0aFNpemUgPSBNYXRoLm1heChkZXB0aHNbX2k4XS5sZW5ndGgsIGJpZ2dlc3REZXB0aFNpemUpO1xuICB9XG5cbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgIHk6IGJiLngxICsgYmIuaCAvIDJcbiAgfTtcbiAgdmFyIG1heERlcHRoU2l6ZSA9IGRlcHRocy5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgZWxlcykge1xuICAgIHJldHVybiBNYXRoLm1heChtYXgsIGVsZXMubGVuZ3RoKTtcbiAgfSwgMCk7XG5cbiAgdmFyIGdldFBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0UG9zaXRpb24oZWxlKSB7XG4gICAgdmFyIF9nZXRJbmZvMiA9IGdldEluZm8oZWxlKSxcbiAgICAgICAgZGVwdGggPSBfZ2V0SW5mbzIuZGVwdGgsXG4gICAgICAgIGluZGV4ID0gX2dldEluZm8yLmluZGV4O1xuXG4gICAgdmFyIGRlcHRoU2l6ZSA9IGRlcHRoc1tkZXB0aF0ubGVuZ3RoO1xuICAgIHZhciBkaXN0YW5jZVggPSBNYXRoLm1heChiYi53IC8gKChvcHRpb25zLmdyaWQgPyBtYXhEZXB0aFNpemUgOiBkZXB0aFNpemUpICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICB2YXIgZGlzdGFuY2VZID0gTWF0aC5tYXgoYmIuaCAvIChkZXB0aHMubGVuZ3RoICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICB2YXIgcmFkaXVzU3RlcFNpemUgPSBNYXRoLm1pbihiYi53IC8gMiAvIGRlcHRocy5sZW5ndGgsIGJiLmggLyAyIC8gZGVwdGhzLmxlbmd0aCk7XG4gICAgcmFkaXVzU3RlcFNpemUgPSBNYXRoLm1heChyYWRpdXNTdGVwU2l6ZSwgbWluRGlzdGFuY2UpO1xuXG4gICAgaWYgKCFvcHRpb25zLmNpcmNsZSkge1xuICAgICAgdmFyIGVwb3MgPSB7XG4gICAgICAgIHg6IGNlbnRlci54ICsgKGluZGV4ICsgMSAtIChkZXB0aFNpemUgKyAxKSAvIDIpICogZGlzdGFuY2VYLFxuICAgICAgICB5OiAoZGVwdGggKyAxKSAqIGRpc3RhbmNlWVxuICAgICAgfTtcbiAgICAgIHJldHVybiBlcG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmFkaXVzID0gcmFkaXVzU3RlcFNpemUgKiBkZXB0aCArIHJhZGl1c1N0ZXBTaXplIC0gKGRlcHRocy5sZW5ndGggPiAwICYmIGRlcHRoc1swXS5sZW5ndGggPD0gMyA/IHJhZGl1c1N0ZXBTaXplIC8gMiA6IDApO1xuICAgICAgdmFyIHRoZXRhID0gMiAqIE1hdGguUEkgLyBkZXB0aHNbZGVwdGhdLmxlbmd0aCAqIGluZGV4O1xuXG4gICAgICBpZiAoZGVwdGggPT09IDAgJiYgZGVwdGhzWzBdLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByYWRpdXMgPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBjZW50ZXIueCArIHJhZGl1cyAqIE1hdGguY29zKHRoZXRhKSxcbiAgICAgICAgeTogY2VudGVyLnkgKyByYWRpdXMgKiBNYXRoLnNpbih0aGV0YSlcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIGVsZXMubm9kZXMoKS5sYXlvdXRQb3NpdGlvbnModGhpcywgb3B0aW9ucywgZ2V0UG9zaXRpb24pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRhID0ge1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgcGFkZGluZzogMzAsXG4gIC8vIHRoZSBwYWRkaW5nIG9uIGZpdFxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgYXZvaWRPdmVybGFwOiB0cnVlLFxuICAvLyBwcmV2ZW50cyBub2RlIG92ZXJsYXAsIG1heSBvdmVyZmxvdyBib3VuZGluZ0JveCBhbmQgcmFkaXVzIGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgc3BhY2luZ0ZhY3RvcjogdW5kZWZpbmVkLFxuICAvLyBBcHBsaWVzIGEgbXVsdGlwbGljYXRpdmUgZmFjdG9yICg+MCkgdG8gZXhwYW5kIG9yIGNvbXByZXNzIHRoZSBvdmVyYWxsIGFyZWEgdGhhdCB0aGUgbm9kZXMgdGFrZSB1cFxuICByYWRpdXM6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHJhZGl1cyBvZiB0aGUgY2lyY2xlXG4gIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgLy8gd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFuc1xuICBzd2VlcDogdW5kZWZpbmVkLFxuICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgY2xvY2t3aXNlOiB0cnVlLFxuICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgc29ydDogdW5kZWZpbmVkLFxuICAvLyBhIHNvcnRpbmcgZnVuY3Rpb24gdG8gb3JkZXIgdGhlIG5vZGVzOyBlLmcuIGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gYS5kYXRhKCd3ZWlnaHQnKSAtIGIuZGF0YSgnd2VpZ2h0JykgfVxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbn07XG5cbmZ1bmN0aW9uIENpcmNsZUxheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkYSwgb3B0aW9ucyk7XG59XG5cbkNpcmNsZUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHBhcmFtcztcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIGNsb2Nrd2lzZSA9IG9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSAhPT0gdW5kZWZpbmVkID8gIW9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSA6IG9wdGlvbnMuY2xvY2t3aXNlO1xuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkubm90KCc6cGFyZW50Jyk7XG5cbiAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgIG5vZGVzID0gbm9kZXMuc29ydChvcHRpb25zLnNvcnQpO1xuICB9XG5cbiAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgIHgxOiAwLFxuICAgIHkxOiAwLFxuICAgIHc6IGN5LndpZHRoKCksXG4gICAgaDogY3kuaGVpZ2h0KClcbiAgfSk7XG4gIHZhciBjZW50ZXIgPSB7XG4gICAgeDogYmIueDEgKyBiYi53IC8gMixcbiAgICB5OiBiYi55MSArIGJiLmggLyAyXG4gIH07XG4gIHZhciBzd2VlcCA9IG9wdGlvbnMuc3dlZXAgPT09IHVuZGVmaW5lZCA/IDIgKiBNYXRoLlBJIC0gMiAqIE1hdGguUEkgLyBub2Rlcy5sZW5ndGggOiBvcHRpb25zLnN3ZWVwO1xuICB2YXIgZFRoZXRhID0gc3dlZXAgLyBNYXRoLm1heCgxLCBub2Rlcy5sZW5ndGggLSAxKTtcbiAgdmFyIHI7XG4gIHZhciBtaW5EaXN0YW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuID0gbm9kZXNbaV07XG4gICAgdmFyIG5iYiA9IG4ubGF5b3V0RGltZW5zaW9ucyhvcHRpb25zKTtcbiAgICB2YXIgdyA9IG5iYi53O1xuICAgIHZhciBoID0gbmJiLmg7XG4gICAgbWluRGlzdGFuY2UgPSBNYXRoLm1heChtaW5EaXN0YW5jZSwgdywgaCk7XG4gIH1cblxuICBpZiAobnVtYmVyKG9wdGlvbnMucmFkaXVzKSkge1xuICAgIHIgPSBvcHRpb25zLnJhZGl1cztcbiAgfSBlbHNlIGlmIChub2Rlcy5sZW5ndGggPD0gMSkge1xuICAgIHIgPSAwO1xuICB9IGVsc2Uge1xuICAgIHIgPSBNYXRoLm1pbihiYi5oLCBiYi53KSAvIDIgLSBtaW5EaXN0YW5jZTtcbiAgfSAvLyBjYWxjdWxhdGUgdGhlIHJhZGl1c1xuXG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA+IDEgJiYgb3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICAvLyBidXQgb25seSBpZiBtb3JlIHRoYW4gb25lIG5vZGUgKGNhbid0IG92ZXJsYXApXG4gICAgbWluRGlzdGFuY2UgKj0gMS43NTsgLy8ganVzdCB0byBoYXZlIHNvbWUgbmljZSBzcGFjaW5nXG5cbiAgICB2YXIgZGNvcyA9IE1hdGguY29zKGRUaGV0YSkgLSBNYXRoLmNvcygwKTtcbiAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICB2YXIgck1pbiA9IE1hdGguc3FydChtaW5EaXN0YW5jZSAqIG1pbkRpc3RhbmNlIC8gKGRjb3MgKiBkY29zICsgZHNpbiAqIGRzaW4pKTsgLy8gcy50LiBubyBub2RlcyBvdmVybGFwcGluZ1xuXG4gICAgciA9IE1hdGgubWF4KHJNaW4sIHIpO1xuICB9XG5cbiAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGUsIGkpIHtcbiAgICB2YXIgdGhldGEgPSBvcHRpb25zLnN0YXJ0QW5nbGUgKyBpICogZFRoZXRhICogKGNsb2Nrd2lzZSA/IDEgOiAtMSk7XG4gICAgdmFyIHJ4ID0gciAqIE1hdGguY29zKHRoZXRhKTtcbiAgICB2YXIgcnkgPSByICogTWF0aC5zaW4odGhldGEpO1xuICAgIHZhciBwb3MgPSB7XG4gICAgICB4OiBjZW50ZXIueCArIHJ4LFxuICAgICAgeTogY2VudGVyLnkgKyByeVxuICAgIH07XG4gICAgcmV0dXJuIHBvcztcbiAgfTtcblxuICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxudmFyIGRlZmF1bHRzJGIgPSB7XG4gIGZpdDogdHJ1ZSxcbiAgLy8gd2hldGhlciB0byBmaXQgdGhlIHZpZXdwb3J0IHRvIHRoZSBncmFwaFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gdGhlIHBhZGRpbmcgb24gZml0XG4gIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgLy8gd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFuc1xuICBzd2VlcDogdW5kZWZpbmVkLFxuICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgY2xvY2t3aXNlOiB0cnVlLFxuICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgZXF1aWRpc3RhbnQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIGxldmVscyBoYXZlIGFuIGVxdWFsIHJhZGlhbCBkaXN0YW5jZSBiZXR3ZW4gdGhlbSwgbWF5IGNhdXNlIGJvdW5kaW5nIGJveCBvdmVyZmxvd1xuICBtaW5Ob2RlU3BhY2luZzogMTAsXG4gIC8vIG1pbiBzcGFjaW5nIGJldHdlZW4gb3V0c2lkZSBvZiBub2RlcyAodXNlZCBmb3IgcmFkaXVzIGFkanVzdG1lbnQpXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gIC8vIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gIC8vIGhlaWdodCBvZiBsYXlvdXQgYXJlYSAob3ZlcnJpZGVzIGNvbnRhaW5lciBoZWlnaHQpXG4gIHdpZHRoOiB1bmRlZmluZWQsXG4gIC8vIHdpZHRoIG9mIGxheW91dCBhcmVhIChvdmVycmlkZXMgY29udGFpbmVyIHdpZHRoKVxuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsXG4gIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIGNvbmNlbnRyaWM6IGZ1bmN0aW9uIGNvbmNlbnRyaWMobm9kZSkge1xuICAgIC8vIHJldHVybnMgbnVtZXJpYyB2YWx1ZSBmb3IgZWFjaCBub2RlLCBwbGFjaW5nIGhpZ2hlciBub2RlcyBpbiBsZXZlbHMgdG93YXJkcyB0aGUgY2VudHJlXG4gICAgcmV0dXJuIG5vZGUuZGVncmVlKCk7XG4gIH0sXG4gIGxldmVsV2lkdGg6IGZ1bmN0aW9uIGxldmVsV2lkdGgobm9kZXMpIHtcbiAgICAvLyB0aGUgdmFyaWF0aW9uIG9mIGNvbmNlbnRyaWMgdmFsdWVzIGluIGVhY2ggbGV2ZWxcbiAgICByZXR1cm4gbm9kZXMubWF4RGVncmVlKCkgLyA0O1xuICB9LFxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHNcblxufTtcblxuZnVuY3Rpb24gQ29uY2VudHJpY0xheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkYiwgb3B0aW9ucyk7XG59XG5cbkNvbmNlbnRyaWNMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhcmFtcyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIG9wdGlvbnMgPSBwYXJhbXM7XG4gIHZhciBjbG9ja3dpc2UgPSBvcHRpb25zLmNvdW50ZXJjbG9ja3dpc2UgIT09IHVuZGVmaW5lZCA/ICFvcHRpb25zLmNvdW50ZXJjbG9ja3dpc2UgOiBvcHRpb25zLmNsb2Nrd2lzZTtcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuICB2YXIgYmIgPSBtYWtlQm91bmRpbmdCb3gob3B0aW9ucy5ib3VuZGluZ0JveCA/IG9wdGlvbnMuYm91bmRpbmdCb3ggOiB7XG4gICAgeDE6IDAsXG4gICAgeTE6IDAsXG4gICAgdzogY3kud2lkdGgoKSxcbiAgICBoOiBjeS5oZWlnaHQoKVxuICB9KTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgIHk6IGJiLnkxICsgYmIuaCAvIDJcbiAgfTtcbiAgdmFyIG5vZGVWYWx1ZXMgPSBbXTsgLy8geyBub2RlLCB2YWx1ZSB9XG5cbiAgdmFyIG1heE5vZGVTaXplID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgdmFsdWUgPSB2b2lkIDA7IC8vIGNhbGN1bGF0ZSB0aGUgbm9kZSB2YWx1ZVxuXG4gICAgdmFsdWUgPSBvcHRpb25zLmNvbmNlbnRyaWMobm9kZSk7XG4gICAgbm9kZVZhbHVlcy5wdXNoKHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG5vZGU6IG5vZGVcbiAgICB9KTsgLy8gZm9yIHN0eWxlIG1hcHBpbmdcblxuICAgIG5vZGUuX3ByaXZhdGUuc2NyYXRjaC5jb25jZW50cmljID0gdmFsdWU7XG4gIH0gLy8gaW4gY2FzZSB3ZSB1c2VkIHRoZSBgY29uY2VudHJpY2AgaW4gc3R5bGVcblxuXG4gIG5vZGVzLnVwZGF0ZVN0eWxlKCk7IC8vIGNhbGN1bGF0ZSBtYXggc2l6ZSBub3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdXBkYXRlZCBtYXBwZXJzXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5vZGVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcblxuICAgIHZhciBuYmIgPSBfbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgbWF4Tm9kZVNpemUgPSBNYXRoLm1heChtYXhOb2RlU2l6ZSwgbmJiLncsIG5iYi5oKTtcbiAgfSAvLyBzb3J0IG5vZGUgdmFsdWVzIGluIGRlc2NyZWFzaW5nIG9yZGVyXG5cblxuICBub2RlVmFsdWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi52YWx1ZSAtIGEudmFsdWU7XG4gIH0pO1xuICB2YXIgbGV2ZWxXaWR0aCA9IG9wdGlvbnMubGV2ZWxXaWR0aChub2Rlcyk7IC8vIHB1dCB0aGUgdmFsdWVzIGludG8gbGV2ZWxzXG5cbiAgdmFyIGxldmVscyA9IFtbXV07XG4gIHZhciBjdXJyZW50TGV2ZWwgPSBsZXZlbHNbMF07XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbm9kZVZhbHVlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIHZhbCA9IG5vZGVWYWx1ZXNbX2kyXTtcblxuICAgIGlmIChjdXJyZW50TGV2ZWwubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhjdXJyZW50TGV2ZWxbMF0udmFsdWUgLSB2YWwudmFsdWUpO1xuXG4gICAgICBpZiAoZGlmZiA+PSBsZXZlbFdpZHRoKSB7XG4gICAgICAgIGN1cnJlbnRMZXZlbCA9IFtdO1xuICAgICAgICBsZXZlbHMucHVzaChjdXJyZW50TGV2ZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnRMZXZlbC5wdXNoKHZhbCk7XG4gIH0gLy8gY3JlYXRlIHBvc2l0aW9ucyBmcm9tIGxldmVsc1xuXG5cbiAgdmFyIG1pbkRpc3QgPSBtYXhOb2RlU2l6ZSArIG9wdGlvbnMubWluTm9kZVNwYWNpbmc7IC8vIG1pbiBkaXN0IGJldHdlZW4gbm9kZXNcblxuICBpZiAoIW9wdGlvbnMuYXZvaWRPdmVybGFwKSB7XG4gICAgLy8gdGhlbiBzdHJpY3RseSBjb25zdHJhaW4gdG8gYmJcbiAgICB2YXIgZmlyc3RMdmxIYXNNdWx0aSA9IGxldmVscy5sZW5ndGggPiAwICYmIGxldmVsc1swXS5sZW5ndGggPiAxO1xuICAgIHZhciBtYXhSID0gTWF0aC5taW4oYmIudywgYmIuaCkgLyAyIC0gbWluRGlzdDtcbiAgICB2YXIgclN0ZXAgPSBtYXhSIC8gKGxldmVscy5sZW5ndGggKyBmaXJzdEx2bEhhc011bHRpID8gMSA6IDApO1xuICAgIG1pbkRpc3QgPSBNYXRoLm1pbihtaW5EaXN0LCByU3RlcCk7XG4gIH0gLy8gZmluZCB0aGUgbWV0cmljcyBmb3IgZWFjaCBsZXZlbFxuXG5cbiAgdmFyIHIgPSAwO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGxldmVscy5sZW5ndGg7IF9pMysrKSB7XG4gICAgdmFyIGxldmVsID0gbGV2ZWxzW19pM107XG4gICAgdmFyIHN3ZWVwID0gb3B0aW9ucy5zd2VlcCA9PT0gdW5kZWZpbmVkID8gMiAqIE1hdGguUEkgLSAyICogTWF0aC5QSSAvIGxldmVsLmxlbmd0aCA6IG9wdGlvbnMuc3dlZXA7XG4gICAgdmFyIGRUaGV0YSA9IGxldmVsLmRUaGV0YSA9IHN3ZWVwIC8gTWF0aC5tYXgoMSwgbGV2ZWwubGVuZ3RoIC0gMSk7IC8vIGNhbGN1bGF0ZSB0aGUgcmFkaXVzXG5cbiAgICBpZiAobGV2ZWwubGVuZ3RoID4gMSAmJiBvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgLy8gYnV0IG9ubHkgaWYgbW9yZSB0aGFuIG9uZSBub2RlIChjYW4ndCBvdmVybGFwKVxuICAgICAgdmFyIGRjb3MgPSBNYXRoLmNvcyhkVGhldGEpIC0gTWF0aC5jb3MoMCk7XG4gICAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICAgIHZhciByTWluID0gTWF0aC5zcXJ0KG1pbkRpc3QgKiBtaW5EaXN0IC8gKGRjb3MgKiBkY29zICsgZHNpbiAqIGRzaW4pKTsgLy8gcy50LiBubyBub2RlcyBvdmVybGFwcGluZ1xuXG4gICAgICByID0gTWF0aC5tYXgock1pbiwgcik7XG4gICAgfVxuXG4gICAgbGV2ZWwuciA9IHI7XG4gICAgciArPSBtaW5EaXN0O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuZXF1aWRpc3RhbnQpIHtcbiAgICB2YXIgckRlbHRhTWF4ID0gMDtcbiAgICB2YXIgX3IgPSAwO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbGV2ZWxzLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgIHZhciBfbGV2ZWwgPSBsZXZlbHNbX2k0XTtcbiAgICAgIHZhciByRGVsdGEgPSBfbGV2ZWwuciAtIF9yO1xuICAgICAgckRlbHRhTWF4ID0gTWF0aC5tYXgockRlbHRhTWF4LCByRGVsdGEpO1xuICAgIH1cblxuICAgIF9yID0gMDtcblxuICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IGxldmVscy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgX2xldmVsMiA9IGxldmVsc1tfaTVdO1xuXG4gICAgICBpZiAoX2k1ID09PSAwKSB7XG4gICAgICAgIF9yID0gX2xldmVsMi5yO1xuICAgICAgfVxuXG4gICAgICBfbGV2ZWwyLnIgPSBfcjtcbiAgICAgIF9yICs9IHJEZWx0YU1heDtcbiAgICB9XG4gIH0gLy8gY2FsY3VsYXRlIHRoZSBub2RlIHBvc2l0aW9uc1xuXG5cbiAgdmFyIHBvcyA9IHt9OyAvLyBpZCA9PiBwb3NpdGlvblxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGxldmVscy5sZW5ndGg7IF9pNisrKSB7XG4gICAgdmFyIF9sZXZlbDMgPSBsZXZlbHNbX2k2XTtcbiAgICB2YXIgX2RUaGV0YSA9IF9sZXZlbDMuZFRoZXRhO1xuICAgIHZhciBfcjIgPSBfbGV2ZWwzLnI7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9sZXZlbDMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBfdmFsID0gX2xldmVsM1tqXTtcbiAgICAgIHZhciB0aGV0YSA9IG9wdGlvbnMuc3RhcnRBbmdsZSArIChjbG9ja3dpc2UgPyAxIDogLTEpICogX2RUaGV0YSAqIGo7XG4gICAgICB2YXIgcCA9IHtcbiAgICAgICAgeDogY2VudGVyLnggKyBfcjIgKiBNYXRoLmNvcyh0aGV0YSksXG4gICAgICAgIHk6IGNlbnRlci55ICsgX3IyICogTWF0aC5zaW4odGhldGEpXG4gICAgICB9O1xuICAgICAgcG9zW192YWwubm9kZS5pZCgpXSA9IHA7XG4gICAgfVxuICB9IC8vIHBvc2l0aW9uIHRoZSBub2Rlc1xuXG5cbiAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgcmV0dXJuIHBvc1tpZF07XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbi8qXG5UaGUgQ29TRSBsYXlvdXQgd2FzIHdyaXR0ZW4gYnkgR2VyYXJkbyBIdWNrLlxuaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2dlcmFyZG9odWNrL1xuXG5CYXNlZCBvbiB0aGUgZm9sbG93aW5nIGFydGljbGU6XG5odHRwOi8vZGwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/aWQ9MTQ5ODA0N1xuXG5Nb2RpZmljYXRpb25zIHRyYWNrZWQgb24gR2l0aHViLlxuKi9cbnZhciBERUJVRztcbi8qKlxuICogQGJyaWVmIDogIGRlZmF1bHQgbGF5b3V0IG9wdGlvbnNcbiAqL1xuXG52YXIgZGVmYXVsdHMkYyA9IHtcbiAgLy8gQ2FsbGVkIG9uIGBsYXlvdXRyZWFkeWBcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sXG4gIC8vIENhbGxlZCBvbiBgbGF5b3V0c3RvcGBcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9LFxuICAvLyBXaGV0aGVyIHRvIGFuaW1hdGUgd2hpbGUgcnVubmluZyB0aGUgbGF5b3V0XG4gIC8vIHRydWUgOiBBbmltYXRlIGNvbnRpbnVvdXNseSBhcyB0aGUgbGF5b3V0IGlzIHJ1bm5pbmdcbiAgLy8gZmFsc2UgOiBKdXN0IHNob3cgdGhlIGVuZCByZXN1bHRcbiAgLy8gJ2VuZCcgOiBBbmltYXRlIHdpdGggdGhlIGVuZCByZXN1bHQsIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb25zIHRvIHRoZSBlbmQgcG9zaXRpb25zXG4gIGFuaW1hdGU6IHRydWUsXG4gIC8vIEVhc2luZyBvZiB0aGUgYW5pbWF0aW9uIGZvciBhbmltYXRlOidlbmQnXG4gIGFuaW1hdGlvbkVhc2luZzogdW5kZWZpbmVkLFxuICAvLyBUaGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBmb3IgYW5pbWF0ZTonZW5kJ1xuICBhbmltYXRpb25EdXJhdGlvbjogdW5kZWZpbmVkLFxuICAvLyBBIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZFxuICAvLyBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWRcbiAgLy8gTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIFRoZSBsYXlvdXQgYW5pbWF0ZXMgb25seSBhZnRlciB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzIGZvciBhbmltYXRlOnRydWVcbiAgLy8gKHByZXZlbnRzIGZsYXNoaW5nIG9uIGZhc3QgcnVucylcbiAgYW5pbWF0aW9uVGhyZXNob2xkOiAyNTAsXG4gIC8vIE51bWJlciBvZiBpdGVyYXRpb25zIGJldHdlZW4gY29uc2VjdXRpdmUgc2NyZWVuIHBvc2l0aW9ucyB1cGRhdGVcbiAgcmVmcmVzaDogMjAsXG4gIC8vIFdoZXRoZXIgdG8gZml0IHRoZSBuZXR3b3JrIHZpZXcgYWZ0ZXIgd2hlbiBkb25lXG4gIGZpdDogdHJ1ZSxcbiAgLy8gUGFkZGluZyBvbiBmaXRcbiAgcGFkZGluZzogMzAsXG4gIC8vIENvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBSYW5kb21pemUgdGhlIGluaXRpYWwgcG9zaXRpb25zIG9mIHRoZSBub2RlcyAodHJ1ZSkgb3IgdXNlIGV4aXN0aW5nIHBvc2l0aW9ucyAoZmFsc2UpXG4gIHJhbmRvbWl6ZTogZmFsc2UsXG4gIC8vIEV4dHJhIHNwYWNpbmcgYmV0d2VlbiBjb21wb25lbnRzIGluIG5vbi1jb21wb3VuZCBncmFwaHNcbiAgY29tcG9uZW50U3BhY2luZzogNDAsXG4gIC8vIE5vZGUgcmVwdWxzaW9uIChub24gb3ZlcmxhcHBpbmcpIG11bHRpcGxpZXJcbiAgbm9kZVJlcHVsc2lvbjogZnVuY3Rpb24gbm9kZVJlcHVsc2lvbihub2RlKSB7XG4gICAgcmV0dXJuIDIwNDg7XG4gIH0sXG4gIC8vIE5vZGUgcmVwdWxzaW9uIChvdmVybGFwcGluZykgbXVsdGlwbGllclxuICBub2RlT3ZlcmxhcDogNCxcbiAgLy8gSWRlYWwgZWRnZSAobm9uIG5lc3RlZCkgbGVuZ3RoXG4gIGlkZWFsRWRnZUxlbmd0aDogZnVuY3Rpb24gaWRlYWxFZGdlTGVuZ3RoKGVkZ2UpIHtcbiAgICByZXR1cm4gMzI7XG4gIH0sXG4gIC8vIERpdmlzb3IgdG8gY29tcHV0ZSBlZGdlIGZvcmNlc1xuICBlZGdlRWxhc3RpY2l0eTogZnVuY3Rpb24gZWRnZUVsYXN0aWNpdHkoZWRnZSkge1xuICAgIHJldHVybiAzMjtcbiAgfSxcbiAgLy8gTmVzdGluZyBmYWN0b3IgKG11bHRpcGxpZXIpIHRvIGNvbXB1dGUgaWRlYWwgZWRnZSBsZW5ndGggZm9yIG5lc3RlZCBlZGdlc1xuICBuZXN0aW5nRmFjdG9yOiAxLjIsXG4gIC8vIEdyYXZpdHkgZm9yY2UgKGNvbnN0YW50KVxuICBncmF2aXR5OiAxLFxuICAvLyBNYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm1cbiAgbnVtSXRlcjogMTAwMCxcbiAgLy8gSW5pdGlhbCB0ZW1wZXJhdHVyZSAobWF4aW11bSBub2RlIGRpc3BsYWNlbWVudClcbiAgaW5pdGlhbFRlbXA6IDEwMDAsXG4gIC8vIENvb2xpbmcgZmFjdG9yIChob3cgdGhlIHRlbXBlcmF0dXJlIGlzIHJlZHVjZWQgYmV0d2VlbiBjb25zZWN1dGl2ZSBpdGVyYXRpb25zXG4gIGNvb2xpbmdGYWN0b3I6IDAuOTksXG4gIC8vIExvd2VyIHRlbXBlcmF0dXJlIHRocmVzaG9sZCAoYmVsb3cgdGhpcyBwb2ludCB0aGUgbGF5b3V0IHdpbGwgZW5kKVxuICBtaW5UZW1wOiAxLjBcbn07XG4vKipcbiAqIEBicmllZiAgICAgICA6IGNvbnN0cnVjdG9yXG4gKiBAYXJnIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuICovXG5cbmZ1bmN0aW9uIENvc2VMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJGMsIG9wdGlvbnMpO1xuICB0aGlzLm9wdGlvbnMubGF5b3V0ID0gdGhpcztcbn1cbi8qKlxuICogQGJyaWVmIDogcnVucyB0aGUgbGF5b3V0XG4gKi9cblxuXG5Db3NlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgY3kgPSBvcHRpb25zLmN5O1xuICB2YXIgbGF5b3V0ID0gdGhpcztcbiAgbGF5b3V0LnN0b3BwZWQgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucy5hbmltYXRlID09PSB0cnVlIHx8IG9wdGlvbnMuYW5pbWF0ZSA9PT0gZmFsc2UpIHtcbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICB9KTtcbiAgfSAvLyBTZXQgREVCVUcgLSBHbG9iYWwgdmFyaWFibGVcblxuXG4gIGlmICh0cnVlID09PSBvcHRpb25zLmRlYnVnKSB7XG4gICAgREVCVUcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIERFQlVHID0gZmFsc2U7XG4gIH0gLy8gSW5pdGlhbGl6ZSBsYXlvdXQgaW5mb1xuXG5cbiAgdmFyIGxheW91dEluZm8gPSBjcmVhdGVMYXlvdXRJbmZvKGN5LCBsYXlvdXQsIG9wdGlvbnMpOyAvLyBTaG93IExheW91dEluZm8gY29udGVudHMgaWYgZGVidWdnaW5nXG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcHJpbnRMYXlvdXRJbmZvKGxheW91dEluZm8pO1xuICB9IC8vIElmIHJlcXVpcmVkLCByYW5kb21pemUgbm9kZSBwb3NpdGlvbnNcblxuXG4gIGlmIChvcHRpb25zLnJhbmRvbWl6ZSkge1xuICAgIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbiAgfVxuXG4gIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gIHZhciByZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKTsgLy8gRml0IHRoZSBncmFwaCBpZiBuZWNlc3NhcnlcblxuICAgIGlmICh0cnVlID09PSBvcHRpb25zLmZpdCkge1xuICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBtYWluTG9vcCA9IGZ1bmN0aW9uIG1haW5Mb29wKGkpIHtcbiAgICBpZiAobGF5b3V0LnN0b3BwZWQgfHwgaSA+PSBvcHRpb25zLm51bUl0ZXIpIHtcbiAgICAgIC8vIGxvZ0RlYnVnKFwiTGF5b3V0IG1hbnVhbGx5IHN0b3BwZWQuIFN0b3BwaW5nIGNvbXB1dGF0aW9uIGluIHN0ZXAgXCIgKyBpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIERvIG9uZSBzdGVwIGluIHRoZSBwaGlzaWNhbCBzaW11bGF0aW9uXG5cblxuICAgIHN0ZXAkMShsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gVXBkYXRlIHRlbXBlcmF0dXJlXG5cbiAgICBsYXlvdXRJbmZvLnRlbXBlcmF0dXJlID0gbGF5b3V0SW5mby50ZW1wZXJhdHVyZSAqIG9wdGlvbnMuY29vbGluZ0ZhY3RvcjsgLy8gbG9nRGVidWcoXCJOZXcgdGVtcGVyYXR1cmU6IFwiICsgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSk7XG5cbiAgICBpZiAobGF5b3V0SW5mby50ZW1wZXJhdHVyZSA8IG9wdGlvbnMubWluVGVtcCkge1xuICAgICAgLy8gbG9nRGVidWcoXCJUZW1wZXJhdHVyZSBkcm9wIGJlbG93IG1pbmltdW0gdGhyZXNob2xkLiBTdG9wcGluZyBjb21wdXRhdGlvbiBpbiBzdGVwIFwiICsgaSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFyIGRvbmUgPSBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlmIChvcHRpb25zLmFuaW1hdGUgPT09IHRydWUgfHwgb3B0aW9ucy5hbmltYXRlID09PSBmYWxzZSkge1xuICAgICAgcmVmcmVzaCgpOyAvLyBMYXlvdXQgaGFzIGZpbmlzaGVkXG5cbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgbGF5b3V0LmVtaXQoe1xuICAgICAgICB0eXBlOiAnbGF5b3V0c3RvcCcsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gICAgICB2YXIgZ2V0U2NhbGVkUG9zID0gZ2V0U2NhbGVJbkJvdW5kc0ZuKGxheW91dEluZm8sIG9wdGlvbnMsIG5vZGVzKTtcbiAgICAgIG5vZGVzLmxheW91dFBvc2l0aW9ucyhsYXlvdXQsIG9wdGlvbnMsIGdldFNjYWxlZFBvcyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpID0gMDtcbiAgdmFyIGxvb3BSZXQgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zLmFuaW1hdGUgPT09IHRydWUpIHtcbiAgICB2YXIgZnJhbWUgPSBmdW5jdGlvbiBmcmFtZSgpIHtcbiAgICAgIHZhciBmID0gMDtcblxuICAgICAgd2hpbGUgKGxvb3BSZXQgJiYgZiA8IG9wdGlvbnMucmVmcmVzaCkge1xuICAgICAgICBsb29wUmV0ID0gbWFpbkxvb3AoaSk7XG4gICAgICAgIGkrKztcbiAgICAgICAgZisrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWxvb3BSZXQpIHtcbiAgICAgICAgLy8gaXQncyBkb25lXG4gICAgICAgIHNlcGFyYXRlQ29tcG9uZW50cyhsYXlvdXRJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5vdyA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgICAgaWYgKG5vdyAtIHN0YXJ0VGltZSA+PSBvcHRpb25zLmFuaW1hdGlvblRocmVzaG9sZCkge1xuICAgICAgICAgIHJlZnJlc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZyYW1lKCk7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGxvb3BSZXQpIHtcbiAgICAgIGxvb3BSZXQgPSBtYWluTG9vcChpKTtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICBzZXBhcmF0ZUNvbXBvbmVudHMobGF5b3V0SW5mbywgb3B0aW9ucyk7XG4gICAgZG9uZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59O1xuLyoqXG4gKiBAYnJpZWYgOiBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcbiAqL1xuXG5cbkNvc2VMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc3RvcHBlZCA9IHRydWU7XG5cbiAgaWYgKHRoaXMudGhyZWFkKSB7XG4gICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICB9XG5cbiAgdGhpcy5lbWl0KCdsYXlvdXRzdG9wJyk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuQ29zZUxheW91dC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMudGhyZWFkKSB7XG4gICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59O1xuLyoqXG4gKiBAYnJpZWYgICAgIDogQ3JlYXRlcyBhbiBvYmplY3Qgd2hpY2ggaXMgY29udGFpbnMgYWxsIHRoZSBkYXRhXG4gKiAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgbGF5b3V0IHByb2Nlc3NcbiAqIEBhcmcgY3kgICAgOiBjeXRvc2NhcGUuanMgb2JqZWN0XG4gKiBAcmV0dXJuICAgIDogbGF5b3V0SW5mbyBvYmplY3QgaW5pdGlhbGl6ZWRcbiAqL1xuXG5cbnZhciBjcmVhdGVMYXlvdXRJbmZvID0gZnVuY3Rpb24gY3JlYXRlTGF5b3V0SW5mbyhjeSwgbGF5b3V0LCBvcHRpb25zKSB7XG4gIC8vIFNob3J0Y3V0XG4gIHZhciBlZGdlcyA9IG9wdGlvbnMuZWxlcy5lZGdlcygpO1xuICB2YXIgbm9kZXMgPSBvcHRpb25zLmVsZXMubm9kZXMoKTtcbiAgdmFyIGxheW91dEluZm8gPSB7XG4gICAgaXNDb21wb3VuZDogY3kuaGFzQ29tcG91bmROb2RlcygpLFxuICAgIGxheW91dE5vZGVzOiBbXSxcbiAgICBpZFRvSW5kZXg6IHt9LFxuICAgIG5vZGVTaXplOiBub2Rlcy5zaXplKCksXG4gICAgZ3JhcGhTZXQ6IFtdLFxuICAgIGluZGV4VG9HcmFwaDogW10sXG4gICAgbGF5b3V0RWRnZXM6IFtdLFxuICAgIGVkZ2VTaXplOiBlZGdlcy5zaXplKCksXG4gICAgdGVtcGVyYXR1cmU6IG9wdGlvbnMuaW5pdGlhbFRlbXAsXG4gICAgY2xpZW50V2lkdGg6IGN5LndpZHRoKCksXG4gICAgY2xpZW50SGVpZ2h0OiBjeS53aWR0aCgpLFxuICAgIGJvdW5kaW5nQm94OiBtYWtlQm91bmRpbmdCb3gob3B0aW9ucy5ib3VuZGluZ0JveCA/IG9wdGlvbnMuYm91bmRpbmdCb3ggOiB7XG4gICAgICB4MTogMCxcbiAgICAgIHkxOiAwLFxuICAgICAgdzogY3kud2lkdGgoKSxcbiAgICAgIGg6IGN5LmhlaWdodCgpXG4gICAgfSlcbiAgfTtcbiAgdmFyIGNvbXBvbmVudHMgPSBvcHRpb25zLmVsZXMuY29tcG9uZW50cygpO1xuICB2YXIgaWQyY21wdElkID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXBvbmVudC5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbal07XG4gICAgICBpZDJjbXB0SWRbbm9kZS5pZCgpXSA9IGk7XG4gICAgfVxuICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgbm9kZXMsIGNyZWF0aW5nIGxheW91dCBub2Rlc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IG5vZGVzW2ldO1xuICAgIHZhciBuYmIgPSBuLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgdmFyIHRlbXBOb2RlID0ge307XG4gICAgdGVtcE5vZGUuaXNMb2NrZWQgPSBuLmxvY2tlZCgpO1xuICAgIHRlbXBOb2RlLmlkID0gbi5kYXRhKCdpZCcpO1xuICAgIHRlbXBOb2RlLnBhcmVudElkID0gbi5kYXRhKCdwYXJlbnQnKTtcbiAgICB0ZW1wTm9kZS5jbXB0SWQgPSBpZDJjbXB0SWRbbi5pZCgpXTtcbiAgICB0ZW1wTm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRlbXBOb2RlLnBvc2l0aW9uWCA9IG4ucG9zaXRpb24oJ3gnKTtcbiAgICB0ZW1wTm9kZS5wb3NpdGlvblkgPSBuLnBvc2l0aW9uKCd5Jyk7XG4gICAgdGVtcE5vZGUub2Zmc2V0WCA9IDA7XG4gICAgdGVtcE5vZGUub2Zmc2V0WSA9IDA7XG4gICAgdGVtcE5vZGUuaGVpZ2h0ID0gbmJiLnc7XG4gICAgdGVtcE5vZGUud2lkdGggPSBuYmIuaDtcbiAgICB0ZW1wTm9kZS5tYXhYID0gdGVtcE5vZGUucG9zaXRpb25YICsgdGVtcE5vZGUud2lkdGggLyAyO1xuICAgIHRlbXBOb2RlLm1pblggPSB0ZW1wTm9kZS5wb3NpdGlvblggLSB0ZW1wTm9kZS53aWR0aCAvIDI7XG4gICAgdGVtcE5vZGUubWF4WSA9IHRlbXBOb2RlLnBvc2l0aW9uWSArIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgdGVtcE5vZGUubWluWSA9IHRlbXBOb2RlLnBvc2l0aW9uWSAtIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgdGVtcE5vZGUucGFkTGVmdCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICB0ZW1wTm9kZS5wYWRSaWdodCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICB0ZW1wTm9kZS5wYWRUb3AgPSBwYXJzZUZsb2F0KG4uc3R5bGUoJ3BhZGRpbmcnKSk7XG4gICAgdGVtcE5vZGUucGFkQm90dG9tID0gcGFyc2VGbG9hdChuLnN0eWxlKCdwYWRkaW5nJykpOyAvLyBmb3JjZXNcblxuICAgIHRlbXBOb2RlLm5vZGVSZXB1bHNpb24gPSBmbihvcHRpb25zLm5vZGVSZXB1bHNpb24pID8gb3B0aW9ucy5ub2RlUmVwdWxzaW9uKG4pIDogb3B0aW9ucy5ub2RlUmVwdWxzaW9uOyAvLyBBZGQgbmV3IG5vZGVcblxuICAgIGxheW91dEluZm8ubGF5b3V0Tm9kZXMucHVzaCh0ZW1wTm9kZSk7IC8vIEFkZCBlbnRyeSB0byBpZC1pbmRleCBtYXBcblxuICAgIGxheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLmlkXSA9IGk7XG4gIH0gLy8gSW5saW5lIGltcGxlbWVudGF0aW9uIG9mIGEgcXVldWUsIHVzZWQgZm9yIHRyYXZlcnNpbmcgdGhlIGdyYXBoIGluIEJGUyBvcmRlclxuXG5cbiAgdmFyIHF1ZXVlID0gW107XG4gIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgdmFyIGVuZCA9IC0xOyAvLyBQb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcblxuICB2YXIgdGVtcEdyYXBoID0gW107IC8vIFNlY29uZCBwYXNzIHRvIGFkZCBjaGlsZCBpbmZvcm1hdGlvbiBhbmRcbiAgLy8gaW5pdGlhbGl6ZSBxdWV1ZSBmb3IgaGllcmFyY2hpY2FsIHRyYXZlcnNhbFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuICAgIHZhciBwX2lkID0gbi5wYXJlbnRJZDsgLy8gQ2hlY2sgaWYgbm9kZSBuIGhhcyBhIHBhcmVudCBub2RlXG5cbiAgICBpZiAobnVsbCAhPSBwX2lkKSB7XG4gICAgICAvLyBBZGQgbm9kZSBJZCB0byBwYXJlbnQncyBsaXN0IG9mIGNoaWxkcmVuXG4gICAgICBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3BfaWRdXS5jaGlsZHJlbi5wdXNoKG4uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBhIG5vZGUgZG9lc24ndCBoYXZlIGEgcGFyZW50LCB0aGVuIGl0J3MgaW4gdGhlIHJvb3QgZ3JhcGhcbiAgICAgIHF1ZXVlWysrZW5kXSA9IG4uaWQ7XG4gICAgICB0ZW1wR3JhcGgucHVzaChuLmlkKTtcbiAgICB9XG4gIH0gLy8gQWRkIHJvb3QgZ3JhcGggdG8gZ3JhcGhTZXRcblxuXG4gIGxheW91dEluZm8uZ3JhcGhTZXQucHVzaCh0ZW1wR3JhcGgpOyAvLyBUcmF2ZXJzZSB0aGUgZ3JhcGgsIGxldmVsIGJ5IGxldmVsLFxuXG4gIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgdmFyIG5vZGVfaWQgPSBxdWV1ZVtzdGFydCsrXTtcbiAgICB2YXIgbm9kZV9peCA9IGxheW91dEluZm8uaWRUb0luZGV4W25vZGVfaWRdO1xuICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlX2l4XTtcbiAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEFkZCBjaGlsZHJlbiBub2RlcyBhcyBhIG5ldyBncmFwaCB0byBncmFwaCBzZXRcbiAgICAgIGxheW91dEluZm8uZ3JhcGhTZXQucHVzaChjaGlsZHJlbik7IC8vIEFkZCBjaGlsZHJlbiB0byBxdWUgcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDcmVhdGUgaW5kZXhUb0dyYXBoIG1hcFxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmdyYXBoU2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGdyYXBoID0gbGF5b3V0SW5mby5ncmFwaFNldFtpXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ3JhcGgubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBpbmRleCA9IGxheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2pdXTtcbiAgICAgIGxheW91dEluZm8uaW5kZXhUb0dyYXBoW2luZGV4XSA9IGk7XG4gICAgfVxuICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgZWRnZXMsIGNyZWF0aW5nIExheW91dCBFZGdlc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmVkZ2VTaXplOyBpKyspIHtcbiAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgIHZhciB0ZW1wRWRnZSA9IHt9O1xuICAgIHRlbXBFZGdlLmlkID0gZS5kYXRhKCdpZCcpO1xuICAgIHRlbXBFZGdlLnNvdXJjZUlkID0gZS5kYXRhKCdzb3VyY2UnKTtcbiAgICB0ZW1wRWRnZS50YXJnZXRJZCA9IGUuZGF0YSgndGFyZ2V0Jyk7IC8vIENvbXB1dGUgaWRlYWwgbGVuZ3RoXG5cbiAgICB2YXIgaWRlYWxMZW5ndGggPSBmbihvcHRpb25zLmlkZWFsRWRnZUxlbmd0aCkgPyBvcHRpb25zLmlkZWFsRWRnZUxlbmd0aChlKSA6IG9wdGlvbnMuaWRlYWxFZGdlTGVuZ3RoO1xuICAgIHZhciBlbGFzdGljaXR5ID0gZm4ob3B0aW9ucy5lZGdlRWxhc3RpY2l0eSkgPyBvcHRpb25zLmVkZ2VFbGFzdGljaXR5KGUpIDogb3B0aW9ucy5lZGdlRWxhc3RpY2l0eTsgLy8gQ2hlY2sgaWYgaXQncyBhbiBpbnRlciBncmFwaCBlZGdlXG5cbiAgICB2YXIgc291cmNlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFt0ZW1wRWRnZS5zb3VyY2VJZF07XG4gICAgdmFyIHRhcmdldEl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbdGVtcEVkZ2UudGFyZ2V0SWRdO1xuICAgIHZhciBzb3VyY2VHcmFwaCA9IGxheW91dEluZm8uaW5kZXhUb0dyYXBoW3NvdXJjZUl4XTtcbiAgICB2YXIgdGFyZ2V0R3JhcGggPSBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFt0YXJnZXRJeF07XG5cbiAgICBpZiAoc291cmNlR3JhcGggIT0gdGFyZ2V0R3JhcGgpIHtcbiAgICAgIC8vIEZpbmQgbG93ZXN0IGNvbW1vbiBncmFwaCBhbmNlc3RvclxuICAgICAgdmFyIGxjYSA9IGZpbmRMQ0EodGVtcEVkZ2Uuc291cmNlSWQsIHRlbXBFZGdlLnRhcmdldElkLCBsYXlvdXRJbmZvKTsgLy8gQ29tcHV0ZSBzdW0gb2Ygbm9kZSBkZXB0aHMsIHJlbGF0aXZlIHRvIGxjYSBncmFwaFxuXG4gICAgICB2YXIgbGNhR3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2xjYV07XG4gICAgICB2YXIgZGVwdGggPSAwOyAvLyBTb3VyY2UgZGVwdGhcblxuICAgICAgdmFyIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tzb3VyY2VJeF07XG5cbiAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgdGVtcE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLnBhcmVudElkXV07XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IC8vIFRhcmdldCBkZXB0aFxuXG5cbiAgICAgIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1t0YXJnZXRJeF07XG5cbiAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgdGVtcE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLnBhcmVudElkXV07XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IC8vIGxvZ0RlYnVnKCdMQ0Egb2Ygbm9kZXMgJyArIHRlbXBFZGdlLnNvdXJjZUlkICsgJyBhbmQgJyArIHRlbXBFZGdlLnRhcmdldElkICtcbiAgICAgIC8vICBcIi4gSW5kZXg6IFwiICsgbGNhICsgXCIgQ29udGVudHM6IFwiICsgbGNhR3JhcGgudG9TdHJpbmcoKSArXG4gICAgICAvLyAgXCIuIERlcHRoOiBcIiArIGRlcHRoKTtcbiAgICAgIC8vIFVwZGF0ZSBpZGVhbExlbmd0aFxuXG5cbiAgICAgIGlkZWFsTGVuZ3RoICo9IGRlcHRoICogb3B0aW9ucy5uZXN0aW5nRmFjdG9yO1xuICAgIH1cblxuICAgIHRlbXBFZGdlLmlkZWFsTGVuZ3RoID0gaWRlYWxMZW5ndGg7XG4gICAgdGVtcEVkZ2UuZWxhc3RpY2l0eSA9IGVsYXN0aWNpdHk7XG4gICAgbGF5b3V0SW5mby5sYXlvdXRFZGdlcy5wdXNoKHRlbXBFZGdlKTtcbiAgfSAvLyBGaW5hbGx5LCByZXR1cm4gbGF5b3V0SW5mbyBvYmplY3RcblxuXG4gIHJldHVybiBsYXlvdXRJbmZvO1xufTtcbi8qKlxuICogQGJyaWVmIDogVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgaW5kZXggb2YgdGhlIGxvd2VzdCBjb21tb25cbiAqICAgICAgICAgIGdyYXBoIGFuY2VzdG9yIGJldHdlZW4gMiBub2RlcyBpbiB0aGUgc3VidHJlZVxuICogICAgICAgICAgKGZyb20gdGhlIGdyYXBoIGhpZXJhcmNoeSBpbmR1Y2VkIHRyZWUpIHdob3NlXG4gKiAgICAgICAgICByb290IGlzIGdyYXBoSXhcbiAqXG4gKiBAYXJnIG5vZGUxOiBub2RlMSdzIElEXG4gKiBAYXJnIG5vZGUyOiBub2RlMidzIElEXG4gKiBAYXJnIGxheW91dEluZm86IGxheW91dEluZm8gb2JqZWN0XG4gKlxuICovXG5cblxudmFyIGZpbmRMQ0EgPSBmdW5jdGlvbiBmaW5kTENBKG5vZGUxLCBub2RlMiwgbGF5b3V0SW5mbykge1xuICAvLyBGaW5kIHRoZWlyIGNvbW1vbiBhbmNlc3Rlciwgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBncmFwaFxuICB2YXIgcmVzID0gZmluZExDQV9hdXgobm9kZTEsIG5vZGUyLCAwLCBsYXlvdXRJbmZvKTtcblxuICBpZiAoMiA+IHJlcy5jb3VudCkge1xuICAgIC8vIElmIGF1eCBmdW5jdGlvbiBjb3VsZG4ndCBmaW5kIHRoZSBjb21tb24gYW5jZXN0ZXIsXG4gICAgLy8gdGhlbiBpdCBpcyB0aGUgcm9vdCBncmFwaFxuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXMuZ3JhcGg7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiAgICAgICAgICA6IEF1eGlsaWFyeSBmdW5jdGlvbiB1c2VkIGZvciBMQ0EgY29tcHV0YXRpb25cbiAqXG4gKiBAYXJnIG5vZGUxICAgICAgOiBub2RlMSdzIElEXG4gKiBAYXJnIG5vZGUyICAgICAgOiBub2RlMidzIElEXG4gKiBAYXJnIGdyYXBoSXggICAgOiBzdWJncmFwaCBpbmRleFxuICogQGFyZyBsYXlvdXRJbmZvIDogbGF5b3V0SW5mbyBvYmplY3RcbiAqXG4gKiBAcmV0dXJuICAgICAgICAgOiBvYmplY3Qgb2YgdGhlIGZvcm0ge2NvdW50OiBYLCBncmFwaDogWX0sIHdoZXJlOlxuICogICAgICAgICAgICAgICAgICAgWCBpcyB0aGUgbnVtYmVyIG9mIGFuY2VzdGVycyAobWF4OiAyKSBmb3VuZCBpblxuICogICAgICAgICAgICAgICAgICAgZ3JhcGhJeCAoYW5kIGl0J3Mgc3ViZ3JhcGhzKSxcbiAqICAgICAgICAgICAgICAgICAgIFkgaXMgdGhlIGdyYXBoIGluZGV4IG9mIHRoZSBsb3dlc3QgZ3JhcGggY29udGFpbmluZ1xuICogICAgICAgICAgICAgICAgICAgYWxsIFggbm9kZXNcbiAqL1xuXG5cbnZhciBmaW5kTENBX2F1eCA9IGZ1bmN0aW9uIGZpbmRMQ0FfYXV4KG5vZGUxLCBub2RlMiwgZ3JhcGhJeCwgbGF5b3V0SW5mbykge1xuICB2YXIgZ3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2dyYXBoSXhdOyAvLyBJZiBib3RoIG5vZGVzIGJlbG9uZ3MgdG8gZ3JhcGhJeFxuXG4gIGlmICgtMSA8IGdyYXBoLmluZGV4T2Yobm9kZTEpICYmIC0xIDwgZ3JhcGguaW5kZXhPZihub2RlMikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY291bnQ6IDIsXG4gICAgICBncmFwaDogZ3JhcGhJeFxuICAgIH07XG4gIH0gLy8gTWFrZSByZWN1cnNpdmUgY2FsbHMgZm9yIGFsbCBzdWJncmFwaHNcblxuXG4gIHZhciBjID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IGdyYXBoW2ldO1xuICAgIHZhciBub2RlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgIHZhciBjaGlsZHJlbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbm9kZUl4XS5jaGlsZHJlbjsgLy8gSWYgdGhlIG5vZGUgaGFzIG5vIGNoaWxkLCBza2lwIGl0XG5cbiAgICBpZiAoMCA9PT0gY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRHcmFwaEl4ID0gbGF5b3V0SW5mby5pbmRleFRvR3JhcGhbbGF5b3V0SW5mby5pZFRvSW5kZXhbY2hpbGRyZW5bMF1dXTtcbiAgICB2YXIgcmVzdWx0ID0gZmluZExDQV9hdXgobm9kZTEsIG5vZGUyLCBjaGlsZEdyYXBoSXgsIGxheW91dEluZm8pO1xuXG4gICAgaWYgKDAgPT09IHJlc3VsdC5jb3VudCkge1xuICAgICAgLy8gTmVpdGhlciBub2RlMSBub3Igbm9kZTIgYXJlIHByZXNlbnQgaW4gdGhpcyBzdWJncmFwaFxuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmICgxID09PSByZXN1bHQuY291bnQpIHtcbiAgICAgIC8vIE9uZSBvZiAobm9kZTEsIG5vZGUyKSBpcyBwcmVzZW50IGluIHRoaXMgc3ViZ3JhcGhcbiAgICAgIGMrKztcblxuICAgICAgaWYgKDIgPT09IGMpIHtcbiAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmb3VuZCBib3RoIG5vZGVzLCBubyBuZWVkIHRvIGtlZXAgc2VhcmNoaW5nXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIG5vZGVzIGFyZSBwcmVzZW50IGluIHRoaXMgc3ViZ3JhcGhcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb3VudDogYyxcbiAgICBncmFwaDogZ3JhcGhJeFxuICB9O1xufTtcbi8qKlxuICogQGJyaWVmOiBwcmludHNMYXlvdXRJbmZvIGludG8ganMgY29uc29sZVxuICogICAgICAgICBPbmx5IHVzZWQgZm9yIGRlYmJ1Z2luZ1xuICovXG5cblxuaWYgKGZhbHNlKSB7XG4gIHZhciBwcmludExheW91dEluZm87XG59XG4vKipcbiAqIEBicmllZiA6IFJhbmRvbWl6ZXMgdGhlIHBvc2l0aW9uIG9mIGFsbCBub2Rlc1xuICovXG5cblxudmFyIHJhbmRvbWl6ZVBvc2l0aW9ucyA9IGZ1bmN0aW9uIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvLCBjeSkge1xuICB2YXIgd2lkdGggPSBsYXlvdXRJbmZvLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gbGF5b3V0SW5mby5jbGllbnRIZWlnaHQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07IC8vIE5vIG5lZWQgdG8gcmFuZG9taXplIGNvbXBvdW5kIG5vZGVzIG9yIGxvY2tlZCBub2Rlc1xuXG4gICAgaWYgKDAgPT09IG4uY2hpbGRyZW4ubGVuZ3RoICYmICFuLmlzTG9ja2VkKSB7XG4gICAgICBuLnBvc2l0aW9uWCA9IE1hdGgucmFuZG9tKCkgKiB3aWR0aDtcbiAgICAgIG4ucG9zaXRpb25ZID0gTWF0aC5yYW5kb20oKSAqIGhlaWdodDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBnZXRTY2FsZUluQm91bmRzRm4gPSBmdW5jdGlvbiBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpIHtcbiAgdmFyIGJiID0gbGF5b3V0SW5mby5ib3VuZGluZ0JveDtcbiAgdmFyIGNvc2VCQiA9IHtcbiAgICB4MTogSW5maW5pdHksXG4gICAgeDI6IC1JbmZpbml0eSxcbiAgICB5MTogSW5maW5pdHksXG4gICAgeTI6IC1JbmZpbml0eVxuICB9O1xuXG4gIGlmIChvcHRpb25zLmJvdW5kaW5nQm94KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlLmRhdGEoJ2lkJyldXTtcbiAgICAgIGNvc2VCQi54MSA9IE1hdGgubWluKGNvc2VCQi54MSwgbG5vZGUucG9zaXRpb25YKTtcbiAgICAgIGNvc2VCQi54MiA9IE1hdGgubWF4KGNvc2VCQi54MiwgbG5vZGUucG9zaXRpb25YKTtcbiAgICAgIGNvc2VCQi55MSA9IE1hdGgubWluKGNvc2VCQi55MSwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICAgIGNvc2VCQi55MiA9IE1hdGgubWF4KGNvc2VCQi55MiwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICB9KTtcbiAgICBjb3NlQkIudyA9IGNvc2VCQi54MiAtIGNvc2VCQi54MTtcbiAgICBjb3NlQkIuaCA9IGNvc2VCQi55MiAtIGNvc2VCQi55MTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZWxlLCBpKSB7XG4gICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtlbGUuZGF0YSgnaWQnKV1dO1xuXG4gICAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICAgIC8vIHRoZW4gYWRkIGV4dHJhIGJvdW5kaW5nIGJveCBjb25zdHJhaW50XG4gICAgICB2YXIgcGN0WCA9IChsbm9kZS5wb3NpdGlvblggLSBjb3NlQkIueDEpIC8gY29zZUJCLnc7XG4gICAgICB2YXIgcGN0WSA9IChsbm9kZS5wb3NpdGlvblkgLSBjb3NlQkIueTEpIC8gY29zZUJCLmg7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHBjdFggKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHBjdFkgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBsbm9kZS5wb3NpdGlvblgsXG4gICAgICAgIHk6IGxub2RlLnBvc2l0aW9uWVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBVcGRhdGVzIHRoZSBwb3NpdGlvbnMgb2Ygbm9kZXMgaW4gdGhlIG5ldHdvcmtcbiAqIEBhcmcgbGF5b3V0SW5mbyA6IExheW91dEluZm8gb2JqZWN0XG4gKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKSB7XG4gIC8vIHZhciBzID0gJ1JlZnJlc2hpbmcgcG9zaXRpb25zJztcbiAgLy8gbG9nRGVidWcocyk7XG4gIHZhciBsYXlvdXQgPSBvcHRpb25zLmxheW91dDtcbiAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gIHZhciBnZXRTY2FsZWRQb3MgPSBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpO1xuICBub2Rlcy5wb3NpdGlvbnMoZ2V0U2NhbGVkUG9zKTsgLy8gVHJpZ2dlciBsYXlvdXRSZWFkeSBvbmx5IG9uIGZpcnN0IGNhbGxcblxuICBpZiAodHJ1ZSAhPT0gbGF5b3V0SW5mby5yZWFkeSkge1xuICAgIC8vIHMgPSAnVHJpZ2dlcmluZyBsYXlvdXRyZWFkeSc7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgbGF5b3V0SW5mby5yZWFkeSA9IHRydWU7XG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0cmVhZHknLFxuICAgICAgbGF5b3V0OiB0aGlzXG4gICAgfSk7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IExvZ3MgYSBkZWJ1ZyBtZXNzYWdlIGluIEpTIGNvbnNvbGUsIGlmIERFQlVHIGlzIE9OXG4gKi9cbi8vIHZhciBsb2dEZWJ1ZyA9IGZ1bmN0aW9uKHRleHQpIHtcbi8vICAgaWYgKERFQlVHKSB7XG4vLyAgICAgY29uc29sZS5kZWJ1Zyh0ZXh0KTtcbi8vICAgfVxuLy8gfTtcblxuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBQZXJmb3JtcyBvbmUgaXRlcmF0aW9uIG9mIHRoZSBwaHlzaWNhbCBzaW11bGF0aW9uXG4gKiBAYXJnIGxheW91dEluZm8gOiBMYXlvdXRJbmZvIG9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXG4gKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHN0ZXAkMSA9IGZ1bmN0aW9uIHN0ZXAobGF5b3V0SW5mbywgb3B0aW9ucywgX3N0ZXApIHtcbiAgLy8gdmFyIHMgPSBcIlxcblxcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcIjtcbiAgLy8gcyArPSBcIlxcblNURVA6IFwiICsgc3RlcDtcbiAgLy8gcyArPSBcIlxcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcXG5cIjtcbiAgLy8gbG9nRGVidWcocyk7XG4gIC8vIENhbGN1bGF0ZSBub2RlIHJlcHVsc2lvbnNcbiAgY2FsY3VsYXRlTm9kZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gQ2FsY3VsYXRlIGVkZ2UgZm9yY2VzXG5cbiAgY2FsY3VsYXRlRWRnZUZvcmNlcyhsYXlvdXRJbmZvKTsgLy8gQ2FsY3VsYXRlIGdyYXZpdHkgZm9yY2VzXG5cbiAgY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gUHJvcGFnYXRlIGZvcmNlcyBmcm9tIHBhcmVudCB0byBjaGlsZFxuXG4gIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvKTsgLy8gVXBkYXRlIHBvc2l0aW9ucyBiYXNlZCBvbiBjYWxjdWxhdGVkIGZvcmNlc1xuXG4gIHVwZGF0ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbn07XG4vKipcbiAqIEBicmllZiA6IENvbXB1dGVzIHRoZSBub2RlIHJlcHVsc2lvbiBmb3JjZXNcbiAqL1xuXG5cbnZhciBjYWxjdWxhdGVOb2RlRm9yY2VzID0gZnVuY3Rpb24gY2FsY3VsYXRlTm9kZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIEdvIHRocm91Z2ggZWFjaCBvZiB0aGUgZ3JhcGhzIGluIGdyYXBoU2V0XG4gIC8vIE5vZGVzIG9ubHkgcmVwZWwgZWFjaCBvdGhlciBpZiB0aGV5IGJlbG9uZyB0byB0aGUgc2FtZSBncmFwaFxuICAvLyB2YXIgcyA9ICdjYWxjdWxhdGVOb2RlRm9yY2VzJztcbiAgLy8gbG9nRGVidWcocyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ncmFwaFNldC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBncmFwaCA9IGxheW91dEluZm8uZ3JhcGhTZXRbaV07XG4gICAgdmFyIG51bU5vZGVzID0gZ3JhcGgubGVuZ3RoOyAvLyBzID0gXCJTZXQ6IFwiICsgZ3JhcGgudG9TdHJpbmcoKTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBOb3cgZ2V0IGFsbCB0aGUgcGFpcnMgb2Ygbm9kZXNcbiAgICAvLyBPbmx5IGdldCBlYWNoIHBhaXIgb25jZSwgKEEsIEIpID0gKEIsIEEpXG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bU5vZGVzOyBqKyspIHtcbiAgICAgIHZhciBub2RlMSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dXTtcblxuICAgICAgZm9yICh2YXIgayA9IGogKyAxOyBrIDwgbnVtTm9kZXM7IGsrKykge1xuICAgICAgICB2YXIgbm9kZTIgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2tdXV07XG4gICAgICAgIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciByYW5kb21EaXN0YW5jZSA9IGZ1bmN0aW9uIHJhbmRvbURpc3RhbmNlKG1heCkge1xuICByZXR1cm4gLW1heCArIDIgKiBtYXggKiBNYXRoLnJhbmRvbSgpO1xufTtcbi8qKlxuICogQGJyaWVmIDogQ29tcHV0ZSB0aGUgbm9kZSByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gYSBwYWlyIG9mIG5vZGVzXG4gKi9cblxuXG52YXIgbm9kZVJlcHVsc2lvbiA9IGZ1bmN0aW9uIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIHZhciBzID0gXCJOb2RlIHJlcHVsc2lvbi4gTm9kZTE6IFwiICsgbm9kZTEuaWQgKyBcIiBOb2RlMjogXCIgKyBub2RlMi5pZDtcbiAgdmFyIGNtcHRJZDEgPSBub2RlMS5jbXB0SWQ7XG4gIHZhciBjbXB0SWQyID0gbm9kZTIuY21wdElkO1xuXG4gIGlmIChjbXB0SWQxICE9PSBjbXB0SWQyICYmICFsYXlvdXRJbmZvLmlzQ29tcG91bmQpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuXG4gIHZhciBkaXJlY3Rpb25YID0gbm9kZTIucG9zaXRpb25YIC0gbm9kZTEucG9zaXRpb25YO1xuICB2YXIgZGlyZWN0aW9uWSA9IG5vZGUyLnBvc2l0aW9uWSAtIG5vZGUxLnBvc2l0aW9uWTtcbiAgdmFyIG1heFJhbmREaXN0ID0gMTsgLy8gcyArPSBcIlxcbmRpcmVjdGlvblg6IFwiICsgZGlyZWN0aW9uWCArIFwiLCBkaXJlY3Rpb25ZOiBcIiArIGRpcmVjdGlvblk7XG4gIC8vIElmIGJvdGggY2VudGVycyBhcmUgdGhlIHNhbWUsIGFwcGx5IGEgcmFuZG9tIGZvcmNlXG5cbiAgaWYgKDAgPT09IGRpcmVjdGlvblggJiYgMCA9PT0gZGlyZWN0aW9uWSkge1xuICAgIGRpcmVjdGlvblggPSByYW5kb21EaXN0YW5jZShtYXhSYW5kRGlzdCk7XG4gICAgZGlyZWN0aW9uWSA9IHJhbmRvbURpc3RhbmNlKG1heFJhbmREaXN0KTtcbiAgfVxuXG4gIHZhciBvdmVybGFwID0gbm9kZXNPdmVybGFwKG5vZGUxLCBub2RlMiwgZGlyZWN0aW9uWCwgZGlyZWN0aW9uWSk7XG5cbiAgaWYgKG92ZXJsYXAgPiAwKSB7XG4gICAgLy8gcyArPSBcIlxcbk5vZGVzIERPIG92ZXJsYXAuXCI7XG4gICAgLy8gcyArPSBcIlxcbk92ZXJsYXA6IFwiICsgb3ZlcmxhcDtcbiAgICAvLyBJZiBub2RlcyBvdmVybGFwLCByZXB1bHNpb24gZm9yY2UgaXMgcHJvcG9ydGlvbmFsXG4gICAgLy8gdG8gdGhlIG92ZXJsYXBcbiAgICB2YXIgZm9yY2UgPSBvcHRpb25zLm5vZGVPdmVybGFwICogb3ZlcmxhcDsgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydChkaXJlY3Rpb25YICogZGlyZWN0aW9uWCArIGRpcmVjdGlvblkgKiBkaXJlY3Rpb25ZKTsgLy8gcyArPSBcIlxcbkRpc3RhbmNlOiBcIiArIGRpc3RhbmNlO1xuXG4gICAgdmFyIGZvcmNlWCA9IGZvcmNlICogZGlyZWN0aW9uWCAvIGRpc3RhbmNlO1xuICAgIHZhciBmb3JjZVkgPSBmb3JjZSAqIGRpcmVjdGlvblkgLyBkaXN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzICs9IFwiXFxuTm9kZXMgZG8gTk9UIG92ZXJsYXAuXCI7XG4gICAgLy8gSWYgdGhlcmUncyBubyBvdmVybGFwLCBmb3JjZSBpcyBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsXG4gICAgLy8gdG8gc3F1YXJlZCBkaXN0YW5jZVxuICAgIC8vIEdldCBjbGlwcGluZyBwb2ludHMgZm9yIGJvdGggbm9kZXNcbiAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQobm9kZTEsIGRpcmVjdGlvblgsIGRpcmVjdGlvblkpO1xuICAgIHZhciBwb2ludDIgPSBmaW5kQ2xpcHBpbmdQb2ludChub2RlMiwgLTEgKiBkaXJlY3Rpb25YLCAtMSAqIGRpcmVjdGlvblkpOyAvLyBVc2UgY2xpcHBpbmcgcG9pbnRzIHRvIGNvbXB1dGUgZGlzdGFuY2VcblxuICAgIHZhciBkaXN0YW5jZVggPSBwb2ludDIueCAtIHBvaW50MS54O1xuICAgIHZhciBkaXN0YW5jZVkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgIHZhciBkaXN0YW5jZVNxciA9IGRpc3RhbmNlWCAqIGRpc3RhbmNlWCArIGRpc3RhbmNlWSAqIGRpc3RhbmNlWTtcbiAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZGlzdGFuY2VTcXIpOyAvLyBzICs9IFwiXFxuRGlzdGFuY2U6IFwiICsgZGlzdGFuY2U7XG4gICAgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgIHZhciBmb3JjZSA9IChub2RlMS5ub2RlUmVwdWxzaW9uICsgbm9kZTIubm9kZVJlcHVsc2lvbikgLyBkaXN0YW5jZVNxcjtcbiAgICB2YXIgZm9yY2VYID0gZm9yY2UgKiBkaXN0YW5jZVggLyBkaXN0YW5jZTtcbiAgICB2YXIgZm9yY2VZID0gZm9yY2UgKiBkaXN0YW5jZVkgLyBkaXN0YW5jZTtcbiAgfSAvLyBBcHBseSBmb3JjZVxuXG5cbiAgaWYgKCFub2RlMS5pc0xvY2tlZCkge1xuICAgIG5vZGUxLm9mZnNldFggLT0gZm9yY2VYO1xuICAgIG5vZGUxLm9mZnNldFkgLT0gZm9yY2VZO1xuICB9XG5cbiAgaWYgKCFub2RlMi5pc0xvY2tlZCkge1xuICAgIG5vZGUyLm9mZnNldFggKz0gZm9yY2VYO1xuICAgIG5vZGUyLm9mZnNldFkgKz0gZm9yY2VZO1xuICB9IC8vIHMgKz0gXCJcXG5Gb3JjZVg6IFwiICsgZm9yY2VYICsgXCIgRm9yY2VZOiBcIiArIGZvcmNlWTtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm47XG59O1xuLyoqXG4gKiBAYnJpZWYgIDogRGV0ZXJtaW5lcyB3aGV0aGVyIHR3byBub2RlcyBvdmVybGFwIG9yIG5vdFxuICogQHJldHVybiA6IEFtb3VudCBvZiBvdmVybGFwcGluZyAoMCA9PiBubyBvdmVybGFwKVxuICovXG5cblxudmFyIG5vZGVzT3ZlcmxhcCA9IGZ1bmN0aW9uIG5vZGVzT3ZlcmxhcChub2RlMSwgbm9kZTIsIGRYLCBkWSkge1xuICBpZiAoZFggPiAwKSB7XG4gICAgdmFyIG92ZXJsYXBYID0gbm9kZTEubWF4WCAtIG5vZGUyLm1pblg7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG92ZXJsYXBYID0gbm9kZTIubWF4WCAtIG5vZGUxLm1pblg7XG4gIH1cblxuICBpZiAoZFkgPiAwKSB7XG4gICAgdmFyIG92ZXJsYXBZID0gbm9kZTEubWF4WSAtIG5vZGUyLm1pblk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG92ZXJsYXBZID0gbm9kZTIubWF4WSAtIG5vZGUxLm1pblk7XG4gIH1cblxuICBpZiAob3ZlcmxhcFggPj0gMCAmJiBvdmVybGFwWSA+PSAwKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydChvdmVybGFwWCAqIG92ZXJsYXBYICsgb3ZlcmxhcFkgKiBvdmVybGFwWSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IEZpbmRzIHRoZSBwb2ludCBpbiB3aGljaCBhbiBlZGdlIChkaXJlY3Rpb24gZFgsIGRZKSBpbnRlcnNlY3RzXG4gKiAgICAgICAgICB0aGUgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IG9mIGl0J3Mgc291cmNlL3RhcmdldCBub2RlXG4gKi9cblxuXG52YXIgZmluZENsaXBwaW5nUG9pbnQgPSBmdW5jdGlvbiBmaW5kQ2xpcHBpbmdQb2ludChub2RlLCBkWCwgZFkpIHtcbiAgLy8gU2hvcmN1dHNcbiAgdmFyIFggPSBub2RlLnBvc2l0aW9uWDtcbiAgdmFyIFkgPSBub2RlLnBvc2l0aW9uWTtcbiAgdmFyIEggPSBub2RlLmhlaWdodCB8fCAxO1xuICB2YXIgVyA9IG5vZGUud2lkdGggfHwgMTtcbiAgdmFyIGRpclNsb3BlID0gZFkgLyBkWDtcbiAgdmFyIG5vZGVTbG9wZSA9IEggLyBXOyAvLyB2YXIgcyA9ICdDb21wdXRpbmcgY2xpcHBpbmcgcG9pbnQgb2Ygbm9kZSAnICsgbm9kZS5pZCArXG4gIC8vICAgXCIgLiBIZWlnaHQ6ICBcIiArIEggKyBcIiwgV2lkdGg6IFwiICsgVyArXG4gIC8vICAgXCJcXG5EaXJlY3Rpb24gXCIgKyBkWCArIFwiLCBcIiArIGRZO1xuICAvL1xuICAvLyBDb21wdXRlIGludGVyc2VjdGlvblxuXG4gIHZhciByZXMgPSB7fTsgLy8gQ2FzZTogVmVydGljYWwgZGlyZWN0aW9uICh1cClcblxuICBpZiAoMCA9PT0gZFggJiYgMCA8IGRZKSB7XG4gICAgcmVzLnggPSBYOyAvLyBzICs9IFwiXFxuVXAgZGlyZWN0aW9uXCI7XG5cbiAgICByZXMueSA9IFkgKyBIIC8gMjtcbiAgICByZXR1cm4gcmVzO1xuICB9IC8vIENhc2U6IFZlcnRpY2FsIGRpcmVjdGlvbiAoZG93bilcblxuXG4gIGlmICgwID09PSBkWCAmJiAwID4gZFkpIHtcbiAgICByZXMueCA9IFg7XG4gICAgcmVzLnkgPSBZICsgSCAvIDI7IC8vIHMgKz0gXCJcXG5Eb3duIGRpcmVjdGlvblwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSByaWdodCBib3JkZXJcblxuXG4gIGlmICgwIDwgZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgcmVzLnggPSBYICsgVyAvIDI7XG4gICAgcmVzLnkgPSBZICsgVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuUmlnaHRib3JkZXJcIjtcblxuICAgIHJldHVybiByZXM7XG4gIH0gLy8gQ2FzZTogSW50ZXJzZWN0cyB0aGUgbGVmdCBib3JkZXJcblxuXG4gIGlmICgwID4gZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgcmVzLnggPSBYIC0gVyAvIDI7XG4gICAgcmVzLnkgPSBZIC0gVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuTGVmdGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSB0b3AgYm9yZGVyXG5cblxuICBpZiAoMCA8IGRZICYmIChkaXJTbG9wZSA8PSAtMSAqIG5vZGVTbG9wZSB8fCBkaXJTbG9wZSA+PSBub2RlU2xvcGUpKSB7XG4gICAgcmVzLnggPSBYICsgSCAqIGRYIC8gMiAvIGRZO1xuICAgIHJlcy55ID0gWSArIEggLyAyOyAvLyBzICs9IFwiXFxuVG9wIGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSBib3R0b20gYm9yZGVyXG5cblxuICBpZiAoMCA+IGRZICYmIChkaXJTbG9wZSA8PSAtMSAqIG5vZGVTbG9wZSB8fCBkaXJTbG9wZSA+PSBub2RlU2xvcGUpKSB7XG4gICAgcmVzLnggPSBYIC0gSCAqIGRYIC8gMiAvIGRZO1xuICAgIHJlcy55ID0gWSAtIEggLyAyOyAvLyBzICs9IFwiXFxuQm90dG9tIGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBzICs9IFwiXFxuQ2xpcHBpbmcgcG9pbnQgZm91bmQgYXQgXCIgKyByZXMueCArIFwiLCBcIiArIHJlcy55O1xuICAvLyBsb2dEZWJ1ZyhzKTtcblxuXG4gIHJldHVybiByZXM7XG59O1xuLyoqXG4gKiBAYnJpZWYgOiBDYWxjdWxhdGVzIGFsbCBlZGdlIGZvcmNlc1xuICovXG5cblxudmFyIGNhbGN1bGF0ZUVkZ2VGb3JjZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVFZGdlRm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBlZGdlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZWRnZVNpemU7IGkrKykge1xuICAgIC8vIEdldCBlZGdlLCBzb3VyY2UgJiB0YXJnZXQgbm9kZXNcbiAgICB2YXIgZWRnZSA9IGxheW91dEluZm8ubGF5b3V0RWRnZXNbaV07XG4gICAgdmFyIHNvdXJjZUl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbZWRnZS5zb3VyY2VJZF07XG4gICAgdmFyIHNvdXJjZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbc291cmNlSXhdO1xuICAgIHZhciB0YXJnZXRJeCA9IGxheW91dEluZm8uaWRUb0luZGV4W2VkZ2UudGFyZ2V0SWRdO1xuICAgIHZhciB0YXJnZXQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW3RhcmdldEl4XTsgLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuICAgIHZhciBkaXJlY3Rpb25YID0gdGFyZ2V0LnBvc2l0aW9uWCAtIHNvdXJjZS5wb3NpdGlvblg7XG4gICAgdmFyIGRpcmVjdGlvblkgPSB0YXJnZXQucG9zaXRpb25ZIC0gc291cmNlLnBvc2l0aW9uWTsgLy8gSWYgYm90aCBjZW50ZXJzIGFyZSB0aGUgc2FtZSwgZG8gbm90aGluZy5cbiAgICAvLyBBIHJhbmRvbSBmb3JjZSBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgYXMgbm9kZSByZXB1bHNpb25cblxuICAgIGlmICgwID09PSBkaXJlY3Rpb25YICYmIDAgPT09IGRpcmVjdGlvblkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gR2V0IGNsaXBwaW5nIHBvaW50cyBmb3IgYm90aCBub2Rlc1xuXG5cbiAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQoc291cmNlLCBkaXJlY3Rpb25YLCBkaXJlY3Rpb25ZKTtcbiAgICB2YXIgcG9pbnQyID0gZmluZENsaXBwaW5nUG9pbnQodGFyZ2V0LCAtMSAqIGRpcmVjdGlvblgsIC0xICogZGlyZWN0aW9uWSk7XG4gICAgdmFyIGx4ID0gcG9pbnQyLnggLSBwb2ludDEueDtcbiAgICB2YXIgbHkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgIHZhciBsID0gTWF0aC5zcXJ0KGx4ICogbHggKyBseSAqIGx5KTtcbiAgICB2YXIgZm9yY2UgPSBNYXRoLnBvdyhlZGdlLmlkZWFsTGVuZ3RoIC0gbCwgMikgLyBlZGdlLmVsYXN0aWNpdHk7XG5cbiAgICBpZiAoMCAhPT0gbCkge1xuICAgICAgdmFyIGZvcmNlWCA9IGZvcmNlICogbHggLyBsO1xuICAgICAgdmFyIGZvcmNlWSA9IGZvcmNlICogbHkgLyBsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZm9yY2VYID0gMDtcbiAgICAgIHZhciBmb3JjZVkgPSAwO1xuICAgIH0gLy8gQWRkIHRoaXMgZm9yY2UgdG8gdGFyZ2V0IGFuZCBzb3VyY2Ugbm9kZXNcblxuXG4gICAgaWYgKCFzb3VyY2UuaXNMb2NrZWQpIHtcbiAgICAgIHNvdXJjZS5vZmZzZXRYICs9IGZvcmNlWDtcbiAgICAgIHNvdXJjZS5vZmZzZXRZICs9IGZvcmNlWTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5pc0xvY2tlZCkge1xuICAgICAgdGFyZ2V0Lm9mZnNldFggLT0gZm9yY2VYO1xuICAgICAgdGFyZ2V0Lm9mZnNldFkgLT0gZm9yY2VZO1xuICAgIH0gLy8gdmFyIHMgPSAnRWRnZSBmb3JjZSBiZXR3ZWVuIG5vZGVzICcgKyBzb3VyY2UuaWQgKyAnIGFuZCAnICsgdGFyZ2V0LmlkO1xuICAgIC8vIHMgKz0gXCJcXG5EaXN0YW5jZTogXCIgKyBsICsgXCIgRm9yY2U6IChcIiArIGZvcmNlWCArIFwiLCBcIiArIGZvcmNlWSArIFwiKVwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IENvbXB1dGVzIGdyYXZpdHkgZm9yY2VzIGZvciBhbGwgbm9kZXNcbiAqL1xuXG5cbnZhciBjYWxjdWxhdGVHcmF2aXR5Rm9yY2VzID0gZnVuY3Rpb24gY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLmdyYXZpdHkgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZGlzdFRocmVzaG9sZCA9IDE7IC8vIHZhciBzID0gJ2NhbGN1bGF0ZUdyYXZpdHlGb3JjZXMnO1xuICAvLyBsb2dEZWJ1ZyhzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZ3JhcGhTZXQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZ3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2ldO1xuICAgIHZhciBudW1Ob2RlcyA9IGdyYXBoLmxlbmd0aDsgLy8gcyA9IFwiU2V0OiBcIiArIGdyYXBoLnRvU3RyaW5nKCk7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgLy8gQ29tcHV0ZSBncmFwaCBjZW50ZXJcblxuICAgIGlmICgwID09PSBpKSB7XG4gICAgICB2YXIgY2VudGVyWCA9IGxheW91dEluZm8uY2xpZW50SGVpZ2h0IC8gMjtcbiAgICAgIHZhciBjZW50ZXJZID0gbGF5b3V0SW5mby5jbGllbnRXaWR0aCAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdldCBQYXJlbnQgbm9kZSBmb3IgdGhpcyBncmFwaCwgYW5kIHVzZSBpdHMgcG9zaXRpb24gYXMgY2VudGVyXG4gICAgICB2YXIgdGVtcCA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbMF1dXTtcbiAgICAgIHZhciBwYXJlbnQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXAucGFyZW50SWRdXTtcbiAgICAgIHZhciBjZW50ZXJYID0gcGFyZW50LnBvc2l0aW9uWDtcbiAgICAgIHZhciBjZW50ZXJZID0gcGFyZW50LnBvc2l0aW9uWTtcbiAgICB9IC8vIHMgPSBcIkNlbnRlciBmb3VuZCBhdDogXCIgKyBjZW50ZXJYICsgXCIsIFwiICsgY2VudGVyWTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBBcHBseSBmb3JjZSB0byBhbGwgbm9kZXMgaW4gZ3JhcGhcblxuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICB2YXIgbm9kZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dXTsgLy8gcyA9IFwiTm9kZTogXCIgKyBub2RlLmlkO1xuXG4gICAgICBpZiAobm9kZS5pc0xvY2tlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gY2VudGVyWCAtIG5vZGUucG9zaXRpb25YO1xuICAgICAgdmFyIGR5ID0gY2VudGVyWSAtIG5vZGUucG9zaXRpb25ZO1xuICAgICAgdmFyIGQgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuXG4gICAgICBpZiAoZCA+IGRpc3RUaHJlc2hvbGQpIHtcbiAgICAgICAgdmFyIGZ4ID0gb3B0aW9ucy5ncmF2aXR5ICogZHggLyBkO1xuICAgICAgICB2YXIgZnkgPSBvcHRpb25zLmdyYXZpdHkgKiBkeSAvIGQ7XG4gICAgICAgIG5vZGUub2Zmc2V0WCArPSBmeDtcbiAgICAgICAgbm9kZS5vZmZzZXRZICs9IGZ5OyAvLyBzICs9IFwiOiBBcHBsaWVkIGZvcmNlOiBcIiArIGZ4ICsgXCIsIFwiICsgZnk7XG4gICAgICB9IC8vIHMgKz0gXCI6IHNreXBwZWQgc2luY2UgaXQncyB0b28gY2xvc2UgdG8gY2VudGVyXCI7XG4gICAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gICAgfVxuICB9XG59O1xuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBUaGlzIGZ1bmN0aW9uIHByb3BhZ2F0ZXMgdGhlIGV4aXN0aW5nIG9mZnNldHMgZnJvbVxuICogICAgICAgICAgICAgICAgICAgcGFyZW50IG5vZGVzIHRvIGl0cyBkZXNjZW5kZW50cy5cbiAqIEBhcmcgbGF5b3V0SW5mbyA6IGxheW91dEluZm8gT2JqZWN0XG4gKiBAYXJnIGN5ICAgICAgICAgOiBjeXRvc2NhcGUgT2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHByb3BhZ2F0ZUZvcmNlcyA9IGZ1bmN0aW9uIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIElubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHF1ZXVlLCB1c2VkIGZvciB0cmF2ZXJzaW5nIHRoZSBncmFwaCBpbiBCRlMgb3JkZXJcbiAgdmFyIHF1ZXVlID0gW107XG4gIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgdmFyIGVuZCA9IC0xOyAvLyBQb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcbiAgLy8gbG9nRGVidWcoJ3Byb3BhZ2F0ZUZvcmNlcycpO1xuICAvLyBTdGFydCBieSB2aXNpdGluZyB0aGUgbm9kZXMgaW4gdGhlIHJvb3QgZ3JhcGhcblxuICBxdWV1ZS5wdXNoLmFwcGx5KHF1ZXVlLCBsYXlvdXRJbmZvLmdyYXBoU2V0WzBdKTtcbiAgZW5kICs9IGxheW91dEluZm8uZ3JhcGhTZXRbMF0ubGVuZ3RoOyAvLyBUcmF2ZXJzZSB0aGUgZ3JhcGgsIGxldmVsIGJ5IGxldmVsLFxuXG4gIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgdmFyIG5vZGVJZCA9IHF1ZXVlW3N0YXJ0KytdO1xuICAgIHZhciBub2RlSW5kZXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlSW5kZXhdO1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47IC8vIFdlIG9ubHkgbmVlZCB0byBwcm9jZXNzIHRoZSBub2RlIGlmIGl0J3MgY29tcG91bmRcblxuICAgIGlmICgwIDwgY2hpbGRyZW4ubGVuZ3RoICYmICFub2RlLmlzTG9ja2VkKSB7XG4gICAgICB2YXIgb2ZmWCA9IG5vZGUub2Zmc2V0WDtcbiAgICAgIHZhciBvZmZZID0gbm9kZS5vZmZzZXRZOyAvLyB2YXIgcyA9IFwiUHJvcGFnYXRpbmcgb2Zmc2V0IGZyb20gcGFyZW50IG5vZGUgOiBcIiArIG5vZGUuaWQgK1xuICAgICAgLy8gICBcIi4gT2Zmc2V0WDogXCIgKyBvZmZYICsgXCIuIE9mZnNldFk6IFwiICsgb2ZmWTtcbiAgICAgIC8vIHMgKz0gXCJcXG4gQ2hpbGRyZW46IFwiICsgY2hpbGRyZW4udG9TdHJpbmcoKTtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2NoaWxkcmVuW2ldXV07IC8vIFByb3BhZ2F0ZSBvZmZzZXRcblxuICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WCArPSBvZmZYO1xuICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WSArPSBvZmZZOyAvLyBBZGQgY2hpbGRyZW4gdG8gcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgfSAvLyBSZXNldCBwYXJlbnQgb2Zmc2V0c1xuXG5cbiAgICAgIG5vZGUub2Zmc2V0WCA9IDA7XG4gICAgICBub2RlLm9mZnNldFkgPSAwO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQGJyaWVmIDogVXBkYXRlcyB0aGUgbGF5b3V0IG1vZGVsIHBvc2l0aW9ucywgYmFzZWQgb25cbiAqICAgICAgICAgIHRoZSBhY2N1bXVsYXRlZCBmb3JjZXNcbiAqL1xuXG5cbnZhciB1cGRhdGVQb3NpdGlvbnMgPSBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMobGF5b3V0SW5mbywgb3B0aW9ucykge1xuICAvLyB2YXIgcyA9ICdVcGRhdGluZyBwb3NpdGlvbnMnO1xuICAvLyBsb2dEZWJ1ZyhzKTtcbiAgLy8gUmVzZXQgYm91bmRhcmllcyBmb3IgY29tcG91bmQgbm9kZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAvLyBsb2dEZWJ1ZyhcIlJlc2V0dGluZyBib3VuZGFyaWVzIG9mIGNvbXBvdW5kIG5vZGU6IFwiICsgbi5pZCk7XG4gICAgICBuLm1heFggPSB1bmRlZmluZWQ7XG4gICAgICBuLm1pblggPSB1bmRlZmluZWQ7XG4gICAgICBuLm1heFkgPSB1bmRlZmluZWQ7XG4gICAgICBuLm1pblkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoIHx8IG4uaXNMb2NrZWQpIHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IGNvbXBvdW5kIG9yIGxvY2tlZCBub2RlIHBvc2l0aW9uXG4gICAgICAvLyBsb2dEZWJ1ZyhcIlNraXBwaW5nIHBvc2l0aW9uIHVwZGF0ZSBvZiBub2RlOiBcIiArIG4uaWQpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBzID0gXCJOb2RlOiBcIiArIG4uaWQgKyBcIiBQcmV2aW91cyBwb3NpdGlvbjogKFwiICtcbiAgICAvLyBuLnBvc2l0aW9uWCArIFwiLCBcIiArIG4ucG9zaXRpb25ZICsgXCIpLlwiO1xuICAgIC8vIExpbWl0IGRpc3BsYWNlbWVudCBpbiBvcmRlciB0byBpbXByb3ZlIHN0YWJpbGl0eVxuXG5cbiAgICB2YXIgdGVtcEZvcmNlID0gbGltaXRGb3JjZShuLm9mZnNldFgsIG4ub2Zmc2V0WSwgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSk7XG4gICAgbi5wb3NpdGlvblggKz0gdGVtcEZvcmNlLng7XG4gICAgbi5wb3NpdGlvblkgKz0gdGVtcEZvcmNlLnk7XG4gICAgbi5vZmZzZXRYID0gMDtcbiAgICBuLm9mZnNldFkgPSAwO1xuICAgIG4ubWluWCA9IG4ucG9zaXRpb25YIC0gbi53aWR0aDtcbiAgICBuLm1heFggPSBuLnBvc2l0aW9uWCArIG4ud2lkdGg7XG4gICAgbi5taW5ZID0gbi5wb3NpdGlvblkgLSBuLmhlaWdodDtcbiAgICBuLm1heFkgPSBuLnBvc2l0aW9uWSArIG4uaGVpZ2h0OyAvLyBzICs9IFwiIE5ldyBQb3NpdGlvbjogKFwiICsgbi5wb3NpdGlvblggKyBcIiwgXCIgKyBuLnBvc2l0aW9uWSArIFwiKS5cIjtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBVcGRhdGUgYW5jZXN0cnkgYm91ZGFyaWVzXG5cbiAgICB1cGRhdGVBbmNlc3RyeUJvdW5kYXJpZXMobiwgbGF5b3V0SW5mbyk7XG4gIH0gLy8gVXBkYXRlIHNpemUsIHBvc2l0aW9uIG9mIGNvbXB1bmQgbm9kZXNcblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuXG4gICAgaWYgKDAgPCBuLmNoaWxkcmVuLmxlbmd0aCAmJiAhbi5pc0xvY2tlZCkge1xuICAgICAgbi5wb3NpdGlvblggPSAobi5tYXhYICsgbi5taW5YKSAvIDI7XG4gICAgICBuLnBvc2l0aW9uWSA9IChuLm1heFkgKyBuLm1pblkpIC8gMjtcbiAgICAgIG4ud2lkdGggPSBuLm1heFggLSBuLm1pblg7XG4gICAgICBuLmhlaWdodCA9IG4ubWF4WSAtIG4ubWluWTsgLy8gcyA9IFwiVXBkYXRpbmcgcG9zaXRpb24sIHNpemUgb2YgY29tcG91bmQgbm9kZSBcIiArIG4uaWQ7XG4gICAgICAvLyBzICs9IFwiXFxuUG9zaXRpb25YOiBcIiArIG4ucG9zaXRpb25YICsgXCIsIFBvc2l0aW9uWTogXCIgKyBuLnBvc2l0aW9uWTtcbiAgICAgIC8vIHMgKz0gXCJcXG5XaWR0aDogXCIgKyBuLndpZHRoICsgXCIsIEhlaWdodDogXCIgKyBuLmhlaWdodDtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQGJyaWVmIDogTGltaXRzIGEgZm9yY2UgKGZvcmNlWCwgZm9yY2VZKSB0byBiZSBub3RcbiAqICAgICAgICAgIGdyZWF0ZXIgKGluIG1vZHVsbykgdGhhbiBtYXguXG4gOCAgICAgICAgICBQcmVzZXJ2ZXMgZm9yY2UgZGlyZWN0aW9uLlxuICAqL1xuXG5cbnZhciBsaW1pdEZvcmNlID0gZnVuY3Rpb24gbGltaXRGb3JjZShmb3JjZVgsIGZvcmNlWSwgbWF4KSB7XG4gIC8vIHZhciBzID0gXCJMaW1pdGluZyBmb3JjZTogKFwiICsgZm9yY2VYICsgXCIsIFwiICsgZm9yY2VZICsgXCIpLiBNYXg6IFwiICsgbWF4O1xuICB2YXIgZm9yY2UgPSBNYXRoLnNxcnQoZm9yY2VYICogZm9yY2VYICsgZm9yY2VZICogZm9yY2VZKTtcblxuICBpZiAoZm9yY2UgPiBtYXgpIHtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWF4ICogZm9yY2VYIC8gZm9yY2UsXG4gICAgICB5OiBtYXggKiBmb3JjZVkgLyBmb3JjZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIHg6IGZvcmNlWCxcbiAgICAgIHk6IGZvcmNlWVxuICAgIH07XG4gIH0gLy8gcyArPSBcIi5cXG5SZXN1bHQ6IChcIiArIHJlcy54ICsgXCIsIFwiICsgcmVzLnkgKyBcIilcIjtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm4gcmVzO1xufTtcbi8qKlxuICogQGJyaWVmIDogRnVuY3Rpb24gdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBjb21wb3VuZCBub2RlXG4gKiAgICAgICAgICBzaXplcywgc2luY2UgdGhleSBzaG91bGQgYm91bmQgYWxsIHRoZWlyIHN1Ym5vZGVzLlxuICovXG5cblxudmFyIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyA9IGZ1bmN0aW9uIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyhub2RlLCBsYXlvdXRJbmZvKSB7XG4gIC8vIHZhciBzID0gXCJQcm9wYWdhdGluZyBuZXcgcG9zaXRpb24vc2l6ZSBvZiBub2RlIFwiICsgbm9kZS5pZDtcbiAgdmFyIHBhcmVudElkID0gbm9kZS5wYXJlbnRJZDtcblxuICBpZiAobnVsbCA9PSBwYXJlbnRJZCkge1xuICAgIC8vIElmIHRoZXJlJ3Mgbm8gcGFyZW50LCB3ZSBhcmUgZG9uZVxuICAgIC8vIHMgKz0gXCIuIE5vIHBhcmVudCBub2RlLlwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHJldHVybjtcbiAgfSAvLyBHZXQgUGFyZW50IE5vZGVcblxuXG4gIHZhciBwID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtwYXJlbnRJZF1dO1xuICB2YXIgZmxhZyA9IGZhbHNlOyAvLyBNYXhYXG5cbiAgaWYgKG51bGwgPT0gcC5tYXhYIHx8IG5vZGUubWF4WCArIHAucGFkUmlnaHQgPiBwLm1heFgpIHtcbiAgICBwLm1heFggPSBub2RlLm1heFggKyBwLnBhZFJpZ2h0O1xuICAgIGZsYWcgPSB0cnVlOyAvLyBzICs9IFwiXFxuTmV3IG1heFggZm9yIHBhcmVudCBub2RlIFwiICsgcC5pZCArIFwiOiBcIiArIHAubWF4WDtcbiAgfSAvLyBNaW5YXG5cblxuICBpZiAobnVsbCA9PSBwLm1pblggfHwgbm9kZS5taW5YIC0gcC5wYWRMZWZ0IDwgcC5taW5YKSB7XG4gICAgcC5taW5YID0gbm9kZS5taW5YIC0gcC5wYWRMZWZ0O1xuICAgIGZsYWcgPSB0cnVlOyAvLyBzICs9IFwiXFxuTmV3IG1pblggZm9yIHBhcmVudCBub2RlIFwiICsgcC5pZCArIFwiOiBcIiArIHAubWluWDtcbiAgfSAvLyBNYXhZXG5cblxuICBpZiAobnVsbCA9PSBwLm1heFkgfHwgbm9kZS5tYXhZICsgcC5wYWRCb3R0b20gPiBwLm1heFkpIHtcbiAgICBwLm1heFkgPSBub2RlLm1heFkgKyBwLnBhZEJvdHRvbTtcbiAgICBmbGFnID0gdHJ1ZTsgLy8gcyArPSBcIlxcbk5ldyBtYXhZIGZvciBwYXJlbnQgbm9kZSBcIiArIHAuaWQgKyBcIjogXCIgKyBwLm1heFk7XG4gIH0gLy8gTWluWVxuXG5cbiAgaWYgKG51bGwgPT0gcC5taW5ZIHx8IG5vZGUubWluWSAtIHAucGFkVG9wIDwgcC5taW5ZKSB7XG4gICAgcC5taW5ZID0gbm9kZS5taW5ZIC0gcC5wYWRUb3A7XG4gICAgZmxhZyA9IHRydWU7IC8vIHMgKz0gXCJcXG5OZXcgbWluWSBmb3IgcGFyZW50IG5vZGUgXCIgKyBwLmlkICsgXCI6IFwiICsgcC5taW5ZO1xuICB9IC8vIElmIHVwZGF0ZWQgYm91bmRhcmllcywgcHJvcGFnYXRlIGNoYW5nZXMgdXB3YXJkXG5cblxuICBpZiAoZmxhZykge1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHJldHVybiB1cGRhdGVBbmNlc3RyeUJvdW5kYXJpZXMocCwgbGF5b3V0SW5mbyk7XG4gIH0gLy8gcyArPSBcIi4gTm8gY2hhbmdlcyBpbiBib3VuZGFyaWVzL3Bvc2l0aW9uIG9mIHBhcmVudCBub2RlIFwiICsgcC5pZDtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm47XG59O1xuXG52YXIgc2VwYXJhdGVDb21wb25lbnRzID0gZnVuY3Rpb24gc2VwYXJhdGVDb21wb25lbnRzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgdmFyIG5vZGVzID0gbGF5b3V0SW5mby5sYXlvdXROb2RlcztcbiAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgY2lkID0gbm9kZS5jbXB0SWQ7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY2lkXSA9IGNvbXBvbmVudHNbY2lkXSB8fCBbXTtcbiAgICBjb21wb25lbnQucHVzaChub2RlKTtcbiAgfVxuXG4gIHZhciB0b3RhbEEgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjID0gY29tcG9uZW50c1tpXTtcblxuICAgIGlmICghYykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYy54MSA9IEluZmluaXR5O1xuICAgIGMueDIgPSAtSW5maW5pdHk7XG4gICAgYy55MSA9IEluZmluaXR5O1xuICAgIGMueTIgPSAtSW5maW5pdHk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuID0gY1tqXTtcbiAgICAgIGMueDEgPSBNYXRoLm1pbihjLngxLCBuLnBvc2l0aW9uWCAtIG4ud2lkdGggLyAyKTtcbiAgICAgIGMueDIgPSBNYXRoLm1heChjLngyLCBuLnBvc2l0aW9uWCArIG4ud2lkdGggLyAyKTtcbiAgICAgIGMueTEgPSBNYXRoLm1pbihjLnkxLCBuLnBvc2l0aW9uWSAtIG4uaGVpZ2h0IC8gMik7XG4gICAgICBjLnkyID0gTWF0aC5tYXgoYy55Miwgbi5wb3NpdGlvblkgKyBuLmhlaWdodCAvIDIpO1xuICAgIH1cblxuICAgIGMudyA9IGMueDIgLSBjLngxO1xuICAgIGMuaCA9IGMueTIgLSBjLnkxO1xuICAgIHRvdGFsQSArPSBjLncgKiBjLmg7XG4gIH1cblxuICBjb21wb25lbnRzLnNvcnQoZnVuY3Rpb24gKGMxLCBjMikge1xuICAgIHJldHVybiBjMi53ICogYzIuaCAtIGMxLncgKiBjMS5oO1xuICB9KTtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG4gIHZhciB1c2VkVyA9IDA7XG4gIHZhciByb3dIID0gMDtcbiAgdmFyIG1heFJvd1cgPSBNYXRoLnNxcnQodG90YWxBKSAqIGxheW91dEluZm8uY2xpZW50V2lkdGggLyBsYXlvdXRJbmZvLmNsaWVudEhlaWdodDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IGNvbXBvbmVudHNbaV07XG5cbiAgICBpZiAoIWMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG4gPSBjW2pdO1xuXG4gICAgICBpZiAoIW4uaXNMb2NrZWQpIHtcbiAgICAgICAgbi5wb3NpdGlvblggKz0geCAtIGMueDE7XG4gICAgICAgIG4ucG9zaXRpb25ZICs9IHkgLSBjLnkxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHggKz0gYy53ICsgb3B0aW9ucy5jb21wb25lbnRTcGFjaW5nO1xuICAgIHVzZWRXICs9IGMudyArIG9wdGlvbnMuY29tcG9uZW50U3BhY2luZztcbiAgICByb3dIID0gTWF0aC5tYXgocm93SCwgYy5oKTtcblxuICAgIGlmICh1c2VkVyA+IG1heFJvd1cpIHtcbiAgICAgIHkgKz0gcm93SCArIG9wdGlvbnMuY29tcG9uZW50U3BhY2luZztcbiAgICAgIHggPSAwO1xuICAgICAgdXNlZFcgPSAwO1xuICAgICAgcm93SCA9IDA7XG4gICAgfVxuICB9XG59O1xuXG52YXIgZGVmYXVsdHMkZCA9IHtcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0aGUgdmlld3BvcnQgdG8gdGhlIGdyYXBoXG4gIHBhZGRpbmc6IDMwLFxuICAvLyBwYWRkaW5nIHVzZWQgb24gZml0XG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gIC8vIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgYXZvaWRPdmVybGFwUGFkZGluZzogMTAsXG4gIC8vIGV4dHJhIHNwYWNpbmcgYXJvdW5kIG5vZGVzIHdoZW4gYXZvaWRPdmVybGFwOiB0cnVlXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsXG4gIC8vIEV4Y2x1ZGVzIHRoZSBsYWJlbCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgYm91bmRpbmcgYm94ZXMgZm9yIHRoZSBsYXlvdXQgYWxnb3JpdGhtXG4gIHNwYWNpbmdGYWN0b3I6IHVuZGVmaW5lZCxcbiAgLy8gQXBwbGllcyBhIG11bHRpcGxpY2F0aXZlIGZhY3RvciAoPjApIHRvIGV4cGFuZCBvciBjb21wcmVzcyB0aGUgb3ZlcmFsbCBhcmVhIHRoYXQgdGhlIG5vZGVzIHRha2UgdXBcbiAgY29uZGVuc2U6IGZhbHNlLFxuICAvLyB1c2VzIGFsbCBhdmFpbGFibGUgc3BhY2Ugb24gZmFsc2UsIHVzZXMgbWluaW1hbCBzcGFjZSBvbiB0cnVlXG4gIHJvd3M6IHVuZGVmaW5lZCxcbiAgLy8gZm9yY2UgbnVtIG9mIHJvd3MgaW4gdGhlIGdyaWRcbiAgY29sczogdW5kZWZpbmVkLFxuICAvLyBmb3JjZSBudW0gb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuICBwb3NpdGlvbjogZnVuY3Rpb24gcG9zaXRpb24obm9kZSkge30sXG4gIC8vIHJldHVybnMgeyByb3csIGNvbCB9IGZvciBlbGVtZW50XG4gIHNvcnQ6IHVuZGVmaW5lZCxcbiAgLy8gYSBzb3J0aW5nIGZ1bmN0aW9uIHRvIG9yZGVyIHRoZSBub2RlczsgZS5nLiBmdW5jdGlvbihhLCBiKXsgcmV0dXJuIGEuZGF0YSgnd2VpZ2h0JykgLSBiLmRhdGEoJ3dlaWdodCcpIH1cbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICByZWFkeTogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zaXRpb24pIHtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzIFxuXG59O1xuXG5mdW5jdGlvbiBHcmlkTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyRkLCBvcHRpb25zKTtcbn1cblxuR3JpZExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHBhcmFtcztcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuXG4gIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICBub2RlcyA9IG5vZGVzLnNvcnQob3B0aW9ucy5zb3J0KTtcbiAgfVxuXG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuXG4gIGlmIChiYi5oID09PSAwIHx8IGJiLncgPT09IDApIHtcbiAgICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJiLngxLFxuICAgICAgICB5OiBiYi55MVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICAvLyB3aWR0aC9oZWlnaHQgKiBzcGxpdHNeMiA9IGNlbGxzIHdoZXJlIHNwbGl0cyBpcyBudW1iZXIgb2YgdGltZXMgdG8gc3BsaXQgd2lkdGhcbiAgICB2YXIgY2VsbHMgPSBub2Rlcy5zaXplKCk7XG4gICAgdmFyIHNwbGl0cyA9IE1hdGguc3FydChjZWxscyAqIGJiLmggLyBiYi53KTtcbiAgICB2YXIgcm93cyA9IE1hdGgucm91bmQoc3BsaXRzKTtcbiAgICB2YXIgY29scyA9IE1hdGgucm91bmQoYmIudyAvIGJiLmggKiBzcGxpdHMpO1xuXG4gICAgdmFyIHNtYWxsID0gZnVuY3Rpb24gc21hbGwodmFsKSB7XG4gICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHJvd3MsIGNvbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHMpO1xuXG4gICAgICAgIGlmIChtaW4gPT0gcm93cykge1xuICAgICAgICAgIHJvd3MgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29scyA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgbGFyZ2UgPSBmdW5jdGlvbiBsYXJnZSh2YWwpIHtcbiAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgocm93cywgY29scyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbWF4ID0gTWF0aC5tYXgocm93cywgY29scyk7XG5cbiAgICAgICAgaWYgKG1heCA9PSByb3dzKSB7XG4gICAgICAgICAgcm93cyA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2xzID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBvUm93cyA9IG9wdGlvbnMucm93cztcbiAgICB2YXIgb0NvbHMgPSBvcHRpb25zLmNvbHMgIT0gbnVsbCA/IG9wdGlvbnMuY29scyA6IG9wdGlvbnMuY29sdW1uczsgLy8gaWYgcm93cyBvciBjb2x1bW5zIHdlcmUgc2V0IGluIG9wdGlvbnMsIHVzZSB0aG9zZSB2YWx1ZXNcblxuICAgIGlmIChvUm93cyAhPSBudWxsICYmIG9Db2xzICE9IG51bGwpIHtcbiAgICAgIHJvd3MgPSBvUm93cztcbiAgICAgIGNvbHMgPSBvQ29scztcbiAgICB9IGVsc2UgaWYgKG9Sb3dzICE9IG51bGwgJiYgb0NvbHMgPT0gbnVsbCkge1xuICAgICAgcm93cyA9IG9Sb3dzO1xuICAgICAgY29scyA9IE1hdGguY2VpbChjZWxscyAvIHJvd3MpO1xuICAgIH0gZWxzZSBpZiAob1Jvd3MgPT0gbnVsbCAmJiBvQ29scyAhPSBudWxsKSB7XG4gICAgICBjb2xzID0gb0NvbHM7XG4gICAgICByb3dzID0gTWF0aC5jZWlsKGNlbGxzIC8gY29scyk7XG4gICAgfSAvLyBvdGhlcndpc2UgdXNlIHRoZSBhdXRvbWF0aWMgdmFsdWVzIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHlcbiAgICAvLyBpZiByb3VuZGluZyB3YXMgdXAsIHNlZSBpZiB3ZSBjYW4gcmVkdWNlIHJvd3Mgb3IgY29sdW1uc1xuICAgIGVsc2UgaWYgKGNvbHMgKiByb3dzID4gY2VsbHMpIHtcbiAgICAgICAgdmFyIHNtID0gc21hbGwoKTtcbiAgICAgICAgdmFyIGxnID0gbGFyZ2UoKTsgLy8gcmVkdWNpbmcgdGhlIHNtYWxsIHNpZGUgdGFrZXMgYXdheSB0aGUgbW9zdCBjZWxscywgc28gdHJ5IGl0IGZpcnN0XG5cbiAgICAgICAgaWYgKChzbSAtIDEpICogbGcgPj0gY2VsbHMpIHtcbiAgICAgICAgICBzbWFsbChzbSAtIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKChsZyAtIDEpICogc20gPj0gY2VsbHMpIHtcbiAgICAgICAgICBsYXJnZShsZyAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiByb3VuZGluZyB3YXMgdG9vIGxvdywgYWRkIHJvd3Mgb3IgY29sdW1uc1xuICAgICAgICB3aGlsZSAoY29scyAqIHJvd3MgPCBjZWxscykge1xuICAgICAgICAgIHZhciBfc20gPSBzbWFsbCgpO1xuXG4gICAgICAgICAgdmFyIF9sZyA9IGxhcmdlKCk7IC8vIHRyeSB0byBhZGQgdG8gbGFyZ2VyIHNpZGUgZmlyc3QgKGFkZHMgbGVzcyBpbiBtdWx0aXBsaWNhdGlvbilcblxuXG4gICAgICAgICAgaWYgKChfbGcgKyAxKSAqIF9zbSA+PSBjZWxscykge1xuICAgICAgICAgICAgbGFyZ2UoX2xnICsgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNtYWxsKF9zbSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgdmFyIGNlbGxXaWR0aCA9IGJiLncgLyBjb2xzO1xuICAgIHZhciBjZWxsSGVpZ2h0ID0gYmIuaCAvIHJvd3M7XG5cbiAgICBpZiAob3B0aW9ucy5jb25kZW5zZSkge1xuICAgICAgY2VsbFdpZHRoID0gMDtcbiAgICAgIGNlbGxIZWlnaHQgPSAwO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICB2YXIgcG9zID0gbm9kZS5fcHJpdmF0ZS5wb3NpdGlvbjtcblxuICAgICAgICBpZiAocG9zLnggPT0gbnVsbCB8fCBwb3MueSA9PSBudWxsKSB7XG4gICAgICAgICAgLy8gZm9yIGJiXG4gICAgICAgICAgcG9zLnggPSAwO1xuICAgICAgICAgIHBvcy55ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYmIgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICAgIHZhciBwID0gb3B0aW9ucy5hdm9pZE92ZXJsYXBQYWRkaW5nO1xuICAgICAgICB2YXIgdyA9IG5iYi53ICsgcDtcbiAgICAgICAgdmFyIGggPSBuYmIuaCArIHA7XG4gICAgICAgIGNlbGxXaWR0aCA9IE1hdGgubWF4KGNlbGxXaWR0aCwgdyk7XG4gICAgICAgIGNlbGxIZWlnaHQgPSBNYXRoLm1heChjZWxsSGVpZ2h0LCBoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2VsbFVzZWQgPSB7fTsgLy8gZS5nLiAnYy0wLTInID0+IHRydWVcblxuICAgIHZhciB1c2VkID0gZnVuY3Rpb24gdXNlZChyb3csIGNvbCkge1xuICAgICAgcmV0dXJuIGNlbGxVc2VkWydjLScgKyByb3cgKyAnLScgKyBjb2xdID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH07XG5cbiAgICB2YXIgdXNlID0gZnVuY3Rpb24gdXNlKHJvdywgY29sKSB7XG4gICAgICBjZWxsVXNlZFsnYy0nICsgcm93ICsgJy0nICsgY29sXSA9IHRydWU7XG4gICAgfTsgLy8gdG8ga2VlcCB0cmFjayBvZiBjdXJyZW50IGNlbGwgcG9zaXRpb25cblxuXG4gICAgdmFyIHJvdyA9IDA7XG4gICAgdmFyIGNvbCA9IDA7XG5cbiAgICB2YXIgbW92ZVRvTmV4dENlbGwgPSBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2VsbCgpIHtcbiAgICAgIGNvbCsrO1xuXG4gICAgICBpZiAoY29sID49IGNvbHMpIHtcbiAgICAgICAgY29sID0gMDtcbiAgICAgICAgcm93Kys7XG4gICAgICB9XG4gICAgfTsgLy8gZ2V0IGEgY2FjaGUgb2YgYWxsIHRoZSBtYW51YWwgcG9zaXRpb25zXG5cblxuICAgIHZhciBpZDJtYW5Qb3MgPSB7fTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBub2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcbiAgICAgIHZhciByY1BvcyA9IG9wdGlvbnMucG9zaXRpb24oX25vZGUpO1xuXG4gICAgICBpZiAocmNQb3MgJiYgKHJjUG9zLnJvdyAhPT0gdW5kZWZpbmVkIHx8IHJjUG9zLmNvbCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAvLyBtdXN0IGhhdmUgYXQgbGVhc3Qgcm93IG9yIGNvbCBkZWYnZFxuICAgICAgICB2YXIgX3BvcyA9IHtcbiAgICAgICAgICByb3c6IHJjUG9zLnJvdyxcbiAgICAgICAgICBjb2w6IHJjUG9zLmNvbFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfcG9zLmNvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gZmluZCB1bnVzZWQgY29sXG4gICAgICAgICAgX3Bvcy5jb2wgPSAwO1xuXG4gICAgICAgICAgd2hpbGUgKHVzZWQoX3Bvcy5yb3csIF9wb3MuY29sKSkge1xuICAgICAgICAgICAgX3Bvcy5jb2wrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoX3Bvcy5yb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIGZpbmQgdW51c2VkIHJvd1xuICAgICAgICAgIF9wb3Mucm93ID0gMDtcblxuICAgICAgICAgIHdoaWxlICh1c2VkKF9wb3Mucm93LCBfcG9zLmNvbCkpIHtcbiAgICAgICAgICAgIF9wb3Mucm93Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWQybWFuUG9zW19ub2RlLmlkKCldID0gX3BvcztcbiAgICAgICAgdXNlKF9wb3Mucm93LCBfcG9zLmNvbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGVtZW50LCBpKSB7XG4gICAgICB2YXIgeCwgeTtcblxuICAgICAgaWYgKGVsZW1lbnQubG9ja2VkKCkgfHwgZWxlbWVudC5pc1BhcmVudCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gc2VlIGlmIHdlIGhhdmUgYSBtYW51YWwgcG9zaXRpb24gc2V0XG5cblxuICAgICAgdmFyIHJjUG9zID0gaWQybWFuUG9zW2VsZW1lbnQuaWQoKV07XG5cbiAgICAgIGlmIChyY1Bvcykge1xuICAgICAgICB4ID0gcmNQb3MuY29sICogY2VsbFdpZHRoICsgY2VsbFdpZHRoIC8gMiArIGJiLngxO1xuICAgICAgICB5ID0gcmNQb3Mucm93ICogY2VsbEhlaWdodCArIGNlbGxIZWlnaHQgLyAyICsgYmIueTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvdGhlcndpc2Ugc2V0IGF1dG9tYXRpY2FsbHlcbiAgICAgICAgd2hpbGUgKHVzZWQocm93LCBjb2wpKSB7XG4gICAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHggPSBjb2wgKiBjZWxsV2lkdGggKyBjZWxsV2lkdGggLyAyICsgYmIueDE7XG4gICAgICAgIHkgPSByb3cgKiBjZWxsSGVpZ2h0ICsgY2VsbEhlaWdodCAvIDIgKyBiYi55MTtcbiAgICAgICAgdXNlKHJvdywgY29sKTtcbiAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbm9kZXMubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRlID0ge1xuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSxcbiAgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9IC8vIG9uIGxheW91dHN0b3BcblxufTsgLy8gY29uc3RydWN0b3Jcbi8vIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuXG5mdW5jdGlvbiBOdWxsTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyRlLCBvcHRpb25zKTtcbn0gLy8gcnVucyB0aGUgbGF5b3V0XG5cblxuTnVsbExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7IC8vIGVsZW1lbnRzIHRvIGNvbnNpZGVyIGluIHRoZSBsYXlvdXRcblxuICB2YXIgbGF5b3V0ID0gdGhpczsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICAvLyAoZGlzYWJsZSBlc2xpbnQgZm9yIG5leHQgbGluZSBhcyB0aGlzIHNlcnZlcyBhcyBleGFtcGxlIGxheW91dCBjb2RlIHRvIGV4dGVybmFsIGRldmVsb3BlcnMpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gIHZhciBjeSA9IG9wdGlvbnMuY3k7XG4gIGxheW91dC5lbWl0KCdsYXlvdXRzdGFydCcpOyAvLyBwdXRzIGFsbCBub2RlcyBhdCAoMCwgMClcbiAgLy8gbi5iLiBtb3N0IGxheW91dHMgd291bGQgdXNlIGxheW91dFBvc2l0aW9ucygpLCBpbnN0ZWFkIG9mIHBvc2l0aW9ucygpIGFuZCBtYW51YWwgZXZlbnRzXG5cbiAgZWxlcy5ub2RlcygpLnBvc2l0aW9ucyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfSk7IC8vIHRyaWdnZXIgbGF5b3V0cmVhZHkgd2hlbiBlYWNoIG5vZGUgaGFzIGhhZCBpdHMgcG9zaXRpb24gc2V0IGF0IGxlYXN0IG9uY2VcblxuICBsYXlvdXQub25lKCdsYXlvdXRyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICBsYXlvdXQuZW1pdCgnbGF5b3V0cmVhZHknKTsgLy8gdHJpZ2dlciBsYXlvdXRzdG9wIHdoZW4gdGhlIGxheW91dCBzdG9wcyAoZS5nLiBmaW5pc2hlcylcblxuICBsYXlvdXQub25lKCdsYXlvdXRzdG9wJywgb3B0aW9ucy5zdG9wKTtcbiAgbGF5b3V0LmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59OyAvLyBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcblxuXG5OdWxsTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRmID0ge1xuICBwb3NpdGlvbnM6IHVuZGVmaW5lZCxcbiAgLy8gbWFwIG9mIChub2RlIGlkKSA9PiAocG9zaXRpb24gb2JqKTsgb3IgZnVuY3Rpb24obm9kZSl7IHJldHVybiBzb21Qb3M7IH1cbiAgem9vbTogdW5kZWZpbmVkLFxuICAvLyB0aGUgem9vbSBsZXZlbCB0byBzZXQgKHByb2Igd2FudCBmaXQgPSBmYWxzZSBpZiBzZXQpXG4gIHBhbjogdW5kZWZpbmVkLFxuICAvLyB0aGUgcGFuIGxldmVsIHRvIHNldCAocHJvYiB3YW50IGZpdCA9IGZhbHNlIGlmIHNldClcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0byB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gcGFkZGluZyBvbiBmaXRcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICByZWFkeTogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zaXRpb24pIHtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzXG5cbn07XG5cbmZ1bmN0aW9uIFByZXNldExheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkZiwgb3B0aW9ucyk7XG59XG5cblByZXNldExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKTtcbiAgdmFyIHBvc0lzRm4gPSBmbihvcHRpb25zLnBvc2l0aW9ucyk7XG5cbiAgZnVuY3Rpb24gZ2V0UG9zaXRpb24obm9kZSkge1xuICAgIGlmIChvcHRpb25zLnBvc2l0aW9ucyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29weVBvc2l0aW9uKG5vZGUucG9zaXRpb24oKSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc0lzRm4pIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnBvc2l0aW9ucyhub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgcG9zID0gb3B0aW9ucy5wb3NpdGlvbnNbbm9kZS5fcHJpdmF0ZS5kYXRhLmlkXTtcblxuICAgIGlmIChwb3MgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcztcbiAgfVxuXG4gIG5vZGVzLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBwb3NpdGlvbiA9IGdldFBvc2l0aW9uKG5vZGUpO1xuXG4gICAgaWYgKG5vZGUubG9ja2VkKCkgfHwgcG9zaXRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxudmFyIGRlZmF1bHRzJGcgPSB7XG4gIGZpdDogdHJ1ZSxcbiAgLy8gd2hldGhlciB0byBmaXQgdG8gdmlld3BvcnRcbiAgcGFkZGluZzogMzAsXG4gIC8vIGZpdCBwYWRkaW5nXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbn07XG5cbmZ1bmN0aW9uIFJhbmRvbUxheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkZywgb3B0aW9ucyk7XG59XG5cblJhbmRvbUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTtcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuXG4gIHZhciBnZXRQb3MgPSBmdW5jdGlvbiBnZXRQb3Mobm9kZSwgaSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgICAgeTogYmIueTEgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKVxuICAgIH07XG4gIH07XG5cbiAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBnZXRQb3MpO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBsYXlvdXQgPSBbe1xuICBuYW1lOiAnYnJlYWR0aGZpcnN0JyxcbiAgaW1wbDogQnJlYWR0aEZpcnN0TGF5b3V0XG59LCB7XG4gIG5hbWU6ICdjaXJjbGUnLFxuICBpbXBsOiBDaXJjbGVMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ2NvbmNlbnRyaWMnLFxuICBpbXBsOiBDb25jZW50cmljTGF5b3V0XG59LCB7XG4gIG5hbWU6ICdjb3NlJyxcbiAgaW1wbDogQ29zZUxheW91dFxufSwge1xuICBuYW1lOiAnZ3JpZCcsXG4gIGltcGw6IEdyaWRMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ251bGwnLFxuICBpbXBsOiBOdWxsTGF5b3V0XG59LCB7XG4gIG5hbWU6ICdwcmVzZXQnLFxuICBpbXBsOiBQcmVzZXRMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ3JhbmRvbScsXG4gIGltcGw6IFJhbmRvbUxheW91dFxufV07XG5cbmZ1bmN0aW9uIE51bGxSZW5kZXJlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMubm90aWZpY2F0aW9ucyA9IDA7IC8vIGZvciB0ZXN0aW5nXG59XG5cbnZhciBub29wJDEgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciB0aHJvd0ltZ0VyciA9IGZ1bmN0aW9uIHRocm93SW1nRXJyKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0EgaGVhZGxlc3MgaW5zdGFuY2UgY2FuIG5vdCByZW5kZXIgaW1hZ2VzJyk7XG59O1xuXG5OdWxsUmVuZGVyZXIucHJvdG90eXBlID0ge1xuICByZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGU6IG5vb3AkMSxcbiAgbm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zKys7XG4gIH0sXG4gIGluaXQ6IG5vb3AkMSxcbiAgaXNIZWFkbGVzczogZnVuY3Rpb24gaXNIZWFkbGVzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgcG5nOiB0aHJvd0ltZ0VycixcbiAganBnOiB0aHJvd0ltZ0VyclxufTtcblxudmFyIEJScCA9IHt9O1xuQlJwLmFycm93U2hhcGVXaWR0aCA9IDAuMztcblxuQlJwLnJlZ2lzdGVyQXJyb3dTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJvd1NoYXBlcyA9IHRoaXMuYXJyb3dTaGFwZXMgPSB7fTtcbiAgdmFyIHJlbmRlcmVyID0gdGhpczsgLy8gQ29udHJhY3QgZm9yIGFycm93IHNoYXBlczpcbiAgLy8gMCwgMCBpcyBhcnJvdyB0aXBcbiAgLy8gKDAsIDEpIGlzIGRpcmVjdGlvbiB0b3dhcmRzIG5vZGVcbiAgLy8gKDEsIDApIGlzIHJpZ2h0XG4gIC8vXG4gIC8vIGZ1bmN0aW9uYWwgYXBpOlxuICAvLyBjb2xsaWRlOiBjaGVjayB4LCB5IGluIHNoYXBlXG4gIC8vIHJvdWdoQ29sbGlkZTogY2FsbGVkIGJlZm9yZSBjb2xsaWRlLCBubyBmYWxzZSBuZWdhdGl2ZXNcbiAgLy8gZHJhdzogZHJhd1xuICAvLyBzcGFjaW5nOiBkaXN0KGFycm93VGlwLCBub2RlQm91bmRhcnkpXG4gIC8vIGdhcDogZGlzdChlZGdlVGlwLCBub2RlQm91bmRhcnkpLCBlZGdlVGlwIG1heSAhPSBhcnJvd1RpcFxuXG4gIHZhciBiYkNvbGxpZGUgPSBmdW5jdGlvbiBiYkNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgsIHBhZGRpbmcpIHtcbiAgICB2YXIgeDEgPSB0cmFuc2xhdGlvbi54IC0gc2l6ZSAvIDIgLSBwYWRkaW5nO1xuICAgIHZhciB4MiA9IHRyYW5zbGF0aW9uLnggKyBzaXplIC8gMiArIHBhZGRpbmc7XG4gICAgdmFyIHkxID0gdHJhbnNsYXRpb24ueSAtIHNpemUgLyAyIC0gcGFkZGluZztcbiAgICB2YXIgeTIgPSB0cmFuc2xhdGlvbi55ICsgc2l6ZSAvIDIgKyBwYWRkaW5nO1xuICAgIHZhciBpbnNpZGUgPSB4MSA8PSB4ICYmIHggPD0geDIgJiYgeTEgPD0geSAmJiB5IDw9IHkyO1xuICAgIHJldHVybiBpbnNpZGU7XG4gIH07XG5cbiAgdmFyIHRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pIHtcbiAgICB2YXIgeFJvdGF0ZWQgPSB4ICogTWF0aC5jb3MoYW5nbGUpIC0geSAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICB2YXIgeVJvdGF0ZWQgPSB4ICogTWF0aC5zaW4oYW5nbGUpICsgeSAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICB2YXIgeFNjYWxlZCA9IHhSb3RhdGVkICogc2l6ZTtcbiAgICB2YXIgeVNjYWxlZCA9IHlSb3RhdGVkICogc2l6ZTtcbiAgICB2YXIgeFRyYW5zbGF0ZWQgPSB4U2NhbGVkICsgdHJhbnNsYXRpb24ueDtcbiAgICB2YXIgeVRyYW5zbGF0ZWQgPSB5U2NhbGVkICsgdHJhbnNsYXRpb24ueTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogeFRyYW5zbGF0ZWQsXG4gICAgICB5OiB5VHJhbnNsYXRlZFxuICAgIH07XG4gIH07XG5cbiAgdmFyIHRyYW5zZm9ybVBvaW50cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybVBvaW50cyhwdHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbikge1xuICAgIHZhciByZXRQdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICAgIHZhciB5ID0gcHRzW2kgKyAxXTtcbiAgICAgIHJldFB0cy5wdXNoKHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0UHRzO1xuICB9O1xuXG4gIHZhciBwb2ludHNUb0FyciA9IGZ1bmN0aW9uIHBvaW50c1RvQXJyKHB0cykge1xuICAgIHZhciByZXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHB0c1tpXTtcbiAgICAgIHJldC5wdXNoKHAueCwgcC55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIHZhciBzdGFuZGFyZEdhcCA9IGZ1bmN0aW9uIHN0YW5kYXJkR2FwKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnBmVmFsdWUgKiAyO1xuICB9O1xuXG4gIHZhciBkZWZpbmVBcnJvd1NoYXBlID0gZnVuY3Rpb24gZGVmaW5lQXJyb3dTaGFwZShuYW1lLCBkZWZuKSB7XG4gICAgaWYgKHN0cmluZyhkZWZuKSkge1xuICAgICAgZGVmbiA9IGFycm93U2hhcGVzW2RlZm5dO1xuICAgIH1cblxuICAgIGFycm93U2hhcGVzW25hbWVdID0gZXh0ZW5kKHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMC4xNSwgLTAuMywgMC4xNSwgMC4zLCAtMC4xNSwgMC4zXSxcbiAgICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBwYWRkaW5nKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICAgIHZhciBpbnNpZGUgPSBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICAgIH0sXG4gICAgICByb3VnaENvbGxpZGU6IGJiQ29sbGlkZSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKCdwb2x5Z29uJykoY29udGV4dCwgcG9pbnRzKTtcbiAgICAgIH0sXG4gICAgICBzcGFjaW5nOiBmdW5jdGlvbiBzcGFjaW5nKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9LFxuICAgICAgZ2FwOiBzdGFuZGFyZEdhcFxuICAgIH0sIGRlZm4pO1xuICB9O1xuXG4gIGRlZmluZUFycm93U2hhcGUoJ25vbmUnLCB7XG4gICAgY29sbGlkZTogZmFsc2lmeSxcbiAgICByb3VnaENvbGxpZGU6IGZhbHNpZnksXG4gICAgZHJhdzogbm9vcCxcbiAgICBzcGFjaW5nOiB6ZXJvaWZ5LFxuICAgIGdhcDogemVyb2lmeVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgndHJpYW5nbGUnLCB7XG4gICAgcG9pbnRzOiBbLTAuMTUsIC0wLjMsIDAsIDAsIDAuMTUsIC0wLjNdXG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdhcnJvdycsICd0cmlhbmdsZScpO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS1iYWNrY3VydmUnLCB7XG4gICAgcG9pbnRzOiBhcnJvd1NoYXBlc1sndHJpYW5nbGUnXS5wb2ludHMsXG4gICAgY29udHJvbFBvaW50OiBbMCwgLTAuMTVdLFxuICAgIHJvdWdoQ29sbGlkZTogYmJDb2xsaWRlLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHZhciBwdHNUcmFucyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciBjdHJsUHQgPSB0aGlzLmNvbnRyb2xQb2ludDtcbiAgICAgIHZhciBjdHJsUHRUcmFucyA9IHRyYW5zZm9ybShjdHJsUHRbMF0sIGN0cmxQdFsxXSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgcHRzVHJhbnMsIGN0cmxQdFRyYW5zKTtcbiAgICB9LFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuODtcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS10ZWUnLCB7XG4gICAgcG9pbnRzOiBbMCwgMCwgMC4xNSwgLTAuMywgLTAuMTUsIC0wLjMsIDAsIDBdLFxuICAgIHBvaW50c1RlZTogWy0wLjE1LCAtMC40LCAtMC4xNSwgLTAuNSwgMC4xNSwgLTAuNSwgMC4xNSwgLTAuNF0sXG4gICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHRyaVB0cyA9IHBvaW50c1RvQXJyKHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSArIDIgKiBwYWRkaW5nLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICAgIHZhciB0ZWVQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUZWUsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICByZXR1cm4gaW5zaWRlO1xuICAgIH0sXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciB0ZWVQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUZWUsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCh0aGlzLm5hbWUpKGNvbnRleHQsIHRyaVB0cywgdGVlUHRzKTtcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdjaXJjbGUtdHJpYW5nbGUnLCB7XG4gICAgcmFkaXVzOiAwLjE1LFxuICAgIHBvaW50c1RyOiBbMCwgLTAuMTUsIDAuMTUsIC0wLjQ1LCAtMC4xNSwgLTAuNDUsIDAsIC0wLjE1XSxcbiAgICBjb2xsaWRlOiBmdW5jdGlvbiBjb2xsaWRlKHgsIHksIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoLCBwYWRkaW5nKSB7XG4gICAgICB2YXIgdCA9IHRyYW5zbGF0aW9uO1xuICAgICAgdmFyIGNpcmNsZUluc2lkZSA9IE1hdGgucG93KHQueCAtIHgsIDIpICsgTWF0aC5wb3codC55IC0geSwgMikgPD0gTWF0aC5wb3coKHNpemUgKyAyICogcGFkZGluZykgKiB0aGlzLnJhZGl1cywgMik7XG4gICAgICB2YXIgdHJpUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzLCBzaXplICsgMiAqIHBhZGRpbmcsIGFuZ2xlLCB0cmFuc2xhdGlvbikpO1xuICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCB0cmlQdHMpIHx8IGNpcmNsZUluc2lkZTtcbiAgICB9LFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHZhciB0cmlQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUciwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJpUHRzLCB0cmFuc2xhdGlvbi54LCB0cmFuc2xhdGlvbi55LCB0aGlzLnJhZGl1cyAqIHNpemUpO1xuICAgIH0sXG4gICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZXIuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS1jcm9zcycsIHtcbiAgICBwb2ludHM6IFswLCAwLCAwLjE1LCAtMC4zLCAtMC4xNSwgLTAuMywgMCwgMF0sXG4gICAgYmFzZUNyb3NzTGluZVB0czogWy0wLjE1LCAtMC40LCAvLyBmaXJzdCBoYWxmIG9mIHRoZSByZWN0YW5nbGVcbiAgICAtMC4xNSwgLTAuNCwgMC4xNSwgLTAuNCwgLy8gc2Vjb25kIGhhbGYgb2YgdGhlIHJlY3RhbmdsZVxuICAgIDAuMTUsIC0wLjRdLFxuICAgIGNyb3NzTGluZVB0czogZnVuY3Rpb24gY3Jvc3NMaW5lUHRzKHNpemUsIGVkZ2VXaWR0aCkge1xuICAgICAgLy8gc2hpZnQgcG9pbnRzIHNvIHRoYXQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNyb3NzIHBvaW50cyBtYXRjaGVzIGVkZ2Ugd2lkdGhcbiAgICAgIHZhciBwID0gdGhpcy5iYXNlQ3Jvc3NMaW5lUHRzLnNsaWNlKCk7XG4gICAgICB2YXIgc2hpZnRGYWN0b3IgPSBlZGdlV2lkdGggLyBzaXplO1xuICAgICAgdmFyIHkwID0gMztcbiAgICAgIHZhciB5MSA9IDU7XG4gICAgICBwW3kwXSA9IHBbeTBdIC0gc2hpZnRGYWN0b3I7XG4gICAgICBwW3kxXSA9IHBbeTFdIC0gc2hpZnRGYWN0b3I7XG4gICAgICByZXR1cm4gcDtcbiAgICB9LFxuICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgsIHBhZGRpbmcpIHtcbiAgICAgIHZhciB0cmlQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgdGVlUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMuY3Jvc3NMaW5lUHRzKHNpemUsIGVkZ2VXaWR0aCksIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICByZXR1cm4gaW5zaWRlO1xuICAgIH0sXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciBjcm9zc0xpbmVQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5jcm9zc0xpbmVQdHMoc2l6ZSwgZWRnZVdpZHRoKSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJpUHRzLCBjcm9zc0xpbmVQdHMpO1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ3ZlZScsIHtcbiAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMCwgMCwgMC4xNSwgLTAuMywgMCwgLTAuMTVdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuNTI1O1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ2NpcmNsZScsIHtcbiAgICByYWRpdXM6IDAuMTUsXG4gICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHQgPSB0cmFuc2xhdGlvbjtcbiAgICAgIHZhciBpbnNpZGUgPSBNYXRoLnBvdyh0LnggLSB4LCAyKSArIE1hdGgucG93KHQueSAtIHksIDIpIDw9IE1hdGgucG93KChzaXplICsgMiAqIHBhZGRpbmcpICogdGhpcy5yYWRpdXMsIDIpO1xuICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICB9LFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJhbnNsYXRpb24ueCwgdHJhbnNsYXRpb24ueSwgdGhpcy5yYWRpdXMgKiBzaXplKTtcbiAgICB9LFxuICAgIHNwYWNpbmc6IGZ1bmN0aW9uIHNwYWNpbmcoZWRnZSkge1xuICAgICAgcmV0dXJuIHJlbmRlcmVyLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5yYWRpdXM7XG4gICAgfVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgndGVlJywge1xuICAgIHBvaW50czogWy0wLjE1LCAwLCAtMC4xNSwgLTAuMSwgMC4xNSwgLTAuMSwgMC4xNSwgMF0sXG4gICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9LFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ3NxdWFyZScsIHtcbiAgICBwb2ludHM6IFstMC4xNSwgMC4wMCwgMC4xNSwgMC4wMCwgMC4xNSwgLTAuMywgLTAuMTUsIC0wLjNdXG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdkaWFtb25kJywge1xuICAgIHBvaW50czogWy0wLjE1LCAtMC4xNSwgMCwgLTAuMywgMC4xNSwgLTAuMTUsIDAsIDBdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlICogZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gICAgfVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgnY2hldnJvbicsIHtcbiAgICBwb2ludHM6IFswLCAwLCAtMC4xNSwgLTAuMTUsIC0wLjEsIC0wLjIsIDAsIC0wLjEsIDAuMSwgLTAuMiwgMC4xNSwgLTAuMTVdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiAwLjk1ICogZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnZhbHVlO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgQlJwJDEgPSB7fTsgLy8gUHJvamVjdCBtb3VzZVxuXG5CUnAkMS5wcm9qZWN0SW50b1ZpZXdwb3J0ID0gZnVuY3Rpb24gKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgdmFyIGN5ID0gdGhpcy5jeTtcbiAgdmFyIG9mZnNldHMgPSB0aGlzLmZpbmRDb250YWluZXJDbGllbnRDb29yZHMoKTtcbiAgdmFyIG9mZnNldExlZnQgPSBvZmZzZXRzWzBdO1xuICB2YXIgb2Zmc2V0VG9wID0gb2Zmc2V0c1sxXTtcbiAgdmFyIHNjYWxlID0gb2Zmc2V0c1s0XTtcbiAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgdmFyIHggPSAoKGNsaWVudFggLSBvZmZzZXRMZWZ0KSAvIHNjYWxlIC0gcGFuLngpIC8gem9vbTtcbiAgdmFyIHkgPSAoKGNsaWVudFkgLSBvZmZzZXRUb3ApIC8gc2NhbGUgLSBwYW4ueSkgLyB6b29tO1xuICByZXR1cm4gW3gsIHldO1xufTtcblxuQlJwJDEuZmluZENvbnRhaW5lckNsaWVudENvb3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY29udGFpbmVyQkIpIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJCQjtcbiAgfVxuXG4gIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgdmFyIHJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzdHlsZSA9IHdpbmRvdyQxLmdldENvbXB1dGVkU3R5bGUoY29udGFpbmVyKTtcblxuICB2YXIgc3R5bGVWYWx1ZSA9IGZ1bmN0aW9uIHN0eWxlVmFsdWUobmFtZSkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkpO1xuICB9O1xuXG4gIHZhciBwYWRkaW5nID0ge1xuICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ3BhZGRpbmctbGVmdCcpLFxuICAgIHJpZ2h0OiBzdHlsZVZhbHVlKCdwYWRkaW5nLXJpZ2h0JyksXG4gICAgdG9wOiBzdHlsZVZhbHVlKCdwYWRkaW5nLXRvcCcpLFxuICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgncGFkZGluZy1ib3R0b20nKVxuICB9O1xuICB2YXIgYm9yZGVyID0ge1xuICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1sZWZ0LXdpZHRoJyksXG4gICAgcmlnaHQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLFxuICAgIHRvcDogc3R5bGVWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpLFxuICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpXG4gIH07XG4gIHZhciBjbGllbnRXaWR0aCA9IGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgdmFyIGNsaWVudEhlaWdodCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gIHZhciBwYWRkaW5nSG9yID0gcGFkZGluZy5sZWZ0ICsgcGFkZGluZy5yaWdodDtcbiAgdmFyIHBhZGRpbmdWZXIgPSBwYWRkaW5nLnRvcCArIHBhZGRpbmcuYm90dG9tO1xuICB2YXIgYm9yZGVySG9yID0gYm9yZGVyLmxlZnQgKyBib3JkZXIucmlnaHQ7XG4gIHZhciBzY2FsZSA9IHJlY3Qud2lkdGggLyAoY2xpZW50V2lkdGggKyBib3JkZXJIb3IpO1xuICB2YXIgdW5zY2FsZWRXID0gY2xpZW50V2lkdGggLSBwYWRkaW5nSG9yO1xuICB2YXIgdW5zY2FsZWRIID0gY2xpZW50SGVpZ2h0IC0gcGFkZGluZ1ZlcjtcbiAgdmFyIGxlZnQgPSByZWN0LmxlZnQgKyBwYWRkaW5nLmxlZnQgKyBib3JkZXIubGVmdDtcbiAgdmFyIHRvcCA9IHJlY3QudG9wICsgcGFkZGluZy50b3AgKyBib3JkZXIudG9wO1xuICByZXR1cm4gdGhpcy5jb250YWluZXJCQiA9IFtsZWZ0LCB0b3AsIHVuc2NhbGVkVywgdW5zY2FsZWRILCBzY2FsZV07XG59O1xuXG5CUnAkMS5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY29udGFpbmVyQkIgPSBudWxsO1xufTtcblxuQlJwJDEuZmluZE5lYXJlc3RFbGVtZW50ID0gZnVuY3Rpb24gKHgsIHksIGludGVyYWN0aXZlRWxlbWVudHNPbmx5LCBpc1RvdWNoKSB7XG4gIHJldHVybiB0aGlzLmZpbmROZWFyZXN0RWxlbWVudHMoeCwgeSwgaW50ZXJhY3RpdmVFbGVtZW50c09ubHksIGlzVG91Y2gpWzBdO1xufTtcblxuQlJwJDEuZmluZE5lYXJlc3RFbGVtZW50cyA9IGZ1bmN0aW9uICh4LCB5LCBpbnRlcmFjdGl2ZUVsZW1lbnRzT25seSwgaXNUb3VjaCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIGVsZXMgPSByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG4gIHZhciBuZWFyID0gW107IC8vIDEgbm9kZSBtYXgsIDEgZWRnZSBtYXhcblxuICB2YXIgem9vbSA9IHIuY3kuem9vbSgpO1xuICB2YXIgaGFzQ29tcG91bmRzID0gci5jeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBlZGdlVGhyZXNob2xkID0gKGlzVG91Y2ggPyAyNCA6IDgpIC8gem9vbTtcbiAgdmFyIG5vZGVUaHJlc2hvbGQgPSAoaXNUb3VjaCA/IDggOiAyKSAvIHpvb207XG4gIHZhciBsYWJlbFRocmVzaG9sZCA9IChpc1RvdWNoID8gOCA6IDIpIC8gem9vbTtcbiAgdmFyIG1pblNxRGlzdCA9IEluZmluaXR5O1xuICB2YXIgbmVhckVkZ2U7XG4gIHZhciBuZWFyTm9kZTtcblxuICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50c09ubHkpIHtcbiAgICBlbGVzID0gZWxlcy5pbnRlcmFjdGl2ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEVsZShlbGUsIHNxRGlzdCkge1xuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIGlmIChuZWFyTm9kZSkge1xuICAgICAgICByZXR1cm47IC8vIGNhbid0IHJlcGxhY2Ugbm9kZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhck5vZGUgPSBlbGU7XG4gICAgICAgIG5lYXIucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKHNxRGlzdCA9PSBudWxsIHx8IHNxRGlzdCA8IG1pblNxRGlzdCkpIHtcbiAgICAgIGlmIChuZWFyRWRnZSkge1xuICAgICAgICAvLyB0aGVuIHJlcGxhY2UgZXhpc3RpbmcgZWRnZVxuICAgICAgICAvLyBjYW4gcmVwbGFjZSBvbmx5IGlmIHNhbWUgei1pbmRleFxuICAgICAgICBpZiAobmVhckVkZ2UucHN0eWxlKCd6LWNvbXBvdW5kLWRlcHRoJykudmFsdWUgPT09IGVsZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSAmJiBuZWFyRWRnZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSA9PT0gZWxlLnBzdHlsZSgnei1jb21wb3VuZC1kZXB0aCcpLnZhbHVlKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWFyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobmVhcltpXS5pc0VkZ2UoKSkge1xuICAgICAgICAgICAgICBuZWFyW2ldID0gZWxlO1xuICAgICAgICAgICAgICBuZWFyRWRnZSA9IGVsZTtcbiAgICAgICAgICAgICAgbWluU3FEaXN0ID0gc3FEaXN0ICE9IG51bGwgPyBzcURpc3QgOiBtaW5TcURpc3Q7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhci5wdXNoKGVsZSk7XG4gICAgICAgIG5lYXJFZGdlID0gZWxlO1xuICAgICAgICBtaW5TcURpc3QgPSBzcURpc3QgIT0gbnVsbCA/IHNxRGlzdCA6IG1pblNxRGlzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaGVja05vZGUobm9kZSkge1xuICAgIHZhciB3aWR0aCA9IG5vZGUub3V0ZXJXaWR0aCgpICsgMiAqIG5vZGVUaHJlc2hvbGQ7XG4gICAgdmFyIGhlaWdodCA9IG5vZGUub3V0ZXJIZWlnaHQoKSArIDIgKiBub2RlVGhyZXNob2xkO1xuICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgIHZhciBwb3MgPSBub2RlLnBvc2l0aW9uKCk7XG5cbiAgICBpZiAocG9zLnggLSBodyA8PSB4ICYmIHggPD0gcG9zLnggKyBodyAvLyBiYiBjaGVjayB4XG4gICAgJiYgcG9zLnkgLSBoaCA8PSB5ICYmIHkgPD0gcG9zLnkgKyBoaCAvLyBiYiBjaGVjayB5XG4gICAgKSB7XG4gICAgICAgIHZhciBzaGFwZSA9IHIubm9kZVNoYXBlc1tzZWxmLmdldE5vZGVTaGFwZShub2RlKV07XG5cbiAgICAgICAgaWYgKHNoYXBlLmNoZWNrUG9pbnQoeCwgeSwgMCwgd2lkdGgsIGhlaWdodCwgcG9zLngsIHBvcy55KSkge1xuICAgICAgICAgIGFkZEVsZShub2RlLCAwKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tFZGdlKGVkZ2UpIHtcbiAgICB2YXIgX3AgPSBlZGdlLl9wcml2YXRlO1xuICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICAgIHZhciBzdHlsZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgc2NhbGUgPSBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZVdpZHRoIC8gMiArIGVkZ2VUaHJlc2hvbGQ7IC8vIG1vcmUgbGlrZSBhIGRpc3RhbmNlIHJhZGl1cyBmcm9tIGNlbnRyZVxuXG4gICAgdmFyIHdpZHRoU3EgPSB3aWR0aCAqIHdpZHRoO1xuICAgIHZhciB3aWR0aDIgPSB3aWR0aCAqIDI7XG4gICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgIHZhciBzcURpc3Q7XG5cbiAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcgfHwgcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBpZiAoaW5MaW5lVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSkpKSB7XG4gICAgICAgICAgYWRkRWxlKGVkZ2UsIHNxRGlzdCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3NlbGYnIHx8IHJzLmVkZ2VUeXBlID09PSAnY29tcG91bmQnKSB7XG4gICAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSArIDUgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDQpIHtcbiAgICAgICAgaWYgKGluQmV6aWVyVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCBwdHNbaSArIDRdLCBwdHNbaSArIDVdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9RdWFkcmF0aWNCZXppZXIoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCBwdHNbaSArIDRdLCBwdHNbaSArIDVdKSkpIHtcbiAgICAgICAgICBhZGRFbGUoZWRnZSwgc3FEaXN0KTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gaWYgd2UncmUgY2xvc2UgdG8gdGhlIGVkZ2UgYnV0IGRpZG4ndCBoaXQgaXQsIG1heWJlIHdlIGhpdCBpdHMgYXJyb3dzXG5cblxuICAgIHZhciBzcmMgPSBzcmMgfHwgX3Auc291cmNlO1xuICAgIHZhciB0Z3QgPSB0Z3QgfHwgX3AudGFyZ2V0O1xuICAgIHZhciBhclNpemUgPSBzZWxmLmdldEFycm93V2lkdGgoc3R5bGVXaWR0aCwgc2NhbGUpO1xuICAgIHZhciBhcnJvd3MgPSBbe1xuICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICB4OiBycy5hcnJvd1N0YXJ0WCxcbiAgICAgIHk6IHJzLmFycm93U3RhcnRZLFxuICAgICAgYW5nbGU6IHJzLnNyY0Fycm93QW5nbGVcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGFyZ2V0JyxcbiAgICAgIHg6IHJzLmFycm93RW5kWCxcbiAgICAgIHk6IHJzLmFycm93RW5kWSxcbiAgICAgIGFuZ2xlOiBycy50Z3RBcnJvd0FuZ2xlXG4gICAgfSwge1xuICAgICAgbmFtZTogJ21pZC1zb3VyY2UnLFxuICAgICAgeDogcnMubWlkWCxcbiAgICAgIHk6IHJzLm1pZFksXG4gICAgICBhbmdsZTogcnMubWlkc3JjQXJyb3dBbmdsZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaWQtdGFyZ2V0JyxcbiAgICAgIHg6IHJzLm1pZFgsXG4gICAgICB5OiBycy5taWRZLFxuICAgICAgYW5nbGU6IHJzLm1pZHRndEFycm93QW5nbGVcbiAgICB9XTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYXIgPSBhcnJvd3NbaV07XG4gICAgICB2YXIgc2hhcGUgPSByLmFycm93U2hhcGVzW2VkZ2UucHN0eWxlKGFyLm5hbWUgKyAnLWFycm93LXNoYXBlJykudmFsdWVdO1xuICAgICAgdmFyIGVkZ2VXaWR0aCA9IGVkZ2UucHN0eWxlKCd3aWR0aCcpLnBmVmFsdWU7XG5cbiAgICAgIGlmIChzaGFwZS5yb3VnaENvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICB4OiBhci54LFxuICAgICAgICB5OiBhci55XG4gICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpICYmIHNoYXBlLmNvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICB4OiBhci54LFxuICAgICAgICB5OiBhci55XG4gICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpKSB7XG4gICAgICAgIGFkZEVsZShlZGdlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSAvLyBmb3IgY29tcG91bmQgZ3JhcGhzLCBoaXR0aW5nIGVkZ2UgbWF5IGFjdHVhbGx5IHdhbnQgYSBjb25uZWN0ZWQgbm9kZSBpbnN0ZWFkIChiL2MgZWRnZSBtYXkgaGF2ZSBncmVhdGVyIHotaW5kZXggcHJlY2VkZW5jZSlcblxuXG4gICAgaWYgKGhhc0NvbXBvdW5kcyAmJiBuZWFyLmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrTm9kZShzcmMpO1xuICAgICAgY2hlY2tOb2RlKHRndCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJlcHJvcChvYmosIG5hbWUsIHByZSkge1xuICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgbmFtZSwgcHJlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrTGFiZWwoZWxlLCBwcmVmaXgpIHtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIHRoID0gbGFiZWxUaHJlc2hvbGQ7XG4gICAgdmFyIHByZWZpeERhc2g7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwcmVmaXhEYXNoID0gcHJlZml4ICsgJy0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXhEYXNoID0gJyc7XG4gICAgfVxuXG4gICAgZWxlLmJvdW5kaW5nQm94KCk7XG4gICAgdmFyIGJiID0gX3AubGFiZWxCb3VuZHNbcHJlZml4IHx8ICdtYWluJ107XG4gICAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAnbGFiZWwnKS52YWx1ZTtcbiAgICB2YXIgZXZlbnRzRW5hYmxlZCA9IGVsZS5wc3R5bGUoJ3RleHQtZXZlbnRzJykuc3RyVmFsdWUgPT09ICd5ZXMnO1xuXG4gICAgaWYgKCFldmVudHNFbmFibGVkIHx8ICF0ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGx4ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWCcsIHByZWZpeCk7XG4gICAgdmFyIGx5ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgdmFyIHRoZXRhID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpO1xuICAgIHZhciBveCA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICd0ZXh0LW1hcmdpbi14JykucGZWYWx1ZTtcbiAgICB2YXIgb3kgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgdmFyIGx4MSA9IGJiLngxIC0gdGggLSBveDsgLy8gKC1veCwgLW95KSBhcyBiYiBhbHJlYWR5IGluY2x1ZGVzIG1hcmdpblxuXG4gICAgdmFyIGx4MiA9IGJiLngyICsgdGggLSBveDsgLy8gYW5kIHJvdGF0aW9uIGlzIGFib3V0IChseCwgbHkpXG5cbiAgICB2YXIgbHkxID0gYmIueTEgLSB0aCAtIG95O1xuICAgIHZhciBseTIgPSBiYi55MiArIHRoIC0gb3k7XG5cbiAgICBpZiAodGhldGEpIHtcbiAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICB2YXIgc2luID0gTWF0aC5zaW4odGhldGEpO1xuXG4gICAgICB2YXIgcm90YXRlID0gZnVuY3Rpb24gcm90YXRlKHgsIHkpIHtcbiAgICAgICAgeCA9IHggLSBseDtcbiAgICAgICAgeSA9IHkgLSBseTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB4ICogY29zIC0geSAqIHNpbiArIGx4LFxuICAgICAgICAgIHk6IHggKiBzaW4gKyB5ICogY29zICsgbHlcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBweDF5MSA9IHJvdGF0ZShseDEsIGx5MSk7XG4gICAgICB2YXIgcHgxeTIgPSByb3RhdGUobHgxLCBseTIpO1xuICAgICAgdmFyIHB4MnkxID0gcm90YXRlKGx4MiwgbHkxKTtcbiAgICAgIHZhciBweDJ5MiA9IHJvdGF0ZShseDIsIGx5Mik7XG4gICAgICB2YXIgcG9pbnRzID0gWy8vIHdpdGggdGhlIG1hcmdpbiBhZGRlZCBhZnRlciB0aGUgcm90YXRpb24gaXMgYXBwbGllZFxuICAgICAgcHgxeTEueCArIG94LCBweDF5MS55ICsgb3ksIHB4MnkxLnggKyBveCwgcHgyeTEueSArIG95LCBweDJ5Mi54ICsgb3gsIHB4MnkyLnkgKyBveSwgcHgxeTIueCArIG94LCBweDF5Mi55ICsgb3ldO1xuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHBvaW50cykpIHtcbiAgICAgICAgYWRkRWxlKGVsZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkbyBhIGNoZWFwZXIgYmIgY2hlY2tcbiAgICAgIGlmIChpbkJvdW5kaW5nQm94KGJiLCB4LCB5KSkge1xuICAgICAgICBhZGRFbGUoZWxlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IGVsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyByZXZlcnNlIG9yZGVyIGZvciBwcmVjZWRlbmNlXG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBjaGVja05vZGUoZWxlKSB8fCBjaGVja0xhYmVsKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZW4gZWRnZVxuICAgICAgY2hlY2tFZGdlKGVsZSkgfHwgY2hlY2tMYWJlbChlbGUpIHx8IGNoZWNrTGFiZWwoZWxlLCAnc291cmNlJykgfHwgY2hlY2tMYWJlbChlbGUsICd0YXJnZXQnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVhcjtcbn07IC8vICdHaXZlIG1lIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIGJveCdcblxuXG5CUnAkMS5nZXRBbGxJbkJveCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICB2YXIgZWxlcyA9IHRoaXMuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMoKS5pbnRlcmFjdGl2ZTtcbiAgdmFyIGJveCA9IFtdO1xuICB2YXIgeDFjID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgdmFyIHgyYyA9IE1hdGgubWF4KHgxLCB4Mik7XG4gIHZhciB5MWMgPSBNYXRoLm1pbih5MSwgeTIpO1xuICB2YXIgeTJjID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgeDEgPSB4MWM7XG4gIHgyID0geDJjO1xuICB5MSA9IHkxYztcbiAgeTIgPSB5MmM7XG4gIHZhciBib3hCYiA9IG1ha2VCb3VuZGluZ0JveCh7XG4gICAgeDE6IHgxLFxuICAgIHkxOiB5MSxcbiAgICB4MjogeDIsXG4gICAgeTI6IHkyXG4gIH0pO1xuXG4gIGZvciAodmFyIGUgPSAwOyBlIDwgZWxlcy5sZW5ndGg7IGUrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2VdO1xuXG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgdmFyIG5vZGUgPSBlbGU7XG4gICAgICB2YXIgbm9kZUJiID0gbm9kZS5ib3VuZGluZ0JveCh7XG4gICAgICAgIGluY2x1ZGVOb2RlczogdHJ1ZSxcbiAgICAgICAgaW5jbHVkZUVkZ2VzOiBmYWxzZSxcbiAgICAgICAgaW5jbHVkZUxhYmVsczogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChib3hCYiwgbm9kZUJiKSAmJiAhYm91bmRpbmdCb3hJbkJvdW5kaW5nQm94KG5vZGVCYiwgYm94QmIpKSB7XG4gICAgICAgIGJveC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWRnZSA9IGVsZTtcbiAgICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgICB2YXIgcnMgPSBfcC5yc2NyYXRjaDtcblxuICAgICAgaWYgKHJzLnN0YXJ0WCAhPSBudWxsICYmIHJzLnN0YXJ0WSAhPSBudWxsICYmICFpbkJvdW5kaW5nQm94KGJveEJiLCBycy5zdGFydFgsIHJzLnN0YXJ0WSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChycy5lbmRYICE9IG51bGwgJiYgcnMuZW5kWSAhPSBudWxsICYmICFpbkJvdW5kaW5nQm94KGJveEJiLCBycy5lbmRYLCBycy5lbmRZKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3NlbGYnIHx8IHJzLmVkZ2VUeXBlID09PSAnY29tcG91bmQnIHx8IHJzLmVkZ2VUeXBlID09PSAnc2VnbWVudHMnIHx8IHJzLmVkZ2VUeXBlID09PSAnaGF5c3RhY2snKSB7XG4gICAgICAgIHZhciBwdHMgPSBfcC5yc3R5bGUuYmV6aWVyUHRzIHx8IF9wLnJzdHlsZS5saW5lUHRzIHx8IF9wLnJzdHlsZS5oYXlzdGFja1B0cztcbiAgICAgICAgdmFyIGFsbEluc2lkZSA9IHRydWU7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoIXBvaW50SW5Cb3VuZGluZ0JveChib3hCYiwgcHRzW2ldKSkge1xuICAgICAgICAgICAgYWxsSW5zaWRlID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsSW5zaWRlKSB7XG4gICAgICAgICAgYm94LnB1c2goZWRnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcpIHtcbiAgICAgICAgYm94LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJveDtcbn07XG5cbnZhciBCUnAkMiA9IHt9O1xuXG5CUnAkMi5jYWxjdWxhdGVBcnJvd0FuZ2xlcyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBpc0hheXN0YWNrID0gcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjayc7XG4gIHZhciBpc0JlemllciA9IHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJztcbiAgdmFyIGlzTXVsdGliZXppZXIgPSBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJztcbiAgdmFyIGlzU2VnbWVudHMgPSBycy5lZGdlVHlwZSA9PT0gJ3NlZ21lbnRzJztcbiAgdmFyIGlzQ29tcG91bmQgPSBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJztcbiAgdmFyIGlzU2VsZiA9IHJzLmVkZ2VUeXBlID09PSAnc2VsZic7IC8vIERpc3BsYWNlbWVudCBnaXZlcyBkaXJlY3Rpb24gZm9yIGFycm93aGVhZCBvcmllbnRhdGlvblxuXG4gIHZhciBkaXNwWCwgZGlzcFk7XG4gIHZhciBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgbWlkWCwgbWlkWTtcblxuICBpZiAoaXNIYXlzdGFjaykge1xuICAgIHN0YXJ0WCA9IHJzLmhheXN0YWNrUHRzWzBdO1xuICAgIHN0YXJ0WSA9IHJzLmhheXN0YWNrUHRzWzFdO1xuICAgIGVuZFggPSBycy5oYXlzdGFja1B0c1syXTtcbiAgICBlbmRZID0gcnMuaGF5c3RhY2tQdHNbM107XG4gIH0gZWxzZSB7XG4gICAgc3RhcnRYID0gcnMuYXJyb3dTdGFydFg7XG4gICAgc3RhcnRZID0gcnMuYXJyb3dTdGFydFk7XG4gICAgZW5kWCA9IHJzLmFycm93RW5kWDtcbiAgICBlbmRZID0gcnMuYXJyb3dFbmRZO1xuICB9XG5cbiAgbWlkWCA9IHJzLm1pZFg7XG4gIG1pZFkgPSBycy5taWRZOyAvLyBzb3VyY2VcbiAgLy9cblxuICBpZiAoaXNTZWdtZW50cykge1xuICAgIGRpc3BYID0gc3RhcnRYIC0gcnMuc2VncHRzWzBdO1xuICAgIGRpc3BZID0gc3RhcnRZIC0gcnMuc2VncHRzWzFdO1xuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBiWCA9IHFiZXppZXJBdChwdHNbMF0sIHB0c1syXSwgcHRzWzRdLCAwLjEpO1xuICAgIHZhciBiWSA9IHFiZXppZXJBdChwdHNbMV0sIHB0c1szXSwgcHRzWzVdLCAwLjEpO1xuICAgIGRpc3BYID0gc3RhcnRYIC0gYlg7XG4gICAgZGlzcFkgPSBzdGFydFkgLSBiWTtcbiAgfSBlbHNlIHtcbiAgICBkaXNwWCA9IHN0YXJ0WCAtIG1pZFg7XG4gICAgZGlzcFkgPSBzdGFydFkgLSBtaWRZO1xuICB9XG5cbiAgcnMuc3JjQXJyb3dBbmdsZSA9IGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKTsgLy8gbWlkIHRhcmdldFxuICAvL1xuXG4gIHZhciBtaWRYID0gcnMubWlkWDtcbiAgdmFyIG1pZFkgPSBycy5taWRZO1xuXG4gIGlmIChpc0hheXN0YWNrKSB7XG4gICAgbWlkWCA9IChzdGFydFggKyBlbmRYKSAvIDI7XG4gICAgbWlkWSA9IChzdGFydFkgKyBlbmRZKSAvIDI7XG4gIH1cblxuICBkaXNwWCA9IGVuZFggLSBzdGFydFg7XG4gIGRpc3BZID0gZW5kWSAtIHN0YXJ0WTtcblxuICBpZiAoaXNTZWdtZW50cykge1xuICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICBpZiAocHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICB2YXIgaTIgPSBwdHMubGVuZ3RoIC8gMjtcbiAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgIGRpc3BYID0gcHRzW2kyXSAtIHB0c1tpMV07XG4gICAgICBkaXNwWSA9IHB0c1tpMiArIDFdIC0gcHRzW2kxICsgMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpMiA9IHB0cy5sZW5ndGggLyAyIC0gMTtcbiAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgIHZhciBpMyA9IGkyICsgMjtcbiAgICAgIGRpc3BYID0gcHRzW2kyXSAtIHB0c1tpMV07XG4gICAgICBkaXNwWSA9IHB0c1tpMiArIDFdIC0gcHRzW2kxICsgMV07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBjcHRzID0gcnMuY3RybHB0cztcbiAgICB2YXIgYnAweCwgYnAweTtcbiAgICB2YXIgYnAxeCwgYnAxeTtcblxuICAgIGlmIChjcHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICB2YXIgcDAgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIHN0YXJ0cHRcblxuICAgICAgdmFyIGljID0gcDAgKyAyO1xuICAgICAgdmFyIHAxID0gaWMgKyAyO1xuICAgICAgYnAweCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjApO1xuICAgICAgYnAweSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjApO1xuICAgICAgYnAxeCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjAwMDEpO1xuICAgICAgYnAxeSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjAwMDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaWMgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIGN0cnB0XG5cbiAgICAgIHZhciBwMCA9IGljIC0gMjsgLy8gc3RhcnRwdFxuXG4gICAgICB2YXIgcDEgPSBpYyArIDI7IC8vIGVuZHB0XG5cbiAgICAgIGJwMHggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC40OTk5KTtcbiAgICAgIGJwMHkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC40OTk5KTtcbiAgICAgIGJwMXggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC41KTtcbiAgICAgIGJwMXkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC41KTtcbiAgICB9XG5cbiAgICBkaXNwWCA9IGJwMXggLSBicDB4O1xuICAgIGRpc3BZID0gYnAxeSAtIGJwMHk7XG4gIH1cblxuICBycy5taWR0Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xuICBycy5taWREaXNwWCA9IGRpc3BYO1xuICBycy5taWREaXNwWSA9IGRpc3BZOyAvLyBtaWQgc291cmNlXG4gIC8vXG5cbiAgZGlzcFggKj0gLTE7XG4gIGRpc3BZICo9IC0xO1xuXG4gIGlmIChpc1NlZ21lbnRzKSB7XG4gICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcblxuICAgIGlmIChwdHMubGVuZ3RoIC8gMiAlIDIgPT09IDApIDsgZWxzZSB7XG4gICAgICB2YXIgaTIgPSBwdHMubGVuZ3RoIC8gMiAtIDE7XG4gICAgICB2YXIgaTMgPSBpMiArIDI7XG4gICAgICBkaXNwWCA9IC0ocHRzW2kzXSAtIHB0c1tpMl0pO1xuICAgICAgZGlzcFkgPSAtKHB0c1tpMyArIDFdIC0gcHRzW2kyICsgMV0pO1xuICAgIH1cbiAgfVxuXG4gIHJzLm1pZHNyY0Fycm93QW5nbGUgPSBnZXRBbmdsZUZyb21EaXNwKGRpc3BYLCBkaXNwWSk7IC8vIHRhcmdldFxuICAvL1xuXG4gIGlmIChpc1NlZ21lbnRzKSB7XG4gICAgZGlzcFggPSBlbmRYIC0gcnMuc2VncHRzW3JzLnNlZ3B0cy5sZW5ndGggLSAyXTtcbiAgICBkaXNwWSA9IGVuZFkgLSBycy5zZWdwdHNbcnMuc2VncHRzLmxlbmd0aCAtIDFdO1xuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBsID0gcHRzLmxlbmd0aDtcbiAgICB2YXIgYlggPSBxYmV6aWVyQXQocHRzW2wgLSA2XSwgcHRzW2wgLSA0XSwgcHRzW2wgLSAyXSwgMC45KTtcbiAgICB2YXIgYlkgPSBxYmV6aWVyQXQocHRzW2wgLSA1XSwgcHRzW2wgLSAzXSwgcHRzW2wgLSAxXSwgMC45KTtcbiAgICBkaXNwWCA9IGVuZFggLSBiWDtcbiAgICBkaXNwWSA9IGVuZFkgLSBiWTtcbiAgfSBlbHNlIHtcbiAgICBkaXNwWCA9IGVuZFggLSBtaWRYO1xuICAgIGRpc3BZID0gZW5kWSAtIG1pZFk7XG4gIH1cblxuICBycy50Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xufTtcblxuQlJwJDIuZ2V0QXJyb3dXaWR0aCA9IEJScCQyLmdldEFycm93SGVpZ2h0ID0gZnVuY3Rpb24gKGVkZ2VXaWR0aCwgc2NhbGUpIHtcbiAgdmFyIGNhY2hlID0gdGhpcy5hcnJvd1dpZHRoQ2FjaGUgPSB0aGlzLmFycm93V2lkdGhDYWNoZSB8fCB7fTtcbiAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV07XG5cbiAgaWYgKGNhY2hlZFZhbCkge1xuICAgIHJldHVybiBjYWNoZWRWYWw7XG4gIH1cblxuICBjYWNoZWRWYWwgPSBNYXRoLm1heChNYXRoLnBvdyhlZGdlV2lkdGggKiAxMy4zNywgMC45KSwgMjkpICogc2NhbGU7XG4gIGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV0gPSBjYWNoZWRWYWw7XG4gIHJldHVybiBjYWNoZWRWYWw7XG59O1xuXG52YXIgQlJwJDMgPSB7fTtcblxuQlJwJDMuZmluZEhheXN0YWNrUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2VzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG5cbiAgICBpZiAoIXJzLmhheXN0YWNrKSB7XG4gICAgICB2YXIgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICBycy5zb3VyY2UgPSB7XG4gICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICB9O1xuICAgICAgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICBycy50YXJnZXQgPSB7XG4gICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICB2YXIgc3JjUG9zID0gc3JjLnBvc2l0aW9uKCk7XG4gICAgdmFyIHRndFBvcyA9IHRndC5wb3NpdGlvbigpO1xuICAgIHZhciBzcmNXID0gc3JjLndpZHRoKCk7XG4gICAgdmFyIHRndFcgPSB0Z3Qud2lkdGgoKTtcbiAgICB2YXIgc3JjSCA9IHNyYy5oZWlnaHQoKTtcbiAgICB2YXIgdGd0SCA9IHRndC5oZWlnaHQoKTtcbiAgICB2YXIgcmFkaXVzID0gZWRnZS5wc3R5bGUoJ2hheXN0YWNrLXJhZGl1cycpLnZhbHVlO1xuICAgIHZhciBoYWxmUmFkaXVzID0gcmFkaXVzIC8gMjsgLy8gYi9jIGhhdmUgdG8gaGFsZiB3aWR0aC9oZWlnaHRcblxuICAgIHJzLmhheXN0YWNrUHRzID0gcnMuYWxscHRzID0gW3JzLnNvdXJjZS54ICogc3JjVyAqIGhhbGZSYWRpdXMgKyBzcmNQb3MueCwgcnMuc291cmNlLnkgKiBzcmNIICogaGFsZlJhZGl1cyArIHNyY1Bvcy55LCBycy50YXJnZXQueCAqIHRndFcgKiBoYWxmUmFkaXVzICsgdGd0UG9zLngsIHJzLnRhcmdldC55ICogdGd0SCAqIGhhbGZSYWRpdXMgKyB0Z3RQb3MueV07XG4gICAgcnMubWlkWCA9IChycy5hbGxwdHNbMF0gKyBycy5hbGxwdHNbMl0pIC8gMjtcbiAgICBycy5taWRZID0gKHJzLmFsbHB0c1sxXSArIHJzLmFsbHB0c1szXSkgLyAyOyAvLyBhbHdheXMgb3ZlcnJpZGUgYXMgaGF5c3RhY2sgaW4gY2FzZSBzZXQgdG8gZGlmZmVyZW50IHR5cGUgcHJldmlvdXNseVxuXG4gICAgcnMuZWRnZVR5cGUgPSAnaGF5c3RhY2snO1xuICAgIHJzLmhheXN0YWNrID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKGVkZ2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlQXJyb3dBbmdsZXMoZWRnZSk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKGVkZ2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoZWRnZSk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRTZWdtZW50c1BvaW50cyA9IGZ1bmN0aW9uIChlZGdlLCBwYWlySW5mbykge1xuICAvLyBTZWdtZW50cyAobXVsdGlwbGUgc3RyYWlnaHQgbGluZXMpXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMsXG4gICAgICB2ZWN0b3JOb3JtSW52ZXJzZSA9IHBhaXJJbmZvLnZlY3Rvck5vcm1JbnZlcnNlO1xuICB2YXIgZWRnZURpc3RhbmNlcyA9IGVkZ2UucHN0eWxlKCdlZGdlLWRpc3RhbmNlcycpLnZhbHVlO1xuICB2YXIgc2VnbWVudFdzID0gZWRnZS5wc3R5bGUoJ3NlZ21lbnQtd2VpZ2h0cycpO1xuICB2YXIgc2VnbWVudERzID0gZWRnZS5wc3R5bGUoJ3NlZ21lbnQtZGlzdGFuY2VzJyk7XG4gIHZhciBzZWdtZW50c04gPSBNYXRoLm1pbihzZWdtZW50V3MucGZWYWx1ZS5sZW5ndGgsIHNlZ21lbnREcy5wZlZhbHVlLmxlbmd0aCk7XG4gIHJzLmVkZ2VUeXBlID0gJ3NlZ21lbnRzJztcbiAgcnMuc2VncHRzID0gW107XG5cbiAgZm9yICh2YXIgcyA9IDA7IHMgPCBzZWdtZW50c047IHMrKykge1xuICAgIHZhciB3ID0gc2VnbWVudFdzLnBmVmFsdWVbc107XG4gICAgdmFyIGQgPSBzZWdtZW50RHMucGZWYWx1ZVtzXTtcbiAgICB2YXIgdzEgPSAxIC0gdztcbiAgICB2YXIgdzIgPSB3O1xuICAgIHZhciBtaWRwdFB0cyA9IGVkZ2VEaXN0YW5jZXMgPT09ICdub2RlLXBvc2l0aW9uJyA/IHBvc1B0cyA6IGludGVyc2VjdGlvblB0cztcbiAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgIHg6IG1pZHB0UHRzLngxICogdzEgKyBtaWRwdFB0cy54MiAqIHcyLFxuICAgICAgeTogbWlkcHRQdHMueTEgKiB3MSArIG1pZHB0UHRzLnkyICogdzJcbiAgICB9O1xuICAgIHJzLnNlZ3B0cy5wdXNoKGFkanVzdGVkTWlkcHQueCArIHZlY3Rvck5vcm1JbnZlcnNlLnggKiBkLCBhZGp1c3RlZE1pZHB0LnkgKyB2ZWN0b3JOb3JtSW52ZXJzZS55ICogZCk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRMb29wUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UsIHBhaXJJbmZvLCBpLCBlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgLy8gU2VsZi1lZGdlXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBkaXJDb3VudHMgPSBwYWlySW5mby5kaXJDb3VudHMsXG4gICAgICBzcmNQb3MgPSBwYWlySW5mby5zcmNQb3M7XG4gIHZhciBjdHJscHREaXN0cyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LWRpc3RhbmNlcycpO1xuICB2YXIgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVswXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGxvb3BEaXIgPSBlZGdlLnBzdHlsZSgnbG9vcC1kaXJlY3Rpb24nKS5wZlZhbHVlO1xuICB2YXIgbG9vcFN3cCA9IGVkZ2UucHN0eWxlKCdsb29wLXN3ZWVwJykucGZWYWx1ZTtcbiAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgcnMuZWRnZVR5cGUgPSAnc2VsZic7XG4gIHZhciBqID0gaTtcbiAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgaWYgKGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIGogPSAwO1xuICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgfVxuXG4gIHZhciBsb29wQW5nbGUgPSBsb29wRGlyIC0gTWF0aC5QSSAvIDI7XG4gIHZhciBvdXRBbmdsZSA9IGxvb3BBbmdsZSAtIGxvb3BTd3AgLyAyO1xuICB2YXIgaW5BbmdsZSA9IGxvb3BBbmdsZSArIGxvb3BTd3AgLyAyOyAvLyBpbmNyZWFzZSBieSBzdGVwIHNpemUgZm9yIG92ZXJsYXBwaW5nIGxvb3BzLCBrZXllZCBvbiBkaXJlY3Rpb24gYW5kIHN3ZWVwIHZhbHVlc1xuXG4gIHZhciBkYyA9IFN0cmluZyhsb29wRGlyICsgJ18nICsgbG9vcFN3cCk7XG4gIGogPSBkaXJDb3VudHNbZGNdID09PSB1bmRlZmluZWQgPyBkaXJDb3VudHNbZGNdID0gMCA6ICsrZGlyQ291bnRzW2RjXTtcbiAgcnMuY3RybHB0cyA9IFtzcmNQb3MueCArIE1hdGguY29zKG91dEFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy55ICsgTWF0aC5zaW4ob3V0QW5nbGUpICogMS40ICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSwgc3JjUG9zLnggKyBNYXRoLmNvcyhpbkFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy55ICsgTWF0aC5zaW4oaW5BbmdsZSkgKiAxLjQgKiBsb29wRGlzdCAqIChqIC8gMyArIDEpXTtcbn07XG5cbkJScCQzLmZpbmRDb21wb3VuZExvb3BQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCkge1xuICAvLyBDb21wb3VuZCBlZGdlXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHJzLmVkZ2VUeXBlID0gJ2NvbXBvdW5kJztcbiAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyxcbiAgICAgIHRndFBvcyA9IHBhaXJJbmZvLnRndFBvcyxcbiAgICAgIHNyY1cgPSBwYWlySW5mby5zcmNXLFxuICAgICAgc3JjSCA9IHBhaXJJbmZvLnNyY0gsXG4gICAgICB0Z3RXID0gcGFpckluZm8udGd0VyxcbiAgICAgIHRndEggPSBwYWlySW5mby50Z3RIO1xuICB2YXIgc3RlcFNpemUgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1zdGVwLXNpemUnKS5wZlZhbHVlO1xuICB2YXIgY3RybHB0RGlzdHMgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnKTtcbiAgdmFyIGN0cmxwdERpc3QgPSBjdHJscHREaXN0cyA/IGN0cmxwdERpc3RzLnBmVmFsdWVbMF0gOiB1bmRlZmluZWQ7XG4gIHZhciBqID0gaTtcbiAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgaWYgKGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIGogPSAwO1xuICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgfVxuXG4gIHZhciBsb29wVyA9IDUwO1xuICB2YXIgbG9vcGFQb3MgPSB7XG4gICAgeDogc3JjUG9zLnggLSBzcmNXIC8gMixcbiAgICB5OiBzcmNQb3MueSAtIHNyY0ggLyAyXG4gIH07XG4gIHZhciBsb29wYlBvcyA9IHtcbiAgICB4OiB0Z3RQb3MueCAtIHRndFcgLyAyLFxuICAgIHk6IHRndFBvcy55IC0gdGd0SCAvIDJcbiAgfTtcbiAgdmFyIGxvb3BQb3MgPSB7XG4gICAgeDogTWF0aC5taW4obG9vcGFQb3MueCwgbG9vcGJQb3MueCksXG4gICAgeTogTWF0aC5taW4obG9vcGFQb3MueSwgbG9vcGJQb3MueSlcbiAgfTsgLy8gYXZvaWRzIGNhc2VzIHdpdGggaW1wb3NzaWJsZSBiZXppZXJzXG5cbiAgdmFyIG1pbkNvbXBvdW5kU3RyZXRjaCA9IDAuNTtcbiAgdmFyIGNvbXBvdW5kU3RyZXRjaEEgPSBNYXRoLm1heChtaW5Db21wb3VuZFN0cmV0Y2gsIE1hdGgubG9nKHNyY1cgKiAwLjAxKSk7XG4gIHZhciBjb21wb3VuZFN0cmV0Y2hCID0gTWF0aC5tYXgobWluQ29tcG91bmRTdHJldGNoLCBNYXRoLmxvZyh0Z3RXICogMC4wMSkpO1xuICBycy5jdHJscHRzID0gW2xvb3BQb3MueCwgbG9vcFBvcy55IC0gKDEgKyBNYXRoLnBvdyhsb29wVywgMS4xMikgLyAxMDApICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSAqIGNvbXBvdW5kU3RyZXRjaEEsIGxvb3BQb3MueCAtICgxICsgTWF0aC5wb3cobG9vcFcsIDEuMTIpIC8gMTAwKSAqIGxvb3BEaXN0ICogKGogLyAzICsgMSkgKiBjb21wb3VuZFN0cmV0Y2hCLCBsb29wUG9zLnldO1xufTtcblxuQlJwJDMuZmluZFN0cmFpZ2h0RWRnZVBvaW50cyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIC8vIFN0cmFpZ2h0IGVkZ2Ugd2l0aGluIGJ1bmRsZVxuICBlZGdlLl9wcml2YXRlLnJzY3JhdGNoLmVkZ2VUeXBlID0gJ3N0cmFpZ2h0Jztcbn07XG5cbkJScCQzLmZpbmRCZXppZXJQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCwgZWRnZUlzU3dhcHBlZCkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgdmVjdG9yTm9ybUludmVyc2UgPSBwYWlySW5mby52ZWN0b3JOb3JtSW52ZXJzZSxcbiAgICAgIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyxcbiAgICAgIGludGVyc2VjdGlvblB0cyA9IHBhaXJJbmZvLmludGVyc2VjdGlvblB0cztcbiAgdmFyIGVkZ2VEaXN0YW5jZXMgPSBlZGdlLnBzdHlsZSgnZWRnZS1kaXN0YW5jZXMnKS52YWx1ZTtcbiAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgdmFyIGN0cmxwdERpc3RzID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtZGlzdGFuY2VzJyk7XG4gIHZhciBjdHJscHRXcyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LXdlaWdodHMnKTtcbiAgdmFyIGJlemllck4gPSBjdHJscHREaXN0cyAmJiBjdHJscHRXcyA/IE1hdGgubWluKGN0cmxwdERpc3RzLnZhbHVlLmxlbmd0aCwgY3RybHB0V3MudmFsdWUubGVuZ3RoKSA6IDE7XG4gIHZhciBjdHJscHREaXN0ID0gY3RybHB0RGlzdHMgPyBjdHJscHREaXN0cy5wZlZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICB2YXIgY3RybHB0V2VpZ2h0ID0gY3RybHB0V3MudmFsdWVbMF07IC8vIChNdWx0aSliZXppZXJcblxuICB2YXIgbXVsdGkgPSBlZGdlSXNVbmJ1bmRsZWQ7XG4gIHJzLmVkZ2VUeXBlID0gbXVsdGkgPyAnbXVsdGliZXppZXInIDogJ2Jlemllcic7XG4gIHJzLmN0cmxwdHMgPSBbXTtcblxuICBmb3IgKHZhciBiID0gMDsgYiA8IGJlemllck47IGIrKykge1xuICAgIHZhciBub3JtY3RybHB0RGlzdCA9ICgwLjUgLSBwYWlySW5mby5lbGVzLmxlbmd0aCAvIDIgKyBpKSAqIHN0ZXBTaXplICogKGVkZ2VJc1N3YXBwZWQgPyAtMSA6IDEpO1xuICAgIHZhciBtYW5jdHJscHREaXN0ID0gdm9pZCAwO1xuICAgIHZhciBzaWduID0gc2lnbnVtKG5vcm1jdHJscHREaXN0KTtcblxuICAgIGlmIChtdWx0aSkge1xuICAgICAgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVtiXSA6IHN0ZXBTaXplOyAvLyBmYWxsIGJhY2sgb24gc3RlcCBzaXplXG5cbiAgICAgIGN0cmxwdFdlaWdodCA9IGN0cmxwdFdzLnZhbHVlW2JdO1xuICAgIH1cblxuICAgIGlmIChlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgICAgIC8vIG11bHRpIG9yIHNpbmdsZSB1bmJ1bmRsZWRcbiAgICAgIG1hbmN0cmxwdERpc3QgPSBjdHJscHREaXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBtYW5jdHJscHREaXN0ID0gY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gc2lnbiAqIGN0cmxwdERpc3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIGRpc3RhbmNlRnJvbU1pZHBvaW50ID0gbWFuY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gbWFuY3RybHB0RGlzdCA6IG5vcm1jdHJscHREaXN0O1xuICAgIHZhciB3MSA9IDEgLSBjdHJscHRXZWlnaHQ7XG4gICAgdmFyIHcyID0gY3RybHB0V2VpZ2h0O1xuICAgIHZhciBtaWRwdFB0cyA9IGVkZ2VEaXN0YW5jZXMgPT09ICdub2RlLXBvc2l0aW9uJyA/IHBvc1B0cyA6IGludGVyc2VjdGlvblB0cztcbiAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgIHg6IG1pZHB0UHRzLngxICogdzEgKyBtaWRwdFB0cy54MiAqIHcyLFxuICAgICAgeTogbWlkcHRQdHMueTEgKiB3MSArIG1pZHB0UHRzLnkyICogdzJcbiAgICB9O1xuICAgIHJzLmN0cmxwdHMucHVzaChhZGp1c3RlZE1pZHB0LnggKyB2ZWN0b3JOb3JtSW52ZXJzZS54ICogZGlzdGFuY2VGcm9tTWlkcG9pbnQsIGFkanVzdGVkTWlkcHQueSArIHZlY3Rvck5vcm1JbnZlcnNlLnkgKiBkaXN0YW5jZUZyb21NaWRwb2ludCk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRUYXhpUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UsIHBhaXJJbmZvKSB7XG4gIC8vIFRheGljYWIgZ2VvbWV0cnkgd2l0aCB0d28gdHVybnMgbWF4aW11bVxuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICBycy5lZGdlVHlwZSA9ICdzZWdtZW50cyc7XG4gIHZhciBWRVJUSUNBTCA9ICd2ZXJ0aWNhbCc7XG4gIHZhciBIT1JJWk9OVEFMID0gJ2hvcml6b250YWwnO1xuICB2YXIgTEVGVFdBUkQgPSAnbGVmdHdhcmQnO1xuICB2YXIgUklHSFRXQVJEID0gJ3JpZ2h0d2FyZCc7XG4gIHZhciBET1dOV0FSRCA9ICdkb3dud2FyZCc7XG4gIHZhciBVUFdBUkQgPSAndXB3YXJkJztcbiAgdmFyIEFVVE8gPSAnYXV0byc7XG4gIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgIHNyY0ggPSBwYWlySW5mby5zcmNILFxuICAgICAgdGd0VyA9IHBhaXJJbmZvLnRndFcsXG4gICAgICB0Z3RIID0gcGFpckluZm8udGd0SDtcbiAgdmFyIGVkZ2VEaXN0YW5jZXMgPSBlZGdlLnBzdHlsZSgnZWRnZS1kaXN0YW5jZXMnKS52YWx1ZTtcbiAgdmFyIGRJbmNsdWRlc05vZGVCb2R5ID0gZWRnZURpc3RhbmNlcyAhPT0gJ25vZGUtcG9zaXRpb24nO1xuICB2YXIgdGF4aURpciA9IGVkZ2UucHN0eWxlKCd0YXhpLWRpcmVjdGlvbicpLnZhbHVlO1xuICB2YXIgcmF3VGF4aURpciA9IHRheGlEaXI7IC8vIHVucHJvY2Vzc2VkIHZhbHVlXG5cbiAgdmFyIHRheGlUdXJuID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybicpO1xuICB2YXIgdHVybklzUGVyY2VudCA9IHRheGlUdXJuLnVuaXRzID09PSAnJSc7XG4gIHZhciB0YXhpVHVyblBmVmFsID0gdGF4aVR1cm4ucGZWYWx1ZTtcbiAgdmFyIHR1cm5Jc05lZ2F0aXZlID0gdGF4aVR1cm5QZlZhbCA8IDA7IC8vIGkuZS4gZnJvbSB0YXJnZXQgc2lkZVxuXG4gIHZhciBtaW5EID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybi1taW4tZGlzdGFuY2UnKS5wZlZhbHVlO1xuICB2YXIgZHcgPSBkSW5jbHVkZXNOb2RlQm9keSA/IChzcmNXICsgdGd0VykgLyAyIDogMDtcbiAgdmFyIGRoID0gZEluY2x1ZGVzTm9kZUJvZHkgPyAoc3JjSCArIHRndEgpIC8gMiA6IDA7XG4gIHZhciBwZHggPSBwb3NQdHMueDIgLSBwb3NQdHMueDE7XG4gIHZhciBwZHkgPSBwb3NQdHMueTIgLSBwb3NQdHMueTE7IC8vIHRha2UgYXdheSB0aGUgZWZmZWN0aXZlIHcvaCBmcm9tIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGRlbHRhIHZhbHVlXG5cbiAgdmFyIHN1YkRXSCA9IGZ1bmN0aW9uIHN1YkRXSChkeHksIGR3aCkge1xuICAgIGlmIChkeHkgPiAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoZHh5IC0gZHdoLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE1hdGgubWluKGR4eSArIGR3aCwgMCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBkeCA9IHN1YkRXSChwZHgsIGR3KTtcbiAgdmFyIGR5ID0gc3ViRFdIKHBkeSwgZGgpO1xuICB2YXIgaXNFeHBsaWNpdERpciA9IGZhbHNlO1xuXG4gIGlmIChyYXdUYXhpRGlyID09PSBBVVRPKSB7XG4gICAgdGF4aURpciA9IE1hdGguYWJzKGR4KSA+IE1hdGguYWJzKGR5KSA/IEhPUklaT05UQUwgOiBWRVJUSUNBTDtcbiAgfSBlbHNlIGlmIChyYXdUYXhpRGlyID09PSBVUFdBUkQgfHwgcmF3VGF4aURpciA9PT0gRE9XTldBUkQpIHtcbiAgICB0YXhpRGlyID0gVkVSVElDQUw7XG4gICAgaXNFeHBsaWNpdERpciA9IHRydWU7XG4gIH0gZWxzZSBpZiAocmF3VGF4aURpciA9PT0gTEVGVFdBUkQgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEKSB7XG4gICAgdGF4aURpciA9IEhPUklaT05UQUw7XG4gICAgaXNFeHBsaWNpdERpciA9IHRydWU7XG4gIH1cblxuICB2YXIgaXNWZXJ0ID0gdGF4aURpciA9PT0gVkVSVElDQUw7XG4gIHZhciBsID0gaXNWZXJ0ID8gZHkgOiBkeDtcbiAgdmFyIHBsID0gaXNWZXJ0ID8gcGR5IDogcGR4O1xuICB2YXIgc2duTCA9IHNpZ251bShwbCk7XG4gIHZhciBmb3JjZWREaXIgPSBmYWxzZTtcblxuICBpZiAoIShpc0V4cGxpY2l0RGlyICYmICh0dXJuSXNQZXJjZW50IHx8IHR1cm5Jc05lZ2F0aXZlKSkgLy8gZm9yY2luZyBpbiB0aGlzIGNhc2Ugd291bGQgY2F1c2Ugd2VpcmQgZ3Jvd2luZyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uXG4gICYmIChyYXdUYXhpRGlyID09PSBET1dOV0FSRCAmJiBwbCA8IDAgfHwgcmF3VGF4aURpciA9PT0gVVBXQVJEICYmIHBsID4gMCB8fCByYXdUYXhpRGlyID09PSBMRUZUV0FSRCAmJiBwbCA+IDAgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEICYmIHBsIDwgMCkpIHtcbiAgICBzZ25MICo9IC0xO1xuICAgIGwgPSBzZ25MICogTWF0aC5hYnMobCk7XG4gICAgZm9yY2VkRGlyID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBkO1xuXG4gIGlmICh0dXJuSXNQZXJjZW50KSB7XG4gICAgdmFyIHAgPSB0YXhpVHVyblBmVmFsIDwgMCA/IDEgKyB0YXhpVHVyblBmVmFsIDogdGF4aVR1cm5QZlZhbDtcbiAgICBkID0gcCAqIGw7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGsgPSB0YXhpVHVyblBmVmFsIDwgMCA/IGwgOiAwO1xuICAgIGQgPSBrICsgdGF4aVR1cm5QZlZhbCAqIHNnbkw7XG4gIH1cblxuICB2YXIgZ2V0SXNUb29DbG9zZSA9IGZ1bmN0aW9uIGdldElzVG9vQ2xvc2UoZCkge1xuICAgIHJldHVybiBNYXRoLmFicyhkKSA8IG1pbkQgfHwgTWF0aC5hYnMoZCkgPj0gTWF0aC5hYnMobCk7XG4gIH07XG5cbiAgdmFyIGlzVG9vQ2xvc2VTcmMgPSBnZXRJc1Rvb0Nsb3NlKGQpO1xuICB2YXIgaXNUb29DbG9zZVRndCA9IGdldElzVG9vQ2xvc2UoTWF0aC5hYnMobCkgLSBNYXRoLmFicyhkKSk7XG4gIHZhciBpc1Rvb0Nsb3NlID0gaXNUb29DbG9zZVNyYyB8fCBpc1Rvb0Nsb3NlVGd0O1xuXG4gIGlmIChpc1Rvb0Nsb3NlICYmICFmb3JjZWREaXIpIHtcbiAgICAvLyBub24taWRlYWwgcm91dGluZ1xuICAgIGlmIChpc1ZlcnQpIHtcbiAgICAgIC8vIHZlcnRpY2FsIGZhbGxiYWNrc1xuICAgICAgdmFyIGxTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNIIC8gMjtcbiAgICAgIHZhciBsU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHgpIDw9IHRndFcgLyAyO1xuXG4gICAgICBpZiAobFNoYXBlSW5zaWRlU3JjKSB7XG4gICAgICAgIC8vIGhvcml6b250YWwgWi1zaGFwZSAoZGlyZWN0aW9uIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgIHZhciB4ID0gKHBvc1B0cy54MSArIHBvc1B0cy54MikgLyAyO1xuICAgICAgICB2YXIgeTEgPSBwb3NQdHMueTEsXG4gICAgICAgICAgICB5MiA9IHBvc1B0cy55MjtcbiAgICAgICAgcnMuc2VncHRzID0gW3gsIHkxLCB4LCB5Ml07XG4gICAgICB9IGVsc2UgaWYgKGxTaGFwZUluc2lkZVRndCkge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXN0YW5jZSBub3QgcmVzcGVjdGVkKVxuICAgICAgICB2YXIgeSA9IChwb3NQdHMueTEgKyBwb3NQdHMueTIpIC8gMjtcbiAgICAgICAgdmFyIHgxID0gcG9zUHRzLngxLFxuICAgICAgICAgICAgeDIgPSBwb3NQdHMueDI7XG4gICAgICAgIHJzLnNlZ3B0cyA9IFt4MSwgeSwgeDIsIHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTC1zaGFwZSBmYWxsYmFjayAodHVybiBkaXN0YW5jZSBub3QgcmVzcGVjdGVkLCBidXQgd29ya3Mgd2VsbCB3aXRoIHRyZWUgc2libGluZ3MpXG4gICAgICAgIHJzLnNlZ3B0cyA9IFtwb3NQdHMueDEsIHBvc1B0cy55Ml07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvcml6b250YWwgZmFsbGJhY2tzXG4gICAgICB2YXIgX2xTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNXIC8gMjtcblxuICAgICAgdmFyIF9sU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHkpIDw9IHRndEggLyAyO1xuXG4gICAgICBpZiAoX2xTaGFwZUluc2lkZVNyYykge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXJlY3Rpb24gbm90IHJlc3BlY3RlZClcbiAgICAgICAgdmFyIF95ID0gKHBvc1B0cy55MSArIHBvc1B0cy55MikgLyAyO1xuXG4gICAgICAgIHZhciBfeCA9IHBvc1B0cy54MSxcbiAgICAgICAgICAgIF94MiA9IHBvc1B0cy54MjtcbiAgICAgICAgcnMuc2VncHRzID0gW194LCBfeSwgX3gyLCBfeV07XG4gICAgICB9IGVsc2UgaWYgKF9sU2hhcGVJbnNpZGVUZ3QpIHtcbiAgICAgICAgLy8gaG9yaXpvbnRhbCBaLXNoYXBlICh0dXJuIGRpc3RhbmNlIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgIHZhciBfeDMgPSAocG9zUHRzLngxICsgcG9zUHRzLngyKSAvIDI7XG5cbiAgICAgICAgdmFyIF95MiA9IHBvc1B0cy55MSxcbiAgICAgICAgICAgIF95MyA9IHBvc1B0cy55MjtcbiAgICAgICAgcnMuc2VncHRzID0gW194MywgX3kyLCBfeDMsIF95M107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMLXNoYXBlICh0dXJuIGRpc3RhbmNlIG5vdCByZXNwZWN0ZWQsIGJ1dCB3b3JrcyB3ZWxsIGZvciB0cmVlIHNpYmxpbmdzKVxuICAgICAgICBycy5zZWdwdHMgPSBbcG9zUHRzLngyLCBwb3NQdHMueTFdO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBpZGVhbCByb3V0aW5nXG4gICAgaWYgKGlzVmVydCkge1xuICAgICAgdmFyIF95NCA9IHBvc1B0cy55MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNIIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgdmFyIF94NCA9IHBvc1B0cy54MSxcbiAgICAgICAgICBfeDUgPSBwb3NQdHMueDI7XG4gICAgICBycy5zZWdwdHMgPSBbX3g0LCBfeTQsIF94NSwgX3k0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9yaXpvbnRhbFxuICAgICAgdmFyIF94NiA9IHBvc1B0cy54MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNXIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgdmFyIF95NSA9IHBvc1B0cy55MSxcbiAgICAgICAgICBfeTYgPSBwb3NQdHMueTI7XG4gICAgICBycy5zZWdwdHMgPSBbX3g2LCBfeTUsIF94NiwgX3k2XTtcbiAgICB9XG4gIH1cbn07XG5cbkJScCQzLnRyeVRvQ29ycmVjdEludmFsaWRQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8pIHtcbiAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDsgLy8gY2FuIG9ubHkgY29ycmVjdCBiZXppZXJzIGZvciBub3cuLi5cblxuICBpZiAocnMuZWRnZVR5cGUgPT09ICdiZXppZXInKSB7XG4gICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyxcbiAgICAgICAgdGd0UG9zID0gcGFpckluZm8udGd0UG9zLFxuICAgICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgICAgc3JjSCA9IHBhaXJJbmZvLnNyY0gsXG4gICAgICAgIHRndFcgPSBwYWlySW5mby50Z3RXLFxuICAgICAgICB0Z3RIID0gcGFpckluZm8udGd0SCxcbiAgICAgICAgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSxcbiAgICAgICAgdGd0U2hhcGUgPSBwYWlySW5mby50Z3RTaGFwZTtcbiAgICB2YXIgYmFkU3RhcnQgPSAhbnVtYmVyKHJzLnN0YXJ0WCkgfHwgIW51bWJlcihycy5zdGFydFkpO1xuICAgIHZhciBiYWRBU3RhcnQgPSAhbnVtYmVyKHJzLmFycm93U3RhcnRYKSB8fCAhbnVtYmVyKHJzLmFycm93U3RhcnRZKTtcbiAgICB2YXIgYmFkRW5kID0gIW51bWJlcihycy5lbmRYKSB8fCAhbnVtYmVyKHJzLmVuZFkpO1xuICAgIHZhciBiYWRBRW5kID0gIW51bWJlcihycy5hcnJvd0VuZFgpIHx8ICFudW1iZXIocnMuYXJyb3dFbmRZKTtcbiAgICB2YXIgbWluQ3BBRGlzdEZhY3RvciA9IDM7XG4gICAgdmFyIGFycm93VyA9IHRoaXMuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLmFycm93U2hhcGVXaWR0aDtcbiAgICB2YXIgbWluQ3BBRGlzdCA9IG1pbkNwQURpc3RGYWN0b3IgKiBhcnJvd1c7XG4gICAgdmFyIHN0YXJ0QUNwRGlzdCA9IGRpc3Qoe1xuICAgICAgeDogcnMuY3RybHB0c1swXSxcbiAgICAgIHk6IHJzLmN0cmxwdHNbMV1cbiAgICB9LCB7XG4gICAgICB4OiBycy5zdGFydFgsXG4gICAgICB5OiBycy5zdGFydFlcbiAgICB9KTtcbiAgICB2YXIgY2xvc2VTdGFydEFDcCA9IHN0YXJ0QUNwRGlzdCA8IG1pbkNwQURpc3Q7XG4gICAgdmFyIGVuZEFDcERpc3QgPSBkaXN0KHtcbiAgICAgIHg6IHJzLmN0cmxwdHNbMF0sXG4gICAgICB5OiBycy5jdHJscHRzWzFdXG4gICAgfSwge1xuICAgICAgeDogcnMuZW5kWCxcbiAgICAgIHk6IHJzLmVuZFlcbiAgICB9KTtcbiAgICB2YXIgY2xvc2VFbmRBQ3AgPSBlbmRBQ3BEaXN0IDwgbWluQ3BBRGlzdDtcbiAgICB2YXIgb3ZlcmxhcHBpbmcgPSBmYWxzZTtcblxuICAgIGlmIChiYWRTdGFydCB8fCBiYWRBU3RhcnQgfHwgY2xvc2VTdGFydEFDcCkge1xuICAgICAgb3ZlcmxhcHBpbmcgPSB0cnVlOyAvLyBwcm9qZWN0IGNvbnRyb2wgcG9pbnQgYWxvbmcgbGluZSBmcm9tIHNyYyBjZW50cmUgdG8gb3V0c2lkZSB0aGUgc3JjIHNoYXBlXG4gICAgICAvLyAob3RoZXJ3aXNlIGludGVyc2VjdGlvbiB3aWxsIHlpZWxkIG5vdGhpbmcpXG5cbiAgICAgIHZhciBjcEQgPSB7XG4gICAgICAgIC8vIGRlbHRhXG4gICAgICAgIHg6IHJzLmN0cmxwdHNbMF0gLSBzcmNQb3MueCxcbiAgICAgICAgeTogcnMuY3RybHB0c1sxXSAtIHNyY1Bvcy55XG4gICAgICB9O1xuICAgICAgdmFyIGNwTCA9IE1hdGguc3FydChjcEQueCAqIGNwRC54ICsgY3BELnkgKiBjcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cbiAgICAgIHZhciBjcE0gPSB7XG4gICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgeDogY3BELnggLyBjcEwsXG4gICAgICAgIHk6IGNwRC55IC8gY3BMXG4gICAgICB9O1xuICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWF4KHNyY1csIHNyY0gpO1xuICAgICAgdmFyIGNwUHJvaiA9IHtcbiAgICAgICAgLy8gKjIgcmFkaXVzIGd1YXJhbnRlZXMgb3V0c2lkZSBzaGFwZVxuICAgICAgICB4OiBycy5jdHJscHRzWzBdICsgY3BNLnggKiAyICogcmFkaXVzLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdICsgY3BNLnkgKiAyICogcmFkaXVzXG4gICAgICB9O1xuICAgICAgdmFyIHNyY0N0cmxQdEludG4gPSBzcmNTaGFwZS5pbnRlcnNlY3RMaW5lKHNyY1Bvcy54LCBzcmNQb3MueSwgc3JjVywgc3JjSCwgY3BQcm9qLngsIGNwUHJvai55LCAwKTtcblxuICAgICAgaWYgKGNsb3NlU3RhcnRBQ3ApIHtcbiAgICAgICAgcnMuY3RybHB0c1swXSA9IHJzLmN0cmxwdHNbMF0gKyBjcE0ueCAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgICAgcnMuY3RybHB0c1sxXSA9IHJzLmN0cmxwdHNbMV0gKyBjcE0ueSAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzLmN0cmxwdHNbMF0gPSBzcmNDdHJsUHRJbnRuWzBdICsgY3BNLnggKiBtaW5DcEFEaXN0O1xuICAgICAgICBycy5jdHJscHRzWzFdID0gc3JjQ3RybFB0SW50blsxXSArIGNwTS55ICogbWluQ3BBRGlzdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYmFkRW5kIHx8IGJhZEFFbmQgfHwgY2xvc2VFbmRBQ3ApIHtcbiAgICAgIG92ZXJsYXBwaW5nID0gdHJ1ZTsgLy8gcHJvamVjdCBjb250cm9sIHBvaW50IGFsb25nIGxpbmUgZnJvbSB0Z3QgY2VudHJlIHRvIG91dHNpZGUgdGhlIHRndCBzaGFwZVxuICAgICAgLy8gKG90aGVyd2lzZSBpbnRlcnNlY3Rpb24gd2lsbCB5aWVsZCBub3RoaW5nKVxuXG4gICAgICB2YXIgX2NwRCA9IHtcbiAgICAgICAgLy8gZGVsdGFcbiAgICAgICAgeDogcnMuY3RybHB0c1swXSAtIHRndFBvcy54LFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdIC0gdGd0UG9zLnlcbiAgICAgIH07XG5cbiAgICAgIHZhciBfY3BMID0gTWF0aC5zcXJ0KF9jcEQueCAqIF9jcEQueCArIF9jcEQueSAqIF9jcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cblxuICAgICAgdmFyIF9jcE0gPSB7XG4gICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgeDogX2NwRC54IC8gX2NwTCxcbiAgICAgICAgeTogX2NwRC55IC8gX2NwTFxuICAgICAgfTtcblxuICAgICAgdmFyIF9yYWRpdXMgPSBNYXRoLm1heChzcmNXLCBzcmNIKTtcblxuICAgICAgdmFyIF9jcFByb2ogPSB7XG4gICAgICAgIC8vICoyIHJhZGl1cyBndWFyYW50ZWVzIG91dHNpZGUgc2hhcGVcbiAgICAgICAgeDogcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIDIgKiBfcmFkaXVzLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdICsgX2NwTS55ICogMiAqIF9yYWRpdXNcbiAgICAgIH07XG4gICAgICB2YXIgdGd0Q3RybFB0SW50biA9IHRndFNoYXBlLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0Z3RXLCB0Z3RILCBfY3BQcm9qLngsIF9jcFByb2oueSwgMCk7XG5cbiAgICAgIGlmIChjbG9zZUVuZEFDcCkge1xuICAgICAgICBycy5jdHJscHRzWzBdID0gcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIChtaW5DcEFEaXN0IC0gZW5kQUNwRGlzdCk7XG4gICAgICAgIHJzLmN0cmxwdHNbMV0gPSBycy5jdHJscHRzWzFdICsgX2NwTS55ICogKG1pbkNwQURpc3QgLSBlbmRBQ3BEaXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzLmN0cmxwdHNbMF0gPSB0Z3RDdHJsUHRJbnRuWzBdICsgX2NwTS54ICogbWluQ3BBRGlzdDtcbiAgICAgICAgcnMuY3RybHB0c1sxXSA9IHRndEN0cmxQdEludG5bMV0gKyBfY3BNLnkgKiBtaW5DcEFEaXN0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvdmVybGFwcGluZykge1xuICAgICAgLy8gcmVjYWxjIGVuZHB0c1xuICAgICAgdGhpcy5maW5kRW5kcG9pbnRzKGVkZ2UpO1xuICAgIH1cbiAgfVxufTtcblxuQlJwJDMuc3RvcmVBbGxwdHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gIGlmIChycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2JlemllcicgfHwgcnMuZWRnZVR5cGUgPT09ICdzZWxmJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgIHJzLmFsbHB0cy5wdXNoKHJzLnN0YXJ0WCwgcnMuc3RhcnRZKTtcblxuICAgIGZvciAodmFyIGIgPSAwOyBiICsgMSA8IHJzLmN0cmxwdHMubGVuZ3RoOyBiICs9IDIpIHtcbiAgICAgIC8vIGN0cmwgcHQgaXRzZWxmXG4gICAgICBycy5hbGxwdHMucHVzaChycy5jdHJscHRzW2JdLCBycy5jdHJscHRzW2IgKyAxXSk7IC8vIHRoZSBtaWRwdCBiZXR3ZWVuIGN0cmxwdHMgYXMgaW50ZXJtZWRpYXRlIGRlc3RpbmF0aW9uIHB0c1xuXG4gICAgICBpZiAoYiArIDMgPCBycy5jdHJscHRzLmxlbmd0aCkge1xuICAgICAgICBycy5hbGxwdHMucHVzaCgocnMuY3RybHB0c1tiXSArIHJzLmN0cmxwdHNbYiArIDJdKSAvIDIsIChycy5jdHJscHRzW2IgKyAxXSArIHJzLmN0cmxwdHNbYiArIDNdKSAvIDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJzLmFsbHB0cy5wdXNoKHJzLmVuZFgsIHJzLmVuZFkpO1xuICAgIHZhciBtLCBtdDtcblxuICAgIGlmIChycy5jdHJscHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAxO1xuICAgICAgcnMubWlkWCA9IHJzLmFsbHB0c1ttXTtcbiAgICAgIHJzLm1pZFkgPSBycy5hbGxwdHNbbSArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAzO1xuICAgICAgbXQgPSAwLjU7XG4gICAgICBycy5taWRYID0gcWJlemllckF0KHJzLmFsbHB0c1ttXSwgcnMuYWxscHRzW20gKyAyXSwgcnMuYWxscHRzW20gKyA0XSwgbXQpO1xuICAgICAgcnMubWlkWSA9IHFiZXppZXJBdChycy5hbGxwdHNbbSArIDFdLCBycy5hbGxwdHNbbSArIDNdLCBycy5hbGxwdHNbbSArIDVdLCBtdCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnc3RyYWlnaHQnKSB7XG4gICAgLy8gbmVlZCB0byBjYWxjIHRoZXNlIGFmdGVyIGVuZHB0c1xuICAgIHJzLmFsbHB0cyA9IFtycy5zdGFydFgsIHJzLnN0YXJ0WSwgcnMuZW5kWCwgcnMuZW5kWV07IC8vIGRlZmF1bHQgbWlkcHQgZm9yIGxhYmVscyBldGNcblxuICAgIHJzLm1pZFggPSAocnMuc3RhcnRYICsgcnMuZW5kWCArIHJzLmFycm93U3RhcnRYICsgcnMuYXJyb3dFbmRYKSAvIDQ7XG4gICAgcnMubWlkWSA9IChycy5zdGFydFkgKyBycy5lbmRZICsgcnMuYXJyb3dTdGFydFkgKyBycy5hcnJvd0VuZFkpIC8gNDtcbiAgfSBlbHNlIGlmIChycy5lZGdlVHlwZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgIHJzLmFsbHB0cy5wdXNoKHJzLnN0YXJ0WCwgcnMuc3RhcnRZKTtcbiAgICBycy5hbGxwdHMucHVzaC5hcHBseShycy5hbGxwdHMsIHJzLnNlZ3B0cyk7XG4gICAgcnMuYWxscHRzLnB1c2gocnMuZW5kWCwgcnMuZW5kWSk7XG5cbiAgICBpZiAocnMuc2VncHRzLmxlbmd0aCAlIDQgPT09IDApIHtcbiAgICAgIHZhciBpMiA9IHJzLnNlZ3B0cy5sZW5ndGggLyAyO1xuICAgICAgdmFyIGkxID0gaTIgLSAyO1xuICAgICAgcnMubWlkWCA9IChycy5zZWdwdHNbaTFdICsgcnMuc2VncHRzW2kyXSkgLyAyO1xuICAgICAgcnMubWlkWSA9IChycy5zZWdwdHNbaTEgKyAxXSArIHJzLnNlZ3B0c1tpMiArIDFdKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfaSA9IHJzLnNlZ3B0cy5sZW5ndGggLyAyIC0gMTtcblxuICAgICAgcnMubWlkWCA9IHJzLnNlZ3B0c1tfaV07XG4gICAgICBycy5taWRZID0gcnMuc2VncHRzW19pICsgMV07XG4gICAgfVxuICB9XG59O1xuXG5CUnAkMy5jaGVja0ZvckludmFsaWRFZGdlV2FybmluZyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgaWYgKHJzLm5vZGVzT3ZlcmxhcCB8fCBudW1iZXIocnMuc3RhcnRYKSAmJiBudW1iZXIocnMuc3RhcnRZKSAmJiBudW1iZXIocnMuZW5kWCkgJiYgbnVtYmVyKHJzLmVuZFkpKSB7XG4gICAgcnMubG9nZ2VkRXJyID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFycy5sb2dnZWRFcnIpIHtcbiAgICAgIHJzLmxvZ2dlZEVyciA9IHRydWU7XG4gICAgICB3YXJuKCdFZGdlIGAnICsgZWRnZS5pZCgpICsgJ2AgaGFzIGludmFsaWQgZW5kcG9pbnRzIGFuZCBzbyBpdCBpcyBpbXBvc3NpYmxlIHRvIGRyYXcuICBBZGp1c3QgeW91ciBlZGdlIHN0eWxlIChlLmcuIGNvbnRyb2wgcG9pbnRzKSBhY2NvcmRpbmdseSBvciB1c2UgYW4gYWx0ZXJuYXRpdmUgZWRnZSB0eXBlLiAgVGhpcyBpcyBleHBlY3RlZCBiZWhhdmlvdXIgd2hlbiB0aGUgc291cmNlIG5vZGUgYW5kIHRoZSB0YXJnZXQgbm9kZSBvdmVybGFwLicpO1xuICAgIH1cbiAgfVxufTtcblxuQlJwJDMuZmluZEVkZ2VDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2VzKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKCFlZGdlcyB8fCBlZGdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7XG4gIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBoYXNoVGFibGUgPSB7XG4gICAgbWFwOiBuZXcgTWFwJDEoKSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldChwYWlySWQpIHtcbiAgICAgIHZhciBtYXAyID0gdGhpcy5tYXAuZ2V0KHBhaXJJZFswXSk7XG5cbiAgICAgIGlmIChtYXAyICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1hcDIuZ2V0KHBhaXJJZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KHBhaXJJZCwgdmFsKSB7XG4gICAgICB2YXIgbWFwMiA9IHRoaXMubWFwLmdldChwYWlySWRbMF0pO1xuXG4gICAgICBpZiAobWFwMiA9PSBudWxsKSB7XG4gICAgICAgIG1hcDIgPSBuZXcgTWFwJDEoKTtcbiAgICAgICAgdGhpcy5tYXAuc2V0KHBhaXJJZFswXSwgbWFwMik7XG4gICAgICB9XG5cbiAgICAgIG1hcDIuc2V0KHBhaXJJZFsxXSwgdmFsKTtcbiAgICB9XG4gIH07XG4gIHZhciBwYWlySWRzID0gW107XG4gIHZhciBoYXlzdGFja0VkZ2VzID0gW107IC8vIGNyZWF0ZSBhIHRhYmxlIG9mIGVkZ2UgKHNyYywgdGd0KSA9PiBsaXN0IG9mIGVkZ2VzIGJldHdlZW4gdGhlbVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTsgLy8gaWdub3JlIGVkZ2VzIHdobyBhcmUgbm90IHRvIGJlIGRpc3BsYXllZFxuICAgIC8vIHRoZXkgc2hvdWxkbid0IHRha2UgdXAgc3BhY2VcblxuICAgIGlmIChlZGdlLnJlbW92ZWQoKSB8fCAhZWRnZS50YWtlc1VwU3BhY2UoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnZlU3R5bGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgIGhheXN0YWNrRWRnZXMucHVzaChlZGdlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBlZGdlSXNVbmJ1bmRsZWQgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAnc3RyYWlnaHQnIHx8IGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScgfHwgY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICAgIHZhciBlZGdlSXNCZXppZXIgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ2Jlemllcic7XG4gICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgIHZhciBzcmNJbmRleCA9IHNyYy5wb29sSW5kZXgoKTtcbiAgICB2YXIgdGd0SW5kZXggPSB0Z3QucG9vbEluZGV4KCk7XG4gICAgdmFyIHBhaXJJZCA9IFtzcmNJbmRleCwgdGd0SW5kZXhdLnNvcnQoKTtcbiAgICB2YXIgdGFibGVFbnRyeSA9IGhhc2hUYWJsZS5nZXQocGFpcklkKTtcblxuICAgIGlmICh0YWJsZUVudHJ5ID09IG51bGwpIHtcbiAgICAgIHRhYmxlRW50cnkgPSB7XG4gICAgICAgIGVsZXM6IFtdXG4gICAgICB9O1xuICAgICAgaGFzaFRhYmxlLnNldChwYWlySWQsIHRhYmxlRW50cnkpO1xuICAgICAgcGFpcklkcy5wdXNoKHBhaXJJZCk7XG4gICAgfVxuXG4gICAgdGFibGVFbnRyeS5lbGVzLnB1c2goZWRnZSk7XG5cbiAgICBpZiAoZWRnZUlzVW5idW5kbGVkKSB7XG4gICAgICB0YWJsZUVudHJ5Lmhhc1VuYnVuZGxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGVkZ2VJc0Jlemllcikge1xuICAgICAgdGFibGVFbnRyeS5oYXNCZXppZXIgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBmb3IgZWFjaCBwYWlyIChzcmMsIHRndCksIGNyZWF0ZSB0aGUgY3RybCBwdHNcbiAgLy8gTmVzdGVkIGZvciBsb29wIGlzIE9LOyB0b3RhbCBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgYm90aCBsb29wcyA9IGVkZ2VDb3VudFxuXG5cbiAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AocCkge1xuICAgIHZhciBwYWlySWQgPSBwYWlySWRzW3BdO1xuICAgIHZhciBwYWlySW5mbyA9IGhhc2hUYWJsZS5nZXQocGFpcklkKTtcbiAgICB2YXIgc3dhcHBlZHBhaXJJbmZvID0gdm9pZCAwO1xuXG4gICAgaWYgKCFwYWlySW5mby5oYXNVbmJ1bmRsZWQpIHtcbiAgICAgIHZhciBwbGxFZGdlcyA9IHBhaXJJbmZvLmVsZXNbMF0ucGFyYWxsZWxFZGdlcygpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gZS5pc0J1bmRsZWRCZXppZXIoKTtcbiAgICAgIH0pO1xuICAgICAgY2xlYXJBcnJheShwYWlySW5mby5lbGVzKTtcbiAgICAgIHBsbEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHBhaXJJbmZvLmVsZXMucHVzaChlZGdlKTtcbiAgICAgIH0pOyAvLyBmb3IgZWFjaCBwYWlyIGlkLCB0aGUgZWRnZXMgc2hvdWxkIGJlIHNvcnRlZCBieSBpbmRleFxuXG4gICAgICBwYWlySW5mby5lbGVzLnNvcnQoZnVuY3Rpb24gKGVkZ2UxLCBlZGdlMikge1xuICAgICAgICByZXR1cm4gZWRnZTEucG9vbEluZGV4KCkgLSBlZGdlMi5wb29sSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaXJzdEVkZ2UgPSBwYWlySW5mby5lbGVzWzBdO1xuICAgIHZhciBzcmMgPSBmaXJzdEVkZ2Uuc291cmNlKCk7XG4gICAgdmFyIHRndCA9IGZpcnN0RWRnZS50YXJnZXQoKTsgLy8gbWFrZSBzdXJlIHNyYy90Z3QgZGlzdGluY3Rpb24gaXMgY29uc2lzdGVudCB3LnIudC4gcGFpcklkXG5cbiAgICBpZiAoc3JjLnBvb2xJbmRleCgpID4gdGd0LnBvb2xJbmRleCgpKSB7XG4gICAgICB2YXIgdGVtcCA9IHNyYztcbiAgICAgIHNyYyA9IHRndDtcbiAgICAgIHRndCA9IHRlbXA7XG4gICAgfVxuXG4gICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyA9IHNyYy5wb3NpdGlvbigpO1xuICAgIHZhciB0Z3RQb3MgPSBwYWlySW5mby50Z3RQb3MgPSB0Z3QucG9zaXRpb24oKTtcbiAgICB2YXIgc3JjVyA9IHBhaXJJbmZvLnNyY1cgPSBzcmMub3V0ZXJXaWR0aCgpO1xuICAgIHZhciBzcmNIID0gcGFpckluZm8uc3JjSCA9IHNyYy5vdXRlckhlaWdodCgpO1xuICAgIHZhciB0Z3RXID0gcGFpckluZm8udGd0VyA9IHRndC5vdXRlcldpZHRoKCk7XG4gICAgdmFyIHRndEggPSBwYWlySW5mby50Z3RIID0gdGd0Lm91dGVySGVpZ2h0KCk7XG5cbiAgICB2YXIgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUoc3JjKV07XG5cbiAgICB2YXIgdGd0U2hhcGUgPSBwYWlySW5mby50Z3RTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUodGd0KV07XG5cbiAgICBwYWlySW5mby5kaXJDb3VudHMgPSB7XG4gICAgICAnbm9ydGgnOiAwLFxuICAgICAgJ3dlc3QnOiAwLFxuICAgICAgJ3NvdXRoJzogMCxcbiAgICAgICdlYXN0JzogMCxcbiAgICAgICdub3J0aHdlc3QnOiAwLFxuICAgICAgJ3NvdXRod2VzdCc6IDAsXG4gICAgICAnbm9ydGhlYXN0JzogMCxcbiAgICAgICdzb3V0aGVhc3QnOiAwXG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHBhaXJJbmZvLmVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIF9lZGdlID0gcGFpckluZm8uZWxlc1tfaTJdO1xuICAgICAgdmFyIHJzID0gX2VkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgICAgIHZhciBfY3VydmVTdHlsZSA9IF9lZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcblxuICAgICAgdmFyIF9lZGdlSXNVbmJ1bmRsZWQgPSBfY3VydmVTdHlsZSA9PT0gJ3VuYnVuZGxlZC1iZXppZXInIHx8IF9jdXJ2ZVN0eWxlID09PSAnc2VnbWVudHMnIHx8IF9jdXJ2ZVN0eWxlID09PSAndGF4aSc7IC8vIHdoZXRoZXIgdGhlIG5vcm1hbGlzZWQgcGFpciBvcmRlciBpcyB0aGUgcmV2ZXJzZSBvZiB0aGUgZWRnZSdzIHNyYy10Z3Qgb3JkZXJcblxuXG4gICAgICB2YXIgZWRnZUlzU3dhcHBlZCA9ICFzcmMuc2FtZShfZWRnZS5zb3VyY2UoKSk7XG5cbiAgICAgIGlmICghcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiAmJiBzcmMgIT09IHRndCAmJiAocGFpckluZm8uaGFzQmV6aWVyIHx8IHBhaXJJbmZvLmhhc1VuYnVuZGxlZCkpIHtcbiAgICAgICAgcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiA9IHRydWU7IC8vIHB0IG91dHNpZGUgc3JjIHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgIHZhciBzcmNPdXRzaWRlID0gc3JjU2hhcGUuaW50ZXJzZWN0TGluZShzcmNQb3MueCwgc3JjUG9zLnksIHNyY1csIHNyY0gsIHRndFBvcy54LCB0Z3RQb3MueSwgMCk7XG4gICAgICAgIHZhciBzcmNJbnRuID0gcGFpckluZm8uc3JjSW50biA9IHNyY091dHNpZGU7IC8vIHB0IG91dHNpZGUgdGd0IHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgIHZhciB0Z3RPdXRzaWRlID0gdGd0U2hhcGUuaW50ZXJzZWN0TGluZSh0Z3RQb3MueCwgdGd0UG9zLnksIHRndFcsIHRndEgsIHNyY1Bvcy54LCBzcmNQb3MueSwgMCk7XG4gICAgICAgIHZhciB0Z3RJbnRuID0gcGFpckluZm8udGd0SW50biA9IHRndE91dHNpZGU7XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMgPSB7XG4gICAgICAgICAgeDE6IHNyY091dHNpZGVbMF0sXG4gICAgICAgICAgeDI6IHRndE91dHNpZGVbMF0sXG4gICAgICAgICAgeTE6IHNyY091dHNpZGVbMV0sXG4gICAgICAgICAgeTI6IHRndE91dHNpZGVbMV1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyA9IHtcbiAgICAgICAgICB4MTogc3JjUG9zLngsXG4gICAgICAgICAgeDI6IHRndFBvcy54LFxuICAgICAgICAgIHkxOiBzcmNQb3MueSxcbiAgICAgICAgICB5MjogdGd0UG9zLnlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGR5ID0gdGd0T3V0c2lkZVsxXSAtIHNyY091dHNpZGVbMV07XG4gICAgICAgIHZhciBkeCA9IHRndE91dHNpZGVbMF0gLSBzcmNPdXRzaWRlWzBdO1xuICAgICAgICB2YXIgbCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgICAgIHZhciB2ZWN0b3IgPSBwYWlySW5mby52ZWN0b3IgPSB7XG4gICAgICAgICAgeDogZHgsXG4gICAgICAgICAgeTogZHlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHZlY3Rvck5vcm0gPSBwYWlySW5mby52ZWN0b3JOb3JtID0ge1xuICAgICAgICAgIHg6IHZlY3Rvci54IC8gbCxcbiAgICAgICAgICB5OiB2ZWN0b3IueSAvIGxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHZlY3Rvck5vcm1JbnZlcnNlID0ge1xuICAgICAgICAgIHg6IC12ZWN0b3JOb3JtLnksXG4gICAgICAgICAgeTogdmVjdG9yTm9ybS54XG4gICAgICAgIH07IC8vIGlmIG5vZGUgc2hhcGVzIG92ZXJsYXAsIHRoZW4gbm8gY3RybCBwdHMgdG8gZHJhd1xuXG4gICAgICAgIHBhaXJJbmZvLm5vZGVzT3ZlcmxhcCA9ICFudW1iZXIobCkgfHwgdGd0U2hhcGUuY2hlY2tQb2ludChzcmNPdXRzaWRlWzBdLCBzcmNPdXRzaWRlWzFdLCAwLCB0Z3RXLCB0Z3RILCB0Z3RQb3MueCwgdGd0UG9zLnkpIHx8IHNyY1NoYXBlLmNoZWNrUG9pbnQodGd0T3V0c2lkZVswXSwgdGd0T3V0c2lkZVsxXSwgMCwgc3JjVywgc3JjSCwgc3JjUG9zLngsIHNyY1Bvcy55KTtcbiAgICAgICAgcGFpckluZm8udmVjdG9yTm9ybUludmVyc2UgPSB2ZWN0b3JOb3JtSW52ZXJzZTtcbiAgICAgICAgc3dhcHBlZHBhaXJJbmZvID0ge1xuICAgICAgICAgIG5vZGVzT3ZlcmxhcDogcGFpckluZm8ubm9kZXNPdmVybGFwLFxuICAgICAgICAgIGRpckNvdW50czogcGFpckluZm8uZGlyQ291bnRzLFxuICAgICAgICAgIGNhbGN1bGF0ZWRJbnRlcnNlY3Rpb246IHRydWUsXG4gICAgICAgICAgaGFzQmV6aWVyOiBwYWlySW5mby5oYXNCZXppZXIsXG4gICAgICAgICAgaGFzVW5idW5kbGVkOiBwYWlySW5mby5oYXNVbmJ1bmRsZWQsXG4gICAgICAgICAgZWxlczogcGFpckluZm8uZWxlcyxcbiAgICAgICAgICBzcmNQb3M6IHRndFBvcyxcbiAgICAgICAgICB0Z3RQb3M6IHNyY1BvcyxcbiAgICAgICAgICBzcmNXOiB0Z3RXLFxuICAgICAgICAgIHNyY0g6IHRndEgsXG4gICAgICAgICAgdGd0Vzogc3JjVyxcbiAgICAgICAgICB0Z3RIOiBzcmNILFxuICAgICAgICAgIHNyY0ludG46IHRndEludG4sXG4gICAgICAgICAgdGd0SW50bjogc3JjSW50bixcbiAgICAgICAgICBzcmNTaGFwZTogdGd0U2hhcGUsXG4gICAgICAgICAgdGd0U2hhcGU6IHNyY1NoYXBlLFxuICAgICAgICAgIHBvc1B0czoge1xuICAgICAgICAgICAgeDE6IHBvc1B0cy54MixcbiAgICAgICAgICAgIHkxOiBwb3NQdHMueTIsXG4gICAgICAgICAgICB4MjogcG9zUHRzLngxLFxuICAgICAgICAgICAgeTI6IHBvc1B0cy55MVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW50ZXJzZWN0aW9uUHRzOiB7XG4gICAgICAgICAgICB4MTogaW50ZXJzZWN0aW9uUHRzLngyLFxuICAgICAgICAgICAgeTE6IGludGVyc2VjdGlvblB0cy55MixcbiAgICAgICAgICAgIHgyOiBpbnRlcnNlY3Rpb25QdHMueDEsXG4gICAgICAgICAgICB5MjogaW50ZXJzZWN0aW9uUHRzLnkxXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2ZWN0b3I6IHtcbiAgICAgICAgICAgIHg6IC12ZWN0b3IueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3IueVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVjdG9yTm9ybToge1xuICAgICAgICAgICAgeDogLXZlY3Rvck5vcm0ueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtLnlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlY3Rvck5vcm1JbnZlcnNlOiB7XG4gICAgICAgICAgICB4OiAtdmVjdG9yTm9ybUludmVyc2UueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtSW52ZXJzZS55XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFzc2VkUGFpckluZm8gPSBlZGdlSXNTd2FwcGVkID8gc3dhcHBlZHBhaXJJbmZvIDogcGFpckluZm87XG4gICAgICBycy5ub2Rlc092ZXJsYXAgPSBwYXNzZWRQYWlySW5mby5ub2Rlc092ZXJsYXA7XG4gICAgICBycy5zcmNJbnRuID0gcGFzc2VkUGFpckluZm8uc3JjSW50bjtcbiAgICAgIHJzLnRndEludG4gPSBwYXNzZWRQYWlySW5mby50Z3RJbnRuO1xuXG4gICAgICBpZiAoaGFzQ29tcG91bmRzICYmIChzcmMuaXNQYXJlbnQoKSB8fCBzcmMuaXNDaGlsZCgpIHx8IHRndC5pc1BhcmVudCgpIHx8IHRndC5pc0NoaWxkKCkpICYmIChzcmMucGFyZW50cygpLmFueVNhbWUodGd0KSB8fCB0Z3QucGFyZW50cygpLmFueVNhbWUoc3JjKSB8fCBzcmMuc2FtZSh0Z3QpICYmIHNyYy5pc1BhcmVudCgpKSkge1xuICAgICAgICBfdGhpcy5maW5kQ29tcG91bmRMb29wUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3JjID09PSB0Z3QpIHtcbiAgICAgICAgX3RoaXMuZmluZExvb3BQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvLCBfaTIsIF9lZGdlSXNVbmJ1bmRsZWQpO1xuICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgICAgICBfdGhpcy5maW5kU2VnbWVudHNQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvKTtcbiAgICAgIH0gZWxzZSBpZiAoX2N1cnZlU3R5bGUgPT09ICd0YXhpJykge1xuICAgICAgICBfdGhpcy5maW5kVGF4aVBvaW50cyhfZWRnZSwgcGFzc2VkUGFpckluZm8pO1xuICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3N0cmFpZ2h0JyB8fCAhX2VkZ2VJc1VuYnVuZGxlZCAmJiBwYWlySW5mby5lbGVzLmxlbmd0aCAlIDIgPT09IDEgJiYgX2kyID09PSBNYXRoLmZsb29yKHBhaXJJbmZvLmVsZXMubGVuZ3RoIC8gMikpIHtcbiAgICAgICAgX3RoaXMuZmluZFN0cmFpZ2h0RWRnZVBvaW50cyhfZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5maW5kQmV6aWVyUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkLCBlZGdlSXNTd2FwcGVkKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZmluZEVuZHBvaW50cyhfZWRnZSk7XG5cbiAgICAgIF90aGlzLnRyeVRvQ29ycmVjdEludmFsaWRQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvKTtcblxuICAgICAgX3RoaXMuY2hlY2tGb3JJbnZhbGlkRWRnZVdhcm5pbmcoX2VkZ2UpO1xuXG4gICAgICBfdGhpcy5zdG9yZUFsbHB0cyhfZWRnZSk7XG5cbiAgICAgIF90aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgX3RoaXMuY2FsY3VsYXRlQXJyb3dBbmdsZXMoX2VkZ2UpO1xuXG4gICAgICBfdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgX3RoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoX2VkZ2UpO1xuICAgIH0gLy8gZm9yIHBhaXIgZWRnZXNcblxuICB9O1xuXG4gIGZvciAodmFyIHAgPSAwOyBwIDwgcGFpcklkcy5sZW5ndGg7IHArKykge1xuICAgIF9sb29wKHApO1xuICB9IC8vIGZvciBwYWlyIGlkc1xuICAvLyBoYXlzdGFja3MgYXZvaWQgdGhlIGV4cGVuc2Ugb2YgcGFpckluZm8gc3R1ZmYgKGludGVyc2VjdGlvbnMgZXRjLilcblxuXG4gIHRoaXMuZmluZEhheXN0YWNrUG9pbnRzKGhheXN0YWNrRWRnZXMpO1xufTtcblxuZnVuY3Rpb24gZ2V0UHRzKHB0cykge1xuICB2YXIgcmV0UHRzID0gW107XG5cbiAgaWYgKHB0cyA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICB2YXIgeSA9IHB0c1tpICsgMV07XG4gICAgcmV0UHRzLnB1c2goe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXRQdHM7XG59XG5cbkJScCQzLmdldFNlZ21lbnRQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgcnMgPSBlZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgdHlwZSA9IHJzLmVkZ2VUeXBlO1xuXG4gIGlmICh0eXBlID09PSAnc2VnbWVudHMnKSB7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG4gICAgcmV0dXJuIGdldFB0cyhycy5zZWdwdHMpO1xuICB9XG59O1xuXG5CUnAkMy5nZXRDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIHR5cGUgPSBycy5lZGdlVHlwZTtcblxuICBpZiAodHlwZSA9PT0gJ2JlemllcicgfHwgdHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCB0eXBlID09PSAnc2VsZicgfHwgdHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICAgIHJldHVybiBnZXRQdHMocnMuY3RybHB0cyk7XG4gIH1cbn07XG5cbkJScCQzLmdldEVkZ2VNaWRwb2ludCA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICByZXR1cm4ge1xuICAgIHg6IHJzLm1pZFgsXG4gICAgeTogcnMubWlkWVxuICB9O1xufTtcblxudmFyIEJScCQ0ID0ge307XG5cbkJScCQ0Lm1hbnVhbEVuZHB0VG9QeCA9IGZ1bmN0aW9uIChub2RlLCBwcm9wKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIG5wb3MgPSBub2RlLnBvc2l0aW9uKCk7XG4gIHZhciB3ID0gbm9kZS5vdXRlcldpZHRoKCk7XG4gIHZhciBoID0gbm9kZS5vdXRlckhlaWdodCgpO1xuXG4gIGlmIChwcm9wLnZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgIHZhciBwID0gW3Byb3AucGZWYWx1ZVswXSwgcHJvcC5wZlZhbHVlWzFdXTtcblxuICAgIGlmIChwcm9wLnVuaXRzWzBdID09PSAnJScpIHtcbiAgICAgIHBbMF0gPSBwWzBdICogdztcbiAgICB9XG5cbiAgICBpZiAocHJvcC51bml0c1sxXSA9PT0gJyUnKSB7XG4gICAgICBwWzFdID0gcFsxXSAqIGg7XG4gICAgfVxuXG4gICAgcFswXSArPSBucG9zLng7XG4gICAgcFsxXSArPSBucG9zLnk7XG4gICAgcmV0dXJuIHA7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFuZ2xlID0gcHJvcC5wZlZhbHVlWzBdO1xuICAgIGFuZ2xlID0gLU1hdGguUEkgLyAyICsgYW5nbGU7IC8vIHN0YXJ0IGF0IDEyIG8nY2xvY2tcblxuICAgIHZhciBsID0gMiAqIE1hdGgubWF4KHcsIGgpO1xuICAgIHZhciBfcCA9IFtucG9zLnggKyBNYXRoLmNvcyhhbmdsZSkgKiBsLCBucG9zLnkgKyBNYXRoLnNpbihhbmdsZSkgKiBsXTtcbiAgICByZXR1cm4gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5pbnRlcnNlY3RMaW5lKG5wb3MueCwgbnBvcy55LCB3LCBoLCBfcFswXSwgX3BbMV0sIDApO1xuICB9XG59O1xuXG5CUnAkNC5maW5kRW5kcG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgaW50ZXJzZWN0O1xuICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UoKVswXTtcbiAgdmFyIHRhcmdldCA9IGVkZ2UudGFyZ2V0KClbMF07XG4gIHZhciBzcmNQb3MgPSBzb3VyY2UucG9zaXRpb24oKTtcbiAgdmFyIHRndFBvcyA9IHRhcmdldC5wb3NpdGlvbigpO1xuICB2YXIgdGd0QXJTaGFwZSA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtYXJyb3ctc2hhcGUnKS52YWx1ZTtcbiAgdmFyIHNyY0FyU2hhcGUgPSBlZGdlLnBzdHlsZSgnc291cmNlLWFycm93LXNoYXBlJykudmFsdWU7XG4gIHZhciB0Z3REaXN0ID0gZWRnZS5wc3R5bGUoJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnKS5wZlZhbHVlO1xuICB2YXIgc3JjRGlzdCA9IGVkZ2UucHN0eWxlKCdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJykucGZWYWx1ZTtcbiAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcbiAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIGV0ID0gcnMuZWRnZVR5cGU7XG4gIHZhciB0YXhpID0gY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICB2YXIgc2VsZiA9IGV0ID09PSAnc2VsZicgfHwgZXQgPT09ICdjb21wb3VuZCc7XG4gIHZhciBiZXppZXIgPSBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdtdWx0aWJlemllcicgfHwgc2VsZjtcbiAgdmFyIG11bHRpID0gZXQgIT09ICdiZXppZXInO1xuICB2YXIgbGluZXMgPSBldCA9PT0gJ3N0cmFpZ2h0JyB8fCBldCA9PT0gJ3NlZ21lbnRzJztcbiAgdmFyIHNlZ21lbnRzID0gZXQgPT09ICdzZWdtZW50cyc7XG4gIHZhciBoYXNFbmRwdHMgPSBiZXppZXIgfHwgbXVsdGkgfHwgbGluZXM7XG4gIHZhciBvdmVycmlkZUVuZHB0cyA9IHNlbGYgfHwgdGF4aTtcbiAgdmFyIHNyY01hbkVuZHB0ID0gZWRnZS5wc3R5bGUoJ3NvdXJjZS1lbmRwb2ludCcpO1xuICB2YXIgc3JjTWFuRW5kcHRWYWwgPSBvdmVycmlkZUVuZHB0cyA/ICdvdXRzaWRlLXRvLW5vZGUnIDogc3JjTWFuRW5kcHQudmFsdWU7XG4gIHZhciB0Z3RNYW5FbmRwdCA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtZW5kcG9pbnQnKTtcbiAgdmFyIHRndE1hbkVuZHB0VmFsID0gb3ZlcnJpZGVFbmRwdHMgPyAnb3V0c2lkZS10by1ub2RlJyA6IHRndE1hbkVuZHB0LnZhbHVlO1xuICBycy5zcmNNYW5FbmRwdCA9IHNyY01hbkVuZHB0O1xuICBycy50Z3RNYW5FbmRwdCA9IHRndE1hbkVuZHB0O1xuICB2YXIgcDE7IC8vIGxhc3Qga25vd24gcG9pbnQgb2YgZWRnZSBvbiB0YXJnZXQgc2lkZVxuXG4gIHZhciBwMjsgLy8gbGFzdCBrbm93biBwb2ludCBvZiBlZGdlIG9uIHNvdXJjZSBzaWRlXG5cbiAgdmFyIHAxX2k7IC8vIHBvaW50IHRvIGludGVyc2VjdCB3aXRoIHRhcmdldCBzaGFwZVxuXG4gIHZhciBwMl9pOyAvLyBwb2ludCB0byBpbnRlcnNlY3Qgd2l0aCBzb3VyY2Ugc2hhcGVcblxuICBpZiAoYmV6aWVyKSB7XG4gICAgdmFyIGNwU3RhcnQgPSBbcnMuY3RybHB0c1swXSwgcnMuY3RybHB0c1sxXV07XG4gICAgdmFyIGNwRW5kID0gbXVsdGkgPyBbcnMuY3RybHB0c1tycy5jdHJscHRzLmxlbmd0aCAtIDJdLCBycy5jdHJscHRzW3JzLmN0cmxwdHMubGVuZ3RoIC0gMV1dIDogY3BTdGFydDtcbiAgICBwMSA9IGNwRW5kO1xuICAgIHAyID0gY3BTdGFydDtcbiAgfSBlbHNlIGlmIChsaW5lcykge1xuICAgIHZhciBzcmNBcnJvd0Zyb21QdCA9ICFzZWdtZW50cyA/IFt0Z3RQb3MueCwgdGd0UG9zLnldIDogcnMuc2VncHRzLnNsaWNlKDAsIDIpO1xuICAgIHZhciB0Z3RBcnJvd0Zyb21QdCA9ICFzZWdtZW50cyA/IFtzcmNQb3MueCwgc3JjUG9zLnldIDogcnMuc2VncHRzLnNsaWNlKHJzLnNlZ3B0cy5sZW5ndGggLSAyKTtcbiAgICBwMSA9IHRndEFycm93RnJvbVB0O1xuICAgIHAyID0gc3JjQXJyb3dGcm9tUHQ7XG4gIH1cblxuICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdpbnNpZGUtdG8tbm9kZScpIHtcbiAgICBpbnRlcnNlY3QgPSBbdGd0UG9zLngsIHRndFBvcy55XTtcbiAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdC51bml0cykge1xuICAgIGludGVyc2VjdCA9IHRoaXMubWFudWFsRW5kcHRUb1B4KHRhcmdldCwgdGd0TWFuRW5kcHQpO1xuICB9IGVsc2UgaWYgKHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lJykge1xuICAgIGludGVyc2VjdCA9IHJzLnRndEludG47IC8vIHVzZSBjYWNoZWQgdmFsdWUgZnJvbSBjdHJscHQgY2FsY1xuICB9IGVsc2Uge1xuICAgIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnKSB7XG4gICAgICBwMV9pID0gcDE7XG4gICAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICBwMV9pID0gW3NyY1Bvcy54LCBzcmNQb3MueV07XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0ID0gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKHRhcmdldCldLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0YXJnZXQub3V0ZXJXaWR0aCgpLCB0YXJnZXQub3V0ZXJIZWlnaHQoKSwgcDFfaVswXSwgcDFfaVsxXSwgMCk7XG5cbiAgICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnIHx8IHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lLW9yLWxhYmVsJykge1xuICAgICAgdmFyIHRycyA9IHRhcmdldC5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICAgIHZhciBsdyA9IHRycy5sYWJlbFdpZHRoO1xuICAgICAgdmFyIGxoID0gdHJzLmxhYmVsSGVpZ2h0O1xuICAgICAgdmFyIGx4ID0gdHJzLmxhYmVsWDtcbiAgICAgIHZhciBseSA9IHRycy5sYWJlbFk7XG4gICAgICB2YXIgbHcyID0gbHcgLyAyO1xuICAgICAgdmFyIGxoMiA9IGxoIC8gMjtcbiAgICAgIHZhciB2YSA9IHRhcmdldC5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmICh2YSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgbHkgLT0gbGgyO1xuICAgICAgfSBlbHNlIGlmICh2YSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgbHkgKz0gbGgyO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGEgPSB0YXJnZXQucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuXG4gICAgICBpZiAoaGEgPT09ICdsZWZ0Jykge1xuICAgICAgICBseCAtPSBsdzI7XG4gICAgICB9IGVsc2UgaWYgKGhhID09PSAncmlnaHQnKSB7XG4gICAgICAgIGx4ICs9IGx3MjtcbiAgICAgIH1cblxuICAgICAgdmFyIGxhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDFfaVswXSwgcDFfaVsxXSwgW2x4IC0gbHcyLCBseSAtIGxoMiwgbHggKyBsdzIsIGx5IC0gbGgyLCBseCArIGx3MiwgbHkgKyBsaDIsIGx4IC0gbHcyLCBseSArIGxoMl0sIHRndFBvcy54LCB0Z3RQb3MueSk7XG5cbiAgICAgIGlmIChsYWJlbEludGVyc2VjdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciByZWZQdCA9IHNyY1BvcztcbiAgICAgICAgdmFyIGludFNxZGlzdCA9IHNxZGlzdChyZWZQdCwgYXJyYXkycG9pbnQoaW50ZXJzZWN0KSk7XG4gICAgICAgIHZhciBsYWJJbnRTcWRpc3QgPSBzcWRpc3QocmVmUHQsIGFycmF5MnBvaW50KGxhYmVsSW50ZXJzZWN0KSk7XG4gICAgICAgIHZhciBtaW5TcURpc3QgPSBpbnRTcWRpc3Q7XG5cbiAgICAgICAgaWYgKGxhYkludFNxZGlzdCA8IGludFNxZGlzdCkge1xuICAgICAgICAgIGludGVyc2VjdCA9IGxhYmVsSW50ZXJzZWN0O1xuICAgICAgICAgIG1pblNxRGlzdCA9IGxhYkludFNxZGlzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYWJlbEludGVyc2VjdC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgdmFyIGxhYkludDJTcURpc3QgPSBzcWRpc3QocmVmUHQsIHtcbiAgICAgICAgICAgIHg6IGxhYmVsSW50ZXJzZWN0WzJdLFxuICAgICAgICAgICAgeTogbGFiZWxJbnRlcnNlY3RbM11cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChsYWJJbnQyU3FEaXN0IDwgbWluU3FEaXN0KSB7XG4gICAgICAgICAgICBpbnRlcnNlY3QgPSBbbGFiZWxJbnRlcnNlY3RbMl0sIGxhYmVsSW50ZXJzZWN0WzNdXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYXJyb3dFbmQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDEsIHIuYXJyb3dTaGFwZXNbdGd0QXJTaGFwZV0uc3BhY2luZyhlZGdlKSArIHRndERpc3QpO1xuICB2YXIgZWRnZUVuZCA9IHNob3J0ZW5JbnRlcnNlY3Rpb24oaW50ZXJzZWN0LCBwMSwgci5hcnJvd1NoYXBlc1t0Z3RBclNoYXBlXS5nYXAoZWRnZSkgKyB0Z3REaXN0KTtcbiAgcnMuZW5kWCA9IGVkZ2VFbmRbMF07XG4gIHJzLmVuZFkgPSBlZGdlRW5kWzFdO1xuICBycy5hcnJvd0VuZFggPSBhcnJvd0VuZFswXTtcbiAgcnMuYXJyb3dFbmRZID0gYXJyb3dFbmRbMV07XG5cbiAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnaW5zaWRlLXRvLW5vZGUnKSB7XG4gICAgaW50ZXJzZWN0ID0gW3NyY1Bvcy54LCBzcmNQb3MueV07XG4gIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHQudW5pdHMpIHtcbiAgICBpbnRlcnNlY3QgPSB0aGlzLm1hbnVhbEVuZHB0VG9QeChzb3VyY2UsIHNyY01hbkVuZHB0KTtcbiAgfSBlbHNlIGlmIChzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScpIHtcbiAgICBpbnRlcnNlY3QgPSBycy5zcmNJbnRuOyAvLyB1c2UgY2FjaGVkIHZhbHVlIGZyb20gY3RybHB0IGNhbGNcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUnIHx8IHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJykge1xuICAgICAgcDJfaSA9IHAyO1xuICAgIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUnIHx8IHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lLW9yLWxhYmVsJykge1xuICAgICAgcDJfaSA9IFt0Z3RQb3MueCwgdGd0UG9zLnldO1xuICAgIH1cblxuICAgIGludGVyc2VjdCA9IHIubm9kZVNoYXBlc1t0aGlzLmdldE5vZGVTaGFwZShzb3VyY2UpXS5pbnRlcnNlY3RMaW5lKHNyY1Bvcy54LCBzcmNQb3MueSwgc291cmNlLm91dGVyV2lkdGgoKSwgc291cmNlLm91dGVySGVpZ2h0KCksIHAyX2lbMF0sIHAyX2lbMV0sIDApO1xuXG4gICAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJyB8fCBzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZS1vci1sYWJlbCcpIHtcbiAgICAgIHZhciBzcnMgPSBzb3VyY2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICB2YXIgX2x3ID0gc3JzLmxhYmVsV2lkdGg7XG4gICAgICB2YXIgX2xoID0gc3JzLmxhYmVsSGVpZ2h0O1xuICAgICAgdmFyIF9seCA9IHNycy5sYWJlbFg7XG4gICAgICB2YXIgX2x5ID0gc3JzLmxhYmVsWTtcblxuICAgICAgdmFyIF9sdzIgPSBfbHcgLyAyO1xuXG4gICAgICB2YXIgX2xoMiA9IF9saCAvIDI7XG5cbiAgICAgIHZhciBfdmEgPSBzb3VyY2UucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlO1xuXG4gICAgICBpZiAoX3ZhID09PSAndG9wJykge1xuICAgICAgICBfbHkgLT0gX2xoMjtcbiAgICAgIH0gZWxzZSBpZiAoX3ZhID09PSAnYm90dG9tJykge1xuICAgICAgICBfbHkgKz0gX2xoMjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9oYSA9IHNvdXJjZS5wc3R5bGUoJ3RleHQtaGFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmIChfaGEgPT09ICdsZWZ0Jykge1xuICAgICAgICBfbHggLT0gX2x3MjtcbiAgICAgIH0gZWxzZSBpZiAoX2hhID09PSAncmlnaHQnKSB7XG4gICAgICAgIF9seCArPSBfbHcyO1xuICAgICAgfVxuXG4gICAgICB2YXIgX2xhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDJfaVswXSwgcDJfaVsxXSwgW19seCAtIF9sdzIsIF9seSAtIF9saDIsIF9seCArIF9sdzIsIF9seSAtIF9saDIsIF9seCArIF9sdzIsIF9seSArIF9saDIsIF9seCAtIF9sdzIsIF9seSArIF9saDJdLCBzcmNQb3MueCwgc3JjUG9zLnkpO1xuXG4gICAgICBpZiAoX2xhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIF9yZWZQdCA9IHRndFBvcztcblxuICAgICAgICB2YXIgX2ludFNxZGlzdCA9IHNxZGlzdChfcmVmUHQsIGFycmF5MnBvaW50KGludGVyc2VjdCkpO1xuXG4gICAgICAgIHZhciBfbGFiSW50U3FkaXN0ID0gc3FkaXN0KF9yZWZQdCwgYXJyYXkycG9pbnQoX2xhYmVsSW50ZXJzZWN0KSk7XG5cbiAgICAgICAgdmFyIF9taW5TcURpc3QgPSBfaW50U3FkaXN0O1xuXG4gICAgICAgIGlmIChfbGFiSW50U3FkaXN0IDwgX2ludFNxZGlzdCkge1xuICAgICAgICAgIGludGVyc2VjdCA9IFtfbGFiZWxJbnRlcnNlY3RbMF0sIF9sYWJlbEludGVyc2VjdFsxXV07XG4gICAgICAgICAgX21pblNxRGlzdCA9IF9sYWJJbnRTcWRpc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2xhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICB2YXIgX2xhYkludDJTcURpc3QgPSBzcWRpc3QoX3JlZlB0LCB7XG4gICAgICAgICAgICB4OiBfbGFiZWxJbnRlcnNlY3RbMl0sXG4gICAgICAgICAgICB5OiBfbGFiZWxJbnRlcnNlY3RbM11cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChfbGFiSW50MlNxRGlzdCA8IF9taW5TcURpc3QpIHtcbiAgICAgICAgICAgIGludGVyc2VjdCA9IFtfbGFiZWxJbnRlcnNlY3RbMl0sIF9sYWJlbEludGVyc2VjdFszXV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGFycm93U3RhcnQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDIsIHIuYXJyb3dTaGFwZXNbc3JjQXJTaGFwZV0uc3BhY2luZyhlZGdlKSArIHNyY0Rpc3QpO1xuICB2YXIgZWRnZVN0YXJ0ID0gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3QsIHAyLCByLmFycm93U2hhcGVzW3NyY0FyU2hhcGVdLmdhcChlZGdlKSArIHNyY0Rpc3QpO1xuICBycy5zdGFydFggPSBlZGdlU3RhcnRbMF07XG4gIHJzLnN0YXJ0WSA9IGVkZ2VTdGFydFsxXTtcbiAgcnMuYXJyb3dTdGFydFggPSBhcnJvd1N0YXJ0WzBdO1xuICBycy5hcnJvd1N0YXJ0WSA9IGFycm93U3RhcnRbMV07XG5cbiAgaWYgKGhhc0VuZHB0cykge1xuICAgIGlmICghbnVtYmVyKHJzLnN0YXJ0WCkgfHwgIW51bWJlcihycy5zdGFydFkpIHx8ICFudW1iZXIocnMuZW5kWCkgfHwgIW51bWJlcihycy5lbmRZKSkge1xuICAgICAgcnMuYmFkTGluZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJzLmJhZExpbmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbkJScCQ0LmdldFNvdXJjZUVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG5cbiAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzBdLFxuICAgICAgICB5OiBycy5oYXlzdGFja1B0c1sxXVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBycy5hcnJvd1N0YXJ0WCxcbiAgICAgICAgeTogcnMuYXJyb3dTdGFydFlcbiAgICAgIH07XG4gIH1cbn07XG5cbkJScCQ0LmdldFRhcmdldEVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG5cbiAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzJdLFxuICAgICAgICB5OiBycy5oYXlzdGFja1B0c1szXVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBycy5hcnJvd0VuZFgsXG4gICAgICAgIHk6IHJzLmFycm93RW5kWVxuICAgICAgfTtcbiAgfVxufTtcblxudmFyIEJScCQ1ID0ge307XG5cbmZ1bmN0aW9uIHB1c2hCZXppZXJQdHMociwgZWRnZSwgcHRzKSB7XG4gIHZhciBxYmV6aWVyQXQkMSA9IGZ1bmN0aW9uIHFiZXppZXJBdCQxKHAxLCBwMiwgcDMsIHQpIHtcbiAgICByZXR1cm4gcWJlemllckF0KHAxLCBwMiwgcDMsIHQpO1xuICB9O1xuXG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBicHRzID0gX3AucnN0eWxlLmJlemllclB0cztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHIuYmV6aWVyUHJvalBjdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IHIuYmV6aWVyUHJvalBjdHNbaV07XG4gICAgYnB0cy5wdXNoKHtcbiAgICAgIHg6IHFiZXppZXJBdCQxKHB0c1swXSwgcHRzWzJdLCBwdHNbNF0sIHApLFxuICAgICAgeTogcWJlemllckF0JDEocHRzWzFdLCBwdHNbM10sIHB0c1s1XSwgcClcbiAgICB9KTtcbiAgfVxufVxuXG5CUnAkNS5zdG9yZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgZXQgPSBycy5lZGdlVHlwZTsgLy8gY2xlYXIgdGhlIGNhY2hlZCBwb2ludHMgc3RhdGVcblxuICBfcC5yc3R5bGUuYmV6aWVyUHRzID0gbnVsbDtcbiAgX3AucnN0eWxlLmxpbmVQdHMgPSBudWxsO1xuICBfcC5yc3R5bGUuaGF5c3RhY2tQdHMgPSBudWxsO1xuXG4gIGlmIChldCA9PT0gJ211bHRpYmV6aWVyJyB8fCBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdzZWxmJyB8fCBldCA9PT0gJ2NvbXBvdW5kJykge1xuICAgIF9wLnJzdHlsZS5iZXppZXJQdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpICsgNSA8IHJzLmFsbHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgcHVzaEJlemllclB0cyh0aGlzLCBlZGdlLCBycy5hbGxwdHMuc2xpY2UoaSwgaSArIDYpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXQgPT09ICdzZWdtZW50cycpIHtcbiAgICB2YXIgbHB0cyA9IF9wLnJzdHlsZS5saW5lUHRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSArIDEgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIGxwdHMucHVzaCh7XG4gICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV0ID09PSAnaGF5c3RhY2snKSB7XG4gICAgdmFyIGhwdHMgPSBycy5oYXlzdGFja1B0cztcbiAgICBfcC5yc3R5bGUuaGF5c3RhY2tQdHMgPSBbe1xuICAgICAgeDogaHB0c1swXSxcbiAgICAgIHk6IGhwdHNbMV1cbiAgICB9LCB7XG4gICAgICB4OiBocHRzWzJdLFxuICAgICAgeTogaHB0c1szXVxuICAgIH1dO1xuICB9XG5cbiAgX3AucnN0eWxlLmFycm93V2lkdGggPSB0aGlzLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5hcnJvd1NoYXBlV2lkdGg7XG59O1xuXG5CUnAkNS5yZWNhbGN1bGF0ZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlcykge1xuICB0aGlzLmZpbmRFZGdlQ29udHJvbFBvaW50cyhlZGdlcyk7XG59O1xuXG4vKiBnbG9iYWwgZG9jdW1lbnQgKi9cblxudmFyIEJScCQ2ID0ge307XG5cbkJScCQ2LnJlY2FsY3VsYXRlTm9kZUxhYmVsUHJvamVjdGlvbiA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciBjb250ZW50ID0gbm9kZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWU7XG5cbiAgaWYgKGVtcHR5U3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRleHRYLCB0ZXh0WTtcbiAgdmFyIF9wID0gbm9kZS5fcHJpdmF0ZTtcbiAgdmFyIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKTtcbiAgdmFyIG5vZGVIZWlnaHQgPSBub2RlLmhlaWdodCgpO1xuICB2YXIgcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuICB2YXIgbm9kZVBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIHRleHRIYWxpZ24gPSBub2RlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS5zdHJWYWx1ZTtcbiAgdmFyIHRleHRWYWxpZ24gPSBub2RlLnBzdHlsZSgndGV4dC12YWxpZ24nKS5zdHJWYWx1ZTtcbiAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG5cbiAgc3dpdGNoICh0ZXh0SGFsaWduKSB7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICB0ZXh0WCA9IG5vZGVQb3MueCAtIG5vZGVXaWR0aCAvIDIgLSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdyaWdodCc6XG4gICAgICB0ZXh0WCA9IG5vZGVQb3MueCArIG5vZGVXaWR0aCAvIDIgKyBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZS5nLiBjZW50ZXJcbiAgICAgIHRleHRYID0gbm9kZVBvcy54O1xuICB9XG5cbiAgc3dpdGNoICh0ZXh0VmFsaWduKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHRleHRZID0gbm9kZVBvcy55IC0gbm9kZUhlaWdodCAvIDIgLSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgdGV4dFkgPSBub2RlUG9zLnkgKyBub2RlSGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBlLmcuIG1pZGRsZVxuICAgICAgdGV4dFkgPSBub2RlUG9zLnk7XG4gIH1cblxuICBycy5sYWJlbFggPSB0ZXh0WDtcbiAgcnMubGFiZWxZID0gdGV4dFk7XG4gIHJzdHlsZS5sYWJlbFggPSB0ZXh0WDtcbiAgcnN0eWxlLmxhYmVsWSA9IHRleHRZO1xuICB0aGlzLmNhbGN1bGF0ZUxhYmVsQW5nbGVzKG5vZGUpO1xuICB0aGlzLmFwcGx5TGFiZWxEaW1lbnNpb25zKG5vZGUpO1xufTtcblxudmFyIGxpbmVBbmdsZUZyb21EZWx0YSA9IGZ1bmN0aW9uIGxpbmVBbmdsZUZyb21EZWx0YShkeCwgZHkpIHtcbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuXG4gIGlmIChkeCA9PT0gMCAmJiBhbmdsZSA8IDApIHtcbiAgICBhbmdsZSA9IGFuZ2xlICogLTE7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59O1xuXG52YXIgbGluZUFuZ2xlID0gZnVuY3Rpb24gbGluZUFuZ2xlKHAwLCBwMSkge1xuICB2YXIgZHggPSBwMS54IC0gcDAueDtcbiAgdmFyIGR5ID0gcDEueSAtIHAwLnk7XG4gIHJldHVybiBsaW5lQW5nbGVGcm9tRGVsdGEoZHgsIGR5KTtcbn07XG5cbnZhciBiZXppZXJBbmdsZSA9IGZ1bmN0aW9uIGJlemllckFuZ2xlKHAwLCBwMSwgcDIsIHQpIHtcbiAgdmFyIHQwID0gYm91bmQoMCwgdCAtIDAuMDAxLCAxKTtcbiAgdmFyIHQxID0gYm91bmQoMCwgdCArIDAuMDAxLCAxKTtcbiAgdmFyIGxwMCA9IHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQwKTtcbiAgdmFyIGxwMSA9IHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQxKTtcbiAgcmV0dXJuIGxpbmVBbmdsZShscDAsIGxwMSk7XG59O1xuXG5CUnAkNi5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHA7XG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjb250ZW50ID0ge1xuICAgIG1pZDogZWRnZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWUsXG4gICAgc291cmNlOiBlZGdlLnBzdHlsZSgnc291cmNlLWxhYmVsJykuc3RyVmFsdWUsXG4gICAgdGFyZ2V0OiBlZGdlLnBzdHlsZSgndGFyZ2V0LWxhYmVsJykuc3RyVmFsdWVcbiAgfTtcblxuICBpZiAoY29udGVudC5taWQgfHwgY29udGVudC5zb3VyY2UgfHwgY29udGVudC50YXJnZXQpIDsgZWxzZSB7XG4gICAgICByZXR1cm47IC8vIG5vIGxhYmVscyA9PiBubyBjYWxjc1xuICAgIH0gLy8gYWRkIGNlbnRlciBwb2ludCB0byBzdHlsZSBzbyBib3VuZGluZyBib3ggY2FsY3VsYXRpb25zIGNhbiB1c2UgaXRcbiAgLy9cblxuXG4gIHAgPSB7XG4gICAgeDogcnMubWlkWCxcbiAgICB5OiBycy5taWRZXG4gIH07XG5cbiAgdmFyIHNldFJzID0gZnVuY3Rpb24gc2V0UnMocHJvcE5hbWUsIHByZWZpeCwgdmFsdWUpIHtcbiAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKTtcbiAgfTtcblxuICBzZXRScygnbGFiZWxYJywgbnVsbCwgcC54KTtcbiAgc2V0UnMoJ2xhYmVsWScsIG51bGwsIHAueSk7XG4gIHZhciBtaWRBbmdsZSA9IGxpbmVBbmdsZUZyb21EZWx0YShycy5taWREaXNwWCwgcnMubWlkRGlzcFkpO1xuICBzZXRScygnbGFiZWxBdXRvQW5nbGUnLCBudWxsLCBtaWRBbmdsZSk7XG5cbiAgdmFyIGNyZWF0ZUNvbnRyb2xQb2ludEluZm8gPSBmdW5jdGlvbiBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCkge1xuICAgIGlmIChjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29udHJvbFBvaW50SW5mby5jYWNoZTtcbiAgICB9IC8vIHVzZSBjYWNoZSBzbyBvbmx5IDF4IHBlciBlZGdlXG5cblxuICAgIHZhciBjdHJscHRzID0gW107IC8vIHN0b3JlIGVhY2ggY3RybHB0IGluZm8gaW5pdFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgKyA1IDwgcnMuYWxscHRzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICB2YXIgcDAgPSB7XG4gICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgfTtcbiAgICAgIHZhciBwMSA9IHtcbiAgICAgICAgeDogcnMuYWxscHRzW2kgKyAyXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAzXVxuICAgICAgfTsgLy8gY3RybHB0XG5cbiAgICAgIHZhciBwMiA9IHtcbiAgICAgICAgeDogcnMuYWxscHRzW2kgKyA0XSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyA1XVxuICAgICAgfTtcbiAgICAgIGN0cmxwdHMucHVzaCh7XG4gICAgICAgIHAwOiBwMCxcbiAgICAgICAgcDE6IHAxLFxuICAgICAgICBwMjogcDIsXG4gICAgICAgIHN0YXJ0RGlzdDogMCxcbiAgICAgICAgbGVuZ3RoOiAwLFxuICAgICAgICBzZWdtZW50czogW11cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBicHRzID0gX3AucnN0eWxlLmJlemllclB0cztcbiAgICB2YXIgblByb2pzID0gci5iZXppZXJQcm9qUGN0cy5sZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBhZGRTZWdtZW50KGNwLCBwMCwgcDEsIHQwLCB0MSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGRpc3QocDAsIHAxKTtcbiAgICAgIHZhciBwcmV2U2VnbWVudCA9IGNwLnNlZ21lbnRzW2NwLnNlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIHNlZ21lbnQgPSB7XG4gICAgICAgIHAwOiBwMCxcbiAgICAgICAgcDE6IHAxLFxuICAgICAgICB0MDogdDAsXG4gICAgICAgIHQxOiB0MSxcbiAgICAgICAgc3RhcnREaXN0OiBwcmV2U2VnbWVudCA/IHByZXZTZWdtZW50LnN0YXJ0RGlzdCArIHByZXZTZWdtZW50Lmxlbmd0aCA6IDAsXG4gICAgICAgIGxlbmd0aDogbGVuZ3RoXG4gICAgICB9O1xuICAgICAgY3Auc2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgICAgIGNwLmxlbmd0aCArPSBsZW5ndGg7XG4gICAgfSAvLyB1cGRhdGUgZWFjaCBjdHJscHQgd2l0aCBzZWdtZW50IGluZm9cblxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGN0cmxwdHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgY3AgPSBjdHJscHRzW19pXTtcbiAgICAgIHZhciBwcmV2Q3AgPSBjdHJscHRzW19pIC0gMV07XG5cbiAgICAgIGlmIChwcmV2Q3ApIHtcbiAgICAgICAgY3Auc3RhcnREaXN0ID0gcHJldkNwLnN0YXJ0RGlzdCArIHByZXZDcC5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGFkZFNlZ21lbnQoY3AsIGNwLnAwLCBicHRzW19pICogblByb2pzXSwgMCwgci5iZXppZXJQcm9qUGN0c1swXSk7IC8vIGZpcnN0XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgblByb2pzIC0gMTsgaisrKSB7XG4gICAgICAgIGFkZFNlZ21lbnQoY3AsIGJwdHNbX2kgKiBuUHJvanMgKyBqXSwgYnB0c1tfaSAqIG5Qcm9qcyArIGogKyAxXSwgci5iZXppZXJQcm9qUGN0c1tqXSwgci5iZXppZXJQcm9qUGN0c1tqICsgMV0pO1xuICAgICAgfVxuXG4gICAgICBhZGRTZWdtZW50KGNwLCBicHRzW19pICogblByb2pzICsgblByb2pzIC0gMV0sIGNwLnAyLCByLmJlemllclByb2pQY3RzW25Qcm9qcyAtIDFdLCAxKTsgLy8gbGFzdFxuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlID0gY3RybHB0cztcbiAgfTtcblxuICB2YXIgY2FsY3VsYXRlRW5kUHJvamVjdGlvbiA9IGZ1bmN0aW9uIGNhbGN1bGF0ZUVuZFByb2plY3Rpb24ocHJlZml4KSB7XG4gICAgdmFyIGFuZ2xlO1xuICAgIHZhciBpc1NyYyA9IHByZWZpeCA9PT0gJ3NvdXJjZSc7XG5cbiAgICBpZiAoIWNvbnRlbnRbcHJlZml4XSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBvZmZzZXQgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLXRleHQtb2Zmc2V0JykucGZWYWx1ZTtcblxuICAgIHN3aXRjaCAocnMuZWRnZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlbGYnOlxuICAgICAgY2FzZSAnY29tcG91bmQnOlxuICAgICAgY2FzZSAnYmV6aWVyJzpcbiAgICAgIGNhc2UgJ211bHRpYmV6aWVyJzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBjcHMgPSBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCk7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkO1xuICAgICAgICAgIHZhciBzdGFydERpc3QgPSAwO1xuICAgICAgICAgIHZhciB0b3RhbERpc3QgPSAwOyAvLyBmaW5kIHRoZSBzZWdtZW50IHdlJ3JlIG9uXG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9jcCA9IGNwc1tpc1NyYyA/IGkgOiBjcHMubGVuZ3RoIC0gMSAtIGldO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9jcC5zZWdtZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB2YXIgX3NlZyA9IF9jcC5zZWdtZW50c1tpc1NyYyA/IGogOiBfY3Auc2VnbWVudHMubGVuZ3RoIC0gMSAtIGpdO1xuICAgICAgICAgICAgICB2YXIgbGFzdFNlZyA9IGkgPT09IGNwcy5sZW5ndGggLSAxICYmIGogPT09IF9jcC5zZWdtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICBzdGFydERpc3QgPSB0b3RhbERpc3Q7XG4gICAgICAgICAgICAgIHRvdGFsRGlzdCArPSBfc2VnLmxlbmd0aDtcblxuICAgICAgICAgICAgICBpZiAodG90YWxEaXN0ID49IG9mZnNldCB8fCBsYXN0U2VnKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgICAgICAgICBjcDogX2NwLFxuICAgICAgICAgICAgICAgICAgc2VnbWVudDogX3NlZ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjcCA9IHNlbGVjdGVkLmNwO1xuICAgICAgICAgIHZhciBzZWcgPSBzZWxlY3RlZC5zZWdtZW50O1xuICAgICAgICAgIHZhciB0U2VnbWVudCA9IChvZmZzZXQgLSBzdGFydERpc3QpIC8gc2VnLmxlbmd0aDtcbiAgICAgICAgICB2YXIgc2VnRHQgPSBzZWcudDEgLSBzZWcudDA7XG4gICAgICAgICAgdmFyIHQgPSBpc1NyYyA/IHNlZy50MCArIHNlZ0R0ICogdFNlZ21lbnQgOiBzZWcudDEgLSBzZWdEdCAqIHRTZWdtZW50O1xuICAgICAgICAgIHQgPSBib3VuZCgwLCB0LCAxKTtcbiAgICAgICAgICBwID0gcWJlemllclB0QXQoY3AucDAsIGNwLnAxLCBjcC5wMiwgdCk7XG4gICAgICAgICAgYW5nbGUgPSBiZXppZXJBbmdsZShjcC5wMCwgY3AucDEsIGNwLnAyLCB0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdzdHJhaWdodCc6XG4gICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICBjYXNlICdoYXlzdGFjayc6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgZCA9IDAsXG4gICAgICAgICAgICAgIGRpLFxuICAgICAgICAgICAgICBkMDtcbiAgICAgICAgICB2YXIgcDAsIHAxO1xuICAgICAgICAgIHZhciBsID0gcnMuYWxscHRzLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiArIDMgPCBsOyBfaTIgKz0gMikge1xuICAgICAgICAgICAgaWYgKGlzU3JjKSB7XG4gICAgICAgICAgICAgIHAwID0ge1xuICAgICAgICAgICAgICAgIHg6IHJzLmFsbHB0c1tfaTJdLFxuICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tfaTIgKyAxXVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBwMSA9IHtcbiAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbX2kyICsgMl0sXG4gICAgICAgICAgICAgICAgeTogcnMuYWxscHRzW19pMiArIDNdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwMCA9IHtcbiAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbbCAtIDIgLSBfaTJdLFxuICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tsIC0gMSAtIF9pMl1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcDEgPSB7XG4gICAgICAgICAgICAgICAgeDogcnMuYWxscHRzW2wgLSA0IC0gX2kyXSxcbiAgICAgICAgICAgICAgICB5OiBycy5hbGxwdHNbbCAtIDMgLSBfaTJdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpID0gZGlzdChwMCwgcDEpO1xuICAgICAgICAgICAgZDAgPSBkO1xuICAgICAgICAgICAgZCArPSBkaTtcblxuICAgICAgICAgICAgaWYgKGQgPj0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBwRCA9IG9mZnNldCAtIGQwO1xuXG4gICAgICAgICAgdmFyIF90ID0gcEQgLyBkaTtcblxuICAgICAgICAgIF90ID0gYm91bmQoMCwgX3QsIDEpO1xuICAgICAgICAgIHAgPSBsaW5lQXQocDAsIHAxLCBfdCk7XG4gICAgICAgICAgYW5nbGUgPSBsaW5lQW5nbGUocDAsIHAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFJzKCdsYWJlbFgnLCBwcmVmaXgsIHAueCk7XG4gICAgc2V0UnMoJ2xhYmVsWScsIHByZWZpeCwgcC55KTtcbiAgICBzZXRScygnbGFiZWxBdXRvQW5nbGUnLCBwcmVmaXgsIGFuZ2xlKTtcbiAgfTtcblxuICBjYWxjdWxhdGVFbmRQcm9qZWN0aW9uKCdzb3VyY2UnKTtcbiAgY2FsY3VsYXRlRW5kUHJvamVjdGlvbigndGFyZ2V0Jyk7XG4gIHRoaXMuYXBwbHlMYWJlbERpbWVuc2lvbnMoZWRnZSk7XG59O1xuXG5CUnAkNi5hcHBseUxhYmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdGhpcy5hcHBseVByZWZpeGVkTGFiZWxEaW1lbnNpb25zKGVsZSk7XG5cbiAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgIHRoaXMuYXBwbHlQcmVmaXhlZExhYmVsRGltZW5zaW9ucyhlbGUsICdzb3VyY2UnKTtcbiAgICB0aGlzLmFwcGx5UHJlZml4ZWRMYWJlbERpbWVuc2lvbnMoZWxlLCAndGFyZ2V0Jyk7XG4gIH1cbn07XG5cbkJScCQ2LmFwcGx5UHJlZml4ZWRMYWJlbERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgdGV4dCA9IHRoaXMuZ2V0TGFiZWxUZXh0KGVsZSwgcHJlZml4KTtcbiAgdmFyIGxhYmVsRGltcyA9IHRoaXMuY2FsY3VsYXRlTGFiZWxEaW1lbnNpb25zKGVsZSwgdGV4dCk7XG4gIHZhciBsaW5lSGVpZ2h0ID0gZWxlLnBzdHlsZSgnbGluZS1oZWlnaHQnKS5wZlZhbHVlO1xuICB2YXIgdGV4dFdyYXAgPSBlbGUucHN0eWxlKCd0ZXh0LXdyYXAnKS5zdHJWYWx1ZTtcbiAgdmFyIGxpbmVzID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgcHJlZml4KSB8fCBbXTtcbiAgdmFyIG51bUxpbmVzID0gdGV4dFdyYXAgIT09ICd3cmFwJyA/IDEgOiBNYXRoLm1heChsaW5lcy5sZW5ndGgsIDEpO1xuICB2YXIgbm9ybVBlckxpbmVIZWlnaHQgPSBsYWJlbERpbXMuaGVpZ2h0IC8gbnVtTGluZXM7XG4gIHZhciBsYWJlbExpbmVIZWlnaHQgPSBub3JtUGVyTGluZUhlaWdodCAqIGxpbmVIZWlnaHQ7XG4gIHZhciB3aWR0aCA9IGxhYmVsRGltcy53aWR0aDtcbiAgdmFyIGhlaWdodCA9IGxhYmVsRGltcy5oZWlnaHQgKyAobnVtTGluZXMgLSAxKSAqIChsaW5lSGVpZ2h0IC0gMSkgKiBub3JtUGVyTGluZUhlaWdodDtcbiAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnN0eWxlLCAnbGFiZWxIZWlnaHQnLCBwcmVmaXgsIGhlaWdodCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbEhlaWdodCcsIHByZWZpeCwgaGVpZ2h0KTtcbiAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCwgbGFiZWxMaW5lSGVpZ2h0KTtcbn07XG5cbkJScCQ2LmdldExhYmVsVGV4dCA9IGZ1bmN0aW9uIChlbGUsIHByZWZpeCkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBwZmQgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHBmZCArICdsYWJlbCcpLnN0clZhbHVlO1xuICB2YXIgdGV4dFRyYW5zZm9ybSA9IGVsZS5wc3R5bGUoJ3RleHQtdHJhbnNmb3JtJykudmFsdWU7XG5cbiAgdmFyIHJzY3JhdGNoID0gZnVuY3Rpb24gcnNjcmF0Y2gocHJvcE5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4KTtcbiAgICB9XG4gIH07IC8vIGZvciBlbXB0eSB0ZXh0LCBza2lwIGFsbCBwcm9jZXNzaW5nXG5cblxuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbm9uZScpIDsgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAndXBwZXJjYXNlJykge1xuICAgIHRleHQgPSB0ZXh0LnRvVXBwZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbG93ZXJjYXNlJykge1xuICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICB2YXIgd3JhcFN0eWxlID0gZWxlLnBzdHlsZSgndGV4dC13cmFwJykudmFsdWU7XG5cbiAgaWYgKHdyYXBTdHlsZSA9PT0gJ3dyYXAnKSB7XG4gICAgdmFyIGxhYmVsS2V5ID0gcnNjcmF0Y2goJ2xhYmVsS2V5Jyk7IC8vIHNhdmUgcmVjYWxjIGlmIHRoZSBsYWJlbCBpcyB0aGUgc2FtZSBhcyBiZWZvcmVcblxuICAgIGlmIChsYWJlbEtleSAhPSBudWxsICYmIHJzY3JhdGNoKCdsYWJlbFdyYXBLZXknKSA9PT0gbGFiZWxLZXkpIHtcbiAgICAgIHJldHVybiByc2NyYXRjaCgnbGFiZWxXcmFwQ2FjaGVkVGV4dCcpO1xuICAgIH1cblxuICAgIHZhciB6d3NwID0gXCJcXHUyMDBCXCI7XG4gICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgdmFyIG1heFcgPSBlbGUucHN0eWxlKCd0ZXh0LW1heC13aWR0aCcpLnBmVmFsdWU7XG4gICAgdmFyIG92ZXJmbG93ID0gZWxlLnBzdHlsZSgndGV4dC1vdmVyZmxvdy13cmFwJykudmFsdWU7XG4gICAgdmFyIG92ZXJmbG93QW55ID0gb3ZlcmZsb3cgPT09ICdhbnl3aGVyZSc7XG4gICAgdmFyIHdyYXBwZWRMaW5lcyA9IFtdO1xuICAgIHZhciB3b3Jkc1JlZ2V4ID0gL1tcXHNcXHUyMDBiXSsvO1xuICAgIHZhciB3b3JkU2VwYXJhdG9yID0gb3ZlcmZsb3dBbnkgPyAnJyA6ICcgJztcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIHZhciBsaW5lID0gbGluZXNbbF07XG4gICAgICB2YXIgbGluZURpbXMgPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIGxpbmUpO1xuICAgICAgdmFyIGxpbmVXID0gbGluZURpbXMud2lkdGg7XG5cbiAgICAgIGlmIChvdmVyZmxvd0FueSkge1xuICAgICAgICB2YXIgcHJvY2Vzc2VkTGluZSA9IGxpbmUuc3BsaXQoJycpLmpvaW4oendzcCk7XG4gICAgICAgIGxpbmUgPSBwcm9jZXNzZWRMaW5lO1xuICAgICAgfVxuXG4gICAgICBpZiAobGluZVcgPiBtYXhXKSB7XG4gICAgICAgIC8vIGxpbmUgaXMgdG9vIGxvbmdcbiAgICAgICAgdmFyIHdvcmRzID0gbGluZS5zcGxpdCh3b3Jkc1JlZ2V4KTtcbiAgICAgICAgdmFyIHN1YmxpbmUgPSAnJztcblxuICAgICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IHdvcmRzLmxlbmd0aDsgdysrKSB7XG4gICAgICAgICAgdmFyIHdvcmQgPSB3b3Jkc1t3XTtcbiAgICAgICAgICB2YXIgdGVzdExpbmUgPSBzdWJsaW5lLmxlbmd0aCA9PT0gMCA/IHdvcmQgOiBzdWJsaW5lICsgd29yZFNlcGFyYXRvciArIHdvcmQ7XG4gICAgICAgICAgdmFyIHRlc3REaW1zID0gdGhpcy5jYWxjdWxhdGVMYWJlbERpbWVuc2lvbnMoZWxlLCB0ZXN0TGluZSk7XG4gICAgICAgICAgdmFyIHRlc3RXID0gdGVzdERpbXMud2lkdGg7XG5cbiAgICAgICAgICBpZiAodGVzdFcgPD0gbWF4Vykge1xuICAgICAgICAgICAgLy8gd29yZCBmaXRzIG9uIGN1cnJlbnQgbGluZVxuICAgICAgICAgICAgc3VibGluZSArPSB3b3JkICsgd29yZFNlcGFyYXRvcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd29yZCBzdGFydHMgbmV3IGxpbmVcbiAgICAgICAgICAgIGlmIChzdWJsaW5lKSB7XG4gICAgICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJsaW5lID0gd29yZCArIHdvcmRTZXBhcmF0b3I7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGlmIHRoZXJlJ3MgcmVtYWluaW5nIHRleHQsIHB1dCBpdCBpbiBhIHdyYXBwZWQgbGluZVxuXG5cbiAgICAgICAgaWYgKCFzdWJsaW5lLm1hdGNoKC9eW1xcc1xcdTIwMGJdKyQvKSkge1xuICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBsaW5lIGlzIGFscmVhZHkgc2hvcnQgZW5vdWdoXG4gICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgfVxuICAgIH0gLy8gZm9yXG5cblxuICAgIHJzY3JhdGNoKCdsYWJlbFdyYXBDYWNoZWRMaW5lcycsIHdyYXBwZWRMaW5lcyk7XG4gICAgdGV4dCA9IHJzY3JhdGNoKCdsYWJlbFdyYXBDYWNoZWRUZXh0Jywgd3JhcHBlZExpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICByc2NyYXRjaCgnbGFiZWxXcmFwS2V5JywgbGFiZWxLZXkpO1xuICB9IGVsc2UgaWYgKHdyYXBTdHlsZSA9PT0gJ2VsbGlwc2lzJykge1xuICAgIHZhciBfbWF4VyA9IGVsZS5wc3R5bGUoJ3RleHQtbWF4LXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgZWxsaXBzaXplZCA9ICcnO1xuICAgIHZhciBlbGxpcHNpcyA9IFwiXFx1MjAyNlwiO1xuICAgIHZhciBpbmNMYXN0Q2ggPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIHRleHQpLndpZHRoIDwgX21heFcpIHtcbiAgICAgIC8vIHRoZSBsYWJlbCBhbHJlYWR5IGZpdHNcbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdpZHRoV2l0aE5leHRDaCA9IHRoaXMuY2FsY3VsYXRlTGFiZWxEaW1lbnNpb25zKGVsZSwgZWxsaXBzaXplZCArIHRleHRbaV0gKyBlbGxpcHNpcykud2lkdGg7XG5cbiAgICAgIGlmICh3aWR0aFdpdGhOZXh0Q2ggPiBfbWF4Vykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZWxsaXBzaXplZCArPSB0ZXh0W2ldO1xuXG4gICAgICBpZiAoaSA9PT0gdGV4dC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGluY0xhc3RDaCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpbmNMYXN0Q2gpIHtcbiAgICAgIGVsbGlwc2l6ZWQgKz0gZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsbGlwc2l6ZWQ7XG4gIH0gLy8gaWYgZWxsaXBzaXplXG5cblxuICByZXR1cm4gdGV4dDtcbn07XG5cbkJScCQ2LmdldExhYmVsSnVzdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdmFyIGp1c3RpZmljYXRpb24gPSBlbGUucHN0eWxlKCd0ZXh0LWp1c3RpZmljYXRpb24nKS5zdHJWYWx1ZTtcbiAgdmFyIHRleHRIYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnN0clZhbHVlO1xuXG4gIGlmIChqdXN0aWZpY2F0aW9uID09PSAnYXV0bycpIHtcbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBzd2l0Y2ggKHRleHRIYWxpZ24pIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgcmV0dXJuICdyaWdodCc7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHJldHVybiAnbGVmdCc7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2NlbnRlcic7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGp1c3RpZmljYXRpb247XG4gIH1cbn07XG5cbkJScCQ2LmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uIChlbGUsIHRleHQpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgY2FjaGVLZXkgPSBoYXNoU3RyaW5nKHRleHQsIGVsZS5fcHJpdmF0ZS5sYWJlbERpbXNLZXkpO1xuICB2YXIgY2FjaGUgPSByLmxhYmVsRGltQ2FjaGUgfHwgKHIubGFiZWxEaW1DYWNoZSA9IFtdKTtcbiAgdmFyIGV4aXN0aW5nVmFsID0gY2FjaGVbY2FjaGVLZXldO1xuXG4gIGlmIChleGlzdGluZ1ZhbCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nVmFsO1xuICB9XG5cbiAgdmFyIHBhZGRpbmcgPSAwOyAvLyBhZGQgcGFkZGluZyBhcm91bmQgdGV4dCBkaW1zLCBhcyB0aGUgbWVhc3VyZW1lbnQgaXNuJ3QgdGhhdCBhY2N1cmF0ZVxuXG4gIHZhciBmU3R5bGUgPSBlbGUucHN0eWxlKCdmb250LXN0eWxlJykuc3RyVmFsdWU7XG4gIHZhciBzaXplID0gZWxlLnBzdHlsZSgnZm9udC1zaXplJykucGZWYWx1ZTtcbiAgdmFyIGZhbWlseSA9IGVsZS5wc3R5bGUoJ2ZvbnQtZmFtaWx5Jykuc3RyVmFsdWU7XG4gIHZhciB3ZWlnaHQgPSBlbGUucHN0eWxlKCdmb250LXdlaWdodCcpLnN0clZhbHVlO1xuICB2YXIgY2FudmFzID0gdGhpcy5sYWJlbENhbGNDYW52YXM7XG4gIHZhciBjMmQgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhc0NvbnRleHQ7XG5cbiAgaWYgKCFjYW52YXMpIHtcbiAgICBjYW52YXMgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGMyZCA9IHRoaXMubGFiZWxDYWxjQ2FudmFzQ29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHZhciBkcyA9IGNhbnZhcy5zdHlsZTtcbiAgICBkcy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgZHMubGVmdCA9ICctOTk5OXB4JztcbiAgICBkcy50b3AgPSAnLTk5OTlweCc7XG4gICAgZHMuekluZGV4ID0gJy0xJztcbiAgICBkcy52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgZHMucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgfVxuXG4gIGMyZC5mb250ID0gXCJcIi5jb25jYXQoZlN0eWxlLCBcIiBcIikuY29uY2F0KHdlaWdodCwgXCIgXCIpLmNvbmNhdChzaXplLCBcInB4IFwiKS5jb25jYXQoZmFtaWx5KTtcbiAgdmFyIHdpZHRoID0gMDtcbiAgdmFyIGhlaWdodCA9IDA7XG4gIHZhciBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGluZSA9IGxpbmVzW2ldO1xuICAgIHZhciBtZXRyaWNzID0gYzJkLm1lYXN1cmVUZXh0KGxpbmUpO1xuICAgIHZhciB3ID0gTWF0aC5jZWlsKG1ldHJpY3Mud2lkdGgpO1xuICAgIHZhciBoID0gc2l6ZTtcbiAgICB3aWR0aCA9IE1hdGgubWF4KHcsIHdpZHRoKTtcbiAgICBoZWlnaHQgKz0gaDtcbiAgfVxuXG4gIHdpZHRoICs9IHBhZGRpbmc7XG4gIGhlaWdodCArPSBwYWRkaW5nO1xuICByZXR1cm4gY2FjaGVbY2FjaGVLZXldID0ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufTtcblxuQlJwJDYuY2FsY3VsYXRlTGFiZWxBbmdsZSA9IGZ1bmN0aW9uIChlbGUsIHByZWZpeCkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICB2YXIgcHJlZml4RGFzaCA9IHByZWZpeCA/IHByZWZpeCArICctJyA6ICcnO1xuICB2YXIgcm90ID0gZWxlLnBzdHlsZShwcmVmaXhEYXNoICsgJ3RleHQtcm90YXRpb24nKTtcbiAgdmFyIHJvdFN0ciA9IHJvdC5zdHJWYWx1ZTtcblxuICBpZiAocm90U3RyID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChpc0VkZ2UgJiYgcm90U3RyID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICByZXR1cm4gcnMubGFiZWxBdXRvQW5nbGU7XG4gIH0gZWxzZSBpZiAocm90U3RyID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcm90LnBmVmFsdWU7XG4gIH1cbn07XG5cbkJScCQ2LmNhbGN1bGF0ZUxhYmVsQW5nbGVzID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gIHJzLmxhYmVsQW5nbGUgPSByLmNhbGN1bGF0ZUxhYmVsQW5nbGUoZWxlKTtcblxuICBpZiAoaXNFZGdlKSB7XG4gICAgcnMuc291cmNlTGFiZWxBbmdsZSA9IHIuY2FsY3VsYXRlTGFiZWxBbmdsZShlbGUsICdzb3VyY2UnKTtcbiAgICBycy50YXJnZXRMYWJlbEFuZ2xlID0gci5jYWxjdWxhdGVMYWJlbEFuZ2xlKGVsZSwgJ3RhcmdldCcpO1xuICB9XG59O1xuXG52YXIgQlJwJDcgPSB7fTtcbnZhciBUT09fU01BTExfQ1VUX1JFQ1QgPSAyODtcbnZhciB3YXJuZWRDdXRSZWN0ID0gZmFsc2U7XG5cbkJScCQ3LmdldE5vZGVTaGFwZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHNoYXBlID0gbm9kZS5wc3R5bGUoJ3NoYXBlJykudmFsdWU7XG5cbiAgaWYgKHNoYXBlID09PSAnY3V0cmVjdGFuZ2xlJyAmJiAobm9kZS53aWR0aCgpIDwgVE9PX1NNQUxMX0NVVF9SRUNUIHx8IG5vZGUuaGVpZ2h0KCkgPCBUT09fU01BTExfQ1VUX1JFQ1QpKSB7XG4gICAgaWYgKCF3YXJuZWRDdXRSZWN0KSB7XG4gICAgICB3YXJuKCdUaGUgYGN1dHJlY3RhbmdsZWAgbm9kZSBzaGFwZSBjYW4gbm90IGJlIHVzZWQgYXQgc21hbGwgc2l6ZXMgc28gYHJlY3RhbmdsZWAgaXMgdXNlZCBpbnN0ZWFkJyk7XG4gICAgICB3YXJuZWRDdXRSZWN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ3JlY3RhbmdsZSc7XG4gIH1cblxuICBpZiAobm9kZS5pc1BhcmVudCgpKSB7XG4gICAgaWYgKHNoYXBlID09PSAncmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ3JvdW5kcmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ3JvdW5kLXJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdjdXRyZWN0YW5nbGUnIHx8IHNoYXBlID09PSAnY3V0LXJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdiYXJyZWwnKSB7XG4gICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAncmVjdGFuZ2xlJztcbiAgICB9XG4gIH1cblxuICBpZiAoc2hhcGUgPT09ICdwb2x5Z29uJykge1xuICAgIHZhciBwb2ludHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS52YWx1ZTtcbiAgICByZXR1cm4gci5ub2RlU2hhcGVzLm1ha2VQb2x5Z29uKHBvaW50cykubmFtZTtcbiAgfVxuXG4gIHJldHVybiBzaGFwZTtcbn07XG5cbnZhciBCUnAkOCA9IHt9O1xuXG5CUnAkOC5yZWdpc3RlckNhbGN1bGF0aW9uTGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY3kgPSB0aGlzLmN5O1xuICB2YXIgZWxlc1RvVXBkYXRlID0gY3kuY29sbGVjdGlvbigpO1xuICB2YXIgciA9IHRoaXM7XG5cbiAgdmFyIGVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKGVsZXMpIHtcbiAgICB2YXIgZGlydHlTdHlsZUNhY2hlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICBlbGVzVG9VcGRhdGUubWVyZ2UoZWxlcyk7XG5cbiAgICBpZiAoZGlydHlTdHlsZUNhY2hlcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gICAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgICAgICByc3R5bGUuY2xlYW5Db25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgci5iaW5kZXIoY3kpLm9uKCdib3VuZHMuKiBkaXJ0eS4qJywgZnVuY3Rpb24gb25EaXJ0eUJvdW5kcyhlKSB7XG4gICAgdmFyIGVsZSA9IGUudGFyZ2V0O1xuICAgIGVucXVldWUoZWxlKTtcbiAgfSkub24oJ3N0eWxlLiogYmFja2dyb3VuZC4qJywgZnVuY3Rpb24gb25EaXJ0eVN0eWxlKGUpIHtcbiAgICB2YXIgZWxlID0gZS50YXJnZXQ7XG4gICAgZW5xdWV1ZShlbGUsIGZhbHNlKTtcbiAgfSk7XG5cbiAgdmFyIHVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gdXBkYXRlRWxlQ2FsY3Mod2lsbERyYXcpIHtcbiAgICBpZiAod2lsbERyYXcpIHtcbiAgICAgIHZhciBmbnMgPSByLm9uVXBkYXRlRWxlQ2FsY3NGbnM7IC8vIGJlY2F1c2Ugd2UgbmVlZCB0byBoYXZlIHVwLXRvLWRhdGUgc3R5bGUgKGUuZy4gc3R5bGVzaGVldCBtYXBwZXJzKVxuICAgICAgLy8gYmVmb3JlIGNhbGN1bGF0aW5nIHJlbmRlcmVkIHN0eWxlIChhbmQgcHN0eWxlIG1pZ2h0IG5vdCBiZSBjYWxsZWQgeWV0KVxuXG4gICAgICBlbGVzVG9VcGRhdGUuY2xlYW5TdHlsZSgpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1RvVXBkYXRlW2ldO1xuICAgICAgICB2YXIgcnN0eWxlID0gZWxlLl9wcml2YXRlLnJzdHlsZTtcblxuICAgICAgICBpZiAoZWxlLmlzTm9kZSgpICYmICFyc3R5bGUuY2xlYW5Db25uZWN0ZWQpIHtcbiAgICAgICAgICBlbnF1ZXVlKGVsZS5jb25uZWN0ZWRFZGdlcygpKTtcbiAgICAgICAgICByc3R5bGUuY2xlYW5Db25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmbnMpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZucy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICB2YXIgZm4gPSBmbnNbX2ldO1xuICAgICAgICAgIGZuKHdpbGxEcmF3LCBlbGVzVG9VcGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHIucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVsZXNUb1VwZGF0ZSk7XG4gICAgICBlbGVzVG9VcGRhdGUgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIHIuZmx1c2hSZW5kZXJlZFN0eWxlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdXBkYXRlRWxlQ2FsY3ModHJ1ZSk7XG4gIH07XG5cbiAgci5iZWZvcmVSZW5kZXIodXBkYXRlRWxlQ2FsY3MsIHIuYmVmb3JlUmVuZGVyUHJpb3JpdGllcy5lbGVDYWxjcyk7XG59O1xuXG5CUnAkOC5vblVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBmbnMgPSB0aGlzLm9uVXBkYXRlRWxlQ2FsY3NGbnMgPSB0aGlzLm9uVXBkYXRlRWxlQ2FsY3NGbnMgfHwgW107XG4gIGZucy5wdXNoKGZuKTtcbn07XG5cbkJScCQ4LnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSA9IGZ1bmN0aW9uIChlbGVzLCB1c2VDYWNoZSkge1xuICB2YXIgaXNDbGVhbkNvbm5lY3RlZCA9IGZ1bmN0aW9uIGlzQ2xlYW5Db25uZWN0ZWQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5yc3R5bGUuY2xlYW5Db25uZWN0ZWQ7XG4gIH07XG5cbiAgdmFyIGVkZ2VzID0gW107XG4gIHZhciBub2RlcyA9IFtdOyAvLyB0aGUgcmVuZGVyZXIgY2FuJ3QgYmUgdXNlZCBmb3IgY2FsY3Mgd2hlbiBkZXN0cm95ZWQsIGUuZy4gZWxlLmJvdW5kaW5nQm94KClcblxuICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gdXNlIGNhY2hlIGJ5IGRlZmF1bHQgZm9yIHBlcmZcblxuXG4gIGlmICh1c2VDYWNoZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdXNlQ2FjaGUgPSB0cnVlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7IC8vIGFuIGVkZ2UgbWF5IGJlIGltcGxpY2l0bHkgZGlydHkgYi9jIG9mIG9uZSBvZiBpdHMgY29ubmVjdGVkIG5vZGVzXG4gICAgLy8gKGFuZCBhIHJlcXVlc3QgZm9yIHJlY2FsYyBtYXkgY29tZSBpbiBiZXR3ZWVuIGZyYW1lcylcblxuICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKCFpc0NsZWFuQ29ubmVjdGVkKGVsZS5zb3VyY2UoKSkgfHwgIWlzQ2xlYW5Db25uZWN0ZWQoZWxlLnRhcmdldCgpKSkpIHtcbiAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgIH0gLy8gb25seSB1cGRhdGUgaWYgZGlydHkgYW5kIGluIGdyYXBoXG5cblxuICAgIGlmICh1c2VDYWNoZSAmJiByc3R5bGUuY2xlYW4gfHwgZWxlLnJlbW92ZWQoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBvbmx5IHVwZGF0ZSBpZiBub3QgZGlzcGxheTogbm9uZVxuXG5cbiAgICBpZiAoZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlID09PSAnbm9uZScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChfcC5ncm91cCA9PT0gJ25vZGVzJykge1xuICAgICAgbm9kZXMucHVzaChlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlZGdlc1xuICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgIH1cblxuICAgIHJzdHlsZS5jbGVhbiA9IHRydWU7XG4gIH0gLy8gdXBkYXRlIG5vZGUgZGF0YSBmcm9tIHByb2plY3Rpb25zXG5cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9lbGUgPSBub2Rlc1tfaTJdO1xuICAgIHZhciBfcDIgPSBfZWxlLl9wcml2YXRlO1xuICAgIHZhciBfcnN0eWxlID0gX3AyLnJzdHlsZTtcblxuICAgIHZhciBwb3MgPSBfZWxlLnBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLnJlY2FsY3VsYXRlTm9kZUxhYmVsUHJvamVjdGlvbihfZWxlKTtcbiAgICBfcnN0eWxlLm5vZGVYID0gcG9zLng7XG4gICAgX3JzdHlsZS5ub2RlWSA9IHBvcy55O1xuICAgIF9yc3R5bGUubm9kZVcgPSBfZWxlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgIF9yc3R5bGUubm9kZUggPSBfZWxlLnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZTtcbiAgfVxuXG4gIHRoaXMucmVjYWxjdWxhdGVFZGdlUHJvamVjdGlvbnMoZWRnZXMpOyAvLyB1cGRhdGUgZWRnZSBkYXRhIGZyb20gcHJvamVjdGlvbnNcblxuICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBlZGdlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgdmFyIF9lbGUyID0gZWRnZXNbX2kzXTtcbiAgICB2YXIgX3AzID0gX2VsZTIuX3ByaXZhdGU7XG4gICAgdmFyIF9yc3R5bGUyID0gX3AzLnJzdHlsZTtcbiAgICB2YXIgcnMgPSBfcDMucnNjcmF0Y2g7IC8vIHVwZGF0ZSByc3R5bGUgcG9zaXRpb25zXG5cbiAgICBfcnN0eWxlMi5zcmNYID0gcnMuYXJyb3dTdGFydFg7XG4gICAgX3JzdHlsZTIuc3JjWSA9IHJzLmFycm93U3RhcnRZO1xuICAgIF9yc3R5bGUyLnRndFggPSBycy5hcnJvd0VuZFg7XG4gICAgX3JzdHlsZTIudGd0WSA9IHJzLmFycm93RW5kWTtcbiAgICBfcnN0eWxlMi5taWRYID0gcnMubWlkWDtcbiAgICBfcnN0eWxlMi5taWRZID0gcnMubWlkWTtcbiAgICBfcnN0eWxlMi5sYWJlbEFuZ2xlID0gcnMubGFiZWxBbmdsZTtcbiAgICBfcnN0eWxlMi5zb3VyY2VMYWJlbEFuZ2xlID0gcnMuc291cmNlTGFiZWxBbmdsZTtcbiAgICBfcnN0eWxlMi50YXJnZXRMYWJlbEFuZ2xlID0gcnMudGFyZ2V0TGFiZWxBbmdsZTtcbiAgfVxufTtcblxudmFyIEJScCQ5ID0ge307XG5cbkJScCQ5LnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG5cbiAgaWYgKCFlbGVzKSB7XG4gICAgLy8ganVzdCBsZXQgdGhpcyBiZSByZWNhbGN1bGF0ZWQgb24gdGhlIG5leHQgeiBzb3J0IHRpY2tcbiAgICByZXR1cm47XG4gIH1cblxuICBlbGVzLmRyYWcgPSBbXTtcbiAgZWxlcy5ub25kcmFnID0gW107XG4gIHZhciBncmFiVGFyZ2V0cyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgIHZhciBycyA9IGVsZS5fcHJpdmF0ZS5yc2NyYXRjaDtcblxuICAgIGlmIChlbGUuZ3JhYmJlZCgpICYmICFlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgZ3JhYlRhcmdldHMucHVzaChlbGUpO1xuICAgIH0gZWxzZSBpZiAocnMuaW5EcmFnTGF5ZXIpIHtcbiAgICAgIGVsZXMuZHJhZy5wdXNoKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZXMubm9uZHJhZy5wdXNoKGVsZSk7XG4gICAgfVxuICB9IC8vIHB1dCB0aGUgZ3JhYiB0YXJnZXQgbm9kZXMgbGFzdCBzbyBpdCdzIG9uIHRvcCBvZiBpdHMgbmVpZ2hib3VyaG9vZFxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFiVGFyZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBncmFiVGFyZ2V0c1tpXTtcbiAgICBlbGVzLmRyYWcucHVzaChlbGUpO1xuICB9XG59O1xuXG5CUnAkOS5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2FjaGVkWlNvcnRlZEVsZXMgPSBudWxsO1xufTtcblxuQlJwJDkuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoZm9yY2VSZWNhbGMpIHtcbiAgaWYgKGZvcmNlUmVjYWxjIHx8ICF0aGlzLmNhY2hlZFpTb3J0ZWRFbGVzKSB7XG4gICAgdmFyIGVsZXMgPSB0aGlzLmN5Lm11dGFibGVFbGVtZW50cygpLnRvQXJyYXkoKTtcbiAgICBlbGVzLnNvcnQoekluZGV4U29ydCk7XG4gICAgZWxlcy5pbnRlcmFjdGl2ZSA9IGVsZXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaW50ZXJhY3RpdmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFpTb3J0ZWRFbGVzID0gZWxlcztcbiAgICB0aGlzLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gIH0gZWxzZSB7XG4gICAgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG4gIH1cblxuICByZXR1cm4gZWxlcztcbn07XG5cbnZhciBCUnAkYSA9IHt9O1xuW0JScCQxLCBCUnAkMiwgQlJwJDMsIEJScCQ0LCBCUnAkNSwgQlJwJDYsIEJScCQ3LCBCUnAkOCwgQlJwJDldLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gIGV4dGVuZChCUnAkYSwgcHJvcHMpO1xufSk7XG5cbnZhciBCUnAkYiA9IHt9O1xuXG5CUnAkYi5nZXRDYWNoZWRJbWFnZSA9IGZ1bmN0aW9uICh1cmwsIGNyb3NzT3JpZ2luLCBvbkxvYWQpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSB8fCB7fTtcbiAgdmFyIGNhY2hlID0gaW1hZ2VDYWNoZVt1cmxdO1xuXG4gIGlmIChjYWNoZSkge1xuICAgIGlmICghY2FjaGUuaW1hZ2UuY29tcGxldGUpIHtcbiAgICAgIGNhY2hlLmltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZS5pbWFnZTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZSA9IGltYWdlQ2FjaGVbdXJsXSA9IGltYWdlQ2FjaGVbdXJsXSB8fCB7fTtcbiAgICB2YXIgaW1hZ2UgPSBjYWNoZS5pbWFnZSA9IG5ldyBJbWFnZSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkKTtcbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGltYWdlLmVycm9yID0gdHJ1ZTtcbiAgICB9KTsgLy8gIzE1ODIgc2FmYXJpIGRvZXNuJ3QgbG9hZCBkYXRhIHVyaXMgd2l0aCBjcm9zc09yaWdpbiBwcm9wZXJseVxuICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NzhcblxuICAgIHZhciBkYXRhVXJpUHJlZml4ID0gJ2RhdGE6JztcbiAgICB2YXIgaXNEYXRhVXJpID0gdXJsLnN1YnN0cmluZygwLCBkYXRhVXJpUHJlZml4Lmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gZGF0YVVyaVByZWZpeDtcblxuICAgIGlmICghaXNEYXRhVXJpKSB7XG4gICAgICBpbWFnZS5jcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luOyAvLyBwcmV2ZW50IHRhaW50ZWQgY2FudmFzXG4gICAgfVxuXG4gICAgaW1hZ2Uuc3JjID0gdXJsO1xuICAgIHJldHVybiBpbWFnZTtcbiAgfVxufTtcblxudmFyIEJScCRjID0ge307XG4vKiBnbG9iYWwgZG9jdW1lbnQsIHdpbmRvdywgUmVzaXplT2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIgKi9cblxuQlJwJGMucmVnaXN0ZXJCaW5kaW5nID0gZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMsIFsxXSk7IC8vIGNvcHlcblxuICB2YXIgYiA9IHRoaXMuYmluZGVyKHRhcmdldCk7XG4gIHJldHVybiBiLm9uLmFwcGx5KGIsIGFyZ3MpO1xufTtcblxuQlJwJGMuYmluZGVyID0gZnVuY3Rpb24gKHRndCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciB0Z3RJc0RvbSA9IHRndCA9PT0gd2luZG93IHx8IHRndCA9PT0gZG9jdW1lbnQgfHwgdGd0ID09PSBkb2N1bWVudC5ib2R5IHx8IGRvbUVsZW1lbnQodGd0KTtcblxuICBpZiAoci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPT0gbnVsbCkge1xuICAgIC8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvRXZlbnRMaXN0ZW5lck9wdGlvbnMvYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWQjZmVhdHVyZS1kZXRlY3Rpb25cbiAgICB2YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIG9wdHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgbnVsbCwgb3B0cyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7Ly8gbm90IHN1cHBvcnRlZFxuICAgIH1cblxuICAgIHIuc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gc3VwcG9ydHNQYXNzaXZlO1xuICB9XG5cbiAgdmFyIG9uID0gZnVuY3Rpb24gb24oZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICBpZiAodGd0SXNEb20gJiYgci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMpIHtcbiAgICAgIC8vIHJlcGxhY2UgdXNlQ2FwdHVyZSB3LyBvcHRzIG9ialxuICAgICAgYXJnc1syXSA9IHtcbiAgICAgICAgY2FwdHVyZTogdXNlQ2FwdHVyZSAhPSBudWxsID8gdXNlQ2FwdHVyZSA6IGZhbHNlLFxuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgICAgb25jZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgci5iaW5kaW5ncy5wdXNoKHtcbiAgICAgIHRhcmdldDogdGd0LFxuICAgICAgYXJnczogYXJnc1xuICAgIH0pO1xuICAgICh0Z3QuYWRkRXZlbnRMaXN0ZW5lciB8fCB0Z3Qub24pLmFwcGx5KHRndCwgYXJncyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBvbjogb24sXG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogb24sXG4gICAgYWRkTGlzdGVuZXI6IG9uLFxuICAgIGJpbmQ6IG9uXG4gIH07XG59O1xuXG5CUnAkYy5ub2RlSXNEcmFnZ2FibGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLmlzTm9kZSgpICYmICFub2RlLmxvY2tlZCgpICYmIG5vZGUuZ3JhYmJhYmxlKCk7XG59O1xuXG5CUnAkYy5ub2RlSXNHcmFiYmFibGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICByZXR1cm4gdGhpcy5ub2RlSXNEcmFnZ2FibGUobm9kZSkgJiYgbm9kZS5pbnRlcmFjdGl2ZSgpO1xufTtcblxuQlJwJGMubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIHZhciBpc1NlbGVjdGVkID0gZnVuY3Rpb24gaXNTZWxlY3RlZChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnNlbGVjdGVkKCk7XG4gIH07XG5cbiAgdmFyIHRyaWdnZXJFdmVudHMgPSBmdW5jdGlvbiB0cmlnZ2VyRXZlbnRzKHRhcmdldCwgbmFtZXMsIGUsIHBvc2l0aW9uKSB7XG4gICAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgICB0YXJnZXQgPSByLmN5O1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuYW1lID0gbmFtZXNbaV07XG4gICAgICB0YXJnZXQuZW1pdCh7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6IG5hbWUsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc011bHRTZWxLZXlEb3duID0gZnVuY3Rpb24gaXNNdWx0U2VsS2V5RG93bihlKSB7XG4gICAgcmV0dXJuIGUuc2hpZnRLZXkgfHwgZS5tZXRhS2V5IHx8IGUuY3RybEtleTsgLy8gbWF5YmUgZS5hbHRLZXlcbiAgfTtcblxuICB2YXIgYWxsb3dQYW5uaW5nUGFzc3Rocm91Z2ggPSBmdW5jdGlvbiBhbGxvd1Bhbm5pbmdQYXNzdGhyb3VnaChkb3duLCBkb3ducykge1xuICAgIHZhciBhbGxvd1Bhc3N0aHJvdWdoID0gdHJ1ZTtcblxuICAgIGlmIChyLmN5Lmhhc0NvbXBvdW5kTm9kZXMoKSAmJiBkb3duICYmIGRvd24ucGFubmFibGUoKSkge1xuICAgICAgLy8gYSBncmFiYmFibGUgY29tcG91bmQgbm9kZSBiZWxvdyB0aGUgZWxlID0+IG5vIHBhc3N0aHJvdWdoIHBhbm5pbmdcbiAgICAgIGZvciAodmFyIGkgPSAwOyBkb3ducyAmJiBpIDwgZG93bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGRvd24gPSBkb3duc1tpXTsgLy9pZiBhbnkgcGFyZW50IG5vZGUgaW4gZXZlbnQgaGllcmFyY2h5IGlzbid0IHBhbm5hYmxlLCByZWplY3QgcGFzc3Rocm91Z2hcblxuICAgICAgICBpZiAoZG93bi5pc05vZGUoKSAmJiBkb3duLmlzUGFyZW50KCkgJiYgIWRvd24ucGFubmFibGUoKSkge1xuICAgICAgICAgIGFsbG93UGFzc3Rocm91Z2ggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhbGxvd1Bhc3N0aHJvdWdoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsb3dQYXNzdGhyb3VnaDtcbiAgfTtcblxuICB2YXIgc2V0R3JhYmJlZCA9IGZ1bmN0aW9uIHNldEdyYWJiZWQoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLmdyYWJiZWQgPSB0cnVlO1xuICB9O1xuXG4gIHZhciBzZXRGcmVlZCA9IGZ1bmN0aW9uIHNldEZyZWVkKGVsZSkge1xuICAgIGVsZVswXS5fcHJpdmF0ZS5ncmFiYmVkID0gZmFsc2U7XG4gIH07XG5cbiAgdmFyIHNldEluRHJhZ0xheWVyID0gZnVuY3Rpb24gc2V0SW5EcmFnTGF5ZXIoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmluRHJhZ0xheWVyID0gdHJ1ZTtcbiAgfTtcblxuICB2YXIgc2V0T3V0RHJhZ0xheWVyID0gZnVuY3Rpb24gc2V0T3V0RHJhZ0xheWVyKGVsZSkge1xuICAgIGVsZVswXS5fcHJpdmF0ZS5yc2NyYXRjaC5pbkRyYWdMYXllciA9IGZhbHNlO1xuICB9O1xuXG4gIHZhciBzZXRHcmFiVGFyZ2V0ID0gZnVuY3Rpb24gc2V0R3JhYlRhcmdldChlbGUpIHtcbiAgICBlbGVbMF0uX3ByaXZhdGUucnNjcmF0Y2guaXNHcmFiVGFyZ2V0ID0gdHJ1ZTtcbiAgfTtcblxuICB2YXIgcmVtb3ZlR3JhYlRhcmdldCA9IGZ1bmN0aW9uIHJlbW92ZUdyYWJUYXJnZXQoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmlzR3JhYlRhcmdldCA9IGZhbHNlO1xuICB9O1xuXG4gIHZhciBhZGRUb0RyYWdMaXN0ID0gZnVuY3Rpb24gYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpIHtcbiAgICB2YXIgbGlzdCA9IG9wdHMuYWRkVG9MaXN0O1xuICAgIHZhciBsaXN0SGFzRWxlID0gbGlzdC5oYXMoZWxlKTtcblxuICAgIGlmICghbGlzdEhhc0VsZSkge1xuICAgICAgbGlzdC5tZXJnZShlbGUpO1xuICAgICAgc2V0R3JhYmJlZChlbGUpO1xuICAgIH1cbiAgfTsgLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBjaGlsZCBub2RlcyBhbmQgaW5uZXIgZWRnZXNcbiAgLy8gb2YgYSBjb21wb3VuZCBub2RlIHRvIGJlIGRyYWdnZWQgYXMgd2VsbCBhcyB0aGUgZ3JhYmJlZCBhbmQgc2VsZWN0ZWQgbm9kZXNcblxuXG4gIHZhciBhZGREZXNjZW5kYW50c1RvRHJhZyA9IGZ1bmN0aW9uIGFkZERlc2NlbmRhbnRzVG9EcmFnKG5vZGUsIG9wdHMpIHtcbiAgICBpZiAoIW5vZGUuY3koKS5oYXNDb21wb3VuZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5pbkRyYWdMYXllciA9PSBudWxsICYmIG9wdHMuYWRkVG9MaXN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIG5vdGhpbmcgdG8gZG9cblxuXG4gICAgdmFyIGlubmVyTm9kZXMgPSBub2RlLmRlc2NlbmRhbnRzKCk7XG5cbiAgICBpZiAob3B0cy5pbkRyYWdMYXllcikge1xuICAgICAgaW5uZXJOb2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIGlubmVyTm9kZXMuY29ubmVjdGVkRWRnZXMoKS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgIG9wdHMuYWRkVG9MaXN0LnVubWVyZ2UoaW5uZXJOb2Rlcyk7XG4gICAgfVxuICB9OyAvLyBhZGRzIHRoZSBnaXZlbiBub2RlcyBhbmQgaXRzIG5laWdoYm91cmhvb2QgdG8gdGhlIGRyYWcgbGF5ZXJcblxuXG4gIHZhciBhZGROb2Rlc1RvRHJhZyA9IGZ1bmN0aW9uIGFkZE5vZGVzVG9EcmFnKG5vZGVzLCBvcHRzKSB7XG4gICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBub2Rlcy5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChvcHRzLmluRHJhZ0xheWVyKSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIG5vZGVzLm5laWdoYm9yaG9vZCgpLnN0ZEZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBlbGUuaXNFZGdlKCk7XG4gICAgICB9KS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICBhZGRUb0RyYWdMaXN0KGVsZSwgb3B0cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGREZXNjZW5kYW50c1RvRHJhZyhub2Rlcywgb3B0cyk7IC8vIGFsd2F5cyBhZGQgdG8gZHJhZ1xuICAgIC8vIGFsc28gYWRkIG5vZGVzIGFuZCBlZGdlcyByZWxhdGVkIHRvIHRoZSB0b3Btb3N0IGFuY2VzdG9yXG5cbiAgICB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllcihub2Rlcywge1xuICAgICAgaW5EcmFnTGF5ZXI6IG9wdHMuaW5EcmFnTGF5ZXJcbiAgICB9KTtcbiAgICByLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gIH07XG5cbiAgdmFyIGFkZE5vZGVUb0RyYWcgPSBhZGROb2Rlc1RvRHJhZztcblxuICB2YXIgZnJlZURyYWdnZWRFbGVtZW50cyA9IGZ1bmN0aW9uIGZyZWVEcmFnZ2VkRWxlbWVudHMoZ3JhYmJlZEVsZXMpIHtcbiAgICBpZiAoIWdyYWJiZWRFbGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBqdXN0IGdvIG92ZXIgYWxsIGVsZW1lbnRzIHJhdGhlciB0aGFuIGRvaW5nIGEgYnVuY2ggb2YgKHBvc3NpYmx5IGV4cGVuc2l2ZSkgdHJhdmVyc2Fsc1xuXG5cbiAgICByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICBzZXRGcmVlZChlbGUpO1xuICAgICAgc2V0T3V0RHJhZ0xheWVyKGVsZSk7XG4gICAgICByZW1vdmVHcmFiVGFyZ2V0KGVsZSk7XG4gICAgfSk7XG4gICAgci51cGRhdGVDYWNoZWRHcmFiYmVkRWxlcygpO1xuICB9OyAvLyBoZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIGFuY2VzdG9yIG5vZGVzIGFuZCBlZGdlcyBzaG91bGQgZ29cbiAgLy8gdG8gdGhlIGRyYWcgbGF5ZXIgKG9yIHNob3VsZCBiZSByZW1vdmVkIGZyb20gZHJhZyBsYXllcikuXG5cblxuICB2YXIgdXBkYXRlQW5jZXN0b3JzSW5EcmFnTGF5ZXIgPSBmdW5jdGlvbiB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllcihub2RlLCBvcHRzKSB7XG4gICAgaWYgKG9wdHMuaW5EcmFnTGF5ZXIgPT0gbnVsbCAmJiBvcHRzLmFkZFRvTGlzdCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBub3RoaW5nIHRvIGRvXG5cblxuICAgIGlmICghbm9kZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZmluZCB0b3AtbGV2ZWwgcGFyZW50XG5cblxuICAgIHZhciBwYXJlbnQgPSBub2RlLmFuY2VzdG9ycygpLm9ycGhhbnMoKTsgLy8gbm8gcGFyZW50IG5vZGU6IG5vIG5vZGVzIHRvIGFkZCB0byB0aGUgZHJhZyBsYXllclxuXG4gICAgaWYgKHBhcmVudC5zYW1lKG5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5vZGVzID0gcGFyZW50LmRlc2NlbmRhbnRzKCkuc3Bhd25TZWxmKCkubWVyZ2UocGFyZW50KS51bm1lcmdlKG5vZGUpLnVubWVyZ2Uobm9kZS5kZXNjZW5kYW50cygpKTtcbiAgICB2YXIgZWRnZXMgPSBub2Rlcy5jb25uZWN0ZWRFZGdlcygpO1xuXG4gICAgaWYgKG9wdHMuaW5EcmFnTGF5ZXIpIHtcbiAgICAgIGVkZ2VzLmZvckVhY2goc2V0SW5EcmFnTGF5ZXIpO1xuICAgICAgbm9kZXMuZm9yRWFjaChzZXRJbkRyYWdMYXllcik7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuYWRkVG9MaXN0KSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBibHVyQWN0aXZlRG9tRWxlbWVudCA9IGZ1bmN0aW9uIGJsdXJBY3RpdmVEb21FbGVtZW50KCkge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9IG51bGwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyICE9IG51bGwpIHtcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaGF2ZU11dGF0aW9uc0FwaSA9IHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGhhdmVSZXNpemVPYnNlcnZlckFwaSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7IC8vIHdhdGNoIGZvciB3aGVuIHRoZSBjeSBjb250YWluZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb21cblxuICBpZiAoaGF2ZU11dGF0aW9uc0FwaSkge1xuICAgIHIucmVtb3ZlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0bnMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG11dG4gPSBtdXRuc1tpXTtcbiAgICAgICAgdmFyIHJOb2RlcyA9IG11dG4ucmVtb3ZlZE5vZGVzO1xuXG4gICAgICAgIGlmIChyTm9kZXMpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJOb2Rlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgdmFyIHJOb2RlID0gck5vZGVzW2pdO1xuXG4gICAgICAgICAgICBpZiAock5vZGUgPT09IHIuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgIHIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChyLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICByLnJlbW92ZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIucGFyZW50Tm9kZSwge1xuICAgICAgICBjaGlsZExpc3Q6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHIuZGVzdHJveSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIG9uUmVzaXplID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gICAgci5jeS5yZXNpemUoKTtcbiAgfSwgMTAwKTtcblxuICBpZiAoaGF2ZU11dGF0aW9uc0FwaSkge1xuICAgIHIuc3R5bGVPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9uUmVzaXplKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgci5zdHlsZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgfSAvLyBhdXRvIHJlc2l6ZVxuXG5cbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAncmVzaXplJywgb25SZXNpemUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgaWYgKGhhdmVSZXNpemVPYnNlcnZlckFwaSkge1xuICAgIHIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXNpemUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICByLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIpO1xuICB9XG5cbiAgdmFyIGZvckVhY2hVcCA9IGZ1bmN0aW9uIGZvckVhY2hVcChkb21FbGUsIGZuKSB7XG4gICAgd2hpbGUgKGRvbUVsZSAhPSBudWxsKSB7XG4gICAgICBmbihkb21FbGUpO1xuICAgICAgZG9tRWxlID0gZG9tRWxlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpbnZhbGlkYXRlQ29vcmRzID0gZnVuY3Rpb24gaW52YWxpZGF0ZUNvb3JkcygpIHtcbiAgICByLmludmFsaWRhdGVDb250YWluZXJDbGllbnRDb29yZHNDYWNoZSgpO1xuICB9O1xuXG4gIGZvckVhY2hVcChyLmNvbnRhaW5lciwgZnVuY3Rpb24gKGRvbUVsZSkge1xuICAgIHIucmVnaXN0ZXJCaW5kaW5nKGRvbUVsZSwgJ3RyYW5zaXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdhbmltYXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdzY3JvbGwnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgfSk7IC8vIHN0b3AgcmlnaHQgY2xpY2sgbWVudSBmcm9tIGFwcGVhcmluZyBvbiBjeVxuXG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnY29udGV4dG1lbnUnLCBmdW5jdGlvbiAoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfSk7XG5cbiAgdmFyIGluQm94U2VsZWN0aW9uID0gZnVuY3Rpb24gaW5Cb3hTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHIuc2VsZWN0aW9uWzRdICE9PSAwO1xuICB9O1xuXG4gIHZhciBldmVudEluQ29udGFpbmVyID0gZnVuY3Rpb24gZXZlbnRJbkNvbnRhaW5lcihlKSB7XG4gICAgLy8gc2F2ZSBjeWNsZXMgaWYgbW91c2UgZXZlbnRzIGFyZW4ndCB0byBiZSBjYXB0dXJlZFxuICAgIHZhciBjb250YWluZXJQYWdlQ29vcmRzID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gICAgdmFyIHggPSBjb250YWluZXJQYWdlQ29vcmRzWzBdO1xuICAgIHZhciB5ID0gY29udGFpbmVyUGFnZUNvb3Jkc1sxXTtcbiAgICB2YXIgd2lkdGggPSBjb250YWluZXJQYWdlQ29vcmRzWzJdO1xuICAgIHZhciBoZWlnaHQgPSBjb250YWluZXJQYWdlQ29vcmRzWzNdO1xuICAgIHZhciBwb3NpdGlvbnMgPSBlLnRvdWNoZXMgPyBlLnRvdWNoZXMgOiBbZV07XG4gICAgdmFyIGF0TGVhc3RPbmVQb3NJbnNpZGUgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHBvc2l0aW9uc1tpXTtcblxuICAgICAgaWYgKHggPD0gcC5jbGllbnRYICYmIHAuY2xpZW50WCA8PSB4ICsgd2lkdGggJiYgeSA8PSBwLmNsaWVudFkgJiYgcC5jbGllbnRZIDw9IHkgKyBoZWlnaHQpIHtcbiAgICAgICAgYXRMZWFzdE9uZVBvc0luc2lkZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYXRMZWFzdE9uZVBvc0luc2lkZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBjb250YWluZXIgPSByLmNvbnRhaW5lcjtcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgdmFyIHRQYXJlbnQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB2YXIgY29udGFpbmVySXNUYXJnZXQgPSBmYWxzZTtcblxuICAgIHdoaWxlICh0UGFyZW50KSB7XG4gICAgICBpZiAodFBhcmVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lcklzVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRQYXJlbnQgPSB0UGFyZW50LnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgaWYgKCFjb250YWluZXJJc1RhcmdldCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gaWYgdGFyZ2V0IGlzIG91dGlzZGUgY3kgY29udGFpbmVyLCB0aGVuIHRoaXMgZXZlbnQgaXMgbm90IGZvciB1c1xuXG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTsgLy8gUHJpbWFyeSBrZXlcblxuXG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnbW91c2Vkb3duJywgZnVuY3Rpb24gbW91c2Vkb3duSGFuZGxlcihlKSB7XG4gICAgaWYgKCFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGJsdXJBY3RpdmVEb21FbGVtZW50KCk7XG4gICAgci5ob3ZlckRhdGEuY2FwdHVyZSA9IHRydWU7XG4gICAgci5ob3ZlckRhdGEud2hpY2ggPSBlLndoaWNoO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIGdwb3MgPSBbZS5jbGllbnRYLCBlLmNsaWVudFldO1xuICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZ3Bvc1swXSwgZ3Bvc1sxXSk7XG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhwb3NbMF0sIHBvc1sxXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBuZWFyID0gbmVhcnNbMF07XG4gICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgci5ob3ZlckRhdGEubWRvd25Qb3MgPSBwb3M7XG4gICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gZ3BvcztcblxuICAgIHZhciBjaGVja0ZvclRhcGhvbGQgPSBmdW5jdGlvbiBjaGVja0ZvclRhcGhvbGQoKSB7XG4gICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICBjbGVhclRpbWVvdXQoci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQpO1xuICAgICAgci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHIuaG92ZXJEYXRhLnRhcGhvbGRDYW5jZWxsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGVsZSA9IHIuaG92ZXJEYXRhLmRvd247XG5cbiAgICAgICAgICBpZiAoZWxlKSB7XG4gICAgICAgICAgICBlbGUuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICd0YXBob2xkJyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3RhcGhvbGQnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCByLnRhcGhvbGREdXJhdGlvbik7XG4gICAgfTsgLy8gUmlnaHQgY2xpY2sgYnV0dG9uXG5cblxuICAgIGlmIChlLndoaWNoID09IDMpIHtcbiAgICAgIHIuaG92ZXJEYXRhLmN4dFN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgdmFyIGN4dEV2dCA9IHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgdHlwZTogJ2N4dHRhcHN0YXJ0JyxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgbmVhci5lbWl0KGN4dEV2dCk7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRvd24gPSBuZWFyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5kb3duVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlOyAvLyBQcmltYXJ5IGJ1dHRvblxuICAgIH0gZWxzZSBpZiAoZS53aGljaCA9PSAxKSB7XG4gICAgICBpZiAobmVhcikge1xuICAgICAgICBuZWFyLmFjdGl2YXRlKCk7XG4gICAgICB9IC8vIEVsZW1lbnQgZHJhZ2dpbmdcblxuXG4gICAgICB7XG4gICAgICAgIC8vIElmIHNvbWV0aGluZyBpcyB1bmRlciB0aGUgY3Vyc29yIGFuZCBpdCBpcyBkcmFnZ2FibGUsIHByZXBhcmUgdG8gZ3JhYiBpdFxuICAgICAgICBpZiAobmVhciAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKHIubm9kZUlzR3JhYmJhYmxlKG5lYXIpKSB7XG4gICAgICAgICAgICB2YXIgbWFrZUV2ZW50ID0gZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciB0cmlnZ2VyR3JhYiA9IGZ1bmN0aW9uIHRyaWdnZXJHcmFiKGVsZSkge1xuICAgICAgICAgICAgICBlbGUuZW1pdChtYWtlRXZlbnQoJ2dyYWInKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRHcmFiVGFyZ2V0KG5lYXIpO1xuXG4gICAgICAgICAgICBpZiAoIW5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgICBkcmFnZ2VkRWxlbWVudHMgPSByLmRyYWdEYXRhLnBvc3NpYmxlRHJhZ0VsZW1lbnRzID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICAgICAgICBhZGROb2RlVG9EcmFnKG5lYXIsIHtcbiAgICAgICAgICAgICAgICBhZGRUb0xpc3Q6IGRyYWdnZWRFbGVtZW50c1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbmVhci5lbWl0KG1ha2VFdmVudCgnZ3JhYm9uJykpLmVtaXQobWFrZUV2ZW50KCdncmFiJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBjeS4kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5zZWxlY3RlZCgpICYmIHIubm9kZUlzR3JhYmJhYmxlKGVsZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhzZWxlY3RlZE5vZGVzLCB7XG4gICAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlbWVudHNcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKTtcbiAgICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKHRyaWdnZXJHcmFiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5kb3duID0gbmVhcjtcbiAgICAgICAgci5ob3ZlckRhdGEuZG93bnMgPSBuZWFycztcbiAgICAgICAgci5ob3ZlckRhdGEuZG93blRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWydtb3VzZWRvd24nLCAndGFwc3RhcnQnLCAndm1vdXNlZG93biddLCBlLCB7XG4gICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgeTogcG9zWzFdXG4gICAgICB9KTtcblxuICAgICAgaWYgKG5lYXIgPT0gbnVsbCkge1xuICAgICAgICBzZWxlY3RbNF0gPSAxO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB7XG4gICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICB9O1xuICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfSBlbHNlIGlmIChuZWFyLnBhbm5hYmxlKCkpIHtcbiAgICAgICAgc2VsZWN0WzRdID0gMTsgLy8gZm9yIGZ1dHVyZSBwYW5cbiAgICAgIH1cblxuICAgICAgY2hlY2tGb3JUYXBob2xkKCk7XG4gICAgfSAvLyBJbml0aWFsaXplIHNlbGVjdGlvbiBib3ggY29vcmRpbmF0ZXNcblxuXG4gICAgc2VsZWN0WzBdID0gc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgIHNlbGVjdFsxXSA9IHNlbGVjdFszXSA9IHBvc1sxXTtcbiAgfSwgZmFsc2UpO1xuICByLnJlZ2lzdGVyQmluZGluZyh3aW5kb3csICdtb3VzZW1vdmUnLCBmdW5jdGlvbiBtb3VzZW1vdmVIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgZ3BvcyA9IFtlLmNsaWVudFgsIGUuY2xpZW50WV07XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChncG9zWzBdLCBncG9zWzFdKTtcbiAgICB2YXIgbWRvd25Qb3MgPSByLmhvdmVyRGF0YS5tZG93blBvcztcbiAgICB2YXIgbWRvd25HUG9zID0gci5ob3ZlckRhdGEubWRvd25HUG9zO1xuICAgIHZhciBzZWxlY3QgPSByLnNlbGVjdGlvbjtcbiAgICB2YXIgbmVhciA9IG51bGw7XG5cbiAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyAmJiAhci5ob3ZlckRhdGEuZHJhZ2dpbmcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgbmVhciA9IHIuZmluZE5lYXJlc3RFbGVtZW50KHBvc1swXSwgcG9zWzFdLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIGxhc3QgPSByLmhvdmVyRGF0YS5sYXN0O1xuICAgIHZhciBkb3duID0gci5ob3ZlckRhdGEuZG93bjtcbiAgICB2YXIgZGlzcCA9IFtwb3NbMF0gLSBzZWxlY3RbMl0sIHBvc1sxXSAtIHNlbGVjdFszXV07XG4gICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgdmFyIGlzT3ZlclRocmVzaG9sZERyYWc7XG5cbiAgICBpZiAobWRvd25HUG9zKSB7XG4gICAgICB2YXIgZHggPSBncG9zWzBdIC0gbWRvd25HUG9zWzBdO1xuICAgICAgdmFyIGR4MiA9IGR4ICogZHg7XG4gICAgICB2YXIgZHkgPSBncG9zWzFdIC0gbWRvd25HUG9zWzFdO1xuICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICByLmhvdmVyRGF0YS5pc092ZXJUaHJlc2hvbGREcmFnID0gaXNPdmVyVGhyZXNob2xkRHJhZyA9IGRpc3QyID49IHIuZGVza3RvcFRhcFRocmVzaG9sZDI7XG4gICAgfVxuXG4gICAgdmFyIG11bHRTZWxLZXlEb3duID0gaXNNdWx0U2VsS2V5RG93bihlKTtcblxuICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgdXBkYXRlRHJhZ0RlbHRhID0gZnVuY3Rpb24gdXBkYXRlRHJhZ0RlbHRhKCkge1xuICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSB8fCBbXTtcblxuICAgICAgaWYgKGRyYWdEZWx0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZHJhZ0RlbHRhLnB1c2goZGlzcFswXSk7XG4gICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhZ0RlbHRhWzBdICs9IGRpc3BbMF07XG4gICAgICAgIGRyYWdEZWx0YVsxXSArPSBkaXNwWzFdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNlbW92ZScsICd2bW91c2Vtb3ZlJywgJ3RhcGRyYWcnXSwgZSwge1xuICAgICAgeDogcG9zWzBdLFxuICAgICAgeTogcG9zWzFdXG4gICAgfSk7XG5cbiAgICB2YXIgZ29JbnRvQm94TW9kZSA9IGZ1bmN0aW9uIGdvSW50b0JveE1vZGUoKSB7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghci5ob3ZlckRhdGEuc2VsZWN0aW5nKSB7XG4gICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2JveHN0YXJ0JyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgc2VsZWN0WzRdID0gMTtcbiAgICAgIHIuaG92ZXJEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9OyAvLyB0cmlnZ2VyIGNvbnRleHQgZHJhZyBpZiBybW91c2UgZG93blxuXG5cbiAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgIC8vIGJ1dCBvbmx5IGlmIG92ZXIgdGhyZXNob2xkXG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICB2YXIgY3h0RXZ0ID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dGRyYWcnLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgICBkb3duLmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci5ob3ZlckRhdGEuY3h0T3Zlcikge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5jeHRPdmVyKSB7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5jeHRPdmVyLmVtaXQoe1xuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ291dCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLmhvdmVyRGF0YS5jeHRPdmVyID0gbmVhcjtcblxuICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICBuZWFyLmVtaXQoe1xuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIENoZWNrIGlmIHdlIGFyZSBkcmFnIHBhbm5pbmcgdGhlIGVudGlyZSBncmFwaFxuXG4gICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykge1xuICAgICAgcHJldmVudERlZmF1bHQgPSB0cnVlO1xuXG4gICAgICBpZiAoY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSkge1xuICAgICAgICB2YXIgZGVsdGFQO1xuXG4gICAgICAgIGlmIChyLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbikge1xuICAgICAgICAgIHZhciBtZFBvcyA9IHIuaG92ZXJEYXRhLm1kb3duUG9zO1xuICAgICAgICAgIGRlbHRhUCA9IHtcbiAgICAgICAgICAgIHg6IChwb3NbMF0gLSBtZFBvc1swXSkgKiB6b29tLFxuICAgICAgICAgICAgeTogKHBvc1sxXSAtIG1kUG9zWzFdKSAqIHpvb21cbiAgICAgICAgICB9O1xuICAgICAgICAgIHIuaG92ZXJEYXRhLmp1c3RTdGFydGVkUGFuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsdGFQID0ge1xuICAgICAgICAgICAgeDogZGlzcFswXSAqIHpvb20sXG4gICAgICAgICAgICB5OiBkaXNwWzFdICogem9vbVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjeS5wYW5CeShkZWx0YVApO1xuICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnZWQgPSB0cnVlO1xuICAgICAgfSAvLyBOZWVkcyByZXByb2plY3QgZHVlIHRvIHBhbiBjaGFuZ2luZyB2aWV3cG9ydFxuXG5cbiAgICAgIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7IC8vIENoZWNrcyBwcmltYXJ5IGJ1dHRvbiBkb3duICYgb3V0IG9mIHRpbWUgJiBtb3VzZSBub3QgbW92ZWQgbXVjaFxuICAgIH0gZWxzZSBpZiAoc2VsZWN0WzRdID09IDEgJiYgKGRvd24gPT0gbnVsbCB8fCBkb3duLnBhbm5hYmxlKCkpKSB7XG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSAmJiAobXVsdFNlbEtleURvd24gfHwgIWN5LnBhbm5pbmdFbmFibGVkKCkgfHwgIWN5LnVzZXJQYW5uaW5nRW5hYmxlZCgpKSkge1xuICAgICAgICAgIGdvSW50b0JveE1vZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICghci5ob3ZlckRhdGEuc2VsZWN0aW5nICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKGRvd24sIHIuaG92ZXJEYXRhLmRvd25zKTtcblxuICAgICAgICAgIGlmIChhbGxvd1Bhc3N0aHJvdWdoKSB7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbiA9IHRydWU7XG4gICAgICAgICAgICBzZWxlY3RbNF0gPSAwO1xuICAgICAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gYXJyYXkycG9pbnQobWRvd25Qb3MpO1xuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvd24gJiYgZG93bi5wYW5uYWJsZSgpICYmIGRvd24uYWN0aXZlKCkpIHtcbiAgICAgICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG93biAmJiBkb3duLnBhbm5hYmxlKCkgJiYgZG93bi5hY3RpdmUoKSkge1xuICAgICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCghZG93biB8fCAhZG93bi5ncmFiYmVkKCkpICYmIG5lYXIgIT0gbGFzdCkge1xuICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgIHRyaWdnZXJFdmVudHMobGFzdCwgWydtb3VzZW91dCcsICd0YXBkcmFnb3V0J10sIGUsIHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5lYXIpIHtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsnbW91c2VvdmVyJywgJ3RhcGRyYWdvdmVyJ10sIGUsIHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgci5ob3ZlckRhdGEubGFzdCA9IG5lYXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChkb3duKSB7XG4gICAgICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgLy8gdGhlbiB3ZSBjYW4gdGFrZSBhY3Rpb25cbiAgICAgICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpICYmIG11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICAvLyB0aGVuIHNlbGVjdGlvbiBvdmVycmlkZXNcbiAgICAgICAgICAgIGlmIChkb3duICYmIGRvd24uZ3JhYmJlZCgpKSB7XG4gICAgICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgZG93bi5lbWl0KCdmcmVlb24nKTtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICAgICAgZG93bi5lbWl0KCdkcmFnZnJlZW9uJyk7XG4gICAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ29JbnRvQm94TW9kZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZG93biAmJiBkb3duLmdyYWJiZWQoKSAmJiByLm5vZGVJc0RyYWdnYWJsZShkb3duKSkge1xuICAgICAgICAgICAgLy8gZHJhZyBub2RlXG4gICAgICAgICAgICB2YXIganVzdFN0YXJ0ZWREcmFnID0gIXIuZHJhZ0RhdGEuZGlkRHJhZztcblxuICAgICAgICAgICAgaWYgKGp1c3RTdGFydGVkRHJhZykge1xuICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5kcmFnRGF0YS5kaWREcmFnID0gdHJ1ZTsgLy8gaW5kaWNhdGUgdGhhdCB3ZSBhY3R1YWxseSBkaWQgZHJhZyB0aGUgbm9kZVxuXG4gICAgICAgICAgICB2YXIgdG9UcmlnZ2VyID0gY3kuY29sbGVjdGlvbigpOyAvLyBub3csIGFkZCB0aGUgZWxlbWVudHMgdG8gdGhlIGRyYWcgbGF5ZXIgaWYgbm90IGRvbmUgYWxyZWFkeVxuXG4gICAgICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcykge1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhkcmFnZ2VkRWxlbWVudHMsIHtcbiAgICAgICAgICAgICAgICBpbkRyYWdMYXllcjogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHRvdGFsU2hpZnQgPSB7XG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChudW1iZXIoZGlzcFswXSkgJiYgbnVtYmVyKGRpc3BbMV0pKSB7XG4gICAgICAgICAgICAgIHRvdGFsU2hpZnQueCArPSBkaXNwWzBdO1xuICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZGlzcFsxXTtcblxuICAgICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YTtcblxuICAgICAgICAgICAgICAgIGlmIChkcmFnRGVsdGEgJiYgbnVtYmVyKGRyYWdEZWx0YVswXSkgJiYgbnVtYmVyKGRyYWdEZWx0YVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueCArPSBkcmFnRGVsdGFbMF07XG4gICAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZHJhZ0RlbHRhWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRyYWdnZWRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgZEVsZSA9IGRyYWdnZWRFbGVtZW50c1tpXTtcblxuICAgICAgICAgICAgICBpZiAoci5ub2RlSXNEcmFnZ2FibGUoZEVsZSkgJiYgZEVsZS5ncmFiYmVkKCkpIHtcbiAgICAgICAgICAgICAgICB0b1RyaWdnZXIucHVzaChkRWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgPSB0cnVlO1xuICAgICAgICAgICAgdG9UcmlnZ2VyLnNpbGVudFNoaWZ0KHRvdGFsU2hpZnQpLmVtaXQoJ3Bvc2l0aW9uIGRyYWcnKTtcbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHNhdmUgZHJhZyBkZWx0YSBmb3Igd2hlbiB3ZSBhY3R1YWxseSBzdGFydCBkcmFnZ2luZyBzbyB0aGUgcmVsYXRpdmUgZ3JhYiBwb3MgaXMgY29uc3RhbnRcbiAgICAgICAgICB1cGRhdGVEcmFnRGVsdGEoKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwcmV2ZW50IHRoZSBkcmFnZ2luZyBmcm9tIHRyaWdnZXJpbmcgdGV4dCBzZWxlY3Rpb24gb24gdGhlIHBhZ2VcblxuXG4gICAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgIHNlbGVjdFszXSA9IHBvc1sxXTtcblxuICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKSBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIGNsaWNrVGltZW91dCwgZGlkRG91YmxlQ2xpY2ssIHByZXZDbGlja1RpbWVTdGFtcDtcbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAnbW91c2V1cCcsIGZ1bmN0aW9uIG1vdXNldXBIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5ob3ZlckRhdGEuY2FwdHVyZSA9IGZhbHNlO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQocG9zWzBdLCBwb3NbMV0sIHRydWUsIGZhbHNlKTtcbiAgICB2YXIgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cztcbiAgICB2YXIgZG93biA9IHIuaG92ZXJEYXRhLmRvd247XG4gICAgdmFyIG11bHRTZWxLZXlEb3duID0gaXNNdWx0U2VsS2V5RG93bihlKTtcblxuICAgIGlmIChyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICByLnJlZHJhdygpO1xuICAgIH1cblxuICAgIHIuaG92ZXJEYXRhLnRhcGhvbGRDYW5jZWxsZWQgPSB0cnVlO1xuICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDsgLy8gbm90IGFjdGl2ZSBiZyBub3dcblxuICAgIGlmIChkb3duKSB7XG4gICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgZG93bi5lbWl0KGN4dEV2dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCkge1xuICAgICAgICB2YXIgY3h0VGFwID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dHRhcCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZG93bikge1xuICAgICAgICAgIGRvd24uZW1pdChjeHRUYXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3h0VGFwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gZmFsc2U7XG4gICAgICByLmhvdmVyRGF0YS53aGljaCA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS53aGljaCA9PT0gMSkge1xuICAgICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNldXAnLCAndGFwZW5kJywgJ3Ztb3VzZXVwJ10sIGUsIHtcbiAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICB5OiBwb3NbMV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXIuZHJhZ0RhdGEuZGlkRHJhZyAmJiAvLyBkaWRuJ3QgbW92ZSBhIG5vZGUgYXJvdW5kXG4gICAgICAhci5ob3ZlckRhdGEuZHJhZ2dlZCAmJiAvLyBkaWRuJ3QgcGFuXG4gICAgICAhci5ob3ZlckRhdGEuc2VsZWN0aW5nICYmIC8vIG5vdCBib3ggc2VsZWN0aW9uXG4gICAgICAhci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0b28gbXVjaFxuICAgICAgKSB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhkb3duLCBbXCJjbGlja1wiLCBcInRhcFwiLCBcInZjbGlja1wiXSwgZSwge1xuICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGlkRG91YmxlQ2xpY2sgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChlLnRpbWVTdGFtcCAtIHByZXZDbGlja1RpbWVTdGFtcCA8PSBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpIHtcbiAgICAgICAgICAgIGNsaWNrVGltZW91dCAmJiBjbGVhclRpbWVvdXQoY2xpY2tUaW1lb3V0KTtcbiAgICAgICAgICAgIGRpZERvdWJsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIHByZXZDbGlja1RpbWVTdGFtcCA9IG51bGw7XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcImRibGNsaWNrXCIsIFwiZGJsdGFwXCIsIFwidmRibGNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChkaWREb3VibGVDbGljaykgcmV0dXJuO1xuICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcIm9uZWNsaWNrXCIsIFwib25ldGFwXCIsIFwidm9uZWNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSk7XG4gICAgICAgICAgICBwcmV2Q2xpY2tUaW1lU3RhbXAgPSBlLnRpbWVTdGFtcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gRGVzZWxlY3QgYWxsIGVsZW1lbnRzIGlmIG5vdGhpbmcgaXMgY3VycmVudGx5IHVuZGVyIHRoZSBtb3VzZSBjdXJzb3IgYW5kIHdlIGFyZW4ndCBkcmFnZ2luZyBzb21ldGhpbmdcblxuXG4gICAgICBpZiAoZG93biA9PSBudWxsICYmIC8vIG5vdCBtb3VzZWRvd24gb24gbm9kZVxuICAgICAgIXIuZHJhZ0RhdGEuZGlkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0aGUgbm9kZSBhcm91bmRcbiAgICAgICYmICFyLmhvdmVyRGF0YS5zZWxlY3RpbmcgLy8gbm90IGJveCBzZWxlY3Rpb25cbiAgICAgICYmICFyLmhvdmVyRGF0YS5kcmFnZ2VkIC8vIGRpZG4ndCBwYW5cbiAgICAgICYmICFpc011bHRTZWxLZXlEb3duKGUpKSB7XG4gICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcblxuICAgICAgICBpZiAoZHJhZ2dlZEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHMgPSBkcmFnZ2VkRWxlbWVudHMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICB9IC8vIFNpbmdsZSBzZWxlY3Rpb25cblxuXG4gICAgICBpZiAobmVhciA9PSBkb3duICYmICFyLmRyYWdEYXRhLmRpZERyYWcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBpZiAobmVhciAhPSBudWxsICYmIG5lYXIuX3ByaXZhdGUuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykgOyBlbHNlIGlmIChjeS5zZWxlY3Rpb25UeXBlKCkgPT09ICdhZGRpdGl2ZScgfHwgbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgIGlmIChuZWFyLnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgbmVhci51bnNlbGVjdChbJ3RhcHVuc2VsZWN0J10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmVhci5zZWxlY3QoWyd0YXBzZWxlY3QnXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgICAgY3kuJChpc1NlbGVjdGVkKS51bm1lcmdlKG5lYXIpLnVuc2VsZWN0KFsndGFwdW5zZWxlY3QnXSk7XG4gICAgICAgICAgICAgIG5lYXIuc2VsZWN0KFsndGFwc2VsZWN0J10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyLmhvdmVyRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdmFyIGJveCA9IGN5LmNvbGxlY3Rpb24oci5nZXRBbGxJbkJveChzZWxlY3RbMF0sIHNlbGVjdFsxXSwgc2VsZWN0WzJdLCBzZWxlY3RbM10pKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcblxuICAgICAgICBpZiAoYm94Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgIHR5cGU6ICdib3hlbmQnLFxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGVsZVdvdWxkQmVTZWxlY3RlZCA9IGZ1bmN0aW9uIGVsZVdvdWxkQmVTZWxlY3RlZChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ2FkZGl0aXZlJykge1xuICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIW11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICBjeS4kKGlzU2VsZWN0ZWQpLnVubWVyZ2UoYm94KS51bnNlbGVjdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgfSAvLyBhbHdheXMgbmVlZCByZWRyYXcgaW4gY2FzZSBlbGVzIHVuc2VsZWN0YWJsZVxuXG5cbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0gLy8gQ2FuY2VsIGRyYWcgcGFuXG5cblxuICAgICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nKSB7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbGVjdFs0XSkge1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHZhciBkb3duV2FzR3JhYmJlZCA9IGRvd24gJiYgZG93bi5ncmFiYmVkKCk7XG4gICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcblxuICAgICAgICBpZiAoZG93bldhc0dyYWJiZWQpIHtcbiAgICAgICAgICBkb3duLmVtaXQoJ2ZyZWVvbicpO1xuICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICBkb3duLmVtaXQoJ2RyYWdmcmVlb24nKTtcbiAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gZWxzZSBub3QgcmlnaHQgbW91c2VcblxuXG4gICAgc2VsZWN0WzRdID0gMDtcbiAgICByLmhvdmVyRGF0YS5kb3duID0gbnVsbDtcbiAgICByLmhvdmVyRGF0YS5jeHRTdGFydGVkID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuc2VsZWN0aW5nID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyA9IGZhbHNlO1xuICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IGZhbHNlO1xuICAgIHIuaG92ZXJEYXRhLmRyYWdnZWQgPSBmYWxzZTtcbiAgICByLmhvdmVyRGF0YS5kcmFnRGVsdGEgPSBbXTtcbiAgICByLmhvdmVyRGF0YS5tZG93blBvcyA9IG51bGw7XG4gICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gbnVsbDtcbiAgfSwgZmFsc2UpO1xuXG4gIHZhciB3aGVlbEhhbmRsZXIgPSBmdW5jdGlvbiB3aGVlbEhhbmRsZXIoZSkge1xuICAgIGlmIChyLnNjcm9sbGluZ1BhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHdoaWxlIHNjcm9sbGluZywgaWdub3JlIHdoZWVsLXRvLXpvb21cblxuXG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHJwb3MgPSBbcG9zWzBdICogem9vbSArIHBhbi54LCBwb3NbMV0gKiB6b29tICsgcGFuLnldO1xuXG4gICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLmhvdmVyRGF0YS5jeHRTdGFydGVkIHx8IGluQm94U2VsZWN0aW9uKCkpIHtcbiAgICAgIC8vIGlmIHBhbiBkcmFnZ2luZyBvciBjeHQgZHJhZ2dpbmcsIHdoZWVsIG1vdmVtZW50cyBtYWtlIG5vIHpvb21cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSAmJiBjeS56b29taW5nRW5hYmxlZCgpICYmIGN5LnVzZXJab29taW5nRW5hYmxlZCgpKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByLmRhdGEud2hlZWxab29taW5nID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChyLmRhdGEud2hlZWxUaW1lb3V0KTtcbiAgICAgIHIuZGF0YS53aGVlbFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5kYXRhLndoZWVsWm9vbWluZyA9IGZhbHNlO1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0sIDE1MCk7XG4gICAgICB2YXIgZGlmZjtcblxuICAgICAgaWYgKGUuZGVsdGFZICE9IG51bGwpIHtcbiAgICAgICAgZGlmZiA9IGUuZGVsdGFZIC8gLTI1MDtcbiAgICAgIH0gZWxzZSBpZiAoZS53aGVlbERlbHRhWSAhPSBudWxsKSB7XG4gICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGFZIC8gMTAwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGEgLyAxMDAwO1xuICAgICAgfVxuXG4gICAgICBkaWZmID0gZGlmZiAqIHIud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgIHZhciBuZWVkc1doZWVsRml4ID0gZS5kZWx0YU1vZGUgPT09IDE7XG5cbiAgICAgIGlmIChuZWVkc1doZWVsRml4KSB7XG4gICAgICAgIC8vIGZpeGVzIHNsb3cgd2hlZWwgZXZlbnRzIG9uIGZmL2xpbnV4IGFuZCBmZi93aW5kb3dzXG4gICAgICAgIGRpZmYgKj0gMzM7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdab29tID0gY3kuem9vbSgpICogTWF0aC5wb3coMTAsIGRpZmYpO1xuXG4gICAgICBpZiAoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScpIHtcbiAgICAgICAgbmV3Wm9vbSA9IHIuZ2VzdHVyZVN0YXJ0Wm9vbSAqIGUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGN5Lnpvb20oe1xuICAgICAgICBsZXZlbDogbmV3Wm9vbSxcbiAgICAgICAgcmVuZGVyZWRQb3NpdGlvbjoge1xuICAgICAgICAgIHg6IHJwb3NbMF0sXG4gICAgICAgICAgeTogcnBvc1sxXVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGN5LmVtaXQoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScgPyAncGluY2h6b29tJyA6ICdzY3JvbGx6b29tJyk7XG4gICAgfVxuICB9OyAvLyBGdW5jdGlvbnMgdG8gaGVscCB3aXRoIHdoZXRoZXIgbW91c2Ugd2hlZWwgc2hvdWxkIHRyaWdnZXIgem9vbWluZ1xuICAvLyAtLVxuXG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICd3aGVlbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7IC8vIGRpc2FibGUgbm9uc3RhbmRhcmQgd2hlZWwgZXZlbnRzXG4gIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnbW91c2V3aGVlbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7XG4gIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnRE9NTW91c2VTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpO1xuICAvLyByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpOyAvLyBvbGRlciBmaXJlZm94XG5cbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAnc2Nyb2xsJywgZnVuY3Rpb24gc2Nyb2xsSGFuZGxlcihlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHIuc2Nyb2xsaW5nUGFnZSA9IHRydWU7XG4gICAgY2xlYXJUaW1lb3V0KHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQpO1xuICAgIHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHIuc2Nyb2xsaW5nUGFnZSA9IGZhbHNlO1xuICAgIH0sIDI1MCk7XG4gIH0sIHRydWUpOyAvLyBkZXNrdG9wIHNhZmFyaSBwaW5jaCB0byB6b29tIHN0YXJ0XG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdnZXN0dXJlc3RhcnQnLCBmdW5jdGlvbiBnZXN0dXJlU3RhcnRIYW5kbGVyKGUpIHtcbiAgICByLmdlc3R1cmVTdGFydFpvb20gPSByLmN5Lnpvb20oKTtcblxuICAgIGlmICghci5oYXNUb3VjaFN0YXJ0ZWQpIHtcbiAgICAgIC8vIGRvbid0IGFmZmVjdCB0b3VjaCBkZXZpY2VzIGxpa2UgaXBob25lXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LCB0cnVlKTtcbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdnZXN0dXJlY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIXIuaGFzVG91Y2hTdGFydGVkKSB7XG4gICAgICAvLyBkb24ndCBhZmZlY3QgdG91Y2ggZGV2aWNlcyBsaWtlIGlwaG9uZVxuICAgICAgd2hlZWxIYW5kbGVyKGUpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7IC8vIEZ1bmN0aW9ucyB0byBoZWxwIHdpdGggaGFuZGxpbmcgbW91c2VvdXQvbW91c2VvdmVyIG9uIHRoZSBDeXRvc2NhcGUgY29udGFpbmVyXG4gIC8vIEhhbmRsZSBtb3VzZW91dCBvbiBDeXRvc2NhcGUgY29udGFpbmVyXG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdtb3VzZW91dCcsIGZ1bmN0aW9uIG1vdXNlT3V0SGFuZGxlcihlKSB7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgci5jeS5lbWl0KHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICB0eXBlOiAnbW91c2VvdXQnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICB5OiBwb3NbMV1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgZmFsc2UpO1xuICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ21vdXNlb3ZlcicsIGZ1bmN0aW9uIG1vdXNlT3ZlckhhbmRsZXIoZSkge1xuICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIHIuY3kuZW1pdCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgdHlwZTogJ21vdXNlb3ZlcicsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgIHk6IHBvc1sxXVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBmYWxzZSk7XG4gIHZhciBmMXgxLCBmMXkxLCBmMngxLCBmMnkxOyAvLyBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuICB2YXIgZGlzdGFuY2UxLCBkaXN0YW5jZTFTcTsgLy8gaW5pdGlhbCBkaXN0YW5jZSBiZXR3ZWVuIGZpbmdlciAxIGFuZCBmaW5nZXIgMiBmb3IgcGluY2gtdG8tem9vbVxuXG4gIHZhciBjZW50ZXIxLCBtb2RlbENlbnRlcjE7IC8vIGNlbnRlciBwb2ludCBvbiBzdGFydCBwaW5jaCB0byB6b29tXG5cbiAgdmFyIG9mZnNldExlZnQsIG9mZnNldFRvcDtcbiAgdmFyIGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQ7XG4gIHZhciB0d29GaW5nZXJzU3RhcnRJbnNpZGU7XG5cbiAgdmFyIGRpc3RhbmNlID0gZnVuY3Rpb24gZGlzdGFuY2UoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KCh4MiAtIHgxKSAqICh4MiAtIHgxKSArICh5MiAtIHkxKSAqICh5MiAtIHkxKSk7XG4gIH07XG5cbiAgdmFyIGRpc3RhbmNlU3EgPSBmdW5jdGlvbiBkaXN0YW5jZVNxKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuICh4MiAtIHgxKSAqICh4MiAtIHgxKSArICh5MiAtIHkxKSAqICh5MiAtIHkxKTtcbiAgfTtcblxuICB2YXIgdG91Y2hzdGFydEhhbmRsZXI7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAndG91Y2hzdGFydCcsIHRvdWNoc3RhcnRIYW5kbGVyID0gZnVuY3Rpb24gdG91Y2hzdGFydEhhbmRsZXIoZSkge1xuICAgIHIuaGFzVG91Y2hTdGFydGVkID0gdHJ1ZTtcblxuICAgIGlmICghZXZlbnRJbkNvbnRhaW5lcihlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJsdXJBY3RpdmVEb21FbGVtZW50KCk7XG4gICAgci50b3VjaERhdGEuY2FwdHVyZSA9IHRydWU7XG4gICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG5cbiAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgbm93WzJdID0gcG9zWzBdO1xuICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgIG5vd1s1XSA9IHBvc1sxXTtcbiAgICB9IC8vIHJlY29yZCBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9IHRydWU7XG4gICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcyk7XG4gICAgICB2YXIgb2Zmc2V0cyA9IHIuZmluZENvbnRhaW5lckNsaWVudENvb3JkcygpO1xuICAgICAgb2Zmc2V0TGVmdCA9IG9mZnNldHNbMF07XG4gICAgICBvZmZzZXRUb3AgPSBvZmZzZXRzWzFdO1xuICAgICAgY29udGFpbmVyV2lkdGggPSBvZmZzZXRzWzJdO1xuICAgICAgY29udGFpbmVySGVpZ2h0ID0gb2Zmc2V0c1szXTtcbiAgICAgIGYxeDEgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQ7XG4gICAgICBmMXkxID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSBvZmZzZXRUb3A7XG4gICAgICBmMngxID0gZS50b3VjaGVzWzFdLmNsaWVudFggLSBvZmZzZXRMZWZ0O1xuICAgICAgZjJ5MSA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdHdvRmluZ2Vyc1N0YXJ0SW5zaWRlID0gMCA8PSBmMXgxICYmIGYxeDEgPD0gY29udGFpbmVyV2lkdGggJiYgMCA8PSBmMngxICYmIGYyeDEgPD0gY29udGFpbmVyV2lkdGggJiYgMCA8PSBmMXkxICYmIGYxeTEgPD0gY29udGFpbmVySGVpZ2h0ICYmIDAgPD0gZjJ5MSAmJiBmMnkxIDw9IGNvbnRhaW5lckhlaWdodDtcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgICAgZGlzdGFuY2UxID0gZGlzdGFuY2UoZjF4MSwgZjF5MSwgZjJ4MSwgZjJ5MSk7XG4gICAgICBkaXN0YW5jZTFTcSA9IGRpc3RhbmNlU3EoZjF4MSwgZjF5MSwgZjJ4MSwgZjJ5MSk7XG4gICAgICBjZW50ZXIxID0gWyhmMXgxICsgZjJ4MSkgLyAyLCAoZjF5MSArIGYyeTEpIC8gMl07XG4gICAgICBtb2RlbENlbnRlcjEgPSBbKGNlbnRlcjFbMF0gLSBwYW4ueCkgLyB6b29tLCAoY2VudGVyMVsxXSAtIHBhbi55KSAvIHpvb21dOyAvLyBjb25zaWRlciBjb250ZXh0IHRhcFxuXG4gICAgICB2YXIgY3h0RGlzdFRocmVzaG9sZCA9IDIwMDtcbiAgICAgIHZhciBjeHREaXN0VGhyZXNob2xkU3EgPSBjeHREaXN0VGhyZXNob2xkICogY3h0RGlzdFRocmVzaG9sZDtcblxuICAgICAgaWYgKGRpc3RhbmNlMVNxIDwgY3h0RGlzdFRocmVzaG9sZFNxICYmICFlLnRvdWNoZXNbMl0pIHtcbiAgICAgICAgdmFyIG5lYXIxID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuICAgICAgICB2YXIgbmVhcjIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMl0sIG5vd1szXSwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKG5lYXIxICYmIG5lYXIxLmlzTm9kZSgpKSB7XG4gICAgICAgICAgbmVhcjEuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0dGFwc3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXIxO1xuICAgICAgICB9IGVsc2UgaWYgKG5lYXIyICYmIG5lYXIyLmlzTm9kZSgpKSB7XG4gICAgICAgICAgbmVhcjIuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0dGFwc3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXIyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgIHR5cGU6ICdjeHR0YXBzdGFydCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgci50b3VjaERhdGEuY3h0ID0gdHJ1ZTtcbiAgICAgICAgci50b3VjaERhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICAgIC8vIHNhZmFyaSBvbiBpb3MgcGFucyB0aGUgcGFnZSBvdGhlcndpc2UgKG5vcm1hbGx5IHlvdSBzaG91bGQgYmUgYWJsZSB0byBwcmV2ZW50ZGVmYXVsdCBvbiB0b3VjaG1vdmUuLi4pXG4gICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUudG91Y2hlc1sxXSkgOyBlbHNlIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICB2YXIgbmVhciA9IG5lYXJzWzBdO1xuXG4gICAgICBpZiAobmVhciAhPSBudWxsKSB7XG4gICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBuZWFyO1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydHMgPSBuZWFycztcblxuICAgICAgICBpZiAoci5ub2RlSXNHcmFiYmFibGUobmVhcikpIHtcbiAgICAgICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgICAgaWYgKG5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgLy8gcmVzZXQgZHJhZyBlbGVtZW50cywgc2luY2UgbmVhciB3aWxsIGJlIGFkZGVkIGFnYWluXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzID0gY3kuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbGUuc2VsZWN0ZWQoKSAmJiByLm5vZGVJc0dyYWJiYWJsZShlbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhzZWxlY3RlZE5vZGVzLCB7XG4gICAgICAgICAgICAgIGFkZFRvTGlzdDogZHJhZ2dlZEVsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGROb2RlVG9EcmFnKG5lYXIsIHtcbiAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0R3JhYlRhcmdldChuZWFyKTtcblxuICAgICAgICAgIHZhciBtYWtlRXZlbnQgPSBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKTtcblxuICAgICAgICAgIGlmIChzZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgbi5lbWl0KG1ha2VFdmVudCgnZ3JhYicpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZWFyLmVtaXQobWFrZUV2ZW50KCdncmFiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsndG91Y2hzdGFydCcsICd0YXBzdGFydCcsICd2bW91c2Vkb3duJ10sIGUsIHtcbiAgICAgICAgeDogbm93WzBdLFxuICAgICAgICB5OiBub3dbMV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAobmVhciA9PSBudWxsKSB7XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH07XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICB9IC8vIFRhcCwgdGFwaG9sZFxuICAgICAgLy8gLS0tLS1cblxuXG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID0gZmFsc2U7XG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaFN0YXJ0VGltZSA9ICtuZXcgRGF0ZSgpO1xuICAgICAgY2xlYXJUaW1lb3V0KHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0KTtcbiAgICAgIHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID09PSBmYWxzZSAmJiAhci5waW5jaGluZyAvLyBpZiBwaW5jaGluZywgdGhlbiB0YXBob2xkIHVuc2VsZWN0IHNob3VsZG4ndCB0YWtlIGVmZmVjdFxuICAgICAgICAmJiAhci50b3VjaERhdGEuc2VsZWN0aW5nIC8vIGJveCBzZWxlY3Rpb24gc2hvdWxkbid0IGFsbG93IHRhcGhvbGQgdGhyb3VnaFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoci50b3VjaERhdGEuc3RhcnQsIFsndGFwaG9sZCddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICB9LCByLnRhcGhvbGREdXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPj0gMSkge1xuICAgICAgdmFyIHNQb3MgPSByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm93Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNQb3NbaV0gPSBlYXJsaWVyW2ldID0gbm93W2ldO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG91Y2gwID0gZS50b3VjaGVzWzBdO1xuICAgICAgci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb24gPSBbdG91Y2gwLmNsaWVudFgsIHRvdWNoMC5jbGllbnRZXTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIHRvdWNobW92ZUhhbmRsZXI7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHdpbmRvdywgJ3RvdWNobW92ZScsIHRvdWNobW92ZUhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaG1vdmVIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG5cbiAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgbm93WzJdID0gcG9zWzBdO1xuICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgIG5vd1s1XSA9IHBvc1sxXTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnRHUG9zID0gci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb247XG4gICAgdmFyIGlzT3ZlclRocmVzaG9sZERyYWc7XG5cbiAgICBpZiAoY2FwdHVyZSAmJiBlLnRvdWNoZXNbMF0gJiYgc3RhcnRHUG9zKSB7XG4gICAgICB2YXIgZGlzcCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgICBkaXNwW2pdID0gbm93W2pdIC0gZWFybGllcltqXTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSBzdGFydEdQb3NbMF07XG4gICAgICB2YXIgZHgyID0gZHggKiBkeDtcbiAgICAgIHZhciBkeSA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gc3RhcnRHUG9zWzFdO1xuICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICBpc092ZXJUaHJlc2hvbGREcmFnID0gZGlzdDIgPj0gci50b3VjaFRhcFRocmVzaG9sZDI7XG4gICAgfSAvLyBjb250ZXh0IHN3aXBlIGNhbmNlbGxpbmdcblxuXG4gICAgaWYgKGNhcHR1cmUgJiYgci50b3VjaERhdGEuY3h0KSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB2YXIgZjF4MiA9IGUudG91Y2hlc1swXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICBmMXkyID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSBvZmZzZXRUb3A7XG4gICAgICB2YXIgZjJ4MiA9IGUudG91Y2hlc1sxXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICBmMnkyID0gZS50b3VjaGVzWzFdLmNsaWVudFkgLSBvZmZzZXRUb3A7IC8vIHZhciBkaXN0YW5jZTIgPSBkaXN0YW5jZSggZjF4MiwgZjF5MiwgZjJ4MiwgZjJ5MiApO1xuXG4gICAgICB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpO1xuICAgICAgdmFyIGZhY3RvclNxID0gZGlzdGFuY2UyU3EgLyBkaXN0YW5jZTFTcTtcbiAgICAgIHZhciBkaXN0VGhyZXNob2xkID0gMTUwO1xuICAgICAgdmFyIGRpc3RUaHJlc2hvbGRTcSA9IGRpc3RUaHJlc2hvbGQgKiBkaXN0VGhyZXNob2xkO1xuICAgICAgdmFyIGZhY3RvclRocmVzaG9sZCA9IDEuNTtcbiAgICAgIHZhciBmYWN0b3JUaHJlc2hvbGRTcSA9IGZhY3RvclRocmVzaG9sZCAqIGZhY3RvclRocmVzaG9sZDsgLy8gY2FuY2VsIGN0eCBnZXN0dXJlcyBpZiB0aGUgZGlzdGFuY2UgYi90IHRoZSBmaW5nZXJzIGluY3JlYXNlc1xuXG4gICAgICBpZiAoZmFjdG9yU3EgPj0gZmFjdG9yVGhyZXNob2xkU3EgfHwgZGlzdGFuY2UyU3EgPj0gZGlzdFRocmVzaG9sZFNxKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLmN4dCA9IGZhbHNlO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiAnY3h0dGFwZW5kJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zdGFydCkge1xuICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KGN4dEV2dCk7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gY29udGV4dCBzd2lwZVxuXG5cbiAgICBpZiAoY2FwdHVyZSAmJiByLnRvdWNoRGF0YS5jeHQpIHtcbiAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHRkcmFnJyxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuXG4gICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQuZW1pdChjeHRFdnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByLnRvdWNoRGF0YS5jeHREcmFnZ2VkID0gdHJ1ZTtcbiAgICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci50b3VjaERhdGEuY3h0T3Zlcikge1xuICAgICAgICBpZiAoci50b3VjaERhdGEuY3h0T3Zlcikge1xuICAgICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2N4dGRyYWdvdXQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIgPSBuZWFyO1xuXG4gICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgbmVhci5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBib3ggc2VsZWN0aW9uXG5cbiAgICB9IGVsc2UgaWYgKGNhcHR1cmUgJiYgZS50b3VjaGVzWzJdICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5sYXN0VGhyZWVUb3VjaCA9ICtuZXcgRGF0ZSgpO1xuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgIHR5cGU6ICdib3hzdGFydCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHIudG91Y2hEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSB0cnVlO1xuICAgICAgc2VsZWN0WzRdID0gMTtcblxuICAgICAgaWYgKCFzZWxlY3QgfHwgc2VsZWN0Lmxlbmd0aCA9PT0gMCB8fCBzZWxlY3RbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWxlY3RbMF0gPSAobm93WzBdICsgbm93WzJdICsgbm93WzRdKSAvIDM7XG4gICAgICAgIHNlbGVjdFsxXSA9IChub3dbMV0gKyBub3dbM10gKyBub3dbNV0pIC8gMztcbiAgICAgICAgc2VsZWN0WzJdID0gKG5vd1swXSArIG5vd1syXSArIG5vd1s0XSkgLyAzICsgMTtcbiAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdFsyXSA9IChub3dbMF0gKyBub3dbMl0gKyBub3dbNF0pIC8gMztcbiAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzO1xuICAgICAgfVxuXG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTsgLy8gcGluY2ggdG8gem9vbVxuICAgIH0gZWxzZSBpZiAoY2FwdHVyZSAmJiBlLnRvdWNoZXNbMV0gJiYgIXIudG91Y2hEYXRhLmRpZFNlbGVjdCAvLyBkb24ndCBhbGxvdyBib3ggc2VsZWN0aW9uIHRvIGRlZ3JhZGUgdG8gcGluY2gtdG8tem9vbVxuICAgICYmIGN5Lnpvb21pbmdFbmFibGVkKCkgJiYgY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyWm9vbWluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSkge1xuICAgICAgLy8gdHdvIGZpbmdlcnMgPT4gcGluY2ggdG8gem9vbVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcztcblxuICAgICAgaWYgKGRyYWdnZWRFbGVzKSB7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZHJhZ2dlZEVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZGVfcCA9IGRyYWdnZWRFbGVzW2ldLl9wcml2YXRlO1xuICAgICAgICAgIGRlX3AuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICAgIGRlX3AucnNjcmF0Y2guaW5EcmFnTGF5ZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX3N0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7IC8vICh4MiwgeTIpIGZvciBmaW5nZXJzIDEgYW5kIDJcblxuICAgICAgdmFyIGYxeDIgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgZjF5MiA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdmFyIGYyeDIgPSBlLnRvdWNoZXNbMV0uY2xpZW50WCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgZjJ5MiA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdmFyIGRpc3RhbmNlMiA9IGRpc3RhbmNlKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpOyAvLyB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKCBmMXgyLCBmMXkyLCBmMngyLCBmMnkyICk7XG4gICAgICAvLyB2YXIgZmFjdG9yID0gTWF0aC5zcXJ0KCBkaXN0YW5jZTJTcSApIC8gTWF0aC5zcXJ0KCBkaXN0YW5jZTFTcSApO1xuXG4gICAgICB2YXIgZmFjdG9yID0gZGlzdGFuY2UyIC8gZGlzdGFuY2UxO1xuXG4gICAgICBpZiAodHdvRmluZ2Vyc1N0YXJ0SW5zaWRlKSB7XG4gICAgICAgIC8vIGRlbHRhIGZpbmdlcjFcbiAgICAgICAgdmFyIGRmMXggPSBmMXgyIC0gZjF4MTtcbiAgICAgICAgdmFyIGRmMXkgPSBmMXkyIC0gZjF5MTsgLy8gZGVsdGEgZmluZ2VyIDJcblxuICAgICAgICB2YXIgZGYyeCA9IGYyeDIgLSBmMngxO1xuICAgICAgICB2YXIgZGYyeSA9IGYyeTIgLSBmMnkxOyAvLyB0cmFuc2xhdGlvbiBpcyB0aGUgbm9ybWFsaXNlZCB2ZWN0b3Igb2YgdGhlIHR3byBmaW5nZXJzIG1vdmVtZW50XG4gICAgICAgIC8vIGkuZS4gc28gcGluY2hpbmcgY2FuY2VscyBvdXQgYW5kIG1vdmluZyB0b2dldGhlciBwYW5zXG5cbiAgICAgICAgdmFyIHR4ID0gKGRmMXggKyBkZjJ4KSAvIDI7XG4gICAgICAgIHZhciB0eSA9IChkZjF5ICsgZGYyeSkgLyAyOyAvLyBub3cgY2FsY3VsYXRlIHRoZSB6b29tXG5cbiAgICAgICAgdmFyIHpvb20xID0gY3kuem9vbSgpO1xuICAgICAgICB2YXIgem9vbTIgPSB6b29tMSAqIGZhY3RvcjtcbiAgICAgICAgdmFyIHBhbjEgPSBjeS5wYW4oKTsgLy8gdGhlIG1vZGVsIGNlbnRlciBwb2ludCBjb252ZXJ0ZWQgdG8gdGhlIGN1cnJlbnQgcmVuZGVyZWQgcG9zXG5cbiAgICAgICAgdmFyIGN0cnggPSBtb2RlbENlbnRlcjFbMF0gKiB6b29tMSArIHBhbjEueDtcbiAgICAgICAgdmFyIGN0cnkgPSBtb2RlbENlbnRlcjFbMV0gKiB6b29tMSArIHBhbjEueTtcbiAgICAgICAgdmFyIHBhbjIgPSB7XG4gICAgICAgICAgeDogLXpvb20yIC8gem9vbTEgKiAoY3RyeCAtIHBhbjEueCAtIHR4KSArIGN0cngsXG4gICAgICAgICAgeTogLXpvb20yIC8gem9vbTEgKiAoY3RyeSAtIHBhbjEueSAtIHR5KSArIGN0cnlcbiAgICAgICAgfTsgLy8gcmVtb3ZlIGRyYWdnZWQgZWxlc1xuXG4gICAgICAgIGlmIChfc3RhcnQgJiYgX3N0YXJ0LmFjdGl2ZSgpKSB7XG4gICAgICAgICAgdmFyIGRyYWdnZWRFbGVzID0gci5kcmFnRGF0YS50b3VjaERyYWdFbGVzO1xuICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZXMpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuXG4gICAgICAgICAgX3N0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KCdmcmVlb24nKTtcblxuICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgIGlmIChyLmRyYWdEYXRhLmRpZERyYWcpIHtcbiAgICAgICAgICAgIF9zdGFydC5lbWl0KCdkcmFnZnJlZW9uJyk7XG5cbiAgICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY3kudmlld3BvcnQoe1xuICAgICAgICAgIHpvb206IHpvb20yLFxuICAgICAgICAgIHBhbjogcGFuMixcbiAgICAgICAgICBjYW5jZWxPbkZhaWxlZFpvb206IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGN5LmVtaXQoJ3BpbmNoem9vbScpO1xuICAgICAgICBkaXN0YW5jZTEgPSBkaXN0YW5jZTI7XG4gICAgICAgIGYxeDEgPSBmMXgyO1xuICAgICAgICBmMXkxID0gZjF5MjtcbiAgICAgICAgZjJ4MSA9IGYyeDI7XG4gICAgICAgIGYyeTEgPSBmMnkyO1xuICAgICAgICByLnBpbmNoaW5nID0gdHJ1ZTtcbiAgICAgIH0gLy8gUmUtcHJvamVjdFxuXG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFkpO1xuICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICAgIG5vd1syXSA9IHBvc1swXTtcbiAgICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgICBub3dbNV0gPSBwb3NbMV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMF0gJiYgIXIudG91Y2hEYXRhLmRpZFNlbGVjdCAvLyBkb24ndCBhbGxvdyBib3ggc2VsZWN0aW9uIHRvIGRlZ3JhZGUgdG8gc2luZ2xlIGZpbmdlciBldmVudHMgbGlrZSBwYW5uaW5nXG4gICAgKSB7XG4gICAgICAgIHZhciBzdGFydCA9IHIudG91Y2hEYXRhLnN0YXJ0O1xuICAgICAgICB2YXIgbGFzdCA9IHIudG91Y2hEYXRhLmxhc3Q7XG4gICAgICAgIHZhciBuZWFyO1xuXG4gICAgICAgIGlmICghci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzICYmICFyLnN3aXBlUGFubmluZykge1xuICAgICAgICAgIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiBzdGFydCAhPSBudWxsKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IC8vIGRyYWdnaW5nIG5vZGVzXG5cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiBzdGFydCAhPSBudWxsICYmIHIubm9kZUlzRHJhZ2dhYmxlKHN0YXJ0KSkge1xuICAgICAgICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgICAvLyB0aGVuIGRyYWdnaW5nIGNhbiBoYXBwZW5cbiAgICAgICAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcztcbiAgICAgICAgICAgIHZhciBqdXN0U3RhcnRlZERyYWcgPSAhci5kcmFnRGF0YS5kaWREcmFnO1xuXG4gICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgIGFkZE5vZGVzVG9EcmFnKGRyYWdnZWRFbGVzLCB7XG4gICAgICAgICAgICAgICAgaW5EcmFnTGF5ZXI6IHRydWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgdG90YWxTaGlmdCA9IHtcbiAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKG51bWJlcihkaXNwWzBdKSAmJiBudW1iZXIoZGlzcFsxXSkpIHtcbiAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRpc3BbMF07XG4gICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkaXNwWzFdO1xuXG4gICAgICAgICAgICAgIGlmIChqdXN0U3RhcnRlZERyYWcpIHtcbiAgICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB2YXIgZHJhZ0RlbHRhID0gci50b3VjaERhdGEuZHJhZ0RlbHRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRyYWdEZWx0YSAmJiBudW1iZXIoZHJhZ0RlbHRhWzBdKSAmJiBudW1iZXIoZHJhZ0RlbHRhWzFdKSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRyYWdEZWx0YVswXTtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkcmFnRGVsdGFbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyA9IHRydWU7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5zaWxlbnRTaGlmdCh0b3RhbFNoaWZ0KS5lbWl0KCdwb3NpdGlvbiBkcmFnJyk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0UG9zaXRpb25bMF0gPT0gZWFybGllclswXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uWzFdID09IGVhcmxpZXJbMV0pIHtcbiAgICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG90aGVyaXNlIGtlZXAgdHJhY2sgb2YgZHJhZyBkZWx0YSBmb3IgbGF0ZXJcbiAgICAgICAgICAgIHZhciBkcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGEgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChkcmFnRGVsdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMF0pO1xuICAgICAgICAgICAgICBkcmFnRGVsdGEucHVzaChkaXNwWzFdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRyYWdEZWx0YVswXSArPSBkaXNwWzBdO1xuICAgICAgICAgICAgICBkcmFnRGVsdGFbMV0gKz0gZGlzcFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gdG91Y2htb3ZlXG5cblxuICAgICAgICB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhzdGFydCB8fCBuZWFyLCBbJ3RvdWNobW92ZScsICd0YXBkcmFnJywgJ3Ztb3VzZW1vdmUnXSwgZSwge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoKCFzdGFydCB8fCAhc3RhcnQuZ3JhYmJlZCgpKSAmJiBuZWFyICE9IGxhc3QpIHtcbiAgICAgICAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgICAgICAgIGxhc3QuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGFwZHJhZ291dCcsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGFwZHJhZ292ZXInLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHIudG91Y2hEYXRhLmxhc3QgPSBuZWFyO1xuICAgICAgICB9IC8vIGNoZWNrIHRvIGNhbmNlbCB0YXBob2xkXG5cbiAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG5vd1tpXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uW2ldICYmIGlzT3ZlclRocmVzaG9sZERyYWcpIHtcbiAgICAgICAgICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIHBhbm5pbmdcblxuXG4gICAgICAgIGlmIChjYXB0dXJlICYmIChzdGFydCA9PSBudWxsIHx8IHN0YXJ0LnBhbm5hYmxlKCkpICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKHN0YXJ0LCByLnRvdWNoRGF0YS5zdGFydHMpO1xuXG4gICAgICAgICAgaWYgKGFsbG93UGFzc3Rocm91Z2gpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKCFyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgICAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gYXJyYXkycG9pbnQoci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyLnN3aXBlUGFubmluZykge1xuICAgICAgICAgICAgICBjeS5wYW5CeSh7XG4gICAgICAgICAgICAgICAgeDogZGlzcFswXSAqIHpvb20sXG4gICAgICAgICAgICAgICAgeTogZGlzcFsxXSAqIHpvb21cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGN5LmVtaXQoJ2RyYWdwYW4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICAgICAgICByLnN3aXBlUGFubmluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGN5LnBhbkJ5KHtcbiAgICAgICAgICAgICAgICB4OiBkeCAqIHpvb20sXG4gICAgICAgICAgICAgICAgeTogZHkgKiB6b29tXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG5cbiAgICAgICAgICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyBSZS1wcm9qZWN0XG5cblxuICAgICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgICAgbm93WzFdID0gcG9zWzFdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgZWFybGllcltqXSA9IG5vd1tqXTtcbiAgICB9IC8vIHRoZSBhY3RpdmUgYmcgaW5kaWNhdG9yIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gbWFraW5nIGEgc3dpcGUgdGhhdCBpcyBuZWl0aGVyIGZvciBkcmFnZ2luZyBub2RlcyBvciBwYW5uaW5nXG5cblxuICAgIGlmIChjYXB0dXJlICYmIGUudG91Y2hlcy5sZW5ndGggPiAwICYmICFyLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgJiYgIXIuc3dpcGVQYW5uaW5nICYmIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiAhPSBudWxsKSB7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIHRvdWNoY2FuY2VsSGFuZGxlcjtcbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAndG91Y2hjYW5jZWwnLCB0b3VjaGNhbmNlbEhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaGNhbmNlbEhhbmRsZXIoZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgc3RhcnQgPSByLnRvdWNoRGF0YS5zdGFydDtcbiAgICByLnRvdWNoRGF0YS5jYXB0dXJlID0gZmFsc2U7XG5cbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgdG91Y2hlbmRIYW5kbGVyLCBkaWREb3VibGVUb3VjaCwgdG91Y2hUaW1lb3V0LCBwcmV2VG91Y2hUaW1lU3RhbXA7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHdpbmRvdywgJ3RvdWNoZW5kJywgdG91Y2hlbmRIYW5kbGVyID0gZnVuY3Rpb24gdG91Y2hlbmRIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIHN0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7XG4gICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLmNhcHR1cmUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHIuc3dpcGVQYW5uaW5nID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgbm93ID0gci50b3VjaERhdGEubm93O1xuICAgIHZhciBlYXJsaWVyID0gci50b3VjaERhdGEuZWFybGllcjtcblxuICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgIG5vd1swXSA9IHBvc1swXTtcbiAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzWzFdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICBub3dbMl0gPSBwb3NbMF07XG4gICAgICBub3dbM10gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMl0uY2xpZW50WCwgZS50b3VjaGVzWzJdLmNsaWVudFkpO1xuICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgbm93WzVdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChzdGFydCkge1xuICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBjdHhUYXBlbmQ7XG5cbiAgICBpZiAoci50b3VjaERhdGEuY3h0KSB7XG4gICAgICBjdHhUYXBlbmQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyLnRvdWNoRGF0YS5jeHREcmFnZ2VkKSB7XG4gICAgICAgIHZhciBjdHhUYXAgPSB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiAnY3h0dGFwJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN0eFRhcCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0Ll9wcml2YXRlLmdyYWJiZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgci50b3VjaERhdGEuY3h0ID0gZmFsc2U7XG4gICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG51bGw7XG4gICAgICByLnJlZHJhdygpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gbm8gbW9yZSBib3ggc2VsZWN0aW9uIGlmIHdlIGRvbid0IGhhdmUgdGhyZWUgZmluZ2Vyc1xuXG5cbiAgICBpZiAoIWUudG91Y2hlc1syXSAmJiBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKCkgJiYgci50b3VjaERhdGEuc2VsZWN0aW5nKSB7XG4gICAgICByLnRvdWNoRGF0YS5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgIHZhciBib3ggPSBjeS5jb2xsZWN0aW9uKHIuZ2V0QWxsSW5Cb3goc2VsZWN0WzBdLCBzZWxlY3RbMV0sIHNlbGVjdFsyXSwgc2VsZWN0WzNdKSk7XG4gICAgICBzZWxlY3RbMF0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbMV0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbMl0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbM10gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbNF0gPSAwO1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgIGN5LmVtaXQoe1xuICAgICAgICB0eXBlOiAnYm94ZW5kJyxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB2YXIgZWxlV291bGRCZVNlbGVjdGVkID0gZnVuY3Rpb24gZWxlV291bGRCZVNlbGVjdGVkKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICB9O1xuXG4gICAgICBib3guZW1pdCgnYm94Jykuc3RkRmlsdGVyKGVsZVdvdWxkQmVTZWxlY3RlZCkuc2VsZWN0KCkuZW1pdCgnYm94c2VsZWN0Jyk7XG5cbiAgICAgIGlmIChib3gubm9uZW1wdHkoKSkge1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgci5yZWRyYXcoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgIT0gbnVsbCkge1xuICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMV0pIDsgZWxzZSBpZiAoZS50b3VjaGVzWzBdKSA7IGVsc2UgaWYgKCFlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXM7XG5cbiAgICAgIGlmIChzdGFydCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBzdGFydFdhc0dyYWJiZWQgPSBzdGFydC5fcHJpdmF0ZS5ncmFiYmVkO1xuICAgICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKGRyYWdnZWRFbGVzKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuXG4gICAgICAgIGlmIChzdGFydFdhc0dyYWJiZWQpIHtcbiAgICAgICAgICBzdGFydC5lbWl0KCdmcmVlb24nKTtcbiAgICAgICAgICBkcmFnZ2VkRWxlcy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICBzdGFydC5lbWl0KCdkcmFnZnJlZW9uJyk7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsndG91Y2hlbmQnLCAndGFwZW5kJywgJ3Ztb3VzZXVwJywgJ3RhcGRyYWdvdXQnXSwgZSwge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWyd0b3VjaGVuZCcsICd0YXBlbmQnLCAndm1vdXNldXAnLCAndGFwZHJhZ291dCddLCBlLCB7XG4gICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblswXSAtIG5vd1swXTtcbiAgICAgIHZhciBkeDIgPSBkeCAqIGR4O1xuICAgICAgdmFyIGR5ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblsxXSAtIG5vd1sxXTtcbiAgICAgIHZhciBkeTIgPSBkeSAqIGR5O1xuICAgICAgdmFyIGRpc3QyID0gZHgyICsgZHkyO1xuICAgICAgdmFyIHJkaXN0MiA9IGRpc3QyICogem9vbSAqIHpvb207IC8vIFRhcCBldmVudCwgcm91Z2hseSBzYW1lIGFzIG1vdXNlIGNsaWNrIGV2ZW50IGZvciB0b3VjaFxuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQpIHtcbiAgICAgICAgaWYgKCFzdGFydCkge1xuICAgICAgICAgIGN5LiQoJzpzZWxlY3RlZCcpLnVuc2VsZWN0KFsndGFwdW5zZWxlY3QnXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ3RhcCcsICd2Y2xpY2snXSwgZSwge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfSk7XG4gICAgICAgIGRpZERvdWJsZVRvdWNoID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGUudGltZVN0YW1wIC0gcHJldlRvdWNoVGltZVN0YW1wIDw9IGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSkge1xuICAgICAgICAgIHRvdWNoVGltZW91dCAmJiBjbGVhclRpbWVvdXQodG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICBkaWREb3VibGVUb3VjaCA9IHRydWU7XG4gICAgICAgICAgcHJldlRvdWNoVGltZVN0YW1wID0gbnVsbDtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ2RibHRhcCcsICd2ZGJsY2xpY2snXSwgZSwge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG91Y2hUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGlkRG91YmxlVG91Y2gpIHJldHVybjtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsnb25ldGFwJywgJ3ZvbmVjbGljayddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpO1xuICAgICAgICAgIHByZXZUb3VjaFRpbWVTdGFtcCA9IGUudGltZVN0YW1wO1xuICAgICAgICB9XG4gICAgICB9IC8vIFByZXBhcmUgdG8gc2VsZWN0IHRoZSBjdXJyZW50bHkgdG91Y2hlZCBub2RlLCBvbmx5IGlmIGl0IGhhc24ndCBiZWVuIGRyYWdnZWQgcGFzdCBhIGNlcnRhaW4gZGlzdGFuY2VcblxuXG4gICAgICBpZiAoc3RhcnQgIT0gbnVsbCAmJiAhci5kcmFnRGF0YS5kaWREcmFnIC8vIGRpZG4ndCBkcmFnIG5vZGVzIGFyb3VuZFxuICAgICAgJiYgc3RhcnQuX3ByaXZhdGUuc2VsZWN0YWJsZSAmJiByZGlzdDIgPCByLnRvdWNoVGFwVGhyZXNob2xkMiAmJiAhci5waW5jaGluZyAvLyBwaW5jaCB0byB6b29tIHNob3VsZCBub3QgYWZmZWN0IHNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5tZXJnZShzdGFydCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN0YXJ0LnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgc3RhcnQudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgZWFybGllcltqXSA9IG5vd1tqXTtcbiAgICB9XG5cbiAgICByLmRyYWdEYXRhLmRpZERyYWcgPSBmYWxzZTsgLy8gcmVzZXQgZm9yIG5leHQgdG91Y2hzdGFydFxuXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHIudG91Y2hEYXRhLmRyYWdEZWx0YSA9IFtdO1xuICAgICAgci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gICAgICByLnRvdWNoRGF0YS5zdGFydEdQb3NpdGlvbiA9IG51bGw7XG4gICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vIHRoZSBvbGQgc3RhcnQgZ2xvYmFsIHBvcyduIG1heSBub3QgYmUgdGhlIHNhbWUgZmluZ2VyIHRoYXQgcmVtYWluc1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydEdQb3NpdGlvbiA9IFtlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFldO1xuICAgICAgfVxuXG4gICAgICByLnBpbmNoaW5nID0gZmFsc2U7XG4gICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIHIucmVkcmF3KCk7XG4gICAgfSAvL3IucmVkcmF3KCk7XG5cbiAgfSwgZmFsc2UpOyAvLyBmYWxsYmFjayBjb21wYXRpYmlsaXR5IGxheWVyIGZvciBtcyBwb2ludGVyIGV2ZW50c1xuXG4gIGlmICh0eXBlb2YgVG91Y2hFdmVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgcG9pbnRlcnMgPSBbXTtcblxuICAgIHZhciBtYWtlVG91Y2ggPSBmdW5jdGlvbiBtYWtlVG91Y2goZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xpZW50WDogZS5jbGllbnRYLFxuICAgICAgICBjbGllbnRZOiBlLmNsaWVudFksXG4gICAgICAgIGZvcmNlOiAxLFxuICAgICAgICBpZGVudGlmaWVyOiBlLnBvaW50ZXJJZCxcbiAgICAgICAgcGFnZVg6IGUucGFnZVgsXG4gICAgICAgIHBhZ2VZOiBlLnBhZ2VZLFxuICAgICAgICByYWRpdXNYOiBlLndpZHRoIC8gMixcbiAgICAgICAgcmFkaXVzWTogZS5oZWlnaHQgLyAyLFxuICAgICAgICBzY3JlZW5YOiBlLnNjcmVlblgsXG4gICAgICAgIHNjcmVlblk6IGUuc2NyZWVuWSxcbiAgICAgICAgdGFyZ2V0OiBlLnRhcmdldFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIG1ha2VQb2ludGVyID0gZnVuY3Rpb24gbWFrZVBvaW50ZXIoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIHRvdWNoOiBtYWtlVG91Y2goZSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHZhciBhZGRQb2ludGVyID0gZnVuY3Rpb24gYWRkUG9pbnRlcihlKSB7XG4gICAgICBwb2ludGVycy5wdXNoKG1ha2VQb2ludGVyKGUpKTtcbiAgICB9O1xuXG4gICAgdmFyIHJlbW92ZVBvaW50ZXIgPSBmdW5jdGlvbiByZW1vdmVQb2ludGVyKGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHAgPSBwb2ludGVyc1tpXTtcblxuICAgICAgICBpZiAocC5ldmVudC5wb2ludGVySWQgPT09IGUucG9pbnRlcklkKSB7XG4gICAgICAgICAgcG9pbnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgdXBkYXRlUG9pbnRlciA9IGZ1bmN0aW9uIHVwZGF0ZVBvaW50ZXIoZSkge1xuICAgICAgdmFyIHAgPSBwb2ludGVycy5maWx0ZXIoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAuZXZlbnQucG9pbnRlcklkID09PSBlLnBvaW50ZXJJZDtcbiAgICAgIH0pWzBdO1xuICAgICAgcC5ldmVudCA9IGU7XG4gICAgICBwLnRvdWNoID0gbWFrZVRvdWNoKGUpO1xuICAgIH07XG5cbiAgICB2YXIgYWRkVG91Y2hlc1RvRXZlbnQgPSBmdW5jdGlvbiBhZGRUb3VjaGVzVG9FdmVudChlKSB7XG4gICAgICBlLnRvdWNoZXMgPSBwb2ludGVycy5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAudG91Y2g7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdmFyIHBvaW50ZXJJc01vdXNlID0gZnVuY3Rpb24gcG9pbnRlcklzTW91c2UoZSkge1xuICAgICAgcmV0dXJuIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgfHwgZS5wb2ludGVyVHlwZSA9PT0gNDtcbiAgICB9O1xuXG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVyZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBtb3VzZSBhbHJlYWR5IGhhbmRsZWRcblxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhZGRQb2ludGVyKGUpO1xuICAgICAgYWRkVG91Y2hlc1RvRXZlbnQoZSk7XG4gICAgICB0b3VjaHN0YXJ0SGFuZGxlcihlKTtcbiAgICB9KTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJ1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBtb3VzZSBhbHJlYWR5IGhhbmRsZWRcblxuXG4gICAgICByZW1vdmVQb2ludGVyKGUpO1xuICAgICAgYWRkVG91Y2hlc1RvRXZlbnQoZSk7XG4gICAgICB0b3VjaGVuZEhhbmRsZXIoZSk7XG4gICAgfSk7XG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVyY2FuY2VsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChwb2ludGVySXNNb3VzZShlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgIHJlbW92ZVBvaW50ZXIoZSk7XG4gICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgIHRvdWNoY2FuY2VsSGFuZGxlcihlKTtcbiAgICB9KTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJtb3ZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChwb2ludGVySXNNb3VzZShlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHVwZGF0ZVBvaW50ZXIoZSk7XG4gICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgIHRvdWNobW92ZUhhbmRsZXIoZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBCUnAkZCA9IHt9O1xuXG5CUnAkZC5nZW5lcmF0ZVBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbbmFtZV0gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogbmFtZSxcbiAgICBwb2ludHM6IHBvaW50cyxcbiAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIubm9kZVNoYXBlSW1wbCgncG9seWdvbicsIGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHRoaXMucG9pbnRzKTtcbiAgICB9LFxuICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyLCBoZWlnaHQgLyAyLCBwYWRkaW5nKTtcbiAgICB9LFxuICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZyk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVFbGxpcHNlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydlbGxpcHNlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2VsbGlwc2UnLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgcmV0dXJuIGludGVyc2VjdExpbmVFbGxpcHNlKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyICsgcGFkZGluZywgaGVpZ2h0IC8gMiArIHBhZGRpbmcpO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICByZXR1cm4gY2hlY2tJbkVsbGlwc2UoeCwgeSwgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgcGFkZGluZyk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVSb3VuZFBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gIC8vIFByZS1jb21wdXRlIGNvbnRyb2wgcG9pbnRzXG4gIC8vIFNpbmNlIHRoZXNlIHBvaW50cyBkZXBlbmQgb24gdGhlIHJhZGl1cyBsZW5ndGggKHdoaWNoIGluIHR1cm5zIGRlcGVuZCBvbiB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSBub2RlKSB3ZSB3aWxsIG9ubHkgcHJlLWNvbXB1dGVcbiAgLy8gdGhlIHVuaXQgdmVjdG9ycy5cbiAgLy8gRm9yIHNpbXBsaWNpdHkgdGhlIGxheW91dCB3aWxsIGJlOlxuICAvLyBbIHAwLCBVbml0VmVjdG9yUDBQMSwgcDEsIFVuaVZlY3RvclAxUDIsIC4uLiwgcG4sIFVuaXRWZWN0b3JQblAwIF1cbiAgdmFyIGFsbFBvaW50cyA9IG5ldyBBcnJheShwb2ludHMubGVuZ3RoICogMik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZUluZGV4ID0gaSAqIDI7XG4gICAgdmFyIGRlc3RJbmRleCA9IHZvaWQgMDtcblxuICAgIGlmIChpIDwgcG9pbnRzLmxlbmd0aCAvIDIgLSAxKSB7XG4gICAgICBkZXN0SW5kZXggPSAoaSArIDEpICogMjtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVzdEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICBhbGxQb2ludHNbaSAqIDRdID0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICBhbGxQb2ludHNbaSAqIDQgKyAxXSA9IHBvaW50c1tzb3VyY2VJbmRleCArIDFdO1xuICAgIHZhciB4RGVzdCA9IHBvaW50c1tkZXN0SW5kZXhdIC0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICB2YXIgeURlc3QgPSBwb2ludHNbZGVzdEluZGV4ICsgMV0gLSBwb2ludHNbc291cmNlSW5kZXggKyAxXTtcbiAgICB2YXIgbm9ybSA9IE1hdGguc3FydCh4RGVzdCAqIHhEZXN0ICsgeURlc3QgKiB5RGVzdCk7XG4gICAgYWxsUG9pbnRzW2kgKiA0ICsgMl0gPSB4RGVzdCAvIG5vcm07XG4gICAgYWxsUG9pbnRzW2kgKiA0ICsgM10gPSB5RGVzdCAvIG5vcm07XG4gIH1cblxuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzW25hbWVdID0ge1xuICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgcG9pbnRzOiBhbGxQb2ludHMsXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwoJ3JvdW5kLXBvbHlnb24nLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCB0aGlzLnBvaW50cyk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgcmV0dXJuIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHJldHVybiBwb2ludEluc2lkZVJvdW5kUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1sncm91bmQtcmVjdGFuZ2xlJ10gPSB0aGlzLm5vZGVTaGFwZXNbJ3JvdW5kcmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBkaWFtID0gY29ybmVyUmFkaXVzICogMjsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gZGlhbSwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHZCb3hcblxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAtIGRpYW0sIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHRvcCBsZWZ0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggLSB3aWR0aCAvIDIgKyBjb3JuZXJSYWRpdXMsIGNlbnRlclkgLSBoZWlnaHQgLyAyICsgY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgdG9wIHJpZ2h0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgLSBoZWlnaHQgLyAyICsgY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgYm90dG9tIHJpZ2h0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgKyBoZWlnaHQgLyAyIC0gY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgYm90dG9tIGxlZnQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCAtIHdpZHRoIC8gMiArIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVDdXRSZWN0YW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbJ2N1dC1yZWN0YW5nbGUnXSA9IHRoaXMubm9kZVNoYXBlc1snY3V0cmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2N1dC1yZWN0YW5nbGUnLFxuICAgIGNvcm5lckxlbmd0aDogZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoKCksXG4gICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHM6IGZ1bmN0aW9uIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgdmFyIGNsID0gdGhpcy5jb3JuZXJMZW5ndGg7XG4gICAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgICAgdmFyIGh3ID0gd2lkdGggLyAyO1xuICAgICAgdmFyIHhCZWdpbiA9IGNlbnRlclggLSBodztcbiAgICAgIHZhciB4RW5kID0gY2VudGVyWCArIGh3O1xuICAgICAgdmFyIHlCZWdpbiA9IGNlbnRlclkgLSBoaDtcbiAgICAgIHZhciB5RW5kID0gY2VudGVyWSArIGhoOyAvLyBwb2ludHMgYXJlIGluIGNsb2Nrd2lzZSBvcmRlciwgaW5uZXIgKGltYWdpbmFyeSkgdHJpYW5nbGUgcHQgb24gWzQsIDVdXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGNsLCB4QmVnaW4gKyBjbCwgeUJlZ2luLCB4QmVnaW4gKyBjbCwgeUJlZ2luICsgY2xdLFxuICAgICAgICB0b3BSaWdodDogW3hFbmQgLSBjbCwgeUJlZ2luLCB4RW5kLCB5QmVnaW4gKyBjbCwgeEVuZCAtIGNsLCB5QmVnaW4gKyBjbF0sXG4gICAgICAgIGJvdHRvbVJpZ2h0OiBbeEVuZCwgeUVuZCAtIGNsLCB4RW5kIC0gY2wsIHlFbmQsIHhFbmQgLSBjbCwgeUVuZCAtIGNsXSxcbiAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIGNsLCB5RW5kLCB4QmVnaW4sIHlFbmQgLSBjbCwgeEJlZ2luICsgY2wsIHlFbmQgLSBjbF1cbiAgICAgIH07XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgdmFyIGNQdHMgPSB0aGlzLmdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGggKyAyICogcGFkZGluZywgaGVpZ2h0ICsgMiAqIHBhZGRpbmcsIG5vZGVYLCBub2RlWSk7XG4gICAgICB2YXIgcHRzID0gW10uY29uY2F0LmFwcGx5KFtdLCBbY1B0cy50b3BMZWZ0LnNwbGljZSgwLCA0KSwgY1B0cy50b3BSaWdodC5zcGxpY2UoMCwgNCksIGNQdHMuYm90dG9tUmlnaHQuc3BsaWNlKDAsIDQpLCBjUHRzLmJvdHRvbUxlZnQuc3BsaWNlKDAsIDQpXSk7XG4gICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgcHRzLCBub2RlWCwgbm9kZVkpO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICAvLyBDaGVjayBoQm94XG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIHRoaXMuY29ybmVyTGVuZ3RoLCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgIGlmIChwb2ludEluc2lkZVBvbHlnb24oeCwgeSwgdGhpcy5wb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoIC0gMiAqIHRoaXMuY29ybmVyTGVuZ3RoLCBoZWlnaHQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgY3V0VHJpYW5nbGVQdHMgPSB0aGlzLmdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLnRvcExlZnQpIHx8IHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBjdXRUcmlhbmdsZVB0cy50b3BSaWdodCkgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLmJvdHRvbVJpZ2h0KSB8fCBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgY3V0VHJpYW5nbGVQdHMuYm90dG9tTGVmdCk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVCYXJyZWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbJ2JhcnJlbCddID0ge1xuICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgIG5hbWU6ICdiYXJyZWwnLFxuICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgLy8gdXNlIHR3byBmaXhlZCB0IHZhbHVlcyBmb3IgdGhlIGJlemllciBjdXJ2ZSBhcHByb3hpbWF0aW9uXG4gICAgICB2YXIgdDAgPSAwLjE1O1xuICAgICAgdmFyIHQxID0gMC41O1xuICAgICAgdmFyIHQyID0gMC44NTtcbiAgICAgIHZhciBiUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZywgbm9kZVgsIG5vZGVZKTtcblxuICAgICAgdmFyIGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMgPSBmdW5jdGlvbiBhcHByb3hpbWF0ZUJhcnJlbEN1cnZlUHRzKHB0cykge1xuICAgICAgICAvLyBhcHByb3hpbWF0ZSBjdXJ2ZSBwdHMgYmFzZWQgb24gdGhlIHR3byB0IHZhbHVlc1xuICAgICAgICB2YXIgbTAgPSBxYmV6aWVyUHRBdCh7XG4gICAgICAgICAgeDogcHRzWzBdLFxuICAgICAgICAgIHk6IHB0c1sxXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogcHRzWzJdLFxuICAgICAgICAgIHk6IHB0c1szXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogcHRzWzRdLFxuICAgICAgICAgIHk6IHB0c1s1XVxuICAgICAgICB9LCB0MCk7XG4gICAgICAgIHZhciBtMSA9IHFiZXppZXJQdEF0KHtcbiAgICAgICAgICB4OiBwdHNbMF0sXG4gICAgICAgICAgeTogcHRzWzFdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB4OiBwdHNbMl0sXG4gICAgICAgICAgeTogcHRzWzNdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB4OiBwdHNbNF0sXG4gICAgICAgICAgeTogcHRzWzVdXG4gICAgICAgIH0sIHQxKTtcbiAgICAgICAgdmFyIG0yID0gcWJlemllclB0QXQoe1xuICAgICAgICAgIHg6IHB0c1swXSxcbiAgICAgICAgICB5OiBwdHNbMV1cbiAgICAgICAgfSwge1xuICAgICAgICAgIHg6IHB0c1syXSxcbiAgICAgICAgICB5OiBwdHNbM11cbiAgICAgICAgfSwge1xuICAgICAgICAgIHg6IHB0c1s0XSxcbiAgICAgICAgICB5OiBwdHNbNV1cbiAgICAgICAgfSwgdDIpO1xuICAgICAgICByZXR1cm4gW3B0c1swXSwgcHRzWzFdLCBtMC54LCBtMC55LCBtMS54LCBtMS55LCBtMi54LCBtMi55LCBwdHNbNF0sIHB0c1s1XV07XG4gICAgICB9O1xuXG4gICAgICB2YXIgcHRzID0gW10uY29uY2F0KGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMoYlB0cy50b3BMZWZ0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLnRvcFJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbVJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbUxlZnQpKTtcbiAgICAgIHJldHVybiBwb2x5Z29uSW50ZXJzZWN0TGluZSh4LCB5LCBwdHMsIG5vZGVYLCBub2RlWSk7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJhcnJlbEJlemllclB0czogZnVuY3Rpb24gZ2VuZXJhdGVCYXJyZWxCZXppZXJQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgdmFyIGhoID0gaGVpZ2h0IC8gMjtcbiAgICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICAgIHZhciB4QmVnaW4gPSBjZW50ZXJYIC0gaHc7XG4gICAgICB2YXIgeEVuZCA9IGNlbnRlclggKyBodztcbiAgICAgIHZhciB5QmVnaW4gPSBjZW50ZXJZIC0gaGg7XG4gICAgICB2YXIgeUVuZCA9IGNlbnRlclkgKyBoaDtcbiAgICAgIHZhciBjdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgdmFyIGhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5oZWlnaHRPZmZzZXQ7XG4gICAgICB2YXIgd09mZnNldCA9IGN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICAgICAgdmFyIGN0cmxQdFhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3aWR0aDsgLy8gcG9pbnRzIGFyZSBpbiBjbG9ja3dpc2Ugb3JkZXIsIGlubmVyIChpbWFnaW5hcnkpIGNvbnRyb2wgcHQgb24gWzQsIDVdXG5cbiAgICAgIHZhciBwdHMgPSB7XG4gICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlCZWdpbiwgeEJlZ2luICsgd09mZnNldCwgeUJlZ2luXSxcbiAgICAgICAgdG9wUmlnaHQ6IFt4RW5kIC0gd09mZnNldCwgeUJlZ2luLCB4RW5kIC0gY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0XSxcbiAgICAgICAgYm90dG9tUmlnaHQ6IFt4RW5kLCB5RW5kIC0gaE9mZnNldCwgeEVuZCAtIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhFbmQgLSB3T2Zmc2V0LCB5RW5kXSxcbiAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIHdPZmZzZXQsIHlFbmQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiwgeUVuZCAtIGhPZmZzZXRdXG4gICAgICB9O1xuICAgICAgcHRzLnRvcExlZnQuaXNUb3AgPSB0cnVlO1xuICAgICAgcHRzLnRvcFJpZ2h0LmlzVG9wID0gdHJ1ZTtcbiAgICAgIHB0cy5ib3R0b21MZWZ0LmlzQm90dG9tID0gdHJ1ZTtcbiAgICAgIHB0cy5ib3R0b21SaWdodC5pc0JvdHRvbSA9IHRydWU7XG4gICAgICByZXR1cm4gcHRzO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICB2YXIgY3VydmVDb25zdGFudHMgPSBnZXRCYXJyZWxDdXJ2ZUNvbnN0YW50cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBoT2Zmc2V0ID0gY3VydmVDb25zdGFudHMuaGVpZ2h0T2Zmc2V0O1xuICAgICAgdmFyIHdPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy53aWR0aE9mZnNldDsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIGhPZmZzZXQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayB2Qm94XG5cblxuICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSAyICogd09mZnNldCwgaGVpZ2h0LCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGJhcnJlbEN1cnZlUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKTtcblxuICAgICAgdmFyIGdldEN1cnZlVCA9IGZ1bmN0aW9uIGdldEN1cnZlVCh4LCB5LCBjdXJ2ZVB0cykge1xuICAgICAgICB2YXIgeDAgPSBjdXJ2ZVB0c1s0XTtcbiAgICAgICAgdmFyIHgxID0gY3VydmVQdHNbMl07XG4gICAgICAgIHZhciB4MiA9IGN1cnZlUHRzWzBdO1xuICAgICAgICB2YXIgeTAgPSBjdXJ2ZVB0c1s1XTsgLy8gdmFyIHkxID0gY3VydmVQdHNbIDMgXTtcblxuICAgICAgICB2YXIgeTIgPSBjdXJ2ZVB0c1sxXTtcbiAgICAgICAgdmFyIHhNaW4gPSBNYXRoLm1pbih4MCwgeDIpO1xuICAgICAgICB2YXIgeE1heCA9IE1hdGgubWF4KHgwLCB4Mik7XG4gICAgICAgIHZhciB5TWluID0gTWF0aC5taW4oeTAsIHkyKTtcbiAgICAgICAgdmFyIHlNYXggPSBNYXRoLm1heCh5MCwgeTIpO1xuXG4gICAgICAgIGlmICh4TWluIDw9IHggJiYgeCA8PSB4TWF4ICYmIHlNaW4gPD0geSAmJiB5IDw9IHlNYXgpIHtcbiAgICAgICAgICB2YXIgY29lZmYgPSBiZXppZXJQdHNUb1F1YWRDb2VmZih4MCwgeDEsIHgyKTtcbiAgICAgICAgICB2YXIgcm9vdHMgPSBzb2x2ZVF1YWRyYXRpYyhjb2VmZlswXSwgY29lZmZbMV0sIGNvZWZmWzJdLCB4KTtcbiAgICAgICAgICB2YXIgdmFsaWRSb290cyA9IHJvb3RzLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgcmV0dXJuIDAgPD0gciAmJiByIDw9IDE7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAodmFsaWRSb290cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRSb290c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIHZhciBjdXJ2ZVJlZ2lvbnMgPSBPYmplY3Qua2V5cyhiYXJyZWxDdXJ2ZVB0cyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VydmVSZWdpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb3JuZXIgPSBjdXJ2ZVJlZ2lvbnNbaV07XG4gICAgICAgIHZhciBjb3JuZXJQdHMgPSBiYXJyZWxDdXJ2ZVB0c1tjb3JuZXJdO1xuICAgICAgICB2YXIgdCA9IGdldEN1cnZlVCh4LCB5LCBjb3JuZXJQdHMpO1xuXG4gICAgICAgIGlmICh0ID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5MCA9IGNvcm5lclB0c1s1XTtcbiAgICAgICAgdmFyIHkxID0gY29ybmVyUHRzWzNdO1xuICAgICAgICB2YXIgeTIgPSBjb3JuZXJQdHNbMV07XG4gICAgICAgIHZhciBiZXpZID0gcWJlemllckF0KHkwLCB5MSwgeTIsIHQpO1xuXG4gICAgICAgIGlmIChjb3JuZXJQdHMuaXNUb3AgJiYgYmV6WSA8PSB5KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29ybmVyUHRzLmlzQm90dG9tICYmIHkgPD0gYmV6WSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59O1xuXG5CUnAkZC5nZW5lcmF0ZUJvdHRvbVJvdW5kcmVjdGFuZ2xlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydib3R0b20tcm91bmQtcmVjdGFuZ2xlJ10gPSB0aGlzLm5vZGVTaGFwZXNbJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2JvdHRvbS1yb3VuZC1yZWN0YW5nbGUnLFxuICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgdmFyIHRvcFN0YXJ0WCA9IG5vZGVYIC0gKHdpZHRoIC8gMiArIHBhZGRpbmcpO1xuICAgICAgdmFyIHRvcFN0YXJ0WSA9IG5vZGVZIC0gKGhlaWdodCAvIDIgKyBwYWRkaW5nKTtcbiAgICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgICAgdmFyIHRvcEVuZFggPSBub2RlWCArICh3aWR0aCAvIDIgKyBwYWRkaW5nKTtcbiAgICAgIHZhciB0b3BJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCB0b3BTdGFydFgsIHRvcFN0YXJ0WSwgdG9wRW5kWCwgdG9wRW5kWSwgZmFsc2UpO1xuXG4gICAgICBpZiAodG9wSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0b3BJbnRlcnNlY3Rpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBkaWFtID0gMiAqIGNvcm5lclJhZGl1czsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gZGlhbSwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHZCb3hcblxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAtIGRpYW0sIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIGNoZWNrIG5vbi1yb3VuZGVkIHRvcCBzaWRlXG5cblxuICAgICAgdmFyIG91dGVyV2lkdGggPSB3aWR0aCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgIHZhciBvdXRlckhlaWdodCA9IGhlaWdodCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgIHZhciBwb2ludHMgPSBbY2VudGVyWCAtIG91dGVyV2lkdGgsIGNlbnRlclkgLSBvdXRlckhlaWdodCwgY2VudGVyWCAtIG91dGVyV2lkdGgsIGNlbnRlclksIGNlbnRlclggKyBvdXRlcldpZHRoLCBjZW50ZXJZLCBjZW50ZXJYICsgb3V0ZXJXaWR0aCwgY2VudGVyWSAtIG91dGVySGVpZ2h0XTtcblxuICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBwb2ludHMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBib3R0b20gcmlnaHQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCArIHdpZHRoIC8gMiAtIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBib3R0b20gbGVmdCBxdWFydGVyIGNpcmNsZVxuXG5cbiAgICAgIGlmIChjaGVja0luRWxsaXBzZSh4LCB5LCBkaWFtLCBkaWFtLCBjZW50ZXJYIC0gd2lkdGggLyAyICsgY29ybmVyUmFkaXVzLCBjZW50ZXJZICsgaGVpZ2h0IC8gMiAtIGNvcm5lclJhZGl1cywgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59O1xuXG5CUnAkZC5yZWdpc3Rlck5vZGVTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlU2hhcGVzID0gdGhpcy5ub2RlU2hhcGVzID0ge307XG4gIHZhciByZW5kZXJlciA9IHRoaXM7XG4gIHRoaXMuZ2VuZXJhdGVFbGxpcHNlKCk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCd0cmlhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSgzLCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXRyaWFuZ2xlJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDMsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3JlY3RhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg0LCAwKSk7XG4gIG5vZGVTaGFwZXNbJ3NxdWFyZSddID0gbm9kZVNoYXBlc1sncmVjdGFuZ2xlJ107XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSgpO1xuICB0aGlzLmdlbmVyYXRlQ3V0UmVjdGFuZ2xlKCk7XG4gIHRoaXMuZ2VuZXJhdGVCYXJyZWwoKTtcbiAgdGhpcy5nZW5lcmF0ZUJvdHRvbVJvdW5kcmVjdGFuZ2xlKCk7XG4gIHtcbiAgICB2YXIgZGlhbW9uZFBvaW50cyA9IFswLCAxLCAxLCAwLCAwLCAtMSwgLTEsIDBdO1xuICAgIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdkaWFtb25kJywgZGlhbW9uZFBvaW50cyk7XG4gICAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtZGlhbW9uZCcsIGRpYW1vbmRQb2ludHMpO1xuICB9XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdwZW50YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg1LCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXBlbnRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDUsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hleGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNiwgMCkpO1xuICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC1oZXhhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDYsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hlcHRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDcsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtaGVwdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNywgMCkpO1xuICB0aGlzLmdlbmVyYXRlUG9seWdvbignb2N0YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg4LCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLW9jdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoOCwgMCkpO1xuICB2YXIgc3RhcjVQb2ludHMgPSBuZXcgQXJyYXkoMjApO1xuICB7XG4gICAgdmFyIG91dGVyUG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyg1LCAwKTtcbiAgICB2YXIgaW5uZXJQb2ludHMgPSBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzKDUsIE1hdGguUEkgLyA1KTsgLy8gT3V0ZXIgcmFkaXVzIGlzIDE7IGlubmVyIHJhZGl1cyBvZiBzdGFyIGlzIHNtYWxsZXJcblxuICAgIHZhciBpbm5lclJhZGl1cyA9IDAuNSAqICgzIC0gTWF0aC5zcXJ0KDUpKTtcbiAgICBpbm5lclJhZGl1cyAqPSAxLjU3O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbm5lclBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIGlubmVyUG9pbnRzW2kgKiAyXSAqPSBpbm5lclJhZGl1cztcbiAgICAgIGlubmVyUG9pbnRzW2kgKiAyICsgMV0gKj0gaW5uZXJSYWRpdXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMCAvIDQ7IGkrKykge1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDRdID0gb3V0ZXJQb2ludHNbaSAqIDJdO1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAxXSA9IG91dGVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgICBzdGFyNVBvaW50c1tpICogNCArIDJdID0gaW5uZXJQb2ludHNbaSAqIDJdO1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAzXSA9IGlubmVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgfVxuICB9XG4gIHN0YXI1UG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHN0YXI1UG9pbnRzKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3N0YXInLCBzdGFyNVBvaW50cyk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCd2ZWUnLCBbLTEsIC0xLCAwLCAtMC4zMzMsIDEsIC0xLCAwLCAxXSk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdyaG9tYm9pZCcsIFstMSwgLTEsIDAuMzMzLCAtMSwgMSwgMSwgLTAuMzMzLCAxXSk7XG4gIHRoaXMubm9kZVNoYXBlc1snY29uY2F2ZWhleGFnb24nXSA9IHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdjb25jYXZlLWhleGFnb24nLCBbLTEsIC0wLjk1LCAtMC43NSwgMCwgLTEsIDAuOTUsIDEsIDAuOTUsIDAuNzUsIDAsIDEsIC0wLjk1XSk7XG4gIHtcbiAgICB2YXIgdGFnUG9pbnRzID0gWy0xLCAtMSwgMC4yNSwgLTEsIDEsIDAsIDAuMjUsIDEsIC0xLCAxXTtcbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbigndGFnJywgdGFnUG9pbnRzKTtcbiAgICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC10YWcnLCB0YWdQb2ludHMpO1xuICB9XG5cbiAgbm9kZVNoYXBlcy5tYWtlUG9seWdvbiA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAvLyB1c2UgY2FjaGluZyBvbiB1c2VyLXNwZWNpZmllZCBwb2x5Z29ucyBzbyB0aGV5IGFyZSBhcyBmYXN0IGFzIG5hdGl2ZSBzaGFwZXNcbiAgICB2YXIga2V5ID0gcG9pbnRzLmpvaW4oJyQnKTtcbiAgICB2YXIgbmFtZSA9ICdwb2x5Z29uLScgKyBrZXk7XG4gICAgdmFyIHNoYXBlO1xuXG4gICAgaWYgKHNoYXBlID0gdGhpc1tuYW1lXSkge1xuICAgICAgLy8gZ290IGNhY2hlZCBzaGFwZVxuICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0gLy8gY3JlYXRlIGFuZCBjYWNoZSBuZXcgc2hhcGVcblxuXG4gICAgcmV0dXJuIHJlbmRlcmVyLmdlbmVyYXRlUG9seWdvbihuYW1lLCBwb2ludHMpO1xuICB9O1xufTtcblxudmFyIEJScCRlID0ge307XG5cbkJScCRlLnRpbWVUb1JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVkcmF3VG90YWxUaW1lIC8gdGhpcy5yZWRyYXdDb3VudDtcbn07XG5cbkJScCRlLnJlZHJhdyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoci5hdmVyYWdlUmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IDA7XG4gIH1cblxuICBpZiAoci5sYXN0UmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgci5sYXN0UmVkcmF3VGltZSA9IDA7XG4gIH1cblxuICBpZiAoci5sYXN0RHJhd1RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHIubGFzdERyYXdUaW1lID0gMDtcbiAgfVxuXG4gIHIucmVxdWVzdGVkRnJhbWUgPSB0cnVlO1xuICByLnJlbmRlck9wdGlvbnMgPSBvcHRpb25zO1xufTtcblxuQlJwJGUuYmVmb3JlUmVuZGVyID0gZnVuY3Rpb24gKGZuLCBwcmlvcml0eSkge1xuICAvLyB0aGUgcmVuZGVyZXIgY2FuJ3QgYWRkIHRpY2sgY2FsbGJhY2tzIHdoZW4gZGVzdHJveWVkXG4gIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwcmlvcml0eSA9PSBudWxsKSB7XG4gICAgZXJyb3IoJ1ByaW9yaXR5IGlzIG5vdCBvcHRpb25hbCBmb3IgYmVmb3JlUmVuZGVyJyk7XG4gIH1cblxuICB2YXIgY2JzID0gdGhpcy5iZWZvcmVSZW5kZXJDYWxsYmFja3M7XG4gIGNicy5wdXNoKHtcbiAgICBmbjogZm4sXG4gICAgcHJpb3JpdHk6IHByaW9yaXR5XG4gIH0pOyAvLyBoaWdoZXIgcHJpb3JpdHkgY2FsbGJhY2tzIGV4ZWN1dGVkIGZpcnN0XG5cbiAgY2JzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5wcmlvcml0eSAtIGEucHJpb3JpdHk7XG4gIH0pO1xufTtcblxudmFyIGJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IGZ1bmN0aW9uIGJlZm9yZVJlbmRlckNhbGxiYWNrcyhyLCB3aWxsRHJhdywgc3RhcnRUaW1lKSB7XG4gIHZhciBjYnMgPSByLmJlZm9yZVJlbmRlckNhbGxiYWNrcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5sZW5ndGg7IGkrKykge1xuICAgIGNic1tpXS5mbih3aWxsRHJhdywgc3RhcnRUaW1lKTtcbiAgfVxufTtcblxuQlJwJGUuc3RhcnRSZW5kZXJMb29wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7XG5cbiAgaWYgKHIucmVuZGVyTG9vcFN0YXJ0ZWQpIHtcbiAgICByZXR1cm47XG4gIH0gZWxzZSB7XG4gICAgci5yZW5kZXJMb29wU3RhcnRlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgcmVuZGVyRm4gPSBmdW5jdGlvbiByZW5kZXJGbihyZXF1ZXN0VGltZSkge1xuICAgIGlmIChyLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjeS5iYXRjaGluZygpKSA7IGVsc2UgaWYgKHIucmVxdWVzdGVkRnJhbWUgJiYgIXIuc2tpcEZyYW1lKSB7XG4gICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgdHJ1ZSwgcmVxdWVzdFRpbWUpO1xuICAgICAgdmFyIHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG4gICAgICByLnJlbmRlcihyLnJlbmRlck9wdGlvbnMpO1xuICAgICAgdmFyIGVuZFRpbWUgPSByLmxhc3REcmF3VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgIGlmIChyLmF2ZXJhZ2VSZWRyYXdUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyLnJlZHJhd0NvdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5yZWRyYXdDb3VudCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHIucmVkcmF3Q291bnQrKztcblxuICAgICAgaWYgKHIucmVkcmF3VG90YWxUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5yZWRyYXdUb3RhbFRpbWUgPSAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgZHVyYXRpb24gPSBlbmRUaW1lIC0gc3RhcnRUaW1lO1xuICAgICAgci5yZWRyYXdUb3RhbFRpbWUgKz0gZHVyYXRpb247XG4gICAgICByLmxhc3RSZWRyYXdUaW1lID0gZHVyYXRpb247IC8vIHVzZSBhIHdlaWdodGVkIGF2ZXJhZ2Ugd2l0aCBhIGJpYXMgZnJvbSB0aGUgcHJldmlvdXMgYXZlcmFnZSBzbyB3ZSBkb24ndCBzcGlrZSBzbyBlYXNpbHlcblxuICAgICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IHIuYXZlcmFnZVJlZHJhd1RpbWUgLyAyICsgZHVyYXRpb24gLyAyO1xuICAgICAgci5yZXF1ZXN0ZWRGcmFtZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgZmFsc2UsIHJlcXVlc3RUaW1lKTtcbiAgICB9XG5cbiAgICByLnNraXBGcmFtZSA9IGZhbHNlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXJGbik7XG4gIH07XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlckZuKTtcbn07XG5cbnZhciBCYXNlUmVuZGVyZXIgPSBmdW5jdGlvbiBCYXNlUmVuZGVyZXIob3B0aW9ucykge1xuICB0aGlzLmluaXQob3B0aW9ucyk7XG59O1xuXG52YXIgQlIgPSBCYXNlUmVuZGVyZXI7XG52YXIgQlJwJGYgPSBCUi5wcm90b3R5cGU7XG5CUnAkZi5jbGllbnRGdW5jdGlvbnMgPSBbJ3JlZHJhd0hpbnQnLCAncmVuZGVyJywgJ3JlbmRlclRvJywgJ21hdGNoQ2FudmFzU2l6ZScsICdub2RlU2hhcGVJbXBsJywgJ2Fycm93U2hhcGVJbXBsJ107XG5cbkJScCRmLmluaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgciA9IHRoaXM7XG4gIHIub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHIuY3kgPSBvcHRpb25zLmN5O1xuICB2YXIgY3RyID0gci5jb250YWluZXIgPSBvcHRpb25zLmN5LmNvbnRhaW5lcigpOyAvLyBwcmVwZW5kIGEgc3R5bGVzaGVldCBpbiB0aGUgaGVhZCBzdWNoIHRoYXRcblxuICBpZiAod2luZG93JDEpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3ckMS5kb2N1bWVudDtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQ7XG4gICAgdmFyIHN0eWxlc2hlZXRJZCA9ICdfX19fX19fX19fY3l0b3NjYXBlX3N0eWxlc2hlZXQnO1xuICAgIHZhciBjbGFzc05hbWUgPSAnX19fX19fX19fX2N5dG9zY2FwZV9jb250YWluZXInO1xuICAgIHZhciBzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0eWxlc2hlZXRJZCkgIT0gbnVsbDtcblxuICAgIGlmIChjdHIuY2xhc3NOYW1lLmluZGV4T2YoY2xhc3NOYW1lKSA8IDApIHtcbiAgICAgIGN0ci5jbGFzc05hbWUgPSAoY3RyLmNsYXNzTmFtZSB8fCAnJykgKyAnICcgKyBjbGFzc05hbWU7XG4gICAgfVxuXG4gICAgaWYgKCFzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cykge1xuICAgICAgdmFyIHN0eWxlc2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgc3R5bGVzaGVldC5pZCA9IHN0eWxlc2hlZXRJZDtcbiAgICAgIHN0eWxlc2hlZXQuaW5uZXJIVE1MID0gJy4nICsgY2xhc3NOYW1lICsgJyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSc7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZXNoZWV0LCBoZWFkLmNoaWxkcmVuWzBdKTsgLy8gZmlyc3Qgc28gbG93ZXN0IHByaW9yaXR5XG4gICAgfVxuXG4gICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3ckMS5nZXRDb21wdXRlZFN0eWxlKGN0cik7XG4gICAgdmFyIHBvc2l0aW9uID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpO1xuXG4gICAgaWYgKHBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgd2FybignQSBDeXRvc2NhcGUgY29udGFpbmVyIGhhcyBzdHlsZSBwb3NpdGlvbjpzdGF0aWMgYW5kIHNvIGNhbiBub3QgdXNlIFVJIGV4dGVuc2lvbnMgcHJvcGVybHknKTtcbiAgICB9XG4gIH1cblxuICByLnNlbGVjdGlvbiA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdOyAvLyBDb29yZGluYXRlcyBmb3Igc2VsZWN0aW9uIGJveCwgcGx1cyBlbmFibGVkIGZsYWdcblxuICByLmJlemllclByb2pQY3RzID0gWzAuMDUsIDAuMjI1LCAwLjQsIDAuNSwgMC42LCAwLjc3NSwgMC45NV07IC8vLS1Qb2ludGVyLXJlbGF0ZWQgZGF0YVxuXG4gIHIuaG92ZXJEYXRhID0ge1xuICAgIGRvd246IG51bGwsXG4gICAgbGFzdDogbnVsbCxcbiAgICBkb3duVGltZTogbnVsbCxcbiAgICB0cmlnZ2VyTW9kZTogbnVsbCxcbiAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgaW5pdGlhbFBhbjogW251bGwsIG51bGxdLFxuICAgIGNhcHR1cmU6IGZhbHNlXG4gIH07XG4gIHIuZHJhZ0RhdGEgPSB7XG4gICAgcG9zc2libGVEcmFnRWxlbWVudHM6IFtdXG4gIH07XG4gIHIudG91Y2hEYXRhID0ge1xuICAgIHN0YXJ0OiBudWxsLFxuICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgIC8vIFRoZXNlIDMgZmllbGRzIHJlbGF0ZWQgdG8gdGFwLCB0YXBob2xkIGV2ZW50c1xuICAgIHN0YXJ0UG9zaXRpb246IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXSxcbiAgICBzaW5nbGVUb3VjaFN0YXJ0VGltZTogbnVsbCxcbiAgICBzaW5nbGVUb3VjaE1vdmVkOiB0cnVlLFxuICAgIG5vdzogW251bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGxdLFxuICAgIGVhcmxpZXI6IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXVxuICB9O1xuICByLnJlZHJhd3MgPSAwO1xuICByLnNob3dGcHMgPSBvcHRpb25zLnNob3dGcHM7XG4gIHIuZGVidWcgPSBvcHRpb25zLmRlYnVnO1xuICByLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gIHIudGV4dHVyZU9uVmlld3BvcnQgPSBvcHRpb25zLnRleHR1cmVPblZpZXdwb3J0O1xuICByLndoZWVsU2Vuc2l0aXZpdHkgPSBvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHk7XG4gIHIubW90aW9uQmx1ckVuYWJsZWQgPSBvcHRpb25zLm1vdGlvbkJsdXI7IC8vIG9uIGJ5IGRlZmF1bHRcblxuICByLmZvcmNlZFBpeGVsUmF0aW8gPSBudW1iZXIob3B0aW9ucy5waXhlbFJhdGlvKSA/IG9wdGlvbnMucGl4ZWxSYXRpbyA6IG51bGw7XG4gIHIubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjsgLy8gZm9yIGluaXRpYWwga2ljayBvZmZcblxuICByLm1vdGlvbkJsdXJPcGFjaXR5ID0gb3B0aW9ucy5tb3Rpb25CbHVyT3BhY2l0eTtcbiAgci5tb3Rpb25CbHVyVHJhbnNwYXJlbmN5ID0gMSAtIHIubW90aW9uQmx1ck9wYWNpdHk7XG4gIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICByLm1iUHhSQmx1cnJ5ID0gMTsgLy8wLjg7XG5cbiAgci5taW5NYkxvd1F1YWxGcmFtZXMgPSA0O1xuICByLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgci5jbGVhcmVkRm9yTW90aW9uQmx1ciA9IFtdO1xuICByLmRlc2t0b3BUYXBUaHJlc2hvbGQgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gIHIuZGVza3RvcFRhcFRocmVzaG9sZDIgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQgKiBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gIHIudG91Y2hUYXBUaHJlc2hvbGQgPSBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkO1xuICByLnRvdWNoVGFwVGhyZXNob2xkMiA9IG9wdGlvbnMudG91Y2hUYXBUaHJlc2hvbGQgKiBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkO1xuICByLnRhcGhvbGREdXJhdGlvbiA9IDUwMDtcbiAgci5iaW5kaW5ncyA9IFtdO1xuICByLmJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IFtdO1xuICByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMgPSB7XG4gICAgLy8gaGlnaGVyIHByaW9yaXR5IGV4ZWNzIGJlZm9yZSBsb3dlciBvbmVcbiAgICBhbmltYXRpb25zOiA0MDAsXG4gICAgZWxlQ2FsY3M6IDMwMCxcbiAgICBlbGVUeHJEZXE6IDIwMCxcbiAgICBseXJUeHJEZXE6IDE1MCxcbiAgICBseXJUeHJTa2lwOiAxMDBcbiAgfTtcbiAgci5yZWdpc3Rlck5vZGVTaGFwZXMoKTtcbiAgci5yZWdpc3RlckFycm93U2hhcGVzKCk7XG4gIHIucmVnaXN0ZXJDYWxjdWxhdGlvbkxpc3RlbmVycygpO1xufTtcblxuQlJwJGYubm90aWZ5ID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgZWxlcykge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7IC8vIHRoZSByZW5kZXJlciBjYW4ndCBiZSBub3RpZmllZCBhZnRlciBpdCdzIGRlc3Ryb3llZFxuXG4gIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdpbml0Jykge1xuICAgIHIubG9hZCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdkZXN0cm95Jykge1xuICAgIHIuZGVzdHJveSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdhZGQnIHx8IGV2ZW50TmFtZSA9PT0gJ3JlbW92ZScgfHwgZXZlbnROYW1lID09PSAnbW92ZScgJiYgY3kuaGFzQ29tcG91bmROb2RlcygpIHx8IGV2ZW50TmFtZSA9PT0gJ2xvYWQnIHx8IGV2ZW50TmFtZSA9PT0gJ3pvcmRlcicgfHwgZXZlbnROYW1lID09PSAnbW91bnQnKSB7XG4gICAgci5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMoKTtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICB9XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQnIHx8IGV2ZW50TmFtZSA9PT0gJ3Jlc2l6ZScgfHwgZXZlbnROYW1lID09PSAnbW91bnQnKSB7XG4gICAgci5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUoKTtcbiAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gIH1cblxuICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gIHRoaXMuc3RhcnRSZW5kZXJMb29wKCk7XG4gIHRoaXMucmVkcmF3KCk7XG59O1xuXG5CUnAkZi5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHIuZGVzdHJveWVkID0gdHJ1ZTtcbiAgci5jeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgci5iaW5kaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBiaW5kaW5nID0gci5iaW5kaW5nc1tpXTtcbiAgICB2YXIgYiA9IGJpbmRpbmc7XG4gICAgdmFyIHRndCA9IGIudGFyZ2V0O1xuICAgICh0Z3Qub2ZmIHx8IHRndC5yZW1vdmVFdmVudExpc3RlbmVyKS5hcHBseSh0Z3QsIGIuYXJncyk7XG4gIH1cblxuICByLmJpbmRpbmdzID0gW107XG4gIHIuYmVmb3JlUmVuZGVyQ2FsbGJhY2tzID0gW107XG4gIHIub25VcGRhdGVFbGVDYWxjc0ZucyA9IFtdO1xuXG4gIGlmIChyLnJlbW92ZU9ic2VydmVyKSB7XG4gICAgci5yZW1vdmVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBpZiAoci5zdHlsZU9ic2VydmVyKSB7XG4gICAgci5zdHlsZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlmIChyLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgci5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBpZiAoci5sYWJlbENhbGNEaXYpIHtcbiAgICB0cnkge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyLmxhYmVsQ2FsY0Rpdik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICB9IGNhdGNoIChlKSB7Ly8gaWUxMCBpc3N1ZSAjMTAxNFxuICAgIH1cbiAgfVxufTtcblxuQlJwJGYuaXNIZWFkbGVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuW0JScCwgQlJwJGEsIEJScCRiLCBCUnAkYywgQlJwJGQsIEJScCRlXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoQlJwJGYsIHByb3BzKTtcbn0pO1xuXG52YXIgZnVsbEZwc1RpbWUgPSAxMDAwIC8gNjA7IC8vIGFzc3VtZSA2MCBmcmFtZXMgcGVyIHNlY29uZFxuXG52YXIgZGVmcyA9IHtcbiAgc2V0dXBEZXF1ZXVlaW5nOiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmcob3B0cykge1xuICAgIHJldHVybiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmdJbXBsKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyO1xuXG4gICAgICBpZiAoc2VsZi5kZXF1ZXVlaW5nU2V0dXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5kZXF1ZXVlaW5nU2V0dXAgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcXVldWVSZWRyYXcgPSB1dGlsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfSwgb3B0cy5kZXFSZWRyYXdUaHJlc2hvbGQpO1xuXG4gICAgICB2YXIgZGVxdWV1ZSA9IGZ1bmN0aW9uIGRlcXVldWUod2lsbERyYXcsIGZyYW1lU3RhcnRUaW1lKSB7XG4gICAgICAgIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICB2YXIgYXZnUmVuZGVyVGltZSA9IHIuYXZlcmFnZVJlZHJhd1RpbWU7XG4gICAgICAgIHZhciByZW5kZXJUaW1lID0gci5sYXN0UmVkcmF3VGltZTtcbiAgICAgICAgdmFyIGRlcWQgPSBbXTtcbiAgICAgICAgdmFyIGV4dGVudCA9IHIuY3kuZXh0ZW50KCk7XG4gICAgICAgIHZhciBwaXhlbFJhdGlvID0gci5nZXRQaXhlbFJhdGlvKCk7IC8vIGlmIHdlIGFyZW4ndCBpbiBhIHRpY2sgdGhhdCBjYXVzZXMgYSBkcmF3LCB0aGVuIHRoZSByZW5kZXJlZCBzdHlsZVxuICAgICAgICAvLyBxdWV1ZSB3b24ndCBhdXRvbWF0aWNhbGx5IGJlIGZsdXNoZWQgYmVmb3JlIGRlcXVldWVpbmcgc3RhcnRzXG5cbiAgICAgICAgaWYgKCF3aWxsRHJhdykge1xuICAgICAgICAgIHIuZmx1c2hSZW5kZXJlZFN0eWxlUXVldWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgICAgICB2YXIgbm93ID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgICB2YXIgZHVyYXRpb24gPSBub3cgLSBzdGFydFRpbWU7XG4gICAgICAgICAgdmFyIGZyYW1lRHVyYXRpb24gPSBub3cgLSBmcmFtZVN0YXJ0VGltZTtcblxuICAgICAgICAgIGlmIChyZW5kZXJUaW1lIDwgZnVsbEZwc1RpbWUpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlJ3JlIHJlbmRlcmluZyBmYXN0ZXIgdGhhbiB0aGUgaWRlYWwgZnBzLCB0aGVuIGRvIGRlcXVldWVpbmdcbiAgICAgICAgICAgIC8vIGR1cmluZyBhbGwgb2YgdGhlIHJlbWFpbmluZyBmcmFtZSB0aW1lXG4gICAgICAgICAgICB2YXIgdGltZUF2YWlsYWJsZSA9IGZ1bGxGcHNUaW1lIC0gKHdpbGxEcmF3ID8gYXZnUmVuZGVyVGltZSA6IDApO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVEdXJhdGlvbiA+PSBvcHRzLmRlcUZhc3RDb3N0ICogdGltZUF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbGxEcmF3KSB7XG4gICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+PSBvcHRzLmRlcUNvc3QgKiByZW5kZXJUaW1lIHx8IGR1cmF0aW9uID49IG9wdHMuZGVxQXZnQ29zdCAqIGF2Z1JlbmRlclRpbWUpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcmFtZUR1cmF0aW9uID49IG9wdHMuZGVxTm9EcmF3Q29zdCAqIGZ1bGxGcHNUaW1lKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB0aGlzRGVxZCA9IG9wdHMuZGVxKHNlbGYsIHBpeGVsUmF0aW8sIGV4dGVudCk7XG5cbiAgICAgICAgICBpZiAodGhpc0RlcWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzRGVxZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBkZXFkLnB1c2godGhpc0RlcWRbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2FsbGJhY2tzIG9uIGRlcXVldWVcblxuXG4gICAgICAgIGlmIChkZXFkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvcHRzLm9uRGVxZChzZWxmLCBkZXFkKTtcblxuICAgICAgICAgIGlmICghd2lsbERyYXcgJiYgb3B0cy5zaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcGl4ZWxSYXRpbywgZXh0ZW50KSkge1xuICAgICAgICAgICAgcXVldWVSZWRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBwcmlvcml0eSA9IG9wdHMucHJpb3JpdHkgfHwgbm9vcDtcbiAgICAgIHIuYmVmb3JlUmVuZGVyKGRlcXVldWUsIHByaW9yaXR5KHNlbGYpKTtcbiAgICB9O1xuICB9XG59O1xuXG4vLyBVc2VzIGtleXMgc28gZWxlbWVudHMgbWF5IHNoYXJlIHRoZSBzYW1lIGNhY2hlLlxuXG52YXIgRWxlbWVudFRleHR1cmVDYWNoZUxvb2t1cCA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAoZ2V0S2V5KSB7XG4gICAgdmFyIGRvZXNFbGVJbnZhbGlkYXRlS2V5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzaWZ5O1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXApO1xuXG4gICAgdGhpcy5pZHNCeUtleSA9IG5ldyBNYXAkMSgpO1xuICAgIHRoaXMua2V5Rm9ySWQgPSBuZXcgTWFwJDEoKTtcbiAgICB0aGlzLmNhY2hlc0J5THZsID0gbmV3IE1hcCQxKCk7XG4gICAgdGhpcy5sdmxzID0gW107XG4gICAgdGhpcy5nZXRLZXkgPSBnZXRLZXk7XG4gICAgdGhpcy5kb2VzRWxlSW52YWxpZGF0ZUtleSA9IGRvZXNFbGVJbnZhbGlkYXRlS2V5O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAsIFt7XG4gICAga2V5OiBcImdldElkc0ZvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJZHNGb3Ioa2V5KSB7XG4gICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgZXJyb3IoXCJDYW4gbm90IGdldCBpZCBsaXN0IGZvciBudWxsIGtleVwiKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlkc0J5S2V5ID0gdGhpcy5pZHNCeUtleTtcbiAgICAgIHZhciBpZHMgPSB0aGlzLmlkc0J5S2V5LmdldChrZXkpO1xuXG4gICAgICBpZiAoIWlkcykge1xuICAgICAgICBpZHMgPSBuZXcgU2V0JDEoKTtcbiAgICAgICAgaWRzQnlLZXkuc2V0KGtleSwgaWRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkSWRGb3JLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSkuYWRkKGlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVsZXRlSWRGb3JLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVsZXRlSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSlbXCJkZWxldGVcIl0oaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXROdW1iZXJPZklkc0ZvcktleVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXROdW1iZXJPZklkc0ZvcktleShrZXkpIHtcbiAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldElkc0ZvcihrZXkpLnNpemU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUtleU1hcHBpbmdGb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlS2V5TWFwcGluZ0ZvcihlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgdmFyIHByZXZLZXkgPSB0aGlzLmtleUZvcklkLmdldChpZCk7XG4gICAgICB2YXIgY3VycktleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gICAgICB0aGlzLmRlbGV0ZUlkRm9yS2V5KHByZXZLZXksIGlkKTtcbiAgICAgIHRoaXMuYWRkSWRGb3JLZXkoY3VycktleSwgaWQpO1xuICAgICAgdGhpcy5rZXlGb3JJZC5zZXQoaWQsIGN1cnJLZXkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVLZXlNYXBwaW5nRm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKSB7XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIHZhciBwcmV2S2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoaWQpO1xuICAgICAgdGhpcy5kZWxldGVJZEZvcktleShwcmV2S2V5LCBpZCk7XG4gICAgICB0aGlzLmtleUZvcklkW1wiZGVsZXRlXCJdKGlkKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwia2V5SGFzQ2hhbmdlZEZvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrZXlIYXNDaGFuZ2VkRm9yKGVsZSkge1xuICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgICB2YXIgcHJldktleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTtcbiAgICAgIHZhciBuZXdLZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgcmV0dXJuIHByZXZLZXkgIT09IG5ld0tleTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNJbnZhbGlkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzSW52YWxpZChlbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmtleUhhc0NoYW5nZWRGb3IoZWxlKSB8fCB0aGlzLmRvZXNFbGVJbnZhbGlkYXRlS2V5KGVsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENhY2hlc0F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlc0F0KGx2bCkge1xuICAgICAgdmFyIGNhY2hlc0J5THZsID0gdGhpcy5jYWNoZXNCeUx2bCxcbiAgICAgICAgICBsdmxzID0gdGhpcy5sdmxzO1xuICAgICAgdmFyIGNhY2hlcyA9IGNhY2hlc0J5THZsLmdldChsdmwpO1xuXG4gICAgICBpZiAoIWNhY2hlcykge1xuICAgICAgICBjYWNoZXMgPSBuZXcgTWFwJDEoKTtcbiAgICAgICAgY2FjaGVzQnlMdmwuc2V0KGx2bCwgY2FjaGVzKTtcbiAgICAgICAgbHZscy5wdXNoKGx2bCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWNoZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlKGtleSwgbHZsKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDYWNoZXNBdChsdmwpLmdldChrZXkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGVsZSwgbHZsKSB7XG4gICAgICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpOyAvLyBnZXR0aW5nIGZvciBhbiBlbGVtZW50IG1heSBuZWVkIHRvIGFkZCB0byB0aGUgaWQgbGlzdCBiL2MgZWxlcyBjYW4gc2hhcmUga2V5c1xuXG4gICAgICBpZiAoY2FjaGUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGb3JDYWNoZWRLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Rm9yQ2FjaGVkS2V5KGVsZSwgbHZsKSB7XG4gICAgICB2YXIga2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoZWxlLmlkKCkpOyAvLyBuLmIuIHVzZSBjYWNoZWQga2V5LCBub3QgbmV3bHkgY29tcHV0ZWQga2V5XG5cbiAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpO1xuICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNDYWNoZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNDYWNoZShrZXksIGx2bCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVzQXQobHZsKS5oYXMoa2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyhlbGUsIGx2bCkge1xuICAgICAgdmFyIGtleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gICAgICByZXR1cm4gdGhpcy5oYXNDYWNoZShrZXksIGx2bCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENhY2hlKGtleSwgbHZsLCBjYWNoZSkge1xuICAgICAgY2FjaGUua2V5ID0ga2V5O1xuICAgICAgdGhpcy5nZXRDYWNoZXNBdChsdmwpLnNldChrZXksIGNhY2hlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChlbGUsIGx2bCwgY2FjaGUpIHtcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgdGhpcy5zZXRDYWNoZShrZXksIGx2bCwgY2FjaGUpO1xuICAgICAgdGhpcy51cGRhdGVLZXlNYXBwaW5nRm9yKGVsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlbGV0ZUNhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUNhY2hlKGtleSwgbHZsKSB7XG4gICAgICB0aGlzLmdldENhY2hlc0F0KGx2bClbXCJkZWxldGVcIl0oa2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVsZXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZWxldGUoZWxlLCBsdmwpIHtcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgdGhpcy5kZWxldGVDYWNoZShrZXksIGx2bCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludmFsaWRhdGVLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZUtleShrZXkpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMubHZscy5mb3JFYWNoKGZ1bmN0aW9uIChsdmwpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmRlbGV0ZUNhY2hlKGtleSwgbHZsKTtcbiAgICAgIH0pO1xuICAgIH0gLy8gcmV0dXJucyB0cnVlIGlmIG5vIG90aGVyIGVsZXMgcmVmZXJlbmNlIHRoZSBpbnZhbGlkYXRlZCBjYWNoZSAobi5iLiBvdGhlciBlbGVzIG1heSBuZWVkIHRoZSBjYWNoZSB3aXRoIHRoZSBzYW1lIGtleSlcblxuICB9LCB7XG4gICAga2V5OiBcImludmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZShlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgdmFyIGtleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTsgLy8gbi5iLiB1c2Ugc3RvcmVkIGtleSByYXRoZXIgdGhhbiBjdXJyZW50IChwb3RlbnRpYWwga2V5KVxuXG4gICAgICB0aGlzLmRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIHZhciBlbnRpcmVLZXlJbnZhbGlkYXRlZCA9IHRoaXMuZG9lc0VsZUludmFsaWRhdGVLZXkoZWxlKTtcblxuICAgICAgaWYgKGVudGlyZUtleUludmFsaWRhdGVkKSB7XG4gICAgICAgIC8vIGNsZWFyIG1hcHBpbmcgZm9yIGN1cnJlbnQga2V5XG4gICAgICAgIHRoaXMuaW52YWxpZGF0ZUtleShrZXkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50aXJlS2V5SW52YWxpZGF0ZWQgfHwgdGhpcy5nZXROdW1iZXJPZklkc0ZvcktleShrZXkpID09PSAwO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFbGVtZW50VGV4dHVyZUNhY2hlTG9va3VwO1xufSgpO1xuXG52YXIgbWluVHhySCA9IDI1OyAvLyB0aGUgc2l6ZSBvZiB0aGUgdGV4dHVyZSBjYWNoZSBmb3Igc21hbGwgaGVpZ2h0IGVsZXMgKHNwZWNpYWwgY2FzZSlcblxudmFyIHR4clN0ZXBIID0gNTA7IC8vIHRoZSBtaW4gc2l6ZSBvZiB0aGUgcmVndWxhciBjYWNoZSwgYW5kIHRoZSBzaXplIGl0IGluY3JlYXNlcyB3aXRoIGVhY2ggc3RlcCB1cFxuXG52YXIgbWluTHZsID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG52YXIgbWF4THZsID0gMzsgLy8gd2hlbiBsYXJnZXIgdGhhbiB0aGlzIHNjYWxlIGp1c3QgcmVuZGVyIGRpcmVjdGx5IChjYWNoaW5nIGlzIG5vdCBoZWxwZnVsKVxuXG52YXIgbWF4Wm9vbSA9IDcuOTk7IC8vIGJleW9uZCB0aGlzIHpvb20gbGV2ZWwsIGxheWVyZWQgdGV4dHVyZXMgYXJlIG5vdCB1c2VkXG5cbnZhciBlbGVUeHJTcGFjaW5nID0gODsgLy8gc3BhY2luZyBiZXR3ZWVuIGVsZW1lbnRzIG9uIHRleHR1cmVzIHRvIGF2b2lkIGJsaXR0aW5nIG92ZXJsYXBzXG5cbnZhciBkZWZUeHJXaWR0aCA9IDEwMjQ7IC8vIGRlZmF1bHQvbWluaW11bSB0ZXh0dXJlIHdpZHRoXG5cbnZhciBtYXhUeHJXID0gMTAyNDsgLy8gdGhlIG1heGltdW0gd2lkdGggb2YgYSB0ZXh0dXJlXG5cbnZhciBtYXhUeHJIID0gMTAyNDsgLy8gdGhlIG1heGltdW0gaGVpZ2h0IG9mIGEgdGV4dHVyZVxuXG52YXIgbWluVXRpbGl0eSA9IDAuMjsgLy8gaWYgdXNhZ2Ugb2YgdGV4dHVyZSBpcyBsZXNzIHRoYW4gdGhpcywgaXQgaXMgcmV0aXJlZFxuXG52YXIgbWF4RnVsbG5lc3MgPSAwLjg7IC8vIGZ1bGxuZXNzIG9mIHRleHR1cmUgYWZ0ZXIgd2hpY2ggcXVldWUgcmVtb3ZhbCBpcyBjaGVja2VkXG5cbnZhciBtYXhGdWxsbmVzc0NoZWNrcyA9IDEwOyAvLyBkZXF1ZXVlZCBhZnRlciB0aGlzIG1hbnkgY2hlY2tzXG5cbnZhciBkZXFDb3N0ID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbnZhciBkZXFBdmdDb3N0ID0gMC4xOyAvLyAlIG9mIGFkZCdsIHJlbmRlcmluZyBjb3N0IGNvbXBhcmVkIHRvIGF2ZXJhZ2Ugb3ZlcmFsbCByZWRyYXcgdGltZVxuXG52YXIgZGVxTm9EcmF3Q29zdCA9IDAuOTsgLy8gJSBvZiBhdmcgZnJhbWUgdGltZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBkZXF1ZXVlaW5nIHdoZW4gbm90IGRyYXdpbmdcblxudmFyIGRlcUZhc3RDb3N0ID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG52YXIgZGVxUmVkcmF3VGhyZXNob2xkID0gMTAwOyAvLyB0aW1lIHRvIGJhdGNoIHJlZHJhd3MgdG9nZXRoZXIgZnJvbSBkZXF1ZXVlaW5nIHRvIGFsbG93IG1vcmUgZGVxdWV1ZWluZyBjYWxjcyB0byBoYXBwZW4gaW4gdGhlIG1lYW53aGlsZVxuXG52YXIgbWF4RGVxU2l6ZSA9IDE7IC8vIG51bWJlciBvZiBlbGVzIHRvIGRlcXVldWUgYW5kIHJlbmRlciBhdCBoaWdoZXIgdGV4dHVyZSBpbiBlYWNoIGJhdGNoXG5cbnZhciBnZXRUeHJSZWFzb25zID0ge1xuICBkZXF1ZXVlOiAnZGVxdWV1ZScsXG4gIGRvd25zY2FsZTogJ2Rvd25zY2FsZScsXG4gIGhpZ2hRdWFsaXR5OiAnaGlnaFF1YWxpdHknXG59O1xudmFyIGluaXREZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgZ2V0S2V5OiBudWxsLFxuICBkb2VzRWxlSW52YWxpZGF0ZUtleTogZmFsc2lmeSxcbiAgZHJhd0VsZW1lbnQ6IG51bGwsXG4gIGdldEJvdW5kaW5nQm94OiBudWxsLFxuICBnZXRSb3RhdGlvblBvaW50OiBudWxsLFxuICBnZXRSb3RhdGlvbk9mZnNldDogbnVsbCxcbiAgaXNWaXNpYmxlOiB0cnVlaWZ5LFxuICBhbGxvd0VkZ2VUeHJDYWNoaW5nOiB0cnVlLFxuICBhbGxvd1BhcmVudFR4ckNhY2hpbmc6IHRydWVcbn0pO1xuXG52YXIgRWxlbWVudFRleHR1cmVDYWNoZSA9IGZ1bmN0aW9uIEVsZW1lbnRUZXh0dXJlQ2FjaGUocmVuZGVyZXIsIGluaXRPcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICBzZWxmLm9uRGVxdWV1ZXMgPSBbXTtcbiAgdmFyIG9wdHMgPSBpbml0RGVmYXVsdHMoaW5pdE9wdGlvbnMpO1xuICBleHRlbmQoc2VsZiwgb3B0cyk7XG4gIHNlbGYubG9va3VwID0gbmV3IEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAob3B0cy5nZXRLZXksIG9wdHMuZG9lc0VsZUludmFsaWRhdGVLZXkpO1xuICBzZWxmLnNldHVwRGVxdWV1ZWluZygpO1xufTtcblxudmFyIEVUQ3AgPSBFbGVtZW50VGV4dHVyZUNhY2hlLnByb3RvdHlwZTtcbkVUQ3AucmVhc29ucyA9IGdldFR4clJlYXNvbnM7IC8vIHRoZSBsaXN0IG9mIHRleHR1cmVzIGluIHdoaWNoIG5ldyBzdWJ0ZXh0dXJlcyBmb3IgZWxlbWVudHMgY2FuIGJlIHBsYWNlZFxuXG5FVENwLmdldFRleHR1cmVRdWV1ZSA9IGZ1bmN0aW9uICh0eHJIKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5lbGVJbWdDYWNoZXMgPSBzZWxmLmVsZUltZ0NhY2hlcyB8fCB7fTtcbiAgcmV0dXJuIHNlbGYuZWxlSW1nQ2FjaGVzW3R4ckhdID0gc2VsZi5lbGVJbWdDYWNoZXNbdHhySF0gfHwgW107XG59OyAvLyB0aGUgbGlzdCBvZiB1c3VzZWQgdGV4dHVyZXMgd2hpY2ggY2FuIGJlIHJlY3ljbGVkIChpbiB1c2UgaW4gdGV4dHVyZSBxdWV1ZSlcblxuXG5FVENwLmdldFJldGlyZWRUZXh0dXJlUXVldWUgPSBmdW5jdGlvbiAodHhySCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBydHh0clFzID0gc2VsZi5lbGVJbWdDYWNoZXMucmV0aXJlZCA9IHNlbGYuZWxlSW1nQ2FjaGVzLnJldGlyZWQgfHwge307XG4gIHZhciBydHh0clEgPSBydHh0clFzW3R4ckhdID0gcnR4dHJRc1t0eHJIXSB8fCBbXTtcbiAgcmV0dXJuIHJ0eHRyUTtcbn07IC8vIHF1ZXVlIG9mIGVsZW1lbnQgZHJhdyByZXF1ZXN0cyBhdCBkaWZmZXJlbnQgc2NhbGUgbGV2ZWxzXG5cblxuRVRDcC5nZXRFbGVtZW50UXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmVsZUNhY2hlUXVldWUgPSBzZWxmLmVsZUNhY2hlUXVldWUgfHwgbmV3IEhlYXAoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5yZXFzIC0gYS5yZXFzO1xuICB9KTtcbiAgcmV0dXJuIHE7XG59OyAvLyBxdWV1ZSBvZiBlbGVtZW50IGRyYXcgcmVxdWVzdHMgYXQgZGlmZmVyZW50IHNjYWxlIGxldmVscyAoZWxlbWVudCBpZCBsb29rdXApXG5cblxuRVRDcC5nZXRFbGVtZW50S2V5VG9RdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgazJxID0gc2VsZi5lbGVLZXlUb0NhY2hlUXVldWUgPSBzZWxmLmVsZUtleVRvQ2FjaGVRdWV1ZSB8fCB7fTtcbiAgcmV0dXJuIGsycTtcbn07XG5cbkVUQ3AuZ2V0RWxlbWVudCA9IGZ1bmN0aW9uIChlbGUsIGJiLCBweFJhdGlvLCBsdmwsIHJlYXNvbikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwO1xuXG4gIGlmICghYmIgfHwgYmIudyA9PT0gMCB8fCBiYi5oID09PSAwIHx8IGlzTmFOKGJiLncpIHx8IGlzTmFOKGJiLmgpIHx8ICFlbGUudmlzaWJsZSgpIHx8IGVsZS5yZW1vdmVkKCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICghc2VsZi5hbGxvd0VkZ2VUeHJDYWNoaW5nICYmIGVsZS5pc0VkZ2UoKSB8fCAhc2VsZi5hbGxvd1BhcmVudFR4ckNhY2hpbmcgJiYgZWxlLmlzUGFyZW50KCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChsdmwgPT0gbnVsbCkge1xuICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG4gIH1cblxuICBpZiAobHZsIDwgbWluTHZsKSB7XG4gICAgbHZsID0gbWluTHZsO1xuICB9IGVsc2UgaWYgKHpvb20gPj0gbWF4Wm9vbSB8fCBsdmwgPiBtYXhMdmwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IE1hdGgucG93KDIsIGx2bCk7XG4gIHZhciBlbGVTY2FsZWRIID0gYmIuaCAqIHNjYWxlO1xuICB2YXIgZWxlU2NhbGVkVyA9IGJiLncgKiBzY2FsZTtcbiAgdmFyIHNjYWxlZExhYmVsU2hvd24gPSByLmVsZVRleHRCaWdnZXJUaGFuTWluKGVsZSwgc2NhbGUpO1xuXG4gIGlmICghdGhpcy5pc1Zpc2libGUoZWxlLCBzY2FsZWRMYWJlbFNob3duKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGVsZUNhY2hlID0gbG9va3VwLmdldChlbGUsIGx2bCk7IC8vIGlmIHRoaXMgZ2V0IHdhcyBvbiBhbiB1bnVzZWQvaW52YWxpZGF0ZWQgY2FjaGUsIHRoZW4gcmVzdG9yZSB0aGUgdGV4dHVyZSB1c2FnZSBtZXRyaWNcblxuICBpZiAoZWxlQ2FjaGUgJiYgZWxlQ2FjaGUuaW52YWxpZGF0ZWQpIHtcbiAgICBlbGVDYWNoZS5pbnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIGVsZUNhY2hlLnRleHR1cmUuaW52YWxpZGF0ZWRXaWR0aCAtPSBlbGVDYWNoZS53aWR0aDtcbiAgfVxuXG4gIGlmIChlbGVDYWNoZSkge1xuICAgIHJldHVybiBlbGVDYWNoZTtcbiAgfVxuXG4gIHZhciB0eHJIOyAvLyB3aGljaCB0ZXh0dXJlIGhlaWdodCB0aGlzIGVsZSBiZWxvbmdzIHRvXG5cbiAgaWYgKGVsZVNjYWxlZEggPD0gbWluVHhySCkge1xuICAgIHR4ckggPSBtaW5UeHJIO1xuICB9IGVsc2UgaWYgKGVsZVNjYWxlZEggPD0gdHhyU3RlcEgpIHtcbiAgICB0eHJIID0gdHhyU3RlcEg7XG4gIH0gZWxzZSB7XG4gICAgdHhySCA9IE1hdGguY2VpbChlbGVTY2FsZWRIIC8gdHhyU3RlcEgpICogdHhyU3RlcEg7XG4gIH1cblxuICBpZiAoZWxlU2NhbGVkSCA+IG1heFR4ckggfHwgZWxlU2NhbGVkVyA+IG1heFR4clcpIHtcbiAgICByZXR1cm4gbnVsbDsgLy8gY2FjaGluZyBsYXJnZSBlbGVtZW50cyBpcyBub3QgZWZmaWNpZW50XG4gIH1cblxuICB2YXIgdHhyUSA9IHNlbGYuZ2V0VGV4dHVyZVF1ZXVlKHR4ckgpOyAvLyBmaXJzdCB0cnkgdGhlIHNlY29uZCBsYXN0IG9uZSBpbiBjYXNlIGl0IGhhcyBzcGFjZSBhdCB0aGUgZW5kXG5cbiAgdmFyIHR4ciA9IHR4clFbdHhyUS5sZW5ndGggLSAyXTtcblxuICB2YXIgYWRkTmV3VHhyID0gZnVuY3Rpb24gYWRkTmV3VHhyKCkge1xuICAgIHJldHVybiBzZWxmLnJlY3ljbGVUZXh0dXJlKHR4ckgsIGVsZVNjYWxlZFcpIHx8IHNlbGYuYWRkVGV4dHVyZSh0eHJILCBlbGVTY2FsZWRXKTtcbiAgfTsgLy8gdHJ5IHRoZSBsYXN0IG9uZSBpZiB0aGVyZSBpcyBubyBzZWNvbmQgbGFzdCBvbmVcblxuXG4gIGlmICghdHhyKSB7XG4gICAgdHhyID0gdHhyUVt0eHJRLmxlbmd0aCAtIDFdO1xuICB9IC8vIGlmIHRoZSBsYXN0IG9uZSBkb2Vzbid0IGV4aXN0LCB3ZSBuZWVkIGEgZmlyc3Qgb25lXG5cblxuICBpZiAoIXR4cikge1xuICAgIHR4ciA9IGFkZE5ld1R4cigpO1xuICB9IC8vIGlmIHRoZXJlJ3Mgbm8gcm9vbSBpbiB0aGUgY3VycmVudCB0ZXh0dXJlLCB3ZSBuZWVkIGEgbmV3IG9uZVxuXG5cbiAgaWYgKHR4ci53aWR0aCAtIHR4ci51c2VkV2lkdGggPCBlbGVTY2FsZWRXKSB7XG4gICAgdHhyID0gYWRkTmV3VHhyKCk7XG4gIH1cblxuICB2YXIgc2NhbGFibGVGcm9tID0gZnVuY3Rpb24gc2NhbGFibGVGcm9tKG90aGVyQ2FjaGUpIHtcbiAgICByZXR1cm4gb3RoZXJDYWNoZSAmJiBvdGhlckNhY2hlLnNjYWxlZExhYmVsU2hvd24gPT09IHNjYWxlZExhYmVsU2hvd247XG4gIH07XG5cbiAgdmFyIGRlcWluZyA9IHJlYXNvbiAmJiByZWFzb24gPT09IGdldFR4clJlYXNvbnMuZGVxdWV1ZTtcbiAgdmFyIGhpZ2hRdWFsaXR5UmVxID0gcmVhc29uICYmIHJlYXNvbiA9PT0gZ2V0VHhyUmVhc29ucy5oaWdoUXVhbGl0eTtcbiAgdmFyIGRvd25zY2FsZVJlcSA9IHJlYXNvbiAmJiByZWFzb24gPT09IGdldFR4clJlYXNvbnMuZG93bnNjYWxlO1xuICB2YXIgaGlnaGVyQ2FjaGU7IC8vIHRoZSBuZWFyZXN0IGNhY2hlIHdpdGggYSBoaWdoZXIgbGV2ZWxcblxuICBmb3IgKHZhciBsID0gbHZsICsgMTsgbCA8PSBtYXhMdmw7IGwrKykge1xuICAgIHZhciBjID0gbG9va3VwLmdldChlbGUsIGwpO1xuXG4gICAgaWYgKGMpIHtcbiAgICAgIGhpZ2hlckNhY2hlID0gYztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvbmVVcENhY2hlID0gaGlnaGVyQ2FjaGUgJiYgaGlnaGVyQ2FjaGUubGV2ZWwgPT09IGx2bCArIDEgPyBoaWdoZXJDYWNoZSA6IG51bGw7XG5cbiAgdmFyIGRvd25zY2FsZSA9IGZ1bmN0aW9uIGRvd25zY2FsZSgpIHtcbiAgICB0eHIuY29udGV4dC5kcmF3SW1hZ2Uob25lVXBDYWNoZS50ZXh0dXJlLmNhbnZhcywgb25lVXBDYWNoZS54LCAwLCBvbmVVcENhY2hlLndpZHRoLCBvbmVVcENhY2hlLmhlaWdodCwgdHhyLnVzZWRXaWR0aCwgMCwgZWxlU2NhbGVkVywgZWxlU2NhbGVkSCk7XG4gIH07IC8vIHJlc2V0IGVsZSBhcmVhIGluIHRleHR1cmVcblxuXG4gIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgdHhyLmNvbnRleHQuY2xlYXJSZWN0KHR4ci51c2VkV2lkdGgsIDAsIGVsZVNjYWxlZFcsIHR4ckgpO1xuXG4gIGlmIChzY2FsYWJsZUZyb20ob25lVXBDYWNoZSkpIHtcbiAgICAvLyB0aGVuIHdlIGNhbiByZWxhdGl2ZWx5IGNoZWFwbHkgcmVzY2FsZSB0aGUgZXhpc3RpbmcgaW1hZ2Ugdy9vIHJlcmVuZGVyaW5nXG4gICAgZG93bnNjYWxlKCk7XG4gIH0gZWxzZSBpZiAoc2NhbGFibGVGcm9tKGhpZ2hlckNhY2hlKSkge1xuICAgIC8vIHRoZW4gdXNlIHRoZSBoaWdoZXIgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIG5leHQgbGV2ZWwgZG93blxuICAgIC8vIHRvIGNoZWFwbHkgc2NhbGUgdG93YXJkcyB0aGUgc21hbGxlciBsZXZlbFxuICAgIGlmIChoaWdoUXVhbGl0eVJlcSkge1xuICAgICAgZm9yICh2YXIgX2wgPSBoaWdoZXJDYWNoZS5sZXZlbDsgX2wgPiBsdmw7IF9sLS0pIHtcbiAgICAgICAgb25lVXBDYWNoZSA9IHNlbGYuZ2V0RWxlbWVudChlbGUsIGJiLCBweFJhdGlvLCBfbCwgZ2V0VHhyUmVhc29ucy5kb3duc2NhbGUpO1xuICAgICAgfVxuXG4gICAgICBkb3duc2NhbGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5xdWV1ZUVsZW1lbnQoZWxlLCBoaWdoZXJDYWNoZS5sZXZlbCAtIDEpO1xuICAgICAgcmV0dXJuIGhpZ2hlckNhY2hlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbG93ZXJDYWNoZTsgLy8gdGhlIG5lYXJlc3QgY2FjaGUgd2l0aCBhIGxvd2VyIGxldmVsXG5cbiAgICBpZiAoIWRlcWluZyAmJiAhaGlnaFF1YWxpdHlSZXEgJiYgIWRvd25zY2FsZVJlcSkge1xuICAgICAgZm9yICh2YXIgX2wyID0gbHZsIC0gMTsgX2wyID49IG1pbkx2bDsgX2wyLS0pIHtcbiAgICAgICAgdmFyIF9jID0gbG9va3VwLmdldChlbGUsIF9sMik7XG5cbiAgICAgICAgaWYgKF9jKSB7XG4gICAgICAgICAgbG93ZXJDYWNoZSA9IF9jO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjYWxhYmxlRnJvbShsb3dlckNhY2hlKSkge1xuICAgICAgLy8gdGhlbiB1c2UgdGhlIGxvd2VyIHF1YWxpdHkgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIGJldHRlciBvbmUgZm9yIGxhdGVyXG4gICAgICBzZWxmLnF1ZXVlRWxlbWVudChlbGUsIGx2bCk7XG4gICAgICByZXR1cm4gbG93ZXJDYWNoZTtcbiAgICB9XG5cbiAgICB0eHIuY29udGV4dC50cmFuc2xhdGUodHhyLnVzZWRXaWR0aCwgMCk7XG4gICAgdHhyLmNvbnRleHQuc2NhbGUoc2NhbGUsIHNjYWxlKTtcbiAgICB0aGlzLmRyYXdFbGVtZW50KHR4ci5jb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCBmYWxzZSk7XG4gICAgdHhyLmNvbnRleHQuc2NhbGUoMSAvIHNjYWxlLCAxIC8gc2NhbGUpO1xuICAgIHR4ci5jb250ZXh0LnRyYW5zbGF0ZSgtdHhyLnVzZWRXaWR0aCwgMCk7XG4gIH1cblxuICBlbGVDYWNoZSA9IHtcbiAgICB4OiB0eHIudXNlZFdpZHRoLFxuICAgIHRleHR1cmU6IHR4cixcbiAgICBsZXZlbDogbHZsLFxuICAgIHNjYWxlOiBzY2FsZSxcbiAgICB3aWR0aDogZWxlU2NhbGVkVyxcbiAgICBoZWlnaHQ6IGVsZVNjYWxlZEgsXG4gICAgc2NhbGVkTGFiZWxTaG93bjogc2NhbGVkTGFiZWxTaG93blxuICB9O1xuICB0eHIudXNlZFdpZHRoICs9IE1hdGguY2VpbChlbGVTY2FsZWRXICsgZWxlVHhyU3BhY2luZyk7XG4gIHR4ci5lbGVDYWNoZXMucHVzaChlbGVDYWNoZSk7XG4gIGxvb2t1cC5zZXQoZWxlLCBsdmwsIGVsZUNhY2hlKTtcbiAgc2VsZi5jaGVja1RleHR1cmVGdWxsbmVzcyh0eHIpO1xuICByZXR1cm4gZWxlQ2FjaGU7XG59O1xuXG5FVENwLmludmFsaWRhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuaW52YWxpZGF0ZUVsZW1lbnQoZWxlc1tpXSk7XG4gIH1cbn07XG5cbkVUQ3AuaW52YWxpZGF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGxvb2t1cCA9IHNlbGYubG9va3VwO1xuICB2YXIgY2FjaGVzID0gW107XG4gIHZhciBpbnZhbGlkID0gbG9va3VwLmlzSW52YWxpZChlbGUpO1xuXG4gIGlmICghaW52YWxpZCkge1xuICAgIHJldHVybjsgLy8gb3ZlcnJpZGUgdGhlIGludmFsaWRhdGlvbiByZXF1ZXN0IGlmIHRoZSBlbGVtZW50IGtleSBoYXMgbm90IGNoYW5nZWRcbiAgfVxuXG4gIGZvciAodmFyIGx2bCA9IG1pbkx2bDsgbHZsIDw9IG1heEx2bDsgbHZsKyspIHtcbiAgICB2YXIgY2FjaGUgPSBsb29rdXAuZ2V0Rm9yQ2FjaGVkS2V5KGVsZSwgbHZsKTtcblxuICAgIGlmIChjYWNoZSkge1xuICAgICAgY2FjaGVzLnB1c2goY2FjaGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBub090aGVyRWxlc1VzZUNhY2hlID0gbG9va3VwLmludmFsaWRhdGUoZWxlKTtcblxuICBpZiAobm9PdGhlckVsZXNVc2VDYWNoZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgX2NhY2hlID0gY2FjaGVzW2ldO1xuICAgICAgdmFyIHR4ciA9IF9jYWNoZS50ZXh0dXJlOyAvLyByZW1vdmUgc3BhY2UgZnJvbSB0aGUgdGV4dHVyZSBpdCBiZWxvbmdzIHRvXG5cbiAgICAgIHR4ci5pbnZhbGlkYXRlZFdpZHRoICs9IF9jYWNoZS53aWR0aDsgLy8gbWFyayB0aGUgY2FjaGUgYXMgaW52YWxpZGF0ZWRcblxuICAgICAgX2NhY2hlLmludmFsaWRhdGVkID0gdHJ1ZTsgLy8gcmV0aXJlIHRoZSB0ZXh0dXJlIGlmIGl0cyB1dGlsaXR5IGlzIGxvd1xuXG4gICAgICBzZWxmLmNoZWNrVGV4dHVyZVV0aWxpdHkodHhyKTtcbiAgICB9XG4gIH0gLy8gcmVtb3ZlIGZyb20gcXVldWUgc2luY2UgdGhlIG9sZCByZXEgd2FzIGZvciB0aGUgb2xkIHN0YXRlXG5cblxuICBzZWxmLnJlbW92ZUZyb21RdWV1ZShlbGUpO1xufTtcblxuRVRDcC5jaGVja1RleHR1cmVVdGlsaXR5ID0gZnVuY3Rpb24gKHR4cikge1xuICAvLyBpbnZhbGlkYXRlIGFsbCBlbnRyaWVzIGluIHRoZSBjYWNoZSBpZiB0aGUgY2FjaGUgc2l6ZSBpcyBzbWFsbFxuICBpZiAodHhyLmludmFsaWRhdGVkV2lkdGggPj0gbWluVXRpbGl0eSAqIHR4ci53aWR0aCkge1xuICAgIHRoaXMucmV0aXJlVGV4dHVyZSh0eHIpO1xuICB9XG59O1xuXG5FVENwLmNoZWNrVGV4dHVyZUZ1bGxuZXNzID0gZnVuY3Rpb24gKHR4cikge1xuICAvLyBpZiB0ZXh0dXJlIGhhcyBiZWVuIG1vc3RseSBmaWxsZWQgYW5kIHBhc3NlZCBvdmVyIHNldmVyYWwgdGltZXMsIHJlbW92ZVxuICAvLyBpdCBmcm9tIHRoZSBxdWV1ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhc3RlIHRpbWUgbG9va2luZyBhdCBpdCB0byBwdXQgbmV3IHRoaW5nc1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhyLmhlaWdodCk7XG5cbiAgaWYgKHR4ci51c2VkV2lkdGggLyB0eHIud2lkdGggPiBtYXhGdWxsbmVzcyAmJiB0eHIuZnVsbG5lc3NDaGVja3MgPj0gbWF4RnVsbG5lc3NDaGVja3MpIHtcbiAgICByZW1vdmVGcm9tQXJyYXkodHhyUSwgdHhyKTtcbiAgfSBlbHNlIHtcbiAgICB0eHIuZnVsbG5lc3NDaGVja3MrKztcbiAgfVxufTtcblxuRVRDcC5yZXRpcmVUZXh0dXJlID0gZnVuY3Rpb24gKHR4cikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJIID0gdHhyLmhlaWdodDtcbiAgdmFyIHR4clEgPSBzZWxmLmdldFRleHR1cmVRdWV1ZSh0eHJIKTtcbiAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwOyAvLyByZXRpcmUgdGhlIHRleHR1cmUgZnJvbSB0aGUgYWN0aXZlIC8gc2VhcmNoYWJsZSBxdWV1ZTpcblxuICByZW1vdmVGcm9tQXJyYXkodHhyUSwgdHhyKTtcbiAgdHhyLnJldGlyZWQgPSB0cnVlOyAvLyByZW1vdmUgdGhlIHJlZnMgZnJvbSB0aGUgZWxlcyB0byB0aGUgY2FjaGVzOlxuXG4gIHZhciBlbGVDYWNoZXMgPSB0eHIuZWxlQ2FjaGVzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlQ2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZUNhY2hlID0gZWxlQ2FjaGVzW2ldO1xuICAgIGxvb2t1cC5kZWxldGVDYWNoZShlbGVDYWNoZS5rZXksIGVsZUNhY2hlLmxldmVsKTtcbiAgfVxuXG4gIGNsZWFyQXJyYXkoZWxlQ2FjaGVzKTsgLy8gYWRkIHRoZSB0ZXh0dXJlIHRvIGEgcmV0aXJlZCBxdWV1ZSBzbyBpdCBjYW4gYmUgcmVjeWNsZWQgaW4gZnV0dXJlOlxuXG4gIHZhciBydHh0clEgPSBzZWxmLmdldFJldGlyZWRUZXh0dXJlUXVldWUodHhySCk7XG4gIHJ0eHRyUS5wdXNoKHR4cik7XG59O1xuXG5FVENwLmFkZFRleHR1cmUgPSBmdW5jdGlvbiAodHhySCwgbWluVykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gIHZhciB0eHIgPSB7fTtcbiAgdHhyUS5wdXNoKHR4cik7XG4gIHR4ci5lbGVDYWNoZXMgPSBbXTtcbiAgdHhyLmhlaWdodCA9IHR4ckg7XG4gIHR4ci53aWR0aCA9IE1hdGgubWF4KGRlZlR4cldpZHRoLCBtaW5XKTtcbiAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gIHR4ci5pbnZhbGlkYXRlZFdpZHRoID0gMDtcbiAgdHhyLmZ1bGxuZXNzQ2hlY2tzID0gMDtcbiAgdHhyLmNhbnZhcyA9IHNlbGYucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICB0eHIuY29udGV4dCA9IHR4ci5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgcmV0dXJuIHR4cjtcbn07XG5cbkVUQ3AucmVjeWNsZVRleHR1cmUgPSBmdW5jdGlvbiAodHhySCwgbWluVykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gIHZhciBydHh0clEgPSBzZWxmLmdldFJldGlyZWRUZXh0dXJlUXVldWUodHhySCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBydHh0clEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdHhyID0gcnR4dHJRW2ldO1xuXG4gICAgaWYgKHR4ci53aWR0aCA+PSBtaW5XKSB7XG4gICAgICB0eHIucmV0aXJlZCA9IGZhbHNlO1xuICAgICAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gICAgICB0eHIuaW52YWxpZGF0ZWRXaWR0aCA9IDA7XG4gICAgICB0eHIuZnVsbG5lc3NDaGVja3MgPSAwO1xuICAgICAgY2xlYXJBcnJheSh0eHIuZWxlQ2FjaGVzKTtcbiAgICAgIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgICAgIHR4ci5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICAgICAgcmVtb3ZlRnJvbUFycmF5KHJ0eHRyUSwgdHhyKTtcbiAgICAgIHR4clEucHVzaCh0eHIpO1xuICAgICAgcmV0dXJuIHR4cjtcbiAgICB9XG4gIH1cbn07XG5cbkVUQ3AucXVldWVFbGVtZW50ID0gZnVuY3Rpb24gKGVsZSwgbHZsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmdldEVsZW1lbnRRdWV1ZSgpO1xuICB2YXIgazJxID0gc2VsZi5nZXRFbGVtZW50S2V5VG9RdWV1ZSgpO1xuICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgdmFyIGV4aXN0aW5nUmVxID0gazJxW2tleV07XG5cbiAgaWYgKGV4aXN0aW5nUmVxKSB7XG4gICAgLy8gdXNlIHRoZSBtYXggbHZsIGIvYyBpbiBiZXR3ZWVuIGx2bHMgYXJlIGNoZWFwIHRvIG1ha2VcbiAgICBleGlzdGluZ1JlcS5sZXZlbCA9IE1hdGgubWF4KGV4aXN0aW5nUmVxLmxldmVsLCBsdmwpO1xuICAgIGV4aXN0aW5nUmVxLmVsZXMubWVyZ2UoZWxlKTtcbiAgICBleGlzdGluZ1JlcS5yZXFzKys7XG4gICAgcS51cGRhdGVJdGVtKGV4aXN0aW5nUmVxKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcmVxID0ge1xuICAgICAgZWxlczogZWxlLnNwYXduKCkubWVyZ2UoZWxlKSxcbiAgICAgIGxldmVsOiBsdmwsXG4gICAgICByZXFzOiAxLFxuICAgICAga2V5OiBrZXlcbiAgICB9O1xuICAgIHEucHVzaChyZXEpO1xuICAgIGsycVtrZXldID0gcmVxO1xuICB9XG59O1xuXG5FVENwLmRlcXVldWUgPSBmdW5jdGlvbiAocHhSYXRpb1xuLyosIGV4dGVudCovXG4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcSA9IHNlbGYuZ2V0RWxlbWVudFF1ZXVlKCk7XG4gIHZhciBrMnEgPSBzZWxmLmdldEVsZW1lbnRLZXlUb1F1ZXVlKCk7XG4gIHZhciBkZXF1ZXVlZCA9IFtdO1xuICB2YXIgbG9va3VwID0gc2VsZi5sb29rdXA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhEZXFTaXplOyBpKyspIHtcbiAgICBpZiAocS5zaXplKCkgPiAwKSB7XG4gICAgICB2YXIgcmVxID0gcS5wb3AoKTtcbiAgICAgIHZhciBrZXkgPSByZXEua2V5O1xuICAgICAgdmFyIGVsZSA9IHJlcS5lbGVzWzBdOyAvLyBhbGwgZWxlcyBoYXZlIHRoZSBzYW1lIGtleVxuXG4gICAgICB2YXIgY2FjaGVFeGlzdHMgPSBsb29rdXAuaGFzQ2FjaGUoZWxlLCByZXEubGV2ZWwpOyAvLyBjbGVhciBvdXQgdGhlIGtleSB0byByZXEgbG9va3VwXG5cbiAgICAgIGsycVtrZXldID0gbnVsbDsgLy8gZGVxdWV1ZWluZyBpc24ndCBuZWNlc3Nhcnkgd2l0aCBhbiBleGlzdGluZyBjYWNoZVxuXG4gICAgICBpZiAoY2FjaGVFeGlzdHMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRlcXVldWVkLnB1c2gocmVxKTtcbiAgICAgIHZhciBiYiA9IHNlbGYuZ2V0Qm91bmRpbmdCb3goZWxlKTtcbiAgICAgIHNlbGYuZ2V0RWxlbWVudChlbGUsIGJiLCBweFJhdGlvLCByZXEubGV2ZWwsIGdldFR4clJlYXNvbnMuZGVxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXF1ZXVlZDtcbn07XG5cbkVUQ3AucmVtb3ZlRnJvbVF1ZXVlID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBxID0gc2VsZi5nZXRFbGVtZW50UXVldWUoKTtcbiAgdmFyIGsycSA9IHNlbGYuZ2V0RWxlbWVudEtleVRvUXVldWUoKTtcbiAgdmFyIGtleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gIHZhciByZXEgPSBrMnFba2V5XTtcblxuICBpZiAocmVxICE9IG51bGwpIHtcbiAgICBpZiAocmVxLmVsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyByZW1vdmUgaWYgbGFzdCBlbGUgaW4gdGhlIHJlcVxuICAgICAgLy8gYnJpbmcgdG8gZnJvbnQgb2YgcXVldWVcbiAgICAgIHJlcS5yZXFzID0gTUFYX0lOVDtcbiAgICAgIHEudXBkYXRlSXRlbShyZXEpO1xuICAgICAgcS5wb3AoKTsgLy8gcmVtb3ZlIGZyb20gcXVldWVcblxuICAgICAgazJxW2tleV0gPSBudWxsOyAvLyByZW1vdmUgZnJvbSBsb29rdXAgbWFwXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSBqdXN0IHJlbW92ZSBlbGUgZnJvbSByZXFcbiAgICAgIHJlcS5lbGVzLnVubWVyZ2UoZWxlKTtcbiAgICB9XG4gIH1cbn07XG5cbkVUQ3Aub25EZXF1ZXVlID0gZnVuY3Rpb24gKGZuKSB7XG4gIHRoaXMub25EZXF1ZXVlcy5wdXNoKGZuKTtcbn07XG5cbkVUQ3Aub2ZmRGVxdWV1ZSA9IGZ1bmN0aW9uIChmbikge1xuICByZW1vdmVGcm9tQXJyYXkodGhpcy5vbkRlcXVldWVzLCBmbik7XG59O1xuXG5FVENwLnNldHVwRGVxdWV1ZWluZyA9IGRlZnMuc2V0dXBEZXF1ZXVlaW5nKHtcbiAgZGVxUmVkcmF3VGhyZXNob2xkOiBkZXFSZWRyYXdUaHJlc2hvbGQsXG4gIGRlcUNvc3Q6IGRlcUNvc3QsXG4gIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QsXG4gIGRlcU5vRHJhd0Nvc3Q6IGRlcU5vRHJhd0Nvc3QsXG4gIGRlcUZhc3RDb3N0OiBkZXFGYXN0Q29zdCxcbiAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbywgZXh0ZW50KSB7XG4gICAgcmV0dXJuIHNlbGYuZGVxdWV1ZShweFJhdGlvLCBleHRlbnQpO1xuICB9LFxuICBvbkRlcWQ6IGZ1bmN0aW9uIG9uRGVxZChzZWxmLCBkZXFkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLm9uRGVxdWV1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBmbiA9IHNlbGYub25EZXF1ZXVlc1tpXTtcbiAgICAgIGZuKGRlcWQpO1xuICAgIH1cbiAgfSxcbiAgc2hvdWxkUmVkcmF3OiBmdW5jdGlvbiBzaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcHhSYXRpbywgZXh0ZW50KSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXFkLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlcyA9IGRlcWRbaV0uZWxlcztcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBiYiA9IGVsZXNbal0uYm91bmRpbmdCb3goKTtcblxuICAgICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChiYiwgZXh0ZW50KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuZWxlVHhyRGVxO1xuICB9XG59KTtcblxudmFyIGRlZk51bUxheWVycyA9IDE7IC8vIGRlZmF1bHQgbnVtYmVyIG9mIGxheWVycyB0byB1c2VcblxudmFyIG1pbkx2bCQxID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG52YXIgbWF4THZsJDEgPSAyOyAvLyB3aGVuIGxhcmdlciB0aGFuIHRoaXMgc2NhbGUganVzdCByZW5kZXIgZGlyZWN0bHkgKGNhY2hpbmcgaXMgbm90IGhlbHBmdWwpXG5cbnZhciBtYXhab29tJDEgPSAzLjk5OyAvLyBiZXlvbmQgdGhpcyB6b29tIGxldmVsLCBsYXllcmVkIHRleHR1cmVzIGFyZSBub3QgdXNlZFxuXG52YXIgZGVxUmVkcmF3VGhyZXNob2xkJDEgPSA1MDsgLy8gdGltZSB0byBiYXRjaCByZWRyYXdzIHRvZ2V0aGVyIGZyb20gZGVxdWV1ZWluZyB0byBhbGxvdyBtb3JlIGRlcXVldWVpbmcgY2FsY3MgdG8gaGFwcGVuIGluIHRoZSBtZWFud2hpbGVcblxudmFyIHJlZmluZUVsZURlYm91bmNlVGltZSA9IDUwOyAvLyB0aW1lIHRvIGRlYm91bmNlIHNoYXJwZXIgZWxlIHRleHR1cmUgdXBkYXRlc1xuXG52YXIgZGVxQ29zdCQxID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbnZhciBkZXFBdmdDb3N0JDEgPSAwLjE7IC8vICUgb2YgYWRkJ2wgcmVuZGVyaW5nIGNvc3QgY29tcGFyZWQgdG8gYXZlcmFnZSBvdmVyYWxsIHJlZHJhdyB0aW1lXG5cbnZhciBkZXFOb0RyYXdDb3N0JDEgPSAwLjk7IC8vICUgb2YgYXZnIGZyYW1lIHRpbWUgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVxdWV1ZWluZyB3aGVuIG5vdCBkcmF3aW5nXG5cbnZhciBkZXFGYXN0Q29zdCQxID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG52YXIgbWF4RGVxU2l6ZSQxID0gMTsgLy8gbnVtYmVyIG9mIGVsZXMgdG8gZGVxdWV1ZSBhbmQgcmVuZGVyIGF0IGhpZ2hlciB0ZXh0dXJlIGluIGVhY2ggYmF0Y2hcblxudmFyIGludmFsaWRUaHJlc2hvbGQgPSAyNTA7IC8vIHRpbWUgdGhyZXNob2xkIGZvciBkaXNhYmxpbmcgYi9jIG9mIGludmFsaWRhdGlvbnNcblxudmFyIG1heExheWVyQXJlYSA9IDQwMDAgKiA0MDAwOyAvLyBsYXllcnMgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gdGhpc1xuXG52YXIgdXNlSGlnaFF1YWxpdHlFbGVUeHJSZXFzID0gdHJ1ZTsgLy8gd2hldGhlciB0byB1c2UgaGlnaCBxdWFsaXR5IGVsZSB0eHIgcmVxdWVzdHMgKGdlbmVyYWxseSBmYXN0ZXIgYW5kIGNoZWFwZXIgaW4gdGhlIGxvbmd0ZXJtKVxuLy8gdmFyIGxvZyA9IGZ1bmN0aW9uKCl7IGNvbnNvbGUubG9nLmFwcGx5KCBjb25zb2xlLCBhcmd1bWVudHMgKTsgfTtcblxudmFyIExheWVyZWRUZXh0dXJlQ2FjaGUgPSBmdW5jdGlvbiBMYXllcmVkVGV4dHVyZUNhY2hlKHJlbmRlcmVyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHIgPSBzZWxmLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gIHZhciBjeSA9IHIuY3k7XG4gIHNlbGYubGF5ZXJzQnlMZXZlbCA9IHt9OyAvLyBlLmcuIDIgPT4gWyBsYXllcjEsIGxheWVyMiwgLi4uLCBsYXllck4gXVxuXG4gIHNlbGYuZmlyc3RHZXQgPSB0cnVlO1xuICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKSAtIDIgKiBpbnZhbGlkVGhyZXNob2xkO1xuICBzZWxmLnNraXBwaW5nID0gZmFsc2U7XG4gIHNlbGYuZWxlVHhyRGVxcyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgc2VsZi5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50ID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5yZWZpbmVFbGVtZW50VGV4dHVyZXMoc2VsZi5lbGVUeHJEZXFzKTtcbiAgICBzZWxmLmVsZVR4ckRlcXMudW5tZXJnZShzZWxmLmVsZVR4ckRlcXMpO1xuICB9LCByZWZpbmVFbGVEZWJvdW5jZVRpbWUpO1xuICByLmJlZm9yZVJlbmRlcihmdW5jdGlvbiAod2lsbERyYXcsIG5vdykge1xuICAgIGlmIChub3cgLSBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lIDw9IGludmFsaWRUaHJlc2hvbGQpIHtcbiAgICAgIHNlbGYuc2tpcHBpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNraXBwaW5nID0gZmFsc2U7XG4gICAgfVxuICB9LCByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMubHlyVHhyU2tpcCk7XG5cbiAgdmFyIHFTb3J0ID0gZnVuY3Rpb24gcVNvcnQoYSwgYikge1xuICAgIHJldHVybiBiLnJlcXMgLSBhLnJlcXM7XG4gIH07XG5cbiAgc2VsZi5sYXllcnNRdWV1ZSA9IG5ldyBIZWFwKHFTb3J0KTtcbiAgc2VsZi5zZXR1cERlcXVldWVpbmcoKTtcbn07XG5cbnZhciBMVENwID0gTGF5ZXJlZFRleHR1cmVDYWNoZS5wcm90b3R5cGU7XG52YXIgbGF5ZXJJZFBvb2wgPSAwO1xudmFyIE1BWF9JTlQkMSA9IE1hdGgucG93KDIsIDUzKSAtIDE7XG5cbkxUQ3AubWFrZUxheWVyID0gZnVuY3Rpb24gKGJiLCBsdmwpIHtcbiAgdmFyIHNjYWxlID0gTWF0aC5wb3coMiwgbHZsKTtcbiAgdmFyIHcgPSBNYXRoLmNlaWwoYmIudyAqIHNjYWxlKTtcbiAgdmFyIGggPSBNYXRoLmNlaWwoYmIuaCAqIHNjYWxlKTtcbiAgdmFyIGNhbnZhcyA9IHRoaXMucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh3LCBoKTtcbiAgdmFyIGxheWVyID0ge1xuICAgIGlkOiBsYXllcklkUG9vbCA9ICsrbGF5ZXJJZFBvb2wgJSBNQVhfSU5UJDEsXG4gICAgYmI6IGJiLFxuICAgIGxldmVsOiBsdmwsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGNhbnZhczogY2FudmFzLFxuICAgIGNvbnRleHQ6IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLFxuICAgIGVsZXM6IFtdLFxuICAgIGVsZXNRdWV1ZTogW10sXG4gICAgcmVxczogMFxuICB9OyAvLyBsb2coJ21ha2UgbGF5ZXIgJXMgd2l0aCB3ICVzIGFuZCBoICVzIGFuZCBsdmwgJXMnLCBsYXllci5pZCwgbGF5ZXIud2lkdGgsIGxheWVyLmhlaWdodCwgbGF5ZXIubGV2ZWwpO1xuXG4gIHZhciBjeHQgPSBsYXllci5jb250ZXh0O1xuICB2YXIgZHggPSAtbGF5ZXIuYmIueDE7XG4gIHZhciBkeSA9IC1sYXllci5iYi55MTsgLy8gZG8gdGhlIHRyYW5zZm9ybSBvbiBjcmVhdGlvbiB0byBzYXZlIGN5Y2xlcyAoaXQncyB0aGUgc2FtZSBmb3IgYWxsIGVsZXMpXG5cbiAgY3h0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gIGN4dC50cmFuc2xhdGUoZHgsIGR5KTtcbiAgcmV0dXJuIGxheWVyO1xufTtcblxuTFRDcC5nZXRMYXllcnMgPSBmdW5jdGlvbiAoZWxlcywgcHhSYXRpbywgbHZsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHIgPSBzZWxmLnJlbmRlcmVyO1xuICB2YXIgY3kgPSByLmN5O1xuICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgdmFyIGZpcnN0R2V0ID0gc2VsZi5maXJzdEdldDtcbiAgc2VsZi5maXJzdEdldCA9IGZhbHNlOyAvLyBsb2coJy0tXFxuZ2V0IGxheWVycyB3aXRoICVzIGVsZXMnLCBlbGVzLmxlbmd0aCk7XG4gIC8vbG9nIGVsZXMubWFwKGZ1bmN0aW9uKGVsZSl7IHJldHVybiBlbGUuaWQoKSB9KSApO1xuXG4gIGlmIChsdmwgPT0gbnVsbCkge1xuICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG5cbiAgICBpZiAobHZsIDwgbWluTHZsJDEpIHtcbiAgICAgIGx2bCA9IG1pbkx2bCQxO1xuICAgIH0gZWxzZSBpZiAoem9vbSA+PSBtYXhab29tJDEgfHwgbHZsID4gbWF4THZsJDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobHZsLCBlbGVzKTtcbiAgdmFyIGxheWVyc0J5THZsID0gc2VsZi5sYXllcnNCeUxldmVsO1xuICB2YXIgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICB2YXIgbGF5ZXJzID0gbGF5ZXJzQnlMdmxbbHZsXSA9IGxheWVyc0J5THZsW2x2bF0gfHwgW107XG4gIHZhciBiYjtcbiAgdmFyIGx2bENvbXBsZXRlID0gc2VsZi5sZXZlbElzQ29tcGxldGUobHZsLCBlbGVzKTtcbiAgdmFyIHRtcExheWVycztcblxuICB2YXIgY2hlY2tUZW1wTGV2ZWxzID0gZnVuY3Rpb24gY2hlY2tUZW1wTGV2ZWxzKCkge1xuICAgIHZhciBjYW5Vc2VBc1RtcEx2bCA9IGZ1bmN0aW9uIGNhblVzZUFzVG1wTHZsKGwpIHtcbiAgICAgIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobCwgZWxlcyk7XG5cbiAgICAgIGlmIChzZWxmLmxldmVsSXNDb21wbGV0ZShsLCBlbGVzKSkge1xuICAgICAgICB0bXBMYXllcnMgPSBsYXllcnNCeUx2bFtsXTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBjaGVja0x2bHMgPSBmdW5jdGlvbiBjaGVja0x2bHMoZGlyKSB7XG4gICAgICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgbCA9IGx2bCArIGRpcjsgbWluTHZsJDEgPD0gbCAmJiBsIDw9IG1heEx2bCQxOyBsICs9IGRpcikge1xuICAgICAgICBpZiAoY2FuVXNlQXNUbXBMdmwobCkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjaGVja0x2bHMoKzEpO1xuICAgIGNoZWNrTHZscygtMSk7IC8vIHJlbW92ZSB0aGUgaW52YWxpZCBsYXllcnM7IHRoZXkgd2lsbCBiZSByZXBsYWNlZCBhcyBuZWVkZWQgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvblxuXG4gICAgZm9yICh2YXIgaSA9IGxheWVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGxheWVyID0gbGF5ZXJzW2ldO1xuXG4gICAgICBpZiAobGF5ZXIuaW52YWxpZCkge1xuICAgICAgICByZW1vdmVGcm9tQXJyYXkobGF5ZXJzLCBsYXllcik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGlmICghbHZsQ29tcGxldGUpIHtcbiAgICAvLyBpZiB0aGUgY3VycmVudCBsZXZlbCBpcyBpbmNvbXBsZXRlLCB0aGVuIHVzZSB0aGUgY2xvc2VzdCwgYmVzdCBxdWFsaXR5IGxheWVyc2V0IHRlbXBvcmFyaWx5XG4gICAgLy8gYW5kIGxhdGVyIHF1ZXVlIHRoZSBjdXJyZW50IGxheWVyc2V0IHNvIHdlIGNhbiBnZXQgdGhlIHByb3BlciBxdWFsaXR5IGxldmVsIHNvb25cbiAgICBjaGVja1RlbXBMZXZlbHMoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBsb2coJ2xldmVsIGNvbXBsZXRlLCB1c2luZyBleGlzdGluZyBsYXllcnNcXG4tLScpO1xuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICB2YXIgZ2V0QmIgPSBmdW5jdGlvbiBnZXRCYigpIHtcbiAgICBpZiAoIWJiKSB7XG4gICAgICBiYiA9IG1ha2VCb3VuZGluZ0JveCgpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXBkYXRlQm91bmRpbmdCb3goYmIsIGVsZXNbaV0uYm91bmRpbmdCb3goKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJiO1xuICB9O1xuXG4gIHZhciBtYWtlTGF5ZXIgPSBmdW5jdGlvbiBtYWtlTGF5ZXIob3B0cykge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIHZhciBhZnRlciA9IG9wdHMuYWZ0ZXI7XG4gICAgZ2V0QmIoKTtcbiAgICB2YXIgYXJlYSA9IGJiLncgKiBzY2FsZSAqIChiYi5oICogc2NhbGUpO1xuXG4gICAgaWYgKGFyZWEgPiBtYXhMYXllckFyZWEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IHNlbGYubWFrZUxheWVyKGJiLCBsdmwpO1xuXG4gICAgaWYgKGFmdGVyICE9IG51bGwpIHtcbiAgICAgIHZhciBpbmRleCA9IGxheWVycy5pbmRleE9mKGFmdGVyKSArIDE7XG4gICAgICBsYXllcnMuc3BsaWNlKGluZGV4LCAwLCBsYXllcik7XG4gICAgfSBlbHNlIGlmIChvcHRzLmluc2VydCA9PT0gdW5kZWZpbmVkIHx8IG9wdHMuaW5zZXJ0KSB7XG4gICAgICAvLyBubyBhZnRlciBzcGVjaWZpZWQgPT4gZmlyc3QgbGF5ZXIgbWFkZSBzbyBwdXQgYXQgc3RhcnRcbiAgICAgIGxheWVycy51bnNoaWZ0KGxheWVyKTtcbiAgICB9IC8vIGlmKCB0bXBMYXllcnMgKXtcbiAgICAvL3NlbGYucXVldWVMYXllciggbGF5ZXIgKTtcbiAgICAvLyB9XG5cblxuICAgIHJldHVybiBsYXllcjtcbiAgfTtcblxuICBpZiAoc2VsZi5za2lwcGluZyAmJiAhZmlyc3RHZXQpIHtcbiAgICAvLyBsb2coJ3NraXAgbGF5ZXJzJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gbG9nKCdkbyBsYXllcnMnKTtcblxuXG4gIHZhciBsYXllciA9IG51bGw7XG4gIHZhciBtYXhFbGVzUGVyTGF5ZXIgPSBlbGVzLmxlbmd0aCAvIGRlZk51bUxheWVycztcbiAgdmFyIGFsbG93TGF6eVF1ZXVlaW5nID0gICFmaXJzdEdldDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICB2YXIgcnMgPSBlbGUuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzID0gcnMuaW1nTGF5ZXJDYWNoZXMgfHwge307IC8vIGxvZygnbG9vayBhdCBlbGUnLCBlbGUuaWQoKSk7XG5cbiAgICB2YXIgZXhpc3RpbmdMYXllciA9IGNhY2hlc1tsdmxdO1xuXG4gICAgaWYgKGV4aXN0aW5nTGF5ZXIpIHtcbiAgICAgIC8vIHJldXNlIGxheWVyIGZvciBsYXRlciBlbGVzXG4gICAgICAvLyBsb2coJ3JldXNlIGxheWVyIGZvcicsIGVsZS5pZCgpKTtcbiAgICAgIGxheWVyID0gZXhpc3RpbmdMYXllcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIgfHwgbGF5ZXIuZWxlcy5sZW5ndGggPj0gbWF4RWxlc1BlckxheWVyIHx8ICFib3VuZGluZ0JveEluQm91bmRpbmdCb3gobGF5ZXIuYmIsIGVsZS5ib3VuZGluZ0JveCgpKSkge1xuICAgICAgLy8gbG9nKCdtYWtlIG5ldyBsYXllciBmb3IgZWxlICVzJywgZWxlLmlkKCkpO1xuICAgICAgbGF5ZXIgPSBtYWtlTGF5ZXIoe1xuICAgICAgICBpbnNlcnQ6IHRydWUsXG4gICAgICAgIGFmdGVyOiBsYXllclxuICAgICAgfSk7IC8vIGlmIG5vdyBsYXllciBjYW4gYmUgYnVpbHQgdGhlbiB3ZSBjYW4ndCB1c2UgbGF5ZXJzIGF0IHRoaXMgbGV2ZWxcblxuICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gLy8gbG9nKCduZXcgbGF5ZXIgd2l0aCBpZCAlcycsIGxheWVyLmlkKTtcblxuICAgIH1cblxuICAgIGlmICh0bXBMYXllcnMgfHwgYWxsb3dMYXp5UXVldWVpbmcpIHtcbiAgICAgIC8vIGxvZygncXVldWUgZWxlICVzIGluIGxheWVyICVzJywgZWxlLmlkKCksIGxheWVyLmlkKTtcbiAgICAgIHNlbGYucXVldWVMYXllcihsYXllciwgZWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9nKCdkcmF3IGVsZSAlcyBpbiBsYXllciAlcycsIGVsZS5pZCgpLCBsYXllci5pZCk7XG4gICAgICBzZWxmLmRyYXdFbGVJbkxheWVyKGxheWVyLCBlbGUsIGx2bCwgcHhSYXRpbyk7XG4gICAgfVxuXG4gICAgbGF5ZXIuZWxlcy5wdXNoKGVsZSk7XG4gICAgY2FjaGVzW2x2bF0gPSBsYXllcjtcbiAgfSAvLyBsb2coJy0tJyk7XG5cblxuICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgLy8gdGhlbiB3ZSBvbmx5IHF1ZXVlZCB0aGUgY3VycmVudCBsYXllcnNldCBhbmQgY2FuJ3QgZHJhdyBpdCB5ZXRcbiAgICByZXR1cm4gdG1wTGF5ZXJzO1xuICB9XG5cbiAgaWYgKGFsbG93TGF6eVF1ZXVlaW5nKSB7XG4gICAgLy8gbG9nKCdsYXp5IHF1ZXVlIGxldmVsJywgbHZsKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59OyAvLyBhIGxheWVyIG1heSB3YW50IHRvIHVzZSBhbiBlbGUgY2FjaGUgb2YgYSBoaWdoZXIgbGV2ZWwgdG8gYXZvaWQgYmx1cnJpbmVzc1xuLy8gc28gdGhlIGxheWVyIGxldmVsIG1pZ2h0IG5vdCBlcXVhbCB0aGUgZWxlIGxldmVsXG5cblxuTFRDcC5nZXRFbGVMZXZlbEZvckxheWVyTGV2ZWwgPSBmdW5jdGlvbiAobHZsLCBweFJhdGlvKSB7XG4gIHJldHVybiBsdmw7XG59O1xuXG5MVENwLmRyYXdFbGVJbkxheWVyID0gZnVuY3Rpb24gKGxheWVyLCBlbGUsIGx2bCwgcHhSYXRpbykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgdmFyIGNvbnRleHQgPSBsYXllci5jb250ZXh0O1xuICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcblxuICBpZiAoYmIudyA9PT0gMCB8fCBiYi5oID09PSAwIHx8ICFlbGUudmlzaWJsZSgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbHZsID0gc2VsZi5nZXRFbGVMZXZlbEZvckxheWVyTGV2ZWwobHZsLCBweFJhdGlvKTtcblxuICB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICB9XG5cbiAge1xuICAgIHIuZHJhd0NhY2hlZEVsZW1lbnQoY29udGV4dCwgZWxlLCBudWxsLCBudWxsLCBsdmwsIHVzZUhpZ2hRdWFsaXR5RWxlVHhyUmVxcyk7XG4gIH1cblxuICB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgdHJ1ZSk7XG4gIH1cbn07XG5cbkxUQ3AubGV2ZWxJc0NvbXBsZXRlID0gZnVuY3Rpb24gKGx2bCwgZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBsYXllcnMgPSBzZWxmLmxheWVyc0J5TGV2ZWxbbHZsXTtcblxuICBpZiAoIWxheWVycyB8fCBsYXllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG51bUVsZXNJbkxheWVycyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07IC8vIGlmIHRoZXJlIGFyZSBhbnkgZWxlcyBuZWVkZWQgdG8gYmUgZHJhd24geWV0LCB0aGUgbGV2ZWwgaXMgbm90IGNvbXBsZXRlXG5cbiAgICBpZiAobGF5ZXIucmVxcyA+IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGlmIHRoZSBsYXllciBpcyBpbnZhbGlkLCB0aGUgbGV2ZWwgaXMgbm90IGNvbXBsZXRlXG5cblxuICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbnVtRWxlc0luTGF5ZXJzICs9IGxheWVyLmVsZXMubGVuZ3RoO1xuICB9IC8vIHdlIHNob3VsZCBoYXZlIGV4YWN0bHkgdGhlIG51bWJlciBvZiBlbGVzIHBhc3NlZCBpbiB0byBiZSBjb21wbGV0ZVxuXG5cbiAgaWYgKG51bUVsZXNJbkxheWVycyAhPT0gZWxlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkxUQ3AudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcgPSBmdW5jdGlvbiAobHZsLCBlbGVzKSB7XG4gIHZhciBsYXllcnMgPSB0aGlzLmxheWVyc0J5TGV2ZWxbbHZsXTtcblxuICBpZiAoIWxheWVycykge1xuICAgIHJldHVybjtcbiAgfSAvLyBpZiBpbiBhIGxheWVyIHRoZSBlbGVzIGFyZSBub3QgaW4gdGhlIHNhbWUgb3JkZXIsIHRoZW4gdGhlIGxheWVyIGlzIGludmFsaWRcbiAgLy8gKGkuZS4gdGhlcmUgaXMgYW4gZWxlIGluIGJldHdlZW4gdGhlIGVsZXMgaW4gdGhlIGxheWVyKVxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgdmFyIG9mZnNldCA9IC0xOyAvLyBmaW5kIHRoZSBvZmZzZXRcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGxheWVyLmVsZXNbMF0gPT09IGVsZXNbal0pIHtcbiAgICAgICAgb2Zmc2V0ID0gajtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgIC8vIHRoZW4gdGhlIGxheWVyIGhhcyBub25leGlzdGFudCBlbGVtZW50cyBhbmQgaXMgaW52YWxpZFxuICAgICAgdGhpcy5pbnZhbGlkYXRlTGF5ZXIobGF5ZXIpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyB0aGUgZWxlcyBpbiB0aGUgbGF5ZXIgbXVzdCBiZSBpbiB0aGUgc2FtZSBjb250aW51b3VzIG9yZGVyLCBlbHNlIHRoZSBsYXllciBpcyBpbnZhbGlkXG5cblxuICAgIHZhciBvID0gb2Zmc2V0O1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsYXllci5lbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAobGF5ZXIuZWxlc1tqXSAhPT0gZWxlc1tvICsgal0pIHtcbiAgICAgICAgLy8gbG9nKCdpbnZhbGlkYXRlIGJhc2VkIG9uIG9yZGVyaW5nJywgbGF5ZXIuaWQpO1xuICAgICAgICB0aGlzLmludmFsaWRhdGVMYXllcihsYXllcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTFRDcC51cGRhdGVFbGVtZW50c0luTGF5ZXJzID0gZnVuY3Rpb24gKGVsZXMsIHVwZGF0ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBpc0VsZXMgPSBlbGVtZW50KGVsZXNbMF0pOyAvLyBjb2xsZWN0IHVkcGF0ZWQgZWxlbWVudHMgKGNhc2NhZGVkIGZyb20gdGhlIGxheWVycykgYW5kIHVwZGF0ZSBlYWNoXG4gIC8vIGxheWVyIGl0c2VsZiBhbG9uZyB0aGUgd2F5XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJlcSA9IGlzRWxlcyA/IG51bGwgOiBlbGVzW2ldO1xuICAgIHZhciBlbGUgPSBpc0VsZXMgPyBlbGVzW2ldIDogZWxlc1tpXS5lbGU7XG4gICAgdmFyIHJzID0gZWxlLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHZhciBjYWNoZXMgPSBycy5pbWdMYXllckNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgZm9yICh2YXIgbCA9IG1pbkx2bCQxOyBsIDw9IG1heEx2bCQxOyBsKyspIHtcbiAgICAgIHZhciBsYXllciA9IGNhY2hlc1tsXTtcblxuICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gaWYgdXBkYXRlIGlzIGEgcmVxdWVzdCBmcm9tIHRoZSBlbGUgY2FjaGUsIHRoZW4gaXQgYWZmZWN0cyBvbmx5XG4gICAgICAvLyB0aGUgbWF0Y2hpbmcgbGV2ZWxcblxuXG4gICAgICBpZiAocmVxICYmIHNlbGYuZ2V0RWxlTGV2ZWxGb3JMYXllckxldmVsKGxheWVyLmxldmVsKSAhPT0gcmVxLmxldmVsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUobGF5ZXIsIGVsZSwgcmVxKTtcbiAgICB9XG4gIH1cbn07XG5cbkxUQ3AuaGF2ZUxheWVycyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgaGF2ZUxheWVycyA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGwgPSBtaW5MdmwkMTsgbCA8PSBtYXhMdmwkMTsgbCsrKSB7XG4gICAgdmFyIGxheWVycyA9IHNlbGYubGF5ZXJzQnlMZXZlbFtsXTtcblxuICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGhhdmVMYXllcnMgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhdmVMYXllcnM7XG59O1xuXG5MVENwLmludmFsaWRhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBpZiAoZWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKTsgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lIGZyb20gZWxlcycpO1xuXG4gIGlmIChlbGVzLmxlbmd0aCA9PT0gMCB8fCAhc2VsZi5oYXZlTGF5ZXJzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmLnVwZGF0ZUVsZW1lbnRzSW5MYXllcnMoZWxlcywgZnVuY3Rpb24gaW52YWxBc3NvY0xheWVycyhsYXllciwgZWxlLCByZXEpIHtcbiAgICBzZWxmLmludmFsaWRhdGVMYXllcihsYXllcik7XG4gIH0pO1xufTtcblxuTFRDcC5pbnZhbGlkYXRlTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXIpIHtcbiAgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lJyk7XG4gIHRoaXMubGFzdEludmFsaWRhdGlvblRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIHNhdmUgY3ljbGVzXG5cblxuICB2YXIgbHZsID0gbGF5ZXIubGV2ZWw7XG4gIHZhciBlbGVzID0gbGF5ZXIuZWxlcztcbiAgdmFyIGxheWVycyA9IHRoaXMubGF5ZXJzQnlMZXZlbFtsdmxdOyAvLyBsb2coJ2ludmFsaWRhdGUgbGF5ZXInLCBsYXllci5pZCApO1xuXG4gIHJlbW92ZUZyb21BcnJheShsYXllcnMsIGxheWVyKTsgLy8gbGF5ZXIuZWxlcyA9IFtdO1xuXG4gIGxheWVyLmVsZXNRdWV1ZSA9IFtdO1xuICBsYXllci5pbnZhbGlkID0gdHJ1ZTtcblxuICBpZiAobGF5ZXIucmVwbGFjZW1lbnQpIHtcbiAgICBsYXllci5yZXBsYWNlbWVudC5pbnZhbGlkID0gdHJ1ZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjYWNoZXMgPSBlbGVzW2ldLl9wcml2YXRlLnJzY3JhdGNoLmltZ0xheWVyQ2FjaGVzO1xuXG4gICAgaWYgKGNhY2hlcykge1xuICAgICAgY2FjaGVzW2x2bF0gPSBudWxsO1xuICAgIH1cbiAgfVxufTtcblxuTFRDcC5yZWZpbmVFbGVtZW50VGV4dHVyZXMgPSBmdW5jdGlvbiAoZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7IC8vIGxvZygncmVmaW5lJywgZWxlcy5sZW5ndGgpO1xuXG4gIHNlbGYudXBkYXRlRWxlbWVudHNJbkxheWVycyhlbGVzLCBmdW5jdGlvbiByZWZpbmVFYWNoRWxlKGxheWVyLCBlbGUsIHJlcSkge1xuICAgIHZhciByTHlyID0gbGF5ZXIucmVwbGFjZW1lbnQ7XG5cbiAgICBpZiAoIXJMeXIpIHtcbiAgICAgIHJMeXIgPSBsYXllci5yZXBsYWNlbWVudCA9IHNlbGYubWFrZUxheWVyKGxheWVyLmJiLCBsYXllci5sZXZlbCk7XG4gICAgICByTHlyLnJlcGxhY2VzID0gbGF5ZXI7XG4gICAgICByTHlyLmVsZXMgPSBsYXllci5lbGVzOyAvLyBsb2coJ21ha2UgcmVwbGFjZW1lbnQgbGF5ZXIgJXMgZm9yICVzIHdpdGggbGV2ZWwgJXMnLCByTHlyLmlkLCBsYXllci5pZCwgckx5ci5sZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKCFyTHlyLnJlcXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgckx5ci5lbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbGYucXVldWVMYXllcihyTHlyLCByTHlyLmVsZXNbaV0pO1xuICAgICAgfSAvLyBsb2coJ3F1ZXVlIHJlcGxhY2VtZW50IGxheWVyIHJlZmluZW1lbnQnLCByTHlyLmlkKTtcblxuICAgIH1cbiAgfSk7XG59O1xuXG5MVENwLmVucXVldWVFbGVtZW50UmVmaW5lbWVudCA9IGZ1bmN0aW9uIChlbGUpIHtcblxuICB0aGlzLmVsZVR4ckRlcXMubWVyZ2UoZWxlKTtcbiAgdGhpcy5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50KCk7XG59O1xuXG5MVENwLnF1ZXVlTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXIsIGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBxID0gc2VsZi5sYXllcnNRdWV1ZTtcbiAgdmFyIGVsZXNRID0gbGF5ZXIuZWxlc1F1ZXVlO1xuICB2YXIgaGFzSWQgPSBlbGVzUS5oYXNJZCA9IGVsZXNRLmhhc0lkIHx8IHt9OyAvLyBpZiBhIGxheWVyIGlzIGdvaW5nIHRvIGJlIHJlcGxhY2VkLCBxdWV1aW5nIGlzIGEgd2FzdGUgb2YgdGltZVxuXG4gIGlmIChsYXllci5yZXBsYWNlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChlbGUpIHtcbiAgICBpZiAoaGFzSWRbZWxlLmlkKCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlc1EucHVzaChlbGUpO1xuICAgIGhhc0lkW2VsZS5pZCgpXSA9IHRydWU7XG4gIH1cblxuICBpZiAobGF5ZXIucmVxcykge1xuICAgIGxheWVyLnJlcXMrKztcbiAgICBxLnVwZGF0ZUl0ZW0obGF5ZXIpO1xuICB9IGVsc2Uge1xuICAgIGxheWVyLnJlcXMgPSAxO1xuICAgIHEucHVzaChsYXllcik7XG4gIH1cbn07XG5cbkxUQ3AuZGVxdWV1ZSA9IGZ1bmN0aW9uIChweFJhdGlvKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmxheWVyc1F1ZXVlO1xuICB2YXIgZGVxZCA9IFtdO1xuICB2YXIgZWxlRGVxcyA9IDA7XG5cbiAgd2hpbGUgKGVsZURlcXMgPCBtYXhEZXFTaXplJDEpIHtcbiAgICBpZiAocS5zaXplKCkgPT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IHEucGVlaygpOyAvLyBpZiBhIGxheWVyIGhhcyBiZWVuIG9yIHdpbGwgYmUgcmVwbGFjZWQsIHRoZW4gZG9uJ3Qgd2FzdGUgdGltZSB3aXRoIGl0XG5cbiAgICBpZiAobGF5ZXIucmVwbGFjZW1lbnQpIHtcbiAgICAgIC8vIGxvZygnbGF5ZXIgJXMgaW4gcXVldWUgc2tpcHBlZCBiL2MgaXQgYWxyZWFkeSBoYXMgYSByZXBsYWNlbWVudCcsIGxheWVyLmlkKTtcbiAgICAgIHEucG9wKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIGlmIHRoaXMgaXMgYSByZXBsYWNlbWVudCBsYXllciB0aGF0IGhhcyBiZWVuIHN1cGVyY2VkZWQsIHRoZW4gZm9yZ2V0IGl0XG5cblxuICAgIGlmIChsYXllci5yZXBsYWNlcyAmJiBsYXllciAhPT0gbGF5ZXIucmVwbGFjZXMucmVwbGFjZW1lbnQpIHtcbiAgICAgIC8vIGxvZygnbGF5ZXIgaXMgbm8gbG9uZ2VyIHRoZSBtb3N0IHVwdG9kYXRlIHJlcGxhY2VtZW50OyBkZXF1ZXVlZCcsIGxheWVyLmlkKVxuICAgICAgcS5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyICVzIGlzIGludmFsaWQ7IGRlcXVldWVkJywgbGF5ZXIuaWQpO1xuICAgICAgcS5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBlbGUgPSBsYXllci5lbGVzUXVldWUuc2hpZnQoKTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIC8vIGxvZygnZGVxdWV1ZSBsYXllciAlcycsIGxheWVyLmlkKTtcbiAgICAgIHNlbGYuZHJhd0VsZUluTGF5ZXIobGF5ZXIsIGVsZSwgbGF5ZXIubGV2ZWwsIHB4UmF0aW8pO1xuICAgICAgZWxlRGVxcysrO1xuICAgIH1cblxuICAgIGlmIChkZXFkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gd2UgbmVlZCBvbmx5IG9uZSBlbnRyeSBpbiBkZXFkIHRvIHF1ZXVlIHJlZHJhd2luZyBldGNcbiAgICAgIGRlcWQucHVzaCh0cnVlKTtcbiAgICB9IC8vIGlmIHRoZSBsYXllciBoYXMgYWxsIGl0cyBlbGVzIGRvbmUsIHRoZW4gcmVtb3ZlIGZyb20gdGhlIHF1ZXVlXG5cblxuICAgIGlmIChsYXllci5lbGVzUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBxLnBvcCgpO1xuICAgICAgbGF5ZXIucmVxcyA9IDA7IC8vIGxvZygnZGVxdWV1ZSBvZiBsYXllciAlcyBjb21wbGV0ZScsIGxheWVyLmlkKTtcbiAgICAgIC8vIHdoZW4gYSByZXBsYWNlbWVudCBsYXllciBpcyBkZXF1ZXVlZCwgaXQgcmVwbGFjZXMgdGhlIG9sZCBsYXllciBpbiB0aGUgbGV2ZWxcblxuICAgICAgaWYgKGxheWVyLnJlcGxhY2VzKSB7XG4gICAgICAgIHNlbGYuYXBwbHlMYXllclJlcGxhY2VtZW50KGxheWVyKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5yZXF1ZXN0UmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcWQ7XG59O1xuXG5MVENwLmFwcGx5TGF5ZXJSZXBsYWNlbWVudCA9IGZ1bmN0aW9uIChsYXllcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBsYXllcnNJbkxldmVsID0gc2VsZi5sYXllcnNCeUxldmVsW2xheWVyLmxldmVsXTtcbiAgdmFyIHJlcGxhY2VkID0gbGF5ZXIucmVwbGFjZXM7XG4gIHZhciBpbmRleCA9IGxheWVyc0luTGV2ZWwuaW5kZXhPZihyZXBsYWNlZCk7IC8vIGlmIHRoZSByZXBsYWNlZCBsYXllciBpcyBub3QgaW4gdGhlIGFjdGl2ZSBsaXN0IGZvciB0aGUgbGV2ZWwsIHRoZW4gcmVwbGFjaW5nXG4gIC8vIHJlZnMgd291bGQgYmUgYSBtaXN0YWtlIChpLmUuIG92ZXJ3cml0aW5nIHRoZSB0cnVlIGFjdGl2ZSBsYXllcilcblxuICBpZiAoaW5kZXggPCAwIHx8IHJlcGxhY2VkLmludmFsaWQpIHtcbiAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyIHdvdWxkIGhhdmUgbm8gZWZmZWN0JywgbGF5ZXIuaWQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxheWVyc0luTGV2ZWxbaW5kZXhdID0gbGF5ZXI7IC8vIHJlcGxhY2UgbGV2ZWwgcmVmXG4gIC8vIHJlcGxhY2UgcmVmcyBpbiBlbGVzXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllci5lbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9wID0gbGF5ZXIuZWxlc1tpXS5fcHJpdmF0ZTtcbiAgICB2YXIgY2FjaGUgPSBfcC5pbWdMYXllckNhY2hlcyA9IF9wLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICBjYWNoZVtsYXllci5sZXZlbF0gPSBsYXllcjtcbiAgICB9XG4gIH0gLy8gbG9nKCdhcHBseSByZXBsYWNlbWVudCBsYXllciAlcyBvdmVyICVzJywgbGF5ZXIuaWQsIHJlcGxhY2VkLmlkKTtcblxuXG4gIHNlbGYucmVxdWVzdFJlZHJhdygpO1xufTtcblxuTFRDcC5yZXF1ZXN0UmVkcmF3ID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICByLnJlZHJhdygpO1xufSwgMTAwKTtcbkxUQ3Auc2V0dXBEZXF1ZXVlaW5nID0gZGVmcy5zZXR1cERlcXVldWVpbmcoe1xuICBkZXFSZWRyYXdUaHJlc2hvbGQ6IGRlcVJlZHJhd1RocmVzaG9sZCQxLFxuICBkZXFDb3N0OiBkZXFDb3N0JDEsXG4gIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QkMSxcbiAgZGVxTm9EcmF3Q29zdDogZGVxTm9EcmF3Q29zdCQxLFxuICBkZXFGYXN0Q29zdDogZGVxRmFzdENvc3QkMSxcbiAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbykge1xuICAgIHJldHVybiBzZWxmLmRlcXVldWUocHhSYXRpbyk7XG4gIH0sXG4gIG9uRGVxZDogbm9vcCxcbiAgc2hvdWxkUmVkcmF3OiB0cnVlaWZ5LFxuICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMubHlyVHhyRGVxO1xuICB9XG59KTtcblxudmFyIENScCA9IHt9O1xudmFyIGltcGw7XG5cbmZ1bmN0aW9uIHBvbHlnb24oY29udGV4dCwgcG9pbnRzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuICAgIGNvbnRleHQubGluZVRvKHB0LngsIHB0LnkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyaWFuZ2xlQmFja2N1cnZlKGNvbnRleHQsIHBvaW50cywgY29udHJvbFBvaW50KSB7XG4gIHZhciBmaXJzdFB0O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGZpcnN0UHQgPSBwdDtcbiAgICB9XG5cbiAgICBjb250ZXh0LmxpbmVUbyhwdC54LCBwdC55KTtcbiAgfVxuXG4gIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhjb250cm9sUG9pbnQueCwgY29udHJvbFBvaW50LnksIGZpcnN0UHQueCwgZmlyc3RQdC55KTtcbn1cblxuZnVuY3Rpb24gdHJpYW5nbGVUZWUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHRlZVBvaW50cykge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgdmFyIHRyaVB0cyA9IHRyaWFuZ2xlUG9pbnRzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJpUHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gdHJpUHRzW2ldO1xuICAgIGNvbnRleHQubGluZVRvKHB0LngsIHB0LnkpO1xuICB9XG5cbiAgdmFyIHRlZVB0cyA9IHRlZVBvaW50cztcbiAgdmFyIGZpcnN0VGVlUHQgPSB0ZWVQb2ludHNbMF07XG4gIGNvbnRleHQubW92ZVRvKGZpcnN0VGVlUHQueCwgZmlyc3RUZWVQdC55KTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHRlZVB0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwdCA9IHRlZVB0c1tpXTtcbiAgICBjb250ZXh0LmxpbmVUbyhwdC54LCBwdC55KTtcbiAgfVxuXG4gIGlmIChjb250ZXh0LmNsb3NlUGF0aCkge1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2lyY2xlVHJpYW5nbGUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHJ4LCByeSwgcikge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xuICB2YXIgdHJpUHRzID0gdHJpYW5nbGVQb2ludHM7XG4gIHZhciBmaXJzdFRyUHQgPSB0cmlQdHNbMF07XG4gIGNvbnRleHQubW92ZVRvKGZpcnN0VHJQdC54LCBmaXJzdFRyUHQueSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmlQdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHQgPSB0cmlQdHNbaV07XG4gICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gIH1cblxuICBpZiAoY29udGV4dC5jbG9zZVBhdGgpIHtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNpcmNsZShjb250ZXh0LCByeCwgcnksIHIpIHtcbiAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xufVxuXG5DUnAuYXJyb3dTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gKGltcGwgfHwgKGltcGwgPSB7XG4gICAgJ3BvbHlnb24nOiBwb2x5Z29uLFxuICAgICd0cmlhbmdsZS1iYWNrY3VydmUnOiB0cmlhbmdsZUJhY2tjdXJ2ZSxcbiAgICAndHJpYW5nbGUtdGVlJzogdHJpYW5nbGVUZWUsXG4gICAgJ2NpcmNsZS10cmlhbmdsZSc6IGNpcmNsZVRyaWFuZ2xlLFxuICAgICd0cmlhbmdsZS1jcm9zcyc6IHRyaWFuZ2xlVGVlLFxuICAgICdjaXJjbGUnOiBjaXJjbGVcbiAgfSkpW25hbWVdO1xufTtcblxudmFyIENScCQxID0ge307XG5cbkNScCQxLmRyYXdFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICByLmRyYXdOb2RlKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpO1xuICB9IGVsc2Uge1xuICAgIHIuZHJhd0VkZ2UoY29udGV4dCwgZWxlLCBzaGlmdFRvT3JpZ2luV2l0aEJiLCBzaG93TGFiZWwsIHNob3dPdmVybGF5LCBzaG93T3BhY2l0eSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdFbGVtZW50T3ZlcmxheSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICByLmRyYXdOb2RlT3ZlcmxheShjb250ZXh0LCBlbGUpO1xuICB9IGVsc2Uge1xuICAgIHIuZHJhd0VkZ2VPdmVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdFbGVtZW50VW5kZXJsYXkgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlKSB7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgci5kcmF3Tm9kZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH0gZWxzZSB7XG4gICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbiA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGVsZVR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0Um90YXRpb24sIGdldE9wYWNpdHkpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgYmIgPSBlbGVUeHJDYWNoZS5nZXRCb3VuZGluZ0JveChlbGUpO1xuXG4gIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWdub3JlIHplcm8gc2l6ZSBjYXNlXG5cblxuICB2YXIgZWxlQ2FjaGUgPSBlbGVUeHJDYWNoZS5nZXRFbGVtZW50KGVsZSwgYmIsIHB4UmF0aW8sIGx2bCwgcmVhc29uKTtcblxuICBpZiAoZWxlQ2FjaGUgIT0gbnVsbCkge1xuICAgIHZhciBvcGFjaXR5ID0gZ2V0T3BhY2l0eShyLCBlbGUpO1xuXG4gICAgaWYgKG9wYWNpdHkgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGhldGEgPSBnZXRSb3RhdGlvbihyLCBlbGUpO1xuICAgIHZhciB4MSA9IGJiLngxLFxuICAgICAgICB5MSA9IGJiLnkxLFxuICAgICAgICB3ID0gYmIudyxcbiAgICAgICAgaCA9IGJiLmg7XG4gICAgdmFyIHgsIHksIHN4LCBzeSwgc21vb3RoO1xuXG4gICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICB2YXIgcm90UHQgPSBlbGVUeHJDYWNoZS5nZXRSb3RhdGlvblBvaW50KGVsZSk7XG4gICAgICBzeCA9IHJvdFB0Lng7XG4gICAgICBzeSA9IHJvdFB0Lnk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShzeCwgc3kpO1xuICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgc21vb3RoID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG5cbiAgICAgIGlmICghc21vb3RoKSB7XG4gICAgICAgIHIuc2V0SW1nU21vb3RoaW5nKGNvbnRleHQsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2ZmID0gZWxlVHhyQ2FjaGUuZ2V0Um90YXRpb25PZmZzZXQoZWxlKTtcbiAgICAgIHggPSBvZmYueDtcbiAgICAgIHkgPSBvZmYueTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgxO1xuICAgICAgeSA9IHkxO1xuICAgIH1cblxuICAgIHZhciBvbGRHbG9iYWxBbHBoYTtcblxuICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICBvbGRHbG9iYWxBbHBoYSA9IGNvbnRleHQuZ2xvYmFsQWxwaGE7XG4gICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGEgKiBvcGFjaXR5O1xuICAgIH1cblxuICAgIGNvbnRleHQuZHJhd0ltYWdlKGVsZUNhY2hlLnRleHR1cmUuY2FudmFzLCBlbGVDYWNoZS54LCAwLCBlbGVDYWNoZS53aWR0aCwgZWxlQ2FjaGUuaGVpZ2h0LCB4LCB5LCB3LCBoKTtcblxuICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGE7XG4gICAgfVxuXG4gICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICBjb250ZXh0LnJvdGF0ZSgtdGhldGEpO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoLXN4LCAtc3kpO1xuXG4gICAgICBpZiAoIXNtb290aCkge1xuICAgICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGVsZVR4ckNhY2hlLmRyYXdFbGVtZW50KGNvbnRleHQsIGVsZSk7IC8vIGRpcmVjdCBkcmF3IGZhbGxiYWNrXG4gIH1cbn07XG5cbnZhciBnZXRaZXJvUm90YXRpb24gPSBmdW5jdGlvbiBnZXRaZXJvUm90YXRpb24oKSB7XG4gIHJldHVybiAwO1xufTtcblxudmFyIGdldExhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICByZXR1cm4gci5nZXRUZXh0QW5nbGUoZWxlLCBudWxsKTtcbn07XG5cbnZhciBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvbihyLCBlbGUpIHtcbiAgcmV0dXJuIHIuZ2V0VGV4dEFuZ2xlKGVsZSwgJ3NvdXJjZScpO1xufTtcblxudmFyIGdldFRhcmdldExhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICByZXR1cm4gci5nZXRUZXh0QW5nbGUoZWxlLCAndGFyZ2V0Jyk7XG59O1xuXG52YXIgZ2V0T3BhY2l0eSA9IGZ1bmN0aW9uIGdldE9wYWNpdHkociwgZWxlKSB7XG4gIHJldHVybiBlbGUuZWZmZWN0aXZlT3BhY2l0eSgpO1xufTtcblxudmFyIGdldFRleHRPcGFjaXR5ID0gZnVuY3Rpb24gZ2V0VGV4dE9wYWNpdHkoZSwgZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCd0ZXh0LW9wYWNpdHknKS5wZlZhbHVlICogZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKTtcbn07XG5cbkNScCQxLmRyYXdDYWNoZWRFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50LCBsdmwsIHJlcXVlc3RIaWdoUXVhbGl0eSkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBfciRkYXRhID0gci5kYXRhLFxuICAgICAgZWxlVHhyQ2FjaGUgPSBfciRkYXRhLmVsZVR4ckNhY2hlLFxuICAgICAgbGJsVHhyQ2FjaGUgPSBfciRkYXRhLmxibFR4ckNhY2hlLFxuICAgICAgc2xiVHhyQ2FjaGUgPSBfciRkYXRhLnNsYlR4ckNhY2hlLFxuICAgICAgdGxiVHhyQ2FjaGUgPSBfciRkYXRhLnRsYlR4ckNhY2hlO1xuICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcbiAgdmFyIHJlYXNvbiA9IHJlcXVlc3RIaWdoUXVhbGl0eSA9PT0gdHJ1ZSA/IGVsZVR4ckNhY2hlLnJlYXNvbnMuaGlnaFF1YWxpdHkgOiBudWxsO1xuXG4gIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDAgfHwgIWVsZS52aXNpYmxlKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWV4dGVudCB8fCBib3VuZGluZ0JveGVzSW50ZXJzZWN0KGJiLCBleHRlbnQpKSB7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcblxuICAgIHZhciBiYWRMaW5lID0gZWxlLmVsZW1lbnQoKS5fcHJpdmF0ZS5yc2NyYXRjaC5iYWRMaW5lO1xuXG4gICAgci5kcmF3RWxlbWVudFVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCBlbGVUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldFplcm9Sb3RhdGlvbiwgZ2V0T3BhY2l0eSk7XG5cbiAgICBpZiAoIWlzRWRnZSB8fCAhYmFkTGluZSkge1xuICAgICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCBsYmxUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldExhYmVsUm90YXRpb24sIGdldFRleHRPcGFjaXR5KTtcbiAgICB9XG5cbiAgICBpZiAoaXNFZGdlICYmICFiYWRMaW5lKSB7XG4gICAgICByLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbihjb250ZXh0LCBlbGUsIHNsYlR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0U291cmNlTGFiZWxSb3RhdGlvbiwgZ2V0VGV4dE9wYWNpdHkpO1xuICAgICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCB0bGJUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldFRhcmdldExhYmVsUm90YXRpb24sIGdldFRleHRPcGFjaXR5KTtcbiAgICB9XG5cbiAgICByLmRyYXdFbGVtZW50T3ZlcmxheShjb250ZXh0LCBlbGUpO1xuICB9XG59O1xuXG5DUnAkMS5kcmF3RWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcykge1xuICB2YXIgciA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgci5kcmF3RWxlbWVudChjb250ZXh0LCBlbGUpO1xuICB9XG59O1xuXG5DUnAkMS5kcmF3Q2FjaGVkRWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcywgcHhSYXRpbywgZXh0ZW50KSB7XG4gIHZhciByID0gdGhpcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICByLmRyYXdDYWNoZWRFbGVtZW50KGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50KTtcbiAgfVxufTtcblxuQ1JwJDEuZHJhd0NhY2hlZE5vZGVzID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZXMsIHB4UmF0aW8sIGV4dGVudCkge1xuICB2YXIgciA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgci5kcmF3Q2FjaGVkRWxlbWVudChjb250ZXh0LCBlbGUsIHB4UmF0aW8sIGV4dGVudCk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdMYXllcmVkRWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcywgcHhSYXRpbywgZXh0ZW50KSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIGxheWVycyA9IHIuZGF0YS5seXJUeHJDYWNoZS5nZXRMYXllcnMoZWxlcywgcHhSYXRpbyk7XG5cbiAgaWYgKGxheWVycykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgICB2YXIgYmIgPSBsYXllci5iYjtcblxuICAgICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kcmF3SW1hZ2UobGF5ZXIuY2FudmFzLCBiYi54MSwgYmIueTEsIGJiLncsIGJiLmgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBmYWxsIGJhY2sgb24gcGxhaW4gY2FjaGluZyBpZiBubyBsYXllcnNcbiAgICByLmRyYXdDYWNoZWRFbGVtZW50cyhjb250ZXh0LCBlbGVzLCBweFJhdGlvLCBleHRlbnQpO1xuICB9XG59O1xuXG4vKiBnbG9iYWwgUGF0aDJEICovXG52YXIgQ1JwJDIgPSB7fTtcblxuQ1JwJDIuZHJhd0VkZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgZWRnZSwgc2hpZnRUb09yaWdpbldpdGhCYikge1xuICB2YXIgZHJhd0xhYmVsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB0cnVlO1xuICB2YXIgc2hvdWxkRHJhd092ZXJsYXkgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHRydWU7XG4gIHZhciBzaG91bGREcmF3T3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogdHJ1ZTtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gIGlmIChzaG91bGREcmF3T3BhY2l0eSAmJiAhZWRnZS52aXNpYmxlKCkpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWYgYmV6aWVyIGN0cmwgcHRzIGNhbiBub3QgYmUgY2FsY3VsYXRlZCwgdGhlbiBkaWVcblxuXG4gIGlmIChycy5iYWRMaW5lIHx8IHJzLmFsbHB0cyA9PSBudWxsIHx8IGlzTmFOKHJzLmFsbHB0c1swXSkpIHtcbiAgICAvLyBpc05hTiBpbiBjYXNlIGVkZ2UgaXMgaW1wb3NzaWJsZSBhbmQgYnJvd3NlciBidWdzIChlLmcuIHNhZmFyaSlcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYmI7XG5cbiAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICBiYiA9IHNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICB9XG5cbiAgdmFyIG9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdvcGFjaXR5JykudmFsdWUgOiAxO1xuICB2YXIgbGluZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdsaW5lLW9wYWNpdHknKS52YWx1ZSA6IDE7XG4gIHZhciBjdXJ2ZVN0eWxlID0gZWRnZS5wc3R5bGUoJ2N1cnZlLXN0eWxlJykudmFsdWU7XG4gIHZhciBsaW5lU3R5bGUgPSBlZGdlLnBzdHlsZSgnbGluZS1zdHlsZScpLnZhbHVlO1xuICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGxpbmVDYXAgPSBlZGdlLnBzdHlsZSgnbGluZS1jYXAnKS52YWx1ZTtcbiAgdmFyIGVmZmVjdGl2ZUxpbmVPcGFjaXR5ID0gb3BhY2l0eSAqIGxpbmVPcGFjaXR5OyAvLyBzZXBhcmF0ZSBhcnJvdyBvcGFjaXR5IHdvdWxkIHJlcXVpcmUgYXJyb3ctb3BhY2l0eSBwcm9wZXJ0eVxuXG4gIHZhciBlZmZlY3RpdmVBcnJvd09wYWNpdHkgPSBvcGFjaXR5ICogbGluZU9wYWNpdHk7XG5cbiAgdmFyIGRyYXdMaW5lID0gZnVuY3Rpb24gZHJhd0xpbmUoKSB7XG4gICAgdmFyIHN0cm9rZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVmZmVjdGl2ZUxpbmVPcGFjaXR5O1xuXG4gICAgaWYgKGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScpIHtcbiAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICByLmRyYXdFZGdlVHJpYW5nbGVQYXRoKGVkZ2UsIGNvbnRleHQsIHJzLmFsbHB0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQubGluZVdpZHRoID0gZWRnZVdpZHRoO1xuICAgICAgY29udGV4dC5saW5lQ2FwID0gbGluZUNhcDtcbiAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICByLmRyYXdFZGdlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMsIGxpbmVTdHlsZSk7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSAnYnV0dCc7IC8vIHJlc2V0IGZvciBvdGhlciBkcmF3aW5nIGZ1bmN0aW9uc1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd092ZXJsYXkgPSBmdW5jdGlvbiBkcmF3T3ZlcmxheSgpIHtcbiAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5kcmF3RWRnZU92ZXJsYXkoY29udGV4dCwgZWRnZSk7XG4gIH07XG5cbiAgdmFyIGRyYXdVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdVbmRlcmxheSgpIHtcbiAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVkZ2UpO1xuICB9O1xuXG4gIHZhciBkcmF3QXJyb3dzID0gZnVuY3Rpb24gZHJhd0Fycm93cygpIHtcbiAgICB2YXIgYXJyb3dPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlZmZlY3RpdmVBcnJvd09wYWNpdHk7XG4gICAgci5kcmF3QXJyb3doZWFkcyhjb250ZXh0LCBlZGdlLCBhcnJvd09wYWNpdHkpO1xuICB9O1xuXG4gIHZhciBkcmF3VGV4dCA9IGZ1bmN0aW9uIGRyYXdUZXh0KCkge1xuICAgIHIuZHJhd0VsZW1lbnRUZXh0KGNvbnRleHQsIGVkZ2UsIG51bGwsIGRyYXdMYWJlbCk7XG4gIH07XG5cbiAgY29udGV4dC5saW5lSm9pbiA9ICdyb3VuZCc7XG4gIHZhciBnaG9zdCA9IGVkZ2UucHN0eWxlKCdnaG9zdCcpLnZhbHVlID09PSAneWVzJztcblxuICBpZiAoZ2hvc3QpIHtcbiAgICB2YXIgZ3ggPSBlZGdlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXgnKS5wZlZhbHVlO1xuICAgIHZhciBneSA9IGVkZ2UucHN0eWxlKCdnaG9zdC1vZmZzZXQteScpLnBmVmFsdWU7XG4gICAgdmFyIGdob3N0T3BhY2l0eSA9IGVkZ2UucHN0eWxlKCdnaG9zdC1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIGVmZmVjdGl2ZUdob3N0T3BhY2l0eSA9IGVmZmVjdGl2ZUxpbmVPcGFjaXR5ICogZ2hvc3RPcGFjaXR5O1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGd4LCBneSk7XG4gICAgZHJhd0xpbmUoZWZmZWN0aXZlR2hvc3RPcGFjaXR5KTtcbiAgICBkcmF3QXJyb3dzKGVmZmVjdGl2ZUdob3N0T3BhY2l0eSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWd4LCAtZ3kpO1xuICB9XG5cbiAgZHJhd1VuZGVybGF5KCk7XG4gIGRyYXdMaW5lKCk7XG4gIGRyYXdBcnJvd3MoKTtcbiAgZHJhd092ZXJsYXkoKTtcbiAgZHJhd1RleHQoKTtcblxuICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gIH1cbn07XG5cbnZhciBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdFZGdlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlJyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UpIHtcbiAgICBpZiAoIWVkZ2UudmlzaWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG9wYWNpdHkgPSBlZGdlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG5cbiAgICBpZiAob3BhY2l0eSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgdXNlUGF0aHMgPSByLnVzZVBhdGhzKCk7XG4gICAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICB2YXIgcGFkZGluZyA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1wYWRkaW5nXCIpKS5wZlZhbHVlO1xuICAgIHZhciB3aWR0aCA9IDIgKiBwYWRkaW5nO1xuICAgIHZhciBjb2xvciA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1jb2xvclwiKSkudmFsdWU7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSB3aWR0aDtcblxuICAgIGlmIChycy5lZGdlVHlwZSA9PT0gJ3NlbGYnICYmICF1c2VQYXRocykge1xuICAgICAgY29udGV4dC5saW5lQ2FwID0gJ2J1dHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSAncm91bmQnO1xuICAgIH1cblxuICAgIHIuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICByLmRyYXdFZGdlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMsICdzb2xpZCcpO1xuICB9O1xufTtcblxuQ1JwJDIuZHJhd0VkZ2VPdmVybGF5ID0gZHJhd0VkZ2VPdmVybGF5VW5kZXJsYXkoJ292ZXJsYXknKTtcbkNScCQyLmRyYXdFZGdlVW5kZXJsYXkgPSBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSgndW5kZXJsYXknKTtcblxuQ1JwJDIuZHJhd0VkZ2VQYXRoID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIHB0cywgdHlwZSkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgY2FudmFzQ3h0ID0gY29udGV4dDtcbiAgdmFyIHBhdGg7XG4gIHZhciBwYXRoQ2FjaGVIaXQgPSBmYWxzZTtcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICB2YXIgbGluZURhc2hQYXR0ZXJuID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1wYXR0ZXJuJykucGZWYWx1ZTtcbiAgdmFyIGxpbmVEYXNoT2Zmc2V0ID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1vZmZzZXQnKS5wZlZhbHVlO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIHZhciBwYXRoQ2FjaGVLZXkgPSBwdHMuam9pbignJCcpO1xuICAgIHZhciBrZXlNYXRjaGVzID0gcnMucGF0aENhY2hlS2V5ICYmIHJzLnBhdGhDYWNoZUtleSA9PT0gcGF0aENhY2hlS2V5O1xuXG4gICAgaWYgKGtleU1hdGNoZXMpIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gcnMucGF0aENhY2hlO1xuICAgICAgcGF0aENhY2hlSGl0ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IGNvbnRleHQgPSBuZXcgUGF0aDJEKCk7XG4gICAgICBycy5wYXRoQ2FjaGVLZXkgPSBwYXRoQ2FjaGVLZXk7XG4gICAgICBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjYW52YXNDeHQuc2V0TGluZURhc2gpIHtcbiAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RvdHRlZCc6XG4gICAgICAgIGNhbnZhc0N4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGFzaGVkJzpcbiAgICAgICAgY2FudmFzQ3h0LnNldExpbmVEYXNoKGxpbmVEYXNoUGF0dGVybik7XG4gICAgICAgIGNhbnZhc0N4dC5saW5lRGFzaE9mZnNldCA9IGxpbmVEYXNoT2Zmc2V0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc29saWQnOlxuICAgICAgICBjYW52YXNDeHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhdGhDYWNoZUhpdCAmJiAhcnMuYmFkTGluZSkge1xuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0Lm1vdmVUbyhwdHNbMF0sIHB0c1sxXSk7XG5cbiAgICBzd2l0Y2ggKHJzLmVkZ2VUeXBlKSB7XG4gICAgICBjYXNlICdiZXppZXInOlxuICAgICAgY2FzZSAnc2VsZic6XG4gICAgICBjYXNlICdjb21wb3VuZCc6XG4gICAgICBjYXNlICdtdWx0aWJlemllcic6XG4gICAgICAgIGZvciAodmFyIGkgPSAyOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhwdHNbaV0sIHB0c1tpICsgMV0sIHB0c1tpICsgMl0sIHB0c1tpICsgM10pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0cmFpZ2h0JzpcbiAgICAgIGNhc2UgJ3NlZ21lbnRzJzpcbiAgICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSArIDEgPCBwdHMubGVuZ3RoOyBfaSArPSAyKSB7XG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocHRzW19pXSwgcHRzW19pICsgMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29udGV4dCA9IGNhbnZhc0N4dDtcblxuICBpZiAodXNlUGF0aHMpIHtcbiAgICBjb250ZXh0LnN0cm9rZShwYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xuICB9IC8vIHJlc2V0IGFueSBsaW5lIGRhc2hlc1xuXG5cbiAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgfVxufTtcblxuQ1JwJDIuZHJhd0VkZ2VUcmlhbmdsZVBhdGggPSBmdW5jdGlvbiAoZWRnZSwgY29udGV4dCwgcHRzKSB7XG4gIC8vIHVzZSBsaW5lIHN0cm9rZSBzdHlsZSBmb3IgdHJpYW5nbGUgZmlsbCBzdHlsZVxuICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbnRleHQuc3Ryb2tlU3R5bGU7XG4gIHZhciBlZGdlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpICsgMSA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciB2ZWN0b3IgPSBbcHRzW2kgKyAyXSAtIHB0c1tpXSwgcHRzW2kgKyAzXSAtIHB0c1tpICsgMV1dO1xuICAgIHZhciBsZW5ndGggPSBNYXRoLnNxcnQodmVjdG9yWzBdICogdmVjdG9yWzBdICsgdmVjdG9yWzFdICogdmVjdG9yWzFdKTtcbiAgICB2YXIgbm9ybWFsID0gW3ZlY3RvclsxXSAvIGxlbmd0aCwgLXZlY3RvclswXSAvIGxlbmd0aF07XG4gICAgdmFyIHRyaWFuZ2xlSGVhZCA9IFtub3JtYWxbMF0gKiBlZGdlV2lkdGggLyAyLCBub3JtYWxbMV0gKiBlZGdlV2lkdGggLyAyXTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKHB0c1tpXSAtIHRyaWFuZ2xlSGVhZFswXSwgcHRzW2kgKyAxXSAtIHRyaWFuZ2xlSGVhZFsxXSk7XG4gICAgY29udGV4dC5saW5lVG8ocHRzW2ldICsgdHJpYW5nbGVIZWFkWzBdLCBwdHNbaSArIDFdICsgdHJpYW5nbGVIZWFkWzFdKTtcbiAgICBjb250ZXh0LmxpbmVUbyhwdHNbaSArIDJdLCBwdHNbaSArIDNdKTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuICB9XG59O1xuXG5DUnAkMi5kcmF3QXJyb3doZWFkcyA9IGZ1bmN0aW9uIChjb250ZXh0LCBlZGdlLCBvcGFjaXR5KSB7XG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBpc0hheXN0YWNrID0gcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjayc7XG5cbiAgaWYgKCFpc0hheXN0YWNrKSB7XG4gICAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdzb3VyY2UnLCBycy5hcnJvd1N0YXJ0WCwgcnMuYXJyb3dTdGFydFksIHJzLnNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuICB9XG5cbiAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdtaWQtdGFyZ2V0JywgcnMubWlkWCwgcnMubWlkWSwgcnMubWlkdGd0QXJyb3dBbmdsZSwgb3BhY2l0eSk7XG4gIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAnbWlkLXNvdXJjZScsIHJzLm1pZFgsIHJzLm1pZFksIHJzLm1pZHNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuXG4gIGlmICghaXNIYXlzdGFjaykge1xuICAgIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAndGFyZ2V0JywgcnMuYXJyb3dFbmRYLCBycy5hcnJvd0VuZFksIHJzLnRndEFycm93QW5nbGUsIG9wYWNpdHkpO1xuICB9XG59O1xuXG5DUnAkMi5kcmF3QXJyb3doZWFkID0gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UsIHByZWZpeCwgeCwgeSwgYW5nbGUsIG9wYWNpdHkpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IHggPT0gbnVsbCB8fCBpc05hTih5KSB8fCB5ID09IG51bGwgfHwgaXNOYU4oYW5nbGUpIHx8IGFuZ2xlID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcnJvd1NoYXBlID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1zaGFwZScpLnZhbHVlO1xuXG4gIGlmIChhcnJvd1NoYXBlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYXJyb3dDbGVhckZpbGwgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LWZpbGwnKS52YWx1ZSA9PT0gJ2hvbGxvdycgPyAnYm90aCcgOiAnZmlsbGVkJztcbiAgdmFyIGFycm93RmlsbCA9IGVkZ2UucHN0eWxlKHByZWZpeCArICctYXJyb3ctZmlsbCcpLnZhbHVlO1xuICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGVkZ2VPcGFjaXR5ID0gZWRnZS5wc3R5bGUoJ29wYWNpdHknKS52YWx1ZTtcblxuICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgb3BhY2l0eSA9IGVkZ2VPcGFjaXR5O1xuICB9XG5cbiAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuXG4gIGlmIChvcGFjaXR5ICE9PSAxIHx8IGFycm93RmlsbCA9PT0gJ2hvbGxvdycpIHtcbiAgICAvLyB0aGVuIGV4dHJhIGNsZWFyIGlzIG5lZWRlZFxuICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgc2VsZi5jb2xvckZpbGxTdHlsZShjb250ZXh0LCAyNTUsIDI1NSwgMjU1LCAxKTtcbiAgICBzZWxmLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgMjU1LCAyNTUsIDI1NSwgMSk7XG4gICAgc2VsZi5kcmF3QXJyb3dTaGFwZShlZGdlLCBjb250ZXh0LCBhcnJvd0NsZWFyRmlsbCwgZWRnZVdpZHRoLCBhcnJvd1NoYXBlLCB4LCB5LCBhbmdsZSk7XG4gICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gIH0gLy8gb3RoZXJ3aXNlLCB0aGUgb3BhcXVlIGFycm93IGNsZWFycyBpdCBmb3IgZnJlZSA6KVxuXG5cbiAgdmFyIGNvbG9yID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1jb2xvcicpLnZhbHVlO1xuICBzZWxmLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICBzZWxmLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gIHNlbGYuZHJhd0Fycm93U2hhcGUoZWRnZSwgY29udGV4dCwgYXJyb3dGaWxsLCBlZGdlV2lkdGgsIGFycm93U2hhcGUsIHgsIHksIGFuZ2xlKTtcbn07XG5cbkNScCQyLmRyYXdBcnJvd1NoYXBlID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIGZpbGwsIGVkZ2VXaWR0aCwgc2hhcGUsIHgsIHksIGFuZ2xlKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpICYmIHNoYXBlICE9PSAndHJpYW5nbGUtY3Jvc3MnO1xuICB2YXIgcGF0aENhY2hlSGl0ID0gZmFsc2U7XG4gIHZhciBwYXRoO1xuICB2YXIgY2FudmFzQ29udGV4dCA9IGNvbnRleHQ7XG4gIHZhciB0cmFuc2xhdGlvbiA9IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbiAgdmFyIHNjYWxlID0gZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gIHZhciBzaXplID0gdGhpcy5nZXRBcnJvd1dpZHRoKGVkZ2VXaWR0aCwgc2NhbGUpO1xuICB2YXIgc2hhcGVJbXBsID0gci5hcnJvd1NoYXBlc1tzaGFwZV07XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgdmFyIGNhY2hlID0gci5hcnJvd1BhdGhDYWNoZSA9IHIuYXJyb3dQYXRoQ2FjaGUgfHwgW107XG4gICAgdmFyIGtleSA9IGhhc2hTdHJpbmcoc2hhcGUpO1xuICAgIHZhciBjYWNoZWRQYXRoID0gY2FjaGVba2V5XTtcblxuICAgIGlmIChjYWNoZWRQYXRoICE9IG51bGwpIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gY2FjaGVkUGF0aDtcbiAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gbmV3IFBhdGgyRCgpO1xuICAgICAgY2FjaGVba2V5XSA9IHBhdGg7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAvLyBzdG9yZSBpbiB0aGUgcGF0aCBjYWNoZSB3aXRoIHZhbHVlcyBlYXNpbHkgbWFuaXB1bGF0ZWQgbGF0ZXJcbiAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIDEsIDAsIHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5jbG9zZVBhdGgpIHtcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgfVxuICB9XG5cbiAgY29udGV4dCA9IGNhbnZhc0NvbnRleHQ7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgLy8gc2V0IHRyYW5zZm9ybSB0byBhcnJvdyBwb3NpdGlvbi9vcmllbnRhdGlvblxuICAgIGNvbnRleHQudHJhbnNsYXRlKHgsIHkpO1xuICAgIGNvbnRleHQucm90YXRlKGFuZ2xlKTtcbiAgICBjb250ZXh0LnNjYWxlKHNpemUsIHNpemUpO1xuICB9XG5cbiAgaWYgKGZpbGwgPT09ICdmaWxsZWQnIHx8IGZpbGwgPT09ICdib3RoJykge1xuICAgIGlmICh1c2VQYXRocykge1xuICAgICAgY29udGV4dC5maWxsKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsbCA9PT0gJ2hvbGxvdycgfHwgZmlsbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSAoc2hhcGVJbXBsLm1hdGNoRWRnZVdpZHRoID8gZWRnZVdpZHRoIDogMSkgLyAodXNlUGF0aHMgPyBzaXplIDogMSk7XG4gICAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1c2VQYXRocykge1xuICAgIC8vIHJlc2V0IHRyYW5zZm9ybSBieSBhcHBseWluZyBpbnZlcnNlXG4gICAgY29udGV4dC5zY2FsZSgxIC8gc2l6ZSwgMSAvIHNpemUpO1xuICAgIGNvbnRleHQucm90YXRlKC1hbmdsZSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXgsIC15KTtcbiAgfVxufTtcblxudmFyIENScCQzID0ge307XG5cbkNScCQzLnNhZmVEcmF3SW1hZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgaW1nLCBpeCwgaXksIGl3LCBpaCwgeCwgeSwgdywgaCkge1xuICAvLyBkZXRlY3QgcHJvYmxlbWF0aWMgY2FzZXMgZm9yIG9sZCBicm93c2VycyB3aXRoIGJhZCBpbWFnZXMgKGNoZWFwZXIgdGhhbiB0cnktY2F0Y2gpXG4gIGlmIChpdyA8PSAwIHx8IGloIDw9IDAgfHwgdyA8PSAwIHx8IGggPD0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnRleHQuZHJhd0ltYWdlKGltZywgaXgsIGl5LCBpdywgaWgsIHgsIHksIHcsIGgpO1xufTtcblxuQ1JwJDMuZHJhd0luc2NyaWJlZEltYWdlID0gZnVuY3Rpb24gKGNvbnRleHQsIGltZywgbm9kZSwgaW5kZXgsIG5vZGVPcGFjaXR5KSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIG5vZGVYID0gcG9zLng7XG4gIHZhciBub2RlWSA9IHBvcy55O1xuICB2YXIgc3R5bGVPYmogPSBub2RlLmN5KCkuc3R5bGUoKTtcbiAgdmFyIGdldEluZGV4ZWRTdHlsZSA9IHN0eWxlT2JqLmdldEluZGV4ZWRTdHlsZS5iaW5kKHN0eWxlT2JqKTtcbiAgdmFyIGZpdCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1maXQnLCAndmFsdWUnLCBpbmRleCk7XG4gIHZhciByZXBlYXQgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcmVwZWF0JywgJ3ZhbHVlJywgaW5kZXgpO1xuICB2YXIgbm9kZVcgPSBub2RlLndpZHRoKCk7XG4gIHZhciBub2RlSCA9IG5vZGUuaGVpZ2h0KCk7XG4gIHZhciBwYWRkaW5nWDIgPSBub2RlLnBhZGRpbmcoKSAqIDI7XG4gIHZhciBub2RlVFcgPSBub2RlVyArIChnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgdmFyIG5vZGVUSCA9IG5vZGVIICsgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgdmFyIHJzID0gbm9kZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIGNsaXAgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtY2xpcCcsICd2YWx1ZScsIGluZGV4KTtcbiAgdmFyIHNob3VsZENsaXAgPSBjbGlwID09PSAnbm9kZSc7XG4gIHZhciBpbWdPcGFjaXR5ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknLCAndmFsdWUnLCBpbmRleCkgKiBub2RlT3BhY2l0eTtcbiAgdmFyIHNtb290aCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLCAndmFsdWUnLCBpbmRleCk7XG4gIHZhciBpbWdXID0gaW1nLndpZHRoIHx8IGltZy5jYWNoZWRXO1xuICB2YXIgaW1nSCA9IGltZy5oZWlnaHQgfHwgaW1nLmNhY2hlZEg7IC8vIHdvcmthcm91bmQgZm9yIGJyb2tlbiBicm93c2VycyBsaWtlIGllXG5cbiAgaWYgKG51bGwgPT0gaW1nVyB8fCBudWxsID09IGltZ0gpIHtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIGltZ1cgPSBpbWcuY2FjaGVkVyA9IGltZy53aWR0aCB8fCBpbWcub2Zmc2V0V2lkdGg7XG4gICAgaW1nSCA9IGltZy5jYWNoZWRIID0gaW1nLmhlaWdodCB8fCBpbWcub2Zmc2V0SGVpZ2h0O1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW1nKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICB9XG5cbiAgdmFyIHcgPSBpbWdXO1xuICB2YXIgaCA9IGltZ0g7XG5cbiAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd1bml0cycsIGluZGV4KSA9PT0gJyUnKSB7XG4gICAgICB3ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXdpZHRoJywgJ3BmVmFsdWUnLCBpbmRleCkgKiBub2RlVFc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHcgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBpZiAoZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAndW5pdHMnLCBpbmRleCkgPT09ICclJykge1xuICAgICAgaCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAncGZWYWx1ZScsIGluZGV4KSAqIG5vZGVUSDtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBpZiAodyA9PT0gMCB8fCBoID09PSAwKSB7XG4gICAgcmV0dXJuOyAvLyBubyBwb2ludCBpbiBkcmF3aW5nIGVtcHR5IGltYWdlIChhbmQgY2hyb21lIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UpXG4gIH1cblxuICBpZiAoZml0ID09PSAnY29udGFpbicpIHtcbiAgICB2YXIgc2NhbGUgPSBNYXRoLm1pbihub2RlVFcgLyB3LCBub2RlVEggLyBoKTtcbiAgICB3ICo9IHNjYWxlO1xuICAgIGggKj0gc2NhbGU7XG4gIH0gZWxzZSBpZiAoZml0ID09PSAnY292ZXInKSB7XG4gICAgdmFyIHNjYWxlID0gTWF0aC5tYXgobm9kZVRXIC8gdywgbm9kZVRIIC8gaCk7XG4gICAgdyAqPSBzY2FsZTtcbiAgICBoICo9IHNjYWxlO1xuICB9XG5cbiAgdmFyIHggPSBub2RlWCAtIG5vZGVUVyAvIDI7IC8vIGxlZnRcblxuICB2YXIgcG9zWFVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnLCAndW5pdHMnLCBpbmRleCk7XG4gIHZhciBwb3NYUGZWYWwgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gIGlmIChwb3NYVW5pdHMgPT09ICclJykge1xuICAgIHggKz0gKG5vZGVUVyAtIHcpICogcG9zWFBmVmFsO1xuICB9IGVsc2Uge1xuICAgIHggKz0gcG9zWFBmVmFsO1xuICB9XG5cbiAgdmFyIG9mZlhVbml0cyA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICd1bml0cycsIGluZGV4KTtcbiAgdmFyIG9mZlhQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gIGlmIChvZmZYVW5pdHMgPT09ICclJykge1xuICAgIHggKz0gKG5vZGVUVyAtIHcpICogb2ZmWFBmVmFsO1xuICB9IGVsc2Uge1xuICAgIHggKz0gb2ZmWFBmVmFsO1xuICB9XG5cbiAgdmFyIHkgPSBub2RlWSAtIG5vZGVUSCAvIDI7IC8vIHRvcFxuXG4gIHZhciBwb3NZVW5pdHMgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teScsICd1bml0cycsIGluZGV4KTtcbiAgdmFyIHBvc1lQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1wb3NpdGlvbi15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgaWYgKHBvc1lVbml0cyA9PT0gJyUnKSB7XG4gICAgeSArPSAobm9kZVRIIC0gaCkgKiBwb3NZUGZWYWw7XG4gIH0gZWxzZSB7XG4gICAgeSArPSBwb3NZUGZWYWw7XG4gIH1cblxuICB2YXIgb2ZmWVVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3VuaXRzJywgaW5kZXgpO1xuICB2YXIgb2ZmWVBmVmFsID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgaWYgKG9mZllVbml0cyA9PT0gJyUnKSB7XG4gICAgeSArPSAobm9kZVRIIC0gaCkgKiBvZmZZUGZWYWw7XG4gIH0gZWxzZSB7XG4gICAgeSArPSBvZmZZUGZWYWw7XG4gIH1cblxuICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgeCAtPSBub2RlWDtcbiAgICB5IC09IG5vZGVZO1xuICAgIG5vZGVYID0gMDtcbiAgICBub2RlWSA9IDA7XG4gIH1cblxuICB2YXIgZ0FscGhhID0gY29udGV4dC5nbG9iYWxBbHBoYTtcbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGltZ09wYWNpdHk7XG4gIHZhciBzbW9vdGhpbmdFbmFibGVkID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG4gIHZhciBpc1Ntb290aGluZ1N3aXRjaGVkID0gZmFsc2U7XG5cbiAgaWYgKHNtb290aCA9PT0gJ25vJyAmJiBzbW9vdGhpbmdFbmFibGVkKSB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICAgIGlzU21vb3RoaW5nU3dpdGNoZWQgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHNtb290aCA9PT0gJ3llcycgJiYgIXNtb290aGluZ0VuYWJsZWQpIHtcbiAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCB0cnVlKTtcbiAgICBpc1Ntb290aGluZ1N3aXRjaGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChyZXBlYXQgPT09ICduby1yZXBlYXQnKSB7XG4gICAgaWYgKHNob3VsZENsaXApIHtcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuXG4gICAgICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgICAgIGNvbnRleHQuY2xpcChycy5wYXRoQ2FjaGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KGNvbnRleHQsIG5vZGVYLCBub2RlWSwgbm9kZVRXLCBub2RlVEgpO1xuICAgICAgICBjb250ZXh0LmNsaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByLnNhZmVEcmF3SW1hZ2UoY29udGV4dCwgaW1nLCAwLCAwLCBpbWdXLCBpbWdILCB4LCB5LCB3LCBoKTtcblxuICAgIGlmIChzaG91bGRDbGlwKSB7XG4gICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZVBhdHRlcm4oaW1nLCByZXBlYXQpO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gcGF0dGVybjtcbiAgICByLm5vZGVTaGFwZXNbci5nZXROb2RlU2hhcGUobm9kZSldLmRyYXcoY29udGV4dCwgbm9kZVgsIG5vZGVZLCBub2RlVFcsIG5vZGVUSCk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7XG4gICAgY29udGV4dC5maWxsKCk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXgsIC15KTtcbiAgfVxuXG4gIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBnQWxwaGE7XG5cbiAgaWYgKGlzU21vb3RoaW5nU3dpdGNoZWQpIHtcbiAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBzbW9vdGhpbmdFbmFibGVkKTtcbiAgfVxufTtcblxudmFyIENScCQ0ID0ge307XG5cbkNScCQ0LmVsZVRleHRCaWdnZXJUaGFuTWluID0gZnVuY3Rpb24gKGVsZSwgc2NhbGUpIHtcbiAgaWYgKCFzY2FsZSkge1xuICAgIHZhciB6b29tID0gZWxlLmN5KCkuem9vbSgpO1xuICAgIHZhciBweFJhdGlvID0gdGhpcy5nZXRQaXhlbFJhdGlvKCk7XG4gICAgdmFyIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7IC8vIHRoZSBlZmZlY3RpdmUgdGV4dHVyZSBsZXZlbFxuXG4gICAgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICB9XG5cbiAgdmFyIGNvbXB1dGVkU2l6ZSA9IGVsZS5wc3R5bGUoJ2ZvbnQtc2l6ZScpLnBmVmFsdWUgKiBzY2FsZTtcbiAgdmFyIG1pblNpemUgPSBlbGUucHN0eWxlKCdtaW4tem9vbWVkLWZvbnQtc2l6ZScpLnBmVmFsdWU7XG5cbiAgaWYgKGNvbXB1dGVkU2l6ZSA8IG1pblNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNScCQ0LmRyYXdFbGVtZW50VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHNoaWZ0VG9PcmlnaW5XaXRoQmIsIGZvcmNlLCBwcmVmaXgpIHtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHRydWU7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoZm9yY2UgPT0gbnVsbCkge1xuICAgIGlmICh1c2VFbGVPcGFjaXR5ICYmICFyLmVsZVRleHRCaWdnZXJUaGFuTWluKGVsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZm9yY2UgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgIHZhciBsYWJlbCA9IGVsZS5wc3R5bGUoJ2xhYmVsJyk7XG5cbiAgICBpZiAoIWxhYmVsIHx8ICFsYWJlbC52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBqdXN0aWZpY2F0aW9uID0gci5nZXRMYWJlbEp1c3RpZmljYXRpb24oZWxlKTtcbiAgICBjb250ZXh0LnRleHRBbGlnbiA9IGp1c3RpZmljYXRpb247XG4gICAgY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmFkTGluZSA9IGVsZS5lbGVtZW50KCkuX3ByaXZhdGUucnNjcmF0Y2guYmFkTGluZTtcblxuICAgIHZhciBfbGFiZWwgPSBlbGUucHN0eWxlKCdsYWJlbCcpO1xuXG4gICAgdmFyIHNyY0xhYmVsID0gZWxlLnBzdHlsZSgnc291cmNlLWxhYmVsJyk7XG4gICAgdmFyIHRndExhYmVsID0gZWxlLnBzdHlsZSgndGFyZ2V0LWxhYmVsJyk7XG5cbiAgICBpZiAoYmFkTGluZSB8fCAoIV9sYWJlbCB8fCAhX2xhYmVsLnZhbHVlKSAmJiAoIXNyY0xhYmVsIHx8ICFzcmNMYWJlbC52YWx1ZSkgJiYgKCF0Z3RMYWJlbCB8fCAhdGd0TGFiZWwudmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGV4dC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xuICB9XG5cbiAgdmFyIGFwcGx5Um90YXRpb24gPSAhc2hpZnRUb09yaWdpbldpdGhCYjtcbiAgdmFyIGJiO1xuXG4gIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgYmIgPSBzaGlmdFRvT3JpZ2luV2l0aEJiO1xuICAgIGNvbnRleHQudHJhbnNsYXRlKC1iYi54MSwgLWJiLnkxKTtcbiAgfVxuXG4gIGlmIChwcmVmaXggPT0gbnVsbCkge1xuICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCBudWxsLCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcblxuICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCAnc291cmNlJywgYXBwbHlSb3RhdGlvbiwgdXNlRWxlT3BhY2l0eSk7XG4gICAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgJ3RhcmdldCcsIGFwcGx5Um90YXRpb24sIHVzZUVsZU9wYWNpdHkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgcHJlZml4LCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcbiAgfVxuXG4gIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoYmIueDEsIGJiLnkxKTtcbiAgfVxufTtcblxuQ1JwJDQuZ2V0Rm9udENhY2hlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGNhY2hlO1xuICB0aGlzLmZvbnRDYWNoZXMgPSB0aGlzLmZvbnRDYWNoZXMgfHwgW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnRDYWNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjYWNoZSA9IHRoaXMuZm9udENhY2hlc1tpXTtcblxuICAgIGlmIChjYWNoZS5jb250ZXh0ID09PSBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gY2FjaGU7XG4gICAgfVxuICB9XG5cbiAgY2FjaGUgPSB7XG4gICAgY29udGV4dDogY29udGV4dFxuICB9O1xuICB0aGlzLmZvbnRDYWNoZXMucHVzaChjYWNoZSk7XG4gIHJldHVybiBjYWNoZTtcbn07IC8vIHNldCB1cCBjYW52YXMgY29udGV4dCB3aXRoIGZvbnRcbi8vIHJldHVybnMgdHJhbnNmb3JtZWQgdGV4dCBzdHJpbmdcblxuXG5DUnAkNC5zZXR1cFRleHRTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIC8vIEZvbnQgc3R5bGVcbiAgdmFyIGxhYmVsU3R5bGUgPSBlbGUucHN0eWxlKCdmb250LXN0eWxlJykuc3RyVmFsdWU7XG4gIHZhciBsYWJlbFNpemUgPSBlbGUucHN0eWxlKCdmb250LXNpemUnKS5wZlZhbHVlICsgJ3B4JztcbiAgdmFyIGxhYmVsRmFtaWx5ID0gZWxlLnBzdHlsZSgnZm9udC1mYW1pbHknKS5zdHJWYWx1ZTtcbiAgdmFyIGxhYmVsV2VpZ2h0ID0gZWxlLnBzdHlsZSgnZm9udC13ZWlnaHQnKS5zdHJWYWx1ZTtcbiAgdmFyIG9wYWNpdHkgPSB1c2VFbGVPcGFjaXR5ID8gZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKSAqIGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlIDogMTtcbiAgdmFyIG91dGxpbmVPcGFjaXR5ID0gZWxlLnBzdHlsZSgndGV4dC1vdXRsaW5lLW9wYWNpdHknKS52YWx1ZSAqIG9wYWNpdHk7XG4gIHZhciBjb2xvciA9IGVsZS5wc3R5bGUoJ2NvbG9yJykudmFsdWU7XG4gIHZhciBvdXRsaW5lQ29sb3IgPSBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtY29sb3InKS52YWx1ZTtcbiAgY29udGV4dC5mb250ID0gbGFiZWxTdHlsZSArICcgJyArIGxhYmVsV2VpZ2h0ICsgJyAnICsgbGFiZWxTaXplICsgJyAnICsgbGFiZWxGYW1pbHk7XG4gIGNvbnRleHQubGluZUpvaW4gPSAncm91bmQnOyAvLyBzbyB0ZXh0IG91dGxpbmVzIGFyZW4ndCBqYWdnZWRcblxuICB0aGlzLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICB0aGlzLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgb3V0bGluZUNvbG9yWzBdLCBvdXRsaW5lQ29sb3JbMV0sIG91dGxpbmVDb2xvclsyXSwgb3V0bGluZU9wYWNpdHkpO1xufTsgLy8gVE9ETyBlbnN1cmUgcmUtdXNlZFxuXG5cbmZ1bmN0aW9uIHJvdW5kUmVjdChjdHgsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIHJhZGl1cyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogNTtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHgubW92ZVRvKHggKyByYWRpdXMsIHkpO1xuICBjdHgubGluZVRvKHggKyB3aWR0aCAtIHJhZGl1cywgeSk7XG4gIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHggKyB3aWR0aCwgeSwgeCArIHdpZHRoLCB5ICsgcmFkaXVzKTtcbiAgY3R4LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjdHgucXVhZHJhdGljQ3VydmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHggKyB3aWR0aCAtIHJhZGl1cywgeSArIGhlaWdodCk7XG4gIGN0eC5saW5lVG8oeCArIHJhZGl1cywgeSArIGhlaWdodCk7XG4gIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjdHgubGluZVRvKHgsIHkgKyByYWRpdXMpO1xuICBjdHgucXVhZHJhdGljQ3VydmVUbyh4LCB5LCB4ICsgcmFkaXVzLCB5KTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xufVxuXG5DUnAkNC5nZXRUZXh0QW5nbGUgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgdmFyIHRoZXRhO1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc2NyYXRjaCA9IF9wLnJzY3JhdGNoO1xuICB2YXIgcGRhc2ggPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgdmFyIHJvdGF0aW9uID0gZWxlLnBzdHlsZShwZGFzaCArICd0ZXh0LXJvdGF0aW9uJyk7XG4gIHZhciB0ZXh0QW5nbGUgPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxBbmdsZScsIHByZWZpeCk7XG5cbiAgaWYgKHJvdGF0aW9uLnN0clZhbHVlID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICB0aGV0YSA9IGVsZS5pc0VkZ2UoKSA/IHRleHRBbmdsZSA6IDA7XG4gIH0gZWxzZSBpZiAocm90YXRpb24uc3RyVmFsdWUgPT09ICdub25lJykge1xuICAgIHRoZXRhID0gMDtcbiAgfSBlbHNlIHtcbiAgICB0aGV0YSA9IHJvdGF0aW9uLnBmVmFsdWU7XG4gIH1cblxuICByZXR1cm4gdGhldGE7XG59O1xuXG5DUnAkNC5kcmF3VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHByZWZpeCkge1xuICB2YXIgYXBwbHlSb3RhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogdHJ1ZTtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHRydWU7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHJzY3JhdGNoID0gX3AucnNjcmF0Y2g7XG4gIHZhciBwYXJlbnRPcGFjaXR5ID0gdXNlRWxlT3BhY2l0eSA/IGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgOiAxO1xuXG4gIGlmICh1c2VFbGVPcGFjaXR5ICYmIChwYXJlbnRPcGFjaXR5ID09PSAwIHx8IGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfSAvLyB1c2UgJ21haW4nIGFzIGFuIGFsaWFzIGZvciB0aGUgbWFpbiBsYWJlbCAoaS5lLiBudWxsIHByZWZpeClcblxuXG4gIGlmIChwcmVmaXggPT09ICdtYWluJykge1xuICAgIHByZWZpeCA9IG51bGw7XG4gIH1cblxuICB2YXIgdGV4dFggPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxYJywgcHJlZml4KTtcbiAgdmFyIHRleHRZID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gIHZhciBvcmdUZXh0WCwgb3JnVGV4dFk7IC8vIHVzZWQgZm9yIHJvdGF0aW9uXG5cbiAgdmFyIHRleHQgPSB0aGlzLmdldExhYmVsVGV4dChlbGUsIHByZWZpeCk7XG5cbiAgaWYgKHRleHQgIT0gbnVsbCAmJiB0ZXh0ICE9PSAnJyAmJiAhaXNOYU4odGV4dFgpICYmICFpc05hTih0ZXh0WSkpIHtcbiAgICB0aGlzLnNldHVwVGV4dFN0eWxlKGNvbnRleHQsIGVsZSwgdXNlRWxlT3BhY2l0eSk7XG4gICAgdmFyIHBkYXNoID0gcHJlZml4ID8gcHJlZml4ICsgJy0nIDogJyc7XG4gICAgdmFyIHRleHRXID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsV2lkdGgnLCBwcmVmaXgpO1xuICAgIHZhciB0ZXh0SCA9IGdldFByZWZpeGVkUHJvcGVydHkocnNjcmF0Y2gsICdsYWJlbEhlaWdodCcsIHByZWZpeCk7XG4gICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHBkYXNoICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlO1xuICAgIHZhciBtYXJnaW5ZID0gZWxlLnBzdHlsZShwZGFzaCArICd0ZXh0LW1hcmdpbi15JykucGZWYWx1ZTtcbiAgICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuICAgIHZhciB2YWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlO1xuXG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgaGFsaWduID0gJ2NlbnRlcic7XG4gICAgICB2YWxpZ24gPSAnY2VudGVyJztcbiAgICB9XG5cbiAgICB0ZXh0WCArPSBtYXJnaW5YO1xuICAgIHRleHRZICs9IG1hcmdpblk7XG4gICAgdmFyIHRoZXRhO1xuXG4gICAgaWYgKCFhcHBseVJvdGF0aW9uKSB7XG4gICAgICB0aGV0YSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZXRhID0gdGhpcy5nZXRUZXh0QW5nbGUoZWxlLCBwcmVmaXgpO1xuICAgIH1cblxuICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgb3JnVGV4dFggPSB0ZXh0WDtcbiAgICAgIG9yZ1RleHRZID0gdGV4dFk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShvcmdUZXh0WCwgb3JnVGV4dFkpO1xuICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgdGV4dFggPSAwO1xuICAgICAgdGV4dFkgPSAwO1xuICAgIH1cblxuICAgIHN3aXRjaCAodmFsaWduKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgdGV4dFkgKz0gdGV4dEggLyAyO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdGV4dFkgKz0gdGV4dEg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBiYWNrZ3JvdW5kT3BhY2l0eSA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIGJvcmRlck9wYWNpdHkgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIHRleHRCb3JkZXJXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgYmFja2dyb3VuZFBhZGRpbmcgPSBlbGUucHN0eWxlKCd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycpLnBmVmFsdWU7XG5cbiAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwIHx8IHRleHRCb3JkZXJXaWR0aCA+IDAgJiYgYm9yZGVyT3BhY2l0eSA+IDApIHtcbiAgICAgIHZhciBiZ1ggPSB0ZXh0WCAtIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICBzd2l0Y2ggKGhhbGlnbikge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBiZ1ggLT0gdGV4dFc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBiZ1ggLT0gdGV4dFcgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYmdZID0gdGV4dFkgLSB0ZXh0SCAtIGJhY2tncm91bmRQYWRkaW5nO1xuICAgICAgdmFyIGJnVyA9IHRleHRXICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuICAgICAgdmFyIGJnSCA9IHRleHRIICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0RmlsbCA9IGNvbnRleHQuZmlsbFN0eWxlO1xuICAgICAgICB2YXIgdGV4dEJhY2tncm91bmRDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1jb2xvcicpLnZhbHVlO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKCcgKyB0ZXh0QmFja2dyb3VuZENvbG9yWzBdICsgJywnICsgdGV4dEJhY2tncm91bmRDb2xvclsxXSArICcsJyArIHRleHRCYWNrZ3JvdW5kQ29sb3JbMl0gKyAnLCcgKyBiYWNrZ3JvdW5kT3BhY2l0eSAqIHBhcmVudE9wYWNpdHkgKyAnKSc7XG4gICAgICAgIHZhciBzdHlsZVNoYXBlID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXNoYXBlJykuc3RyVmFsdWU7XG5cbiAgICAgICAgaWYgKHN0eWxlU2hhcGUuaW5kZXhPZigncm91bmQnKSA9PT0gMCkge1xuICAgICAgICAgIHJvdW5kUmVjdChjb250ZXh0LCBiZ1gsIGJnWSwgYmdXLCBiZ0gsIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmdYLCBiZ1ksIGJnVywgYmdIKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gdGV4dEZpbGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0Qm9yZGVyV2lkdGggPiAwICYmIGJvcmRlck9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0U3Ryb2tlID0gY29udGV4dC5zdHJva2VTdHlsZTtcbiAgICAgICAgdmFyIHRleHRMaW5lV2lkdGggPSBjb250ZXh0LmxpbmVXaWR0aDtcbiAgICAgICAgdmFyIHRleHRCb3JkZXJDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLWNvbG9yJykudmFsdWU7XG4gICAgICAgIHZhciB0ZXh0Qm9yZGVyU3R5bGUgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1zdHlsZScpLnZhbHVlO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ3JnYmEoJyArIHRleHRCb3JkZXJDb2xvclswXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsxXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsyXSArICcsJyArIGJvcmRlck9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5ICsgJyknO1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aDtcblxuICAgICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgIC8vIGZvciB2ZXJ5IG91dG9mZGF0ZSBicm93c2Vyc1xuICAgICAgICAgIHN3aXRjaCAodGV4dEJvcmRlclN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFsxLCAxXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFs0LCAyXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkb3VibGUnOlxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aCAvIDQ7IC8vIDUwJSByZXNlcnZlZCBmb3Igd2hpdGUgYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnNcblxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3NvbGlkJzpcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChiZ1gsIGJnWSwgYmdXLCBiZ0gpO1xuXG4gICAgICAgIGlmICh0ZXh0Qm9yZGVyU3R5bGUgPT09ICdkb3VibGUnKSB7XG4gICAgICAgICAgdmFyIHdoaXRlV2lkdGggPSB0ZXh0Qm9yZGVyV2lkdGggLyAyO1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChiZ1ggKyB3aGl0ZVdpZHRoLCBiZ1kgKyB3aGl0ZVdpZHRoLCBiZ1cgLSB3aGl0ZVdpZHRoICogMiwgYmdIIC0gd2hpdGVXaWR0aCAqIDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gdGV4dExpbmVXaWR0aDtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRleHRTdHJva2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxpbmVXaWR0aCA9IDIgKiBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlOyAvLyAqMiBiL2MgdGhlIHN0cm9rZSBpcyBkcmF3biBjZW50cmVkIG9uIHRoZSBtaWRkbGVcblxuICAgIGlmIChsaW5lV2lkdGggPiAwKSB7XG4gICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoZWxlLnBzdHlsZSgndGV4dC13cmFwJykudmFsdWUgPT09ICd3cmFwJykge1xuICAgICAgdmFyIGxpbmVzID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgcHJlZml4KTtcbiAgICAgIHZhciBsaW5lSGVpZ2h0ID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCk7XG4gICAgICB2YXIgaGFsZlRleHRXID0gdGV4dFcgLyAyO1xuICAgICAgdmFyIGp1c3RpZmljYXRpb24gPSB0aGlzLmdldExhYmVsSnVzdGlmaWNhdGlvbihlbGUpO1xuXG4gICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2F1dG8nKSA7IGVsc2UgaWYgKGhhbGlnbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IHJpZ2h0XG4gICAgICAgIGlmIChqdXN0aWZpY2F0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICB0ZXh0WCArPSAtdGV4dFc7XG4gICAgICAgIH0gZWxzZSBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICB0ZXh0WCArPSAtaGFsZlRleHRXO1xuICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgIH0gZWxzZSBpZiAoaGFsaWduID09PSAnY2VudGVyJykge1xuICAgICAgICAvLyBhdXRvIGp1c3RmaWNhdGlvbiA6IGNlbnRlclxuICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgdGV4dFggKz0gLWhhbGZUZXh0VztcbiAgICAgICAgfSBlbHNlIGlmIChqdXN0aWZpY2F0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgIH0gZWxzZSBpZiAoaGFsaWduID09PSAncmlnaHQnKSB7XG4gICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IGxlZnRcbiAgICAgICAgaWYgKGp1c3RpZmljYXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICB9IGVsc2UgaWYgKGp1c3RpZmljYXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICB0ZXh0WCArPSB0ZXh0VztcbiAgICAgICAgfSAvLyBlbHNlIHNhbWUgYXMgYXV0b1xuXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmFsaWduKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdGV4dFkgLT0gKGxpbmVzLmxlbmd0aCAtIDEpICogbGluZUhlaWdodDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHRleHRZIC09IChsaW5lcy5sZW5ndGggLSAxKSAqIGxpbmVIZWlnaHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQobGluZXNbbF0sIHRleHRYLCB0ZXh0WSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGxpbmVzW2xdLCB0ZXh0WCwgdGV4dFkpO1xuICAgICAgICB0ZXh0WSArPSBsaW5lSGVpZ2h0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgdGV4dFgsIHRleHRZKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCB0ZXh0WCwgdGV4dFkpO1xuICAgIH1cblxuICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgY29udGV4dC5yb3RhdGUoLXRoZXRhKTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1vcmdUZXh0WCwgLW9yZ1RleHRZKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qIGdsb2JhbCBQYXRoMkQgKi9cbnZhciBDUnAkNSA9IHt9O1xuXG5DUnAkNS5kcmF3Tm9kZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBub2RlLCBzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gIHZhciBkcmF3TGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBzaG91bGREcmF3T3ZlcmxheSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdHJ1ZTtcbiAgdmFyIHNob3VsZERyYXdPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBub2RlV2lkdGgsIG5vZGVIZWlnaHQ7XG4gIHZhciBfcCA9IG5vZGUuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuXG4gIGlmICghbnVtYmVyKHBvcy54KSB8fCAhbnVtYmVyKHBvcy55KSkge1xuICAgIHJldHVybjsgLy8gY2FuJ3QgZHJhdyBub2RlIHdpdGggdW5kZWZpbmVkIHBvc2l0aW9uXG4gIH1cblxuICBpZiAoc2hvdWxkRHJhd09wYWNpdHkgJiYgIW5vZGUudmlzaWJsZSgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGVsZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IG5vZGUuZWZmZWN0aXZlT3BhY2l0eSgpIDogMTtcbiAgdmFyIHVzZVBhdGhzID0gci51c2VQYXRocygpO1xuICB2YXIgcGF0aDtcbiAgdmFyIHBhdGhDYWNoZUhpdCA9IGZhbHNlO1xuICB2YXIgcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuICBub2RlV2lkdGggPSBub2RlLndpZHRoKCkgKyAyICogcGFkZGluZztcbiAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogcGFkZGluZzsgLy9cbiAgLy8gc2V0dXAgc2hpZnRcblxuICB2YXIgYmI7XG5cbiAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICBiYiA9IHNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICB9IC8vXG4gIC8vIGxvYWQgYmcgaW1hZ2VcblxuXG4gIHZhciBiZ0ltZ1Byb3AgPSBub2RlLnBzdHlsZSgnYmFja2dyb3VuZC1pbWFnZScpO1xuICB2YXIgdXJscyA9IGJnSW1nUHJvcC52YWx1ZTtcbiAgdmFyIHVybERlZmluZWQgPSBuZXcgQXJyYXkodXJscy5sZW5ndGgpO1xuICB2YXIgaW1hZ2UgPSBuZXcgQXJyYXkodXJscy5sZW5ndGgpO1xuICB2YXIgbnVtSW1hZ2VzID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdXJsID0gdXJsc1tpXTtcbiAgICB2YXIgZGVmZCA9IHVybERlZmluZWRbaV0gPSB1cmwgIT0gbnVsbCAmJiB1cmwgIT09ICdub25lJztcblxuICAgIGlmIChkZWZkKSB7XG4gICAgICB2YXIgYmdJbWdDcm9zc09yaWdpbiA9IG5vZGUuY3koKS5zdHlsZSgpLmdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbicsICd2YWx1ZScsIGkpO1xuICAgICAgbnVtSW1hZ2VzKys7IC8vIGdldCBpbWFnZSwgYW5kIGlmIG5vdCBsb2FkZWQgdGhlbiBhc2sgdG8gcmVkcmF3IHdoZW4gbGF0ZXIgbG9hZGVkXG5cbiAgICAgIGltYWdlW2ldID0gci5nZXRDYWNoZWRJbWFnZSh1cmwsIGJnSW1nQ3Jvc3NPcmlnaW4sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3AuYmFja2dyb3VuZFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgIG5vZGUuZW1pdEFuZE5vdGlmeSgnYmFja2dyb3VuZCcpO1xuICAgICAgfSk7XG4gICAgfVxuICB9IC8vXG4gIC8vIHNldHVwIHN0eWxlc1xuXG5cbiAgdmFyIGRhcmtuZXNzID0gbm9kZS5wc3R5bGUoJ2JhY2tncm91bmQtYmxhY2tlbicpLnZhbHVlO1xuICB2YXIgYm9yZGVyV2lkdGggPSBub2RlLnBzdHlsZSgnYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGJnT3BhY2l0eSA9IG5vZGUucHN0eWxlKCdiYWNrZ3JvdW5kLW9wYWNpdHknKS52YWx1ZSAqIGVsZU9wYWNpdHk7XG4gIHZhciBib3JkZXJDb2xvciA9IG5vZGUucHN0eWxlKCdib3JkZXItY29sb3InKS52YWx1ZTtcbiAgdmFyIGJvcmRlclN0eWxlID0gbm9kZS5wc3R5bGUoJ2JvcmRlci1zdHlsZScpLnZhbHVlO1xuICB2YXIgYm9yZGVyT3BhY2l0eSA9IG5vZGUucHN0eWxlKCdib3JkZXItb3BhY2l0eScpLnZhbHVlICogZWxlT3BhY2l0eTtcbiAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7IC8vIHNvIGJvcmRlcnMgYXJlIHNxdWFyZSB3aXRoIHRoZSBub2RlIHNoYXBlXG5cbiAgdmFyIHNldHVwU2hhcGVDb2xvciA9IGZ1bmN0aW9uIHNldHVwU2hhcGVDb2xvcigpIHtcbiAgICB2YXIgYmdPcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGJnT3BhY2l0eTtcbiAgICByLmVsZUZpbGxTdHlsZShjb250ZXh0LCBub2RlLCBiZ09weSk7XG4gIH07XG5cbiAgdmFyIHNldHVwQm9yZGVyQ29sb3IgPSBmdW5jdGlvbiBzZXR1cEJvcmRlckNvbG9yKCkge1xuICAgIHZhciBiZHJPcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGJvcmRlck9wYWNpdHk7XG4gICAgci5jb2xvclN0cm9rZVN0eWxlKGNvbnRleHQsIGJvcmRlckNvbG9yWzBdLCBib3JkZXJDb2xvclsxXSwgYm9yZGVyQ29sb3JbMl0sIGJkck9weSk7XG4gIH07IC8vXG4gIC8vIHNldHVwIHNoYXBlXG5cblxuICB2YXIgc3R5bGVTaGFwZSA9IG5vZGUucHN0eWxlKCdzaGFwZScpLnN0clZhbHVlO1xuICB2YXIgc2hhcGVQdHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS5wZlZhbHVlO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKHBvcy54LCBwb3MueSk7XG4gICAgdmFyIHBhdGhDYWNoZSA9IHIubm9kZVBhdGhDYWNoZSA9IHIubm9kZVBhdGhDYWNoZSB8fCBbXTtcbiAgICB2YXIga2V5ID0gaGFzaFN0cmluZ3Moc3R5bGVTaGFwZSA9PT0gJ3BvbHlnb24nID8gc3R5bGVTaGFwZSArICcsJyArIHNoYXBlUHRzLmpvaW4oJywnKSA6IHN0eWxlU2hhcGUsICcnICsgbm9kZUhlaWdodCwgJycgKyBub2RlV2lkdGgpO1xuICAgIHZhciBjYWNoZWRQYXRoID0gcGF0aENhY2hlW2tleV07XG5cbiAgICBpZiAoY2FjaGVkUGF0aCAhPSBudWxsKSB7XG4gICAgICBwYXRoID0gY2FjaGVkUGF0aDtcbiAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgICBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgICAgcGF0aENhY2hlW2tleV0gPSBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkcmF3U2hhcGUgPSBmdW5jdGlvbiBkcmF3U2hhcGUoKSB7XG4gICAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICAgIHZhciBucG9zID0gcG9zO1xuXG4gICAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgICAgbnBvcyA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KHBhdGggfHwgY29udGV4dCwgbnBvcy54LCBucG9zLnksIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICBjb250ZXh0LmZpbGwocGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd0ltYWdlcyA9IGZ1bmN0aW9uIGRyYXdJbWFnZXMoKSB7XG4gICAgdmFyIG5vZGVPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlbGVPcGFjaXR5O1xuICAgIHZhciBpbnNpZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgdmFyIHByZXZCZ2luZyA9IF9wLmJhY2tncm91bmRpbmc7XG4gICAgdmFyIHRvdGFsQ29tcGxldGVkID0gMDtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBpbWFnZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBiZ0NvbnRhaW5tZW50ID0gbm9kZS5jeSgpLnN0eWxlKCkuZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JywgJ3ZhbHVlJywgX2kpO1xuXG4gICAgICBpZiAoaW5zaWRlICYmIGJnQ29udGFpbm1lbnQgPT09ICdvdmVyJyB8fCAhaW5zaWRlICYmIGJnQ29udGFpbm1lbnQgPT09ICdpbnNpZGUnKSB7XG4gICAgICAgIHRvdGFsQ29tcGxldGVkKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodXJsRGVmaW5lZFtfaV0gJiYgaW1hZ2VbX2ldLmNvbXBsZXRlICYmICFpbWFnZVtfaV0uZXJyb3IpIHtcbiAgICAgICAgdG90YWxDb21wbGV0ZWQrKztcbiAgICAgICAgci5kcmF3SW5zY3JpYmVkSW1hZ2UoY29udGV4dCwgaW1hZ2VbX2ldLCBub2RlLCBfaSwgbm9kZU9wYWNpdHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9wLmJhY2tncm91bmRpbmcgPSAhKHRvdGFsQ29tcGxldGVkID09PSBudW1JbWFnZXMpO1xuXG4gICAgaWYgKHByZXZCZ2luZyAhPT0gX3AuYmFja2dyb3VuZGluZykge1xuICAgICAgLy8gdXBkYXRlIHN0eWxlIGIvYyA6YmFja2dyb3VuZGluZyBzdGF0ZSBjaGFuZ2VkXG4gICAgICBub2RlLnVwZGF0ZVN0eWxlKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRyYXdQaWUgPSBmdW5jdGlvbiBkcmF3UGllKCkge1xuICAgIHZhciByZWRyYXdTaGFwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgdmFyIHBpZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGVsZU9wYWNpdHk7XG5cbiAgICBpZiAoci5oYXNQaWUobm9kZSkpIHtcbiAgICAgIHIuZHJhd1BpZShjb250ZXh0LCBub2RlLCBwaWVPcGFjaXR5KTsgLy8gcmVkcmF3L3Jlc3RvcmUgcGF0aCBpZiBzdGVwcyBhZnRlciBwaWUgbmVlZCBpdFxuXG4gICAgICBpZiAocmVkcmF3U2hhcGUpIHtcbiAgICAgICAgaWYgKCF1c2VQYXRocykge1xuICAgICAgICAgIHIubm9kZVNoYXBlc1tyLmdldE5vZGVTaGFwZShub2RlKV0uZHJhdyhjb250ZXh0LCBwb3MueCwgcG9zLnksIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGRhcmtlbiA9IGZ1bmN0aW9uIGRhcmtlbigpIHtcbiAgICB2YXIgZGFya2VuT3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZWxlT3BhY2l0eTtcbiAgICB2YXIgb3BhY2l0eSA9IChkYXJrbmVzcyA+IDAgPyBkYXJrbmVzcyA6IC1kYXJrbmVzcykgKiBkYXJrZW5PcGFjaXR5O1xuICAgIHZhciBjID0gZGFya25lc3MgPiAwID8gMCA6IDI1NTtcblxuICAgIGlmIChkYXJrbmVzcyAhPT0gMCkge1xuICAgICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjLCBjLCBjLCBvcGFjaXR5KTtcblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuZmlsbChwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd0JvcmRlciA9IGZ1bmN0aW9uIGRyYXdCb3JkZXIoKSB7XG4gICAgaWYgKGJvcmRlcldpZHRoID4gMCkge1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSBib3JkZXJXaWR0aDtcbiAgICAgIGNvbnRleHQubGluZUNhcCA9ICdidXR0JztcblxuICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgLy8gZm9yIHZlcnkgb3V0b2ZkYXRlIGJyb3dzZXJzXG4gICAgICAgIHN3aXRjaCAoYm9yZGVyU3R5bGUpIHtcbiAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbNCwgMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdzb2xpZCc6XG4gICAgICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvcmRlclN0eWxlID09PSAnZG91YmxlJykge1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoIC8gMztcbiAgICAgICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuXG4gICAgICAgIGlmICh1c2VQYXRocykge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGdjbztcbiAgICAgIH0gLy8gcmVzZXQgaW4gY2FzZSB3ZSBjaGFuZ2VkIHRoZSBib3JkZXIgc3R5bGVcblxuXG4gICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBkcmF3T3ZlcmxheSA9IGZ1bmN0aW9uIGRyYXdPdmVybGF5KCkge1xuICAgIGlmIChzaG91bGREcmF3T3ZlcmxheSkge1xuICAgICAgci5kcmF3Tm9kZU92ZXJsYXkoY29udGV4dCwgbm9kZSwgcG9zLCBub2RlV2lkdGgsIG5vZGVIZWlnaHQpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd1VuZGVybGF5ID0gZnVuY3Rpb24gZHJhd1VuZGVybGF5KCkge1xuICAgIGlmIChzaG91bGREcmF3T3ZlcmxheSkge1xuICAgICAgci5kcmF3Tm9kZVVuZGVybGF5KGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRyYXdUZXh0ID0gZnVuY3Rpb24gZHJhd1RleHQoKSB7XG4gICAgci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgbm9kZSwgbnVsbCwgZHJhd0xhYmVsKTtcbiAgfTtcblxuICB2YXIgZ2hvc3QgPSBub2RlLnBzdHlsZSgnZ2hvc3QnKS52YWx1ZSA9PT0gJ3llcyc7XG5cbiAgaWYgKGdob3N0KSB7XG4gICAgdmFyIGd4ID0gbm9kZS5wc3R5bGUoJ2dob3N0LW9mZnNldC14JykucGZWYWx1ZTtcbiAgICB2YXIgZ3kgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXknKS5wZlZhbHVlO1xuICAgIHZhciBnaG9zdE9wYWNpdHkgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb3BhY2l0eScpLnZhbHVlO1xuICAgIHZhciBlZmZHaG9zdE9wYWNpdHkgPSBnaG9zdE9wYWNpdHkgKiBlbGVPcGFjaXR5O1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGd4LCBneSk7XG4gICAgc2V0dXBTaGFwZUNvbG9yKGdob3N0T3BhY2l0eSAqIGJnT3BhY2l0eSk7XG4gICAgZHJhd1NoYXBlKCk7XG4gICAgZHJhd0ltYWdlcyhlZmZHaG9zdE9wYWNpdHksIHRydWUpO1xuICAgIHNldHVwQm9yZGVyQ29sb3IoZ2hvc3RPcGFjaXR5ICogYm9yZGVyT3BhY2l0eSk7XG4gICAgZHJhd0JvcmRlcigpO1xuICAgIGRyYXdQaWUoZGFya25lc3MgIT09IDAgfHwgYm9yZGVyV2lkdGggIT09IDApO1xuICAgIGRyYXdJbWFnZXMoZWZmR2hvc3RPcGFjaXR5LCBmYWxzZSk7XG4gICAgZGFya2VuKGVmZkdob3N0T3BhY2l0eSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWd4LCAtZ3kpO1xuICB9XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXBvcy54LCAtcG9zLnkpO1xuICB9XG5cbiAgZHJhd1VuZGVybGF5KCk7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUocG9zLngsIHBvcy55KTtcbiAgfVxuXG4gIHNldHVwU2hhcGVDb2xvcigpO1xuICBkcmF3U2hhcGUoKTtcbiAgZHJhd0ltYWdlcyhlbGVPcGFjaXR5LCB0cnVlKTtcbiAgc2V0dXBCb3JkZXJDb2xvcigpO1xuICBkcmF3Qm9yZGVyKCk7XG4gIGRyYXdQaWUoZGFya25lc3MgIT09IDAgfHwgYm9yZGVyV2lkdGggIT09IDApO1xuICBkcmF3SW1hZ2VzKGVsZU9wYWNpdHksIGZhbHNlKTtcbiAgZGFya2VuKCk7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXBvcy54LCAtcG9zLnkpO1xuICB9XG5cbiAgZHJhd1RleHQoKTtcbiAgZHJhd092ZXJsYXkoKTsgLy9cbiAgLy8gY2xlYW4gdXAgc2hpZnRcblxuICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gIH1cbn07XG5cbnZhciBkcmF3Tm9kZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlJyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuXG4gICAgaWYgKCFub2RlLnZpc2libGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwYWRkaW5nID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLXBhZGRpbmdcIikpLnBmVmFsdWU7XG4gICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG4gICAgdmFyIGNvbG9yID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLWNvbG9yXCIpKS52YWx1ZTtcbiAgICB2YXIgc2hhcGUgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItc2hhcGVcIikpLnZhbHVlO1xuXG4gICAgaWYgKG9wYWNpdHkgPiAwKSB7XG4gICAgICBwb3MgPSBwb3MgfHwgbm9kZS5wb3NpdGlvbigpO1xuXG4gICAgICBpZiAobm9kZVdpZHRoID09IG51bGwgfHwgbm9kZUhlaWdodCA9PSBudWxsKSB7XG4gICAgICAgIHZhciBfcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuXG4gICAgICAgIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKSArIDIgKiBfcGFkZGluZztcbiAgICAgICAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogX3BhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgIHIuY29sb3JGaWxsU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gICAgICByLm5vZGVTaGFwZXNbc2hhcGVdLmRyYXcoY29udGV4dCwgcG9zLngsIHBvcy55LCBub2RlV2lkdGggKyBwYWRkaW5nICogMiwgbm9kZUhlaWdodCArIHBhZGRpbmcgKiAyKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfTtcbn07XG5cbkNScCQ1LmRyYXdOb2RlT3ZlcmxheSA9IGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KCdvdmVybGF5Jyk7XG5DUnAkNS5kcmF3Tm9kZVVuZGVybGF5ID0gZHJhd05vZGVPdmVybGF5VW5kZXJsYXkoJ3VuZGVybGF5Jyk7IC8vIGRvZXMgdGhlIG5vZGUgaGF2ZSBhdCBsZWFzdCBvbmUgcGllIHBpZWNlP1xuXG5DUnAkNS5oYXNQaWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICBub2RlID0gbm9kZVswXTsgLy8gZW5zdXJlIGVsZSByZWZcblxuICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5oYXNQaWU7XG59O1xuXG5DUnAkNS5kcmF3UGllID0gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIG5vZGVPcGFjaXR5LCBwb3MpIHtcbiAgbm9kZSA9IG5vZGVbMF07IC8vIGVuc3VyZSBlbGUgcmVmXG5cbiAgcG9zID0gcG9zIHx8IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIGN5U3R5bGUgPSBub2RlLmN5KCkuc3R5bGUoKTtcbiAgdmFyIHBpZVNpemUgPSBub2RlLnBzdHlsZSgncGllLXNpemUnKTtcbiAgdmFyIHggPSBwb3MueDtcbiAgdmFyIHkgPSBwb3MueTtcbiAgdmFyIG5vZGVXID0gbm9kZS53aWR0aCgpO1xuICB2YXIgbm9kZUggPSBub2RlLmhlaWdodCgpO1xuICB2YXIgcmFkaXVzID0gTWF0aC5taW4obm9kZVcsIG5vZGVIKSAvIDI7IC8vIG11c3QgZml0IGluIG5vZGVcblxuICB2YXIgbGFzdFBlcmNlbnQgPSAwOyAvLyB3aGF0ICUgdG8gY29udGludWUgZHJhd2luZyBwaWUgc2xpY2VzIGZyb20gb24gWzAsIDFdXG5cbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIHggPSAwO1xuICAgIHkgPSAwO1xuICB9XG5cbiAgaWYgKHBpZVNpemUudW5pdHMgPT09ICclJykge1xuICAgIHJhZGl1cyA9IHJhZGl1cyAqIHBpZVNpemUucGZWYWx1ZTtcbiAgfSBlbHNlIGlmIChwaWVTaXplLnBmVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJhZGl1cyA9IHBpZVNpemUucGZWYWx1ZSAvIDI7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMTsgaSA8PSBjeVN0eWxlLnBpZUJhY2tncm91bmROOyBpKyspIHtcbiAgICAvLyAxLi5OXG4gICAgdmFyIHNpemUgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLXNpemUnKS52YWx1ZTtcbiAgICB2YXIgY29sb3IgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLW9wYWNpdHknKS52YWx1ZSAqIG5vZGVPcGFjaXR5O1xuICAgIHZhciBwZXJjZW50ID0gc2l6ZSAvIDEwMDsgLy8gbWFwIGludGVnZXIgcmFuZ2UgWzAsIDEwMF0gdG8gWzAsIDFdXG4gICAgLy8gcGVyY2VudCBjYW4ndCBwdXNoIGJleW9uZCAxXG5cbiAgICBpZiAocGVyY2VudCArIGxhc3RQZXJjZW50ID4gMSkge1xuICAgICAgcGVyY2VudCA9IDEgLSBsYXN0UGVyY2VudDtcbiAgICB9XG5cbiAgICB2YXIgYW5nbGVTdGFydCA9IDEuNSAqIE1hdGguUEkgKyAyICogTWF0aC5QSSAqIGxhc3RQZXJjZW50OyAvLyBzdGFydCBhdCAxMiBvJ2Nsb2NrIGFuZCBnbyBjbG9ja3dpc2VcblxuICAgIHZhciBhbmdsZURlbHRhID0gMiAqIE1hdGguUEkgKiBwZXJjZW50O1xuICAgIHZhciBhbmdsZUVuZCA9IGFuZ2xlU3RhcnQgKyBhbmdsZURlbHRhOyAvLyBpZ25vcmUgaWZcbiAgICAvLyAtIHplcm8gc2l6ZVxuICAgIC8vIC0gd2UncmUgYWxyZWFkeSBiZXlvbmQgdGhlIGZ1bGwgY2lyY2xlXG4gICAgLy8gLSBhZGRpbmcgdGhlIGN1cnJlbnQgc2xpY2Ugd291bGQgZ28gYmV5b25kIHRoZSBmdWxsIGNpcmNsZVxuXG4gICAgaWYgKHNpemUgPT09IDAgfHwgbGFzdFBlcmNlbnQgPj0gMSB8fCBsYXN0UGVyY2VudCArIHBlcmNlbnQgPiAxKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgIGNvbnRleHQuYXJjKHgsIHksIHJhZGl1cywgYW5nbGVTdGFydCwgYW5nbGVFbmQpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBsYXN0UGVyY2VudCArPSBwZXJjZW50O1xuICB9XG59O1xuXG52YXIgQ1JwJDYgPSB7fTtcbnZhciBtb3Rpb25CbHVyRGVsYXkgPSAxMDA7IC8vIHZhciBpc0ZpcmVmb3ggPSB0eXBlb2YgSW5zdGFsbFRyaWdnZXIgIT09ICd1bmRlZmluZWQnO1xuXG5DUnAkNi5nZXRQaXhlbFJhdGlvID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY29udGV4dCA9IHRoaXMuZGF0YS5jb250ZXh0c1swXTtcblxuICBpZiAodGhpcy5mb3JjZWRQaXhlbFJhdGlvICE9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JjZWRQaXhlbFJhdGlvO1xuICB9XG5cbiAgdmFyIGJhY2tpbmdTdG9yZSA9IGNvbnRleHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fCBjb250ZXh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQubXNCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiAod2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSkgLyBiYWNraW5nU3RvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbn07XG5cbkNScCQ2LnBhaW50Q2FjaGUgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgY2FjaGVzID0gdGhpcy5wYWludENhY2hlcyA9IHRoaXMucGFpbnRDYWNoZXMgfHwgW107XG4gIHZhciBuZWVkVG9DcmVhdGVDYWNoZSA9IHRydWU7XG4gIHZhciBjYWNoZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNhY2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlID0gY2FjaGVzW2ldO1xuXG4gICAgaWYgKGNhY2hlLmNvbnRleHQgPT09IGNvbnRleHQpIHtcbiAgICAgIG5lZWRUb0NyZWF0ZUNhY2hlID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAobmVlZFRvQ3JlYXRlQ2FjaGUpIHtcbiAgICBjYWNoZSA9IHtcbiAgICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgICB9O1xuICAgIGNhY2hlcy5wdXNoKGNhY2hlKTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZTtcbn07XG5cbkNScCQ2LmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IgPSBmdW5jdGlvbiAoY29udGV4dCwgc2hhcGVTdHlsZU5hbWUsIGVsZSwgZmlsbCwgb3BhY2l0eSkge1xuICB2YXIgZ3JhZGllbnRTdHlsZTtcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICB2YXIgY29sb3JzID0gZWxlLnBzdHlsZShzaGFwZVN0eWxlTmFtZSArICctZ3JhZGllbnQtc3RvcC1jb2xvcnMnKS52YWx1ZSxcbiAgICAgIHBvc2l0aW9ucyA9IGVsZS5wc3R5bGUoc2hhcGVTdHlsZU5hbWUgKyAnLWdyYWRpZW50LXN0b3AtcG9zaXRpb25zJykucGZWYWx1ZTtcblxuICBpZiAoZmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgc3RhcnQgPSBlbGUuc291cmNlRW5kcG9pbnQoKSxcbiAgICAgICAgICBlbmQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKSxcbiAgICAgICAgICBtaWQgPSBlbGUubWlkcG9pbnQoKTtcbiAgICAgIHZhciBkMSA9IGRpc3Qoc3RhcnQsIG1pZCk7XG4gICAgICB2YXIgZDIgPSBkaXN0KGVuZCwgbWlkKTtcbiAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KG1pZC54LCBtaWQueSwgMCwgbWlkLngsIG1pZC55LCBNYXRoLm1heChkMSwgZDIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBvcyA9IHVzZVBhdGhzID8ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9IDogZWxlLnBvc2l0aW9uKCksXG4gICAgICAgICAgd2lkdGggPSBlbGUucGFkZGVkV2lkdGgoKSxcbiAgICAgICAgICBoZWlnaHQgPSBlbGUucGFkZGVkSGVpZ2h0KCk7XG4gICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChwb3MueCwgcG9zLnksIDAsIHBvcy54LCBwb3MueSwgTWF0aC5tYXgod2lkdGgsIGhlaWdodCkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgX3N0YXJ0ID0gZWxlLnNvdXJjZUVuZHBvaW50KCksXG4gICAgICAgICAgX2VuZCA9IGVsZS50YXJnZXRFbmRwb2ludCgpO1xuXG4gICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfc3RhcnQueCwgX3N0YXJ0LnksIF9lbmQueCwgX2VuZC55KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9wb3MgPSB1c2VQYXRocyA/IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSA6IGVsZS5wb3NpdGlvbigpLFxuICAgICAgICAgIF93aWR0aCA9IGVsZS5wYWRkZWRXaWR0aCgpLFxuICAgICAgICAgIF9oZWlnaHQgPSBlbGUucGFkZGVkSGVpZ2h0KCksXG4gICAgICAgICAgaGFsZldpZHRoID0gX3dpZHRoIC8gMixcbiAgICAgICAgICBoYWxmSGVpZ2h0ID0gX2hlaWdodCAvIDI7XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbicpLnZhbHVlO1xuXG4gICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICBjYXNlICd0by1ib3R0b20nOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54LCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by10b3AnOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCwgX3Bvcy55ICsgaGFsZkhlaWdodCwgX3Bvcy54LCBfcG9zLnkgLSBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by1sZWZ0JzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSwgX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0JzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggLSBoYWxmV2lkdGgsIF9wb3MueSwgX3Bvcy54ICsgaGFsZldpZHRoLCBfcG9zLnkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1yaWdodCc6XG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0LWJvdHRvbSc6XG4gICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgLSBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLXRvcC1yaWdodCc6XG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0LXRvcCc6XG4gICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSAtIGhhbGZIZWlnaHQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1sZWZ0JzpcbiAgICAgICAgY2FzZSAndG8tbGVmdC1ib3R0b20nOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCArIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by10b3AtbGVmdCc6XG4gICAgICAgIGNhc2UgJ3RvLWxlZnQtdG9wJzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQsIF9wb3MueCAtIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFncmFkaWVudFN0eWxlKSByZXR1cm4gbnVsbDsgLy8gaW52YWxpZCBncmFkaWVudCBzdHlsZVxuXG4gIHZhciBoYXNQb3NpdGlvbnMgPSBwb3NpdGlvbnMubGVuZ3RoID09PSBjb2xvcnMubGVuZ3RoO1xuICB2YXIgbGVuZ3RoID0gY29sb3JzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgZ3JhZGllbnRTdHlsZS5hZGRDb2xvclN0b3AoaGFzUG9zaXRpb25zID8gcG9zaXRpb25zW2ldIDogaSAvIChsZW5ndGggLSAxKSwgJ3JnYmEoJyArIGNvbG9yc1tpXVswXSArICcsJyArIGNvbG9yc1tpXVsxXSArICcsJyArIGNvbG9yc1tpXVsyXSArICcsJyArIG9wYWNpdHkgKyAnKScpO1xuICB9XG5cbiAgcmV0dXJuIGdyYWRpZW50U3R5bGU7XG59O1xuXG5DUnAkNi5ncmFkaWVudEZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgdmFyIGdyYWRpZW50U3R5bGUgPSB0aGlzLmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IoY29udGV4dCwgJ2JhY2tncm91bmQnLCBlbGUsIGZpbGwsIG9wYWNpdHkpO1xuICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gIGNvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGllbnRTdHlsZTtcbn07XG5cbkNScCQ2LmNvbG9yRmlsbFN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIHIsIGcsIGIsIGEpIHtcbiAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAvLyB2YXIgY2FjaGUgPSB0aGlzLnBhaW50Q2FjaGUoY29udGV4dCk7XG4gIC8vIHZhciBmaWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJztcbiAgLy8gaWYoIGNhY2hlLmZpbGxTdHlsZSAhPT0gZmlsbFN0eWxlICl7XG4gIC8vICAgY29udGV4dC5maWxsU3R5bGUgPSBjYWNoZS5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gIC8vIH1cbn07XG5cbkNScCQ2LmVsZUZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIG9wYWNpdHkpIHtcbiAgdmFyIGJhY2tncm91bmRGaWxsID0gZWxlLnBzdHlsZSgnYmFja2dyb3VuZC1maWxsJykudmFsdWU7XG5cbiAgaWYgKGJhY2tncm91bmRGaWxsID09PSAnbGluZWFyLWdyYWRpZW50JyB8fCBiYWNrZ3JvdW5kRmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICB0aGlzLmdyYWRpZW50RmlsbFN0eWxlKGNvbnRleHQsIGVsZSwgYmFja2dyb3VuZEZpbGwsIG9wYWNpdHkpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBiYWNrZ3JvdW5kQ29sb3JbMF0sIGJhY2tncm91bmRDb2xvclsxXSwgYmFja2dyb3VuZENvbG9yWzJdLCBvcGFjaXR5KTtcbiAgfVxufTtcblxuQ1JwJDYuZ3JhZGllbnRTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgdmFyIGdyYWRpZW50U3R5bGUgPSB0aGlzLmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IoY29udGV4dCwgJ2xpbmUnLCBlbGUsIGZpbGwsIG9wYWNpdHkpO1xuICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBncmFkaWVudFN0eWxlO1xufTtcblxuQ1JwJDYuY29sb3JTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCByLCBnLCBiLCBhKSB7XG4gIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAvLyB2YXIgY2FjaGUgPSB0aGlzLnBhaW50Q2FjaGUoY29udGV4dCk7XG4gIC8vIHZhciBzdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyByICsgJywnICsgZyArICcsJyArIGIgKyAnLCcgKyBhICsgJyknO1xuICAvLyBpZiggY2FjaGUuc3Ryb2tlU3R5bGUgIT09IHN0cm9rZVN0eWxlICl7XG4gIC8vICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNhY2hlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7XG4gIC8vIH1cbn07XG5cbkNScCQ2LmVsZVN0cm9rZVN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgb3BhY2l0eSkge1xuICB2YXIgbGluZUZpbGwgPSBlbGUucHN0eWxlKCdsaW5lLWZpbGwnKS52YWx1ZTtcblxuICBpZiAobGluZUZpbGwgPT09ICdsaW5lYXItZ3JhZGllbnQnIHx8IGxpbmVGaWxsID09PSAncmFkaWFsLWdyYWRpZW50Jykge1xuICAgIHRoaXMuZ3JhZGllbnRTdHJva2VTdHlsZShjb250ZXh0LCBlbGUsIGxpbmVGaWxsLCBvcGFjaXR5KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGluZUNvbG9yID0gZWxlLnBzdHlsZSgnbGluZS1jb2xvcicpLnZhbHVlO1xuICAgIHRoaXMuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBsaW5lQ29sb3JbMF0sIGxpbmVDb2xvclsxXSwgbGluZUNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgfVxufTsgLy8gUmVzaXplIGNhbnZhc1xuXG5cbkNScCQ2Lm1hdGNoQ2FudmFzU2l6ZSA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgZGF0YSA9IHIuZGF0YTtcbiAgdmFyIGJiID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gIHZhciB3aWR0aCA9IGJiWzJdO1xuICB2YXIgaGVpZ2h0ID0gYmJbM107XG4gIHZhciBwaXhlbFJhdGlvID0gci5nZXRQaXhlbFJhdGlvKCk7XG4gIHZhciBtYlB4UmF0aW8gPSByLm1vdGlvbkJsdXJQeFJhdGlvO1xuXG4gIGlmIChjb250YWluZXIgPT09IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdIHx8IGNvbnRhaW5lciA9PT0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR10pIHtcbiAgICBwaXhlbFJhdGlvID0gbWJQeFJhdGlvO1xuICB9XG5cbiAgdmFyIGNhbnZhc1dpZHRoID0gd2lkdGggKiBwaXhlbFJhdGlvO1xuICB2YXIgY2FudmFzSGVpZ2h0ID0gaGVpZ2h0ICogcGl4ZWxSYXRpbztcbiAgdmFyIGNhbnZhcztcblxuICBpZiAoY2FudmFzV2lkdGggPT09IHIuY2FudmFzV2lkdGggJiYgY2FudmFzSGVpZ2h0ID09PSByLmNhbnZhc0hlaWdodCkge1xuICAgIHJldHVybjsgLy8gc2F2ZSBjeWNsZXMgaWYgc2FtZVxuICB9XG5cbiAgci5mb250Q2FjaGVzID0gbnVsbDsgLy8gcmVzaXppbmcgcmVzZXRzIHRoZSBzdHlsZVxuXG4gIHZhciBjYW52YXNDb250YWluZXIgPSBkYXRhLmNhbnZhc0NvbnRhaW5lcjtcbiAgY2FudmFzQ29udGFpbmVyLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICBjYW52YXNDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHIuQ0FOVkFTX0xBWUVSUzsgaSsrKSB7XG4gICAgY2FudmFzID0gZGF0YS5jYW52YXNlc1tpXTtcbiAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgci5CVUZGRVJfQ09VTlQ7IGkrKykge1xuICAgIGNhbnZhcyA9IGRhdGEuYnVmZmVyQ2FudmFzZXNbaV07XG4gICAgY2FudmFzLndpZHRoID0gY2FudmFzV2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gIH1cblxuICByLnRleHR1cmVNdWx0ID0gMTtcblxuICBpZiAocGl4ZWxSYXRpbyA8PSAxKSB7XG4gICAgY2FudmFzID0gZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICByLnRleHR1cmVNdWx0ID0gMjtcbiAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aCAqIHIudGV4dHVyZU11bHQ7XG4gICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHIudGV4dHVyZU11bHQ7XG4gIH1cblxuICByLmNhbnZhc1dpZHRoID0gY2FudmFzV2lkdGg7XG4gIHIuY2FudmFzSGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xufTtcblxuQ1JwJDYucmVuZGVyVG8gPSBmdW5jdGlvbiAoY3h0LCB6b29tLCBwYW4sIHB4UmF0aW8pIHtcbiAgdGhpcy5yZW5kZXIoe1xuICAgIGZvcmNlZENvbnRleHQ6IGN4dCxcbiAgICBmb3JjZWRab29tOiB6b29tLFxuICAgIGZvcmNlZFBhbjogcGFuLFxuICAgIGRyYXdBbGxMYXllcnM6IHRydWUsXG4gICAgZm9yY2VkUHhSYXRpbzogcHhSYXRpb1xuICB9KTtcbn07XG5cbkNScCQ2LnJlbmRlciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gIHZhciBmb3JjZWRDb250ZXh0ID0gb3B0aW9ucy5mb3JjZWRDb250ZXh0O1xuICB2YXIgZHJhd0FsbExheWVycyA9IG9wdGlvbnMuZHJhd0FsbExheWVycztcbiAgdmFyIGRyYXdPbmx5Tm9kZUxheWVyID0gb3B0aW9ucy5kcmF3T25seU5vZGVMYXllcjtcbiAgdmFyIGZvcmNlZFpvb20gPSBvcHRpb25zLmZvcmNlZFpvb207XG4gIHZhciBmb3JjZWRQYW4gPSBvcHRpb25zLmZvcmNlZFBhbjtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgcGl4ZWxSYXRpbyA9IG9wdGlvbnMuZm9yY2VkUHhSYXRpbyA9PT0gdW5kZWZpbmVkID8gdGhpcy5nZXRQaXhlbFJhdGlvKCkgOiBvcHRpb25zLmZvcmNlZFB4UmF0aW87XG4gIHZhciBjeSA9IHIuY3k7XG4gIHZhciBkYXRhID0gci5kYXRhO1xuICB2YXIgbmVlZERyYXcgPSBkYXRhLmNhbnZhc05lZWRzUmVkcmF3O1xuICB2YXIgdGV4dHVyZURyYXcgPSByLnRleHR1cmVPblZpZXdwb3J0ICYmICFmb3JjZWRDb250ZXh0ICYmIChyLnBpbmNoaW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nIHx8IHIuc3dpcGVQYW5uaW5nIHx8IHIuZGF0YS53aGVlbFpvb21pbmcpO1xuICB2YXIgbW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1ciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5tb3Rpb25CbHVyIDogci5tb3Rpb25CbHVyO1xuICB2YXIgbWJQeFJhdGlvID0gci5tb3Rpb25CbHVyUHhSYXRpbztcbiAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBpbk5vZGVEcmFnR2VzdHVyZSA9IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcztcbiAgdmFyIGluQm94U2VsZWN0aW9uID0gci5ob3ZlckRhdGEuc2VsZWN0aW5nIHx8IHIudG91Y2hEYXRhLnNlbGVjdGluZyA/IHRydWUgOiBmYWxzZTtcbiAgbW90aW9uQmx1ciA9IG1vdGlvbkJsdXIgJiYgIWZvcmNlZENvbnRleHQgJiYgci5tb3Rpb25CbHVyRW5hYmxlZCAmJiAhaW5Cb3hTZWxlY3Rpb247XG4gIHZhciBtb3Rpb25CbHVyRmFkZUVmZmVjdCA9IG1vdGlvbkJsdXI7XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgaWYgKHIucHJldlB4UmF0aW8gIT09IHBpeGVsUmF0aW8pIHtcbiAgICAgIHIuaW52YWxpZGF0ZUNvbnRhaW5lckNsaWVudENvb3Jkc0NhY2hlKCk7XG4gICAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgIH1cblxuICAgIHIucHJldlB4UmF0aW8gPSBwaXhlbFJhdGlvO1xuICB9XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0ICYmIHIubW90aW9uQmx1clRpbWVvdXQpIHtcbiAgICBjbGVhclRpbWVvdXQoci5tb3Rpb25CbHVyVGltZW91dCk7XG4gIH1cblxuICBpZiAobW90aW9uQmx1cikge1xuICAgIGlmIChyLm1iRnJhbWVzID09IG51bGwpIHtcbiAgICAgIHIubWJGcmFtZXMgPSAwO1xuICAgIH1cblxuICAgIHIubWJGcmFtZXMrKztcblxuICAgIGlmIChyLm1iRnJhbWVzIDwgMykge1xuICAgICAgLy8gbmVlZCBzZXZlcmFsIGZyYW1lcyBiZWZvcmUgZXZlbiBoaWdoIHF1YWxpdHkgbW90aW9uYmx1clxuICAgICAgbW90aW9uQmx1ckZhZGVFZmZlY3QgPSBmYWxzZTtcbiAgICB9IC8vIGdvIHRvIGxvd2VyIHF1YWxpdHkgYmx1cnJ5IGZyYW1lcyB3aGVuIHNldmVyYWwgbS9iIGZyYW1lcyBoYXZlIGJlZW4gcmVuZGVyZWQgKGF2b2lkcyBmbGFzaGluZylcblxuXG4gICAgaWYgKHIubWJGcmFtZXMgPiByLm1pbk1iTG93UXVhbEZyYW1lcykge1xuICAgICAgLy9yLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSByLm1iUHhSQmx1cnJ5O1xuICAgIH1cbiAgfVxuXG4gIGlmIChyLmNsZWFyaW5nTW90aW9uQmx1cikge1xuICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICB9IC8vIGIvYyBkcmF3VG9Db250ZXh0KCkgbWF5IGJlIGFzeW5jIHcuci50LiByZWRyYXcoKSwga2VlcCB0cmFjayBvZiBsYXN0IHRleHR1cmUgZnJhbWVcbiAgLy8gYmVjYXVzZSBhIHJvZ3VlIGFzeW5jIHRleHR1cmUgZnJhbWUgd291bGQgY2xlYXIgbmVlZERyYXdcblxuXG4gIGlmIChyLnRleHR1cmVEcmF3TGFzdEZyYW1lICYmICF0ZXh0dXJlRHJhdykge1xuICAgIG5lZWREcmF3W3IuTk9ERV0gPSB0cnVlO1xuICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcbiAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gIHZhciBlZmZlY3RpdmVab29tID0gZm9yY2VkWm9vbSAhPT0gdW5kZWZpbmVkID8gZm9yY2VkWm9vbSA6IHpvb207XG4gIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgdmFyIGVmZmVjdGl2ZVBhbiA9IHtcbiAgICB4OiBwYW4ueCxcbiAgICB5OiBwYW4ueVxuICB9O1xuICB2YXIgdnAgPSB7XG4gICAgem9vbTogem9vbSxcbiAgICBwYW46IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9XG4gIH07XG4gIHZhciBwcmV2VnAgPSByLnByZXZWaWV3cG9ydDtcbiAgdmFyIHZpZXdwb3J0SXNEaWZmID0gcHJldlZwID09PSB1bmRlZmluZWQgfHwgdnAuem9vbSAhPT0gcHJldlZwLnpvb20gfHwgdnAucGFuLnggIT09IHByZXZWcC5wYW4ueCB8fCB2cC5wYW4ueSAhPT0gcHJldlZwLnBhbi55OyAvLyB3ZSB3YW50IHRoZSBsb3cgcXVhbGl0eSBtb3Rpb25ibHVyIG9ubHkgd2hlbiB0aGUgdmlld3BvcnQgaXMgYmVpbmcgbWFuaXB1bGF0ZWQgZXRjICh3aGVyZSBpdCdzIG5vdCBub3RpY2VkKVxuXG4gIGlmICghdmlld3BvcnRJc0RpZmYgJiYgIShpbk5vZGVEcmFnR2VzdHVyZSAmJiAhaGFzQ29tcG91bmROb2RlcykpIHtcbiAgICByLm1vdGlvbkJsdXJQeFJhdGlvID0gMTtcbiAgfVxuXG4gIGlmIChmb3JjZWRQYW4pIHtcbiAgICBlZmZlY3RpdmVQYW4gPSBmb3JjZWRQYW47XG4gIH0gLy8gYXBwbHkgcGl4ZWwgcmF0aW9cblxuXG4gIGVmZmVjdGl2ZVpvb20gKj0gcGl4ZWxSYXRpbztcbiAgZWZmZWN0aXZlUGFuLnggKj0gcGl4ZWxSYXRpbztcbiAgZWZmZWN0aXZlUGFuLnkgKj0gcGl4ZWxSYXRpbztcbiAgdmFyIGVsZXMgPSByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgZnVuY3Rpb24gbWJjbGVhcihjb250ZXh0LCB4LCB5LCB3LCBoKSB7XG4gICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCAyNTUsIDI1NSwgMjU1LCByLm1vdGlvbkJsdXJUcmFuc3BhcmVuY3kpO1xuICAgIGNvbnRleHQuZmlsbFJlY3QoeCwgeSwgdywgaCk7XG4gICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gIH1cblxuICBmdW5jdGlvbiBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIGNsZWFyKSB7XG4gICAgdmFyIGVQYW4sIGVab29tLCB3LCBoO1xuXG4gICAgaWYgKCFyLmNsZWFyaW5nTW90aW9uQmx1ciAmJiAoY29udGV4dCA9PT0gZGF0YS5idWZmZXJDb250ZXh0c1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdIHx8IGNvbnRleHQgPT09IGRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9EUkFHXSkpIHtcbiAgICAgIGVQYW4gPSB7XG4gICAgICAgIHg6IHBhbi54ICogbWJQeFJhdGlvLFxuICAgICAgICB5OiBwYW4ueSAqIG1iUHhSYXRpb1xuICAgICAgfTtcbiAgICAgIGVab29tID0gem9vbSAqIG1iUHhSYXRpbztcbiAgICAgIHcgPSByLmNhbnZhc1dpZHRoICogbWJQeFJhdGlvO1xuICAgICAgaCA9IHIuY2FudmFzSGVpZ2h0ICogbWJQeFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICBlUGFuID0gZWZmZWN0aXZlUGFuO1xuICAgICAgZVpvb20gPSBlZmZlY3RpdmVab29tO1xuICAgICAgdyA9IHIuY2FudmFzV2lkdGg7XG4gICAgICBoID0gci5jYW52YXNIZWlnaHQ7XG4gICAgfVxuXG4gICAgY29udGV4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG5cbiAgICBpZiAoY2xlYXIgPT09ICdtb3Rpb25CbHVyJykge1xuICAgICAgbWJjbGVhcihjb250ZXh0LCAwLCAwLCB3LCBoKTtcbiAgICB9IGVsc2UgaWYgKCFmb3JjZWRDb250ZXh0ICYmIChjbGVhciA9PT0gdW5kZWZpbmVkIHx8IGNsZWFyKSkge1xuICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdywgaCk7XG4gICAgfVxuXG4gICAgaWYgKCFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShlUGFuLngsIGVQYW4ueSk7XG4gICAgICBjb250ZXh0LnNjYWxlKGVab29tLCBlWm9vbSk7XG4gICAgfVxuXG4gICAgaWYgKGZvcmNlZFBhbikge1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoZm9yY2VkUGFuLngsIGZvcmNlZFBhbi55KTtcbiAgICB9XG5cbiAgICBpZiAoZm9yY2VkWm9vbSkge1xuICAgICAgY29udGV4dC5zY2FsZShmb3JjZWRab29tLCBmb3JjZWRab29tKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRleHR1cmVEcmF3KSB7XG4gICAgci50ZXh0dXJlRHJhd0xhc3RGcmFtZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRleHR1cmVEcmF3KSB7XG4gICAgci50ZXh0dXJlRHJhd0xhc3RGcmFtZSA9IHRydWU7XG5cbiAgICBpZiAoIXIudGV4dHVyZUNhY2hlKSB7XG4gICAgICByLnRleHR1cmVDYWNoZSA9IHt9O1xuICAgICAgci50ZXh0dXJlQ2FjaGUuYmIgPSBjeS5tdXRhYmxlRWxlbWVudHMoKS5ib3VuZGluZ0JveCgpO1xuICAgICAgci50ZXh0dXJlQ2FjaGUudGV4dHVyZSA9IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICAgIHZhciBjeHQgPSByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5URVhUVVJFX0JVRkZFUl07XG4gICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgY3h0LmNsZWFyUmVjdCgwLCAwLCByLmNhbnZhc1dpZHRoICogci50ZXh0dXJlTXVsdCwgci5jYW52YXNIZWlnaHQgKiByLnRleHR1cmVNdWx0KTtcbiAgICAgIHIucmVuZGVyKHtcbiAgICAgICAgZm9yY2VkQ29udGV4dDogY3h0LFxuICAgICAgICBkcmF3T25seU5vZGVMYXllcjogdHJ1ZSxcbiAgICAgICAgZm9yY2VkUHhSYXRpbzogcGl4ZWxSYXRpbyAqIHIudGV4dHVyZU11bHRcbiAgICAgIH0pO1xuICAgICAgdmFyIHZwID0gci50ZXh0dXJlQ2FjaGUudmlld3BvcnQgPSB7XG4gICAgICAgIHpvb206IGN5Lnpvb20oKSxcbiAgICAgICAgcGFuOiBjeS5wYW4oKSxcbiAgICAgICAgd2lkdGg6IHIuY2FudmFzV2lkdGgsXG4gICAgICAgIGhlaWdodDogci5jYW52YXNIZWlnaHRcbiAgICAgIH07XG4gICAgICB2cC5tcGFuID0ge1xuICAgICAgICB4OiAoMCAtIHZwLnBhbi54KSAvIHZwLnpvb20sXG4gICAgICAgIHk6ICgwIC0gdnAucGFuLnkpIC8gdnAuem9vbVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBuZWVkRHJhd1tyLkRSQUddID0gZmFsc2U7XG4gICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIHZhciBjb250ZXh0ID0gZGF0YS5jb250ZXh0c1tyLk5PREVdO1xuICAgIHZhciB0ZXh0dXJlID0gci50ZXh0dXJlQ2FjaGUudGV4dHVyZTtcbiAgICB2YXIgdnAgPSByLnRleHR1cmVDYWNoZS52aWV3cG9ydDtcbiAgICBjb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcblxuICAgIGlmIChtb3Rpb25CbHVyKSB7XG4gICAgICBtYmNsZWFyKGNvbnRleHQsIDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB2cC53aWR0aCwgdnAuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICB2YXIgb3V0c2lkZUJnQ29sb3IgPSBzdHlsZS5jb3JlKCdvdXRzaWRlLXRleHR1cmUtYmctY29sb3InKS52YWx1ZTtcbiAgICB2YXIgb3V0c2lkZUJnT3BhY2l0eSA9IHN0eWxlLmNvcmUoJ291dHNpZGUtdGV4dHVyZS1iZy1vcGFjaXR5JykudmFsdWU7XG4gICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBvdXRzaWRlQmdDb2xvclswXSwgb3V0c2lkZUJnQ29sb3JbMV0sIG91dHNpZGVCZ0NvbG9yWzJdLCBvdXRzaWRlQmdPcGFjaXR5KTtcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgIHNldENvbnRleHRUcmFuc2Zvcm0oY29udGV4dCwgZmFsc2UpO1xuICAgIGNvbnRleHQuY2xlYXJSZWN0KHZwLm1wYW4ueCwgdnAubXBhbi55LCB2cC53aWR0aCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvLCB2cC5oZWlnaHQgLyB2cC56b29tIC8gcGl4ZWxSYXRpbyk7XG4gICAgY29udGV4dC5kcmF3SW1hZ2UodGV4dHVyZSwgdnAubXBhbi54LCB2cC5tcGFuLnksIHZwLndpZHRoIC8gdnAuem9vbSAvIHBpeGVsUmF0aW8sIHZwLmhlaWdodCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvKTtcbiAgfSBlbHNlIGlmIChyLnRleHR1cmVPblZpZXdwb3J0ICYmICFmb3JjZWRDb250ZXh0KSB7XG4gICAgLy8gY2xlYXIgdGhlIGNhY2hlIHNpbmNlIHdlIGRvbid0IG5lZWQgaXRcbiAgICByLnRleHR1cmVDYWNoZSA9IG51bGw7XG4gIH1cblxuICB2YXIgZXh0ZW50ID0gY3kuZXh0ZW50KCk7XG4gIHZhciB2cE1hbmlwID0gci5waW5jaGluZyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLnN3aXBlUGFubmluZyB8fCByLmRhdGEud2hlZWxab29taW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmN5LmFuaW1hdGVkKCk7XG4gIHZhciBoaWRlRWRnZXMgPSByLmhpZGVFZGdlc09uVmlld3BvcnQgJiYgdnBNYW5pcDtcbiAgdmFyIG5lZWRNYkNsZWFyID0gW107XG4gIG5lZWRNYkNsZWFyW3IuTk9ERV0gPSAhbmVlZERyYXdbci5OT0RFXSAmJiBtb3Rpb25CbHVyICYmICFyLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gfHwgci5jbGVhcmluZ01vdGlvbkJsdXI7XG5cbiAgaWYgKG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICByLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gPSB0cnVlO1xuICB9XG5cbiAgbmVlZE1iQ2xlYXJbci5EUkFHXSA9ICFuZWVkRHJhd1tyLkRSQUddICYmIG1vdGlvbkJsdXIgJiYgIXIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5EUkFHXSB8fCByLmNsZWFyaW5nTW90aW9uQmx1cjtcblxuICBpZiAobmVlZE1iQ2xlYXJbci5EUkFHXSkge1xuICAgIHIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5EUkFHXSA9IHRydWU7XG4gIH1cblxuICBpZiAobmVlZERyYXdbci5OT0RFXSB8fCBkcmF3QWxsTGF5ZXJzIHx8IGRyYXdPbmx5Tm9kZUxheWVyIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICB2YXIgdXNlQnVmZmVyID0gbW90aW9uQmx1ciAmJiAhbmVlZE1iQ2xlYXJbci5OT0RFXSAmJiBtYlB4UmF0aW8gIT09IDE7XG4gICAgdmFyIGNvbnRleHQgPSBmb3JjZWRDb250ZXh0IHx8ICh1c2VCdWZmZXIgPyByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9OT0RFXSA6IGRhdGEuY29udGV4dHNbci5OT0RFXSk7XG4gICAgdmFyIGNsZWFyID0gbW90aW9uQmx1ciAmJiAhdXNlQnVmZmVyID8gJ21vdGlvbkJsdXInIDogdW5kZWZpbmVkO1xuICAgIHNldENvbnRleHRUcmFuc2Zvcm0oY29udGV4dCwgY2xlYXIpO1xuXG4gICAgaWYgKGhpZGVFZGdlcykge1xuICAgICAgci5kcmF3Q2FjaGVkTm9kZXMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByLmRyYXdMYXllcmVkRWxlbWVudHMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgIH1cblxuICAgIGlmIChyLmRlYnVnKSB7XG4gICAgICByLmRyYXdEZWJ1Z1BvaW50cyhjb250ZXh0LCBlbGVzLm5vbmRyYWcpO1xuICAgIH1cblxuICAgIGlmICghZHJhd0FsbExheWVycyAmJiAhbW90aW9uQmx1cikge1xuICAgICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZHJhd09ubHlOb2RlTGF5ZXIgJiYgKG5lZWREcmF3W3IuRFJBR10gfHwgZHJhd0FsbExheWVycyB8fCBuZWVkTWJDbGVhcltyLkRSQUddKSkge1xuICAgIHZhciB1c2VCdWZmZXIgPSBtb3Rpb25CbHVyICYmICFuZWVkTWJDbGVhcltyLkRSQUddICYmIG1iUHhSYXRpbyAhPT0gMTtcbiAgICB2YXIgY29udGV4dCA9IGZvcmNlZENvbnRleHQgfHwgKHVzZUJ1ZmZlciA/IHIuZGF0YS5idWZmZXJDb250ZXh0c1tyLk1PVElPTkJMVVJfQlVGRkVSX0RSQUddIDogZGF0YS5jb250ZXh0c1tyLkRSQUddKTtcbiAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIG1vdGlvbkJsdXIgJiYgIXVzZUJ1ZmZlciA/ICdtb3Rpb25CbHVyJyA6IHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaGlkZUVkZ2VzKSB7XG4gICAgICByLmRyYXdDYWNoZWROb2Rlcyhjb250ZXh0LCBlbGVzLmRyYWcsIHBpeGVsUmF0aW8sIGV4dGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRzKGNvbnRleHQsIGVsZXMuZHJhZywgcGl4ZWxSYXRpbywgZXh0ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoci5kZWJ1Zykge1xuICAgICAgci5kcmF3RGVidWdQb2ludHMoY29udGV4dCwgZWxlcy5kcmFnKTtcbiAgICB9XG5cbiAgICBpZiAoIWRyYXdBbGxMYXllcnMgJiYgIW1vdGlvbkJsdXIpIHtcbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoci5zaG93RnBzIHx8ICFkcmF3T25seU5vZGVMYXllciAmJiBuZWVkRHJhd1tyLlNFTEVDVF9CT1hdICYmICFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgdmFyIGNvbnRleHQgPSBmb3JjZWRDb250ZXh0IHx8IGRhdGEuY29udGV4dHNbci5TRUxFQ1RfQk9YXTtcbiAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQpO1xuXG4gICAgaWYgKHIuc2VsZWN0aW9uWzRdID09IDEgJiYgKHIuaG92ZXJEYXRhLnNlbGVjdGluZyB8fCByLnRvdWNoRGF0YS5zZWxlY3RpbmcpKSB7XG4gICAgICB2YXIgem9vbSA9IHIuY3kuem9vbSgpO1xuICAgICAgdmFyIGJvcmRlcldpZHRoID0gc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnKS52YWx1ZSAvIHpvb207XG4gICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzFdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzJdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1vcGFjaXR5JykudmFsdWUgKyAnKSc7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KHIuc2VsZWN0aW9uWzBdLCByLnNlbGVjdGlvblsxXSwgci5zZWxlY3Rpb25bMl0gLSByLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bM10gLSByLnNlbGVjdGlvblsxXSk7XG5cbiAgICAgIGlmIChib3JkZXJXaWR0aCA+IDApIHtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItY29sb3InKS52YWx1ZVsxXSArICcsJyArIHN0eWxlLmNvcmUoJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJykudmFsdWVbMl0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgICAgY29udGV4dC5zdHJva2VSZWN0KHIuc2VsZWN0aW9uWzBdLCByLnNlbGVjdGlvblsxXSwgci5zZWxlY3Rpb25bMl0gLSByLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bM10gLSByLnNlbGVjdGlvblsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgICAgIHZhciBwb3MgPSBkYXRhLmJnQWN0aXZlUG9zaXN0aW9uO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLWNvbG9yJykudmFsdWVbMF0gKyAnLCcgKyBzdHlsZS5jb3JlKCdhY3RpdmUtYmctY29sb3InKS52YWx1ZVsxXSArICcsJyArIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1jb2xvcicpLnZhbHVlWzJdICsgJywnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICBjb250ZXh0LmFyYyhwb3MueCwgcG9zLnksIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1zaXplJykucGZWYWx1ZSAvIHpvb20sIDAsIDIgKiBNYXRoLlBJKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cblxuICAgIHZhciB0aW1lVG9SZW5kZXIgPSByLmxhc3RSZWRyYXdUaW1lO1xuXG4gICAgaWYgKHIuc2hvd0ZwcyAmJiB0aW1lVG9SZW5kZXIpIHtcbiAgICAgIHRpbWVUb1JlbmRlciA9IE1hdGgucm91bmQodGltZVRvUmVuZGVyKTtcbiAgICAgIHZhciBmcHMgPSBNYXRoLnJvdW5kKDEwMDAgLyB0aW1lVG9SZW5kZXIpO1xuICAgICAgY29udGV4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSAxO1xuICAgICAgY29udGV4dC5maWxsVGV4dCgnMSBmcmFtZSA9ICcgKyB0aW1lVG9SZW5kZXIgKyAnIG1zID0gJyArIGZwcyArICcgZnBzJywgMCwgMjApO1xuICAgICAgdmFyIG1heEZwcyA9IDYwO1xuICAgICAgY29udGV4dC5zdHJva2VSZWN0KDAsIDMwLCAyNTAsIDIwKTtcbiAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMzAsIDI1MCAqIE1hdGgubWluKGZwcyAvIG1heEZwcywgMSksIDIwKTtcbiAgICB9XG5cbiAgICBpZiAoIWRyYXdBbGxMYXllcnMpIHtcbiAgICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSBmYWxzZTtcbiAgICB9XG4gIH0gLy8gbW90aW9uYmx1cjogYmxpdCByZW5kZXJlZCBibHVycnkgZnJhbWVzXG5cblxuICBpZiAobW90aW9uQmx1ciAmJiBtYlB4UmF0aW8gIT09IDEpIHtcbiAgICB2YXIgY3h0Tm9kZSA9IGRhdGEuY29udGV4dHNbci5OT0RFXTtcbiAgICB2YXIgdHh0Tm9kZSA9IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdO1xuICAgIHZhciBjeHREcmFnID0gZGF0YS5jb250ZXh0c1tyLkRSQUddO1xuICAgIHZhciB0eHREcmFnID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR107XG5cbiAgICB2YXIgZHJhd01vdGlvbkJsdXIgPSBmdW5jdGlvbiBkcmF3TW90aW9uQmx1cihjeHQsIHR4dCwgbmVlZENsZWFyKSB7XG4gICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuXG4gICAgICBpZiAobmVlZENsZWFyIHx8ICFtb3Rpb25CbHVyRmFkZUVmZmVjdCkge1xuICAgICAgICBjeHQuY2xlYXJSZWN0KDAsIDAsIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1iY2xlYXIoY3h0LCAwLCAwLCByLmNhbnZhc1dpZHRoLCByLmNhbnZhc0hlaWdodCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBweHIgPSBtYlB4UmF0aW87XG4gICAgICBjeHQuZHJhd0ltYWdlKHR4dCwgLy8gaW1nXG4gICAgICAwLCAwLCAvLyBzeCwgc3lcbiAgICAgIHIuY2FudmFzV2lkdGggKiBweHIsIHIuY2FudmFzSGVpZ2h0ICogcHhyLCAvLyBzdywgc2hcbiAgICAgIDAsIDAsIC8vIHgsIHlcbiAgICAgIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0IC8vIHcsIGhcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGlmIChuZWVkRHJhd1tyLk5PREVdIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dE5vZGUsIHR4dE5vZGUsIG5lZWRNYkNsZWFyW3IuTk9ERV0pO1xuICAgICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZWVkRHJhd1tyLkRSQUddIHx8IG5lZWRNYkNsZWFyW3IuRFJBR10pIHtcbiAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dERyYWcsIHR4dERyYWcsIG5lZWRNYkNsZWFyW3IuRFJBR10pO1xuICAgICAgbmVlZERyYXdbci5EUkFHXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHIucHJldlZpZXdwb3J0ID0gdnA7XG5cbiAgaWYgKHIuY2xlYXJpbmdNb3Rpb25CbHVyKSB7XG4gICAgci5jbGVhcmluZ01vdGlvbkJsdXIgPSBmYWxzZTtcbiAgICByLm1vdGlvbkJsdXJDbGVhcmVkID0gdHJ1ZTtcbiAgICByLm1vdGlvbkJsdXIgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG1vdGlvbkJsdXIpIHtcbiAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gbnVsbDtcbiAgICAgIHIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5OT0RFXSA9IGZhbHNlO1xuICAgICAgci5jbGVhcmVkRm9yTW90aW9uQmx1cltyLkRSQUddID0gZmFsc2U7XG4gICAgICByLm1vdGlvbkJsdXIgPSBmYWxzZTtcbiAgICAgIHIuY2xlYXJpbmdNb3Rpb25CbHVyID0gIXRleHR1cmVEcmF3O1xuICAgICAgci5tYkZyYW1lcyA9IDA7XG4gICAgICBuZWVkRHJhd1tyLk5PREVdID0gdHJ1ZTtcbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSB0cnVlO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9LCBtb3Rpb25CbHVyRGVsYXkpO1xuICB9XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgY3kuZW1pdCgncmVuZGVyJyk7XG4gIH1cbn07XG5cbnZhciBDUnAkNyA9IHt9OyAvLyBATyBQb2x5Z29uIGRyYXdpbmdcblxuQ1JwJDcuZHJhd1BvbHlnb25QYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHBvaW50cykge1xuICB2YXIgaGFsZlcgPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSCA9IGhlaWdodCAvIDI7XG5cbiAgaWYgKGNvbnRleHQuYmVnaW5QYXRoKSB7XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgfVxuXG4gIGNvbnRleHQubW92ZVRvKHggKyBoYWxmVyAqIHBvaW50c1swXSwgeSArIGhhbGZIICogcG9pbnRzWzFdKTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZlcgKiBwb2ludHNbaSAqIDJdLCB5ICsgaGFsZkggKiBwb2ludHNbaSAqIDIgKyAxXSk7XG4gIH1cblxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuQ1JwJDcuZHJhd1JvdW5kUG9seWdvblBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gIHZhciBoYWxmVyA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lclJhZGl1cyA9IGdldFJvdW5kUG9seWdvblJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBvaW50cy5sZW5ndGggLyA0OyBfaSsrKSB7XG4gICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICBkZXN0VXYgPSB2b2lkIDA7XG5cbiAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgIHNvdXJjZVV2ID0gcG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZVV2ID0gX2kgKiA0IC0gMjtcbiAgICB9XG5cbiAgICBkZXN0VXYgPSBfaSAqIDQgKyAyO1xuICAgIHZhciBweCA9IHggKyBoYWxmVyAqIHBvaW50c1tfaSAqIDRdO1xuICAgIHZhciBweSA9IHkgKyBoYWxmSCAqIHBvaW50c1tfaSAqIDQgKyAxXTtcbiAgICB2YXIgY29zVGhldGEgPSAtcG9pbnRzW3NvdXJjZVV2XSAqIHBvaW50c1tkZXN0VXZdIC0gcG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBwb2ludHNbZGVzdFV2ICsgMV07XG4gICAgdmFyIG9mZnNldCA9IGNvcm5lclJhZGl1cyAvIE1hdGgudGFuKE1hdGguYWNvcyhjb3NUaGV0YSkgLyAyKTtcbiAgICB2YXIgY3AweCA9IHB4IC0gb2Zmc2V0ICogcG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY3AweSA9IHB5IC0gb2Zmc2V0ICogcG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIHBvaW50c1tkZXN0VXZdO1xuICAgIHZhciBjcDF5ID0gcHkgKyBvZmZzZXQgKiBwb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgIGNvbnRleHQubW92ZVRvKGNwMHgsIGNwMHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmxpbmVUbyhjcDB4LCBjcDB5KTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmFyY1RvKHB4LCBweSwgY3AxeCwgY3AxeSwgY29ybmVyUmFkaXVzKTtcbiAgfVxuXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XG59OyAvLyBSb3VuZCByZWN0YW5nbGUgZHJhd2luZ1xuXG5cbkNScCQ3LmRyYXdSb3VuZFJlY3RhbmdsZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICB2YXIgaGFsZldpZHRoID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkhlaWdodCA9IGhlaWdodCAvIDI7XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9IC8vIFN0YXJ0IGF0IHRvcCBtaWRkbGVcblxuXG4gIGNvbnRleHQubW92ZVRvKHgsIHkgLSBoYWxmSGVpZ2h0KTsgLy8gQXJjIGZyb20gbWlkZGxlIHRvcCB0byByaWdodCBzaWRlXG5cbiAgY29udGV4dC5hcmNUbyh4ICsgaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCwgeCArIGhhbGZXaWR0aCwgeSwgY29ybmVyUmFkaXVzKTsgLy8gQXJjIGZyb20gcmlnaHQgc2lkZSB0byBib3R0b21cblxuICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTsgLy8gQXJjIGZyb20gYm90dG9tIHRvIGxlZnQgc2lkZVxuXG4gIGNvbnRleHQuYXJjVG8oeCAtIGhhbGZXaWR0aCwgeSArIGhhbGZIZWlnaHQsIHggLSBoYWxmV2lkdGgsIHksIGNvcm5lclJhZGl1cyk7IC8vIEFyYyBmcm9tIGxlZnQgc2lkZSB0byB0b3BCb3JkZXJcblxuICBjb250ZXh0LmFyY1RvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0LCB4LCB5IC0gaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTsgLy8gSm9pbiBsaW5lXG5cbiAgY29udGV4dC5saW5lVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuQ1JwJDcuZHJhd0JvdHRvbVJvdW5kUmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lclJhZGl1cyA9IGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH0gLy8gU3RhcnQgYXQgdG9wIG1pZGRsZVxuXG5cbiAgY29udGV4dC5tb3ZlVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGgsIHkpO1xuICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTtcbiAgY29udGV4dC5hcmNUbyh4IC0gaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCwgeCAtIGhhbGZXaWR0aCwgeSwgY29ybmVyUmFkaXVzKTtcbiAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4LCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XG59O1xuXG5DUnAkNy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lckxlbmd0aCA9IGdldEN1dFJlY3RhbmdsZUNvcm5lckxlbmd0aCgpO1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH1cblxuICBjb250ZXh0Lm1vdmVUbyh4IC0gaGFsZldpZHRoICsgY29ybmVyTGVuZ3RoLCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGggLSBjb3JuZXJMZW5ndGgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgY29udGV4dC5saW5lVG8oeCArIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJMZW5ndGgpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCAtIGNvcm5lckxlbmd0aCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGggLSBjb3JuZXJMZW5ndGgsIHkgKyBoYWxmSGVpZ2h0KTtcbiAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCArIGNvcm5lckxlbmd0aCwgeSArIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4IC0gaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCAtIGNvcm5lckxlbmd0aCk7XG4gIGNvbnRleHQubGluZVRvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyTGVuZ3RoKTtcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcbn07XG5cbkNScCQ3LmRyYXdCYXJyZWxQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyO1xuICB2YXIgeEJlZ2luID0geCAtIGhhbGZXaWR0aDtcbiAgdmFyIHhFbmQgPSB4ICsgaGFsZldpZHRoO1xuICB2YXIgeUJlZ2luID0geSAtIGhhbGZIZWlnaHQ7XG4gIHZhciB5RW5kID0geSArIGhhbGZIZWlnaHQ7XG4gIHZhciBiYXJyZWxDdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgd09mZnNldCA9IGJhcnJlbEN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICB2YXIgaE9mZnNldCA9IGJhcnJlbEN1cnZlQ29uc3RhbnRzLmhlaWdodE9mZnNldDtcbiAgdmFyIGN0cmxQdFhPZmZzZXQgPSBiYXJyZWxDdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3T2Zmc2V0O1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH1cblxuICBjb250ZXh0Lm1vdmVUbyh4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICBjb250ZXh0LmxpbmVUbyh4QmVnaW4sIHlFbmQgLSBoT2Zmc2V0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiArIHdPZmZzZXQsIHlFbmQpO1xuICBjb250ZXh0LmxpbmVUbyh4RW5kIC0gd09mZnNldCwgeUVuZCk7XG4gIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyh4RW5kIC0gY3RybFB0WE9mZnNldCwgeUVuZCwgeEVuZCwgeUVuZCAtIGhPZmZzZXQpO1xuICBjb250ZXh0LmxpbmVUbyh4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhFbmQgLSBjdHJsUHRYT2Zmc2V0LCB5QmVnaW4sIHhFbmQgLSB3T2Zmc2V0LCB5QmVnaW4pO1xuICBjb250ZXh0LmxpbmVUbyh4QmVnaW4gKyB3T2Zmc2V0LCB5QmVnaW4pO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeEJlZ2luICsgY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxudmFyIHNpbjAgPSBNYXRoLnNpbigwKTtcbnZhciBjb3MwID0gTWF0aC5jb3MoMCk7XG52YXIgc2luID0ge307XG52YXIgY29zID0ge307XG52YXIgZWxsaXBzZVN0ZXBTaXplID0gTWF0aC5QSSAvIDQwO1xuXG5mb3IgKHZhciBpID0gMCAqIE1hdGguUEk7IGkgPCAyICogTWF0aC5QSTsgaSArPSBlbGxpcHNlU3RlcFNpemUpIHtcbiAgc2luW2ldID0gTWF0aC5zaW4oaSk7XG4gIGNvc1tpXSA9IE1hdGguY29zKGkpO1xufVxuXG5DUnAkNy5kcmF3RWxsaXBzZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgaWYgKGNvbnRleHQuZWxsaXBzZSkge1xuICAgIGNvbnRleHQuZWxsaXBzZShjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAvIDIsIGhlaWdodCAvIDIsIDAsIDAsIDIgKiBNYXRoLlBJKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgeFBvcywgeVBvcztcbiAgICB2YXIgcncgPSB3aWR0aCAvIDI7XG4gICAgdmFyIHJoID0gaGVpZ2h0IC8gMjtcblxuICAgIGZvciAodmFyIGkgPSAwICogTWF0aC5QSTsgaSA8IDIgKiBNYXRoLlBJOyBpICs9IGVsbGlwc2VTdGVwU2l6ZSkge1xuICAgICAgeFBvcyA9IGNlbnRlclggLSBydyAqIHNpbltpXSAqIHNpbjAgKyBydyAqIGNvc1tpXSAqIGNvczA7XG4gICAgICB5UG9zID0gY2VudGVyWSArIHJoICogY29zW2ldICogc2luMCArIHJoICogc2luW2ldICogY29zMDtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuLyogZ2xvYmFsIGF0b2IsIEFycmF5QnVmZmVyLCBVaW50OEFycmF5LCBCbG9iICovXG52YXIgQ1JwJDggPSB7fTtcblxuQ1JwJDguY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKHcsIGgpIHtcbiAgdmFyIGJ1ZmZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgYnVmZmVyLndpZHRoID0gdztcbiAgYnVmZmVyLmhlaWdodCA9IGg7XG4gIHJldHVybiBbYnVmZmVyLCBidWZmZXIuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xuXG5DUnAkOC5idWZmZXJDYW52YXNJbWFnZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3k7XG4gIHZhciBlbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG4gIHZhciBiYiA9IGVsZXMuYm91bmRpbmdCb3goKTtcbiAgdmFyIGN0clJlY3QgPSB0aGlzLmZpbmRDb250YWluZXJDbGllbnRDb29yZHMoKTtcbiAgdmFyIHdpZHRoID0gb3B0aW9ucy5mdWxsID8gTWF0aC5jZWlsKGJiLncpIDogY3RyUmVjdFsyXTtcbiAgdmFyIGhlaWdodCA9IG9wdGlvbnMuZnVsbCA/IE1hdGguY2VpbChiYi5oKSA6IGN0clJlY3RbM107XG4gIHZhciBzcGVjZE1heERpbXMgPSBudW1iZXIob3B0aW9ucy5tYXhXaWR0aCkgfHwgbnVtYmVyKG9wdGlvbnMubWF4SGVpZ2h0KTtcbiAgdmFyIHB4UmF0aW8gPSB0aGlzLmdldFBpeGVsUmF0aW8oKTtcbiAgdmFyIHNjYWxlID0gMTtcblxuICBpZiAob3B0aW9ucy5zY2FsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2lkdGggKj0gb3B0aW9ucy5zY2FsZTtcbiAgICBoZWlnaHQgKj0gb3B0aW9ucy5zY2FsZTtcbiAgICBzY2FsZSA9IG9wdGlvbnMuc2NhbGU7XG4gIH0gZWxzZSBpZiAoc3BlY2RNYXhEaW1zKSB7XG4gICAgdmFyIG1heFNjYWxlVyA9IEluZmluaXR5O1xuICAgIHZhciBtYXhTY2FsZUggPSBJbmZpbml0eTtcblxuICAgIGlmIChudW1iZXIob3B0aW9ucy5tYXhXaWR0aCkpIHtcbiAgICAgIG1heFNjYWxlVyA9IHNjYWxlICogb3B0aW9ucy5tYXhXaWR0aCAvIHdpZHRoO1xuICAgIH1cblxuICAgIGlmIChudW1iZXIob3B0aW9ucy5tYXhIZWlnaHQpKSB7XG4gICAgICBtYXhTY2FsZUggPSBzY2FsZSAqIG9wdGlvbnMubWF4SGVpZ2h0IC8gaGVpZ2h0O1xuICAgIH1cblxuICAgIHNjYWxlID0gTWF0aC5taW4obWF4U2NhbGVXLCBtYXhTY2FsZUgpO1xuICAgIHdpZHRoICo9IHNjYWxlO1xuICAgIGhlaWdodCAqPSBzY2FsZTtcbiAgfVxuXG4gIGlmICghc3BlY2RNYXhEaW1zKSB7XG4gICAgd2lkdGggKj0gcHhSYXRpbztcbiAgICBoZWlnaHQgKj0gcHhSYXRpbztcbiAgICBzY2FsZSAqPSBweFJhdGlvO1xuICB9XG5cbiAgdmFyIGJ1ZmZDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gIGJ1ZmZDYW52YXMud2lkdGggPSB3aWR0aDtcbiAgYnVmZkNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIGJ1ZmZDYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gIGJ1ZmZDYW52YXMuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgdmFyIGJ1ZmZDeHQgPSBidWZmQ2FudmFzLmdldENvbnRleHQoJzJkJyk7IC8vIFJhc3Rlcml6ZSB0aGUgbGF5ZXJzLCBidXQgb25seSBpZiBjb250YWluZXIgaGFzIG5vbnplcm8gc2l6ZVxuXG4gIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgIGJ1ZmZDeHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIGJ1ZmZDeHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgICB2YXIgenNvcnRlZEVsZXMgPSB0aGlzLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgICBpZiAob3B0aW9ucy5mdWxsKSB7XG4gICAgICAvLyBkcmF3IHRoZSBmdWxsIGJvdW5kcyBvZiB0aGUgZ3JhcGhcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKC1iYi54MSAqIHNjYWxlLCAtYmIueTEgKiBzY2FsZSk7XG4gICAgICBidWZmQ3h0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gICAgICB0aGlzLmRyYXdFbGVtZW50cyhidWZmQ3h0LCB6c29ydGVkRWxlcyk7XG4gICAgICBidWZmQ3h0LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNjYWxlKTtcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKGJiLngxICogc2NhbGUsIGJiLnkxICogc2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkcmF3IHRoZSBjdXJyZW50IHZpZXdcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHtcbiAgICAgICAgeDogcGFuLnggKiBzY2FsZSxcbiAgICAgICAgeTogcGFuLnkgKiBzY2FsZVxuICAgICAgfTtcbiAgICAgIHNjYWxlICo9IGN5Lnpvb20oKTtcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uLngsIHRyYW5zbGF0aW9uLnkpO1xuICAgICAgYnVmZkN4dC5zY2FsZShzY2FsZSwgc2NhbGUpO1xuICAgICAgdGhpcy5kcmF3RWxlbWVudHMoYnVmZkN4dCwgenNvcnRlZEVsZXMpO1xuICAgICAgYnVmZkN4dC5zY2FsZSgxIC8gc2NhbGUsIDEgLyBzY2FsZSk7XG4gICAgICBidWZmQ3h0LnRyYW5zbGF0ZSgtdHJhbnNsYXRpb24ueCwgLXRyYW5zbGF0aW9uLnkpO1xuICAgIH0gLy8gbmVlZCB0byBmaWxsIGJnIGF0IGVuZCBsaWtlIHRoaXMgaW4gb3JkZXIgdG8gZmlsbCBjbGVhcmVkIHRyYW5zcGFyZW50IHBpeGVscyBpbiBqcGdzXG5cblxuICAgIGlmIChvcHRpb25zLmJnKSB7XG4gICAgICBidWZmQ3h0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcbiAgICAgIGJ1ZmZDeHQuZmlsbFN0eWxlID0gb3B0aW9ucy5iZztcbiAgICAgIGJ1ZmZDeHQucmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJ1ZmZDeHQuZmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWZmQ2FudmFzO1xufTtcblxuZnVuY3Rpb24gYjY0VG9CbG9iKGI2NCwgbWltZVR5cGUpIHtcbiAgdmFyIGJ5dGVzID0gYXRvYihiNjQpO1xuICB2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpO1xuICB2YXIgYnVmZlVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGJ1ZmZVaW50OFtpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZdLCB7XG4gICAgdHlwZTogbWltZVR5cGVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGI2NFVyaVRvQjY0KGI2NHVyaSkge1xuICB2YXIgaSA9IGI2NHVyaS5pbmRleE9mKCcsJyk7XG4gIHJldHVybiBiNjR1cmkuc3Vic3RyKGkgKyAxKTtcbn1cblxuZnVuY3Rpb24gb3V0cHV0KG9wdGlvbnMsIGNhbnZhcywgbWltZVR5cGUpIHtcbiAgdmFyIGdldEI2NFVyaSA9IGZ1bmN0aW9uIGdldEI2NFVyaSgpIHtcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTChtaW1lVHlwZSwgb3B0aW9ucy5xdWFsaXR5KTtcbiAgfTtcblxuICBzd2l0Y2ggKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgY2FzZSAnYmxvYi1wcm9taXNlJzpcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICAgICAgICBpZiAoYmxvYiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdgY2FudmFzLnRvQmxvYigpYCBzZW50IGEgbnVsbCB2YWx1ZSBpbiBpdHMgY2FsbGJhY2snKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgbWltZVR5cGUsIG9wdGlvbnMucXVhbGl0eSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ2Jsb2InOlxuICAgICAgcmV0dXJuIGI2NFRvQmxvYihiNjRVcmlUb0I2NChnZXRCNjRVcmkoKSksIG1pbWVUeXBlKTtcblxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICByZXR1cm4gYjY0VXJpVG9CNjQoZ2V0QjY0VXJpKCkpO1xuXG4gICAgY2FzZSAnYmFzZTY0dXJpJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGdldEI2NFVyaSgpO1xuICB9XG59XG5cbkNScCQ4LnBuZyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHJldHVybiBvdXRwdXQob3B0aW9ucywgdGhpcy5idWZmZXJDYW52YXNJbWFnZShvcHRpb25zKSwgJ2ltYWdlL3BuZycpO1xufTtcblxuQ1JwJDguanBnID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG91dHB1dChvcHRpb25zLCB0aGlzLmJ1ZmZlckNhbnZhc0ltYWdlKG9wdGlvbnMpLCAnaW1hZ2UvanBlZycpO1xufTtcblxudmFyIENScCQ5ID0ge307XG5cbkNScCQ5Lm5vZGVTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ2VsbGlwc2UnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd0VsbGlwc2VQYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgY2FzZSAncG9seWdvbic6XG4gICAgICByZXR1cm4gdGhpcy5kcmF3UG9seWdvblBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKTtcblxuICAgIGNhc2UgJ3JvdW5kLXBvbHlnb24nOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd1JvdW5kUG9seWdvblBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKTtcblxuICAgIGNhc2UgJ3JvdW5kcmVjdGFuZ2xlJzpcbiAgICBjYXNlICdyb3VuZC1yZWN0YW5nbGUnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd1JvdW5kUmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGNhc2UgJ2N1dHJlY3RhbmdsZSc6XG4gICAgY2FzZSAnY3V0LXJlY3RhbmdsZSc6XG4gICAgICByZXR1cm4gdGhpcy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGNhc2UgJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJzpcbiAgICBjYXNlICdib3R0b20tcm91bmQtcmVjdGFuZ2xlJzpcbiAgICAgIHJldHVybiB0aGlzLmRyYXdCb3R0b21Sb3VuZFJlY3RhbmdsZVBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICBjYXNlICdiYXJyZWwnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd0JhcnJlbFBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gIH1cbn07XG5cbnZhciBDUiA9IENhbnZhc1JlbmRlcmVyO1xudmFyIENScCRhID0gQ2FudmFzUmVuZGVyZXIucHJvdG90eXBlO1xuQ1JwJGEuQ0FOVkFTX0xBWUVSUyA9IDM7IC8vXG5cbkNScCRhLlNFTEVDVF9CT1ggPSAwO1xuQ1JwJGEuRFJBRyA9IDE7XG5DUnAkYS5OT0RFID0gMjtcbkNScCRhLkJVRkZFUl9DT1VOVCA9IDM7IC8vXG5cbkNScCRhLlRFWFRVUkVfQlVGRkVSID0gMDtcbkNScCRhLk1PVElPTkJMVVJfQlVGRkVSX05PREUgPSAxO1xuQ1JwJGEuTU9USU9OQkxVUl9CVUZGRVJfRFJBRyA9IDI7XG5cbmZ1bmN0aW9uIENhbnZhc1JlbmRlcmVyKG9wdGlvbnMpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICByLmRhdGEgPSB7XG4gICAgY2FudmFzZXM6IG5ldyBBcnJheShDUnAkYS5DQU5WQVNfTEFZRVJTKSxcbiAgICBjb250ZXh0czogbmV3IEFycmF5KENScCRhLkNBTlZBU19MQVlFUlMpLFxuICAgIGNhbnZhc05lZWRzUmVkcmF3OiBuZXcgQXJyYXkoQ1JwJGEuQ0FOVkFTX0xBWUVSUyksXG4gICAgYnVmZmVyQ2FudmFzZXM6IG5ldyBBcnJheShDUnAkYS5CVUZGRVJfQ09VTlQpLFxuICAgIGJ1ZmZlckNvbnRleHRzOiBuZXcgQXJyYXkoQ1JwJGEuQ0FOVkFTX0xBWUVSUylcbiAgfTtcbiAgdmFyIHRhcEhsT2ZmQXR0ciA9ICctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InO1xuICB2YXIgdGFwSGxPZmZTdHlsZSA9ICdyZ2JhKDAsMCwwLDApJztcbiAgci5kYXRhLmNhbnZhc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgdmFyIGNvbnRhaW5lclN0eWxlID0gci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZTtcbiAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgY29udGFpbmVyU3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICBjb250YWluZXJTdHlsZS56SW5kZXggPSAnMCc7XG4gIGNvbnRhaW5lclN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIHZhciBjb250YWluZXIgPSBvcHRpb25zLmN5LmNvbnRhaW5lcigpO1xuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoci5kYXRhLmNhbnZhc0NvbnRhaW5lcik7XG4gIGNvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgdmFyIHN0eWxlTWFwID0ge1xuICAgICctd2Via2l0LXVzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICctbW96LXVzZXItc2VsZWN0JzogJy1tb3otbm9uZScsXG4gICAgJ3VzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InOiAncmdiYSgwLDAsMCwwKScsXG4gICAgJ291dGxpbmUtc3R5bGUnOiAnbm9uZSdcbiAgfTtcblxuICBpZiAobXMoKSkge1xuICAgIHN0eWxlTWFwWyctbXMtdG91Y2gtYWN0aW9uJ10gPSAnbm9uZSc7XG4gICAgc3R5bGVNYXBbJ3RvdWNoLWFjdGlvbiddID0gJ25vbmUnO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBDUnAkYS5DQU5WQVNfTEFZRVJTOyBpKyspIHtcbiAgICB2YXIgY2FudmFzID0gci5kYXRhLmNhbnZhc2VzW2ldID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIHIuZGF0YS5jb250ZXh0c1tpXSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIE9iamVjdC5rZXlzKHN0eWxlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBjYW52YXMuc3R5bGVba10gPSBzdHlsZU1hcFtrXTtcbiAgICB9KTtcbiAgICBjYW52YXMuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgaSk7XG4gICAgY2FudmFzLnN0eWxlLnpJbmRleCA9IFN0cmluZyhDUnAkYS5DQU5WQVNfTEFZRVJTIC0gaSk7XG4gICAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO1xuICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tpXSA9IGZhbHNlO1xuICB9XG5cbiAgci5kYXRhLnRvcENhbnZhcyA9IHIuZGF0YS5jYW52YXNlc1swXTtcbiAgci5kYXRhLmNhbnZhc2VzW0NScCRhLk5PREVdLnNldEF0dHJpYnV0ZSgnZGF0YS1pZCcsICdsYXllcicgKyBDUnAkYS5OT0RFICsgJy1ub2RlJyk7XG4gIHIuZGF0YS5jYW52YXNlc1tDUnAkYS5TRUxFQ1RfQk9YXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwJGEuU0VMRUNUX0JPWCArICctc2VsZWN0Ym94Jyk7XG4gIHIuZGF0YS5jYW52YXNlc1tDUnAkYS5EUkFHXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwJGEuRFJBRyArICctZHJhZycpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgQ1JwJGEuQlVGRkVSX0NPVU5UOyBpKyspIHtcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgci5kYXRhLmJ1ZmZlckNvbnRleHRzW2ldID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLmdldENvbnRleHQoJzJkJyk7XG4gICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc2V0QXR0cmlidXRlKCdkYXRhLWlkJywgJ2J1ZmZlcicgKyBpKTtcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc3R5bGUuekluZGV4ID0gU3RyaW5nKC1pIC0gMSk7XG4gICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsgLy9yLmRhdGEuY2FudmFzQ29udGFpbmVyLmFwcGVuZENoaWxkKHIuZGF0YS5idWZmZXJDYW52YXNlc1tpXSk7XG4gIH1cblxuICByLnBhdGhzRW5hYmxlZCA9IHRydWU7XG4gIHZhciBlbXB0eUJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgdmFyIGdldEJveENlbnRlciA9IGZ1bmN0aW9uIGdldEJveENlbnRlcihiYikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiAoYmIueDEgKyBiYi54MikgLyAyLFxuICAgICAgeTogKGJiLnkxICsgYmIueTIpIC8gMlxuICAgIH07XG4gIH07XG5cbiAgdmFyIGdldENlbnRlck9mZnNldCA9IGZ1bmN0aW9uIGdldENlbnRlck9mZnNldChiYikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiAtYmIudyAvIDIsXG4gICAgICB5OiAtYmIuaCAvIDJcbiAgICB9O1xuICB9O1xuXG4gIHZhciBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZCA9IGZ1bmN0aW9uIGJhY2tncm91bmRUaW1lc3RhbXBIYXNDaGFuZ2VkKGVsZSkge1xuICAgIHZhciBfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICB2YXIgc2FtZSA9IF9wLm9sZEJhY2tncm91bmRUaW1lc3RhbXAgPT09IF9wLmJhY2tncm91bmRUaW1lc3RhbXA7XG4gICAgcmV0dXJuICFzYW1lO1xuICB9O1xuXG4gIHZhciBnZXRTdHlsZUtleSA9IGZ1bmN0aW9uIGdldFN0eWxlS2V5KGVsZSkge1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubm9kZUtleTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxLZXkgPSBmdW5jdGlvbiBnZXRMYWJlbEtleShlbGUpIHtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsU3R5bGVLZXk7XG4gIH07XG5cbiAgdmFyIGdldFNvdXJjZUxhYmVsS2V5ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxLZXkoZWxlKSB7XG4gICAgcmV0dXJuIGVsZVswXS5fcHJpdmF0ZS5zb3VyY2VMYWJlbFN0eWxlS2V5O1xuICB9O1xuXG4gIHZhciBnZXRUYXJnZXRMYWJlbEtleSA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsS2V5KGVsZSkge1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUudGFyZ2V0TGFiZWxTdHlsZUtleTtcbiAgfTtcblxuICB2YXIgZHJhd0VsZW1lbnQgPSBmdW5jdGlvbiBkcmF3RWxlbWVudChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCB1c2VFbGVPcGFjaXR5KSB7XG4gICAgcmV0dXJuIHIuZHJhd0VsZW1lbnQoY29udGV4dCwgZWxlLCBiYiwgZmFsc2UsIGZhbHNlLCB1c2VFbGVPcGFjaXR5KTtcbiAgfTtcblxuICB2YXIgZHJhd0xhYmVsID0gZnVuY3Rpb24gZHJhd0xhYmVsKGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ21haW4nLCB1c2VFbGVPcGFjaXR5KTtcbiAgfTtcblxuICB2YXIgZHJhd1NvdXJjZUxhYmVsID0gZnVuY3Rpb24gZHJhd1NvdXJjZUxhYmVsKGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ3NvdXJjZScsIHVzZUVsZU9wYWNpdHkpO1xuICB9O1xuXG4gIHZhciBkcmF3VGFyZ2V0TGFiZWwgPSBmdW5jdGlvbiBkcmF3VGFyZ2V0TGFiZWwoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgdXNlRWxlT3BhY2l0eSkge1xuICAgIHJldHVybiByLmRyYXdFbGVtZW50VGV4dChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCAndGFyZ2V0JywgdXNlRWxlT3BhY2l0eSk7XG4gIH07XG5cbiAgdmFyIGdldEVsZW1lbnRCb3ggPSBmdW5jdGlvbiBnZXRFbGVtZW50Qm94KGVsZSkge1xuICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUuYm9keUJvdW5kcztcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRMYWJlbEJveChlbGUpIHtcbiAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsQm91bmRzLm1haW4gfHwgZW1wdHlCYjtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbEJveChlbGUpIHtcbiAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsQm91bmRzLnNvdXJjZSB8fCBlbXB0eUJiO1xuICB9O1xuXG4gIHZhciBnZXRUYXJnZXRMYWJlbEJveCA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsQm94KGVsZSkge1xuICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubGFiZWxCb3VuZHMudGFyZ2V0IHx8IGVtcHR5QmI7XG4gIH07XG5cbiAgdmFyIGlzTGFiZWxWaXNpYmxlQXRTY2FsZSA9IGZ1bmN0aW9uIGlzTGFiZWxWaXNpYmxlQXRTY2FsZShlbGUsIHNjYWxlZExhYmVsU2hvd24pIHtcbiAgICByZXR1cm4gc2NhbGVkTGFiZWxTaG93bjtcbiAgfTtcblxuICB2YXIgZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQgPSBmdW5jdGlvbiBnZXRFbGVtZW50Um90YXRpb25Qb2ludChlbGUpIHtcbiAgICByZXR1cm4gZ2V0Qm94Q2VudGVyKGdldEVsZW1lbnRCb3goZWxlKSk7XG4gIH07XG5cbiAgdmFyIGFkZFRleHRNYXJnaW4gPSBmdW5jdGlvbiBhZGRUZXh0TWFyZ2luKHByZWZpeCwgcHQsIGVsZSkge1xuICAgIHZhciBwcmUgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgICByZXR1cm4ge1xuICAgICAgeDogcHQueCArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlLFxuICAgICAgeTogcHQueSArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXknKS5wZlZhbHVlXG4gICAgfTtcbiAgfTtcblxuICB2YXIgZ2V0UnNQdCA9IGZ1bmN0aW9uIGdldFJzUHQoZWxlLCB4LCB5KSB7XG4gICAgdmFyIHJzID0gZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHJldHVybiB7XG4gICAgICB4OiByc1t4XSxcbiAgICAgIHk6IHJzW3ldXG4gICAgfTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0TGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCcnLCBnZXRSc1B0KGVsZSwgJ2xhYmVsWCcsICdsYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCdzb3VyY2UnLCBnZXRSc1B0KGVsZSwgJ3NvdXJjZUxhYmVsWCcsICdzb3VyY2VMYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCd0YXJnZXQnLCBnZXRSc1B0KGVsZSwgJ3RhcmdldExhYmVsWCcsICd0YXJnZXRMYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0RWxlbWVudFJvdGF0aW9uT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0RWxlbWVudFJvdGF0aW9uT2Zmc2V0KGVsZSkge1xuICAgIHJldHVybiBnZXRDZW50ZXJPZmZzZXQoZ2V0RWxlbWVudEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldFNvdXJjZUxhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgcmV0dXJuIGdldENlbnRlck9mZnNldChnZXRTb3VyY2VMYWJlbEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgcmV0dXJuIGdldENlbnRlck9mZnNldChnZXRUYXJnZXRMYWJlbEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldExhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgdmFyIGJiID0gZ2V0TGFiZWxCb3goZWxlKTtcbiAgICB2YXIgcCA9IGdldENlbnRlck9mZnNldChnZXRMYWJlbEJveChlbGUpKTtcblxuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIHN3aXRjaCAoZWxlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS52YWx1ZSkge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBwLnggPSAtYmIudztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgcC54ID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgcC55ID0gLWJiLmg7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBwLnkgPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwO1xuICB9O1xuXG4gIHZhciBlbGVUeHJDYWNoZSA9IHIuZGF0YS5lbGVUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICBnZXRLZXk6IGdldFN0eWxlS2V5LFxuICAgIGRvZXNFbGVJbnZhbGlkYXRlS2V5OiBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZCxcbiAgICBkcmF3RWxlbWVudDogZHJhd0VsZW1lbnQsXG4gICAgZ2V0Qm91bmRpbmdCb3g6IGdldEVsZW1lbnRCb3gsXG4gICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldEVsZW1lbnRSb3RhdGlvbk9mZnNldCxcbiAgICBhbGxvd0VkZ2VUeHJDYWNoaW5nOiBmYWxzZSxcbiAgICBhbGxvd1BhcmVudFR4ckNhY2hpbmc6IGZhbHNlXG4gIH0pO1xuICB2YXIgbGJsVHhyQ2FjaGUgPSByLmRhdGEubGJsVHhyQ2FjaGUgPSBuZXcgRWxlbWVudFRleHR1cmVDYWNoZShyLCB7XG4gICAgZ2V0S2V5OiBnZXRMYWJlbEtleSxcbiAgICBkcmF3RWxlbWVudDogZHJhd0xhYmVsLFxuICAgIGdldEJvdW5kaW5nQm94OiBnZXRMYWJlbEJveCxcbiAgICBnZXRSb3RhdGlvblBvaW50OiBnZXRMYWJlbFJvdGF0aW9uUG9pbnQsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldExhYmVsUm90YXRpb25PZmZzZXQsXG4gICAgaXNWaXNpYmxlOiBpc0xhYmVsVmlzaWJsZUF0U2NhbGVcbiAgfSk7XG4gIHZhciBzbGJUeHJDYWNoZSA9IHIuZGF0YS5zbGJUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICBnZXRLZXk6IGdldFNvdXJjZUxhYmVsS2V5LFxuICAgIGRyYXdFbGVtZW50OiBkcmF3U291cmNlTGFiZWwsXG4gICAgZ2V0Qm91bmRpbmdCb3g6IGdldFNvdXJjZUxhYmVsQm94LFxuICAgIGdldFJvdGF0aW9uUG9pbnQ6IGdldFNvdXJjZUxhYmVsUm90YXRpb25Qb2ludCxcbiAgICBnZXRSb3RhdGlvbk9mZnNldDogZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldCxcbiAgICBpc1Zpc2libGU6IGlzTGFiZWxWaXNpYmxlQXRTY2FsZVxuICB9KTtcbiAgdmFyIHRsYlR4ckNhY2hlID0gci5kYXRhLnRsYlR4ckNhY2hlID0gbmV3IEVsZW1lbnRUZXh0dXJlQ2FjaGUociwge1xuICAgIGdldEtleTogZ2V0VGFyZ2V0TGFiZWxLZXksXG4gICAgZHJhd0VsZW1lbnQ6IGRyYXdUYXJnZXRMYWJlbCxcbiAgICBnZXRCb3VuZGluZ0JveDogZ2V0VGFyZ2V0TGFiZWxCb3gsXG4gICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50LFxuICAgIGdldFJvdGF0aW9uT2Zmc2V0OiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uT2Zmc2V0LFxuICAgIGlzVmlzaWJsZTogaXNMYWJlbFZpc2libGVBdFNjYWxlXG4gIH0pO1xuICB2YXIgbHlyVHhyQ2FjaGUgPSByLmRhdGEubHlyVHhyQ2FjaGUgPSBuZXcgTGF5ZXJlZFRleHR1cmVDYWNoZShyKTtcbiAgci5vblVwZGF0ZUVsZUNhbGNzKGZ1bmN0aW9uIGludmFsaWRhdGVUZXh0dXJlQ2FjaGVzKHdpbGxEcmF3LCBlbGVzKSB7XG4gICAgLy8gZWFjaCBjYWNoZSBzaG91bGQgY2hlY2sgZm9yIHN1Yi1rZXkgZGlmZiB0byBzZWUgdGhhdCB0aGUgdXBkYXRlIGFmZmVjdHMgdGhhdCBjYWNoZSBwYXJ0aWN1bGFybHlcbiAgICBlbGVUeHJDYWNoZS5pbnZhbGlkYXRlRWxlbWVudHMoZWxlcyk7XG4gICAgbGJsVHhyQ2FjaGUuaW52YWxpZGF0ZUVsZW1lbnRzKGVsZXMpO1xuICAgIHNsYlR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTtcbiAgICB0bGJUeHJDYWNoZS5pbnZhbGlkYXRlRWxlbWVudHMoZWxlcyk7IC8vIGFueSBjaGFuZ2UgaW52YWxpZGF0ZXMgdGhlIGxheWVyc1xuXG4gICAgbHlyVHhyQ2FjaGUuaW52YWxpZGF0ZUVsZW1lbnRzKGVsZXMpOyAvLyB1cGRhdGUgdGhlIG9sZCBiZyB0aW1lc3RhbXAgc28gZGlmZnMgY2FuIGJlIGRvbmUgaW4gdGhlIGVsZSB0eHIgY2FjaGVzXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfcCA9IGVsZXNbX2ldLl9wcml2YXRlO1xuICAgICAgX3Aub2xkQmFja2dyb3VuZFRpbWVzdGFtcCA9IF9wLmJhY2tncm91bmRUaW1lc3RhbXA7XG4gICAgfVxuICB9KTtcblxuICB2YXIgcmVmaW5lSW5MYXllcnMgPSBmdW5jdGlvbiByZWZpbmVJbkxheWVycyhyZXFzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBseXJUeHJDYWNoZS5lbnF1ZXVlRWxlbWVudFJlZmluZW1lbnQocmVxc1tpXS5lbGUpO1xuICAgIH1cbiAgfTtcblxuICBlbGVUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICBsYmxUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICBzbGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICB0bGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xufVxuXG5DUnAkYS5yZWRyYXdIaW50ID0gZnVuY3Rpb24gKGdyb3VwLCBib29sKSB7XG4gIHZhciByID0gdGhpcztcblxuICBzd2l0Y2ggKGdyb3VwKSB7XG4gICAgY2FzZSAnZWxlcyc6XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwJGEuTk9ERV0gPSBib29sO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkcmFnJzpcbiAgICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tDUnAkYS5EUkFHXSA9IGJvb2w7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwJGEuU0VMRUNUX0JPWF0gPSBib29sO1xuICAgICAgYnJlYWs7XG4gIH1cbn07IC8vIHdoZXRoZXIgdG8gdXNlIFBhdGgyRCBjYWNoaW5nIGZvciBkcmF3aW5nXG5cblxudmFyIHBhdGhzSW1wbGQgPSB0eXBlb2YgUGF0aDJEICE9PSAndW5kZWZpbmVkJztcblxuQ1JwJGEucGF0aDJkRW5hYmxlZCA9IGZ1bmN0aW9uIChvbikge1xuICBpZiAob24gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhzRW5hYmxlZDtcbiAgfVxuXG4gIHRoaXMucGF0aHNFbmFibGVkID0gb24gPyB0cnVlIDogZmFsc2U7XG59O1xuXG5DUnAkYS51c2VQYXRocyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBhdGhzSW1wbGQgJiYgdGhpcy5wYXRoc0VuYWJsZWQ7XG59O1xuXG5DUnAkYS5zZXRJbWdTbW9vdGhpbmcgPSBmdW5jdGlvbiAoY29udGV4dCwgYm9vbCkge1xuICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gYm9vbDtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGJvb2w7XG4gICAgY29udGV4dC5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICAgIGNvbnRleHQubXNJbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICB9XG59O1xuXG5DUnAkYS5nZXRJbWdTbW9vdGhpbmcgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgIHJldHVybiBjb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGV4dC53ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQgfHwgY29udGV4dC5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQgfHwgY29udGV4dC5tc0ltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgfVxufTtcblxuQ1JwJGEubWFrZU9mZnNjcmVlbkNhbnZhcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBjYW52YXM7XG5cbiAgaWYgKCh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoT2Zmc2NyZWVuQ2FudmFzKSkgIT09ICggXCJ1bmRlZmluZWRcIiApKSB7XG4gICAgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgfSBlbHNlIHtcbiAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIHJldHVybiBjYW52YXM7XG59O1xuXG5bQ1JwLCBDUnAkMSwgQ1JwJDIsIENScCQzLCBDUnAkNCwgQ1JwJDUsIENScCQ2LCBDUnAkNywgQ1JwJDgsIENScCQ5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoQ1JwJGEsIHByb3BzKTtcbn0pO1xuXG52YXIgcmVuZGVyZXIgPSBbe1xuICBuYW1lOiAnbnVsbCcsXG4gIGltcGw6IE51bGxSZW5kZXJlclxufSwge1xuICBuYW1lOiAnYmFzZScsXG4gIGltcGw6IEJSXG59LCB7XG4gIG5hbWU6ICdjYW52YXMnLFxuICBpbXBsOiBDUlxufV07XG5cbnZhciBpbmNFeHRzID0gW3tcbiAgdHlwZTogJ2xheW91dCcsXG4gIGV4dGVuc2lvbnM6IGxheW91dFxufSwge1xuICB0eXBlOiAncmVuZGVyZXInLFxuICBleHRlbnNpb25zOiByZW5kZXJlclxufV07XG5cbnZhciBleHRlbnNpb25zID0ge307IC8vIHJlZ2lzdGVyZWQgbW9kdWxlcyBmb3IgZXh0ZW5zaW9ucywgaW5kZXhlZCBieSBuYW1lXG5cbnZhciBtb2R1bGVzID0ge307XG5cbmZ1bmN0aW9uIHNldEV4dGVuc2lvbih0eXBlLCBuYW1lLCByZWdpc3RyYW50KSB7XG4gIHZhciBleHQgPSByZWdpc3RyYW50O1xuXG4gIHZhciBvdmVycmlkZUVyciA9IGZ1bmN0aW9uIG92ZXJyaWRlRXJyKGZpZWxkKSB7XG4gICAgd2FybignQ2FuIG5vdCByZWdpc3RlciBgJyArIG5hbWUgKyAnYCBmb3IgYCcgKyB0eXBlICsgJ2Agc2luY2UgYCcgKyBmaWVsZCArICdgIGFscmVhZHkgZXhpc3RzIGluIHRoZSBwcm90b3R5cGUgYW5kIGNhbiBub3QgYmUgb3ZlcnJpZGRlbicpO1xuICB9O1xuXG4gIGlmICh0eXBlID09PSAnY29yZScpIHtcbiAgICBpZiAoQ29yZS5wcm90b3R5cGVbbmFtZV0pIHtcbiAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29yZS5wcm90b3R5cGVbbmFtZV0gPSByZWdpc3RyYW50O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sbGVjdGlvbicpIHtcbiAgICBpZiAoQ29sbGVjdGlvbi5wcm90b3R5cGVbbmFtZV0pIHtcbiAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29sbGVjdGlvbi5wcm90b3R5cGVbbmFtZV0gPSByZWdpc3RyYW50O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbGF5b3V0Jykge1xuICAgIC8vIGZpbGwgaW4gbWlzc2luZyBsYXlvdXQgZnVuY3Rpb25zIGluIHRoZSBwcm90b3R5cGVcbiAgICB2YXIgTGF5b3V0ID0gZnVuY3Rpb24gTGF5b3V0KG9wdGlvbnMpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICByZWdpc3RyYW50LmNhbGwodGhpcywgb3B0aW9ucyk7IC8vIG1ha2Ugc3VyZSBsYXlvdXQgaGFzIF9wcml2YXRlIGZvciB1c2Ugdy8gc3RkIGFwaXMgbGlrZSAub24oKVxuXG4gICAgICBpZiAoIXBsYWluT2JqZWN0KHRoaXMuX3ByaXZhdGUpKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUgPSB7fTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJpdmF0ZS5jeSA9IG9wdGlvbnMuY3k7XG4gICAgICB0aGlzLl9wcml2YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgdGhpcy5jcmVhdGVFbWl0dGVyKCk7XG4gICAgfTtcblxuICAgIHZhciBsYXlvdXRQcm90byA9IExheW91dC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHJlZ2lzdHJhbnQucHJvdG90eXBlKTtcbiAgICB2YXIgb3B0TGF5b3V0Rm5zID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdExheW91dEZucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGZuTmFtZSA9IG9wdExheW91dEZuc1tpXTtcblxuICAgICAgbGF5b3V0UHJvdG9bZm5OYW1lXSA9IGxheW91dFByb3RvW2ZuTmFtZV0gfHwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH07XG4gICAgfSAvLyBlaXRoZXIgLnN0YXJ0KCkgb3IgLnJ1bigpIGlzIGRlZmluZWQsIHNvIGF1dG9nZW4gdGhlIG90aGVyXG5cblxuICAgIGlmIChsYXlvdXRQcm90by5zdGFydCAmJiAhbGF5b3V0UHJvdG8ucnVuKSB7XG4gICAgICBsYXlvdXRQcm90by5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoIWxheW91dFByb3RvLnN0YXJ0ICYmIGxheW91dFByb3RvLnJ1bikge1xuICAgICAgbGF5b3V0UHJvdG8uc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcmVnU3RvcCA9IHJlZ2lzdHJhbnQucHJvdG90eXBlLnN0b3A7XG5cbiAgICBsYXlvdXRQcm90by5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG9wdHMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRzICYmIG9wdHMuYW5pbWF0ZSkge1xuICAgICAgICB2YXIgYW5pcyA9IHRoaXMuYW5pbWF0aW9ucztcblxuICAgICAgICBpZiAoYW5pcykge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhbmlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYW5pc1tfaV0uc3RvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVnU3RvcCkge1xuICAgICAgICByZWdTdG9wLmNhbGwodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIGlmICghbGF5b3V0UHJvdG8uZGVzdHJveSkge1xuICAgICAgbGF5b3V0UHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGxheW91dFByb3RvLmN5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgfTtcblxuICAgIHZhciBnZXRDeSA9IGZ1bmN0aW9uIGdldEN5KGxheW91dCkge1xuICAgICAgcmV0dXJuIGxheW91dC5fcHJpdmF0ZS5jeTtcbiAgICB9O1xuXG4gICAgdmFyIGVtaXR0ZXJPcHRzID0ge1xuICAgICAgYWRkRXZlbnRGaWVsZHM6IGZ1bmN0aW9uIGFkZEV2ZW50RmllbGRzKGxheW91dCwgZXZ0KSB7XG4gICAgICAgIGV2dC5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIGV2dC5jeSA9IGdldEN5KGxheW91dCk7XG4gICAgICAgIGV2dC50YXJnZXQgPSBsYXlvdXQ7XG4gICAgICB9LFxuICAgICAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KGxheW91dCkge1xuICAgICAgICByZXR1cm4gZ2V0Q3kobGF5b3V0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4dGVuZChsYXlvdXRQcm90bywge1xuICAgICAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fcHJpdmF0ZS5lbWl0dGVyID0gbmV3IEVtaXR0ZXIoZW1pdHRlck9wdHMsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBlbWl0dGVyOiBmdW5jdGlvbiBlbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICAgICAgfSxcbiAgICAgIG9uOiBmdW5jdGlvbiBvbihldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uKGV2dCwgY2IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBvbmU6IGZ1bmN0aW9uIG9uZShldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgb25jZTogZnVuY3Rpb24gb25jZShldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlTGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKGV2dCwgY2IpIHtcbiAgICAgICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZ0LCBjYik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZW1pdDogZnVuY3Rpb24gZW1pdChldnQsIHBhcmFtcykge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KGV2dCwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVmaW5lJDMuZXZlbnRBbGlhc2VzT24obGF5b3V0UHJvdG8pO1xuICAgIGV4dCA9IExheW91dDsgLy8gcmVwbGFjZSB3aXRoIG91ciB3cmFwcGVkIGxheW91dFxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW5kZXJlcicgJiYgbmFtZSAhPT0gJ251bGwnICYmIG5hbWUgIT09ICdiYXNlJykge1xuICAgIC8vIHVzZXIgcmVnaXN0ZXJlZCByZW5kZXJlcnMgaW5oZXJpdCBmcm9tIGJhc2VcbiAgICB2YXIgQmFzZVJlbmRlcmVyID0gZ2V0RXh0ZW5zaW9uKCdyZW5kZXJlcicsICdiYXNlJyk7XG4gICAgdmFyIGJQcm90byA9IEJhc2VSZW5kZXJlci5wcm90b3R5cGU7XG4gICAgdmFyIFJlZ2lzdHJhbnRSZW5kZXJlciA9IHJlZ2lzdHJhbnQ7XG4gICAgdmFyIHJQcm90byA9IHJlZ2lzdHJhbnQucHJvdG90eXBlO1xuXG4gICAgdmFyIFJlbmRlcmVyID0gZnVuY3Rpb24gUmVuZGVyZXIoKSB7XG4gICAgICBCYXNlUmVuZGVyZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIFJlZ2lzdHJhbnRSZW5kZXJlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG5cbiAgICB2YXIgcHJvdG8gPSBSZW5kZXJlci5wcm90b3R5cGU7XG5cbiAgICBmb3IgKHZhciBwTmFtZSBpbiBiUHJvdG8pIHtcbiAgICAgIHZhciBwVmFsID0gYlByb3RvW3BOYW1lXTtcbiAgICAgIHZhciBleGlzdHNJblIgPSByUHJvdG9bcE5hbWVdICE9IG51bGw7XG5cbiAgICAgIGlmIChleGlzdHNJblIpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlRXJyKHBOYW1lKTtcbiAgICAgIH1cblxuICAgICAgcHJvdG9bcE5hbWVdID0gcFZhbDsgLy8gdGFrZSBpbXBsIGZyb20gYmFzZVxuICAgIH1cblxuICAgIGZvciAodmFyIF9wTmFtZSBpbiByUHJvdG8pIHtcbiAgICAgIHByb3RvW19wTmFtZV0gPSByUHJvdG9bX3BOYW1lXTsgLy8gdGFrZSBpbXBsIGZyb20gcmVnaXN0cmFudFxuICAgIH1cblxuICAgIGJQcm90by5jbGllbnRGdW5jdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcHJvdG9bbmFtZV0gPSBwcm90b1tuYW1lXSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVycm9yKCdSZW5kZXJlciBkb2VzIG5vdCBpbXBsZW1lbnQgYHJlbmRlcmVyLicgKyBuYW1lICsgJygpYCBvbiBpdHMgcHJvdG90eXBlJyk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIGV4dCA9IFJlbmRlcmVyO1xuICB9XG5cbiAgcmV0dXJuIHNldE1hcCh7XG4gICAgbWFwOiBleHRlbnNpb25zLFxuICAgIGtleXM6IFt0eXBlLCBuYW1lXSxcbiAgICB2YWx1ZTogZXh0XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRlbnNpb24odHlwZSwgbmFtZSkge1xuICByZXR1cm4gZ2V0TWFwKHtcbiAgICBtYXA6IGV4dGVuc2lvbnMsXG4gICAga2V5czogW3R5cGUsIG5hbWVdXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSwgcmVnaXN0cmFudCkge1xuICByZXR1cm4gc2V0TWFwKHtcbiAgICBtYXA6IG1vZHVsZXMsXG4gICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdLFxuICAgIHZhbHVlOiByZWdpc3RyYW50XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSkge1xuICByZXR1cm4gZ2V0TWFwKHtcbiAgICBtYXA6IG1vZHVsZXMsXG4gICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdXG4gIH0pO1xufVxuXG52YXIgZXh0ZW5zaW9uID0gZnVuY3Rpb24gZXh0ZW5zaW9uKCkge1xuICAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJylcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIH0gLy8gZS5nLiBleHRlbnNpb24oJ3JlbmRlcmVyJywgJ3N2ZycsIHsgLi4uIH0pXG4gIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiBzZXRFeHRlbnNpb24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9IC8vIGUuZy4gZXh0ZW5zaW9uKCdyZW5kZXJlcicsICdzdmcnLCAnbm9kZVNoYXBlJywgJ2VsbGlwc2UnKVxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgcmV0dXJuIGdldE1vZHVsZS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgfSAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJywgJ25vZGVTaGFwZScsICdlbGxpcHNlJywgeyAuLi4gfSlcbiAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0TW9kdWxlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IoJ0ludmFsaWQgZXh0ZW5zaW9uIGFjY2VzcyBzeW50YXgnKTtcbiAgICAgICAgfVxufTsgLy8gYWxsb3dzIGEgY29yZSBpbnN0YW5jZSB0byBhY2Nlc3MgZXh0ZW5zaW9ucyBpbnRlcm5hbGx5XG5cblxuQ29yZS5wcm90b3R5cGUuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uOyAvLyBpbmNsdWRlZCBleHRlbnNpb25zXG5cbmluY0V4dHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgZ3JvdXAuZXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChleHQpIHtcbiAgICBzZXRFeHRlbnNpb24oZ3JvdXAudHlwZSwgZXh0Lm5hbWUsIGV4dC5pbXBsKTtcbiAgfSk7XG59KTtcblxuLy8gKHVzZWZ1bCBmb3IgaW5pdClcblxudmFyIFN0eWxlc2hlZXQgPSBmdW5jdGlvbiBTdHlsZXNoZWV0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3R5bGVzaGVldCkpIHtcbiAgICByZXR1cm4gbmV3IFN0eWxlc2hlZXQoKTtcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMDtcbn07XG5cbnZhciBzaGVldGZuID0gU3R5bGVzaGVldC5wcm90b3R5cGU7XG5cbnNoZWV0Zm4uaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnc3R5bGVzaGVldCc7XG59OyAvLyBqdXN0IHN0b3JlIHRoZSBzZWxlY3RvciB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG5zaGVldGZuLnNlbGVjdG9yID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gIHZhciBpID0gdGhpcy5sZW5ndGgrKztcbiAgdGhpc1tpXSA9IHtcbiAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgcHJvcGVydGllczogW11cbiAgfTtcbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59OyAvLyBqdXN0IHN0b3JlIHRoZSBwcm9wZXJ0eSB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG5zaGVldGZuLmNzcyA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICB2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTtcblxuICBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG5hbWUpKSB7XG4gICAgdmFyIG1hcCA9IG5hbWU7XG4gICAgdmFyIHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BOYW1lcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGtleSA9IHByb3BOYW1lc1tqXTtcbiAgICAgIHZhciBtYXBWYWwgPSBtYXBba2V5XTtcblxuICAgICAgaWYgKG1hcFZhbCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcCA9IFN0eWxlLnByb3BlcnRpZXNba2V5XSB8fCBTdHlsZS5wcm9wZXJ0aWVzW2Rhc2gyY2FtZWwoa2V5KV07XG5cbiAgICAgIGlmIChwcm9wID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBfbmFtZSA9IHByb3AubmFtZTtcbiAgICAgIHZhciBfdmFsdWUgPSBtYXBWYWw7XG4gICAgICB0aGlzW2ldLnByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IF9uYW1lLFxuICAgICAgICB2YWx1ZTogX3ZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnNoZWV0Zm4uc3R5bGUgPSBzaGVldGZuLmNzczsgLy8gZ2VuZXJhdGUgYSByZWFsIHN0eWxlIG9iamVjdCBmcm9tIHRoZSBkdW1teSBzdHlsZXNoZWV0XG5cbnNoZWV0Zm4uZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChjeSkge1xuICB2YXIgc3R5bGUgPSBuZXcgU3R5bGUoY3kpO1xuICByZXR1cm4gdGhpcy5hcHBlbmRUb1N0eWxlKHN0eWxlKTtcbn07IC8vIGFwcGVuZCBhIGR1bW15IHN0eWxlc2hlZXQgb2JqZWN0IG9uIGEgcmVhbCBzdHlsZSBvYmplY3RcblxuXG5zaGVldGZuLmFwcGVuZFRvU3R5bGUgPSBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbnRleHQgPSB0aGlzW2ldO1xuICAgIHZhciBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7XG4gICAgdmFyIHByb3BzID0gY29udGV4dC5wcm9wZXJ0aWVzO1xuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yKTsgLy8gYXBwbHkgc2VsZWN0b3JcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICBzdHlsZS5jc3MocHJvcC5uYW1lLCBwcm9wLnZhbHVlKTsgLy8gYXBwbHkgcHJvcGVydHlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG52YXIgdmVyc2lvbiA9IFwiMy4yMC4wXCI7XG5cbnZhciBjeXRvc2NhcGUgPSBmdW5jdGlvbiBjeXRvc2NhcGUob3B0aW9ucykge1xuICAvLyBpZiBubyBvcHRpb25zIHNwZWNpZmllZCwgdXNlIGRlZmF1bHRcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSAvLyBjcmVhdGUgaW5zdGFuY2VcblxuXG4gIGlmIChwbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHJldHVybiBuZXcgQ29yZShvcHRpb25zKTtcbiAgfSAvLyBhbGxvdyBmb3IgcmVnaXN0cmF0aW9uIG9mIGV4dGVuc2lvbnNcbiAgZWxzZSBpZiAoc3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5zaW9uLmFwcGx5KGV4dGVuc2lvbiwgYXJndW1lbnRzKTtcbiAgICB9XG59OyAvLyBlLmcuIGN5dG9zY2FwZS51c2UoIHJlcXVpcmUoJ2N5dG9zY2FwZS1mb28nKSwgYmFyIClcblxuXG5jeXRvc2NhcGUudXNlID0gZnVuY3Rpb24gKGV4dCkge1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGFyZ3MgdG8gcGFzcyB0byBleHRcblxuICBhcmdzLnVuc2hpZnQoY3l0b3NjYXBlKTsgLy8gY3l0b3NjYXBlIGlzIGZpcnN0IGFyZyB0byBleHRcblxuICBleHQuYXBwbHkobnVsbCwgYXJncyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuY3l0b3NjYXBlLndhcm5pbmdzID0gZnVuY3Rpb24gKGJvb2wpIHtcbiAgcmV0dXJuIHdhcm5pbmdzKGJvb2wpO1xufTsgLy8gcmVwbGFjZWQgYnkgYnVpbGQgc3lzdGVtXG5cblxuY3l0b3NjYXBlLnZlcnNpb24gPSB2ZXJzaW9uOyAvLyBleHBvc2UgcHVibGljIGFwaXMgKG1vc3RseSBmb3IgZXh0ZW5zaW9ucylcblxuY3l0b3NjYXBlLnN0eWxlc2hlZXQgPSBjeXRvc2NhcGUuU3R5bGVzaGVldCA9IFN0eWxlc2hlZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gY3l0b3NjYXBlO1xuIiwiLy8gTWF0ZXJpYWwgRGVzaWduIEljb25zIHY1LjkuNTVcclxuZXhwb3J0IHZhciBtZGlBYlRlc3RpbmcgPSBcIk00IDJBMiAyIDAgMCAwIDIgNFYxMkg0VjhINlYxMkg4VjRBMiAyIDAgMCAwIDYgMkg0TTQgNEg2VjZINE0yMiAxNS41VjE0QTIgMiAwIDAgMCAyMCAxMkgxNlYyMkgyMEEyIDIgMCAwIDAgMjIgMjBWMTguNUExLjU0IDEuNTQgMCAwIDAgMjAuNSAxN0ExLjU0IDEuNTQgMCAwIDAgMjIgMTUuNU0yMCAyMEgxOFYxOEgyMFYyME0yMCAxNkgxOFYxNEgyME01Ljc5IDIxLjYxTDQuMjEgMjAuMzlMMTguMjEgMi4zOUwxOS43OSAzLjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiYWN1cyA9IFwiTTUgNUg3VjExSDVWNU0xMCA1SDhWMTFIMTBWNU01IDE5SDdWMTNINVYxOU0xMCAxM0g4VjE5SDEwVjE3SDE1VjE1SDEwVjEzTTIgMjFINFYzSDJWMjFNMjAgM1Y3SDEzVjVIMTFWMTFIMTNWOUgyMFYxNUgxOFYxM0gxNlYxOUgxOFYxN0gyMFYyMUgyMlYzSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiamFkQXJhYmljID0gXCJNMTIgNEMxMC4wOCA0IDguNSA1LjU4IDguNSA3LjVDOC41IDguNDMgOC44OCA5LjI4IDkuNSA5LjkxQzcuOTcgMTAuOTEgNyAxMi42MiA3IDE0LjVDNyAxNy41MyA5LjQ3IDIwIDEyLjUgMjBDMTQuMjYgMjAgMTYgMTkuNTQgMTcuNSAxOC42NkwxNi41IDE2LjkzQzE1LjI4IDE3LjYzIDEzLjkgMTggMTIuNSAxOEMxMC41NiAxOCA5IDE2LjQ1IDkgMTQuNUM5IDEyLjkxIDEwLjA2IDExLjUzIDExLjU5IDExLjEyTDE2LjggOS43MkwxNi4yOCA3Ljc5TDExLjgzIDlDMTEuMDggOC45IDEwLjUgOC4yOCAxMC41IDcuNUMxMC41IDYuNjYgMTEuMTYgNiAxMiA2QzEyLjI2IDYgMTIuNSA2LjA3IDEyLjc1IDYuMkwxMy43NSA0LjQ3QzEzLjIyIDQuMTYgMTIuNjEgNCAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiamFkSGVicmV3ID0gXCJNMy45IDRMOSAxMC4wM0M3LjU4IDEwLjE3IDYuMzYgMTEuMTggNiAxMi41OUw0IDIwSDYuMDdMNy45MiAxMy4xMUM4LjA5IDEyLjQ2IDguNjkgMTIgOS4zNiAxMkgxMC42OUwxNy40NyAyMEgyMC4xTDE1IDEzLjk3QzE2LjQyIDEzLjgzIDE3LjY0IDEyLjgyIDE4IDExLjQxTDIwIDRIMTcuOTNMMTYuMDggMTAuODlDMTUuOTEgMTEuNTQgMTUuMzEgMTIgMTQuNjQgMTJIMTMuMzFMNi41MyA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFidWdpZGFEZXZhbmFnYXJpID0gXCJNOCAzVjVIMTFDMTIuMzIgNSAxMy40MSA1LjgzIDEzLjgyIDdINlY5SDE0VjEwSDEyQzkuMjUgMTAgNyAxMi4yNSA3IDE1QzcgMTcuNzUgOS4yNSAyMCAxMiAyMEMxMi43NyAyMCAxMy40NSAxOS43MyAxNCAxOS4zVjIxSDE2VjE3SDE0QzEzLjU1IDE3LjYyIDEyLjgzIDE4IDEyIDE4QzEwLjMzIDE4IDkgMTYuNjcgOSAxNUM5IDEzLjMzIDEwLjMzIDEyIDEyIDEySDE2VjlIMThWN0gxNS45QzE1LjQzIDQuNzIgMTMuNDEgMyAxMSAzSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWJ1Z2lkYVRoYWkgPSBcIk05IDIwQzkgMTcuNDQgMTAuODcgMTIuNDIgMTMuODYgNy4yNUMxNC4yOSA2LjUgMTUuMDggNiAxNiA2QzE3LjEyIDYgMTggNi44OCAxOCA4VjIwSDIwVjhDMjAgNS44IDE4LjIgNCAxNiA0QzE0LjM0IDQgMTIuOSA0LjkyIDEyLjEzIDYuMjVDMTAuNTYgOC45NiA5LjYxIDExLjE1IDkgMTMuMDNWNi41QzkgNS4xMyA3Ljg3IDQgNi41IDRDNS4xMyA0IDQgNS4xMyA0IDYuNUM0IDcuODcgNS4xMyA5IDYuNSA5QzYuNjcgOSA2Ljg0IDkgNyA4Ljk1VjIwTTYuNSA2QzYuNzkgNiA3IDYuMjEgNyA2LjVDNyA2Ljc5IDYuNzkgNyA2LjUgN0M2LjIxIDcgNiA2Ljc5IDYgNi41QzYgNi4yMSA2LjIxIDYgNi41IDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnQgPSBcIk00LjkzLDQuOTNDMy4xMiw2Ljc0IDIsOS4yNCAyLDEyQzIsMTQuNzYgMy4xMiwxNy4yNiA0LjkzLDE5LjA3TDYuMzQsMTcuNjZDNC44OSwxNi4yMiA0LDE0LjIyIDQsMTJDNCw5Ljc5IDQuODksNy43OCA2LjM0LDYuMzRMNC45Myw0LjkzTTE5LjA3LDQuOTNMMTcuNjYsNi4zNEMxOS4xMSw3Ljc4IDIwLDkuNzkgMjAsMTJDMjAsMTQuMjIgMTkuMTEsMTYuMjIgMTcuNjYsMTcuNjZMMTkuMDcsMTkuMDdDMjAuODgsMTcuMjYgMjIsMTQuNzYgMjIsMTJDMjIsOS4yNCAyMC44OCw2Ljc0IDE5LjA3LDQuOTNNNy43Niw3Ljc2QzYuNjcsOC44NSA2LDEwLjM1IDYsMTJDNiwxMy42NSA2LjY3LDE1LjE1IDcuNzYsMTYuMjRMOS4xNywxNC44M0M4LjQ1LDE0LjExIDgsMTMuMTEgOCwxMkM4LDEwLjg5IDguNDUsOS44OSA5LjE3LDkuMTdMNy43Niw3Ljc2TTE2LjI0LDcuNzZMMTQuODMsOS4xN0MxNS41NSw5Ljg5IDE2LDEwLjg5IDE2LDEyQzE2LDEzLjExIDE1LjU1LDE0LjExIDE0LjgzLDE0LjgzTDE2LjI0LDE2LjI0QzE3LjMzLDE1LjE1IDE4LDEzLjY1IDE4LDEyQzE4LDEwLjM1IDE3LjMzLDguODUgMTYuMjQsNy43Nk0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnRDaGVjayA9IFwiTTIwLjU5IDE0Ljg0TDIxLjc1IDE2LjI1TDE3IDIxTDE0LjI1IDE4TDE1LjQxIDE2Ljg0TDE3IDE4LjQzTDIwLjU5IDE0Ljg0TTE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJWMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M00xNS45NiAxMi4zNkMxNi42IDEyLjEzIDE3LjI4IDEyIDE4IDEyQzE4IDEwLjM1IDE3LjMzIDguODUgMTYuMjQgNy43NkwxNC44MyA5LjE3QzE1LjU1IDkuODkgMTYgMTAuODkgMTYgMTJDMTYgMTIuMTIgMTUuOTcgMTIuMjQgMTUuOTYgMTIuMzZNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTcuNzYgNy43NkM2LjY3IDguODUgNiAxMC4zNSA2IDEyUzYuNjcgMTUuMTUgNy43NiAxNi4yNEw5LjE3IDE0LjgzQzguNDUgMTQuMTEgOCAxMy4xMSA4IDEyUzguNDUgOS44OSA5LjE3IDkuMTdMNy43NiA3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50TWludXMgPSBcIk0xNiAxMkMxNiAxMC44OSAxNS41NSA5Ljg5IDE0LjgzIDkuMTdMMTYuMjQgNy43NkMxNy4zMyA4Ljg1IDE4IDEwLjM1IDE4IDEyQzE3LjI4IDEyIDE2LjYgMTIuMTMgMTUuOTYgMTIuMzZDMTUuOTcgMTIuMjQgMTYgMTIuMTIgMTYgMTJNMjAgMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M0wxNy42NiA2LjM0QzE5LjExIDcuNzggMjAgOS43OSAyMCAxMkMyMCAxMi4xMiAyMCAxMi4yMyAyMCAxMi4zNE0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNNy43NiA3Ljc2QzYuNjcgOC44NSA2IDEwLjM1IDYgMTJTNi42NyAxNS4xNSA3Ljc2IDE2LjI0TDkuMTcgMTQuODNDOC40NSAxNC4xMSA4IDEzLjExIDggMTJTOC40NSA5Ljg5IDkuMTcgOS4xN0w3Ljc2IDcuNzZNNi4zNCA2LjM0TDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJTMy4xMiAxNy4yNiA0LjkzIDE5LjA3TDYuMzQgMTcuNjZDNC44OSAxNi4yMiA0IDE0LjIyIDQgMTJDNCA5Ljc5IDQuODkgNy43OCA2LjM0IDYuMzRNMTQgMTlIMjJWMTdIMTRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnROZXR3b3JrID0gXCJNNC45MywzLjkzQzMuMTIsNS43NCAyLDguMjQgMiwxMUMyLDEzLjc2IDMuMTIsMTYuMjYgNC45MywxOC4wN0w2LjM0LDE2LjY2QzQuODksMTUuMjIgNCwxMy4yMiA0LDExQzQsOC43OSA0Ljg5LDYuNzggNi4zNCw1LjM0TDQuOTMsMy45M00xOS4wNywzLjkzTDE3LjY2LDUuMzRDMTkuMTEsNi43OCAyMCw4Ljc5IDIwLDExQzIwLDEzLjIyIDE5LjExLDE1LjIyIDE3LjY2LDE2LjY2TDE5LjA3LDE4LjA3QzIwLjg4LDE2LjI2IDIyLDEzLjc2IDIyLDExQzIyLDguMjQgMjAuODgsNS43NCAxOS4wNywzLjkzTTcuNzYsNi43NkM2LjY3LDcuODUgNiw5LjM1IDYsMTFDNiwxMi42NSA2LjY3LDE0LjE1IDcuNzYsMTUuMjRMOS4xNywxMy44M0M4LjQ1LDEzLjExIDgsMTIuMTEgOCwxMUM4LDkuODkgOC40NSw4Ljg5IDkuMTcsOC4xN0w3Ljc2LDYuNzZNMTYuMjQsNi43NkwxNC44Myw4LjE3QzE1LjU1LDguODkgMTYsOS44OSAxNiwxMUMxNiwxMi4xMSAxNS41NSwxMy4xMSAxNC44MywxMy44M0wxNi4yNCwxNS4yNEMxNy4zMywxNC4xNSAxOCwxMi42NSAxOCwxMUMxOCw5LjM1IDE3LjMzLDcuODUgMTYuMjQsNi43Nk0xMiw5QTIsMiAwIDAsMCAxMCwxMUEyLDIgMCAwLDAgMTIsMTNBMiwyIDAgMCwwIDE0LDExQTIsMiAwIDAsMCAxMiw5TTExLDE1VjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1QTEsMSAwIDAsMCAxNCwxOUgxM1YxNUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2Nlc3NQb2ludE5ldHdvcmtPZmYgPSBcIk0xNC44MywxMy44M0MxNS41NSwxMy4xMSAxNiwxMi4xMSAxNiwxMUMxNiw5Ljg5IDE1LjU1LDguODkgMTQuODMsOC4xN0wxNi4yNCw2Ljc2QzE3LjMzLDcuODUgMTgsOS4zNSAxOCwxMUMxOCwxMi42NSAxNy4zMywxNC4xNSAxNi4yNCwxNS4yNEwxNC44MywxMy44M00xNCwxMUEyLDIgMCAwLDAgMTIsOUMxMS40LDkgMTAuODcsOS4yNyAxMC41LDkuNjhMMTMuMzIsMTIuNUMxMy43MywxMi4xMyAxNCwxMS42IDE0LDExTTE3LjY2LDE2LjY2TDE5LjA3LDE4LjA3QzIwLjg4LDE2LjI2IDIyLDEzLjc2IDIyLDExQzIyLDguMjQgMjAuODgsNS43NCAxOS4wNywzLjkzTDE3LjY2LDUuMzRDMTkuMTEsNi43OCAyMCw4Ljc5IDIwLDExQzIwLDEzLjIyIDE5LjExLDE1LjIyIDE3LjY2LDE2LjY2TTIyLDIxLjE4VjIwSDIwLjgyTDIyLDIxLjE4TTIwLjI3LDIyTDIxLDIyLjczTDE5LjczLDI0TDE3LjczLDIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE1LjI3TDguMzQsMTIuNjFDOC41NCwxMy4wNyA4LjgyLDEzLjUgOS4xNywxMy44M0w3Ljc2LDE1LjI0QzYuNjcsMTQuMTUgNiwxMi42NSA2LDExQzYsMTAuNzcgNiwxMC41NCA2LjA0LDEwLjMxTDQuMzcsOC42NEM0LjE0LDkuMzkgNCwxMC4xOCA0LDExQzQsMTMuMjIgNC44OSwxNS4yMiA2LjM0LDE2LjY2TDQuOTMsMTguMDdDMy4xMiwxNi4yNiAyLDEzLjc2IDIsMTFDMiw5LjYxIDIuMjksOC4yOCAyLjgxLDcuMDhMMSw1LjI3TDIuMjgsNEwzLjcsNS40Mkw1LjE1LDYuODdMNi42Myw4LjM1VjguMzVMOC4xNyw5LjlMMTAuMjgsMTJMMTEsMTIuNzFMMTguMjcsMjBIMTguMjhMMjAuMjgsMjJIMjAuMjdNMTUuNzMsMjBMMTMsMTcuMjdWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDE1LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50T2ZmID0gXCJNMjAuODQgMjIuNzNMMTIuMSAxNEMxMi4wNiAxNCAxMi4wMyAxNCAxMiAxNEMxMC45IDE0IDEwIDEzLjExIDEwIDEyQzEwIDExLjk3IDEwIDExLjk0IDEwIDExLjlMOC40IDEwLjI5QzguMTUgMTAuODEgOCAxMS4zOCA4IDEyQzggMTMuMTEgOC40NSAxNC4xMSA5LjE3IDE0LjgzTDcuNzYgMTYuMjRDNi42NyAxNS4xNSA2IDEzLjY1IDYgMTJDNiAxMC44MyA2LjM0IDkuNzQgNi45MyA4LjgyTDUuNSA3LjM3QzQuNTUgOC42NyA0IDEwLjI3IDQgMTJDNCAxNC4yMiA0Ljg5IDE2LjIyIDYuMzQgMTcuNjZMNC45MyAxOS4wN0MzLjEyIDE3LjI2IDIgMTQuNzYgMiAxMkMyIDkuNzIgMi43NyA3LjYzIDQuMDYgNS45NUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE1LjkzIDEyLjczTDE3LjUzIDE0LjMzQzE3LjgzIDEzLjYxIDE4IDEyLjgzIDE4IDEyQzE4IDEwLjM1IDE3LjMzIDguODUgMTYuMjQgNy43NkwxNC44MyA5LjE3QzE1LjU1IDkuODkgMTYgMTAuODkgMTYgMTJDMTYgMTIuMjUgMTUuOTcgMTIuNSAxNS45MyAxMi43M00xOS4wMyAxNS44M0wyMC41IDE3LjI4QzIxLjQ0IDE1Ljc1IDIyIDEzLjk0IDIyIDEyQzIyIDkuMjQgMjAuODggNi43NCAxOS4wNyA0LjkzTDE3LjY2IDYuMzRDMTkuMTEgNy43OCAyMCA5Ljc5IDIwIDEyQzIwIDEzLjM5IDE5LjY1IDE0LjcgMTkuMDMgMTUuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnRQbHVzID0gXCJNMTYgMTJDMTYgMTAuODkgMTUuNTUgOS44OSAxNC44MyA5LjE3TDE2LjI0IDcuNzZDMTcuMzMgOC44NSAxOCAxMC4zNSAxOCAxMkMxNy4yOCAxMiAxNi42IDEyLjEzIDE1Ljk2IDEyLjM2QzE1Ljk3IDEyLjI0IDE2IDEyLjEyIDE2IDEyTTIwIDEyLjM0QzIwLjY4IDEyLjU5IDIxLjMzIDEyLjk2IDIxLjg4IDEzLjQzQzIxLjk1IDEyLjk2IDIyIDEyLjUgMjIgMTJDMjIgOS4yNCAyMC44OCA2Ljc0IDE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJDMjAgMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzRNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTcuNzYgNy43NkM2LjY3IDguODUgNiAxMC4zNSA2IDEyUzYuNjcgMTUuMTUgNy43NiAxNi4yNEw5LjE3IDE0LjgzQzguNDUgMTQuMTEgOCAxMy4xMSA4IDEyUzguNDUgOS44OSA5LjE3IDkuMTdMNy43NiA3Ljc2TTE5IDE0SDE3VjE3SDE0VjE5SDE3VjIySDE5VjE5SDIyVjE3SDE5VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50UmVtb3ZlID0gXCJNMTYgMTJDMTYgMTAuODkgMTUuNTUgOS44OSAxNC44MyA5LjE3TDE2LjI0IDcuNzZDMTcuMzMgOC44NSAxOCAxMC4zNSAxOCAxMkMxNy4yOCAxMiAxNi42IDEyLjEzIDE1Ljk2IDEyLjM2QzE1Ljk3IDEyLjI0IDE2IDEyLjEyIDE2IDEyTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJDMjAgMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M00xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNNy43NiA3Ljc2QzYuNjcgOC44NSA2IDEwLjM1IDYgMTJTNi42NyAxNS4xNSA3Ljc2IDE2LjI0TDkuMTcgMTQuODNDOC40NSAxNC4xMSA4IDEzLjExIDggMTJTOC40NSA5Ljg5IDkuMTcgOS4xN0w3Ljc2IDcuNzZNMjAuMTIgMTQuNDZMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTNMMTggMTkuNDFMMjAuMTIgMjEuNTNMMjEuNTMgMjAuMTJMMTkuNDEgMThMMjEuNTMgMTUuODhMMjAuMTIgMTQuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudCA9IFwiTTEyLDRBNCw0IDAgMCwxIDE2LDhBNCw0IDAgMCwxIDEyLDEyQTQsNCAwIDAsMSA4LDhBNCw0IDAgMCwxIDEyLDRNMTIsMTRDMTYuNDIsMTQgMjAsMTUuNzkgMjAsMThWMjBINFYxOEM0LDE1Ljc5IDcuNTgsMTQgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEFsZXJ0ID0gXCJNMTAgNEE0IDQgMCAwIDEgMTQgOEE0IDQgMCAwIDEgMTAgMTJBNCA0IDAgMCAxIDYgOEE0IDQgMCAwIDEgMTAgNE0xMCAxNEMxNC40MiAxNCAxOCAxNS43OSAxOCAxOFYyMEgyVjE4QzIgMTUuNzkgNS41OCAxNCAxMCAxNE0yMCAxMlY3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBbGVydE91dGxpbmUgPSBcIk0yMCAxMlY3SDIyVjEzSDIwTTIwIDE3SDIyVjE1SDIwTTEwIDEzQzEyLjY3IDEzIDE4IDE0LjM0IDE4IDE3VjIwSDJWMTdDMiAxNC4zNCA3LjMzIDEzIDEwIDEzTTEwIDRBNCA0IDAgMCAxIDE0IDhBNCA0IDAgMCAxIDEwIDEyQTQgNCAwIDAgMSA2IDhBNCA0IDAgMCAxIDEwIDRNMTAgMTQuOUM3LjAzIDE0LjkgMy45IDE2LjM2IDMuOSAxN1YxOC4xSDE2LjFWMTdDMTYuMSAxNi4zNiAxMi45NyAxNC45IDEwIDE0LjlNMTAgNS45QTIuMSAyLjEgMCAwIDAgNy45IDhBMi4xIDIuMSAwIDAgMCAxMCAxMC4xQTIuMSAyLjEgMCAwIDAgMTIuMSA4QTIuMSAyLjEgMCAwIDAgMTAgNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd0xlZnQgPSBcIk0xOCwyMUwxNSwxOEwxOCwxNVYxN0gyMlYxOUgxOFYyMU0xMCw0QTQsNCAwIDAsMSAxNCw4QTQsNCAwIDAsMSAxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDE0QzExLjE1LDE0IDEyLjI1LDE0LjEyIDEzLjI0LDE0LjM0QzEyLjQ2LDE1LjM1IDEyLDE2LjYyIDEyLDE4QzEyLDE4LjcgMTIuMTIsMTkuMzcgMTIuMzQsMjBIMlYxOEMyLDE1Ljc5IDUuNTgsMTQgMTAsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEFycm93TGVmdE91dGxpbmUgPSBcIk0xOCwyMUwxNSwxOEwxOCwxNVYxN0gyMlYxOUgxOFYyMU0xMywxOEMxMywxOC43MSAxMy4xNSwxOS4zOSAxMy40MiwyMEgyVjE3QzIsMTQuNzkgNS41OCwxMyAxMCwxM0MxMSwxMyAxMS45NiwxMy4wOSAxMi44NSwxMy4yNkMxMy42OCwxMy40MiAxNC40NCwxMy42NCAxNS4xMSwxMy45MkMxMy44MywxNC44MyAxMywxNi4zMiAxMywxOE00LDE3VjE4SDExQzExLDE2Ljk2IDExLjIzLDE1Ljk3IDExLjY0LDE1LjA4TDEwLDE1QzYuNjksMTUgNCwxNS45IDQsMTdNMTAsNEE0LDQgMCAwLDEgMTQsOEE0LDQgMCAwLDEgMTAsMTJBNCw0IDAgMCwxIDYsOEE0LDQgMCAwLDEgMTAsNE0xMCw2QTIsMiAwIDAsMCA4LDhBMiwyIDAgMCwwIDEwLDEwQTIsMiAwIDAsMCAxMiw4QTIsMiAwIDAsMCAxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd1JpZ2h0ID0gXCJNMTksMjFWMTlIMTVWMTdIMTlWMTVMMjIsMThMMTksMjFNMTAsNEE0LDQgMCAwLDEgMTQsOEE0LDQgMCAwLDEgMTAsMTJBNCw0IDAgMCwxIDYsOEE0LDQgMCAwLDEgMTAsNE0xMCwxNEMxMS4xNSwxNCAxMi4yNSwxNC4xMiAxMy4yNCwxNC4zNEMxMi40NiwxNS4zNSAxMiwxNi42MiAxMiwxOEMxMiwxOC43IDEyLjEyLDE5LjM3IDEyLjM0LDIwSDJWMThDMiwxNS43OSA1LjU4LDE0IDEwLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd1JpZ2h0T3V0bGluZSA9IFwiTTE5LDIxVjE5SDE1VjE3SDE5VjE1TDIyLDE4TDE5LDIxTTEzLDE4QzEzLDE4LjcxIDEzLjE1LDE5LjM5IDEzLjQyLDIwSDJWMTdDMiwxNC43OSA1LjU4LDEzIDEwLDEzQzExLDEzIDExLjk2LDEzLjA5IDEyLjg1LDEzLjI2QzEzLjY4LDEzLjQyIDE0LjQ0LDEzLjY0IDE1LjExLDEzLjkyQzEzLjgzLDE0LjgzIDEzLDE2LjMyIDEzLDE4TTQsMTdWMThIMTFDMTEsMTYuOTYgMTEuMjMsMTUuOTcgMTEuNjQsMTUuMDhMMTAsMTVDNi42OSwxNSA0LDE1LjkgNCwxN00xMCw0QTQsNCAwIDAsMSAxNCw4QTQsNCAwIDAsMSAxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDZBMiwyIDAgMCwwIDgsOEEyLDIgMCAwLDAgMTAsMTBBMiwyIDAgMCwwIDEyLDhBMiwyIDAgMCwwIDEwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEJveCA9IFwiTTYsMTdDNiwxNSAxMCwxMy45IDEyLDEzLjlDMTQsMTMuOSAxOCwxNSAxOCwxN1YxOEg2TTE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZBMywzIDAgMCwxIDE1LDlNMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVDMy44OSwzIDMsMy45IDMsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Qm94TXVsdGlwbGUgPSBcIk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZNMjAsMkEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIOEEyLDIgMCAwLDEgNiwxNlY0QTIsMiAwIDAsMSA4LDJIMjBNMTcsN0EzLDMgMCAwLDAgMTQsNEEzLDMgMCAwLDAgMTEsN0EzLDMgMCAwLDAgMTQsMTBBMywzIDAgMCwwIDE3LDdNOCwxNVYxNkgyMFYxNUMyMCwxMyAxNiwxMS45IDE0LDExLjlDMTIsMTEuOSA4LDEzIDgsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNkgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMThWMjBINFY2TTE4LjUgMTQuMjVDMTguNSAxMi43NSAxNS41IDEyIDE0IDEyUzkuNSAxMi43NSA5LjUgMTQuMjVWMTVIMTguNU0xNCAxMC4yNUMxNS4yNCAxMC4yNSAxNi4yNSA5LjI0IDE2LjI1IDhTMTUuMjQgNS43NSAxNCA1Ljc1IDExLjc1IDYuNzYgMTEuNzUgOCAxMi43NiAxMC4yNSAxNCAxMC4yNU0yMCAySDhDNi45IDIgNiAyLjkgNiA0VjE2QzYgMTcuMTEgNi45IDE4IDggMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjg5IDIxLjEgMiAyMCAyTTIwIDE2SDhWNEgyMFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Qm94T3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzTTE2LjUsMTYuMjVDMTYuNSwxNC43NSAxMy41LDE0IDEyLDE0QzEwLjUsMTQgNy41LDE0Ljc1IDcuNSwxNi4yNVYxN0gxNi41TTEyLDEyLjI1QTIuMjUsMi4yNSAwIDAsMCAxNC4yNSwxMEEyLjI1LDIuMjUgMCAwLDAgMTIsNy43NUEyLjI1LDIuMjUgMCAwLDAgOS43NSwxMEEyLjI1LDIuMjUgMCAwLDAgMTIsMTIuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhbmNlbCA9IFwiTTEwIDRBNCA0IDAgMCAwIDYgOEE0IDQgMCAwIDAgMTAgMTJBNCA0IDAgMCAwIDE0IDhBNCA0IDAgMCAwIDEwIDRNMTcuNSAxM0MxNSAxMyAxMyAxNSAxMyAxNy41QzEzIDIwIDE1IDIyIDE3LjUgMjJDMjAgMjIgMjIgMjAgMjIgMTcuNUMyMiAxNSAyMCAxMyAxNy41IDEzTTEwIDE0QzUuNTggMTQgMiAxNS43OSAyIDE4VjIwSDExLjVBNi41IDYuNSAwIDAgMSAxMSAxNy41QTYuNSA2LjUgMCAwIDEgMTEuOTUgMTQuMTRDMTEuMzIgMTQuMDYgMTAuNjggMTQgMTAgMTRNMTcuNSAxNC41QzE5LjE2IDE0LjUgMjAuNSAxNS44NCAyMC41IDE3LjVDMjAuNSAxOC4wNiAyMC4zNSAxOC41OCAyMC4wOCAxOUwxNiAxNC45MkMxNi40MiAxNC42NSAxNi45NCAxNC41IDE3LjUgMTQuNU0xNC45MiAxNkwxOSAyMC4wOEMxOC41OCAyMC4zNSAxOC4wNiAyMC41IDE3LjUgMjAuNUMxNS44NCAyMC41IDE0LjUgMTkuMTYgMTQuNSAxNy41QzE0LjUgMTYuOTQgMTQuNjUgMTYuNDIgMTQuOTIgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhbmNlbE91dGxpbmUgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTEwIDZBMiAyIDAgMCAxIDEyIDhBMiAyIDAgMCAxIDEwIDEwQTIgMiAwIDAgMSA4IDhBMiAyIDAgMCAxIDEwIDZNMTAgMTNDNy4zMyAxMyAyIDE0LjMzIDIgMTdWMjBIMTEuNUE2LjUgNi41IDAgMCAxIDExLjAzIDE4LjFIMy45VjE3QzMuOSAxNi4zNiA3LjAzIDE0LjkgMTAgMTQuOUMxMC41IDE0LjkgMTEgMTQuOTUgMTEuNSAxNS4wM0E2LjUgNi41IDAgMCAxIDEyLjU1IDEzLjI5QzExLjYxIDEzLjEgMTAuNzEgMTMgMTAgMTNNMTcuNSAxM0MxNSAxMyAxMyAxNSAxMyAxNy41QzEzIDIwIDE1IDIyIDE3LjUgMjJDMjAgMjIgMjIgMjAgMjIgMTcuNUMyMiAxNSAyMCAxMyAxNy41IDEzTTE3LjUgMTQuNUMxOS4xNiAxNC41IDIwLjUgMTUuODQgMjAuNSAxNy41QzIwLjUgMTguMDYgMjAuMzUgMTguNTggMjAuMDggMTlMMTYgMTQuOTJDMTYuNDIgMTQuNjUgMTYuOTQgMTQuNSAxNy41IDE0LjVNMTQuOTIgMTZMMTkgMjAuMDhDMTguNTggMjAuMzUgMTguMDYgMjAuNSAxNy41IDIwLjVDMTUuODQgMjAuNSAxNC41IDE5LjE2IDE0LjUgMTcuNUMxNC41IDE2Ljk0IDE0LjY1IDE2LjQyIDE0LjkyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDYXNoID0gXCJNMTEgOEMxMSAxMC4yMSA5LjIxIDEyIDcgMTJDNC43OSAxMiAzIDEwLjIxIDMgOEMzIDUuNzkgNC43OSA0IDcgNEM5LjIxIDQgMTEgNS43OSAxMSA4TTExIDE0LjcyVjIwSDBWMThDMCAxNS43OSAzLjEzIDE0IDcgMTRDOC41IDE0IDkuODcgMTQuMjcgMTEgMTQuNzJNMjQgMjBIMTNWM0gyNFYyME0xNiAxMS41QzE2IDEwLjEyIDE3LjEyIDkgMTguNSA5QzE5Ljg4IDkgMjEgMTAuMTIgMjEgMTEuNUMyMSAxMi44OCAxOS44OCAxNCAxOC41IDE0QzE3LjEyIDE0IDE2IDEyLjg4IDE2IDExLjVNMjIgN0MyMC45IDcgMjAgNi4xMSAyMCA1SDE3QzE3IDYuMTEgMTYuMTEgNyAxNSA3VjE2QzE2LjExIDE2IDE3IDE2LjkgMTcgMThIMjBDMjAgMTYuOSAyMC45IDE2IDIyIDE2VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhc2hPdXRsaW5lID0gXCJNMTYgMTEuNUMxNiAxMC4xMiAxNy4xMiA5IDE4LjUgOVMyMSAxMC4xMiAyMSAxMS41IDE5Ljg4IDE0IDE4LjUgMTQgMTYgMTIuODggMTYgMTEuNU0xMyAzVjIwSDI0VjNIMTNNMjIgMTZDMjAuOSAxNiAyMCAxNi45IDIwIDE4SDE3QzE3IDE2LjkgMTYuMTEgMTYgMTUgMTZWN0MxNi4xMSA3IDE3IDYuMTEgMTcgNUgyMEMyMCA2LjExIDIwLjkgNyAyMiA3VjE2TTcgNkM4LjEgNiA5IDYuOSA5IDhTOC4xIDEwIDcgMTAgNSA5LjEgNSA4IDUuOSA2IDcgNk03IDRDNC43OSA0IDMgNS43OSAzIDhTNC43OSAxMiA3IDEyIDExIDEwLjIxIDExIDggOS4yMSA0IDcgNE03IDE0QzMuMTMgMTQgMCAxNS43OSAwIDE4VjIwSDExVjE4SDJDMiAxNy40MiAzLjc1IDE2IDcgMTZDOC44MyAxNiAxMC4xNyAxNi40NSAxMSAxNi45NVYxNC43MkM5Ljg3IDE0LjI3IDguNSAxNCA3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGVjayA9IFwiTTIxLjEsMTIuNUwyMi41LDEzLjkxTDE1Ljk3LDIwLjVMMTIuNSwxN0wxMy45LDE1LjU5TDE1Ljk3LDE3LjY3TDIxLjEsMTIuNU0xMCwxN0wxMywyMEgzVjE4QzMsMTUuNzkgNi41OCwxNCAxMSwxNEwxMi44OSwxNC4xMUwxMCwxN00xMSw0QTQsNCAwIDAsMSAxNSw4QTQsNCAwIDAsMSAxMSwxMkE0LDQgMCAwLDEgNyw4QTQsNCAwIDAsMSAxMSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGVja091dGxpbmUgPSBcIk0yMS4xLDEyLjVMMjIuNSwxMy45MUwxNS45NywyMC41TDEyLjUsMTdMMTMuOSwxNS41OUwxNS45NywxNy42N0wyMS4xLDEyLjVNMTEsNEE0LDQgMCAwLDEgMTUsOEE0LDQgMCAwLDEgMTEsMTJBNCw0IDAgMCwxIDcsOEE0LDQgMCAwLDEgMTEsNE0xMSw2QTIsMiAwIDAsMCA5LDhBMiwyIDAgMCwwIDExLDEwQTIsMiAwIDAsMCAxMyw4QTIsMiAwIDAsMCAxMSw2TTExLDEzQzExLjY4LDEzIDEyLjUsMTMuMDkgMTMuNDEsMTMuMjZMMTEuNzQsMTQuOTNMMTEsMTQuOUM4LjAzLDE0LjkgNC45LDE2LjM2IDQuOSwxN1YxOC4xSDExLjFMMTMsMjBIM1YxN0MzLDE0LjM0IDguMzMsMTMgMTEsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENoaWxkID0gXCJNMTIsMkEzLDMgMCAwLDEgMTUsNUEzLDMgMCAwLDEgMTIsOEEzLDMgMCAwLDEgOSw1QTMsMyAwIDAsMSAxMiwyTTEyLDlDMTMuNjMsOSAxNS4xMiw5LjM1IDE2LjUsMTAuMDVDMTcuODQsMTAuNzYgMTguNSwxMS42MSAxOC41LDEyLjYxVjE4LjM4QzE4LjUsMTkuNSAxNy42NCwyMC40NCAxNS44OSwyMS4xOVYxOUMxNS44OSwxOC4wNSAxNS4wMywxNy4zOCAxMy4zMSwxNi45N0MxMi43NSwxNi44NCAxMi4zMSwxNi43OCAxMiwxNi43OEMxMS4xMywxNi43OCAxMC4zLDE2Ljk1IDkuNTQsMTcuM0M4Ljc3LDE3LjY0IDguMzEsMTguMDggOC4xNiwxOC42MUM5LjUsMTkuMTQgMTAuNzgsMTkuNDEgMTIsMTkuNDFMMTMsMTkuMzFWMjEuOTRMMTIsMjJDMTAuNjMsMjIgOS4zMywyMS43MiA4LjExLDIxLjE5QzYuMzYsMjAuNDQgNS41LDE5LjUgNS41LDE4LjM4VjEyLjYxQzUuNSwxMS42MSA2LjE2LDEwLjc2IDcuNSwxMC4wNUM4Ljg4LDkuMzUgMTAuMzgsOSAxMiw5TTEyLDExQTIsMiAwIDAsMCAxMCwxM0EyLDIgMCAwLDAgMTIsMTVBMiwyIDAgMCwwIDE0LDEzQTIsMiAwIDAsMCAxMiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q2hpbGRDaXJjbGUgPSBcIk0xMiwxMkExLjUsMS41IDAgMCwxIDEzLjUsMTMuNUExLjUsMS41IDAgMCwxIDEyLDE1QTEuNSwxLjUgMCAwLDEgMTAuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTIsMTJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMTZDMTIuNzIsMTYgMTMuNCwxNi4xNSAxNC4wNCwxNi41QzE0LjY4LDE2LjggMTUsMTcuMiAxNSwxNy42N1YxOS40MUMxNi4zNCwxOC44MSAxNywxOC4wOCAxNywxNy4yVjEyLjhDMTcsMTIgMTYuNSwxMS4zNSAxNS40NSwxMC44QzE0LjQsMTAuMjYgMTMuMjUsMTAgMTIsMTBDMTAuNzUsMTAgOS42LDEwLjI2IDguNTUsMTAuOEM3LjUsMTEuMzUgNywxMiA3LDEyLjhWMTcuMkM3LDE4IDcuNTMsMTguNjkgOC42MywxOS4yMkM5LjcyLDE5Ljc1IDEwLjg0LDIwIDEyLDIwTDEzLDE5LjkyVjE3LjkxTDEyLDE4QzExLDE4IDEwLDE3LjggOS4wNSwxNy4zOUM5LjE3LDE3IDkuNTMsMTYuNjkgMTAuMTMsMTYuNDFDMTAuNzIsMTYuMTMgMTEuMzQsMTYgMTIsMTZNMTIsNEEyLjUsMi41IDAgMCwwIDkuNSw2LjVBMi41LDIuNSAwIDAsMCAxMiw5QTIuNSwyLjUgMCAwLDAgMTQuNSw2LjVBMi41LDIuNSAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGlsZE91dGxpbmUgPSBcIk0xMiAxN0MxMC45IDE3IDEwIDE2LjEgMTAgMTVDMTAgMTMuOSAxMC45IDEzIDEyIDEzQzEzLjEgMTMgMTQgMTMuOSAxNCAxNUMxNCAxNi4xIDEzLjEgMTcgMTIgMTdNMTIgMTBDMTQuMzQgMTAgMTkgMTEuMTYgMTkgMTMuNVYxOC42M0MxOSAxOS41IDE4LjMxIDIwLjI0IDE3LjM0IDIwLjc5VjEzLjM4QzE3LjM0IDEyLjgyIDE0LjYgMTEuNTQgMTIgMTEuNTRDOS40IDExLjU0IDYuNjYgMTIuODIgNi42NiAxMy4zOFYxOC43NUM2LjY2IDE5IDcuMzEgMTkuNDYgOC4yOCAxOS44NUM5IDE5IDEwLjkzIDE4LjU2IDEyIDE4LjU2QzEzLjMzIDE4LjU2IDE2IDE5LjIyIDE2IDIwLjU2VjIxLjM5QzE0LjYzIDIxLjg4IDEzLjA3IDIyLjEzIDEyIDIyLjEzQzEwLjkzIDIyLjEzIDkuMzggMjEuODggOCAyMS4zOUg4QzYuMzcgMjAuODEgNSAxOS44OSA1IDE4LjYzVjEzLjVDNSAxMS4xNiA5LjY2IDEwIDEyIDEwTTEyIDMuNzVDMTEuMDMgMy43NSAxMC4yNSA0LjUzIDEwLjI1IDUuNUMxMC4yNSA2LjQ3IDExLjAzIDcuMjUgMTIgNy4yNUMxMi45NyA3LjI1IDEzLjc1IDYuNDcgMTMuNzUgNS41QzEzLjc1IDQuNTMgMTIuOTcgMy43NSAxMiAzLjc1TTEyIDlDMTAuMDcgOSA4LjUgNy40MyA4LjUgNS41QzguNSAzLjU3IDEwLjA3IDIgMTIgMkMxMy45MyAyIDE1LjUgMy41NyAxNS41IDUuNUMxNS41IDcuNDMgMTMuOTMgOSAxMiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaXJjbGUgPSBcIk0xMiwxOS4yQzkuNSwxOS4yIDcuMjksMTcuOTIgNiwxNkM2LjAzLDE0IDEwLDEyLjkgMTIsMTIuOUMxNCwxMi45IDE3Ljk3LDE0IDE4LDE2QzE2LjcxLDE3LjkyIDE0LjUsMTkuMiAxMiwxOS4yTTEyLDVBMywzIDAgMCwxIDE1LDhBMywzIDAgMCwxIDEyLDExQTMsMyAwIDAsMSA5LDhBMywzIDAgMCwxIDEyLDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk03LjA3LDE4LjI4QzcuNSwxNy4zOCAxMC4xMiwxNi41IDEyLDE2LjVDMTMuODgsMTYuNSAxNi41LDE3LjM4IDE2LjkzLDE4LjI4QzE1LjU3LDE5LjM2IDEzLjg2LDIwIDEyLDIwQzEwLjE0LDIwIDguNDMsMTkuMzYgNy4wNywxOC4yOE0xOC4zNiwxNi44M0MxNi45MywxNS4wOSAxMy40NiwxNC41IDEyLDE0LjVDMTAuNTQsMTQuNSA3LjA3LDE1LjA5IDUuNjQsMTYuODNDNC42MiwxNS41IDQsMTMuODIgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDEzLjgyIDE5LjM4LDE1LjUgMTguMzYsMTYuODNNMTIsNkMxMC4wNiw2IDguNSw3LjU2IDguNSw5LjVDOC41LDExLjQ0IDEwLjA2LDEzIDEyLDEzQzEzLjk0LDEzIDE1LjUsMTEuNDQgMTUuNSw5LjVDMTUuNSw3LjU2IDEzLjk0LDYgMTIsNk0xMiwxMUExLjUsMS41IDAgMCwxIDEwLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsOEExLjUsMS41IDAgMCwxIDEzLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENsb2NrID0gXCJNMTAuNjMsMTQuMUMxMi4yMywxMC41OCAxNi4zOCw5LjAzIDE5LjksMTAuNjNDMjMuNDIsMTIuMjMgMjQuOTcsMTYuMzggMjMuMzcsMTkuOUMyMi4yNCwyMi40IDE5Ljc1LDI0IDE3LDI0QzE0LjMsMjQgMTEuODMsMjIuNDQgMTAuNjcsMjBIMVYxOEMxLjA2LDE2Ljg2IDEuODQsMTUuOTMgMy4zNCwxNS4xOEM0Ljg0LDE0LjQzIDYuNzIsMTQuMDQgOSwxNEM5LjU3LDE0IDEwLjExLDE0LjA1IDEwLjYzLDE0LjFWMTQuMU05LDRDMTAuMTIsNC4wMyAxMS4wNiw0LjQyIDExLjgxLDUuMTdDMTIuNTYsNS45MiAxMi45Myw2Ljg2IDEyLjkzLDhDMTIuOTMsOS4xNCAxMi41NiwxMC4wOCAxMS44MSwxMC44M0MxMS4wNiwxMS41OCAxMC4xMiwxMS45NSA5LDExLjk1QzcuODgsMTEuOTUgNi45NCwxMS41OCA2LjE5LDEwLjgzQzUuNDQsMTAuMDggNS4wNyw5LjE0IDUuMDcsOEM1LjA3LDYuODYgNS40NCw1LjkyIDYuMTksNS4xN0M2Ljk0LDQuNDIgNy44OCw0LjAzIDksNE0xNywyMkE1LDUgMCAwLDAgMjIsMTdBNSw1IDAgMCwwIDE3LDEyQTUsNSAwIDAsMCAxMiwxN0E1LDUgMCAwLDAgMTcsMjJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q2xvY2tPdXRsaW5lID0gXCJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNE0xNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0E1LDUgMCAwLDAgMTcsMTJNMTcsMTBBNyw3IDAgMCwxIDI0LDE3QTcsNyAwIDAsMSAxNywyNEMxNC4yMSwyNCAxMS44LDIyLjM2IDEwLjY3LDIwSDFWMTdDMSwxNC4zNCA2LjMzLDEzIDksMTNDOS42LDEzIDEwLjM0LDEzLjA3IDExLjEyLDEzLjJDMTIuMzYsMTEuMjggMTQuNTMsMTAgMTcsMTBNMTAsMTdDMTAsMTYuMyAxMC4xLDE1LjYyIDEwLjI5LDE1QzkuODcsMTQuOTMgOS40MywxNC45IDksMTQuOUM2LjAzLDE0LjkgMi45LDE2LjM2IDIuOSwxN1YxOC4xSDEwLjA5QzEwLjAzLDE3Ljc0IDEwLDE3LjM3IDEwLDE3TTksNEE0LDQgMCAwLDEgMTMsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSw4QTQsNCAwIDAsMSA5LDRNOSw1LjlBMi4xLDIuMSAwIDAsMCA2LjksOEEyLjEsMi4xIDAgMCwwIDksMTAuMUEyLjEsMi4xIDAgMCwwIDExLjEsOEEyLjEsMi4xIDAgMCwwIDksNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb2cgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTE3IDEyQzE2Ljg3IDEyIDE2Ljc2IDEyLjA5IDE2Ljc0IDEyLjIxTDE2LjU1IDEzLjUzQzE2LjI1IDEzLjY2IDE1Ljk2IDEzLjgyIDE1LjcgMTRMMTQuNDYgMTMuNUMxNC4zNSAxMy41IDE0LjIyIDEzLjUgMTQuMTUgMTMuNjNMMTMuMTUgMTUuMzZDMTMuMDkgMTUuNDcgMTMuMTEgMTUuNiAxMy4yMSAxNS42OEwxNC4yNyAxNi41QzE0LjI1IDE2LjY3IDE0LjI0IDE2LjgzIDE0LjI0IDE3QzE0LjI0IDE3LjE3IDE0LjI1IDE3LjMzIDE0LjI3IDE3LjVMMTMuMjEgMTguMzJDMTMuMTIgMTguNCAxMy4wOSAxOC41MyAxMy4xNSAxOC42NEwxNC4xNSAyMC4zN0MxNC4yMSAyMC41IDE0LjM0IDIwLjUgMTQuNDYgMjAuNUwxNS43IDIwQzE1Ljk2IDIwLjE4IDE2LjI0IDIwLjM1IDE2LjU1IDIwLjQ3TDE2Ljc0IDIxLjc5QzE2Ljc2IDIxLjkxIDE2Ljg2IDIyIDE3IDIySDE5QzE5LjExIDIyIDE5LjIyIDIxLjkxIDE5LjI0IDIxLjc5TDE5LjQzIDIwLjQ3QzE5LjczIDIwLjM0IDIwIDIwLjE4IDIwLjI3IDIwTDIxLjUgMjAuNUMyMS42MyAyMC41IDIxLjc2IDIwLjUgMjEuODMgMjAuMzdMMjIuODMgMTguNjRDMjIuODkgMTguNTMgMjIuODYgMTguNCAyMi43NyAxOC4zMkwyMS43IDE3LjVDMjEuNzIgMTcuMzMgMjEuNzQgMTcuMTcgMjEuNzQgMTdDMjEuNzQgMTYuODMgMjEuNzMgMTYuNjcgMjEuNyAxNi41TDIyLjc2IDE1LjY4QzIyLjg1IDE1LjYgMjIuODggMTUuNDcgMjIuODIgMTUuMzZMMjEuODIgMTMuNjNDMjEuNzYgMTMuNSAyMS42MyAxMy41IDIxLjUgMTMuNUwyMC4yNyAxNEMyMCAxMy44MiAxOS43MyAxMy42NSAxOS40MiAxMy41M0wxOS4yMyAxMi4yMUMxOS4yMiAxMi4wOSAxOS4xMSAxMiAxOSAxMkgxN00xMCAxNEM1LjU4IDE0IDIgMTUuNzkgMiAxOFYyMEgxMS42OEE3IDcgMCAwIDEgMTEgMTdBNyA3IDAgMCAxIDExLjY0IDE0LjA5QzExLjExIDE0LjAzIDEwLjU2IDE0IDEwIDE0TTE4IDE1LjVDMTguODMgMTUuNSAxOS41IDE2LjE3IDE5LjUgMTdDMTkuNSAxNy44MyAxOC44MyAxOC41IDE4IDE4LjVDMTcuMTYgMTguNSAxNi41IDE3LjgzIDE2LjUgMTdDMTYuNSAxNi4xNyAxNy4xNyAxNS41IDE4IDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENvZ091dGxpbmUgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTEwIDZBMiAyIDAgMCAxIDEyIDhBMiAyIDAgMCAxIDEwIDEwQTIgMiAwIDAgMSA4IDhBMiAyIDAgMCAxIDEwIDZNMTcgMTJDMTYuODQgMTIgMTYuNzYgMTIuMDggMTYuNzYgMTIuMjRMMTYuNSAxMy41QzE2LjI4IDEzLjY4IDE1Ljk2IDEzLjg0IDE1LjcyIDE0TDE0LjQ0IDEzLjVDMTQuMzYgMTMuNSAxNC4yIDEzLjUgMTQuMTIgMTMuNkwxMy4xNiAxNS4zNkMxMy4wOCAxNS40NCAxMy4wOCAxNS42IDEzLjI0IDE1LjY4TDE0LjI4IDE2LjVWMTcuNUwxMy4yNCAxOC4zMkMxMy4xNiAxOC40IDEzLjA4IDE4LjU2IDEzLjE2IDE4LjY0TDE0LjEyIDIwLjRDMTQuMiAyMC41IDE0LjM2IDIwLjUgMTQuNDQgMjAuNUwxNS43MiAyMEMxNS45NiAyMC4xNiAxNi4yOCAyMC4zMiAxNi41IDIwLjVMMTYuNzYgMjEuNzZDMTYuNzYgMjEuOTIgMTYuODQgMjIgMTcgMjJIMTlDMTkuMDggMjIgMTkuMjQgMjEuOTIgMTkuMjQgMjEuNzZMMTkuNCAyMC41QzE5LjcyIDIwLjMyIDIwLjA0IDIwLjE2IDIwLjI4IDIwTDIxLjUgMjAuNUMyMS42NCAyMC41IDIxLjggMjAuNSAyMS44IDIwLjRMMjIuODQgMTguNjRDMjIuOTIgMTguNTYgMjIuODQgMTguNCAyMi43NiAxOC4zMkwyMS43MiAxNy41VjE2LjVMMjIuNzYgMTUuNjhDMjIuODQgMTUuNiAyMi45MiAxNS40NCAyMi44NCAxNS4zNkwyMS44IDEzLjZDMjEuOCAxMy41IDIxLjY0IDEzLjUgMjEuNSAxMy41TDIwLjI4IDE0QzIwLjA0IDEzLjg0IDE5LjcyIDEzLjY4IDE5LjQgMTMuNUwxOS4yNCAxMi4yNEMxOS4yNCAxMi4wOCAxOS4wOCAxMiAxOSAxMkgxN00xMCAxM0M3LjMzIDEzIDIgMTQuMzMgMiAxN1YyMEgxMS42N0MxMS4zOSAxOS40MSAxMS4xOSAxOC43NyAxMS4wOSAxOC4xSDMuOVYxN0MzLjkgMTYuMzYgNy4wMyAxNC45IDEwIDE0LjlDMTAuNDMgMTQuOSAxMC44NyAxNC45NCAxMS4zIDE1QzExLjUgMTQuMzYgMTEuNzcgMTMuNzYgMTIuMTIgMTMuMjFDMTEuMzQgMTMuMDggMTAuNiAxMyAxMCAxM00xOC4wNCAxNS41QzE4Ljg0IDE1LjUgMTkuNSAxNi4xNiAxOS41IDE3LjA0QzE5LjUgMTcuODQgMTguODQgMTguNSAxOC4wNCAxOC41QzE3LjE2IDE4LjUgMTYuNSAxNy44NCAxNi41IDE3LjA0QzE2LjUgMTYuMTYgMTcuMTYgMTUuNSAxOC4wNCAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb252ZXJ0ID0gXCJNMTIgMEwxMS4zNCAuMDNMMTUuMTUgMy44NEwxNi41IDIuNUMxOS43NSA0LjA3IDIyLjA5IDcuMjQgMjIuNDUgMTFIMjMuOTVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBNMTIgNEMxMC4wNyA0IDguNSA1LjU3IDguNSA3LjVDOC41IDkuNDMgMTAuMDcgMTEgMTIgMTFDMTMuOTMgMTEgMTUuNSA5LjQzIDE1LjUgNy41QzE1LjUgNS41NyAxMy45MyA0IDEyIDRNLjA1IDEzQy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0TDEyLjY2IDIzLjk3TDguODUgMjAuMTZMNy41IDIxLjVDNC4yNSAxOS45NCAxLjkxIDE2Ljc2IDEuNTUgMTNILjA1TTEyIDEzQzguMTMgMTMgNSAxNC41NyA1IDE2LjVWMThIMTlWMTYuNUMxOSAxNC41NyAxNS44NyAxMyAxMiAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q29udmVydE91dGxpbmUgPSBcIk0xMiAwTDExLjM0IC4wM0wxNS4xNSAzLjg0TDE2LjUgMi41QzE5Ljc1IDQuMDcgMjIuMDkgNy4yNCAyMi40NSAxMUgyMy45NUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgME0xMiA0QzEwLjA3IDQgOC41IDUuNTcgOC41IDcuNUM4LjUgOS40MyAxMC4wNyAxMSAxMiAxMUMxMy45MyAxMSAxNS41IDkuNDMgMTUuNSA3LjVDMTUuNSA1LjU3IDEzLjkzIDQgMTIgNE0xMiA2QzEyLjgzIDYgMTMuNSA2LjY3IDEzLjUgNy41QzEzLjUgOC4zMyAxMi44MyA5IDEyIDlDMTEuMTcgOSAxMC41IDguMzMgMTAuNSA3LjVDMTAuNSA2LjY3IDExLjE3IDYgMTIgNk0uMDUgMTNDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRMMTIuNjYgMjMuOTdMOC44NSAyMC4xNkw3LjUgMjEuNUM0LjI1IDE5Ljk0IDEuOTEgMTYuNzYgMS41NSAxM0guMDVNMTIgMTNDOC4xMyAxMyA1IDE0LjU3IDUgMTYuNVYxOEgxOVYxNi41QzE5IDE0LjU3IDE1Ljg3IDEzIDEyIDEzTTEyIDE1QzE0LjExIDE1IDE1LjYxIDE1LjUzIDE2LjM5IDE2SDcuNjFDOC4zOSAxNS41MyA5Ljg5IDE1IDEyIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb3dib3lIYXQgPSBcIk0yMCAyMkg0VjIwQzQgMTcuOCA3LjYgMTYgMTIgMTZTMjAgMTcuOCAyMCAyME04IDlIMTZWMTBDMTYgMTIuMiAxNC4yIDE0IDEyIDE0UzggMTIuMiA4IDEwTTE5IDRDMTguNCA0IDE4IDQuNCAxOCA1VjZIMTYuNUwxNS4xIDNDMTUgMi44IDE0LjkgMi42IDE0LjcgMi41QzE0LjIgMiAxMy40IDEuOSAxMi43IDIuMkwxMiAyLjRMMTEuMyAyLjFDMTAuNiAxLjggOS44IDEuOSA5LjMgMi40QzkuMSAyLjYgOSAyLjggOC45IDNMNy41IDZINlY1QzYgNC40IDUuNiA0IDUgNFM0IDQuNCA0IDVWNkM0IDcuMSA0LjkgOCA2IDhIMThDMTkuMSA4IDIwIDcuMSAyMCA2VjVDMjAgNC41IDE5LjYgNCAxOSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnREZXRhaWxzID0gXCJNMTEgOUMxMSAxMC42NiA5LjY2IDEyIDggMTJDNi4zNCAxMiA1IDEwLjY2IDUgOUM1IDcuMzQgNi4zNCA2IDggNkM5LjY2IDYgMTEgNy4zNCAxMSA5TTE0IDIwSDJWMThDMiAxNS43OSA0LjY5IDE0IDggMTRDMTEuMzEgMTQgMTQgMTUuNzkgMTQgMThNMjIgMTJWMTRIMTNWMTJNMjIgOFYxMEgxM1Y4TTIyIDRWNkgxM1Y0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnREZXRhaWxzT3V0bGluZSA9IFwiTTExIDlDMTEgMTAuNjYgOS42NiAxMiA4IDEyQzYuMzQgMTIgNSAxMC42NiA1IDlDNSA3LjM0IDYuMzQgNiA4IDZDOS42NiA2IDExIDcuMzQgMTEgOU0xNCAyMEgyVjE4QzIgMTUuNzkgNC42OSAxNCA4IDE0QzExLjMxIDE0IDE0IDE1Ljc5IDE0IDE4TTcgOUM3IDkuNTUgNy40NSAxMCA4IDEwQzguNTUgMTAgOSA5LjU1IDkgOUM5IDguNDUgOC41NSA4IDggOEM3LjQ1IDggNyA4LjQ1IDcgOU00IDE4SDEyQzEyIDE2LjkgMTAuMjEgMTYgOCAxNkM1Ljc5IDE2IDQgMTYuOSA0IDE4TTIyIDEyVjE0SDEzVjEyTTIyIDhWMTBIMTNWOE0yMiA0VjZIMTNWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50RWRpdCA9IFwiTTIxLjcsMTMuMzVMMjAuNywxNC4zNUwxOC42NSwxMi4zTDE5LjY1LDExLjNDMTkuODYsMTEuMDkgMjAuMjEsMTEuMDkgMjAuNDIsMTEuM0wyMS43LDEyLjU4QzIxLjkxLDEyLjc5IDIxLjkxLDEzLjE0IDIxLjcsMTMuMzVNMTIsMTguOTRMMTguMDYsMTIuODhMMjAuMTEsMTQuOTNMMTQuMDYsMjFIMTJWMTguOTRNMTIsMTRDNy41OCwxNCA0LDE1Ljc5IDQsMThWMjBIMTBWMTguMTFMMTQsMTQuMTFDMTMuMzQsMTQuMDMgMTIuNjcsMTQgMTIsMTRNMTIsNEE0LDQgMCAwLDAgOCw4QTQsNCAwIDAsMCAxMiwxMkE0LDQgMCAwLDAgMTYsOEE0LDQgMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50RWRpdE91dGxpbmUgPSBcIk0yIDE3VjIwSDEwVjE4LjExSDMuOVYxN0MzLjkgMTYuMzYgNy4wMyAxNC45IDEwIDE0LjlDMTAuOTYgMTQuOTEgMTEuOTEgMTUuMDQgMTIuODMgMTUuMjhMMTQuMzUgMTMuNzZDMTIuOTUgMTMuMjkgMTEuNSAxMy4wMyAxMCAxM0M3LjMzIDEzIDIgMTQuMzMgMiAxN00xMCA0QzcuNzkgNCA2IDUuNzkgNiA4UzcuNzkgMTIgMTAgMTIgMTQgMTAuMjEgMTQgOCAxMi4yMSA0IDEwIDRNMTAgMTBDOC45IDEwIDggOS4xMSA4IDhTOC45IDYgMTAgNiAxMiA2LjkgMTIgOCAxMS4xMSAxMCAxMCAxME0yMS43IDEzLjM1TDIwLjcgMTQuMzVMMTguNjUgMTIuMzVMMTkuNjUgMTEuMzVDMTkuODYgMTEuMTQgMjAuMjEgMTEuMTQgMjAuNDIgMTEuMzVMMjEuNyAxMi42M0MyMS45MSAxMi44NCAyMS45MSAxMy4xOSAyMS43IDEzLjRNMTIgMTguOTRMMTguMDYgMTIuODhMMjAuMTEgMTQuODhMMTQuMTEgMjAuOTVIMTJWMTguOTRcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50R3JvdXAgPSBcIk0xMiw1LjVBMy41LDMuNSAwIDAsMSAxNS41LDlBMy41LDMuNSAwIDAsMSAxMiwxMi41QTMuNSwzLjUgMCAwLDEgOC41LDlBMy41LDMuNSAwIDAsMSAxMiw1LjVNNSw4QzUuNTYsOCA2LjA4LDguMTUgNi41Myw4LjQyQzYuMzgsOS44NSA2LjgsMTEuMjcgNy42NiwxMi4zOEM3LjE2LDEzLjM0IDYuMTYsMTQgNSwxNEEzLDMgMCAwLDEgMiwxMUEzLDMgMCAwLDEgNSw4TTE5LDhBMywzIDAgMCwxIDIyLDExQTMsMyAwIDAsMSAxOSwxNEMxNy44NCwxNCAxNi44NCwxMy4zNCAxNi4zNCwxMi4zOEMxNy4yLDExLjI3IDE3LjYyLDkuODUgMTcuNDcsOC40MkMxNy45Miw4LjE1IDE4LjQ0LDggMTksOE01LjUsMTguMjVDNS41LDE2LjE4IDguNDEsMTQuNSAxMiwxNC41QzE1LjU5LDE0LjUgMTguNSwxNi4xOCAxOC41LDE4LjI1VjIwSDUuNVYxOC4yNU0wLDIwVjE4LjVDMCwxNy4xMSAxLjg5LDE1Ljk0IDQuNDUsMTUuNkMzLjg2LDE2LjI4IDMuNSwxNy4yMiAzLjUsMTguMjVWMjBIME0yNCwyMEgyMC41VjE4LjI1QzIwLjUsMTcuMjIgMjAuMTQsMTYuMjggMTkuNTUsMTUuNkMyMi4xMSwxNS45NCAyNCwxNy4xMSAyNCwxOC41VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRHcm91cE91dGxpbmUgPSBcIk0xMiw1QTMuNSwzLjUgMCAwLDAgOC41LDguNUEzLjUsMy41IDAgMCwwIDEyLDEyQTMuNSwzLjUgMCAwLDAgMTUuNSw4LjVBMy41LDMuNSAwIDAsMCAxMiw1TTEyLDdBMS41LDEuNSAwIDAsMSAxMy41LDguNUExLjUsMS41IDAgMCwxIDEyLDEwQTEuNSwxLjUgMCAwLDEgMTAuNSw4LjVBMS41LDEuNSAwIDAsMSAxMiw3TTUuNSw4QTIuNSwyLjUgMCAwLDAgMywxMC41QzMsMTEuNDQgMy41MywxMi4yNSA0LjI5LDEyLjY4QzQuNjUsMTIuODggNS4wNiwxMyA1LjUsMTNDNS45NCwxMyA2LjM1LDEyLjg4IDYuNzEsMTIuNjhDNy4wOCwxMi40NyA3LjM5LDEyLjE3IDcuNjIsMTEuODFDNi44OSwxMC44NiA2LjUsOS43IDYuNSw4LjVDNi41LDguNDEgNi41LDguMzEgNi41LDguMjJDNi4yLDguMDggNS44Niw4IDUuNSw4TTE4LjUsOEMxOC4xNCw4IDE3LjgsOC4wOCAxNy41LDguMjJDMTcuNSw4LjMxIDE3LjUsOC40MSAxNy41LDguNUMxNy41LDkuNyAxNy4xMSwxMC44NiAxNi4zOCwxMS44MUMxNi41LDEyIDE2LjYzLDEyLjE1IDE2Ljc4LDEyLjNDMTYuOTQsMTIuNDUgMTcuMSwxMi41OCAxNy4yOSwxMi42OEMxNy42NSwxMi44OCAxOC4wNiwxMyAxOC41LDEzQzE4Ljk0LDEzIDE5LjM1LDEyLjg4IDE5LjcxLDEyLjY4QzIwLjQ3LDEyLjI1IDIxLDExLjQ0IDIxLDEwLjVBMi41LDIuNSAwIDAsMCAxOC41LDhNMTIsMTRDOS42NiwxNCA1LDE1LjE3IDUsMTcuNVYxOUgxOVYxNy41QzE5LDE1LjE3IDE0LjM0LDE0IDEyLDE0TTQuNzEsMTQuNTVDMi43OCwxNC43OCAwLDE1Ljc2IDAsMTcuNVYxOUgzVjE3LjA3QzMsMTYuMDYgMy42OSwxNS4yMiA0LjcxLDE0LjU1TTE5LjI5LDE0LjU1QzIwLjMxLDE1LjIyIDIxLDE2LjA2IDIxLDE3LjA3VjE5SDI0VjE3LjVDMjQsMTUuNzYgMjEuMjIsMTQuNzggMTkuMjksMTQuNTVNMTIsMTZDMTMuNTMsMTYgMTUuMjQsMTYuNSAxNi4yMywxN0g3Ljc3QzguNzYsMTYuNSAxMC40NywxNiAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50SGFyZEhhdCA9IFwiTTEyLDE1QzcuNTgsMTUgNCwxNi43OSA0LDE5VjIxSDIwVjE5QzIwLDE2Ljc5IDE2LjQyLDE1IDEyLDE1TTgsOUE0LDQgMCAwLDAgMTIsMTNBNCw0IDAgMCwwIDE2LDlNMTEuNSwyQzExLjIsMiAxMSwyLjIxIDExLDIuNVY1LjVIMTBWM0MxMCwzIDcuNzUsMy44NiA3Ljc1LDYuNzVDNy43NSw2Ljc1IDcsNi44OSA3LDhIMTdDMTYuOTUsNi44OSAxNi4yNSw2Ljc1IDE2LjI1LDYuNzVDMTYuMjUsMy44NiAxNCwzIDE0LDNWNS41SDEzVjIuNUMxMywyLjIxIDEyLjgxLDIgMTIuNSwySDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEhlYXJ0ID0gXCJNMTUsMTRDMTIuMywxNCA3LDE1LjMgNywxOFYyMEgyM1YxOEMyMywxNS4zIDE3LjcsMTQgMTUsMTRNMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRBNCw0IDAgMCwwIDExLDhBNCw0IDAgMCwwIDE1LDEyTTUsMTVMNC40LDE0LjVDMi40LDEyLjYgMSwxMS40IDEsOS45QzEsOC43IDIsNy43IDMuMiw3LjdDMy45LDcuNyA0LjYsOCA1LDguNUM1LjQsOCA2LjEsNy43IDYuOCw3LjdDOCw3LjcgOSw4LjYgOSw5LjlDOSwxMS40IDcuNiwxMi42IDUuNiwxNC41TDUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEhlYXJ0T3V0bGluZSA9IFwiTTUsMTVMNC40LDE0LjVDMi40LDEyLjYgMSwxMS40IDEsOS45QzEsOC43IDIsNy43IDMuMiw3LjdDMy45LDcuNyA0LjYsOCA1LDguNUM1LjQsOCA2LjEsNy43IDYuOCw3LjdDOCw3LjcgOSw4LjYgOSw5LjlDOSwxMS40IDcuNiwxMi42IDUuNiwxNC41TDUsMTVNMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRNMTUsMTAuMUEyLjEsMi4xIDAgMCwxIDEyLjksOEEyLjEsMi4xIDAgMCwxIDE1LDUuOUMxNi4xNiw1LjkgMTcuMSw2Ljg0IDE3LjEsOEMxNy4xLDkuMTYgMTYuMTYsMTAuMSAxNSwxMC4xTTE1LDEzQzEyLjMzLDEzIDcsMTQuMzMgNywxN1YyMEgyM1YxN0MyMywxNC4zMyAxNy42NywxMyAxNSwxM00yMS4xLDE4LjFIOC45VjE3QzguOSwxNi4zNiAxMiwxNC45IDE1LDE0LjlDMTcuOTcsMTQuOSAyMS4xLDE2LjM2IDIxLjEsMTdWMTguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50S2V5ID0gXCJNMTEsMTBWMTJIMTBWMTRIOFYxMkg1LjgzQzUuNDIsMTMuMTcgNC4zMSwxNCAzLDE0QTMsMyAwIDAsMSAwLDExQTMsMyAwIDAsMSAzLDhDNC4zMSw4IDUuNDIsOC44MyA1LjgzLDEwSDExTTMsMTBBMSwxIDAgMCwwIDIsMTFBMSwxIDAgMCwwIDMsMTJBMSwxIDAgMCwwIDQsMTFBMSwxIDAgMCwwIDMsMTBNMTYsMTRDMTguNjcsMTQgMjQsMTUuMzQgMjQsMThWMjBIOFYxOEM4LDE1LjM0IDEzLjMzLDE0IDE2LDE0TTE2LDEyQTQsNCAwIDAsMSAxMiw4QTQsNCAwIDAsMSAxNiw0QTQsNCAwIDAsMSAyMCw4QTQsNCAwIDAsMSAxNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50S2V5T3V0bGluZSA9IFwiTTUuODMsMTBDNS40Miw4LjgzIDQuMzEsOCAzLDhBMywzIDAgMCwwIDAsMTFBMywzIDAgMCwwIDMsMTRDNC4zMSwxNCA1LjQyLDEzLjE3IDUuODMsMTJIOFYxNEgxMFYxMkgxMVYxMEg1LjgzTTMsMTJBMSwxIDAgMCwxIDIsMTFBMSwxIDAgMCwxIDMsMTBBMSwxIDAgMCwxIDQsMTFBMSwxIDAgMCwxIDMsMTJNMTYsNEE0LDQgMCAwLDAgMTIsOEE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDIwLDhBNCw0IDAgMCwwIDE2LDRNMTYsMTAuMUEyLjEsMi4xIDAgMCwxIDEzLjksOEEyLjEsMi4xIDAgMCwxIDE2LDUuOUMxNy4xNiw1LjkgMTguMSw2Ljg0IDE4LjEsOEMxOC4xLDkuMTYgMTcuMTYsMTAuMSAxNiwxMC4xTTE2LDEzQzEzLjMzLDEzIDgsMTQuMzMgOCwxN1YyMEgyNFYxN0MyNCwxNC4zMyAxOC42NywxMyAxNiwxM00yMi4xLDE4LjFIOS45VjE3QzkuOSwxNi4zNiAxMywxNC45IDE2LDE0LjlDMTguOTcsMTQuOSAyMi4xLDE2LjM2IDIyLjEsMTdWMTguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TG9jayA9IFwiTTIyIDE3VjE2LjVDMjIgMTUuMTIgMjAuODggMTQgMTkuNSAxNFMxNyAxNS4xMiAxNyAxNi41VjE3QzE2LjQ1IDE3IDE2IDE3LjQ1IDE2IDE4VjIyQzE2IDIyLjU1IDE2LjQ1IDIzIDE3IDIzSDIyQzIyLjU1IDIzIDIzIDIyLjU1IDIzIDIyVjE4QzIzIDE3LjQ1IDIyLjU1IDE3IDIyIDE3TTIxIDE3SDE4VjE2LjVDMTggMTUuNjcgMTguNjcgMTUgMTkuNSAxNVMyMSAxNS42NyAyMSAxNi41VjE3TTggOEM4IDUuNzkgOS43OSA0IDEyIDRTMTYgNS43OSAxNiA4IDE0LjIxIDEyIDEyIDEyIDggMTAuMjEgOCA4TTE0IDIwSDRWMThDNCAxNS43OSA3LjU4IDE0IDEyIDE0QzEzLjI3IDE0IDE0LjQ2IDE0LjE1IDE1LjUzIDE0LjQxQzE1LjMyIDE0LjgyIDE1LjE1IDE1LjI1IDE1LjA3IDE1LjcxQzE0LjQyIDE2LjI2IDE0IDE3LjA4IDE0IDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRMb2NrT3V0bGluZSA9IFwiTTIyIDE3VjE2LjVDMjIgMTUuMTIgMjAuODggMTQgMTkuNSAxNFMxNyAxNS4xMiAxNyAxNi41VjE3QzE2LjQ1IDE3IDE2IDE3LjQ1IDE2IDE4VjIyQzE2IDIyLjU1IDE2LjQ1IDIzIDE3IDIzSDIyQzIyLjU1IDIzIDIzIDIyLjU1IDIzIDIyVjE4QzIzIDE3LjQ1IDIyLjU1IDE3IDIyIDE3TTIxIDE3SDE4VjE2LjVDMTggMTUuNjcgMTguNjcgMTUgMTkuNSAxNVMyMSAxNS42NyAyMSAxNi41VjE3TTE0IDIwSDRWMTdDNCAxNC4zMyA5LjMzIDEzIDEyIDEzQzEzLjA4IDEzIDE0LjYgMTMuMjIgMTYgMTMuNjZDMTUuNjEgMTQuMTUgMTUuMzMgMTQuNzQgMTUuMTYgMTUuMzhDMTQuMTkgMTUuMSAxMy4wOSAxNC45IDEyIDE0LjlDOS4wMyAxNC45IDUuOSAxNi4zNiA1LjkgMTdWMTguMUgxNFYyME0xMiAxMkMxNC4yMSAxMiAxNiAxMC4yMSAxNiA4UzE0LjIxIDQgMTIgNCA4IDUuNzkgOCA4IDkuNzkgMTIgMTIgMTJNMTIgNkMxMy4xMSA2IDE0IDYuOSAxNCA4UzEzLjExIDEwIDEyIDEwIDEwIDkuMTEgMTAgOCAxMC45IDYgMTIgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TWludXMgPSBcIk0xNSwxNEMxMi4zMywxNCA3LDE1LjMzIDcsMThWMjBIMjNWMThDMjMsMTUuMzMgMTcuNjcsMTQgMTUsMTRNMSwxMFYxMkg5VjEwTTE1LDEyQTQsNCAwIDAsMCAxOSw4QTQsNCAwIDAsMCAxNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TWludXNPdXRsaW5lID0gXCJNMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRNMTUsNS45QzE2LjE2LDUuOSAxNy4xLDYuODQgMTcuMSw4QzE3LjEsOS4xNiAxNi4xNiwxMC4xIDE1LDEwLjFBMi4xLDIuMSAwIDAsMSAxMi45LDhBMi4xLDIuMSAwIDAsMSAxNSw1LjlNMSwxMFYxMkg5VjEwSDFNMTUsMTNDMTIuMzMsMTMgNywxNC4zMyA3LDE3VjIwSDIzVjE3QzIzLDE0LjMzIDE3LjY3LDEzIDE1LDEzTTE1LDE0LjlDMTcuOTcsMTQuOSAyMS4xLDE2LjM2IDIxLjEsMTdWMTguMUg4LjlWMTdDOC45LDE2LjM2IDEyLDE0LjkgMTUsMTQuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGUgPSBcIk0xNiAxN1YxOUgyVjE3UzIgMTMgOSAxMyAxNiAxNyAxNiAxN00xMi41IDcuNUEzLjUgMy41IDAgMSAwIDkgMTFBMy41IDMuNSAwIDAgMCAxMi41IDcuNU0xNS45NCAxM0E1LjMyIDUuMzIgMCAwIDEgMTggMTdWMTlIMjJWMTdTMjIgMTMuMzcgMTUuOTQgMTNNMTUgNEEzLjM5IDMuMzkgMCAwIDAgMTMuMDcgNC41OUE1IDUgMCAwIDEgMTMuMDcgMTAuNDFBMy4zOSAzLjM5IDAgMCAwIDE1IDExQTMuNSAzLjUgMCAwIDAgMTUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVDaGVjayA9IFwiTTE5IDE3VjE5SDdWMTdTNyAxMyAxMyAxMyAxOSAxNyAxOSAxN00xNiA4QTMgMyAwIDEgMCAxMyAxMUEzIDMgMCAwIDAgMTYgOE0xOS4yIDEzLjA2QTUuNiA1LjYgMCAwIDEgMjEgMTdWMTlIMjRWMTdTMjQgMTMuNTUgMTkuMiAxMy4wNk0xOCA1QTIuOTEgMi45MSAwIDAgMCAxNy4xMSA1LjE0QTUgNSAwIDAgMSAxNy4xMSAxMC44NkEyLjkxIDIuOTEgMCAwIDAgMTggMTFBMyAzIDAgMCAwIDE4IDVNNy4zNCA4LjkyTDguNSAxMC4zM0wzLjc1IDE1LjA4TDEgMTIuMDhMMi4xNiAxMC45MkwzLjc1IDEyLjVMNy4zNCA4LjkyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlQ2hlY2tPdXRsaW5lID0gXCJNMTMgMTFBMyAzIDAgMSAwIDEwIDhBMyAzIDAgMCAwIDEzIDExTTEzIDdBMSAxIDAgMSAxIDEyIDhBMSAxIDAgMCAxIDEzIDdNMTcuMTEgMTAuODZBNSA1IDAgMCAwIDE3LjExIDUuMTRBMi45MSAyLjkxIDAgMCAxIDE4IDVBMyAzIDAgMCAxIDE4IDExQTIuOTEgMi45MSAwIDAgMSAxNy4xMSAxMC44Nk0xMyAxM0M3IDEzIDcgMTcgNyAxN1YxOUgxOVYxN1MxOSAxMyAxMyAxM005IDE3QzkgMTYuNzEgOS4zMiAxNSAxMyAxNUMxNi41IDE1IDE2Ljk0IDE2LjU2IDE3IDE3TTI0IDE3VjE5SDIxVjE3QTUuNiA1LjYgMCAwIDAgMTkuMiAxMy4wNkMyNCAxMy41NSAyNCAxNyAyNCAxN003LjM0IDguOTJMOC41IDEwLjMzTDMuNzUgMTUuMDhMMSAxMi4wOEwyLjE2IDEwLjkyTDMuNzUgMTIuNUw3LjM0IDguOTJcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVNaW51cyA9IFwiTTE5IDE3VjE5SDdWMTdTNyAxMyAxMyAxMyAxOSAxNyAxOSAxN00xNiA4QTMgMyAwIDEgMCAxMyAxMUEzIDMgMCAwIDAgMTYgOE0xOS4yIDEzLjA2QTUuNiA1LjYgMCAwIDEgMjEgMTdWMTlIMjRWMTdTMjQgMTMuNTUgMTkuMiAxMy4wNk0xOCA1QTIuOTEgMi45MSAwIDAgMCAxNy4xMSA1LjE0QTUgNSAwIDAgMSAxNy4xMSAxMC44NkEyLjkxIDIuOTEgMCAwIDAgMTggMTFBMyAzIDAgMCAwIDE4IDVNOCAxMEgwVjEySDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlTWludXNPdXRsaW5lID0gXCJNMTMgMTFBMyAzIDAgMSAwIDEwIDhBMyAzIDAgMCAwIDEzIDExTTEzIDdBMSAxIDAgMSAxIDEyIDhBMSAxIDAgMCAxIDEzIDdNMTcuMTEgMTAuODZBNSA1IDAgMCAwIDE3LjExIDUuMTRBMi45MSAyLjkxIDAgMCAxIDE4IDVBMyAzIDAgMCAxIDE4IDExQTIuOTEgMi45MSAwIDAgMSAxNy4xMSAxMC44Nk0xMyAxM0M3IDEzIDcgMTcgNyAxN1YxOUgxOVYxN1MxOSAxMyAxMyAxM005IDE3QzkgMTYuNzEgOS4zMiAxNSAxMyAxNUMxNi41IDE1IDE2Ljk0IDE2LjU2IDE3IDE3TTI0IDE3VjE5SDIxVjE3QTUuNiA1LjYgMCAwIDAgMTkuMiAxMy4wNkMyNCAxMy41NSAyNCAxNyAyNCAxN004IDEySDBWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVPdXRsaW5lID0gXCJNMTMuMDcgMTAuNDFBNSA1IDAgMCAwIDEzLjA3IDQuNTlBMy4zOSAzLjM5IDAgMCAxIDE1IDRBMy41IDMuNSAwIDAgMSAxNSAxMUEzLjM5IDMuMzkgMCAwIDEgMTMuMDcgMTAuNDFNNS41IDcuNUEzLjUgMy41IDAgMSAxIDkgMTFBMy41IDMuNSAwIDAgMSA1LjUgNy41TTcuNSA3LjVBMS41IDEuNSAwIDEgMCA5IDZBMS41IDEuNSAwIDAgMCA3LjUgNy41TTE2IDE3VjE5SDJWMTdTMiAxMyA5IDEzIDE2IDE3IDE2IDE3TTE0IDE3QzEzLjg2IDE2LjIyIDEyLjY3IDE1IDkgMTVTNC4wNyAxNi4zMSA0IDE3TTE1Ljk1IDEzQTUuMzIgNS4zMiAwIDAgMSAxOCAxN1YxOUgyMlYxN1MyMiAxMy4zNyAxNS45NCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVQbHVzID0gXCJNMTkgMTdWMTlIN1YxN1M3IDEzIDEzIDEzIDE5IDE3IDE5IDE3TTE2IDhBMyAzIDAgMSAwIDEzIDExQTMgMyAwIDAgMCAxNiA4TTE5LjIgMTMuMDZBNS42IDUuNiAwIDAgMSAyMSAxN1YxOUgyNFYxN1MyNCAxMy41NSAxOS4yIDEzLjA2TTE4IDVBMi45MSAyLjkxIDAgMCAwIDE3LjExIDUuMTRBNSA1IDAgMCAxIDE3LjExIDEwLjg2QTIuOTEgMi45MSAwIDAgMCAxOCAxMUEzIDMgMCAwIDAgMTggNU04IDEwSDVWN0gzVjEwSDBWMTJIM1YxNUg1VjEySDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlUGx1c091dGxpbmUgPSBcIk0xMyAxMUEzIDMgMCAxIDAgMTAgOEEzIDMgMCAwIDAgMTMgMTFNMTMgN0ExIDEgMCAxIDEgMTIgOEExIDEgMCAwIDEgMTMgN00xNy4xMSAxMC44NkE1IDUgMCAwIDAgMTcuMTEgNS4xNEEyLjkxIDIuOTEgMCAwIDEgMTggNUEzIDMgMCAwIDEgMTggMTFBMi45MSAyLjkxIDAgMCAxIDE3LjExIDEwLjg2TTEzIDEzQzcgMTMgNyAxNyA3IDE3VjE5SDE5VjE3UzE5IDEzIDEzIDEzTTkgMTdDOSAxNi43MSA5LjMyIDE1IDEzIDE1QzE2LjUgMTUgMTYuOTQgMTYuNTYgMTcgMTdNMjQgMTdWMTlIMjFWMTdBNS42IDUuNiAwIDAgMCAxOS4yIDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTggMTJINVYxNUgzVjEySDBWMTBIM1Y3SDVWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVSZW1vdmUgPSBcIk0yNCAxN1YxOUgyMVYxN0MyMSAxNS40NSAyMC4zIDE0LjA2IDE5LjE4IDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTE4IDVDMTkuNjYgNSAyMSA2LjM0IDIxIDhDMjEgOS42NiAxOS42NiAxMSAxOCAxMUMxNy42OSAxMSAxNy4zOCAxMC45NSAxNy4xIDEwLjg2QzE3LjY3IDEwLjA1IDE4IDkuMDcgMTggOEMxOCA2Ljk0IDE3LjY3IDUuOTUgMTcuMSA1LjE0QzE3LjM4IDUuMDUgMTcuNjkgNSAxOCA1TTEzIDVDMTQuNjYgNSAxNiA2LjM0IDE2IDhDMTYgOS42NiAxNC42NiAxMSAxMyAxMUMxMS4zNCAxMSAxMCA5LjY2IDEwIDhDMTAgNi4zNCAxMS4zNCA1IDEzIDVNMTkgMTdWMTlIN1YxN0M3IDE0Ljc5IDkuNjkgMTMgMTMgMTNDMTYuMzEgMTMgMTkgMTQuNzkgMTkgMTdNLjQ2NCAxMy4xMkwyLjU5IDExTC40NjQgOC44OEwxLjg4IDcuNDZMNCA5LjU5TDYuMTIgNy40Nkw3LjU0IDguODhMNS40MSAxMUw3LjU0IDEzLjEyTDYuMTIgMTQuNTRMNCAxMi40MUwxLjg4IDE0LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRNdWx0aXBsZVJlbW92ZU91dGxpbmUgPSBcIk0yNCAxN1YxOUgyMVYxN0MyMSAxNS40NSAyMC4zIDE0LjA2IDE5LjE4IDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTE4IDVDMTkuNjYgNSAyMSA2LjM0IDIxIDhDMjEgOS42NiAxOS42NiAxMSAxOCAxMUMxNy42OSAxMSAxNy4zOCAxMC45NSAxNy4xIDEwLjg2QzE3LjY3IDEwLjA1IDE4IDkuMDcgMTggOEMxOCA2Ljk0IDE3LjY3IDUuOTUgMTcuMSA1LjE0QzE3LjM4IDUuMDUgMTcuNjkgNSAxOCA1TTEzIDVDMTQuNjYgNSAxNiA2LjM0IDE2IDhDMTYgOS42NiAxNC42NiAxMSAxMyAxMUMxMS4zNCAxMSAxMCA5LjY2IDEwIDhDMTAgNi4zNCAxMS4zNCA1IDEzIDVNMTkgMTdWMTlIN1YxN0M3IDE0Ljc5IDkuNjkgMTMgMTMgMTNDMTYuMzEgMTMgMTkgMTQuNzkgMTkgMTdNMTMgN0MxMi40NSA3IDEyIDcuNDUgMTIgOEMxMiA4LjU1IDEyLjQ1IDkgMTMgOUMxMy41NSA5IDE0IDguNTUgMTQgOEMxNCA3LjQ1IDEzLjU1IDcgMTMgN00xMyAxNUMxMC43OSAxNSA5IDE1LjkgOSAxN0gxN0MxNyAxNS45IDE1LjIxIDE1IDEzIDE1TS40NjQgMTMuMTJMMi41OSAxMUwuNDY0IDguODhMMS44OCA3LjQ2TDQgOS41OUw2LjEyIDcuNDZMNy41NCA4Ljg4TDUuNDEgMTFMNy41NCAxMy4xMkw2LjEyIDE0LjU0TDQgMTIuNDFMMS44OCAxNC41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVzaWMgPSBcIk0xMSwxNEMxMiwxNCAxMy4wNSwxNC4xNiAxNC4yLDE0LjQ0QzEzLjM5LDE1LjMxIDEzLDE2LjMzIDEzLDE3LjVDMTMsMTguMzkgMTMuMjUsMTkuMjMgMTMuNzgsMjBIM1YxOEMzLDE2LjgxIDMuOTEsMTUuODUgNS43NCwxNS4xMkM3LjU3LDE0LjM4IDkuMzMsMTQgMTEsMTRNMTEsMTJDOS45MiwxMiA5LDExLjYxIDguMTgsMTAuODNDNy4zOCwxMC4wNSA3LDkuMTEgNyw4QzcsNi45MiA3LjM4LDYgOC4xOCw1LjE4QzksNC4zOCA5LjkyLDQgMTEsNEMxMi4xMSw0IDEzLjA1LDQuMzggMTMuODMsNS4xOEMxNC42MSw2IDE1LDYuOTIgMTUsOEMxNSw5LjExIDE0LjYxLDEwLjA1IDEzLjgzLDEwLjgzQzEzLjA1LDExLjYxIDEyLjExLDEyIDExLDEyTTE4LjUsMTBIMjBMMjIsMTBWMTJIMjBWMTcuNUEyLjUsMi41IDAgMCwxIDE3LjUsMjBBMi41LDIuNSAwIDAsMSAxNSwxNy41QTIuNSwyLjUgMCAwLDEgMTcuNSwxNUMxNy44NiwxNSAxOC4xOSwxNS4wNyAxOC41LDE1LjIxVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRNdXNpY091dGxpbmUgPSBcIk0xMSw0QTQsNCAwIDAsMSAxNSw4QTQsNCAwIDAsMSAxMSwxMkE0LDQgMCAwLDEgNyw4QTQsNCAwIDAsMSAxMSw0TTExLDZBMiwyIDAgMCwwIDksOEEyLDIgMCAwLDAgMTEsMTBBMiwyIDAgMCwwIDEzLDhBMiwyIDAgMCwwIDExLDZNMTEsMTNDMTIuMSwxMyAxMy42NiwxMy4yMyAxNS4xMSwxMy42OUMxNC41LDE0LjA3IDE0LDE0LjYgMTMuNjEsMTUuMjNDMTIuNzksMTUuMDMgMTEuODksMTQuOSAxMSwxNC45QzguMDMsMTQuOSA0LjksMTYuMzYgNC45LDE3VjE4LjFIMTMuMDRDMTMuMTMsMTguOCAxMy4zOCwxOS40NCAxMy43NiwyMEgzVjE3QzMsMTQuMzQgOC4zMywxMyAxMSwxM00xOC41LDEwSDIwTDIyLDEwVjEySDIwVjE3LjVBMi41LDIuNSAwIDAsMSAxNy41LDIwQTIuNSwyLjUgMCAwLDEgMTUsMTcuNUEyLjUsMi41IDAgMCwxIDE3LjUsMTVDMTcuODYsMTUgMTguMTksMTUuMDcgMTguNSwxNS4yMVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TmV0d29yayA9IFwiTTEzLDE3VjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0g1VjE1LjVDNSwxMy41NyA4LjEzLDEyIDEyLDEyQzE1Ljg3LDEyIDE5LDEzLjU3IDE5LDE1LjVWMTdIMTNNMTIsM0EzLjUsMy41IDAgMCwxIDE1LjUsNi41QTMuNSwzLjUgMCAwLDEgMTIsMTBBMy41LDMuNSAwIDAsMSA4LjUsNi41QTMuNSwzLjUgMCAwLDEgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TmV0d29ya091dGxpbmUgPSBcIk0xMiwxMEEzLjUsMy41IDAgMCwwIDE1LjUsNi41QTMuNSwzLjUgMCAwLDAgMTIsM0EzLjUsMy41IDAgMCwwIDguNSw2LjVBMy41LDMuNSAwIDAsMCAxMiwxME0xMiw1QTEuNSwxLjUgMCAwLDEgMTMuNSw2LjVBMS41LDEuNSAwIDAsMSAxMiw4QTEuNSwxLjUgMCAwLDEgMTAuNSw2LjVBMS41LDEuNSAwIDAsMSAxMiw1TTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxOVYxNS41QzE5LDEzLjU3IDE1Ljg3LDEyIDEyLDEyQzguMTMsMTIgNSwxMy41NyA1LDE1LjVWMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNy42MSwxNUM4LjM5LDE0LjUzIDkuODksMTQgMTIsMTRDMTQuMTEsMTQgMTUuNjEsMTQuNTMgMTYuMzksMTVINy42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50T2ZmID0gXCJNMTIsNEE0LDQgMCAwLDEgMTYsOEMxNiw5Ljk1IDE0LjYsMTEuNTggMTIuNzUsMTEuOTNMOC4wNyw3LjI1QzguNDIsNS40IDEwLjA1LDQgMTIsNE0xMi4yOCwxNEwxOC4yOCwyMEwyMCwyMS43MkwxOC43MywyM0wxNS43MywyMEg0VjE4QzQsMTYuMTYgNi41LDE0LjYxIDkuODcsMTQuMTRMMi43OCw3LjA1TDQuMDUsNS43OEwxMi4yOCwxNE0yMCwxOFYxOS4xOEwxNS4xNCwxNC4zMkMxOCwxNC45MyAyMCwxNi4zNSAyMCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50T2ZmT3V0bGluZSA9IFwiTTIuNzUsN0w0LjAzLDUuNzVMMTMuMjYsMTVMMjAsMjEuNzJMMTguNzMsMjNMMTUuNzMsMjBINFYxN0M0LDE1LjE0IDYuNjEsMTMuOTIgOS4wOSwxMy4zNkwyLjc1LDdNMjAsMTdWMTkuMThMMTguMSwxNy4yOFYxN0MxOC4xLDE2Ljc0IDE3LjYsMTYuMzUgMTYuOCwxNkwxNCwxMy4xOEMxNi43MSwxMy42MyAyMCwxNC45MSAyMCwxN001LjksMTdWMTguMUgxMy44M0wxMC43MiwxNUM4LjE5LDE1LjMgNS45LDE2LjQ1IDUuOSwxN00xMiw0QTQsNCAwIDAsMSAxNiw4QzE2LDkuOTUgMTQuNiwxMS41OCAxMi43NSwxMS45M0w4LjA3LDcuMjVDOC40Miw1LjQgMTAuMDUsNCAxMiw0TTEyLDZBMiwyIDAgMCwwIDEwLDhBMiwyIDAgMCwwIDEyLDEwQTIsMiAwIDAsMCAxNCw4QTIsMiAwIDAsMCAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRPdXRsaW5lID0gXCJNMTIsNEE0LDQgMCAwLDEgMTYsOEE0LDQgMCAwLDEgMTIsMTJBNCw0IDAgMCwxIDgsOEE0LDQgMCAwLDEgMTIsNE0xMiw2QTIsMiAwIDAsMCAxMCw4QTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTQsOEEyLDIgMCAwLDAgMTIsNk0xMiwxM0MxNC42NywxMyAyMCwxNC4zMyAyMCwxN1YyMEg0VjE3QzQsMTQuMzMgOS4zMywxMyAxMiwxM00xMiwxNC45QzkuMDMsMTQuOSA1LjksMTYuMzYgNS45LDE3VjE4LjFIMTguMVYxN0MxOC4xLDE2LjM2IDE0Ljk3LDE0LjkgMTIsMTQuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UGx1cyA9IFwiTTE1LDE0QzEyLjMzLDE0IDcsMTUuMzMgNywxOFYyMEgyM1YxOEMyMywxNS4zMyAxNy42NywxNCAxNSwxNE02LDEwVjdINFYxMEgxVjEySDRWMTVINlYxMkg5VjEwTTE1LDEyQTQsNCAwIDAsMCAxOSw4QTQsNCAwIDAsMCAxNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UGx1c091dGxpbmUgPSBcIk0xNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMkE0LDQgMCAwLDAgMTksOEE0LDQgMCAwLDAgMTUsNE0xNSw1LjlDMTYuMTYsNS45IDE3LjEsNi44NCAxNy4xLDhDMTcuMSw5LjE2IDE2LjE2LDEwLjEgMTUsMTAuMUEyLjEsMi4xIDAgMCwxIDEyLjksOEEyLjEsMi4xIDAgMCwxIDE1LDUuOU00LDdWMTBIMVYxMkg0VjE1SDZWMTJIOVYxMEg2VjdINE0xNSwxM0MxMi4zMywxMyA3LDE0LjMzIDcsMTdWMjBIMjNWMTdDMjMsMTQuMzMgMTcuNjcsMTMgMTUsMTNNMTUsMTQuOUMxNy45NywxNC45IDIxLjEsMTYuMzYgMjEuMSwxN1YxOC4xSDguOVYxN0M4LjksMTYuMzYgMTIsMTQuOSAxNSwxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRRdWVzdGlvbiA9IFwiTTEzLDhBNCw0IDAgMCwxIDksMTJBNCw0IDAgMCwxIDUsOEE0LDQgMCAwLDEgOSw0QTQsNCAwIDAsMSAxMyw4TTE3LDE4VjIwSDFWMThDMSwxNS43OSA0LjU4LDE0IDksMTRDMTMuNDIsMTQgMTcsMTUuNzkgMTcsMThNMjAuNSwxNC41VjE2SDE5VjE0LjVIMjAuNU0xOC41LDkuNUgxN1Y5QTMsMyAwIDAsMSAyMCw2QTMsMyAwIDAsMSAyMyw5QzIzLDkuOTcgMjIuNSwxMC44OCAyMS43MSwxMS40MUwyMS40MSwxMS42QzIwLjg0LDEyIDIwLjUsMTIuNjEgMjAuNSwxMy4zVjEzLjVIMTlWMTMuM0MxOSwxMi4xMSAxOS42LDExIDIwLjU5LDEwLjM1TDIwLjg4LDEwLjE2QzIxLjI3LDkuOSAyMS41LDkuNDcgMjEuNSw5QTEuNSwxLjUgMCAwLDAgMjAsNy41QTEuNSwxLjUgMCAwLDAgMTguNSw5VjkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UXVlc3Rpb25PdXRsaW5lID0gXCJNMjAuNSwxNC41VjE2SDE5VjE0LjVIMjAuNU0xOC41LDkuNUgxN1Y5QTMsMyAwIDAsMSAyMCw2QTMsMyAwIDAsMSAyMyw5QzIzLDkuOTcgMjIuNSwxMC44OCAyMS43MSwxMS40MUwyMS40MSwxMS42QzIwLjg0LDEyIDIwLjUsMTIuNjEgMjAuNSwxMy4zVjEzLjVIMTlWMTMuM0MxOSwxMi4xMSAxOS42LDExIDIwLjU5LDEwLjM1TDIwLjg4LDEwLjE2QzIxLjI3LDkuOSAyMS41LDkuNDcgMjEuNSw5QTEuNSwxLjUgMCAwLDAgMjAsNy41QTEuNSwxLjUgMCAwLDAgMTguNSw5VjkuNU05LDEzQzExLjY3LDEzIDE3LDE0LjM0IDE3LDE3VjIwSDFWMTdDMSwxNC4zNCA2LjMzLDEzIDksMTNNOSw0QTQsNCAwIDAsMSAxMyw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDhBNCw0IDAgMCwxIDksNE05LDE0LjlDNi4wMywxNC45IDIuOSwxNi4zNiAyLjksMTdWMTguMUgxNS4xVjE3QzE1LjEsMTYuMzYgMTEuOTcsMTQuOSA5LDE0LjlNOSw1LjlBMi4xLDIuMSAwIDAsMCA2LjksOEEyLjEsMi4xIDAgMCwwIDksMTAuMUEyLjEsMi4xIDAgMCwwIDExLjEsOEEyLjEsMi4xIDAgMCwwIDksNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRSZWFjdGl2YXRlID0gXCJNMjEuNSA5SDE2LjVMMTguMzYgNy4xNEMxNi45IDUuMjMgMTQuNTkgNCAxMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDEzLjgzIDQuNjEgMTUuNSA1LjY0IDE2Ljg1QzYuODYgMTUuNDUgOS4xNSAxNC41IDEyIDE0LjVDMTQuODUgMTQuNSAxNy4xNSAxNS40NSAxOC4zNiAxNi44NUMxOS4zOSAxNS41IDIwIDEzLjgzIDIwIDEySDIyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNS4xNCAyIDE3Ljk1IDMuNDUgMTkuNzggNS43MkwyMS41IDRWOU0xMiA3QzEzLjY2IDcgMTUgOC4zNCAxNSAxMEMxNSAxMS42NiAxMy42NiAxMyAxMiAxM0MxMC4zNCAxMyA5IDExLjY2IDkgMTBDOSA4LjM0IDEwLjM0IDcgMTIgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UmVhY3RpdmF0ZU91dGxpbmUgPSBcIk0yMS41IDlIMTYuNUwxOC4zNiA3LjE0QzE2LjkgNS4yMyAxNC41OSA0IDEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTMuODMgNC42MSAxNS41IDUuNjQgMTYuODVDNi44NiAxNS40NSA5LjE1IDE0LjUgMTIgMTQuNUMxNC44NSAxNC41IDE3LjE1IDE1LjQ1IDE4LjM2IDE2Ljg1QzE5LjM5IDE1LjUgMjAgMTMuODMgMjAgMTJIMjJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyQzE1LjE0IDIgMTcuOTUgMy40NSAxOS43OCA1LjcyTDIxLjUgNFY5TTEyIDIwQzEzLjkgMjAgMTUuNjQgMTkuMzQgMTcgMTguMjRDMTYuMzYgMTcuMjMgMTQuNDUgMTYuNSAxMiAxNi41QzkuNTUgMTYuNSA3LjY0IDE3LjIzIDcgMTguMjRDOC4zNiAxOS4zNCAxMC4xIDIwIDEyIDIwTTEyIDZDMTMuOTMgNiAxNS41IDcuNTcgMTUuNSA5LjVDMTUuNSAxMS40MyAxMy45MyAxMyAxMiAxM0MxMC4wNyAxMyA4LjUgMTEuNDMgOC41IDkuNUM4LjUgNy41NyAxMC4wNyA2IDEyIDZNMTIgOEMxMS4xNyA4IDEwLjUgOC42NyAxMC41IDkuNUMxMC41IDEwLjMzIDExLjE3IDExIDEyIDExQzEyLjgzIDExIDEzLjUgMTAuMzMgMTMuNSA5LjVDMTMuNSA4LjY3IDEyLjgzIDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UmVtb3ZlID0gXCJNMTUsMTRDMTcuNjcsMTQgMjMsMTUuMzMgMjMsMThWMjBIN1YxOEM3LDE1LjMzIDEyLjMzLDE0IDE1LDE0TTE1LDEyQTQsNCAwIDAsMSAxMSw4QTQsNCAwIDAsMSAxNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMk01LDkuNTlMNy4xMiw3LjQ2TDguNTQsOC44OEw2LjQxLDExTDguNTQsMTMuMTJMNy4xMiwxNC41NEw1LDEyLjQxTDIuODgsMTQuNTRMMS40NiwxMy4xMkwzLjU5LDExTDEuNDYsOC44OEwyLjg4LDcuNDZMNSw5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRSZW1vdmVPdXRsaW5lID0gXCJNMS40Niw4Ljg4TDIuODgsNy40Nkw1LDkuNTlMNy4xMiw3LjQ2TDguNTQsOC44OEw2LjQxLDExTDguNTQsMTMuMTJMNy4xMiwxNC41NEw1LDEyLjQxTDIuODgsMTQuNTRMMS40NiwxMy4xMkwzLjU5LDExTDEuNDYsOC44OE0xNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMkE0LDQgMCAwLDEgMTEsOEE0LDQgMCAwLDEgMTUsNE0xNSw1LjlBMi4xLDIuMSAwIDAsMCAxMi45LDhBMi4xLDIuMSAwIDAsMCAxNSwxMC4xQzE2LjE2LDEwLjEgMTcuMSw5LjE2IDE3LjEsOEMxNy4xLDYuODQgMTYuMTYsNS45IDE1LDUuOU0xNSwxM0MxNy42NywxMyAyMywxNC4zMyAyMywxN1YyMEg3VjE3QzcsMTQuMzMgMTIuMzMsMTMgMTUsMTNNMTUsMTQuOUMxMiwxNC45IDguOSwxNi4zNiA4LjksMTdWMTguMUgyMS4xVjE3QzIxLjEsMTYuMzYgMTcuOTcsMTQuOSAxNSwxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xMCw0QTQsNCAwIDAsMSAxNCw4QzE0LDguOTEgMTMuNjksOS43NSAxMy4xOCwxMC40M0MxMi4zMiwxMC43NSAxMS41NSwxMS4yNiAxMC45MSwxMS45TDEwLDEyQTQsNCAwIDAsMSA2LDhBNCw0IDAgMCwxIDEwLDRNMiwyMFYxOEMyLDE1Ljg4IDUuMzEsMTQuMTQgOS41LDE0QzkuMTgsMTQuNzggOSwxNS42MiA5LDE2LjVDOSwxNy43OSA5LjM4LDE5IDEwLDIwSDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFNlYXJjaE91dGxpbmUgPSBcIk0xMCwxM0M5LjY1LDEzLjU5IDkuMzYsMTQuMjQgOS4xOSwxNC45M0M2LjUsMTUuMTYgMy45LDE2LjQyIDMuOSwxN1YxOC4xSDkuMkM5LjM3LDE4Ljc4IDkuNjUsMTkuNDIgMTAsMjBIMlYxN0MyLDE0LjM0IDcuMzMsMTMgMTAsMTNNMTAsNEE0LDQgMCAwLDEgMTQsOEMxNCw4LjkxIDEzLjY5LDkuNzUgMTMuMTgsMTAuNDNDMTIuMzIsMTAuNzUgMTEuNTUsMTEuMjYgMTAuOTEsMTEuOUwxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDUuOUEyLjEsMi4xIDAgMCwwIDcuOSw4QTIuMSwyLjEgMCAwLDAgMTAsMTAuMUEyLjEsMi4xIDAgMCwwIDEyLjEsOEEyLjEsMi4xIDAgMCwwIDEwLDUuOU0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U2V0dGluZ3MgPSBcIk0xMiw0QTQsNCAwIDAsMSAxNiw4QTQsNCAwIDAsMSAxMiwxMkE0LDQgMCAwLDEgOCw4QTQsNCAwIDAsMSAxMiw0TTEyLDE0QzE2LjQyLDE0IDIwLDE1Ljc5IDIwLDE4VjIwSDRWMThDNCwxNS43OSA3LjU4LDE0IDEyLDE0TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTZXR0aW5nc091dGxpbmUgPSBcIk0xMiA0QzE0LjIxIDQgMTYgNS43OSAxNiA4UzE0LjIxIDEyIDEyIDEyIDggMTAuMjEgOCA4IDkuNzkgNCAxMiA0TTEyIDZDMTAuOSA2IDEwIDYuOSAxMCA4UzEwLjkgMTAgMTIgMTAgMTQgOS4xMSAxNCA4IDEzLjExIDYgMTIgNk0xMiAxM0MxNC42NyAxMyAyMCAxNC4zMyAyMCAxN1YyMEg0VjE3QzQgMTQuMzMgOS4zMyAxMyAxMiAxM00xMiAxNC45QzkuMDMgMTQuOSA1LjkgMTYuMzYgNS45IDE3VjE4LjFIMTguMVYxN0MxOC4xIDE2LjM2IDE0Ljk3IDE0LjkgMTIgMTQuOU0xMyAyMkgxMVYyNEgxM1YyMk0xNyAyMkgxNVYyNEgxN1YyMk05IDIySDdWMjRIOVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3RhciA9IFwiTTE1LDE0QzEyLjMzLDE0IDcsMTUuMzMgNywxOFYyMEgyM1YxOEMyMywxNS4zMyAxNy42NywxNCAxNSwxNE0xNSwxMkE0LDQgMCAwLDAgMTksOEE0LDQgMCAwLDAgMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJNNSwxMy4yOEw3LjQ1LDE0Ljc3TDYuOCwxMS45Nkw5LDEwLjA4TDYuMTEsOS44M0w1LDcuMTlMMy44Nyw5LjgzTDEsMTAuMDhMMy4xOCwxMS45NkwyLjUsMTQuNzdMNSwxMy4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3Rhck91dGxpbmUgPSBcIk0xNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMkE0LDQgMCAwLDEgMTEsOEE0LDQgMCAwLDEgMTUsNE0xNSw1LjlBMi4xLDIuMSAwIDAsMCAxMi45LDhBMi4xLDIuMSAwIDAsMCAxNSwxMC4xQzE2LjE2LDEwLjEgMTcuMSw5LjE2IDE3LjEsOEMxNy4xLDYuODQgMTYuMTYsNS45IDE1LDUuOU0xNSwxM0MxNy42NywxMyAyMywxNC4zMyAyMywxN1YyMEg3VjE3QzcsMTQuMzMgMTIuMzMsMTMgMTUsMTNNMTUsMTQuOUMxMiwxNC45IDguOSwxNi4zNiA4LjksMTdWMTguMUgyMS4xVjE3QzIxLjEsMTYuMzYgMTcuOTcsMTQuOSAxNSwxNC45TTUsMTMuMjhMMi41LDE0Ljc3TDMuMTgsMTEuOTZMMSwxMC4wOEwzLjg3LDkuODNMNSw3LjE5TDYuMTEsOS44M0w5LDEwLjA4TDYuOCwxMS45Nkw3LjQ1LDE0Ljc3TDUsMTMuMjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFN1cGVydmlzb3IgPSBcIk0xNi41LDEyQTIuNSwyLjUgMCAwLDAgMTksOS41QTIuNSwyLjUgMCAwLDAgMTYuNSw3QTIuNSwyLjUgMCAwLDAgMTQsOS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxMk05LDExQTMsMyAwIDAsMCAxMiw4QTMsMyAwIDAsMCA5LDVBMywzIDAgMCwwIDYsOEEzLDMgMCAwLDAgOSwxMU0xNi41LDE0QzE0LjY3LDE0IDExLDE0LjkyIDExLDE2Ljc1VjE5SDIyVjE2Ljc1QzIyLDE0LjkyIDE4LjMzLDE0IDE2LjUsMTRNOSwxM0M2LjY3LDEzIDIsMTQuMTcgMiwxNi41VjE5SDlWMTYuNzVDOSwxNS45IDkuMzMsMTQuNDEgMTEuMzcsMTMuMjhDMTAuNSwxMy4xIDkuNjYsMTMgOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3VwZXJ2aXNvckNpcmNsZSA9IFwiTTEyLDJDNi40NywyIDIsNi41IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNS42LDguMzRDMTYuNjcsOC4zNCAxNy41Myw5LjIgMTcuNTMsMTAuMjdDMTcuNTMsMTEuMzQgMTYuNjcsMTIuMiAxNS42LDEyLjJBMS45MywxLjkzIDAgMCwxIDEzLjY3LDEwLjI3QzEzLjY2LDkuMiAxNC41Myw4LjM0IDE1LjYsOC4zNE05LjYsNi43NkMxMC45LDYuNzYgMTEuOTYsNy44MiAxMS45Niw5LjEyQzExLjk2LDEwLjQyIDEwLjksMTEuNSA5LjYsMTEuNUM4LjMsMTEuNSA3LjI0LDEwLjQyIDcuMjQsOS4xMkM3LjI0LDcuODEgOC4yOSw2Ljc2IDkuNiw2Ljc2TTkuNiwxNS44OVYxOS42NEM3LjIsMTguODkgNS4zLDE3LjA0IDQuNDYsMTQuNjhDNS41LDEzLjU2IDguMTMsMTMgOS42LDEzQzEwLjEzLDEzIDEwLjgsMTMuMDcgMTEuNSwxMy4yMUM5Ljg2LDE0LjA4IDkuNiwxNS4yMyA5LjYsMTUuODlNMTIsMjBDMTEuNzIsMjAgMTEuNDYsMjAgMTEuMiwxOS45NlYxNS44OUMxMS4yLDE0LjQ3IDE0LjE0LDEzLjc2IDE1LjYsMTMuNzZDMTYuNjcsMTMuNzYgMTguNSwxNC4xNSAxOS40NCwxNC45MUMxOC4yNywxNy44OCAxNS4zOCwyMCAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3VwZXJ2aXNvckNpcmNsZU91dGxpbmUgPSBcIk0xMi41IDEwQzEyLjUgOC4zNCAxMS4xNiA3IDkuNSA3QzcuODYgNyA2LjUgOC4zNCA2LjUgMTBDNi41IDExLjY0IDcuODYgMTMgOS41IDEzQzExLjE2IDEzIDEyLjUgMTEuNjQgMTIuNSAxME05LjUgMTFDOC45NiAxMSA4LjUgMTAuNTQgOC41IDEwQzguNSA5LjQ0IDguOTYgOSA5LjUgOUMxMC4wNiA5IDEwLjUgOS40NCAxMC41IDEwQzEwLjUgMTAuNTQgMTAuMDYgMTEgOS41IDExTTE2IDEzQzE3LjEyIDEzIDE4IDEyLjEgMTggMTFDMTggOS44OCAxNy4xMiA5IDE2IDlDMTQuOSA5IDE0IDkuODggMTQgMTFDMTQgMTIuMSAxNC45IDEzIDE2IDEzTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJNNS44NSAxNy4xMUM2LjUzIDE2LjU3IDguMTIgMTYgOS41IDE2QzkuNTggMTYgOS42NiAxNiA5Ljc0IDE2QzEwIDE1LjM3IDEwLjQxIDE0LjcyIDExLjA0IDE0LjE1QzEwLjUgMTQuMDUgOS45NSAxNCA5LjUgMTRDOC4yMSAxNCA2LjEyIDE0LjQ0IDQuNzggMTUuNDJDNC4yOCAxNC4zOCA0IDEzLjIyIDQgMTJDNCA3LjU4IDcuNTkgNCAxMiA0QzE2LjQxIDQgMjAgNy41OCAyMCAxMkMyMCAxMy4xOSAxOS43MyAxNC4zMyAxOS4yNSAxNS4zNkMxOC4yNSAxNC43NyAxNi44OSAxNC41IDE2IDE0LjVDMTQuNSAxNC41IDExLjUgMTUuMyAxMS41IDE3LjE5VjE5Ljk3QzkuMjQgMTkuODQgNy4yMiAxOC43NiA1Ljg1IDE3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTdXBlcnZpc29yT3V0bGluZSA9IFwiTTE2LjUgMTUuNUMxOC4yMiAxNS41IDIwLjI1IDE2LjMgMjAuNSAxNi43OFYxNy41SDEyLjVWMTYuNzhDMTIuNzUgMTYuMyAxNC43OCAxNS41IDE2LjUgMTUuNU0xNi41IDE0QzE0LjY3IDE0IDExIDE0LjkyIDExIDE2Ljc1VjE5SDIyVjE2Ljc1QzIyIDE0LjkyIDE4LjMzIDE0IDE2LjUgMTRNOSAxM0M2LjY3IDEzIDIgMTQuMTcgMiAxNi41VjE5SDlWMTcuNUgzLjVWMTYuNUMzLjUgMTUuODcgNi4yOSAxNC4zNCA5LjgyIDE0LjVBNS4xMiA1LjEyIDAgMCAxIDExLjM3IDEzLjI1QTEyLjI4IDEyLjI4IDAgMCAwIDkgMTNNOSA2LjVBMS41IDEuNSAwIDEgMSA3LjUgOEExLjUgMS41IDAgMCAxIDkgNi41TTkgNUEzIDMgMCAxIDAgMTIgOEEzIDMgMCAwIDAgOSA1TTE2LjUgOC41QTEgMSAwIDEgMSAxNS41IDkuNUExIDEgMCAwIDEgMTYuNSA4LjVNMTYuNSA3QTIuNSAyLjUgMCAxIDAgMTkgOS41QTIuNSAyLjUgMCAwIDAgMTYuNSA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTd2l0Y2ggPSBcIk0xNiA5QzIyIDkgMjIgMTMgMjIgMTNWMTVIMTZWMTNDMTYgMTMgMTYgMTEuMzEgMTQuODUgOS44QzE0LjY4IDkuNTcgMTQuNDcgOS4zNSAxNC4yNSA5LjE0QzE0Ljc3IDkuMDYgMTUuMzQgOSAxNiA5TTIgMTNDMiAxMyAyIDkgOCA5UzE0IDEzIDE0IDEzVjE1SDJWMTNNOSAxN1YxOUgxNVYxN0wxOCAyMEwxNSAyM1YyMUg5VjIzTDYgMjBMOSAxN004IDFDNi4zNCAxIDUgMi4zNCA1IDRTNi4zNCA3IDggNyAxMSA1LjY2IDExIDQgOS42NiAxIDggMU0xNiAxQzE0LjM0IDEgMTMgMi4zNCAxMyA0UzE0LjM0IDcgMTYgNyAxOSA1LjY2IDE5IDQgMTcuNjYgMSAxNiAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTd2l0Y2hPdXRsaW5lID0gXCJNMTYgOUMyMiA5IDIyIDEzIDIyIDEzVjE1SDE2VjEzQzE2IDEzIDE2IDExLjMxIDE0Ljg1IDkuOEMxNC42OCA5LjU3IDE0LjQ3IDkuMzUgMTQuMjUgOS4xNEMxNC43NyA5LjA2IDE1LjM0IDkgMTYgOU04IDExQzExLjUgMTEgMTEuOTQgMTIuNTYgMTIgMTNINEM0LjA2IDEyLjU2IDQuNSAxMSA4IDExTTggOUMyIDkgMiAxMyAyIDEzVjE1SDE0VjEzQzE0IDEzIDE0IDkgOCA5TTkgMTdWMTlIMTVWMTdMMTggMjBMMTUgMjNWMjFIOVYyM0w2IDIwTDkgMTdNOCAzQzguNTUgMyA5IDMuNDUgOSA0UzguNTUgNSA4IDUgNyA0LjU1IDcgNCA3LjQ1IDMgOCAzTTggMUM2LjM0IDEgNSAyLjM0IDUgNFM2LjM0IDcgOCA3IDExIDUuNjYgMTEgNCA5LjY2IDEgOCAxTTE2IDFDMTQuMzQgMSAxMyAyLjM0IDEzIDRTMTQuMzQgNyAxNiA3IDE5IDUuNjYgMTkgNCAxNy42NiAxIDE2IDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZSA9IFwiTTEyIDNDMTQuMjEgMyAxNiA0Ljc5IDE2IDdTMTQuMjEgMTEgMTIgMTEgOCA5LjIxIDggNyA5Ljc5IDMgMTIgM00xNiAxMy41NEMxNiAxNC42IDE1LjcyIDE3LjA3IDEzLjgxIDE5LjgzTDEzIDE1TDEzLjk0IDEzLjEyQzEzLjMyIDEzLjA1IDEyLjY3IDEzIDEyIDEzUzEwLjY4IDEzLjA1IDEwLjA2IDEzLjEyTDExIDE1TDEwLjE5IDE5LjgzQzguMjggMTcuMDcgOCAxNC42IDggMTMuNTRDNS42MSAxNC4yNCA0IDE1LjUgNCAxN1YyMUgyMFYxN0MyMCAxNS41IDE4LjQgMTQuMjQgMTYgMTMuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZU91dGxpbmUgPSBcIk0xNi4zNiAxMi43NkMxOC4zMSAxMy40MiAyMCAxNC41IDIwIDE2VjIxSDRWMTZDNCAxNC41IDUuNjkgMTMuNDIgNy42NSAxMi43Nkw4LjI3IDE0TDguNSAxNC41QzcgMTQuOTYgNS45IDE1LjYyIDUuOSAxNlYxOS4xSDEwLjEyTDExIDE0LjAzTDEwLjA2IDEyLjE1QzEwLjY4IDEyLjA4IDExLjMzIDEyLjAzIDEyIDEyLjAzQzEyLjY3IDEyLjAzIDEzLjMyIDEyLjA4IDEzLjk0IDEyLjE1TDEzIDE0LjAzTDEzLjg4IDE5LjFIMTguMVYxNkMxOC4xIDE1LjYyIDE3IDE0Ljk2IDE1LjUgMTQuNUwxNS43MyAxNEwxNi4zNiAxMi43Nk0xMiA1QzEwLjkgNSAxMCA1LjkgMTAgN0MxMCA4LjEgMTAuOSA5IDEyIDlDMTMuMSA5IDE0IDguMSAxNCA3QzE0IDUuOSAxMy4xIDUgMTIgNU0xMiAxMUM5Ljc5IDExIDggOS4yMSA4IDdDOCA0Ljc5IDkuNzkgMyAxMiAzQzE0LjIxIDMgMTYgNC43OSAxNiA3QzE2IDkuMjEgMTQuMjEgMTEgMTIgMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlID0gXCJNMTYuNzUgNC4zNkMxOC43NyA2LjU2IDE4Ljc3IDkuNjEgMTYuNzUgMTEuNjNMMTUuMDcgOS45NEMxNS45MSA4Ljc2IDE1LjkxIDcuMjMgMTUuMDcgNi4wNUwxNi43NSA0LjM2TTIwLjA2IDFDMjQgNS4wNSAyMy45NiAxMS4xMSAyMC4wNiAxNUwxOC40MyAxMy4zN0MyMS4yIDEwLjE5IDIxLjIgNS42NSAxOC40MyAyLjYzTDIwLjA2IDFNOSA0QzExLjIgNCAxMyA1Ljc5IDEzIDhTMTEuMiAxMiA5IDEyIDUgMTAuMjEgNSA4IDYuNzkgNCA5IDRNMTMgMTQuNTRDMTMgMTUuNiAxMi43MSAxOC4wNyAxMC44IDIwLjgzTDEwIDE2TDEwLjkzIDE0LjEyQzEwLjMxIDE0LjA1IDkuNjYgMTQgOSAxNFM3LjY3IDE0LjA1IDcuMDUgMTQuMTJMOCAxNkw3LjE4IDIwLjgzQzUuMjcgMTguMDcgNSAxNS42IDUgMTQuNTRDMi42IDE1LjI0IC45OTQgMTYuNSAuOTk0IDE4VjIySDE3VjE4QzE3IDE2LjUgMTUuMzkgMTUuMjQgMTMgMTQuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlT2ZmID0gXCJNMTIuNyA5LjVMNy41IDQuM0M3Ljk2IDQuMTEgOC40NiA0IDkgNEMxMS4yIDQgMTMgNS43OSAxMyA4QzEzIDguNTMgMTIuODkgOS4wNCAxMi43IDkuNU0xNi43NSAxMS42M0MxOC43NyA5LjYxIDE4Ljc3IDYuNTYgMTYuNzUgNC4zNkwxNS4wNyA2LjA1QzE1LjkxIDcuMjMgMTUuOTEgOC43NiAxNS4wNyA5Ljk0TDE2Ljc1IDExLjYzTTIwLjA2IDE1QzIzLjk2IDExLjExIDI0IDUuMDUgMjAuMDYgMUwxOC40MyAyLjYzQzIxLjIgNS42NSAyMS4yIDEwLjE5IDE4LjQzIDEzLjM3TDIwLjA2IDE1TTIuMzkgMS43M0wxLjExIDNMNS4xMyA3QzUuMDUgNy4zNCA1IDcuNjYgNSA4QzUgMTAuMjEgNi43OSAxMiA5IDEyQzkuMzMgMTIgOS42NiAxMS45NCA5Ljk3IDExLjg2TDEzIDE0Ljg3QzEyLjkzIDE2LjA2IDEyLjU0IDE4LjMyIDEwLjggMjAuODNMMTAgMTZMMTAuOTMgMTQuMTJDMTAuMzEgMTQuMDUgOS42NiAxNCA5IDE0QzguMzIgMTQgNy42NyAxNC4wNSA3LjA1IDE0LjEyTDggMTZMNy4xOCAyMC44M0M1LjI3IDE4LjA3IDUgMTUuNiA1IDE0LjU0QzIuNiAxNS4yNCAuOTk0IDE2LjUgLjk5NCAxOFYyMkgxN1YxOC44OEwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlT2ZmT3V0bGluZSA9IFwiTTkuMjIgNkw3LjUgNC4zQzcuOTYgNC4xMSA4LjQ3IDQgOSA0QzExLjIxIDQgMTMgNS43OSAxMyA4QzEzIDguNTMgMTIuODkgOS4wNCAxMi43IDkuNUwxMSA3Ljc4QzEwLjg3IDYuODYgMTAuMTQgNi4xMyA5LjIyIDZNMjAuMDYgMTVDMjMuOTYgMTEuMTEgMjQgNS4wNSAyMC4wNiAxTDE4LjQzIDIuNjNDMjEuMiA1LjY1IDIxLjIgMTAuMTkgMTguNDMgMTMuMzdMMjAuMDYgMTVNMTYuNzUgMTEuNjNDMTguNzcgOS42MSAxOC43NyA2LjU2IDE2Ljc1IDQuMzZMMTUuMDcgNi4wNUMxNS45MSA3LjIzIDE1LjkxIDguNzYgMTUuMDcgOS45NEwxNi43NSAxMS42M00yLjM5IDEuNzNMMS4xMSAzTDUuMTQgNy4wM0M1LjA2IDcuMzQgNSA3LjY2IDUgOEM1IDEwLjIxIDYuNzkgMTIgOSAxMkM5LjM0IDEyIDkuNjYgMTEuOTQgOS45NyAxMS44NkwxMi44NiAxNC43NUwxMi43MyAxNUwxMi41IDE1LjVDMTMuMyAxNS43NCAxMy45NyAxNi4wNSAxNC40NCAxNi4zM0wxNS4xIDE3VjIwLjFIMTAuODhMMTAgMTUuMDNMMTAuOTQgMTMuMTVDMTAuMzIgMTMuMDggOS42NyAxMy4wMyA5IDEzLjAzUzcuNjggMTMuMDggNy4wNiAxMy4xNUw4IDE1LjAzTDcuMTIgMjAuMUgyLjlWMTdDMi45IDE2LjYyIDQgMTUuOTYgNS41IDE1LjVMNS4yNyAxNUw0LjY1IDEzLjc2QzIuNjkgMTQuNDIgMSAxNS41IDEgMTdWMjJIMTdWMTguODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRUaWVWb2ljZU91dGxpbmUgPSBcIk0xNi43NSA0LjM2QzE4Ljc3IDYuNTYgMTguNzcgOS42MSAxNi43NSAxMS42M0wxNS4wNyA5Ljk0QzE1LjkxIDguNzYgMTUuOTEgNy4yMyAxNS4wNyA2LjA1TDE2Ljc1IDQuMzZNMjAuMDYgMUMyNCA1LjA1IDIzLjk2IDExLjExIDIwLjA2IDE1TDE4LjQzIDEzLjM3QzIxLjIgMTAuMTkgMjEuMiA1LjY1IDE4LjQzIDIuNjNMMjAuMDYgMU0xMy4zNiAxMy43NkMxNS4zMSAxNC40MiAxNyAxNS41IDE3IDE3VjIySDFWMTdDMSAxNS41IDIuNjkgMTQuNDIgNC42NSAxMy43Nkw1LjI3IDE1TDUuNSAxNS41QzQgMTUuOTYgMi45IDE2LjYyIDIuOSAxN1YyMC4xSDcuMTJMOCAxNS4wM0w3LjA2IDEzLjE1QzcuNjggMTMuMDggOC4zMyAxMy4wMyA5IDEzLjAzUzEwLjMyIDEzLjA4IDEwLjk0IDEzLjE1TDEwIDE1LjAzTDEwLjg4IDIwLjFIMTUuMVYxN0MxNS4xIDE2LjYyIDE0IDE1Ljk2IDEyLjUgMTUuNUwxMi43MyAxNUwxMy4zNiAxMy43Nk05IDZDNy45IDYgNyA2LjkgNyA4UzcuOSAxMCA5IDEwIDExIDkuMSAxMSA4IDEwLjEgNiA5IDZNOSAxMkM2Ljc5IDEyIDUgMTAuMjEgNSA4UzYuNzkgNCA5IDQgMTMgNS43OSAxMyA4IDExLjIxIDEyIDkgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFZvaWNlID0gXCJNOSw1QTQsNCAwIDAsMSAxMyw5QTQsNCAwIDAsMSA5LDEzQTQsNCAwIDAsMSA1LDlBNCw0IDAgMCwxIDksNU05LDE1QzExLjY3LDE1IDE3LDE2LjM0IDE3LDE5VjIxSDFWMTlDMSwxNi4zNCA2LjMzLDE1IDksMTVNMTYuNzYsNS4zNkMxOC43OCw3LjU2IDE4Ljc4LDEwLjYxIDE2Ljc2LDEyLjYzTDE1LjA4LDEwLjk0QzE1LjkyLDkuNzYgMTUuOTIsOC4yMyAxNS4wOCw3LjA1TDE2Ljc2LDUuMzZNMjAuMDcsMkMyNCw2LjA1IDIzLjk3LDEyLjExIDIwLjA3LDE2TDE4LjQ0LDE0LjM3QzIxLjIxLDExLjE5IDIxLjIxLDYuNjUgMTguNDQsMy42M0wyMC4wNywyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFkanVzdCA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTUsMTJBMywzIDAgMCwxIDEyLDE1QTMsMyAwIDAsMSA5LDEyQTMsMyAwIDAsMSAxMiw5QTMsMyAwIDAsMSAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBZG9iZSA9IFwiTTE0LjU4LDNIMjJWMTkuNjdMMTQuNTgsM005LjQyLDNIMlYxOS42N0w5LjQyLDNNMTIsOS4xN0wxNi42NywxOS42N0gxMy41TDEyLjE3LDE2LjMzSDguNzVMMTIsOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBZG9iZUFjcm9iYXQgPSBcIk0yMS44IDE0LjVDMjEuMyAxMy43IDIwLjEgMTMuNCAxOC4xIDEzLjRDMTcuNCAxMy40IDE2LjcgMTMuNCAxNiAxMy41QzE1LjUgMTMuMiAxNSAxMi45IDE0LjYgMTIuNkMxMy42IDExLjggMTIuNyAxMC4zIDEyIDguNUMxMiA4LjUgMTIgOC40IDEyLjEgOC4zQzEyLjYgNi4yIDEzLjEgMy42IDEyLjEgMi41QzExLjggMi4yIDExLjUgMi4xIDExLjEgMi4xSDEwLjdDMTAuMSAyLjEgOS42IDIuNyA5LjQgMy4zQzguOCA1LjQgOS4yIDYuNiA5LjggOC41QzkuNCAxMCA4LjkgMTEuNiA4IDEzLjNDNy41IDE0LjQgNi45IDE1LjQgNi41IDE2LjJDNS45IDE2LjUgNS40IDE2LjggNS4xIDE3QzMuMiAxOC4yIDIuMiAxOS42IDIuMSAyMC40QzIgMjAuNyAyIDIxIDIuMSAyMS4yVjIxLjNMMi45IDIxLjhDMy4xIDIxLjkgMy40IDIyIDMuNiAyMkM0LjkgMjIgNi40IDIwLjUgOC40IDE3QzguNSAxNyA4LjYgMTYuOSA4LjcgMTYuOUMxMC40IDE2LjQgMTIuNCAxNiAxNS4yIDE1LjdDMTYuOCAxNi41IDE4LjggMTYuOSAyMCAxNi45QzIwLjcgMTYuOSAyMS4yIDE2LjcgMjEuNSAxNi40QzIxLjggMTYuMSAyMS45IDE1LjcgMjIgMTUuM0MyMiAxNSAyMiAxNC43IDIxLjggMTQuNU0zLjQgMjAuOUMzLjUgMjAuMyA0LjIgMTkuMiA1LjQgMTguMkM1LjYgMTguMSA1LjggMTcuOSA2LjIgMTcuN0M1IDE5LjYgNC4xIDIwLjYgMy40IDIwLjlNMTAuOCAzLjJDMTAuOSAzLjEgMTAuOSAzIDExIDNMMTEuMiAzLjFDMTEuNSAzLjUgMTEuNSA0IDExLjMgNC45VjUuMkMxMS4yIDUuNiAxMS4yIDYgMTEgNi41QzEwLjYgNSAxMC42IDMuOSAxMC44IDMuMk04LjggMTUuOEw4LjYgMTUuOUM4LjcgMTUuNCA5LjEgMTQuOCA5LjQgMTQuMkMxMC4xIDEyLjggMTAuNyAxMS41IDExIDEwLjNDMTEuNyAxMS44IDEyLjUgMTIuOSAxMy41IDEzLjhDMTMuNyAxNCAxMy45IDE0LjIgMTQuMiAxNC4zQzEyLjggMTQuNSAxMC45IDE1IDguOCAxNS44TTIwLjkgMTUuN0gyMC41QzE5LjggMTUuNyAxOC42IDE1LjQgMTcuNCAxNC45QzE3LjUgMTQuNyAxNy43IDE0LjcgMTcuOCAxNC43QzIwLjEgMTQuNyAyMC43IDE1LjEgMjAuOSAxNS4zQzIxIDE1LjQgMjEgMTUuNCAyMSAxNS41QzIxIDE1LjYgMjEgMTUuNiAyMC45IDE1LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyQ29uZGl0aW9uZXIgPSBcIk02LjU5LDAuNjZDOC45MywtMS4xNSAxMS40NywxLjA2IDEyLjA0LDQuNUMxMi40Nyw0LjUgMTIuODksNC42MiAxMy4yNyw0Ljg0QzEzLjc5LDQuMjQgMTQuMjUsMy40MiAxNC4wNywyLjVDMTMuNjUsMC4zNSAxNi4wNiwtMS4zOSAxOC4zNSwxLjU4QzIwLjE2LDMuOTIgMTcuOTUsNi40NiAxNC41LDcuMDNDMTQuNSw3LjQ2IDE0LjM5LDcuODkgMTQuMTYsOC4yN0MxNC43Niw4Ljc4IDE1LjU4LDkuMjQgMTYuNSw5LjA2QzE4LjYzLDguNjQgMjAuMzgsMTEuMDQgMTcuNDEsMTMuMzRDMTUuMDcsMTUuMTUgMTIuNTMsMTIuOTQgMTEuOTYsOS41QzExLjUzLDkuNSAxMS4xMSw5LjM3IDEwLjc0LDkuMTVDMTAuMjIsOS43NSA5Ljc1LDEwLjU4IDkuOTMsMTEuNUMxMC4zNSwxMy42NCA3Ljk0LDE1LjM5IDUuNjUsMTIuNDJDMy44MywxMC4wNyA2LjA1LDcuNTMgOS41LDYuOTdDOS41LDYuNTQgOS42Myw2LjEyIDkuODUsNS43NEM5LjI1LDUuMjMgOC40Myw0Ljc2IDcuNSw0Ljk0QzUuMzcsNS4zNiAzLjYyLDIuOTYgNi41OSwwLjY2TTUsMTZIN0EyLDIgMCAwLDEgOSwxOFYyNEg3VjIySDVWMjRIM1YxOEEyLDIgMCAwLDEgNSwxNk01LDE4VjIwSDdWMThINU0xMi45MywxNkgxNUwxMi4wNywyNEgxMEwxMi45MywxNk0xOCwxNkgyMVYxOEgxOFYyMkgyMVYyNEgxOEEyLDIgMCAwLDEgMTYsMjJWMThBMiwyIDAgMCwxIDE4LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpckZpbHRlciA9IFwiTTE5LDE4LjMxVjIwQTIsMiAwIDAsMSAxNywyMkg3QTIsMiAwIDAsMSA1LDIwVjE2LjNDNC41NCwxNi4xMiAzLjk1LDE2IDMsMTZBMSwxIDAgMCwxIDIsMTVBMSwxIDAgMCwxIDMsMTRDMy44MiwxNCA0LjQ3LDE0LjA4IDUsMTQuMjFWMTIuM0M0LjU0LDEyLjEyIDMuOTUsMTIgMywxMkExLDEgMCAwLDEgMiwxMUExLDEgMCAwLDEgMywxMEMzLjgyLDEwIDQuNDcsMTAuMDggNSwxMC4yMVY4LjNDNC41NCw4LjEyIDMuOTUsOCAzLDhBMSwxIDAgMCwxIDIsN0ExLDEgMCAwLDEgMyw2QzMuODIsNiA0LjQ3LDYuMDggNSw2LjIxVjRBMiwyIDAgMCwxIDcsMkgxN0EyLDIgMCAwLDEgMTksNFY2LjE2QzIwLjc4LDYuNDcgMjEuNTQsNy4xMyAyMS43MSw3LjI5QzIyLjEsNy42OCAyMi4xLDguMzIgMjEuNzEsOC43MUMyMS4zMiw5LjEgMjAuOCw5LjA5IDIwLjI5LDguNzFWOC43MUMyMC4yOSw4LjcxIDE5LjI1LDggMTcsOEMxNS43NCw4IDE0LjkxLDguNDEgMTMuOTUsOC45QzEyLjkxLDkuNDEgMTEuNzQsMTAgMTAsMTBDOS42NCwxMCA5LjMxLDEwIDksOS45NlY3Ljk1QzkuMyw4IDkuNjMsOCAxMCw4QzExLjI2LDggMTIuMDksNy41OSAxMy4wNSw3LjExQzE0LjA5LDYuNTkgMTUuMjcsNiAxNyw2VjRIN1YyMEgxN1YxOEMxOC41LDE4IDE4Ljk3LDE4LjI5IDE5LDE4LjMxTTE3LDEwQzE1LjI3LDEwIDE0LjA5LDEwLjU5IDEzLjA1LDExLjExQzEyLjA5LDExLjU5IDExLjI2LDEyIDEwLDEyQzkuNjMsMTIgOS4zLDEyIDksMTEuOTVWMTMuOTZDOS4zMSwxNCA5LjY0LDE0IDEwLDE0QzExLjc0LDE0IDEyLjkxLDEzLjQxIDEzLjk1LDEyLjlDMTQuOTEsMTIuNDIgMTUuNzQsMTIgMTcsMTJDMTkuMjUsMTIgMjAuMjksMTIuNzEgMjAuMjksMTIuNzFWMTIuNzFDMjAuOCwxMy4xIDIxLjMyLDEzLjEgMjEuNzEsMTIuNzFDMjIuMSwxMi4zMiAyMi4xLDExLjY5IDIxLjcxLDExLjI5QzIxLjUsMTEuMDggMjAuMjUsMTAgMTcsMTBNMTcsMTRDMTUuMjcsMTQgMTQuMDksMTQuNTkgMTMuMDUsMTUuMTFDMTIuMDksMTUuNTkgMTEuMjYsMTYgMTAsMTZDOS42MywxNiA5LjMsMTYgOSwxNS45NVYxNy45NkM5LjMxLDE4IDkuNjQsMTggMTAsMThDMTEuNzQsMTggMTIuOTEsMTcuNDEgMTMuOTUsMTYuOUMxNC45MSwxNi40MiAxNS43NCwxNiAxNywxNkMxOS4yNSwxNiAyMC4yOSwxNi43MSAyMC4yOSwxNi43MVYxNi43MUMyMC44LDE3LjEgMjEuMzIsMTcuMSAyMS43MSwxNi43MUMyMi4xLDE2LjMyIDIyLjEsMTUuNjkgMjEuNzEsMTUuMjlDMjEuNSwxNS4wOCAyMC4yNSwxNCAxNywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJIb3JuID0gXCJNMTksMi44VjZMMTksOS4yQzE5LDkuNSAxOC43LDkuOCAxOC40LDkuN0MxOC40LDkuNyAxNC41LDcuMSAxMCw3LjFWOS41SDEwLjJDMTAuNyw5LjUgMTEuMiw5LjcgMTEuNCwxMC4xTDEyLjcsMTEuOUMxMi45LDEyLjEgMTMsMTIuNCAxMywxMi42VjIwLjZDMTMsMjEuMyAxMi4zLDIyIDExLjUsMjJINi41QzUuNywyMiA1LDIxLjQgNSwyMC42VjEyLjZDNSwxMi4zIDUuMSwxMi4xIDUuMywxMS45TDYuNiwxMC4xQzYuOSw5LjcgNy4zLDkuNSA3LjgsOS41SDhWOEM3LjYsOC41IDcsOC44IDYuNCw4LjhDNS4xLDguOCA0LDcuNSA0LDZDNCw0LjUgNS4xLDMuMiA2LjQsMy4yQzcsMy4zIDcuNiwzLjYgOCw0VjIuNkgxMFY1QzE0LjUsNSAxOC40LDIuNCAxOC40LDIuNEMxOC43LDIuMyAxOSwyLjUgMTksMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpckh1bWlkaWZpZXIgPSBcIk0xMSA5QzguNzkgOSA3IDEwLjc5IDcgMTNTOC43OSAxNyAxMSAxNyAxNSAxNS4yMSAxNSAxMyAxMy4yMSA5IDExIDlNMTEgMTVDOS45IDE1IDkgMTQuMTEgOSAxM1M5LjkgMTEgMTEgMTEgMTMgMTEuOSAxMyAxMyAxMi4xMSAxNSAxMSAxNU03IDRIMTRDMTYuMjEgNCAxOCA1Ljc5IDE4IDhWOUgxNlY4QzE2IDYuOSAxNS4xMSA2IDE0IDZIN0M1LjkgNiA1IDYuOSA1IDhWMjBIMTZWMThIMThWMjJIM1Y4QzMgNS43OSA0Ljc5IDQgNyA0TTE5IDEwLjVDMTkgMTAuNSAyMSAxMi42NyAyMSAxNEMyMSAxNS4xIDIwLjEgMTYgMTkgMTZTMTcgMTUuMSAxNyAxNEMxNyAxMi42NyAxOSAxMC41IDE5IDEwLjVcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJIdW1pZGlmaWVyT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMMy44IDUuN0MzLjMgNi4zIDMgNy4xIDMgOFYyMkgxOFYxOS45TDIwLjggMjIuN0wyMi4xIDIxLjVNOS42IDExLjVMMTIuNCAxNC4zQzEyLjEgMTQuNyAxMS42IDE1IDExIDE1QzkuOSAxNSA5IDE0LjEgOSAxM0M5IDEyLjQgOS4zIDExLjkgOS42IDExLjVNMTYgMTcuOVYyMEg1VjhDNSA3LjcgNS4xIDcuNCA1LjIgNy4xTDguMiAxMC4xQzcuNSAxMC44IDcgMTEuOSA3IDEzQzcgMTUuMiA4LjggMTcgMTEgMTdDMTIuMSAxNyAxMy4yIDE2LjUgMTMuOSAxNS44TDE2IDE3LjlNMTcgMTMuOEMxNy4xIDEyLjUgMTkgMTAuNSAxOSAxMC41UzIxIDEyLjcgMjEgMTRDMjEgMTUgMjAuMiAxNS45IDE5LjIgMTZMMTcgMTMuOE05LjIgNkw3LjIgNEgxNEMxNi4yIDQgMTggNS44IDE4IDhWOUgxNlY4QzE2IDYuOSAxNS4xIDYgMTQgNkg5LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyUHVyaWZpZXIgPSBcIk0xMSw5QTQsNCAwIDAsMSAxNSwxM0E0LDQgMCAwLDEgMTEsMTdBNCw0IDAgMCwxIDcsMTNBNCw0IDAgMCwxIDExLDlNMTEsMTFBMiwyIDAgMCwwIDksMTNBMiwyIDAgMCwwIDExLDE1QTIsMiAwIDAsMCAxMywxM0EyLDIgMCAwLDAgMTEsMTFNNyw0SDE0QTQsNCAwIDAsMSAxOCw4VjlIMTZWOEEyLDIgMCAwLDAgMTQsNkg3QTIsMiAwIDAsMCA1LDhWMjBIMTZWMThIMThWMjJIM1Y4QTQsNCAwIDAsMSA3LDRNMTYsMTFDMTguNSwxMSAxOC41LDkgMjEsOVYxMUMxOC41LDExIDE4LjUsMTMgMTYsMTNWMTFNMTYsMTVDMTguNSwxNSAxOC41LDEzIDIxLDEzVjE1QzE4LjUsMTUgMTguNSwxNyAxNiwxN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJiYWcgPSBcIk0xNCw4QTUsNSAwIDAsMSA5LDEzQTUsNSAwIDAsMSA0LDhBNSw1IDAgMCwxIDksM0E1LDUgMCAwLDEgMTQsOE0xMC40NiwxNS41NUwxMywxOC4wM0wxMSwxOC4wNUw3LjUsMjEuNThMNiwyMC4wOUwxMC40NiwxNS41NU0xNywyQzE4LjA4LDIgMTksMi44OCAxOSw0QzE5LDUuMDggMTguMTIsNiAxNyw2QzE1LjkyLDYgMTUsNS4xMiAxNSw0QzE1LDIuOTIgMTUuODksMiAxNywyTTE0LjQxLDE1SDExLjU5TDE3LjI5LDIwLjcxTDE4LjcxLDE5LjI5TDE0LjQxLDE1TTE1LjEyLDE0LjI5TDE5LjQxLDE4LjU5TDE5LjYzLDE4LjhDMTkuODYsMTguNDIgMjAsMTggMjAsMTcuNVY5LjVBMi41LDIuNSAwIDAsMCAxNy41LDdBMi41LDIuNSAwIDAsMCAxNSw5LjVWMTQuMTdMMTUuMTIsMTQuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyYmFsbG9vbiA9IFwiTTExLDIzQTIsMiAwIDAsMSA5LDIxVjE5SDE1VjIxQTIsMiAwIDAsMSAxMywyM0gxMU0xMiwxQzEyLjcxLDEgMTMuMzksMS4wOSAxNC4wNSwxLjI2QzE1LjIyLDIuODMgMTYsNS43MSAxNiw5QzE2LDExLjI4IDE1LjYyLDEzLjM3IDE1LDE2QTIsMiAwIDAsMSAxMywxOEgxMUEyLDIgMCAwLDEgOSwxNkM4LjM4LDEzLjM3IDgsMTEuMjggOCw5QzgsNS43MSA4Ljc4LDIuODMgOS45NSwxLjI2QzEwLjYxLDEuMDkgMTEuMjksMSAxMiwxTTIwLDhDMjAsMTEuMTggMTguMTUsMTUuOTIgMTUuNDYsMTcuMjFDMTYuNDEsMTUuMzkgMTcsMTEuODMgMTcsOUMxNyw2LjE3IDE2LjQxLDMuNjEgMTUuNDYsMS43OUMxOC4xNSwzLjA4IDIwLDQuODIgMjAsOE00LDhDNCw0LjgyIDUuODUsMy4wOCA4LjU0LDEuNzlDNy41OSwzLjYxIDcsNi4xNyA3LDlDNywxMS44MyA3LjU5LDE1LjM5IDguNTQsMTcuMjFDNS44NSwxNS45MiA0LDExLjE4IDQsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJiYWxsb29uT3V0bGluZSA9IFwiTTExIDIzQzkuOSAyMyA5IDIyLjEgOSAyMVYxOUgxNVYyMUMxNSAyMi4xIDE0LjEgMjMgMTMgMjNIMTFNMTIgM0MxMi4yOCAzIDEyLjU1IDMgMTIuODEgMy4wNUMxMy40MiA0LjIyIDE0IDYuMjYgMTQgOUMxNCAxMS4xIDEzIDE2IDEzIDE2SDExQzExIDE2IDEwIDExLjEgMTAgOUMxMCA2LjI2IDEwLjU4IDQuMjIgMTEuMTkgMy4wNUMxMS40NSAzIDExLjcyIDMgMTIgM00xMiAxQzExLjI5IDEgMTAuNjEgMS4wOSA5Ljk1IDEuMjZDOC43OCAyLjgzIDggNS43MSA4IDlDOCAxMS4yOCA4LjM4IDEzLjM3IDkgMTZDOSAxNy4xIDkuOSAxOCAxMSAxOEgxM0MxNC4xIDE4IDE1IDE3LjEgMTUgMTZDMTUuNjIgMTMuMzcgMTYgMTEuMjggMTYgOUMxNiA1LjcxIDE1LjIyIDIuODMgMTQuMDUgMS4yNkMxMy4zOSAxLjA5IDEyLjcxIDEgMTIgMU00IDhDNCAxMS4xOCA1Ljg1IDE1LjkyIDguNTQgMTcuMjFDOCAxNi4yMSA3LjYxIDE0LjY3IDcuMzQgMTNDNi41NSAxMS41MyA2IDkuNjIgNiA4QzYgNi42NiA2LjQ0IDUuNjcgNy40NyA0LjhDNy43MyAzLjY3IDguMDkgMi42NSA4LjU0IDEuNzlDNS44NSAzLjA4IDQgNC44MiA0IDhNMTUuNDYgMS43OUMxNS45MSAyLjY1IDE2LjI3IDMuNjcgMTYuNTMgNC44QzE3LjU2IDUuNjcgMTggNi42NiAxOCA4QzE4IDkuNjIgMTcuNDUgMTEuNTMgMTYuNjYgMTNDMTYuMzkgMTQuNjcgMTYgMTYuMjEgMTUuNDYgMTcuMjFDMTguMTUgMTUuOTIgMjAgMTEuMTggMjAgOFMxOC4xNSAzLjA4IDE1LjQ2IDEuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycGxhbmUgPSBcIk0yMSwxNlYxNEwxMyw5VjMuNUExLjUsMS41IDAgMCwwIDExLjUsMkExLjUsMS41IDAgMCwwIDEwLDMuNVY5TDIsMTRWMTZMMTAsMTMuNVYxOUw4LDIwLjVWMjJMMTEuNSwyMUwxNSwyMlYyMC41TDEzLDE5VjEzLjVMMjEsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycGxhbmVMYW5kaW5nID0gXCJNMi41LDE5SDIxLjVWMjFIMi41VjE5TTkuNjgsMTMuMjdMMTQuMDMsMTQuNDNMMTkuMzQsMTUuODVDMjAuMTQsMTYuMDYgMjAuOTYsMTUuNTkgMjEuMTgsMTQuNzlDMjEuMzksMTQgMjAuOTIsMTMuMTcgMjAuMTIsMTIuOTVMMTQuODEsMTEuNTNMMTIuMDUsMi41TDEwLjEyLDJWMTAuMjhMNS4xNSw4Ljk1TDQuMjIsNi42M0wyLjc3LDYuMjRWMTEuNDFMNC4zNywxMS44NEw5LjY4LDEzLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpcnBsYW5lT2ZmID0gXCJNMy4xNSw1LjI3TDguMTMsMTAuMjZMMi4xNSwxNFYxNkwxMC4xNSwxMy41VjE5TDguMTUsMjAuNVYyMkwxMS42NSwyMUwxNS4xNSwyMlYyMC41TDEzLjE1LDE5VjE1LjI3TDE4Ljg3LDIxTDIwLjE1LDE5LjczTDQuNDIsNE0xMy4xNSw5VjMuNUExLjUsMS41IDAgMCwwIDExLjY1LDJBMS41LDEuNSAwIDAsMCAxMC4xNSwzLjVWNy4xOEwxNy45NywxNUwyMS4xNSwxNlYxNEwxMy4xNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpcnBsYW5lVGFrZW9mZiA9IFwiTTIuNSwxOUgyMS41VjIxSDIuNVYxOU0yMi4wNyw5LjY0QzIxLjg2LDguODQgMjEuMDMsOC4zNiAyMC4yMyw4LjU4TDE0LjkyLDEwTDgsMy41N0w2LjA5LDQuMDhMMTAuMjMsMTEuMjVMNS4yNiwxMi41OEwzLjI5LDExLjA0TDEuODQsMTEuNDNMMy42NiwxNC41OUw0LjQzLDE1LjkyTDYuMDMsMTUuNUwxMS4zNCwxNC4wN0wxNS42OSwxMi45MUwyMSwxMS41QzIxLjgxLDExLjI2IDIyLjI4LDEwLjQ0IDIyLjA3LDkuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycG9ydCA9IFwiTTE0Ljk3LDUuOTJDMTQuODMsNS40MSAxNC4zLDUuMSAxMy43OSw1LjI0TDEwLjM5LDYuMTVMNS45NSwyLjAzTDQuNzIsMi4zNkw3LjM4LDYuOTVMNC4xOSw3LjhMMi45Myw2LjgyTDIsNy4wN0wzLjY2LDkuOTVMMTQuMjgsNy4xMUMxNC44LDYuOTYgMTUuMSw2LjQzIDE0Ljk3LDUuOTJNMjEsMTBMMjAsMTJIMTVMMTQsMTBMMTUsOUgxN1Y3SDE4VjlIMjBMMjEsMTBNMjIsMjBWMjJIMlYyMEgxNVYxM0gyMFYyMEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybSA9IFwiTTEyLDIwQTcsNyAwIDAsMSA1LDEzQTcsNyAwIDAsMSAxMiw2QTcsNyAwIDAsMSAxOSwxM0E3LDcgMCAwLDEgMTIsMjBNMTIsNEE5LDkgMCAwLDAgMywxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiw0TTEyLjUsOEgxMVYxNEwxNS43NSwxNi44NUwxNi41LDE1LjYyTDEyLjUsMTMuMjVWOE03Ljg4LDMuMzlMNi42LDEuODZMMiw1LjcxTDMuMjksNy4yNEw3Ljg4LDMuMzlNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1CZWxsID0gXCJNMTUsMTguNjZWMjJINVYxOC42NkM4LjA5LDIwLjQ1IDExLjkxLDIwLjQ1IDE1LDE4LjY2TTIyLDRBMiwyIDAgMCwwIDIwLDJDMTkuNjksMiAxOS4zOSwyLjA3IDE5LjEyLDIuMjFDMTguODIsMi4zNiAxOC41NiwyLjU4IDE4LjM2LDIuODVDMTcuNzIsMy43NSAxNy45NCw1IDE4Ljg1LDUuNjRDMTkuMTgsNS44NyAxOS41OSw2IDIwLDZDMjAuMDgsNiAyMC4xNiw2IDIwLjI0LDZDMjEuOTcsMTAuNDMgMjAuNjYsMTUuNDYgMTcsMTguNUMxNi42OCwxOC43NSAxNi4zNSwxOSAxNiwxOS4yMlYyMUgxN1YxOS43NEMyMC4xNCwxNy41IDIyLDEzLjg2IDIyLDEwQzIyLDguNSAyMS43Miw3IDIxLjE3LDUuNjJDMjEuNjksNS4yNCAyMiw0LjY0IDIyLDRNMTgsMTBBOCw4IDAgMCwxIDEwLDE4QTgsOCAwIDAsMSAyLDEwQTgsOCAwIDAsMSAxMCwyQTgsOCAwIDAsMSAxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybUNoZWNrID0gXCJNMTAuNTQsMTQuNTNMOC40MSwxMi40TDcuMzUsMTMuNDZMMTAuNTMsMTYuNjRMMTYuNTMsMTAuNjRMMTUuNDcsOS41OEwxMC41NCwxNC41M00xMiwyMEE3LDcgMCAwLDEgNSwxM0E3LDcgMCAwLDEgMTIsNkE3LDcgMCAwLDEgMTksMTNBNyw3IDAgMCwxIDEyLDIwTTEyLDRBOSw5IDAgMCwwIDMsMTNBOSw5IDAgMCwwIDEyLDIyQTksOSAwIDAsMCAyMSwxM0E5LDkgMCAwLDAgMTIsNE03Ljg4LDMuMzlMNi42LDEuODZMMiw1LjcxTDMuMjksNy4yNEw3Ljg4LDMuMzlNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1MaWdodCA9IFwiTTYsNi45TDMuODcsNC43OEw1LjI4LDMuMzdMNy40LDUuNUw2LDYuOU0xMywxVjRIMTFWMUgxM00yMC4xMyw0Ljc4TDE4LDYuOUwxNi42LDUuNUwxOC43MiwzLjM3TDIwLjEzLDQuNzhNNC41LDEwLjVWMTIuNUgxLjVWMTAuNUg0LjVNMTkuNSwxMC41SDIyLjVWMTIuNUgxOS41VjEwLjVNNiwyMEgxOEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgNiwyME0xMiw1QTYsNiAwIDAsMSAxOCwxMVYxOUg2VjExQTYsNiAwIDAsMSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTGlnaHRPZmYgPSBcIk0xOCAxNC44TDkgNS44QzkuOSA1LjMgMTAuOSA1IDEyIDVDMTUuMyA1IDE4IDcuNyAxOCAxMVYxNC44TTIwLjEgNC44TDE4LjcgMy40TDE2LjYgNS41TDE4IDYuOUwyMC4xIDQuOE0xOS41IDEwLjVWMTIuNUgyMi41VjEwLjVIMTkuNU00LjUgMTAuNUgxLjVWMTIuNUg0LjVWMTAuNU0xLjEgM0w2LjYgOC41QzYuMiA5LjIgNiAxMC4xIDYgMTFWMTlIMTcuMUwxOC4xIDIwSDZDNC45IDIwIDQgMjAuOSA0IDIySDIwLjFMMjAuOCAyMi43TDIyLjEgMjEuNEwyLjQgMS43TDEuMSAzTTEzIDFIMTFWNEgxM1YxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTGlnaHRPZmZPdXRsaW5lID0gXCJNMTAuNSA3LjNMOSA1LjhDOS45IDUuMyAxMC45IDUgMTIgNUMxNS4zIDUgMTggNy43IDE4IDExVjE0LjhMMTYgMTIuOFYxMUMxNiA4LjggMTQuMiA3IDEyIDdDMTEuNSA3IDExIDcuMSAxMC41IDcuM00yMC4xIDQuOEwxOC43IDMuNEwxNi42IDUuNUwxOCA2LjlMMjAuMSA0LjhNMTkuNSAxMC41VjEyLjVIMjIuNVYxMC41SDE5LjVNNC41IDEwLjVIMS41VjEyLjVINC41VjEwLjVNMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TDIwLjEgMjJINEM0IDIwLjkgNC45IDIwIDYgMjBIMTguMUwxNy4xIDE5SDZWMTFDNiAxMC4xIDYuMiA5LjIgNi42IDguNUwxLjEgM0wyLjQgMS43TTggMTdIMTUuMUw4LjEgMTBDOC4xIDEwLjMgOCAxMC43IDggMTFWMTdNMTMgMUgxMVY0SDEzVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1MaWdodE91dGxpbmUgPSBcIk02LDYuOUwzLjg3LDQuNzhMNS4yOCwzLjM3TDcuNCw1LjVMNiw2LjlNMTMsMVY0SDExVjFIMTNNMjAuMTMsNC43OEwxOCw2LjlMMTYuNiw1LjVMMTguNzIsMy4zN0wyMC4xMyw0Ljc4TTQuNSwxMC41VjEyLjVIMS41VjEwLjVINC41TTE5LjUsMTAuNUgyMi41VjEyLjVIMTkuNVYxMC41TTYsMjBIMThBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDYsMjBNMTIsNUE2LDYgMCAwLDEgMTgsMTFWMTlINlYxMUE2LDYgMCAwLDEgMTIsNU0xMiw3QTQsNCAwIDAsMCA4LDExVjE3SDE2VjExQTQsNCAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTXVsdGlwbGUgPSBcIk05LjI5LDMuMjVMNS4xNiw2LjcyTDQsNS4zNEw4LjE0LDEuODdMOS4yOSwzLjI1TTIyLDUuMzVMMjAuODQsNi43M0wxNi43LDMuMjVMMTcuODYsMS44N0wyMiw1LjM1TTEzLDRBOCw4IDAgMCwxIDIxLDEyQTgsOCAwIDAsMSAxMywyMEE4LDggMCAwLDEgNSwxMkE4LDggMCAwLDEgMTMsNE0xMyw2QTYsNiAwIDAsMCA3LDEyQTYsNiAwIDAsMCAxMywxOEE2LDYgMCAwLDAgMTksMTJBNiw2IDAgMCwwIDEzLDZNMTIsNy41SDEzLjVWMTIuMDNMMTYuNzIsMTMuNUwxNi4xLDE0Ljg2TDEyLDEzVjcuNU0xLDE0QzEsMTEuNSAyLjEzLDkuMyAzLjkxLDcuODNDMy4zMyw5LjEgMywxMC41IDMsMTJMMy4wNiwxMy4xM0wzLDE0QzMsMTYuMjggNC4yNywxOC4yNiA2LjE0LDE5LjI4QzcuNDQsMjAuNSA5LjA3LDIxLjM5IDEwLjg5LDIxLjc4QzEwLjI4LDIxLjkyIDkuNjUsMjIgOSwyMkE4LDggMCAwLDEgMSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybU5vdGUgPSBcIk0xNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJMMTcuNCwxLjg2TTYuNiwxLjg2TDIsNS43MUwzLjI5LDcuMjRMNy44OCwzLjM5TDYuNiwxLjg2TTEyLDRBOSw5IDAgMCwwIDMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLjMzLDIyIDEyLjY3LDIyIDEzLDIxLjk0VjE5Ljk0QzEyLjY3LDIwIDEyLjMzLDIwIDEyLDIwQTcsNyAwIDAsMSA1LDEzQTcsNyAwIDAsMSAxMiw2QzE1LjEsNiAxNy44Myw4LjAzIDE4LjcxLDExSDIwLjc4QzE5Ljg1LDYuOSAxNi4yLDQgMTIsNE0yMywxNUgyMFYyMC41QTIuNSwyLjUgMCAwLDEgMTcuNSwyM0EyLjUsMi41IDAgMCwxIDE1LDIwLjVBMi41LDIuNSAwIDAsMSAxNy41LDE4QzE4LjA0LDE4IDE4LjU3LDE4LjE4IDE5LDE4LjVWMTNIMjNWMTVNMTEuNSw4VjEzLjI1TDcuNSwxNS42Mkw4LjI1LDE2Ljg1TDEzLDE0VjhIMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybU5vdGVPZmYgPSBcIk0xOSwxM1YxNS44TDIwLDE2LjhWMTVIMjNWMTNIMTlNMi4zOCwxLjczTDEuMTEsM0wzLDQuODhMMiw1LjcxTDMuMjksNy4yNEw0LjQxLDYuM0w1LjIxLDcuMUMxLjk1LDEwLjg1IDIuMzUsMTYuNTQgNi4xMSwxOS44QzcuNzQsMjEuMjIgOS44MywyMiAxMiwyMkMxMi4zMywyMiAxMi42NywyMiAxMywyMS45NFYxOS45NEMxMi42NywyMCAxMi4zMywyMCAxMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjM2IDUuNTcsOS43NyA2LjYzLDguNUwxMS40MSwxMy4zTDcuNSwxNS42Mkw4LjI1LDE2Ljg1TDEyLjQ0LDE0LjMzTDE2LjM4LDE4LjI3QzE1LjE0LDE4Ljg4IDE0LjY0LDIwLjM4IDE1LjI1LDIxLjYyQzE1Ljg2LDIyLjg2IDE3LjM2LDIzLjM2IDE4LjYsMjIuNzVDMTkuMDksMjIuNSAxOS41LDIyLjExIDE5LjczLDIxLjYyTDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TDIuMzgsMS43M00xMiw2QzE1LjEsNiAxNy44Myw4LjAzIDE4LjcxLDExSDIwLjc4QzE5Ljg1LDYuOSAxNi4yLDQgMTIsNEMxMC42NSw0IDkuMzEsNC4zIDguMSw0LjlMOS42Miw2LjQyQzEwLjM4LDYuMTQgMTEuMTksNiAxMiw2TTExLjUsOC4zTDEzLDkuOFY4SDExLjVWOC4zTTcuODgsMy4zOUw2LjYsMS44Nkw1Ljc2LDIuNTZMNy4xOCw0TDcuODgsMy4zOU0xNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJMMTcuNCwxLjg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtT2ZmID0gXCJNOCwzLjI4TDYuNiwxLjg2TDUuNzQsMi41N0w3LjE2LDRNMTYuNDcsMTguMzlDMTUuMjYsMTkuMzkgMTMuNywyMCAxMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjMgNS42MSw5Ljc0IDYuNjEsOC41M00yLjkyLDIuMjlMMS42NSwzLjU3TDMsNC45TDEuODcsNS44M0wzLjI5LDcuMjVMNC40LDYuMzFMNS4yLDcuMTFDMy44Myw4LjY5IDMsMTAuNzUgMywxM0E5LDkgMCAwLDAgMTIsMjJDMTQuMjUsMjIgMTYuMzEsMjEuMTcgMTcuODksMTkuOEwyMC4wOSwyMkwyMS4zNiwyMC43M0wzLjg5LDMuMjdMMi45MiwyLjI5TTIyLDUuNzJMMTcuNCwxLjg2TDE2LjExLDMuMzlMMjAuNzEsNy4yNUwyMiw1LjcyTTEyLDZBNyw3IDAgMCwxIDE5LDEzQzE5LDEzLjg0IDE4Ljg0LDE0LjY1IDE4LjU3LDE1LjRMMjAuMDksMTYuOTJDMjAuNjcsMTUuNzMgMjEsMTQuNDEgMjEsMTNBOSw5IDAgMCwwIDEyLDRDMTAuNTksNCA5LjI3LDQuMzMgOC4wOCw0LjkxTDkuNiw2LjQzQzEwLjM1LDYuMTYgMTEuMTYsNiAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtUGFuZWwgPSBcIk0yMCAzSDRDMi45IDMgMiAzLjkgMiA1VjE5QzIgMjAuMSAyLjkgMjEgNCAyMUgyMEMyMS4xIDIxIDIyIDIwLjEgMjIgMTlWNUMyMiAzLjkgMjEuMSAzIDIwIDNNOCAxOUg1VjE3SDhWMTlNOCAxNkg1VjE0SDhWMTZNOCAxM0g1VjExSDhWMTNNMTMuNSAxOUgxMC41VjE3SDEzLjVWMTlNMTMuNSAxNkgxMC41VjE0SDEzLjVWMTZNMTMuNSAxM0gxMC41VjExSDEzLjVWMTNNMTkgMTlIMTZWMTdIMTlWMTlNMTkgMTZIMTZWMTRIMTlWMTZNMTkgMTNIMTZWMTFIMTlWMTNNMTkgOUg1VjVIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVBhbmVsT3V0bGluZSA9IFwiTTkgMTJINlYxMEg5VjEyTTEzLjUgMTBIMTAuNVYxMkgxMy41VjEwTTE4IDEwSDE1VjEySDE4VjEwTTE4IDZINlY5SDE4VjZNMjAgNUg0TDQgMTlMMjAgMTlMMjAgNUwyMCA1TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE5QzIyIDIwLjEgMjEuMSAyMSAyMCAyMUg0QzIuOSAyMSAyIDIwLjEgMiAxOVY1QzIgMy45IDIuOSAzIDQgM0gyME05IDEzSDZWMTVIOVYxM00xMy41IDEzSDEwLjVWMTVIMTMuNVYxM00xOCAxM0gxNVYxNUgxOFYxM005IDE2SDZWMThIOVYxNk0xMy41IDE2SDEwLjVWMThIMTMuNVYxNk0xOCAxNkgxNVYxOEgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVBsdXMgPSBcIk0xMyw5SDExVjEySDhWMTRIMTFWMTdIMTNWMTRIMTZWMTJIMTNNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME0xMiw0QTksOSAwIDAsMCAzLDEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNBOSw5IDAgMCwwIDEyLDRNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TTcuODgsMy4zOUw2LjYsMS44NkwyLDUuNzFMMy4yOSw3LjI0TDcuODgsMy4zOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVNub296ZSA9IFwiTTcuODgsMy4zOUw2LjYsMS44NkwyLDUuNzFMMy4yOSw3LjI0TDcuODgsMy4zOU0yMiw1LjcyTDE3LjQsMS44NkwxNi4xMSwzLjM5TDIwLjcxLDcuMjVMMjIsNS43Mk0xMiw0QTksOSAwIDAsMCAzLDEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNBOSw5IDAgMCwwIDEyLDRNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME05LDExSDEyLjYzTDksMTUuMlYxN0gxNVYxNUgxMS4zN0wxNSwxMC44VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGJ1bSA9IFwiTTEyLDExQTEsMSAwIDAsMCAxMSwxMkExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxMiwxMU0xMiwxNi41QzkuNSwxNi41IDcuNSwxNC41IDcuNSwxMkM3LjUsOS41IDkuNSw3LjUgMTIsNy41QzE0LjUsNy41IDE2LjUsOS41IDE2LjUsMTJDMTYuNSwxNC41IDE0LjUsMTYuNSAxMiwxNi41TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0ID0gXCJNMTMgMTRIMTFWOUgxM00xMyAxOEgxMVYxNkgxM00xIDIxSDIzTDEyIDJMMSAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTMsMTNWN0gxMVYxM0gxM00xMywxN1YxNUgxMVYxN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydENpcmNsZSA9IFwiTTEzLDEzSDExVjdIMTNNMTMsMTdIMTFWMTVIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVDaGVjayA9IFwiTTE4Ljc1IDIyLjE2TDE2IDE5LjE2TDE3LjE2IDE4TDE4Ljc1IDE5LjU5TDIyLjM0IDE2TDIzLjUgMTcuNDFMMTguNzUgMjIuMTZNMTMgMTNWN0gxMVYxM0gxM00xMyAxN1YxNUgxMVYxN0gxM00xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOTEgMTMuMzFDMjEuMzEgMTMuMTEgMjAuNjcgMTMgMjAgMTNDMTYuNjkgMTMgMTQgMTUuNjkgMTQgMTlDMTQgMTkuOTUgMTQuMjIgMjAuODUgMTQuNjIgMjEuNjVDMTMuNzggMjEuODggMTIuOTEgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVDaGVja091dGxpbmUgPSBcIk0xOC43NSAyMi4xNkwxNiAxOS4xNkwxNy4xNiAxOEwxOC43NSAxOS41OUwyMi4zNCAxNkwyMy41IDE3LjQxTDE4Ljc1IDIyLjE2TTExIDE1SDEzVjE3SDExVjE1TTExIDdIMTNWMTNIMTFWN00xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOTIgMTMuMzFDMjEuMzEgMTMuMTEgMjAuNjcgMTMgMTkuOTQgMTNMMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxMi43MSAyMCAxMy4zOSAxOS45MSAxNC4wNSAxOS43NEMxNC4xMyAyMC40MiAxNC4zMyAyMS4wNiAxNC42MiAyMS42NUMxMy43OCAyMS44OCAxMi45IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi40NyAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVPdXRsaW5lID0gXCJNMTEsMTVIMTNWMTdIMTFWMTVNMTEsN0gxM1YxM0gxMVY3TTEyLDJDNi40NywyIDIsNi41IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0RGVjYWdyYW0gPSBcIk0yMywxMkwyMC41Niw5LjIyTDIwLjksNS41NEwxNy4yOSw0LjcyTDE1LjQsMS41NEwxMiwzTDguNiwxLjU0TDYuNzEsNC43MkwzLjEsNS41M0wzLjQ0LDkuMjFMMSwxMkwzLjQ0LDE0Ljc4TDMuMSwxOC40N0w2LjcxLDE5LjI5TDguNiwyMi40N0wxMiwyMUwxNS40LDIyLjQ2TDE3LjI5LDE5LjI4TDIwLjksMTguNDZMMjAuNTYsMTQuNzhMMjMsMTJNMTMsMTdIMTFWMTVIMTNWMTdNMTMsMTNIMTFWN0gxM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydERlY2FncmFtT3V0bGluZSA9IFwiTTIzLDEyTDIwLjU2LDE0Ljc4TDIwLjksMTguNDZMMTcuMjksMTkuMjhMMTUuNCwyMi40NkwxMiwyMUw4LjYsMjIuNDdMNi43MSwxOS4yOUwzLjEsMTguNDdMMy40NCwxNC43OEwxLDEyTDMuNDQsOS4yMUwzLjEsNS41M0w2LjcxLDQuNzJMOC42LDEuNTRMMTIsM0wxNS40LDEuNTRMMTcuMjksNC43MkwyMC45LDUuNTRMMjAuNTYsOS4yMkwyMywxMk0yMC4zMywxMkwxOC41LDkuODlMMTguNzQsNy4xTDE2LDYuNUwxNC41OCw0LjA3TDEyLDUuMThMOS40Miw0LjA3TDgsNi41TDUuMjYsNy4wOUw1LjUsOS44OEwzLjY3LDEyTDUuNSwxNC4xTDUuMjYsMTYuOUw4LDE3LjVMOS40MiwxOS45M0wxMiwxOC44MUwxNC41OCwxOS45MkwxNiwxNy41TDE4Ljc0LDE2Ljg5TDE4LjUsMTQuMUwyMC4zMywxMk0xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydE1pbnVzID0gXCJNMTQgMTlDMTQgMTYuMjEgMTUuOTEgMTMuODcgMTguNSAxMy4yTDEyIDJMMSAyMUgxNC4zNUMxNC4xMyAyMC4zNyAxNCAxOS43IDE0IDE5TTEzIDE4SDExVjE2SDEzVjE4TTEzIDE0SDExVjEwSDEzVjE0TTI0IDE4VjIwSDE2VjE4SDI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0TWludXNPdXRsaW5lID0gXCJNMTEgMTUuNUgxM1YxNy41SDExVjE1LjVNMTQgMTlDMTQgMTguODYgMTQgMTguNzMgMTQgMTguNkg1LjRMMTIgNy4zTDE2LjExIDE0LjQ0QzE2LjYyIDE0IDE3LjIgMTMuNjUgMTcuODQgMTMuNDFMMTIgMy4zTDIgMjAuNkgxNC4yMkMxNC4wOCAyMC4wOSAxNCAxOS41NiAxNCAxOU0xMyAxMC41SDExVjE0LjVIMTNWMTAuNU0xNiAxOFYyMEgyNFYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydE9jdGFnb24gPSBcIk0xMyAxM0gxMVY3SDEzTTExIDE1SDEzVjE3SDExTTE1LjczIDNIOC4yN0wzIDguMjdWMTUuNzNMOC4yNyAyMUgxNS43M0wyMSAxNS43M1Y4LjI3TDE1LjczIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ29uT3V0bGluZSA9IFwiTTguMjcsM0wzLDguMjdWMTUuNzNMOC4yNywyMUgxNS43M0MxNy41LDE5LjI0IDIxLDE1LjczIDIxLDE1LjczVjguMjdMMTUuNzMsM005LjEsNUgxNC45TDE5LDkuMVYxNC45TDE0LjksMTlIOS4xTDUsMTQuOVY5LjFNMTEsMTVIMTNWMTdIMTFWMTVNMTEsN0gxM1YxM0gxMVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ3JhbSA9IFwiTTIuMiwxNi4wNkwzLjg4LDEyTDIuMiw3Ljk0TDYuMjYsNi4yNkw3Ljk0LDIuMkwxMiwzLjg4TDE2LjA2LDIuMkwxNy43NCw2LjI2TDIxLjgsNy45NEwyMC4xMiwxMkwyMS44LDE2LjA2TDE3Ljc0LDE3Ljc0TDE2LjA2LDIxLjhMMTIsMjAuMTJMNy45NCwyMS44TDYuMjYsMTcuNzRMMi4yLDE2LjA2TTEzLDE3VjE1SDExVjE3SDEzTTEzLDEzVjdIMTFWMTNIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ3JhbU91dGxpbmUgPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNk00LjgxLDlMNi4wNSwxMkw0LjgxLDE1TDcuNzksMTYuMjFMOSwxOS4xOUwxMiwxNy45NUwxNSwxOS4xOUwxNi4yMSwxNi4yMUwxOS4xOSwxNUwxNy45NSwxMkwxOS4xOSw5TDE2LjIxLDcuNzlMMTUsNC44MUwxMiw2LjA1TDksNC44MUw3Ljc5LDcuNzlMNC44MSw5TTExLDE1SDEzVjE3SDExVjE1TTExLDdIMTNWMTNIMTFWN1wiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0T3V0bGluZSA9IFwiTTEyLDJMMSwyMUgyM00xMiw2TDE5LjUzLDE5SDQuNDdNMTEsMTBWMTRIMTNWMTBNMTEsMTZWMThIMTNWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydFBsdXMgPSBcIk0xNCAxOUMxNCAxNi4yMSAxNS45MSAxMy44NyAxOC41IDEzLjJMMTIgMkwxIDIxSDE0LjM1QzE0LjEzIDIwLjM3IDE0IDE5LjcgMTQgMTlNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWMTBIMTNWMTRNMjEgMTVWMThIMjRWMjBIMjFWMjNIMTlWMjBIMTZWMThIMTlWMTVIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRQbHVzT3V0bGluZSA9IFwiTTExIDE1LjVIMTNWMTcuNUgxMVYxNS41TTE0IDE5QzE0IDE4Ljg2IDE0IDE4LjczIDE0IDE4LjZINS40TDEyIDcuM0wxNi4xMSAxNC40NEMxNi42MiAxNCAxNy4yIDEzLjY1IDE3Ljg0IDEzLjQxTDEyIDMuM0wyIDIwLjZIMTQuMjJDMTQuMDggMjAuMDkgMTQgMTkuNTYgMTQgMTlNMTMgMTAuNUgxMVYxNC41SDEzVjEwLjVNMTkgMTVWMThIMTZWMjBIMTlWMjNIMjFWMjBIMjRWMThIMjFWMTVIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRSZW1vdmUgPSBcIk0xNCAxOUMxNCAxNi4yMSAxNS45MSAxMy44NyAxOC41IDEzLjJMMTIgMkwxIDIxSDE0LjM1QzE0LjEzIDIwLjM3IDE0IDE5LjcgMTQgMTlNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWMTBIMTNWMTRNMjMuNTQgMTYuODhMMjEuNDEgMTlMMjMuNTQgMjEuMTJMMjIuMTIgMjIuNTRMMjAgMjAuNDFMMTcuODggMjIuNTRMMTYuNDcgMjEuMTJMMTguNTkgMTlMMTYuNDcgMTYuODhMMTcuODggMTUuNDdMMjAgMTcuNTlMMjIuMTIgMTUuNDZMMjMuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRSZW1vdmVPdXRsaW5lID0gXCJNMTEgMTUuNUgxM1YxNy41SDExVjE1LjVNMTQgMTlDMTQgMTguODYgMTQgMTguNzMgMTQgMTguNkg1LjRMMTIgNy4zTDE2LjExIDE0LjQ0QzE2LjYyIDE0IDE3LjIgMTMuNjUgMTcuODQgMTMuNDFMMTIgMy4zTDIgMjAuNkgxNC4yMkMxNC4wOCAyMC4wOSAxNCAxOS41NiAxNCAxOU0xMyAxMC41SDExVjE0LjVIMTNWMTAuNU0yMi4xMiAxNS40NkwyMCAxNy41OUwxNy44OCAxNS40NkwxNi40NyAxNi44OEwxOC41OSAxOUwxNi40NyAyMS4xMkwxNy44OCAyMi41NEwyMCAyMC40MUwyMi4xMiAyMi41NEwyMy41NCAyMS4xMkwyMS40MSAxOUwyMy41NCAxNi44OEwyMi4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydFJob21idXMgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTEgN0gxM1YxM0gxMVY3TTExIDE1SDEzVjE3SDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0UmhvbWJ1c091dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwyMCAxMkwxMiAyMEw0IDEyTTExIDdWMTNIMTNWN00xMSAxNVYxN0gxM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGllbiA9IFwiTTEyLDNDMTYuOTcsMyAyMSw2LjU4IDIxLDExQzIxLDE1LjQyIDE1LDIxIDEyLDIxQzksMjEgMywxNS40MiAzLDExQzMsNi41OCA3LjAzLDMgMTIsM00xMC4zMSwxMC45M0M5LjI5LDkuMjkgNy40Nyw4LjU4IDYuMjUsOS4zNEM1LjAzLDEwLjEgNC44NywxMi4wNSA1Ljg5LDEzLjY5QzYuOTIsMTUuMzMgOC43NCwxNi4wNCA5Ljk2LDE1LjI4QzExLjE4LDE0LjUgMTEuMzMsMTIuNTcgMTAuMzEsMTAuOTNNMTMuNjksMTAuOTNDMTIuNjcsMTIuNTcgMTIuODIsMTQuNSAxNC4wNCwxNS4yOEMxNS4yNiwxNi4wNCAxNy4wOCwxNS4zMyAxOC4xMSwxMy42OUMxOS4xMywxMi4wNSAxOC45NywxMC4xIDE3Ljc1LDkuMzRDMTYuNTMsOC41OCAxNC43MSw5LjI5IDEzLjY5LDEwLjkzTTEyLDE3Ljc1QzEwLDE3Ljc1IDkuNSwxNyA5LjUsMTdDOS41LDE3LjAzIDEwLDE5IDEyLDE5QzE0LDE5IDE0LjUsMTcgMTQuNSwxN0MxNC41LDE3IDE0LDE3Ljc1IDEyLDE3Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWVuT3V0bGluZSA9IFwiTTEwLjMxIDEwLjkzQzExLjMzIDEyLjU3IDExLjE4IDE0LjUgOS45NiAxNS4yOEM4Ljc0IDE2LjA0IDYuOTIgMTUuMzMgNS44OSAxMy42OUM0Ljg3IDEyLjA1IDUuMDMgMTAuMSA2LjI1IDkuMzRDNy40NyA4LjU4IDkuMjkgOS4yOSAxMC4zMSAxMC45M00xMiAxNy43NUMxNCAxNy43NSAxNC41IDE3IDE0LjUgMTdDMTQuNSAxNyAxNCAxOSAxMiAxOUMxMCAxOSA5LjUgMTcuMDMgOS41IDE3QzkuNSAxNyAxMCAxNy43NSAxMiAxNy43NU0xNy43NSA5LjM0QzE4Ljk3IDEwLjEgMTkuMTMgMTIuMDUgMTguMTEgMTMuNjlDMTcuMDggMTUuMzMgMTUuMjYgMTYuMDQgMTQuMDQgMTUuMjhDMTIuODIgMTQuNSAxMi42NyAxMi41NyAxMy42OSAxMC45M0MxNC43MSA5LjI5IDE2LjUzIDguNTggMTcuNzUgOS4zNE0xMiAyMEMxNC41IDIwIDIwIDE0Ljg2IDIwIDExQzIwIDcuMTQgMTYuNDEgNCAxMiA0QzcuNTkgNCA0IDcuMTQgNCAxMUM0IDE0Ljg2IDkuNSAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjA0IDIyIDExQzIyIDE1LjA4IDE2LjMyIDIyIDEyIDIyQzcuNjggMjIgMiAxNS4wOCAyIDExQzIgNi4wNCA2LjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduSG9yaXpvbnRhbENlbnRlciA9IFwiTTIwIDE5SDEzVjIySDExVjE5SDRWMTNIMTFWMTFIN1Y1SDExVjJIMTNWNUgxN1YxMUgxM1YxM0gyMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnbkhvcml6b250YWxMZWZ0ID0gXCJNMjIgMTNWMTlINlYxM0gyMk02IDVWMTFIMTZWNUg2TTIgMlYyMkg0VjJIMlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduSG9yaXpvbnRhbFJpZ2h0ID0gXCJNMTggMTNWMTlIMlYxM0gxOE04IDVWMTFIMThWNUg4TTIwIDJWMjJIMjJWMkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnblZlcnRpY2FsQm90dG9tID0gXCJNMTEgMThINVYySDExVjE4TTE5IDhIMTNWMThIMTlWOE0yMiAyMEgyVjIySDIyVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduVmVydGljYWxDZW50ZXIgPSBcIk01IDIwVjEzSDJWMTFINVY0SDExVjExSDEzVjdIMTlWMTFIMjJWMTNIMTlWMTdIMTNWMTNIMTFWMjBINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnblZlcnRpY2FsVG9wID0gXCJNMTEgMjJINVY2SDExVjIyTTE5IDZIMTNWMTZIMTlWNk0yMiAySDJWNEgyMlYyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsbEluY2x1c2l2ZSA9IFwiTTE4LjYsNi42MkMxNy4xNiw2LjYyIDE1LjgsNy4xOCAxNC44Myw4LjE1TDcuOCwxNC4zOUM3LjE2LDE1LjAzIDYuMzEsMTUuMzggNS40LDE1LjM4QzMuNTMsMTUuMzggMiwxMy44NyAyLDEyQzIsMTAuMTMgMy41Myw4LjYyIDUuNCw4LjYyQzYuMzEsOC42MiA3LjE2LDguOTcgNy44NCw5LjY1TDguOTcsMTAuNjVMMTAuNSw5LjMxTDkuMjIsOC4yQzguMiw3LjE4IDYuODQsNi42MiA1LjQsNi42MkMyLjQyLDYuNjIgMCw5LjA0IDAsMTJDMCwxNC45NiAyLjQyLDE3LjM4IDUuNCwxNy4zOEM2Ljg0LDE3LjM4IDguMiwxNi44MiA5LjE3LDE1Ljg1TDE2LjIsOS42MUMxNi44NCw4Ljk3IDE3LjY5LDguNjIgMTguNiw4LjYyQzIwLjQ3LDguNjIgMjIsMTAuMTMgMjIsMTJDMjIsMTMuODcgMjAuNDcsMTUuMzggMTguNiwxNS4zOEMxNy43LDE1LjM4IDE2Ljg0LDE1LjAzIDE2LjE2LDE0LjM1TDE1LDEzLjM0TDEzLjUsMTQuNjhMMTQuNzgsMTUuOEMxNS44LDE2LjgxIDE3LjE1LDE3LjM3IDE4LjYsMTcuMzdDMjEuNTgsMTcuMzcgMjQsMTQuOTYgMjQsMTJDMjQsOSAyMS41OCw2LjYyIDE4LjYsNi42MlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGxlcmd5ID0gXCJNMTkuNzUgNS4zM0ExLjI1IDEuMjUgMCAwIDAgMTguNSA2LjU4VjExLjE3SDE3LjY3VjQuMDhBMS4yNSAxLjI1IDAgMCAwIDE1LjE3IDQuMDhWMTEuMTdIMTQuMzNWMy4yNUExLjI1IDEuMjUgMCAxIDAgMTEuODMgMy4yNVYxMS4xN0gxMVY1LjMzQTEuMjUgMS4yNSAwIDAgMCA4LjUgNS4zM1YxNS4yNkw0LjkxIDEzLjI2QTEgMSAwIDAgMCA0LjQxIDEzLjEyQTEgMSAwIDAgMCAzLjc1IDEzLjM3TDIuNjcgMTQuMzdMOS4yMSAyMUEzLjI5IDMuMjkgMCAwIDAgMTEuNTggMjJIMTcuNjdBMy4zMyAzLjMzIDAgMCAwIDIxIDE4LjY3VjYuNThBMS4yNSAxLjI1IDAgMCAwIDE5Ljc1IDUuMzNNMTEgMTVBMSAxIDAgMSAxIDEyIDE0QTEgMSAwIDAgMSAxMSAxNU0xMyAxOEExIDEgMCAxIDEgMTQgMTdBMSAxIDAgMCAxIDEzIDE4TTE4IDE2QTEgMSAwIDEgMSAxOSAxNUExIDEgMCAwIDEgMTggMTZNMTcgMTlBMSAxIDAgMSAxIDE4IDE4QTEgMSAwIDAgMSAxNyAxOU0xNSAxNUExIDEgMCAxIDEgMTYgMTRBMSAxIDAgMCAxIDE1IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhID0gXCJNMTguMDgsMTcuOEMxNy42MiwxNy45MyAxNy4yMSwxOCAxNi44NSwxOEMxNS42NSwxOCAxNC44NCwxNy4xMiAxNC40MywxNS4zNUgxNC4zOEMxMy4zOSwxNy4yNiAxMiwxOC4yMSAxMC4yNSwxOC4yMUM4Ljk0LDE4LjIxIDcuODksMTcuNzIgNy4xLDE2LjczQzYuMzEsMTUuNzQgNS45MiwxNC41IDUuOTIsMTNDNS45MiwxMS4yNSA2LjM3LDkuODUgNy4yNiw4Ljc2QzguMTUsNy42NyA5LjM2LDcuMTIgMTAuODksNy4xMkMxMS43MSw3LjEyIDEyLjQ1LDcuMzUgMTMuMDksNy44QzEzLjczLDguMjYgMTQuMjIsOC45IDE0LjU2LDkuNzNIMTQuNkwxNS4zMSw3LjMzSDE3Ljg3TDE1LjczLDEyLjY1QzE1Ljk3LDEzLjg5IDE2LjIyLDE0Ljc0IDE2LjUsMTUuMTlDMTYuNzQsMTUuNjQgMTcuMDgsMTUuODcgMTcuNSwxNS44N0MxNy43NCwxNS44NyAxNy45MywxNS44MyAxOC4xLDE1Ljc2TDE4LjA4LDE3LjhNMTMuODIsMTIuNTZDMTMuNjEsMTEuNDMgMTMuMjcsMTAuNTUgMTIuODEsOS45NUMxMi4zNiw5LjM0IDExLjgxLDkuMDQgMTEuMTgsOS4wNEMxMC4zNiw5LjA0IDkuNyw5LjQxIDkuMjEsMTAuMTRDOC43MiwxMC44OCA4LjUsMTEuNzkgOC41LDEyLjg2QzguNSwxMy44NCA4LjY5LDE0LjY1IDkuMTIsMTUuMzFDOS41NCwxNS45NyAxMC4xMSwxNi4yOSAxMC44MiwxNi4yOUMxMS40MiwxNi4yOSAxMS45NywxNiAxMi40NiwxNS40NUMxMi45NiwxNC44OCAxMy4zNywxNC4wNSAxMy43LDEyLjk2TDEzLjgyLDEyLjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxN0gxMVYxM0gxM1YxN0gxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUFCb3ggPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQUJveE91dGxpbmUgPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINU0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE3SDEzVjEzSDExVjE3SDlWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjExSDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFBQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQUNpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE3SDEzVjEzSDExVjE3SDlWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjExSDEzVjlIMTFNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUIgPSBcIk0xNSwxMC41VjlBMiwyIDAgMCwwIDEzLDdIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUMxNSwxMi43IDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDExLjMgMTUsMTAuNU0xMywxNUgxMVYxM0gxM1YxNU0xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQkJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTUsMTAuNVY5QTIsMiAwIDAsMCAxMyw3SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjEzLjVDMTUsMTIuNyAxNC4zLDEyIDEzLjUsMTJDMTQuMywxMiAxNSwxMS4zIDE1LDEwLjVNMTMsMTVIMTFWMTNIMTNWMTVNMTMsMTFIMTFWOUgxM1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUJCb3hPdXRsaW5lID0gXCJNMTUsMTAuNUMxNSwxMS4zIDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDEyLjcgMTUsMTMuNVYxNUEyLDIgMCAwLDEgMTMsMTdIOVY3SDEzQTIsMiAwIDAsMSAxNSw5VjEwLjVNMTMsMTVWMTNIMTFWMTVIMTNNMTMsMTFWOUgxMVYxMUgxM00zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUJDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xNSwxMC41VjlBMiwyIDAgMCwwIDEzLDdIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUMxNSwxMi43IDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDExLjMgMTUsMTAuNU0xMywxNUgxMVYxM0gxM1YxNU0xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQkNpcmNsZU91dGxpbmUgPSBcIk0xNSwxMC41QzE1LDExLjMgMTQuMywxMiAxMy41LDEyQzE0LjMsMTIgMTUsMTIuNyAxNSwxMy41VjE1QTIsMiAwIDAsMSAxMywxN0g5VjdIMTNBMiwyIDAgMCwxIDE1LDlWMTAuNU0xMywxNVYxM0gxMVYxNUgxM00xMywxMVY5SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUMgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQm94T3V0bGluZSA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1TTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTBIMTNWOUgxMVYxNUgxM1YxNEgxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUNDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQ2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTBIMTNWOUgxMVYxNUgxM1YxNEgxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFEID0gXCJNOSw3VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhREJveCA9IFwiTTksN1YxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0g5TTExLDlIMTNWMTVIMTFWOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhREJveE91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDlWN00xMSw5VjE1SDEzVjlIMTFNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFEQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNOSw3VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDlWN00xMSw5VjE1SDEzVjlIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRSA9IFwiTTksN1YxN0gxNVYxNUgxMVYxM0gxNVYxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVCb3ggPSBcIk05LDdWMTdIMTVWMTVIMTFWMTNIMTVWMTFIMTFWOUgxNVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVCb3hPdXRsaW5lID0gXCJNOSw3SDE1VjlIMTFWMTFIMTVWMTNIMTFWMTVIMTVWMTdIOVY3TTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRUNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTksN1YxN0gxNVYxNUgxMVYxM0gxNVYxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDE1VjlIMTFWMTFIMTVWMTNIMTFWMTVIMTVWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUYgPSBcIk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQm94ID0gXCJNOSw3VjE3SDExVjEzSDE0VjExSDExVjlIMTVWN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQm94T3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDE0VjEzSDExVjE3SDlWN00zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUZDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDE0VjEzSDExVjE3SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFHID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTFIMTNWMTVIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0JveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjExSDEzVjE1SDExVjlIMTVWN0gxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0JveE91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTVIMTNWMTFIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFHQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTFIMTNWMTVIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0NpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTVIMTNWMTFIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSCA9IFwiTTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhCb3ggPSBcIk05LDdWMTdIMTFWMTNIMTNWMTdIMTVWN0gxM1YxMUgxMVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhCb3hPdXRsaW5lID0gXCJNOSw3SDExVjExSDEzVjdIMTVWMTdIMTNWMTNIMTFWMTdIOVY3TTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExVjExSDEzVjdIMTVWMTdIMTNWMTNIMTFWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUkgPSBcIk0xNCw3VjlIMTNWMTVIMTRWMTdIMTBWMTVIMTFWOUgxMFY3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSUJveCA9IFwiTTE0LDdIMTBWOUgxMVYxNUgxMFYxN0gxNFYxNUgxM1Y5SDE0VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUlCb3hPdXRsaW5lID0gXCJNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFJQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTQsN0gxMFY5SDExVjE1SDEwVjE3SDE0VjE1SDEzVjlIMTRWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUlDaXJjbGVPdXRsaW5lID0gXCJNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKID0gXCJNMTMsN1YxNUgxMVYxNEg5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUpCb3ggPSBcIk0xMyw3VjE1SDExVjE0SDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKQm94T3V0bGluZSA9IFwiTTEzLDdIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjE0SDExVjE1SDEzVjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSkNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEzLDdWMTVIMTFWMTRIOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjdIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKQ2lyY2xlT3V0bGluZSA9IFwiTTEzLDdIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjE0SDExVjE1SDEzVjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSyA9IFwiTTksN1YxN0gxMVYxMy42N0wxMywxN0gxNUwxMiwxMkwxNSw3SDEzTDExLDEwLjMzVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtCb3ggPSBcIk05LDdWMTdIMTFWMTMuNjdMMTMsMTdIMTVMMTIsMTJMMTUsN0gxM0wxMSwxMC4zM1Y3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtCb3hPdXRsaW5lID0gXCJNOSw3SDExVjEwLjMzTDEzLDdIMTVMMTIsMTJMMTUsMTdIMTNMMTEsMTMuNjdWMTdIOVY3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk05LDdWMTdIMTFWMTMuNjdMMTMsMTdIMTVMMTIsMTJMMTUsN0gxM0wxMSwxMC4zM1Y3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFLQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxMC4zM0wxMyw3SDE1TDEyLDEyTDE1LDE3SDEzTDExLDEzLjY3VjE3SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMID0gXCJNOSw3VjE3SDE1VjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUxCb3ggPSBcIk05LDdWMTdIMTVWMTVIMTFWN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMQm94T3V0bGluZSA9IFwiTTksN0gxMVYxNUgxNVYxN0g5VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTENpcmNsZSA9IFwiTTksN1YxN0gxNVYxNUgxMVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxNUgxNVYxN0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTSA9IFwiTTksN0EyLDIgMCAwLDAgNyw5VjE3SDlWOUgxMVYxNkgxM1Y5SDE1VjE3SDE3VjlBMiwyIDAgMCwwIDE1LDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1Cb3ggPSBcIk05LDdBMiwyIDAgMCwwIDcsOVYxN0g5VjlIMTFWMTZIMTNWOUgxNVYxN0gxN1Y5QTIsMiAwIDAsMCAxNSw3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1Cb3hPdXRsaW5lID0gXCJNOSw3SDE1QTIsMiAwIDAsMSAxNyw5VjE3SDE1VjlIMTNWMTZIMTFWOUg5VjE3SDdWOUEyLDIgMCAwLDEgOSw3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1DaXJjbGUgPSBcIk05LDdBMiwyIDAgMCwwIDcsOVYxN0g5VjlIMTFWMTZIMTNWOUgxNVYxN0gxN1Y5QTIsMiAwIDAsMCAxNSw3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFNQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNUEyLDIgMCAwLDEgMTcsOVYxN0gxNVY5SDEzVjE2SDExVjlIOVYxN0g3VjlBMiwyIDAgMCwxIDksN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFOID0gXCJNOSw3VjE3SDExVjEyTDEzLDE3SDE1VjdIMTNWMTJMMTEsN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkJveCA9IFwiTTksN1YxN0gxMVYxMkwxMywxN0gxNVY3SDEzVjEyTDExLDdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkJveE91dGxpbmUgPSBcIk05LDdIMTFMMTMsMTJWN0gxNVYxN0gxM0wxMSwxMlYxN0g5VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkNpcmNsZSA9IFwiTTksN1YxN0gxMVYxMkwxMywxN0gxNVY3SDEzVjEyTDExLDdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU5DaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExTDEzLDEyVjdIMTVWMTdIMTNMMTEsMTJWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU8gPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU9Cb3ggPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhT0JveE91dGxpbmUgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVNMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjE1SDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFPQ2lyY2xlID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMU0xMSw5SDEzVjE1SDExVjlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFPQ2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsOVYxNUgxM1Y5SDExTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVAgPSBcIk05LDdWMTdIMTFWMTNIMTNBMiwyIDAgMCwwIDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQm94ID0gXCJNOSw3VjE3SDExVjEzSDEzQTIsMiAwIDAsMCAxNSwxMVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxMUgxMVY5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQm94T3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUEyLDIgMCAwLDEgMTMsMTNIMTFWMTdIOVY3TTExLDlWMTFIMTNWOUgxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQ2lyY2xlID0gXCJNOSw3VjE3SDExVjEzSDEzQTIsMiAwIDAsMCAxNSwxMVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxMUgxMVY5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTFBMiwyIDAgMCwxIDEzLDEzSDExVjE3SDlWN00xMSw5VjExSDEzVjlIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdWMTlIMTNWMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUUJveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdWMTlIMTNWMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYyMEEyLDIgMCAwLDEgMTksMjJINUEyLDIgMCAwLDEgMywyMFY2QTIsMiAwIDAsMSA1LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFRQm94T3V0bGluZSA9IFwiTTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYyMEEyLDIgMCAwLDEgMTksMjJINUEyLDIgMCAwLDEgMywyMFY2QTIsMiAwIDAsMSA1LDRNNSw2VjIwSDE5VjZINU0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE1QTIsMiAwIDAsMSAxMywxN1YxOUgxMVYxN0EyLDIgMCAwLDEgOSwxNVY5QTIsMiAwIDAsMSAxMSw3TTExLDlWMTVIMTNWOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVFDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3VjE5SDEzVjE3QTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVFDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3VjE5SDExVjE3QTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsOVYxNUgxM1Y5SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUiA9IFwiTTksN1YxN0gxMVYxM0gxMS44TDEzLDE3SDE1TDEzLjc2LDEyLjg1QzE0LjUsMTIuNTUgMTUsMTEuODQgMTUsMTFWOUEyLDIgMCAwLDAgMTMsN0g5TTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJCb3ggPSBcIk05LDdWMTdIMTFWMTNIMTEuOEwxMywxN0gxNUwxMy43NiwxMi44NUMxNC41LDEyLjU1IDE1LDExLjg0IDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJCb3hPdXRsaW5lID0gXCJNOSw3SDEzQTIsMiAwIDAsMSAxNSw5VjExQzE1LDExLjg0IDE0LjUsMTIuNTUgMTMuNzYsMTIuODVMMTUsMTdIMTNMMTEuOCwxM0gxMVYxN0g5VjdNMTEsOVYxMUgxM1Y5SDExTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJDaXJjbGUgPSBcIk05LDdWMTdIMTFWMTNIMTEuOEwxMywxN0gxNUwxMy43NiwxMi44NUMxNC41LDEyLjU1IDE1LDExLjg0IDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFSQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUMxNSwxMS44NCAxNC41LDEyLjU1IDEzLjc2LDEyLjg1TDE1LDE3SDEzTDExLjgsMTNIMTFWMTdIOVY3TTExLDlWMTFIMTNWOUgxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTYuNDEgNy41OCwyMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFTID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjExQTIsMiAwIDAsMCAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxM0EyLDIgMCAwLDAgMTMsMTFIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0JveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0JveE91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QTIsMiAwIDAsMSAxMywxN0g5VjE1SDEzVjEzSDExQTIsMiAwIDAsMSA5LDExVjlBMiwyIDAgMCwxIDExLDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0NpcmNsZSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVNDaXJjbGVPdXRsaW5lID0gXCJNMTEsN0gxNVY5SDExVjExSDEzQTIsMiAwIDAsMSAxNSwxM1YxNUEyLDIgMCAwLDEgMTMsMTdIOVYxNUgxM1YxM0gxMUEyLDIgMCAwLDEgOSwxMVY5QTIsMiAwIDAsMSAxMSw3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVQgPSBcIk05LDdWOUgxMVYxN0gxM1Y5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVRCb3ggPSBcIk05LDdWOUgxMVYxN0gxM1Y5SDE1VjdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVEJveE91dGxpbmUgPSBcIk05LDdIMTVWOUgxM1YxN0gxMVY5SDlWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFUQ2lyY2xlID0gXCJNOSw3VjlIMTFWMTdIMTNWOUgxNVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFUQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDEzVjE3SDExVjlIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVUgPSBcIk05LDdWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzVjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVVCb3ggPSBcIk05LDdWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzVjE1SDExVjdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVUJveE91dGxpbmUgPSBcIk05LDdIMTFWMTVIMTNWN0gxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFVQ2lyY2xlID0gXCJNOSw3VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWN0gxM1YxNUgxMVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFVQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxNUgxM1Y3SDE1VjE1QTIsMiAwIDAsMSAxMywxN0gxMUEyLDIgMCAwLDEgOSwxNVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVYgPSBcIk05LDdMMTEsMTdIMTNMMTUsN0gxM0wxMiwxMkwxMSw3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQm94ID0gXCJNOSw3TDExLDE3SDEzTDE1LDdIMTNMMTIsMTJMMTEsN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQm94T3V0bGluZSA9IFwiTTksN0gxMUwxMiwxMkwxMyw3SDE1TDEzLDE3SDExTDksN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQ2lyY2xlID0gXCJNOSw3TDExLDE3SDEzTDE1LDdIMTNMMTIsMTJMMTEsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVkNpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFMMTIsMTJMMTMsN0gxNUwxMywxN0gxMUw5LDdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVyA9IFwiTTksMTdBMiwyIDAgMCwxIDcsMTVWN0g5VjE1SDExVjhIMTNWMTVIMTVWN0gxN1YxNUEyLDIgMCAwLDEgMTUsMTdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdCb3ggPSBcIk05LDE3SDE1QTIsMiAwIDAsMCAxNywxNVY3SDE1VjE1SDEzVjhIMTFWMTVIOVY3SDdWMTVBMiwyIDAgMCwwIDksMTdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdCb3hPdXRsaW5lID0gXCJNOSwxN0EyLDIgMCAwLDEgNywxNVY3SDlWMTVIMTFWOEgxM1YxNUgxNVY3SDE3VjE1QTIsMiAwIDAsMSAxNSwxN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdDaXJjbGUgPSBcIk05LDE3SDE1QTIsMiAwIDAsMCAxNywxNVY3SDE1VjE1SDEzVjhIMTFWMTVIOVY3SDdWMTVBMiwyIDAgMCwwIDksMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFXQ2lyY2xlT3V0bGluZSA9IFwiTTksMTdBMiwyIDAgMCwxIDcsMTVWN0g5VjE1SDExVjhIMTNWMTVIMTVWN0gxN1YxNUEyLDIgMCAwLDEgMTUsMTdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFYID0gXCJNOSw3TDExLDEyTDksMTdIMTFMMTIsMTQuNUwxMywxN0gxNUwxMywxMkwxNSw3SDEzTDEyLDkuNUwxMSw3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFYQm94ID0gXCJNOSw3TDExLDEyTDksMTdIMTFMMTIsMTQuNUwxMywxN0gxNUwxMywxMkwxNSw3SDEzTDEyLDkuNUwxMSw3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVhCb3hPdXRsaW5lID0gXCJNOSw3SDExTDEyLDkuNUwxMyw3SDE1TDEzLDEyTDE1LDE3SDEzTDEyLDE0LjVMMTEsMTdIOUwxMSwxMkw5LDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWENpcmNsZSA9IFwiTTksN0wxMSwxMkw5LDE3SDExTDEyLDE0LjVMMTMsMTdIMTVMMTMsMTJMMTUsN0gxM0wxMiw5LjVMMTEsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFMMTIsOS41TDEzLDdIMTVMMTMsMTJMMTUsMTdIMTNMMTIsMTQuNUwxMSwxN0g5TDExLDEyTDksN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFZID0gXCJNOSw3TDExLDEzVjE3SDEzVjEzTDE1LDdIMTNMMTIsMTBMMTEsN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUJveCA9IFwiTTksN0wxMSwxM1YxN0gxM1YxM0wxNSw3SDEzTDEyLDEwTDExLDdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUJveE91dGxpbmUgPSBcIk05LDdIMTFMMTIsMTBMMTMsN0gxNUwxMywxM1YxN0gxMVYxM0w5LDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUNpcmNsZSA9IFwiTTksN0wxMSwxM1YxN0gxM1YxM0wxNSw3SDEzTDEyLDEwTDExLDdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVlDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExTDEyLDEwTDEzLDdIMTVMMTMsMTNWMTdIMTFWMTNMOSw3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVogPSBcIk05LDdWOUgxM0w5LDE1VjE3SDE1VjE1SDExTDE1LDlWN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWkJveCA9IFwiTTksN1Y5SDEzTDksMTVWMTdIMTVWMTVIMTFMMTUsOVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVpCb3hPdXRsaW5lID0gXCJNOSw3SDE1VjlMMTEsMTVIMTVWMTdIOVYxNUwxMyw5SDlWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFaQ2lyY2xlID0gXCJNOSw3VjlIMTNMOSwxNVYxN0gxNVYxNUgxMUwxNSw5VjdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVpDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDE1VjlMMTEsMTVIMTVWMTdIOVYxNUwxMyw5SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRBdXJlYmVzaCA9IFwiTTMgNFYxMUgxNC4yM0wyMiA0SDE5TDEzLjQ2IDlINVY0SDNNMyAxM1YyMEg1VjE1SDEzLjQ2TDE5IDIwSDIyTDE0LjIzIDEzSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRDeXJpbGxpYyA9IFwiTTE2IDZDMTQuMzYgNiAxMyA3LjM2IDEzIDlWMTVDMTMgMTYuNjUgMTQuMzYgMTggMTYgMThIMTdDMTguNjUgMTggMjAgMTYuNjUgMjAgMTVWMTJDMjAgMTAuMzYgMTguNjUgOSAxNyA5SDE1QzE1IDguNDQgMTUuNDQgOCAxNiA4SDE4QzE5LjA5IDggMjAgNy4wOSAyMCA2TTUgOVYxMUg4QzguNTcgMTEgOSAxMS40MyA5IDEySDdDNS4zNiAxMiA0IDEzLjM2IDQgMTVDNCAxNi42NSA1LjM2IDE4IDcgMThIMTFWMTJDMTEgMTAuMzYgOS42NSA5IDggOU0xNSAxMUgxN0MxNy41NyAxMSAxOCAxMS40MyAxOCAxMlYxNUMxOCAxNS41NyAxNy41NyAxNiAxNyAxNkgxNkMxNS40MyAxNiAxNSAxNS41NyAxNSAxNU03IDE0SDlWMTZIN0M2LjQzIDE2IDYgMTUuNTcgNiAxNUM2IDE0LjQzIDYuNDMgMTQgNyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYWJldEdyZWVrID0gXCJNMTYgNkMxNC4zNiA2IDEzIDcuMzYgMTMgOVYyMUgxNVY5QzE1IDguNDMgMTUuNDMgOCAxNiA4SDE3QzE3LjU3IDggMTggOC40MyAxOCA5VjEwQzE4IDEwLjU3IDE3LjU3IDExIDE3IDExSDE2VjEzSDE3QzE3LjU3IDEzIDE4IDEzLjQzIDE4IDE0VjE1QzE4IDE1LjU3IDE3LjU3IDE2IDE3IDE2SDE2VjE4SDE3QzE4LjY1IDE4IDIwIDE2LjY1IDIwIDE1VjE0QzIwIDEzLjE4IDE5LjU5IDEyLjQ2IDE5IDEyQzE5LjU5IDExLjU0IDIwIDEwLjgyIDIwIDEwVjlDMjAgNy4zNiAxOC42NSA2IDE3IDZNNyA5QzUuMzYgOSA0IDEwLjM2IDQgMTJWMTVDNCAxNi42NSA1LjM2IDE4IDcgMThINy43QzguMiAxOCA4LjY1IDE3LjgxIDkgMTcuNVYxOEgxMVY5SDlWOS41QzguNjUgOS4xOSA4LjIgOSA3LjcgOU03IDExSDhDOC41NyAxMSA5IDExLjQzIDkgMTJWMTVDOSAxNS41NyA4LjU3IDE2IDggMTZIN0M2LjQzIDE2IDYgMTUuNTcgNiAxNVYxMkM2IDExLjQzIDYuNDMgMTEgNyAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYWJldExhdGluID0gXCJNMTMgNlYxOEgxNVYxNy4zMUMxNS4zNyAxNy43MyAxNS45IDE4IDE2LjUgMThIMTdDMTguNjUgMTggMjAgMTYuNjUgMjAgMTVWMTJDMjAgMTAuMzYgMTguNjUgOSAxNyA5SDE2LjVDMTUuOSA5IDE1LjM3IDkuMjcgMTUgOS43VjZNNSA5VjExSDhDOC41NyAxMSA5IDExLjQzIDkgMTJIN0M1LjM2IDEyIDQgMTMuMzYgNCAxNUM0IDE2LjY1IDUuMzYgMTggNyAxOEgxMVYxMkMxMSAxMC4zNiA5LjY1IDkgOCA5TTE2IDExSDE3QzE3LjU3IDExIDE4IDExLjQzIDE4IDEyVjE1QzE4IDE1LjU3IDE3LjU3IDE2IDE3IDE2SDE2QzE1LjQzIDE2IDE1IDE1LjU3IDE1IDE1VjEyQzE1IDExLjQzIDE1LjQzIDExIDE2IDExTTcgMTRIOVYxNkg3QzYuNDMgMTYgNiAxNS41NyA2IDE1QzYgMTQuNDMgNi40MyAxNCA3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0UGlxYWQgPSBcIk0xMy4wNCA0TDYuNTQgMTcuODVDNi4yMSAxOC41NSA1LjUgMTkgNC43MyAxOUg0VjIwSDE2QzE3LjIgMjAgMTguMjcgMjAuNTQgMTkgMjEuMzlIMjBDMTkuMDUgMTkuMzIgMTcgMTggMTQuNyAxOEgxMkMxMS4yOSAxOCAxMC42MiAxNy42MyAxMC4yNCAxNy4wM0M5Ljg1IDE2LjQzIDkuOCAxNS42OCAxMC4xIDE1LjAzTDEwLjU4IDE0SDE5VjEzSDE3LjVDMTUuMjkgMTMgMTMuNSAxMS4yMSAxMy41IDlDMTMuNSA2Ljc5IDE1LjI5IDUgMTcuNSA1SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRUZW5nd2FyID0gXCJNMTAgN0wxMi41IDNIMTVMMTEgN0gxME0xMi41IDlDMTEuOTYgOSAxMS40NiA5LjEzIDExIDkuMzVWOUg4VjExSDlWMjFIMTFWMTIuNUMxMSAxMS42NyAxMS42NyAxMSAxMi41IDExQzEzLjMzIDExIDE0IDExLjY3IDE0IDEyLjVWMTQuNUMxNCAxNS4zMyAxMy4zMyAxNiAxMi41IDE2SDEyVjE4SDEyLjVDMTQuNDMgMTggMTYgMTYuNDMgMTYgMTQuNVYxMi41QzE2IDEwLjU3IDE0LjQzIDkgMTIuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbCA9IFwiTTYsMTFBMiwyIDAgMCwxIDgsMTNWMTdINEEyLDIgMCAwLDEgMiwxNVYxM0EyLDIgMCAwLDEgNCwxMUg2TTQsMTNWMTVINlYxM0g0TTIwLDEzVjE1SDIyVjE3SDIwQTIsMiAwIDAsMSAxOCwxNVYxM0EyLDIgMCAwLDEgMjAsMTFIMjJWMTNIMjBNMTIsN1YxMUgxNEEyLDIgMCAwLDEgMTYsMTNWMTVBMiwyIDAgMCwxIDE0LDE3SDEyQTIsMiAwIDAsMSAxMCwxNVY3SDEyTTEyLDE1SDE0VjEzSDEyVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbE9mZiA9IFwiTTIyLjExIDIxLjQ2TDE2IDE1LjMxTDE0IDEzLjMxTDEzLjY1IDEzTDEwIDkuMzRMMi4zOSAxLjczTDEuMTEgM0wxMCAxMS44OVYxNUEyIDIgMCAwIDAgMTIgMTdIMTRBMS45MiAxLjkyIDAgMCAwIDE0Ljg5IDE2Ljc4TDIwLjg0IDIyLjczTTEyIDE1VjEzLjg5TDEzLjExIDE1TTE2IDEyLjc4TDE0LjIyIDExQTIgMiAwIDAgMSAxNiAxMi43OE0yMC4yIDE3TDE4IDE0LjhWMTNBMiAyIDAgMCAxIDIwIDExSDIyVjEzSDIwVjE1SDIyVjE3TTYgMTFINEEyIDIgMCAwIDAgMiAxM1YxNUEyIDIgMCAwIDAgNCAxN0g4VjEzQTIgMiAwIDAgMCA2IDExTTYgMTVINFYxM0g2TTEyIDguOEwxMC4yIDdIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRpY2FsVmFyaWFudCA9IFwiTTMgN0EyIDIgMCAwIDAgMSA5VjE3SDNWMTNINVYxN0g3VjlBMiAyIDAgMCAwIDUgN0gzTTMgOUg1VjExSDNNMTUgMTAuNVY5QTIgMiAwIDAgMCAxMyA3SDlWMTdIMTNBMiAyIDAgMCAwIDE1IDE1VjEzLjVBMS41NCAxLjU0IDAgMCAwIDEzLjUgMTJBMS41NCAxLjU0IDAgMCAwIDE1IDEwLjVNMTMgMTVIMTFWMTNIMTNWMTVNMTMgMTFIMTFWOUgxM00xOSA3QTIgMiAwIDAgMCAxNyA5VjE1QTIgMiAwIDAgMCAxOSAxN0gyMUEyIDIgMCAwIDAgMjMgMTVWMTRIMjFWMTVIMTlWOUgyMVYxMEgyM1Y5QTIgMiAwIDAgMCAyMSA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbFZhcmlhbnRPZmYgPSBcIk0xMi4yIDlMMTAuMiA3SDEzQTIgMiAwIDAgMSAxNSA5VjEwLjVBMS40NyAxLjQ3IDAgMCAxIDE0LjY0IDExLjQ0TDEzIDkuOFY5TTIzIDEwVjlBMiAyIDAgMCAwIDIxIDdIMTlBMiAyIDAgMCAwIDE3IDlWMTMuOEwyMC4yIDE3SDIxQTIgMiAwIDAgMCAyMyAxNVYxNEgyMVYxNUgxOVY5SDIxVjEwTTE1IDE0LjM1TDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE0LjQ2IDE2LjM1QTIgMiAwIDAgMSAxMyAxN0g5VjEwLjg5TDcgOC44OVYxN0g1VjEzSDNWMTdIMVY5QTIgMiAwIDAgMSAzIDdINS4xMkwxLjEyIDNMMi4zOSAxLjczTDkgOC4zNEwxMSAxMC4zNEwxMS42NiAxMUwxNSAxNC4zNE01IDlIM1YxMUg1TTEzIDE0Ljg5TDExLjExIDEzSDExVjE1SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsdGltZXRlciA9IFwiTTcsM1Y1SDE3VjNIN005LDdWOUgxNVY3SDlNMiw3Ljk2VjE2LjA0TDYuMDMsMTJMMiw3Ljk2TTIyLjAzLDcuOTZMMTgsMTJMMjIuMDMsMTYuMDRWNy45Nk03LDExVjEzSDE3VjExSDdNOSwxNVYxN0gxNVYxNUg5TTcsMTlWMjFIMTdWMTlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbWF6b24gPSBcIk0xNS45MywxNy4wOUMxNS43NSwxNy4yNSAxNS41LDE3LjI2IDE1LjMsMTcuMTVDMTQuNDEsMTYuNDEgMTQuMjUsMTYuMDcgMTMuNzYsMTUuMzZDMTIuMjksMTYuODYgMTEuMjUsMTcuMzEgOS4zNCwxNy4zMUM3LjA5LDE3LjMxIDUuMzMsMTUuOTIgNS4zMywxMy4xNEM1LjMzLDEwLjk2IDYuNSw5LjUgOC4xOSw4Ljc2QzkuNjUsOC4xMiAxMS42OCw4IDEzLjIzLDcuODNWNy41QzEzLjIzLDYuODQgMTMuMjgsNi4wOSAxMi45LDUuNTRDMTIuNTgsNS4wNSAxMS45NSw0Ljg0IDExLjQsNC44NEMxMC4zOCw0Ljg0IDkuNDcsNS4zNyA5LjI1LDYuNDVDOS4yLDYuNjkgOSw2LjkzIDguNzgsNi45NEw2LjE4LDYuNjZDNS45Niw2LjYxIDUuNzIsNi40NCA1Ljc4LDYuMUM2LjM4LDIuOTUgOS4yMywyIDExLjc4LDJDMTMuMDgsMiAxNC43OCwyLjM1IDE1LjgxLDMuMzNDMTcuMTEsNC41NSAxNyw2LjE4IDE3LDcuOTVWMTIuMTJDMTcsMTMuMzcgMTcuNSwxMy45MyAxOCwxNC42QzE4LjE3LDE0Ljg1IDE4LjIxLDE1LjE0IDE4LDE1LjMxTDE1Ljk0LDE3LjA5SDE1LjkzTTEzLjIzLDEwLjU2VjEwQzExLjI5LDEwIDkuMjQsMTAuMzkgOS4yNCwxMi42N0M5LjI0LDEzLjgzIDkuODUsMTQuNjIgMTAuODcsMTQuNjJDMTEuNjMsMTQuNjIgMTIuMywxNC4xNSAxMi43MywxMy40QzEzLjI1LDEyLjQ3IDEzLjIzLDExLjYgMTMuMjMsMTAuNTZNMjAuMTYsMTkuNTRDMTgsMjEuMTQgMTQuODIsMjIgMTIuMSwyMkM4LjI5LDIyIDQuODUsMjAuNTkgMi4yNSwxOC4yNEMyLjA1LDE4LjA2IDIuMjMsMTcuODEgMi41LDE3Ljk1QzUuMjgsMTkuNTggOC43NSwyMC41NiAxMi4zMywyMC41NkMxNC43NCwyMC41NiAxNy40LDIwLjA2IDE5Ljg0LDE5LjAzQzIwLjIxLDE4Ljg3IDIwLjUsMTkuMjcgMjAuMTYsMTkuNTRNMjEuMDcsMTguNUMyMC43OSwxOC4xNCAxOS4yMiwxOC4zMyAxOC41LDE4LjQyQzE4LjMxLDE4LjQ0IDE4LjI4LDE4LjI2IDE4LjQ3LDE4LjEyQzE5LjcxLDE3LjI0IDIxLjc2LDE3LjUgMjIsMTcuNzlDMjIuMjQsMTguMDkgMjEuOTMsMjAuMTQgMjAuNzYsMjEuMTFDMjAuNTgsMjEuMjcgMjAuNDEsMjEuMTggMjAuNSwyMUMyMC43NiwyMC4zMyAyMS4zNSwxOC44NiAyMS4wNywxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFtYXpvbkFsZXhhID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTAuNDMsMjEuODdWMTkuOTFDMTAuNDMsMTkuMjIgMTAsMTguNTcgOS4zNSwxOC4zQzYuOTEsMTcuMjYgNS4xNywxNC44MyA1LjE3LDEyQzUuMTcsOC4yNiA4LjIyLDUuMTcgMTIsNS4xN0MxNS43OCw1LjE3IDE4LjgzLDguMjYgMTguODMsMTJDMTguODMsMTYuNDMgMTUuMzksMjAuNjEgMTAuNDMsMjEuODdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW1idWxhbmNlID0gXCJNMTgsMTguNUExLjUsMS41IDAgMCwwIDE5LjUsMTdBMS41LDEuNSAwIDAsMCAxOCwxNS41QTEuNSwxLjUgMCAwLDAgMTYuNSwxN0ExLjUsMS41IDAgMCwwIDE4LDE4LjVNMTkuNSw5LjVIMTdWMTJIMjEuNDZMMTkuNSw5LjVNNiwxOC41QTEuNSwxLjUgMCAwLDAgNy41LDE3QTEuNSwxLjUgMCAwLDAgNiwxNS41QTEuNSwxLjUgMCAwLDAgNC41LDE3QTEuNSwxLjUgMCAwLDAgNiwxOC41TTIwLDhMMjMsMTJWMTdIMjFBMywzIDAgMCwxIDE4LDIwQTMsMyAwIDAsMSAxNSwxN0g5QTMsMyAwIDAsMSA2LDIwQTMsMyAwIDAsMSAzLDE3SDFWNkMxLDQuODkgMS44OSw0IDMsNEgxN1Y4SDIwTTgsNlY5SDVWMTFIOFYxNEgxMFYxMUgxM1Y5SDEwVjZIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbW11bml0aW9uID0gXCJNMTQsMjJIMTBWMjFIMTRWMjJNMTMsMTBWN0gxMVYxMEwxMCwxMS41VjIwSDE0VjExLjVMMTMsMTBNMTIsMkMxMiwyIDExLDMgMTEsNVY2SDEzVjVDMTMsNSAxMywzIDEyLDJNOCwyMkg0VjIxSDhWMjJNNywxMFY3SDVWMTBMNCwxMS41VjIwSDhWMTEuNUw3LDEwTTYsMkM2LDIgNSwzIDUsNVY2SDdWNUM3LDUgNywzIDYsMk0yMCwyMkgxNlYyMUgyMFYyMk0xOSwxMFY3SDE3VjEwTDE2LDExLjVWMjBIMjBWMTEuNUwxOSwxME0xOCwyQzE4LDIgMTcsMyAxNyw1VjZIMTlWNUMxOSw1IDE5LDMgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbXBlcnNhbmQgPSBcIk00LjQsMTYuNUM0LjQsMTUuNiA0LjcsMTQuNyA1LjIsMTMuOUM1LjcsMTMuMSA2LjcsMTIuMiA4LjIsMTEuMkM3LjMsMTAuMSA2LjgsOS4zIDYuNSw4LjdDNi4xLDggNiw3LjQgNiw2LjdDNiw1LjIgNi40LDQuMSA3LjMsMy4yQzguMiwyLjMgOS40LDIgMTAuOSwyQzEyLjIsMiAxMy4zLDIuNCAxNC4yLDMuMkMxNS4xLDQgMTUuNSw1IDE1LjUsNi4xQzE1LjUsNi45IDE1LjMsNy42IDE0LjksOC4zQzE0LjUsOSAxMy44LDkuNyAxMi44LDEwLjRMMTEuNCwxMS41TDE1LjcsMTYuN0MxNi4zLDE1LjUgMTYuNiwxNC4zIDE2LjYsMTIuOEgxOC44QzE4LjgsMTUuMSAxOC4zLDE3IDE3LjIsMTguNUwyMCwyMS44SDE3TDE1LjcsMjAuM0MxNSwyMC45IDE0LjMsMjEuMyAxMy40LDIxLjZDMTIuNSwyMS45IDExLjYsMjIuMSAxMC43LDIyLjFDOC44LDIyLjEgNy4zLDIxLjYgNi4xLDIwLjZDNSwxOS41IDQuNCwxOC4yIDQuNCwxNi41TTEwLjcsMjBDMTIsMjAgMTMuMiwxOS41IDE0LjMsMTguNUw5LjYsMTIuOEw5LjIsMTMuMUM3LjcsMTQuMiA3LDE1LjMgNywxNi41QzcsMTcuNiA3LjMsMTguNCA4LDE5QzguNywxOS42IDkuNSwyMCAxMC43LDIwTTguNSw2LjdDOC41LDcuNiA5LDguNiAxMC4xLDkuOUwxMS43LDguOEMxMi4zLDguNCAxMi43LDggMTIuOSw3LjZDMTMuMSw3LjIgMTMuMiw2LjcgMTMuMiw2LjJDMTMuMiw1LjYgMTMsNS4xIDEyLjUsNC43QzEyLjEsNC4zIDExLjUsNC4xIDEwLjgsNC4xQzEwLjEsNC4xIDkuNSw0LjMgOS4xLDQuOEM4LjcsNS4zIDguNSw1LjkgOC41LDYuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbXBsaWZpZXIgPSBcIk0xMCwySDE0QTEsMSAwIDAsMSAxNSwzSDIxVjIxSDE5QTEsMSAwIDAsMSAxOCwyMkExLDEgMCAwLDEgMTcsMjFIN0ExLDEgMCAwLDEgNiwyMkExLDEgMCAwLDEgNSwyMUgzVjNIOUExLDEgMCAwLDEgMTAsMk01LDVWOUgxOVY1SDVNNyw2QTEsMSAwIDAsMSA4LDdBMSwxIDAgMCwxIDcsOEExLDEgMCAwLDEgNiw3QTEsMSAwIDAsMSA3LDZNMTIsNkgxNFY3SDEyVjZNMTUsNkgxNlY4SDE1VjZNMTcsNkgxOFY4SDE3VjZNMTIsMTFBNCw0IDAgMCwwIDgsMTVBNCw0IDAgMCwwIDEyLDE5QTQsNCAwIDAsMCAxNiwxNUE0LDQgMCAwLDAgMTIsMTFNMTAsNkExLDEgMCAwLDEgMTEsN0ExLDEgMCAwLDEgMTAsOEExLDEgMCAwLDEgOSw3QTEsMSAwIDAsMSAxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFtcGxpZmllck9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDMgNC45VjIxSDVDNSAyMS42IDUuNCAyMiA2IDIyUzcgMjEuNiA3IDIxSDE3QzE3IDIxLjYgMTcuNCAyMiAxOCAyMlMxOSAyMS42IDE5IDIxSDE5LjFMMjAuOCAyMi43TDIyLjEgMjEuNU01IDlWNi45TDcuMSA5SDVNMTIgMTlDOS44IDE5IDggMTcuMiA4IDE1QzggMTMuNiA4LjcgMTIuNCA5LjggMTEuN0wxNS4zIDE3LjJDMTQuNiAxOC4zIDEzLjQgMTkgMTIgMTlNMTQgNlY3SDEyVjZIMTRNMTAgNkMxMC42IDYgMTEgNi40IDExIDdDMTEgNy4yIDEwLjkgNy40IDEwLjggNy42TDkuNCA2LjJDOS42IDYuMSA5LjggNiAxMCA2TTguMiA1TDYuMiAzSDlDOSAyLjQgOS40IDIgMTAgMkgxNEMxNC42IDIgMTUgMi40IDE1IDNIMjFWMTcuOEwxMi4yIDlIMTlWNUg4LjJNMTYgNlY4SDE1VjZIMTZNMTggNlY4SDE3VjZIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5jaG9yID0gXCJNMTIgMkEzIDMgMCAwIDAgOSA1QTMgMyAwIDAgMCAxMSA3LjgzVjlIOFYxMUgxMVYxOS45MkMxMC4yNiAxOS43OSA5LjUgMTkuNTggOC43OSAxOS4yN0M4LjA1IDE4Ljk1IDcuNCAxOC41NiA2LjgyIDE4LjA5QzYuMjQgMTcuNjIgNS43OCAxNy4xMSA1LjQ0IDE2LjU1TDcgMTVMMyAxMlYxNUMzIDE1Ljk3IDMuMjcgMTYuODggMy44MiAxNy43MkM0LjM3IDE4LjU2IDUuMDkgMTkuMzEgNiAxOS45NUM2Ljg3IDIwLjU5IDcuODQgMjEuMDkgOC44OCAyMS40NUM5LjkzIDIxLjgxIDEwLjk3IDIyIDEyIDIyQzEzLjAzIDIyIDE0LjA3IDIxLjggMTUuMTIgMjEuNDRDMTYuMTYgMjEuMDggMTcuMTMgMjAuNTggMTggMTkuOTVDMTguOTIgMTkuMzEgMTkuNjMgMTguNTcgMjAuMTggMTcuNzJDMjAuNzMgMTYuODggMjEgMTUuOTcgMjEgMTVWMTJMMTcgMTVMMTguNTYgMTYuNTVDMTguMjIgMTcuMTEgMTcuNzYgMTcuNjIgMTcuMTggMTguMDlDMTYuNiAxOC41NiAxNS45NSAxOC45NSAxNS4yMSAxOS4yN0MxNC41IDE5LjU4IDEzLjc0IDE5Ljc5IDEzIDE5LjkyVjExSDE2VjlIMTNWNy44MkEzIDMgMCAwIDAgMTUgNUEzIDMgMCAwIDAgMTIgMk0xMiA0QTEgMSAwIDAgMSAxMyA1QTEgMSAwIDAgMSAxMiA2QTEgMSAwIDAgMSAxMSA1QTEgMSAwIDAgMSAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWQgPSBcIk0xNi42MSAxNS4xNUMxNi4xNSAxNS4xNSAxNS43NyAxNC43OCAxNS43NyAxNC4zMlMxNi4xNSAxMy41IDE2LjYxIDEzLjVIMTYuNjFDMTcuMDcgMTMuNSAxNy40NSAxMy44NiAxNy40NSAxNC4zMkMxNy40NSAxNC43OCAxNy4wNyAxNS4xNSAxNi42MSAxNS4xNU03LjQxIDE1LjE1QzYuOTUgMTUuMTUgNi41NyAxNC43OCA2LjU3IDE0LjMyQzYuNTcgMTMuODYgNi45NSAxMy41IDcuNDEgMTMuNUg3LjQxQzcuODcgMTMuNSA4LjI0IDEzLjg2IDguMjQgMTQuMzJDOC4yNCAxNC43OCA3Ljg3IDE1LjE1IDcuNDEgMTUuMTVNMTYuOTEgMTAuMTRMMTguNTggNy4yNkMxOC42NyA3LjA5IDE4LjYxIDYuODggMTguNDUgNi43OUMxOC4yOCA2LjY5IDE4LjA3IDYuNzUgMTggNi45MkwxNi4yOSA5LjgzQzE0Ljk1IDkuMjIgMTMuNSA4LjkgMTIgOC45MUMxMC40NyA4LjkxIDkgOS4yNCA3LjczIDkuODJMNi4wNCA2LjkxQzUuOTUgNi43NCA1Ljc0IDYuNjggNS41NyA2Ljc4QzUuNCA2Ljg3IDUuMzUgNy4wOCA1LjQ0IDcuMjVMNy4xIDEwLjEzQzQuMjUgMTEuNjkgMi4yOSAxNC41OCAyIDE4SDIyQzIxLjcyIDE0LjU5IDE5Ljc3IDExLjcgMTYuOTEgMTAuMTRIMTYuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5kcm9pZEF1dG8gPSBcIk0yMi43OCwxNy45MUMyMi45NCwxOC4xNiAyMywxOC40MiAyMywxOC43QzIzLDE5LjA4IDIyLjg3LDE5LjM5IDIyLjU3LDE5LjY0QzIyLjI3LDE5Ljg5IDIxLjk0LDIwIDIxLjU2LDIwSDE5LjA4TDEyLjQyLDhIMTEuNThMNC45MiwyMEgyLjM5QzEuOTIsMjAgMS41MywxOS44IDEuMjIsMTkuMzhDMC45MSwxOC45NiAwLjg5LDE4LjUgMS4xNywxOEwxMC43OCwxLjY5QzExLjA5LDEuMjIgMTEuNSwxIDEyLDFDMTIuNTMsMSAxMi45MiwxLjIyIDEzLjE3LDEuNjlMMjIuNzgsMTcuOTFNNC43OCwyMi4zMUwxMiw5LjM4TDE5LjIyLDIyLjMxTDE4LjUsMjNMMTIsMjAuMzRMNS40NCwyM0w0Ljc4LDIyLjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWREZWJ1Z0JyaWRnZSA9IFwiTTE1LDlBMSwxIDAgMCwxIDE0LDhBMSwxIDAgMCwxIDE1LDdBMSwxIDAgMCwxIDE2LDhBMSwxIDAgMCwxIDE1LDlNOSw5QTEsMSAwIDAsMSA4LDhBMSwxIDAgMCwxIDksN0ExLDEgMCAwLDEgMTAsOEExLDEgMCAwLDEgOSw5TTE2LjEyLDQuMzdMMTguMjIsMi4yN0wxNy40LDEuNDRMMTUuMDksMy43NUMxNC4xNiwzLjI4IDEzLjExLDMgMTIsM0MxMC44OCwzIDkuODQsMy4yOCA4LjkxLDMuNzVMNi42LDEuNDRMNS43OCwyLjI3TDcuODgsNC4zN0M2LjE0LDUuNjQgNSw3LjY4IDUsMTBWMTFIMTlWMTBDMTksNy42OCAxNy44Niw1LjY0IDE2LjEyLDQuMzdNNSwxNkM1LDE5Ljg2IDguMTMsMjMgMTIsMjNBNyw3IDAgMCwwIDE5LDE2VjEySDVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5kcm9pZE1lc3NhZ2VzID0gXCJNMjAsMjBIN0EyLDIgMCAwLDEgNSwxOFY4Ljk0TDIuMjMsNS42NEMyLjA5LDUuNDcgMiw1LjI0IDIsNUExLDEgMCAwLDEgMyw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyME04LjUsN0EwLjUsMC41IDAgMCwwIDgsNy41VjguNUEwLjUsMC41IDAgMCwwIDguNSw5SDE4LjVBMC41LDAuNSAwIDAsMCAxOSw4LjVWNy41QTAuNSwwLjUgMCAwLDAgMTguNSw3SDguNU04LjUsMTFBMC41LDAuNSAwIDAsMCA4LDExLjVWMTIuNUEwLjUsMC41IDAgMCwwIDguNSwxM0gxOC41QTAuNSwwLjUgMCAwLDAgMTksMTIuNVYxMS41QTAuNSwwLjUgMCAwLDAgMTguNSwxMUg4LjVNOC41LDE1QTAuNSwwLjUgMCAwLDAgOCwxNS41VjE2LjVBMC41LDAuNSAwIDAsMCA4LjUsMTdIMTMuNUEwLjUsMC41IDAgMCwwIDE0LDE2LjVWMTUuNUEwLjUsMC41IDAgMCwwIDEzLjUsMTVIOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWRTdHVkaW8gPSBcIk0xMSwySDEzVjRIMTMuNUExLjUsMS41IDAgMCwxIDE1LDUuNVY5TDE0LjU2LDkuNDRMMTYuMiwxMi4yOEMxNy4zMSwxMS4xOSAxOCw5LjY4IDE4LDhIMjBDMjAsMTAuNDIgMTguOTMsMTIuNTkgMTcuMjMsMTQuMDZMMjAuMzcsMTkuNUwyMC41LDIxLjcyTDE4LjYzLDIwLjVMMTUuNTYsMTUuMTdDMTQuNSwxNS43IDEzLjI4LDE2IDEyLDE2QzEwLjcyLDE2IDkuNSwxNS43IDguNDQsMTUuMTdMNS4zNywyMC41TDMuNSwyMS43MkwzLjYzLDE5LjVMOS40NCw5LjQ0TDksOVY1LjVBMS41LDEuNSAwIDAsMSAxMC41LDRIMTFWMk05LjQ0LDEzLjQzQzEwLjIyLDEzLjggMTEuMDksMTQgMTIsMTRDMTIuOTEsMTQgMTMuNzgsMTMuOCAxNC41NiwxMy40M0wxMy4xLDEwLjlIMTMuMDlDMTIuNDcsMTEuNSAxMS41MywxMS41IDEwLjkxLDEwLjlIMTAuOUw5LjQ0LDEzLjQzTTEyLDZBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEyLDhBMSwxIDAgMCwwIDEzLDdBMSwxIDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVBY3V0ZSA9IFwiTTIwLDE5SDQuMDlMMTQuMTgsNC40M0wxNS44Miw1LjU3TDExLjI4LDEyLjEzQzEyLjg5LDEyLjk2IDE0LDE0LjYyIDE0LDE2LjU0QzE0LDE2LjcgMTQsMTYuODUgMTMuOTcsMTdIMjBWMTlNNy45MSwxN0gxMS45NkMxMiwxNi44NSAxMiwxNi43IDEyLDE2LjU0QzEyLDE1LjI4IDExLjI0LDE0LjIyIDEwLjE0LDEzLjc4TDcuOTEsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVPYnR1c2UgPSBcIk0yMSwxOUg5LjMxTDQuMDcsNS4zNkw1LjkzLDQuNjRMOC45NiwxMi41QzkuNSwxMi4yOSAxMC4wOSwxMi4xNyAxMC43MSwxMi4xN1YxMi4xN0MxMy4zOCwxMi4xNyAxNS41NiwxNC4zNCAxNS41OCwxN0gyMVYxOU0xMC42OSwxN0gxMy41OEMxMy41NiwxNS40MiAxMi4zLDE0LjE3IDEwLjcxLDE0LjE3QzEwLjM0LDE0LjE3IDEwLDE0LjI0IDkuNjcsMTQuMzZMMTAuNjksMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVSaWdodCA9IFwiTTUsNEg3VjExSDEzVjE3SDIwVjE5SDVWNE03LDE3SDExVjEzSDdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5ndWxhciA9IFwiTTEyLDIuNUwyMC44NCw1LjY1TDE5LjUsMTcuMzVMMTIsMjEuNUw0LjUsMTcuMzVMMy4xNiw1LjY1TDEyLDIuNU0xMiw0LjZMNi40NywxN0g4LjUzTDkuNjQsMTQuMjJIMTQuMzRMMTUuNDUsMTdIMTcuNUwxMiw0LjZNMTMuNjIsMTIuNUgxMC4zOUwxMiw4LjYzTDEzLjYyLDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5ndWxhcmpzID0gXCJNMTIsMi41TDIwLjg0LDUuNjVMMTkuNSwxNy4zNUwxMiwyMS41TDQuNSwxNy4zNUwzLjE2LDUuNjVMMTIsMi41TTEyLDQuNUw1LDdMNi4wOCwxNi4yMkwxMiwxOS41TDE3LjkyLDE2LjIyTDE5LDdMMTIsNC41TTEyLDUuNzJMMTYuNTgsMTZIMTQuODdMMTMuOTQsMTMuNzJIMTAuMDRMOS4xMiwxNkg3LjQxTDEyLDUuNzJNMTMuMzQsMTIuM0wxMiw5LjA3TDEwLjY2LDEyLjNIMTMuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uID0gXCJNNCwyQzIuODksMiAyLDIuODkgMiw0VjE0SDRWNEgxNFYySDRNOCw2QzYuODksNiA2LDYuODkgNiw4VjE4SDhWOEgxOFY2SDhNMTIsMTBDMTAuODksMTAgMTAsMTAuODkgMTAsMTJWMjBDMTAsMjEuMTEgMTAuODksMjIgMTIsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWMTJDMjIsMTAuODkgMjEuMTEsMTAgMjAsMTBIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE0SDRWNEgxNFYySDRNOCw2QTIsMiAwIDAsMCA2LDhWMThIOFY4SDE4VjZIOE0yMCwxMlYyMEgxMlYxMkgyME0yMCwxMEgxMkEyLDIgMCAwLDAgMTAsMTJWMjBBMiwyIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkEyLDIgMCAwLDAgMjAsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uUGxheSA9IFwiTTQsMkgxNFY0SDRWMTRIMlY0QzIsMi44OSAyLjg5LDIgNCwyTTgsNkgxOFY4SDhWMThINlY4QzYsNi44OSA2Ljg5LDYgOCw2TTEyLDEwSDIwQzIxLjExLDEwIDIyLDEwLjg5IDIyLDEyVjIwQzIyLDIxLjExIDIxLjExLDIyIDIwLDIySDEyQzEwLjg5LDIyIDEwLDIxLjExIDEwLDIwVjEyQzEwLDEwLjg5IDEwLjg5LDEwIDEyLDEwTTE0LDEyVjIwTDIwLDE2TDE0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuaW1hdGlvblBsYXlPdXRsaW5lID0gXCJNNCwyQTIsMiAwIDAsMCAyLDRWMTRINFY0SDE0VjJINE04LDZBMiwyIDAgMCwwIDYsOFYxOEg4VjhIMThWNkg4TTIwLDEyVjIwSDEyVjEySDIwTTIwLDEwSDEyQTIsMiAwIDAsMCAxMCwxMlYyMEEyLDIgMCAwLDAgMTIsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEyQTIsMiAwIDAsMCAyMCwxME0xNCwxM1YxOUwxOCwxNkwxNCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbnNpYmxlID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMk0xNi4xIDE3QzE1LjkxIDE3IDE1Ljc2IDE2LjkgMTUuNTUgMTYuNzNMMTAuMzkgMTIuNTZMOC42NiAxNi45SDcuMTdMMTEuNTQgNi4zOUMxMS42NSA2LjExIDExLjg5IDUuOTcgMTIuMTcgNS45N0MxMi40NSA1Ljk3IDEyLjY3IDYuMTEgMTIuNzkgNi4zOUwxNi43NyAxNS45N0MxNi44MSAxNi4wOCAxNi44NCAxNi4xOSAxNi44NCAxNi4yNkMxNi44MyAxNi42OCAxNi41IDE3IDE2LjEgMTdNMTIuMTcgOC4xMUwxNC43NiAxNC41TDEwLjg1IDExLjQyTDEyLjE3IDguMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW50ZW5uYSA9IFwiTTEyIDcuNUMxMi42OSA3LjUgMTMuMjcgNy43MyAxMy43NiA4LjJTMTQuNSA5LjI3IDE0LjUgMTBDMTQuNSAxMS4wNSAxNCAxMS44MSAxMyAxMi4yOFYyMUgxMVYxMi4yOEMxMCAxMS44MSA5LjUgMTEuMDUgOS41IDEwQzkuNSA5LjI3IDkuNzYgOC42NyAxMC4yNCA4LjJTMTEuMzEgNy41IDEyIDcuNU0xNi42OSA1LjNDMTcuOTQgNi41NSAxOC42MSA4LjExIDE4LjcgMTBDMTguNyAxMS44IDE4LjAzIDEzLjM4IDE2LjY5IDE0LjcyTDE1LjUgMTMuNUMxNi41IDEyLjU5IDE3IDExLjQyIDE3IDEwQzE3IDguNjcgMTYuNSA3LjUgMTUuNSA2LjVMMTYuNjkgNS4zTTYuMDkgNC4wOEM0LjUgNS42NyAzLjcgNy42NCAzLjcgMTBTNC41IDE0LjMgNi4wOSAxNS44OUw0LjkyIDE3LjExQzMgMTUuMDggMiAxMi43IDIgMTBDMiA3LjMgMyA0Ljk0IDQuOTIgMi45MUw2LjA5IDQuMDhNMTkuMDggMi45MUMyMSA0Ljk0IDIyIDcuMyAyMiAxMEMyMiAxMi44IDIxIDE1LjE3IDE5LjA4IDE3LjExTDE3LjkxIDE1Ljg5QzE5LjUgMTQuMyAyMC4zIDEyLjMzIDIwLjMgMTBTMTkuNSA1LjY3IDE3LjkxIDQuMDhMMTkuMDggMi45MU03LjMxIDUuM0w4LjUgNi41QzcuNSA3LjQyIDcgOC41OCA3IDEwQzcgMTEuMzMgNy41IDEyLjUgOC41IDEzLjVMNy4zMSAxNC43MkM1Ljk3IDEzLjM4IDUuMyAxMS44IDUuMyAxMEM1LjMgOC4yIDUuOTcgNi42NCA3LjMxIDUuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbnZpbCA9IFwiTTksNVYxMEMxMy4wMywxMi40NyA4LjQ0LDE0Ljk3IDYsMTZWMTlIMjFWMTZDMTQuNTksMTMuMjcgMTcuNDcsOSAyMiw4VjVIOU0yLDZDMi44MSw4LjEzIDQuNDIsOS41IDcsMTBWNkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwYWNoZUthZmthID0gXCJNMTUuNTQgMTIuOTdDMTQuODYgMTIuOTcgMTQuMjQgMTMuMjIgMTMuNzYgMTMuNjRMMTIuNDcgMTIuODlDMTIuNTYgMTIuNiAxMi42IDEyLjI5IDEyLjYgMTEuOTdDMTIuNiAxMS42NSAxMi41NiAxMS4zNCAxMi41IDExLjA1TDEzLjczIDEwLjMyQzE0LjIxIDEwLjc2IDE0Ljg1IDExIDE1LjU0IDExQzE3LjAzIDExIDE4LjI0IDkuODEgMTguMjQgOC4zMlMxNy4wMyA1LjYzIDE1LjU0IDUuNjMgMTIuODQgNi44NCAxMi44NCA4LjMzQzEyLjg0IDguNSAxMi44NiA4LjcgMTIuODkgOC44OEwxMS42NCA5LjZDMTEuMjEgOS4xNSAxMC42NCA4LjgyIDEwIDguNjVWNy4yNkMxMS4wOSA2LjkxIDExLjg4IDUuODkgMTEuODggNC42OUMxMS44OCAzLjIgMTAuNjcgMiA5LjE4IDJDNy42OSAyIDYuNSAzLjIgNi41IDQuNjlDNi41IDUuODkgNy4yNiA2LjkgOC4zNCA3LjI2VjguNjZDNi44NiA5LjA0IDUuNzYgMTAuMzcgNS43NiAxMS45N0M1Ljc2IDEzLjU3IDYuODYgMTQuOTEgOC4zNCAxNS4yOFYxNi43M0M3LjI2IDE3LjA5IDYuNSAxOC4xIDYuNSAxOS4zQzYuNSAyMC43OSA3LjY5IDIyIDkuMTggMjJDMTAuNjcgMjIgMTEuODggMjAuNzkgMTEuODggMTkuM0MxMS44OCAxOC4xIDExLjA5IDE3LjA4IDEwIDE2LjczVjE1LjI5QzEwLjY0IDE1LjEzIDExLjIgMTQuOCAxMS42NCAxNC4zNUwxMi45IDE1LjA4QzEyLjg2IDE1LjI3IDEyLjg0IDE1LjQ2IDEyLjg0IDE1LjY2QzEyLjg0IDE3LjE1IDE0LjA1IDE4LjM2IDE1LjU0IDE4LjM2UzE4LjI0IDE3LjE1IDE4LjI0IDE1LjY2IDE3LjAzIDEyLjk3IDE1LjU0IDEyLjk3TTE1LjU0IDdDMTYuMjggNyAxNi44NyA3LjU5IDE2Ljg3IDguMzJTMTYuMjggOS42NiAxNS41NCA5LjY2IDE0LjIxIDkuMDYgMTQuMjEgOC4zMiAxNC44IDcgMTUuNTQgN003Ljg1IDQuNjlDNy44NSAzLjk1IDguNDQgMy4zNSA5LjE4IDMuMzVDOS45MiAzLjM1IDEwLjUgMy45NSAxMC41IDQuNjlTOS45MiA2LjAzIDkuMTggNi4wM0M4LjQ0IDYuMDMgNy44NSA1LjQzIDcuODUgNC42OU0xMC41IDE5LjNDMTAuNSAyMC4wNCA5LjkyIDIwLjY0IDkuMTggMjAuNjRDOC40NCAyMC42NCA3Ljg1IDIwLjA0IDcuODUgMTkuM0M3Ljg1IDE4LjU2IDguNDQgMTcuOTYgOS4xOCAxNy45NkM5LjkyIDE3Ljk2IDEwLjUgMTguNTYgMTAuNSAxOS4zTTkuMTggMTMuODlDOC4xMiAxMy44OSA3LjI2IDEzLjAzIDcuMjYgMTEuOTdDNy4yNiAxMC45MSA4LjEyIDEwLjA1IDkuMTggMTAuMDVTMTEuMSAxMC45MSAxMS4xIDExLjk3QzExLjEgMTMuMDMgMTAuMjQgMTMuODkgOS4xOCAxMy44OU0xNS41NCAxN0MxNC44IDE3IDE0LjIxIDE2LjQgMTQuMjEgMTUuNjZTMTQuOCAxNC4zMyAxNS41NCAxNC4zMyAxNi44NyAxNC45MyAxNi44NyAxNS42NiAxNi4yOCAxNyAxNS41NCAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcGkgPSBcIk03IDdINUEyIDIgMCAwIDAgMyA5VjE3SDVWMTNIN1YxN0g5VjlBMiAyIDAgMCAwIDcgN003IDExSDVWOUg3TTE0IDdIMTBWMTdIMTJWMTNIMTRBMiAyIDAgMCAwIDE2IDExVjlBMiAyIDAgMCAwIDE0IDdNMTQgMTFIMTJWOUgxNE0yMCA5VjE1SDIxVjE3SDE3VjE1SDE4VjlIMTdWN0gyMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwaU9mZiA9IFwiTTcgMTFINVY5SDdNMTQgN0gxMS4zOEwxMy4yOSA5SDE0VjkuNzVMMTUuODcgMTEuNzFDMTUuOTUgMTEuNSAxNiAxMS4yNSAxNiAxMVY5QzE2IDcuOSAxNS4xMSA3IDE0IDdNNC40NSAyLjYyTDMgNEw1Ljg2IDdINUMzLjkgNyAzIDcuOSAzIDlWMTdINVYxM0g3VjE3SDlWMTAuM0wxMCAxMS4zNFYxN0gxMlYxMy40NUwxOS41NSAyMS4zOEwyMSAyME0yMC45IDE3SDIxVjE1SDIwVjlIMjFWN0gxN1Y5SDE4VjEzLjk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlID0gXCJNMTguNzEsMTkuNUMxNy44OCwyMC43NCAxNywyMS45NSAxNS42NiwyMS45N0MxNC4zMiwyMiAxMy44OSwyMS4xOCAxMi4zNywyMS4xOEMxMC44NCwyMS4xOCAxMC4zNywyMS45NSA5LjEsMjJDNy43OSwyMi4wNSA2LjgsMjAuNjggNS45NiwxOS40N0M0LjI1LDE3IDIuOTQsMTIuNDUgNC43LDkuMzlDNS41Nyw3Ljg3IDcuMTMsNi45MSA4LjgyLDYuODhDMTAuMSw2Ljg2IDExLjMyLDcuNzUgMTIuMTEsNy43NUMxMi44OSw3Ljc1IDE0LjM3LDYuNjggMTUuOTIsNi44NEMxNi41Nyw2Ljg3IDE4LjM5LDcuMSAxOS41Niw4LjgyQzE5LjQ3LDguODggMTcuMzksMTAuMSAxNy40MSwxMi42M0MxNy40NCwxNS42NSAyMC4wNiwxNi42NiAyMC4wOSwxNi42N0MyMC4wNiwxNi43NCAxOS42NywxOC4xMSAxOC43MSwxOS41TTEzLDMuNUMxMy43MywyLjY3IDE0Ljk0LDIuMDQgMTUuOTQsMkMxNi4wNywzLjE3IDE1LjYsNC4zNSAxNC45LDUuMTlDMTQuMjEsNi4wNCAxMy4wNyw2LjcgMTEuOTUsNi42MUMxMS44LDUuNDYgMTIuMzYsNC4yNiAxMywzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGVBaXJwbGF5ID0gXCJNNiwyMkgxOEwxMiwxNk0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxN0EyLDIgMCAwLDAgMywxOUg3VjE3SDNWNUgyMVYxN0gxN1YxOUgyMUEyLDIgMCAwLDAgMjMsMTdWNUEyLDIgMCAwLDAgMjEsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUZpbmRlciA9IFwiTTggMTFDNy40NSAxMSA3IDEwLjU1IDcgMTBWOEM3IDcuNDUgNy40NSA3IDggN0M4LjU1IDcgOSA3LjQ1IDkgOFYxMEM5IDEwLjU1IDguNTUgMTEgOCAxMU0xNyAxMFY4QzE3IDcuNDUgMTYuNTUgNyAxNiA3QzE1LjQ1IDcgMTUgNy40NSAxNSA4VjEwQzE1IDEwLjU1IDE1LjQ1IDExIDE2IDExQzE2LjU1IDExIDE3IDEwLjU1IDE3IDEwTTIyIDVWMjBDMjIgMjEuMSAyMS4xIDIyIDIwIDIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjVDMiAzLjkgMi45IDMgNCAzSDIwQzIxLjEgMyAyMiAzLjkgMjIgNU00IDIwTDEzLjA2IDIwQzEyLjk2IDE5LjM1IDEyLjg5IDE4LjY0IDEyLjgzIDE3Ljk0QzEyLjU2IDE3Ljk2IDEyLjMgMTggMTIgMThDOC4yNCAxOCA2LjMxIDE1LjczIDYuMjMgMTUuNjNDNS44OCAxNS4yMSA1Ljk0IDE0LjU4IDYuMzYgMTQuMjJDNi43OCAxMy44NyA3LjQxIDEzLjkzIDcuNzcgMTQuMzVDNy44MyAxNC40MyA5LjIzIDE2IDEyIDE2QzEyLjI3IDE2IDEyLjUgMTUuOTcgMTIuNzQgMTUuOTVDMTIuNzEgMTQuNzUgMTIuNzMgMTMuNzQgMTIuNzQgMTMuMjZIMTAuOTNDMTAuMjggMTMuMjYgOS43NSAxMi43IDkuNzUgMTJDOS43NyAxMS43NSAxMC4wNyA3LjgyIDExIDVINEw0IDIwTTIwIDIwTDIwIDVIMTIuNkMxMS43NCA3LjE5IDExLjM3IDEwLjczIDExLjI3IDExLjc2SDEzLjA4QzEzLjcyIDExLjc2IDE0LjI1IDEyLjMyIDE0LjI1IDEzQzE0LjI1IDEzLjA0IDE0LjIxIDE0LjE1IDE0LjI0IDE1LjZDMTUuNTQgMTUuMTEgMTYuMjIgMTQuMzUgMTYuMjMgMTQuMzRDMTYuNTggMTMuOTIgMTcuMjEgMTMuODUgMTcuNjMgMTQuMkMxOC4wNiAxNC41NSAxOC4xMiAxNS4xOCAxNy43NyAxNS42MUMxNy43MSAxNS42OCAxNi41NSAxNy4wNSAxNC4zMiAxNy42OEMxNC4zOCAxOC41IDE0LjQ2IDE5LjI5IDE0LjU4IDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlSWNsb3VkID0gXCJNMjIsMTUuMDRDMjIsMTcuMjMgMjAuMjQsMTkgMTguMDcsMTlINS45M0MzLjc2LDE5IDIsMTcuMjMgMiwxNS4wNEMyLDEzLjA3IDMuNDMsMTEuNDQgNS4zMSwxMS4xNEM1LjI4LDExIDUuMjcsMTAuODYgNS4yNywxMC43MUM1LjI3LDkuMzMgNi4zOCw4LjIgNy43Niw4LjJDOC4zNyw4LjIgOC45NCw4LjQzIDkuMzcsOC44QzEwLjE0LDcuMDUgMTEuMTMsNS40NCAxMy45MSw1LjQ0QzE3LjI4LDUuNDQgMTguODcsOC4wNiAxOC44NywxMC44M0MxOC44NywxMC45NCAxOC44NywxMS4wNiAxOC44NiwxMS4xN0MyMC42NSwxMS41NCAyMiwxMy4xMyAyMiwxNS4wNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUlvcyA9IFwiTTIuMDkgMTYuOEgzLjc1VjkuNzZIMi4wOU0yLjkyIDguODRDMy40NCA4Ljg0IDMuODQgOC40NCAzLjg0IDcuOTRDMy44NCA3LjQ0IDMuNDQgNy4wNCAyLjkyIDcuMDRDMi40IDcuMDQgMiA3LjQ0IDIgNy45NEMyIDguNDQgMi40IDguODQgMi45MiA4Ljg0TTkuMjUgNy4wNkM2LjQ2IDcuMDYgNC43IDguOTYgNC43IDEyQzQuNyAxNS4wNiA2LjQ2IDE2Ljk2IDkuMjUgMTYuOTZDMTIuMDQgMTYuOTYgMTMuOCAxNS4wNiAxMy44IDEyQzEzLjggOC45NiAxMi4wNCA3LjA2IDkuMjUgNy4wNk05LjI1IDguNUMxMC45NiA4LjUgMTIuMDUgOS44NyAxMi4wNSAxMkMxMi4wNSAxNC4xNSAxMC45NiAxNS41IDkuMjUgMTUuNUM3LjU0IDE1LjUgNi40NiAxNC4xNSA2LjQ2IDEyQzYuNDYgOS44NyA3LjU0IDguNSA5LjI1IDguNU0xNC41IDE0LjExQzE0LjU3IDE1Ljg3IDE2IDE2Ljk2IDE4LjIyIDE2Ljk2QzIwLjU0IDE2Ljk2IDIyIDE1LjgyIDIyIDE0QzIyIDEyLjU3IDIxLjE4IDExLjc3IDE5LjIzIDExLjMyTDE4LjEzIDExLjA3QzE2Ljk1IDEwLjc5IDE2LjQ3IDEwLjQyIDE2LjQ3IDkuNzhDMTYuNDcgOSAxNy4yIDguNDUgMTguMjggOC40NUMxOS4zOCA4LjQ1IDIwLjEzIDkgMjAuMjEgOS44OUgyMS44NEMyMS44IDguMiAyMC40MSA3LjA2IDE4LjI5IDcuMDZDMTYuMjEgNy4wNiAxNC43MyA4LjIxIDE0LjczIDkuOTFDMTQuNzMgMTEuMjggMTUuNTYgMTIuMTMgMTcuMzMgMTIuNTNMMTguNTcgMTIuODJDMTkuNzggMTMuMTEgMjAuMjcgMTMuNSAyMC4yNyAxNC4yQzIwLjI3IDE1IDE5LjQ3IDE1LjU3IDE4LjMxIDE1LjU3QzE3LjE1IDE1LjU3IDE2LjI2IDE1IDE2LjE2IDE0LjExSDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGVLZXlib2FyZENhcHMgPSBcIk0xNSwxNFY4SDE3LjE3TDEyLDIuODNMNi44Myw4SDlWMTRIMTVNMTIsMEwyMiwxMEgxN1YxNkg3VjEwSDJMMTIsME03LDE4SDE3VjI0SDdWMThNMTUsMjBIOVYyMkgxNVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkQ29tbWFuZCA9IFwiTTYsMkE0LDQgMCAwLDEgMTAsNlY4SDE0VjZBNCw0IDAgMCwxIDE4LDJBNCw0IDAgMCwxIDIyLDZBNCw0IDAgMCwxIDE4LDEwSDE2VjE0SDE4QTQsNCAwIDAsMSAyMiwxOEE0LDQgMCAwLDEgMTgsMjJBNCw0IDAgMCwxIDE0LDE4VjE2SDEwVjE4QTQsNCAwIDAsMSA2LDIyQTQsNCAwIDAsMSAyLDE4QTQsNCAwIDAsMSA2LDE0SDhWMTBINkE0LDQgMCAwLDEgMiw2QTQsNCAwIDAsMSA2LDJNMTYsMThBMiwyIDAgMCwwIDE4LDIwQTIsMiAwIDAsMCAyMCwxOEEyLDIgMCAwLDAgMTgsMTZIMTZWMThNMTQsMTBIMTBWMTRIMTRWMTBNNiwxNkEyLDIgMCAwLDAgNCwxOEEyLDIgMCAwLDAgNiwyMEEyLDIgMCAwLDAgOCwxOFYxNkg2TTgsNkEyLDIgMCAwLDAgNiw0QTIsMiAwIDAsMCA0LDZBMiwyIDAgMCwwIDYsOEg4VjZNMTgsOEEyLDIgMCAwLDAgMjAsNkEyLDIgMCAwLDAgMTgsNEEyLDIgMCAwLDAgMTYsNlY4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlS2V5Ym9hcmRDb250cm9sID0gXCJNMTkuNzgsMTEuNzhMMTguMzYsMTMuMTlMMTIsNi44M0w1LjY0LDEzLjE5TDQuMjIsMTEuNzhMMTIsNEwxOS43OCwxMS43OFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkT3B0aW9uID0gXCJNMyw0SDkuMTFMMTYuMTUsMThIMjFWMjBIMTQuODhMNy44NCw2SDNWNE0xNCw0SDIxVjZIMTRWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkU2hpZnQgPSBcIk0xNSwxOFYxMkgxNy4xN0wxMiw2LjgzTDYuODMsMTJIOVYxOEgxNU0xMiw0TDIyLDE0SDE3VjIwSDdWMTRIMkwxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlU2FmYXJpID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjA5IDQuOCwxNiA2LjExLDE3LjQxTDkuODgsOS44OEwxNy40MSw2LjExQzE2LDQuOCAxNC4wOSw0IDEyLDRNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQzIwLDkuOTEgMTkuMiw4IDE3Ljg5LDYuNTlMMTQuMTIsMTQuMTJMNi41OSwxNy44OUM4LDE5LjIgOS45MSwyMCAxMiwyME0xMiwxMkwxMS4yMywxMS4yM0w5LjcsMTQuM0wxMi43NywxMi43N0wxMiwxMk0xMiwxNy41SDEzVjE5SDEyVjE3LjVNMTUuODgsMTUuODlMMTYuNTksMTUuMThMMTcuNjUsMTYuMjRMMTYuOTQsMTYuOTVMMTUuODgsMTUuODlNMTcuNSwxMlYxMUgxOVYxMkgxNy41TTEyLDYuNUgxMVY1SDEyVjYuNU04LjEyLDguMTFMNy40MSw4LjgyTDYuMzUsNy43Nkw3LjA2LDcuMDVMOC4xMiw4LjExTTYuNSwxMlYxM0g1VjEySDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsaWNhdGlvbiA9IFwiTTE5LDRDMjAuMTEsNCAyMSw0LjkgMjEsNlYxOEEyLDIgMCAwLDEgMTksMjBINUMzLjg5LDIwIDMsMTkuMSAzLDE4VjZBMiwyIDAgMCwxIDUsNEgxOU0xOSwxOFY4SDVWMThIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25Db2cgPSBcIk0yMS43IDE4LjZWMTcuNkwyMi44IDE2LjhDMjIuOSAxNi43IDIzIDE2LjYgMjIuOSAxNi41TDIxLjkgMTQuOEMyMS45IDE0LjcgMjEuNyAxNC43IDIxLjYgMTQuN0wyMC40IDE1LjJDMjAuMSAxNSAxOS44IDE0LjggMTkuNSAxNC43TDE5LjMgMTMuNEMxOS4zIDEzLjMgMTkuMiAxMy4yIDE5LjEgMTMuMkgxNy4xQzE2LjkgMTMuMiAxNi44IDEzLjMgMTYuOCAxMy40TDE2LjYgMTQuN0MxNi4zIDE0LjkgMTYuMSAxNSAxNS44IDE1LjJMMTQuNiAxNC43QzE0LjUgMTQuNyAxNC40IDE0LjcgMTQuMyAxNC44TDEzLjMgMTYuNUMxMy4zIDE2LjYgMTMuMyAxNi43IDEzLjQgMTYuOEwxNC41IDE3LjZWMTguNkwxMy40IDE5LjRDMTMuMyAxOS41IDEzLjIgMTkuNiAxMy4zIDE5LjdMMTQuMyAyMS40QzE0LjQgMjEuNSAxNC41IDIxLjUgMTQuNiAyMS41TDE1LjggMjFDMTYgMjEuMiAxNi4zIDIxLjQgMTYuNiAyMS41TDE2LjggMjIuOEMxNi45IDIyLjkgMTcgMjMgMTcuMSAyM0gxOS4xQzE5LjIgMjMgMTkuMyAyMi45IDE5LjMgMjIuOEwxOS41IDIxLjVDMTkuOCAyMS4zIDIwIDIxLjIgMjAuMyAyMUwyMS41IDIxLjRDMjEuNiAyMS40IDIxLjcgMjEuNCAyMS44IDIxLjNMMjIuOCAxOS42QzIyLjkgMTkuNSAyMi45IDE5LjQgMjIuOCAxOS40TDIxLjcgMTguNk0xOCAxOS41QzE3LjIgMTkuNSAxNi41IDE4LjggMTYuNSAxOFMxNy4yIDE2LjUgMTggMTYuNSAxOS41IDE3LjIgMTkuNSAxOCAxOC44IDE5LjUgMTggMTkuNU0xMS4yOSAyMEg1QzMuODkgMjAgMyAxOS4xIDMgMThWNkMzIDQuODkgMy45IDQgNSA0SDE5QzIwLjExIDQgMjEgNC45IDIxIDZWMTEuNjhDMjAuMzggMTEuMzkgMTkuNzEgMTEuMTggMTkgMTEuMDhWOEg1VjE4SDExQzExIDE4LjcgMTEuMTEgMTkuMzcgMTEuMjkgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25FeHBvcnQgPSBcIk04LDEySDE3Ljc2TDE1LjI2LDkuNUwxNi42Nyw4LjA4TDIxLjU5LDEzTDE2LjY3LDE3LjkyTDE1LjI2LDE2LjVMMTcuNzYsMTRIOFYxMk0xOSwzQzIwLjExLDMgMjEsMy45IDIxLDVWOS42N0wxOSw3LjY3VjdINVYxOUgxOVYxOC4zM0wyMSwxNi4zM1YxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsaWNhdGlvbkltcG9ydCA9IFwiTTEsMTJIMTAuNzZMOC4yNiw5LjVMOS42Nyw4LjA4TDE0LjU5LDEzTDkuNjcsMTcuOTJMOC4yNiwxNi41TDEwLjc2LDE0SDFWMTJNMTksM0MyMC4xMSwzIDIxLDMuOSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWMTZINVYxOUgxOVY3SDVWMTBIM1Y1QTIsMiAwIDAsMSA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25TZXR0aW5ncyA9IFwiTTcgMjJIOVYyNEg3VjIyTTExIDIySDEzVjI0SDExVjIyTTE1IDIySDE3VjI0SDE1VjIyTTUgNEgxOUEyIDIgMCAwIDEgMjEgNlYxOEEyIDIgMCAwIDEgMTkgMjBINUEyIDIgMCAwIDEgMyAxOFY2QTIgMiAwIDAgMSA1IDRNNSA4VjE4SDE5VjhINVwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcHJveGltYXRlbHlFcXVhbCA9IFwiTTE4LjkgOS4yQzE4LjEgMTAuMSAxNi42IDExIDE1IDExQzEzLjUgMTEgMTIuNiAxMC41IDExLjggMTAuMUMxMSA5LjggMTAuMiA5LjMgOC45IDkuM0M3LjcgOS4zIDYuNiAxMCA2IDEwLjZMNSA5LjFDNS45IDguMiA3LjMgNy4yIDguOSA3LjJDMTAuNCA3LjIgMTEuMyA3LjggMTIuMSA4LjFDMTIuOSA4LjQgMTMuNyA5IDE1IDlDMTYuMiA5IDE3LjMgOC4yIDE3LjkgNy42TDE4LjkgOS4yTTE5IDE0LjFDMTguMSAxNSAxNi43IDE2IDE1LjEgMTZDMTMuNiAxNiAxMi43IDE1LjUgMTEuOSAxNS4xQzExLjEgMTQuOCAxMC4zIDE0LjIgOSAxNC4yQzcuOCAxNC4yIDYuNyAxNSA2LjEgMTUuNkw1LjEgMTRDNiAxMy4xIDcuNCAxMi4xIDkgMTIuMUMxMC41IDEyLjEgMTEuNCAxMi42IDEyLjIgMTNDMTMgMTMuMyAxMy44IDEzLjggMTUuMSAxMy44QzE2LjMgMTMuOCAxNy40IDEzIDE4IDEyLjRMMTkgMTQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHByb3hpbWF0ZWx5RXF1YWxCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNOS4zIDguMkMxMC42IDguMiAxMS40IDguNyAxMi4xIDlDMTIuNyA5LjMgMTMuNCA5LjcgMTQuNSA5LjdDMTUuNSA5LjcgMTYuNSA5IDE3IDguNUwxNy44IDkuOEMxNy4xIDEwLjYgMTUuOCAxMS40IDE0LjQgMTEuNEMxMy4xIDExLjQgMTIuMyAxMC45IDExLjcgMTAuNkMxMS4xIDEwLjMgMTAuMyA5LjkgOS4yIDkuOUM4LjIgOS45IDcuMiAxMC42IDYuNyAxMS4xTDYgOS44QzYuNyA5IDggOC4yIDkuMyA4LjJNMTQuNiAxNS44QzEzLjMgMTUuOCAxMi41IDE1LjMgMTEuOCAxNUMxMS4yIDE0LjcgMTAuNCAxNC4zIDkuMyAxNC4zQzguMyAxNC4zIDcuMyAxNSA2LjggMTUuNUw2IDE0LjFDNi43IDEzLjMgOCAxMi41IDkuMyAxMi41QzEwLjYgMTIuNSAxMS40IDEzIDEyLjEgMTMuM0MxMi43IDEzLjYgMTMuNCAxNCAxNC42IDE0QzE1LjYgMTQgMTYuNiAxMy4zIDE3LjEgMTIuOEwxNy45IDE0LjFDMTcuMyAxNSAxNiAxNS44IDE0LjYgMTUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBzID0gXCJNMTYsMjBIMjBWMTZIMTZNMTYsMTRIMjBWMTBIMTZNMTAsOEgxNFY0SDEwTTE2LDhIMjBWNEgxNk0xMCwxNEgxNFYxMEgxME00LDE0SDhWMTBINE00LDIwSDhWMTZINE0xMCwyMEgxNFYxNkgxME00LDhIOFY0SDRWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBzQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM003LDdWOUg5VjdIN00xMSw3VjlIMTNWN0gxMU0xNSw3VjlIMTdWN0gxNU03LDExVjEzSDlWMTFIN00xMSwxMVYxM0gxM1YxMUgxMU0xNSwxMVYxM0gxN1YxMUgxNU03LDE1VjE3SDlWMTVIN00xMSwxNVYxN0gxM1YxNUgxMU0xNSwxNVYxN0gxN1YxNUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcmNoID0gXCJNMTIsMkMxMS4xMSw0LjE4IDEwLjU3LDUuNjEgOS41OCw3LjczQzEwLjE5LDguMzcgMTAuOTMsOS4xMiAxMi4xNCw5Ljk3QzEwLjg0LDkuNDMgOS45NSw4LjkgOS4yOSw4LjM0QzgsMTEgNi4wMywxNC43NSAyLDIyQzUuMTcsMjAuMTcgNy42MywxOS4wNCA5LjkyLDE4LjYxQzkuODIsMTguMTkgOS43NiwxNy43MyA5Ljc3LDE3LjI1VjE3LjE1QzkuODIsMTUuMTIgMTAuODgsMTMuNTYgMTIuMTMsMTMuNjdDMTMuMzgsMTMuNzcgMTQuMzUsMTUuNSAxNC4zLDE3LjU0QzE0LjI5LDE3LjkyIDE0LjI1LDE4LjI5IDE0LjE4LDE4LjYzQzE2LjQ0LDE5LjA3IDE4Ljg3LDIwLjE5IDIyLDIyQzIxLjM4LDIwLjg2IDIwLjgzLDE5Ljg0IDIwLjMxLDE4Ljg3QzE5LjUsMTguMjMgMTguNjEsMTcuMzkgMTYuODUsMTYuNUMxOC4wNiwxNi44IDE4LjkzLDE3LjE2IDE5LjYxLDE3LjU3QzE0LjI2LDcuNjIgMTMuODMsNi4zIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZSA9IFwiTTMsM0gyMVY3SDNWM000LDhIMjBWMjFINFY4TTkuNSwxMUEwLjUsMC41IDAgMCwwIDksMTEuNVYxM0gxNVYxMS41QTAuNSwwLjUgMCAwLDAgMTQuNSwxMUg5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZUFsZXJ0ID0gXCJNMiA0SDE4VjdIMlY0TTMgOEgxN1YyMEgzVjhNNy41IDExQzcuMjIgMTEgNyAxMS4yMiA3IDExLjVWMTNIMTNWMTEuNUMxMyAxMS4yMiAxMi43OCAxMSAxMi41IDExSDcuNU0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBbGVydE91dGxpbmUgPSBcIk0yIDRIMThWN0gyVjRNNy41IDExSDEyLjVDMTIuNzggMTEgMTMgMTEuMjIgMTMgMTEuNVYxM0g3VjExLjVDNyAxMS4yMiA3LjIyIDExIDcuNSAxMU0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwTTMgOEg1VjE4SDE1VjhIMTdWMjBIM1Y4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBcnJvd0Rvd24gPSBcIk0zIDNIMjFWN0gzVjNNNCAyMVY4SDIwVjIxSDRNMTQgMTRWMTFIMTBWMTRIN0wxMiAxOUwxNyAxNEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcmNoaXZlQXJyb3dEb3duT3V0bGluZSA9IFwiTTIwIDIxSDRWMTBINlYxOUgxOFYxMEgyMFYyMU0zIDNIMjFWOUgzVjNNNSA1VjdIMTlWNU0xMC41IDExVjE0SDhMMTIgMThMMTYgMTRIMTMuNVYxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBcnJvd1VwID0gXCJNNCAyMUgyMFY4SDRNMTQgMTVWMThIMTBWMTVIN0wxMiAxMEwxNyAxNU0zIDNIMjFWN0gzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZUFycm93VXBPdXRsaW5lID0gXCJNMjAgMjFINFYxMEg2VjE5SDE4VjEwSDIwVjIxTTMgM0gyMVY5SDNWM001IDVWN0gxOVY1TTEwLjUgMTdWMTRIOEwxMiAxMEwxNiAxNEgxMy41VjE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZU91dGxpbmUgPSBcIk0yMCAyMUg0VjEwSDZWMTlIMThWMTBIMjBWMjFNMyAzSDIxVjlIM1YzTTkuNSAxMUgxNC41QzE0Ljc4IDExIDE1IDExLjIyIDE1IDExLjVWMTNIOVYxMS41QzkgMTEuMjIgOS4yMiAxMSA5LjUgMTFNNSA1VjdIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFybUZsZXggPSBcIk0zIDE4LjM0QzMgMTguMzQgNCA3LjA5IDcgM0wxMiA0TDExIDcuMDlIOVYxNC4yNUgxMEMxMiAxMS4xOCAxNi4xNCAxMC4wNiAxOC42NCAxMS4xOEMyMS45NCAxMi43MSAyMS42NCAxNy4zMiAxOC42NCAxOS4zNkMxNi4yNCAyMSA5IDIyLjQzIDMgMTguMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJtRmxleE91dGxpbmUgPSBcIk03IDcuNzZWMTYuMjVIMTEuMDhMMTEuNjggMTUuMzRDMTIuODQgMTMuNTUgMTQuOTMgMTIuNzUgMTYuNDcgMTIuNzVDMTcgMTIuNzUgMTcuNDUgMTIuODQgMTcuNzkgMTNDMTguNyAxMy40MSAxOC45NSAxNC4xOCAxOSAxNC43NEMxOS4wOCAxNS44NyAxOC41IDE3LjAzIDE3LjUgMTcuNzFDMTYuNiAxOC4zMyAxNC40NCAxOSAxMS44NyAxOUMxMC4xMiAxOSA3LjYxIDE4LjY5IDUuMTIgMTcuM0M1LjQxIDE0Ljg1IDYgMTAuODggNyA3Ljc2TTcgM0M0IDcuMDkgMyAxOC4zNCAzIDE4LjM0QzUuOSAyMC4zMSA5LjA4IDIxIDExLjg3IDIxQzE0Ljg2IDIxIDE3LjM5IDIwLjIxIDE4LjY0IDE5LjM2QzIxLjY0IDE3LjMyIDIxLjk0IDEyLjcxIDE4LjY0IDExLjE4QzE4IDEwLjg5IDE3LjI2IDEwLjc1IDE2LjQ3IDEwLjc1QzE0LjE3IDEwLjc1IDExLjUgMTEuOTYgMTAgMTQuMjVIOVY3LjA5SDExTDEyIDRMNyAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycmFuZ2VCcmluZ0ZvcndhcmQgPSBcIk0yLDJIMTZWMTZIMlYyTTIyLDhWMjJIOFYxOEgxMFYyMEgyMFYxMEgxOFY4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycmFuZ2VCcmluZ1RvRnJvbnQgPSBcIk0yLDJIMTFWNkg5VjRINFY5SDZWMTFIMlYyTTIyLDEzVjIySDEzVjE4SDE1VjIwSDIwVjE1SDE4VjEzSDIyTTgsOEgxNlYxNkg4VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyYW5nZVNlbmRCYWNrd2FyZCA9IFwiTTIsMkgxNlYxNkgyVjJNMjIsOFYyMkg4VjE4SDE4VjhIMjJNNCw0VjE0SDE0VjRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJhbmdlU2VuZFRvQmFjayA9IFwiTTIsMkgxMVYxMUgyVjJNOSw0SDRWOUg5VjRNMjIsMTNWMjJIMTNWMTNIMjJNMTUsMjBIMjBWMTVIMTVWMjBNMTYsOFYxMUgxM1Y4SDE2TTExLDE2SDhWMTNIMTFWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dBbGwgPSBcIk0xMywxMUgxOEwxNi41LDkuNUwxNy45Miw4LjA4TDIxLjg0LDEyTDE3LjkyLDE1LjkyTDE2LjUsMTQuNUwxOCwxM0gxM1YxOEwxNC41LDE2LjVMMTUuOTIsMTcuOTJMMTIsMjEuODRMOC4wOCwxNy45Mkw5LjUsMTYuNUwxMSwxOFYxM0g2TDcuNSwxNC41TDYuMDgsMTUuOTJMMi4xNiwxMkw2LjA4LDguMDhMNy41LDkuNUw2LDExSDExVjZMOS41LDcuNUw4LjA4LDYuMDhMMTIsMi4xNkwxNS45Miw2LjA4TDE0LjUsNy41TDEzLDZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dCb3R0b21MZWZ0ID0gXCJNMTksNi40MUwxNy41OSw1TDcsMTUuNTlWOUg1VjE5SDE1VjE3SDguNDFMMTksNi40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbUxlZnRCb2xkT3V0bGluZSA9IFwiTTE4LjM2LDE5Ljc4SDQuMjJWNS42NEw4LjQ3LDkuODhMMTQuMTIsNC4yMkwxOS43OCw5Ljg4TDE0LjEyLDE1LjU0TDE4LjM2LDE5Ljc4TTYuMzQsMTcuNjZIMTMuNDFMMTEuMjksMTUuNTRMMTYuOTUsOS44OEwxNC4xMiw3LjA1TDguNDYsMTIuNzFMNi4zNCwxMC41OVYxNy42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbUxlZnRUaGljayA9IFwiTTE1LjUsNS42OUwxOC4zMSw4LjVMMTEuOTQsMTQuODlIMTYuODlWMTguMzFINS42OVY3LjExSDkuMTJWMTIuMDZMMTUuNSw1LjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tTGVmdFRoaW5DaXJjbGVPdXRsaW5lID0gXCJNMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdDNy41OSAzLjk3IDMuOTcgNy41OSAzLjk3IDEyQzMuOTcgMTYuNDEgNy41OSAyMC4wMyAxMiAyMC4wM00xMiAyMkM2LjQ2IDIyIDIgMTcuNTQgMiAxMkMyIDYuNDYgNi40NiAyIDEyIDJDMTcuNTQgMiAyMiA2LjQ2IDIyIDEyQzIyIDE3LjU0IDE3LjU0IDIyIDEyIDIyTTEwLjEyIDEyLjQ3TDggMTAuMzZWMTZIMTMuNjRMMTEuNTMgMTMuODhMMTYuNSA4LjlMMTUuMSA3LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbVJpZ2h0ID0gXCJNNSw2LjQxTDYuNDEsNUwxNywxNS41OVY5SDE5VjE5SDlWMTdIMTUuNTlMNSw2LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tUmlnaHRCb2xkT3V0bGluZSA9IFwiTTkuODgsMTUuNTRMNC4yMiw5Ljg4TDkuODgsNC4yMkwxNS41NCw5Ljg4TDE5Ljc4LDUuNjRWMTkuNzhINS42NEw5Ljg4LDE1LjU0TTE3LjY2LDEwLjU5TDE1LjU0LDEyLjcxTDkuODgsNy4wNUw3LjA1LDkuODhMMTIuNzEsMTUuNTRMMTAuNTksMTcuNjZIMTcuNjZWMTAuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dCb3R0b21SaWdodFRoaWNrID0gXCJNMTQuODksMTIuMDZWNy4xMUgxOC4zMVYxOC4zMUg3LjExVjE0Ljg5SDEyLjA2TDUuNjksOC41TDguNSw1LjY5TDE0Ljg5LDEyLjA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tUmlnaHRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgNy41OSA3LjU5IDMuOTcgMTIgMy45N0MxNi40MSAzLjk3IDIwLjAzIDcuNTkgMjAuMDMgMTJDMjAuMDMgMTYuNDEgMTYuNDEgMjAuMDMgMTIgMjAuMDNNMTIgMjJDMTcuNTQgMjIgMjIgMTcuNTQgMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDNi40NiAyIDIgNi40NiAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMk0xMy44OCAxMi40N0wxNiAxMC4zNlYxNkgxMC4zNkwxMi40NyAxMy44OEw3LjUgOC45TDguOSA3LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlID0gXCJNMTkuNSwzLjA5TDE1LDcuNTlWNEgxM1YxMUgyMFY5SDE2LjQxTDIwLjkxLDQuNUwxOS41LDMuMDlNNCwxM1YxNUg3LjU5TDMuMDksMTkuNUw0LjUsMjAuOTFMOSwxNi40MVYyMEgxMVYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VBbGwgPSBcIk0xOS41LDMuMDlMMjAuOTEsNC41TDE2LjQxLDlIMjBWMTFIMTNWNEgxNVY3LjU5TDE5LjUsMy4wOU0yMC45MSwxOS41TDE5LjUsMjAuOTFMMTUsMTYuNDFWMjBIMTNWMTNIMjBWMTVIMTYuNDFMMjAuOTEsMTkuNU00LjUsMy4wOUw5LDcuNTlWNEgxMVYxMUg0VjlINy41OUwzLjA5LDQuNUw0LjUsMy4wOU0zLjA5LDE5LjVMNy41OSwxNUg0VjEzSDExVjIwSDlWMTYuNDFMNC41LDIwLjkxTDMuMDksMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlRG93biA9IFwiTTE5LjkyLDEyLjA4TDEyLDIwTDQuMDgsMTIuMDhMNS41LDEwLjY3TDExLDE2LjE3VjJIMTNWMTYuMTdMMTguNSwxMC42NkwxOS45MiwxMi4wOE0xMiwyMEgyVjIySDIyVjIwSDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VIb3Jpem9udGFsID0gXCJNMTMsMjBWNEgxNS4wM1YyMEgxM00xMCwyMFY0SDEyLjAzVjIwSDEwTTUsOEw5LjAzLDEyTDUsMTZWMTNIMlYxMUg1VjhNMjAsMTZMMTYsMTJMMjAsOFYxMUgyM1YxM0gyMFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlTGVmdCA9IFwiTTExLjkyLDE5LjkyTDQsMTJMMTEuOTIsNC4wOEwxMy4zMyw1LjVMNy44MywxMUgyMlYxM0g3LjgzTDEzLjM0LDE4LjVMMTEuOTIsMTkuOTJNNCwxMlYySDJWMjJINFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlUmlnaHQgPSBcIk0xMi4wOCw0LjA4TDIwLDEyTDEyLjA4LDE5LjkyTDEwLjY3LDE4LjVMMTYuMTcsMTNIMlYxMUgxNi4xN0wxMC42Nyw1LjVMMTIuMDgsNC4wOE0yMCwxMlYyMkgyMlYySDIwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VVcCA9IFwiTTQuMDgsMTEuOTJMMTIsNEwxOS45MiwxMS45MkwxOC41LDEzLjMzTDEzLDcuODNWMjJIMTFWNy44M0w1LjUsMTMuMzNMNC4wOCwxMS45Mk0xMiw0SDIyVjJIMlY0SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VWZXJ0aWNhbCA9IFwiTTQsMTJIMjBWMTRINFYxMk00LDlIMjBWMTFINFY5TTE2LDRMMTIsOEw4LDRIMTFWMUgxM1Y0SDE2TTgsMTlMMTIsMTVMMTYsMTlIMTNWMjJIMTFWMTlIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0RlY2lzaW9uID0gXCJNMTEsNUg4TDEyLDFMMTYsNUgxM1Y5LjQzQzEyLjI1LDkuODkgMTEuNTgsMTAuNDYgMTEsMTEuMTJWNU0yMiwxMUwxOCw3VjEwQzE0LjM5LDkuODUgMTEuMzEsMTIuNTcgMTEsMTYuMTdDOS40NCwxNi43MiA4LjYyLDE4LjQ0IDkuMTcsMjBDOS43MiwyMS41NiAxMS40NCwyMi4zOCAxMywyMS44M0MxNC41NiwyMS4yNyAxNS4zOCwxOS41NiAxNC44MywxOEMxNC41MywxNy4xNCAxMy44NSwxNi40NyAxMywxNi4xN0MxMy40NywxMi4xNyAxNy40NywxMS45NyAxNy45NSwxMS45N1YxNC45N0wyMiwxMU0xMC42MywxMS41OUM5LjMsMTAuNTcgNy42NywxMCA2LDEwVjdMMiwxMUw2LDE1VjEyQzcuMzQsMTIuMDMgOC42MywxMi41IDkuNjQsMTMuNEM5Ljg5LDEyLjc2IDEwLjIyLDEyLjE1IDEwLjYzLDExLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25BdXRvID0gXCJNMTIsNUg5TDEzLDFMMTcsNUgxNFY5LjQzQzEzLjI1LDkuODkgMTIuNTgsMTAuNDYgMTIsMTEuMTJWNU0xMC40LDE1SDguNUw3LjgsMTNINC42TDMuOSwxNUgyTDUuMiw2SDcuMkwxMC40LDE1TTcuMzUsMTEuNjVMNi4yLDhMNS4wNSwxMS42NUg3LjM1TTIzLDExTDE5LDdWMTBDMTUuMzksOS44NSAxMi4zMSwxMi41NyAxMiwxNi4xN0MxMC40NCwxNi43MiA5LjYyLDE4LjQ0IDEwLjE3LDIwQzEwLjcyLDIxLjU2IDEyLjQ0LDIyLjM4IDE0LDIxLjgzQzE1LjU2LDIxLjI3IDE2LjM4LDE5LjU2IDE1LjgzLDE4QzE1LjUzLDE3LjE0IDE0Ljg1LDE2LjQ3IDE0LDE2LjE3QzE0LjQ3LDEyLjE3IDE4LjQ3LDExLjk3IDE4Ljk1LDExLjk3VjE0Ljk3TDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25BdXRvT3V0bGluZSA9IFwiTTE5LDE1VjEyQzE4LjUsMTIgMTQuNSwxMi4xNiAxNC4wNSwxNi4yQzE1LjYxLDE2Ljc1IDE2LjQzLDE4LjQ3IDE1Ljg4LDIwLjAzQzE1LjMzLDIxLjU5IDEzLjYxLDIyLjQxIDEyLjA1LDIxLjg2QzEwLjUsMjEuMyA5LjY3LDE5LjU5IDEwLjIyLDE4LjAzQzEwLjUsMTcuMTcgMTEuMiwxNi41IDEyLjA1LDE2LjJDMTIuMzQsMTIuNjEgMTUuNCw5Ljg4IDE5LDEwVjdMMjMsMTFMMTksMTVNMTQsMTlBMSwxIDAgMCwwIDEzLDE4QTEsMSAwIDAsMCAxMiwxOUExLDEgMCAwLDAgMTMsMjBBMSwxIDAgMCwwIDE0LDE5TTEyLDExLjEyQzEyLjU4LDEwLjQ2IDEzLjI1LDkuODkgMTQsOS40M1Y1SDE3TDEzLDFMOSw1SDEyVjExLjEyTTcuMiw2SDUuMkwyLDE1SDMuOUw0LjYsMTNINy44TDguNSwxNUgxMC40TDcuMiw2TTUuMDUsMTEuNjVMNi4yLDhMNy4zNSwxMS42NUg1LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25PdXRsaW5lID0gXCJNOS42NCwxMy40QzguNjMsMTIuNSA3LjM0LDEyLjAzIDYsMTJWMTVMMiwxMUw2LDdWMTBDNy42NywxMCA5LjMsMTAuNTcgMTAuNjMsMTEuNTlDMTAuMjIsMTIuMTUgOS44OSwxMi43NiA5LjY0LDEzLjRNMTgsMTVWMTJDMTcuNSwxMiAxMy41LDEyLjE2IDEzLjA1LDE2LjJDMTQuNjEsMTYuNzUgMTUuNDMsMTguNDcgMTQuODgsMjAuMDNDMTQuMzMsMjEuNTkgMTIuNjEsMjIuNDEgMTEuMDUsMjEuODZDOS41LDIxLjMgOC42NywxOS41OSA5LjIyLDE4LjAzQzkuNSwxNy4xNyAxMC4yLDE2LjUgMTEuMDUsMTYuMkMxMS4zNCwxMi42MSAxNC40LDkuODggMTgsMTBWN0wyMiwxMUwxOCwxNU0xMywxOUExLDEgMCAwLDAgMTIsMThBMSwxIDAgMCwwIDExLDE5QTEsMSAwIDAsMCAxMiwyMEExLDEgMCAwLDAgMTMsMTlNMTEsMTEuMTJDMTEuNTgsMTAuNDYgMTIuMjUsOS44OSAxMyw5LjQzVjVIMTZMMTIsMUw4LDVIMTFWMTEuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duID0gXCJNMTEsNEgxM1YxNkwxOC41LDEwLjVMMTkuOTIsMTEuOTJMMTIsMTkuODRMNC4wOCwxMS45Mkw1LjUsMTAuNUwxMSwxNlY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGQgPSBcIk05LDRIMTVWMTJIMTkuODRMMTIsMTkuODRMNC4xNiwxMkg5VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duQm9sZEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTIsMTdMMTcsMTJIMTRWOEgxMFYxMkg3TDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRCb3hPdXRsaW5lID0gXCJNMTIsMTdMNywxMkgxMFY4SDE0VjEySDE3TDEyLDE3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25Cb2xkQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMTdMMTcsMTJIMTRWOEgxMFYxMkg3TDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRDaXJjbGVPdXRsaW5lID0gXCJNMTIsMTdMNywxMkgxMFY4SDE0VjEySDE3TDEyLDE3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25Cb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xMiwxN0w3LDEySDEwVjhIMTRWMTJIMTdMMTIsMTdNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRPdXRsaW5lID0gXCJNMjIsMTFMMTIsMjFMMiwxMUg4VjNIMTZWMTFIMjJNMTIsMThMMTcsMTNIMTRWNUgxMFYxM0g3TDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJveCA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU0xMSw2VjE0LjVMNy41LDExTDYuMDgsMTIuNDJMMTIsMTguMzRMMTcuOTIsMTIuNDJMMTYuNSwxMUwxMywxNC41VjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duQ2lyY2xlID0gXCJNMTEsNlYxNEw3LjUsMTAuNUw2LjA4LDExLjkyTDEyLDE3Ljg0TDE3LjkyLDExLjkyTDE2LjUsMTAuNUwxMywxNFY2SDExTTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25DaXJjbGVPdXRsaW5lID0gXCJNMTEsNkgxM1YxNEwxNi41LDEwLjVMMTcuOTIsMTEuOTJMMTIsMTcuODRMNi4wOCwxMS45Mkw3LjUsMTAuNUwxMSwxNFY2TTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkRyb3BDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk03LDEwTDEyLDE1TDE3LDEwSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duRHJvcENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRNNywxMEwxMiwxNUwxNywxMEg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93blRoaWNrID0gXCJNMTAsNEgxNFYxM0wxNy41LDkuNUwxOS45MiwxMS45MkwxMiwxOS44NEw0LjA4LDExLjkyTDYuNSw5LjVMMTAsMTNWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25UaGluQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDIwLjAzQzE2LjQxIDIwLjAzIDIwLjAzIDE2LjQxIDIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNNMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyQzE3LjU0IDIgMjIgNi40NiAyMiAxMkMyMiAxNy41NCAxNy41NCAyMiAxMiAyMk0xMSAxMy41NEg4TDEyIDE3LjVMMTYgMTMuNTRIMTNWNi41SDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dFeHBhbmQgPSBcIk0xMCwyMVYxOUg2LjQxTDEwLjkxLDE0LjVMOS41LDEzLjA5TDUsMTcuNTlWMTRIM1YyMUgxME0xNC41LDEwLjkxTDE5LDYuNDFWMTBIMjFWM0gxNFY1SDE3LjU5TDEzLjA5LDkuNUwxNC41LDEwLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RXhwYW5kQWxsID0gXCJNOS41LDEzLjA5TDEwLjkxLDE0LjVMNi40MSwxOUgxMFYyMUgzVjE0SDVWMTcuNTlMOS41LDEzLjA5TTEwLjkxLDkuNUw5LjUsMTAuOTFMNSw2LjQxVjEwSDNWM0gxMFY1SDYuNDFMMTAuOTEsOS41TTE0LjUsMTMuMDlMMTksMTcuNTlWMTRIMjFWMjFIMTRWMTlIMTcuNTlMMTMuMDksMTQuNUwxNC41LDEzLjA5TTEzLjA5LDkuNUwxNy41OSw1SDE0VjNIMjFWMTBIMTlWNi40MUwxNC41LDEwLjkxTDEzLjA5LDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZERvd24gPSBcIk0yMiw0VjJIMlY0SDExVjE4LjE3TDUuNSwxMi42N0w0LjA4LDE0LjA4TDEyLDIyTDE5LjkyLDE0LjA4TDE4LjUsMTIuNjdMMTMsMTguMTdWNEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZEhvcml6b250YWwgPSBcIk05LDExSDE1VjhMMTksMTJMMTUsMTZWMTNIOVYxNkw1LDEyTDksOFYxMU0yLDIwVjRINFYyMEgyTTIwLDIwVjRIMjJWMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dFeHBhbmRMZWZ0ID0gXCJNMjAsMjJIMjJWMkgyMFYxMUg1LjgzTDExLjMzLDUuNUw5LjkyLDQuMDhMMiwxMkw5LjkyLDE5LjkyTDExLjMzLDE4LjVMNS44MywxM0gyMFYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZFJpZ2h0ID0gXCJNNCwySDJWMjJINFYxM0gxOC4xN0wxMi42NywxOC41TDE0LjA4LDE5LjkyTDIyLDEyTDE0LjA4LDQuMDhMMTIuNjcsNS41TDE4LjE3LDExSDRWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZFVwID0gXCJNMiwyMFYyMkgyMlYyMEgxM1Y1LjgzTDE4LjUsMTEuMzNMMTkuOTIsOS45MkwxMiwyTDQuMDgsOS45Mkw1LjUsMTEuMzNMMTEsNS44M1YyMEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RXhwYW5kVmVydGljYWwgPSBcIk0xMyw5VjE1SDE2TDEyLDE5TDgsMTVIMTFWOUg4TDEyLDVMMTYsOUgxM000LDJIMjBWNEg0VjJNNCwyMEgyMFYyMkg0VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93SG9yaXpvbnRhbExvY2sgPSBcIk0xNC44IDdWNS41QzE0LjggNC4xIDEzLjQgMyAxMiAzUzkuMiA0LjEgOS4yIDUuNVY3QzguNiA3IDggNy42IDggOC4yVjExLjdDOCAxMi40IDguNiAxMyA5LjIgMTNIMTQuN0MxNS40IDEzIDE2IDEyLjQgMTYgMTEuOFY4LjNDMTYgNy42IDE1LjQgNyAxNC44IDdNMTMuNSA3SDEwLjVWNS41QzEwLjUgNC43IDExLjIgNC4yIDEyIDQuMlMxMy41IDQuNyAxMy41IDUuNVY3TTYgMTdWMjBMMiAxNkw2IDEyVjE1SDE4VjEyTDIyIDE2TDE4IDIwVjE3SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0ID0gXCJNMjAsMTFWMTNIOEwxMy41LDE4LjVMMTIuMDgsMTkuOTJMNC4xNiwxMkwxMi4wOCw0LjA4TDEzLjUsNS41TDgsMTFIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZCA9IFwiTTIwLDlWMTVIMTJWMTkuODRMNC4xNiwxMkwxMiw0LjE2VjlIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZEJveCA9IFwiTTIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1TTcsMTJMMTIsMTdWMTRIMTZWMTBIMTJWN0w3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJvbGRCb3hPdXRsaW5lID0gXCJNNywxMkwxMiw3VjEwSDE2VjE0SDEyVjE3TDcsMTJNMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVNMTksNUg1VjE5SDE5VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZENpcmNsZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LDEyTDEyLDE3VjE0SDE2VjEwSDEyVjdMNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRCb2xkQ2lyY2xlT3V0bGluZSA9IFwiTTcsMTJMMTIsN1YxMEgxNlYxNEgxMlYxN0w3LDEyTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJvbGRIZXhhZ29uT3V0bGluZSA9IFwiTTcsMTJMMTIsN1YxMEgxNlYxNEgxMlYxN0w3LDEyTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRCb2xkT3V0bGluZSA9IFwiTTEzLDIyTDMsMTJMMTMsMlY4SDIxVjE2SDEzVjIyTTYsMTJMMTEsMTdWMTRIMTlWMTBIMTFWN0w2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJveCA9IFwiTTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUMzLDMuODkgMy45LDMgNSwzSDE5TTE4LDExSDkuNUwxMyw3LjVMMTEuNTgsNi4wOEw1LjY2LDEyTDExLjU4LDE3LjkyTDEzLDE2LjVMOS41LDEzSDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTE4LDExSDEwTDEzLjUsNy41TDEyLjA4LDYuMDhMNi4xNiwxMkwxMi4wOCwxNy45MkwxMy41LDE2LjVMMTAsMTNIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Q2lyY2xlT3V0bGluZSA9IFwiTTE4LDExVjEzSDEwTDEzLjUsMTYuNUwxMi4wOCwxNy45Mkw2LjE2LDEyTDEyLjA4LDYuMDhMMTMuNSw3LjVMMTAsMTFIMThNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdERyb3BDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTQsN0w5LDEyTDE0LDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0RHJvcENpcmNsZU91dGxpbmUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJNMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMk0xNCw3TDksMTJMMTQsMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRSaWdodCA9IFwiTTYuNDUsMTcuNDVMMSwxMkw2LjQ1LDYuNTVMNy44Niw3Ljk2TDQuODMsMTFIMTkuMTdMMTYuMTQsNy45NkwxNy41NSw2LjU1TDIzLDEyTDE3LjU1LDE3LjQ1TDE2LjE0LDE2LjA0TDE5LjE3LDEzSDQuODNMNy44NiwxNi4wNEw2LjQ1LDE3LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFJpZ2h0Qm9sZCA9IFwiTTgsMTRWMThMMiwxMkw4LDZWMTBIMTZWNkwyMiwxMkwxNiwxOFYxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFJpZ2h0Qm9sZE91dGxpbmUgPSBcIk0xNCwxNlYyMkwyNCwxMkwxNCwyVjhIMTBWMkwwLDEyTDEwLDIyVjE2SDE0TTgsMTRWMTdMMywxMkw4LDdWMTBIMTZWN0wyMSwxMkwxNiwxN1YxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFRoaWNrID0gXCJNMjAsMTBWMTRIMTFMMTQuNSwxNy41TDEyLjA4LDE5LjkyTDQuMTYsMTJMMTIuMDgsNC4wOEwxNC41LDYuNUwxMSwxMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTMuOTcgMTJDMy45NyAxNi40MSA3LjU5IDIwLjAzIDEyIDIwLjAzQzE2LjQxIDIwLjAzIDIwLjAzIDE2LjQxIDIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMk0yIDEyQzIgNi40NiA2LjQ2IDIgMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJNMTAuNDYgMTFWOEw2LjUgMTJMMTAuNDYgMTZWMTNIMTcuNVYxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHQgPSBcIk00LDExVjEzSDE2TDEwLjUsMTguNUwxMS45MiwxOS45MkwxOS44NCwxMkwxMS45Miw0LjA4TDEwLjUsNS41TDE2LDExSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dSaWdodEJvbGQgPSBcIk00LDE1VjlIMTJWNC4xNkwxOS44NCwxMkwxMiwxOS44NFYxNUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkQm94ID0gXCJNMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlNMTcsMTJMMTIsN1YxMEg4VjE0SDEyVjE3TDE3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkQm94T3V0bGluZSA9IFwiTTE3LDEyTDEyLDE3VjE0SDhWMTBIMTJWN0wxNywxMk0zLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOU01LDE5SDE5VjVINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0Qm9sZENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTE3LDEyTDEyLDdWMTBIOFYxNEgxMlYxN0wxNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0Qm9sZENpcmNsZU91dGxpbmUgPSBcIk0xNywxMkwxMiwxN1YxNEg4VjEwSDEyVjdMMTcsMTJNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xNywxMkwxMiwxN1YxNEg4VjEwSDEyVjdMMTcsMTJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkT3V0bGluZSA9IFwiTTExLDE2SDNWOEgxMVYyTDIxLDEyTDExLDIyVjE2TTEzLDdWMTBINVYxNEgxM1YxN0wxOCwxMkwxMyw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb3ggPSBcIk01LDIxQTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUMyMSwyMC4xMSAyMC4xLDIxIDE5LDIxSDVNNiwxM0gxNC41TDExLDE2LjVMMTIuNDIsMTcuOTJMMTguMzQsMTJMMTIuNDIsNi4wOEwxMSw3LjVMMTQuNSwxMUg2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNNiwxM0gxNEwxMC41LDE2LjVMMTEuOTIsMTcuOTJMMTcuODQsMTJMMTEuOTIsNi4wOEwxMC41LDcuNUwxNCwxMUg2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRDaXJjbGVPdXRsaW5lID0gXCJNNiwxM1YxMUgxNEwxMC41LDcuNUwxMS45Miw2LjA4TDE3Ljg0LDEyTDExLjkyLDE3LjkyTDEwLjUsMTYuNUwxNCwxM0g2TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHREcm9wQ2lyY2xlID0gXCJNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0RHJvcENpcmNsZU91dGxpbmUgPSBcIk0yLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJBMTAsMTAgMCAwLDAgMiwxMk00LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0VGhpY2sgPSBcIk00LDEwVjE0SDEzTDkuNSwxNy41TDExLjkyLDE5LjkyTDE5Ljg0LDEyTDExLjkyLDQuMDhMOS41LDYuNUwxMywxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJNMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyQzE3LjU0IDIgMjIgNi40NiAyMiAxMk0xMy41NCAxM1YxNkwxNy41IDEyTDEzLjU0IDhWMTFINi41VjEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dTcGxpdEhvcml6b250YWwgPSBcIk04LDE4SDExVjE1SDJWMTNIMjJWMTVIMTNWMThIMTZMMTIsMjJMOCwxOE0xMiwyTDgsNkgxMVY5SDJWMTFIMjJWOUgxM1Y2SDE2TDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dTcGxpdFZlcnRpY2FsID0gXCJNMTgsMTZWMTNIMTVWMjJIMTNWMkgxNVYxMUgxOFY4TDIyLDEyTDE4LDE2TTIsMTJMNiwxNlYxM0g5VjIySDExVjJIOVYxMUg2VjhMMiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnQgPSBcIk0xOSwxNy41OUwxNy41OSwxOUw3LDguNDFWMTVINVY1SDE1VjdIOC40MUwxOSwxNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRCb2xkT3V0bGluZSA9IFwiTTE0LjEyLDguNDZMMTkuNzgsMTQuMTJMMTQuMTIsMTkuNzhMOC40NiwxNC4xMkw0LjIyLDE4LjM2VjQuMjJIMTguMzZMMTQuMTIsOC40Nk02LjM0LDEzLjQxTDguNDYsMTEuMjlMMTQuMTIsMTYuOTVMMTYuOTUsMTQuMTJMMTEuMjksOC40N0wxMy40MSw2LjM0SDYuMzRWMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BMZWZ0Qm90dG9tUmlnaHQgPSBcIk0xMywyMUgyMVYxM0gxOVYxNy41OUw2LjQxLDVIMTFWM0gzVjExSDVWNi40MUwxNy41OSwxOUgxM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRCb3R0b21SaWdodEJvbGQgPSBcIk01LjgzLDguNjZMMywxMS41VjNIMTEuNUw4LjY2LDUuODNMMTguMTcsMTUuMzRMMjEsMTIuNVYyMUgxMi41TDE1LjM0LDE4LjE3TDUuODMsOC42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRUaGljayA9IFwiTTkuMTIsMTEuOTRWMTYuODlINS42OVY1LjY5SDE2Ljg5VjkuMTJIMTEuOTRMMTguMzEsMTUuNUwxNS41LDE4LjMxTDkuMTIsMTEuOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BMZWZ0VGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzE2LjQxIDMuOTcgMjAuMDMgNy41OSAyMC4wMyAxMkMyMC4wMyAxNi40MSAxNi40MSAyMC4wMyAxMiAyMC4wM0M3LjU5IDIwLjAzIDMuOTcgMTYuNDEgMy45NyAxMkMzLjk3IDcuNTkgNy41OSAzLjk3IDEyIDMuOTdNMTIgMkM2LjQ2IDIgMiA2LjQ2IDIgMTJDMiAxNy41NCA2LjQ2IDIyIDEyIDIyQzE3LjU0IDIyIDIyIDE3LjU0IDIyIDEyQzIyIDYuNDYgMTcuNTQgMiAxMiAyTTEwLjEyIDExLjUzTDggMTMuNjRWOEgxMy42NEwxMS41MyAxMC4xMkwxNi41IDE1LjFMMTUuMSAxNi41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BSaWdodCA9IFwiTTUsMTcuNTlMMTUuNTksN0g5VjVIMTlWMTVIMTdWOC40MUw2LjQxLDE5TDUsMTcuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BSaWdodEJvbGRPdXRsaW5lID0gXCJNNS42NCw0LjIySDE5Ljc4VjE4LjM2TDE1LjU0LDE0LjEyTDkuODgsMTkuNzhMNC4yMiwxNC4xMkw5Ljg4LDguNDZMNS42NCw0LjIyTTE3LjY2LDYuMzRIMTAuNTlMMTIuNzEsOC40Nkw3LjA1LDE0LjEyTDkuODgsMTYuOTVMMTUuNTQsMTEuMjlMMTcuNjYsMTMuNDFWNi4zNEgxNy42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0Qm90dG9tTGVmdCA9IFwiTTExLDIxSDNWMTNINVYxNy41OUwxNy41OSw1SDEzVjNIMjFWMTFIMTlWNi40MUw2LjQxLDE5SDExVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VG9wUmlnaHRCb3R0b21MZWZ0Qm9sZCA9IFwiTTE4LjE3LDguNjZMMjEsMTEuNVYzSDEyLjVMMTUuMzQsNS44M0w1LjgzLDE1LjM0TDMsMTIuNVYyMUgxMS41TDguNjYsMTguMTdMMTguMTcsOC42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0VGhpY2sgPSBcIk04LjUsMTguMzFMNS42OSwxNS41TDEyLjA2LDkuMTJINy4xMVY1LjY5SDE4LjMxVjE2Ljg5SDE0Ljg5VjExLjk0TDguNSwxOC4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0VGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdNMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyTTEzLjg4IDExLjUzTDE2IDEzLjY0VjhIMTAuMzZMMTIuNDcgMTAuMTJMNy41IDE1LjFMOC45IDE2LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwID0gXCJNMTMsMjBIMTFWOEw1LjUsMTMuNUw0LjA4LDEyLjA4TDEyLDQuMTZMMTkuOTIsMTIuMDhMMTguNSwxMy41TDEzLDhWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJvbGQgPSBcIk0xNSwyMEg5VjEySDQuMTZMMTIsNC4xNkwxOS44NCwxMkgxNVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwQm9sZEJveCA9IFwiTTE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMU0xMiw3TDcsMTJIMTBWMTZIMTRWMTJIMTdMMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwQm9sZEJveE91dGxpbmUgPSBcIk0xMiw3TDE3LDEySDE0VjE2SDEwVjEySDdMMTIsN00xOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFNMTksMTlWNUg1VjE5SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkQ2lyY2xlID0gXCJNMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyTTEyLDdMNywxMkgxMFYxNkgxNFYxMkgxN0wxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDdMMTcsMTJIMTRWMTZIMTBWMTJIN0wxMiw3TTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xMiw3TDE3LDEySDE0VjE2SDEwVjEySDdMMTIsN00yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJvbGRPdXRsaW5lID0gXCJNMTYsMTNWMjFIOFYxM0gyTDEyLDNMMjIsMTNIMTZNNywxMUgxMFYxOUgxNFYxMUgxN0wxMiw2TDcsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJveCA9IFwiTTIxLDE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUMyMC4xMSwzIDIxLDMuOSAyMSw1VjE5TTEzLDE4VjkuNUwxNi41LDEzTDE3LjkyLDExLjU4TDEyLDUuNjZMNi4wOCwxMS41OEw3LjUsMTNMMTEsOS41VjE4SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBDaXJjbGUgPSBcIk0xMywxOFYxMEwxNi41LDEzLjVMMTcuOTIsMTIuMDhMMTIsNi4xNkw2LjA4LDEyLjA4TDcuNSwxMy41TDExLDEwVjE4SDEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBDaXJjbGVPdXRsaW5lID0gXCJNMTMsMThIMTFWMTBMNy41LDEzLjVMNi4wOCwxMi4wOEwxMiw2LjE2TDE3LjkyLDEyLjA4TDE2LjUsMTMuNUwxMywxMFYxOE0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd24gPSBcIk0xNy40NSwxNy41NUwxMiwyM0w2LjU1LDE3LjU1TDcuOTYsMTYuMTRMMTEsMTkuMTdWNC44M0w3Ljk2LDcuODZMNi41NSw2LjQ1TDEyLDFMMTcuNDUsNi40NUwxNi4wNCw3Ljg2TDEzLDQuODNWMTkuMTdMMTYuMDQsMTYuMTRMMTcuNDUsMTcuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd25Cb2xkID0gXCJNMTAsOEg2TDEyLDJMMTgsOEgxNFYxNkgxOEwxMiwyMkw2LDE2SDEwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd25Cb2xkT3V0bGluZSA9IFwiTTE2LDEwSDIyTDEyLDBMMiwxMEg4VjE0SDJMMTIsMjRMMjIsMTRIMTZWMTBNMTQsMTZIMTdMMTIsMjFMNywxNkgxMFY4SDdMMTIsM0wxNyw4SDE0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBEcm9wQ2lyY2xlID0gXCJNMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyTTE3LDE0TDEyLDlMNywxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwRHJvcENpcmNsZU91dGxpbmUgPSBcIk0xMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNywxNEwxMiw5TDcsMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcFRoaWNrID0gXCJNMTQsMjBIMTBWMTFMNi41LDE0LjVMNC4wOCwxMi4wOEwxMiw0LjE2TDE5LjkyLDEyLjA4TDE3LjUsMTQuNUwxNCwxMVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwVGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdNMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyTTEzIDEwLjQ2SDE2TDEyIDYuNUw4IDEwLjQ2SDExVjE3LjVIMTNcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1ZlcnRpY2FsTG9jayA9IFwiTTE4LjggMTFWOS41QzE4LjggOC4xIDE3LjQgNyAxNiA3UzEzLjIgOC4xIDEzLjIgOS41VjExQzEyLjYgMTEgMTIgMTEuNiAxMiAxMi4yVjE1LjdDMTIgMTYuNCAxMi42IDE3IDEzLjIgMTdIMTguN0MxOS40IDE3IDIwIDE2LjQgMjAgMTUuOFYxMi4zQzIwIDExLjYgMTkuNCAxMSAxOC44IDExTTE3LjUgMTFIMTQuNVY5LjVDMTQuNSA4LjcgMTUuMiA4LjIgMTYgOC4yQzE2LjggOC4yIDE3LjUgOC43IDE3LjUgOS41VjExTTkgNkgxMkw4IDJMNCA2SDdWMThINEw4IDIyTDEyIDE4SDlWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnRzdGF0aW9uID0gXCJNMS43NywxNi44OEwzLjUsMTkuODZDMy44NCwyMC41NCA0LjU0LDIxIDUuMzMsMjFIMTYuNzlMMTQuNDMsMTYuODhIMS43N00yMi4yMywxNi45QzIyLjIzLDE2LjUgMjIuMTEsMTYuMTEgMjEuOSwxNS43OEwxNS4xNyw0LjFDMTQuODIsMy40NCAxNC4xNSwzIDEzLjM1LDNIOS44TDIwLjE4LDIxTDIxLjgyLDE4LjE0QzIyLjEzLDE3LjYgMjIuMjMsMTcuMzYgMjIuMjMsMTYuOU0xMi43MywxMy45NEw4LjEsNS45MkwzLjQ1LDEzLjk0SDEyLjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFzcGVjdFJhdGlvID0gXCJNMTksMTJIMTdWMTVIMTRWMTdIMTlWMTJNNyw5SDEwVjdINVYxMkg3VjlNMjEsM0gzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFzc2lzdGFudCA9IFwiTTE5LDJINUEyLDIgMCAwLDAgMyw0VjE4QTIsMiAwIDAsMCA1LDIwSDlMMTIsMjNMMTUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjRBMiwyIDAgMCwwIDE5LDJNMTMuODgsMTIuODhMMTIsMTdMMTAuMTIsMTIuODhMNiwxMUwxMC4xMiw5LjEyTDEyLDVMMTMuODgsOS4xMkwxOCwxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFzdGVyaXNrID0gXCJNMTAsMkgxNEwxMy4yMSw5LjkxTDE5LjY2LDUuMjdMMjEuNjYsOC43M0wxNC40MiwxMkwyMS42NiwxNS4yN0wxOS42NiwxOC43M0wxMy4yMSwxNC4wOUwxNCwyMkgxMEwxMC43OSwxNC4wOUw0LjM0LDE4LjczTDIuMzQsMTUuMjdMOS41OCwxMkwyLjM0LDguNzNMNC4zNCw1LjI3TDEwLjc5LDkuOTFMMTAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBdCA9IFwiTTEyLDE1QzEyLjgxLDE1IDEzLjUsMTQuNyAxNC4xMSwxNC4xMUMxNC43LDEzLjUgMTUsMTIuODEgMTUsMTJDMTUsMTEuMTkgMTQuNywxMC41IDE0LjExLDkuODlDMTMuNSw5LjMgMTIuODEsOSAxMiw5QzExLjE5LDkgMTAuNSw5LjMgOS44OSw5Ljg5QzkuMywxMC41IDksMTEuMTkgOSwxMkM5LDEyLjgxIDkuMywxMy41IDkuODksMTQuMTFDMTAuNSwxNC43IDExLjE5LDE1IDEyLDE1TTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMlYxMy40NUMyMiwxNC40NSAyMS42NSwxNS4zIDIxLDE2QzIwLjMsMTYuNjcgMTkuNSwxNyAxOC41LDE3QzE3LjMsMTcgMTYuMzEsMTYuNSAxNS41NiwxNS41QzE0LjU2LDE2LjUgMTMuMzgsMTcgMTIsMTdDMTAuNjMsMTcgOS40NSwxNi41IDguNDYsMTUuNTRDNy41LDE0LjU1IDcsMTMuMzggNywxMkM3LDEwLjYzIDcuNSw5LjQ1IDguNDYsOC40NkM5LjQ1LDcuNSAxMC42Myw3IDEyLDdDMTMuMzgsNyAxNC41NSw3LjUgMTUuNTQsOC40NkMxNi41LDkuNDUgMTcsMTAuNjMgMTcsMTJWMTMuNDVDMTcsMTMuODYgMTcuMTYsMTQuMjIgMTcuNDYsMTQuNTNDMTcuNzYsMTQuODQgMTguMTEsMTUgMTguNSwxNUMxOC45MiwxNSAxOS4yNywxNC44NCAxOS41NywxNC41M0MxOS44NywxNC4yMiAyMCwxMy44NiAyMCwxMy40NVYxMkMyMCw5LjgxIDE5LjIzLDcuOTMgMTcuNjUsNi4zNUMxNi4wNyw0Ljc3IDE0LjE5LDQgMTIsNEM5LjgxLDQgNy45Myw0Ljc3IDYuMzUsNi4zNUM0Ljc3LDcuOTMgNCw5LjgxIDQsMTJDNCwxNC4xOSA0Ljc3LDE2LjA3IDYuMzUsMTcuNjVDNy45MywxOS4yMyA5LjgxLDIwIDEyLDIwSDE3VjIySDEyQzkuMjUsMjIgNi45LDIxIDQuOTUsMTkuMDVDMywxNy4xIDIsMTQuNzUgMiwxMkMyLDkuMjUgMyw2LjkgNC45NSw0Ljk1QzYuOSwzIDkuMjUsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF0bGFzc2lhbiA9IFwiTTcuOTMsMTEuMjRDNy43NCwxMSA3LjM4LDEwLjk0IDcuMTMsMTEuMTNDNy4wNiwxMS4xOSA3LDExLjI2IDYuOTYsMTEuMzRMMi4wNiwyMS4xNUMxLjkxLDIxLjQ0IDIuMDMsMjEuNzkgMi4zMiwyMS45NEMyLjQsMjIgMi41LDIyIDIuNTksMjJIOS40MUM5LjYzLDIyIDkuODQsMjEuODggOS45NCwyMS42OEMxMS40MSwxOC42MyAxMC41LDE0IDcuOTMsMTEuMjRNMTEuNTMsMi4zMUM5LjA1LDYuMTQgOC43NiwxMSAxMC43NywxNS4wOUwxNC4wNiwyMS42OEMxNC4xNywyMS44OCAxNC4zNywyMiAxNC41OSwyMkgyMS40MUEwLjU5LDAuNTkgMCAwLDAgMjIsMjEuNDFDMjIsMjEuMzIgMjIsMjEuMjMgMjEuOTQsMjEuMTVDMjEuOTQsMjEuMTUgMTIuNzYsMi43NyAxMi41LDIuMzFDMTIuMzksMi4wNCAxMi4wNiwxLjkyIDExLjc4LDIuMDZDMTEuNjcsMi4xMSAxMS41OCwyLjIgMTEuNTMsMi4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdG0gPSBcIk04LDlWMTAuNUgxMC4yNVYxNUgxMS43NVYxMC41SDE0VjlIOE02LDlIM0ExLDEgMCAwLDAgMiwxMFYxNUgzLjVWMTMuNUg1LjVWMTVIN1YxMEExLDEgMCAwLDAgNiw5TTUuNSwxMkgzLjVWMTAuNUg1LjVWMTJNMjEsOUgxNi41QTEsMSAwIDAsMCAxNS41LDEwVjE1SDE3VjEwLjVIMThWMTRIMTkuNVYxMC41SDIwLjVWMTVIMjJWMTBBMSwxIDAgMCwwIDIxLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXRvbSA9IFwiTTEyLDExQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMU00LjIyLDQuMjJDNS42NSwyLjc5IDguNzUsMy40MyAxMiw1LjU2QzE1LjI1LDMuNDMgMTguMzUsMi43OSAxOS43OCw0LjIyQzIxLjIxLDUuNjUgMjAuNTcsOC43NSAxOC40NCwxMkMyMC41NywxNS4yNSAyMS4yMSwxOC4zNSAxOS43OCwxOS43OEMxOC4zNSwyMS4yMSAxNS4yNSwyMC41NyAxMiwxOC40NEM4Ljc1LDIwLjU3IDUuNjUsMjEuMjEgNC4yMiwxOS43OEMyLjc5LDE4LjM1IDMuNDMsMTUuMjUgNS41NiwxMkMzLjQzLDguNzUgMi43OSw1LjY1IDQuMjIsNC4yMk0xNS41NCw4LjQ2QzE2LjE1LDkuMDggMTYuNzEsOS43MSAxNy4yMywxMC4zNEMxOC42MSw4LjIxIDE5LjExLDYuMzggMTguMzYsNS42NEMxNy42Miw0Ljg5IDE1Ljc5LDUuMzkgMTMuNjYsNi43N0MxNC4yOSw3LjI5IDE0LjkyLDcuODUgMTUuNTQsOC40Nk04LjQ2LDE1LjU0QzcuODUsMTQuOTIgNy4yOSwxNC4yOSA2Ljc3LDEzLjY2QzUuMzksMTUuNzkgNC44OSwxNy42MiA1LjY0LDE4LjM2QzYuMzgsMTkuMTEgOC4yMSwxOC42MSAxMC4zNCwxNy4yM0M5LjcxLDE2LjcxIDkuMDgsMTYuMTUgOC40NiwxNS41NE01LjY0LDUuNjRDNC44OSw2LjM4IDUuMzksOC4yMSA2Ljc3LDEwLjM0QzcuMjksOS43MSA3Ljg1LDkuMDggOC40Niw4LjQ2QzkuMDgsNy44NSA5LjcxLDcuMjkgMTAuMzQsNi43N0M4LjIxLDUuMzkgNi4zOCw0Ljg5IDUuNjQsNS42NE05Ljg4LDE0LjEyQzEwLjU4LDE0LjgyIDExLjMsMTUuNDYgMTIsMTYuMDNDMTIuNywxNS40NiAxMy40MiwxNC44MiAxNC4xMiwxNC4xMkMxNC44MiwxMy40MiAxNS40NiwxMi43IDE2LjAzLDEyQzE1LjQ2LDExLjMgMTQuODIsMTAuNTggMTQuMTIsOS44OEMxMy40Miw5LjE4IDEyLjcsOC41NCAxMiw3Ljk3QzExLjMsOC41NCAxMC41OCw5LjE4IDkuODgsOS44OEM5LjE4LDEwLjU4IDguNTQsMTEuMyA3Ljk3LDEyQzguNTQsMTIuNyA5LjE4LDEzLjQyIDkuODgsMTQuMTJNMTguMzYsMTguMzZDMTkuMTEsMTcuNjIgMTguNjEsMTUuNzkgMTcuMjMsMTMuNjZDMTYuNzEsMTQuMjkgMTYuMTUsMTQuOTIgMTUuNTQsMTUuNTRDMTQuOTIsMTYuMTUgMTQuMjksMTYuNzEgMTMuNjYsMTcuMjNDMTUuNzksMTguNjEgMTcuNjIsMTkuMTEgMTguMzYsMTguMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXRvbVZhcmlhbnQgPSBcIk0xOC4zNiwyLjY0QzIwLDIuNjQgMjEuMzYsNCAyMS4zNiw1LjY0QzIxLjM2LDcuMjkgMjAsOC42NCAxOC4zNiw4LjY0QzE2LjcxLDguNjQgMTUuMzYsNy4yOSAxNS4zNiw1LjY0QzE1LjM2LDUuMzQgMTUuNDEsNS4wNiAxNS41LDQuOEMxNC40Myw0LjI5IDEzLjI1LDQgMTIsNEE4LDggMCAwLDAgNCwxMkw0LjA0LDEyLjg0TDIuMDUsMTMuMDVMMiwxMkExMCwxMCAwIDAsMSAxMiwyQzEzLjY5LDIgMTUuMjgsMi40MiAxNi42NywzLjE2QzE3LjE2LDIuODMgMTcuNzQsMi42NCAxOC4zNiwyLjY0TTE4LjM2LDQuNjRBMSwxIDAgMCwwIDE3LjM2LDUuNjRBMSwxIDAgMCwwIDE4LjM2LDYuNjRDMTguOTIsNi42NCAxOS4zNiw2LjE5IDE5LjM2LDUuNjRDMTkuMzYsNS4wOCAxOC45Miw0LjY0IDE4LjM2LDQuNjRNNS42NCwxNS4zNkM3LjI5LDE1LjM2IDguNjQsMTYuNzEgOC42NCwxOC4zNkM4LjY0LDE4LjY2IDguNTksMTguOTQgOC41LDE5LjJDOS41NywxOS43MSAxMC43NSwyMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJMMTkuOTYsMTEuMTZMMjEuOTUsMTAuOTVMMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDMTAuMzEsMjIgOC43MiwyMS41OCA3LjMzLDIwLjg0QzYuODQsMjEuMTcgNi4yNiwyMS4zNiA1LjY0LDIxLjM2QzQsMjEuMzYgMi42NCwyMCAyLjY0LDE4LjM2QzIuNjQsMTYuNzEgNCwxNS4zNiA1LjY0LDE1LjM2TTUuNjQsMTcuMzZDNS4wOCwxNy4zNiA0LjY0LDE3LjgxIDQuNjQsMTguMzZDNC42NCwxOC45MiA1LjA4LDE5LjM2IDUuNjQsMTkuMzZBMSwxIDAgMCwwIDYuNjQsMTguMzZBMSwxIDAgMCwwIDUuNjQsMTcuMzZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF0dGFjaG1lbnQgPSBcIk03LjUsMThBNS41LDUuNSAwIDAsMSAyLDEyLjVBNS41LDUuNSAwIDAsMSA3LjUsN0gxOEE0LDQgMCAwLDEgMjIsMTFBNCw0IDAgMCwxIDE4LDE1SDkuNUEyLjUsMi41IDAgMCwxIDcsMTIuNUEyLjUsMi41IDAgMCwxIDkuNSwxMEgxN1YxMS41SDkuNUExLDEgMCAwLDAgOC41LDEyLjVBMSwxIDAgMCwwIDkuNSwxMy41SDE4QTIuNSwyLjUgMCAwLDAgMjAuNSwxMUEyLjUsMi41IDAgMCwwIDE4LDguNUg3LjVBNCw0IDAgMCwwIDMuNSwxMi41QTQsNCAwIDAsMCA3LjUsMTYuNUgxN1YxOEg3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXVkaW9WaWRlbyA9IFwiTTIwLDdINEEyLDIgMCAwLDAgMiw5VjE1QTIsMiAwIDAsMCA0LDE3SDVWMThDNSwxOC42IDUuNCwxOSA2LDE5SDhDOC42LDE5IDksMTguNiA5LDE4VjE3SDE1VjE4QzE1LDE4LjYgMTUuNCwxOSAxNiwxOUgxOEMxOC42LDE5IDE5LDE4LjYgMTksMThWMTdIMjBBMiwyIDAgMCwwIDIyLDE1VjlBMiwyIDAgMCwwIDIwLDdNMTQsMTJINFYxMEgxNFYxMk0xOCwxM0EyLDIgMCAwLDEgMTYsMTFBMiwyIDAgMCwxIDE4LDlBMiwyIDAgMCwxIDIwLDExQTIsMiAwIDAsMSAxOCwxM002LDE1SDRWMTRINlYxNU0xMCwxNUg4VjE0SDEwVjE1TTE0LDE1SDEyVjE0SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF1ZGlvVmlkZW9PZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w1LjEgN0g0QzIuOSA3IDIgNy45IDIgOVYxNUMyIDE2LjEgMi45IDE3IDQgMTdINVYxOEM1IDE4LjYgNS40IDE5IDYgMTlIOEM4LjYgMTkgOSAxOC42IDkgMThWMTdIMTVWMThDMTUgMTguNiAxNS40IDE5IDE2IDE5SDE3LjFMMjAuOCAyMi43TDIyLjEgMjEuNU02IDE1SDRWMTRINlYxNU00IDEyVjEwSDguMUwxMC4xIDEySDRNMTAgMTVIOFYxNEgxMFYxNU0xMiAxNVYxNEgxMi4xTDEzLjEgMTVIMTJNMTQgMTBWMTAuOEwyMC4yIDE3QzIxLjIgMTYuOSAyMiAxNi4xIDIyIDE1VjlDMjIgNy45IDIxLjEgNyAyMCA3SDEwLjJMMTMuMiAxMEgxNE0xOCA5QzE5LjEgOSAyMCA5LjkgMjAgMTFTMTkuMSAxMyAxOCAxMyAxNiAxMi4xIDE2IDExIDE2LjkgOSAxOCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF1Z21lbnRlZFJlYWxpdHkgPSBcIk01LDNDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0g1TTcsOUgxMEMxMC42LDkgMTEsOS41IDExLDEwVjE1SDkuNVYxMy41SDcuNVYxNUg2VjEwQzYsOS41IDYuNCw5IDcsOU0xMyw5SDE2LjVDMTcuMzUsOSAxOCw5LjY1IDE4LDEwLjVWMTEuNUMxOCwxMi4xIDE3LjYsMTIuNjUgMTcuMSwxMi45TDE4LDE1SDE2LjVMMTUuNjUsMTNIMTQuNVYxNUgxM1Y5TTcuNSwxMC41VjEySDkuNVYxMC41SDcuNU0xNC41LDEwLjVWMTEuNUgxNi41VjEwLjVIMTQuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUF1dG9Eb3dubG9hZCA9IFwiTTIyIDE3VjE5SDExVjE3SDIyTTE5IDQuNVY5LjVIMjJMMTYuNSAxNUwxMSA5LjVIMTRWNC41SDE5TTEwLjcgMTVIOC44TDguMSAxM0g0LjlMNC4yIDE1SDIuM0w1LjUgNkg3LjVMMTAuNyAxNU03LjY1IDExLjY1TDYuNSA4TDUuMzUgMTEuNjVINy42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvRml4ID0gXCJNNy41LDUuNkw1LDdMNi40LDQuNUw1LDJMNy41LDMuNEwxMCwyTDguNiw0LjVMMTAsN0w3LjUsNS42TTE5LjUsMTUuNEwyMiwxNEwyMC42LDE2LjVMMjIsMTlMMTkuNSwxNy42TDE3LDE5TDE4LjQsMTYuNUwxNywxNEwxOS41LDE1LjRNMjIsMkwyMC42LDQuNUwyMiw3TDE5LjUsNS42TDE3LDdMMTguNCw0LjVMMTcsMkwxOS41LDMuNEwyMiwyTTEzLjM0LDEyLjc4TDE1Ljc4LDEwLjM0TDEzLjY2LDguMjJMMTEuMjIsMTAuNjZMMTMuMzQsMTIuNzhNMTQuMzcsNy4yOUwxNi43MSw5LjYzQzE3LjEsMTAgMTcuMSwxMC42NSAxNi43MSwxMS4wNEw1LjA0LDIyLjcxQzQuNjUsMjMuMSA0LDIzLjEgMy42MywyMi43MUwxLjI5LDIwLjM3QzAuOSwyMCAwLjksMTkuMzUgMS4yOSwxOC45NkwxMi45Niw3LjI5QzEzLjM1LDYuOSAxNCw2LjkgMTQuMzcsNy4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvVXBsb2FkID0gXCJNNS4zNSwxMi42NUw2LjUsOUw3LjY1LDEyLjY1TTUuNSw3TDIuMywxNkg0LjJMNC45LDE0SDguMUw4LjgsMTZIMTAuN0w3LjUsN00xMSwyMEgyMlYxOEgxMU0xNCwxNkgxOVYxMUgyMkwxNi41LDUuNUwxMSwxMUgxNFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvcmVuZXcgPSBcIk0xMiw2VjlMMTYsNUwxMiwxVjRBOCw4IDAgMCwwIDQsMTJDNCwxMy41NyA0LjQ2LDE1LjAzIDUuMjQsMTYuMjZMNi43LDE0LjhDNi4yNSwxMy45NyA2LDEzIDYsMTJBNiw2IDAgMCwxIDEyLDZNMTguNzYsNy43NEwxNy4zLDkuMkMxNy43NCwxMC4wNCAxOCwxMSAxOCwxMkE2LDYgMCAwLDEgMTIsMThWMTVMOCwxOUwxMiwyM1YyMEE4LDggMCAwLDAgMjAsMTJDMjAsMTAuNDMgMTkuNTQsOC45NyAxOC43Niw3Ljc0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF2VGltZXIgPSBcIk0xMSwxN0ExLDEgMCAwLDAgMTIsMThBMSwxIDAgMCwwIDEzLDE3QTEsMSAwIDAsMCAxMiwxNkExLDEgMCAwLDAgMTEsMTdNMTEsM1Y3SDEzVjUuMDhDMTYuMzksNS41NyAxOSw4LjQ3IDE5LDEyQTcsNyAwIDAsMSAxMiwxOUE3LDcgMCAwLDEgNSwxMkM1LDEwLjMyIDUuNTksOC43OCA2LjU4LDcuNThMMTIsMTNMMTMuNDEsMTEuNTlMNi42MSw0Ljc5VjQuODFDNC40Miw2LjQ1IDMsOS4wNSAzLDEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJBOSw5IDAgMCwwIDEyLDNNMTgsMTJBMSwxIDAgMCwwIDE3LDExQTEsMSAwIDAsMCAxNiwxMkExLDEgMCAwLDAgMTcsMTNBMSwxIDAgMCwwIDE4LDEyTTYsMTJBMSwxIDAgMCwwIDcsMTNBMSwxIDAgMCwwIDgsMTJBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDYsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXdzID0gXCJNNy42NCwxMC4zOEM3LjY0LDEwLjYzIDcuNjYsMTAuODMgNy43MSwxMUM3Ljc2LDExLjEyIDcuODMsMTEuMjggNy45MiwxMS40NkM3Ljk2LDExLjUgNy45NywxMS41NiA3Ljk3LDExLjYxQzcuOTcsMTEuNjggNy45MywxMS43NCA3Ljg0LDExLjgxTDcuNDIsMTIuMDlDNy4zNiwxMi4xMyA3LjMsMTIuMTUgNy4yNSwxMi4xNUM3LjE4LDEyLjE1IDcuMTIsMTIuMTEgNy4wNSwxMi4wNUM2Ljk2LDExLjk1IDYuODgsMTEuODUgNi44MSwxMS43NEM2Ljc1LDExLjYzIDYuNjgsMTEuNSA2LjYxLDExLjM1QzYuMDksMTEuOTYgNS40NCwxMi4yNyA0LjY1LDEyLjI3QzQuMDksMTIuMjcgMy42NSwxMi4xMSAzLjMyLDExLjc5QzMsMTEuNDcgMi44MywxMS4wNCAyLjgzLDEwLjVDMi44Myw5Ljk1IDMuMDMsOS41IDMuNDMsOS4xNEMzLjg0LDguOCA0LjM4LDguNjIgNS4wNiw4LjYyQzUuMjksOC42MiA1LjUsOC42NCA1Ljc3LDguNjhDNiw4LjcxIDYuMjcsOC43NiA2LjUzLDguODJWOC4zNEM2LjUzLDcuODMgNi40Myw3LjUgNi4yMiw3LjI3QzYsNy4wNiA1LjY1LDYuOTcgNS4xNCw2Ljk3QzQuOSw2Ljk3IDQuNjYsNyA0LjQyLDcuMDVDNC4xNyw3LjExIDMuOTMsNy4xOCAzLjcsNy4yOEMzLjU5LDcuMzIgMy41LDcuMzUgMy40Nyw3LjM2QzMuNDIsNy4zOCAzLjM5LDcuMzggMy4zNiw3LjM4QzMuMjcsNy4zOCAzLjIyLDcuMzIgMy4yMiw3LjE4VjYuODVDMy4yMiw2Ljc1IDMuMjMsNi42NyAzLjI3LDYuNjJDMy4zLDYuNTcgMy4zNiw2LjUzIDMuNDUsNi41QzMuNjksNi4zNiAzLjk2LDYuMjYgNC4yOSw2LjE4QzQuNjIsNi4wOSA0Ljk2LDYuMDUgNS4zMyw2LjA1QzYuMTIsNi4wNSA2LjcsNi4yMyA3LjA3LDYuNTlDNy40NCw2Ljk1IDcuNjIsNy41IDcuNjIsOC4yM1YxMC4zOEg3LjY0TTQuOTQsMTEuNEM1LjE2LDExLjQgNS4zOCwxMS4zNiA1LjYyLDExLjI4QzUuODYsMTEuMiA2LjA3LDExLjA1IDYuMjUsMTAuODVDNi4zNiwxMC43MiA2LjQ0LDEwLjU4IDYuNSwxMC40MkM2LjUsMTAuMjYgNi41NSwxMC4wNyA2LjU1LDkuODRWOS41N0M2LjM1LDkuNSA2LjE1LDkuNSA1LjkzLDkuNDVDNS43Miw5LjQzIDUuNSw5LjQxIDUuMzEsOS40MUM0Ljg2LDkuNDEgNC41NCw5LjUgNC4zMiw5LjY4QzQuMSw5Ljg2IDQsMTAuMTEgNCwxMC40NEM0LDEwLjc2IDQuMDcsMTEgNC4yNCwxMS4xNUM0LjQsMTEuMzIgNC42MywxMS40IDQuOTQsMTEuNE0xMC4yOCwxMi4xMUMxMC4xNiwxMi4xMSAxMC4wOCwxMi4wOSAxMCwxMi4wNUM5Ljk3LDEyIDkuOTIsMTEuOTEgOS44OCwxMS43OUw4LjMyLDYuNjVDOC4yOCw2LjUgOC4yNiw2LjQzIDguMjYsNi4zOEM4LjI2LDYuMjcgOC4zMSw2LjIxIDguNDIsNi4yMUg5LjA3QzkuMiw2LjIxIDkuMjksNi4yMyA5LjMzLDYuMjhDOS4zOSw2LjMyIDkuNDMsNi40MSA5LjQ3LDYuNTRMMTAuNTgsMTAuOTRMMTEuNjIsNi41NEMxMS42NSw2LjQxIDExLjY5LDYuMzIgMTEuNzUsNi4yOEMxMS44LDYuMjQgMTEuODksNi4yMSAxMiw2LjIxSDEyLjU1QzEyLjY3LDYuMjEgMTIuNzYsNi4yMyAxMi44MSw2LjI4QzEyLjg2LDYuMzIgMTIuOTEsNi40MSAxMi45NCw2LjU0TDE0LDExTDE1LjE0LDYuNTRDMTUuMTgsNi40MSAxNS4yMyw2LjMyIDE1LjI3LDYuMjhDMTUuMzMsNi4yNCAxNS40MSw2LjIxIDE1LjUzLDYuMjFIMTYuMTVDMTYuMjYsNi4yMSAxNi4zMiw2LjI3IDE2LjMyLDYuMzhDMTYuMzIsNi40MSAxNi4zMSw2LjQ1IDE2LjMsNi41QzE2LjMsNi41IDE2LjI4LDYuNTggMTYuMjYsNi42NUwxNC42NSwxMS43OUMxNC42MSwxMS45MyAxNC41NywxMiAxNC41LDEyLjA1QzE0LjQ2LDEyLjA5IDE0LjM3LDEyLjEyIDE0LjI2LDEyLjEySDEzLjY5QzEzLjU2LDEyLjEyIDEzLjUsMTIuMSAxMy40MiwxMi4wNUMxMy4zNywxMiAxMy4zMiwxMS45MiAxMy4zLDExLjc5TDEyLjI3LDcuNUwxMS4yNCwxMS43OEMxMS4yMSwxMS45MSAxMS4xNywxMiAxMS4xMiwxMi4wNUMxMS4wNiwxMi4wOSAxMC45NywxMi4xMSAxMC44NSwxMi4xMUgxMC4yOE0xOC44MywxMi4yOUMxOC41LDEyLjI5IDE4LjEzLDEyLjI1IDE3LjgsMTIuMTdDMTcuNDcsMTIuMDkgMTcuMjEsMTIgMTcuMDQsMTEuOTFDMTYuOTMsMTEuODUgMTYuODYsMTEuNzggMTYuODMsMTEuNzJDMTYuOCwxMS42NiAxNi43OSwxMS42IDE2Ljc5LDExLjU0VjExLjJDMTYuNzksMTEuMDYgMTYuODQsMTEgMTYuOTQsMTFDMTcsMTEgMTcsMTEgMTcuMDYsMTFDMTcuMSwxMSAxNy4xNiwxMS4wNSAxNy4yMywxMS4wOEMxNy40NSwxMS4xOCAxNy43LDExLjI2IDE3Ljk2LDExLjMxQzE4LjIzLDExLjM2IDE4LjUsMTEuMzkgMTguNzUsMTEuMzlDMTkuMTcsMTEuMzkgMTkuNSwxMS4zMiAxOS43MiwxMS4xN0MxOS45NSwxMSAyMC4wNywxMC44MSAyMC4wNywxMC41NEMyMC4wNywxMC4zNSAyMCwxMC4yIDE5Ljg5LDEwLjA3QzE5Ljc3LDkuOTUgMTkuNTQsOS44MyAxOS4yMiw5LjczTDE4LjI1LDkuNDNDMTcuNzcsOS4yNyAxNy40MSw5LjA1IDE3LjE5LDguNzVDMTYuOTcsOC40NiAxNi44Niw4LjEzIDE2Ljg2LDcuNzhDMTYuODYsNy41IDE2LjkyLDcuMjYgMTcuMDQsNy4wNUMxNy4xNiw2LjgzIDE3LjMyLDYuNjUgMTcuNSw2LjVDMTcuNzIsNi4zNSAxNy45NCw2LjI0IDE4LjIxLDYuMTZDMTguNDcsNi4wOCAxOC43NSw2LjA0IDE5LjA1LDYuMDRDMTkuMTksNi4wNCAxOS4zNCw2LjA1IDE5LjUsNi4wN0MxOS42NCw2LjA5IDE5Ljc4LDYuMTIgMTkuOTIsNi4xNEMyMC4wNiw2LjE4IDIwLjE4LDYuMjEgMjAuMyw2LjI1QzIwLjQyLDYuMjkgMjAuNSw2LjMzIDIwLjU4LDYuMzdDMjAuNjcsNi40MiAyMC43NCw2LjQ3IDIwLjc4LDYuNTNDMjAuODIsNi41OSAyMC44NCw2LjY2IDIwLjg0LDYuNzVWNy4wN0MyMC44NCw3LjIxIDIwLjc5LDcuMjggMjAuNjksNy4yOEMyMC42NCw3LjI4IDIwLjU1LDcuMjUgMjAuNDMsNy4yQzIwLjA2LDcuMDMgMTkuNjMsNi45NCAxOS4xNiw2Ljk0QzE4Ljc4LDYuOTQgMTguNSw3IDE4LjI3LDcuMTNDMTguMDcsNy4yNSAxNy45Niw3LjQ1IDE3Ljk2LDcuNzJDMTcuOTYsNy45MSAxOC4wMyw4LjA3IDE4LjE2LDguMTlDMTguMjksOC4zMiAxOC41NCw4LjQ0IDE4Ljg5LDguNTZMMTkuODQsOC44NkMyMC4zMiw5IDIwLjY2LDkuMjIgMjAuODcsOS41QzIxLjA3LDkuNzcgMjEuMTcsMTAuMDggMjEuMTcsMTAuNDNDMjEuMTcsMTAuNzEgMjEuMTEsMTAuOTcgMjEsMTEuMkMyMC44OCwxMS40MiAyMC43MiwxMS42MiAyMC41LDExLjc4QzIwLjMxLDExLjk1IDIwLjA2LDEyLjA3IDE5Ljc4LDEyLjE2QzE5LjUsMTIuMjUgMTkuMTYsMTIuMjkgMTguODMsMTIuMjlNMjAuMDgsMTUuNTNDMTcuODksMTcuMTQgMTQuNzEsMTggMTIsMThDOC4xNSwxOCA0LjcsMTYuNTggMi4wOSwxNC4yM0MxLjg4LDE0LjA0IDIuMDcsMTMuNzkgMi4zMiwxMy45NEM1LjE0LDE1LjU3IDguNjEsMTYuNTYgMTIuMjEsMTYuNTZDMTQuNjQsMTYuNTYgMTcuMzEsMTYuMDYgMTkuNzYsMTVDMjAuMTMsMTQuODUgMjAuNDQsMTUuMjYgMjAuMDgsMTUuNTNNMjEsMTQuNUMyMC43MSwxNC4xMyAxOS4xNCwxNC4zMiAxOC40MywxNC40QzE4LjIyLDE0LjQzIDE4LjE5LDE0LjI0IDE4LjM4LDE0LjFDMTkuNjMsMTMuMjMgMjEuNjksMTMuNSAyMS45MiwxMy43N0MyMi4xNiwxNC4wNyAyMS44NiwxNi4xMyAyMC42OSwxNy4xMUMyMC41LDE3LjI2IDIwLjMzLDE3LjE4IDIwLjQxLDE3QzIwLjY4LDE2LjMyIDIxLjI3LDE0Ljg0IDIxLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhlID0gXCJNMTIsMkwyMiw4QzIyLDEyIDIwLDE0IDE2LDE1TDEzLDEwTDksNkwxMiwyTTQuMTEsMTkuODRMMi4xMiwxOC4zM0w5LjE5LDlMMTEsMTAuODFMNC4xMSwxOS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzID0gXCJNMi42MSwyMUwxLjYxLDE5LjI3TDExLDEzLjg1VjNIMTNWMTMuODVMMjIuMzksMTkuMjdMMjEuMzksMjFMMTIsMTUuNThMMi42MSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzQXJyb3cgPSBcIk0xMiwyTDE2LDZIMTNWMTMuODVMMTkuNTMsMTcuNjFMMjEsMTUuMDNMMjIuNSwyMC41TDE3LDIxLjk2TDE4LjUzLDE5LjM1TDEyLDE1LjU4TDUuNDcsMTkuMzVMNywyMS45NkwxLjUsMjAuNUwzLDE1LjAzTDQuNDcsMTcuNjFMMTEsMTMuODVWNkg4TDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc0Fycm93SW5mbyA9IFwiTTEyIDJMMTYgNkgxM1YxMy44NUwxOS41MyAxNy42MUwyMSAxNS4wM0wyMi41IDIwLjVMMTcgMjEuOTZMMTguNTMgMTkuMzVMMTIgMTUuNThMNS40NyAxOS4zNUw3IDIxLjk2TDEuNSAyMC41TDMgMTUuMDNMNC40NyAxNy42MUwxMSAxMy44NVY2SDhMMTIgMk0yMSA1SDE5VjNIMjFWNU0yMiAxMFYxMkgxOFYxMEgxOVY4SDE4VjZIMjFWMTBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc0Fycm93TG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTEuNzQsMTkuMjVMMy4yMSwxMy43OUw0LjY4LDE2LjM0TDksMTMuODVWNkg2TDEwLDJMMTQsNkgxMVYxMy44NUwxOC4wMywxNy44NkwxOS41LDE1LjI4TDIxLDIwLjc0TDE1LjUsMjIuMjFMMTcuMDMsMTkuNkwxMCwxNS41OEw1LjY4LDE4LjA3TDcuMjEsMjAuNzFMMS43NCwxOS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzTG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTExLDEzLjgyTDIwLjM5LDE5LjI1TDE5LjM5LDIxTDEwLDE1LjU2TDMuMTcsMTkuNUwyLjE3LDE3Ljc3TDksMTMuODJWM0gxMVYxMy44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWEFycm93ID0gXCJNMS41LDIwLjVMMywxNS4wM0w0LjQ2LDE3LjZMMTEsMTMuODJWM0gxM1YxMy44MkwyMi4zOSwxOS4yNUwyMS4zOSwyMUwxMiwxNS41Nkw1LjQ2LDE5LjMzTDcsMjEuOTZMMS41LDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hBcnJvd0xvY2sgPSBcIk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjMxLDIuMiAxNy42OSwyLjU4IDE3LjU0LDMuMkMxNy41LDMuMjkgMTcuNSwzLjM5IDE3LjUsMy41VjVIMjAuNU0xLjc0LDE5LjI1TDMuMjEsMTMuNzlMNC42NywxNi4zMkw5LDEzLjgyVjNIMTFWMTMuODJMMjAuMzksMTkuMjVMMTkuMzksMjFMMTAsMTUuNTZMNS42NywxOC4wNkw3LjIxLDIwLjcxTDEuNzQsMTkuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hSb3RhdGVDbG9ja3dpc2UgPSBcIk0xMiwxMEgxNC45MUMxNC41Nyw2LjU1IDEzLjQsNCAxMiw0QzEwLjQyLDQgOS4xMiw3LjI3IDksMTEuNDJMNywxMi41N1YxMkM3LDYuNSA5LjI0LDIgMTIsMkMxNC40MiwyIDE2LjQ0LDUuNDQgMTYuOSwxMEgyMEwxNiwxNEwxMiwxME0xMiwyMkMxMC4xMiwyMiA4LjQ3LDE5LjkyIDcuNjIsMTYuODRMOS4zNywxNS44M0M5Ljg3LDE4LjMxIDEwLjg2LDIwIDEyLDIwQzEzLjI3LDIwIDE0LjM2LDE3Ljg5IDE0Ljc5LDE0LjkyTDE2LDE2LjEyTDE2LjcsMTUuNDJDMTYsMTkuMjYgMTQuMTYsMjIgMTIsMjJNMi4xMSwxOC44N0wxLjExLDE3LjEzTDEuMDYsMTcuMDZMMTEuMTIsMTEuMjVMMTIuNzIsMTIuODRMMi4xNSwxOC45NEwyLjExLDE4Ljg3TTIxLjg5LDUuMTNMMjIuODksNi44N0wxOS4yLDlIMTcuNzdMMTcuNSw3LjY2TDIxLjg5LDUuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTIsMTRMMTYsMTBMMjAsMTRIMTYuOUMxNi40NCwxOC41NiAxNC40MiwyMiAxMiwyMkMxMC4xMiwyMiA4LjQ3LDE5LjkyIDcuNjIsMTYuODRMOS4zNywxNS44M0M5Ljg3LDE4LjMxIDEwLjg2LDIwIDEyLDIwQzEzLjQsMjAgMTQuNTcsMTcuNDUgMTQuOTEsMTRIMTJNMS4xMSwxNy4xM0wxMy44OSw5Ljc1TDEzLjk2LDEwLjU0TDEwLjUsMTRIMTAuNTRMMi4xMSwxOC44N0wxLjExLDE3LjEzTTIxLjg5LDUuMTNMMjIuODksNi44N0wxNy44OCw5Ljc2QzE3Ljc5LDkuMDMgMTcuNjcsOC4zMyAxNy41LDcuNjZMMjEuODksNS4xM00xMiwyQzE0LjMsMiAxNi4yMyw1LjEgMTYuODIsOS4zMkwxNiw4LjVMMTQuODcsOS42M0MxNC41LDYuMzcgMTMuMzUsNCAxMiw0QzEwLjQyLDQgOS4xMiw3LjI3IDksMTEuNDJMNywxMi41N1YxMkM3LDYuNSA5LjI0LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWFlBcnJvd0xvY2sgPSBcIk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjIsMi4yIDE3LjUsMi43IDE3LjUsMy41VjVIMjAuNU0xLjc0LDE5LjI1TDMuMjEsMTMuNzlMNC42OCwxNi4zNEw5LDEzLjg1VjNIMTFWMTMuODVMMTcuNTMsMTcuNjFMMTksMTUuMDNMMjAuNSwyMC41TDE1LDIxLjk2TDE2LjUzLDE5LjM1TDEwLDE1LjU4TDUuNjgsMTguMDdMNy4yMSwyMC43MUwxLjc0LDE5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZQXJyb3cgPSBcIk0yMi41LDIwLjVMMTcsMjEuOTZMMTguNTMsMTkuMzVMMTIsMTUuNThMMi42MSwyMUwxLjYxLDE5LjI3TDExLDEzLjg1VjNIMTNWMTMuODVMMTkuNTMsMTcuNjFMMjEsMTUuMDNMMjIuNSwyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZQXJyb3dMb2NrID0gXCJNMTEsMTMuODJMMTgsMTcuODhMMTkuNSwxNS4yOEwyMSwyMC43NEwxNS41LDIyLjIxTDE3LDE5LjYxTDEwLDE1LjU2TDMuMTcsMTkuNUwyLjE3LDE3Ljc3TDksMTMuODJWM0gxMVYxMy44Mk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjIsMi4yIDE3LjUsMi43IDE3LjUsMy41VjVIMjAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWVJvdGF0ZUNsb2Nrd2lzZSA9IFwiTTEyLDEwTDE2LDE0TDIwLDEwSDE2LjlDMTYuNDQsNS40NCAxNC40MiwyIDEyLDJDMTAuMTIsMiA4LjQ3LDQuMDggNy42Miw3LjE2TDkuMzcsOC4xN0M5Ljg3LDUuNjkgMTAuODYsNCAxMiw0QzEzLjQsNCAxNC41Nyw2LjU1IDE0LjkxLDEwSDEyTTEuMTEsNi44N0wxMy44OSwxNC4yNUwxMy45NiwxMy40NkwxMC41LDEwSDEwLjU0TDIuMTEsNS4xM0wxLjExLDYuODdNMjEuODksMTguODdMMjIuODksMTcuMTNMMTcuODgsMTQuMjRDMTcuNzksMTQuOTcgMTcuNjcsMTUuNjcgMTcuNSwxNi4zNEwyMS44OSwxOC44N00xMiwyMkMxNC4zLDIyIDE2LjIzLDE4LjkgMTYuODIsMTQuNjhMMTYsMTUuNUwxNC44NywxNC4zN0MxNC41LDE3LjYzIDEzLjM1LDIwIDEyLDIwQzEwLjQyLDIwIDkuMTIsMTYuNzMgOSwxMi41OEw3LDExLjQzVjEyQzcsMTcuNSA5LjI0LDIyIDEyLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZUm90YXRlQ291bnRlcmNsb2Nrd2lzZSA9IFwiTTEyLDE0SDE0LjkxQzE0LjU3LDE3LjQ1IDEzLjQsMjAgMTIsMjBDMTAuNDIsMjAgOS4xMiwxNi43MyA5LDEyLjU4TDcsMTEuNDNWMTJDNywxNy41IDkuMjQsMjIgMTIsMjJDMTQuNDIsMjIgMTYuNDQsMTguNTYgMTYuOSwxNEgyMEwxNiwxMEwxMiwxNE0xMiwyQzEwLjEyLDIgOC40Nyw0LjA4IDcuNjIsNy4xNkw5LjM3LDguMTdDOS44Nyw1LjY5IDEwLjg2LDQgMTIsNEMxMy4yNyw0IDE0LjM2LDYuMTEgMTQuNzksOS4wOEwxNiw3Ljg4TDE2LjcsOC41OEMxNiw0Ljc0IDE0LjE2LDIgMTIsMk0yLjExLDUuMTNMMS4xMSw2Ljg3TDEuMDYsNi45NEwxMS4xMiwxMi43NUwxMi43MiwxMS4xNkwyLjE1LDUuMDZMMi4xMSw1LjEzTTIxLjg5LDE4Ljg3TDIyLjg5LDE3LjEzTDE5LjIsMTVIMTcuNzdMMTcuNSwxNi4zNEwyMS44OSwxOC44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWkFycm93ID0gXCJNMTIsMkwxNiw2SDEzVjEzLjgyTDIyLjM5LDE5LjI1TDIxLjM5LDIxTDEyLDE1LjU2TDIuNjEsMjFMMS42MSwxOS4yNUwxMSwxMy44MlY2SDhMMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWkFycm93TG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTEwLDJMMTQsNkgxMVYxMy44MkwyMC4zOSwxOS4yNUwxOS4zOSwyMUwxMCwxNS41NkwzLjE3LDE5LjVMMi4xNywxNy43N0w5LDEzLjgyVjZINkwxMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNaUm90YXRlQ2xvY2t3aXNlID0gXCJNMTQsMTJMMTAsMTZMMTQsMjBWMTYuOUMxOC41NiwxNi40NCAyMiwxNC40MiAyMiwxMkMyMiw5LjU4IDE4LjU2LDcuNTYgMTQsNy4xVjkuMDlDMTcuNDUsOS40MyAyMCwxMC42IDIwLDEyQzIwLDEzLjQgMTcuNDUsMTQuNTcgMTQsMTQuOTFWMTJNNCwxMkM0LDEwLjYgNi41NSw5LjQzIDEwLDkuMDlWNy4xQzUuNDQsNy41NiAyLDkuNTggMiwxMkMyLDE0LjE2IDQuNzQsMTYgOC41OCwxNi43TDcuODgsMTZMOS4wOCwxNC43OUM2LjExLDE0LjM2IDQsMTMuMjcgNCwxMk0xMywySDExVjEzTDEzLDExVjJNMTMsMjJWMjFMMTEsMTlWMjJIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1pSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTAsMTJMMTQsMTZMMTAsMjBWMTYuOUM1LjQ0LDE2LjQ0IDIsMTQuNDIgMiwxMkMyLDkuNTggNS40NCw3LjU2IDEwLDcuMVY5LjA5QzYuNTUsOS40MyA0LDEwLjYgNCwxMkM0LDEzLjQgNi41NSwxNC41NyAxMCwxNC45MVYxMk0yMCwxMkMyMCwxMC42IDE3LjQ1LDkuNDMgMTQsOS4wOVY3LjFDMTguNTYsNy41NiAyMiw5LjU4IDIyLDEyQzIyLDE0LjE2IDE5LjI2LDE2IDE1LjQyLDE2LjdMMTYuMTIsMTZMMTQuOTIsMTQuNzlDMTcuODksMTQuMzYgMjAsMTMuMjcgMjAsMTJNMTEsMkgxM1YxM0wxMSwxMVYyTTExLDIyVjIxTDEzLDE5VjIySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYmVsID0gXCJNMTUuMTQgMkMxMy44IDIuMTIgMTIuMDQgMi41OSA5Ljg3IDMuNDNDOS4yOCAzLjg3IDguNiA0LjMgNy44NCA0LjcyVjQuODVDNy45IDQuODUgNy45NiA0LjgxIDguMDQgNC43N0M4LjEzIDQuNzYgOC4xOSA0Ljc5IDguMTkgNC44OEw4LjMyIDQuOEw4LjM5IDQuNzlMOC40IDQuODZDOC40MSA0LjkyIDcuOTMgNS4yOSA3IDUuOTZMNy4wNiA2LjA5SDdMNi44NCA2LjA0QzYuODQgNi4wOSA2Ljc4IDYuMTEgNi42NCA2LjEyTDYuNjUgNi4xOUw2LjgxIDYuMzdDNi43NSA2LjM3IDYuNjggNi4zNiA2LjYgNi4zMkM2LjI5IDYuMzUgNiA2LjU4IDUuNjkgN0w1Ljc3IDcuMTJDNi4wMyA2Ljg4IDYuMTggNi43NiA2LjIyIDYuNzZMNi4yNCA2Ljk1QzYuMiA2Ljk1IDYuMTIgNyA2LjA0IDcuMDNMNi4yIDcuMjdDNi41IDYuOTMgNi44NiA2LjY0IDcuMjQgNi40MUM3LjQzIDYuNDYgNy41MyA2LjUgNy41MyA2LjU4TDcuNjcgNi41N0M4LjY5IDUuODEgOS43MSA1LjI3IDEwLjcxIDQuOTNMMTAuNzIgNS4wNkMxMC41MyA1LjM0IDEwLjQgNS41IDEwLjMzIDUuNUMxMC4zNCA1LjU5IDEwLjM4IDUuNjcgMTAuNDMgNS43NEMxMC40NSA1LjkyIDEwIDcuMDYgOS4wNyA5LjE5QzYuOTUgMTQuMTMgNS4xOSAxNy43OCAzLjc3IDIwLjE2QzMuNzcgMjAuMiAzLjggMjAuMjcgMy44NSAyMC4zNUM0LjIgMjAuMjYgNC40MiAyMC4xOCA0LjUgMjAuMUw0LjYgMjAuMDlMNC42MSAyMC4yMkw0Ljc0IDIwLjIxTDQuODggMjAuMTNDNC44OCAyMC4xOCA0LjkzIDIwLjE5IDUgMjAuMThMNS4wMyAyMC4zMUM1LjAzIDIwLjQ1IDQuOTYgMjAuNjUgNC44IDIwLjkyQzQuNjUgMjEuMDggNC41IDIxLjQyIDQuMzQgMjEuOTRWMjJINC40N0M1LjA0IDIxLjM1IDUuNSAyMC43MiA1Ljc4IDIwLjExQzcuNDQgMTkuNjIgOC43MSAxOS4xNSA5LjU5IDE4LjY3QzEwLjQ3IDE4LjYgMTEuMTUgMTguMzcgMTEuNjEgMThMMTEuNiAxNy45MUwxMS4yNyAxOEgxMS4xOUwxMS4xOCAxNy45NUMxMS44MyAxNy44NSAxMi4yOCAxNy43IDEyLjUgMTcuNUMxMy43OSAxNi41NCAxNC43NCAxNS44NSAxNS4zOSAxNS40NEMxNy4zOSAxMy45NyAxOC4zMyAxMi41NSAxOC4yMiAxMS4yMUMxOC4yMSAxMS4wNyAxNy43NiAxMC41IDE2LjkgOS41NkMxNi44OCA5LjM4IDE3LjE5IDkuMTIgMTcuOCA4Ljc3TDE5LjUzIDcuMjRDMTkuOTIgNi43NCAyMC4xNSA1Ljk0IDIwLjIzIDQuODNMMjAuMiA0LjU3QzIwLjE0IDMuNzkgMTkuNTggMy4xNiAxOC41IDIuNjhDMTcuODggMi4yNSAxNi43NiAyLjAzIDE1LjE0IDJNMTcuMjQgMi44N0MxOC41MyAyLjkyIDE5LjE5IDMuMTQgMTkuMjMgMy41NUwxOS4xOCAzLjY4TDE3LjI0IDIuODdNMTYgMy45NkMxNi44OSAzLjk1IDE3LjM1IDQuMTggMTcuNCA0LjY4TDE3LjUgNC42N1Y0LjM0TDE3LjY0IDQuMzNDMTggNC41IDE4LjE2IDQuNzQgMTguMTggNUMxOC4yIDUuMiAxOC4xIDUuNDIgMTcuODkgNS42OUMxNy44IDUuNyAxNy43NSA1LjY0IDE3Ljc0IDUuNUgxNy42TDE3LjU2IDUuOTFDMTcgNi43OCAxNi41NiA3LjIzIDE2LjMgNy4yNkMxNi4wNiA3LjU4IDE1LjkxIDcuNzUgMTUuODUgNy43NUMxNS42NyA3Ljk3IDE1LjE3IDguMzUgMTQuMzUgOC44N0MxNC4wOCA4LjkgMTMuMDcgOS4yOCAxMS4zNCAxMC4wNEMxMS4yNSAxMCAxMS4xNiAxMCAxMS4wNiAxMEwxMS4wNSA5Ljg4QzExLjAzIDkuNjIgMTEuMTQgOS4zMSAxMS4zOSA4LjkyQzExLjUgOC4yMSAxMS42NyA3LjggMTEuODMgNy43TDEzLjI4IDQuNDRDMTMuMjcgNC4yNCAxMy41NyA0LjA5IDE0LjIxIDRMMTQuNDIgMy45NkwxNC40NCA0LjE1QzE1LjA2IDQuMDUgMTUuNDUgNCAxNS42IDRDMTUuNzQgMy45NyAxNS44OCAzLjk2IDE2IDMuOTZNMTkgNC4yOUgxOS4wNEMxOS4xNiA0LjMgMTkuMjggNC41IDE5LjQxIDQuOTFMMTkuNDIgNS4wM0MxOS4zNSA1LjA0IDE5LjIyIDQuODMgMTkuMDMgNC40MUwxOSA0LjI5TTEwLjgyIDYuMzZIMTAuODhMMTAuOSA2LjU1QzEwLjg0IDYuNTYgMTAuNzUgNi42NSAxMC42NSA2LjgzTDEwLjY0IDYuN0MxMC43NiA2LjU1IDEwLjgyIDYuNDMgMTAuODIgNi4zNk02LjY3IDYuNDZMNi42OCA2LjVDNi42MyA2LjUgNi41NiA2LjU2IDYuNSA2LjZMNi40MSA2LjYxTDYuMzkgNi41TDYuNjcgNi40Nk0xMC4yNCA3LjcyTDEwLjI2IDhIMTAuMTlMMTAuMTYgNy43M0wxMC4yNCA3LjcyTTEwLjA3IDguMTlDMTAuMDUgOC40MSAxMCA4LjUgOS44OSA4LjUzTDkuODIgOC41NEM5LjkgOC4zOSA5Ljk0IDguMjkgOS45MyA4LjIxTDEwLjA3IDguMTlNOS43OCA4Ljg3TDkuNzkgOC45M0w5LjY3IDkuMTRMOS41NCA5LjE1TDkuNTMgOS4wOUM5LjY2IDkuMDggOS43MiA5IDkuNzEgOC44OEw5Ljc4IDguODdNOS41IDkuNUw5LjQ1IDkuODFIOS4zOEw5LjM2IDkuNUg5LjVNMTYuNTcgOS43MkwxNi44NSA5Ljg5QzE2Ljg2IDEwIDE2LjgyIDEwLjAzIDE2LjczIDEwLjA0QzE2LjYxIDkuOTYgMTYuNSA5LjkzIDE2LjQ0IDkuOTNMMTYuNDMgOS43M0wxNi41NyA5LjcyTTExIDEwLjQ2TDExLjAzIDEwLjU4TDEwLjc2IDEwLjYxTDEwLjc1IDEwLjVMMTEgMTAuNDZNMTUuNSAxMC45MUMxNS42OCAxMSAxNS43OCAxMS4wOSAxNS43OSAxMS4xNkwxNS44IDExLjIyQzE1LjYxIDExLjI0IDE1LjQ1IDExLjE0IDE1LjI5IDEwLjkzTDE1LjUgMTAuOTFNMTcuNjYgMTEuMTJDMTcuODEgMTEuMTggMTcuODggMTEuMjUgMTcuODkgMTEuMzFMMTcuOTMgMTEuODJDMTcuODcgMTEuOTYgMTcuODEgMTIuMDMgMTcuNzQgMTIuMDNMMTcuNjYgMTEuMTJNMTQuMTYgMTEuMThDMTQuODYgMTEuMTcgMTUuNCAxMS4zMyAxNS43NiAxMS42OEwxNS43OSAxMS45NEMxNS41IDEyLjg1IDE1LjEzIDEzLjM4IDE0Ljc1IDEzLjU0TDEzIDE0LjkzQzExLjcgMTUuNzkgMTEgMTYuMjEgMTAuOSAxNi4yMkM4LjgzIDE3LjM2IDcuNTQgMTcuOTUgNy4wNCAxOEg2Ljk2QzcuMDMgMTcuNzYgNy45NSAxNS44NyA5LjczIDEyLjMzQzEwLjUgMTIuMjYgMTEuNzYgMTEuODkgMTMuNDQgMTEuMjNMMTMuODUgMTEuMTlDMTMuOTYgMTEuMTkgMTQuMDYgMTEuMTggMTQuMTYgMTEuMThNMTEuNjIgMTEuNTlMMTEuNjMgMTEuNjVMMTEuMzUgMTEuNjdMMTEuMzQgMTEuNjFMMTEuNjIgMTEuNTlNNy4yNiAxNS44MUM3LjE3IDE2LjI2IDcuMDggMTYuNSA3IDE2LjVMNi45NyAxNi40M0M2Ljk1IDE2LjIgNy4wNSAxNiA3LjI2IDE1LjgxTTEzLjE4IDE2LjA5TDEzLjE5IDE2LjIxQzEzLjIgMTYuMjcgMTMgMTYuNDMgMTIuNiAxNi43MkMxMS40NCAxNy4yOSAxMC43NiAxNy42OCAxMC41NiAxNy44OEM5LjMgMTguMzIgOC42OCAxOC41OSA4LjY5IDE4LjY5QzcuNTcgMTkuMTQgNi44NCAxOS40NiA2LjUgMTkuNjZDNi40MSAxOS42NyA2LjI5IDE5LjYzIDYuMTMgMTkuNTZDNi4xMiAxOS4zNCA2LjIxIDE5LjE1IDYuNDQgMTlDNi42MyAxOSA2LjgyIDE5IDcgMTkuMDlDNy4yMSAxOSA3LjU3IDE4Ljg3IDguMDggMTguNzRMOC4wNyAxOC42MUw3LjY2IDE4LjY1QzcuNzEgMTguNTggOC4xMSAxOC40IDguODYgMTguMDlMOS4wNyAxOC4wN0w5LjA4IDE4LjEzQzguNzMgMTguMTYgOC41MyAxOC4yNyA4LjUgMTguNDZDOC41IDE4LjUzIDguNTMgMTguNTggOC42MiAxOC41N0M4Ljg3IDE4LjM5IDkgMTguMyA5IDE4LjI3QzkuNSAxOC4xOCAxMC45IDE3LjQ0IDEzLjE4IDE2LjA5TTYuODYgMTYuNjlMNi44NyAxNi43NUM2Ljg4IDE2Ljg0IDYuODMgMTYuODkgNi43NCAxNi45VjE2Ljg0QzYuNzMgMTYuNzYgNi43NyAxNi43MSA2Ljg2IDE2LjY5TTEwIDE3LjVDMTAuMDcgMTcuNDcgMTAuMTIgMTcuNSAxMC4xMiAxNy41OEM5Ljk2IDE3LjYgOS42NSAxNy43MyA5LjE5IDE4SDkuMTJMOS4xMSAxNy44N0M5LjQ0IDE3Ljg0IDkuNzMgMTcuNzEgOS45NyAxNy41SDEwTTYuOTUgMTguNUw2Ljk2IDE4LjU4QzYuOSAxOC41OCA2Ljg0IDE4LjYxIDYuNzUgMTguNjZMNi42MiAxOC42N0M2LjYxIDE4LjYxIDYuNjUgMTguNTUgNi43NCAxOC41M0w2Ljk1IDE4LjVNNS4zNSAxOS4zTDUuNSAxOS4zNkM1LjQ0IDE5Ljc2IDUuMzMgMTkuOTYgNS4xMyAyMEM0Ljk3IDE5LjkxIDQuODMgMTkuODggNC43IDE5Ljg5TDQuNjggMTkuN0M0LjY3IDE5LjYyIDQuNzIgMTkuNTcgNC44MiAxOS41NUM0LjkgMTkuNTQgNC45NSAxOS42IDQuOTYgMTkuNzNDNS4yIDE5LjQ0IDUuMzMgMTkuMyA1LjM1IDE5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieSA9IFwiTTE4LjUsNEEyLjUsMi41IDAgMCwxIDIxLDYuNUEyLjUsMi41IDAgMCwxIDE4LjUsOUEyLjUsMi41IDAgMCwxIDE2LDYuNUEyLjUsMi41IDAgMCwxIDE4LjUsNE00LjUsMjBBMS41LDEuNSAwIDAsMSAzLDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdIMTEuNUExLjUsMS41IDAgMCwxIDEzLDE4LjVBMS41LDEuNSAwIDAsMSAxMS41LDIwSDQuNU0xNi4wOSwxOUwxNC42OSwxNUgxMUw2Ljc1LDEwLjc1QzYuNzUsMTAuNzUgOSw4LjI1IDEyLjUsOC4yNUMxNS41LDguMjUgMTUuODUsOS4yNSAxNi4wNiw5Ljg3TDE4LjkyLDE4QzE5LjIsMTguNzggMTguNzgsMTkuNjQgMTgsMTkuOTJDMTcuMjIsMjAuMTkgMTYuMzYsMTkuNzggMTYuMDksMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUJvdHRsZSA9IFwiTTExLjI4IDIuOEwxMC43OCAzLjNBNS41IDUuNSAwIDAgMCA2LjQxIDIuODdMNi4zMyAyLjhBMi41IDIuNSAwIDAgMCAyLjggNi4zM0wyLjg3IDYuNDFBNS41IDUuNSAwIDAgMCAzLjMgMTAuNzhMMi44IDExLjI4QTEuNSAxLjUgMCAwIDAgMi44IDEzLjRMNC4yMSAxNC44MkExLjUgMS41IDAgMCAwIDYuMzMgMTQuODJMNi42OCAxNC40NkwxMy43NiAyMS41M0ExLjUgMS41IDAgMCAwIDE1Ljg4IDIxLjUzTDIxLjUzIDE1Ljg4QTEuNSAxLjUgMCAwIDAgMjEuNTMgMTMuNzZMMTQuNDYgNi42OEwxNC44MiA2LjMzQTEuNSAxLjUgMCAwIDAgMTQuODIgNC4yMUwxMy40IDIuOEExLjUgMS41IDAgMCAwIDExLjI4IDIuOE0xMy43NiA1LjI3TDUuMjcgMTMuNzZMMy44NiAxMi4zNEwxMi4zNCAzLjg2TTE0LjgyIDExLjYzTDExLjYzIDE0LjgyTDEwLjU3IDEzLjc2TDEzLjc2IDEwLjU3TTE2Ljk0IDEzLjc2TDEzLjc2IDE2Ljk0TDEyLjY5IDE1Ljg4TDE1Ljg4IDEyLjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYnlCb3R0bGVPdXRsaW5lID0gXCJNMTEuMjggMi44TDEwLjc4IDMuM0M5LjQ0IDIuNTUgNy44NCAyLjQgNi40MSAyLjg3TDYuMzMgMi44QzUuMzYgMS44MiAzLjc3IDEuODIgMi44IDIuOFMxLjgyIDUuMzYgMi44IDYuMzNMMi44NyA2LjQxQzIuNCA3Ljg0IDIuNTUgOS40NCAzLjMgMTAuNzhMMi44IDExLjI4QzIuMjEgMTEuODcgMi4yMSAxMi44MSAyLjggMTMuNEw0LjIxIDE0LjgyQzQuOCAxNS40IDUuNzQgMTUuNCA2LjMzIDE0LjgyTDYuNjggMTQuNDZMMTMuNzYgMjEuNTNDMTQuMzQgMjIuMTIgMTUuMjkgMjIuMTIgMTUuODggMjEuNTNMMjEuNTMgMTUuODhDMjIuMTIgMTUuMjkgMjIuMTIgMTQuMzQgMjEuNTMgMTMuNzVMMTQuNDYgNi42OEwxNC44MiA2LjMzQzE1LjQgNS43NCAxNS40IDQuOCAxNC44MiA0LjIxTDEzLjQgMi43OUMxMi44MiAyLjIxIDExLjg3IDIuMjEgMTEuMjggMi44TTQuMjUgNy4wNUM0LjMzIDYuNzEgNC40NyA2LjM4IDQuNjYgNi4wN0wzLjg2IDUuMjdDMy43NSA1LjE2IDMuNjcgNS4wNCAzLjYzIDQuOUMzLjUgNC41NiAzLjU3IDQuMTQgMy44NiAzLjg2UzQuNTYgMy41IDQuOSAzLjYzQzUuMDQgMy42NyA1LjE2IDMuNzUgNS4yNyAzLjg2TDYuMDcgNC42NkM2LjM4IDQuNDcgNi43MSA0LjMzIDcuMDUgNC4yNUM3LjkxIDQgOC44MyA0LjA2IDkuNjUgNC40Mkw0LjQyIDkuNjVDNC4wNiA4LjgzIDQgNy45MSA0LjI1IDcuMDVNMjAuNDcgMTQuODJMMTQuODIgMjAuNDdMNy43NSAxMy40TDEzLjQgNy43NUwyMC40NyAxNC44Mk0xMy43NiA1LjI3TDUuMjcgMTMuNzZMMy44NiAxMi4zNEwxMi4zNCAzLjg2TDEzLjc2IDUuMjdNMTQuODIgMTEuNjNMMTEuNjMgMTQuODJMMTAuNTcgMTMuNzZMMTMuNzYgMTAuNTdMMTQuODIgMTEuNjNNMTYuOTQgMTMuNzZMMTMuNzYgMTYuOTRMMTIuNjkgMTUuODhMMTUuODggMTIuNjlMMTYuOTQgMTMuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUJ1Z2d5ID0gXCJNMTcgMjBBMiAyIDAgMCAxIDE1IDIyQTIgMiAwIDAgMSAxMyAyMEEyIDIgMCAwIDEgMTUgMThBMiAyIDAgMCAxIDE3IDIwTTcgMjBBMiAyIDAgMCAxIDUgMjJBMiAyIDAgMCAxIDMgMjBBMiAyIDAgMCAxIDUgMThBMiAyIDAgMCAxIDcgMjBNMTcuNjEgM0MxNi45NSAzIDE2LjQ0IDMuMiAxNiAzLjVDMTUuMzIgMy45MSAxNC44OCA0LjU5IDE0LjQ3IDUuMDdMNS43MSAxNS4zNUM1LjE2IDE2IDUuNjIgMTcgNi40NyAxN0gxNEMxNS4xMSAxNyAxNiAxNi4xIDE2IDE1VjYuMzhDMTYuNTggNS43IDE2LjkzIDUgMTcuNjEgNUMxOC4zOCA1IDE5IDUuNjYgMTkgNi41VjdIMjFWNi41QzIxIDQuNTYgMTkuNSAzIDE3LjYxIDNNOC44NiAzLjA5QzcuMDQgMy4xNiA1LjIzIDMuNzYgMy42OCA0LjlMOC40NCA5LjY2TDEyLjMyIDUuMUMxMi41OSA0Ljc4IDEyLjkxIDQuMzggMTMuMyA0QzEyLjE0IDMuNDUgMTAuOSAzLjE1IDkuNjUgMy4wOUM5LjM5IDMuMDggOS4xMiAzLjA4IDguODYgMy4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWJ5Q2FycmlhZ2UgPSBcIk0xMywyVjEwSDIxQTgsOCAwIDAsMCAxMywyTTE5LjMyLDE1Ljg5QzIwLjM3LDE0LjU0IDIxLDEyLjg0IDIxLDExSDYuNDRMNS41LDlIMlYxMUg0LjIyQzQuMjIsMTEgNi4xMSwxNS4wNyA2LjM0LDE1LjQyQzUuMjQsMTYgNC41LDE3LjE3IDQuNSwxOC41QTMuNSwzLjUgMCAwLDAgOCwyMkM5Ljc2LDIyIDExLjIyLDIwLjcgMTEuNDYsMTlIMTMuNTRDMTMuNzgsMjAuNyAxNS4yNCwyMiAxNywyMkEzLjUsMy41IDAgMCwwIDIwLjUsMTguNUMyMC41LDE3LjQ2IDIwLjA0LDE2LjUzIDE5LjMyLDE1Ljg5TTgsMjBBMS41LDEuNSAwIDAsMSA2LjUsMTguNUExLjUsMS41IDAgMCwxIDgsMTdBMS41LDEuNSAwIDAsMSA5LjUsMTguNUExLjUsMS41IDAgMCwxIDgsMjBNMTcsMjBBMS41LDEuNSAwIDAsMSAxNS41LDE4LjVBMS41LDEuNSAwIDAsMSAxNywxN0ExLjUsMS41IDAgMCwxIDE4LjUsMTguNUExLjUsMS41IDAgMCwxIDE3LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYnlDYXJyaWFnZU9mZiA9IFwiTTIyIDEwQzIyIDUuNiAxOC40IDIgMTQgMlYxMEgyMk0xNC4yIDExSDIyQzIyIDEyLjggMjEuNCAxNC41IDIwLjMgMTUuOUMyMSAxNi41IDIxLjQgMTcuNCAyMS41IDE4LjNMMTQuMiAxMU0yMC44IDIyLjdMMjIuMSAyMS40TDIuNCAxLjdMMS4xIDNMOS4xIDExSDcuNEw2LjUgOUgzVjExSDUuMkM1LjIgMTEgNy4xIDE1LjEgNy4zIDE1LjRDNi4zIDE1LjkgNS42IDE2LjkgNS41IDE4QzUuMiAxOS45IDYuNiAyMS43IDguNSAyMkMxMC40IDIyLjMgMTIuMiAyMC45IDEyLjUgMTlIMTQuNkMxNC43IDE5LjQgMTQuOCAxOS44IDE1IDIwLjJDMTUuOSAyMS45IDE4LjEgMjIuNSAxOS43IDIxLjZMMjAuOCAyMi43TTEwLjUgMTguNUMxMC41IDE5LjMgOS44IDIwIDkgMjBTNy41IDE5LjMgNy41IDE4LjUgOC4yIDE3IDkgMTcgMTAuNSAxNy43IDEwLjUgMTguNU0xOC4xIDIwQzE3LjIgMjAgMTYuNSAxOS4zIDE2LjUgMTguNVYxOC40TDE4LjEgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUZhY2UgPSBcIk0xLDEyQzEsMTAuMTkgMi4yLDguNjYgMy44Niw4LjE3QzUuMjksNS4xMSA4LjQsMyAxMiwzQzE1LjYsMyAxOC43MSw1LjExIDIwLjE1LDguMTdDMjEuOCw4LjY2IDIzLDEwLjE5IDIzLDEyQzIzLDEzLjgxIDIxLjgsMTUuMzQgMjAuMTUsMTUuODNDMTguNzEsMTguODkgMTUuNiwyMSAxMiwyMUM4LjQsMjEgNS4yOSwxOC44OSAzLjg2LDE1LjgzQzIuMiwxNS4zNCAxLDEzLjgxIDEsMTJNMTQuNSw5LjI1QTEuMjUsMS4yNSAwIDAsMCAxMy4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMCAxNC41LDExLjc1QTEuMjUsMS4yNSAwIDAsMCAxNS43NSwxMC41QTEuMjUsMS4yNSAwIDAsMCAxNC41LDkuMjVNOS41LDkuMjVBMS4yNSwxLjI1IDAgMCwwIDguMjUsMTAuNUExLjI1LDEuMjUgMCAwLDAgOS41LDExLjc1QTEuMjUsMS4yNSAwIDAsMCAxMC43NSwxMC41QTEuMjUsMS4yNSAwIDAsMCA5LjUsOS4yNU03LjUsMTRDOC4yNiwxNS43NyAxMCwxNyAxMiwxN0MxNCwxNyAxNS43NCwxNS43NyAxNi41LDE0SDcuNU0zLDEyQzMsMTIuODIgMy41LDEzLjUzIDQuMjEsMTMuODRDNC4wNywxMy4yNSA0LDEyLjYzIDQsMTJDNCwxMS4zNyA0LjA3LDEwLjc1IDQuMjEsMTAuMTZDMy41LDEwLjQ3IDMsMTEuMTggMywxMk0yMSwxMkMyMSwxMS4xOCAyMC41LDEwLjQ3IDE5Ljc5LDEwLjE2QzE5LjkzLDEwLjc1IDIwLDExLjM3IDIwLDEyQzIwLDEyLjYzIDE5LjkzLDEzLjI1IDE5Ljc5LDEzLjg0QzIwLjUsMTMuNTMgMjEsMTIuODIgMjEsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUZhY2VPdXRsaW5lID0gXCJNMTQuNSw5LjI1QTEuMjUsMS4yNSAwIDAsMSAxNS43NSwxMC41QTEuMjUsMS4yNSAwIDAsMSAxNC41LDExLjc1QTEuMjUsMS4yNSAwIDAsMSAxMy4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMSAxNC41LDkuMjVNOS41LDkuMjVBMS4yNSwxLjI1IDAgMCwxIDEwLjc1LDEwLjVBMS4yNSwxLjI1IDAgMCwxIDkuNSwxMS43NUExLjI1LDEuMjUgMCAwLDEgOC4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMSA5LjUsOS4yNU03LjUsMTRIMTYuNUMxNS43NCwxNS43NyAxNCwxNyAxMiwxN0MxMCwxNyA4LjI2LDE1Ljc3IDcuNSwxNE0xLDEyQzEsMTAuMTkgMi4yLDguNjYgMy44Niw4LjE3QzUuMjksNS4xMSA4LjQsMyAxMiwzQzE1LjYsMyAxOC43MSw1LjExIDIwLjE1LDguMTdDMjEuOCw4LjY2IDIzLDEwLjE5IDIzLDEyQzIzLDEzLjgxIDIxLjgsMTUuMzQgMjAuMTUsMTUuODNDMTguNzEsMTguODkgMTUuNiwyMSAxMiwyMUM4LjQsMjEgNS4yOSwxOC44OSAzLjg2LDE1LjgzQzIuMiwxNS4zNCAxLDEzLjgxIDEsMTJNMTIsNUM4LjgyLDUgNi4xNCw3LjEyIDUuMjgsMTBINUEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEg1LjI4QzYuMTQsMTYuODggOC44MiwxOSAxMiwxOUMxNS4xOCwxOSAxNy44NiwxNi44OCAxOC43MiwxNEgxOUEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE4LjcyQzE3Ljg2LDcuMTIgMTUuMTgsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhY2tidXJnZXIgPSBcIk01LDEzTDksMTdMNy42LDE4LjQyTDEuMTgsMTJMNy42LDUuNThMOSw3TDUsMTFIMjFWMTNINU0yMSw2VjhIMTFWNkgyMU0yMSwxNlYxOEgxMVYxNkgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWNrc3BhY2UgPSBcIk0yMiwzSDdDNi4zMSwzIDUuNzcsMy4zNSA1LjQxLDMuODhMMCwxMkw1LjQxLDIwLjExQzUuNzcsMjAuNjQgNi4zMSwyMSA3LDIxSDIyQTIsMiAwIDAsMCAyNCwxOVY1QTIsMiAwIDAsMCAyMiwzTTE5LDE1LjU5TDE3LjU5LDE3TDE0LDEzLjQxTDEwLjQxLDE3TDksMTUuNTlMMTIuNTksMTJMOSw4LjQxTDEwLjQxLDdMMTQsMTAuNTlMMTcuNTksN0wxOSw4LjQxTDE1LjQxLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFja3NwYWNlT3V0bGluZSA9IFwiTTE5LDE1LjU5TDE3LjU5LDE3TDE0LDEzLjQxTDEwLjQxLDE3TDksMTUuNTlMMTIuNTksMTJMOSw4LjQxTDEwLjQxLDdMMTQsMTAuNTlMMTcuNTksN0wxOSw4LjQxTDE1LjQxLDEyTDE5LDE1LjU5TTIyLDNBMiwyIDAgMCwxIDI0LDVWMTlBMiwyIDAgMCwxIDIyLDIxSDdDNi4zMSwyMSA1Ljc3LDIwLjY0IDUuNDEsMjAuMTFMMCwxMkw1LjQxLDMuODhDNS43NywzLjM1IDYuMzEsMyA3LDNIMjJNMjIsNUg3TDIuMjgsMTJMNywxOUgyMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhY2tzcGFjZVJldmVyc2UgPSBcIk0yLDIxSDE3QzE3LjcsMjEgMTguMiwyMC42IDE4LjYsMjAuMUwyNCwxMkwxOC42LDMuOUMxOC4yLDMuNCAxNy43LDMgMTcsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFNNSw4LjRMNi40LDdMMTAsMTAuNkwxMy42LDdMMTUsOC40TDExLjQsMTJMMTUsMTUuNkwxMy42LDE3TDEwLDEzLjRMNi40LDE3TDUsMTUuNkw4LjYsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlCYWNrc3BhY2VSZXZlcnNlT3V0bGluZSA9IFwiTTUsMTUuNTlMNi40MSwxN0wxMCwxMy40MUwxMy41OSwxN0wxNSwxNS41OUwxMS40MSwxMkwxNSw4LjQxTDEzLjU5LDdMMTAsMTAuNTlMNi40MSw3TDUsOC40MUw4LjU5LDEyTDUsMTUuNTlNMiwzQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMTdDMTcuNjksMjEgMTguMjMsMjAuNjQgMTguNTksMjAuMTFMMjQsMTJMMTguNTksMy44OEMxOC4yMywzLjM1IDE3LjY5LDMgMTcsM0gyTTIsNUgxN0wyMS43MiwxMkwxNywxOUgyVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFja3VwUmVzdG9yZSA9IFwiTTEyLDNBOSw5IDAgMCwwIDMsMTJIMEw0LDE2TDgsMTJINUE3LDcgMCAwLDEgMTIsNUE3LDcgMCAwLDEgMTksMTJBNyw3IDAgMCwxIDEyLDE5QzEwLjUsMTkgOS4wOSwxOC41IDcuOTQsMTcuN0w2LjUsMTkuMTRDOC4wNCwyMC4zIDkuOTQsMjEgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQTksOSAwIDAsMCAxMiwzTTE0LDEyQTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWN0ZXJpYSA9IFwiTTIxLDE2QzIxLDE1LjUgMjAuOTUsMTUuMDggMjAuODgsMTQuNjhMMjIuNDUsMTMuOUwyMS41NSwxMi4xTDIwLjE4LDEyLjc5QzE5LjYzLDExLjk2IDE4LjkxLDExLjUgMTguMjksMTEuMjhMMTguOTUsOS4zMkwxNy4wNSw4LjY4TDE2LjI5LDEwLjk2QzE0Ljk2LDEwLjgzIDE0LjE3LDEwLjMyIDEzLjcsOS43N0wxNS40NSw4LjlMMTQuNTUsNy4xTDEzLDcuODlDMTIuOTcsNy41OSAxMi44Niw2LjcyIDEyLjI4LDUuODdMMTMuODMsMy41NUwxMi4xNywyLjQ0TDEwLjc2LDQuNTZDMTAuMjgsNC4zMyA5LjcsNC4xNSA5LDQuMDZWMkg3VjQuMUM2LjI5LDQuMjUgNS43Myw0LjU0IDUuMzIsNC45MUwyLjcsMi4yOUwxLjI5LDMuNzFMNC4yNCw2LjY1QzQsNy4zOSA0LDggNCw4SDJWMTBINC4wNEM0LjEsMTAuNjMgNC4yMSwxMS4zNiA0LjQsMTIuMTVMMS42OCwxMy4wNUwyLjMxLDE0Ljk1TDUsMTQuMDVDNS4yNCwxNC41NiA1LjUsMTUuMDggNS44MiwxNS41OEwzLjQ0LDE3LjE3TDQuNTUsMTguODNMNy4wNywxNy4xNUM3LjYzLDE3LjcxIDguMjksMTguMjEgOS4wNiwxOC42NEw4LjEsMjAuNTVMOS44OSwyMS40NUwxMC44OSwxOS40NUwxMC43MywxOS4zNkMxMS42OCwxOS42OCAxMi43NiwxOS45IDE0LDE5Ljk3VjIySDE2VjE5LjkzQzE2Ljc2LDE5Ljg0IDE3LjgxLDE5LjY0IDE4Ljc3LDE5LjE5TDIwLjI5LDIwLjcxTDIxLjcsMTkuMjlMMjAuMzcsMTcuOTVDMjAuNzUsMTcuNDQgMjEsMTYuOCAyMSwxNk04LjUsMTFBMS41LDEuNSAwIDAsMSA3LDkuNUExLjUsMS41IDAgMCwxIDguNSw4QTEuNSwxLjUgMCAwLDEgMTAsOS41QTEuNSwxLjUgMCAwLDEgOC41LDExTTExLDE0QTEsMSAwIDAsMSAxMCwxM0ExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEyLDEzQTEsMSAwIDAsMSAxMSwxNE0xNS41LDE3QTEuNSwxLjUgMCAwLDEgMTQsMTUuNUExLjUsMS41IDAgMCwxIDE1LjUsMTRBMS41LDEuNSAwIDAsMSAxNywxNS41QTEuNSwxLjUgMCAwLDEgMTUuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYWN0ZXJpYU91dGxpbmUgPSBcIk05LDJIN1Y0LjFDNi4yOSw0LjI1IDUuNzMsNC41NCA1LjMyLDQuOTFMMi43LDIuMjlMMS4yOSwzLjcxTDQuMjQsNi42NUM0LDcuMzkgNCw4IDQsOEgyVjEwSDQuMDRDNC4xLDEwLjYzIDQuMjEsMTEuMzYgNC40LDEyLjE1TDEuNjgsMTMuMDVMMi4zMSwxNC45NUw1LDE0LjA1QzUuMjQsMTQuNTYgNS41LDE1LjA4IDUuODIsMTUuNThMMy40NCwxNy4xN0w0LjU1LDE4LjgzTDcuMDcsMTcuMTVDNy42MywxNy43MSA4LjI5LDE4LjIxIDkuMDYsMTguNjRMOC4xLDIwLjU1TDkuODksMjEuNDVMMTAuODksMTkuNDVMMTAuNzMsMTkuMzZDMTEuNjgsMTkuNjggMTIuNzYsMTkuOSAxNCwxOS45N1YyMkgxNlYxOS45M0MxNi43NiwxOS44NCAxNy44MSwxOS42NCAxOC43NywxOS4xOUwyMC4yOSwyMC43MUwyMS43LDE5LjI5TDIwLjM3LDE3Ljk1QzIwLjc1LDE3LjQ0IDIxLDE2LjggMjEsMTZDMjEsMTUuNSAyMC45NSwxNS4wOCAyMC44OCwxNC42OEwyMi40NSwxMy45TDIxLjU1LDEyLjFMMjAuMTgsMTIuNzlDMTkuNjMsMTEuOTYgMTguOTEsMTEuNSAxOC4yOSwxMS4yOEwxOC45NSw5LjMyTDE3LjA1LDguNjhMMTYuMjksMTAuOTZDMTQuOTYsMTAuODMgMTQuMTcsMTAuMzIgMTMuNyw5Ljc3TDE1LjQ1LDguOUwxNC41NSw3LjFMMTMsNy44OUMxMi45Nyw3LjU5IDEyLjg2LDYuNzIgMTIuMjgsNS44N0wxMy44MywzLjU1TDEyLjE3LDIuNDRMMTAuNzYsNC41NkMxMC4yOCw0LjMzIDkuNyw0LjE1IDksNC4wNk0xNSwxOEMxMi4wNiwxOCA5LjgxLDE3LjE4IDguMzEsMTUuNTZDNS42OCwxMi43MiA2LDguMiA2LDguMTdWOC4xMUw2LDguMDNDNiw3LjEgNi4zOSw2IDgsNkMxMC42Myw2IDEwLjk3LDcuNDMgMTEsOEMxMSwxMCAxMi42LDEzIDE3LDEzQzE3LjMzLDEzIDE5LDEzLjE1IDE5LDE2QzE5LDE3Ljg5IDE1LjAzLDE4IDE1LDE4TTguNSw4QTEuNSwxLjUgMCAwLDAgNyw5LjVBMS41LDEuNSAwIDAsMCA4LjUsMTFBMS41LDEuNSAwIDAsMCAxMCw5LjVBMS41LDEuNSAwIDAsMCA4LjUsOE0xMSwxMkExLDEgMCAwLDAgMTAsMTNBMSwxIDAgMCwwIDExLDE0QTEsMSAwIDAsMCAxMiwxM0ExLDEgMCAwLDAgMTEsMTJNMTUuNSwxNEExLjUsMS41IDAgMCwwIDE0LDE1LjVBMS41LDEuNSAwIDAsMCAxNS41LDE3QTEuNSwxLjUgMCAwLDAgMTcsMTUuNUExLjUsMS41IDAgMCwwIDE1LjUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50ID0gXCJNMTcsM0gxNFY2SDEwVjNIN0EyLDIgMCAwLDAgNSw1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVY1QTIsMiAwIDAsMCAxNywzTTEyLDhBMiwyIDAgMCwxIDE0LDEwQTIsMiAwIDAsMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDhNMTYsMTZIOFYxNUM4LDEzLjY3IDEwLjY3LDEzIDEyLDEzQzEzLjMzLDEzIDE2LDEzLjY3IDE2LDE1VjE2TTEzLDVIMTFWMUgxM1Y1TTE2LDE5SDhWMThIMTZWMTlNMTIsMjFIOFYyMEgxMlYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWRnZUFjY291bnRBbGVydCA9IFwiTTE1LDNIMTJWNkg4VjNINUEyLDIgMCAwLDAgMyw1VjIxQTIsMiAwIDAsMCA1LDIzSDE1QTIsMiAwIDAsMCAxNywyMVY1QTIsMiAwIDAsMCAxNSwzTTEwLDhBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgOCwxMEEyLDIgMCAwLDEgMTAsOE0xNCwxNkg2VjE1QzYsMTMuNjcgOC42NywxMyAxMCwxM0MxMS4zMywxMyAxNCwxMy42NyAxNCwxNVYxNk0xMSw1SDlWMUgxMVY1TTE0LDE5SDZWMThIMTRWMTlNMTAsMjFINlYyMEgxMFYyMU0xOSwxM1Y3SDIxVjEzSDE5TTE5LDE3VjE1SDIxVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZGdlQWNjb3VudEFsZXJ0T3V0bGluZSA9IFwiTTE1LDNIMTJWNUgxNVYyMUg1VjVIOFYzSDVBMiwyIDAgMCwwIDMsNVYyMUEyLDIgMCAwLDAgNSwyM0gxNUEyLDIgMCAwLDAgMTcsMjFWNUEyLDIgMCAwLDAgMTUsM00xMCw3QTIsMiAwIDAsMSAxMiw5QTIsMiAwIDAsMSAxMCwxMUEyLDIgMCAwLDEgOCw5QTIsMiAwIDAsMSAxMCw3TTE0LDE1SDZWMTRDNiwxMi42NyA4LjY3LDEyIDEwLDEyQzExLjMzLDEyIDE0LDEyLjY3IDE0LDE0VjE1TTE0LDE4SDZWMTdIMTRWMThNMTAsMjBINlYxOUgxMFYyME0xMSw1SDlWMUgxMVY1TTE5LDEzVjdIMjFWMTNIMTlNMTksMTdWMTVIMjFWMTdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50SG9yaXpvbnRhbCA9IFwiTTIyLDRIMTRWN0gxMFY0SDJBMiwyIDAgMCwwIDAsNlYyMEEyLDIgMCAwLDAgMiwyMkgyMkEyLDIgMCAwLDAgMjQsMjBWNkEyLDIgMCAwLDAgMjIsNE04LDlBMiwyIDAgMCwxIDEwLDExQTIsMiAwIDAsMSA4LDEzQTIsMiAwIDAsMSA2LDExQTIsMiAwIDAsMSA4LDlNMTIsMTdINFYxNkM0LDE0LjY3IDYuNjcsMTQgOCwxNEM5LjMzLDE0IDEyLDE0LjY3IDEyLDE2VjE3TTIwLDE4SDE0VjE2SDIwVjE4TTIwLDE0SDE0VjEySDIwVjE0TTIwLDEwSDE0VjhIMjBWMTBNMTMsNkgxMVYySDEzVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50SG9yaXpvbnRhbE91dGxpbmUgPSBcIk04LDlBMiwyIDAgMCwxIDEwLDExQTIsMiAwIDAsMSA4LDEzQTIsMiAwIDAsMSA2LDExQTIsMiAwIDAsMSA4LDlNMTIsMTdINFYxNkM0LDE0LjY3IDYuNjcsMTQgOCwxNEM5LjMzLDE0IDEyLDE0LjY3IDEyLDE2VjE3TTIwLDhIMTRWMTBIMjBWOE0yMCwxMkgxNFYxNEgyMFYxMk0yMCwxNkgxNFYxOEgyMFYxNk0yMiw0SDE0VjZIMjJWMjBIMlY2SDEwVjRIMkEyLDIgMCAwLDAgMCw2VjIwQTIsMiAwIDAsMCAyLDIySDIyQTIsMiAwIDAsMCAyNCwyMFY2QTIsMiAwIDAsMCAyMiw0TTEzLDZIMTFWMkgxM1Y2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZGdlQWNjb3VudE91dGxpbmUgPSBcIk0xNywzSDE0VjVIMTdWMjFIN1Y1SDEwVjNIN0EyLDIgMCAwLDAgNSw1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVY1QTIsMiAwIDAsMCAxNywzTTEyLDdBMiwyIDAgMCwxIDE0LDlBMiwyIDAgMCwxIDEyLDExQTIsMiAwIDAsMSAxMCw5QTIsMiAwIDAsMSAxMiw3TTE2LDE1SDhWMTRDOCwxMi42NyAxMC42NywxMiAxMiwxMkMxMy4zMywxMiAxNiwxMi42NyAxNiwxNFYxNU0xNiwxOEg4VjE3SDE2VjE4TTEyLDIwSDhWMTlIMTJWMjBNMTMsNUgxMVYxSDEzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkbWludG9uID0gXCJNMTIuMywyQzExLjMzLDIuMDMgMTAuNTgsMi44NCAxMC42MSwzLjhDMTAuNjIsNC4wNCAxMC42Nyw0LjI3IDEwLjc3LDQuNUwxMS4wNiw1LjE0VjUuMTRDMTEuMSw1LjI3IDExLjAzLDUuNDEgMTAuODksNS40NUMxMC44LDUuNSAxMC43LDUuNDUgMTAuNjMsNS4zN0wxMC4yMSw0LjgyQzkuODgsNC40IDkuMzgsNC4xNCA4Ljg1LDQuMTNDNy44OCw0LjExIDcuMDgsNC44OCA3LjA2LDUuODRDNy4wNSw2LjI2IDcuMTksNi42NiA3LjQ1LDdMNy44Nyw3LjVINy44OEM3Ljk2LDcuNjMgNy45Myw3Ljc5IDcuODIsNy44N0M3LjczLDcuOTQgNy42MSw3Ljk0IDcuNTMsNy44N0w3LDcuNDVDNi42Niw3LjE5IDYuMjUsNy4wNSA1Ljg0LDcuMDZDNC44OCw3LjA4IDQuMTEsNy44OCA0LjEzLDguODVDNC4xNCw5LjM4IDQuNCw5Ljg4IDQuODIsMTAuMjFMNS4zOSwxMC42NUM1LjUsMTAuNzUgNS41LDEwLjkxIDUuMzgsMTFDNS4zMSwxMS4wNyA1LjIxLDExLjA5IDUuMTIsMTEuMDVINS4xMUw0LjUsMTAuNzdDNC4yNywxMC42OCA0LjA0LDEwLjYyIDMuOCwxMC42MUMyLjg0LDEwLjU4IDIuMDMsMTEuMzQgMiwxMi4zMUMyLDEzLjAzIDIuNCwxMy42OSAzLjA2LDEzLjk3TDE0LjQ1LDE5LjA0TDE5LjA0LDE0LjQ1TDEzLjk3LDMuMDZDMTMuNjksMi4zOSAxMywxLjk3IDEyLjMsMk0xMy4xMyw2LjFDMTMuNTUsNi4wOSAxMy45Myw2LjMzIDE0LjA5LDYuNzFMMTcuMTQsMTMuNTVMMTMuMTksOS42MUwxMi4yNiw3LjVDMTEuOTYsNi44NyAxMi40Miw2LjEyIDEzLjEzLDYuMU05Ljg1LDguODVDMTAuMTIsOC44NSAxMC4zNyw4Ljk1IDEwLjU2LDkuMTVMMTUuMzcsMTMuOTZDMTUuNzcsMTQuMzQgMTUuNzgsMTQuOTcgMTUuNCwxNS4zN0MxNSwxNS43NyAxNC4zOCwxNS43OCAxMy45NiwxNS4zN0w5LjE1LDEwLjU2QzguNzUsMTAuMTggOC43NCw5LjU0IDkuMTMsOS4xNUM5LjMyLDguOTUgOS41OCw4Ljg1IDkuODUsOC44NU03LjEzLDEyLjE3QzcuMjYsMTIuMTcgNy40LDEyLjIxIDcuNSwxMi4yNkw5LjYzLDEzLjJMMTMuNTcsMTcuMTRMNi43MSwxNC4wOUM1LjY5LDEzLjY1IDYuMDMsMTIuMTQgNy4xMywxMi4xN00yMC4yOCwxNi4wNEwxNi4wNCwyMC4yOEwxNi44OSwyMS4xM0MxNy42NSwyMS44OCAxOC43NSwyMi4xNyAxOS43OCwyMS45QzIwLjgxLDIxLjYyIDIxLjYyLDIwLjgxIDIxLjksMTkuNzhDMjIuMTcsMTguNzUgMjEuODgsMTcuNjUgMjEuMTMsMTYuODlMMjAuMjgsMTYuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnQ2FycnlPbiA9IFwiTTE0LjYgMjEuNEMxNSAyMS44IDE1LjQgMjIgMTYgMjJTMTcgMjEuOCAxNy40IDIxLjQgMTggMjAuNiAxOCAyMCAxNy44IDE5IDE3LjQgMTguNiAxNi41IDE4IDE2IDE4IDE1IDE4LjIgMTQuNiAxOC42IDE0IDE5LjQgMTQgMjAgMTQuMiAyMSAxNC42IDIxLjRNNiAxOUM2IDE5LjUgNi4yIDIwIDYuNiAyMC40QzcgMjAuOCA3LjUgMjEgOCAyMVY3QzcuNSA3IDcgNy4yIDYuNiA3LjZDNi4yIDggNiA4LjUgNiA5VjE5TTE2IDJIMTJDMTIgMi41IDEyLjIgMyAxMi42IDMuNEMxMyAzLjggMTMuNSA0IDE0IDRWN0g5VjIxSDEzLjJDMTMgMjAuNSAxMyAyMC4yIDEzIDIwQzEzIDE5LjIgMTMuMyAxOC41IDEzLjkgMTcuOUMxNC41IDE3LjMgMTUuMiAxNyAxNiAxN1YyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZ0NhcnJ5T25DaGVjayA9IFwiTTE1LjI4LDE2LjY5TDE4LjE0LDEzLjg4TDE4Ljg0LDE0LjU4TDE1LjI4LDE4LjE0TDEzLjE3LDE2TDEzLjg4LDE1LjI4TDE1LjI4LDE2LjY5TTgsMjFBMiwyIDAgMCwxIDYsMTlWOUEyLDIgMCAwLDEgOCw3VjIxTTksN0gxNFY0QTIsMiAwIDAsMSAxMiwySDE2VjEwQTYsNiAwIDAsMSAyMiwxNkE2LDYgMCAwLDEgMTYsMjJDMTQuNzcsMjIgMTMuNjMsMjEuNjMgMTIuNjgsMjFIOVY3TTE2LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMjBBNCw0IDAgMCwwIDIwLDE2QTQsNCAwIDAsMCAxNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdDYXJyeU9uT2ZmID0gXCJNMi4xIDQuOUw2IDguOVYxOUM2IDE5LjUgNi4yIDIwIDYuNiAyMC40QzcgMjAuOCA3LjUgMjEgOCAyMVYxMC44TDkgMTEuOFYyMUgxMy4yQzEzLjEgMjAuNiAxMyAyMC4yIDEzIDIwQzEzIDE4LjggMTMuNSAxOCAxNC42IDE3LjRMMTUuNCAxOC4yQzE0LjUgMTguNSAxNC4xIDE5LjIgMTQuMSAyMC4xQzE0LjEgMjAuNiAxNC4zIDIxLjEgMTQuNyAyMS41QzE1IDIxLjggMTUuNSAyMiAxNiAyMkMxNi45IDIyIDE3LjYgMjEuNiAxNy45IDIwLjdMMTkuMSAyMS45TDIwLjUgMjAuNUwzLjUgMy41TDIuMSA0LjlNMTIgMkMxMiAyLjUgMTIuMiAzIDEyLjYgMy40UzEzLjUgNCAxNCA0VjdIOS44TDE2IDEzLjJWMkgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdDaGVja2VkID0gXCJNMjIgMTlIMlYyMUgyMlYxOU00IDE1QzQgMTUuNSA0LjIgMTYgNC42IDE2LjRDNSAxNi44IDUuNSAxNyA2IDE3VjZDNS41IDYgNSA2LjIgNC42IDYuNkM0LjIgNyA0IDcuNSA0IDhWMTVNMTMuNSA2SDEwLjVDMTAuNSA1LjYgMTAuNiA1LjIgMTAuOSA0LjlDMTEuMiA0LjYgMTEuNSA0LjUgMTIgNC41QzEyLjQgNC41IDEyLjggNC42IDEzLjEgNC45QzEzLjMgNS4yIDEzLjUgNS42IDEzLjUgNk03IDZWMTdIMTdWNkgxNUMxNSA1LjIgMTQuNyA0LjUgMTQuMSAzLjlTMTIuOCAzIDEyIDNDMTEuMiAzIDEwLjUgMy4zIDkuOSAzLjlDOS4zIDQuNSA5IDUuMiA5IDZIN00xOCAxN0MxOC41IDE3IDE5IDE2LjggMTkuNCAxNi40QzE5LjggMTYgMjAgMTUuNSAyMCAxNVY4QzIwIDcuNSAxOS44IDcgMTkuNCA2LjZDMTkgNi4yIDE4LjUgNiAxOCA2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZ1BlcnNvbmFsID0gXCJNMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNUE0LDQgMCAwLDAgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY5QTQsNCAwIDAsMCAxNiw1TTEwLDRIMTRWNUgxMFY0TTEyLDlMMTQsMTFMMTIsMTNMMTAsMTFMMTIsOU0xOCwxNkg5VjE4SDhWMTZINlYxNUgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdQZXJzb25hbE9mZiA9IFwiTTIwLDE5LjM1TDIuMzgsMS43M0wxLjExLDNMNC43Nyw2LjY2QzQuMjcsNy4zNCA0LDguMTYgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QzE4LjU2LDIyIDE5LjA4LDIxLjc2IDE5LjQ2LDIxLjM1TDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TDIwLDE5LjM1TTksMTZWMThIOFYxNkg2VjE1SDEzLjExTDE0LjExLDE2SDlNMjAsOUE0LDQgMCAwLDAgMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNC44TDIwLDE2LjhWOU0xNCw1SDEwVjRIMTRWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdQZXJzb25hbE9mZk91dGxpbmUgPSBcIk0yMCwxOS4zNUwyLjM4LDEuNzNMMS4xMSwzTDQuNzcsNi42NkM0LjI3LDcuMzQgNCw4LjE2IDQsOVYyMEEyLDIgMCAwLDAgNiwyMkgxOEMxOC41NiwyMiAxOS4wOCwyMS43NiAxOS40NiwyMS4zNUwyMC44NCwyMi43M0wyMi4xMSwyMS40NkwyMCwxOS4zNU02LDlDNiw4LjY5IDYuMDgsOC4zOCA2LjIyLDguMTFMMTMuMTEsMTVINlY5TTE4LDIwSDZWMTZIOFYxOEg5VjE2SDE0LjExTDE4LDE5Ljg5VjIwTTE2LDdBMiwyIDAgMCwxIDE4LDlWMTQuOEwyMCwxNi44VjlBNCw0IDAgMCwwIDE2LDVWNEEyLDIgMCAwLDAgMTQsMkgxMEEyLDIgMCAwLDAgOCw0VjQuOEwxMC4yLDdIMTZNMTAsNEgxNFY1SDEwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnUGVyc29uYWxPdXRsaW5lID0gXCJNMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNUE0LDQgMCAwLDAgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY5QTQsNCAwIDAsMCAxNiw1TTEwLDRIMTRWNUgxMFY0TTEyLDlMMTQsMTFMMTIsMTNMMTAsMTFMMTIsOU0xOCwyMEg2VjE2SDhWMThIOVYxNkgxOFYyME0xOCwxNUg2VjlBMiwyIDAgMCwxIDgsN0gxNkEyLDIgMCAwLDEgMTgsOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZSA9IFwiTTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTlDMTkgMjAuMTMgMTguMTEgMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlWOEM1IDYuODggNS44OSA2IDYuOTcgNkg5VjNDOSAyLjQyIDkuNDYgMiAxMCAySDE0QzE0LjU0IDIgMTUgMi40MiAxNSAzVjZIMTcuMDNNMTMuNSA2VjMuNUgxMC41VjZIMTMuNU04IDlWMThIOS41VjlIOE0xNC41IDlWMThIMTZWOUgxNC41TTExLjI1IDlWMThIMTIuNzVWOUgxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZU9mZiA9IFwiTTIgNC43N0wzLjI4IDMuNUwyMSAyMS4yMkwxOS43MyAyMi41TDE4IDIwLjc2QzE3LjcxIDIwLjkzIDE3LjM4IDIxIDE3LjAzIDIxQzE3LjAzIDIxLjU4IDE2LjU2IDIyIDE2IDIyQzE1LjUgMjIgMTUgMjEuNTggMTUgMjFIOUM5IDIxLjU4IDguNSAyMiA4IDIyQzcuNDQgMjIgNi45NyAyMS41OCA2Ljk3IDIxQzUuODkgMjEgNSAyMC4xMyA1IDE5VjcuNzdMMiA0Ljc3TTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTYuNjhMMTYgMTMuNjhWOUgxNC41VjEyLjE4TDEyLjc1IDEwLjQzVjlIMTEuMzJMOC4zMSA2SDlWM0M5IDIuNDIgOS40NiAyIDEwIDJIMTRDMTQuNTQgMiAxNSAyLjQyIDE1IDNWNkgxNy4wM004IDE4SDkuNVYxMi4yN0w4IDEwLjc3VjE4TTExLjI1IDE4SDEyLjc1VjE1LjVMMTEuMjUgMTRWMThNMTQuNSAxOEgxNS4yM0wxNC41IDE3LjI3VjE4TTEzLjUgNlYzLjVIMTAuNVY2SDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnU3VpdGNhc2VPZmZPdXRsaW5lID0gXCJNMiA0Ljc3TDMuMjggMy41TDIxIDIxLjIyTDE5LjczIDIyLjVMMTggMjAuNzZDMTcuNzEgMjAuOTMgMTcuMzggMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlMNSA3Ljc4TDIgNC43N005LjUgMThIOFYxMC43OEw2Ljk3IDkuNzRWMTlIMTYuMjNMMTUuMjUgMThIMTQuNVYxNy4yNkwxMi43NSAxNS41VjE4SDExLjI1VjE0TDkuNSAxMi4yOFYxOE0xMi43NSA5VjEwLjQzTDExLjMyIDlIMTIuNzVNMTQuNSA5SDE2VjEzLjY3TDE0LjUgMTIuMTdWOU0xNy4wMyA2QzE4LjExIDYgMTkgNi44OCAxOSA4VjE2LjY4TDE3LjAzIDE0LjdWOEgxMC4zM0w4LjMxIDZIOVYzQzkgMi40MiA5LjQ2IDIgMTAgMkgxNEMxNC41NCAyIDE1IDIuNDIgMTUgM1Y2SDE3LjAzTTEwLjUgMy41VjZIMTMuNVYzLjVIMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZU91dGxpbmUgPSBcIk05LjUgMThWOUg4VjE4TTEyLjc1IDE4VjlIMTEuMjVWMThNMTYgMThWOUgxNC41VjE4TTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTlDMTkgMjAuMTMgMTguMTEgMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlWOEM1IDYuODggNS44OSA2IDYuOTcgNkg5VjNDOSAyLjQyIDkuNDYgMiAxMCAySDE0QzE0LjU0IDIgMTUgMi40MiAxNSAzVjZNMTAuNSAzLjVWNkgxMy41VjMuNU0xNy4wMyAxOVY4SDYuOTdWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlCYWd1ZXR0ZSA9IFwiTTUgMjJDMy42OCAyMiAzLjE1IDE5LjY0IDMuMDQgMTguN0E1LjU2IDUuNTYgMCAwIDEgMy4zNiAxNkEyLjUgMi41IDAgMCAxIDUuMjMgMTQuMzhDNi40IDE0LjE4IDcuMjMgMTQuODggOC4yOSAxNS4xMkExLjIxIDEuMjEgMCAwIDAgOS44NSAxMy43NUM5LjQxIDEyLjAzIDYuMjggMTIgNSAxMkM1IDEwLjE0IDcuMDQgOS45IDguNSAxMC4wNEExMC44IDEwLjggMCAwIDEgMTEuMDQgMTAuNkMxMS41NCAxMC43NyAxMi4xMiAxMS4yIDEyLjY3IDExLjE2QzEzLjUgMTEuMDkgMTMuNjcgMTAuMjMgMTMuMzEgOS42QzEyLjQ0IDguMTIgOS45NyA4IDguNSA4QzguNSA2IDEwLjIzIDUuNjIgMTEuODkgNS45MkExMS41OCAxMS41OCAwIDAgMSAxNC4zOCA2LjcxQzE0Ljg5IDYuOTMgMTUuNSA3LjM1IDE2LjA2IDcuMTZDMTcuNSA2LjcyIDE2IDUuMTggMTUuMzYgNC44MUE2LjYgNi42IDAgMCAwIDEzLjk0IDQuMjNDMTMuNCA0LjA3IDEyLjc0IDQuMTMgMTMuMjMgMy41QTUuMTMgNS4xMyAwIDAgMSAxNS45NiAyLjI2QzE3Ljg1IDEuODIgMjAuNDYgMS43NCAyMC45MiA0LjEyQTUuMyA1LjMgMCAwIDEgMjAuMDcgNy43QTM4Ljk2IDM4Ljk2IDAgMCAxIDEzLjIyIDE2LjMzQTM2LjYgMzYuNiAwIDAgMSA4LjYyIDIwLjMyQzcuNjIgMjEuMDQgNi4zIDIyIDUgMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFsbG9vbiA9IFwiTTEzLjE2LDEyLjc0TDE0LDE0SDEyLjVDMTIuMzUsMTYuNzEgMTIsMTkuNDEgMTEuNSwyMi4wOEwxMC41LDIxLjkyQzExLDE5LjMgMTEuMzQsMTYuNjYgMTEuNSwxNEgxMEwxMC44NCwxMi43NEM4LjY0LDExLjc5IDcsOC4zNiA3LDZBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZDMTcsOC4zNiAxNS4zNiwxMS43OSAxMy4xNiwxMi43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWxsb3QgPSBcIk0xMyw5LjVIMThWNy41SDEzVjkuNU0xMywxNi41SDE4VjE0LjVIMTNWMTYuNU0xOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFNNiwxMUgxMVY2SDZWMTFNNyw3SDEwVjEwSDdWN002LDE4SDExVjEzSDZWMThNNywxNEgxMFYxN0g3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbGxvdE91dGxpbmUgPSBcIk0xMyw3LjVIMThWOS41SDEzVjcuNU0xMywxNC41SDE4VjE2LjVIMTNWMTQuNU0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xOSwxOVY1SDVWMTlIMTlNMTEsNlYxMUg2VjZIMTFNMTAsMTBWN0g3VjEwSDEwTTExLDEzVjE4SDZWMTNIMTFNMTAsMTdWMTRIN1YxN0gxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWxsb3RSZWNvdW50ID0gXCJNMTksMTJWMTMuNUE0LDQgMCAwLDEgMjMsMTcuNUMyMywxOC4zMiAyMi43NSwxOS4wOCAyMi4zMywxOS43MUwyMS4yNCwxOC42MkMyMS40MSwxOC4yOCAyMS41LDE3LjkgMjEuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMTVWMTYuNUwxNi43NSwxNC4yNUwxOSwxMk0xOSwyM1YyMS41QTQsNCAwIDAsMSAxNSwxNy41QzE1LDE2LjY4IDE1LjI1LDE1LjkyIDE1LjY3LDE1LjI5TDE2Ljc2LDE2LjM4QzE2LjU5LDE2LjcyIDE2LjUsMTcuMSAxNi41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwyMFYxOC41TDIxLjI1LDIwLjc1TDE5LDIzTTEwLDE3SDdWMTRIMTBWMTdNMTAsN1YxMEg3VjdIMTBNNSwyMUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTEuMTdDMjAuNSwxMS4wNiAyMCwxMSAxOS41LDExQTYuNSw2LjUgMCAwLDAgMTMsMTcuNUMxMywxOC43OSAxMy4zOCwyMCAxNCwyMUg1TTEzLDkuNUgxOFY3LjVIMTNWOS41TTExLDEzSDZWMThIMTFWMTNNMTEsNkg2VjExSDExVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFsbG90UmVjb3VudE91dGxpbmUgPSBcIk02LDE4VjEzSDExVjE4SDZNNywxNFYxN0gxMFYxNEg3TTEzLDcuNUgxOFY5LjVIMTNWNy41TTUsMjFBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjE3QzIwLjUsMTEuMDYgMjAsMTEgMTkuNSwxMUgxOVY1SDVWMTlIMTMuMTdDMTMuMzQsMTkuNzIgMTMuNjMsMjAuMzkgMTQsMjFINU0xMSw2VjExSDZWNkgxMU0xMCwxMFY3SDdWMTBIMTBNMTksMTJWMTMuNUE0LDQgMCAwLDEgMjMsMTcuNUMyMywxOC4zMiAyMi43NSwxOS4wOCAyMi4zMywxOS43MUwyMS4yNCwxOC42MkMyMS40MSwxOC4yOCAyMS41LDE3LjkgMjEuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMTVWMTYuNUwxNi43NSwxNC4yNUwxOSwxMk0xOSwyM1YyMS41QTQsNCAwIDAsMSAxNSwxNy41QzE1LDE2LjY4IDE1LjI1LDE1LjkyIDE1LjY3LDE1LjI5TDE2Ljc2LDE2LjM4QzE2LjU5LDE2LjcyIDE2LjUsMTcuMSAxNi41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwyMFYxOC41TDIxLjI1LDIwLjc1TDE5LDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmRhZ2UgPSBcIk0xNy43MywxMkwyMS43MSw4LjA0QzIyLjEsNy42NSAyMi4xLDcgMjEuNzEsNi42M0wxNy4zNywyLjI5QzE3LDEuOSAxNi4zNSwxLjkgMTUuOTYsMi4yOUwxMiw2LjI3TDgsMi4yOUM3LjgsMi4xIDcuNTUsMiA3LjI5LDJDNy4wNCwyIDYuNzgsMi4xIDYuNTksMi4yOUwyLjI1LDYuNjNDMS44Niw3IDEuODYsNy42NSAyLjI1LDguMDRMNi4yMywxMkwyLjI1LDE2QzEuODYsMTYuMzkgMS44NiwxNyAyLjI1LDE3LjQxTDYuNTksMjEuNzVDNywyMi4xNCA3LjYxLDIyLjE0IDgsMjEuNzVMMTIsMTcuNzdMMTUuOTYsMjEuNzVDMTYuMTYsMjEuOTUgMTYuNDEsMjIuMDQgMTYuNjcsMjIuMDRDMTYuOTMsMjIuMDQgMTcuMTgsMjEuOTQgMTcuMzgsMjEuNzVMMjEuNzIsMTcuNDFDMjIuMTEsMTcgMjIuMTEsMTYuMzkgMjEuNzIsMTZMMTcuNzMsMTJNMTIsOUExLDEgMCAwLDEgMTMsMTBBMSwxIDAgMCwxIDEyLDExQTEsMSAwIDAsMSAxMSwxMEExLDEgMCAwLDEgMTIsOU03LjI5LDEwLjk2TDMuNjYsNy4zNEw3LjI5LDMuNzFMMTAuOTEsNy4zM0w3LjI5LDEwLjk2TTEwLDEzQTEsMSAwIDAsMSA5LDEyQTEsMSAwIDAsMSAxMCwxMUExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEwLDEzTTEyLDE1QTEsMSAwIDAsMSAxMSwxNEExLDEgMCAwLDEgMTIsMTNBMSwxIDAgMCwxIDEzLDE0QTEsMSAwIDAsMSAxMiwxNU0xNCwxMUExLDEgMCAwLDEgMTUsMTJBMSwxIDAgMCwxIDE0LDEzQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTQsMTFNMTYuNjYsMjAuMzRMMTMuMDMsMTYuNzJMMTYuNjYsMTMuMDlMMjAuMjgsMTYuNzFMMTYuNjYsMjAuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFuZGNhbXAgPSBcIk0yMiw2TDE1LjUsMThIMkw4LjUsNkgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rID0gXCJNMTEuNSwxTDIsNlY4SDIxVjZNMTYsMTBWMTdIMTlWMTBNMiwyMkgyMVYxOUgyTTEwLDEwVjE3SDEzVjEwTTQsMTBWMTdIN1YxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtDaGVjayA9IFwiTTEwLjUgMTdWMTBIMTMuNVYxNi42MUMxMy40NCAxNi43MyAxMy40IDE2Ljg3IDEzLjM1IDE3SDEwLjVNMTkgMTNDMTkuMTcgMTMgMTkuMzMgMTMgMTkuNSAxMy4wM1YxMEgxNi41VjEzLjU1QzE3LjI2IDEzLjIgMTguMTEgMTMgMTkgMTNNNy41IDE3VjEwSDQuNVYxN0g3LjVNMjEuNSA2TDEyIDFMMi41IDZWOEgyMS41VjZNMi41IDE5VjIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMDkgMTMgMTlIMi41TTIxLjM0IDE2TDE3Ljc1IDE5LjU5TDE2LjE2IDE4TDE1IDE5LjE2TDE3Ljc1IDIyLjE2TDIyLjUgMTcuNDFMMjEuMzQgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua01pbnVzID0gXCJNMTQsMTdIMjJWMTlIMTRWMTdNMTEuNSwxTDIxLDZWOEgyVjZMMTEuNSwxTTE2LDEwSDE5VjEyLjA4TDE4LDEyQzE3LjMsMTIgMTYuNjMsMTIuMTIgMTYsMTIuMzRWMTBNMiwyMlYxOUgxMi4wOEMxMi4yNywyMC4xNCAxMi43OSwyMS4xNyAxMy41MywyMkgyTTEwLDEwSDEzVjE0LjY4QzEyLjU0LDE1LjM3IDEyLjIyLDE2LjE1IDEyLjA4LDE3SDEwVjEwTTQsMTBIN1YxN0g0VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPZmYgPSBcIk0xMS4yIDhMNi44OSAzLjY5TDEyIDFMMjEuNSA2VjhIMTEuMk0xOS41IDE2LjNWMTBIMTYuNVYxMy4zTDE5LjUgMTYuM00yMS41IDIwLjg1VjIwLjg0TDE5LjY2IDE5SDE5LjY1TDE3LjY1IDE3SDE3LjY2TDE2LjUgMTUuODRWMTUuODVMMTMuNSAxMi44NVYxMi44NEwxMC42NiAxMEgxMC42Nkw4LjY2IDhIOC42NkwyLjM5IDEuNzNMMS4xMSAzTDMuNTYgNS40NUwyLjUgNlY4SDYuMTFMMTAuNSAxMi4zOVYxN0gxMy41VjE1LjM5TDE3LjExIDE5SDIuNVYyMkgyMC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMS41IDIwLjg1TTQuNSAxMFYxN0g3LjVWMTBINC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPZmZPdXRsaW5lID0gXCJNMTcgMTMuOFYxMEgxOVYxNS44TDE3IDEzLjhNMTIgMy4yNkwxNy4yMSA2SDkuMkwxMS4yIDhIMjEuNVY2TDEyIDFMNi44OSAzLjY5TDguMzcgNS4xN0wxMiAzLjI2TTUgMTBWMTdIN1YxMEg1TTIxLjUgMjAuODVWMjAuODRMMTkuNjYgMTlIMTkuNjVMMTcuNjUgMTdIMTcuNjZMMTcgMTYuMzRWMTYuMzVMMTMgMTIuMzVWMTIuMzRMMTEgMTAuMzRWMTAuMzVMOC42NiA4SDguNjZMMi4zOSAxLjczTDEuMTEgM0wzLjU2IDUuNDVMMi41IDZWOEg2LjExTDExIDEyLjg5VjE3SDEzVjE0Ljg5TDE3LjExIDE5SDIuNVYyMUgxOS4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMS41IDIwLjg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPdXRsaW5lID0gXCJNNi41LDEwSDQuNVYxN0g2LjVWMTBNMTIuNSwxMEgxMC41VjE3SDEyLjVWMTBNMjEsMTlIMlYyMUgyMVYxOU0xOC41LDEwSDE2LjVWMTdIMTguNVYxME0xMS41LDMuMjZMMTYuNzEsNkg2LjI5TDExLjUsMy4yNk0xMS41LDFMMiw2VjhIMjFWNkwxMS41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1BsdXMgPSBcIk0xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMS41LDFMMjEsNlY4SDJWNkwxMS41LDFNMTYsMTBIMTlWMTIuMDhMMTgsMTJDMTcuMywxMiAxNi42MywxMi4xMiAxNiwxMi4zNFYxME0yLDIyVjE5SDEyLjA4QzEyLjI3LDIwLjE0IDEyLjc5LDIxLjE3IDEzLjUzLDIySDJNMTAsMTBIMTNWMTQuNjhDMTIuNTQsMTUuMzcgMTIuMjIsMTYuMTUgMTIuMDgsMTdIMTBWMTBNNCwxMEg3VjE3SDRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1JlbW92ZSA9IFwiTTE0LjQ2LDE1Ljg4TDE1Ljg4LDE0LjQ2TDE4LDE2LjU5TDIwLjEyLDE0LjQ2TDIxLjU0LDE1Ljg4TDE5LjQxLDE4TDIxLjU0LDIwLjEyTDIwLjEyLDIxLjU0TDE4LDE5LjQxTDE1Ljg4LDIxLjU0TDE0LjQ2LDIwLjEyTDE2LjU5LDE4TDE0LjQ2LDE1Ljg4TTExLjUsMUwyMSw2VjhIMlY2TDExLjUsMU0xNiwxMEgxOVYxMi4wOEwxOCwxMkMxNy4zLDEyIDE2LjYzLDEyLjEyIDE2LDEyLjM0VjEwTTIsMjJWMTlIMTIuMDhDMTIuMjcsMjAuMTQgMTIuNzksMjEuMTcgMTMuNTMsMjJIMk0xMCwxMEgxM1YxNC42OEMxMi41NCwxNS4zNyAxMi4yMiwxNi4xNSAxMi4wOCwxN0gxMFYxME00LDEwSDdWMTdINFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rVHJhbnNmZXIgPSBcIk0xNSwxNFYxMUgxOFY5TDIyLDEyLjVMMTgsMTZWMTRIMTVNMTQsNy43VjlIMlY3LjdMOCw0TDE0LDcuN003LDEwSDlWMTVIN1YxME0zLDEwSDVWMTVIM1YxME0xMywxMFYxMi41TDExLDE0LjNWMTBIMTNNOS4xLDE2TDguNSwxNi41TDEwLjIsMThIMlYxNkg5LjFNMTcsMTVWMThIMTRWMjBMMTAsMTYuNUwxNCwxM1YxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rVHJhbnNmZXJJbiA9IFwiTTIsMTVWMTJINVYxMEw5LDEzLjVMNSwxN1YxNUgyTTIyLDguN1YxMEgxMFY4LjdMMTYsNUwyMiw4LjdNMTAsMTdIMjJWMTlIMTBWMTdNMTUsMTFIMTdWMTZIMTVWMTFNMTEsMTFIMTNWMTZIMTFWMTFNMTksMTFIMjFWMTZIMTlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1RyYW5zZmVyT3V0ID0gXCJNMTUsMTVWMTJIMThWMTBMMjIsMTMuNUwxOCwxN1YxNUgxNU0xNCw4LjdWMTBIMlY4LjdMOCw1TDE0LDguN00yLDE3SDE0VjE5SDJWMTdNNywxMUg5VjE2SDdWMTFNMywxMUg1VjE2SDNWMTFNMTEsMTFIMTNWMTZIMTFWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZSA9IFwiTTIsNkg0VjE4SDJWNk01LDZINlYxOEg1VjZNNyw2SDEwVjE4SDdWNk0xMSw2SDEyVjE4SDExVjZNMTQsNkgxNlYxOEgxNFY2TTE3LDZIMjBWMThIMTdWNk0yMSw2SDIyVjE4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE2IDE3Ljg5VjE4SDE0VjE1Ljg5TDEyIDEzLjg5VjE4SDExVjEyLjg5TDEwIDExLjg5VjE4SDdWOC44OUw2IDcuODlWMThINVY2Ljg5TDEuMTEgM0wyLjM5IDEuNzNMNyA2LjM0TDEwIDkuMzRMMTEgMTAuMzRMMTIgMTEuMzRMMTQgMTMuMzVWMTMuMzRMMTYgMTUuMzRWMTUuMzVMMTcgMTYuMzVWMTYuMzRMMTguNjYgMThIMTguNjVMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTYgNkgxNFYxMC44TDE2IDEyLjhWNk0xMiA2SDExVjcuOEwxMiA4LjhWNk0yMCA2SDE3VjEzLjhMMjAgMTYuOFY2TTIyIDE4VjZIMjFWMTcuOEwyMS4yIDE4SDIyTTEwIDZIOS4yTDEwIDYuOFY2TTIgMThINFY2SDJWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZVNjYW4gPSBcIk00LDZINlYxOEg0VjZNNyw2SDhWMThIN1Y2TTksNkgxMlYxOEg5VjZNMTMsNkgxNFYxOEgxM1Y2TTE2LDZIMThWMThIMTZWNk0xOSw2SDIwVjE4SDE5VjZNMiw0VjhIMFY0QTIsMiAwIDAsMSAyLDJINlY0SDJNMjIsMkEyLDIgMCAwLDEgMjQsNFY4SDIyVjRIMThWMkgyMk0yLDE2VjIwSDZWMjJIMkEyLDIgMCAwLDEgMCwyMFYxNkgyTTIyLDIwVjE2SDI0VjIwQTIsMiAwIDAsMSAyMiwyMkgxOFYyMEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXJsZXkgPSBcIk03LjMzLDE4LjMzQzYuNSwxNy4xNyA2LjUsMTUuODMgNi41LDE0LjVDOC4xNywxNS41IDkuODMsMTYuNSAxMC42NywxNy42N0wxMSwxOC4yM1YxNS45NUM5LjUsMTUuMDUgOC4wOCwxNC4xMyA3LjMzLDEzLjA4QzYuNSwxMS45MiA2LjUsMTAuNTggNi41LDkuMjVDOC4xNywxMC4yNSA5LjgzLDExLjI1IDEwLjY3LDEyLjQyTDExLDEzVjEwLjdDOS41LDkuOCA4LjA4LDguODggNy4zMyw3LjgzQzYuNSw2LjY3IDYuNSw1LjMzIDYuNSw0QzguMTcsNSA5LjgzLDYgMTAuNjcsNy4xN0MxMC43Nyw3LjMxIDEwLjg2LDcuNDYgMTAuOTQsNy42MkMxMC43Nyw3IDEwLjY2LDYuNDIgMTAuNjUsNS44MkMxMC42NCw0LjMxIDExLjMsMi43NiAxMS45NiwxLjIxQzEyLjY1LDIuNjkgMTMuMzQsNC4xOCAxMy4zNSw1LjY5QzEzLjM2LDYuMzIgMTMuMjUsNi45NiAxMy4wNyw3LjU5QzEzLjE1LDcuNDUgMTMuMjMsNy4zMSAxMy4zMyw3LjE3QzE0LjE3LDYgMTUuODMsNSAxNy41LDRDMTcuNSw1LjMzIDE3LjUsNi42NyAxNi42Nyw3LjgzQzE1LjkyLDguODggMTQuNSw5LjggMTMsMTAuN1YxM0wxMy4zMywxMi40MkMxNC4xNywxMS4yNSAxNS44MywxMC4yNSAxNy41LDkuMjVDMTcuNSwxMC41OCAxNy41LDExLjkyIDE2LjY3LDEzLjA4QzE1LjkyLDE0LjEzIDE0LjUsMTUuMDUgMTMsMTUuOTVWMTguMjNMMTMuMzMsMTcuNjdDMTQuMTcsMTYuNSAxNS44MywxNS41IDE3LjUsMTQuNUMxNy41LDE1LjgzIDE3LjUsMTcuMTcgMTYuNjcsMTguMzNDMTUuOTIsMTkuMzggMTQuNSwyMC4zIDEzLDIxLjJWMjNIMTFWMjEuMkM5LjUsMjAuMyA4LjA4LDE5LjM4IDcuMzMsMTguMzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFybGV5T2ZmID0gXCJNMTEuOTYsMS4yMUMxMS4zLDIuNzYgMTAuNjQsNC4zMSAxMC42NSw1LjgyQzEwLjY2LDYuNDIgMTAuNzcsNyAxMC45NCw3LjYyQzEwLjg2LDcuNDYgMTAuNzcsNy4zMSAxMC42Nyw3LjE3QzkuODMsNiA4LjE3LDUgNi41LDRDNi41LDQuOCA2LjUsNS41OSA2LjY4LDYuMzZMMTMsMTIuNjhWMTAuN0MxNC41LDkuOCAxNS45Miw4Ljg4IDE2LjY3LDcuODNDMTcuNSw2LjY3IDE3LjUsNS4zMyAxNy41LDRDMTUuODMsNSAxNC4xNyw2IDEzLjMzLDcuMTdDMTMuMjMsNy4zMSAxMy4xNSw3LjQ1IDEzLjA3LDcuNTlDMTMuMjUsNi45NiAxMy4zNiw2LjMyIDEzLjM1LDUuNjlDMTMuMzQsNC4xOCAxMi42NSwyLjY5IDExLjk2LDEuMjFNMy4yOCw1LjVMMiw2Ljc3TDYuNjQsMTEuNDFDNi43NSwxMiA2Ljk1LDEyLjU1IDcuMzMsMTMuMDhDOC4wOCwxNC4xMyA5LjUsMTUuMDUgMTEsMTUuOTVWMTguMjNMMTAuNjcsMTcuNjdDOS44MywxNi41IDguMTcsMTUuNSA2LjUsMTQuNUM2LjUsMTUuODMgNi41LDE3LjE3IDcuMzMsMTguMzNDOC4wOCwxOS4zOCA5LjUsMjAuMyAxMSwyMS4yVjIzSDEzVjIxLjJDMTMuNzQsMjAuNzYgMTQuNDUsMjAuMzEgMTUuMDcsMTkuODRMMTguNzMsMjMuNUwyMCwyMi4yMkMxNCwxNi4yMyA5LjEsMTEuMzIgMy4yOCw1LjVNMTcuNSw5LjI1QzE1LjgzLDEwLjI1IDE0LjE3LDExLjI1IDEzLjMzLDEyLjQyTDEzLjEyLDEyLjc5TDE1LDE0LjY2QzE1LjY3LDE0LjE2IDE2LjI3LDEzLjY0IDE2LjY3LDEzLjA4QzE3LjUsMTEuOTIgMTcuNSwxMC41OCAxNy41LDkuMjVNMTcuNSwxNC41QzE2LjkzLDE0Ljg0IDE2LjM4LDE1LjE4IDE1Ljg1LDE1LjUzTDE3LjI5LDE2Ljk3QzE3LjUsMTYuMTcgMTcuNSwxNS4zMyAxNy41LDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFybiA9IFwiTTEyLDNMMyw4LjJWMjFIOUwxMS45LDE4TDE1LDIxSDIxVjguMkwxMiwzTTcuOSwyMFYxNEwxMC45LDE3TDcuOSwyME04LjksMTNIMTQuOUwxMS45LDE2TDguOSwxM00xNS45LDIwTDEyLjksMTdMMTUuOSwxNFYyME0xNSwxMUg4LjhWOUgxNVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXJyZWwgPSBcIk0xOCwxOUgxOVYyMUg1VjE5SDZWMTNINVYxMUg2VjVINVYzSDE5VjVIMThWMTFIMTlWMTNIMThWMTlNOSwxM0EzLDMgMCAwLDAgMTIsMTZBMywzIDAgMCwwIDE1LDEzQzE1LDExIDEyLDcuNjMgMTIsNy42M0MxMiw3LjYzIDksMTEgOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNlYmFsbCA9IFwiTTEyLDJDOS41LDIgNy4yNSwyLjkgNS41LDQuNEM2LDQuODEgNi40MSw1LjI3IDYuOCw1Ljc2TDcuODksNS4xM0w4Ljg5LDYuODdMNy44OSw3LjQ0QzguNDUsOC41MyA4LjgyLDkuNzMgOC45NSwxMUgxMFYxMkwxMCwxM0g4Ljk1QzguODIsMTQuMjcgOC40NSwxNS40NyA3Ljg5LDE2LjU2TDguODksMTcuMTNMNy44OSwxOC44N0w2LjgsMTguMjRDNi40MSwxOC43MyA2LDE5LjE5IDUuNSwxOS42QzcuMjUsMjEuMSA5LjUsMjIgMTIsMjJDMTQuNSwyMiAxNi43NSwyMS4xIDE4LjUsMTkuNkMxOCwxOS4xOSAxNy41OSwxOC43MyAxNy4xOSwxOC4yNEwxNi4xMSwxOC44N0wxNS4xMSwxNy4xM0wxNi4xMSwxNi41NUMxNS41NSwxNS40NyAxNS4xOCwxNC4yNyAxNS4wNSwxM0gxNFYxMUgxNS4wNUMxNS4xOCw5LjczIDE1LjU1LDguNTMgMTYuMTEsNy40NUwxNS4xMSw2Ljg3TDE2LjExLDUuMTNMMTcuMTksNS43NkMxNy41OSw1LjI3IDE4LDQuODEgMTguNSw0LjRDMTYuNzUsMi45IDE0LjUsMiAxMiwyTTQuMTIsNS44NUMyLjc5LDcuNTUgMiw5LjY4IDIsMTJDMiwxNC4zMiAyLjc5LDE2LjQ1IDQuMTIsMTguMTVDNC40NiwxNy44NyA0Ljc2LDE3LjU1IDUuMDUsMTcuMjJMNC40MywxNi44N0w1LjQzLDE1LjEzTDYuMTYsMTUuNTZDNi41NSwxNC43NyA2LjgyLDEzLjkxIDYuOTMsMTNINlYxMkw2LDExSDYuOTNDNi44MiwxMC4wOSA2LjU1LDkuMjMgNi4xNiw4LjQ0TDUuNDMsOC44N0w0LjQzLDcuMTNMNS4wNSw2Ljc4QzQuNzYsNi40NSA0LjQ2LDYuMTMgNC4xMiw1Ljg1TTE5Ljg4LDUuODVDMTkuNTQsNi4xMyAxOS4yNCw2LjQ1IDE4Ljk1LDYuNzhMMTkuNTcsNy4xM0wxOC41Nyw4Ljg3TDE3Ljg0LDguNDRDMTcuNDUsOS4yMyAxNy4xOCwxMC4wOSAxNy4wNywxMUgxOFYxM0gxNy4wN0MxNy4xOCwxMy45MSAxNy40NSwxNC43NyAxNy44NCwxNS41NkwxOC41NywxNS4xM0wxOS41NywxNi44N0wxOC45NSwxNy4yMkMxOS4yNCwxNy41NSAxOS41NCwxNy44NyAxOS44OCwxOC4xNUMyMS4yMSwxNi40NSAyMiwxNC4zMiAyMiwxMkMyMiw5LjY4IDIxLjIxLDcuNTUgMTkuODgsNS44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNlYmFsbEJhdCA9IFwiTTIwLDJDMTkuNzIsMiAxOS41LDIuMTEgMTkuMjksMi4yOUw5Ljc5LDExLjc5QzkuNzUsMTEuODMgOS43MiwxMS44NyA3LjIzLDE1LjM1TDQsMTguNTlMMy43MSwxOC4yOUMzLjUsMTguMSAzLjI2LDE4IDMsMThDMi40NCwxOCAyLDE4LjQ0IDIsMTlDMiwxOS4yNiAyLjEsMTkuNSAyLjI5LDE5LjcxTDQuMjksMjEuNzFDNC42OCwyMi4xMSA1LjMxLDIyLjEyIDUuNzEsMjEuNzRDNi4xMSwyMS4zNSA2LjEyLDIwLjcyIDUuNzEsMjAuMjlMNS40MSwyMEw4LjY0LDE2Ljc3TDEyLjIxLDE0LjIxTDIxLjcxLDQuNzFDMjIuMSw0LjMyIDIyLjEsMy42OCAyMS43MSwzLjI5TDIwLjcxLDIuMjlDMjAuNSwyLjEgMjAuMjYsMiAyMCwyTTE4LjUsMTNBMi41LDIuNSAwIDAsMCAxNiwxNS41QTIuNSwyLjUgMCAwLDAgMTguNSwxOEEyLjUsMi41IDAgMCwwIDIxLDE1LjVBMi41LDIuNSAwIDAsMCAxOC41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2ViYWxsRGlhbW9uZCA9IFwiTTUuNzkgMTIuNzlMMiA5QzIgOSA2IDMgMTIgM1MyMiA5IDIyIDlMMTguMjEgMTIuNzlMMTIgNi41OUw1Ljc5IDEyLjc5TTEzLjUgMThIMTAuNVYyMEwxMiAyMUwxMy41IDIwVjE4TTE2Ljc5IDE0LjIxTDE0LjIgMTYuOEMxMy42IDE2LjMxIDEyLjg0IDE2IDEyIDE2UzEwLjQgMTYuMzEgOS44IDE2LjhMNy4yMSAxNC4yMUwxMiA5LjQxTDE2Ljc5IDE0LjIxTTEzIDE0QzEzIDEzLjQ1IDEyLjU1IDEzIDEyIDEzUzExIDEzLjQ1IDExIDE0IDExLjQ1IDE1IDEyIDE1IDEzIDE0LjU1IDEzIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2ViYWxsRGlhbW9uZE91dGxpbmUgPSBcIk0xMiAyQzUgMiAxIDkgMSA5TDkuMyAxNy4zQzkuNzQgMTYuNzcgMTAuMzIgMTYuMzcgMTEgMTYuMTdMNy44MyAxM0wxMiA4LjgzTDE2LjE3IDEzTDEzIDE2LjE3QzEzLjY4IDE2LjM3IDE0LjI3IDE2Ljc3IDE0LjcgMTcuM0wyMyA5QzIzIDkgMTkgMiAxMiAyTTE3LjU5IDExLjU5TDEyIDZMNi40MSAxMS41OUwzLjU5IDguNzZDNC45NSA3IDcuODkgNCAxMiA0QzE2LjA4IDQgMTkuMDMgNyAyMC40IDguNzdMMTcuNTkgMTEuNTlNMTMgMTNDMTMgMTMuNTUgMTIuNTUgMTQgMTIgMTRTMTEgMTMuNTUgMTEgMTMgMTEuNDUgMTIgMTIgMTIgMTMgMTIuNDUgMTMgMTNNMTMuNSAyMEwxMiAyMUwxMC41IDIwVjE4SDEzLjVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFzaCA9IFwiTTUgOUg3LjMxTDcuNjMgNkg5LjYzTDkuMzEgOUgxMS4zMUwxMS42MyA2SDEzLjYzTDEzLjMxIDlIMTVWMTFIMTMuMUwxMi45IDEzSDE1VjE1SDEyLjY5TDEyLjM3IDE4SDEwLjM3TDEwLjY5IDE1SDguNjlMOC4zNyAxOEg2LjM3TDYuNjkgMTVINVYxM0g2LjlMNy4xIDExSDVWOU05LjEgMTFMOC45IDEzSDEwLjlMMTEuMSAxMU0xOSA2SDE3VjE0SDE5TTE5IDE2SDE3VjE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldCA9IFwiTTUuNSwyMUM0LjcyLDIxIDQuMDQsMjAuNTUgMy43MSwxOS45VjE5LjlMMS4xLDEwLjQ0TDEsMTBBMSwxIDAgMCwxIDIsOUg2LjU4TDExLjE4LDIuNDNDMTEuMzYsMi4xNyAxMS42NiwyIDEyLDJDMTIuMzQsMiAxMi42NSwyLjE3IDEyLjgzLDIuNDRMMTcuNDIsOUgyMkExLDEgMCAwLDEgMjMsMTBMMjIuOTYsMTAuMjlMMjAuMjksMTkuOUMxOS45NiwyMC41NSAxOS4yOCwyMSAxOC41LDIxSDUuNU0xMiw0Ljc0TDksOUgxNUwxMiw0Ljc0TTEyLDEzQTIsMiAwIDAsMCAxMCwxNUEyLDIgMCAwLDAgMTIsMTdBMiwyIDAgMCwwIDE0LDE1QTIsMiAwIDAsMCAxMiwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRGaWxsID0gXCJNMywySDZWNUgzVjJNNiw3SDlWMTBINlY3TTgsMkgxMVY1SDhWMk0xNywxMUwxMiw2SDE1VjJIMTlWNkgyMkwxNywxMU03LjUsMjJDNi43MiwyMiA2LjA0LDIxLjU1IDUuNzEsMjAuOVYyMC45TDMuMSwxMy40NEwzLDEzQTEsMSAwIDAsMSA0LDEySDIwQTEsMSAwIDAsMSAyMSwxM0wyMC45NiwxMy4yOUwxOC4yOSwyMC45QzE3Ljk2LDIxLjU1IDE3LjI4LDIyIDE2LjUsMjJINy41TTcuNjEsMjBIMTYuMzlMMTguNTcsMTRINS40Mkw3LjYxLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldE1pbnVzID0gXCJNMjMgMThWMjBIMTVWMThIMjNNMjMgMTBMMjIuOTYgMTAuMjlMMjIgMTMuOEMyMS4xMSAxMy4yOSAyMC4wOSAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOUMxMyAxOS43IDEzLjEzIDIwLjM3IDEzLjM1IDIxSDUuNUM0LjcyIDIxIDQuMDQgMjAuNTUgMy43MSAxOS45TDEuMSAxMC40NEwxIDEwQzEgOS40NSAxLjQ1IDkgMiA5SDYuNThMMTEuMTggMi40M0MxMS4zNiAyLjE3IDExLjY2IDIgMTIgMlMxMi42NSAyLjE3IDEyLjgzIDIuNDRMMTcuNDIgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBNMTQgMTVDMTQgMTMuOSAxMy4xMSAxMyAxMiAxM1MxMCAxMy45IDEwIDE1IDEwLjkgMTcgMTIgMTcgMTQgMTYuMTEgMTQgMTVNMTUgOUwxMiA0Ljc0TDkgOUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRNaW51c091dGxpbmUgPSBcIk0yMyAxOFYyMEgxNVYxOEgyM00xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRPZmYgPSBcIk0yMyAxMEwyMi45NiAxMC4yOUwyMC45IDE3LjdMMTIuMiA5SDE1TDEyIDQuNzRMMTAuMzIgNy4xMkw4Ljg5IDUuNjlMMTEuMTggMi40M0MxMS4zNiAyLjE3IDExLjY2IDIgMTIgMlMxMi42NSAyLjE3IDEyLjgzIDIuNDRMMTcuNDIgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMDMgMjAuOTJDMTguODYgMjAuOTcgMTguNjggMjEgMTguNSAyMUg1LjVDNC43MiAyMSA0LjA0IDIwLjU1IDMuNzEgMTkuOUwxLjEgMTAuNDRMMSAxMEMxIDkuNDUgMS40NSA5IDIgOUg2LjU4TDYuOCA4LjY5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNMTMuODUgMTUuNzRMMTEuMjYgMTMuMTVDMTAuNSAxMy40NCAxMCAxNC4xNiAxMCAxNUMxMCAxNi4xMSAxMC45IDE3IDEyIDE3QzEyLjg0IDE3IDEzLjU2IDE2LjUgMTMuODUgMTUuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0T2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMNi45MiA4LjgxTDYuNzkgOUgyQzEuNDUgOSAxIDkuNDUgMSAxMEMxIDEwLjA5IDEgMTAuMTggMS4wNCAxMC4yN0wzLjU4IDE5LjU0QzMuODEgMjAuMzggNC41OCAyMSA1LjUgMjFIMTguNUMxOC42OCAyMSAxOC44NiAyMC45NiAxOS4wMyAyMC45MkwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNNS41IDE5TDMuMzEgMTFIOS4xMUwxMS4yNiAxMy4xNUMxMC41IDEzLjQ0IDEwIDE0LjE2IDEwIDE1QzEwIDE2LjEgMTAuOSAxNyAxMiAxN0MxMi44NCAxNyAxMy41NiAxNi41IDEzLjg1IDE1Ljc0TDE3LjExIDE5SDUuNU0yMyAxMEwyMi45NyAxMC4yN0wyMC45MyAxNy43M0wxOS4zIDE2LjFMMjAuNyAxMUgxNC4yTDEyLjIgOUgxNC44TDEyIDQuOEwxMC40IDcuMkw4Ljk2IDUuNzZMMTEuMTcgMi40NUMxMS4zNiAyLjE2IDExLjY4IDIgMTIgMlMxMi42NCAyLjE2IDEyLjgzIDIuNDRMMTcuMjEgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0T3V0bGluZSA9IFwiTTIyIDlIMTcuMjFMMTIuODMgMi40NEMxMi42NCAyLjE2IDEyLjMyIDIgMTIgMlMxMS4zNiAyLjE2IDExLjE3IDIuNDVMNi43OSA5SDJDMS40NSA5IDEgOS40NSAxIDEwQzEgMTAuMDkgMSAxMC4xOCAxLjA0IDEwLjI3TDMuNTggMTkuNTRDMy44MSAyMC4zOCA0LjU4IDIxIDUuNSAyMUgxOC41QzE5LjQyIDIxIDIwLjE5IDIwLjM4IDIwLjQzIDE5LjU0TDIyLjk3IDEwLjI3TDIzIDEwQzIzIDkuNDUgMjIuNTUgOSAyMiA5TTEyIDQuOEwxNC44IDlIOS4yTDEyIDQuOE0xOC41IDE5TDUuNSAxOUwzLjMxIDExSDIwLjdMMTguNSAxOU0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0UGx1cyA9IFwiTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwTTIzIDEwTDIyLjk2IDEwLjI5TDIyIDEzLjhDMjEuMTEgMTMuMjkgMjAuMDkgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg1LjVDNC43MiAyMSA0LjA0IDIwLjU1IDMuNzEgMTkuOUwxLjEgMTAuNDRMMSAxMEMxIDkuNDUgMS40NSA5IDIgOUg2LjU4TDExLjE4IDIuNDNDMTEuMzYgMi4xNyAxMS42NiAyIDEyIDJTMTIuNjUgMi4xNyAxMi44MyAyLjQ0TDE3LjQyIDlIMjJDMjIuNTUgOSAyMyA5LjQ1IDIzIDEwTTE0IDE1QzE0IDEzLjkgMTMuMTEgMTMgMTIgMTNTMTAgMTMuOSAxMCAxNSAxMC45IDE3IDEyIDE3IDE0IDE2LjExIDE0IDE1TTE1IDlMMTIgNC43NEw5IDlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0UGx1c091dGxpbmUgPSBcIk0yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyME0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRSZW1vdmUgPSBcIk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NyAyMS4xMkwxNy41OSAxOUwxNS40NyAxNi44OEwxNi44OCAxNS40N0wxOSAxNy41OUwyMS4xMiAxNS40NkwyMi41NCAxNi44OE0yMyAxMEwyMi45NiAxMC4yOUwyMiAxMy44QzIxLjExIDEzLjI5IDIwLjA5IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5QzEzIDE5LjcgMTMuMTMgMjAuMzcgMTMuMzUgMjFINS41QzQuNzIgMjEgNC4wNCAyMC41NSAzLjcxIDE5LjlMMS4xIDEwLjQ0TDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi41OEwxMS4xOCAyLjQzQzExLjM2IDIuMTcgMTEuNjYgMiAxMiAyUzEyLjY1IDIuMTcgMTIuODMgMi40NEwxNy40MiA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxME0xNCAxNUMxNCAxMy45IDEzLjExIDEzIDEyIDEzUzEwIDEzLjkgMTAgMTUgMTAuOSAxNyAxMiAxNyAxNCAxNi4xMSAxNCAxNU0xNSA5TDEyIDQuNzRMOSA5SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldFJlbW92ZU91dGxpbmUgPSBcIk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NyAyMS4xMkwxNy41OSAxOUwxNS40NyAxNi44OEwxNi44OCAxNS40N0wxOSAxNy41OUwyMS4xMiAxNS40NkwyMi41NCAxNi44OE0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRVbmZpbGwgPSBcIk0zLDEwSDZWN0gzVjEwTTUsNUg4VjJINVY1TTgsMTBIMTFWN0g4VjEwTTE3LDFMMTIsNkgxNVYxMEgxOVY2SDIyTDE3LDFNNy41LDIyQzYuNzIsMjIgNi4wNCwyMS41NSA1LjcxLDIwLjlWMjAuOUwzLjEsMTMuNDRMMywxM0ExLDEgMCAwLDEgNCwxMkgyMEExLDEgMCAwLDEgMjEsMTNMMjAuOTYsMTMuMjlMMTguMjksMjAuOUMxNy45NiwyMS41NSAxNy4yOCwyMiAxNi41LDIySDcuNU03LjYxLDIwSDE2LjM5TDE4LjU3LDE0SDUuNDJMNy42MSwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRiYWxsID0gXCJNMi4zNCwxNC42M0MyLjk0LDE0LjQxIDMuNTYsMTQuMyA0LjIyLDE0LjNDNS41NiwxNC4zIDYuNzMsMTQuNzIgNy43MywxNS41Nkw0LjU5LDE4LjdDMy41MywxNy41IDIuNzgsMTYuMTMgMi4zNCwxNC42M00xNS41Niw5LjhDMTcuNTMsMTEuMjcgMTkuNjYsMTEuNjMgMjEuOTQsMTAuODhDMjEuOTcsMTEuMDkgMjIsMTEuNDcgMjIsMTJDMjIsMTMuMDMgMjEuNzUsMTQuMTggMjEuMjgsMTUuNDVDMjAuODEsMTYuNzEgMjAuMjMsMTcuNzMgMTkuNTUsMTguNUwxMy4yMiwxMi4xOUwxNS41Niw5LjhNOC43NywxNi42NEM5LjgzLDE4LjE3IDEwLjA1LDE5Ljg0IDkuNDIsMjEuNjZDOCwyMS4yNSA2LjczLDIwLjYxIDUuNjcsMTkuNzNMOC43NywxNi42NE0xMi4xOSwxMy4yMkwxOC41LDE5LjU1QzE2LjMzLDIxLjQ1IDEzLjc4LDIyLjI1IDEwLjg4LDIxLjk0QzExLjA5LDIxLjI4IDExLjIsMjAuNTYgMTEuMiwxOS43OEMxMS4yLDE5LjE2IDExLjA2LDE4LjQzIDEwLjc4LDE3LjZDMTAuNSwxNi43NyAxMC4xNywxNi4wOSA5LjgsMTUuNTZMMTIuMTksMTMuMjJNOC44MSwxNC41QzcuODgsMTMuNjcgNi44LDEzLjE1IDUuNTgsMTIuOTFDNC4zNiwxMi42OCAzLjE5LDEyLjc1IDIuMDYsMTMuMTNDMi4wMywxMi45MSAyLDEyLjUzIDIsMTJDMiwxMC45NyAyLjI1LDkuODIgMi43Miw4LjU1QzMuMTksNy4yOSAzLjc3LDYuMjcgNC40NSw1LjVMMTEuMTEsMTIuMTlMOC44MSwxNC41TTE1LjU2LDcuNzNDMTQuMjIsNi4wOCAxMy45MSw0LjI4IDE0LjYzLDIuMzRDMTUuMjUsMi41IDE1Ljk2LDIuOCAxNi43NiwzLjI2QzE3LjU1LDMuNzEgMTguMiw0LjE2IDE4LjcsNC41OUwxNS41Niw3LjczTTIxLjY2LDkuMzhDMjEuMDYsOS41OSAyMC40NCw5LjcgMTkuNzgsOS43QzE4LjY5LDkuNyAxNy42NCw5LjM4IDE2LjY0LDguNzJMMTkuNzMsNS42N0MyMC42MSw2Ljc3IDIxLjI1LDggMjEuNjYsOS4zOE0xMi4xOSwxMS4xMUw1LjUsNC40NUM3LjY3LDIuNTUgMTAuMjIsMS43NSAxMy4xMywyLjA2QzEyLjkxLDIuNzIgMTIuOCwzLjQ0IDEyLjgsNC4yMkMxMi44LDQuOTQgMTIuOTYsNS43NSAxMy4yOSw2LjY2QzEzLjYyLDcuNTYgMTQsOC4yOCAxNC41LDguODFMMTIuMTksMTEuMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0YmFsbEhvb3AgPSBcIk0yMSwySDNBMiwyIDAgMCwwIDEsNFYxNkEyLDIgMCAwLDAgMywxOEg1VjE0SDE5VjE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QTIsMiAwIDAsMCAyMSwyTTE3LDEySDE1VjlIOVYxMkg3VjlBMiwyIDAgMCwxIDksN0gxNUEyLDIgMCAwLDEgMTcsOVYxMk03LDE2VjE5LjVMOCwyM0wxMCwyMUwxMiwyM0wxNCwyMUwxNiwyM0wxNywxOS41VjE2SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0YmFsbEhvb3BPdXRsaW5lID0gXCJNMjEsMkgzQTIsMiAwIDAsMCAxLDRWMTZBMiwyIDAgMCwwIDMsMThINi41N0w4LDIzTDEwLDIxTDEyLDIzTDE0LDIxTDE2LDIzTDE3LjQzLDE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QTIsMiAwIDAsMCAyMSwyTTIxLDE2SDE4VjE0SDE3VjlBMiwyIDAgMCwwIDE1LDdIOUEyLDIgMCAwLDAgNyw5VjE0SDZWMTZIM1Y0SDIxVjE2TTksMTRWOUgxNVYxNEg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdCA9IFwiTTAuNzUsOEMwLjc1LDggNSw3IDgsOUM4LDkgOC41LDEyLjc1IDEwLjUsMTIuNzVWMTFDMTAuNSwxMSAxMSwxMiAxMiwxMkMxMywxMiAxMy41LDExIDEzLjUsMTFWMTIuNzVDMTUuNSwxMi43NSAxNiw5IDE2LDlDMTksNyAyMy4yNSw4IDIzLjI1LDhDMjEuMjUsOSAyMSwxMi41IDIxLDEyLjVDMTcsMTIuNSAxNywxNS43NSAxNywxNS43NUMxMiwxNC43NSAxMiwxOC41IDEyLDE4LjVDMTIsMTguNSAxMiwxNC43NSA3LDE1Ljc1QzcsMTUuNzUgNywxMi41IDMsMTIuNUMzLDEyLjUgMi43NSw5IDAuNzUsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5ID0gXCJNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5MTAgPSBcIk0xNiwxOEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5MTBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMThINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnkyMCA9IFwiTTE2LDE3SDhWNkgxNk0xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42N0M2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdBMS4zMywxLjMzIDAgMCwwIDE4LDIwLjY3VjUuMzNDMTgsNC42IDE3LjQsNCAxNi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnkyMEJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRIMTFWMkg1TTQsNkgxMlYxN0g0VjZNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTMwID0gXCJNMTYsMTVIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTMwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjE1SDRWNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NDAgPSBcIk0xNiwxNEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NDBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMTRINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk1MCA9IFwiTTE2LDEzSDhWNkgxNk0xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42N0M2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdBMS4zMywxLjMzIDAgMCwwIDE4LDIwLjY3VjUuMzNDMTgsNC42IDE3LjQsNCAxNi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk1MEJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRIMTFWMkg1TTQsNkgxMlYxM0g0VjZNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTYwID0gXCJNMTYsMTJIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTYwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjEySDRWNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NzAgPSBcIk0xNiwxMEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NzBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMTBINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk4MCA9IFwiTTE2LDlIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTgwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjlINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk5MCA9IFwiTTE2LDhIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTkwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjhINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlBbGVydCA9IFwiTTEzIDE0SDExVjhIMTNNMTMgMThIMTFWMTZIMTNNMTYuNyA0SDE1VjJIOVY0SDcuM0M2LjYgNCA2IDQuNiA2IDUuM1YyMC42QzYgMjEuNCA2LjYgMjIgNy4zIDIySDE2LjZDMTcuMyAyMiAxNy45IDIxLjQgMTcuOSAyMC43VjUuM0MxOCA0LjYgMTcuNCA0IDE2LjcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5QWxlcnRCbHVldG9vdGggPSBcIk01IDJWNEgzLjNDMi42IDQgMiA0LjYgMiA1LjNWMjAuNkMyIDIxLjQgMi42IDIyIDMuMyAyMkgxMi42QzEzLjMgMjIgMTMuOSAyMS40IDEzLjkgMjAuN1Y1LjNDMTQgNC42IDEzLjQgNCAxMi43IDRIMTFWMkg1TTE5IDhWMTEuOEwxNi43IDkuNUwxNiAxMC4yTDE4LjggMTNMMTYgMTUuOEwxNi43IDE2LjVMMTkgMTQuMlYxOEgxOS41TDIyLjQgMTUuMUwyMC4yIDEzTDIyLjMgMTAuOUwxOS41IDhIMTlNNyA4SDlWMTRIN00yMCA5LjlMMjAuOSAxMC44TDIwIDExLjhWOS45TTIwIDE0LjJMMjAuOSAxNS4xTDIwIDE2LjFWMTQuMk03IDE2SDlWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5QWxlcnRWYXJpYW50ID0gXCJNMTQuNjcgNEgxM1YySDdWNEg1LjMzQzQuNiA0IDQgNC42IDQgNS4zM1YyMC42N0M0IDIxLjQgNC42IDIyIDUuMzMgMjJIMTQuNjdDMTUuNCAyMiAxNiAyMS40IDE2IDIwLjY3VjUuMzNDMTYgNC42IDE1LjQgNCAxNC42NyA0TTIxIDEzSDE5VjdIMjFWMTNNMjEgMTdIMTlWMTVIMjFWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUFsZXJ0VmFyaWFudE91dGxpbmUgPSBcIk0xNCAyMEg2VjZIMTRNMTQuNjcgNEgxM1YySDdWNEg1LjMzQzQuNiA0IDQgNC42IDQgNS4zM1YyMC42N0M0IDIxLjQgNC42IDIyIDUuMzMgMjJIMTQuNjdDMTUuNCAyMiAxNiAyMS40IDE2IDIwLjY3VjUuMzNDMTYgNC42IDE1LjQgNCAxNC42NyA0TTIxIDdIMTlWMTNIMjFWOE0yMSAxNUgxOVYxN0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Qmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUJsdWV0b290aFZhcmlhbnQgPSBcIk05LDJWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNEgxNVYySDlNMTEuODMsOEgxMi4zM0wxNS4xOCwxMC44NUwxMy4wNCwxM0wxNS4xNywxNS4xNEwxMi4zMywxOEgxMS44M1YxNC4yMUw5LjU0LDE2LjVMOC44MywxNS43OUwxMS42MiwxM0w4LjgzLDEwLjIxTDkuNTQsOS41TDExLjgzLDExLjc5VjhNMTIuODMsOS45MVYxMS43OUwxMy43NywxMC44NUwxMi44Myw5LjkxTTEyLjgzLDE0LjIxVjE2LjA4TDEzLjc3LDE1LjE0TDEyLjgzLDE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZyA9IFwiTTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY2QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42NkMxNy40LDIyIDE4LDIxLjQgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRNMTEsMjBWMTQuNUg5TDEzLDdWMTIuNUgxNVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzEwID0gXCJNMjMuMDUsMTFIMjAuMDVWNEwxNS4wNSwxNEgxOC4wNVYyMk0xMiwxOEg0TDQuMDUsNkgxMi4wNU0xMi43Miw0SDExLjA1VjJINS4wNVY0SDMuMzhBMS4zMywxLjMzIDAgMCwwIDIuMDUsNS4zM1YyMC42N0MyLjA1LDIxLjQgMi42NSwyMiAzLjM4LDIySDEyLjcyQzEzLjQ1LDIyIDE0LjA1LDIxLjQgMTQuMDUsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNzIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmcxMDAgPSBcIk0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmcyMCA9IFwiTTIzLjA1LDExSDIwLjA1VjRMMTUuMDUsMTRIMTguMDVWMjJNMTIuMDUsMTdINC4wNVY2SDEyLjA1TTEyLjcyLDRIMTEuMDVWMkg1LjA1VjRIMy4zOEExLjMzLDEuMzMgMCAwLDAgMi4wNSw1LjMzVjIwLjY3QzIuMDUsMjEuNCAyLjY1LDIyIDMuMzgsMjJIMTIuNzJDMTMuNDUsMjIgMTQuMDUsMjEuNCAxNC4wNSwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi43Miw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzMwID0gXCJNMTIsMTVINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzQwID0gXCJNMTMgNEgxMVYySDVWNEgzQzIuNCA0IDIgNC40IDIgNVYyMUMyIDIxLjYgMi40IDIyIDMgMjJIMTNDMTMuNiAyMiAxNCAyMS42IDE0IDIxVjVDMTQgNC40IDEzLjYgNCAxMyA0TTEyIDE0LjVINFY2SDEyVjE0LjVNMjMgMTFIMjBWNEwxNSAxNEgxOFYyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzUwID0gXCJNMjMsMTFIMjBWNEwxNSwxNEgxOFYyMk0xMiwxM0g0VjZIMTJNMTIuNjcsNEgxMVYySDVWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzYwID0gXCJNMTIsMTFINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzcwID0gXCJNMTIsMTBINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzgwID0gXCJNMjMsMTFIMjBWNEwxNSwxNEgxOFYyMk0xMiw5SDRWNkgxMk0xMi42Nyw0SDExVjJINVY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nOTAgPSBcIk0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTTEyLDhINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdIaWdoID0gXCJNMTIgMjBINFY2SDEyTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0MyLjYgNCAyIDQuNiAyIDUuMzNWMjAuNjdDMiAyMS40IDIuNiAyMiAzLjMzIDIySDEyLjY3QzEzLjQxIDIyIDE0IDIxLjQxIDE0IDIwLjY3VjUuMzNDMTQgNC42IDEzLjQgNCAxMi42NyA0TTExIDE2SDVWMTlIMTFWMTZNMTEgN0g1VjEwSDExVjdNMTEgMTEuNUg1VjE0LjVIMTFWMTEuNU0yMyAxMEgyMFYzTDE1IDEzSDE4VjIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nTG93ID0gXCJNMTIgMjBINFY2SDEyTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0MyLjYgNCAyIDQuNiAyIDUuMzNWMjAuNjdDMiAyMS40IDIuNiAyMiAzLjMzIDIySDEyLjY3QzEzLjQxIDIyIDE0IDIxLjQxIDE0IDIwLjY3VjUuMzNDMTQgNC42IDEzLjQgNCAxMi42NyA0TTExIDE2SDVWMTlIMTFWMTZNMjMgMTBIMjBWM0wxNSAxM0gxOFYyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ01lZGl1bSA9IFwiTTEyIDIwSDRWNkgxMk0xMi42NyA0SDExVjJINVY0SDMuMzNDMi42IDQgMiA0LjYgMiA1LjMzVjIwLjY3QzIgMjEuNCAyLjYgMjIgMy4zMyAyMkgxMi42N0MxMy40MSAyMiAxNCAyMS40MSAxNCAyMC42N1Y1LjMzQzE0IDQuNiAxMy40IDQgMTIuNjcgNE0xMSAxNkg1VjE5SDExVjE2TTExIDExLjVINVYxNC41SDExVjExLjVNMjMgMTBIMjBWM0wxNSAxM0gxOFYyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ091dGxpbmUgPSBcIk0yMy4wNSwxMUgyMC4wNVY0TDE1LjA1LDE0SDE4LjA1VjIyTTEyLDIwSDRMNC4wNSw2SDEyLjA1TTEyLjcyLDRIMTEuMDVWMkg1LjA1VjRIMy4zOEExLjMzLDEuMzMgMCAwLDAgMi4wNSw1LjMzVjIwLjY3QzIuMDUsMjEuNCAyLjY1LDIyIDMuMzgsMjJIMTIuNzJDMTMuNDUsMjIgMTQuMDUsMjEuNCAxNC4wNSwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi43Miw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzID0gXCJNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43NlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczEwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxOC41SDRWNkgxMlYxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzMjAgPSBcIk0yMC4wNyw0LjkzTDE4LjY2LDYuMzRDMjEuNzksOS40NiAyMS43OSwxNC41MyAxOC42NiwxNy42NkwyMC4wNywxOS4wN0MyMy45NywxNS4xNyAyMy45Nyw4Ljg0IDIwLjA3LDQuOTNNMTcuMjQsNy43NkwxNS44Myw5LjE3QzE3LjM5LDEwLjczIDE3LjM5LDEzLjI2IDE1LjgzLDE0LjgzTDE3LjI0LDE2LjI0QzE5LjU4LDEzLjkgMTkuNTgsMTAuMSAxNy4yNCw3Ljc2TTEzLDRIMTFWMkg1VjRIM0ExLDEgMCAwLDAgMiw1VjIxQTEsMSAwIDAsMCAzLDIySDEzQTEsMSAwIDAsMCAxNCwyMVY1QTEsMSAwIDAsMCAxMyw0TTEyLDE3SDRWNkgxMlYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczMwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxNkg0VjZIMTJWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M0MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMTQuNUg0VjZIMTJWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczUwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxM0g0VjZIMTJWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M2MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMTEuNkg0VjZIMTJWMTEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczcwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxMEg0VjZIMTJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M4MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsOUg0VjZIMTJWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczkwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiw3LjVINFY2SDEyVjcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzc0FsZXJ0ID0gXCJNMTMgNEgxMVYySDVWNEgzQzIuNCA0IDIgNC40IDIgNVYyMUMyIDIxLjYgMi40IDIyIDMgMjJIMTNDMTMuNiAyMiAxNCAyMS42IDE0IDIxVjVDMTQgNC40IDEzLjYgNCAxMyA0TTkgMThIN1YxNkg5VjE4TTkgMTRIN1Y4SDlWMTRNMjAuMSA0LjlMMTguNyA2LjNDMjEuOCA5LjQgMjEuOCAxNC41IDE4LjcgMTcuNkwyMC4xIDE5QzI0IDE1LjIgMjQgOC44IDIwLjEgNC45TTE3LjIgNy44TDE1LjggOS4yQzE3LjQgMTAuOCAxNy40IDEzLjMgMTUuOCAxNC45TDE3LjIgMTYuM0MxOS42IDEzLjkgMTkuNiAxMC4xIDE3LjIgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzT3V0bGluZSA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMjBINFY2SDEyVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlIZWFydCA9IFwiTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0ExLjM0IDEuMzQgMCAwIDAgMiA1LjMzVjIwLjY3QTEuMzQgMS4zNCAwIDAgMCAzLjMzIDIySDEyLjY3QTEuMzQgMS4zNCAwIDAgMCAxNCAyMC42N1Y1LjMzQTEuMzQgMS4zNCAwIDAgMCAxMi42NyA0TTE5IDE2LjE3TDE4LjQyIDE1LjY0QzE2LjM2IDEzLjc3IDE1IDEyLjU0IDE1IDExQTIuMTggMi4xOCAwIDAgMSAxNy4yIDguOEEyLjQgMi40IDAgMCAxIDE5IDkuNjNBMi40IDIuNCAwIDAgMSAyMC44IDguOEEyLjE4IDIuMTggMCAwIDEgMjMgMTFDMjMgMTIuNSAyMS42NCAxMy43NCAxOS41OCAxNS42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGVhcnRPdXRsaW5lID0gXCJNMTkgMTYuMkwxOC40IDE1LjdDMTYuNCAxMy44IDE1IDEyLjUgMTUgMTFDMTUgOS44IDE2IDguOCAxNy4yIDguOEMxNy45IDguOCAxOC41IDkuMSAxOSA5LjZDMTkuNSA5LjEgMjAuMSA4LjggMjAuOCA4LjhDMjIgOC44IDIzIDkuOCAyMyAxMUMyMyAxMi41IDIxLjYgMTMuNyAxOS42IDE1LjZMMTkgMTYuMk0xMi43IDRIMTFWMkg1VjRIMy4zQzIuNiA0IDIgNC42IDIgNS4zVjIwLjZDMiAyMS40IDIuNiAyMiAzLjMgMjJIMTIuNkMxMy4zIDIyIDEzLjkgMjEuNCAxMy45IDIwLjdWNS4zQzE0IDQuNiAxMy40IDQgMTIuNyA0TTEyIDIwSDRWNkgxMlYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGVhcnRWYXJpYW50ID0gXCJNMTYuNjcgNEgxNVYySDlWNEg3LjMzQTEuMzQgMS4zNCAwIDAgMCA2IDUuMzNWMjAuNjdBMS4zNCAxLjM0IDAgMCAwIDcuMzMgMjJIMTYuNjdBMS4zNCAxLjM0IDAgMCAwIDE4IDIwLjY3VjUuMzNBMS4zNCAxLjM0IDAgMCAwIDE2LjY3IDRNMTIuNTggMTUuNjRMMTIgMTYuMTdMMTEuNDIgMTUuNjRDOS4zNiAxMy43NyA4IDEyLjU0IDggMTFBMi4xOCAyLjE4IDAgMCAxIDEwLjIgOC44QTIuNCAyLjQgMCAwIDEgMTIgOS42M0EyLjQgMi40IDAgMCAxIDEzLjggOC44QTIuMTggMi4xOCAwIDAgMSAxNiAxMUMxNiAxMi41NCAxNC42NCAxMy43NyAxMi41OCAxNS42NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGlnaCA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2TTE1IDdIOVYxMEgxNVY3TTE1IDExLjVIOVYxNC41SDE1VjExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUxvdyA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU1lZGl1bSA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2TTE1IDExLjVIOVYxNC41SDE1VjExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU1pbnVzID0gXCJNMTYuNjcsNEMxNy40LDQgMTgsNC42IDE4LDUuMzNWMjAuNjdBMS4zMywxLjMzIDAgMCwxIDE2LjY3LDIySDcuMzNDNi42LDIyIDYsMjEuNCA2LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwxIDcuMzMsNEg5VjJIMTVWNEgxNi42N004LDEyVjE0SDE2VjEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU5lZ2F0aXZlID0gXCJNMTEuNjcsNEExLjMzLDEuMzMgMCAwLDEgMTMsNS4zM1YyMC42N0MxMywyMS40IDEyLjQsMjIgMTEuNjcsMjJIMi4zM0MxLjYsMjIgMSwyMS40IDEsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDEgMi4zMyw0SDRWMkgxMFY0SDExLjY3TTE1LDEySDIzVjE0SDE1VjEyTTMsMTNIMTFWNkgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlPZmYgPSBcIk0xOCAxNC44TDcuMjEgNEg5VjJIMTVWNEgxNi42N0ExLjM0IDEuMzQgMCAwIDEgMTggNS4zM00xOCAxNy4zNUwzLjM4IDIuNzNMMi4xMSA0TDYgNy44OVYyMC42N0ExLjM0IDEuMzQgMCAwIDAgNy4zMyAyMkgxNi42N0ExLjM0IDEuMzQgMCAwIDAgMTggMjAuNjdWMTkuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU9mZk91dGxpbmUgPSBcIk0xOCAxNy4zNUwzLjM4IDIuNzNMMi4xMSA0TDYgNy44OVYyMC42N0ExLjM0IDEuMzQgMCAwIDAgNy4zMyAyMkgxNi42N0ExLjM0IDEuMzQgMCAwIDAgMTggMjAuNjdWMTkuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTYgMjBIOFY5Ljg5TDE2IDE3Ljg5TTE2IDZWMTIuOEwxOCAxNC44VjUuMzNBMS4zNCAxLjM0IDAgMCAwIDE2LjY3IDRIMTVWMkg5VjRINy4yMUw5LjIxIDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU91dGxpbmUgPSBcIk0xNiwyMEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5UGx1cyA9IFwiTTE2LjY3LDRDMTcuNCw0IDE4LDQuNiAxOCw1LjMzVjIwLjY3QTEuMzMsMS4zMyAwIDAsMSAxNi42NywyMkg3LjMzQzYuNiwyMiA2LDIxLjQgNiwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMSA3LjMzLDRIOVYySDE1VjRIMTYuNjdNMTYsMTRWMTJIMTNWOUgxMVYxMkg4VjE0SDExVjE3SDEzVjE0SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlQb3NpdGl2ZSA9IFwiTTExLjY3LDRBMS4zMywxLjMzIDAgMCwxIDEzLDUuMzNWMjAuNjdDMTMsMjEuNCAxMi40LDIyIDExLjY3LDIySDIuMzNDMS42LDIyIDEsMjEuNCAxLDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwxIDIuMzMsNEg0VjJIMTBWNEgxMS42N00yMywxNEgyMFYxN0gxOFYxNEgxNVYxMkgxOFY5SDIwVjEySDIzVjE0TTMsMTNIMTFWNkgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlVbmtub3duID0gXCJNMTUuMDcsMTIuMjVMMTQuMTcsMTMuMTdDMTMuNjMsMTMuNzEgMTMuMjUsMTQuMTggMTMuMDksMTVIMTEuMDVDMTEuMTYsMTQuMSAxMS41NiwxMy4yOCAxMi4xNywxMi42N0wxMy40MSwxMS40MUMxMy43OCwxMS4wNSAxNCwxMC41NSAxNCwxMEMxNCw4Ljg5IDEzLjEsOCAxMiw4QTIsMiAwIDAsMCAxMCwxMEg4QTQsNCAwIDAsMSAxMiw2QTQsNCAwIDAsMSAxNiwxMEMxNiwxMC44OCAxNS42NCwxMS42OCAxNS4wNywxMi4yNU0xMywxOUgxMVYxN0gxM00xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42NkM2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdDMTcuNCwyMiAxOCwyMS40IDE4LDIwLjY2VjUuMzNDMTgsNC41OSAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5VW5rbm93bkJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42NkMyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY2VjUuMzNDMTQsNC41OSAxMy40LDQgMTIuNjcsNEgxMVYySDVNOCw2QTQsNCAwIDAsMSAxMiwxMEMxMiwxMC44OCAxMS42NCwxMS42OCAxMS4wNywxMi4yNUwxMC4xNywxMy4xN0M5LjYzLDEzLjcxIDkuMjUsMTQuMTggOS4wOSwxNUg3LjA1QzcuMTYsMTQuMSA3LjU2LDEzLjI4IDguMTcsMTIuNjdMOS40MSwxMS40MUM5Ljc4LDExLjA1IDEwLDEwLjU1IDEwLDEwQzEwLDguODkgOS4xLDggOCw4QTIsMiAwIDAsMCA2LDEwSDRBNCw0IDAgMCwxIDgsNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMU03LDE3SDlWMTlIN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0bGVuZXQgPSBcIk0xOS45MiwxMC43NkMxOS45MiwxMC43NiAyMi41LDEyLjI0IDIyLjUsMTMuODlDMjIuNSwxNS41IDE5LjUsMTYuMDYgMTYuMTgsMTUuOUMxNi4xOCwxNS45IDE0Ljc3LDE3Ljg3IDEzLjQyLDE4LjdDMTQuODgsMjEuNDQgMTYsMjIuNSAxNS45NywyMi41QzE1Ljk3LDIyLjUgMTUuMjMsMjIuNjkgMTMsMTkuMDRDMTEuNjYsMTkuODkgMTAuMTcsMjAuMjMgOS41NiwxOS43QzguOTQsMTkuMTcgOS40MiwxOC4yOCA5LjY4LDE3Ljg1QzkuNDEsMTggOCwxOC44MyA2Ljc1LDE4LjgzQzUuMjYsMTguODMgNS4wNSwxNy43MiA1LjA1LDE3LjE1QzUuMDUsMTUgNy4xMiwxMiA3LjEyLDEyQzcuMTIsMTIgNi4xNiw5Ljg4IDYuMDUsOC4yMkM0LjE3LDguMDYgMiw4LjM5IDEuNTMsOC41NEMxLjQsOC41NCAxLjg0LDguMjIgMiw4LjE4QzIuMTUsOC4xMyAzLjkxLDcuNjcgNiw3LjY3QzYsNS45MyA2LjM1LDQuMzMgNy40MSw0LjMzQzguMTMsNC4zMyA4LjcxLDUuNDUgOC43MSw1LjQ1QzguNzEsNS40NSA4LjcsMS41IDEwLjc0LDEuNUMxMi44LDEuNSAxNSw2LjExIDE1LDYuMTFDMTUsNi4xMSAxNy4yMiw2LjMyIDE4Ljg1LDcuMDlDMTkuNSw1LjczIDIwLjA5LDUuMTEgMjAuODEsM0MyMSwzLjcgMjAuMiw1LjUgMTkuMzUsNy4zVjcuM0gxOS4zNUMxOS4zNSw3LjMgMjEuNjUsOC41IDIxLjY1LDkuODNDMjEuNjUsMTAuODQgMTkuOTIsMTAuNzYgMTkuOTIsMTAuNzZNMTAuNjgsMTguNThDMTEuMzYsMTguNjkgMTIuNDEsMTguMSAxMi40LDE4LjFMMTEuNTgsMTYuNTdMMTAuNCwxNy40QzEwLjM5LDE3LjQxIDkuNjQsMTguMzggMTAuNjgsMTguNThNMjAuMTUsOS43NkMyMC4xNSw5LjEgMTguOTUsOC4zNSAxOC44MSw4LjI3TDE3Ljg5LDkuNzVMMTkuMTcsMTAuMzdDMTkuNTksMTAuMzQgMjAuMTUsMTAuMzUgMjAuMTUsOS43Nk04LDUuNjNDNy43LDUuNjMgNy4wOSw2LjA3IDcuMDksNy42NEw4LjgzLDcuN0w4LjcyLDYuM0M4LjYsNiA4LjMsNS42MyA4LDUuNjNNMTAuMTgsMTUuNzhDOC45MiwxNS4xMyA4LjE2LDE0LjA2IDcuNTQsMTIuOUM3LjU0LDEyLjkgNS45NiwxNS41NSA2Ljk3LDE2LjIyQzgsMTYuODkgOS42NCwxNi4xNiAxMC4xOCwxNS43OE0xMi45NywxNy43NkMxNC4xMSwxNi44OSAxNy4xOSwxNC43MyAxNy40NSwxMS4wOEMxNC41Nyw5LjQ0IDEwLjYyLDguNzEgMTAuNjIsOC43MUMxMC42Miw4LjcxIDEwLjYxLDguMjEgMTAuNyw3Ljg2QzExLjY0LDcuOTcgMTQuNTksOC40NyAxNy4wMyw5LjQzQzE2LjM1LDguMjggMTUuODQsNy44NSAxNS4zNyw3LjVDMTYuNTMsNy43NiAxNy4zNiw5LjI2IDE3LjM2LDkuMjZMMTguMjgsNy45NkMxOC4yOCw3Ljk2IDEzLjkxLDUuNjEgMTAuMTksNy40MkMxMC4xMSwxMC4zIDExLjU5LDE0LjU2IDExLjU5LDE0LjU2TDEwLjgyLDE0Ljg5QzEwLjMsMTMuODQgOS42MywxMi4wOSA5LDguNjdDOC43LDkuMDggOC4xNyw5LjU1IDguMTYsMTEuMDlDNy43LDkuOCA4LjY2LDguNDMgOC42Nyw4LjQyTDcuMDcsOC4yNkM3LjE3LDkuOTIgOC4wNSwxNC4yIDEwLjY4LDE1LjUzQzEzLDE0LjIxIDE1LjUsMTEuNTQgMTYuMTMsMTAuNzdMMTYuODIsMTEuMjhMMTIuMzUsMTUuOTdDMTMuNTksMTYgMTQuMzIsMTUuNzIgMTQuODIsMTUuNUMxNC4xLDE2LjI1IDEyLjg2LDE2LjMyIDEyLjI3LDE2LjMyQzEyLjI4LDE2LjM0IDEyLjU3LDE3LjA3IDEyLjk3LDE3Ljc2TTE0LjAzLDYuMDVDMTQsNS45NyAxMi42NiwzLjY5IDExLjQ3LDMuODZDMTAuNjksNC4xMSAxMC4yNCw1LjQzIDEwLjIzLDYuODdDMTAuNzYsNi41NiAxMiw2IDE0LjAzLDYuMDVNMTYuNzEsMTUuMDdDMTYuNzEsMTUuMDcgMjAsMTUgMTkuOSwxMy43NkMxOS45LDEyLjU2IDE3LjkyLDExLjMzIDE3LjkyLDExLjM1QzE3LjkzLDEzLjQ3IDE2LjcxLDE1LjA3IDE2LjcxLDE1LjA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWNoID0gXCJNMTUsMTguNTRDMTcuMTMsMTguMjEgMTkuNSwxOCAyMiwxOFYyMkg1QzUsMjEuMzUgOC4yLDE5Ljg2IDEzLDE4LjlWMTIuNEMxMi4xNiwxMi42NSAxMS40NSwxMy4yMSAxMSwxMy45NUMxMC4zOSwxMi45MyA5LjI3LDEyLjI1IDgsMTIuMjVDNi43MywxMi4yNSA1LjYxLDEyLjkzIDUsMTMuOTVDNS4wMywxMC4zNyA4LjUsNy40MyAxMyw3LjA0VjdBMSwxIDAgMCwxIDE0LDZBMSwxIDAgMCwxIDE1LDdWNy4wNEMxOS41LDcuNDMgMjIuOTYsMTAuMzcgMjMsMTMuOTVDMjIuMzksMTIuOTMgMjEuMjcsMTIuMjUgMjAsMTIuMjVDMTguNzMsMTIuMjUgMTcuNjEsMTIuOTMgMTcsMTMuOTVDMTYuNTUsMTMuMjEgMTUuODQsMTIuNjUgMTUsMTIuMzlWMTguNTRNNywyQTUsNSAwIDAsMSAyLDdWMkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlciA9IFwiTTMsM1Y1QTIsMiAwIDAsMSA1LDdWMTlBMiwyIDAgMCwwIDcsMjFIMTdBMiwyIDAgMCwwIDE5LDE5VjdBMiwyIDAgMCwxIDIxLDVWM0gzTTcsOUgxMFYxMEg3VjlNNywxMUgxMFYxMkg3VjExTTEwLDE2SDdWMTVIMTBWMTZNMTIsMTRIN1YxM0gxMlYxNE0xMiw4SDdWN0gxMlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckFsZXJ0ID0gXCJNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjE5QzE5IDIwLjEgMTguMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyTTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyQWxlcnRPdXRsaW5lID0gXCJNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjE5QzE5IDIwLjExIDE4LjExIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMTEgNSAxOVY3QzUgNS45IDQuMTEgNSAzIDVWM003IDVWN0gxMlY4SDdWOUgxMFYxMEg3VjExSDEwVjEySDdWMTNIMTJWMTRIN1YxNUgxMFYxNkg3VjE5SDE3VjVIN00yMSAxM1Y3SDIzVjEzSDIxTTIxIDE3VjE1SDIzVjE3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckNoZWNrID0gXCJNMTcuNzUgMjEuMTZMMTUgMTguMTZMMTYuMTYgMTdMMTcuNzUgMTguNTlMMjEuMzQgMTVMMjIuNSAxNi40MUwxNy43NSAyMS4xNk0zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThDMTMgMTkuMDkgMTMuMjkgMjAuMTIgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckNoZWNrT3V0bGluZSA9IFwiTTE3Ljc1IDIxLjE2TDE1IDE4LjE2TDE2LjE2IDE3TDE3Ljc1IDE4LjU5TDIxLjM0IDE1TDIyLjUgMTYuNDFMMTcuNzUgMjEuMTZNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlck1pbnVzID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE5LjA5IDEzLjI5IDIwLjEyIDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xIDUgMTlWN0M1IDUuOSA0LjEgNSAzIDVWM003IDlWMTBIMTBWOUg3TTcgMTFWMTJIMTBWMTFIN00xMCAxNlYxNUg3VjE2SDEwTTEyIDE0VjEzSDdWMTRIMTJNMTIgOFY3SDdWOEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWFrZXJNaW51c091dGxpbmUgPSBcIk0yMyAxN1YxOUgxNVYxN00zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTguMyAxMiAxNy42MyAxMi4xMiAxNyAxMi4zNFY1SDdWN0gxMlY4SDdWOUgxMFYxMEg3VjExSDEwVjEySDdWMTNIMTJWMTRIN1YxNUgxMFYxNkg3VjE5SDEzLjA4QzEzLjIgMTkuNzIgMTMuNDUgMjAuMzkgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjExIDUgMTlWN0M1IDUuOSA0LjExIDUgMyA1VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyT3V0bGluZSA9IFwiTTMsM0gyMVY1QTIsMiAwIDAsMCAxOSw3VjE5QTIsMiAwIDAsMSAxNywyMUg3QTIsMiAwIDAsMSA1LDE5VjdBMiwyIDAgMCwwIDMsNVYzTTcsNVY3SDEyVjhIN1Y5SDEwVjEwSDdWMTFIMTBWMTJIN1YxM0gxMlYxNEg3VjE1SDEwVjE2SDdWMTlIMTdWNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclBsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE0zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThDMTMgMTkuMDkgMTMuMjkgMjAuMTIgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclBsdXNPdXRsaW5lID0gXCJNMTggMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdIMThWMTRNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclF1ZXN0aW9uID0gXCJNMCAzSDE4VjVDMTYuOSA1IDE2IDUuOSAxNiA3VjE5QzE2IDIwLjEgMTUuMSAyMSAxNCAyMUg0QzIuOSAyMSAyIDIwLjEgMiAxOVY3QzIgNS45IDEuMSA1IDAgNVYzTTQgOVYxMEg3VjlINE00IDExVjEySDdWMTFINE03IDE2VjE1SDRWMTZIN005IDE0VjEzSDRWMTRIOU05IDhWN0g0VjhIOU0yMS41IDE1LjVWMTdIMjBWMTUuNUgyMS41TTE5LjUgMTAuNUgxOFYxMEMxOCA4LjM0IDE5LjM0IDcgMjEgN0MyMi42NiA3IDI0IDguMzQgMjQgMTBDMjQgMTAuOTcgMjMuNSAxMS44OCAyMi43MSAxMi40MUwyMi40MSAxMi42QzIxLjg0IDEzIDIxLjUgMTMuNjIgMjEuNSAxNC4zVjE0LjVIMjBWMTQuM0MyMCAxMy4xMSAyMC42IDEyIDIxLjU5IDExLjM1TDIxLjg4IDExLjE2QzIyLjI3IDEwLjkgMjIuNSAxMC40NyAyMi41IDEwQzIyLjUgOS4xOCAyMS44MyA4LjUgMjEgOC41QzIwLjE3IDguNSAxOS41IDkuMTcgMTkuNSAxMFYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclF1ZXN0aW9uT3V0bGluZSA9IFwiTTAgM0gxOFY1QzE2LjkgNSAxNiA1LjkgMTYgN1YxOUMxNiAyMC4xMSAxNS4xMSAyMSAxNCAyMUg0QzIuOSAyMSAyIDIwLjExIDIgMTlWN0MyIDUuOSAxLjExIDUgMCA1VjNNNCA1VjdIOVY4SDRWOUg3VjEwSDRWMTFIN1YxMkg0VjEzSDlWMTRINFYxNUg3VjE2SDRWMTlIMTRWNUg0TTIxLjUgMTUuNVYxN0gyMFYxNS41SDIxLjVNMTkuNSAxMC41SDE4VjEwQzE4IDguMzQgMTkuMzQgNyAyMSA3QzIyLjY2IDcgMjQgOC4zNCAyNCAxMEMyNCAxMC45NyAyMy41IDExLjg4IDIyLjcxIDEyLjQxTDIyLjQxIDEyLjZDMjEuODQgMTMgMjEuNSAxMy42MiAyMS41IDE0LjNWMTQuNUgyMFYxNC4zQzIwIDEzLjExIDIwLjYgMTIgMjEuNTkgMTEuMzVMMjEuODggMTEuMTZDMjIuMjcgMTAuOSAyMi41IDEwLjQ3IDIyLjUgMTBDMjIuNSA5LjE4IDIxLjgzIDguNSAyMSA4LjVDMjAuMTcgOC41IDE5LjUgOS4xNyAxOS41IDEwVjEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyUmVtb3ZlID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE5LjA5IDEzLjI5IDIwLjEyIDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xIDUgMTlWN0M1IDUuOSA0LjEgNSAzIDVWM003IDlWMTBIMTBWOUg3TTcgMTFWMTJIMTBWMTFIN00xMCAxNlYxNUg3VjE2SDEwTTEyIDE0VjEzSDdWMTRIMTJNMTIgOFY3SDdWOEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWFrZXJSZW1vdmVPdXRsaW5lID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZCA9IFwiTTE5LDdIMTFWMTRIM1Y1SDFWMjBIM1YxN0gyMVYyMEgyM1YxMUE0LDQgMCAwLDAgMTksN003LDEzQTMsMyAwIDAsMCAxMCwxMEEzLDMgMCAwLDAgNyw3QTMsMyAwIDAsMCA0LDEwQTMsMyAwIDAsMCA3LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZERvdWJsZSA9IFwiTTE4IDEwVjdBMiAyIDAgMCAwIDE2IDVIOEEyIDIgMCAwIDAgNiA3VjEwQTIgMiAwIDAgMCA0IDEyVjE3SDUuMzNMNiAxOUg3TDcuNjcgMTdIMTYuMzNMMTcgMTlIMThMMTguNjcgMTdIMjBWMTJBMiAyIDAgMCAwIDE4IDEwTTExIDEwSDhWN0gxMU0xNiAxMEgxM1Y3SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZERvdWJsZU91dGxpbmUgPSBcIk04IDVDNy41IDUgNyA1LjIxIDYuNjEgNS42UzYgNi40NSA2IDdWMTBDNS40NyAxMCA1IDEwLjE5IDQuNTkgMTAuNTlTNCAxMS40NyA0IDEyVjE3SDUuMzRMNiAxOUg3TDcuNjkgMTdIMTYuMzZMMTcgMTlIMThMMTguNjYgMTdIMjBWMTJDMjAgMTEuNDcgMTkuODEgMTEgMTkuNDEgMTAuNTlTMTguNTMgMTAgMTggMTBWN0MxOCA2LjQ1IDE3LjggNiAxNy4zOSA1LjZTMTYuNSA1IDE2IDVNOCA3SDExVjEwSDhNMTMgN0gxNlYxMEgxM002IDEySDE4VjE1SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkRW1wdHkgPSBcIk0xOSw3SDVWMTRIM1Y1SDFWMjBIM1YxN0gyMVYyMEgyM1YxMUE0LDQgMCAwLDAgMTksN1wiO1xyXG5leHBvcnQgdmFyIG1kaUJlZEtpbmcgPSBcIk02IDVDNS40NyA1IDUgNS4yMSA0LjU5IDUuNlM0IDYuNDUgNCA3VjEwQzMuNDUgMTAgMyAxMC4xOSAyLjYgMTAuNTlTMiAxMS40NyAyIDEyVjE3SDMuMzNMNCAxOUg1TDUuNjcgMTdIMTguMzNMMTkgMTlIMjBMMjAuNjcgMTdIMjJWMTJDMjIgMTEuNDcgMjEuNzkgMTEgMjEuNCAxMC41OUMyMSAxMC4xOSAyMC41NSAxMCAyMCAxMFY3QzIwIDYuNDUgMTkuODEgNiAxOS40MSA1LjZTMTguNTMgNSAxOCA1TTYgN0gxMVYxMEg2TTEzIDdIMThWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkS2luZ091dGxpbmUgPSBcIk0yMCAxMFY3QTIgMiAwIDAgMCAxOCA1SDZBMiAyIDAgMCAwIDQgN1YxMEEyIDIgMCAwIDAgMiAxMlYxN0gzLjMzTDQgMTlINUw1LjY3IDE3SDE4LjMzTDE5IDE5SDIwTDIwLjY3IDE3SDIyVjEyQTIgMiAwIDAgMCAyMCAxME0xMyA3SDE4VjEwSDEzTTYgN0gxMVYxMEg2TTIwIDE1SDRWMTJIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkT3V0bGluZSA9IFwiTTcgMTRDOC42NiAxNCAxMCAxMi42NiAxMCAxMUMxMCA5LjM0IDguNjYgOCA3IDhDNS4zNCA4IDQgOS4zNCA0IDExQzQgMTIuNjYgNS4zNCAxNCA3IDE0TTcgMTBDNy41NSAxMCA4IDEwLjQ1IDggMTFDOCAxMS41NSA3LjU1IDEyIDcgMTJDNi40NSAxMiA2IDExLjU1IDYgMTFDNiAxMC40NSA2LjQ1IDEwIDcgMTBNMTkgN0gxMVYxNUgzVjVIMVYyMEgzVjE3SDIxVjIwSDIzVjExQzIzIDguNzkgMjEuMjEgNyAxOSA3TTIxIDE1SDEzVjlIMTlDMjAuMSA5IDIxIDkuOSAyMSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRRdWVlbiA9IFwiTTE5IDEwVjdBMiAyIDAgMCAwIDE3IDVIN0EyIDIgMCAwIDAgNSA3VjEwQTIgMiAwIDAgMCAzIDEyVjE3SDQuMzNMNSAxOUg2TDYuNjcgMTdIMTcuMzNMMTggMTlIMTlMMTkuNjcgMTdIMjFWMTJBMiAyIDAgMCAwIDE5IDEwTTE3IDEwSDdWN0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRRdWVlbk91dGxpbmUgPSBcIk0xOSAxMFY3QTIgMiAwIDAgMCAxNyA1SDdBMiAyIDAgMCAwIDUgN1YxMEEyIDIgMCAwIDAgMyAxMlYxN0g0LjMzTDUgMTlINkw2LjY3IDE3SDE3LjMzTDE4IDE5SDE5TDE5LjY3IDE3SDIxVjEyQTIgMiAwIDAgMCAxOSAxME03IDdIMTdWMTBIN00xOSAxNUg1VjEySDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZFNpbmdsZSA9IFwiTTE3IDEwVjdDMTcgNS45IDE2LjExIDUgMTUgNUg5QzcuOSA1IDcgNS45IDcgN1YxMEM1LjkgMTAgNC44OSAxMC45IDUgMTJWMTdINi4zM0w3IDE5SDhMOC42NyAxN0gxNS4zM0wxNiAxOUgxN0wxNy42NyAxN0gxOVYxMkMxOSAxMC45IDE4LjExIDEwIDE3IDEwTTE1IDEwSDlWN0gxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRTaW5nbGVPdXRsaW5lID0gXCJNMTcgMTBWN0MxNyA1LjkgMTYuMTEgNSAxNSA1SDlDNy45IDUgNyA1LjkgNyA3VjEwQzUuOSAxMCA1IDEwLjkgNSAxMlYxN0g2LjMzTDcgMTlIOEw4LjY3IDE3SDE1LjMzTDE2IDE5SDE3TDE3LjY3IDE3SDE5VjEyQzE5IDEwLjkgMTguMTEgMTAgMTcgMTBNOSA3SDE1VjEwSDlNMTcgMTVIN1YxMkgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWUgPSBcIk0xNy40IDlDMTcgNy44IDE2LjIgNyAxNSA2LjVWNUgxNFY2LjRIMTMuNkMxMi41IDYuNCAxMS42IDYuOCAxMC44IDcuNkwxMC40IDhMOSA3LjVDOC43IDcuNCA4LjQgNy4zIDggNy4zQzcuNCA3LjMgNi44IDcuNSA2LjMgNy45QzUuNyA4LjMgNS40IDguOCA1LjIgOS4zQzUgMTAgNSAxMC42IDUuMiAxMS4zQzUuNSAxMiA1LjggMTIuNSA2LjMgMTIuOEM1LjkgMTQuMyA2LjIgMTUuNiA3LjMgMTYuN0M4LjEgMTcuNSA5IDE3LjkgMTAuMSAxNy45QzEwLjYgMTcuOSAxMC45IDE3LjkgMTEuMiAxNy44QzExLjggMTguNiAxMi42IDE5LjEgMTMuNiAxOS4xQzEzLjkgMTkuMSAxNC4zIDE5LjEgMTQuNiAxOUMxNS4yIDE4LjggMTUuNiAxOC40IDE2IDE3LjlDMTYuNCAxNy4zIDE2LjYgMTYuOCAxNi42IDE2LjJDMTYuNiAxNS44IDE2LjYgMTUuNSAxNi41IDE1LjJMMTYgMTMuNkwxNi42IDEzLjJDMTcuNCAxMi40IDE3LjggMTEuMyAxNy43IDEwLjFIMTlWOUgxNy40TTcuNyAxMS4zQzcuMSAxMSA2LjkgMTAuNiA3LjEgMTBDNy4zIDkuNCA3LjcgOS4yIDguMyA5LjRMMTEuNSAxMC42QzkuOSAxMS40IDguNyAxMS42IDcuNyAxMS4zTTE0IDE2LjlDMTMuNCAxNy4xIDEzIDE2LjkgMTIuNyAxNi4zQzEyLjQgMTUuMyAxMi42IDE0LjEgMTMuNCAxMi41TDE0LjYgMTUuNkMxNC44IDE2LjMgMTQuNiAxNi43IDE0IDE2LjlNMTUuMiAxMS42TDE0LjYgMTBWOS45TDE0LjMgOS42SDE0LjJMMTIuNiA5QzEzIDguNyAxMy40IDguNSAxMy45IDguNUMxNC40IDguNSAxNC45IDguNyAxNS4zIDkuMUMxNS43IDkuNSAxNS45IDkuOSAxNS45IDEwLjRDMTUuNyAxMC43IDE1LjUgMTEuMiAxNS4yIDExLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVlRmxvd2VyID0gXCJNMTEuNiAxM1YxMi45TDExLjMgMTIuNkgxMS4yTDkuNiAxMkMxMCAxMS43IDEwLjQgMTEuNSAxMC45IDExLjVDMTEuNCAxMS41IDExLjkgMTEuNyAxMi4zIDEyLjFDMTIuNyAxMi41IDEyLjkgMTIuOSAxMi45IDEzLjRDMTIuOSAxMy45IDEyLjggMTQuMyAxMi40IDE0LjdMMTEuNiAxM005LjcgMTkuM0M5LjQgMTguMyA5LjYgMTcuMSAxMC40IDE1LjVMMTEuNiAxOC42QzExLjggMTkuMiAxMS42IDE5LjYgMTEgMTkuOUMxMC40IDIwLjIgMTAgMjAgOS43IDE5LjNNNC4xIDEzLjFDNC4zIDEyLjUgNC43IDEyLjMgNS4zIDEyLjVMOC41IDEzLjdDNi45IDE0LjUgNS43IDE0LjcgNC43IDE0LjRDNC4xIDE0LjEgMy45IDEzLjcgNC4xIDEzLjFNMTIgOC4xSDExVjkuNUgxMC42QzkuNSA5LjUgOC42IDkuOSA3LjggMTAuN0w3LjQgMTEuM0w2IDEwLjVDNS43IDEwLjQgNS40IDEwLjQgNSAxMC40QzQuNCAxMC40IDMuOCAxMC42IDMuMyAxMVMyLjQgMTEuOCAyLjIgMTIuNEMyIDEzLjEgMiAxMy43IDIuMiAxNC40QzIuNSAxNS4xIDIuOCAxNS42IDMuMyAxNS45QzIuOSAxNy40IDMuMiAxOC43IDQuMyAxOS44QzUuMSAyMC42IDYgMjEgNy4xIDIxQzcuNiAyMSA3LjkgMjEgOC4yIDIwLjlDOC44IDIxLjcgOS42IDIyLjIgMTAuNiAyMi4yQzEwLjkgMjIuMiAxMS4zIDIyLjIgMTEuNiAyMi4xQzEyLjIgMjEuOSAxMi42IDIxLjUgMTMgMjFDMTMuNCAyMC40IDEzLjYgMTkuOSAxMy42IDE5LjNDMTMuNiAxOC45IDEzLjYgMTguNiAxMy41IDE4LjNMMTIuOSAxNi45TDEzLjUgMTYuNUMxNC4zIDE1LjcgMTQuNyAxNC42IDE0LjYgMTMuNEgxNlYxMi40SDE0LjRDMTQgMTEuMiAxMy4yIDEwLjQgMTIgMTBWOC4xTTE3LjMgNi44QzE3LjEgNi42IDE3IDYuMyAxNyA2LjFDMTcgNS44IDE3LjEgNS42IDE3LjMgNS40QzE3LjUgNS4yIDE3LjcgNS4xIDE4IDUuMVMxOC41IDUuMiAxOC43IDUuNEMxOC45IDUuNSAxOSA1LjggMTkgNi4xQzE5IDYuNCAxOC45IDYuNiAxOC43IDYuOEMxOC41IDcgMTguMyA3IDE4IDdTMTcuNSA3IDE3LjMgNi44TTIwLjcgNC4xSDE5LjZMMTkuMyAzLjJDMTkuMSAyLjUgMTguNyAyLjIgMTggMi4yQzE3LjMgMi4yIDE2LjggMi41IDE2LjcgMy4yTDE2LjQgNC4xSDE1LjNDMTQuNyA0LjEgMTQuMyA0LjQgMTQgNUMxMy44IDUuNiAxNCA2LjEgMTQuNiA2LjVMMTUuNSA3TDE1LjEgOC4yQzE0LjkgOC42IDE1IDkgMTUuMiA5LjRDMTUuNSA5LjggMTUuOCAxMCAxNi4zIDEwQzE2LjcgMTAgMTcgOS45IDE3LjIgOS43TDE4IDkuMUwxOC44IDkuOEMxOSA5LjkgMTkuMyAxMCAxOS43IDEwQzIwLjIgMTAgMjAuNSA5LjggMjAuOCA5LjRDMjEgOSAyMS4xIDguNiAyMC45IDguMkwyMC41IDdMMjEuMyA2LjVDMjEuOSA2LjEgMjIuMSA1LjYgMjEuOSA1QzIxLjcgNC4zIDIxLjMgNC4xIDIwLjcgNC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZWhpdmVPZmZPdXRsaW5lID0gXCJNMS4xIDNMNC43IDYuNUMzLjcgNy4yIDMgOC4yIDMgOS41QzMgMTAuMSAzLjIgMTAuNyAzLjUgMTEuMkMyIDExLjYgMSAxMi45IDEgMTQuNUMxIDE1LjggMS43IDE2LjggMi43IDE3LjVDMi4yIDE4IDIgMTguNyAyIDE5LjVDMiAyMS40IDMuNiAyMyA1LjUgMjNIMTguNUMxOS4zIDIzIDIwIDIyLjcgMjAuNiAyMi4zTDIxLjMgMjNMMjIuNiAyMS43TDIuNCAxLjdMMS4xIDNNOS4yIDExSDYuNUM1LjcgMTEgNSAxMC4zIDUgOS41QzUgOC44IDUuNSA4LjIgNi4yIDhMOS4yIDExTTkgMjFINS41QzQuNyAyMSA0IDIwLjMgNCAxOS41UzQuNyAxOCA1LjUgMThIOVYyMU05LjIgMTZINC41QzMuNyAxNiAzIDE1LjMgMyAxNC41UzMuNyAxMyA0LjUgMTNIMTEuMkwxMi4yIDE0SDEyQzEwLjcgMTQgOS42IDE0LjggOS4yIDE2TTE4LjUgMjFIMTVWMThIMTYuMkwxOS4xIDIwLjlDMTguOSAyMSAxOC43IDIxIDE4LjUgMjFNNy4xIDMuOUw1LjcgMi41QzYuMyAxLjYgNy4zIDEgOC41IDFIMTUuNUMxNy40IDEgMTkgMi42IDE5IDQuNUMxOSA1LjEgMTguOCA1LjcgMTguNSA2LjJDMjAgNi42IDIxIDcuOSAyMSA5LjVDMjEgMTAuMSAyMC44IDEwLjcgMjAuNSAxMS4yQzIxLjkgMTEuNyAyMyAxMyAyMyAxNC41QzIzIDE1LjggMjIuMyAxNi44IDIxLjMgMTcuNUMyMS42IDE3LjkgMjEuOCAxOC4zIDIxLjkgMTguN0wxOS4yIDE2SDE5LjVDMjAuMyAxNiAyMSAxNS4zIDIxIDE0LjVTMjAuMyAxMyAxOS41IDEzSDE2LjJMMTQuMiAxMUgxNy41QzE4LjMgMTEgMTkgMTAuMyAxOSA5LjVTMTguMyA4IDE3LjUgOEgxMS4yTDkuMiA2SDE1LjVDMTYuMyA2IDE3IDUuMyAxNyA0LjVTMTYuMyAzIDE1LjUgM0g4LjVDNy45IDMgNy4zIDMuNCA3LjEgMy45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZWhpdmVPdXRsaW5lID0gXCJNMjMgMTQuNUMyMyAxMi45NCAyMS45NyAxMS42MyAyMC41NSAxMS4xOEMyMC44MyAxMC42OCAyMSAxMC4xMSAyMSA5LjVDMjEgNy45NCAxOS45NyA2LjYzIDE4LjU1IDYuMThDMTguODMgNS42OCAxOSA1LjExIDE5IDQuNUMxOSAyLjU3IDE3LjQzIDEgMTUuNSAxSDguNUM2LjU3IDEgNSAyLjU3IDUgNC41QzUgNS4xMSA1LjE3IDUuNjggNS40NSA2LjE4QzQuMDQgNi42MyAzIDcuOTQgMyA5LjVDMyAxMC4xMSAzLjE3IDEwLjY4IDMuNDUgMTEuMThDMi4wNCAxMS42MyAxIDEyLjk0IDEgMTQuNUMxIDE1Ljc2IDEuNjcgMTYuODQgMi42NyAxNy40NkMyLjI1IDE4LjAzIDIgMTguNzQgMiAxOS41QzIgMjEuNDMgMy41NyAyMyA1LjUgMjNIMTguNUMyMC40MyAyMyAyMiAyMS40MyAyMiAxOS41QzIyIDE4Ljc0IDIxLjc1IDE4LjAzIDIxLjMzIDE3LjQ2QzIyLjMzIDE2Ljg0IDIzIDE1Ljc2IDIzIDE0LjVNOC41IDNIMTUuNUMxNi4zMyAzIDE3IDMuNjcgMTcgNC41UzE2LjMzIDYgMTUuNSA2SDguNUM3LjY3IDYgNyA1LjMzIDcgNC41UzcuNjcgMyA4LjUgM002LjUgOEgxNy41QzE4LjMzIDggMTkgOC42NyAxOSA5LjVTMTguMzMgMTEgMTcuNSAxMUg2LjVDNS42NyAxMSA1IDEwLjMzIDUgOS41UzUuNjcgOCA2LjUgOE00IDE5LjVDNCAxOC42NyA0LjY3IDE4IDUuNSAxOEg5VjIxSDUuNUM0LjY3IDIxIDQgMjAuMzMgNCAxOS41TTE4LjUgMjFIMTVWMThIMTguNUMxOS4zMyAxOCAyMCAxOC42NyAyMCAxOS41UzE5LjMzIDIxIDE4LjUgMjFNMTkuNSAxNkgxNC44MkMxNC40IDE0Ljg0IDEzLjMgMTQgMTIgMTRTOS42IDE0Ljg0IDkuMTggMTZINC41QzMuNjcgMTYgMyAxNS4zMyAzIDE0LjVTMy42NyAxMyA0LjUgMTNIMTkuNUMyMC4zMyAxMyAyMSAxMy42NyAyMSAxNC41UzIwLjMzIDE2IDE5LjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVla2VlcGVyID0gXCJNMTkgNUgxNkMxNiAzLjM0IDE0LjIxIDIgMTIgMkM5Ljc5IDIgOCAzLjM0IDggNUg1QzQuNDUgNSA0IDUuNDUgNCA2UzQuNDUgNyA1IDdWMTRDNSAxNS4xMSA1LjkgMTYgNyAxNkgxN0MxOC4xMSAxNiAxOSAxNS4xMSAxOSAxNFY3QzE5LjU1IDcgMjAgNi41NSAyMCA2UzE5LjU1IDUgMTkgNU0xNyAxNEg3VjdIMTdWMTRNMTUuODYgOEMxNS45NCA4LjMyIDE2IDguNjUgMTYgOUMxNiAxMS4yMSAxNC4yMSAxMyAxMiAxM1M4IDExLjIxIDggOUM4IDguNjUgOC4wNiA4LjMyIDguMTQgOEgxMC4yOEMxMC4xMSA4LjMgMTAgOC42MyAxMCA5QzEwIDEwLjEgMTAuOSAxMSAxMiAxMVMxNCAxMC4xIDE0IDlDMTQgOC42MyAxMy44OSA4LjMgMTMuNzIgOEgxNS44Nk0yMCAxOVYyMkg0VjE5QzQgMTguMjIgNC40NyAxNy41NSA1LjE4IDE3SDEyQzkuMjggMTcgNi4xOSAxOC4yOSA2IDE5VjIwSDE4VjE5QzE3LjgxIDE4LjI5IDE0LjcyIDE3IDEyIDE3SDE4LjgyQzE5LjUzIDE3LjU1IDIwIDE4LjIyIDIwIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZXIgPSBcIk00LDJIMTlMMTcsMjJINkw0LDJNNi4yLDRMNy44LDIwSDguOEw3LjQzLDYuMzRDOC41LDYgOS44OSw1Ljg5IDExLDdDMTIuNTYsOC41NiAxNS4zMyw3LjY5IDE2LjUsNy4yM0wxNi44LDRINi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZXJPdXRsaW5lID0gXCJNNCAyTDYgMjJIMTdMMTkgMkg0TTYuMiA0SDE2LjhMMTYuNSA3LjIzQzEzLjE4IDguNSAxMS44NSA3LjY3IDExLjM4IDcuMzFDMTEuMTMgNy4xMiAxMC43NyA2LjY5IDEwLjExIDYuMzlDOS40NSA2LjA4IDguNTUgNiA3LjUgNi4zMkM3LjA5IDYuNDMgNi43NyA2LjYxIDYuNSA2Ljc5TDYuMiA0TTguODYgOC4xMUM5LjA1IDguMTEgOS4xNiA4LjE1IDkuMjcgOC4yQzkuNSA4LjMgOS43MSA4LjU1IDEwLjE3IDguOUMxMS4wMyA5LjU2IDEzLjAzIDEwLjM2IDE2LjI2IDkuNDFMMTUuMiAyMEg3LjhMNi43MSA5LjA2QzYuNzYgOSA2LjkxIDguODkgNy4xNyA4LjcxQzcuNSA4LjUgNy45MSA4LjI4IDggOC4yNUw4IDguMjVIOC4wM0M4LjQxIDguMTQgOC42NyA4LjEgOC44NiA4LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGwgPSBcIk0yMSwxOVYyMEgzVjE5TDUsMTdWMTFDNSw3LjkgNy4wMyw1LjE3IDEwLDQuMjlDMTAsNC4xOSAxMCw0LjEgMTAsNEEyLDIgMCAwLDEgMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0LjEgMTQsNC4xOSAxNCw0LjI5QzE2Ljk3LDUuMTcgMTksNy45IDE5LDExVjE3TDIxLDE5TTE0LDIxQTIsMiAwIDAsMSAxMiwyM0EyLDIgMCAwLDEgMTAsMjFcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQWxlcnQgPSBcIk0yMyA3VjEzSDIxVjdNMjEgMTVIMjNWMTdIMjFNMTIgMkEyIDIgMCAwIDAgMTAgNEEyIDIgMCAwIDAgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgyMVYxOUwxOSAxN1YxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUEyIDIgMCAwIDAgMTQgNEEyIDIgMCAwIDAgMTIgMk0xMCAyMUEyIDIgMCAwIDAgMTIgMjNBMiAyIDAgMCAwIDE0IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxBbGVydE91dGxpbmUgPSBcIk0xMiAyQTIgMiAwIDAgMCAxMCA0QTIgMiAwIDAgMCAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDIxVjE5TDE5IDE3VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QTIgMiAwIDAgMCAxNCA0QTIgMiAwIDAgMCAxMiAyTTEyIDZBNSA1IDAgMCAxIDE3IDExVjE4SDdWMTFBNSA1IDAgMCAxIDEyIDZNMjEgN1YxM0gyM1Y3SDIxTTIxIDE1VjE3SDIzVjE1SDIxTTEwIDIxQTIgMiAwIDAgMCAxMiAyM0EyIDIgMCAwIDAgMTQgMjFIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENhbmNlbCA9IFwiTTE3LjUgMTNBNC41IDQuNSAwIDAgMCAxMyAxNy41QTQuNSA0LjUgMCAwIDAgMTcuNSAyMkE0LjUgNC41IDAgMCAwIDIyIDE3LjVBNC41IDQuNSAwIDAgMCAxNy41IDEzTTE3LjUgMTQuNUEzIDMgMCAwIDEgMjAuNSAxNy41QTMgMyAwIDAgMSAyMC4wOCAxOUwxNiAxNC45MkEzIDMgMCAwIDEgMTcuNSAxNC41TTE0LjkyIDE2TDE5IDIwLjA4QTMgMyAwIDAgMSAxNy41IDIwLjVBMyAzIDAgMCAxIDE0LjUgMTcuNUEzIDMgMCAwIDEgMTQuOTIgMTZNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMS41QTYuNSA2LjUgMCAwIDEgMTEgMTcuNUE2LjUgNi41IDAgMCAxIDE3LjUgMTFBNi41IDYuNSAwIDAgMSAxOSAxMS4xOFYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi41IDIzIDEyLjk3IDIyLjgxIDEzLjMzIDIyLjVBNi41IDYuNSAwIDAgMSAxMi4wMyAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQ2FuY2VsT3V0bGluZSA9IFwiTTE3LjUgMTNBNC41IDQuNSAwIDAgMCAxMyAxNy41QTQuNSA0LjUgMCAwIDAgMTcuNSAyMkE0LjUgNC41IDAgMCAwIDIyIDE3LjVBNC41IDQuNSAwIDAgMCAxNy41IDEzTTE3LjUgMTQuNUEzIDMgMCAwIDEgMjAuNSAxNy41QTMgMyAwIDAgMSAyMC4wOCAxOUwxNiAxNC45MkEzIDMgMCAwIDEgMTcuNSAxNC41TTE0LjkyIDE2TDE5IDIwLjA4QTMgMyAwIDAgMSAxNy41IDIwLjVBMyAzIDAgMCAxIDE0LjUgMTcuNUEzIDMgMCAwIDEgMTQuOTIgMTZNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMS41QTYuNSA2LjUgMCAwIDEgMTEuMDMgMThIN1YxMUE1IDUgMCAwIDEgMTIgNkE1IDUgMCAwIDEgMTcgMTFWMTFBNi41IDYuNSAwIDAgMSAxNy41IDExQTYuNSA2LjUgMCAwIDEgMTkgMTEuMThWMTFDMTkgNy44MiAxNi44OCA1LjE0IDE0IDQuMjlDMTQgNC4xOSAxNCA0LjEgMTQgNEMxNCAyLjkgMTMuMTEgMiAxMiAyTTEwIDIxQzEwIDIyLjExIDEwLjkgMjMgMTIgMjNDMTIuNSAyMyAxMi45NyAyMi44MSAxMy4zMyAyMi41QTYuNSA2LjUgMCAwIDEgMTIuMDMgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENoZWNrID0gXCJNMTcuNzUgMjEuMTZMMTUgMTguMTZMMTYuMTYgMTdMMTcuNzUgMTguNTlMMjEuMzQgMTVMMjIuNSAxNi40MUwxNy43NSAyMS4xNk0zIDIwVjE5TDUgMTdWMTFDNSA3LjkgNy4wMyA1LjE4IDEwIDQuMjlWNEMxMCAyLjkgMTAuOSAyIDEyIDJDMTMuMTEgMiAxNCAyLjkgMTQgNFY0LjI5QzE2Ljk3IDUuMTggMTkgNy45IDE5IDExVjEyLjA4TDE4IDEyQzE0LjY5IDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE4LjcgMTIuMTIgMTkuMzcgMTIuMzQgMjBIM00xMiAyM0MxMC45IDIzIDEwIDIyLjExIDEwIDIxSDEyLjhDMTMuMDQgMjEuNDEgMTMuMzMgMjEuNzkgMTMuNjUgMjIuMTNDMTMuMjkgMjIuNjYgMTIuNjkgMjMgMTIgMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENoZWNrT3V0bGluZSA9IFwiTTE3Ljc1IDIxLjE2TDE1IDE4LjE2TDE2LjE2IDE3TDE3Ljc1IDE4LjU5TDIxLjM0IDE1TDIyLjUgMTYuNDFMMTcuNzUgMjEuMTZNMTAgMjFIMTIuOEMxMy4wNCAyMS40MSAxMy4zMyAyMS43OSAxMy42NSAyMi4xM0MxMy4yOSAyMi42NiAxMi42OSAyMyAxMiAyM0MxMC45IDIzIDEwIDIyLjExIDEwIDIxTTMgMjBWMTlMNSAxN1YxMUM1IDcuOSA3LjAzIDUuMTggMTAgNC4yOVY0QzEwIDIuOSAxMC45IDIgMTIgMkMxMy4xMSAyIDE0IDIuOSAxNCA0VjQuMjlDMTYuOTcgNS4xOCAxOSA3LjkgMTkgMTFWMTIuMDhMMTggMTJMMTcgMTIuMDhWMTFDMTcgOC4yNCAxNC43NiA2IDEyIDZDOS4yNCA2IDcgOC4yNCA3IDExVjE4SDEyQzEyIDE4LjcgMTIuMTIgMTkuMzcgMTIuMzQgMjBIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTcsMTZWMTVMMTYsMTRWMTEuMzlDMTYsMTAuMyAxNS43Myw5LjM0IDE1LjIxLDguNTNDMTQuNyw3LjcyIDEzLjk2LDcuMjEgMTMsN1Y2LjVBMSwxIDAgMCwwIDEyLDUuNUExLDEgMCAwLDAgMTEsNi41VjdDMTAuMDQsNy4yMSA5LjMsNy43MiA4Ljc5LDguNTNDOC4yNyw5LjM0IDgsMTAuMyA4LDExLjM5VjE0TDcsMTVWMTZIMTdNMTMuNSwxN0gxMC41QTEuNSwxLjUgMCAwLDAgMTIsMTguNUExLjUsMS41IDAgMCwwIDEzLjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENpcmNsZU91dGxpbmUgPSBcIk0xNywxNkg3VjE1TDgsMTRWMTEuMzlDOCwxMC4zIDguMjcsOS4zNCA4Ljc5LDguNTNDOS4zLDcuNzIgMTAuMDQsNy4yMSAxMSw3VjYuNUExLDEgMCAwLDEgMTIsNS41QTEsMSAwIDAsMSAxMyw2LjVWN0MxMy45Niw3LjIxIDE0LjcsNy43MiAxNS4yMSw4LjUzQzE1LjczLDkuMzQgMTYsMTAuMyAxNiwxMS4zOVYxNEwxNywxNVYxNk0xMy41LDE3QTEuNSwxLjUgMCAwLDEgMTIsMTguNUExLjUsMS41IDAgMCwxIDEwLjUsMTdIMTMuNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbE1pbnVzID0gXCJNMjIgMTlWMTdIMTRWMTlIMjJNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEMxMiAxNC42OSAxNC42OSAxMiAxOCAxMkMxOC4zNCAxMiAxOC42NyAxMi4wMyAxOSAxMi4wOVYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi42NiAyMyAxMy4yOCAyMi42NyAxMy42NSAyMi4xM0MxMy4zMyAyMS43OSAxMy4wNSAyMS40MSAxMi44MSAyMUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsTWludXNPdXRsaW5lID0gXCJNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRWNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEg3VjExQzcgOC4yNCA5LjI0IDYgMTIgNlMxNyA4LjI0IDE3IDExVjEyLjA5QzE3LjMzIDEyLjAzIDE3LjY3IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5VjRDMTQgMi45IDEzLjExIDIgMTIgMk0xNCAxN1YxOUgyMlYxN00xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxPZmYgPSBcIk0yMC44NCwyMi43M0wxOC4xMSwyMEgzVjE5TDUsMTdWMTFDNSw5Ljg2IDUuMjksOC43MyA1LjgzLDcuNzJMMS4xMSwzTDIuMzksMS43M0wyMi4xMSwyMS40NkwyMC44NCwyMi43M00xOSwxNS44VjExQzE5LDcuOSAxNi45Nyw1LjE3IDE0LDQuMjlDMTQsNC4xOSAxNCw0LjEgMTQsNEEyLDIgMCAwLDAgMTIsMkEyLDIgMCAwLDAgMTAsNEMxMCw0LjEgMTAsNC4xOSAxMCw0LjI5QzkuMzksNC40NyA4LjgsNC43NCA4LjI2LDUuMDlMMTksMTUuOE0xMiwyM0EyLDIgMCAwLDAgMTQsMjFIMTBBMiwyIDAgMCwwIDEyLDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxPZmZPdXRsaW5lID0gXCJNMjIuMTEsMjEuNDZMMi4zOSwxLjczTDEuMTEsM0w1LjgzLDcuNzJDNS4yOSw4LjczIDUsOS44NiA1LDExVjE3TDMsMTlWMjBIMTguMTFMMjAuODQsMjIuNzNMMjIuMTEsMjEuNDZNNywxOFYxMUM3LDEwLjM5IDcuMTEsOS43OSA3LjM0LDkuMjNMMTYuMTEsMThIN00xMCwyMUgxNEEyLDIgMCAwLDEgMTIsMjNBMiwyIDAgMCwxIDEwLDIxTTguMjksNS4wOUM4LjgyLDQuNzUgOS40LDQuNSAxMCw0LjI5QzEwLDQuMTkgMTAsNC4xIDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC4xIDE0LDQuMTkgMTQsNC4yOUMxNi45Nyw1LjE3IDE5LDcuOSAxOSwxMVYxNS44TDE3LDEzLjhWMTFBNSw1IDAgMCwwIDEyLDZDMTEuMjIsNiAxMC40NSw2LjIgOS43Niw2LjU2TDguMjksNS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsT3V0bGluZSA9IFwiTTE2LDE3SDdWMTAuNUM3LDggOSw2IDExLjUsNkMxNCw2IDE2LDggMTYsMTAuNU0xOCwxNlYxMC41QzE4LDcuNDMgMTUuODYsNC44NiAxMyw0LjE4VjMuNUExLjUsMS41IDAgMCwwIDExLjUsMkExLjUsMS41IDAgMCwwIDEwLDMuNVY0LjE4QzcuMTMsNC44NiA1LDcuNDMgNSwxMC41VjE2TDMsMThWMTlIMjBWMThNMTEuNSwyMkEyLDIgMCAwLDAgMTMuNSwyMEg5LjVBMiwyIDAgMCwwIDExLjUsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFBsdXMgPSBcIk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNE0xMiAyQTIgMiAwIDAgMCAxMCA0QTIgMiAwIDAgMCAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDEyLjM1QTYgNiAwIDAgMSAxMiAxOEE2IDYgMCAwIDEgMTggMTJBNiA2IDAgMCAxIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QTIgMiAwIDAgMCAxNCA0QTIgMiAwIDAgMCAxMiAyTTEwIDIxQTIgMiAwIDAgMCAxMiAyM0EyIDIgMCAwIDAgMTMuNjUgMjIuMTNBNiA2IDAgMCAxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxQbHVzT3V0bGluZSA9IFwiTTEyIDJDMTAuOSAyIDEwIDIuOSAxMCA0QzEwIDQuMSAxMCA0LjE5IDEwIDQuMjlDNy4xMiA1LjE0IDUgNy44MiA1IDExVjE3TDMgMTlWMjBIMTIuMzVDMTIuMTIgMTkuMzYgMTIgMTguNjggMTIgMThIN1YxMUM3IDguMjQgOS4yNCA2IDEyIDZDMTQuNzYgNiAxNyA4LjI0IDE3IDExVjEyLjA5QzE3LjMzIDEyLjAzIDE3LjY3IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QzE0IDQuMTkgMTQgNC4xIDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNE0xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxSZW1vdmUgPSBcIk0yMC4xMiAxNC40NkwxOCAxNi41OUwxNS44OCAxNC40NkwxNC40NiAxNS44OEwxNi41OSAxOEwxNC40NiAyMC4xMkwxNS44OCAyMS41NEwxOCAxOS40MUwyMC4xMiAyMS41NEwyMS41NCAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OE0xMiAyQzEwLjkgMiAxMCAyLjkgMTAgNEMxMCA0LjEgMTAgNC4xOSAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDEyLjM1QzEyLjEyIDE5LjM2IDEyIDE4LjY4IDEyIDE4QzEyIDE0LjY5IDE0LjY5IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QzE0IDQuMTkgMTQgNC4xIDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMk0xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxSZW1vdmVPdXRsaW5lID0gXCJNMjAuMTIgMTQuNDZMMTggMTYuNTlMMTUuODggMTQuNDZMMTQuNDYgMTUuODhMMTYuNTkgMThMMTQuNDYgMjAuMTJMMTUuODggMjEuNTRMMTggMTkuNDFMMjAuMTIgMjEuNTRMMjEuNTQgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEg3VjExQTUgNSAwIDAgMSAxMiA2QTUgNSAwIDAgMSAxNyAxMVYxMi4wOUMxNy4zMyAxMi4wNCAxNy42NiAxMiAxOCAxMkMxOC4zNCAxMiAxOC42NyAxMi4wMyAxOSAxMi4wOVYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi42NiAyMyAxMy4yOCAyMi42NyAxMy42NSAyMi4xM0MxMy4zMyAyMS43OSAxMy4wNSAyMS40MSAxMi44MSAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsUmluZyA9IFwiTTIxLDE5VjIwSDNWMTlMNSwxN1YxMUM1LDcuOSA3LjAzLDUuMTcgMTAsNC4yOUMxMCw0LjE5IDEwLDQuMSAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuMSAxNCw0LjE5IDE0LDQuMjlDMTYuOTcsNS4xNyAxOSw3LjkgMTksMTFWMTdMMjEsMTlNMTQsMjFBMiwyIDAgMCwxIDEyLDIzQTIsMiAwIDAsMSAxMCwyMU0xOS43NSwzLjE5TDE4LjMzLDQuNjFDMjAuMDQsNi4zIDIxLDguNiAyMSwxMUgyM0MyMyw4LjA3IDIxLjg0LDUuMjUgMTkuNzUsMy4xOU0xLDExSDNDMyw4LjYgMy45Niw2LjMgNS42Nyw0LjYxTDQuMjUsMy4xOUMyLjE2LDUuMjUgMSw4LjA3IDEsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFJpbmdPdXRsaW5lID0gXCJNMTAsMjFIMTRBMiwyIDAgMCwxIDEyLDIzQTIsMiAwIDAsMSAxMCwyMU0yMSwxOVYyMEgzVjE5TDUsMTdWMTFDNSw3LjkgNy4wMyw1LjE3IDEwLDQuMjlDMTAsNC4xOSAxMCw0LjEgMTAsNEEyLDIgMCAwLDEgMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0LjEgMTQsNC4xOSAxNCw0LjI5QzE2Ljk3LDUuMTcgMTksNy45IDE5LDExVjE3TDIxLDE5TTE3LDExQTUsNSAwIDAsMCAxMiw2QTUsNSAwIDAsMCA3LDExVjE4SDE3VjExTTE5Ljc1LDMuMTlMMTguMzMsNC42MUMyMC4wNCw2LjMgMjEsOC42IDIxLDExSDIzQzIzLDguMDcgMjEuODQsNS4yNSAxOS43NSwzLjE5TTEsMTFIM0MzLDguNiAzLjk2LDYuMyA1LjY3LDQuNjFMNC4yNSwzLjE5QzIuMTYsNS4yNSAxLDguMDcgMSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsU2xlZXAgPSBcIk0xMCwyMUgxNEEyLDIgMCAwLDEgMTIsMjNBMiwyIDAgMCwxIDEwLDIxTTIxLDE5VjIwSDNWMTlMNSwxN1YxMUM1LDcuOSA3LjAzLDUuMTcgMTAsNC4yOUMxMCw0LjE5IDEwLDQuMSAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuMSAxNCw0LjE5IDE0LDQuMjlDMTYuOTcsNS4xNyAxOSw3LjkgMTksMTFWMTdMMjEsMTlNMTUsOUg5VjExSDEyLjI0TDksMTMuN1YxNkgxNVYxNEgxMS43NkwxNSwxMS4zVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFNsZWVwT3V0bGluZSA9IFwiTTEwLDIxSDE0QTIsMiAwIDAsMSAxMiwyM0EyLDIgMCAwLDEgMTAsMjFNMjEsMTlWMjBIM1YxOUw1LDE3VjExQzUsNy45IDcuMDMsNS4xNyAxMCw0LjI5QzEwLDQuMTkgMTAsNC4xIDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC4xIDE0LDQuMTkgMTQsNC4yOUMxNi45Nyw1LjE3IDE5LDcuOSAxOSwxMVYxN0wyMSwxOU0xNywxMUE1LDUgMCAwLDAgMTIsNkE1LDUgMCAwLDAgNywxMVYxOEgxN1YxMU05LDlWMTFIMTIuMjRMOSwxMy43VjE2SDE1VjE0SDExLjc2TDE1LDExLjNWOUg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJldGEgPSBcIk05LjIzLDE3LjU5VjIzLjEySDYuODhWNi43MkM2Ljg4LDUuMjcgNy4zMSw0LjEzIDguMTYsMy4yOEM5LDIuNDMgMTAuMTcsMiAxMS42MSwyQzEzLDIgMTQuMDcsMi4zNCAxNC44NywzQzE1LjY2LDMuNjggMTYuMDUsNC42MiAxNi4wNSw1LjgxQzE2LjA1LDYuNjMgMTUuNzksNy40IDE1LjI3LDguMTFDMTQuNzUsOC44MiAxNC4wOCw5LjMxIDEzLjI1LDkuNThWOS42MkMxNC41LDkuODIgMTUuNDcsMTAuMjcgMTYuMTMsMTFDMTYuNzksMTEuNzEgMTcuMTIsMTIuNjIgMTcuMTIsMTMuNzRDMTcuMTIsMTUuMDYgMTYuNjYsMTYuMTQgMTUuNzUsMTYuOTdDMTQuODMsMTcuOCAxMy42MywxOC4yMSAxMi4xMywxOC4yMUMxMS4wNywxOC4yMSAxMC4xLDE4IDkuMjMsMTcuNTlNMTAuNzIsMTAuNzVWOC44M0MxMS41OSw4LjcyIDEyLjMsOC40IDEyLjg3LDcuODZDMTMuNDMsNy4zMSAxMy43MSw2LjcgMTMuNzEsNkMxMy43MSw0LjYyIDEzLDMuOTIgMTEuNiwzLjkyQzEwLjg0LDMuOTIgMTAuMjUsNC4xNiA5Ljg0LDQuNjVDOS40Myw1LjE0IDkuMjMsNS44MiA5LjIzLDYuNzFWMTUuNUMxMC4xNCwxNi4wMyAxMS4wMywxNi4yOSAxMS44OSwxNi4yOUMxMi43MywxNi4yOSAxMy4zOSwxNi4wNyAxMy44NiwxNS42NEMxNC4zMywxNS4yIDE0LjU2LDE0LjU4IDE0LjU2LDEzLjc5QzE0LjU2LDEyIDEzLjI4LDExIDEwLjcyLDEwLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJldGFtYXggPSBcIk00LDVBMiwyIDAgMCwwIDIsN1YxN0EyLDIgMCAwLDAgNCwxOUgyMEEyLDIgMCAwLDAgMjIsMTdWN0EyLDIgMCAwLDAgMjAsNUg0TTgsOUE0LDQgMCAwLDEgMTIsMTNBNCw0IDAgMCwxIDgsMTdBNCw0IDAgMCwxIDQsMTNBNCw0IDAgMCwxIDgsOU0xMyw5SDIwVjE3SDEzVjlNOCwxMUEyLDIgMCAwLDAgNiwxM0EyLDIgMCAwLDAgOCwxNUEyLDIgMCAwLDAgMTAsMTNBMiwyIDAgMCwwIDgsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlhdGhsb24gPSBcIk0xMi44OCwzLjY0QzEzLjY1LDMuNjQgMTQuMjgsNC4yNyAxNC4yOCw1LjA0QzE0LjI4LDUuODEgMTMuNjUsNi40NCAxMi44OCw2LjQ0QzEyLjExLDYuNDQgMTEuNSw1LjgxIDExLjUsNS4wNEMxMS41LDQuMjcgMTIuMTEsMy42NCAxMi44OCwzLjY0TTE1LDEzSDE2LjVWMTlIMTVWMTNNMTUsOC41SDE2LjVWMTBIMTVWOC41TTEwLjA0LDIuNkw4LDIuMDRMNi4wNiw4LjU4TDMuOSwxMS40Mkw3LjE3LDEyLjM3TDEwLjA0LDIuNk0xOS42NywxOC41NUMxOS4zMSwxOC45MyAxOC44OCwxOS41IDE4LjQsMTkuN0MxNy45MSwxOS45MiAxNy41NCwyMCAxNywyMEgxMy41TDEzLjQzLDE3QzEzLjQyLDE2LjgzIDEzLjM3LDE2LjY3IDEzLjI4LDE2LjVMMTAuODgsMTIuMjRMMTEuNzYsOS41QzEyLjM0LDEwLjU1IDEzLDExLjczIDEzLjA2LDExLjgzQzEzLjIxLDEyIDEzLjQ1LDEyLjEzIDEzLjY5LDEyLjEzSDE1LjlBMC44MSwwLjgxIDAgMCwwIDE2LjcxLDExLjMyQzE2LjcxLDEwLjkgMTYuMzgsMTAuNTYgMTUuOTYsMTAuNTNMMTQuMjksMTAuNEwxMi40LDdDMTIuNCw3IDEyLDYuNDIgMTEuMTQsNi40MkMxMC4yNyw2LjQyIDEwLDYuODQgOS44Myw3LjQyTDYsMjBIM1YyMkgxN0MxOC4zNywyMiAxOS41MywyMS4zNCAyMC41LDIwLjM3TDE5LjY3LDE4LjU1TTkuNzUsMTQuMzlMMTEuNjIsMTcuMzlMMTEuNzUsMjBINy43NUw5Ljc1LDE0LjM5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGUgPSBcIk0xOSAxMEMxOC40NCAxMCAxNy45MSAxMC4xMSAxNy40MSAxMC4yOEwxNC40NiA0LjVIMTFWNkgxMy41NEwxNC40MiA3LjcyTDEyIDEzLjEzTDEwLjIzIDguOTVDMTAuNSA4Ljg1IDEwLjc0IDguNTggMTAuNzQgOC4yNUMxMC43NCA3Ljg0IDEwLjQxIDcuNSAxMCA3LjVIOEM3LjU4IDcuNSA3LjI0IDcuODQgNy4yNCA4LjI1UzcuNTggOSA4IDlIOC42MUwxMC44NiAxNC4yNUg5LjkyQzkuNTYgMTEuODUgNy41IDEwIDUgMTBDMi4yNCAxMCAwIDEyLjI0IDAgMTVTMi4yNCAyMCA1IDIwQzcuNSAyMCA5LjU2IDE4LjE1IDkuOTIgMTUuNzVIMTIuNUwxNS4yOSA5LjQzTDE2LjA4IDEwLjk2QzE0LjgyIDExLjg3IDE0IDEzLjM0IDE0IDE1QzE0IDE3Ljc2IDE2LjI0IDIwIDE5IDIwUzI0IDE3Ljc2IDI0IDE1IDIxLjc2IDEwIDE5IDEwTTUgMTguNUMzLjA3IDE4LjUgMS41IDE2LjkzIDEuNSAxNVMzLjA3IDExLjUgNSAxMS41QzYuNjcgMTEuNSA4LjA3IDEyLjY4IDguNDEgMTQuMjVINFYxNS43NUg4LjQxQzguMDcgMTcuMzIgNi42NyAxOC41IDUgMTguNU0xOSAxOC41QzE3LjA3IDE4LjUgMTUuNSAxNi45MyAxNS41IDE1QzE1LjUgMTMuOTIgMTYgMTIuOTcgMTYuNzcgMTIuMzNMMTguNTcgMTUuODVMMTkuODkgMTUuMTNMMTguMSAxMS42M0MxOC4zOSAxMS41NiAxOC42OSAxMS41IDE5IDExLjVDMjAuOTMgMTEuNSAyMi41IDEzLjA3IDIyLjUgMTVTMjAuOTMgMTguNSAxOSAxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGVCYXNrZXQgPSBcIk0xMS43NCAxMy4zNkwxNC4xNCA3LjcxTDEzLjA2IDUuNUgxMC41VjRIMTRMMTQuNzMgNS41SDIxLjc1TDIwLjc1IDlIMTYuNDRMMTcuMTEgMTAuMzdDMTcuNjkgMTAuMTMgMTguMzMgMTAgMTkgMTBDMjEuNzYgMTAgMjQgMTIuMjQgMjQgMTVDMjQgMTcuNzYgMjEuNzYgMjAgMTkgMjBDMTYuMjQgMjAgMTQgMTcuNzYgMTQgMTVDMTQgMTMuNDUgMTQuNzEgMTIuMDYgMTUuODIgMTEuMTVMMTUgOS41TDEyLjI1IDE2SDkuOUM5LjQ0IDE4LjI4IDcuNDIgMjAgNSAyMEMyLjI0IDIwIDAgMTcuNzYgMCAxNUMwIDEyLjI0IDIuMjQgMTAgNSAxMEM3LjU5IDEwIDkuNzIgMTEuOTcgMTAgMTQuNUgxMC41OEw4LjMgOUg3LjVDNy4wOSA5IDYuNzUgOC42NiA2Ljc1IDguMjVDNi43NSA3Ljg0IDcuMDkgNy41IDcuNSA3LjVIMTAuMjVDMTAuNjYgNy41IDExIDcuODQgMTEgOC4yNUMxMSA4LjY2IDEwLjY2IDkgMTAuMjUgOUg5Ljk3TDExLjc0IDEzLjM2TTUgMTEuNUMzLjA3IDExLjUgMS41IDEzLjA3IDEuNSAxNUMxLjUgMTYuOTMgMy4wNyAxOC41IDUgMTguNUM2LjU5IDE4LjUgNy45MyAxNy40NSA4LjM2IDE2SDRWMTQuNUg4LjQ3QzguMjIgMTIuOCA2Ljc2IDExLjUgNSAxMS41TTE5IDExLjVDMTguNTcgMTEuNSAxOC4xNSAxMS41OCAxNy43NyAxMS43MkwxOS43IDE1LjY4TDE4LjM1IDE2LjM0TDE2LjUgMTIuNTVDMTUuODggMTMuMTggMTUuNSAxNC4wNSAxNS41IDE1QzE1LjUgMTYuOTMgMTcuMDcgMTguNSAxOSAxOC41QzIwLjkzIDE4LjUgMjIuNSAxNi45MyAyMi41IDE1QzIyLjUgMTMuMDcgMjAuOTMgMTEuNSAxOSAxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGVFbGVjdHJpYyA9IFwiTTE5IDdDMTguNDQgNyAxNy45MSA3LjExIDE3LjQxIDcuMjhMMTQuNDYgMS41SDExVjNIMTMuNTRMMTQuNDIgNC43MkwxMiAxMC4xM0wxMC4yMyA1Ljk1QzEwLjUgNS44NSAxMC43NCA1LjU4IDEwLjc0IDUuMjVDMTAuNzQgNC44NCAxMC40MSA0LjUgMTAgNC41SDhDNy41OCA0LjUgNy4yNCA0Ljg0IDcuMjQgNS4yNVM3LjU4IDYgOCA2SDguNjFMMTAuODYgMTEuMjVIOS45MkM5LjU2IDguODUgNy41IDcgNSA3QzIuMjQgNyAwIDkuMjQgMCAxMlMyLjI0IDE3IDUgMTdDNy41IDE3IDkuNTYgMTUuMTUgOS45MiAxMi43NUgxMi41TDE1LjI5IDYuNDNMMTYuMDggNy45NkMxNC44MiA4Ljg3IDE0IDEwLjM0IDE0IDEyQzE0IDE0Ljc2IDE2LjI0IDE3IDE5IDE3UzI0IDE0Ljc2IDI0IDEyIDIxLjc2IDcgMTkgN001IDE1LjVDMy4wNyAxNS41IDEuNSAxMy45MyAxLjUgMTJTMy4wNyA4LjUgNSA4LjVDNi42NyA4LjUgOC4wNyA5LjY4IDguNDEgMTEuMjVINFYxMi43NUg4LjQxQzguMDcgMTQuMzIgNi42NyAxNS41IDUgMTUuNU0xOSAxNS41QzE3LjA3IDE1LjUgMTUuNSAxMy45MyAxNS41IDEyQzE1LjUgMTAuOTIgMTYgOS45NyAxNi43NyA5LjMzTDE4LjU3IDEyLjg1TDE5Ljg5IDEyLjEzTDE4LjEgOC42M0MxOC4zOSA4LjU2IDE4LjY5IDguNSAxOSA4LjVDMjAuOTMgOC41IDIyLjUgMTAuMDcgMjIuNSAxMlMyMC45MyAxNS41IDE5IDE1LjVNMTEgMjBIN0wxMyAyM1YyMUgxN0wxMSAxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWN5Y2xlUGVubnlGYXJ0aGluZyA9IFwiTTE1LjUgNS4wNlYySDEyVjRIMTMuNVY1LjA0QzEyLjcxIDUuMTEgMTEuOTQgNS4yNyAxMS4yIDUuNUMxMS4wMyA1LjIgMTAuNzIgNSAxMC4zNiA1SDdDNi40NSA1IDYgNS40NSA2IDZTNi40NSA3IDcgN0g4LjA1QzUuMDkgOSAzLjEyIDEyLjM2IDMgMTYuMThDMS44NSAxNi41OSAxIDE3LjY5IDEgMTlDMSAyMC42NiAyLjM0IDIyIDQgMjJTNyAyMC42NiA3IDE5QzcgMTcuNyA2LjE3IDE2LjYxIDUgMTYuMTlDNS4wNyAxNC42NyA1LjQ2IDEzLjI1IDYuMTQgMTJDNi4wNSAxMi41IDYgMTMgNiAxMy41QzYgMTguMTkgOS44MSAyMiAxNC41IDIyQzE5LjE5IDIyIDIzIDE4LjE5IDIzIDEzLjVDMjMgOS4xNCAxOS43MiA1LjU2IDE1LjUgNS4wNk00IDIwQzMuNDUgMjAgMyAxOS41NSAzIDE5UzMuNDUgMTggNCAxOCA1IDE4LjQ1IDUgMTkgNC41NSAyMCA0IDIwTTE0LjUgMjBDMTAuOTIgMjAgOCAxNy4wOCA4IDEzLjVDOCAxMC4yNiAxMC4zOSA3LjU3IDEzLjUgNy4wOVYxNUgxNS41VjcuMDlDMTguNjEgNy41NyAyMSAxMC4yNiAyMSAxMy41QzIxIDE3LjA4IDE4LjA4IDIwIDE0LjUgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlrZSA9IFwiTTUsMjAuNUEzLjUsMy41IDAgMCwxIDEuNSwxN0EzLjUsMy41IDAgMCwxIDUsMTMuNUEzLjUsMy41IDAgMCwxIDguNSwxN0EzLjUsMy41IDAgMCwxIDUsMjAuNU01LDEyQTUsNSAwIDAsMCAwLDE3QTUsNSAwIDAsMCA1LDIyQTUsNSAwIDAsMCAxMCwxN0E1LDUgMCAwLDAgNSwxMk0xNC44LDEwSDE5VjguMkgxNS44TDEzLjg2LDQuOTNDMTMuNTcsNC40MyAxMyw0LjEgMTIuNCw0LjFDMTEuOTMsNC4xIDExLjUsNC4yOSAxMS4yLDQuNkw3LjUsOC4yOUM3LjE5LDguNiA3LDkgNyw5LjVDNywxMC4xMyA3LjMzLDEwLjY2IDcuODUsMTAuOTdMMTEuMiwxM1YxOEgxM1YxMS41TDEwLjc1LDkuODVMMTMuMDcsNy41TTE5LDIwLjVBMy41LDMuNSAwIDAsMSAxNS41LDE3QTMuNSwzLjUgMCAwLDEgMTksMTMuNUEzLjUsMy41IDAgMCwxIDIyLjUsMTdBMy41LDMuNSAwIDAsMSAxOSwyMC41TTE5LDEyQTUsNSAwIDAsMCAxNCwxN0E1LDUgMCAwLDAgMTksMjJBNSw1IDAgMCwwIDI0LDE3QTUsNSAwIDAsMCAxOSwxMk0xNiw0LjhDMTcsNC44IDE3LjgsNCAxNy44LDNDMTcuOCwyIDE3LDEuMiAxNiwxLjJDMTUsMS4yIDE0LjIsMiAxNC4yLDNDMTQuMiw0IDE1LDQuOCAxNiw0LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlrZUZhc3QgPSBcIk0xNiAxLjJDMTUgMS4yIDE0LjIgMiAxNC4yIDNTMTUgNC44IDE2IDQuOCAxNy44IDQgMTcuOCAzIDE3IDEuMiAxNiAxLjJNMTIuNCA0LjFDMTEuOTMgNC4xIDExLjUgNC4yOSAxMS4yIDQuNkw3LjUgOC4yOUM3LjE5IDguNiA3IDkgNyA5LjVDNyAxMC4xMyA3LjMzIDEwLjY2IDcuODUgMTAuOTdMMTEuMiAxM1YxOEgxM1YxMS41TDEwLjc1IDkuODVMMTMuMDcgNy41TDE0LjggMTBIMTlWOC4ySDE1LjhMMTMuODYgNC45M0MxMy41NyA0LjQzIDEzIDQuMSAxMi40IDQuMU0xMCAzSDNDMi40NSAzIDIgMi41NSAyIDJTMi40NSAxIDMgMUgxMi43OUMxMi41OCAxLjM0IDEyLjQxIDEuNzEgMTIuMzIgMi4xMUMxMS40NiAyLjEzIDEwLjY1IDIuNDUgMTAgM001IDEyQzIuMjQgMTIgMCAxNC4yNCAwIDE3UzIuMjQgMjIgNSAyMiAxMCAxOS43NiAxMCAxNyA3Ljc2IDEyIDUgMTJNNSAyMC41QzMuMDcgMjAuNSAxLjUgMTguOTMgMS41IDE3UzMuMDcgMTMuNSA1IDEzLjUgOC41IDE1LjA3IDguNSAxNyA2LjkzIDIwLjUgNSAyMC41TTE5IDEyQzE2LjI0IDEyIDE0IDE0LjI0IDE0IDE3UzE2LjI0IDIyIDE5IDIyIDI0IDE5Ljc2IDI0IDE3IDIxLjc2IDEyIDE5IDEyTTE5IDIwLjVDMTcuMDcgMjAuNSAxNS41IDE4LjkzIDE1LjUgMTdTMTcuMDcgMTMuNSAxOSAxMy41IDIyLjUgMTUuMDcgMjIuNSAxNyAyMC45MyAyMC41IDE5IDIwLjVNNS4zMiAxMUgxQy40NDggMTEgMCAxMC41NSAwIDEwUy40NDggOSAxIDlINS4wNUM1LjAzIDkuMTYgNSA5LjMzIDUgOS41QzUgMTAuMDMgNS4xMiAxMC41NCA1LjMyIDExTTYgN0gyQzEuNDUgNyAxIDYuNTUgMSA2UzEuNDUgNSAyIDVINy45N0w2LjA5IDYuODdDNi4wNSA2LjkxIDYgNi45NiA2IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlsbGJvYXJkID0gXCJNMjAgMjJIMThWMTdIMjBNNiAyMkg0VjE3SDZNMjMgNFYxM0EyIDIgMCAwIDEgMjEgMTVIM0EyIDIgMCAwIDEgMSAxM1Y0QTIgMiAwIDAgMSAzIDJIMjFBMiAyIDAgMCAxIDIzIDRNMjEgNEgzVjEzSDIxTTIwIDZIMTVWOEgyME0xOCA5SDE1VjExSDE4TTE0IDExSDRMNi43MyA3LjM2TDguNzMgMTAuMDlMOS40NiA5LjU1TDguMiA3LjgyTDkuOTEgNS41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWxsaWFyZHMgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSw5SDEzVjExSDExTTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUEyLDIgMCAwLDAgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QTIsMiAwIDAsMCAxMSwxN00xMiwxQzUuOTIsMSAxLDUuOTIgMSwxMkMxLDE4LjA4IDUuOTIsMjMgMTIsMjNDMTguMDgsMjMgMjMsMTguMDggMjMsMTJDMjMsNS45MiAxOC4wOCwxIDEyLDFNMTIsMTlBNyw3IDAgMCwxIDUsMTJBNyw3IDAgMCwxIDEyLDVBNyw3IDAgMCwxIDE5LDEyQTcsNyAwIDAsMSAxMiwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWxsaWFyZHNSYWNrID0gXCJNMjAuMzEsMTYuNDRMMTQuNTQsNi40N0MxMy43Miw1LjA0IDExLjg5LDQuNTUgMTAuNDYsNS4zOEMxMCw1LjY0IDkuNjMsNiA5LjM2LDYuNDdMMy42LDE2LjQ0QzIuNzcsMTcuODcgMy4yNiwxOS42OSA0LjY5LDIwLjVDNS4xNCwyMC43OCA1LjY1LDIwLjkyIDYuMTgsMjAuOTJIMTcuNzNDMTkuMzgsMjAuOTEgMjAuNzIsMTkuNTcgMjAuNzEsMTcuOTJDMjAuNzEsMTcuNCAyMC41NywxNi44OSAyMC4zMSwxNi40NE01LjM3LDE3LjQzTDExLjExLDcuNDdDMTEuMzgsNyAxMiw2LjgyIDEyLjQ2LDcuMUMxMi42Miw3LjE4IDEyLjc1LDcuMzEgMTIuODQsNy40N0wxOC41OCwxNy40M0MxOC44NSwxNy45MSAxOC42OSwxOC41IDE4LjIxLDE4Ljc5QzE4LjA2LDE4Ljg4IDE3Ljg5LDE4LjkzIDE3LjcyLDE4LjkzSDYuMjFDNS42NiwxOC45MiA1LjIxLDE4LjQ3IDUuMjIsMTcuOTJDNS4yMiwxNy43NSA1LjI2LDE3LjU4IDUuMzUsMTcuNDNINS4zN00xMS45NywxMy40NUMxMC44NywxMy40NSAxMCwxMi41NiAxMCwxMS40NkMxMCwxMC4zNSAxMC44Nyw5LjQ2IDExLjk3LDkuNDZBMiwyIDAgMCwxIDEzLjk3LDExLjQ2QzEzLjk3LDEyLjU2IDEzLjA3LDEzLjQ1IDExLjk1LDEzLjQ1SDExLjk3TTkuNDYsMTcuOTNDOC4zNiwxNy45MyA3LjQ3LDE3LjA0IDcuNDcsMTUuOTRDNy40NywxNC44NCA4LjM2LDEzLjk1IDkuNDYsMTMuOTVDMTAuNTYsMTMuOTUgMTEuNDYsMTQuODQgMTEuNDYsMTUuOTRDMTEuNDYsMTcuMDQgMTAuNTYsMTcuOTMgOS40NiwxNy45M00xNC40NCwxNy45M0EyLDIgMCAwLDEgMTIuNDUsMTUuOTRBMiwyIDAgMCwxIDE0LjQ0LDEzLjk1QzE1LjU0LDEzLjk1IDE2LjQ0LDE0Ljg0IDE2LjQ0LDE1Ljk0QzE2LjQ0LDE3LjA0IDE1LjU0LDE3LjkzIDE0LjQ0LDE3LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpbm9jdWxhcnMgPSBcIk0xMSw2SDEzVjEzSDExVjZNOSwyMEExLDEgMCAwLDEgOCwyMUg1QTEsMSAwIDAsMSA0LDIwVjE1TDYsNkgxMFYxM0ExLDEgMCAwLDEgOSwxNFYyME0xMCw1SDdWM0gxMFY1TTE1LDIwVjE0QTEsMSAwIDAsMSAxNCwxM1Y2SDE4TDIwLDE1VjIwQTEsMSAwIDAsMSAxOSwyMUgxNkExLDEgMCAwLDEgMTUsMjBNMTQsNVYzSDE3VjVIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlvID0gXCJNMTcsMTJIMjBBMiwyIDAgMCwxIDIyLDE0VjE3QTIsMiAwIDAsMSAyMCwxOUgxN0EyLDIgMCAwLDEgMTUsMTdWMTRBMiwyIDAgMCwxIDE3LDEyTTE3LDE0VjE3SDIwVjE0SDE3TTIsN0g3QTIsMiAwIDAsMSA5LDlWMTFBMiwyIDAgMCwxIDcsMTNBMiwyIDAgMCwxIDksMTVWMTdBMiwyIDAgMCwxIDcsMTlIMlYxM0wyLDdNNCw5VjEySDdWOUg0TTQsMTdIN1YxNEg0VjE3TTExLDEzSDEzVjE5SDExVjEzTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaW9oYXphcmQgPSBcIk0yMywxNi4wNkMyMywxNi4yOSAyMywxNi41IDIyLjk2LDE2LjdDMjIuNzgsMTQuMTQgMjAuNjQsMTIuMTEgMTgsMTIuMTFDMTcuNjMsMTIuMTEgMTcuMjcsMTIuMTYgMTYuOTIsMTIuMjNDMTYuOTYsMTIuNSAxNywxMi43MyAxNywxM0MxNywxNS4zNSAxNS4zMSwxNy4zMiAxMy4wNywxNy44MUMxMy40MiwyMC4wNSAxNS4zMSwyMS43OSAxNy42NSwyMS45NkMxNy40MywyMiAxNy4yMiwyMiAxNywyMkMxNC45MiwyMiAxMy4wNywyMC45NCAxMiwxOS4zNEMxMC45MywyMC45NCA5LjA5LDIyIDcsMjJDNi43OCwyMiA2LjU3LDIyIDYuMzUsMjEuOTZDOC42OSwyMS43OSAxMC41NywyMC4wNiAxMC45MywxNy44MUM4LjY4LDE3LjMyIDcsMTUuMzUgNywxM0M3LDEyLjczIDcuMDQsMTIuNSA3LjA3LDEyLjIzQzYuNzMsMTIuMTYgNi4zNywxMi4xMSA2LDEyLjExQzMuMzYsMTIuMTEgMS4yMiwxNC4xNCAxLjAzLDE2LjdDMSwxNi41IDEsMTYuMjkgMSwxNi4wNkMxLDEyLjg1IDMuNTksMTAuMjQgNi44MSwxMC4xNEM2LjMsOS4yNyA2LDguMjUgNiw3LjE3QzYsNC45NCA3LjIzLDMgOS4wNiwyQzcuODEsMi45IDcsNC4zNCA3LDZDNyw3LjM1IDcuNTYsOC41OSA4LjQ3LDkuNUM5LjM4LDguNTkgMTAuNjIsOC4wNCAxMiw4LjA0QzEzLjM3LDguMDQgMTQuNjIsOC41OSAxNS41LDkuNUMxNi40Myw4LjU5IDE3LDcuMzUgMTcsNkMxNyw0LjM0IDE2LjE4LDIuOSAxNC45NCwyQzE2Ljc3LDMgMTgsNC45NCAxOCw3LjE3QzE4LDguMjUgMTcuNyw5LjI3IDE3LjE5LDEwLjE0QzIwLjQyLDEwLjI0IDIzLDEyLjg1IDIzLDE2LjA2TTkuMjcsMTAuMTFDMTAuMDUsMTAuNjIgMTEsMTAuOTIgMTIsMTAuOTJDMTMsMTAuOTIgMTMuOTUsMTAuNjIgMTQuNzMsMTAuMTFDMTQsOS40NSAxMy4wNiw5LjAzIDEyLDkuMDNDMTAuOTQsOS4wMyAxMCw5LjQ1IDkuMjcsMTAuMTFNMTIsMTQuNDdDMTIuODIsMTQuNDcgMTMuNSwxMy44IDEzLjUsMTNBMS41LDEuNSAwIDAsMCAxMiwxMS41QTEuNSwxLjUgMCAwLDAgMTAuNSwxM0MxMC41LDEzLjggMTEuMTcsMTQuNDcgMTIsMTQuNDdNMTAuOTcsMTYuNzlDMTAuODcsMTQuOSA5LjcxLDEzLjI5IDguMDUsMTIuNTVDOC4wMywxMi43IDgsMTIuODQgOCwxM0M4LDE0LjgyIDkuMjcsMTYuMzQgMTAuOTcsMTYuNzlNMTUuOTYsMTIuNTVDMTQuMjksMTMuMjkgMTMuMTIsMTQuOSAxMywxNi43OUMxNC43MywxNi4zNCAxNiwxNC44MiAxNiwxM0MxNiwxMi44NCAxNS45NywxMi43IDE1Ljk2LDEyLjU1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpcmQgPSBcIk0yMyAxMS41TDE5Ljk1IDEwLjM3QzE5LjY5IDkuMjIgMTkuMDQgOC41NiAxOS4wNCA4LjU2QzE3LjQgNi45MiAxNC43NSA2LjkyIDEzLjExIDguNTZMMTEuNjMgMTAuMDRMNSAzQzQgNyA1IDExIDcuNDUgMTQuMjJMMiAxOS41QzIgMTkuNSAxMC44OSAyMS41IDE2LjA3IDE3LjQ1QzE4LjgzIDE1LjI5IDE5LjQ1IDE0LjAzIDE5Ljg0IDEyLjdMMjMgMTEuNU0xNy43MSAxMS43MkMxNy4zMiAxMi4xMSAxNi42OCAxMi4xMSAxNi4yOSAxMS43MkMxNS45IDExLjMzIDE1LjkgMTAuNyAxNi4yOSAxMC4zMUMxNi42OCA5LjkyIDE3LjMyIDkuOTIgMTcuNzEgMTAuMzFDMTguMSAxMC43IDE4LjEgMTEuMzMgMTcuNzEgMTEuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQml0YnVja2V0ID0gXCJNMi42NSAzQzIuMyAzIDIgMy4zIDIgMy42NUMyIDMuNjkgMiAzLjczIDIgMy43N0w0LjczIDIwLjI3QzQuOCAyMC42OSA1LjE2IDIxIDUuNTggMjFIMTguNjNDMTguOTQgMjEgMTkuMjIgMjAuNzggMTkuMjcgMjAuNDZMMjIgMy43N0MyMi4wNSAzLjQyIDIxLjgxIDMuMDkgMjEuNDYgMy4wNEMyMS40MyAzLjAzIDIxLjM5IDMuMDMgMjEuMzUgMy4wM0wyLjY1IDNNMTQuMSAxNC45NUg5Ljk0TDguODEgOS4wN0gxNS4xMUwxNC4xIDE0Ljk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpdGNvaW4gPSBcIk0xNC4yNCAxMC41NkMxMy45MyAxMS44IDEyIDExLjE3IDExLjQgMTFMMTEuOTUgOC44MkMxMi41NyA5IDE0LjU2IDkuMjYgMTQuMjQgMTAuNTZNMTEuMTMgMTIuMTJMMTAuNTMgMTQuNTNDMTEuMjcgMTQuNzIgMTMuNTYgMTUuNDUgMTMuOSAxNC4wOUMxNC4yNiAxMi42NyAxMS44NyAxMi4zIDExLjEzIDEyLjEyTTIxLjcgMTQuNDJDMjAuMzYgMTkuNzggMTQuOTQgMjMuMDQgOS41OCAyMS43QzQuMjIgMjAuMzYgLjk2MyAxNC45NCAyLjMgOS41OEMzLjY0IDQuMjIgOS4wNiAuOTY0IDE0LjQyIDIuM0MxOS43NyAzLjY0IDIzLjAzIDkuMDYgMjEuNyAxNC40Mk0xNC4yMSA4LjA1TDE0LjY2IDYuMjVMMTMuNTYgNkwxMy4xMiA3LjczQzEyLjgzIDcuNjYgMTIuNTQgNy41OSAxMi4yNCA3LjUzTDEyLjY4IDUuNzZMMTEuNTkgNS41TDExLjE0IDcuMjlDMTAuOSA3LjIzIDEwLjY2IDcuMTggMTAuNDQgNy4xMkwxMC40NCA3LjEyTDguOTMgNi43NEw4LjYzIDcuOTFDOC42MyA3LjkxIDkuNDUgOC4xIDkuNDMgOC4xMUM5Ljg4IDguMjIgOS45NiA4LjUgOS45NCA4Ljc1TDguNzEgMTMuNjhDOC42NiAxMy44MiA4LjUgMTQgOC4yMSAxMy45NUM4LjIyIDEzLjk2IDcuNDEgMTMuNzUgNy40MSAxMy43NUw2Ljg3IDE1TDguMjkgMTUuMzZDOC41NiAxNS40MyA4LjgyIDE1LjUgOS4wOCAxNS41Nkw4LjYyIDE3LjM4TDkuNzIgMTcuNjZMMTAuMTcgMTUuODVDMTAuNDcgMTUuOTMgMTAuNzYgMTYgMTEuMDQgMTYuMDhMMTAuNTkgMTcuODdMMTEuNjkgMTguMTVMMTIuMTUgMTYuMzNDMTQgMTYuNjggMTUuNDIgMTYuNTQgMTYgMTQuODVDMTYuNSAxMy41IDE2IDEyLjcgMTUgMTIuMTlDMTUuNzIgMTIgMTYuMjYgMTEuNTUgMTYuNDEgMTAuNTdDMTYuNjEgOS4yNCAxNS41OSA4LjUzIDE0LjIxIDguMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxhY2tNZXNhID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjM5IDUuMDUsMTYuNTMgNi43MSwxOEg5VjEySDE3TDE5LjE1LDE1LjU5QzE5LjY5LDE0LjUgMjAsMTMuMjkgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxlbmRlciA9IFwiTTE5LDVIMTcuOEwxOCwySDRMNSw0SDZMNi45NCwxNi4xOUw1LDIySDE5TDE3LjA2LDE2LjE3TDE3LjIsMTRIMTlDMjAuMywxNCAyMSwxMi45NyAyMSwxMlY3QzIxLDUuNyAxOS45Nyw1IDE5LDVNMTIsMjBBMS41LDEuNSAwIDAsMSAxMC41LDE4LjVBMS41LDEuNSAwIDAsMSAxMiwxN0ExLjUsMS41IDAgMCwxIDEzLjUsMTguNUExLjUsMS41IDAgMCwxIDEyLDIwTTE1LjEzLDE1SDguODVMOC43LDEzSDEzVjEySDguNjJMOC40NywxMEgxM1Y5SDguMzlMOC4yNCw3SDEzVjZIOC4xNkw4LDRIMTUuODZMMTUuMTMsMTVNMTksMTJIMTcuMzNMMTcuNjcsN0gxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCbGVuZGVyU29mdHdhcmUgPSBcIk0xMi41OCwzLjEyVjMuMTNDMTIuMjcsMy4xMyAxMS45NiwzLjIyIDExLjcxLDMuMzlDMTEuMjEsMy43NCAxMS4xNSw0LjMyIDExLjYsNC42OUwxNC40Niw3TDUuNzMsNy4wM0g1LjcyQzUsNy4wMyA0LjMsNy41IDQuMTYsOC4xQzQsOC43MSA0LjUsOS4yMiA1LjI2LDkuMjJMOS42OSw5LjIxTDEuNzYsMTUuM0MxLDE1Ljg3IDAuNzcsMTYuODIgMS4yNCwxNy40MkMxLjcyLDE4LjAzIDIuNzMsMTguMDMgMy41LDE3LjQyTDcuOCwxMy44OUM3LjgsMTMuODkgNy43MywxNC4zNyA3Ljc0LDE0LjY1QzcuNzQsMTQuOTQgNy44NCwxNS41IDcuOTcsMTUuOTNDOC4yNiwxNi44NiA4Ljc1LDE3LjcxIDkuNDMsMTguNDZDMTAuMTMsMTkuMjMgMTEsMTkuODUgMTIsMjAuMjlDMTMuMDMsMjAuNzYgMTQuMTcsMjEgMTUuMzQsMjFDMTYuNSwyMSAxNy42NSwyMC43NSAxOC42OSwyMC4yOEMxOS42OSwxOS44NCAyMC41NSwxOS4yMSAyMS4yNSwxOC40NEMyMS45MywxNy42OSAyMi40MiwxNi44MyAyMi43MSwxNS45MUMyMi44NSwxNS40NCAyMi45NCwxNC45NyAyMywxNC41QzIzLDE0LjAzIDIzLDEzLjU2IDIyLjk0LDEzLjA5QzIyLjgxLDEyLjE4IDIyLjUsMTEuMzIgMjIsMTAuNTRDMjEuNTYsOS44MyAyMSw5LjIgMjAuMzEsOC42N1Y4LjY3TDEzLjQyLDMuMzhDMTMuMTksMy4yMSAxMi44OSwzLjEyIDEyLjU4LDMuMTJNMTUuMzQsOS4yMUMxNi41LDkuMjEgMTcuNTksOS41OSAxOC40NiwxMC4yOUMxOC45LDEwLjY1IDE5LjI1LDExLjA3IDE5LjUsMTEuNTRDMTkuNzcsMTIgMTkuOTQsMTIuNTUgMjAsMTMuMTFDMjAuMDQsMTMuNjcgMTkuOTYsMTQuMjMgMTkuNzcsMTQuNzdDMTkuNTcsMTUuMzEgMTkuMjUsMTUuODEgMTguODIsMTYuMjZDMTcuOTMsMTcuMTYgMTYuNjksMTcuNjggMTUuMzQsMTcuNjhDMTQsMTcuNjggMTIuNzUsMTcuMTcgMTEuODYsMTYuMjdDMTEuNDMsMTUuODMgMTEuMTEsMTUuMzIgMTAuOTEsMTQuNzhDMTAuNzIsMTQuMjUgMTAuNjQsMTMuNjkgMTAuNjksMTMuMTJDMTAuNzQsMTIuNTYgMTAuOTEsMTIuMDMgMTEuMTcsMTEuNTVDMTEuNDMsMTEuMDggMTEuNzksMTAuNjYgMTIuMjMsMTAuM0MxMy4wOSw5LjU5IDE0LjE5LDkuMjEgMTUuMzQsOS4yMU0xNS40NCwxMC42MUMxNC42NiwxMC42MSAxMy45NCwxMC44OSAxMy40MSwxMS4zNEMxMi44NywxMS44IDEyLjUsMTIuNDQgMTIuNDcsMTMuMThDMTIuNDMsMTMuOTMgMTIuNzMsMTQuNjMgMTMuMjYsMTUuMTVDMTMuOCwxNS42OCAxNC41OCwxNiAxNS40NCwxNkMxNi4zLDE2IDE3LjA3LDE1LjY4IDE3LjYyLDE1LjE1QzE4LjE1LDE0LjYzIDE4LjQ1LDEzLjkzIDE4LjQxLDEzLjE4QzE4LjM3LDEyLjQ0IDE4LDExLjggMTcuNDcsMTEuMzRDMTYuOTQsMTAuODkgMTYuMjIsMTAuNjEgMTUuNDQsMTAuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxpbmRzID0gXCJNMywySDIxQTEsMSAwIDAsMSAyMiwzVjVBMSwxIDAgMCwxIDIxLDZIMjBWMTNBMSwxIDAgMCwxIDE5LDE0SDEzVjE2LjE3QzE0LjE3LDE2LjU4IDE1LDE3LjY5IDE1LDE5QTMsMyAwIDAsMSAxMiwyMkEzLDMgMCAwLDEgOSwxOUM5LDE3LjY5IDkuODMsMTYuNTggMTEsMTYuMTdWMTRINUExLDEgMCAwLDEgNCwxM1Y2SDNBMSwxIDAgMCwxIDIsNVYzQTEsMSAwIDAsMSAzLDJNMTIsMThBMSwxIDAgMCwwIDExLDE5QTEsMSAwIDAsMCAxMiwyMEExLDEgMCAwLDAgMTMsMTlBMSwxIDAgMCwwIDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsaW5kc09wZW4gPSBcIk0zIDJIMjFDMjEuNTUgMiAyMiAyLjQ1IDIyIDNWNUMyMiA1LjU1IDIxLjU1IDYgMjEgNkgyMFY3QzIwIDcuNTUgMTkuNTUgOCAxOSA4SDEzVjEwLjE3QzE0LjE3IDEwLjU4IDE1IDExLjcgMTUgMTNDMTUgMTQuNjYgMTMuNjYgMTYgMTIgMTZDMTAuMzQgMTYgOSAxNC42NiA5IDEzQzkgMTEuNjkgOS44NCAxMC41OCAxMSAxMC4xN1Y4SDVDNC40NSA4IDQgNy41NSA0IDdWNkgzQzIuNDUgNiAyIDUuNTUgMiA1VjNDMiAyLjQ1IDIuNDUgMiAzIDJNMTIgMTJDMTEuNDUgMTIgMTEgMTIuNDUgMTEgMTNDMTEgMTMuNTUgMTEuNDUgMTQgMTIgMTRDMTIuNTUgMTQgMTMgMTMuNTUgMTMgMTNDMTMgMTIuNDUgMTIuNTUgMTIgMTIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxvY2tIZWxwZXIgPSBcIk0xMiwwQTEyLDEyIDAgMCwxIDI0LDEyQTEyLDEyIDAgMCwxIDEyLDI0QTEyLDEyIDAgMCwxIDAsMTJBMTIsMTIgMCAwLDEgMTIsME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNC40IDIuODUsMTYuNiA0LjI2LDE4LjMzTDE4LjMzLDQuMjZDMTYuNiwyLjg1IDE0LjQsMiAxMiwyTTEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDkuNiAyMS4xNSw3LjQgMTkuNzQsNS42N0w1LjY3LDE5Ljc0QzcuNCwyMS4xNSA5LjYsMjIgMTIsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxvZ2dlciA9IFwiTTEyLjUgMTBIMTBDOS40NSAxMCA5IDkuNTUgOSA5QzkgOC40NSA5LjQ1IDggMTAgOEgxMi41QzEzLjA1IDggMTMuNSA4LjQ1IDEzLjUgOUMxMy41IDkuNTUgMTMuMDUgMTAgMTIuNSAxME0xNSAxNEMxNSAxMy40NSAxNC41NSAxMyAxNCAxM0gxMEM5LjQ1IDEzIDkgMTMuNDUgOSAxNEM5IDE0LjU1IDkuNDUgMTUgMTAgMTVIMTRDMTQuNTUgMTUgMTUgMTQuNTUgMTUgMTRNMjIgNFYyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkg0QzIuODkgMjIgMiAyMS4xMSAyIDIwVjRDMiAyLjg5IDIuODkgMiA0IDJIMjBDMjEuMTEgMiAyMiAyLjg5IDIyIDRNMTggMTJDMTggMTIgMTggMTEgMTcgMTFDMTYuMDUgMTEuMDMgMTYgMTAgMTYgMTBMMTYgOEMxNiA2LjM0IDE0LjY2IDUgMTMgNUg5QzcuMzQgNSA2IDYuMzQgNiA4VjE1QzYgMTYuNjYgNy4zNCAxOCA5IDE4SDE1QzE2LjY2IDE4IDE4IDE2LjY2IDE4IDE1TDE4IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsb29kQmFnID0gXCJNMjEsN0MyMCw3IDIwLDYgMjAsNlY1SDE4VjdIMTZWNkMxNiw0LjI3IDE0Ljc1LDEgMTAsMUM1LjI1LDEgNCw0LjI3IDQsNlYxOUM0LDE5LjMzIDMuOSwyMSAyLDIxVjIzQzQuOTMsMjMgNiwyMC42MSA2LDE5VjZDNiw1Ljg4IDYuMDUsMyAxMCwzQzEzLjgzLDMgMTQsNS43IDE0LDZWN0gxMlY1SDEwVjZDMTAsNiAxMCw3IDksN0M4LDcgOCw4IDgsOFYyMEM4LDIwIDgsMjIgMTMsMjJDMTMuMjQsMjIgMTQuMTMsMjIgMTcsMjJDMjIsMjIgMjIsMjAgMjIsMjBWOEMyMiw4IDIyLDcgMjEsN00xNSwxOS40QTMsMyAwIDAsMSAxMiwxNi40QzEyLDE0LjQgMTUsMTEgMTUsMTFDMTUsMTEgMTgsMTQuNCAxOCwxNi40QTMsMyAwIDAsMSAxNSwxOS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdWV0b290aCA9IFwiTTE0Ljg4LDE2LjI5TDEzLDE4LjE3VjE0LjQxTTEzLDUuODNMMTQuODgsNy43MUwxMyw5LjU4TTE3LjcxLDcuNzFMMTIsMkgxMVY5LjU4TDYuNDEsNUw1LDYuNDFMMTAuNTksMTJMNSwxNy41OEw2LjQxLDE5TDExLDE0LjQxVjIySDEyTDE3LjcxLDE2LjI5TDEzLjQxLDEyTDE3LjcxLDcuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoQXVkaW8gPSBcIk0xMi44OCwxNi4yOUwxMSwxOC4xN1YxNC40MU0xMSw1LjgzTDEyLjg4LDcuNzFMMTEsOS41OE0xNS43MSw3LjcxTDEwLDJIOVY5LjU4TDQuNDEsNUwzLDYuNDFMOC41OSwxMkwzLDE3LjU4TDQuNDEsMTlMOSwxNC40MVYyMkgxMEwxNS43MSwxNi4yOUwxMS40MSwxMk0xOS41Myw2LjcxTDE4LjI2LDhDMTguODksOS4xOCAxOS4yNSwxMC41NSAxOS4yNSwxMkMxOS4yNSwxMy40NSAxOC44OSwxNC44MiAxOC4yNiwxNkwxOS40NiwxNy4yMkMyMC40MywxNS42OCAyMSwxMy44NyAyMSwxMS45MUMyMSwxMCAyMC40Niw4LjIzIDE5LjUzLDYuNzFNMTQuMjQsMTJMMTYuNTYsMTQuMzNDMTYuODQsMTMuNiAxNywxMi44MiAxNywxMkMxNywxMS4xOCAxNi44NCwxMC40IDE2LjU3LDkuNjhMMTQuMjQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoQ29ubmVjdCA9IFwiTTE5LDEwTDE3LDEyTDE5LDE0TDIxLDEyTTE0Ljg4LDE2LjI5TDEzLDE4LjE3VjE0LjQxTTEzLDUuODNMMTQuODgsNy43MUwxMyw5LjU4TTE3LjcxLDcuNzFMMTIsMkgxMVY5LjU4TDYuNDEsNUw1LDYuNDFMMTAuNTksMTJMNSwxNy41OEw2LjQxLDE5TDExLDE0LjQxVjIySDEyTDE3LjcxLDE2LjI5TDEzLjQxLDEyTTcsMTJMNSwxMEwzLDEyTDUsMTRMNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVldG9vdGhPZmYgPSBcIk0xMyw1LjgzTDE0Ljg4LDcuNzFMMTMuMjgsOS4zMUwxNC42OSwxMC43MkwxNy43MSw3LjdMMTIsMkgxMVY3LjAzTDEzLDkuMDNNNS40MSw0TDQsNS40MUwxMC41OSwxMkw1LDE3LjU5TDYuNDEsMTlMMTEsMTQuNDFWMjJIMTJMMTYuMjksMTcuNzFMMTguNTksMjBMMjAsMTguNTlNMTMsMTguMTdWMTQuNDFMMTQuODgsMTYuMjlcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVldG9vdGhTZXR0aW5ncyA9IFwiTTE0Ljg4LDE0LjI5TDEzLDE2LjE3VjEyLjQxTDE0Ljg4LDE0LjI5TTEzLDMuODNMMTQuODgsNS43MUwxMyw3LjU5TTE3LjcxLDUuNzFMMTIsMEgxMVY3LjU5TDYuNDEsM0w1LDQuNDFMMTAuNTksMTBMNSwxNS41OUw2LjQxLDE3TDExLDEyLjQxVjIwSDEyTDE3LjcxLDE0LjI5TDEzLjQxLDEwTDE3LjcxLDUuNzFNMTUsMjRIMTdWMjJIMTVNNywyNEg5VjIySDdNMTEsMjRIMTNWMjJIMTFWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoVHJhbnNmZXIgPSBcIk0xNC43MSw3LjcxTDEwLjQxLDEyTDE0LjcxLDE2LjI5TDksMjJIOFYxNC40MUwzLjQxLDE5TDIsMTcuNTlMNy41OSwxMkwyLDYuNDFMMy40MSw1TDgsOS41OVYySDlMMTQuNzEsNy43MU0xMCw1LjgzVjkuNTlMMTEuODgsNy43MUwxMCw1LjgzTTExLjg4LDE2LjI5TDEwLDE0LjQxVjE4LjE3TDExLjg4LDE2LjI5TTIyLDhIMjBWMTFIMThWOEgxNkwxOSw0TDIyLDhNMjIsMTZMMTksMjBMMTYsMTZIMThWMTNIMjBWMTZIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ciA9IFwiTTE0LDguNUExLjUsMS41IDAgMCwwIDEyLjUsMTBBMS41LDEuNSAwIDAsMCAxNCwxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE0LDguNU0xNCwxMi41QTEuNSwxLjUgMCAwLDAgMTIuNSwxNEExLjUsMS41IDAgMCwwIDE0LDE1LjVBMS41LDEuNSAwIDAsMCAxNS41LDE0QTEuNSwxLjUgMCAwLDAgMTQsMTIuNU0xMCwxN0ExLDEgMCAwLDAgOSwxOEExLDEgMCAwLDAgMTAsMTlBMSwxIDAgMCwwIDExLDE4QTEsMSAwIDAsMCAxMCwxN00xMCw4LjVBMS41LDEuNSAwIDAsMCA4LjUsMTBBMS41LDEuNSAwIDAsMCAxMCwxMS41QTEuNSwxLjUgMCAwLDAgMTEuNSwxMEExLjUsMS41IDAgMCwwIDEwLDguNU0xNCwyMC41QTAuNSwwLjUgMCAwLDAgMTMuNSwyMUEwLjUsMC41IDAgMCwwIDE0LDIxLjVBMC41LDAuNSAwIDAsMCAxNC41LDIxQTAuNSwwLjUgMCAwLDAgMTQsMjAuNU0xNCwxN0ExLDEgMCAwLDAgMTMsMThBMSwxIDAgMCwwIDE0LDE5QTEsMSAwIDAsMCAxNSwxOEExLDEgMCAwLDAgMTQsMTdNMjEsMTMuNUEwLjUsMC41IDAgMCwwIDIwLjUsMTRBMC41LDAuNSAwIDAsMCAyMSwxNC41QTAuNSwwLjUgMCAwLDAgMjEuNSwxNEEwLjUsMC41IDAgMCwwIDIxLDEzLjVNMTgsNUExLDEgMCAwLDAgMTcsNkExLDEgMCAwLDAgMTgsN0ExLDEgMCAwLDAgMTksNkExLDEgMCAwLDAgMTgsNU0xOCw5QTEsMSAwIDAsMCAxNywxMEExLDEgMCAwLDAgMTgsMTFBMSwxIDAgMCwwIDE5LDEwQTEsMSAwIDAsMCAxOCw5TTE4LDE3QTEsMSAwIDAsMCAxNywxOEExLDEgMCAwLDAgMTgsMTlBMSwxIDAgMCwwIDE5LDE4QTEsMSAwIDAsMCAxOCwxN00xOCwxM0ExLDEgMCAwLDAgMTcsMTRBMSwxIDAgMCwwIDE4LDE1QTEsMSAwIDAsMCAxOSwxNEExLDEgMCAwLDAgMTgsMTNNMTAsMTIuNUExLjUsMS41IDAgMCwwIDguNSwxNEExLjUsMS41IDAgMCwwIDEwLDE1LjVBMS41LDEuNSAwIDAsMCAxMS41LDE0QTEuNSwxLjUgMCAwLDAgMTAsMTIuNU0xMCw3QTEsMSAwIDAsMCAxMSw2QTEsMSAwIDAsMCAxMCw1QTEsMSAwIDAsMCA5LDZBMSwxIDAgMCwwIDEwLDdNMTAsMy41QTAuNSwwLjUgMCAwLDAgMTAuNSwzQTAuNSwwLjUgMCAwLDAgMTAsMi41QTAuNSwwLjUgMCAwLDAgOS41LDNBMC41LDAuNSAwIDAsMCAxMCwzLjVNMTAsMjAuNUEwLjUsMC41IDAgMCwwIDkuNSwyMUEwLjUsMC41IDAgMCwwIDEwLDIxLjVBMC41LDAuNSAwIDAsMCAxMC41LDIxQTAuNSwwLjUgMCAwLDAgMTAsMjAuNU0zLDEzLjVBMC41LDAuNSAwIDAsMCAyLjUsMTRBMC41LDAuNSAwIDAsMCAzLDE0LjVBMC41LDAuNSAwIDAsMCAzLjUsMTRBMC41LDAuNSAwIDAsMCAzLDEzLjVNMTQsMy41QTAuNSwwLjUgMCAwLDAgMTQuNSwzQTAuNSwwLjUgMCAwLDAgMTQsMi41QTAuNSwwLjUgMCAwLDAgMTMuNSwzQTAuNSwwLjUgMCAwLDAgMTQsMy41TTE0LDdBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDEzLDZBMSwxIDAgMCwwIDE0LDdNMjEsMTAuNUEwLjUsMC41IDAgMCwwIDIxLjUsMTBBMC41LDAuNSAwIDAsMCAyMSw5LjVBMC41LDAuNSAwIDAsMCAyMC41LDEwQTAuNSwwLjUgMCAwLDAgMjEsMTAuNU02LDVBMSwxIDAgMCwwIDUsNkExLDEgMCAwLDAgNiw3QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDYsNU0zLDkuNUEwLjUsMC41IDAgMCwwIDIuNSwxMEEwLjUsMC41IDAgMCwwIDMsMTAuNUEwLjUsMC41IDAgMCwwIDMuNSwxMEEwLjUsMC41IDAgMCwwIDMsOS41TTYsOUExLDEgMCAwLDAgNSwxMEExLDEgMCAwLDAgNiwxMUExLDEgMCAwLDAgNywxMEExLDEgMCAwLDAgNiw5TTYsMTdBMSwxIDAgMCwwIDUsMThBMSwxIDAgMCwwIDYsMTlBMSwxIDAgMCwwIDcsMThBMSwxIDAgMCwwIDYsMTdNNiwxM0ExLDEgMCAwLDAgNSwxNEExLDEgMCAwLDAgNiwxNUExLDEgMCAwLDAgNywxNEExLDEgMCAwLDAgNiwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVyTGluZWFyID0gXCJNMTMsMTdBMSwxIDAgMCwwIDE0LDE2QTEsMSAwIDAsMCAxMywxNUExLDEgMCAwLDAgMTIsMTZBMSwxIDAgMCwwIDEzLDE3TTEzLDEzQTEsMSAwIDAsMCAxNCwxMkExLDEgMCAwLDAgMTMsMTFBMSwxIDAgMCwwIDEyLDEyQTEsMSAwIDAsMCAxMywxM00xMyw5QTEsMSAwIDAsMCAxNCw4QTEsMSAwIDAsMCAxMyw3QTEsMSAwIDAsMCAxMiw4QTEsMSAwIDAsMCAxMyw5TTE3LDEyLjVBMC41LDAuNSAwIDAsMCAxNy41LDEyQTAuNSwwLjUgMCAwLDAgMTcsMTEuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTJBMC41LDAuNSAwIDAsMCAxNywxMi41TTE3LDguNUEwLjUsMC41IDAgMCwwIDE3LjUsOEEwLjUsMC41IDAgMCwwIDE3LDcuNUEwLjUsMC41IDAgMCwwIDE2LjUsOEEwLjUsMC41IDAgMCwwIDE3LDguNU0zLDNWNUgyMVYzTTE3LDE2LjVBMC41LDAuNSAwIDAsMCAxNy41LDE2QTAuNSwwLjUgMCAwLDAgMTcsMTUuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTZBMC41LDAuNSAwIDAsMCAxNywxNi41TTksMTdBMSwxIDAgMCwwIDEwLDE2QTEsMSAwIDAsMCA5LDE1QTEsMSAwIDAsMCA4LDE2QTEsMSAwIDAsMCA5LDE3TTUsMTMuNUExLjUsMS41IDAgMCwwIDYuNSwxMkExLjUsMS41IDAgMCwwIDUsMTAuNUExLjUsMS41IDAgMCwwIDMuNSwxMkExLjUsMS41IDAgMCwwIDUsMTMuNU01LDkuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgNSw2LjVBMS41LDEuNSAwIDAsMCAzLjUsOEExLjUsMS41IDAgMCwwIDUsOS41TTMsMjFIMjFWMTlIM005LDlBMSwxIDAgMCwwIDEwLDhBMSwxIDAgMCwwIDksN0ExLDEgMCAwLDAgOCw4QTEsMSAwIDAsMCA5LDlNOSwxM0ExLDEgMCAwLDAgMTAsMTJBMSwxIDAgMCwwIDksMTFBMSwxIDAgMCwwIDgsMTJBMSwxIDAgMCwwIDksMTNNNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNC41QTEuNSwxLjUgMCAwLDAgMy41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdXJPZmYgPSBcIk0zLDEzLjVBMC41LDAuNSAwIDAsMCAyLjUsMTRBMC41LDAuNSAwIDAsMCAzLDE0LjVBMC41LDAuNSAwIDAsMCAzLjUsMTRBMC41LDAuNSAwIDAsMCAzLDEzLjVNNiwxN0ExLDEgMCAwLDAgNSwxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywxOEExLDEgMCAwLDAgNiwxN00xMCwyMC41QTAuNSwwLjUgMCAwLDAgOS41LDIxQTAuNSwwLjUgMCAwLDAgMTAsMjEuNUEwLjUsMC41IDAgMCwwIDEwLjUsMjFBMC41LDAuNSAwIDAsMCAxMCwyMC41TTMsOS41QTAuNSwwLjUgMCAwLDAgMi41LDEwQTAuNSwwLjUgMCAwLDAgMywxMC41QTAuNSwwLjUgMCAwLDAgMy41LDEwQTAuNSwwLjUgMCAwLDAgMyw5LjVNNiwxM0ExLDEgMCAwLDAgNSwxNEExLDEgMCAwLDAgNiwxNUExLDEgMCAwLDAgNywxNEExLDEgMCAwLDAgNiwxM00yMSwxMy41QTAuNSwwLjUgMCAwLDAgMjAuNSwxNEEwLjUsMC41IDAgMCwwIDIxLDE0LjVBMC41LDAuNSAwIDAsMCAyMS41LDE0QTAuNSwwLjUgMCAwLDAgMjEsMTMuNU0xMCwxN0ExLDEgMCAwLDAgOSwxOEExLDEgMCAwLDAgMTAsMTlBMSwxIDAgMCwwIDExLDE4QTEsMSAwIDAsMCAxMCwxN00yLjUsNS4yN0w2LjI4LDkuMDVMNiw5QTEsMSAwIDAsMCA1LDEwQTEsMSAwIDAsMCA2LDExQTEsMSAwIDAsMCA3LDEwQzcsOS45IDYuOTcsOS44MSA2Ljk0LDkuNzJMOS43NSwxMi41M0M5LjA0LDEyLjY0IDguNSwxMy4yNiA4LjUsMTRBMS41LDEuNSAwIDAsMCAxMCwxNS41QzEwLjc0LDE1LjUgMTEuMzYsMTQuOTYgMTEuNDcsMTQuMjVMMTQuMjgsMTcuMDZDMTQuMTksMTcuMDMgMTQuMSwxNyAxNCwxN0ExLDEgMCAwLDAgMTMsMThBMSwxIDAgMCwwIDE0LDE5QTEsMSAwIDAsMCAxNSwxOEMxNSwxNy45IDE0Ljk3LDE3LjgxIDE0Ljk0LDE3LjcyTDE4LjcyLDIxLjVMMjAsMjAuMjNMMy43Nyw0TDIuNSw1LjI3TTE0LDIwLjVBMC41LDAuNSAwIDAsMCAxMy41LDIxQTAuNSwwLjUgMCAwLDAgMTQsMjEuNUEwLjUsMC41IDAgMCwwIDE0LjUsMjFBMC41LDAuNSAwIDAsMCAxNCwyMC41TTE4LDdBMSwxIDAgMCwwIDE5LDZBMSwxIDAgMCwwIDE4LDVBMSwxIDAgMCwwIDE3LDZBMSwxIDAgMCwwIDE4LDdNMTgsMTFBMSwxIDAgMCwwIDE5LDEwQTEsMSAwIDAsMCAxOCw5QTEsMSAwIDAsMCAxNywxMEExLDEgMCAwLDAgMTgsMTFNMTgsMTVBMSwxIDAgMCwwIDE5LDE0QTEsMSAwIDAsMCAxOCwxM0ExLDEgMCAwLDAgMTcsMTRBMSwxIDAgMCwwIDE4LDE1TTEwLDdBMSwxIDAgMCwwIDExLDZBMSwxIDAgMCwwIDEwLDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsN00yMSwxMC41QTAuNSwwLjUgMCAwLDAgMjEuNSwxMEEwLjUsMC41IDAgMCwwIDIxLDkuNUEwLjUsMC41IDAgMCwwIDIwLjUsMTBBMC41LDAuNSAwIDAsMCAyMSwxMC41TTEwLDMuNUEwLjUsMC41IDAgMCwwIDEwLjUsM0EwLjUsMC41IDAgMCwwIDEwLDIuNUEwLjUsMC41IDAgMCwwIDkuNSwzQTAuNSwwLjUgMCAwLDAgMTAsMy41TTE0LDMuNUEwLjUsMC41IDAgMCwwIDE0LjUsM0EwLjUsMC41IDAgMCwwIDE0LDIuNUEwLjUsMC41IDAgMCwwIDEzLjUsM0EwLjUsMC41IDAgMCwwIDE0LDMuNU0xMy44LDExLjVIMTRBMS41LDEuNSAwIDAsMCAxNS41LDEwQTEuNSwxLjUgMCAwLDAgMTQsOC41QTEuNSwxLjUgMCAwLDAgMTIuNSwxMFYxMC4yQzEyLjYxLDEwLjg3IDEzLjEzLDExLjM5IDEzLjgsMTEuNU0xNCw3QTEsMSAwIDAsMCAxNSw2QTEsMSAwIDAsMCAxNCw1QTEsMSAwIDAsMCAxMyw2QTEsMSAwIDAsMCAxNCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdXJSYWRpYWwgPSBcIk0xNCwxM0ExLDEgMCAwLDAgMTMsMTRBMSwxIDAgMCwwIDE0LDE1QTEsMSAwIDAsMCAxNSwxNEExLDEgMCAwLDAgMTQsMTNNMTQsMTYuNUEwLjUsMC41IDAgMCwwIDEzLjUsMTdBMC41LDAuNSAwIDAsMCAxNCwxNy41QTAuNSwwLjUgMCAwLDAgMTQuNSwxN0EwLjUsMC41IDAgMCwwIDE0LDE2LjVNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNyw5LjVBMC41LDAuNSAwIDAsMCAxNi41LDEwQTAuNSwwLjUgMCAwLDAgMTcsMTAuNUEwLjUsMC41IDAgMCwwIDE3LjUsMTBBMC41LDAuNSAwIDAsMCAxNyw5LjVNMTcsMTMuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTRBMC41LDAuNSAwIDAsMCAxNywxNC41QTAuNSwwLjUgMCAwLDAgMTcuNSwxNEEwLjUsMC41IDAgMCwwIDE3LDEzLjVNMTQsNy41QTAuNSwwLjUgMCAwLDAgMTQuNSw3QTAuNSwwLjUgMCAwLDAgMTQsNi41QTAuNSwwLjUgMCAwLDAgMTMuNSw3QTAuNSwwLjUgMCAwLDAgMTQsNy41TTE0LDlBMSwxIDAgMCwwIDEzLDEwQTEsMSAwIDAsMCAxNCwxMUExLDEgMCAwLDAgMTUsMTBBMSwxIDAgMCwwIDE0LDlNMTAsNy41QTAuNSwwLjUgMCAwLDAgMTAuNSw3QTAuNSwwLjUgMCAwLDAgMTAsNi41QTAuNSwwLjUgMCAwLDAgOS41LDdBMC41LDAuNSAwIDAsMCAxMCw3LjVNNywxMy41QTAuNSwwLjUgMCAwLDAgNi41LDE0QTAuNSwwLjUgMCAwLDAgNywxNC41QTAuNSwwLjUgMCAwLDAgNy41LDE0QTAuNSwwLjUgMCAwLDAgNywxMy41TTEwLDE2LjVBMC41LDAuNSAwIDAsMCA5LjUsMTdBMC41LDAuNSAwIDAsMCAxMCwxNy41QTAuNSwwLjUgMCAwLDAgMTAuNSwxN0EwLjUsMC41IDAgMCwwIDEwLDE2LjVNNyw5LjVBMC41LDAuNSAwIDAsMCA2LjUsMTBBMC41LDAuNSAwIDAsMCA3LDEwLjVBMC41LDAuNSAwIDAsMCA3LjUsMTBBMC41LDAuNSAwIDAsMCA3LDkuNU0xMCwxM0ExLDEgMCAwLDAgOSwxNEExLDEgMCAwLDAgMTAsMTVBMSwxIDAgMCwwIDExLDE0QTEsMSAwIDAsMCAxMCwxM00xMCw5QTEsMSAwIDAsMCA5LDEwQTEsMSAwIDAsMCAxMCwxMUExLDEgMCAwLDAgMTEsMTBBMSwxIDAgMCwwIDEwLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9sbmlzaUNyb3NzID0gXCJNMjIsN0wyMS41LDYuNUMxOS45Myw4IDE4LjQ3LDkuNCAxNi45MywxMC4xOEMxNS41LDEwLjkxIDE0LjQ0LDEwLjkxIDEzLDExQzEzLjA5LDkuNTYgMTMuMDksOC41IDEzLjgyLDcuMDdDMTQuNiw1LjUzIDE2LDQuMDcgMTcuNSwyLjVMMTcsMkMxNS4zMiwzLjIzIDEzLjY0LDMuODMgMTIsMy44M0MxMC4zNiwzLjgzIDguNjgsMy4yMyA3LDJMNi41LDIuNUM4LDQuMDcgOS40LDUuNTMgMTAuMTgsNy4wN0MxMC45MSw4LjUgMTAuOTEsOS41NiAxMSwxMUM5LjU2LDEwLjkxIDguNSwxMC45MSA3LjA3LDEwLjE4QzUuNTMsOS40IDQuMDYsOCAyLjUsNi41TDIsN0MzLjIzLDguNjggMy44MywxMC4zNiAzLjgzLDEyQzMuODMsMTMuNjQgMy4yMywxNS4zMiAyLDE3TDIuNSwxNy41QzQuMDcsMTYgNS41MywxNC42IDcuMDcsMTMuODJDOC41LDEzLjA5IDkuNTYsMTMuMDkgMTEsMTNDMTAuOTEsMTQuNDQgMTAuOTEsMTUuNSAxMC4xOCwxNi45M0M5LjQsMTguNDcgOCwxOS45MyA2LjUsMjEuNUw3LDIyQzguNjgsMjAuNzcgMTAuMzYsMjAuMTcgMTIsMjAuMTdDMTMuNjQsMjAuMTcgMTUuMzIsMjAuNzcgMTcsMjJMMTcuNSwyMS41QzE2LDE5LjkzIDE0LjYsMTguNDcgMTMuODIsMTYuOTNDMTMuMDksMTUuNSAxMy4wOSwxNC40NCAxMywxM0MxNC40NCwxMy4wOSAxNS41LDEzLjA5IDE2LjkzLDEzLjgyQzE4LjQ3LDE0LjYgMTkuOTMsMTYgMjEuNSwxNy41TDIyLDE3QzIwLjc3LDE1LjMyIDIwLjE3LDEzLjY0IDIwLjE3LDEyQzIwLjE3LDEwLjM2IDIwLjc3LDguNjggMjIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb2x0ID0gXCJNMTQsMTcuN1YyMUgxMFYyMC4zTDE0LDE3LjdNMTcsM0g3VjZIMTdWM00xNSw3TDE0LDcuN1Y3SDEwVjEwLjNMOSwxMVYxMkwxNSw4LjFWN00xNSwxMUwxNCwxMS43VjkuN0wxMCwxMi40VjE0LjRMOSwxNVYxNkwxNSwxMi4xVjExTTE1LDE1TDE0LDE1LjdWMTMuN0wxMCwxNi40VjE4LjRMOSwxOVYyMEwxNSwxNi4xVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvbWIgPSBcIk0xMS4yNSw2QTMuMjUsMy4yNSAwIDAsMSAxNC41LDIuNzVBMy4yNSwzLjI1IDAgMCwxIDE3Ljc1LDZDMTcuNzUsNi40MiAxOC4wOCw2Ljc1IDE4LjUsNi43NUMxOC45Miw2Ljc1IDE5LjI1LDYuNDIgMTkuMjUsNlY1LjI1SDIwLjc1VjZBMi4yNSwyLjI1IDAgMCwxIDE4LjUsOC4yNUEyLjI1LDIuMjUgMCAwLDEgMTYuMjUsNkExLjc1LDEuNzUgMCAwLDAgMTQuNSw0LjI1QTEuNzUsMS43NSAwIDAsMCAxMi43NSw2SDE0VjcuMjlDMTYuODksOC4xNSAxOSwxMC44MyAxOSwxNEE3LDcgMCAwLDEgMTIsMjFBNyw3IDAgMCwxIDUsMTRDNSwxMC44MyA3LjExLDguMTUgMTAsNy4yOVY2SDExLjI1TTIyLDZIMjRWN0gyMlY2TTE5LDRWMkgyMFY0SDE5TTIwLjkxLDQuMzhMMjIuMzMsMi45NkwyMy4wNCwzLjY3TDIxLjYyLDUuMDlMMjAuOTEsNC4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb21iT2ZmID0gXCJNMTQuNSwyLjc1QzEyLjcsMi43NSAxMS4yNSw0LjIgMTEuMjUsNkgxMFY3LjI5QzkuMzEsNy41IDguNjcsNy44MSA4LjA4LDguMkwxNy43OSwxNy45MUMxOC41OCwxNi43NiAxOSwxNS4zOSAxOSwxNEMxOSwxMC44MyAxNi44OSw4LjE1IDE0LDcuMjlWNkgxMi43NUExLjc1LDEuNzUgMCAwLDEgMTQuNSw0LjI1QTEuNzUsMS43NSAwIDAsMSAxNi4yNSw2QTIuMjUsMi4yNSAwIDAsMCAxOC41LDguMjVDMTkuNzQsOC4yNSAyMC43NCw3LjI0IDIwLjc0LDZWNS4yNUgxOS4yNVY2QzE5LjI1LDYuNDIgMTguOTEsNi43NSAxOC41LDYuNzVDMTguMDgsNi43NSAxNy43NSw2LjQyIDE3Ljc1LDZDMTcuNzUsNC4yIDE2LjI5LDIuNzUgMTQuNSwyLjc1TTMuNDEsNi4zNkwyLDcuNzdMNS41NSwxMS4zMkM1LjIsMTIuMTQgNSwxMy4wNCA1LDE0QzUsMTcuODYgOC4xMywyMSAxMiwyMUMxMi45MiwyMSAxMy44MywyMC44MSAxNC42OCwyMC40NUwxOC4yMywyNEwxOS42NCwyMi41OUwzLjQxLDYuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9uZSA9IFwiTTgsMTRBMywzIDAgMCwxIDUsMTdBMywzIDAgMCwxIDIsMTRDMiwxMy4yMyAyLjI5LDEyLjUzIDIuNzYsMTJDMi4yOSwxMS40NyAyLDEwLjc3IDIsMTBBMywzIDAgMCwxIDUsN0EzLDMgMCAwLDEgOCwxMEM5LjMzLDEwLjA4IDEwLjY3LDEwLjE3IDEyLDEwLjE3QzEzLjMzLDEwLjE3IDE0LjY3LDEwLjA4IDE2LDEwQTMsMyAwIDAsMSAxOSw3QTMsMyAwIDAsMSAyMiwxMEMyMiwxMC43NyAyMS43MSwxMS40NyAyMS4yNCwxMkMyMS43MSwxMi41MyAyMiwxMy4yMyAyMiwxNEEzLDMgMCAwLDEgMTksMTdBMywzIDAgMCwxIDE2LDE0QzE0LjY3LDEzLjkyIDEzLjMzLDEzLjgzIDEyLDEzLjgzQzEwLjY3LDEzLjgzIDkuMzMsMTMuOTIgOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rID0gXCJNMTgsMjJBMiwyIDAgMCwwIDIwLDIwVjRDMjAsMi44OSAxOS4xLDIgMTgsMkgxMlY5TDkuNSw3LjVMNyw5VjJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBY2NvdW50ID0gXCJNMTggMkgxMlY5TDkuNSA3LjVMNyA5VjJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY0QTIgMiAwIDAgMCAxOCAyTTE0IDEyQTIgMiAwIDEgMSAxMiAxNEEyIDIgMCAwIDEgMTQgMTJNMTggMjBIMTBWMTlDMTAgMTcuNjcgMTIuNjcgMTcgMTQgMTdTMTggMTcuNjcgMTggMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FjY291bnRPdXRsaW5lID0gXCJNMTggMkEyIDIgMCAwIDEgMjAgNFYyMEEyIDIgMCAwIDEgMTggMjJINkEyIDIgMCAwIDEgNCAyMFY0QTIgMiAwIDAgMSA2IDJIMThNMTggNEgxM1Y5TDEwLjUgNi43TDggOVY0SDZWMjBIMThNMTMgMTFBMiAyIDAgMSAxIDExIDEzQTIgMiAwIDAgMSAxMyAxMU0xNyAxOUg5VjE4QzkgMTYuNjcgMTEuNjcgMTYgMTMgMTZTMTcgMTYuNjcgMTcgMThWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQWxlcnQgPSBcIk0xOCA0VjIwQzE4IDIxLjExIDE3LjExIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMkg1VjlMNy41IDcuNUwxMCA5VjJIMTZDMTcuMSAyIDE4IDIuODkgMTggNE0yMCAxN0gyMlYxNUgyMFYxN00yMCA3VjEzSDIyVjdIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FsZXJ0T3V0bGluZSA9IFwiTTE2IDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNMTYgMjBINFY0SDZWMTJMOC41IDkuNzVMMTEgMTJWNEgxNlYyME0yMCAxNUgyMlYxN0gyMFYxNU0yMiA3VjEzSDIwVjdIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FscGhhYmV0ID0gXCJNNS44MSwyQzQuODMsMi4wOSA0LDMgNCw0VjIwQzQsMjEuMDUgNC45NSwyMiA2LDIySDE4QzE5LjA1LDIyIDIwLDIxLjA1IDIwLDIwVjRDMjAsMi44OSAxOS4xLDIgMTgsMkgxMlY5TDkuNSw3LjVMNyw5VjJINkM1Ljk0LDIgNS44NywyIDUuODEsMk0xMiwxM0gxM0ExLDEgMCAwLDEgMTQsMTRWMThIMTNWMTZIMTJWMThIMTFWMTRBMSwxIDAgMCwxIDEyLDEzTTEyLDE0VjE1SDEzVjE0SDEyTTE1LDE1SDE4VjE2TDE2LDE5SDE4VjIwSDE1VjE5TDE3LDE2SDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd0Rvd24gPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjAgMjBWMTZIMThWMjBIMTZMMTkgMjNMMjIgMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93RG93bk91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTIwIDIwVjE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd0xlZnQgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTggMThWMTZMMTUgMTlMMTggMjJWMjBIMjJWMThIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93TGVmdE91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTE4IDE4VjE2TDE1IDE5TDE4IDIyVjIwSDIyVjE4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd1JpZ2h0ID0gXCJNMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEyIDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd1JpZ2h0T3V0bGluZSA9IFwiTTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTMuMDlNMjMgMTlMMjAgMTZWMThIMTZWMjBIMjBWMjJMMjMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93VXAgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTkgMTVMMTYgMThIMThWMjJIMjBWMThIMjJMMTkgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93VXBPdXRsaW5lID0gXCJNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxOC42NiAxMyAxOC4zMyAxMy4wNCAxOCAxMy4wOVY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wOU0xOSAxNUwxNiAxOEgxOFYyMkgyMFYxOEgyMkwxOSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2FuY2VsID0gXCJNMTIgMTguNUMxMiAxOS43OSAxMi4zOSAyMSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMi4xOEMxOS41IDEyLjA3IDE5IDEyIDE4LjUgMTJDMTQuOTEgMTIgMTIgMTQuOTEgMTIgMTguNU0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NhbmNlbE91dGxpbmUgPSBcIk0xMi4xOCAyMEMxMi4zNiAyMC43MiAxMi42NSAyMS4zOSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEyLjE4QzE5LjUgMTIuMDcgMTkgMTIgMTguNSAxMkMxOC4zMyAxMiAxOC4xNyAxMiAxOCAxMi4wM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMi4xOE0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NoZWNrID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk02IDIyQzQuODkgMjIgNCAyMS4xIDQgMjBWNEM0IDIuODkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMy4zNEMxOS4zNyAxMy4xMiAxOC43IDEzIDE4IDEzQzE0LjY5IDEzIDEyIDE1LjY5IDEyIDE5QzEyIDIwLjA5IDEyLjI5IDIxLjEyIDEyLjggMjJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2hlY2tPdXRsaW5lID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk0xOCAyQzE5LjEgMiAyMCAyLjkgMjAgNFYxMy4zNEMxOS4zNyAxMy4xMiAxOC43IDEzIDE4IDEzVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEyLjA4QzEyLjIgMjAuNzIgMTIuNDUgMjEuMzkgMTIuOCAyMkg2QzQuOSAyMiA0IDIxLjEgNCAyMFY0QzQgMi45IDQuOSAyIDYgMkgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2xvY2sgPSBcIk0xNi41IDE3LjI1TDE5LjM2IDE4Ljk0TDE4LjYxIDIwLjE2TDE1IDE4VjEzSDE2LjVWMTcuMjVNMjMgMTdDMjMgMjAuODcgMTkuODcgMjQgMTYgMjRDMTQuMDkgMjQgMTIuMzcgMjMuMjQgMTEuMTEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTEuMjZDMjEuODEgMTIuNTMgMjMgMTQuNjIgMjMgMTdNMjEgMTdDMjEgMTQuMjQgMTguNzYgMTIgMTYgMTJTMTEgMTQuMjQgMTEgMTcgMTMuMjQgMjIgMTYgMjIgMjEgMTkuNzYgMjEgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Nsb2NrT3V0bGluZSA9IFwiTTIwIDExLjI2VjRDMjAgMi45IDE5LjExIDIgMTggMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTEuMTFDMTIuMzcgMjMuMjQgMTQuMDkgMjQgMTYgMjRDMTkuODcgMjQgMjMgMjAuODcgMjMgMTdDMjMgMTQuNjIgMjEuODEgMTIuNTMgMjAgMTEuMjZNMTggNFYxMC4yOUMxNy4zNyAxMC4xMSAxNi43IDEwIDE2IDEwQzE0LjkzIDEwIDEzLjkxIDEwLjI1IDEzIDEwLjY4VjRIMThNNiA0SDhWMTJMMTAuNSA5Ljc1TDEyLjEgMTEuMTlDMTAuMjMgMTIuNDUgOSAxNC41OCA5IDE3QzkgMTguMDggOS4yNSAxOS4wOSA5LjY4IDIwSDZWNE0xNiAyMkMxMy4yNCAyMiAxMSAxOS43NiAxMSAxN1MxMy4yNCAxMiAxNiAxMiAyMSAxNC4yNCAyMSAxNyAxOC43NiAyMiAxNiAyMk0xNi41IDE3LjI1TDE5LjM2IDE4Ljk0TDE4LjYxIDIwLjE2TDE1IDE4VjEzSDE2LjVWMTcuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NvZyA9IFwiTTEyIDE5QzEyIDIwLjA4IDEyLjI1IDIxLjA5IDEyLjY4IDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEyLjA4QzE5LjY3IDEyLjAzIDE5LjM0IDEyIDE5IDEyQzE1LjEzIDEyIDEyIDE1LjEzIDEyIDE5TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tDb2dPdXRsaW5lID0gXCJNMTggNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTIuMDhDMTIuMTggMjAuNzEgMTIuMzkgMjEuMzggMTIuNjkgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMi4wOEMxOS42NyAxMi4wMyAxOS4zNCAxMiAxOSAxMkMxOC42NiAxMiAxOC4zMyAxMi4wMyAxOCAxMi4wOFY0TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tDcm9zcyA9IFwiTTUuODEsMkg3VjlMOS41LDcuNUwxMiw5VjJIMThBMiwyIDAgMCwxIDIwLDRWMjBDMjAsMjEuMDUgMTkuMDUsMjIgMTgsMjJINkM0Ljk1LDIyIDQsMjEuMDUgNCwyMFY0QzQsMyA0LjgzLDIuMDkgNS44MSwyTTEzLDEwVjEzSDEwVjE1SDEzVjIwSDE1VjE1SDE4VjEzSDE1VjEwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tFZGl0ID0gXCJNMTkuMzkgMTAuNzRMMTEgMTkuMTNWMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTAuM0MxOS43OCAxMC40MiAxOS41NyAxMC41NiAxOS4zOSAxMC43NE0xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45Nk0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWRpdE91dGxpbmUgPSBcIk02IDIwSDExVjIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTAuM0MxOS43OCAxMC40MiAxOS41NyAxMC41NiAxOS4zOSAxMC43NEwxOCAxMi4xM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyME0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N00xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWR1Y2F0aW9uID0gXCJNOC44MiAxN0wxMyAxOS4yOFYyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMi41NEwxOC41IDExLjcyTDguODIgMTdNMjQgMTdMMTguNSAxNEwxMyAxN0wxOC41IDIwTDI0IDE3TTE1IDE5LjA5VjIxLjA5TDE4LjUgMjNMMjIgMjEuMDlWMTkuMDlMMTguNSAyMUwxNSAxOS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWR1Y2F0aW9uT3V0bGluZSA9IFwiTTYgMjBIMTNWMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMi41NEwxOC41IDExLjcyTDE4IDEyVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwTTI0IDE3TDE4LjUgMTRMMTMgMTdMMTguNSAyMEwyNCAxN00xNSAxOS4wOVYyMS4wOUwxOC41IDIzTDIyIDIxLjA5VjE5LjA5TDE4LjUgMjFMMTUgMTkuMDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0luZm9ybWF0aW9uVmFyaWFudCA9IFwiTTE4IDJIMTJWOUw5LjUgNy41TDcgOVYySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWNEMyMCAyLjg5IDE5LjEgMiAxOCAyTTE3LjY4IDE4LjQxQzE3LjU3IDE4LjUgMTYuNDcgMTkuMjUgMTYuMDUgMTkuNUMxNS42MyAxOS43OSAxNCAyMC43MiAxNC4yNiAxOC45MkMxNC44OSAxNS4yOCAxNi4xMSAxMy4xMiAxNC42NSAxNC4wNkMxNC4yNyAxNC4yOSAxNC4wNSAxNC40MyAxMy45MSAxNC41QzEzLjc4IDE0LjYxIDEzLjc5IDE0LjYgMTMuNjggMTQuNDFTMTMuNTMgMTQuMjMgMTMuNjcgMTQuMTNDMTMuNjcgMTQuMTMgMTUuOSAxMi4zNCAxNi43MiAxMi4yOEMxNy41IDEyLjIxIDE3LjMxIDEzLjE3IDE3LjI0IDEzLjYxQzE2Ljc4IDE1LjQ2IDE1Ljk0IDE4LjE1IDE2LjA3IDE4LjU0QzE2LjE4IDE4LjkzIDE3IDE4LjMxIDE3LjQ0IDE4QzE3LjQ0IDE4IDE3LjUgMTcuOTMgMTcuNjEgMTguMDVDMTcuNzIgMTguMjIgMTcuODMgMTguMyAxNy42OCAxOC40MU0xNi45NyAxMS4wNkMxNi40IDExLjA2IDE1Ljk0IDEwLjYgMTUuOTQgMTAuMDNDMTUuOTQgOS40NiAxNi40IDkgMTYuOTcgOUMxNy41NCA5IDE4IDkuNDYgMTggMTAuMDNDMTggMTAuNiAxNy41NCAxMS4wNiAxNi45NyAxMS4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTG9jayA9IFwiTTE0LjIgMTQuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuN0MxMyAyMS4xNiAxMy4xIDIxLjYgMTMuMjcgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTAuMTFDMTkuNjggMTAuMDQgMTkuMzQgMTAgMTkgMTBDMTYuNCAxMCAxNC4yIDEyLjA2IDE0LjIgMTQuNU0yMyAxNy4zVjIwLjhDMjMgMjEuNCAyMi40IDIyIDIxLjcgMjJIMTYuMkMxNS42IDIyIDE1IDIxLjQgMTUgMjAuN1YxNy4yQzE1IDE2LjYgMTUuNiAxNiAxNi4yIDE2VjE0LjVDMTYuMiAxMy4xIDE3LjYgMTIgMTkgMTJTMjEuOCAxMy4xIDIxLjggMTQuNVYxNkMyMi40IDE2IDIzIDE2LjYgMjMgMTcuM00yMC41IDE0LjVDMjAuNSAxMy43IDE5LjggMTMuMiAxOSAxMy4yUzE3LjUgMTMuNyAxNy41IDE0LjVWMTZIMjAuNVYxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tMb2NrT3BlbiA9IFwiTTE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuN0MxMyAyMS4xNiAxMy4xIDIxLjYgMTMuMjcgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWOS4xMUMxOS42OCA5LjA0IDE5LjM0IDkgMTkgOUMxNi40IDkgMTQuMiAxMS4wNiAxNC4yIDEzLjVNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0xvY2tPcGVuT3V0bGluZSA9IFwiTTEzIDIwLjdDMTMgMjEuMTYgMTMuMSAyMS42IDEzLjI3IDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWOS4xMUMxOS42OCA5LjA0IDE5LjM0IDkgMTkgOVMxOC4zMiA5LjA0IDE4IDkuMTFWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTNWMjAuN00yMS44IDE2SDE3LjVWMTMuNUMxNy41IDEyLjcgMTguMiAxMi4yIDE5IDEyLjJTMjAuNSAxMi43IDIwLjUgMTMuNVYxNEgyMS44VjEzLjVDMjEuOCAxMi4xIDIwLjQgMTEgMTkgMTFTMTYuMiAxMi4xIDE2LjIgMTMuNVYxNkMxNS42IDE2IDE1IDE2LjYgMTUgMTcuMlYyMC43QzE1IDIxLjQgMTUuNiAyMiAxNi4yIDIySDIxLjdDMjIuNCAyMiAyMyAyMS40IDIzIDIwLjhWMTcuM0MyMyAxNi42IDIyLjQgMTYgMjEuOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTG9ja091dGxpbmUgPSBcIk0xMyAyMC43QzEzIDIxLjE2IDEzLjEgMjEuNiAxMy4yNyAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEwLjExQzE5LjY4IDEwLjA0IDE5LjM0IDEwIDE5IDEwUzE4LjMyIDEwLjA0IDE4IDEwLjExVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzVjIwLjdNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTWFya2VyID0gXCJNMTMgMTUuNUMxMyAxNy43OCAxNC43IDIwLjQxIDE1LjkxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEwLjIyQzE5LjUgMTAuMDggMTkgMTAgMTguNSAxMEMxNS41IDEwIDEzIDEyLjUgMTMgMTUuNU0yMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyUzE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMlMyMiAxMy42IDIyIDE1LjVNMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNFMxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44UzE5LjggMTYuMiAxOS43IDE1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01hcmtlck91dGxpbmUgPSBcIk0xNC41NSAyMEMxNSAyMC43NiAxNS41IDIxLjQ0IDE1LjkxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTAuMjJDMTkuNSAxMC4wOCAxOSAxMCAxOC41IDEwQzE4LjMzIDEwIDE4LjE3IDEwIDE4IDEwLjAzVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDE0LjU1TTIyIDE1LjVDMjIgMTguMSAxOC41IDIyIDE4LjUgMjJTMTUgMTguMSAxNSAxNS41QzE1IDEzLjYgMTYuNiAxMiAxOC41IDEyUzIyIDEzLjYgMjIgMTUuNU0xOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40UzE3LjMgMTQuOSAxNy4zIDE1LjZDMTcuMyAxNi4yIDE3LjggMTYuOCAxOC41IDE2LjhTMTkuOCAxNi4yIDE5LjcgMTUuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTWludXMgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzTXVsdGlwbGUgPSBcIk0xMy4wOSAyMEg1VjZIM1YyMEMzIDIxLjExIDMuOSAyMiA1IDIySDEzLjgxQzEzLjQ0IDIxLjM5IDEzLjIgMjAuNzEgMTMuMDkgMjBNMTkgMkgxNFY3TDEyIDUuNUwxMCA3VjJIOUM3LjkgMiA3IDIuOSA3IDRWMTZDNyAxNy4xMSA3LjkgMTggOSAxOEgxMy4wOUMxMy42NCAxNC43MyAxNi43NCAxMi41MyAyMCAxMy4wOEMyMC4zNCAxMy4xNCAyMC42OCAxMy4yMyAyMSAxMy4zNFY0QzIxIDIuOSAyMC4xMSAyIDE5IDJNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzTXVsdGlwbGVPdXRsaW5lID0gXCJNMTMuMDkgMjBINVY2SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxMy44MUMxMy40NCAyMS4zOSAxMy4yIDIwLjcxIDEzLjA5IDIwTTE5IDJIOUM3LjkgMiA3IDIuOSA3IDRWMTZDNyAxNy4xMSA3LjkgMTggOSAxOEgxMy4wOUMxMy4yIDE3LjI5IDEzLjQ0IDE2LjYxIDEzLjgxIDE2SDlWNEgxMVYxMEwxMy41IDcuNzVMMTYgMTBWNEgxOVYxM0MxOS42OCAxMyAyMC4zNiAxMy4xMSAyMSAxMy4zNFY0QzIxIDIuOSAyMC4xMSAyIDE5IDJNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzT3V0bGluZSA9IFwiTTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTMuMDlNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011bHRpcGxlID0gXCJNMTksMThIOUEyLDIgMCAwLDEgNywxNlY0QTIsMiAwIDAsMSA5LDJIMTBWN0wxMiw1LjVMMTQsN1YySDE5QTIsMiAwIDAsMSAyMSw0VjE2QTIsMiAwIDAsMSAxOSwxOE0xNywyMFYyMkg1QTIsMiAwIDAsMSAzLDIwVjZINVYyMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTXVsdGlwbGVPdXRsaW5lID0gXCJNMTkgMkEyIDIgMCAwIDEgMjEgNFYxNkEyIDIgMCAwIDEgMTkgMThIOUEyIDIgMCAwIDEgNyAxNlY0QTIgMiAwIDAgMSA5IDJIMTlNMTkgNEgxNlYxMEwxMy41IDcuNzVMMTEgMTBWNEg5VjE2SDE5TTMgMjBBMiAyIDAgMCAwIDUgMjJIMTdWMjBINVY2SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011c2ljID0gXCJNMTMgMjAuNUMxMyAyMS4wMyAxMy4wOSAyMS41MyAxMy4yNiAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMUgxNi41VjE2LjExQzE0LjUgMTYuNTcgMTMgMTguMzYgMTMgMjAuNU0yMCAxM0gxOC41VjE4LjIxQzE4LjE5IDE4LjA3IDE3Ljg2IDE4IDE3LjUgMThDMTYuMTIgMTggMTUgMTkuMTIgMTUgMjAuNVMxNi4xMiAyMyAxNy41IDIzIDIwIDIxLjg4IDIwIDIwLjVWMTVIMjJWMTNIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011c2ljT3V0bGluZSA9IFwiTTEzIDIwLjVDMTMgMjEuMDMgMTMuMDkgMjEuNTMgMTMuMjYgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMUgxOFY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wNEMxMy4wMyAyMC4xNyAxMyAyMC4zMyAxMyAyMC41TTIwIDEzSDE4LjVWMTguMjFDMTguMTkgMTguMDcgMTcuODYgMTggMTcuNSAxOEMxNi4xMiAxOCAxNSAxOS4xMiAxNSAyMC41UzE2LjEyIDIzIDE3LjUgMjMgMjAgMjEuODggMjAgMjAuNVYxNUgyMlYxM0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT2ZmID0gXCJNMTguNjggMi4xMkwxMiA4LjhWMkgxOEMxOC4yNCAyIDE4LjQ2IDIuMDUgMTguNjggMi4xMk05LjUgNy41TDcgOVYySDZDNC44OSAyIDQgMi45IDQgNFYxNi44TDExLjg4IDguOTNMOS41IDcuNU0yMS42MSAxLjczTDEuODkgMjEuNDZMMy4xNiAyMi43M0w0LjU0IDIxLjM1QzQuOSAyMS43NSA1LjQyIDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWNS44OUwyMi44OSAzTDIxLjYxIDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va09mZk91dGxpbmUgPSBcIk02IDE0LjhMNCAxNi44VjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOC4yNCAyIDE4LjQ3IDIuMDQgMTguNjggMi4xMkwxNi44IDRIMTNWNy44TDEwLjc5IDEwTDEwLjUgOS43NUw4IDEyVjRINlYxNC44TTIyLjg5IDNMMjAgNS44OVYyMEMyMCAyMS4xMSAxOS4xMSAyMiAxOCAyMkg2QzUuNDIgMjIgNC45IDIxLjc1IDQuNTQgMjEuMzVMMy4xNiAyMi43M0wxLjg5IDIxLjQ2TDIxLjYxIDEuNzNMMjIuODkgM00xOCA3Ljg5TDYgMTkuODlWMjBIMThWNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT3BlbiA9IFwiTTEzLDEySDIwVjEzLjVIMTNNMTMsOS41SDIwVjExSDEzTTEzLDE0LjVIMjBWMTZIMTNNMjEsNEgzQTIsMiAwIDAsMCAxLDZWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjZBMiwyIDAgMCwwIDIxLDRNMjEsMTlIMTJWNkgyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuQmxhbmtWYXJpYW50ID0gXCJNMjEsNUMxOS44OSw0LjY1IDE4LjY3LDQuNSAxNy41LDQuNUMxNS41NSw0LjUgMTMuNDUsNC45IDEyLDZDMTAuNTUsNC45IDguNDUsNC41IDYuNSw0LjVDNC41NSw0LjUgMi40NSw0LjkgMSw2VjIwLjY1QzEsMjAuOSAxLjI1LDIxLjE1IDEuNSwyMS4xNUMxLjYsMjEuMTUgMS42NSwyMS4xIDEuNzUsMjEuMUMzLjEsMjAuNDUgNS4wNSwyMCA2LjUsMjBDOC40NSwyMCAxMC41NSwyMC40IDEyLDIxLjVDMTMuMzUsMjAuNjUgMTUuOCwyMCAxNy41LDIwQzE5LjE1LDIwIDIwLjg1LDIwLjMgMjIuMjUsMjEuMDVDMjIuMzUsMjEuMSAyMi40LDIxLjEgMjIuNSwyMS4xQzIyLjc1LDIxLjEgMjMsMjAuODUgMjMsMjAuNlY2QzIyLjQsNS41NSAyMS43NSw1LjI1IDIxLDVNMjEsMTguNUMxOS45LDE4LjE1IDE4LjcsMTggMTcuNSwxOEMxNS44LDE4IDEzLjM1LDE4LjY1IDEyLDE5LjVWOEMxMy4zNSw3LjE1IDE1LjgsNi41IDE3LjUsNi41QzE4LjcsNi41IDE5LjksNi42NSAyMSw3VjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va09wZW5PdXRsaW5lID0gXCJNMjEsNEgzQTIsMiAwIDAsMCAxLDZWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjZBMiwyIDAgMCwwIDIxLDRNMywxOVY2SDExVjE5SDNNMjEsMTlIMTNWNkgyMVYxOU0xNCw5LjVIMjBWMTFIMTRWOS41TTE0LDEySDIwVjEzLjVIMTRWMTJNMTQsMTQuNUgyMFYxNkgxNFYxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuUGFnZVZhcmlhbnQgPSBcIk0xOSAyTDE0IDYuNVYxNy41TDE5IDEzVjJNNi41IDVDNC41NSA1IDIuNDUgNS40IDEgNi41VjIxLjE2QzEgMjEuNDEgMS4yNSAyMS42NiAxLjUgMjEuNjZDMS42IDIxLjY2IDEuNjUgMjEuNTkgMS43NSAyMS41OUMzLjEgMjAuOTQgNS4wNSAyMC41IDYuNSAyMC41QzguNDUgMjAuNSAxMC41NSAyMC45IDEyIDIyQzEzLjM1IDIxLjE1IDE1LjggMjAuNSAxNy41IDIwLjVDMTkuMTUgMjAuNSAyMC44NSAyMC44MSAyMi4yNSAyMS41NkMyMi4zNSAyMS42MSAyMi40IDIxLjU5IDIyLjUgMjEuNTlDMjIuNzUgMjEuNTkgMjMgMjEuMzQgMjMgMjEuMDlWNi41QzIyLjQgNi4wNSAyMS43NSA1Ljc1IDIxIDUuNVYxOUMxOS45IDE4LjY1IDE4LjcgMTguNSAxNy41IDE4LjVDMTUuOCAxOC41IDEzLjM1IDE5LjE1IDEyIDIwVjYuNUMxMC41NSA1LjQgOC40NSA1IDYuNSA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuUGFnZVZhcmlhbnRPdXRsaW5lID0gXCJNMTkgMUwxNCA2VjE3TDE5IDEyLjVWMU0yMSA1VjE4LjVDMTkuOSAxOC4xNSAxOC43IDE4IDE3LjUgMThDMTUuOCAxOCAxMy4zNSAxOC42NSAxMiAxOS41VjZDMTAuNTUgNC45IDguNDUgNC41IDYuNSA0LjVDNC41NSA0LjUgMi40NSA0LjkgMSA2VjIwLjY1QzEgMjAuOSAxLjI1IDIxLjE1IDEuNSAyMS4xNUMxLjYgMjEuMTUgMS42NSAyMS4xIDEuNzUgMjEuMUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBDOC40NSAyMCAxMC41NSAyMC40IDEyIDIxLjVDMTMuMzUgMjAuNjUgMTUuOCAyMCAxNy41IDIwQzE5LjE1IDIwIDIwLjg1IDIwLjMgMjIuMjUgMjEuMDVDMjIuMzUgMjEuMSAyMi40IDIxLjEgMjIuNSAyMS4xQzIyLjc1IDIxLjEgMjMgMjAuODUgMjMgMjAuNlY2QzIyLjQgNS41NSAyMS43NSA1LjI1IDIxIDVNMTAgMTguNDFDOC43NSAxOC4wOSA3LjUgMTggNi41IDE4QzUuNDQgMTggNC4xOCAxOC4xOSAzIDE4LjVWNy4xM0MzLjkxIDYuNzMgNS4xNCA2LjUgNi41IDYuNUM3Ljg2IDYuNSA5LjA5IDYuNzMgMTAgNy4xM1YxOC40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT3BlblZhcmlhbnQgPSBcIk0xNy41IDE0LjMzQzE4LjI5IDE0LjMzIDE5LjEzIDE0LjQxIDIwIDE0LjU3VjE2LjA3QzE5LjM4IDE1LjkxIDE4LjU0IDE1LjgzIDE3LjUgMTUuODNDMTUuNiAxNS44MyAxNC4xMSAxNi4xNiAxMyAxNi44MlYxNS4xM0MxNC4xNyAxNC42IDE1LjY3IDE0LjMzIDE3LjUgMTQuMzNNMTMgMTIuNDZDMTQuMjkgMTEuOTMgMTUuNzkgMTEuNjcgMTcuNSAxMS42N0MxOC4yOSAxMS42NyAxOS4xMyAxMS43NCAyMCAxMS45VjEzLjRDMTkuMzggMTMuMjQgMTguNTQgMTMuMTYgMTcuNSAxMy4xNkMxNS42IDEzLjE2IDE0LjExIDEzLjUgMTMgMTQuMTVNMTcuNSAxMC41QzE1LjYgMTAuNSAxNC4xMSAxMC44MiAxMyAxMS41VjkuODRDMTQuMjMgOS4yOCAxNS43MyA5IDE3LjUgOUMxOC4yOSA5IDE5LjEzIDkuMDggMjAgOS4yM1YxMC43OEMxOS4yNiAxMC41OSAxOC40MSAxMC41IDE3LjUgMTAuNU0yMSAxOC41VjdDMTkuOTYgNi42NyAxOC43OSA2LjUgMTcuNSA2LjVDMTUuNDUgNi41IDEzLjYyIDcgMTIgOFYxOS41QzEzLjYyIDE4LjUgMTUuNDUgMTggMTcuNSAxOEMxOC42OSAxOCAxOS44NiAxOC4xNiAyMSAxOC41TTE3LjUgNC41QzE5Ljg1IDQuNSAyMS42OSA1IDIzIDZWMjAuNTZDMjMgMjAuNjggMjIuOTUgMjAuOCAyMi44NCAyMC45MUMyMi43MyAyMSAyMi42MSAyMS4wOCAyMi41IDIxLjA4QzIyLjM5IDIxLjA4IDIyLjMxIDIxLjA2IDIyLjI1IDIxLjAzQzIwLjk3IDIwLjM0IDE5LjM4IDIwIDE3LjUgMjBDMTUuNDUgMjAgMTMuNjIgMjAuNSAxMiAyMS41QzEwLjY2IDIwLjUgOC44MyAyMCA2LjUgMjBDNC44NCAyMCAzLjI1IDIwLjM2IDEuNzUgMjEuMDdDMS43MiAyMS4wOCAxLjY4IDIxLjA4IDEuNjMgMjEuMUMxLjU5IDIxLjExIDEuNTUgMjEuMTIgMS41IDIxLjEyQzEuMzkgMjEuMTIgMS4yNyAyMS4wOCAxLjE2IDIxQzEuMDUgMjAuODkgMSAyMC43OCAxIDIwLjY1VjZDMi4zNCA1IDQuMTggNC41IDYuNSA0LjVDOC44MyA0LjUgMTAuNjYgNSAxMiA2QzEzLjM0IDUgMTUuMTcgNC41IDE3LjUgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPdXRsaW5lID0gXCJNMTgsMkEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMThNMTgsNEgxM1YxMkwxMC41LDkuNzVMOCwxMlY0SDZWMjBIMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGxheSA9IFwiTTEzIDE5QzEzIDIwLjEgMTMuMyAyMS4xMiAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOU0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGxheU91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTE3IDE2VjIyTDIyIDE5TDE3IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tQbHVzID0gXCJNMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEyIDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tQbHVzTXVsdGlwbGUgPSBcIk0xMy4wOSAyMEg1VjZIM1YyMEEyIDIgMCAwIDAgNSAyMkgxMy44MUE1LjUgNS41IDAgMCAxIDEzLjA5IDIwTTE5IDJIMTRWN0wxMiA1LjVMMTAgN1YySDlBMiAyIDAgMCAwIDcgNFYxNkEyIDIgMCAwIDAgOSAxOEgxMy4wOUE2IDYgMCAwIDEgMjEgMTMuMzRWNEEyIDIgMCAwIDAgMTkgMk0yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGx1c011bHRpcGxlT3V0bGluZSA9IFwiTTEzLjA5IDIwSDVWNkgzVjIwQTIgMiAwIDAgMCA1IDIySDEzLjgxQTUuNSA1LjUgMCAwIDEgMTMuMDkgMjBNMTkgMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNS41IDUuNSAwIDAgMSAxMy44MSAxNkg5VjRIMTFWMTBMMTMuNSA3Ljc1TDE2IDEwVjRIMTlWMTNBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjAgMTVWMThIMjNWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1BsdXNPdXRsaW5lID0gXCJNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxOC42NiAxMyAxOC4zMyAxMy4wNCAxOCAxMy4wOVY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wOU0yMCAxOFYxNUgxOFYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUmVmcmVzaCA9IFwiTTEyIDE4LjVDMTIgMTkuNzkgMTIuMzkgMjEgMTMuMDQgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTIuMThDMTkuNSAxMi4wNyAxOSAxMiAxOC41IDEyQzE0LjkxIDEyIDEyIDE0LjkxIDEyIDE4LjVNMjIgMTguNVYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUmVmcmVzaE91dGxpbmUgPSBcIk0xMi4xOCAyMEMxMi4zNiAyMC43MiAxMi42NSAyMS4zOSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEyLjE4QzE5LjUgMTIuMDcgMTkgMTIgMTguNSAxMkMxOC4zMyAxMiAxOC4xNyAxMiAxOCAxMi4wM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMi4xOE0yMiAxOC41VjE0LjVMMjAuODMgMTUuNjdDMjAuMTEgMTQuOTUgMTkuMTEgMTQuNSAxOCAxNC41QzE1Ljc5IDE0LjUgMTQgMTYuMjkgMTQgMTguNVMxNS43OSAyMi41IDE4IDIyLjVDMTkuNjggMjIuNSAyMS4xMiAyMS40NyAyMS43MSAyMEgyMEMxOS41NCAyMC42MSAxOC44MiAyMSAxOCAyMUMxNi42MiAyMSAxNS41IDE5Ljg4IDE1LjUgMTguNVMxNi42MiAxNiAxOCAxNkMxOC42OSAxNiAxOS4zMiAxNi4yOCAxOS43NyAxNi43M0wxOCAxOC41SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tSZW1vdmUgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU11bHRpcGxlID0gXCJNMTMuMDkgMjBINVY2SDNWMjBBMiAyIDAgMCAwIDUgMjJIMTMuODFBNS41IDUuNSAwIDAgMSAxMy4wOSAyME0xOSAySDE0VjdMMTIgNS41TDEwIDdWMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDYgMjEuMTJMMTcuNTkgMTlMMTUuNDYgMTYuODhMMTYuODggMTUuNDZMMTkgMTcuNTlMMjEuMTIgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU11bHRpcGxlT3V0bGluZSA9IFwiTTEzLjA5IDIwSDVWNkgzVjIwQTIgMiAwIDAgMCA1IDIySDEzLjgxQTUuNSA1LjUgMCAwIDEgMTMuMDkgMjBNMTkgMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNS41IDUuNSAwIDAgMSAxMy44MSAxNkg5VjRIMTFWMTBMMTMuNSA3Ljc1TDE2IDEwVjRIMTlWMTNBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDYgMjEuMTJMMTcuNTkgMTlMMTUuNDYgMTYuODhMMTYuODggMTUuNDZMMTkgMTcuNTlMMjEuMTIgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE02LDIyQTIsMiAwIDAsMSA0LDIwVjRDNCwyLjg5IDQuOSwyIDYsMkg3VjlMOS41LDcuNUwxMiw5VjJIMThBMiwyIDAgMCwxIDIwLDRWMTEuODFDMTguODMsMTAuNjkgMTcuMjUsMTAgMTUuNSwxMEE2LjUsNi41IDAgMCwwIDksMTYuNUM5LDE4LjgxIDEwLjIxLDIwLjg1IDEyLjAzLDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1NlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xMyw0VjEyTDEwLjUsOS43NUw4LDEyVjRINlYyMEgxMEMxMC41NCwyMC44MSAxMS4yMywyMS41IDEyLjAzLDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE4QTIsMiAwIDAsMSAyMCw0VjExLjgxQzE5LjQyLDExLjI2IDE4Ljc1LDEwLjgxIDE4LDEwLjVWNEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rU2V0dGluZ3MgPSBcIk0yMCAyVjE4QzIwIDE5LjExIDE5LjExIDIwIDE4IDIwSDZDNC44OSAyMCA0IDE5LjExIDQgMThWMkM0IC44OTUgNC44OSAwIDYgMEg3VjdMOS41IDUuNUwxMiA3VjBIMThDMTkuMSAwIDIwIC44OSAyMCAyTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tTZXR0aW5nc091dGxpbmUgPSBcIk0xOCAwSDZDNC44OSAwIDQgLjg5NSA0IDJWMThDNCAxOS4xMSA0Ljg5IDIwIDYgMjBIMThDMTkuMTEgMjAgMjAgMTkuMTEgMjAgMThWMkMyMCAuODk1IDE5LjExIDAgMTggME0xOCAxOEg2VjJIOFYxMEwxMC41IDcuNzVMMTMgMTBWMkgxOFYxOE03IDIySDlWMjRIN1YyMk0xMSAyMkgxM1YyNEgxMVYyMk0xNSAyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rU3luYyA9IFwiTTEzIDE3LjVDMTMgMTkuMjUgMTMuNjkgMjAuODMgMTQuODIgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTEuMDNDMTkuODQgMTEgMTkuNjcgMTEgMTkuNSAxMUMxNS45MSAxMSAxMyAxMy45MSAxMyAxNy41TTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1N5bmNPdXRsaW5lID0gXCJNMTMuNSAyMEMxMy44MSAyMC43NSAxNC4yNiAyMS40MiAxNC44MiAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjExLjAzQzE5Ljg0IDExIDE5LjY3IDExIDE5LjUgMTFDMTkgMTEgMTguNSAxMS4wNyAxOCAxMS4xOFY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy41TTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1ZhcmlhbnQgPSBcIk02LDRIMTFWMTJMOC41LDEwLjVMNiwxMk0xOCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWNEEyLDIgMCAwLDAgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rVmFyaWFudE11bHRpcGxlID0gXCJNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFY2TTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTIwLDEyTDE3LjUsMTAuNUwxNSwxMlY0SDIwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrID0gXCJNMTcsM0g3QTIsMiAwIDAsMCA1LDVWMjFMMTIsMThMMTksMjFWNUMxOSwzLjg5IDE4LjEsMyAxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrQ2hlY2sgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDE0TDE3LjI1LDcuNzZMMTUuODQsNi4zNEwxMSwxMS4xOEw4LjQxLDguNTlMNywxMEwxMSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya0NoZWNrT3V0bGluZSA9IFwiTTkuNDcgOS42NUw4LjA2IDExLjA3TDExIDE0TDE2LjE5IDguODJMMTQuNzggNy40TDExIDExLjE4TTE3IDNIN0M1LjkgMyA1IDMuOSA1IDVMNSAyMUwxMiAxOEwxOSAyMVY1QzE5IDMuOSAxOC4xIDMgMTcgM00xNyAxOEwxMiAxNS44Mkw3IDE4VjVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtNaW51cyA9IFwiTTE3LDNIN0EyLDIgMCAwLDAgNSw1VjIxTDEyLDE4TDE5LDIxVjVBMiwyIDAgMCwwIDE3LDNNMTUsMTFIOVY5SDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTWludXNPdXRsaW5lID0gXCJNOSwxMVY5SDE1VjExSDlNMTksNVYyMUwxMiwxOEw1LDIxVjVDNSwzLjg5IDUuOSwzIDcsM0gxN0MxOC4xMSwzIDE5LDMuOSAxOSw1TTE3LDVIN1YxOEwxMiwxNS44MkwxNywxOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTXVsdGlwbGUgPSBcIk0xNSw1QTIsMiAwIDAsMSAxNyw3VjIzTDEwLDIwTDMsMjNWN0MzLDUuODkgMy45LDUgNSw1SDE1TTksMUgxOUEyLDIgMCAwLDEgMjEsM1YxOUwxOSwxOC4xM1YzSDdBMiwyIDAgMCwxIDksMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya011bHRpcGxlT3V0bGluZSA9IFwiTTksMUgxOUEyLDIgMCAwLDEgMjEsM1YxOUwxOSwxOC4xM1YzSDdBMiwyIDAgMCwxIDksMU0xNSwyMFY3SDVWMjBMMTAsMTcuODJMMTUsMjBNMTUsNUMxNi4xMSw1IDE3LDUuOSAxNyw3VjIzTDEwLDIwTDMsMjNWN0EyLDIgMCAwLDEgNSw1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTXVzaWMgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDExQTIsMiAwIDAsMCA5LDEzQTIsMiAwIDAsMCAxMSwxNUEyLDIgMCAwLDAgMTMsMTNWOEgxNlY2SDEyVjExLjI3QzExLjcxLDExLjEgMTEuMzYsMTEgMTEsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtNdXNpY091dGxpbmUgPSBcIk03IDNDNS45IDMgNSAzLjkgNSA1VjIxTDEyIDE4TDE5IDIxVjVDMTkgMy44OSAxOC4xIDMgMTcgM0g3TTcgNUgxN1YxOEwxMiAxNS44Mkw3IDE4VjVNMTIgNlYxMS4zQzExLjcgMTEuMSAxMS40IDExIDExIDExQzkuOSAxMSA5IDExLjkgOSAxM0M5IDE0LjExIDkuOSAxNSAxMSAxNUMxMi4xMSAxNSAxMyAxNC4xMSAxMyAxM1Y4SDE1VjZIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtPZmYgPSBcIk0yMCwyMC43MkwxOC43MywyMkwxNi43OCwyMC4wNUwxMiwxOEw1LDIxVjguMjdMMiw1LjI3TDMuMjgsNEwyMCwyMC43Mk0xOSwxNy4xNlY1QzE5LDMuODkgMTguMSwzIDE3LDNIN0M2LjQxLDMgNS44OSwzLjI3IDUuNSwzLjY4TDE5LDE3LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrT2ZmT3V0bGluZSA9IFwiTTMuMjgsNEwyLDUuMjdMNSw4LjI3VjIxTDEyLDE4TDE2Ljc4LDIwLjA1TDE4LjczLDIyTDIwLDIwLjcyTDMuMjgsNE03LDE4VjEwLjI3TDEzLDE2LjI1TDEyLDE1LjgyTDcsMThNNyw1LjE2TDUuNSwzLjY3QzUuODgsMy4yNiA2LjQxLDMgNywzSDE3QTIsMiAwIDAsMSAxOSw1VjE3LjE2TDE3LDE1LjE2VjVIN1Y1LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrT3V0bGluZSA9IFwiTTE3LDE4TDEyLDE1LjgyTDcsMThWNUgxN00xNywzSDdBMiwyIDAgMCwwIDUsNVYyMUwxMiwxOEwxOSwyMVY1QzE5LDMuODkgMTguMSwzIDE3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtQbHVzID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYyMUwxMiwxOEw1LDIxVjVDNSwzLjg5IDUuOSwzIDcsM0gxN00xMSw3VjlIOVYxMUgxMVYxM0gxM1YxMUgxNVY5SDEzVjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtQbHVzT3V0bGluZSA9IFwiTTE3LDE4VjVIN1YxOEwxMiwxNS44MkwxNywxOE0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDdIMTNWOUgxNVYxMUgxM1YxM0gxMVYxMUg5VjlIMTFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya1JlbW92ZSA9IFwiTTE3LDNBMiwyIDAgMCwxIDE5LDVWMjFMMTIsMThMNSwyMVY1QzUsMy44OSA1LjksMyA3LDNIMTdNOC4xNyw4LjU4TDEwLjU5LDExTDguMTcsMTMuNDFMOS41OSwxNC44M0wxMiwxMi40MUwxNC40MSwxNC44M0wxNS44MywxMy40MUwxMy40MSwxMUwxNS44Myw4LjU4TDE0LjQxLDcuMTdMMTIsOS41OEw5LjU5LDcuMTdMOC4xNyw4LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrUmVtb3ZlT3V0bGluZSA9IFwiTTcgM0M1LjkgMyA1IDMuOSA1IDVWMjFMMTIgMThMMTkgMjFWNUMxOSAzLjg5IDE4LjEgMyAxNyAzSDdNNyA1SDE3VjE4TDEyIDE1LjgyTDcgMThWNU05Ljg4IDcuNDdMOC40NyA4Ljg4TDEwLjU5IDExTDguNDcgMTMuMTJMOS44OCAxNC41NEwxMiAxMi40MkwxNC4xMiAxNC41M0wxNS41NCAxMy4xMkwxMy40MiAxMUwxNS41MyA4Ljg4TDE0LjEyIDcuNDdMMTIgOS41OUw5Ljg4IDcuNDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va3NoZWxmID0gXCJNOSAzVjE4SDEyVjNIOU0xMiA1TDE2IDE4TDE5IDE3TDE1IDRMMTIgNU01IDVWMThIOFY1SDVNMyAxOVYyMUgyMVYxOUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb21HYXRlID0gXCJNMjAsOUg4LjIyQzcuMTEsNy43NyA1LjIxLDcuNjggNCw4LjhDMy4zNiw5LjM2IDMsMTAuMTYgMywxMVYyMEExLDEgMCAwLDAgMiwyMVYyMkgxMFYyMUExLDEgMCAwLDAgOSwyMFYxM0gyMEEyLDIgMCAwLDAgMjIsMTFBMiwyIDAgMCwwIDIwLDlNNiwxMi41QTEuNSwxLjUgMCAwLDEgNC41LDExQTEuNSwxLjUgMCAwLDEgNiw5LjVBMS41LDEuNSAwIDAsMSA3LjUsMTFBMS41LDEuNSAwIDAsMSA2LDEyLjVNMTAuNSwxMkw5LDEwSDEwLjVMMTIsMTJIMTAuNU0xNC41LDEyTDEzLDEwSDE0LjVMMTYsMTJIMTQuNU0xOC41LDEyTDE3LDEwSDE4LjVMMjAsMTJIMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tR2F0ZUFsZXJ0ID0gXCJNMTkuOSAzQzE5LjMgMiAxOC4xIDEuNyAxNy4yIDIuM0w2LjkgOC4yQzYuNiA4LjEgNi4zIDggNiA4QzQuMyA4IDMgOS4zIDMgMTFWMjBDMi40IDIwIDIgMjAuNCAyIDIxVjIySDEwVjIxQzEwIDIwLjQgOS42IDIwIDkgMjBWMTEuNkwxOS4xIDUuOEMyMC4xIDUuMiAyMC40IDQgMTkuOSAzTTYgMTIuNUM1LjIgMTIuNSA0LjUgMTEuOCA0LjUgMTFTNS4yIDkuNSA2IDkuNSA3LjUgMTAuMiA3LjUgMTEgNi44IDEyLjUgNiAxMi41TTEwLjQgOS42TDguMSA4LjZMOS40IDcuOEwxMS43IDguOEwxMC40IDkuNk0xMy45IDcuNkwxMS42IDYuNkwxMi45IDUuOEwxNS4yIDYuOEwxMy45IDcuNk0xNy4zIDUuNkwxNSA0LjZMMTYuMyAzLjhMMTguNiA0LjhMMTcuMyA1LjZNMjAgMThIMThWMjBIMjBWMThNMjAgMTBIMThWMTZIMjBWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVBbGVydE91dGxpbmUgPSBcIk0xOS45IDNDMTkuMyAyIDE4LjEgMS43IDE3LjIgMi4zTDYuOSA4LjJDNi42IDguMSA2LjMgOCA2IDhDNC4zIDggMyA5LjMgMyAxMVYyMEMyLjQgMjAgMiAyMC40IDIgMjFWMjJIMTBWMjFDMTAgMjAuNCA5LjYgMjAgOSAyMFYxMS42TDE5LjEgNS44QzIwLjEgNS4yIDIwLjQgNCAxOS45IDNNNy41IDIwSDQuNVYxMy42QzUuNCAxNC4xIDYuNiAxNC4xIDcuNSAxMy42VjIwTTYgMTIuNUM1LjIgMTIuNSA0LjUgMTEuOCA0LjUgMTFTNS4yIDkuNSA2IDkuNSA3LjUgMTAuMiA3LjUgMTEgNi44IDEyLjUgNiAxMi41TTEwLjQgOS42TDguMSA4LjZMOS40IDcuOEwxMS43IDguOEwxMC40IDkuNk0xMy45IDcuNkwxMS42IDYuNkwxMi45IDUuOEwxNS4yIDYuOEwxMy45IDcuNk0xNy4zIDUuNkwxNSA0LjZMMTYuMyAzLjhMMTguNiA0LjhMMTcuMyA1LjZNMjAgMTZIMThWMTBIMjBWMTZNMjAgMjBIMThWMThIMjBWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVEb3duID0gXCJNMTkuODYsM0MxOS4zMSwyLjA0IDE4LjA5LDEuNzEgMTcuMTIsMi4yN0w2LjkyLDguMTZDNi42Miw4LjA2IDYuMzEsOCA2LDhBMywzIDAgMCwwIDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTEuNThMMTkuMTIsNS43M0MyMC4wOCw1LjE4IDIwLjQxLDMuOTYgMTkuODYsM002LDEyLjVBMS41LDEuNSAwIDAsMSA0LjUsMTFBMS41LDEuNSAwIDAsMSA2LDkuNUExLjUsMS41IDAgMCwxIDcuNSwxMUExLjUsMS41IDAgMCwxIDYsMTIuNU0xMC40LDkuNjJMOC4xLDguNjJMOS40LDcuODdMMTEuNyw4Ljg3TDEwLjQsOS42Mk0xMy44Niw3LjYyTDExLjU2LDYuNjJMMTIuODYsNS44N0wxNS4xNiw2Ljg3TDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxNS4wMyw0LjYyTDE2LjMzLDMuODdMMTguNjIsNC44N0wxNy4zMyw1LjYyTTE3LDIwTDEyLDE1SDE1VjExSDE5VjE1SDIyTDE3LDIwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVEb3duT3V0bGluZSA9IFwiTTE5Ljg2LDNDMjAuNDEsMy45NiAyMC4wOCw1LjE4IDE5LjEyLDUuNzNMOSwxMS41OFYyMEExLDEgMCAwLDEgMTAsMjFWMjJIMlYyMUExLDEgMCAwLDEgMywyMFYxMUEzLDMgMCAwLDEgNiw4QzYuMzEsOCA2LjYyLDguMDYgNi45Miw4LjE2TDE3LjEyLDIuMjdDMTguMDksMS43MSAxOS4zMSwyLjA0IDE5Ljg2LDNNNy41LDIwVjEzLjZDNi41NywxNC4xNCA1LjQzLDE0LjE0IDQuNSwxMy42VjIwSDcuNU02LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTFBMS41LDEuNSAwIDAsMCA2LDkuNUExLjUsMS41IDAgMCwwIDQuNSwxMUExLjUsMS41IDAgMCwwIDYsMTIuNU0xMC40LDkuNjJMMTEuNyw4Ljg3TDkuNCw3Ljg3TDguMSw4LjYyTDEwLjQsOS42Mk0xMy44Niw3LjYyTDE1LjE2LDYuODdMMTIuODYsNS44N0wxMS41Niw2LjYyTDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxOC42Miw0Ljg3TDE2LjMzLDMuODdMMTUuMDMsNC42MkwxNy4zMyw1LjYyTTE2LDExLjE2SDE4VjE2LjE3TDIxLDE2LjE2TDE3LDIwTDEzLDE2LjE2TDE2LDE2LjE3VjExLjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb21HYXRlT3V0bGluZSA9IFwiTTIwLDlIOC4yMkM3LjExLDcuNzcgNS4yMSw3LjY4IDQsOC44QzMuMzYsOS4zNiAzLDEwLjE2IDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTNIMjBBMiwyIDAgMCwwIDIyLDExQTIsMiAwIDAsMCAyMCw5TTcuNSwyMEg0LjVWMTMuNkM1LjQzLDE0LjE0IDYuNTcsMTQuMTQgNy41LDEzLjZWMjBNNiwxMi41QTEuNSwxLjUgMCAwLDEgNC41LDExQTEuNSwxLjUgMCAwLDEgNiw5LjVBMS41LDEuNSAwIDAsMSA3LjUsMTFBMS41LDEuNSAwIDAsMSA2LDEyLjVNMTAuNSwxMkw5LDEwSDEwLjVMMTIsMTJIMTAuNU0xNC41LDEyTDEzLDEwSDE0LjVMMTYsMTJIMTQuNU0xOC41LDEyTDE3LDEwSDE4LjVMMjAsMTJIMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tR2F0ZVVwID0gXCJNMTkuODYsM0MxOS4zMSwyLjA0IDE4LjA5LDEuNzEgMTcuMTIsMi4yN0w2LjkyLDguMTZDNi42Miw4LjA2IDYuMzEsOCA2LDhBMywzIDAgMCwwIDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTEuNThMMTkuMTIsNS43M0MyMC4wOCw1LjE4IDIwLjQxLDMuOTYgMTkuODYsM002LDEyLjVBMS41LDEuNSAwIDAsMSA0LjUsMTFBMS41LDEuNSAwIDAsMSA2LDkuNUExLjUsMS41IDAgMCwxIDcuNSwxMUExLjUsMS41IDAgMCwxIDYsMTIuNU0xMC40LDkuNjJMOC4xLDguNjJMOS40LDcuODdMMTEuNyw4Ljg3TDEwLjQsOS42Mk0xMy44Niw3LjYyTDExLjU2LDYuNjJMMTIuODYsNS44N0wxNS4xNiw2Ljg3TDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxNS4wMyw0LjYyTDE2LjMzLDMuODdMMTguNjIsNC44N0wxNy4zMyw1LjYyTTE3LDExTDIyLDE2SDE5VjIwSDE1VjE2SDEyTDE3LDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVVcE91dGxpbmUgPSBcIk0xOS44NiwzQzIwLjQxLDMuOTYgMjAuMDgsNS4xOCAxOS4xMiw1LjczTDksMTEuNThWMjBBMSwxIDAgMCwxIDEwLDIxVjIySDJWMjFBMSwxIDAgMCwxIDMsMjBWMTFBMywzIDAgMCwxIDYsOEM2LjMxLDggNi42Miw4LjA2IDYuOTIsOC4xNkwxNy4xMiwyLjI3QzE4LjA5LDEuNzEgMTkuMzEsMi4wNCAxOS44NiwzTTcuNSwyMFYxMy42QzYuNTcsMTQuMTQgNS40MywxNC4xNCA0LjUsMTMuNlYyMEg3LjVNNiwxMi41QTEuNSwxLjUgMCAwLDAgNy41LDExQTEuNSwxLjUgMCAwLDAgNiw5LjVBMS41LDEuNSAwIDAsMCA0LjUsMTFBMS41LDEuNSAwIDAsMCA2LDEyLjVNMTAuNCw5LjYyTDExLjcsOC44N0w5LjQsNy44N0w4LjEsOC42MkwxMC40LDkuNjJNMTMuODYsNy42MkwxNS4xNiw2Ljg3TDEyLjg2LDUuODdMMTEuNTYsNi42MkwxMy44Niw3LjYyTTE3LjMzLDUuNjJMMTguNjIsNC44N0wxNi4zMywzLjg3TDE1LjAzLDQuNjJMMTcuMzMsNS42Mk0xNiwyMFYxNUgxM0wxNywxMS4xNkwyMSwxNUgxOFYyMEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tYm94ID0gXCJNNyw1TDUsN1Y4SDNBMSwxIDAgMCwwIDIsOVYxN0ExLDEgMCAwLDAgMywxOEgyMUExLDEgMCAwLDAgMjIsMTdWOUExLDEgMCAwLDAgMjEsOEgxOVY3TDE3LDVIN003LDdIMTdWOEg3VjdNMTEsOUgxM0EwLjUsMC41IDAgMCwxIDEzLjUsOS41QTAuNSwwLjUgMCAwLDEgMTMsMTBIMTFBMC41LDAuNSAwIDAsMSAxMC41LDkuNUEwLjUsMC41IDAgMCwxIDExLDlNNy41LDEwLjVBMywzIDAgMCwxIDEwLjUsMTMuNUEzLDMgMCAwLDEgNy41LDE2LjVBMywzIDAgMCwxIDQuNSwxMy41QTMsMyAwIDAsMSA3LjUsMTAuNU0xNi41LDEwLjVBMywzIDAgMCwxIDE5LjUsMTMuNUEzLDMgMCAwLDEgMTYuNSwxNi41QTMsMyAwIDAsMSAxMy41LDEzLjVBMywzIDAgMCwxIDE2LjUsMTAuNU03LjUsMTJBMS41LDEuNSAwIDAsMCA2LDEzLjVBMS41LDEuNSAwIDAsMCA3LjUsMTVBMS41LDEuNSAwIDAsMCA5LDEzLjVBMS41LDEuNSAwIDAsMCA3LjUsMTJNMTYuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEzLjVBMS41LDEuNSAwIDAsMCAxNi41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTMuNUExLjUsMS41IDAgMCwwIDE2LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbWVyYW5nID0gXCJNMTAgMkg0QzIuOSAyIDIgMi45IDIgNFMyLjkgNiA0IDZIOEwxMCAyTTE4IDJDMjAuMiAyIDIyIDMuOCAyMiA2VjEyTDE4IDE0QzE4IDkuNiAxNC40IDYgMTAgNkwxMiAySDE4TTE4IDIwVjE2TDIyIDE0VjIwQzIyIDIxLjEgMjEuMSAyMiAyMCAyMlMxOCAyMS4xIDE4IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb3RzdHJhcCA9IFwiTTExLjc5IDExLjVIOS43MlY4LjE5SDEyLjE5QzEzLjQ1IDguMTkgMTQuMTUgOC43NSAxNC4xNSA5Ljc4QzE0LjE1IDEwLjkgMTMuMzIgMTEuNSAxMS43OSAxMS41TTEyLjE2IDEyLjYzSDkuNzJWMTYuMjdMMTIuMjggMTYuMjdDMTMuODQgMTYuMjcgMTQuNjYgMTUuNjQgMTQuNjYgMTQuNDRTMTMuODEgMTIuNjMgMTIuMTYgMTIuNjNNMjIgNS4zMVYxOC42OUMyMiAyMC41IDIwLjUgMjIgMTguNjkgMjJINS4zMUMzLjUgMjIgMiAyMC41IDIgMTguNjlWNS4zMUMyIDMuNSAzLjUgMiA1LjMxIDJIMTguNjlDMjAuNSAyIDIyIDMuNSAyMiA1LjMxTTE2IDE0LjVDMTYgMTMuMTIgMTUuMDggMTIuMTMgMTMuNjcgMTEuOTVWMTEuODlDMTQuNjcgMTEuNzEgMTUuNDYgMTAuNzEgMTUuNDYgOS42M0MxNS40NiA4LjA4IDE0LjI2IDcuMDUgMTIuNSA3LjA1SDguNDNWMTcuNDFIMTIuNDdDMTQuNjggMTcuNDEgMTYgMTYuMzIgMTYgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJBbGwgPSBcIk0xOSwxMUgxM1Y1SDE5TTE5LDE5SDEzVjEzSDE5TTExLDExSDVWNUgxMU0xMSwxOUg1VjEzSDExTTMsMjFIMjFWM0gzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckFsbFZhcmlhbnQgPSBcIk0zLDIxVjNIMjFWMjFIM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckJvdHRvbSA9IFwiTTUsMTVIM1YxN0g1TTMsMjFIMjFWMTlIM001LDExSDNWMTNINU0xOSw5SDIxVjdIMTlNMTksNUgyMVYzSDE5TTUsN0gzVjlINU0xOSwxN0gyMVYxNUgxOU0xOSwxM0gyMVYxMUgxOU0xNywzSDE1VjVIMTdNMTMsM0gxMVY1SDEzTTE3LDExSDE1VjEzSDE3TTEzLDdIMTFWOUgxM001LDNIM1Y1SDVNMTMsMTFIMTFWMTNIMTNNOSwzSDdWNUg5TTEzLDE1SDExVjE3SDEzTTksMTFIN1YxM0g5VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckJvdHRvbVZhcmlhbnQgPSBcIk01LDE1SDNWMTdINU0zLDIxSDIxVjE5SDNNNSwxMUgzVjEzSDVNMTksOUgyMVY3SDE5TTE5LDVIMjFWM0gxOU01LDdIM1Y5SDVNMTksMTdIMjFWMTVIMTlNMTksMTNIMjFWMTFIMTlNMTcsM0gxNVY1SDE3TTEzLDNIMTFWNUgxM001LDNIM1Y1SDVNOSwzSDdWNUg5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyQ29sb3IgPSBcIk0yMC43MSw0LjA0QzIxLjEsMy42NSAyMS4xLDMgMjAuNzEsMi42M0wxOC4zNywwLjI5QzE4LC0wLjEgMTcuMzUsLTAuMSAxNi45NiwwLjI5TDE1LDIuMjVMMTguNzUsNk0xNy43NSw3TDE0LDMuMjVMNCwxMy4yNVYxN0g3Ljc1TDE3Ljc1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVySG9yaXpvbnRhbCA9IFwiTTE5LDIxSDIxVjE5SDE5TTE1LDIxSDE3VjE5SDE1TTExLDE3SDEzVjE1SDExTTE5LDlIMjFWN0gxOU0xOSw1SDIxVjNIMTlNMywxM0gyMVYxMUgzTTExLDIxSDEzVjE5SDExTTE5LDE3SDIxVjE1SDE5TTEzLDNIMTFWNUgxM00xMyw3SDExVjlIMTNNMTcsM0gxNVY1SDE3TTksM0g3VjVIOU01LDNIM1Y1SDVNNywyMUg5VjE5SDdNMywxN0g1VjE1SDNNNSw3SDNWOUg1TTMsMjFINVYxOUgzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckluc2lkZSA9IFwiTTE5LDE3SDIxVjE1SDE5TTE5LDIxSDIxVjE5SDE5TTEzLDNIMTFWMTFIM1YxM0gxMVYyMUgxM1YxM0gyMVYxMUgxM00xNSwyMUgxN1YxOUgxNU0xOSw1SDIxVjNIMTlNMTksOUgyMVY3SDE5TTE3LDNIMTVWNUgxN001LDNIM1Y1SDVNOSwzSDdWNUg5TTMsMTdINVYxNUgzTTUsN0gzVjlINU03LDIxSDlWMTlIN00zLDIxSDVWMTlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJMZWZ0ID0gXCJNMTUsNUgxN1YzSDE1TTE1LDEzSDE3VjExSDE1TTE5LDIxSDIxVjE5SDE5TTE5LDEzSDIxVjExSDE5TTE5LDVIMjFWM0gxOU0xOSwxN0gyMVYxNUgxOU0xNSwyMUgxN1YxOUgxNU0xOSw5SDIxVjdIMTlNMywyMUg1VjNIM003LDEzSDlWMTFIN003LDVIOVYzSDdNNywyMUg5VjE5SDdNMTEsMTNIMTNWMTFIMTFNMTEsOUgxM1Y3SDExTTExLDVIMTNWM0gxMU0xMSwxN0gxM1YxNUgxMU0xMSwyMUgxM1YxOUgxMVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJMZWZ0VmFyaWFudCA9IFwiTTE1LDVIMTdWM0gxNU0xOSwyMUgyMVYxOUgxOU0xOSwxM0gyMVYxMUgxOU0xOSw1SDIxVjNIMTlNMTksMTdIMjFWMTVIMTlNMTUsMjFIMTdWMTlIMTVNMTksOUgyMVY3SDE5TTMsMjFINVYzSDNNNyw1SDlWM0g3TTcsMjFIOVYxOUg3TTExLDVIMTNWM0gxMU0xMSwyMUgxM1YxOUgxMVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJOb25lID0gXCJNMTUsNUgxN1YzSDE1TTE1LDEzSDE3VjExSDE1TTE1LDIxSDE3VjE5SDE1TTExLDVIMTNWM0gxMU0xOSw1SDIxVjNIMTlNMTEsOUgxM1Y3SDExTTE5LDlIMjFWN0gxOU0xOSwyMUgyMVYxOUgxOU0xOSwxM0gyMVYxMUgxOU0xOSwxN0gyMVYxNUgxOU0xMSwxM0gxM1YxMUgxMU0zLDVINVYzSDNNMyw5SDVWN0gzTTMsMTNINVYxMUgzTTMsMTdINVYxNUgzTTMsMjFINVYxOUgzTTExLDIxSDEzVjE5SDExTTExLDE3SDEzVjE1SDExTTcsMjFIOVYxOUg3TTcsMTNIOVYxMUg3TTcsNUg5VjNIN1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlck5vbmVWYXJpYW50ID0gXCJNMTUsNUgxN1YzSDE1TTE1LDIxSDE3VjE5SDE1TTExLDVIMTNWM0gxMU0xOSw1SDIxVjNIMTlNMTksOUgyMVY3SDE5TTE5LDIxSDIxVjE5SDE5TTE5LDEzSDIxVjExSDE5TTE5LDE3SDIxVjE1SDE5TTMsNUg1VjNIM00zLDlINVY3SDNNMywxM0g1VjExSDNNMywxN0g1VjE1SDNNMywyMUg1VjE5SDNNMTEsMjFIMTNWMTlIMTFNNywyMUg5VjE5SDdNNyw1SDlWM0g3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyT3V0c2lkZSA9IFwiTTksMTFIN1YxM0g5TTEzLDE1SDExVjE3SDEzTTE5LDE5SDVWNUgxOU0zLDIxSDIxVjNIM00xNywxMUgxNVYxM0gxN00xMywxMUgxMVYxM0gxM00xMyw3SDExVjlIMTNWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJSaWdodCA9IFwiTTExLDlIMTNWN0gxMU0xMSw1SDEzVjNIMTFNMTEsMTNIMTNWMTFIMTFNMTUsNUgxN1YzSDE1TTE1LDIxSDE3VjE5SDE1TTE5LDIxSDIxVjNIMTlNMTUsMTNIMTdWMTFIMTVNMTEsMTdIMTNWMTVIMTFNMyw5SDVWN0gzTTMsMTdINVYxNUgzTTMsMTNINVYxMUgzTTExLDIxSDEzVjE5SDExTTMsMjFINVYxOUgzTTcsMTNIOVYxMUg3TTcsNUg5VjNIN00zLDVINVYzSDNNNywyMUg5VjE5SDdWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyUmlnaHRWYXJpYW50ID0gXCJNMTEsNUgxM1YzSDExTTE1LDVIMTdWM0gxNU0xNSwyMUgxN1YxOUgxNU0xOSwyMUgyMVYzSDE5TTMsOUg1VjdIM00zLDE3SDVWMTVIM00zLDEzSDVWMTFIM00xMSwyMUgxM1YxOUgxMU0zLDIxSDVWMTlIM003LDVIOVYzSDdNMyw1SDVWM0gzTTcsMjFIOVYxOUg3VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlclN0eWxlID0gXCJNMTUsMjFIMTdWMTlIMTVNMTksMjFIMjFWMTlIMTlNNywyMUg5VjE5SDdNMTEsMjFIMTNWMTlIMTFNMTksMTdIMjFWMTVIMTlNMTksMTNIMjFWMTFIMTlNMywzVjIxSDVWNUgyMVYzTTE5LDlIMjFWN0gxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlclRvcCA9IFwiTTE1LDEzSDE3VjExSDE1TTE5LDIxSDIxVjE5SDE5TTExLDlIMTNWN0gxMU0xNSwyMUgxN1YxOUgxNU0xOSwxN0gyMVYxNUgxOU0zLDVIMjFWM0gzTTE5LDEzSDIxVjExSDE5TTE5LDlIMjFWN0gxOU0xMSwxN0gxM1YxNUgxMU0zLDlINVY3SDNNMywxM0g1VjExSDNNMywyMUg1VjE5SDNNMywxN0g1VjE1SDNNMTEsMjFIMTNWMTlIMTFNMTEsMTNIMTNWMTFIMTFNNywxM0g5VjExSDdNNywyMUg5VjE5SDdWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyVG9wVmFyaWFudCA9IFwiTTE5LDIxSDIxVjE5SDE5TTE1LDIxSDE3VjE5SDE1TTE5LDE3SDIxVjE1SDE5TTMsNUgyMVYzSDNNMTksMTNIMjFWMTFIMTlNMTksOUgyMVY3SDE5TTMsOUg1VjdIM00zLDEzSDVWMTFIM00zLDIxSDVWMTlIM00zLDE3SDVWMTVIM00xMSwyMUgxM1YxOUgxMU03LDIxSDlWMTlIN1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJWZXJ0aWNhbCA9IFwiTTE1LDEzSDE3VjExSDE1TTE1LDIxSDE3VjE5SDE1TTE1LDVIMTdWM0gxNU0xOSw5SDIxVjdIMTlNMTksNUgyMVYzSDE5TTE5LDEzSDIxVjExSDE5TTE5LDIxSDIxVjE5SDE5TTExLDIxSDEzVjNIMTFNMTksMTdIMjFWMTVIMTlNNyw1SDlWM0g3TTMsMTdINVYxNUgzTTMsMjFINVYxOUgzTTMsMTNINVYxMUgzTTcsMTNIOVYxMUg3TTcsMjFIOVYxOUg3TTMsNUg1VjNIM00zLDlINVY3SDNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVTb2RhID0gXCJNMTUgMTFWMjBBMiAyIDAgMCAxIDEzIDIySDExQTIgMiAwIDAgMSA5IDIwVjExQTIgMiAwIDAgMSA5LjYgOS41OEMxMS4xIDcuODkgMTEgNCAxMSA0SDEwVjJIMTRWNEgxM1MxMi45IDcuODkgMTQuNCA5LjU4QTIgMiAwIDAgMSAxNSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVTb2RhQ2xhc3NpYyA9IFwiTTE1IDEzLjc3QTMgMyAwIDAgMCAxNSAxOC4yM1YyMEEyIDIgMCAwIDEgMTMgMjJIMTFBMiAyIDAgMCAxIDkgMjBWMTguMjNBMyAzIDAgMCAwIDkgMTMuNzdWOUExMi4yOCAxMi4yOCAwIDAgMCAxMC45MSA0SDEwVjJIMTRWNEgxMy4wOUExMi4yOCAxMi4yOCAwIDAgMCAxNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVNvZGFDbGFzc2ljT3V0bGluZSA9IFwiTTEwIDJWNEgxMC45MUMxMC42NSA1Ljc5IDkgNy41IDggOVYxMy43N0M5LjMyIDE0Ljk2IDkuMzIgMTcuMDQgOCAxOC4yM1YyMEM4IDIxLjExIDguOSAyMiAxMCAyMkgxNEMxNS4xMSAyMiAxNiAyMS4xMSAxNiAyMFYxOC4yM0MxNC42OCAxNy4wNCAxNC42OCAxNC45NiAxNiAxMy43N1Y5QzE1IDcuNSAxMy4zNSA1Ljc5IDEzLjA5IDRIMTRWMk0xMiA2LjVDMTIuMjQgNyAxMy41NCA4LjUgMTMuOSA4LjkxTDE0IDlWMTNDMTMuMzUgMTMuODcgMTMgMTQuOTIgMTMgMTZDMTMgMTcuMDggMTMuMzUgMTguMTMgMTQgMTlWMjBIMTBWMTlDMTAuNjUgMTguMTMgMTEgMTcuMDggMTEgMTZDMTEgMTQuOTIgMTAuNjUgMTMuODcgMTAgMTNWOUwxMC4xIDguOTFDMTAuNDYgOC41IDExLjc2IDcgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVNvZGFPdXRsaW5lID0gXCJNMTQuNCA5LjU4QzEyLjkgNy44OSAxMyA0IDEzIDRIMTRWMkgxMFY0SDExUzExLjEgNy44OSA5LjYgOS41OEEyIDIgMCAwIDAgOSAxMVYyMEEyIDIgMCAwIDAgMTEgMjJIMTNBMiAyIDAgMCAwIDE1IDIwVjExQTIgMiAwIDAgMCAxNC40IDkuNThNMTMgMjBIMTFWMTFMMTEuMSAxMC45MUE2LjI2IDYuMjYgMCAwIDAgMTIgOS41QTYuMjYgNi4yNiAwIDAgMCAxMi45IDEwLjkxTDEzIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljID0gXCJNMTMgNEgxMUwxMCAySDE0TDEzIDRNMTkgMTNWMjJINVYxM0M1IDEwLjI0IDcuMjQgOCAxMCA4VjZIOVY1SDE1VjZIMTRWOEMxNi43NiA4IDE5IDEwLjI0IDE5IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljT3V0bGluZSA9IFwiTTEzIDRIMTFMMTAgMkgxNEwxMyA0TTE5IDEzVjIySDVWMTNDNSAxMC4yNCA3LjI0IDggMTAgOFY2SDlWNUgxNVY2SDE0VjhDMTYuNzYgOCAxOSAxMC4yNCAxOSAxM00xNyAxM0MxNyAxMS4zNSAxNS42NSAxMCAxNCAxMEgxMEM4LjM1IDEwIDcgMTEuMzUgNyAxM1YyMEgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVUb25pY1BsdXMgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xNCA4VjZIMTVWNUg5VjZIMTBWOEM3LjI0IDggNSAxMC4yNCA1IDEzVjIySDE5VjEzQzE5IDEwLjI0IDE2Ljc2IDggMTQgOE0xNiAxN0gxM1YyMEgxMVYxN0g4VjE1SDExVjEySDEzVjE1SDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljUGx1c091dGxpbmUgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xOSAxM1YyMkg1VjEzQzUgMTAuMjQgNy4yNCA4IDEwIDhWNkg5VjVIMTVWNkgxNFY4QzE2Ljc2IDggMTkgMTAuMjQgMTkgMTNNMTcgMTNDMTcgMTEuMzUgMTUuNjUgMTAgMTQgMTBIMTBDOC4zNSAxMCA3IDExLjM1IDcgMTNWMjBIMTdWMTNNMTUgMTZIMTNWMThIMTFWMTZIOVYxNEgxMVYxMkgxM1YxNEgxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVUb25pY1NrdWxsID0gXCJNMTkgMTNWMjJINVYxM0M1IDEwLjI0IDcuMjQgOCAxMCA4VjZIOVY1SDE1VjZIMTRWOEMxNi43NiA4IDE5IDEwLjI0IDE5IDEzTTEzIDRMMTQgMkgxMEwxMSA0SDEzTTEyIDExQzkuNzkgMTEgOCAxMi43OSA4IDE1QzggMTYgOC4zOSAxNi45IDkgMTcuNTlWMTlIMTAuMjVWMTcuNUgxMS4zOFYxOUgxMi42M1YxNy41SDEzLjc1VjE5SDE1VjE3LjU5QzE1LjYxIDE2LjkgMTYgMTYgMTYgMTVDMTYgMTIuNzkgMTQuMjEgMTEgMTIgMTFNMTAuNSAxNUM5Ljk1IDE1IDkuNSAxNC41NSA5LjUgMTRTOS45NSAxMyAxMC41IDEzIDExLjUgMTMuNDUgMTEuNSAxNCAxMS4wNSAxNSAxMC41IDE1TTExLjI1IDE2LjI1TDEyIDE1TDEyLjc1IDE2LjI1SDExLjI1TTEzLjUgMTVDMTIuOTUgMTUgMTIuNSAxNC41NSAxMi41IDE0UzEyLjk1IDEzIDEzLjUgMTMgMTQuNSAxMy40NSAxNC41IDE0IDE0LjA1IDE1IDEzLjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm90dGxlVG9uaWNTa3VsbE91dGxpbmUgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xNCA4VjZIMTVWNUg5VjZIMTBWOEM3LjI0IDggNSAxMC4yNCA1IDEzVjIySDE5VjEzQzE5IDEwLjI0IDE2Ljc2IDggMTQgOE0xNyAyMEg3VjEzQzcgMTEuMzUgOC4zNSAxMCAxMCAxMEgxNEMxNS42NSAxMCAxNyAxMS4zNSAxNyAxM1YyME0xMiAxMUM5Ljc5IDExIDggMTIuNzkgOCAxNUM4IDE2IDguMzkgMTYuOSA5IDE3LjU5VjE5SDEwLjI1VjE3LjVIMTEuMzhWMTlIMTIuNjNWMTcuNUgxMy43NVYxOUgxNVYxNy41OUMxNS42MSAxNi45IDE2IDE2IDE2IDE1QzE2IDEyLjc5IDE0LjIxIDExIDEyIDExTTEwLjUgMTVDOS45NSAxNSA5LjUgMTQuNTUgOS41IDE0UzkuOTUgMTMgMTAuNSAxMyAxMS41IDEzLjQ1IDExLjUgMTQgMTEuMDUgMTUgMTAuNSAxNU0xMS4yNSAxNi4yNUwxMiAxNUwxMi43NSAxNi4yNUgxMS4yNU0xMy41IDE1QzEyLjk1IDE1IDEyLjUgMTQuNTUgMTIuNSAxNFMxMi45NSAxMyAxMy41IDEzIDE0LjUgMTMuNDUgMTQuNSAxNCAxNC4wNSAxNSAxMy41IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVdpbmUgPSBcIk0xMCwyMkExLDEgMCAwLDEgOSwyMVYxMUM5LDkgMTAsNy4yNSAxMSw3VjIuNUEwLjUsMC41IDAgMCwxIDExLjUsMkgxMi41QTAuNSwwLjUgMCAwLDEgMTMsMi41VjdDMTQsNy4yNSAxNSw5IDE1LDExVjIxQTEsMSAwIDAsMSAxNCwyMkgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVXaW5lT3V0bGluZSA9IFwiTTExLjUgMkMxMS4yMiAyIDExIDIuMjIgMTEgMi41VjdDMTAuOTMgNyAxMC44NSA3IDEwLjc4IDcuMDNDOS44MiA3LjI3IDkuMjEgOCA4Ljc2IDguODlDOC4zIDkuNzYgOCAxMC44NCA4IDEyQzguMDUgMTUgOCAxOC4wMyA4IDIxQzggMjEuNTUgOC40NSAyMiA5IDIyQzExIDIyIDEzIDIyIDE1IDIyQzE1LjU1IDIyIDE2IDIxLjU1IDE2IDIxQzE2LjA0IDE4IDE2IDE1IDE2IDEyQzE2IDEwLjg0IDE1Ljc0IDkuNzYgMTUuMjggOC44OEMxNC44MyA4IDE0LjIyIDcuMjcgMTMuMjYgNy4wNEMxMy4xOCA3IDEzLjA1IDcgMTMgN1YyLjVDMTMgMi4yMiAxMi43OCAyIDEyLjUgMk0xMiA4Ljg1QzEyLjMyIDguODUgMTIuNjMgOC45IDEyLjc4IDlDMTIuODUgOS4wMyAxMy4yIDkuMjYgMTMuNSA5LjgxQzEzLjc4IDEwLjM3IDE0IDExLjE3IDE0IDEyVjIwSDEwVjEyQzEwIDExLjE3IDEwLjIyIDEwLjM3IDEwLjUgOS44MUMxMC44IDkuMjYgMTEuMTUgOS4wMyAxMS4yMiA5QzExLjM2IDguOSAxMS42OCA4Ljg1IDEyIDguODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93VGllID0gXCJNMTUsMTRMMjEsMTdWN0wxNSwxMFYxNE05LDE0TDMsMTdWN0w5LDEwVjE0TTEwLDEwSDE0VjE0SDEwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2wgPSBcIk0yMiAxNUMyMiAxOC45IDE4LjkgMjIgMTUgMjJIOUM1LjEgMjIgMiAxOC45IDIgMTVWMTJIMjJWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93bE1peCA9IFwiTTE2LjIgMTFMMjAuMyA0LjVMMjIgNS41TDE4LjYgMTFIMTYuMk0xNS42IDEySDJWMTVDMiAxOC45IDUuMSAyMiA5IDIySDE1QzE4LjkgMjIgMjIgMTguOSAyMiAxNVYxMkgxNS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2xNaXhPdXRsaW5lID0gXCJNMTUuNiAxMkgyVjE1QzIgMTguOSA1LjEgMjIgOSAyMkgxNUMxOC45IDIyIDIyIDE4LjkgMjIgMTVWMTJIMTUuNk0yMCAxNUMyMCAxNy44IDE3LjggMjAgMTUgMjBIOUM2LjIgMjAgNCAxNy44IDQgMTVWMTRIMjBWMTVNMTYuMiAxMUwyMC4zIDQuNEwyMiA1LjVMMTguNiAxMUgxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2xPdXRsaW5lID0gXCJNMiAxMlYxNUMyIDE4LjkgNS4xIDIyIDkgMjJIMTVDMTguOSAyMiAyMiAxOC45IDIyIDE1VjEySDJNNCAxNEgyMFYxNUMyMCAxNy44IDE3LjggMjAgMTUgMjBIOUM2LjIgMjAgNCAxNy44IDQgMTVWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93bGluZyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLjUsMTFBMS41LDEuNSAwIDAsMCAxMSwxMi41QTEuNSwxLjUgMCAwLDAgMTIuNSwxNEExLjUsMS41IDAgMCwwIDE0LDEyLjVBMS41LDEuNSAwIDAsMCAxMi41LDExTTEyLDVBMiwyIDAgMCwwIDEwLDdBMiwyIDAgMCwwIDEyLDlBMiwyIDAgMCwwIDE0LDdBMiwyIDAgMCwwIDEyLDVNNS45Myw4LjVDNS4zOCw5LjQ1IDUuNzEsMTAuNjcgNi42NiwxMS4yMkM3LjYyLDExLjc4IDguODQsMTEuNDUgOS40LDEwLjVDOS45NSw5LjUzIDkuNjIsOC4zMSA4LjY2LDcuNzZDNy43MSw3LjIxIDYuNSw3LjUzIDUuOTMsOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJveCA9IFwiTTE1LjM5LDE0LjA0VjE0LjA0QzE1LjM5LDEyLjYyIDE0LjI0LDExLjQ3IDEyLjgyLDExLjQ3QzExLjQxLDExLjQ3IDEwLjI2LDEyLjYyIDEwLjI2LDE0LjA0VjE0LjA0QzEwLjI2LDE1LjQ1IDExLjQxLDE2LjYgMTIuODIsMTYuNkMxNC4yNCwxNi42IDE1LjM5LDE1LjQ1IDE1LjM5LDE0LjA0TTE3LjEsMTQuMDRDMTcuMSwxNi40IDE1LjE4LDE4LjMxIDEyLjgyLDE4LjMxQzExLjE5LDE4LjMxIDkuNzcsMTcuMzkgOS4wNSwxNi4wNEM4LjMzLDE3LjM5IDYuOTEsMTguMzEgNS4yOCwxOC4zMUMyLjk0LDE4LjMxIDEuMDQsMTYuNDMgMSwxNC4xMVYxNC4xMUgxVjdIMVY3QzEsNi41NiAxLjM5LDYuMTggMS44Niw2LjE4QzIuMzMsNi4xOCAyLjcsNi41NiAyLjcxLDdWN0gyLjcxVjEwLjYyQzMuNDMsMTAuMDggNC4zMiw5Ljc2IDUuMjgsOS43NkM2LjkxLDkuNzYgOC4zMywxMC42OCA5LjA1LDEyLjAzQzkuNzcsMTAuNjggMTEuMTksOS43NiAxMi44Miw5Ljc2QzE1LjE4LDkuNzYgMTcuMSwxMS42OCAxNy4xLDE0LjA0VjE0LjA0TTcuODQsMTQuMDRWMTQuMDRDNy44NCwxMi42MiA2LjY5LDExLjQ3IDUuMjgsMTEuNDdDMy44NiwxMS40NyAyLjcxLDEyLjYyIDIuNzEsMTQuMDRWMTQuMDRDMi43MSwxNS40NSAzLjg2LDE2LjYgNS4yOCwxNi42QzYuNjksMTYuNiA3Ljg0LDE1LjQ1IDcuODQsMTQuMDRNMjIuODQsMTYuOTZWMTYuOTZDMjIuOTUsMTcuMTIgMjMsMTcuMyAyMywxNy40N0MyMywxNy43MyAyMi44OCwxOCAyMi42NiwxOC4xNUMyMi41LDE4LjI2IDIyLjMzLDE4LjMyIDIyLjE1LDE4LjMyQzIxLjksMTguMzIgMjEuNjUsMTguMjEgMjEuNSwxOEwxOS41OSwxNS40N0wxNy43LDE4VjE4QzE3LjUzLDE4LjIxIDE3LjI4LDE4LjMyIDE3LjAzLDE4LjMyQzE2Ljg1LDE4LjMyIDE2LjY3LDE4LjI2IDE2LjUsMTguMTVDMTYuMjksMTggMTYuMTcsMTcuNzIgMTYuMTcsMTcuNDZDMTYuMTcsMTcuMjkgMTYuMjMsMTcuMTEgMTYuMzMsMTYuOTZWMTYuOTZIMTYuMzNWMTYuOTZMMTguNSwxNC4wNEwxNi4zMywxMS4xMVYxMS4xMUgxNi4zM1YxMS4xMUMxNi4yMiwxMC45NiAxNi4xNywxMC43OSAxNi4xNywxMC42MUMxNi4xNywxMC4zNSAxNi4yOSwxMC4xIDE2LjUsOS45M0MxNi44OSw5LjY1IDE3LjQxLDkuNzIgMTcuNywxMC4wOVYxMC4wOUwxOS41OSwxMi42MUwyMS41LDEwLjA5QzIxLjc2LDkuNzIgMjIuMjksOS42NSAyMi42Niw5LjkzQzIyLjg5LDEwLjEgMjMsMTAuMzYgMjMsMTAuNjNDMjMsMTAuOCAyMi45NSwxMC45NyAyMi44NCwxMS4xMVYxMS4xMUgyMi44NFYxMS4xMUwyMC42NiwxNC4wNEwyMi44NCwxNi45NlYxNi45NkgyMi44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3hDdXR0ZXIgPSBcIk03LjIyLDExLjkxQzYuODksMTIuMjQgNi43MSwxMi42NSA2LjY2LDEzLjA4TDEyLjE3LDE1LjQ0TDIwLjY2LDYuOTZDMjEuNDQsNi4xNyAyMS40NCw0LjkxIDIwLjY2LDQuMTNMMTkuMjQsMi43MUMxOC40NiwxLjkzIDE3LjIsMS45MyAxNi40MSwyLjcxTDcuMjIsMTEuOTFNNSwxNlYyMS43NUwxMC44MSwxNi41M0w1LjgxLDE0LjUzTDUsMTZNMTcuMTIsNC44M0MxNy41LDQuNDQgMTguMTUsNC40NCAxOC41NCw0LjgzQzE4LjkzLDUuMjMgMTguOTMsNS44NiAxOC41NCw2LjI1QzE4LjE1LDYuNjQgMTcuNSw2LjY0IDE3LjEyLDYuMjVDMTYuNzMsNS44NiAxNi43Myw1LjIzIDE3LjEyLDQuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm94Q3V0dGVyT2ZmID0gXCJNMjAuODQgMjIuNzNMMTIuODYgMTQuNzVMMTIuMTcgMTUuNDRMNi42NiAxMy4wOEM2LjcxIDEyLjY1IDYuODkgMTIuMjQgNy4yMiAxMS45MUw4LjYyIDEwLjVMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNS40MSAxMi4yMUwxMS4xNiA3Ljk2TDE2LjQxIDIuNzFDMTcuMiAxLjkzIDE4LjQ2IDEuOTMgMTkuMjQgMi43MUwyMC42NiA0LjEzQzIxLjQ0IDQuOTEgMjEuNDQgNi4xNyAyMC42NiA2Ljk2TDE1LjQxIDEyLjIxTTE3LjEyIDYuMjVDMTcuNSA2LjY0IDE4LjE1IDYuNjQgMTguNTQgNi4yNUMxOC45MyA1Ljg2IDE4LjkzIDUuMjMgMTguNTQgNC44M0MxOC4xNSA0LjQ0IDE3LjUgNC40NCAxNy4xMiA0LjgzQzE2LjczIDUuMjMgMTYuNzMgNS44NiAxNy4xMiA2LjI1TTUgMTZWMjEuNzVMMTAuODEgMTYuNTNMNS44MSAxNC41M0w1IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJveFNoYWRvdyA9IFwiTTMsM0gxOFYxOEgzVjNNMTksMTlIMjFWMjFIMTlWMTlNMTksMTZIMjFWMThIMTlWMTZNMTksMTNIMjFWMTVIMTlWMTNNMTksMTBIMjFWMTJIMTlWMTBNMTksN0gyMVY5SDE5VjdNMTYsMTlIMThWMjFIMTZWMTlNMTMsMTlIMTVWMjFIMTNWMTlNMTAsMTlIMTJWMjFIMTBWMTlNNywxOUg5VjIxSDdWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm94aW5nR2xvdmUgPSBcIk0xOSwxNlY2SDIyVjE2SDE5TTEyLDRDOCw0IDcsNCA3LDRDNyw0IDIsNCAyLDhWMTRDMiwxNS43NyAzLDE2Ljc2IDQuMDcsMTcuMzFDNC40LDE1LjQzIDYuMDMsMTQgOCwxNEgxMVYxNkg4QTIsMiAwIDAsMCA2LDE4QzYsMTkuMTEgNi45LDIwIDgsMjBIMTNDMTcsMjAgMTcsMTYgMTcsMTZWNkMxNyw2IDE2LDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmFpbGxlID0gXCJNNyw4QTEsMSAwIDAsMSA4LDdBMSwxIDAgMCwxIDksOFYxMi40N0wxMC4yMSwxMi42TDE1LjE1LDE0Ljc5QzE1LjY3LDE1LjAzIDE2LDE1LjU2IDE2LDE2LjE0VjIwLjVDMTUuOTcsMjEuMzIgMTUuMzIsMjEuOTcgMTQuNSwyMkg4QzcuNjIsMjIgNy4yNiwyMS44NSA3LDIxLjU3TDIuMSwxNy4zN0wyLjg0LDE2LjZDMy4wMywxNi4zOSAzLjMsMTYuMjggMy41OCwxNi4yOEgzLjhMNywxOFY4TTE5LjUsMkExLjUsMS41IDAgMCwwIDE4LDMuNUExLjUsMS41IDAgMCwwIDE5LjUsNUExLjUsMS41IDAgMCwwIDIxLDMuNUExLjUsMS41IDAgMCwwIDE5LjUsMk0xOS41LDdBMS41LDEuNSAwIDAsMCAxOCw4LjVBMS41LDEuNSAwIDAsMCAxOS41LDEwQTEuNSwxLjUgMCAwLDAgMjEsOC41QTEuNSwxLjUgMCAwLDAgMTkuNSw3TTE0LjUsN0ExLjUsMS41IDAgMCwwIDEzLDguNUExLjUsMS41IDAgMCwwIDE0LjUsMTBBMS41LDEuNSAwIDAsMCAxNiw4LjVBMS41LDEuNSAwIDAsMCAxNC41LDdNMTkuNSwxMkExLjUsMS41IDAgMCwwIDE4LDEzLjVBMS41LDEuNSAwIDAsMCAxOS41LDE1QTEuNSwxLjUgMCAwLDAgMjEsMTMuNUExLjUsMS41IDAgMCwwIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJhaW4gPSBcIk0yMS4zMywxMi45MUMyMS40MiwxNC40NiAyMC43MSwxNS45NSAxOS40NCwxNi44NkwyMC4yMSwxOC4zNUMyMC40NCwxOC44IDIwLjQ3LDE5LjMzIDIwLjI3LDE5LjhDMjAuMDgsMjAuMjcgMTkuNjksMjAuNjQgMTkuMjEsMjAuOEwxOC40MiwyMS4wNUMxOC4yNSwyMS4xMSAxOC4wNiwyMS4xNCAxNy44OCwyMS4xNEMxNy4zNywyMS4xNCAxNi44OSwyMC45MSAxNi41NiwyMC41TDE0LjQ0LDE4QzEzLjU1LDE3Ljg1IDEyLjcxLDE3LjQ3IDEyLDE2LjlDMTEuNSwxNy4wNSAxMSwxNy4xMyAxMC41LDE3LjEzQzkuNjIsMTcuMTMgOC43NCwxNi44NiA4LDE2LjM0QzcuNDcsMTYuNSA2LjkzLDE2LjU3IDYuMzgsMTYuNTZDNS41OSwxNi41NyA0LjgxLDE2LjQxIDQuMDgsMTYuMTFDMi42NSwxNS40NyAxLjcsMTQuMDcgMS42NSwxMi41QzEuNTcsMTEuNzggMS42OSwxMS4wNSAyLDEwLjM5QzEuNzEsOS42NCAxLjY4LDguODIgMS45Myw4LjA2QzIuMyw3LjExIDMsNi4zMiAzLjg3LDUuODJDNC40NSw0LjEzIDYuMDgsMyA3Ljg3LDMuMTJDOS40NywxLjYyIDExLjkyLDEuNDYgMTMuNywyLjc1QzE0LjEyLDIuNjQgMTQuNTYsMi41OCAxNSwyLjU4QzE2LjM2LDIuNTUgMTcuNjUsMy4xNSAxOC41LDQuMjJDMjAuNTQsNC43NSAyMiw2LjU3IDIyLjA4LDguNjlDMjIuMTMsOS44IDIxLjgzLDEwLjg5IDIxLjIyLDExLjgyQzIxLjI5LDEyLjE4IDIxLjMzLDEyLjU0IDIxLjMzLDEyLjkxTTE2LjMzLDExLjVDMTYuOSwxMS41NyAxNy4zNSwxMiAxNy4zNSwxMi41N0ExLDEgMCAwLDEgMTYuMzUsMTMuNTdIMTUuNzJDMTUuNCwxNC40NyAxNC44NCwxNS4yNiAxNC4xLDE1Ljg2QzE0LjM1LDE1Ljk1IDE0LjYxLDE2IDE0Ljg3LDE2LjA3QzIwLDE2IDE5LjQsMTIuODcgMTkuNCwxMi44MkMxOS4zNCwxMS4zOSAxOC4xNCwxMC4yNyAxNi43MSwxMC4zM0ExLDEgMCAwLDEgMTUuNzEsOS4zM0ExLDEgMCAwLDEgMTYuNzEsOC4zM0MxNy45NCw4LjM2IDE5LjEyLDguODIgMjAuMDQsOS42M0MyMC4wOSw5LjM0IDIwLjEyLDkuMDQgMjAuMTIsOC43NEMyMC4wNiw3LjUgMTkuNSw2LjQyIDE3LjI1LDYuMjFDMTYsMy4yNSAxMi44NSw0Ljg5IDEyLjg1LDUuODFWNS44MUMxMi44Miw2LjA0IDEzLjA2LDYuNTMgMTMuMSw2LjU2QTEsMSAwIDAsMSAxNC4xLDcuNTZDMTQuMSw4LjExIDEzLjY1LDguNTYgMTMuMSw4LjU2VjguNTZDMTIuNTcsOC41NCAxMi4wNyw4LjM0IDExLjY3LDhDMTEuMTksOC4zMSAxMC42NCw4LjUgMTAuMDcsOC41NlY4LjU2QzkuNSw4LjYxIDkuMDMsOC4yMSA5LDcuNjZDOC45Miw3LjEgOS4zMyw2LjYxIDkuODgsNi41NkMxMC4wNCw2LjU0IDEwLjgyLDYuNDIgMTAuODIsNS43OVY1Ljc5QzEwLjgyLDUuMTMgMTEuMDcsNC41IDExLjUsNEMxMC41OCwzLjc1IDkuNTksNC4wOCA4LjU5LDUuMjlDNi43NSw1IDYsNS4yNSA1LjQ1LDcuMkM0LjUsNy42NyA0LDggMy43OCw5QzQuODYsOC43OCA1Ljk3LDguODcgNyw5LjI1QzcuNSw5LjQ0IDcuNzgsMTAgNy41OSwxMC41NEM3LjQsMTEuMDYgNi44MiwxMS4zMiA2LjMsMTEuMTNDNS41NywxMC44MSA0Ljc1LDEwLjc5IDQsMTEuMDdDMy42OCwxMS4zNCAzLjY4LDExLjkgMy42OCwxMi4zNEMzLjY4LDEzLjA4IDQuMDUsMTMuNzcgNC42OCwxNC4xN0M1LjIxLDE0LjQ0IDUuOCwxNC41OCA2LjM5LDE0LjU3QzYuMjQsMTQuMzEgNi4xMSwxNC4wNCA2LDEzLjc2QzUuODEsMTMuMjIgNi4xLDEyLjYzIDYuNjQsMTIuNDRDNy4xOCwxMi4yNSA3Ljc3LDEyLjU0IDcuOTYsMTMuMDhDOC4zNiwxNC4yMiA5LjM4LDE1IDEwLjU4LDE1LjEzQzExLjk1LDE1LjA2IDEzLjE3LDE0LjI1IDEzLjc3LDEzQzE0LDExLjYyIDE1LjExLDExLjUgMTYuMzMsMTEuNU0xOC4zMywxOC45N0wxNy43MSwxNy42N0wxNywxNy44M0wxOCwxOS4wOEwxOC4zMywxOC45N00xMy42OCwxMC4zNkMxMy43LDkuODMgMTMuMyw5LjM4IDEyLjc3LDkuMzNDMTIuMDYsOS4yOSAxMS4zNyw5LjUzIDEwLjg0LDEwQzEwLjI3LDEwLjU4IDkuOTcsMTEuMzggMTAsMTIuMTlBMSwxIDAgMCwwIDExLDEzLjE5QzExLjU3LDEzLjE5IDEyLDEyLjc0IDEyLDEyLjE5QzEyLDExLjkyIDEyLjA3LDExLjY1IDEyLjIzLDExLjQzQzEyLjM1LDExLjMzIDEyLjUsMTEuMjggMTIuNjYsMTEuMjhDMTMuMjEsMTEuMzEgMTMuNjgsMTAuOSAxMy42OCwxMC4zNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmVhZFNsaWNlID0gXCJNMTIsMkMxNy41LDIgMjIsNS4zNiAyMiw5LjVDMjIsMTEuMTkgMjEuMjYsMTIuNzUgMjAsMTRWMjJINFYxNEMyLjc0LDEyLjc1IDIsMTEuMTkgMiw5LjVDMiw1LjM2IDYuNSwyIDEyLDJNOCwxOEgxMlYxNEg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyZWFkU2xpY2VPdXRsaW5lID0gXCJNMTIsMkMxNy41LDIgMjIsNS4zNiAyMiw5LjVDMjIsMTEuMTkgMjEuMjYsMTIuNzUgMjAsMTRWMjJINFYxNEMyLjc0LDEyLjc1IDIsMTEuMTkgMiw5LjVDMiw1LjM2IDYuNSwyIDEyLDJNMTgsMTMuMTRDMTkuMjQsMTIuMTcgMjAsMTAuODkgMjAsOS41QzIwLDYuNDYgMTYuNDIsNCAxMiw0QzcuNTgsNCA0LDYuNDYgNCw5LjVDNCwxMC44OSA0Ljc2LDEyLjE3IDYsMTMuMTRWMjBIMThWMTMuMTRNOCwxOFYxNEgxMlYxOEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWRnZSA9IFwiTTcsMTRWMTAuOTFDNi4yOCwxMC41OCA1LjYxLDEwLjE4IDUsOS43MVYxNEg3TTUsMThIM1YxNkgxVjE0SDNWN0g1VjguNDNDNi44LDEwIDkuMjcsMTEgMTIsMTFDMTQuNzMsMTEgMTcuMiwxMCAxOSw4LjQzVjdIMjFWMTRIMjNWMTZIMjFWMThIMTlWMTZINVYxOE0xNywxMC45MVYxNEgxOVY5LjcxQzE4LjM5LDEwLjE4IDE3LjcyLDEwLjU4IDE3LDEwLjkxTTE2LDE0VjExLjMyQzE1LjM2LDExLjU1IDE0LjY5LDExLjcyIDE0LDExLjg0VjE0SDE2TTEzLDE0VjExLjk2TDEyLDEyTDExLDExLjk2VjE0SDEzTTEwLDE0VjExLjg0QzkuMzEsMTEuNzIgOC42NCwxMS41NSA4LDExLjMyVjE0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZSA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VBY2NvdW50ID0gXCJNMjAsNkgxNlY0QTIsMiAwIDAsMCAxNCwySDEwQzguODksMiA4LDIuODkgOCw0VjZINEMyLjg5LDYgMiw2Ljg5IDIsOFYxOUEyLDIgMCAwLDAgNCwyMUgyMEEyLDIgMCAwLDAgMjIsMTlWOEEyLDIgMCAwLDAgMjAsNk0xMCw0SDE0VjZIMTBWNE0xMiw5QTIuNSwyLjUgMCAwLDEgMTQuNSwxMS41QTIuNSwyLjUgMCAwLDEgMTIsMTRBMi41LDIuNSAwIDAsMSA5LjUsMTEuNUEyLjUsMi41IDAgMCwxIDEyLDlNMTcsMTlIN1YxNy43NUM3LDE2LjM3IDkuMjQsMTUuMjUgMTIsMTUuMjVDMTQuNzYsMTUuMjUgMTcsMTYuMzcgMTcsMTcuNzVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQWNjb3VudE91dGxpbmUgPSBcIk0yMCw2QzIwLjU4LDYgMjEuMDUsNi4yIDIxLjQyLDYuNTlDMjEuOCw3IDIyLDcuNDUgMjIsOFYxOUMyMiwxOS41NSAyMS44LDIwIDIxLjQyLDIwLjQxQzIxLjA1LDIwLjggMjAuNTgsMjEgMjAsMjFINEMzLjQyLDIxIDIuOTUsMjAuOCAyLjU4LDIwLjQxQzIuMiwyMCAyLDE5LjU1IDIsMTlWOEMyLDcuNDUgMi4yLDcgMi41OCw2LjU5QzIuOTUsNi4yIDMuNDIsNiA0LDZIOFY0QzgsMy40MiA4LjIsMi45NSA4LjU4LDIuNThDOC45NSwyLjIgOS40MiwyIDEwLDJIMTRDMTQuNTgsMiAxNS4wNSwyLjIgMTUuNDIsMi41OEMxNS44LDIuOTUgMTYsMy40MiAxNiw0VjZIMjBNNCw4VjE5SDIwVjhINE0xNCw2VjRIMTBWNkgxNE0xMiw5QTIuMjUsMi4yNSAwIDAsMSAxNC4yNSwxMS4yNUMxNC4yNSwxMi41IDEzLjI0LDEzLjUgMTIsMTMuNUEyLjI1LDIuMjUgMCAwLDEgOS43NSwxMS4yNUM5Ljc1LDEwIDEwLjc2LDkgMTIsOU0xNi41LDE4SDcuNVYxNi44OEM3LjUsMTUuNjMgOS41LDE0LjYzIDEyLDE0LjYzQzE0LjUsMTQuNjMgMTYuNSwxNS42MyAxNi41LDE2Ljg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZUNoZWNrID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTAuNSwxNy41TDE3LjA5LDEwLjkxTDE1LjY4LDkuNUwxMC41LDE0LjY3TDguNDEsMTIuNTlMNywxNEwxMC41LDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQ2hlY2tPdXRsaW5lID0gXCJNMjAgNkMyMC41OCA2IDIxLjA1IDYuMiAyMS40MiA2LjU5QzIxLjggNyAyMiA3LjQ1IDIyIDhWMTlDMjIgMTkuNTUgMjEuOCAyMCAyMS40MiAyMC40MUMyMS4wNSAyMC44IDIwLjU4IDIxIDIwIDIxSDRDMy40MiAyMSAyLjk1IDIwLjggMi41OCAyMC40MUMyLjIgMjAgMiAxOS41NSAyIDE5VjhDMiA3LjQ1IDIuMiA3IDIuNTggNi41OUMyLjk1IDYuMiAzLjQyIDYgNCA2SDhWNEM4IDMuNDIgOC4yIDIuOTUgOC41OCAyLjU4QzguOTUgMi4yIDkuNDIgMiAxMCAySDE0QzE0LjU4IDIgMTUuMDUgMi4yIDE1LjQyIDIuNThDMTUuOCAyLjk1IDE2IDMuNDIgMTYgNFY2SDIwTTQgOFYxOUgyMFY4SDRNMTQgNlY0SDEwVjZIMTRNMTAuNDYgMTcuNUwxNy4wNSAxMC45MUwxNS42NCA5LjVMMTAuNDYgMTQuNjdMOC4zNyAxMi41OUw2Ljk2IDE0TDEwLjQ2IDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQ2xvY2sgPSBcIk0yMSAxMS4xMVY3QTIgMiAwIDAgMCAxOSA1SDE1VjNBMiAyIDAgMCAwIDEzIDFIOUEyIDIgMCAwIDAgNyAzVjVIM0EyIDIgMCAwIDAgMSA3VjE4QTIgMiAwIDAgMCAzIDIwSDEwLjI2QTcgNyAwIDEgMCAyMSAxMS4xMU05IDNIMTNWNUg5TTE5IDIwQTUgNSAwIDAgMSAxMyAyMEE1IDUgMCAxIDEgMTkgMjBNMTUgMTNIMTYuNVYxNS44MkwxOC45NCAxNy4yM0wxOC4xOSAxOC41M0wxNSAxNi42OVYxM1wiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZUNsb2NrT3V0bGluZSA9IFwiTTIxIDExLjExVjdBMiAyIDAgMCAwIDIwLjQyIDUuNTlBMS44NyAxLjg3IDAgMCAwIDE5IDVIMTVWM0ExLjkgMS45IDAgMCAwIDE0LjQyIDEuNThBMS45IDEuOSAwIDAgMCAxMyAxSDlBMS45IDEuOSAwIDAgMCA3LjU4IDEuNThBMS45IDEuOSAwIDAgMCA3IDNWNUgzQTEuODcgMS44NyAwIDAgMCAxLjU4IDUuNTlBMiAyIDAgMCAwIDEgN1YxOEEyIDIgMCAwIDAgMS41OCAxOS40MUExLjg3IDEuODcgMCAwIDAgMyAyMEgxMC4yNkE3IDcgMCAxIDAgMjEgMTEuMTFNOSAzSDEzVjVIOU0zIDE4VjdIMTlWOS42OEE2Ljg0IDYuODQgMCAwIDAgMTYgOUE3IDcgMCAwIDAgOSAxNkE2LjkxIDYuOTEgMCAwIDAgOS4yOSAxOE0xOSAyMEE1IDUgMCAwIDEgMTMgMjBBNC45NCA0Ljk0IDAgMCAxIDExIDE2QTUgNSAwIDAgMSAxNiAxMUE0Ljk0IDQuOTQgMCAwIDEgMTkgMTJBNSA1IDAgMCAxIDE5IDIwTTE1IDEzSDE2LjVWMTUuODJMMTguOTQgMTcuMjNMMTguMTkgMTguNTNMMTUgMTYuNjlWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VEb3dubG9hZCA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE0xMiwxOUwxNywxNEgxNFYxMEgxMFYxNEg3TDEyLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZURvd25sb2FkT3V0bGluZSA9IFwiTTEyLDE4TDcsMTNIMTBWOUgxNFYxM0gxN0wxMiwxOE0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTlBMiwyIDAgMCwxIDIwLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRNNCw4VjE5SDIwVjhINFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VFZGl0ID0gXCJNMTQsMkEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4TDEwLjg1LDE5QzEwLjg1LDIwLjEgMTAuODUsMTkuNSAxMC44NSwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWOEMyLDYuODkgMi44OSw2IDQsNkg4VjRDOCwyLjg5IDguODksMiAxMCwySDE0TTE0LDZWNEgxMFY2SDE0TTIxLjA0LDEyLjEzQzIwLjksMTIuMTMgMjAuNzYsMTIuMTkgMjAuNjUsMTIuM0wxOS42NSwxMy4zTDIxLjcsMTUuMzVMMjIuNywxNC4zNUMyMi45MiwxNC4xNCAyMi45MiwxMy43OSAyMi43LDEzLjU4TDIxLjQyLDEyLjNDMjEuMzEsMTIuMTkgMjEuMTgsMTIuMTMgMjEuMDQsMTIuMTNNMTkuMDcsMTMuODhMMTMsMTkuOTRWMjJIMTUuMDZMMjEuMTIsMTUuOTNMMTkuMDcsMTMuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlRWRpdE91dGxpbmUgPSBcIk0yMS4wNCwxMi4xM0MyMS4xOCwxMi4xMyAyMS4zMSwxMi4xOSAyMS40MiwxMi4zTDIyLjcsMTMuNThDMjIuOTIsMTMuNzkgMjIuOTIsMTQuMTQgMjIuNywxNC4zNUwyMS43LDE1LjM1TDE5LjY1LDEzLjNMMjAuNjUsMTIuM0MyMC43NiwxMi4xOSAyMC45LDEyLjEzIDIxLjA0LDEyLjEzTTE5LjA3LDEzLjg4TDIxLjEyLDE1LjkzTDE1LjA2LDIySDEzVjE5Ljk0TDE5LjA3LDEzLjg4TTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOEwyMCwxMFY4SDRWMTlIMTFWMjFINEEyLDIgMCAwLDEgMiwxOVY4QTIsMiAwIDAsMSA0LDZIOFY0QTIsMiAwIDAsMSAxMCwyTTE0LDZWNEgxMFY2SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZU1pbnVzID0gXCJNMjIsMTdWMTlIMTRWMTdIMjJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIwLjk0LDEyLjU4IDE5LjU0LDEyIDE4LDEyQTYsNiAwIDAsMCAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlTWludXNPdXRsaW5lID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIxLjQyLDEzIDIwLjc1LDEyLjYgMjAsMTIuMzRWOEg0VjE5SDEyLjA4QzEyLjIsMTkuNzIgMTIuNDUsMjAuMzkgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTQsMTdIMjJWMTlIMTRWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMTEgMjFINEMyLjg5IDIxIDIgMjAuMSAyIDE5VjhDMiA2Ljg5IDIuODkgNiA0IDZINC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTIyIDE4LjhMOCA0LjhWNEM4IDIuODkgOC44OSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY2SDIwQzIxLjExIDYgMjIgNi45IDIyIDhWMTguOE0xNCA0SDEwVjZIMTRWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VPZmZPdXRsaW5lID0gXCJNMjAgOFYxNi44TDIyIDE4LjhWOEMyMiA3LjQ1IDIxLjggNyAyMS40MiA2LjU5QzIxLjA1IDYuMiAyMC41OCA2IDIwIDZIMTZWNEMxNiAzLjQyIDE1LjggMi45NSAxNS40MiAyLjU4QzE1LjA1IDIuMiAxNC41OCAyIDE0IDJIMTBDOS40MiAyIDguOTUgMi4yIDguNTggMi41OEM4LjIgMi45NSA4IDMuNDIgOCA0VjQuOEwxMS4yIDhIMjBNMTAgNEgxNFY2SDEwVjRNMi4zOSAxLjczTDEuMTEgM0w0LjExIDZINEMzLjQyIDYgMi45NSA2LjIgMi41OCA2LjU5QzIuMiA3IDIgNy40NSAyIDhWMTlDMiAxOS41NSAyLjIgMjAgMi41OCAyMC40MUMyLjk1IDIwLjggMy40MiAyMSA0IDIxSDE5LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M000IDE5VjhINi4xMUwxNy4xMSAxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZU91dGxpbmUgPSBcIk0yMCw2QzIwLjU4LDYgMjEuMDUsNi4yIDIxLjQyLDYuNTlDMjEuOCw3IDIyLDcuNDUgMjIsOFYxOUMyMiwxOS41NSAyMS44LDIwIDIxLjQyLDIwLjQxQzIxLjA1LDIwLjggMjAuNTgsMjEgMjAsMjFINEMzLjQyLDIxIDIuOTUsMjAuOCAyLjU4LDIwLjQxQzIuMiwyMCAyLDE5LjU1IDIsMTlWOEMyLDcuNDUgMi4yLDcgMi41OCw2LjU5QzIuOTUsNi4yIDMuNDIsNiA0LDZIOFY0QzgsMy40MiA4LjIsMi45NSA4LjU4LDIuNThDOC45NSwyLjIgOS40MiwyIDEwLDJIMTRDMTQuNTgsMiAxNS4wNSwyLjIgMTUuNDIsMi41OEMxNS44LDIuOTUgMTYsMy40MiAxNiw0VjZIMjBNNCw4VjE5SDIwVjhINE0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIwLjk0LDEyLjU4IDE5LjU0LDEyIDE4LDEyQTYsNiAwIDAsMCAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlUGx1c091dGxpbmUgPSBcIk0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTMuNTNDMjEuNDIsMTMgMjAuNzUsMTIuNiAyMCwxMi4zNFY4SDRWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDRBMiwyIDAgMCwxIDIsMTlWOEEyLDIgMCAwLDEgNCw2SDhWNEEyLDIgMCAwLDEgMTAsMk0xNCw2VjRIMTBWNkgxNE0xNCwxN0gxN1YxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VSZW1vdmUgPSBcIk0xNC40NiwxNS44OEwxNS44OCwxNC40NkwxOCwxNi41OUwyMC4xMiwxNC40NkwyMS41NCwxNS44OEwxOS40MSwxOEwyMS41NCwyMC4xMkwyMC4xMiwyMS41NEwxOCwxOS40MUwxNS44OCwyMS41NEwxNC40NiwyMC4xMkwxNi41OSwxOEwxNC40NiwxNS44OE0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTMuNTNDMjAuOTQsMTIuNTggMTkuNTQsMTIgMTgsMTJBNiw2IDAgMCwwIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VSZW1vdmVPdXRsaW5lID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIxLjQyLDEzIDIwLjc1LDEyLjYgMjAsMTIuMzRWOEg0VjE5SDEyLjA4QzEyLjIsMTkuNzIgMTIuNDUsMjAuMzkgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlU2VhcmNoID0gXCJNMTYuNSwxMkMxOSwxMiAyMSwxNCAyMSwxNi41QzIxLDE3LjM4IDIwLjc1LDE4LjIxIDIwLjMxLDE4LjlMMjMuMzksMjJMMjIsMjMuMzlMMTguODgsMjAuMzJDMTguMTksMjAuNzUgMTcuMzcsMjEgMTYuNSwyMUMxNCwyMSAxMiwxOSAxMiwxNi41QzEyLDE0IDE0LDEyIDE2LjUsMTJNMTYuNSwxNEEyLjUsMi41IDAgMCwwIDE0LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE5QTIuNSwyLjUgMCAwLDAgMTksMTYuNUEyLjUsMi41IDAgMCwwIDE2LjUsMTRNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjAzQzIwLjg1LDExLjIxIDE4LjgyLDEwIDE2LjUsMTBBNi41LDYuNSAwIDAsMCAxMCwxNi41QzEwLDE4LjI1IDEwLjY5LDE5LjgzIDExLjgxLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlU2VhcmNoT3V0bGluZSA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxMy4wM0MyMS41LDEyLjIzIDIwLjgsMTEuNTQgMjAsMTFWOEg0VjE5SDEwLjVDMTAuODEsMTkuNzUgMTEuMjYsMjAuNDIgMTEuODEsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE0yMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyQzE5LDEyIDIxLDE0IDIxLDE2LjVDMjEsMTcuMzggMjAuNzUsMTguMjEgMjAuMzEsMTguOU0xNi41LDE5QTIuNSwyLjUgMCAwLDAgMTksMTYuNUEyLjUsMi41IDAgMCwwIDE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VVcGxvYWQgPSBcIk0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTlBMiwyIDAgMCwxIDIwLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTIsOUw3LDE0SDEwVjE4SDE0VjE0SDE3TDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlVXBsb2FkT3V0bGluZSA9IFwiTTEyLDlMMTcsMTRIMTRWMThIMTBWMTRIN0wxMiw5TTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE00LDhWMTlIMjBWOEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZVZhcmlhbnQgPSBcIk0xMCAxNlYxNUgzTDMgMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWMTVIMTRWMTZIMTBNMjAgN0gxNlY1TDE0IDNIMTBMOCA1VjdINEMyLjkgNyAyIDcuOSAyIDlWMTJDMiAxMy4xMSAyLjg5IDE0IDQgMTRIMTBWMTJIMTRWMTRIMjBDMjEuMSAxNCAyMiAxMy4xIDIyIDEyVjlDMjIgNy45IDIxLjEgNyAyMCA3TTE0IDdIMTBWNUgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZVZhcmlhbnRPZmYgPSBcIk0xMCA2LjhMOC4xIDQuOUwxMCAzSDE0TDE2IDVWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlWMTJDMjIgMTMuMSAyMS4xIDE0IDIwIDE0SDE3LjJMMTAuMiA3SDE0VjVIMTBWNi44TTIuMzkgMS43M0wxLjExIDNMNS4xMSA3SDRDMi45IDcgMiA3LjkgMiA5VjEyQzIgMTMuMTEgMi44OSAxNCA0IDE0SDEwVjEySDEwLjExTDE0IDE1Ljg5VjE2SDEwVjE1SDNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMTkuMDMgMjEgMTkuMDcgMjEgMTkuMSAyMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNMjEgMTcuOFYxNUgxOC4yTDIxIDE3LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlVmFyaWFudE9mZk91dGxpbmUgPSBcIk0xMCA2LjhMOC4xIDQuOUwxMCAzSDE0TDE2IDVWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlWMTRDMjIgMTQuNzMgMjEuNTkgMTUuMzcgMjEgMTUuNzJWMTcuOEwxNy4yIDE0SDIwVjlIMTIuMkwxMC4yIDdIMTRWNUgxMFY2LjhNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMSAyMUMxOS4wNyAyMSAxOS4wMyAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xMSAzIDE5VjE1LjczQzIuNCAxNS4zOCAyIDE0Ljc1IDIgMTRWOUMyIDcuOSAyLjkgNyA0IDdINS4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTExIDE1SDEzVjE0Ljg5TDExLjExIDEzSDExVjE1TTkgMTRWMTFIOS4xMUw3LjExIDlINFYxNEg5TTE3LjExIDE5TDE1IDE2Ljg5VjE3SDlWMTZINVYxOUgxNy4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VWYXJpYW50T3V0bGluZSA9IFwiTTIwIDdIMTZWNUwxNCAzSDEwTDggNVY3SDRDMi45IDcgMiA3LjkgMiA5VjE0QzIgMTQuNzUgMi40IDE1LjM4IDMgMTUuNzNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWMTUuNzJDMjEuNTkgMTUuMzcgMjIgMTQuNzMgMjIgMTRWOUMyMiA3LjkgMjEuMSA3IDIwIDdNMTAgNUgxNFY3SDEwVjVNNCA5SDIwVjE0SDE1VjExSDlWMTRINFY5TTEzIDE1SDExVjEzSDEzVjE1TTE5IDE5SDVWMTZIOVYxN0gxNVYxNkgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmlnaHRuZXNzMSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3MyID0gXCJNMTAsMkM4LjE4LDIgNi40NywyLjUgNSwzLjM1QzgsNS4wOCAxMCw4LjMgMTAsMTJDMTAsMTUuNyA4LDE4LjkyIDUsMjAuNjVDNi40NywyMS41IDguMTgsMjIgMTAsMjJBMTAsMTAgMCAwLDAgMjAsMTJBMTAsMTAgMCAwLDAgMTAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmlnaHRuZXNzMyA9IFwiTTksMkM3Ljk1LDIgNi45NSwyLjE2IDYsMi40NkMxMC4wNiwzLjczIDEzLDcuNSAxMywxMkMxMywxNi41IDEwLjA2LDIwLjI3IDYsMjEuNTRDNi45NSwyMS44NCA3Ljk1LDIyIDksMjJBMTAsMTAgMCAwLDAgMTksMTJBMTAsMTAgMCAwLDAgOSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M0ID0gXCJNMTIsMThDMTEuMTEsMTggMTAuMjYsMTcuOCA5LjUsMTcuNDVDMTEuNTYsMTYuNSAxMywxNC40MiAxMywxMkMxMyw5LjU4IDExLjU2LDcuNSA5LjUsNi41NUMxMC4yNiw2LjIgMTEuMTEsNiAxMiw2QTYsNiAwIDAsMSAxOCwxMkE2LDYgMCAwLDEgMTIsMThNMjAsOC42OVY0SDE1LjMxTDEyLDAuNjlMOC42OSw0SDRWOC42OUwwLjY5LDEyTDQsMTUuMzFWMjBIOC42OUwxMiwyMy4zMUwxNS4zMSwyMEgyMFYxNS4zMUwyMy4zMSwxMkwyMCw4LjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M1ID0gXCJNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOE0yMCwxNS4zMUwyMy4zMSwxMkwyMCw4LjY5VjRIMTUuMzFMMTIsMC42OUw4LjY5LDRINFY4LjY5TDAuNjksMTJMNCwxNS4zMVYyMEg4LjY5TDEyLDIzLjMxTDE1LjMxLDIwSDIwVjE1LjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M2ID0gXCJNMTIsMThWNkE2LDYgMCAwLDEgMTgsMTJBNiw2IDAgMCwxIDEyLDE4TTIwLDE1LjMxTDIzLjMxLDEyTDIwLDguNjlWNEgxNS4zMUwxMiwwLjY5TDguNjksNEg0VjguNjlMMC42OSwxMkw0LDE1LjMxVjIwSDguNjlMMTIsMjMuMzFMMTUuMzEsMjBIMjBWMTUuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZ2h0bmVzczcgPSBcIk0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOE0yMCw4LjY5VjRIMTUuMzFMMTIsMC42OUw4LjY5LDRINFY4LjY5TDAuNjksMTJMNCwxNS4zMVYyMEg4LjY5TDEyLDIzLjMxTDE1LjMxLDIwSDIwVjE1LjMxTDIzLjMxLDEyTDIwLDguNjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZ2h0bmVzc0F1dG8gPSBcIk0xNC4zLDE2TDEzLjYsMTRIMTAuNEw5LjcsMTZINy44TDExLDdIMTNMMTYuMiwxNkgxNC4zTTIwLDguNjlWNEgxNS4zMUwxMiwwLjY5TDguNjksNEg0VjguNjlMMC42OSwxMkw0LDE1LjMxVjIwSDguNjlMMTIsMjMuMzFMMTUuMzEsMjBIMjBWMTUuMzFMMjMuMzEsMTJMMjAsOC42OU0xMC44NSwxMi42NUgxMy4xNUwxMiw5TDEwLjg1LDEyLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3NQZXJjZW50ID0gXCJNMjAuMDQsOC43MVY0SDE1LjM0TDEyLDAuNjlMOC43MSw0SDRWOC43MUwwLjY5LDEyTDQsMTUuMzRWMjAuMDRIOC43MUwxMiwyMy4zNUwxNS4zNCwyMC4wNEgyMC4wNFYxNS4zNEwyMy4zNSwxMkwyMC4wNCw4LjcxTTguODMsNy4wNUM5LjgxLDcuMDUgMTAuNiw3Ljg0IDEwLjYsOC44M0ExLjc3LDEuNzcgMCAwLDEgOC44MywxMC42QzcuODQsMTAuNiA3LjA1LDkuODEgNy4wNSw4LjgzQzcuMDUsNy44NCA3Ljg0LDcuMDUgOC44Myw3LjA1TTE1LjIyLDE3QzE0LjI0LDE3IDEzLjQ1LDE2LjIgMTMuNDUsMTUuMjJBMS43NywxLjc3IDAgMCwxIDE1LjIyLDEzLjQ1QzE2LjIsMTMuNDUgMTcsMTQuMjQgMTcsMTUuMjJBMS43OCwxLjc4IDAgMCwxIDE1LjIyLDE3TTguNSwxNy4wM0w3LDE1LjUzTDE1LjUzLDdMMTcuMDMsOC41TDguNSwxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcm9hZGNhc3QgPSBcIk0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNMTggMTJDMTggOC43IDE1LjMgNiAxMiA2UzYgOC43IDYgMTJDNiAxNC4yIDcuMiAxNi4xIDkgMTcuMkwxMCAxNS41QzguOCAxNC44IDggMTMuNSA4IDEyLjFDOCA5LjkgOS44IDguMSAxMiA4LjFTMTYgOS45IDE2IDEyLjFDMTYgMTMuNiAxNS4yIDE0LjkgMTQgMTUuNUwxNSAxNy4yQzE2LjggMTYuMiAxOCAxNC4yIDE4IDEyTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE1LjcgNCAxOC45IDcgMjAuNkw4IDE4LjlDNS42IDE3LjUgNCAxNC45IDQgMTJDNCA3LjYgNy42IDQgMTIgNFMyMCA3LjYgMjAgMTJDMjAgMTUgMTguNCAxNy41IDE2IDE4LjlMMTcgMjAuNkMyMCAxOC45IDIyIDE1LjcgMjIgMTJDMjIgNi41IDE3LjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyb2FkY2FzdE9mZiA9IFwiTTE3LjYgMTQuMkMxNy45IDEzLjUgMTggMTIuOCAxOCAxMkMxOCA4LjcgMTUuMyA2IDEyIDZDMTEuMiA2IDEwLjQgNi4yIDkuOCA2LjRMMTEuNCA4SDEyQzE0LjIgOCAxNiA5LjggMTYgMTJDMTYgMTIuMiAxNiAxMi40IDE1LjkgMTIuNkwxNy42IDE0LjJNMTIgNEMxNi40IDQgMjAgNy42IDIwIDEyQzIwIDEzLjQgMTkuNiAxNC42IDE5IDE1LjdMMjAuNSAxNy4yQzIxLjQgMTUuNyAyMiAxMy45IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkMxMC4xIDIgOC4zIDIuNSA2LjggMy41TDguMyA1QzkuNCA0LjMgMTAuNiA0IDEyIDRNMy4zIDIuNUwyIDMuOEw0LjEgNS45QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE1LjcgNCAxOC45IDcgMjAuNkw4IDE4LjlDNS42IDE3LjUgNCAxNC45IDQgMTJDNCAxMC4yIDQuNiA4LjYgNS41IDcuM0w3IDguOEM2LjQgOS43IDYgMTAuOCA2IDEyQzYgMTQuMiA3LjIgMTYuMSA5IDE3LjJMMTAgMTUuNUM4LjggMTQuOCA4IDEzLjUgOCAxMi4xQzggMTEuNSA4LjIgMTAuOSA4LjQgMTAuM0wxMCAxMS45VjEyLjFDMTAgMTMuMiAxMC45IDE0LjEgMTIgMTQuMUgxMi4yTDE5LjcgMjEuNkwyMSAyMC4zTDQuMyAzLjVMMy4zIDIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcm9vbSA9IFwiTTE5LjM2LDIuNzJMMjAuNzgsNC4xNEwxNS4wNiw5Ljg1QzE2LjEzLDExLjM5IDE2LjI4LDEzLjI0IDE1LjM4LDE0LjQ0TDkuMDYsOC4xMkMxMC4yNiw3LjIyIDEyLjExLDcuMzcgMTMuNjUsOC40NEwxOS4zNiwyLjcyTTUuOTMsMTcuNTdDMy45MiwxNS41NiAyLjY5LDEzLjE2IDIuMzUsMTAuOTJMNy4yMyw4LjgzTDE0LjY3LDE2LjI3TDEyLjU4LDIxLjE1QzEwLjM0LDIwLjgxIDcuOTQsMTkuNTggNS45MywxNy41N1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcnVzaCA9IFwiTTIwLjcxLDQuNjNMMTkuMzcsMy4yOUMxOSwyLjkgMTguMzUsMi45IDE3Ljk2LDMuMjlMOSwxMi4yNUwxMS43NSwxNUwyMC43MSw2LjA0QzIxLjEsNS42NSAyMS4xLDUgMjAuNzEsNC42M003LDE0QTMsMyAwIDAsMCA0LDE3QzQsMTguMzEgMi44NCwxOSAyLDE5QzIuOTIsMjAuMjIgNC41LDIxIDYsMjFBNCw0IDAgMCwwIDEwLDE3QTMsMyAwIDAsMCA3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1Y2tldCA9IFwiTTMgNEgyMVY3SDIwTDE3LjUgMjFINi41TDQgN0gzVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVja2V0T3V0bGluZSA9IFwiTTMgNEgyMVY3SDIwTDE3LjUgMjFINi41TDQgN0gzVjRNMTcuOTcgN0g2LjAzTDguMTUgMTlIMTUuODVMMTcuOTcgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCdWRkaGlzbSA9IFwiTTExLDJWM0M5LjI3LDMuMiA3LjY5LDMuOSA2LjQsNC45NEw1LjY0LDQuMThMNC4yMiw1LjZMNSw2LjM1QzMuOSw3LjY4IDMuMjEsOS4zIDMsMTFIMlYxM0gzQzMuMjEsMTQuNjggMy45LDE2LjI2IDUsMTcuNTZMNC4yMiwxOC4zMkw1LjY0LDE5Ljc0TDYuMzksMTlDNy43MSwyMC4wNyA5LjMsMjAuNzcgMTEsMjFWMjJIMTNWMjFDMTQuNjksMjAuNzcgMTYuMjksMjAuMDcgMTcuNiwxOUwxOC4zNiwxOS43NEwxOS43OCwxOC4zMkwxOSwxNy41N0MyMC4xLDE2LjI3IDIwLjc5LDE0LjY4IDIxLDEzSDIyVjExSDIxQzIwLjc5LDkuMyAyMC4xLDcuNjkgMTksNi4zNkwxOS43OCw1LjZMMTguMzYsNC4xOEwxNy42MSw0Ljk0QzE2LjI5LDMuODcgMTQuNjksMy4yIDEzLDNWMkgxMU0xMSw1VjhMMTAsOC41TDcuODEsNi4zNUM4LjcyLDUuNjcgOS44MSw1LjE3IDExLDVNMTMsNUMxNC4xNiw1LjE4IDE1LjI2LDUuNjQgMTYuMiw2LjM1TDE0LDguNUwxMyw4VjVNNi40LDcuNzZMOC41LDEwTDgsMTFINUM1LjE2LDkuODQgNS43LDguNyA2LjM5LDcuNzVMNi40LDcuNzZNMTcuNiw3Ljc2QzE4LjMzLDguNzEgMTguODEsOS44MiAxOSwxMUgxNkwxNS41LDEwTDE3LjYxLDcuNzZIMTcuNk0xMiwxMEMxMy4xMiwxMCAxNCwxMC44OCAxNCwxMkMxNCwxMy4xMiAxMy4xMiwxNCAxMiwxNEMxMC44OCwxNCAxMCwxMy4xMiAxMCwxMkMxMCwxMC44OCAxMC44OCwxMCAxMiwxME01LDEzSDhMOC41NywxNEw2LjM5LDE2LjE1QzUuNjcsMTUuMjQgNS4xOSwxNC4xNiA1LDEzVjEzTTE2LDEzSDE5QzE4LjgxLDE0LjE1IDE4LjMzLDE1LjI0IDE3LjYxLDE2LjE2TDE1LjUsMTRMMTYsMTNNMTAsMTUuNUwxMSwxNlYxOUM5LjgzLDE4LjggOC43MywxOC4zMSA3LjgsMTcuNTdMMTAsMTUuNU0xNCwxNS41TDE2LjE5LDE3LjU3QzE1LjI4LDE4LjI1IDE0LjE5LDE4LjgzIDEzLDE5VjE2TDE0LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVmZmVyID0gXCJNMTIuNiwyLjg2QzE1LjI3LDQuMSAxOCw1LjM5IDIwLjY2LDYuNjNDMjAuODEsNi43IDIxLDYuNzUgMjEsNi45NUMyMSw3LjE1IDIwLjgxLDcuMTkgMjAuNjYsNy4yNkMxOCw4LjUgMTUuMyw5Ljc3IDEyLjYyLDExQzEyLjIxLDExLjIxIDExLjc5LDExLjIxIDExLjM4LDExQzguNjksOS43NiA2LDguNSAzLjMyLDcuMjVDMy4xOCw3LjE5IDMsNy4xNCAzLDYuOTRDMyw2Ljc2IDMuMTgsNi43MSAzLjMxLDYuNjVDNiw1LjM5IDguNzQsNC4xIDExLjQ0LDIuODVDMTEuNzMsMi43MiAxMi4zLDIuNzMgMTIuNiwyLjg2TTEyLDIxLjE1QzExLjgsMjEuMTUgMTEuNjYsMjEuMDcgMTEuMzgsMjAuOTdDOC42OSwxOS43MyA2LDE4LjQ3IDMuMzMsMTcuMjJDMy4xOSwxNy4xNSAzLDE3LjExIDMsMTYuOUMzLDE2LjcgMy4xOSwxNi42NiAzLjM0LDE2LjU5QzMuNzgsMTYuMzggNC4yMywxNi4xNyA0LjY3LDE1Ljk2QzUuMTIsMTUuNzYgNS41NiwxNS43NiA2LDE1Ljk3QzcuNzksMTYuOCA5LjU3LDE3LjYzIDExLjM1LDE4LjQ2QzExLjc5LDE4LjY3IDEyLjIzLDE4LjY2IDEyLjY3LDE4LjQ2QzE0LjQ1LDE3LjYyIDE2LjIzLDE2Ljc5IDE4LDE1Ljk2QzE4LjQ0LDE1Ljc2IDE4Ljg3LDE1Ljc1IDE5LjI5LDE1Ljk1QzE5Ljc3LDE2LjE2IDIwLjI0LDE2LjM5IDIwLjcxLDE2LjYxQzIwLjc4LDE2LjY0IDIwLjg1LDE2LjY4IDIwLjkxLDE2LjczQzIxLjA0LDE2LjgzIDIxLjA0LDE3IDIwLjkxLDE3LjA4QzIwLjgzLDE3LjE0IDIwLjc0LDE3LjE5IDIwLjY1LDE3LjIzQzE4LDE4LjUgMTUuMzMsMTkuNzIgMTIuNjYsMjAuOTVDMTIuNDYsMjEuMDUgMTIuMTksMjEuMTUgMTIsMjEuMTVNMTIsMTYuMTdDMTEuOSwxNi4xNyAxMS41NSwxNi4wNyAxMS4zNiwxNkM4LjY4LDE0Ljc0IDYsMTMuNSAzLjM0LDEyLjI0QzMuMiwxMi4xOCAzLDEyLjEzIDMsMTEuOTNDMywxMS43MiAzLjIsMTEuNjggMy4zNSwxMS42MUMzLjgsMTEuMzkgNC4yNSwxMS4xOCA0LjcsMTAuOTdDNS4xMywxMC43OCA1LjU2LDEwLjc4IDYsMTFDNy43OCwxMS44MiA5LjU4LDEyLjY2IDExLjM4LDEzLjVDMTEuNzksMTMuNjkgMTIuMjEsMTMuNjkgMTIuNjMsMTMuNUMxNC40MywxMi42NSAxNi4yMywxMS44MSAxOC4wNCwxMC45N0MxOC40NSwxMC43OCAxOC44NywxMC43OCAxOS4yOSwxMC45N0MxOS43NiwxMS4xOSAyMC4yNCwxMS40MSAyMC43MSwxMS42M0MyMC43NywxMS42NiAyMC44NCwxMS42OSAyMC45LDExLjc0QzIxLjA0LDExLjg1IDIxLjA0LDEyIDIwLjg5LDEyLjEyQzIwLjg0LDEyLjE2IDIwLjc3LDEyLjE5IDIwLjcxLDEyLjIyQzE4LDEzLjUgMTUuMzEsMTQuNzUgMTIuNjEsMTZDMTIuNDIsMTYuMDkgMTIuMDgsMTYuMTcgMTIsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVmZmV0ID0gXCJNOSAxNEM5LjU1IDE0IDEwIDE0LjQ1IDEwIDE1QzEwIDE1LjU1IDkuNTUgMTYgOSAxNkM4LjQ1IDE2IDggMTUuNTUgOCAxNUM4IDE0LjQ1IDguNDUgMTQgOSAxNE0xNSAxNEMxNS41NSAxNCAxNiAxNC40NSAxNiAxNUMxNiAxNS41NSAxNS41NSAxNiAxNSAxNkMxNC40NSAxNiAxNCAxNS41NSAxNCAxNUMxNCAxNC40NSAxNC40NSAxNCAxNSAxNE0zIDIyTDQgMTlIM0MyLjQ1IDE5IDIgMTguNTUgMiAxOFYxMkMyIDExLjQ1IDIuNDUgMTEgMyAxMUgyMUMyMS41NSAxMSAyMiAxMS40NSAyMiAxMlYxOEMyMiAxOC41NSAyMS41NSAxOSAyMSAxOUgyMEwyMSAyMkgxOUwxOCAxOUg2TDUgMjJIM00xMyAxM1YxN0gyMFYxM0gxM000IDEzVjE3SDExVjEzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVnID0gXCJNMTQsMTJIMTBWMTBIMTRNMTQsMTZIMTBWMTRIMTRNMjAsOEgxNy4xOUMxNi43NCw3LjIyIDE2LjEyLDYuNTUgMTUuMzcsNi4wNEwxNyw0LjQxTDE1LjU5LDNMMTMuNDIsNS4xN0MxMi45Niw1LjA2IDEyLjUsNSAxMiw1QzExLjUsNSAxMS4wNCw1LjA2IDEwLjU5LDUuMTdMOC40MSwzTDcsNC40MUw4LjYyLDYuMDRDNy44OCw2LjU1IDcuMjYsNy4yMiA2LjgxLDhINFYxMEg2LjA5QzYuMDQsMTAuMzMgNiwxMC42NiA2LDExVjEySDRWMTRINlYxNUM2LDE1LjM0IDYuMDQsMTUuNjcgNi4wOSwxNkg0VjE4SDYuODFDNy44NSwxOS43OSA5Ljc4LDIxIDEyLDIxQzE0LjIyLDIxIDE2LjE1LDE5Ljc5IDE3LjE5LDE4SDIwVjE2SDE3LjkxQzE3Ljk2LDE1LjY3IDE4LDE1LjM0IDE4LDE1VjE0SDIwVjEySDE4VjExQzE4LDEwLjY2IDE3Ljk2LDEwLjMzIDE3LjkxLDEwSDIwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVnQ2hlY2sgPSBcIk0xOCw3SDE1LjE5QzE0Ljc0LDYuMiAxNC4xMiw1LjUgMTMuMzcsNUwxNSwzLjQxTDEzLjU5LDJMMTEuNDIsNC4xN0MxMC45Niw0LjA2IDEwLjUsNCAxMCw0QzkuNSw0IDkuMDUsNC4wNiA4LjU5LDQuMTdMNi40MSwyTDUsMy40MUw2LjYyLDVDNS44Nyw1LjUgNS4yNiw2LjIxIDQuODEsN0gyVjlINC4wOUM0LjAzLDkuMzMgNCw5LjY2IDQsMTBWMTFIMlYxM0g0VjE0QzQsMTQuMzQgNC4wMywxNC42NyA0LjA5LDE1SDJWMTdINC44MUM2LjI2LDE5LjUgOS4yOCwyMC42MSAxMiwxOS42NUMxMiwxOS40MyAxMiwxOS4yMiAxMiwxOUMxMiwxNi40NiAxMy42MSwxNC4yIDE2LDEzLjM1VjEzSDE4VjExSDE2VjEwQzE2LDkuNjYgMTUuOTcsOS4zMyAxNS45MSw5SDE4VjdNMTIsMTVIOFYxM0gxMlYxNU0xMiwxMUg4VjlIMTJWMTFNMTcuNzUsMjIuMTZMMTUsMTkuMTZMMTYuMTYsMThMMTcuNzUsMTkuNTlMMjEuMzQsMTZMMjIuNSwxNy40MUwxNy43NSwyMi4xNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdDaGVja091dGxpbmUgPSBcIk0xOCw3SDE1LjE5QzE0Ljc0LDYuMiAxNC4xMiw1LjUgMTMuMzcsNUwxNSwzLjQxTDEzLjU5LDJMMTEuNDIsNC4xN0MxMC45Niw0LjA2IDEwLjUsNCAxMCw0QzkuNSw0IDkuMDUsNC4wNiA4LjU5LDQuMTdMNi40MSwyTDUsMy40MUw2LjYyLDVDNS44Nyw1LjUgNS4yNiw2LjIxIDQuODEsN0gyVjlINC4wOUM0LjAzLDkuMzMgNCw5LjY2IDQsMTBWMTFIMlYxM0g0VjE0QzQsMTQuMzQgNC4wMywxNC42NyA0LjA5LDE1SDJWMTdINC44MUM2LjI2LDE5LjUgOS4yOCwyMC42MSAxMiwxOS42NUMxMiwxOS40MyAxMiwxOS4yMiAxMiwxOUMxMiwxOC40MyAxMi4wOSwxNy44NiAxMi4yNSwxNy4zMUMxMS41OSwxNy43NiAxMC44LDE4IDEwLDE4QTQsNCAwIDAsMSA2LDE0VjEwQTQsNCAwIDAsMSAxMCw2QTQsNCAwIDAsMSAxNCwxMFYxNEMxNCwxNC4xOSAxNCwxNC4zOSAxMy45NSwxNC41OEMxNC41NCwxNC4wNCAxNS4yNCwxMy42MiAxNiwxMy4zNVYxM0gxOFYxMUgxNlYxMEMxNiw5LjY2IDE1Ljk3LDkuMzMgMTUuOTEsOUgxOFY3TTIxLjM0LDE2TDE3Ljc1LDE5LjU5TDE2LjE2LDE4TDE1LDE5LjE2TDE3Ljc1LDIyLjE2TDIyLjUsMTcuNDFMMjEuMzQsMTZNMTIsOVYxMUg4VjlIMTJNMTIsMTNWMTVIOFYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdPdXRsaW5lID0gXCJNMjAsOEgxNy4xOUMxNi43NCw3LjIgMTYuMTIsNi41IDE1LjM3LDZMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDUsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2QzcuODcsNi41IDcuMjYsNy4yMSA2LjgxLDhINFYxMEg2LjA5QzYuMDMsMTAuMzMgNiwxMC42NiA2LDExVjEySDRWMTRINlYxNUM2LDE1LjM0IDYuMDMsMTUuNjcgNi4wOSwxNkg0VjE4SDYuODFDOC40NywyMC44NyAxMi4xNCwyMS44NCAxNSwyMC4xOEMxNS45MSwxOS42NiAxNi42NywxOC45IDE3LjE5LDE4SDIwVjE2SDE3LjkxQzE3Ljk3LDE1LjY3IDE4LDE1LjM0IDE4LDE1VjE0SDIwVjEySDE4VjExQzE4LDEwLjY2IDE3Ljk3LDEwLjMzIDE3LjkxLDEwSDIwVjhNMTYsMTVBNCw0IDAgMCwxIDEyLDE5QTQsNCAwIDAsMSA4LDE1VjExQTQsNCAwIDAsMSAxMiw3QTQsNCAwIDAsMSAxNiwxMVYxNU0xNCwxMFYxMkgxMFYxMEgxNE0xMCwxNEgxNFYxNkgxMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdsZSA9IFwiTTIxLDZDMjEsMTEgMTIsMTEgMTIsMTFDMTIsMTEgNiwxMSA1LDExQzQsMTEgMywxMCAzLDEwSDJWMTRIM0MzLDE0IDQsMTMgNSwxM0M1LjIsMTMgNS43LDEzIDYuMywxM0M1LjUsMTMuNSA1LDE0LjIgNSwxNUM1LDE2LjggNy4zLDE4IDEwLjUsMThDMTMuNywxOCAxNiwxNi44IDE2LDE1QzE2LDE0LjQgMTUuNywxMy44IDE1LjIsMTMuM0MxNy44LDEzLjggMjEsMTUgMjEsMThIMjJWNkgyMU0xMC41LDE2LjdDOC4yLDE2LjcgNi40LDE1LjkgNi40LDE1QzYuNCwxNC4xIDguMiwxMy4zIDEwLjUsMTMuM0MxMi44LDEzLjMgMTQuNiwxNC4xIDE0LjYsMTVDMTQuNiwxNS45IDEyLjgsMTYuNyAxMC41LDE2LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVsbGRvemVyID0gXCJNNCw0QTEsMSAwIDAsMCAzLDVWMTBDMi41NCwxMCAyLjE0LDEwLjMxIDIuMDMsMTAuNzZWMTMuOTdIMi4yOUMyLjY1LDEzLjM3IDMuMywxMyA0LDEzSDEzQzEzLjcsMTMgMTQuMzUsMTMuMzcgMTQuNzEsMTMuOTdIMTYuMDNMMTYsMTFWMTFBMSwxIDAgMCwwIDE1LDEwSDEzVjhBMSwxIDAgMCwwIDEyLDdBMSwxIDAgMCwwIDExLDhWMTBIOVY1QTEsMSAwIDAsMCA4LDRINE01LDZIN1YxMEw3LDExSDVWNk0xNywxMVYxOUgyMlYxOEwxOSwxN0wxOCwxMUgxN000LDE1QTIsMiAwIDAsMCAyLDE3QTIsMiAwIDAsMCA0LDE5SDEzQTIsMiAwIDAsMCAxNSwxN0EyLDIgMCAwLDAgMTMsMTVINFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsZXQgPSBcIk0xNCwyMkgxMFYyMUgxNFYyMk0xMywxMFY3SDExVjEwTDEwLDExLjVWMjBIMTRWMTEuNUwxMywxME0xMiwyQzEyLDIgMTEsMyAxMSw1VjZIMTNWNUMxMyw1IDEzLDMgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsZXRpbkJvYXJkID0gXCJNMTIuMDQsMi41TDkuNTMsNUgxNC41M0wxMi4wNCwyLjVNNCw3VjIwSDIwVjdINE0xMiwwTDE3LDVWNUgyMEEyLDIgMCAwLDEgMjIsN1YyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFY3QTIsMiAwIDAsMSA0LDVIN1Y1TDEyLDBNNywxOFYxNEgxMlYxOEg3TTE0LDE3VjEwSDE4VjE3SDE0TTYsMTJWOUgxMVYxMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1bGxob3JuID0gXCJNMTIsOEg0QTIsMiAwIDAsMCAyLDEwVjE0QTIsMiAwIDAsMCA0LDE2SDVWMjBBMSwxIDAgMCwwIDYsMjFIOEExLDEgMCAwLDAgOSwyMFYxNkgxMkwxNywyMFY0TDEyLDhNMjEuNSwxMkMyMS41LDEzLjcxIDIwLjU0LDE1LjI2IDE5LDE2VjhDMjAuNTMsOC43NSAyMS41LDEwLjMgMjEuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsaG9ybk91dGxpbmUgPSBcIk0xMiw4SDRBMiwyIDAgMCwwIDIsMTBWMTRBMiwyIDAgMCwwIDQsMTZINVYyMEExLDEgMCAwLDAgNiwyMUg4QTEsMSAwIDAsMCA5LDIwVjE2SDEyTDE3LDIwVjRMMTIsOE0xNSwxNS42TDEzLDE0SDRWMTBIMTNMMTUsOC40VjE1LjZNMjEuNSwxMkMyMS41LDEzLjcxIDIwLjU0LDE1LjI2IDE5LDE2VjhDMjAuNTMsOC43NSAyMS41LDEwLjMgMjEuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsc2V5ZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw2QTYsNiAwIDAsMCA2LDEyQTYsNiAwIDAsMCAxMiwxOEE2LDYgMCAwLDAgMTgsMTJBNiw2IDAgMCwwIDEyLDZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsc2V5ZUFycm93ID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDEwLjg0IDIxLjc5LDkuNjkgMjEuMzksOC42MUwxOS43OSwxMC4yMUMxOS45MywxMC44IDIwLDExLjQgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QzEyLjYsNCAxMy4yLDQuMDcgMTMuNzksNC4yMUwxNS40LDIuNkMxNC4zMSwyLjIxIDEzLjE2LDIgMTIsMk0xOSwyTDE1LDZWNy41TDEyLjQ1LDEwLjA1QzEyLjMsMTAgMTIuMTUsMTAgMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJDMTQsMTEuODUgMTQsMTEuNyAxMy45NSwxMS41NUwxNi41LDlIMThMMjIsNUgxOVYyTTEyLDZBNiw2IDAgMCwwIDYsMTJBNiw2IDAgMCwwIDEyLDE4QTYsNiAwIDAsMCAxOCwxMkgxNkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxtYSA9IFwiTTExLjM4IDJMNi4zOCA3TDUuMTMgMTUuNzVMMTEuMzggMjJMMTguODggMTdMMTMuODggMTJMMTcuNjMgOC4yNUwxMS4zOCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1bmtCZWQgPSBcIk0xIDJWMjNIM1YyMUgyMVYyM0gyM1Y3QzIzIDQuNzkgMjEuMjEgMyAxOSAzSDEwVjhIM1YyTTYuNSAyQTIuNSAyLjUgMCAwIDAgNCA0LjVBMi41IDIuNSAwIDAgMCA2LjUgN0EyLjUgMi41IDAgMCAwIDkgNC41QTIuNSAyLjUgMCAwIDAgNi41IDJNMyAxMUgyMVYxMy41NkMyMC40MSAxMy4yMSAxOS43MyAxMyAxOSAxM0gxMFYxOEgzTTYuNSAxMkEyLjUgMi41IDAgMCAwIDQgMTQuNUEyLjUgMi41IDAgMCAwIDYuNSAxN0EyLjUgMi41IDAgMCAwIDkgMTQuNUEyLjUgMi41IDAgMCAwIDYuNSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdW5rQmVkT3V0bGluZSA9IFwiTTEgMkgzVjlIMTBWM0gxOUMyMS4yIDMgMjMgNC44IDIzIDdWMjNIMjFWMjFIM1YyM0gxVjJNMTIgNVY5SDIxVjdDMjEgNS45IDIwLjEgNSAxOSA1SDEyTTMgMTFWMTlIMTBWMTNIMTlDMTkuNyAxMyAyMC40IDEzLjIgMjEgMTMuNlYxMUgzTTYuNSAxM0M3LjkgMTMgOSAxNC4xIDkgMTUuNVM3LjkgMTggNi41IDE4IDQgMTYuOSA0IDE1LjUgNS4xIDEzIDYuNSAxM002LjUgMTQuNkM2IDE0LjYgNS42IDE1IDUuNiAxNS41UzYgMTYuNCA2LjUgMTYuNCA3LjQgMTYgNy40IDE1LjUgNyAxNC42IDYuNSAxNC42TTEyIDE1VjE5SDIxVjE3QzIxIDE1LjkgMjAuMSAxNSAxOSAxNUgxMk02LjUgM0M3LjkgMyA5IDQuMSA5IDUuNVM3LjkgOCA2LjUgOCA0IDYuOSA0IDUuNSA1LjEgMyA2LjUgM002LjUgNC42QzYgNC42IDUuNiA1IDUuNiA1LjVTNiA2LjQgNi41IDYuNCA3LjQgNiA3LjQgNS41IDcgNC42IDYuNSA0LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzID0gXCJNMTgsMTFINlY2SDE4TTE2LjUsMTdBMS41LDEuNSAwIDAsMSAxNSwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNEExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3TTcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxNEExLjUsMS41IDAgMCwxIDksMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN000LDE2QzQsMTYuODggNC4zOSwxNy42NyA1LDE4LjIyVjIwQTEsMSAwIDAsMCA2LDIxSDdBMSwxIDAgMCwwIDgsMjBWMTlIMTZWMjBBMSwxIDAgMCwwIDE3LDIxSDE4QTEsMSAwIDAsMCAxOSwyMFYxOC4yMkMxOS42MSwxNy42NyAyMCwxNi44OCAyMCwxNlY2QzIwLDIuNSAxNi40MiwyIDEyLDJDNy41OCwyIDQsMi41IDQsNlYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNBbGVydCA9IFwiTTE2LDFBNyw3IDAgMCwxIDIzLDhDMjMsMTEuNTMgMjAuMzksMTQuNDUgMTcsMTQuOTNWMThDMTcsMTguODQgMTYuNjUsMTkuNTggMTUuOTYsMjAuMlYyMkMxNS45NiwyMi4yNyAxNS44NywyMi41IDE1LjY4LDIyLjcxQzE1LjUsMjIuOTEgMTUuMjYsMjMgMTUsMjNIMTRDMTMuNzEsMjMgMTMuNDcsMjIuOTEgMTMuMjcsMjIuNzFDMTMuMDYsMjIuNSAxMi45NiwyMi4yNyAxMi45NiwyMlYyMUg1LjA0VjIyQzUuMDQsMjIuMjcgNC45NCwyMi41IDQuNzMsMjIuNzFDNC41MywyMi45MSA0LjI5LDIzIDQsMjNIM0MyLjc0LDIzIDIuNSwyMi45MSAyLjMyLDIyLjcxQzIuMTMsMjIuNSAyLjA0LDIyLjI3IDIuMDQsMjJWMjAuMkMxLjM1LDE5LjU4IDEsMTguODQgMSwxOFY4QzEsNi40MiAxLjcsNS4zNSAzLjA3LDQuOEM0LjQ0LDQuMjYgNi40Miw0IDksNEwxMC4yMyw0LjAzQzExLjUsMi4yIDEzLjYxLDEgMTYsMU0xNiwzQTUsNSAwIDAsMCAxMSw4QTUsNSAwIDAsMCAxNiwxM0E1LDUgMCAwLDAgMjEsOEE1LDUgMCAwLDAgMTYsM00xNSwxMEgxN1YxMkgxNVYxME0xNSw0SDE3VjlIMTVWNE0zLDEzSDExLjA5QzkuOCwxMS43MiA5LDkuOTYgOSw4SDNWMTNNNC41LDE2QzMuNjksMTYgMywxNi42NyAzLDE3LjVBMS41LDEuNSAwIDAsMCA0LjUsMTlDNS4zNSwxOSA2LDE4LjMzIDYsMTcuNUExLjUsMS41IDAgMCwwIDQuNSwxNk0xMy41LDE2QzEyLjY1LDE2IDEyLDE2LjY3IDEyLDE3LjVBMS41LDEuNSAwIDAsMCAxMy41LDE5QzE0LjMxLDE5IDE1LDE4LjMzIDE1LDE3LjVBMS41LDEuNSAwIDAsMCAxMy41LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0FydGljdWxhdGVkRW5kID0gXCJNMjEuNSw2TDIwLDcuNUwyMS41LDlMMjAsMTAuNUwyMS41LDEyTDIwLDEzLjVMMjEuNSwxNUgxMi41QTMsMyAwIDAsMSA5LjUsMThBMywzIDAgMCwxIDYuNSwxNUgyLjVWOEMyLjUsNi44OSAzLjM5LDYgNC41LDZIMjEuNU0xOC41LDcuNUgxNVYxMEgxOC41VjcuNU0xMy41LDcuNUg5LjVWMTBIMTMuNVY3LjVNOCw3LjVINFYxMEg4VjcuNU05LjUsMTMuNUExLjUsMS41IDAgMCwwIDgsMTVBMS41LDEuNSAwIDAsMCA5LjUsMTYuNUExLjUsMS41IDAgMCwwIDExLDE1QTEuNSwxLjUgMCAwLDAgOS41LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzQXJ0aWN1bGF0ZWRGcm9udCA9IFwiTTEsNkwyLjUsNy41TDEsOUwyLjUsMTAuNUwxLDEyTDIuNSwxMy41TDEsMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjhDMjMsNi44OSAyMi4xMSw2IDIxLDZIMU00LDcuNUg2LjVWMTBINFY3LjVNOCw3LjVIMTJWMTBIOFY3LjVNMTMuNSw3LjVIMTcuNVYxMEgxMy41VjcuNU0xOSw3LjVIMjEuNVYxM0wxOSwxMVY3LjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0Nsb2NrID0gXCJNMTYuNSw0VjguMjVMMTkuMzYsOS45NEwxOC42MSwxMS4xNkwxNSw5VjRIMTYuNU0xNiwxM0MxNy4zNiwxMyAxOC41NCwxMi41IDE5LjUsMTEuNTNDMjAuNSwxMC41NiAyMSw5LjM5IDIxLDhDMjEsNi42NCAyMC41LDUuNDYgMTkuNSw0LjVDMTguNTQsMy41IDE3LjM2LDMgMTYsM0MxNC42MSwzIDEzLjQ0LDMuNSAxMi40Nyw0LjVDMTEuNSw1LjQ2IDExLDYuNjQgMTEsOEMxMSw5LjM5IDExLjUsMTAuNTYgMTIuNDcsMTEuNTNDMTMuNDQsMTIuNSAxNC42MSwxMyAxNiwxM00xMy41LDE5QzEzLjk0LDE5IDE0LjMsMTguODQgMTQuNTgsMTguNTRDMTQuODYsMTguMjQgMTUsMTcuODkgMTUsMTcuNUMxNSwxNy4wOCAxNC44NiwxNi43MyAxNC41OCwxNi40M0MxNC4zLDE2LjEzIDEzLjk0LDE2IDEzLjUsMTZDMTMuMDYsMTYgMTIuNywxNi4xMyAxMi40MiwxNi40M0MxMi4xNCwxNi43MyAxMiwxNy4wOCAxMiwxNy41QzEyLDE3Ljg5IDEyLjE0LDE4LjI0IDEyLjQyLDE4LjU0QzEyLjcsMTguODQgMTMuMDYsMTkgMTMuNSwxOU0zLDEzSDExLjExQzkuNywxMS42NCA5LDEwIDksOEgzVjEzTTQuNSwxOUM0Ljk0LDE5IDUuMywxOC44NCA1LjU4LDE4LjU0QzUuODYsMTguMjQgNiwxNy44OSA2LDE3LjVDNiwxNy4wOCA1Ljg2LDE2LjczIDUuNTgsMTYuNDNDNS4zLDE2LjEzIDQuOTQsMTYgNC41LDE2QzQuMDYsMTYgMy43LDE2LjEzIDMuNDIsMTYuNDNDMy4xNCwxNi43MyAzLDE3LjA4IDMsMTcuNUMzLDE3Ljg5IDMuMTQsMTguMjQgMy40MiwxOC41NEMzLjcsMTguODQgNC4wNiwxOSA0LjUsMTlNMTYsMUMxNy45MiwxIDE5LjU4LDEuNjcgMjAuOTUsMy4wNUMyMi4zMyw0LjQyIDIzLDYuMDggMjMsOEMyMyw5Ljc3IDIyLjQ0LDExLjI5IDIxLjI4LDEyLjU5QzIwLjEzLDEzLjg4IDE4LjcsMTQuNjYgMTcsMTQuOTFWMThDMTcsMTguODQgMTYuNjcsMTkuNTggMTYsMjAuMlYyMkMxNiwyMi4yNyAxNS44OSwyMi41IDE1LjcsMjIuNzFDMTUuNSwyMi45MSAxNS4yOCwyMyAxNSwyM0gxNEMxMy43MywyMyAxMy41LDIyLjkxIDEzLjI5LDIyLjcxQzEzLjA5LDIyLjUgMTMsMjIuMjcgMTMsMjJWMjFINVYyMkM1LDIyLjI3IDQuOTEsMjIuNSA0LjcxLDIyLjcxQzQuNSwyMi45MSA0LjI3LDIzIDQsMjNIM0MyLjcyLDIzIDIuNSwyMi45MSAyLjMsMjIuNzFDMi4xMSwyMi41IDIsMjIuMjcgMiwyMlYyMC4yQzEuMzMsMTkuNTggMSwxOC44NCAxLDE4VjhDMSw2LjQyIDEuNjcsNS4zNSAzLjA1LDQuOEM0LjQyLDQuMjYgNi40MSw0IDksNEM5LjEzLDQgOS4zMyw0IDkuNjEsNEM5Ljg5LDQgMTAuMDksNC4wMyAxMC4yMiw0LjAzQzExLjYzLDIgMTMuNTUsMSAxNiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0RvdWJsZURlY2tlciA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTRDMjMsMTIuODkgMjIuMTEsMTIgMjEsMTJIMTlWOS41SDIzVjZDMjMsNC44OSAyMi4xMSw0IDIxLDRIM00yLjUsNS41SDYuNVY4SDIuNVY1LjVNOCw1LjVIMTJWOEg4VjUuNU0xMy41LDUuNUgxNy41VjhIMTMuNVY1LjVNMTksNS41SDIxLjVWOEgxOVY1LjVNMTMuNSw5LjVIMTcuNVYxMkgxMy41VjkuNU0yLjUsOS41SDYuNVYxMkgyLjVWOS41TTgsOS41SDEyVjEySDhWOS41TTYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNU0xOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNNYXJrZXIgPSBcIk0xMiAyQzcuNTggMiA0IDIuNSA0IDZWMTZBMyAzIDAgMCAwIDUgMTguMjJWMjBBMSAxIDAgMCAwIDYgMjFIN0ExIDEgMCAwIDAgOCAyMFYxOUgxNEE4IDggMCAwIDEgMTMgMTUuNUE1LjU1IDUuNTUgMCAwIDEgMTUuMzggMTFINlY2SDE4VjEwQTQuMDcgNC4wNyAwIDAgMSAxOC41IDEwQTUuMzQgNS4zNCAwIDAgMSAyMCAxMC4yMlY2QzIwIDIuNSAxNi40MiAyIDEyIDJNNy41IDE0QTEuNSAxLjUgMCAxIDEgNiAxNS41QTEuNSAxLjUgMCAwIDEgNy41IDE0TTE4LjUgMTJBMy41NCAzLjU0IDAgMCAwIDE1IDE1LjVDMTUgMTguMSAxOC41IDIyIDE4LjUgMjJTMjIgMTguMSAyMiAxNS41QTMuNTQgMy41NCAwIDAgMCAxOC41IDEyTTE4LjUgMTYuOEExLjIgMS4yIDAgMSAxIDE4LjUgMTQuNEExLjI5IDEuMjkgMCAwIDEgMTkuNyAxNS42QTEuMTUgMS4xNSAwIDAgMSAxOC41IDE2LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzTXVsdGlwbGUgPSBcIk0xMCA1QzUuNTggNSAyIDUuNSAyIDlWMTlDMiAxOS44NSAyLjM3IDIwLjY2IDMgMjEuMjJWMjNDMyAyMy41NSAzLjQ1IDI0IDQgMjRINUM1LjU1IDI0IDYgMjMuNTUgNiAyM1YyMkgxNFYyM0MxNCAyMy41NSAxNC40NSAyNCAxNSAyNEgxNkMxNi41NSAyNCAxNyAyMy41NSAxNyAyM1YyMS4yMkMxNy42MyAyMC42NiAxOCAxOS44NSAxOCAxOVY5QzE4IDUuNSAxNC40MiA1IDEwIDVNNS41IDIwQzQuNjcgMjAgNCAxOS4zMyA0IDE4LjVTNC42NyAxNyA1LjUgMTcgNyAxNy42NyA3IDE4LjUgNi4zMyAyMCA1LjUgMjBNMTQuNSAyMEMxMy42NyAyMCAxMyAxOS4zMyAxMyAxOC41UzEzLjY3IDE3IDE0LjUgMTcgMTYgMTcuNjcgMTYgMTguNSAxNS4zMyAyMCAxNC41IDIwTTE2IDE0SDRWOUgxNlYxNE0yMiA1VjE1QzIyIDE1Ljg1IDIxLjYzIDE2LjY2IDIxIDE3LjIyVjE5QzIxIDE5LjU1IDIwLjU1IDIwIDIwIDIwSDE5Ljg4QzE5Ljk1IDE5LjY4IDIwIDE5LjM1IDIwIDE5VjlDMjAgMyAxMyAzIDEwIDNDOS4wOSAzIDcuOCAzIDYuNDYgMy4xN0M3LjU1IDEuMzIgMTAuNSAxIDE0IDFDMTguNDIgMSAyMiAxLjUgMjIgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNTY2hvb2wgPSBcIk0zLDZDMS44OSw2IDEsNi44OSAxLDhWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5VjhDMTksNi44OSAxOC4xMSw2IDE3LDZIM00xMy41LDcuNUgxNy41VjEwSDEzLjVWNy41TTIuNSw3LjVINi41VjEwSDIuNVY3LjVNOCw3LjVIMTJWMTBIOFY3LjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c1NpZGUgPSBcIk0zLDZDMS44OSw2IDEsNi44OSAxLDhWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjhDMjMsNi44OSAyMi4xMSw2IDIxLDZIM00yLjUsNy41SDYuNVYxMEgyLjVWNy41TTgsNy41SDEyVjEwSDhWNy41TTEzLjUsNy41SDE3LjVWMTBIMTMuNVY3LjVNMTksNy41SDIxLjVWMTNMMTksMTFWNy41TTYsMTMuNUExLjUsMS41IDAgMCwxIDcuNSwxNUExLjUsMS41IDAgMCwxIDYsMTYuNUExLjUsMS41IDAgMCwxIDQuNSwxNUExLjUsMS41IDAgMCwxIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNTdG9wID0gXCJNMjIgN1YxNkMyMiAxNi43MSAyMS42MiAxNy4zNiAyMSAxNy43MlYxOS4yNUMyMSAxOS42NiAyMC42NiAyMCAyMC4yNSAyMEgxOS43NUMxOS4zNCAyMCAxOSAxOS42NiAxOSAxOS4yNVYxOEgxMlYxOS4yNUMxMiAxOS42NiAxMS42NiAyMCAxMS4yNSAyMEgxMC43NUMxMC4zNCAyMCAxMCAxOS42NiAxMCAxOS4yNVYxNy43MkM5LjM5IDE3LjM2IDkgMTYuNzEgOSAxNlY3QzkgNCAxMiA0IDE1LjUgNFMyMiA0IDIyIDdNMTMgMTVDMTMgMTQuNDUgMTIuNTUgMTQgMTIgMTRTMTEgMTQuNDUgMTEgMTUgMTEuNDUgMTYgMTIgMTYgMTMgMTUuNTUgMTMgMTVNMjAgMTVDMjAgMTQuNDUgMTkuNTUgMTQgMTkgMTRTMTggMTQuNDUgMTggMTUgMTguNDUgMTYgMTkgMTYgMjAgMTUuNTUgMjAgMTVNMjAgN0gxMVYxMUgyMFY3TTcgOS41QzYuOTcgOC4xMiA1LjgzIDcgNC40NSA3LjA1QzMuMDcgNy4wOCAxLjk3IDguMjIgMiA5LjZDMi4wMyAxMC43NyAyLjg2IDExLjc3IDQgMTJWMjBINVYxMkM2LjE4IDExLjc2IDcgMTAuNzEgNyA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzU3RvcENvdmVyZWQgPSBcIk0yMCAzSDdWMkg2QTEuNzggMS43OCAwIDAgMCA0LjU5IDNIMlY1SDMuNzNDMiAxMC41OCAyIDIyIDIgMjJIN1Y1SDIwTTIyIDguNUEyLjUgMi41IDAgMSAwIDE5IDExVjIySDIwVjExQTIuNSAyLjUgMCAwIDAgMjIgOC41TTE1IDExLjVWMTZIMTRWMjJIMTIuNVYxN0gxMS41VjIySDEwVjE2SDlWMTEuNUExLjUgMS41IDAgMCAxIDEwLjUgMTBIMTMuNUExLjUgMS41IDAgMCAxIDE1IDExLjVNMTIgNi41QTEuNSAxLjUgMCAxIDAgMTMuNSA4QTEuNSAxLjUgMCAwIDAgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c1N0b3BVbmNvdmVyZWQgPSBcIk02IDIyVjE5SDRWMjJIMlYxNEExIDEgMCAwIDEgMyAxM0ExIDEgMCAwIDEgNCAxNFYxN0g3QTEgMSAwIDAgMSA4IDE4VjIyTTIwIDExVjIySDE5VjExQTIuNSAyLjUgMCAxIDEgMjAgMTFNMTUgMTEuNTVWMTZIMTRWMjJIMTIuNVYxN0gxMS41VjIySDEwVjE2SDlWMTEuNUExLjUgMS41IDAgMCAxIDEwLjUgMTBIMTMuNUExLjUgMS41IDAgMCAxIDE1IDExLjVNMTIgNi41NUExLjUgMS41IDAgMSAwIDEzLjUgOEExLjUgMS41IDAgMCAwIDEyIDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXR0ZXJmbHkgPSBcIk0xMyAyMUgxMVY2TDkuMDMgMy45N0wxMCAzTDEyIDVMMTQgM0wxNSA0TDEzIDZWMjFNNyA2QzQuMjQgNiAyIDguMjQgMiAxMUMyIDEyLjY0IDIuNzkgMTQuMDkgNCAxNUg0VjE3QzQgMTkuMjEgNS43OSAyMSA4IDIxQzguNzIgMjEgOS4zOSAyMC44MSA5Ljk3IDIwLjVMMTAgMjAuNDZWN0M5LjE2IDYuMzcgOC4xMyA2IDcgNk02LjUgMTIuNUw1IDExTDYuNSA5LjVMOCAxMUw2LjUgMTIuNU0yMiAxMUMyMiA4LjI0IDE5Ljc2IDYgMTcgNkMxNS44OCA2IDE0Ljg1IDYuMzcgMTQgN0wxNCA3VjIwLjQ2QzE0LjU5IDIwLjgxIDE1LjI3IDIxIDE2IDIxQzE4LjIxIDIxIDIwIDE5LjIxIDIwIDE3VjE1SDIwQzIxLjIxIDE0LjA5IDIyIDEyLjY0IDIyIDExTTE3LjUgMTIuNUwxNiAxMUwxNy41IDkuNUwxOSAxMUwxNy41IDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnV0dGVyZmx5T3V0bGluZSA9IFwiTTEzIDIxSDExVjZMOS4wMyAzLjk3TDEwIDNMMTIgNUwxNCAzTDE1IDRMMTMgNlYyMU0xNCA5SDE0VjdDMTQuODQgNi4zNyAxNS44OCA2IDE3IDZDMTkuNzYgNiAyMiA4LjI0IDIyIDExQzIyIDEyLjY0IDIxLjIxIDE0LjA5IDIwIDE1SDIwVjE3QzIwIDE5LjIxIDE4LjIxIDIxIDE2IDIxQzE1LjI3IDIxIDE0LjU5IDIwLjgxIDE0IDIwLjQ2VjE4LjQ2QzE0LjU5IDE4LjgxIDE1LjI3IDE5IDE2IDE5QzE3LjEgMTkgMTggMTguMSAxOCAxN1YxMy44M0MxOS4xNyAxMy40MiAyMCAxMi4zMSAyMCAxMUMyMCA5LjM1IDE4LjY3IDggMTcgOEgxN0MxNS44OCA4IDE0Ljg0IDguMzcgMTQgOU0xMCA5SDEwQzkuMTYgOC4zNyA4LjEzIDggNyA4SDdDNS4zMyA4IDQgOS4zNSA0IDExQzQgMTIuMzEgNC44NCAxMy40MiA2IDEzLjgzVjE3QzYgMTguMSA2LjkgMTkgOCAxOUM4LjczIDE5IDkuNDEgMTguODEgMTAgMTguNDZWMjAuNDZDOS40MSAyMC44MSA4LjczIDIxIDggMjFDNS43OSAyMSA0IDE5LjIxIDQgMTdWMTVINEMyLjc5IDE0LjA5IDIgMTIuNjQgMiAxMUMyIDguMjQgNC4yNCA2IDcgNkM4LjEzIDYgOS4xNiA2LjM3IDEwIDdWOU05IDExTDcuNSA5LjVMNiAxMUw3LjUgMTIuNUw5IDExTTE4IDExTDE2LjUgOS41TDE1IDExTDE2LjUgMTIuNUwxOCAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWJsZURhdGEgPSBcIk03LjA1IDMuNUM1LjY4IDQuODggNS42OCA3LjEgNy4wNSA4LjQ3TDE1LjU0IDE2Ljk1QzE2LjEyIDE3LjU0IDE2LjEyIDE4LjUgMTUuNTQgMTkuMDdDMTQuOTUgMTkuNjYgMTQgMTkuNjYgMTMuNDEgMTkuMDdMOS4xNyAxNC44M0wxMC4yMyAxMy43N0w2LjcgMTAuMjNMNi4zNCAxMC41OUw0LjkzIDkuMTdDNC41NCA4Ljc4IDMuOTEgOC43OCAzLjUgOS4xN0wyLjEgMTAuNTlDMS43MSAxMSAxLjcxIDExLjYxIDIuMSAxMkwzLjUgMTMuNDFMMy4xNiAxMy43N0w2LjcgMTcuM0w3Ljc2IDE2LjI0TDEyIDIwLjVDMTMuMzcgMjEuODUgMTUuNTggMjEuODUgMTYuOTUgMjAuNUMxOC4zMiAxOS4xMiAxOC4zMiAxNi45IDE2Ljk1IDE1LjU0TDguNDYgNy4wNUM3Ljg4IDYuNDYgNy44OCA1LjUgOC40NiA0LjkzQzkuMDUgNC4zNCAxMCA0LjM0IDEwLjU5IDQuOTNMMTQuODMgOS4xN0wxMy43NyAxMC4yM0wxNy4zIDEzLjc3TDE3LjY2IDEzLjQxTDE5LjA3IDE0LjgzQzE5LjQ2IDE1LjIyIDIwLjEgMTUuMjIgMjAuNSAxNC44M0wyMS45IDEzLjQxQzIyLjI5IDEzIDIyLjI5IDEyLjM5IDIxLjkgMTJMMjAuNSAxMC41OUwyMC44NCAxMC4yM0wxNy4zIDYuN0wxNi4yNCA3Ljc2TDEyIDMuNUMxMC42MyAyLjE1IDguNDIgMi4xNSA3LjA1IDMuNU0yLjgxIDExLjI5TDQuMjIgOS44OEw1LjY0IDExLjI5TDQuMjIgMTIuNzFNMTguMzYgMTIuNzFMMTkuNzggMTEuMjlMMjEuMTkgMTIuNzFMMTkuNzggMTQuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FjaGVkID0gXCJNMTksOEwxNSwxMkgxOEE2LDYgMCAwLDEgMTIsMThDMTEsMTggMTAuMDMsMTcuNzUgOS4yLDE3LjNMNy43NCwxOC43NkM4Ljk3LDE5LjU0IDEwLjQzLDIwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkgyM002LDEyQTYsNiAwIDAsMSAxMiw2QzEzLDYgMTMuOTcsNi4yNSAxNC44LDYuN0wxNi4yNiw1LjI0QzE1LjAzLDQuNDYgMTMuNTcsNCAxMiw0QTgsOCAwIDAsMCA0LDEySDFMNSwxNkw5LDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FjdHVzID0gXCJNMTQsMTZWMjFIMTBWMThIOUEzLDMgMCAwLDEgNiwxNVYxMkExLDEgMCAwLDEgNywxMUExLDEgMCAwLDEgOCwxMlYxNUM4LDE1LjU2IDguNDUsMTYgOSwxNkgxMFY2QTIsMiAwIDAsMSAxMiw0QTIsMiAwIDAsMSAxNCw2VjE0SDE1QTEsMSAwIDAsMCAxNiwxM1YxMUExLDEgMCAwLDEgMTcsMTBBMSwxIDAgMCwxIDE4LDExVjEzQTMsMyAwIDAsMSAxNSwxNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWtlID0gXCJNMTEuNSwwLjVDMTIsMC43NSAxMywyLjQgMTMsMy41QzEzLDQuNiAxMi4zMyw1IDExLjUsNUMxMC42Nyw1IDEwLDQuODUgMTAsMy43NUMxMCwyLjY1IDExLDIgMTEuNSwwLjVNMTguNSw5QzIxLDkgMjMsMTEgMjMsMTMuNUMyMywxNS4wNiAyMi4yMSwxNi40MyAyMSwxNy4yNFYyM0gxMkwzLDIzVjE3LjI0QzEuNzksMTYuNDMgMSwxNS4wNiAxLDEzLjVDMSwxMSAzLDkgNS41LDlIMTBWNkgxM1Y5SDE4LjVNMTIsMTZBMi41LDIuNSAwIDAsMCAxNC41LDEzLjVIMTZBMi41LDIuNSAwIDAsMCAxOC41LDE2QTIuNSwyLjUgMCAwLDAgMjEsMTMuNUEyLjUsMi41IDAgMCwwIDE4LjUsMTFINS41QTIuNSwyLjUgMCAwLDAgMywxMy41QTIuNSwyLjUgMCAwLDAgNS41LDE2QTIuNSwyLjUgMCAwLDAgOCwxMy41SDkuNUEyLjUsMi41IDAgMCwwIDEyLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNha2VMYXllcmVkID0gXCJNMjEsMjFWMTdDMjEsMTUuODkgMjAuMSwxNSAxOSwxNUgxOFYxMkMxOCwxMC44OSAxNy4xLDEwIDE2LDEwSDEzVjhIMTFWMTBIOEM2Ljg5LDEwIDYsMTAuODkgNiwxMlYxNUg1QzMuODksMTUgMywxNS44OSAzLDE3VjIxSDFWMjNIMjNWMjFNMTIsN0EyLDIgMCAwLDAgMTQsNUMxNCw0LjYyIDEzLjksNC4yNyAxMy43MSwzLjk3TDEyLDFMMTAuMjgsMy45N0MxMC4xLDQuMjcgMTAsNC42MiAxMCw1QTIsMiAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNha2VWYXJpYW50ID0gXCJNMTIsNkMxMy4xMSw2IDE0LDUuMSAxNCw0QzE0LDMuNjIgMTMuOSwzLjI3IDEzLjcxLDIuOTdMMTIsMEwxMC4yOSwyLjk3QzEwLjEsMy4yNyAxMCwzLjYyIDEwLDRBMiwyIDAgMCwwIDEyLDZNMTYuNiwxNkwxNS41MywxNC45MkwxNC40NSwxNkMxMy4xNSwxNy4yOSAxMC44NywxNy4zIDkuNTYsMTZMOC41LDE0LjkyTDcuNCwxNkM2Ljc1LDE2LjY0IDUuODgsMTcgNC45NiwxN0M0LjIzLDE3IDMuNTYsMTYuNzcgMywxNi4zOVYyMUExLDEgMCAwLDAgNCwyMkgyMEExLDEgMCAwLDAgMjEsMjFWMTYuMzlDMjAuNDQsMTYuNzcgMTkuNzcsMTcgMTkuMDQsMTdDMTguMTIsMTcgMTcuMjUsMTYuNjQgMTYuNiwxNk0xOCw5SDEzVjdIMTFWOUg2QTMsMyAwIDAsMCAzLDEyVjEzLjU0QzMsMTQuNjIgMy44OCwxNS41IDQuOTYsMTUuNUM1LjUsMTUuNSA2LDE1LjMgNi4zNCwxNC45M0w4LjUsMTIuOEwxMC42MSwxNC45M0MxMS4zNSwxNS42NyAxMi42NCwxNS42NyAxMy4zOCwxNC45M0wxNS41LDEyLjhMMTcuNjUsMTQuOTNDMTgsMTUuMyAxOC41LDE1LjUgMTkuMDMsMTUuNUMyMC4xMSwxNS41IDIxLDE0LjYyIDIxLDEzLjU0VjEyQTMsMyAwIDAsMCAxOCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGN1bGF0b3IgPSBcIk03LDJIMTdBMiwyIDAgMCwxIDE5LDRWMjBBMiwyIDAgMCwxIDE3LDIySDdBMiwyIDAgMCwxIDUsMjBWNEEyLDIgMCAwLDEgNywyTTcsNFY4SDE3VjRIN003LDEwVjEySDlWMTBIN00xMSwxMFYxMkgxM1YxMEgxMU0xNSwxMFYxMkgxN1YxMEgxNU03LDE0VjE2SDlWMTRIN00xMSwxNFYxNkgxM1YxNEgxMU0xNSwxNFYxNkgxN1YxNEgxNU03LDE4VjIwSDlWMThIN00xMSwxOFYyMEgxM1YxOEgxMU0xNSwxOFYyMEgxN1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxjdWxhdG9yVmFyaWFudCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMyA3LjFMMTQuMSA2TDE1LjUgNy40TDE2LjkgNkwxOCA3LjFMMTYuNiA4LjVMMTggOS45TDE2LjkgMTFMMTUuNSA5LjZMMTQuMSAxMUwxMyA5LjlMMTQuNCA4LjVMMTMgNy4xTTYuMiA3LjdIMTEuMlY5LjJINi4yVjcuN00xMS41IDE2SDkuNVYxOEg4VjE2SDZWMTQuNUg4VjEyLjVIOS41VjE0LjVIMTEuNVYxNk0xOCAxNy4ySDEzVjE1LjdIMThWMTcuMk0xOCAxNC44SDEzVjEzLjNIMThWMTQuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxjdWxhdG9yVmFyaWFudE91dGxpbmUgPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgMTlINVY1SDE5VjE5TTYuMiA3LjdIMTEuMlY5LjJINi4yVjcuN00xMyAxNS44SDE4VjE3LjNIMTNWMTUuOE0xMyAxMy4ySDE4VjE0LjdIMTNWMTMuMk04IDE4SDkuNVYxNkgxMS41VjE0LjVIOS41VjEyLjVIOFYxNC41SDZWMTZIOFYxOE0xNC4xIDEwLjlMMTUuNSA5LjVMMTYuOSAxMC45TDE4IDkuOUwxNi42IDguNUwxOCA3LjFMMTYuOSA2TDE1LjUgNy40TDE0LjEgNkwxMyA3LjFMMTQuNCA4LjVMMTMgOS45TDE0LjEgMTAuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhciA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU0xNywxMkgxMlYxN0gxN1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFjY291bnQgPSBcIk0xMiwxMEMxNCwxMCAxNSwxMi40MiAxMy41OSwxMy44NEMxMi4xNywxNS4yNiA5Ljc1LDE0LjI1IDkuNzUsMTIuMjVDOS43NSwxMSAxMC43NSwxMCAxMiwxME0xNi41LDE5SDcuNVYxNy44OEM3LjUsMTYuNjMgOS41LDE1LjYzIDEyLDE1LjYzQzE0LjUsMTUuNjMgMTYuNSwxNi42MyAxNi41LDE3Ljg4TTE5LDIwSDVWOUgxOU0xNiwyVjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRIMThWMkgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFjY291bnRPdXRsaW5lID0gXCJNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRNMTksMjBINVYxMEgxOVYyME0xOSw4SDVWNkgxOU0xMiwxMUMxNCwxMSAxNSwxMy40MiAxMy41OSwxNC44NEMxMi4xNywxNi4yNiA5Ljc1LDE1LjI1IDkuNzUsMTMuMjVDOS43NSwxMiAxMC43NSwxMSAxMiwxMU0xNi41LDE4Ljg4VjE5SDcuNVYxOC44OEM3LjUsMTcuNjMgOS41LDE2LjYzIDEyLDE2LjYzQzE0LjUsMTYuNjMgMTYuNSwxNy42MyAxNi41LDE4Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQWxlcnQgPSBcIk02IDFWM0g1QzMuODkgMyAzIDMuODkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE4VjFIMTZWM0g4VjFINk01IDhIMTlWMTlINVY3TTExIDlWMTRIMTNWOUgxMU0xMSAxNlYxOEgxM1YxNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFycm93TGVmdCA9IFwiTTE5IDNIMThWMUgxNlYzSDhWMUg2VjNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuODkgMjAuMSAzIDE5IDNNMTkgMTlINVY4SDE5VjE5TTEyIDEwVjEySDE2VjE1SDEyVjE3TDggMTMuNUwxMiAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFycm93UmlnaHQgPSBcIk0xOSAzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xIDMuODkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzTTE5IDE5SDVWOEgxOVYxOU0xMiAxN1YxNUg4VjEySDEyVjEwTDE2IDEzLjVMMTIgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJCbGFuayA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQmxhbmtNdWx0aXBsZSA9IFwiTTIxIDE3VjhIN1YxN0gyMU0yMSAzQzIyLjEgMyAyMyAzLjkgMjMgNVYxN0MyMyAxOC4xIDIyLjEgMTkgMjEgMTlIN0M1Ljg5IDE5IDUgMTguMSA1IDE3VjVDNSAzLjkgNS45IDMgNyAzSDhWMUgxMFYzSDE4VjFIMjBWM0gyMU0zIDIxSDE3VjIzSDNDMS44OSAyMyAxIDIyLjEgMSAyMVY5SDNWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJCbGFua091dGxpbmUgPSBcIk0xOSw0SDE4VjJIMTZWNEg4VjJINlY0SDVDMy44OSw0IDMsNC45IDMsNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWNkEyLDIgMCAwLDAgMTksNE0xOSwyMEg1VjEwSDE5VjIwTTE5LDhINVY2SDE5VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJDaGVjayA9IFwiTTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xNi41MywxMS4wNkwxNS40NywxMEwxMC41OSwxNC44OEw4LjQ3LDEyLjc2TDcuNDEsMTMuODJMMTAuNTksMTdMMTYuNTMsMTEuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJDaGVja091dGxpbmUgPSBcIk0xOSw0SDE4VjJIMTZWNEg4VjJINlY0SDVBMiwyIDAgMCwwIDMsNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWNkEyLDIgMCAwLDAgMTksNE0xOSwyMEg1VjEwSDE5VjIwTTUsOFY2SDE5VjhINU0xMC41NiwxOC40NkwxNi41LDEyLjUzTDE1LjQzLDExLjQ3TDEwLjU2LDE2LjM0TDguNDUsMTQuMjNMNy4zOSwxNS4yOUwxMC41NiwxOC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckNsb2NrID0gXCJNMTUsMTNIMTYuNVYxNS44MkwxOC45NCwxNy4yM0wxOC4xOSwxOC41M0wxNSwxNi42OVYxM00xOSw4SDVWMTlIOS42N0M5LjI0LDE4LjA5IDksMTcuMDcgOSwxNkE3LDcgMCAwLDEgMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4TTUsMjFDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDZWMUg4VjNIMTZWMUgxOFYzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjFDMjIuMjQsMTIuMzYgMjMsMTQuMDkgMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzE0LjA5LDIzIDEyLjM2LDIyLjI0IDExLjEsMjFINU0xNiwxMS4xNUE0Ljg1LDQuODUgMCAwLDAgMTEuMTUsMTZDMTEuMTUsMTguNjggMTMuMzIsMjAuODUgMTYsMjAuODVBNC44NSw0Ljg1IDAgMCwwIDIwLjg1LDE2QzIwLjg1LDEzLjMyIDE4LjY4LDExLjE1IDE2LDExLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQ2xvY2tPdXRsaW5lID0gXCJNNiAxVjNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDExLjFDMTIuMzYgMjIuMjQgMTQuMDkgMjMgMTYgMjNDMTkuODcgMjMgMjMgMTkuODcgMjMgMTZDMjMgMTQuMDkgMjIuMjQgMTIuMzYgMjEgMTEuMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMThWMUgxNlYzSDhWMU01IDVIMTlWN0g1TTUgOUgxOVY5LjY3QzE4LjA5IDkuMjQgMTcuMDcgOSAxNiA5QzEyLjEzIDkgOSAxMi4xMyA5IDE2QzkgMTcuMDcgOS4yNCAxOC4wOSA5LjY3IDE5SDVNMTYgMTEuMTVDMTguNjggMTEuMTUgMjAuODUgMTMuMzIgMjAuODUgMTZDMjAuODUgMTguNjggMTguNjggMjAuODUgMTYgMjAuODVDMTMuMzIgMjAuODUgMTEuMTUgMTguNjggMTEuMTUgMTZDMTEuMTUgMTMuMzIgMTMuMzIgMTEuMTUgMTYgMTEuMTVNMTUgMTNWMTYuNjlMMTguMTkgMTguNTNMMTguOTQgMTcuMjNMMTYuNSAxNS44MlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckN1cnNvciA9IFwiTTIxLjcgMjAuMjZMMjAuMjkgMjEuNjdMMTcuMDYgMTguNUwxNiAyMC45N0wxNCAxNEwyMSAxNkwxOC40NyAxNy4wM0wyMS43IDIwLjI2TTE5IDhINVYxOUgxMy40MUwxMy45NyAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlMMyA1QzMgMy45IDMuODkgMyA1IDNINlYxSDhWM0gxNlYxSDE4VjNIMTlDMjAuMSAzIDIxIDMuOSAyMSA1VjEzLjk1TDE5IDEzLjM1VjhNMTIgMTBWMTVIN1YxMEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckVkaXQgPSBcIk0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxMFYxOUg1VjhIMTlWOUgyMVY1QTIsMiAwIDAsMCAxOSwzTTIxLjcsMTMuMzVMMjAuNywxNC4zNUwxOC42NSwxMi4zNUwxOS42NSwxMS4zNUMxOS44NSwxMS4xNCAyMC4xOSwxMS4xMyAyMC40MiwxMS4zNUwyMS43LDEyLjYzQzIxLjg5LDEyLjgzIDIxLjg5LDEzLjE1IDIxLjcsMTMuMzVNMTIsMTguOTRMMTguMDcsMTIuODhMMjAuMTIsMTQuODhMMTQuMDYsMjFIMTJWMTguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJFbmQgPSBcIk0yMiAxNFYyMkgyMFYxOEwxNiAyMlYxOUgxMVYxN0gxNlYxNEwyMCAxOFYxNEgyMk01IDE5TDkgMTlWMjFMNSAyMUMzLjkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuODkgMy45IDMgNSAzSDZWLjk5OEg4VjNIMTZWLjk5OEgxOFYzSDE5QzIwLjExIDMgMjEgMy44OSAyMSA1TDIxIDEySDE5VjhINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckV4cG9ydCA9IFwiTTEyLDIyTDE2LDE4SDEzVjEySDExVjE4SDhNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIOFYyMEg1VjlIMTlWMjBIMTZWMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJIZWFydCA9IFwiTTE5LDIwVjlINVYyMEgxOU0xNiwySDE4VjRIMTlBMiwyIDAgMCwxIDIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWNkEyLDIgMCAwLDEgNSw0SDZWMkg4VjRIMTZWMk0xMiwxOC4xN0wxMS40MiwxNy42NEM5LjM2LDE1Ljc3IDgsMTQuNTQgOCwxMy4wM0M4LDExLjggOC45NywxMC44MyAxMC4yLDEwLjgzQzEwLjksMTAuODMgMTEuNTYsMTEuMTUgMTIsMTEuNjZDMTIuNDQsMTEuMTUgMTMuMSwxMC44MyAxMy44LDEwLjgzQzE1LjAzLDEwLjgzIDE2LDExLjggMTYsMTMuMDNDMTYsMTQuNTQgMTQuNjQsMTUuNzcgMTIuNTgsMTcuNjRMMTIsMTguMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJJbXBvcnQgPSBcIk0xMiwxMkw4LDE2SDExVjIySDEzVjE2SDE2TTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDlWMjBINVY5SDE5VjIwSDE1VjIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTG9jayA9IFwiTTEzIDIxQzEzIDIxLjM1IDEzLjA3IDIxLjY5IDEzLjE4IDIySDVDMy45IDIyIDMgMjEuMTEgMyAyMFY2QzMgNC44OSAzLjg5IDQgNSA0SDZWMkg4VjRIMTZWMkgxOFY0SDE5QzIwLjEgNCAyMSA0Ljg5IDIxIDZWMTEuNzhDMjAuNDIgMTEuMzggMTkuNzQgMTEuMTMgMTkgMTEuMDVWOUg1VjIwSDEzVjIxTTIyIDE3VjIxQzIyIDIxLjU1IDIxLjU1IDIyIDIxIDIySDE2QzE1LjQ1IDIyIDE1IDIxLjU1IDE1IDIxVjE3QzE1IDE2LjQ1IDE1LjQ1IDE2IDE2IDE2VjE1LjVDMTYgMTQuMTIgMTcuMTIgMTMgMTguNSAxM1MyMSAxNC4xMiAyMSAxNS41VjE2QzIxLjU1IDE2IDIyIDE2LjQ1IDIyIDE3TTIwIDE1LjVDMjAgMTQuNjcgMTkuMzMgMTQgMTguNSAxNFMxNyAxNC42NyAxNyAxNS41VjE2SDIwVjE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJMb2NrT3V0bGluZSA9IFwiTTEzIDIwSDVWMTBIMTlWMTEuMDVDMTkuNzQgMTEuMTMgMjAuNDIgMTEuMzggMjEgMTEuNzhWNkMyMSA0Ljg5IDIwLjExIDQgMTkgNEgxOFYySDE2VjRIOFYySDZWNEg1QzMuODkgNCAzIDQuOSAzIDZWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxMy4xOEMxMy4wNyAyMS42OSAxMyAyMS4zNSAxMyAyMVYyME01IDZIMTlWOEg1VjZNMjEgMTZWMTUuNUMyMSAxNC4xMiAxOS44OCAxMyAxOC41IDEzUzE2IDE0LjEyIDE2IDE1LjVWMTZDMTUuNDUgMTYgMTUgMTYuNDUgMTUgMTdWMjFDMTUgMjEuNTUgMTUuNDUgMjIgMTYgMjJIMjFDMjEuNTUgMjIgMjIgMjEuNTUgMjIgMjFWMTdDMjIgMTYuNDUgMjEuNTUgMTYgMjEgMTZNMjAgMTZIMTdWMTUuNUMxNyAxNC42NyAxNy42NyAxNCAxOC41IDE0UzIwIDE0LjY3IDIwIDE1LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJNaW51cyA9IFwiTTE5IDE5VjhINVYxOUgxOU0xNiAxSDE4VjNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuODkgMy44OSAzIDUgM0g2VjFIOFYzSDE2VjFNMTYgMTIuNVYxNC41SDhWMTIuNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhck1vbnRoID0gXCJNOSwxMFYxMkg3VjEwSDlNMTMsMTBWMTJIMTFWMTBIMTNNMTcsMTBWMTJIMTVWMTBIMTdNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g2VjFIOFYzSDE2VjFIMThWM0gxOU0xOSwxOVY4SDVWMTlIMTlNOSwxNFYxNkg3VjE0SDlNMTMsMTRWMTZIMTFWMTRIMTNNMTcsMTRWMTZIMTVWMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJNb250aE91dGxpbmUgPSBcIk03LDEySDlWMTRIN1YxMk0yMSw2VjIwQTIsMiAwIDAsMSAxOSwyMkg1QzMuODksMjIgMywyMS4xIDMsMjBWNkEyLDIgMCAwLDEgNSw0SDZWMkg4VjRIMTZWMkgxOFY0SDE5QTIsMiAwIDAsMSAyMSw2TTUsOEgxOVY2SDVWOE0xOSwyMFYxMEg1VjIwSDE5TTE1LDE0VjEySDE3VjE0SDE1TTExLDE0VjEySDEzVjE0SDExTTcsMTZIOVYxOEg3VjE2TTE1LDE4VjE2SDE3VjE4SDE1TTExLDE4VjE2SDEzVjE4SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTXVsdGlwbGUgPSBcIk0yMSwxN1Y4SDdWMTdIMjFNMjEsM0EyLDIgMCAwLDEgMjMsNVYxN0EyLDIgMCAwLDEgMjEsMTlIN0M1Ljg5LDE5IDUsMTguMSA1LDE3VjVBMiwyIDAgMCwxIDcsM0g4VjFIMTBWM0gxOFYxSDIwVjNIMjFNMywyMUgxN1YyM0gzQzEuODksMjMgMSwyMi4xIDEsMjFWOUgzVjIxTTE5LDE1SDE1VjExSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTXVsdGlwbGVDaGVjayA9IFwiTTIxLDE3VjhIN1YxN0gyMU0yMSwzQTIsMiAwIDAsMSAyMyw1VjE3QTIsMiAwIDAsMSAyMSwxOUg3QzUuODksMTkgNSwxOC4xIDUsMTdWNUEyLDIgMCAwLDEgNywzSDhWMUgxMFYzSDE4VjFIMjBWM0gyMU0xNy41MywxMS4wNkwxMy4wOSwxNS41TDEwLjQxLDEyLjgyTDExLjQ3LDExLjc2TDEzLjA5LDEzLjM4TDE2LjQ3LDEwTDE3LjUzLDExLjA2TTMsMjFIMTdWMjNIM0MxLjg5LDIzIDEsMjIuMSAxLDIxVjlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhck11bHRpc2VsZWN0ID0gXCJNMTksMTlWOEg1VjE5SDE5TTE2LDFIMThWM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNINlYxSDhWM0gxNlYxTTcsMTBIOVYxMkg3VjEwTTE1LDEwSDE3VjEySDE1VjEwTTExLDE0SDEzVjE2SDExVjE0TTE1LDE0SDE3VjE2SDE1VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyT3V0bGluZSA9IFwiTTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUMzLjg5LDQgMyw0LjkgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0TTE5LDIwSDVWMTBIMTlWMjBNMTksOEg1VjZIMTlWOE0xMiwxM0gxN1YxOEgxMlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclBsdXMgPSBcIk0xOSAxOVY4SDVWMTlIMTlNMTYgMUgxOFYzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTlDMjEgMjAuMTEgMjAuMTEgMjEgMTkgMjFINUMzLjg5IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjg5IDMuODkgMyA1IDNINlYxSDhWM0gxNlYxTTExIDkuNUgxM1YxMi41SDE2VjE0LjVIMTNWMTcuNUgxMVYxNC41SDhWMTIuNUgxMVY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJRdWVzdGlvbiA9IFwiTTYsMVYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0gxOFYxSDE2VjNIOFYxSDZNNSw4SDE5VjE5SDVWOE0xMi4xOSw5QzExLjMyLDkgMTAuNjIsOS4yIDEwLjA4LDkuNTlDOS41NiwxMCA5LjMsMTAuNTcgOS4zMSwxMS4zNkw5LjMyLDExLjM5SDExLjI1QzExLjI2LDExLjA5IDExLjM1LDEwLjg2IDExLjUzLDEwLjdDMTEuNzEsMTAuNTUgMTEuOTMsMTAuNDcgMTIuMTksMTAuNDdDMTIuNSwxMC40NyAxMi43NiwxMC41NyAxMi45NCwxMC43NUMxMy4xMiwxMC45NCAxMy4yLDExLjIgMTMuMiwxMS41QzEzLjIsMTEuODIgMTMuMTMsMTIuMDkgMTIuOTcsMTIuMzJDMTIuODMsMTIuNTUgMTIuNjIsMTIuNzUgMTIuMzYsMTIuOTFDMTEuODUsMTMuMjUgMTEuNSwxMy41NSAxMS4zMSwxMy44MkMxMS4xMSwxNC4wOCAxMSwxNC41IDExLDE1SDEzQzEzLDE0LjY5IDEzLjA0LDE0LjQ0IDEzLjEzLDE0LjI2QzEzLjIyLDE0LjA4IDEzLjM5LDEzLjkgMTMuNjQsMTMuNzRDMTQuMDksMTMuNSAxNC40NiwxMy4yMSAxNC43NSwxMi44MUMxNS4wNCwxMi40MSAxNS4xOSwxMiAxNS4xOSwxMS41QzE1LjE5LDEwLjc0IDE0LjkyLDEwLjEzIDE0LjM4LDkuNjhDMTMuODUsOS4yMyAxMy4xMiw5IDEyLjE5LDlNMTEsMTZWMThIMTNWMTZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJSYW5nZSA9IFwiTTksMTBIN1YxMkg5VjEwTTEzLDEwSDExVjEySDEzVjEwTTE3LDEwSDE1VjEySDE3VjEwTTE5LDNIMThWMUgxNlYzSDhWMUg2VjNINUMzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWOEgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJhbmdlT3V0bGluZSA9IFwiTTcsMTJIOVYxNEg3VjEyTTIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY2QTIsMiAwIDAsMSA1LDRINlYySDhWNEgxNlYySDE4VjRIMTlBMiwyIDAgMCwxIDIxLDZNNSw4SDE5VjZINVY4TTE5LDIwVjEwSDVWMjBIMTlNMTUsMTRIMTdWMTJIMTVWMTRNMTEsMTRIMTNWMTJIMTFWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJSZWZyZXNoID0gXCJNMTkgM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTRDMTMuNCAyMC41IDEyLjkgMTkuOCAxMi41IDE5SDVWOEgxOVYxMC42QzE5LjcgMTAuNyAyMC40IDEwLjkgMjEgMTEuM1Y1QzIxIDMuOSAyMC4xIDMgMTkgM00xOCAxMi41QzE5LjEgMTIuNSAyMC4xIDEyLjkgMjAuOCAxMy43TDIyIDEyLjVWMTYuNUgxOEwxOS44IDE0LjdDMTkuMyAxNC4zIDE4LjcgMTQgMTggMTRDMTYuNiAxNCAxNS41IDE1LjEgMTUuNSAxNi41UzE2LjYgMTkgMTggMTlDMTguOCAxOSAxOS41IDE4LjYgMjAgMThIMjEuN0MyMS4xIDE5LjUgMTkuNyAyMC41IDE4IDIwLjVDMTUuOCAyMC41IDE0IDE4LjcgMTQgMTYuNVMxNS44IDEyLjUgMTggMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJlZnJlc2hPdXRsaW5lID0gXCJNMTkgM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTRDMTMuNCAyMC41IDEyLjkgMTkuOCAxMi41IDE5SDVWOUgxOVYxMC42QzE5LjcgMTAuNyAyMC40IDEwLjkgMjEgMTEuM1Y1QzIxIDMuOSAyMC4xIDMgMTkgM00xOSA3SDVWNUgxOU0xOCAxMi41QzE5LjEgMTIuNSAyMC4xIDEyLjkgMjAuOCAxMy43TDIyIDEyLjVWMTYuNUgxOEwxOS44IDE0LjdDMTkuMyAxNC4zIDE4LjcgMTQgMTggMTRDMTYuNiAxNCAxNS41IDE1LjEgMTUuNSAxNi41UzE2LjYgMTkgMTggMTlDMTguOCAxOSAxOS41IDE4LjYgMjAgMThIMjEuN0MyMS4xIDE5LjUgMTkuNyAyMC41IDE4IDIwLjVDMTUuOCAyMC41IDE0IDE4LjcgMTQgMTYuNVMxNS44IDEyLjUgMTggMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJlbW92ZSA9IFwiTTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM005LjMxLDE3TDExLjc1LDE0LjU2TDE0LjE5LDE3TDE1LjI1LDE1Ljk0TDEyLjgxLDEzLjVMMTUuMjUsMTEuMDZMMTQuMTksMTBMMTEuNzUsMTIuNDRMOS4zMSwxMEw4LjI1LDExLjA2TDEwLjY5LDEzLjVMOC4yNSwxNS45NEw5LjMxLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyUmVtb3ZlT3V0bGluZSA9IFwiTTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0TTE5LDIwSDVWMTBIMTlWMjBNNSw4VjZIMTlWOEg1TTguMjMsMTcuNDFMOS4yOSwxOC40N0wxMS43MywxNi4wM0wxNC4xNywxOC40N0wxNS4yMywxNy40MUwxMi43OSwxNC45N0wxNS4yMywxMi41M0wxNC4xNywxMS40N0wxMS43MywxMy45MUw5LjI5LDExLjQ3TDguMjMsMTIuNTNMMTAuNjcsMTQuOTdMOC4yMywxNy40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclNlYXJjaCA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE5LDhINVYxOUg5LjVDOS44MSwxOS43NSAxMC4yNiwyMC40MiAxMC44MSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0g2VjFIOFYzSDE2VjFIMThWM0gxOUEyLDIgMCAwLDEgMjEsNVYxMy4wM0MyMC41LDEyLjIyIDE5LjgsMTEuNTQgMTksMTFWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN0YXIgPSBcIk0xOSwyMEg1VjlIMTlNMTYsMlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0SDE4VjJNMTAuODgsMTNINy4yN0wxMC4xOSwxNS4xMUw5LjA4LDE4LjU2TDEyLDE2LjQzTDE0LjkyLDE4LjU2TDEzLjgsMTUuMTJMMTYuNzIsMTNIMTMuMTJMMTIsOS41NkwxMC44OCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN0YXJ0ID0gXCJNMiAxNEg0VjE3SDlWMTRMMTMgMThMOSAyMlYxOUg0VjIySDJWMTRNMTkgMTlWOEg1VjEySDNMMyA1QzMgMy44OSAzLjg5IDMgNSAzSDZWLjk5OEg4VjNIMTZWLjk5OEgxOFYzSDE5QzIwLjEgMyAyMSAzLjg5IDIxIDVWMTlDMjEgMjAuMSAyMC4xIDIxIDE5IDIxTDEyLjgzIDIxTDE0LjgzIDE5TDE5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyU3luYyA9IFwiTTE4LDExVjEyLjVDMjEuMTksMTIuNSAyMy4wOSwxNi4wNSAyMS4zMywxOC43MUwyMC4yNCwxNy42MkMyMS4wNiwxNS45NiAxOS44NSwxNCAxOCwxNFYxNS41TDE1Ljc1LDEzLjI1TDE4LDExTTE4LDIyVjIwLjVDMTQuODEsMjAuNSAxMi45MSwxNi45NSAxNC42NywxNC4yOUwxNS43NiwxNS4zOEMxNC45NCwxNy4wNCAxNi4xNSwxOSAxOCwxOVYxNy41TDIwLjI1LDE5Ljc1TDE4LDIyTTE5LDNIMThWMUgxNlYzSDhWMUg2VjNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE0QzEzLjM2LDIwLjQ1IDEyLjg2LDE5Ljc3IDEyLjUsMTlINVY4SDE5VjEwLjU5QzE5LjcxLDEwLjcgMjAuMzksMTAuOTQgMjEsMTEuMzFWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN5bmNPdXRsaW5lID0gXCJNMTgsMTFWMTIuNUMyMS4xOSwxMi41IDIzLjA5LDE2LjA1IDIxLjMzLDE4LjcxTDIwLjI0LDE3LjYyQzIxLjA2LDE1Ljk2IDE5Ljg1LDE0IDE4LDE0VjE1LjVMMTUuNzUsMTMuMjVMMTgsMTFNMTgsMjJWMjAuNUMxNC44MSwyMC41IDEyLjkxLDE2Ljk1IDE0LjY3LDE0LjI5TDE1Ljc2LDE1LjM4QzE0Ljk0LDE3LjA0IDE2LjE1LDE5IDE4LDE5VjE3LjVMMjAuMjUsMTkuNzVMMTgsMjJNMTksM0gxOFYxSDE2VjNIOFYxSDZWM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTRDMTMuMzYsMjAuNDUgMTIuODYsMTkuNzcgMTIuNSwxOUg1VjlIMTlWMTAuNTlDMTkuNzEsMTAuNyAyMC4zOSwxMC45NCAyMSwxMS4zMVY1QTIsMiAwIDAsMCAxOSwzTTE5LDdINVY1SDE5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJUZXh0ID0gXCJNMTQsMTRIN1YxNkgxNE0xOSwxOUg1VjhIMTlNMTksM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTcsMTBIN1YxMkgxN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclRleHRPdXRsaW5lID0gXCJNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRNMTksMjBINVYxMEgxOVYyME01LDhWNkgxOVY4SDVNNywxMkgxN1YxNEg3VjEyTTcsMTZIMTRWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclRvZGF5ID0gXCJNNywxMEgxMlYxNUg3TTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWsgPSBcIk02IDFIOFYzSDE2VjFIMThWM0gxOUMyMC4xMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjExIDIwLjExIDIxIDE5IDIxSDVDMy44OSAyMSAzIDIwLjEgMyAxOVY1QzMgMy44OSAzLjg5IDMgNSAzSDZWMU01IDhWMTlIMTlWOEg1TTcgMTBIMTdWMTJIN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWtCZWdpbiA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU05LDEwSDdWMTdIOVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWtlbmQgPSBcIk0xOSwyMFY5SDVWMjBIMTlNMTYsMkgxOFY0SDE5QTIsMiAwIDAsMSAyMSw2VjIwQTIsMiAwIDAsMSAxOSwyMkg1QTIsMiAwIDAsMSAzLDIwVjZBMiwyIDAgMCwxIDUsNEg2VjJIOFY0SDE2VjJNNywxOFYxMUg5VjE4SDdNMTUsMTFIMTdWMThIMTVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJXZWVrZW5kT3V0bGluZSA9IFwiTTE5LDRBMiwyIDAgMCwxIDIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY2QTIsMiAwIDAsMSA1LDRINlYySDhWNEgxNlYySDE4VjRIMTlNMTksMjBWMTBINVYyMEgxOU0xOSw4VjZINVY4SDE5TTcsMTJIOVYxOEg3VjEyTTE1LDEySDE3VjE4SDE1VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxNYWRlID0gXCJNOSw1VjdIMTUuNTlMNCwxOC41OUw1LjQxLDIwTDE3LDguNDFWMTVIMTlWNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxNZXJnZSA9IFwiTTE3LDIwLjQxTDE4LjQxLDE5TDE1LDE1LjU5TDEzLjU5LDE3TTcuNSw4SDExVjEzLjU5TDUuNTksMTlMNywyMC40MUwxMywxNC40MVY4SDE2LjVMMTIsMy41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsbE1pc3NlZCA9IFwiTTE5LjU5LDdMMTIsMTQuNTlMNi40MSw5SDExVjdIM1YxNUg1VjEwLjQxTDEyLDE3LjQxTDIxLDguNDFcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxsUmVjZWl2ZWQgPSBcIk0yMCw1LjQxTDE4LjU5LDRMNywxNS41OVY5SDVWMTlIMTVWMTdIOC40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxTcGxpdCA9IFwiTTE0LDRMMTYuMjksNi4yOUwxMy40MSw5LjE3TDE0LjgzLDEwLjU5TDE3LjcxLDcuNzFMMjAsMTBWNE0xMCw0SDRWMTBMNi4yOSw3LjcxTDExLDEyLjQxVjIwSDEzVjExLjU5TDcuNzEsNi4yOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWNvcmRlciA9IFwiTTcgMkM0LjI0IDIgMiA0LjI0IDIgN1YyMEMyIDIxLjEgMi45IDIyIDQgMjJIMTBDMTEuMSAyMiAxMiAyMS4xIDEyIDIwVjdDMTIgNC4yNCA5Ljc2IDIgNyAyTTUgMjBDNC40NSAyMCA0IDE5LjU1IDQgMTlTNC40NSAxOCA1IDE4IDYgMTguNDUgNiAxOSA1LjU1IDIwIDUgMjBNNyAxMEM1LjM0IDEwIDQgOC42NiA0IDdTNS4zNCA0IDcgNCAxMCA1LjM0IDEwIDcgOC42NiAxMCA3IDEwTTIyIDlWMTRDMjIgMTUuMSAyMS4xIDE2IDIwIDE2SDEzVjE0SDIwVjlIMTNWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtY29yZGVyT2ZmID0gXCJNMjIuMSAyMS41TDkuNCA4LjhMMi40IDEuOEwxLjEgM0wyLjcgNC42QzIuMiA1LjMgMiA2LjEgMiA3VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxMEMxMS4xIDIyIDEyIDIxLjEgMTIgMjBWMTMuOUwxMyAxNC45VjE2SDE0LjFMMjAuOCAyMi43TDIyLjEgMjEuNU01IDIwQzQuNSAyMCA0IDE5LjUgNCAxOVM0LjUgMTggNSAxOCA2IDE4LjUgNiAxOSA1LjUgMjAgNSAyME03IDEwQzUuMyAxMCA0IDguNyA0IDdDNCA2LjcgNC4xIDYuNCA0LjIgNi4xTDggOS45QzcuNiA5LjkgNy4zIDEwIDcgMTBNNy4yIDRMNS41IDIuM0M2IDIuMSA2LjUgMiA3IDJDOS44IDIgMTIgNC4yIDEyIDdWOC44TDEwIDYuOEM5LjkgNS4zIDguNyA0LjEgNy4yIDRNMjAgOUgxM1Y3SDIwQzIxLjEgNyAyMiA3LjkgMjIgOVYxNEMyMiAxNS4xIDIxLjEgMTYgMjAgMTZIMTkuMkwxNy4yIDE0SDIwVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhID0gXCJNNCw0SDdMOSwySDE1TDE3LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhQWNjb3VudCA9IFwiTTQsNUg3TDksM0gxNUwxNyw1SDIwQTIsMiAwIDAsMSAyMiw3VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjdBMiwyIDAgMCwxIDQsNU0xNiwxN1YxNkMxNiwxNC42NyAxMy4zMywxNCAxMiwxNEMxMC42NywxNCA4LDE0LjY3IDgsMTZWMTdIMTZNMTIsOUEyLDIgMCAwLDAgMTAsMTFBMiwyIDAgMCwwIDEyLDEzQTIsMiAwIDAsMCAxNCwxMUEyLDIgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFCdXJzdCA9IFwiTTEsNUgzVjE5SDFWNU01LDVIN1YxOUg1VjVNMjIsNUgxMEExLDEgMCAwLDAgOSw2VjE4QTEsMSAwIDAsMCAxMCwxOUgyMkExLDEgMCAwLDAgMjMsMThWNkExLDEgMCAwLDAgMjIsNU0xMSwxN0wxMy41LDEzLjg1TDE1LjI5LDE2TDE3Ljc5LDEyLjc4TDIxLDE3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUNvbnRyb2wgPSBcIk05LDEyQzksMTEuMTkgOS4zLDEwLjUgOS44OSw5Ljg5QzEwLjUsOS4zIDExLjE5LDkgMTIsOUMxMi44MSw5IDEzLjUsOS4zIDE0LjExLDkuODlDMTQuNywxMC41IDE1LDExLjE5IDE1LDEyQzE1LDEyLjgxIDE0LjcsMTMuNSAxNC4xMSwxNC4xMUMxMy41LDE0LjcgMTIuODEsMTUgMTIsMTVDMTEuMTksMTUgMTAuNSwxNC43IDkuODksMTQuMTFDOS4zLDEzLjUgOSwxMi44MSA5LDEyTTUuNTMsOC40NEw3LjMxLDEwLjIyTDUuNTMsMTJMNy4zMSwxMy43OEw1LjUzLDE1LjU2TDIsMTJMNS41Myw4LjQ0TTguNDQsMTguNDdMMTAuMjIsMTYuNjlMMTIsMTguNDdMMTMuNzgsMTYuNjlMMTUuNTYsMTguNDdMMTIsMjJMOC40NCwxOC40N00xOC40NywxNS41NkwxNi42OSwxMy43OEwxOC40NywxMkwxNi42OSwxMC4yMkwxOC40Nyw4LjQ0TDIyLDEyTDE4LjQ3LDE1LjU2TTE1LjU2LDUuNTNMMTMuNzgsNy4zMUwxMiw1LjUzTDEwLjIyLDcuMzFMOC40NCw1LjUzTDEyLDJMMTUuNTYsNS41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFFbmhhbmNlID0gXCJNOSwzTDcuMTcsNUg0QTIsMiAwIDAsMCAyLDdWMTlBMiwyIDAgMCwwIDQsMjFIMjBBMiwyIDAgMCwwIDIyLDE5VjdBMiwyIDAgMCwwIDIwLDVIMTYuODNMMTUsM00xMiwxOEE1LDUgMCAwLDEgNywxM0E1LDUgMCAwLDEgMTIsOEE1LDUgMCAwLDEgMTcsMTNBNSw1IDAgMCwxIDEyLDE4TTEyLDE3TDEzLjI1LDE0LjI1TDE2LDEzTDEzLjI1LDExLjc1TDEyLDlMMTAuNzUsMTEuNzVMOCwxM0wxMC43NSwxNC4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUVuaGFuY2VPdXRsaW5lID0gXCJNMTIsMTBMMTEuMDYsMTIuMDZMOSwxM0wxMS4wNiwxMy45NEwxMiwxNkwxMi45NCwxMy45NEwxNSwxM0wxMi45NCwxMi4wNkwxMiwxME0yMCw1SDE2LjgzTDE1LDNIOUw3LjE3LDVINEEyLDIgMCAwLDAgMiw3VjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY3QTIsMiAwIDAsMCAyMCw1TTIwLDE5SDRWN0g4LjA1TDguNjQsNi4zNUw5Ljg4LDVIMTQuMTJMMTUuMzYsNi4zNUwxNS45NSw3SDIwVjE5TTEyLDhBNSw1IDAgMCwwIDcsMTNBNSw1IDAgMCwwIDEyLDE4QTUsNSAwIDAsMCAxNywxM0E1LDUgMCAwLDAgMTIsOE0xMiwxNkEzLDMgMCAwLDEgOSwxM0EzLDMgMCAwLDEgMTIsMTBBMywzIDAgMCwxIDE1LDEzQTMsMyAwIDAsMSAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGbGlwID0gXCJNMjAgNUgxN0wxNSAzSDlMNyA1SDRDMi45IDUgMiA1LjkgMiA3VjE5QzIgMjAuMTEgMi45IDIxIDQgMjFIMjBDMjEuMTEgMjEgMjIgMjAuMTEgMjIgMTlWN0MyMiA1LjkgMjEuMTEgNSAyMCA1TTUgMTJINy4xQzcuNjUgOS4yOSAxMC4yOSA3LjU1IDEzIDguMUMxMy43NiA4LjI1IDE0LjQzIDguNTkgMTUgOUwxMy41NiAxMC40NUMxMy4xMSAxMC4xNyAxMi41OCAxMCAxMiAxMEMxMC43NCAxMCA5LjYgMTAuOCA5LjE4IDEySDExTDggMTVMNSAxMk0xNi45MSAxNEMxNi4zNiAxNi43MSAxMy43MiAxOC40NSAxMSAxNy45QzEwLjI1IDE3Ljc0IDkuNTggMTcuNDEgOSAxN0wxMC40NCAxNS41NUMxMC45IDE1LjgzIDExLjQzIDE2IDEyIDE2QzEzLjI3IDE2IDE0LjQxIDE1LjIgMTQuODMgMTRIMTNMMTYgMTFMMTkgMTRIMTYuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhRmxpcE91dGxpbmUgPSBcIk0yMCA1SDE2LjgzTDE1IDNIOUw3LjE3IDVINEMyLjkgNSAyIDUuOSAyIDdWMTlDMiAyMC4xMSAyLjkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY3QzIyIDUuOSAyMS4xMSA1IDIwIDVNMjAgMTlINFY3SDguMDVMOS44OCA1SDE0LjEyTDE2IDdIMjBWMTlNNSAxMkg3LjFDNy42NSA5LjI5IDEwLjI5IDcuNTUgMTMgOC4xQzEzLjc2IDguMjUgMTQuNDMgOC41OSAxNSA5TDEzLjU2IDEwLjQ1QzEzLjExIDEwLjE3IDEyLjU4IDEwIDEyIDEwQzEwLjc0IDEwIDkuNiAxMC44IDkuMTggMTJIMTFMOCAxNUw1IDEyTTE2LjkxIDE0QzE2LjM2IDE2LjcxIDEzLjcyIDE4LjQ1IDExIDE3LjlDMTAuMjUgMTcuNzQgOS41OCAxNy40MSA5IDE3TDEwLjQ0IDE1LjU1QzEwLjkgMTUuODMgMTEuNDMgMTYgMTIgMTZDMTMuMjcgMTYgMTQuNDEgMTUuMiAxNC44MyAxNEgxM0wxNiAxMUwxOSAxNEgxNi45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGcm9udCA9IFwiTTcsMkgxN1YxMi41QzE3LDEwLjgzIDEzLjY3LDEwIDEyLDEwQzEwLjMzLDEwIDcsMTAuODMgNywxMi41TTE3LDBIN0EyLDIgMCAwLDAgNSwyVjE2QTIsMiAwIDAsMCA3LDE4SDE3QTIsMiAwIDAsMCAxOSwxNlYyQTIsMiAwIDAsMCAxNywwTTEyLDhBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRBMiwyIDAgMCwwIDEwLDZBMiwyIDAgMCwwIDEyLDhNMTQsMjBWMjJIMTlWMjBNMTAsMjBINVYyMkgxMFYyNEwxMywyMUwxMCwxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGcm9udFZhcmlhbnQgPSBcIk02LDBIMThBMiwyIDAgMCwxIDIwLDJWMjJBMiwyIDAgMCwxIDE4LDI0SDZBMiwyIDAgMCwxIDQsMjJWMkEyLDIgMCAwLDEgNiwwTTEyLDZBMywzIDAgMCwxIDE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZNMTEsMVYzSDEzVjFIMTFNNiw0VjE2LjVDNiwxNS4xMiA4LjY5LDE0IDEyLDE0QzE1LjMxLDE0IDE4LDE1LjEyIDE4LDE2LjVWNEg2TTEzLDE4SDlWMjBIMTNWMjJMMTYsMTlMMTMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhR29wcm8gPSBcIk0yMCw1SDE1QTIsMiAwIDAsMCAxMyw3VjEyQTIsMiAwIDAsMCAxNSwxNEgyMEEyLDIgMCAwLDAgMjIsMTJWN0EyLDIgMCAwLDAgMjAsNU0xNy41LDEyLjVBMywzIDAgMCwxIDE0LjUsOS41QTMsMyAwIDAsMSAxNy41LDYuNUEzLDMgMCAwLDEgMjAuNSw5LjVBMywzIDAgMCwxIDE3LjUsMTIuNU0xNy41LDExQTEuNSwxLjUgMCAwLDEgMTYsOS41QTEuNSwxLjUgMCAwLDEgMTcuNSw4QTEuNSwxLjUgMCAwLDEgMTksOS41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMU0xMiwxNVY1SDRBMiwyIDAgMCwwIDIsN1YxN0EyLDIgMCAwLDAgNCwxOUgyMEEyLDIgMCAwLDAgMjIsMTdWMTVIMTJNMTAsMTJINFY3SDEwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUltYWdlID0gXCJNNCw1SDdMOSwzSDE1TDE3LDVIMjBBMiwyIDAgMCwxIDIyLDdWMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlWN0EyLDIgMCAwLDEgNCw1TTEzLjA5LDkuNDVMMTEuMDUsMTIuMThMMTIuNiwxNC4yNUwxMS43MywxNC45MUw5LjI3LDExLjY0TDYsMTZIMThMMTMuMDksOS40NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFJcmlzID0gXCJNMTMuNzMsMTVMOS44MywyMS43NkMxMC41MywyMS45MSAxMS4yNSwyMiAxMiwyMkMxNC40LDIyIDE2LjYsMjEuMTUgMTguMzIsMTkuNzVMMTQuNjYsMTMuNE0yLjQ2LDE1QzMuMzgsMTcuOTIgNS42MSwyMC4yNiA4LjQ1LDIxLjM0TDEyLjEyLDE1TTguNTQsMTJMNC42NCw1LjI1QzMsNyAyLDkuMzkgMiwxMkMyLDEyLjY4IDIuMDcsMTMuMzUgMi4yLDE0SDkuNjlNMjEuOCwxMEgxNC4zMUwxNC42LDEwLjVMMTkuMzYsMTguNzVDMjEsMTYuOTcgMjIsMTQuNiAyMiwxMkMyMiwxMS4zMSAyMS45MywxMC42NCAyMS44LDEwTTIxLjU0LDlDMjAuNjIsNi4wNyAxOC4zOSwzLjc0IDE1LjU1LDIuNjZMMTEuODgsOU05LjQsMTAuNUwxNC4xNywyLjI0QzEzLjQ3LDIuMDkgMTIuNzUsMiAxMiwyQzkuNiwyIDcuNCwyLjg0IDUuNjgsNC4yNUw5LjM0LDEwLjZMOS40LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhTWV0ZXJpbmdDZW50ZXIgPSBcIk00LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTQsNlYxOEgyMFY2SDRNMTIsMTAuNUExLjUsMS41IDAgMCwxIDEzLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMy41QTEuNSwxLjUgMCAwLDEgMTAuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEwLjVNMTIsNy41QzE0LjE0LDcuNSAxNS45Myw5IDE2LjM5LDExSDE0LjgzQzE0LjQyLDkuODMgMTMuMzEsOSAxMiw5QzEwLjY5LDkgOS41OCw5LjgzIDkuMTcsMTFINy42MUM4LjA3LDkgOS44Niw3LjUgMTIsNy41TTEyLDE2LjVDOS44NiwxNi41IDguMDcsMTUgNy42MSwxM0g5LjE3QzkuNTgsMTQuMTcgMTAuNjksMTUgMTIsMTVDMTMuMzEsMTUgMTQuNDIsMTQuMTcgMTQuODMsMTNIMTYuMzlDMTUuOTMsMTUgMTQuMTQsMTYuNSAxMiwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU1ldGVyaW5nTWF0cml4ID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMjBWNkg0TTUuNSw3LjVIMTFWOS4xN0MxMC4xNSw5LjQ3IDkuNDcsMTAuMTUgOS4xNywxMUg1LjVWNy41TTE4LjUsNy41VjExSDE0LjgzQzE0LjUzLDEwLjE1IDEzLjg1LDkuNDcgMTMsOS4xN1Y3LjVIMTguNU0xOC41LDE2LjVIMTNWMTQuODNDMTMuODUsMTQuNTMgMTQuNTMsMTMuODUgMTQuODMsMTNIMTguNVYxNi41TTUuNSwxNi41VjEzSDkuMTdDOS40NywxMy44NSAxMC4xNSwxNC41MyAxMSwxNC44M1YxNi41SDUuNU0xMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFNZXRlcmluZ1BhcnRpYWwgPSBcIk00LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTQsNlYxOEgyMFY2SDRNMTIsNy41QzE0LjE0LDcuNSAxNS45Myw5IDE2LjM5LDExSDE0LjgzQzE0LjQyLDkuODMgMTMuMzEsOSAxMiw5QzEwLjY5LDkgOS41OCw5LjgzIDkuMTcsMTFINy42MUM4LjA3LDkgOS44Niw3LjUgMTIsNy41TTEyLDE2LjVDOS44NiwxNi41IDguMDcsMTUgNy42MSwxM0g5LjE3QzkuNTgsMTQuMTcgMTAuNjksMTUgMTIsMTVDMTMuMzEsMTUgMTQuNDIsMTQuMTcgMTQuODMsMTNIMTYuMzlDMTUuOTMsMTUgMTQuMTQsMTYuNSAxMiwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU1ldGVyaW5nU3BvdCA9IFwiTTQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRNNCw2VjE4SDIwVjZINE0xMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFPZmYgPSBcIk0xLjIsNC40N0wyLjUsMy4yTDIwLDIwLjcyTDE4LjczLDIyTDE2LjczLDIwSDRBMiwyIDAgMCwxIDIsMThWNkMyLDUuNzggMi4wNCw1LjU3IDIuMSw1LjM3TDEuMiw0LjQ3TTcsNEw5LDJIMTVMMTcsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEMyMiwxOC42IDIxLjc0LDE5LjEzIDIxLjMyLDE5LjVMMTYuMzMsMTQuNUMxNi43NiwxMy43NyAxNywxMi45MSAxNywxMkE1LDUgMCAwLDAgMTIsN0MxMS4wOSw3IDEwLjIzLDcuMjQgOS41LDcuNjdMNS44Miw0SDdNNywxMkE1LDUgMCAwLDAgMTIsMTdDMTIuNSwxNyAxMy4wMywxNi45MiAxMy41LDE2Ljc3TDExLjcyLDE1QzEwLjI5LDE0Ljg1IDkuMTUsMTMuNzEgOSwxMi4yOEw3LjIzLDEwLjVDNy4wOCwxMC45NyA3LDExLjUgNywxMk0xMiw5QTMsMyAwIDAsMSAxNSwxMkMxNSwxMi4zNSAxNC45NCwxMi42OSAxNC44MywxM0wxMSw5LjE3QzExLjMxLDkuMDYgMTEuNjUsOSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU91dGxpbmUgPSBcIk0yMCw0SDE2LjgzTDE1LDJIOUw3LjE3LDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0TTIwLDE4SDRWNkg4LjA1TDkuODgsNEgxNC4xMkwxNS45NSw2SDIwVjE4TTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN00xMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOUEzLDMgMCAwLDEgMTUsMTJBMywzIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVBhcnR5TW9kZSA9IFwiTTEyLDE3QzEwLjM3LDE3IDguOTQsMTYuMjEgOCwxNUgxMkEzLDMgMCAwLDAgMTUsMTJDMTUsMTEuNjUgMTQuOTMsMTEuMzEgMTQuODIsMTFIMTYuOUMxNi45NiwxMS4zMiAxNywxMS42NiAxNywxMkE1LDUgMCAwLDEgMTIsMTdNMTIsN0MxMy42Myw3IDE1LjA2LDcuNzkgMTYsOUgxMkEzLDMgMCAwLDAgOSwxMkM5LDEyLjM1IDkuMDcsMTIuNjggOS4xOCwxM0g3LjFDNy4wMywxMi42OCA3LDEyLjM0IDcsMTJBNSw1IDAgMCwxIDEyLDdNMjAsNEgxNi44M0wxNSwySDlMNy4xNyw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVBsdXMgPSBcIk0zIDRWMUg1VjRIOFY2SDVWOUgzVjZIMFY0TTYgMTBWN0g5VjRIMTZMMTcuOCA2SDIxQzIyLjEgNiAyMyA2LjkgMjMgOFYyMEMyMyAyMS4xIDIyLjEgMjIgMjEgMjJINUMzLjkgMjIgMyAyMS4xIDMgMjBWMTBNMTMgMTlDMTcuNDUgMTkgMTkuNjkgMTMuNjIgMTYuNTQgMTAuNDZDMTMuMzkgNy4zMSA4IDkuNTUgOCAxNEM4IDE2Ljc2IDEwLjI0IDE5IDEzIDE5TTkuOCAxNEM5LjggMTYuODUgMTMuMjUgMTguMjggMTUuMjYgMTYuMjZDMTcuMjggMTQuMjUgMTUuODUgMTAuOCAxMyAxMC44QzExLjI0IDEwLjggOS44IDEyLjI0IDkuOCAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFQbHVzT3V0bGluZSA9IFwiTTIxIDZIMTcuOEwxNiA0SDEwVjZIMTUuMUwxNyA4SDIxVjIwSDVWMTFIM1YyMEMzIDIxLjEgMy45IDIyIDUgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjhDMjMgNi45IDIyLjEgNiAyMSA2TTggMTRDOCAxOC40NSAxMy4zOSAyMC42OSAxNi41NCAxNy41NEMxOS42OSAxNC4zOSAxNy40NSA5IDEzIDlDMTAuMjQgOSA4IDExLjI0IDggMTRNMTMgMTFDMTQuNjQgMTEuMDUgMTUuOTUgMTIuMzYgMTYgMTRDMTUuOTUgMTUuNjQgMTQuNjQgMTYuOTUgMTMgMTdDMTEuMzYgMTYuOTUgMTAuMDUgMTUuNjQgMTAgMTRDMTAuMDUgMTIuMzYgMTEuMzYgMTEuMDUgMTMgMTFNNSA2SDhWNEg1VjFIM1Y0SDBWNkgzVjlINVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJlYXIgPSBcIk0xMiw2QzEwLjg5LDYgMTAsNS4xIDEwLDRBMiwyIDAgMCwxIDEyLDJDMTMuMDksMiAxNCwyLjkgMTQsNEEyLDIgMCAwLDEgMTIsNk0xNywwSDdBMiwyIDAgMCwwIDUsMlYxNkEyLDIgMCAwLDAgNywxOEgxN0EyLDIgMCAwLDAgMTksMTZWMkEyLDIgMCAwLDAgMTcsME0xNCwyMFYyMkgxOVYyME0xMCwyMEg1VjIySDEwVjI0TDEzLDIxTDEwLDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJlYXJWYXJpYW50ID0gXCJNNiwwSDE4QTIsMiAwIDAsMSAyMCwyVjIyQTIsMiAwIDAsMSAxOCwyNEg2QTIsMiAwIDAsMSA0LDIyVjJBMiwyIDAgMCwxIDYsME0xMiwyQTIsMiAwIDAsMCAxMCw0QTIsMiAwIDAsMCAxMiw2QTIsMiAwIDAsMCAxNCw0QTIsMiAwIDAsMCAxMiwyTTEzLDE4SDlWMjBIMTNWMjJMMTYsMTlMMTMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhUmV0YWtlID0gXCJNMjAsNUgxN0wxNSwzSDlMNyw1SDRBMiwyIDAgMCwwIDIsN1YxOUEyLDIgMCAwLDAgNCwyMUgyMEEyLDIgMCAwLDAgMjIsMTlWN0EyLDIgMCAwLDAgMjAsNU0xMiwxOEMxMC45MiwxOCA5Ljg2LDE3LjY1IDksMTdMMTAuNDQsMTUuNTZDMTAuOTEsMTUuODUgMTEuNDUsMTYgMTIsMTZBMywzIDAgMCwwIDE1LDEzQTMsMyAwIDAsMCAxMiwxMEMxMC43NCwxMCA5LjYsMTAuOCA5LjE4LDEySDExTDgsMTVMNSwxMkg3LjFDNy42NSw5LjI5IDEwLjI5LDcuNTUgMTMsOC4xQzE1LjcsOC42NSAxNy40NSwxMS4yOSAxNi45LDE0QzE2LjQyLDE2LjMzIDE0LjM4LDE4IDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJldGFrZU91dGxpbmUgPSBcIk0yMCw1SDE2LjgzTDE1LDNIOUw3LjE3LDVINEEyLDIgMCAwLDAgMiw3VjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY3QTIsMiAwIDAsMCAyMCw1TTIwLDE5SDRWN0g4LjA1TDkuODgsNUgxNC4xMkwxNiw3SDIwVjE5TTEyLDE4QzEwLjkyLDE4IDkuODYsMTcuNjUgOSwxN0wxMC40NCwxNS41NkMxMC45MSwxNS44NSAxMS40NSwxNiAxMiwxNkEzLDMgMCAwLDAgMTUsMTNBMywzIDAgMCwwIDEyLDEwQzEwLjc0LDEwIDkuNiwxMC44IDkuMTgsMTJIMTFMOCwxNUw1LDEySDcuMUM3LjY1LDkuMjkgMTAuMjksNy41NSAxMyw4LjFDMTUuNyw4LjY1IDE3LjQ1LDExLjI5IDE2LjksMTRDMTYuNDIsMTYuMzMgMTQuMzgsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhU3dpdGNoID0gXCJNMTUsMTUuNVYxM0g5VjE1LjVMNS41LDEyTDksOC41VjExSDE1VjguNUwxOC41LDEyTTIwLDRIMTYuODNMMTUsMkg5TDcuMTcsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFTd2l0Y2hPdXRsaW5lID0gXCJNMjAgNEgxNi44TDE1IDJIOUw3LjIgNEg0QzIuOSA0IDIgNC45IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZDMjIgNC45IDIxLjEgNCAyMCA0TTkuOSA0SDE0LjFMMTUuOSA2SDIwVjE4SDRWNkg4LjFNMTUgMTFIOVY4LjVMNS41IDEyTDkgMTUuNVYxM0gxNVYxNS41TDE4LjUgMTJMMTUgOC41VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVRpbWVyID0gXCJNNC45NCw2LjM1QzQuNTUsNS45NiA0LjU1LDUuMzIgNC45NCw0LjkzQzUuMzMsNC41NCA1Ljk2LDQuNTQgNi4zNSw0LjkzTDEzLjA3LDEwLjMxTDEzLjQyLDEwLjU5QzE0LjIsMTEuMzcgMTQuMiwxMi42NCAxMy40MiwxMy40MkMxMi42NCwxNC4yIDExLjM3LDE0LjIgMTAuNTksMTMuNDJMMTAuMzEsMTMuMDdMNC45NCw2LjM1TTEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5Ljc5IDE5LjEsNy43OSAxNy42Niw2LjM0TDE5LjA3LDQuOTNDMjAuODgsNi43NCAyMiw5LjI0IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJINEE4LDggMCAwLDAgMTIsMjBNMTIsMUEyLDIgMCAwLDEgMTQsM0EyLDIgMCAwLDEgMTIsNUEyLDIgMCAwLDEgMTAsM0EyLDIgMCAwLDEgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFXaXJlbGVzcyA9IFwiTTEyLDEwLjhBMy4yLDMuMiAwIDAsMSAxNS4yLDE0QTMuMiwzLjIgMCAwLDEgMTIsMTcuMkEzLjIsMy4yIDAgMCwxIDguOCwxNEEzLjIsMy4yIDAgMCwxIDEyLDEwLjhNMTYsMy4zM1YyQTYsNiAwIDAsMSAyMiw4SDIwLjY3QzIwLjY3LDUuNDIgMTguNTgsMy4zMyAxNiwzLjMzTTE2LDZWNC42N0MxNy44NCw0LjY3IDE5LjMzLDYuMTYgMTkuMzMsOEgxOEMxOCw2Ljg5IDE3LjExLDYgMTYsNk0xNyw5SDIyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjhBMiwyIDAgMCwxIDQsNkg3LjE3TDksNEgxNVY3QzE2LjExLDcgMTcsNy44OSAxNyw5TTEyLDE5QTUsNSAwIDAsMCAxNywxNEE1LDUgMCAwLDAgMTIsOUE1LDUgMCAwLDAgNywxNEE1LDUgMCAwLDAgMTIsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhV2lyZWxlc3NPdXRsaW5lID0gXCJNMjAsOVYyMEg0VjhIOC4wNUw5Ljg4LDZIMTVWNEg5TDcuMTcsNkg0QTIsMiAwIDAsMCAyLDhWMjBBMiwyIDAgMCwwIDQsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjlIMjBNMjAuNjcsOEgyMkMyMiw0LjY4IDE5LjMxLDIgMTYsMlYzLjMzQzE4LjU4LDMuMzMgMjAuNjYsNS40MSAyMC42Nyw4TTE4LDhIMTkuMzNDMTkuMzIsNi4xNSAxNy44NCw0LjY3IDE2LDQuNjdWNkMxNy4xMSw2IDE4LDYuODkgMTgsOE03LDE0QTUsNSAwIDAsMCAxMiwxOUE1LDUgMCAwLDAgMTcsMTRBNSw1IDAgMCwwIDEyLDlBNSw1IDAgMCwwIDcsMTRNMTUsMTRBMywzIDAgMCwxIDEyLDE3QTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSAxMiwxMUEzLDMgMCAwLDEgMTUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtcGZpcmUgPSBcIk0xNS45LDE4LjVMMjEuOSwyMC4xTDIxLjUsMjJMMTIuMSwxOS41TDIuNywyMkwyLjIsMjAuMUw4LjIsMTguNUwyLjEsMTYuOUwyLjYsMTVMMTIsMTcuNUwyMS40LDE1TDIxLjksMTYuOUwxNS45LDE4LjVNMTYuMDcsNy45MkMxNS45MSw3LjcgMTUuNzEsNy41IDE1LjUsNy4zM0MxNS4wNSw2LjkgMTQuNSw2LjU5IDE0LjA2LDYuMTNDMTMsNS4wOCAxMi43OSwzLjM0IDEzLjQ0LDJDMTIuNzksMi4xNyAxMi4xOCwyLjU0IDExLjY3LDIuOTVDOS44NCw0LjQ2IDkuMTEsNy4xIDEwLDkuMzhDMTAsOS40NSAxMC4wNCw5LjUzIDEwLjA0LDkuNjJDMTAuMDQsOS43OCA5LjkzLDkuOTIgOS43OSwxMEM5LjYzLDEwLjA1IDkuNDYsMTAgOS4zMyw5LjlDOS4yOCw5Ljg2IDkuMjUsOS44MiA5LjIyLDkuNzdDOC40Miw4Ljc0IDguMjksNy4yNiA4Ljg0LDYuMDdDNy42NSw3LjA2IDcsOC43MiA3LjExLDEwLjI5QzcuMTMsMTAuNjUgNy4xOCwxMSA3LjMsMTEuMzZDNy40MSwxMS44IDcuNTksMTIuMjMgNy44MiwxMi42MUM4LjU3LDEzLjg2IDkuOSwxNC43NiAxMS4zMiwxNC45NEMxMi44NCwxNS4xNCAxNC40NiwxNC44NSAxNS42MywxMy43OUMxNi45MywxMi41OSAxNy40LDEwLjY3IDE2LjcxLDlMMTYuNjEsOC44M0MxNi40Nyw4LjUgMTYuMjgsOC4yIDE2LjA0LDcuOTNMMTYuMDcsNy45Mk0xMy44MywxMi40N0MxMy42MywxMi42NSAxMy4zMSwxMi44MyAxMy4wNSwxMi45MUMxMi4yNiwxMy4xOSAxMS40NiwxMi43OSAxMSwxMi4zMUMxMS44NCwxMi4xMSAxMi4zNCwxMS40NyAxMi41LDEwLjgzQzEyLjYxLDEwLjI1IDEyLjM5LDkuNzggMTIuMjksOS4yMkMxMi4yMSw4LjY5IDEyLjIyLDguMjMgMTIuNDIsNy43M0MxMi41NSw4IDEyLjY5LDguMjggMTIuODYsOC41QzEzLjQxLDkuMjIgMTQuMjcsOS41NCAxNC40NSwxMC41QzE0LjQ3LDEwLjYzIDE0LjUsMTAuNzIgMTQuNSwxMC44M0MxNC41LDExLjQzIDE0LjI2LDEyLjA3IDEzLjgyLDEyLjQ3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FuY2VsID0gXCJNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjIgMiAxNy41IDIgMTIgNi41IDIgMTIgMk0xMiA0QzEwLjEgNCA4LjQgNC42IDcuMSA1LjdMMTguMyAxNi45QzE5LjMgMTUuNSAyMCAxMy44IDIwIDEyQzIwIDcuNiAxNi40IDQgMTIgNE0xNi45IDE4LjNMNS43IDcuMUM0LjYgOC40IDQgMTAuMSA0IDEyQzQgMTYuNCA3LjYgMjAgMTIgMjBDMTMuOSAyMCAxNS42IDE5LjQgMTYuOSAxOC4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbmRsZSA9IFwiTTEyLjUsMkMxMC44NCwyIDkuNSw1LjM0IDkuNSw3QTMsMyAwIDAsMCAxMi41LDEwQTMsMyAwIDAsMCAxNS41LDdDMTUuNSw1LjM0IDE0LjE2LDIgMTIuNSwyTTEyLjUsNi41QTEsMSAwIDAsMSAxMy41LDcuNUExLDEgMCAwLDEgMTIuNSw4LjVBMSwxIDAgMCwxIDExLjUsNy41QTEsMSAwIDAsMSAxMi41LDYuNU0xMCwxMUExLDEgMCAwLDAgOSwxMlYyMEg3QTEsMSAwIDAsMSA2LDE5VjE4QTEsMSAwIDAsMCA1LDE3QTEsMSAwIDAsMCA0LDE4VjE5QTMsMyAwIDAsMCA3LDIySDE5QTEsMSAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMTksMjBIMTZWMTJBMSwxIDAgMCwwIDE1LDExSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbmR5Y2FuZSA9IFwiTTEwLDEwQTIsMiAwIDAsMSA4LDEyQTIsMiAwIDAsMSA2LDEwVjhDNiw3LjM3IDYuMSw2Ljc3IDYuMjcsNi4yTDEwLDkuOTNWMTBNMTIsMkMxMi43NCwyIDEzLjQ0LDIuMTMgMTQuMDksMi4zOEwxMS45Nyw2QzExLjE0LDYgMTAuNDQsNi41IDEwLjE1LDcuMjVMNy4yNCw0LjM0QzguMzQsMi45MiAxMC4wNiwyIDEyLDJNMTcuNzYsNi4zMUwxNCwxMC4wN1Y4QzE0LDcuNjIgMTMuOSw3LjI3IDEzLjcyLDYuOTdMMTUuODMsMy4zOEMxNi43NCw0LjEzIDE3LjQyLDUuMTUgMTcuNzYsNi4zMU0xOCwxMy4wOUwxNCwxNy4wOVYxMi45TDE4LDguOVYxMy4wOU0xOCwyMEEyLDIgMCAwLDEgMTYsMjJBMiwyIDAgMCwxIDE0LDIwVjE5LjkxTDE4LDE1LjkxVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbm5hYmlzID0gXCJNMTEuNSwyMlYxNy4zNUMxMSwxOC4xMyAxMCwxOS4wOSA4LjAzLDE5LjgxQzguMDMsMTkuODEgOC41MywxOC4xIDkuOTQsMTYuOTVDOC42NCwxNy4yMyA2LjY4LDE3LjE5IDQsMTZDNCwxNiA2LjQ3LDE0LjU5IDkuMjgsMTQuOTdDNy42OSwxNCA1LjcsMTIuMDggNC4xNyw4LjExQzQuMTcsOC4xMSA4LjY3LDkuMzQgMTAuOTEsMTMuMTRDOC44OCw4LjI0IDEyLDIgMTIsMkMxNC40Myw3LjQ3IDEzLjkxLDExLjEgMTMuMTIsMTMuMUMxNS4zNyw5LjMzIDE5LjgzLDguMTEgMTkuODMsOC4xMUMxOC4zLDEyLjA4IDE2LjMxLDE0IDE0LjcyLDE0Ljk3QzE3LjUzLDE0LjU5IDIwLDE2IDIwLDE2QzE3LjMyLDE3LjE5IDE1LjM2LDE3LjIzIDE0LjA2LDE2Ljk1QzE1LjQ3LDE4LjEgMTUuOTcsMTkuODEgMTUuOTcsMTkuODFDMTQsMTkuMDkgMTMsMTguMTMgMTIuNSwxNy4zNVYyMkgxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbm5hYmlzT2ZmID0gXCJNMTYuNjIgMTMuNDJMMTQuNSAxMS4zMkMxNi44NCA4Ljk0IDE5LjgzIDguMTEgMTkuODMgOC4xMUMxOC44NyAxMC42IDE3LjczIDEyLjI3IDE2LjYyIDEzLjQyTTEyIDJDMTIgMiAxMC44NiA0LjMgMTAuNDEgNy4yMUwxMy43MiAxMC41QzEzLjkyIDguNDUgMTMuNjEgNS42MyAxMiAyTTIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMOC42MiAxMC41QzYuNSA4Ljc1IDQuMTcgOC4xMSA0LjE3IDguMTFDNS43IDEyLjA4IDcuNjkgMTQgOS4yOCAxNC45N0M2LjQ3IDE0LjU5IDQgMTYgNCAxNkM2LjY4IDE3LjE5IDguNjQgMTcuMjMgOS45NCAxNi45NUM4LjUzIDE4LjEgOC4wMyAxOS44MSA4LjAzIDE5LjgxQzEwIDE5LjA5IDExIDE4LjEzIDExLjUgMTcuMzVWMjJIMTIuNVYxNy4zNUMxMyAxOC4xMyAxNCAxOS4wOSAxNS45NyAxOS44MUMxNS45NyAxOS44MSAxNS40NyAxOC4xIDE0LjA2IDE2Ljk1QzE0LjM5IDE3IDE0Ljc3IDE3LjA3IDE1LjIgMTcuMDlMMjAuODQgMjIuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2Fwc0xvY2sgPSBcIk05Ljk2LDEzLjcxTDEyLDguMjlMMTQuMDMsMTMuNzJNMTEuMTQsNkw2LjQzLDE4SDguMzZMOS4zMiwxNS40M0gxNC42OEwxNS42NCwxOEgxNy41N0wxMi44Niw2SDExLjE0TTIwLDJINEMyLjg5LDIgMiwyLjg5IDIsNFYyMEMyLDIxLjExIDIuOSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xLDIgMjAsMk0yMCwyMEg0VjRIMjBWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyID0gXCJNNSwxMUw2LjUsNi41SDE3LjVMMTksMTFNMTcuNSwxNkExLjUsMS41IDAgMCwxIDE2LDE0LjVBMS41LDEuNSAwIDAsMSAxNy41LDEzQTEuNSwxLjUgMCAwLDEgMTksMTQuNUExLjUsMS41IDAgMCwxIDE3LjUsMTZNNi41LDE2QTEuNSwxLjUgMCAwLDEgNSwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgOCwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDE2TTE4LjkyLDZDMTguNzIsNS40MiAxOC4xNiw1IDE3LjUsNUg2LjVDNS44NCw1IDUuMjgsNS40MiA1LjA4LDZMMywxMlYyMEExLDEgMCAwLDAgNCwyMUg1QTEsMSAwIDAsMCA2LDIwVjE5SDE4VjIwQTEsMSAwIDAsMCAxOSwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTJMMTguOTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXIyUGx1cyA9IFwiTTggMTZDOCAxMy42IDkuMSAxMS41IDEwLjcgMTBIM0w0LjUgNS41SDE1LjVMMTYuMyA4QzE2LjkgOCAxNy41IDguMSAxOCA4LjNMMTYuOSA1QzE2LjcgNC40IDE2LjEgNCAxNS41IDRINC41QzMuOCA0IDMuMyA0LjQgMy4xIDVMMSAxMVYxOUMxIDE5LjUgMS41IDIwIDIgMjBIM0MzLjUgMjAgNCAxOS41IDQgMTlWMThIOC4zQzguMSAxNy40IDggMTYuNyA4IDE2TTQuNSAxNUMzLjcgMTUgMyAxNC4zIDMgMTMuNVMzLjcgMTIgNC41IDEyIDYgMTIuNyA2IDEzLjUgNS4zIDE1IDQuNSAxNU0xNiAyMFYxOEgxM1YxN0gxNEMxNS4xIDE3IDE2IDE2LjEgMTYgMTVWMTRDMTYgMTIuOSAxNS4xIDEyIDE0IDEySDExVjE0SDE0VjE1SDEzQzExLjkgMTUgMTEgMTUuOSAxMSAxN1YyME0yMyAxN0gyMVYxOUgxOVYxN0gxN1YxNUgxOVYxM0gyMVYxNUgyM1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXIzUGx1cyA9IFwiTTE2LjkgNUMxNi43IDQuNCAxNi4xIDQgMTUuNSA0SDQuNUMzLjggNCAzLjMgNC40IDMuMSA1TDEgMTFWMTlDMSAxOS41IDEuNSAyMCAyIDIwSDNDMy41IDIwIDQgMTkuNSA0IDE5VjE4SDguM0M4LjEgMTcuNCA4IDE2LjcgOCAxNkM4IDEzLjYgOS4xIDExLjUgMTAuNyAxMEgzTDQuNSA1LjVIMTUuNUwxNi4zIDhDMTYuOSA4IDE3LjUgOC4xIDE4IDguM0wxNi45IDVNNC41IDEyQzUuMyAxMiA2IDEyLjcgNiAxMy41UzUuMyAxNSA0LjUgMTUgMyAxNC4zIDMgMTMuNSAzLjcgMTIgNC41IDEyTTIzIDE3SDIxVjE5SDE5VjE3SDE3VjE1SDE5VjEzSDIxVjE1SDIzVjE3TTE0LjUgMTZDMTUuMyAxNiAxNiAxNC44IDE2IDE0QzE2IDEyLjkgMTUuMSAxMiAxNCAxMkgxMVYxNEgxNFYxNUgxMlYxN0gxNFYxOEgxMVYyMEgxNEMxNS4xIDIwIDE2IDE5LjEgMTYgMThDMTYgMTcuMiAxNS4zIDE2IDE0LjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQXJyb3dMZWZ0ID0gXCJNMTIgMThDMTIgMTQuNjkgMTQuNjkgMTIgMTggMTJDMTkuMDkgMTIgMjAuMTIgMTIuMyAyMSAxMi44MVYxMkwxOC45MiA2QzE4LjcyIDUuNDIgMTguMTYgNSAxNy41IDVINi41QzUuODQgNSA1LjI4IDUuNDIgNS4wOCA2TDMgMTJWMjBDMyAyMC41NSAzLjQ1IDIxIDQgMjFINUM1LjU1IDIxIDYgMjAuNTUgNiAyMFYxOUgxMi4wOUMxMi4wNCAxOC42NyAxMiAxOC4zNCAxMiAxOE02LjUgNi41SDE3LjVMMTkgMTFINUw2LjUgNi41TTYuNSAxNkM1LjY3IDE2IDUgMTUuMzMgNSAxNC41UzUuNjcgMTMgNi41IDEzIDggMTMuNjcgOCAxNC41IDcuMzMgMTYgNi41IDE2TTE4IDE1VjE3SDIyVjE5SDE4VjIxTDE1IDE4TDE4IDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQXJyb3dSaWdodCA9IFwiTTEyIDE4QzEyIDE0LjY5IDE0LjY5IDEyIDE4IDEyQzE5LjA5IDEyIDIwLjEyIDEyLjMgMjEgMTIuODFWMTJMMTguOTIgNkMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDYuNUM1Ljg0IDUgNS4yOCA1LjQyIDUuMDggNkwzIDEyVjIwQzMgMjAuNTUgMy40NSAyMSA0IDIxSDVDNS41NSAyMSA2IDIwLjU1IDYgMjBWMTlIMTIuMDlDMTIuMDQgMTguNjcgMTIgMTguMzQgMTIgMThNNi41IDYuNUgxNy41TDE5IDExSDVMNi41IDYuNU02LjUgMTZDNS42NyAxNiA1IDE1LjMzIDUgMTQuNVM1LjY3IDEzIDYuNSAxMyA4IDEzLjY3IDggMTQuNSA3LjMzIDE2IDYuNSAxNk0xOSAyMVYxOUgxNVYxN0gxOVYxNUwyMiAxOEwxOSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJhY2sgPSBcIk02LDExTDcsN0gxN0wxOCwxMU0xOC45Miw2QzE4LjcxLDUuNCAxOC4xNCw1IDE3LjUsNUg2LjVDNS44Niw1IDUuMjksNS40IDUuMDgsNkwzLDEyVjIwQTEsMSAwIDAsMCA0LDIxSDVBMSwxIDAgMCwwIDYsMjBWMThIMThWMjBBMSwxIDAgMCwwIDE5LDIxSDIwQTEsMSAwIDAsMCAyMSwyMFYxMkwxOC45Miw2TTcsMTZINVYxNEg3VjE2TTE5LDE2SDE3VjE0SDE5VjE2TTE0LDE2SDEwVjE0SDE0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJhdHRlcnkgPSBcIk00LDNWNkgxVjIwSDIzVjZIMjBWM0gxNFY2SDEwVjNINE0zLDhIMjFWMThIM1Y4TTE1LDEwVjEySDEzVjE0SDE1VjE2SDE3VjE0SDE5VjEySDE3VjEwSDE1TTUsMTJWMTRIMTFWMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZUFicyA9IFwiTTI0LDEyQzI0LDE1LjMxIDIyLjY2LDE4LjMxIDIwLjUsMjAuNUwxOS40MiwxOS40MkMyMS4zMiwxNy41IDIyLjUsMTQuOSAyMi41LDEyQzIyLjUsOS4xMSAyMS4zMiw2LjUgMTkuNDIsNC41OEwyMC41LDMuNUMyMi42Niw1LjY5IDI0LDguNjkgMjQsMTJNMjAsOS42VjhIMTYuOEMxNS45Miw4IDE1LjIsOC43MiAxNS4yLDkuNlYxMS4yQTEuNiwxLjYgMCAwLDAgMTYuOCwxMi44SDE4LjRWMTQuNEgxNS4yVjE2SDE4LjRDMTkuMjgsMTYgMjAsMTUuMjggMjAsMTQuNFYxMi44QTEuNiwxLjYgMCAwLDAgMTguNCwxMS4ySDE2LjhWOS42SDIwTTguNDIsNkM5LjQ3LDUuMzcgMTAuNjksNSAxMiw1QzEzLjMxLDUgMTQuNTMsNS4zNyAxNS41OCw2SDE4LjY5QzE3LjA1LDQuMTYgMTQuNjYsMyAxMiwzQzkuMzQsMyA2Ljk1LDQuMTYgNS4zMSw2SDguNDJNMTMuMiwxMkMxMy44NCwxMiAxNC40LDEyLjU2IDE0LjQsMTMuMlYxNC40QTEuNiwxLjYgMCAwLDEgMTIuOCwxNkg5LjZWOEgxMi44QTEuNiwxLjYgMCAwLDEgMTQuNCw5LjZWMTAuOEMxNC40LDExLjQ0IDEzLjg0LDEyIDEzLjIsMTJNMTIuOCwxMi44SDExLjJWMTQuNEgxMi44VjEyLjhNMTIuOCw5LjZIMTEuMlYxMS4ySDEyLjhWOS42TTQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OE03LjIsMTZWMTIuOEg1LjZWMTZINFY5LjZBMS42LDEuNiAwIDAsMSA1LjYsOEg3LjJDOC4wOCw4IDguOCw4LjcyIDguOCw5LjZWMTZINy4yTTcuMiwxMS4yVjkuNkg1LjZWMTEuMkg3LjJNMTUuNTgsMThDMTQuNTMsMTguNjMgMTMuMzEsMTkgMTIsMTlDMTAuNjksMTkgOS40NywxOC42MyA4LjQyLDE4SDUuMzFDNi45NSwxOS44NCA5LjM0LDIxIDEyLDIxQzE0LjY2LDIxIDE3LjA1LDE5Ljg0IDE4LjY5LDE4SDE1LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJyYWtlQWxlcnQgPSBcIk0xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQTksOSAwIDAsMCAxMiwzTTEyLDE5QzguMTQsMTkgNSwxNS44NiA1LDEyQzUsOC4xNCA4LjE0LDUgMTIsNUMxNS44Niw1IDE5LDguMTQgMTksMTJDMTksMTUuODYgMTUuODYsMTkgMTIsMTlNMjAuNSwyMC41QzIyLjY2LDE4LjMxIDI0LDE1LjMxIDI0LDEyQzI0LDguNjkgMjIuNjYsNS42OSAyMC41LDMuNUwxOS40Miw0LjU4QzIxLjMyLDYuNSAyMi41LDkuMTEgMjIuNSwxMkMyMi41LDE0LjkgMjEuMzIsMTcuNSAxOS40MiwxOS40MkwyMC41LDIwLjVNNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZUhvbGQgPSBcIk0xMiwzQzcsMyAzLDcgMywxMkMzLDE3IDcsMjEgMTIsMjFDMTcsMjEgMjEsMTcgMjEsMTJDMjEsNyAxNywzIDEyLDNNMTIsMTlDOC4xLDE5IDUsMTUuOSA1LDEyQzUsOC4xIDguMSw1IDEyLDVDMTUuOSw1IDE5LDguMSAxOSwxMkMxOSwxNS45IDE1LjksMTkgMTIsMTlNMjAuNSwyMC41QzIyLjcsMTguMyAyNCwxNS4zIDI0LDEyQzI0LDguNyAyMi43LDUuNyAyMC41LDMuNUwxOS40LDQuNkMyMS4zLDYuNSAyMi41LDkuMSAyMi41LDEyQzIyLjUsMTQuOSAyMS4zLDE3LjUgMTkuNCwxOS40TDIwLjUsMjAuNU00LjYsMTkuNEMyLjcsMTcuNSAxLjUsMTQuOSAxLjUsMTJDMS41LDkuMSAyLjcsNi41IDQuNiw0LjZMMy41LDMuNUMxLjMsNS43IDAsOC43IDAsMTJDMCwxNS4zIDEuMywxOC4zIDMuNSwyMC41TDQuNiwxOS40TTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZVBhcmtpbmcgPSBcIk0xMiwzQzcsMyAzLDcgMywxMkMzLDE3IDcsMjEgMTIsMjFDMTcsMjEgMjEsMTcgMjEsMTJDMjEsNyAxNywzIDEyLDNNMTIsMTlDOC4xLDE5IDUsMTUuOSA1LDEyQzUsOC4xIDguMSw1IDEyLDVDMTUuOSw1IDE5LDguMSAxOSwxMkMxOSwxNS45IDE1LjksMTkgMTIsMTlNMjAuNSwyMC41QzIyLjcsMTguMyAyNCwxNS4zIDI0LDEyQzI0LDguNyAyMi43LDUuNyAyMC41LDMuNUwxOS40LDQuNkMyMS4zLDYuNSAyMi41LDkuMSAyMi41LDEyQzIyLjUsMTQuOSAyMS4zLDE3LjUgMTkuNCwxOS40TDIwLjUsMjAuNU00LjYsMTkuNEMyLjcsMTcuNSAxLjUsMTQuOSAxLjUsMTJDMS41LDkuMSAyLjcsNi41IDQuNiw0LjZMMy41LDMuNUMxLjMsNS43IDAsOC43IDAsMTJDMCwxNS4zIDEuMywxOC4zIDMuNSwyMC41TDQuNiwxOS40TTkuNSw3VjE3SDExLjVWMTNIMTMuNUEyLDIgMCAwLDAgMTUuNSwxMVY5QTIsMiAwIDAsMCAxMy41LDdIOS41TTExLjUsOUgxMy41VjExSDExLjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZVJldGFyZGVyID0gXCJNMTIgM0M3IDMgMyA3IDMgMTJTNyAyMSAxMiAyMSAyMSAxNyAyMSAxMiAxNyAzIDEyIDNNMTIgMTlDOC4xIDE5IDUgMTUuOSA1IDEyUzguMSA1IDEyIDUgMTkgOC4xIDE5IDEyIDE1LjkgMTkgMTIgMTlNMjAuNSAyMC41QzIyLjcgMTguMyAyNCAxNS4zIDI0IDEyUzIyLjcgNS43IDIwLjUgMy41TDE5LjQgNC42QzIxLjMgNi41IDIyLjUgOS4xIDIyLjUgMTJTMjEuMyAxNy41IDE5LjQgMTkuNEwyMC41IDIwLjVNNC42IDE5LjRDMi43IDE3LjUgMS41IDE0LjkgMS41IDEyUzIuNyA2LjUgNC42IDQuNkwzLjUgMy41QzEuMyA1LjcgMCA4LjcgMCAxMlMxLjMgMTguMyAzLjUgMjAuNUw0LjYgMTkuNE0xNS4zIDEwLjVDMTUuOTYgMTAuNSAxNi41IDExLjE3IDE2LjUgMTJDMTYuNSAxMi44MSAxNS45NSAxMy41IDE1LjMgMTMuNUMxNC45MyAxMy41IDE0LjY2IDEzLjI5IDE0LjUgMTMuMTFMMTQuNDcgMTMuMDhMMTQuNDQgMTMuMDVMMTMuMzggMTJMMTQuNDcgMTAuOTJMMTQuNSAxMC44OUwxNC41MyAxMC44NkMxNC43NCAxMC42MyAxNSAxMC41IDE1LjMgMTAuNU04LjcgMTAuNUM5LjA3IDEwLjUgOS4zNCAxMC43MSA5LjUgMTAuODhMOS41IDEwLjkyTDkuNTYgMTAuOTVMMTAuNjIgMTJMOS41MyAxMy4wOEw5LjUgMTMuMTFMOS40NyAxMy4xNUM5LjI2IDEzLjM3IDkgMTMuNSA4LjcgMTMuNUM4LjA1IDEzLjUgNy41IDEyLjgxIDcuNSAxMlM4LjA1IDEwLjUgOC43IDEwLjVNMTUuMyA5QzE0LjU4IDkgMTMuOSA5LjMxIDEzLjQyIDkuODVMMTIgMTEuMjVMMTAuNjEgOS44OEMxMC4xIDkuMzEgOS40MiA5IDguNyA5QzcuMjEgOSA2IDEwLjM1IDYgMTJTNy4yMSAxNSA4LjcgMTVDOS40MiAxNSAxMC4xIDE0LjY5IDEwLjU5IDE0LjE1TDEyIDEyLjc1TDEzLjM5IDE0LjEyQzEzLjkgMTQuNjggMTQuNTggMTUgMTUuMyAxNUMxNi43OSAxNSAxOCAxMy42NSAxOCAxMkMxOCAxMC4zMyAxNi43OSA5IDE1LjMgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDaGlsZFNlYXQgPSBcIk0xNyA0LjVDMTcgNS45IDE1LjkgNyAxNC41IDdTMTIgNS45IDEyIDQuNSAxMy4xIDIgMTQuNSAyIDE3IDMuMSAxNyA0LjVNMTUgOEgxNC4yQzEyLjEgOCAxMC4xIDYuOCA5LjEgNC45QzkgNC44IDguOSA0LjcgOC45IDQuNkw3LjEgNS40QzcuNiA2LjggOS4yIDguNiAxMS41IDkuNUw5LjcgMTQuNUw1LjggMTMuNEwzIDE4LjlMNSAxOS40TDYuOCAxNS44TDExLjMgMTdDMTIuMyAxNy4yIDEzLjMgMTYuNyAxMy43IDE1LjhMMTYgOS40QzE2LjIgOC43IDE1LjcgOCAxNSA4TTE4LjkgN0wxNS41IDE2LjRDMTQuOSAxOCAxMy40IDE5IDExLjggMTlDMTEuNSAxOSAxMS4xIDE5IDEwLjggMTguOUw3LjkgMTguMUw3IDE5LjlMOSAyMC40TDEwLjQgMjAuOEMxMC45IDIwLjkgMTEuNCAyMSAxMS45IDIxQzE0LjQgMjEgMTYuNiAxOS41IDE3LjUgMTcuMUwyMSA3SDE4LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQ2x1dGNoID0gXCJNMTAgMTguODRMMTQgMjAuN1YyM0w4IDIwVjE0SDVWMTBIOFY0TDE0IDFWMy4zTDEwIDUuMTZWMTguODRNMTkgMTBIMTVWNS40MUwxMiA2LjhWMTcuMkwxNSAxOC42VjE0SDE5VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvZyA9IFwiTTYuNSA1QzUuODQgNSA1LjI4IDUuNDIgNS4wOCA2TDMgMTJWMjBBMSAxIDAgMCAwIDQgMjFINUExIDEgMCAwIDAgNiAyMFYxOUgxMS4zQTcgNyAwIDAgMSAxMSAxN0E3IDcgMCAwIDEgMTQuNDEgMTFINUw2LjUgNi41SDE3LjVMMTguNjggMTAuMDNBNyA3IDAgMCAxIDIwLjQ3IDEwLjQ2TDE4LjkyIDZDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUg2LjVNMTcgMTJDMTYuODcgMTIgMTYuNzYgMTIuMDkgMTYuNzQgMTIuMjFMMTYuNTUgMTMuNTNDMTYuMjUgMTMuNjYgMTUuOTYgMTMuODIgMTUuNyAxNEwxNC40NiAxMy41QzE0LjM1IDEzLjUgMTQuMjIgMTMuNSAxNC4xNSAxMy42M0wxMy4xNSAxNS4zNkMxMy4wOSAxNS40NyAxMy4xMSAxNS42IDEzLjIxIDE1LjY4TDE0LjI3IDE2LjVDMTQuMjUgMTYuNjcgMTQuMjQgMTYuODMgMTQuMjQgMTdDMTQuMjQgMTcuMTcgMTQuMjUgMTcuMzMgMTQuMjcgMTcuNUwxMy4yMSAxOC4zMkMxMy4xMiAxOC40IDEzLjA5IDE4LjUzIDEzLjE1IDE4LjY0TDE0LjE1IDIwLjM3QzE0LjIxIDIwLjUgMTQuMzQgMjAuNSAxNC40NiAyMC41TDE1LjcgMjBDMTUuOTYgMjAuMTggMTYuMjQgMjAuMzUgMTYuNTUgMjAuNDdMMTYuNzQgMjEuNzlDMTYuNzYgMjEuOTEgMTYuODYgMjIgMTcgMjJIMTlDMTkuMTEgMjIgMTkuMjIgMjEuOTEgMTkuMjQgMjEuNzlMMTkuNDMgMjAuNDdDMTkuNzMgMjAuMzQgMjAgMjAuMTggMjAuMjcgMjBMMjEuNSAyMC41QzIxLjYzIDIwLjUgMjEuNzYgMjAuNSAyMS44MyAyMC4zN0wyMi44MyAxOC42NEMyMi44OSAxOC41MyAyMi44NiAxOC40IDIyLjc3IDE4LjMyTDIxLjcgMTcuNUMyMS43MiAxNy4zMyAyMS43NCAxNy4xNyAyMS43NCAxN0MyMS43NCAxNi44MyAyMS43MyAxNi42NyAyMS43IDE2LjVMMjIuNzYgMTUuNjhDMjIuODUgMTUuNiAyMi44OCAxNS40NyAyMi44MiAxNS4zNkwyMS44MiAxMy42M0MyMS43NiAxMy41IDIxLjYzIDEzLjUgMjEuNSAxMy41TDIwLjI3IDE0QzIwIDEzLjgyIDE5LjczIDEzLjY1IDE5LjQyIDEzLjUzTDE5LjIzIDEyLjIxQzE5LjIyIDEyLjA5IDE5LjExIDEyIDE5IDEySDE3TTYuNSAxM0ExLjUgMS41IDAgMCAxIDggMTQuNUExLjUgMS41IDAgMCAxIDYuNSAxNkExLjUgMS41IDAgMCAxIDUgMTQuNUExLjUgMS41IDAgMCAxIDYuNSAxM00xOCAxNS41QzE4LjgzIDE1LjUgMTkuNSAxNi4xNyAxOS41IDE3QzE5LjUgMTcuODMgMTguODMgMTguNSAxOCAxOC41QzE3LjE2IDE4LjUgMTYuNSAxNy44MyAxNi41IDE3QzE2LjUgMTYuMTcgMTcuMTcgMTUuNSAxOCAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvbm5lY3RlZCA9IFwiTTUsMTRIMTlMMTcuNSw5LjVINi41TDUsMTRNMTcuNSwxOUExLjUsMS41IDAgMCwwIDE5LDE3LjVBMS41LDEuNSAwIDAsMCAxNy41LDE2QTEuNSwxLjUgMCAwLDAgMTYsMTcuNUExLjUsMS41IDAgMCwwIDE3LjUsMTlNNi41LDE5QTEuNSwxLjUgMCAwLDAgOCwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE5TTE4LjkyLDlMMjEsMTVWMjNBMSwxIDAgMCwxIDIwLDI0SDE5QTEsMSAwIDAsMSAxOCwyM1YyMkg2VjIzQTEsMSAwIDAsMSA1LDI0SDRBMSwxIDAgMCwxIDMsMjNWMTVMNS4wOCw5QzUuMjgsOC40MiA1Ljg1LDggNi41LDhIMTcuNUMxOC4xNSw4IDE4LjcyLDguNDIgMTguOTIsOU0xMiwwQzE0LjEyLDAgMTYuMTUsMC44NiAxNy42NSwyLjM1TDE2LjIzLDMuNzdDMTUuMTEsMi42NSAxMy41OCwyIDEyLDJDMTAuNDIsMiA4Ljg5LDIuNjUgNy43NywzLjc3TDYuMzYsMi4zNUM3Ljg1LDAuODYgOS44OCwwIDEyLDBNMTIsNEMxMy4wNiw0IDE0LjA3LDQuNDQgMTQuODIsNS4xOEwxMy40LDYuNkMxMy4wMyw2LjIzIDEyLjUzLDYgMTIsNkMxMS41LDYgMTAuOTcsNi4yMyAxMC42LDYuNkw5LjE4LDUuMThDOS45Myw0LjQ0IDEwLjk0LDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDb252ZXJ0aWJsZSA9IFwiTTE2LDZMMTUsNi43NUwxNy41LDEwSDEzLjVWOC41SDEyVjEwSDNDMS44OSwxMCAxLDEwLjg5IDEsMTJWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5TDE2LDZNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvb2xhbnRMZXZlbCA9IFwiTTE5IDdWNUgyMVYzSDEzVjVIMTVWN0gxVjIxSDIzVjdIMTlNMjEgMTQuNDJDMjAuNzEgMTQuMTMgMjAuNSAxNCAyMCAxNEMxOS4zMyAxNCAxOS4yMSAxNC4yMSAxOC43MSAxNC43MVMxNy4zMyAxNiAxNiAxNiAxMy43OSAxNS4yMSAxMy4yOSAxNC43MSAxMi42NyAxNCAxMiAxNEMxMS43OCAxNCAxMS42MyAxNC4wMyAxMS41IDE0LjA4QzExLjIyIDE0LjE4IDExLjA1IDE0LjM3IDEwLjcxIDE0LjcxQzEwLjIxIDE1LjIxIDkuMzMgMTYgOCAxNlM1Ljc5IDE1LjIxIDUuMjkgMTQuNzEgNC42NyAxNCA0IDE0QzMuNSAxNCAzLjI5IDE0LjEzIDMgMTQuNDJWOUgyMVYxNC40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDcnVpc2VDb250cm9sID0gXCJNMjIsMTVDMjIsMTcuNiAyMC44LDE5LjkgMTguOSwyMS4zTDE4LjQsMjAuOEwxNi4zLDE4LjdMMTcuNywxNy4zTDE4LjksMTguNUMxOS40LDE3LjggMTkuOCwxNi45IDE5LjksMTZIMThWMTRIMTkuOUMxOS43LDEzLjEgMTkuNCwxMi4zIDE4LjksMTEuNUwxNy43LDEyLjdMMTYuMywxMS4zTDE3LjUsMTAuMUMxNi44LDkuNiAxNS45LDkuMiAxNSw5LjFWMTFIMTNWOS4xQzEyLjEsOS4zIDExLjMsOS42IDEwLjUsMTAuMUwxMy41LDEzLjFDMTMuNywxMy4xIDEzLjgsMTMgMTQsMTNBMiwyIDAgMCwxIDE2LDE1QTIsMiAwIDAsMSAxNCwxN0EyLDIgMCAwLDEgMTIsMTVDMTIsMTQuOCAxMiwxNC43IDEyLjEsMTQuNUw5LjEsMTEuNUM4LjYsMTIuMiA4LjIsMTMuMSA4LjEsMTRIMTBWMTZIOC4xQzguMywxNi45IDguNiwxNy43IDkuMSwxOC41TDEwLjMsMTcuM0wxMS43LDE4LjdMOS4xLDIxLjNDNy4yLDE5LjkgNiwxNy42IDYsMTVBOCw4IDAgMCwxIDE0LDdBOCw4IDAgMCwxIDIyLDE1TTYuNyw1LjNMMy40LDJMMiwzLjRMNS4zLDYuN0w0LDhIOFY0TDYuNyw1LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyRGVmcm9zdEZyb250ID0gXCJNMTUsMjNDMTQuNywyMyAxNC41LDIyLjkgMTQuMywyMi43QzEzLjksMjIuMyAxNCwyMS43IDE0LjQsMjEuM1YyMS4zQzE0LjksMjAuOSAxNi4xLDE5LjUgMTYuMSwxOC40QzE2LjEsMTcuOCAxNS43LDE3LjIgMTUuMywxNi41QzE0LjgsMTUuNyAxNC4xLDE0LjcgMTQuMSwxMy41QzE0LjEsMTEuMiAxNS40LDEwLjMgMTUuNiwxMC4yQzE2LjEsOS45IDE2LjcsMTAuMSAxNywxMC41QzE3LjMsMTEgMTcuMSwxMS42IDE2LjcsMTEuOVYxMS45QzE2LjcsMTEuOSAxNi4yLDEyLjMgMTYuMiwxMy41QzE2LjIsMTQuMSAxNi42LDE0LjcgMTcsMTUuNEMxNy41LDE2LjIgMTguMiwxNy4yIDE4LjIsMTguNEMxOC4yLDIwLjYgMTYuMSwyMi42IDE1LjksMjIuOEMxNS41LDIyLjkgMTUuMiwyMyAxNSwyM00xMS43LDIyLjdDMTEuOSwyMi41IDE0LDIwLjUgMTQsMTguM0MxNCwxNy4xIDEzLjQsMTYuMSAxMi44LDE1LjNDMTIuNCwxNC42IDEyLDE0IDEyLDEzLjRDMTIsMTIuMiAxMi41LDExLjggMTIuNSwxMS44VjExLjhDMTMsMTEuNSAxMy4xLDEwLjkgMTIuOCwxMC40QzEyLjUsOS45IDExLjksOS44IDExLjQsMTAuMUMxMS4yLDEwLjIgOS45LDExLjEgOS45LDEzLjRDOS45LDE0LjYgMTAuNSwxNS42IDExLjEsMTYuNEMxMS41LDE3LjEgMTEuOSwxNy43IDExLjksMTguM0MxMS45LDE5LjQgMTAuNywyMC44IDEwLjIsMjEuMlYyMS4yQzkuOCwyMS42IDkuOCwyMi4yIDEwLjEsMjIuNkMxMC4zLDIyLjggMTAuNiwyMi45IDEwLjgsMjIuOUMxMS4yLDIzIDExLjUsMjIuOSAxMS43LDIyLjdNNy43LDIyLjdDNy45LDIyLjUgMTAsMjAuNSAxMCwxOC4zQzEwLDE3LjEgOS40LDE2LjEgOC44LDE1LjNDOC40LDE0LjcgOCwxNC4xIDgsMTMuNEM4LDEyLjIgOC41LDExLjggOC41LDExLjhWMTEuOEM5LDExLjUgOS4xLDEwLjkgOC44LDEwLjRDOC42LDEwIDcuOSw5LjkgNy41LDEwLjFDNy4zLDEwLjIgNiwxMS4xIDYsMTMuNEM2LDE0LjYgNi42LDE1LjYgNy4yLDE2LjRDNy42LDE3LjEgOCwxNy43IDgsMTguM0M4LDE5LjQgNi44LDIwLjggNi4zLDIxLjJWMjEuMkM1LjksMjEuNiA1LjksMjIuMiA2LjIsMjIuNkM2LjUsMjIuOSA2LjcsMjMgNywyM0M3LjIsMjMgNy41LDIyLjkgNy43LDIyLjdNMTIsM0M5LjQsMyAxLDMuMyAxLDdDMSw5LjQgMi4yLDE1LjQgMi44LDE4SDRMNC44LDE4SDVWMTZINC40QzMuOCwxMy4xIDMsOC44IDMsN0MzLDYgNy40LDUgMTIsNUMxNi42LDUgMjEsNiAyMSw3QzIxLDguOCAyMC4yLDEzLjEgMTkuNiwxNkgxOVYxOEgxOS4yTDIwLDE4SDIxLjJDMjEuOCwxNS40IDIzLDkuNCAyMyw3QzIzLDMuMyAxNC42LDMgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJEZWZyb3N0UmVhciA9IFwiTTEwLDE4LjNDMTAsMjAuNSA3LjksMjIuNSA3LjcsMjIuN0M3LjUsMjIuOSA3LjIsMjMgNywyM0M2LjcsMjMgNi41LDIyLjkgNi4yLDIyLjZDNS45LDIyLjIgNS45LDIxLjYgNi4zLDIxLjJDNi44LDIwLjggOCwxOS40IDgsMTguM0M4LDE3LjcgNy42LDE3LjEgNy4yLDE2LjRDNi42LDE1LjYgNiwxNC42IDYsMTMuNEM2LDExLjEgNy4zLDEwLjIgNy41LDEwLjFDNy45LDkuOSA4LjYsMTAgOC44LDEwLjRDOS4xLDEwLjkgOSwxMS41IDguNSwxMS44QzguNSwxMS44IDgsMTIuMiA4LDEzLjRDOCwxNC4xIDguNCwxNC43IDguOCwxNS4zQzkuNCwxNi4xIDEwLDE3LjEgMTAsMTguM00xMiwxMy40QzEyLDEyLjIgMTIuNSwxMS44IDEyLjUsMTEuOEMxMywxMS41IDEzLjEsMTAuOSAxMi44LDEwLjRDMTIuNSw5LjkgMTEuOSw5LjggMTEuNCwxMC4xQzExLjIsMTAuMiA5LjksMTEuMSA5LjksMTMuNEM5LjksMTQuNiAxMC41LDE1LjYgMTEuMSwxNi40QzExLjUsMTcuMSAxMS45LDE3LjcgMTEuOSwxOC4zQzExLjksMTkuNCAxMC43LDIwLjggMTAuMiwyMS4yQzkuOCwyMS42IDkuOCwyMi4yIDEwLjEsMjIuNkMxMC4zLDIyLjggMTAuNiwyMi45IDEwLjgsMjIuOUMxMS4yLDIzIDExLjUsMjIuOSAxMS43LDIyLjdDMTEuOSwyMi41IDE0LDIwLjUgMTQsMTguM0MxNCwxNy4xIDEzLjQsMTYuMSAxMi44LDE1LjNDMTIuNCwxNC42IDEyLDE0IDEyLDEzLjRNMjAsM0g0QTIsMiAwIDAsMCAyLDVWMTZBMiwyIDAgMCwwIDQsMThINVYxNkg0VjVIMjBWMTZIMTlWMThIMjBBMiwyIDAgMCwwIDIyLDE2VjVBMiwyIDAgMCwwIDIwLDNNMTYuMiwxMy41QzE2LjIsMTIuMyAxNi43LDExLjkgMTYuNywxMS45QzE3LjEsMTEuNiAxNy4zLDExIDE3LDEwLjVDMTYuNywxMC4xIDE2LjEsOS45IDE1LjYsMTAuMkMxNS40LDEwLjMgMTQuMSwxMS4yIDE0LjEsMTMuNUMxNC4xLDE0LjcgMTQuOCwxNS43IDE1LjMsMTYuNUMxNS43LDE3LjIgMTYuMSwxNy44IDE2LjEsMTguNEMxNi4xLDE5LjUgMTQuOSwyMC45IDE0LjQsMjEuM0MxNCwyMS43IDEzLjksMjIuMyAxNC4zLDIyLjdDMTQuNSwyMi45IDE0LjcsMjMgMTUsMjNDMTUuMiwyMyAxNS41LDIyLjkgMTUuOSwyMi44QzE2LjEsMjIuNiAxOC4yLDIwLjYgMTguMiwxOC40QzE4LjIsMTcuMiAxNy41LDE2LjIgMTcsMTUuNEMxNi42LDE0LjcgMTYuMiwxNC4xIDE2LjIsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJEb29yID0gXCJNMTksMTRIMTZWMTZIMTlWMTRNMjIsMjFIM1YxMUwxMSwzSDIxQTEsMSAwIDAsMSAyMiw0VjIxTTExLjgzLDVMNS44MywxMUgyMFY1SDExLjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckRvb3JMb2NrID0gXCJNMjEgM0gxMUwzIDExVjEySDQuNUM3LjUgMTIgMTAgMTQuOTEgMTAgMTguNVYyMUgyMlY0QTEgMSAwIDAgMCAyMSAzTTE5IDE2SDE2VjE0SDE5TTIwIDExSDUuODNMMTEuODMgNUgyME03IDE3VjE2LjVBMi41IDIuNSAwIDAgMCAyIDE2LjVWMTdBMSAxIDAgMCAwIDEgMThWMjJBMSAxIDAgMCAwIDIgMjNIN0ExIDEgMCAwIDAgOCAyMlYxOEExIDEgMCAwIDAgNyAxN002LjIgMTdIMi44VjE2LjVBMS43IDEuNyAwIDAgMSA2LjIgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFbGVjdHJpYyA9IFwiTTE4LjkyIDJDMTguNzIgMS40MiAxOC4xNiAxIDE3LjUgMUg2LjVDNS44NCAxIDUuMjkgMS40MiA1LjA4IDJMMyA4VjE2QzMgMTYuNTUgMy40NSAxNyA0IDE3SDVDNS41NSAxNyA2IDE2LjU1IDYgMTZWMTVIMThWMTZDMTggMTYuNTUgMTguNDUgMTcgMTkgMTdIMjBDMjAuNTUgMTcgMjEgMTYuNTUgMjEgMTZWOEwxOC45MiAyTTYuNSAxMkM1LjY3IDEyIDUgMTEuMzMgNSAxMC41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyTTE3LjUgMTJDMTYuNjcgMTIgMTYgMTEuMzMgMTYgMTAuNVMxNi42NyA5IDE3LjUgOSAxOSA5LjY3IDE5IDEwLjUgMTguMzMgMTIgMTcuNSAxMk01IDdMNi41IDIuNUgxNy41TDE5IDdINU03IDIwSDExVjE4TDE3IDIxSDEzVjIzTDcgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyRWxlY3RyaWNPdXRsaW5lID0gXCJNMTguOTIgMkMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxSDYuNUM1Ljg0IDEgNS4yOSAxLjQyIDUuMDggMkwzIDhWMTZDMyAxNi41NSAzLjQ1IDE3IDQgMTdINUM1LjU1IDE3IDYgMTYuNTUgNiAxNlYxNUgxOFYxNkMxOCAxNi41NSAxOC40NSAxNyAxOSAxN0gyMEMyMC41NSAxNyAyMSAxNi41NSAyMSAxNlY4TDE4LjkyIDJNNi44NSAzSDE3LjE0TDE4LjIyIDYuMTFINS43N0w2Ljg1IDNNMTkgMTNINVY4SDE5VjEzTTcuNSA5QzguMzMgOSA5IDkuNjcgOSAxMC41UzguMzMgMTIgNy41IDEyIDYgMTEuMzMgNiAxMC41IDYuNjcgOSA3LjUgOU0xNi41IDlDMTcuMzMgOSAxOCA5LjY3IDE4IDEwLjVTMTcuMzMgMTIgMTYuNSAxMkMxNS42NyAxMiAxNSAxMS4zMyAxNSAxMC41UzE1LjY3IDkgMTYuNSA5TTcgMjBIMTFWMThMMTcgMjFIMTNWMjNMNyAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFbWVyZ2VuY3kgPSBcIk0xMSAwVjNIMTNWMEgxMU03Ljg4IDEuNDZMNi40NiAyLjg3TDguNTkgNUwxMCAzLjU4TDcuODggMS40Nk0xNi4xMiAxLjQ2TDE0IDMuNThMMTUuNDEgNUwxNy41NCAyLjg4TDE2LjEyIDEuNDZNMTIgNUEyIDIgMCAwIDAgMTAgN1Y4SDYuNUM1Ljg0IDggNS4yOCA4LjQyIDUuMDggOUwzIDE1VjIzQTEgMSAwIDAgMCA0IDI0SDVBMSAxIDAgMCAwIDYgMjNWMjJIMThWMjNBMSAxIDAgMCAwIDE5IDI0SDIwQTEgMSAwIDAgMCAyMSAyM1YxNUwxOC45MiA5QzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhIMTRWN0EyIDIgMCAwIDAgMTIgNU02LjUgOS41SDE3LjVMMTkgMTRINUw2LjUgOS41TTYuNSAxNkExLjUgMS41IDAgMCAxIDggMTcuNUExLjUgMS41IDAgMCAxIDYuNSAxOUExLjUgMS41IDAgMCAxIDUgMTcuNUExLjUgMS41IDAgMCAxIDYuNSAxNk0xNy41IDE2QTEuNSAxLjUgMCAwIDEgMTkgMTcuNUExLjUgMS41IDAgMCAxIDE3LjUgMTlBMS41IDEuNSAwIDAgMSAxNiAxNy41QTEuNSAxLjUgMCAwIDEgMTcuNSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFc3AgPSBcIk01LjMxLDZDNi45NSw0LjE2IDkuMzQsMyAxMiwzQzE0LjY2LDMgMTcuMDUsNC4xNiAxOC42OSw2SDE1LjU4QzE0LjUzLDUuMzcgMTMuMzEsNSAxMiw1QzEwLjY5LDUgOS40Nyw1LjM3IDguNDIsNkg1LjMxTTE0LjQsOS42VjhIMTEuMkExLjYsMS42IDAgMCwwIDkuNiw5LjZWMTEuMkM5LjYsMTIuMDggMTAuMzIsMTIuOCAxMS4yLDEyLjhIMTIuOFYxNC40SDkuNlYxNkgxMi44QTEuNiwxLjYgMCAwLDAgMTQuNCwxNC40VjEyLjhDMTQuNCwxMS45MiAxMy42OCwxMS4yIDEyLjgsMTEuMkgxMS4yVjkuNkgxNC40TTE4LjQsOEgxNS4yVjE2SDE2LjhWMTIuOEgxOC40QTEuNiwxLjYgMCAwLDAgMjAsMTEuMlY5LjZDMjAsOC43MiAxOS4yOCw4IDE4LjQsOE0xOC40LDExLjJIMTYuOFY5LjZIMTguNFYxMS4yTTguOCw5LjZWOEg0VjE2SDguOFYxNC40SDUuNlYxMi44SDguOFYxMS4ySDUuNlY5LjZIOC44TTE1LjU4LDE4QzE0LjUzLDE4LjYzIDEzLjMxLDE5IDEyLDE5QzEwLjY5LDE5IDkuNDcsMTguNjMgOC40MiwxOEg1LjMxQzYuOTUsMTkuODQgOS4zNCwyMSAxMiwyMUMxNC42NiwyMSAxNy4wNSwxOS44NCAxOC42OSwxOEgxNS41OE0yMC41LDMuNUwxOS40Miw0LjU4QzIxLjMyLDYuNSAyMi41LDkuMTEgMjIuNSwxMkMyMi41LDE0LjkgMjEuMzIsMTcuNSAxOS40MiwxOS40MkwyMC41LDIwLjVDMjIuNjYsMTguMzEgMjQsMTUuMzEgMjQsMTJDMjQsOC42OSAyMi42Niw1LjY5IDIwLjUsMy41TTQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFc3RhdGUgPSBcIk0zLDZIMTZMMTksMTBIMjFDMjIuMTEsMTAgMjMsMTAuODkgMjMsMTJWMTVIMjFBMywzIDAgMCwxIDE4LDE4QTMsMyAwIDAsMSAxNSwxNUg5QTMsMyAwIDAsMSA2LDE4QTMsMyAwIDAsMSAzLDE1SDFWOEMxLDYuODkgMS44OSw2IDMsNk0yLjUsNy41VjEwSDEwLjVWNy41SDIuNU0xMiw3LjVWMTBIMTcuMTRMMTUuMjUsNy41SDEyTTYsMTMuNUExLjUsMS41IDAgMCwwIDQuNSwxNUExLjUsMS41IDAgMCwwIDYsMTYuNUExLjUsMS41IDAgMCwwIDcuNSwxNUExLjUsMS41IDAgMCwwIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDAgMTYuNSwxNUExLjUsMS41IDAgMCwwIDE4LDE2LjVBMS41LDEuNSAwIDAsMCAxOS41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJIYXRjaGJhY2sgPSBcIk0xNiw2SDZMMSwxMlYxNUgzQTMsMyAwIDAsMCA2LDE4QTMsMyAwIDAsMCA5LDE1SDE1QTMsMyAwIDAsMCAxOCwxOEEzLDMgMCAwLDAgMjEsMTVIMjNWMTJDMjMsMTAuODkgMjIuMTEsMTAgMjEsMTBIMTlMMTYsNk02LjUsNy41SDEwLjVWMTBINC41TDYuNSw3LjVNMTIsNy41SDE1LjVMMTcuNDYsMTBIMTJWNy41TTYsMTMuNUExLjUsMS41IDAgMCwxIDcuNSwxNUExLjUsMS41IDAgMCwxIDYsMTYuNUExLjUsMS41IDAgMCwxIDQuNSwxNUExLjUsMS41IDAgMCwxIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJJbmZvID0gXCJNMTkgMTVIMTdWMTNIMTlNMjAgMjBWMjJIMTZWMjBIMTdWMThIMTZWMTZIMTlWMjBNMTguOTIgNUExLjUgMS41IDAgMCAwIDE3LjUgNEg2LjVBMS41IDEuNSAwIDAgMCA1LjA4IDVMMyAxMVYxOUExIDEgMCAwIDAgNCAyMEg1QTEgMSAwIDAgMCA2IDE5VjE4SDExQTcgNyAwIDAgMSAxOCAxMUE2Ljg0IDYuODQgMCAwIDEgMjEgMTEuNjhWMTFNNi41IDE1QTEuNSAxLjUgMCAxIDEgOCAxMy41QTEuNSAxLjUgMCAwIDEgNi41IDE1TTUgMTBMNi41IDUuNUgxNy41TDE5IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcktleSA9IFwiTTkuNSwwQTMsMyAwIDAsMCA2LjUsM0EzLDMgMCAwLDAgOS41LDZDMTAuODEsNiAxMS45Miw1LjE3IDEyLjMzLDRIMTQuNVY2SDE2LjVWNEgxNy41VjJIMTIuMzNDMTEuOTIsMC44MyAxMC44MSwwIDkuNSwwTTkuNSwyQTEsMSAwIDAsMSAxMC41LDNBMSwxIDAgMCwxIDkuNSw0QTEsMSAwIDAsMSA4LjUsM0ExLDEgMCAwLDEgOS41LDJNNi41LDhDNS44NCw4IDUuMjgsOC40MiA1LjA4LDlMMywxNVYyM0ExLDEgMCAwLDAgNCwyNEg1QTEsMSAwIDAsMCA2LDIzVjIySDE4VjIzQTEsMSAwIDAsMCAxOSwyNEgyMEExLDEgMCAwLDAgMjEsMjNWMTVMMTguOTIsOUMxOC43Miw4LjQyIDE4LjE2LDggMTcuNSw4SDYuNU02LjUsOS41SDE3LjVMMTksMTRINUw2LjUsOS41TTYuNSwxNkExLjUsMS41IDAgMCwxIDgsMTcuNUExLjUsMS41IDAgMCwxIDYuNSwxOUExLjUsMS41IDAgMCwxIDUsMTcuNUExLjUsMS41IDAgMCwxIDYuNSwxNk0xNy41LDE2QTEuNSwxLjUgMCAwLDEgMTksMTcuNUExLjUsMS41IDAgMCwxIDE3LjUsMTlBMS41LDEuNSAwIDAsMSAxNiwxNy41QTEuNSwxLjUgMCAwLDEgMTcuNSwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJMaWZ0ZWRQaWNrdXAgPSBcIk0xOCAxNEwxOC43OSAxNC4xTDE4Ljc3IDE0LjMzTDE5LjI0IDE0LjVMMTkuMzkgMTQuMzRDMTkuODkgMTQuNiAyMC4zMiAxNSAyMC42IDE1LjVMMjAuNDMgMTUuNjdMMjAuNjMgMTYuMTJMMjAuODYgMTYuMUMyMC45NSAxNi4zOSAyMSAxNi42OSAyMSAxN0wyMC45IDE3Ljc4TDIwLjY2IDE3Ljc3TDIwLjQ3IDE4LjI0TDIwLjY2IDE4LjM5QzIwLjM5IDE4LjkgMjAgMTkuMzIgMTkuNSAxOS42TDE5LjMzIDE5LjQyTDE4Ljg3IDE5LjYyTDE4Ljg5IDE5Ljg2QzE4LjYxIDE5Ljk1IDE4LjMxIDIwIDE4IDIwTDE3LjIxIDE5LjlMMTcuMjIgMTkuNjVMMTYuNzYgMTkuNDdMMTYuNiAxOS42NkMxNi4xIDE5LjM5IDE1LjY3IDE5IDE1LjM5IDE4LjVMMTUuNTcgMTguMzJMMTUuMzcgMTcuODZMMTUuMTMgMTcuODhDMTUuMDUgMTcuNiAxNSAxNy4zMSAxNSAxN0wxNS4xMSAxNi4yTDE1LjM0IDE2LjIxTDE1LjUzIDE1Ljc1TDE1LjM1IDE1LjZDMTUuNjIgMTUuMDkgMTYgMTQuNjggMTYuNSAxNC4zOUwxNi42NyAxNC41NkwxNy4xMyAxNC4zNkwxNy4xMSAxNC4xNEMxNy4zOSAxNC4wNSAxNy42OSAxNCAxOCAxNE0xOCAxNS41QzE3LjE3IDE1LjUgMTYuNSAxNi4xNyAxNi41IDE3QzE2LjUgMTcuODMgMTcuMTcgMTguNSAxOCAxOC41QzE4LjgzIDE4LjUgMTkuNSAxNy44MyAxOS41IDE3QzE5LjUgMTYuMTcgMTguODMgMTUuNSAxOCAxNS41TTYgMTRMNi43OSAxNC4xTDYuNzcgMTQuMzNMNy4yNCAxNC41TDcuMzkgMTQuMzRDNy44OSAxNC42IDguMzIgMTUgOC42IDE1LjVMOC40MyAxNS42N0w4LjYzIDE2LjEyTDguODYgMTYuMUM4Ljk1IDE2LjM5IDkgMTYuNjkgOSAxN0w4LjkgMTcuNzhMOC42NSAxNy43N0w4LjQ3IDE4LjI0TDguNjYgMTguMzlDOC4zOSAxOC45IDggMTkuMzIgNy41IDE5LjZMNy4zMyAxOS40Mkw2Ljg3IDE5LjYyTDYuODkgMTkuODZDNi42MSAxOS45NSA2LjMxIDIwIDYgMjBMNS4yMSAxOS45TDUuMjIgMTkuNjVMNC43NiAxOS40N0w0LjYgMTkuNjZDNC4xIDE5LjM5IDMuNjcgMTkgMy4zOSAxOC41TDMuNTcgMTguMzJMMy4zNyAxNy44NkwzLjEzIDE3Ljg4QzMuMDUgMTcuNiAzIDE3LjMxIDMgMTdMMy4xMSAxNi4yTDMuMzQgMTYuMjFMMy41MyAxNS43NUwzLjM1IDE1LjZDMy42MiAxNS4wOSA0IDE0LjY4IDQuNSAxNC4zOUw0LjY3IDE0LjU2TDUuMTMgMTQuMzZMNS4xMSAxNC4xNEM1LjM5IDE0LjA1IDUuNjkgMTQgNiAxNE02IDE1LjVDNS4xNyAxNS41IDQuNSAxNi4xNyA0LjUgMTdDNC41IDE3LjgzIDUuMTcgMTguNSA2IDE4LjVDNi44MyAxOC41IDcuNSAxNy44MyA3LjUgMTdDNy41IDE2LjE3IDYuODMgMTUuNSA2IDE1LjVNMTYgNkwxOSAxMEgyMUMyMi4xMSAxMCAyMyAxMC44OSAyMyAxMlYxNUgyMUMyMSAxMy4zNCAxOS42NiAxMiAxOCAxMkMxNi4zNCAxMiAxNSAxMy4zNCAxNSAxNUg5QzkgMTMuMzQgNy42NiAxMiA2IDEyQzQuMzQgMTIgMyAxMy4zNCAzIDE1SDFWMTBIMTAuNVY2TDE2IDZNMTIgNy41VjEwSDE3LjQ2TDE1LjUgNy41SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckxpZ2h0RGltbWVkID0gXCJNMTMsNC44QzksNC44IDksMTkuMiAxMywxOS4yQzE3LDE5LjIgMjIsMTYuNSAyMiwxMkMyMiw3LjUgMTcsNC44IDEzLDQuOE0xMy4xLDE3LjJDMTIuNywxNi44IDEyLDE1IDEyLDEyQzEyLDkgMTIuNyw3LjIgMTMuMSw2LjhDMTYsNi45IDIwLDguNyAyMCwxMkMyMCwxNS4zIDE1LjksMTcuMSAxMy4xLDE3LjJNOCwxMC41QzgsMTEgNy45LDExLjUgNy45LDEyQzcuOSwxMi4yIDcuOSwxMi40IDcuOSwxMi42TDIuNCwxNEwxLjksMTIuMUw4LDEwLjVNMiw3TDkuNCw1LjFDOS4yLDUuNCA5LDUuOCA4LjksNi4zQzguOCw2LjYgOC43LDcgOC42LDcuNEwyLjUsOC45TDIsN004LjIsMTUuNUM4LjMsMTYuMiA4LjUsMTYuOSA4LjcsMTcuNEwyLjQsMTlMMS45LDE3LjFMOC4yLDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGlnaHRGb2cgPSBcIk0xMyw0LjhDOSw0LjggOSwxOS4yIDEzLDE5LjJDMTcsMTkuMiAyMiwxNi41IDIyLDEyQzIyLDcuNSAxNyw0LjggMTMsNC44TTEzLjEsMTcuMkMxMi43LDE2LjggMTIsMTUgMTIsMTJDMTIsOSAxMi43LDcuMiAxMy4xLDYuOEMxNiw2LjkgMjAsOC43IDIwLDEyQzIwLDE1LjMgMTYsMTcuMSAxMy4xLDE3LjJNNiw4VjExSDhDOCwxMS4zIDgsMTEuNyA4LDEyQzgsMTIuMyA4LDEyLjcgOCwxM0g2VjE2SDguNEM4LjYsMTYuNyA4LjgsMTcuNCA5LDE4SDZWMjFINFYxOEgyVjE2SDRWMTNIMlYxMUg0VjhIMlY2SDRWM0g2VjZIOUM5LDYuMSA4LjksNi4yIDguOSw2LjRDOC43LDYuOSA4LjUsNy40IDguNCw4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGlnaHRIaWdoID0gXCJNMTMsNC44QzksNC44IDksMTkuMiAxMywxOS4yQzE3LDE5LjIgMjIsMTYuNSAyMiwxMkMyMiw3LjUgMTcsNC44IDEzLDQuOE0xMy4xLDE3LjJDMTIuNywxNi44IDEyLDE1IDEyLDEyQzEyLDkgMTIuNyw3LjIgMTMuMSw2LjhDMTYsNi45IDIwLDguNyAyMCwxMkMyMCwxNS4zIDE2LDE3LjEgMTMuMSwxNy4yTTIsNUg5LjVDOS4zLDUuNCA5LDUuOCA4LjksNi40QzguOCw2LjYgOC44LDYuOCA4LjcsN0gyVjVNOCwxMUgyVjlIOC4yQzguMSw5LjYgOC4xLDEwLjMgOCwxMU04LjcsMTdDOC45LDE3LjggOS4yLDE4LjQgOS42LDE5SDIuMVYxN0g4LjdNOC4yLDE1SDJWMTNIOEM4LjEsMTMuNyA4LjEsMTQuNCA4LjIsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGltb3VzaW5lID0gXCJNMSw2TDIuNSw3LjVMMSw5TDIuNSwxMC41TDEsMTJMMi41LDEzLjVMMSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5TDE2LDZIMU00LjYyLDcuNUgxMC41VjEwSDQuMTJMMy4xMiw5TDQuNjIsNy41TTEyLDcuNUgxNS41TDE3LjQ2LDEwSDEyVjcuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJNdWx0aXBsZSA9IFwiTTgsMTFMOS41LDYuNUgxOC41TDIwLDExTTE4LjUsMTZBMS41LDEuNSAwIDAsMSAxNywxNC41QTEuNSwxLjUgMCAwLDEgMTguNSwxM0ExLjUsMS41IDAgMCwxIDIwLDE0LjVBMS41LDEuNSAwIDAsMSAxOC41LDE2TTkuNSwxNkExLjUsMS41IDAgMCwxIDgsMTQuNUExLjUsMS41IDAgMCwxIDkuNSwxM0ExLjUsMS41IDAgMCwxIDExLDE0LjVBMS41LDEuNSAwIDAsMSA5LjUsMTZNMTkuOTIsNkMxOS43MSw1LjQgMTkuMTQsNSAxOC41LDVIOS41QzguODYsNSA4LjI5LDUuNCA4LjA4LDZMNiwxMlYyMEExLDEgMCAwLDAgNywyMUg4QTEsMSAwIDAsMCA5LDIwVjE5SDE5VjIwQTEsMSAwIDAsMCAyMCwyMUgyMUExLDEgMCAwLDAgMjIsMjBWMTJMMTkuOTIsNk0xNC45MiwzQzE0LjcxLDIuNCAxNC4xNCwyIDEzLjUsMkg0LjVDMy44NiwyIDMuMjksMi40IDMuMDgsM0wxLDlWMTdBMSwxIDAgMCwwIDIsMThIM0ExLDEgMCAwLDAgNCwxN1YxMi45MUMzLjIyLDEyLjYzIDIuODIsMTEuNzcgMy4xLDExQzMuMzIsMTAuNCAzLjg3LDEwIDQuNSwxMEg0LjU3TDUuMjcsOEgzTDQuNSwzLjVIMTUuMDlMMTQuOTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJPZmYgPSBcIk0yMC41LDE5Ljg1TDYuNDEsNS43NkwyLjQxLDEuNzZMMS4xMSwzTDQuNTcsNi40NkwzLDExVjE5QTEsMSAwIDAsMCA0LDIwSDVBMSwxIDAgMCwwIDYsMTlWMThIMTYuMTFMMjAuODQsMjIuNzNMMjIuMTEsMjEuNDZMMjAuNSwxOS44NU02LjUsMTVBMS41LDEuNSAwIDAsMSA1LDEzLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJBMS41LDEuNSAwIDAsMSA4LDEzLjVBMS41LDEuNSAwIDAsMSA2LjUsMTVNNSwxMEw1Ljc4LDcuNjdMOC4xMSwxMEg1TTE3LjUsNS41TDE5LDEwSDEzLjJMMTYuMTIsMTIuOTJDMTYuNSwxMi4xNyAxNy4zNywxMS44NiAxOC4xMiwxMi4yMUMxOC44NywxMi41NyAxOS4xOCwxMy40NyAxOC44MywxNC4yMUMxOC42OCwxNC41IDE4LjQzLDE0Ljc3IDE4LjEyLDE0LjkyTDIxLDE3LjhWMTFMMTguOTIsNUMxOC43MSw0LjQgMTguMTQsNCAxNy41LDRINy4yTDguNyw1LjVIMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJPdXRsaW5lID0gXCJNMTguOSA2QzE4LjcgNS40IDE4LjEgNSAxNy41IDVINi41QzUuOCA1IDUuMyA1LjQgNS4xIDZMMyAxMlYyMEMzIDIwLjUgMy41IDIxIDQgMjFINUM1LjYgMjEgNiAyMC41IDYgMjBWMTlIMThWMjBDMTggMjAuNSAxOC41IDIxIDE5IDIxSDIwQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxMkwxOC45IDZNNi44IDdIMTcuMUwxOC4yIDEwSDUuOEw2LjggN00xOSAxN0g1VjEySDE5VjE3TTcuNSAxM0M4LjMgMTMgOSAxMy43IDkgMTQuNVM4LjMgMTYgNy41IDE2IDYgMTUuMyA2IDE0LjUgNi43IDEzIDcuNSAxM00xNi41IDEzQzE3LjMgMTMgMTggMTMuNyAxOCAxNC41UzE3LjMgMTYgMTYuNSAxNkMxNS43IDE2IDE1IDE1LjMgMTUgMTQuNVMxNS43IDEzIDE2LjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyUGFya2luZ0xpZ2h0cyA9IFwiTTcuMyw5LjJDOC4xLDkuNiA5LDEwLjUgOSwxMkM5LDEzLjUgOC4xLDE0LjQgNy4zLDE0LjhDNi45LDEzLjQgNi45LDEwLjYgNy4zLDkuMk02LjUsN0M0LjUsNyA0LjUsMTcgNi41LDE3QzguNSwxNyAxMSwxNS4xIDExLDEyQzExLDguOSA4LjUsNyA2LjUsN00xNi43LDkuMkMxNywxMC42IDE3LDEzLjQgMTYuNywxNC44QzE1LjksMTQuNCAxNSwxMy41IDE1LDEyQzE1LDEwLjUgMTUuOSw5LjYgMTYuNyw5LjJNMTcuNSw3QzE1LjUsNyAxMyw4LjkgMTMsMTJDMTMsMTUuMSAxNS41LDE3IDE3LjUsMTdDMTkuNSwxNyAxOS41LDcgMTcuNSw3TTQuOSw2LjJMMi41LDQuNkwxLjQsNi4zTDQsOEM0LjIsNy4zIDQuNSw2LjYgNC45LDYuMk0yMCw4TDIyLjYsNi4zTDIxLjUsNC42TDE5LjEsNi4yQzE5LjQsNi42IDE5LjgsNy4yIDIwLDhNNCwxNkwxLjQsMTcuN0wyLjUsMTkuNEw0LjksMTcuOEM0LjYsMTcuNCA0LjIsMTYuOCA0LDE2TTIwLjUsMTFDMjAuNSwxMS4zIDIwLjUsMTEuNyAyMC41LDEyQzIwLjUsMTIuMyAyMC41LDEyLjYgMjAuNSwxM0gyNFYxMUgyMC41TTE5LjEsMTcuOEwyMS41LDE5LjRMMjIuNiwxNy43TDIwLDE2QzE5LjgsMTYuNyAxOS41LDE3LjQgMTkuMSwxNy44TTMuNSwxMkMzLjUsMTEuNyAzLjUsMTEuNCAzLjUsMTFIMFYxM0gzLjVDMy41LDEyLjcgMy41LDEyLjMgMy41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclBpY2t1cCA9IFwiTTE2LDZIMTAuNVYxMEgxVjE1SDNBMywzIDAgMCwwIDYsMThBMywzIDAgMCwwIDksMTVIMTVBMywzIDAgMCwwIDE4LDE4QTMsMyAwIDAsMCAyMSwxNUgyM1YxMkMyMywxMC44OSAyMi4xMSwxMCAyMSwxMEgxOUwxNiw2TTEyLDcuNUgxNS41TDE3LjQ2LDEwSDEyVjcuNU02LDEzLjVBMS41LDEuNSAwIDAsMSA3LjUsMTVBMS41LDEuNSAwIDAsMSA2LDE2LjVBMS41LDEuNSAwIDAsMSA0LjUsMTVBMS41LDEuNSAwIDAsMSA2LDEzLjVNMTgsMTMuNUExLjUsMS41IDAgMCwxIDE5LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxNi41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNUExLjUsMS41IDAgMCwxIDE4LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdCA9IFwiTTcgMThDNyAxOCA0IDEwIDQgNlM2IDIgNiAySDdDNyAyIDggMiA4IDNTNyA0IDcgNiAxMCAxMCAxMCAxMyA3IDE4IDcgMThNMTIgMTdDMTEgMTcgOCAxOS41IDggMTkuNUM3LjcgMTkuNyA3LjggMjAgOCAyMC4zQzggMjAuMyA5IDIyLjEgMTEgMjIuMUgxN0MxOC4xIDIyLjEgMTkgMjEuMiAxOSAyMC4xVjE5LjFDMTkgMTggMTguMSAxNy4xIDE3IDE3LjFIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdENvb2xlciA9IFwiTTIwLjggMTAuMkwxOS40IDEwLjZMMTguMiA5LjlWOC4yTDE5LjQgNy41TDIwLjggNy45TDIxLjEgNi44TDIwIDYuNUwyMC4zIDUuNEwxOS4yIDUuMUwxOC44IDYuNUwxNy42IDcuMkwxNi4xIDYuM1Y1TDE3LjEgNEwxNi4zIDMuMkwxNS41IDRMMTQuNyAzLjJMMTMuOSA0TDE0LjkgNVY2LjNMMTMuNCA3LjJMMTIuMiA2LjVMMTEuOSA1LjFMMTAuOCA1LjRMMTEuMSA2LjVMMTAgNi43TDEwLjMgNy44TDExLjcgNy40TDEyLjkgOC4xVjkuOEwxMS43IDEwLjVMMTAuMyAxMC4xTDEwIDExLjRMMTEuMSAxMS43TDEwLjggMTIuN0wxMS45IDEzTDEyLjMgMTEuNkwxMy41IDEwLjlMMTUgMTEuOFYxMy4xTDE0IDE0LjFMMTQuOCAxNC45TDE1LjYgMTQuMUwxNi40IDE0LjlMMTcuMiAxNC4xTDE2LjIgMTMuMVYxMS44TDE3LjcgMTAuOUwxOC45IDExLjZMMTkuMyAxM0wyMC40IDEyLjdMMjAgMTEuNkwyMS4xIDExLjNMMjAuOCAxMC4yTTE0IDguMkwxNS41IDcuM0wxNyA4LjJWOS45TDE1LjUgMTAuOEwxNCA5LjlWOC4yTTUgMThDNSAxOCAyIDEwIDIgNlM0IDIgNCAySDVDNSAyIDYgMiA2IDNTNSA0IDUgNiA4IDEwIDggMTMgNSAxOCA1IDE4TTE1IDE3QzE2LjEgMTcgMTcgMTcuOSAxNyAxOVYyMEMxNyAyMS4xIDE2LjEgMjIgMTUgMjJIOUM3IDIyIDYgMjAuMiA2IDIwLjJDNS44IDIwIDUuNyAxOS42IDYgMTkuNEM2IDE5LjQgOSAxNi45IDEwIDE2LjlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdEhlYXRlciA9IFwiTTUgMThDNSAxOCAyIDEwIDIgNlM0IDIgNCAySDVDNSAyIDYgMiA2IDNTNSA0IDUgNiA4IDEwIDggMTMgNSAxOCA1IDE4TTE1IDE3QzE2LjEgMTcgMTcgMTcuOSAxNyAxOVYyMEMxNyAyMS4xIDE2LjEgMjIgMTUgMjJIOUM3IDIyIDYgMjAuMiA2IDIwLjJDNS44IDIwIDUuNyAxOS42IDYgMTkuNEM2IDE5LjQgOSAxNi45IDEwIDE2LjlIMTVNMTMuNyAzLjRMMTIuMyA2LjhMMTMuNyAxMC4yTDExLjcgMTVMMTAgMTMuNkwxMS40IDEwLjJMMTAgNi44TDEyIDJMMTMuNyAzLjRNMTcuOSAzLjRMMTYuNSA2LjhMMTcuOSAxMC4yTDE1LjkgMTVMMTQuMiAxMy42TDE1LjYgMTAuMkwxNC4yIDYuOEwxNi4yIDJMMTcuOSAzLjRNMjIgMy40TDIwLjYgNi44TDIyIDEwLjJMMjAgMTVMMTguMyAxMy42TDE5LjcgMTAuMkwxOC4zIDYuOEwyMC4zIDJMMjIgMy40XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2V0dGluZ3MgPSBcIk0xNSAyMkgxN1YyNEgxNU0xMSAyMkgxM1YyNEgxMU03IDIySDlWMjRIN001IDExTDYuNSA2LjVIMTcuNUwxOSAxMU0xNy41IDE2QTEuNSAxLjUgMCAwIDEgMTYgMTQuNUExLjUgMS41IDAgMCAxIDE3LjUgMTNBMS41IDEuNSAwIDAgMSAxOSAxNC41QTEuNSAxLjUgMCAwIDEgMTcuNSAxNk02LjUgMTZBMS41IDEuNSAwIDAgMSA1IDE0LjVBMS41IDEuNSAwIDAgMSA2LjUgMTNBMS41IDEuNSAwIDAgMSA4IDE0LjVBMS41IDEuNSAwIDAgMSA2LjUgMTZNMTguOTIgNkMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDYuNUM1Ljg0IDUgNS4yOCA1LjQyIDUuMDggNkwzIDEyVjIwQTEgMSAwIDAgMCA0IDIxSDVBMSAxIDAgMCAwIDYgMjBWMTlIMThWMjBBMSAxIDAgMCAwIDE5IDIxSDIwQTEgMSAwIDAgMCAyMSAyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJTaGlmdFBhdHRlcm4gPSBcIk04IDVINFYySDhWNU00IDIySDhWMTlINFYyMk0xNCAySDEwVjVIMTRWMk0xMCAyMkgxNFYxOUgxMFYyMk0xNiAyVjVIMjBWMkgxNk0xNyAxMUgxM1Y3SDExVjExSDdWN0g1VjE3SDdWMTNIMTFWMTdIMTNWMTNIMTlWN0gxN1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJTaWRlID0gXCJNMTYsNkwxOSwxMEgyMUMyMi4xMSwxMCAyMywxMC44OSAyMywxMlYxNUgyMUEzLDMgMCAwLDEgMTgsMThBMywzIDAgMCwxIDE1LDE1SDlBMywzIDAgMCwxIDYsMThBMywzIDAgMCwxIDMsMTVIMVYxMkMxLDEwLjg5IDEuODksMTAgMywxMEw2LDZIMTZNMTAuNSw3LjVINi43NUw0Ljg2LDEwSDEwLjVWNy41TTEyLDcuNVYxMEgxNy4xNEwxNS4yNSw3LjVIMTJNNiwxMy41QTEuNSwxLjUgMCAwLDAgNC41LDE1QTEuNSwxLjUgMCAwLDAgNiwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE1QTEuNSwxLjUgMCAwLDAgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMCAxNi41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTYuNUExLjUsMS41IDAgMCwwIDE5LjUsMTVBMS41LDEuNSAwIDAsMCAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclNwb3J0cyA9IFwiTTEyLDguNUg3TDQsMTFIM0MxLjg5LDExIDEsMTEuODkgMSwxM1YxNkgzLjE3QzMuNiwxNy4yIDQuNzMsMTggNiwxOEM3LjI3LDE4IDguNCwxNy4yIDguODIsMTZIMTUuMTdDMTUuNiwxNy4yIDE2LjczLDE4IDE4LDE4QzE5LjI3LDE4IDIwLjQsMTcuMiAyMC44MiwxNkgyM1YxNUMyMywxMy44OSAyMS45NywxMy41MyAyMSwxM0wxMiw4LjVNNS4yNSwxMkw3LjUsMTBIMTEuNUwxNS41LDEySDUuMjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclRpcmVBbGVydCA9IFwiTTExLDEzSDEzVjE1SDExVjEzTTExLDVIMTNWMTFIMTFWNU0xNyw0Ljc2QzE4Ljg2LDYuMTkgMjAsOC42MSAyMCwxMUMyMCwxNCAxOC4zMywxNi42NCAxNS44NiwxOEg4LjE0QzUuNjcsMTYuNjQgNCwxNCA0LDExQzQsOC42MSA1LjA5LDYuMTcgNyw0Ljc2VjJINVYzLjg2QzMuMTUsNS42OCAyLDguMiAyLDExQzIsMTMuOCAzLjE1LDE2LjMyIDUsMTguMTRWMjJIN1YyMEg5VjIySDExVjIwSDEzVjIySDE1VjIwSDE3VjIySDE5VjE4LjE0QzIwLjg1LDE2LjMyIDIyLDEzLjggMjIsMTFDMjIsOC4yIDIwLjg1LDUuNjggMTksMy44NlYySDE3VjQuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyVHJhY3Rpb25Db250cm9sID0gXCJNOS41LDExSDEwLjVDMTAuOCwxMSAxMSwxMC44IDExLDEwLjVWOUgxOVYxMC41QzE5LDEwLjggMTkuMiwxMSAxOS41LDExSDIwLjVDMjAuOCwxMSAyMSwxMC44IDIxLDEwLjVWOUwyMSw4LjVWNkwxOS42LDEuN0MxOS41LDEuMyAxOS4xLDEgMTguNywxSDExLjRDMTEsMSAxMC42LDEuMyAxMC41LDEuN0w5LDZWOC41TDksOVYxMC41QzksMTAuOCA5LjIsMTEgOS41LDExTTExLjMsMkgxOC42TDE5LjUsNUgxMC40TDExLjMsMk0xMiwyM0gxMEMxMCwyMi4yIDguMSwyMS41IDYuNiwyMC45QzQuNSwyMC4xIDIsMTkuMiAyLDE3QzIsMTQuNyA0LjMsMTQuMSA2LjIsMTMuNUM3LjksMTMuMSA5LDEyLjcgOSwxMkgxMUMxMSwxNC4zIDguNywxNC45IDYuOCwxNS41QzUuMSwxNS45IDQsMTYuMyA0LDE3QzQsMTcuOCA1LjksMTguNSA3LjQsMTkuMUM5LjUsMTkuOSAxMiwyMC44IDEyLDIzTTIyLDIzSDIwQzIwLDIyLjIgMTguMSwyMS41IDE2LjYsMjAuOUMxNC41LDIwLjEgMTIsMTkuMiAxMiwxN0MxMiwxNC43IDE0LjMsMTQuMSAxNi4yLDEzLjVDMTcuOCwxMyAxOSwxMi43IDE5LDEySDIxQzIxLDE0LjMgMTguNywxNC45IDE2LjgsMTUuNUMxNS4yLDE1LjkgMTQsMTYuMyAxNCwxN0MxNCwxNy44IDE1LjksMTguNSAxNy40LDE5LjFDMTkuNSwxOS45IDIyLDIwLjggMjIsMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyVHVyYm9jaGFyZ2VyID0gXCJNMjIgMTNWMTVIMTguMzJDMTguNzUgMTQuMDkgMTkgMTMuMDggMTkgMTJDMTkgOC4xNCAxNS44NiA1IDEyIDVIMlYzSDEyQzE2Ljk3IDMgMjEgNy4wMyAyMSAxMkMyMSAxMi4zNCAyMC45NyAxMi42NyAyMC45NCAxM0gyMk0xMiAxOUM4LjE0IDE5IDUgMTUuODYgNSAxMkM1IDEwLjkzIDUuMjUgOS45MSA1LjY5IDlIMlYxMUgzLjA2QzMuMDMgMTEuMzMgMyAxMS42NiAzIDEyQzMgMTYuOTcgNy4wMyAyMSAxMiAyMUgyMlYxOUgxMk0xNi44NiAxMi4yQzE1LjkzIDEyLjk0IDE0LjcyIDEyLjQ3IDE0IDEyLjA1VjEyQzE2Ljc5IDEwLjMxIDE1LjM5IDcuODkgMTUuMzkgNy44OVMxNC4zMyA2LjA0IDE0LjYxIDcuODlDMTQuNzggOS4wNyAxMy43NiA5Ljg4IDEzLjA0IDEwLjNMMTMgMTAuMjhDMTIuOTMgNyAxMC4xMyA3IDEwLjEzIDdTOCA3IDkuNzQgNy42OUMxMC44NSA4LjEzIDExLjA0IDkuNDIgMTEuMDUgMTAuMjVMMTEgMTAuMjhDOC4xNCA4LjcgNi43NCAxMS4xMiA2Ljc0IDExLjEyUzUuNjcgMTIuOTcgNy4xNCAxMS44QzguMDcgMTEuMDcgOS4yOCAxMS41NCAxMCAxMS45NVYxMkM3LjIxIDEzLjcgOC42MSAxNi4xMiA4LjYxIDE2LjEyUzkuNjcgMTcuOTcgOS40IDE2LjExQzkuMjIgMTQuOTQgMTAuMjUgMTQuMTMgMTAuOTcgMTMuN0wxMSAxMy43M0MxMS4wNyAxNyAxMy44NyAxNyAxMy44NyAxN1MxNiAxNyAxNC4yNiAxNi4zMUMxMy4xNSAxNS44NyAxMi45NiAxNC41OCAxMi45NSAxMy43NUwxMyAxMy43M0MxNS44NiAxNS4zMSAxNy4yNiAxMi44OCAxNy4yNiAxMi44OFMxOC4zMyAxMS4wNCAxNi44NiAxMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcldhc2ggPSBcIk01LDEzTDYuNSw4LjVIMTcuNUwxOSwxM00xNy41LDE4QTEuNSwxLjUgMCAwLDEgMTYsMTYuNUExLjUsMS41IDAgMCwxIDE3LjUsMTVBMS41LDEuNSAwIDAsMSAxOSwxNi41QTEuNSwxLjUgMCAwLDEgMTcuNSwxOE02LjUsMThBMS41LDEuNSAwIDAsMSA1LDE2LjVBMS41LDEuNSAwIDAsMSA2LjUsMTVBMS41LDEuNSAwIDAsMSA4LDE2LjVBMS41LDEuNSAwIDAsMSA2LjUsMThNMTguOTIsOEMxOC43Miw3LjQyIDE4LjE2LDcgMTcuNSw3SDYuNUM1Ljg0LDcgNS4yOCw3LjQyIDUuMDgsOEwzLDE0VjIyQTEsMSAwIDAsMCA0LDIzSDVBMSwxIDAgMCwwIDYsMjJWMjFIMThWMjJBMSwxIDAgMCwwIDE5LDIzSDIwQTEsMSAwIDAsMCAyMSwyMlYxNE03LDVBMS41LDEuNSAwIDAsMCA4LjUsMy41QzguNSwyLjUgNywwLjggNywwLjhDNywwLjggNS41LDIuNSA1LjUsMy41QTEuNSwxLjUgMCAwLDAgNyw1TTEyLDVBMS41LDEuNSAwIDAsMCAxMy41LDMuNUMxMy41LDIuNSAxMiwwLjggMTIsMC44QzEyLDAuOCAxMC41LDIuNSAxMC41LDMuNUExLjUsMS41IDAgMCwwIDEyLDVNMTcsNUExLjUsMS41IDAgMCwwIDE4LjUsMy41QzE4LjUsMi41IDE3LDAuOCAxNywwLjhDMTcsMC44IDE1LjUsMi41IDE1LjUsMy41QTEuNSwxLjUgMCAwLDAgMTcsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJXaW5kc2hpZWxkID0gXCJNMjIuNjMgMTUuNUwyMC4yMSA1Ljg1QTEgMSAwIDAgMCAxOS4xNCA1LjFDMTcuOCA1LjI0IDE0LjE0IDUuNSAxMiA1LjVTNi4yIDUuMjQgNC44NiA1LjFBMSAxIDAgMCAwIDMuNzkgNS44NUwxLjM3IDE1LjVBMS41IDEuNSAwIDAgMCAyLjU1IDE3LjM2QTYxLjUgNjEuNSAwIDAgMCAxMiAxOEE2MS41IDYxLjUgMCAwIDAgMjEuNDUgMTcuMzZBMS41IDEuNSAwIDAgMCAyMi42MyAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcldpbmRzaGllbGRPdXRsaW5lID0gXCJNMjIuNjMgMTUuNUwyMC4yMSA1Ljg1QTEgMSAwIDAgMCAxOS4xNCA1LjFDMTcuOCA1LjI0IDE0LjE0IDUuNSAxMiA1LjVTNi4yIDUuMjQgNC44NiA1LjFBMSAxIDAgMCAwIDMuNzkgNS44NUwxLjM3IDE1LjVBMS41IDEuNSAwIDAgMCAyLjU1IDE3LjM2QTYxLjUgNjEuNSAwIDAgMCAxMiAxOEE2MS41IDYxLjUgMCAwIDAgMjEuNDUgMTcuMzZBMS41IDEuNSAwIDAgMCAyMi42MyAxNS41TTEyIDE2QTYzLjMzIDYzLjMzIDAgMCAxIDMuNDQgMTUuNUw1LjUgNy4xOEM3IDcuMzIgMTAuMTYgNy41IDEyIDcuNVMxNyA3LjMyIDE4LjUgNy4xOEwyMC41NiAxNS41QTYzLjMzIDYzLjMzIDAgMCAxIDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmFiaW5lciA9IFwiTTggMTcuNUM4IDE4LjMzIDcuMzMgMTkgNi41IDE5UzUgMTguMzMgNSAxNy41IDUuNjcgMTYgNi41IDE2IDggMTYuNjcgOCAxNy41TTE4IDUuNTlDMTcuNzkgMy41NCAxNi4xOCAyIDE0LjI0IDJIOC44OEM2Ljk1IDIgNS4zNiAzLjUgNS4xNSA1LjUzTDUgNi41OUM0LjkyIDcuMzQgNS41IDggNi4yNCA4QzYuODcgOCA3LjM5IDcuNTMgNy40NyA2LjkxTDcuNjEgNS44MkM3LjY4IDUuMDcgOC4yMyA0LjUgOC44OCA0LjVIMTQuMjRDMTQuODkgNC41IDE1LjQ0IDUuMDcgMTUuNSA1LjgyTDE2LjUgMTYuODhDMTYuNTkgMTcuNzQgMTYgMTguNSAxNS4yNSAxOC41TDEwLjA0IDE3LjgyQzkuOTUgMTguNzcgOS41IDE5LjYgOC44IDIwLjE4TDE0LjkzIDIxTDE1LjA5IDIxSDE1LjI1QzE2LjI3IDIxIDE3LjI2IDIwLjU2IDE3Ljk2IDE5Ljc4QzE4LjcxIDE4Ljk0IDE5LjA5IDE3LjggMTkgMTYuNjVMMTggNS41OU0xMS42NiA3Ljk0QzExLjA4IDcuNTcgMTAuMzEgNy43NSA5Ljk0IDguMzRMNi4zOSAxNEM2LjQzIDE0IDYuNDYgMTQgNi41IDE0QzcuMzggMTQgOC4xOCAxNC4zNCA4LjggMTQuODhMMTIuMDYgOS42NkMxMi40MyA5LjA4IDEyLjI1IDguMzEgMTEuNjYgNy45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJhdmFuID0gXCJNNSw3QTIsMiAwIDAsMCAzLDlWMTVBMiwyIDAgMCwwIDUsMTdIN0EzLDMgMCAwLDAgMTAsMjBBMywzIDAgMCwwIDEzLDE3SDIxVjE1SDE5VjlBMiwyIDAgMCwwIDE3LDdINU01LDlIMTBWMTJINVY5TTEzLDlIMTdWMTJIMTNWOU0xMCwxNkExLDEgMCAwLDEgMTEsMTdBMSwxIDAgMCwxIDEwLDE4QTEsMSAwIDAsMSA5LDE3QTEsMSAwIDAsMSAxMCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlscyA9IFwiTTIsM0gyMkMyMy4wNSwzIDI0LDMuOTUgMjQsNVYxOUMyNCwyMC4wNSAyMy4wNSwyMSAyMiwyMUgyQzAuOTUsMjEgMCwyMC4wNSAwLDE5VjVDMCwzLjk1IDAuOTUsMyAyLDNNMTQsNlY3SDIyVjZIMTRNMTQsOFY5SDIxLjVMMjIsOVY4SDE0TTE0LDEwVjExSDIxVjEwSDE0TTgsMTMuOTFDNiwxMy45MSAyLDE1IDIsMTdWMThIMTRWMTdDMTQsMTUgMTAsMTMuOTEgOCwxMy45MU04LDZBMywzIDAgMCwwIDUsOUEzLDMgMCAwLDAgOCwxMkEzLDMgMCAwLDAgMTEsOUEzLDMgMCAwLDAgOCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlsc091dGxpbmUgPSBcIk0yMiwzSDJDMC45MSwzLjA0IDAuMDQsMy45MSAwLDVWMTlDMC4wNCwyMC4wOSAwLjkxLDIwLjk2IDIsMjFIMjJDMjMuMDksMjAuOTYgMjMuOTYsMjAuMDkgMjQsMTlWNUMyMy45NiwzLjkxIDIzLjA5LDMuMDQgMjIsM00yMiwxOUgyVjVIMjJWMTlNMTQsMTdWMTUuNzVDMTQsMTQuMDkgMTAuNjYsMTMuMjUgOSwxMy4yNUM3LjM0LDEzLjI1IDQsMTQuMDkgNCwxNS43NVYxN0gxNE05LDdBMi41LDIuNSAwIDAsMCA2LjUsOS41QTIuNSwyLjUgMCAwLDAgOSwxMkEyLjUsMi41IDAgMCwwIDExLjUsOS41QTIuNSwyLjUgMCAwLDAgOSw3TTE0LDdWOEgyMFY3SDE0TTE0LDlWMTBIMjBWOUgxNE0xNCwxMVYxMkgxOFYxMUgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlsc1N0YXIgPSBcIk0yMCAyMi4wOUwyMi40NSAyMy41OEwyMS44IDIwLjc3TDI0IDE4Ljg5TDIxLjExIDE4LjY0TDIwIDE2TDE4Ljg3IDE4LjY0TDE2IDE4Ljg5TDE4LjE4IDIwLjc3TDE3LjUgMjMuNThMMjAgMjIuMDlNMTQuMDggMjFIMkMuOTUgMjEgMCAyMC4wNSAwIDE5VjVDMCAzLjk1IC45NSAzIDIgM0gyMkMyMy4wNSAzIDI0IDMuOTUgMjQgNVYxNS41M0MyMi45NCAxNC41OCAyMS41NCAxNCAyMCAxNEMxNi42OSAxNCAxNCAxNi42OSAxNCAyMEMxNCAyMC4zNCAxNC4wMyAyMC42OCAxNC4wOCAyMU04IDEzLjkxQzYgMTMuOTEgMiAxNSAyIDE3VjE4SDE0VjE3QzE0IDE1IDEwIDEzLjkxIDggMTMuOTFNOCA2QzYuMzUgNiA1IDcuMzUgNSA5QzUgMTAuNjUgNi4zNSAxMiA4IDEyQzkuNjUgMTIgMTEgMTAuNjUgMTEgOUMxMSA3LjM1IDkuNjUgNiA4IDZNMjEgMTBIMTRWMTFIMjFWMTBNMjIgOEgxNFY5SDIyVjhNMjIgNkgxNFY3SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZEFjY291bnREZXRhaWxzU3Rhck91dGxpbmUgPSBcIk0yMCAyMi4wOUwyMi40NSAyMy41OEwyMS44IDIwLjc3TDI0IDE4Ljg5TDIxLjExIDE4LjY0TDIwIDE2TDE4Ljg3IDE4LjY0TDE2IDE4Ljg5TDE4LjE4IDIwLjc3TDE3LjUgMjMuNThMMjAgMjIuMDlNMTQuMDggMjFIMkMuOTEgMjAuOTYgLjA0IDIwLjA5IDAgMTlWNUMuMDQgMy45MSAuOTEgMy4wNCAyIDNIMjJDMjMuMDkgMy4wNCAyMy45NiAzLjkxIDI0IDVWMTUuNTNDMjMuNDIgMTUgMjIuNzUgMTQuNjEgMjIgMTQuMzRWNUgyVjE5SDE0LjA4QzE0LjAzIDE5LjMzIDE0IDE5LjY2IDE0IDIwQzE0IDIwLjM0IDE0LjAzIDIwLjY4IDE0LjA4IDIxTTE0IDE3SDRWMTUuNzVDNCAxNC4wOSA3LjM0IDEzLjI1IDkgMTMuMjVDMTAuNjYgMTMuMjUgMTQgMTQuMDkgMTQgMTUuNzVWMTdNMTQgMTFIMThWMTJIMTRWMTFNOSA3QzcuNjMgNyA2LjUgOC4xMyA2LjUgOS41QzYuNSAxMC44NyA3LjYzIDEyIDkgMTJDMTAuMzcgMTIgMTEuNSAxMC44NyAxMS41IDkuNUMxMS41IDguMTMgMTAuMzcgNyA5IDdNMTQgOUgyMFYxMEgxNFY5TTE0IDdIMjBWOEgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50TWFpbCA9IFwiTTIxLDhWN0wxOCw5TDE1LDdWOEwxOCwxME0yMiwzSDJBMiwyIDAgMCwwIDAsNVYxOUEyLDIgMCAwLDAgMiwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM004LDZBMywzIDAgMCwxIDExLDlBMywzIDAgMCwxIDgsMTJBMywzIDAgMCwxIDUsOUEzLDMgMCAwLDEgOCw2TTE0LDE4SDJWMTdDMiwxNSA2LDEzLjkgOCwxMy45QzEwLDEzLjkgMTQsMTUgMTQsMTdNMjIsMTJIMTRWNkgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50TWFpbE91dGxpbmUgPSBcIk0yMiwzSDJBMiwyIDAgMCwwIDAsNVYxOUEyLDIgMCAwLDAgMiwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM00yMiwxOUgyVjVIMjJWMTlNMjEsNkgxNFYxMUgyMVY2TTIwLDhMMTcuNSw5Ljc1TDE1LDhWN0wxNy41LDguNzVMMjAsN1Y4TTksMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksNkEzLDMgMCAwLDAgNiw5QTMsMyAwIDAsMCA5LDEyTTksOEExLDEgMCAwLDEgMTAsOUExLDEgMCAwLDEgOSwxMEExLDEgMCAwLDEgOCw5QTEsMSAwIDAsMSA5LDhNMTUsMTYuNTlDMTUsMTQuMDkgMTEuMDMsMTMgOSwxM0M2Ljk3LDEzIDMsMTQuMDkgMywxNi41OVYxOEgxNVYxNi41OU01LjUsMTZDNi4yMiwxNS41IDcuNywxNSA5LDE1QzEwLjMsMTUgMTEuNzcsMTUuNSAxMi41LDE2SDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQWNjb3VudFBob25lID0gXCJNMjIsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVBMiwyIDAgMCwwIDIyLDNNOCw2QTMsMyAwIDAsMSAxMSw5QTMsMyAwIDAsMSA4LDEyQTMsMyAwIDAsMSA1LDlBMywzIDAgMCwxIDgsNk0xNCwxOEgyVjE3QzIsMTUgNiwxMy45IDgsMTMuOUMxMCwxMy45IDE0LDE1IDE0LDE3VjE4TTE3Ljg1LDE0SDE5LjVMMjEsMTZMMTksMThDMTcuNywxNyAxNi43MywxNS42MSAxNi4yOCwxNEMxNi4xLDEzLjM2IDE2LDEyLjY5IDE2LDEyQzE2LDExLjMxIDE2LjEsMTAuNjQgMTYuMjgsMTBDMTYuNzMsOC4zOCAxNy43LDcgMTksNkwyMSw4TDE5LjUsMTBIMTcuODVDMTcuNjMsMTAuNjMgMTcuNSwxMS4zIDE3LjUsMTJDMTcuNSwxMi43IDE3LjYzLDEzLjM3IDE3Ljg1LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50UGhvbmVPdXRsaW5lID0gXCJNMjIsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVBMiwyIDAgMCwwIDIyLDNNMjIsMTlIMlY1SDIyVjE5TTE5LDE4TDIxLDE2TDE5LjUsMTRIMTcuODVDMTcuNjMsMTMuMzcgMTcuNSwxMi43IDE3LjUsMTJDMTcuNSwxMS4zIDE3LjYzLDEwLjYzIDE3Ljg1LDEwSDE5LjVMMjEsOEwxOSw2QzE3LjcsNyAxNi43Myw4LjM4IDE2LjI4LDEwQzE2LjEsMTAuNjQgMTYsMTEuMzEgMTYsMTJDMTYsMTIuNjkgMTYuMSwxMy4zNiAxNi4yOCwxNEMxNi43MywxNS42MSAxNy43LDE3IDE5LDE4TTksMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksNkEzLDMgMCAwLDAgNiw5QTMsMyAwIDAsMCA5LDEyTTksOEExLDEgMCAwLDEgMTAsOUExLDEgMCAwLDEgOSwxMEExLDEgMCAwLDEgOCw5QTEsMSAwIDAsMSA5LDhNMTUsMTYuNTlDMTUsMTQuMDkgMTEuMDMsMTMgOSwxM0M2Ljk3LDEzIDMsMTQuMDkgMywxNi41OVYxOEgxNVYxNi41OU01LjUsMTZDNi4yMiwxNS41IDcuNywxNSA5LDE1QzEwLjMsMTUgMTEuNzcsMTUuNSAxMi41LDE2SDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWQgPSBcIk0yMCw0QTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyME0xMSwxM0g5VjE1SDExVjEzTTE5LDEzSDEzVjE1SDE5VjEzTTcsOUg1VjExSDdWOU0xOSw5SDlWMTFIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRPZmYgPSBcIk0zLjM1LDMuNThMMjAuNjUsMjAuODdMMTkuMjMsMjIuMjlMMTYuOTQsMjBINEEyLDIgMCAwLDEgMiwxOFY2QzIsNS43MiAyLjA2LDUuNDYgMi4xNiw1LjIyTDEuMjMsNC4yOUwyLjY1LDIuODdMMy4zNSwzLjU4TTYuNiw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QzIyLDE4LjQgMjEuODgsMTguNzcgMjEuNjgsMTkuMDhMMTcuNiwxNUgyMFYxM0gxNS42TDEzLjYsMTFIMjBWOUgxMS42TDYuNiw0TTkuOTQsMTNIOVYxNUgxMVYxNC4wNkw5Ljk0LDEzTTUuOTQsOUg1VjExSDdWMTAuMDZMNS45NCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRCdWxsZXRlZE9mZk91dGxpbmUgPSBcIk0yMC41OSwyMC44N0wxOS4xNywyMi4yOUwxNi44OCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZDMiw1Ljc0IDIuMDUsNS41IDIuMTQsNS4yNkwxLjE3LDQuMjlMMi41OSwyLjg3TDMuNzMsNEwyMC41OSwyMC44N1YyMC44N002LjU0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThDMjIsMTguNDEgMjEuODcsMTguOCAyMS42NiwxOS4xMkwyMCwxNy40NlY2SDguNTRMNi41NCw0TTQsMThIMTQuODhMMTEuODgsMTVIMTBWMTMuMTJMNy44OCwxMUg2VjkuMTJMNCw3LjEyVjE4TTE4LDE1SDE3LjU0TDE1LjU0LDEzSDE4VjE1TTE4LDExSDEzLjU0TDExLjU0LDlIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZEJ1bGxldGVkT3V0bGluZSA9IFwiTTEyLDE1SDEwVjEzSDEyVjE1TTE4LDE1SDE0VjEzSDE4VjE1TTgsMTFINlY5SDhWMTFNMTgsMTFIMTBWOUgxOFYxMU0yMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBNNCw2VjE4SDIwVjZINFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRTZXR0aW5ncyA9IFwiTTksMjJWMjRIN1YyMkg5TTEzLDIyVjI0SDExVjIySDEzTTE3LDIyVjI0SDE1VjIySDE3TTIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyME0xMSwxM0g5VjE1SDExVjEzTTE5LDEzSDEzVjE1SDE5VjEzTTcsOUg1VjExSDdWOU0xOSw5SDlWMTFIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRTZXR0aW5nc091dGxpbmUgPSBcIk05LDIyVjI0SDdWMjJIOU0xMywyMlYyNEgxMVYyMkgxM00xNywyMlYyNEgxNVYyMkgxN00xMiwxNUgxMFYxM0gxMlYxNU0xOCwxNUgxNFYxM0gxOFYxNU04LDExSDZWOUg4VjExTTE4LDExSDEwVjlIMThWMTFNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZE1pbnVzID0gXCJNMjMgMThWMjBIMTVWMThIMjNNMTkgMTNDMjAuMDkgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVY2QzIyIDQuODkgMjEuMTEgNCAyMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRNaW51c091dGxpbmUgPSBcIk0yMyAxOFYyMEgxNVYxOEgyM00xMy4wOSAxOEg0VjZIMjBWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOUMxMyAxOC42NiAxMy4wNCAxOC4zMyAxMy4wOSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkT2ZmID0gXCJNMjEuODggMTguNjhMNy4yIDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhNMjAuNTYgMTkuOTFMMjAuNTcgMTkuOTFMMi4zOSAxLjczTDEuMTEgM0wyLjY1IDQuNTRDMi4yNSA0LjkgMiA1LjQyIDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDE4LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIwLjU2IDE5LjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRPZmZPdXRsaW5lID0gXCJNOS4yIDZMNy4yIDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhMMjAgMTYuOFY2SDkuMk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOC4xMSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDUuNDIgMi4yNSA0LjkgMi42NSA0LjU0TDEuMTEgM0wyLjM5IDEuNzNMNi42NiA2TDE4LjY1IDE4SDE4LjY2TDIwLjU3IDE5LjkxTDIwLjU2IDE5LjkxTDIyLjExIDIxLjQ2TTE2LjExIDE4TDQuMTEgNkg0VjE4SDE2LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRPdXRsaW5lID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFBsdXMgPSBcIk0xMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDIwQzIxLjExIDQgMjIgNC44OSAyMiA2VjEzLjgxQzIxLjEyIDEzLjMgMjAuMDkgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFBsdXNPdXRsaW5lID0gXCJNMjEgMTVWMThIMjRWMjBIMjFWMjNIMTlWMjBIMTZWMThIMTlWMTVIMjFNMTQgMThIM1Y2SDE5VjEzSDIxVjZDMjEgNC44OSAyMC4xMSA0IDE5IDRIM0MxLjkgNCAxIDQuODkgMSA2VjE4QzEgMTkuMTEgMS45IDIwIDMgMjBIMTRWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFJlbW92ZSA9IFwiTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TTE5IDEzQzIwLjA5IDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkUmVtb3ZlT3V0bGluZSA9IFwiTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TTEzLjA5IDE4SDRWNkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVY2QzIyIDQuODkgMjEuMTEgNCAyMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRTZWFyY2ggPSBcIk0xMS41IDlDMTAuMTIgOSA5IDEwLjEyIDkgMTEuNVMxMC4xMiAxNCAxMS41IDE0IDE0IDEyLjg4IDE0IDExLjUgMTIuODggOSAxMS41IDlNMjAgNEg0QzIuOSA0IDIgNC45IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZDMjIgNC45IDIxLjEgNCAyMCA0TTE2Ljc5IDE4LjIxTDEzLjg4IDE1LjNDMTMuMTkgMTUuNzQgMTIuMzcgMTYgMTEuNSAxNkM5IDE2IDcgMTQgNyAxMS41UzkgNyAxMS41IDcgMTYgOSAxNiAxMS41QzE2IDEyLjM4IDE1Ljc0IDEzLjE5IDE1LjMgMTMuODlMMTguMjEgMTYuNzlMMTYuNzkgMTguMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFNlYXJjaE91dGxpbmUgPSBcIk0xMS41IDE2QzEyLjM3IDE2IDEzLjE5IDE1Ljc0IDEzLjg4IDE1LjNMMTYuMzIgMTcuNzRMMTcuNzQgMTYuMzJMMTUuMyAxMy44OUMxNS43NCAxMy4xOSAxNiAxMi4zOCAxNiAxMS41QzE2IDkgMTQgNyAxMS41IDdTNyA5IDcgMTEuNSA5IDE2IDExLjUgMTZNMTEuNSA5QzEyLjg4IDkgMTQgMTAuMTIgMTQgMTEuNVMxMi44OCAxNCAxMS41IDE0IDkgMTIuODggOSAxMS41IDEwLjEyIDkgMTEuNSA5TTIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY2QzIyIDQuOSAyMS4xIDQgMjAgNE0yMCAxOEg0VjZIMjBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFRleHQgPSBcIk0yMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBNNSwxM1YxNUgxNlYxM0g1TTUsOVYxMUgxOVY5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFRleHRPdXRsaW5lID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRNNiw5SDE4VjExSDZWOU02LDEzSDE2VjE1SDZWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHMgPSBcIk0yMS40Nyw0LjM1TDIwLjEzLDMuNzlWMTIuODJMMjIuNTYsNi45NkMyMi45Nyw1Ljk0IDIyLjUsNC43NyAyMS40Nyw0LjM1TTEuOTcsOC4wNUw2LjkzLDIwQzcuMjQsMjAuNzcgNy45NywyMS4yNCA4Ljc0LDIxLjI2QzksMjEuMjYgOS4yNywyMS4yMSA5LjUzLDIxLjFMMTYuOSwxOC4wNUMxNy42NSwxNy43NCAxOC4xMSwxNyAxOC4xMywxNi4yNkMxOC4xNCwxNiAxOC4wOSwxNS43MSAxOCwxNS40NUwxMywzLjVDMTIuNzEsMi43MyAxMS45NywyLjI2IDExLjE5LDIuMjVDMTAuOTMsMi4yNSAxMC42NywyLjMxIDEwLjQyLDIuNEwzLjA2LDUuNDVDMi4wNCw1Ljg3IDEuNTUsNy4wNCAxLjk3LDguMDVNMTguMTIsNC4yNUEyLDIgMCAwLDAgMTYuMTIsMi4yNUgxNC42N0wxOC4xMiwxMC41OVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzQ2x1YiA9IFwiTTEyLDJDMTQuMywyIDE2LjMsNCAxNi4zLDYuMkMxNi4yMSw4Ljc3IDE0LjM0LDkuODMgMTQuMDQsMTBDMTUuMDQsOS41IDE2LjUsOS41IDE2LjUsOS41QzE5LDkuNSAyMSwxMS4zIDIxLDEzLjhDMjEsMTYuMyAxOSwxOCAxNi41LDE4QzE2LjUsMTggMTUsMTggMTMsMTdDMTMsMTcgMTIuNywxOSAxNSwyMkg5QzExLjMsMTkgMTEsMTcgMTEsMTdDOSwxOCA3LjUsMTggNy41LDE4QzUsMTggMywxNi4zIDMsMTMuOEMzLDExLjMgNSw5LjUgNy41LDkuNUM3LjUsOS41IDguOTYsOS41IDkuOTYsMTBDOS42Niw5LjgzIDcuNzksOC43NyA3LjcsNi4yQzcuNyw0IDkuNywyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNEaWFtb25kID0gXCJNMTksMTJMMTIsMjJMNSwxMkwxMiwyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNEaWFtb25kT3V0bGluZSA9IFwiTTEyIDJMNSAxMkwxMiAyMkwxOSAxMk03LjQ0IDEyTDEyIDUuNUwxNi41NiAxMkwxMiAxOC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNIZWFydCA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzQzE5LjU4LDMgMjIsNS40MSAyMiw4LjVDMjIsMTIuMjcgMTguNiwxNS4zNiAxMy40NSwyMC4wM0wxMiwyMS4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkc091dGxpbmUgPSBcIk0xMS4xOSwyLjI1QzEwLjkzLDIuMjUgMTAuNjcsMi4zMSAxMC40MiwyLjRMMy4wNiw1LjQ1QzIuMDQsNS44NyAxLjU1LDcuMDQgMS45Nyw4LjA1TDYuOTMsMjBDNy4yNCwyMC43NyA3Ljk3LDIxLjIzIDguNzQsMjEuMjVDOSwyMS4yNSA5LjI3LDIxLjIyIDkuNTMsMjEuMUwxNi45LDE4LjA1QzE3LjY1LDE3Ljc0IDE4LjExLDE3IDE4LjEzLDE2LjI1QzE4LjE0LDE2IDE4LjA5LDE1LjcxIDE4LDE1LjQ1TDEzLDMuNUMxMi43MSwyLjczIDExLjk3LDIuMjYgMTEuMTksMi4yNU0xNC42NywyLjI1TDE4LjEyLDEwLjZWNC4yNUEyLDIgMCAwLDAgMTYuMTIsMi4yNU0yMC4xMywzLjc5VjEyLjgyTDIyLjU2LDYuOTZDMjIuOTcsNS45NCAyMi41LDQuNzggMjEuNDcsNC4zNk0xMS4xOSw0LjIyTDE2LjE3LDE2LjI0TDguNzgsMTkuM0wzLjgsNy4yOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzUGxheWluZ091dGxpbmUgPSBcIk0xMS4xOSwyLjI1QzExLjk3LDIuMjYgMTIuNzEsMi43MyAxMywzLjVMMTgsMTUuNDVDMTguMDksMTUuNzEgMTguMTQsMTYgMTguMTMsMTYuMjVDMTguMTEsMTcgMTcuNjUsMTcuNzQgMTYuOSwxOC4wNUw5LjUzLDIxLjFDOS4yNywyMS4yMiA5LDIxLjI1IDguNzQsMjEuMjVDNy45NywyMS4yMyA3LjI0LDIwLjc3IDYuOTMsMjBMMS45Nyw4LjA1QzEuNTUsNy4wNCAyLjA0LDUuODcgMy4wNiw1LjQ1TDEwLjQyLDIuNEMxMC42NywyLjMxIDEwLjkzLDIuMjUgMTEuMTksMi4yNU0xNC42NywyLjI1SDE2LjEyQTIsMiAwIDAsMSAxOC4xMiw0LjI1VjEwLjZMMTQuNjcsMi4yNU0yMC4xMywzLjc5TDIxLjQ3LDQuMzZDMjIuNSw0Ljc4IDIyLjk3LDUuOTQgMjIuNTYsNi45NkwyMC4xMywxMi44MlYzLjc5TTExLjE5LDQuMjJMMy44LDcuMjlMOC43NywxOS4zTDE2LjE3LDE2LjI0TDExLjE5LDQuMjJNOC42NSw4LjU0TDExLjg4LDEwLjk1TDExLjQ0LDE0Ljk2TDguMjEsMTIuNTRMOC42NSw4LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzU3BhZGUgPSBcIk0xMiwyQzksNyA0LDkgNCwxNEM0LDE2IDYsMTggOCwxOEM5LDE4IDEwLDE4IDExLDE3QzExLDE3IDExLjMyLDE5IDksMjJIMTVDMTMsMTkgMTMsMTcgMTMsMTdDMTQsMTggMTUsMTggMTYsMThDMTgsMTggMjAsMTYgMjAsMTRDMjAsOSAxNSw3IDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNWYXJpYW50ID0gXCJNNSwySDE5QTEsMSAwIDAsMSAyMCwzVjEzQTEsMSAwIDAsMSAxOSwxNEg1QTEsMSAwIDAsMSA0LDEzVjNBMSwxIDAgMCwxIDUsMk02LDRWMTJIMThWNEg2TTIwLDE3QTEsMSAwIDAsMSAxOSwxOEg1QTEsMSAwIDAsMSA0LDE3VjE2SDIwVjE3TTIwLDIxQTEsMSAwIDAsMSAxOSwyMkg1QTEsMSAwIDAsMSA0LDIxVjIwSDIwVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnJvdCA9IFwiTTE2LDEwTDE1LjgsMTFIMTMuNUEwLjUsMC41IDAgMCwwIDEzLDExLjVBMC41LDAuNSAwIDAsMCAxMy41LDEySDE1LjZMMTQuNiwxN0gxMi41QTAuNSwwLjUgMCAwLDAgMTIsMTcuNUEwLjUsMC41IDAgMCwwIDEyLjUsMThIMTQuNEwxNCwyMEEyLDIgMCAwLDEgMTIsMjJBMiwyIDAgMCwxIDEwLDIwTDksMTVIMTAuNUEwLjUsMC41IDAgMCwwIDExLDE0LjVBMC41LDAuNSAwIDAsMCAxMC41LDE0SDguOEw4LDEwQzgsOC44IDguOTMsNy43NyAxMC4yOSw3LjI5TDguOSw1LjI4QzguNTksNC44MiA4LjcsNC4yIDkuMTYsMy44OUM5LjYxLDMuNTcgMTAuMjMsMy42OSAxMC41NSw0LjE0TDExLDQuOFYzQTEsMSAwIDAsMSAxMiwyQTEsMSAwIDAsMSAxMywzVjUuMjhMMTQuNSwzLjU0QzE0LjgzLDMuMTIgMTUuNDcsMy4wNyAxNS44OSwzLjQzQzE2LjMxLDMuNzggMTYuMzYsNC40MSAxNiw0Ljg0TDEzLjg3LDcuMzVDMTUuMTQsNy44NSAxNiw4Ljg1IDE2LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnQgPSBcIk0xNywxOEMxNS44OSwxOCAxNSwxOC44OSAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQzE5LDE4Ljg5IDE4LjEsMTggMTcsMThNMSwyVjRIM0w2LjYsMTEuNTlMNS4yNCwxNC4wNEM1LjA5LDE0LjMyIDUsMTQuNjUgNSwxNUEyLDIgMCAwLDAgNywxN0gxOVYxNUg3LjQyQTAuMjUsMC4yNSAwIDAsMSA3LjE3LDE0Ljc1QzcuMTcsMTQuNyA3LjE4LDE0LjY2IDcuMiwxNC42M0w4LjEsMTNIMTUuNTVDMTYuMywxMyAxNi45NiwxMi41OCAxNy4zLDExLjk3TDIwLjg4LDUuNUMyMC45NSw1LjM0IDIxLDUuMTcgMjEsNUExLDEgMCAwLDAgMjAsNEg1LjIxTDQuMjcsMk03LDE4QzUuODksMTggNSwxOC44OSA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQzksMTguODkgOC4xLDE4IDcsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydEFycm93RG93biA9IFwiTTEwLDBWNEg4TDEyLDhMMTYsNEgxNFYwTTEsMlY0SDNMNi42LDExLjU5TDUuMjUsMTQuMDRDNS4wOSwxNC4zMiA1LDE0LjY1IDUsMTVBMiwyIDAgMCwwIDcsMTdIMTlWMTVINy40MkM3LjI5LDE1IDcuMTcsMTQuODkgNy4xNywxNC43NUw3LjIsMTQuNjNMOC4xLDEzSDE1LjU1QzE2LjMsMTMgMTYuOTYsMTIuNTkgMTcuMywxMS45N0wyMS4xNiw0Ljk2TDE5LjQyLDRIMTkuNDFMMTguMzEsNkwxNS41NSwxMUg4LjUzTDguNCwxMC43M0w2LjE2LDZMNS4yMSw0TDQuMjcsMk03LDE4QTIsMiAwIDAsMCA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQTIsMiAwIDAsMCA3LDE4TTE3LDE4QTIsMiAwIDAsMCAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQTIsMiAwIDAsMCAxNywxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0QXJyb3dSaWdodCA9IFwiTTksMjBBMiwyIDAgMCwxIDcsMjJBMiwyIDAgMCwxIDUsMjBBMiwyIDAgMCwxIDcsMThBMiwyIDAgMCwxIDksMjBNMTcsMThBMiwyIDAgMCwwIDE1LDIwQTIsMiAwIDAsMCAxNywyMkEyLDIgMCAwLDAgMTksMjBBMiwyIDAgMCwwIDE3LDE4TTcuMiwxNC42M0M3LjE5LDE0LjY3IDcuMTksMTQuNzEgNy4yLDE0Ljc1QTAuMjUsMC4yNSAwIDAsMCA3LjQ1LDE1SDE5VjE3SDdBMiwyIDAgMCwxIDUsMTVDNSwxNC42NSA1LjA3LDE0LjMxIDUuMjQsMTRMNi42LDExLjU5TDMsNEgxVjJINC4yN0w1LjIxLDRIMjBBMSwxIDAgMCwxIDIxLDVDMjEsNS4xNyAyMC45NSw1LjM0IDIwLjg4LDUuNUwxNy4zLDEyQzE2Ljk0LDEyLjYyIDE2LjI3LDEzIDE1LjU1LDEzSDguMUw3LjIsMTQuNjNNOSw5LjVIMTNWMTEuNUwxNiw4LjVMMTMsNS41VjcuNUg5VjkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0QXJyb3dVcCA9IFwiTTEyLDBMOCw0SDEwVjhIMTRWNEgxNk0xLDJWNEgzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE5VjE1SDcuNDJDNy4yOSwxNSA3LjE3LDE0Ljg5IDcuMTcsMTQuNzVMNy4yLDE0LjYzTDguMSwxM0gxNS41NUMxNi4zLDEzIDE2Ljk2LDEyLjU5IDE3LjMsMTEuOTdMMjEuMTYsNC45NkwxOS40Miw0SDE5LjQxTDE4LjMxLDZMMTUuNTUsMTFIOC41M0w4LjQsMTAuNzNMNi4xNiw2TDUuMjEsNEw0LjI3LDJNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOE0xNywxOEEyLDIgMCAwLDAgMTUsMjBBMiwyIDAgMCwwIDE3LDIyQTIsMiAwIDAsMCAxOSwyMEEyLDIgMCAwLDAgMTcsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydENoZWNrID0gXCJNOSAyMEM5IDIxLjExIDguMTEgMjIgNyAyMlM1IDIxLjExIDUgMjAgNS45IDE4IDcgMTggOSAxOC45IDkgMjBNMTcgMThDMTUuOSAxOCAxNSAxOC45IDE1IDIwUzE1LjkgMjIgMTcgMjIgMTkgMjEuMTEgMTkgMjAgMTguMTEgMTggMTcgMThNNy4xNyAxNC43NUw3LjIgMTQuNjNMOC4xIDEzSDE1LjU1QzE2LjMgMTMgMTYuOTYgMTIuNTkgMTcuMyAxMS45N0wyMS4xNiA0Ljk2TDE5LjQyIDRIMTkuNDFMMTguMzEgNkwxNS41NSAxMUg4LjUzTDguNCAxMC43M0w2LjE2IDZMNS4yMSA0TDQuMjcgMkgxVjRIM0w2LjYgMTEuNTlMNS4yNSAxNC4wNEM1LjA5IDE0LjMyIDUgMTQuNjUgNSAxNUM1IDE2LjExIDUuOSAxNyA3IDE3SDE5VjE1SDcuNDJDNy4yOSAxNSA3LjE3IDE0Ljg5IDcuMTcgMTQuNzVNMTggMi43NkwxNi41OSAxLjM0TDExLjc1IDYuMThMOS4xNiAzLjU5TDcuNzUgNUwxMS43NSA5TDE4IDIuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydE1pbnVzID0gXCJNMTYsNlY0SDhWNk03LDE4QTIsMiAwIDAsMCA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQTIsMiAwIDAsMCA3LDE4TTE3LDE4QTIsMiAwIDAsMCAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQTIsMiAwIDAsMCAxNywxOE03LjE3LDE0Ljc1TDcuMiwxNC42M0w4LjEsMTNIMTUuNTVDMTYuMywxMyAxNi45NiwxMi41OSAxNy4zLDExLjk3TDIxLjE2LDQuOTZMMTkuNDIsNEgxOS40MUwxOC4zMSw2TDE1LjU1LDExSDguNTNMOC40LDEwLjczTDYuMTYsNkw1LjIxLDRMNC4yNywySDFWNEgzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE5VjE1SDcuNDJDNy4yOSwxNSA3LjE3LDE0Ljg5IDcuMTcsMTQuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydE9mZiA9IFwiTTIyLjczLDIyLjczTDEuMjcsMS4yN0wwLDIuNTRMNC4zOSw2LjkzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE0LjQ2TDE1Ljg0LDE4LjM4QzE1LjM0LDE4Ljc0IDE1LDE5LjMzIDE1LDIwQTIsMiAwIDAsMCAxNywyMkMxNy42NywyMiAxOC4yNiwyMS42NyAxOC42MiwyMS4xNkwyMS40NiwyNEwyMi43MywyMi43M003LjQyLDE1QTAuMjUsMC4yNSAwIDAsMSA3LjE3LDE0Ljc1TDcuMiwxNC42M0w4LjEsMTNIMTAuNDZMMTIuNDYsMTVINy40Mk0xNS41NSwxM0MxNi4zLDEzIDE2Ljk2LDEyLjU5IDE3LjMsMTEuOTdMMjAuODgsNS41QzIwLjk2LDUuMzQgMjEsNS4xNyAyMSw1QTEsMSAwIDAsMCAyMCw0SDYuNTRMMTUuNTUsMTNNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0T3V0bGluZSA9IFwiTTE3LDE4QTIsMiAwIDAsMSAxOSwyMEEyLDIgMCAwLDEgMTcsMjJDMTUuODksMjIgMTUsMjEuMSAxNSwyMEMxNSwxOC44OSAxNS44OSwxOCAxNywxOE0xLDJINC4yN0w1LjIxLDRIMjBBMSwxIDAgMCwxIDIxLDVDMjEsNS4xNyAyMC45NSw1LjM0IDIwLjg4LDUuNUwxNy4zLDExLjk3QzE2Ljk2LDEyLjU4IDE2LjMsMTMgMTUuNTUsMTNIOC4xTDcuMiwxNC42M0w3LjE3LDE0Ljc1QTAuMjUsMC4yNSAwIDAsMCA3LjQyLDE1SDE5VjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNUM1LDE0LjY1IDUuMDksMTQuMzIgNS4yNCwxNC4wNEw2LjYsMTEuNTlMMyw0SDFWMk03LDE4QTIsMiAwIDAsMSA5LDIwQTIsMiAwIDAsMSA3LDIyQzUuODksMjIgNSwyMS4xIDUsMjBDNSwxOC44OSA1Ljg5LDE4IDcsMThNMTYsMTFMMTguNzgsNkg2LjE0TDguNSwxMUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0UGx1cyA9IFwiTTExLDlIMTNWNkgxNlY0SDEzVjFIMTFWNEg4VjZIMTFNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOE0xNywxOEEyLDIgMCAwLDAgMTUsMjBBMiwyIDAgMCwwIDE3LDIyQTIsMiAwIDAsMCAxOSwyMEEyLDIgMCAwLDAgMTcsMThNNy4xNywxNC43NUw3LjIsMTQuNjNMOC4xLDEzSDE1LjU1QzE2LjMsMTMgMTYuOTYsMTIuNTkgMTcuMywxMS45N0wyMS4xNiw0Ljk2TDE5LjQyLDRIMTkuNDFMMTguMzEsNkwxNS41NSwxMUg4LjUzTDguNCwxMC43M0w2LjE2LDZMNS4yMSw0TDQuMjcsMkgxVjRIM0w2LjYsMTEuNTlMNS4yNSwxNC4wNEM1LjA5LDE0LjMyIDUsMTQuNjUgNSwxNUEyLDIgMCAwLDAgNywxN0gxOVYxNUg3LjQyQzcuMjksMTUgNy4xNywxNC44OSA3LjE3LDE0Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnRSZW1vdmUgPSBcIk0xNC4xMiw4LjUzTDEyLDYuNDFMOS44OCw4LjU0TDguNDYsNy4xMkwxMC41OSw1TDguNDcsMi44OEw5Ljg4LDEuNDdMMTIsMy41OUwxNC4xMiwxLjQ2TDE1LjU0LDIuODhMMTMuNDEsNUwxNS41Myw3LjEyTDE0LjEyLDguNTNNNywxOEEyLDIgMCAwLDEgOSwyMEEyLDIgMCAwLDEgNywyMkEyLDIgMCAwLDEgNSwyMEEyLDIgMCAwLDEgNywxOE0xNywxOEEyLDIgMCAwLDEgMTksMjBBMiwyIDAgMCwxIDE3LDIyQTIsMiAwIDAsMSAxNSwyMEEyLDIgMCAwLDEgMTcsMThNNy4xNywxNC43NUEwLjI1LDAuMjUgMCAwLDAgNy40MiwxNUgxOVYxN0g3QTIsMiAwIDAsMSA1LDE1QzUsMTQuNjUgNS4wOSwxNC4zMiA1LjI1LDE0LjA0TDYuNiwxMS41OUwzLDRIMVYySDQuMjdMNS4yMSw0TDYuMTYsNkw4LjQsMTAuNzNMOC41MywxMUgxNS41NUwxOC4zMSw2TDE5LjQxLDRIMTkuNDJMMjEuMTYsNC45NkwxNy4zLDExLjk3QzE2Ljk2LDEyLjU5IDE2LjMsMTMgMTUuNTUsMTNIOC4xTDcuMiwxNC42M0w3LjE3LDE0Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnRWYXJpYW50ID0gXCJNMTkgMjBDMTkgMjEuMTEgMTguMTEgMjIgMTcgMjJDMTUuODkgMjIgMTUgMjEuMSAxNSAyMEMxNSAxOC44OSAxNS44OSAxOCAxNyAxOEMxOC4xMSAxOCAxOSAxOC45IDE5IDIwTTcgMThDNS44OSAxOCA1IDE4Ljg5IDUgMjBDNSAyMS4xIDUuODkgMjIgNyAyMkM4LjExIDIyIDkgMjEuMTEgOSAyMFM4LjExIDE4IDcgMThNNy4yIDE0LjYzTDcuMTcgMTQuNzVDNy4xNyAxNC44OSA3LjI4IDE1IDcuNDIgMTVIMTlWMTdIN0M1Ljg5IDE3IDUgMTYuMSA1IDE1QzUgMTQuNjUgNS4wOSAxNC4zMiA1LjI0IDE0LjA0TDYuNiAxMS41OUwzIDRIMVYySDQuMjdMNS4yMSA0SDIwQzIwLjU1IDQgMjEgNC40NSAyMSA1QzIxIDUuMTcgMjAuOTUgNS4zNCAyMC44OCA1LjVMMTcuMyAxMS45N0MxNi45NiAxMi41OCAxNi4zIDEzIDE1LjU1IDEzSDguMUw3LjIgMTQuNjNNOC41IDExSDEwVjlINy41Nkw4LjUgMTFNMTEgOVYxMUgxNFY5SDExTTE0IDhWNkgxMVY4SDE0TTE3LjExIDlIMTVWMTFIMTZMMTcuMTEgOU0xOC43OCA2SDE1VjhIMTcuNjdMMTguNzggNk02LjE0IDZMNy4wOCA4SDEwVjZINi4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNlU2Vuc2l0aXZlQWx0ID0gXCJNMjAsMTRDMjAsMTIuNSAxOS41LDEyIDE4LDEySDE2VjExQzE2LDEwIDE2LDEwIDE0LDEwVjE1LjRMMTQsMTlIMTZMMTgsMTlDMTkuNSwxOSAyMCwxOC40NyAyMCwxN1YxNE0xMiwxMkMxMiwxMC41IDExLjQ3LDEwIDEwLDEwSDZDNC41LDEwIDQsMTAuNSA0LDEyVjE5SDZWMTZIMTBWMTlIMTJWMTJNMTAsN0gxNFY1SDEwVjdNMjIsOVYyMEMyMiwyMS4xMSAyMS4xMSwyMiAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjlDMiw3Ljg5IDIuODksNyA0LDdIOFY1TDEwLDNIMTRMMTYsNVY3SDIwQTIsMiAwIDAsMSAyMiw5SDIyTTE2LDE3SDE4VjE0SDE2VjE3TTYsMTJIMTBWMTRINlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoID0gXCJNMyw2SDIxVjE4SDNWNk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNNyw4QTIsMiAwIDAsMSA1LDEwVjE0QTIsMiAwIDAsMSA3LDE2SDE3QTIsMiAwIDAsMSAxOSwxNFYxMEEyLDIgMCAwLDEgMTcsOEg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2gxMDAgPSBcIk0yLDVIMjJWMjBIMlY1TTIwLDE4VjdINFYxOEgyME0xNyw4QTIsMiAwIDAsMCAxOSwxMFYxNUEyLDIgMCAwLDAgMTcsMTdIN0EyLDIgMCAwLDAgNSwxNVYxMEEyLDIgMCAwLDAgNyw4SDE3TTE3LDEzVjEyQzE3LDEwLjkgMTYuMzMsMTAgMTUuNSwxMEMxNC42NywxMCAxNCwxMC45IDE0LDEyVjEzQzE0LDE0LjEgMTQuNjcsMTUgMTUuNSwxNUMxNi4zMywxNSAxNywxNC4xIDE3LDEzTTE1LjUsMTFBMC41LDAuNSAwIDAsMSAxNiwxMS41VjEzLjVBMC41LDAuNSAwIDAsMSAxNS41LDE0QTAuNSwwLjUgMCAwLDEgMTUsMTMuNVYxMS41QTAuNSwwLjUgMCAwLDEgMTUuNSwxMU0xMywxM1YxMkMxMywxMC45IDEyLjMzLDEwIDExLjUsMTBDMTAuNjcsMTAgMTAsMTAuOSAxMCwxMlYxM0MxMCwxNC4xIDEwLjY3LDE1IDExLjUsMTVDMTIuMzMsMTUgMTMsMTQuMSAxMywxM00xMS41LDExQTAuNSwwLjUgMCAwLDEgMTIsMTEuNVYxMy41QTAuNSwwLjUgMCAwLDEgMTEuNSwxNEEwLjUsMC41IDAgMCwxIDExLDEzLjVWMTEuNUEwLjUsMC41IDAgMCwxIDExLjUsMTFNOCwxNUg5VjEwSDhMNywxMC41VjExLjVMOCwxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoQ2hlY2sgPSBcIk0zIDZWMThIMTMuMzJDMTMuMSAxNy4zMyAxMyAxNi42NiAxMyAxNkg3QzcgMTQuOSA2LjExIDE0IDUgMTRWMTBDNi4xMSAxMCA3IDkuMTEgNyA4SDE3QzE3IDkuMTEgMTcuOSAxMCAxOSAxMFYxMC4wNkMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM00xMiA5QzEwLjMgOS4wMyA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNC45NCAxMiAxNUMxMi4zOCAxNSAxMi43NyAxNC45MiAxMy4xNCAxNC43N0MxMy40MSAxMy42NyAxMy44NiAxMi42MyAxNC45NyAxMS42MUMxNC44NSAxMC4yOCAxMy41OSA4Ljk3IDEyIDlNMjEuNjMgMTIuMjdMMTcuNzYgMTYuMTdMMTYuNDEgMTQuOEwxNSAxNi4yMkwxNy43NSAxOUwyMy4wMyAxMy42OEwyMS42MyAxMi4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoTG9jayA9IFwiTTIxLjggMTVDMjIuNCAxNSAyMyAxNS42IDIzIDE2LjNWMTkuOEMyMyAyMC40IDIyLjQgMjEgMjEuNyAyMUgxNi4yQzE1LjYgMjEgMTUgMjAuNCAxNSAxOS43VjE2LjJDMTUgMTUuNiAxNS42IDE1IDE2LjIgMTVWMTMuNUMxNi4yIDEyLjEgMTcuNiAxMSAxOSAxMUMyMC40IDExIDIxLjggMTIuMSAyMS44IDEzLjVWMTVNMjAuNSAxNVYxMy41QzIwLjUgMTIuNyAxOS44IDEyLjIgMTkgMTIuMkMxOC4yIDEyLjIgMTcuNSAxMi43IDE3LjUgMTMuNVYxNUgyMC41TTIgNkgyMFY5LjFMMTkgOUMxOC4xOCA5IDE3LjQxIDkuMiAxNi43MyA5LjU0QzE2LjI4IDkuMTggMTYgOC42MiAxNiA4SDZDNiA5LjExIDUuMTEgMTAgNCAxMFYxNEM1LjExIDE0IDYgMTQuOSA2IDE2SDEzLjA0TDEzIDE2LjVWMThIMlY2TTExIDlDMTIuNjYgOSAxNCAxMC4zNCAxNCAxMkMxNCAxMy42NiAxMi42NiAxNSAxMSAxNUM5LjM0IDE1IDggMTMuNjYgOCAxMkM4IDEwLjM0IDkuMzQgOSAxMSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hMb2NrT3BlbiA9IFwiTTIxLjggMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTMuNUMxNi4yIDEyLjEgMTcuNiAxMSAxOSAxMUMyMC40IDExIDIxLjggMTIuMSAyMS44IDEzLjVWMTRIMjAuNVYxMy41QzIwLjUgMTIuNyAxOS44IDEyLjIgMTkgMTIuMkMxOC4yIDEyLjIgMTcuNSAxMi43IDE3LjUgMTMuNVYxNkgyMS44TTIgNkgyMFY5LjFMMTkgOUMxOC4xOCA5IDE3LjQxIDkuMiAxNi43MyA5LjU0QzE2LjI4IDkuMTggMTYgOC42MiAxNiA4SDZDNiA5LjExIDUuMTEgMTAgNCAxMFYxNEM1LjExIDE0IDYgMTQuOSA2IDE2SDEzLjA0TDEzIDE2LjVWMThIMlY2TTExIDlDMTIuNjYgOSAxNCAxMC4zNCAxNCAxMkMxNCAxMy42NiAxMi42NiAxNSAxMSAxNUM5LjM0IDE1IDggMTMuNjYgOCAxMkM4IDEwLjM0IDkuMzQgOSAxMSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hNYXJrZXIgPSBcIk0xOC41LDE2LjhDMTcuOCwxNi44IDE3LjMsMTYuMiAxNy4zLDE1LjZDMTcuMywxNC45IDE3LjksMTQuNCAxOC41LDE0LjRDMTkuMSwxNC40IDE5LjcsMTUgMTkuNywxNS42QzE5LjgsMTYuMiAxOS4yLDE2LjggMTguNSwxNi44TTE4LjUsMTJDMTYuNiwxMiAxNSwxMy42IDE1LDE1LjVDMTUsMTguMSAxOC41LDIyIDE4LjUsMjJDMTguNSwyMiAyMiwxOC4xIDIyLDE1LjVDMjIsMTMuNiAyMC40LDEyIDE4LjUsMTJNMTQuOSwxMS4zQzE0LjYsMTAgMTMuNCw5IDEyLDlDMTAuMyw5IDksMTAuMyA5LDEyQzksMTMuNyAxMC4zLDE1IDEyLDE1QzEyLjQsMTUgMTIuNywxNC45IDEzLDE0LjhDMTMuMiwxMy40IDEzLjksMTIuMiAxNC45LDExLjNNMTMsMTZIN0EyLDIgMCAwLDAgNSwxNFYxMEEyLDIgMCAwLDAgNyw4SDE3QTIsMiAwIDAsMCAxOSwxMEMxOSwxMCAyMCwxMCAyMSwxMC42VjZIM1YxOEgxMy41QzEzLjMsMTcuMyAxMy4xLDE2LjcgMTMsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaE1pbnVzID0gXCJNMTUgMTVWMTdIMjNWMTVNMTQuOTcgMTEuNjFDMTQuODUgMTAuMjggMTMuNTkgOC45NyAxMiA5QzEwLjMgOS4wMyA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNC45NCAxMiAxNUMxMi4zOCAxNSAxMi43NyAxNC45MiAxMy4xNCAxNC43N0MxMy40MSAxMy42NyAxMy44NiAxMi42MyAxNC45NyAxMS42MU0xMyAxNkg3QzcgMTQuOSA2LjExIDE0IDUgMTRWMTBDNi4xMSAxMCA3IDkuMTEgNyA4SDE3QzE3IDkuMTEgMTcuOSAxMCAxOSAxMFYxMC4wNkMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM1YxOEgxMy4zMkMxMy4xIDE3LjMzIDEzIDE2LjY2IDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hNdWx0aXBsZSA9IFwiTTUsNkgyM1YxOEg1VjZNMTQsOUEzLDMgMCAwLDEgMTcsMTJBMywzIDAgMCwxIDE0LDE1QTMsMyAwIDAsMSAxMSwxMkEzLDMgMCAwLDEgMTQsOU05LDhBMiwyIDAgMCwxIDcsMTBWMTRBMiwyIDAgMCwxIDksMTZIMTlBMiwyIDAgMCwxIDIxLDE0VjEwQTIsMiAwIDAsMSAxOSw4SDlNMSwxMEgzVjIwSDE5VjIySDFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFBsdXMgPSBcIk0xNSAxNVYxN0gxOFYyMEgyMFYxN0gyM1YxNUgyMFYxMkgxOFYxNU0xNC45NyAxMS42MUMxNC44NSAxMC4yOCAxMy41OSA4Ljk3IDEyIDlDMTAuMyA5LjAzIDkgMTAuMyA5IDEyQzkgMTMuNyAxMC4zIDE0Ljk0IDEyIDE1QzEyLjM4IDE1IDEyLjc3IDE0LjkyIDEzLjE0IDE0Ljc3QzEzLjQxIDEzLjY3IDEzLjg2IDEyLjYzIDE0Ljk3IDExLjYxTTEzIDE2SDdDNyAxNC45IDYuMTEgMTQgNSAxNFYxMEM2LjExIDEwIDcgOS4xMSA3IDhIMTdDMTcgOS4xMSAxNy45IDEwIDE5IDEwVjEwLjA2QzE5LjY3IDEwLjA2IDIwLjM0IDEwLjE4IDIxIDEwLjRWNkgzVjE4SDEzLjMyQzEzLjEgMTcuMzMgMTMgMTYuNjYgMTMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFJlZnVuZCA9IFwiTTEyLjMgOC45M0w5Ljg4IDYuNUgxNS41VjEwSDE3VjVIOS44OEwxMi4zIDIuNTdMMTEuMjQgMS41TDcgNS43NUwxMS4yNCAxMEwxMi4zIDguOTNNMTIgMTRBMyAzIDAgMSAwIDE1IDE3QTMgMyAwIDAgMCAxMiAxNE0zIDExVjIzSDIxVjExTTE5IDE5QTIgMiAwIDAgMCAxNyAyMUg3QTIgMiAwIDAgMCA1IDE5VjE1QTIgMiAwIDAgMCA3IDEzSDE3QTIgMiAwIDAgMCAxOSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoUmVnaXN0ZXIgPSBcIk0yLDE3SDIyVjIxSDJWMTdNNi4yNSw3SDlWNkg2VjNIMTRWNkgxMVY3SDE3LjhDMTguOCw3IDE5LjgsOCAyMCw5TDIwLjUsMTZIMy41TDQuMDUsOUM0LjA1LDggNS4wNSw3IDYuMjUsN00xMyw5VjExSDE4VjlIMTNNNiw5VjEwSDhWOUg2TTksOVYxMEgxMVY5SDlNNiwxMVYxMkg4VjExSDZNOSwxMVYxMkgxMVYxMUg5TTYsMTNWMTRIOFYxM0g2TTksMTNWMTRIMTFWMTNIOU03LDRWNUgxM1Y0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFJlbW92ZSA9IFwiTTE1LjQ2IDE4LjEyTDE2Ljg4IDE5LjU0TDE5IDE3LjQxTDIxLjEyIDE5LjU0TDIyLjU0IDE4LjEyTDIwLjQxIDE2TDIyLjU0IDEzLjg4TDIxLjEyIDEyLjQ2TDE5IDE0LjU5TDE2Ljg4IDEyLjQ2TDE1LjQ2IDEzLjg4TDE3LjU5IDE2TTE0Ljk3IDExLjYyQzE0Ljg2IDEwLjI4IDEzLjU4IDguOTcgMTIgOUMxMC4zIDkuMDQgOSAxMC4zIDkgMTJDOSAxMy43IDEwLjMgMTQuOTQgMTIgMTVDMTIuMzkgMTUgMTIuNzcgMTQuOTIgMTMuMTQgMTQuNzdDMTMuNDEgMTMuNjcgMTMuODYgMTIuNjMgMTQuOTcgMTEuNjJNMTMgMTZIN0M3IDE0LjkgNi4xIDE0IDUgMTRWMTBDNi4xIDEwIDcgOS4xIDcgOEgxN0MxNyA5LjEgMTcuOSAxMCAxOSAxMFYxMC4wNUMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM1YxOEgxMy4zMkMxMy4xIDE3LjMzIDEzIDE2LjY2IDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hVc2QgPSBcIk0yMCA0SDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFY2QzIyIDQuODkgMjEuMSA0IDIwIDRNMTUgMTBIMTFWMTFIMTRDMTQuNTUgMTEgMTUgMTEuNDUgMTUgMTJWMTVDMTUgMTUuNTUgMTQuNTUgMTYgMTQgMTZIMTNWMTdIMTFWMTZIOVYxNEgxM1YxM0gxMEM5LjQ1IDEzIDkgMTIuNTUgOSAxMlY5QzkgOC40NSA5LjQ1IDggMTAgOEgxMVY3SDEzVjhIMTVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFVzZE91dGxpbmUgPSBcIk0yMCwxOEg0VjZIMjBNMjAsNEg0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QzIyLDQuODkgMjEuMSw0IDIwLDRNMTEsMTdIMTNWMTZIMTRBMSwxIDAgMCwwIDE1LDE1VjEyQTEsMSAwIDAsMCAxNCwxMUgxMVYxMEgxNVY4SDEzVjdIMTFWOEgxMEExLDEgMCAwLDAgOSw5VjEyQTEsMSAwIDAsMCAxMCwxM0gxM1YxNEg5VjE2SDExVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc3NldHRlID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlINkw3LDE3SDE3TDE4LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1SDRNNi41LDEwQTEuNSwxLjUgMCAwLDEgOCwxMS41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgNSwxMS41QTEuNSwxLjUgMCAwLDEgNi41LDEwTTksMTBIMTVWMTNIOVYxME0xNy41LDEwQTEuNSwxLjUgMCAwLDEgMTksMTEuNUExLjUsMS41IDAgMCwxIDE3LjUsMTNBMS41LDEuNSAwIDAsMSAxNiwxMS41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXN0ID0gXCJNMSwxMFYxMkE5LDkgMCAwLDEgMTAsMjFIMTJDMTIsMTQuOTIgNy4wNywxMCAxLDEwTTEsMTRWMTZBNSw1IDAgMCwxIDYsMjFIOEE3LDcgMCAwLDAgMSwxNE0xLDE4VjIxSDRBMywzIDAgMCwwIDEsMThNMjEsM0gzQzEuODksMyAxLDMuODkgMSw1VjhIM1Y1SDIxVjE5SDE0VjIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QzIzLDMuODkgMjIuMSwzIDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdEF1ZGlvID0gXCJNMiAxMVYxM0M3IDEzIDExIDE3IDExIDIySDEzQzEzIDE1LjkgOC4xIDExIDIgMTFNMjAgMkgxMEM4LjkgMiA4IDIuOSA4IDRWMTAuNUM5IDExIDkuOSAxMS43IDEwLjcgMTIuNEMxMS42IDExIDEzLjIgMTAgMTUgMTBDMTcuOCAxMCAyMCAxMi4yIDIwIDE1UzE3LjggMjAgMTUgMjBIMTQuOEMxNC45IDIwLjcgMTUgMjEuMyAxNSAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTUgOEMxMy45IDggMTMgNy4xIDEzIDZDMTMgNC45IDEzLjkgNCAxNSA0QzE2LjEgNCAxNyA0LjkgMTcgNlMxNi4xIDggMTUgOE0xNSAxOEMxNC44IDE4IDE0LjUgMTggMTQuMyAxNy45QzEzLjggMTYuNCAxMy4xIDE1LjEgMTIuMiAxMy45QzEyLjYgMTIuOCAxMy43IDExLjkgMTUgMTEuOUMxNi43IDExLjkgMTggMTMuMiAxOCAxNC45UzE2LjcgMTggMTUgMThNMiAxNVYxN0M0LjggMTcgNyAxOS4yIDcgMjJIOUM5IDE4LjEgNS45IDE1IDIgMTVNMiAxOVYyMkg1QzUgMjAuMyAzLjcgMTkgMiAxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc3RDb25uZWN0ZWQgPSBcIk0yMSwzSDNDMS44OSwzIDEsMy44OSAxLDVWOEgzVjVIMjFWMTlIMTRWMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVDMjMsMy44OSAyMi4xLDMgMjEsM00xLDEwVjEyQTksOSAwIDAsMSAxMCwyMUgxMkMxMiwxNC45MiA3LjA3LDEwIDEsMTBNMTksN0g1VjguNjNDOC45Niw5LjkxIDEyLjA5LDEzLjA0IDEzLjM3LDE3SDE5TTEsMTRWMTZBNSw1IDAgMCwxIDYsMjFIOEE3LDcgMCAwLDAgMSwxNE0xLDE4VjIxSDRBMywzIDAgMCwwIDEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdEVkdWNhdGlvbiA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjhIM1Y1SDIxVjE5SDE0VjIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTEsMThWMjFINEEzLDMgMCAwLDAgMSwxOE0xLDE0VjE2QTUsNSAwIDAsMSA2LDIxSDhBNyw3IDAgMCwwIDEsMTRNMSwxMFYxMkE5LDkgMCAwLDEgMTAsMjFIMTJDMTIsMTQuOTIgNy4wNywxMCAxLDEwTTExLDExLjA5VjEzLjA5TDE0LjUsMTVMMTgsMTMuMDlWMTEuMDlMMTQuNSwxM0wxMSwxMS4wOU0xNC41LDZMOSw5TDE0LjUsMTJMMjAsOUwxNC41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdE9mZiA9IFwiTTEuNiwxLjI3TDAuMjUsMi43NUwxLjQxLDMuOEMxLjE2LDQuMTMgMSw0LjU1IDEsNVY4SDNWNS4yM0wxOC4yLDE5SDE0VjIxSDIwLjQxTDIyLjMxLDIyLjcyTDIzLjY1LDIxLjI0TTYuNSwzTDguNyw1SDIxVjE2LjE0TDIzLDE3Ljk1VjVDMjMsMy44OSAyMi4xLDMgMjEsM00xLDEwVjEyQTksOSAwIDAsMSAxMCwyMUgxMkMxMiwxNC45MiA3LjA4LDEwIDEsMTBNMSwxNFYxNkE1LDUgMCAwLDEgNiwyMUg4QTcsNyAwIDAsMCAxLDE0TTEsMThWMjFINEEzLDMgMCAwLDAgMSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXN0bGUgPSBcIk0yLDEzSDRWMTVINlYxM0g4VjE1SDEwVjEzSDEyVjE1SDE0VjEwTDE3LDdWMUgxOUwyMywzTDE5LDVWN0wyMiwxMFYyMkgxMVYxOUEyLDIgMCAwLDAgOSwxN0EyLDIgMCAwLDAgNywxOVYyMkgyVjEzTTE4LDEwQzE3LjQ1LDEwIDE3LDEwLjU0IDE3LDExLjJWMTNIMTlWMTEuMkMxOSwxMC41NCAxOC41NSwxMCAxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXQgPSBcIk0xMiw4TDEwLjY3LDguMDlDOS44MSw3LjA3IDcuNCw0LjUgNSw0LjVDNSw0LjUgMy4wMyw3LjQ2IDQuOTYsMTEuNDFDNC40MSwxMi4yNCA0LjA3LDEyLjY3IDQsMTMuNjZMMi4wNywxMy45NUwyLjI4LDE0LjkzTDQuMDQsMTQuNjdMNC4xOCwxNS4zOEwyLjYxLDE2LjMyTDMuMDgsMTcuMjFMNC41MywxNi4zMkM1LjY4LDE4Ljc2IDguNTksMjAgMTIsMjBDMTUuNDEsMjAgMTguMzIsMTguNzYgMTkuNDcsMTYuMzJMMjAuOTIsMTcuMjFMMjEuMzksMTYuMzJMMTkuODIsMTUuMzhMMTkuOTYsMTQuNjdMMjEuNzIsMTQuOTNMMjEuOTMsMTMuOTVMMjAsMTMuNjZDMTkuOTMsMTIuNjcgMTkuNTksMTIuMjQgMTkuMDQsMTEuNDFDMjAuOTcsNy40NiAxOSw0LjUgMTksNC41QzE2LjYsNC41IDE0LjE5LDcuMDcgMTMuMzMsOC4wOUwxMiw4TTksMTFBMSwxIDAgMCwxIDEwLDEyQTEsMSAwIDAsMSA5LDEzQTEsMSAwIDAsMSA4LDEyQTEsMSAwIDAsMSA5LDExTTE1LDExQTEsMSAwIDAsMSAxNiwxMkExLDEgMCAwLDEgMTUsMTNBMSwxIDAgMCwxIDE0LDEyQTEsMSAwIDAsMSAxNSwxMU0xMSwxNEgxM0wxMi4zLDE1LjM5QzEyLjUsMTYuMDMgMTMuMDYsMTYuNSAxMy43NSwxNi41QTEuNSwxLjUgMCAwLDAgMTUuMjUsMTVIMTUuNzVBMiwyIDAgMCwxIDEzLjc1LDE3QzEzLDE3IDEyLjM1LDE2LjU5IDEyLDE2VjE2SDEyQzExLjY1LDE2LjU5IDExLDE3IDEwLjI1LDE3QTIsMiAwIDAsMSA4LjI1LDE1SDguNzVBMS41LDEuNSAwIDAsMCAxMC4yNSwxNi41QzEwLjk0LDE2LjUgMTEuNSwxNi4wMyAxMS43LDE1LjM5TDExLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNjdHYgPSBcIk0xOC4xNSw0Ljk0QzE3Ljc3LDQuOTEgMTcuMzcsNSAxNyw1LjJMOC4zNSwxMC4yQzcuMzksMTAuNzYgNy4wNywxMiA3LjYyLDEyLjk0TDkuMTIsMTUuNTNDOS42NywxNi41IDEwLjg5LDE2LjgyIDExLjg1LDE2LjI3TDEzLjY1LDE1LjIzQzEzLjkyLDE1LjY5IDE0LjMyLDE2LjA2IDE0LjgxLDE2LjI3VjE4LjA0QzE0LjgxLDE5LjEzIDE1LjcsMjAgMTYuODEsMjBIMjJWMTguMDRIMTYuODFWMTYuMjdDMTcuNzIsMTUuODcgMTguMzEsMTQuOTcgMTguMzEsMTRDMTguMzEsMTMuNTQgMTguMTksMTMuMTEgMTcuOTcsMTIuNzNMMjAuNSwxMS4yN0MyMS40NywxMC43MSAyMS44LDkuNSAyMS4yNCw4LjUzTDE5Ljc0LDUuOTRDMTkuNCw1LjM0IDE4Ljc5LDUgMTguMTUsNC45NE02LjIyLDEzLjE3TDIsMTMuODdMMi43NSwxNS4xN0w0Ljc1LDE4LjYzTDUuNSwxOS45M0w4LjIyLDE2LjYzTDYuMjIsMTMuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VpbGluZ0xpZ2h0ID0gXCJNOCw5SDExVjRIMTNWOUgxNkwyMCwxN0g0TDgsOU0xNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZSA9IFwiTTE3LDE5SDdWNUgxN00xNywxSDdDNS44OSwxIDUsMS44OSA1LDNWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNDMTksMS44OSAxOC4xLDEgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVBbmRyb2lkID0gXCJNMTcuMjUsMThINi43NVY0SDE3LjI1TTE0LDIxSDEwVjIwSDE0TTE2LDFIOEEzLDMgMCAwLDAgNSw0VjIwQTMsMyAwIDAsMCA4LDIzSDE2QTMsMyAwIDAsMCAxOSwyMFY0QTMsMyAwIDAsMCAxNiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUFycm93RG93biA9IFwiTTE3LDFIN0EyLDIgMCAwLDAgNSwzVjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVYzQTIsMiAwIDAsMCAxNywxTTE3LDE5SDdWNUgxN1YxOU0xNiwxM0gxM1Y4SDExVjEzSDhMMTIsMTdMMTYsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lQmFzaWMgPSBcIk0xNSwyQTEsMSAwIDAsMCAxNCwzVjZIMTBDOC44OSw2IDgsNi44OSA4LDhWMjBDOCwyMS4xMSA4Ljg5LDIyIDEwLDIySDE1QzE2LjExLDIyIDE3LDIxLjExIDE3LDIwVjhDMTcsNy4yNiAxNi42LDYuNjIgMTYsNi4yOFYzQTEsMSAwIDAsMCAxNSwyTTEwLDhIMTVWMTNIMTBWOE0xMCwxNUgxMVYxNkgxMFYxNU0xMiwxNUgxM1YxNkgxMlYxNU0xNCwxNUgxNVYxNkgxNFYxNU0xMCwxN0gxMVYxOEgxMFYxN00xMiwxN0gxM1YxOEgxMlYxN00xNCwxN0gxNVYxOEgxNFYxN00xMCwxOUgxMVYyMEgxMFYxOU0xMiwxOUgxM1YyMEgxMlYxOU0xNCwxOUgxNVYyMEgxNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVDaGFyZ2luZyA9IFwiTTExIDE4LjVWMTNIOUwxMyA1LjVWMTFIMTVNMTcgMTlIN1Y1SDE3TTE3IDFIN0M1Ljg5IDEgNSAxLjg5IDUgM1YyMUEyIDIgMCAwIDAgNyAyM0gxN0EyIDIgMCAwIDAgMTkgMjFWM0MxOSAxLjg5IDE4LjEgMSAxNyAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUNvZyA9IFwiTTkuODIsMTIuNUM5Ljg0LDEyLjMzIDkuODYsMTIuMTcgOS44NiwxMkM5Ljg2LDExLjgzIDkuODQsMTEuNjcgOS44MiwxMS41TDEwLjksMTAuNjlDMTEsMTAuNjIgMTEsMTAuNSAxMC45NiwxMC4zN0w5LjkzLDguNjRDOS44Nyw4LjUzIDkuNzMsOC41IDkuNjIsOC41M0w4LjM0LDkuMDNDOC4wNyw4LjgzIDcuNzgsOC42NyA3LjQ3LDguNTRMNy4yNyw3LjIxQzcuMjcsNy4wOSA3LjE2LDcgNy4wMyw3SDVDNC44NSw3IDQuNzQsNy4wOSA0LjcyLDcuMjFMNC41LDguNTNDNC4yMSw4LjY1IDMuOTIsOC44MyAzLjY1LDlMMi4zNyw4LjVDMi4yNSw4LjQ3IDIuMTIsOC41IDIuMDYsOC42M0wxLjAzLDEwLjM2QzAuOTcsMTAuNSAxLDEwLjYxIDEuMSwxMC42OUwyLjE4LDExLjVDMi4xNiwxMS42NyAyLjE1LDExLjg0IDIuMTUsMTJDMi4xNSwxMi4xNyAyLjE3LDEyLjMzIDIuMTksMTIuNUwxLjEsMTMuMzJDMSwxMy4zOSAxLDEzLjUzIDEuMDQsMTMuNjRMMi4wNywxNS4zN0MyLjEzLDE1LjUgMi4yNywxNS41IDIuMzgsMTUuNUwzLjY2LDE1QzMuOTMsMTUuMTggNC4yMiwxNS4zNCA0LjUzLDE1LjQ3TDQuNzMsMTYuNzlDNC43NCwxNi45MSA0Ljg1LDE3IDUsMTdINy4wNEM3LjE3LDE3IDcuMjgsMTYuOTEgNy4yOSwxNi43OUw3LjUsMTUuNDdDNy44LDE1LjM1IDguMDksMTUuMTcgOC4zNiwxNUw5LjY0LDE1LjVDOS43NiwxNS41MyA5Ljg5LDE1LjUgOS45NSwxNS4zN0wxMSwxMy42NEMxMS4wNCwxMy41MyAxMSwxMy40IDEwLjkyLDEzLjMyTDkuODIsMTIuNU02LDEzLjc1QzUsMTMuNzUgNC4yLDEyLjk3IDQuMiwxMkM0LjIsMTEuMDMgNSwxMC4yNSA2LDEwLjI1QzcsMTAuMjUgNy44LDExLjAzIDcuOCwxMkM3LjgsMTIuOTcgNywxMy43NSA2LDEzLjc1TTE3LDFIN0EyLDIgMCAwLDAgNSwzVjZIN1Y0SDE3VjIwSDdWMThINVYyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVEb2NrID0gXCJNMTYsMTVIOFY1SDE2TTE2LDFIOEM2Ljg5LDEgNiwxLjg5IDYsM1YxN0EyLDIgMCAwLDAgOCwxOUgxNkEyLDIgMCAwLDAgMTgsMTdWM0MxOCwxLjg5IDE3LjEsMSAxNiwxTTgsMjNIMTZWMjFIOFYyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVFcmFzZSA9IFwiTTExLDguMkwxMCw3LjJMNiwxMS4yTDIsNy4yTDEsOC4yTDUsMTIuMkwxLDE2LjJMMiwxNy4yTDYsMTMuMkwxMCwxNy4yTDExLDE2LjJMNywxMi4yTDExLDguMk0xNywxSDdBMiwyIDAgMCwwIDUsM1Y2SDdWNEgxN1YyMEg3VjE4SDVWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNBMiwyIDAgMCwwIDE3LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lSW5mb3JtYXRpb24gPSBcIk0xMyA3SDExVjlIMTNWN00xMyAxMUgxMVYxN0gxM1YxMU0xNyAxSDdDNS45IDEgNSAxLjkgNSAzVjIxQzUgMjIuMSA1LjkgMjMgNyAyM0gxN0MxOC4xIDIzIDE5IDIyLjEgMTkgMjFWM0MxOSAxLjkgMTguMSAxIDE3IDFNMTcgMTlIN1Y1SDE3VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUlwaG9uZSA9IFwiTTE2LDE4SDdWNEgxNk0xMS41LDIyQTEuNSwxLjUgMCAwLDEgMTAsMjAuNUExLjUsMS41IDAgMCwxIDExLjUsMTlBMS41LDEuNSAwIDAsMSAxMywyMC41QTEuNSwxLjUgMCAwLDEgMTEuNSwyMk0xNS41LDFINy41QTIuNSwyLjUgMCAwLDAgNSwzLjVWMjAuNUEyLjUsMi41IDAgMCwwIDcuNSwyM0gxNS41QTIuNSwyLjUgMCAwLDAgMTgsMjAuNVYzLjVBMi41LDIuNSAwIDAsMCAxNS41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lS2V5ID0gXCJNNywxQTIsMiAwIDAsMCA1LDNWN0g3VjRIMTdWMjBIN1YxN0g1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVYzQTIsMiAwIDAsMCAxNywxSDdNNiw5QTMsMyAwIDAsMCAzLDEyQTMsMyAwIDAsMCA2LDE1QzcuMzEsMTUgOC40MiwxNC4xNyA4LjgzLDEzSDExVjE1SDEzVjEzSDE0VjExSDguODNDOC40Miw5LjgzIDcuMzEsOSA2LDlNNiwxMUExLDEgMCAwLDEgNywxMkExLDEgMCAwLDEgNiwxM0ExLDEgMCAwLDEgNSwxMkExLDEgMCAwLDEgNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVMaW5rID0gXCJNMjIsMTdIMThWMTBIMjJNMjMsOEgxN0ExLDEgMCAwLDAgMTYsOVYxOUExLDEgMCAwLDAgMTcsMjBIMjNBMSwxIDAgMCwwIDI0LDE5VjlBMSwxIDAgMCwwIDIzLDhNNCw2SDIyVjRINEEyLDIgMCAwLDAgMiw2VjE3SDBWMjBIMTRWMTdINFY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUxpbmtPZmYgPSBcIk0yMyw4SDE3QTEsMSAwIDAsMCAxNiw5VjEzLjE4TDE4LDE1LjE4VjEwSDIyVjE3SDE5LjgyTDIyLjgyLDIwSDIzQTEsMSAwIDAsMCAyNCwxOVY5QTEsMSAwIDAsMCAyMyw4TTQsNi4yN0wxNC43MywxN0g0VjYuMjdNMS45MiwxLjY1TDAuNjUsMi45MkwyLjQ3LDQuNzRDMi4xOCw1LjA4IDIsNS41IDIsNlYxN0gwVjIwSDE3LjczTDIwLjA4LDIyLjM1TDIxLjM1LDIxLjA4TDMuODksMy42MkwxLjkyLDEuNjVNMjIsNlY0SDYuODJMOC44Miw2SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUxvY2sgPSBcIk0xNywxSDdBMiwyIDAgMCwwIDUsM1Y2SDdWNEgxN1YyMEg3VjE4SDVWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNBMiwyIDAgMCwwIDE3LDFNOC44LDExVjkuNUM4LjgsOC4xIDcuNCw3IDYsN0M0LjYsNyAzLjIsOC4xIDMuMiw5LjVWMTFDMi42LDExIDIsMTEuNiAyLDEyLjJWMTUuN0MyLDE2LjQgMi42LDE3IDMuMiwxN0g4LjdDOS40LDE3IDEwLDE2LjQgMTAsMTUuOFYxMi4zQzEwLDExLjYgOS40LDExIDguOCwxMU03LjUsMTFINC41VjkuNUM0LjUsOC43IDUuMiw4LjIgNiw4LjJDNi44LDguMiA3LjUsOC43IDcuNSw5LjVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lTWVzc2FnZSA9IFwiTTExLDE3VjdINFYxN0gxMU0xMSwzQTIsMiAwIDAsMSAxMyw1VjE5QTIsMiAwIDAsMSAxMSwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWNUEyLDIgMCAwLDEgNCwzSDExTTE2LjUsM0gyMS41QTEuNSwxLjUgMCAwLDEgMjMsNC41VjcuNUExLjUsMS41IDAgMCwxIDIxLjUsOUgxOEwxNSwxMlY5TDE1LDQuNUExLjUsMS41IDAgMCwxIDE2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVNZXNzYWdlT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0wyLjIyIDQuMTFDMi4wOCA0LjM4IDIgNC42OCAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgxMUMxMi4xIDIxIDEzIDIwLjEgMTMgMTlWMTQuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTExIDE3SDRWN0g1LjExTDExIDEyLjg5VjE3TTIzIDQuNVY3LjVDMjMgOC4zMyAyMi4zMyA5IDIxLjUgOUgxOEwxNS4xIDExLjlMMTUgMTEuOFY0LjVDMTUgMy42NyAxNS42NyAzIDE2LjUgM0gyMS41QzIyLjMzIDMgMjMgMy42NyAyMyA0LjVNMTAuMiA3TDYuMiAzSDExQzEyLjEgMyAxMyAzLjkgMTMgNVY5LjhMMTEgNy44VjdIMTAuMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZU5mYyA9IFwiTTIsMTZWMThBNSw1IDAgMCwxIDcsMjNIOUE3LDcgMCAwLDAgMiwxNk0yLDIwVjIzSDVBMywzIDAgMCwwIDIsMjBNMiwxMlYxNEE5LDkgMCAwLDEgMTEsMjNIMTNDMTMsMTYuOTIgOC4wOCwxMiAyLDEyTTE3LDFIN0EyLDIgMCAwLDAgNSwzVjEwLjM3QzUuNjksMTAuNTMgNi4zNiwxMC43NCA3LDExVjVIMTdWMThIMTMuOTdDMTQuNSwxOS4yNSAxNC44MSwyMC41OSAxNC45MiwyMkgxN0EyLDIgMCAwLDAgMTksMjBWM0EyLDIgMCAwLDAgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVOZmNPZmYgPSBcIk0yMC44NCAyMi43M0wxOC44NSAyMC43NEMxOC41NiAyMS41IDE3Ljg0IDIyIDE3IDIySDE0LjkyQzE0LjgxIDIwLjU5IDE0LjUgMTkuMjUgMTMuOTcgMThIMTYuMTFMNyA4Ljg5VjExQzYuMzYgMTAuNzQgNS42OSAxMC41MyA1IDEwLjM3VjYuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNyA1VjEzLjhMMTkgMTUuOFYzQzE5IDEuOSAxOC4xMSAxIDE3IDFIN0M2LjI0IDEgNS41OSAxLjQzIDUuMjUgMi4wNUw4LjIgNUgxN00yIDIwVjIzSDVDNSAyMS4zNCAzLjY2IDIwIDIgMjBNMiAxNlYxOEM0Ljc2IDE4IDcgMjAuMjQgNyAyM0g5QzkgMTkuMTMgNS44NyAxNiAyIDE2TTIgMTJWMTRDNi45NyAxNCAxMSAxOC4wMyAxMSAyM0gxM0MxMyAxNi45MiA4LjA4IDEyIDIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lT2ZmID0gXCJNMi4zOCwxLjczTDEuMTEsM0w1LDYuODlWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjIwLjg5TDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TTE3LDE5SDdWOC44OUwxNywxOC44OVYxOU0xNyw1VjEzLjhMMTksMTUuOFYzQTIsMiAwIDAsMCAxNywxSDdDNi4yOCwxIDUuNiwxLjM3IDUuMjQsMkw4LjI0LDVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lUGxheSA9IFwiTTE3IDE5SDdWNUgxN00xNyAxSDdDNS44OSAxIDUgMS44OSA1IDNWMjFDNSAyMi4xIDUuOSAyMyA3IDIzSDE3QzE4LjEgMjMgMTkgMjIuMSAxOSAyMVYzQzE5IDEuODkgMTguMSAxIDE3IDFNMTAgOVYxNUwxNCAxMkwxMCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZVNjcmVlbnNob3QgPSBcIk03LDFBMiwyIDAgMCwwIDUsM1YyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMUg3TTcsNEgxN1YyMEg3VjRNOSw2VjEwSDEwLjVWNy41SDEzVjZIOU0xMy41LDE0VjE2LjVIMTFWMThIMTVWMTRIMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVTZXR0aW5ncyA9IFwiTTE2LDE2SDhWNEgxNk0xNiwwSDhBMiwyIDAgMCwwIDYsMlYxOEEyLDIgMCAwLDAgOCwyMEgxNkEyLDIgMCAwLDAgMTgsMThWMkEyLDIgMCAwLDAgMTYsME0xNSwyNEgxN1YyMkgxNU0xMSwyNEgxM1YyMkgxMU03LDI0SDlWMjJIN1YyNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVTb3VuZCA9IFwiTTE5LjEsOC43QzIwLjksMTAuNSAyMC45LDEzLjMgMTkuMSwxNS4yTDIwLjEsMTYuMkMyMi42LDEzLjkgMjIuNiwxMC4xIDIwLjEsNy43TDE5LjEsOC43TTE4LDkuOEwxNywxMC44QzE3LjUsMTEuNSAxNy41LDEyLjQgMTcsMTMuMUwxOCwxNC4xQzE5LjIsMTIuOSAxOS4yLDExLjEgMTgsOS44TTE0LDFINEEyLDIgMCAwLDAgMiwzVjIxQTIsMiAwIDAsMCA0LDIzSDE0QTIsMiAwIDAsMCAxNiwyMVYzQTIsMiAwIDAsMCAxNCwxTTE0LDIwSDRWNEgxNFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVUZXh0ID0gXCJNMTcsMTlWNUg3VjE5SDE3TTE3LDFBMiwyIDAgMCwxIDE5LDNWMjFBMiwyIDAgMCwxIDE3LDIzSDdDNS44OSwyMyA1LDIyLjEgNSwyMVYzQzUsMS44OSA1Ljg5LDEgNywxSDE3TTksN0gxNVY5SDlWN005LDExSDEzVjEzSDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lV2lyZWxlc3MgPSBcIk0yMC4wNyw0LjkzQzIxLjg4LDYuNzQgMjMsOS4yNCAyMywxMkMyMywxNC43NiAyMS44OCwxNy4yNiAyMC4wNywxOS4wN0wxOC42NiwxNy42NkMyMC4xMSwxNi4yMiAyMSwxNC4yMiAyMSwxMkMyMSw5Ljc5IDIwLjExLDcuNzggMTguNjYsNi4zNEwyMC4wNyw0LjkzTTE3LjI0LDcuNzZDMTguMzMsOC44NSAxOSwxMC4zNSAxOSwxMkMxOSwxMy42NSAxOC4zMywxNS4xNSAxNy4yNCwxNi4yNEwxNS44MywxNC44M0MxNi41NSwxNC4xMSAxNywxMy4xMSAxNywxMkMxNywxMC44OSAxNi41NSw5Ljg5IDE1LjgzLDkuMTdMMTcuMjQsNy43Nk0xMywxMEEyLDIgMCAwLDEgMTUsMTJBMiwyIDAgMCwxIDEzLDE0QTIsMiAwIDAsMSAxMSwxMkEyLDIgMCAwLDEgMTMsMTBNMTEuNSwxQTIuNSwyLjUgMCAwLDEgMTQsMy41VjhIMTJWNEgzVjE5SDEyVjE2SDE0VjIwLjVBMi41LDIuNSAwIDAsMSAxMS41LDIzSDMuNUEyLjUsMi41IDAgMCwxIDEsMjAuNVYzLjVBMi41LDIuNSAwIDAsMSAzLjUsMUgxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbHRpY0Nyb3NzID0gXCJNMTcuOCw4QzE3LjI2LDUuODkgMTUuNjEsNC4yNCAxMy41LDMuN1YySDEwLjVWMy43QzguMzksNC4yNCA2Ljc0LDUuODkgNi4yLDhINFYxMUg2LjJDNi43NCwxMy4xMSA4LjM5LDE0Ljc2IDEwLjUsMTUuM1YyMkgxMy41VjE1LjNDMTUuNjEsMTQuNzYgMTcuMjYsMTMuMTEgMTcuOCwxMUgxOS45N1Y4SDE3LjhNMTIuMDQsOS41M0wxNC41LDExSDE1Ljc2QzE1LjM1LDEyLjAzIDE0LjUzLDEyLjg0IDEzLjUsMTMuMjZWMTJMMTIuMDYsOS41NkwxMiw5LjVMMTEuOTQsOS41NkwxMC41LDEyVjEzLjI2QzkuNDcsMTIuODQgOC42NiwxMi4wMyA4LjI0LDExSDkuNUwxMS45Niw5LjUzTDEyLDkuNUgxMS45Nkw5LjUsOEg4LjI0QzguNjUsNi45NyA5LjQ3LDYuMTYgMTAuNSw1Ljc0VjdMMTEuOTQsOS40NEwxMiw5LjVMMTIuMDYsOS40NEwxMy41LDdWNS43NEMxNC41Myw2LjE2IDE1LjM1LDYuOTcgMTUuNzYsOEgxNC41TDEyLjA0LDkuNUgxMkwxMi4wNCw5LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbnRvcyA9IFwiTTE5LjA3IDE0LjkzTDIyIDEyTDE5LjA3IDkuMDdWNC45M0gxNC45M0wxMiAyTDkuMDcgNC45M0g0LjkzVjkuMDdMMiAxMkw0LjkzIDE0LjkzVjE5LjA3SDkuMDdMMTIgMjJMMTQuOTMgMTkuMDdIMTkuMDdWMTQuOTNNMjEuNDEgMTJMMTkuMDcgMTQuMzRWMTIuNDZIMTMuNjlMMTMuMjMgMTJMMTMuNjkgMTEuNTRIMTkuMDdWOS42NkwyMS40MSAxMk0xOC42NiAxNC43NkwxNy4zMiAxNi4wOUwxNC4xMSAxMi44N0gxOC42NlYxNC43Nk0xMi40NiAxMy4xTDEyIDEyLjY1TDExLjU0IDEzLjFWMTIuNDZIMTAuOUwxMS4zNiAxMkwxMC45IDExLjU0SDExLjU0VjEwLjlMMTIgMTEuMzZMMTIuNDYgMTAuOVYxMS41NEgxMy4xTDEyLjY1IDEyTDEzLjEgMTIuNDZIMTIuNDZWMTMuMU0xNC4xMSAxMS4xM0wxNy4zMiA3LjkxTDE4LjY2IDkuMjRWMTEuMTNIMTQuMTFNMTguNjYgNS4zNVY4LjY1TDE3LjMyIDcuMzJMMTMuNSAxMS4xM0gxMi44N1YxMC41TDE2LjY4IDYuNjhMMTUuMzUgNS4zNUgxOC42Nk0xMi44NyA5Ljg5VjUuMzVIMTQuNzZMMTYuMDkgNi42OEwxMi44NyA5Ljg5TTEyIDIuNTlMMTQuMzQgNC45M0gxMi40NlYxMC4zMUwxMiAxMC43N0wxMS41NCAxMC4zMVY0LjkzSDkuNjZMMTIgMi41OU0xMS4xMyA5Ljg5TDcuOTEgNi42OEw5LjI0IDUuMzVIMTEuMTNWOS44OU01LjM1IDUuMzVIOC42NUw3LjMyIDYuNjhMMTEuMTMgMTAuNVYxMS4xM0gxMC41TDYuNjggNy4zMkw1LjM1IDguNjVWNS4zNU01LjM1IDkuMjRMNi42OCA3LjkxTDkuODkgMTEuMTNINS4zNVY5LjI0TTIuNTkgMTJMNC45MyA5LjY2VjExLjU0SDEwLjMxTDEwLjc3IDEyTDEwLjMxIDEyLjQ2SDQuOTNWMTQuMzRMMi41OSAxMk05Ljg5IDEyLjg3TDYuNjggMTYuMDlMNS4zNSAxNC43NlYxMi44N0g5Ljg5TTUuMzUgMTguNjZWMTUuMzVMNi42OCAxNi42OEwxMC41IDEyLjg3SDExLjEzVjEzLjVMNy4zMiAxNy4zMkw4LjY1IDE4LjY1SDUuMzVNMTEuMTMgMTQuMTFWMTguNjZIOS4yNEw3LjkxIDE3LjMyTDExLjEzIDE0LjExTTEyIDIxLjQxTDkuNjYgMTkuMDdIMTEuNTRWMTMuNjlMMTIgMTMuMjNMMTIuNDYgMTMuNjlWMTkuMDdIMTQuMzRMMTIgMjEuNDFNMTIuODcgMTQuMTFMMTYuMDkgMTcuMzJMMTQuNzYgMTguNjZIMTIuODdWMTQuMTFNMTUuMzUgMTguNjZMMTYuNjggMTcuMzJMMTIuODcgMTMuNVYxMi44N0gxMy41TDE3LjMyIDE2LjY4TDE4LjY1IDE1LjM1VjE4LjY2SDE1LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlcnRpZmljYXRlID0gXCJNNCwzQzIuODksMyAyLDMuODkgMiw1VjE1QTIsMiAwIDAsMCA0LDE3SDEyVjIyTDE1LDE5TDE4LDIyVjE3SDIwQTIsMiAwIDAsMCAyMiwxNVY4TDIyLDZWNUEyLDIgMCAwLDAgMjAsM0gxNlYzSDRNMTIsNUwxNSw3TDE4LDVWOC41TDIxLDEwTDE4LDExLjVWMTVMMTUsMTNMMTIsMTVWMTEuNUw5LDEwTDEyLDguNVY1TTQsNUg5VjdINFY1TTQsOUg3VjExSDRWOU00LDEzSDlWMTVINFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZXJ0aWZpY2F0ZU91dGxpbmUgPSBcIk0xMyAyMUwxNSAyMEwxNyAyMVYxNEgxM00xNyA5VjdMMTUgOEwxMyA3VjlMMTEgMTBMMTMgMTFWMTNMMTUgMTJMMTcgMTNWMTFMMTkgMTBNMjAgM0g0QTIgMiAwIDAgMCAyIDVWMTVBMiAyIDAgMCAwIDQgMTdIMTFWMTVINFY1SDIwVjE1SDE5VjE3SDIwQTIgMiAwIDAgMCAyMiAxNVY1QTIgMiAwIDAgMCAyMCAzTTExIDhINVY2SDExTTkgMTFINVY5SDlNMTEgMTRINVYxMkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFpclJvbGxpbmcgPSBcIk0yMiAxMFYxM0gxOVYxMEgyMk0yIDEzSDVWMTBIMlYxM00xNyA1QzE3IDMuOSAxNi4xIDMgMTUgM0g5QzcuOSAzIDcgMy45IDcgNVYxM0gxN1Y1TTcgMTVINlYxN0gxMVYxOEw3IDIySDkuOEwxMiAxOS44TDE0LjIgMjJIMTdMMTMgMThWMTdIMThWMTVIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFpclNjaG9vbCA9IFwiTTIyLDVWN0gxN0wxMy41MywxMkgxNlYxNEgxNC40NkwxOC4xNywyMkgxNS45N0wxNS4wNCwyMEg2LjM4TDUuMzUsMjJIMy4xTDcuMjMsMTRIN0M2LjU1LDE0IDYuMTcsMTMuNyA2LjA0LDEzLjNMMi44NywzLjg0TDMuODIsMy41QzQuMzQsMy4zNCA0LjkxLDMuNjMgNS4wOCw0LjE1TDcuNzIsMTJIMTIuMUwxNS41Nyw3SDEyVjVIMjJNOS41LDE0TDcuNDIsMThIMTQuMTFMMTIuMjYsMTRIOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJpdHkgPSBcIk0xMi43NSwzLjk0QzEzLjc1LDMuMjIgMTQuOTEsMi44NiAxNi4yMiwyLjg2QzE2Ljk0LDIuODYgMTcuNzMsMy4wNSAxOC41OSwzLjQ1QzE5LjQ1LDMuODQgMjAuMTMsNC4zIDIwLjYzLDQuODNDMjEuNjYsNi4xMSAyMi4wOSw3LjYgMjEuOTQsOS4zQzIxLjc4LDExIDIxLjIyLDEyLjMzIDIwLjI1LDEzLjI3TDEyLjY2LDIwLjg2QzEyLjQ3LDIxLjA1IDEyLjIzLDIxLjE0IDExLjk1LDIxLjE0QzExLjY3LDIxLjE0IDExLjQ0LDIxLjA1IDExLjI1LDIwLjg2QzExLjA2LDIwLjY3IDEwLjk3LDIwLjQ0IDEwLjk3LDIwLjE2QzEwLjk3LDE5Ljg4IDExLjA2LDE5LjY0IDExLjI1LDE5LjQ1TDE1Ljg0LDE0Ljg2QzE2LjA5LDE0LjY0IDE2LjA5LDE0LjQxIDE1Ljg0LDE0LjE2QzE1LjU5LDEzLjkxIDE1LjM2LDEzLjkxIDE1LjE0LDE0LjE2TDEwLjU1LDE4Ljc1QzEwLjM2LDE4Ljk0IDEwLjEzLDE5LjAzIDkuODQsMTkuMDNDOS41NiwxOS4wMyA5LjMzLDE4Ljk0IDkuMTQsMTguNzVDOC45NSwxOC41NiA4Ljg2LDE4LjMzIDguODYsMTguMDVDOC44NiwxNy43NyA4Ljk1LDE3LjUzIDkuMTQsMTcuMzRMMTMuNzMsMTIuNzVDMTQsMTIuNSAxNCwxMi4yNSAxMy43MywxMkMxMy41LDExLjc1IDEzLjI4LDExLjc1IDEzLjAzLDEyTDguNDQsMTYuNjRDOC4yNSwxNi44MyA4LDE2LjkyIDcuNzMsMTYuOTJDNy40NSwxNi45MiA3LjIxLDE2LjgzIDcsMTYuNjRDNi44LDE2LjQ1IDYuNywxNi4yMiA2LjcsMTUuOTRDNi43LDE1LjY2IDYuODEsMTUuNDEgNy4wMywxNS4xOUwxMS42MywxMC41OUMxMS44OCwxMC4zNCAxMS44OCwxMC4xMSAxMS42Myw5Ljg5QzExLjM4LDkuNjcgMTEuMTQsOS42NyAxMC45Miw5Ljg5TDYuMjgsMTQuNUM2LjA2LDE0LjcgNS44MywxNC44MSA1LjU4LDE0LjgxQzUuMywxNC44MSA1LjA2LDE0LjcxIDQuODgsMTQuNUM0LjY5LDE0LjMgNC41OSwxNC4wNiA0LjU5LDEzLjc4QzQuNTksMTMuNSA0LjY5LDEzLjI3IDQuODgsMTMuMDhDNy45NCwxMCA5LjgzLDguMTQgMTAuNTUsNy40NUwxNC4xMSwxMC45N0MxNC41LDExLjM0IDE0Ljk1LDExLjUzIDE1LjUsMTEuNTNDMTYuMiwxMS41MyAxNi43NSwxMS4yNSAxNy4xNiwxMC42OUMxNy40NCwxMC4yOCAxNy41NCw5LjgzIDE3LjQ2LDkuMzNDMTcuMzgsOC44MyAxNy4xNyw4LjQxIDE2LjgzLDguMDZMMTIuNzUsMy45NE0xNC44MSwxMC4yN0wxMC41NSw2TDMuNDcsMTMuMDhDMi42MywxMi4yMyAyLjE1LDEwLjkzIDIuMDQsOS4xNkMxLjkzLDcuNCAyLjQxLDUuODcgMy40Nyw0LjU5QzQuNjYsMy40MSA2LjA4LDIuODEgNy43MywyLjgxQzkuMzksMi44MSAxMC44LDMuNDEgMTEuOTUsNC41OUwxNi4yMiw4Ljg2QzE2LjQxLDkuMDUgMTYuNSw5LjI4IDE2LjUsOS41NkMxNi41LDkuODQgMTYuNDEsMTAuMDggMTYuMjIsMTAuMjdDMTYuMDMsMTAuNDUgMTUuOCwxMC41NSAxNS41LDEwLjU1QzE1LjIzLDEwLjU1IDE1LDEwLjQ1IDE0LjgxLDEwLjI3VjEwLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QXJjID0gXCJNMTYuMTgsMTkuNkwxNC4xNywxNi4xMkMxNS4xNSwxNS40IDE1LjgzLDE0LjI4IDE1Ljk3LDEzSDIwQzE5LjgzLDE1Ljc2IDE4LjM1LDE4LjE2IDE2LjE4LDE5LjZNMTMsNy4wM1YzQzE3LjMsMy4yNiAyMC43NCw2LjcgMjEsMTFIMTYuOTdDMTYuNzQsOC45MSAxNS4wOSw3LjI2IDEzLDcuMDNNNywxMi41QzcsMTMuMTQgNy4xMywxMy43NSA3LjM4LDE0LjNMMy45LDE2LjMxQzMuMzIsMTUuMTYgMywxMy44NyAzLDEyLjVDMyw3Ljk3IDYuNTQsNC4yNyAxMSw0VjguMDNDOC43NSw4LjI4IDcsMTAuMTggNywxMi41TTExLjUsMjFDOC41MywyMSA1LjkyLDE5LjUgNC40LDE3LjE4TDcuODgsMTUuMTdDOC43LDE2LjI4IDEwLDE3IDExLjUsMTdDMTIuMTQsMTcgMTIuNzUsMTYuODcgMTMuMywxNi42MkwxNS4zMSwyMC4xQzE0LjE2LDIwLjY4IDEyLjg3LDIxIDExLjUsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRBcmVhc3BsaW5lID0gXCJNMTcuNDUsMTUuMThMMjIsNy4zMVYxOUwyMiwyMUgyVjNINFYxNS41NEw5LjUsNkwxNiw5Ljc4TDIwLjI0LDIuNDVMMjEuOTcsMy40NUwxNi43NCwxMi41TDEwLjIzLDguNzVMNC4zMSwxOUg2LjU3TDEwLjk2LDExLjQ0TDE3LjQ1LDE1LjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QXJlYXNwbGluZVZhcmlhbnQgPSBcIk0yMiwyMUgyVjNINFYxNS41NEw5LjUsNkwxNiw5Ljc4TDIwLjI0LDIuNDVMMjEuOTcsMy40NUwyMiwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJhciA9IFwiTTIyLDIxSDJWM0g0VjE5SDZWMTBIMTBWMTlIMTJWNkgxNlYxOUgxOFYxNEgyMlYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJhclN0YWNrZWQgPSBcIk0yMiwyMUgyVjNINFYxOUg2VjE3SDEwVjE5SDEyVjE2SDE2VjE5SDE4VjE3SDIyVjIxTTE4LDE0SDIyVjE2SDE4VjE0TTEyLDZIMTZWOUgxMlY2TTE2LDE1SDEyVjEwSDE2VjE1TTYsMTBIMTBWMTJINlYxME0xMCwxNkg2VjEzSDEwVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QmVsbEN1cnZlID0gXCJNOS45NiwxMS4zMUMxMC44Miw4LjEgMTEuNSw2IDEzLDZDMTQuNSw2IDE1LjE4LDguMSAxNi4wNCwxMS4zMUMxNywxNC45MiAxOC4xLDE5IDIyLDE5VjE3QzE5LjgsMTcgMTksMTQuNTQgMTcuOTcsMTAuOEMxNy4wOCw3LjQ2IDE2LjE1LDQgMTMsNEM5Ljg1LDQgOC45Miw3LjQ2IDguMDMsMTAuOEM3LjAzLDE0LjU0IDYuMiwxNyA0LDE3VjJIMlYyMkgyMlYyMEg0VjE5QzcuOSwxOSA5LDE0LjkyIDkuOTYsMTEuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCZWxsQ3VydmVDdW11bGF0aXZlID0gXCJNNCAxOVYyMEgyMlYyMkgyVjJINFYxN0M3IDE3IDEwIDE1IDEyLjEgMTEuNEMxNS4xIDYuNCAxOC40IDQgMjIgNFY2QzE5LjIgNiAxNi41IDguMSAxMy45IDEyLjVDMTEuMyAxNi42IDcuNyAxOSA0IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0Qm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTkgMTdIN1YxMEg5VjE3TTEzIDE3SDExVjdIMTNWMTdNMTcgMTdIMTVWMTNIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCb3hPdXRsaW5lID0gXCJNOSAxN0g3VjEwSDlWMTdNMTMgMTdIMTFWN0gxM1YxN00xNyAxN0gxNVYxM0gxN1YxN00xOS41IDE5LjFINC41VjVIMTkuNVYxOS4xTTE5LjUgM0g0LjVDMy40IDMgMi41IDMuOSAyLjUgNVYxOUMyLjUgMjAuMSAzLjQgMjEgNC41IDIxSDE5LjVDMjAuNiAyMSAyMS41IDIwLjEgMjEuNSAxOVY1QzIxLjUgMy45IDIwLjYgMyAxOS41IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCb3hQbHVzT3V0bGluZSA9IFwiTTIyIDVWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1SDIyTTE5IDE5SDVWNUgxMVYzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWMTNIMTlWMTlNMTUgMTNWMTdIMTdWMTNIMTVNMTEgMTdIMTNWOUgxMVYxN005IDE3VjExSDdWMTdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJ1YmJsZSA9IFwiTTcuMiwxMS4yQzguOTcsMTEuMiAxMC40LDEyLjYzIDEwLjQsMTQuNEMxMC40LDE2LjE3IDguOTcsMTcuNiA3LjIsMTcuNkM1LjQzLDE3LjYgNCwxNi4xNyA0LDE0LjRDNCwxMi42MyA1LjQzLDExLjIgNy4yLDExLjJNMTQuOCwxNkEyLDIgMCAwLDEgMTYuOCwxOEEyLDIgMCAwLDEgMTQuOCwyMEEyLDIgMCAwLDEgMTIuOCwxOEEyLDIgMCAwLDEgMTQuOCwxNk0xNS4yLDRBNC44LDQuOCAwIDAsMSAyMCw4LjhDMjAsMTEuNDUgMTcuODUsMTMuNiAxNS4yLDEzLjZBNC44LDQuOCAwIDAsMSAxMC40LDguOEMxMC40LDYuMTUgMTIuNTUsNCAxNS4yLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnREb251dCA9IFwiTTEzLDIuMDVWNS4wOEMxNi4zOSw1LjU3IDE5LDguNDcgMTksMTJDMTksMTIuOSAxOC44MiwxMy43NSAxOC41LDE0LjU0TDIxLjEyLDE2LjA3QzIxLjY4LDE0LjgzIDIyLDEzLjQ1IDIyLDEyQzIyLDYuODIgMTguMDUsMi41NSAxMywyLjA1TTEyLDE5QTcsNyAwIDAsMSA1LDEyQzUsOC40NyA3LjYxLDUuNTcgMTEsNS4wOFYyLjA1QzUuOTQsMi41NSAyLDYuODEgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkMxNS4zLDIyIDE4LjIzLDIwLjM5IDIwLjA1LDE3LjkxTDE3LjQ1LDE2LjM4QzE2LjE3LDE4IDE0LjIxLDE5IDEyLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0RG9udXRWYXJpYW50ID0gXCJNMTMsMi4wNUMxOC4wNSwyLjU1IDIyLDYuODIgMjIsMTJDMjIsMTMuNDUgMjEuNjgsMTQuODMgMjEuMTIsMTYuMDdMMTguNSwxNC41NEMxOC44MiwxMy43NSAxOSwxMi45IDE5LDEyQzE5LDguNDcgMTYuMzksNS41NyAxMyw1LjA4VjIuMDVNMTIsMTlDMTQuMjEsMTkgMTYuMTcsMTggMTcuNDUsMTYuMzhMMjAuMDUsMTcuOTFDMTguMjMsMjAuMzkgMTUuMywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNSAyLDEyQzIsNi44MSA1Ljk0LDIuNTUgMTEsMi4wNVY1LjA4QzcuNjEsNS41NyA1LDguNDcgNSwxMkE3LDcgMCAwLDAgMTIsMTlNMTIsNkE2LDYgMCAwLDEgMTgsMTJDMTgsMTQuOTcgMTUuODQsMTcuNDQgMTMsMTcuOTJWMTQuODNDMTQuMTcsMTQuNDIgMTUsMTMuMzEgMTUsMTJBMywzIDAgMCwwIDEyLDlMMTEuNDUsOS4wNUw5LjkxLDYuMzhDMTAuNTYsNi4xMyAxMS4yNiw2IDEyLDZNNiwxMkM2LDEwLjE0IDYuODUsOC41IDguMTgsNy4zOEw5LjcyLDEwLjA1QzkuMjcsMTAuNTcgOSwxMS4yNiA5LDEyQzksMTMuMzEgOS44MywxNC40MiAxMSwxNC44M1YxNy45MkM4LjE2LDE3LjQ0IDYsMTQuOTcgNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEdhbnR0ID0gXCJNMiw1SDEwVjJIMTJWMjJIMTBWMThINlYxNUgxMFYxM0g0VjEwSDEwVjhIMlY1TTE0LDVIMTdWOEgxNFY1TTE0LDEwSDE5VjEzSDE0VjEwTTE0LDE1SDIyVjE4SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0SGlzdG9ncmFtID0gXCJNMywzSDVWMTNIOVY3SDEzVjExSDE3VjE1SDIxVjIxSDNWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydExpbmUgPSBcIk0xNiwxMS43OEwyMC4yNCw0LjQ1TDIxLjk3LDUuNDVMMTYuNzQsMTQuNUwxMC4yMywxMC43NUw1LjQ2LDE5SDIyVjIxSDJWM0g0VjE3LjU0TDkuNSw4TDE2LDExLjc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TGluZVN0YWNrZWQgPSBcIk0xNy40NSwxNS4xOEwyMiw2LjgxVjE5TDIyLDIxSDJWM0g0VjE1LjU0TDQsMTlINC4zMUw2LDE5SDYuNTdMMTAuOTYsMTEuNDRMMTcuNDUsMTUuMThNMjIsM0wyMS45NywzLjQ1TDE3LDExTDEwLDZMNiwxMlYzSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TGluZVZhcmlhbnQgPSBcIk0zLjUsMTguNUw5LjUsMTIuNUwxMy41LDE2LjVMMjIsNi45MkwyMC41OSw1LjVMMTMuNSwxMy41TDkuNSw5LjVMMiwxN0wzLjUsMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydE11bHRpbGluZSA9IFwiTTIyLDYuOTJMMjAuNTksNS41TDE3Ljc0LDguNzJDMTUuNjgsNi40IDEyLjgzLDUgOS42MSw1QzYuNzIsNSA0LjA3LDYuMTYgMiw4TDMuNDIsOS40MkM1LjEyLDcuOTMgNy4yNyw3IDkuNjEsN0MxMi4zNSw3IDE0LjcsOC4yNiAxNi4zOCwxMC4yNEwxMy41LDEzLjVMOS41LDkuNUwyLDE3TDMuNSwxOC41TDkuNSwxMi41TDEzLjUsMTYuNUwxNy41NSwxMS45M0MxOC4zLDEzLjI4IDE4LjgsMTQuODMgMTksMTYuNUgyMUMyMC43OCwxNC4xOCAyMC4wNSwxMi4wOSAxOC45NiwxMC4zNEwyMiw2LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TXVsdGlwbGUgPSBcIk0yMiAxNlYxOEg2VjJIOFYxMy41N0wxMy43MSA0LjU3TDE2Ljg3IDYuNjhMMTkuMjkgNC4yNkwyMC43MSA1LjY4TDE3LjEzIDkuMjlMMTQuMjkgNy40TDguODIgMTZNNCAyMFY0SDJWMjJIMjJWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRQaWUgPSBcIk0xMSwyVjIyQzUuOSwyMS41IDIsMTcuMiAyLDEyQzIsNi44IDUuOSwyLjUgMTEsMk0xMywyVjExSDIyQzIxLjUsNi4yIDE3LjgsMi41IDEzLDJNMTMsMTNWMjJDMTcuNywyMS41IDIxLjUsMTcuOCAyMiwxM0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFBwZiA9IFwiTTUgNlY4QzguMiA4IDExLjM2IDkuMTggMTMuNTcgMTEuMTVDMTUuNjQgMTMgMTYuODMgMTUuNSAxNyAxOEgxOC45N0ExNCAxMi41IDAgMCAwIDUgNk0yMiAyMUgyVjNINFYxOUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFNhbmtleSA9IFwiTTIyIDVINFYySDJWMjJIMjJWMjBINFY5QzguMDkgOSAxMC4xMyAxMSAxMi4yOSAxMy4yMVMxNy4wOSAxOCAyMiAxOFYxNkMxNy45MSAxNiAxNS44NyAxNCAxMy43MSAxMS43OVM4LjkxIDcgNCA3SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0U2Fua2V5VmFyaWFudCA9IFwiTTIwIDRWNkg0VjRIMlYxMkg0VjEwQzguMTYgMTAgOS45MiAxMi4xMSAxMS43NyAxNC4zNFMxNS42NSAxOSAyMCAxOVYyMUgyMlYxNUgyMFYxN0MxNi41OSAxNyAxNS4wNyAxNS4xNyAxMy4zMSAxMy4wNkMxMS4zNCAxMC42OSA5LjEgOCA0IDhIMjBWMTBIMjJWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFNjYXR0ZXJQbG90ID0gXCJNMiwySDRWMjBIMjJWMjJIMlYyTTksMTBBMywzIDAgMCwxIDEyLDEzQTMsMyAwIDAsMSA5LDE2QTMsMyAwIDAsMSA2LDEzQTMsMyAwIDAsMSA5LDEwTTEzLDJBMywzIDAgMCwxIDE2LDVBMywzIDAgMCwxIDEzLDhBMywzIDAgMCwxIDEwLDVBMywzIDAgMCwxIDEzLDJNMTgsMTJBMywzIDAgMCwxIDIxLDE1QTMsMyAwIDAsMSAxOCwxOEEzLDMgMCAwLDEgMTUsMTVBMywzIDAgMCwxIDE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0U2NhdHRlclBsb3RIZXhiaW4gPSBcIk0yLDJINFYyMEgyMlYyMkgyVjJNMTQsMTQuNUwxMiwxOEg3Ljk0TDUuOTIsMTQuNUw3Ljk0LDExSDEyTDE0LDE0LjVNMTQuMDgsNi41TDEyLjA2LDEwSDhMNiw2LjVMOCwzSDEyLjA2TDE0LjA4LDYuNU0yMS4yNSwxMC41TDE5LjIzLDE0SDE1LjE5TDEzLjE3LDEwLjVMMTUuMTksN0gxOS4yM0wyMS4yNSwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0VGltZWxpbmUgPSBcIk0yLDJINFYyMEgyMlYyMkgyVjJNNywxMEgxN1YxM0g3VjEwTTExLDE1SDIxVjE4SDExVjE1TTYsNEgyMlY4SDIwVjZIOFY4SDZWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFRpbWVsaW5lVmFyaWFudCA9IFwiTTMsMTRMMy41LDE0LjA3TDguMDcsOS41QzcuODksOC44NSA4LjA2LDguMTEgOC41OSw3LjU5QzkuMzcsNi44IDEwLjYzLDYuOCAxMS40MSw3LjU5QzExLjk0LDguMTEgMTIuMTEsOC44NSAxMS45Myw5LjVMMTQuNSwxMi4wN0wxNSwxMkMxNS4xOCwxMiAxNS4zNSwxMiAxNS41LDEyLjA3TDE5LjA3LDguNUMxOSw4LjM1IDE5LDguMTggMTksOEEyLDIgMCAwLDEgMjEsNkEyLDIgMCAwLDEgMjMsOEEyLDIgMCAwLDEgMjEsMTBDMjAuODIsMTAgMjAuNjUsMTAgMjAuNSw5LjkzTDE2LjkzLDEzLjVDMTcsMTMuNjUgMTcsMTMuODIgMTcsMTRBMiwyIDAgMCwxIDE1LDE2QTIsMiAwIDAsMSAxMywxNEwxMy4wNywxMy41TDEwLjUsMTAuOTNDMTAuMTgsMTEgOS44MiwxMSA5LjUsMTAuOTNMNC45MywxNS41TDUsMTZBMiwyIDAgMCwxIDMsMThBMiwyIDAgMCwxIDEsMTZBMiwyIDAgMCwxIDMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRUaW1lbGluZVZhcmlhbnRTaGltbWVyID0gXCJNMjEgOEMxOS41IDggMTguNyA5LjQgMTkuMSAxMC41TDE1LjUgMTQuMUMxNS4yIDE0IDE0LjggMTQgMTQuNSAxNC4xTDExLjkgMTEuNUMxMi4zIDEwLjQgMTEuNSA5IDEwIDlDOC42IDkgNy43IDEwLjQgOC4xIDExLjVMMy41IDE2QzIuNCAxNS43IDEgMTYuNSAxIDE4QzEgMTkuMSAxLjkgMjAgMyAyMEM0LjQgMjAgNS4zIDE4LjYgNC45IDE3LjVMOS40IDEyLjlDOS43IDEzIDEwLjEgMTMgMTAuNCAxMi45TDEzIDE1LjVDMTIuNyAxNi41IDEzLjUgMTggMTUgMThDMTYuNSAxOCAxNy4zIDE2LjYgMTYuOSAxNS41TDIwLjUgMTEuOUMyMS42IDEyLjIgMjMgMTEuNCAyMyAxMEMyMyA4LjkgMjIuMSA4IDIxIDhNMTUgOUwxNS45IDYuOUwxOCA2TDE1LjkgNS4xTDE1IDNMMTQuMSA1LjFMMTIgNkwxNC4xIDYuOUwxNSA5TTMuNSAxMUw0IDlMNiA4LjVMNCA4TDMuNSA2TDMgOEwxIDguNUwzIDlMMy41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0VHJlZSA9IFwiTTE0LDZIMjJWMjJIMTRWNk0yLDRIMjJWMkgyVjRNMiw4SDEyVjZIMlY4TTksMjJIMTJWMTBIOVYyMk0yLDIySDdWMTBIMlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0ID0gXCJNMTIsM0MxNy41LDMgMjIsNi41OCAyMiwxMUMyMiwxNS40MiAxNy41LDE5IDEyLDE5QzEwLjc2LDE5IDkuNTcsMTguODIgOC40NywxOC41QzUuNTUsMjEgMiwyMSAyLDIxQzQuMzMsMTguNjcgNC43LDE3LjEgNC43NSwxNi41QzMuMDUsMTUuMDcgMiwxMy4xMyAyLDExQzIsNi41OCA2LjUsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRBbGVydCA9IFwiTTEyLDNDMTcuNSwzIDIyLDYuNTggMjIsMTFDMjIsMTUuNDIgMTcuNSwxOSAxMiwxOUMxMC43NiwxOSA5LjU3LDE4LjgyIDguNDcsMTguNUM1LjU1LDIxIDIsMjEgMiwyMUM0LjMzLDE4LjY3IDQuNywxNy4xIDQuNzUsMTYuNUMzLjA1LDE1LjA3IDIsMTMuMTMgMiwxMUMyLDYuNTggNi41LDMgMTIsM00xMSwxNFYxNkgxM1YxNEgxMU0xMSwxMkgxM1Y2SDExVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRBbGVydE91dGxpbmUgPSBcIk0xMiAzQzYuNSAzIDIgNi41OCAyIDExQzIuMDUgMTMuMTUgMy4wNiAxNS4xNyA0Ljc1IDE2LjVDNC43NSAxNy4xIDQuMzMgMTguNjcgMiAyMUM0LjM3IDIwLjg5IDYuNjQgMjAgOC40NyAxOC41QzkuNjEgMTguODMgMTAuODEgMTkgMTIgMTlDMTcuNSAxOSAyMiAxNS40MiAyMiAxMVMxNy41IDMgMTIgM00xMiAxN0M3LjU4IDE3IDQgMTQuMzEgNCAxMVM3LjU4IDUgMTIgNSAyMCA3LjY5IDIwIDExIDE2LjQyIDE3IDEyIDE3TTExIDEzVjE1SDEzVjEzSDExTTExIDExSDEzVjdIMTFWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdE1pbnVzID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMC45NSAxMi4yNSAyMCAxMiAxOSAxMkMxNS42OSAxMiAxMyAxNC42OSAxMyAxOEwxMy4wOCAxOC45NUwxMiAxOUMxMC43NiAxOSA5LjU3IDE4LjgyIDguNDcgMTguNUM1LjU1IDIxIDIgMjEgMiAyMUM0LjMzIDE4LjY3IDQuNyAxNy4xIDQuNzUgMTYuNUMzLjA1IDE1LjA3IDIgMTMuMTQgMiAxMUMyIDYuNTggNi41IDMgMTIgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0TWludXNPdXRsaW5lID0gXCJNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMS4xOSAxMi4zOCAyMC41NSAxMi4xNiAxOS44OCAxMi4wNkMxOS45NiAxMS43MiAyMCAxMS4zNiAyMCAxMUMyMCA3LjY5IDE2LjQyIDUgMTIgNVM0IDcuNjkgNCAxMSA3LjU4IDE3IDEyIDE3TDEzLjA5IDE2Ljk1TDEzIDE4TDEzLjA4IDE4Ljk1TDEyIDE5QzEwLjgxIDE5IDkuNjIgMTguODMgOC40NyAxOC41QzYuNjQgMjAgNC4zNyAyMC44OSAyIDIxQzQuMzMgMTguNjcgNC43NSAxNy4xIDQuNzUgMTYuNUMzLjA2IDE1LjE3IDIuMDUgMTMuMTUgMiAxMUMyIDYuNTggNi41IDMgMTIgM00yMyAxN1YxOUgxNVYxN0gyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0T3V0bGluZSA9IFwiTTEyLDNDNi41LDMgMiw2LjU4IDIsMTFDMi4wNSwxMy4xNSAzLjA2LDE1LjE3IDQuNzUsMTYuNUM0Ljc1LDE3LjEgNC4zMywxOC42NyAyLDIxQzQuMzcsMjAuODkgNi42NCwyMCA4LjQ3LDE4LjVDOS42MSwxOC44MyAxMC44MSwxOSAxMiwxOUMxNy41LDE5IDIyLDE1LjQyIDIyLDExQzIyLDYuNTggMTcuNSwzIDEyLDNNMTIsMTdDNy41OCwxNyA0LDE0LjMxIDQsMTFDNCw3LjY5IDcuNTgsNSAxMiw1QzE2LjQyLDUgMjAsNy42OSAyMCwxMUMyMCwxNC4zMSAxNi40MiwxNyAxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UGx1cyA9IFwiTTE4IDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTEyIDNDMTcuNSAzIDIyIDYuNTggMjIgMTFDMjIgMTEuNTggMjEuOTIgMTIuMTQgMjEuNzggMTIuNjhDMjAuOTUgMTIuMjUgMjAgMTIgMTkgMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuNzYgMTkgOS41NyAxOC44MiA4LjQ3IDE4LjVDNS41NSAyMSAyIDIxIDIgMjFDNC4zMyAxOC42NyA0LjcgMTcuMSA0Ljc1IDE2LjVDMy4wNSAxNS4wNyAyIDEzLjE0IDIgMTFDMiA2LjU4IDYuNSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFBsdXNPdXRsaW5lID0gXCJNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMS4xOSAxMi4zOCAyMC41NSAxMi4xNiAxOS44OCAxMi4wNkMxOS45NiAxMS43MiAyMCAxMS4zNiAyMCAxMUMyMCA3LjY5IDE2LjQyIDUgMTIgNUM3LjU4IDUgNCA3LjY5IDQgMTFDNCAxNC4zMSA3LjU4IDE3IDEyIDE3TDEzLjA5IDE2Ljk1TDEzIDE4TDEzLjA4IDE4Ljk1TDEyIDE5QzEwLjgxIDE5IDkuNjIgMTguODMgOC40NyAxOC41QzYuNjQgMjAgNC4zNyAyMC44OSAyIDIxQzQuMzMgMTguNjcgNC43NSAxNy4xIDQuNzUgMTYuNUMzLjA2IDE1LjE3IDIuMDUgMTMuMTUgMiAxMUMyIDYuNTggNi41IDMgMTIgM00xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UHJvY2Vzc2luZyA9IFwiTTEyLDNDMTcuNSwzIDIyLDYuNTggMjIsMTFDMjIsMTUuNDIgMTcuNSwxOSAxMiwxOUMxMC43NiwxOSA5LjU3LDE4LjgyIDguNDcsMTguNUM1LjU1LDIxIDIsMjEgMiwyMUM0LjMzLDE4LjY3IDQuNywxNy4xIDQuNzUsMTYuNUMzLjA1LDE1LjA3IDIsMTMuMTMgMiwxMUMyLDYuNTggNi41LDMgMTIsM00xNywxMlYxMEgxNVYxMkgxN00xMywxMlYxMEgxMVYxMkgxM005LDEyVjEwSDdWMTJIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UHJvY2Vzc2luZ091dGxpbmUgPSBcIk0xMiAzQzYuNSAzIDIgNi41OCAyIDExQzIuMDUgMTMuMTUgMy4wNiAxNS4xNyA0Ljc1IDE2LjVDNC43NSAxNy4xIDQuMzMgMTguNjcgMiAyMUM0LjM3IDIwLjg5IDYuNjQgMjAgOC40NyAxOC41QzkuNjEgMTguODMgMTAuODEgMTkgMTIgMTlDMTcuNSAxOSAyMiAxNS40MiAyMiAxMVMxNy41IDMgMTIgM00xMiAxN0M3LjU4IDE3IDQgMTQuMzEgNCAxMVM3LjU4IDUgMTIgNSAyMCA3LjY5IDIwIDExIDE2LjQyIDE3IDEyIDE3TTE3IDEyVjEwSDE1VjEySDE3TTEzIDEyVjEwSDExVjEySDEzTTkgMTJWMTBIN1YxMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRRdWVzdGlvbiA9IFwiTTEyIDNDNi41IDMgMiA2LjYgMiAxMUMyIDEzLjEgMyAxNS4xIDQuOCAxNi41QzQuOCAxNy4xIDQuNCAxOC43IDIgMjFDMiAyMSA1LjUgMjEgOC41IDE4LjVDOS42IDE4LjggMTAuOCAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQgMjIgMTFTMTcuNSAzIDEyIDNNMTMgMTVIMTFWMTNIMTNWMTVNMTQuOCAxMEMxNC41IDEwLjQgMTQuMSAxMC42IDEzLjcgMTAuOEMxMy40IDExIDEzLjMgMTEuMSAxMy4yIDExLjNDMTMgMTEuNSAxMyAxMS43IDEzIDEySDExQzExIDExLjUgMTEuMSAxMS4yIDExLjMgMTAuOUMxMS41IDEwLjcgMTEuOSAxMC40IDEyLjQgMTAuMUMxMi43IDEwIDEyLjkgOS44IDEzIDkuNkMxMy4xIDkuNCAxMy4yIDkuMSAxMy4yIDguOUMxMy4yIDguNiAxMy4xIDguNCAxMi45IDguMkMxMi43IDggMTIuNCA3LjkgMTIuMSA3LjlDMTEuOCA3LjkgMTEuNiA4IDExLjQgOC4xQzExLjIgOC4yIDExLjEgOC40IDExLjEgOC43SDkuMUM5LjIgOCA5LjUgNy40IDEwIDdDMTAuNSA2LjYgMTEuMiA2LjUgMTIuMSA2LjVDMTMgNi41IDEzLjggNi43IDE0LjMgNy4xQzE0LjggNy41IDE1LjEgOC4xIDE1LjEgOC44QzE1LjIgOS4yIDE1LjEgOS42IDE0LjggMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFF1ZXN0aW9uT3V0bGluZSA9IFwiTTEyIDNDNi41IDMgMiA2LjYgMiAxMUMyIDEzLjIgMy4xIDE1LjIgNC44IDE2LjVDNC44IDE3LjEgNC40IDE4LjcgMiAyMUM0LjQgMjAuOSA2LjYgMjAgOC41IDE4LjVDOS42IDE4LjggMTAuOCAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQgMjIgMTFTMTcuNSAzIDEyIDNNMTIgMTdDNy42IDE3IDQgMTQuMyA0IDExUzcuNiA1IDEyIDUgMjAgNy43IDIwIDExIDE2LjQgMTcgMTIgMTdNMTIuMiA2LjVDMTEuMyA2LjUgMTAuNiA2LjcgMTAuMSA3QzkuNSA3LjQgOS4yIDggOS4zIDguN0gxMS4zQzExLjMgOC40IDExLjQgOC4yIDExLjYgOC4xQzExLjggOCAxMiA3LjkgMTIuMyA3LjlDMTIuNiA3LjkgMTIuOSA4IDEzLjEgOC4yQzEzLjMgOC40IDEzLjQgOC42IDEzLjQgOC45QzEzLjQgOS4yIDEzLjMgOS40IDEzLjIgOS42QzEzIDkuOCAxMi44IDEwIDEyLjYgMTAuMUMxMi4xIDEwLjQgMTEuNyAxMC43IDExLjUgMTAuOUMxMS4xIDExLjIgMTEgMTEuNSAxMSAxMkgxM0MxMyAxMS43IDEzLjEgMTEuNSAxMy4xIDExLjNDMTMuMiAxMS4xIDEzLjQgMTEgMTMuNiAxMC44QzE0LjEgMTAuNiAxNC40IDEwLjMgMTQuNyA5LjlDMTUgOS41IDE1LjEgOS4xIDE1LjEgOC43QzE1LjEgOCAxNC44IDcuNCAxNC4zIDdDMTMuOSA2LjcgMTMuMSA2LjUgMTIuMiA2LjVNMTEgMTNWMTVIMTNWMTNIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFJlbW92ZSA9IFwiTTE1LjQ2IDE1Ljg4TDE2Ljg4IDE0LjQ2TDE5IDE2LjU5TDIxLjEyIDE0LjQ3TDIyLjU0IDE1Ljg4TDIwLjQxIDE4TDIyLjU0IDIwLjEyTDIxLjEyIDIxLjU0TDE5IDE5LjQxTDE2Ljg4IDIxLjU0TDE1LjQ2IDIwLjEyTDE3LjU5IDE4TDE1LjQ3IDE1Ljg4TTEyIDNDMTcuNSAzIDIyIDYuNTggMjIgMTFDMjIgMTEuNTggMjEuOTIgMTIuMTQgMjEuNzggMTIuNjhDMjAuOTUgMTIuMjUgMjAgMTIgMTkgMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuNzYgMTkgOS41NyAxOC44MiA4LjQ3IDE4LjVDNS41NSAyMSAyIDIxIDIgMjFDNC4zMyAxOC42NyA0LjcgMTcuMSA0Ljc1IDE2LjVDMy4wNSAxNS4wNyAyIDEzLjE0IDIgMTFDMiA2LjU4IDYuNSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFJlbW92ZU91dGxpbmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41NCAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41NEwxNS40NiAyMC4xMkwxNy41OSAxOEwxNS40NyAxNS44OE0xMiAzQzE3LjUgMyAyMiA2LjU4IDIyIDExQzIyIDExLjU4IDIxLjkyIDEyLjE0IDIxLjc4IDEyLjY4QzIxLjE5IDEyLjM4IDIwLjU1IDEyLjE2IDE5Ljg4IDEyLjA2QzE5Ljk2IDExLjcyIDIwIDExLjM2IDIwIDExQzIwIDcuNjkgMTYuNDIgNSAxMiA1QzcuNTggNSA0IDcuNjkgNCAxMUM0IDE0LjMxIDcuNTggMTcgMTIgMTdMMTMuMDkgMTYuOTVMMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuODEgMTkgOS42MiAxOC44MyA4LjQ3IDE4LjVDNi42NCAyMCA0LjM3IDIwLjg5IDIgMjFDNC4zMyAxOC42NyA0Ljc1IDE3LjEgNC43NSAxNi41QzMuMDYgMTUuMTcgMi4wNSAxMy4xNSAyIDExQzIgNi41OCA2LjUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRTbGVlcCA9IFwiTTEyIDNDNi41IDMgMiA2LjU4IDIgMTFDMiAxMy4xMyAzLjA1IDE1LjA3IDQuNzUgMTYuNUM0LjcgMTcuMSA0LjMzIDE4LjY3IDIgMjFDMiAyMSA1LjU1IDIxIDguNDcgMTguNUM5LjU3IDE4LjgyIDEwLjc2IDE5IDEyIDE5QzE3LjUgMTkgMjIgMTUuNDIgMjIgMTFTMTcuNSAzIDEyIDNNMTUgOS4zTDExLjc2IDEzSDE1VjE1SDlWMTIuN0wxMi4yNCA5SDlWN0gxNVY5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFNsZWVwT3V0bGluZSA9IFwiTTEyIDNDNi41IDMgMiA2LjU4IDIgMTFDMi4wNSAxMy4xNSAzLjA2IDE1LjE3IDQuNzUgMTYuNUM0Ljc1IDE3LjEgNC4zMyAxOC42NyAyIDIxQzQuMzcgMjAuODkgNi42NCAyMCA4LjQ3IDE4LjVDOS42MSAxOC44MyAxMC44MSAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQyIDIyIDExUzE3LjUgMyAxMiAzTTEyIDE3QzcuNTggMTcgNCAxNC4zMSA0IDExUzcuNTggNSAxMiA1IDIwIDcuNjkgMjAgMTEgMTYuNDIgMTcgMTIgMTdNMTUgN0g5VjlIMTIuMjRMOSAxMi43VjE1SDE1VjEzSDExLjc2TDE1IDkuM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrID0gXCJNMjEsN0w5LDE5TDMuNSwxMy41TDQuOTEsMTIuMDlMOSwxNi4xN0wxOS41OSw1LjU5TDIxLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tBbGwgPSBcIk0wLjQxLDEzLjQxTDYsMTlMNy40MSwxNy41OEwxLjgzLDEyTTIyLjI0LDUuNThMMTEuNjYsMTYuMTdMNy41LDEyTDYuMDcsMTMuNDFMMTEuNjYsMTlMMjMuNjYsN00xOCw3TDE2LjU5LDUuNThMMTAuMjQsMTEuOTNMMTEuNjYsMTMuMzRMMTgsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0JvbGQgPSBcIk05LDIwLjQyTDIuNzksMTQuMjFMNS42MiwxMS4zOEw5LDE0Ljc3TDE4Ljg4LDQuODhMMjEuNzEsNy43MUw5LDIwLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjAsMkg4QTIsMiAwIDAsMCA2LDRWMTZBMiwyIDAgMCwwIDgsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMjAsMTZIOFY0SDIwVjE2TTE2LDIwVjIySDRBMiwyIDAgMCwxIDIsMjBWN0g0VjIwSDE2TTE4LjUzLDguMDZMMTcuNDcsN0wxMi41OSwxMS44OEwxMC40Nyw5Ljc2TDkuNDEsMTAuODJMMTIuNTksMTRMMTguNTMsOC4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0JveE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSw1VjE5SDVWNUgxOU0xMCwxN0w2LDEzTDcuNDEsMTEuNThMMTAsMTQuMTdMMTYuNTksNy41OEwxOCw5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTAgMTdMNSAxMkw2LjQxIDEwLjU5TDEwIDE0LjE3TDE3LjU5IDYuNThMMTkgOEwxMCAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0NpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyME0xNi41OSA3LjU4TDEwIDE0LjE3TDcuNDEgMTEuNTlMNiAxM0wxMCAxN0wxOCA5TDE2LjU5IDcuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tEZWNhZ3JhbSA9IFwiTTIzLDEyTDIwLjU2LDkuMjJMMjAuOSw1LjU0TDE3LjI5LDQuNzJMMTUuNCwxLjU0TDEyLDNMOC42LDEuNTRMNi43MSw0LjcyTDMuMSw1LjUzTDMuNDQsOS4yMUwxLDEyTDMuNDQsMTQuNzhMMy4xLDE4LjQ3TDYuNzEsMTkuMjlMOC42LDIyLjQ3TDEyLDIxTDE1LjQsMjIuNDZMMTcuMjksMTkuMjhMMjAuOSwxOC40NkwyMC41NiwxNC43OEwyMywxMk0xMCwxN0w2LDEzTDcuNDEsMTEuNTlMMTAsMTQuMTdMMTYuNTksNy41OEwxOCw5TDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrRGVjYWdyYW1PdXRsaW5lID0gXCJNMjMgMTJMMjAuNiA5LjJMMjAuOSA1LjVMMTcuMyA0LjdMMTUuNCAxLjVMMTIgM0w4LjYgMS41TDYuNyA0LjdMMy4xIDUuNUwzLjQgOS4yTDEgMTJMMy40IDE0LjhMMy4xIDE4LjVMNi43IDE5LjNMOC42IDIyLjVMMTIgMjFMMTUuNCAyMi41TDE3LjMgMTkuM0wyMC45IDE4LjVMMjAuNiAxNC44TDIzIDEyTTE4LjcgMTYuOUwxNiAxNy41TDE0LjYgMTkuOUwxMiAxOC44TDkuNCAxOS45TDggMTcuNUw1LjMgMTYuOUw1LjUgMTQuMUwzLjcgMTJMNS41IDkuOUw1LjMgNy4xTDggNi41TDkuNCA0LjFMMTIgNS4yTDE0LjYgNC4xTDE2IDYuNUwxOC43IDcuMUwxOC41IDkuOUwyMC4zIDEyTDE4LjUgMTQuMUwxOC43IDE2LjlNMTYuNiA3LjZMMTggOUwxMCAxN0w2IDEzTDcuNCAxMS42TDEwIDE0LjJMMTYuNiA3LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tOZXR3b3JrID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU04LjI1LDEwLjA4TDkuNDEsOC45MkwxMSwxMC41TDE0LjU5LDYuOTJMMTUuNzUsOC4zM0wxMSwxMy4wOEw4LjI1LDEwLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrTmV0d29ya091dGxpbmUgPSBcIk0xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTdIMTdBMiwyIDAgMCwwIDE5LDE1VjVBMiwyIDAgMCwwIDE3LDNIN0EyLDIgMCAwLDAgNSw1VjE1QTIsMiAwIDAsMCA3LDE3SDExVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1TTcsMTVWNUgxN1YxNUg3TTgsMTAuMzdMOS4yNCw5LjEzTDEwLjkzLDEwLjgzTDE0Ljc2LDdMMTYsOC41TDEwLjkzLDEzLjU3TDgsMTAuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tPdXRsaW5lID0gXCJNMTkuNzgsMi4yTDI0LDYuNDJMOC40NCwyMkwwLDEzLjU1TDQuMjIsOS4zM0w4LjQ0LDEzLjU1TDE5Ljc4LDIuMk0xOS43OCw1TDguNDQsMTYuMzZMNC4yMiwxMi4xOUwyLjgxLDEzLjU1TDguNDQsMTkuMTdMMjEuMTksNi40MkwxOS43OCw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrVW5kZXJsaW5lID0gXCJNMjEsNUw5LDE3TDMuNSwxMS41TDQuOTEsMTAuMDlMOSwxNC4xN0wxOS41OSwzLjU5TDIxLDVNMywyMVYxOUgyMVYyMUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrVW5kZXJsaW5lQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTcsMThIN1YxNkgxN1YxOE0xMC4zLDE0TDcsMTAuN0w4LjQsOS4zTDEwLjMsMTEuMkwxNS42LDUuOUwxNyw3LjNMMTAuMywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja1VuZGVybGluZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTcsMTVIMTdWMTdIN1YxNU0xMC4zLDExLjJMOC40LDkuM0w3LDEwLjdMMTAuMywxNEwxNyw3LjNMMTUuNiw1LjlMMTAuMywxMS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm9vayA9IFwiTTUsMTRIMTlWMTVINVYxNE0yMSwxN1Y4SDNWMTdIMjFNMSw1SDIzVjE5SDFWNU01LDEwSDEyVjEySDVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFuayA9IFwiTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94QmxhbmtDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveEJsYW5rQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFua09mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDYgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyA0Ljk3IDMgNC45NCAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDVDMjEgMy44OSAyMC4xIDMgMTkgM0g2LjJMMjEgMTcuOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94QmxhbmtPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuOVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5LjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxOVY2Ljg5TDE3LjExIDE5SDVNOC4yIDVMNi4yIDNIMTlDMjAuMSAzIDIxIDMuODkgMjEgNVYxNy44TDE5IDE1LjhWNUg4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFua091dGxpbmUgPSBcIk0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xOSw1VjE5SDVWNUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveEludGVybWVkaWF0ZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xNywxN0g3VjdIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNYXJrZWQgPSBcIk0xMCwxN0w1LDEyTDYuNDEsMTAuNThMMTAsMTQuMTdMMTcuNTksNi41OEwxOSw4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TWFya2VkQ2lyY2xlID0gXCJNMTAsMTdMNSwxMkw2LjQxLDEwLjU4TDEwLDE0LjE3TDE3LjU5LDYuNThMMTksOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveE1hcmtlZENpcmNsZU91dGxpbmUgPSBcIk0yMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRDMTIuNzYsNCAxMy41LDQuMTEgMTQuMiw0LjMxTDE1Ljc3LDIuNzRDMTQuNjEsMi4yNiAxMy4zNCwyIDEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMk03LjkxLDEwLjA4TDYuNSwxMS41TDExLDE2TDIxLDZMMTkuNTksNC41OEwxMSwxMy4xN0w3LjkxLDEwLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TWFya2VkT3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxNVYzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjExSDE5TTcuOTEsMTAuMDhMNi41LDExLjVMMTEsMTZMMjEsNkwxOS41OSw0LjU4TDExLDEzLjE3TDcuOTEsMTAuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rID0gXCJNMjIsMTZBMiwyIDAgMCwxIDIwLDE4SDhDNi44OSwxOCA2LDE3LjEgNiwxNlY0QzYsMi44OSA2Ljg5LDIgOCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2TTE2LDIwVjIySDRBMiwyIDAgMCwxIDIsMjBWN0g0VjIwSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TXVsdGlwbGVCbGFua0NpcmNsZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rQ2lyY2xlT3V0bGluZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk0xNCw0QzE3LjMyLDQgMjAsNi42OSAyMCwxMEMyMCwxMy4zMiAxNy4zMiwxNiAxNCwxNkE2LDYgMCAwLDEgOCwxMEE2LDYgMCAwLDEgMTQsNE00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rT3V0bGluZSA9IFwiTTIwLDE2VjRIOFYxNkgyME0yMiwxNkEyLDIgMCAwLDEgMjAsMThIOEM2Ljg5LDE4IDYsMTcuMSA2LDE2VjRDNiwyLjg5IDYuODksMiA4LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZNMTYsMjBWMjJINEEyLDIgMCAwLDEgMiwyMFY3SDRWMjBIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZU1hcmtlZCA9IFwiTTIyLDE2QTIsMiAwIDAsMSAyMCwxOEg4QzYuODksMTggNiwxNy4xIDYsMTZWNEM2LDIuODkgNi44OSwyIDgsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNk0xNiwyMFYyMkg0QTIsMiAwIDAsMSAyLDIwVjdINFYyMEgxNk0xMywxNEwyMCw3TDE4LjU5LDUuNTlMMTMsMTEuMTdMOS45MSw4LjA5TDguNSw5LjVMMTMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZU1hcmtlZENpcmNsZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJNMTguMDksNi4wOEwxOS41LDcuNUwxMywxNEw5LjIxLDEwLjIxTDEwLjYzLDguNzlMMTMsMTEuMTdcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveE11bHRpcGxlTWFya2VkQ2lyY2xlT3V0bGluZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEgyMEMyMCwxMy4zMiAxNy4zMiwxNiAxNCwxNkE2LDYgMCAwLDEgOCwxMEE2LDYgMCAwLDEgMTQsNEMxNC40Myw0IDE0Ljg2LDQuMDUgMTUuMjcsNC4xNEwxNi44OCwyLjU0QzE1Ljk2LDIuMTggMTUsMiAxNCwyTTIwLjU5LDMuNThMMTQsMTAuMTdMMTEuNjIsNy43OUwxMC4yMSw5LjIxTDE0LDEzTDIyLDVNNC45Myw1LjgyQzMuMDgsNy4zNCAyLDkuNjEgMiwxMkE4LDggMCAwLDAgMTAsMjBDMTAuNjQsMjAgMTEuMjcsMTkuOTIgMTEuODgsMTkuNzdDMTAuMTIsMTkuMzggOC41LDE4LjUgNy4xNywxNy4yOUM1LjIyLDE2LjI1IDQsMTQuMjEgNCwxMkM0LDExLjcgNC4wMywxMS40MSA0LjA3LDExLjExQzQuMDMsMTAuNzQgNCwxMC4zNyA0LDEwQzQsOC41NiA0LjMyLDcuMTMgNC45Myw1LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TXVsdGlwbGVNYXJrZWRPdXRsaW5lID0gXCJNMjAsMTZWMTBIMjJWMTZBMiwyIDAgMCwxIDIwLDE4SDhDNi44OSwxOCA2LDE3LjEgNiwxNlY0QzYsMi44OSA2Ljg5LDIgOCwySDE2VjRIOFYxNkgyME0xMC45MSw3LjA4TDE0LDEwLjE3TDIwLjU5LDMuNThMMjIsNUwxNCwxM0w5LjUsOC41TDEwLjkxLDcuMDhNMTYsMjBWMjJINEEyLDIgMCAwLDEgMiwyMFY3SDRWMjBIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tlcmJvYXJkID0gXCJNMiAyVjIySDIyVjJIMk0yMCAxMkgxNlYxNkgyMFYyMEgxNlYxNkgxMlYyMEg4VjE2SDRWMTJIOFY4SDRWNEg4VjhIMTJWNEgxNlY4SDIwVjEyTTE2IDhWMTJIMTJWOEgxNk0xMiAxMlYxNkg4VjEySDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrZXJib2FyZE1pbnVzID0gXCJNMTQgMTdWMTlIMjJWMTdNOCAxNkgxMlYxMkg4VjE2TTEyIDEySDE2VjhIMTJWMTJNMiAyVjIySDEzLjVDMTMgMjEuNCAxMi42IDIwLjcgMTIuMyAyMEg4VjE2SDRWMTJIOFY4SDRWNEg4VjhIMTJWNEgxNlY4SDIwVjEyLjRDMjAuNyAxMi43IDIxLjQgMTMuMSAyMiAxMy42VjJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2VyYm9hcmRQbHVzID0gXCJNMTkgMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRIMTlWMTdNOCAxNkgxMlYxMkg4VjE2TTEyIDEySDE2VjhIMTJWMTJNMiAyVjIySDEzLjU0QzEzIDIxLjQyIDEyLjYzIDIwLjc0IDEyLjM2IDIwSDhWMTZINFYxMkg4VjhINFY0SDhWOEgxMlY0SDE2VjhIMjBWMTIuMzZDMjAuNzQgMTIuNjMgMjEuNDIgMTMgMjIgMTMuNTRWMkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrZXJib2FyZFJlbW92ZSA9IFwiTTggMTZIMTJWMTJIOFYxNk0xMiAxMkgxNlY4SDEyVjEyTTIgMlYyMkgxMy41QzEzIDIxLjQgMTIuNiAyMC43IDEyLjMgMjBIOFYxNkg0VjEySDhWOEg0VjRIOFY4SDEyVjRIMTZWOEgyMFYxMi40QzIwLjcgMTIuNyAyMS40IDEzLjEgMjIgMTMuNlYySDJNMjAuMSAxNC41TDE4IDE2LjZMMTUuOSAxNC41TDE0LjUgMTUuOUwxNi42IDE4TDE0LjUgMjAuMUwxNS45IDIxLjVMMTggMTkuNEwyMC4xIDIxLjVMMjEuNSAyMC4xTDE5LjQgMThMMjEuNSAxNS45TDIwLjEgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVlc2UgPSBcIk0xMSAxNy41QzExIDE2LjY3IDExLjY3IDE2IDEyLjUgMTZDMTIuNzkgMTYgMTMuMDYgMTYuMDkgMTMuMjkgMTYuMjNMMjAuNzUgMTEuOTNDMjAuMzUgMTEuMjIgMTkuOSAxMC41NSAxOS40MSA5LjlDMTkuMjkgOS45NiAxOS4xNSAxMCAxOSAxMEMxOC40NSAxMCAxOCA5LjU1IDE4IDlDMTggOC44IDE4LjA4IDguNjIgMTguMTggOC40NkMxNi40NSA2LjY0IDE0LjM0IDUuMiAxMiA0LjI1QzExLjg1IDUuMjQgMTEgNiAxMCA2QzguOSA2IDggNS4xMSA4IDRDOCAzLjcyIDguMDYgMy40NSA4LjE2IDMuMjFDNy4zIDMuMDggNi40MSAzIDUuNSAzQzUuMzMgMyA1LjE3IDMgNSAzLjAzVjkuMDVDNi4xNCA5LjI4IDcgMTAuMjkgNyAxMS41UzYuMTQgMTMuNzIgNSAxMy45NVYyMUwxMSAxNy41NEMxMSAxNy41MyAxMSAxNy41IDExIDE3LjVNMTQgOUMxNS4xMSA5IDE2IDkuOSAxNiAxMVMxNS4xMSAxMyAxNCAxMyAxMiAxMi4xMSAxMiAxMSAxMi45IDkgMTQgOU05IDE2QzguNDUgMTYgOCAxNS41NSA4IDE1UzguNDUgMTQgOSAxNCAxMCAxNC40NSAxMCAxNSA5LjU1IDE2IDkgMTZNOSAxMEM4LjQ1IDEwIDggOS41NSA4IDlTOC40NSA4IDkgOCAxMCA4LjQ1IDEwIDkgOS41NSAxMCA5IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWVzZU9mZiA9IFwiTTMuNSAxLjdMMi4yIDNMNi4xIDYuOVY5QzcuMiA5LjIgOC4xIDEwLjIgOC4xIDExLjVTNy4yIDEzLjcgNi4xIDE0VjIxTDEyLjEgMTcuNUMxMi4xIDE2LjcgMTIuOCAxNiAxMy42IDE2QzEzLjkgMTYgMTQuMiAxNi4xIDE0LjQgMTYuMkwxNS4xIDE1LjhMMjAuMyAyMUwyMS42IDE5LjdMMy41IDEuN00xMC4xIDE2QzkuNiAxNiA5LjEgMTUuNSA5LjEgMTVTOS42IDE0IDEwLjEgMTQgMTEuMSAxNC41IDExLjEgMTUgMTAuNiAxNiAxMC4xIDE2TTEzLjggOS41TDkuOSA1LjZDMTAuMiA1LjkgMTAuNiA2IDExLjEgNkMxMi4xIDYgMTIuOSA1LjIgMTMuMSA0LjJDMTUuNCA1LjIgMTcuNiA2LjYgMTkuMyA4LjRDMTkuMiA4LjYgMTkuMSA4LjcgMTkuMSA4LjlDMTkuMSA5LjQgMTkuNiA5LjkgMjAuMSA5LjlDMjAuMyA5LjkgMjAuNCA5LjkgMjAuNSA5LjhDMjEgMTAuNCAyMS40IDExLjEgMjEuOCAxMS44TDE4LjMgMTMuOEwxNi42IDEyLjFDMTYuOSAxMS44IDE3LjEgMTEuMyAxNy4xIDEwLjhDMTcuMSA5LjcgMTYuMiA4LjggMTUuMSA4LjhDMTQuNiA5IDE0LjEgOS4yIDEzLjggOS41TTkuNSA1LjJMNy4zIDNDOCAzIDguNiAzLjEgOS4yIDMuMkM5LjEgMy41IDkuMSAzLjcgOS4xIDRDOS4xIDQuNCA5LjIgNC45IDkuNSA1LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlZkhhdCA9IFwiTTEyLjUsMS41QzEwLjczLDEuNSA5LjE3LDIuNjcgOC42Nyw0LjM3QzguMTQsNC4xMyA3LjU4LDQgNyw0QTQsNCAwIDAsMCAzLDhDMyw5LjgyIDQuMjQsMTEuNDEgNiwxMS44N1YxOUgxOVYxMS44N0MyMC43NiwxMS40MSAyMiw5LjgyIDIyLDhBNCw0IDAgMCwwIDE4LDRDMTcuNDIsNCAxNi44Niw0LjEzIDE2LjMzLDQuMzdDMTUuODMsMi42NyAxNC4yNywxLjUgMTIuNSwxLjVNMTIsMTAuNUgxM1YxNy41SDEyVjEwLjVNOSwxMi41SDEwVjE3LjVIOVYxMi41TTE1LDEyLjVIMTZWMTcuNUgxNVYxMi41TTYsMjBWMjFBMSwxIDAgMCwwIDcsMjJIMThBMSwxIDAgMCwwIDE5LDIxVjIwSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlbWljYWxXZWFwb24gPSBcIk0xMSw3LjgzQzkuODMsNy40MiA5LDYuMyA5LDVBMywzIDAgMCwxIDEyLDJBMywzIDAgMCwxIDE1LDVDMTUsNi4zMSAxNC4xNiw3LjQyIDEzLDcuODNWMTAuNjRDMTIuNjgsMTAuNTUgMTIuMzUsMTAuNSAxMiwxMC41QzExLjY1LDEwLjUgMTEuMzIsMTAuNTUgMTEsMTAuNjRWNy44M00xOC4zLDIxLjFDMTcuMTYsMjAuNDUgMTYuNjIsMTkuMTggMTYuODQsMTcuOTZMMTQuNCwxNi41NUMxNC44OCwxNi4wOSAxNS4yNCwxNS41IDE1LjQsMTQuODJMMTcuODQsMTYuMjNDMTguNzgsMTUuNDIgMjAuMTYsMTUuMjYgMjEuMjksMTUuOTFDMjIuNzMsMTYuNzQgMjMuMjIsMTguNTcgMjIuMzksMjBDMjEuNTYsMjEuNDQgMTkuNzMsMjEuOTMgMTguMywyMS4xTTIuNywxNS45QzMuODMsMTUuMjUgNS4yMSwxNS40MiA2LjE1LDE2LjIyTDguNiwxNC44MUM4Ljc2LDE1LjUgOS4xMSwxNi4wOCA5LjYsMTYuNTRMNy4xNSwxNy45NUM3LjM4LDE5LjE3IDYuODMsMjAuNDUgNS43LDIxLjFDNC4yNiwyMS45MyAyLjQzLDIxLjQ0IDEuNiwyMEMwLjc3LDE4LjU3IDEuMjYsMTYuNzMgMi43LDE1LjlNMTQsMTRBMiwyIDAgMCwxIDEyLDE2QzEwLjg5LDE2IDEwLDE1LjEgMTAsMTRBMiwyIDAgMCwxIDEyLDEyQzEzLjExLDEyIDE0LDEyLjkgMTQsMTRNMTcsMTRMMTYuOTcsMTQuNTdMMTUuNSwxMy43MUMxNS40LDEyLjY0IDE0LjgzLDExLjcxIDE0LDExLjEyVjkuNDFDMTUuNzcsMTAuMTkgMTcsMTEuOTUgMTcsMTRNMTQuOTcsMTguMDNDMTQuMTQsMTguNjQgMTMuMTEsMTkgMTIsMTlDMTAuODksMTkgOS44NiwxOC42NCA5LjAzLDE4TDEwLjUsMTcuMTdDMTAuOTYsMTcuMzggMTEuNDcsMTcuNSAxMiwxNy41QzEyLjUzLDE3LjUgMTMuMDMsMTcuMzggMTMuNSwxNy4xN0wxNC45NywxOC4wM003LjAzLDE0LjU2TDcsMTRDNywxMS45NSA4LjIzLDEwLjE5IDEwLDkuNDJWMTEuMTNDOS4xNywxMS43MSA4LjYsMTIuNjQgOC41LDEzLjdMNy4wMywxNC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc0Jpc2hvcCA9IFwiTTE5LDIySDVWMjBIMTlWMjJNMTcuMTYsOC4yNkMxOC4yMiw5LjYzIDE4Ljg2LDExLjI4IDE5LDEzQzE5LDE1Ljc2IDE1Ljg3LDE4IDEyLDE4QzguMTMsMTggNSwxNS43NiA1LDEzQzUsMTAuNjIgNy4zMyw2LjM5IDEwLjQ2LDUuMjdDMTAuMTYsNC45MSAxMCw0LjQ2IDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC40NiAxMy44NCw0LjkxIDEzLjU0LDUuMjdDMTQuNCw1LjYgMTUuMTgsNi4xIDE1Ljg0LDYuNzRMMTEuMjksMTEuMjlMMTIuNzEsMTIuNzFMMTcuMTYsOC4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc0tpbmcgPSBcIk0xOSwyMkg1VjIwSDE5VjIyTTE3LDEwQzE1LjU4LDEwIDE0LjI2LDEwLjc3IDEzLjU1LDEySDEzVjdIMTZWNUgxM1YySDExVjVIOFY3SDExVjEySDEwLjQ1QzkuMzUsMTAuMDkgNi45LDkuNDMgNSwxMC41NEMzLjA3LDExLjY0IDIuNDIsMTQuMDkgMy41LDE2QzQuMjQsMTcuMjQgNS41NywxOCA3LDE4SDE3QTQsNCAwIDAsMCAyMSwxNEE0LDQgMCAwLDAgMTcsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlc3NLbmlnaHQgPSBcIk0xOSwyMkg1VjIwSDE5VjIyTTEzLDJWMkMxMS43NSwyIDEwLjU4LDIuNjIgOS44OSwzLjY2TDcsOEw5LDEwTDExLjA2LDguNjNDMTEuNSw4LjMyIDEyLjE0LDguNDQgMTIuNDUsOC45QzEyLjQ3LDguOTMgMTIuNSw4Ljk2IDEyLjUsOVY5QzEyLjgsOS41OSAxMi42OSwxMC4zIDEyLjIyLDEwLjc3TDcuNDIsMTUuNTdDNi44NywxNi4xMyA2Ljg3LDE3LjAzIDcuNDMsMTcuNThDNy42OSwxNy44NCA4LjA1LDE4IDguNDIsMThIMTdWNkE0LDQgMCAwLDAgMTMsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc1Bhd24gPSBcIk0xOSAyMkg1VjIwSDE5VjIyTTE2IDE4SDhMMTAuMTggMTBIOFY4SDEwLjcyTDEwLjc5IDcuNzRDMTAuMSA3LjQ0IDkuNTUgNi44OSA5LjI1IDYuMkM4LjU4IDQuNjggOS4yNyAyLjkxIDEwLjc5IDIuMjVDMTIuMzEgMS41OCAxNC4wOCAyLjI3IDE0Ljc0IDMuNzlDMTUuNDEgNS4zMSAxNC43MiA3LjA3IDEzLjIgNy43NEwxMy4yNyA4SDE2VjEwSDEzLjgyTDE2IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXNzUXVlZW4gPSBcIk0xOCwzQTIsMiAwIDAsMSAyMCw1QzIwLDUuODEgMTkuNSw2LjUgMTguODMsNi44MkwxNywxMy4xNVYxOEg3VjEzLjE1TDUuMTcsNi44MkM0LjUsNi41IDQsNS44MSA0LDVBMiwyIDAgMCwxIDYsM0EyLDIgMCAwLDEgOCw1QzgsNS41IDcuODIsNS45NSA3LjUsNi4zTDEwLjMsOS4zNUwxMC44Myw1LjYyQzEwLjMzLDUuMjYgMTAsNC42NyAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuNjcgMTMuNjcsNS4yNiAxMy4xNyw1LjYyTDEzLjcsOS4zNUwxNi40Nyw2LjI5QzE2LjE4LDUuOTQgMTYsNS41IDE2LDVBMiwyIDAgMCwxIDE4LDNNNSwyMEgxOVYyMkg1VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXNzUm9vayA9IFwiTTUsMjBIMTlWMjJINVYyME0xNywyVjVIMTVWMkgxM1Y1SDExVjJIOVY1SDdWMkg1VjhIN1YxOEgxN1Y4SDE5VjJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvdWJsZURvd24gPSBcIk0xNi41OSw1LjU5TDE4LDdMMTIsMTNMNiw3TDcuNDEsNS41OUwxMiwxMC4xN0wxNi41OSw1LjU5TTE2LjU5LDExLjU5TDE4LDEzTDEyLDE5TDYsMTNMNy40MSwxMS41OUwxMiwxNi4xN0wxNi41OSwxMS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG91YmxlTGVmdCA9IFwiTTE4LjQxLDcuNDFMMTcsNkwxMSwxMkwxNywxOEwxOC40MSwxNi41OUwxMy44MywxMkwxOC40MSw3LjQxTTEyLjQxLDcuNDFMMTEsNkw1LDEyTDExLDE4TDEyLjQxLDE2LjU5TDcuODMsMTJMMTIuNDEsNy40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG91YmxlUmlnaHQgPSBcIk01LjU5LDcuNDFMNyw2TDEzLDEyTDcsMThMNS41OSwxNi41OUwxMC4xNywxMkw1LjU5LDcuNDFNMTEuNTksNy40MUwxMyw2TDE5LDEyTDEzLDE4TDExLjU5LDE2LjU5TDE2LjE3LDEyTDExLjU5LDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvdWJsZVVwID0gXCJNNy40MSwxOC40MUw2LDE3TDEyLDExTDE4LDE3TDE2LjU5LDE4LjQxTDEyLDEzLjgzTDcuNDEsMTguNDFNNy40MSwxMi40MUw2LDExTDEyLDVMMTgsMTFMMTYuNTksMTIuNDFMMTIsNy44M0w3LjQxLDEyLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25Eb3duID0gXCJNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25Cb3ggPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTIsMTUuNzFMNiw5LjcxTDcuNDEsOC4yOUwxMiwxMi44OEwxNi41OSw4LjI5TDE4LDkuNzFMMTIsMTUuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25Cb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU03LjQxLDguMjlMMTIsMTIuODhMMTYuNTksOC4yOUwxOCw5LjcxTDEyLDE1LjcxTDYsOS43MUw3LjQxLDguMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25DaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNNiwxMEwxMiwxNkwxOCwxMEwxNi42LDguNkwxMiwxMy4yTDcuNCw4LjZMNiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG93bkNpcmNsZU91dGxpbmUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk02LDEwTDEyLDE2TDE4LDEwTDE2LjYsOC42TDEyLDEzLjJMNy40LDguNkw2LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25MZWZ0ID0gXCJNMTUuNDEsMTYuNThMMTAuODMsMTJMMTUuNDEsNy40MUwxNCw2TDgsMTJMMTQsMThMMTUuNDEsMTYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRCb3ggPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTUuNzEsMTYuNTlMMTQuMjksMThMOC4yOSwxMkwxNC4yOSw2TDE1LjcxLDcuNDFMMTEuMTIsMTJMMTUuNzEsMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRCb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xNS43MSw3LjQxTDExLjEyLDEyTDE1LjcxLDE2LjU5TDE0LjI5LDE4TDguMjksMTJMMTQuMjksNkwxNS43MSw3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25MZWZ0Q2lyY2xlID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTE1LjQsMTYuNkwxMC44LDEyTDE1LjQsNy40TDE0LDZMOCwxMkwxNCwxOEwxNS40LDE2LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRDaXJjbGVPdXRsaW5lID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJNMTUuNCwxNi42TDEwLjgsMTJMMTUuNCw3LjRMMTQsNkw4LDEyTDE0LDE4TDE1LjQsMTYuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uUmlnaHQgPSBcIk04LjU5LDE2LjU4TDEzLjE3LDEyTDguNTksNy40MUwxMCw2TDE2LDEyTDEwLDE4TDguNTksMTYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Qm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTkuNzEsMThMOC4yOSwxNi41OUwxMi44OCwxMkw4LjI5LDcuNDFMOS43MSw2TDE1LjcxLDEyTDkuNzEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Qm94T3V0bGluZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QzMsMjAuMTEgMy45LDIxIDUsMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSwxOUg1VjVIMTlWMTlNOC4yOSwxNi41OUwxMi44OCwxMkw4LjI5LDcuNDFMOS43MSw2TDE1LjcxLDEyTDkuNzEsMThMOC4yOSwxNi41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uUmlnaHRDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTAsMThMMTYsMTJMMTAsNkw4LjYsNy40TDEzLjIsMTJMOC42LDE2LjZMMTAsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Q2lyY2xlT3V0bGluZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTguNiwxNi42TDEzLjIsMTJMOC42LDcuNEwxMCw2TDE2LDEyTDEwLDE4TDguNiwxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25UcmlwbGVEb3duID0gXCJNNy40MSwxNC41OEwxMiwxOS4xN0wxNi41OSwxNC41OEwxOCwxNkwxMiwyMkw2LDE2TDcuNDEsMTQuNThNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThNNy40MSwyLjU4TDEyLDcuMTdMMTYuNTksMi41OEwxOCw0TDEyLDEwTDYsNEw3LjQxLDIuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZUxlZnQgPSBcIk05LjQyLDcuNDFMNC44MywxMkw5LjQyLDE2LjU5TDgsMThMMiwxMkw4LDZMOS40Miw3LjQxTTE1LjQyLDcuNDFMMTAuODMsMTJMMTUuNDIsMTYuNTlMMTQsMThMOCwxMkwxNCw2TDE1LjQyLDcuNDFNMjEuNDIsNy40MUwxNi44MywxMkwyMS40MiwxNi41OUwyMCwxOEwxNCwxMkwyMCw2TDIxLjQyLDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZVJpZ2h0ID0gXCJNMTQuNTgsMTYuNTlMMTkuMTcsMTJMMTQuNTgsNy40MUwxNiw2TDIyLDEyTDE2LDE4TDE0LjU4LDE2LjU5TTguNTgsMTYuNTlMMTMuMTcsMTJMOC41OCw3LjQxTDEwLDZMMTYsMTJMMTAsMThMOC41OCwxNi41OU0yLjU4LDE2LjU5TDcuMTcsMTJMMi41OCw3LjQxTDQsNkwxMCwxMkw0LDE4TDIuNTgsMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZVVwID0gXCJNMTYuNTksOS40MkwxMiw0LjgzTDcuNDEsOS40Mkw2LDhMMTIsMkwxOCw4TDE2LjU5LDkuNDJNMTYuNTksMTUuNDJMMTIsMTAuODNMNy40MSwxNS40Mkw2LDE0TDEyLDhMMTgsMTRMMTYuNTksMTUuNDJNMTYuNTksMjEuNDJMMTIsMTYuODNMNy40MSwyMS40Mkw2LDIwTDEyLDE0TDE4LDIwTDE2LjU5LDIxLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcCA9IFwiTTcuNDEsMTUuNDFMMTIsMTAuODNMMTYuNTksMTUuNDFMMTgsMTRMMTIsOEw2LDE0TDcuNDEsMTUuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblVwQm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE2LjU5LDE1LjcxTDEyLDExLjEyTDcuNDEsMTUuNzFMNiwxNC4yOUwxMiw4LjI5TDE4LDE0LjI5TDE2LjU5LDE1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcEJveE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTksMTlINVY1SDE5VjE5TTE2LjU5LDE1LjcxTDEyLDExLjEyTDcuNDEsMTUuNzFMNiwxNC4yOUwxMiw4LjI5TDE4LDE0LjI5TDE2LjU5LDE1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcENpcmNsZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LjQsMTUuNEwxMiwxMC44TDE2LjYsMTUuNEwxOCwxNEwxMiw4TDYsMTRMNy40LDE1LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblVwQ2lyY2xlT3V0bGluZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTcuNCwxNS40TDEyLDEwLjhMMTYuNiwxNS40TDE4LDE0TDEyLDhMNiwxNEw3LjQsMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGlsaUhvdCA9IFwiTTE3Ljc1LDlMMTguOTUsOC4yNEMxOS41OCw4LjU4IDIwLDkuMjQgMjAsMTBWMjEuNzVDMjAsMjEuNzUgMTIsMjAgMTIsMTFWMTBDMTIsOS4yNyAxMi4zOSw4LjYzIDEyLjk3LDguMjhMMTQuNDMsOUwxNiw4TDE3Ljc1LDlNMTQsMkMxNS41MywyIDE2LjgsMy4xNSAxNyw0LjY0QzE4LDQuOTMgMTguODEsNS42NyAxOS4yMiw2LjYzTDE3Ljc1LDcuNUwxNiw2LjVMMTQuNDMsNy41TDEyLjc2LDYuNjdDMTMuMTUsNS43MiAxMy45NSw1IDE0Ljk0LDQuNjZDMTQuOCw0LjI4IDE0LjQzLDQgMTQsNFYyTTEwLDEwQzEwLDE4IDEzLjYzLDE5Ljg0IDE2LDIxLjc1QzE2LDIxLjc1IDgsMjAgOCwxMVYxMEM4LDkuMjcgOC4zOSw4LjYzIDguOTcsOC4yOEwxMC4zLDguOTRDMTAuMTEsOS4yNSAxMCw5LjYxIDEwLDEwTTEwLjQzLDcuNUw4Ljc2LDYuNjdDOS4xNSw1LjcyIDkuOTUsNSAxMC45NCw0LjY2QzEwLjgsNC4yOCAxMC40Myw0IDEwLDRWMkMxMC43NywyIDExLjQ3LDIuMjkgMTIsMi43NlY0QzEyLjQzLDQgMTIuOCw0LjI4IDEyLjk0LDQuNjZDMTEuOTUsNSAxMS4xNSw1LjcyIDEwLjQzLDcuNU02LDEwQzYsMTggOS42MywxOS44NCAxMiwyMS43NUMxMiwyMS43NSA0LDIwIDQsMTFWMTBDNCw5LjI3IDQuMzksOC42MyA0Ljk3LDguMjhMNi4zLDguOTRDNi4xMSw5LjI1IDYsOS42MSA2LDEwTTYuNDMsNy41TDQuNzYsNi42N0M1LjE1LDUuNzIgNS45NSw1IDYuOTQsNC42NkM2LjgsNC4yOCA2LjQzLDQgNiw0VjJDNi43NywyIDcuNDcsMi4yOSA4LDIuNzZWNEM4LjQzLDQgOC44LDQuMjggOC45NCw0LjY2QzcuOTUsNSA3LjE1LDUuNzIgNi40Myw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpbGlNZWRpdW0gPSBcIk0xNS43NSw5TDE2Ljk1LDguMjRDMTcuNTgsOC41OCAxOCw5LjI0IDE4LDEwVjIxLjc1QzE4LDIxLjc1IDEwLDIwIDEwLDExVjEwQzEwLDkuMjcgMTAuMzksOC42MyAxMC45Nyw4LjI4TDEyLjQzLDlMMTQsOEwxNS43NSw5TTEyLDJDMTMuNTMsMiAxNC44LDMuMTUgMTUsNC42NEMxNiw0LjkzIDE2LjgxLDUuNjcgMTcuMjIsNi42M0wxNS43NSw3LjVMMTQsNi41TDEyLjQzLDcuNUwxMC43Niw2LjY3QzExLjE1LDUuNzIgMTEuOTUsNSAxMi45NCw0LjY2QzEyLjgsNC4yOCAxMi40Myw0IDEyLDRWMk04LDEwQzgsMTggMTEuNjMsMTkuODQgMTQsMjEuNzVDMTQsMjEuNzUgNiwyMCA2LDExVjEwQzYsOS4yNyA2LjM5LDguNjMgNi45Nyw4LjI4TDguMyw4Ljk0QzguMTEsOS4yNSA4LDkuNjEgOCwxME04LjQzLDcuNUw2Ljc2LDYuNjdDNy4xNSw1LjcyIDcuOTUsNSA4Ljk0LDQuNjZDOC44LDQuMjggOC40Myw0IDgsNFYyQzguNzcsMiA5LjQ3LDIuMjkgMTAsMi43NlY0QzEwLjQzLDQgMTAuOCw0LjI4IDEwLjk0LDQuNjZDOS45NSw1IDkuMTUsNS43MiA4LjQzLDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGlsaU1pbGQgPSBcIk0xMy43NSw5TDE0Ljk1LDguMjRDMTUuNTgsOC41OCAxNiw5LjI0IDE2LDEwVjIxLjc1QzE2LDIxLjc1IDgsMjAgOCwxMVYxMEM4LDkuMjcgOC4zOSw4LjYzIDguOTcsOC4yOEwxMC40Myw5TDEyLDhMMTMuNzUsOU0xMCwyQzExLjUzLDIgMTIuOCwzLjE1IDEzLDQuNjRDMTQsNC45MyAxNC44MSw1LjY3IDE1LjIyLDYuNjNMMTMuNzUsNy41TDEyLDYuNUwxMC40Myw3LjVMOC43Niw2LjY3QzkuMTUsNS43MiA5Ljk1LDUgMTAuOTQsNC42NkMxMC44LDQuMjggMTAuNDMsNCAxMCw0VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpbGlPZmYgPSBcIk0yMC44IDIyLjdMMTYgMTcuOVYyMS44QzE2IDIxLjggOCAyMCA4IDExVjEwIDkuOUwxLjEgM0wyLjQgMS43TDIyLjEgMjEuNEwyMC44IDIyLjdNMTMuOCA5TDEyIDhMMTEuNSA4LjNMMTYgMTIuOFYxMEMxNiA5LjIgMTUuNiA4LjYgMTUgOC4yTDEzLjggOU0xMiA2LjVMMTMuOCA3LjVMMTUuMyA2LjZDMTQuOSA1LjYgMTQuMSA0LjkgMTMuMSA0LjZDMTIuOCAzLjIgMTEuNSAyIDEwIDJWNEMxMC40IDQgMTAuOCA0LjMgMTAuOSA0LjdDMTAuMiA0LjkgOS42IDUuNCA5LjIgNkwxMC42IDcuNEwxMiA2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpcCA9IFwiTTYsNEgxOFY1SDIxVjdIMThWOUgyMVYxMUgxOFYxM0gyMVYxNUgxOFYxN0gyMVYxOUgxOFYyMEg2VjE5SDNWMTdINlYxNUgzVjEzSDZWMTFIM1Y5SDZWN0gzVjVINlY0TTExLDE1VjE4SDEyVjE1SDExTTEzLDE1VjE4SDE0VjE1SDEzTTE1LDE1VjE4SDE2VjE1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNocmlzdGlhbml0eSA9IFwiTTEwLjUsMkgxMy41VjhIMTlWMTFIMTMuNVYyMkgxMC41VjExSDVWOEgxMC41VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hyaXN0aWFuaXR5T3V0bGluZSA9IFwiTTE1LjUsNlYxSDguNVY2SDNWMTNIOC41VjIzSDE1LjVWMTNIMjFWNkgxNS41TTE5LDExSDEzLjVWMjFIMTAuNVYxMUg1VjhIMTAuNVYzSDEzLjVWOEgxOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaHVyY2ggPSBcIk0xMSwySDEzVjRIMTVWNkgxM1Y5LjRMMjIsMTNWMTVMMjAsMTQuMlYyMkgxNFYxN0EyLDIgMCAwLDAgMTIsMTVBMiwyIDAgMCwwIDEwLDE3VjIySDRWMTQuMkwyLDE1VjEzTDExLDkuNFY2SDlWNEgxMVYyTTYsMjBIOFYxNUw3LDE0TDYsMTVWMjBNMTYsMjBIMThWMTVMMTcsMTRMMTYsMTVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lnYXIgPSBcIk0xNiAxMC4ySDE0LjVBMiAyIDAgMCAxIDEyLjY1IDguMkExLjc4IDEuNzggMCAwIDEgMTQuNSA2LjQ1VjVBMy4zNSAzLjM1IDAgMSAwIDE0LjUgMTEuN0gxNkExLjkzIDEuOTMgMCAwIDEgMTggMTMuN1YxNUgxOS41VjEzLjM2QTMuMzEgMy4zMSAwIDAgMCAxNiAxMC4yTTE4LjgyIDcuNzNBMy4zNCAzLjM0IDAgMCAwIDE2LjUgMlYzLjVBMS44NSAxLjg1IDAgMSAxIDE2LjUgNy4yVjguN0E0IDQgMCAwIDEgMjAuNSAxMi43N1YxNUgyMlYxMi43NkE1LjU1IDUuNTUgMCAwIDAgMTguODUgNy43M00xOCAxNlYyMkgxOS41VjE2TTIwLjUgMTZWMjJIMjJWMTZNMTIgMTZWMTcuMjdBMiAyIDAgMCAxIDEyIDIwLjczVjIySDE3VjE2TTIuODggMTYuODhBMyAzIDAgMCAwIDUgMjJIMTBWMjAuNzNBMiAyIDAgMCAxIDEwIDE3LjI3VjE2SDVBMyAzIDAgMCAwIDIuODggMTYuODhNMTIgMTlBMSAxIDAgMSAxIDExIDE4QTEgMSAwIDAgMSAxMiAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaWdhck9mZiA9IFwiTTIwLjg0IDIyLjczTDE4LjExIDIwSDE4VjE5Ljg5TDE3IDE4Ljg5VjIwSDEyVjE4LjczQzEyLjMgMTguNTYgMTIuNTUgMTguMzEgMTIuNzMgMThDMTMuMjggMTcuMDUgMTIuOTYgMTUuODMgMTIgMTUuMjdWMTRIMTIuMTFMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNC41IDkuN0gxNkMxNy4wNyA5LjY2IDE3Ljk2IDEwLjUgMTggMTEuNTZDMTggMTEuNjEgMTggMTEuNjUgMTggMTEuN1YxM0gxOS41VjExLjM2QzE5LjQyIDkuNTMgMTcuODggOC4xMiAxNi4wNSA4LjJMMTYgOC4ySDE0LjVDMTMuNDUgOC4xMiAxMi42NSA3LjI1IDEyLjY1IDYuMkMxMi42NyA1LjIyIDEzLjUgNC40MyAxNC40NiA0LjQ1TDE0LjUgNC40NVYzQzEyLjY1IDMgMTEuMTUgNC41IDExLjE1IDYuMzVTMTIuNjUgOS43IDE0LjUgOS43TTIwLjUgMTAuN0wyMC41IDEwLjc3VjEzSDIyVjEwLjc2QzIyIDguNjIgMjAuNzggNi42NiAxOC44NSA1LjczSDE4LjgyQzE5LjU4IDUgMTkuOSA0IDE5LjggM0gxOC4zMkMxOC4zNCAzLjExIDE4LjM1IDMuMjMgMTguMzUgMy4zNUMxOC4zNSA0LjM3IDE3LjUgNS4yIDE2LjUgNS4ySDE2LjVWNi43QzE4LjcxIDYuNyAyMC41IDguNSAyMC41IDEwLjdNOS4yNyAxNkM5LjQ1IDE1LjcgOS43IDE1LjQ1IDEwIDE1LjI3VjE0SDVDNC4yMSAxNCAzLjQ0IDE0LjMyIDIuODggMTQuODhDMS43MSAxNi4wNSAxLjcxIDE3Ljk1IDIuODggMTkuMTJDMy40NSAxOS42OCA0LjIxIDIwIDUgMjBIMTBWMTguNzNDOS4wNSAxOC4xOCA4LjcyIDE2Ljk1IDkuMjcgMTZNMTggMTQuOEwxOS41IDE2LjNWMTRIMThWMTQuOE0yMC41IDE3LjNMMjIgMTguOFYxNEgyMC41VjE3LjNNMTEgMTZDMTAuNDUgMTYgMTAgMTYuNDUgMTAgMTdTMTAuNDUgMTggMTEgMTggMTIgMTcuNTUgMTIgMTcgMTEuNTUgMTYgMTEgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlQm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM00xMiAxNkM5Ljc5IDE2IDggMTQuMjEgOCAxMlM5Ljc5IDggMTIgOCAxNiA5Ljc5IDE2IDEyIDE0LjIxIDE2IDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUJveE91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDhDOS43OSA4IDggOS43OSA4IDEyUzkuNzkgMTYgMTIgMTYgMTYgMTQuMjEgMTYgMTIgMTQuMjEgOCAxMiA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZURvdWJsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw2QTYsNiAwIDAsMCA2LDEyQTYsNiAwIDAsMCAxMiwxOEE2LDYgMCAwLDAgMTgsMTJBNiw2IDAgMCwwIDEyLDZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUVkaXRPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEySDIwQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNFYyTTE4Ljc4LDNDMTguNjEsMyAxOC40MywzLjA3IDE4LjMsMy4yTDE3LjA4LDQuNDFMMTkuNTgsNi45MUwyMC44LDUuN0MyMS4wNiw1LjQ0IDIxLjA2LDUgMjAuOCw0Ljc1TDE5LjI1LDMuMkMxOS4xMiwzLjA3IDE4Ljk1LDMgMTguNzgsM00xNi4zNyw1LjEyTDksMTIuNVYxNUgxMS41TDE4Ljg3LDcuNjJMMTYuMzcsNS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVFeHBhbmQgPSBcIk0xNiw0TDIwLDhWNE0yMCwxNkwxNiwyMEgyME04LDIwTDQsMTZWMjBNNCw4TDgsNEg0TTE2Ljk1LDcuMDVDMTQuMjIsNC4zMiA5Ljc4LDQuMzIgNy4wNSw3LjA1QzQuMzIsOS43OCA0LjMyLDE0LjIyIDcuMDUsMTYuOTVDOS43OCwxOS42OCAxNC4yMiwxOS42OCAxNi45NSwxNi45NUMxOS42OCwxNC4yMiAxOS42OCw5Ljc5IDE2Ljk1LDcuMDVNMTUuODUsMTUuODVDMTMuNzIsMTggMTAuMjgsMTggOC4xNSwxNS44NUM2LDEzLjcyIDYsMTAuMjggOC4xNSw4LjE1QzEwLjI4LDYgMTMuNzIsNiAxNS44NSw4LjE1QzE4LDEwLjI4IDE4LDEzLjcyIDE1Ljg1LDE1Ljg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUhhbGYgPSBcIk0xMiAyQTEwIDEwIDAgMCAwIDIgMTJBMTAgMTAgMCAwIDAgMTIgMjJWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVIYWxmRnVsbCA9IFwiTTEyIDJBMTAgMTAgMCAwIDAgMiAxMkExMCAxMCAwIDAgMCAxMiAyMkExMCAxMCAwIDAgMCAyMiAxMkExMCAxMCAwIDAgMCAxMiAyTTEyIDRBOCA4IDAgMCAxIDIwIDEyQTggOCAwIDAgMSAxMiAyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZU1lZGl1bSA9IFwiTTEyLDhBNCw0IDAgMCwwIDgsMTJBNCw0IDAgMCwwIDEyLDE2QTQsNCAwIDAsMCAxNiwxMkE0LDQgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVNdWx0aXBsZSA9IFwiTTE1IDRBOCA4IDAgMSAxIDcgMTJBOCA4IDAgMCAxIDE1IDRNMyAxMkE2IDYgMCAwIDAgNyAxNy42NVYxOS43NEE4IDggMCAwIDEgNyA0LjI2VjYuMzVBNiA2IDAgMCAwIDMgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTUsNEE4LDggMCAwLDEgMjMsMTJBOCw4IDAgMCwxIDE1LDIwQTgsOCAwIDAsMSA3LDEyQTgsOCAwIDAsMSAxNSw0TTE1LDE4QTYsNiAwIDAsMCAyMSwxMkE2LDYgMCAwLDAgMTUsNkE2LDYgMCAwLDAgOSwxMkE2LDYgMCAwLDAgMTUsMThNMywxMkMzLDE0LjYxIDQuNjcsMTYuODMgNywxNy42NVYxOS43NEMzLjU1LDE4Ljg1IDEsMTUuNzMgMSwxMkMxLDguMjcgMy41NSw1LjE1IDcsNC4yNlY2LjM1QzQuNjcsNy4xNyAzLDkuMzkgMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0LjA2IDUuOTVDMi43OCA3LjYzIDIgOS43MiAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTQuMjggMjIgMTYuMzcgMjEuMjMgMTguMDUgMTkuOTRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJDNCAxMC4yNyA0LjU2IDguNjggNS41IDcuMzhMMTYuNjIgMTguNUMxNS4zMiAxOS40NSAxMy43MyAyMCAxMiAyME04LjE3IDQuOTdMNi43MiAzLjVDOC4yNSAyLjU2IDEwLjA2IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDEzLjk0IDIxLjQ0IDE1Ljc1IDIwLjUgMTcuMjhMMTkuMDMgMTUuODNDMTkuNjUgMTQuNjkgMjAgMTMuMzkgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRDMTAuNjEgNCA5LjMxIDQuMzUgOC4xNyA0Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlMSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTMuOTMgNSAxNS42OCA1Ljc4IDE2Ljk1IDcuMDVMMTIgMTJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTIgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkgxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlMyA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDEzLjkzIDE4LjIyIDE1LjY4IDE2Ljk1IDE2Ljk1TDEyIDEyVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlU2xpY2U0ID0gXCJNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDE2LjQyIDcuNTggMjAgMTIgMjBDMTYuNDIgMjAgMjAgMTYuNDIgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRNMTIgNUMxNS44NyA1IDE5IDguMTMgMTkgMTJDMTkgMTUuODcgMTUuODcgMTkgMTIgMTlWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTUgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxNS44NyAxNS44NyAxOSAxMiAxOUMxMC4wNyAxOSA4LjMyIDE4LjIyIDcuMDUgMTYuOTVMMTIgMTJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTYgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxNS44NyAxNS44NyAxOSAxMiAxOUM4LjEzIDE5IDUgMTUuODcgNSAxMkgxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlNyA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDE1Ljg3IDE1Ljg3IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyQzUgMTAuMDcgNS43OCA4LjMyIDcuMDUgNy4wNUwxMiAxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlOCA9IFwiTTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDE1Ljg3IDE1Ljg3IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyQzUgOC4xMyA4LjEzIDUgMTIgNU0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbWFsbCA9IFwiTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkMxMCwxMy4xMSAxMC45LDE0IDEyLDE0QzEzLjExLDE0IDE0LDEzLjExIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjdWxhclNhdyA9IFwiTTEzLDExQTEsMSAwIDAsMSAxNCwxMkExLDEgMCAwLDEgMTMsMTNBMSwxIDAgMCwxIDEyLDEyQTEsMSAwIDAsMSAxMywxMU03Ljg2LDYuMjVDOS4xNCw0Ljg3IDEwLjk3LDQgMTMsNEMxNi41LDQgMTkuNDQsNi42MSAxOS45MywxMEgyMlYxMkgxNkEzLDMgMCAwLDAgMTMsOUEzLDMgMCAwLDAgMTAsMTJIMlYxMEgyLjA1QzIuMjUsNy43MyAzLjE0LDUuNjYgNC41LDRMNy44Niw2LjI1TTYuNzMsNy44OUw1LjA2LDYuNzdDNC41Myw3Ljc1IDQuMTgsOC44NCA0LjA2LDEwSDYuMDdDNi4xOCw5LjI1IDYuNCw4LjU0IDYuNzMsNy44OU03LjQsMTUuNEw2LDE0SDExLjc5QzEyLjAzLDE0LjQyIDEyLjUsMTQuNyAxMywxNC43QzEzLjUsMTQuNyAxMy45NywxNC40MiAxNC4yMSwxNEgyMFYxNS40QzE4LjM5LDE0LjQyIDE4LjQ2LDE1Ljc1IDE4LjQ2LDE1Ljc1VjE3LjcxTDE2LjUsMTkuNjdDMTYsMTcuOTIgMTUuMSwxOC45IDE1LjEsMTguOUwxMy43LDIwLjNIMTAuOUMxMS44OCwxOC42OSAxMC41NSwxOC43NiAxMC41NSwxOC43Nkg4LjU5TDYuNjMsMTYuOEM4LjM4LDE2LjMxIDcuNCwxNS40IDcuNCwxNS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHkgPSBcIk0xOSwxNUgxN1YxM0gxOU0xOSwxOUgxN1YxN0gxOU0xMyw3SDExVjVIMTNNMTMsMTFIMTFWOUgxM00xMywxNUgxMVYxM0gxM00xMywxOUgxMVYxN0gxM003LDExSDVWOUg3TTcsMTVINVYxM0g3TTcsMTlINVYxN0g3TTE1LDExVjVMMTIsMkw5LDVWN0gzVjIxSDIxVjExSDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHlWYXJpYW50ID0gXCJNMTksOVY3QTIsMiAwIDAsMCAxNyw1SDE2VjJIMTRWNUgxM0EyLDIgMCAwLDAgMTEsN1Y5QTIsMiAwIDAsMCA5LDExVjEySDVBMiwyIDAgMCwwIDMsMTRWMjJINlYyMEg4VjIySDEyVjIwSDE0VjIySDE2VjIwSDE4VjIySDIxVjExQTIsMiAwIDAsMCAxOSw5TTgsMThINlYxNkg4VjE4TTE0LDE4SDEyVjE2SDE0VjE4TTE0LDE0SDEyVjEySDE0VjE0TTEzLDlWN0gxN1Y5SDEzTTE4LDE4SDE2VjE2SDE4VjE4TTE4LDE0SDE2VjEySDE4VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHlWYXJpYW50T3V0bGluZSA9IFwiTTE1LDIzSDEzVjIxSDE1VjIzTTE5LDIxSDE3VjIzSDE5VjIxTTE1LDE3SDEzVjE5SDE1VjE3TTcsMjFINVYyM0g3VjIxTTcsMTdINVYxOUg3VjE3TTE5LDE3SDE3VjE5SDE5VjE3TTE1LDEzSDEzVjE1SDE1VjEzTTE5LDEzSDE3VjE1SDE5VjEzTTIxLDlBMiwyIDAgMCwxIDIzLDExVjIzSDIxVjExSDExVjIzSDlWMTVIM1YyM0gxVjE1QTIsMiAwIDAsMSAzLDEzSDlWMTFBMiwyIDAgMCwxIDExLDlWN0EyLDIgMCAwLDEgMTMsNUgxNVYxSDE3VjVIMTlBMiwyIDAgMCwxIDIxLDdWOU0xOSw5VjdIMTNWOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmQgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWNjb3VudCA9IFwiTTE4LDE5SDZWMTcuNkM2LDE1LjYgMTAsMTQuNSAxMiwxNC41QzE0LDE0LjUgMTgsMTUuNiAxOCwxNy42TTEyLDdBMywzIDAgMCwxIDE1LDEwQTMsMyAwIDAsMSAxMiwxM0EzLDMgMCAwLDEgOSwxMEEzLDMgMCAwLDEgMTIsN00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFjY291bnRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTEyLDlBMiwyIDAgMCwxIDE0LDExQTIsMiAwIDAsMSAxMiwxM0EyLDIgMCAwLDEgMTAsMTFBMiwyIDAgMCwxIDEyLDlNOCwxN1YxNkM4LDE0LjkgOS43OSwxNCAxMiwxNEMxNC4yMSwxNCAxNiwxNC45IDE2LDE2VjE3SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWxlcnQgPSBcIk0xMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1TTEzLDE0SDExVjhIMTNNMTMsMThIMTFWMTZIMTNNMTksM0gxNC44MkMxNC40LDEuODQgMTMuMywxIDEyLDFDMTAuNywxIDkuNiwxLjg0IDkuMTgsM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWxlcnRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTExLDlIMTNWMTMuNUgxMVY5TTExLDE1SDEzVjE3SDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93RG93biA9IFwiTTEyLDE4TDcsMTNIMTBWOUgxNFYxM0gxN00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93RG93bk91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g5LjE4QzkuNiwxLjg0IDEwLjcsMSAxMiwxQzEzLjMsMSAxNC40LDEuODQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTcsN1Y1SDVWMTlIMTlWNUgxN1Y3SDdNMTIsMThMNywxM0gxMFY5SDE0VjEzSDE3TDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93TGVmdCA9IFwiTTE2LDE1SDEyVjE4TDcsMTNMMTIsOFYxMUgxNk0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93TGVmdE91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g5LjE4QzkuNiwxLjg0IDEwLjcsMSAxMiwxQzEzLjMsMSAxNC40LDEuODQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTcsN1Y1SDVWMTlIMTlWNUgxN1Y3SDdNNywxM0wxMiwxOFYxNUgxNlYxMUgxMlY4TDcsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQXJyb3dSaWdodCA9IFwiTTE3LDEzTDEyLDE4VjE1SDhWMTFIMTJWOE0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93UmlnaHRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTE2LjkxLDEzTDExLjkxLDE4VjE1SDcuOTFWMTFIMTEuOTFWOEwxNi45MSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRBcnJvd1VwID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsOEw3LDEzSDEwVjE3SDE0VjEzSDE3TDEyLDhNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRBcnJvd1VwT3V0bGluZSA9IFwiTTEyLDhMMTcsMTNIMTRWMTdIMTBWMTNIN0wxMiw4TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDkuMThDOS42LDEuODQgMTAuNywxIDEyLDFDMTMuMywxIDE0LjQsMS44NCAxNC44MiwzSDE5TTEyLDNBMSwxIDAgMCwwIDExLDRBMSwxIDAgMCwwIDEyLDVBMSwxIDAgMCwwIDEzLDRBMSwxIDAgMCwwIDEyLDNNNyw3VjVINVYxOUgxOVY1SDE3VjdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDaGVjayA9IFwiTTEwLDE3TDYsMTNMNy40MSwxMS41OUwxMCwxNC4xN0wxNi41OSw3LjU4TDE4LDlNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM00xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDaGVja011bHRpcGxlID0gXCJNNCA3SDJWMjFDMiAyMi4xIDIuOSAyMyA0IDIzSDE4VjIxSDRNMjAgM0gxNi44QzE2LjQgMS44IDE1LjMgMSAxNCAxQzEyLjcgMSAxMS42IDEuOCAxMS4yIDNIOEM2LjkgMyA2IDMuOSA2IDVWMTdDNiAxOC4xIDYuOSAxOSA4IDE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1QzIyIDMuOSAyMS4xIDMgMjAgM00xNCAzQzE0LjYgMyAxNSAzLjUgMTUgNEMxNSA0LjUgMTQuNSA1IDE0IDVDMTMuNSA1IDEzIDQuNSAxMyA0QzEzIDMuNSAxMy40IDMgMTQgM00xMi4zIDE1LjFMOSAxMS44TDEwLjQgMTAuNEwxMi4zIDEyLjNMMTcuNiA3TDE5IDguNFwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENoZWNrTXVsdGlwbGVPdXRsaW5lID0gXCJNNCA3VjIxSDE4VjIzSDRDMi45IDIzIDIgMjIuMSAyIDIxVjdINE0xMi44IDE1LjM1TDkuNSAxMi4wNUwxMC45IDEwLjY1TDEyLjggMTIuNTVMMTcuMSA4LjI1TDE4LjUgOS42NUwxMi44IDE1LjM1TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE3QzIyIDE4LjEgMjEuMSAxOSAyMCAxOUg4QzYuOSAxOSA2IDE4LjEgNiAxN1Y1QzYgMy45IDYuOSAzIDggM0gxMS4xOEMxMS42IDEuODQgMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44NCAxNi44MiAzSDIwTTE0IDNDMTMuNDUgMyAxMyAzLjQ1IDEzIDRDMTMgNC41NSAxMy40NSA1IDE0IDVDMTQuNTUgNSAxNSA0LjU1IDE1IDRDMTUgMy40NSAxNC41NSAzIDE0IDNNMTAgN1Y1SDhWMTdIMjBWNUgxOFY3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENoZWNrT3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNyw3SDE3VjVIMTlWMTlINVY1SDdWN003LjUsMTMuNUw5LDEyTDExLDE0TDE1LjUsOS41TDE3LDExTDExLDE3TDcuNSwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENsb2NrID0gXCJNMTYuNSAxNi4yNUwxOS4zNiAxNy45NEwxOC42MSAxOS4xNkwxNSAxN1YxMkgxNi41VjE2LjI1TTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzE0LjA5IDIzIDEyLjM3IDIyLjI0IDExLjExIDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0g5LjE4QzkuNiAxLjg0IDEwLjcgMSAxMiAxUzE0LjQgMS44NCAxNC44MiAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTEuMTFDMjIuMjQgMTIuMzcgMjMgMTQuMDkgMjMgMTZNMTEgNEMxMSA0LjU1IDExLjQ1IDUgMTIgNVMxMyA0LjU1IDEzIDQgMTIuNTUgMyAxMiAzIDExIDMuNDUgMTEgNE0yMSAxNkMyMSAxMy4yNCAxOC43NiAxMSAxNiAxMVMxMSAxMy4yNCAxMSAxNiAxMy4yNCAyMSAxNiAyMSAyMSAxOC43NiAyMSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDbG9ja091dGxpbmUgPSBcIk0yMSAxMS4xMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDExLjExQzEyLjM3IDIyLjI0IDE0LjA5IDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2QzIzIDE0LjA5IDIyLjI0IDEyLjM3IDIxIDExLjExTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNNSAxOVY1SDdWN0gxN1Y1SDE5VjkuNjhDMTguMDkgOS4yNSAxNy4wOCA5IDE2IDlDMTIuMTMgOSA5IDEyLjEzIDkgMTZDOSAxNy4wOCA5LjI1IDE4LjA5IDkuNjggMTlINU0xNiAyMUMxMy4yNCAyMSAxMSAxOC43NiAxMSAxNlMxMy4yNCAxMSAxNiAxMSAyMSAxMy4yNCAyMSAxNiAxOC43NiAyMSAxNiAyMU0xNi41IDE2LjI1TDE5LjM2IDE3Ljk0TDE4LjYxIDE5LjE2TDE1IDE3VjEySDE2LjVWMTYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRWRpdCA9IFwiTTIxLjA0IDEyLjEzQzIxLjE4IDEyLjEzIDIxLjMxIDEyLjE5IDIxLjQyIDEyLjNMMjIuNyAxMy41OEMyMi45MiAxMy43OSAyMi45MiAxNC4xNCAyMi43IDE0LjM1TDIxLjcgMTUuMzVMMTkuNjUgMTMuM0wyMC42NSAxMi4zQzIwLjc2IDEyLjE5IDIwLjkgMTIuMTMgMjEuMDQgMTIuMTNNMTkuMDcgMTMuODhMMjEuMTIgMTUuOTNMMTUuMDYgMjJIMTNWMTkuOTRMMTkuMDcgMTMuODhNMTkgM0MyMC4xIDMgMjEgMy45IDIxIDVWOUwxMSAxOVYyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0g5LjE4QzkuNiAxLjg0IDEwLjcgMSAxMiAxQzEzLjMgMSAxNC40IDEuODQgMTQuODIgM0gxOU0xMiAzQzExLjQ1IDMgMTEgMy40NSAxMSA0QzExIDQuNTUgMTEuNDUgNSAxMiA1QzEyLjU1IDUgMTMgNC41NSAxMyA0QzEzIDMuNDUgMTIuNTUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEVkaXRPdXRsaW5lID0gXCJNMjEuMDQgMTIuMTNDMjEuMTggMTIuMTMgMjEuMzEgMTIuMTkgMjEuNDIgMTIuM0wyMi43IDEzLjU4QzIyLjkyIDEzLjc5IDIyLjkyIDE0LjE0IDIyLjcgMTQuMzVMMjEuNyAxNS4zNUwxOS42NSAxMy4zTDIwLjY1IDEyLjNDMjAuNzYgMTIuMTkgMjAuOSAxMi4xMyAyMS4wNCAxMi4xM00xOS4wNyAxMy44OEwyMS4xMiAxNS45M0wxNS4wNiAyMkgxM1YxOS45NEwxOS4wNyAxMy44OE0xMSAxOUw5IDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5QzIwLjEgMyAyMSAzLjkgMjEgNVY5TDE5IDExVjVIMTdWN0g3VjVINVYxOUgxMU0xMiAzQzExLjQ1IDMgMTEgMy40NSAxMSA0QzExIDQuNTUgMTEuNDUgNSAxMiA1QzEyLjU1IDUgMTMgNC41NSAxMyA0QzEzIDMuNDUgMTIuNTUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEZpbGUgPSBcIk0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVY5LjE3TDE5LjgzIDhIMTVDMTIuNzkgOCAxMSA5Ljc5IDExIDEyVjIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5TTEyIDNDMTEuNDUgMyAxMSAzLjQ1IDExIDRDMTEgNC41NSAxMS40NSA1IDEyIDVDMTIuNTUgNSAxMyA0LjU1IDEzIDRDMTMgMy40NSAxMi41NSAzIDEyIDNNMTUgMjNDMTMuOSAyMyAxMyAyMi4xMSAxMyAyMVYxMkMxMyAxMC45IDEzLjkgMTAgMTUgMTBIMTlMMjMgMTRWMjFDMjMgMjIuMTEgMjIuMTEgMjMgMjEgMjNIMTVNMjEgMTQuODNMMTguMTcgMTJIMThWMTVIMjFWMTQuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRmlsZU91dGxpbmUgPSBcIk0xNSAyM0MxMy45IDIzIDEzIDIyLjExIDEzIDIxVjEyQzEzIDEwLjkgMTMuOSAxMCAxNSAxMEgxOUwyMyAxNFYyMUMyMyAyMi4xMSAyMi4xMSAyMyAyMSAyM0gxNU0xNSAyMUgyMVYxNC44M0wxOC4xNyAxMkgxNVYyMU0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVY5LjE3TDE5LjgzIDhIMTlWNUgxN1Y3SDdWNUg1VjE5SDExVjIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5TTEyIDNDMTEuNDUgMyAxMSAzLjQ1IDExIDRDMTEgNC41NSAxMS40NSA1IDEyIDVDMTIuNTUgNSAxMyA0LjU1IDEzIDRDMTMgMy40NSAxMi41NSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRmxvdyA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNMTUsMTlMMTEsMTVIMTRWOEgxNlYxNUgxOUwxNSwxOU0xMCwxNkg4VjlINUw5LDVMMTMsOUgxMFYxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEZsb3dPdXRsaW5lID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNNyA3SDE3VjVIMTlWMTlINVY1SDdWN00xMCAxNkg4VjExSDZMOSA4TDEyIDExSDEwVjE2TTE0IDEwSDE2VjE1SDE4TDE1IDE4TDEyIDE1SDE0VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZExpc3QgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003IDhIOVYxMkg4VjlIN1Y4TTEwIDE3VjE4SDdWMTcuMDhMOSAxNUg3VjE0SDkuMjVDOS42NiAxNCAxMCAxNC4zNCAxMCAxNC43NUMxMCAxNC45NSA5LjkyIDE1LjE0IDkuNzkgMTUuMjdMOC4xMiAxN0gxME0xMSA0QzExIDMuNDUgMTEuNDUgMyAxMiAzUzEzIDMuNDUgMTMgNCAxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0TTE3IDE3SDEyVjE1SDE3VjE3TTE3IDExSDEyVjlIMTdWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkTGlzdE91dGxpbmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTcgN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTIgMTdWMTVIMTdWMTdIMTJNMTIgMTFWOUgxN1YxMUgxMk04IDEyVjlIN1Y4SDlWMTJIOE05LjI1IDE0QzkuNjYgMTQgMTAgMTQuMzQgMTAgMTQuNzVDMTAgMTQuOTUgOS45MiAxNS4xNCA5Ljc5IDE1LjI3TDguMTIgMTdIMTBWMThIN1YxNy4wOEw5IDE1SDdWMTRIOS4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE1pbnVzID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMTYgMTRIOFYxMkgxNlYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRNaW51c091dGxpbmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNMTIgM0MxMi41NSAzIDEzIDMuNDUgMTMgNFMxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0IDExLjQ1IDMgMTIgM00xOSAxOUg1VjVIN1Y3SDE3VjVIMTlWMTlNOCAxMkgxNlYxNEg4VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE11bHRpcGxlID0gXCJNNCA3SDJWMjFDMiAyMi4xIDIuOSAyMyA0IDIzSDE4VjIxSDRNMjAgM0gxNi44QzE2LjQgMS44IDE1LjMgMSAxNCAxQzEyLjcgMSAxMS42IDEuOCAxMS4yIDNIOEM2LjkgMyA2IDMuOSA2IDVWMTdDNiAxOC4xIDYuOSAxOSA4IDE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1QzIyIDMuOSAyMS4xIDMgMjAgM00xNCAzQzE0LjYgMyAxNSAzLjUgMTUgNEMxNSA0LjUgMTQuNSA1IDE0IDVDMTMuNSA1IDEzIDQuNSAxMyA0QzEzIDMuNSAxMy40IDMgMTQgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRNdWx0aXBsZU91dGxpbmUgPSBcIk00IDdWMjFIMThWMjNINEMyLjkgMjMgMiAyMi4xIDIgMjFWN0g0TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE3QzIyIDE4LjEgMjEuMSAxOSAyMCAxOUg4QzYuOSAxOSA2IDE4LjEgNiAxN1Y1QzYgMy45IDYuOSAzIDggM0gxMS4xOEMxMS42IDEuODQgMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44NCAxNi44MiAzSDIwTTE0IDNDMTMuNDUgMyAxMyAzLjQ1IDEzIDRDMTMgNC41NSAxMy40NSA1IDE0IDVDMTQuNTUgNSAxNSA0LjU1IDE1IDRDMTUgMy40NSAxNC41NSAzIDE0IDNNMTAgN1Y1SDhWMTdIMjBWNUgxOFY3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE9mZiA9IFwiTTIxIDVDMjEgMy45IDIwLjExIDMgMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDYuMkwyMSAxNy44VjVNMTIgNUMxMS40NSA1IDExIDQuNTUgMTEgNFMxMS40NSAzIDEyIDMgMTMgMy40NSAxMyA0IDEyLjU1IDUgMTIgNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS4xIDIxQzE5LjA3IDIxIDE5LjAzIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgNC45NyAzIDQuOTMgMyA0LjlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRPZmZPdXRsaW5lID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTUgMTlWNi44OUwxNy4xMSAxOUg1TTE3IDdWNUgxOVYxNS44TDIxIDE3LjhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE91dGxpbmUgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTcsN0gxN1Y1SDE5VjE5SDVWNUg3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEwLDE3VjlMMTUsMTNMMTAsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheU11bHRpcGxlID0gXCJNNCAyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjIgNVYxN0MyMiAxOC4xIDIxLjEgMTkgMjAgMTlIOEM2LjkgMTkgNiAxOC4xIDYgMTdWNUM2IDMuOSA2LjkgMyA4IDNIMTEuMkMxMS42IDEuOCAxMi43IDEgMTQgMUMxNS4zIDEgMTYuNCAxLjggMTYuOCAzSDIwQzIxLjEgMyAyMiAzLjkgMjIgNU0xMyA0QzEzIDQuNSAxMy41IDUgMTQgNUMxNC41IDUgMTUgNC41IDE1IDRDMTUgMy41IDE0LjYgMyAxNCAzQzEzLjQgMyAxMyAzLjUgMTMgNE0xNyAxMkwxMiA4VjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheU11bHRpcGxlT3V0bGluZSA9IFwiTTQgN1YyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjAgM0MyMS4xIDMgMjIgMy45IDIyIDVWMTdDMjIgMTguMSAyMS4xIDE5IDIwIDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjVDNiAzLjkgNi45IDMgOCAzSDExLjJDMTEuNiAxLjggMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44IDE2LjggM0gyME0xNCAzQzEzLjQgMyAxMyAzLjUgMTMgNEMxMyA0LjUgMTMuNCA1IDE0IDVDMTQuNiA1IDE1IDQuNiAxNSA0QzE1IDMuNCAxNC42IDMgMTQgM00xMCA3VjVIOFYxN0gyMFY1SDE4VjdNMTIgMTVWOUwxNyAxMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFBsYXlPdXRsaW5lID0gXCJNMTksM0gxNC44MkMxNC4yNSwxLjQ0IDEyLjUzLDAuNjQgMTEsMS4yQzEwLjE0LDEuNSA5LjUsMi4xNiA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNyw3SDE3VjVIMTlWMTlINVY1SDdWN00xMCwxN1Y5TDE1LDEzTDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFBsdXMgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEzLDEySDE2VjE0SDEzVjE3SDExVjE0SDhWMTJIMTFWOUgxM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRQbHVzT3V0bGluZSA9IFwiTTE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTcgN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTMgMTJIMTZWMTRIMTNWMTdIMTFWMTRIOFYxMkgxMVY5SDEzVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFB1bHNlID0gXCJNMTksM0gxNC44MkMxNC40LDEuODQgMTMuMywxIDEyLDFDMTAuNywxIDkuNiwxLjg0IDkuMTgsM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM001LDEzLjQ2SDcuMTdMMTAuNSw3LjA4TDExLjQ0LDE0LjA1TDEzLjkzLDEwLjg2TDE2LjUzLDEzLjQ2SDE5VjE1SDE1Ljg5TDE0LjA3LDEzLjIxTDEwLjM4LDE3LjkyTDkuNjIsMTIuMTVMOC4xMSwxNUg1VjEzLjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFB1bHNlT3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNSwxNUg4LjExTDkuNjIsMTIuMTVMMTAuMzgsMTcuOTJMMTQuMDcsMTMuMjFMMTUuODksMTVIMTlWMTlINVYxNU0xOSwxMy40NkgxNi41M0wxMy45MywxMC44NkwxMS40NCwxNC4wNUwxMC41LDcuMDhMNy4xNywxMy40Nkg1VjVIN1Y2SDE3VjVIMTlWNkwxOSwxMy40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRSZW1vdmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNMTIgM0MxMi41NSAzIDEzIDMuNDUgMTMgNFMxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0IDExLjQ1IDMgMTIgM00xNS41NCAxNS4xMkwxNC4xMiAxNi41NEwxMiAxNC40MUw5Ljg4IDE2LjU0TDguNDcgMTUuMTJMMTAuNTkgMTNMOC40NyAxMC44OEw5Ljg4IDkuNDdMMTIgMTEuNTlMMTQuMTIgOS40N0wxNS41NCAxMC44OEwxMy40MSAxM0wxNS41NCAxNS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRSZW1vdmVPdXRsaW5lID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMTkgMTlINVY1SDdWN0gxN1Y1SDE5VjE5TTE1LjU0IDEwLjg4TDEzLjQxIDEzTDE1LjU0IDE1LjEyTDE0LjEyIDE2LjU0TDEyIDE0LjQxTDkuODggMTYuNTRMOC40NyAxNS4xMkwxMC41OSAxM0w4LjQ3IDEwLjg4TDkuODggOS40N0wxMiAxMS41OUwxNC4xMiA5LjQ3TDE1LjU0IDEwLjg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFNlYXJjaCA9IFwiTTExLjkgMTAuOUMxNC40MSA4LjQgMTguNDUgOC4zNyAyMSAxMC44MlY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDEzLjA2QzEyLjY1IDIwLjc0IDEyLjI2IDIwLjQ1IDExLjkgMjAuMUM5LjM3IDE3LjU2IDkuMzcgMTMuNDQgMTEuOSAxMC45TTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMjAuMzEgMTcuOUMyMC43NSAxNy4yMSAyMSAxNi4zOCAyMSAxNS41QzIxIDEzIDE5IDExIDE2LjUgMTFTMTIgMTMgMTIgMTUuNSAxNCAyMCAxNi41IDIwQzE3LjM3IDIwIDE4LjE5IDE5Ljc1IDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTDIwLjMxIDE3LjlNMTYuNSAxOEMxNS4xMiAxOCAxNCAxNi44OCAxNCAxNS41UzE1LjEyIDEzIDE2LjUgMTMgMTkgMTQuMTIgMTkgMTUuNSAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFNlYXJjaE91dGxpbmUgPSBcIk0xMS4wMyAxOUg1VjVIN1Y3SDE3VjVIMTlWOS41QzE5LjcyIDkuOCAyMC40IDEwLjI0IDIxIDEwLjgyVjVDMjEgMy45IDIwLjExIDMgMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTMuMDZDMTIuNjUgMjAuNzQgMTIuMjYgMjAuNDUgMTEuOSAyMC4xQzExLjU3IDE5Ljc2IDExLjI3IDE5LjM5IDExLjAzIDE5TTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMjAuMzEgMTcuOUMyMC43NSAxNy4yMSAyMSAxNi4zOCAyMSAxNS41QzIxIDEzIDE5IDExIDE2LjUgMTFTMTIgMTMgMTIgMTUuNSAxNCAyMCAxNi41IDIwQzE3LjM3IDIwIDE4LjE5IDE5Ljc1IDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTDIwLjMxIDE3LjlNMTYuNSAxOEMxNS4xMiAxOCAxNCAxNi44OCAxNCAxNS41UzE1LjEyIDEzIDE2LjUgMTMgMTkgMTQuMTIgMTkgMTUuNSAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHQgPSBcIk0xNyw5SDdWN0gxN00xNywxM0g3VjExSDE3TTE0LDE3SDdWMTVIMTRNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM00xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0TXVsdGlwbGUgPSBcIk0yMCAzSDE2LjhDMTYuNCAxLjggMTUuMyAxIDE0IDFDMTIuNyAxIDExLjYgMS44IDExLjIgM0g4QzYuOSAzIDYgMy45IDYgNVYxN0M2IDE4LjEgNi45IDE5IDggMTlIMjBDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjVDMjIgMy45IDIxLjEgMyAyMCAzTTE0IDNDMTQuNiAzIDE1IDMuNSAxNSA0QzE1IDQuNSAxNC41IDUgMTQgNUMxMy41IDUgMTMgNC41IDEzIDRDMTMgMy41IDEzLjQgMyAxNCAzTTE2IDE0SDlWMTJIMTZNMTkgMTBIOVY4SDE5TTQgMjFIMThWMjNINEMyLjkgMjMgMiAyMi4xIDIgMjFWN0g0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkVGV4dE11bHRpcGxlT3V0bGluZSA9IFwiTTQgN1YyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjAgM0MyMS4xIDMgMjIgMy45IDIyIDVWMTdDMjIgMTguMSAyMS4xIDE5IDIwIDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjVDNiAzLjkgNi45IDMgOCAzSDExLjE4QzExLjYgMS44NCAxMi43IDEgMTQgMUMxNS4zIDEgMTYuNCAxLjg0IDE2LjgyIDNIMjBNMTQgM0MxMy40NSAzIDEzIDMuNDUgMTMgNEMxMyA0LjU1IDEzLjQ1IDUgMTQgNUMxNC41NSA1IDE1IDQuNTUgMTUgNEMxNSAzLjQ1IDE0LjU1IDMgMTQgM00xMCA3VjVIOFYxN0gyMFY1SDE4VjdNMTUgMTVIMTBWMTNIMTVNMTggMTFIMTBWOUgxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0T2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTcgMTFIOS4xMUwxMS4xMSAxM0g3VjExTTE0IDE3SDdWMTVIMTMuMTFMMTQgMTUuODlWMTdNMTcgN1Y5SDEyLjJMMTQuMiAxMUgxN1YxM0gxNi4yTDIxIDE3LjhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRPZmZPdXRsaW5lID0gXCJNMTcgN1Y1SDE5VjE1LjhMMjEgMTcuOFY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuMjUgMS40NCAxMi41MyAuNjQgMTEgMS4yQzEwLjE0IDEuNSA5LjUgMi4xNiA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTE0LjIgMTFMMTIuMiA5SDE3VjExSDE0LjJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTUgMTlWNi44OUw3LjExIDlIN1YxMUg5LjExTDExLjExIDEzSDdWMTVIMTMuMTFMMTcuMTEgMTlINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0T3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTcsN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTcsMTFIN1Y5SDE3VjExTTE1LDE1SDdWMTNIMTVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkVGV4dFBsYXkgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjEzLjM0QzIwLjM2LDEzLjExIDE5LjY4LDEzIDE5LDEzQzE1LjY4LDEzIDEzLDE1LjY5IDEzLDE5QzEzLDE5LjY4IDEzLjExLDIwLjM2IDEzLjM0LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDkuMThDOS41LDIuMTYgMTAuMTQsMS41IDExLDEuMkMxMi41MywwLjY0IDE0LjI1LDEuNDQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTExLDE3VjE1SDdWMTdIMTFNMTMsMTNWMTFIN1YxM0gxM00xNyw5VjdIN1Y5SDE3TTE3LDE2TDIyLDE5TDE3LDIyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRQbGF5T3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxNVYxOUg1VjVIN1Y3SDE3VjVIMTlWMTRIMjFWNUEyLDIgMCAwLDAgMTksM00xMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1TTE3LDE2VjIyTDIyLDE5TDE3LDE2TTE3LDExSDdWOUgxN1YxMU0xNSwxNUg3VjEzSDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRTZWFyY2ggPSBcIk0xMC4xOCAxN0g3VjE1SDEwQzEwLjA4IDE0LjMyIDEwLjIzIDEzLjY0IDEwLjUgMTNIN1YxMUgxMS44MkMxMS44NSAxMC45NyAxMS44NyAxMC45NCAxMS45IDEwLjlDMTMuMTcgOS42NCAxNC44NCA5IDE2LjUgOUg3VjdIMTdWOUgxNi41QzE4LjEyIDkgMTkuNzQgOS42MSAyMSAxMC44MlY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDEzLjA2QzEyLjY1IDIwLjc0IDEyLjI2IDIwLjQ1IDExLjkgMjAuMUMxMSAxOS4yMSAxMC40NSAxOC4xMyAxMC4xOCAxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTIwLjMxIDE3LjlDMjAuNzUgMTcuMjEgMjEgMTYuMzggMjEgMTUuNUMyMSAxMyAxOSAxMSAxNi41IDExUzEyIDEzIDEyIDE1LjUgMTQgMjAgMTYuNSAyMEMxNy4zNyAyMCAxOC4xOSAxOS43NSAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMUwyMC4zMSAxNy45TTE2LjUgMThDMTUuMTIgMTggMTQgMTYuODggMTQgMTUuNVMxNS4xMiAxMyAxNi41IDEzIDE5IDE0LjEyIDE5IDE1LjUgMTcuODggMTggMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0U2VhcmNoT3V0bGluZSA9IFwiTTE3IDlIMTYuNSAxN003IDE1SDEwQzEwLjA4IDE0LjMyIDEwLjIzIDEzLjY0IDEwLjUgMTNIN1YxNU0xMS45IDEwLjlDMTMuMTcgOS42NCAxNC44NCA5IDE2LjUgOUg3VjExSDExLjgyQzExLjg1IDEwLjk3IDExLjg3IDEwLjk0IDExLjkgMTAuOU0xMS45IDIwLjFDMTIuMjYgMjAuNDUgMTIuNjUgMjAuNzQgMTMuMDYgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS41IDIuMTYgMTAuMTQgMS41IDExIDEuMkMxMi41MyAuNjQgMTQuMjUgMS40NCAxNC44MiAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTAuODJDMjAuNCAxMC4yNCAxOS43MiA5LjggMTkgOS41VjVIMTdWN0g3VjVINVYxOUgxMS4wM0MxMS4yNyAxOS4zOSAxMS41NyAxOS43NiAxMS45IDIwLjFNMTEgNEMxMSA0LjU1IDExLjQ1IDUgMTIgNVMxMyA0LjU1IDEzIDQgMTIuNTUgMyAxMiAzIDExIDMuNDUgMTEgNE0yMy4zOSAyMUwyMiAyMi4zOUwxOC44OCAxOS4zMkMxOC4xOSAxOS43NSAxNy4zNyAyMCAxNi41IDIwQzE0IDIwIDEyIDE4IDEyIDE1LjVTMTQgMTEgMTYuNSAxMSAyMSAxMyAyMSAxNS41QzIxIDE2LjM4IDIwLjc1IDE3LjIxIDIwLjMxIDE3LjlMMjMuMzkgMjFNMTkgMTUuNUMxOSAxNC4xMiAxNy44OCAxMyAxNi41IDEzUzE0IDE0LjEyIDE0IDE1LjUgMTUuMTIgMTggMTYuNSAxOCAxOSAxNi44OCAxOSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBweSA9IFwiTTE1LDE1LjVBMi41LDIuNSAwIDAsMSAxMi41LDE4QTIuNSwyLjUgMCAwLDEgMTAsMTUuNVYxMy43NUEwLjc1LDAuNzUgMCAwLDEgMTAuNzUsMTNBMC43NSwwLjc1IDAgMCwxIDExLjUsMTMuNzVWMTUuNUExLDEgMCAwLDAgMTIuNSwxNi41QTEsMSAwIDAsMCAxMy41LDE1LjVWMTEuODlDMTIuNjMsMTEuNjEgMTIsMTAuODcgMTIsMTBDMTIsOC45IDEzLDggMTQuMjUsOEMxNS41LDggMTYuNSw4LjkgMTYuNSwxMEMxNi41LDEwLjg3IDE1Ljg3LDExLjYxIDE1LDExLjg5VjE1LjVNOC4yNSw4QzkuNSw4IDEwLjUsOC45IDEwLjUsMTBDMTAuNSwxMC44NyA5Ljg3LDExLjYxIDksMTEuODlWMTcuMjVBMy4yNSwzLjI1IDAgMCwwIDEyLjI1LDIwLjVBMy4yNSwzLjI1IDAgMCwwIDE1LjUsMTcuMjVWMTMuNzVBMC43NSwwLjc1IDAgMCwxIDE2LjI1LDEzQTAuNzUsMC43NSAwIDAsMSAxNywxMy43NVYxNy4yNUE0Ljc1LDQuNzUgMCAwLDEgMTIuMjUsMjJBNC43NSw0Ljc1IDAgMCwxIDcuNSwxNy4yNVYxMS44OUM2LjYzLDExLjYxIDYsMTAuODcgNiwxMEM2LDguOSA3LDggOC4yNSw4TTEwLjA2LDYuMTNMOS42Myw3LjU5QzkuMjIsNy4zNyA4Ljc1LDcuMjUgOC4yNSw3LjI1QzcuMzQsNy4yNSA2LjUzLDcuNjUgNi4wMyw4LjI3TDQuODMsNy4zN0M1LjQ2LDYuNTcgNi40MSw2IDcuNSw1LjgxVjUuNzVBMy43NSwzLjc1IDAgMCwxIDExLjI1LDJBMy43NSwzLjc1IDAgMCwxIDE1LDUuNzVWNS44MUMxNi4wOSw2IDE3LjA0LDYuNTcgMTcuNjcsNy4zN0wxNi40Nyw4LjI3QzE1Ljk3LDcuNjUgMTUuMTYsNy4yNSAxNC4yNSw3LjI1QzEzLjc1LDcuMjUgMTMuMjgsNy4zNyAxMi44Nyw3LjU5TDEyLjQ0LDYuMTNDMTIuNzcsNiAxMy4xMyw1Ljg3IDEzLjUsNS44MVY1Ljc1QzEzLjUsNC41IDEyLjUsMy41IDExLjI1LDMuNUMxMCwzLjUgOSw0LjUgOSw1Ljc1VjUuODFDOS4zNyw1Ljg3IDkuNzMsNiAxMC4wNiw2LjEzTTE0LjI1LDkuMjVDMTMuNyw5LjI1IDEzLjI1LDkuNTkgMTMuMjUsMTBDMTMuMjUsMTAuNDEgMTMuNywxMC43NSAxNC4yNSwxMC43NUMxNC44LDEwLjc1IDE1LjI1LDEwLjQxIDE1LjI1LDEwQzE1LjI1LDkuNTkgMTQuOCw5LjI1IDE0LjI1LDkuMjVNOC4yNSw5LjI1QzcuNyw5LjI1IDcuMjUsOS41OSA3LjI1LDEwQzcuMjUsMTAuNDEgNy43LDEwLjc1IDguMjUsMTAuNzVDOC44LDEwLjc1IDkuMjUsMTAuNDEgOS4yNSwxMEM5LjI1LDkuNTkgOC44LDkuMjUgOC4yNSw5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTYuMiwxNi4yTDExLDEzVjdIMTIuNVYxMi4yTDE3LDE0LjlMMTYuMiwxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrQWxlcnQgPSBcIk0yMCAxMkgyMlYxOEgyMFYxMk0yMCAyMEgyMlYyMkgyMFYyME0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuMyAyMS4yIDE4IDIwVjEwSDIxLjhDMjAuOSA1LjQgMTYuOCAyIDEyIDJNMTYuMiAxNi4yTDExIDEzVjdIMTIuNVYxMi4yTDE3IDE0LjlMMTYuMiAxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrQWxlcnRPdXRsaW5lID0gXCJNMTEgN1YxM0wxNi4yIDE2LjFMMTcgMTQuOUwxMi41IDEyLjJWN0gxMU0yMCAxMlYxOEgyMlYxMkgyME0yMCAyMFYyMkgyMlYyMEgyME0xOCAyMEMxNi4zIDIxLjMgMTQuMyAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJTNi41IDIgMTIgMkMxNi44IDIgMjAuOSA1LjQgMjEuOCAxMEgxOS43QzE4LjggNi42IDE1LjcgNCAxMiA0QzcuNiA0IDQgNy42IDQgMTJTNy42IDIwIDEyIDIwQzE0LjQgMjAgMTYuNSAxOC45IDE4IDE3LjNWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tDaGVjayA9IFwiTTIzLjUgMTdMMTguNSAyMkwxNSAxOC41TDE2LjUgMTdMMTguNSAxOUwyMiAxNS41TDIzLjUgMTdNMTMgMTlDMTMgMTcuNSAxMy41IDE2LjIgMTQuNCAxNS4xTDExIDEzVjdIMTIuNVYxMi4yTDE1LjYgMTQuMUMxNi42IDEzLjQgMTcuNyAxMyAxOSAxM0MyMCAxMyAyMSAxMy4zIDIxLjggMTMuN0MyMS45IDEzLjEgMjIgMTIuNiAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjJDMTIuNiAyMiAxMy4yIDIxLjkgMTMuNyAyMS44QzEzLjMgMjEgMTMgMjAgMTMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tDaGVja091dGxpbmUgPSBcIk0yMy41IDE3TDE4LjUgMjJMMTUgMTguNUwxNi41IDE3TDE4LjUgMTlMMjIgMTUuNUwyMy41IDE3TTEzLjEgMTkuOUMxMi43IDIwIDEyLjQgMjAgMTIgMjBDNy42IDIwIDQgMTYuNCA0IDEyUzcuNiA0IDEyIDQgMjAgNy42IDIwIDEyQzIwIDEyLjQgMjAgMTIuNyAxOS45IDEzLjFDMjAuNiAxMy4yIDIxLjIgMTMuNCAyMS44IDEzLjdDMjEuOSAxMy4xIDIyIDEyLjYgMjIgMTJDMjIgNi41IDE3LjUgMiAxMiAyUzIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxMi42IDIyIDEzLjIgMjEuOSAxMy43IDIxLjhDMTMuNCAyMS4zIDEzLjIgMjAuNiAxMy4xIDE5LjlNMTUuNiAxNC4xTDEyLjUgMTIuM1Y3SDExVjEzTDE0LjUgMTUuMUMxNC44IDE0LjcgMTUuMiAxNC40IDE1LjYgMTQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0RpZ2l0YWwgPSBcIk0yLDZBMiwyIDAgMCwwIDAsOFYxNkEyLDIgMCAwLDAgMiwxOEgyMkEyLDIgMCAwLDAgMjQsMTZWOEEyLDIgMCAwLDAgMjIsNk0yLDhIMjJWMTZIMk0zLDlWMTAuNUg2LjI1TDMsMTVINC43NUw4LDEwLjVWOU05LjI1LDlWMTAuNUgxMC43NVY5TTEyLDlWMTAuNUgxMy41VjE1SDE1VjlNMTcsOUExLDEgMCAwLDAgMTYsMTBWMTRBMSwxIDAgMCwwIDE3LDE1SDIwQTEsMSAwIDAsMCAyMSwxNFYxMEExLDEgMCAwLDAgMjAsOU0xNy41LDEwLjVIMTkuNVYxMy41SDE3LjVNOS4yNSwxMy41VjE1SDEwLjc1VjEzLjVcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0VuZCA9IFwiTTEyLDFDOC4xNCwxIDUsNC4xNCA1LDhBNyw3IDAgMCwwIDEyLDE1QzE1Ljg2LDE1IDE5LDExLjg3IDE5LDhDMTksNC4xNCAxNS44NiwxIDEyLDFNMTIsMy4xNUMxNC42NywzLjE1IDE2Ljg1LDUuMzIgMTYuODUsOEMxNi44NSwxMC42OCAxNC42NywxMi44NSAxMiwxMi44NUE0Ljg1LDQuODUgMCAwLDEgNy4xNSw4QTQuODUsNC44NSAwIDAsMSAxMiwzLjE1TTExLDVWOC42OUwxNC4xOSwxMC41M0wxNC45NCw5LjIzTDEyLjUsNy44MlY1TTE1LDE2VjE5SDNWMjFIMTVWMjRMMTksMjBNMTksMjBWMjRIMjFWMTZIMTlcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0Zhc3QgPSBcIk0xNSw0QTgsOCAwIDAsMSAyMywxMkE4LDggMCAwLDEgMTUsMjBBOCw4IDAgMCwxIDcsMTJBOCw4IDAgMCwxIDE1LDRNMTUsNkE2LDYgMCAwLDAgOSwxMkE2LDYgMCAwLDAgMTUsMThBNiw2IDAgMCwwIDIxLDEyQTYsNiAwIDAsMCAxNSw2TTE0LDhIMTUuNVYxMS43OEwxNy44MywxNC4xMUwxNi43NywxNS4xN0wxNCwxMi40VjhNMiwxOEExLDEgMCAwLDEgMSwxN0ExLDEgMCAwLDEgMiwxNkg1LjgzQzYuMTQsMTYuNzEgNi41NCwxNy4zOCA3LDE4SDJNMywxM0ExLDEgMCAwLDEgMiwxMkExLDEgMCAwLDEgMywxMUg1LjA1TDUsMTJMNS4wNSwxM0gzTTQsOEExLDEgMCAwLDEgMyw3QTEsMSAwIDAsMSA0LDZIN0M2LjU0LDYuNjIgNi4xNCw3LjI5IDUuODMsOEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrSW4gPSBcIk0yLjIxLDAuNzlMMC43OSwyLjIxTDQuOCw2LjIxTDMsOEg4VjNMNi4yMSw0LjhNMTIsOEM4LjE0LDggNSwxMS4xMyA1LDE1QTcsNyAwIDAsMCAxMiwyMkMxNS44NiwyMiAxOSwxOC44NyAxOSwxNUE3LDcgMCAwLDAgMTIsOE0xMiwxMC4xNUMxNC42NywxMC4xNSAxNi44NSwxMi4zMiAxNi44NSwxNUE0Ljg1LDQuODUgMCAwLDEgMTIsMTkuODVDOS4zMiwxOS44NSA3LjE1LDE3LjY4IDcuMTUsMTVBNC44NSw0Ljg1IDAgMCwxIDEyLDEwLjE1TTExLDEyVjE1LjY5TDE0LjE5LDE3LjUzTDE0Ljk0LDE2LjIzTDEyLjUsMTQuODJWMTJcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja091dCA9IFwiTTE4LDFMMTkuOCwyLjc5TDE1Ljc5LDYuNzlMMTcuMjEsOC4yMUwyMS4yMSw0LjIxTDIzLDZWMU0xMiw4QzguMTQsOCA1LDExLjEzIDUsMTVBNyw3IDAgMCwwIDEyLDIyQzE1Ljg2LDIyIDE5LDE4Ljg3IDE5LDE1QTcsNyAwIDAsMCAxMiw4TTEyLDEwLjE1QzE0LjY3LDEwLjE1IDE2Ljg1LDEyLjMyIDE2Ljg1LDE1QTQuODUsNC44NSAwIDAsMSAxMiwxOS44NUM5LjMyLDE5Ljg1IDcuMTUsMTcuNjggNy4xNSwxNUE0Ljg1LDQuODUgMCAwLDEgMTIsMTAuMTVNMTEsMTJWMTUuNjlMMTQuMTksMTcuNTNMMTQuOTQsMTYuMjNMMTIuNSwxNC44MlYxMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrT3V0bGluZSA9IFwiTTEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkM2LjQ3LDIyIDIsMTcuNSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIuNSw3VjEyLjI1TDE3LDE0LjkyTDE2LjI1LDE2LjE1TDExLDEzVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1N0YXJ0ID0gXCJNMTIsMUM4LjE0LDEgNSw0LjE0IDUsOEE3LDcgMCAwLDAgMTIsMTVDMTUuODYsMTUgMTksMTEuODcgMTksOEMxOSw0LjE0IDE1Ljg2LDEgMTIsMU0xMiwzLjE1QzE0LjY3LDMuMTUgMTYuODUsNS4zMiAxNi44NSw4QzE2Ljg1LDEwLjY4IDE0LjY3LDEyLjg1IDEyLDEyLjg1QTQuODUsNC44NSAwIDAsMSA3LjE1LDhBNC44NSw0Ljg1IDAgMCwxIDEyLDMuMTVNMTEsNVY4LjY5TDE0LjE5LDEwLjUzTDE0Ljk0LDkuMjNMMTIuNSw3LjgyVjVNNCwxNlYyNEg2VjIxSDE4VjI0TDIyLDIwTDE4LDE2VjE5SDZWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVFaWdodCA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk03LjcgMTUuNUw3IDE0LjJMMTEgMTEuOVY3SDEyLjVWMTIuOEw3LjcgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVFaWdodE91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIuNSAxMi44TDcuNyAxNS42TDcgMTQuMkwxMSAxMS45VjdIMTIuNVYxMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUVsZXZlbiA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xMi41IDEzSDExTDguNSA4LjZMOS44IDcuOEwxMSAxMFY3SDEyLjVWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lRWxldmVuT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQgMjAgMjAgMTYuNCAyMCAxMlMxNi40IDQgMTIgNCA0IDcuNiA0IDEyIDcuNiAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDdWMTNIMTFMOC41IDguNkw5LjggNy44TDExIDEwVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVGaXZlID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE0IDE3TDExIDExLjhWN0gxMi41VjExLjRMMTUuMyAxNi4zTDE0IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUZpdmVPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTE1LjMgMTYuMkwxNCAxN0wxMSAxMS44VjdIMTIuNVYxMS40TDE1LjMgMTYuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVGb3VyID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE2LjMgMTUuMkwxMSAxMi4zVjdIMTIuNVYxMS40TDE3IDEzLjlMMTYuMyAxNS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUZvdXJPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTE3IDEzLjlMMTYuMyAxNS4yTDExIDEyLjNWN0gxMi41VjExLjRMMTcgMTMuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVOaW5lID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTNIN1YxMS41SDExVjdIMTIuNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVOaW5lT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQgMjAgMjAgMTYuNCAyMCAxMlMxNi40IDQgMTIgNCA0IDcuNiA0IDEyIDcuNiAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDdWMTNIN1YxMS41SDExVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVPbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuMyAxM0gxMVY3SDEyLjVWOS43TDE0IDcuMUwxNS4zIDcuOUwxMi4zIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZU9uZU91dGxpbmUgPSBcIk0xMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMlMxNi40MiA0IDEyIDQgNCA3LjU4IDQgMTIgNy41OCAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjQ3IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTUuMyA3LjhMMTIuMyAxM0gxMVY3SDEyLjVWOS42NUwxNCA3LjA1TDE1LjMgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZVNldmVuID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTIuMkw5LjggMTdMOC41IDE2LjJMMTEgMTEuOFY3SDEyLjVWMTIuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVTZXZlbk91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIuNSA3VjEyLjJMOS44IDE3TDguNSAxNi4yTDExIDExLjhWN0gxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZVNpeCA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xMi41IDE3SDExVjdIMTIuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVTaXhPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyLjUgN1YxN0gxMVY3SDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVGVuID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTNIMTFMNyAxMC43TDcuOCA5LjRMMTEuMSAxMS4zVjdIMTIuNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUZW5PdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyLjUgMTNIMTFMNyAxMC43TDcuOCA5LjRMMTEuMSAxMS4zVjdIMTIuNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUaHJlZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xNyAxM0gxMVY3SDEyLjVWMTEuNUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUaHJlZU91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTcgMTEuNVYxM0gxMVY3SDEyLjVWMTEuNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUd2VsdmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuNSAxM0gxMVY3SDEyLjVWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVHdlbHZlT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyUzE2LjQyIDQgMTIgNCA0IDcuNTggNCAxMiA3LjU4IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDEzLjAzSDExVjdIMTIuNVYxMy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUd28gPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuNSAxM0gxMVY3SDEyLjVWMTEuM0wxNi4yIDkuMkwxNyAxMC41TDEyLjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVHdvT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyUzE2LjQyIDQgMTIgNCA0IDcuNTggNCAxMiA3LjU4IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDEzVjEzSDExVjdIMTIuNVYxMS4yNkwxNi4yIDkuMTNMMTYuOTUgMTAuNDNMMTIuNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZSA9IFwiTTE5LDYuNDFMMTcuNTksNUwxMiwxMC41OUw2LjQxLDVMNSw2LjQxTDEwLjU5LDEyTDUsMTcuNTlMNi40MSwxOUwxMiwxMy40MUwxNy41OSwxOUwxOSwxNy41OUwxMy40MSwxMkwxOSw2LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlQm94ID0gXCJNMTksM0gxNi4zSDcuN0g1QTIsMiAwIDAsMCAzLDVWNy43VjE2LjRWMTlBMiwyIDAgMCwwIDUsMjFINy43SDE2LjRIMTlBMiwyIDAgMCwwIDIxLDE5VjE2LjNWNy43VjVBMiwyIDAgMCwwIDE5LDNNMTUuNiwxN0wxMiwxMy40TDguNCwxN0w3LDE1LjZMMTAuNiwxMkw3LDguNEw4LjQsN0wxMiwxMC42TDE1LjYsN0wxNyw4LjRMMTMuNCwxMkwxNywxNS42TDE1LjYsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VCb3hNdWx0aXBsZSA9IFwiTTQgMjBIMThWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjZINFYyME0yMC4yMiAySDcuNzhDNi44IDIgNiAyLjggNiAzLjc4VjE2LjIyQzYgMTcuMiA2LjggMTggNy43OCAxOEgyMC4yMkMyMS4yIDE4IDIyIDE3LjIgMjIgMTYuMjJWMy43OEMyMiAyLjggMjEuMiAyIDIwLjIyIDJNMTkgMTMuNkwxNy42IDE1TDE0IDExLjRMMTAuNCAxNUw5IDEzLjZMMTIuNiAxMEw5IDYuNEwxMC40IDVMMTQgOC42TDE3LjYgNUwxOSA2LjRMMTUuNCAxMEwxOSAxMy42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkg4VjRIMjBWMTZNNCA2VjIwSDE4VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY2SDRNOS43NyAxMi44NEwxMi42IDEwTDkuNzcgNy4xNUwxMS4xNyA1Ljc1TDE0IDguNkwxNi44NCA1Ljc3TDE4LjI0IDcuMTdMMTUuNCAxMEwxOC4yMyAxMi44NEwxNi44MyAxNC4yNEwxNCAxMS40TDExLjE3IDE0LjI0TDkuNzcgMTIuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VCb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTksMTlINVY1SDE5VjE5TTE3LDguNEwxMy40LDEyTDE3LDE1LjZMMTUuNiwxN0wxMiwxMy40TDguNCwxN0w3LDE1LjZMMTAuNiwxMkw3LDguNEw4LjQsN0wxMiwxMC42TDE1LjYsN0wxNyw4LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGUgPSBcIk0xMiwyQzE3LjUzLDIgMjIsNi40NyAyMiwxMkMyMiwxNy41MyAxNy41MywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNTMgMiwxMkMyLDYuNDcgNi40NywyIDEyLDJNMTUuNTksN0wxMiwxMC41OUw4LjQxLDdMNyw4LjQxTDEwLjU5LDEyTDcsMTUuNTlMOC40MSwxN0wxMiwxMy40MUwxNS41OSwxN0wxNywxNS41OUwxMy40MSwxMkwxNyw4LjQxTDE1LjU5LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGVNdWx0aXBsZSA9IFwiTTIgMTJDMiA5LjIxIDMuNjQgNi44IDYgNS42OFYzLjVDMi41IDQuNzYgMCA4LjA5IDAgMTJTMi41IDE5LjI0IDYgMjAuNVYxOC4zMkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyTTE1IDNDMTAuMDQgMyA2IDcuMDQgNiAxMlMxMC4wNCAyMSAxNSAyMSAyNCAxNi45NiAyNCAxMiAxOS45NiAzIDE1IDNNMjAgMTUuNTlMMTguNTkgMTdMMTUgMTMuNDFMMTEuNDEgMTdMMTAgMTUuNTlMMTMuNTkgMTJMMTAgOC40MUwxMS40MSA3TDE1IDEwLjU5TDE4LjU5IDdMMjAgOC40MUwxNi40MSAxMkwyMCAxNS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZUNpcmNsZU11bHRpcGxlT3V0bGluZSA9IFwiTTE4LjU0IDkuODhMMTcuMTIgOC40N0wxNSAxMC41OUwxMi44OCA4LjQ3TDExLjQ3IDkuODhMMTMuNTkgMTJMMTEuNDcgMTQuMTJMMTIuODggMTUuNTRMMTUgMTMuNDFMMTcuMTIgMTUuNTRMMTguNTQgMTQuMTJMMTYuNDEgMTJNMiAxMkMyIDkuMjEgMy42NCA2LjggNiA1LjY4VjMuNUMyLjUgNC43NiAwIDguMDkgMCAxMlMyLjUgMTkuMjQgNiAyMC41VjE4LjMyQzMuNjQgMTcuMiAyIDE0Ljc5IDIgMTJNMTUgM0MxMC4wNCAzIDYgNy4wNCA2IDEyUzEwLjA0IDIxIDE1IDIxIDI0IDE2Ljk2IDI0IDEyIDE5Ljk2IDMgMTUgM00xNSAxOUMxMS4xNCAxOSA4IDE1Ljg2IDggMTJTMTEuMTQgNSAxNSA1IDIyIDguMTQgMjIgMTIgMTguODYgMTkgMTUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQzYuNDcsMiAyLDYuNDcgMiwxMkMyLDE3LjUzIDYuNDcsMjIgMTIsMjJDMTcuNTMsMjIgMjIsMTcuNTMgMjIsMTJDMjIsNi40NyAxNy41MywyIDEyLDJNMTQuNTksOEwxMiwxMC41OUw5LjQxLDhMOCw5LjQxTDEwLjU5LDEyTDgsMTQuNTlMOS40MSwxNkwxMiwxMy40MUwxNC41OSwxNkwxNiwxNC41OUwxMy40MSwxMkwxNiw5LjQxTDE0LjU5LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VOZXR3b3JrID0gXCJNMTQuNTksNkwxMiw4LjU5TDkuNDEsNkw4LDcuNDFMMTAuNTksMTBMOCwxMi41OUw5LjQxLDE0TDEyLDExLjQxTDE0LjU5LDE0TDE2LDEyLjU5TDEzLjQxLDEwTDE2LDcuNDFMMTQuNTksNk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZU5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xNS41NCwxMi4xMkwxMy40MSwxMEwxNS41Myw3Ljg3TDE0LjEyLDYuNDZMMTIsOC41OUw5Ljg4LDYuNDZMOC40Nyw3Ljg3TDEwLjU5LDEwTDguNDcsMTIuMTNMOS44OCwxMy41NEwxMiwxMS40MUwxNC4xMiwxMy41NEwxNS41NCwxMi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZU9jdGFnb24gPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNMMjEsMTUuNzNWOC4yN0wxNS43MywzTTguNDEsN0wxMiwxMC41OUwxNS41OSw3TDE3LDguNDFMMTMuNDEsMTJMMTcsMTUuNTlMMTUuNTksMTdMMTIsMTMuNDFMOC40MSwxN0w3LDE1LjU5TDEwLjU5LDEyTDcsOC40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlT2N0YWdvbk91dGxpbmUgPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNDMTcuNSwxOS4yNCAyMSwxNS43MyAyMSwxNS43M1Y4LjI3TDE1LjczLDNNOS4xLDVIMTQuOUwxOSw5LjFWMTQuOUwxNC45LDE5SDkuMUw1LDE0LjlWOS4xTTkuMTIsNy43MUw3LjcxLDkuMTJMMTAuNTksMTJMNy43MSwxNC44OEw5LjEyLDE2LjI5TDEyLDEzLjQxTDE0Ljg4LDE2LjI5TDE2LjI5LDE0Ljg4TDEzLjQxLDEyTDE2LjI5LDkuMTJMMTQuODgsNy43MUwxMiwxMC41OVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlT3V0bGluZSA9IFwiTTMsMTYuNzRMNy43NiwxMkwzLDcuMjZMNy4yNiwzTDEyLDcuNzZMMTYuNzQsM0wyMSw3LjI2TDE2LjI0LDEyTDIxLDE2Ljc0TDE2Ljc0LDIxTDEyLDE2LjI0TDcuMjYsMjFMMywxNi43NE0xMiwxMy40MUwxNi43NCwxOC4xNkwxOC4xNiwxNi43NEwxMy40MSwxMkwxOC4xNiw3LjI2TDE2Ljc0LDUuODRMMTIsMTAuNTlMNy4yNiw1Ljg0TDUuODQsNy4yNkwxMC41OSwxMkw1Ljg0LDE2Ljc0TDcuMjYsMTguMTZMMTIsMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VUaGljayA9IFwiTTIwIDYuOTFMMTcuMDkgNEwxMiA5LjA5TDYuOTEgNEw0IDYuOTFMOS4wOSAxMkw0IDE3LjA5TDYuOTEgMjBMMTIgMTQuOTFMMTcuMDkgMjBMMjAgMTcuMDlMMTQuOTEgMTJMMjAgNi45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZWRDYXB0aW9uID0gXCJNMTgsMTFIMTYuNVYxMC41SDE0LjVWMTMuNUgxNi41VjEzSDE4VjE0QTEsMSAwIDAsMSAxNywxNUgxNEExLDEgMCAwLDEgMTMsMTRWMTBBMSwxIDAgMCwxIDE0LDlIMTdBMSwxIDAgMCwxIDE4LDEwTTExLDExSDkuNVYxMC41SDcuNVYxMy41SDkuNVYxM0gxMVYxNEExLDEgMCAwLDEgMTAsMTVIN0ExLDEgMCAwLDEgNiwxNFYxMEExLDEgMCAwLDEgNyw5SDEwQTEsMSAwIDAsMSAxMSwxME0xOSw0SDVDMy44OSw0IDMsNC44OSAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjZDMjEsNC44OSAyMC4xLDQgMTksNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZWRDYXB0aW9uT3V0bGluZSA9IFwiTTUsNEM0LjQ1LDQgNCw0LjE4IDMuNTksNC41N0MzLjIsNC45NiAzLDUuNDQgMyw2VjE4QzMsMTguNTYgMy4yLDE5LjA0IDMuNTksMTkuNDNDNCwxOS44MiA0LjQ1LDIwIDUsMjBIMTlDMTkuNSwyMCAyMCwxOS44MSAyMC4zOSwxOS40MUMyMC44LDE5IDIxLDE4LjUzIDIxLDE4VjZDMjEsNS40NyAyMC44LDUgMjAuMzksNC41OUMyMCw0LjE5IDE5LjUsNCAxOSw0SDVNNC41LDUuNUgxOS41VjE4LjVINC41VjUuNU03LDlDNi43LDkgNi40Nyw5LjA5IDYuMjgsOS4yOEM2LjA5LDkuNDcgNiw5LjcgNiwxMFYxNEM2LDE0LjMgNi4wOSwxNC41MyA2LjI4LDE0LjcyQzYuNDcsMTQuOTEgNi43LDE1IDcsMTVIMTBDMTAuMjcsMTUgMTAuNSwxNC45MSAxMC43MSwxNC43MkMxMC45MSwxNC41MyAxMSwxNC4zIDExLDE0VjEzSDkuNVYxMy41SDcuNVYxMC41SDkuNVYxMUgxMVYxMEMxMSw5LjcgMTAuOTEsOS40NyAxMC43MSw5LjI4QzEwLjUsOS4wOSAxMC4yNyw5IDEwLDlIN00xNCw5QzEzLjczLDkgMTMuNSw5LjA5IDEzLjI5LDkuMjhDMTMuMDksOS40NyAxMyw5LjcgMTMsMTBWMTRDMTMsMTQuMyAxMy4wOSwxNC41MyAxMy4yOSwxNC43MkMxMy41LDE0LjkxIDEzLjczLDE1IDE0LDE1SDE3QzE3LjMsMTUgMTcuNTMsMTQuOTEgMTcuNzIsMTQuNzJDMTcuOTEsMTQuNTMgMTgsMTQuMyAxOCwxNFYxM0gxNi41VjEzLjVIMTQuNVYxMC41SDE2LjVWMTFIMThWMTBDMTgsOS43IDE3LjkxLDkuNDcgMTcuNzIsOS4yOEMxNy41Myw5LjA5IDE3LjMsOSAxNyw5SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkID0gXCJNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQWxlcnQgPSBcIk0xOSAyMEg2QzIuNyAyMCAwIDE3LjMgMCAxNEMwIDEwLjkgMi4zIDguNCA1LjMgOEM2LjYgNS42IDkuMSA0IDEyIDRDMTUuNiA0IDE4LjcgNi42IDE5LjQgMTBDMjIgMTAuMiAyNCAxMi4zIDI0IDE1QzI0IDE3LjcgMjEuNyAyMCAxOSAyME0xMSAxNVYxN0gxM1YxNUgxMU0xMSAxM0gxM1Y3SDExVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQnJhY2VzID0gXCJNNiwyMEE2LDYgMCAwLDEgMCwxNEMwLDEwLjkxIDIuMzQsOC4zNiA1LjM1LDguMDRDNi42LDUuNjQgOS4xMSw0IDEyLDRDMTUuNjMsNCAxOC42Niw2LjU4IDE5LjM1LDEwQzIxLjk1LDEwLjE5IDI0LDEyLjM2IDI0LDE1QTUsNSAwIDAsMSAxOSwyMEg2TTE4LjUsMTJIMThBMSwxIDAgMCwxIDE3LDExVjEwQTIsMiAwIDAsMCAxNSw4SDEzLjVWMTBIMTVWMTFBMiwyIDAgMCwwIDE3LDEzQTIsMiAwIDAsMCAxNSwxNVYxNkgxMy41VjE4SDE1QTIsMiAwIDAsMCAxNywxNlYxNUExLDEgMCAwLDEgMTgsMTRIMTguNVYxMk01LjUsMTJWMTRINkExLDEgMCAwLDEgNywxNVYxNkEyLDIgMCAwLDAgOSwxOEgxMC41VjE2SDlWMTVBMiwyIDAgMCwwIDcsMTNBMiwyIDAgMCwwIDksMTFWMTBIMTAuNVY4SDlBMiwyIDAgMCwwIDcsMTBWMTFBMSwxIDAgMCwxIDYsMTJINS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQ2hlY2sgPSBcIk0xMCwxN0w2LjUsMTMuNUw3LjkxLDEyLjA4TDEwLDE0LjE3TDE1LjE4LDlMMTYuNTksMTAuNDFNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQ2hlY2tPdXRsaW5lID0gXCJNMTkgMThINkMzLjc5IDE4IDIgMTYuMjEgMiAxNFMzLjc5IDEwIDYgMTBINi43MUM3LjM3IDcuNjkgOS41IDYgMTIgNkMxNS4wNCA2IDE3LjUgOC40NiAxNy41IDExLjVWMTJIMTlDMjAuNjYgMTIgMjIgMTMuMzQgMjIgMTVTMjAuNjYgMTggMTkgMThNMTkuMzUgMTAuMDNDMTguNjcgNi41OSAxNS42NCA0IDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wM0MyLjM0IDguMzYgMCAxMC45IDAgMTRDMCAxNy4zMSAyLjY5IDIwIDYgMjBIMTlDMjEuNzYgMjAgMjQgMTcuNzYgMjQgMTVDMjQgMTIuMzYgMjEuOTUgMTAuMjIgMTkuMzUgMTAuMDNNMTAgMTdMNi41IDEzLjVMNy45MSAxMi4wOEwxMCAxNC4xN0wxNC41OSA5LjU5TDE2IDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRDaXJjbGUgPSBcIk0xNi41LDE2SDhBMywzIDAgMCwxIDUsMTNBMywzIDAgMCwxIDgsMTBDOC4wNSwxMCA4LjA5LDEwIDguMTQsMTBDOC41OCw4LjI4IDEwLjEzLDcgMTIsN0E0LDQgMCAwLDEgMTYsMTFIMTYuNUEyLjUsMi41IDAgMCwxIDE5LDEzLjVBMi41LDIuNSAwIDAsMSAxNi41LDE2TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkRG93bmxvYWQgPSBcIk0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkRG93bmxvYWRPdXRsaW5lID0gXCJNOCwxM0gxMC41NVYxMEgxMy40NVYxM0gxNkwxMiwxN0w4LDEzTTE5LjM1LDEwLjA0QzIxLjk1LDEwLjIyIDI0LDEyLjM2IDI0LDE1QTUsNSAwIDAsMSAxOSwyMEg2QTYsNiAwIDAsMSAwLDE0QzAsMTAuOTEgMi4zNCw4LjM2IDUuMzUsOC4wNEM2LjYsNS42NCA5LjExLDQgMTIsNEMxNS42NCw0IDE4LjY3LDYuNTkgMTkuMzUsMTAuMDRNMTksMThBMywzIDAgMCwwIDIyLDE1QzIyLDEzLjQ1IDIwLjc4LDEyLjE0IDE5LjIyLDEyLjA0TDE3LjY5LDExLjkzTDE3LjM5LDEwLjQzQzE2Ljg4LDcuODYgMTQuNjIsNiAxMiw2QzkuOTQsNiA4LjA4LDcuMTQgNy4xMyw4Ljk3TDYuNjMsOS45Mkw1LjU2LDEwLjAzQzMuNTMsMTAuMjQgMiwxMS45NSAyLDE0QTQsNCAwIDAsMCA2LDE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkTG9jayA9IFwiTTIyIDE3QzIyLjUgMTcgMjMgMTcuNSAyMyAxOFYyMkMyMyAyMi41IDIyLjUgMjMgMjIgMjNIMTdDMTYuNSAyMyAxNiAyMi41IDE2IDIyVjE4QzE2IDE3LjUgMTYuNSAxNyAxNyAxN1YxNS41QzE3IDE0LjEgMTguMSAxMyAxOS41IDEzQzIwLjkgMTMgMjIgMTQuMSAyMiAxNS41VjE3TTIxIDE3VjE1LjVDMjEgMTQuNyAyMC4zIDE0IDE5LjUgMTRDMTguNyAxNCAxOCAxNC43IDE4IDE1LjVWMTdIMjFNMTkuMzYgOS4wM0MyMS45NSA5LjIyIDI0IDExLjM2IDI0IDE0TDIzLjk0IDE0Ljc3QzIzLjU5IDEyLjYzIDIxLjc0IDExIDE5LjUgMTFDMTcgMTEgMTUgMTMgMTUgMTUuNUwxNSAxNS43NkMxNC4zOSAxNi4zMSAxNCAxNy4xMSAxNCAxOFYxOUg2QzIuNjkgMTkgMCAxNi4zMSAwIDEzQzAgOS45IDIuMzQgNy4zNiA1LjM1IDcuMDRDNi42IDQuNjQgOS4xMSAzIDEyIDNDMTUuNjQgMyAxOC42NyA1LjU5IDE5LjM2IDkuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRMb2NrT3V0bGluZSA9IFwiTTIyIDE3QzIyLjUgMTcgMjMgMTcuNSAyMyAxOFYyMkMyMyAyMi41IDIyLjUgMjMgMjIgMjNIMTdDMTYuNSAyMyAxNiAyMi41IDE2IDIyVjE4QzE2IDE3LjUgMTYuNSAxNyAxNyAxN1YxNS41QzE3IDE0LjEgMTguMSAxMyAxOS41IDEzQzIwLjkgMTMgMjIgMTQuMSAyMiAxNS41VjE3TTIxIDE3VjE1LjVDMjEgMTQuNyAyMC4zIDE0IDE5LjUgMTRDMTguNyAxNCAxOCAxNC43IDE4IDE1LjVWMTdIMjFNMTcuNSAxMVYxMC41QzE3LjUgNy40NiAxNS4wNCA1IDEyIDVDOS41IDUgNy4zNyA2LjY5IDYuNzEgOUg2QzMuNzkgOSAyIDEwLjc5IDIgMTNDMiAxNS4yMSAzLjc5IDE3IDYgMTdIMTQuMTdDMTQuMDYgMTcuMzEgMTQgMTcuNjUgMTQgMThWMTlINkMyLjY5IDE5IDAgMTYuMzEgMCAxM0MwIDkuOSAyLjM0IDcuMzYgNS4zNSA3LjA0QzYuNiA0LjY0IDkuMTEgMyAxMiAzQzE1LjY0IDMgMTguNjcgNS42IDE5LjM2IDkuMDRDMjEuOTUgOS4yMiAyNCAxMS4zNiAyNCAxNEwyMy45NCAxNC43N0MyMy41OSAxMi42MyAyMS43NCAxMSAxOS41IDExSDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRPZmZPdXRsaW5lID0gXCJNNy43MywxMEwxNS43MywxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwTTMsNS4yN0w1Ljc1LDhDMi41Niw4LjE1IDAsMTAuNzcgMCwxNEE2LDYgMCAwLDAgNiwyMEgxNy43M0wxOS43MywyMkwyMSwyMC43M0w0LjI3LDRNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDMTAuNSw0IDkuMTUsNC40MyA4LDUuMTdMOS40NSw2LjYzQzEwLjIxLDYuMjMgMTEuMDgsNiAxMiw2QTUuNSw1LjUgMCAwLDEgMTcuNSwxMS41VjEySDE5QTMsMyAwIDAsMSAyMiwxNUMyMiwxNi4xMyAyMS4zNiwxNy4xMSAyMC40NCwxNy42MkwyMS44OSwxOS4wN0MyMy4xNiwxOC4xNiAyNCwxNi42OCAyNCwxNUMyNCwxMi4zNiAyMS45NSwxMC4yMiAxOS4zNSwxMC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZE91dGxpbmUgPSBcIk0xOSwxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwSDYuNzFDNy4zNyw3LjY5IDkuNSw2IDEyLDZBNS41LDUuNSAwIDAsMSAxNy41LDExLjVWMTJIMTlBMywzIDAgMCwxIDIyLDE1QTMsMyAwIDAsMSAxOSwxOE0xOS4zNSwxMC4wM0MxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42LDUuNjQgNS4zNSw4LjAzQzIuMzQsOC4zNiAwLDEwLjkgMCwxNEE2LDYgMCAwLDAgNiwyMEgxOUE1LDUgMCAwLDAgMjQsMTVDMjQsMTIuMzYgMjEuOTUsMTAuMjIgMTkuMzUsMTAuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRQcmludCA9IFwiTTEyLDJDOS4xMSwyIDYuNiwzLjY0IDUuMzUsNi4wNEMyLjM0LDYuMzYgMCw4LjkxIDAsMTJBNiw2IDAgMCwwIDYsMThWMjJIMThWMThIMTlBNSw1IDAgMCwwIDI0LDEzQzI0LDEwLjM2IDIxLjk1LDguMjIgMTkuMzUsOC4wNEMxOC42Nyw0LjU5IDE1LjY0LDIgMTIsMk04LDEzSDE2VjIwSDhWMTNNOSwxNFYxNUgxNVYxNEg5TTksMTZWMTdIMTVWMTZIOU05LDE4VjE5SDE1VjE4SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRQcmludE91dGxpbmUgPSBcIk0xOSwxNkEzLDMgMCAwLDAgMjIsMTNBMywzIDAgMCwwIDE5LDEwSDE3LjVWOS41QTUuNSw1LjUgMCAwLDAgMTIsNEM5LjUsNCA3LjM3LDUuNjkgNi43MSw4SDZBNCw0IDAgMCwwIDIsMTJBNCw0IDAgMCwwIDYsMTZWMTFIMThWMTZIMTlNMTkuMzYsOC4wNEMyMS45NSw4LjIyIDI0LDEwLjM2IDI0LDEzQTUsNSAwIDAsMSAxOSwxOEgxOFYyMkg2VjE4QTYsNiAwIDAsMSAwLDEyQzAsOC45MSAyLjM0LDYuMzYgNS4zNSw2LjA0QzYuNiwzLjY0IDkuMTEsMiAxMiwyQzE1LjY0LDIgMTguNjcsNC42IDE5LjM2LDguMDRNOCwxM1YyMEgxNlYxM0g4TTksMThIMTVWMTlIOVYxOE0xNSwxN0g5VjE2SDE1VjE3TTksMTRIMTVWMTVIOVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFF1ZXN0aW9uID0gXCJNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzTTEzLDE3SDExVjE1SDEzVjE3TTE0LjgsMTEuODJDMTQuNSwxMi4yMSAxNC4xMywxMi41IDEzLjY3LDEyLjc1QzEzLjQxLDEyLjkxIDEzLjI0LDEzLjA3IDEzLjE1LDEzLjI2QzEzLjA2LDEzLjQ1IDEzLDEzLjY5IDEzLDE0SDExQzExLDEzLjQ1IDExLjExLDEzLjA4IDExLjMsMTIuODJDMTEuNSwxMi41NiAxMS44NSwxMi4yNSAxMi4zNywxMS45MUMxMi42MywxMS43NSAxMi44NCwxMS41NiAxMywxMS4zMkMxMy4xNSwxMS4wOSAxMy4yMywxMC44MSAxMy4yMywxMC41QzEzLjIzLDEwLjE4IDEzLjE0LDkuOTQgMTIuOTYsOS43NkMxMi43OCw5LjU2IDEyLjUsOS40NyAxMi4yLDkuNDdDMTEuOTMsOS40NyAxMS43MSw5LjU1IDExLjUsOS43QzExLjM1LDkuODUgMTEuMjUsMTAuMDggMTEuMjUsMTAuMzlIOS4yOEM5LjIzLDkuNjQgOS41LDkgMTAuMDYsOC41OUMxMC42LDguMiAxMS4zMSw4IDEyLjIsOEMxMy4xNCw4IDEzLjg5LDguMjMgMTQuNDMsOC42OEMxNC45Nyw5LjEzIDE1LjI0LDkuNzUgMTUuMjQsMTAuNUMxNS4yNCwxMSAxNS4wOSwxMS40MSAxNC44LDExLjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkUmVmcmVzaCA9IFwiTTEyIDRDMTUuNjQgNCAxOC42NyA2LjU5IDE5LjM1IDEwLjA0QzIxLjk1IDEwLjIyIDI0IDEyLjM2IDI0IDE1QzI0IDE3Ljc2IDIxLjc2IDIwIDE5IDIwSDZDMi42OSAyMCAwIDE3LjMxIDAgMTRDMCAxMC45MSAyLjM0IDguMzYgNS4zNSA4LjA0QzYuNiA1LjY0IDkuMTEgNCAxMiA0TTE3IDEzVjlMMTYgMTBDMTUuMDkgOC43OSAxMy42NCA4IDEyIDhDOS4yNCA4IDcgMTAuMjQgNyAxM0M3IDE1Ljc2IDkuMjQgMTggMTIgMThDMTQuMDUgMTggMTUuODEgMTYuNzcgMTYuNTggMTVIMTQuMjRDMTMuNjkgMTUuNjEgMTIuODkgMTYgMTIgMTZDMTAuMzQgMTYgOSAxNC42NiA5IDEzQzkgMTEuMzQgMTAuMzQgMTAgMTIgMTBDMTMuMDkgMTAgMTQuMDQgMTAuNTggMTQuNTYgMTEuNDRMMTMgMTNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xOS4zNSw4LjAzQzIxLjk1LDguMjIgMjQsMTAuMzYgMjQsMTNDMjQsMTQuNjQgMjMuMjEsMTYuMSAyMiwxN1YxNi41QTYuNSw2LjUgMCAwLDAgMTUuNSwxMEE2LjUsNi41IDAgMCwwIDksMTYuNUM5LDE3IDkuMDYsMTcuNSA5LjE3LDE4SDZBNiw2IDAgMCwxIDAsMTJDMCw4LjkgMi4zNCw2LjM2IDUuMzUsNi4wM0M2LjYsMy42NCA5LjExLDIgMTIsMkMxNS42NCwyIDE4LjY3LDQuNTkgMTkuMzUsOC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFNlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0yMiwxM0EzLDMgMCAwLDAgMTksMTBIMTcuNVY5LjVBNS41LDUuNSAwIDAsMCAxMiw0QzkuNSw0IDcuMzcsNS42OSA2LjcxLDhINkE0LDQgMCAwLDAgMiwxMkE0LDQgMCAwLDAgNiwxNkg5VjE2LjVDOSwxNyA5LjA2LDE3LjUgOS4xNywxOEg2QTYsNiAwIDAsMSAwLDEyQzAsOC45IDIuMzQsNi4zNiA1LjM1LDYuMDRDNi42LDMuNjQgOS4xMSwyIDEyLDJDMTUuNjQsMiAxOC42Nyw0LjU5IDE5LjM2LDguMDRDMjEuOTUsOC4yMiAyNCwxMC4zNiAyNCwxM0MyNCwxNC42NSAyMy4yMSwxNi4xIDIyLDE3VjE2LjVDMjIsMTUuNzcgMjEuODgsMTUuMDYgMjEuNjUsMTQuNEMyMS44NywxNCAyMiwxMy41IDIyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkU3luYyA9IFwiTTE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE2LjcyIDE0LjIyQzE2Ljc4IDE0LjE3IDE2Ljg1IDE0LjEzIDE5IDEyTTE5IDIzVjIxLjVDMTYuNzkgMjEuNSAxNSAxOS43MSAxNSAxNy41QzE1IDE2LjY4IDE1LjI1IDE1LjkyIDE1LjY3IDE1LjI5TDE2Ljc2IDE2LjM4QzE2LjU5IDE2LjcyIDE2LjUgMTcuMSAxNi41IDE3LjVDMTYuNSAxOC44OCAxNy42MiAyMCAxOSAyMFYxOC41TDIxLjI1IDIwLjc1TDIxLjI4IDIwLjc4QzIxLjIyIDIwLjgzIDIxLjE1IDIwLjg3IDE5IDIzTTEzIDE3LjVDMTMgMTMuOTEgMTUuOTEgMTEgMTkuNSAxMUMyMC43OCAxMSAyMS45NyAxMS4zOCAyMyAxMkMyMi4xMyAxMC45IDIwLjg0IDEwLjE0IDE5LjM1IDEwLjAzQzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDNDMi4zNCA4LjM2IDAgMTAuOSAwIDE0QzAgMTcuMzEgMi42OSAyMCA2IDIwSDEzLjVDMTMuMTggMTkuMjMgMTMgMTguMzkgMTMgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFN5bmNPdXRsaW5lID0gXCJNMTkgMTJWMTMuNUMyMS4yMSAxMy41IDIzIDE1LjI5IDIzIDE3LjVDMjMgMTguMzIgMjIuNzUgMTkuMDggMjIuMzMgMTkuNzFMMjEuMjQgMTguNjJDMjEuNDEgMTguMjggMjEuNSAxNy45IDIxLjUgMTcuNUMyMS41IDE2LjEyIDIwLjM4IDE1IDE5IDE1VjE2LjVMMTYuNzUgMTQuMjVMMTYuNzIgMTQuMjJDMTYuNzggMTQuMTcgMTYuODUgMTQuMTMgMTkgMTJNMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVMMjEuMjUgMjAuNzVMMjEuMjggMjAuNzhDMjEuMjIgMjAuODMgMjEuMTUgMjAuODcgMTkgMjNNMTMuMDMgMThINkMzLjc5IDE4IDIgMTYuMjEgMiAxNFMzLjc5IDEwIDYgMTBINi43MUM3LjM3IDcuNjkgOS41IDYgMTIgNkMxNSA2IDE3LjQgOC4zNyAxNy41IDExLjMyQzE4LjEyIDExLjExIDE4LjggMTEgMTkuNSAxMUMyMC43OCAxMSAyMS45NyAxMS4zOCAyMyAxMkMyMi4xMyAxMC45IDIwLjg0IDEwLjE0IDE5LjM1IDEwLjAzQzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDNDMi4zNCA4LjM2IDAgMTAuOSAwIDE0QzAgMTcuMzEgMi42OSAyMCA2IDIwSDEzLjVDMTMuMjQgMTkuMzggMTMuMDggMTguNyAxMy4wMyAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFRhZ3MgPSBcIk02LDIwQTYsNiAwIDAsMSAwLDE0QzAsMTAuOTEgMi4zNCw4LjM2IDUuMzUsOC4wNEM2LjYsNS42NCA5LjExLDQgMTIsNEMxNS42Myw0IDE4LjY2LDYuNTggMTkuMzUsMTBDMjEuOTUsMTAuMTkgMjQsMTIuMzYgMjQsMTVBNSw1IDAgMCwxIDE5LDIwSDZNOS4wOSw4LjRMNC41LDEzTDkuMDksMTcuNkwxMC41LDE2LjE4TDcuMzIsMTNMMTAuNSw5LjgyTDkuMDksOC40TTE0LjkxLDguNEwxMy41LDkuODJMMTYuNjgsMTNMMTMuNSwxNi4xOEwxNC45MSwxNy42TDE5LjUsMTNMMTQuOTEsOC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkVXBsb2FkID0gXCJNMTQsMTNWMTdIMTBWMTNIN0wxMiw4TDE3LDEzTTE5LjM1LDEwLjAzQzE4LjY3LDYuNTkgMTUuNjQsNCAxMiw0QzkuMTEsNCA2LjYsNS42NCA1LjM1LDguMDNDMi4zNCw4LjM2IDAsMTAuOSAwLDE0QTYsNiAwIDAsMCA2LDIwSDE5QTUsNSAwIDAsMCAyNCwxNUMyNCwxMi4zNiAyMS45NSwxMC4yMiAxOS4zNSwxMC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFVwbG9hZE91dGxpbmUgPSBcIk0xOS4zNSwxMC4wNEMxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42LDUuNjQgNS4zNSw4LjA0QzIuMzQsOC4zNiAwLDEwLjkxIDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjA0TTE5LDE4SDZBNCw0IDAgMCwxIDIsMTRDMiwxMS45NSAzLjUzLDEwLjI0IDUuNTYsMTAuMDNMNi42Myw5LjkyTDcuMTMsOC45N0M4LjA4LDcuMTQgOS45NCw2IDEyLDZDMTQuNjIsNiAxNi44OCw3Ljg2IDE3LjM5LDEwLjQzTDE3LjY5LDExLjkzTDE5LjIyLDEyLjA0QzIwLjc4LDEyLjE0IDIyLDEzLjQ1IDIyLDE1QTMsMyAwIDAsMSAxOSwxOE04LDEzSDEwLjU1VjE2SDEzLjQ1VjEzSDE2TDEyLDlMOCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG92ZXIgPSBcIk0xMiwxMS4xOEMxNS4zLDguMTggMTcsNi42NCAxNyw0LjY5QzE3LDMuMTkgMTUuNzUsMiAxNC4yNSwyQzEzLjM5LDIgMTIuNTcsMi4zNiAxMiwzQzExLjQzLDIuMzYgMTAuNjEsMiA5LjY5LDJDOC4xOSwyIDcsMy4yNSA3LDQuNzVDNyw2LjY0IDguNyw4LjE4IDEyLDExLjE4TTExLjE4LDEyQzguMTgsOC43IDYuNjQsNyA0LjY5LDdDMy4xOSw3IDIsOC4yNSAyLDkuNzVDMiwxMC42MSAyLjM2LDExLjQzIDMsMTJDMi4zNiwxMi41NyAyLDEzLjM5IDIsMTQuMzFDMiwxNS44MSAzLjI1LDE3IDQuNzUsMTdDNi42NCwxNyA4LjE4LDE1LjMgMTEuMTgsMTJNMTIuODMsMTJDMTUuODIsMTUuMyAxNy4zNiwxNyAxOS4zMSwxN0MyMC44MSwxNyAyMiwxNS43NSAyMiwxNC4yNUMyMiwxMy4zOSAyMS42NCwxMi41NyAyMSwxMkMyMS42NCwxMS40MyAyMiwxMC42MSAyMiw5LjY5QzIyLDguMTkgMjAuNzUsNyAxOS4yNSw3QzE3LjM2LDcgMTUuODIsOC43IDEyLjgzLDEyTTEyLDEyLjgyQzguNywxNS44MiA3LDE3LjM2IDcsMTkuMzFDNywyMC44MSA4LjI1LDIyIDkuNzUsMjJDMTAuNjEsMjIgMTEuNDMsMjEuNjQgMTIsMjFDMTIuNTcsMjEuNjQgMTMuMzksMjIgMTQuMzEsMjJDMTUuODEsMjIgMTcsMjAuNzUgMTcsMTkuMjVDMTcsMTcuMzYgMTUuMywxNS44MiAxMiwxMi44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2FjaExhbXAgPSBcIk0xNiA1TDE1IDJIMTNMMTIgNUw2IDhIOEw4LjYgMTFINFY3SDJWMTdINFYxM0g5TDEwIDE4TDEyIDIwTDEzIDIySDE1TDE2IDIwTDE4IDE4TDIwIDhIMjJNMTYuMTYgMTdIMTEuODRMMTAgOEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2F0UmFjayA9IFwiTTE4LjMzIDcuNzhBMSAxIDAgMCAwIDE2LjY2IDguODlBMiAyIDAgMSAxIDEzIDEwVjcuODJBMyAzIDAgMSAwIDExIDcuODJWMTBBMiAyIDAgMSAxIDcuMzQgOC44OUExIDEgMCAxIDAgNS42NyA3Ljc4QTQgNCAwIDAgMCAxMSAxMy40NlYyMEEyIDIgMCAwIDAgOSAyMkgxNUEyIDIgMCAwIDAgMTMgMjBWMTMuNDZBNCA0IDAgMCAwIDE4LjMzIDcuNzhNMTIgNEExIDEgMCAxIDEgMTEgNUExIDEgMCAwIDEgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlQXJyYXkgPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNiw2VjE4SDEwVjE2SDhWOEgxMFY2SDZNMTYsMTZIMTRWMThIMThWNkgxNFY4SDE2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVCcmFjZXMgPSBcIk04LDNBMiwyIDAgMCwwIDYsNVY5QTIsMiAwIDAsMSA0LDExSDNWMTNINEEyLDIgMCAwLDEgNiwxNVYxOUEyLDIgMCAwLDAgOCwyMUgxMFYxOUg4VjE0QTIsMiAwIDAsMCA2LDEyQTIsMiAwIDAsMCA4LDEwVjVIMTBWM00xNiwzQTIsMiAwIDAsMSAxOCw1VjlBMiwyIDAgMCwwIDIwLDExSDIxVjEzSDIwQTIsMiAwIDAsMCAxOCwxNVYxOUEyLDIgMCAwLDEgMTYsMjFIMTRWMTlIMTZWMTRBMiwyIDAgMCwxIDE4LDEyQTIsMiAwIDAsMSAxNiwxMFY1SDE0VjNIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUJyYWNlc0JveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMSA4SDlWMTBDOSAxMS4xIDguMSAxMiA3IDEyQzguMSAxMiA5IDEyLjkgOSAxNFYxNkgxMVYxOEg5QzcuOSAxOCA3IDE3LjEgNyAxNlYxNUM3IDEzLjkgNi4xIDEzIDUgMTNWMTFDNi4xIDExIDcgMTAuMSA3IDlWOEM3IDYuOSA3LjkgNiA5IDZIMTFWOE0xOSAxM0MxNy45IDEzIDE3IDEzLjkgMTcgMTVWMTZDMTcgMTcuMSAxNi4xIDE4IDE1IDE4SDEzVjE2SDE1VjE0QzE1IDEyLjkgMTUuOSAxMiAxNyAxMkMxNS45IDEyIDE1IDExLjEgMTUgMTBWOEgxM1Y2SDE1QzE2LjEgNiAxNyA2LjkgMTcgOFY5QzE3IDEwLjEgMTcuOSAxMSAxOSAxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlQnJhY2tldHMgPSBcIk0xNSw0VjZIMThWMThIMTVWMjBIMjBWNE00LDRWMjBIOVYxOEg2VjZIOVY0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUVxdWFsID0gXCJNNiwxM0gxMVYxNUg2TTEzLDEzSDE4VjE1SDEzTTEzLDlIMThWMTFIMTNNNiw5SDExVjExSDZNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlR3JlYXRlclRoYW4gPSBcIk0xMC40MSw3LjQxTDE1LDEyTDEwLjQxLDE2LjZMOSwxNS4xOEwxMi4xOCwxMkw5LDguODJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlR3JlYXRlclRoYW5PckVxdWFsID0gXCJNMTMsMTNIMThWMTVIMTNNMTMsOUgxOFYxMUgxM002LjkxLDcuNDFMMTEuNSwxMkw2LjkxLDE2LjZMNS41LDE1LjE4TDguNjgsMTJMNS41LDguODJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlSnNvbiA9IFwiTTUsM0g3VjVINVYxMEEyLDIgMCAwLDEgMywxMkEyLDIgMCAwLDEgNSwxNFYxOUg3VjIxSDVDMy45MywyMC43MyAzLDIwLjEgMywxOVYxNUEyLDIgMCAwLDAgMSwxM0gwVjExSDFBMiwyIDAgMCwwIDMsOVY1QTIsMiAwIDAsMSA1LDNNMTksM0EyLDIgMCAwLDEgMjEsNVY5QTIsMiAwIDAsMCAyMywxMUgyNFYxM0gyM0EyLDIgMCAwLDAgMjEsMTVWMTlBMiwyIDAgMCwxIDE5LDIxSDE3VjE5SDE5VjE0QTIsMiAwIDAsMSAyMSwxMkEyLDIgMCAwLDEgMTksMTBWNUgxN1YzSDE5TTEyLDE1QTEsMSAwIDAsMSAxMywxNkExLDEgMCAwLDEgMTIsMTdBMSwxIDAgMCwxIDExLDE2QTEsMSAwIDAsMSAxMiwxNU04LDE1QTEsMSAwIDAsMSA5LDE2QTEsMSAwIDAsMSA4LDE3QTEsMSAwIDAsMSA3LDE2QTEsMSAwIDAsMSA4LDE1TTE2LDE1QTEsMSAwIDAsMSAxNywxNkExLDEgMCAwLDEgMTYsMTdBMSwxIDAgMCwxIDE1LDE2QTEsMSAwIDAsMSAxNiwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlTGVzc1RoYW4gPSBcIk0xMy41OSw3LjQxTDksMTJMMTMuNTksMTYuNkwxNSwxNS4xOEwxMS44MiwxMkwxNSw4LjgyTTE5LDNDMjAuMTEsMyAyMSwzLjkgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUxlc3NUaGFuT3JFcXVhbCA9IFwiTTEzLDEzSDE4VjE1SDEzTTEzLDlIMThWMTFIMTNNMTAuMDksNy40MUwxMS41LDguODJMOC4zMiwxMkwxMS41LDE1LjE4TDEwLjA5LDE2LjZMNS41LDEyTTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZU5vdEVxdWFsID0gXCJNNiwxNUg4VjE3SDZNMTEsMTNIMThWMTVIMTFNMTEsOUgxOFYxMUgxMU02LDdIOFYxM0g2TTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZU5vdEVxdWFsVmFyaWFudCA9IFwiTTExLDYuNVY5LjMzTDguMzMsMTJMMTEsMTQuNjdWMTcuNUw1LjUsMTJNMTMsNi40M0wxOC41NywxMkwxMywxNy41N1YxNC43NEwxNS43NCwxMkwxMyw5LjI2TTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVBhcmVudGhlc2VzID0gXCJNMTcuNjIsM0MxOS4xMyw1LjI3IDIwLDguNTUgMjAsMTJDMjAsMTUuNDQgMTkuMTMsMTguNzIgMTcuNjIsMjFMMTYsMTkuOTZDMTcuMjYsMTguMDcgMTgsMTUuMTMgMTgsMTJDMTgsOC44NyAxNy4yNiw1LjkyIDE2LDQuMDNMMTcuNjIsM002LjM4LDNMOCw0LjA0QzYuNzQsNS45MiA2LDguODcgNiwxMkM2LDE1LjEzIDYuNzQsMTguMDggOCwxOS45Nkw2LjM4LDIxQzQuODcsMTguNzMgNCwxNS40NSA0LDEyQzQsOC41NSA0Ljg3LDUuMjcgNi4zOCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVQYXJlbnRoZXNlc0JveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMCAxNy4zTDguNCAxOEM2LjkgMTYuNSA2IDE0LjMgNiAxMlM2LjkgNy41IDguNCA2TDEwIDYuN0M4LjcgNy45IDggOS45IDggMTJTOC43IDE2LjEgMTAgMTcuM00xNS42IDE4TDE0IDE3LjNDMTUuMyAxNiAxNiAxNC4xIDE2IDEyUzE1LjMgNy45IDE0IDYuN0wxNS42IDZDMTcuMSA3LjUgMTggOS43IDE4IDEyQzE4IDE0LjMgMTcuMSAxNi41IDE1LjYgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVN0cmluZyA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU0xMi41LDExSDExLjVBMS41LDEuNSAwIDAsMSAxMCw5LjVBMS41LDEuNSAwIDAsMSAxMS41LDhIMTIuNUExLjUsMS41IDAgMCwxIDE0LDkuNUgxNkEzLjUsMy41IDAgMCwwIDEyLjUsNkgxMS41QTMuNSwzLjUgMCAwLDAgOCw5LjVBMy41LDMuNSAwIDAsMCAxMS41LDEzSDEyLjVBMS41LDEuNSAwIDAsMSAxNCwxNC41QTEuNSwxLjUgMCAwLDEgMTIuNSwxNkgxMS41QTEuNSwxLjUgMCAwLDEgMTAsMTQuNUg4QTMuNSwzLjUgMCAwLDAgMTEuNSwxOEgxMi41QTMuNSwzLjUgMCAwLDAgMTYsMTQuNUEzLjUsMy41IDAgMCwwIDEyLjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVRhZ3MgPSBcIk0xNC42LDE2LjZMMTkuMiwxMkwxNC42LDcuNEwxNiw2TDIyLDEyTDE2LDE4TDE0LjYsMTYuNk05LjQsMTYuNkw0LjgsMTJMOS40LDcuNEw4LDZMMiwxMkw4LDE4TDkuNCwxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVUYWdzQ2hlY2sgPSBcIk02LjU5LDMuNDFMMiw4TDYuNTksMTIuNkw4LDExLjE4TDQuODIsOEw4LDQuODJMNi41OSwzLjQxTTEyLjQxLDMuNDFMMTEsNC44MkwxNC4xOCw4TDExLDExLjE4TDEyLjQxLDEyLjZMMTcsOEwxMi40MSwzLjQxTTIxLjU5LDExLjU5TDEzLjUsMTkuNjhMOS44MywxNkw4LjQyLDE3LjQxTDEzLjUsMjIuNUwyMywxM0wyMS41OSwxMS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlcGVuID0gXCJNOC4yMSAxMkw2Ljg4IDEyLjg5VjExLjExTDguMjEgMTJNMTEuNDcgOS44MlY3LjM0TDcuMzEgMTAuMTJMOS4xNiAxMS4zNkwxMS40NyA5LjgyTTE2LjcgMTAuMTJMMTIuNTMgNy4zNFY5LjgyTDE0Ljg0IDExLjM2TDE2LjcgMTAuMTJNNy4zMSAxMy44OEwxMS40NyAxNi42NlYxNC4xOEw5LjE2IDEyLjY0TDcuMzEgMTMuODhNMTIuNTMgMTQuMThWMTYuNjZMMTYuNyAxMy44OEwxNC44NCAxMi42NEwxMi41MyAxNC4xOE0xMiAxMC43NEwxMC4xMiAxMkwxMiAxMy4yNkwxMy44OCAxMkwxMiAxMC43NE0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMk0xOC4xOCAxMC4xMkMxOC4xOCAxMC4wOSAxOC4xOCAxMC4wNyAxOC4xOCAxMC4wNUwxOC4xNyAxMEwxOC4xNyAxMEwxOC4xNiA5Ljk1QzE4LjE1IDkuOTQgMTguMTUgOS45MyAxOC4xNCA5LjkxTDE4LjEzIDkuODlMMTguMTEgOS44NUwxOC4xIDkuODNMMTguMDggOS44TDE4LjA2IDkuNzdMMTguMDMgOS43NEwxOCA5LjcyTDE4IDkuN0wxNy45NiA5LjY4TDE3Ljk1IDkuNjdMMTIuMyA1LjkxQzEyLjEyIDUuNzkgMTEuODkgNS43OSAxMS43MSA1LjkxTDYuMDUgOS42N0w2LjA1IDkuNjhMNiA5LjdDNiA5LjcxIDYgOS43MiA2IDkuNzJMNS45NyA5Ljc0TDUuOTQgOS43N0w1LjkzIDkuOEw1LjkgOS44M0w1Ljg5IDkuODVMNS44NyA5Ljg5TDUuODYgOS45MUw1Ljg0IDkuOTVMNS44NCAxMEw1LjgzIDEwTDUuODIgMTAuMDVDNS44MiAxMC4wNyA1LjgyIDEwLjA5IDUuODIgMTAuMTJWMTMuODhDNS44MiAxMy45MSA1LjgyIDEzLjkzIDUuODIgMTMuOTVMNS44MyAxNEw1Ljg0IDE0TDUuODQgMTQuMDVDNS44NSAxNC4wNiA1Ljg1IDE0LjA3IDUuODYgMTQuMDlMNS44NyAxNC4xMUw1Ljg5IDE0LjE1TDUuOSAxNC4xN0w1LjkyIDE0LjJMNS45NCAxNC4yM0M1Ljk1IDE0LjI0IDUuOTYgMTQuMjUgNS45NyAxNC4yNkw2IDE0LjI4TDYgMTQuM0w2LjA0IDE0LjMyTDYuMDUgMTQuMzNMMTEuNzEgMTguMUMxMS43OSAxOC4xNiAxMS45IDE4LjE4IDEyIDE4LjE4QzEyLjEgMTguMTggMTIuMjEgMTguMTUgMTIuMyAxOC4xTDE3Ljk1IDE0LjMzTDE3Ljk2IDE0LjMyTDE4IDE0LjNMMTggMTQuMjhMMTguMDMgMTQuMjZMMTguMDYgMTQuMjNMMTguMDggMTQuMkwxOC4xIDE0LjE3TDE4LjExIDE0LjE1TDE4LjEzIDE0LjExTDE4LjE0IDE0LjA5TDE4LjE2IDE0LjA1TDE4LjE2IDE0TDE4LjE3IDE0TDE4LjE4IDEzLjk1QzE4LjE4IDEzLjkzIDE4LjE4IDEzLjkxIDE4LjE4IDEzLjg4VjEwLjEyTTE3LjEyIDEyLjg5VjExLjExTDE1Ljc5IDEyTDE3LjEyIDEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZSA9IFwiTTIsMjFIMjBWMTlIMk0yMCw4SDE4VjVIMjBNMjAsM0g0VjEzQTQsNCAwIDAsMCA4LDE3SDE0QTQsNCAwIDAsMCAxOCwxM1YxMEgyMEEyLDIgMCAwLDAgMjIsOFY1QzIyLDMuODkgMjEuMSwzIDIwLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmVlTWFrZXIgPSBcIk0yMSAxVjRIN1YyMUgyMVYyM0gyVjNDMiAxLjg5IDIuODkgMSA0IDFIMjFNMjIgMTNWMTVDMjIgMTYuMTEgMjEuMTEgMTcgMjAgMTdIMThDMTggMjAgMTUgMjAgMTQgMjBTMTAgMjAgMTAgMTdWMTFIMjBDMjEuMTEgMTEgMjIgMTEuOSAyMiAxM00yMCAxM0gxOFYxNUgyMFYxM00xNyA5TDE5IDVIOUwxMSA5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZU9mZiA9IFwiTTMuMjcgMkwyMiAyMC43MkwyMC43MiAyMkwxOS43MyAyMUgyVjE5SDE3LjczTDE1LjQ0IDE2LjcxQzE1IDE2Ljg5IDE0LjUgMTcgMTQgMTdIOEM1Ljc5IDE3IDQgMTUuMjEgNCAxM1Y1LjI3TDIgMy4yN0wzLjI3IDJNMjIgNVY4QzIyIDkuMSAyMS4xIDEwIDIwIDEwSDE4VjEzQzE4IDEzLjM2IDE3Ljk0IDEzLjcgMTcuODUgMTQuMDRMNi44MSAzSDIwQzIxLjEgMyAyMiAzLjg5IDIyIDVNMjAgNUgxOFY4SDIwVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmVlT2ZmT3V0bGluZSA9IFwiTTIgMy4yN0w0IDUuMjdWMTNDNCAxNS4yMSA1Ljc5IDE3IDggMTdIMTRDMTQuNSAxNyAxNSAxNi44OSAxNS40NCAxNi43MUwxNy43MyAxOUgyVjIxSDE5LjczTDIwLjcyIDIyTDIyIDIwLjcyTDMuMjcgMkwyIDMuMjdNOCAxNUM2LjkgMTUgNiAxNC4xIDYgMTNWNy4yN0wxMy43MyAxNUg4TTIwIDNINi44MUw4LjgxIDVIMTZWMTIuMTlMMTcuODUgMTQuMDRDMTcuOTQgMTMuNyAxOCAxMy4zNiAxOCAxM1YxMEgyMEMyMS4xIDEwIDIyIDkuMSAyMiA4VjVDMjIgMy45IDIxLjEgMyAyMCAzTTIwIDhIMThWNUgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZU91dGxpbmUgPSBcIk0yLDIxVjE5SDIwVjIxSDJNMjAsOFY1SDE4VjhIMjBNMjAsM0EyLDIgMCAwLDEgMjIsNVY4QTIsMiAwIDAsMSAyMCwxMEgxOFYxM0E0LDQgMCAwLDEgMTQsMTdIOEE0LDQgMCAwLDEgNCwxM1YzSDIwTTE2LDVINlYxM0EyLDIgMCAwLDAgOCwxNUgxNEEyLDIgMCAwLDAgMTYsMTNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2ZmZWVUb0dvID0gXCJNMywxOVYxN0gxN0wxNS4yNiwxNS4yNEwxNi42NywxMy44M0wyMC44NCwxOEwxNi42NywyMi4xN0wxNS4yNiwyMC43NkwxNywxOUgzTTE3LDhWNUgxNVY4SDE3TTE3LDNDMTguMTEsMyAxOSwzLjkgMTksNVY4QzE5LDkuMTEgMTguMTEsMTAgMTcsMTBIMTVWMTFBNCw0IDAgMCwxIDExLDE1SDdBNCw0IDAgMCwxIDMsMTFWM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2ZmZWVUb0dvT3V0bGluZSA9IFwiTTMgM1YxMUE0IDQgMCAwIDAgNyAxNUgxMUE0IDQgMCAwIDAgMTUgMTFWMTBIMTdDMTguMTEgMTAgMTkgOS4xMSAxOSA4VjVDMTkgMy45IDE4LjExIDMgMTcgM0gzTTUgNUgxM1YxMUEyIDIgMCAwIDEgMTEgMTNIN0EyIDIgMCAwIDEgNSAxMVY1TTE1IDVIMTdWOEgxNVY1TTE2LjY3IDEzLjgzTDE1LjI2IDE1LjI0TDE3IDE3SDNWMTlIMTdMMTUuMjYgMjAuNzZMMTYuNjcgMjIuMTdMMjAuODQgMThMMTYuNjcgMTMuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmluID0gXCJNOCwyMkw1LDhMOCwySDE2TDE5LDhMMTYsMjJIOE0xMSw2VjhIOVYxMEgxMVYxNUgxM1YxMEgxNVY4SDEzVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29nID0gXCJNMTIsMTUuNUEzLjUsMy41IDAgMCwxIDguNSwxMkEzLjUsMy41IDAgMCwxIDEyLDguNUEzLjUsMy41IDAgMCwxIDE1LjUsMTJBMy41LDMuNSAwIDAsMSAxMiwxNS41TTE5LjQzLDEyLjk3QzE5LjQ3LDEyLjY1IDE5LjUsMTIuMzMgMTkuNSwxMkMxOS41LDExLjY3IDE5LjQ3LDExLjM0IDE5LjQzLDExTDIxLjU0LDkuMzdDMjEuNzMsOS4yMiAyMS43OCw4Ljk1IDIxLjY2LDguNzNMMTkuNjYsNS4yN0MxOS41NCw1LjA1IDE5LjI3LDQuOTYgMTkuMDUsNS4wNUwxNi41Niw2LjA1QzE2LjA0LDUuNjYgMTUuNSw1LjMyIDE0Ljg3LDUuMDdMMTQuNSwyLjQyQzE0LjQ2LDIuMTggMTQuMjUsMiAxNCwySDEwQzkuNzUsMiA5LjU0LDIuMTggOS41LDIuNDJMOS4xMyw1LjA3QzguNSw1LjMyIDcuOTYsNS42NiA3LjQ0LDYuMDVMNC45NSw1LjA1QzQuNzMsNC45NiA0LjQ2LDUuMDUgNC4zNCw1LjI3TDIuMzQsOC43M0MyLjIxLDguOTUgMi4yNyw5LjIyIDIuNDYsOS4zN0w0LjU3LDExQzQuNTMsMTEuMzQgNC41LDExLjY3IDQuNSwxMkM0LjUsMTIuMzMgNC41MywxMi42NSA0LjU3LDEyLjk3TDIuNDYsMTQuNjNDMi4yNywxNC43OCAyLjIxLDE1LjA1IDIuMzQsMTUuMjdMNC4zNCwxOC43M0M0LjQ2LDE4Ljk1IDQuNzMsMTkuMDMgNC45NSwxOC45NUw3LjQ0LDE3Ljk0QzcuOTYsMTguMzQgOC41LDE4LjY4IDkuMTMsMTguOTNMOS41LDIxLjU4QzkuNTQsMjEuODIgOS43NSwyMiAxMCwyMkgxNEMxNC4yNSwyMiAxNC40NiwyMS44MiAxNC41LDIxLjU4TDE0Ljg3LDE4LjkzQzE1LjUsMTguNjcgMTYuMDQsMTguMzQgMTYuNTYsMTcuOTRMMTkuMDUsMTguOTVDMTkuMjcsMTkuMDMgMTkuNTQsMTguOTUgMTkuNjYsMTguNzNMMjEuNjYsMTUuMjdDMjEuNzgsMTUuMDUgMjEuNzMsMTQuNzggMjEuNTQsMTQuNjNMMTkuNDMsMTIuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29nQm94ID0gXCJNMTcuMjUsMTJDMTcuMjUsMTIuMjMgMTcuMjMsMTIuNDYgMTcuMiwxMi42OEwxOC42OCwxMy44NEMxOC44MSwxMy45NSAxOC44NSwxNC4xMyAxOC43NiwxNC4yOUwxNy4zNiwxNi43MUMxNy4yNywxNi44NiAxNy4wOSwxNi45MiAxNi45MywxNi44NkwxNS4xOSwxNi4xNkMxNC44MywxNi40NCAxNC40MywxNi42NyAxNCwxNi44NUwxMy43NSwxOC43QzEzLjcyLDE4Ljg3IDEzLjU3LDE5IDEzLjQsMTlIMTAuNkMxMC40MywxOSAxMC4yOCwxOC44NyAxMC4yNSwxOC43TDEwLDE2Ljg1QzkuNTYsMTYuNjcgOS4xNywxNi40NCA4LjgxLDE2LjE2TDcuMDcsMTYuODZDNi45MSwxNi45MiA2LjczLDE2Ljg2IDYuNjQsMTYuNzFMNS4yNCwxNC4yOUM1LjE1LDE0LjEzIDUuMTksMTMuOTUgNS4zMiwxMy44NEw2LjgsMTIuNjhDNi43NywxMi40NiA2Ljc1LDEyLjIzIDYuNzUsMTJDNi43NSwxMS43NyA2Ljc3LDExLjU0IDYuOCwxMS4zMkw1LjMyLDEwLjE2QzUuMTksMTAuMDUgNS4xNSw5Ljg2IDUuMjQsOS43MUw2LjY0LDcuMjlDNi43Myw3LjEzIDYuOTEsNy4wNyA3LjA3LDcuMTNMOC44MSw3Ljg0QzkuMTcsNy41NiA5LjU2LDcuMzIgMTAsNy4xNUwxMC4yNSw1LjI5QzEwLjI4LDUuMTMgMTAuNDMsNSAxMC42LDVIMTMuNEMxMy41Nyw1IDEzLjcyLDUuMTMgMTMuNzUsNS4yOUwxNCw3LjE1QzE0LjQzLDcuMzIgMTQuODMsNy41NiAxNS4xOSw3Ljg0TDE2LjkzLDcuMTNDMTcuMDksNy4wNyAxNy4yNyw3LjEzIDE3LjM2LDcuMjlMMTguNzYsOS43MUMxOC44NSw5Ljg2IDE4LjgxLDEwLjA1IDE4LjY4LDEwLjE2TDE3LjIsMTEuMzJDMTcuMjMsMTEuNTQgMTcuMjUsMTEuNzcgMTcuMjUsMTJNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTIsMTBDMTAuODksMTAgMTAsMTAuODkgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkMxNCwxMC44OSAxMy4xLDEwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ0Nsb2Nrd2lzZSA9IFwiTTEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTQgMjEgMTUuOTIgMjAuMzQgMTcuNSAxOS4xNEwxNi4wNiAxNy43QzE0Ljg3IDE4LjU0IDEzLjQ1IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyUzguMTMgNSAxMiA1IDE5IDguMTMgMTkgMTJIMTZMMjAgMTZMMjQgMTJIMjFDMjEgNy4wMyAxNi45NyAzIDEyIDNNNy43MSAxMy4xNkM3LjYyIDEzLjIzIDcuNTkgMTMuMzUgNy42NCAxMy40NUw4LjU0IDE1QzguNiAxNS4xMiA4LjcyIDE1LjEyIDguODIgMTUuMTJMOS45NSAxNC42N0MxMC4xOSAxNC44MyAxMC40NCAxNC45NyAxMC43IDE1LjA5TDEwLjg4IDE2LjI4QzEwLjkgMTYuMzkgMTEgMTYuNDcgMTEuMSAxNi40N0gxMi45QzEzIDE2LjUgMTMuMTEgMTYuNDEgMTMuMTMgMTYuM0wxMy4zMSAxNS4xMkMxMy41OCAxNSAxMy44NCAxNC44NSAxNC4wNyAxNC42N0wxNS4xOSAxNS4xMkMxNS4zIDE1LjE2IDE1LjQyIDE1LjExIDE1LjQ3IDE1TDE2LjM3IDEzLjVDMTYuNDIgMTMuMzggMTYuMzkgMTMuMjYgMTYuMzEgMTMuMTlMMTUuMzEgMTIuNDVDMTUuMzQgMTIuMTUgMTUuMzQgMTEuODUgMTUuMzEgMTEuNTVMMTYuMzEgMTAuNzlDMTYuNCAxMC43MiAxNi40MiAxMC42MSAxNi4zNyAxMC41TDE1LjQ3IDguOTVDMTUuNDEgOC44NSAxNS4zIDguODEgMTUuMTkgOC44NUwxNC4wNyA5LjNDMTMuODMgOS4xMyAxMy41NyA5IDEzLjMgOC44OEwxMy4xMyA3LjY5QzEzLjExIDcuNTggMTMgNy41IDEyLjkgNy41SDExLjE0QzExLjA0IDcuNSAxMC45NSA3LjU3IDEwLjkzIDcuNjdMMTAuNzYgOC44NUMxMC41IDguOTcgMTAuMjMgOS4xMiAxMCA5LjNMOC44NSA4Ljg4QzguNzQgOC44NCA4LjYxIDguODkgOC41NiA5TDcuNjUgMTAuNUM3LjYgMTAuNjIgNy42MyAxMC43NCA3LjcxIDEwLjgxTDguNzEgMTEuNTVDOC42OSAxMS43IDguNjkgMTEuODUgOC43MSAxMkM4LjcgMTIuMTUgOC43IDEyLjMgOC43MSAxMi40NUw3LjcxIDEzLjE5TTEyIDEzLjVIMTJDMTEuMTYgMTMuNSAxMC41IDEyLjgyIDEwLjUgMTJDMTAuNSAxMS4xNyAxMS4xNyAxMC41IDEyIDEwLjVTMTMuNSAxMS4xNyAxMy41IDEyIDEyLjgzIDEzLjUgMTIgMTMuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ0NvdW50ZXJjbG9ja3dpc2UgPSBcIk0xMiAzQzcuMDMgMyAzIDcuMDMgMyAxMkgwTDQgMTZMOCAxMkg1QzUgOC4xMyA4LjEzIDUgMTIgNVMxOSA4LjEzIDE5IDEyIDE1Ljg3IDE5IDEyIDE5QzEwLjU1IDE5IDkuMTMgMTguNTQgNy45NCAxNy43TDYuNSAxOS4xNEM4LjA4IDIwLjM0IDEwIDIxIDEyIDIxQzE2Ljk3IDIxIDIxIDE2Ljk3IDIxIDEyUzE2Ljk3IDMgMTIgM00xNi4yOSAxMy4xOUwxNS4yOSAxMi40NUMxNS4zIDEyLjMgMTUuMyAxMi4xNSAxNS4yOSAxMkMxNS4zMSAxMS44NSAxNS4zMSAxMS43IDE1LjI5IDExLjU1TDE2LjI5IDEwLjgxQzE2LjM3IDEwLjc0IDE2LjQgMTAuNjIgMTYuMzUgMTAuNUwxNS40NCA5QzE1LjM5IDguODkgMTUuMjYgOC44NCAxNS4xNSA4Ljg4TDE0IDkuM0MxMy43NyA5LjEyIDEzLjUgOC45NyAxMy4yNCA4Ljg1TDEzLjA3IDcuNjdDMTMuMDUgNy41NyAxMi45NiA3LjUgMTIuODYgNy41SDExLjFDMTEgNy41IDEwLjg5IDcuNTggMTAuODcgNy42OUwxMC43IDguODhDMTAuNDMgOSAxMC4xNyA5LjEzIDkuOTMgOS4zTDguODEgOC44NUM4LjcxIDguODEgOC41OSA4Ljg1IDguNTMgOC45NUw3LjYzIDEwLjVDNy41OCAxMC42MSA3LjYgMTAuNzIgNy42OSAxMC43OUw4LjY5IDExLjU1QzguNjYgMTEuODUgOC42NiAxMi4xNSA4LjY5IDEyLjQ1TDcuNjkgMTMuMTlDNy42MSAxMy4yNiA3LjU4IDEzLjM4IDcuNjMgMTMuNUw4LjUzIDE1QzguNTggMTUuMTEgOC43IDE1LjE2IDguODEgMTUuMTJMOS45MyAxNC42N0MxMC4xNiAxNC44NSAxMC40MiAxNSAxMC42OSAxNS4xMkwxMC44NyAxNi4zQzEwLjg5IDE2LjQxIDExIDE2LjUgMTEuMSAxNi40N0gxMi45QzEzIDE2LjQ3IDEzLjExIDE2LjM5IDEzLjEyIDE2LjI4TDEzLjMgMTUuMDlDMTMuNTYgMTQuOTcgMTMuODEgMTQuODMgMTQuMDUgMTQuNjdMMTUuMTggMTUuMTJDMTUuMjggMTUuMTIgMTUuNCAxNS4xMiAxNS40NiAxNUwxNi4zNiAxMy40NUMxNi40MSAxMy4zNSAxNi4zOCAxMy4yMyAxNi4yOSAxMy4xNk0xMiAxMy41QzExLjE3IDEzLjUgMTAuNSAxMi44MyAxMC41IDEyUzExLjE3IDEwLjUgMTIgMTAuNSAxMy41IDExLjE3IDEzLjUgMTJDMTMuNSAxMi44MiAxMi44NCAxMy41IDEyIDEzLjVIMTJcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPZmYgPSBcIk0yMi4xMiAyMS40NkwyLjQgMS43M0wxLjEyIDNMNCA1Ljg3TDIuMzQgOC43M0MyLjIxIDguOTUgMi4yNyA5LjIyIDIuNDYgOS4zN0w0LjU3IDExQzQuNTMgMTEuMzQgNC41IDExLjY3IDQuNSAxMlM0LjUzIDEyLjY1IDQuNTcgMTIuOTdMMi40NiAxNC42M0MyLjI3IDE0Ljc4IDIuMjEgMTUuMDUgMi4zNCAxNS4yN0w0LjM0IDE4LjczQzQuNDYgMTguOTUgNC43MyAxOS4wMyA0Ljk1IDE4Ljk1TDcuNDQgMTcuOTRDNy45NiAxOC4zNCA4LjUgMTguNjggOS4xMyAxOC45M0w5LjUgMjEuNThDOS41NCAyMS44MiA5Ljc1IDIyIDEwIDIySDE0QzE0LjI1IDIyIDE0LjQ2IDIxLjgyIDE0LjUgMjEuNThMMTQuODcgMTguOTNDMTUuMzggMTguNzIgMTUuODMgMTguNDUgMTYuMjYgMTguMTRMMjAuODUgMjIuNzNMMjIuMTIgMjEuNDZNMTIgMTUuNUMxMC4wNyAxNS41IDguNSAxMy45MyA4LjUgMTJDOC41IDExLjUgOC42MiAxMS4wOCA4Ljc5IDEwLjY3TDEzLjMzIDE1LjIxQzEyLjkyIDE1LjM5IDEyLjUgMTUuNSAxMiAxNS41TTExLjc0IDguNTNMOC41NiA1LjM1QzguNzUgNS4yNSA4LjkzIDUuMTUgOS4xMyA1LjA3TDkuNSAyLjQyQzkuNTQgMi4xOCA5Ljc1IDIgMTAgMkgxNEMxNC4yNSAyIDE0LjQ2IDIuMTggMTQuNSAyLjQyTDE0Ljg3IDUuMDdDMTUuNSA1LjMyIDE2LjA0IDUuNjYgMTYuNTYgNi4wNUwxOS4wNSA1LjA1QzE5LjI3IDQuOTYgMTkuNTQgNS4wNSAxOS42NiA1LjI3TDIxLjY2IDguNzNDMjEuNzggOC45NSAyMS43MyA5LjIyIDIxLjU0IDkuMzdMMTkuNDMgMTFDMTkuNDcgMTEuMzQgMTkuNSAxMS42NyAxOS41IDEyUzE5LjQ3IDEyLjY1IDE5LjQzIDEyLjk3TDIxLjU0IDE0LjYzQzIxLjczIDE0Ljc4IDIxLjc4IDE1LjA1IDIxLjY2IDE1LjI3TDIwLjUgMTcuMjlMMTUuNDcgMTIuMjZDMTUuNSAxMi4xOCAxNS41IDEyLjA5IDE1LjUgMTJDMTUuNSAxMC4wNyAxMy45MyA4LjUgMTIgOC41QzExLjkxIDguNSAxMS44MyA4LjUgMTEuNzQgOC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0IDUuODhMMi4zNCA4LjczQzIuMjEgOC45NSAyLjI3IDkuMjIgMi40NiA5LjM3TDQuNTcgMTFMNC41IDEyTDQuNTcgMTIuOTdMMi40NiAxNC42M0MyLjI3IDE0Ljc4IDIuMjEgMTUuMDUgMi4zNCAxNS4yN0w0LjM0IDE4LjczQzQuNDYgMTguOTUgNC43MyAxOS4wMyA0Ljk1IDE4Ljk1TDcuNDQgMTcuOTRDNy45NiAxOC4zNCA4LjUgMTguNjggOS4xMyAxOC45M0w5LjUgMjEuNThDOS41NCAyMS44MiA5Ljc1IDIyIDEwIDIySDE0QzE0LjI1IDIyIDE0LjQ2IDIxLjgyIDE0LjUgMjEuNThMMTQuODcgMTguOTNDMTUuMzggMTguNzMgMTUuODMgMTguNDUgMTYuMjYgMTguMTVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTAgMTEuOUwxMi4xIDE0QzEyLjA2IDE0IDEyLjAzIDE0IDEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJDMTAgMTEuOTcgMTAgMTEuOTQgMTAgMTEuOU0xMy4xMyAxNy4zOUwxMi43NiAyMEgxMS4yNEwxMC44NyAxNy4zOEM5LjY4IDE3LjE0IDguNjMgMTYuNSA3Ljg2IDE1LjYyTDUuNDMgMTYuNjZMNC42OCAxNS4zNkw2LjggMTMuOEM2LjQgMTIuNjQgNi40IDExLjM3IDYuOCAxMC4yTDQuNjkgOC42NUw1LjQ0IDcuMzVMNS41IDcuMzdMOC40IDEwLjI5QzguMTUgMTAuOCA4IDExLjM4IDggMTJDOCAxNC4yMSA5Ljc5IDE2IDEyIDE2QzEyLjYyIDE2IDEzLjIgMTUuODYgMTMuNzEgMTUuNkwxNC44MyAxNi43MkMxNC4zMSAxNy4wMyAxMy43NCAxNy4yNiAxMy4xMyAxNy4zOU0xMC4wNiA2Ljg2TDguNTUgNS4zNUM4Ljc0IDUuMjYgOC45MyA1LjE1IDkuMTMgNS4wN0w5LjUgMi40MkM5LjU0IDIuMTggOS43NSAyIDEwIDJIMTRDMTQuMjUgMiAxNC40NiAyLjE4IDE0LjUgMi40MkwxNC44NyA1LjA3QzE1LjUgNS4zMiAxNi4wNCA1LjY2IDE2LjU2IDYuMDVMMTkuMDUgNS4wNUMxOS4yNyA0Ljk2IDE5LjU0IDUuMDUgMTkuNjYgNS4yN0wyMS42NiA4LjczQzIxLjc5IDguOTUgMjEuNzMgOS4yMiAyMS41NCA5LjM3TDE5LjQzIDExTDE5LjUgMTJMMTkuNDMgMTNMMjEuNTQgMTQuNjNDMjEuNzMgMTQuNzggMjEuNzkgMTUuMDUgMjEuNjYgMTUuMjdMMjAuNSAxNy4yOUwxOS4wNCAxNS44NEwxOS4zMiAxNS4zNkwxNy4yIDEzLjgxQzE3LjYgMTIuNjQgMTcuNiAxMS4zNyAxNy4yIDEwLjJMMTkuMzEgOC42NUwxOC41NiA3LjM1TDE2LjE1IDguMzlDMTUuMzggNy41IDE0LjMyIDYuODYgMTMuMTIgNi42MkwxMi43NSA0SDExLjI1TDEwLjg4IDYuNjFDMTAuNiA2LjY3IDEwLjMyIDYuNzUgMTAuMDYgNi44Nk0xMiA4QzE0LjIxIDggMTYgOS43OSAxNiAxMkMxNiAxMi4yNSAxNS45NyAxMi41IDE1LjkzIDEyLjczTDExLjI3IDguMDdDMTEuNSA4LjAzIDExLjc1IDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPdXRsaW5lID0gXCJNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME0xMCwyMkM5Ljc1LDIyIDkuNTQsMjEuODIgOS41LDIxLjU4TDkuMTMsMTguOTNDOC41LDE4LjY4IDcuOTYsMTguMzQgNy40NCwxNy45NEw0Ljk1LDE4Ljk1QzQuNzMsMTkuMDMgNC40NiwxOC45NSA0LjM0LDE4LjczTDIuMzQsMTUuMjdDMi4yMSwxNS4wNSAyLjI3LDE0Ljc4IDIuNDYsMTQuNjNMNC41NywxMi45N0w0LjUsMTJMNC41NywxMUwyLjQ2LDkuMzdDMi4yNyw5LjIyIDIuMjEsOC45NSAyLjM0LDguNzNMNC4zNCw1LjI3QzQuNDYsNS4wNSA0LjczLDQuOTYgNC45NSw1LjA1TDcuNDQsNi4wNUM3Ljk2LDUuNjYgOC41LDUuMzIgOS4xMyw1LjA3TDkuNSwyLjQyQzkuNTQsMi4xOCA5Ljc1LDIgMTAsMkgxNEMxNC4yNSwyIDE0LjQ2LDIuMTggMTQuNSwyLjQyTDE0Ljg3LDUuMDdDMTUuNSw1LjMyIDE2LjA0LDUuNjYgMTYuNTYsNi4wNUwxOS4wNSw1LjA1QzE5LjI3LDQuOTYgMTkuNTQsNS4wNSAxOS42Niw1LjI3TDIxLjY2LDguNzNDMjEuNzksOC45NSAyMS43Myw5LjIyIDIxLjU0LDkuMzdMMTkuNDMsMTFMMTkuNSwxMkwxOS40MywxM0wyMS41NCwxNC42M0MyMS43MywxNC43OCAyMS43OSwxNS4wNSAyMS42NiwxNS4yN0wxOS42NiwxOC43M0MxOS41NCwxOC45NSAxOS4yNywxOS4wNCAxOS4wNSwxOC45NUwxNi41NiwxNy45NUMxNi4wNCwxOC4zNCAxNS41LDE4LjY4IDE0Ljg3LDE4LjkzTDE0LjUsMjEuNThDMTQuNDYsMjEuODIgMTQuMjUsMjIgMTQsMjJIMTBNMTEuMjUsNEwxMC44OCw2LjYxQzkuNjgsNi44NiA4LjYyLDcuNSA3Ljg1LDguMzlMNS40NCw3LjM1TDQuNjksOC42NUw2LjgsMTAuMkM2LjQsMTEuMzcgNi40LDEyLjY0IDYuOCwxMy44TDQuNjgsMTUuMzZMNS40MywxNi42Nkw3Ljg2LDE1LjYyQzguNjMsMTYuNSA5LjY4LDE3LjE0IDEwLjg3LDE3LjM4TDExLjI0LDIwSDEyLjc2TDEzLjEzLDE3LjM5QzE0LjMyLDE3LjE0IDE1LjM3LDE2LjUgMTYuMTQsMTUuNjJMMTguNTcsMTYuNjZMMTkuMzIsMTUuMzZMMTcuMiwxMy44MUMxNy42LDEyLjY0IDE3LjYsMTEuMzcgMTcuMiwxMC4yTDE5LjMxLDguNjVMMTguNTYsNy4zNUwxNi4xNSw4LjM5QzE1LjM4LDcuNSAxNC4zMiw2Ljg2IDEzLjEyLDYuNjJMMTIuNzUsNEgxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dSZWZyZXNoID0gXCJNMTggMTQuNUMxOS4xIDE0LjUgMjAuMSAxNC45IDIwLjggMTUuN0wyMiAxNC41VjE4LjVIMThMMTkuOCAxNi43QzE5LjMgMTYuMyAxOC43IDE2IDE4IDE2QzE2LjYgMTYgMTUuNSAxNy4xIDE1LjUgMTguNVMxNi42IDIxIDE4IDIxQzE4LjggMjEgMTkuNSAyMC42IDIwIDIwSDIxLjdDMjEuMSAyMS41IDE5LjcgMjIuNSAxOCAyMi41QzE1LjggMjIuNSAxNCAyMC43IDE0IDE4LjVTMTUuOCAxNC41IDE4IDE0LjVNMTEuNSAxOC41QzExLjUgMTcuNCAxMS44IDE2LjQgMTIuMiAxNS41SDEyQzEwLjEgMTUuNSA4LjUgMTMuOSA4LjUgMTJTMTAuMSA4LjUgMTIgOC41IDE1LjUgMTAuMSAxNS41IDEyQzE1LjUgMTIuMiAxNS41IDEyLjQgMTUuNCAxMi41QzE2LjIgMTIuMiAxNyAxMiAxOCAxMkMxOC41IDEyIDE5IDEyLjEgMTkuNSAxMi4yVjEyQzE5LjUgMTEuNyAxOS41IDExLjMgMTkuNCAxMUwyMS41IDkuNEMyMS43IDkuMiAyMS43IDkgMjEuNiA4LjhMMTkuNiA1LjNDMTkuNSA1IDE5LjMgNSAxOSA1TDE2LjUgNkMxNiA1LjYgMTUuNCA1LjMgMTQuOCA1TDE0LjQgMi4zQzE0LjUgMi4yIDE0LjIgMiAxNCAySDEwQzkuOCAyIDkuNSAyLjIgOS41IDIuNEw5LjEgNS4xQzguNSA1LjMgOCA1LjcgNy40IDZMNSA1QzQuNyA1IDQuNSA1IDQuMyA1LjNMMi4zIDguOEMyLjIgOSAyLjMgOS4yIDIuNSA5LjRMNC42IDExQzQuNiAxMS4zIDQuNSAxMS43IDQuNSAxMlM0LjUgMTIuNyA0LjYgMTNMMi41IDE0LjdDMi4zIDE0LjkgMi4zIDE1LjEgMi40IDE1LjNMNC40IDE4LjhDNC41IDE5IDQuNyAxOSA1IDE5TDcuNSAxOEM4IDE4LjQgOC42IDE4LjcgOS4yIDE5TDkuNiAyMS43QzkuNiAyMS45IDkuOCAyMi4xIDEwLjEgMjIuMUgxMi42QzExLjkgMjEgMTEuNSAxOS44IDExLjUgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMSAxNC41IDIwLjEgMTQuOSAyMC44IDE1LjdMMjIgMTQuNVYxOC41SDE4TDE5LjggMTYuN0MxOS4zIDE2LjMgMTguNyAxNiAxOCAxNkMxNi42IDE2IDE1LjUgMTcuMSAxNS41IDE4LjVTMTYuNiAyMSAxOCAyMUMxOC44IDIxIDE5LjUgMjAuNiAyMCAyMEgyMS43QzIxLjEgMjEuNSAxOS43IDIyLjUgMTggMjIuNUMxNS44IDIyLjUgMTQgMjAuNyAxNCAxOC41UzE1LjggMTQuNSAxOCAxNC41TTExLjcgMjBIMTEuM0wxMC45IDE3LjRDOS43IDE3LjIgOC43IDE2LjUgNy45IDE1LjZMNS41IDE2LjZMNC43IDE1LjNMNi44IDEzLjdDNi40IDEyLjUgNi40IDExLjMgNi44IDEwLjFMNC43IDguN0w1LjUgNy40TDcuOSA4LjRDOC43IDcuNSA5LjcgNi45IDEwLjkgNi42TDExLjIgNEgxMi43TDEzLjEgNi42QzE0LjMgNi44IDE1LjQgNy41IDE2LjEgOC40TDE4LjUgNy40TDE5LjMgOC43TDE3LjIgMTAuMkMxNy40IDEwLjggMTcuNSAxMS40IDE3LjUgMTJIMThDMTguNSAxMiAxOSAxMi4xIDE5LjUgMTIuMlYxMkwxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFMNC41IDEyTDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTIuMSAyMS40IDExLjkgMjAuNyAxMS43IDIwTTE2IDEyLjNWMTJDMTYgOS44IDE0LjIgOCAxMiA4UzggOS44IDggMTJDOCAxNC4yIDkuOCAxNiAxMiAxNkMxMi43IDE0LjMgMTQuMiAxMi45IDE2IDEyLjNNMTAgMTJDMTAgMTAuOSAxMC45IDEwIDEyIDEwUzE0IDEwLjkgMTQgMTIgMTMuMSAxNCAxMiAxNCAxMCAxMy4xIDEwIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ1N5bmMgPSBcIk0xMS41IDE4LjVDMTEuNSAxNy40IDExLjggMTYuNCAxMi4yIDE1LjVIMTJDMTAuMSAxNS41IDguNSAxMy45IDguNSAxMlMxMC4xIDguNSAxMiA4LjUgMTUuNSAxMC4xIDE1LjUgMTJDMTUuNSAxMi4yIDE1LjUgMTIuNCAxNS40IDEyLjVDMTYuMiAxMi4yIDE3IDEyIDE4IDEyQzE4LjUgMTIgMTkgMTIuMSAxOS41IDEyLjJWMTJDMTkuNSAxMS43IDE5LjUgMTEuMyAxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFDNC42IDExLjMgNC41IDExLjcgNC41IDEyUzQuNSAxMi43IDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTEuOSAyMSAxMS41IDE5LjggMTEuNSAxOC41TTE4IDE0LjVWMTNMMTUuOCAxNS4yTDE4IDE3LjRWMTZDMTkuNCAxNiAyMC41IDE3LjEgMjAuNSAxOC41QzIwLjUgMTguOSAyMC40IDE5LjMgMjAuMiAxOS42TDIxLjMgMjAuN0MyMi41IDE4LjkgMjIgMTYuNCAyMC4yIDE1LjJDMTkuNiAxNC43IDE4LjggMTQuNSAxOCAxNC41TTE4IDIxQzE2LjYgMjEgMTUuNSAxOS45IDE1LjUgMTguNUMxNS41IDE4LjEgMTUuNiAxNy43IDE1LjggMTcuNEwxNC43IDE2LjNDMTMuNSAxOC4xIDE0IDIwLjYgMTUuOCAyMS44QzE2LjUgMjIuMiAxNy4yIDIyLjUgMTggMjIuNVYyNEwyMC4yIDIxLjhMMTggMTkuNVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dTeW5jT3V0bGluZSA9IFwiTTExLjcgMjBIMTEuM0wxMC45IDE3LjRDOS43IDE3LjIgOC43IDE2LjUgNy45IDE1LjZMNS41IDE2LjZMNC43IDE1LjNMNi44IDEzLjdDNi40IDEyLjUgNi40IDExLjMgNi44IDEwLjFMNC43IDguN0w1LjUgNy40TDcuOSA4LjRDOC43IDcuNSA5LjcgNi45IDEwLjkgNi42TDExLjIgNEgxMi43TDEzLjEgNi42QzE0LjMgNi44IDE1LjQgNy41IDE2LjEgOC40TDE4LjUgNy40TDE5LjMgOC43TDE3LjIgMTAuMkMxNy40IDEwLjggMTcuNSAxMS40IDE3LjUgMTJIMThDMTguNSAxMiAxOSAxMi4xIDE5LjUgMTIuMlYxMkwxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFMNC41IDEyTDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTIuMSAyMS40IDExLjkgMjAuNyAxMS43IDIwTTE2IDEyLjNWMTJDMTYgOS44IDE0LjIgOCAxMiA4UzggOS44IDggMTJDOCAxNC4yIDkuOCAxNiAxMiAxNkMxMi43IDE0LjMgMTQuMiAxMi45IDE2IDEyLjNNMTAgMTJDMTAgMTAuOSAxMC45IDEwIDEyIDEwUzE0IDEwLjkgMTQgMTIgMTMuMSAxNCAxMiAxNCAxMCAxMy4xIDEwIDEyTTE4IDE0LjVWMTNMMTUuOCAxNS4yTDE4IDE3LjRWMTZDMTkuNCAxNiAyMC41IDE3LjEgMjAuNSAxOC41QzIwLjUgMTguOSAyMC40IDE5LjMgMjAuMiAxOS42TDIxLjMgMjAuN0MyMi41IDE4LjkgMjIgMTYuNCAyMC4yIDE1LjJDMTkuNiAxNC43IDE4LjggMTQuNSAxOCAxNC41TTE4IDIxQzE2LjYgMjEgMTUuNSAxOS45IDE1LjUgMTguNUMxNS41IDE4LjEgMTUuNiAxNy43IDE1LjggMTcuNEwxNC43IDE2LjNDMTMuNSAxOC4xIDE0IDIwLjYgMTUuOCAyMS44QzE2LjUgMjIuMiAxNy4yIDIyLjUgMTggMjIuNVYyNEwyMC4yIDIxLjhMMTggMTkuNVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dUcmFuc2ZlciA9IFwiTTE0IDE4VjE2TDEwIDE5LjVMMTQgMjNWMjFIMTdWMThIMTRNMjIgMTUuNUwxOCAxMlYxNEgxNVYxN0gxOFYxOUwyMiAxNS41TTIxLjY2IDguNzNMMTkuNjYgNS4yN0MxOS41NCA1LjA1IDE5LjI4IDQuOTYgMTkuMDUgNS4wNUwxNi41NiA2LjA1QzE2LjA1IDUuNjQgMTUuNSA1LjMxIDE0Ljg3IDUuMDVMMTQuNSAyLjQyQzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAySDEwQzkuNzUgMiA5LjU0IDIuMTggOS41IDIuNDJMOS4xMyA1LjA3QzguNSA1LjMzIDcuOTYgNS42NiA3LjQ0IDYuMDdMNSA1LjA1QzQuNzcgNC45NiA0LjUgNS4wNSA0LjM5IDUuMjdMMi4zOSA4LjczQzIuMjYgOC45NCAyLjMxIDkuMjIgMi41IDkuMzdMNC41NyAxMUM0LjUzIDExLjMzIDQuNSAxMS42NyA0LjUgMTJDNC41IDEyLjMzIDQuNTMgMTIuNjcgNC41NyAxM0wyLjQ2IDE0LjYzQzIuMjYgMTQuNzggMi4yMSAxNS4wNiAyLjM0IDE1LjI3TDQuMzQgMTguNzNDNC40NSAxOSA0Ljc0IDE5LjExIDUgMTlMNSAxOUw3LjUgMThDNy43NCAxOC4xOSA4IDE4LjM3IDguMjYgMTguNTNMMTEuNzcgMTUuNTNDOS44NCAxNS40IDguMzggMTMuNzMgOC41IDExLjhDOC42NSA5Ljg3IDEwLjMyIDguNDEgMTIuMjUgOC41NUMxMy42OSA4LjY0IDE0LjkyIDkuNjIgMTUuMzUgMTFIMTkuNDNMMjEuNTQgOS4zN0MyMS43MyA5LjIyIDIxLjc4IDguOTQgMjEuNjYgOC43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dUcmFuc2Zlck91dGxpbmUgPSBcIk0xNSAxN1YxNEgxOFYxMkwyMiAxNS41TDE4IDE5VjE3SDE1TTE3IDE4VjIxSDE0VjIzTDEwIDE5LjVMMTQgMTZWMThIMTdNMTIgOEM5Ljc5IDggOCA5LjggOCAxMkM4IDEzLjkxIDkuMzUgMTUuNTQgMTEuMjEgMTUuOTJMMTYgMTEuODZDMTUuOTMgOS43MSAxNC4xNiA4IDEyIDhNMTIgMTRDMTAuOSAxNCAxMCAxMy4xMSAxMCAxMlMxMC45IDEwIDEyIDEwIDE0IDEwLjkgMTQgMTIgMTMuMTEgMTQgMTIgMTRNMjEuNjYgOC43M0wxOS42NiA1LjI3QzE5LjU0IDUuMDUgMTkuMjggNC45NiAxOS4wNSA1LjA1TDE2LjU2IDYuMDVDMTYuMDUgNS42NCAxNS41IDUuMzEgMTQuODcgNS4wNUwxNC41IDIuNDJDMTQuNDYgMi4xOCAxNC4yNSAyIDE0IDJIMTBDOS43NSAyIDkuNTQgMi4xOCA5LjUgMi40Mkw5LjEzIDUuMDdDOC41IDUuMzMgNy45NiA1LjY2IDcuNDQgNi4wN0w1IDUuMDVDNC43NyA0Ljk2IDQuNSA1LjA1IDQuMzkgNS4yN0wyLjM5IDguNzNDMi4yNiA4Ljk0IDIuMzEgOS4yMiAyLjUgOS4zN0w0LjU3IDExTDQuNSAxMkw0LjU3IDEzTDIuNDYgMTQuNjNDMi4yNiAxNC43OCAyLjIxIDE1LjA2IDIuMzQgMTUuMjdMNC4zNCAxOC43M0M0LjQ1IDE5IDQuNzQgMTkuMTEgNSAxOUw1IDE5TDcuNSAxOEM3Ljc0IDE4LjE5IDggMTguMzcgOC4yNiAxOC41M0w5LjkxIDE3LjEzQzkuMTQgMTYuOCA4LjQ2IDE2LjMxIDcuOTEgMTUuNjhMNS41IDE2LjY4TDQuNzMgMTUuMzhMNi44IDEzLjhDNi40IDEyLjYzIDYuNCAxMS4zNyA2LjggMTAuMkw0LjY5IDguNjVMNS40NCA3LjM1TDcuODUgOC4zNUM4LjYzIDcuNDUgOS42OCA2LjgyIDEwLjg1IDYuNTdMMTEuMjUgNEgxMi43NUwxMy4xMiA2LjYyQzE0LjI5IDYuODYgMTUuMzQgNy41IDE2LjEyIDguMzlMMTguNTMgNy4zOUwxOS4yOCA4LjY5TDE3LjIgMTAuMkMxNy4yOSAxMC40NiAxNy4zNiAxMC43MyAxNy40IDExSDE5LjRMMjEuNSA5LjM3QzIxLjcyIDkuMjMgMjEuNzggOC45NSAyMS42NiA4LjczTTEyIDhDOS43OSA4IDggOS44IDggMTJDOCAxMy45MSA5LjM1IDE1LjU0IDExLjIxIDE1LjkyTDE2IDExLjg2QzE1LjkzIDkuNzEgMTQuMTYgOCAxMiA4TTEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJTMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyIDEzLjExIDE0IDEyIDE0TTEyIDhDOS43OSA4IDggOS44IDggMTJDOCAxMy45MSA5LjM1IDE1LjU0IDExLjIxIDE1LjkyTDE2IDExLjg2QzE1LjkzIDkuNzEgMTQuMTYgOCAxMiA4TTEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJTMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyIDEzLjExIDE0IDEyIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ3MgPSBcIk0xNS45LDE4LjQ1QzE3LjI1LDE4LjQ1IDE4LjM1LDE3LjM1IDE4LjM1LDE2QzE4LjM1LDE0LjY1IDE3LjI1LDEzLjU1IDE1LjksMTMuNTVDMTQuNTQsMTMuNTUgMTMuNDUsMTQuNjUgMTMuNDUsMTZDMTMuNDUsMTcuMzUgMTQuNTQsMTguNDUgMTUuOSwxOC40NU0yMS4xLDE2LjY4TDIyLjU4LDE3Ljg0QzIyLjcxLDE3Ljk1IDIyLjc1LDE4LjEzIDIyLjY2LDE4LjI5TDIxLjI2LDIwLjcxQzIxLjE3LDIwLjg2IDIxLDIwLjkyIDIwLjgzLDIwLjg2TDE5LjA5LDIwLjE2QzE4LjczLDIwLjQ0IDE4LjMzLDIwLjY3IDE3LjkxLDIwLjg1TDE3LjY0LDIyLjdDMTcuNjIsMjIuODcgMTcuNDcsMjMgMTcuMywyM0gxNC41QzE0LjMyLDIzIDE0LjE4LDIyLjg3IDE0LjE1LDIyLjdMMTMuODksMjAuODVDMTMuNDYsMjAuNjcgMTMuMDcsMjAuNDQgMTIuNzEsMjAuMTZMMTAuOTYsMjAuODZDMTAuODEsMjAuOTIgMTAuNjIsMjAuODYgMTAuNTQsMjAuNzFMOS4xNCwxOC4yOUM5LjA1LDE4LjEzIDkuMDksMTcuOTUgOS4yMiwxNy44NEwxMC43LDE2LjY4TDEwLjY1LDE2TDEwLjcsMTUuMzFMOS4yMiwxNC4xNkM5LjA5LDE0LjA1IDkuMDUsMTMuODYgOS4xNCwxMy43MUwxMC41NCwxMS4yOUMxMC42MiwxMS4xMyAxMC44MSwxMS4wNyAxMC45NiwxMS4xM0wxMi43MSwxMS44NEMxMy4wNywxMS41NiAxMy40NiwxMS4zMiAxMy44OSwxMS4xNUwxNC4xNSw5LjI5QzE0LjE4LDkuMTMgMTQuMzIsOSAxNC41LDlIMTcuM0MxNy40Nyw5IDE3LjYyLDkuMTMgMTcuNjQsOS4yOUwxNy45MSwxMS4xNUMxOC4zMywxMS4zMiAxOC43MywxMS41NiAxOS4wOSwxMS44NEwyMC44MywxMS4xM0MyMSwxMS4wNyAyMS4xNywxMS4xMyAyMS4yNiwxMS4yOUwyMi42NiwxMy43MUMyMi43NSwxMy44NiAyMi43MSwxNC4wNSAyMi41OCwxNC4xNkwyMS4xLDE1LjMxTDIxLjE1LDE2TDIxLjEsMTYuNjhNNi42OSw4LjA3QzcuNTYsOC4wNyA4LjI2LDcuMzcgOC4yNiw2LjVDOC4yNiw1LjYzIDcuNTYsNC45MiA2LjY5LDQuOTJBMS41OCwxLjU4IDAgMCwwIDUuMTEsNi41QzUuMTEsNy4zNyA1LjgyLDguMDcgNi42OSw4LjA3TTEwLjAzLDYuOTRMMTEsNy42OEMxMS4wNyw3Ljc1IDExLjA5LDcuODcgMTEuMDMsNy45N0wxMC4xMyw5LjUzQzEwLjA4LDkuNjMgOS45Niw5LjY3IDkuODYsOS42M0w4Ljc0LDkuMThMOCw5LjYyTDcuODEsMTAuODFDNy43OSwxMC45MiA3LjcsMTEgNy41OSwxMUg1Ljc5QzUuNjcsMTEgNS41OCwxMC45MiA1LjU2LDEwLjgxTDUuNCw5LjYyTDQuNjQsOS4xOEwzLjUsOS42M0MzLjQxLDkuNjcgMy4zLDkuNjMgMy4yNCw5LjUzTDIuMzQsNy45N0MyLjI4LDcuODcgMi4zMSw3Ljc1IDIuMzksNy42OEwzLjM0LDYuOTRMMy4zMSw2LjVMMy4zNCw2LjA2TDIuMzksNS4zMkMyLjMxLDUuMjUgMi4yOCw1LjEzIDIuMzQsNS4wM0wzLjI0LDMuNDdDMy4zLDMuMzcgMy40MSwzLjMzIDMuNSwzLjM3TDQuNjMsMy44Mkw1LjQsMy4zOEw1LjU2LDIuMTlDNS41OCwyLjA4IDUuNjcsMiA1Ljc5LDJINy41OUM3LjcsMiA3Ljc5LDIuMDggNy44MSwyLjE5TDgsMy4zOEw4Ljc0LDMuODJMOS44NiwzLjM3QzkuOTYsMy4zMyAxMC4wOCwzLjM3IDEwLjEzLDMuNDdMMTEuMDMsNS4wM0MxMS4wOSw1LjEzIDExLjA3LDUuMjUgMTEsNS4zMkwxMC4wMyw2LjA2TDEwLjA2LDYuNUwxMC4wMyw2Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbGxhZ2UgPSBcIk01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlDMywyMC4xMSAzLjg5LDIxIDUsMjFIMTFWM00xMywzVjExSDIxVjVDMjEsMy44OSAyMC4xMSwzIDE5LDNNMTMsMTNWMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlDb2xsYXBzZUFsbCA9IFwiTTE0LDRINFYxNEgyVjRBMiwyIDAgMCwxIDQsMkgxNFY0TTE4LDZIOEEyLDIgMCAwLDAgNiw4VjE4SDhWOEgxOFY2TTIyLDEyVjIwQTIsMiAwIDAsMSAyMCwyMkgxMkEyLDIgMCAwLDEgMTAsMjBWMTJBMiwyIDAgMCwxIDEyLDEwSDIwQTIsMiAwIDAsMSAyMiwxMk0yMCwxNUgxMlYxN0gyMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2xsYXBzZUFsbE91dGxpbmUgPSBcIk00LDJBMiwyIDAgMCwwIDIsNFYxNEg0VjRIMTRWMkg0TTgsNkEyLDIgMCAwLDAgNiw4VjE4SDhWOEgxOFY2SDhNMjAsMTJWMjBIMTJWMTJIMjBNMjAsMTBIMTJBMiwyIDAgMCwwIDEwLDEyVjIwQTIsMiAwIDAsMCAxMiwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWMTJBMiwyIDAgMCwwIDIwLDEwTTE5LDE3SDEzVjE1SDE5VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbG9ySGVscGVyID0gXCJNMCwyNEgyNFYyMEgwVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1hID0gXCJNNywzSDE2Ljk1VjEyLjk2TDEyLjk2LDIwLjk0SDhMMTEuOTcsMTIuOTZIN1YzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1hQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xNSwxM1Y3SDlWMTNIMTJMMTAsMTdIMTNMMTUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWFCb3hPdXRsaW5lID0gXCJNMTAsMTdMMTIsMTNIOVY3SDE1VjEzTDEzLDE3SDEwTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tYUNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE1LDEzTDEzLDE3SDEwTDEyLDEzSDlWN0gxNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tYUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTAsMTdIMTNMMTUsMTNWN0g5VjEzSDEyTDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnQgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBY2NvdW50ID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xNiwxNFYxM0MxNiwxMS42NyAxMy4zMywxMSAxMiwxMUMxMC42NywxMSA4LDExLjY3IDgsMTNWMTRIMTZNMTIsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDE0LDhBMiwyIDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFjY291bnRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTYsMTRIOFYxM0M4LDExLjY3IDEwLjY3LDExIDEyLDExQzEzLjMzLDExIDE2LDExLjY3IDE2LDEzVjE0TTEyLDZBMiwyIDAgMCwxIDE0LDhBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxMCw4QTIsMiAwIDAsMSAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBbGVydCA9IFwiTTkgMjJDOC40IDIyIDggMjEuNiA4IDIxVjE4SDRDMi45IDE4IDIgMTcuMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAySDIwQzIxLjEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThIMTMuOUwxMC4yIDIxLjdDMTAgMjEuOSA5LjggMjIgOS41IDIySDlNMTMgMTFWNUgxMVYxMU0xMyAxNVYxM0gxMVYxNUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50QWxlcnRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTMsMTBIMTFWNkgxM1YxME0xMywxNEgxMVYxMkgxM1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50QXJyb3dMZWZ0ID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0xNiAxMUgxMS41TDEzLjMgMTIuOEwxMiAxNEw4IDEwTDEyIDZMMTMuMiA3LjJMMTEuNSA5SDE2VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBcnJvd0xlZnRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkgxMy4xTDEwIDE5LjFWMTZINFY0SDIwVjE2TTE2IDExVjlIMTEuNUwxMy4zIDcuMkwxMiA2TDggMTBMMTIgMTRMMTMuMiAxMi44TDExLjUgMTFIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFycm93UmlnaHQgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjE2QzIgMTcuMSAyLjkgMTggNCAxOEg4VjIxQzggMjEuNiA4LjQgMjIgOSAyMkg5LjVDOS43IDIyIDEwIDIxLjkgMTAuMiAyMS43TDEzLjkgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0TDEwLjggMTIuOEwxMi42IDExSDhWOUgxMi41TDEwLjcgNy4yTDEyIDZMMTYgMTBMMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFycm93UmlnaHRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkgxMy4xTDEwIDE5LjFWMTZINFY0SDIwVjE2TTggOVYxMUgxMi41TDEwLjcgMTIuOEwxMiAxNEwxNiAxMEwxMiA2TDEwLjggNy4yTDEyLjUgOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRCb29rbWFyayA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS42IDguNCAyMiA5IDIySDkuNUM5LjcgMjIgMTAgMjEuOSAxMC4yIDIxLjdMMTMuOSAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTkgMTNMMTYuNSAxMS41TDE0IDEzVjVIMTlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEJvb2ttYXJrT3V0bGluZSA9IFwiTTkgMjJDOC40IDIyIDggMjEuNiA4IDIxVjE4SDRDMi45IDE4IDIgMTcuMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAySDIwQzIxLjEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThIMTMuOUwxMC4yIDIxLjdDMTAgMjEuOSA5LjggMjIgOS41IDIySDlNMTAgMTZWMTkuMUwxMy4xIDE2SDIwVjRINFYxNkgxME0xOCAxNFY2SDEzVjE0TDE1LjUgMTIuNUwxOCAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Q2hlY2sgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5TTEwLDE1TDE4LDdMMTYuNTksNS41OEwxMCwxMi4xN0w3LjQxLDkuNTlMNiwxMUwxMCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Q2hlY2tPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTYuNSw4TDExLDEzLjVMNy41LDEwTDguOTEsOC41OUwxMSwxMC42N0wxNS4wOSw2LjU5TDE2LjUsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50RWRpdCA9IFwiTTIwIDJINEMyLjg5IDIgMiAyLjg5IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS41NSA4LjQ1IDIyIDkgMjJIOS41QzkuNzUgMjIgMTAgMjEuOSAxMC4yIDIxLjcxTDEzLjkgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi44OSAyMS4xIDIgMjAgMk05LjA4IDE1SDdWMTIuOTFMMTMuMTcgNi43MkwxNS4yNCA4LjhMOS4wOCAxNU0xNi44NCA3LjJMMTUuODMgOC4yMUwxMy43NiA2LjE4TDE0Ljc3IDUuMTZDMTQuOTcgNC45NSAxNS4zMSA0Ljk0IDE1LjU1IDUuMTZMMTYuODQgNi40MUMxNy4wNSA2LjYyIDE3LjA2IDYuOTYgMTYuODQgNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRFZGl0T3V0bGluZSA9IFwiTTkgMjJDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjg5IDIuOSAyIDQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlNMTAgMTZWMTkuMDhMMTMuMDggMTZIMjBWNEg0VjE2SDEwTTE1Ljg0IDguMkwxNC44MyA5LjIxTDEyLjc2IDcuMThMMTMuNzcgNi4xNkMxMy45NyA1Ljk1IDE0LjMxIDUuOTQgMTQuNTUgNi4xNkwxNS44NCA3LjQxQzE2LjA1IDcuNjIgMTYuMDYgNy45NiAxNS44NCA4LjJNOCAxMS45MUwxMi4xNyA3LjcyTDE0LjI0IDkuOEwxMC4wOCAxNEg4VjExLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRFeWUgPSBcIk0yMCwxMlYxNkMyMCwxNy4xMSAxOS4xMSwxOCAxOCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuODkgOS43NiwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZDMiw0Ljg5IDIuOSw0IDQsNEg5LjVDOC45NSw0LjY3IDguNSw1LjQyIDguMTQsNi4yNUw3Ljg1LDdMOC4xNCw3Ljc1QzkuNDMsMTAuOTQgMTIuNSwxMyAxNiwxM0MxNy40NCwxMyAxOC44LDEyLjYzIDIwLDEyTTE2LDZDMTYuNTYsNiAxNyw2LjQ0IDE3LDdDMTcsNy41NiAxNi41Niw4IDE2LDhDMTUuNDQsOCAxNSw3LjU2IDE1LDdDMTUsNi40NCAxNS40NCw2IDE2LDZNMTYsM0MxOC43MywzIDIxLjA2LDQuNjYgMjIsN0MyMS4wNiw5LjM0IDE4LjczLDExIDE2LDExQzEzLjI3LDExIDEwLjk0LDkuMzQgMTAsN0MxMC45NCw0LjY2IDEzLjI3LDMgMTYsM00xNiw0LjVBMi41LDIuNSAwIDAsMCAxMy41LDdBMi41LDIuNSAwIDAsMCAxNiw5LjVBMi41LDIuNSAwIDAsMCAxOC41LDdBMi41LDIuNSAwIDAsMCAxNiw0LjVcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50RXllT3V0bGluZSA9IFwiTTE2LDZDMTYuNTYsNiAxNyw2LjQ0IDE3LDdDMTcsNy41NiAxNi41Niw4IDE2LDhDMTUuNDQsOCAxNSw3LjU2IDE1LDdDMTUsNi40NCAxNS40NCw2IDE2LDZNMTYsM0MxOC43MywzIDIxLjA2LDQuNjYgMjIsN0MyMS4wNiw5LjM0IDE4LjczLDExIDE2LDExQzEzLjI3LDExIDEwLjk0LDkuMzQgMTAsN0MxMC45NCw0LjY2IDEzLjI3LDMgMTYsM00xNiw0LjVBMi41LDIuNSAwIDAsMCAxMy41LDdBMi41LDIuNSAwIDAsMCAxNiw5LjVBMi41LDIuNSAwIDAsMCAxOC41LDdBMi41LDIuNSAwIDAsMCAxNiw0LjVNMTgsMTIuNzVWMTZIMTMuMDhMMTAsMTkuMDhWMTZINFY2SDguMjdDOC41OSw1LjI3IDksNC42IDkuNSw0SDRBMiwyIDAgMCwwIDIsNlYxNkMyLDE3LjExIDIuOSwxOCA0LDE4SDhWMjFBMSwxIDAgMCwwIDksMjJIOS41QzkuNzUsMjIgMTAsMjEuOSAxMC4yLDIxLjcxTDEzLjksMThIMThDMTkuMTEsMTggMjAsMTcuMTEgMjAsMTZWMTJDMTkuMzcsMTIuMzMgMTguNywxMi41OCAxOCwxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Rmxhc2ggPSBcIk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNk0xNSAxOEgxMy45TDEwLjIgMjEuN0MxMCAyMS45IDkuOCAyMiA5LjUgMjJIOUM4LjQgMjIgOCAyMS42IDggMjFWMThINEMyLjkgMTggMiAxNy4xIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuOSAyMiA0VjEwSDE1VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRGbGFzaE91dGxpbmUgPSBcIk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNk0xNSAxOEgxMy45TDEwLjIgMjEuN0MxMCAyMS45IDkuOCAyMiA5LjUgMjJIOUM4LjQgMjIgOCAyMS42IDggMjFWMThINEMyLjkgMTggMiAxNy4xIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuOSAyMiA0VjEwSDIwVjRINFYxNkgxMFYxOS4xTDEzLjEgMTZIMTVWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE1pbnVzID0gXCJNMjAgMkg0QzIuOSAyIDIgMi44OSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4VjIxQzggMjEuNTUgOC40NSAyMiA5IDIySDkuNUM5Ljc1IDIyIDEwIDIxLjkgMTAuMiAyMS43MUwxMy45IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE1pbnVzT3V0bGluZSA9IFwiTTE2IDExSDhWOUgxNlYxMU0yMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjg5IDIuOSAyIDQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0TTIwIDRINFYxNkgxMFYxOS4wOEwxMy4wOCAxNkgyMFY0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE11bHRpcGxlID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0EyLDIgMCAwLDEgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuODkgMTIuNzYsMjMgMTIuNSwyM0gxMk0zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50TXVsdGlwbGVPdXRsaW5lID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0M1LDUuODkgNS45LDUgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuOSAxMi43NSwyMyAxMi41LDIzVjIzSDEyTTEzLDE3VjIwLjA4TDE2LjA4LDE3SDIxVjdIN1YxN0gxM00zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50T2ZmID0gXCJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTYuMTEgMThIMTMuOUwxMC4yIDIxLjcxQzEwIDIxLjkgOS43NSAyMiA5LjUgMjJIOUM4LjQ1IDIyIDggMjEuNTUgOCAyMVYxOEg0QzIuOSAxOCAyIDE3LjExIDIgMTZWNCAzLjlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0yMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJINS4yTDIwLjk1IDE3Ljc1QzIxLjU3IDE3LjQxIDIyIDE2Ljc2IDIyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRPZmZPdXRsaW5lID0gXCJNNy4yIDRMNS4yIDJIMjBDMjEuMTEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNi43NiAyMS41NyAxNy40MSAyMC45NSAxNy43NUwxOS4yIDE2SDIwVjRINy4yTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE2LjExIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAzLjk3IDIgMy45MyAyIDMuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE0LjExIDE2TDQgNS44OVYxNkgxMFYxOS4wOEwxMy4wOCAxNkgxNC4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50T3V0bGluZSA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNMTAsMTZWMTkuMDhMMTMuMDgsMTZIMjBWNEg0VjE2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRQbHVzID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJIOU0xMSw2VjlIOFYxMUgxMVYxNEgxM1YxMUgxNlY5SDEzVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFBsdXNPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTEsNkgxM1Y5SDE2VjExSDEzVjE0SDExVjExSDhWOUgxMVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRQcm9jZXNzaW5nID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xNywxMVY5SDE1VjExSDE3TTEzLDExVjlIMTFWMTFIMTNNOSwxMVY5SDdWMTFIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50UHJvY2Vzc2luZ091dGxpbmUgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5TTEwLDE2VjE5LjA4TDEzLjA4LDE2SDIwVjRINFYxNkgxME0xNywxMUgxNVY5SDE3VjExTTEzLDExSDExVjlIMTNWMTFNOSwxMUg3VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50UXVlc3Rpb24gPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJNMTIuMTksNS41QzExLjMsNS41IDEwLjU5LDUuNjggMTAuMDUsNi4wNEM5LjUsNi40IDkuMjIsNyA5LjI3LDcuNjlIMTEuMjRDMTEuMjQsNy40MSAxMS4zNCw3LjIgMTEuNSw3LjA2QzExLjcsNi45MiAxMS45Miw2Ljg1IDEyLjE5LDYuODVDMTIuNSw2Ljg1IDEyLjc3LDYuOTMgMTIuOTUsNy4xMUMxMy4xMyw3LjI4IDEzLjIyLDcuNSAxMy4yMiw3LjhDMTMuMjIsOC4wOCAxMy4xNCw4LjMzIDEzLDguNTRDMTIuODMsOC43NiAxMi42Miw4Ljk0IDEyLjM2LDkuMDhDMTEuODQsOS40IDExLjUsOS42OCAxMS4yOSw5LjkyQzExLjEsMTAuMTYgMTEsMTAuNSAxMSwxMUgxM0MxMywxMC43MiAxMy4wNSwxMC41IDEzLjE0LDEwLjMyQzEzLjIzLDEwLjE1IDEzLjQsMTAgMTMuNjYsOS44NUMxNC4xMiw5LjY0IDE0LjUsOS4zNiAxNC43OSw5QzE1LjA4LDguNjMgMTUuMjMsOC4yNCAxNS4yMyw3LjhDMTUuMjMsNy4xIDE0Ljk2LDYuNTQgMTQuNDIsNi4xMkMxMy44OCw1LjcxIDEzLjEzLDUuNSAxMi4xOSw1LjVNMTEsMTJWMTRIMTNWMTJIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFF1ZXN0aW9uT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDhWMjFBMSwxIDAgMCwwIDksMjJIOS41VjIyQzkuNzUsMjIgMTAsMjEuOSAxMC4yLDIxLjcxTDEzLjksMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRDMjIsMi44OSAyMS4xLDIgMjAsMkg0TTQsNEgyMFYxNkgxMy4wOEwxMCwxOS4wOFYxNkg0VjRNMTIuMTksNS41QzExLjMsNS41IDEwLjU5LDUuNjggMTAuMDUsNi4wNEM5LjUsNi40IDkuMjIsNyA5LjI3LDcuNjlDMC4yMSw3LjY5IDYuNTcsNy42OSAxMS4yNCw3LjY5QzExLjI0LDcuNDEgMTEuMzQsNy4yIDExLjUsNy4wNkMxMS43LDYuOTIgMTEuOTIsNi44NSAxMi4xOSw2Ljg1QzEyLjUsNi44NSAxMi43Nyw2LjkzIDEyLjk1LDcuMTFDMTMuMTMsNy4yOCAxMy4yMiw3LjUgMTMuMjIsNy44QzEzLjIyLDguMDggMTMuMTQsOC4zMyAxMyw4LjU0QzEyLjgzLDguNzYgMTIuNjIsOC45NCAxMi4zNiw5LjA4QzExLjg0LDkuNCAxMS41LDkuNjggMTEuMjksOS45MkMxMS4xLDEwLjE2IDExLDEwLjUgMTEsMTFIMTNDMTMsMTAuNzIgMTMuMDUsMTAuNSAxMy4xNCwxMC4zMkMxMy4yMywxMC4xNSAxMy40LDEwIDEzLjY2LDkuODVDMTQuMTIsOS42NCAxNC41LDkuMzYgMTQuNzksOUMxNS4wOCw4LjYzIDE1LjIzLDguMjQgMTUuMjMsNy44QzE1LjIzLDcuMSAxNC45Niw2LjU0IDE0LjQyLDYuMTJDMTMuODgsNS43MSAxMy4xMyw1LjUgMTIuMTksNS41TTExLDEyVjE0SDEzVjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRRdW90ZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS42IDguNCAyMiA5IDIySDkuNUM5LjcgMjIgMTAgMjEuOSAxMC4yIDIxLjdMMTMuOSAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTEgMTNIN1Y4LjhMOC4zIDZIMTAuM0w4LjkgOUgxMVYxM00xNyAxM0gxM1Y4LjhMMTQuMyA2SDE2LjNMMTQuOSA5SDE3VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRRdW90ZU91dGxpbmUgPSBcIk05IDIyQzguNCAyMiA4IDIxLjYgOCAyMVYxOEg0QzIuOSAxOCAyIDE3LjEgMiAxNlY0QzIgMi45IDIuOSAyIDQgMkgyMEMyMS4xIDIgMjIgMi45IDIyIDRWMTZDMjIgMTcuMSAyMS4xIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43QzEwIDIxLjkgOS44IDIyIDkuNSAyMkg5TTEwIDE2VjE5LjFMMTMuMSAxNkgyMFY0SDRWMTZIMTBNMTYuMyA2TDE0LjkgOUgxN1YxM0gxM1Y4LjhMMTQuMyA2SDE2LjNNMTAuMyA2TDguOSA5SDExVjEzSDdWOC44TDguMyA2SDEwLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFJlbW92ZSA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNOS40MSw2TDgsNy40MUwxMC41OSwxMEw4LDEyLjU5TDkuNDEsMTRMMTIsMTEuNDFMMTQuNTksMTRMMTYsMTIuNTlMMTMuNDEsMTBMMTYsNy40MUwxNC41OSw2TDEyLDguNTlMOS40MSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRSZW1vdmVPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNOS40MSw2TDEyLDguNTlMMTQuNTksNkwxNiw3LjQxTDEzLjQxLDEwTDE2LDEyLjU5TDE0LjU5LDE0TDEyLDExLjQxTDkuNDEsMTRMOCwxMi41OUwxMC41OSwxMEw4LDcuNDFMOS40MSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRTZWFyY2ggPSBcIk0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMiAxOS4zMSw4Ljg5TDIyLjQxLDEyTDIxLDEzLjM5TDE3Ljg5LDEwLjMxQzE3LjIsMTAuNzUgMTYuMzgsMTEgMTUuNSwxMUMxMywxMSAxMSw5IDExLDYuNUMxMSw0IDEzLDIgMTUuNSwyTTE1LjUsNEEyLjUsMi41IDAgMCwwIDEzLDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsNE00LDRIOS41QzkuMTksNC43OSA5LDUuNjQgOSw2LjVBNi41LDYuNSAwIDAsMCAxNS41LDEzQzE2LjE4LDEzIDE2LjgzLDEyLjg5IDE3LjQ2LDEyLjY5TDIwLDE1LjIzVjE2QTIsMiAwIDAsMSAxOCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuODkgOS43NiwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZBMiwyIDAgMCwxIDQsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50U2VhcmNoT3V0bGluZSA9IFwiTTQsNEg5LjVDOS4yNSw0LjY0IDkuMDksNS4zMSA5LjA0LDZINFYxNkgxMFYxOS4wOEwxMy4wOCwxNkgxOFYxMy4yM0wyMCwxNS4yM1YxNkEyLDIgMCAwLDEgMTgsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZDMiw0Ljg5IDIuOSw0IDQsNE0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMiAxOS4zMSw4Ljg5TDIyLjQxLDEyTDIxLDEzLjM5TDE3Ljg5LDEwLjMxQzE3LjIsMTAuNzUgMTYuMzgsMTEgMTUuNSwxMUMxMywxMSAxMSw5IDExLDYuNUMxMSw0IDEzLDIgMTUuNSwyTTE1LjUsNEEyLjUsMi41IDAgMCwwIDEzLDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50VGV4dCA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNNSw1VjdIMTlWNUg1TTUsOVYxMUgxM1Y5SDVNNSwxM1YxNUgxNVYxM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRUZXh0TXVsdGlwbGUgPSBcIk0zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNU0xMiwyM0ExLDEgMCAwLDEgMTEsMjJWMTlIN0EyLDIgMCAwLDEgNSwxN1Y3QTIsMiAwIDAsMSA3LDVIMjFBMiwyIDAgMCwxIDIzLDdWMTdBMiwyIDAgMCwxIDIxLDE5SDE2LjlMMTMuMiwyMi43MUMxMywyMi44OSAxMi43NiwyMyAxMi41LDIzSDEyTTksOVYxMUgxOVY5SDlNOSwxM1YxNUgxN1YxM0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRUZXh0TXVsdGlwbGVPdXRsaW5lID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0EyLDIgMCAwLDEgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuODkgMTIuNzYsMjMgMTIuNSwyM0gxMk0xMywxN1YyMC4wOEwxNi4wOCwxN0gyMVY3SDdWMTdIMTNNMywxNUgxVjNBMiwyIDAgMCwxIDMsMUgxOVYzSDNWMTVNOSw5SDE5VjExSDlWOU05LDEzSDE3VjE1SDlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFRleHRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNNiw3SDE4VjlINlY3TTYsMTFIMTVWMTNINlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXJlID0gXCJNMTksM0gxNFY1SDE5VjE4TDE0LDEyVjIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTAsMThINUwxMCwxMk0xMCwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTBWMjNIMTJWMUgxMFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhcmVIb3Jpem9udGFsID0gXCJNOSAxNEgyVjE2SDlWMTlMMTMgMTVMOSAxMVYxNE0xNSAxM1YxMEgyMlY4SDE1VjVMMTEgOUwxNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXJlVmVydGljYWwgPSBcIk0xNCAxNVYyMkgxNlYxNUgxOUwxNSAxMUwxMSAxNUgxNE0xMyA5SDEwVjJIOFY5SDVMOSAxM0wxMyA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhc3MgPSBcIk0xNC4xOSwxNC4xOUw2LDE4TDkuODEsOS44MUwxOCw2TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDEwLjlBMS4xLDEuMSAwIDAsMCAxMC45LDEyQTEuMSwxLjEgMCAwLDAgMTIsMTMuMUExLjEsMS4xIDAgMCwwIDEzLjEsMTJBMS4xLDEuMSAwIDAsMCAxMiwxMC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhc3NPZmYgPSBcIk0xLDMuNUwyLjI4LDIuMjVMMjEuNzUsMjEuNzJMMjAuNSwyM0wxNy43LDIwLjIyQzE2LjA4LDIxLjM0IDE0LjEyLDIyIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJDMiw5Ljg4IDIuNjYsNy45MiAzLjc4LDYuM0wxLDMuNU02LDE4TDEyLjQ3LDE1TDksMTEuNTNMNiwxOE0xOCw2TDExLjU2LDlMNi4zMywzLjc2QzcuOTQsMi42NSA5LjksMiAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE0LjEgMjEuMzUsMTYuMDYgMjAuMjQsMTcuNjdMMTUsMTIuNDRMMTgsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXNzT2ZmT3V0bGluZSA9IFwiTTEsMy41TDIuMjgsMi4yNUwyMS43NSwyMS43MkwyMC41LDIzTDE3LjcsMjAuMjJDMTYuMDgsMjEuMzQgMTQuMTIsMjIgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkMyLDkuODggMi42Niw3LjkyIDMuNzgsNi4zTDEsMy41TTcsMTdMOS4zOSwxMS45MUw1LjIzLDcuNzRDNC40NSw5IDQsMTAuNDQgNCwxMkE4LDggMCAwLDAgMTIsMjBDMTMuNTYsMjAgMTUsMTkuNTUgMTYuMjYsMTguNzdMMTIuMDksMTQuNjFMNywxN00xNyw3TDE0LjYyLDEyLjA1TDExLjk1LDkuMzhMMTcsN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE0LjEgMjEuMzUsMTYuMDYgMjAuMjQsMTcuNjdMMTguOCwxNi4yMkMxOS41NiwxNSAyMCwxMy41NSAyMCwxMkE4LDggMCAwLDAgMTIsNEMxMC40NSw0IDksNC40NCA3Ljc4LDUuMkw2LjMzLDMuNzZDNy45NCwyLjY1IDkuOSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tcGFzc091dGxpbmUgPSBcIk03LDE3TDEwLjIsMTAuMkwxNyw3TDEzLjgsMTMuOEw3LDE3TTEyLDExLjFBMC45LDAuOSAwIDAsMCAxMS4xLDEyQTAuOSwwLjkgMCAwLDAgMTIsMTIuOUEwLjksMC45IDAgMCwwIDEyLjksMTJBMC45LDAuOSAwIDAsMCAxMiwxMS4xTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXNzUm9zZSA9IFwiTTE1IDlMMTIgMEw5IDlMMCAxMkw5IDE1TDEyIDI0TDE1IDE1TDI0IDEyTDE1IDlNNCAxMkwxMCAxMEwxMSAxMkg0TTEyIDIwTDEwIDE0TDEyIDEzVjIwTTEyIDRMMTQgMTBMMTIgMTFWNE0xNCAxNEwxMyAxMkgyMEwxNCAxNE04LjcgMTcuM0w1IDE5TDYuNyAxNS4zTDguMyAxNS44TDguNyAxNy4zTTE3LjMgMTUuM0wxOSAxOUwxNS4zIDE3LjNMMTUuOCAxNS43TDE3LjMgMTUuM002LjcgOC43TDUgNUw4LjcgNi43TDguMiA4LjJMNi43IDguN00xNS4zIDYuN0wxOSA1TDE3LjMgOC43TDE1LjcgOC4yTDE1LjMgNi43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbmNvdXJzZUNpID0gXCJNMTAuOTQgMTIuMDlBMS4wNiAxLjA2IDAgMSAwIDExLjkxIDEwLjk1QTEuMDYgMS4wNiAwIDAgMCAxMC45NCAxMi4wOU0xMy41NCAxMy4yMUEyLjYyIDIuNjIgMCAwIDEgMTIuNTggMTMuODhMMTIuNTcgMTMuODlBMTEuMTcgMTEuMTcgMCAwIDAgMTMuODcgMTYuOTJBNC44MyA0LjgzIDAgMCAxIDEyLjkyIDE3LjNBNC45IDQuOSAwIDAgMSAxMi4yNCAxNy40NEwxMi4xNiAxNy40NUwxMi4wNiAxNy40NkwxMS44NyAxNy40N0MxMS43NSAxNy40NyAxMS42NCAxNy41IDExLjUgMTcuNDdBNSA1IDAgMCAxIDEwLjc5IDE3LjRBNS4xMyA1LjEzIDAgMCAxIDEwLjA5IDE3LjIzQTQuNzggNC43OCAwIDAgMSA5LjQ2IDE3QTUgNSAwIDAgMSA4LjkzIDE2LjY4QTQuNDUgNC40NSAwIDAgMSA4LjUgMTYuMzhDOC4zOCAxNi4yOSA4LjI4IDE2LjE5IDguMiAxNi4xMkw3Ljk1IDE1Ljg3QzcuOTUgMTUuODcgOCAxNS45NyA4LjE2IDE2LjE1QzguMjQgMTYuMjMgOC4zMiAxNi4zNCA4LjQ0IDE2LjQ1QTQuOTMgNC45MyAwIDAgMCA4LjgyIDE2LjgyQTUuMjEgNS4yMSAwIDAgMCA5LjMzIDE3LjJBNS4wOCA1LjA4IDAgMCAwIDkuOTYgMTcuNTZBNS40MyA1LjQzIDAgMCAwIDEwLjY4IDE3Ljg1QTUuNSA1LjUgMCAwIDAgMTEuNDYgMTguMDNDMTEuNiAxOC4wNiAxMS43NCAxOC4wNyAxMS44OCAxOC4wOEwxMi4wNyAxOC4xSDEyLjI3QTUuNSA1LjUgMCAwIDAgMTMuMDcgMTguMDVBNS42MSA1LjYxIDAgMCAwIDE0LjM5IDE3LjdRMTQuNjMgMTguMDMgMTQuOSAxOC4zNEwxNC44NyAxOC4zNkwxNC42NiAxOC41SDE0LjYyQzE0LjU5IDE4LjUzIDE0LjY3IDE4LjUgMTQuNjYgMTguNUgxNC42NEwxNC41OCAxOC41NEwxNC40NCAxOC42MUwxNC4zNyAxOC42NEwxNC4zMyAxOC42NkwxNC4zMiAxOC42N0gxNC4zMUMxNC4zIDE4LjY4IDE0LjM2IDE4LjY2IDE0LjMzIDE4LjY3SDE0LjMyTDE0LjE3IDE4Ljc0UTE0LjA5IDE4Ljc3IDE0IDE4LjgxVjE4LjgyTDEzLjkzIDE4Ljg0TDEzLjg0IDE4Ljg3QTYuNSA2LjUgMCAwIDEgMTIuMjUgMTkuMjZBNi40IDYuNCAwIDAgMSAxMS4zMSAxOS4zSDExLjE5TDExLjA3IDE5LjI5TDEwLjgxIDE5LjI3QzEwLjY1IDE5LjI0IDEwLjUgMTkuMjMgMTAuMzMgMTkuMkE2LjU5IDYuNTkgMCAwIDEgOC41IDE4LjU3QzguMzUgMTguNSA4LjIxIDE4LjQzIDguMDggMTguMzVDNy45NSAxOC4yNyA3LjgzIDE4LjE5IDcuNzEgMTguMTFBNi42NCA2LjY0IDAgMCAxIDcuMDcgMTcuNkE2LjM1IDYuMzUgMCAwIDEgNi41NyAxNy4xMUM2LjQzIDE2Ljk2IDYuMzIgMTYuODIgNi4yMiAxNi43QzYuMTMgMTYuNTggNi4wNiAxNi41IDYgMTYuNDJMNS45NCAxNi4zMkw2IDE2LjQzQzYuMDQgMTYuNSA2LjEgMTYuNiA2LjE4IDE2LjczQzYuMjYgMTYuODYgNi4zNiAxNyA2LjUgMTcuMThBNi41IDYuNSAwIDAgMCA2Ljk0IDE3LjczQTYuODYgNi44NiAwIDAgMCA3LjU1IDE4LjMxQzcuNjcgMTguNDEgNy43OCAxOC41IDcuOTEgMTguNkM4LjA0IDE4LjcgOC4xNyAxOC43OSA4LjMxIDE4Ljg4QTcuMTIgNy4xMiAwIDAgMCA5LjIxIDE5LjM3QTcuMiA3LjIgMCAwIDAgMTAuMiAxOS43NEMxMC4zNyAxOS44IDEwLjU1IDE5LjgzIDEwLjczIDE5Ljg3TDExIDE5LjkyTDExLjExIDE5Ljk0TDExLjI1IDE5Ljk2QTcuMjcgNy4yNyAwIDAgMCAxMi4yOSAyMC4wM0E3LjM4IDcuMzggMCAwIDAgMTQuMTQgMTkuNzdMMTQuMjMgMTkuNzRMMTQuMjggMTkuNzNMMTQuMzQgMTkuNzFDMTQuNCAxOS42OSAxNC40NiAxOS42OCAxNC41IDE5LjY2TDE0LjY4IDE5LjZMMTQuODUgMTkuNTRMMTUgMTkuNUwxNS4wNiAxOS40NUgxNS4wOEwxNS4xMyAxOS40M0wxNS4xNCAxOS40MkwxNS4xNyAxOS40MUwxNS4zOSAxOS4zTDE1LjY3IDE5LjE2QzE1Ljg2IDE5LjM0IDE2LjA2IDE5LjUgMTYuMjYgMTkuNjlDMTYuMjYgMTkuNjkgMTcuMjMgMjAuNjkgMTcuNzYgMjAuMjhDMTguMjYgMTkuODkgMTcuNjggMTguNjggMTcuNjggMTguNjhBMTEuMiAxMS4yIDAgMCAwIDEzLjU0IDEzLjIxTTEwLjE2IDExLjU3TDEwLjE1IDExLjU2QTExLjE4IDExLjE4IDAgMCAwIDYuOTEgMTEuMTFBNC43MiA0LjcyIDAgMCAxIDcuMzQgOS4zOUw3LjM4IDkuMzFMNy40MiA5LjIzTDcuNSA5LjA2QzcuNTcgOC45NiA3LjYyIDguODUgNy42OSA4Ljc1QTQuOTcgNC45NyAwIDAgMSA4LjE0IDguMTdBNS4wNSA1LjA1IDAgMCAxIDguNjYgNy42N0E0Ljc3IDQuNzcgMCAwIDEgOS4yIDcuMjdBNS4wNiA1LjA2IDAgMCAxIDkuNzQgN0E0Ljg4IDQuODggMCAwIDEgMTAuMjIgNi43OEMxMC4zNyA2LjcyIDEwLjUgNi42OSAxMC42MSA2LjY2QzEwLjgyIDYuNiAxMC45NSA2LjU4IDEwLjk1IDYuNThTMTAuODIgNi41OSAxMC42IDYuNjFDMTAuNSA2LjYzIDEwLjM1IDYuNjQgMTAuMTkgNi42OEE0Ljk0IDQuOTQgMCAwIDAgOS42NyA2LjgyQTUuMzQgNS4zNCAwIDAgMCA5LjA4IDcuMDVBNS4wOCA1LjA4IDAgMCAwIDguNDUgNy4zOUE1LjQ3IDUuNDcgMCAwIDAgNy44MiA3Ljg0QTUuNTUgNS41NSAwIDAgMCA3LjI1IDguNDFDNy4xNiA4LjUgNy4wOCA4LjYzIDcgOC43NEw2Ljg4IDguODlMNi44MiA4Ljk3TDYuNzYgOS4wNkE1LjUgNS41IDAgMCAwIDYuMzggOS43N0E1LjYxIDUuNjEgMCAwIDAgNS45NyAxMS4xNEw1Ljk2IDExLjE2QzUuNyAxMS4xOCA1LjQzIDExLjIxIDUuMTYgMTEuMjZWMTEuMTJMNS4xNyAxMC44N1YxMC44MkM1LjE3IDEwLjc4IDUuMTYgMTAuODggNS4xNiAxMC44N1YxMC44NEw1LjE3IDEwLjc3TDUuMTggMTAuNjJMNS4xOSAxMC41NFYxMC41SDUuMlYxMC40N0M1LjIgMTAuNDYgNS4xOSAxMC41IDUuMTkgMTAuNUw1LjIyIDEwLjMyTDUuMjQgMTAuMTRMNS4yNSAxMC4xMlYxMC4xMUw1LjI0IDEwLjEzTDUuMjUgMTAuMTJWMTAuMTFMNS4yNiAxMC4wN0w1LjI3IDkuOTdBNi41IDYuNSAwIDAgMSA2LjI2IDcuNTlMNi4zMiA3LjVMNi4zOSA3LjRMNi41NSA3LjE5QzYuNjUgNy4wNyA2Ljc0IDYuOTQgNi44NiA2LjgyQTYuNjEgNi42MSAwIDAgMSA4LjM3IDUuNTlDOC41IDUuNSA4LjY0IDUuNDMgOC43NyA1LjM3QzguOSA1LjI5IDkuMDQgNS4yNCA5LjE3IDUuMThBNi43NiA2Ljc2IDAgMCAxIDkuOTQgNC45QTYuNSA2LjUgMCAwIDEgMTAuNjIgNC43NEMxMC44MiA0LjY5IDExIDQuNjggMTEuMTUgNC42NkMxMS4zIDQuNjQgMTEuNDIgNC42NCAxMS41IDQuNjNMMTEuNjIgNC42MkgxMS41QzExLjQyIDQuNjIgMTEuMyA0LjYxIDExLjE1IDQuNjFDMTEgNC42MSAxMC44MiA0LjYxIDEwLjYxIDQuNjNBNi40MSA2LjQxIDAgMCAwIDkuOSA0LjczQTcuMDMgNy4wMyAwIDAgMCA5LjA4IDQuOTNDOC45NCA1IDguNzkgNS4wMyA4LjY1IDUuMDlDOC41IDUuMTQgOC4zNSA1LjIxIDguMiA1LjI4QTcuMjYgNy4yNiAwIDAgMCA3LjMxIDUuNzhBNy4zMyA3LjMzIDAgMCAwIDYuNDcgNi40MkM2LjMzIDYuNTQgNi4yIDYuNjggNi4wNyA2LjhMNS45IDdMNS44MiA3LjA5TDUuNzIgNy4xOUE3LjI1IDcuMjUgMCAwIDAgNS4xMiA4LjA0QTcuMzggNy4zOCAwIDAgMCA0LjM2IDkuNzVMNC4zMyA5Ljg0TDQuMzIgOS44OUw0LjMgOS45NUw0LjI1IDEwLjEzTDQuMjEgMTAuMjlMNC4xOCAxMC41TDQuMTUgMTAuNjNDNC4xNCAxMC42NSA0LjE0IDEwLjY3IDQuMTQgMTAuN0w0LjEzIDEwLjcyVjEwLjc4TDQuMTIgMTAuODFMNC4wOSAxMS4wNkw0LjA1IDExLjVDMy43OSAxMS41NyAzLjUzIDExLjY1IDMuMjggMTEuNzRDMy4yOCAxMS43NCAxLjkzIDEyLjA1IDIgMTIuNzJDMi4wOCAxMy4zNSAzLjQxIDEzLjUgMy40MSAxMy41QTExLjIxIDExLjIxIDAgMCAwIDEwLjI0IDEyLjc0QTIuNjIgMi42MiAwIDAgMSAxMC4xNiAxMS41N00xOS43IDEwLjg0QTcuMTkgNy4xOSAwIDAgMCAxOS41MyA5Ljc5QzE5LjUgOS42MiAxOS40MyA5LjQ1IDE5LjM4IDkuMjdMMTkuMyA5LjAzTDE5LjI2IDguOTFMMTkuMjEgOC43N0E3LjIzIDcuMjMgMCAwIDAgMTguNzUgNy44M0E3LjM1IDcuMzUgMCAwIDAgMTcuNjIgNi4zNUwxNy41NSA2LjI4TDE3LjUgNi4yNUwxNy40NyA2LjJMMTcuMzMgNi4wOEwxNy4yMSA1Ljk3TDE3LjA2IDUuODVMMTYuOTQgNS43NUwxNi44OSA1LjdMMTYuODggNS42OUgxNi44N0wxNi44MyA1LjY2TDE2LjggNS42NEwxNi41OSA1LjVMMTYuMzIgNS4zMVExNi40MiA0Ljg4IDE2LjUgNC40NVMxNi44OCAzLjExIDE2LjI1IDIuODVDMTUuNjcgMi42MSAxNC45MSAzLjcyIDE0LjkxIDMuNzJBMTEuMjEgMTEuMjEgMCAwIDAgMTIuMjUgMTAuMDVBMi42MyAyLjYzIDAgMCAxIDEzLjMyIDEwLjU1QTExLjIgMTEuMiAwIDAgMCAxNS4yNSA4QTQuNzMgNC43MyAwIDAgMSAxNi4wOCA4LjY2QTQuODEgNC44MSAwIDAgMSAxNi41MyA5LjE5TDE2LjU4IDkuMjVMMTYuNjMgOS4zM0wxNi43NCA5LjVDMTYuOCA5LjU5IDE2Ljg2IDkuNjkgMTYuOTIgOS44QTQuODkgNC44OSAwIDAgMSAxNy40IDExLjE2QTQuNzggNC43OCAwIDAgMSAxNy41IDExLjgzQTQuODggNC44OCAwIDAgMSAxNy41IDEyLjQ0QTQuNzYgNC43NiAwIDAgMSAxNy40NCAxMi45NkMxNy40MiAxMy4xMSAxNy4zOSAxMy4yNSAxNy4zNiAxMy4zNkMxNy4zMSAxMy41NyAxNy4yNyAxMy43IDE3LjI3IDEzLjdMMTcuNDEgMTMuMzdDMTcuNDUgMTMuMjYgMTcuNSAxMy4xNCAxNy41NCAxM0E1LjA2IDUuMDYgMCAwIDAgMTcuNjcgMTIuNDZBNS4zNCA1LjM0IDAgMCAwIDE3Ljc1IDExLjgzQTUuMDQgNS4wNCAwIDAgMCAxNy43NiAxMS4xMUE1LjM4IDUuMzggMCAwIDAgMTcuNDMgOS41N0MxNy4zOCA5LjQ0IDE3LjMyIDkuMzEgMTcuMjcgOS4xOUwxNy4xOCA5TDE3LjE0IDguOTNMMTcuMDkgOC44M0E1LjUzIDUuNTMgMCAwIDAgMTUuNjcgNy4xNkMxNS43OSA2LjkgMTUuODkgNi42NSAxNiA2LjM4TDE2LjAzIDYuNDFMMTYuMjUgNi41M0wxNi4yOCA2LjU0VjYuNTVIMTYuMjlDMTYuMzIgNi41NyAxNi4yNCA2LjUgMTYuMjUgNi41M0gxNi4yNkwxNi4yNyA2LjU0TDE2LjMzIDYuNThMMTYuNDUgNi42NkwxNi41IDYuNzFMMTYuNTYgNi43M0wxNi41NyA2Ljc0SDE2LjU4TDE2LjU2IDYuNzNIMTYuNTdMMTYuNzEgNi44NEwxNi44NSA2Ljk0TDE2Ljg3IDYuOTZMMTYuODYgNi45NUwxNi44NyA2Ljk2TDE2LjkxIDdMMTcgNy4wNUE2LjQ2IDYuNDYgMCAwIDEgMTguNiA5LjA1TDE4LjY1IDkuMTVMMTguNzEgOS4yN0wxOC44MiA5LjVDMTguODcgOS42NSAxOC45NCA5Ljc5IDE5IDkuOTVBNi42OSA2LjY5IDAgMCAxIDE5LjI0IDEwLjlBNi43OCA2Ljc4IDAgMCAxIDE5LjM1IDExLjg2QzE5LjM2IDEyIDE5LjM2IDEyLjE3IDE5LjM1IDEyLjMyQzE5LjM1IDEyLjUgMTkuMzQgMTIuNjIgMTkuMzMgMTIuNzdBNi43OSA2Ljc5IDAgMCAxIDE5LjIgMTMuNThBNi40IDYuNCAwIDAgMSAxOSAxNC4yNUMxOC45NiAxNC40NSAxOC44OSAxNC42MiAxOC44NCAxNC43NkMxOC43OCAxNC45IDE4LjczIDE1IDE4LjcgMTUuMDdMMTguNjQgMTUuMTlMMTguNzEgMTUuMDhDMTguNzUgMTUgMTguODEgMTQuOTEgMTguODggMTQuNzhDMTguOTUgMTQuNjQgMTkuMDQgMTQuNSAxOS4xMiAxNC4yOUE2LjUgNi41IDAgMCAwIDE5LjM3IDEzLjYyQTYuOTMgNi45MyAwIDAgMCAxOS41OSAxMi44MUMxOS42MSAxMi42NiAxOS42NCAxMi41IDE5LjY2IDEyLjM1QzE5LjY4IDEyLjE5IDE5LjcgMTIuMDMgMTkuNyAxMS44N0E3LjEgNy4xIDAgMCAwIDE5LjY5IDEwLjg0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ubmVjdGlvbiA9IFwiTTIxLjQgNy41QzIyLjIgOC4zIDIyLjIgOS42IDIxLjQgMTAuM0wxOC42IDEzLjFMMTAuOCA1LjNMMTMuNiAyLjVDMTQuNCAxLjcgMTUuNyAxLjcgMTYuNCAyLjVMMTguMiA0LjNMMjEuMiAxLjNMMjIuNiAyLjdMMTkuNiA1LjdMMjEuNCA3LjVNMTUuNiAxMy4zTDE0LjIgMTEuOUwxMS40IDE0LjdMOS4zIDEyLjZMMTIuMSA5LjhMMTAuNyA4LjRMNy45IDExLjJMNi40IDkuOEwzLjYgMTIuNkMyLjggMTMuNCAyLjggMTQuNyAzLjYgMTUuNEw1LjQgMTcuMkwxLjQgMjEuMkwyLjggMjIuNkw2LjggMTguNkw4LjYgMjAuNEM5LjQgMjEuMiAxMC43IDIxLjIgMTEuNCAyMC40TDE0LjIgMTcuNkwxMi44IDE2LjJMMTUuNiAxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGUgPSBcIk0yMCwxOVY3SDRWMTlIMjBNMjAsM0EyLDIgMCAwLDEgMjIsNVYxOUEyLDIgMCAwLDEgMjAsMjFINEEyLDIgMCAwLDEgMiwxOVY1QzIsMy44OSAyLjksMyA0LDNIMjBNMTMsMTdWMTVIMThWMTdIMTNNOS41OCwxM0w1LjU3LDlIOC40TDExLjcsMTIuM0MxMi4wOSwxMi42OSAxMi4wOSwxMy4zMyAxMS43LDEzLjcyTDguNDIsMTdINS41OUw5LjU4LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGVMaW5lID0gXCJNMTMsMTlWMTZIMjFWMTlIMTNNOC41LDEzTDIuNDcsN0g2LjcxTDExLjY3LDExLjk1QzEyLjI1LDEyLjU0IDEyLjI1LDEzLjUgMTEuNjcsMTQuMDdMNi43NCwxOUgyLjVMOC41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGVOZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdBMiwyIDAgMCwxIDUsMTVWNUEyLDIgMCAwLDEgNywzSDE3TTcsN0wxMSwxMUw3LDE1SDkuODVMMTMuMTMsMTEuNzJDMTMuNSwxMS4zMyAxMy41LDEwLjcgMTMuMTMsMTAuM0w5LjgzLDdIN00xNywxM0gxNFYxNUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb25zb2xlTmV0d29ya091dGxpbmUgPSBcIk0xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTdIMTdBMiwyIDAgMCwwIDE5LDE1VjVBMiwyIDAgMCwwIDE3LDNIN0EyLDIgMCAwLDAgNSw1VjE1QTIsMiAwIDAsMCA3LDE3SDExVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1TTcsMTVWNUgxN1YxNUg3TTgsNi44OUwxMS41NiwxMC40NUw4LDE0SDEwLjUzTDEzLjQ1LDExLjA4QzEzLjc4LDEwLjc0IDEzLjc4LDEwLjE4IDEzLjQ1LDkuODJMMTAuNSw2Ljg5SDhNMTYsMTIuMjJIMTMuMzNWMTRIMTZWMTIuMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29uc29saWRhdGUgPSBcIk0xOCA5SDIwVjRIMjJWOUEyIDIgMCAwIDEgMjAgMTFIMThWMTNMMTUgMTBMMTggN00xNCAxMEEyIDIgMCAxIDAgMTIgMTJBMiAyIDAgMCAwIDE0IDEwTTIgMTFWMTZINFYxMUg2VjEzTDkgMTBMNiA3VjlINEEyIDIgMCAwIDAgMiAxMU0xNSAxNkwxMiAxM0w5IDE2SDExVjE4QTIgMiAwIDAgMCAxMyAyMEgxOFYxOEgxM1YxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhY3RsZXNzUGF5bWVudCA9IFwiTTE2Ljc5LDIzQzE2LjM3LDIyLjgzIDE2LjA3LDIyLjQ1IDE2LDIyQzE1Ljk1LDIxLjc0IDE2LDIxLjU2IDE2LjQsMjAuODRDMTcuOSwxOC4xNCAxOC42NywxNS4wOSAxOC42MywxMkMxOC42Nyw5IDE3Ljk0LDYuMDcgMTYuNSwzLjQ0QzE2LjI5LDMgMTYuMSwyLjU4IDE1Ljk0LDIuMTNDMTYsMS43NSAxNi4xOSwxLjQgMTYuNSwxLjE5QzE2Ljk1LDAuOTUgMTcuNSwxIDE3LjkxLDEuMjhDMTguMTksMS42NCAxOC40MywyIDE4LjYzLDIuNDJDMTkuNzEsNC41IDIwLjQ0LDYuNyAyMC44LDlDMjEuMDMsMTAuODEgMjEuMDYsMTIuNjUgMjAuODksMTQuNDdDMjAuNTgsMTYuODEgMTkuODksMTkuMDcgMTguODMsMjEuMThDMTguMTksMjIuNDYgMTcuODMsMjMgMTcuNDUsMjNDMTcuMzcsMjMgMTcuMjgsMjMgMTcuMiwyM0MxNy4wNiwyMyAxNi45MywyMyAxNi43OSwyM1YyM00xMi40MywyMC43OUMxMS44NiwyMC42MyAxMS41LDIwLjA1IDExLjYyLDE5LjQ3QzExLjYyLDE5LjM1IDExLjkzLDE4LjggMTIuMjEsMTguMjRDMTMuMzksMTUuOTcgMTMuOSwxMy40MSAxMy42NywxMC44NkMxMy41Myw5LjAzIDEzLDcuMjUgMTIuMTMsNS42NEMxMS41LDQuMzggMTEuNDYsNC4xOCAxMS44MywzLjY0QzEyLjI3LDMuMTUgMTMsMy4wOCAxMy41NCwzLjVDMTQuMjYsNC41NiAxNC44Myw1LjcyIDE1LjI1LDYuOTRDMTYuNTMsMTAuNzMgMTYuMzMsMTQuODYgMTQuNjksMTguNUMxMy44NSwyMC4zOSAxMy4yNiwyMSAxMi40MywyMC43NFYyMC43OU03LjkzLDE4LjU2QzcuNTcsMTguNCA3LjMsMTguMDggNy4yLDE3LjdDNy4yLDE3LjUgNy4yLDE3LjI0IDcuNjUsMTYuNDRDOS4xNCwxMy43NCA5LjE0LDEwLjQ2IDcuNjUsNy43NkM3LDYuNSA3LDYuMjQgNy41Myw1Ljc2QzcuNzIsNS41NCA4LDUuNDMgOC4zLDUuNDdDOC45NCw1LjQ3IDkuMyw1Ljc4IDkuODQsNi45MUMxMC42OSw4LjQ3IDExLjEzLDEwLjIyIDExLjEyLDEyQzExLjE2LDEzLjgxIDEwLjcyLDE1LjYxIDkuODUsMTcuMkM5LjMxLDE4LjI1IDkuMDQsMTguNSA4LjUsMTguNTlDOC4zMSwxOC42MSA4LjExLDE4LjU5IDcuOTMsMTguNVYxOC41Nk0zLjcyLDE2LjQzQzMuMzksMTYuMjcgMy4xMywxNiAzLDE1LjY1QzIuOSwxNS4zIDMsMTUgMy40LDE0LjM2QzMuOSwxMy42OCA0LjE0LDEyLjg0IDQuMDksMTJDNC4xNiwxMS4xNSAzLjkzLDEwLjMxIDMuNDQsOS42MUMzLjI3LDkuMzYgMy4xMyw5LjA5IDMsOC44MkMyLjg5LDguMTkgMy4zMSw3LjU5IDQsNy40N0M0LjU0LDcuMzcgNC45Miw3LjYgNS40Miw4LjM2QzYuODcsMTAuNTcgNi44NywxMy40MiA1LjQyLDE1LjYzQzQuOTEsMTYuNCA0LjMzLDE2LjYzIDMuNzMsMTYuNDNIMy43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0bGVzc1BheW1lbnRDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNOC40MyAxNC40NEw3LjA3IDEzLjgzQzcuMzUgMTMuMjcgNy41IDEyLjY3IDcuNSAxMi4wNUM3LjUgMTEuMzkgNy4zNSAxMC43NiA3LjA3IDEwLjE3TDguNDMgOS41NkM4LjgxIDEwLjM3IDkgMTEuMiA5IDEyLjA1QzkgMTIuOCA4LjgxIDEzLjYgOC40MyAxNC40NE0xMS41MyAxNS45NEwxMC4yMiAxNS4yOUMxMC43NSAxNC4xNiAxMSAxMyAxMSAxMS44NkMxMSAxMC43MyAxMC43NSA5LjY5IDEwLjIyIDguNzFMMTEuNTMgNy45NkMxMi4xOSA5LjEyIDEyLjUgMTAuNDIgMTIuNSAxMS44NkMxMi41IDEzLjMzIDEyLjE5IDE0LjY5IDExLjUzIDE1Ljk0TTE0LjY4IDE3LjM1TDEzLjMxIDE2LjY1QzE0LjEgMTUuMTEgMTQuNSAxMy41NyAxNC41IDEyUzE0LjEgOC44NyAxMy4zMSA3LjMxTDE0LjY4IDYuNjVDMTUuNTUgOC40MyAxNiAxMC4yMiAxNiAxMkMxNiAxMy44MiAxNS41NSAxNS42IDE0LjY4IDE3LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhY3RsZXNzUGF5bWVudENpcmNsZU91dGxpbmUgPSBcIk0xMiA0QzE2LjQxIDQgMjAgNy41OSAyMCAxMlMxNi40MSAyMCAxMiAyMCA0IDE2LjQxIDQgMTIgNy41OSA0IDEyIDRNMTIgMkM2LjUgMiAyIDYuNSAyIDEyUzYuNSAyMiAxMiAyMiAyMiAxNy41IDIyIDEyIDE3LjUgMiAxMiAyTTguNDMgMTQuNDRMNy4wNyAxMy44M0M3LjM1IDEzLjI3IDcuNSAxMi42NyA3LjUgMTIuMDVDNy41IDExLjM5IDcuMzUgMTAuNzYgNy4wNyAxMC4xN0w4LjQzIDkuNTZDOC44MSAxMC4zNyA5IDExLjIgOSAxMi4wNUM5IDEyLjggOC44MSAxMy42IDguNDMgMTQuNDRNMTEuNTMgMTUuOTRMMTAuMjIgMTUuMjlDMTAuNzUgMTQuMTYgMTEgMTMgMTEgMTEuODZDMTEgMTAuNzMgMTAuNzUgOS42OSAxMC4yMiA4LjcxTDExLjUzIDcuOTZDMTIuMTkgOS4xMiAxMi41IDEwLjQyIDEyLjUgMTEuODZDMTIuNSAxMy4zMyAxMi4xOSAxNC42OSAxMS41MyAxNS45NE0xNC42OCAxNy4zNUwxMy4zMSAxNi42NUMxNC4xIDE1LjExIDE0LjUgMTMuNTcgMTQuNSAxMlMxNC4xIDguODcgMTMuMzEgNy4zMUwxNC42OCA2LjY1QzE1LjU1IDguNDMgMTYgMTAuMjIgMTYgMTJDMTYgMTMuODIgMTUuNTUgMTUuNiAxNC42OCAxNy4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0cyA9IFwiTTIwLDBINFYySDIwVjBNNCwyNEgyMFYyMkg0VjI0TTIwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0TTEyLDYuNzVBMi4yNSwyLjI1IDAgMCwxIDE0LjI1LDlBMi4yNSwyLjI1IDAgMCwxIDEyLDExLjI1QTIuMjUsMi4yNSAwIDAsMSA5Ljc1LDlBMi4yNSwyLjI1IDAgMCwxIDEyLDYuNzVNMTcsMTdIN1YxNS41QzcsMTMuODMgMTAuMzMsMTMgMTIsMTNDMTMuNjcsMTMgMTcsMTMuODMgMTcsMTUuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0c091dGxpbmUgPSBcIk0yMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNkMyMiA0LjkgMjEuMSA0IDIwIDRNMjAgMThINFY2SDIwVjE4TTQgMEgyMFYySDRNNCAyMkgyMFYyNEg0TTEyIDEyQzEzLjM4IDEyIDE0LjUgMTAuODggMTQuNSA5LjVTMTMuMzggNyAxMiA3IDkuNSA4LjEyIDkuNSA5LjUgMTAuNjIgMTIgMTIgMTJNMTIgOC41QzEyLjU1IDguNSAxMyA4Ljk1IDEzIDkuNVMxMi41NSAxMC41IDEyIDEwLjUgMTEgMTAuMDUgMTEgOS41IDExLjQ1IDguNSAxMiA4LjVNMTcgMTZDMTcgMTMuOSAxMy42OSAxMyAxMiAxM1M3IDEzLjkgNyAxNlYxN0gxN1YxNk04LjgxIDE1LjVDOS40MiAxNSAxMC44NCAxNC41IDEyIDE0LjVDMTMuMTcgMTQuNSAxNC41OSAxNSAxNS4yIDE1LjVIOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWluID0gXCJNMiwzSDhWNUg0VjE5SDhWMjFIMlYzTTcsMTdWMTVIOVYxN0g3TTExLDE3VjE1SDEzVjE3SDExTTE1LDE3VjE1SDE3VjE3SDE1TTIyLDNWMjFIMTZWMTlIMjBWNUgxNlYzSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhaW5FbmQgPSBcIk03LDE3VjE1SDlWMTdIN00xMSwxN1YxNUgxM1YxN0gxMU0xNSwxN1YxNUgxN1YxN0gxNU0yMiwzVjIxSDE2VjE5SDIwVjVIMTZWM0gyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWluU3RhcnQgPSBcIk0yLDNIOFY1SDRWMTlIOFYyMUgyVjNNNywxN1YxNUg5VjE3SDdNMTEsMTdWMTVIMTNWMTdIMTFNMTUsMTdWMTVIMTdWMTdIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudENvcHkgPSBcIk0xOSwyMUg4VjdIMTlNMTksNUg4QTIsMiAwIDAsMCA2LDdWMjFBMiwyIDAgMCwwIDgsMjNIMTlBMiwyIDAgMCwwIDIxLDIxVjdBMiwyIDAgMCwwIDE5LDVNMTYsMUg0QTIsMiAwIDAsMCAyLDNWMTdINFYzSDE2VjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudEN1dCA9IFwiTTE5LDNMMTMsOUwxNSwxMUwyMiw0VjNNMTIsMTIuNUEwLjUsMC41IDAgMCwxIDExLjUsMTJBMC41LDAuNSAwIDAsMSAxMiwxMS41QTAuNSwwLjUgMCAwLDEgMTIuNSwxMkEwLjUsMC41IDAgMCwxIDEyLDEyLjVNNiwyMEEyLDIgMCAwLDEgNCwxOEM0LDE2Ljg5IDQuOSwxNiA2LDE2QTIsMiAwIDAsMSA4LDE4QzgsMTkuMTEgNy4xLDIwIDYsMjBNNiw4QTIsMiAwIDAsMSA0LDZDNCw0Ljg5IDQuOSw0IDYsNEEyLDIgMCAwLDEgOCw2QzgsNy4xMSA3LjEsOCA2LDhNOS42NCw3LjY0QzkuODcsNy4xNCAxMCw2LjU5IDEwLDZBNCw0IDAgMCwwIDYsMkE0LDQgMCAwLDAgMiw2QTQsNCAwIDAsMCA2LDEwQzYuNTksMTAgNy4xNCw5Ljg3IDcuNjQsOS42NEwxMCwxMkw3LjY0LDE0LjM2QzcuMTQsMTQuMTMgNi41OSwxNCA2LDE0QTQsNCAwIDAsMCAyLDE4QTQsNCAwIDAsMCA2LDIyQTQsNCAwIDAsMCAxMCwxOEMxMCwxNy40MSA5Ljg3LDE2Ljg2IDkuNjQsMTYuMzZMMTIsMTRMMTksMjFIMjJWMjBMOS42NCw3LjY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnREdXBsaWNhdGUgPSBcIk0xMSwxN0g0QTIsMiAwIDAsMSAyLDE1VjNBMiwyIDAgMCwxIDQsMUgxNlYzSDRWMTVIMTFWMTNMMTUsMTZMMTEsMTlWMTdNMTksMjFWN0g4VjEzSDZWN0EyLDIgMCAwLDEgOCw1SDE5QTIsMiAwIDAsMSAyMSw3VjIxQTIsMiAwIDAsMSAxOSwyM0g4QTIsMiAwIDAsMSA2LDIxVjE5SDhWMjFIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFBhc3RlID0gXCJNMTksMjBINVY0SDdWN0gxN1Y0SDE5TTEyLDJBMSwxIDAgMCwxIDEzLDNBMSwxIDAgMCwxIDEyLDRBMSwxIDAgMCwxIDExLDNBMSwxIDAgMCwxIDEyLDJNMTksMkgxNC44MkMxNC40LDAuODQgMTMuMywwIDEyLDBDMTAuNywwIDkuNiwwLjg0IDkuMTgsMkg1QTIsMiAwIDAsMCAzLDRWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjRBMiwyIDAgMCwwIDE5LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmUgPSBcIk0xNSw5SDVWNUgxNU0xMiwxOUEzLDMgMCAwLDEgOSwxNkEzLDMgMCAwLDEgMTIsMTNBMywzIDAgMCwxIDE1LDE2QTMsMyAwIDAsMSAxMiwxOU0xNywzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWN0wxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlQWxlcnQgPSBcIk0xMyA5SDNWNUgxM00xMCAxOUM4LjMgMTkgNyAxNy43IDcgMTZTOC4zIDEzIDEwIDEzIDEzIDE0LjMgMTMgMTYgMTEuNyAxOSAxMCAxOU0xNSAzSDNDMS45IDMgMSAzLjkgMSA1VjE5QzEgMjAuMSAxLjkgMjEgMyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWN0wxNSAzTTIzIDE0SDIxVjdIMjNWMTRNMjMgMThIMjFWMTZIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVBbGVydE91dGxpbmUgPSBcIk0xNSAzSDNDMS45IDMgMSAzLjkgMSA1VjE5QzEgMjAuMSAxLjkgMjEgMyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWN0wxNSAzTTE3IDE5SDNWNUgxNC4yTDE3IDcuOFYxOU0xMCAxMkM4LjMgMTIgNyAxMy4zIDcgMTVTOC4zIDE4IDEwIDE4IDEzIDE2LjcgMTMgMTUgMTEuNyAxMiAxMCAxMk00IDZIMTNWMTBINFY2TTIzIDE0SDIxVjdIMjNWMTRNMjMgMThIMjFWMTZIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVBbGwgPSBcIk0xNyw3VjNIN1Y3SDE3TTE0LDE3QTMsMyAwIDAsMCAxNywxNEEzLDMgMCAwLDAgMTQsMTFBMywzIDAgMCwwIDExLDE0QTMsMyAwIDAsMCAxNCwxN00xOSwxTDIzLDVWMTdBMiwyIDAgMCwxIDIxLDE5SDdDNS44OSwxOSA1LDE4LjEgNSwxN1YzQTIsMiAwIDAsMSA3LDFIMTlNMSw3SDNWMjFIMTdWMjNIM0EyLDIgMCAwLDEgMSwyMVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlQWxsT3V0bGluZSA9IFwiTTEgN0gzVjIxSDE3VjIzSDNDMS45IDIzIDEgMjIuMTEgMSAyMVY3TTE5IDFIN0M1Ljg5IDEgNSAxLjkgNSAzVjE3QzUgMTguMSA1Ljg5IDE5IDcgMTlIMjFDMjIuMSAxOSAyMyAxOC4xIDIzIDE3VjVMMTkgMU0yMSAxN0g3VjNIMTguMTdMMjEgNS44M1YxN00xNCAxMEMxMi4zNCAxMCAxMSAxMS4zNCAxMSAxM1MxMi4zNCAxNiAxNCAxNiAxNyAxNC42NiAxNyAxMyAxNS42NiAxMCAxNCAxME04IDRIMTdWOEg4VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVDb2cgPSBcIk0yMSAxMS43VjdMMTcgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTEuN0MxMS40IDIwLjMgMTEuMiAxOS42IDExLjEgMTguOEM5LjkgMTguNCA5IDE3LjMgOSAxNkM5IDE0LjMgMTAuMyAxMyAxMiAxM0MxMi4zIDEzIDEyLjYgMTMuMSAxMi45IDEzLjJDMTQuMiAxMS44IDE2IDExIDE4IDExQzE5LjEgMTEgMjAuMSAxMS4yIDIxIDExLjdNMTUgOUg1VjVIMTVWOU0yMS43IDE4LjZWMTcuNkwyMi44IDE2LjhDMjIuOSAxNi43IDIzIDE2LjYgMjIuOSAxNi41TDIxLjkgMTQuOEMyMS45IDE0LjcgMjEuNyAxNC43IDIxLjYgMTQuN0wyMC40IDE1LjJDMjAuMSAxNSAxOS44IDE0LjggMTkuNSAxNC43TDE5LjMgMTMuNEMxOS4zIDEzLjMgMTkuMiAxMy4yIDE5LjEgMTMuMkgxNy4xQzE2LjkgMTMuMiAxNi44IDEzLjMgMTYuOCAxMy40TDE2LjYgMTQuN0MxNi4zIDE0LjkgMTYuMSAxNSAxNS44IDE1LjJMMTQuNiAxNC43QzE0LjUgMTQuNyAxNC40IDE0LjcgMTQuMyAxNC44TDEzLjMgMTYuNUMxMy4zIDE2LjYgMTMuMyAxNi43IDEzLjQgMTYuOEwxNC41IDE3LjZWMTguNkwxMy40IDE5LjRDMTMuMyAxOS41IDEzLjIgMTkuNiAxMy4zIDE5LjdMMTQuMyAyMS40QzE0LjQgMjEuNSAxNC41IDIxLjUgMTQuNiAyMS41TDE1LjggMjFDMTYgMjEuMiAxNi4zIDIxLjQgMTYuNiAyMS41TDE2LjggMjIuOEMxNi45IDIyLjkgMTcgMjMgMTcuMSAyM0gxOS4xQzE5LjIgMjMgMTkuMyAyMi45IDE5LjMgMjIuOEwxOS41IDIxLjVDMTkuOCAyMS4zIDIwIDIxLjIgMjAuMyAyMUwyMS41IDIxLjRDMjEuNiAyMS40IDIxLjcgMjEuNCAyMS44IDIxLjNMMjIuOCAxOS42QzIyLjkgMTkuNSAyMi45IDE5LjQgMjIuOCAxOS40TDIxLjcgMTguNk0xOCAxOS41QzE3LjIgMTkuNSAxNi41IDE4LjggMTYuNSAxOFMxNy4yIDE2LjUgMTggMTYuNSAxOS41IDE3LjIgMTkuNSAxOCAxOC44IDE5LjUgMTggMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZUNvZ091dGxpbmUgPSBcIk0xMS4xIDE5QzExLjIgMTkuNyAxMS40IDIwLjQgMTEuNyAyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0gxN0wyMSA3VjExLjdDMjAuNCAxMS40IDE5LjcgMTEuMiAxOSAxMS4xVjcuOEwxNi4yIDVINVYxOUgxMS4xTTEyIDEyQzEwLjMgMTIgOSAxMy4zIDkgMTVDOSAxNi4zIDkuOCAxNy40IDExIDE3LjhDMTEuMSAxNS42IDEyLjEgMTMuNyAxMy43IDEyLjVDMTMuMiAxMi4yIDEyLjYgMTIgMTIgMTJNMTUgMTBWNkg2VjEwSDE1TTIyLjggMTkuNkwyMS44IDIxLjNDMjEuNyAyMS40IDIxLjYgMjEuNCAyMS41IDIxLjRMMjAuMyAyMUMyMCAyMS4yIDE5LjggMjEuMyAxOS41IDIxLjVMMTkuMyAyMi44QzE5LjMgMjIuOSAxOS4yIDIzIDE5LjEgMjNIMTcuMUMxNyAyMyAxNi45IDIyLjkgMTYuOCAyMi44TDE2LjYgMjEuNUMxNi4zIDIxLjQgMTYgMjEuMiAxNS44IDIxTDE0LjYgMjEuNUMxNC41IDIxLjUgMTQuNCAyMS41IDE0LjMgMjEuNEwxMy4zIDE5LjdDMTMuMiAxOS42IDEzLjMgMTkuNSAxMy40IDE5LjRMMTQuNSAxOC42VjE3LjZMMTMuNCAxNi44QzEzLjMgMTYuNyAxMy4zIDE2LjYgMTMuMyAxNi41TDE0LjMgMTQuOEMxNC40IDE0LjcgMTQuNSAxNC43IDE0LjYgMTQuN0wxNS44IDE1LjJDMTYuMSAxNSAxNi4zIDE0LjkgMTYuNiAxNC43TDE2LjggMTMuNEMxNi44IDEzLjMgMTYuOSAxMy4yIDE3LjEgMTMuMkgxOS4xQzE5LjIgMTMuMiAxOS4zIDEzLjMgMTkuMyAxMy40TDE5LjUgMTQuN0MxOS44IDE0LjggMjAuMSAxNSAyMC40IDE1LjJMMjEuNiAxNC43QzIxLjcgMTQuNyAyMS45IDE0LjcgMjEuOSAxNC44TDIyLjkgMTYuNUMyMyAxNi42IDIyLjkgMTYuNyAyMi44IDE2LjhMMjEuNyAxNy42VjE4LjZMMjIuOCAxOS40QzIyLjkgMTkuNCAyMi45IDE5LjUgMjIuOCAxOS42TTE5LjUgMThDMTkuNSAxNy4yIDE4LjggMTYuNSAxOCAxNi41UzE2LjUgMTcuMiAxNi41IDE4IDE3LjIgMTkuNSAxOCAxOS41QzE4LjggMTkuNSAxOS41IDE4LjggMTkuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZUVkaXQgPSBcIk0xMCwxOUwxMC4xNCwxOC44NkM4LjksMTguNSA4LDE3LjM2IDgsMTZBMywzIDAgMCwxIDExLDEzQzEyLjM2LDEzIDEzLjUsMTMuOSAxMy44NiwxNS4xNEwyMCw5VjdMMTYsM0g0QzIuODksMyAyLDMuOSAyLDVWMTlBMiwyIDAgMCwwIDQsMjFIMTBWMTlNNCw1SDE0VjlINFY1TTIwLjA0LDEyLjEzQzE5LjksMTIuMTMgMTkuNzYsMTIuMTkgMTkuNjUsMTIuM0wxOC42NSwxMy4zTDIwLjcsMTUuMzVMMjEuNywxNC4zNUMyMS45MiwxNC4xNCAyMS45MiwxMy43OSAyMS43LDEzLjU4TDIwLjQyLDEyLjNDMjAuMzEsMTIuMTkgMjAuMTgsMTIuMTMgMjAuMDQsMTIuMTNNMTguMDcsMTMuODhMMTIsMTkuOTRWMjJIMTQuMDZMMjAuMTIsMTUuOTNMMTguMDcsMTMuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVFZGl0T3V0bGluZSA9IFwiTTQgMTlIMTBWMjFINEMyLjg5IDIxIDIgMjAuMSAyIDE5VjVDMiAzLjkgMi44OSAzIDQgM0gxNkwyMCA3VjkuMTJMMTggMTEuMTJWNy44M0wxNS4xNyA1SDRWMTlNMTQgMTBWNkg1VjEwSDE0TTIwLjQyIDEyLjNDMjAuMzEgMTIuMTkgMjAuMTggMTIuMTMgMjAuMDQgMTIuMTNDMTkuOSAxMi4xMyAxOS43NiAxMi4xOSAxOS42NSAxMi4zTDE4LjY1IDEzLjNMMjAuNyAxNS4zNUwyMS43IDE0LjM1QzIxLjkyIDE0LjE0IDIxLjkyIDEzLjc5IDIxLjcgMTMuNThMMjAuNDIgMTIuM00xMiAxOS45NFYyMkgxNC4wNkwyMC4xMiAxNS45M0wxOC4wNyAxMy44OEwxMiAxOS45NE0xNCAxNUMxNCAxMy4zNCAxMi42NiAxMiAxMSAxMlM4IDEzLjM0IDggMTUgOS4zNCAxOCAxMSAxOEMxMS4wNCAxOCAxMS4wOCAxOCAxMS4xMyAxOEwxNCAxNS4xM0MxNCAxNS4wOSAxNCAxNS4wNSAxNCAxNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlTW92ZSA9IFwiTTE3LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDExLjgxQzExLjQyLDIwLjM0IDExLjE3LDE5LjYgMTEuMDcsMTguODRDOS41LDE4LjMxIDguNjYsMTYuNiA5LjIsMTUuMDNDOS42MSwxMy44MyAxMC43MywxMyAxMiwxM0MxMi40NCwxMyAxMi44OCwxMy4xIDEzLjI4LDEzLjI5QzE1LjU3LDExLjUgMTguODMsMTEuNTkgMjEsMTMuNTRWN0wxNywzTTE1LDlINVY1SDE1VjlNMTMsMTdIMTdWMTRMMjIsMTguNUwxNywyM1YyMEgxM1YxN1wiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlTW92ZU91dGxpbmUgPSBcIk0xMyAxN0gxN1YxNEwyMiAxOC41TDE3IDIzVjIwSDEzVjE3TTE0IDEyLjhDMTMuNSAxMi4zMSAxMi43OCAxMiAxMiAxMkMxMC4zNCAxMiA5IDEzLjM0IDkgMTVDOSAxNi4zMSA5Ljg0IDE3LjQxIDExIDE3LjgyQzExLjA3IDE1LjY3IDEyLjI3IDEzLjggMTQgMTIuOE0xMS4wOSAxOUg1VjVIMTYuMTdMMTkgNy44M1YxMi4zNUMxOS43NSAxMi42MSAyMC40MiAxMyAyMSAxMy41NFY3TDE3IDNINUMzLjg5IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjg5IDIxIDUgMjFIMTEuODFDMTEuNDYgMjAuMzkgMTEuMjEgMTkuNzIgMTEuMDkgMTlNNiAxMEgxNVY2SDZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVPZmYgPSBcIk04LjIgNUw2LjIgM0gxN0wyMSA3VjE3LjhMMTIuMiA5SDE1VjVIOC4yTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDcgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyA0Ljk3IDMgNC45MyAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTcuMTEgOUw1IDYuODlWOUg3LjExTTE0Ljg5IDE2Ljc4TDExLjIyIDEzLjExQzkuOTUgMTMuNDYgOSAxNC42MSA5IDE2QzkgMTcuNjYgMTAuMzQgMTkgMTIgMTlDMTMuMzkgMTkgMTQuNTQgMTguMDUgMTQuODkgMTYuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVPZmZPdXRsaW5lID0gXCJNOC4yIDVMNi4yIDNIMTdMMjEgN1YxNy44TDE5IDE1LjhWNy44M0wxNi4xNyA1SDguMk0xNSAxMFY2SDkuMkwxMy4yIDEwSDE1TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDcgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjg5IDIxIDMgMjAuMSAzIDE5VjVDMyA0Ljk3IDMgNC45MyAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE3LjExIDE5TDE0LjU5IDE2LjVDMTQuMDggMTcuMzkgMTMuMTIgMTggMTIgMThDMTAuMzQgMTggOSAxNi42NiA5IDE1QzkgMTMuODggOS42MSAxMi45MiAxMC41IDEyLjQxTDguMTEgMTBINlY3Ljg5TDUgNi44OVYxOUgxNy4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZU91dGxpbmUgPSBcIk0xNyAzSDVDMy44OSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY3TDE3IDNNMTkgMTlINVY1SDE2LjE3TDE5IDcuODNWMTlNMTIgMTJDMTAuMzQgMTIgOSAxMy4zNCA5IDE1UzEwLjM0IDE4IDEyIDE4IDE1IDE2LjY2IDE1IDE1IDEzLjY2IDEyIDEyIDEyTTYgNkgxNVYxMEg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVTZXR0aW5ncyA9IFwiTTE1LDhWNEg1VjhIMTVNMTIsMThBMywzIDAgMCwwIDE1LDE1QTMsMyAwIDAsMCAxMiwxMkEzLDMgMCAwLDAgOSwxNUEzLDMgMCAwLDAgMTIsMThNMTcsMkwyMSw2VjE4QTIsMiAwIDAsMSAxOSwyMEg1QzMuODksMjAgMywxOS4xIDMsMThWNEEyLDIgMCAwLDEgNSwySDE3TTExLDIySDEzVjI0SDExVjIyTTcsMjJIOVYyNEg3VjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlU2V0dGluZ3NPdXRsaW5lID0gXCJNNyAyMkg5VjI0SDdWMjJNMTEgMjJIMTNWMjRIMTFWMjJNMTUgMjJIMTdWMjRIMTVWMjJNMTcgMkg1QzMuODkgMiAzIDIuOSAzIDRWMThDMyAxOS4xIDMuODkgMjAgNSAyMEgxOUMyMC4xIDIwIDIxIDE5LjEgMjEgMThWNkwxNyAyTTE5IDE4SDVWNEgxNi4xN0wxOSA2LjgzVjE4TTEyIDExQzEwLjM0IDExIDkgMTIuMzQgOSAxNFMxMC4zNCAxNyAxMiAxNyAxNSAxNS42NiAxNSAxNCAxMy42NiAxMSAxMiAxMU02IDVIMTVWOUg2VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJhc3QgPSBcIk00LjM4LDIwLjlDMy43OCwyMC43MSAzLjMsMjAuMjMgMy4xLDE5LjYzTDE5LjYzLDMuMUMyMC4yMywzLjMgMjAuNzEsMy43OCAyMC45LDQuMzhMNC4zOCwyMC45TTIwLDE2VjE4SDEzVjE2SDIwTTMsNkg2VjNIOFY2SDExVjhIOFYxMUg2VjhIM1Y2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRyYXN0Qm94ID0gXCJNMTcsMTUuNUgxMlYxN0gxN00xOSwxOUg1TDE5LDVNNS41LDcuNUg3LjVWNS41SDlWNy41SDExVjlIOVYxMUg3LjVWOUg1LjVNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJhc3RDaXJjbGUgPSBcIk0xMiwyMEM5Ljc5LDIwIDcuNzksMTkuMSA2LjM0LDE3LjY2TDE3LjY2LDYuMzRDMTkuMSw3Ljc5IDIwLDkuNzkgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTYsOEg4VjZIOS41VjhIMTEuNVY5LjVIOS41VjExLjVIOFY5LjVINk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwxNkgxN1YxNC41SDEyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRyb2xsZXJDbGFzc2ljID0gXCJNNiw3SDE4QTUsNSAwIDAsMSAyMywxMkE1LDUgMCAwLDEgMTgsMTdDMTYuMzYsMTcgMTQuOTEsMTYuMjEgMTQsMTVIMTBDOS4wOSwxNi4yMSA3LjY0LDE3IDYsMTdBNSw1IDAgMCwxIDEsMTJBNSw1IDAgMCwxIDYsN00xOS43NSw5LjVBMS4yNSwxLjI1IDAgMCwwIDE4LjUsMTAuNzVBMS4yNSwxLjI1IDAgMCwwIDE5Ljc1LDEyQTEuMjUsMS4yNSAwIDAsMCAyMSwxMC43NUExLjI1LDEuMjUgMCAwLDAgMTkuNzUsOS41TTE3LjI1LDEyQTEuMjUsMS4yNSAwIDAsMCAxNiwxMy4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTQuNUExLjI1LDEuMjUgMCAwLDAgMTguNSwxMy4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTJNNSw5VjExSDNWMTNINVYxNUg3VjEzSDlWMTFIN1Y5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJvbGxlckNsYXNzaWNPdXRsaW5lID0gXCJNMTcuNSw3QTUuNSw1LjUgMCAwLDEgMjMsMTIuNUE1LjUsNS41IDAgMCwxIDE3LjUsMThDMTUuNzksMTggMTQuMjcsMTcuMjIgMTMuMjYsMTZIMTAuNzRDOS43MywxNy4yMiA4LjIxLDE4IDYuNSwxOEE1LjUsNS41IDAgMCwxIDEsMTIuNUE1LjUsNS41IDAgMCwxIDYuNSw3SDE3LjVNNi41LDlBMy41LDMuNSAwIDAsMCAzLDEyLjVBMy41LDMuNSAwIDAsMCA2LjUsMTZDNy45LDE2IDkuMSwxNS4xOCA5LjY2LDE0SDE0LjM0QzE0LjksMTUuMTggMTYuMSwxNiAxNy41LDE2QTMuNSwzLjUgMCAwLDAgMjEsMTIuNUEzLjUsMy41IDAgMCwwIDE3LjUsOUg2LjVNNS43NSwxMC4yNUg3LjI1VjExLjc1SDguNzVWMTMuMjVINy4yNVYxNC43NUg1Ljc1VjEzLjI1SDQuMjVWMTEuNzVINS43NVYxMC4yNU0xNi43NSwxMi41QTEsMSAwIDAsMSAxNy43NSwxMy41QTEsMSAwIDAsMSAxNi43NSwxNC41QTEsMSAwIDAsMSAxNS43NSwxMy41QTEsMSAwIDAsMSAxNi43NSwxMi41TTE4Ljc1LDEwLjVBMSwxIDAgMCwxIDE5Ljc1LDExLjVBMSwxIDAgMCwxIDE4Ljc1LDEyLjVBMSwxIDAgMCwxIDE3Ljc1LDExLjVBMSwxIDAgMCwxIDE4Ljc1LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llID0gXCJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQzIxLDExLjUgMjAuOTYsMTEgMjAuODcsMTAuNUMyMC42LDEwIDIwLDEwIDIwLDEwSDE4VjlDMTgsOCAxNyw4IDE3LDhIMTVWN0MxNSw2IDE0LDYgMTQsNkgxM1Y0QzEzLDMgMTIsMyAxMiwzTTkuNSw2QTEuNSwxLjUgMCAwLDEgMTEsNy41QTEuNSwxLjUgMCAwLDEgOS41LDlBMS41LDEuNSAwIDAsMSA4LDcuNUExLjUsMS41IDAgMCwxIDkuNSw2TTYuNSwxMEExLjUsMS41IDAgMCwxIDgsMTEuNUExLjUsMS41IDAgMCwxIDYuNSwxM0ExLjUsMS41IDAgMCwxIDUsMTEuNUExLjUsMS41IDAgMCwxIDYuNSwxME0xMS41LDExQTEuNSwxLjUgMCAwLDEgMTMsMTIuNUExLjUsMS41IDAgMCwxIDExLjUsMTRBMS41LDEuNSAwIDAsMSAxMCwxMi41QTEuNSwxLjUgMCAwLDEgMTEuNSwxMU0xNi41LDEzQTEuNSwxLjUgMCAwLDEgMTgsMTQuNUExLjUsMS41IDAgMCwxIDE2LjUsMTZIMTYuNUExLjUsMS41IDAgMCwxIDE1LDE0LjVIMTVBMS41LDEuNSAwIDAsMSAxNi41LDEzTTExLDE2QTEuNSwxLjUgMCAwLDEgMTIuNSwxNy41QTEuNSwxLjUgMCAwLDEgMTEsMTlBMS41LDEuNSAwIDAsMSA5LjUsMTcuNUExLjUsMS41IDAgMCwxIDExLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUFsZXJ0ID0gXCJNMTggMTBIMTZWOUMxNiA4IDE1IDggMTUgOEgxM1Y3QzEzIDYgMTIgNiAxMiA2SDExVjRDMTEgMyAxMCAzIDEwIDNDNSAzIDEgNyAxIDEyUzUgMjEgMTAgMjEgMTkgMTcgMTkgMTJDMTkgMTEuNSAxOSAxMSAxOC45IDEwLjVDMTguNiAxMCAxOCAxMCAxOCAxME00LjUgMTNDMy43IDEzIDMgMTIuMyAzIDExLjVTMy43IDEwIDQuNSAxMCA2IDEwLjcgNiAxMS41IDUuMyAxMyA0LjUgMTNNNiA3LjVDNiA2LjcgNi43IDYgNy41IDZTOSA2LjcgOSA3LjUgOC4zIDkgNy41IDkgNiA4LjMgNiA3LjVNOSAxOUM4LjIgMTkgNy41IDE4LjMgNy41IDE3LjVTOC4yIDE2IDkgMTYgMTAuNSAxNi43IDEwLjUgMTcuNSA5LjggMTkgOSAxOU05LjUgMTRDOC43IDE0IDggMTMuMyA4IDEyLjVTOC43IDExIDkuNSAxMSAxMSAxMS43IDExIDEyLjUgMTAuMyAxNCA5LjUgMTRNMTQuNSAxNkMxMy43IDE2IDEzIDE1LjMgMTMgMTQuNVMxMy43IDEzIDE0LjUgMTNDMTUuMyAxMyAxNiAxMy43IDE2IDE0LjVTMTUuMyAxNiAxNC41IDE2TTIxIDE1SDIzVjE3SDIxVjE1TTIzIDdWMTNIMjFWN0gyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVBbGVydE91dGxpbmUgPSBcIk0xNiAxNC41QzE2IDE1LjMgMTUuMyAxNiAxNC41IDE2UzEzIDE1LjMgMTMgMTQuNSAxMy43IDEzIDE0LjUgMTNDMTUuMyAxMyAxNiAxMy43IDE2IDE0LjVNMTguOSAxMC41QzE5IDExIDE5IDExLjUgMTkgMTJDMTkgMTcgMTUgMjEgMTAgMjFTMSAxNyAxIDEyIDUgMyAxMCAzQzEwIDMgMTEgMyAxMSA0VjZIMTJDMTIgNiAxMyA2IDEzIDdWOEgxNUMxNSA4IDE2IDggMTYgOVYxMEgxOEMxOCAxMCAxOC42IDEwIDE4LjkgMTAuNU0xNyAxMkgxNS41QzE0LjcgMTIgMTQgMTEuMyAxNCAxMC41VjEwSDEyLjVDMTEuNyAxMCAxMSA5LjMgMTEgOC41VjhIMTAuNUM5LjcgOCA5IDcuMyA5IDYuNVY1LjFDNS45IDUuNSAzLjUgOCAzLjEgMTEuMUMzLjIgMTAuNSAzLjggMTAgNC41IDEwQzUuMyAxMCA2IDEwLjcgNiAxMS41UzUuMyAxMyA0LjUgMTNDMy43IDEzIDMuMSAxMi40IDMgMTEuNkMzIDEyLjEgMyAxMi42IDMuMSAxMy4xQzMuNSAxNS44IDUuNiAxOCA4LjIgMTguN0M3LjggMTguNCA3LjUgMTggNy41IDE3LjVDNy41IDE2LjcgOC4yIDE2IDkgMTZTMTAuNSAxNi43IDEwLjUgMTcuNUMxMC41IDE4LjIgMTAgMTguOCA5LjMgMTlDMTMuNSAxOS40IDE3IDE2LjEgMTcgMTJNOS41IDExQzguNyAxMSA4IDExLjcgOCAxMi41UzguNyAxNCA5LjUgMTQgMTEgMTMuMyAxMSAxMi41IDEwLjMgMTEgOS41IDExTTkgNy41QzkgNi43IDguMyA2IDcuNSA2UzYgNi43IDYgNy41IDYuNyA5IDcuNSA5IDkgOC4zIDkgNy41TTIxIDE3SDIzVjE1SDIxVjE3TTIxIDdWMTNIMjNWN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDaGVjayA9IFwiTTE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNDMTYuOCAxMyAxNy4wOCAxMy4wOSAxNy4zMiAxMy4yNEMxNy44NSAxMy4wOSAxOC40MiAxMyAxOSAxM0MxOS42NiAxMyAyMC4zIDEzLjEyIDIwLjg5IDEzLjMyQzIwLjk2IDEyLjg5IDIxIDEyLjQ1IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNUMyMC42IDEwIDIwIDEwIDIwIDEwSDE4VjlDMTggOCAxNyA4IDE3IDhIMTVWN0MxNSA2IDE0IDYgMTQgNkgxM1Y0QzEzIDMgMTIgMyAxMiAzQzcuMDMgMyAzIDcuMDMgMyAxMlM3LjAzIDIxIDEyIDIxQzEyLjQ1IDIxIDEyLjg5IDIwLjk2IDEzLjMyIDIwLjg5QzEzLjEyIDIwLjMgMTMgMTkuNjYgMTMgMTlDMTMgMTcuMjIgMTMuNzggMTUuNjMgMTUgMTQuNTNNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xMSAxOUMxMC4xNyAxOSA5LjUgMTguMzMgOS41IDE3LjVTMTAuMTcgMTYgMTEgMTYgMTIuNSAxNi42NyAxMi41IDE3LjUgMTEuODMgMTkgMTEgMTlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIyLjUgMTcuMjVMMTcuNzUgMjJMMTUgMTlMMTYuMTYgMTcuODRMMTcuNzUgMTkuNDNMMjEuMzQgMTUuODRMMjIuNSAxNy4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDaGVja091dGxpbmUgPSBcIk0xNSAxMEgxNC41QzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzExLjkgMTkgMTIuNDYgMTkgMTMgMTguOTJDMTMgMTguOTUgMTMgMTguOTcgMTMgMTlDMTMgMTkuNjYgMTMuMTIgMjAuMyAxMy4zMiAyMC44OUMxMi44OSAyMC45NiAxMi40NSAyMSAxMiAyMUM3LjAzIDIxIDMgMTYuOTcgMyAxMlM3LjAzIDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTIuNDUgMjAuOTYgMTIuODkgMjAuODkgMTMuMzJDMjAuMyAxMy4xMiAxOS42NiAxMyAxOSAxM0MxOC45NyAxMyAxOC45NSAxMyAxOC45MiAxM0MxOC45NyAxMi42OCAxOSAxMi4zNCAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTVNMTUgMTQuNUMxNSAxNC41IDE1IDE0LjUgMTUgMTQuNTNDMTUuNjYgMTMuOTUgMTYuNDUgMTMuNSAxNy4zMiAxMy4yNEMxNy4wOCAxMy4wOSAxNi44IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0xMS41IDE0QzEyLjMzIDE0IDEzIDEzLjMzIDEzIDEyLjVTMTIuMzMgMTEgMTEuNSAxMSAxMCAxMS42NyAxMCAxMi41IDEwLjY3IDE0IDExLjUgMTRNMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNlM4IDYuNjcgOCA3LjUgOC42NyA5IDkuNSA5IDExIDguMzMgMTEgNy41TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llQ2xvY2sgPSBcIk0xOS45NyAxMC4yNEMxOS45NSAxMCAxOS45MSA5Ljc0IDE5Ljg3IDkuNUMxOS42IDkgMTkgOSAxOSA5SDE3VjhDMTcgNyAxNiA3IDE2IDdIMTRWNkMxNCA1IDEzIDUgMTMgNUgxMlYzQzEyIDIgMTEgMiAxMSAyQzYuMDMgMiAyIDYuMDMgMiAxMUMyIDE1LjcxIDUuNjIgMTkuNTcgMTAuMjMgMTkuOTZDMTEuNSAyMS44IDEzLjYxIDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2QzIzIDEzLjYxIDIxLjggMTEuNSAxOS45NyAxMC4yNE0xMS42NCAxMC41M0MxMC44NyAxMS4xNSAxMC4yMyAxMS45MiA5Ljc4IDEyLjgxQzkuMzIgMTIuNTUgOSAxMi4wNiA5IDExLjVDOSAxMC42NyA5LjY3IDEwIDEwLjUgMTBDMTAuOTYgMTAgMTEuMzYgMTAuMjEgMTEuNjQgMTAuNTNNNS41IDEyQzQuNjcgMTIgNCAxMS4zMyA0IDEwLjVTNC42NyA5IDUuNSA5IDcgOS42NyA3IDEwLjUgNi4zMyAxMiA1LjUgMTJNNyA2LjVDNyA1LjY3IDcuNjcgNSA4LjUgNVMxMCA1LjY3IDEwIDYuNSA5LjMzIDggOC41IDggNyA3LjMzIDcgNi41TTguNSAxNi41QzguNSAxNi4wNCA4LjcxIDE1LjY0IDkuMDMgMTUuMzZDOSAxNS41NyA5IDE1Ljc5IDkgMTZDOSAxNi42MiA5LjA5IDE3LjIyIDkuMjQgMTcuNzlDOC44IDE3LjUgOC41IDE3LjA1IDguNSAxNi41TTE2IDIxQzEzLjI0IDIxIDExIDE4Ljc2IDExIDE2UzEzLjI0IDExIDE2IDExIDIxIDEzLjI0IDIxIDE2IDE4Ljc2IDIxIDE2IDIxTTE2LjUgMTYuMjVMMTkuMzYgMTcuOTRMMTguNjEgMTkuMTZMMTUgMTdWMTJIMTYuNVYxNi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDbG9ja091dGxpbmUgPSBcIk04LjUgOEM3LjY3IDggNyA3LjMzIDcgNi41UzcuNjcgNSA4LjUgNSAxMCA1LjY3IDEwIDYuNSA5LjMzIDggOC41IDhNMTYuNSAxMkgxNVYxN0wxOC42MSAxOS4xNkwxOS4zNiAxNy45NEwxNi41IDE2LjI1VjEyTTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzEzLjYxIDIzIDExLjUgMjEuOCAxMC4yMyAxOS45NkM1LjYyIDE5LjU3IDIgMTUuNzEgMiAxMUMyIDYuMDMgNi4wMyAyIDExIDJDMTEgMiAxMiAyIDEyIDNWNUgxM0MxMyA1IDE0IDUgMTQgNlY3SDE2QzE2IDcgMTcgNyAxNyA4VjlIMTlDMTkgOSAxOS42IDkgMTkuODcgOS41QzE5LjkxIDkuNzQgMTkuOTUgMTAgMTkuOTcgMTAuMjRDMjEuOCAxMS41IDIzIDEzLjYxIDIzIDE2TTkuMTYgMTcuNzRDOC43NiAxNy40NyA4LjUgMTcgOC41IDE2LjVDOC41IDE2LjA0IDguNzEgMTUuNjQgOS4wMyAxNS4zNkM5LjEyIDE0LjQ1IDkuMzggMTMuNTkgOS43OCAxMi44MUM5LjMyIDEyLjU1IDkgMTIuMDYgOSAxMS41QzkgMTAuNjcgOS42NyAxMCAxMC41IDEwQzEwLjk2IDEwIDExLjM2IDEwLjIxIDExLjY0IDEwLjUzQzEyLjU5IDkuNzcgMTMuNzQgOS4yNiAxNSA5LjA4VjlIMTMuNUMxMi42NyA5IDEyIDguMzMgMTIgNy41VjdIMTEuNUMxMC42NyA3IDEwIDYuMzMgMTAgNS41VjQuMDdDNi45MSA0LjUgNC40NyA3IDQuMDcgMTAuMDhDNC4yNSA5LjQ2IDQuODIgOSA1LjUgOUM2LjMzIDkgNyA5LjY3IDcgMTAuNVM2LjMzIDEyIDUuNSAxMkM0LjcxIDEyIDQuMDcgMTEuMzkgNCAxMC42MkM0IDExLjExIDQgMTEuNjEgNC4wOSAxMi4xMkM0LjUgMTQuODEgNi41NCAxNy4wNCA5LjE2IDE3Ljc0TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUNvZyA9IFwiTTIxIDEyLjI5QzIxIDEyLjE5IDIxIDEyLjEgMjEgMTJDMjEgMTEuNSAyMC45NiAxMSAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuMSAyMSAxMi4xOSAyMSAxMi4yOSAyMUMxMi4xMSAyMC4zNiAxMiAxOS42OSAxMiAxOUMxMiAxOC44NiAxMiAxOC43MyAxMiAxOC41OUMxMS43NSAxOC44NCAxMS40IDE5IDExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNkMxMS41OSAxNiAxMi4xIDE2LjM1IDEyLjM0IDE2Ljg0QzEzLjI1IDE0LjAzIDE1Ljg5IDEyIDE5IDEyQzE5LjY5IDEyIDIwLjM2IDEyLjExIDIxIDEyLjI5TTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTkuNSA5QzguNjcgOSA4IDguMzMgOCA3LjVTOC42NyA2IDkuNSA2IDExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIyLjcgMTkuNlYxOC42TDIzLjggMTcuOEMyMy45IDE3LjcgMjQgMTcuNiAyMy45IDE3LjVMMjIuOSAxNS44QzIyLjkgMTUuNyAyMi43IDE1LjcgMjIuNiAxNS43TDIxLjQgMTYuMkMyMS4xIDE2IDIwLjggMTUuOCAyMC41IDE1LjdMMjAuMyAxNC40QzIwLjMgMTQuMyAyMC4yIDE0LjIgMjAuMSAxNC4ySDE4LjFDMTcuOSAxNC4yIDE3LjggMTQuMyAxNy44IDE0LjRMMTcuNiAxNS43QzE3LjMgMTUuOSAxNy4xIDE2IDE2LjggMTYuMkwxNS42IDE1LjdDMTUuNSAxNS43IDE1LjQgMTUuNyAxNS4zIDE1LjhMMTQuMyAxNy41QzE0LjMgMTcuNiAxNC4zIDE3LjcgMTQuNCAxNy44TDE1LjUgMTguNlYxOS42TDE0LjQgMjAuNEMxNC4zIDIwLjUgMTQuMiAyMC42IDE0LjMgMjAuN0wxNS4zIDIyLjRDMTUuNCAyMi41IDE1LjUgMjIuNSAxNS42IDIyLjVMMTYuOCAyMkMxNyAyMi4yIDE3LjMgMjIuNCAxNy42IDIyLjVMMTcuOCAyMy44QzE3LjkgMjMuOSAxOCAyNCAxOC4xIDI0SDIwLjFDMjAuMiAyNCAyMC4zIDIzLjkgMjAuMyAyMy44TDIwLjUgMjIuNUMyMC44IDIyLjMgMjEgMjIuMiAyMS4zIDIyTDIyLjUgMjIuNEMyMi42IDIyLjQgMjIuNyAyMi40IDIyLjggMjIuM0wyMy44IDIwLjZDMjMuOSAyMC41IDIzLjkgMjAuNCAyMy44IDIwLjRMMjIuNyAxOS42TTE5IDIwLjVDMTguMiAyMC41IDE3LjUgMTkuOCAxNy41IDE5UzE4LjIgMTcuNSAxOSAxNy41IDIwLjUgMTguMiAyMC41IDE5IDE5LjggMjAuNSAxOSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUNvZ091dGxpbmUgPSBcIk0xNC41IDEwQzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNkMxMS41OSAxNiAxMi4xIDE2LjM1IDEyLjM0IDE2Ljg0QzEyLjE2IDE3LjM5IDEyLjA2IDE3Ljk3IDEyIDE4LjU3QzExLjgzIDE4Ljc2IDExLjYgMTguOSAxMS4zMiAxOC45NkMxMS41NSAxOSAxMS43OCAxOSAxMiAxOVYxOUMxMiAxOS42OSAxMi4xMSAyMC4zNiAxMi4yOSAyMUMxMi4xOSAyMSAxMi4xIDIxIDEyIDIxQzcuMDMgMjEgMyAxNi45NyAzIDEyUzcuMDMgMyAxMiAzQzEyIDMgMTMgMyAxMyA0VjZIMTRDMTQgNiAxNSA2IDE1IDdWOEgxN0MxNyA4IDE4IDggMTggOVYxMEgyMEMyMCAxMCAyMC42IDEwIDIwLjg3IDEwLjVDMjAuOTYgMTEgMjEgMTEuNSAyMSAxMkMyMSAxMi4xIDIxIDEyLjE5IDIxIDEyLjI5QzIwLjM2IDEyLjExIDE5LjY5IDEyIDE5IDEySDE3LjVDMTYuNjcgMTIgMTYgMTEuMzMgMTYgMTAuNVYxMEgxNC41TTExLjUgMTFDMTAuNjcgMTEgMTAgMTEuNjcgMTAgMTIuNVMxMC42NyAxNCAxMS41IDE0IDEzIDEzLjMzIDEzIDEyLjUgMTIuMzMgMTEgMTEuNSAxMU0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llRWRpdCA9IFwiTTE1LjEgMTUuMDNDMTUuMDQgMTQuODYgMTUgMTQuNjkgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzQzE2LjY5IDEzIDE2Ljg2IDEzLjA0IDE3LjAzIDEzLjFMMTkuMzkgMTAuNzRDMTkuNjkgMTAuNDQgMjAuMDUgMTAuMjQgMjAuNDQgMTAuMTJDMjAuMjEgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyQzMgMTYuNjMgNi41IDIwLjQ0IDExIDIwLjk0VjE5LjEzTDExLjE0IDE5QzExLjEgMTkgMTEuMDUgMTkgMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41QzEyLjUgMTcuNTUgMTIuNSAxNy42IDEyLjUgMTcuNjRMMTUuMSAxNS4wM002LjUgMTNDNS42NyAxMyA1IDEyLjMzIDUgMTEuNVM1LjY3IDEwIDYuNSAxMCA4IDEwLjY3IDggMTEuNSA3LjMzIDEzIDYuNSAxM005LjUgOUM4LjY3IDkgOCA4LjMzIDggNy41UzguNjcgNiA5LjUgNiAxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMi44NSAxNC4xOUwyMS44NyAxNS4xN0wxOS44MyAxMy4xM0wyMC44MSAxMi4xNUMyMSAxMS45NSAyMS4zMyAxMS45NSAyMS41MyAxMi4xNUwyMi44NSAxMy40N0MyMy4wNSAxMy42NyAyMy4wNSAxNCAyMi44NSAxNC4xOU0xOS4xMyAxMy44M0wyMS4xNyAxNS44N0wxNS4wNCAyMkgxM1YxOS45NkwxOS4xMyAxMy44M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVFZGl0T3V0bGluZSA9IFwiTTkuNSA2QzEwLjMzIDYgMTEgNi42NyAxMSA3LjVTMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjUgOC42NyA2IDkuNSA2TTExLjUgMTFDMTAuNjcgMTEgMTAgMTEuNjcgMTAgMTIuNVMxMC42NyAxNCAxMS41IDE0IDEzIDEzLjMzIDEzIDEyLjUgMTIuMzMgMTEgMTEuNSAxMU0xMSAxNkMxMC4xNyAxNiA5LjUgMTYuNjcgOS41IDE3LjVDOS41IDE4IDkuNzYgMTguNDcgMTAuMTYgMTguNzRDNy41NCAxOC4wNCA1LjUgMTUuODEgNS4wOSAxMy4xMkM1IDEyLjYxIDUgMTIuMTEgNSAxMS42MkM1LjA3IDEyLjM5IDUuNzEgMTMgNi41IDEzQzcuMzMgMTMgOCAxMi4zMyA4IDExLjVTNy4zMyAxMCA2LjUgMTBDNS44MiAxMCA1LjI1IDEwLjQ2IDUuMDcgMTEuMDhDNS40NyA4IDcuOTEgNS41IDExIDUuMDdWNi41QzExIDcuMzMgMTEuNjcgOCAxMi41IDhIMTNWOC41QzEzIDkuMzMgMTMuNjcgMTAgMTQuNSAxMEgxNlYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTguMTNMMTkuMzkgMTAuNzRDMTkuNjkgMTAuNDQgMjAuMDUgMTAuMjQgMjAuNDQgMTAuMTJDMjAuMjEgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyQzMgMTYuNjMgNi41IDIwLjQ0IDExIDIwLjk0VjE5LjEzTDEyLjQ3IDE3LjY2QzEyLjUgMTcuNiAxMi41IDE3LjU1IDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2TTE1IDE0LjVDMTUgMTQuNjkgMTUuMDQgMTQuODYgMTUuMSAxNS4wM0wxNy4wMyAxMy4xQzE2Ljg2IDEzLjA0IDE2LjY5IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N00xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVMb2NrID0gXCJNMTguNSAxMUMxOS40MiAxMSAyMC4yNyAxMS4yOSAyMSAxMS43N0MyMSAxMS4zNSAyMC45NSAxMC45MiAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjcgMjEgMTMgMjAuOTRWMTdDMTMgMTYuMDggMTMuNDIgMTUuMjYgMTQuMDcgMTQuNzFDMTQuNDUgMTIuNiAxNi4yOSAxMSAxOC41IDExTTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTggNy41QzggNi42NyA4LjY3IDYgOS41IDZTMTEgNi42NyAxMSA3LjUgMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjVNMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41IDExLjgzIDE5IDExIDE5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMSAxNlYxNS41QzIxIDE0LjEyIDE5Ljg4IDEzIDE4LjUgMTNTMTYgMTQuMTIgMTYgMTUuNVYxNkMxNS40NSAxNiAxNSAxNi40NSAxNSAxN1YyMUMxNSAyMS41NSAxNS40NSAyMiAxNiAyMkgyMUMyMS41NSAyMiAyMiAyMS41NSAyMiAyMVYxN0MyMiAxNi40NSAyMS41NSAxNiAyMSAxNk0yMCAxNkgxN1YxNS41QzE3IDE0LjY3IDE3LjY3IDE0IDE4LjUgMTRTMjAgMTQuNjcgMjAgMTUuNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVMb2NrT3V0bGluZSA9IFwiTTEwIDEyLjVDMTAgMTEuNjcgMTAuNjcgMTEgMTEuNSAxMVMxMyAxMS42NyAxMyAxMi41IDEyLjMzIDE0IDExLjUgMTQgMTAgMTMuMzMgMTAgMTIuNU0xNiAxMFYxMC41QzE2IDEwLjkgMTYuMTYgMTEuMjYgMTYuNDEgMTEuNTNDMTcuMDQgMTEuMiAxNy43NSAxMSAxOC41IDExQzE5LjQyIDExIDIwLjI3IDExLjI5IDIxIDExLjc3QzIxIDExLjM1IDIwLjk1IDEwLjkyIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4zNCAyMSAxMi42NyAyMSAxMyAyMC45NFYxOC45MkMxMi40NiAxOSAxMS45IDE5IDExLjMyIDE4Ljk2QzEyIDE4LjgyIDEyLjUgMTguMjIgMTIuNSAxNy41QzEyLjUgMTYuNjcgMTEuODMgMTYgMTEgMTZTOS41IDE2LjY3IDkuNSAxNy41QzkuNSAxOCA5Ljc2IDE4LjQ3IDEwLjE2IDE4Ljc0QzcuNTQgMTguMDQgNS41IDE1LjgxIDUuMDkgMTMuMTJDNSAxMi42MSA1IDEyLjExIDUgMTEuNjJDNS4wNyAxMi4zOSA1LjcxIDEzIDYuNSAxM0M3LjMzIDEzIDggMTIuMzMgOCAxMS41UzcuMzMgMTAgNi41IDEwQzUuODIgMTAgNS4yNSAxMC40NiA1LjA3IDExLjA4QzUuNDcgOCA3LjkxIDUuNSAxMSA1LjA3VjYuNUMxMSA3LjMzIDExLjY3IDggMTIuNSA4SDEzVjguNUMxMyA5LjMzIDEzLjY3IDEwIDE0LjUgMTBIMTZNMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNlM4IDYuNjcgOCA3LjUgOC42NyA5IDkuNSA5IDExIDguMzMgMTEgNy41TTIyIDE3VjIxQzIyIDIxLjU1IDIxLjU1IDIyIDIxIDIySDE2QzE1LjQ1IDIyIDE1IDIxLjU1IDE1IDIxVjE3QzE1IDE2LjQ1IDE1LjQ1IDE2IDE2IDE2VjE1LjVDMTYgMTQuMTIgMTcuMTIgMTMgMTguNSAxM1MyMSAxNC4xMiAyMSAxNS41VjE2QzIxLjU1IDE2IDIyIDE2LjQ1IDIyIDE3TTIwIDE1LjVDMjAgMTQuNjcgMTkuMzMgMTQgMTguNSAxNFMxNyAxNC42NyAxNyAxNS41VjE2SDIwVjE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llTWludXMgPSBcIk0xNSAxNC41M0MxNSAxNC41IDE1IDE0LjUgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTcuODUgMTMuMDkgMTguNDIgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE3LjIyIDEzLjc4IDE1LjYzIDE1IDE0LjUzTTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTggNy41QzggNi42NyA4LjY3IDYgOS41IDZTMTEgNi42NyAxMSA3LjUgMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjVNMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41IDExLjgzIDE5IDExIDE5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMyAxOFYyMEgxNVYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVNaW51c091dGxpbmUgPSBcIk0xNSAxMEgxNC41QzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzExLjkgMTkgMTIuNDYgMTkgMTMgMTguOTJDMTMgMTguOTUgMTMgMTguOTcgMTMgMTlDMTMgMTkuNjYgMTMuMTIgMjAuMyAxMy4zMiAyMC44OUMxMi44OSAyMC45NiAxMi40NSAyMSAxMiAyMUM3LjAzIDIxIDMgMTYuOTcgMyAxMlM3LjAzIDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTIuNDUgMjAuOTYgMTIuODkgMjAuODkgMTMuMzJDMjAuMyAxMy4xMiAxOS42NiAxMyAxOSAxM0MxOC45NyAxMyAxOC45NSAxMyAxOC45MiAxM0MxOC45NyAxMi42OCAxOSAxMi4zNCAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTVNMTUgMTQuNUMxNSAxNC41IDE1IDE0LjUgMTUgMTQuNTNDMTUuNjYgMTMuOTUgMTYuNDUgMTMuNSAxNy4zMiAxMy4yNEMxNy4wOCAxMy4wOSAxNi44IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMTEuNSAxNEMxMi4zMyAxNCAxMyAxMy4zMyAxMyAxMi41UzEyLjMzIDExIDExLjUgMTEgMTAgMTEuNjcgMTAgMTIuNSAxMC42NyAxNCAxMS41IDE0TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZU9mZiA9IFwiTTkuMjUgNi4wNUw3LjQ1IDQuMjVDOC43OSAzLjQ2IDEwLjM0IDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTMuNjYgMjAuNTQgMTUuMjIgMTkuNzUgMTYuNTVMMTcuOTUgMTQuNzVDMTcuOTcgMTQuNjcgMTggMTQuNTkgMTggMTQuNUMxOCAxMy42NyAxNy4zMyAxMyAxNi41IDEzQzE2LjQxIDEzIDE2LjMzIDEzLjAzIDE2LjI1IDEzLjA1TDEwLjk1IDcuNzVDMTAuOTcgNy42NyAxMSA3LjU5IDExIDcuNUMxMSA2LjY3IDEwLjMzIDYgOS41IDZDOS40MSA2IDkuMzMgNi4wMyA5LjI1IDYuMDVNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTcuMzQgMTkuMjNDMTUuODUgMjAuMzQgMTQgMjEgMTIgMjFDNy4wMyAyMSAzIDE2Ljk3IDMgMTJDMyAxMCAzLjY2IDguMTUgNC43NyA2LjY2TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNOCAxMS41QzggMTAuNjcgNy4zMyAxMCA2LjUgMTBTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjVNMTAgMTIuNUMxMCAxMy4zMyAxMC42NyAxNCAxMS41IDE0QzExLjY4IDE0IDExLjg1IDEzLjk2IDEyIDEzLjlMMTAuMSAxMkMxMC4wNCAxMi4xNSAxMCAxMi4zMiAxMCAxMi41TTEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNSAxMC4xNyAxOSAxMSAxOSAxMi41IDE4LjMzIDEyLjUgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVPZmZPdXRsaW5lID0gXCJNOC45MyA1LjczTDcuNDUgNC4yNUM4Ljc5IDMuNDYgMTAuMzQgMyAxMiAzQzEyIDMgMTMgMyAxMyA0VjZIMTRDMTQgNiAxNSA2IDE1IDdWOEgxN0MxNyA4IDE4IDggMTggOVYxMEgyMEMyMCAxMCAyMC42IDEwIDIwLjg3IDEwLjVDMjAuOTYgMTEgMjEgMTEuNSAyMSAxMkMyMSAxMy42NiAyMC41NCAxNS4yMiAxOS43NSAxNi41NUwxOC4yOCAxNS4wOEMxOC43NCAxNC4xNSAxOSAxMy4xMSAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTQuNUMxMy42NyAxMCAxMyA5LjMzIDEzIDguNVY4SDEyLjVDMTEuNjcgOCAxMSA3LjMzIDExIDYuNVY1LjA3QzEwLjI2IDUuMTggOS41NyA1LjQxIDguOTMgNS43M005LjI1IDYuMDVMMTAuOTUgNy43NUMxMC45NyA3LjY3IDExIDcuNTkgMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNkM5LjQxIDYgOS4zMyA2LjAzIDkuMjUgNi4wNU0xNi4yNSAxMy4wNUwxNy45NSAxNC43NUMxNy45NyAxNC42NyAxOCAxNC41OSAxOCAxNC41QzE4IDEzLjY3IDE3LjMzIDEzIDE2LjUgMTNDMTYuNDEgMTMgMTYuMzMgMTMuMDMgMTYuMjUgMTMuMDVNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTcuMzQgMTkuMjNDMTUuODUgMjAuMzQgMTQgMjEgMTIgMjFDNy4wMyAyMSAzIDE2Ljk3IDMgMTJDMyAxMCAzLjY2IDguMTUgNC43NyA2LjY2TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNMTUuOSAxNy43OUwxMiAxMy45QzExLjg1IDEzLjk2IDExLjY4IDE0IDExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNUMxMCAxMi4zMiAxMC4wNCAxMi4xNSAxMC4xIDEyTDYuMjEgOC4xQzUuNjIgOSA1LjIxIDEwIDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzEzLjAzIDE5LjEyIDE0LjYxIDE4LjY2IDE1LjkgMTcuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llT3V0bGluZSA9IFwiTTIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJDMyAxNi45NyA3LjAzIDIxIDEyIDIxQzE2Ljk3IDIxIDIxIDE2Ljk3IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNU0xMS4zMiAxOC45NkMxMiAxOC44MiAxMi41IDE4LjIyIDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNUM5LjUgMTggOS43NiAxOC40NyAxMC4xNiAxOC43NEM3LjU0IDE4LjA0IDUuNSAxNS44MSA1LjA5IDEzLjEyQzUgMTIuNjEgNSAxMi4xMSA1IDExLjYyQzUuMDcgMTIuMzkgNS43MSAxMyA2LjUgMTNDNy4zMyAxMyA4IDEyLjMzIDggMTEuNVM3LjMzIDEwIDYuNSAxMEM1LjgyIDEwIDUuMjUgMTAuNDYgNS4wNyAxMS4wOEM1LjQ3IDggNy45MSA1LjUgMTEgNS4wN1Y2LjVDMTEgNy4zMyAxMS42NyA4IDEyLjUgOEgxM1Y4LjVDMTMgOS4zMyAxMy42NyAxMCAxNC41IDEwSDE2VjEwLjVDMTYgMTEuMzMgMTYuNjcgMTIgMTcuNSAxMkgxOUMxOSAxNi4wOCAxNS41IDE5LjM2IDExLjMyIDE4Ljk2TTkuNSA5QzguNjcgOSA4IDguMzMgOCA3LjVTOC42NyA2IDkuNSA2IDExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDlNMTMgMTIuNUMxMyAxMy4zMyAxMi4zMyAxNCAxMS41IDE0UzEwIDEzLjMzIDEwIDEyLjUgMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41TTE4IDE0LjVDMTggMTUuMzMgMTcuMzMgMTYgMTYuNSAxNlMxNSAxNS4zMyAxNSAxNC41IDE1LjY3IDEzIDE2LjUgMTMgMTggMTMuNjcgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVQbHVzID0gXCJNMTUgMTQuNTNDMTUgMTQuNSAxNSAxNC41IDE1IDE0LjVDMTUgMTMuNjcgMTUuNjcgMTMgMTYuNSAxM0MxNi44IDEzIDE3LjA4IDEzLjA5IDE3LjMyIDEzLjI0QzE3Ljg1IDEzLjA5IDE4LjQyIDEzIDE5IDEzQzE5LjY2IDEzIDIwLjMgMTMuMTIgMjAuODkgMTMuMzJDMjAuOTYgMTIuODkgMjEgMTIuNDUgMjEgMTJDMjEgMTEuNSAyMC45NiAxMSAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuNDUgMjEgMTIuODkgMjAuOTYgMTMuMzIgMjAuODlDMTMuMTIgMjAuMyAxMyAxOS42NiAxMyAxOUMxMyAxNy4yMiAxMy43OCAxNS42MyAxNSAxNC41M002LjUgMTNDNS42NyAxMyA1IDEyLjMzIDUgMTEuNVM1LjY3IDEwIDYuNSAxMCA4IDEwLjY3IDggMTEuNSA3LjMzIDEzIDYuNSAxM004IDcuNUM4IDYuNjcgOC42NyA2IDkuNSA2UzExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDkgOCA4LjMzIDggNy41TTExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNiAxMi41IDE2LjY3IDEyLjUgMTcuNSAxMS44MyAxOSAxMSAxOU0xMS41IDE0QzEwLjY3IDE0IDEwIDEzLjMzIDEwIDEyLjVTMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41IDEyLjMzIDE0IDExLjUgMTRNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llUGx1c091dGxpbmUgPSBcIk0xNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTYuNDUgMTMuNSAxNS42NiAxMy45NSAxNSAxNC41M0MxNSAxNC41IDE1IDE0LjUgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzTTE2IDEwVjEwLjVDMTYgMTEuMzMgMTYuNjcgMTIgMTcuNSAxMkgxOUMxOSAxMi4zNCAxOC45NyAxMi42OCAxOC45MiAxM0MxOC45NSAxMyAxOC45NyAxMyAxOSAxM0MxOS42NiAxMyAyMC4zIDEzLjEyIDIwLjg5IDEzLjMyQzIwLjk2IDEyLjg5IDIxIDEyLjQ1IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNUMyMC42IDEwIDIwIDEwIDIwIDEwSDE4VjlDMTggOCAxNyA4IDE3IDhIMTVWN0MxNSA2IDE0IDYgMTQgNkgxM1Y0QzEzIDMgMTIgMyAxMiAzQzcuMDMgMyAzIDcuMDMgMyAxMlM3LjAzIDIxIDEyIDIxQzEyLjQ1IDIxIDEyLjg5IDIwLjk2IDEzLjMyIDIwLjg5QzEzLjEyIDIwLjMgMTMgMTkuNjYgMTMgMTlDMTMgMTguOTcgMTMgMTguOTUgMTMgMTguOTJDMTIuNDYgMTkgMTEuOSAxOSAxMS4zMiAxOC45NkMxMiAxOC44MiAxMi41IDE4LjIyIDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNUM5LjUgMTggOS43NiAxOC40NyAxMC4xNiAxOC43NEM3LjU0IDE4LjA0IDUuNSAxNS44MSA1LjA5IDEzLjEyQzUgMTIuNjEgNSAxMi4xMSA1IDExLjYyQzUuMDcgMTIuMzkgNS43MSAxMyA2LjUgMTNDNy4zMyAxMyA4IDEyLjMzIDggMTEuNVM3LjMzIDEwIDYuNSAxMEM1LjgyIDEwIDUuMjUgMTAuNDYgNS4wNyAxMS4wOEM1LjQ3IDggNy45MSA1LjUgMTEgNS4wN1Y2LjVDMTEgNy4zMyAxMS42NyA4IDEyLjUgOEgxM1Y4LjVDMTMgOS4zMyAxMy42NyAxMCAxNC41IDEwSDE2TTExLjUgMTRDMTIuMzMgMTQgMTMgMTMuMzMgMTMgMTIuNVMxMi4zMyAxMSAxMS41IDExIDEwIDExLjY3IDEwIDEyLjUgMTAuNjcgMTQgMTEuNSAxNE0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMjAgMThWMTVIMThWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llUmVmcmVzaCA9IFwiTTExIDE2QzExLjUzIDE2IDEyIDE2LjI4IDEyLjI2IDE2LjY5QzEzLjA0IDE0IDE1LjU0IDEyIDE4LjUgMTJDMTkuMzggMTIgMjAuMjEgMTIuMTggMjEgMTIuNUMyMSAxMi4zMyAyMSAxMi4xNyAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4xNyAyMSAxMi4zMyAyMSAxMi41IDIxQzEyLjE5IDIwLjI0IDEyIDE5LjQ0IDEyIDE4LjYxQzExLjc0IDE4Ljg1IDExLjM5IDE5IDExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNk0xMyAxMi41QzEzIDEzLjMzIDEyLjMzIDE0IDExLjUgMTRTMTAgMTMuMzMgMTAgMTIuNSAxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjVNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xOCAxOC41TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41UzE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVTMTUuNzkgMTQuNSAxOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVJlZnJlc2hPdXRsaW5lID0gXCJNMTMgMTIuNUMxMyAxMy4zMyAxMi4zMyAxNCAxMS41IDE0UzEwIDEzLjMzIDEwIDEyLjUgMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41TTExIDcuNUMxMSA2LjY3IDEwLjMzIDYgOS41IDZTOCA2LjY3IDggNy41IDguNjcgOSA5LjUgOSAxMSA4LjMzIDExIDcuNU0xNSAxMEgxNlYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTlMMTkgMTIuMDNDMTkuNjkgMTIuMDkgMjAuMzYgMTIuMjQgMjEgMTIuNUMyMSAxMi4zMyAyMSAxMi4xNyAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4xNyAyMSAxMi4zMyAyMSAxMi41IDIxQzEyLjI0IDIwLjM2IDEyLjA5IDE5LjY5IDEyLjAzIDE5QzExLjggMTkgMTEuNTYgMTkgMTEuMzIgMTguOTZDMTEuNTkgMTguOSAxMS44MSAxOC43NiAxMiAxOC41OEMxMiAxOC41NSAxMiAxOC41MyAxMiAxOC41QzEyIDE3Ljg3IDEyLjEgMTcuMjcgMTIuMjYgMTYuNjlDMTIgMTYuMjggMTEuNTMgMTYgMTEgMTZDMTAuMTcgMTYgOS41IDE2LjY3IDkuNSAxNy41QzkuNSAxOCA5Ljc2IDE4LjQ3IDEwLjE2IDE4Ljc0QzcuNTQgMTguMDQgNS41IDE1LjgxIDUuMDkgMTMuMTJDNSAxMi42MSA1IDEyLjExIDUgMTEuNjJDNS4wNyAxMi4zOSA1LjcxIDEzIDYuNSAxM0M3LjMzIDEzIDggMTIuMzMgOCAxMS41UzcuMzMgMTAgNi41IDEwQzUuODIgMTAgNS4yNSAxMC40NiA1LjA3IDExLjA4QzUuNDcgOCA3LjkxIDUuNSAxMSA1LjA3VjYuNUMxMSA3LjMzIDExLjY3IDggMTIuNSA4SDEzVjguNUMxMyA5LjMzIDEzLjY3IDEwIDE0LjUgMTBIMTVNMjIgMTguNVYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVSZW1vdmUgPSBcIk0xNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTcuODUgMTMuMDkgMTguNDIgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE3LjIyIDEzLjc4IDE1LjYzIDE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xMSAxOUMxMC4xNyAxOSA5LjUgMTguMzMgOS41IDE3LjVTMTAuMTcgMTYgMTEgMTYgMTIuNSAxNi42NyAxMi41IDE3LjUgMTEuODMgMTkgMTEgMTlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVJlbW92ZU91dGxpbmUgPSBcIk0xNy4zMiAxMy4yNEMxNi40NSAxMy41IDE1LjY2IDEzLjk1IDE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNDMTYuOCAxMyAxNy4wOCAxMy4wOSAxNy4zMiAxMy4yNE0xNiAxMFYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTlDMTkgMTIuMzQgMTguOTcgMTIuNjggMTguOTIgMTNDMTguOTUgMTMgMTguOTcgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE4Ljk3IDEzIDE4Ljk1IDEzIDE4LjkyQzEyLjQ2IDE5IDExLjkgMTkgMTEuMzIgMTguOTZDMTIgMTguODIgMTIuNSAxOC4yMiAxMi41IDE3LjVDMTIuNSAxNi42NyAxMS44MyAxNiAxMSAxNlM5LjUgMTYuNjcgOS41IDE3LjVDOS41IDE4IDkuNzYgMTguNDcgMTAuMTYgMTguNzRDNy41NCAxOC4wNCA1LjUgMTUuODEgNS4wOSAxMy4xMkM1IDEyLjYxIDUgMTIuMTEgNSAxMS42MkM1LjA3IDEyLjM5IDUuNzEgMTMgNi41IDEzQzcuMzMgMTMgOCAxMi4zMyA4IDExLjVTNy4zMyAxMCA2LjUgMTBDNS44MiAxMCA1LjI1IDEwLjQ2IDUuMDcgMTEuMDhDNS40NyA4IDcuOTEgNS41IDExIDUuMDdWNi41QzExIDcuMzMgMTEuNjcgOCAxMi41IDhIMTNWOC41QzEzIDkuMzMgMTMuNjcgMTAgMTQuNSAxMEgxNk0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMTEuNSAxNEMxMi4zMyAxNCAxMyAxMy4zMyAxMyAxMi41UzEyLjMzIDExIDExLjUgMTEgMTAgMTEuNjcgMTAgMTIuNSAxMC42NyAxNCAxMS41IDE0TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVNldHRpbmdzID0gXCJNMjAuODcgOS41QzIwLjYgOSAyMCA5IDIwIDlIMThWOEMxOCA3IDE3IDcgMTcgN0gxNVY2QzE1IDUgMTQgNSAxNCA1SDEzVjNDMTMgMiAxMiAyIDEyIDJDNy4wMyAyIDMgNi4wMyAzIDExUzcuMDMgMjAgMTIgMjAgMjEgMTUuOTcgMjEgMTFDMjEgMTAuNSAyMC45NiAxMCAyMC44NyA5LjVNNi41IDEyQzUuNjcgMTIgNSAxMS4zMyA1IDEwLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJNOCA2LjVDOCA1LjY3IDguNjcgNSA5LjUgNVMxMSA1LjY3IDExIDYuNSAxMC4zMyA4IDkuNSA4IDggNy4zMyA4IDYuNU0xMSAxOEMxMC4xNyAxOCA5LjUgMTcuMzMgOS41IDE2LjVTMTAuMTcgMTUgMTEgMTUgMTIuNSAxNS42NyAxMi41IDE2LjUgMTEuODMgMTggMTEgMThNMTEuNSAxM0MxMC42NyAxMyAxMCAxMi4zMyAxMCAxMS41UzEwLjY3IDEwIDExLjUgMTAgMTMgMTAuNjcgMTMgMTEuNSAxMi4zMyAxMyAxMS41IDEzTTE2LjUgMTVDMTUuNjcgMTUgMTUgMTQuMzMgMTUgMTMuNVMxNS42NyAxMiAxNi41IDEyIDE4IDEyLjY3IDE4IDEzLjUgMTcuMzMgMTUgMTYuNSAxNU03IDIySDlWMjRIN1YyMk0xMSAyMkgxM1YyNEgxMVYyMk0xNSAyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVTZXR0aW5nc091dGxpbmUgPSBcIk0xMyAxMS41QzEzIDEyLjMzIDEyLjMzIDEzIDExLjUgMTNTMTAgMTIuMzMgMTAgMTEuNSAxMC42NyAxMCAxMS41IDEwIDEzIDEwLjY3IDEzIDExLjVNMTEgNi41QzExIDUuNjcgMTAuMzMgNSA5LjUgNVM4IDUuNjcgOCA2LjUgOC42NyA4IDkuNSA4IDExIDcuMzMgMTEgNi41TTIxIDExQzIxIDE1Ljk3IDE2Ljk3IDIwIDEyIDIwUzMgMTUuOTcgMyAxMSA3LjAzIDIgMTIgMkMxMiAyIDEzIDIgMTMgM1Y1SDE0QzE0IDUgMTUgNSAxNSA2VjdIMTdDMTcgNyAxOCA3IDE4IDhWOUgyMEMyMCA5IDIwLjYgOSAyMC44NyA5LjVDMjAuOTYgMTAgMjEgMTAuNSAyMSAxMU0xOSAxMUgxNy41QzE2LjY3IDExIDE2IDEwLjMzIDE2IDkuNVY5SDE0LjVDMTMuNjcgOSAxMyA4LjMzIDEzIDcuNVY3SDEyLjVDMTEuNjcgNyAxMSA2LjMzIDExIDUuNVY0LjA3QzcuOTEgNC41IDUuNDcgNyA1LjA3IDEwLjA4QzUuMjUgOS40NiA1LjgyIDkgNi41IDlDNy4zMyA5IDggOS42NyA4IDEwLjVTNy4zMyAxMiA2LjUgMTJDNS43MSAxMiA1LjA3IDExLjM5IDUgMTAuNjJDNSAxMS4xMSA1IDExLjYxIDUuMDkgMTIuMTJDNS41IDE0LjgxIDcuNTQgMTcuMDQgMTAuMTYgMTcuNzRDOS43NiAxNy40NyA5LjUgMTcgOS41IDE2LjVDOS41IDE1LjY3IDEwLjE3IDE1IDExIDE1UzEyLjUgMTUuNjcgMTIuNSAxNi41QzEyLjUgMTcuMjIgMTIgMTcuODIgMTEuMzIgMTcuOTZDMTUuNSAxOC4zNiAxOSAxNS4wOCAxOSAxMU0xNi41IDEyQzE1LjY3IDEyIDE1IDEyLjY3IDE1IDEzLjVTMTUuNjcgMTUgMTYuNSAxNSAxOCAxNC4zMyAxOCAxMy41IDE3LjMzIDEyIDE2LjUgMTJNNyAyNEg5VjIySDdWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMTEgMjRIMTNWMjJIMTFWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29vbGFudFRlbXBlcmF0dXJlID0gXCJNMTEuNSwxQTEuNSwxLjUgMCAwLDAgMTAsMi41VjE0LjVDOS4zNywxNC45NyA5LDE1LjcxIDksMTYuNUEyLjUsMi41IDAgMCwwIDExLjUsMTlBMi41LDIuNSAwIDAsMCAxNCwxNi41QzE0LDE1LjcxIDEzLjYzLDE1IDEzLDE0LjVWMTNIMTdWMTFIMTNWOUgxN1Y3SDEzVjVIMTdWM0gxM1YyLjVBMS41LDEuNSAwIDAsMCAxMS41LDFNMCwxNVYxN0MwLjY3LDE3IDAuNzksMTcuMjEgMS4yOSwxNy43MUMxLjc5LDE4LjIxIDIuNjcsMTkgNCwxOUM1LjMzLDE5IDYuMjEsMTguMjEgNi43MSwxNy43MUM2LjgyLDE3LjU5IDYuOTEsMTcuNSA3LDE3LjQxVjE1LjE2QzYuMjEsMTUuNDIgNS42NSwxNS45MyA1LjI5LDE2LjI5QzQuNzksMTYuNzkgNC42NywxNyA0LDE3QzMuMzMsMTcgMy4yMSwxNi43OSAyLjcxLDE2LjI5QzIuMjEsMTUuNzkgMS4zMywxNSAwLDE1TTE2LDE1VjE3QzE2LjY3LDE3IDE2Ljc5LDE3LjIxIDE3LjI5LDE3LjcxQzE3Ljc5LDE4LjIxIDE4LjY3LDE5IDIwLDE5QzIxLjMzLDE5IDIyLjIxLDE4LjIxIDIyLjcxLDE3LjcxQzIzLjIxLDE3LjIxIDIzLjMzLDE3IDI0LDE3VjE1QzIyLjY3LDE1IDIxLjc5LDE1Ljc5IDIxLjI5LDE2LjI5QzIwLjc5LDE2Ljc5IDIwLjY3LDE3IDIwLDE3QzE5LjMzLDE3IDE5LjIxLDE2Ljc5IDE4LjcxLDE2LjI5QzE4LjIxLDE1Ljc5IDE3LjMzLDE1IDE2LDE1TTgsMjBDNi42NywyMCA1Ljc5LDIwLjc5IDUuMjksMjEuMjlDNC43OSwyMS43OSA0LjY3LDIyIDQsMjJDMy4zMywyMiAzLjIxLDIxLjc5IDIuNzEsMjEuMjlDMi4zNSwyMC45MyAxLjc5LDIwLjQyIDEsMjAuMTZWMjIuNDFDMS4wOSwyMi41IDEuMTgsMjIuNTkgMS4yOSwyMi43MUMxLjc5LDIzLjIxIDIuNjcsMjQgNCwyNEM1LjMzLDI0IDYuMjEsMjMuMjEgNi43MSwyMi43MUM3LjIxLDIyLjIxIDcuMzMsMjIgOCwyMkM4LjY3LDIyIDguNzksMjIuMjEgOS4yOSwyMi43MUM5LjczLDIzLjE0IDEwLjQ0LDIzLjggMTEuNSwyMy45NkMxMS42NiwyNCAxMS44MywyNCAxMiwyNEMxMy4zMywyNCAxNC4yMSwyMy4yMSAxNC43MSwyMi43MUMxNS4yMSwyMi4yMSAxNS4zMywyMiAxNiwyMkMxNi42NywyMiAxNi43OSwyMi4yMSAxNy4yOSwyMi43MUMxNy43OSwyMy4yMSAxOC42NywyNCAyMCwyNEMyMS4zMywyNCAyMi4yMSwyMy4yMSAyMi43MSwyMi43MUMyMi44MiwyMi41OSAyMi45MSwyMi41IDIzLDIyLjQxVjIwLjE2QzIyLjIxLDIwLjQyIDIxLjY1LDIwLjkzIDIxLjI5LDIxLjI5QzIwLjc5LDIxLjc5IDIwLjY3LDIyIDIwLDIyQzE5LjMzLDIyIDE5LjIxLDIxLjc5IDE4LjcxLDIxLjI5QzE4LjIxLDIwLjc5IDE3LjMzLDIwIDE2LDIwQzE0LjY3LDIwIDEzLjc5LDIwLjc5IDEzLjI5LDIxLjI5QzEyLjc5LDIxLjc5IDEyLjY3LDIyIDEyLDIyQzExLjc4LDIyIDExLjYzLDIxLjk3IDExLjUsMjEuOTJDMTEuMjIsMjEuODIgMTEuMDUsMjEuNjMgMTAuNzEsMjEuMjlDMTAuMjEsMjAuNzkgOS4zMywyMCA4LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvcHlyaWdodCA9IFwiTTEwLjA4LDEwLjg2QzEwLjEzLDEwLjUzIDEwLjI0LDEwLjI0IDEwLjM4LDEwQzEwLjUsOS43NCAxMC43Miw5LjUzIDEwLjk3LDkuMzdDMTEuMjEsOS4yMiAxMS41LDkuMTUgMTEuODgsOS4xNEMxMi4xMSw5LjE1IDEyLjMyLDkuMTkgMTIuNSw5LjI3QzEyLjcxLDkuMzYgMTIuODksOS41IDEzLjAzLDkuNjNDMTMuMTcsOS43OCAxMy4yOCw5Ljk2IDEzLjM3LDEwLjE2QzEzLjQ2LDEwLjM2IDEzLjUsMTAuNTggMTMuNSwxMC44SDE1LjNDMTUuMjgsMTAuMzMgMTUuMTksOS45IDE1LDkuNUMxNC44NSw5LjEyIDE0LjYyLDguNzggMTQuMzIsOC41QzE0LDguMjIgMTMuNjYsOCAxMy4yNCw3Ljg0QzEyLjgyLDcuNjggMTIuMzYsNy42MSAxMS44NSw3LjYxQzExLjIsNy42MSAxMC42Myw3LjcyIDEwLjE1LDcuOTVDOS42Nyw4LjE4IDkuMjcsOC41IDguOTUsOC44N0M4LjYzLDkuMjYgOC4zOSw5LjcxIDguMjQsMTAuMjNDOC4wOSwxMC43NSA4LDExLjI5IDgsMTEuODdWMTIuMTRDOCwxMi43MiA4LjA4LDEzLjI2IDguMjMsMTMuNzhDOC4zOCwxNC4zIDguNjIsMTQuNzUgOC45NCwxNS4xM0M5LjI2LDE1LjUgOS42NiwxNS44MiAxMC4xNCwxNi4wNEMxMC42MiwxNi4yNiAxMS4xOSwxNi4zOCAxMS44NCwxNi4zOEMxMi4zMSwxNi4zOCAxMi43NSwxNi4zIDEzLjE2LDE2LjE1QzEzLjU3LDE2IDEzLjkzLDE1Ljc5IDE0LjI0LDE1LjVDMTQuNTUsMTUuMjUgMTQuOCwxNC45NCAxNSwxNC41OEMxNS4xNiwxNC4yMiAxNS4yNywxMy44NCAxNS4yOCwxMy40M0gxMy41QzEzLjUsMTMuNjQgMTMuNDMsMTMuODMgMTMuMzQsMTRDMTMuMjUsMTQuMTkgMTMuMTMsMTQuMzQgMTMsMTQuNDdDMTIuODMsMTQuNiAxMi42NiwxNC43IDEyLjQ2LDE0Ljc3QzEyLjI3LDE0Ljg0IDEyLjA3LDE0Ljg2IDExLjg2LDE0Ljg3QzExLjUsMTQuODYgMTEuMiwxNC43OSAxMC45NywxNC42NEMxMC43MiwxNC41IDEwLjUsMTQuMjcgMTAuMzgsMTRDMTAuMjQsMTMuNzcgMTAuMTMsMTMuNDcgMTAuMDgsMTMuMTRDMTAuMDMsMTIuODEgMTAsMTIuNDcgMTAsMTIuMTRWMTEuODdDMTAsMTEuNSAxMC4wMywxMS4xOSAxMC4wOCwxMC44Nk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvcmRvdmEgPSBcIk0yMC4xOCwyMS41NUgxNi45NEwxNy4xNywxOC44MkgxNS41OEwxNS4zNSwyMS41NUg4LjY1TDguNDIsMTguODJINi44M0w3LjA2LDIxLjU1SDMuODJMMiw5LjczTDYuNTUsMi40NUgxNy40NUwyMiw5LjczTDIwLjE4LDIxLjU1TTE2LjU1LDYuMDlIMTMuNjJMMTMuODIsNy40NUgxMC4xOEwxMC4zOCw2LjA5SDcuNDVMNS42NCw5LjczTDYuNTUsMTdIMTcuNDVMMTguMzYsOS43M0wxNi41NSw2LjA5TTE0Ljk1LDE0LjU5QzE0LjcsMTQuNTkgMTQuNSwxMy44MyAxNC41LDEyLjlDMTQuNSwxMS45NiAxNC43LDExLjIgMTQuOTUsMTEuMkMxNS4yMSwxMS4yIDE1LjQxLDExLjk2IDE1LjQxLDEyLjlDMTUuNDEsMTMuODMgMTUuMjEsMTQuNTkgMTQuOTUsMTQuNTlNOS4yMiwxNC43M0M4Ljk2LDE0LjczIDguNzYsMTMuOTcgOC43NiwxMy4wNEM4Ljc2LDEyLjEgOC45NiwxMS4zNSA5LjIyLDExLjM1QzkuNDcsMTEuMzUgOS42NywxMi4xIDkuNjcsMTMuMDRDOS42NywxMy45NyA5LjQ3LDE0LjczIDkuMjIsMTQuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ybiA9IFwiTTExLDEySDguODJDOS42MiwxMi41IDEwLjM1LDEzLjA3IDExLDEzLjY4VjEyTTcsMTFDNy4yNyw1Ljg4IDkuMzcsMiAxMiwyQzE0LjY2LDIgMTYuNzcsNS45NCAxNywxMS4xMkMxOC41LDEwLjQzIDIwLjE3LDEwIDIyLDEwQzE2LjI1LDEyLjU3IDE4LjI1LDIyIDEyLDIyQzYsMjIgNy45MywxMi41NyAyLDEwQzMuODIsMTAgNS41LDEwLjQgNywxMU0xMSwxMVY5SDguMjRMOC4wMywxMUgxMU0xMSw4VjZIOS4wNUM4LjgsNi42IDguNiw3LjI3IDguNDMsOEgxMU0xMSw1VjMuM0MxMC40NSwzLjYzIDkuOTUsNC4yMiA5LjUsNUgxMU0xMiwzVjVIMTNWNkgxMlY4SDE0VjlIMTJWMTFIMTVWMTJIMTJWMTRIMTRWMTVIMTIuMjNDMTMuNDIsMTYuNDUgMTQuMTUsMTggMTQuMzIsMTkuMjNDMTUuMzEsMTcuNTYgMTUuOTYsMTQuODQgMTYsMTEuNzZDMTUuOTQsNyAxNC4xMywzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ybk9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDcuMiA5LjFDNy4xIDkuNyA3IDEwLjMgNyAxMUM1LjUgMTAuNCAzLjggMTAgMiAxMEM3LjkgMTIuNiA2IDIyIDEyIDIyQzE0LjUgMjIgMTUuNyAyMC41IDE2LjYgMTguNUwyMC45IDIyLjhMMjIuMSAyMS41TTguMSAxMEw5LjEgMTFIOEw4LjEgMTBNOC44IDEySDEwLjFMMTEgMTIuOVYxMy43QzEwLjMgMTMuMSA5LjYgMTIuNSA4LjggMTJNMTQuMyAxOS4yQzE0LjEgMTggMTMuNCAxNi40IDEyLjIgMTVIMTMuMUwxNS4yIDE3LjFDMTUgMTcuOSAxNC43IDE4LjYgMTQuMyAxOS4yTTExIDZWNy44TDEyLjIgOUgxNFY4SDEyVjZIMTNWNUgxMlYzQzE0LjEgMyAxNS45IDcgMTYgMTEuOFYxMi44TDE4IDE0LjhDMTguOCAxMi44IDE5LjkgMTAuOSAyMiAxMEMyMC4yIDEwIDE4LjUgMTAuNCAxNyAxMS4xQzE2LjggNS45IDE0LjcgMiAxMiAyQzEwLjUgMiA5LjIgMy4yIDguMyA1LjFMOS4yIDZIMTFNMTEgMy4zVjVIOS41QzEwIDQuMiAxMC41IDMuNiAxMSAzLjNNMTUgMTEuOEwxNC4yIDExSDE1VjExLjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29zaW5lV2F2ZSA9IFwiTTIyIDJWNEMyMC4yNiA0IDE5IDguNTggMTcuOTYgMTIuMjdDMTYuNTcgMTcuMjcgMTUuMjYgMjIgMTIgMjJDOC43NCAyMiA3LjQzIDE3LjI3IDYuMDQgMTIuMjdDNSA4LjU4IDMuNzQgNCAyIDRWMkM1LjI2IDIgNi41NyA2LjczIDcuOTYgMTEuNzNDOSAxNS40MiAxMC4yNiAyMCAxMiAyMEMxMy43NCAyMCAxNSAxNS40MiAxNi4wNCAxMS43M0MxNy40MyA2LjczIDE4Ljc0IDIgMjIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb3VudGVyID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMTFWNkg0TTIwLDE4VjZIMTguNzZDMTksNi41NCAxOC45NSw3LjA3IDE4Ljk1LDcuMTNDMTguODgsNy44IDE4LjQxLDguNSAxOC4yNCw4Ljc1TDE1LjkxLDExLjNMMTkuMjMsMTEuMjhMMTkuMjQsMTIuNUwxNC4wNCwxMi40N0wxNCwxMS40N0MxNCwxMS40NyAxNy4wNSw4LjI0IDE3LjIsNy45NUMxNy4zNCw3LjY3IDE3LjkxLDYgMTYuNSw2QzE1LjI3LDYuMDUgMTUuNDEsNy4zIDE1LjQxLDcuM0wxMy44Nyw3LjMxQzEzLjg3LDcuMzEgMTMuODgsNi42NSAxNC4yNSw2SDEzVjE4SDE1LjU4TDE1LjU3LDE3LjE0TDE2LjU0LDE3LjEzQzE2LjU0LDE3LjEzIDE3LjQ1LDE2Ljk3IDE3LjQ2LDE2LjA4QzE3LjUsMTUuMDggMTYuNjUsMTUuMDggMTYuNSwxNS4wOEMxNi4zNywxNS4wOCAxNS40MywxNS4xMyAxNS40MywxNS45NUgxMy45MUMxMy45MSwxNS45NSAxMy45NSwxMy44OSAxNi41LDEzLjg5QzE5LjEsMTMuODkgMTguOTYsMTUuOTEgMTguOTYsMTUuOTFDMTguOTYsMTUuOTEgMTksMTcuMTYgMTcuODUsMTcuNjNMMTguMzcsMThIMjBNOC45MiwxNkg3LjQyVjEwLjJMNS42MiwxMC43NlY5LjUzTDguNzYsOC40MUg4LjkyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvdyA9IFwiTTEwLjUsMThBMC41LDAuNSAwIDAsMSAxMSwxOC41QTAuNSwwLjUgMCAwLDEgMTAuNSwxOUEwLjUsMC41IDAgMCwxIDEwLDE4LjVBMC41LDAuNSAwIDAsMSAxMC41LDE4TTEzLjUsMThBMC41LDAuNSAwIDAsMSAxNCwxOC41QTAuNSwwLjUgMCAwLDEgMTMuNSwxOUEwLjUsMC41IDAgMCwxIDEzLDE4LjVBMC41LDAuNSAwIDAsMSAxMy41LDE4TTEwLDExQTEsMSAwIDAsMSAxMSwxMkExLDEgMCAwLDEgMTAsMTNBMSwxIDAgMCwxIDksMTJBMSwxIDAgMCwxIDEwLDExTTE0LDExQTEsMSAwIDAsMSAxNSwxMkExLDEgMCAwLDEgMTQsMTNBMSwxIDAgMCwxIDEzLDEyQTEsMSAwIDAsMSAxNCwxMU0xOCwxOEMxOCwyMC4yMSAxNS4zMSwyMiAxMiwyMkM4LjY5LDIyIDYsMjAuMjEgNiwxOEM2LDE3LjEgNi40NSwxNi4yNyA3LjIsMTUuNkM2LjQ1LDE0LjYgNiwxMy4zNSA2LDEyTDYuMTIsMTAuNzhDNS41OCwxMC45MyA0LjkzLDEwLjkzIDQuNCwxMC43OEMzLjM4LDEwLjUgMS44NCw5LjM1IDIuMDcsOC41NUMyLjMsNy43NSA0LjIxLDcuNiA1LjIzLDcuOUM1LjgyLDguMDcgNi40NSw4LjUgNi44Miw4Ljk2TDcuMzksOC4xNUM2Ljc5LDcuMDUgNyw0IDEwLDNMOS45MSwzLjE0VjMuMTRDOS42MywzLjU4IDguOTEsNC45NyA5LjY3LDYuNDdDMTAuMzksNi4xNyAxMS4xNyw2IDEyLDZDMTIuODMsNiAxMy42MSw2LjE3IDE0LjMzLDYuNDdDMTUuMDksNC45NyAxNC4zNywzLjU4IDE0LjA5LDMuMTRMMTQsM0MxNyw0IDE3LjIxLDcuMDUgMTYuNjEsOC4xNUwxNy4xOCw4Ljk2QzE3LjU1LDguNSAxOC4xOCw4LjA3IDE4Ljc3LDcuOUMxOS43OSw3LjYgMjEuNyw3Ljc1IDIxLjkzLDguNTVDMjIuMTYsOS4zNSAyMC42MiwxMC41IDE5LjYsMTAuNzhDMTkuMDcsMTAuOTMgMTguNDIsMTAuOTMgMTcuODgsMTAuNzhMMTgsMTJDMTgsMTMuMzUgMTcuNTUsMTQuNiAxNi44LDE1LjZDMTcuNTUsMTYuMjcgMTgsMTcuMSAxOCwxOE0xMiwxNkM5Ljc5LDE2IDgsMTYuOSA4LDE4QzgsMTkuMSA5Ljc5LDIwIDEyLDIwQzE0LjIxLDIwIDE2LDE5LjEgMTYsMThDMTYsMTYuOSAxNC4yMSwxNiAxMiwxNk0xMiwxNEMxMy4xMiwxNCAxNC4xNywxNC4yMSAxNS4wNywxNC41NkMxNS42NSwxMy44NyAxNiwxMyAxNiwxMkE0LDQgMCAwLDAgMTIsOEE0LDQgMCAwLDAgOCwxMkM4LDEzIDguMzUsMTMuODcgOC45MywxNC41NkM5LjgzLDE0LjIxIDEwLjg4LDE0IDEyLDE0TTE0LjA5LDMuMTRWMy4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcHUzMkJpdCA9IFwiTTksM1Y1SDdBMiwyIDAgMCwwIDUsN1Y5SDNWMTFINVYxM0gzVjE1SDVWMTdBMiwyIDAgMCwwIDcsMTlIOVYyMUgxMVYxOUgxM1YyMUgxNVYxOUgxN0EyLDIgMCAwLDAgMTksMTdWMTVIMjFWMTNIMTlWMTFIMjFWOUgxOVY3QTIsMiAwIDAsMCAxNyw1SDE1VjNIMTNWNUgxMVYzTTcsOUgxMC41QTEsMSAwIDAsMSAxMS41LDEwVjE0QTEsMSAwIDAsMSAxMC41LDE1SDdWMTMuNUgxMFYxMi43NUg4LjVWMTEuMjVIMTBWMTAuNUg3TTEyLjUsOUgxNkExLDEgMCAwLDEgMTcsMTBWMTEuNzVBMSwxIDAgMCwxIDE2LDEyLjc1SDE0VjEzLjVIMTdWMTVIMTIuNVYxMi4yNUExLDEgMCAwLDEgMTMuNSwxMS4yNUgxNS41VjEwLjVIMTIuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNwdTY0Qml0ID0gXCJNOSwzVjVIN0EyLDIgMCAwLDAgNSw3VjlIM1YxMUg1VjEzSDNWMTVINVYxN0EyLDIgMCAwLDAgNywxOUg5VjIxSDExVjE5SDEzVjIxSDE1VjE5SDE3QTIsMiAwIDAsMCAxOSwxN1YxNUgyMVYxM0gxOVYxMUgyMVY5SDE5VjdBMiwyIDAgMCwwIDE3LDVIMTVWM0gxM1Y1SDExVjNNOCw5SDExLjVWMTAuNUg4LjVWMTEuMjVIMTAuNUExLDEgMCAwLDEgMTEuNSwxMi4yNVYxNEExLDEgMCAwLDEgMTAuNSwxNUg4QTEsMSAwIDAsMSA3LDE0VjEwQTEsMSAwIDAsMSA4LDlNMTIuNSw5SDE0VjExSDE1LjVWOUgxN1YxNUgxNS41VjEyLjVIMTIuNU04LjUsMTIuNzVWMTMuNUgxMFYxMi43NVwiO1xyXG5leHBvcnQgdmFyIG1kaUNyYW5lID0gXCJNMjAsNlY1QTEsMSAwIDAsMCAxOSw0SDlWM0g2VjRINVY2SDZWMTVINVYxM0gzVjE1SDJWMTdIM1YyMUg1VjE3SDEwVjIxSDEyVjE5LjkyTDEyLDE3SDEzVjE1SDEyVjEzSDEwVjE1SDlWNkgxN1YxMC42MkMxNi41MywxMC43OSAxNi4xOSwxMS4yMyAxNi4xOSwxMS43NkMxNi4xOSwxMi4yIDE2LjQzLDEyLjYgMTYuOCwxMi44MlYxNEgxNy40MkMxNy43NiwxNCAxOC4wMywxNC4yOCAxOC4wMywxNC42MkMxOC4wMywxNC45NiAxNy43NiwxNS4yNCAxNy40MiwxNS4yNEMxNy4yLDE1LjI0IDE3LDE1LjEyIDE2Ljg5LDE0LjkzQzE2LjcxLDE0LjY0IDE2LjM0LDE0LjU0IDE2LjA1LDE0LjcxQzE1Ljc1LDE0Ljg3IDE1LjY1LDE1LjI1IDE1LjgyLDE1LjU1QzE2LjE1LDE2LjExIDE2Ljc2LDE2LjQ3IDE3LjQyLDE2LjQ3QzE4LjQzLDE2LjQ3IDE5LjI2LDE1LjY0IDE5LjI2LDE0LjYyQzE5LjI2LDEzLjg0IDE4Ljc2LDEzLjE0IDE4LjAzLDEyLjg4VjEyLjgyQzE4LjQxLDEyLjYgMTguNjUsMTIuMiAxOC42NSwxMS43NkMxOC42NSwxMS4zIDE4LjM4LDEwLjkxIDE4LDEwLjdWNkgyME04LDEzLjY2TDcsMTQuNjZWMTMuMjRMOCwxMi4yNFYxMy42Nk04LDEwLjcxTDcsMTEuNzFWMTAuMjlMOCw5LjI5VjEwLjcxTTcsOC43MVY3LjI5TDgsNi4yOVY3LjcxTDcsOC43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVhdGlvbiA9IFwiTTE5LDFMMTcuNzQsMy43NUwxNSw1TDE3Ljc0LDYuMjZMMTksOUwyMC4yNSw2LjI2TDIzLDVMMjAuMjUsMy43NU05LDRMNi41LDkuNUwxLDEyTDYuNSwxNC41TDksMjBMMTEuNSwxNC41TDE3LDEyTDExLjUsOS41TTE5LDE1TDE3Ljc0LDE3Ljc0TDE1LDE5TDE3Ljc0LDIwLjI1TDE5LDIzTDIwLjI1LDIwLjI1TDIzLDE5TDIwLjI1LDE3Ljc0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlYXRpdmVDb21tb25zID0gXCJNMTEuODksMTAuMzRMMTAuNTUsMTEuMDRDMTAuNDEsMTAuNzQgMTAuMjQsMTAuNTMgMTAuMDMsMTAuNDFDOS44MiwxMC4yOSA5LjYyLDEwLjIzIDkuNDUsMTAuMjNDOC41NSwxMC4yMyA4LjExLDEwLjgyIDguMTEsMTJDOC4xMSwxMi41NCA4LjIyLDEyLjk3IDguNDUsMTMuMjlDOC42NywxMy42MSA5LDEzLjc3IDkuNDUsMTMuNzdDMTAuMDMsMTMuNzcgMTAuNDQsMTMuNSAxMC42OCwxMi45MUwxMS45MSwxMy41NEMxMS42NSwxNC4wMyAxMS4yOSwxNC40MSAxMC44MiwxNC42OUMxMC4zNiwxNC45NyA5Ljg1LDE1LjExIDkuMjksMTUuMTFDOC4zOSwxNS4xMSA3LjY3LDE0Ljg0IDcuMTIsMTQuMjlDNi41OCwxMy43NCA2LjMsMTMgNi4zLDEyQzYuMywxMS4wNSA2LjU4LDEwLjMgNy4xMyw5Ljc0QzcuNjksOS4xOCA4LjM5LDguOSA5LjIzLDguOUMxMC40Nyw4Ljg5IDExLjM2LDkuMzggMTEuODksMTAuMzRNMTcuNjYsMTAuMzRMMTYuMzQsMTEuMDRDMTYuMiwxMC43NCAxNiwxMC41MyAxNS44MSwxMC40MUMxNS42LDEwLjI5IDE1LjQsMTAuMjMgMTUuMjEsMTAuMjNDMTQuMzIsMTAuMjMgMTMuODcsMTAuODIgMTMuODcsMTJDMTMuODcsMTIuNTQgMTQsMTIuOTcgMTQuMjEsMTMuMjlDMTQuNDQsMTMuNjEgMTQuNzcsMTMuNzcgMTUuMjEsMTMuNzdDMTUuOCwxMy43NyAxNi4yMSwxMy41IDE2LjQ1LDEyLjkxTDE3LjcsMTMuNTRDMTcuNDIsMTQuMDMgMTcuMDUsMTQuNDEgMTYuNTksMTQuNjlDMTYuMTIsMTQuOTcgMTUuNjIsMTUuMTEgMTUuMDcsMTUuMTFDMTQuMTcsMTUuMTEgMTMuNDQsMTQuODQgMTIuOSwxNC4yOUMxMi4zNiwxMy43NCAxMi4wOSwxMyAxMi4wOSwxMkMxMi4wOSwxMS4wNSAxMi4zNywxMC4zIDEyLjkyLDkuNzRDMTMuNDcsOS4xOCAxNC4xNyw4LjkgMTUsOC45QzE2LjI2LDguODkgMTcuMTQsOS4zOCAxNy42NiwxMC4zNE0xMiwzLjVBOC41LDguNSAwIDAsMSAyMC41LDEyQTguNSw4LjUgMCAwLDEgMTIsMjAuNUE4LjUsOC41IDAgMCwxIDMuNSwxMkE4LjUsOC41IDAgMCwxIDEyLDMuNU0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkID0gXCJNMjAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRDaGVjayA9IFwiTTIwIDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTMuMDlDMTMuMDMgMTkuNjcgMTMgMTkuMzQgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMjAuMDYgMTMgMjEuMDkgMTMuMjggMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNE0yMCAxMUg0VjhIMjBNMTcuNzUgMjJMMTUgMTlMMTYuMTYgMTcuODRMMTcuNzUgMTkuNDNMMjEuMzQgMTUuODRMMjIuNSAxNy4yNUwxNy43NSAyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRDaGVja091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOC42NiAxMy4wNCAxOC4zMyAxMy4wOSAxOEgzVjEySDE5VjEzQzE5LjcgMTMgMjAuMzcgMTMuMTMgMjEgMTMuMzVWNkMyMSA0Ljg5IDIwLjExIDQgMTkgNEgzQzEuODkgNCAxIDQuODkgMSA2VjE4QzEgMTkuMSAxLjg5IDIwIDMgMjBIMTMuMDlDMTMuMDQgMTkuNjcgMTMgMTkuMzQgMTMgMTlNMyA2SDE5VjhIM1Y2TTE3Ljc1IDIyTDE1IDE5TDE2LjE2IDE3Ljg0TDE3Ljc1IDE5LjQzTDIxLjM0IDE1Ljg0TDIyLjUgMTcuMjVMMTcuNzUgMjJcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkQ2xvY2sgPSBcIk0xNiwxNEgxNy41VjE2LjgyTDE5Ljk0LDE4LjIzTDE5LjE5LDE5LjUzTDE2LDE3LjY5VjE0TTI0LDE3QTcsNyAwIDAsMSAxNywyNEMxNC4yMSwyNCAxMS44LDIyLjM2IDEwLjY3LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjEyLjFDMjMuMjQsMTMuMzYgMjQsMTUuMDkgMjQsMTdNMTcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywyMkE1LDUgMCAwLDAgMjIsMTdBNSw1IDAgMCwwIDE3LDEyTTIwLDEwVjdINFYxMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkQ2xvY2tPdXRsaW5lID0gXCJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNE0yNCwxN0E3LDcgMCAwLDEgMTcsMjRDMTQuMjEsMjQgMTEuOCwyMi4zNiAxMC42NywyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxMi4xQzIzLjI0LDEzLjM2IDI0LDE1LjA5IDI0LDE3TTEwLDE3QzEwLDE1LjA0IDEwLjgxLDEzLjI3IDEyLjEsMTJINFYxOEgxMC4wN0MxMCwxNy42NyAxMCwxNy4zNCAxMCwxN00xNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0E1LDUgMCAwLDAgMTcsMTJNMjAsOFY2SDRWOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWFya2VyID0gXCJNMTguNSAxMkMxNi42IDEyIDE1IDEzLjYgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVDMjIgMTMuNiAyMC40IDEyIDE4LjUgMTJNMTguNSAxNi44QzE3LjggMTYuOCAxNy4zIDE2LjIgMTcuMyAxNS42QzE3LjMgMTQuOSAxNy45IDE0LjQgMTguNSAxNC40UzE5LjcgMTUgMTkuNyAxNS42QzE5LjggMTYuMiAxOS4yIDE2LjggMTguNSAxNi44TTE0LjU1IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTEuM0MyMS40MiAxMC44MSAyMC43NCAxMC40NCAyMCAxMC4yMlY4SDRWMTFIMTUuMzlDMTMuOTYgMTIgMTMgMTMuNjYgMTMgMTUuNUMxMyAxNyAxMy43MiAxOC42MSAxNC41NSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWFya2VyT3V0bGluZSA9IFwiTTEzLjUsMThINFYxMkgxNC4zQzE1LjMsMTAuOCAxNi44LDEwIDE4LjUsMTBDMTkuOCwxMCAyMSwxMC41IDIyLDExLjNWNkEyLDIgMCAwLDAgMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMTQuNkMxNC4yLDE5LjQgMTMuOCwxOC43IDEzLjUsMThNNCw2SDIwVjhINFY2TTE4LjUsMTJDMTYuNiwxMiAxNSwxMy42IDE1LDE1LjVDMTUsMTguMSAxOC41LDIyIDE4LjUsMjJDMTguNSwyMiAyMiwxOC4xIDIyLDE1LjVDMjIsMTMuNiAyMC40LDEyIDE4LjUsMTJNMTguNSwxNi44QzE3LjgsMTYuOCAxNy4zLDE2LjIgMTcuMywxNS42QzE3LjMsMTQuOSAxNy45LDE0LjQgMTguNSwxNC40QzE5LjEsMTQuNCAxOS43LDE1IDE5LjcsMTUuNkMxOS44LDE2LjIgMTkuMiwxNi44IDE4LjUsMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWludXMgPSBcIk0yMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjAzIDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzQzIwLjA2IDEzIDIxLjA5IDEzLjI4IDIyIDEzLjgxVjZDMjIgNC44OSAyMS4xMSA0IDIwIDRNMjAgMTFINFY4SDIwTTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRNaW51c091dGxpbmUgPSBcIk0yNCAxOFYyMEgxNlYxOE0xOSA4VjZIM1Y4SDE5TTE5IDEySDNWMThIMTRWMjBIM0MxLjg5IDIwIDEgMTkuMSAxIDE4VjZDMSA0Ljg5IDEuODkgNCAzIDRIMTlDMjAuMTEgNCAyMSA0Ljg5IDIxIDZWMTNIMTlWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZE11bHRpcGxlID0gXCJNMjEgOVY2SDdWOUgyMU0yMSAzQTIgMiAwIDAgMSAyMyA1VjE1QTIgMiAwIDAgMSAyMSAxN0g3QTIgMiAwIDAgMSA1IDE1VjVBMiAyIDAgMCAxIDcgM0gyMU0zIDE5SDE4VjIxSDNBMiAyIDAgMCAxIDEgMTlWOEgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRNdWx0aXBsZU91dGxpbmUgPSBcIk0yMSw4VjZIN1Y4SDIxTTIxLDE2VjExSDdWMTZIMjFNMjEsNEEyLDIgMCAwLDEgMjMsNlYxNkEyLDIgMCAwLDEgMjEsMThIN0M1Ljg5LDE4IDUsMTcuMSA1LDE2VjZDNSw0Ljg5IDUuODksNCA3LDRIMjFNMywyMEgxOFYyMkgzQTIsMiAwIDAsMSAxLDIwVjlIM1YyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkT2ZmID0gXCJNMTEuMiA4TDcuMiA0SDIwQTIgMiAwIDAgMSAyMiA2VjE4QTEuOTEgMS45MSAwIDAgMSAyMS44OCAxOC42OEwxNC4yIDExSDIwVjhNMjAuODQgMjIuNzNMMTguMTEgMjBINEEyIDIgMCAwIDEgMiAxOFY2QTIgMiAwIDAgMSAyLjY1IDQuNTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk05LjExIDExTDYuMTEgOEg0VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRPZmZPdXRsaW5lID0gXCJNMC45Myw0LjJMMi4yMSwyLjkzTDIwLDIwLjcyTDE4LjczLDIyTDE2LjczLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNS43OCAyLjA0LDUuNTcgMi4xMSw1LjM4TDAuOTMsNC4yTTIwLDhWNkg3LjgyTDUuODIsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEMyMiwxOC42IDIxLjc0LDE5LjEzIDIxLjMyLDE5LjVMMTkuODIsMThIMjBWMTJIMTMuODJMOS44Miw4SDIwTTQsOEg0LjczTDQsNy4yN1Y4TTQsMTJWMThIMTQuNzNMOC43MywxMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRPdXRsaW5lID0gXCJNMjAsOEg0VjZIMjBNMjAsMThINFYxMkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUGx1cyA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDEzLjA5QTUuNDcgNS40NyAwIDAgMSAxMyAxOUE2IDYgMCAwIDEgMTkgMTNBNS44OCA1Ljg4IDAgMCAxIDIyIDEzLjgxVjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRQbHVzT3V0bGluZSA9IFwiTTIxLDE4SDI0VjIwSDIxVjIzSDE5VjIwSDE2VjE4SDE5VjE1SDIxVjE4TTE5LDhWNkgzVjhIMTlNMTksMTJIM1YxOEgxNFYyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEgxOUEyLDIgMCAwLDEgMjEsNlYxM0gxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVmcmVzaCA9IFwiTTIwIDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTEuNjhDMTEuNTcgMTkuNSAxMS41IDE5IDExLjUgMTguNUMxMS41IDE0LjkxIDE0LjQxIDEyIDE4IDEyQzE5LjUgMTIgMjAuOSAxMi41MyAyMiAxMy40VjZDMjIgNC44OSAyMS4xMSA0IDIwIDRNMjAgMTFINFY4SDIwVjExTTIwLjgzIDE1LjY3TDIyIDE0LjVWMTguNUgxOEwxOS43NyAxNi43M0MxOS4zMiAxNi4yOCAxOC42OSAxNiAxOCAxNkMxNi42MiAxNiAxNS41IDE3LjEyIDE1LjUgMTguNVMxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41UzE1Ljc5IDE0LjUgMTggMTQuNUMxOS4xMSAxNC41IDIwLjExIDE0Ljk1IDIwLjgzIDE1LjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRSZWZyZXNoT3V0bGluZSA9IFwiTTIwIDRINEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDExLjY4QzExLjU3IDE5LjUgMTEuNSAxOSAxMS41IDE4LjVDMTEuNSAxOC4zMyAxMS41IDE4LjE3IDExLjUzIDE4SDRWMTJIMjBWMTIuMzJDMjAuNzQgMTIuNTYgMjEuNDEgMTIuOTMgMjIgMTMuNFY2QzIyIDQuODkgMjEuMSA0IDIwIDRNMjAgOEg0VjZIMjBWOE0yMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVTMTYuNjIgMjEgMTggMjFDMTguODIgMjEgMTkuNTQgMjAuNjEgMjAgMjBIMjEuNzFDMjEuMTIgMjEuNDcgMTkuNjggMjIuNSAxOCAyMi41QzE1Ljc5IDIyLjUgMTQgMjAuNzEgMTQgMTguNVMxNS43OSAxNC41IDE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVmdW5kID0gXCJNMTggMTFINkEyIDIgMCAwIDAgNCAxM1YyMUEyIDIgMCAwIDAgNiAyM0gxOEEyIDIgMCAwIDAgMjAgMjFWMTNBMiAyIDAgMCAwIDE4IDExTTE4IDE3SDZWMTRIMThNMTcgNVYxMEgxNS41VjYuNUg5Ljg4TDEyLjMgOC45M0wxMS4yNCAxMEw3IDUuNzVMMTEuMjQgMS41TDEyLjMgMi41N0w5Ljg4IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFJlZnVuZE91dGxpbmUgPSBcIk0xOCwxMUg2QTIsMiAwIDAsMCA0LDEzVjIxQTIsMiAwIDAsMCA2LDIzSDE4QTIsMiAwIDAsMCAyMCwyMVYxM0EyLDIgMCAwLDAgMTgsMTFNMTgsMjFINlYxN0gxOFYyMU0xOCwxNUg2VjEzSDE4VjE1TTE3LDVWMTBIMTUuNVY2LjVIOS44OEwxMi4zLDguOTNMMTEuMjQsMTBMNyw1Ljc1TDExLjI0LDEuNUwxMi4zLDIuNTdMOS44OCw1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRSZW1vdmUgPSBcIk0yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMy4wOUE1LjQ3IDUuNDcgMCAwIDEgMTMgMTlBNiA2IDAgMCAxIDE5IDEzQTUuODggNS44OCAwIDAgMSAyMiAxMy44MVY2QTIgMiAwIDAgMCAyMCA0TTIwIDExSDRWOEgyME0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVtb3ZlT3V0bGluZSA9IFwiTTEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4SDNWMTJIMTlWMTNDMTkuNyAxMyAyMC4zNyAxMy4xMyAyMSAxMy4zNVY2QzIxIDQuODkgMjAuMTEgNCAxOSA0SDNDMS44OSA0IDEgNC44OSAxIDZWMThDMSAxOS4xIDEuODkgMjAgMyAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOU0zIDZIMTlWOEgzVjZNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDZMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNjYW4gPSBcIk0xOCA2SDZBMiAyIDAgMCAwIDQgOFYxNkEyIDIgMCAwIDAgNiAxOEgxOEEyIDIgMCAwIDAgMjAgMTZWOEEyIDIgMCAwIDAgMTggNk0xOCAxMkg2VjlIMThNMiA0SDZWMkgyQTIgMiAwIDAgMCAwIDRWOEgyVjRNMjIgMkgxOFY0SDIyVjhIMjRWNEEyIDIgMCAwIDAgMjIgMk0yIDE2SDBWMjBBMiAyIDAgMCAwIDIgMjJINlYyMEgyVjE2TTIyIDIwSDE4VjIySDIyQTIgMiAwIDAgMCAyNCAyMFYxNkgyMlYyMFwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTY2FuT3V0bGluZSA9IFwiTTIsNEg2VjJIMkEyLDIgMCAwLDAgMCw0VjhIMlY0TTIyLDJIMThWNEgyMlY4SDI0VjRBMiwyIDAgMCwwIDIyLDJNMiwxNkgwVjIwQTIsMiAwIDAsMCAyLDIySDZWMjBIMlYxNk0yMiwyMEgxOFYyMkgyMkEyLDIgMCAwLDAgMjQsMjBWMTZIMjJWMjBNNCw4VjE2QTIsMiAwIDAsMCA2LDE4SDE4QTIsMiAwIDAsMCAyMCwxNlY4QTIsMiAwIDAsMCAxOCw2SDZBMiwyIDAgMCwwIDQsOE02LDE2VjEySDE4VjE2SDZNMTgsOFYxMEg2VjhIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNlYXJjaCA9IFwiTTExLjgyIDExQzkuNCAxMy41IDkuNCAxNy41IDExLjgyIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTIuMDZDMjEuNzQgMTEuNjUgMjEuNDUgMTEuMjYgMjEuMSAxMC45QzIwLjc2IDEwLjU3IDIwLjM5IDEwLjI3IDIwIDEwLjAzVjhINFYxMUgxMS44Mk0yMy4zOSAyMUwyMiAyMi4zOUwxOC44OCAxOS4zMkMxOC4xOSAxOS43NSAxNy4zNyAyMCAxNi41IDIwQzE0IDIwIDEyIDE4IDEyIDE1LjVTMTQgMTEgMTYuNSAxMSAyMSAxMyAyMSAxNS41QzIxIDE2LjM4IDIwLjc1IDE3LjIxIDIwLjMxIDE3LjlMMjMuMzkgMjFNMTkgMTUuNUMxOSAxNC4xMiAxNy44OCAxMyAxNi41IDEzUzE0IDE0LjEyIDE0IDE1LjUgMTUuMTIgMTggMTYuNSAxOCAxOSAxNi44OCAxOSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTZWFyY2hPdXRsaW5lID0gXCJNMTEuMDMgMTJDMTEuMjggMTEuNjEgMTEuNTcgMTEuMjQgMTEuOSAxMC45QzE0LjQ0IDguMzcgMTguNTYgOC4zNyAyMS4xIDEwLjlDMjEuNDUgMTEuMjYgMjEuNzQgMTEuNjUgMjIgMTIuMDZWNkMyMiA0Ljg5IDIxLjEgNCAyMCA0SDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMS44MkMxMS4yNCAxOS40IDEwLjggMTguNzIgMTAuNSAxOEg0VjEySDExLjAzTTQgNkgyMFY4SDRWNk0yMC4zMSAxNy45QzIwLjc1IDE3LjIxIDIxIDE2LjM4IDIxIDE1LjVDMjEgMTMgMTkgMTEgMTYuNSAxMVMxMiAxMyAxMiAxNS41IDE0IDIwIDE2LjUgMjBDMTcuMzcgMjAgMTguMTkgMTkuNzUgMTguODggMTkuMzJMMjIgMjIuMzlMMjMuMzkgMjFMMjAuMzEgMTcuOU0xNi41IDE4QzE1LjEyIDE4IDE0IDE2Ljg4IDE0IDE1LjVTMTUuMTIgMTMgMTYuNSAxMyAxOSAxNC4xMiAxOSAxNS41IDE3Ljg4IDE4IDE2LjUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNldHRpbmdzID0gXCJNMjAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwTTcgMjJIOVYyNEg3VjIyTTExIDIySDEzVjI0SDExVjIyTTE1IDIySDE3VjI0SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTZXR0aW5nc091dGxpbmUgPSBcIk0yMCw4SDRWNkgyME0yMCwxOEg0VjEySDIwTTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTeW5jID0gXCJNMTMgMTcuNUMxMyAxOC4zOSAxMy4xOCAxOS4yMyAxMy41IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTEuNUMyMS4yMyAxMS4xOCAyMC4zOSAxMSAxOS41IDExSDIwVjhINFYxMUgxOS41QzE1LjkxIDExIDEzIDEzLjkxIDEzIDE3LjVNMTkgMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBNMTkgMTMuNVYxMkwxNi43NSAxNC4yNUwxOSAxNi41VjE1QzIwLjM4IDE1IDIxLjUgMTYuMTIgMjEuNSAxNy41QzIxLjUgMTcuOSAyMS40MSAxOC4yOCAyMS4yNCAxOC42MkwyMi4zMyAxOS43MUMyMi43NSAxOS4wOCAyMyAxOC4zMiAyMyAxNy41QzIzIDE1LjI5IDIxLjIxIDEzLjUgMTkgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkU3luY091dGxpbmUgPSBcIk00IDE4VjEySDE2LjA1QzE3LjA1IDExLjM3IDE4LjIzIDExIDE5LjUgMTFDMjAuMzkgMTEgMjEuMjMgMTEuMTggMjIgMTEuNVY2QzIyIDQuODkgMjEuMSA0IDIwIDRINEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjVDMTMuMjQgMTkuMzggMTMuMDggMTguNyAxMy4wMyAxOEg0TTQgNkgyMFY4SDRWNk0yMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41TTE5IDE4LjVMMjEuMjUgMjAuNzVMMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzID0gXCJNNC45MyA0LjkyTDYuMzQgNi4zM0M5LjQ2IDMuMiAxNC41MyAzLjIgMTcuNjYgNi4zM0wxOS4wNyA0LjkyQzE1LjE3IDEgOC44NCAxIDQuOTMgNC45Mk03Ljc2IDcuNzVMOS4xNyA5LjE2QzEwLjczIDcuNiAxMy4yNiA3LjYgMTQuODMgOS4xNkwxNi4yNCA3Ljc1QzEzLjkgNS40MSAxMC4xIDUuNDEgNy43NiA3Ljc1TTE4IDExSDZDNC44OSAxMSA0IDExLjkgNCAxM1YyMUM0IDIyLjExIDQuODkgMjMgNiAyM0gxOEMxOS4xMSAyMyAyMCAyMi4xMSAyMCAyMVYxM0MyMCAxMS45IDE5LjExIDExIDE4IDExTTE4IDE3SDZWMTRIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzT2ZmID0gXCJNMTIgMkM5Ljg1IDIgNy43IDIuNjkgNS45IDQuMDhMNy4zMiA1LjVDMTAuNDUgMy4yNCAxNC44NCAzLjUgMTcuNjYgNi4zM0wxOS4wNyA0LjkyQzE3LjEyIDIuOTYgMTQuNTYgMiAxMiAyTTMuMjggNEwyIDUuMjdMNy43MyAxMUg2QzQuODkgMTEgNCAxMS45IDQgMTNWMjFDNCAyMi4xMSA0Ljg5IDIzIDYgMjNIMThDMTguNSAyMyAxOC45MiAyMi44MiAxOS4yNyAyMi41NEwxOS43MyAyM0wyMSAyMS43Mk0xMiA2QzEwLjg3IDYgOS43NSA2LjMxIDguNzcgNi45NEwxMC4yNCA4LjQxQzExLjczIDcuNjggMTMuNTggNy45MiAxNC44MyA5LjE2TDE2LjI0IDcuNzVDMTUuMDcgNi41OCAxMy41NCA2IDEyIDZNMTIuODIgMTFMMTUuODIgMTRIMThWMTYuMThMMjAgMTguMThWMTNDMjAgMTEuOSAxOS4xMSAxMSAxOCAxMU02IDE0SDEwLjczTDEzLjczIDE3SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzT2ZmT3V0bGluZSA9IFwiTTEyIDJDOS44NSAyIDcuNyAyLjY5IDUuOSA0LjA4TDcuMzIgNS41QzEwLjQ1IDMuMjQgMTQuODQgMy41IDE3LjY2IDYuMzNMMTkuMDcgNC45MkMxNy4xMiAyLjk2IDE0LjU2IDIgMTIgMk0zLjI4IDRMMiA1LjI3TDcuNzMgMTFINkM0Ljg5IDExIDQgMTEuOSA0IDEzVjIxQzQgMjIuMTEgNC44OSAyMyA2IDIzSDE4QzE4LjQ3IDIzIDE4LjkyIDIyLjg0IDE5LjI3IDIyLjU0TDE5LjczIDIzTDIxIDIxLjcyTTEyIDZDMTAuODcgNiA5Ljc1IDYuMzEgOC43NyA2Ljk0TDEwLjI0IDguNDFDMTEuNzMgNy42OCAxMy41OCA3LjkyIDE0LjgzIDkuMTZMMTYuMjQgNy43NUMxNS4wNyA2LjU4IDEzLjU0IDYgMTIgNk0xMi44MiAxMUwxNC44MiAxM0gxOFYxNUgxNi44MkwyMCAxOC4xOFYxM0MyMCAxMS45IDE5LjExIDExIDE4IDExTTYgMTNIOS43M0wxMS43MyAxNUg2TTYgMTdIMTMuNzNMMTcuNzMgMjFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkV2lyZWxlc3NPdXRsaW5lID0gXCJNMTgsMTFINkEyLDIgMCAwLDAgNCwxM1YyMUEyLDIgMCAwLDAgNiwyM0gxOEEyLDIgMCAwLDAgMjAsMjFWMTNBMiwyIDAgMCwwIDE4LDExTTE4LDIxSDZWMTdIMThWMjFNMTgsMTVINlYxM0gxOFYxNU00LjkzLDQuOTJMNi4zNCw2LjMzQzkuNDYsMy4yIDE0LjUzLDMuMiAxNy42Niw2LjMzTDE5LjA3LDQuOTJDMTUuMTcsMSA4Ljg0LDEgNC45Myw0LjkyTTcuNzYsNy43NUw5LjE3LDkuMTZDMTAuNzMsNy42IDEzLjI2LDcuNiAxNC44Myw5LjE2TDE2LjI0LDcuNzVDMTMuOSw1LjQxIDEwLjEsNS40MSA3Ljc2LDcuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JpY2tldCA9IFwiTTE0LjM0LDE3Ljc3TDE1Ljc1LDE2LjM2TDIwLDIwLjU4TDE4LjU2LDIyTDE0LjM0LDE3Ljc3TTE4LjUsMkEzLjUsMy41IDAgMCwxIDIyLDUuNUEzLjUsMy41IDAgMCwxIDE4LjUsOUEzLjUsMy41IDAgMCwxIDE1LDUuNUEzLjUsMy41IDAgMCwxIDE4LjUsMk0yLjI0LDcuMTFMNS4wNyw0LjI4QzUuNDYsMy44OSA2LjA5LDMuODkgNi41LDQuMjhMMTQuOTcsMTIuNzdDMTUuMzYsMTMuMTYgMTUuMzYsMTMuNzkgMTQuOTcsMTQuMThMMTIuMTQsMTdDMTEuNzUsMTcuNCAxMS4xMiwxNy40IDEwLjcyLDE3TDIuMjQsOC41M0MxLjg1LDguMTMgMS44NSw3LjUgMi4yNCw3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3AgPSBcIk03LDE3VjFINVY1SDFWN0g1VjE3QTIsMiAwIDAsMCA3LDE5SDE3VjIzSDE5VjE5SDIzVjE3TTE3LDE1SDE5VjdDMTksNS44OSAxOC4xLDUgMTcsNUg5VjdIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JvcEZyZWUgPSBcIk0xOSwzSDE1VjVIMTlWOUgyMVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTksMTlIMTVWMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjE1SDE5TTUsMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUg5VjE5SDVNMyw1VjlINVY1SDlWM0g1QTIsMiAwIDAsMCAzLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JvcExhbmRzY2FwZSA9IFwiTTE5LDE3SDVWN0gxOU0xOSw1SDVBMiwyIDAgMCwwIDMsN1YxN0EyLDIgMCAwLDAgNSwxOUgxOUEyLDIgMCAwLDAgMjEsMTdWN0MyMSw1Ljg5IDIwLjEsNSAxOSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3BQb3J0cmFpdCA9IFwiTTE3LDE5SDdWNUgxN00xNywzSDdBMiwyIDAgMCwwIDUsNVYxOUEyLDIgMCAwLDAgNywyMUgxN0EyLDIgMCAwLDAgMTksMTlWNUMxOSwzLjg5IDE4LjEsMyAxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3BSb3RhdGUgPSBcIk03LjQ3LDIxLjVDNC4yLDE5LjkzIDEuODYsMTYuNzYgMS41LDEzSDBDMC41LDE5LjE2IDUuNjYsMjQgMTEuOTUsMjRDMTIuMTgsMjQgMTIuMzksMjQgMTIuNjEsMjMuOTdMOC44LDIwLjE1TDcuNDcsMjEuNU0xMi4wNSwwQzExLjgyLDAgMTEuNjEsMCAxMS4zOSwwLjA0TDE1LjIsMy44NUwxNi41MywyLjVDMTkuOCw0LjA3IDIyLjE0LDcuMjQgMjIuNSwxMUgyNEMyMy41LDQuODQgMTguMzQsMCAxMi4wNSwwTTE2LDE0SDE4VjhDMTgsNi44OSAxNy4xLDYgMTYsNkgxMFY4SDE2VjE0TTgsMTZWNEg2VjZINFY4SDZWMTZBMiwyIDAgMCwwIDgsMThIMTZWMjBIMThWMThIMjBWMTZIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm9wU3F1YXJlID0gXCJNMTgsMThINlY2SDE4TTE4LDRINkEyLDIgMCAwLDAgNCw2VjE4QTIsMiAwIDAsMCA2LDIwSDE4QTIsMiAwIDAsMCAyMCwxOFY2QzIwLDQuODkgMTkuMSw0IDE4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlycyA9IFwiTTMuMDUsMTNIMVYxMUgzLjA1QzMuNSw2LjgzIDYuODMsMy41IDExLDMuMDVWMUgxM1YzLjA1QzE3LjE3LDMuNSAyMC41LDYuODMgMjAuOTUsMTFIMjNWMTNIMjAuOTVDMjAuNSwxNy4xNyAxNy4xNywyMC41IDEzLDIwLjk1VjIzSDExVjIwLjk1QzYuODMsMjAuNSAzLjUsMTcuMTcgMy4wNSwxM00xMiw1QTcsNyAwIDAsMCA1LDEyQTcsNyAwIDAsMCAxMiwxOUE3LDcgMCAwLDAgMTksMTJBNyw3IDAgMCwwIDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlyc0dwcyA9IFwiTTEyLDhBNCw0IDAgMCwxIDE2LDEyQTQsNCAwIDAsMSAxMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOE0zLjA1LDEzSDFWMTFIMy4wNUMzLjUsNi44MyA2LjgzLDMuNSAxMSwzLjA1VjFIMTNWMy4wNUMxNy4xNywzLjUgMjAuNSw2LjgzIDIwLjk1LDExSDIzVjEzSDIwLjk1QzIwLjUsMTcuMTcgMTcuMTcsMjAuNSAxMywyMC45NVYyM0gxMVYyMC45NUM2LjgzLDIwLjUgMy41LDE3LjE3IDMuMDUsMTNNMTIsNUE3LDcgMCAwLDAgNSwxMkE3LDcgMCAwLDAgMTIsMTlBNyw3IDAgMCwwIDE5LDEyQTcsNyAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3NzaGFpcnNPZmYgPSBcIk0yMC45NCAxMUMyMC41IDYuODMgMTcuMTcgMy41IDEzIDMuMDZWMUgxMVYzLjA2QzkuODcgMy4xOCA4LjgxIDMuNSA3Ljg0IDQuMDNMOS4zNCA1LjUzQzEwLjE2IDUuMTkgMTEuMDYgNSAxMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxMi45NCAxOC44MSAxMy44NCAxOC41IDE0LjY1TDIwIDE2LjE1QzIwLjUgMTUuMTkgMjAuODIgMTQuMTMgMjAuOTUgMTNIMjNWMTFIMjAuOTRNMyA0LjI3TDUuMDQgNi4zMUMzLjk3IDcuNjIgMy4yNSA5LjIzIDMuMDYgMTFIMVYxM0gzLjA2QzMuNSAxNy4xNyA2LjgzIDIwLjUgMTEgMjAuOTRWMjNIMTNWMjAuOTRDMTQuNzcgMjAuNzQgMTYuMzggMjAuMDMgMTcuNjkgMTguOTZMMTkuNzMgMjFMMjEgMTkuNzNMNC4yNyAzTDMgNC4yN00xNi4yNyAxNy41NEMxNS4wOSAxOC40NSAxMy42MSAxOSAxMiAxOUM4LjEzIDE5IDUgMTUuODcgNSAxMkM1IDEwLjM5IDUuNTUgOC45MSA2LjQ2IDcuNzNMMTYuMjcgMTcuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlyc1F1ZXN0aW9uID0gXCJNMy4wNSAxM0gxVjExSDMuMDVDMy41IDYuODMgNi44MyAzLjUgMTEgMy4wNVYxSDEzVjMuMDVDMTcuMTcgMy41IDIwLjUgNi44MyAyMC45NSAxMUgyM1YxM0gyMC45NUMyMC41IDE3LjE3IDE3LjE3IDIwLjUgMTMgMjAuOTVWMjNIMTFWMjAuOTVDNi44MyAyMC41IDMuNSAxNy4xNyAzLjA1IDEzTTEyIDVDOC4xMyA1IDUgOC4xMyA1IDEyUzguMTMgMTkgMTIgMTkgMTkgMTUuODcgMTkgMTIgMTUuODcgNSAxMiA1TTExLjEzIDE3LjI1SDEyLjg4VjE1LjVIMTEuMTNWMTcuMjVNMTIgNi43NUMxMC4wNyA2Ljc1IDguNSA4LjMyIDguNSAxMC4yNUgxMC4yNUMxMC4yNSA5LjI4IDExLjAzIDguNSAxMiA4LjVTMTMuNzUgOS4yOCAxMy43NSAxMC4yNUMxMy43NSAxMiAxMS4xMyAxMS43OCAxMS4xMyAxNC42M0gxMi44OEMxMi44OCAxMi42NiAxNS41IDEyLjQ0IDE1LjUgMTAuMjVDMTUuNSA4LjMyIDEzLjkzIDYuNzUgMTIgNi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm93biA9IFwiTTUgMTZMMyA1TDguNSAxMEwxMiA0TDE1LjUgMTBMMjEgNUwxOSAxNkg1TTE5IDE5QzE5IDE5LjYgMTguNiAyMCAxOCAyMEg2QzUuNCAyMCA1IDE5LjYgNSAxOVYxOEgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm93bk91dGxpbmUgPSBcIk0xMiA4TDE1IDEzLjJMMTggMTAuNUwxNy4zIDE0SDYuN0w2IDEwLjVMOSAxMy4yTDEyIDhNMTIgNEw4LjUgMTBMMyA1TDUgMTZIMTlMMjEgNUwxNS41IDEwTDEyIDRNMTkgMThINVYxOUM1IDE5LjYgNS40IDIwIDYgMjBIMThDMTguNiAyMCAxOSAxOS42IDE5IDE5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyeWVuZ2luZSA9IFwiTTIzLjAzLDEyLjRNMjMuMDMsMTIuNVYxMi41QzIzLDEzIDIwLjkxLDE1LjIzIDE3LjgyLDE2LjI0QzE0LjA1LDE3LjUgNy45NywxNy4wMyA3Ljk3LDEyLjNDNy45NywxMC4wOCA5Ljc4LDguMjcgMTIsOC4yN0MxNC4yNSw4LjI3IDE2LjA1LDEwLjA5IDE2LjA1LDEyLjMxQzE2LjA1LDEzLjM5IDE1LjU4LDE0LjQ0IDE0Ljg3LDE1LjE4QzE1LjU0LDE1LjE3IDE3Ljk0LDE1IDIwLjIxLDEzLjEyQzIwLjQ2LDEyLjg4IDIwLjYyLDEyLjY4IDIwLjY5LDEyLjU1QzIwLjcxLDEyLjUgMjAuNzQsMTIuNDYgMjAuNzMsMTIuNEMyMC43MywxMS45MiAxOC4xMiw4LjE5IDEyLjcyLDcuMTJDMTkuMjIsNy40NiAyMywxMS4zMiAyMy4wMywxMi40VjEyLjVIMjMuMDNNMTIsMTBDMTAuNzQsMTAgOS43MSwxMS4wNCA5LjcxLDEyLjNDOS43MSwxMy41NyAxMC43NCwxNC41OSAxMiwxNC41OUMxMy4yNywxNC41OSAxNC4yOSwxMy41NyAxNC4yOSwxMi4zQzE0LjI5LDExLjA0IDEzLjI3LDEwIDEyLDEwTTMuMzEsMTIuMzRDMy4zMSwxMi4zNCAzLjMxLDEyLjMxIDMuMzEsMTIuNDJWMTIuNDJDMy40MSwxMi45NCA0LjgyLDE1LjQxIDEwLjI4LDE2Ljg4QzMuOTYsMTYuMzcgMS4xMiwxMy4yOCAxLjA0LDEyLjQySDEuMDNDMS4wMywxMi4zMSAxLjAzLDEyLjM2IDEuMDMsMTIuMzVDMS4wMywxMS41IDQuOTYsNy41OCAxMC45Miw3LjE1QzYuMTQsOC4yNiAzLjMxLDExLjg3IDMuMzEsMTIuMzRWMTIuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3J5c3RhbEJhbGwgPSBcIk05LjM4LDguMzhMMTEuNSw5LjM0TDEzLjYyLDguMzhMMTIuNjYsMTAuNUwxMy42MiwxMi42MkwxMS41LDExLjY2TDkuMzgsMTIuNjJMMTAuMzQsMTAuNUw5LjM4LDguMzhNMTYuNSwyLjVMMTcuNTksNS40MUwyMC41LDYuNUwxNy41OSw3LjU5TDE2LjUsMTAuNUwxNS40MSw3LjU5TDEyLjUsNi41TDE1LjQxLDUuNDFMMTYuNSwyLjVNNiwxOUg3VjE4QTEsMSAwIDAsMSA4LDE3SDguMjZDNiwxNS43IDQuNSwxMy4yOCA0LjUsMTAuNUE3LjUsNy41IDAgMCwxIDEyLDNDMTMuMDUsMyAxNC4wNSwzLjIyIDE0Ljk2LDMuNjFMMTQuNTksNC41OUwxMy4xNyw1LjEyQzEyLjc5LDUuMDQgMTIuNCw1IDEyLDVBNS41LDUuNSAwIDAsMCA2LjUsMTAuNUE1LjUsNS41IDAgMCwwIDEyLDE2QzE0LjkxLDE2IDE3LjMsMTMuNzMgMTcuNSwxMC44N0wxOC40MSw4LjQxTDE5LjEyLDguMTRDMTkuMzcsOC44OCAxOS41LDkuNjggMTkuNSwxMC41QzE5LjUsMTMuMjggMTgsMTUuNyAxNS43NCwxN0gxNkExLDEgMCAwLDEgMTcsMThWMTlIMThBMiwyIDAgMCwxIDIwLDIxVjIySDRWMjFBMiwyIDAgMCwxIDYsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZSA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNi4wNCw3LjVMMTIsMTAuODVMMTcuOTYsNy41TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE3LjI4IDE5LjE3TDEyLjU3IDIxLjgyQzEyLjQxIDIxLjk0IDEyLjIxIDIyIDEyIDIyUzExLjU5IDIxLjk0IDExLjQzIDIxLjgyTDMuNTMgMTcuMzhDMy4yMSAxNy4yMSAzIDE2Ljg4IDMgMTYuNVY3LjVDMyA3LjEyIDMuMjEgNi43OSAzLjUzIDYuNjJMNC4zIDYuMTlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMiA0LjE1TDE3Ljk2IDcuNUwxMy4zMSAxMC4xMUwyMC41MyAxNy4zM0MyMC44MiAxNy4xNiAyMSAxNi44NSAyMSAxNi41VjcuNUMyMSA3LjEyIDIwLjc5IDYuNzkgMjAuNDcgNi42MkwxMi41NyAyLjE4QzEyLjQxIDIuMDYgMTIuMjEgMiAxMiAyUzExLjU5IDIuMDYgMTEuNDMgMi4xOEw3LjU2IDQuMzZMOSA1LjgyTDEyIDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQuMyA2LjE5TDMuNTMgNi42MkMzLjIxIDYuNzkgMyA3LjEyIDMgNy41VjE2LjVDMyAxNi44OCAzLjIxIDE3LjIxIDMuNTMgMTcuMzhMMTEuNDMgMjEuODJDMTEuNTkgMjEuOTQgMTEuNzkgMjIgMTIgMjJTMTIuNDEgMjEuOTQgMTIuNTcgMjEuODJMMTcuMjggMTkuMTdMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxNS45MVY5LjIxTDEwLjI5IDEyLjE4TDExIDEyLjg5VjE5LjI5TDUgMTUuOTFNMTMgMTkuMjlWMTQuODlMMTUuODIgMTcuN0wxMyAxOS4yOU05IDUuODJMNy41NiA0LjM2TDExLjQzIDIuMThDMTEuNTkgMi4wNiAxMS43OSAyIDEyIDJTMTIuNDEgMi4wNiAxMi41NyAyLjE4TDIwLjQ3IDYuNjJDMjAuNzkgNi43OSAyMSA3LjEyIDIxIDcuNVYxNi41QzIxIDE2Ljg1IDIwLjgyIDE3LjE2IDIwLjUzIDE3LjMzTDE5IDE1LjhWOS4yMUwxNC43OCAxMS41OEwxMy4zMSAxMC4xMUwxNy45NiA3LjVMMTIgNC4xNUw5IDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU91dGxpbmUgPSBcIk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDYuMDQsNy41TDEyLDEwLjg1TDE3Ljk2LDcuNUwxMiw0LjE1TTUsMTUuOTFMMTEsMTkuMjlWMTIuNThMNSw5LjIxVjE1LjkxTTE5LDE1LjkxVjkuMjFMMTMsMTIuNThWMTkuMjlMMTksMTUuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZVNjYW4gPSBcIk0xNywyMlYyMEgyMFYxN0gyMlYyMC41QzIyLDIwLjg5IDIxLjg0LDIxLjI0IDIxLjU0LDIxLjU0QzIxLjI0LDIxLjg0IDIwLjg5LDIyIDIwLjUsMjJIMTdNNywyMkgzLjVDMy4xMSwyMiAyLjc2LDIxLjg0IDIuNDYsMjEuNTRDMi4xNiwyMS4yNCAyLDIwLjg5IDIsMjAuNVYxN0g0VjIwSDdWMjJNMTcsMkgyMC41QzIwLjg5LDIgMjEuMjQsMi4xNiAyMS41NCwyLjQ2QzIxLjg0LDIuNzYgMjIsMy4xMSAyMiwzLjVWN0gyMFY0SDE3VjJNNywyVjRINFY3SDJWMy41QzIsMy4xMSAyLjE2LDIuNzYgMi40NiwyLjQ2QzIuNzYsMi4xNiAzLjExLDIgMy41LDJIN00xMywxNy4yNUwxNywxNC45NVYxMC4zNkwxMywxMi42NlYxNy4yNU0xMiwxMC45MkwxNiw4LjYzTDEyLDYuMjhMOCw4LjYzTDEyLDEwLjkyTTcsMTQuOTVMMTEsMTcuMjVWMTIuNjZMNywxMC4zNlYxNC45NU0xOC4yMyw3LjU5QzE4LjczLDcuOTEgMTksOC4zNCAxOSw4LjkxVjE1LjIzQzE5LDE1LjggMTguNzMsMTYuMjMgMTguMjMsMTYuNTVMMTIuNzUsMTkuNzNDMTIuMjUsMjAuMDUgMTEuNzUsMjAuMDUgMTEuMjUsMTkuNzNMNS43NywxNi41NUM1LjI3LDE2LjIzIDUsMTUuOCA1LDE1LjIzVjguOTFDNSw4LjM0IDUuMjcsNy45MSA1Ljc3LDcuNTlMMTEuMjUsNC40MUMxMS41LDQuMjggMTEuNzUsNC4yMiAxMiw0LjIyQzEyLjI1LDQuMjIgMTIuNSw0LjI4IDEyLjc1LDQuNDFMMTguMjMsNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdWJlU2VuZCA9IFwiTTE2LDRMOSw4LjA0VjE1Ljk2TDE2LDIwTDIzLDE1Ljk2VjguMDRNMTYsNi4zMUwxOS44LDguNUwxNiwxMC42OUwxMi4yMSw4LjVNMCw3VjlIN1Y3TTExLDEwLjExTDE1LDEyLjQyVjE3LjExTDExLDE0LjgxTTIxLDEwLjExVjE0LjgxTDE3LDE3LjExVjEyLjQyTTIsMTFWMTNIN1YxMU00LDE1VjE3SDdWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlDdWJlVW5mb2xkZWQgPSBcIk02LDlWNEgxM1Y5SDIzVjE2SDE4VjIxSDExVjE2SDFWOUg2TTE2LDE2SDEzVjE5SDE2VjE2TTgsOUgxMVY2SDhWOU02LDE0VjExSDNWMTRINk0xOCwxMVYxNEgyMVYxMUgxOE0xMywxMVYxNEgxNlYxMUgxM004LDExVjE0SDExVjExSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwID0gXCJNMTguMzIsOEg1LjY3TDUuMjMsNEgxOC43N00zLDJMNSwyMC4yM0M1LjEzLDIxLjIzIDUuOTcsMjIgNywyMkgxN0MxOCwyMiAxOC44NywyMS4yMyAxOSwyMC4yM0wyMSwySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMSwyMS43MkwxOS43MywyM0wxOC4yNywyMS41NEMxNy45MywyMS44MyAxNy41LDIyIDE3LDIySDdDNS45NywyMiA1LjEzLDIxLjIzIDUsMjAuMjNMMy41Myw2LjhMMSw0LjI3TTE4LjMyLDhMMTguNzcsNEg1LjgyTDMuODIsMkgyMUwxOS4yOSwxNy40N0w5LjgyLDhIMTguMzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT2ZmT3V0bGluZSA9IFwiTTMuODMgMkw1LjgzIDRIMTguNzhMMTcuNSAxNS42NkwxOS4zIDE3LjVMMjEgMk0yLjI3IDNMMSA0LjI3TDMuNTMgNi44TDUgMjAuMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJIMTdDMTcuNDcgMjIgMTcuOTEgMjEuODIgMTguMjYgMjEuNTRMMTkuNzMgMjNMMjEgMjEuNzNNNS43OCA5LjA2TDE2LjczIDIwSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT3V0bGluZSA9IFwiTTMgMkw1IDIwLjIzQzUuMTMgMjEuMjMgNS45NyAyMiA3IDIySDE3QzE4IDIyIDE4Ljg3IDIxLjIzIDE5IDIwLjIzTDIxIDJIM001LjIyIDRIMTguNzhMMTcgMjBIN0w1LjIyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwV2F0ZXIgPSBcIk0xOC4zMiw4SDUuNjdMNS4yMyw0SDE4Ljc3TTEyLDE5QTMsMyAwIDAsMSA5LDE2QzksMTQgMTIsMTAuNiAxMiwxMC42QzEyLDEwLjYgMTUsMTQgMTUsMTZBMywzIDAgMCwxIDEyLDE5TTMsMkw1LDIwLjIzQzUuMTMsMjEuMjMgNS45NywyMiA3LDIySDE3QzE4LDIyIDE4Ljg3LDIxLjIzIDE5LDIwLjIzTDIxLDJIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXBib2FyZCA9IFwiTTE3IDJIN0M1LjkgMiA1IDIuOSA1IDRWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjRDMTkgMi45IDE4LjExIDIgMTcgMk0xMCAxOEg4VjE1SDEwVjE4TTE2IDE4SDE0VjE1SDE2VjE4TTE3IDEySDdWOUgxN1YxMk0xNyA3SDdWNEgxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cGJvYXJkT3V0bGluZSA9IFwiTTcgMkM1LjkgMiA1IDIuOSA1IDRWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjRDMTkgMi45IDE4LjExIDIgMTcgMkg3TTcgNEgxN1Y3SDdWNE03IDlIMTdWMTJIN1Y5TTcgMTRIMTFWMTlIN1YxNE0xMyAxNEgxN1YxOUgxM1YxNE04IDE1VjE4SDEwVjE1SDhNMTQgMTVWMThIMTZWMTVIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwY2FrZSA9IFwiTTEyLDEuNUEyLjUsMi41IDAgMCwxIDE0LjUsNEEyLjUsMi41IDAgMCwxIDEyLDYuNUEyLjUsMi41IDAgMCwxIDkuNSw0QTIuNSwyLjUgMCAwLDEgMTIsMS41TTE1Ljg3LDVDMTgsNSAyMCw3IDIwLDlDMjIuNyw5IDIyLjcsMTMgMjAsMTNINEMxLjMsMTMgMS4zLDkgNCw5QzQsNyA2LDUgOC4xMyw1QzguNTcsNi43MyAxMC4xNCw4IDEyLDhDMTMuODYsOCAxNS40Myw2LjczIDE1Ljg3LDVNNSwxNUg4TDksMjJIN0w1LDE1TTEwLDE1SDE0TDEzLDIySDExTDEwLDE1TTE2LDE1SDE5TDE3LDIySDE1TDE2LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cmxpbmcgPSBcIk0xMCwzVjVDMTIuNSw1IDEzLjksNS4wNSAxNC43Miw1LjQxQzE1LjI2LDUuNjUgMTUuNzMsNi4yMSAxNi4yNSw3SDVWOUgxOS42MkwxOC44OSw3LjU1QzE3Ljg2LDUuNSAxNi45Niw0LjIyIDE1LjUzLDMuNTlDMTQuMSwyLjk1IDEyLjUsMyAxMCwzTTYsMTFDMy43OCwxMSAyLDEyLjc4IDIsMTVWMThDMiwyMC4yMiAzLjc4LDIyIDYsMjJIMThDMjAuMjIsMjIgMjIsMjAuMjIgMjIsMThWMTVDMjIsMTIuNzggMjAuMjIsMTEgMTgsMTFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUJkdCA9IFwiTTE4LjA5LDEwLjVWOUg5LjU5VjQuNUExLjUsMS41IDAgMCwwIDguMDksM0ExLjUsMS41IDAgMCwwIDYuNTksNC41QTEuNSwxLjUgMCAwLDAgOC4wOSw2VjlINS4wOVYxMC41SDguMDlWMTYuN0M4LjA5LDE5LjA2IDEwLDIwLjk3IDEyLjM0LDIxQzE0LjY4LDIwLjk2IDE2LjU0LDE5LjA0IDE2LjUsMTYuN0MxNi41LDE1LjExIDE1Ljc1LDEzLjYxIDE0LjUsMTIuNjJDMTQuMjgsMTIuNDQgMTQuMDUsMTIuMjggMTMuOCwxMi4xNUMxMy41OCwxMi4wNSAxMy4zNCwxMiAxMy4xLDEyQzEyLjM5LDEyIDExLjc0LDEyLjM5IDExLjM5LDEzQzExLjIsMTMuMyAxMS4xLDEzLjY1IDExLjEsMTRDMTEuMTEsMTUuMSAxMiwxNiAxMy4xMSwxNkMxMy43MywxNiAxNC4zMSwxNS42OSAxNC42OSwxNS4yQzE0LjksMTUuNjcgMTUsMTYuMTggMTUsMTYuN0MxNS4wNCwxOC4yIDEzLjg2LDE5LjQ1IDEyLjM0LDE5LjVDMTAuODEsMTkuNSA5LjU4LDE4LjIzIDkuNTksMTYuN1YxMC41SDE4LjA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5QnJsID0gXCJNMTIsMTVIMTRDMTQsMTYuMDggMTUuMzcsMTcgMTcsMTdDMTguNjMsMTcgMjAsMTYuMDggMjAsMTVDMjAsMTMuOSAxOC45NiwxMy41IDE2Ljc2LDEyLjk3QzE0LjY0LDEyLjQ0IDEyLDExLjc4IDEyLDlDMTIsNy4yMSAxMy40Nyw1LjY5IDE1LjUsNS4xOFYzSDE4LjVWNS4xOEMyMC41Myw1LjY5IDIyLDcuMjEgMjIsOUgyMEMyMCw3LjkyIDE4LjYzLDcgMTcsN0MxNS4zNyw3IDE0LDcuOTIgMTQsOUMxNCwxMC4xIDE1LjA0LDEwLjUgMTcuMjQsMTEuMDNDMTkuMzYsMTEuNTYgMjIsMTIuMjIgMjIsMTVDMjIsMTYuNzkgMjAuNTMsMTguMzEgMTguNSwxOC44MlYyMUgxNS41VjE4LjgyQzEzLjQ3LDE4LjMxIDEyLDE2Ljc5IDEyLDE1TTIsM0g1LjVBNS41LDUuNSAwIDAsMSAxMSw4LjVDMTEsMTAuNjkgOS43MSwxMi41OSA3Ljg2LDEzLjQ3TDExLjY0LDIxSDkuNEw1Ljg4LDE0SDUuNUw0LDE0VjIxSDJWM001LjUsMTJBMy41LDMuNSAwIDAsMCA5LDguNUEzLjUsMy41IDAgMCwwIDUuNSw1SDRWMTJINS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5QnRjID0gXCJNNiw0SDhWMkgxMFY0SDEyVjJIMTRWNC4wM0MxNi4yNSw0LjI4IDE4LDYuMTggMTgsOC41QzE4LDkuOCAxNy40NSwxMSAxNi41NiwxMS44QzE3LjczLDEyLjYxIDE4LjUsMTMuOTcgMTguNSwxNS41QzE4LjUsMTggMTYuNSwyMCAxNCwyMFYyMkgxMlYyMEgxMFYyMkg4VjIwSDZMNi41LDE4SDhWNkg2VjRNMTAsMTNWMThIMTRBMi41LDIuNSAwIDAsMCAxNi41LDE1LjVBMi41LDIuNSAwIDAsMCAxNCwxM0gxME0xMCw2VjExSDEzLjVBMi41LDIuNSAwIDAsMCAxNiw4LjVBMi41LDIuNSAwIDAsMCAxMy41LDZIMTMuNUwxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5Q255ID0gXCJNMTEsMjFWMTZINlYxNEgxMVYxMy43MUwxMC4xNiwxMkg2VjEwSDkuMTlMNS43NywzSDhMMTIsMTEuMkwxNiwzSDE4LjIzTDE0LjgxLDEwSDE4VjEySDEzLjg0TDEzLDEzLjcxVjE0SDE4VjE2SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5RXRoID0gXCJNNiw1SDE4VjdINk03LDExSDE3VjEzSDdNNS41LDE3SDE4LjVWMTlINS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lFdXIgPSBcIk03LjA3LDExTDcsMTJMNy4wNywxM0gxNy4zNUwxNi41LDE1SDcuNjdDOC44LDE3LjM2IDExLjIxLDE5IDE0LDE5QzE2LjIzLDE5IDE4LjIyLDE3Ljk2IDE5LjUsMTYuMzNWMTkuMTJDMTgsMjAuMyAxNi4wNywyMSAxNCwyMUMxMC4wOCwyMSA2Ljc1LDE4LjUgNS41LDE1SDJMMywxM0g1LjA1TDUsMTJMNS4wNSwxMUgyTDMsOUg1LjVDNi43NSw1LjUgMTAuMDgsMyAxNCwzQzE2LjUsMyAxOC44LDQuMDQgMjAuNDMsNS43MUwxOS41Nyw3Ljc1QzE4LjI5LDYuMDggMTYuMjcsNSAxNCw1QzExLjIxLDUgOC44LDYuNjQgNy42Nyw5SDE5LjA0TDE4LjE5LDExSDcuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lFdXJPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYgNy44OUM1LjgxIDguMjUgNS42NCA4LjYyIDUuNSA5SDNMMiAxMUg1LjA1TDUgMTJMNS4wNSAxM0gzTDIgMTVINS41QzYuNzUgMTguNSAxMC4wOCAyMSAxNCAyMUMxNS41IDIxIDE2Ljg5IDIwLjY1IDE4LjEyIDIwTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTcgMTJMNy4wNyAxMUg5LjEyTDExLjEyIDEzSDcuMDdMNyAxMk0xNCAxOUMxMS4yMSAxOSA4LjggMTcuMzcgNy42NyAxNUgxMy4xMkwxNi42IDE4LjVDMTUuNzkgMTguODEgMTQuOTIgMTkgMTQgMTlNMTcgMTMuODFMMTYuMjEgMTNIMTcuMzVMMTcgMTMuODFNMTguMTkgMTFIMTQuMjFMMTIuMjEgOUgxOS4wNEwxOC4xOSAxMU05LjcgNi41TDguMjcgNS4wN0M5LjgzIDMuNzggMTEuODIgMyAxNCAzQzE2LjUgMyAxOC44IDQuMDUgMjAuNDMgNS43MkwxOS41NyA3Ljc2QzE4LjI5IDYuMDkgMTYuMjcgNSAxNCA1QzEyLjM4IDUgMTAuODkgNS41OCA5LjcgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5R2JwID0gXCJNNiwyMVYxOUMxMCwxNyA5LjUsMTMgOS41LDEzSDdWMTFIOS41QzguNSw2LjUgMTAsMyAxNCwzQzE2LDMgMTcsMy41IDE3LDMuNVY1LjVDMTEsMy41IDExLDggMTEuNSwxMUgxNlYxM0gxMS41QzExLjUsMTMgMTIsMTcgOS41LDE5SDE4VjIxSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lJbHMgPSBcIk0yMiwxNkE1LDUgMCAwLDEgMTcsMjFIOFY5SDEwVjE5SDE3QTMsMyAwIDAsMCAyMCwxNlYzSDIyVjE2TTE2LDhWMTVIMTRWOEEzLDMgMCAwLDAgMTEsNUg0VjIxSDJWM0gxMUE1LDUgMCAwLDEgMTYsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUluciA9IFwiTTgsM0gxOEwxNyw1SDEzLjc0QzE0LjIyLDUuNTggMTQuNTgsNi4yNiAxNC43OSw3SDE4TDE3LDlIMTVDMTQuNzUsMTEuNTcgMTIuNzQsMTMuNjMgMTAuMiwxMy45NlYxNEg5LjVMMTUuNSwyMUgxM0w3LDE0VjEySDkuNVYxMkMxMS4yNiwxMiAxMi43MiwxMC43IDEyLjk2LDlIN0w4LDdIMTIuNjZDMTIuMSw1LjgyIDEwLjksNSA5LjUsNUg3TDgsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUpweSA9IFwiTTExLDIxVjE2SDZWMTRIMTFWMTMuNzFMMTAuMTYsMTJINlYxMEg5LjE5TDUuNzcsM0g4TDEyLDExLjJMMTYsM0gxOC4yM0wxNC44MSwxMEgxOFYxMkgxMy44NEwxMywxMy43MVYxNEgxOFYxNkgxM1YyMUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUtydyA9IFwiTTIsM0g0TDUuMzMsOUg5LjMzTDEwLjY3LDNIMTMuMzNMMTQuNjcsOUgxOC42N0wyMCwzSDIyTDIwLjY3LDlIMjJWMTFIMjAuMjJMMTkuNzgsMTNIMjJWMTVIMTkuMzNMMTgsMjFIMTUuMzNMMTQsMTVIMTBMOC42NywyMUg2TDQuNjcsMTVIMlYxM0g0LjIyTDMuNzgsMTFIMlY5SDMuMzNMMiwzTTEzLjExLDExSDEwLjg5TDEwLjQ0LDEzSDEzLjU2TDEzLjExLDExTTcuMzMsMThMOCwxNUg2LjY3TDcuMzMsMThNOC44OSwxMUg1Ljc4TDYuMjIsMTNIOC40NEw4Ljg5LDExTTE2LjY3LDE4TDE3LjMzLDE1SDE2TDE2LjY3LDE4TTE4LjIyLDExSDE1LjExTDE1LjU2LDEzSDE3Ljc4TDE4LjIyLDExTTEyLDZMMTEuMzMsOUgxMi42N0wxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5S3p0ID0gXCJNNSwzSDE5VjVINVYzTTUsNkgxOVY4SDEzVjIxSDExVjhINVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5TW50ID0gXCJNMTMgNVY4LjYyTDE3IDcuMTdWOS4yOUwxMyAxMC43NFYxMi41TDE3IDExLjA3VjEzLjJMMTMgMTQuNjVWMjFIMTFWMTUuMzhMNyAxNi44NFYxNC43MUwxMSAxMy4yNFYxMS40N0w3IDEyLjkyVjEwLjhMMTEgOS4zNVY1SDVWM0gxOVY1SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5TmduID0gXCJNNCw5SDZWM0g4TDExLjQyLDlIMTZWM0gxOFY5SDIwVjExSDE4VjEzSDIwVjE1SDE4VjIxSDE2TDEyLjU3LDE1SDhWMjFINlYxNUg0VjEzSDZWMTFINFY5TTgsOUg5LjEzTDgsNy4wM1Y5TTgsMTFWMTNIMTEuNDJMMTAuMjgsMTFIOE0xNiwxN1YxNUgxNC44NUwxNiwxN00xMi41NiwxMUwxMy43MSwxM0gxNlYxMUgxMi41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVBocCA9IFwiTTUsMlY2SDNWOEg1VjEwSDNWMTJINVYyMkg3VjE2SDEzQzE1LjcsMTYgMTguMTYsMTQuNDQgMTkuMzIsMTJIMjJWMTBIMTkuOTJDMjAuMDMsOS4zNCAyMC4wMyw4LjY2IDE5LjkyLDhIMjJWNkgxOS4zMkMxOC4xNiwzLjU2IDE1LjcsMiAxMywyTTcsNEgxM0MxNC41Nyw0IDE2LjA2LDQuNzQgMTcsNkg3VjRNMTMsMTRIN1YxMkgxN0MxNi4wNiwxMy4yNiAxNC41NywxNCAxMywxNE0xOCw5QzE4LDkuMzQgMTcuOTYsOS42NyAxNy45LDEwSDdWOEgxNy45QzE3Ljk2LDguMzMgMTgsOC42NiAxOCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5UmlhbCA9IFwiTTExLDE3SDEzVjE5SDExVjE3TTE0LDE3SDE2VjE5SDE0VjE3TTksNEgxMVYxNUE0LDQgMCAwLDEgNywxOUg1QTMsMyAwIDAsMSAyLDE2VjEySDRWMTZBMSwxIDAgMCwwIDUsMTdIN0M4LjExLDE3IDksMTYuMTEgOSwxNVY0TTEyLDRIMTRWMTNIMTdWOEgxOVYxM0MxOSwxNC4xMSAxOC4xMSwxNSAxNywxNUgxNEMxMi44OSwxNSAxMiwxNC4xMSAxMiwxM1Y0TTIwLDEwSDIyVjE3QTMsMyAwIDAsMSAxOSwyMEgxN1YxOEgxOUExLDEgMCAwLDAgMjAsMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lSdWIgPSBcIk02LDEwSDdWM0gxNC41QzE3LDMgMTksNSAxOSw3LjVDMTksMTAgMTcsMTIgMTQuNSwxMkg5VjE0SDE1VjE2SDlWMjFIN1YxNkg2VjE0SDdWMTJINlYxME0xNC41LDVIOVYxMEgxNC41QTIuNSwyLjUgMCAwLDAgMTcsNy41QTIuNSwyLjUgMCAwLDAgMTQuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5U2lnbiA9IFwiTTQuNDEgM0wzIDQuNDFMNS42OSA3LjFDNC42MyA4LjQ2IDQgMTAuMTUgNCAxMkM0IDEzLjg1IDQuNjMgMTUuNTUgNS42OSAxNi45TDMgMTkuNTlMNC40MSAyMUw3LjEgMTguMzFDOC40NiAxOS4zNyAxMC4xNSAyMCAxMiAyMEMxMy44NSAyMCAxNS41NSAxOS4zNyAxNi45IDE4LjMxTDE5LjU5IDIxTDIxIDE5LjU5TDE4LjMxIDE2LjlDMTkuMzcgMTUuNTQgMjAgMTMuODUgMjAgMTJDMjAgMTAuMTUgMTkuMzcgOC40NSAxOC4zMSA3LjFMMjEgNC40MUwxOS41OSAzTDE2LjkgNS42OUMxNS41NCA0LjYzIDEzLjg1IDQgMTIgNEMxMC4xNSA0IDguNDUgNC42MyA3LjEgNS42OUw0LjQxIDNNMTIgNkMxNS4zMSA2IDE4IDguNjkgMTggMTJDMTggMTUuMzEgMTUuMzEgMTggMTIgMThDOC42OSAxOCA2IDE1LjMxIDYgMTJDNiA4LjY5IDguNjkgNiAxMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5VHJ5ID0gXCJNMTksMTJBOSw5IDAgMCwxIDEwLDIxSDhWMTIuNzdMNSwxMy44N1YxMS43NEw4LDEwLjY0VjguODdMNSw5Ljk2VjcuODRMOCw2Ljc0VjNIMTBWNkwxNSw0LjJWNi4zMkwxMCw4LjE0VjkuOTJMMTUsOC4xVjEwLjIzTDEwLDEyLjA1VjE5QTcsNyAwIDAsMCAxNywxMkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVR3ZCA9IFwiTTMsMTFIMjFWMTNIMTVWMTlIMjFWMjFIMTVBMiwyIDAgMCwxIDEzLDE5VjEzSDEwLjM1TDUuNzMsMjFMNCwyMEw4LjA0LDEzSDNWMTFNNSwzSDE5VjVINVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5VXNkID0gXCJNNywxNUg5QzksMTYuMDggMTAuMzcsMTcgMTIsMTdDMTMuNjMsMTcgMTUsMTYuMDggMTUsMTVDMTUsMTMuOSAxMy45NiwxMy41IDExLjc2LDEyLjk3QzkuNjQsMTIuNDQgNywxMS43OCA3LDlDNyw3LjIxIDguNDcsNS42OSAxMC41LDUuMThWM0gxMy41VjUuMThDMTUuNTMsNS42OSAxNyw3LjIxIDE3LDlIMTVDMTUsNy45MiAxMy42Myw3IDEyLDdDMTAuMzcsNyA5LDcuOTIgOSw5QzksMTAuMSAxMC4wNCwxMC41IDEyLjI0LDExLjAzQzE0LjM2LDExLjU2IDE3LDEyLjIyIDE3LDE1QzE3LDE2Ljc5IDE1LjUzLDE4LjMxIDEzLjUsMTguODJWMjFIMTAuNVYxOC44MkM4LjQ3LDE4LjMxIDcsMTYuNzkgNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVVzZENpcmNsZSA9IFwiTTEyIDJBMTAgMTAgMCAxIDAgMjIgMTJBMTAgMTAgMCAwIDAgMTIgMk0xNSAxMEgxMVYxMUgxNEExIDEgMCAwIDEgMTUgMTJWMTVBMSAxIDAgMCAxIDE0IDE2SDEzVjE3SDExVjE2SDlWMTRIMTNWMTNIMTBBMSAxIDAgMCAxIDkgMTJWOUExIDEgMCAwIDEgMTAgOEgxMVY3SDEzVjhIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lVc2RDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTExLDE3VjE2SDlWMTRIMTNWMTNIMTBBMSwxIDAgMCwxIDksMTJWOUExLDEgMCAwLDEgMTAsOEgxMVY3SDEzVjhIMTVWMTBIMTFWMTFIMTRBMSwxIDAgMCwxIDE1LDEyVjE1QTEsMSAwIDAsMSAxNCwxNkgxM1YxN0gxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVVzZE9mZiA9IFwiTTMsNC4yN0w0LjI4LDNMMjEsMTkuNzJMMTkuNzMsMjFMMTYuMDYsMTcuMzNDMTUuNDQsMTggMTQuNTQsMTguNTUgMTMuNSwxOC44MlYyMUgxMC41VjE4LjgyQzguNDcsMTguMzEgNywxNi43OSA3LDE1SDlDOSwxNi4wOCAxMC4zNywxNyAxMiwxN0MxMy4xMywxNyAxNC4xNCwxNi41NiAxNC42NSwxNS45MkwxMS42OCwxMi45NUM5LjU4LDEyLjQyIDcsMTEuNzUgNyw5QzcsOC43NyA3LDguNTUgNy4wNyw4LjM0TDMsNC4yN00xMC41LDUuMThWM0gxMy41VjUuMThDMTUuNTMsNS42OSAxNyw3LjIxIDE3LDlIMTVDMTUsNy45MiAxMy42Myw3IDEyLDdDMTEuNjMsNyAxMS4yOCw3LjA1IDEwLjk1LDcuMTNMOS40LDUuNThMMTAuNSw1LjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbnRBYyA9IFwiTTEyLjQzIDExQzEyLjI4IDEwLjg0IDEwIDcgNyA3UzIuMzIgMTAuMTggMiAxMVYxM0gxMS41N0MxMS43MiAxMy4xNiAxNCAxNyAxNyAxN1MyMS42OCAxMy44MiAyMiAxM1YxMUgxMi40M003IDlDOC4xNyA5IDkuMTggOS44NSAxMCAxMUg0LjMxQzQuNzggMTAuMTcgNS41NCA5IDcgOU0xNyAxNUMxNS44MyAxNSAxNC44MiAxNC4xNSAxNCAxM0gxOS42OUMxOS4yMiAxMy44MyAxOC40NiAxNSAxNyAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW50RGMgPSBcIk0yLDlWMTFIMjJWOUgyTTIsMTNWMTVIN1YxM0gyTTksMTNWMTVIMTVWMTNIOU0xNywxM1YxNUgyMlYxM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0ID0gXCJNMTMuNjQsMjEuOTdDMTMuMTQsMjIuMjEgMTIuNTQsMjIgMTIuMzEsMjEuNUwxMC4xMywxNi43Nkw3LjYyLDE4Ljc4QzcuNDUsMTguOTIgNy4yNCwxOSA3LDE5QTEsMSAwIDAsMSA2LDE4VjNBMSwxIDAgMCwxIDcsMkM3LjI0LDIgNy40NywyLjA5IDcuNjQsMi4yM0w3LjY1LDIuMjJMMTkuMTQsMTEuODZDMTkuNTcsMTIuMjIgMTkuNjIsMTIuODUgMTkuMjcsMTMuMjdDMTkuMTIsMTMuNDUgMTguOTEsMTMuNTcgMTguNywxMy42MUwxNS41NCwxNC4yM0wxNy43NCwxOC45NkMxOCwxOS40NiAxNy43NiwyMC4wNSAxNy4yNiwyMC4yOEwxMy42NCwyMS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0Q2xpY2sgPSBcIk0xMC43Niw4LjY5QTAuNzYsMC43NiAwIDAsMCAxMCw5LjQ1VjIwLjlDMTAsMjEuMzIgMTAuMzQsMjEuNjYgMTAuNzYsMjEuNjZDMTAuOTUsMjEuNjYgMTEuMTEsMjEuNiAxMS4yNCwyMS41TDEzLjE1LDE5Ljk1TDE0LjgxLDIzLjU3QzE0Ljk0LDIzLjg0IDE1LjIxLDI0IDE1LjUsMjRDMTUuNjEsMjQgMTUuNzIsMjQgMTUuODMsMjMuOTJMMTguNTksMjIuNjRDMTguOTcsMjIuNDYgMTkuMTUsMjIgMTguOTUsMjEuNjNMMTcuMjgsMThMMTkuNjksMTcuNTVDMTkuODUsMTcuNSAyMCwxNy40MyAyMC4xMiwxNy4yOUMyMC4zOSwxNi45NyAyMC4zNSwxNi41IDIwLDE2LjIxTDExLjI2LDguODZMMTEuMjUsOC44N0MxMS4xMiw4Ljc2IDEwLjk1LDguNjkgMTAuNzYsOC42OU0xNSwxMFY4SDIwVjEwSDE1TTEzLjgzLDQuNzZMMTYuNjYsMS45M0wxOC4wNywzLjM0TDE1LjI0LDYuMTdMMTMuODMsNC43Nk0xMCwwSDEyVjVIMTBWME0zLjkzLDE0LjY2TDYuNzYsMTEuODNMOC4xNywxMy4yNEw1LjM0LDE2LjA3TDMuOTMsMTQuNjZNMy45MywzLjM0TDUuMzQsMS45M0w4LjE3LDQuNzZMNi43Niw2LjE3TDMuOTMsMy4zNE03LDEwSDJWOEg3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yRGVmYXVsdENsaWNrT3V0bGluZSA9IFwiTTExLjUsMTFMMTcuODgsMTYuMzdMMTcsMTYuNTVMMTYuMzYsMTYuNjdDMTUuNzMsMTYuOCAxNS4zNywxNy41IDE1LjY1LDE4LjA3TDE1LjkyLDE4LjY1TDE3LjI4LDIxLjU5TDE1Ljg2LDIyLjI1TDE0LjUsMTkuMzJMMTQuMjQsMTguNzRDMTMuOTcsMTguMTUgMTMuMjIsMTcuOTcgMTIuNzIsMTguMzhMMTIuMjEsMTguNzhMMTEuNSwxOS4zNVYxMU0xMC43Niw4LjY5QTAuNzYsMC43NiAwIDAsMCAxMCw5LjQ1VjIwLjlDMTAsMjEuMzIgMTAuMzQsMjEuNjYgMTAuNzYsMjEuNjZDMTAuOTUsMjEuNjYgMTEuMTEsMjEuNiAxMS4yNCwyMS41TDEzLjE1LDE5Ljk1TDE0LjgxLDIzLjU3QzE0Ljk0LDIzLjg0IDE1LjIxLDI0IDE1LjUsMjRDMTUuNjEsMjQgMTUuNzIsMjQgMTUuODMsMjMuOTJMMTguNTksMjIuNjRDMTguOTcsMjIuNDYgMTkuMTUsMjIgMTguOTUsMjEuNjNMMTcuMjgsMThMMTkuNjksMTcuNTVDMTkuODUsMTcuNSAyMCwxNy40MyAyMC4xMiwxNy4yOUMyMC4zOSwxNi45NyAyMC4zNSwxNi41IDIwLDE2LjIxTDExLjI2LDguODZMMTEuMjUsOC44N0MxMS4xMiw4Ljc2IDEwLjk1LDguNjkgMTAuNzYsOC42OU0xNSwxMFY4SDIwVjEwSDE1TTEzLjgzLDQuNzZMMTYuNjYsMS45M0wxOC4wNywzLjM0TDE1LjI0LDYuMTdMMTMuODMsNC43Nk0xMCwwSDEyVjVIMTBWME0zLjkzLDE0LjY2TDYuNzYsMTEuODNMOC4xNywxMy4yNEw1LjM0LDE2LjA3TDMuOTMsMTQuNjZNMy45MywzLjM0TDUuMzQsMS45M0w4LjE3LDQuNzZMNi43Niw2LjE3TDMuOTMsMy4zNE03LDEwSDJWOEg3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yRGVmYXVsdEdlc3R1cmUgPSBcIk0xNS41OSA4QzE1LjI2IDggMTUgOC4yNyAxNSA4LjZWMTcuNTdDMTUgMTcuOSAxNS4yNiAxOC4xNyAxNS41OSAxOC4xN0MxNS43NCAxOC4xNyAxNS44NiAxOC4xMiAxNS45NiAxOC4wNEwxNy40NSAxNi44M0wxOC43NCAxOS42NkMxOC44NCAxOS44OCAxOS4wNSAyMCAxOS4yNyAyMEMxOS4zNiAyMCAxOS40NCAyMCAxOS41MyAxOS45NEwyMS42NyAxOC45M0MyMS45NyAxOC43OSAyMi4xMSAxOC40MyAyMS45NSAxOC4xNEwyMC42NiAxNS4zTDIyLjUzIDE0Ljk0QzIyLjY1IDE0LjkxIDIyLjc3IDE0Ljg1IDIyLjg2IDE0Ljc0QzIzLjA3IDE0LjUgMjMuMDQgMTQuMTIgMjIuNzcgMTMuODlMMTYgOC4xM0MxNS44OCA4LjA1IDE1Ljc0IDggMTUuNTkgOE0xMi41IDYuNzNDMTIuNzIgNi42NiAxMy4xNyA3LjE5IDEzLjU5IDcuNzZMMTUgNi43MUMxNC44NyA2LjUgMTQuNjkgNi4yNSAxNC40NyA1Ljk2QzE0LjMxIDUuNzUgMTMuNTkgNC45MyAxMi42NiA0LjhDMTIuMDQgNC43MiAxMC44MSA1LjA2IDEwLjYgNi42MUMxMC40NyA3LjU4IDEwLjc2IDguMTkgMTEuMjEgOS4wOEMxMS40NiA5LjYgMTIuMDQgMTAuOTYgMTIuMTggMTEuNzhDMTIuMzMgMTIuNTkgMTIuMDYgMTMuMTYgMTEuNzQgMTMuMTJDMTEuNDQgMTMuMDggMTEuMiAxMi42NSAxMS4wMyAxMi40MUMxMC44OSAxMi4yMiAxMCAxMC44MiA5LjY3IDEwLjIzQzkuMjIgOS41IDguMDQgNy45NiA2LjQ0IDcuNzRDNC4zNSA3LjQ2IDMuNDQgOS4yIDMuMTggMTAuMzZMMSAxMC4wNlYxMS44OEwyLjkzIDEyLjE1QzIuNzUgMTUuNiA0LjUgMTYuODIgNS42NyAxN0M2LjkyIDE3LjE1IDguMDggMTYuMjggOC4yNCAxNS4wNkM4LjQxIDEzLjg0IDcuNTYgMTEuNSA0Ljk2IDEwLjY5QzUuMSAxMC4xNSA1LjIxIDkuNDMgNi4zNiA5LjU5QzcuMjYgOS43MSA4LjIxIDExLjI2IDguOTMgMTIuNDRDOS41OCAxMy41MyAxMC4xIDE0LjM5IDEwLjgzIDE0LjcyQzExLjQ1IDE1IDEyLjE2IDE0Ljk3IDEyLjczIDE0LjY1QzEzLjQyIDE0LjI2IDEzLjg2IDEzLjU1IDE0IDEyLjYzQzE0LjIyIDEwLjkgMTIuNyA4LjE3IDEyLjU3IDcuODRDMTIuNCA3LjQ2IDEyLjEyIDYuODIgMTIuNSA2LjczTTYuNSAxNC43OEM2LjQzIDE1LjExIDYuMSAxNS4yNSA1Ljg4IDE1LjIyQzUuMzggMTUuMTYgNC42NiAxNC41IDQuNzEgMTIuNTNDNi4xNyAxMy4xMyA2LjUzIDE0LjM1IDYuNSAxNC43OFpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0R2VzdHVyZU91dGxpbmUgPSBcIk0xNi41IDEwLjU0TDIwLjM3IDEzLjgzTDE4LjUgMTQuMThMMTkuMjkgMTUuOTJMMjAuMjIgMTcuOTZMMTkuNzIgMTguMTlMMTguODEgMTYuMkwxOCAxNC40M0wxNi41IDE1LjY2VjEwLjU0TTE1LjU5IDhDMTUuMjYgOCAxNSA4LjI3IDE1IDguNlYxNy41N0MxNSAxNy45IDE1LjI2IDE4LjE3IDE1LjU5IDE4LjE3QzE1Ljc0IDE4LjE3IDE1Ljg2IDE4LjEyIDE1Ljk2IDE4LjA0TDE3LjQ1IDE2LjgzTDE4Ljc0IDE5LjY2QzE4Ljg0IDE5Ljg4IDE5LjA1IDIwIDE5LjI3IDIwQzE5LjM2IDIwIDE5LjQ0IDIwIDE5LjUzIDE5Ljk0TDIxLjY3IDE4LjkzQzIxLjk3IDE4Ljc5IDIyLjExIDE4LjQzIDIxLjk1IDE4LjE0TDIwLjY2IDE1LjNMMjIuNTMgMTQuOTRDMjIuNjUgMTQuOTEgMjIuNzcgMTQuODUgMjIuODYgMTQuNzRDMjMuMDcgMTQuNSAyMy4wNCAxNC4xMiAyMi43NyAxMy44OUwxNiA4LjEzQzE1Ljg4IDguMDUgMTUuNzQgOCAxNS41OSA4TTEyLjUgNi43M0MxMi43MiA2LjY2IDEzLjE3IDcuMTkgMTMuNTkgNy43NkwxNSA2LjcxQzE0Ljg3IDYuNSAxNC42OSA2LjI1IDE0LjQ3IDUuOTZDMTQuMzEgNS43NSAxMy41OSA0LjkzIDEyLjY2IDQuOEMxMi4wNCA0LjcyIDEwLjgxIDUuMDYgMTAuNiA2LjYxQzEwLjQ3IDcuNTggMTAuNzYgOC4xOSAxMS4yMSA5LjA4QzExLjQ2IDkuNiAxMi4wNCAxMC45NiAxMi4xOCAxMS43OEMxMi4zMyAxMi41OSAxMi4wNiAxMy4xNiAxMS43NCAxMy4xMkMxMS40NCAxMy4wOCAxMS4yIDEyLjY1IDExLjAzIDEyLjQxQzEwLjg5IDEyLjIyIDEwIDEwLjgyIDkuNjcgMTAuMjNDOS4yMiA5LjUgOC4wNCA3Ljk2IDYuNDQgNy43NEM0LjM1IDcuNDYgMy40NCA5LjIgMy4xOCAxMC4zNkwxIDEwLjA2VjExLjg4TDIuOTMgMTIuMTVDMi43NSAxNS42IDQuNSAxNi44MiA1LjY3IDE3QzYuOTIgMTcuMTUgOC4wOCAxNi4yOCA4LjI0IDE1LjA2QzguNDEgMTMuODQgNy41NiAxMS41IDQuOTYgMTAuNjlDNS4xIDEwLjE1IDUuMjEgOS40MyA2LjM2IDkuNTlDNy4yNiA5LjcxIDguMjEgMTEuMjYgOC45MyAxMi40NEM5LjU4IDEzLjUzIDEwLjEgMTQuMzkgMTAuODMgMTQuNzJDMTEuNDUgMTUgMTIuMTYgMTQuOTcgMTIuNzMgMTQuNjVDMTMuNDIgMTQuMjYgMTMuODYgMTMuNTUgMTQgMTIuNjNDMTQuMjIgMTAuOSAxMi43IDguMTcgMTIuNTcgNy44NEMxMi40IDcuNDYgMTIuMTIgNi44MiAxMi41IDYuNzNNNi41IDE0Ljc4QzYuNDMgMTUuMTEgNi4xIDE1LjI1IDUuODggMTUuMjJDNS4zOCAxNS4xNiA0LjY2IDE0LjUgNC43MSAxMi41M0M2LjE3IDEzLjEzIDYuNTMgMTQuMzUgNi41IDE0Ljc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnNvckRlZmF1bHRPdXRsaW5lID0gXCJNMTAuMDcsMTQuMjdDMTAuNTcsMTQuMDMgMTEuMTYsMTQuMjUgMTEuNCwxNC43NUwxMy43LDE5Ljc0TDE1LjUsMTguODlMMTMuMTksMTMuOTFDMTIuOTUsMTMuNDEgMTMuMTcsMTIuODEgMTMuNjcsMTIuNThMMTMuOTUsMTIuNUwxNi4yNSwxMi4wNUw4LDUuMTJWMTUuOUw5LjgyLDE0LjQzTDEwLjA3LDE0LjI3TTEzLjY0LDIxLjk3QzEzLjE0LDIyLjIxIDEyLjU0LDIyIDEyLjMxLDIxLjVMMTAuMTMsMTYuNzZMNy42MiwxOC43OEM3LjQ1LDE4LjkyIDcuMjQsMTkgNywxOUExLDEgMCAwLDEgNiwxOFYzQTEsMSAwIDAsMSA3LDJDNy4yNCwyIDcuNDcsMi4wOSA3LjY0LDIuMjNMNy42NSwyLjIyTDE5LjE0LDExLjg2QzE5LjU3LDEyLjIyIDE5LjYyLDEyLjg1IDE5LjI3LDEzLjI3QzE5LjEyLDEzLjQ1IDE4LjkxLDEzLjU3IDE4LjcsMTMuNjFMMTUuNTQsMTQuMjNMMTcuNzQsMTguOTZDMTgsMTkuNDYgMTcuNzYsMjAuMDUgMTcuMjYsMjAuMjhMMTMuNjQsMjEuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yTW92ZSA9IFwiTTEzLDZWMTFIMThWNy43NUwyMi4yNSwxMkwxOCwxNi4yNVYxM0gxM1YxOEgxNi4yNUwxMiwyMi4yNUw3Ljc1LDE4SDExVjEzSDZWMTYuMjVMMS43NSwxMkw2LDcuNzVWMTFIMTFWNkg3Ljc1TDEyLDEuNzVMMTYuMjUsNkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JQb2ludGVyID0gXCJNMTMuNzUsMTAuMTlMMTQuMzgsMTAuMzJMMTguNTUsMTIuNEMxOS4yNSwxMi42MyAxOS43MSwxMy4zMiAxOS42NSwxNC4wNlYxNC4xOUwxOS42NSwxNC4zMkwxOC43NSwyMC40NEMxOC42OSwyMC44NyAxOC41LDIxLjI3IDE4LjE1LDIxLjU1QzE3Ljg0LDIxLjg1IDE3LjQzLDIyIDE3LDIySDEwLjEyQzkuNjMsMjIgOS4xOCwyMS44MiA4Ljg1LDIxLjQ3TDIuODYsMTUuNUwzLjc2LDE0LjVDNCwxNC4yNSA0LjM4LDE0LjExIDQuNzQsMTQuMTNINS4wM0w5LDE1VjQuNUEyLDIgMCAwLDEgMTEsMi41QTIsMiAwIDAsMSAxMyw0LjVWMTAuMTlIMTMuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yVGV4dCA9IFwiTTEzLDE5QTEsMSAwIDAsMCAxNCwyMEgxNlYyMkgxMy41QzEyLjk1LDIyIDEyLDIxLjU1IDEyLDIxQzEyLDIxLjU1IDExLjA1LDIyIDEwLjUsMjJIOFYyMEgxMEExLDEgMCAwLDAgMTEsMTlWNUExLDEgMCAwLDAgMTAsNEg4VjJIMTAuNUMxMS4wNSwyIDEyLDIuNDUgMTIsM0MxMiwyLjQ1IDEyLjk1LDIgMTMuNSwySDE2VjRIMTRBMSwxIDAgMCwwIDEzLDVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGFuY2VCYWxscm9vbSA9IFwiTTE0IDMuNUMxNCA0LjMzIDEzLjMzIDUgMTIuNSA1UzExIDQuMzMgMTEgMy41IDExLjY3IDIgMTIuNSAyIDE0IDIuNjcgMTQgMy41TTguNSA1QzcuNjcgNSA3IDUuNjcgNyA2LjVTNy42NyA4IDguNSA4IDEwIDcuMzMgMTAgNi41IDkuMzMgNSA4LjUgNU0xNCAxMkwxMy4yMiA5Ljc1SDE2LjE4TDE4LjM0IDguNjdDMTguNzEgOC41IDE4Ljg2IDguMDQgMTguNjcgNy42N0MxOC41IDcuMyAxOC4wNCA3LjE0IDE3LjY3IDcuMzNMMTYuODUgNy43NEwxNi4zNiA2LjlDMTYuMDcgNi4yNSAxNS4zNiA1Ljg4IDE0LjY2IDYuMDRMMTIuMTkgNi41N0MxMS41IDYuNzIgMTEgNy4zNSAxMSA4LjA3VjguNzdMOC41NyAxMC4zOUg4LjU4QzguNSAxMC40NiA4LjM5IDEwLjU1IDguMzMgMTAuNjdMNy40NCAxMi40NEw1LjY2IDEzLjMzQzUuMjkgMTMuNSA1LjE0IDEzLjk3IDUuMzMgMTQuMzRDNS40NiAxNC42IDUuNzMgMTQuNzUgNiAxNC43NUM2LjExIDE0Ljc1IDYuMjMgMTQuNzMgNi4zNCAxNC42N0w4LjU2IDEzLjU2TDkuNiAxMS41TDExIDEzQzEwIDE2IDMgMjAgMyAyMFM3IDIyIDEyIDIyIDIxIDIwIDIxIDIwIDE2IDE2IDE0IDEyTTE2Ljg1IDExLjA5TDE2LjUzIDExLjI1SDE1LjMzTDE1LjM5IDExLjQxQzE1LjkxIDEyLjQ0IDE2LjY3IDEzLjUgMTcuNSAxNC40NEwxNi45NyAxMS4wM0wxNi44NSAxMS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYW5jZVBvbGUgPSBcIk0xMiAxVjJMMTEuMjMgMS4zNkw3Ljc2IDUuNUwxMSA3LjVWNS4xNkwxMC43OCA1TDEyIDMuNTZWMjNIMTRWMTMuMjRMMTUuOTMgMTEuMzFDMTguNSAxMS43MSAyMS4xMyAxMC4zNiAyMi42NiA4LjgzTDIxLjI0IDcuNDFDMjAuMSA4LjU2IDE3LjcgOS42MSAxNiA5LjI2TDE0IDcuMjRWMU0xNyA0QTIgMiAwIDAgMCAxNSA2QTIgMiAwIDAgMCAxNyA4QTIgMiAwIDAgMCAxOSA2QTIgMiAwIDAgMCAxNyA0TTExIDcuNzZMNy4xIDExLjY2QzUuMjUgMTMuNSA0LjMxIDE0Ljg1IDMuMDYgMTguMTZMNC45NCAxOC44NkM1Ljk0IDE2LjIgNi42NiAxNS4xNCA3Ljg3IDEzLjg0TDkuMjIgMTUuMTlMNC4yNyAyMC4xNEw1LjY5IDIxLjU2TDExIDE2LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFNYXRyaXggPSBcIk0yIDJWMjJIMjJWMjBIMjBWMThIMjJWMTZIMjBWMTRIMjJWMTJIMThWMTBIMTZWMTJIMTRWMTBIMTJWOEg4VjEySDEyVjE2SDEwVjE4SDEyVjIwSDEwVjE4SDhWMTZINlYxNEg0VjEySDZWNkg0VjJIMk02IDZIOFYySDZWNk04IDE2SDEwVjE0SDhWMTZNMTggMTBIMjJWOEgxOFYxME0xOCA4VjRIMTZWNkgxNFY4SDE4TTE2IDRWMkgxNFY0SDE2TTE4IDRIMjBWMkgxOFY0TTIwIDRWNkgyMlY0SDIwTTEwIDJWNkgxMlYySDEwTTE0IDE0SDE2VjE2SDE4VjIwSDE0VjE0TTQgMThINlYyMEg0VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFNYXRyaXhFZGl0ID0gXCJNMjAgMTIuMUMxOS45IDEyLjEgMTkuNyAxMi4yIDE5LjYgMTIuM0wxOC42IDEzLjNMMjAuNyAxNS40TDIxLjcgMTQuNEMyMS45IDE0LjIgMjEuOSAxMy44IDIxLjcgMTMuNkwyMC40IDEyLjNDMjAuMyAxMi4yIDIwLjIgMTIuMSAyMCAxMi4xTTE4LjEgMTMuOUwxMiAxOS45VjIySDE0LjFMMjAuMiAxNS45TDE4LjEgMTMuOU04IDZINlYySDhWNk0xMCAxNkg4VjE0SDEwVjE2TTEyIDZIMTBWMkgxMlY2TTE2IDJWNEgxNFYySDE2TTIwIDRIMThWMkgyMFY0TTEwIDIwVjE4SDhWMTZINlYxNEg0VjEySDZWNkg0VjJIMlYyMkgxMFYyME02IDIwSDRWMThINlYyME0yMiAxMEgxOFY4SDIyVjEwTTIwIDZWNEgyMlY2SDIwTTE4IDRWOEgxNFY2SDE2VjRIMThNMTAgMThWMTZIMTJWMTJIOFY4SDEyVjEwSDE0VjEySDE2VjEwSDE4VjExLjFMMTUuMSAxNEgxNFYxNS4xTDExLjEgMThIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YU1hdHJpeE1pbnVzID0gXCJNMTYgMlY0SDE0VjJIMTZNMTIgMkgxMFY2SDEyVjJNMTAgMTRIOFYxNkgxMFYxNE0xNiA0VjZIMTRWOEgxOFY0SDE2TTggMkg2VjZIOFYyTTIwIDJIMThWNEgyMFYyTTEzLjggMjJIMlYySDRWNkg2VjEySDRWMTRINlYxNkg4VjE4SDEwVjIwSDEyVjE4SDEwVjE2SDEyVjEySDhWOEgxMlYxMEgxNFYxMkgxNlYxMEgxOFYxMkgyMlYxMy44QzIxLjEgMTMuMyAyMC4xIDEzIDE5IDEzQzE3LjggMTMgMTYuNiAxMy40IDE1LjcgMTRIMTRWMTUuN0MxMy40IDE2LjYgMTMgMTcuOCAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMSAxMy44IDIyTTYgMThINFYyMEg2VjE4TTIyIDhIMThWMTBIMjJWOE0yMiA2VjRIMjBWNkgyMk0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhTWF0cml4UGx1cyA9IFwiTTE2IDJWNEgxNFYySDE2TTEyIDJIMTBWNkgxMlYyTTEwIDE0SDhWMTZIMTBWMTRNMTYgNFY2SDE0VjhIMThWNEgxNk04IDJINlY2SDhWMk0yMCAySDE4VjRIMjBWMk0xMy44IDIySDJWMkg0VjZINlYxMkg0VjE0SDZWMTZIOFYxOEgxMFYyMEgxMlYxOEgxMFYxNkgxMlYxMkg4VjhIMTJWMTBIMTRWMTJIMTZWMTBIMThWMTJIMjJWMTMuOEMyMS4xIDEzLjMgMjAuMSAxMyAxOSAxM0MxNy44IDEzIDE2LjYgMTMuNCAxNS43IDE0SDE0VjE1LjdDMTMuNCAxNi42IDEzIDE3LjggMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk02IDE4SDRWMjBINlYxOE0yMiA4SDE4VjEwSDIyVjhNMjIgNlY0SDIwVjZIMjJNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YU1hdHJpeFJlbW92ZSA9IFwiTTE2IDJWNEgxNFYySDE2TTEyIDJIMTBWNkgxMlYyTTEwIDE0SDhWMTZIMTBWMTRNMTYgNFY2SDE0VjhIMThWNEgxNk04IDJINlY2SDhWMk0yMCAySDE4VjRIMjBWMk0xMy44IDIySDJWMkg0VjZINlYxMkg0VjE0SDZWMTZIOFYxOEgxMFYyMEgxMlYxOEgxMFYxNkgxMlYxMkg4VjhIMTJWMTBIMTRWMTJIMTZWMTBIMThWMTJIMjJWMTMuOEMyMS4xIDEzLjMgMjAuMSAxMyAxOSAxM0MxNy44IDEzIDE2LjYgMTMuNCAxNS43IDE0SDE0VjE1LjdDMTMuNCAxNi42IDEzIDE3LjggMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk02IDE4SDRWMjBINlYxOE0yMiA4SDE4VjEwSDIyVjhNMjIgNlY0SDIwVjZIMjJNMjEuMSAxNS41TDE5IDE3LjZMMTYuOSAxNS41TDE1LjUgMTYuOUwxNy42IDE5TDE1LjUgMjEuMUwxNi45IDIyLjVMMTkgMjAuNEwyMS4xIDIyLjVMMjIuNSAyMS4xTDIwLjQgMTlMMjIuNSAxNi45TDIxLjEgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhTWF0cml4U2NhbiA9IFwiTTIgMkg2VjBIMkMuOSAwIDAgLjkgMCAyVjZIMlYyTTIyIDBIMThWMkgyMlY2SDI0VjJDMjQgLjkgMjMuMSAwIDIyIDBNMiAxOEgwVjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOE0yMiAyMkgxOFYyNEgyMkMyMy4xIDI0IDI0IDIzLjEgMjQgMjJWMThIMjJWMjJNOCA2VjRIMTBWNkg4TTEwIDE0VjEySDEyVjE0SDEwTTE2IDRIMThWNkgxNlY0TTE4IDZIMjBWOEgxOFY2TTE4IDE0SDIwVjE2SDE4VjE0TTIwIDEySDE2VjE4SDIwVjIwSDRWNEg2VjZIOFYxMEg2VjEySDhWMTRIMTBWMTZIMTJWMThIMTRWMTZIMTJWMTRIMTRWMTBIMTBWNkgxMlY0SDE0VjhIMTZWMTBIMjBWMTJNOCAxOFYxNkg2VjE4SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2UgPSBcIk0xMiwzQzcuNTgsMyA0LDQuNzkgNCw3QzQsOS4yMSA3LjU4LDExIDEyLDExQzE2LjQyLDExIDIwLDkuMjEgMjAsN0MyMCw0Ljc5IDE2LjQyLDMgMTIsM000LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzE2LjQyLDE2IDIwLDE0LjIxIDIwLDEyVjlDMjAsMTEuMjEgMTYuNDIsMTMgMTIsMTNDNy41OCwxMyA0LDExLjIxIDQsOU00LDE0VjE3QzQsMTkuMjEgNy41OCwyMSAxMiwyMUMxNi40MiwyMSAyMCwxOS4yMSAyMCwxN1YxNEMyMCwxNi4yMSAxNi40MiwxOCAxMiwxOEM3LjU4LDE4IDQsMTYuMjEgNCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFsZXJ0ID0gXCJNMTggN0MxOCA5LjIxIDE0LjQyIDExIDEwIDExUzIgOS4yMSAyIDcgNS41OCAzIDEwIDMgMTggNC43OSAxOCA3TTEwIDE4QzUuNTggMTggMiAxNi4yMSAyIDE0VjE3QzIgMTkuMjEgNS41OCAyMSAxMCAyMVMxOCAxOS4yMSAxOCAxN1YxNEMxOCAxNi4yMSAxNC40MiAxOCAxMCAxOE0xMCAxM0M1LjU4IDEzIDIgMTEuMjEgMiA5VjEyQzIgMTQuMjEgNS41OCAxNiAxMCAxNlMxOCAxNC4yMSAxOCAxMlY5QzE4IDExLjIxIDE0LjQyIDEzIDEwIDEzTTIwIDE3SDIyVjE1SDIwVjE3TTIwIDdWMTNIMjJWN0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFsZXJ0T3V0bGluZSA9IFwiTTEwIDNDNS41OCAzIDIgNC43OSAyIDdWMTdDMiAxOS4yMSA1LjU5IDIxIDEwIDIxUzE4IDE5LjIxIDE4IDE3VjdDMTggNC43OSAxNC40MiAzIDEwIDNNMTYgMTdDMTYgMTcuNSAxMy44NyAxOSAxMCAxOVM0IDE3LjUgNCAxN1YxNC43N0M1LjYxIDE1LjU1IDcuNzIgMTYgMTAgMTZTMTQuMzkgMTUuNTUgMTYgMTQuNzdWMTdNMTYgMTIuNDVDMTQuNyAxMy40IDEyLjQyIDE0IDEwIDE0UzUuMyAxMy40IDQgMTIuNDVWOS42NEM1LjQ3IDEwLjQ3IDcuNjEgMTEgMTAgMTFTMTQuNTMgMTAuNDcgMTYgOS42NFYxMi40NU0xMCA5QzYuMTMgOSA0IDcuNSA0IDdTNi4xMyA1IDEwIDUgMTYgNi41IDE2IDcgMTMuODcgOSAxMCA5TTIyIDdWMTNIMjBWN0gyMk0yMCAxNUgyMlYxN0gyMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFycm93RG93biA9IFwiTTE5IDEzQzE2LjgzIDEzIDE0LjkzIDE0LjE2IDEzLjg4IDE1Ljg5QzEzLjI4IDE1Ljk2IDEyLjY1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyVjlDNCAxMS4yMSA3LjU4IDEzIDEyIDEzUzIwIDExLjIxIDIwIDlWMTJDMjAgMTIuMzYgMTkuOSAxMi43MSAxOS43MiAxMy4wNUMxOS41IDEzIDE5LjI0IDEzIDE5IDEzTTEyIDExQzE2LjQyIDExIDIwIDkuMjEgMjAgN1MxNi40MiAzIDEyIDMgNCA0Ljc5IDQgNyA3LjU4IDExIDEyIDExTTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTIwIDIwVjE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dEb3duT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjIgMjBMMTkgMjNMMTYgMjBIMThWMTZIMjBWMjBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VBcnJvd0xlZnQgPSBcIk00IDdDNCA0Ljc5IDcuNTggMyAxMiAzUzIwIDQuNzkgMjAgNyAxNi40MiAxMSAxMiAxMSA0IDkuMjEgNCA3TTE5LjcyIDEzLjA1QzE5LjkgMTIuNzEgMjAgMTIuMzYgMjAgMTJWOUMyMCAxMS4yMSAxNi40MiAxMyAxMiAxM1M0IDExLjIxIDQgOVYxMkM0IDE0LjIxIDcuNTggMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjggMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMjQgMTMgMTkuNSAxMyAxOS43MiAxMy4wNU0xMy4xIDE3Ljk2QzEyLjc0IDE4IDEyLjM3IDE4IDEyIDE4QzcuNTggMTggNCAxNi4yMSA0IDE0VjE3QzQgMTkuMjEgNy41OCAyMSAxMiAyMUMxMi40NiAyMSAxMi45IDIxIDEzLjMzIDIwLjk0QzEzLjEyIDIwLjMzIDEzIDE5LjY4IDEzIDE5QzEzIDE4LjY0IDEzLjA0IDE4LjMgMTMuMSAxNy45Nk0xOCAxOFYxNkwxNSAxOUwxOCAyMlYyMEgyMlYxOEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFycm93TGVmdE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIyIDE4VjIwSDE4VjIyTDE1IDE5TDE4IDE2VjE4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dSaWdodCA9IFwiTTQgN0M0IDQuNzkgNy41OCAzIDEyIDNTMjAgNC43OSAyMCA3IDE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDdNMTkuNzIgMTMuMDVDMTkuOSAxMi43MSAyMCAxMi4zNiAyMCAxMlY5QzIwIDExLjIxIDE2LjQyIDEzIDEyIDEzUzQgMTEuMjEgNCA5VjEyQzQgMTQuMjEgNy41OCAxNiAxMiAxNkMxMi42NSAxNiAxMy4yOCAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4yNCAxMyAxOS41IDEzIDE5LjcyIDEzLjA1TTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dSaWdodE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIwIDIyVjIwSDE2VjE4SDIwVjE2TDIzIDE5TDIwIDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dVcCA9IFwiTTE5IDEzQzE2LjgzIDEzIDE0LjkzIDE0LjE2IDEzLjg4IDE1Ljg5QzEzLjI4IDE1Ljk2IDEyLjY1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyVjlDNCAxMS4yMSA3LjU4IDEzIDEyIDEzUzIwIDExLjIxIDIwIDlWMTJDMjAgMTIuMzYgMTkuOSAxMi43MSAxOS43MiAxMy4wNUMxOS41IDEzIDE5LjI0IDEzIDE5IDEzTTEyIDExQzE2LjQyIDExIDIwIDkuMjEgMjAgN1MxNi40MiAzIDEyIDMgNCA0Ljc5IDQgNyA3LjU4IDExIDEyIDExTTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTE5IDE1TDE2IDE4SDE4VjIySDIwVjE4SDIyTDE5IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dVcE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIyIDE4SDIwVjIySDE4VjE4SDE2TDE5IDE1TDIyIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2hlY2sgPSBcIk0xMiAzQzE2LjQyIDMgMjAgNC43OSAyMCA3UzE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDcgNy41OCAzIDEyIDNNNCA5QzQgMTEuMjEgNy41OCAxMyAxMiAxM1MyMCAxMS4yMSAyMCA5VjEyLjA4TDE5IDEyQzE2LjQxIDEyIDE0LjIgMTMuNjQgMTMuMzYgMTUuOTRMMTIgMTZDNy41OCAxNiA0IDE0LjIxIDQgMTJWOU00IDE0QzQgMTYuMjEgNy41OCAxOCAxMiAxOEgxM0MxMyAxOS4wNSAxMy4yNyAyMC4wNCAxMy43NSAyMC45TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0TTE4IDIxLjA4TDE1LjI1IDE4LjA4TDE2LjQxIDE2LjkyTDE4IDE4LjVMMjEuNTkgMTQuOTJMMjIuNzUgMTYuMzNMMTggMjEuMDhcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUNoZWNrT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjIuNSAxNy4yNUwxNy43NSAyMkwxNSAxOUwxNi4xNiAxNy44NEwxNy43NSAxOS40M0wyMS4zNCAxNS44NEwyMi41IDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2xvY2sgPSBcIk0xNi41IDE2LjI1TDE5LjM2IDE3Ljk0TDE4LjYxIDE5LjE2TDE1IDE3VjEySDE2LjVWMTYuMjVNMjMgMTZDMjMgMTkuODcgMTkuODcgMjMgMTYgMjNDMTMuNjEgMjMgMTEuNSAyMS44IDEwLjI1IDIwQzYuMTggMTkuNzkgMyAxOC4wOCAzIDE2VjEzQzMgMTQuODggNS41OCAxNi40NCA5LjA2IDE2Ljg4QzkuMDMgMTYuNTkgOSAxNi4zIDkgMTZDOSAxNS42MiA5LjA0IDE1LjI1IDkuMSAxNC44OEM1LjYgMTQuNDUgMyAxMi44OCAzIDExVjhDMyAxMC4wOSA2LjIgMTEuOCAxMC4yNyAxMkMxMC44NyAxMS4xNCAxMS42NCAxMC40NCAxMi41MyA5LjkzQzEyLjA0IDkuOTcgMTEuNSAxMCAxMSAxMEM2LjU4IDEwIDMgOC4yMSAzIDZTNi41OCAyIDExIDIgMTkgMy43OSAxOSA2QzE5IDcuMiAxNy45MyA4LjI4IDE2LjI1IDlDMTcgOS4wNCAxNy43NSA5LjE5IDE4LjQ0IDkuNDVDMTguNzkgOSAxOSA4LjUgMTkgOFY5LjY4QzIxLjM2IDEwLjgxIDIzIDEzLjIxIDIzIDE2TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2xvY2tPdXRsaW5lID0gXCJNMTYuNSAxNi4yNUwxOS4zNiAxNy45NEwxOC42MSAxOS4xNkwxNSAxN1YxMkgxNi41VjE2LjI1TTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzEzLjYxIDIzIDExLjUgMjEuOCAxMC4yNSAyMEM2LjE5IDE5Ljc5IDMgMTguMDggMyAxNlY2QzMgMy43OSA2LjU4IDIgMTEgMlMxOSAzLjc5IDE5IDZWOS42OEMyMS4zNiAxMC44MSAyMyAxMy4yMSAyMyAxNk0xNyA5LjA4VjguNjRDMTYuNzcgOC43NyAxNi41IDguOSAxNi4yNCA5QzE2LjUgOSAxNi43NSA5LjA0IDE3IDkuMDhNNSA2QzUgNi41IDcuMTMgOCAxMSA4UzE3IDYuNSAxNyA2IDE0Ljg3IDQgMTEgNCA1IDUuNSA1IDZNNSAxMS40NUM2LjA3IDEyLjIzIDcuOCAxMi43NiA5LjcyIDEyLjkzQzEwLjMzIDExLjY3IDExLjMyIDEwLjYyIDEyLjU0IDkuOTJDMTIuMDQgOS45NyAxMS41MyAxMCAxMSAxMEM4LjYxIDEwIDYuNDcgOS40NyA1IDguNjRWMTEuNDVNOS4yNiAxNy44N0M5LjEgMTcuMjcgOSAxNi42NSA5IDE2QzkgMTUuNjEgOS4wNCAxNS4yMyA5LjEgMTQuODZDNy41NiAxNC42OSA2LjE1IDE0LjMzIDUgMTMuNzdWMTZDNSAxNi40MiA2LjUgMTcuNSA5LjI2IDE3Ljg3TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ29nID0gXCJNNCA3QzQgNC43OSA3LjU4IDMgMTIgM1MyMCA0Ljc5IDIwIDcgMTYuNDIgMTEgMTIgMTEgNCA5LjIxIDQgN00xMi4wOCAxOEwxMiAxOEM3LjU4IDE4IDQgMTYuMjEgNCAxNFYxN0M0IDE5LjIxIDcuNTggMjEgMTIgMjFDMTIuMSAyMSAxMi4yIDIxIDEyLjI5IDIxQzEyLjExIDIwLjM2IDEyIDE5LjY5IDEyIDE5QzEyIDE4LjY2IDEyLjAzIDE4LjMzIDEyLjA4IDE4TTIwIDEyLjA4QzIwIDEyLjA1IDIwIDEyLjAzIDIwIDEyVjlDMjAgMTEuMjEgMTYuNDIgMTMgMTIgMTNTNCAxMS4yMSA0IDlWMTJDNCAxNC4yMSA3LjU4IDE2IDEyIDE2QzEyLjIzIDE2IDEyLjQ2IDE2IDEyLjY5IDE2QzEzLjgyIDEzLjYzIDE2LjIyIDEyIDE5IDEyQzE5LjM0IDEyIDE5LjY3IDEyLjAzIDIwIDEyLjA4TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ29nT3V0bGluZSA9IFwiTTEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjA4QzE4LjMzIDEyLjAzIDE4LjY2IDEyIDE5IDEyQzE5LjM0IDEyIDE5LjY3IDEyLjAzIDIwIDEyLjA4VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMSAyMSAxMi4yIDIxIDEyLjI5IDIxQzEyLjExIDIwLjM2IDEyIDE5LjY5IDEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjI0IDE2IDEyLjQ3IDE2IDEyLjcgMTUuOTdDMTMuMSAxNS4xNCAxMy42NSAxNC40MSAxNC4zMiAxMy44MUMxMy41OCAxMy45MyAxMi44IDE0IDEyIDE0TTEyIDVDMTUuODcgNSAxOCA2LjUgMTggN1MxNS44NyA5IDEyIDkgNiA3LjUgNiA3IDguMTMgNSAxMiA1TTIyLjcgMTkuNlYxOC42TDIzLjggMTcuOEMyMy45IDE3LjcgMjQgMTcuNiAyMy45IDE3LjVMMjIuOSAxNS44QzIyLjkgMTUuNyAyMi43IDE1LjcgMjIuNiAxNS43TDIxLjQgMTYuMkMyMS4xIDE2IDIwLjggMTUuOCAyMC41IDE1LjdMMjAuMyAxNC40QzIwLjMgMTQuMyAyMC4yIDE0LjIgMjAuMSAxNC4ySDE4LjFDMTcuOSAxNC4yIDE3LjggMTQuMyAxNy44IDE0LjRMMTcuNiAxNS43QzE3LjMgMTUuOSAxNy4xIDE2IDE2LjggMTYuMkwxNS42IDE1LjdDMTUuNSAxNS43IDE1LjQgMTUuNyAxNS4zIDE1LjhMMTQuMyAxNy41QzE0LjMgMTcuNiAxNC4zIDE3LjcgMTQuNCAxNy44TDE1LjUgMTguNlYxOS42TDE0LjQgMjAuNEMxNC4zIDIwLjUgMTQuMiAyMC42IDE0LjMgMjAuN0wxNS4zIDIyLjRDMTUuNCAyMi41IDE1LjUgMjIuNSAxNS42IDIyLjVMMTYuOCAyMkMxNyAyMi4yIDE3LjMgMjIuNCAxNy42IDIyLjVMMTcuOCAyMy44QzE3LjkgMjMuOSAxOCAyNCAxOC4xIDI0SDIwLjFDMjAuMiAyNCAyMC4zIDIzLjkgMjAuMyAyMy44TDIwLjUgMjIuNUMyMC44IDIyLjMgMjEgMjIuMiAyMS4zIDIyTDIyLjUgMjIuNEMyMi42IDIyLjQgMjIuNyAyMi40IDIyLjggMjIuM0wyMy44IDIwLjZDMjMuOSAyMC41IDIzLjkgMjAuNCAyMy44IDIwLjRMMjIuNyAxOS42TTE5IDIwLjVDMTguMiAyMC41IDE3LjUgMTkuOCAxNy41IDE5UzE4LjIgMTcuNSAxOSAxNy41IDIwLjUgMTguMiAyMC41IDE5IDE5LjggMjAuNSAxOSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlRWRpdCA9IFwiTTQsMTRWMTdDNCwxOSA3LjA1LDIwLjcyIDExLDIxVjE4LjExTDExLjEzLDE4QzcuMTIsMTcuNzYgNCwxNi4wNiA0LDE0TTEyLDEzQzcuNTgsMTMgNCwxMS4yMSA0LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzEyLjM5LDE2IDEyLjc3LDE2IDEzLjE2LDE2TDE3LDEyLjEyQzE1LjQsMTIuNzIgMTMuNzEsMTMgMTIsMTNNMTIsM0M3LjU4LDMgNCw0Ljc5IDQsN0M0LDkuMjEgNy41OCwxMSAxMiwxMUMxNi40MiwxMSAyMCw5LjIxIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNNMjEsMTEuMTNDMjAuODUsMTEuMTMgMjAuNzEsMTEuMTkgMjAuNjEsMTEuM0wxOS42MSwxMi4zTDIxLjY2LDE0LjNMMjIuNjYsMTMuM0MyMi44NywxMy4xIDIyLjg4LDEyLjc2IDIyLjY2LDEyLjUzTDIxLjQyLDExLjNDMjEuMzIsMTEuMTkgMjEuMTgsMTEuMTMgMjEuMDQsMTEuMTNNMTkuMDQsMTIuODhMMTMsMTguOTRWMjFIMTUuMDZMMjEuMTIsMTQuOTNMMTkuMDQsMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VFZGl0T3V0bGluZSA9IFwiTTEyIDE2QzEyLjggMTYgMTMuNTcgMTUuOTMgMTQuMzEgMTUuODJMMTcuMjIgMTIuOTFDMTUuODkgMTMuNTkgMTQgMTQgMTIgMTRDOS41OCAxNCA3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuMTNMMTkuMzkgMTAuNzRDMTkuNTcgMTAuNTYgMTkuNzggMTAuNDIgMjAgMTAuM1Y3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4wNCA3LjA2IDIwLjcyIDExIDIwLjk3VjE5LjEzTDExLjE3IDE4Ljk2QzcuODQgMTguNzYgNiAxNy40NiA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNk0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0xOS4xMyAxMy44M0wyMS4xNyAxNS44N0wxNS4wNCAyMkgxM1YxOS45NkwxOS4xMyAxMy44M00yMi44NSAxNC4xOUwyMS44NyAxNS4xN0wxOS44MyAxMy4xM0wyMC44MSAxMi4xNUMyMSAxMS45NSAyMS4zMyAxMS45NSAyMS41MyAxMi4xNUwyMi44NSAxMy40N0MyMy4wNSAxMy42NyAyMy4wNSAxNCAyMi44NSAxNC4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUV4cG9ydCA9IFwiTTEyLDNDNy41OCwzIDQsNC43OSA0LDdDNCw5LjIxIDcuNTgsMTEgMTIsMTFDMTIuNSwxMSAxMywxMC45NyAxMy41LDEwLjkyVjkuNUgxNi4zOUwxNS4zOSw4LjVMMTguOSw1QzE3LjUsMy44IDE0Ljk0LDMgMTIsM00xOC45Miw3LjA4TDE3LjUsOC41TDIwLDExSDE1VjEzSDIwTDE3LjUsMTUuNUwxOC45MiwxNi45MkwyMy44NCwxMk00LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzEzLjE3LDE2IDE0LjI2LDE1Ljg1IDE1LjI1LDE1LjYzTDE2LjM4LDE0LjVIMTMuNVYxMi45MkMxMywxMi45NyAxMi41LDEzIDEyLDEzQzcuNTgsMTMgNCwxMS4yMSA0LDlNNCwxNFYxN0M0LDE5LjIxIDcuNTgsMjEgMTIsMjFDMTQuOTQsMjEgMTcuNSwyMC4yIDE4LjksMTlMMTcsMTcuMUMxNS42MSwxNy42NiAxMy45LDE4IDEyLDE4QzcuNTgsMTggNCwxNi4yMSA0LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlRXhwb3J0T3V0bGluZSA9IFwiTTE3Ljg2IDE4TDE4LjkgMTlDMTcuNSAyMC4yIDE0Ljk0IDIxIDEyIDIxQzcuNTkgMjEgNCAxOS4yMSA0IDE3VjdDNCA0Ljc5IDcuNTggMyAxMiAzQzE0Ljk1IDMgMTcuNSAzLjggMTguOSA1TDE3Ljg2IDZMMTcuNSA2LjRDMTYuNjUgNS43NyAxNC43OCA1IDEyIDVDOC4xMyA1IDYgNi41IDYgN1M4LjEzIDkgMTIgOUMxMy4zNyA5IDE0LjUgOC44MSAxNS40MiA4LjU0TDE2LjM4IDkuNUgxMy41VjEwLjkyQzEzIDEwLjk3IDEyLjUgMTEgMTIgMTFDOS42MSAxMSA3LjQ3IDEwLjQ3IDYgOS42NFYxMi40NUM3LjMgMTMuNCA5LjU4IDE0IDEyIDE0QzEyLjUgMTQgMTMgMTMuOTcgMTMuNSAxMy45MlYxNC41SDE2LjM4TDE1LjM4IDE1LjVMMTUuNSAxNS42MUMxNC40MSAxNS44NiAxMy4yNCAxNiAxMiAxNkM5LjcyIDE2IDcuNjEgMTUuNTUgNiAxNC43N1YxN0M2IDE3LjUgOC4xMyAxOSAxMiAxOUMxNC43OCAxOSAxNi42NSAxOC4yMyAxNy41IDE3LjYxTDE3Ljg2IDE4TTE4LjkyIDcuMDhMMTcuNSA4LjVMMjAgMTFIMTVWMTNIMjBMMTcuNSAxNS41TDE4LjkyIDE2LjkyTDIzLjg0IDEyTDE4LjkyIDcuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VJbXBvcnQgPSBcIk0xMiwzQzguNTksMyA1LjY5LDQuMDcgNC41NCw1LjU3TDkuNzksMTAuODJDMTAuNSwxMC45MyAxMS4yMiwxMSAxMiwxMUMxNi40MiwxMSAyMCw5LjIxIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNNMy45Miw3LjA4TDIuNSw4LjVMNSwxMUgwVjEzSDVMMi41LDE1LjVMMy45MiwxNi45Mkw4Ljg0LDEyTTIwLDlDMjAsMTEuMjEgMTYuNDIsMTMgMTIsMTNDMTEuMzQsMTMgMTAuNywxMi45NSAxMC4wOSwxMi44N0w3LjYyLDE1LjM0QzguODgsMTUuNzUgMTAuMzgsMTYgMTIsMTZDMTYuNDIsMTYgMjAsMTQuMjEgMjAsMTJNMjAsMTRDMjAsMTYuMjEgMTYuNDIsMTggMTIsMThDOS43MiwxOCA3LjY3LDE3LjUgNi4yMSwxNi43NUw0LjUzLDE4LjQzQzUuNjgsMTkuOTMgOC41OSwyMSAxMiwyMUMxNi40MiwyMSAyMCwxOS4yMSAyMCwxN1wiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlSW1wb3J0T3V0bGluZSA9IFwiTTguODQgMTJMMy45MiAxNi45MkwyLjUgMTUuNUw1IDEzSDBWMTFINUwyLjUgOC41TDMuOTIgNy4wOEw4Ljg0IDEyTTEyIDNDOC41OSAzIDUuNjggNC4wNyA0LjUzIDUuNTdMNSA2TDYuMDMgNy4wN0M2IDcuMDUgNiA3IDYgN0M2IDYuNSA4LjEzIDUgMTIgNVMxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlDOS4zOCA5IDcuNTggOC4zMSA2LjY4IDcuNzJMOS44IDEwLjg0QzEwLjUgMTAuOTQgMTEuMjQgMTEgMTIgMTFDMTQuMzkgMTEgMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRDMTEuMDQgMTQgMTAuMSAxMy45IDkuMjQgMTMuNzNMNy41OSAxNS4zN0M4LjkxIDE1Ljc3IDEwLjQxIDE2IDEyIDE2QzE0LjI4IDE2IDE2LjM5IDE1LjU1IDE4IDE0Ljc3VjE3QzE4IDE3LjUgMTUuODcgMTkgMTIgMTlTNiAxNy41IDYgMTdWMTYuOTZMNSAxOEw0LjU0IDE4LjQzQzUuNjkgMTkuOTMgOC42IDIxIDEyIDIxQzE2LjQxIDIxIDIwIDE5LjIxIDIwIDE3VjdDMjAgNC43OSAxNi40MiAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VMb2NrID0gXCJNMTEsM0MxNS40MiwzIDE5LDQuNzkgMTksN0MxOSw5LjIxIDE1LjQyLDExIDExLDExQzYuNTgsMTEgMyw5LjIxIDMsN0MzLDQuNzkgNi41OCwzIDExLDNNMTksMTIuMDNDMTcuMTEsMTIuMjQgMTUuNTcsMTMuNjIgMTUuMTMsMTUuNDNDMTMuOTIsMTUuNzkgMTIuNSwxNiAxMSwxNkM2LjU4LDE2IDMsMTQuMjEgMywxMlY5QzMsMTEuMjEgNi41OCwxMyAxMSwxM0MxNS40MiwxMyAxOSwxMS4yMSAxOSw5VjEyLjAzTTE0LDE3LjcxVjIwLjcxQzEzLjA3LDIwLjkgMTIuMDYsMjEgMTEsMjFDNi41OCwyMSAzLDE5LjIxIDMsMTdWMTRDMywxNi4yMSA2LjU4LDE4IDExLDE4QzEyLjA2LDE4IDEzLjA3LDE3LjkgMTQsMTcuNzFNMTkuNSwxNEEyLjUsMi41IDAgMCwxIDIyLDE2LjVWMTdBMSwxIDAgMCwxIDIzLDE4VjIyQTEsMSAwIDAsMSAyMiwyM0gxN0ExLDEgMCAwLDEgMTYsMjJWMThBMSwxIDAgMCwxIDE3LDE3VjE2LjVBMi41LDIuNSAwIDAsMSAxOS41LDE0TTE5LjUsMTVBMS41LDEuNSAwIDAsMCAxOCwxNi41VjE3SDIxVjE2LjVBMS41LDEuNSAwIDAsMCAxOS41LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTG9ja091dGxpbmUgPSBcIk02IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTEuMDVDMTguMTcgMTEuMDMgMTguMzMgMTEgMTguNSAxMUMxOS4wMyAxMSAxOS41MyAxMS4xIDIwIDExLjI2VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjcgMjEgMTMgMjAuOTdWMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNDEgMTYgMTIuODEgMTUuOTcgMTMuMjEgMTUuOTRDMTMuNCAxNS40NiAxMy42OCAxNS4wMyAxNC4wNyAxNC43QzE0LjEzIDE0LjM5IDE0LjIzIDE0LjA5IDE0LjM0IDEzLjhDMTMuNiAxMy45MyAxMi44MSAxNCAxMiAxNEM5LjU4IDE0IDcuMyAxMy40IDYgMTIuNDVNMTIgNUMxNS44NyA1IDE4IDYuNSAxOCA3UzE1Ljg3IDkgMTIgOSA2IDcuNSA2IDcgOC4xMyA1IDEyIDVNMjEgMTZWMTUuNUMyMSAxNC4xMiAxOS44OCAxMyAxOC41IDEzUzE2IDE0LjEyIDE2IDE1LjVWMTZDMTUuNDUgMTYgMTUgMTYuNDUgMTUgMTdWMjFDMTUgMjEuNTUgMTUuNDUgMjIgMTYgMjJIMjFDMjEuNTUgMjIgMjIgMjEuNTUgMjIgMjFWMTdDMjIgMTYuNDUgMjEuNTUgMTYgMjEgMTZNMjAgMTZIMTdWMTUuNUMxNyAxNC42NyAxNy42NyAxNCAxOC41IDE0UzIwIDE0LjY3IDIwIDE1LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VNYXJrZXIgPSBcIk0xOC41IDEyQzE2LjYgMTIgMTUgMTMuNiAxNSAxNS41QzE1IDE4LjEgMTguNSAyMiAxOC41IDIyUzIyIDE4LjEgMjIgMTUuNUMyMiAxMy42IDIwLjQgMTIgMTguNSAxMk0xOC41IDE2LjhDMTcuOCAxNi44IDE3LjMgMTYuMiAxNy4zIDE1LjZDMTcuMyAxNC45IDE3LjkgMTQuNCAxOC41IDE0LjRTMTkuNyAxNSAxOS43IDE1LjZDMTkuOCAxNi4yIDE5LjIgMTYuOCAxOC41IDE2LjhNNCAxMlY5QzQgMTEuMjEgNy41OCAxMyAxMiAxM0MxMi41NyAxMyAxMy4xMyAxMi45NyAxMy42NyAxMi45MUMxMy4yNSAxMy42OSAxMyAxNC41NyAxMyAxNS41QzEzIDE1LjY1IDEzIDE1LjgxIDEzLjAzIDE1Ljk2QzEyLjY5IDE2IDEyLjM1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyTTQgN0M0IDQuNzkgNy41OCAzIDEyIDNTMjAgNC43OSAyMCA3IDE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDdNMTUgMjAuNzFDMTQuMDcgMjAuOSAxMy4wNiAyMSAxMiAyMUM3LjU4IDIxIDQgMTkuMjEgNCAxN1YxNEM0IDE2LjIxIDcuNTggMTggMTIgMThDMTIuNSAxOCAxMy4wMyAxNy45NyAxMy41IDE3LjkzQzEzLjkgMTguOTEgMTQuNDQgMTkuODcgMTUgMjAuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VNYXJrZXJPdXRsaW5lID0gXCJNMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuMzUgMTYgMTIuNjkgMTUuOTcgMTMuMDMgMTUuOTVDMTMgMTUuOCAxMyAxNS42NSAxMyAxNS41QzEzIDE0Ljk2IDEzLjA5IDE0LjQ0IDEzLjI0IDEzLjk0QzEyLjgzIDE0IDEyLjQyIDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEwLjAzQzE4LjE3IDEwIDE4LjMzIDEwIDE4LjUgMTBDMTkgMTAgMTkuNSAxMC4wOCAyMCAxMC4yMlY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEzLjA2IDIxIDE0LjA3IDIwLjg5IDE1IDIwLjcxQzE0LjYyIDIwLjE0IDE0LjI1IDE5LjUgMTMuOTMgMTguODVDMTMuMzQgMTguOTQgMTIuNzEgMTkgMTIgMTlNMTIgNUMxNS44NyA1IDE4IDYuNSAxOCA3UzE1Ljg3IDkgMTIgOSA2IDcuNSA2IDcgOC4xMyA1IDEyIDVNMTguNSAxMkMxNi42IDEyIDE1IDEzLjYgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVDMjIgMTMuNiAyMC40IDEyIDE4LjUgMTJNMTguNSAxNi44QzE3LjggMTYuOCAxNy4zIDE2LjIgMTcuMyAxNS42QzE3LjMgMTQuOSAxNy45IDE0LjQgMTguNSAxNC40UzE5LjcgMTUgMTkuNyAxNS42QzE5LjggMTYuMiAxOS4yIDE2LjggMTguNSAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTWludXMgPSBcIk0yMyAxN1YxOUgxNVYxN00xMiAzQzE2LjQyIDMgMjAgNC43OSAyMCA3UzE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDcgNy41OCAzIDEyIDNNNCA5QzQgMTEuMjEgNy41OCAxMyAxMiAxM1MyMCAxMS4yMSAyMCA5VjEyLjA4TDE5IDEyQzE2LjQxIDEyIDE0LjIgMTMuNjQgMTMuMzYgMTUuOTRMMTIgMTZDNy41OCAxNiA0IDE0LjIxIDQgMTJWOU00IDE0QzQgMTYuMjEgNy41OCAxOCAxMiAxOEgxM0MxMyAxOS4wNSAxMy4yNyAyMC4wNCAxMy43NSAyMC45TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTWludXNPdXRsaW5lID0gXCJNMjAgMTMuMDlWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM1M0IDQuNzkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxMi40NiAyMSAxMi45IDIxIDEzLjMzIDIwLjk0QzEzLjEyIDIwLjMzIDEzIDE5LjY4IDEzIDE5TDEzIDE4Ljk1QzEyLjY4IDE5IDEyLjM1IDE5IDEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjY1IDE2IDEzLjI3IDE1Ljk2IDEzLjg4IDE1Ljg5QzE0LjkzIDE0LjE2IDE2LjgzIDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5TTE4IDEyLjQ1QzE2LjcgMTMuNCAxNC40MiAxNCAxMiAxNFM3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuNDVNMTIgOUM4LjEzIDkgNiA3LjUgNiA3UzguMTMgNSAxMiA1IDE4IDYuNSAxOCA3IDE1Ljg3IDkgMTIgOU0yMyAxOFYyMEgxNVYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZU9mZiA9IFwiTTE5LjA3IDE1Ljg3QzE5LjY2IDE1LjMxIDIwIDE0LjY4IDIwIDE0VjE2LjhMMTkuMDcgMTUuODdNMjAgOUMyMCAxMC41NCAxOC4yNyAxMS44NiAxNS43MyAxMi41M0wxNy44OSAxNC42OUMxOS4xOSAxNCAyMCAxMy4wNCAyMCAxMlY5TTIwIDdDMjAgNC43OSAxNi40MiAzIDEyIDNDMTAuMTMgMyA4LjQyIDMuMzMgNy4wNiAzLjg2TDE0LjA2IDEwLjg2QzE3LjUgMTAuNDEgMjAgOC44NSAyMCA3TTIuMzkgMS43M0wxLjExIDNMNC4yMSA2LjFDNC4wOCA2LjM5IDQgNi42OSA0IDdDNCA4LjYzIDUuOTYgMTAuMDQgOC43NyAxMC42NkwxMS4wOCAxMi45N0M3LjEgMTIuNzQgNCAxMS4wNiA0IDlWMTJDNCAxNC4yMSA3LjU4IDE2IDEyIDE2QzEyLjY5IDE2IDEzLjM1IDE1Ljk1IDE0IDE1Ljg3TDE1LjY2IDE3LjU1QzE0LjU3IDE3Ljg0IDEzLjMyIDE4IDEyIDE4QzcuNTggMTggNCAxNi4yMSA0IDE0VjE3QzQgMTkuMjEgNy41OCAyMSAxMiAyMUMxNC4zMSAyMSAxNi4zOCAyMC41IDE3Ljg0IDE5LjczTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZU9mZk91dGxpbmUgPSBcIk0yLjM5IDEuNzNMMS4xMSAzTDQuMjEgNi4xQzQuMDggNi4zOSA0IDYuNjkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxNC4zIDIxIDE2LjM4IDIwLjUgMTcuODQgMTkuNzNMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTYgOS42NEM2Ljc2IDEwLjA3IDcuNyAxMC40MiA4Ljc2IDEwLjY1TDEyLjExIDE0QzEyLjA3IDE0IDEyLjA0IDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0TTEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjY4IDE2IDEzLjM0IDE1Ljk1IDE0IDE1Ljg3TDE2LjM0IDE4LjIzQzE1LjMzIDE4LjY1IDEzLjg3IDE5IDEyIDE5TTguNjQgNS40NEw3LjA2IDMuODZDOC40MiAzLjMzIDEwLjEzIDMgMTIgM0MxNi40MiAzIDIwIDQuNzkgMjAgN1YxNi44TDE4IDE0LjhWMTQuNzdMMTggMTQuNzhMMTYuNDUgMTMuMjVDMTcuMDUgMTMuMDMgMTcuNTggMTIuNzYgMTggMTIuNDVWOS42NEMxNi45NyAxMC4yMiAxNS42MSAxMC42NSAxNC4wNiAxMC44NkwxMi4xOSA5QzE1Ljk0IDguOTQgMTggNy41IDE4IDdDMTggNi41IDE1Ljg3IDUgMTIgNUMxMC42NiA1IDkuNTQgNS4xOCA4LjY0IDUuNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VPdXRsaW5lID0gXCJNMTIgM0M3LjU4IDMgNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFTMjAgMTkuMjEgMjAgMTdWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM00xOCAxN0MxOCAxNy41IDE1Ljg3IDE5IDEyIDE5UzYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNlMxNi4zOSAxNS41NSAxOCAxNC43N1YxN00xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRDOS41OCAxNCA3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExQzE0LjM5IDExIDE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuNDVNMTIgOUM4LjEzIDkgNiA3LjUgNiA3UzguMTMgNSAxMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUGx1cyA9IFwiTTE4LDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTEyLDNDMTYuNDIsMyAyMCw0Ljc5IDIwLDdDMjAsOS4yMSAxNi40MiwxMSAxMiwxMUM3LjU4LDExIDQsOS4yMSA0LDdDNCw0Ljc5IDcuNTgsMyAxMiwzTTQsOUM0LDExLjIxIDcuNTgsMTMgMTIsMTNDMTYuNDIsMTMgMjAsMTEuMjEgMjAsOVY5TDIwLDEyLjA4TDE5LDEyQzE2LjQxLDEyIDE0LjIsMTMuNjQgMTMuMzYsMTUuOTRMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEgxM0MxMywxOS4wNSAxMy4yNywyMC4wNCAxMy43NSwyMC45TDEyLDIxQzcuNTgsMjEgNCwxOS4yMSA0LDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUGx1c091dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIzIDE4VjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwVjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVmcmVzaCA9IFwiTTEyIDNDMTYuNDIgMyAyMCA0Ljc5IDIwIDdDMjAgOS4yMSAxNi40MiAxMSAxMiAxMUM3LjU4IDExIDQgOS4yMSA0IDdDNCA0Ljc5IDcuNTggMyAxMiAzTTQgOUM0IDExLjIxIDcuNTggMTMgMTIgMTNDMTMuMTEgMTMgMTQuMTggMTIuODkgMTUuMTQgMTIuNjhDMTQuMTkgMTMuNTQgMTMuNSAxNC42NyAxMy4xOCAxNS45NkwxMiAxNkM3LjU4IDE2IDQgMTQuMjEgNCAxMlY5TTIwIDlWMTFMMTkuNSAxMUwxOC45IDExLjAzQzE5LjYgMTAuNDMgMjAgOS43NCAyMCA5TTQgMTRDNCAxNi4yMSA3LjU4IDE4IDEyIDE4TDEzIDE3Ljk3QzEzLjA5IDE5LjAzIDEzLjQyIDIwIDEzLjk1IDIwLjg4TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0TTE5IDEzLjVDMjAuMTEgMTMuNSAyMS4xMSAxMy45NSAyMS44MyAxNC42N0wyMyAxMy41VjE3LjVIMTlMMjAuNzcgMTUuNzNDMjAuMzIgMTUuMjggMTkuNjkgMTUgMTkgMTVDMTcuNjIgMTUgMTYuNSAxNi4xMiAxNi41IDE3LjVDMTYuNSAxOC44OCAxNy42MiAyMCAxOSAyMEMxOS44MiAyMCAyMC41NCAxOS42MSAyMSAxOUgyMi43MUMyMi4xMiAyMC40NyAyMC42OCAyMS41IDE5IDIxLjVDMTYuNzkgMjEuNSAxNSAxOS43MSAxNSAxNy41QzE1IDE1LjI5IDE2Ljc5IDEzLjUgMTkgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVJlZnJlc2hPdXRsaW5lID0gXCJNNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjAzQzE4LjE3IDEyIDE4LjMzIDEyIDE4LjUgMTJDMTkgMTIgMTkuNSAxMi4wNyAyMCAxMi4xOFY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjE3IDIxIDEyLjMzIDIxIDEyLjUgMjFDMTIuMjQgMjAuMzcgMTIuMDkgMTkuNyAxMi4wMyAxOUwxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi4xNyAxNiAxMi4zNCAxNiAxMi41IDE2QzEyLjg1IDE1LjE4IDEzLjM0IDE0LjQ2IDEzLjk1IDEzLjg2QzEzLjMyIDEzLjk1IDEyLjY3IDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NU0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0xOCAxOC41TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41UzE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVTMTUuNzkgMTQuNSAxOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVtb3ZlID0gXCJNMTUuNDYsMTUuODhMMTYuODgsMTQuNDZMMTksMTYuNTlMMjEuMTIsMTQuNDdMMjIuNTMsMTUuODhMMjAuNDEsMThMMjIuNTQsMjAuMTJMMjEuMTIsMjEuNTRMMTksMTkuNDFMMTYuODgsMjEuNTNMMTUuNDcsMjAuMTJMMTcuNTksMThMMTUuNDYsMTUuODhNMTIsM0MxNi40MiwzIDIwLDQuNzkgMjAsN0MyMCw5LjIxIDE2LjQyLDExIDEyLDExQzcuNTgsMTEgNCw5LjIxIDQsN0M0LDQuNzkgNy41OCwzIDEyLDNNNCw5QzQsMTEuMjEgNy41OCwxMyAxMiwxM0MxNi40MiwxMyAyMCwxMS4yMSAyMCw5VjEyLjA4TDE5LDEyQzE2LjQxLDEyIDE0LjIsMTMuNjQgMTMuMzYsMTUuOTRMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEgxM0MxMywxOS4wNSAxMy4yNywyMC4wNCAxMy43NSwyMC45TDEyLDIxQzcuNTgsMjEgNCwxOS4yMSA0LDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVtb3ZlT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhMMjAuNDEgMTlcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNlYXJjaCA9IFwiTTE4LjY4LDEyLjMyQzE2LjkyLDEwLjU2IDE0LjA3LDEwLjU3IDEyLjMyLDEyLjMzQzEwLjU2LDE0LjA5IDEwLjU2LDE2Ljk0IDEyLjMyLDE4LjY5QzEzLjgxLDIwLjE3IDE2LjExLDIwLjQzIDE3Ljg5LDE5LjMyTDIxLDIyLjM5TDIyLjM5LDIxTDE5LjMsMTcuODlDMjAuNDMsMTYuMTIgMjAuMTcsMTMuOCAxOC42OCwxMi4zMk0xNy4yNywxNy4yN0MxNi4yOSwxOC4yNSAxNC43MSwxOC4yNCAxMy43MywxNy4yN0MxMi43NiwxNi4yOSAxMi43NiwxNC43MSAxMy43NCwxMy43M0MxNC43MSwxMi43NiAxNi4yOSwxMi43NiAxNy4yNywxMy43M0MxOC4yNCwxNC43MSAxOC4yNCwxNi4yOSAxNy4yNywxNy4yN00xMC45LDIwLjFDMTAuMjUsMTkuNDQgOS43NCwxOC42NSA5LjQyLDE3Ljc4QzYuMjcsMTcuMjUgNCwxNS43NiA0LDE0VjE3QzQsMTkuMjEgNy41OCwyMSAxMiwyMVYyMUMxMS42LDIwLjc0IDExLjIzLDIwLjQ0IDEwLjksMjAuMU00LDlWMTJDNCwxMy42OCA2LjA3LDE1LjEyIDksMTUuN0M5LDE1LjYzIDksMTUuNTcgOSwxNS41QzksMTQuNTcgOS4yLDEzLjY1IDkuNTgsMTIuODFDNi4zNCwxMi4zIDQsMTAuNzkgNCw5TTEyLDNDNy41OCwzIDQsNC43OSA0LDdDNCw5IDcsMTAuNjggMTAuODUsMTFIMTAuOUMxMi4xLDkuNzQgMTMuNzYsOSAxNS41LDlDMTYuNDEsOSAxNy4zMSw5LjE5IDE4LjE0LDkuNTZDMTkuMTcsOS4wOSAxOS44Nyw4LjEyIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VTZWFyY2hPdXRsaW5lID0gXCJNMTEgMTguOTVDNy43NyAxOC43MiA2IDE3LjQ1IDYgMTdWMTQuNzdDNy4xMyAxNS4zMiA4LjUgMTUuNjkgMTAgMTUuODdDMTAgMTUuMjEgMTAuMDQgMTQuNTQgMTAuMjEgMTMuODlDOC41IDEzLjY3IDYuOTcgMTMuMTYgNiAxMi40NVY5LjY0QzcuNDMgMTAuNDUgOS41IDEwLjk3IDExLjgyIDExQzExLjg1IDEwLjk3IDExLjg3IDEwLjkzIDExLjkgMTAuOUMxNC4xIDguNzEgMTcuNSA4LjQxIDIwIDEwLjAzVjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjggMjEgMTMgMjAuOTdDMTIuNjIgMjAuNzIgMTIuMjQgMjAuNDQgMTEuOSAyMC4xQzExLjU1IDE5Ljc0IDExLjI1IDE5LjM2IDExIDE4Ljk1TTEyIDVDMTUuODcgNSAxOCA2LjUgMTggN1MxNS44NyA5IDEyIDkgNiA3LjUgNiA3IDguMTMgNSAxMiA1TTIwLjMxIDE3LjlDMjAuNzUgMTcuMjEgMjEgMTYuMzggMjEgMTUuNUMyMSAxMyAxOSAxMSAxNi41IDExUzEyIDEzIDEyIDE1LjUgMTQgMjAgMTYuNSAyMEMxNy4zNyAyMCAxOC4xOSAxOS43NSAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMUwyMC4zMSAxNy45TTE2LjUgMThDMTUuMTIgMTggMTQgMTYuODggMTQgMTUuNVMxNS4xMiAxMyAxNi41IDEzIDE5IDE0LjEyIDE5IDE1LjUgMTcuODggMTggMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNldHRpbmdzID0gXCJNNywyMkg5VjI0SDdWMjJNMTEsMjJIMTNWMjRIMTFWMjJNMTUsMjJIMTdWMjRIMTVWMjJNMTIsM0MxNi40MiwzIDIwLDQuNzkgMjAsN0MyMCw5LjIxIDE2LjQyLDExIDEyLDExQzcuNTgsMTEgNCw5LjIxIDQsN0M0LDQuNzkgNy41OCwzIDEyLDNNNCw5QzQsMTEuMjEgNy41OCwxMyAxMiwxM0MxNi40MiwxMyAyMCwxMS4yMSAyMCw5VjEyQzIwLDE0LjIxIDE2LjQyLDE2IDEyLDE2QzcuNTgsMTYgNCwxNC4yMSA0LDEyVjlNNCwxNEM0LDE2LjIxIDcuNTgsMTggMTIsMThDMTYuNDIsMTggMjAsMTYuMjEgMjAsMTRWMTdDMjAsMTguMTkgMTguOTUsMTkuMjcgMTcuMjksMjBINi43MUM1LjA1LDE5LjI3IDQsMTguMTkgNCwxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNldHRpbmdzT3V0bGluZSA9IFwiTTEyIDNDNy41OCAzIDQgNC43OSA0IDdWMTdDNCAxOC4yIDUuMDYgMTkuMjcgNi43MyAyMEgxNy4yN0MxOC45NCAxOS4yNyAyMCAxOC4yIDIwIDE3VjdDMjAgNC43OSAxNi40MiAzIDEyIDNNMTggMTdDMTggMTcuNSAxNS44NyAxOSAxMiAxOVM2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZTMTYuMzkgMTUuNTUgMTggMTQuNzdWMTdNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTcgMjJIOVYyNEg3VjIyTTE1IDIySDE3VjI0SDE1VjIyTTExIDIySDEzVjI0SDExVjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlU3luYyA9IFwiTTE5LDEyVjEzLjVBNCw0IDAgMCwxIDIzLDE3LjVDMjMsMTguMzIgMjIuNzUsMTkuMDggMjIuMzMsMTkuNzFMMjEuMjQsMTguNjJDMjEuNDEsMTguMjggMjEuNSwxNy45IDIxLjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDE1VjE2LjVMMTYuNzUsMTQuMjVMMTksMTJNMTksMjNWMjEuNUE0LDQgMCAwLDEgMTUsMTcuNUMxNSwxNi42OCAxNS4yNSwxNS45MiAxNS42NywxNS4yOUwxNi43NiwxNi4zOEMxNi41OSwxNi43MiAxNi41LDE3LjEgMTYuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMjBWMTguNUwyMS4yNSwyMC43NUwxOSwyM00xMiwzQzE2LjQyLDMgMjAsNC43OSAyMCw3QzIwLDkuMjEgMTYuNDIsMTEgMTIsMTFDNy41OCwxMSA0LDkuMjEgNCw3QzQsNC43OSA3LjU4LDMgMTIsM000LDlDNCwxMS4yMSA3LjU4LDEzIDEyLDEzQzEzLjExLDEzIDE0LjE3LDEyLjg5IDE1LjE0LDEyLjY4QzE0LjE5LDEzLjU0IDEzLjUsMTQuNjcgMTMuMTgsMTUuOTZMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU0yMCw5VjExSDE5LjVMMTguOSwxMS4wM0MxOS42LDEwLjQzIDIwLDkuNzQgMjAsOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEwxMywxNy45N0MxMy4wOSwxOS4wMyAxMy40MiwyMCAxMy45NSwyMC44OEwxMiwyMUM3LjU4LDIxIDQsMTkuMjEgNCwxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVN5bmNPdXRsaW5lID0gXCJNMTIgMTZDMTIuNDEgMTYgMTIuODEgMTUuOTcgMTMuMjEgMTUuOTRDMTMuNCAxNS4xOCAxMy43MiAxNC40NiAxNC4xNiAxMy44M0MxMy40NyAxMy45NCAxMi43NCAxNCAxMiAxNEM5LjU4IDE0IDcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMS4xOUMxOC41IDExLjA3IDE5IDExIDE5LjU1IDExQzE5LjcgMTEgMTkuODUgMTEgMjAgMTEuMDNWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM1M0IDQuNzkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxMi42NiAyMSAxMy4zMSAyMC45NiAxMy45MiAyMC44OEMxMy41NyAyMC4yOSAxMy4zMSAxOS42NCAxMy4xNiAxOC45NEMxMi43OSAxOSAxMi40MSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNk0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0yMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41TTE5IDE4LjVMMjEuMjUgMjAuNzVMMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVhdGhTdGFyID0gXCJNMi4wNSwxM0gyMS45NUMyMS40NSwxOC4wNSAxNy4xOSwyMiAxMiwyMkM2LjgyLDIyIDIuNTUsMTguMDUgMi4wNSwxM00yMS45NSwxMUgyLjA1QzIuNTUsNS45NSA2LjgyLDIgMTIsMkMxNy4xOCwyIDIxLjQ1LDUuOTUgMjEuOTUsMTFNMTIsNi43NUEyLjUsMi41IDAgMCwwIDkuNSw0LjI1QTIuNSwyLjUgMCAwLDAgNyw2Ljc1QTIuNSwyLjUgMCAwLDAgOS41LDkuMjVBMi41LDIuNSAwIDAsMCAxMiw2Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYXRoU3RhclZhcmlhbnQgPSBcIk0yLjA1LDEzSDIxLjk0QzIxLjg4LDEzLjY5IDIxLjc0LDE0LjM2IDIxLjU0LDE1SDE0VjE3SDE3VjE5SDE1VjIxSDEyLjVWMjJDMTIuMzMsMjIgMTIuMTcsMjIgMTIsMjJDNi44MiwyMiAyLjU1LDE4LjA1IDIuMDUsMTNNMjEuOTQsMTFIMi4wNUMyLjU1LDUuOTUgNi44MiwyIDEyLDJDMTMuNjIsMiAxNS4xNSwyLjM5IDE2LjUsMy4wOFY1SDE4LjVWN0gyMFY5SDIxLjU0QzIxLjc0LDkuNjQgMjEuODgsMTAuMzEgMjEuOTQsMTFNMTIsNi43NUEyLjUsMi41IDAgMCwwIDkuNSw0LjI1QTIuNSwyLjUgMCAwLDAgNyw2Ljc1QTIuNSwyLjUgMCAwLDAgOS41LDkuMjVBMi41LDIuNSAwIDAsMCAxMiw2Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYXRobHlIYWxsb3dzID0gXCJNMTIsMkwxLDIxSDIzTDEyLDJNMTIuNzUsMTEuNDdDMTQuNTYsMTEuODcgMTUuNywxMy42NyAxNS4zLDE1LjVDMTUsMTYuNzUgMTQsMTcuNzUgMTIuNzUsMTguMDNWMTEuNDdNMTEuMjUsMThDOS40NCwxNy42IDguMywxNS44IDguNywxNEM5LDEyLjcyIDEwLDExLjcyIDExLjI1LDExLjQ0VjE4TTE2Ljg4LDE0LjcyQzE2LjgzLDEyLjM1IDE1LjA5LDEwLjM2IDEyLjc1LDEwVjYuMjlMMjAuNCwxOS41SDEzLjA3QzE1LjI5LDE5IDE2Ljg3LDE3LjAzIDE2Ljg4LDE0Ljc1VjE0LjcyTTExLjI1LDYuMjlWMTBDOC42LDEwLjQgNi43NywxMi44OCA3LjE4LDE1LjU0QzcuNSwxNy41IDguOTcsMTkuMTIgMTAuOTMsMTkuNTVIMy42TDExLjI1LDYuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGViaWFuID0gXCJNMTguNSwxMC41N0wxOC4zLDEwLjk0QzE4LjU2LDEwLjE2IDE4LjQxLDkuMzEgMTguNDUsOC41N0wxOC4zOCw4LjU1QzE4LjMxLDYuNyAxNi43MSw0LjczIDE1LjI5LDQuMDdDMTQuMDYsMy41IDEyLjE3LDMuNCAxMS4zLDMuODNDMTEuNDIsMy43MiAxMS45LDMuNjggMTEuNzUsMy42QzEwLjM4LDMuNzMgMTAuNjksNC4wNyA5LjY0LDQuMzRDOS4zNSw0LjYyIDEwLjUsNC4xMiA5Ljg3LDQuNUM5LjMxLDQuNjMgOS4wNSw0LjM4IDguMjIsNS4yNEM4LjI5LDUuMzYgOC43NSw0Ljg5IDguMzcsNS4zNkM3LjU4LDUuMjcgNS44OSw3LjE2IDUuNTMsNy43OEw1LjcyLDcuODJDNS40MSw4LjU5IDUsOS4wOCA0Ljk1LDkuNTRDNC44NywxMC42OCA0LjUsMTIuNzUgNS4wMywxMy4zOUw0Ljk3LDEzLjkyTDUuMiwxNC4zN0w1LjA4LDE0LjM4QzUuNjYsMTYuMjEgNS43LDE0LjQyIDYuNDcsMTYuMzJDNi4zNiwxNi4yOCA2LjI0LDE2LjI0IDYuMDgsMTZDNi4wNiwxNi4xOSA2LjMyLDE2LjY5IDYuNjIsMTcuMDhMNi41LDE3LjIyQzYuNjYsMTcuNTMgNi44MiwxNy42IDYuOTMsMTcuNzFDNi4zLDE3LjM2IDcuNSwxOC44NCA3LjYzLDE5LjAzTDcuNzMsMTguODZDNy43MSwxOS4xIDcuOSwxOS40MiA4LjI2LDE5Ljg3TDguNTYsMTkuODZDOC42OSwyMC4xIDkuMTQsMjAuNTQgOS40MSwyMC41Nkw5LjIzLDIwLjhDOS45MiwyMSA5LjU2LDIxLjA5IDEwLjQxLDIxLjM5TDEwLjI0LDIxLjA5QzEwLjY3LDIxLjQ2IDEwLjgsMjEuNzkgMTEuNDEsMjIuMDdDMTIuMjYsMjIuMzcgMTIuMzcsMjIuMjUgMTMuMjMsMjIuNUMxMi41LDIyLjUgMTEuNjQsMjIuNSAxMS4wNiwyMi4yOEM3LjEsMjEuMjEgMy41LDE2LjU2IDMuNzQsMTEuNzhDMy42OCwxMC44MSAzLjg0LDkuNiAzLjY4LDkuMzZDMy45LDguNjIgNC4xNiw3LjcyIDQuNjksNi42NUM0LjY1LDYuNTggNC43OCw2Ljg2IDUuMDUsNi40MUM1LjIxLDYuMDUgNS4zNCw1LjY2IDUuNTUsNS4zMUw1LjY1LDUuMjhDNS43Niw0LjY3IDcuMDgsMy43MyA3LjUsMy4yNlYzLjQ0QzguMzYsMi42MyA5LjksMi4wOSAxMC43NiwxLjcxQzEwLjUzLDEuOTYgMTEuMjcsMS42OCAxMS44LDEuNjVMMTEuMzEsMS45M0MxMS45NCwxLjc3IDExLjkxLDIgMTIuNTYsMS45QzEyLjMzLDEuOTMgMTIuMDYsMiAxMi4xLDIuMDZDMTIuODIsMi4xNCAxMi45NCwxLjg0IDEzLjYxLDIuMDZMMTMuNTYsMS44NkMxNC41LDIuMiAxNC42OSwyLjE0IDE1LjcsMi42OEMxNi4wNiwyLjY5IDE2LjEsMi40NiAxNi42MywyLjY4QzE2LjczLDIuODQgMTYuNjEsMi44NyAxNy4yNywzLjI3QzE3LjM0LDMuMjQgMTcuMTQsMy4wNSAxNywyLjlDMTguMywzLjYxIDE5Ljc1LDUuMTIgMjAuMTgsNi43NEMxOS43Nyw2IDIwLjE0LDcuMTMgMjAsNy4wN0MyMC4xOCw3LjU2IDIwLjMzLDguMDcgMjAuNDMsOC42QzIwLjMxLDguMTcgMjAuMDQsNy4xMiAxOS41Nyw2LjQ1QzE5LjU0LDYuODggMTguOTcsNi4xNSAxOS4yOCw3LjExQzE5LjUsNy40NSAxOS4zMyw2Ljc2IDE5LjYyLDcuMzZDMTkuNjIsNy42NSAxOS43Myw3Ljk0IDE5LjgsOC4zMUMxOS43LDguMjkgMTkuNTgsNy45IDE5LjUsOEMxOS42LDguNSAxOS43Nyw4LjcyIDE5LjgzLDguNzZDMTkuOCw4Ljg0IDE5LjcxLDguNjggMTkuNzEsOUMxOS43NSw5Ljc0IDE5LjkyLDkuNDMgMjAsOS40NkMxOS45MSw5LjgzIDE5LjU5LDEwLjI1IDE5Ljc1LDEwLjg4TDE5LjU1LDEwLjMyQzE5LjUsMTAuODUgMTkuNjYsMTAuOTUgMTkuNDIsMTEuNkMxOS42LDExIDE5LjU4LDEwLjUgMTkuNDEsMTAuNzVDMTkuNSwxMS41NyAxOC43NiwxMi4yIDE4LjgzLDEyLjczTDE4LjYyLDEyLjQ0QzE4LjA1LDEzLjI3IDE4LjYxLDEyLjg5IDE4LjIyLDEzLjVDMTguMzYsMTMuMjcgMTguMTUsMTMuNDIgMTguMzMsMTMuMTRDMTguMjEsMTMuMTUgMTcuNzgsMTMuNjcgMTcuMzksMTMuOTdDMTUuODUsMTUuMiAxNCwxNS4zNyAxMi4yNCwxNC43SDEyLjIzQzEyLjI0LDE0LjY2IDEyLjIzLDE0LjYxIDEyLjExLDE0LjUzQzEwLjYsMTMuMzggOS43MSwxMi40IDEwLDEwLjEyQzEwLjI1LDkuOTUgMTAuMzEsOSAxMC44NCw4LjY3QzExLjE2LDcuOTYgMTIuMTIsNy4zMSAxMy4xNSw3LjI5QzE0LjIsNy4yMyAxNS4wOSw3Ljg1IDE1LjU0LDguNDNDMTQuNzIsNy42OCAxMy40LDcuNDUgMTIuMjYsOEMxMS4xMSw4LjUzIDEwLjQyLDkuOCAxMC41LDExLjA3QzEwLjU2LDExIDEwLjYsMTEuMDUgMTAuNjIsMTAuODlDMTAuNTksMTMuMzYgMTMuMjgsMTUuMTcgMTUuMjIsMTQuMjZMMTUuMjUsMTQuMzFDMTYuMDMsMTQuMDkgMTUuOTMsMTMuOTIgMTYuNDQsMTMuNTZDMTYuNCwxMy42NSAxNi4xLDEzLjg2IDE2LjI4LDEzLjg2QzE2LjUzLDEzLjggMTcuMzEsMTMuMDcgMTcuNywxMi43M0MxNy44NywxMi4zNSAxNy42LDEyLjUgMTcuODUsMTIuMDRMMTguMTUsMTEuODlDMTguMzIsMTEuNDEgMTguNSwxMS4xNCAxOC41LDEwLjU3XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVidWdTdGVwSW50byA9IFwiTTEyLDIyQTIsMiAwIDAsMSAxMCwyMEEyLDIgMCAwLDEgMTIsMThBMiwyIDAgMCwxIDE0LDIwQTIsMiAwIDAsMSAxMiwyMk0xMywyVjEzTDE3LjUsOC41TDE4LjkyLDkuOTJMMTIsMTYuODRMNS4wOCw5LjkyTDYuNSw4LjVMMTEsMTNWMkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEZWJ1Z1N0ZXBPdXQgPSBcIk0xMiwyMkEyLDIgMCAwLDEgMTAsMjBBMiwyIDAgMCwxIDEyLDE4QTIsMiAwIDAsMSAxNCwyMEEyLDIgMCAwLDEgMTIsMjJNMTMsMTZIMTFWNkw2LjUsMTAuNUw1LjA4LDkuMDhMMTIsMi4xNkwxOC45Miw5LjA4TDE3LjUsMTAuNUwxMyw2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYnVnU3RlcE92ZXIgPSBcIk0xMiwxNEEyLDIgMCAwLDEgMTQsMTZBMiwyIDAgMCwxIDEyLDE4QTIsMiAwIDAsMSAxMCwxNkEyLDIgMCAwLDEgMTIsMTRNMjMuNDYsOC44NkwyMS44NywxNS43NUwxNSwxNC4xNkwxOC44LDExLjc4QzE3LjM5LDkuNSAxNC44Nyw4IDEyLDhDOC4wNSw4IDQuNzcsMTAuODYgNC4xMiwxNC42M0wyLjE1LDE0LjI4QzIuOTYsOS41OCA3LjA2LDYgMTIsNkMxNS41OCw2IDE4LjczLDcuODkgMjAuNSwxMC43MkwyMy40Niw4Ljg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlY2FncmFtID0gXCJNMjMsMTJMMjAuNTYsOS4yMkwyMC45LDUuNTRMMTcuMjksNC43MkwxNS40LDEuNTRMMTIsM0w4LjYsMS41NEw2LjcxLDQuNzJMMy4xLDUuNTNMMy40NCw5LjIxTDEsMTJMMy40NCwxNC43OEwzLjEsMTguNDdMNi43MSwxOS4yOUw4LjYsMjIuNDdMMTIsMjFMMTUuNCwyMi40NkwxNy4yOSwxOS4yOEwyMC45LDE4LjQ2TDIwLjU2LDE0Ljc4TDIzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURlY2FncmFtT3V0bGluZSA9IFwiTTIzLDEyTDIwLjU2LDE0Ljc4TDIwLjksMTguNDZMMTcuMjksMTkuMjhMMTUuNCwyMi40NkwxMiwyMUw4LjYsMjIuNDdMNi43MSwxOS4yOUwzLjEsMTguNDdMMy40NCwxNC43OEwxLDEyTDMuNDQsOS4yMUwzLjEsNS41M0w2LjcxLDQuNzJMOC42LDEuNTRMMTIsM0wxNS40LDEuNTRMMTcuMjksNC43MkwyMC45LDUuNTRMMjAuNTYsOS4yMkwyMywxMk0yMC4zMywxMkwxOC41LDkuODlMMTguNzQsNy4xTDE2LDYuNUwxNC41OCw0LjA3TDEyLDUuMThMOS40Miw0LjA3TDgsNi41TDUuMjYsNy4wOUw1LjUsOS44OEwzLjY3LDEyTDUuNSwxNC4xTDUuMjYsMTYuOUw4LDE3LjVMOS40MiwxOS45M0wxMiwxOC44MUwxNC41OCwxOS45MkwxNiwxNy41TDE4Ljc0LDE2Ljg5TDE4LjUsMTQuMUwyMC4zMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsID0gXCJNMTAgN0EzIDMgMCAwIDAgNyAxMFYxM0EzIDMgMCAwIDAgMTMgMTNWMTBBMyAzIDAgMCAwIDEwIDdNMTEgMTNBMSAxIDAgMCAxIDkgMTNWMTBBMSAxIDAgMCAxIDExIDEwTTE3IDdBMyAzIDAgMCAwIDE0IDEwVjEzQTMgMyAwIDAgMCAyMCAxM1YxMEEzIDMgMCAwIDAgMTcgN00xOCAxM0ExIDEgMCAwIDEgMTYgMTNWMTBBMSAxIDAgMCAxIDE4IDEwTTYgMTVBMSAxIDAgMSAxIDUgMTRBMSAxIDAgMCAxIDYgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbENvbW1hID0gXCJNMTAgN0EzIDMgMCAwIDEgMTMgMTBWMTNBMyAzIDAgMCAxIDcgMTNWMTBBMyAzIDAgMCAxIDEwIDdNMTAgOUExIDEgMCAwIDAgOSAxMFYxM0ExIDEgMCAwIDAgMTEgMTNWMTBBMSAxIDAgMCAwIDEwIDlNMTcgN0EzIDMgMCAwIDEgMjAgMTBWMTNBMyAzIDAgMCAxIDE0IDEzVjEwQTMgMyAwIDAgMSAxNyA3TTE3IDlBMSAxIDAgMCAwIDE2IDEwVjEzQTEgMSAwIDAgMCAxOCAxM1YxMEExIDEgMCAwIDAgMTcgOU01IDE0QTEgMSAwIDAgMCA0IDE1TDUgMThINlYxNUExIDEgMCAwIDAgNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsQ29tbWFEZWNyZWFzZSA9IFwiTTUgMTNWMTZINEwzIDEzQTEgMSAwIDAgMSA1IDEzTTE1IDE2VjE0TDEyIDE3TDE1IDIwVjE4SDIxVjE2TTEyIDExQTMgMyAwIDAgMSA2IDExVjhBMyAzIDAgMCAxIDEyIDhNMTAgOEExIDEgMCAwIDAgOCA4VjExQTEgMSAwIDAgMCAxMCAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsQ29tbWFJbmNyZWFzZSA9IFwiTTkgNUEzIDMgMCAwIDAgNiA4VjExQTMgMyAwIDAgMCAxMiAxMVY4QTMgMyAwIDAgMCA5IDVNMTAgMTFBMSAxIDAgMCAxIDggMTFWOEExIDEgMCAwIDEgMTAgOE0xNiAxNEEzIDMgMCAwIDAgMTkgMTFWOEEzIDMgMCAwIDAgMTMgOFYxMUEzIDMgMCAwIDAgMTYgMTRNMTUgOEExIDEgMCAwIDEgMTcgOFYxMUExIDEgMCAwIDEgMTUgMTFNMTkgMjBWMThIMTNWMTZIMTlWMTRMMjIgMTdNNSAxM1YxNkg0TDMgMTNBMSAxIDAgMCAxIDUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbERlY3JlYXNlID0gXCJNMTIsMTdMMTUsMjBWMThIMjFWMTZIMTVWMTRMMTIsMTdNOSw1QTMsMyAwIDAsMSAxMiw4VjExQTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSA2LDExVjhBMywzIDAgMCwxIDksNU05LDdBMSwxIDAgMCwwIDgsOFYxMUExLDEgMCAwLDAgOSwxMkExLDEgMCAwLDAgMTAsMTFWOEExLDEgMCAwLDAgOSw3TTQsMTJBMSwxIDAgMCwxIDUsMTNBMSwxIDAgMCwxIDQsMTRBMSwxIDAgMCwxIDMsMTNBMSwxIDAgMCwxIDQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbEluY3JlYXNlID0gXCJNMjIsMTdMMTksMjBWMThIMTNWMTZIMTlWMTRMMjIsMTdNOSw1QTMsMyAwIDAsMSAxMiw4VjExQTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSA2LDExVjhBMywzIDAgMCwxIDksNU05LDdBMSwxIDAgMCwwIDgsOFYxMUExLDEgMCAwLDAgOSwxMkExLDEgMCAwLDAgMTAsMTFWOEExLDEgMCAwLDAgOSw3TTE2LDVBMywzIDAgMCwxIDE5LDhWMTFBMywzIDAgMCwxIDE2LDE0QTMsMyAwIDAsMSAxMywxMVY4QTMsMyAwIDAsMSAxNiw1TTE2LDdBMSwxIDAgMCwwIDE1LDhWMTFBMSwxIDAgMCwwIDE2LDEyQTEsMSAwIDAsMCAxNywxMVY4QTEsMSAwIDAsMCAxNiw3TTQsMTJBMSwxIDAgMCwxIDUsMTNBMSwxIDAgMCwxIDQsMTRBMSwxIDAgMCwxIDMsMTNBMSwxIDAgMCwxIDQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlID0gXCJNMTksNEgxNS41TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5TTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVBbGVydCA9IFwiTTE3IDRWNkgzVjRINi41TDcuNSAzSDEyLjVMMTMuNSA0SDE3TTQgMTlWN0gxNlYxOUMxNiAyMC4xIDE1LjEgMjEgMTQgMjFINkM0LjkgMjEgNCAyMC4xIDQgMTlNMTkgMTVIMjFWMTdIMTlWMTVNMTkgN0gyMVYxM0gxOVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUFsZXJ0T3V0bGluZSA9IFwiTTQgMTlWN0gxNlYxOUMxNiAyMC4xIDE1LjEgMjEgMTQgMjFINkM0LjkgMjEgNCAyMC4xIDQgMTlNNiA5VjE5SDE0VjlINk0xMy41IDRIMTdWNkgzVjRINi41TDcuNSAzSDEyLjVMMTMuNSA0TTE5IDE3VjE1SDIxVjE3SDE5TTE5IDEzVjdIMjFWMTNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlQ2lyY2xlID0gXCJNMTIsMkMxNy41MywyIDIyLDYuNDcgMjIsMTJDMjIsMTcuNTMgMTcuNTMsMjIgMTIsMjJDNi40NywyMiAyLDE3LjUzIDIsMTJDMiw2LjQ3IDYuNDcsMiAxMiwyTTE3LDdIMTQuNUwxMy41LDZIMTAuNUw5LjUsN0g3VjlIMTdWN005LDE4SDE1QTEsMSAwIDAsMCAxNiwxN1YxMEg4VjE3QTEsMSAwIDAsMCA5LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTYsMTBWMTdBMSwxIDAgMCwxIDE1LDE4SDlBMSwxIDAgMCwxIDgsMTdWMTBIMTZNMTMuNSw2TDE0LjUsN0gxN1Y5SDdWN0g5LjVMMTAuNSw2SDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlQ2xvY2sgPSBcIk0xNSAxM0gxNi41VjE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzTTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzE0LjA5IDIzIDEyLjM2IDIyLjI0IDExLjEgMjFIOEM2LjkgMjEgNiAyMC4xIDYgMTlWN0gxOFY5LjI5QzIwLjg5IDEwLjE1IDIzIDEyLjgzIDIzIDE2TTE2IDExQzEzLjI0IDExIDExIDEzLjI0IDExIDE2QzExIDE4Ljc2IDEzLjI0IDIxIDE2IDIxQzE4Ljc2IDIxIDIxIDE4Ljc2IDIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExTTE5IDRWNkg1VjRIOC41TDkuNSAzSDE0LjVMMTUuNSA0SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUNsb2NrT3V0bGluZSA9IFwiTTE1IDEzSDE2LjVWMTUuODJMMTguOTQgMTcuMjNMMTguMTkgMTguNTNMMTUgMTYuNjlWMTNNMjMgMTZDMjMgMTkuODcgMTkuODcgMjMgMTYgMjNDMTQuMDkgMjMgMTIuMzYgMjIuMjQgMTEuMSAyMUg4QzYuOSAyMSA2IDIwLjEgNiAxOVY3SDE4VjkuMjlDMjAuODkgMTAuMTUgMjMgMTIuODMgMjMgMTZNOSAxNkM5IDEyLjEzIDEyLjEzIDkgMTYgOUg4VjE5SDkuNjdDOS4yNCAxOC4wOSA5IDE3LjA3IDkgMTZNMTYgMTFDMTMuMjQgMTEgMTEgMTMuMjQgMTEgMTZDMTEgMTguNzYgMTMuMjQgMjEgMTYgMjFDMTguNzYgMjEgMjEgMTguNzYgMjEgMTZDMjEgMTMuMjQgMTguNzYgMTEgMTYgMTFNMTUuNSA0SDE5VjZINVY0SDguNUw5LjUgM0gxNC41TDE1LjUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVFbXB0eSA9IFwiTTIwLjM3LDguOTFMMTkuMzcsMTAuNjRMNy4yNCwzLjY0TDguMjQsMS45MUwxMS4yOCwzLjY2TDEyLjY0LDMuMjlMMTYuOTcsNS43OUwxNy4zNCw3LjE2TDIwLjM3LDguOTFNNiwxOVY3SDExLjA3TDE4LDExVjE5QTIsMiAwIDAsMSAxNiwyMUg4QTIsMiAwIDAsMSA2LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUVtcHR5T3V0bGluZSA9IFwiTTIwLjM3LDguOTFMMTkuMzcsMTAuNjRMNy4yNCwzLjY0TDguMjQsMS45MUwxMS4yOCwzLjY2TDEyLjY0LDMuMjlMMTYuOTcsNS43OUwxNy4zNCw3LjE2TDIwLjM3LDguOTFNNiwxOVY3SDExLjA3TDE4LDExVjE5QTIsMiAwIDAsMSAxNiwyMUg4QTIsMiAwIDAsMSA2LDE5TTgsMTlIMTZWMTIuMkwxMC40Niw5SDhWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlRm9yZXZlciA9IFwiTTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOU04LjQ2LDExLjg4TDkuODcsMTAuNDdMMTIsMTIuNTlMMTQuMTIsMTAuNDdMMTUuNTMsMTEuODhMMTMuNDEsMTRMMTUuNTMsMTYuMTJMMTQuMTIsMTcuNTNMMTIsMTUuNDFMOS44OCwxNy41M0w4LjQ3LDE2LjEyTDEwLjU5LDE0TDguNDYsMTEuODhNMTUuNSw0TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5VjRIMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVGb3JldmVyT3V0bGluZSA9IFwiTTE0LjEyLDEwLjQ3TDEyLDEyLjU5TDkuODcsMTAuNDdMOC40NiwxMS44OEwxMC41OSwxNEw4LjQ3LDE2LjEyTDkuODgsMTcuNTNMMTIsMTUuNDFMMTQuMTIsMTcuNTNMMTUuNTMsMTYuMTJMMTMuNDEsMTRMMTUuNTMsMTEuODhMMTQuMTIsMTAuNDdNMTUuNSw0TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5VjRIMTUuNU02LDE5QTIsMiAwIDAsMCA4LDIxSDE2QTIsMiAwIDAsMCAxOCwxOVY3SDZWMTlNOCw5SDE2VjE5SDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVPZmYgPSBcIk0yIDUuMjdMMy4yOCA0TDUgNS43Mkw1LjI4IDZMNi4yOCA3TDE4IDE4LjcyTDIwIDIwLjcyTDE4LjczIDIyTDE3LjI3IDIwLjU0QzE2LjkzIDIwLjgzIDE2LjUgMjEgMTYgMjFIOEM2LjkgMjEgNiAyMC4xIDYgMTlWOS4yN0wyIDUuMjdNMTkgNFY2SDcuODJMNS44MiA0SDguNUw5LjUgM0gxNC41TDE1LjUgNEgxOU0xOCA3VjE2LjE4TDguODIgN0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVPZmZPdXRsaW5lID0gXCJNMiA1LjI3TDMuMjggNEw1IDUuNzJMNS4yOCA2TDYuMjggN0w4LjI4IDlMMTYgMTYuNzJMMTggMTguNzJMMjAgMjAuNzJMMTguNzMgMjJMMTcuMjcgMjAuNTRDMTYuOTMgMjAuODMgMTYuNSAyMSAxNiAyMUg4QzYuOSAyMSA2IDIwLjEgNiAxOVY5LjI3TDIgNS4yN004IDE5SDE1LjczTDggMTEuMjdWMTlNMTggN1YxNi4xOEwxNiAxNC4xOFY5SDEwLjgyTDguODIgN0gxOE0xNS41IDRIMTlWNkg3LjgyTDUuODIgNEg4LjVMOS41IDNIMTQuNUwxNS41IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlT3V0bGluZSA9IFwiTTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOU04LDlIMTZWMTlIOFY5TTE1LjUsNEwxNC41LDNIOS41TDguNSw0SDVWNkgxOVY0SDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlUmVzdG9yZSA9IFwiTTE0LDE0SDE2TDEyLDEwTDgsMTRIMTBWMThIMTRWMTRNNiw3SDE4VjE5QzE4LDE5LjUgMTcuOCwyMCAxNy4zOSwyMC4zOUMxNywyMC44IDE2LjUsMjEgMTYsMjFIOEM3LjUsMjEgNywyMC44IDYuNjEsMjAuMzlDNi4yLDIwIDYsMTkuNSA2LDE5VjdNMTksNFY2SDVWNEg4LjVMOS41LDNIMTQuNUwxNS41LDRIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlU3dlZXAgPSBcIk0xNSwxNkgxOVYxOEgxNVYxNk0xNSw4SDIyVjEwSDE1VjhNMTUsMTJIMjFWMTRIMTVWMTJNMywxOEEyLDIgMCAwLDAgNSwyMEgxMUEyLDIgMCAwLDAgMTMsMThWOEgzVjE4TTE0LDVIMTFMMTAsNEg2TDUsNUgyVjdIMTRWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVTd2VlcE91dGxpbmUgPSBcIk0xNSwxNkgxOVYxOEgxNVYxNk0xNSw4SDIyVjEwSDE1VjhNMTUsMTJIMjFWMTRIMTVWMTJNMTEsMTBWMThINVYxMEgxMU0xMyw4SDNWMThBMiwyIDAgMCwwIDUsMjBIMTFBMiwyIDAgMCwwIDEzLDE4VjhNMTQsNUgxMUwxMCw0SDZMNSw1SDJWN0gxNFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZVZhcmlhbnQgPSBcIk0yMS4wMywzTDE4LDIwLjMxQzE3LjgzLDIxLjI3IDE3LDIyIDE2LDIySDhDNywyMiA2LjE3LDIxLjI3IDYsMjAuMzFMMi45NywzSDIxLjAzTTUuMzYsNUw4LDIwSDE2TDE4LjY0LDVINS4zNk05LDE4VjE0SDEzVjE4SDlNMTMsMTMuMThMOS44MiwxMEwxMyw2LjgyTDE2LjE4LDEwTDEzLDEzLjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbHRhID0gXCJNMTIsNy43N0wxOC4zOSwxOEg1LjYxTDEyLDcuNzdNMTIsNEwyLDIwSDIyXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVzayA9IFwiTTMgNkgyMUMyMS41NSA2IDIyIDYuNDUgMjIgN0MyMiA3LjU1IDIxLjU1IDggMjEgOFYxOUgxOVYxN0gxNVYxOUgxM1Y4SDVWMTlIM1Y4QzIuNDUgOCAyIDcuNTUgMiA3QzIgNi40NSAyLjQ1IDYgMyA2TTE2IDEwLjVWMTFIMThWMTAuNUMxOCAxMC4yMiAxNy43OCAxMCAxNy41IDEwSDE2LjVDMTYuMjIgMTAgMTYgMTAuMjIgMTYgMTAuNU0xNiAxNC41VjE1SDE4VjE0LjVDMTggMTQuMjIgMTcuNzggMTQgMTcuNSAxNEgxNi41QzE2LjIyIDE0IDE2IDE0LjIyIDE2IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza0xhbXAgPSBcIk0xMC44NSwyTDkuMTgsNC41TDEwLjMyLDUuMjVMNy4xNCwxMEM3LjEsMTAgNy4wNSwxMCA3LDEwQTIsMiAwIDAsMCA1LDEyQzUsMTIuOTQgNS42NiwxMy43NSA2LjU4LDEzLjk1TDEwLjYyLDIwSDdWMjJIMTdWMjBIMTNMOC41MywxMy4yOEM4LjgzLDEyLjkyIDksMTIuNDcgOSwxMkM5LDExLjcgOC45MywxMS40IDguOCwxMS4xM0wxMiw2LjM3QzExLjc4LDguMDUgMTIuNzUsOS44OSAxNC40NSwxMUwxOC44OSw0LjM3QzE3LjIsMy4yNCAxNS4xMiwzLjA0IDEzLjY1LDMuODdMMTAuODUsMk0xOC4zMyw3TDE2LjY3LDkuNUMxNy4zNSw5Ljk1IDE4LjI5LDkuNzcgMTguNzUsOS4wOEMxOS4yMSw4LjM5IDE5LDcuNDYgMTguMzMsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrcGhvbmUgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTE1LDVWMTlIMTlWNUgxNU01LDVWOUgxM1Y1SDVNNSwxMVYxM0g3VjExSDVNOCwxMVYxM0gxMFYxMUg4TTExLDExVjEzSDEzVjExSDExTTUsMTRWMTZIN1YxNEg1TTgsMTRWMTZIMTBWMTRIOE0xMSwxNFYxNkgxM1YxNEgxMU0xMSwxN1YxOUgxM1YxN0gxMU04LDE3VjE5SDEwVjE3SDhNNSwxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza3RvcENsYXNzaWMgPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMTJDNCwxMy4xMSA0Ljg5LDE0IDYsMTRIMThDMTkuMTEsMTQgMjAsMTMuMTEgMjAsMTJWNEMyMCwyLjg5IDE5LjExLDIgMTgsMkg2TTYsNEgxOFYxMkg2VjRNNCwxNUMyLjg5LDE1IDIsMTUuODkgMiwxN1YyMEMyLDIxLjExIDIuODksMjIgNCwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFYxN0MyMiwxNS44OSAyMS4xMSwxNSAyMCwxNUg0TTgsMTdIMjBWMjBIOFYxN005LDE3Ljc1VjE5LjI1SDEzVjE3Ljc1SDlNMTUsMTcuNzVWMTkuMjVIMTlWMTcuNzVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza3RvcE1hYyA9IFwiTTIxLDE0SDNWNEgyMU0yMSwySDNDMS44OSwyIDEsMi44OSAxLDRWMTZBMiwyIDAgMCwwIDMsMThIMTBMOCwyMVYyMkgxNlYyMUwxNCwxOEgyMUEyLDIgMCAwLDAgMjMsMTZWNEMyMywyLjg5IDIyLjEsMiAyMSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURlc2t0b3BNYWNEYXNoYm9hcmQgPSBcIk0yMSwxNFY0SDNWMTRIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRMMTYsMjFWMjJIOFYyMUwxMCwxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU00LDVIMTVWMTBINFY1TTE2LDVIMjBWN0gxNlY1TTIwLDhWMTNIMTZWOEgyME00LDExSDlWMTNINFYxMU0xMCwxMUgxNVYxM0gxMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrdG9wVG93ZXIgPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsNFY2SDE2VjRIOE0xNiw4SDhWMTBIMTZWOE0xNiwxOEgxNFYyMEgxNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrdG9wVG93ZXJNb25pdG9yID0gXCJNMjIsMThIMTdBMSwxIDAgMCwxIDE2LDE3VjdBMSwxIDAgMCwxIDE3LDZIMjJBMSwxIDAgMCwxIDIzLDdWMTdBMSwxIDAgMCwxIDIyLDE4TTIyLDhIMTdWOUgyMlY4TTIyLDEwSDE3VjExSDIyVjEwTTksMTVWMTdIMTBWMThINVYxN0g2VjE1SDJBMSwxIDAgMCwxIDEsMTRWN0ExLDEgMCAwLDEgMiw2SDEzQTEsMSAwIDAsMSAxNCw3VjE0QTEsMSAwIDAsMSAxMywxNUg5TTEyLDhIM1YxM0gxMlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURldGFpbHMgPSBcIk02LjM4LDZIMTcuNjNMMTIsMTZMNi4zOCw2TTMsNEwxMiwyMEwyMSw0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2VG8gPSBcIk03LjczIDExLjkzQzcuNzMgMTMuNjUgNy43MSAxMy43NiA3LjUgMTRDNy4zMSAxNC4xNyA3LjEyIDE0LjIzIDYuNzQgMTQuMjNMNi4yMyAxNC4yNEw2LjIgMTEuOTdMNi4xOCA5LjdINi43QzcuMDUgOS43IDcuMyA5Ljc3IDcuNDcgOS45MUM3LjcxIDEwLjEyIDcuNzMgMTAuMTYgNy43MyAxMS45M00yMiA3LjVWMTYuNUMyMiAxNy42MSAyMS4xMSAxOC41IDIwIDE4LjVINEMyLjg5IDE4LjUgMiAxNy42MSAyIDE2LjVWNy41QzIgNi4zOSAyLjg5IDUuNSA0IDUuNUgyMEMyMS4xMSA1LjUgMjIgNi4zOSAyMiA3LjVNOC45MyAxMS43M0M4LjkgOS44OSA4Ljg4IDkuNzQgOC42NCA5LjM0QzguMjQgOC42NiA3Ljc5IDguNSA2LjI4IDguNUg1VjE1LjVINi4yMUM3LjU0IDE1LjUgOC4xIDE1LjMzIDguNSAxNC43OUM4LjkxIDE0LjI2IDkgMTMuODEgOC45MyAxMS43M00xMy4xMiA4LjVIMTEuNjRDMTAuMTUgOC41IDEwLjE0IDguNSA5LjkzIDguNzhTOS43IDkuMjEgOS43IDEyVjE0Ljk2TDkuOTcgMTUuMjNDMTAuMjIgMTUuNSAxMC4yOCAxNS41IDExLjY4IDE1LjVIMTMuMTJWMTQuMzFMMTIuMDMgMTQuMjdMMTAuOTMgMTQuMjRWMTIuNkwxMS42MSAxMi41N0wxMi4yNyAxMi41M1YxMS4zNEgxMC44OFY5LjdIMTMuMTJWOC41TTE5IDguNTZDMTkgOC41IDE4LjcgOC41IDE4LjM0IDguNUwxNy42NiA4LjU2TDE3LjA3IDEwLjkxQzE2LjY5IDEyLjM5IDE2LjQ1IDEzLjE4IDE2LjQgMTMuMDRDMTYuMzIgMTIuNzcgMTUuMjYgOC42IDE1LjI2IDguNTVDMTUuMjYgOC41IDE0Ljk1IDguNSAxNC41OCA4LjVIMTMuODlMMTQuMyAxMC4wNUMxNC41IDEwLjkyIDE0Ljg5IDEyLjMzIDE1LjExIDEzLjJDMTUuNDUgMTQuNTUgMTUuNTcgMTQuODUgMTUuODYgMTUuMTRDMTYuMDYgMTUuMzYgMTYuMzEgMTUuNSAxNi40NyAxNS41QzE2LjggMTUuNSAxNy4yMyAxNS4xNiAxNy4zNyAxNC43N0MxNy41IDE0LjUgMTkgOC42OSAxOSA4LjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURldmVsb3BlckJvYXJkID0gXCJNMjIsOVY3SDIwVjVBMiwyIDAgMCwwIDE4LDNINEEyLDIgMCAwLDAgMiw1VjE5QTIsMiAwIDAsMCA0LDIxSDE4QTIsMiAwIDAsMCAyMCwxOVYxN0gyMlYxNUgyMFYxM0gyMlYxMUgyMFY5SDIyTTE4LDE5SDRWNUgxOFYxOU02LDEzSDExVjE3SDZWMTNNMTIsN0gxNlYxMEgxMlY3TTYsN0gxMVYxMkg2VjdNMTIsMTFIMTZWMTdIMTJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2aWFudGFydCA9IFwiTTYsNkgxMkwxNCwySDE4VjZMMTQuNSwxM0gxOFYxOEgxMkwxMCwyMkg2VjE4TDkuNSwxMUg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2aWNlcyA9IFwiTTMgNkgyMVY0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEg3VjE4SDNWNk0xMyAxMkg5VjEzLjc4QzguMzkgMTQuMzMgOCAxNS4xMSA4IDE2QzggMTYuODkgOC4zOSAxNy42NyA5IDE4LjIyVjIwSDEzVjE4LjIyQzEzLjYxIDE3LjY3IDE0IDE2Ljg4IDE0IDE2UzEzLjYxIDE0LjMzIDEzIDEzLjc4VjEyTTExIDE3LjVDMTAuMTcgMTcuNSA5LjUgMTYuODMgOS41IDE2UzEwLjE3IDE0LjUgMTEgMTQuNSAxMi41IDE1LjE3IDEyLjUgMTYgMTEuODMgMTcuNSAxMSAxNy41TTIyIDhIMTZDMTUuNSA4IDE1IDguNSAxNSA5VjE5QzE1IDE5LjUgMTUuNSAyMCAxNiAyMEgyMkMyMi41IDIwIDIzIDE5LjUgMjMgMTlWOUMyMyA4LjUgMjIuNSA4IDIyIDhNMjEgMThIMTdWMTBIMjFWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhYmV0ZXMgPSBcIk0xNC43MyAyLjI5QTEgMSAwIDAgMSAxNi4xNCAzLjdMMTMgNi43OUwxMy43NiA3Ljc0TDE1LjcgMTIuNzRBMS40NiAxLjQ2IDAgMCAxIDE1LjM2IDE0LjI5TDEyLjI3IDE3LjM4QTEuNTUgMS41NSAwIDAgMSAxMC4xNSAxNy4zOEw1LjU1IDEyLjc4QTEuMzcgMS4zNyAwIDAgMSA1LjE1IDExLjc4TDQuNjUgNS4zNEg1LjcyQTEgMSAwIDAgMSA2LjQ3IDUuNjRMNi42MSA1LjgxTDcuNjYgOS4yOU03LjY2IDIyTDIgMTYuMzZMNC4xMiAxNC4yNEw5Ljc4IDE5LjlNMTkuNSA0LjVTMTcgNy4yNiAxNyA5QTIuNSAyLjUgMCAxIDAgMjIgOUMyMiA3LjI2IDE5LjUgNC41IDE5LjUgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpYWxwYWQgPSBcIk0xMiwxOUEyLDIgMCAwLDAgMTAsMjFBMiwyIDAgMCwwIDEyLDIzQTIsMiAwIDAsMCAxNCwyMUEyLDIgMCAwLDAgMTIsMTlNNiwxQTIsMiAwIDAsMCA0LDNBMiwyIDAgMCwwIDYsNUEyLDIgMCAwLDAgOCwzQTIsMiAwIDAsMCA2LDFNNiw3QTIsMiAwIDAsMCA0LDlBMiwyIDAgMCwwIDYsMTFBMiwyIDAgMCwwIDgsOUEyLDIgMCAwLDAgNiw3TTYsMTNBMiwyIDAgMCwwIDQsMTVBMiwyIDAgMCwwIDYsMTdBMiwyIDAgMCwwIDgsMTVBMiwyIDAgMCwwIDYsMTNNMTgsNUEyLDIgMCAwLDAgMjAsM0EyLDIgMCAwLDAgMTgsMUEyLDIgMCAwLDAgMTYsM0EyLDIgMCAwLDAgMTgsNU0xMiwxM0EyLDIgMCAwLDAgMTAsMTVBMiwyIDAgMCwwIDEyLDE3QTIsMiAwIDAsMCAxNCwxNUEyLDIgMCAwLDAgMTIsMTNNMTgsMTNBMiwyIDAgMCwwIDE2LDE1QTIsMiAwIDAsMCAxOCwxN0EyLDIgMCAwLDAgMjAsMTVBMiwyIDAgMCwwIDE4LDEzTTE4LDdBMiwyIDAgMCwwIDE2LDlBMiwyIDAgMCwwIDE4LDExQTIsMiAwIDAsMCAyMCw5QTIsMiAwIDAsMCAxOCw3TTEyLDdBMiwyIDAgMCwwIDEwLDlBMiwyIDAgMCwwIDEyLDExQTIsMiAwIDAsMCAxNCw5QTIsMiAwIDAsMCAxMiw3TTEyLDFBMiwyIDAgMCwwIDEwLDNBMiwyIDAgMCwwIDEyLDVBMiwyIDAgMCwwIDE0LDNBMiwyIDAgMCwwIDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXIgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNywxNVYxM0g3VjE1TDQsMTJMNyw5VjExSDE3VjlMMjAsMTJMMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXJPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNiwxNVYxM0g4VjE1TDUsMTJMOCw5VjExSDE2VjlMMTksMTJMMTYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXJWYXJpYW50ID0gXCJNNC4xNSwyMS40Nkw1LjQ3LDE5LjU4QzMuMzUsMTcuNzQgMiwxNS4wMyAyLDEyQTEwLDEwIDAgMCwxIDEyLDJDMTMuNzgsMiAxNS40NCwyLjQ2IDE2Ljg5LDMuMjdMMTguMjEsMS4zOUwxOS44NSwyLjU0TDE4LjUzLDQuNDJDMjAuNjUsNi4yNiAyMiw4Ljk3IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzEwLjIyLDIyIDguNTYsMjEuNTQgNy4xMSwyMC43M0w1Ljc5LDIyLjYxTDQuMTUsMjEuNDZNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjM1IDUsMTYuNDYgNi42MywxNy45M0wxNS43Myw0LjkyQzE0LjYyLDQuMzMgMTMuMzUsNCAxMiw0TTEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5LjY1IDE5LDcuNTQgMTcuMzcsNi4wN0w4LjI3LDE5LjA4QzkuMzgsMTkuNjcgMTAuNjUsMjAgMTIsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbW9uZCA9IFwiTTYsMkwyLDhMMTIsMjJMMjIsOEwxOCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbW9uZE91dGxpbmUgPSBcIk0xOCwySDZMMiw4TDEyLDIyTDIyLDhMMTgsMk00LjQzLDhMNy4wNyw0SDE2LjkzTDE5LjU3LDhMMTIsMTguNTZMNC40Myw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpYW1vbmRTdG9uZSA9IFwiTTE2LDlIMTlMMTQsMTZNMTAsOUgxNEwxMiwxN001LDlIOEwxMCwxNk0xNSw0SDE3TDE5LDdIMTZNMTEsNEgxM0wxNCw3SDEwTTcsNEg5TDgsN0g1TTYsMkwyLDhMMTIsMjJMMjIsOEwxOCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTEgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlMU91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDEwLjVDMTEuMTcgMTAuNSAxMC41IDExLjE3IDEwLjUgMTJTMTEuMTcgMTMuNSAxMiAxMy41IDEzLjUgMTIuODMgMTMuNSAxMiAxMi44MyAxMC41IDEyIDEwLjVcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlMiA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2UyT3V0bGluZSA9IFwiTTE5IDVWMTlINVY1SDE5TTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNNy41IDZDNi42NyA2IDYgNi42NyA2IDcuNVM2LjY3IDkgNy41IDkgOSA4LjMzIDkgNy41IDguMzMgNiA3LjUgNk0xNi41IDE1QzE1LjY3IDE1IDE1IDE1LjY3IDE1IDE2LjVDMTUgMTcuMzMgMTUuNjcgMTggMTYuNSAxOEMxNy4zMyAxOCAxOCAxNy4zMyAxOCAxNi41QzE4IDE1LjY3IDE3LjMzIDE1IDE2LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTMgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME03LDVBMiwyIDAgMCwwIDUsN0EyLDIgMCAwLDAgNyw5QTIsMiAwIDAsMCA5LDdBMiwyIDAgMCwwIDcsNU0xNywxNUEyLDIgMCAwLDAgMTUsMTdBMiwyIDAgMCwwIDE3LDE5QTIsMiAwIDAsMCAxOSwxN0EyLDIgMCAwLDAgMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTNPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTEyIDEwLjVDMTEuMiAxMC41IDEwLjUgMTEuMiAxMC41IDEyUzExLjIgMTMuNSAxMiAxMy41IDEzLjUgMTIuOCAxMy41IDEyIDEyLjggMTAuNSAxMiAxMC41TTcuNSA2QzYuNyA2IDYgNi43IDYgNy41UzYuNyA5IDcuNSA5IDkgOC4zIDkgNy41IDguMyA2IDcuNSA2TTE2LjUgMTVDMTUuNyAxNSAxNSAxNS43IDE1IDE2LjVDMTUgMTcuMyAxNS43IDE4IDE2LjUgMThDMTcuMyAxOCAxOCAxNy4zIDE4IDE2LjVDMTggMTUuNyAxNy4zIDE1IDE2LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTQgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTcsNUEyLDIgMCAwLDAgNSw3QTIsMiAwIDAsMCA3LDlBMiwyIDAgMCwwIDksN0EyLDIgMCAwLDAgNyw1TTE3LDE1QTIsMiAwIDAsMCAxNSwxN0EyLDIgMCAwLDAgMTcsMTlBMiwyIDAgMCwwIDE5LDE3QTIsMiAwIDAsMCAxNywxNU0xNyw1QTIsMiAwIDAsMCAxNSw3QTIsMiAwIDAsMCAxNyw5QTIsMiAwIDAsMCAxOSw3QTIsMiAwIDAsMCAxNyw1TTcsMTVBMiwyIDAgMCwwIDUsMTdBMiwyIDAgMCwwIDcsMTlBMiwyIDAgMCwwIDksMTdBMiwyIDAgMCwwIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTRPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM003LjUgNkM2LjY3IDYgNiA2LjY3IDYgNy41UzYuNjcgOSA3LjUgOSA5IDguMzMgOSA3LjUgOC4zMyA2IDcuNSA2TTE2LjUgMTVDMTUuNjcgMTUgMTUgMTUuNjcgMTUgMTYuNUMxNSAxNy4zMyAxNS42NyAxOCAxNi41IDE4QzE3LjMzIDE4IDE4IDE3LjMzIDE4IDE2LjVDMTggMTUuNjcgMTcuMzMgMTUgMTYuNSAxNU0xNi41IDZDMTUuNjcgNiAxNSA2LjY3IDE1IDcuNVMxNS42NyA5IDE2LjUgOUMxNy4zMyA5IDE4IDguMzMgMTggNy41UzE3LjMzIDYgMTYuNSA2TTcuNSAxNUM2LjY3IDE1IDYgMTUuNjcgNiAxNi41QzYgMTcuMzMgNi42NyAxOCA3LjUgMThTOSAxNy4zMyA5IDE2LjVDOSAxNS42NyA4LjMzIDE1IDcuNSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNSA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1TTE3LDVBMiwyIDAgMCwwIDE1LDdBMiwyIDAgMCwwIDE3LDlBMiwyIDAgMCwwIDE5LDdBMiwyIDAgMCwwIDE3LDVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTcsMTVBMiwyIDAgMCwwIDUsMTdBMiwyIDAgMCwwIDcsMTlBMiwyIDAgMCwwIDksMTdBMiwyIDAgMCwwIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTVPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTcuNSA2QzYuNyA2IDYgNi43IDYgNy41UzYuNyA5IDcuNSA5IDkgOC4zIDkgNy41IDguMyA2IDcuNSA2TTE2LjUgMTVDMTUuNyAxNSAxNSAxNS43IDE1IDE2LjVDMTUgMTcuMyAxNS43IDE4IDE2LjUgMThDMTcuMyAxOCAxOCAxNy4zIDE4IDE2LjVDMTggMTUuNyAxNy4zIDE1IDE2LjUgMTVNMTYuNSA2QzE1LjcgNiAxNSA2LjcgMTUgNy41UzE1LjcgOSAxNi41IDlDMTcuMyA5IDE4IDguMyAxOCA3LjVTMTcuMyA2IDE2LjUgNk0xMiAxMC41QzExLjIgMTAuNSAxMC41IDExLjIgMTAuNSAxMlMxMS4yIDEzLjUgMTIgMTMuNSAxMy41IDEyLjggMTMuNSAxMiAxMi44IDEwLjUgMTIgMTAuNU03LjUgMTVDNi43IDE1IDYgMTUuNyA2IDE2LjVDNiAxNy4zIDYuNyAxOCA3LjUgMThTOSAxNy4zIDkgMTYuNUM5IDE1LjcgOC4zIDE1IDcuNSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNiA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1TTE3LDEwQTIsMiAwIDAsMCAxNSwxMkEyLDIgMCAwLDAgMTcsMTRBMiwyIDAgMCwwIDE5LDEyQTIsMiAwIDAsMCAxNywxME0xNyw1QTIsMiAwIDAsMCAxNSw3QTIsMiAwIDAsMCAxNyw5QTIsMiAwIDAsMCAxOSw3QTIsMiAwIDAsMCAxNyw1TTcsMTBBMiwyIDAgMCwwIDUsMTJBMiwyIDAgMCwwIDcsMTRBMiwyIDAgMCwwIDksMTJBMiwyIDAgMCwwIDcsMTBNNywxNUEyLDIgMCAwLDAgNSwxN0EyLDIgMCAwLDAgNywxOUEyLDIgMCAwLDAgOSwxN0EyLDIgMCAwLDAgNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNk91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNNy41IDZDNi43IDYgNiA2LjcgNiA3LjVTNi43IDkgNy41IDkgOSA4LjMgOSA3LjUgOC4zIDYgNy41IDZNMTYuNSAxNUMxNS43IDE1IDE1IDE1LjcgMTUgMTYuNUMxNSAxNy4zIDE1LjcgMTggMTYuNSAxOEMxNy4zIDE4IDE4IDE3LjMgMTggMTYuNUMxOCAxNS43IDE3LjMgMTUgMTYuNSAxNU0xNi41IDEwLjVDMTUuNyAxMC41IDE1IDExLjIgMTUgMTJTMTUuNyAxMy41IDE2LjUgMTMuNUMxNy4zIDEzLjUgMTggMTIuOCAxOCAxMlMxNy4zIDEwLjUgMTYuNSAxMC41TTE2LjUgNkMxNS43IDYgMTUgNi43IDE1IDcuNVMxNS43IDkgMTYuNSA5QzE3LjMgOSAxOCA4LjMgMTggNy41UzE3LjMgNiAxNi41IDZNNy41IDEwLjVDNi43IDEwLjUgNiAxMS4yIDYgMTJTNi43IDEzLjUgNy41IDEzLjUgOSAxMi44IDkgMTIgOC4zIDEwLjUgNy41IDEwLjVNNy41IDE1QzYuNyAxNSA2IDE1LjcgNiAxNi41QzYgMTcuMyA2LjcgMTggNy41IDE4UzkgMTcuMyA5IDE2LjVDOSAxNS43IDguMyAxNSA3LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQxMCA9IFwiTTEyIDJDMTEuNSAyIDExIDIuMTkgMTAuNTkgMi41OUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUwxMC41OSAyMS40MUMxMS4zNyAyMi4yIDEyLjYzIDIyLjIgMTMuNDEgMjEuNDFMMjEuNDEgMTMuNDFDMjIuMiAxMi42MyAyMi4yIDExLjM3IDIxLjQxIDEwLjU5TDEzLjQxIDIuNTlDMTMgMi4xOSAxMi41IDIgMTIgMk0xNC4wNyA4LjIxQzE1LjUgOC4yMSAxNi42NCA5LjM2IDE2LjY0IDEwLjc4VjEzLjQyQzE2LjY0IDE0Ljg0IDE1LjUgMTYgMTQuMDcgMTZDMTIuNjQgMTYgMTEuNSAxNC44NCAxMS41IDEzLjQyVjEwLjc4QzExLjUgOS4zNiAxMi42NSA4LjIxIDE0LjA3IDguMjFNMTAuMzYgOC40MUgxMC41VjE2SDlWMTAuMjFMNy4yMiAxMC43NlY5LjUzTDEwLjM2IDguNDFNMTQuMDYgOS42NUMxMy40NyA5LjY1IDEzIDEwLjEzIDEzIDEwLjcxVjEzLjVDMTMgMTQuMDcgMTMuNDcgMTQuNTQgMTQuMDYgMTQuNTRDMTQuNjQgMTQuNTQgMTUuMTQgMTQuMDYgMTUuMTQgMTMuNVYxMC43MUMxNS4xNCAxMC4xMiAxNC42NCA5LjY1IDE0LjA2IDkuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQxME91dGxpbmUgPSBcIk0xMC41IDE2SDlWMTAuMjFMNy4yMiAxMC43NlY5LjUzTDEwLjM2IDguNDFIMTAuNVYxNk0xNC4wNyA4LjIxQzE1LjUgOC4yMSAxNi42NCA5LjM2IDE2LjY0IDEwLjc4VjEzLjQyQzE2LjY0IDE0Ljg0IDE1LjUgMTYgMTQuMDcgMTZDMTIuNjQgMTYgMTEuNSAxNC44NCAxMS41IDEzLjQyVjEwLjc4QzExLjUgOS4zNiAxMi42NSA4LjIxIDE0LjA3IDguMjFNMTQuMDYgOS42NUMxMy40NyA5LjY1IDEzIDEwLjEzIDEzIDEwLjcxVjEzLjVDMTMgMTQuMDcgMTMuNDcgMTQuNTQgMTQuMDYgMTQuNTRDMTQuNjQgMTQuNTQgMTUuMTQgMTQuMDYgMTUuMTQgMTMuNVYxMC43MUMxNS4xNCAxMC4xMiAxNC42NCA5LjY1IDE0LjA2IDkuNjVNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDRMMjAgMTJMMTIgMjBMNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDEyID0gXCJNMTIgMkwxLjUgOS42NEw1LjUgMjJIMTguNUwyMi41IDkuNjRMMTIgMk0xMC41IDE3SDguODlWMTAuODlMNyAxMS40N1YxMC4xOUwxMC4zMSA5SDEwLjVWMTdNMTcgMTdIMTEuNjZWMTUuOTFDMTEuNjYgMTUuOTEgMTUuMjMgMTIuNDUgMTUuMjMgMTEuNEMxNS4yMyAxMC4xMiAxNC4xOCAxMC4yNSAxNC4xOCAxMC4yNUMxMy41IDEwLjMgMTMgMTAuODcgMTMgMTEuNTVIMTEuNDRDMTEuNSAxMC4wOSAxMi43MiA4Ljk0IDE0LjI3IDlDMTYuNzQgOSAxNi43NyAxMC44NSAxNi43NyAxMS4zQzE2Ljc3IDEzLjA3IDEzLjU4IDE1Ljc3IDEzLjU4IDE1Ljc3TDE3IDE1Ljc1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEMTJPdXRsaW5lID0gXCJNMTIsMkwxLjUsOS42NEw1LjUsMjJIMTguNUwyMi41LDkuNjRMMTIsMk0xNywyMEg3TDMuODUsMTAuNEwxMiw0LjQ3TDIwLjE1LDEwLjRMMTcsMjBNMTcsMTUuNzVWMTdIMTEuNjZWMTUuOTFDMTEuNjYsMTUuOTEgMTUuMjMsMTIuNDUgMTUuMjMsMTEuNEMxNS4yMywxMC4xMiAxNC4xOCwxMC4yNSAxNC4xOCwxMC4yNUMxMy41LDEwLjMgMTMsMTAuODcgMTMsMTEuNTVIMTEuNDRDMTEuNSwxMC4wOSAxMi43Miw4Ljk0IDE0LjI3LDlDMTYuNzQsOSAxNi43NywxMC44NSAxNi43NywxMS4zQzE2Ljc3LDEzLjA3IDEzLjU4LDE1Ljc3IDEzLjU4LDE1Ljc3TDE3LDE1Ljc1TTEwLjUsMTdIOC44OVYxMC44OUw3LDExLjQ3VjEwLjE5TDEwLjMxLDlIMTAuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDIwID0gXCJNMjAuNDcgNi42MkwxMi41NyAyLjE4QzEyLjQxIDIuMDYgMTIuMjEgMiAxMiAyUzExLjU5IDIuMDYgMTEuNDMgMi4xOEwzLjUzIDYuNjJDMy4yMSA2Ljc5IDMgNy4xMiAzIDcuNVYxNi41QzMgMTYuODggMy4yMSAxNy4yMSAzLjUzIDE3LjM4TDExLjQzIDIxLjgyQzExLjU5IDIxLjk0IDExLjc5IDIyIDEyIDIyUzEyLjQxIDIxLjk0IDEyLjU3IDIxLjgyTDIwLjQ3IDE3LjM4QzIwLjc5IDE3LjIxIDIxIDE2Ljg4IDIxIDE2LjVWNy41QzIxIDcuMTIgMjAuNzkgNi43OSAyMC40NyA2LjYyTTExLjQ1IDE1Ljk2TDYuMzEgMTUuOTNWMTQuOTFDNi4zMSAxNC45MSA5Ljc0IDExLjU4IDkuNzUgMTAuNTdDOS43NSA5LjMzIDguNzMgOS40NiA4LjczIDkuNDZTNy43NSA5LjUgNy42NCAxMC43MUw2LjE0IDEwLjc2QzYuMTQgMTAuNzYgNi4xOCA4LjI2IDguODMgOC4yNkMxMS4yIDguMjYgMTEuMjMgMTAuMDQgMTEuMjMgMTAuNUMxMS4yMyAxMi4xOCA4LjE1IDE0Ljc3IDguMTUgMTQuNzdMMTEuNDUgMTQuNzZWMTUuOTZNMTcuNSAxMy41QzE3LjUgMTQuOSAxNi4zNSAxNi4wNSAxNC45MyAxNi4wNUMxMy41IDE2LjA1IDEyLjM2IDE0LjkgMTIuMzYgMTMuNVYxMC44NEMxMi4zNiA5LjQyIDEzLjUgOC4yNyAxNC45MyA4LjI3UzE3LjUgOS40MiAxNy41IDEwLjg0VjEzLjVNMTYgMTAuNzdWMTMuNTNDMTYgMTQuMTIgMTUuNSAxNC42IDE0LjkyIDE0LjZDMTQuMzQgMTQuNiAxMy44NiAxNC4xMiAxMy44NiAxMy41M1YxMC43N0MxMy44NiAxMC4xOCAxNC4zNCA5LjcxIDE0LjkyIDkuNzFDMTUuNSA5LjcxIDE2IDEwLjE4IDE2IDEwLjc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEMjBPdXRsaW5lID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1TTE0LjkzLDguMjdBMi41NywyLjU3IDAgMCwxIDE3LjUsMTAuODRWMTMuNUMxNy41LDE0LjkgMTYuMzUsMTYuMDUgMTQuOTMsMTYuMDVDMTMuNSwxNi4wNSAxMi4zNiwxNC45IDEyLjM2LDEzLjVWMTAuODRBMi41NywyLjU3IDAgMCwxIDE0LjkzLDguMjdNMTQuOTIsOS43MUMxNC4zNCw5LjcxIDEzLjg2LDEwLjE4IDEzLjg2LDEwLjc3VjEzLjUzQzEzLjg2LDE0LjEyIDE0LjM0LDE0LjYgMTQuOTIsMTQuNkMxNS41LDE0LjYgMTYsMTQuMTIgMTYsMTMuNTNWMTAuNzdDMTYsMTAuMTggMTUuNSw5LjcxIDE0LjkyLDkuNzFNMTEuNDUsMTQuNzZWMTUuOTZMNi4zMSwxNS45M1YxNC45MUM2LjMxLDE0LjkxIDkuNzQsMTEuNTggOS43NSwxMC41N0M5Ljc1LDkuMzMgOC43Myw5LjQ2IDguNzMsOS40NkM4LjczLDkuNDYgNy43NSw5LjUgNy42NCwxMC43MUw2LjE0LDEwLjc2QzYuMTQsMTAuNzYgNi4xOCw4LjI2IDguODMsOC4yNkMxMS4yLDguMjYgMTEuMjMsMTAuMDQgMTEuMjMsMTAuNUMxMS4yMywxMi4xOCA4LjE1LDE0Ljc3IDguMTUsMTQuNzdMMTEuNDUsMTQuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ0ID0gXCJNMTAuMjUgMTUuMTVMMTEuOTIgMTIuNDdWMTUuMTVIMTAuMjVNMjEuOTIgMjFIMi4wOEMxLjI0IDIxIC43MiAyMC4wOCAxLjE2IDE5LjM2TDExLjA4IDMuMTNDMTEuNSAyLjQ0IDEyLjUgMi40NCAxMi45MiAzLjEzTDIyLjg0IDE5LjM2QzIzLjI4IDIwLjA4IDIyLjc2IDIxIDIxLjkyIDIxTTE0LjI5IDE1LjE1SDEzLjQzVjEwLjQySDExLjkxTDguNzUgMTUuNDFMOC44MiAxNi4zNkgxMS45MlYxOEgxMy40M1YxNi4zNkgxNC4yOVYxNS4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDRPdXRsaW5lID0gXCJNMTMuNDMsMTUuMTVIMTQuMjlWMTYuMzZIMTMuNDNWMThIMTEuOTJWMTYuMzZIOC44Mkw4Ljc1LDE1LjQxTDExLjkxLDEwLjQySDEzLjQzVjE1LjE1TTEwLjI1LDE1LjE1SDExLjkyVjEyLjQ3TDEwLjI1LDE1LjE1TTIyLDIxSDJDMS42NCwyMSAxLjMxLDIwLjgxIDEuMTMsMjAuNUMwLjk1LDIwLjE4IDAuOTYsMTkuNzkgMS4xNSwxOS41TDExLjE1LDNDMTEuNSwyLjM4IDEyLjUsMi4zOCAxMi44NiwzTDIyLjg2LDE5LjVDMjMuMDQsMTkuNzkgMjMuMDUsMjAuMTggMjIuODcsMjAuNUMyMi42OSwyMC44MSAyMi4zNiwyMSAyMiwyMU0zLjc4LDE5SDIwLjIzTDEyLDUuNDNMMy43OCwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDYgPSBcIk0xMy4wNSAxMy41QzEzLjA1IDE0LjI3IDEyLjYxIDE0LjgzIDEyIDE0LjgzUzEwLjg1IDE0LjI3IDEwLjg1IDEzLjVMMTAuODMgMTIuNzhDMTAuODMgMTIuNzggMTEuMjEgMTIgMTEuOTUgMTIuMUMxMi41NiAxMi4xIDEzLjA1IDEyLjczIDEzLjA1IDEzLjVNMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNU0xNC41NSAxMy40MUMxNC41IDExLjQ1IDEzLjE5IDEwLjg3IDEyLjUzIDEwLjg3QzExLjQxIDEwLjg3IDEwLjg2IDExLjUzIDEwLjg2IDExLjUzUzEwLjg5IDkuNSAxMy4zOSA5LjUzVjguMzNDMTMuMzkgOC4zMyA5LjMzIDcuOTQgOS4zIDEyLjY2QzkuMjcgMTYuODYgMTIuNzcgMTYgMTIuNzcgMTZTMTQuNjEgMTUuNDcgMTQuNTUgMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ2T3V0bGluZSA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINU0xMy4zOSw5LjUzQzEwLjg5LDkuNSAxMC44NiwxMS41MyAxMC44NiwxMS41M0MxMC44NiwxMS41MyAxMS40MSwxMC44NyAxMi41MywxMC44N0MxMy4xOSwxMC44NyAxNC41LDExLjQ1IDE0LjU1LDEzLjQxQzE0LjYxLDE1LjQ3IDEyLjc3LDE2IDEyLjc3LDE2QzEyLjc3LDE2IDkuMjcsMTYuODYgOS4zLDEyLjY2QzkuMzMsNy45NCAxMy4zOSw4LjMzIDEzLjM5LDguMzNWOS41M00xMS45NSwxMi4xQzExLjIxLDEyIDEwLjgzLDEyLjc4IDEwLjgzLDEyLjc4TDEwLjg1LDEzLjVDMTAuODUsMTQuMjcgMTEuMzksMTQuODMgMTIsMTQuODNDMTIuNjEsMTQuODMgMTMuMDUsMTQuMjcgMTMuMDUsMTMuNUMxMy4wNSwxMi43MyAxMi41NiwxMi4xIDExLjk1LDEyLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ4ID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDguMjVDMTMuMzEgOC4yNSAxNC4zOCA5LjIgMTQuMzggMTAuMzhDMTQuMzggMTEuMDcgMTQgMTEuNjggMTMuNDQgMTIuMDdDMTQuMTQgMTIuNDYgMTQuNiAxMy4xMyAxNC42IDEzLjlDMTQuNiAxNS4xMiAxMy40NCAxNi4xIDEyIDE2LjFDMTAuNTYgMTYuMSA5LjQgMTUuMTIgOS40IDEzLjlDOS40IDEzLjEzIDkuODYgMTIuNDYgMTAuNTYgMTIuMDdDMTAgMTEuNjggOS42MyAxMS4wNyA5LjYzIDEwLjM4QzkuNjMgOS4yIDEwLjY5IDguMjUgMTIgOC4yNU0xMiA5LjVDMTEuNSA5LjUgMTEuMSA5Ljk1IDExLjEgMTAuNUMxMS4xIDExLjA1IDExLjUgMTEuNSAxMiAxMS41QzEyLjUgMTEuNSAxMi45IDExLjA1IDEyLjkgMTAuNUMxMi45IDkuOTUgMTIuNSA5LjUgMTIgOS41TTEyIDEyLjY1QzExLjM5IDEyLjY1IDEwLjkgMTMuMTQgMTAuOSAxMy43NUMxMC45IDE0LjM2IDExLjM5IDE0Ljg1IDEyIDE0Ljg1QzEyLjYxIDE0Ljg1IDEzLjEgMTQuMzYgMTMuMSAxMy43NUMxMy4xIDEzLjE0IDEyLjYxIDEyLjY1IDEyIDEyLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEOE91dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwyMCAxMkwxMiAyMEw0IDEyTTEyIDguMjVDMTMuMzEgOC4yNSAxNC4zOCA5LjIgMTQuMzggMTAuMzhDMTQuMzggMTEuMDcgMTQgMTEuNjggMTMuNDQgMTIuMDdDMTQuMTQgMTIuNDYgMTQuNiAxMy4xMyAxNC42IDEzLjlDMTQuNiAxNS4xMiAxMy40NCAxNi4xIDEyIDE2LjFDMTAuNTYgMTYuMSA5LjQgMTUuMTIgOS40IDEzLjlDOS40IDEzLjEzIDkuODYgMTIuNDYgMTAuNTYgMTIuMDdDMTAgMTEuNjggOS42MyAxMS4wNyA5LjYzIDEwLjM4QzkuNjMgOS4yIDEwLjY5IDguMjUgMTIgOC4yNU0xMiAxMi42NUMxMS4zOSAxMi42NSAxMC45IDEzLjE0IDEwLjkgMTMuNzVDMTAuOSAxNC4zNiAxMS4zOSAxNC44NSAxMiAxNC44NUMxMi42MSAxNC44NSAxMy4xIDE0LjM2IDEzLjEgMTMuNzVDMTMuMSAxMy4xNCAxMi42MSAxMi42NSAxMiAxMi42NU0xMiA5LjVDMTEuNSA5LjUgMTEuMSA5Ljk1IDExLjEgMTAuNUMxMS4xIDExLjA1IDExLjUgMTEuNSAxMiAxMS41QzEyLjUgMTEuNSAxMi45IDExLjA1IDEyLjkgMTAuNUMxMi45IDkuOTUgMTIuNSA5LjUgMTIgOS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZU11bHRpcGxlID0gXCJNMTkuNzgsM0gxMS4yMkMxMC41NSwzIDEwLDMuNTUgMTAsNC4yMlY4SDE2VjE0SDE5Ljc4QzIwLjQ1LDE0IDIxLDEzLjQ1IDIxLDEyLjc4VjQuMjJDMjEsMy41NSAyMC40NSwzIDE5Ljc4LDNNMTIuNDQsNi42N0MxMS43Niw2LjY3IDExLjIxLDYuMTIgMTEuMjEsNS40NEMxMS4yMSw0Ljc2IDExLjc2LDQuMjEgMTIuNDQsNC4yMUExLjIzLDEuMjMgMCAwLDEgMTMuNjcsNS40NEMxMy42Nyw2LjEyIDEzLjEyLDYuNjcgMTIuNDQsNi42N00xOC41NiwxMi43OEMxNy44OCwxMi43OSAxNy4zMywxMi4yNCAxNy4zMiwxMS41NkMxNy4zMSwxMC44OCAxNy44NiwxMC4zMyAxOC41NCwxMC4zMkMxOS4yMiwxMC4zMSAxOS43NywxMC44NiAxOS43OCwxMS41NkMxOS43NywxMi4yMyAxOS4yMywxMi43NyAxOC41NiwxMi43OE0xOC41Niw2LjY3QzE3Ljg4LDYuNjggMTcuMzMsNi4xMyAxNy4zMiw1LjQ1QzE3LjMxLDQuNzcgMTcuODYsNC4yMiAxOC41NCw0LjIxQzE5LjIyLDQuMiAxOS43Nyw0Ljc1IDE5Ljc4LDUuNDRDMTkuNzgsNi4xMiAxOS4yNCw2LjY2IDE4LjU2LDYuNjdNNC4yMiwxMEgxMi43OEExLjIyLDEuMjIgMCAwLDEgMTQsMTEuMjJWMTkuNzhDMTQsMjAuNDUgMTMuNDUsMjEgMTIuNzgsMjFINC4yMkMzLjU1LDIxIDMsMjAuNDUgMywxOS43OFYxMS4yMkMzLDEwLjU1IDMuNTUsMTAgNC4yMiwxME04LjUsMTQuMjhDNy44MywxNC4yOCA3LjI4LDE0LjgzIDcuMjgsMTUuNUM3LjI4LDE2LjE3IDcuODMsMTYuNzIgOC41LDE2LjcyQzkuMTcsMTYuNzIgOS43MiwxNi4xNyA5LjcyLDE1LjVBMS4yMiwxLjIyIDAgMCwwIDguNSwxNC4yOE01LjQ0LDExLjIyQzQuNzcsMTEuMjIgNC4yMiwxMS43NyA0LjIyLDEyLjQ0QTEuMjIsMS4yMiAwIDAsMCA1LjQ0LDEzLjY2QzYuMTEsMTMuNjYgNi42NiwxMy4xMSA2LjY2LDEyLjQ0VjEyLjQ0QzYuNjYsMTEuNzcgNi4xMSwxMS4yMiA1LjQ0LDExLjIyTTExLjU1LDE3LjMzQzEwLjg4LDE3LjMzIDEwLjMzLDE3Ljg4IDEwLjMzLDE4LjU1QzEwLjMzLDE5LjIyIDEwLjg4LDE5Ljc3IDExLjU1LDE5Ljc3QTEuMjIsMS4yMiAwIDAsMCAxMi43NywxOC41NUgxMi43N0MxMi43NywxNy44OCAxMi4yMywxNy4zNCAxMS41NiwxNy4zM0gxMS41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTQgOEMxMy40NSA4IDEzIDcuNTUgMTMgN1MxMy40NSA2IDE0IDZDMTQuNTUgNiAxNSA2LjQ1IDE1IDdDMTUgNy41NSAxNC41NSA4IDE0IDhNMTIgMTJWMTlINVYxMkgxMk0xMi43OCAxMEg0LjIyQzMuNTUgMTAgMyAxMC41NSAzIDExLjIyVjE5Ljc4QzMgMjAuNDUgMy41NSAyMSA0LjIyIDIxSDEyLjc4QzEzLjQ1IDIxIDE0IDIwLjQ1IDE0IDE5Ljc4VjExLjIyQzE0IDEwLjU1IDEzLjQ1IDEwIDEyLjc4IDEwTTE5Ljc4IDNIMTEuMjJDMTAuNTUgMyAxMCAzLjU1IDEwIDQuMjJWOEgxMlY1SDE5VjEySDE2VjE0SDE5Ljc4QzIwLjQ1IDE0IDIxIDEzLjQ1IDIxIDEyLjc4VjQuMjJDMjEgMy41NSAyMC40NSAzIDE5Ljc4IDNNMTcgOEMxNi40NSA4IDE2IDcuNTUgMTYgN1MxNi40NSA2IDE3IDZDMTcuNTUgNiAxOCA2LjQ1IDE4IDdDMTggNy41NSAxNy41NSA4IDE3IDhNMTcgMTFDMTYuNDUgMTEgMTYgMTAuNTUgMTYgMTBTMTYuNDUgOSAxNyA5QzE3LjU1IDkgMTggOS40NSAxOCAxMEMxOCAxMC41NSAxNy41NSAxMSAxNyAxMU03IDE1QzYuNDUgMTUgNiAxNC41NSA2IDE0UzYuNDUgMTMgNyAxM0M3LjU1IDEzIDggMTMuNDUgOCAxNEM4IDE0LjU1IDcuNTUgMTUgNyAxNU0xMCAxOEM5LjQ1IDE4IDkgMTcuNTUgOSAxN1M5LjQ1IDE2IDEwIDE2QzEwLjU1IDE2IDExIDE2LjQ1IDExIDE3QzExIDE3LjU1IDEwLjU1IDE4IDEwIDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlnaXRhbE9jZWFuID0gXCJNNiAxMkgyQzIgNi41IDYuNSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJWMThIOFYxNEgxMlYxOEMxNS4zMiAxOCAxOCAxNS4zMSAxOCAxMkMxOCA4LjY5IDE1LjMxIDYgMTIgNkM4LjY5IDYgNiA4LjY5IDYgMTJNOCAxOFYyMUg1VjE4SDhNMyAxNkg1VjE4SDNWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlwU3dpdGNoID0gXCJNMyw0SDdBMSwxIDAgMCwxIDgsNVYxOUExLDEgMCAwLDEgNywyMEgzQTEsMSAwIDAsMSAyLDE5VjVBMSwxIDAgMCwxIDMsNE0xMCw0SDE0QTEsMSAwIDAsMSAxNSw1VjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVY1QTEsMSAwIDAsMSAxMCw0TTE3LDRIMjFBMSwxIDAgMCwxIDIyLDVWMTlBMSwxIDAgMCwxIDIxLDIwSDE3QTEsMSAwIDAsMSAxNiwxOVY1QTEsMSAwIDAsMSAxNyw0TTQsMThINlYxM0g0VjE4TTExLDExSDEzVjZIMTFWMTFNMTgsMThIMjBWMTNIMThWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlyZWN0aW9ucyA9IFwiTTE0LDE0LjVWMTJIMTBWMTVIOFYxMUExLDEgMCAwLDEgOSwxMEgxNFY3LjVMMTcuNSwxMU0yMS43MSwxMS4yOUwxMi43MSwyLjI5SDEyLjdDMTIuMzEsMS45IDExLjY4LDEuOSAxMS4yOSwyLjI5TDIuMjksMTEuMjlDMS45LDExLjY4IDEuOSwxMi4zMiAyLjI5LDEyLjcxTDExLjI5LDIxLjcxQzExLjY4LDIyLjA5IDEyLjMxLDIyLjEgMTIuNzEsMjEuNzFMMjEuNzEsMTIuNzFDMjIuMSwxMi4zMiAyMi4xLDExLjY4IDIxLjcxLDExLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpcmVjdGlvbnNGb3JrID0gXCJNMyw0VjEyLjVMNiw5LjVMOSwxM0MxMCwxNCAxMCwxNSAxMCwxNVYyMUgxNFYxNEMxNCwxNCAxNCwxMyAxMy40NywxMkMxMi45NCwxMSAxMiwxMCAxMiwxMEw5LDYuNThMMTEuNSw0TTE4LDRMMTMuNTQsOC40N0wxNCw5QzE0LDkgMTQuOTMsMTAgMTUuNDcsMTFDMTUuNjgsMTEuNCAxNS44LDExLjc5IDE1Ljg3LDEyLjEzTDIxLDdcIjtcclxuZXhwb3J0IHZhciBtZGlEaXNjID0gXCJNMTIsMTRDMTAuODksMTQgMTAsMTMuMSAxMCwxMkMxMCwxMC44OSAxMC44OSwxMCAxMiwxMEMxMy4xMSwxMCAxNCwxMC44OSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc2NBbGVydCA9IFwiTTEwIDE0QzguOSAxNCA4IDEzLjEgOCAxMkM4IDEwLjkgOC45IDEwIDEwIDEwQzExLjEgMTAgMTIgMTAuOSAxMiAxMlMxMS4xIDE0IDEwIDE0TTEwIDRDNS42IDQgMiA3LjYgMiAxMlM1LjYgMjAgMTAgMjAgMTggMTYuNCAxOCAxMiAxNC40IDQgMTAgNE0yMCAxM0gyMlY3SDIwTTIwIDE3SDIyVjE1SDIwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc2NQbGF5ZXIgPSBcIk0xNC41LDEwLjM3QzE1LjU0LDEwLjM3IDE2LjM4LDkuNTMgMTYuMzgsOC41QzE2LjM4LDcuNDYgMTUuNTQsNi42MyAxNC41LDYuNjNDMTMuNDYsNi42MyAxMi42Myw3LjQ2IDEyLjYzLDguNUExLjg3LDEuODcgMCAwLDAgMTQuNSwxMC4zN00xNC41LDFBNy41LDcuNSAwIDAsMSAyMiw4LjVDMjIsMTAuNjcgMjEuMDgsMTIuNjMgMTkuNiwxNEg5LjRDNy45MywxMi42MyA3LDEwLjY3IDcsOC41QzcsNC4zNSAxMC4zNiwxIDE0LjUsMU02LDIxVjIySDRWMjFIMlYxNUgyMlYyMUgyMFYyMkgxOFYyMUg2TTQsMThWMTlIMTNWMThINE0xNSwxN1YxOUgxN1YxN0gxNU0xOSwxN0ExLDEgMCAwLDAgMTgsMThBMSwxIDAgMCwwIDE5LDE5QTEsMSAwIDAsMCAyMCwxOEExLDEgMCAwLDAgMTksMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzY29yZCA9IFwiTTIyLDI0TDE2Ljc1LDE5TDE3LjM4LDIxSDQuNUEyLjUsMi41IDAgMCwxIDIsMTguNVYzLjVBMi41LDIuNSAwIDAsMSA0LjUsMUgxOS41QTIuNSwyLjUgMCAwLDEgMjIsMy41VjI0TTEyLDYuOEM5LjMyLDYuOCA3LjQ0LDcuOTUgNy40NCw3Ljk1QzguNDcsNy4wMyAxMC4yNyw2LjUgMTAuMjcsNi41TDEwLjEsNi4zM0M4LjQxLDYuMzYgNi44OCw3LjUzIDYuODgsNy41M0M1LjE2LDExLjEyIDUuMjcsMTQuMjIgNS4yNywxNC4yMkM2LjY3LDE2LjAzIDguNzUsMTUuOSA4Ljc1LDE1LjlMOS40NiwxNUM4LjIxLDE0LjczIDcuNDIsMTMuNjIgNy40MiwxMy42MkM3LjQyLDEzLjYyIDkuMywxNC45IDEyLDE0LjlDMTQuNywxNC45IDE2LjU4LDEzLjYyIDE2LjU4LDEzLjYyQzE2LjU4LDEzLjYyIDE1Ljc5LDE0LjczIDE0LjU0LDE1TDE1LjI1LDE1LjlDMTUuMjUsMTUuOSAxNy4zMywxNi4wMyAxOC43MywxNC4yMkMxOC43MywxNC4yMiAxOC44NCwxMS4xMiAxNy4xMiw3LjUzQzE3LjEyLDcuNTMgMTUuNTksNi4zNiAxMy45LDYuMzNMMTMuNzMsNi41QzEzLjczLDYuNSAxNS41Myw3LjAzIDE2LjU2LDcuOTVDMTYuNTYsNy45NSAxNC42OCw2LjggMTIsNi44TTkuOTMsMTAuNTlDMTAuNTgsMTAuNTkgMTEuMTEsMTEuMTYgMTEuMSwxMS44NkMxMS4xLDEyLjU1IDEwLjU4LDEzLjEzIDkuOTMsMTMuMTNDOS4yOSwxMy4xMyA4Ljc3LDEyLjU1IDguNzcsMTEuODZDOC43NywxMS4xNiA5LjI4LDEwLjU5IDkuOTMsMTAuNTlNMTQuMSwxMC41OUMxNC43NSwxMC41OSAxNS4yNywxMS4xNiAxNS4yNywxMS44NkMxNS4yNywxMi41NSAxNC43NSwxMy4xMyAxNC4xLDEzLjEzQzEzLjQ2LDEzLjEzIDEyLjk0LDEyLjU1IDEyLjk0LDExLjg2QzEyLjk0LDExLjE2IDEzLjQ1LDEwLjU5IDE0LjEsMTAuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzaHdhc2hlciA9IFwiTTE4LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwyTTEwLDRBMSwxIDAgMCwxIDExLDVBMSwxIDAgMCwxIDEwLDZBMSwxIDAgMCwxIDksNUExLDEgMCAwLDEgMTAsNE03LDRBMSwxIDAgMCwxIDgsNUExLDEgMCAwLDEgNyw2QTEsMSAwIDAsMSA2LDVBMSwxIDAgMCwxIDcsNE0xOCwyMEg2VjhIMThWMjBNMTQuNjcsMTUuMzNDMTQuNjksMTYuMDMgMTQuNDEsMTYuNzEgMTMuOTEsMTcuMjFDMTIuODYsMTguMjYgMTEuMTUsMTguMjcgMTAuMDksMTcuMjFDOS41OSwxNi43MSA5LjMxLDE2LjAzIDkuMzMsMTUuMzNDOS40LDE0LjYyIDkuNjMsMTMuOTQgMTAsMTMuMzNDMTAuMzcsMTIuNSAxMC44MSwxMS43MyAxMS4zMywxMUwxMiwxMEMxMy43OSwxMi41OSAxNC42NywxNC4zNiAxNC42NywxNS4zM1wiO1xyXG5leHBvcnQgdmFyIG1kaURpc2h3YXNoZXJBbGVydCA9IFwiTTE2IDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNOCA0QzguNTUgNCA5IDQuNDUgOSA1UzguNTUgNiA4IDYgNyA1LjU1IDcgNSA3LjQ1IDQgOCA0TTUgNEM1LjU1IDQgNiA0LjQ1IDYgNVM1LjU1IDYgNSA2IDQgNS41NSA0IDUgNC40NSA0IDUgNE0xNiAyMEg0VjhIMTZWMjBNMTIuNjcgMTUuMzNDMTIuNjkgMTYuMDMgMTIuNDEgMTYuNzEgMTEuOTEgMTcuMjFDMTAuODYgMTguMjYgOS4xNSAxOC4yNyA4LjA5IDE3LjIxQzcuNTkgMTYuNzEgNy4zMSAxNi4wMyA3LjMzIDE1LjMzQzcuNCAxNC42MiA3LjYzIDEzLjk0IDggMTMuMzNDOC4zNyAxMi41IDguODEgMTEuNzMgOS4zMyAxMUwxMCAxMEMxMS43OSAxMi41OSAxMi42NyAxNC4zNiAxMi42NyAxNS4zM00yMCAxNUgyMlYxN0gyMFYxNU0yMCA3SDIyVjEzSDIwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzaHdhc2hlck9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNCA1Ljg5VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTggMjBINlY4SDYuMTFMMTAuNSAxMi4zN0MxMC4zMSAxMi42OSAxMC4xNSAxMyAxMCAxMy4zM0M5LjYzIDEzLjk0IDkuNCAxNC42MiA5LjMzIDE1LjMzQzkuMzEgMTYuMDMgOS41OSAxNi43MSAxMC4wOSAxNy4yMUMxMS4xNSAxOC4yNyAxMi44NiAxOC4yNiAxMy45MSAxNy4yMUMxNC4xNiAxNi45NyAxNC4zNSAxNi42OCAxNC41IDE2LjM2TDE4IDE5Ljg5VjIwTTExLjIgOEgxOFYxNC44TDIwIDE2LjhWNEMyMCAyLjkgMTkuMTEgMiAxOCAySDZDNS43NiAyIDUuNTQgMi4wNSA1LjMzIDIuMTNMMTEuMiA4TTEwIDRDMTAuNTUgNCAxMSA0LjQ1IDExIDVTMTAuNTUgNiAxMCA2IDkgNS41NSA5IDUgOS40NSA0IDEwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzcXVzID0gXCJNMTIuMDgsMjJDOS42MywyMiA3LjM5LDIxLjExIDUuNjYsMTkuNjNMMS40MSwyMC4yMUwzLjA1LDE2LjE1QzIuNSwxNC44OCAyLjE2LDEzLjUgMi4xNiwxMkMyLjE2LDYuNSA2LjYsMiAxMi4wOCwyQzE3LjU2LDIgMjIsNi41IDIyLDEyQzIyLDE3LjUgMTcuNTYsMjIgMTIuMDgsMjJNMTcuNSwxMS45N1YxMS45NEMxNy41LDkuMDYgMTUuNDYsNyAxMS45NSw3SDguMTZWMTdIMTEuOUMxNS40MywxNyAxNy41LDE0Ljg2IDE3LjUsMTEuOTdNMTIsMTQuNTRIMTAuODlWOS40NkgxMkMxMy42Miw5LjQ2IDE0LjcsMTAuMzkgMTQuNywxMlYxMkMxNC43LDEzLjYzIDEzLjYyLDE0LjU0IDEyLDE0LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVIb3Jpem9udGFsQ2VudGVyID0gXCJNOCAyVjVIMTBWMTlIOFYyMkg2VjE5SDRWNUg2VjJIOE0xNiAyVjdIMTRWMTdIMTZWMjJIMThWMTdIMjBWN0gxOFYySDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVIb3Jpem9udGFsTGVmdCA9IFwiTTIxIDdWMTdIMTZWMjJIMTRWMkgxNlY3SDIxTTUgMkgzVjIySDVWMTlIMTBWNUg1VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzdHJpYnV0ZUhvcml6b250YWxSaWdodCA9IFwiTTMgMTdWN0g4VjJIMTBWMjJIOFYxN0gzTTE5IDIySDIxVjJIMTlWNUgxNFYxOUgxOVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXN0cmlidXRlVmVydGljYWxCb3R0b20gPSBcIk03IDNIMTdWOEgyMlYxMEgyVjhIN1YzTTIgMTlWMjFIMjJWMTlIMTlWMTRINVYxOUgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVWZXJ0aWNhbENlbnRlciA9IFwiTTIgMTZINVYxNEgxOVYxNkgyMlYxOEgxOVYyMEg1VjE4SDJWMTZNMiA4SDdWMTBIMTdWOEgyMlY2SDE3VjRIN1Y2SDJWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXN0cmlidXRlVmVydGljYWxUb3AgPSBcIk0xNyAyMUg3VjE2SDJWMTRIMjJWMTZIMTdWMjFNMjIgNVYzSDJWNUg1VjEwSDE5VjVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nRmxpcHBlcnMgPSBcIk0yMC4yOCwzLjY2QzE5LjI4LDMuNDQgMTguNTQsMi4yNSAxNy41NywyLjA0QzE2LjYsMS44MyAxNS40LDIuNTkgMTQuNDIsMi4zN0MxMy4zOCwyIDEyLjIyLDIuMTMgMTEuMjgsMi43MUwxMS4yMSwxN0wxMSwxOEMxMC42NCwxOS42MiAxMS42NywyMS4yMiAxMy4yOSwyMS41OEMxNC45LDIxLjkzIDE2LjUsMjAuOTEgMTYuODYsMTkuMjlMMTcuMDcsMTguMjlMMjMsNS4yOEMyMi4zOSw0LjM1IDIxLjM5LDMuNzYgMjAuMjgsMy42Nk0xNC45MSwxOC44NkMxNC43OSwxOS40MSAxNC4yNSwxOS43NiAxMy43LDE5LjY1QzEzLjE0LDE5LjUzIDEyLjc5LDE5IDEyLjkxLDE4LjQzTDEzLjc3LDE0LjVDMTMuODYsMTMuOTcgMTQuMzcsMTMuNiAxNC45MiwxMy42OUMxNS40NiwxMy43OCAxNS44MywxNC4zIDE1Ljc0LDE0Ljg0QzE1Ljc0LDE0Ljg4IDE1LjczLDE0LjkxIDE1LjcyLDE0Ljk1TDE0LjkxLDE4Ljg2TTkuNzIsMjEuMzRDOS4zMywyMC43MyA5LjA4LDIwLjA1IDksMTkuMzRMOC4yNCwxNkM4LjEsMTUuNDcgOC40MSwxNC45MiA5LDE0Ljc2QzkuMDcsMTQuNzUgOS4xNSwxNC43NSA5LjIyLDE0Ljc2VjMuNDNDOC4zMSwzLjQzIDcuMjIsMi44NiA2LjM4LDMuMDZDNS41NCwzLjI2IDQuNjksNC40NCAzLjcyLDQuNjZDMi42MSw0Ljc2IDEuNjEsNS4zNSAxLDYuMjhMNi45MywxOS4yOEw3LjE0LDIwLjI4QzcuNSwyMS45IDkuMDksMjIuOTIgMTAuNzEsMjIuNTdIMTAuODFDMTAuMzgsMjIuMjIgMTAsMjEuODEgOS43MiwyMS4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdIZWxtZXQgPSBcIk0xNiwxMkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhBNCw0IDAgMCwxIDE2LDEyTTE5LjQ1LDcuODlMMTguMDcsOC41OEwxOC4zMiw5SDIwVjE1SDE4LjMzQzE3Ljg0LDE2LjAzIDE3LjExLDE2LjkyIDE2LjIxLDE3LjZDMTcuODUsMTguMTEgMTkuMSwxOC45MSAxOS42NywxOS44NkMxOC42OSwyMS4xIDE1LjYyLDIyIDEyLDIyQzguMzgsMjIgNS4zMSwyMS4xIDQuMzMsMTkuODZDNC45LDE4LjkxIDYuMTUsMTguMTEgNy43OSwxNy42QzYuODksMTYuOTIgNi4xNiwxNi4wMyA1LjY3LDE1SDRWOUg1LjY4QzYuMzcsNy41NCA3LjU0LDYuMzcgOSw1LjY4VjRIMTVWNS42OEMxNS42OCw2IDE2LjI5LDYuNDYgMTYuODIsN0wxOC41NSw2LjE0QzE5LjkzLDUuNDIgMjAsNC4xIDIwLDJIMjJDMjIsNC4wNiAyMiw2LjYyIDE5LjQ1LDcuODlNMTcsMTJBNSw1IDAgMCwwIDEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdTY3ViYSA9IFwiTTEyLDE1QzEzLjMxLDE1IDE0LjQyLDE1LjgzIDE0LjgzLDE3SDE4QTQsNCAwIDAsMSAyMiwyMVYyMkgyMFYyMUEyLDIgMCAwLDAgMTgsMTlIMTQuODNDMTQuNDIsMjAuMTcgMTMuMzEsMjEgMTIsMjFBMywzIDAgMCwxIDksMThBMywzIDAgMCwxIDEyLDE1TTEyLDE3QTEsMSAwIDAsMCAxMSwxOEExLDEgMCAwLDAgMTIsMTlBMSwxIDAgMCwwIDEzLDE4QTEsMSAwIDAsMCAxMiwxN00xOCwzQTIsMiAwIDAsMSAyMCw1VjEwQTIsMiAwIDAsMSAxOCwxMkgxNC44NUMxNC40MywxMiAxNC4wNSwxMi4yNCAxMy45LDEyLjYzQzEzLjcsMTMuMjMgMTMuMjMsMTMuNzEgMTIuNjIsMTMuOTFDMTEuNTgsMTQuMjUgMTAuNDQsMTMuNjggMTAuMSwxMi42M0M5Ljk1LDEyLjI0IDkuNTcsMTIgOS4xNSwxMkg2QTIsMiAwIDAsMSA0LDEwVjVBMiwyIDAgMCwxIDYsM0gxOE0xOCwxMFY1SDZWMTBIMTAuNjVDMTAuOSw5LjQ2IDExLjQxLDkuMDkgMTIsOUMxMi41OSw5LjA5IDEzLjEsOS40NiAxMy4zNSwxMEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdTY3ViYUZsYWcgPSBcIk0yLDZMMTksMjBIMlY2TTUsNEwyMiwxOFY0SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nU2N1YmFUYW5rID0gXCJNMTksMTguNUEyLjUsMi41IDAgMCwxIDE2LjUsMjFBMi41LDIuNSAwIDAsMSAxNCwxOC41QzE0LDE3LjQ3IDE0LjYyLDE2LjU5IDE1LjUsMTYuMjFWNkgxMVY3LjM1QzEyLjIyLDcuOTMgMTMsOS4xNSAxMywxMC41VjIySDZWMTAuNUM2LDkuMTUgNi43OCw3LjkzIDgsNy4zNVY2SDZWNEg4VjMuNUExLjUsMS41IDAgMCwxIDkuNSwyQTEuNSwxLjUgMCAwLDEgMTEsMy41VjRIMTUuNUEyLDIgMCAwLDEgMTcuNSw2VjE2LjIxQzE4LjM4LDE2LjU5IDE5LDE3LjQ3IDE5LDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nU2N1YmFUYW5rTXVsdGlwbGUgPSBcIk0yMiwxOC41QTIuNSwyLjUgMCAwLDEgMTkuNSwyMUEyLjUsMi41IDAgMCwxIDE3LDE4LjVDMTcsMTcuNDcgMTcuNjIsMTYuNTkgMTguNSwxNi4yMVY2SDE0VjcuMzVDMTUuMjIsNy45MyAxNiw5LjE1IDE2LDEwLjVWMjJIMlYxMC41QzIsOS4xNSAyLjc4LDcuOTMgNCw3LjM1VjZIMlY0SDRWMy41QTEuNSwxLjUgMCAwLDEgNS41LDJBMS41LDEuNSAwIDAsMSA3LDMuNVY0SDExVjMuNUExLjUsMS41IDAgMCwxIDEyLjUsMkExLjUsMS41IDAgMCwxIDE0LDMuNVY0SDE4LjVBMiwyIDAgMCwxIDIwLjUsNlYxNi4yMUMyMS4zOCwxNi41OSAyMiwxNy40NyAyMiwxOC41TTExLDcuMzVWNkg3VjcuMzVDOC4yMiw3LjkzIDksOS4xNSA5LDEwLjVDOSw5LjE1IDkuNzgsNy45MyAxMSw3LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpdmluZ1Nub3JrZWwgPSBcIk0xNiwzSDRBMiwyIDAgMCwwIDIsNVYxMEEyLDIgMCAwLDAgNCwxMkg3LjE1QzcuNTcsMTIgNy45NSwxMi4yNCA4LjEsMTIuNjNDOC40NCwxMy42OCA5LjU4LDE0LjI1IDEwLjYyLDEzLjkxQzExLjIzLDEzLjcxIDExLjcsMTMuMjMgMTEuOSwxMi42M0MxMi4wNSwxMi4yNCAxMi40MywxMiAxMi44NSwxMkgxNkEyLDIgMCAwLDAgMTgsMTBWNUEyLDIgMCAwLDAgMTYsM00xNiwxMEgxMS4zNUMxMS4xLDkuNDYgMTAuNTksOS4wOSAxMCw5QzkuNDEsOS4wOSA4LjksOS40NiA4LjY1LDEwSDRWNUgxNlYxME0yMiwyVjE1LjVBNi41LDYuNSAwIDAsMSAxNS41LDIyQzEzLjc5LDIyIDEyLjE1LDIxLjMyIDEwLjkzLDIwLjEyQzguOTUsMjAuNTggNi44OCwxOS43OSA1LjcxLDE4LjEyTDcuNjIsMTcuMjlDOC41LDE4LjIyIDkuODQsMTguNSAxMSwxOEMxMS4yLDE3LjkxIDExLjM5LDE3LjggMTEuNTYsMTcuNjdDMTIuNCwxNy4wNSAxMi44NywxNi4wNCAxMi43OCwxNUwxNC42OSwxNC4xN0MxNS4xLDE2LjA0IDE0LjQxLDE4IDEyLjksMTkuMTdDMTMuNjYsMTkuNzEgMTQuNTcsMjAgMTUuNSwyMEMxOCwyMCAyMCwxOCAyMCwxNS41VjJIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aXNpb24gPSBcIk0xOSwxM0g1VjExSDE5VjEzTTEyLDVBMiwyIDAgMCwxIDE0LDdBMiwyIDAgMCwxIDEyLDlBMiwyIDAgMCwxIDEwLDdBMiwyIDAgMCwxIDEyLDVNMTIsMTVBMiwyIDAgMCwxIDE0LDE3QTIsMiAwIDAsMSAxMiwxOUEyLDIgMCAwLDEgMTAsMTdBMiwyIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpdmlzaW9uQm94ID0gXCJNMTcsMTNWMTFIN1YxM0gxN00xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOU0xMiw3QTEsMSAwIDAsMCAxMSw4QTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMyw4QTEsMSAwIDAsMCAxMiw3TTEyLDE1QTEsMSAwIDAsMCAxMSwxNkExLDEgMCAwLDAgMTIsMTdBMSwxIDAgMCwwIDEzLDE2QTEsMSAwIDAsMCAxMiwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEbG5hID0gXCJNMjEuMzgsMTIuNTZIMTIuODVDMTEuOTcsMTIuNTYgMTEuMSwxMi45NiAxMC42MSwxMy42MVYxMy42QzEwLjEyLDE0LjI4IDkuMzIsMTQuNzIgOC40MSwxNC43MkM2LjkyLDE0LjcyIDUuNzEsMTMuNSA1LjcxLDEyQzUuNzEsMTAuNSA2LjkyLDkuMzEgOC40MSw5LjMxQzkuMzIsOS4zMSAxMC4xMiw5Ljc1IDEwLjYxLDEwLjQzVjEwLjQyQzExLjEsMTEuMDcgMTEuOTcsMTEuNSAxMi44NSwxMS41SDIxLjI5QzIxLjQ1LDExLjUgMjIsMTEuNCAyMiwxMC42N0MyMS4yNiw2LjQzIDE3LjEsMy4xOCAxMi4wNiwzLjE4QzguOTYsMy4xOCA2LjE5LDQuNDEgNC4zNCw2LjM1QzQuMDUsNi43OSA0LjM1LDYuOTIgNC42Myw2Ljk2SDEwLjE0QzExLDYuOTYgMTEuODksNi41NCAxMi4zOCw1Ljg5VjUuOTFDMTIuODgsNS4yMyAxMy42Nyw0Ljc4IDE0LjU4LDQuNzhDMTYuMDcsNC43OCAxNy4yOCw2IDE3LjI4LDcuNUMxNy4yOCw5IDE2LjA3LDEwLjIgMTQuNTgsMTAuMkMxMy42NywxMC4yIDEyLjg4LDkuNzUgMTIuMzgsOS4wN1Y5LjA4QzExLjg5LDguNDQgMTEsOC4wMyAxMC4xNCw4LjAzSDQuMTNMNC4xNSw4LjAzQzQuMTUsOC4wMyAzLjI2LDggMi43Miw4Ljc1QzIuMyw5LjQyIDIsMTAuODUgMiwxMkMyLDEzLjE2IDIuMTcsMTQuMjEgMi43MiwxNS4yN0MzLjE5LDE2LjAzIDQuMTUsMTYgNC4xNSwxNkg0LjExTDEwLjE0LDE2QzExLDE2IDExLjg5LDE1LjU4IDEyLjM4LDE0LjkzVjE0Ljk0QzEyLjg4LDE0LjI2IDEzLjY3LDEzLjgxIDE0LjU4LDEzLjgxQzE2LjA3LDEzLjgxIDE3LjI4LDE1LjAzIDE3LjI4LDE2LjVDMTcuMjgsMTggMTYuMDcsMTkuMjMgMTQuNTgsMTkuMjNDMTMuNjcsMTkuMjMgMTIuODgsMTguNzggMTIuMzgsMTguMVYxOC4xMkMxMS44OSwxNy40NyAxMSwxNy4wNSAxMC4xNCwxNy4wNUg0LjY0QzQuMzYsMTcuMDkgNC4wNiwxNy4yMiA0LjMyLDE3LjY0QzYuMTcsMTkuNTggOC45NSwyMC44MiAxMi4wNiwyMC44MkMxNy4xMSwyMC44MiAyMS4yOCwxNy41NyAyMiwxMy4zMUMyMiwxMi43MiAyMS41OSwxMi41OCAyMS4zOCwxMi41NlwiO1xyXG5leHBvcnQgdmFyIG1kaURuYSA9IFwiTTQsMkg2VjRDNiw1LjQ0IDYuNjgsNi42MSA3Ljg4LDcuNzhDOC43NCw4LjYxIDkuODksOS40MSAxMS4wOSwxMC4yTDkuMjYsMTEuMzlDOC4yNywxMC43MiA3LjMxLDEwIDYuNSw5LjIxQzUuMDcsNy44MiA0LDYuMSA0LDRWMk0xOCwySDIwVjRDMjAsNi4xIDE4LjkzLDcuODIgMTcuNSw5LjIxQzE2LjA5LDEwLjU5IDE0LjI5LDExLjczIDEyLjU0LDEyLjg0QzEwLjc5LDEzLjk2IDkuMDksMTUuMDUgNy44OCwxNi4yMkM2LjY4LDE3LjM5IDYsMTguNTYgNiwyMFYyMkg0VjIwQzQsMTcuOSA1LjA3LDE2LjE4IDYuNSwxNC43OUM3LjkxLDEzLjQxIDkuNzEsMTIuMjcgMTEuNDYsMTEuMTZDMTMuMjEsMTAuMDQgMTQuOTEsOC45NSAxNi4xMiw3Ljc4QzE3LjMyLDYuNjEgMTgsNS40NCAxOCw0VjJNMTQuNzQsMTIuNjFDMTUuNzMsMTMuMjggMTYuNjksMTQgMTcuNSwxNC43OUMxOC45MywxNi4xOCAyMCwxNy45IDIwLDIwVjIySDE4VjIwQzE4LDE4LjU2IDE3LjMyLDE3LjM5IDE2LjEyLDE2LjIyQzE1LjI2LDE1LjM5IDE0LjExLDE0LjU5IDEyLjkxLDEzLjhMMTQuNzQsMTIuNjFNNywzSDE3VjRMMTYuOTQsNC41SDcuMDZMNyw0VjNNNy42OCw2SDE2LjMyQzE2LjA4LDYuMzQgMTUuOCw2LjY5IDE1LjQyLDcuMDZMMTQuOTEsNy41SDkuMDdMOC41OCw3LjA2QzguMiw2LjY5IDcuOTIsNi4zNCA3LjY4LDZNOS4wOSwxNi41SDE0LjkzTDE1LjQyLDE2Ljk0QzE1LjgsMTcuMzEgMTYuMDgsMTcuNjYgMTYuMzIsMThINy42OEM3LjkyLDE3LjY2IDguMiwxNy4zMSA4LjU4LDE2Ljk0TDkuMDksMTYuNU03LjA2LDE5LjVIMTYuOTRMMTcsMjBWMjFIN1YyMEw3LjA2LDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG5zID0gXCJNNyw5QTIsMiAwIDAsMSA1LDdBMiwyIDAgMCwxIDcsNUEyLDIgMCAwLDEgOSw3QTIsMiAwIDAsMSA3LDlNMjAsM0g0QTEsMSAwIDAsMCAzLDRWMTBBMSwxIDAgMCwwIDQsMTFIMjBBMSwxIDAgMCwwIDIxLDEwVjRBMSwxIDAgMCwwIDIwLDNNNywxOUEyLDIgMCAwLDEgNSwxN0EyLDIgMCAwLDEgNywxNUEyLDIgMCAwLDEgOSwxN0EyLDIgMCAwLDEgNywxOU0yMCwxM0g0QTEsMSAwIDAsMCAzLDE0VjIwQTEsMSAwIDAsMCA0LDIxSDIwQTEsMSAwIDAsMCAyMSwyMFYxNEExLDEgMCAwLDAgMjAsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG5zT3V0bGluZSA9IFwiTTE5LDE1VjE5SDVWMTVIMTlNMjAsMTNINEExLDEgMCAwLDAgMywxNFYyMEExLDEgMCAwLDAgNCwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTRBMSwxIDAgMCwwIDIwLDEzTTcsMTguNUExLjUsMS41IDAgMCwxIDUuNSwxN0ExLjUsMS41IDAgMCwxIDcsMTUuNUExLjUsMS41IDAgMCwxIDguNSwxN0ExLjUsMS41IDAgMCwxIDcsMTguNU0xOSw1VjlINVY1SDE5TTIwLDNINEExLDEgMCAwLDAgMyw0VjEwQTEsMSAwIDAsMCA0LDExSDIwQTEsMSAwIDAsMCAyMSwxMFY0QTEsMSAwIDAsMCAyMCwzTTcsOC41QTEuNSwxLjUgMCAwLDEgNS41LDdBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDguNSw3QTEuNSwxLjUgMCAwLDEgNyw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9Ob3REaXN0dXJiID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTcsMTNIN1YxMUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb05vdERpc3R1cmJPZmYgPSBcIk0xNywxMVYxM0gxNS41NEwyMC4yMiwxNy42OEMyMS4zNCwxNi4wNyAyMiwxNC4xMSAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQzkuODksMiA3LjkzLDIuNjYgNi4zMiwzLjc4TDEzLjU0LDExSDE3TTIuMjcsMi4yN0wxLDMuNTRMMy43OCw2LjMyQzIuNjYsNy45MyAyLDkuODkgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkMxNC4xMSwyMiAxNi4wNywyMS4zNCAxNy42OCwyMC4yMkwyMC40NiwyM0wyMS43MywyMS43M0wyLjI3LDIuMjdNNywxM1YxMUg4LjQ2TDEwLjQ2LDEzSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja0JvdHRvbSA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY2QTIgMiAwIDAgMCAyMCA0TTIwIDEzSDRWNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrTGVmdCA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY2QTIgMiAwIDAgMCAyMCA0TTIwIDE4SDlWNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrUmlnaHQgPSBcIk0yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWNkEyIDIgMCAwIDAgMjAgNE0xNSAxOEg0VjZIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja1RvcCA9IFwiTTQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyME00IDExSDIwVjE4SDRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja1dpbmRvdyA9IFwiTTE4IDE4VjIwSDRBMiAyIDAgMCAxIDIgMThWOEg0VjE4TTIyIDZWMTRBMiAyIDAgMCAxIDIwIDE2SDhBMiAyIDAgMCAxIDYgMTRWNkEyIDIgMCAwIDEgOCA0SDIwQTIgMiAwIDAgMSAyMiA2TTIwIDZIOFYxNEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrZXIgPSBcIk0yMS44MSAxMC4yNUMyMS43NSAxMC4yMSAyMS4yNSA5LjgyIDIwLjE3IDkuODJDMTkuODkgOS44MiAxOS42MSA5Ljg1IDE5LjMzIDkuOUMxOS4xMiA4LjUgMTcuOTUgNy43OSAxNy45IDcuNzZMMTcuNjEgNy41OUwxNy40MyA3Ljg2QzE3LjE5IDguMjIgMTcgOC42MyAxNi45MiA5LjA1QzE2LjcyIDkuODUgMTYuODQgMTAuNjEgMTcuMjUgMTEuMjZDMTYuNzYgMTEuNTQgMTUuOTYgMTEuNjEgMTUuNzkgMTEuNjFIMi42MkMyLjI4IDExLjYxIDIgMTEuODkgMiAxMi4yNEMyIDEzLjM5IDIuMTggMTQuNTQgMi41OCAxNS42MkMzLjAzIDE2LjgxIDMuNzEgMTcuNjkgNC41OCAxOC4yM0M1LjU2IDE4LjgzIDcuMTcgMTkuMTcgOSAxOS4xN0M5Ljc5IDE5LjE3IDEwLjYxIDE5LjEgMTEuNDIgMTguOTVDMTIuNTQgMTguNzUgMTMuNjIgMTguMzYgMTQuNjEgMTcuNzlDMTUuNDMgMTcuMzIgMTYuMTYgMTYuNzIgMTYuNzggMTZDMTcuODMgMTQuODMgMTguNDUgMTMuNSAxOC45IDEyLjM1SDE5LjA5QzIwLjIzIDEyLjM1IDIwLjk0IDExLjg5IDIxLjMzIDExLjVDMjEuNTkgMTEuMjYgMjEuNzggMTAuOTcgMjEuOTIgMTAuNjNMMjIgMTAuMzlMMjEuODEgMTAuMjVNMy44NSAxMS4yNEg1LjYxQzUuNjkgMTEuMjQgNS43NyAxMS4xNyA1Ljc3IDExLjA4VjkuNUM1Ljc3IDkuNDIgNS43IDkuMzQgNS42MSA5LjM0SDMuODVDMy43NiA5LjM0IDMuNjkgOS40MSAzLjY5IDkuNVYxMS4wOEMzLjcgMTEuMTcgMy43NiAxMS4yNCAzLjg1IDExLjI0TTYuMjggMTEuMjRIOC4wNEM4LjEyIDExLjI0IDguMiAxMS4xNyA4LjIgMTEuMDhWOS41QzguMiA5LjQyIDguMTMgOS4zNCA4LjA0IDkuMzRINi4yOEM2LjE5IDkuMzQgNi4xMiA5LjQxIDYuMTIgOS41VjExLjA4QzYuMTMgMTEuMTcgNi4xOSAxMS4yNCA2LjI4IDExLjI0TTguNzUgMTEuMjRIMTAuNUMxMC42IDExLjI0IDEwLjY3IDExLjE3IDEwLjY3IDExLjA4VjkuNUMxMC42NyA5LjQyIDEwLjYxIDkuMzQgMTAuNSA5LjM0SDguNzVDOC42NyA5LjM0IDguNiA5LjQxIDguNiA5LjVWMTEuMDhDOC42IDExLjE3IDguNjYgMTEuMjQgOC43NSAxMS4yNE0xMS4xOSAxMS4yNEgxMi45NkMxMy4wNCAxMS4yNCAxMy4xMSAxMS4xNyAxMy4xMSAxMS4wOFY5LjVDMTMuMTEgOS40MiAxMy4wNSA5LjM0IDEyLjk2IDkuMzRIMTEuMTlDMTEuMTEgOS4zNCAxMS4wNCA5LjQxIDExLjA0IDkuNVYxMS4wOEMxMS4wNCAxMS4xNyAxMS4xMSAxMS4yNCAxMS4xOSAxMS4yNE02LjI4IDlIOC4wNEM4LjEyIDkgOC4yIDguOTEgOC4yIDguODJWNy4yNUM4LjIgNy4xNiA4LjEzIDcuMDkgOC4wNCA3LjA5SDYuMjhDNi4xOSA3LjA5IDYuMTIgNy4xNSA2LjEyIDcuMjVWOC44MkM2LjEzIDguOTEgNi4xOSA5IDYuMjggOU04Ljc1IDlIMTAuNUMxMC42IDkgMTAuNjcgOC45MSAxMC42NyA4LjgyVjcuMjVDMTAuNjcgNy4xNiAxMC42MSA3LjA5IDEwLjUgNy4wOUg4Ljc1QzguNjcgNy4wOSA4LjYgNy4xNSA4LjYgNy4yNVY4LjgyQzguNiA4LjkxIDguNjYgOSA4Ljc1IDlNMTEuMTkgOUgxMi45NkMxMy4wNCA5IDEzLjExIDguOTEgMTMuMTEgOC44MlY3LjI1QzEzLjExIDcuMTYgMTMuMDQgNy4wOSAxMi45NiA3LjA5SDExLjE5QzExLjExIDcuMDkgMTEuMDQgNy4xNSAxMS4wNCA3LjI1VjguODJDMTEuMDQgOC45MSAxMS4xMSA5IDExLjE5IDlNMTEuMTkgNi43MkgxMi45NkMxMy4wNCA2LjcyIDEzLjExIDYuNjUgMTMuMTEgNi41NlY1QzEzLjExIDQuOSAxMy4wNCA0LjgzIDEyLjk2IDQuODNIMTEuMTlDMTEuMTEgNC44MyAxMS4wNCA0Ljg5IDExLjA0IDVWNi41NkMxMS4wNCA2LjY0IDExLjExIDYuNzIgMTEuMTkgNi43Mk0xMy42NSAxMS4yNEgxNS40MUMxNS41IDExLjI0IDE1LjU3IDExLjE3IDE1LjU3IDExLjA4VjkuNUMxNS41NyA5LjQyIDE1LjUgOS4zNCAxNS40MSA5LjM0SDEzLjY1QzEzLjU3IDkuMzQgMTMuNSA5LjQxIDEzLjUgOS41VjExLjA4QzEzLjUgMTEuMTcgMTMuNTcgMTEuMjQgMTMuNjUgMTEuMjRcIjtcclxuZXhwb3J0IHZhciBtZGlEb2N0b3IgPSBcIk0xNC44NCwxNi4yNkMxNy44NiwxNi44MyAyMCwxOC4yOSAyMCwyMFYyMkg0VjIwQzQsMTguMjkgNi4xNCwxNi44MyA5LjE2LDE2LjI2TDEyLDIxTDE0Ljg0LDE2LjI2TTgsOEgxNlYxMEE0LDQgMCAwLDEgMTIsMTRBNCw0IDAgMCwxIDgsMTBWOE04LDdMOC40MSwyLjlDOC40NiwyLjM5IDguODksMiA5LjQxLDJIMTQuNkMxNS4xMSwyIDE1LjU0LDIuMzkgMTUuNTksMi45TDE2LDdIOE0xMiwzSDExVjRIMTBWNUgxMVY2SDEyVjVIMTNWNEgxMlYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZyA9IFwiTTE4LDRDMTYuMjksNCAxNS4yNSw0LjMzIDE0LjY1LDQuNjFDMTMuODgsNC4yMyAxMyw0IDEyLDRDMTEsNCAxMC4xMiw0LjIzIDkuMzUsNC42MUM4Ljc1LDQuMzMgNy43MSw0IDYsNEMzLDQgMSwxMiAxLDE0QzEsMTQuODMgMi4zMiwxNS41OSA0LjE0LDE1LjlDNC43OCwxOC4xNCA3LjgsMTkuODUgMTEuNSwyMFYxNS43MkMxMC45MSwxNS4zNSAxMCwxNC42OCAxMCwxNEMxMCwxMyAxMiwxMyAxMiwxM0MxMiwxMyAxNCwxMyAxNCwxNEMxNCwxNC42OCAxMy4wOSwxNS4zNSAxMi41LDE1LjcyVjIwQzE2LjIsMTkuODUgMTkuMjIsMTguMTQgMTkuODYsMTUuOUMyMS42OCwxNS41OSAyMywxNC44MyAyMywxNEMyMywxMiAyMSw0IDE4LDRNNC4xNSwxMy44N0MzLjY1LDEzLjc1IDMuMjYsMTMuNjEgMywxMy41QzMuMjUsMTAuNzMgNS4yLDYuNCA2LjA1LDZDNi41OSw2IDcsNi4wNiA3LjM3LDYuMTFDNS4yNyw4LjQyIDQuNDQsMTIuMDQgNC4xNSwxMy44N005LDEyQTEsMSAwIDAsMSA4LDExQzgsMTAuNDYgOC40NSwxMCA5LDEwQTEsMSAwIDAsMSAxMCwxMUMxMCwxMS41NiA5LjU1LDEyIDksMTJNMTUsMTJBMSwxIDAgMCwxIDE0LDExQzE0LDEwLjQ2IDE0LjQ1LDEwIDE1LDEwQTEsMSAwIDAsMSAxNiwxMUMxNiwxMS41NiAxNS41NSwxMiAxNSwxMk0xOS44NSwxMy44N0MxOS41NiwxMi4wNCAxOC43Myw4LjQyIDE2LjYzLDYuMTFDMTcsNi4wNiAxNy40MSw2IDE3Ljk1LDZDMTguOCw2LjQgMjAuNzUsMTAuNzMgMjEsMTMuNUMyMC43NSwxMy42MSAyMC4zNiwxMy43NSAxOS44NSwxMy44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb2dTZXJ2aWNlID0gXCJNMTQsOEwxNywxMVYyMUgxNVYxNUg4TDYsMThWMjFINFYxNUw1LDE0VjExTDIsOEwzLDdMNSw5SDdWMTJBMSwxIDAgMCwwIDgsMTNIMTJBMSwxIDAgMCwwIDEzLDEyVjlMMTQsOE0xOSw1VjNMMTUsN0wxOCwxMEwxOSw5TDIwLDEwTDIyLDhMMTksNU0xMS41LDkuNUw0LjUsMi41QzQuMjMsMi4yMiAzLjc5LDIuMjIgMy41LDIuNVYyLjVDMy4yMiwyLjc3IDMuMjIsMy4yMSAzLjUsMy41TDEwLjUsMTAuNUMxMC43NywxMC43OCAxMS4yMSwxMC43OCAxMS41LDEwLjVWMTAuNUMxMS43OCwxMC4yMyAxMS43OCw5Ljc5IDExLjUsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZ1NpZGUgPSBcIk0xOSwzTDE1LDdMMTgsMTBMMTksOUwyMCwxMEwyMiw4TDE5LDVWM00zLDdMMiw4TDUsMTFWMTRMNCwxNVYyMUg2VjE4TDgsMTVIMTVWMjFIMTdWMTFMMTQsOEwxMyw5SDVMMyw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZ1NpZGVPZmYgPSBcIk0xOCAxMEwxNSA3TDE5IDNWNUwyMiA4TDIwIDEwTDE5IDlMMTggMTBNMTcgMTFMMTQgOEwxMyA5SDEyLjJMMTcgMTMuOFYxMU0yLjM5IDEuNzNMMS4xMSAzTDcuMTEgOUg1TDMgN0wyIDhMNSAxMVYxNEw0IDE1VjIxSDZWMThMOCAxNUgxMy4xMUwxNSAxNi44OVYyMUgxN1YxOC44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9sYnkgPSBcIk0yLDVWMTlIMjJWNUgyTTYsMTdINFY3SDZDOC44Niw3LjA5IDExLjEsOS4zMyAxMSwxMkMxMS4xLDE0LjY3IDguODYsMTYuOTEgNiwxN00yMCwxN0gxOEMxNS4xNCwxNi45MSAxMi45LDE0LjY3IDEzLDEyQzEyLjksOS4zMyAxNS4xNCw3LjA5IDE4LDdIMjBWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9sbHkgPSBcIk0xMS45NywxOS44OEMxMC45MywyMC4yNiA5Ljc4LDE5LjcyIDkuNCwxOC42OUM5LDE3LjY1IDkuNTUsMTYuNSAxMC41OSwxNi4xM0MxMS42MywxNS43NSAxMi43OCwxNi4yOCAxMy4xNiwxNy4zMUMxMy41NCwxOC4zNSAxMywxOS41IDExLjk3LDE5Ljg4TTkuOSwxNC4yNUM3LjgzLDE1IDYuNzYsMTcuMyA3LjUsMTkuMzhDOC4yOCwyMS40NSAxMC41OCwyMi41IDEyLjY2LDIxLjc1QzE0LjczLDIxIDE1Ljc5LDE4LjcgMTUuMDQsMTYuNjNDMTQuMjgsMTQuNTUgMTEuOTcsMTMuNSA5LjksMTQuMjVNMTUuOTQsNC41OEw5LjM3LDdMMTAuNzUsMTAuNzRMMTcuMzIsOC4zM00yMC4zMiwxMy42MkwxNS41NCwxNS4zN0MxNS43MSwxNS42NiAxNS44NSwxNS45NiAxNS45NywxNi4yOEMxNi4wOSwxNi42IDE2LjE3LDE2LjkzIDE2LjIyLDE3LjI1TDIxLDE1LjVNMTkuNTQsOC41OEwxMS4wOSwxMS42OEwxMS41OCwxM0MxMi44MywxMy4wOSAxNCwxMy42NCAxNC44OSwxNC41NUwyMC45MiwxMi4zNE0yLDJWNEg1LjA5TDguNjYsMTMuNzVDOC45NCwxMy41NyA5LjI0LDEzLjQzIDkuNTYsMTMuMzFDOS44OCwxMy4xOSAxMC4yMSwxMy4xMSAxMC41MywxMy4wNkw2LjUsMlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpbiA9IFwiTTE4LDE1SDE2VjE3SDE4TTE4LDExSDE2VjEzSDE4TTIwLDE5SDEyVjE3SDE0VjE1SDEyVjEzSDE0VjExSDEyVjlIMjBNMTAsN0g4VjVIMTBNMTAsMTFIOFY5SDEwTTEwLDE1SDhWMTNIMTBNMTAsMTlIOFYxN0gxME02LDdINFY1SDZNNiwxMUg0VjlINk02LDE1SDRWMTNINk02LDE5SDRWMTdINk0xMiw3VjNIMlYyMUgyMlY3SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpbk9mZiA9IFwiTTEyLDE5SDE2TDE0LDE3SDEyVjE5TTEwLDE1VjEzSDhWMTVIMTBNMTAsMTlWMTdIOFYxOUgxME02LDExVjlINFYxMUg2TTYsMTVWMTNINFYxNUg2TTYsMTlWMTdINFYxOUg2TTEuMzEsMS43OEwyMi4zMSwyMi42OUwyMSwyNEwxOCwyMUgyVjVMMC4wOSwzLjA5TDEuMzEsMS43OE0xNiwxMUgxOFYxM0gxNlYxMU04LDVWNS45MUw1LjExLDNIMTJWN0gyMlYxOS45MkwyMCwxNy45MVY5SDEyVjkuODlMOS4wOSw3SDEwVjVIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21haW5QbHVzID0gXCJNMTIgN1YzSDJWMjFIMTMuMzVBNS44IDUuOCAwIDAgMSAxMyAxOUgxMlYxN0gxMy4zNUE1IDUgMCAwIDEgMTQgMTUuNjlWMTVIMTJWMTNIMTRWMTFIMTJWOUgyMFYxMy4wOUE1LjU4IDUuNTggMCAwIDEgMjIgMTMuODFWN002IDE5SDRWMTdINk02IDE1SDRWMTNINk02IDExSDRWOUg2TTYgN0g0VjVINk0xMCAxOUg4VjE3SDEwTTEwIDE1SDhWMTNIMTBNMTAgMTFIOFY5SDEwTTEwIDdIOFY1SDEwTTE2IDEzSDE4VjExSDE2TTE2IDExVjEzSDE4VjExTTE2IDExVjEzSDE4VjExTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpblJlbW92ZSA9IFwiTTEyIDdWM0gyVjIxSDEzLjM1QTUuOCA1LjggMCAwIDEgMTMgMTlIMTJWMTdIMTMuMzVBNSA1IDAgMCAxIDE0IDE1LjY5VjE1SDEyVjEzSDE0VjExSDEyVjlIMjBWMTMuMDlBNS41OCA1LjU4IDAgMCAxIDIyIDEzLjgxVjdNNiAxOUg0VjE3SDZNNiAxNUg0VjEzSDZNNiAxMUg0VjlINk02IDdINFY1SDZNMTAgMTlIOFYxN0gxME0xMCAxNUg4VjEzSDEwTTEwIDExSDhWOUgxME0xMCA3SDhWNUgxME0xNiAxM0gxOFYxMUgxNk0xNiAxMVYxM0gxOFYxMU0xNiAxMVYxM0gxOFYxMU0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21lTGlnaHQgPSBcIk0yMSAxMEMyMSAxNC45NyAxNi45NyAxOSAxMiAxOUM3LjAzIDE5IDMgMTQuOTcgMyAxMFY5LjAzQzMgOC43NiAzLjExIDguNSAzLjMgOC4zQzMuNSA4LjExIDMuNzYgOCA0LjAzIDhIMjBDMjAuMjUgOCAyMC41IDguMTEgMjAuNyA4LjNDMjAuODkgOC41IDIxIDguNzUgMjEgOVYxME01IDEwQzUgMTMuODYgOC4xNCAxNyAxMiAxN0MxNS44NiAxNyAxOSAxMy44NiAxOSAxMEg1TTIwIDZWN0g0VjZDNCA1LjczIDQuMSA1LjUgNC4yOSA1LjI5QzQuNSA1LjEgNC43MyA1IDUgNUgxMFYzSDE0VjVIMTlDMTkuMjUgNSAxOS41IDUuMTEgMTkuNyA1LjNDMTkuODkgNS41IDIwIDUuNzUgMjAgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21pbm9NYXNrID0gXCJNMTUuODMgOS44MUMxNC43IDkuNyAxMy42OSAxMC4zOCAxMy40NiAxMS41QzEzLjQ2IDExLjg0IDE0LjgxIDEyLjI5IDE2LjA1IDEyLjI5QzE3LjI5IDEyLjI5IDE4LjQxIDExLjUgMTguNDEgMTEuMjhDMTguNDEgMTEuMDUgMTcuNjMgOS45MyAxNS44MyA5LjgxTTguMTggOS44MUM2LjM4IDkuOTMgNS41OSAxMC45NCA1LjU5IDExLjI3QzUuNTkgMTEuNSA2LjgyIDEyLjI5IDcuOTUgMTIuMjlTMTAuNTQgMTEuODQgMTAuNTQgMTEuNUMxMC4zMSAxMC4zOCA5LjE5IDkuNyA4LjE4IDkuODFNMTYuOTUgMTZDMTUuMDQgMTYgMTMuOCAxMy43NSAxMiAxMy43NVM4Ljg1IDE2IDcuMDUgMTZDNC42OSAxNiAzIDEzLjg2IDMgMTAuMDRDMyA3LjY4IDMuNjggNyA2LjcxIDdTMTAuNTQgOC4yNCAxMiA4LjI0IDE0LjM2IDcgMTcuMjkgNyAyMSA3Ljc5IDIxIDEwLjA0QzIxIDEzLjg2IDE5LjMxIDE2IDE2Ljk1IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbmtleSA9IFwiTTIxLjM0LDEwLjM1TDIxLjI3LDEwLjI4TDIxLjE4LDEwLjE5TDE4LDdWNkEwLjUsMC41IDAgMCwwIDE3LjUsNS41QzE3LjM2LDUuNSAxNy4yMiw1LjU2IDE3LjEzLDUuNjZMMTMuNDYsOUg3QzYuMzIsOSA1LjY5LDkuMzUgNS4zMiw5LjkyTDIuNjIsMTIuNTlDMi4yOSwxMy4wNCAyLjM5LDEzLjY2IDIuODQsMTRDMy4xOCwxNC4yNCAzLjY1LDE0LjI1IDQsMTRMNSwxMy4wN1YxOUg4VjE1SDEzVjE5SDE2VjEzLjgzQzE2LDEzLjMgMTYuMjEsMTIuNzkgMTYuNTksMTIuNDJMMTgsMTFMMjAsMTJWMTJDMjAuMTUsMTIuMDggMjAuMzIsMTIuMTMgMjAuNSwxMi4xM0MyMS4xLDEyLjExIDIxLjU5LDExLjYxIDIxLjU4LDExQzIxLjU3LDEwLjc2IDIxLjUsMTAuNTMgMjEuMzQsMTAuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9vciA9IFwiTTgsM0M2Ljg5LDMgNiwzLjg5IDYsNVYyMUgxOFY1QzE4LDMuODkgMTcuMTEsMyAxNiwzSDhNOCw1SDE2VjE5SDhWNU0xMywxMVYxM0gxNVYxMUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb29yQ2xvc2VkID0gXCJNMTYsMTFIMThWMTNIMTZWMTFNMTIsM0gxOUMyMC4xMSwzIDIxLDMuODkgMjEsNVYxOUgyMlYyMUgyVjE5SDEwVjVDMTAsMy44OSAxMC44OSwzIDEyLDNNMTIsNVYxOUgxOVY1SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvb3JDbG9zZWRMb2NrID0gXCJNMTYgMTFIMThWMTNIMTZWMTFNMTIgM0gxOUEyIDIgMCAwIDEgMjEgNVYxOUgyMlYyMUgyVjE5SDEwVjVBMiAyIDAgMCAxIDEyIDNNMTIgNVYxOUgxOVY1TTYuMiA1SDIuOFY0LjVBMS43IDEuNyAwIDAgMSA2LjIgNC41TTcgNVY0LjVBMi41IDIuNSAwIDAgMCAyIDQuNVY1QTEgMSAwIDAgMCAxIDZWMTBBMSAxIDAgMCAwIDIgMTFIN0ExIDEgMCAwIDAgOCAxMFY2QTEgMSAwIDAgMCA3IDVcIjtcclxuZXhwb3J0IHZhciBtZGlEb29yT3BlbiA9IFwiTTEyLDNDMTAuODksMyAxMCwzLjg5IDEwLDVIM1YxOUgyVjIxSDIyVjE5SDIxVjVDMjEsMy44OSAyMC4xMSwzIDE5LDNIMTJNMTIsNUgxOVYxOUgxMlY1TTUsMTFIN1YxM0g1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvb3JiZWxsID0gXCJNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTE2IDJIOEM2LjkgMiA2IDIuOSA2IDRWMjBDNiAyMS4xIDYuOSAyMiA4IDIySDE2QzE3LjEgMjIgMTggMjEuMSAxOCAyMFY0QzE4IDIuOSAxNy4xIDIgMTYgMk0xNiAyMEg4VjRIMTZWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9vcmJlbGxWaWRlbyA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU0xOCA0VjIwQzE4IDIxLjEgMTcuMTEgMjIgMTYgMjJIOEM2LjkgMjIgNiAyMS4xMSA2IDIwVjRDNiAyLjkgNi45IDIgOCAySDE2QzE3LjExIDIgMTggMi45IDE4IDRNMTAuNSA3QzEwLjUgNy44MyAxMS4xNyA4LjUgMTIgOC41UzEzLjUgNy44MyAxMy41IDcgMTIuODMgNS41IDEyIDUuNSAxMC41IDYuMTcgMTAuNSA3TTE2IDEwSDhWMjBIMTZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90TmV0ID0gXCJNMiwxNUExLDEgMCAwLDEgMywxNkExLDEgMCAwLDEgMiwxN0ExLDEgMCAwLDEgMSwxNkExLDEgMCAwLDEgMiwxNU0yMSwxN0gxOVY5SDE3VjdIMjNWOUgyMVYxN00xNiw3VjlIMTRWMTFIMTZWMTNIMTRWMTVIMTZWMTdIMTJWN0gxNk0xMSw3VjE3SDlMNiwxMVYxN0g0VjdINkw5LDEzVjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c0dyaWQgPSBcIk0xMiAxNkMxMy4xIDE2IDE0IDE2LjkgMTQgMThTMTMuMSAyMCAxMiAyMCAxMCAxOS4xIDEwIDE4IDEwLjkgMTYgMTIgMTZNMTIgMTBDMTMuMSAxMCAxNCAxMC45IDE0IDEyUzEzLjEgMTQgMTIgMTQgMTAgMTMuMSAxMCAxMiAxMC45IDEwIDEyIDEwTTEyIDRDMTMuMSA0IDE0IDQuOSAxNCA2UzEzLjEgOCAxMiA4IDEwIDcuMSAxMCA2IDEwLjkgNCAxMiA0TTYgMTZDNy4xIDE2IDggMTYuOSA4IDE4UzcuMSAyMCA2IDIwIDQgMTkuMSA0IDE4IDQuOSAxNiA2IDE2TTYgMTBDNy4xIDEwIDggMTAuOSA4IDEyUzcuMSAxNCA2IDE0IDQgMTMuMSA0IDEyIDQuOSAxMCA2IDEwTTYgNEM3LjEgNCA4IDQuOSA4IDZTNy4xIDggNiA4IDQgNy4xIDQgNiA0LjkgNCA2IDRNMTggMTZDMTkuMSAxNiAyMCAxNi45IDIwIDE4UzE5LjEgMjAgMTggMjAgMTYgMTkuMSAxNiAxOCAxNi45IDE2IDE4IDE2TTE4IDEwQzE5LjEgMTAgMjAgMTAuOSAyMCAxMlMxOS4xIDE0IDE4IDE0IDE2IDEzLjEgMTYgMTIgMTYuOSAxMCAxOCAxME0xOCA0QzE5LjEgNCAyMCA0LjkgMjAgNlMxOS4xIDggMTggOCAxNiA3LjEgMTYgNiAxNi45IDQgMTggNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSGV4YWdvbiA9IFwiTTE2IDEyQzE2IDEwLjkgMTYuOSAxMCAxOCAxMFMyMCAxMC45IDIwIDEyIDE5LjEgMTQgMTggMTQgMTYgMTMuMSAxNiAxMk0xMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMiAxMy4xIDE0IDEyIDE0IDEwIDEzLjEgMTAgMTJNNCAxMkM0IDEwLjkgNC45IDEwIDYgMTBTOCAxMC45IDggMTIgNy4xIDE0IDYgMTQgNCAxMy4xIDQgMTJNMTMgMThDMTMgMTYuOSAxMy45IDE2IDE1IDE2UzE3IDE2LjkgMTcgMTggMTYuMSAyMCAxNSAyMCAxMyAxOS4xIDEzIDE4TTcgMThDNyAxNi45IDcuOSAxNiA5IDE2UzExIDE2LjkgMTEgMTggMTAuMSAyMCA5IDIwIDcgMTkuMSA3IDE4TTEzIDZDMTMgNC45IDEzLjkgNCAxNSA0UzE3IDQuOSAxNyA2IDE2LjEgOCAxNSA4IDEzIDcuMSAxMyA2TTcgNkM3IDQuOSA3LjkgNCA5IDRTMTEgNC45IDExIDYgMTAuMSA4IDkgOCA3IDcuMSA3IDZcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSG9yaXpvbnRhbCA9IFwiTTE2LDEyQTIsMiAwIDAsMSAxOCwxMEEyLDIgMCAwLDEgMjAsMTJBMiwyIDAgMCwxIDE4LDE0QTIsMiAwIDAsMSAxNiwxMk0xMCwxMkEyLDIgMCAwLDEgMTIsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxNEEyLDIgMCAwLDEgMTAsMTJNNCwxMkEyLDIgMCAwLDEgNiwxMEEyLDIgMCAwLDEgOCwxMkEyLDIgMCAwLDEgNiwxNEEyLDIgMCAwLDEgNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSG9yaXpvbnRhbENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgMTIsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMC41TTYuNSwxMC41QTEuNSwxLjUgMCAwLDAgNSwxMkExLjUsMS41IDAgMCwwIDYuNSwxMy41QTEuNSwxLjUgMCAwLDAgOCwxMkExLjUsMS41IDAgMCwwIDYuNSwxMC41TTE3LjUsMTAuNUExLjUsMS41IDAgMCwwIDE2LDEyQTEuNSwxLjUgMCAwLDAgMTcuNSwxMy41QTEuNSwxLjUgMCAwLDAgMTksMTJBMS41LDEuNSAwIDAsMCAxNy41LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c0hvcml6b250YWxDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTEyLDEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTMuNUExLjUsMS41IDAgMCwxIDEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMC41TTcuNSwxMC41QTEuNSwxLjUgMCAwLDEgOSwxMkExLjUsMS41IDAgMCwxIDcuNSwxMy41QTEuNSwxLjUgMCAwLDEgNiwxMkExLjUsMS41IDAgMCwxIDcuNSwxMC41TTE2LjUsMTAuNUExLjUsMS41IDAgMCwxIDE4LDEyQTEuNSwxLjUgMCAwLDEgMTYuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTUsMTJBMS41LDEuNSAwIDAsMSAxNi41LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1NxdWFyZSA9IFwiTTEyIDE2QzEzLjEgMTYgMTQgMTYuOSAxNCAxOFMxMy4xIDIwIDEyIDIwIDEwIDE5LjEgMTAgMTggMTAuOSAxNiAxMiAxNk0xMiA0QzEzLjEgNCAxNCA0LjkgMTQgNlMxMy4xIDggMTIgOCAxMCA3LjEgMTAgNiAxMC45IDQgMTIgNE02IDE2QzcuMSAxNiA4IDE2LjkgOCAxOFM3LjEgMjAgNiAyMCA0IDE5LjEgNCAxOCA0LjkgMTYgNiAxNk02IDEwQzcuMSAxMCA4IDEwLjkgOCAxMlM3LjEgMTQgNiAxNCA0IDEzLjEgNCAxMiA0LjkgMTAgNiAxME02IDRDNy4xIDQgOCA0LjkgOCA2UzcuMSA4IDYgOCA0IDcuMSA0IDYgNC45IDQgNiA0TTE4IDE2QzE5LjEgMTYgMjAgMTYuOSAyMCAxOFMxOS4xIDIwIDE4IDIwIDE2IDE5LjEgMTYgMTggMTYuOSAxNiAxOCAxNk0xOCAxMEMxOS4xIDEwIDIwIDEwLjkgMjAgMTJTMTkuMSAxNCAxOCAxNCAxNiAxMy4xIDE2IDEyIDE2LjkgMTAgMTggMTBNMTggNEMxOS4xIDQgMjAgNC45IDIwIDZTMTkuMSA4IDE4IDggMTYgNy4xIDE2IDYgMTYuOSA0IDE4IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1RyaWFuZ2xlID0gXCJNMTIgMTZDMTMuMSAxNiAxNCAxNi45IDE0IDE4UzEzLjEgMjAgMTIgMjAgMTAgMTkuMSAxMCAxOCAxMC45IDE2IDEyIDE2TTE1IDEwQzE2LjEgMTAgMTcgMTAuOSAxNyAxMlMxNi4xIDE0IDE1IDE0IDEzIDEzLjEgMTMgMTIgMTMuOSAxMCAxNSAxME02IDE2QzcuMSAxNiA4IDE2LjkgOCAxOFM3LjEgMjAgNiAyMCA0IDE5LjEgNCAxOCA0LjkgMTYgNiAxNk05IDEwQzEwLjEgMTAgMTEgMTAuOSAxMSAxMlMxMC4xIDE0IDkgMTQgNyAxMy4xIDcgMTIgNy45IDEwIDkgMTBNMTIgNEMxMy4xIDQgMTQgNC45IDE0IDZTMTMuMSA4IDEyIDggMTAgNy4xIDEwIDYgMTAuOSA0IDEyIDRNMTggMTZDMTkuMSAxNiAyMCAxNi45IDIwIDE4UzE5LjEgMjAgMTggMjAgMTYgMTkuMSAxNiAxOCAxNi45IDE2IDE4IDE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1ZlcnRpY2FsID0gXCJNMTIsMTZBMiwyIDAgMCwxIDE0LDE4QTIsMiAwIDAsMSAxMiwyMEEyLDIgMCAwLDEgMTAsMThBMiwyIDAgMCwxIDEyLDE2TTEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxME0xMiw0QTIsMiAwIDAsMSAxNCw2QTIsMiAwIDAsMSAxMiw4QTIsMiAwIDAsMSAxMCw2QTIsMiAwIDAsMSAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvdHNWZXJ0aWNhbENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTEwLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyTTEwLjUsMTcuNUExLjUsMS41IDAgMCwwIDEyLDE5QTEuNSwxLjUgMCAwLDAgMTMuNSwxNy41QTEuNSwxLjUgMCAwLDAgMTIsMTZBMS41LDEuNSAwIDAsMCAxMC41LDE3LjVNMTAuNSw2LjVBMS41LDEuNSAwIDAsMCAxMiw4QTEuNSwxLjUgMCAwLDAgMTMuNSw2LjVBMS41LDEuNSAwIDAsMCAxMiw1QTEuNSwxLjUgMCAwLDAgMTAuNSw2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1ZlcnRpY2FsQ2lyY2xlT3V0bGluZSA9IFwiTTEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyTTEwLjUsMTYuNUExLjUsMS41IDAgMCwxIDEyLDE1QTEuNSwxLjUgMCAwLDEgMTMuNSwxNi41QTEuNSwxLjUgMCAwLDEgMTIsMThBMS41LDEuNSAwIDAsMSAxMC41LDE2LjVNMTAuNSw3LjVBMS41LDEuNSAwIDAsMSAxMiw2QTEuNSwxLjUgMCAwLDEgMTMuNSw3LjVBMS41LDEuNSAwIDAsMSAxMiw5QTEuNSwxLjUgMCAwLDEgMTAuNSw3LjVNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvdWJhbiA9IFwiTTIwLDZINFY0SDIwVjZNMjAsMThWMjBINFYxOEg3LjMzTDYuMjYsMTRINVY4SDE5VjE0SDE3Ljc0TDE2LjY3LDE4SDIwTTcsMTJIMTdWMTBIN1YxMk05LjQsMThIMTQuNkwxNS42NywxNEg4LjMzTDkuNCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZCA9IFwiTTUsMjBIMTlWMThINU0xOSw5SDE1VjNIOVY5SDVMMTIsMTZMMTksOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZEJveCA9IFwiTTUgM0gxOUMyMC4xMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjExIDIwLjExIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM004IDE3SDE2VjE1SDhWMTdNMTYgMTBIMTMuNVY3SDEwLjVWMTBIOEwxMiAxNEwxNiAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZEJveE91dGxpbmUgPSBcIk04IDE3VjE1SDE2VjE3SDhNMTYgMTBMMTIgMTRMOCAxMEgxMC41VjdIMTMuNVYxMEgxNk01IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNNNSA1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZENpcmNsZSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNOCAxN0gxNlYxNUg4VjE3TTE2IDEwSDEzLjVWNkgxMC41VjEwSDhMMTIgMTRMMTYgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRDaXJjbGVPdXRsaW5lID0gXCJNOCAxN1YxNUgxNlYxN0g4TTE2IDEwTDEyIDE0TDggMTBIMTAuNVY2SDEzLjVWMTBIMTZNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDE2LjQyIDcuNTggMjAgMTIgMjBDMTYuNDIgMjAgMjAgMTYuNDIgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRMb2NrID0gXCJNNSAyMEgxNFYxOEg1TTE5IDlIMTVWM0g5VjlINUwxMiAxNk0yMiAxNkExLjA4IDEuMDggMCAwIDEgMjMgMTdWMjFBMS4wOCAxLjA4IDAgMCAxIDIyIDIySDE3QTEuMDggMS4wOCAwIDAgMSAxNiAyMVYxN0ExLjA4IDEuMDggMCAwIDEgMTcgMTZWMTQuNUEyLjUgMi41IDAgMCAxIDIyIDE0LjVWMTZNMjEgMTZWMTQuNUExLjUgMS41IDAgMCAwIDE4IDE0LjVWMTZIMjFcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZExvY2tPdXRsaW5lID0gXCJNMjIgMTZBMS4wOCAxLjA4IDAgMCAxIDIzIDE3VjIxQTEuMDggMS4wOCAwIDAgMSAyMiAyMkgxN0ExLjA4IDEuMDggMCAwIDEgMTYgMjFWMTdBMS4wOCAxLjA4IDAgMCAxIDE3IDE2VjE0LjVBMi41IDIuNSAwIDAgMSAyMiAxNC41VjE2TTIxIDE2VjE0LjVBMS41IDEuNSAwIDAgMCAxOCAxNC41VjE2SDIxTTEzIDVWMTFIMTQuMTdMMTIgMTMuMTdMOS44MyAxMUgxMVY1SDEzTTE1IDNIOVY5SDVMMTIgMTZMMTkgOUgxNVYzTTE0IDE4SDVWMjBIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRNdWx0aXBsZSA9IFwiTTksMVY3SDVMMTIsMTRMMTksN0gxNVYxSDlNNSwxNlYxOEgxOVYxNkg1TTUsMjBWMjJIMTlWMjBINVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZE5ldHdvcmsgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN00xMiwxNC41TDE2LjUsMTBIMTNWNkgxMVYxMEg3LjVMMTIsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZE5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xMiwxNEwxNiwxMEgxM1Y2SDExVjEwSDhMMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRPZmYgPSBcIk0yMC44NCAyMi43M0wxOC4xMSAyMEg1VjE4SDE2LjExTDEzLjA2IDE0Ljk1TDEyIDE2TDUgOUg3LjExTDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTkgOUgxNVYzSDlWNS44TDE1LjYgMTIuNEwxOSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvd25sb2FkT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNy4xMSA5SDVMMTIgMTZMMTMuMDYgMTQuOTVMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMSA1SDEzVjkuOEwxNS42IDEyLjRMMTkgOUgxNVYzSDlWNS44TDExIDcuOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvd25sb2FkT3V0bGluZSA9IFwiTTEzLDVWMTFIMTQuMTdMMTIsMTMuMTdMOS44MywxMUgxMVY1SDEzTTE1LDNIOVY5SDVMMTIsMTZMMTksOUgxNVYzTTE5LDE4SDVWMjBIMTlWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhZyA9IFwiTTcsMTlWMTdIOVYxOUg3TTExLDE5VjE3SDEzVjE5SDExTTE1LDE5VjE3SDE3VjE5SDE1TTcsMTVWMTNIOVYxNUg3TTExLDE1VjEzSDEzVjE1SDExTTE1LDE1VjEzSDE3VjE1SDE1TTcsMTFWOUg5VjExSDdNMTEsMTFWOUgxM1YxMUgxMU0xNSwxMVY5SDE3VjExSDE1TTcsN1Y1SDlWN0g3TTExLDdWNUgxM1Y3SDExTTE1LDdWNUgxN1Y3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdIb3Jpem9udGFsID0gXCJNMywxNVYxM0g1VjE1SDNNMywxMVY5SDVWMTFIM003LDE1VjEzSDlWMTVIN003LDExVjlIOVYxMUg3TTExLDE1VjEzSDEzVjE1SDExTTExLDExVjlIMTNWMTFIMTFNMTUsMTVWMTNIMTdWMTVIMTVNMTUsMTFWOUgxN1YxMUgxNU0xOSwxNVYxM0gyMVYxNUgxOU0xOSwxMVY5SDIxVjExSDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdIb3Jpem9udGFsVmFyaWFudCA9IFwiTTIxIDExSDNWOUgyMVYxMU0yMSAxM0gzVjE1SDIxVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdWYXJpYW50ID0gXCJNMjIuNjcsMTJMMTguMTgsMTYuNUwxNS42NywxNEwxNy42NSwxMkwxNS42NywxMC4wNEwxOC4xOCw3LjUzTDIyLjY3LDEyTTEyLDEuMzNMMTYuNDcsNS44MkwxMy45Niw4LjMzTDEyLDYuMzVMMTAsOC4zM0w3LjUsNS44MkwxMiwxLjMzTTEyLDIyLjY3TDcuNTMsMTguMThMMTAuMDQsMTUuNjdMMTIsMTcuNjVMMTQsMTUuNjdMMTYuNSwxOC4xOEwxMiwyMi42N00xLjMzLDEyTDUuODIsNy41TDguMzMsMTBMNi4zNSwxMkw4LjMzLDEzLjk2TDUuODIsMTYuNDdMMS4zMywxMk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhZ1ZlcnRpY2FsID0gXCJNOSwzSDExVjVIOVYzTTEzLDNIMTVWNUgxM1YzTTksN0gxMVY5SDlWN00xMyw3SDE1VjlIMTNWN005LDExSDExVjEzSDlWMTFNMTMsMTFIMTVWMTNIMTNWMTFNOSwxNUgxMVYxN0g5VjE1TTEzLDE1SDE1VjE3SDEzVjE1TTksMTlIMTFWMjFIOVYxOU0xMywxOUgxNVYyMUgxM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEcmFnVmVydGljYWxWYXJpYW50ID0gXCJNMTEgMjFIOVYzSDExVjIxTTE1IDNIMTNWMjFIMTVWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEcmFtYU1hc2tzID0gXCJNOC4xMSwxOS40NUM1Ljk0LDE4LjY1IDQuMjIsMTYuNzggMy43MSwxNC4zNUwyLjA1LDYuNTRDMS44MSw1LjQ2IDIuNSw0LjQgMy41OCw0LjE3TDEzLjM1LDIuMUwxMy4zOCwyLjA5QzE0LjQ1LDEuODggMTUuNSwyLjU3IDE1LjcyLDMuNjNMMTYuMDcsNS4zTDIwLjQyLDYuMjNIMjAuNDVDMjEuNSw2LjQ3IDIyLjE4LDcuNTMgMjEuOTYsOC41OUwyMC4zLDE2LjQxQzE5LjUsMjAuMTggMTUuNzgsMjIuNiAxMiwyMS43OUMxMC40MiwyMS40NiA5LjA4LDIwLjYxIDguMTEsMTkuNDVWMTkuNDVNMjAsOC4xOEwxMC4yMyw2LjFMOC41NywxMy45MlYxMy45NUM4LDE2LjYzIDkuNzMsMTkuMjcgMTIuNDIsMTkuODRDMTUuMTEsMjAuNDEgMTcuNzcsMTguNjkgMTguMzQsMTZMMjAsOC4xOE0xNiwxNi41QzE1LjM3LDE3LjU3IDE0LjExLDE4LjE2IDEyLjgzLDE3Ljg5QzExLjU2LDE3LjYyIDEwLjY1LDE2LjU3IDEwLjUsMTUuMzRMMTYsMTYuNU04LjQ3LDUuMTdMNCw2LjEzTDUuNjYsMTMuOTRMNS42NywxMy45N0M1LjgyLDE0LjY4IDYuMTIsMTUuMzIgNi41MywxNS44N0M2LjQzLDE1LjEgNi40NSwxNC4zIDYuNjIsMTMuNUw3LjA1LDExLjVDNi42LDExLjQyIDYuMjEsMTEuMTcgNiwxMC44MUM2LjA2LDEwLjIgNi41Niw5LjY2IDcuMjUsOS41QzcuMzMsOS41IDcuNCw5LjUgNy41LDkuNUw4LjI4LDUuNjlDOC4zMiw1LjUgOC4zOCw1LjMzIDguNDcsNS4xN00xNS4wMywxMi4yM0MxNS4zNSwxMS43IDE2LjAzLDExLjQyIDE2LjcyLDExLjU3QzE3LjQxLDExLjcxIDE3LjkxLDEyLjI0IDE4LDEyLjg2QzE3LjY3LDEzLjM4IDE3LDEzLjY2IDE2LjMsMTMuNUMxNS42MSwxMy4zNyAxNS4xMSwxMi44NCAxNS4wMywxMi4yM00xMC4xNSwxMS4xOUMxMC40NywxMC42NiAxMS4xNCwxMC4zOCAxMS44MywxMC41M0MxMi41LDEwLjY3IDEzLjAzLDExLjIxIDEzLjExLDExLjgyQzEyLjc4LDEyLjM0IDEyLjExLDEyLjYzIDExLjQyLDEyLjVDMTAuNzMsMTIuMzMgMTAuMjMsMTEuOCAxMC4xNSwxMS4xOU0xMS45Nyw0LjQzTDEzLjkzLDQuODVMMTMuNzcsNC4wNUwxMS45Nyw0LjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYXcgPSBcIk05Ljc1IDIwLjg1QzExLjUzIDIwLjE1IDExLjE0IDE4LjIyIDEwLjI0IDE3QzkuMzUgMTUuNzUgOC4xMiAxNC44OSA2Ljg4IDE0LjA2QzYgMTMuNSA1LjE5IDEyLjggNC41NCAxMkM0LjI2IDExLjY3IDMuNjkgMTEuMDYgNC4yNyAxMC45NEM0Ljg2IDEwLjgyIDUuODggMTEuNCA2LjQgMTEuNjJDNy4zMSAxMiA4LjIxIDEyLjQ0IDkuMDUgMTIuOTZMMTAuMDYgMTEuMjZDOC41IDEwLjIzIDYuNSA5LjMyIDQuNjQgOS4wNUMzLjU4IDguODkgMi40NiA5LjExIDIuMSAxMC4yNkMxLjc4IDExLjI1IDIuMjkgMTIuMjUgMi44NyAxMy4wM0M0LjI0IDE0Ljg2IDYuMzcgMTUuNzQgNy45NiAxNy4zMkM4LjMgMTcuNjUgOC43MSAxOC4wNCA4LjkxIDE4LjVDOS4xMiAxOC45NCA5LjA3IDE4Ljk3IDguNiAxOC45N0M3LjM2IDE4Ljk3IDUuODEgMTggNC44IDE3LjM2TDMuNzkgMTkuMDZDNS4zMiAyMCA3Ljg4IDIxLjQ3IDkuNzUgMjAuODVNMjAuODQgNS4yNUMyMS4wNiA1LjAzIDIxLjA2IDQuNjcgMjAuODQgNC40NkwxOS41NCAzLjE2QzE5LjMzIDIuOTUgMTguOTcgMi45NSAxOC43NiAzLjE2TDE3Ljc0IDQuMThMMTkuODIgNi4yNk0xMSAxMC45MlYxM0gxMy4wOEwxOS4yMyA2Ljg1TDE3LjE1IDQuNzdMMTEgMTAuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhd2luZyA9IFwiTTguNSwzQTUuNSw1LjUgMCAwLDEgMTQsOC41QzE0LDkuODMgMTMuNTMsMTEuMDUgMTIuNzQsMTJIMjFWMjFIMTJWMTIuNzRDMTEuMDUsMTMuNTMgOS44MywxNCA4LjUsMTRBNS41LDUuNSAwIDAsMSAzLDguNUE1LjUsNS41IDAgMCwxIDguNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYXdpbmdCb3ggPSBcIk0xOCwxOEgxMlYxMi4yMUMxMS4zNCwxMi44MiAxMC40NywxMy4yIDkuNSwxMy4yQzcuNDYsMTMuMiA1LjgsMTEuNTQgNS44LDkuNUEzLjcsMy43IDAgMCwxIDkuNSw1LjhDMTEuNTQsNS44IDEzLjIsNy40NiAxMy4yLDkuNUMxMy4yLDEwLjQ3IDEyLjgyLDExLjM0IDEyLjIxLDEySDE4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyZXNzZXIgPSBcIk00IDNDMi45IDMgMiAzLjkgMiA1VjhIMjJWNUMyMiAzLjkgMjEuMTEgMyAyMCAzSDRNMTAgNUgxNFY2SDEwVjVNMiA5VjE0SDIyVjlIMk0xMCAxMUgxNFYxMkgxMFYxMU0yIDE1VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBWMjFINlYyMEgxOFYyMUgyMFYyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFYxNUgyTTEwIDE3SDE0VjE4SDEwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyZXNzZXJPdXRsaW5lID0gXCJNNCAzQzIuOSAzIDIgMy45IDIgNVYxOEMyIDE5LjExIDIuOSAyMCA0IDIwVjIxSDZWMjBIMThWMjFIMjBWMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNUMyMiAzLjkgMjEuMTEgMyAyMCAzSDRNNCA1SDIwVjhINFY1TTEwIDZWN0gxNFY2SDEwTTQgMTBIMjBWMTNINFYxME0xMCAxMVYxMkgxNFYxMUgxME00IDE1SDIwVjE4SDRWMTVNMTAgMTZWMTdIMTRWMTZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJvbmUgPSBcIk0yMiwxMUgyMUwyMCw5SDEzLjc1TDE2LDEyLjVIMTRMMTAuNzUsOUg0QzMuNDUsOSAyLDguNTUgMiw4QzIsNy40NSAzLjUsNS41IDUuNSw1LjVDNy41LDUuNSA3LjY3LDYuNSA5LDdIMjFBMSwxIDAgMCwxIDIyLDhWOUwyMiwxMU0xMC43NSw2LjVMMTQsM0gxNkwxMy43NSw2LjVIMTAuNzVNMTgsMTFWOS41SDE5Ljc1TDE5LDExSDE4TTMsMTlBMSwxIDAgMCwxIDIsMThBMSwxIDAgMCwxIDMsMTdBNCw0IDAgMCwxIDcsMjFBMSwxIDAgMCwxIDYsMjJBMSwxIDAgMCwxIDUsMjFBMiwyIDAgMCwwIDMsMTlNMTEsMjFBMSwxIDAgMCwxIDEwLDIyQTEsMSAwIDAsMSA5LDIxQTYsNiAwIDAsMCAzLDE1QTEsMSAwIDAsMSAyLDE0QTEsMSAwIDAsMSAzLDEzQTgsOCAwIDAsMSAxMSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEcm9wYm94ID0gXCJNMyA2LjJMOCA5LjM5TDEzIDYuMkw4IDNMMyA2LjJNMTMgNi4yTDE4IDkuMzlMMjMgNi4yTDE4IDNMMTMgNi4yTTMgMTIuNTVMOCAxNS43NEwxMyAxMi41NUw4IDkuMzVMMyAxMi41NU0xOCA5LjM1TDEzIDEyLjU1TDE4IDE1Ljc0TDIzIDEyLjU1TDE4IDkuMzVNOC4wMyAxNi44TDEzLjA0IDIwTDE4LjA0IDE2LjhMMTMuMDQgMTMuNjFMOC4wMyAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaURydXBhbCA9IFwiTTIwLjQ3LDE0LjY1QzIwLjQ3LDE1LjI5IDIwLjI1LDE2LjM2IDE5LjgzLDE3LjFDMTkuNCwxNy44NSAxOS4wOCwxOC4wNiAxOC40NCwxOC4wNkMxNy43LDE3Ljk1IDE2LjMxLDE1LjgyIDE1LjM2LDE1LjcyQzE0LjE4LDE1LjcyIDExLjczLDE4LjE3IDkuNzEsMTguMTdDOC41NCwxOC4xNyA4LjExLDE3Ljk1IDcuNzksMTcuNzRDNy4xNSwxNy4zMSA2Ljk0LDE2LjY3IDYuOTQsMTUuODJDNi45NCwxNC4yMiA4LjQzLDEyLjg0IDEwLjI0LDEyLjg0QzEyLjU5LDEyLjg0IDE0LjE4LDE1LjE4IDE1LjM2LDE1LjA4QzE2LjMxLDE1LjA4IDE4LjIzLDEzLjE2IDE5LjE5LDEzLjE2QzIwLjE1LDEyLjk1IDIwLjQ3LDE0IDIwLjQ3LDE0LjY1TTE2LjYzLDUuMjhDMTUuNTcsNC42NCAxNC42MSw0LjMyIDEzLjU0LDMuNjhDMTIuOTEsMy4yNSAxMi4wNSwyLjMgMTEuMzEsMS40NEMxMSwyLjgzIDEwLjc4LDMuMzYgMTAuMjQsMy43OUM5LjE4LDQuNTMgOC42NCw0Ljg1IDcuNjksNS4yOEM2Ljk0LDUuNyAzLDguMDUgMywxMy4xNkMzLDE4LjI3IDcuMzcsMjIgMTIuMDUsMjJDMTYuODUsMjIgMjEsMTguNSAyMSwxMy4yN0MyMS4yMSw4LjA1IDE3LjI3LDUuNyAxNi42Myw1LjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUR1Y2sgPSBcIk04LjUsNUExLjUsMS41IDAgMCwwIDcsNi41QTEuNSwxLjUgMCAwLDAgOC41LDhBMS41LDEuNSAwIDAsMCAxMCw2LjVBMS41LDEuNSAwIDAsMCA4LjUsNU0xMCwyQTUsNSAwIDAsMSAxNSw3QzE1LDguNyAxNC4xNSwxMC4yIDEyLjg2LDExLjFDMTQuNDQsMTEuMjUgMTYuMjIsMTEuNjEgMTgsMTIuNUMyMSwxNCAyMiwxMiAyMiwxMkMyMiwxMiAyMSwyMSAxNSwyMUg5QzksMjEgNCwyMSA0LDE2QzQsMTMgNywxMiA2LDEwQzIsMTAgMiw2LjUgMiw2LjVDMyw3IDQuMjQsNyA1LDYuNjVDNS4xOSw0LjA1IDcuMzYsMiAxMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUR1bWJiZWxsID0gXCJNMjAuNTcsMTQuODZMMjIsMTMuNDNMMjAuNTcsMTJMMTcsMTUuNTdMOC40Myw3TDEyLDMuNDNMMTAuNTcsMkw5LjE0LDMuNDNMNy43MSwyTDUuNTcsNC4xNEw0LjE0LDIuNzFMMi43MSw0LjE0TDQuMTQsNS41N0wyLDcuNzFMMy40Myw5LjE0TDIsMTAuNTdMMy40MywxMkw3LDguNDNMMTUuNTcsMTdMMTIsMjAuNTdMMTMuNDMsMjJMMTQuODYsMjAuNTdMMTYuMjksMjJMMTguNDMsMTkuODZMMTkuODYsMjEuMjlMMjEuMjksMTkuODZMMTkuODYsMTguNDNMMjIsMTYuMjlMMjAuNTcsMTQuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHVtcFRydWNrID0gXCJNMjAsOEgxOUwxNyw4SDE1VjE0SDJWMTdIM0EzLDMgMCAwLDAgNiwyMEEzLDMgMCAwLDAgOSwxN0gxNUEzLDMgMCAwLDAgMTgsMjBBMywzIDAgMCwwIDIxLDE3SDIzVjEyTDIwLDhNNiwxOC41QTEuNSwxLjUgMCAwLDEgNC41LDE3QTEuNSwxLjUgMCAwLDEgNiwxNS41QTEuNSwxLjUgMCAwLDEgNy41LDE3QTEuNSwxLjUgMCAwLDEgNiwxOC41TTE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41TTE3LDEyVjkuNUgxOS41TDIxLjQ2LDEySDE3TTE4LDdIMTRWMTNIM0wxLjU3LDhIMVY2SDEzTDE0LDVIMThWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJIZWFyaW5nID0gXCJNMTcsMjBDMTYuNzEsMjAgMTYuNDQsMTkuOTQgMTYuMjQsMTkuODVDMTUuNTMsMTkuNSAxNS4wMywxOC45NyAxNC41MywxNy40N0MxNCwxNS45MSAxMy4wNiwxNS4xOCAxMi4xNCwxNC40N0MxMS4zNSwxMy44NiAxMC41MywxMy4yMyA5LjgyLDExLjk0QzkuMjksMTEgOSw5LjkzIDksOUM5LDYuMiAxMS4yLDQgMTQsNEMxNi44LDQgMTksNi4yIDE5LDlIMjFDMjEsNS4wNyAxNy45MywyIDE0LDJDMTAuMDcsMiA3LDUuMDcgNyw5QzcsMTAuMjYgNy4zOCwxMS42NSA4LjA3LDEyLjlDOSwxNC41NSAxMC4wNSwxNS4zOCAxMC45MiwxNi4wNUMxMS43MywxNi42NyAxMi4zMSwxNy4xMiAxMi42MywxOC4xQzEzLjIzLDE5LjkyIDE0LDIwLjk0IDE1LjM2LDIxLjY1QzE1Ljg3LDIxLjg4IDE2LjQzLDIyIDE3LDIyQTQsNCAwIDAsMCAyMSwxOEgxOUEyLDIgMCAwLDEgMTcsMjBNNy42NCwyLjY0TDYuMjIsMS4yMkM0LjIzLDMuMjEgMyw1Ljk2IDMsOUMzLDEyLjA0IDQuMjMsMTQuNzkgNi4yMiwxNi43OEw3LjYzLDE1LjM3QzYsMTMuNzQgNSwxMS41IDUsOUM1LDYuNSA2LDQuMjYgNy42NCwyLjY0TTExLjUsOUEyLjUsMi41IDAgMCwwIDE0LDExLjVBMi41LDIuNSAwIDAsMCAxNi41LDlBMi41LDIuNSAwIDAsMCAxNCw2LjVBMi41LDIuNSAwIDAsMCAxMS41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFySGVhcmluZ09mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjAsMjAuNzJMMTguNzMsMjJMMTIuOTEsMTYuMThDMTIuMTksMTYuNzQgMTEuNjcsMTcuMTkgMTEuMzcsMTguMUMxMC43NywxOS45MiAxMCwyMC45NCA4LjY0LDIxLjY1QzguMTMsMjEuODggNy41NywyMiA3LDIyQTQsNCAwIDAsMSAzLDE4SDVBMiwyIDAgMCwwIDcsMjBDNy4yOSwyMCA3LjU2LDE5Ljk0IDcuNzYsMTkuODVDOC40NywxOS41IDguOTcsMTguOTcgOS40NywxNy40N0M5LjkxLDE2LjEyIDEwLjY5LDE1LjM5IDExLjUsMTQuNzZMNS4wNCw4LjMxQzUsOC41NCA1LDguNzcgNSw5SDNDMyw4LjE3IDMuMTQsNy4zOSAzLjM5LDYuNjZMMSw0LjI3TTE0LjE4LDExLjk0QzE0LjcxLDExIDE1LDkuOTMgMTUsOUMxNSw2LjIgMTIuOCw0IDEwLDRDOC44MSw0IDcuNzQsNC4zOSA2Ljg5LDUuMDZMNS40NiwzLjYzQzYuNjcsMi42MSA4LjI1LDIgMTAsMkMxMy45MywyIDE3LDUuMDcgMTcsOUMxNywxMC4yNiAxNi42MiwxMS42NSAxNS45MywxMi45TDE1LjQ3LDEzLjY1TDE0LjAzLDEyLjJMMTQuMTgsMTEuOTRNMTYuMzYsMi42NEwxNy43OCwxLjIyQzE5Ljc3LDMuMjEgMjEsNS45NiAyMSw5QzIxLDExLjgzIDE5LjkzLDE0LjQxIDE4LjE4LDE2LjM2TDE2Ljc3LDE0Ljk0QzE4LjE1LDEzLjM2IDE5LDExLjI4IDE5LDlDMTksNi41IDE4LDQuMjYgMTYuMzYsMi42NE0xMi41LDlDMTIuNSw5LjUgMTIuMzYsOS45MyAxMi4xMywxMC4zMUw4LjY5LDYuODdDOS4wNyw2LjY0IDkuNSw2LjUgMTAsNi41QTIuNSwyLjUgMCAwLDEgMTIuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoID0gXCJNMTcuOSwxNy4zOUMxNy42NCwxNi41OSAxNi44OSwxNiAxNiwxNkgxNVYxM0ExLDEgMCAwLDAgMTQsMTJIOFYxMEgxMEExLDEgMCAwLDAgMTEsOVY3SDEzQTIsMiAwIDAsMCAxNSw1VjQuNTlDMTcuOTMsNS43NyAyMCw4LjY0IDIwLDEyQzIwLDE0LjA4IDE5LjIsMTUuOTcgMTcuOSwxNy4zOU0xMSwxOS45M0M3LjA1LDE5LjQ0IDQsMTYuMDggNCwxMkM0LDExLjM4IDQuMDgsMTAuNzggNC4yMSwxMC4yMUw5LDE1VjE2QTIsMiAwIDAsMCAxMSwxOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aEFycm93UmlnaHQgPSBcIk0xOSAyMVYxOUgxNVYxN0gxOVYxNUwyMiAxOEwxOSAyMU0xMiAxOEMxMiAxNS44IDEzLjIgMTMuOSAxNSAxMi44QzE0LjkgMTIuMyAxNC41IDEyIDE0IDEySDhWMTBIMTBDMTAuNiAxMCAxMSA5LjYgMTEgOVY3SDEzQzE0LjEgNyAxNSA2LjEgMTUgNVY0LjZDMTcuOSA1LjggMjAgOC42IDIwIDEyVjEyLjNDMjAuNyAxMi41IDIxLjMgMTIuOSAyMS45IDEzLjRDMjIgMTMgMjIgMTIuNSAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjJDMTIuNSAyMiAxMyAyMiAxMy40IDIxLjlDMTIuNSAyMC44IDEyIDE5LjUgMTIgMThNMTEgMTkuOUM3IDE5LjQgNCAxNi4xIDQgMTJDNCAxMS40IDQuMSAxMC44IDQuMiAxMC4yTDkgMTVWMTZDOSAxNy4xIDkuOSAxOCAxMSAxOFYxOS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNINU0xNS43OCw1SDE5VjE3LjE4QzE4Ljc0LDE2LjM4IDE3LjY5LDE1Ljc5IDE2LjgsMTUuNzlIMTUuOFYxMi43OUExLDEgMCAwLDAgMTQuOCwxMS43OUg4LjhWOS43OUgxMC44QTEsMSAwIDAsMCAxMS44LDguNzlWNi43OUgxMy44QzE0LjgzLDYuNzkgMTUuNjcsNiAxNS43OCw1TTUsMTAuMjlMOS44LDE0Ljc5VjE1Ljc5QzkuOCwxNi45IDEwLjcsMTcuNzkgMTEuOCwxNy43OVYxOUg1VjEwLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94TWludXMgPSBcIk0yMiAxN1YxOUgxNFYxN0gyMk01IDNIMTlDMjAuMSAzIDIxIDMuODkgMjEgNVYxMi44QzIwLjM5IDEyLjQ1IDE5LjcyIDEyLjIgMTkgMTIuMDhWNUgxNS43OEMxNS42NyA2IDE0LjgzIDYuNzkgMTMuOCA2Ljc5SDExLjhWOC43OUMxMS44IDkuMzUgMTEuMzUgOS43OSAxMC44IDkuNzlIOC44VjExLjc5SDE0LjhDMTUuMjMgMTEuNzkgMTUuNiAxMi4wNiAxNS43NCAxMi40NEMxMy42IDEzLjMxIDEyLjA3IDE1LjM5IDEyIDE3LjgzQzEwLjcgMTcuNzkgOS44IDE2LjkgOS44IDE1Ljc5VjE0Ljc5TDUgMTAuMjlWMTlIMTIuMDhDMTIuMiAxOS43MiAxMi40NSAyMC4zOSAxMi44IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy44OSAzLjg5IDMgNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94T2ZmID0gXCJNMjMsNC4yN0wyMSw2LjI3VjE5QTIsMiAwIDAsMSAxOSwyMUg2LjI3TDQuMjcsMjNMMywyMS43MkwyMS43MiwzTDIzLDQuMjdNNSwzSDE5LjE4TDE3LjE4LDVIMTUuNzhDMTUuNjcsNiAxNC44Myw2Ljc5IDEzLjgsNi43OUgxMS44VjguNzlDMTEuOCw5LjM1IDExLjM1LDkuNzkgMTAuOCw5Ljc5SDguOFYxMS43OUgxMC4zOEw4LjU1LDEzLjYyTDUsMTAuMjlWMTcuMThMMywxOS4xOFY1QzMsMy44OSAzLjg5LDMgNSwzTTExLjgsMTlWMTcuNzlDMTEuMTcsMTcuNzkgMTAuNiwxNy41IDEwLjIzLDE3LjA0TDguMjcsMTlIMTEuOE0xNS44LDEyLjc5VjE1Ljc5SDE2LjhDMTcuNjksMTUuNzkgMTguNzQsMTYuMzggMTksMTcuMThWOC4yN0wxNS4zMywxMS45NEMxNS42MSwxMi4xMiAxNS44LDEyLjQzIDE1LjgsMTIuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhCb3hQbHVzID0gXCJNMTcgMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNNSAzSDE5QzIwLjEgMyAyMSAzLjg5IDIxIDVWMTIuOEMyMC4zOSAxMi40NSAxOS43MiAxMi4yIDE5IDEyLjA4VjVIMTUuNzhDMTUuNjcgNiAxNC44MyA2Ljc5IDEzLjggNi43OUgxMS44VjguNzlDMTEuOCA5LjM1IDExLjM1IDkuNzkgMTAuOCA5Ljc5SDguOFYxMS43OUgxNC44QzE1LjIzIDExLjc5IDE1LjYgMTIuMDYgMTUuNzQgMTIuNDRDMTMuNiAxMy4zMSAxMi4wNyAxNS4zOSAxMiAxNy44M0MxMC43IDE3Ljc5IDkuOCAxNi45IDkuOCAxNS43OVYxNC43OUw1IDEwLjI5VjE5SDEyLjA4QzEyLjIgMTkuNzIgMTIuNDUgMjAuMzkgMTIuOCAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuODkgMy44OSAzIDUgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aEJveFJlbW92ZSA9IFwiTTE0LjQ2IDE1Ljg4TDE1Ljg4IDE0LjQ2TDE4IDE2LjU5TDIwLjEyIDE0LjQ3TDIxLjU0IDE1Ljg4TDE5LjQxIDE4TDIxLjU0IDIwLjEyTDIwLjEyIDIxLjU0TDE4IDE5LjQxTDE1Ljg4IDIxLjU0TDE0LjQ2IDIwLjEyTDE2LjU5IDE4TDE0LjQ3IDE1Ljg4TTUgM0gxOUMyMC4xIDMgMjEgMy44OSAyMSA1VjEyLjhDMjAuMzkgMTIuNDUgMTkuNzIgMTIuMiAxOSAxMi4wOFY1SDE1Ljc4QzE1LjY3IDYgMTQuODMgNi43OSAxMy44IDYuNzlIMTEuOFY4Ljc5QzExLjggOS4zNSAxMS4zNSA5Ljc5IDEwLjggOS43OUg4LjhWMTEuNzlIMTQuOEMxNS4yMyAxMS43OSAxNS42IDEyLjA2IDE1Ljc0IDEyLjQ0QzEzLjYgMTMuMzEgMTIuMDcgMTUuMzkgMTIgMTcuODNDMTAuNyAxNy43OSA5LjggMTYuOSA5LjggMTUuNzlWMTQuNzlMNSAxMC4yOVYxOUgxMi4wOEMxMi4yIDE5LjcyIDEyLjQ1IDIwLjM5IDEyLjggMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjg5IDMuODkgMyA1IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhNaW51cyA9IFwiTTE0IDE3SDIyVjE5SDE0VjE3TTIwIDEyQzIwIDguNjQgMTcuOTMgNS43NyAxNSA0LjU5VjVDMTUgNi4xIDE0LjEgNyAxMyA3SDExVjlDMTEgOS41NSAxMC41NSAxMCAxMCAxMEg4VjEySDE0QzE0LjUgMTIgMTQuOSAxMi4zNSAxNSAxMi44MUMxMy4yIDEzLjg1IDEyIDE1Ljc5IDEyIDE4QzEyIDE5LjUgMTIuNTQgMjAuODUgMTMuNDQgMjEuOUwxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyTDIxLjkgMTMuNDRDMjEuMzQgMTIuOTYgMjAuNyAxMi41OSAyMCAxMi4zNEwyMCAxMk0xMSAxOS45M1YxOEM5LjkgMTggOSAxNy4xIDkgMTZWMTVMNC4yMSAxMC4yMUM0LjA4IDEwLjc4IDQgMTEuMzggNCAxMkM0IDE2LjA4IDcuMDYgMTkuNDQgMTEgMTkuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhPZmYgPSBcIk0yMiw1LjI3TDIwLjUsNi43NUMyMS40Niw4LjI4IDIyLDEwLjA3IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzEwLjA4LDIyIDguMjgsMjEuNDYgNi43NSwyMC41TDUuMjcsMjJMNCwyMC43MkwyMC43Miw0TDIyLDUuMjdNMTcuOSwxNy4zOUMxOS4yLDE1Ljk3IDIwLDE0LjA4IDIwLDEyQzIwLDEwLjYzIDE5LjY2LDkuMzQgMTkuMDUsOC4yMkwxNC44MywxMi40NEMxNC45NCwxMi42IDE1LDEyLjc5IDE1LDEzVjE2SDE2QzE2Ljg5LDE2IDE3LjY0LDE2LjU5IDE3LjksMTcuMzlNMTEsMTkuOTNWMThDMTAuNSwxOCAxMC4wNywxNy44MyA5LjczLDE3LjU0TDguMjIsMTkuMDVDOS4wNywxOS41IDEwLDE5LjggMTEsMTkuOTNNMTUsNC41OVY1QTIsMiAwIDAsMSAxMyw3SDExVjlBMSwxIDAgMCwxIDEwLDEwSDhWMTJIMTAuMThMOC4wOSwxNC4wOUw0LjIxLDEwLjIxQzQuMDgsMTAuNzggNCwxMS4zOCA0LDEyQzQsMTMuNzQgNC41NiwxNS4zNiA1LjUsMTYuNjdMNC4wOCwxOC4xQzIuNzcsMTYuNDEgMiwxNC4zIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkMxNC4zLDIgMTYuNDEsMi43NyAxOC4xLDQuMDhMMTYuNjcsNS41QzE2LjE2LDUuMTQgMTUuNiw0LjgzIDE1LDQuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhQbHVzID0gXCJNMTcgMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMjAgMTJDMjAgOC42NCAxNy45MyA1Ljc3IDE1IDQuNTlWNUMxNSA2LjEgMTQuMSA3IDEzIDdIMTFWOUMxMSA5LjU1IDEwLjU1IDEwIDEwIDEwSDhWMTJIMTRDMTQuNSAxMiAxNC45IDEyLjM1IDE1IDEyLjgxQzEzLjIgMTMuODUgMTIgMTUuNzkgMTIgMThDMTIgMTkuNSAxMi41NCAyMC44NSAxMy40NCAyMS45TDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOSAxMy40NEMyMS4zNCAxMi45NiAyMC43IDEyLjU5IDIwIDEyLjM0TDIwIDEyTTExIDE5LjkzVjE4QzkuOSAxOCA5IDE3LjEgOSAxNlYxNUw0LjIxIDEwLjIxQzQuMDggMTAuNzggNCAxMS4zOCA0IDEyQzQgMTYuMDggNy4wNiAxOS40NCAxMSAxOS45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aFJlbW92ZSA9IFwiTTE0LjQ2IDE1Ljg4TDE1Ljg4IDE0LjQ2TDE4IDE2LjU5TDIwLjEyIDE0LjQ3TDIxLjU0IDE1Ljg4TDE5LjQxIDE4TDIxLjU0IDIwLjEyTDIwLjEyIDIxLjU0TDE4IDE5LjQxTDE1Ljg4IDIxLjU0TDE0LjQ2IDIwLjEyTDE2LjU5IDE4TDE0LjQ3IDE1Ljg4TTIwIDEyQzIwIDguNjQgMTcuOTMgNS43NyAxNSA0LjU5VjVDMTUgNi4xIDE0LjEgNyAxMyA3SDExVjlDMTEgOS41NSAxMC41NSAxMCAxMCAxMEg4VjEySDE0QzE0LjUgMTIgMTQuOSAxMi4zNSAxNSAxMi44MUMxMy4yIDEzLjg1IDEyIDE1Ljc5IDEyIDE4QzEyIDE5LjUgMTIuNTQgMjAuODUgMTMuNDQgMjEuOUwxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyTDIxLjkgMTMuNDRDMjEuMzQgMTIuOTYgMjAuNyAxMi41OSAyMCAxMi4zNEwyMCAxMk0xMSAxOS45M1YxOEM5LjkgMTggOSAxNy4xIDkgMTZWMTVMNC4yMSAxMC4yMUM0LjA4IDEwLjc4IDQgMTEuMzggNCAxMkM0IDE2LjA4IDcuMDYgMTkuNDQgMTEgMTkuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWdnID0gXCJNMTkuNSwxNC41QTcuNSw3LjUgMCAwLDEgMTIsMjJBNy41LDcuNSAwIDAsMSA0LjUsMTQuNUM0LjUsMTAuMzYgNy44NiwyIDEyLDJDMTYuMTQsMiAxOS41LDEwLjM2IDE5LjUsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dFYXN0ZXIgPSBcIk02Ljg5LDYuMzZDOC4yMywzLjkxIDEwLDIgMTIsMkMxNCwyIDE1Ljc3LDMuOTEgMTcuMTEsNi4zNkMxNi4yNiw2LjU3IDE1LjUsNy4wNyAxNSw3Ljc3QzEzLjc5LDYuMTEgMTEuNDYsNS43NSA5LjgsNi45N0M5LjUsNy4xOSA5LjIyLDcuNDYgOSw3Ljc3QzguNSw3LjA3IDcuNzQsNi41NyA2Ljg5LDYuMzZNMTUsMTguMDZMMTIsMTUuMDZMOSwxOC4wNkw2LDE1LjA2TDQuNzMsMTYuMzNDNS43NSwyMC4zNSA5LjgzLDIyLjc3IDEzLjg0LDIxLjc2QzE2LjUsMjEuMDggMTguNTksMTkgMTkuMjcsMTYuMzNMMTgsMTUuMDZMMTUsMTguMDZNOSwxNS45NEwxMiwxMi45NEwxNSwxNS45NEwxOCwxMi45NEwxOS41LDE0LjQ0QzE5LjM3LDEyLjEzIDE4LjgsOS44NiAxNy44MSw3Ljc2QzE2LjY1LDcuODYgMTUuNzUsOC44MyAxNS43NSwxMEgxNC4yNUEyLjI1LDIuMjUgMCAwLDAgMTIsNy43NUEyLjI1LDIuMjUgMCAwLDAgOS43NSwxMEg4LjI1QzguMjUsOC44MyA3LjM1LDcuODYgNi4xOSw3Ljc2QzUuMiw5Ljg2IDQuNjMsMTIuMTMgNC41LDE0LjQ0TDYsMTIuOTRMOSwxNS45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w2LjEgOEM1LjEgMTAuMyA0LjUgMTIuOCA0LjUgMTQuNUM0LjUgMTguNiA3LjkgMjIgMTIgMjJDMTQuMiAyMiAxNi4yIDIxIDE3LjYgMTkuNUwyMC44IDIyLjdMMjIuMSAyMS41TTE5LjUgMTQuNUMxOS41IDEwLjQgMTYuMSAyIDEyIDJDMTAuNSAyIDkuMSAzLjEgNy45IDQuN0wxOS4zIDE2LjFDMTkuNCAxNS42IDE5LjUgMTUuMSAxOS41IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWdnT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNi4xIDhDNS4xIDEwLjI4IDQuNSAxMi43NiA0LjUgMTQuNUM0LjUgMTguNjQgNy44NiAyMiAxMiAyMkMxNC4yMyAyMiAxNi4yMiAyMSAxNy41OSAxOS41TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEyIDIwQzguOTcgMjAgNi41IDE3LjUzIDYuNSAxNC41QzYuNSAxMy4wOCA2Ljk1IDExLjI1IDcuNjMgOS41TDE2LjE3IDE4LjA2QzE1LjE2IDE5LjI0IDEzLjY3IDIwIDEyIDIwTTkuMzYgNi4xNkw3LjkyIDQuNzJDOS4xIDMuMTEgMTAuNSAyIDEyIDJDMTYuMTQgMiAxOS41IDEwLjM2IDE5LjUgMTQuNUMxOS41IDE1LjA2IDE5LjQzIDE1LjYgMTkuMzIgMTYuMTJMMTcuNSAxNC4yOUMxNy4zOCAxMC40NiAxNC4yOCA0IDEyIDRDMTEuMTcgNCAxMC4yMiA0Ljg3IDkuMzYgNi4xNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dPdXRsaW5lID0gXCJNMTIgNEMxNC4zMiA0IDE3LjUgMTAuNyAxNy41IDE0LjVDMTcuNSAxNy41MyAxNS4wMyAyMCAxMiAyMFM2LjUgMTcuNTMgNi41IDE0LjVDNi41IDEwLjcgOS42OCA0IDEyIDRNMTIgMkM3Ljg2IDIgNC41IDEwLjM2IDQuNSAxNC41QzQuNSAxOC42NCA3Ljg2IDIyIDEyIDIyUzE5LjUgMTguNjQgMTkuNSAxNC41QzE5LjUgMTAuMzYgMTYuMTQgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVpZmZlbFRvd2VyID0gXCJNOC4yMSAxN0M4LjY1IDE2LjE1IDkuMDYgMTUuMTYgOS40NCAxNEg5VjEySDEwQzEwLjYxIDkuNCAxMSA2LjEzIDExIDJIMTNDMTMgNi4xMyAxMy40IDkuNCAxNCAxMkgxNVYxNEgxNC41NkMxNC45NCAxNS4xNiAxNS4zNSAxNi4xNSAxNS43OSAxN0gxN0wxNyAxOUwxOSAyMkgxNi41OEMxNS44MSAyMC4yNCAxNC4wNSAxOSAxMiAxOUM5Ljk1IDE5IDguMTkgMjAuMjQgNy40MiAyMkg1TDcgMTlMNi45NyAxN0g4LjIxTTEyLjU5IDE0SDExLjQxQzExLjA3IDE1LjEzIDEwLjY5IDE2LjEzIDEwLjI4IDE3SDEzLjcyQzEzLjMyIDE2LjEzIDEyLjkzIDE1LjEzIDEyLjU5IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVpZ2h0VHJhY2sgPSBcIk03LDJMNSw1VjE2TDYsMjBDNi4yNywyMS4wNyA2LjksMjIgOCwyMkgxNkEyLDIgMCAwLDAgMTgsMjBMMTksMTZWNUwxNywySDE1VjNIMTNWMkg3TTcsNkgxN1YxNkg3VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWplY3QgPSBcIk0xMiw1TDUuMzMsMTVIMTguNjdNNSwxN0gxOVYxOUg1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVqZWN0T3V0bGluZSA9IFwiTTUsMTdIMTlWMTlINVYxN00xMiw1TDUuMzMsMTVIMTguNjdMMTIsNU0xMiw4LjZMMTQuOTMsMTNIOS4wN0wxMiw4LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxlY3RyaWNTd2l0Y2ggPSBcIk0xLDExSDMuMTdDMy41OCw5LjgzIDQuNjksOSA2LDlDNi42NSw5IDcuMjUsOS4yMSA3Ljc0LDkuNTZMMTQuNDQsNC44N0wxNS41OCw2LjVMOC44OSwxMS4yQzguOTYsMTEuNDUgOSwxMS43MiA5LDEyQTMsMyAwIDAsMSA2LDE1QzQuNjksMTUgMy41OCwxNC4xNyAzLjE3LDEzSDFWMTFNMjMsMTFWMTNIMjAuODNDMjAuNDIsMTQuMTcgMTkuMzEsMTUgMTgsMTVBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxOCw5QzE5LjMxLDkgMjAuNDIsOS44MyAyMC44MywxMUgyM002LDExQTEsMSAwIDAsMCA1LDEyQTEsMSAwIDAsMCA2LDEzQTEsMSAwIDAsMCA3LDEyQTEsMSAwIDAsMCA2LDExTTE4LDExQTEsMSAwIDAsMCAxNywxMkExLDEgMCAwLDAgMTgsMTNBMSwxIDAgMCwwIDE5LDEyQTEsMSAwIDAsMCAxOCwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbGVjdHJpY1N3aXRjaENsb3NlZCA9IFwiTTIwLjgzIDExQTMgMyAwIDAgMCAxNS4xOCAxMUg4LjgyQTMgMyAwIDAgMCAzLjE3IDExSDFWMTNIMy4xN0EzIDMgMCAwIDAgOC44MiAxM0gxNS4xOEEzIDMgMCAwIDAgMjAuODMgMTNIMjNWMTFNNiAxM0ExIDEgMCAxIDEgNyAxMkExIDEgMCAwIDEgNiAxM00xOCAxM0ExIDEgMCAxIDEgMTkgMTJBMSAxIDAgMCAxIDE4IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsZWN0cm9uRnJhbWV3b3JrID0gXCJNMTIgMjJDMTAuMzMgMjIgOC44NCAyMC41IDcuOSAxNy45M0M3LjgzIDE3LjczIDcuOTMgMTcuNSA4LjE0IDE3LjQ0QzguMzQgMTcuMzYgOC41NiAxNy40NyA4LjYzIDE3LjY3QzkuNDQgMTkuOSAxMC43IDIxLjIzIDEyIDIxLjIzQzEyLjk0IDIxLjIzIDEzLjg3IDIwLjU1IDE0LjYyIDE5LjMxQzE0LjczIDE5LjEzIDE0Ljk2IDE5LjA3IDE1LjE1IDE5LjE4QzE1LjMzIDE5LjI5IDE1LjM5IDE5LjUzIDE1LjI4IDE5LjcxQzE0LjM4IDIxLjE5IDEzLjIyIDIyIDEyIDIyTTE1LjkxIDE3LjcyQzE1Ljg3IDE3LjcyIDE1LjgzIDE3LjcxIDE1LjggMTcuN0MxNS41OSAxNy42MyAxNS41IDE3LjQyIDE1LjU0IDE3LjIxQzE2IDE1LjgxIDE2LjIyIDE0LjE4IDE2LjIyIDEyLjVDMTYuMjIgOC42NSAxNC45NyA1LjI0IDEzLjE5IDQuMTRDMTIuOTQgNC41IDEyLjUgNC43OCAxMiA0Ljc4QzExLjI0IDQuNzggMTAuNjEgNC4xNiAxMC42MSAzLjM5QzEwLjYxIDIuNjIgMTEuMjQgMiAxMiAyQzEyLjc3IDIgMTMuNCAyLjYxIDEzLjQxIDMuMzdDMTUuNTMgNC41IDE3IDguMjEgMTcgMTIuNUMxNyAxNC4yNSAxNi43NSAxNS45NiAxNi4yOCAxNy40NUMxNi4yMyAxNy42MSAxNi4wOCAxNy43MiAxNS45MSAxNy43Mk0xMiAyLjc3QzExLjY2IDIuNzcgMTEuMzggMy4wNSAxMS4zOCAzLjM5QzExLjM4IDMuNzMgMTEuNjcgNCAxMiA0QzEyLjM1IDQgMTIuNjQgMy43MyAxMi42NCAzLjM5QzEyLjY0IDMuMDUgMTIuMzUgMi43NyAxMiAyLjc3TTQuMDggMTguNTRDMy4zMSAxOC41NCAyLjY4IDE3LjkxIDIuNjggMTcuMTVDMi42OCAxNi42NiAyLjk0IDE2LjIyIDMuMzMgMTUuOTdDMy4xOSAxMy41NiA1LjY4IDEwLjQxIDkuNSA4LjIyQzExLjA5IDcuMzIgMTIuNzUgNi42NyAxNC4zMiA2LjM0QzE0LjUgNi4yOSAxNC43MyA2LjQyIDE0Ljc3IDYuNjNDMTQuODIgNi44NCAxNC42OSA3LjA1IDE0LjUgNy4wOUMxMyA3LjQxIDExLjQxIDguMDMgOS45IDguODlDNi40NiAxMC44NiA0LjEgMTMuNjggNC4xIDE1Ljc2QzQuODYgMTUuNzcgNS41IDE2LjM5IDUuNSAxNy4xNUM1LjUgMTcuOTIgNC44NSAxOC41NCA0LjA4IDE4LjU0TTQuMDggMTYuNTNDMy43NCAxNi41MyAzLjQ2IDE2LjgxIDMuNDYgMTcuMTVDMy40NiAxNy41IDMuNzQgMTcuNzcgNC4wOCAxNy43N1M0LjcxIDE3LjUgNC43MSAxNy4xNUM0LjcxIDE2LjgxIDQuNDIgMTYuNTMgNC4wOCAxNi41M00xOC41IDEzLjQ0QzE4LjQzIDEzLjQ0IDE4LjM0IDEzLjQxIDE4LjI3IDEzLjM1QzE4LjExIDEzLjIxIDE4LjA5IDEyLjk3IDE4LjIzIDEyLjhDMTkuNzcgMTEgMjAuMyA5LjI2IDE5LjY0IDguMTRDMTkuMTcgNy4zMyAxOC4xIDYuODggMTYuNjMgNi44NkMxNi40MSA2Ljg2IDE2LjI0IDYuNjggMTYuMjUgNi40N0MxNi4yNSA2LjI2IDE2LjQzIDYuMSAxNi42NCA2LjA5QzE4LjM5IDYuMTEgMTkuNyA2LjcgMjAuMzEgNy43NUMyMS4xNSA5LjE5IDIwLjYgMTEuMjEgMTguODIgMTMuM0MxOC43NCAxMy4zOSAxOC42MyAxMy40NCAxOC41IDEzLjQ0TTE2LjUgMTguOUMxNC41IDE4LjkgMTEuOTQgMTguMTYgOS41IDE2Ljc3QzcuOTUgMTUuODggNi41NyAxNC43OSA1LjUgMTMuNjNDNS4zNSAxMy40NyA1LjM2IDEzLjIzIDUuNSAxMy4wOEM1LjY4IDEyLjk0IDUuOTIgMTIuOTUgNi4wNyAxMy4xMUM3LjA4IDE0LjIxIDguNCAxNS4yNSA5Ljg5IDE2LjFDMTMuMiAxOCAxNi43NyAxOC42MyAxOC42NSAxNy43MkMxOC41NyAxNy41NSAxOC41IDE3LjM1IDE4LjUgMTcuMTVDMTguNSAxNi4zOCAxOS4xNSAxNS43NiAxOS45MiAxNS43NkMyMC42OSAxNS43NiAyMS4zMiAxNi4zOCAyMS4zMiAxNy4xNUMyMS4zMiAxNy45MiAyMC42OSAxOC41NCAxOS45MiAxOC41NEMxOS42NCAxOC41NCAxOS4zOSAxOC40NiAxOS4xNyAxOC4zMkMxOC40NyAxOC43MSAxNy41NiAxOC45IDE2LjUgMTguOU0xOS41IDE3LjYzQzE5LjYzIDE3LjcxIDE5Ljc3IDE3Ljc3IDE5LjkyIDE3Ljc3QzIwLjI3IDE3Ljc3IDIwLjU1IDE3LjUgMjAuNTUgMTcuMTVDMjAuNTUgMTYuODEgMjAuMjcgMTYuNTMgMTkuOTIgMTYuNTNTMTkuMyAxNi44MSAxOS4zIDE3LjE1QzE5LjMgMTcuMjkgMTkuMzUgMTcuNDIgMTkuNDMgMTcuNTNDMTkuNDcgMTcuNTUgMTkuNSAxNy41OSAxOS41IDE3LjYzTTQuNDYgMTJDNC4zMyAxMiA0LjIgMTEuOTIgNC4xMyAxMS44QzMuMjMgMTAuMjUgMy4wOCA4LjgxIDMuNyA3Ljc0QzQuNTQgNi4zIDYuNTggNS43NiA5LjMxIDYuMjVDOS41IDYuMjkgOS42NiA2LjUgOS42MiA2LjdDOS41OSA2LjkxIDkuMzkgNy4wNSA5LjE4IDdDNi44MiA2LjU5IDUgNyA0LjM3IDguMTNDMy44OSA4Ljk1IDQuMDQgMTAuMTEgNC44IDExLjQxQzQuOSAxMS42IDQuODQgMTEuODMgNC42NSAxMS45NEM0LjU5IDExLjk3IDQuNTMgMTIgNC40NiAxMk0xMi4yMSAxMy40QzExLjcxIDEzLjUgMTEuMjEgMTMuMTkgMTEuMTEgMTIuNjlDMTEgMTIuMiAxMS4zMiAxMS43MSAxMS44MSAxMS42QzEyLjMxIDExLjUgMTIuODEgMTEuODEgMTIuOTEgMTIuMzFDMTMgMTIuOCAxMi43IDEzLjI5IDEyLjIxIDEzLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxlcGhhbnQgPSBcIk0xOS41LDE1LjVBMC41LDAuNSAwIDAsMSAxOSwxNkEwLjUsMC41IDAgMCwxIDE4LjUsMTUuNVY4LjVDMTguNSw2LjU3IDE2LjQzLDUgMTQuNSw1SDZBNCw0IDAgMCwwIDIsOVYxOUg2VjE1SDExVjE5SDE1VjE0LjVBMC41LDAuNSAwIDAsMSAxNS41LDE0QTAuNSwwLjUgMCAwLDEgMTYsMTQuNVYxNkEzLDMgMCAwLDAgMTksMTlBMywzIDAgMCwwIDIyLDE2VjE0SDE5LjVWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRpb25EZWNsaW5lID0gXCJNMjEsMjFIM1YxMS4yNUw5LjQ1LDE1TDEzLjIyLDEyLjhMMjEsMTcuMjlWMjFNMyw4Ljk0VjYuNzVMOS40NSwxMC41TDEzLjIyLDguM0wyMSwxMi43OVYxNUwxMy4yMiwxMC41TDkuNDUsMTIuNjdMMyw4Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsZXZhdGlvblJpc2UgPSBcIk0zLDIxVjE3LjI5TDEwLjc4LDEyLjhMMTQuNTUsMTVMMjEsMTEuMjVWMjFIM00yMSw4Ljk0TDE0LjU1LDEyLjY3TDEwLjc4LDEwLjVMMywxNVYxMi43OUwxMC43OCw4LjNMMTQuNTUsMTAuNUwyMSw2Ljc1VjguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxldmF0b3IgPSBcIk03LDJMMTEsNkg4VjEwSDZWNkgzTDcsMk0xNywxMEwxMyw2SDE2VjJIMThWNkgyMUwxNywxME03LDEySDE3QTIsMiAwIDAsMSAxOSwxNFYyMEEyLDIgMCAwLDEgMTcsMjJIN0EyLDIgMCAwLDEgNSwyMFYxNEEyLDIgMCAwLDEgNywxMk03LDE0VjIwSDE3VjE0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxldmF0b3JEb3duID0gXCJNNyAxMEwxMSA2SDhWMkg2VjZIM0w3IDEwTTE3IDEwTDEzIDZIMTZWMkgxOFY2SDIxTDE3IDEwTTcgMTJIMTdDMTguMTEgMTIgMTkgMTIuOSAxOSAxNFYyMEMxOSAyMS4xMSAxOC4xMSAyMiAxNyAyMkg3QzUuOSAyMiA1IDIxLjExIDUgMjBWMTRDNSAxMi45IDUuOSAxMiA3IDEyTTcgMTRWMjBIMTdWMTRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRvclBhc3NlbmdlciA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM004IDVDOC44IDUgOS41IDUuNyA5LjUgNi41UzguOCA4IDggOCA2LjUgNy4zIDYuNSA2LjUgNy4yIDUgOCA1TTExIDE0SDkuNVYxOUg2LjVWMTRINVYxMUM1IDkuOSA1LjkgOSA3IDlIOUMxMC4xIDkgMTEgOS45IDExIDExVjE0TTE1LjkgMTlMMTMgMTQuMkgxOC44TDE1LjkgMTlNMTMgMTBMMTYgNUwxOSAxMEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRvclVwID0gXCJNNyAyTDExIDZIOFYxMEg2VjZIM0w3IDJNMTcgMkwxMyA2SDE2VjEwSDE4VjZIMjFMMTcgMk03IDEySDE3QzE4LjExIDEyIDE5IDEyLjkgMTkgMTRWMjBDMTkgMjEuMTEgMTguMTEgMjIgMTcgMjJIN0M1LjkgMjIgNSAyMS4xMSA1IDIwVjE0QzUgMTIuOSA1LjkgMTIgNyAxMk03IDE0VjIwSDE3VjE0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxsaXBzZSA9IFwiTTEyLDRDNi41LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA2LjUsMjAgMTIsMjBDMTcuNSwyMCAyMiwxNi40MiAyMiwxMkMyMiw3LjU4IDE3LjUsNCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsbGlwc2VPdXRsaW5lID0gXCJNMTIsNkMxNi40MSw2IDIwLDguNjkgMjAsMTJDMjAsMTUuMzEgMTYuNDEsMTggMTIsMThDNy41OSwxOCA0LDE1LjMxIDQsMTJDNCw4LjY5IDcuNTksNiAxMiw2TTEyLDRDNi41LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA2LjUsMjAgMTIsMjBDMTcuNSwyMCAyMiwxNi40MiAyMiwxMkMyMiw3LjU4IDE3LjUsNCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsID0gXCJNMjAsOEwxMiwxM0w0LDhWNkwxMiwxMUwyMCw2TTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsQWxlcnQgPSBcIk0xOCA4TDEwIDEzTDIgOFY2TDEwIDExTDE4IDZNMTggNEgyQy45IDQgMCA0LjkgMCA2VjE4QzAgMTkuMSAuOSAyMCAyIDIwSDE4QzE5LjEgMjAgMjAgMTkuMSAyMCAxOFY2QzIwIDQuOSAxOS4xIDQgMTggNE0yNCA3SDIyVjEzSDI0VjdNMjQgMTVIMjJWMTdIMjRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxBbGVydE91dGxpbmUgPSBcIk0yNCA3SDIyVjEzSDI0VjdNMjQgMTVIMjJWMTdIMjRWMTVNMjAgNkMyMCA0LjkgMTkuMSA0IDE4IDRIMkMuOSA0IDAgNC45IDAgNlYxOEMwIDE5LjEgLjkgMjAgMiAyMEgxOEMxOS4xIDIwIDIwIDE5LjEgMjAgMThWNk0xOCA2TDEwIDExTDIgNkgxOE0xOCAxOEgyVjhMMTAgMTNMMTggOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbEJveCA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNNi40LDYuNUgxNy42QzE4LjM3LDYuNSAxOSw3LjEyIDE5LDcuOVYxNi4xQTEuNCwxLjQgMCAwLDEgMTcuNiwxNy41SDYuNEM1LjYzLDE3LjUgNSwxNi44NyA1LDE2LjFWNy45QzUsNy4xMiA1LjYyLDYuNSA2LjQsNi41TTYsOFYxMEwxMiwxNEwxOCwxMFY4TDEyLDEyTDYsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbENoZWNrID0gXCJNMjEsMTMuMzRDMjAuMzcsMTMuMTIgMTkuNywxMyAxOSwxM0E2LDYgMCAwLDAgMTMsMTlDMTMsMTkuMzQgMTMuMDMsMTkuNjcgMTMuMDgsMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDE5QTIsMiAwIDAsMSAyMSw2VjEzLjM0TTIzLjUsMTdMMTguNSwyMkwxNSwxOC41TDE2LjUsMTdMMTguNSwxOUwyMiwxNS41TDIzLjUsMTdNMyw2VjhMMTEsMTNMMTksOFY2TDExLDExTDMsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbENoZWNrT3V0bGluZSA9IFwiTTIzLjUgMTdMMTguNSAyMkwxNSAxOC41TDE2LjUgMTdMMTguNSAxOUwyMiAxNS41TDIzLjUgMTdNMTMgMThIM1Y4TDExIDEzTDE5IDhWMTNIMjFWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDEzVjE4TTE5IDZMMTEgMTFMMyA2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsRWRpdCA9IFwiTTIxLDEyLjEzQzIwLjg1LDEyLjE0IDIwLjcxLDEyLjE5IDIwLjYxLDEyLjNMMTkuNjEsMTMuM0wyMS42NiwxNS4zTDIyLjY2LDE0LjNDMjIuODgsMTQuMDkgMjIuODgsMTMuNzQgMjIuNjYsMTMuNTNMMjEuNDIsMTIuM0MyMS4zMiwxMi4xOSAyMS4xOCwxMi4xNCAyMS4wNCwxMi4xM00xOS4wNCwxMy44OEwxMywxOS45NFYyMkgxNS4wNkwyMS4xMiwxNS45M00yMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgxMVYxOS4xMUwxOS4yNCwxMC44OUMxOS43MSwxMC40IDIwLjM2LDEwLjEzIDIxLjA0LDEwLjEzQzIxLjM4LDEwLjEzIDIxLjcyLDEwLjE5IDIyLjA0LDEwLjMyVjZDMjIuMDQsNC44OCAyMS4xMiw0IDIwLDRNMjAsOEwxMiwxM0w0LDhWNkwxMiwxMUwyMCw2XCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxFZGl0T3V0bGluZSA9IFwiTTE5LjA3IDEzLjg4TDEzIDE5Ljk0VjIySDE1LjA2TDIxLjEyIDE1LjkzTTIyLjcgMTMuNThMMjEuNDIgMTIuM0MyMS4zMiAxMi4xOSAyMS4xOCAxMi4xMyAyMS4wNCAxMi4xM0MyMC44OSAxMi4xNCAyMC43NSAxMi4xOSAyMC42NSAxMi4zTDE5LjY1IDEzLjNMMjEuNyAxNS4zTDIyLjcgMTQuM0MyMi44OSAxNC4xIDIyLjg5IDEzLjc4IDIyLjcgMTMuNThNMTEgMThINFY4TDEyIDEzTDIwIDhWMTBIMjJWNkMyMiA0LjkgMjEuMSA0IDIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDExVjE4TTIwIDZMMTIgMTFMNCA2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsTG9jayA9IFwiTTIwLjUsMEEyLjUsMi41IDAgMCwxIDIzLDIuNVYzQTEsMSAwIDAsMSAyNCw0VjhBMSwxIDAgMCwxIDIzLDlIMThBMSwxIDAgMCwxIDE3LDhWNEExLDEgMCAwLDEgMTgsM1YyLjVBMi41LDIuNSAwIDAsMSAyMC41LDBNMTIsMTFMNCw2VjhMMTIsMTNMMTYuMTgsMTAuMzlDMTYuNjksMTAuNzcgMTcuMzIsMTEgMTgsMTFIMjJWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0SDE1VjhDMTUsOC4zNiAxNS4wNiw4LjcgMTUuMTgsOUwxMiwxMU0yMC41LDFBMS41LDEuNSAwIDAsMCAxOSwyLjVWM0gyMlYyLjVBMS41LDEuNSAwIDAsMCAyMC41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNYXJrQXNVbnJlYWQgPSBcIk0xOC44NCw3SDE2LjIyTDEwLjUsNEw0LDcuNDFWMTdBMiwyIDAgMCwxIDIsMTVWNy4xN0MyLDYuNSAyLjI4LDYuMDYgMi44MSw1LjgxTDEwLjUsMkwxOC4wNSw1LjgxQzE4LjUsNi4wOSAxOC43OCw2LjUgMTguODQsN003LDhIMjBBMiwyIDAgMCwxIDIyLDEwVjE5QTIsMiAwIDAsMSAyMCwyMUg3QTIsMiAwIDAsMSA1LDE5VjEwQTIsMiAwIDAsMSA3LDhNMjAsMTEuNjdWMTBMMTMuNSwxMy4zMUw3LDEwVjExLjY3TDEzLjUsMTVMMjAsMTEuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNaW51cyA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgxNC4wOUMxNC4wMywxOS42NyAxNCwxOS4zNCAxNCwxOUE2LDYgMCAwLDEgMjAsMTNDMjAuMzQsMTMgMjAuNjcsMTMuMDMgMjEsMTMuMDlWNkMyMSw0Ljg5IDIwLjEsNCAxOSw0SDNNMyw2TDExLDExTDE5LDZWOEwxMSwxM0wzLDhWNk0xNiwxOFYyMEgyNFYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE1pbnVzT3V0bGluZSA9IFwiTTE2IDE4VjIwSDI0VjE4SDE2TTE0IDE5QzE0IDE4LjY2IDE0LjA0IDE4LjMzIDE0LjA5IDE4SDNWOEwxMSAxM0wxOSA4VjEzLjA5QzE5LjMzIDEzLjA0IDE5LjY2IDEzIDIwIDEzUzIwLjY3IDEzLjA0IDIxIDEzLjA5VjZDMjEgNC45IDIwLjEgNCAxOSA0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxNC4wOUMxNC4wNCAxOS42NyAxNCAxOS4zNCAxNCAxOU0xOSA2TDExIDExTDMgNkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE11bHRpcGxlID0gXCJNMjIsNlY0TDE0LDlMNiw0VjZMMTQsMTFMMjIsNk0yMiwyQTIsMiAwIDAsMSAyNCw0VjE2QTIsMiAwIDAsMSAyMiwxOEg2QzQuODksMTggNCwxNy4xIDQsMTZWNEM0LDIuODkgNC44OSwyIDYsMkgyMk0yLDZWMjBIMjBWMjJIMkEyLDIgMCAwLDEgMCwyMFY2SDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNdWx0aXBsZU91dGxpbmUgPSBcIk0yIDZWMjBIMjBWMjJIMkMuODk1IDIyIDAgMjEuMTEgMCAyMFY2SDJNMjQgNEMyNCAyLjkgMjMuMSAyIDIyIDJINkM0LjkgMiA0IDIuOSA0IDRWMTZDNCAxNy4xIDQuOSAxOCA2IDE4SDIyQzIzLjEgMTggMjQgMTcuMSAyNCAxNlY0TTIyIDRMMTQgOUw2IDRIMjJNMjIgMTZINlY2TDE0IDExTDIyIDZWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxOZXdzbGV0dGVyID0gXCJNMTIgLjY0TDguMjMgM0g1VjVMMi45NyA2LjI5QzIuMzkgNi42NCAyIDcuMjcgMiA4VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWOEMyMiA3LjI3IDIxLjYxIDYuNjQgMjEuMDMgNi4yOUwxOSA1VjNIMTUuNzdNNyA1SDE3VjkuODhMMTIgMTNMNyA5Ljg4TTggNlY3LjVIMTZWNk01IDcuMzhWOC42M0w0IDhNMTkgNy4zOEwyMCA4TDE5IDguNjNNOCA4LjVWMTBIMTZWOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMMi42IDQuNUMyLjIgNC45IDIgNS40IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMTguMUwyMC44IDIyLjdMMjIuMSAyMS41TTQgOFY2TDQuMyA2LjJMOS42IDExLjVMNCA4TTEzLjQgMTAuMkw3LjIgNEgyMEMyMS4xIDQgMjIgNC45IDIyIDZWMThDMjIgMTguMiAyMiAxOC41IDIxLjkgMTguN0wxNC42IDExLjRMMjAgOFY2TDEzLjQgMTAuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0wyLjYgNC41QzIuMyA0LjkgMiA1LjQgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgxOC4xTDIwLjggMjIuN0wyMi4xIDIxLjVNNCAxOFY4TDkuNiAxMS41TDE2LjEgMThINE05LjIgNkw3LjIgNEgyMEMyMS4xIDQgMjIgNC45IDIyIDZWMThDMjIgMTguMiAyMiAxOC41IDIxLjkgMTguN0wyMCAxNi44VjhMMTQuNiAxMS40TDEzLjQgMTAuMkwyMCA2SDkuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW4gPSBcIk00LDhMMTIsMTNMMjAsOFY4TDEyLDNMNCw4VjhNMjIsOFYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY4QzIsNy4yNyAyLjM5LDYuNjQgMi45Nyw2LjI5TDEyLDAuNjRMMjEuMDMsNi4yOUMyMS42MSw2LjY0IDIyLDcuMjcgMjIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW5NdWx0aXBsZSA9IFwiTTYsOEwxNCwxM0wyMiw4VjhMMTQsM0w2LDhWOE0yNCw4VjE4QTIsMiAwIDAsMSAyMiwyMEg2QTIsMiAwIDAsMSA0LDE4VjhDNCw3LjI3IDQuMzksNi42NCA0Ljk3LDYuMjlMMTQsMC42NEwyMy4wMyw2LjI5QzIzLjYxLDYuNjQgMjQsNy4yNyAyNCw4TTIsOFYyMkgyMFYyNEgyQTIsMiAwIDAsMSAwLDIyVjhIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW5NdWx0aXBsZU91dGxpbmUgPSBcIk0yIDhWMjJIMjBWMjRIMkMuODk1IDI0IDAgMjMuMTEgMCAyMlY4SDJNMjMuMDMgNi4yOUwxNCAuNjRMNC45NyA2LjI5QzQuMzkgNi42NCA0IDcuMjcgNCA4VjE4QzQgMTkuMSA0LjkgMjAgNiAyMEgyMkMyMy4xIDIwIDI0IDE5LjEgMjQgMThWOEMyNCA3LjI3IDIzLjYxIDYuNjQgMjMuMDMgNi4yOU0yMiAxOEg2VjEwTDE0IDE1TDIyIDEwVjE4TTE0IDEzTDYgOEwxNCAzTDIyIDhMMTQgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxPcGVuT3V0bGluZSA9IFwiTTIxLjAzIDYuMjlMMTIgLjY0TDIuOTcgNi4yOUMyLjM5IDYuNjQgMiA3LjI3IDIgOFYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjhDMjIgNy4yNyAyMS42MSA2LjY0IDIxLjAzIDYuMjlNMjAgMThINFYxMEwxMiAxNUwyMCAxMFYxOE0xMiAxM0w0IDhMMTIgM0wyMCA4TDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsT3V0bGluZSA9IFwiTTIyIDZDMjIgNC45IDIxLjEgNCAyMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNk0yMCA2TDEyIDExTDQgNkgyME0yMCAxOEg0VjhMMTIgMTNMMjAgOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFBsdXMgPSBcIk0zLDRDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMTQuMDlDMTQuMDMsMTkuNjcgMTQsMTkuMzQgMTQsMTlBNiw2IDAgMCwxIDIwLDEzQzIwLjM0LDEzIDIwLjY3LDEzLjAzIDIxLDEzLjA5VjZDMjEsNC44OSAyMC4xLDQgMTksNEgzTTMsNkwxMSwxMUwxOSw2VjhMMTEsMTNMMyw4VjZNMTksMTVWMThIMTZWMjBIMTlWMjNIMjFWMjBIMjRWMThIMjFWMTVIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxQbHVzT3V0bGluZSA9IFwiTTE5IDE1VjE4SDE2VjIwSDE5VjIzSDIxVjIwSDI0VjE4SDIxVjE1SDE5TTE0IDE4SDNWOEwxMSAxM0wxOSA4VjEzSDIxVjZDMjEgNC45IDIwLjEgNCAxOSA0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxNFYxOE0xOSA2TDExIDExTDMgNkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFJlY2VpdmUgPSBcIk0yMiAyMEgxOFYyM0wxMyAxOC41TDE4IDE0VjE3SDIyVjIwTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDExLjM1QTUuOCA1LjggMCAwIDEgMTEgMThBNiA2IDAgMCAxIDIyIDE0LjY5VjZBMiAyIDAgMCAwIDIwIDRNMjAgOEwxMiAxM0w0IDhWNkwxMiAxMUwyMCA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsUmVjZWl2ZU91dGxpbmUgPSBcIk0yMiAyMEgxOFYyM0wxMyAxOC41TDE4IDE0VjE3SDIyVjIwTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDExVjE4SDRWOEwxMiAxM0wyMCA4VjE1SDIyVjZBMiAyIDAgMCAwIDIwIDRNMTIgMTFMNCA2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsUmVtb3ZlID0gXCJNMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhMMjAuNDEgMTlNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuODkgNCA0IDRIMjBDMjEuMSA0IDIyIDQuODkgMjIgNlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjAgOFY2TDEyIDExTDQgNlY4TDEyIDEzTDIwIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxSZW1vdmVPdXRsaW5lID0gXCJNMTMuMDkgMThINFY4TDEyIDEzTDIwIDhWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWNkMyMiA0LjkgMjEuMSA0IDIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4TTIwIDZMMTIgMTFMNCA2SDIwTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU2VhcmNoID0gXCJNMyw0SDE5QTIsMiAwIDAsMSAyMSw2VjEwLjgyQzIwLDkuODUgMTguNyw5LjIzIDE3LjMxLDkuMDZMMTksOFY2TDExLDExTDMsNlY4TDEwLjYyLDEyLjc2QzEwLjIxLDEzLjYyIDEwLDE0LjU1IDEwLDE1LjVDMTAsMTcuMTggMTAuNjUsMTguNzkgMTEuODEsMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0TTE2LjUsMTFDMTksMTEgMjEsMTMgMjEsMTUuNUMyMSwxNi4zOCAyMC43NSwxNy4yMSAyMC4zMSwxNy45TDIzLjM5LDIxTDIyLDIyLjM5TDE4Ljg4LDE5LjMyQzE4LjE5LDE5Ljc1IDE3LjM3LDIwIDE2LjUsMjBDMTQsMjAgMTIsMTggMTIsMTUuNUMxMiwxMyAxNCwxMSAxNi41LDExTTE2LjUsMTNBMi41LDIuNSAwIDAsMCAxNCwxNS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOEEyLjUsMi41IDAgMCwwIDE5LDE1LjVBMi41LDIuNSAwIDAsMCAxNi41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU2VhcmNoT3V0bGluZSA9IFwiTTE2LjUgMTFDMTkgMTEgMjEgMTMgMjEgMTUuNUMyMSAxNi4zOCAyMC43NSAxNy4yMSAyMC4zMSAxNy45TDIzLjM5IDIxTDIyIDIyLjM5TDE4Ljg4IDE5LjMyQzE4LjE5IDE5Ljc1IDE3LjM3IDIwIDE2LjUgMjBDMTQgMjAgMTIgMTggMTIgMTUuNVMxNCAxMSAxNi41IDExTTE2LjUgMTNDMTUuMTIgMTMgMTQgMTQuMTIgMTQgMTUuNVMxNS4xMiAxOCAxNi41IDE4IDE5IDE2Ljg4IDE5IDE1LjUgMTcuODggMTMgMTYuNSAxM00xMC41IDE4SDNWOEwxMC42MiAxMi43NkMxMS42NSAxMC41NCAxMy45IDkgMTYuNSA5QzE2Ljc3IDkgMTcuMDQgOSAxNy4zMSA5LjA2TDE5IDhWOS41QzE5Ljc1IDkuODEgMjAuNDIgMTAuMjcgMjEgMTAuODJWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDExLjgyQzExLjI3IDE5LjQyIDEwLjgyIDE4Ljc1IDEwLjUgMThNMTkgNkwxMSAxMUwzIDZIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxTZW5kID0gXCJNMTMgMTdIMTdWMTRMMjIgMTguNUwxNyAyM1YyMEgxM1YxN00yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMS4zNUE1LjggNS44IDAgMCAxIDExIDE4QTYgNiAwIDAgMSAyMiAxNC42OVY2QTIgMiAwIDAgMCAyMCA0TTIwIDhMMTIgMTNMNCA4VjZMMTIgMTFMMjAgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFNlbmRPdXRsaW5lID0gXCJNMTMgMTdIMTdWMTRMMjIgMTguNUwxNyAyM1YyMEgxM1YxN00yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMVYxOEg0VjhMMTIgMTNMMjAgOFYxNEgyMlY2QTIgMiAwIDAgMCAyMCA0TTEyIDExTDQgNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFN5bmMgPSBcIk0zIDRDMS44OSA0IDEgNC44OSAxIDZWMThDMSAxOS4xMSAxLjkgMjAgMyAyMEgxMy41QTYuNSA2LjUgMCAwIDEgMTMgMTcuNUE2LjUgNi41IDAgMCAxIDE5LjUgMTFBNi41IDYuNSAwIDAgMSAyMSAxMS4xOFY2QzIxIDQuODkgMjAuMSA0IDE5IDRIM00zIDZMMTEgMTFMMTkgNlY4TDExIDEzTDMgOFY2TTE5IDEyTDE2Ljc1IDE0LjI1TDE5IDE2LjVWMTVDMjAuMzggMTUgMjEuNSAxNi4xMiAyMS41IDE3LjVDMjEuNSAxNy45IDIxLjQxIDE4LjI4IDIxLjI0IDE4LjYyTDIyLjMzIDE5LjcxQzIyLjc1IDE5LjA4IDIzIDE4LjMyIDIzIDE3LjVDMjMgMTUuMjkgMjEuMjEgMTMuNSAxOSAxMy41VjEyTTE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU3luY091dGxpbmUgPSBcIk0zIDRDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxMy41QTYuNSA2LjUgMCAwIDEgMTMgMThIM1Y4TDExIDEzTDE5IDhWMTFBNi41IDYuNSAwIDAgMSAxOS41IDExQTYuNSA2LjUgMCAwIDEgMjEgMTEuMThWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM00zIDZIMTlMMTEgMTFMMyA2TTE5IDEyTDE2Ljc1IDE0LjI1TDE5IDE2LjVWMTVDMjAuMzggMTUgMjEuNSAxNi4xMiAyMS41IDE3LjVDMjEuNSAxNy45IDIxLjQxIDE4LjI4IDIxLjI0IDE4LjYyTDIyLjMzIDE5LjcxQzIyLjc1IDE5LjA4IDIzIDE4LjMyIDIzIDE3LjVDMjMgMTUuMjkgMjEuMjEgMTMuNSAxOSAxMy41VjEyTTE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsVmFyaWFudCA9IFwiTTEyLDEzTDIsNi43NlY2QzIsNC44OSAyLjg5LDQgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjYuNzVMMTIsMTNNMjIsMThBMiwyIDAgMCwxIDIwLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY5LjExTDQsMTAuMzZWMThIMjBWMTAuMzZMMjIsOS4xMVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWJlciA9IFwiTTIyLDE0LjIyQzIyLDE0LjIyIDE3LjYxLDE3LjM1IDE0LjcyLDE3LjM5QzExLjg0LDE3LjQ0IDEyLjEzLDE1LjU2IDEyLjEzLDE1LjU2QzEyLjEzLDE1LjU2IDIyLjcxLDExLjk0IDE5LjgzLDQuNzlDMTguNTMsMi45NSAxNywyLjM3IDE0Ljg5LDIuNDJDMTIuNzYsMi40NiAxMC4xNywzLjc2IDguNDYsNy42QzcuNjQsOS40NCA3LjQxLDExLjE4IDcuMjQsMTIuNVYxMi41QzcuMjQsMTIuNSA1LjMyLDEyLjg4IDQuMzIsMTIuMDRDMy4zMiwxMS4yIDIuNzcsMTIuMDQgMi43NywxMi4wNEMyLjc3LDEyLjA0IDEuMDMsMTQuMiAyLjc1LDE0Ljg3QzQuNDYsMTUuNTQgNy4xMiwxNS44MiA3LjEyLDE1LjgyVjE1LjgyQzcuMzYsMTcgOC4wOCwxOSAxMC4xNywyMC42QzEzLjMsMjMgMTkuMzIsMjAuNCAxOS4zMiwyMC40TTExLjYzLDEyLjMzQzExLjc2LDcuMzYgMTUsNS4xOCAxNi4xNSw2LjI3QzE3LjI3LDcuMzYgMTYuODYsOS43IDE0LjcyLDExLjE2QzEyLjU5LDEyLjYzIDExLjYzLDEyLjMzIDExLjYzLDEyLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYnkgPSBcIk0xMSwyTDYsN0w3LDhMMiwxM0w3LDE4TDgsMTdMMTMsMjJMMTgsMTdMMTcsMTZMMjIsMTFMMTcsNkwxNiw3TDExLDJNMTAsOC41TDE2LDEyTDEwLDE1LjVWOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE1LjUsOEExLjUsMS41IDAgMCwxIDE3LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsMTFBMS41LDEuNSAwIDAsMSAxNCw5LjVBMS41LDEuNSAwIDAsMSAxNS41LDhNOC41LDhBMS41LDEuNSAwIDAsMSAxMCw5LjVBMS41LDEuNSAwIDAsMSA4LjUsMTFBMS41LDEuNSAwIDAsMSA3LDkuNUExLjUsMS41IDAgMCwxIDguNSw4TTEyLDE3LjVDOS42NywxNy41IDcuNjksMTYuMDQgNi44OSwxNEgxNy4xMUMxNi4zLDE2LjA0IDE0LjMzLDE3LjUgMTIsMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkFuZ3J5ID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVWOEwxMCw5LjVDMTAsMTAuMyA5LjMsMTEgOC41LDExQzcuNywxMSA3LDEwLjMgNyw5LjVNMTQuNzcsMTcuMjNDMTQuMzIsMTYuNSAxMy4yNSwxNiAxMiwxNkMxMC43NSwxNiA5LjY4LDE2LjUgOS4yMywxNy4yM0w3LjgxLDE1LjgxQzguNzEsMTQuNzIgMTAuMjUsMTQgMTIsMTRDMTMuNzUsMTQgMTUuMjksMTQuNzIgMTYuMTksMTUuODFMMTQuNzcsMTcuMjNNMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVMMTcsOFY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25BbmdyeU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDE0QzEzLjc1LDE0IDE1LjI5LDE0LjcyIDE2LjE5LDE1LjgxTDE0Ljc3LDE3LjIzQzE0LjMyLDE2LjUgMTMuMjUsMTYgMTIsMTZDMTAuNzUsMTYgOS42OCwxNi41IDkuMjMsMTcuMjNMNy44MSwxNS44MUM4LjcxLDE0LjcyIDEwLjI1LDE0IDEyLDE0TTEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNVY4TDEwLDkuNU0xNyw5LjVDMTcsMTAuMyAxNi4zLDExIDE1LjUsMTFDMTQuNywxMSAxNCwxMC4zIDE0LDkuNUwxNyw4VjkuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29uZnVzZWQgPSBcIk0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwIDEwIDAgMCAwIDEyIDJNOC41IDhBMS41IDEuNSAwIDEgMSA3IDkuNUExLjU0IDEuNTQgMCAwIDEgOC41IDhNMTcgMTZIMTNBNCA0IDAgMCAwIDkuNTMgMThMNy44IDE3QTYgNiAwIDAgMSAxMyAxNEgxN00xNS41IDExQTEuNSAxLjUgMCAxIDEgMTcgOS41QTEuNTQgMS41NCAwIDAgMSAxNS41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29uZnVzZWRPdXRsaW5lID0gXCJNMjAgMTJBOCA4IDAgMSAwIDEyIDIwQTggOCAwIDAgMCAyMCAxMk0yMiAxMkExMCAxMCAwIDEgMSAxMiAyQTEwIDEwIDAgMCAxIDIyIDEyTTE1LjUgOEExLjUgMS41IDAgMSAxIDE0IDkuNUExLjU0IDEuNTQgMCAwIDEgMTUuNSA4TTEwIDkuNUExLjUgMS41IDAgMSAxIDguNSA4QTEuNTQgMS41NCAwIDAgMSAxMCA5LjVNMTcgMTVIMTNBNCA0IDAgMCAwIDkuNTMgMTdMNy44IDE2QTYgNiAwIDAgMSAxMyAxM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkNvb2wgPSBcIk0zLjIyLDcuMjJDNC45MSw0LjExIDguMjEsMiAxMiwyQzE1Ljc5LDIgMTkuMDksNC4xMSAyMC43OCw3LjIyTDIwLDhINEwzLjIyLDcuMjJNMjEuNCw4LjZDMjEuNzgsOS42NyAyMiwxMC44MSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQzIsMTAuODEgMi4yMiw5LjY3IDIuNiw4LjZMNCwxMEg1QzUsMTEuMzggNy4xMiwxMi41IDguNSwxMi41QzkuODgsMTIuNSAxMS4yNSwxMS4zOCAxMS4yNSwxMEgxMi43NUMxMi43NSwxMS4zOCAxNC4xMiwxMi41IDE1LjUsMTIuNUMxNi44OCwxMi41IDE5LDExLjM4IDE5LDEwSDIwTDIxLjQsOC42TTE2LjE5LDE1LjQyTDE0Ljc3LDE0QzE0LjMyLDE0LjcyIDEzLjI1LDE1LjIzIDEyLDE1LjIzQzEwLjc1LDE1LjIzIDkuNjgsMTQuNzIgOS4yMywxNEw3LjgxLDE1LjQyQzguNzEsMTYuNSAxMC4yNSwxNy4yMyAxMiwxNy4yM0MxMy43NSwxNy4yMyAxNS4yOSwxNi41IDE2LjE5LDE1LjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29vbE91dGxpbmUgPSBcIk0xOSwxMEMxOSwxMS4zOCAxNi44OCwxMi41IDE1LjUsMTIuNUMxNC4xMiwxMi41IDEyLjc1LDExLjM4IDEyLjc1LDEwSDExLjI1QzExLjI1LDExLjM4IDkuODgsMTIuNSA4LjUsMTIuNUM3LjEyLDEyLjUgNSwxMS4zOCA1LDEwSDQuMjVDNC4wOSwxMC42NCA0LDExLjMxIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCwxMS4zMSAxOS45MSwxMC42NCAxOS43NSwxMEgxOU0xMiw0QzkuMDQsNCA2LjQ1LDUuNjEgNS4wNyw4SDE4LjkzQzE3LjU1LDUuNjEgMTQuOTYsNCAxMiw0TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0xMiwxNy4yM0MxMC4yNSwxNy4yMyA4LjcxLDE2LjUgNy44MSwxNS40Mkw5LjIzLDE0QzkuNjgsMTQuNzIgMTAuNzUsMTUuMjMgMTIsMTUuMjNDMTMuMjUsMTUuMjMgMTQuMzIsMTQuNzIgMTQuNzcsMTRMMTYuMTksMTUuNDJDMTUuMjksMTYuNSAxMy43NSwxNy4yMyAxMiwxNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkNyeSA9IFwiTTUuMTQsMTcuNTdDNS4xNCwxNi41IDYuMzIsMTQuNSA3LjU3LDEyLjgxQzguODIsMTQuNSAxMCwxNi41IDEwLDE3LjU3QTIuNDMsMi40MyAwIDAsMSA3LjU3LDIwQzYuMjMsMjAgNS4xNCwxOC45MSA1LjE0LDE3LjU3TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzExLjA4LDIyIDEwLjE4LDIxLjg2IDkuMzMsMjEuNjNDMTAuOSwyMC45NSAxMiwxOS4zOSAxMiwxNy41N0MxMiwxNy4xMiAxMS44OSwxNi42IDExLjY5LDE2QzExLjc5LDE2IDExLjg5LDE2IDEyLDE2QzEzLjI1LDE2IDE0LjMyLDE2LjUgMTQuNzcsMTcuMjNMMTYuMTksMTUuODFDMTUuMjksMTQuNzIgMTMuNzUsMTQgMTIsMTRDMTEuNTksMTQgMTEuMTksMTQuMDQgMTAuODEsMTQuMTJDMTAuMzgsMTMuMzYgOS44NSwxMi41MyA5LjE5LDExLjYzTDguNzEsMTFDOS40MiwxMC44NyAxMCwxMC4yMyAxMCw5LjVDMTAsOC43IDkuMyw4IDguNSw4QzcuNyw4IDcsOC43IDcsOS41QzcsOS42OSA3LjA0LDkuODcgNy4xMSwxMC4wNEw1Ljk2LDExLjYzQzQuNCwxMy43NSAzLjUsMTUuNSAzLjIzLDE2LjgxQzIuNDUsMTUuMzggMiwxMy43NCAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTcsOS41QzE3LDguNyAxNi4zLDggMTUuNSw4QzE0LjcsOCAxNCw4LjcgMTQsOS41QzE0LDEwLjMgMTQuNywxMSAxNS41LDExQzE2LjMsMTEgMTcsMTAuMyAxNyw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25DcnlPdXRsaW5lID0gXCJNNy41NywyMEM2LjIzLDIwIDUuMTQsMTguOTEgNS4xNCwxNy41N0M1LjE0LDE2LjUgNi4zMiwxNC41IDcuNTcsMTIuODFDOC44MiwxNC41IDEwLDE2LjUgMTAsMTcuNTdBMi40MywyLjQzIDAgMCwxIDcuNTcsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQzIsMTMuNzUgMi40NSwxNS4zOCAzLjI0LDE2LjgxQzMuNCwxNiAzLjgxLDE1LjA3IDQuMzEsMTQuMTdDNC4xMSwxMy41IDQsMTIuNzUgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQzExLjc2LDIwIDExLjUzLDIwIDExLjI5LDE5Ljk2QzEwLjgyLDIwLjcgMTAuMTQsMjEuMjggOS4zNCwyMS42M0MxMC4xOSwyMS44NyAxMS4wOCwyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDE0QzExLjU5LDE0IDExLjE5LDE0LjA0IDEwLjgxLDE0LjEyQzExLjE2LDE0Ljc1IDExLjQ3LDE1LjQgMTEuNjksMTZDMTEuNzksMTYgMTEuODksMTYgMTIsMTZDMTMuMjUsMTYgMTQuMzIsMTYuNSAxNC43NywxNy4yM0wxNi4xOSwxNS44MUMxNS4yOSwxNC43MiAxMy43NSwxNCAxMiwxNE0xNS41LDhDMTQuNyw4IDE0LDguNyAxNCw5LjVDMTQsMTAuMyAxNC43LDExIDE1LjUsMTFDMTYuMywxMSAxNywxMC4zIDE3LDkuNUMxNyw4LjcgMTYuMyw4IDE1LjUsOE0xMCw5LjVDMTAsOC43IDkuMyw4IDguNSw4QzcuNyw4IDcsOC43IDcsOS41QzcsMTAuMyA3LjcsMTEgOC41LDExQzkuMywxMSAxMCwxMC4zIDEwLDkuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRGVhZCA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTYuNzYsOC44Mkw3LjgyLDcuNzZMOC44OCw4LjgyTDkuOTQsNy43NkwxMSw4LjgyTDkuOTQsOS44OEwxMSwxMC45NEw5Ljk0LDEyTDguODgsMTAuOTRMNy44MiwxMkw2Ljc2LDEwLjk0TDcuODIsOS44OEw2Ljc2LDguODJNNi44OSwxNy41QzcuNjksMTUuNDYgOS42NywxNCAxMiwxNEMxNC4zMywxNCAxNi4zMSwxNS40NiAxNy4xMSwxNy41SDYuODlNMTcuMjQsMTAuOTRMMTYuMTgsMTJMMTUuMTIsMTAuOTRMMTQuMDYsMTJMMTMsMTAuOTRMMTQuMDYsOS44OEwxMyw4LjgyTDE0LjA2LDcuNzZMMTUuMTIsOC44MkwxNi4xOCw3Ljc2TDE3LjI0LDguODJMMTYuMTgsOS44OEwxNy4yNCwxMC45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRlYWRPdXRsaW5lID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjQ3IDIsMTJDMiwxNy41MyA2LjQ3LDIyIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNi4xOCw3Ljc2TDE1LjEyLDguODJMMTQuMDYsNy43NkwxMyw4LjgyTDE0LjA2LDkuODhMMTMsMTAuOTRMMTQuMDYsMTJMMTUuMTIsMTAuOTRMMTYuMTgsMTJMMTcuMjQsMTAuOTRMMTYuMTgsOS44OEwxNy4yNCw4LjgyTDE2LjE4LDcuNzZNNy44MiwxMkw4Ljg4LDEwLjk0TDkuOTQsMTJMMTEsMTAuOTRMOS45NCw5Ljg4TDExLDguODJMOS45NCw3Ljc2TDguODgsOC44Mkw3LjgyLDcuNzZMNi43Niw4LjgyTDcuODIsOS44OEw2Ljc2LDEwLjk0TDcuODIsMTJNMTIsMTRDOS42NywxNCA3LjY5LDE1LjQ2IDYuODksMTcuNUgxNy4xMUMxNi4zMSwxNS40NiAxNC4zMywxNCAxMiwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRldmlsID0gXCJNMjIuNSwyLjA5QzIxLjYsMyAyMC4xMywzLjczIDE4LjMxLDQuMjVDMTYuNTksMi44NCAxNC4zOSwyIDEyLDJDOS42MSwyIDcuNDEsMi44NCA1LjY5LDQuMjVDMy44NywzLjczIDIuNCwzIDEuNSwyLjA5QzEuNTMsMy43MiAyLjM1LDUuMjEgMy43Miw2LjRDMi42Myw4IDIsOS45MiAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDkuOTIgMjEuMzcsOCAyMC4yOCw2LjRDMjEuNjUsNS4yMSAyMi40NywzLjcyIDIyLjUsMi4wOU03LjUsOC41TDEwLjUsMTBDMTAuNSwxMC44IDkuOCwxMS41IDksMTEuNUM4LjIsMTEuNSA3LjUsMTAuOCA3LjUsMTBWOC41TTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzTTE2LjUsMTBDMTYuNSwxMC44IDE1LjgsMTEuNSAxNSwxMS41QzE0LjIsMTEuNSAxMy41LDEwLjggMTMuNSwxMEwxNi41LDguNVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRldmlsT3V0bGluZSA9IFwiTTEuNSwyLjA5QzIuNCwzIDMuODcsMy43MyA1LjY5LDQuMjVDNy40MSwyLjg0IDkuNjEsMiAxMiwyQzE0LjM5LDIgMTYuNTksMi44NCAxOC4zMSw0LjI1QzIwLjEzLDMuNzMgMjEuNiwzIDIyLjUsMi4wOUMyMi40NywzLjcyIDIxLjY1LDUuMjEgMjAuMjgsNi40QzIxLjM3LDggMjIsOS45MiAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQzIsOS45MiAyLjYzLDggMy43Miw2LjRDMi4zNSw1LjIxIDEuNTMsMy43MiAxLjUsMi4wOU0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTEwLjUsMTBDMTAuNSwxMC44IDkuOCwxMS41IDksMTEuNUM4LjIsMTEuNSA3LjUsMTAuOCA3LjUsMTBWOC41TDEwLjUsMTBNMTYuNSwxMEMxNi41LDEwLjggMTUuOCwxMS41IDE1LDExLjVDMTQuMiwxMS41IDEzLjUsMTAuOCAxMy41LDEwTDE2LjUsOC41VjEwTTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRXhjaXRlZCA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTguODgsNy44MkwxMSw5Ljk0TDkuOTQsMTFMOC44OCw5Ljk0TDcuODIsMTFMNi43Niw5Ljk0TDguODgsNy44Mk0xMiwxNy41QzkuNjcsMTcuNSA3LjY5LDE2LjA0IDYuODksMTRIMTcuMTFDMTYuMzEsMTYuMDQgMTQuMzMsMTcuNSAxMiwxNy41TTE2LjE4LDExTDE1LjEyLDkuOTRMMTQuMDYsMTFMMTMsOS45NEwxNS4xMiw3LjgyTDE3LjI0LDkuOTRMMTYuMTgsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25FeGNpdGVkT3V0bGluZSA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTMsOS45NEwxNC4wNiwxMUwxNS4xMiw5Ljk0TDE2LjE4LDExTDE3LjI0LDkuOTRMMTUuMTIsNy44MkwxMyw5Ljk0TTguODgsOS45NEw5Ljk0LDExTDExLDkuOTRMOC44OCw3LjgyTDYuNzYsOS45NEw3LjgyLDExTDguODgsOS45NE0xMiwxNy41QzE0LjMzLDE3LjUgMTYuMzEsMTYuMDQgMTcuMTEsMTRINi44OUM3LjY5LDE2LjA0IDkuNjcsMTcuNSAxMiwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRnJvd24gPSBcIk0xMiAyQzYuNDcgMiAyIDYuNSAyIDEyUzYuNDcgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE1LjUgOEMxNi4zMyA4IDE3IDguNjcgMTcgOS41UzE2LjMzIDExIDE1LjUgMTEgMTQgMTAuMzMgMTQgOS41IDE0LjY3IDggMTUuNSA4TTguNSA4QzkuMzMgOCAxMCA4LjY3IDEwIDkuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOE02Ljg5IDE3QzcuNjkgMTQuOTYgOS42NyAxMy41IDEyIDEzLjVTMTYuMzEgMTQuOTYgMTcuMTEgMTdINi44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkZyb3duT3V0bGluZSA9IFwiTTEyIDJDNi40NyAyIDIgNi41IDIgMTJTNi40NyAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJTNy41OCA0IDEyIDQgMjAgNy41OCAyMCAxMiAxNi40MiAyMCAxMiAyME0xNS41IDExQzE2LjMzIDExIDE3IDEwLjMzIDE3IDkuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNSAxNC42NyAxMSAxNS41IDExTTguNSAxMUM5LjMzIDExIDEwIDEwLjMzIDEwIDkuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExTTEyIDEzLjVDOS42NyAxMy41IDcuNjkgMTQuOTYgNi44OSAxN0gxNy4xMUMxNi4zMSAxNC45NiAxNC4zMyAxMy41IDEyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25IYXBweSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVDMTAsMTAuMyA5LjMsMTEgOC41LDExQzcuNywxMSA3LDEwLjMgNyw5LjVNMTIsMTcuMjNDMTAuMjUsMTcuMjMgOC43MSwxNi41IDcuODEsMTUuNDJMOS4yMywxNEM5LjY4LDE0LjcyIDEwLjc1LDE1LjIzIDEyLDE1LjIzQzEzLjI1LDE1LjIzIDE0LjMyLDE0LjcyIDE0Ljc3LDE0TDE2LjE5LDE1LjQyQzE1LjI5LDE2LjUgMTMuNzUsMTcuMjMgMTIsMTcuMjNNMTUuNSwxMUMxNC43LDExIDE0LDEwLjMgMTQsOS41QzE0LDguNyAxNC43LDggMTUuNSw4QzE2LjMsOCAxNyw4LjcgMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uSGFwcHlPdXRsaW5lID0gXCJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTAsOS41QzEwLDEwLjMgOS4zLDExIDguNSwxMUM3LjcsMTEgNywxMC4zIDcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVNMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhDMTYuMyw4IDE3LDguNyAxNyw5LjVNMTIsMTcuMjNDMTAuMjUsMTcuMjMgOC43MSwxNi41IDcuODEsMTUuNDJMOS4yMywxNEM5LjY4LDE0LjcyIDEwLjc1LDE1LjIzIDEyLDE1LjIzQzEzLjI1LDE1LjIzIDE0LjMyLDE0LjcyIDE0Ljc3LDE0TDE2LjE5LDE1LjQyQzE1LjI5LDE2LjUgMTMuNzUsMTcuMjMgMTIsMTcuMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25LaXNzID0gXCJNMTguOSwxOC45NEwxNS45NCwxNkMxNS43NiwxNS43OSAxNS41NSwxNS41IDE1LjU1LDE1LjA1QTEuMywxLjMgMCAwLDEgMTYuODUsMTMuNzVDMTcuMTksMTMuNzUgMTcuNTMsMTMuODkgMTcuNzcsMTQuMTVMMTguOTEsMTUuMjZMMjAuMDMsMTQuMTNDMjAuMjcsMTMuODkgMjAuNjEsMTMuNzUgMjAuOTUsMTMuNzVBMS4zLDEuMyAwIDAsMSAyMi4yNSwxNS4wNUMyMi4yNSwxNS4zOSAyMi4xMSwxNS43MyAyMS44NywxNS45N0wxOC45LDE4Ljk0TTE3LjQ2LDE5LjYyQzE1LjcyLDIxLjEgMTMuNDcsMjIgMTEsMjJBMTAsMTAgMCAwLDEgMSwxMkExMCwxMCAwIDAsMSAxMSwyQTEwLDEwIDAgMCwxIDIxLDEyQzIxLDEyLjA5IDIxLDEyLjE3IDIwLjk1LDEyLjI1QzIwLjIxLDEyLjI1IDE5LjUsMTIuNTUgMTguOTcsMTMuMDdMMTguOSwxMy4xNEwxOC44NCwxMy4wOUMxOC4zMiwxMi41NSAxNy42LDEyLjI1IDE2Ljg1LDEyLjI1QTIuOCwyLjggMCAwLDAgMTQuMDUsMTUuMDVDMTQuMDUsMTUuNzggMTQuMzQsMTYuNSAxNC44NywxNy4wM0wxNy40NiwxOS42Mk0xMyw5LjVDMTMsMTAuMyAxMy43LDExIDE0LjUsMTFDMTUuMywxMSAxNiwxMC4zIDE2LDkuNUMxNiw4LjcgMTUuMyw4IDE0LjUsOEMxMy43LDggMTMsOC43IDEzLDkuNU05LDkuNUM5LDguNyA4LjMsOCA3LjUsOEM2LjcsOCA2LDguNyA2LDkuNUM2LDEwLjMgNi43LDExIDcuNSwxMUM4LjMsMTEgOSwxMC4zIDksOS41TTEyLjk0LDE1LjE4TDE0LDE0LjEyTDExLjg4LDEyTDEwLjgyLDEzLjA2TDExLjg4LDE0LjEyTDEwLjgyLDE1LjE4TDExLjg4LDE2LjI0TDEwLjgyLDE3LjNMMTEuODgsMTguMzZMMTQsMTYuMjRMMTIuOTQsMTUuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25LaXNzT3V0bGluZSA9IFwiTTksOS41QzksMTAuMyA4LjMsMTEgNy41LDExQzYuNywxMSA2LDEwLjMgNiw5LjVDNiw4LjcgNi43LDggNy41LDhDOC4zLDggOSw4LjcgOSw5LjVNMTYsOS41QzE2LDEwLjMgMTUuMywxMSAxNC41LDExQzEzLjcsMTEgMTMsMTAuMyAxMyw5LjVDMTMsOC43IDEzLjcsOCAxNC41LDhDMTUuMyw4IDE2LDguNyAxNiw5LjVNMTQsMTQuMTJMMTEuODgsMTJMMTAuODIsMTMuMDZMMTEuODgsMTQuMTJMMTAuODIsMTUuMThMMTEuODgsMTYuMjRMMTAuODIsMTcuM0wxMS44OCwxOC4zNkwxNCwxNi4yNEwxMi45NCwxNS4xOEwxNCwxNC4xMk0xNi44NSwxM0EyLjA1LDIuMDUgMCAwLDAgMTQuOCwxNS4wNUMxNC44LDE1LjYyIDE1LjAzLDE2LjEyIDE1LjQsMTYuNUwxOC45LDIwTDIyLjQsMTYuNUMyMi43NywxNi4xMyAyMywxNS42MSAyMywxNS4wNUEyLjA1LDIuMDUgMCAwLDAgMjAuOTUsMTNDMjAuNCwxMyAxOS44NywxMy4yMyAxOS41LDEzLjZMMTguOSwxNC4yTDE4LjMsMTMuNjFDMTcuOTMsMTMuMjMgMTcuNCwxMyAxNi44NSwxM00xNSwxOC45MkMxMy44MiwxOS42IDEyLjQ2LDIwIDExLDIwQTgsOCAwIDAsMSAzLDEyQTgsOCAwIDAsMSAxMSw0QzE1LjI2LDQgMTguNzMsNy4zMyAxOSwxMS41QzE5LjU4LDExLjE5IDIwLjI2LDExIDIwLjk1LDExQzIwLjQ1LDUuOTUgMTYuMTgsMiAxMSwyQTEwLDEwIDAgMCwwIDEsMTJBMTAsMTAgMCAwLDAgMTEsMjJDMTMsMjIgMTQuODgsMjEuNCAxNi40NSwyMC4zOEwxNSwxOC45MlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkxvbCA9IFwiTTE1LjA3IDguOTNWNC45M0E0LjA2IDQuMDYgMCAwIDEgMTUuNzMgMi43MkExMCAxMCAwIDAgMCAyLjczIDE1LjcyQTQuMDYgNC4wNiAwIDAgMSA0Ljk0IDE1LjA2SDguOTRWMTkuMDZBNC4wNiA0LjA2IDAgMCAxIDguMjggMjEuMjdBMTAgMTAgMCAwIDAgMjEuMjggOC4yN0E0LjA2IDQuMDYgMCAwIDEgMTkuMDcgOC45M00xMSA2SDEyLjVWNy41SDE0VjlIMTFNNy41IDE0VjEyLjVINlYxMUg5VjE0TTE1Ljg5IDE1LjlBNS41IDUuNSAwIDAgMSA5LjggMTdMMTcgOS44QTUuNSA1LjUgMCAwIDEgMTUuODkgMTUuODlNNC44OSAyMS4wOEEyIDIgMCAwIDEgMi44OSAxOS4wOEEyIDIgMCAwIDEgNC44OSAxNy4wOEg2Ljg5VjE5LjA4QTIgMiAwIDAgMSA0LjkzIDIxLjA3TTE5LjA3IDIuOTNBMiAyIDAgMCAxIDIxLjA3IDQuOTNBMiAyIDAgMCAxIDE5LjA3IDYuOTNIMTcuMDdWNC45M0EyIDIgMCAwIDEgMTkuMDcgMi45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkxvbE91dGxpbmUgPSBcIk02IDExVjEyLjVINy41VjE0SDlWMTFNMTIuNSA2SDExVjlIMTRWNy41SDEyLjVNOS44IDE3QTUuNSA1LjUgMCAwIDAgMTcgOS44TTYuMzQgNi4zNEE4IDggMCAwIDEgMTUuMDggNC42MkE0LjExIDQuMTEgMCAwIDEgMTUuNzMgMi43MkExMCAxMCAwIDAgMCAyLjczIDE1LjcyQTQuMTEgNC4xMSAwIDAgMSA0LjYzIDE1LjA3QTggOCAwIDAgMSA2LjM0IDYuMzRNMTcuNjYgMTcuNjZBOCA4IDAgMCAxIDguOTIgMTkuMzhBNC4xMSA0LjExIDAgMCAxIDguMjcgMjEuMjhBMTAgMTAgMCAwIDAgMjEuMjcgOC4yOEE0LjExIDQuMTEgMCAwIDEgMTkuMzcgOC45M0E4IDggMCAwIDEgMTcuNjYgMTcuNjZNNiAxMVYxMi41SDcuNVYxNEg5VjExTTkuOCAxN0E1LjUgNS41IDAgMCAwIDE3IDkuOE0xMi41IDZIMTFWOUgxNFY3LjVIMTIuNU02IDExVjEyLjVINy41VjE0SDlWMTFNMTIuNSA2SDExVjlIMTRWNy41SDEyLjVNOS44IDE3QTUuNSA1LjUgMCAwIDAgMTcgOS44TTQuOTMgMjFBMiAyIDAgMCAxIDIuOTMgMTlBMiAyIDAgMCAxIDQuOTMgMTdINi45M1YxOUEyIDIgMCAwIDEgNC45MyAyMS4wN00xOS4wNyAyLjkzQTIgMiAwIDAgMSAyMS4wNyA0LjkzQTIgMiAwIDAgMSAxOS4wNyA2LjkzSDE3LjA3VjQuOTNBMiAyIDAgMCAxIDE5LjA3IDIuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25OZXV0cmFsID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVBMS41LDEuNSAwIDAsMSA4LjUsOEExLjUsMS41IDAgMCwxIDEwLDkuNUExLjUsMS41IDAgMCwxIDguNSwxMUExLjUsMS41IDAgMCwxIDcsOS41TTE2LDE2SDhWMTRIMTZWMTZNMTUuNSwxMUExLjUsMS41IDAgMCwxIDE0LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsOEExLjUsMS41IDAgMCwxIDE3LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25OZXV0cmFsT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNOC41LDExQTEuNSwxLjUgMCAwLDEgNyw5LjVBMS41LDEuNSAwIDAsMSA4LjUsOEExLjUsMS41IDAgMCwxIDEwLDkuNUExLjUsMS41IDAgMCwxIDguNSwxMU0xNyw5LjVBMS41LDEuNSAwIDAsMSAxNS41LDExQTEuNSwxLjUgMCAwLDEgMTQsOS41QTEuNSwxLjUgMCAwLDEgMTUuNSw4QTEuNSwxLjUgMCAwLDEgMTcsOS41TTE2LDE0VjE2SDhWMTRIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25PdXRsaW5lID0gXCJNMTIsMTcuNUMxNC4zMywxNy41IDE2LjMsMTYuMDQgMTcuMTEsMTRINi44OUM3LjY5LDE2LjA0IDkuNjcsMTcuNSAxMiwxNy41TTguNSwxMUExLjUsMS41IDAgMCwwIDEwLDkuNUExLjUsMS41IDAgMCwwIDguNSw4QTEuNSwxLjUgMCAwLDAgNyw5LjVBMS41LDEuNSAwIDAsMCA4LjUsMTFNMTUuNSwxMUExLjUsMS41IDAgMCwwIDE3LDkuNUExLjUsMS41IDAgMCwwIDE1LjUsOEExLjUsMS41IDAgMCwwIDE0LDkuNUExLjUsMS41IDAgMCwwIDE1LjUsMTFNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25Qb29wID0gXCJNMTEuMzYsMkMxMS4xNSwyIDEwLjg3LDIuMTIgMTAuNTcsMi4zMkMxMCwyLjcgOC44NSwzLjkgOC40LDUuMUM4LjA2LDYgOC4wNSw2LjgyIDguMTksNy40M0M3LjYzLDcuNTMgNy4yMiw3LjcxIDcuMDYsNy43OEM2LjU1LDggNS40Nyw4Ljk2IDUuMzcsMTAuNDVDNS4zNCwxMC45NyA1LjQxLDExLjUgNS41NywxMkM0LjkxLDEyLjE5IDQuNTMsMTIuNDMgNC41LDEyLjQ0QzQuMTgsMTIuNTYgMy42NSwxMi45MyAzLjUsMTMuMTNDMy4xNSwxMy41MyAyLjkyLDE0IDIuNzksMTQuNUMyLjUsMTUuNTkgMi42LDE2LjgzIDMuMTMsMTcuODNDMy40MiwxOC4zOSAzLjgyLDE5IDQuMjYsMTkuNDNDNS43LDIwLjkxIDguMTgsMjEuNDcgMTAuMTQsMjEuNzlDMTIuNTMsMjIuMTkgMTUuMDMsMjIuMDUgMTcuMjYsMjEuMTNDMjAuNjEsMTkuNzQgMjEuNSwxNy41IDIxLjY0LDE2Ljg5QzIxLjkzLDE1LjUgMjEuNTcsMTQuMTkgMjEuNDIsMTMuODdDMjEuMiwxMy40MSAyMC44NCwxMi45NCAyMC4yNSwxMi42NEMxOS44NSwxMi4zOSAxOS41LDEyLjI2IDE5LjI0LDEyLjJDMTkuNSwxMS4yNSAxOS4xMywxMC41IDE4LjYyLDkuOTRDMTcuODUsOS4xMiAxNy4wNiw5IDE3LjA2LDlWOUMxNy4zMiw4LjUgMTcuNDIsNy45IDE3LjI4LDcuMzJDMTcuMTIsNi42MSAxNi43Myw2LjE2IDE2LjIyLDUuODZDMTUuNyw1LjU1IDE1LjA2LDUuNCAxNC40LDUuMjhDMTQuMDgsNS4yMiAxMi43NSw1LjAzIDEyLjIsNC4yN0MxMS43NSwzLjY1IDExLjc0LDIuNTMgMTEuNjIsMi4yQzExLjU3LDIuMDcgMTEuNSwyIDExLjM2LDJNMTYsOS42MUMxNi4wNyw5LjYxIDE2LjEzLDkuNjIgMTYuMTksOS42MkMxNy42Miw5Ljc4IDE4LjY0LDExLjE2IDE4LjQ3LDEyLjY5QzE4LjMsMTQuMjIgMTcsMTUuMzQgMTUuNTcsMTUuMThWMTUuMThDMTQuMTQsMTUgMTMuMTIsMTMuNjUgMTMuMjksMTIuMTFDMTMuNDUsMTAuNjYgMTQuNjQsOS41NiAxNiw5LjYxTTguNjIsOS42MUM5Ljk1LDkuNjUgMTEuMDYsMTAuNzggMTEuMTYsMTIuMjFDMTEuMjgsMTMuNzUgMTAuMjEsMTUuMDggOC43OCwxNS4xOUg4Ljc3QzcuMzQsMTUuMyA2LjA4LDE0LjE0IDUuOTYsMTIuNlYxMi42QzUuODUsMTEuMDYgNi45Miw5LjczIDguMzUsOS42MlY5LjYyQzguNDQsOS42MSA4LjUzLDkuNjEgOC42Miw5LjYxTTguNjQsMTEuMzFDOC42LDExLjMxIDguNTcsMTEuMzEgOC41MywxMS4zMkM3Ljk3LDExLjM5IDcuNTcsMTEuOSA3LjY0LDEyLjQ1QzcuNywxMyA4LjIxLDEzLjM5IDguNzcsMTMuMzJDOS4zMywxMy4yNSA5LjczLDEyLjc0IDkuNjcsMTIuMTlDOS42MSwxMS42NyA5LjE1LDExLjMgOC42NCwxMS4zMU0xNS45NCwxMS4zM0MxNS40MiwxMS4zNSAxNSwxMS43NSAxNC45NiwxMi4yOEMxNC45MiwxMi44MyAxNS4zNSwxMy4zMSAxNS45MSwxMy4zNEMxNi41LDEzLjM4IDE2Ljk2LDEyLjk1IDE3LDEyLjRDMTcuMDQsMTEuODQgMTYuNjEsMTEuMzYgMTYuMDUsMTEuMzNDMTYsMTEuMzMgMTYsMTEuMzMgMTUuOTQsMTEuMzNNOC43MSwxNi4xNUM5LDE2LjE0IDkuMjYsMTYuMjMgOS41LDE2LjI4QzEwLjY4LDE2LjUgMTEuNywxNi41MyAxMi4xOSwxNi41M0MxMi42OCwxNi41MyAxMy42OSwxNi41IDE0Ljg2LDE2LjI4QzE1LjI3LDE2LjIgMTUuNzQsMTYuMDMgMTYuMTEsMTYuMjhDMTYuNTksMTYuNiAxNi4yNCwxNy43NSAxNS41LDE4LjUzQzE1LjA0LDE5IDEzLjk3LDE5LjkxIDEyLjE5LDE5LjkxQzEwLjQxLDE5LjkxIDkuMzMsMTkgOC44OCwxOC41M0M4LjE0LDE3Ljc1IDcuNzksMTYuNiA4LjI2LDE2LjI4QzguNCwxNi4xOSA4LjU1LDE2LjE1IDguNzEsMTYuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25Qb29wT3V0bGluZSA9IFwiTTIxLjQyLDEzLjg3QzIxLjIsMTMuNDEgMjAuODQsMTIuOTQgMjAuMjUsMTIuNjRDMTkuODUsMTIuMzkgMTkuNSwxMi4yNiAxOS4yNCwxMi4yQzE5LjUsMTEuMjUgMTkuMTMsMTAuNSAxOC42Miw5Ljk0QzE3Ljg1LDkuMTIgMTcuMDYsOSAxNy4wNiw5QzE3LjMyLDguNSAxNy40Miw3LjkgMTcuMjgsNy4zMkMxNy4xMiw2LjYxIDE2LjczLDYuMTYgMTYuMjIsNS44NkMxNS43LDUuNTUgMTUuMDYsNS40IDE0LjQsNS4yOEMxNC4wOCw1LjIyIDEyLjc1LDUuMDMgMTIuMiw0LjI3QzExLjc1LDMuNjUgMTEuNzQsMi41MyAxMS42MiwyLjJDMTEuNTcsMi4wNyAxMS41LDIgMTEuMzYsMkMxMS4xNSwyIDEwLjg3LDIuMTIgMTAuNTcsMi4zMkMxMCwyLjcgOC44NSwzLjkgOC40LDUuMUM4LjA2LDYgOC4wNSw2LjgyIDguMTksNy40M0M3LjYzLDcuNTMgNy4yMiw3LjcxIDcuMDYsNy43OEM2LjU1LDggNS40Nyw4Ljk2IDUuMzcsMTAuNDVDNS4zNCwxMC44OSA1LjQxLDExLjM0IDUuNSwxMS43OEM1LjUsMTEuODYgNS41LDExLjk0IDUuNSwxMi4wM0M0Ljg4LDEyLjIyIDQuNTMsMTIuNDMgNC41LDEyLjQ0QzQuMTgsMTIuNTYgMy42NSwxMi45MyAzLjUsMTMuMTNDMy4xNSwxMy41MyAyLjkyLDE0IDIuNzksMTQuNUMyLjUsMTUuNTkgMi42LDE2LjgzIDMuMTMsMTcuODNDMy40MiwxOC4zOSAzLjgyLDE5IDQuMjYsMTkuNDNDNS43LDIwLjkxIDguMTgsMjEuNDcgMTAuMTQsMjEuNzlDMTAuOTYsMjEuOTMgMTEuOCwyMiAxMi42MywyMkMxNC4yMiwyMiAxNS44LDIxLjczIDE3LjI2LDIxLjEzQzIwLjYxLDE5Ljc0IDIxLjUsMTcuNSAyMS42NCwxNi44OUMyMS45MywxNS41IDIxLjU3LDE0LjE5IDIxLjQyLDEzLjg3TTE2LjA1LDExLjMzQzE2LjYxLDExLjM2IDE3LjA0LDExLjg0IDE3LDEyLjRDMTYuOTYsMTIuOTUgMTYuNSwxMy4zOCAxNS45MSwxMy4zNEMxNS4zNSwxMy4zMSAxNC45MiwxMi44MyAxNC45NiwxMi4yOEMxNSwxMS43NSAxNS40MiwxMS4zNSAxNS45NCwxMS4zM0MxNiwxMS4zMyAxNiwxMS4zMyAxNi4wNSwxMS4zM00yMC4xOCwxNi41NUMyMC4xNywxNi41NyAxOS43LDE4LjUgMTYuNjksMTkuNzRDMTUuNDcsMjAuMjUgMTQuMSwyMC41IDEyLjYzLDIwLjVDMTEuOSwyMC41IDExLjE0LDIwLjQ0IDEwLjM4LDIwLjMxQzguNzYsMjAuMDUgNi41LDE5LjU2IDUuMzEsMTguMzZDNS4wNCwxOC4wOSA0LjcyLDE3LjYzIDQuNDYsMTcuMTNDNC4xMiwxNi41IDQuMDQsMTUuNjUgNC4yNCwxNC44OEM0LjMyLDE0LjU4IDQuNDUsMTQuMzIgNC42MywxNC4xMkw0LjY1LDE0LjA5QzQuNzQsMTQgNC45NSwxMy44OCA1LjAzLDEzLjg0VjEzLjg0TDUuMTQsMTMuOEw1LjI2LDEzLjc0QzUuMzIsMTMuNyA1LjQ2LDEzLjYzIDUuNjcsMTMuNTVDNi4xMywxNC44MSA3LjI4LDE1LjcgOC41OSwxNS43QzguNjcsMTUuNyA4Ljc0LDE1LjY5IDguODIsMTUuNjlDOS42NSwxNS42MyAxMC40MSwxNS4yMiAxMC45NCwxNC41NUMxMS40NywxMy44OSAxMS43MywxMy4wNCAxMS42NiwxMi4xN0MxMS41NCwxMC41IDEwLjIyLDkuMTYgOC42NCw5LjExSDguNjJDOC41LDkuMTEgOC40LDkuMTEgOC4zMSw5LjEyQzgsOS4xNSA3LjczLDkuMjMgNy40Niw5LjM0QzcuNTUsOS4yNCA3LjYzLDkuMTcgNy42Niw5LjE1QzcuNzksOS4xIDguMDcsOSA4LjQ1LDguOTFMMTAsOC42M0w5LjY1LDcuMDlDOS42MSw2LjkgOS41Myw2LjM1IDkuODEsNS42M0M5Ljk2LDUuMiAxMC4yNyw0Ljc2IDEwLjU4LDQuMzhDMTAuNjgsNC42NSAxMC44MSw0LjkxIDExLDUuMTVDMTEuNzcsNi4yMyAxMy4xMiw2LjU4IDE0LjA2LDYuNzRMMTQuMTMsNi43NkMxNC42LDYuODQgMTUuMTMsNi45NSAxNS40Niw3LjE1QzE1LjY3LDcuMjggMTUuNzYsNy40MSAxNS44Miw3LjY3QzE1Ljg3LDcuODcgMTUuODQsOC4xIDE1LjczLDguMzFMMTUuMjEsOS4yQzEzLjk1LDkuNSAxMi45NSwxMC42NCAxMi43OSwxMi4wNkMxMi41OSwxMy44NyAxMy43OCwxNS40NiAxNS41LDE1LjY4QzE1LjYyLDE1LjY5IDE1Ljc0LDE1LjcgMTUuODUsMTUuN0MxNi41NiwxNS43IDE3LjI1LDE1LjQ0IDE3LjgyLDE0Ljk1QzE4LjIzLDE0LjU5IDE4LjU0LDE0LjEzIDE4Ljc0LDEzLjYyTDE4LjksMTMuNjZDMTksMTMuNjggMTkuMTcsMTMuNzQgMTkuNDUsMTMuOTFMMTkuNSwxMy45NUwxOS41NywxNEMxOS43OCwxNC4wOCAxOS45NCwxNC4yNiAyMC4wNSwxNC41QzIwLjEzLDE0LjY3IDIwLjM4LDE1LjYgMjAuMTgsMTYuNTVNNy42NCwxMi40NUM3LjU3LDExLjkgNy45NywxMS4zOSA4LjUzLDExLjMyQzguNTcsMTEuMzEgOC42LDExLjMxIDguNjQsMTEuMzFDOS4xNSwxMS4zIDkuNjEsMTEuNjcgOS42NywxMi4xOUM5LjczLDEyLjc0IDkuMzMsMTMuMjUgOC43NywxMy4zMkM4LjIxLDEzLjM5IDcuNywxMyA3LjY0LDEyLjQ1TTguNzEsMTYuMTVDOSwxNi4xNCA5LjI2LDE2LjIzIDkuNSwxNi4yOEMxMC42OCwxNi41IDExLjcsMTYuNTMgMTIuMTksMTYuNTNDMTIuNjgsMTYuNTMgMTMuNjksMTYuNSAxNC44NiwxNi4yOEMxNS4yNywxNi4yIDE1Ljc0LDE2LjAzIDE2LjExLDE2LjI4QzE2LjU5LDE2LjYgMTYuMjQsMTcuNzUgMTUuNSwxOC41M0MxNS4wNCwxOSAxMy45NywxOS45MSAxMi4xOSwxOS45MUMxMC40MSwxOS45MSA5LjMzLDE5IDguODgsMTguNTNDOC4xNCwxNy43NSA3Ljc5LDE2LjYgOC4yNiwxNi4yOEM4LjQsMTYuMTkgOC41NSwxNi4xNSA4LjcxLDE2LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uU2FkID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVDNyw4LjcgNy43LDggOC41LDhDOS4zLDggMTAsOC43IDEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNU0xNC43NywxNy4yM0MxNC4zMiwxNi41IDEzLjI1LDE2IDEyLDE2QzEwLjc1LDE2IDkuNjgsMTYuNSA5LjIzLDE3LjIzTDcuODEsMTUuODFDOC43MSwxNC43MiAxMC4yNSwxNCAxMiwxNEMxMy43NSwxNCAxNS4yOSwxNC43MiAxNi4xOSwxNS44MUwxNC43NywxNy4yM00xNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhDMTYuMyw4IDE3LDguNyAxNyw5LjVDMTcsMTAuMyAxNi4zLDExIDE1LjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25TYWRPdXRsaW5lID0gXCJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTUuNSw4QzE2LjMsOCAxNyw4LjcgMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhNMTAsOS41QzEwLDEwLjMgOS4zLDExIDguNSwxMUM3LjcsMTEgNywxMC4zIDcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVNMTIsMTRDMTMuNzUsMTQgMTUuMjksMTQuNzIgMTYuMTksMTUuODFMMTQuNzcsMTcuMjNDMTQuMzIsMTYuNSAxMy4yNSwxNiAxMiwxNkMxMC43NSwxNiA5LjY4LDE2LjUgOS4yMywxNy4yM0w3LjgxLDE1LjgxQzguNzEsMTQuNzIgMTAuMjUsMTQgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25TaWNrID0gXCJNMjEgOUMxOS45IDkgMTkgOC4xIDE5IDdTMjEgMyAyMSAzIDIzIDUuOSAyMyA3IDIyLjEgOSAyMSA5TTE3LjUgN0MxNy41IDYuMjcgMTcuOTEgNS4yOSAxOC40MiA0LjM0QzE2LjY4IDIuODggMTQuNDQgMiAxMiAyQzYuNDcgMiAyIDYuNSAyIDEyUzYuNDcgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDExLjQ1IDIxLjk0IDEwLjkxIDIxLjg2IDEwLjM4QzIxLjU4IDEwLjQ1IDIxLjMgMTAuNSAyMSAxMC41QzE5LjA3IDEwLjUgMTcuNSA4LjkzIDE3LjUgN00xNS42MiA3LjM4TDE2LjY4IDguNDRMMTUuNjIgOS41TDE2LjY4IDEwLjU2TDE1LjYyIDExLjYyTDEzLjUgOS41TDE1LjYyIDcuMzhNNy4zMiA4LjQ0TDguMzggNy4zOEwxMC41IDkuNUw4LjM4IDExLjYyTDcuMzIgMTAuNTZMOC4zOCA5LjVMNy4zMiA4LjQ0TTE1LjQ0IDE3QzE0Ljc1IDE1LjgxIDEzLjQ3IDE1IDEyIDE1UzkuMjUgMTUuODEgOC41NiAxN0g2Ljg4QzcuMTggMTYuMjQgNy42NCAxNS41NyA4LjIyIDE1TDUuMjQgMTMuM0M0Ljc5IDEzLjU2IDQuMjMgMTMuNTggMy43NSAxMy4zQzMuMDMgMTIuODkgMi43OSAxMS45NyAzLjIgMTEuMjVTNC41MyAxMC4yOSA1LjI1IDEwLjdDNS43MyAxMSA2IDExLjUgNiAxMkw5LjU3IDE0LjA2QzEwLjMgMTMuNyAxMS4xMiAxMy41IDEyIDEzLjVDMTQuMzMgMTMuNSAxNi4zMiAxNC45NSAxNy4xMiAxN0gxNS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvblNpY2tPdXRsaW5lID0gXCJNNy4zMiAxMC41Nkw4LjM4IDkuNUw3LjMyIDguNDRMOC4zOCA3LjM4TDEwLjUgOS41TDguMzggMTEuNjJMNy4zMiAxMC41Nk00LjUgOUM0LjUzIDkgNC41NSA5IDQuNTggOUM1Ljc3IDYuMDcgOC42NCA0IDEyIDRDMTQuMTkgNCAxNi4xNiA0Ljg4IDE3LjYxIDYuM0MxNy43NiA1LjcgMTguMDYgNSAxOC40MiA0LjM0QzE2LjY4IDIuODggMTQuNDQgMiAxMiAyQzcuMTEgMiAzLjA1IDUuNSAyLjE4IDEwLjE0QzIuNzQgOS40NCAzLjU5IDkgNC41IDlNMjEgMTAuNUMyMC41OCAxMC41IDIwLjE4IDEwLjQxIDE5LjgxIDEwLjI4QzE5LjkzIDEwLjgzIDIwIDExLjQxIDIwIDEyQzIwIDE2LjQyIDE2LjQyIDIwIDEyIDIwQzguNjQgMjAgNS43NyAxNy45MyA0LjU4IDE1QzQuNTUgMTUgNC41MyAxNSA0LjUgMTVDNCAxNSAzLjQ2IDE0Ljg2IDMgMTQuNkMyLjY4IDE0LjQyIDIuNDEgMTQuMTggMi4xOCAxMy45QzMuMDcgMTguNSA3LjExIDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMkMyMiAxMS40NSAyMS45NCAxMC45MSAyMS44NiAxMC4zOEMyMS41OCAxMC40NSAyMS4zIDEwLjUgMjEgMTAuNU0yMSAzQzIxIDMgMTkgNS45IDE5IDdTMTkuOSA5IDIxIDkgMjMgOC4xIDIzIDcgMjEgMyAyMSAzTTE1LjYyIDcuMzhMMTMuNSA5LjVMMTUuNjIgMTEuNjJMMTYuNjggMTAuNTZMMTUuNjIgOS41TDE2LjY4IDguNDRMMTUuNjIgNy4zOE04LjU2IDE3QzkuMjUgMTUuODEgMTAuNTMgMTUgMTIgMTVTMTQuNzUgMTUuODEgMTUuNDQgMTdIMTcuMTJDMTYuMzIgMTQuOTUgMTQuMzMgMTMuNSAxMiAxMy41QzExLjEzIDEzLjUgMTAuMyAxMy43IDkuNTcgMTQuMDdMNiAxMkM2IDExLjUgNS43MyAxMSA1LjI1IDEwLjcxQzQuNTMgMTAuMyAzLjYyIDEwLjU0IDMuMiAxMS4yNkMyLjc5IDEyIDMuMDMgMTIuODkgMy43NSAxMy4zMUM0LjIzIDEzLjU5IDQuOCAxMy41NiA1LjI0IDEzLjMxTDguMjEgMTUuMDNDNy42NCAxNS41NiA3LjE4IDE2LjI0IDYuODggMTdIOC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvblRvbmd1ZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTcuMjcsMTFDNy4xLDEwLjcxIDcsMTAuMzYgNywxMEM3LDguODkgNy44OSw4IDksOEEyLDIgMCAwLDEgMTEsMTBDMTEsMTAuMzYgMTAuOSwxMC43MSAxMC43MywxMUMxMC4zOSwxMC40IDkuNzQsMTAgOSwxMEM4LjI2LDEwIDcuNjEsMTAuNCA3LjI3LDExTTE2LDE1SDE1QzE1LDE3IDE0LjEsMTggMTMsMThDMTEuOSwxOCAxMSwxNyAxMSwxNUg4VjEzSDE2VjE1TTE2LjczLDExQzE2LjM5LDEwLjQgMTUuNzQsMTAgMTUsMTBDMTQuMjYsMTAgMTMuNjEsMTAuNCAxMy4yNywxMUMxMy4xLDEwLjcxIDEzLDEwLjM2IDEzLDEwQzEzLDguODkgMTMuODksOCAxNSw4QTIsMiAwIDAsMSAxNywxMEMxNywxMC4zNiAxNi45LDEwLjcxIDE2LjczLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uVG9uZ3VlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNOSwxMEM4LjI2LDEwIDcuNjEsMTAuNCA3LjI3LDExQzcuMSwxMC43MSA3LDEwLjM2IDcsMTBBMiwyIDAgMCwxIDksOEMxMC4xMSw4IDExLDguOSAxMSwxMEMxMSwxMC4zNiAxMC45LDEwLjcxIDEwLjczLDExQzEwLjM5LDEwLjQgOS43NCwxMCA5LDEwTTE3LDEwQzE3LDEwLjM2IDE2LjksMTAuNzEgMTYuNzMsMTFDMTYuMzksMTAuNCAxNS43NCwxMCAxNSwxMEMxNC4yNiwxMCAxMy42MSwxMC40IDEzLjI3LDExQzEzLjEsMTAuNzEgMTMsMTAuMzYgMTMsMTBBMiwyIDAgMCwxIDE1LDhDMTYuMTEsOCAxNyw4LjkgMTcsMTBNMTYsMTNWMTVIMTVDMTUsMTcgMTQuMSwxOCAxMywxOEMxMS45LDE4IDExLDE3IDExLDE1SDhWMTNIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25XaW5rID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVDNyw4LjcgNy43LDggOC41LDhDOS4zLDggMTAsOC43IDEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNU0xMiwxNy4yM0MxMC4yNSwxNy4yMyA4LjcxLDE2LjUgNy44MSwxNS40Mkw5LjIzLDE0QzkuNjgsMTQuNzIgMTAuNzUsMTUuMjMgMTIsMTUuMjNDMTMuMjUsMTUuMjMgMTQuMzIsMTQuNzIgMTQuNzcsMTRMMTYuMTksMTUuNDJDMTUuMjksMTYuNSAxMy43NSwxNy4yMyAxMiwxNy4yM00xNywxMEgxM1Y5SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uV2lua091dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNUM3LDguNyA3LjcsOCA4LjUsOEM5LjMsOCAxMCw4LjcgMTAsOS41TTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzTTE3LDEwSDEzVjlIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW5naW5lID0gXCJNNyw0VjZIMTBWOEg3TDUsMTBWMTNIM1YxMEgxVjE4SDNWMTVINVYxOEg4TDEwLDIwSDE4VjE2SDIwVjE5SDIzVjlIMjBWMTJIMThWOEgxMlY2SDE1VjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbmdpbmVPZmYgPSBcIk0zLjc4LDIuNUwyMS41LDIwLjIyTDIwLjIzLDIxLjVMMTgsMTkuMjdWMjBIMTBMOCwxOEg1VjE1SDNWMThIMVYxMEgzVjEzSDVWMTBMNi44Nyw4LjE0TDIuNSwzLjc3TDMuNzgsMi41TTIwLDlWMTJIMThWOEgxMlY2SDE1VjRINy44MkwyMi44MiwxOUgyM1Y5SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVuZ2luZU9mZk91dGxpbmUgPSBcIk0yLjUsMy43N0w2Ljg3LDguMTRMNSwxMFYxM0gzVjEwSDFWMThIM1YxNUg1VjE4SDhMMTAsMjBIMThWMTkuMjdMMjEuMjMsMjIuNUwyMi41LDIxLjIyTDMuNzgsMi41TDIuNSwzLjc3TTE2LDE4SDExTDksMTZIN1YxMUw4LDEwSDguNzNMMTYsMTcuMjdWMThNMjMsOVYxOUgyMi44MkwxNiwxMi4xOFYxMEgxMy44Mkw3LjgyLDRIMTVWNkgxMlY4SDE4VjEySDIwVjlIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW5naW5lT3V0bGluZSA9IFwiTTgsMTBIMTZWMThIMTFMOSwxNkg3VjExTTcsNFY2SDEwVjhIN0w1LDEwVjEzSDNWMTBIMVYxOEgzVjE1SDVWMThIOEwxMCwyMEgxOFYxNkgyMFYxOUgyM1Y5SDIwVjEySDE4VjhIMTJWNkgxNVY0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXBzaWxvbiA9IFwiTTE1LjA1IDcuNzhMMTYuMTUgNi4xOEMxNi4xNSA2LjE4IDE0LjkxIDUgMTIuNzcgNUMxMC4wNCA1IDguMzUgNi44NCA4LjM1IDguNzZDOC4zNSAxMC42OCAxMC4wOCAxMS42OSAxMC4wOCAxMS42OUMxMC4wOCAxMS42OSA4IDEyLjM4IDggMTVDOCAxNy42MyAxMC4xNCAxOSAxMi40NCAxOUMxNS4zOCAxOSAxNyAxNy4wNCAxNyAxNy4wNEwxNS42IDE1LjVDMTUuNiAxNS41IDE0LjE0IDE2Ljg3IDEyLjU5IDE2Ljg3QzEwLjY2IDE2Ljg3IDEwLjIxIDE1LjY5IDEwLjIxIDE0LjkyQzEwLjIxIDEzLjg3IDEwLjU0IDEyLjY1IDEzLjgzIDEyLjY1TDEzLjgyIDEwLjc3QzEzLjgyIDEwLjc3IDEwLjQ0IDExLjExIDEwLjQ0IDguNzhDMTAuNDQgNy4yMSAxMS45IDYuOTIgMTIuNjQgNi45MkMxNC4yOCA2LjkyIDE1LjA1IDcuNzggMTUuMDUgNy43OFwiO1xyXG5leHBvcnQgdmFyIG1kaUVxdWFsID0gXCJNMTksMTBINVY4SDE5VjEwTTE5LDE2SDVWMTRIMTlWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXF1YWxCb3ggPSBcIk0xNywxNlYxNEg3VjE2SDE3TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5TTE3LDEwVjhIN1YxMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFcXVhbGl6ZXIgPSBcIk0xMCwyMEgxNFY0SDEwVjIwTTQsMjBIOFYxMkg0VjIwTTE2LDlWMjBIMjBWOUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFcXVhbGl6ZXJPdXRsaW5lID0gXCJNMTUsMjFIOVYzSDE1VjIxTTExLDE5SDEzVjVIMTFWMTlNOCwyMUgyVjExSDhWMjFNNCwxOUg2VjEzSDRWMTlNMjIsMjFIMTZWOEgyMlYyMU0xOCwxOUgyMFYxMEgxOFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFcmFzZXIgPSBcIk0xNi4yNCwzLjU2TDIxLjE5LDguNUMyMS45Nyw5LjI5IDIxLjk3LDEwLjU1IDIxLjE5LDExLjM0TDEyLDIwLjUzQzEwLjQ0LDIyLjA5IDcuOTEsMjIuMDkgNi4zNCwyMC41M0wyLjgxLDE3QzIuMDMsMTYuMjEgMi4wMywxNC45NSAyLjgxLDE0LjE2TDEzLjQxLDMuNTZDMTQuMiwyLjc4IDE1LjQ2LDIuNzggMTYuMjQsMy41Nk00LjIyLDE1LjU4TDcuNzYsMTkuMTFDOC41NCwxOS45IDkuOCwxOS45IDEwLjU5LDE5LjExTDE0LjEyLDE1LjU4TDkuMTcsMTAuNjNMNC4yMiwxNS41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlFcmFzZXJWYXJpYW50ID0gXCJNMTUuMTQsM0MxNC42MywzIDE0LjEyLDMuMiAxMy43MywzLjU5TDIuNTksMTQuNzNDMS44MSwxNS41IDEuODEsMTYuNzcgMi41OSwxNy41Nkw1LjAzLDIwSDEyLjY5TDIxLjQxLDExLjI3QzIyLjIsMTAuNSAyMi4yLDkuMjMgMjEuNDEsOC40NEwxNi41NiwzLjU5QzE2LjE3LDMuMiAxNS42NSwzIDE1LjE0LDNNMTcsMThMMTUsMjBIMjJWMThcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3IgPSBcIk0yMCw4SDE4Ljk1TDYuOTUsMjBINEEyLDIgMCAwLDEgMiwxOEEyLDIgMCAwLDEgNCwxNkg1LjI5TDcsMTQuMjlWMTBBMSwxIDAgMCwxIDgsOUg5QTEsMSAwIDAsMSAxMCwxMFYxMS4yOUwxNy4yOSw0SDIwQTIsMiAwIDAsMSAyMiw2QTIsMiAwIDAsMSAyMCw4TTguNSw1QTEuNSwxLjUgMCAwLDEgMTAsNi41QTEuNSwxLjUgMCAwLDEgOC41LDhBMS41LDEuNSAwIDAsMSA3LDYuNUExLjUsMS41IDAgMCwxIDguNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVzY2FsYXRvckJveCA9IFwiTTUgM0MzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuODkgMjAuMTEgMyAxOSAzSDVNMTQuMzQgNkgxNy4wNUMxOC4xNiA2IDE5LjA1IDYuOSAxOS4wNSA4QzE5LjA1IDkuMTEgMTguMTYgMTAgMTcuMDUgMTBIMTZMMTAgMThINy4wNUM1Ljk1IDE4IDUuMDUgMTcuMTEgNS4wNSAxNkM1LjA1IDE0LjkgNS45NSAxNCA3LjA1IDE0SDguMzRMMTQuMzQgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3JEb3duID0gXCJNMjAgOEgxOC45NUw2Ljk1IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOEMyIDE2LjkgMi45IDE2IDQgMTZINS4yOUw3IDE0LjI5VjEwQzcgOS40NSA3LjQ1IDkgOCA5SDlDOS41NSA5IDEwIDkuNDUgMTAgMTBWMTEuMjlMMTcuMjkgNEgyMEMyMS4xMSA0IDIyIDQuODkgMjIgNkMyMiA3LjExIDIxLjExIDggMjAgOE04LjUgNUM5LjMzIDUgMTAgNS42NyAxMCA2LjVDMTAgNy4zMyA5LjMzIDggOC41IDhDNy42NyA4IDcgNy4zMyA3IDYuNUM3IDUuNjcgNy42NyA1IDguNSA1TTE0LjgzIDE3LjM0TDIwLjM0IDExLjgzTDIyLjE3IDEzLjY2TDE2LjY2IDE5LjE3TDE4LjUgMjFIMTNWMTUuNUwxNC44MyAxNy4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3JVcCA9IFwiTTIwIDhIMTguOTVMNi45NSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThDMiAxNi45IDIuOSAxNiA0IDE2SDUuMjlMNyAxNC4yOVYxMEM3IDkuNDUgNy40NSA5IDggOUg5QzkuNTUgOSAxMCA5LjQ1IDEwIDEwVjExLjI5TDE3LjI5IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZDMjIgNy4xMSAyMS4xMSA4IDIwIDhNOC41IDVDOS4zMyA1IDEwIDUuNjcgMTAgNi41QzEwIDcuMzMgOS4zMyA4IDguNSA4QzcuNjcgOCA3IDcuMzMgNyA2LjVDNyA1LjY3IDcuNjcgNSA4LjUgNU0yMC4xNyAxNS42NkwxNC42NiAyMS4xN0wxMi44MyAxOS4zNEwxOC4zNCAxMy44M0wxNi41IDEySDIyVjE3LjVMMjAuMTcgMTUuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXNsaW50ID0gXCJNNy45NSw5LjU1TDExLjg0LDcuM0MxMS45NCw3LjI1IDEyLjA2LDcuMjUgMTIuMTYsNy4zTDE2LjA1LDkuNTVDMTYuMTUsOS42MSAxNi4yMSw5LjcxIDE2LjIxLDkuODJWMTQuMzJDMTYuMjEsMTQuNDMgMTYuMTUsMTQuNTMgMTYuMDUsMTQuNTlMMTIuMTYsMTYuODRDMTIuMDYsMTYuODkgMTEuOTQsMTYuODkgMTEuODQsMTYuODRMNy45NSwxNC41OUM3Ljg1LDE0LjUzIDcuNzksMTQuNDMgNy43OSwxNC4zMlY5LjgyQzcuNzksOS43MSA3Ljg1LDkuNjEgNy45NSw5LjU1TTIyLjEyLDExLjZDMjIuMjksMTEuODkgMjIuMjksMTIuMjMgMjIuMTIsMTIuNTNMMTcuNDcsMjAuNTZDMTcuMywyMC44NiAxNywyMSAxNi42NSwyMUg3LjM1QzcsMjEgNi43LDIwLjg1IDYuNTMsMjAuNTZMMS44OCwxMi41M0MxLjcxLDEyLjI0IDEuNzEsMTEuODcgMS44OCwxMS41OEw2LjUzLDMuNUM2LjcsMy4yMiA3LDMgNy4zNSwzSDE2LjY1QzE3LDMgMTcuMywzLjIyIDE3LjQ3LDMuNUwyMi4xMiwxMS42TTE4LjI3LDE1LjVWOC42NUMxOC4yNyw4LjUzIDE4LjIsOC40MiAxOC4wOSw4LjM2TDEyLjE2LDQuOTVDMTIuMDYsNC44OSAxMS45Myw0Ljg5IDExLjgzLDQuOTVMNS45MSw4LjM2QzUuOCw4LjQyIDUuNzMsOC41MyA1LjczLDguNjVWMTUuNUM1LjczLDE1LjYxIDUuOCwxNS43MiA1LjkxLDE1Ljc4TDExLjg0LDE5LjE5QzExLjk0LDE5LjI1IDEyLjA3LDE5LjI1IDEyLjE3LDE5LjE5TDE4LjA5LDE1Ljc4QzE4LjIsMTUuNzIgMTguMjcsMTUuNjEgMTguMjcsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFdCA9IFwiTTIzLDguNzhMMjEuNzEsNy4yMkMyMS40NSw3LjQyIDIwLjUzLDggMTkuNzcsOEMxOS4yNiw4IDE4LjMsNy43NSAxNy40NSw3LjUzQzE2LjM5LDcuMjYgMTUuMzksNyAxNC42LDdDMTQsNyAxMy40Myw3LjE1IDEyLjkzLDcuMzVDMTIuNjIsNS40NSAxMSw0IDksNEM0LjU4LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA1LjU4LDE5IDEwLDE5QzEyLjA2LDE5IDEzLjkzLDE4LjQzIDE1LjM0LDE3LjM5TDE1LDIxLjI5TDE3LDIxLjQ3TDE4LDkuNzRDMTguNjYsOS44OSAxOS4yNywxMCAxOS43NywxMEMyMS4zOCwxMCAyMi44NCw4LjkxIDIzLDguNzhNOSw2QTIsMiAwIDAsMSAxMSw4QTIsMiAwIDAsMSA5LDEwSDQuMjNDNC44LDcuNjcgNi4zOSw2IDksNk0xMCwxN0M2LjY5LDE3IDQsMTUuMzEgNCwxMkg5QzEwLjYsMTIgMTEuODMsMTEuMTcgMTIuNSw5LjkxVjkuOTFDMTIuNzYsOS43MSAxMy44NSw5IDE0LjYsOUMxNC45NCw5IDE1LjUsOS4xMSAxNi4wNSw5LjI1TDE1LjY1LDEzLjg5QzE0LjgyLDE1Ljk1IDEyLjYsMTcgMTAsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJldW0gPSBcIk0xMiwxLjc1TDUuNzUsMTIuMjVMMTIsMTZMMTguMjUsMTIuMjVMMTIsMS43NU01Ljc1LDEzLjVMMTIsMjIuMjVMMTguMjUsMTMuNUwxMiwxNy4yNUw1Ljc1LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJuZXQgPSBcIk03LDE1SDlWMThIMTFWMTVIMTNWMThIMTVWMTVIMTdWMThIMTlWOUgxNVY2SDlWOUg1VjE4SDdWMTVNNC4zOCwzSDE5LjYzQzIwLjk0LDMgMjIsNC4wNiAyMiw1LjM4VjE5LjYzQTIuMzcsMi4zNyAwIDAsMSAxOS42MywyMkg0LjM4QzMuMDYsMjIgMiwyMC45NCAyLDE5LjYzVjUuMzhDMiw0LjA2IDMuMDYsMyA0LjM4LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJuZXRDYWJsZSA9IFwiTTExLDNWN0gxM1YzSDExTTgsNFYxMUgxNlY0SDE0VjhIMTBWNEg4TTEwLDEyVjIySDE0VjEySDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV0aGVybmV0Q2FibGVPZmYgPSBcIk0xMSwzSDEzVjdIMTFWM004LDRIMTBWOEgxNFY0SDE2VjExSDEyLjgyTDgsNi4xOFY0TTIwLDIwLjcyTDE4LjczLDIyTDE0LDE3LjI3VjIySDEwVjEzLjI3TDIsNS4yN0wzLjI4LDRMMjAsMjAuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZQbHVnQ2NzMSA9IFwiTTE2IDE1SDE1LjU5QzE3LjYzIDEzLjc4IDE5IDExLjU1IDE5IDlDMTkgNS40NyAxNi4zOSAyLjU3IDEzIDIuMDhWLjk0OUgxMVYyLjA4QzcuNjEgMi41NyA1IDUuNDcgNSA5QzUgMTEuNTUgNi4zNyAxMy43OCA4LjQxIDE1SDhDNS43OSAxNSA0IDE2Ljc5IDQgMTlTNS43OSAyMyA4IDIzSDE2QzE4LjIxIDIzIDIwIDIxLjIxIDIwIDE5UzE4LjIxIDE1IDE2IDE1TTE3LjUgMTFDMTcuNSAxMS44MyAxNi44MyAxMi41IDE2IDEyLjVTMTQuNSAxMS44MyAxNC41IDExIDE1LjE3IDkuNSAxNiA5LjUgMTcuNSAxMC4xNyAxNy41IDExTTE1IDVDMTYuMTEgNSAxNyA1LjkgMTcgN1MxNi4xMSA5IDE1IDkgMTMgOC4xMSAxMyA3IDEzLjkgNSAxNSA1TTkgNUMxMC4xMSA1IDExIDUuOSAxMSA3UzEwLjExIDkgOSA5IDcgOC4xMSA3IDcgNy45IDUgOSA1TTggMTIuNUM3LjE3IDEyLjUgNi41IDExLjgzIDYuNSAxMVM3LjE3IDkuNSA4IDkuNSA5LjUgMTAuMTcgOS41IDExIDguODMgMTIuNSA4IDEyLjVNOSAyMS44MlYyMUg3VjIxLjgyQzUuODQgMjEuNCA1IDIwLjMgNSAxOUM1IDE3LjM0IDYuMzQgMTYgOCAxNlMxMSAxNy4zNCAxMSAxOUMxMSAyMC4zIDEwLjE2IDIxLjQgOSAyMS44Mk0xMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMiAxMy4xMSAxNCAxMiAxNCAxMCAxMy4xMSAxMCAxMk0xNyAyMS44MlYyMUgxNVYyMS44MkMxMy44NCAyMS40IDEzIDIwLjMgMTMgMTlDMTMgMTcuMzQgMTQuMzQgMTYgMTYgMTZTMTkgMTcuMzQgMTkgMTlDMTkgMjAuMyAxOC4xNiAyMS40IDE3IDIxLjgyTTE0LjUgN0MxNC41IDYuNzIgMTQuNzIgNi41IDE1IDYuNVMxNS41IDYuNzIgMTUuNSA3IDE1LjI4IDcuNSAxNSA3LjUgMTQuNSA3LjI4IDE0LjUgN004LjUgN0M4LjUgNi43MiA4LjcyIDYuNSA5IDYuNVM5LjUgNi43MiA5LjUgNyA5LjI4IDcuNSA5IDcuNSA4LjUgNy4yOCA4LjUgN005IDE5QzkgMTkuNTUgOC41NSAyMCA4IDIwUzcgMTkuNTUgNyAxOSA3LjQ1IDE4IDggMTggOSAxOC40NSA5IDE5TTE3IDE5QzE3IDE5LjU1IDE2LjU1IDIwIDE2IDIwUzE1IDE5LjU1IDE1IDE5IDE1LjQ1IDE4IDE2IDE4IDE3IDE4LjQ1IDE3IDE5TTEyLjUgMTJDMTIuNSAxMi4yOCAxMi4yOCAxMi41IDEyIDEyLjVTMTEuNSAxMi4yOCAxMS41IDEyIDExLjcyIDExLjUgMTIgMTEuNSAxMi41IDExLjcyIDEyLjUgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZQbHVnQ2NzMiA9IFwiTTE0IDQuNUMxNCA0LjIyIDE0LjIyIDQgMTQuNSA0UzE1IDQuMjIgMTUgNC41IDE0Ljc4IDUgMTQuNSA1IDE0IDQuNzggMTQgNC41TTIwIDE5QzIwIDIxLjIxIDE4LjIxIDIzIDE2IDIzSDhDNS43OSAyMyA0IDIxLjIxIDQgMTlDNCAxNi43OSA1Ljc5IDE1IDggMTVIOC4xM0M1LjY3IDEzLjY0IDQgMTEgNCA4QzQgNS42MSA1LjA2IDMuNDcgNi43MiAySDE3LjI4QzE4Ljk0IDMuNDcgMjAgNS42MSAyMCA4QzIwIDExIDE4LjMzIDEzLjY0IDE1Ljg3IDE1SDE2QzE4LjIxIDE1IDIwIDE2Ljc5IDIwIDE5TTE2LjUgMTJDMTYuNSAxMC45IDE1LjYxIDEwIDE0LjUgMTBTMTIuNSAxMC45IDEyLjUgMTJDMTIuNSAxMy4xMSAxMy40IDE0IDE0LjUgMTRTMTYuNSAxMy4xMSAxNi41IDEyTTE3IDZDMTUuOSA2IDE1IDYuOSAxNSA4QzE1IDkuMTEgMTUuOSAxMCAxNyAxMFMxOSA5LjExIDE5IDhDMTkgNi45IDE4LjExIDYgMTcgNk0xMyA0LjVDMTMgNS4zMyAxMy42NyA2IDE0LjUgNlMxNiA1LjMzIDE2IDQuNSAxNS4zMyAzIDE0LjUgMyAxMyAzLjY3IDEzIDQuNU0xMiA2QzEwLjkgNiAxMCA2LjkgMTAgOEMxMCA5LjExIDEwLjkgMTAgMTIgMTBTMTQgOS4xMSAxNCA4QzE0IDYuOSAxMy4xMSA2IDEyIDZNOCA0LjVDOCA1LjMzIDguNjcgNiA5LjUgNlMxMSA1LjMzIDExIDQuNSAxMC4zMyAzIDkuNSAzIDggMy42NyA4IDQuNU03IDEwQzguMTEgMTAgOSA5LjExIDkgOEM5IDYuOSA4LjExIDYgNyA2UzUgNi45IDUgOEM1IDkuMTEgNS45IDEwIDcgMTBNOS41IDE0QzEwLjYxIDE0IDExLjUgMTMuMTEgMTEuNSAxMkMxMS41IDEwLjkgMTAuNjEgMTAgOS41IDEwUzcuNSAxMC45IDcuNSAxMkM3LjUgMTMuMTEgOC40IDE0IDkuNSAxNE0xMSAxOUMxMSAxNy4zNCA5LjY2IDE2IDggMTZTNSAxNy4zNCA1IDE5IDYuMzQgMjIgOCAyMiAxMSAyMC42NiAxMSAxOU0xOSAxOUMxOSAxNy4zNCAxNy42NiAxNiAxNiAxNlMxMyAxNy4zNCAxMyAxOSAxNC4zNCAyMiAxNiAyMiAxOSAyMC42NiAxOSAxOU0xNyA4LjVDMTcuMjggOC41IDE3LjUgOC4yOCAxNy41IDhTMTcuMjggNy41IDE3IDcuNSAxNi41IDcuNzIgMTYuNSA4IDE2LjcyIDguNSAxNyA4LjVNMTQuNSAxMS41QzE0LjIyIDExLjUgMTQgMTEuNzIgMTQgMTJTMTQuMjIgMTIuNSAxNC41IDEyLjUgMTUgMTIuMjggMTUgMTIgMTQuNzggMTEuNSAxNC41IDExLjVNMTYgMThDMTUuNDUgMTggMTUgMTguNDUgMTUgMTlDMTUgMTkuNTUgMTUuNDUgMjAgMTYgMjBTMTcgMTkuNTUgMTcgMTlDMTcgMTguNDUgMTYuNTUgMTggMTYgMThNMTIgOC41QzEyLjI4IDguNSAxMi41IDguMjggMTIuNSA4UzEyLjI4IDcuNSAxMiA3LjUgMTEuNSA3LjcyIDExLjUgOCAxMS43MiA4LjUgMTIgOC41TTggMThDNy40NSAxOCA3IDE4LjQ1IDcgMTlDNyAxOS41NSA3LjQ1IDIwIDggMjBTOSAxOS41NSA5IDE5QzkgMTguNDUgOC41NSAxOCA4IDE4TTcgNy41QzYuNzIgNy41IDYuNSA3LjcyIDYuNSA4UzYuNzIgOC41IDcgOC41IDcuNSA4LjI4IDcuNSA4IDcuMjggNy41IDcgNy41TTkuNSA1QzkuNzggNSAxMCA0Ljc4IDEwIDQuNVM5Ljc4IDQgOS41IDQgOSA0LjIyIDkgNC41IDkuMjIgNSA5LjUgNU0xMCAxMkMxMCAxMS43MiA5Ljc4IDExLjUgOS41IDExLjVTOSAxMS43MiA5IDEyIDkuMjIgMTIuNSA5LjUgMTIuNSAxMCAxMi4yOCAxMCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdDaGFkZW1vID0gXCJNOCAxMC41QzguODMgMTAuNSA5LjUgMTEuMTcgOS41IDEyUzguODMgMTMuNSA4IDEzLjUgNi41IDEyLjgzIDYuNSAxMiA3LjE3IDEwLjUgOCAxMC41TTggOUM2LjM0IDkgNSAxMC4zNCA1IDEyUzYuMzQgMTUgOCAxNSAxMSAxMy42NiAxMSAxMiA5LjY2IDkgOCA5TTE2IDEwLjVDMTYuODMgMTAuNSAxNy41IDExLjE3IDE3LjUgMTJTMTYuODMgMTMuNSAxNiAxMy41QzE1LjE3IDEzLjUgMTQuNSAxMi44MyAxNC41IDEyUzE1LjE3IDEwLjUgMTYgMTAuNU0xNiA5QzE0LjM0IDkgMTMgMTAuMzQgMTMgMTJTMTQuMzQgMTUgMTYgMTUgMTkgMTMuNjYgMTkgMTIgMTcuNjYgOSAxNiA5TTE0LjEyIDguNDFMMTIuNzEgN0wxNC4xMiA1LjU5TDEzLjQxIDQuODhMMTIgNi4yOUwxMC41OSA0Ljg4TDkuODggNS41OUwxMS4yOSA3TDkuODggOC40MUwxMC41OSA5LjEyTDEyIDcuNzFMMTMuNDEgOS4xMkwxNC4xMiA4LjQxTTE0LjEyIDE4LjQxTDEyLjcxIDE3TDE0LjEyIDE1LjU5TDEzLjQxIDE0Ljg4TDEyIDE2LjI5TDEwLjU5IDE0Ljg4TDkuODggMTUuNTlMMTEuMjkgMTdMOS44OCAxOC40MUwxMC41OSAxOS4xMkwxMiAxNy43MUwxMy40MSAxOS4xMkwxNC4xMiAxOC40MU0xOS43NCA1LjY3TDIwLjUgNC45M0wxOS4wNyAzLjVMMTguMzMgNC4yNkMxNi42IDIuODUgMTQuNCAyIDEyIDJTNy40IDIuODUgNS42NyA0LjI2TDQuOTMgMy41TDMuNSA0LjkzTDQuMjYgNS42N0MyLjg1IDcuNCAyIDkuNiAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJTMjIgMTcuNSAyMiAxMkMyMiA5LjYgMjEuMTUgNy40IDE5Ljc0IDUuNjdNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUZXNsYSA9IFwiTTYgOUM2IDguNDUgNi40NSA4IDcgOFM4IDguNDUgOCA5IDcuNTUgMTAgNyAxMCA2IDkuNTUgNiA5TTE3IDEwQzE3LjU1IDEwIDE4IDkuNTUgMTggOVMxNy41NSA4IDE3IDggMTYgOC40NSAxNiA5IDE2LjQ1IDEwIDE3IDEwTTIyIDkuOTNWMTFDMjIgMTUuOTcgMTcuOTcgMjAgMTMgMjBIMTFDNi4wMyAyMCAyIDE2IDIgMTFWOS45M0MyIDYuNjUgNC42NSA0IDcuOTMgNEgxNi4wN0MxOS4zNSA0IDIyIDYuNjUgMjIgOS45M00xNC41IDlDMTQuNSAxMC4zOCAxNS42MiAxMS41IDE3IDExLjVTMTkuNSAxMC4zOCAxOS41IDkgMTguMzggNi41IDE3IDYuNSAxNC41IDcuNjIgMTQuNSA5TTQuNSA5QzQuNSAxMC4zOCA1LjYyIDExLjUgNyAxMS41UzkuNSAxMC4zOCA5LjUgOSA4LjM4IDYuNSA3IDYuNSA0LjUgNy42MiA0LjUgOU05IDE3QzkgMTYuNDUgOC41NSAxNiA4IDE2UzcgMTYuNDUgNyAxNyA3LjQ1IDE4IDggMTggOSAxNy41NSA5IDE3TTEzLjUgMTdDMTMuNSAxNi4xNyAxMi44MyAxNS41IDEyIDE1LjVTMTAuNSAxNi4xNyAxMC41IDE3IDExLjE3IDE4LjUgMTIgMTguNSAxMy41IDE3LjgzIDEzLjUgMTdNMTcgMTdDMTcgMTYuNDUgMTYuNTUgMTYgMTYgMTZTMTUgMTYuNDUgMTUgMTcgMTUuNDUgMTggMTYgMTggMTcgMTcuNTUgMTcgMTdNMTkuOTcgMTEuNjZDMTkuMjMgMTIuNSAxOC4xOCAxMyAxNyAxM0MxNC43OSAxMyAxMyAxMS4yMSAxMyA5QzEzIDcuOCAxMy41NCA2LjczIDE0LjM4IDZIOS42MkMxMC40NiA2LjczIDExIDcuOCAxMSA5QzExIDExLjIxIDkuMjEgMTMgNyAxM0M1LjgyIDEzIDQuNzYgMTIuNSA0LjAzIDExLjY2QzQuMTkgMTMuMzIgNC45MyAxNC44MiA2LjA0IDE1Ljk0QzcuNzEgMTQuNzMgOS43NiAxNCAxMiAxNEMxNC4yNCAxNCAxNi4yOSAxNC43MyAxNy45NiAxNS45NEMxOS4wNyAxNC44MiAxOS44MSAxMy4zMiAxOS45NyAxMS42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUeXBlMSA9IFwiTTEyLjUgMTVDMTIuNSAxNS4yOCAxMi4yOCAxNS41IDEyIDE1LjVTMTEuNSAxNS4yOCAxMS41IDE1IDExLjcyIDE0LjUgMTIgMTQuNSAxMi41IDE0LjcyIDEyLjUgMTVNMTUgMTAuNUMxNS4yOCAxMC41IDE1LjUgMTAuMjggMTUuNSAxMFMxNS4yOCA5LjUgMTUgOS41IDE0LjUgOS43MiAxNC41IDEwIDE0LjcyIDEwLjUgMTUgMTAuNU05IDEwLjVDOS4yOCAxMC41IDkuNSAxMC4yOCA5LjUgMTBTOS4yOCA5LjUgOSA5LjUgOC41IDkuNzIgOC41IDEwIDguNzIgMTAuNSA5IDEwLjVNMTMgMTguOTJWMjBIMTFWMTguOTJDNy42MSAxOC40MyA1IDE1LjUzIDUgMTJTNy42MSA1LjU3IDExIDUuMDhWNEgxM1Y1LjA4QzE2LjM5IDUuNTcgMTkgOC41IDE5IDEyUzE2LjM5IDE4LjQzIDEzIDE4LjkyTTEzIDEwQzEzIDExLjExIDEzLjkgMTIgMTUgMTJTMTcgMTEuMTEgMTcgMTAgMTYuMTEgOCAxNSA4IDEzIDguOSAxMyAxME03IDEwQzcgMTEuMTEgNy45IDEyIDkgMTJTMTEgMTEuMTEgMTEgMTAgMTAuMTEgOCA5IDggNyA4LjkgNyAxME05LjUgMTRDOS41IDEzLjE3IDguODMgMTIuNSA4IDEyLjVTNi41IDEzLjE3IDYuNSAxNCA3LjE3IDE1LjUgOCAxNS41IDkuNSAxNC44MyA5LjUgMTRNMTQgMTVDMTQgMTMuOSAxMy4xMSAxMyAxMiAxM1MxMCAxMy45IDEwIDE1IDEwLjkgMTcgMTIgMTcgMTQgMTYuMTEgMTQgMTVNMTYgMTUuNUMxNi44MyAxNS41IDE3LjUgMTQuODMgMTcuNSAxNFMxNi44MyAxMi41IDE2IDEyLjUgMTQuNSAxMy4xNyAxNC41IDE0IDE1LjE3IDE1LjUgMTYgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUeXBlMiA9IFwiTTcuNSAxMUM3LjUgMTEuMjggNy4yOCAxMS41IDcgMTEuNVM2LjUgMTEuMjggNi41IDExIDYuNzIgMTAuNSA3IDEwLjUgNy41IDEwLjcyIDcuNSAxMU05LjUgMTQuNUM5LjIyIDE0LjUgOSAxNC43MiA5IDE1UzkuMjIgMTUuNSA5LjUgMTUuNSAxMCAxNS4yOCAxMCAxNSA5Ljc4IDE0LjUgOS41IDE0LjVNOS41IDhDOS43OCA4IDEwIDcuNzggMTAgNy41UzkuNzggNyA5LjUgNyA5IDcuMjIgOSA3LjUgOS4yMiA4IDkuNSA4TTE0LjUgOEMxNC43OCA4IDE1IDcuNzggMTUgNy41UzE0Ljc4IDcgMTQuNSA3IDE0IDcuMjIgMTQgNy41IDE0LjIyIDggMTQuNSA4TTEyIDEwLjVDMTEuNzIgMTAuNSAxMS41IDEwLjcyIDExLjUgMTFTMTEuNzIgMTEuNSAxMiAxMS41IDEyLjUgMTEuMjggMTIuNSAxMSAxMi4yOCAxMC41IDEyIDEwLjVNMjAgMTFDMjAgMTUuNDIgMTYuNDIgMTkgMTIgMTlTNCAxNS40MiA0IDExQzQgOC42MSA1LjA2IDYuNDcgNi43MiA1SDE3LjI4QzE4Ljk0IDYuNDcgMjAgOC42MSAyMCAxMU0xMyA3LjVDMTMgOC4zMyAxMy42NyA5IDE0LjUgOVMxNiA4LjMzIDE2IDcuNSAxNS4zMyA2IDE0LjUgNiAxMyA2LjY3IDEzIDcuNU04IDcuNUM4IDguMzMgOC42NyA5IDkuNSA5UzExIDguMzMgMTEgNy41IDEwLjMzIDYgOS41IDYgOCA2LjY3IDggNy41TTcgMTNDOC4xMSAxMyA5IDEyLjExIDkgMTFDOSA5LjkgOC4xMSA5IDcgOVM1IDkuOSA1IDExQzUgMTIuMTEgNS45IDEzIDcgMTNNMTEuNSAxNUMxMS41IDEzLjkgMTAuNjEgMTMgOS41IDEzUzcuNSAxMy45IDcuNSAxNUM3LjUgMTYuMTEgOC40IDE3IDkuNSAxN1MxMS41IDE2LjExIDExLjUgMTVNMTIgMTNDMTMuMTEgMTMgMTQgMTIuMTEgMTQgMTFDMTQgOS45IDEzLjExIDkgMTIgOVMxMCA5LjkgMTAgMTFDMTAgMTIuMTEgMTAuOSAxMyAxMiAxM00xNi41IDE1QzE2LjUgMTMuOSAxNS42MSAxMyAxNC41IDEzUzEyLjUgMTMuOSAxMi41IDE1QzEyLjUgMTYuMTEgMTMuNCAxNyAxNC41IDE3UzE2LjUgMTYuMTEgMTYuNSAxNU0xOSAxMUMxOSA5LjkgMTguMTEgOSAxNyA5UzE1IDkuOSAxNSAxMUMxNSAxMi4xMSAxNS45IDEzIDE3IDEzUzE5IDEyLjExIDE5IDExTTE3IDEwLjVDMTYuNzIgMTAuNSAxNi41IDEwLjcyIDE2LjUgMTFTMTYuNzIgMTEuNSAxNyAxMS41IDE3LjUgMTEuMjggMTcuNSAxMSAxNy4yOCAxMC41IDE3IDEwLjVNMTQuNSAxNC41QzE0LjIyIDE0LjUgMTQgMTQuNzIgMTQgMTVTMTQuMjIgMTUuNSAxNC41IDE1LjUgMTUgMTUuMjggMTUgMTUgMTQuNzggMTQuNSAxNC41IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZTdGF0aW9uID0gXCJNMTkuNzcsNy4yM0wxOS43OCw3LjIyTDE2LjA2LDMuNUwxNSw0LjU2TDE3LjExLDYuNjdDMTYuMTcsNy4wMyAxNS41LDcuOTMgMTUuNSw5QTIuNSwyLjUgMCAwLDAgMTgsMTEuNUMxOC4zNiwxMS41IDE4LjY5LDExLjQyIDE5LDExLjI5VjE4LjVBMSwxIDAgMCwxIDE4LDE5LjVBMSwxIDAgMCwxIDE3LDE4LjVWMTRBMiwyIDAgMCwwIDE1LDEySDE0VjVBMiwyIDAgMCwwIDEyLDNINkEyLDIgMCAwLDAgNCw1VjIxSDE0VjEzLjVIMTUuNVYxOC41QTIuNSwyLjUgMCAwLDAgMTgsMjFBMi41LDIuNSAwIDAsMCAyMC41LDE4LjVWOUMyMC41LDguMzEgMjAuMjIsNy42OCAxOS43Nyw3LjIzTTE4LDEwQTEsMSAwIDAsMSAxNyw5QTEsMSAwIDAsMSAxOCw4QTEsMSAwIDAsMSAxOSw5QTEsMSAwIDAsMSAxOCwxME04LDE4VjEzLjVINkwxMCw2VjExSDEyTDgsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZlcm5vdGUgPSBcIk0xNS4wOSwxMS42M0MxNS4wOSwxMS42MyAxNS4yOCwxMC4zNSAxNiwxMC4zNUMxNi43NiwxMC4zNSAxNy43OCwxMi4wNiAxNy43OCwxMi4wNkMxNy43OCwxMi4wNiAxNS40NiwxMS42MyAxNS4wOSwxMS42M00xOSw0LjY5QzE4LjY0LDQuMDkgMTYuODMsMy40MSAxNS44OSwzLjQxQzE0Ljk2LDMuNDEgMTMuNSwzLjQxIDEzLjUsMy40MUMxMy41LDMuNDEgMTIuNywyIDEwLjg4LDJDOS4wNSwyIDkuMTcsMi44MSA5LjE3LDMuNVY2LjMyTDguMzQsNy4xOUg0LjVDNC41LDcuMTkgMy40NCw3LjkxIDMuNDQsOS40NEMzLjQ0LDExIDMuOTIsMTYuMzUgNy4xMywxNi44NUMxMC45MywxNy40MyAxMS41OCwxNS42NyAxMS41OCwxNS40NkMxMS41OCwxNC41NiAxMS42LDEzLjIxIDExLjYsMTMuMjFDMTEuNiwxMy4yMSAxMi43MSwxNS4zMyAxNC4zOSwxNS4zM0MxNi4wNywxNS4zMyAxNy4wNCwxNi4zIDE3LjA0LDE3LjI5QzE3LjA0LDE4LjI4IDE3LjA0LDE5LjEzIDE3LjA0LDE5LjEzQzE3LjA0LDE5LjEzIDE3LDIwLjI4IDE2LDIwLjI4QzE1LDIwLjI4IDEzLjg5LDIwLjI4IDEzLjg5LDIwLjI4QzEzLjg5LDIwLjI4IDEzLjIsMTkuNzQgMTMuMiwxOUMxMy4yLDE4LjI1IDEzLjUzLDE4LjA1IDEzLjkzLDE4LjA1QzE0LjMyLDE4LjA1IDE0LjY1LDE4LjA5IDE0LjY1LDE4LjA5VjE2LjUzQzE0LjY1LDE2LjUzIDExLjQ3LDE2LjUgMTEuNDcsMTguOTRDMTEuNDcsMjEuMzcgMTMuMTMsMjIgMTQuNDYsMjJDMTUuOCwyMiAxNi42MywyMiAxNi42MywyMkMxNi42MywyMiAyMC41NiwyMS41IDIwLjU2LDEzLjc1QzIwLjU2LDYgMTkuMzMsNS4yOCAxOSw0LjY5TTcuNSw2LjMxSDQuMjZMOC4zMiwyLjIyVjUuNUw3LjUsNi4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlFeGNhdmF0b3IgPSBcIk0xOC41IDE4LjVDMTkuMDQgMTguNSAxOS41IDE4Ljk2IDE5LjUgMTkuNVMxOS4wNCAyMC41IDE4LjUgMjAuNUg2LjVDNS45NiAyMC41IDUuNSAyMC4wNCA1LjUgMTkuNVM1Ljk2IDE4LjUgNi41IDE4LjVIMTguNU0xOC41IDE3SDYuNUM1LjEzIDE3IDQgMTguMTMgNCAxOS41UzUuMTMgMjIgNi41IDIySDE4LjVDMTkuODggMjIgMjEgMjAuODggMjEgMTkuNVMxOS44OCAxNyAxOC41IDE3TTIxIDExSDE4VjdIMTNMMTAgMTFWMTZIMjJMMjEgMTFNMTEuNTQgMTFMMTMuNSA4LjVIMTZWMTFIMTEuNTRNOS43NiAzLjQxTDQuNzYgMkwyIDExLjgzQzEuNjYgMTMuMTEgMi40MSAxNC40NCAzLjcgMTQuOEw0Ljg2IDE1LjEyTDguMTUgMTIuMjlMNC4yNyAxMS4yMUw2LjE1IDQuNDZMOC45NCA1LjI0QzkuNSA1LjUzIDEwLjcxIDYuMzQgMTEuNDcgNy4zN0wxMi41IDZIMTIuOTRDMTEuNjggNC40MSA5Ljg1IDMuNDYgOS43NiAzLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4Y2xhbWF0aW9uID0gXCJNIDExLDRMIDEzLDRMIDEzLDE1TCAxMSwxNUwgMTEsNCBaIE0gMTMsMThMIDEzLDIwTCAxMSwyMEwgMTEsMThMIDEzLDE4IFpcIjtcclxuZXhwb3J0IHZhciBtZGlFeGNsYW1hdGlvblRoaWNrID0gXCJNMTAgM0gxNFYxNEgxMFYzTTEwIDIxVjE3SDE0VjIxSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4aXRSdW4gPSBcIk0xMy4zNCw4LjE3QzEyLjQxLDguMTcgMTEuNjUsNy40IDExLjY1LDYuNDdBMS42OSwxLjY5IDAgMCwxIDEzLjM0LDQuNzhDMTQuMjgsNC43OCAxNS4wNCw1LjU0IDE1LjA0LDYuNDdDMTUuMDQsNy40IDE0LjI4LDguMTcgMTMuMzQsOC4xN00xMC4zLDE5LjkzTDQuMzcsMTguNzVMNC43MSwxNy4wNUw4Ljg2LDE3LjlMMTAuMjEsMTEuMDRMOC42OSwxMS42NFYxNC41SDdWMTAuNTRMMTEuNCw4LjY3TDEyLjA3LDguNTlDMTIuNjcsOC41OSAxMy4xNyw4LjkzIDEzLjUsOS40NEwxNC4zNiwxMC43OUMxNS4wNCwxMiAxNi4zOSwxMi44MiAxOCwxMi44MlYxNC41QzE2LjE0LDE0LjUgMTQuNDQsMTMuNjcgMTMuMzQsMTIuNEwxMi44NCwxNC45NEwxNC42MSwxNi42M1YyM0gxMi45MlYxNy45TDExLjE0LDE2LjIxTDEwLjMsMTkuOTNNMjEsMjNIMTlWM0g2VjE2LjExTDQsMTUuNjlWMUgyMVYyM002LDIzSDRWMTkuNzhMNiwyMC4yVjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4aXRUb0FwcCA9IFwiTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVY5SDVWNUgxOVYxOUg1VjE1SDNWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMC4wOCwxNS41OEwxMS41LDE3TDE2LjUsMTJMMTEuNSw3TDEwLjA4LDguNDFMMTIuNjcsMTFIM1YxM0gxMi42N0wxMC4wOCwxNS41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlFeHBhbmRBbGwgPSBcIk0xOCw4SDhWMThINlY4QTIsMiAwIDAsMSA4LDZIMThWOE0xNCwySDRBMiwyIDAgMCwwIDIsNFYxNEg0VjRIMTRWMk0yMiwxMlYyMEEyLDIgMCAwLDEgMjAsMjJIMTJBMiwyIDAgMCwxIDEwLDIwVjEyQTIsMiAwIDAsMSAxMiwxMEgyMEEyLDIgMCAwLDEgMjIsMTJNMjAsMTVIMTdWMTJIMTVWMTVIMTJWMTdIMTVWMjBIMTdWMTdIMjBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5kQWxsT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE0SDRWNEgxNFYySDRNOCw2QTIsMiAwIDAsMCA2LDhWMThIOFY4SDE4VjZIOE0yMCwxMlYyMEgxMlYxMkgyME0yMCwxMEgxMkEyLDIgMCAwLDAgMTAsMTJWMjBBMiwyIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkEyLDIgMCAwLDAgMjAsMTBNMTksMTdIMTdWMTlIMTVWMTdIMTNWMTVIMTVWMTNIMTdWMTVIMTlWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5zaW9uQ2FyZCA9IFwiTTIsN1Y4LjVIM1YxN0g0LjVWN0MzLjcsNyAyLjgsNyAyLDdNNiw3VjdMNiwxNkg3VjE3SDE0VjE2SDIyVjdINk0xNy41LDlBMi41LDIuNSAwIDAsMSAyMCwxMS41QTIuNSwyLjUgMCAwLDEgMTcuNSwxNEEyLjUsMi41IDAgMCwxIDE1LDExLjVBMi41LDIuNSAwIDAsMSAxNy41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5zaW9uQ2FyZFZhcmlhbnQgPSBcIk0yIDdINC41VjE3SDNWOC41SDJNMjIgN1YxNkgxNFYxN0g3VjE2SDZWN00xMCA5SDhWMTJIMTBNMTMgOUgxMVYxMkgxM00yMCA5SDE1VjE0SDIwVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwb25lbnQgPSBcIk0xNS4zOCwzTDE3Ljc3LDguNzVDMTcuNTUsOS42OCAxNy4yNywxMC4zMiAxNywxMC43QzE2LjY3LDExLjE4IDE2LjQ0LDExLjI1IDE2LjE5LDExLjI1VjEyLjc1QzE2Ljk0LDEyLjc1IDE3Ljc0LDEyLjM1IDE4LjI0LDExLjU2QzE5Ljg3LDguOTQgMjIsMyAyMiwzSDIwLjM4TDE4LjY5LDcuMDVMMTcsM0gxNS4zOE0zLjQyLDguNTlMMiwxMEw2Ljc5LDE0Ljc5TDIsMTkuNTlMMy40MSwyMUw4LjIxLDE2LjIxTDEzLDIxTDE0LjQxLDE5LjU5TDkuNjIsMTQuNzlMMTQuNDEsMTBMMTMsOC41OUw4LjIxLDEzLjM4TDMuNDEsOC41OUgzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4cG9uZW50Qm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNMTMuNzYsNkgxNS4zOUwxNi41LDguNkwxNy41OSw2SDE5LjI0QzE5LjI0LDYgMTcuNSwxMC41NyAxNi40NiwxMi4zMkMxNi4wOCwxMi44OSAxNS4zNSwxMy4yNyAxNC41LDEzLjI1VjExLjc1QzE0Ljk2LDExLjc2IDE1LjI1LDExLjUgMTUuNSwxMS4xM0MxNS42MSwxMSAxNS42OCwxMC44IDE1Ljc0LDEwLjY0TDEzLjc2LDZNNi40MSw5LjU5TDkuMjEsMTIuMzhMMTIsOS41OUwxMy40MSwxMUwxMC42MiwxMy43OUwxMy40MSwxNi41OUwxMiwxOEw5LjIxLDE1LjIxTDYuNDEsMThMNSwxNi41OUw3Ljc5LDEzLjc5TDUsMTFMNi40MSw5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4cG9ydCA9IFwiTTIzLDEyTDE5LDhWMTFIMTBWMTNIMTlWMTZNMSwxOFY2QzEsNC44OSAxLjksNCAzLDRIMTVBMiwyIDAgMCwxIDE3LDZWOUgxNVY2SDNWMThIMTVWMTVIMTdWMThBMiwyIDAgMCwxIDE1LDIwSDNBMiwyIDAgMCwxIDEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwb3J0VmFyaWFudCA9IFwiTTEyLDFMOCw1SDExVjE0SDEzVjVIMTZNMTgsMjNINkM0Ljg5LDIzIDQsMjIuMSA0LDIxVjlBMiwyIDAgMCwxIDYsN0g5VjlINlYyMUgxOFY5SDE1VjdIMThBMiwyIDAgMCwxIDIwLDlWMjFBMiwyIDAgMCwxIDE4LDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZSA9IFwiTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJBNSw1IDAgMCwxIDEyLDE3TTEyLDQuNUM3LDQuNSAyLjczLDcuNjEgMSwxMkMyLjczLDE2LjM5IDcsMTkuNSAxMiwxOS41QzE3LDE5LjUgMjEuMjcsMTYuMzkgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZUNoZWNrID0gXCJNMjMuNSwxN0wxOC41LDIyTDE1LDE4LjVMMTYuNSwxN0wxOC41LDE5TDIyLDE1LjVMMjMuNSwxN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsMTdDMTIuNSwxNyAxMi45NywxNi45MyAxMy40MiwxNi43OUMxMy4xNSwxNy41IDEzLDE4LjIyIDEzLDE5VjE5LjQ1TDEyLDE5LjVDNywxOS41IDIuNzMsMTYuMzkgMSwxMkMyLjczLDcuNjEgNyw0LjUgMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIyLjc1LDEyLjY0IDIyLjQ0LDEzLjI2IDIyLjA4LDEzLjg1QzIxLjE4LDEzLjMxIDIwLjEyLDEzIDE5LDEzQzE4LjIyLDEzIDE3LjUsMTMuMTUgMTYuNzksMTMuNDJDMTYuOTMsMTIuOTcgMTcsMTIuNSAxNywxMkE1LDUgMCAwLDAgMTIsN0E1LDUgMCAwLDAgNywxMkE1LDUgMCAwLDAgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllQ2hlY2tPdXRsaW5lID0gXCJNMjMuNSwxN0wxOC41LDIyTDE1LDE4LjVMMTYuNSwxN0wxOC41LDE5TDIyLDE1LjVMMjMuNSwxN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIyLjc1LDEyLjY1IDIyLjQ0LDEzLjI2IDIyLjA4LDEzLjg1QzIxLjUsMTMuNSAyMC44NiwxMy4yNSAyMC4xOCwxMy4xMkwyMC44MiwxMkMxOS4xNyw4LjY0IDE1Ljc2LDYuNSAxMiw2LjVDOC4yNCw2LjUgNC44Myw4LjY0IDMuMTgsMTJDNC44MywxNS4zNiA4LjI0LDE3LjUgMTIsMTcuNUwxMy4yMSwxNy40M0MxMy4wNywxNy45MyAxMywxOC40NiAxMywxOVYxOS40NkwxMiwxOS41QzcsMTkuNSAyLjczLDE2LjM5IDEsMTJDMi43Myw3LjYxIDcsNC41IDEyLDQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVDaXJjbGUgPSBcIk0xMiw5LjVBMi41LDIuNSAwIDAsMCA5LjUsMTJBMi41LDIuNSAwIDAsMCAxMiwxNC41QTIuNSwyLjUgMCAwLDAgMTQuNSwxMkEyLjUsMi41IDAgMCwwIDEyLDkuNU0xMiwxM0ExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEyLDExQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTIsMTNNMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQTIuNSwyLjUgMCAwLDAgMTIsMTQuNUEyLjUsMi41IDAgMCwwIDE0LjUsMTJBMi41LDIuNSAwIDAsMCAxMiw5LjVNMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDE2QzkuMzcsMTYgNywxNC40MyA2LDEyQzcuMzgsOC42OSAxMS4xOSw3LjEyIDE0LjUsOC41QzE2LjA4LDkuMTYgMTcuMzQsMTAuNDIgMTgsMTJDMTcsMTQuNDMgMTQuNjMsMTYgMTIsMTZNMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQTIuNSwyLjUgMCAwLDAgMTIsMTQuNUEyLjUsMi41IDAgMCwwIDE0LjUsMTJBMi41LDIuNSAwIDAsMCAxMiw5LjVNMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyME0xMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzQTEsMSAwIDAsMSAxMSwxMkExLDEgMCAwLDEgMTIsMTFNMTIsOEMxNC42Myw4IDE3LDkuNTcgMTgsMTJDMTYuNjIsMTUuMzEgMTIuODEsMTYuODggOS41LDE1LjVDNy45MiwxNC44NCA2LjY2LDEzLjU4IDYsMTJDNyw5LjU3IDkuMzcsOCAxMiw4TTEyLDkuNUEyLjUsMi41IDAgMCwwIDkuNSwxMkEyLjUsMi41IDAgMCwwIDEyLDE0LjVBMi41LDIuNSAwIDAsMCAxNC41LDEyQTIuNSwyLjUgMCAwLDAgMTIsOS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllTWludXMgPSBcIk0xMiA0LjVBMTEuOCAxMS44IDAgMCAwIDEgMTJBMTEuOCAxMS44IDAgMCAwIDEyIDE5LjVIMTMuMUEzLjggMy44IDAgMCAxIDEzIDE4LjVBOS45IDkuOSAwIDAgMSAxMy4yIDE2LjhMMTIgMTdBNSA1IDAgMSAxIDE3IDEyQTIuOCAyLjggMCAwIDEgMTYuOSAxMi45QTUuMiA1LjIgMCAwIDEgMTkgMTIuNUE1LjYgNS42IDAgMCAxIDIyLjMgMTMuNUExMC4xIDEwLjEgMCAwIDAgMjMgMTJBMTEuOCAxMS44IDAgMCAwIDEyIDQuNU0xMiA5QTMgMyAwIDEgMCAxNSAxMkEyLjkgMi45IDAgMCAwIDEyIDlNMTUgMTcuNVYxOS41SDIzVjE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllTWludXNPdXRsaW5lID0gXCJNMTIgNC41QTExLjggMTEuOCAwIDAgMCAxIDEyQTExLjggMTEuOCAwIDAgMCAxMiAxOS41SDEzLjFBMy44IDMuOCAwIDAgMSAxMyAxOC41QTQuMSA0LjEgMCAwIDEgMTMuMSAxNy40SDEyQTkuNiA5LjYgMCAwIDEgMy4yIDEyQTkuNiA5LjYgMCAwIDEgMTIgNi41QTkuNiA5LjYgMCAwIDEgMjAuOCAxMkwyMC40IDEyLjdBNC42IDQuNiAwIDAgMSAyMi4zIDEzLjVBMTAuMSAxMC4xIDAgMCAwIDIzIDEyQTExLjggMTEuOCAwIDAgMCAxMiA0LjVNMTIgOUEzIDMgMCAxIDAgMTUgMTJBMi45IDIuOSAwIDAgMCAxMiA5TTE1IDE3LjVWMTkuNUgyM1YxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZU9mZiA9IFwiTTExLjgzLDlMMTUsMTIuMTZDMTUsMTIuMTEgMTUsMTIuMDUgMTUsMTJBMywzIDAgMCwwIDEyLDlDMTEuOTQsOSAxMS44OSw5IDExLjgzLDlNNy41Myw5LjhMOS4wOCwxMS4zNUM5LjAzLDExLjU2IDksMTEuNzcgOSwxMkEzLDMgMCAwLDAgMTIsMTVDMTIuMjIsMTUgMTIuNDQsMTQuOTcgMTIuNjUsMTQuOTJMMTQuMiwxNi40N0MxMy41MywxNi44IDEyLjc5LDE3IDEyLDE3QTUsNSAwIDAsMSA3LDEyQzcsMTEuMjEgNy4yLDEwLjQ3IDcuNTMsOS44TTIsNC4yN0w0LjI4LDYuNTVMNC43Myw3QzMuMDgsOC4zIDEuNzgsMTAgMSwxMkMyLjczLDE2LjM5IDcsMTkuNSAxMiwxOS41QzEzLjU1LDE5LjUgMTUuMDMsMTkuMiAxNi4zOCwxOC42NkwxNi44MSwxOS4wOEwxOS43MywyMkwyMSwyMC43M0wzLjI3LDNNMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTIuNjQgMTYuODcsMTMuMjYgMTYuNjQsMTMuODJMMTkuNTcsMTYuNzVDMjEuMDcsMTUuNSAyMi4yNywxMy44NiAyMywxMkMyMS4yNyw3LjYxIDE3LDQuNSAxMiw0LjVDMTAuNiw0LjUgOS4yNiw0Ljc1IDgsNS4yTDEwLjE3LDcuMzVDMTAuNzQsNy4xMyAxMS4zNSw3IDEyLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllT2ZmT3V0bGluZSA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuNjUsMTguOTJDMTQuNSwxOS4zIDEzLjI4LDE5LjUgMTIsMTkuNUM3LDE5LjUgMi43MywxNi4zOSAxLDEyQzEuNjksMTAuMjQgMi43OSw4LjY5IDQuMTksNy40NkwyLDUuMjdNMTIsOUEzLDMgMCAwLDEgMTUsMTJDMTUsMTIuMzUgMTQuOTQsMTIuNjkgMTQuODMsMTNMMTEsOS4xN0MxMS4zMSw5LjA2IDExLjY1LDkgMTIsOU0xMiw0LjVDMTcsNC41IDIxLjI3LDcuNjEgMjMsMTJDMjIuMTgsMTQuMDggMjAuNzksMTUuODggMTksMTcuMTlMMTcuNTgsMTUuNzZDMTguOTQsMTQuODIgMjAuMDYsMTMuNTQgMjAuODIsMTJDMTkuMTcsOC42NCAxNS43Niw2LjUgMTIsNi41QzEwLjkxLDYuNSA5Ljg0LDYuNjggOC44NCw3TDcuMyw1LjQ3QzguNzQsNC44NSAxMC4zMyw0LjUgMTIsNC41TTMuMTgsMTJDNC44MywxNS4zNiA4LjI0LDE3LjUgMTIsMTcuNUMxMi42OSwxNy41IDEzLjM3LDE3LjQzIDE0LDE3LjI5TDExLjcyLDE1QzEwLjI5LDE0Ljg1IDkuMTUsMTMuNzEgOSwxMi4yOEw1LjYsOC44N0M0LjYxLDkuNzIgMy43OCwxMC43OCAzLjE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZU91dGxpbmUgPSBcIk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIxLjI3LDE2LjM5IDE3LDE5LjUgMTIsMTkuNUM3LDE5LjUgMi43MywxNi4zOSAxLDEyQzIuNzMsNy42MSA3LDQuNSAxMiw0LjVNMy4xOCwxMkM0LjgzLDE1LjM2IDguMjQsMTcuNSAxMiwxNy41QzE1Ljc2LDE3LjUgMTkuMTcsMTUuMzYgMjAuODIsMTJDMTkuMTcsOC42NCAxNS43Niw2LjUgMTIsNi41QzguMjQsNi41IDQuODMsOC42NCAzLjE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVBsdXMgPSBcIk0xMiw0LjVDNyw0LjUgMi43Myw3LjYxIDEsMTJDMi43MywxNi4zOSA3LDE5LjUgMTIsMTkuNUMxMi4zNiwxOS41IDEyLjcyLDE5LjUgMTMuMDgsMTkuNDVDMTMuMDMsMTkuMTMgMTMsMTguODIgMTMsMTguNUMxMywxNy45NCAxMy4wOCwxNy4zOCAxMy4yNCwxNi44NEMxMi44MywxNi45NCAxMi40MiwxNyAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTIuMjkgMTYuOTcsMTIuNTkgMTYuOTIsMTIuODhDMTcuNTgsMTIuNjMgMTguMjksMTIuNSAxOSwxMi41QzIwLjE3LDEyLjUgMjEuMzEsMTIuODQgMjIuMjksMTMuNUMyMi41NiwxMyAyMi44LDEyLjUgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOCwxNC41VjE3LjVIMTVWMTkuNUgxOFYyMi41SDIwVjE5LjVIMjNWMTcuNUgyMFYxNC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVBsdXNPdXRsaW5lID0gXCJNMTIsNC41QzcsNC41IDIuNzMsNy42MSAxLDEyQzIuNzMsMTYuMzkgNywxOS41IDEyLDE5LjVDMTIuMzYsMTkuNSAxMi43MiwxOS41IDEzLjA4LDE5LjQ1QzEzLjAzLDE5LjEzIDEzLDE4LjgyIDEzLDE4LjVDMTMsMTguMTQgMTMuMDQsMTcuNzggMTMuMSwxNy40MkMxMi43NCwxNy40NiAxMi4zNywxNy41IDEyLDE3LjVDOC4yNCwxNy41IDQuODMsMTUuMzYgMy4xOCwxMkM0LjgzLDguNjQgOC4yNCw2LjUgMTIsNi41QzE1Ljc2LDYuNSAxOS4xNyw4LjY0IDIwLjgyLDEyQzIwLjcsMTIuMjQgMjAuNTYsMTIuNDUgMjAuNDMsMTIuNjhDMjEuMDksMTIuODQgMjEuNzIsMTMuMTEgMjIuMjksMTMuNUMyMi41NiwxMyAyMi44LDEyLjUgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOCwxNC41VjE3LjVIMTVWMTkuNUgxOFYyMi41SDIwVjE5LjVIMjNWMTcuNUgyMFYxNC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVJlbW92ZSA9IFwiTTIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TTEyIDlDMTAuMzQgOSA5IDEwLjM0IDkgMTJTMTAuMzQgMTUgMTIgMTUgMTUgMTMuNjYgMTUgMTIgMTMuNjYgOSAxMiA5TTEyIDE3QzkuMjQgMTcgNyAxNC43NiA3IDEyUzkuMjQgNyAxMiA3IDE3IDkuMjQgMTcgMTJDMTcgMTIuNSAxNi45IDEzIDE2Ljc3IDEzLjQzQzE3LjQ2IDEzLjE2IDE4LjIxIDEzIDE5IDEzQzIwLjEyIDEzIDIxLjE3IDEzLjMyIDIyLjA3IDEzLjg1QzIyLjQzIDEzLjI3IDIyLjc0IDEyLjY1IDIzIDEyQzIxLjI3IDcuNjEgMTcgNC41IDEyIDQuNVMyLjczIDcuNjEgMSAxMkMyLjczIDE2LjM5IDcgMTkuNSAxMiAxOS41QzEyLjM1IDE5LjUgMTIuNjkgMTkuNSAxMy4wMyAxOS40NUMxMyAxOS4zIDEzIDE5LjE1IDEzIDE5QzEzIDE4LjIxIDEzLjE2IDE3LjQ2IDEzLjQzIDE2Ljc3QzEzIDE2LjkgMTIuNSAxNyAxMiAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVSZW1vdmVPdXRsaW5lID0gXCJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhNMTIgOUMxMC4zNCA5IDkgMTAuMzQgOSAxMlMxMC4zNCAxNSAxMiAxNSAxNSAxMy42NiAxNSAxMiAxMy42NiA5IDEyIDlNMTIgMTcuNUM4LjI0IDE3LjUgNC44MyAxNS4zNiAzLjE4IDEyQzQuODMgOC42NCA4LjI0IDYuNSAxMiA2LjVTMTkuMTcgOC42NCAyMC44MiAxMkMyMC42MyAxMi4zOSAyMC40MSAxMi43NyAyMC4xNyAxMy4xM0MyMC44NSAxMy4yNiAyMS41IDEzLjUgMjIuMDcgMTMuODVDMjIuNDMgMTMuMjcgMjIuNzQgMTIuNjUgMjMgMTJDMjEuMjcgNy42MSAxNyA0LjUgMTIgNC41UzIuNzMgNy42MSAxIDEyQzIuNzMgMTYuMzkgNyAxOS41IDEyIDE5LjVDMTIuMzUgMTkuNSAxMi42OSAxOS41IDEzLjAzIDE5LjQ1QzEzIDE5LjMgMTMgMTkuMTUgMTMgMTlDMTMgMTguNDUgMTMuMDggMTcuOTIgMTMuMjIgMTcuNDFDMTIuODIgMTcuNDYgMTIuNDEgMTcuNSAxMiAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVNldHRpbmdzID0gXCJNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTEyLDE3QTUsNSAwIDAsMSA3LDEyQTUsNSAwIDAsMSAxMiw3QTUsNSAwIDAsMSAxNywxMkE1LDUgMCAwLDEgMTIsMTdNMTIsNC41QzcuMTQsNC41IDIuNzgsNy41IDEsMTJDMy4zOSwxOC4wOCAxMC4yNSwyMS4wNiAxNi4zMywxOC42N0MxOS4zOCwxNy40NyAyMS44LDE1LjA2IDIzLDEyQzIxLjIyLDcuNSAxNi44Niw0LjUgMTIsNC41TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVNldHRpbmdzT3V0bGluZSA9IFwiTTEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOU0xMiw0LjVDMTYuODYsNC41IDIxLjIyLDcuNSAyMywxMkMyMC42MSwxOC4wOCAxMy43NSwyMS4wNiA3LjY3LDE4LjY3QzQuNjIsMTcuNDcgMi4yLDE1LjA2IDEsMTJDMi43OCw3LjUgNy4xNCw0LjUgMTIsNC41TTMuMTgsMTJDNS41NiwxNi44NyAxMS40NSwxOC44OSAxNi4zMiwxNi41QzE4LjI4LDE1LjU0IDE5Ljg2LDEzLjk2IDIwLjgyLDEyQzE4LjQ0LDcuMTMgMTIuNTUsNS4xMSA3LjY4LDcuNUM1LjcyLDguNDYgNC4xNCwxMC4wNCAzLjE4LDEyTTksMjJIN1YyNEg5VjIyTTEzLDIySDExVjI0SDEzVjIyTTE3LDIySDE1VjI0SDE3VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZWRyb3BwZXIgPSBcIk0xOS4zNSwxMS43MkwxNy4yMiwxMy44NUwxNS44MSwxMi40M0w4LjEsMjAuMTRMMy41LDIyTDIsMjAuNUwzLjg2LDE1LjlMMTEuNTcsOC4xOUwxMC4xNSw2Ljc4TDEyLjI4LDQuNjVMMTkuMzUsMTEuNzJNMTYuNzYsM0MxNy45MywxLjgzIDE5LjgzLDEuODMgMjEsM0MyMi4xNyw0LjE3IDIyLjE3LDYuMDcgMjEsNy4yNEwxOS4wOCw5LjE2TDE0Ljg0LDQuOTJMMTYuNzYsM001LjU2LDE3LjAzTDQuNSwxOS41TDYuOTcsMTguNDRMMTQuNCwxMUwxMyw5LjZMNS41NiwxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVkcm9wcGVyTWludXMgPSBcIk0xOS4zNSAxMS43MkwxNy4yMiAxMy44NUwxNS44MSAxMi40M0w4LjEgMjAuMTRMMy41IDIyTDIgMjAuNUwzLjg2IDE1LjlMMTEuNTcgOC4xOUwxMC4xNSA2Ljc4TDEyLjI4IDQuNjVMMTkuMzUgMTEuNzJNMTYuNzYgM0MxNy45MyAxLjgzIDE5LjgzIDEuODMgMjEgM1MyMi4xNyA2LjA3IDIxIDcuMjRMMTkuMDggOS4xNkwxNC44NCA0LjkyTDE2Ljc2IDNNNS41NiAxNy4wM0w0LjUgMTkuNUw2Ljk3IDE4LjQ0TDE0LjQgMTFMMTMgOS42TDUuNTYgMTcuMDNNOSA0VjZIMVY0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlck9mZiA9IFwiTTIxIDcuMjRMMTkuMDggOS4xNkwxNC44NCA0LjkyTDE2Ljc2IDNDMTcuOTMgMS44MyAxOS44MyAxLjgzIDIxIDNTMjIuMTcgNi4wNyAyMSA3LjI0TTEwLjk0IDguODJMMTIuMzYgMTAuMjRMMTMgOS42TDE0LjQgMTFMMTMuNzYgMTEuNjRMMTUuMTggMTMuMDZMMTUuODEgMTIuNDNMMTcuMjIgMTMuODVMMTkuMzUgMTEuNzJMMTIuMjggNC42NUwxMC4xNSA2Ljc4TDExLjU3IDguMTlMMTAuOTQgOC44Mk0xOS44NiAyMC4yOUwxOC41OCAyMS41N0wxMi42MyAxNS42MUw4LjEgMjAuMTRMMy41IDIyTDIgMjAuNUwzLjg2IDE1LjlMOC4zOSAxMS4zN0wxLjg2IDQuODVMMy4xNCAzLjU3TDE5Ljg2IDIwLjI5TTExLjIxIDE0LjJMOS44MSAxMi43OUw1LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTEuMjEgMTQuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVkcm9wcGVyUGx1cyA9IFwiTTE5LjM1IDExLjcyTDE3LjIyIDEzLjg1TDE1LjgxIDEyLjQzTDguMSAyMC4xNEwzLjUgMjJMMiAyMC41TDMuODYgMTUuOUwxMS41NyA4LjE5TDEwLjE1IDYuNzhMMTIuMjggNC42NUwxOS4zNSAxMS43Mk0xNi43NiAzQzE3LjkzIDEuODMgMTkuODMgMS44MyAyMSAzUzIyLjE3IDYuMDcgMjEgNy4yNEwxOS4wOCA5LjE2TDE0Ljg0IDQuOTJMMTYuNzYgM001LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTQuNCAxMUwxMyA5LjZMNS41NiAxNy4wM002IDFWNEg5VjZINlY5SDRWNkgxVjRINFYxSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlclJlbW92ZSA9IFwiTTE5LjM1IDExLjcyTDE3LjIyIDEzLjg1TDE1LjgxIDEyLjQzTDguMSAyMC4xNEwzLjUgMjJMMiAyMC41TDMuODYgMTUuOUwxMS41NyA4LjE5TDEwLjE1IDYuNzhMMTIuMjggNC42NUwxOS4zNSAxMS43Mk0xNi43NiAzQzE3LjkzIDEuODMgMTkuODMgMS44MyAyMSAzUzIyLjE3IDYuMDcgMjEgNy4yNEwxOS4wOCA5LjE2TDE0Ljg0IDQuOTJMMTYuNzYgM001LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTQuNCAxMUwxMyA5LjZMNS41NiAxNy4wM004LjU0IDIuODhMNi40MSA1TDguNTQgNy4xMkw3LjEyIDguNTRMNSA2LjQxTDIuODggOC41NEwxLjQ2IDcuMTJMMy41OSA1TDEuNDYgMi44OEwyLjg4IDEuNDdMNSAzLjU5TDcuMTIgMS40N0w4LjU0IDIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlclZhcmlhbnQgPSBcIk02LjkyLDE5TDUsMTcuMDhMMTMuMDYsOUwxNSwxMC45NE0yMC43MSw1LjYzTDE4LjM3LDMuMjlDMTgsMi45IDE3LjM1LDIuOSAxNi45NiwzLjI5TDEzLjg0LDYuNDFMMTEuOTEsNC41TDEwLjUsNS45MUwxMS45Miw3LjMzTDMsMTYuMjVWMjFINy43NUwxNi42NywxMi4wOEwxOC4wOSwxMy41TDE5LjUsMTIuMDlMMTcuNTgsMTAuMTdMMjAuNyw3LjA1QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M1pcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlID0gXCJNOSwxMS43NUExLjI1LDEuMjUgMCAwLDAgNy43NSwxM0ExLjI1LDEuMjUgMCAwLDAgOSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTAuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDksMTEuNzVNMTUsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDEzLjc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTYuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDExLjc1TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsMTEuNzEgNCwxMS40MiA0LjA1LDExLjE0QzYuNDEsMTAuMDkgOC4yOCw4LjE2IDkuMjYsNS43N0MxMS4wNyw4LjMzIDE0LjA1LDEwIDE3LjQyLDEwQzE4LjIsMTAgMTguOTUsOS45MSAxOS42Nyw5Ljc0QzE5Ljg4LDEwLjQ1IDIwLDExLjIxIDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VBZ2VudCA9IFwiTTE4LjcyLDE0Ljc2QzE5LjA3LDEzLjkxIDE5LjI2LDEzIDE5LjI2LDEyQzE5LjI2LDExLjI4IDE5LjE1LDEwLjU5IDE4Ljk2LDkuOTVDMTguMzEsMTAuMSAxNy42MywxMC4xOCAxNi45MiwxMC4xOEMxMy44NiwxMC4xOCAxMS4xNSw4LjY3IDkuNSw2LjM0QzguNjEsOC41IDYuOTEsMTAuMjYgNC43NywxMS4yMkM0LjczLDExLjQ3IDQuNzMsMTEuNzQgNC43MywxMkE3LjI3LDcuMjcgMCAwLDAgMTIsMTkuMjdDMTMuMDUsMTkuMjcgMTQuMDYsMTkuMDQgMTQuOTcsMTguNjNDMTUuNTQsMTkuNzIgMTUuOCwyMC4yNiAxNS43OCwyMC4yNkMxNC4xNCwyMC44MSAxMi44NywyMS4wOCAxMiwyMS4wOEM5LjU4LDIxLjA4IDcuMjcsMjAuMTMgNS41NywxOC40MkM0LjUzLDE3LjM4IDMuNzYsMTYuMTEgMy4zMywxNC43M0gyVjEwLjE4SDMuMDlDMy45Myw2LjA0IDcuNiwyLjkyIDEyLDIuOTJDMTQuNCwyLjkyIDE2LjcxLDMuODcgMTguNDIsNS41OEMxOS42OSw2Ljg0IDIwLjU0LDguNDUgMjAuODksMTAuMThIMjJWMTQuNjdIMjJWMTQuNjlMMjIsMTQuNzNIMjEuOTRMMTguMzgsMThMMTMuMDgsMTcuNFYxNS43M0gxNy45MUwxOC43MiwxNC43Nk05LjI3LDExLjc3QzkuNTcsMTEuNzcgOS44NiwxMS44OSAxMC4wNywxMi4xMUMxMC4yOCwxMi4zMiAxMC40LDEyLjYxIDEwLjQsMTIuOTFDMTAuNCwxMy4yMSAxMC4yOCwxMy41IDEwLjA3LDEzLjcxQzkuODYsMTMuOTIgOS41NywxNC4wNCA5LjI3LDE0LjA0QzguNjQsMTQuMDQgOC4xMywxMy41NCA4LjEzLDEyLjkxQzguMTMsMTIuMjggOC42NCwxMS43NyA5LjI3LDExLjc3TTE0LjcyLDExLjc3QzE1LjM1LDExLjc3IDE1Ljg1LDEyLjI4IDE1Ljg1LDEyLjkxQzE1Ljg1LDEzLjU0IDE1LjM1LDE0LjA0IDE0LjcyLDE0LjA0QzE0LjA5LDE0LjA0IDEzLjU4LDEzLjU0IDEzLjU4LDEyLjkxQTEuMTQsMS4xNCAwIDAsMSAxNC43MiwxMS43N1pcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlTWFzayA9IFwiTTIwLjI1IDZDMTguNzkgNiAxNy42MSA3LjE0IDE3LjUgOC41OEwxMi41NSA3LjE2QzEyLjE5IDcuMDUgMTEuODEgNy4wNSAxMS40NSA3LjE2TDYuNSA4LjU4QzYuMzkgNy4xNCA1LjIxIDYgMy43NSA2QzIuMjMgNiAxIDcuMjMgMSA4Ljc1VjEyLjI1QzEgMTMuNzcgMi4yMyAxNSAzLjc1IDE1SDUuNjhDNi44MSAxNy4zNiA5LjIxIDE5IDEyIDE5UzE3LjE5IDE3LjM2IDE4LjMyIDE1SDIwLjI1QzIxLjc3IDE1IDIzIDEzLjc3IDIzIDEyLjI1VjguNzVDMjMgNy4yMyAyMS43NyA2IDIwLjI1IDZNNSAxMy41SDMuNzVDMy4wNiAxMy41IDIuNSAxMi45NCAyLjUgMTIuMjVWOC43NUMyLjUgOC4wNiAzLjA2IDcuNSAzLjc1IDcuNVM1IDguMDYgNSA4Ljc1VjEzLjVNMTUgMTJMMTIuNCAxMS4zQzEyLjEgMTEuMiAxMS44IDExLjIgMTEuNiAxMS4zTDkgMTJWMTFMMTEuMyAxMC4zQzExLjcgMTAuMiAxMi4yIDEwLjIgMTIuNyAxMC4zTDE1IDExVjEyTTIxLjUgMTIuMjVDMjEuNSAxMi45NCAyMC45NCAxMy41IDIwLjI1IDEzLjVIMTlWOC43NUMxOSA4LjA2IDE5LjU2IDcuNSAyMC4yNSA3LjVTMjEuNSA4LjA2IDIxLjUgOC43NVYxMi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlTWFza091dGxpbmUgPSBcIk0xNSAxMkwxMi40IDExLjNDMTIuMSAxMS4yIDExLjggMTEuMiAxMS42IDExLjNMOSAxMlYxMUwxMS4zIDEwLjNDMTEuNyAxMC4yIDEyLjIgMTAuMiAxMi43IDEwLjNMMTUgMTFWMTJNMjAuMjUgNkMxOC43OSA2IDE3LjYxIDcuMTQgMTcuNSA4LjU4TDEyLjU1IDcuMTZDMTIuMzcgNy4xMSAxMi4xOSA3LjA4IDEyIDcuMDhDMTEuODIgNy4wOCAxMS42MyA3LjExIDExLjQ1IDcuMTZMNi41IDguNThDNi4zOSA3LjE0IDUuMjEgNiAzLjc1IDZDMi4yMyA2IDEgNy4yMyAxIDguNzVWMTIuMjVDMSAxMy43NyAyLjIzIDE1IDMuNzUgMTVINS42OEM2LjgxIDE3LjM2IDkuMjEgMTkgMTIgMTlTMTcuMTkgMTcuMzYgMTguMzIgMTVIMjAuMjVDMjEuNzcgMTUgMjMgMTMuNzcgMjMgMTIuMjVWOC43NUMyMyA3LjIzIDIxLjc3IDYgMjAuMjUgNk01IDEzLjVIMy43NUMzLjA2IDEzLjUgMi41IDEyLjk0IDIuNSAxMi4yNVY4Ljc1QzIuNSA4LjA2IDMuMDYgNy41IDMuNzUgNy41UzUgOC4wNiA1IDguNzVWMTMuNU0xNyAxMkMxNyAxNC43NiAxNC43NiAxNyAxMiAxN1M3IDE0Ljc2IDcgMTJMNyAxMC41TDEyIDkuMDhIMTJMMTcgMTAuNVYxMk0yMS41IDEyLjI1QzIxLjUgMTIuOTQgMjAuOTQgMTMuNSAyMC4yNSAxMy41SDE5VjguNzVDMTkgOC4wNiAxOS41NiA3LjUgMjAuMjUgNy41UzIxLjUgOC4wNiAyMS41IDguNzVWMTIuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZU91dGxpbmUgPSBcIk0xMC4yNSwxM0ExLjI1LDEuMjUgMCAwLDEgOSwxNC4yNUExLjI1LDEuMjUgMCAwLDEgNy43NSwxM0ExLjI1LDEuMjUgMCAwLDEgOSwxMS43NUExLjI1LDEuMjUgMCAwLDEgMTAuMjUsMTNNMTUsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDEzLjc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTYuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDExLjc1TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0xMC42Niw0LjEyQzEyLjA2LDYuNDQgMTQuNiw4IDE3LjUsOEMxNy45Niw4IDE4LjQxLDcuOTUgMTguODQsNy44OEMxNy40NCw1LjU2IDE0LjksNCAxMiw0QzExLjU0LDQgMTEuMDksNC4wNSAxMC42Niw0LjEyTTQuNDIsOS40N0M2LjEzLDguNSA3LjQ1LDYuOTIgOC4wOCw1LjAzQzYuMzcsNiA1LjA1LDcuNTggNC40Miw5LjQ3TTIwLDEyQzIwLDExLjIyIDE5Ljg4LDEwLjQ3IDE5LjY3LDkuNzZDMTguOTcsOS45MSAxOC4yNSwxMCAxNy41LDEwQzE0LjM3LDEwIDExLjU4LDguNTYgOS43NCw2LjMxQzguNjksOC44NyA2LjYsMTAuODggNCwxMS44NkM0LDExLjkgNCwxMS45NSA0LDEyQzQsMTYuNDEgNy41OSwyMCAxMiwyMEMxNi40MSwyMCAyMCwxNi40MSAyMCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlUHJvZmlsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDguMzlDMTMuNTcsOS40IDE1LjQyLDEwIDE3LjQyLDEwQzE4LjIsMTAgMTguOTUsOS45MSAxOS42Nyw5Ljc0QzE5Ljg4LDEwLjQ1IDIwLDExLjIxIDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwQzksMjAgNi4zOSwxOC4zNCA1LDE1Ljg5TDYuNzUsMTRWMTNBMS4yNSwxLjI1IDAgMCwxIDgsMTEuNzVBMS4yNSwxLjI1IDAgMCwxIDkuMjUsMTNWMTRIMTJNMTYsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDE0Ljc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNiwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE2LDExLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VQcm9maWxlV29tYW4gPSBcIk0xNy4yNSAxM0MxNy4yNSAxMy42OSAxNi42OSAxNC4yNSAxNiAxNC4yNVMxNC43NSAxMy42OSAxNC43NSAxMyAxNS4zMSAxMS43NSAxNiAxMS43NSAxNy4yNSAxMi4zMSAxNy4yNSAxM00yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJIMlYxMkMyIDYuNSA2LjUgMiAxMiAyUzIyIDYuNSAyMiAxMk03IDE4QzguNDEgMTkuMjMgMTAgMjAgMTIgMjBDMTYuNDEgMjAgMjAgMTYuNDEgMjAgMTJDMjAgMTEuMjEgMTkuODggMTAuNDUgMTkuNjcgOS43NEMxOC45NSA5LjkxIDE4LjIgMTAgMTcuNDIgMTBDMTUuNDIgMTAgMTMuNTcgOS40IDEyIDguMzlDMTIgOC4zOSAxMC41NCAxMy43NiA4LjAzIDEzQzcuMzcgMTIuOCA3IDEzLjMxIDcgMTRcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlUmVjb2duaXRpb24gPSBcIk05LDExLjc1QTEuMjUsMS4yNSAwIDAsMCA3Ljc1LDEzQTEuMjUsMS4yNSAwIDAsMCA5LDE0LjI1QTEuMjUsMS4yNSAwIDAsMCAxMC4yNSwxM0ExLjI1LDEuMjUgMCAwLDAgOSwxMS43NU0xNSwxMS43NUExLjI1LDEuMjUgMCAwLDAgMTMuNzUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDE0LjI1QTEuMjUsMS4yNSAwIDAsMCAxNi4yNSwxM0ExLjI1LDEuMjUgMCAwLDAgMTUsMTEuNzVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJDMy45NywxMS43MSAzLjk3LDExLjQzIDQsMTEuMTRDNi4zOCwxMC4xIDguMjcsOC4xNyA5LjI2LDUuNzdDMTEuMTMsOC40MiAxNC4xNywxMCAxNy40MiwxMEMxOC4xOCwxMCAxOC45Myw5LjkxIDE5LjY3LDkuNzRDMjAuOTIsMTQgMTguNSwxOC40MyAxNC4yNiwxOS42N0MxMy41LDE5Ljg5IDEyLjc2LDIwIDEyLDIwTTAsMkEyLDIgMCAwLDEgMiwwSDZWMkgyVjZIMFYyTTI0LDIyQTIsMiAwIDAsMSAyMiwyNEgxOFYyMkgyMlYxOEgyNFYyMk0yLDI0QTIsMiAwIDAsMSAwLDIyVjE4SDJWMjJINlYyNEgyTTIyLDBBMiwyIDAgMCwxIDI0LDJWNkgyMlYySDE4VjBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVNoaW1tZXIgPSBcIk0xOC40MSAzLjQxTDE2IDQuNUwxOC40MSA1LjU5TDE5LjUgOEwyMC42IDUuNTlMMjMgNC41TDIwLjYgMy40MUwxOS41IDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU5QzE5Ljk0IDExLjA1IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NiA0IDExLjkxIDQgMTEuODdBMTAgMTAgMCAwIDAgOS43NCA2LjMxQTEwIDEwIDAgMCAwIDE3LjUgMTBBMTAgMTAgMCAwIDAgMTguODMgOS45MUwxNy4zNSA2LjY1TDEyLjYgNC41TDE2LjEzIDIuOUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk05IDExLjc1QTEuMjUgMS4yNSAwIDAgMCA3Ljc1IDEzQTEuMjUgMS4yNSAwIDAgMCA5IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxMC4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxMS43NU0xNSAxMS43NUExLjI1IDEuMjUgMCAwIDAgMTMuNzUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxNi4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgMTUgMTEuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVNoaW1tZXJPdXRsaW5lID0gXCJNMTkuNSAxTDE4LjQxIDMuNDFMMTYgNC41TDE4LjQxIDUuNTlMMTkuNSA4TDIwLjYgNS41OUwyMyA0LjVMMjAuNiAzLjQxTDE5LjUgMU0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJDMjIgMTAuNTMgMjEuNjcgOS4xMyAyMS4xIDcuODdMMTkuODYgMTAuNTdDMTkuOTUgMTEuMDQgMjAgMTEuNSAyMCAxMkMyMCAxNi40MyAxNi40MyAyMCAxMiAyMEM3LjU3IDIwIDQgMTYuNDMgNCAxMkM0IDExLjk1IDQgMTEuOTEgNCAxMS44NkExMCAxMCAwIDAgMCA5Ljc0IDYuMzFDMTEuNjEgOC42MSAxNC40NCAxMCAxNy41IDEwQzE3Ljk0IDEwIDE4LjM5IDkuOTcgMTguODMgOS45MUwxNy45NiA4QzE3LjgxIDggMTcuNjUgOCAxNy41IDhDMTQuNjggOCAxMi4xIDYuNSAxMC42NiA0LjEyQzExLjEgNC4wNSAxMS41NCA0IDEyIDRDMTIuNSA0IDEyLjk2IDQuMDUgMTMuNDIgNC4xM0wxNi4xMyAyLjkxQzE0Ljg3IDIuMzMgMTMuNDcgMiAxMiAyTTguMDkgNUE4IDggMCAwIDEgNC40MSA5LjVDNS4wNCA3LjU3IDYuMzcgNiA4LjA5IDVNOSAxMS43NUExLjI1IDEuMjUgMCAwIDAgNy43NSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxNC4yNUExLjI1IDEuMjUgMCAwIDAgMTAuMjUgMTNBMS4yNSAxLjI1IDAgMCAwIDkgMTEuNzVNMTUgMTEuNzVBMS4yNSAxLjI1IDAgMCAwIDEzLjc1IDEzQTEuMjUgMS4yNSAwIDAgMCAxNSAxNC4yNUExLjI1IDEuMjUgMCAwIDAgMTYuMjUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDExLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VXb21hbiA9IFwiTTEzLjc1IDEzQzEzLjc1IDEyLjMxIDE0LjMxIDExLjc1IDE1IDExLjc1UzE2LjI1IDEyLjMxIDE2LjI1IDEzIDE1LjY5IDE0LjI1IDE1IDE0LjI1IDEzLjc1IDEzLjY5IDEzLjc1IDEzTTIyIDEyVjIySDJWMTJDMiA2LjUgNi41IDIgMTIgMlMyMiA2LjUgMjIgMTJNNCAxMkM0IDE2LjQxIDcuNTkgMjAgMTIgMjBTMjAgMTYuNDEgMjAgMTJDMjAgMTEuMjEgMTkuODggMTAuNDUgMTkuNjcgOS43NEMxOC45NSA5LjkxIDE4LjIgMTAgMTcuNDIgMTBDMTQuMDUgMTAgMTEuMDcgOC4zMyA5LjI2IDUuNzdDOC4yOCA4LjE2IDYuNDEgMTAuMDkgNC4wNSAxMS4xNEM0IDExLjQyIDQgMTEuNzEgNCAxMk05IDE0LjI1QzkuNjkgMTQuMjUgMTAuMjUgMTMuNjkgMTAuMjUgMTNTOS42OSAxMS43NSA5IDExLjc1IDcuNzUgMTIuMzEgNy43NSAxMyA4LjMxIDE0LjI1IDkgMTQuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuT3V0bGluZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlYyMkgyMlYxMkMyMiA2LjUgMTcuNSAyIDEyIDJNMTIgNEMxNC45IDQgMTcuNDQgNS41NiAxOC44NCA3Ljg4QzE4LjQxIDcuOTUgMTcuOTYgOCAxNy41IDhDMTQuNiA4IDEyLjA2IDYuNDQgMTAuNjYgNC4xMkMxMS4wOSA0LjA1IDExLjU0IDQgMTIgNE04LjA4IDUuMDNDNy40NSA2LjkyIDYuMTMgOC41IDQuNDIgOS40N0M1LjA1IDcuNTggNi4zNyA2IDguMDggNS4wM000IDExLjg2QzYuNiAxMC44OCA4LjY5IDguODcgOS43NCA2LjMxQzExLjU4IDguNTYgMTQuMzcgMTAgMTcuNSAxMEMxOC4yNSAxMCAxOC45NyA5LjkxIDE5LjY3IDkuNzZDMTkuODggMTAuNDcgMjAgMTEuMjIgMjAgMTJDMjAgMTYuNDEgMTYuNDEgMjAgMTIgMjBTNCAxNi40MSA0IDEyVjExLjg2TTQgMjBWMThDNC41NyAxOC43NSA1LjI1IDE5LjQzIDYgMjBINE0yMCAyMEgxOEMxOC43NSAxOS40MyAxOS40MyAxOC43NSAyMCAxOFYyME0xMy43NSAxM0MxMy43NSAxMi4zMSAxNC4zMSAxMS43NSAxNSAxMS43NVMxNi4yNSAxMi4zMSAxNi4yNSAxMyAxNS42OSAxNC4yNSAxNSAxNC4yNSAxMy43NSAxMy42OSAxMy43NSAxM003Ljc1IDEzQzcuNzUgMTIuMzEgOC4zMSAxMS43NSA5IDExLjc1UzEwLjI1IDEyLjMxIDEwLjI1IDEzIDkuNjkgMTQuMjUgOSAxNC4yNSA3Ljc1IDEzLjY5IDcuNzUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuU2hpbW1lciA9IFwiTTE5LjUgMUwxOC40MSAzLjQxTDE2IDQuNUwxOC40MSA1LjU5TDE5LjUgOEwyMC42IDUuNTlMMjMgNC41TDIwLjYgMy40MUwxOS41IDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyVjIySDIyVjEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU5QzE5Ljk0IDExLjA1IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NiA0IDExLjkxIDQgMTEuODdBMTAgMTAgMCAwIDAgOS43NCA2LjMxQTEwIDEwIDAgMCAwIDE3LjUgMTBBMTAgMTAgMCAwIDAgMTguODMgOS45MUwxNy4zNSA2LjY1TDEyLjYgNC41TDE2LjEzIDIuOUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk05IDExLjc1QTEuMjUgMS4yNSAwIDAgMCA3Ljc1IDEzQTEuMjUgMS4yNSAwIDAgMCA5IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxMC4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxMS43NU0xNSAxMS43NUExLjI1IDEuMjUgMCAwIDAgMTMuNzUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxNi4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgMTUgMTEuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuU2hpbW1lck91dGxpbmUgPSBcIk0xOS41IDFMMTguNDEgMy40MUwxNiA0LjVMMTguNDEgNS41OUwxOS41IDhMMjAuNiA1LjU5TDIzIDQuNUwyMC42IDMuNDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyVjIySDIyVjEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU3QzE5Ljk1IDExLjA0IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NSA0IDExLjkxIDQgMTEuODZDNi42MSAxMC44OSA4LjY5IDguODggOS43NCA2LjMxQzExLjYxIDguNjEgMTQuNDQgMTAgMTcuNSAxMEMxNy45NCAxMCAxOC4zOSA5Ljk3IDE4LjgzIDkuOTFMMTcuOTYgOEMxNy44MSA4IDE3LjY1IDggMTcuNSA4QzE0LjY4IDggMTIuMSA2LjUgMTAuNjYgNC4xMkMxMS4xIDQuMDUgMTEuNTQgNCAxMiA0QzEyLjUgNCAxMi45NiA0LjA1IDEzLjQyIDQuMTNMMTYuMTMgMi45MUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk04LjA5IDVDNy40NiA2LjkxIDYuMTUgOC41IDQuNDEgOS41QzUuMDQgNy41NyA2LjM3IDYgOC4wOSA1TTkgMTEuNzVDOC4zMSAxMS43NSA3Ljc1IDEyLjMxIDcuNzUgMTNDNy43NSAxMy42OSA4LjMxIDE0LjI1IDkgMTQuMjVDOS42OSAxNC4yNSAxMC4yNSAxMy42OSAxMC4yNSAxM0MxMC4yNSAxMi4zMSA5LjY5IDExLjc1IDkgMTEuNzVNMTUgMTEuNzVDMTQuMzEgMTEuNzUgMTMuNzUgMTIuMzEgMTMuNzUgMTNDMTMuNzUgMTMuNjkgMTQuMzEgMTQuMjUgMTUgMTQuMjVDMTUuNjkgMTQuMjUgMTYuMjUgMTMuNjkgMTYuMjUgMTNDMTYuMjUgMTIuMzEgMTUuNjkgMTEuNzUgMTUgMTEuNzVNNCAxNy45N0M0LjU4IDE4Ljc0IDUuMjYgMTkuNDIgNi4wMyAyMEg0TTIwIDE3Ljk3VjIwSDE3Ljk3QzE4Ljc0IDE5LjQyIDE5LjQyIDE4Ljc0IDIwIDE3Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2Vib29rID0gXCJNMTIgMi4wNEM2LjUgMi4wNCAyIDYuNTMgMiAxMi4wNkMyIDE3LjA2IDUuNjYgMjEuMjEgMTAuNDQgMjEuOTZWMTQuOTZINy45VjEyLjA2SDEwLjQ0VjkuODVDMTAuNDQgNy4zNCAxMS45MyA1Ljk2IDE0LjIyIDUuOTZDMTUuMzEgNS45NiAxNi40NSA2LjE1IDE2LjQ1IDYuMTVWOC42MkgxNS4xOUMxMy45NSA4LjYyIDEzLjU2IDkuMzkgMTMuNTYgMTAuMThWMTIuMDZIMTYuMzRMMTUuODkgMTQuOTZIMTMuNTZWMjEuOTZBMTAgMTAgMCAwIDAgMjIgMTIuMDZDMjIgNi41MyAxNy41IDIuMDQgMTIgMi4wNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlYm9va0dhbWluZyA9IFwiTTkuNSAxNC41VjkuNUgyMVYyMUgxNS41VjE0LjVIOS41TTMgM0gyMUwyMSA4LjVIOC41VjE1LjVIMTQuNVYyMUgzVjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZWJvb2tNZXNzZW5nZXIgPSBcIk0xMiwyQzYuMzYsMiAyLDYuMTMgMiwxMS43QzIsMTQuNjEgMy4xOSwxNy4xNCA1LjE0LDE4Ljg3QzUuMywxOSA1LjQsMTkuMjIgNS40MSwxOS40NEw1LjQ2LDIxLjIyQzUuNSwyMS43OSA2LjA3LDIyLjE2IDYuNTksMjEuOTNMOC41NywyMS4wNkM4Ljc0LDIxIDguOTMsMjAuOTcgOS4xLDIxQzEwLDIxLjI3IDExLDIxLjQgMTIsMjEuNEMxNy42NCwyMS40IDIyLDE3LjI3IDIyLDExLjdDMjIsNi4xMyAxNy42NCwyIDEyLDJNMTgsOS40NkwxNS4wNywxNC4xM0MxNC42LDE0Ljg2IDEzLjYsMTUuMDUgMTIuOSwxNC41TDEwLjU2LDEyLjc3QzEwLjM1LDEyLjYxIDEwLjA1LDEyLjYxIDkuODQsMTIuNzdMNi42OCwxNS4xN0M2LjI2LDE1LjUgNS43MSwxNSA2LDE0LjU0TDguOTMsOS44N0M5LjQsOS4xNCAxMC40LDguOTUgMTEuMSw5LjQ3TDEzLjQ0LDExLjIzQzEzLjY2LDExLjM5IDEzLjk1LDExLjM5IDE0LjE2LDExLjIzTDE3LjMyLDguODNDMTcuNzQsOC41IDE4LjI5LDkgMTgsOS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlYm9va1dvcmtwbGFjZSA9IFwiTTE5LjY5LDE2LjEyQzE5LjQyLDE2LjQzIDE4Ljk1LDE2LjkyIDE4LjE5LDE2LjkyQzE3LjEzLDE2LjkyIDE2Ljc4LDE2LjE1IDE2LjQ2LDE1LjM0TDE0Ljg2LDExLjQxTDEzLjI2LDE1LjM0QzEzLDE2IDEyLjcsMTYuOTIgMTEuNTMsMTYuOTJDMTAuMzYsMTYuOTIgMTAuMDcsMTYgOS43OSwxNS4zNEw3LjExLDguNzJIOS4zN0wxMS41MywxNC4xN0wxMy4xNCwxMC4yQzEzLjM5LDkuNTcgMTMuNjksOC42MiAxNC44Niw4LjYyQzE2LDguNjIgMTYuMzIsOS41NyAxNi41OCwxMC4yTDE4LjMzLDE0LjVDMTkuMjIsMTMuMTQgMTkuNiwxMS41IDE5LjM4LDkuODlDMTkuMTYsOC4yOCAxOC4zNyw2LjggMTcuMTQsNS43M0MxNS45Miw0LjY2IDE0LjM0LDQuMDYgMTIuNzIsNC4wNkMxMS4wMyw0LjA1IDkuMzksNC41OCA4LDUuNTZDNi42Niw2LjU1IDUuNjQsNy45NCA1LjEyLDkuNTRDNC42LDExLjE0IDQuNiwxMi44NyA1LjEyLDE0LjQ3QzUuNjQsMTYuMDcgNi42NiwxNy40NiA4LjAzLDE4LjQ0QzkuNCwxOS40MyAxMS4wNCwxOS45NSAxMi43MiwxOS45NEMxMy40NSwxOS45NCAxNC4xNywxOS44NCAxNC44NywxOS42NFYyMS43NUMxNC4xNiwyMS45MSAxMy40NCwyMiAxMi43MiwyMkMxMC42MSwyMiA4LjU0LDIxLjM0IDYuODIsMjAuMUM1LjEsMTguODYgMy44MiwxNy4xMSAzLjE3LDE1LjFDMi41LDEzLjA5IDIuNSwxMC45MiAzLjE2LDguOUMzLjgyLDYuODkgNS4xLDUuMTQgNi44MiwzLjlDOC41MywyLjY2IDEwLjYsMiAxMi43MiwyQzE3LjU2LDIgMjEuNSw1Ljk0IDIxLjUsMTAuNzlDMjEuNSwxMi43MSAyMC44NiwxNC41OSAxOS42OSwxNi4xMlYxNi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWN0b3J5ID0gXCJNNCwxOFYyMEg4VjE4SDRNNCwxNFYxNkgxNFYxNEg0TTEwLDE4VjIwSDE0VjE4SDEwTTE2LDE0VjE2SDIwVjE0SDE2TTE2LDE4VjIwSDIwVjE4SDE2TTIsMjJWOEw3LDEyVjhMMTIsMTJWOEwxNywxMkwxOCwySDIxTDIyLDEyVjIySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFtaWx5VHJlZSA9IFwiTTEyIDFBMi41IDIuNSAwIDAgMCA5LjUgMy41QTIuNSAyLjUgMCAwIDAgMTEgNS43OVY3SDdBMiAyIDAgMCAwIDUgOVY5LjcxQTIuNSAyLjUgMCAwIDAgMy41IDEyQTIuNSAyLjUgMCAwIDAgNSAxNC4yOVYxNUg0QTIgMiAwIDAgMCAyIDE3VjE4LjIxQTIuNSAyLjUgMCAwIDAgLjUgMjAuNUEyLjUgMi41IDAgMCAwIDMgMjNBMi41IDIuNSAwIDAgMCA1LjUgMjAuNUEyLjUgMi41IDAgMCAwIDQgMTguMjFWMTdIOFYxOC4yMUEyLjUgMi41IDAgMCAwIDYuNSAyMC41QTIuNSAyLjUgMCAwIDAgOSAyM0EyLjUgMi41IDAgMCAwIDExLjUgMjAuNUEyLjUgMi41IDAgMCAwIDEwIDE4LjIxVjE3QTIgMiAwIDAgMCA4IDE1SDdWMTQuMjlBMi41IDIuNSAwIDAgMCA4LjUgMTJBMi41IDIuNSAwIDAgMCA3IDkuNzFWOUgxN1Y5LjcxQTIuNSAyLjUgMCAwIDAgMTUuNSAxMkEyLjUgMi41IDAgMCAwIDE3IDE0LjI5VjE1SDE2QTIgMiAwIDAgMCAxNCAxN1YxOC4yMUEyLjUgMi41IDAgMCAwIDEyLjUgMjAuNUEyLjUgMi41IDAgMCAwIDE1IDIzQTIuNSAyLjUgMCAwIDAgMTcuNSAyMC41QTIuNSAyLjUgMCAwIDAgMTYgMTguMjFWMTdIMjBWMTguMjFBMi41IDIuNSAwIDAgMCAxOC41IDIwLjVBMi41IDIuNSAwIDAgMCAyMSAyM0EyLjUgMi41IDAgMCAwIDIzLjUgMjAuNUEyLjUgMi41IDAgMCAwIDIyIDE4LjIxVjE3QTIgMiAwIDAgMCAyMCAxNUgxOVYxNC4yOUEyLjUgMi41IDAgMCAwIDIwLjUgMTJBMi41IDIuNSAwIDAgMCAxOSA5LjcxVjlBMiAyIDAgMCAwIDE3IDdIMTNWNS43OUEyLjUgMi41IDAgMCAwIDE0LjUgMy41QTIuNSAyLjUgMCAwIDAgMTIgMU0xMiAyLjVBMSAxIDAgMCAxIDEzIDMuNUExIDEgMCAwIDEgMTIgNC41QTEgMSAwIDAgMSAxMSAzLjVBMSAxIDAgMCAxIDEyIDIuNU02IDExQTEgMSAwIDAgMSA3IDEyQTEgMSAwIDAgMSA2IDEzQTEgMSAwIDAgMSA1IDEyQTEgMSAwIDAgMSA2IDExTTE4IDExQTEgMSAwIDAgMSAxOSAxMkExIDEgMCAwIDEgMTggMTNBMSAxIDAgMCAxIDE3IDEyQTEgMSAwIDAgMSAxOCAxMU0zIDE5LjVBMSAxIDAgMCAxIDQgMjAuNUExIDEgMCAwIDEgMyAyMS41QTEgMSAwIDAgMSAyIDIwLjVBMSAxIDAgMCAxIDMgMTkuNU05IDE5LjVBMSAxIDAgMCAxIDEwIDIwLjVBMSAxIDAgMCAxIDkgMjEuNUExIDEgMCAwIDEgOCAyMC41QTEgMSAwIDAgMSA5IDE5LjVNMTUgMTkuNUExIDEgMCAwIDEgMTYgMjAuNUExIDEgMCAwIDEgMTUgMjEuNUExIDEgMCAwIDEgMTQgMjAuNUExIDEgMCAwIDEgMTUgMTkuNU0yMSAxOS41QTEgMSAwIDAgMSAyMiAyMC41QTEgMSAwIDAgMSAyMSAyMS41QTEgMSAwIDAgMSAyMCAyMC41QTEgMSAwIDAgMSAyMSAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhbiA9IFwiTTEyLDExQTEsMSAwIDAsMCAxMSwxMkExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxMiwxMU0xMi41LDJDMTcsMiAxNy4xMSw1LjU3IDE0Ljc1LDYuNzVDMTMuNzYsNy4yNCAxMy4zMiw4LjI5IDEzLjEzLDkuMjJDMTMuNjEsOS40MiAxNC4wMyw5LjczIDE0LjM1LDEwLjEzQzE4LjA1LDguMTMgMjIuMDMsOC45MiAyMi4wMywxMi41QzIyLjAzLDE3IDE4LjQ2LDE3LjEgMTcuMjgsMTQuNzNDMTYuNzgsMTMuNzQgMTUuNzIsMTMuMyAxNC43OSwxMy4xMUMxNC41OSwxMy41OSAxNC4yOCwxNCAxMy44OCwxNC4zNEMxNS44NywxOC4wMyAxNS4wOCwyMiAxMS41LDIyQzcsMjIgNi45MSwxOC40MiA5LjI3LDE3LjI0QzEwLjI1LDE2Ljc1IDEwLjY5LDE1LjcxIDEwLjg5LDE0Ljc5QzEwLjQsMTQuNTkgOS45NywxNC4yNyA5LjY1LDEzLjg3QzUuOTYsMTUuODUgMiwxNS4wNyAyLDExLjVDMiw3IDUuNTYsNi44OSA2Ljc0LDkuMjZDNy4yNCwxMC4yNSA4LjI5LDEwLjY4IDkuMjIsMTAuODdDOS40MSwxMC4zOSA5LjczLDkuOTcgMTAuMTQsOS42NUM4LjE1LDUuOTYgOC45NCwyIDEyLjUsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5BbGVydCA9IFwiTTEwIDExQzkuNDMgMTEgOSAxMS40NSA5IDEyUzkuNDMgMTMgMTAgMTNDMTAuNTQgMTMgMTEgMTIuNTUgMTEgMTJTMTAuNTQgMTEgMTAgMTFNMTAuNSAyQzE1IDIgMTUuMDkgNS41NyAxMi43MyA2Ljc1QzExLjc0IDcuMjQgMTEuMyA4LjI5IDExLjExIDkuMjJDMTEuNTkgOS40MiAxMiA5LjczIDEyLjMzIDEwLjEzQzE2LjAzIDguMTMgMjAgOC45MiAyMCAxMi41QzIwIDE3IDE2LjQzIDE3LjEgMTUuMjYgMTQuNzNDMTQuNzYgMTMuNzQgMTMuNyAxMy4zIDEyLjc3IDEzLjExQzEyLjU3IDEzLjU5IDEyLjI2IDE0IDExLjg2IDE0LjM0QzEzLjg1IDE4LjAzIDEzLjA2IDIyIDkuNSAyMkM1IDIyIDQuOSAxOC40MiA3LjI2IDE3LjI0QzguMjQgMTYuNzUgOC42OCAxNS43MSA4Ljg4IDE0Ljc5QzguMzkgMTQuNTkgNy45NiAxNC4yNyA3LjY0IDEzLjg3QzMuOTUgMTUuODUgMCAxNS4wNyAwIDExLjVDMCA3IDMuNTYgNi44OSA0LjczIDkuMjZDNS4yMyAxMC4yNSA2LjI4IDEwLjY4IDcuMjEgMTAuODdDNy40IDEwLjM5IDcuNzIgOS45NyA4LjEzIDkuNjVDNi4xNCA1Ljk2IDYuOTMgMiAxMC41IDJNMjIgMTNWN0gyNFYxM0gyMk0yMiAxN1YxNUgyNFYxN0gyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5BdXRvID0gXCJNMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMk0xMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMkMxMyAxMi41NSAxMi41NCAxMyAxMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMkMxMSAxMS40NSAxMS40MyAxMSAxMiAxMU0xOCAxNUMxNi44OSAxNSAxNiAxNS45IDE2IDE3VjIzSDE4VjIxSDIwVjIzSDIyVjE3QzIyIDE1LjkgMjEuMSAxNSAyMCAxNU0xOCAxN0gyMFYxOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5DaGV2cm9uRG93biA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xOSAxOS4xN0wyMi4xNyAxNkwyMy41OSAxNy40MUwxOSAyMkwxNC40MSAxNy40MUwxNS44MyAxNkwxOSAxOS4xN1wiO1xyXG5leHBvcnQgdmFyIG1kaUZhbkNoZXZyb25VcCA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xOSAxNy44M0wxNS44MyAyMUwxNC40MSAxOS41OUwxOSAxNUwyMy41OSAxOS41OUwyMi4xNyAyMUwxOSAxNy44M1wiO1xyXG5leHBvcnQgdmFyIG1kaUZhbk1pbnVzID0gXCJNMTMgMTlDMTMgMTcuNTkgMTMuNSAxNi4zIDE0LjMgMTUuMjhDMTQuMTcgMTQuOTcgMTQuMDMgMTQuNjUgMTMuODYgMTQuMzRDMTQuMjYgMTQgMTQuNTcgMTMuNTkgMTQuNzcgMTMuMTFDMTUuMjYgMTMuMjEgMTUuNzggMTMuMzkgMTYuMjUgMTMuNjdDMTcuMDcgMTMuMjUgMTggMTMgMTkgMTNDMjAuMDUgMTMgMjEuMDMgMTMuMjcgMjEuODkgMTMuNzRDMjEuOTUgMTMuMzcgMjIgMTIuOTYgMjIgMTIuNUMyMiA4LjkyIDE4LjAzIDguMTMgMTQuMzMgMTAuMTNDMTQgOS43MyAxMy41OSA5LjQyIDEzLjExIDkuMjJDMTMuMyA4LjI5IDEzLjc0IDcuMjQgMTQuNzMgNi43NUMxNy4wOSA1LjU3IDE3IDIgMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5TTEyIDEzQzExLjQzIDEzIDExIDEyLjU1IDExIDEyUzExLjQzIDExIDEyIDExQzEyLjU0IDExIDEzIDExLjQ1IDEzIDEyUzEyLjU0IDEzIDEyIDEzTTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhbk9mZiA9IFwiTTEyLjUsMkM5LjY0LDIgOC41Nyw0LjU1IDkuMjksNy40N0wxNSwxMy4xNkMxNS44NywxMy4zNyAxNi44MSwxMy44MSAxNy4yOCwxNC43M0MxOC40NiwxNy4xIDIyLjAzLDE3IDIyLjAzLDEyLjVDMjIuMDMsOC45MiAxOC4wNSw4LjEzIDE0LjM1LDEwLjEzQzE0LjAzLDkuNzMgMTMuNjEsOS40MiAxMy4xMyw5LjIyQzEzLjMyLDguMjkgMTMuNzYsNy4yNCAxNC43NSw2Ljc1QzE3LjExLDUuNTcgMTcsMiAxMi41LDJNMy4yOCw0TDIsNS4yN0w0LjQ3LDcuNzNDMy4yMiw3Ljc0IDIsOC44NyAyLDExLjVDMiwxNS4wNyA1Ljk2LDE1Ljg1IDkuNjUsMTMuODdDOS45NywxNC4yNyAxMC40LDE0LjU5IDEwLjg5LDE0Ljc5QzEwLjY5LDE1LjcxIDEwLjI1LDE2Ljc1IDkuMjcsMTcuMjRDNi45MSwxOC40MiA3LDIyIDExLjUsMjJDMTMuOCwyMiAxNC45NCwyMC4zNiAxNC45NCwxOC4yMUwxOC43MywyMkwyMCwyMC43MkwzLjI4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFuUGx1cyA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5SZW1vdmUgPSBcIk0xMyAxOUMxMyAxNy41OSAxMy41IDE2LjMgMTQuMyAxNS4yOEMxNC4xNyAxNC45NyAxNC4wMyAxNC42NSAxMy44NiAxNC4zNEMxNC4yNiAxNCAxNC41NyAxMy41OSAxNC43NyAxMy4xMUMxNS4yNiAxMy4yMSAxNS43OCAxMy4zOSAxNi4yNSAxMy42N0MxNy4wNyAxMy4yNSAxOCAxMyAxOSAxM0MyMC4wNSAxMyAyMS4wMyAxMy4yNyAyMS44OSAxMy43NEMyMS45NSAxMy4zNyAyMiAxMi45NiAyMiAxMi41QzIyIDguOTIgMTguMDMgOC4xMyAxNC4zMyAxMC4xM0MxNCA5LjczIDEzLjU5IDkuNDIgMTMuMTEgOS4yMkMxMy4zIDguMjkgMTMuNzQgNy4yNCAxNC43MyA2Ljc1QzE3LjA5IDUuNTcgMTcgMiAxMi41IDJDOC45MyAyIDguMTQgNS45NiAxMC4xMyA5LjY1QzkuNzIgOS45NyA5LjQgMTAuMzkgOS4yMSAxMC44N0M4LjI4IDEwLjY4IDcuMjMgMTAuMjUgNi43MyA5LjI2QzUuNTYgNi44OSAyIDcgMiAxMS41QzIgMTUuMDcgNS45NSAxNS44NSA5LjY0IDEzLjg3QzkuOTYgMTQuMjcgMTAuMzkgMTQuNTkgMTAuODggMTQuNzlDMTAuNjggMTUuNzEgMTAuMjQgMTYuNzUgOS4yNiAxNy4yNEM2LjkgMTguNDIgNyAyMiAxMS41IDIyQzEyLjMxIDIyIDEzIDIxLjc4IDEzLjUgMjEuNDFDMTMuMTkgMjAuNjcgMTMgMTkuODYgMTMgMTlNMTIgMTNDMTEuNDMgMTMgMTEgMTIuNTUgMTEgMTJTMTEuNDMgMTEgMTIgMTFDMTIuNTQgMTEgMTMgMTEuNDUgMTMgMTJTMTIuNTQgMTMgMTIgMTNNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFuU3BlZWQxID0gXCJNMTMgMTlDMTMgMTcuNTkgMTMuNSAxNi4zIDE0LjMgMTUuMjhDMTQuMTcgMTQuOTcgMTQuMDMgMTQuNjUgMTMuODYgMTQuMzRDMTQuMjYgMTQgMTQuNTcgMTMuNTkgMTQuNzcgMTMuMTFDMTUuMjYgMTMuMjEgMTUuNzggMTMuMzkgMTYuMjUgMTMuNjdDMTcuMDcgMTMuMjUgMTggMTMgMTkgMTNDMjAuMDUgMTMgMjEuMDMgMTMuMjcgMjEuODkgMTMuNzRDMjEuOTUgMTMuMzcgMjIgMTIuOTYgMjIgMTIuNUMyMiA4LjkyIDE4LjAzIDguMTMgMTQuMzMgMTAuMTNDMTQgOS43MyAxMy41OSA5LjQyIDEzLjExIDkuMjJDMTMuMyA4LjI5IDEzLjc0IDcuMjQgMTQuNzMgNi43NUMxNy4wOSA1LjU3IDE3IDIgMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5TTEyIDEzQzExLjQzIDEzIDExIDEyLjU1IDExIDEyUzExLjQzIDExIDEyIDExQzEyLjU0IDExIDEzIDExLjQ1IDEzIDEyUzEyLjU0IDEzIDEyIDEzTTE3IDE1VjE3SDE4VjIzSDIwVjE1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhblNwZWVkMiA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xNiAxNVYxN0gxOVYxOEgxOEMxNi45IDE4IDE2IDE4LjkgMTYgMjBWMjNIMjFWMjFIMThWMjBIMTlDMjAuMTEgMjAgMjEgMTkuMTEgMjEgMThWMTdDMjEgMTUuOSAyMC4xMSAxNSAxOSAxNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5TcGVlZDMgPSBcIk0xMyAxOUMxMyAxNy41OSAxMy41IDE2LjMgMTQuMyAxNS4yOEMxNC4xNyAxNC45NyAxNC4wMyAxNC42NSAxMy44NiAxNC4zNEMxNC4yNiAxNCAxNC41NyAxMy41OSAxNC43NyAxMy4xMUMxNS4yNiAxMy4yMSAxNS43OCAxMy4zOSAxNi4yNSAxMy42N0MxNy4wNyAxMy4yNSAxOCAxMyAxOSAxM0MyMC4wNSAxMyAyMS4wMyAxMy4yNyAyMS44OSAxMy43NEMyMS45NSAxMy4zNyAyMiAxMi45NiAyMiAxMi41QzIyIDguOTIgMTguMDMgOC4xMyAxNC4zMyAxMC4xM0MxNCA5LjczIDEzLjU5IDkuNDIgMTMuMTEgOS4yMkMxMy4zIDguMjkgMTMuNzQgNy4yNCAxNC43MyA2Ljc1QzE3LjA5IDUuNTcgMTcgMiAxMi41IDJDOC45MyAyIDguMTQgNS45NiAxMC4xMyA5LjY1QzkuNzIgOS45NyA5LjQgMTAuMzkgOS4yMSAxMC44N0M4LjI4IDEwLjY4IDcuMjMgMTAuMjUgNi43MyA5LjI2QzUuNTYgNi44OSAyIDcgMiAxMS41QzIgMTUuMDcgNS45NSAxNS44NSA5LjY0IDEzLjg3QzkuOTYgMTQuMjcgMTAuMzkgMTQuNTkgMTAuODggMTQuNzlDMTAuNjggMTUuNzEgMTAuMjQgMTYuNzUgOS4yNiAxNy4yNEM2LjkgMTguNDIgNyAyMiAxMS41IDIyQzEyLjMxIDIyIDEzIDIxLjc4IDEzLjUgMjEuNDFDMTMuMTkgMjAuNjcgMTMgMTkuODYgMTMgMTlNMTIgMTNDMTEuNDMgMTMgMTEgMTIuNTUgMTEgMTJTMTEuNDMgMTEgMTIgMTFDMTIuNTQgMTEgMTMgMTEuNDUgMTMgMTJTMTIuNTQgMTMgMTIgMTNNMjEgMjFWMjAuNUMyMSAxOS42NyAyMC4zMyAxOSAxOS41IDE5QzIwLjMzIDE5IDIxIDE4LjMzIDIxIDE3LjVWMTdDMjEgMTUuODkgMjAuMSAxNSAxOSAxNUgxNlYxN0gxOVYxOEgxN1YyMEgxOVYyMUgxNlYyM0gxOUMyMC4xMSAyMyAyMSAyMi4xMSAyMSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkID0gXCJNMTMsNlYxOEwyMS41LDEyTTQsMThMMTIuNSwxMkw0LDZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQxMCA9IFwiTTEwLDEyVjIySDhWMTRINlYxMkgxME0xOCwxNFYyMEMxOCwyMS4xMSAxNy4xMSwyMiAxNiwyMkgxNEEyLDIgMCAwLDEgMTIsMjBWMTRBMiwyIDAgMCwxIDE0LDEySDE2QzE3LjExLDEyIDE4LDEyLjkgMTgsMTRNMTQsMTRWMjBIMTZWMTRIMTRNMTEuNSwzQzE0LjE1LDMgMTYuNTUsNCAxOC40LDUuNkwyMSwzVjEwSDE0TDE2LjYyLDcuMzhDMTUuMjMsNi4yMiAxMy40Niw1LjUgMTEuNSw1LjVDNy45Niw1LjUgNC45NSw3LjgxIDMuOSwxMUwxLjUzLDEwLjIyQzIuOTIsNi4wMyA2Ljg1LDMgMTEuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkMzAgPSBcIk0xMS41LDNDNi44NSwzIDIuOTIsNi4wMyAxLjUzLDEwLjIyTDMuOSwxMUM0Ljk1LDcuODEgNy45Niw1LjUgMTEuNSw1LjVDMTMuNDYsNS41IDE1LjIzLDYuMjIgMTYuNjIsNy4zOEwxNCwxMEgyMVYzTDE4LjQsNS42QzE2LjU1LDQgMTQuMTUsMyAxMS41LDNNMTksMTRWMjBDMTksMjEuMTEgMTguMTEsMjIgMTcsMjJIMTVBMiwyIDAgMCwxIDEzLDIwVjE0QTIsMiAwIDAsMSAxNSwxMkgxN0MxOC4xMSwxMiAxOSwxMi45IDE5LDE0TTE1LDE0VjIwSDE3VjE0SDE1TTExLDIwQzExLDIxLjExIDEwLjEsMjIgOSwyMkg1VjIwSDlWMThIN1YxNkg5VjE0SDVWMTJIOUEyLDIgMCAwLDEgMTEsMTRWMTUuNUExLjUsMS41IDAgMCwxIDkuNSwxN0ExLjUsMS41IDAgMCwxIDExLDE4LjVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQ1ID0gXCJNMTEuNSAzQzE0LjE1IDMgMTYuNTUgNCAxOC40IDUuNkwyMSAzVjEwSDE0TDE2LjYyIDcuMzhDMTUuMjMgNi4yMiAxMy40NiA1LjUgMTEuNSA1LjVDNy45NiA1LjUgNC45NSA3LjgxIDMuOSAxMUwxLjUzIDEwLjIyQzIuOTIgNi4wMyA2Ljg1IDMgMTEuNSAzTTkgMTJIMTVWMTRIMTFWMTZIMTNDMTQuMTEgMTYgMTUgMTYuOSAxNSAxOFYyMEMxNSAyMS4xMSAxNC4xMSAyMiAxMyAyMkg5VjIwSDEzVjE4SDlWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQ2MCA9IFwiTTExLjUgM0M2LjggMyAyLjkgNiAxLjUgMTAuMkwzLjkgMTFDNC45IDcuOCA4IDUuNSAxMS41IDUuNUMxMy41IDUuNSAxNS4yIDYuMiAxNi42IDcuNEwxNCAxMEgyMVYzTDE4LjQgNS42QzE2LjUgNCAxNC4xIDMgMTEuNSAzTTE5IDE0VjIwQzE5IDIxLjEgMTguMSAyMiAxNyAyMkgxNUMxMy45IDIyIDEzIDIxLjEgMTMgMjBWMTRDMTMgMTIuOSAxMy45IDEyIDE1IDEySDE3QzE4LjEgMTIgMTkgMTIuOSAxOSAxNE0xNSAxNFYyMEgxN1YxNEgxNU03IDEyQzUuOSAxMiA1IDEyLjkgNSAxNFYyMEM1IDIxLjEgNS45IDIyIDcgMjJIOUMxMC4xIDIyIDExIDIxLjEgMTEgMjBWMThDMTEgMTYuOSAxMC4xIDE2IDkgMTZIN1YxNEgxMVYxMkg3TTcgMThIOVYyMEg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkT3V0bGluZSA9IFwiTTE1LDkuOUwxOCwxMkwxNSwxNC4xVjkuOU02LDkuOUw5LDEyTDYsMTQuMVY5LjlNMTMsNlYxOEwyMS41LDEyTDEzLDZNNCw2VjE4TDEyLjUsMTJMNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZheCA9IFwiTTExLDZIMTZWOEgxMVY2TTgsOVYzSDE5VjlBMywzIDAgMCwxIDIyLDEyVjE4SDE5VjIxSDhWMThIN1Y5SDhNMTAsNVY5SDE3VjVIMTBNMTAsMTVWMTlIMTdWMTVIMTBNMTksMTFBMSwxIDAgMCwwIDE4LDEyQTEsMSAwIDAsMCAxOSwxM0ExLDEgMCAwLDAgMjAsMTJBMSwxIDAgMCwwIDE5LDExTTQsOUg1QTEsMSAwIDAsMSA2LDEwVjE3QTEsMSAwIDAsMSA1LDE4SDRBMiwyIDAgMCwxIDIsMTZWMTFBMiwyIDAgMCwxIDQsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGZWF0aGVyID0gXCJNMjIsMkMyMiwyIDE0LjM2LDEuNjMgOC4zNCw5Ljg4QzMuNzIsMTYuMjEgMiwyMiAyLDIyTDMuOTQsMjFDNS4zOCwxOC41IDYuMTMsMTcuNDcgNy41NCwxNkMxMC4wNywxNi43NCAxMi43MSwxNi42NSAxNSwxNEMxMywxMy40NCAxMS40LDEzLjU3IDkuMDQsMTMuODFDMTEuNjksMTIgMTMuNSwxMS42IDE2LDEyTDE3LDEwQzE1LjIsOS42NiAxNCw5LjYzIDEyLjIyLDEwLjA0QzE0LjE5LDguNjUgMTUuNTYsNy44NyAxOCw4TDE5LjIxLDYuMDdDMTcuNjUsNS45NiAxNi43MSw2LjEzIDE0LjkyLDYuNTdDMTYuNTMsNS4xMSAxOCw0LjQ1IDIwLjE0LDQuMzJDMjAuMTQsNC4zMiAyMS4xOSwyLjQzIDIyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVhdHVyZVNlYXJjaCA9IFwiTTIwLDIwQTIsMiAwIDAsMSAxOCwyMkg0QTIsMiAwIDAsMSAyLDIwVjZBMiwyIDAgMCwxIDQsNEg5LjVDOS4yLDQuOCA5LDUuNiA5LDYuNUM5LDEwLjEgMTEuOSwxMyAxNS41LDEzQzE2LjMsMTMgMTcsMTIuOSAxNy42LDEyLjZMMjAsMTVWMjBNMTkuMyw4LjlDMTkuNyw4LjIgMjAsNy40IDIwLDYuNUMyMCw0IDE4LDIgMTUuNSwyQzEzLDIgMTEsNCAxMSw2LjVDMTEsOSAxMywxMSAxNS41LDExQzE2LjQsMTEgMTcuMiwxMC43IDE3LjksMTAuM0wyMSwxMy40TDIyLjQsMTJMMTkuMyw4LjlNMTUuNSw5QzE0LjEsOSAxMyw3LjkgMTMsNi41QzEzLDUuMSAxNC4xLDQgMTUuNSw0QzE2LjksNCAxOCw1LjEgMTgsNi41QzE4LDcuOSAxNi45LDkgMTUuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZlYXR1cmVTZWFyY2hPdXRsaW5lID0gXCJNMTUuNSwyQzEzLDIgMTEsNCAxMSw2LjVDMTEsOSAxMywxMSAxNS41LDExQzE2LjQsMTEgMTcuMiwxMC43IDE3LjksMTAuM0wyMSwxMy40TDIyLjQsMTJMMTkuMyw4LjlDMTkuNyw4LjIgMjAsNy40IDIwLDYuNUMyMCw0IDE4LDIgMTUuNSwyTTQsNEEyLDIgMCAwLDAgMiw2VjIwQTIsMiAwIDAsMCA0LDIySDE4QTIsMiAwIDAsMCAyMCwyMFYxNUwxOCwxM1YyMEg0VjZIOS4wM0M5LjA5LDUuMyA5LjI2LDQuNjUgOS41LDRINE0xNS41LDRDMTYuOSw0IDE4LDUuMSAxOCw2LjVDMTgsNy45IDE2LjksOSAxNS41LDlDMTQuMSw5IDEzLDcuOSAxMyw2LjVDMTMsNS4xIDE0LjEsNCAxNS41LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVkb3JhID0gXCJNNC40LDIyQzMuMDcsMjIgMiwyMC45MyAyLDE5LjZWMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkg0LjRNMTQuOSw0LjRDMTIuMyw0LjQgMTAuMiw2LjUgMTAuMiw5LjFWMTEuNkg4LjNDNy42OSwxMS42IDcuMiwxMi4wOSA3LjIsMTIuN0M3LjIsMTMuMzEgNy42OSwxMy44IDguMywxMy44SDkuOEMxMCwxMy44IDEwLjIsMTQgMTAuMiwxNC4yVjE2LjNDMTAuMiwxNy42OCA5LjA4LDE4LjggNy43LDE4LjhDNy41NSwxOC44IDcuNDEsMTguNzkgNy4yNywxOC43NkM3LjE5LDE4Ljc0IDcuMSwxOC43MyA3LDE4LjczQzYuNDEsMTguNzMgNS45MSwxOS4yMyA1LjkxLDE5LjgzQzUuOTEsMjAuMzcgNi4zLDIwLjgxIDYuOCwyMC45MVYyMC45MUM3LjA5LDIwLjk3IDcuMzksMjEgNy43LDIxQzEwLjMsMjEgMTIuNCwxOC45IDEyLjQsMTYuM1YxMy44SDE0LjNDMTQuOTEsMTMuOCAxNS40LDEzLjMxIDE1LjQsMTIuN0ExLjEsMS4xIDAgMCwwIDE0LjMsMTEuNkgxMi44QTAuNCwwLjQgMCAwLDEgMTIuNCwxMS4yVjkuMUEyLjUsMi41IDAgMCwxIDE0LjksNi42QzE1LjA1LDYuNiAxNS4yLDYuNjEgMTUuMzQsNi42NEMxNS40Miw2LjY2IDE1LjUsNi42NyAxNS41OSw2LjY3QzE2LjE5LDYuNjcgMTYuNjksNi4xNyAxNi42OSw1LjU3QzE2LjY5LDUuMDMgMTYuMyw0LjU4IDE1LjgsNC41VjQuNUMxNS41LDQuNDMgMTUuMjEsNC40IDE0LjksNC40TTYuOCwxMi43QzYuOCwxMi41OCA2LjgxLDEyLjQ2IDYuODQsMTIuMzRMNi4zMSwxMS44MUM2LjEsMTEuODcgNS44OSwxMS45NSA1LjcsMTIuMDVMNi45MSwxMy4yNkM2Ljg0LDEzLjA4IDYuOCwxMi45IDYuOCwxMi43TTYuNTQsMTguNUg2LjQ3TDYuNSwxOC41SDYuNTRNNS42MSwxOS44M0M1LjYxLDE5LjYgNS42NywxOS4zOCA1Ljc3LDE5LjE5TDMsMTYuNDJDMywxNi43NiAzLjA1LDE3LjA4IDMuMTMsMTcuNEw1LjYxLDE5Ljg4VjE5LjgzTTUuODYsMjAuNjNDNS43NywyMC41IDUuNzEsMjAuMzcgNS42NywyMC4yMkwzLjI0LDE3Ljc5QzMuNjcsMTkuMDcgNC42MywyMC4xIDUuODYsMjAuNjNNMTUuOCwxMi43QzE1LjgsMTIuODIgMTUuNzksMTIuOTQgMTUuNzYsMTMuMDZMMTYuMjksMTMuNTlDMTYuNSwxMy41MyAxNi43MSwxMy40NSAxNi45LDEzLjM1TDE1LjY5LDEyLjE0QzE1Ljc2LDEyLjMyIDE1LjgsMTIuNSAxNS44LDEyLjdNMTYuMDYsNi44OEwxNi4xMyw2LjkyTDE2LjA4LDYuODhIMTYuMDZNMTcsNS41N0MxNyw1LjggMTYuOTMsNiAxNi44Myw2LjIxTDE5LjYsOUMxOS41OSw4LjY0IDE5LjU1LDguMzIgMTkuNDcsOEwxNyw1LjVWNS41N00xNi43NCw0Ljc3QzE2LjgzLDQuOSAxNi44OSw1LjAzIDE2LjkzLDUuMThMMTkuMzYsNy42MUMxOC45Myw2LjMzIDE3Ljk3LDUuMyAxNi43NCw0Ljc3TTE2LjA3LDEzLjY1TDE1LjY5LDEzLjI3QzE1LjYxLDEzLjQ2IDE1LjUsMTMuNjMgMTUuMzUsMTMuNzhWMTMuNzhDMTUuNiwxMy43NiAxNS44NCwxMy43MSAxNi4wNywxMy42NU0xOC4yMywxMi40MkwxNi42NywxMC44NkMxNi41MywxMSAxNi4zNywxMS4xMyAxNi4yLDExLjI0TDE3Ljc4LDEyLjgyQzE3Ljk0LDEyLjY5IDE4LjA5LDEyLjU2IDE4LjIzLDEyLjQyTTE3LjYyLDEyLjk0TDE2LDExLjM0QzE1LjgyLDExLjQ0IDE1LjYxLDExLjUgMTUuMzksMTEuNTVMMTcuMDksMTMuMjZDMTcuMjcsMTMuMTYgMTcuNDUsMTMuMDUgMTcuNjIsMTIuOTRNMTguNzUsMTEuOEwxNy4xNSwxMC4yQzE3LjA1LDEwLjM5IDE2Ljk0LDEwLjU2IDE2LjgxLDEwLjcxTDE4LjM3LDEyLjI3QzE4LjUsMTIuMTIgMTguNjMsMTEuOTcgMTguNzUsMTEuOE0xOS4xNiwxMS4wOUwxNy4zOSw5LjMyQzE3LjM3LDkuNTYgMTcuMzIsOS43OSAxNy4yMywxMEwxOC44NiwxMS42M0MxOC45NywxMS40NiAxOS4wNywxMS4yOCAxOS4xNiwxMS4wOU0xOS42LDkuMjZMMTYuNzIsNi4zOEMxNi42LDYuNTUgMTYuNDUsNi42OSAxNi4yOCw2Ljc5TDE5LjUsMTBDMTkuNTYsOS43NyAxOS41OSw5LjUgMTkuNiw5LjI2TTE5LjQ2LDEwLjI1TDE3LjA4LDcuODdDMTcuMjcsOC4yMiAxNy4zOSw4LjYyIDE3LjQsOS4wNEwxOS4yNSwxMC44OUMxOS4zMywxMC42OCAxOS40LDEwLjQ3IDE5LjQ2LDEwLjI1TTQuODIsMTIuNThDNC42NiwxMi43MSA0LjUsMTIuODQgNC4zNywxM0w1LjkzLDE0LjU0QzYuMDcsMTQuNCA2LjIzLDE0LjI3IDYuNCwxNC4xNkw0LjgyLDEyLjU4TTUuNSwxMi4xNEM1LjMzLDEyLjI0IDUuMTUsMTIuMzUgNSwxMi40Nkw2LjU4LDE0LjA2QzYuNzgsMTMuOTYgNywxMy44OSA3LjIxLDEzLjg1TDUuNSwxMi4xNE03LjI1LDExLjYyQzcsMTEuNjQgNi43NiwxMS42OSA2LjUzLDExLjc1TDYuOTEsMTIuMTNDNywxMS45NCA3LjExLDExLjc3IDcuMjUsMTEuNjJWMTEuNjJNMy4wOSwxNS4zOEMzLjA0LDE1LjYzIDMsMTUuODggMywxNi4xNEw1Ljg4LDE5QzYsMTguODUgNi4xNSwxOC43MSA2LjMyLDE4LjYxTDMuMDksMTUuMzhNMy43NCwxMy43N0MzLjYzLDEzLjk0IDMuNTMsMTQuMTIgMy40NCwxNC4zMUw1LjIxLDE2LjA4QzUuMjMsMTUuODQgNS4yOCwxNS42MSA1LjM3LDE1LjRMMy43NCwxMy43N00zLjM1LDE0LjVDMy4yNywxNC43MiAzLjIsMTQuOTMgMy4xNCwxNS4xNUw1LjUsMTcuNTNDNS4zMywxNy4xOCA1LjIxLDE2Ljc4IDUuMiwxNi4zNkwzLjM1LDE0LjVNNC4yMywxMy4xM0M0LjEsMTMuMjggMy45NywxMy40MyAzLjg1LDEzLjZMNS40NSwxNS4yQzUuNTUsMTUgNS42NiwxNC44NCA1Ljc5LDE0LjY5TDQuMjMsMTMuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVuY2luZyA9IFwiTTQuNSAxNy40Mkw1LjU4IDE4LjVMMy4yOCAyMC43OEMzIDIxLjA3IDIuNSAyMS4wNyAyLjIyIDIwLjc4UzEuOTMgMjAgMi4yMiAxOS43Mkw0LjUgMTcuNDJNMTguMjkgNS40MkwxOC4yOSA0TDEyIDEwLjI5TDUuNzEgNEw1LjcxIDUuNDJMMTEuMjkgMTFMNy41IDE0LjgxQzYuMzIgMTMuOTcgNC42OCAxNC4wNyAzLjYzIDE1LjEyTDcuODggMTkuMzdDOC45MyAxOC4zMiA5LjAzIDE2LjY4IDguMiAxNS41TDE4LjI5IDUuNDJNMjEuNzggMTkuNzJMMTkuNSAxNy40MkwxOC40MiAxOC41TDIwLjcyIDIwLjc4QzIxIDIxLjA3IDIxLjUgMjEuMDcgMjEuNzggMjAuNzhTMjIuMDcgMjAgMjEuNzggMTkuNzJNMTYuNSAxNC44MUwxMy40MiAxMS43MUwxMi43MSAxMi40MkwxNS44MSAxNS41QzE0Ljk3IDE2LjY4IDE1LjA3IDE4LjMyIDE2LjEyIDE5LjM3TDIwLjM3IDE1LjEyQzE5LjMyIDE0LjA3IDE3LjY4IDEzLjk3IDE2LjUgMTQuODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVycmlzV2hlZWwgPSBcIk0xMiwxOUMxMi44NiwxOSAxMy41OSwxOS41NCAxMy44NywyMC4yOUMxNC40MiwyMC4xNyAxNC45NSwyMCAxNS40NiwxOS43N0wxMy43LDE1LjYyQzEzLjE4LDE1Ljg3IDEyLjYxLDE2IDEyLDE2QzExLjM5LDE2IDEwLjgyLDE1Ljg3IDEwLjMsMTUuNjJMOC41NCwxOS43N0M5LjA1LDIwIDkuNTgsMjAuMTcgMTAuMTMsMjAuMjlDMTAuNDEsMTkuNTQgMTEuMTQsMTkgMTIsMTlNMTguMjUsMTcuNzZDMTgsMTcuNDIgMTcuODEsMTcgMTcuODEsMTYuNUMxNy44MSwxNS40MSAxOC43MSwxNC41IDE5LjgxLDE0LjVMMjAuMTIsMTQuNTNDMjAuMzcsMTMuNzMgMjAuNSwxMi44OCAyMC41LDEyQzIwLjUsMTEuMTIgMjAuMzcsMTAuMjcgMjAuMTIsOS41SDE5LjgxQzE4LjcsOS41IDE3LjgxLDguNjEgMTcuODEsNy41QzE3LjgxLDcgMTcuOTcsNi41OSAxOC4yNSw2LjI0QzE3LjEsNSAxNS41OSw0LjA5IDEzLjg3LDMuNzFDMTMuNTksNC40NiAxMi44Niw1IDEyLDVDMTEuMTQsNSAxMC40MSw0LjQ2IDEwLjEzLDMuNzFDOC40MSw0LjA5IDYuOSw1IDUuNzUsNi4yNEM2LjAzLDYuNTkgNi4yLDcuMDMgNi4yLDcuNUM2LjIsOC42MSA1LjMsOS41IDQuMiw5LjVIMy44OEMzLjYzLDEwLjI4IDMuNSwxMS4xMiAzLjUsMTJDMy41LDEyLjg5IDMuNjQsMTMuNzQgMy44OSwxNC41NUw0LjIsMTQuNUM1LjMxLDE0LjUgNi4yLDE1LjQyIDYuMiwxNi41QzYuMiwxNyA2LjA0LDE3LjQzIDUuNzYsMTcuNzdDNi4wOCwxOC4xMiA2LjQ0LDE4LjQ0IDYuODEsMTguNzNMOC43MSwxNC4yN0M4LjI2LDEzLjYyIDgsMTIuODQgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJDMTYsMTIuODQgMTUuNzQsMTMuNjIgMTUuMjksMTQuMjdMMTcuMTksMTguNzNDMTcuNTcsMTguNDQgMTcuOTIsMTguMTEgMTguMjUsMTcuNzZNMTIsMjNDMTEsMjMgMTAuMTYsMjIuMjYgMTAsMjEuMjlDOS4zNywyMS4xNiA4Ljc1LDIwLjk1IDguMTUsMjAuNjlMNy4xNywyM0g1TDYuNDEsMTkuNjhDNS44OCwxOS4zIDUuMzksMTguODYgNC45NiwxOC4zN0M0LjcyLDE4LjQ3IDQuNDcsMTguNSA0LjIsMTguNUEyLDIgMCAwLDEgMi4yLDE2LjVDMi4yLDE1Ljg4IDIuNSwxNS4zMiAyLjk3LDE0Ljk1QzIuNjYsMTQgMi41LDEzLjAzIDIuNSwxMkMyLjUsMTEgMi42NiwxMCAyLjk2LDkuMDhDMi41LDguNzEgMi4yLDguMTUgMi4yLDcuNUMyLjIsNi40MSAzLjA5LDUuNSA0LjIsNS41QzQuNDYsNS41IDQuNzEsNS41NiA0LjkzLDUuNjVDNi4yNSw0LjE4IDgsMy4xMyAxMCwyLjcxQzEwLjE2LDEuNzQgMTEsMSAxMiwxQzEzLDEgMTMuODQsMS43NCAxNCwyLjcxQzE2LDMuMTMgMTcuNzQsNC4xOCAxOS4wNiw1LjY0QzE5LjI5LDUuNTUgMTkuNTQsNS41IDE5LjgxLDUuNUEyLDIgMCAwLDEgMjEuODEsNy41QzIxLjgxLDguMTQgMjEuNSw4LjcxIDIxLjA0LDkuMDdDMjEuMzQsMTAgMjEuNSwxMSAyMS41LDEyQzIxLjUsMTMgMjEuMzQsMTQgMjEuMDQsMTQuOTNDMjEuNSwxNS4zIDIxLjgxLDE1Ljg3IDIxLjgxLDE2LjVDMjEuODEsMTcuNjIgMjAuOTIsMTguNSAxOS44MSwxOC41QzE5LjU0LDE4LjUgMTkuMjksMTguNDYgMTkuMDUsMTguMzZDMTguNjEsMTguODUgMTguMTIsMTkuMjkgMTcuNTksMTkuNjhMMTksMjNIMTYuODNMMTUuODUsMjAuNjlDMTUuMjUsMjAuOTUgMTQuNjMsMjEuMTYgMTQsMjEuMjlDMTMuODQsMjIuMjYgMTMsMjMgMTIsMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVycnkgPSBcIk02LDZIMThWOS45NkwxMiw4TDYsOS45Nk0zLjk0LDE5SDRDNS42LDE5IDcsMTguMTIgOCwxN0M5LDE4LjEyIDEwLjQsMTkgMTIsMTlDMTMuNiwxOSAxNSwxOC4xMiAxNiwxN0MxNywxOC4xMiAxOC40LDE5IDIwLDE5SDIwLjA1TDIxLjk1LDEyLjMxQzIyLjAzLDEyLjA2IDIyLDExLjc4IDIxLjg5LDExLjU0QzIxLjc2LDExLjMgMjEuNTUsMTEuMTIgMjEuMjksMTEuMDRMMjAsMTAuNjJWNkMyMCw0Ljg5IDE5LjEsNCAxOCw0SDE1VjFIOVY0SDZBMiwyIDAgMCwwIDQsNlYxMC42MkwyLjcxLDExLjA0QzIuNDUsMTEuMTIgMi4yNCwxMS4zIDIuMTEsMTEuNTRDMiwxMS43OCAxLjk3LDEyLjA2IDIuMDUsMTIuMzFNMjAsMjFDMTguNjEsMjEgMTcuMjIsMjAuNTMgMTYsMTkuNjdDMTMuNTYsMjEuMzggMTAuNDQsMjEuMzggOCwxOS42N0M2Ljc4LDIwLjUzIDUuMzksMjEgNCwyMUgyVjIzSDRDNS4zNywyMyA2Ljc0LDIyLjY1IDgsMjJDMTAuNSwyMy4zIDEzLjUsMjMuMyAxNiwyMkMxNy4yNiwyMi42NSAxOC42MiwyMyAyMCwyM0gyMlYyMUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlID0gXCJNMTMsOVYzLjVMMTguNSw5TTYsMkM0Ljg5LDIgNCwyLjg5IDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUFjY291bnQgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTE0LDIwVjE5QzE0LDE3LjY3IDExLjMzLDE3IDEwLDE3QzguNjcsMTcgNiwxNy42NyA2LDE5VjIwSDE0TTEwLDEyQTIsMiAwIDAsMCA4LDE0QTIsMiAwIDAsMCAxMCwxNkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDEwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVBY2NvdW50T3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMyAxM0MxMyAxNC4xIDEyLjEgMTUgMTEgMTVTOSAxNC4xIDkgMTMgOS45IDExIDExIDExIDEzIDExLjkgMTMgMTNNMTUgMThWMTlIN1YxOEM3IDE2LjY3IDkuNjcgMTYgMTEgMTZTMTUgMTYuNjcgMTUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUFsZXJ0ID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk05IDE5SDdWMTdIOU05IDE1SDdWOUg5TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQWxlcnRPdXRsaW5lID0gXCJNMTAgMThIOFYxNkgxMFYxOE0xMCAxNEg4VjhIMTBWMTRNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2FiaW5ldCA9IFwiTTE0LDhIMTBWNkgxNFY4TTIwLDRWMjBDMjAsMjEuMTEgMTkuMTEsMjIgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMTEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMThDMTkuMTEsMiAyMCwyLjkgMjAsNE0xOCwxM0g2VjIwSDE4VjEzTTE4LDRINlYxMUgxOFY0TTE0LDE1SDEwVjE3SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDYWQgPSBcIk02IDJDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWOEwxNCAyTTEzIDMuNUwxOC41IDlIMTNNOS44OCA5LjI1SDExLjEyVjEwLjE5QzExLjgxIDEwLjE4IDEyLjM4IDEwLjc1IDEyLjM4IDExLjQ0VjEzLjVMMTIuMjYgMTMuNjNMMTMuMTUgMTUuMTdDMTMuNDcgMTQuNjcgMTMuNjMgMTQuMDkgMTMuNjIgMTMuNUgxNC44OEMxNC44OCAxNC41NCAxNC41IDE1LjU1IDEzLjgzIDE2LjM1TDE1LjUgMTkuMjVWMjAuNUwxNC40MiAxOS44OEwxMi44NyAxNy4xOUMxMi4xNyAxNy42NSAxMS4zNCAxNy44OSAxMC41IDE3Ljg5QzkuNjYgMTcuODkgOC44NCAxNy42NSA4LjEzIDE3LjE5TDYuNTggMTkuODhMNS41IDIwLjVWMTkuMjVMOC43NCAxMy42M0w4LjYyIDEzLjVWMTEuNDRDOC42MiAxMC43NSA5LjE5IDEwLjE4IDkuODggMTAuMTlNMTAuNSAxMS40NEM5LjgxIDExLjQ0IDkuNDYgMTIuMjggOS45NSAxMi43N0MxMC40NCAxMy4yNiAxMS4yOCAxMi45MiAxMS4yOCAxMi4yMkMxMS4yOCAxMS43OSAxMC45MyAxMS40NCAxMC41IDExLjQ0TTkuNjYgMTQuNTRMOC43NiAxNi4xMUM5LjgxIDE2LjgyIDExLjE5IDE2LjgyIDEyLjI0IDE2LjExTDExLjM0IDE0LjU0QzEwLjg3IDE1IDEwLjEzIDE1IDkuNjYgMTQuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNhZEJveCA9IFwiTTUgM0MzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMS4yNSA1LjI1SDEyLjc1VjYuMzhDMTMuNTggNi4zOCAxNC4yNSA3LjA1IDE0LjI1IDcuODhWMTAuMzdMMTQuMTEgMTAuNUwxNS4xOCAxMi4zNkMxNS41NSAxMS43NiAxNS43NSAxMS4wNyAxNS43NSAxMC4zNkgxNy4yNUMxNy4yNiAxMS42MSAxNi44MSAxMi44MiAxNiAxMy43N0wxOCAxNy4yNVYxOC43NUwxNi43IDE4TDE0Ljg0IDE0Ljc4QzEzLjEyIDE1LjkxIDEwLjg5IDE1LjkxIDkuMTYgMTQuNzhMNy4zIDE4TDYgMTguNzVWMTcuMjVMOS44OSAxMC41TDkuNzUgMTAuMzdWNy44OEM5Ljc1IDcuMDUgMTAuNDIgNi4zOCAxMS4yNSA2LjM4TTEyIDcuODhDMTEuMTYgNy44OCAxMC43NCA4LjkgMTEuMzQgOS41QzExLjk0IDEwLjA4IDEyLjk1IDkuNjUgMTIuOTQgOC44MUMxMi45NCA4LjI5IDEyLjUgNy44OCAxMiA3Ljg4TTExIDExLjZMOS45MSAxMy41QzExLjE3IDE0LjM2IDEyLjgzIDE0LjM2IDE0LjA5IDEzLjVMMTMgMTEuNkMxMi40MyAxMi4xMSAxMS41NyAxMi4xMSAxMSAxMS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDYW5jZWwgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTEwLjUsMTFDOCwxMSA2LDEzIDYsMTUuNUM2LDE4IDgsMjAgMTAuNSwyMEMxMywyMCAxNSwxOCAxNSwxNS41QzE1LDEzIDEzLDExIDEwLjUsMTFNMTAuNSwxMi41QTMsMyAwIDAsMSAxMy41LDE1LjVDMTMuNSwxNi4wNiAxMy4zNSwxNi41OCAxMy4wOCwxN0w5LDEyLjkyQzkuNDIsMTIuNjUgOS45NCwxMi41IDEwLjUsMTIuNU03LjUsMTUuNUM3LjUsMTQuOTQgNy42NSwxNC40MiA3LjkyLDE0TDEyLDE4LjA4QzExLjU4LDE4LjM1IDExLjA2LDE4LjUgMTAuNSwxOC41QTMsMyAwIDAsMSA3LjUsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2FuY2VsT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTEuNSwxMEMxNCwxMCAxNiwxMiAxNiwxNC41QzE2LDE3IDE0LDE5IDExLjUsMTlDOSwxOSA3LDE3IDcsMTQuNUM3LDEyIDksMTAgMTEuNSwxME0xMS41LDExLjVDMTAuOTQsMTEuNSAxMC40MiwxMS42NSAxMCwxMS45MkwxNC4wOCwxNkMxNC4zNSwxNS41OCAxNC41LDE1LjA2IDE0LjUsMTQuNUEzLDMgMCAwLDAgMTEuNSwxMS41TTguNSwxNC41QTMsMyAwIDAsMCAxMS41LDE3LjVDMTIuMDYsMTcuNSAxMi41OCwxNy4zNSAxMywxNy4wOEw4LjkyLDEzQzguNjUsMTMuNDIgOC41LDEzLjk0IDguNSwxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDZXJ0aWZpY2F0ZSA9IFwiTTE0IDJIN0EyIDIgMCAwIDAgNSA0VjE4QTIgMiAwIDAgMCA3IDIwSDEwVjIzTDEyIDIyTDE0IDIzVjIwSDE3QTIgMiAwIDAgMCAxOSAxOFY3TTE0IDE1VjE3TDEyIDE2TDEwIDE3VjE1TDggMTRMMTAgMTNWMTFMMTIgMTJMMTQgMTFWMTNMMTYgMTRNMTMgOFYzLjVMMTcuNSA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDZXJ0aWZpY2F0ZU91dGxpbmUgPSBcIk0xNCAxM1YxMUwxMiAxMkwxMCAxMVYxM0w4IDE0TDEwIDE1VjE3TDEyIDE2TDE0IDE3VjE1TDE2IDE0TTE0IDJIN0EyIDIgMCAwIDAgNSA0VjE4QTIgMiAwIDAgMCA3IDIwSDhWMThIN1Y0SDEzVjhIMTdWMThIMTZWMjBIMTdBMiAyIDAgMCAwIDE5IDE4VjdNMTQgMTNWMTFMMTIgMTJMMTAgMTFWMTNMOCAxNEwxMCAxNVYxN0wxMiAxNkwxNCAxN1YxNUwxNiAxNE0xMCAyM0wxMiAyMkwxNCAyM1YxOEgxME0xNCAxM1YxMUwxMiAxMkwxMCAxMVYxM0w4IDE0TDEwIDE1VjE3TDEyIDE2TDE0IDE3VjE1TDE2IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDaGFydCA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNNywyMEg5VjE0SDdWMjBNMTEsMjBIMTNWMTJIMTFWMjBNMTUsMjBIMTdWMTZIMTVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNoYXJ0T3V0bGluZSA9IFwiTTE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNOSAxM1YxOUg3VjEzSDlNMTUgMTVWMTlIMTdWMTVIMTVNMTEgMTFWMTlIMTNWMTFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNoZWNrID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xMS4yLDE4LjQ2TDE1Ljk1LDEzLjcxTDE0Ljc4LDEyLjNMMTEuMiwxNS44OEw5LjYxLDE0LjNMOC40NSwxNS40NkwxMS4yLDE4LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDaGVja091dGxpbmUgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTE4LDIwVjlIMTNWNEg2VjIwSDE4TTExLjIsMTguNDZMOC40NSwxNS40Nkw5LjYxLDE0LjNMMTEuMiwxNS44OEwxNC43OCwxMi4zTDE1Ljk1LDEzLjcxTDExLjIsMTguNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNsb2NrID0gXCJNNCAyQzIuODkgMiAyIDIuODkgMiA0VjIwQTIgMiAwIDAgMCA0IDIySDEyLjQxQTcgNyAwIDAgMCAxNiAyM0E3IDcgMCAwIDAgMjMgMTZBNyA3IDAgMCAwIDE4IDkuM1Y4TDEyIDJINE0xMSAzLjVMMTYuNSA5SDExVjMuNU0xNiAxMUE1IDUgMCAwIDEgMjEgMTZBNSA1IDAgMCAxIDE2IDIxQTUgNSAwIDAgMSAxMSAxNkE1IDUgMCAwIDEgMTYgMTFNMTUgMTJWMTdMMTguNjEgMTkuMTZMMTkuMzYgMTcuOTRMMTYuNSAxNi4yNVYxMkgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2xvY2tPdXRsaW5lID0gXCJNNCAyQTIgMiAwIDAgMCAyIDRWMjBBMiAyIDAgMCAwIDQgMjJIMTIuNDFBNyA3IDAgMCAwIDE2IDIzQTcgNyAwIDAgMCAyMyAxNkE3IDcgMCAwIDAgMTggOS4zVjhMMTIgMkg0TTQgNEgxMVY5SDE2QTcgNyAwIDAgMCA5IDE2QTcgNyAwIDAgMCAxMC4yNiAyMEg0VjRNMTYgMTFBNSA1IDAgMCAxIDIxIDE2QTUgNSAwIDAgMSAxNiAyMUE1IDUgMCAwIDEgMTEgMTZBNSA1IDAgMCAxIDE2IDExTTE1IDEyVjE3TDE4LjYxIDE5LjE2TDE5LjM2IDE3Ljk0TDE2LjUgMTYuMjVWMTJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNsb3VkID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xNS42OCwxNUMxNS4zNCwxMy4zIDEzLjgyLDEyIDEyLDEyQzEwLjU1LDEyIDkuMywxMi44MiA4LjY4LDE0QzcuMTcsMTQuMTggNiwxNS40NSA2LDE3QTMsMyAwIDAsMCA5LDIwSDE1LjVBMi41LDIuNSAwIDAsMCAxOCwxNy41QzE4LDE2LjE4IDE2Ljk3LDE1LjExIDE1LjY4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDbG91ZE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTcgMTYuOTJDMTcgMTguMDcgMTYuMDcgMTkgMTQuOTIgMTlIOS41QzguMTIgMTkgNyAxNy44OCA3IDE2LjVDNyAxNS4yMSA4IDE0LjE1IDkuMjMgMTRDOS43NSAxMyAxMC43OSAxMi4zMyAxMiAxMi4zM0MxMy41IDEyLjMzIDE0Ljc4IDEzLjQyIDE1LjA3IDE0LjgzQzE2LjE0IDE0LjkzIDE3IDE1LjgyIDE3IDE2LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb2RlID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk02LjEyLDE1LjVMOS44NiwxOS4yNEwxMS4yOCwxNy44M0w4Ljk1LDE1LjVMMTEuMjgsMTMuMTdMOS44NiwxMS43Nkw2LjEyLDE1LjVNMTcuMjgsMTUuNUwxMy41NCwxMS43NkwxMi4xMiwxMy4xN0wxNC40NSwxNS41TDEyLjEyLDE3LjgzTDEzLjU0LDE5LjI0TDE3LjI4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNvZGVPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTkuNTQgMTUuNjVMMTEuNjMgMTcuNzRMMTAuMzUgMTlMNyAxNS42NUwxMC4zNSAxMi4zTDExLjYzIDEzLjU2TDkuNTQgMTUuNjVNMTcgMTUuNjVMMTMuNjUgMTlMMTIuMzggMTcuNzRMMTQuNDcgMTUuNjVMMTIuMzggMTMuNTZMMTMuNjUgMTIuM0wxNyAxNS42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ29nID0gXCJNNiAyQzQuODkgMiA0IDIuODkgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDEyLjY4QTcgNyAwIDAgMSAxMiAxOUE3IDcgMCAwIDEgMTkgMTJBNyA3IDAgMCAxIDIwIDEyLjA4VjhMMTQgMkg2TTEzIDMuNUwxOC41IDlIMTNWMy41TTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNEgxOE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb2dPdXRsaW5lID0gXCJNNiAyQzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTJWMjBINlY0SDEzVjlIMThWMTJIMjBWOEwxNCAyTTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb21wYXJlID0gXCJNMTAsMThINlYxNkgxMFYxOE0xMCwxNEg2VjEySDEwVjE0TTEwLDFWMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwVjIzSDEyVjFIMTBNMjAsOFYyMEMyMCwyMS4xMSAxOS4xMSwyMiAxOCwyMkgxNFYyMEgxOFYxMUgxNFY5SDE4LjVMMTQsNC41VjJMMjAsOE0xNiwxNEgxNFYxMkgxNlYxNE0xNiwxOEgxNFYxNkgxNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRGVsaW1pdGVkID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xNSAxNkwxMyAyMEgxMEwxMiAxNkg5VjExSDE1VjE2TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRGVsaW1pdGVkT3V0bGluZSA9IFwiTTE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTAgMTlMMTIgMTVIOVYxMEgxNVYxNUwxMyAxOUgxMFwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudCA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTUsMThWMTZINlYxOEgxNU0xOCwxNFYxMkg2VjE0SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudEVkaXQgPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMTBWMjAuMDlMMTIuMDksMThINlYxNkgxNC4wOUwxNi4wOSwxNEg2VjEySDE4LjA5TDIwLDEwLjA5VjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTIwLjE1LDEzQzIwLDEzIDE5Ljg2LDEzLjA1IDE5Ljc1LDEzLjE2TDE4LjczLDE0LjE4TDIwLjgyLDE2LjI2TDIxLjg0LDE1LjI1QzIyLjA1LDE1LjAzIDIyLjA1LDE0LjY3IDIxLjg0LDE0LjQ2TDIwLjU0LDEzLjE2QzIwLjQzLDEzLjA1IDIwLjI5LDEzIDIwLjE1LDEzTTE4LjE0LDE0Ljc3TDEyLDIwLjkyVjIzSDE0LjA4TDIwLjIzLDE2Ljg1TDE4LjE0LDE0Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudEVkaXRPdXRsaW5lID0gXCJNOCwxMkgxNlYxNEg4VjEyTTEwLDIwSDZWNEgxM1Y5SDE4VjEyLjFMMjAsMTAuMVY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwVjIwTTgsMThIMTIuMUwxMywxNy4xVjE2SDhWMThNMjAuMiwxM0MyMC4zLDEzIDIwLjUsMTMuMSAyMC42LDEzLjJMMjEuOSwxNC41QzIyLjEsMTQuNyAyMi4xLDE1LjEgMjEuOSwxNS4zTDIwLjksMTYuM0wxOC44LDE0LjJMMTkuOCwxMy4yQzE5LjksMTMuMSAyMCwxMyAyMC4yLDEzTTIwLjIsMTYuOUwxNC4xLDIzSDEyVjIwLjlMMTguMSwxNC44TDIwLjIsMTYuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRG9jdW1lbnRNdWx0aXBsZSA9IFwiTTQgNFYyMkgyMFYyNEg0QzIuOSAyNCAyIDIzLjEgMiAyMlY0SDRNMTUgN0gyMC41TDE1IDEuNVY3TTggMEgxNkwyMiA2VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDhDNi44OSAyMCA2IDE5LjEgNiAxOFYyQzYgLjg5IDYuODkgMCA4IDBNMTcgMTZWMTRIOFYxNkgxN00yMCAxMlYxMEg4VjEySDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudE11bHRpcGxlT3V0bGluZSA9IFwiTTE2IDBIOEM2LjkgMCA2IC45IDYgMlYxOEM2IDE5LjEgNi45IDIwIDggMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZMMTYgME0yMCAxOEg4VjJIMTVWN0gyMFYxOE00IDRWMjJIMjBWMjRINEMyLjkgMjQgMiAyMy4xIDIgMjJWNEg0TTEwIDEwVjEySDE4VjEwSDEwTTEwIDE0VjE2SDE1VjE0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudE91dGxpbmUgPSBcIk02LDJBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwySDZNNiw0SDEzVjlIMThWMjBINlY0TTgsMTJWMTRIMTZWMTJIOE04LDE2VjE4SDEzVjE2SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZURvd25sb2FkID0gXCJNMTQsMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE4QzE5LjExLDIyIDIwLDIxLjExIDIwLDIwVjhMMTQsMk0xMiwxOUw4LDE1SDEwLjVWMTJIMTMuNVYxNUgxNkwxMiwxOU0xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZURvd25sb2FkT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTIsMTlMOCwxNUgxMC41VjEySDEzLjVWMTVIMTZMMTIsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUVkaXQgPSBcIk02IDJDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxMFYyMC4xTDIwIDEwLjFWOEwxNCAySDZNMTMgMy41TDE4LjUgOUgxM1YzLjVNMjAuMSAxM0MyMCAxMyAxOS44IDEzLjEgMTkuNyAxMy4yTDE4LjcgMTQuMkwyMC44IDE2LjNMMjEuOCAxNS4zQzIyIDE1LjEgMjIgMTQuNyAyMS44IDE0LjVMMjAuNSAxMy4yQzIwLjQgMTMuMSAyMC4zIDEzIDIwLjEgMTNNMTguMSAxNC44TDEyIDIwLjlWMjNIMTQuMUwyMC4yIDE2LjlMMTguMSAxNC44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFZGl0T3V0bGluZSA9IFwiTTEwIDIwSDZWNEgxM1Y5SDE4VjEyLjFMMjAgMTAuMVY4TDE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDEwVjIwTTIwLjIgMTNDMjAuMyAxMyAyMC41IDEzLjEgMjAuNiAxMy4yTDIxLjkgMTQuNUMyMi4xIDE0LjcgMjIuMSAxNS4xIDIxLjkgMTUuM0wyMC45IDE2LjNMMTguOCAxNC4yTDE5LjggMTMuMkMxOS45IDEzLjEgMjAgMTMgMjAuMiAxM00yMC4yIDE2LjlMMTQuMSAyM0gxMlYyMC45TDE4LjEgMTQuOEwyMC4yIDE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUV4Y2VsID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS44LDIwSDE0TDEyLDE2LjZMMTAsMjBIOC4yTDExLjEsMTUuNUw4LjIsMTFIMTBMMTIsMTQuNEwxNCwxMUgxNS44TDEyLjksMTUuNUwxNS44LDIwTTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhjZWxCb3ggPSBcIk0xNi4yLDE3SDE0LjJMMTIsMTMuMkw5LjgsMTdINy44TDExLDEyTDcuOCw3SDkuOEwxMiwxMC44TDE0LjIsN0gxNi4yTDEzLDEyTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeGNlbEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTMgMTJMMTYuMiAxN0gxNC4yTDEyIDEzLjJMOS44IDE3SDcuOEwxMSAxMkw3LjggN0g5LjhMMTIgMTAuOEwxNC4yIDdIMTYuMkwxMyAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhjZWxPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTEyLjkgMTQuNUwxNS44IDE5SDE0TDEyIDE1LjZMMTAgMTlIOC4yTDExLjEgMTQuNUw4LjIgMTBIMTBMMTIgMTMuNEwxNCAxMEgxNS44TDEyLjkgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhwb3J0ID0gXCJNNiwyQzQuODksMiA0LDIuOSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMywzLjVMMTguNSw5SDEzTTguOTMsMTIuMjJIMTZWMTkuMjlMMTMuODgsMTcuMTdMMTEuMDUsMjBMOC4yMiwxNy4xN0wxMS4wNSwxNC4zNVwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeHBvcnRPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xNiAxMVYxOC4xTDEzLjkgMTZMMTEuMSAxOC44TDguMyAxNkwxMS4xIDEzLjJMOC45IDExSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeWUgPSBcIk0xNywxOEMxNy41NiwxOCAxOCwxOC40NCAxOCwxOUMxOCwxOS41NiAxNy41NiwyMCAxNywyMEMxNi40NCwyMCAxNiwxOS41NiAxNiwxOUMxNiwxOC40NCAxNi40NCwxOCAxNywxOE0xNywxNUMxNC4yNywxNSAxMS45NCwxNi42NiAxMSwxOUMxMS45NCwyMS4zNCAxNC4yNywyMyAxNywyM0MxOS43MywyMyAyMi4wNiwyMS4zNCAyMywxOUMyMi4wNiwxNi42NiAxOS43MywxNSAxNywxNU0xNywyMS41QTIuNSwyLjUgMCAwLDEgMTQuNSwxOUEyLjUsMi41IDAgMCwxIDE3LDE2LjVBMi41LDIuNSAwIDAsMSAxOS41LDE5QTIuNSwyLjUgMCAwLDEgMTcsMjEuNU05LjE0LDE5Ljc1TDguODUsMTlMOS4xNCwxOC4yNkMxMC40MywxNS4wNiAxMy41LDEzIDE3LDEzQzE4LjA1LDEzIDE5LjA2LDEzLjIxIDIwLDEzLjU2VjhMMTQsMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwLjVDOS45NSwyMS4zNCA5LjUsMjAuNTggOS4xNCwxOS43NU0xMywzLjVMMTguNSw5SDEzVjMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXllT3V0bGluZSA9IFwiTTE3LDE4QzE3LjU2LDE4IDE4LDE4LjQ0IDE4LDE5QzE4LDE5LjU2IDE3LjU2LDIwIDE3LDIwQzE2LjQ0LDIwIDE2LDE5LjU2IDE2LDE5QzE2LDE4LjQ0IDE2LjQ0LDE4IDE3LDE4TTE3LDE1QzE0LjI3LDE1IDExLjk0LDE2LjY2IDExLDE5QzExLjk0LDIxLjM0IDE0LjI3LDIzIDE3LDIzQzE5LjczLDIzIDIyLjA2LDIxLjM0IDIzLDE5QzIyLjA2LDE2LjY2IDE5LjczLDE1IDE3LDE1TTE3LDIxLjVBMi41LDIuNSAwIDAsMSAxNC41LDE5QTIuNSwyLjUgMCAwLDEgMTcsMTYuNUEyLjUsMi41IDAgMCwxIDE5LjUsMTlBMi41LDIuNSAwIDAsMSAxNywyMS41TTkuMjcsMjBINlY0SDEzVjlIMThWMTMuMDdDMTguNywxMy4xNSAxOS4zNiwxMy4zMiAyMCwxMy41NlY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwLjVDMTAsMjEuNDEgOS41OSwyMC43MyA5LjI3LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVGaW5kID0gXCJNOSwxM0EzLDMgMCAwLDAgMTIsMTZBMywzIDAgMCwwIDE1LDEzQTMsMyAwIDAsMCAxMiwxMEEzLDMgMCAwLDAgOSwxM00yMCwxOS41OVY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QzE4LjQ1LDIyIDE4Ljg1LDIxLjg1IDE5LjE5LDIxLjZMMTQuNzYsMTcuMTdDMTMuOTYsMTcuNjkgMTMsMTggMTIsMThBNSw1IDAgMCwxIDcsMTNBNSw1IDAgMCwxIDEyLDhBNSw1IDAgMCwxIDE3LDEzQzE3LDE0IDE2LjY5LDE0Ljk2IDE2LjE3LDE1Ljc1TDIwLDE5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVGaW5kT3V0bGluZSA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNNiw0SDEzTDE4LDlWMTcuNThMMTYuMTYsMTUuNzRDMTcuNDQsMTMuOCAxNy4yMywxMS4xNyAxNS41LDkuNDZDMTQuNTUsOC41IDEzLjI4LDggMTIsOEMxMC43Miw4IDkuNDUsOC41IDguNDcsOS40NkM2LjUsMTEuNDEgNi41LDE0LjU3IDguNDcsMTYuNUM5LjQ0LDE3LjUgMTAuNzIsMTcuOTcgMTIsMTcuOTdDMTIuOTYsMTcuOTcgMTMuOTIsMTcuNjkgMTQuNzUsMTcuMTRMMTcuNiwyMEg2VjRNMTQuMTEsMTUuMUMxMy41NSwxNS42NiAxMi44LDE2IDEyLDE2QzExLjIsMTYgMTAuNDUsMTUuNjcgOS44OSwxNS4xQzkuMzMsMTQuNTQgOSwxMy43OSA5LDEzQzksMTIuMTkgOS4zMiwxMS40NCA5Ljg5LDEwLjg4QzEwLjQ1LDEwLjMxIDExLjIsMTAgMTIsMTBDMTIuOCwxMCAxMy41NSwxMC4zMSAxNC4xMSwxMC44OEMxNC42NywxMS40NCAxNSwxMi4xOSAxNSwxM0MxNSwxMy43OSAxNC42OCwxNC41NCAxNC4xMSwxNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVIaWRkZW4gPSBcIk0xMyw5SDE0VjExSDExVjdIMTNWOU0xOC41LDlMMTYuMzgsNi44OEwxNy42Myw1LjYzTDIwLDhWMTBIMThWMTFIMTVWOUgxOC41TTEzLDMuNVYySDEyVjRIMTNWNkgxMVY0SDlWMkg4VjRINlY1SDRWNEM0LDIuODkgNC44OSwyIDYsMkgxNEwxNi4zNiw0LjM2TDE1LjExLDUuNjFMMTMsMy41TTIwLDIwQTIsMiAwIDAsMSAxOCwyMkgxNlYyMEgxOFYxOUgyMFYyME0xOCwxNUgyMFYxOEgxOFYxNU0xMiwyMlYyMEgxNVYyMkgxMk04LDIyVjIwSDExVjIySDhNNiwyMkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjE4SDZWMjBIN1YyMkg2TTQsMTRINlYxN0g0VjE0TTQsMTBINlYxM0g0VjEwTTE4LDExSDIwVjE0SDE4VjExTTQsNkg2VjlINFY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVJbWFnZSA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNNiwyMEgxNUwxOCwyMFYxMkwxNCwxNkwxMiwxNEw2LDIwTTgsOUEyLDIgMCAwLDAgNiwxMUEyLDIgMCAwLDAgOCwxM0EyLDIgMCAwLDAgMTAsMTFBMiwyIDAgMCwwIDgsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlSW1hZ2VPdXRsaW5lID0gXCJNMTQsMkwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMkgxNE0xOCwyMFY5SDEzVjRINlYyMEgxOE0xNywxM1YxOUg3TDEyLDE0TDE0LDE2TTEwLDEwLjVBMS41LDEuNSAwIDAsMSA4LjUsMTJBMS41LDEuNSAwIDAsMSA3LDEwLjVBMS41LDEuNSAwIDAsMSA4LjUsOUExLjUsMS41IDAgMCwxIDEwLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUltcG9ydCA9IFwiTTYsMkM0Ljg5LDIgNCwyLjkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTMsMy41TDE4LjUsOUgxM00xMC4wNSwxMS4yMkwxMi44OCwxNC4wNUwxNSwxMS45M1YxOUg3LjkzTDEwLjA1LDE2Ljg4TDcuMjIsMTQuMDVcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlSW1wb3J0T3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xNSAxMS45M1YxOUg3LjkzTDEwLjA1IDE2Ljg4TDcuMjIgMTQuMDVMMTAuMDUgMTEuMjJMMTIuODggMTQuMDVMMTUgMTEuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUtleSA9IFwiTTExIDE2QTEgMSAwIDEgMSAxMCAxNUExIDEgMCAwIDEgMTEgMTZNMjAgOFYyMEEyIDIgMCAwIDEgMTggMjJINkEyIDIgMCAwIDEgNCAyMFY0QTIgMiAwIDAgMSA2IDJIMTRNMTcgMTVIMTIuODNBMyAzIDAgMSAwIDEyLjgzIDE3SDE0VjE5SDE2VjE3SDE3TTE4LjUgOUwxMyAzLjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlS2V5T3V0bGluZSA9IFwiTTE0IDJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThNMTIuODMgMTVBMyAzIDAgMSAwIDEyLjgzIDE3SDE0VjE5SDE2VjE3SDE3VjE1TTEwIDE3QTEgMSAwIDEgMSAxMSAxNkExIDEgMCAwIDEgMTAgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUxpbmsgPSBcIk0xNCAySDZDNC44OSAyIDQgMi44OSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTExIDIwSDEwQzguMzkgMjAgNiAxOC45NCA2IDE2QzYgMTMuMDcgOC4zOSAxMiAxMCAxMkgxMVYxNEgxMEM5LjU0IDE0IDggMTQuMTcgOCAxNkM4IDE3LjkgOS42NyAxOCAxMCAxOEgxMVYyME0xNSAxNVYxN0g5VjE1SDE1TTE0IDIwSDEzVjE4SDE0QzE0LjQ2IDE4IDE2IDE3LjgzIDE2IDE2QzE2IDE0LjEgMTQuMzMgMTQgMTQgMTRIMTNWMTJIMTRDMTUuNjEgMTIgMTggMTMuMDcgMTggMTZDMTggMTguOTQgMTUuNjEgMjAgMTQgMjBNMTMgOVYzLjVMMTguNSA5SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVMaW5rT3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMSAxOUgxMC43NUM5LjQ1IDE5IDcgMTguMjIgNyAxNS4yNVM5LjQ1IDExLjUgMTAuNzUgMTEuNUgxMVYxM0gxMC43NUMxMC4zOCAxMyA4LjUgMTMuMTMgOC41IDE1LjI1QzguNSAxNy40NCAxMC41IDE3LjUgMTAuNzUgMTcuNUgxMVYxOU0xNCAxNkgxMFYxNC41SDE0VjE2TTEzIDExLjVIMTMuMjVDMTQuNTUgMTEuNSAxNyAxMi4yOCAxNyAxNS4yNVMxNC41NSAxOSAxMy4yNSAxOUgxM1YxNy41SDEzLjI1QzEzLjYyIDE3LjUgMTUuNSAxNy4zNyAxNS41IDE1LjI1QzE1LjUgMTMuMDYgMTMuNSAxMyAxMy4yNSAxM0gxM1YxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVMb2NrID0gXCJNNiwyQzQuODksMiA0LDIuOSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTEyLDExQTMsMyAwIDAsMSAxNSwxNFYxNUgxNlYxOUg4VjE1SDlWMTRDOSwxMi4zNiAxMC4zNCwxMSAxMiwxMU0xMiwxM0ExLDEgMCAwLDAgMTEsMTRWMTVIMTNWMTRDMTMsMTMuNDcgMTIuNTUsMTMgMTIsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUxvY2tPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE1IDE1VjE0QzE1IDEyLjM0IDEzLjY2IDExIDEyIDExUzkgMTIuMzYgOSAxNFYxNUg4VjE5SDE2VjE1SDE1TTEzIDE1SDExVjE0QzExIDEzLjQ1IDExLjQ1IDEzIDEyIDEzUzEzIDEzLjQ3IDEzIDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVNb3ZlID0gXCJNMTQsMTdIMThWMTRMMjMsMTguNUwxOCwyM1YyMEgxNFYxN00xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMTIuMzRDMTkuMzcsMTIuMTIgMTguNywxMiAxOCwxMkE2LDYgMCAwLDAgMTIsMThDMTIsMTkuNTQgMTIuNTgsMjAuOTQgMTMuNTMsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRBMiwyIDAgMCwxIDYsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlTW92ZU91dGxpbmUgPSBcIk0xNCAySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjAuNDEgNC4xMiAyMC44IDQuMzQgMjEuMTJDNC40MSAyMS4yMyA0LjUgMjEuMzMgNC41OSAyMS40MUM0Ljk1IDIxLjc4IDUuNDUgMjIgNiAyMkgxMy41M0MxMyAyMS40MiAxMi42MSAyMC43NSAxMi4zNSAyMEg2VjRIMTNWOUgxOFYxMkMxOC43IDEyIDE5LjM3IDEyLjEyIDIwIDEyLjM0VjhMMTQgMk0xOCAyM0wyMyAxOC41TDIwIDE1LjhMMTggMTRWMTdIMTRWMjBIMThWMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11bHRpcGxlID0gXCJNMTUsN0gyMC41TDE1LDEuNVY3TTgsMEgxNkwyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg4QzYuODksMjAgNiwxOS4xIDYsMThWMkEyLDIgMCAwLDEgOCwwTTQsNFYyMkgyMFYyNEg0QTIsMiAwIDAsMSAyLDIyVjRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTYgMEg4QzYuOSAwIDYgLjkgNiAyVjE4QzYgMTkuMSA2LjkgMjAgOCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNkwxNiAwTTIwIDE4SDhWMkgxNVY3SDIwVjE4TTQgNFYyMkgyMFYyNEg0QzIuOSAyNCAyIDIzLjEgMiAyMlY0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11c2ljID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMywxM0gxMVYxOEEyLDIgMCAwLDEgOSwyMEEyLDIgMCAwLDEgNywxOEEyLDIgMCAwLDEgOSwxNkM5LjQsMTYgOS43LDE2LjEgMTAsMTYuM1YxMUgxM1YxM00xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11c2ljT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTMsMTBWMTJIMTFWMTdBMiwyIDAgMCwxIDksMTlBMiwyIDAgMCwxIDcsMTdBMiwyIDAgMCwxIDksMTVDOS40LDE1IDkuNywxNS4xIDEwLDE1LjNWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU91dGxpbmUgPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwyTTE4LDIwSDZWNEgxM1Y5SDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQZGYgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTEwLjEsMTEuNEMxMC4wOCwxMS40NCA5LjgxLDEzLjE2IDgsMTYuMDlDOCwxNi4wOSA0LjUsMTcuOTEgNS4zMywxOS4yN0M2LDIwLjM1IDcuNjUsMTkuMjMgOS4wNywxNi41OUM5LjA3LDE2LjU5IDEwLjg5LDE1Ljk1IDEzLjMxLDE1Ljc3QzEzLjMxLDE1Ljc3IDE3LjE3LDE3LjUgMTcuNywxNS42NkMxOC4yMiwxMy44IDE0LjY0LDE0LjIyIDE0LDE0LjQxQzE0LDE0LjQxIDEyLDEzLjA2IDExLjUsMTEuMkMxMS41LDExLjIgMTIuNjQsNy4yNSAxMC44OSw3LjNDOS4xNCw3LjM1IDkuOCwxMC40MyAxMC4xLDExLjRNMTAuOTEsMTIuNDRDMTAuOTQsMTIuNDUgMTEuMzgsMTMuNjUgMTIuOCwxNC45QzEyLjgsMTQuOSAxMC40NywxNS4zNiA5LjQxLDE1LjhDOS40MSwxNS44IDEwLjQxLDE0LjA3IDEwLjkxLDEyLjQ0TTE0Ljg0LDE1LjE2QzE1LjQyLDE1IDE3LjE3LDE1LjMxIDE3LjEsMTUuNjRDMTcuMDQsMTUuOTcgMTQuODQsMTUuMTYgMTQuODQsMTUuMTZNNy43NywxN0M3LjI0LDE4LjI0IDYuMzMsMTkgNi4xLDE5QzUuODcsMTkgNi44LDE3LjQgNy43NywxN00xMC45MSwxMC4wN0MxMC45MSwxMCAxMC41NSw3Ljg3IDEwLjkxLDcuOTJDMTEuNDUsOCAxMC45MSwxMCAxMC45MSwxMC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGRmQm94ID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlNMTAuNTksMTAuMDhDMTAuNTcsMTAuMTMgMTAuMywxMS44NCA4LjUsMTQuNzdDOC41LDE0Ljc3IDUsMTYuNTggNS44MywxNy45NEM2LjUsMTkgOC4xNSwxNy45IDkuNTYsMTUuMjdDOS41NiwxNS4yNyAxMS4zOCwxNC42MyAxMy43OSwxNC40NUMxMy43OSwxNC40NSAxNy42NSwxNi4xOSAxOC4xNywxNC4zNEMxOC42OSwxMi41IDE1LjEyLDEyLjkgMTQuNSwxMy4wOUMxNC41LDEzLjA5IDEyLjQ2LDExLjc1IDEyLDkuODlDMTIsOS44OSAxMy4xMyw1Ljk1IDExLjM4LDZDOS42Myw2LjA1IDEwLjI5LDkuMTIgMTAuNTksMTAuMDhNMTEuNCwxMS4xM0MxMS40MywxMS4xMyAxMS44NywxMi4zMyAxMy4yOSwxMy41OEMxMy4yOSwxMy41OCAxMC45NiwxNC4wNCA5LjksMTQuNUM5LjksMTQuNSAxMC45LDEyLjc1IDExLjQsMTEuMTNNMTUuMzIsMTMuODRDMTUuOSwxMy42OSAxNy42NCwxNCAxNy41OCwxNC4zMkMxNy41LDE0LjY1IDE1LjMyLDEzLjg0IDE1LjMyLDEzLjg0TTguMjYsMTUuN0M3LjczLDE2LjkxIDYuODMsMTcuNjggNi42LDE3LjY3QzYuMzcsMTcuNjYgNy4zLDE2LjA3IDguMjYsMTUuN00xMS40LDguNzZDMTEuMzksOC43MSAxMS4wMyw2LjU3IDExLjQsNi42MUMxMS45NCw2LjY3IDExLjQsOC43MSAxMS40LDguNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBkZkJveE91dGxpbmUgPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgNVYxOUg1VjVIMTlNMTcuOSAxMy41QzE3LjYgMTMgMTYuOSAxMi44IDE1LjcgMTIuOEMxNS4zIDEyLjggMTQuOSAxMi44IDE0LjUgMTIuOUMxNC4yIDEyLjcgMTMuOSAxMi41IDEzLjcgMTIuM0MxMy4xIDExLjggMTIuNSAxMC45IDEyLjIgOS44VjkuN0MxMi41IDguNCAxMi44IDYuOSAxMi4yIDYuMkMxMS45IDYuMSAxMS43IDYgMTEuNSA2SDExLjNDMTAuOSA2IDEwLjYgNi40IDEwLjUgNi43QzEwLjEgOCAxMC40IDguNyAxMC43IDkuOUMxMC41IDEwLjggMTAuMSAxMS43IDkuNyAxMi43QzkuMyAxMy40IDkgMTQgOC43IDE0LjVDOC4zIDE0LjcgOCAxNC44IDcuOCAxNUM2LjcgMTUuNyA2LjEgMTYuNSA2IDE3VjE3LjVMNi41IDE3LjhDNi43IDE4IDYuOCAxOCA3IDE4QzcuOCAxOCA4LjcgMTcuMSA5LjkgMTVIMTBDMTEgMTQuNyAxMi4yIDE0LjUgMTMuOSAxNC4zQzE0LjkgMTQuOCAxNi4xIDE1IDE2LjggMTVDMTcuMiAxNSAxNy41IDE0LjkgMTcuNyAxNC43QzE3LjkgMTQuNSAxOCAxNC4zIDE4IDE0LjFDMTggMTMuOCAxOCAxMy42IDE3LjkgMTMuNU02LjggMTcuM0M2LjggMTYuOSA3LjMgMTYuMyA4IDE1LjdDOC4xIDE1LjYgOC4zIDE1LjUgOC41IDE1LjRDNy44IDE2LjUgNy4yIDE3LjIgNi44IDE3LjNNMTEuMyA2LjdDMTEuMyA2LjcgMTEuMyA2LjYgMTEuNCA2LjZIMTEuNUMxMS43IDYuOCAxMS43IDcuMSAxMS42IDcuN1Y3LjlDMTEuNSA4LjEgMTEuNSA4LjQgMTEuNCA4LjdDMTEuMSA3LjggMTEuMSA3LjEgMTEuMyA2LjdNMTAuMSAxNC4zSDEwQzEwLjEgMTQgMTAuMyAxMy43IDEwLjUgMTMuM0MxMC45IDEyLjUgMTEuMyAxMS43IDExLjUgMTFDMTEuOSAxMS45IDEyLjQgMTIuNiAxMyAxMy4xQzEzLjEgMTMuMiAxMy4zIDEzLjMgMTMuNCAxMy40QzEyLjUgMTMuNSAxMS4zIDEzLjggMTAuMSAxNC4zTTE3LjMgMTQuMkgxNy4xQzE2LjcgMTQuMiAxNiAxNCAxNS4zIDEzLjdDMTUuNCAxMy42IDE1LjUgMTMuNiAxNS41IDEzLjZDMTYuOSAxMy42IDE3LjIgMTMuOCAxNy4zIDEzLjlMMTcuNCAxNEMxNy40IDE0LjIgMTcuNCAxNC4yIDE3LjMgMTQuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGRmT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTAuOTIsMTIuMzFDMTAuNjgsMTEuNTQgMTAuMTUsOS4wOCAxMS41NSw5LjA0QzEyLjk1LDkgMTIuMDMsMTIuMTYgMTIuMDMsMTIuMTZDMTIuNDIsMTMuNjUgMTQuMDUsMTQuNzIgMTQuMDUsMTQuNzJDMTQuNTUsMTQuNTcgMTcuNCwxNC4yNCAxNywxNS43MkMxNi41NywxNy4yIDEzLjUsMTUuODEgMTMuNSwxNS44MUMxMS41NSwxNS45NSAxMC4wOSwxNi40NyAxMC4wOSwxNi40N0M4Ljk2LDE4LjU4IDcuNjQsMTkuNSA3LjEsMTguNjFDNi40MywxNy41IDkuMjMsMTYuMDcgOS4yMywxNi4wN0MxMC42OCwxMy43MiAxMC45LDEyLjM1IDEwLjkyLDEyLjMxTTExLjU3LDEzLjE1QzExLjE3LDE0LjQ1IDEwLjM3LDE1Ljg0IDEwLjM3LDE1Ljg0QzExLjIyLDE1LjUgMTMuMDgsMTUuMTEgMTMuMDgsMTUuMTFDMTEuOTQsMTQuMTEgMTEuNTksMTMuMTYgMTEuNTcsMTMuMTVNMTQuNzEsMTUuMzJDMTQuNzEsMTUuMzIgMTYuNDYsMTUuOTcgMTYuNSwxNS43MUMxNi41NywxNS40NCAxNS4xNywxNS4yIDE0LjcxLDE1LjMyTTkuMDUsMTYuODFDOC4yOCwxNy4xMSA3LjU0LDE4LjM5IDcuNzIsMTguMzlDNy45LDE4LjQgOC42MywxNy43OSA5LjA1LDE2LjgxTTExLjU3LDExLjI2QzExLjU3LDExLjIxIDEyLDkuNTggMTEuNTcsOS41M0MxMS4yNyw5LjUgMTEuNTYsMTEuMjIgMTEuNTcsMTEuMjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBlcmNlbnQgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTcuMzcsMjBMMTUsMTIuMzVMMTMuNjUsMTFMNiwxOC42NUw3LjM3LDIwTTEzLDlIMTguNUwxMywzLjVWOU03LjUsMTFBMS41LDEuNSAwIDAsMCA2LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTRBMS41LDEuNSAwIDAsMCA5LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTFNMTMuNSwxN0ExLjUsMS41IDAgMCwwIDEyLDE4LjVBMS41LDEuNSAwIDAsMCAxMy41LDIwQTEuNSwxLjUgMCAwLDAgMTUsMTguNUExLjUsMS41IDAgMCwwIDEzLjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBlcmNlbnRPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTEwIDExLjVDMTAgMTIuMzMgOS4zMyAxMyA4LjUgMTNTNyAxMi4zMyA3IDExLjUgNy42NyAxMCA4LjUgMTAgMTAgMTAuNjcgMTAgMTEuNU0xNiAxNy41QzE2IDE4LjMzIDE1LjMzIDE5IDE0LjUgMTlTMTMgMTguMzMgMTMgMTcuNSAxMy42NyAxNiAxNC41IDE2IDE2IDE2LjY3IDE2IDE3LjVNMTYgMTEuMzVMOC4zNyAxOUw3IDE3LjY1TDE0LjY1IDEwTDE2IDExLjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQaG9uZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjg5IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTcgMTkuNDRDMTcgMTkuNzUgMTYuNzUgMjAgMTYuNDQgMjBDMTEuMjMgMjAgNyAxNS43NyA3IDEwLjU2QzcgMTAuMjUgNy4yNSAxMCA3LjU2IDEwSDkuNUM5LjgxIDEwIDEwLjA2IDEwLjI1IDEwLjA2IDEwLjU2QzEwLjA2IDExLjI1IDEwLjE3IDExLjkyIDEwLjM3IDEyLjU0QzEwLjQzIDEyLjczIDEwLjM5IDEyLjk1IDEwLjIzIDEzLjExTDkgMTQuMzNDOS44MSAxNS45IDExLjEgMTcuMTkgMTIuNjcgMThMMTMuOSAxNi43N0MxNC4wNSAxNi42MSAxNC4yNyAxNi41NyAxNC40NiAxNi42M0MxNS4wOCAxNi44MyAxNS43NSAxNi45NSAxNi40NSAxNi45NUMxNi43NSAxNi45NSAxNyAxNy4xOSAxNyAxNy41VjE5LjQ0TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGhvbmVPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTkgMTMuMzNDOS44MSAxNC45IDExLjEgMTYuMTkgMTIuNjcgMTdMMTMuODkgMTUuNzdDMTQuMDUgMTUuNjEgMTQuMjcgMTUuNTcgMTQuNDYgMTUuNjNDMTUuMDggMTUuODMgMTUuNzUgMTUuOTUgMTYuNDQgMTUuOTVDMTYuNzUgMTUuOTUgMTcgMTYuMTkgMTcgMTYuNVYxOC40NUMxNyAxOC43NSAxNi43NSAxOSAxNi40NCAxOUMxMS4yMyAxOSA3IDE0Ljc3IDcgOS41NkM3IDkuMjUgNy4yNSA5IDcuNTYgOUg5LjVDOS44MSA5IDEwLjA2IDkuMjUgMTAuMDYgOS41NkMxMC4wNiAxMC4yNSAxMC4xNyAxMC45MiAxMC4zNyAxMS41NEMxMC40MyAxMS43MyAxMC4zOSAxMS45NSAxMC4yMyAxMi4xMUw5IDEzLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQbHVzID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xMSwxNVYxMkg5VjE1SDZWMTdIOVYyMEgxMVYxN0gxNFYxNUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGx1c091dGxpbmUgPSBcIk0xMiwxNFYxMUgxMFYxNEg3VjE2SDEwVjE5SDEyVjE2SDE1VjE0TTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTgsMjBINlY0SDEzVjlIMThcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludCA9IFwiTTEyLjYsMTIuM0gxMC42VjE1LjVIMTIuN0MxMy4zLDE1LjUgMTMuNiwxNS4zIDEzLjksMTVDMTQuMiwxNC43IDE0LjMsMTQuNCAxNC4zLDEzLjlDMTQuMywxMy40IDE0LjIsMTMuMSAxMy45LDEyLjhDMTMuNiwxMi41IDEzLjIsMTIuMyAxMi42LDEyLjNNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS4yLDE2QzE0LjYsMTYuNSAxNC4xLDE2LjcgMTIuOCwxNi43SDEwLjZWMjBIOVYxMUgxMi44QzE0LjEsMTEgMTQuNywxMS4zIDE1LjIsMTEuOEMxNS44LDEyLjQgMTYsMTMgMTYsMTMuOUMxNiwxNC44IDE1LjgsMTUuNSAxNS4yLDE2TTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludEJveCA9IFwiTTkuOCwxMy40SDEyLjNDMTMuOCwxMy40IDE0LjQ2LDEzLjEyIDE1LjEsMTIuNThDMTUuNzQsMTIuMDMgMTYsMTEuMjUgMTYsMTAuMjNDMTYsOS4yNiAxNS43NSw4LjUgMTUuMSw3Ljg4QzE0LjQ1LDcuMjkgMTMuODMsNyAxMi4zLDdIOFYxN0g5LjhWMTMuNE0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVDMywzLjg5IDMuOSwzIDUsM0gxOU05LjgsMTJWOC40SDEyLjFDMTIuNzYsOC40IDEzLjI3LDguNjUgMTMuNiw5QzEzLjkzLDkuMzUgMTQuMSw5LjcyIDE0LjEsMTAuMjRDMTQuMSwxMC44IDEzLjkyLDExLjE5IDEzLjYsMTEuNUMxMy4yOCwxMS44MSAxMi45LDEyIDEyLjIyLDEySDkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTUuMSA3Ljg4QzE0LjQ1IDcuMjkgMTMuODMgNyAxMi4zIDdIOFYxN0g5LjhWMTMuNEgxMi4zQzEzLjggMTMuNCAxNC40NiAxMy4xMiAxNS4xIDEyLjU4QzE1Ljc0IDEyLjAzIDE2IDExLjI1IDE2IDEwLjIzQzE2IDkuMjYgMTUuNzUgOC41IDE1LjEgNy44OE0xMy42IDExLjVDMTMuMjggMTEuODEgMTIuOSAxMiAxMi4yMiAxMkg5LjhWOC40SDEyLjFDMTIuNzYgOC40IDEzLjI3IDguNjUgMTMuNiA5QzEzLjkzIDkuMzUgMTQuMSA5LjcyIDE0LjEgMTAuMjRDMTQuMSAxMC44IDEzLjkyIDExLjE5IDEzLjYgMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTUuMiAxMC44QzE0LjcgMTAuMyAxNC4xIDEwIDEyLjggMTBIOVYxOUgxMC42VjE1LjdIMTIuOEMxNC4xIDE1LjcgMTQuNiAxNS41IDE1LjIgMTVDMTUuOCAxNC41IDE2IDEzLjggMTYgMTIuOUMxNiAxMiAxNS44IDExLjQgMTUuMiAxMC44TTEzLjkgMTRDMTMuNiAxNC4zIDEzLjMgMTQuNSAxMi43IDE0LjVIMTAuNlYxMS4zSDEyLjZDMTMuMiAxMS4zIDEzLjYgMTEuNSAxMy45IDExLjhDMTQuMiAxMi4xIDE0LjMgMTIuNCAxNC4zIDEyLjlTMTQuMiAxMy43IDEzLjkgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVByZXNlbnRhdGlvbkJveCA9IFwiTTE5LDE2SDVWOEgxOU0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUXVlc3Rpb24gPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTEyLDExQTMsMyAwIDAsMSAxNSwxNEMxNSwxNS44OCAxMi43NSwxNi4wNiAxMi43NSwxNy43NUgxMS4yNUMxMS4yNSwxNS4zMSAxMy41LDE1LjUgMTMuNSwxNEExLjUsMS41IDAgMCwwIDEyLDEyLjVBMS41LDEuNSAwIDAsMCAxMC41LDE0SDlBMywzIDAgMCwxIDEyLDExTTExLjI1LDE4LjVIMTIuNzVWMjBIMTEuMjVWMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUXVlc3Rpb25PdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE1IDEzQzE1IDE0Ljg5IDEyLjc1IDE1LjA3IDEyLjc1IDE2Ljc2SDExLjI1QzExLjI1IDE0LjMyIDEzLjUgMTQuNSAxMy41IDEzQzEzLjUgMTIuMTggMTIuODMgMTEuNSAxMiAxMS41UzEwLjUgMTIuMTggMTAuNSAxM0g5QzkgMTEuMzUgMTAuMzQgMTAgMTIgMTBTMTUgMTEuMzUgMTUgMTNNMTIuNzUgMTcuNVYxOUgxMS4yNVYxNy41SDEyLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZWZyZXNoID0gXCJNMTggMTQuNUMxOS4xMSAxNC41IDIwLjExIDE0Ljk1IDIwLjgzIDE1LjY3TDIyIDE0LjVWMTguNUgxOEwxOS43NyAxNi43M0MxOS4zMiAxNi4yOCAxOC42OSAxNiAxOCAxNkMxNi42MiAxNiAxNS41IDE3LjEyIDE1LjUgMTguNUMxNS41IDE5Ljg4IDE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVDMTQgMTYuMjkgMTUuNzkgMTQuNSAxOCAxNC41TTEzIDlIMTguNUwxMyAzLjVWOU02IDJIMTRMMjAgOFYxMi4xN0MxOS41IDEyLjA2IDE5IDEyIDE4LjUgMTJDMTQuOTEgMTIgMTIgMTQuOTEgMTIgMTguNUMxMiAxOS43OSAxMi4zNyAyMSAxMyAyMkg2QzQuODggMjIgNCAyMS4xIDQgMjBMNCA0QzQgMi44OSA0Ljg5IDIgNiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU0xNCAyTDIwIDhWMTIuMTdDMTkuNSAxMi4wNiAxOSAxMiAxOC41IDEyTDE4IDEyVjlIMTNWNEg2VjIwSDEyLjE3QzEyLjM0IDIwLjcyIDEyLjYzIDIxLjM5IDEzIDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjRDNCAyLjkgNC45IDIgNiAySDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZW1vdmUgPSBcIk02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTMsOUgxOC41TDEzLDMuNVY5TTEwLDE0LjU5TDcuODgsMTIuNDZMNi40NiwxMy44OEw4LjU5LDE2TDYuNDYsMTguMTJMNy44OCwxOS41NEwxMCwxNy40MUwxMi4xMiwxOS41NEwxMy41NCwxOC4xMkwxMS40MSwxNkwxMy41NCwxMy44OEwxMi4xMiwxMi40NkwxMCwxNC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUmVtb3ZlT3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMS45NSAxNS40NkwxNC4wOCAxNy41OEwxMi42NiAxOUwxMC41NCAxNi44N0w4LjQyIDE5TDcgMTcuNThMOS4xMyAxNS40Nkw3IDEzLjM0TDguNDIgMTEuOTJMMTAuNTQgMTQuMDVMMTIuNjYgMTEuOTJMMTQuMDggMTMuMzRMMTEuOTUgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVJlcGxhY2UgPSBcIk0xNCwxMkgxOS41TDE0LDYuNVYxMk04LDVIMTVMMjEsMTFWMjFBMiwyIDAgMCwxIDE5LDIzSDhDNi44OSwyMyA2LDIyLjEgNiwyMVYxOEgxMVYyMEwxNSwxN0wxMSwxNFYxNkg2VjdBMiwyIDAgMCwxIDgsNU0xMy41LDNINFYxNkg2VjE4SDRBMiwyIDAgMCwxIDIsMTZWM0EyLDIgMCAwLDEgNCwxSDExLjVMMTMuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZXBsYWNlT3V0bGluZSA9IFwiTTE0LDNMMTIsMUg0QTIsMiAwIDAsMCAyLDNWMTVBMiwyIDAgMCwwIDQsMTdIMTFWMTlMMTUsMTZMMTEsMTNWMTVINFYzSDE0TTIxLDEwVjIxQTIsMiAwIDAsMSAxOSwyM0g4QTIsMiAwIDAsMSA2LDIxVjE5SDhWMjFIMTlWMTJIMTRWN0g4VjEzSDZWN0EyLDIgMCAwLDEgOCw1SDE2TDIxLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZXN0b3JlID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMiwxOEM5Ljk1LDE4IDguMTksMTYuNzYgNy40MiwxNUg5LjEzQzkuNzYsMTUuOSAxMC44MSwxNi41IDEyLDE2LjVBMy41LDMuNSAwIDAsMCAxNS41LDEzQTMuNSwzLjUgMCAwLDAgMTIsOS41QzEwLjY1LDkuNSA5LjUsMTAuMjggOC45LDExLjRMMTAuNSwxM0g2LjVWOUw3LjgsMTAuM0M4LjY5LDguOTIgMTAuMjMsOCAxMiw4QTUsNSAwIDAsMSAxNywxM0E1LDUgMCAwLDEgMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVJlc3RvcmVPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNMMTggOVYyME0xNyAxMy4yNEMxNyAxNS44NiAxNC44NyAxOCAxMi4yNCAxOEMxMC4yOSAxOCA4LjYxIDE2LjgyIDcuODggMTUuMTRIOS41QzEwLjExIDE2IDExLjExIDE2LjU3IDEyLjI0IDE2LjU3QzE0LjA4IDE2LjU3IDE1LjU3IDE1LjA3IDE1LjU3IDEzLjI0UzE0LjA4IDkuOSAxMi4yNCA5LjlDMTAuOTUgOS45IDkuODYgMTAuNjUgOS4yOSAxMS43MUwxMC44MSAxMy4yNEg3VjkuNDNMOC4yNCAxMC42N0M5LjA5IDkuMzUgMTAuNTUgOC41IDEyLjI0IDguNUMxNC44NyA4LjQ3IDE3IDEwLjYxIDE3IDEzLjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTZWFyY2ggPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxM0MxMi41OSwyMS43NSAxMi4yLDIxLjQ0IDExLjg2LDIxLjFDOS4yMiwxOC42NyA5LjA1LDE0LjU2IDExLjUsMTEuOTJDMTMuNjksOS41IDE3LjMzLDkuMTMgMjAsMTFWOEwxNCwyTTEzLDlWMy41TDE4LjUsOUgxM00yMC4zMSwxOC45QzIxLjY0LDE2Ljc5IDIxLDE0IDE4LjkxLDEyLjY4QzE2LjgsMTEuMzUgMTQsMTIgMTIuNjksMTQuMDhDMTEuMzUsMTYuMTkgMTIsMTguOTcgMTQuMDksMjAuM0MxNS41NSwyMS4yMyAxNy40MSwyMS4yMyAxOC44OCwyMC4zMkwyMiwyMy4zOUwyMy4zOSwyMkwyMC4zMSwxOC45TTE2LjUsMTlBMi41LDIuNSAwIDAsMSAxNCwxNi41QTIuNSwyLjUgMCAwLDEgMTYuNSwxNEEyLjUsMi41IDAgMCwxIDE5LDE2LjVBMi41LDIuNSAwIDAsMSAxNi41LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTZWFyY2hPdXRsaW5lID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMTNDMTIuNTksMjEuNzUgMTIuMiwyMS40NCAxMS44NiwyMS4xQzExLjUzLDIwLjc3IDExLjI1LDIwLjQgMTEsMjBINlY0SDEzVjlIMThWMTAuMThDMTguNzEsMTAuMzQgMTkuMzksMTAuNjEgMjAsMTFWOEwxNCwyTTIwLjMxLDE4LjlDMjEuNjQsMTYuNzkgMjEsMTQgMTguOTEsMTIuNjhDMTYuOCwxMS4zNSAxNCwxMiAxMi42OSwxNC4wOEMxMS4zNSwxNi4xOSAxMiwxOC45NyAxNC4wOSwyMC4zQzE1LjU1LDIxLjIzIDE3LjQxLDIxLjIzIDE4Ljg4LDIwLjMyTDIyLDIzLjM5TDIzLjM5LDIyTDIwLjMxLDE4LjlNMTYuNSwxOUEyLjUsMi41IDAgMCwxIDE0LDE2LjVBMi41LDIuNSAwIDAsMSAxNi41LDE0QTIuNSwyLjUgMCAwLDEgMTksMTYuNUEyLjUsMi41IDAgMCwxIDE2LjUsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVNlbmQgPSBcIk0xNCwySDZDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMi41NCwxOS4zN1YxNy4zN0g4LjU0VjE1LjM4SDEyLjU0VjEzLjM4TDE1LjU0LDE2LjM4TDEyLjU0LDE5LjM3TTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU2VuZE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTIuNTQgMTguNVYxNi41SDguNTRWMTQuNUgxMi41NFYxMi41TDE1LjU0IDE1LjVMMTIuNTQgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU2V0dGluZ3MgPSBcIk02IDBDNC44OSAwIDQgLjg5IDQgMlYxOEEyIDIgMCAwIDAgNiAyMEgxOEEyIDIgMCAwIDAgMjAgMThWNkwxNCAwSDZNMTMgMS41TDE4LjUgN0gxM1YxLjVNNyAyMlYyNEg5VjIySDdNMTEgMjJWMjRIMTNWMjJIMTFNMTUgMjJWMjRIMTdWMjJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVNldHRpbmdzT3V0bGluZSA9IFwiTTYgMEEyIDIgMCAwIDAgNCAyVjE4QTIgMiAwIDAgMCA2IDIwSDE4QTIgMiAwIDAgMCAyMCAxOFY2TDE0IDBINk02IDJIMTNWN0gxOFYxOEg2VjJNNyAyMlYyNEg5VjIySDdNMTEgMjJWMjRIMTNWMjJIMTFNMTUgMjJWMjRIMTdWMjJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVN0YXIgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xNC41IDE4LjlMMTIgMTcuNUw5LjUgMTlMMTAuMiAxNi4yTDggMTQuM0wxMC45IDE0LjFMMTIgMTEuNEwxMy4xIDE0TDE2IDE0LjJMMTMuOCAxNi4xTDE0LjUgMTguOU0xMyA5VjMuNUwxOC41IDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVN0YXJPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME05LjUgMThMMTAuMiAxNS4yTDggMTMuM0wxMC45IDEzLjFMMTIgMTAuNEwxMy4xIDEzTDE2IDEzLjJMMTMuOCAxNS4xTDE0LjUgMTcuOUwxMiAxNi41TDkuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3dhcCA9IFwiTTE0IDJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY4TTE0IDE4VjE2SDEwVjE4TDcgMTVMMTAgMTJWMTRIMTRWMTJMMTcgMTVNMTMgOVYzLjVMMTguNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTd2FwT3V0bGluZSA9IFwiTTE3IDE1TDE0IDEyVjE0SDEwVjEyTDcgMTVMMTAgMThWMTZIMTRWMThNMTQgMkg2QTIgMiAwIDAgMCA0IDRWMjBBMiAyIDAgMCAwIDYgMjJIMThBMiAyIDAgMCAwIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3luYyA9IFwiTTExIDE3LjVDMTEgMTMuOSAxMy45IDExIDE3LjUgMTFDMTguNCAxMSAxOS4yIDExLjIgMjAgMTEuNVY4TDE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDEyLjhDMTEuNyAyMC44IDExIDE5LjIgMTEgMTcuNU0xMyAzLjVMMTguNSA5SDEzVjMuNU0xNyAxMlYxMy41QzE5LjIgMTMuNSAyMSAxNS4zIDIxIDE3LjVDMjEgMTguMyAyMC44IDE5LjEgMjAuMyAxOS43TDE5LjIgMTguNkMxOS40IDE4LjMgMTkuNSAxNy45IDE5LjUgMTcuNUMxOS41IDE2LjEgMTguNCAxNSAxNyAxNVYxNi41TDE0LjggMTQuM0wxNyAxMk0xNyAyM1YyMS41QzE0LjggMjEuNSAxMyAxOS43IDEzIDE3LjVDMTMgMTYuNyAxMy4yIDE1LjkgMTMuNyAxNS4zTDE0LjggMTYuNEMxNC42IDE2LjcgMTQuNSAxNy4xIDE0LjUgMTcuNUMxNC41IDE4LjkgMTUuNiAyMCAxNyAyMFYxOC41TDE5LjIgMjAuN0wxNyAyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3luY091dGxpbmUgPSBcIk0xMi44IDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjRDNCAyLjkgNC45IDIgNiAySDE0TDIwIDhWMTEuNUMxOS40IDExLjIgMTguNyAxMS4xIDE4IDExVjlIMTNWNEg2VjIwSDExLjVDMTEuOCAyMC43IDEyLjMgMjEuNCAxMi44IDIyTTE3IDEyTDE0LjggMTQuMkwxNyAxNi40VjE1QzE4LjQgMTUgMTkuNSAxNi4xIDE5LjUgMTcuNUMxOS41IDE3LjkgMTkuNCAxOC4zIDE5LjIgMTguNkwyMC4zIDE5LjdDMjAuNyAxOS4xIDIxIDE4LjMgMjEgMTcuNUMyMSAxNS4zIDE5LjIgMTMuNSAxNyAxMy41VjEyTTE5LjIgMjAuOEwxNyAxOC41VjIwQzE1LjYgMjAgMTQuNSAxOC45IDE0LjUgMTcuNUMxNC41IDE3LjEgMTQuNiAxNi43IDE0LjggMTYuNEwxMy43IDE1LjNDMTMuMyAxNS45IDEzIDE2LjcgMTMgMTcuNUMxMyAxOS43IDE0LjggMjEuNSAxNyAyMS41VjIzTDE5LjIgMjAuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlVGFibGUgPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwyTTEwLDE5SDdWMTdIMTBWMTlNMTAsMTZIN1YxNEgxMFYxNk0xMCwxM0g3VjExSDEwVjEzTTE0LDE5SDExVjE3SDE0VjE5TTE0LDE2SDExVjE0SDE0VjE2TTE0LDEzSDExVjExSDE0VjEzTTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlVGFibGVCb3ggPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuODkgMjAuMSAzIDE5IDNNOSAxOEg2VjE2SDlWMThNOSAxNUg2VjEzSDlWMTVNOSAxMkg2VjEwSDlWMTJNMTMgMThIMTBWMTZIMTNWMThNMTMgMTVIMTBWMTNIMTNWMTVNMTMgMTJIMTBWMTBIMTNWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlQm94TXVsdGlwbGUgPSBcIk0zIDVWMjFIMTlWMjNIM0MxLjkgMjMgMSAyMi4xIDEgMjFWNUgzTTIxIDFIN0M1Ljg5IDEgNSAxLjg5IDUgM1YxN0M1IDE4LjExIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS44OSAyMi4xIDEgMjEgMU0xMSAxNkg4VjE0SDExVjE2TTExIDEzSDhWMTFIMTFWMTNNMTEgMTBIOFY4SDExVjEwTTE1IDE2SDEyVjE0SDE1VjE2TTE1IDEzSDEyVjExSDE1VjEzTTE1IDEwSDEyVjhIMTVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMyA1VjIxSDE5VjIzSDNDMS45IDIzIDEgMjIuMSAxIDIxVjVIM00yMSAxSDdDNS44OSAxIDUgMS44OSA1IDNWMTdDNSAxOC4xIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS45IDIyLjEgMSAyMSAxTTIxIDE3SDdWM0gyMVYxN00xMSAxNEg4VjE2SDExVjE0TTE1IDE0SDEyVjE2SDE1VjE0TTExIDExSDhWMTNIMTFWMTFNMTUgMTFIMTJWMTNIMTVWMTFNMTEgOEg4VjEwSDExVjhNMTUgOEgxMlYxMEgxNVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVUYWJsZUJveE91dGxpbmUgPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM00xOSAxOUg1VjVIMTlWMTlNOSAxOEg2VjE2SDlWMThNMTMgMThIMTBWMTZIMTNWMThNOSAxNUg2VjEzSDlWMTVNMTMgMTVIMTBWMTNIMTNWMTVNOSAxMkg2VjEwSDlWMTJNMTMgMTJIMTBWMTBIMTNWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlT3V0bGluZSA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTgsMjBINlY0SDEzVjlIMThWMjBNMTAsMTNIN1YxMUgxMFYxM00xNCwxM0gxMVYxMUgxNFYxM00xMCwxNkg3VjE0SDEwVjE2TTE0LDE2SDExVjE0SDE0VjE2TTEwLDE5SDdWMTdIMTBWMTlNMTQsMTlIMTFWMTdIMTRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRyZWUgPSBcIk0zLDNIOVY3SDNWM00xNSwxMEgyMVYxNEgxNVYxME0xNSwxN0gyMVYyMUgxNVYxN00xMywxM0g3VjE4SDEzVjIwSDdMNSwyMFY5SDdWMTFIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRyZWVPdXRsaW5lID0gXCJNMTIgMTNIN1YxOEgxMlYyMEg1VjEwSDdWMTFIMTJWMTNNOCA0VjZINFY0SDhNMTAgMkgyVjhIMTBWMk0yMCAxMVYxM0gxNlYxMUgyME0yMiA5SDE0VjE1SDIyVjlNMjAgMThWMjBIMTZWMThIMjBNMjIgMTZIMTRWMjJIMjJWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVuZG8gPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTEyLjE2LDE0LjMxQzEwLjYsMTQuMzEgOS4xOSwxNC44OSA4LjExLDE1LjgzTDYsMTMuNzJWMTlIMTEuMjhMOS4xNSwxNi44OEM5Ljk3LDE2LjIgMTEsMTUuNzggMTIuMTYsMTUuNzhDMTQuMjMsMTUuNzggMTYsMTcuMTMgMTYuNjEsMTlMMTgsMTguNTRDMTcuMTksMTYuMDkgMTQuODgsMTQuMzEgMTIuMTYsMTQuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVuZG9PdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE3IDE3LjYxTDE1Ljg0IDE4QzE1LjMzIDE2LjQ0IDEzLjg2IDE1LjMxIDEyLjEzIDE1LjMxQzExLjE3IDE1LjMxIDEwLjMxIDE1LjY2IDkuNjMgMTYuMjNMMTEuNCAxOEg3VjEzLjZMOC43NiAxNS4zNkM5LjY2IDE0LjU3IDEwLjgzIDE0LjA5IDEyLjEzIDE0LjA5QzE0LjQgMTQuMDkgMTYuMzMgMTUuNTcgMTcgMTcuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVwbG9hZCA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTMuNSwxNlYxOUgxMC41VjE2SDhMMTIsMTJMMTYsMTZIMTMuNU0xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVwbG9hZE91dGxpbmUgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTE4LDIwVjlIMTNWNEg2VjIwSDE4TTEyLDEyTDE2LDE2SDEzLjVWMTlIMTAuNVYxNkg4TDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVWaWRlbyA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTcsMTlWMTNMMTQsMTUuMlYxM0g3VjE5SDE0VjE2LjhMMTcsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVZpZGVvT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTYsMThMMTMuNSwxNi4zVjE4SDhWMTNIMTMuNVYxNC43TDE2LDEzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVXb3JkID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS4yLDIwSDEzLjhMMTIsMTMuMkwxMC4yLDIwSDguOEw2LjYsMTFIOC4xTDkuNSwxNy44TDExLjMsMTFIMTIuNkwxNC40LDE3LjhMMTUuOCwxMUgxNy4zTDE1LjIsMjBNMTMsOVYzLjVMMTguNSw5SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVXb3JkQm94ID0gXCJNMTUuNSwxN0gxNEwxMiw5LjVMMTAsMTdIOC41TDYuMSw3SDcuOEw5LjM0LDE0LjVMMTEuMyw3SDEyLjdMMTQuNjcsMTQuNUwxNi4yLDdIMTcuOU0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlV29yZEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTcuOSA3TDE1LjUgMTdIMTRMMTIgOS41TDEwIDE3SDguNUw2LjEgN0g3LjhMOS4zNCAxNC41TDExLjMgN0gxMi43TDE0LjY3IDE0LjVMMTYuMiA3SDE3LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVdvcmRPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE3LjM1IDEwTDE1LjI1IDE5SDEzLjg1TDEyLjA1IDEyLjIxTDEwLjI1IDE5SDguODVMNi42NSAxMEg4LjE1TDkuNTUgMTYuODFMMTEuMzUgMTBIMTIuNjVMMTQuNDUgMTYuODFMMTUuODUgMTBIMTcuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsbSA9IFwiTTMuNSwzSDVWMS44QzUsMS4zNiA1LjM2LDEgNS44LDFIMTAuMkMxMC42NCwxIDExLDEuMzYgMTEsMS44VjNIMTIuNUExLjUsMS41IDAgMCwxIDE0LDQuNVY1SDIyVjIwSDE0VjIwLjVBMS41LDEuNSAwIDAsMSAxMi41LDIySDMuNUExLjUsMS41IDAgMCwxIDIsMjAuNVY0LjVBMS41LDEuNSAwIDAsMSAzLjUsM00xOCw3VjlIMjBWN0gxOE0xNCw3VjlIMTZWN0gxNE0xMCw3VjlIMTJWN0gxME0xNCwxNlYxOEgxNlYxNkgxNE0xOCwxNlYxOEgyMFYxNkgxOE0xMCwxNlYxOEgxMlYxNkgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxtc3RyaXAgPSBcIk0xOCw5SDE2VjdIMThNMTgsMTNIMTZWMTFIMThNMTgsMTdIMTZWMTVIMThNOCw5SDZWN0g4TTgsMTNINlYxMUg4TTgsMTdINlYxNUg4TTE4LDNWNUgxNlYzSDhWNUg2VjNINFYyMUg2VjE5SDhWMjFIMTZWMTlIMThWMjFIMjBWM0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxtc3RyaXBCb3ggPSBcIk0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xIDIwLjEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlNNyAxOFYxNkg1VjE4SDdNNyAxM1YxMUg1VjEzSDdNNyA4VjZINVY4SDdNMTkgMThWMTZIMTdWMThIMTlNMTkgMTNWMTFIMTdWMTNIMTlNMTkgOFY2SDE3VjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsbXN0cmlwQm94TXVsdGlwbGUgPSBcIk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZNMjAsMkg4QTIsMiAwIDAsMCA2LDRWMTZBMiwyIDAgMCwwIDgsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMTAsMTVIOFYxM0gxMFYxNU0xMCwxMUg4VjlIMTBWMTFNMTAsN0g4VjVIMTBWN00yMCwxNUgxOFYxM0gyMFYxNU0yMCwxMUgxOFY5SDIwVjExTTIwLDdIMThWNUgyMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbG1zdHJpcE9mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjEsMjEuNzJMMTkuNzMsMjNMMTYsMTkuMjdWMjFIOFYxOUg2VjIxSDRWNy4yN0wxLDQuMjdNMTgsOVY3SDE2VjlIMThNMTgsMTNWMTFIMTZWMTNIMThNMTgsMTVIMTYuODJMNi44Miw1SDhWM0gxNlY1SDE4VjNIMjBWMTguMThMMTgsMTYuMThWMTVNOCwxM1YxMS4yN0w3LjczLDExSDZWMTNIOE04LDE3VjE1SDZWMTdIOE02LDNWNC4xOEw0LjgyLDNINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXIgPSBcIk0xNCwxMlYxOS44OEMxNC4wNCwyMC4xOCAxMy45NCwyMC41IDEzLjcxLDIwLjcxQzEzLjMyLDIxLjEgMTIuNjksMjEuMSAxMi4zLDIwLjcxTDEwLjI5LDE4LjdDMTAuMDYsMTguNDcgOS45NiwxOC4xNiAxMCwxNy44N1YxMkg5Ljk3TDQuMjEsNC42MkMzLjg3LDQuMTkgMy45NSwzLjU2IDQuMzgsMy4yMkM0LjU3LDMuMDggNC43OCwzIDUsM1YzSDE5VjNDMTkuMjIsMyAxOS40MywzLjA4IDE5LjYyLDMuMjJDMjAuMDUsMy41NiAyMC4xMyw0LjE5IDE5Ljc5LDQuNjJMMTQuMDMsMTJIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWVudSA9IFwiTTExIDExTDE2Ljc2IDMuNjJBMSAxIDAgMCAwIDE2LjU5IDIuMjJBMSAxIDAgMCAwIDE2IDJIMkExIDEgMCAwIDAgMS4zOCAyLjIyQTEgMSAwIDAgMCAxLjIxIDMuNjJMNyAxMVYxNi44N0ExIDEgMCAwIDAgNy4yOSAxNy43TDkuMjkgMTkuN0ExIDEgMCAwIDAgMTAuNyAxOS43QTEgMSAwIDAgMCAxMSAxOC44N1YxMU0xMyAxNkwxOCAyMUwyMyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJNZW51T3V0bGluZSA9IFwiTTEyIDE4Ljg4QTEgMSAwIDAgMSAxMS43MSAxOS43MUExIDEgMCAwIDEgMTAuMyAxOS43MUw2LjMgMTUuNzFBMSAxIDAgMCAxIDYgMTQuODdWOS43NUwxLjIxIDMuNjJBMSAxIDAgMCAxIDEuMzggMi4yMkExIDEgMCAwIDEgMiAySDE2QTEgMSAwIDAgMSAxNi42MiAyLjIyQTEgMSAwIDAgMSAxNi43OSAzLjYyTDEyIDkuNzVWMTguODhNNCA0TDggOS4wNlYxNC41OEwxMCAxNi41OFY5LjA1TDE0IDRNMTMgMTZMMTggMjFMMjMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWludXMgPSBcIk0xMiAxMlYxOS44OEMxMi4wNCAyMC4xOCAxMS45NCAyMC41IDExLjcxIDIwLjcxQzExLjMyIDIxLjEgMTAuNjkgMjEuMSAxMC4zIDIwLjcxTDguMjkgMTguN0M4LjA2IDE4LjQ3IDcuOTYgMTguMTYgOCAxNy44NlYxMkg3Ljk3TDIuMjEgNC42MkMxLjg3IDQuMTkgMS45NSAzLjU2IDIuMzggMy4yMkMyLjU3IDMuMDggMi43OCAzIDMgM1YzSDE3VjNDMTcuMjIgMyAxNy40MyAzLjA4IDE3LjYyIDMuMjJDMTguMDUgMy41NiAxOC4xMyA0LjE5IDE3Ljc5IDQuNjJMMTIuMDMgMTJIMTJNMTUgMTdIMjNWMTlIMTVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWludXNPdXRsaW5lID0gXCJNMTUgMTdIMjNWMTlIMTVWMTdNMTMgMTkuODhDMTMuMDQgMjAuMTggMTIuOTQgMjAuNSAxMi43MiAyMC43MUMxMi4zMiAyMS4xIDExLjY5IDIxLjEgMTEuMyAyMC43MUw3LjI5IDE2LjdDNy4wNiAxNi40NyA2Ljk2IDE2LjE2IDcgMTUuODdWMTAuNzVMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzVjNIMTdWM0MxNy4yMiAzIDE3LjQzIDMuMDggMTcuNjIgMy4yMkMxOC4wNSAzLjU2IDE4LjEzIDQuMTkgMTcuNzkgNC42MkwxMyAxMC43NVYxOS44OE01LjA0IDVMOSAxMC4wN1YxNS41OEwxMSAxNy41OFYxMC4wNUwxNC45NiA1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0w5LjUgMTEuMzdMOS45NyAxMkgxMFYxNy44N0M5Ljk2IDE4LjE2IDEwLjA2IDE4LjQ3IDEwLjI5IDE4LjdMMTIuMyAyMC43MUMxMi42OSAyMS4xIDEzLjMyIDIxLjEgMTMuNzEgMjAuNzFDMTMuOTQgMjAuNSAxNC4wNCAyMC4xOCAxNCAxOS44OFYxNS44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxNCAxMy4zNUw5LjQxIDguNzZMNC4xNSAzLjVMMi4zOSAxLjczTTYuMjEgM0wxNC41NCAxMS4zNEwxOS43OSA0LjYyQzIwLjEzIDQuMTkgMjAuMDUgMy41NiAxOS42MiAzLjIyQzE5LjQzIDMuMDggMTkuMjIgMyAxOSAzSDYuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyT2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMOSAxMC44OVYxNS44N0M4Ljk2IDE2LjE2IDkuMDYgMTYuNDcgOS4yOSAxNi43TDEzLjMgMjAuNzFDMTMuNjkgMjEuMSAxNC4zMiAyMS4xIDE0LjcxIDIwLjcxQzE0Ljk0IDIwLjUgMTUuMDQgMjAuMTggMTUgMTkuODhWMTYuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMTUgMTQuMzVWMTQuMzRMMTMgMTIuMzVMMTEgMTAuMzRMNC4xNSAzLjVMMi4zOSAxLjczTTYuMjEgM0w4LjIgNUgxNi45NkwxMy4xMSA5LjkxTDE1IDExLjhWMTAuNzVMMTkuNzkgNC42MkMyMC4xMyA0LjE5IDIwLjA1IDMuNTYgMTkuNjIgMy4yMkMxOS40MyAzLjA4IDE5LjIyIDMgMTkgM0g2LjIxTTExIDEyLjg5TDEzIDE0Ljg5VjE3LjU4TDExIDE1LjU4VjEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlck91dGxpbmUgPSBcIk0xNSwxOS44OEMxNS4wNCwyMC4xOCAxNC45NCwyMC41IDE0LjcxLDIwLjcxQzE0LjMyLDIxLjEgMTMuNjksMjEuMSAxMy4zLDIwLjcxTDkuMjksMTYuN0M5LjA2LDE2LjQ3IDguOTYsMTYuMTYgOSwxNS44N1YxMC43NUw0LjIxLDQuNjJDMy44Nyw0LjE5IDMuOTUsMy41NiA0LjM4LDMuMjJDNC41NywzLjA4IDQuNzgsMyA1LDNWM0gxOVYzQzE5LjIyLDMgMTkuNDMsMy4wOCAxOS42MiwzLjIyQzIwLjA1LDMuNTYgMjAuMTMsNC4xOSAxOS43OSw0LjYyTDE1LDEwLjc1VjE5Ljg4TTcuMDQsNUwxMSwxMC4wNlYxNS41OEwxMywxNy41OFYxMC4wNUwxNi45Niw1SDcuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyUGx1cyA9IFwiTTEyIDEyVjE5Ljg4QzEyLjA0IDIwLjE4IDExLjk0IDIwLjUgMTEuNzEgMjAuNzFDMTEuMzIgMjEuMSAxMC42OSAyMS4xIDEwLjMgMjAuNzFMOC4yOSAxOC43QzguMDYgMTguNDcgNy45NiAxOC4xNiA4IDE3Ljg3VjEySDcuOTdMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzSDE3QzE3LjIyIDMgMTcuNDMgMy4wOCAxNy42MiAzLjIyQzE4LjA1IDMuNTYgMTguMTMgNC4xOSAxNy43OSA0LjYyTDEyLjAzIDEySDEyTTE1IDE3SDE4VjE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlclBsdXNPdXRsaW5lID0gXCJNMTUgMTdIMThWMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdNMTMgMTkuODhDMTMuMDQgMjAuMTggMTIuOTQgMjAuNSAxMi43MiAyMC43MUMxMi4zMiAyMS4xIDExLjY5IDIxLjEgMTEuMyAyMC43MUw3LjI5IDE2LjdDNy4wNiAxNi40NyA2Ljk2IDE2LjE2IDcgMTUuODdWMTAuNzVMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzVjNIMTdWM0MxNy4yMiAzIDE3LjQzIDMuMDggMTcuNjIgMy4yMkMxOC4wNSAzLjU2IDE4LjEzIDQuMTkgMTcuNzkgNC42MkwxMyAxMC43NVYxOS44OE01LjA0IDVMOSAxMC4wN1YxNS41OEwxMSAxNy41OFYxMC4wNUwxNC45NiA1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyUmVtb3ZlID0gXCJNMTQuNzYsMjAuODNMMTcuNiwxOEwxNC43NiwxNS4xN0wxNi4xNywxMy43NkwxOSwxNi41N0wyMS44MywxMy43NkwyMy4yNCwxNS4xN0wyMC40MywxOEwyMy4yNCwyMC44M0wyMS44MywyMi4yNEwxOSwxOS40TDE2LjE3LDIyLjI0TDE0Ljc2LDIwLjgzTTEyLDEyVjE5Ljg4QzEyLjA0LDIwLjE4IDExLjk0LDIwLjUgMTEuNzEsMjAuNzFDMTEuMzIsMjEuMSAxMC42OSwyMS4xIDEwLjMsMjAuNzFMOC4yOSwxOC43QzguMDYsMTguNDcgNy45NiwxOC4xNiA4LDE3Ljg3VjEySDcuOTdMMi4yMSw0LjYyQzEuODcsNC4xOSAxLjk1LDMuNTYgMi4zOCwzLjIyQzIuNTcsMy4wOCAyLjc4LDMgMywzVjNIMTdWM0MxNy4yMiwzIDE3LjQzLDMuMDggMTcuNjIsMy4yMkMxOC4wNSwzLjU2IDE4LjEzLDQuMTkgMTcuNzksNC42MkwxMi4wMywxMkgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJSZW1vdmVPdXRsaW5lID0gXCJNMTQuNzMsMjAuODNMMTcuNTgsMThMMTQuNzMsMTUuMTdMMTYuMTUsMTMuNzZMMTksMTYuNTdMMjEuOCwxMy43NkwyMy4yMiwxNS4xN0wyMC40MSwxOEwyMy4yMiwyMC44M0wyMS44LDIyLjI0TDE5LDE5LjRMMTYuMTUsMjIuMjRMMTQuNzMsMjAuODNNMTMsMTkuODhDMTMuMDQsMjAuMTggMTIuOTQsMjAuNSAxMi43MSwyMC43MUMxMi4zMiwyMS4xIDExLjY5LDIxLjEgMTEuMywyMC43MUw3LjI5LDE2LjdDNy4wNiwxNi40NyA2Ljk2LDE2LjE2IDcsMTUuODdWMTAuNzVMMi4yMSw0LjYyQzEuODcsNC4xOSAxLjk1LDMuNTYgMi4zOCwzLjIyQzIuNTcsMy4wOCAyLjc4LDMgMywzVjNIMTdWM0MxNy4yMiwzIDE3LjQzLDMuMDggMTcuNjIsMy4yMkMxOC4wNSwzLjU2IDE4LjEzLDQuMTkgMTcuNzksNC42MkwxMywxMC43NVYxOS44OE01LjA0LDVMOSwxMC4wNlYxNS41OEwxMSwxNy41OFYxMC4wNUwxNC45Niw1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyVmFyaWFudCA9IFwiTTYsMTNIMThWMTFINk0zLDZWOEgyMVY2TTEwLDE4SDE0VjE2SDEwVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlclZhcmlhbnRNaW51cyA9IFwiTTIxIDhIM1Y2SDIxVjhNMTMuODEgMTZIMTBWMThIMTMuMDlDMTMuMjEgMTcuMjggMTMuNDYgMTYuNjEgMTMuODEgMTZNMTggMTFINlYxM0gxOFYxMU0yMyAxOEgxNVYyMEgyM1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJWYXJpYW50UGx1cyA9IFwiTTIxIDhIM1Y2SDIxVjhNMTMuODEgMTZIMTBWMThIMTMuMDlDMTMuMjEgMTcuMjggMTMuNDYgMTYuNjEgMTMuODEgMTZNMTggMTFINlYxM0gxOFYxMU0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJWYXJpYW50UmVtb3ZlID0gXCJNMjEgOEgzVjZIMjFWOE0xMy44MSAxNkgxMFYxOEgxMy4wOUMxMy4yMSAxNy4yOCAxMy40NiAxNi42MSAxMy44MSAxNk0xOCAxMUg2VjEzSDE4VjExTTIxLjEyIDE1LjQ2TDE5IDE3LjU5TDE2Ljg4IDE1LjQ2TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbmFuY2UgPSBcIk02LDE2LjVMMywxOS40NFYxMUg2TTExLDE0LjY2TDkuNDMsMTMuMzJMOCwxNC42NFY3SDExTTE2LDEzTDEzLDE2VjNIMTZNMTguODEsMTIuODFMMTcsMTFIMjJWMTZMMjAuMjEsMTQuMjFMMTMsMjEuMzZMOS41MywxOC4zNEw1Ljc1LDIySDNMOS40NywxNS42NkwxMywxOC42NFwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbmRSZXBsYWNlID0gXCJNMTEsNkMxMi4zOCw2IDEzLjYzLDYuNTYgMTQuNTQsNy40NkwxMiwxMEgxOFY0TDE1Ljk1LDYuMDVDMTQuNjgsNC43OCAxMi45Myw0IDExLDRDNy40Nyw0IDQuNTcsNi42MSA0LjA4LDEwSDYuMUM2LjU2LDcuNzIgOC41OCw2IDExLDZNMTYuNjQsMTUuMTRDMTcuMywxNC4yNCAxNy43NiwxMy4xNyAxNy45MiwxMkgxNS45QzE1LjQ0LDE0LjI4IDEzLjQyLDE2IDExLDE2QzkuNjIsMTYgOC4zNywxNS40NCA3LjQ2LDE0LjU0TDEwLDEySDRWMThMNi4wNSwxNS45NUM3LjMyLDE3LjIyIDkuMDcsMTggMTEsMThDMTIuNTUsMTggMTQsMTcuNSAxNS4xNCwxNi42NEwyMCwyMS41TDIxLjUsMjBMMTYuNjQsMTUuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmluZ2VycHJpbnQgPSBcIk0xNy44MSw0LjQ3QzE3LjczLDQuNDcgMTcuNjUsNC40NSAxNy41OCw0LjQxQzE1LjY2LDMuNDIgMTQsMyAxMiwzQzEwLjAzLDMgOC4xNSwzLjQ3IDYuNDQsNC40MUM2LjIsNC41NCA1LjksNC40NSA1Ljc2LDQuMjFDNS42MywzLjk3IDUuNzIsMy42NiA1Ljk2LDMuNTNDNy44MiwyLjUgOS44NiwyIDEyLDJDMTQuMTQsMiAxNiwyLjQ3IDE4LjA0LDMuNUMxOC4yOSwzLjY1IDE4LjM4LDMuOTUgMTguMjUsNC4xOUMxOC4xNiw0LjM3IDE4LDQuNDcgMTcuODEsNC40N00zLjUsOS43MkMzLjQsOS43MiAzLjMsOS42OSAzLjIxLDkuNjNDMyw5LjQ3IDIuOTMsOS4xNiAzLjA5LDguOTNDNC4wOCw3LjUzIDUuMzQsNi40MyA2Ljg0LDUuNjZDMTAsNC4wNCAxNCw0LjAzIDE3LjE1LDUuNjVDMTguNjUsNi40MiAxOS45MSw3LjUgMjAuOSw4LjlDMjEuMDYsOS4xMiAyMSw5LjQ0IDIwLjc4LDkuNkMyMC41NSw5Ljc2IDIwLjI0LDkuNzEgMjAuMDgsOS41QzE5LjE4LDguMjIgMTguMDQsNy4yMyAxNi42OSw2LjU0QzEzLjgyLDUuMDcgMTAuMTUsNS4wNyA3LjI5LDYuNTVDNS45Myw3LjI1IDQuNzksOC4yNSAzLjg5LDkuNUMzLjgxLDkuNjUgMy42Niw5LjcyIDMuNSw5LjcyTTkuNzUsMjEuNzlDOS42MiwyMS43OSA5LjUsMjEuNzQgOS40LDIxLjY0QzguNTMsMjAuNzcgOC4wNiwyMC4yMSA3LjM5LDE5QzYuNywxNy43NyA2LjM0LDE2LjI3IDYuMzQsMTQuNjZDNi4zNCwxMS42OSA4Ljg4LDkuMjcgMTIsOS4yN0MxNS4xMiw5LjI3IDE3LjY2LDExLjY5IDE3LjY2LDE0LjY2QTAuNSwwLjUgMCAwLDEgMTcuMTYsMTUuMTZBMC41LDAuNSAwIDAsMSAxNi42NiwxNC42NkMxNi42NiwxMi4yNCAxNC41NywxMC4yNyAxMiwxMC4yN0M5LjQzLDEwLjI3IDcuMzQsMTIuMjQgNy4zNCwxNC42NkM3LjM0LDE2LjEgNy42NiwxNy40MyA4LjI3LDE4LjVDOC45MSwxOS42NiA5LjM1LDIwLjE1IDEwLjEyLDIwLjkzQzEwLjMxLDIxLjEzIDEwLjMxLDIxLjQ0IDEwLjEyLDIxLjY0QzEwLDIxLjc0IDkuODgsMjEuNzkgOS43NSwyMS43OU0xNi45MiwxOS45NEMxNS43MywxOS45NCAxNC42OCwxOS42NCAxMy44MiwxOS4wNUMxMi4zMywxOC4wNCAxMS40NCwxNi40IDExLjQ0LDE0LjY2QTAuNSwwLjUgMCAwLDEgMTEuOTQsMTQuMTZBMC41LDAuNSAwIDAsMSAxMi40NCwxNC42NkMxMi40NCwxNi4wNyAxMy4xNiwxNy40IDE0LjM4LDE4LjIyQzE1LjA5LDE4LjcgMTUuOTIsMTguOTMgMTYuOTIsMTguOTNDMTcuMTYsMTguOTMgMTcuNTYsMTguOSAxNy45NiwxOC44M0MxOC4yMywxOC43OCAxOC41LDE4Ljk2IDE4LjU0LDE5LjI0QzE4LjU5LDE5LjUgMTguNDEsMTkuNzcgMTguMTMsMTkuODJDMTcuNTYsMTkuOTMgMTcuMDYsMTkuOTQgMTYuOTIsMTkuOTRNMTQuOTEsMjJDMTQuODcsMjIgMTQuODIsMjIgMTQuNzgsMjJDMTMuMTksMjEuNTQgMTIuMTUsMjAuOTUgMTEuMDYsMTkuODhDOS42NiwxOC41IDguODksMTYuNjQgOC44OSwxNC42NkM4Ljg5LDEzLjA0IDEwLjI3LDExLjcyIDExLjk3LDExLjcyQzEzLjY3LDExLjcyIDE1LjA1LDEzLjA0IDE1LjA1LDE0LjY2QzE1LjA1LDE1LjczIDE2LDE2LjYgMTcuMTMsMTYuNkMxOC4yOCwxNi42IDE5LjIxLDE1LjczIDE5LjIxLDE0LjY2QzE5LjIxLDEwLjg5IDE1Ljk2LDcuODMgMTEuOTYsNy44M0M5LjEyLDcuODMgNi41LDkuNDEgNS4zNSwxMS44NkM0Ljk2LDEyLjY3IDQuNzYsMTMuNjIgNC43NiwxNC42NkM0Ljc2LDE1LjQ0IDQuODMsMTYuNjcgNS40MywxOC4yN0M1LjUzLDE4LjUzIDUuNCwxOC44MiA1LjE0LDE4LjkxQzQuODgsMTkgNC41OSwxOC44NyA0LjUsMTguNjJDNCwxNy4zMSAzLjc3LDE2IDMuNzcsMTQuNjZDMy43NywxMy40NiA0LDEyLjM3IDQuNDUsMTEuNDJDNS43OCw4LjYzIDguNzMsNi44MiAxMS45Niw2LjgyQzE2LjUsNi44MiAyMC4yMSwxMC4zMyAyMC4yMSwxNC42NUMyMC4yMSwxNi4yNyAxOC44MywxNy41OSAxNy4xMywxNy41OUMxNS40MywxNy41OSAxNC4wNSwxNi4yNyAxNC4wNSwxNC42NUMxNC4wNSwxMy41OCAxMy4xMiwxMi43MSAxMS45NywxMi43MUMxMC44MiwxMi43MSA5Ljg5LDEzLjU4IDkuODksMTQuNjVDOS44OSwxNi4zNiAxMC41NSwxNy45NiAxMS43NiwxOS4xNkMxMi43MSwyMC4xIDEzLjYyLDIwLjYyIDE1LjAzLDIxQzE1LjMsMjEuMDggMTUuNDUsMjEuMzYgMTUuMzgsMjEuNjJDMTUuMzMsMjEuODUgMTUuMTIsMjIgMTQuOTEsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmluZ2VycHJpbnRPZmYgPSBcIk0xLjUsNC43N0wyLjc4LDMuNUwyMC41LDIxLjIyTDE5LjIzLDIyLjVMMTYuNjcsMTkuOTRDMTUuNTgsMTkuOSAxNC42MiwxOS42IDEzLjgyLDE5LjA1QzEyLjM0LDE4LjA1IDExLjQ2LDE2LjQzIDExLjQ0LDE0LjcxTDEwLjI3LDEzLjUzQzEwLjAzLDEzLjg1IDkuODksMTQuMjMgOS44OSwxNC42NUM5Ljg5LDE2LjM2IDEwLjU1LDE3Ljk2IDExLjc2LDE5LjE2QzEyLjcxLDIwLjEgMTMuNjIsMjAuNjIgMTUuMDMsMjFDMTUuMywyMS4wOCAxNS40NSwyMS4zNiAxNS4zOCwyMS42MkMxNS4zMywyMS44NSAxNS4xMiwyMiAxNC45MSwyMkgxNC43OEMxMy4xOSwyMS41NCAxMi4xNSwyMC45NSAxMS4wNiwxOS44OEM5LjY2LDE4LjUgOC44OSwxNi42NCA4Ljg5LDE0LjY2QzguODksMTMuOTcgOS4xNCwxMy4zMyA5LjU2LDEyLjgzTDguNSwxMS43N0M3Ljc4LDEyLjU0IDcuMzQsMTMuNTUgNy4zNCwxNC42NkM3LjM0LDE2LjEgNy42NiwxNy40MyA4LjI3LDE4LjVDOC45MSwxOS42NiA5LjM1LDIwLjE1IDEwLjEyLDIwLjkzQzEwLjMxLDIxLjEzIDEwLjMxLDIxLjQ0IDEwLjEyLDIxLjY0QzEwLDIxLjc0IDkuODgsMjEuNzkgOS43NSwyMS43OUM5LjYyLDIxLjc5IDkuNSwyMS43NCA5LjQsMjEuNjRDOC41MywyMC43NyA4LjA2LDIwLjIxIDcuMzksMTlDNi43LDE3Ljc3IDYuMzQsMTYuMjcgNi4zNCwxNC42NkM2LjM0LDEzLjI4IDYuODksMTIgNy43OSwxMS4wNkw2LjcsOS45N0M2LjE1LDEwLjUgNS42OSwxMS4xNSA1LjM1LDExLjg2QzQuOTYsMTIuNjcgNC43NiwxMy42MiA0Ljc2LDE0LjY2QzQuNzYsMTUuNDQgNC44MywxNi42NyA1LjQzLDE4LjI3QzUuNTMsMTguNTMgNS40LDE4LjgyIDUuMTQsMTguOTFDNC44OCwxOSA0LjU5LDE4Ljg3IDQuNSwxOC42MkM0LDE3LjMxIDMuNzcsMTYgMy43NywxNC42NkMzLjc3LDEzLjQ2IDQsMTIuMzcgNC40NSwxMS40MkM0Ljg0LDEwLjYxIDUuMzYsOS44OCA2LDkuMjZMNC45Nyw4LjI0QzQuNTgsOC42MyA0LjIyLDkuMDUgMy44OSw5LjVDMy44MSw5LjY1IDMuNjYsOS43MiAzLjUsOS43MkwzLjIxLDkuNjNDMyw5LjQ3IDIuOTMsOS4xNiAzLjA5LDguOTNDMy40NSw4LjQzIDMuODQsNy45NiA0LjI3LDcuNTNMMS41LDQuNzdNMTcuODEsNC40N0wxNy41OCw0LjQxQzE1LjY2LDMuNDIgMTQsMyAxMiwzQzEwLjAzLDMgOC4xNSwzLjQ3IDYuNDQsNC40MUw2LjI5LDQuNDZMNS43MSwzLjg5QzUuNzMsMy43NCA1LjgyLDMuNjEgNS45NiwzLjUzQzcuODIsMi41IDkuODYsMiAxMiwyQzE0LjE0LDIgMTYsMi40NyAxOC4wNCwzLjVDMTguMjksMy42NSAxOC4zOCwzLjk1IDE4LjI1LDQuMTlDMTguMTYsNC4zNyAxOCw0LjQ3IDE3LjgxLDQuNDdNMTcuMTUsNS42NUMxOC42NSw2LjQyIDE5LjkxLDcuNSAyMC45LDguOUMyMS4wNiw5LjEyIDIxLDkuNDQgMjAuNzgsOS42QzIwLjU1LDkuNzYgMjAuMjQsOS43MSAyMC4wOCw5LjVDMTkuMTgsOC4yMiAxOC4wNCw3LjIzIDE2LjY5LDYuNTRDMTQuMDYsNS4xOSAxMC43Niw1LjA4IDguMDMsNi4yMUw3LjI3LDUuNDVDMTAuMzQsNC4wNCAxNC4xNCw0LjEgMTcuMTUsNS42NU0xMiw5LjI3QzE1LjEyLDkuMjcgMTcuNjYsMTEuNjkgMTcuNjYsMTQuNjZBMC41LDAuNSAwIDAsMSAxNy4xNiwxNS4xNkwxNi45MywxNS4xMUwxNi43MiwxNC44OUwxNi42NiwxNC42NkMxNi42NiwxMi4yNyAxNC42MiwxMC4zMiAxMi4wOSwxMC4yN0wxMS4xNSw5LjMzTDEyLDkuMjdNMTQuMzgsMTguMjJDMTQuNzEsMTguNDUgMTUuMDcsMTguNjIgMTUuNDcsMTguNzNMMTIuNjMsMTUuOUMxMi45MiwxNi44MiAxMy41MywxNy42NSAxNC4zOCwxOC4yMk0xOS4yMSwxNC42NkMxOS4yMSwxMC44OSAxNS45Niw3LjgzIDExLjk2LDcuODNDMTEuMjYsNy44MyAxMC41OCw3LjkzIDkuOTMsOC4xMUw5LjEyLDcuM0MxMCw3IDEwLjk3LDYuODIgMTEuOTYsNi44MkMxNi41LDYuODIgMjAuMjEsMTAuMzMgMjAuMjEsMTQuNjVDMjAuMjEsMTUuNjUgMTkuNjksMTYuNTMgMTguODksMTcuMDZMMTguMTcsMTYuMzRDMTguNzksMTYgMTkuMjEsMTUuMzggMTkuMjEsMTQuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZSA9IFwiTTE3LjY2IDExLjJDMTcuNDMgMTAuOSAxNy4xNSAxMC42NCAxNi44OSAxMC4zOEMxNi4yMiA5Ljc4IDE1LjQ2IDkuMzUgMTQuODIgOC43MkMxMy4zMyA3LjI2IDEzIDQuODUgMTMuOTUgM0MxMyAzLjIzIDEyLjE3IDMuNzUgMTEuNDYgNC4zMkM4Ljg3IDYuNCA3Ljg1IDEwLjA3IDkuMDcgMTMuMjJDOS4xMSAxMy4zMiA5LjE1IDEzLjQyIDkuMTUgMTMuNTVDOS4xNSAxMy43NyA5IDEzLjk3IDguOCAxNC4wNUM4LjU3IDE0LjE1IDguMzMgMTQuMDkgOC4xNCAxMy45M0M4LjA4IDEzLjg4IDguMDQgMTMuODMgOCAxMy43NkM2Ljg3IDEyLjMzIDYuNjkgMTAuMjggNy40NSA4LjY0QzUuNzggMTAgNC44NyAxMi4zIDUgMTQuNDdDNS4wNiAxNC45NyA1LjEyIDE1LjQ3IDUuMjkgMTUuOTdDNS40MyAxNi41NyA1LjcgMTcuMTcgNiAxNy43QzcuMDggMTkuNDMgOC45NSAyMC42NyAxMC45NiAyMC45MkMxMy4xIDIxLjE5IDE1LjM5IDIwLjggMTcuMDMgMTkuMzJDMTguODYgMTcuNjYgMTkuNSAxNSAxOC41NiAxMi43MkwxOC40MyAxMi40NkMxOC4yMiAxMiAxNy42NiAxMS4yIDE3LjY2IDExLjJNMTQuNSAxNy41QzE0LjIyIDE3Ljc0IDEzLjc2IDE4IDEzLjQgMTguMUMxMi4yOCAxOC41IDExLjE2IDE3Ljk0IDEwLjUgMTcuMjhDMTEuNjkgMTcgMTIuNCAxNi4xMiAxMi42MSAxNS4yM0MxMi43OCAxNC40MyAxMi40NiAxMy43NyAxMi4zMyAxM0MxMi4yMSAxMi4yNiAxMi4yMyAxMS42MyAxMi41IDEwLjk0QzEyLjY5IDExLjMyIDEyLjg5IDExLjcgMTMuMTMgMTJDMTMuOSAxMyAxNS4xMSAxMy40NCAxNS4zNyAxNC44QzE1LjQxIDE0Ljk0IDE1LjQzIDE1LjA4IDE1LjQzIDE1LjIzQzE1LjQ2IDE2LjA1IDE1LjEgMTYuOTUgMTQuNSAxNy41SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZUFsZXJ0ID0gXCJNMTUuNjYgMTEuMkMxNS40MyAxMC45IDE1LjE1IDEwLjY0IDE0Ljg5IDEwLjM4QzE0LjIyIDkuNzggMTMuNDYgOS4zNSAxMi44MiA4LjcyQzExLjMzIDcuMjYgMTEgNC44NSAxMS45NSAzQzExIDMuMjMgMTAuMTcgMy43NSA5LjQ2IDQuMzJDNi44NyA2LjQgNS44NSAxMC4wNyA3LjA3IDEzLjIyQzcuMTEgMTMuMzIgNy4xNSAxMy40MiA3LjE1IDEzLjU1QzcuMTUgMTMuNzcgNyAxMy45NyA2LjggMTQuMDVDNi41NyAxNC4xNSA2LjMzIDE0LjA5IDYuMTQgMTMuOTNDNi4wOCAxMy44OCA2LjA0IDEzLjgzIDYgMTMuNzZDNC44NyAxMi4zMyA0LjY5IDEwLjI4IDUuNDUgOC42NEMzLjc4IDEwIDIuODcgMTIuMyAzIDE0LjQ3QzMuMDYgMTQuOTcgMy4xMiAxNS40NyAzLjI5IDE1Ljk3QzMuNDMgMTYuNTcgMy43IDE3LjE3IDQgMTcuN0M1LjA4IDE5LjQzIDYuOTUgMjAuNjcgOC45NiAyMC45MkMxMS4xIDIxLjE5IDEzLjM5IDIwLjggMTUuMDMgMTkuMzJDMTYuODYgMTcuNjYgMTcuNSAxNSAxNi41NiAxMi43MkwxNi40MyAxMi40NkMxNi4yMiAxMiAxNS42NiAxMS4yIDE1LjY2IDExLjJNMTIuNSAxNy41QzEyLjIyIDE3Ljc0IDExLjc2IDE4IDExLjQgMTguMUMxMC4yOCAxOC41IDkuMTYgMTcuOTQgOC41IDE3LjI4QzkuNjkgMTcgMTAuNCAxNi4xMiAxMC42MSAxNS4yM0MxMC43OCAxNC40MyAxMC40NiAxMy43NyAxMC4zMyAxM0MxMC4yMSAxMi4yNiAxMC4yMyAxMS42MyAxMC41IDEwLjk0QzEwLjY5IDExLjMyIDEwLjg5IDExLjcgMTEuMTMgMTJDMTEuOSAxMyAxMy4xMSAxMy40NCAxMy4zNyAxNC44QzEzLjQxIDE0Ljk0IDEzLjQzIDE1LjA4IDEzLjQzIDE1LjIzQzEzLjQ2IDE2LjA1IDEzLjEgMTYuOTUgMTIuNSAxNy41SDEyLjVNMjEgMTNIMTlWN0gyMVYxM00yMSAxN0gxOVYxNUgyMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlRXh0aW5ndWlzaGVyID0gXCJNMTAuNSw3SDExLjc1TDEyLDVIMTAuMjVMNiw3LjVWOUg0VjYuNUwxMCwzSDEyVjJIMTRWM0gxNkwxNywyLjVWNS41TDE2LDVIMTRMMTQuMjUsN0gxNS41QTEuNSwxLjUgMCAwLDEgMTcsOC41VjIySDlWOC41QTEuNSwxLjUgMCAwLDEgMTAuNSw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVIeWRyYW50ID0gXCJNNSAxNVYxNEg0VjEySDVWMTFIN1YxNUg1TTE5IDEyVjExSDE3VjE1SDE5VjE0SDIwVjEySDE5TTE4IDZIMTUuODZDMTUuNSA0LjYgMTQuNCAzLjUgMTMgMy4xNFYySDExVjMuMTRDOS42IDMuNSA4LjUgNC42IDguMTQgNkg2VjhIMThWNk0xOCAyMkg2QzYgMjAuOSA2LjkgMjAgOCAyMFY5SDE2VjIwQzE3LjExIDIwIDE4IDIwLjkgMTggMjJNMTAgMTNDMTAgMTQuMTEgMTAuOSAxNSAxMiAxNVMxNCAxNC4xMSAxNCAxMyAxMy4xMSAxMSAxMiAxMSAxMCAxMS45IDEwIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVIeWRyYW50QWxlcnQgPSBcIk0yMiA3SDIwVjEzSDIyVjdNMjIgMTVIMjBWMTdIMjJWMTVNMyAxNVYxNEgyVjEySDNWMTFINVYxNUgzTTE3IDEyVjExSDE1VjE1SDE3VjE0SDE4VjEySDE3TTE2IDZIMTMuODZDMTMuNSA0LjYgMTIuNCAzLjUgMTEgMy4xNFYySDlWMy4xNEM3LjYgMy41IDYuNSA0LjYgNi4xNCA2SDRWOEgxNlY2TTE2IDIySDRDNCAyMC45IDQuODkgMjAgNiAyMFY5SDE0VjIwQzE1LjExIDIwIDE2IDIwLjkgMTYgMjJNOCAxM0M4IDE0LjExIDguOSAxNSAxMCAxNVMxMiAxNC4xMSAxMiAxMyAxMS4xMSAxMSAxMCAxMSA4IDExLjkgOCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlSHlkcmFudE9mZiA9IFwiTTIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMOCA5Ljg5VjIwQzYuOSAyMCA2IDIwLjkgNiAyMkgxOEMxOCAyMC45IDE3LjExIDIwIDE2IDIwVjE3Ljg5TDIwLjg0IDIyLjczTTEwLjIyIDEyLjExTDEyLjg5IDE0Ljc4QzEyLjYyIDE0LjkyIDEyLjMyIDE1IDEyIDE1QzEwLjkgMTUgMTAgMTQuMTEgMTAgMTNDMTAgMTIuNjggMTAuMDggMTIuMzggMTAuMjIgMTIuMTFNMTEuMiA4TDguNDQgNS4yNEM4Ljk0IDQuMjEgOS44NyAzLjQzIDExIDMuMTRWMkgxM1YzLjE0QzE0LjQgMy41IDE1LjUgNC42IDE1Ljg2IDZIMThWOEgxMS4yTTE5IDExVjEySDIwVjE0SDE5VjE1SDE4LjJMMTcgMTMuOFYxMUgxOU01IDE1VjE0SDRWMTJINVYxMUg3VjE1SDVNMTYgMTIuOEwxMi4yIDlIMTZWMTIuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w3LjA5IDlDNS42NiAxMC4zNiA0Ljg4IDEyLjQ3IDUgMTQuNDdDNS4wNiAxNC45NyA1LjEyIDE1LjQ3IDUuMjkgMTUuOTdDNS40MyAxNi41NyA1LjcgMTcuMTcgNiAxNy43QzcuMDggMTkuNDMgOC45NSAyMC42NyAxMC45NiAyMC45MkMxMy4xIDIxLjE5IDE1LjM5IDIwLjggMTcuMDMgMTkuMzJDMTcuMSAxOS4yNiAxNy4xNSAxOS4xOCAxNy4yMiAxOS4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk04LjggMTQuMDVDOC41NyAxNC4xNSA4LjMzIDE0LjA5IDguMTQgMTMuOTNDOC4wOCAxMy44OCA4LjA0IDEzLjgzIDggMTMuNzZDNyAxMi40NyA2Ljc0IDEwLjY5IDcuMjYgOS4xNUw4LjU4IDEwLjQ3QzguNTggMTEuNCA4LjczIDEyLjMzIDkuMDcgMTMuMjJDOS4xMSAxMy4zMiA5LjE1IDEzLjQyIDkuMTUgMTMuNTVDOS4xNSAxMy43NyA5IDEzLjk3IDguOCAxNC4wNU0xNC41IDE3LjVDMTQuMjIgMTcuNzQgMTMuNzYgMTggMTMuNCAxOC4xQzEyLjI4IDE4LjUgMTEuMTYgMTcuOTQgMTAuNSAxNy4yOEMxMS42OSAxNyAxMi40IDE2LjEyIDEyLjYxIDE1LjIzQzEyLjY2IDE1IDEyLjY2IDE0Ljc2IDEyLjY0IDE0LjUzTDE1IDE2Ljg4QzE0Ljg1IDE3LjExIDE0LjY5IDE3LjMzIDE0LjUgMTcuNU0xOC45MiAxNS43Mkw5LjY1IDYuNDZDMTAuMTIgNS42NSAxMC43MiA0LjkyIDExLjQ2IDQuMzJDMTIuMTcgMy43NSAxMyAzLjIzIDEzLjk1IDNDMTMgNC44NSAxMy4zMyA3LjI2IDE0LjgyIDguNzJDMTUuNDYgOS4zNSAxNi4yMiA5Ljc4IDE2Ljg5IDEwLjM4QzE3LjE1IDEwLjY0IDE3LjQzIDEwLjkgMTcuNjYgMTEuMkMxNy42NiAxMS4yIDE4LjIyIDEyIDE4LjQzIDEyLjQ2TDE4LjU2IDEyLjcyQzE4Ljk2IDEzLjY5IDE5LjA2IDE0LjcyIDE4LjkyIDE1LjcyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVUcnVjayA9IFwiTTE3LjA0LDJDMTYuODUsMiAxNi42NiwyLjA0IDE2LjUsMi4xNEw1LjU5LDguNUg5LjU1TDE3LjUsMy44NkMxOCwzLjU4IDE4LjEzLDIuOTcgMTcuODUsMi41QzE3LjY4LDIuMiAxNy4zOCwyIDE3LjA0LDJNMTYsOFYxMEgzQTIsMiAwIDAsMCAxLDEySDJWMTVIMVYxOUgzQTMsMyAwIDAsMCA2LDIyQTMsMyAwIDAsMCA5LDE5SDE1QTMsMyAwIDAsMCAxOCwyMkEzLDMgMCAwLDAgMjEsMTlIMjNWMTIuNUwxOS41LDhIMTZNMTgsOS41SDE5TDIxLjUsMTIuNVYxMy41SDE4VjkuNU00LDEySDdWMTVINFYxMk05LDEySDEyVjE1SDlWMTJNMTQsMTJIMTZWMTVIMTRWMTJNNiwxNy41QTEuNSwxLjUgMCAwLDEgNy41LDE5QTEuNSwxLjUgMCAwLDEgNiwyMC41QTEuNSwxLjUgMCAwLDEgNC41LDE5QTEuNSwxLjUgMCAwLDEgNiwxNy41TTE4LDE3LjVBMS41LDEuNSAwIDAsMSAxOS41LDE5QTEuNSwxLjUgMCAwLDEgMTgsMjAuNUExLjUsMS41IDAgMCwxIDE2LjUsMTlBMS41LDEuNSAwIDAsMSAxOCwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmViYXNlID0gXCJNMjAsMTguNjlMMTIuNywyMi43NEMxMi4yLDIzIDExLjcsMjMgMTEuMiwyMi43NEw0LDE4LjY5TDE3LjA1LDUuNTRMMTcuNCw1LjQ0QzE3LjcsNS40NCAxNy44Nyw1LjU3IDE3LjksNS44NEwyMCwxOC42OU05LjM1LDUuNzRMNC44LDEzLjI5TDYuNywxLjM0QzYuNzMsMS4wNyA2LjksMC45NCA3LjIsMC45NEM3LjQsMC45NCA3LjUzLDEgNy42LDEuMTlMOS43NSw1LjE0TDkuMzUsNS43NE0xMy44NSw3TDQuMywxNi41OUwxMS41NSw0LjI5QzExLjY1LDQuMDkgMTEuOCw0IDEyLDRDMTIuMiw0IDEyLjMzLDQuMDkgMTIuNCw0LjI5TDEzLjg1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZWZveCA9IFwiTTkuMjcgNy45NEM5LjI3IDcuOTQgOS4yNyA3Ljk0IDkuMjcgNy45NE02Ljg1IDYuNzRDNi44NiA2Ljc0IDYuODYgNi43NCA2Ljg1IDYuNzRNMjEuMjggOC42QzIwLjg1IDcuNTUgMTkuOTYgNi40MiAxOS4yNyA2LjA2QzE5LjgzIDcuMTcgMjAuMTYgOC4yOCAyMC4yOSA5LjFMMjAuMjkgOS4xMkMxOS4xNiA2LjMgMTcuMjQgNS4xNiAxNS42NyAyLjY4QzE1LjU5IDIuNTYgMTUuNSAyLjQzIDE1LjQzIDIuM0MxNS4zOSAyLjIzIDE1LjM2IDIuMTYgMTUuMzIgMi4wOUMxNS4yNiAxLjk2IDE1LjIgMS44MyAxNS4xNyAxLjY5QzE1LjE3IDEuNjggMTUuMTYgMS42NyAxNS4xNSAxLjY3SDE1LjEzTDE1LjEyIDEuNjdMMTUuMTIgMS42N0wxNS4xMiAxLjY3QzEyLjkgMi45NyAxMS45NyA1LjI2IDExLjc0IDYuNzFDMTEuMDUgNi43NSAxMC4zNyA2LjkyIDkuNzUgNy4yMkM5LjYzIDcuMjcgOS41OCA3LjQxIDkuNjIgNy41M0M5LjY3IDcuNjcgOS44MyA3Ljc0IDkuOTYgNy42OEMxMC41IDcuNDIgMTEuMSA3LjI3IDExLjcgNy4yM0wxMS43NSA3LjIzQzExLjgzIDcuMjIgMTEuOTIgNy4yMiAxMiA3LjIyQzEyLjUgNy4yMSAxMi45NyA3LjI4IDEzLjQ0IDcuNDJMMTMuNSA3LjQ0QzEzLjYgNy40NiAxMy42NyA3LjUgMTMuNzUgNy41QzEzLjggNy41NCAxMy44NiA3LjU2IDEzLjkxIDcuNThMMTQuMDUgNy42NEMxNC4xMiA3LjY3IDE0LjE5IDcuNyAxNC4yNSA3LjczQzE0LjI4IDcuNzUgMTQuMzEgNy43NiAxNC4zNCA3Ljc4QzE0LjQxIDcuODIgMTQuNSA3Ljg1IDE0LjU0IDcuODlDMTQuNTggNy45MSAxNC42MiA3Ljk0IDE0LjY2IDcuOTZDMTUuMzkgOC40MSAxNiA5LjAzIDE2LjQxIDkuNzdDMTUuODggOS40IDE0LjkyIDkuMDMgMTQgOS4xOUMxNy42IDExIDE2LjYzIDE3LjE5IDExLjY0IDE2Ljk1QzExLjIgMTYuOTQgMTAuNzYgMTYuODUgMTAuMzQgMTYuN0MxMC4yNCAxNi42NyAxMC4xNCAxNi42MyAxMC4wNSAxNi41OEMxMCAxNi41NiA5LjkzIDE2LjUzIDkuODggMTYuNUM4LjY1IDE1Ljg3IDcuNjQgMTQuNjggNy41IDEzLjIzQzcuNSAxMy4yMyA4IDExLjUgMTAuODMgMTEuNUMxMS4xNCAxMS41IDEyIDEwLjY0IDEyLjAzIDEwLjRDMTIuMDMgMTAuMzEgMTAuMjkgOS42MiA5LjYxIDguOTVDOS4yNCA4LjU5IDkuMDcgOC40MiA4LjkyIDguMjlDOC44NCA4LjIyIDguNzUgOC4xNiA4LjY2IDguMUM4LjQzIDcuMyA4LjQyIDYuNDUgOC42MyA1LjY1QzcuNiA2LjEyIDYuOCA2Ljg2IDYuMjIgNy41SDYuMjJDNS44MiA3IDUuODUgNS4zNSA1Ljg3IDVDNS44NiA1IDUuNTcgNS4xNiA1LjU0IDUuMThDNS4xOSA1LjQzIDQuODYgNS43MSA0LjU2IDZDNC4yMSA2LjM3IDMuOSA2Ljc0IDMuNjIgNy4xNEMzIDguMDUgMi41IDkuMDkgMi4yOCAxMC4xOEMyLjI4IDEwLjE5IDIuMTggMTAuNTkgMi4xMSAxMS4xTDIuMDggMTEuMzNDMi4wNiAxMS41IDIuMDQgMTEuNjUgMiAxMS45MUwyIDExLjk0TDIgMTIuMjdMMiAxMi4zMkMyIDE3Ljg1IDYuNSAyMi4zMyAxMiAyMi4zM0MxNi45NyAyMi4zMyAyMS4wOCAxOC43NCAyMS44OCAxNEMyMS45IDEzLjg5IDIxLjkxIDEzLjc2IDIxLjkzIDEzLjYzQzIyLjEzIDExLjkxIDIxLjkxIDEwLjExIDIxLjI4IDguNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlcGxhY2UgPSBcIk0yMiwyMkgyVjIwSDIyVjIyTTIyLDZIMlYzSDIyVjZNMjAsN1YxOUgxN1YxMUMxNywxMSAxNC41LDEwIDEyLDEwQzkuNSwxMCA3LDExIDcsMTFWMTlINFY3SDIwTTE0LjUsMTQuNjdIMTQuNDdMMTQuODEsMTUuMjJMMTQuODcsMTUuMzRDMTUuMjksMTYuMzUgMTUsMTcuNSAxNC4yMSwxOC4yNEMxMy41LDE4LjkgMTIuNSwxOS4wNyAxMS41OCwxOC45NUMxMC43MSwxOC44NCA5LjksMTguMjkgOS40NSwxNy41M0M5LjMsMTcuMyA5LjE5LDE3LjAzIDkuMTMsMTYuNzdMOSwxNi4xMUM4Ljk2LDE1LjE1IDkuMzQsMTQuMTQgMTAuMDYsMTMuNTRDOS43MywxNC4yNiA5LjgxLDE1LjE2IDEwLjMsMTUuNzlMMTAuMzYsMTUuODdDMTAuNDQsMTUuOTQgMTAuNTUsMTUuOTcgMTAuNjQsMTUuOTJDMTAuNzMsMTUuODkgMTAuOCwxNS44IDEwLjgsMTUuN0wxMC43NiwxNS41NkMxMC4yMywxNC4xNyAxMC42OCwxMi41NSAxMS43OSwxMS42M0MxMi4xLDExLjM4IDEyLjUsMTEuMTUgMTIuODcsMTEuMDVDMTIuNDYsMTEuODcgMTIuNjEsMTIuOTMgMTMuMjUsMTMuNTdMMTQuMTQsMTQuM0wxNC41LDE0LjY3TTEzLjExLDE3LjQ0VjE3LjQ0QzEzLjM3LDE3LjIgMTMuNTMsMTYuOCAxMy41LDE2LjQ0VjE2LjI1QzEzLjM4LDE1LjY1IDEyLjg1LDE1LjQ2IDEyLjUsMTVMMTIuMjYsMTQuNTVDMTIuMTMsMTQuODUgMTIuMTIsMTUuMTMgMTIuMTcsMTUuNDZDMTIuMjMsMTUuOCAxMi4zNywxNi4wOSAxMi4yOSwxNi40NEMxMi4yLDE2LjgzIDExLjksMTcuMjIgMTEuMzcsMTcuMzVDMTEuNjcsMTcuNjQgMTIuMTUsMTcuODcgMTIuNjQsMTcuNzFMMTMuMTEsMTcuNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZXBsYWNlT2ZmID0gXCJNMjIsMjJIMlYyMEgyMlYyMk0yMiw2SDJWM0gyMlY2TTIwLDdWMTlIMTdWMTFDMTcsMTEgMTQuNSwxMCAxMiwxMEM5LjUsMTAgNywxMSA3LDExVjE5SDRWN0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJld29yayA9IFwiTTUuOCwxNi41OUw0LjUsMTUuMjhMMTIuMjYsNy41TDE2LjUsMTEuNzRMOC43MiwxOS41TDcuMjksMTguMDlDNy4wNCwxOC4xNiA2LjgsMTguMjggNi42MywxOC41QzYuNTcsMTguNTcgNi41LDE4LjY1IDYuNSwxOC43NEM2LjQyLDE4Ljg4IDYuMzgsMTkgNi4zMiwxOS4xNUM2LjIxLDE5LjQyIDYuMDksMTkuNjkgNS45MywxOS45M0M1LjgxLDIwLjEgNS42OCwyMC4yNiA1LjUzLDIwLjM5QzUuNDIsMjAuNSA1LjI5LDIwLjU5IDUuMTYsMjAuNjZDNS4wOCwyMC43MSA1LDIwLjc2IDQuOSwyMC43OUM0LjMsMjEuMDQgMy42MywyMSAzLDIxVjE5QzMuMjMsMTkgMy44MywxOSAzLjksMTlDNCwxOSA0LjA4LDE5IDQuMTYsMTguOTRDNC4xOCwxOC45MiA0LjE5LDE4LjkxIDQuMjEsMTguODlDNC4yOCwxOC44MSA0LjM0LDE4LjcgNC4zOSwxOC42QzQuNDcsMTguNDIgNC41MywxOC4yNCA0LjYsMTguMDZMNC42NCwxNy45NkM0Ljc2LDE3LjY5IDQuOSwxNy40NSA1LjA4LDE3LjIzQzUuMTgsMTcuMSA1LjMsMTcgNS40MiwxNi44N0M1LjU0LDE2Ljc3IDUuNjYsMTYuNjcgNS44LDE2LjU5TTIxLDNMMTkuODgsMTEuMTlMMTIuODEsNC4xMkwyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmV3b3JrT2ZmID0gXCJNMjAuODQgMjIuNzNMMTMuMTcgMTUuMDZMOC43MiAxOS41TDcuMjkgMTguMDlDNy4wNCAxOC4xNiA2LjggMTguMjggNi42MyAxOC41QzYuNTcgMTguNTcgNi41IDE4LjY1IDYuNSAxOC43NEM2LjQyIDE4Ljg4IDYuMzggMTkgNi4zMiAxOS4xNUM2LjIxIDE5LjQyIDYuMDkgMTkuNjkgNS45MyAxOS45M0M1LjgxIDIwLjEgNS42OCAyMC4yNiA1LjUzIDIwLjM5QzUuNDIgMjAuNSA1LjI5IDIwLjU5IDUuMTYgMjAuNjZDNS4wOCAyMC43MSA1IDIwLjc2IDQuOSAyMC43OUM0LjMgMjEuMDQgMy42MyAyMSAzIDIxVjE5SDMuOUM0IDE5IDQuMDggMTkgNC4xNiAxOC45NEw0LjIxIDE4Ljg5QzQuMjggMTguODEgNC4zNCAxOC43IDQuMzkgMTguNkM0LjQ3IDE4LjQyIDQuNTMgMTguMjQgNC42IDE4LjA2TDQuNjQgMTcuOTZDNC43NiAxNy42OSA0LjkgMTcuNDUgNS4wOCAxNy4yM0M1LjE4IDE3LjEgNS4zIDE3IDUuNDIgMTYuODdDNS41NCAxNi43NyA1LjY2IDE2LjY3IDUuOCAxNi41OUw0LjUgMTUuMjhMOC45NCAxMC44M0wxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDNMMTIuODEgNC4xMkwxOS44OCAxMS4xOUwyMSAzTTE2LjUgMTEuNzRMMTIuMjYgNy41TDExLjUgOC4yOEwxNS43MiAxMi41TDE2LjUgMTEuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlzaCA9IFwiTTEyLDIwTDEyLjc2LDE3QzkuNSwxNi43OSA2LjU5LDE1LjQgNS43NSwxMy41OEM1LjY2LDE0LjA2IDUuNTMsMTQuNSA1LjMzLDE0LjgzQzQuNjcsMTYgMy4zMywxNiAyLDE2QzMuMSwxNiAzLjUsMTQuNDMgMy41LDEyLjVDMy41LDEwLjU3IDMuMSw5IDIsOUMzLjMzLDkgNC42Nyw5IDUuMzMsMTAuMTdDNS41MywxMC41IDUuNjYsMTAuOTQgNS43NSwxMS40MkM2LjQsMTAgOC4zMiw4Ljg1IDEwLjY2LDguMzJMOSw1QzExLDUgMTMsNSAxNC4zMyw1LjY3QzE1LjQ2LDYuMjMgMTYuMTEsNy4yNyAxNi42OSw4LjM4QzE5LjYxLDkuMDggMjIsMTAuNjYgMjIsMTIuNUMyMiwxNC4zOCAxOS41LDE2IDE2LjUsMTYuNjZDMTUuNjcsMTcuNzYgMTQuODYsMTguNzggMTQuMTcsMTkuMzNDMTMuMzMsMjAgMTIuNjcsMjAgMTIsMjBNMTcsMTFBMSwxIDAgMCwwIDE2LDEyQTEsMSAwIDAsMCAxNywxM0ExLDEgMCAwLDAgMTgsMTJBMSwxIDAgMCwwIDE3LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpc2hPZmYgPSBcIk0yMC44IDIyLjdMMTUuNyAxNy42QzE1LjEgMTguMyAxNC42IDE4LjkgMTQuMSAxOS4zQzEzLjMgMjAgMTIuNyAyMCAxMiAyMEwxMi44IDE3QzkuNSAxNi44IDYuNiAxNS40IDUuOCAxMy42QzUuNyAxNC4xIDUuNiAxNC41IDUuNCAxNC44QzQuNyAxNiAzLjMgMTYgMiAxNkMzLjEgMTYgMy41IDE0LjQgMy41IDEyLjVTMy4xIDkgMiA5QzMuMyA5IDQuNyA5IDUuMyAxMC4yQzUuNSAxMC41IDUuNiAxMSA1LjcgMTEuNEM2IDEwLjcgNi43IDEwIDcuNiA5LjVMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTkuOCA2LjZMOSA1QzExIDUgMTMgNSAxNC4zIDUuN0MxNS40IDYuMyAxNi4xIDcuMyAxNi43IDguNEMxOS42IDkuMSAyMiAxMC43IDIyIDEyLjVDMjIgMTMuOCAyMC44IDE1IDE5IDE1LjhMOS44IDYuNk0xNiAxMkMxNiAxMi42IDE2LjQgMTMgMTcgMTNTMTggMTIuNiAxOCAxMiAxNy42IDExIDE3IDExIDE2IDExLjQgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlzaGJvd2wgPSBcIk0xOS4xMSw1SDIxVjNIM1Y1SDQuODlDMy4xMSw2LjggMiw5LjI3IDIsMTJDMiwxNS45NyA0LjMxLDE5LjM5IDcuNjYsMjFIMTYuMzRDMTkuNjksMTkuMzkgMjIsMTUuOTcgMjIsMTJDMjIsOS4yNyAyMC44OSw2LjggMTkuMTEsNU0xMy4yNSwxN0MxMi4wOSwxNyAxMS4wNiwxNi42NCAxMC4zMywxNi4xN0M5LjY3LDE3IDguMzMsMTcgNywxN0M4LjEsMTcgOC41LDE1Ljg4IDguNSwxNC41QzguNSwxMy4xMiA4LjEsMTIgNywxMkM4LjMzLDEyIDkuNjcsMTIgMTAuMzcsMTIuOTFDMTEuMDYsMTIuMzYgMTIuMDksMTIgMTMuMjUsMTJDMTUuMzIsMTIgMTcsMTMuMTIgMTcsMTQuNUMxNywxNS44OCAxNS4zMiwxNyAxMy4yNSwxN00xNiw3QzEzLjU2LDguNzEgMTAuNDQsOC43MSA4LDdDNy4wNiw3LjY2IDYsOC4wOSA0Ljk1LDguMjVDNS4zMSw3LjU4IDUuNzcsNi45NiA2LjMyLDYuNDFMNy43LDVIMTYuM0wxNy42OCw2LjQxQzE4LjIzLDYuOTYgMTguNjksNy41OCAxOS4wNSw4LjI1QzE4LDguMDkgMTYuOTQsNy42NiAxNiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpc2hib3dsT3V0bGluZSA9IFwiTTE5LjExLDVIMjFWM0gzVjVINC44OUMzLjExLDYuOCAyLDkuMjcgMiwxMkMyLDE1Ljk3IDQuMzEsMTkuMzkgNy42NiwyMUgxNi4zNEMxOS42OSwxOS4zOSAyMiwxNS45NyAyMiwxMkMyMiw5LjI3IDIwLjg5LDYuOCAxOS4xMSw1TTYuMzIsNi40MUw3LjcsNUgxNi4zTDE3LjY4LDYuNDFDMTguMjMsNi45NiAxOC42OSw3LjU4IDE5LjA1LDguMjVDMTgsOC4wOSAxNi45NCw3LjY2IDE2LDdDMTMuNTYsOC43MSAxMC40NCw4LjcxIDgsN0M3LjA2LDcuNjYgNiw4LjA5IDQuOTUsOC4yNUM1LjMxLDcuNTggNS43Nyw2Ljk2IDYuMzIsNi40MU0xNS44NSwxOUg4LjE1QzUuNTgsMTcuNTkgNCwxNC45NSA0LDEyQzQsMTEuNDMgNC4wNywxMC44NiA0LjE5LDEwLjMyQzUuNSwxMC4yOSA2LjgsOS45NSA4LDkuMzNDMTAuNSwxMC42MyAxMy41LDEwLjYzIDE2LDkuMzNDMTcuMiw5Ljk1IDE4LjUsMTAuMjkgMTkuODEsMTAuMzJDMTkuOTMsMTAuODYgMjAsMTEuNDMgMjAsMTJDMjAsMTQuOTUgMTguNDIsMTcuNTkgMTUuODUsMTlNMTcsMTQuNUMxNywxNS44OCAxNS4zMiwxNyAxMy4yNSwxN0MxMi4wOSwxNyAxMS4wNiwxNi42NCAxMC4zMywxNi4xNkM5LjY3LDE3IDguMzMsMTcgNywxN0M4LjEsMTcgOC41LDE1Ljg4IDguNSwxNC41QzguNSwxMy4xMiA4LjEsMTIgNywxMkM4LjMzLDEyIDkuNjcsMTIgMTAuMzcsMTIuOTFDMTEuMDYsMTIuMzYgMTIuMDksMTIgMTMuMjUsMTJDMTUuMzIsMTIgMTcsMTMuMTIgMTcsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXRUb1BhZ2UgPSBcIk0yMCwySDRDMi44OSwyIDIsMi44OSAyLDRWMjBDMiwyMS4xMSAyLjg5LDIyIDQsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMk0xMiw0TDE1LDdIMTNWOUgxMVY3SDlNNywxNUw0LDEyTDcsOVYxMUg5VjEzSDdNMTIsMjBMOSwxN0gxMVYxNUgxM1YxN0gxNU0xNywxNVYxM0gxNVYxMUgxN1Y5TDIwLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpRml0VG9QYWdlT3V0bGluZSA9IFwiTTIwLDJINEMyLjg5LDIgMiwyLjg5IDIsNFYyMEMyLDIxLjExIDIuODksMjIgNCwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY0QzIyLDIuODkgMjEuMTEsMiAyMCwyTTIwLDIwSDRWNEgyME0xMyw4VjEwSDExVjhIOUwxMiw1TDE1LDhNMTYsMTVWMTNIMTRWMTFIMTZWOUwxOSwxMk0xMCwxM0g4VjE1TDUsMTJMOCw5VjExSDEwTTE1LDE2TDEyLDE5TDksMTZIMTFWMTRIMTNWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnID0gXCJNMTQuNCw2TDE0LDRINVYyMUg3VjE0SDEyLjZMMTMsMTZIMjBWNkgxNC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdDaGVja2VyZWQgPSBcIk0xNC40LDZIMjBWMTZIMTNMMTIuNiwxNEg3VjIxSDVWNEgxNEwxNC40LDZNMTQsMTRIMTZWMTJIMThWMTBIMTZWOEgxNFYxMEwxMyw4VjZIMTFWOEg5VjZIN1Y4SDlWMTBIN1YxMkg5VjEwSDExVjEySDEzVjEwTDE0LDEyVjE0TTExLDEwVjhIMTNWMTBIMTFNMTQsMTBIMTZWMTJIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhZ01pbnVzID0gXCJNMTIuNCw1SDE4VjE1SDExTDEwLjYsMTNINVYyMEgzVjNIMTJMMTIuNCw1TTE0LDE3SDIyVjE5SDE0VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdNaW51c091dGxpbmUgPSBcIk0xMi4zNiA2TDEyLjc2IDhIMThWMTRIMTQuNjRMMTQuMjQgMTJIN1Y2SDEyLjM2TTE0IDRINVYyMUg3VjE0SDEyLjZMMTMgMTZIMjBWNkgxNC40TTIzIDE4SDE1VjIwSDIzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdPdXRsaW5lID0gXCJNMTIuMzYsNkwxMi43Niw4SDE4VjE0SDE0LjY0TDE0LjI0LDEySDdWNkgxMi4zNk0xNCw0SDVWMjFIN1YxNEgxMi42TDEzLDE2SDIwVjZIMTQuNFwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTIuNCw1SDE4VjEyQzE1Ljc4LDEyIDEzLjg0LDEzLjIxIDEyLjgsMTVIMTFMMTAuNiwxM0g1VjIwSDNWM0gxMkwxMi40LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhZ1BsdXNPdXRsaW5lID0gXCJNMTMgMTZMMTIuNiAxNEg3VjIxSDVWNEgxNEwxNC40IDZIMjBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWOEgxMi43NkwxMi4zNiA2SDdWMTJIMTQuMjRMMTQuNjQgMTRIMTUuNjlDMTQuOTIgMTQuNSAxNC4yNyAxNS4yIDEzLjgxIDE2SDEzTTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdSZW1vdmUgPSBcIk0xNC40NiwxNS44OEwxNS44OCwxNC40NkwxOCwxNi41OUwyMC4xMiwxNC40NkwyMS41NCwxNS44OEwxOS40MSwxOEwyMS41NCwyMC4xMkwyMC4xMiwyMS41NEwxOCwxOS40MUwxNS44OCwyMS41NEwxNC40NiwyMC4xMkwxNi41OSwxOEwxNC40NiwxNS44OE0xMi40LDVIMThWMTJDMTUuNzgsMTIgMTMuODQsMTMuMjEgMTIuOCwxNUgxMUwxMC42LDEzSDVWMjBIM1YzSDEyTDEyLjQsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnUmVtb3ZlT3V0bGluZSA9IFwiTTEzIDE2TDEyLjYgMTRIN1YyMUg1VjRIMTRMMTQuNCA2SDIwVjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjhIMTIuNzZMMTIuMzYgNkg3VjEySDE0LjI0TDE0LjY0IDE0SDE1LjY5QzE0LjkyIDE0LjUgMTQuMjcgMTUuMiAxMy44MSAxNkgxM00yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnVHJpYW5nbGUgPSBcIk03LDJIOVYyMkg3VjJNMTksOUwxMSwxNC42VjMuNEwxOSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdWYXJpYW50ID0gXCJNNiwzQTEsMSAwIDAsMSA3LDRWNC44OEM4LjA2LDQuNDQgOS41LDQgMTEsNEMxNCw0IDE0LDYgMTYsNkMxOSw2IDIwLDQgMjAsNFYxMkMyMCwxMiAxOSwxNCAxNiwxNEMxMywxNCAxMywxMiAxMSwxMkM4LDEyIDcsMTQgNywxNFYyMUg1VjRBMSwxIDAgMCwxIDYsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnVmFyaWFudE91dGxpbmUgPSBcIk02LDNBMSwxIDAgMCwxIDcsNFY0Ljg4QzguMDYsNC40NCA5LjUsNCAxMSw0QzE0LDQgMTQsNiAxNiw2QzE5LDYgMjAsNCAyMCw0VjEyQzIwLDEyIDE5LDE0IDE2LDE0QzEzLDE0IDEzLDEyIDExLDEyQzgsMTIgNywxNCA3LDE0VjIxSDVWNEExLDEgMCAwLDEgNiwzTTcsNy4yNVYxMS41QzcsMTEuNSA5LDEwIDExLDEwQzEzLDEwIDE0LDEyIDE2LDEyQzE4LDEyIDE4LDExIDE4LDExVjcuNUMxOCw3LjUgMTcsOCAxNiw4QzE0LDggMTMsNiAxMSw2QzksNiA3LDcuMjUgNyw3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXJlID0gXCJNNywxMUgxVjEzSDdWMTFNOS4xNyw3Ljc2TDcuMDUsNS42NEw1LjY0LDcuMDVMNy43Niw5LjE3TDkuMTcsNy43Nk0xMywxSDExVjdIMTNWMU0xOC4zNiw3LjA1TDE2Ljk1LDUuNjRMMTQuODMsNy43NkwxNi4yNCw5LjE3TDE4LjM2LDcuMDVNMTcsMTFWMTNIMjNWMTFIMTdNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTE0LjgzLDE2LjI0TDE2Ljk1LDE4LjM2TDE4LjM2LDE2Ljk1TDE2LjI0LDE0LjgzTDE0LjgzLDE2LjI0TTUuNjQsMTYuOTVMNy4wNSwxOC4zNkw5LjE3LDE2LjI0TDcuNzYsMTQuODNMNS42NCwxNi45NU0xMSwyM0gxM1YxN0gxMVYyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaCA9IFwiTTcsMlYxM0gxMFYyMkwxNywxMEgxM0wxNywySDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hBbGVydCA9IFwiTTUsMlYxM0g4VjIyTDE1LDEwSDExTDE1LDJNMTcsMTVIMTlWMTdIMTdWMTVNMTcsN0gxOVYxM0gxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNoQWxlcnRPdXRsaW5lID0gXCJNNSwySDE1TDExLjUsOUgxNUw4LDIyVjE0SDVWMk03LDRWMTJIMTBWMTQuNjZMMTIsMTFIOC4yNEwxMS43Niw0TTE3LDE1SDE5VjE3SDE3VjE1TTE3LDdIMTlWMTNIMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaEF1dG8gPSBcIk0xNi44NSw3LjY1TDE4LDRMMTkuMTUsNy42NU0xOSwySDE3TDEzLjgsMTFIMTUuN0wxNi40LDlIMTkuNkwyMC4zLDExSDIyLjJNMywyVjE0SDZWMjNMMTMsMTFIOUwxMywySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hDaXJjbGUgPSBcIk0xMS41LDIwTDE2LjM2LDEwLjI3SDEzVjRMOCwxMy43M0gxMS41VjIwTTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hPZmYgPSBcIk0xNywxMEgxM0wxNywySDdWNC4xOEwxNS40NiwxMi42NE0zLjI3LDNMMiw0LjI3TDcsOS4yN1YxM0gxMFYyMkwxMy41OCwxNS44NkwxNy43MywyMEwxOSwxOC43M0wzLjI3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hPdXRsaW5lID0gXCJNNywySDE3TDEzLjUsOUgxN0wxMCwyMlYxNEg3VjJNOSw0VjEySDEyVjE0LjY2TDE0LDExSDEwLjI0TDEzLjc2LDRIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaFJlZEV5ZSA9IFwiTTE2LDVDMTUuNDQsNSAxNSw1LjQ0IDE1LDZDMTUsNi41NiAxNS40NCw3IDE2LDdDMTYuNTYsNyAxNyw2LjU2IDE3LDZDMTcsNS40NCAxNi41Niw1IDE2LDVNMTYsMkMxMy4yNywyIDEwLjk0LDMuNjYgMTAsNkMxMC45NCw4LjM0IDEzLjI3LDEwIDE2LDEwQzE4LjczLDEwIDIxLjA2LDguMzQgMjIsNkMyMS4wNiwzLjY2IDE4LjczLDIgMTYsMk0xNiwzLjVBMi41LDIuNSAwIDAsMSAxOC41LDZBMi41LDIuNSAwIDAsMSAxNiw4LjVBMi41LDIuNSAwIDAsMSAxMy41LDZBMi41LDIuNSAwIDAsMSAxNiwzLjVNMywyVjE0SDZWMjNMMTMsMTFIOUwxMC4xMiw4LjVDOS40NCw3Ljc2IDguODgsNi45MyA4LjUsNkM5LjE5LDQuMjkgMTAuNSwyLjg4IDEyLjExLDJIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaGxpZ2h0ID0gXCJNOSwxMEw2LDVIMThMMTUsMTBIOU0xOCw0SDZWMkgxOFY0TTksMjJWMTFIMTVWMjJIOU0xMiwxM0ExLDEgMCAwLDAgMTEsMTRBMSwxIDAgMCwwIDEyLDE1QTEsMSAwIDAsMCAxMywxNEExLDEgMCAwLDAgMTIsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hsaWdodE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUsMTguMjdWMjJIOVYxMi4yN0wyLDUuMjdNMTgsNUwxNSwxMEgxMS44Mkw2LjgyLDVIMThNMTgsNEg2VjJIMThWNE0xNSwxMVYxMy4xOEwxMi44MiwxMUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzayA9IFwiTTYsMjJBMywzIDAgMCwxIDMsMTlDMywxOC40IDMuMTgsMTcuODQgMy41LDE3LjM3TDksNy44MVY2QTEsMSAwIDAsMSA4LDVWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY1QTEsMSAwIDAsMSAxNSw2VjcuODFMMjAuNSwxNy4zN0MyMC44MiwxNy44NCAyMSwxOC40IDIxLDE5QTMsMyAwIDAsMSAxOCwyMkg2TTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDE2LjUzLDE0LjQ3TDE0LDE3TDguOTMsMTEuOTNMNS4xOCwxOC40M0M1LjA3LDE4LjU5IDUsMTguNzkgNSwxOU0xMywxMEExLDEgMCAwLDAgMTIsMTFBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxNCwxMUExLDEgMCAwLDAgMTMsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eSA9IFwiTTYsMjJBMywzIDAgMCwxIDMsMTlDMywxOC40IDMuMTgsMTcuODQgMy41LDE3LjM3TDksNy44MVY2QTEsMSAwIDAsMSA4LDVWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY1QTEsMSAwIDAsMSAxNSw2VjcuODFMMjAuNSwxNy4zN0MyMC44MiwxNy44NCAyMSwxOC40IDIxLDE5QTMsMyAwIDAsMSAxOCwyMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlNaW51cyA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTYgMjJDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE0LjkyIDEyLjg0IDEzIDE1LjIgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTMgMjJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza0VtcHR5TWludXNPdXRsaW5lID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2QzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNi44NiAxMi4zNSAxNi4yNCAxMi42MyAxNS42OSAxM0wxMyA4LjM1VjRIMTFWOC4zNUw1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlPZmYgPSBcIk0yMC44IDIyLjdMMTkuNiAyMS41QzE5LjEgMjEuOCAxOC42IDIyIDE4IDIySDZDNC4zIDIyIDMgMjAuNyAzIDE5QzMgMTguNCAzLjIgMTcuOCAzLjUgMTcuNEw3LjkgOS44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS40TDIwLjggMjIuN00xNSA3LjhWNkMxNS42IDYgMTYgNS42IDE2IDVWNEMxNiAyLjkgMTUuMSAyIDE0IDJIMTBDOC45IDIgOCAyLjkgOCA0VjQuOEwyMC40IDE3LjJMMTUgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkuNCAxMS4yTDE4IDIwQzE4LjEgMjAgMTggMjAgMTggMjBNMTEgNy44TDggNC44VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xIDIgMTYgMi45IDE2IDRWNUMxNiA1LjYgMTUuNiA2IDE1IDZWNy44TDIwLjQgMTcuMkwxNSAxMS44TDEzIDguNFY0SDExVjcuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza0VtcHR5T3V0bGluZSA9IFwiTTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDEzLDguMzVWNEgxMVY4LjM1TDUuMTgsMTguNDNDNS4wNywxOC41OSA1LDE4Ljc5IDUsMTlNNiwyMkEzLDMgMCAwLDEgMywxOUMzLDE4LjQgMy4xOCwxNy44NCAzLjUsMTcuMzdMOSw3LjgxVjZBMSwxIDAgMCwxIDgsNVY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjVBMSwxIDAgMCwxIDE1LDZWNy44MUwyMC41LDE3LjM3QzIwLjgyLDE3Ljg0IDIxLDE4LjQgMjEsMTlBMywzIDAgMCwxIDE4LDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVBsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNC45MiAxMi44NCAxMyAxNS4yIDEzIDE4QzEzIDE5LjU0IDEzLjU4IDIwLjk0IDE0LjUzIDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVBsdXNPdXRsaW5lID0gXCJNMTggMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdIMThWMTRNNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2QzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNi44NiAxMi4zNSAxNi4yNCAxMi42MyAxNS42OSAxM0wxMyA4LjM1VjRIMTFWOC4zNUw1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlSZW1vdmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41MyAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41M0wxNS40NyAyMC4xMkwxNy41OSAxOEwxNS40NiAxNS44OE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNC45MiAxMi44NCAxMyAxNS4yIDEzIDE4QzEzIDE5LjU0IDEzLjU4IDIwLjk0IDE0LjUzIDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVJlbW92ZU91dGxpbmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41MyAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41M0wxNS40NyAyMC4xMkwxNy41OSAxOEwxNS40NiAxNS44OE01IDE5QzUgMTkuNTUgNS40NSAyMCA2IDIwSDEzLjM0QzEzLjYxIDIwLjc1IDE0IDIxLjQyIDE0LjUzIDIySDZDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE2Ljg2IDEyLjM1IDE2LjI0IDEyLjYzIDE1LjY5IDEzTDEzIDguMzVWNEgxMVY4LjM1TDUuMTggMTguNDNDNS4wNyAxOC41OSA1IDE4Ljc5IDUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tNaW51cyA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTYgMjJDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE1LjUgMTIuNyAxMy44NiAxNC4yNiAxMy4yNiAxNi4yNkw4LjkzIDExLjkzTDUuMTggMTguNDNDNS4wNyAxOC41OSA1IDE4Ljc5IDUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINk0xMyAxMEMxMi40NSAxMCAxMiAxMC40NSAxMiAxMUMxMiAxMS41NSAxMi40NSAxMiAxMyAxMkMxMy41NSAxMiAxNCAxMS41NSAxNCAxMUMxNCAxMC40NSAxMy41NSAxMCAxMyAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza01pbnVzT3V0bGluZSA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkgMTEuOUwxNCAxN0wxNC42IDE2LjRMMTggMjBDMTguMSAyMCAxOCAyMCAxOCAyME04IDQuOFY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS42IDE1LjYgNiAxNSA2VjcuOEwyMC40IDE3LjJMOCA0LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkuNCAxMS4yTDEzLjYgMTUuNEwxMyAxNkwxMC40IDEzLjRMNy43IDE4SDE2LjFMMTggMjBDMTguMSAyMCAxOCAyMCAxOCAyME0xMSA3LjhMOCA0LjhWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNiAxNS42IDYgMTUgNlY3LjhMMjAuNCAxNy4yTDE1IDExLjhMMTMgOC40VjRIMTFWNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrT3V0bGluZSA9IFwiTTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDEzLDguMzVWNEgxMVY4LjM1TDUuMTgsMTguNDNDNS4wNywxOC41OSA1LDE4Ljc5IDUsMTlNNiwyMkEzLDMgMCAwLDEgMywxOUMzLDE4LjQgMy4xOCwxNy44NCAzLjUsMTcuMzdMOSw3LjgxVjZBMSwxIDAgMCwxIDgsNVY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjVBMSwxIDAgMCwxIDE1LDZWNy44MUwyMC41LDE3LjM3QzIwLjgyLDE3Ljg0IDIxLDE4LjQgMjEsMTlBMywzIDAgMCwxIDE4LDIySDZNMTMsMTZMMTQuMzQsMTQuNjZMMTYuMjcsMThINy43M0wxMC4zOSwxMy4zOUwxMywxNk0xMi41LDEyQTAuNSwwLjUgMCAwLDEgMTMsMTIuNUEwLjUsMC41IDAgMCwxIDEyLjUsMTNBMC41LDAuNSAwIDAsMSAxMiwxMi41QTAuNSwwLjUgMCAwLDEgMTIuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza1BsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNS41IDEyLjcgMTMuODYgMTQuMjYgMTMuMjYgMTYuMjZMOC45MyAxMS45M0w1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5QzUgMTkuNTUgNS40NSAyMCA2IDIwSDEzLjM0QzEzLjYxIDIwLjc1IDE0IDIxLjQyIDE0LjUzIDIySDZNMTMgMTBDMTIuNDUgMTAgMTIgMTAuNDUgMTIgMTFDMTIgMTEuNTUgMTIuNDUgMTIgMTMgMTJDMTMuNTUgMTIgMTQgMTEuNTUgMTQgMTFDMTQgMTAuNDUgMTMuNTUgMTAgMTMgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tQbHVzT3V0bGluZSA9IFwiTTE4IDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUmVtb3ZlID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNNiAyMkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTUuNSAxMi43IDEzLjg2IDE0LjI2IDEzLjI2IDE2LjI2TDguOTMgMTEuOTNMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2TTEzIDEwQzEyLjQ1IDEwIDEyIDEwLjQ1IDEyIDExQzEyIDExLjU1IDEyLjQ1IDEyIDEzIDEyQzEzLjU1IDEyIDE0IDExLjU1IDE0IDExQzE0IDEwLjQ1IDEzLjU1IDEwIDEzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUmVtb3ZlT3V0bGluZSA9IFwiTTE1LjQ2IDE1Ljg4TDE2Ljg4IDE0LjQ2TDE5IDE2LjU5TDIxLjEyIDE0LjQ3TDIyLjUzIDE1Ljg4TDIwLjQxIDE4TDIyLjU0IDIwLjEyTDIxLjEyIDIxLjU0TDE5IDE5LjQxTDE2Ljg4IDIxLjUzTDE1LjQ3IDIwLjEyTDE3LjU5IDE4TDE1LjQ2IDE1Ljg4TTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUm91bmRCb3R0b20gPSBcIk0xOSAxNUMxOSAxOC44NyAxNS44NyAyMiAxMiAyMkM4LjEzIDIyIDUgMTguODcgNSAxNUM1IDEyLjIxIDYuNjQgOS44IDkgOC42N1Y1QzkgNC40NSA5LjQ1IDQgMTAgNEgxMC41TDkuNSAySDE0LjVMMTMuNSA0SDE0QzE0LjU1IDQgMTUgNC40NSAxNSA1VjguNjdDMTcuMzYgOS44IDE5IDEyLjIxIDE5IDE1TTExIDZWMTAuMUM4LjcyIDEwLjU2IDcgMTIuNTggNyAxNUw3LjA4IDE1LjkxTDkgMTMuOTNMMTMuMDcgMThMMTYuOTMgMTQuMTRDMTYuNTggMTIuMTIgMTUgMTAuNSAxMyAxMC4xVjZIMTFNMTMuMDcgMTJDMTMuNjIgMTIgMTQuMDcgMTIuNDUgMTQuMDcgMTNDMTQuMDcgMTMuNTUgMTMuNjIgMTQgMTMuMDcgMTRDMTIuNSAxNCAxMi4wNyAxMy41NSAxMi4wNyAxM0MxMi4wNyAxMi40NSAxMi41IDEyIDEzLjA3IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUm91bmRCb3R0b21FbXB0eSA9IFwiTTE5IDE1QzE5IDE4Ljg3IDE1Ljg3IDIyIDEyIDIyQzguMTMgMjIgNSAxOC44NyA1IDE1QzUgMTIuMjEgNi42NCA5LjggOSA4LjY3VjVDOSA0LjQ1IDkuNDUgNCAxMCA0SDEwLjVMOS41IDJIMTQuNUwxMy41IDRIMTRDMTQuNTUgNCAxNSA0LjQ1IDE1IDVWOC42N0MxNy4zNiA5LjggMTkgMTIuMjEgMTkgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tSb3VuZEJvdHRvbUVtcHR5T3V0bGluZSA9IFwiTTE5IDE1QzE5IDE4Ljg3IDE1Ljg3IDIyIDEyIDIyQzguMTMgMjIgNSAxOC44NyA1IDE1QzUgMTIuMjEgNi42NCA5LjggOSA4LjY3VjVDOSA0LjQ1IDkuNDUgNCAxMCA0SDEwLjVMOS41IDJIMTQuNUwxMy41IDRIMTRDMTQuNTUgNCAxNSA0LjQ1IDE1IDVWOC42N0MxNy4zNiA5LjggMTkgMTIuMjEgMTkgMTVNMTEgNlYxMC4xQzguNzIgMTAuNTYgNyAxMi41OCA3IDE1QzcgMTcuNzYgOS4yNCAyMCAxMiAyMEMxNC43NiAyMCAxNyAxNy43NiAxNyAxNUMxNyAxMi41OCAxNS4yOCAxMC41NiAxMyAxMC4xVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tSb3VuZEJvdHRvbU91dGxpbmUgPSBcIk0xNSAxNUMxNSAxNi42NiAxMy42NiAxOCAxMiAxOEMxMC4zNCAxOCA5IDE2LjY2IDkgMTVWMTRIMTFWMTVDMTEgMTUuNTUgMTEuNDUgMTYgMTIgMTZDMTIuNTUgMTYgMTMgMTUuNTUgMTMgMTVWMTRIMTVWMTVNMTkgMTVDMTkgMTguODcgMTUuODcgMjIgMTIgMjJDOC4xMyAyMiA1IDE4Ljg3IDUgMTVDNSAxMi4yMSA2LjY0IDkuOCA5IDguNjdWNUM5IDQuNDUgOS40NSA0IDEwIDRIMTAuNUw5LjUgMkgxNC41TDEzLjUgNEgxNEMxNC41NSA0IDE1IDQuNDUgMTUgNVY4LjY3QzE3LjM2IDkuOCAxOSAxMi4yMSAxOSAxNU0xMSA2VjEwLjFDOC43MiAxMC41NiA3IDEyLjU4IDcgMTVDNyAxNy43NiA5LjI0IDIwIDEyIDIwQzE0Ljc2IDIwIDE3IDE3Ljc2IDE3IDE1QzE3IDEyLjU4IDE1LjI4IDEwLjU2IDEzIDEwLjFWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGV1ckRlTGlzID0gXCJNMTIgMlM5IDQgOSA3IDExIDEyIDExIDE2SDEwUzEwIDE0IDkgMTJDNyA4IDMgMTAgMyAxM1M1IDE2IDUgMTZDNSAxMyA4LjUgMTMgOC41IDE2SDdWMThIMTAuNUw5IDIwUzEwIDIxIDExIDIwTDEyIDIyTDEzIDIwQzE0IDIxIDE1IDIwIDE1IDIwTDEzLjUgMThIMTdWMTZIMTUuNUMxNS41IDEzIDE5IDEzIDE5IDE2QzE5IDE2IDIxIDE2IDIxIDEzUzE3IDggMTUgMTJDMTQgMTQgMTQgMTYgMTQgMTZIMTNDMTMgMTIgMTUgMTAgMTUgN1MxMiAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxpcEhvcml6b250YWwgPSBcIk0xNSAyMUgxN1YxOUgxNU0xOSA5SDIxVjdIMTlNMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVWNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVNMTkgM1Y1SDIxQzIxIDMuOSAyMC4xIDMgMTkgM00xMSAyM0gxM1YxSDExTTE5IDE3SDIxVjE1SDE5TTE1IDVIMTdWM0gxNU0xOSAxM0gyMVYxMUgxOU0xOSAyMUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxpcFRvQmFjayA9IFwiTTE1LDE3SDE3VjE1SDE1TTE1LDVIMTdWM0gxNU01LDdIM1YxOUEyLDIgMCAwLDAgNSwyMUgxN1YxOUg1TTE5LDE3QTIsMiAwIDAsMCAyMSwxNUgxOU0xOSw5SDIxVjdIMTlNMTksMTNIMjFWMTFIMTlNOSwxN1YxNUg3QTIsMiAwIDAsMCA5LDE3TTEzLDNIMTFWNUgxM00xOSwzVjVIMjFDMjEsMy44OSAyMC4xLDMgMTksM00xMywxNUgxMVYxN0gxM005LDNDNy44OSwzIDcsMy44OSA3LDVIOU05LDExSDdWMTNIOU05LDdIN1Y5SDlWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGlwVG9Gcm9udCA9IFwiTTcsMjFIOVYxOUg3TTExLDIxSDEzVjE5SDExTTE5LDE1SDlWNUgxOU0xOSwzSDlDNy44OSwzIDcsMy44OSA3LDVWMTVBMiwyIDAgMCwwIDksMTdIMTRMMTgsMTdIMTlBMiwyIDAgMCwwIDIxLDE1VjVDMjEsMy44OSAyMC4xLDMgMTksM00xNSwyMUgxN1YxOUgxNU0zLDlINVY3SDNNNSwyMVYxOUgzQTIsMiAwIDAsMCA1LDIxTTMsMTdINVYxNUgzTTMsMTNINVYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsaXBWZXJ0aWNhbCA9IFwiTTMgMTVWMTdINVYxNU0xNSAxOVYyMUgxN1YxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjlINVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMjEgMTlIMTlWMjFDMjAuMSAyMSAyMSAyMC4xIDIxIDE5TTEgMTFWMTNIMjNWMTFNNyAxOVYyMUg5VjE5TTE5IDE1VjE3SDIxVjE1TTExIDE5VjIxSDEzVjE5TTMgMTlDMyAyMC4xIDMuOSAyMSA1IDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb29yTGFtcCA9IFwiTTE1LDJMMTcsOUg3TDksMk0xMSwxMEgxM1YyMEgxNlYyMkg4VjIwSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb29yTGFtcER1YWwgPSBcIk0xMS43MyAxMC4wNkwxMC4xNyAxMS4yNEwxMSAxMi4yVjIwSDhWMjJIMTZWMjBIMTNWMTIuM0wxMy44NSAxMS4yNkwxMi4yNyAxMC4wN0wxMS43MyAxMC4wNk05LjA4IDEwLjgyTDMgNi44MUw5LjM5IDJMMTEuNTUgOC45M0w5LjA4IDEwLjgyTTE0LjYxIDJMMjEgNi44MUwxNC45MiAxMC44MkwxMi40NCA4Ljk1TDE0LjYxIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxvb3JMYW1wVmFyaWFudCA9IFwiTTcgMkwxMCA5SDE0TDE3IDJIN00xNS45MiAyMkwxMyAxNVYyMkgxMVYxNUw4LjA4IDIySDUuOTJMMTAuOTIgMTBIMTMuMDhMMTguMDggMjJIMTUuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxvb3JQbGFuID0gXCJNMTAsNVYxMEg5VjVINVYxM0g5VjEySDEwVjE3SDlWMTRINVYxOUgxMlYxN0gxM1YxOUgxOVYxN0gyMVYyMUgzVjNIMjFWMTVIMTlWMTBIMTNWMTVIMTJWOUgxOVY1SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3BweSA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1LjVMMTguNSwzSDE3VjlBMSwxIDAgMCwxIDE2LDEwSDhBMSwxIDAgMCwxIDcsOVYzSDVNMTIsNFY5SDE1VjRIMTJNNywxMkgxN0ExLDEgMCAwLDEgMTgsMTNWMTlINlYxM0ExLDEgMCAwLDEgNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbG9wcHlWYXJpYW50ID0gXCJNMywzVjIxSDIxVjNIM00xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsMTVBMSwxIDAgMCwxIDEzLDE2VjE5QTEsMSAwIDAsMSAxMiwyMEExLDEgMCAwLDEgMTEsMTlWMTZBMSwxIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlciA9IFwiTTMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLDE3IDcuOTcsMTMgMywxM00xMiw1LjVBMi41LDIuNSAwIDAsMSAxNC41LDhBMi41LDIuNSAwIDAsMSAxMiwxMC41QTIuNSwyLjUgMCAwLDEgOS41LDhBMi41LDIuNSAwIDAsMSAxMiw1LjVNNS42LDEwLjI1QTIuNSwyLjUgMCAwLDAgOC4xLDEyLjc1QzguNjMsMTIuNzUgOS4xMiwxMi41OCA5LjUsMTIuMzFDOS41LDEyLjM3IDkuNSwxMi40MyA5LjUsMTIuNUEyLjUsMi41IDAgMCwwIDEyLDE1QTIuNSwyLjUgMCAwLDAgMTQuNSwxMi41QzE0LjUsMTIuNDMgMTQuNSwxMi4zNyAxNC41LDEyLjMxQzE0Ljg4LDEyLjU4IDE1LjM3LDEyLjc1IDE1LjksMTIuNzVDMTcuMjgsMTIuNzUgMTguNCwxMS42MyAxOC40LDEwLjI1QzE4LjQsOS4yNSAxNy44MSw4LjQgMTYuOTcsOEMxNy44MSw3LjYgMTguNCw2Ljc0IDE4LjQsNS43NUMxOC40LDQuMzcgMTcuMjgsMy4yNSAxNS45LDMuMjVDMTUuMzcsMy4yNSAxNC44OCwzLjQxIDE0LjUsMy42OUMxNC41LDMuNjMgMTQuNSwzLjU2IDE0LjUsMy41QTIuNSwyLjUgMCAwLDAgMTIsMUEyLjUsMi41IDAgMCwwIDkuNSwzLjVDOS41LDMuNTYgOS41LDMuNjMgOS41LDMuNjlDOS4xMiwzLjQxIDguNjMsMy4yNSA4LjEsMy4yNUEyLjUsMi41IDAgMCwwIDUuNiw1Ljc1QzUuNiw2Ljc0IDYuMTksNy42IDcuMDMsOEM2LjE5LDguNCA1LjYsOS4yNSA1LjYsMTAuMjVNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQzE2LDEzIDEyLDE3IDEyLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlck91dGxpbmUgPSBcIk04LjY2LDEzLjA3QzYuOTIsMTMuMDcgNS41LDExLjY2IDUuNSw5LjkzQzUuNSw5LjIyIDUuNzYsOC41NCA2LjE5LDhDNS43Nyw3LjQ2IDUuNSw2Ljc4IDUuNSw2LjA3QzUuNSw0LjM0IDYuOTMsMi45MyA4LjY2LDIuOTNMOS4wOSwyLjk2QzkuNTYsMS44MSAxMC42OSwxIDEyLDFDMTMuMzEsMSAxNC40NCwxLjgxIDE0LjkxLDIuOTZMMTUuMzQsMi45M0MxNy4wNywyLjkzIDE4LjUsNC4zNCAxOC41LDYuMDdDMTguNSw2Ljc4IDE4LjI0LDcuNDYgMTcuODEsOEMxOC4yMyw4LjU0IDE4LjUsOS4yMiAxOC41LDkuOTNDMTguNSwxMS42NiAxNy4wNywxMy4wNyAxNS4zNCwxMy4wN0wxNC45MSwxMy4wNEMxNC40NCwxNC4xOSAxMy4zMSwxNSAxMiwxNUMxMC42OSwxNSA5LjU2LDE0LjE5IDkuMDksMTMuMDRMOC42NiwxMy4wN00xMiwxM0MxMi42MiwxMyAxMy4xMiwxMi41IDEzLjE0LDExLjlMMTMuMDMsMTAuODFDMTIuNzEsMTAuOTMgMTIuMzYsMTEgMTIsMTFDMTEuNjQsMTEgMTEuMywxMC45MyAxMSwxMC44MUwxMC44NiwxMS45QzEwLjg4LDEyLjUgMTEuMzgsMTMgMTIsMTNNMTUuMzQsMTEuMDdDMTUuOTcsMTEuMDcgMTYuNSwxMC41NiAxNi41LDkuOTJDMTYuNSw5LjUgMTYuMjMsOS4wOCAxNS44Myw4Ljg5TDE0Ljk1LDguNDdDMTQuODMsOS4yMSAxNC40NCw5Ljg1IDEzLjg5LDEwLjNMMTQuNywxMC44N0MxNC44OCwxMSAxNS4xLDExLjA3IDE1LjM0LDExLjA3TTE0LjY5LDUuMTNMMTMuODcsNS42OUMxNC40Myw2LjE0IDE0LjgyLDYuNzggMTQuOTQsNy41TDE1LjgyLDcuMUMxNi4yMyw2LjkgMTYuNSw2LjUgMTYuNSw2LjA3QzE2LjUsNS40NCAxNS45Nyw0LjkzIDE1LjM0LDQuOTNDMTUuMTEsNC45MyAxNC44OSw1IDE0LjY5LDUuMTNNMTIsM0MxMS4zOCwzIDEwLjg4LDMuNSAxMC44Niw0LjFMMTEsNS4xOUMxMS4zLDUuMDcgMTEuNjQsNSAxMiw1QzEyLjM2LDUgMTIuNzEsNS4wNyAxMy4wMyw1LjE5TDEzLjE0LDQuMUMxMy4xMiwzLjUgMTIuNjIsMyAxMiwzTTguNjYsNC45M0M4LjAzLDQuOTMgNy41LDUuNDQgNy41LDYuMDdDNy41LDYuNSA3Ljc3LDYuOSA4LjE3LDcuMUw5LjA1LDcuNUM5LjE3LDYuNzggOS41Niw2LjE0IDEwLjExLDUuNjlMOS4zLDUuMTNDOS4xMiw1IDguOSw0LjkzIDguNjYsNC45M004LjE3LDguOUM3Ljc3LDkuMSA3LjUsOS41IDcuNSw5LjkyQzcuNSwxMC41NSA4LjAzLDExLjA2IDguNjYsMTEuMDZDOC44OSwxMS4wNiA5LjExLDExIDkuMzEsMTAuODZMMTAuMTIsMTAuMzFDOS41Niw5Ljg2IDkuMTcsOS4yMiA5LjA1LDguNUw4LjE3LDguOU0xMiwyMkE5LDkgMCAwLDEgMywxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDIxLDEzQTksOSAwIDAsMSAxMiwyMk0xNC40NCwxOS41NkMxNi4zNCwxOC44NSAxNy44NSwxNy4zNCAxOC41NiwxNS40NEMxNi42NiwxNi4xNCAxNS4xNSwxNy42NiAxNC40NCwxOS41Nk01LjQ0LDE1LjQ0QzYuMTUsMTcuMzQgNy42NiwxOC44NSA5LjU2LDE5LjU2QzguODYsMTcuNjYgNy4zNCwxNi4xNSA1LjQ0LDE1LjQ0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclBvcHB5ID0gXCJNMTguNSwxMkEzLjUsMy41IDAgMCwwIDIyLDguNUE2LjUsNi41IDAgMCwwIDE1LjUsMkEzLjUsMy41IDAgMCwwIDEyLDUuNUEzLjUsMy41IDAgMCwwIDguNSwyQTYuNSw2LjUgMCAwLDAgMiw4LjVBMy41LDMuNSAwIDAsMCA1LjUsMTJBMy41LDMuNSAwIDAsMCAyLDE1LjVBNi41LDYuNSAwIDAsMCA4LjUsMjJBMy41LDMuNSAwIDAsMCAxMiwxOC41QTMuNSwzLjUgMCAwLDAgMTUuNSwyMkE2LjUsNi41IDAgMCwwIDIyLDE1LjVBMy41LDMuNSAwIDAsMCAxOC41LDEyTTEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4QTQsNCAwIDAsMSAxNiwxMkE0LDQgMCAwLDEgMTIsMTZNMTQuNSwxMkEyLjUsMi41IDAgMCwxIDEyLDE0LjVBMi41LDIuNSAwIDAsMSA5LjUsMTJBMi41LDIuNSAwIDAsMSAxMiw5LjVBMi41LDIuNSAwIDAsMSAxNC41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclR1bGlwID0gXCJNMywxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDMsMTNNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiwyMk0xOCwzVjhBNiw2IDAgMCwxIDEyLDE0QTYsNiAwIDAsMSA2LDhWM0M2Ljc0LDMgNy40NywzLjEyIDguMTYsMy4zOUM4LjcxLDMuNjIgOS4yLDMuOTYgOS42MSw0LjM5TDEyLDJMMTQuMzksNC4zOUMxNC44LDMuOTYgMTUuMjksMy42MiAxNS44NCwzLjM5QzE2LjUzLDMuMTIgMTcuMjYsMyAxOCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclR1bGlwT3V0bGluZSA9IFwiTTMsMTNBOSw5IDAgMCwwIDEyLDIyQTksOSAwIDAsMCAzLDEzTTUuNDQsMTUuNDRDNy4zNSwxNi4xNSA4Ljg1LDE3LjY1IDkuNTYsMTkuNTZDNy42NSwxOC44NSA2LjE1LDE3LjM1IDUuNDQsMTUuNDRNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiwyMk0xNC40MiwxOS41N0MxNS4xMSwxNy42NCAxNi42NCwxNi4xMSAxOC41NywxNS40MkMxNy44NiwxNy4zNCAxNi4zNCwxOC44NiAxNC40MiwxOS41N00xMiwxNEE2LDYgMCAwLDAgMTgsOFYzQzE3LjI2LDMgMTYuNTMsMy4xMiAxNS44NCwzLjM5QzE1LjI5LDMuNjIgMTQuOCwzLjk2IDE0LjM5LDQuMzlMMTIsMkw5LjYxLDQuMzlDOS4yLDMuOTYgOC43MSwzLjYyIDguMTYsMy4zOUM3LjQ3LDMuMTIgNi43NCwzIDYsM1Y4QTYsNiAwIDAsMCAxMiwxNE04LDUuNjFMOS41Nyw3LjI2TDEyLDQuODNMMTQuNDMsNy4yNkwxNiw1LjYxVjhBNCw0IDAgMCwxIDEyLDEyQTQsNCAwIDAsMSA4LDhWNS42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2N1c0F1dG8gPSBcIk0xOSAxOUgxNVYyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWMTVIMTlNMTkgM0gxNVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNNSA1SDlWM0g1QzMuOSAzIDMgMy45IDMgNVY5SDVNNSAxNUgzVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVWMTVNOCA3QzYuOSA3IDYgNy45IDYgOVYxN0g4VjEzSDEwVjE3SDEyVjlDMTIgNy45IDExLjEgNyAxMCA3SDhNOCA5SDEwVjExSDhWOU0xMyA3VjE3SDE1VjEzSDE3VjExSDE1VjlIMThWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2N1c0ZpZWxkID0gXCJNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1VjE1TTcgMTFIOVYxM0g3VjExTTExIDExSDEzVjEzSDExVjExTTE1IDExSDE3VjEzSDE1VjExTTcgN0g5VjlIN1Y3TTExIDdIMTNWOUgxMVY3TTE1IDdIMTdWOUgxNVY3TTcgMTVIOVYxN0g3VjE1TTExIDE1SDEzVjE3SDExVjE1TTE1IDE1SDE3VjE3SDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvY3VzRmllbGRIb3Jpem9udGFsID0gXCJNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1VjE1TTcgMTFIOVYxM0g3VjExTTExIDExSDEzVjEzSDExVjExTTE1IDExSDE3VjEzSDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvY3VzRmllbGRWZXJ0aWNhbCA9IFwiTTE5IDE5SDE1VjIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNUgxOU0xOSAzSDE1VjVIMTlWOUgyMVY1QzIxIDMuOSAyMC4xIDMgMTkgM001IDVIOVYzSDVDMy45IDMgMyAzLjkgMyA1VjlINU01IDE1SDNWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDlWMTlINVYxNU0xMSAxMUgxM1YxM0gxMVYxMU0xMSA3SDEzVjlIMTFWN00xMSAxNUgxM1YxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXIgPSBcIk0xMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNkgxMkwxMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckFjY291bnQgPSBcIk0xOSwxN0gxMVYxNkMxMSwxNC42NyAxMy42NywxNCAxNSwxNEMxNi4zMywxNCAxOSwxNC42NyAxOSwxNk0xNSw5QTIsMiAwIDAsMSAxNywxMUEyLDIgMCAwLDEgMTUsMTNBMiwyIDAgMCwxIDEzLDExQzEzLDkuODkgMTMuOSw5IDE1LDlNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJBY2NvdW50T3V0bGluZSA9IFwiTTE1IDE0QzE2LjMzIDE0IDE5IDE0LjY3IDE5IDE2VjE3SDExVjE2QzExIDE0LjY3IDEzLjY3IDE0IDE1IDE0TTE1IDEzQzE2LjExIDEzIDE3IDEyLjExIDE3IDExUzE2LjExIDkgMTUgOUMxMy45IDkgMTMgOS44OSAxMyAxMUMxMyAxMi4xMSAxMy45IDEzIDE1IDEzTTIyIDhWMThDMjIgMTkuMTEgMjEuMTEgMjAgMjAgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEgxMEwxMiA2SDIwQzIxLjExIDYgMjIgNi45IDIyIDhNMjAgOEg0VjE4SDIwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyQWxlcnQgPSBcIk0xNSwxMkgxN1YxN0gxNVYxMk0xNSwxOEgxN1YyMEgxNVYxOE0yMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMuNjIsMjMgMTEuNSwyMS44MSAxMC4yNSwyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuMUMyMi4yNCwxMi4zNiAyMywxNC4wOSAyMywxNk0xNiwxMUE1LDUgMCAwLDAgMTEsMTZBNSw1IDAgMCwwIDE2LDIxQTUsNSAwIDAsMCAyMSwxNkE1LDUgMCAwLDAgMTYsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyQWxlcnRPdXRsaW5lID0gXCJNMTUsMTJIMTdWMTdIMTVWMTJNMTUsMThIMTdWMjBIMTVWMThNMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4SDNWMThIOS4yOUM5LjEsMTcuMzYgOSwxNi42OSA5LDE2QTcsNyAwIDAsMSAxNiw5TTIzLDE2QTcsNyAwIDAsMSAxNiwyM0MxMy42MiwyMyAxMS41LDIxLjgxIDEwLjI1LDIwSDNDMS44OSwyMCAxLDE5LjEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDlMMTEsNkgxOUEyLDIgMCAwLDEgMjEsOFYxMS4xQzIyLjI0LDEyLjM2IDIzLDE0LjA5IDIzLDE2TTE2LDExQTUsNSAwIDAsMCAxMSwxNkE1LDUgMCAwLDAgMTYsMjFBNSw1IDAgMCwwIDIxLDE2QTUsNSAwIDAsMCAxNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJDbG9jayA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgxMC4yNkMxMS41NywyMS44OCAxMy43MSwyMyAxNiwyM0E3LDcgMCAwLDAgMjMsMTZDMjMsMTQuMTcgMjIuMjgsMTIuNDIgMjEsMTEuMTFWOEMyMSw2Ljg5IDIwLjEsNiAxOSw2SDExTDksNEgzTTE2LDExQTUsNSAwIDAsMSAyMSwxNkE1LDUgMCAwLDEgMTYsMjFBNSw1IDAgMCwxIDExLDE2QTUsNSAwIDAsMSAxNiwxMU0xNSwxMlYxN0wxOC42MSwxOS4xNkwxOS4zNiwxNy45NEwxNi41LDE2LjI1VjEySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckNsb2NrT3V0bGluZSA9IFwiTTE1LDEySDE2LjVWMTYuMjVMMTkuMzYsMTcuOTRMMTguNjEsMTkuMTZMMTUsMTdWMTJNMTksOEgzVjE4SDkuMjlDOS4xLDE3LjM3IDksMTYuNyA5LDE2QTcsNyAwIDAsMSAxNiw5QzE3LjA3LDkgMTguMDksOS4yNCAxOSw5LjY3VjhNMywyMEMxLjg5LDIwIDEsMTkuMSAxLDE4VjZBMiwyIDAgMCwxIDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuMUMyMi4yNCwxMi4zNiAyMywxNC4wOSAyMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMuNjIsMjMgMTEuNSwyMS44MSAxMC4yNSwyMEgzTTE2LDExQTUsNSAwIDAsMCAxMSwxNkE1LDUgMCAwLDAgMTYsMjFBNSw1IDAgMCwwIDIxLDE2QTUsNSAwIDAsMCAxNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJDb2cgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMi4wOEE3IDcgMCAwIDEgMTIgMTlBNyA3IDAgMCAxIDE5IDEyQTcgNyAwIDAgMSAyMiAxMi42OVY4QzIyIDYuODkgMjEuMSA2IDIwIDZIMTJMMTAgNEg0TTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNEgxOE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckNvZ091dGxpbmUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMlYxOEg0VjhIMjBWMTJIMjJWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2SDEyTDEwIDRNMTggMTRDMTcuODcgMTQgMTcuNzYgMTQuMDkgMTcuNzQgMTQuMjFMMTcuNTUgMTUuNTNDMTcuMjUgMTUuNjYgMTYuOTYgMTUuODIgMTYuNyAxNkwxNS40NiAxNS41QzE1LjM1IDE1LjUgMTUuMjIgMTUuNSAxNS4xNSAxNS42M0wxNC4xNSAxNy4zNkMxNC4wOSAxNy40NyAxNC4xMSAxNy42IDE0LjIxIDE3LjY4TDE1LjI3IDE4LjVDMTUuMjUgMTguNjcgMTUuMjQgMTguODMgMTUuMjQgMTlDMTUuMjQgMTkuMTcgMTUuMjUgMTkuMzMgMTUuMjcgMTkuNUwxNC4yMSAyMC4zMkMxNC4xMiAyMC40IDE0LjA5IDIwLjUzIDE0LjE1IDIwLjY0TDE1LjE1IDIyLjM3QzE1LjIxIDIyLjUgMTUuMzQgMjIuNSAxNS40NiAyMi41TDE2LjcgMjJDMTYuOTYgMjIuMTggMTcuMjQgMjIuMzUgMTcuNTUgMjIuNDdMMTcuNzQgMjMuNzlDMTcuNzYgMjMuOTEgMTcuODYgMjQgMTggMjRIMjBDMjAuMTEgMjQgMjAuMjIgMjMuOTEgMjAuMjQgMjMuNzlMMjAuNDMgMjIuNDdDMjAuNzMgMjIuMzQgMjEgMjIuMTggMjEuMjcgMjJMMjIuNSAyMi41QzIyLjYzIDIyLjUgMjIuNzYgMjIuNSAyMi44MyAyMi4zN0wyMy44MyAyMC42NEMyMy44OSAyMC41MyAyMy44NiAyMC40IDIzLjc3IDIwLjMyTDIyLjcgMTkuNUMyMi43MiAxOS4zMyAyMi43NCAxOS4xNyAyMi43NCAxOUMyMi43NCAxOC44MyAyMi43MyAxOC42NyAyMi43IDE4LjVMMjMuNzYgMTcuNjhDMjMuODUgMTcuNiAyMy44OCAxNy40NyAyMy44MiAxNy4zNkwyMi44MiAxNS42M0MyMi43NiAxNS41IDIyLjYzIDE1LjUgMjIuNSAxNS41TDIxLjI3IDE2QzIxIDE1LjgyIDIwLjczIDE1LjY1IDIwLjQyIDE1LjUzTDIwLjIzIDE0LjIxQzIwLjIyIDE0LjA5IDIwLjExIDE0IDIwIDE0TTE5IDE3LjVDMTkuODMgMTcuNSAyMC41IDE4LjE3IDIwLjUgMTlDMjAuNSAxOS44MyAxOS44MyAyMC41IDE5IDIwLjVDMTguMTYgMjAuNSAxNy41IDE5LjgzIDE3LjUgMTlDMTcuNSAxOC4xNyAxOC4xNyAxNy41IDE5IDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyRG93bmxvYWQgPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwTTE5LjI1LDEzSDE2VjlIMTRWMTNIMTAuNzVMMTUsMTcuMjVcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJEb3dubG9hZE91dGxpbmUgPSBcIk0yMCAxOEg0VjhIMjBNMjAgNkgxMkwxMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEEyIDIgMCAwIDAgMjAgNk0xNCA5SDE2VjEzSDE5TDE1IDE3TDExIDEzSDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckVkaXQgPSBcIk0zLDRDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMTFWMTguMTFMMjEsOC4xMVY4QzIxLDYuODkgMjAuMSw2IDE5LDZIMTFMOSw0SDNNMjEuMDQsMTEuMTNDMjAuOSwxMS4xMyAyMC43NiwxMS4xOSAyMC42NSwxMS4zTDE5LjY1LDEyLjNMMjEuNywxNC4zNUwyMi43LDEzLjM1QzIyLjkyLDEzLjE0IDIyLjkyLDEyLjc5IDIyLjcsMTIuNThMMjEuNDIsMTEuM0MyMS4zMSwxMS4xOSAyMS4xOCwxMS4xMyAyMS4wNCwxMS4xM00xOS4wNywxMi44OEwxMywxOC45NFYyMUgxNS4wNkwyMS4xMiwxNC45M0wxOS4wNywxMi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJFZGl0T3V0bGluZSA9IFwiTTIxLDExLjExQzIwLjkyLDExLjExIDIwLjcyLDExLjIxIDIwLjYyLDExLjMxTDE5LjYyLDEyLjMxTDIxLjcyLDE0LjQyTDIyLjcyLDEzLjQxQzIyLjkyLDEzLjIxIDIyLjkyLDEyLjgxIDIyLjcyLDEyLjYxTDIxLjQyLDExLjMxQzIxLjMyLDExLjIxIDIxLjIyLDExLjExIDIxLDExLjExTTE5LjEyLDEyLjkxTDEzLDE4LjkyVjIxSDE1LjEyTDIxLjIyLDE0LjkyTDE5LjEyLDEyLjkxTTIxLDhWOC4xMUwxOSwxMC4xMVY4SDNWMThIMTFWMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC45MSAxLjksNCAzLDRIOUwxMSw2SDE5QzIwLjEyLDYgMjEsNi45MSAyMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckdvb2dsZURyaXZlID0gXCJNMTMuNzUsOUgxNi4xNEwxOSwxNEgxNi4wNUwxMy41LDkuNDZNMTguMywxN0gxMi43NUwxNC4xNSwxNC41SDE5LjI3TDE5LjUzLDE0Ljk2TTExLjUsMTdMMTAuNCwxNC44NkwxMy4yNCw5LjlMMTQuNzQsMTIuNTZMMTIuMjUsMTdNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJIZWFydCA9IFwiTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjg5IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjhDMjIgNi45IDIxLjEgNiAyMCA2TTE4LjQyIDEzLjVMMTUgMTdMMTEuNTkgMTMuNUMxMS4yMiAxMy4xMiAxMSAxMi42MiAxMSAxMi4wNUMxMSAxMC45MiAxMS45IDEwIDEzIDEwQzEzLjU0IDEwIDE0LjA1IDEwLjIzIDE0LjQyIDEwLjYxTDE1IDExLjJMMTUuNTkgMTAuNkMxNS45NSAxMC4yMyAxNi40NiAxMCAxNyAxMEMxOC4xIDEwIDE5IDEwLjkyIDE5IDEyLjA1QzE5IDEyLjYxIDE4Ljc4IDEzLjEzIDE4LjQyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySGVhcnRPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2TTEzIDEwQzExLjkgMTAgMTEgMTAuOTIgMTEgMTIuMDVDMTEgMTIuNjIgMTEuMjIgMTMuMTIgMTEuNTkgMTMuNUwxNSAxN0wxOC40MiAxMy41QzE4Ljc4IDEzLjEzIDE5IDEyLjYxIDE5IDEyLjA1QzE5IDEwLjkyIDE4LjEgMTAgMTcgMTBDMTYuNDYgMTAgMTUuOTUgMTAuMjMgMTUuNTkgMTAuNkwxNSAxMS4yTDE0LjQyIDEwLjYxQzE0LjA1IDEwLjIzIDEzLjU0IDEwIDEzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckhvbWUgPSBcIk0yMCA2SDEyTDEwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QTIgMiAwIDAgMCAyMCA2TTE3IDEzVjE3SDE1VjE0SDEzVjE3SDExVjEzSDlMMTQgOUwxOSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJIb21lT3V0bGluZSA9IFwiTTIwIDZIMTJMMTAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhBMiAyIDAgMCAwIDIwIDZNMjAgMThINFY4SDIwTTEzIDE3VjE0SDE1VjE3SDE3VjEzSDE5TDE0IDlMOSAxM0gxMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJJbWFnZSA9IFwiTTUsMTdMOS41LDExTDEzLDE1LjVMMTUuNSwxMi41TDE5LDE3TTIwLDZIMTJMMTAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhBMiwyIDAgMCwwIDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySW5mb3JtYXRpb24gPSBcIk0yMSAxMS4xVjhDMjEgNi45IDIwLjEgNiAxOSA2SDExTDkgNEgzQzEuOSA0IDEgNC45IDEgNlYxOEMxIDE5LjEgMS45IDIwIDMgMjBIMTAuM0MxMS42IDIxLjkgMTMuOCAyMyAxNiAyM0MxOS45IDIzIDIzIDE5LjkgMjMgMTZDMjMgMTQuMiAyMi4zIDEyLjQgMjEgMTEuMU0xNiAyMUMxMy4yIDIxIDExIDE4LjggMTEgMTZTMTMuMiAxMSAxNiAxMSAyMSAxMy4yIDIxIDE2IDE4LjggMjEgMTYgMjFNMTcgMjBIMTVWMTVIMTdWMjBNMTcgMTRIMTVWMTJIMTdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySW5mb3JtYXRpb25PdXRsaW5lID0gXCJNMjEgMTEuMVY4QzIxIDYuOSAyMC4xIDYgMTkgNkgxMUw5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDEwLjJDMTEuNCAyMS44IDEzLjYgMjMgMTYgMjNDMTkuOSAyMyAyMyAxOS45IDIzIDE2QzIzIDE0LjEgMjIuMiAxMi40IDIxIDExLjFNOS4zIDE4SDNWOEgxOVY5LjdDMTguMSA5LjIgMTcuMSA5IDE2IDlDMTIuMSA5IDkgMTIuMSA5IDE2QzkgMTYuNyA5LjEgMTcuNCA5LjMgMThNMTYgMjFDMTMuMiAyMSAxMSAxOC44IDExIDE2UzEzLjIgMTEgMTYgMTEgMjEgMTMuMiAyMSAxNiAxOC44IDIxIDE2IDIxTTE3IDE0SDE1VjEySDE3VjE0TTE3IDIwSDE1VjE1SDE3VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlcktleSA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2SDEyTDEwLDRNMTEsMTBDMTIuMzEsMTAgMTMuNDIsMTAuODQgMTMuODMsMTJIMTlWMTRIMThWMTZIMTZWMTRIMTMuODNDMTMuNDIsMTUuMTcgMTIuMzEsMTYgMTEsMTZBMywzIDAgMCwxIDgsMTNBMywzIDAgMCwxIDExLDEwTTExLDEyQTEsMSAwIDAsMCAxMCwxM0MxMCwxMy41NiAxMC40NSwxNCAxMSwxNEExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDExLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlcktleU5ldHdvcmsgPSBcIk02LDVDNC44OSw1IDQsNS44OSA0LDdWMTVBMiwyIDAgMCwwIDYsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE4QTIsMiAwIDAsMCAyMCwxNVY5QTIsMiAwIDAsMCAxOCw3SDEyTDEwLDVINk05LDlDMTAuMzEsOSAxMS40Miw5LjgzIDExLjgzLDExSDE3VjEzSDE2VjE1SDE0VjEzSDExLjgzQzExLjQyLDE0LjE3IDEwLjMxLDE1IDksMTVBMywzIDAgMCwxIDYsMTJBMywzIDAgMCwxIDksOU05LDExQTEsMSAwIDAsMCA4LDEyQzgsMTIuNTYgOC40NSwxMyA5LDEzQTEsMSAwIDAsMCAxMCwxMkExLDEgMCAwLDAgOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJLZXlOZXR3b3JrT3V0bGluZSA9IFwiTTkgOEM3LjM0IDggNiA5LjM0IDYgMTFTNy4zNCAxNCA5IDE0QzEwLjMxIDE0IDExLjQyIDEzLjE3IDExLjgzIDEySDE0VjE0SDE2VjEySDE3VjEwSDExLjgzQzExLjQyIDguODMgMTAuMzEgOCA5IDhNOSAxMkM4LjQ1IDEyIDggMTEuNTUgOCAxMVM4LjQ1IDEwIDkgMTAgMTAgMTAuNDUgMTAgMTEgOS41NSAxMiA5IDEyTTE1IDIwQzE1IDE5LjQ1IDE0LjU1IDE5IDE0IDE5SDEzVjE3SDE5QzIwLjExIDE3IDIxIDE2LjExIDIxIDE1VjdDMjEgNS45IDIwLjExIDUgMTkgNUgxM0wxMSAzSDVDMy45IDMgMyAzLjkgMyA1VjE1QzMgMTYuMTEgMy45IDE3IDUgMTdIMTFWMTlIMTBDOS40NSAxOSA5IDE5LjQ1IDkgMjBIMlYyMkg5QzkgMjIuNTUgOS40NSAyMyAxMCAyM0gxNEMxNC41NSAyMyAxNSAyMi41NSAxNSAyMkgyMlYyMEgxNU01IDE1VjdIMTlWMTVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJLZXlPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2TTEzLjgzIDEyQzEzLjQyIDEwLjg0IDEyLjMxIDEwIDExIDEwQzkuMzQgMTAgOCAxMS4zNCA4IDEzUzkuMzQgMTYgMTEgMTZDMTIuMzEgMTYgMTMuNDIgMTUuMTcgMTMuODMgMTRIMTZWMTZIMThWMTRIMTlWMTJIMTMuODNNMTEgMTRDMTAuNDUgMTQgMTAgMTMuNTYgMTAgMTNDMTAgMTIuNDUgMTAuNDUgMTIgMTEgMTJTMTIgMTIuNDUgMTIgMTMgMTEuNTUgMTQgMTEgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTG9jayA9IFwiTTIwLDZBMiwyIDAgMCwxIDIyLDhWMThBMiwyIDAgMCwxIDIwLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTDEyLDZIMjBNMTksMTdWMTNIMThWMTJBMywzIDAgMCwwIDE1LDlBMywzIDAgMCwwIDEyLDEyVjEzSDExVjE3SDE5TTE1LDExQTEsMSAwIDAsMSAxNiwxMlYxM0gxNFYxMkExLDEgMCAwLDEgMTUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTG9ja09wZW4gPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwTTE5LDE3VjEzSDE4TDE2LDEzSDE0VjExQTEsMSAwIDAsMSAxNSwxMEExLDEgMCAwLDEgMTYsMTFIMThBMywzIDAgMCwwIDE1LDhBMywzIDAgMCwwIDEyLDExVjEzSDExVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck1hcmtlciA9IFwiTTEwIDRMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjExLjM0QzIxLjA0IDEwLjUgMTkuODIgMTAgMTguNSAxMEMxNS41IDEwIDEzIDEyLjY1IDEzIDE1LjVDMTMgMTYuOTcgMTMuNjUgMTguNTUgMTQuNSAyMEg0QzIuODkgMjAgMiAxOS4xIDIgMThMMiA2QzIgNC44OSAyLjg5IDQgNCA0SDEwTTE4LjUgMTJDMjAuNCAxMiAyMiAxMy42IDIyIDE1LjVDMjIgMTguMSAxOC41IDIyIDE4LjUgMjJDMTguNSAyMiAxNSAxOC4xIDE1IDE1LjVDMTUgMTMuNiAxNi42IDEyIDE4LjUgMTJNMTguNSAxNi44QzE5LjIgMTYuOCAxOS44IDE2LjIgMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNEMxNy45IDE0LjQgMTcuMyAxNC45IDE3LjMgMTUuNkMxNy4zIDE2LjIgMTcuOCAxNi44IDE4LjUgMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNYXJrZXJPdXRsaW5lID0gXCJNMTguNSAxMkMyMC40IDEyIDIyIDEzLjYgMjIgMTUuNUMyMiAxOC4xIDE4LjUgMjIgMTguNSAyMkMxOC41IDIyIDE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMk0xOC41IDE2LjhDMTkuMiAxNi44IDE5LjggMTYuMiAxOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40QzE3LjkgMTQuNCAxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44TTIwIDhINFYxOEgxMy41QzEzLjc5IDE4LjY4IDE0LjEzIDE5LjM1IDE0LjUgMjBINEMyLjg5IDIwIDIgMTkuMSAyIDE4TDIgNkMyIDQuODkgMi44OSA0IDQgNEgxMEwxMiA2SDIwQzIxLjEgNiAyMiA2Ljg5IDIyIDhWMTEuMzRDMjEuNDIgMTAuODQgMjAuNzQgMTAuNDUgMjAgMTAuMjNWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNb3ZlID0gXCJNMTQsMThWMTVIMTBWMTFIMTRWOEwxOSwxM00yMCw2SDEyTDEwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWOEMyMiw2Ljg5IDIxLjEsNiAyMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck1vdmVPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwVjE4TTEyIDZMMTAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFY4QzIyIDYuOSAyMS4xMSA2IDIwIDZIMTJNMTEgMTRWMTJIMTVWOUwxOSAxM0wxNSAxN1YxNEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdWx0aXBsZSA9IFwiTTIyLDRIMTRMMTIsMkg2QTIsMiAwIDAsMCA0LDRWMTZBMiwyIDAgMCwwIDYsMThIMjJBMiwyIDAgMCwwIDI0LDE2VjZBMiwyIDAgMCwwIDIyLDRNMiw2SDBWMTFIMFYyMEEyLDIgMCAwLDAgMiwyMkgyMFYyMEgyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTXVsdGlwbGVJbWFnZSA9IFwiTTcsMTVMMTEuNSw5TDE1LDEzLjVMMTcuNSwxMC41TDIxLDE1TTIyLDRIMTRMMTIsMkg2QTIsMiAwIDAsMCA0LDRWMTZBMiwyIDAgMCwwIDYsMThIMjJBMiwyIDAgMCwwIDI0LDE2VjZBMiwyIDAgMCwwIDIyLDRNMiw2SDBWMTFIMFYyMEEyLDIgMCAwLDAgMiwyMkgyMFYyMEgyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTXVsdGlwbGVPdXRsaW5lID0gXCJNMjIsNEEyLDIgMCAwLDEgMjQsNlYxNkEyLDIgMCAwLDEgMjIsMThINkEyLDIgMCAwLDEgNCwxNlY0QTIsMiAwIDAsMSA2LDJIMTJMMTQsNEgyMk0yLDZWMjBIMjBWMjJIMkEyLDIgMCAwLDEgMCwyMFYxMUgwVjZIMk02LDZWMTZIMjJWNkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck11bHRpcGxlUGx1cyA9IFwiTTIgMjBWNkgwVjIwQzAgMjEuMSAuOSAyMiAyIDIySDIwVjIwSDJNMjIgNEgxNEwxMiAySDZDNS42IDIgNS4yIDIuMSA0LjkgMi4zTDQuMyAyLjlDNC4xIDMuMiA0IDMuNiA0IDRWMTZDNCAxNi40IDQuMSAxNi44IDQuMyAxNy4xQzQuNCAxNy4yIDQuNSAxNy4zIDQuNSAxNy40QzUgMTcuOCA1LjUgMTggNiAxOEgyMkMyMy4xIDE4IDI0IDE3LjEgMjQgMTZWNkMyNCA0LjkgMjMuMSA0IDIyIDRNMjIgMTJIMTlWMTVIMTdWMTJIMTRWMTBIMTdWN0gxOVYxMEgyMlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdWx0aXBsZVBsdXNPdXRsaW5lID0gXCJNMjIgNEMyMy4xIDQgMjQgNC45IDI0IDZWMTZDMjQgMTcuMSAyMy4xIDE4IDIyIDE4SDZDNC45IDE4IDQgMTcuMSA0IDE2VjRDNCAyLjkgNC45IDIgNiAySDEyTDE0IDRIMjJNMiA2VjIwSDIwVjIySDJDLjkgMjIgMCAyMS4xIDAgMjBWNkgyTTYgNlYxNkgyMlY2SDZNMTQgMTBIMTZWOEgxOFYxMEgyMFYxMkgxOFYxNEgxNlYxMkgxNFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdXNpYyA9IFwiTTEwIDRMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjE4QzIyIDE5LjEgMjEuMSAyMCAyMCAyMEg0QzIuODkgMjAgMiAxOS4xIDIgMThMMiA2QzIgNC44OSAyLjg5IDQgNCA0SDEwTTE5IDlIMTUuNVYxMy4wNkwxNSAxM0MxMy45IDEzIDEzIDEzLjkgMTMgMTVDMTMgMTYuMTEgMTMuOSAxNyAxNSAxN0MxNi4xMSAxNyAxNyAxNi4xMSAxNyAxNVYxMUgxOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck11c2ljT3V0bGluZSA9IFwiTTIwIDE4VjhINFYxOEgyME0yMCA2QzIxLjEgNiAyMiA2Ljg5IDIyIDhWMThDMjIgMTkuMSAyMS4xIDIwIDIwIDIwSDRDMi44OSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyME0xOCA5VjExSDE2VjE1QzE2IDE2LjExIDE1LjExIDE3IDE0IDE3QzEyLjkgMTcgMTIgMTYuMTEgMTIgMTVDMTIgMTMuOSAxMi45IDEzIDE0IDEzQzE0LjE3IDEzIDE0LjM0IDEzIDE0LjUgMTMuMDZWOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJOZXR3b3JrID0gXCJNMywxNVY1QTIsMiAwIDAsMSA1LDNIMTFMMTMsNUgxOUEyLDIgMCAwLDEgMjEsN1YxNUEyLDIgMCAwLDEgMTksMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDVBMiwyIDAgMCwxIDMsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTmV0d29ya091dGxpbmUgPSBcIk0xNSAyMEMxNSAxOS40NSAxNC41NSAxOSAxNCAxOUgxM1YxN0gxOUMyMC4xMSAxNyAyMSAxNi4xMSAyMSAxNVY3QzIxIDUuOSAyMC4xMSA1IDE5IDVIMTNMMTEgM0g1QzMuOSAzIDMgMy45IDMgNVYxNUMzIDE2LjExIDMuOSAxNyA1IDE3SDExVjE5SDEwQzkuNDUgMTkgOSAxOS40NSA5IDIwSDJWMjJIOUM5IDIyLjU1IDkuNDUgMjMgMTAgMjNIMTRDMTQuNTUgMjMgMTUgMjIuNTUgMTUgMjJIMjJWMjBIMTVNNSAxNVY3SDE5VjE1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyT3BlbiA9IFwiTTE5LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTDEyLDZIMTlBMiwyIDAgMCwxIDIxLDhIMjFMNCw4VjE4TDYuMTQsMTBIMjMuMjFMMjAuOTMsMTguNUMyMC43LDE5LjM3IDE5LjkyLDIwIDE5LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck9wZW5PdXRsaW5lID0gXCJNNi4xLDEwTDQsMThWOEgyMUEyLDIgMCAwLDAgMTksNkgxMkwxMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgxOUMxOS45LDIwIDIwLjcsMTkuNCAyMC45LDE4LjVMMjMuMiwxMEg2LjFNMTksMThINkw3LjYsMTJIMjAuNkwxOSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJPdXRsaW5lID0gXCJNMjAsMThINFY4SDIwTTIwLDZIMTJMMTAsNEg0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QzIyLDYuODkgMjEuMSw2IDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUGx1cyA9IFwiTTEwLDRMMTIsNkgyMEEyLDIgMCAwLDEgMjIsOFYxOEEyLDIgMCAwLDEgMjAsMjBINEMyLjg5LDIwIDIsMTkuMSAyLDE4VjZDMiw0Ljg5IDIuODksNCA0LDRIMTBNMTUsOVYxMkgxMlYxNEgxNVYxN0gxN1YxNEgyMFYxMkgxN1Y5SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclBsdXNPdXRsaW5lID0gXCJNMTIgMTJIMTRWMTBIMTZWMTJIMThWMTRIMTZWMTZIMTRWMTRIMTJWMTJNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuODkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xMSA2IDIyIDYuODkgMjIgOE0yMCA4SDRWMThIMjBWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJQb3VuZCA9IFwiTTE1LjI1LDEzSDE3LjI1TDE2Ljc1LDE1SDE0Ljc1TDE1LjI1LDEzTTIyLDhWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwQTIsMiAwIDAsMSAyMiw4TTIwLDEySDE4LjVMMTksMTBIMThMMTcuNSwxMkgxNS41TDE2LDEwSDE1TDE0LjUsMTJIMTNWMTNIMTQuMjVMMTMuNzUsMTVIMTJWMTZIMTMuNUwxMywxOEgxNEwxNC41LDE2SDE2LjVMMTYsMThIMTdMMTcuNSwxNkgxOVYxNUgxNy43NUwxOC4yNSwxM0gyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJQb3VuZE91dGxpbmUgPSBcIk0yMCwxOEg0VjhIMjBNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNk0xOSwxMlYxMUgxNy41TDE4LDlIMTdMMTYuNSwxMUgxNC41TDE1LDlIMTRMMTMuNSwxMUgxMlYxMkgxMy4yNUwxMi43NSwxNEgxMVYxNUgxMi41TDEyLDE3SDEzTDEzLjUsMTVIMTUuNUwxNSwxN0gxNkwxNi41LDE1SDE4VjE0SDE2Ljc1TDE3LjI1LDEySDE5TTE1Ljc1LDE0SDEzLjc1TDE0LjI1LDEySDE2LjI1TDE1Ljc1LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclJlZnJlc2ggPSBcIk0xOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41QzE1LjUgMTkuODggMTYuNjIgMjEgMTggMjFDMTguODIgMjEgMTkuNTQgMjAuNjEgMjAgMjBIMjEuNzFDMjEuMTIgMjEuNDcgMTkuNjggMjIuNSAxOCAyMi41QzE1Ljc5IDIyLjUgMTQgMjAuNzEgMTQgMTguNUMxNCAxNi4yOSAxNS43OSAxNC41IDE4IDE0LjVNMTAgNEwxMiA2SDIwQzIxLjEgNiAyMiA2Ljg5IDIyIDhWMTNDMjEgMTIuMzggMTkuNzkgMTIgMTguNSAxMkMxNC45MSAxMiAxMiAxNC45MSAxMiAxOC41QzEyIDE5IDEyLjA2IDE5LjUgMTIuMTcgMjBINEMyLjg5IDIwIDIgMTkuMSAyIDE4TDIgNkMyIDQuODkgMi44OSA0IDQgNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU0yMCA4SDRWMThIMTJMMTIgMTguNUMxMiAxOSAxMi4wNiAxOS41IDEyLjE3IDIwSDRDMi44OSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjEzQzIxLjM5IDEyLjYzIDIwLjcyIDEyLjM0IDIwIDEyLjE3VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUmVtb3ZlID0gXCJNMTAsNEwxMiw2SDIwQTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxME0xMi40NiwxMC44OEwxNC41OSwxM0wxMi40NiwxNS4xMkwxMy44OCwxNi41NEwxNiwxNC40MUwxOC4xMiwxNi41NEwxOS41NCwxNS4xMkwxNy40MSwxM0wxOS41NCwxMC44OEwxOC4xMiw5LjQ2TDE2LDExLjU5TDEzLjg4LDkuNDZMMTIuNDYsMTAuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUmVtb3ZlT3V0bGluZSA9IFwiTTExLjQ2IDEwLjg4TDEyLjg4IDkuNDZMMTUgMTEuNTlMMTcuMTIgOS40NkwxOC41NCAxMC44OEwxNi40MSAxM0wxOC41NCAxNS4xMkwxNy4xMiAxNi41NEwxNSAxNC40MUwxMi44OCAxNi41NEwxMS40NiAxNS4xMkwxMy41OSAxM0wxMS40NiAxMC44OE0yMiA4VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xMSA2IDIyIDYuOSAyMiA4TTIwIDhINFYxOEgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNlYXJjaCA9IFwiTTE2LjUsMTJDMTksMTIgMjEsMTQgMjEsMTYuNUMyMSwxNy4zOCAyMC43NSwxOC4yMSAyMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyTTE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOUEyLjUsMi41IDAgMCwwIDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTksNEwxMSw2SDE5QTIsMiAwIDAsMSAyMSw4VjExLjgxQzE5LjgzLDEwLjY5IDE4LjI1LDEwIDE2LjUsMTBBNi41LDYuNSAwIDAsMCAxMCwxNi41QzEwLDE3Ljc5IDEwLjM3LDE5IDExLDIwSDNDMS44OSwyMCAxLDE5LjEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyU2VhcmNoT3V0bGluZSA9IFwiTTE2LjUsMTJDMTksMTIgMjEsMTQgMjEsMTYuNUMyMSwxNy4zOCAyMC43NSwxOC4yMSAyMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyTTE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOUEyLjUsMi41IDAgMCwwIDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTE5LDhIM1YxOEgxMC4xN0MxMC4zNCwxOC43MiAxMC42MywxOS4zOSAxMSwyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuODFDMjAuNDIsMTEuMjYgMTkuNzUsMTAuODEgMTksMTAuNVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNldHRpbmdzID0gXCJNNCA0QzIuODkgNCAyIDQuODkgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QzIyIDYuODkgMjEuMSA2IDIwIDZIMTJMMTAgNEg0TTcgMjJWMjRIOVYyMkg3TTExIDIyVjI0SDEzVjIySDExTTE1IDIyVjI0SDE3VjIySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNldHRpbmdzT3V0bGluZSA9IFwiTTQgNEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2SDEyTDEwIDRINE00IDhIMjBWMThINFY4TTcgMjJWMjRIOVYyMkg3TTExIDIyVjI0SDEzVjIySDExTTE1IDIyVjI0SDE3VjIySDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyU3RhciA9IFwiTTIwLDZIMTJMMTAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhBMiwyIDAgMCwwIDIwLDZNMTcuOTQsMTdMMTUsMTUuMjhMMTIuMDYsMTdMMTIuODQsMTMuNjdMMTAuMjUsMTEuNDNMMTMuNjYsMTEuMTRMMTUsOEwxNi4zNCwxMS4xNEwxOS43NSwxMS40M0wxNy4xNiwxMy42N0wxNy45NCwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTdGFyTXVsdGlwbGUgPSBcIk0yIDZIMFYyMEMwIDIxLjExIC44OTUgMjIgMiAyMkgyMFYyMEgyVjZNMjIgNEgxNEwxMiAySDZDNC44OSAyIDQgMi44OSA0IDRWMTZDNCAxNy4xIDQuODkgMTggNiAxOEgyMkMyMy4xMSAxOCAyNCAxNy4xIDI0IDE2VjZDMjQgNC44OSAyMy4xMSA0IDIyIDRNMTkuOTQgMTVMMTcgMTMuMjdMMTQuMDYgMTVMMTQuODQgMTEuNjZMMTIuMjUgOS40MkwxNS42NiA5LjEzTDE3IDZMMTguMzQgOS4xM0wyMS43NSA5LjQyTDE5LjE2IDExLjY2TDE5Ljk0IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclN0YXJNdWx0aXBsZU91dGxpbmUgPSBcIk0yIDZWMjBIMjBWMjJIMkMuODk1IDIyIDAgMjEuMTEgMCAyMFY2SDJNMTIuNzggMTAuMDVMMTUuODEgOS43OUwxNyA3TDE4LjE5IDkuNzlMMjEuMjIgMTAuMDVMMTguOTIgMTIuMDRMMTkuNjEgMTVMMTcgMTMuNDdMMTQuMzkgMTVMMTUuMDggMTIuMDRMMTIuNzggMTAuMDVNMjQgNlYxNkMyNCAxNy4xMSAyMy4xMSAxOCAyMiAxOEg2QzQuOSAxOCA0IDE3LjExIDQgMTZWNEM0IDIuODkgNC45IDIgNiAySDEyTDE0IDRIMjJDMjMuMTEgNCAyNCA0LjkgMjQgNk0yMiA2SDZWMTZIMjJWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTdGFyT3V0bGluZSA9IFwiTTEwLjc4IDEyLjA1TDEzLjgxIDExLjc5TDE1IDlMMTYuMTkgMTEuNzlMMTkuMjIgMTIuMDVMMTYuOTIgMTQuMDRMMTcuNjEgMTdMMTUgMTUuNDdMMTIuMzkgMTdMMTMuMDggMTQuMDRMMTAuNzggMTIuMDVNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDEwTDEyIDZIMjBDMjEuMTEgNiAyMiA2LjkgMjIgOE0yMCA4SDRWMThIMjBWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTd2FwID0gXCJNMjAgNkgxMkwxMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEEyIDIgMCAwIDAgMjAgNk0xNSAxNlYxNEg5VjE2TDYgMTNMOSAxMFYxMkgxNVYxMEwxOCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTd2FwT3V0bGluZSA9IFwiTTIwIDE4SDRWOEgyME0yMCA2SDEyTDEwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QTIgMiAwIDAgMCAyMCA2TTE4IDEzTDE1IDEwVjEySDlWMTBMNiAxM0w5IDE2VjE0SDE1VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclN5bmMgPSBcIk0xMCw0TDEyLDZIMjBBMiwyIDAgMCwxIDIyLDhWMTEuNUMyMS4yMywxMS4xOCAyMC4zOSwxMSAxOS41LDExQTYuNSw2LjUgMCAwLDAgMTMsMTcuNUMxMywxOC4zOSAxMy4xOCwxOS4yMyAxMy41LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTTE5LDEyVjEzLjVBNCw0IDAgMCwxIDIzLDE3LjVDMjMsMTguMzIgMjIuNzUsMTkuMDggMjIuMzMsMTkuNzFMMjEuMjQsMTguNjJDMjEuNDEsMTguMjggMjEuNSwxNy45IDIxLjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDE1VjE2LjVMMTYuNzUsMTQuMjVMMTksMTJNMTksMjNWMjEuNUE0LDQgMCAwLDEgMTUsMTcuNUMxNSwxNi42OCAxNS4yNSwxNS45MiAxNS42NywxNS4yOUwxNi43NiwxNi4zOEMxNi41OSwxNi43MiAxNi41LDE3LjEgMTYuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMjBWMTguNUwyMS4yNSwyMC43NUwxOSwyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTeW5jT3V0bGluZSA9IFwiTTEwLDRMMTIsNkgyMEEyLDIgMCAwLDEgMjIsOFYxMS41QzIxLjM4LDExLjI0IDIwLjcsMTEuMDcgMjAsMTFWOEg0VjE4SDEzQzEzLjA3LDE4LjcgMTMuMjQsMTkuMzggMTMuNSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxME0xOSwxMlYxMy41QTQsNCAwIDAsMSAyMywxNy41QzIzLDE4LjMyIDIyLjc1LDE5LjA4IDIyLjMzLDE5LjcxTDIxLjI0LDE4LjYyQzIxLjQxLDE4LjI4IDIxLjUsMTcuOSAyMS41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwxNVYxNi41TDE2Ljc1LDE0LjI1TDE2LjcyLDE0LjIyQzE2Ljc4LDE0LjE3IDE2Ljg1LDE0LjEzIDE5LDEyTTE5LDIzVjIxLjVBNCw0IDAgMCwxIDE1LDE3LjVDMTUsMTYuNjggMTUuMjUsMTUuOTIgMTUuNjcsMTUuMjlMMTYuNzYsMTYuMzhDMTYuNTksMTYuNzIgMTYuNSwxNy4xIDE2LjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDIwVjE4LjVMMjEuMjUsMjAuNzVMMjEuMjgsMjAuNzhDMjEuMjIsMjAuODMgMjEuMTUsMjAuODcgMTksMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyVGFibGUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhDMjIgNi44OSAyMS4xIDYgMjAgNkgxMkwxMCA0SDRNMTIgOUgxNVYxMUgxMlY5TTE2IDlIMTlWMTFIMTZWOU0xMiAxMkgxNVYxNEgxMlYxMk0xNiAxMkgxOVYxNEgxNlYxMk0xMiAxNUgxNVYxN0gxMlYxNU0xNiAxNUgxOVYxN0gxNlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJUYWJsZU91dGxpbmUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhDMjIgNi44OSAyMS4xIDYgMjAgNkgxMkwxMCA0SDRNNCA4SDIwVjE4SDRWOE0xMiA5VjExSDE1VjlIMTJNMTYgOVYxMUgxOVY5SDE2TTEyIDEyVjE0SDE1VjEySDEyTTE2IDEyVjE0SDE5VjEySDE2TTEyIDE1VjE3SDE1VjE1SDEyTTE2IDE1VjE3SDE5VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclRleHQgPSBcIk0yMCw2SDEyTDEwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2TTE1LDE2SDZWMTRIMTVWMTZNMTgsMTJINlYxMEgxOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJUZXh0T3V0bGluZSA9IFwiTTIwLDE4SDRWOEgyME0yMCw2SDEyTDEwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2TTE1LDE2SDZWMTRIMTVWMTZNMTgsMTJINlYxMEgxOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJVcGxvYWQgPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgxMEwxMiw2SDIwTTEwLjc1LDEzSDE0VjE3SDE2VjEzSDE5LjI1TDE1LDguNzVcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJVcGxvYWRPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhBMiAyIDAgMCAwIDIwIDZNMTYgMTdIMTRWMTNIMTFMMTUgOUwxOSAxM0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJaaXAgPSBcIk0yMCA2SDEyTDEwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY4QzIyIDYuOSAyMS4xIDYgMjAgNk0xOCAxMkgxNlYxNEgxOFYxNkgxNlYxOEgxNFYxNkgxNlYxNEgxNFYxMkgxNlYxMEgxNFY4SDE2VjEwSDE4VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclppcE91dGxpbmUgPSBcIk0yMCA2SDEyTDEwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY4QzIyIDYuOSAyMS4xIDYgMjAgNk0yMCAxOEgxNlYxNkgxNFYxOEg0VjhIMTRWMTBIMTZWOEgyMFYxOE0xNiAxMlYxMEgxOFYxMkgxNk0xNCAxMkgxNlYxNEgxNFYxMk0xOCAxNkgxNlYxNEgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb250QXdlc29tZSA9IFwiTTE5Ljc2IDJINC4yNEMzIDIgMiAzIDIgNC4yNFYxOS43NkMyIDIxIDMgMjIgNC4yNCAyMkgxOS43NkMyMSAyMiAyMiAyMSAyMiAxOS43NlY0LjI0QzIyIDMgMjEgMiAxOS43NiAyTTE3LjczIDE0LjY5QzE3LjczIDE0Ljg4IDE3LjU3IDE0Ljk2IDE3LjM4IDE1LjA0QzE2LjY0IDE1LjM2IDE1Ljg0IDE1LjY1IDE1IDE1LjY1QzEzLjc4IDE1LjY1IDEzLjIyIDE0LjkxIDExLjc4IDE0LjkxQzEwLjc0IDE0LjkxIDkuNjUgMTUuMjggOC43NyAxNS42OEM4LjcxIDE1LjcxIDguNjYgMTUuNzEgOC42MSAxNS43M1YxNy43NkM4LjYxIDE3Ljg0IDguNjEgMTcuOTIgOC41OCAxNy45N1YxOC4wM0M4LjQ3IDE4LjQgOC4xMyAxOC42NyA3LjczIDE4LjY3QzcuMjIgMTguNjcgNi44MiAxOC4yNiA2LjgyIDE3Ljc2VjhDNi40NyA3LjczIDYuMjQgNy4zMSA2LjI0IDYuODNDNi4yNCA2IDYuOSA1LjMzIDcuNzMgNS4zM0M4LjU2IDUuMzMgOS4yMyA2IDkuMjMgNi44M0M5LjIzIDcuMzEgOSA3LjczIDguNjQgOFY4LjgzQzguNzIgOC44IDguOCA4Ljc3IDguODggOC43MkM5LjcxIDguMzcgMTAuNyA4LjA4IDExLjYzIDguMDhDMTIuNjQgOC4wOCAxMy40NCA4LjM1IDE0LjM1IDguNjlDMTQuNTQgOC43NyAxNC43MiA4LjggMTQuOTMgOC44QzE1Ljk1IDguOCAxNy4wNyA4LjA4IDE3LjM0IDguMDhDMTcuNTUgOC4wOCAxNy43NCA4LjI0IDE3Ljc0IDguNDNWMTQuNjlIMTcuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZCA9IFwiTTE1LjUsMjFMMTQsOEgxNi4yM0wxNS4xLDMuNDZMMTYuODQsM0wxOC4wOSw4SDIyTDIwLjUsMjFIMTUuNU01LDExSDEwQTMsMyAwIDAsMSAxMywxNEgyQTMsMyAwIDAsMSA1LDExTTEzLDE4QTMsMyAwIDAsMSAxMCwyMUg1QTMsMyAwIDAsMSAyLDE4SDEzTTMsMTVIOEw5LjUsMTYuNUwxMSwxNUgxMkExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3SDNBMSwxIDAgMCwxIDIsMTZBMSwxIDAgMCwxIDMsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEFwcGxlID0gXCJNMjAsMTBDMjIsMTMgMTcsMjIgMTUsMjJDMTMsMjIgMTMsMjEgMTIsMjFDMTEsMjEgMTEsMjIgOSwyMkM3LDIyIDIsMTMgNCwxMEM2LDcgOSw3IDExLDhWNUM1LjM4LDguMDcgNC4xMSwzLjc4IDQuMTEsMy43OEM0LjExLDMuNzggNi43NywwLjE5IDExLDVWM0gxM1Y4QzE1LDcgMTgsNyAyMCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kQXBwbGVPdXRsaW5lID0gXCJNMjAsMTBDMTguNTgsNy41NyAxNS41LDYuNjkgMTMsOFYzSDExVjhDOC41LDYuNjkgNS40Miw3LjU3IDQsMTBDMiwxMyA3LDIyIDksMjJDMTEsMjIgMTEsMjEgMTIsMjFDMTMsMjEgMTMsMjIgMTUsMjJDMTcsMjIgMjIsMTMgMjAsMTBNMTguMjUsMTMuMzhDMTcuNjMsMTUuODUgMTYuNDEsMTguMTIgMTQuNywyMEMxNC41LDIwIDE0LjI3LDE5LjkgMTQuMSwxOS43NUMxMi44NywxOC43NiAxMS4xMywxOC43NiA5LjksMTkuNzVDOS43MywxOS45IDkuNSwyMCA5LjMsMjBDNy41OSwxOC4xMyA2LjM2LDE1Ljg1IDUuNzUsMTMuMzlDNS41LDEyLjY2IDUuNDUsMTEuODcgNS42NiwxMS4xMkM2LjI0LDEwLjA5IDcuMzIsOS40MyA4LjUsOS40QzkuMDYsOS40MSA5LjYxLDkuNTQgMTAuMTEsOS43OUwxMSwxMC4yNEgxM0wxMy44OSw5Ljc5QzE0LjM5LDkuNTQgMTQuOTQsOS40MSAxNS41LDkuNEMxNi42OCw5LjQzIDE3Ljc2LDEwLjA4IDE4LjM0LDExLjExQzE4LjU1LDExLjg2IDE4LjUsMTIuNjUgMTguMjUsMTMuMzhNMTEsNUM1LjM4LDguMDcgNC4xMSwzLjc4IDQuMTEsMy43OEM0LjExLDMuNzggNi43NywwLjE5IDExLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZENyb2lzc2FudCA9IFwiTTIyLDE5TDE5LDE3TDIyLDE1VjE5TTE1LDE1TDE5LDlMMjIsMTNMMTgsMTZMMTUsMTVNNSwxN0wyLDE5VjE1TDUsMTdNOSwxNUw2LDE2TDIsMTNMNSw5TDksMTVNMTQsNkwxOCw4TDEzLDE1SDExTDYsOEwxMCw2SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2REcnVtc3RpY2sgPSBcIk0yMC4xNiAxMi43M0MyMi45MyA5Ljk2IDIyLjU3IDUuMjYgMTkuMDkgM0MxNy4wOCAxLjY3IDE0LjM5IDEuNjYgMTIuMzYgMi45N0MxMC42IDQuMSA5LjYzIDUuODYgOS40NiA3LjY4QzkuMzMgOSA4LjgzIDEwLjIzIDcuOTEgMTEuMTVMNy44OCAxMS4xOEM2LjcyIDEyLjM0IDYuNzIgMTQuMTEgNy44MSAxNS4xOUw4LjggMTYuMThDOS44OSAxNy4yNyAxMS42NiAxNy4yNyAxMi43NSAxNi4xOEMxMy43MiAxNS4yMSAxNSAxNC42OCAxNi4zOSAxNC41M0MxNy43NiAxNC4zOCAxOS4xIDEzLjc4IDIwLjE2IDEyLjczTTYuMjYgMTkuODZDNi41MyAyMC40MiA2LjQ0IDIxLjEgNS45NyAyMS41NkM1LjM5IDIyLjE1IDQuNDQgMjIuMTUgMy44NSAyMS41NkMzLjU4IDIxLjI5IDMuNDQgMjAuOTQgMy40MiAyMC41OEMzLjA2IDIwLjU2IDIuNzEgMjAuNDIgMi40NCAyMC4xNUMxLjg1IDE5LjU2IDEuODUgMTguNjEgMi40NCAxOC4wM0MyLjkgMTcuNTcgMy41OSAxNy40NyA0LjE0IDE3Ljc0TDYuNjIgMTUuMzFDNi43NiAxNS41IDYuOTIgMTUuNzIgNy4xIDE1LjlMOC4wOSAxNi44OUM4LjMgMTcuMDkgOC41IDE3LjI2IDguNzYgMTcuNDFMNi4yNiAxOS44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kRHJ1bXN0aWNrT2ZmID0gXCJNMjAuOCAyMi43TDEzLjYgMTUuNUMxMy4zIDE1LjcgMTMgMTUuOSAxMi43IDE2LjJDMTEuNiAxNy4zIDkuOCAxNy4zIDguNyAxNi4yTDcuNyAxNS4yQzYuNiAxNC4xIDYuNiAxMi4zIDcuOCAxMS4yQzggMTEgOC4yIDEwLjcgOC40IDEwLjRMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTguMSAxNi45TDcuMSAxNS45QzYuOSAxNS43IDYuOCAxNS41IDYuNiAxNS4zTDQuMSAxNy43QzMuNSAxNy40IDIuOSAxNy41IDIuNCAxOEMxLjggMTguNiAxLjggMTkuNSAyLjQgMjAuMUMyLjcgMjAuNCAzIDIwLjUgMy40IDIwLjVDMy40IDIwLjkgMy42IDIxLjIgMy44IDIxLjVDNC40IDIyLjEgNS4zIDIyLjEgNS45IDIxLjVDNi40IDIxIDYuNSAyMC40IDYuMiAxOS44TDguNyAxNy40QzguNSAxNy4zIDguMyAxNy4xIDguMSAxNi45TTIwLjIgMTIuN0MyMyA5LjkgMjIuNiA1LjIgMTkuMSAzQzE3LjEgMS43IDE0LjQgMS43IDEyLjQgM0MxMSAzLjkgMTAuMSA1LjEgOS43IDYuNUwxNy41IDE0LjNDMTguNSAxNCAxOS40IDEzLjUgMjAuMiAxMi43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2REcnVtc3RpY2tPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMOC41IDEwLjRDOC4zIDEwLjcgOC4xIDEwLjkgNy45IDExLjJDNi43IDEyLjQgNi43IDE0LjEgNy44IDE1LjJMOC44IDE2LjJDOS4zIDE2LjcgMTAuMSAxNyAxMC44IDE3QzExLjUgMTcgMTIuMiAxNi43IDEyLjggMTYuMkMxMy4xIDE1LjkgMTMuNCAxNS43IDEzLjcgMTUuNUwyMC45IDIyLjdMMjIuMSAyMS41TTExLjMgMTQuOEMxMS4xIDE1IDEwLjkgMTUgMTAuOCAxNVMxMC40IDE1IDEwLjIgMTQuOEw5LjIgMTMuOEM5IDEzLjYgOSAxMy40IDkgMTMuMkM5IDEzIDkuMSAxMi43IDkuMyAxMi41QzkuNSAxMi4zIDkuNyAxMiA5LjkgMTEuOEwxMi4xIDE0QzExLjkgMTQuMyAxMS42IDE0LjUgMTEuMyAxNC44TTExLjQgOC4yTDkuNyA2LjVDMTAuMSA1LjEgMTEgMy45IDEyLjQgM0MxMy40IDIuNCAxNC42IDIgMTUuNyAyQzE2LjkgMiAxOC4xIDIuMyAxOS4xIDNDMjIuNiA1LjMgMjIuOSAxMCAyMC4yIDEyLjdDMTkuNCAxMy41IDE4LjUgMTQgMTcuNSAxNC4zTDE1LjggMTIuNkMxNS45IDEyLjYgMTYgMTIuNSAxNi4yIDEyLjVDMTcuMiAxMi40IDE4LjEgMTIgMTguOCAxMS4zQzE5LjcgMTAuNCAyMC4yIDkuMSAyMCA3LjhDMTkuOSA2LjUgMTkuMiA1LjQgMTggNC42QzE3LjMgNC4yIDE2LjUgNCAxNS43IDRDMTQuOSA0IDE0LjEgNC4yIDEzLjQgNC43QzEyLjIgNS40IDExLjUgNi42IDExLjQgNy45VjguMk04LjggMTcuNEw2LjMgMTkuOEM2LjYgMjAuNCA2LjUgMjEgNiAyMS41QzUuNCAyMi4xIDQuNSAyMi4xIDMuOSAyMS41QzMuNiAyMS4yIDMuNSAyMC45IDMuNSAyMC41QzMuMSAyMC41IDIuOCAyMC4zIDIuNSAyMC4xQzEuOSAxOS41IDEuOSAxOC42IDIuNSAxOEMzIDE3LjUgMy42IDE3LjQgNC4yIDE3LjdMNi43IDE1LjNDNi44IDE1LjUgNyAxNS43IDcuMiAxNS45TDguMiAxNi45QzguMyAxNy4xIDguNSAxNy4zIDguOCAxNy40XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZERydW1zdGlja091dGxpbmUgPSBcIk0xNS43MSA0QzE2LjU0IDQgMTcuMzMgNC4yMiAxOCA0LjY2QzE5LjE0IDUuNCAxOS44NCA2LjUzIDIwIDcuODRDMjAuMTEgOS4xMyAxOS42NiAxMC40IDE4Ljc1IDExLjMxQzE4LjA1IDEyIDE3LjE2IDEyLjQ0IDE2LjE4IDEyLjU0QzE0LjI3IDEyLjc0IDEyLjU5IDEzLjUgMTEuMzQgMTQuNzdDMTEuMTMgMTQuOTcgMTAuOSAxNSAxMC43NyAxNUMxMC42NSAxNSAxMC40MiAxNC45NyAxMC4yMSAxNC43N0w5LjIyIDEzLjc4QzkuMDQgMTMuNiA5IDEzLjM5IDkgMTMuMjVDOSAxMyA5LjExIDEyLjc4IDkuMzIgMTIuNTdDMTAuNTMgMTEuMzUgMTEuMjcgOS43MyAxMS40NSA3Ljg3QzExLjU4IDYuNTQgMTIuMjkgNS40IDEzLjQ1IDQuNjVDMTQuMTEgNC4yMiAxNC44OSA0IDE1LjcxIDRNMTUuNzEgMkMxNC41NCAyIDEzLjM3IDIuMzIgMTIuMzYgMi45N0MxMC42IDQuMSA5LjYzIDUuODYgOS40NiA3LjY4QzkuMzMgOSA4LjgzIDEwLjIzIDcuOTEgMTEuMTVMNy44OCAxMS4xOEM2LjcyIDEyLjM0IDYuNzIgMTQuMTEgNy44MSAxNS4xOUw4LjggMTYuMThDOS4zNSAxNi43MyAxMC4wNiAxNyAxMC43NyAxN1MxMi4yIDE2LjczIDEyLjc1IDE2LjE4QzEzLjcyIDE1LjIxIDE1IDE0LjY4IDE2LjM5IDE0LjUzQzE3Ljc2IDE0LjM4IDE5LjEgMTMuNzggMjAuMTYgMTIuNzNDMjIuOTMgOS45NiAyMi41NyA1LjI2IDE5LjA5IDNDMTguMDggMi4zMyAxNi45IDIgMTUuNzEgMk02LjI2IDE5Ljg2QzYuNTMgMjAuNDIgNi40NCAyMS4xIDUuOTcgMjEuNTZDNS4zOSAyMi4xNSA0LjQ0IDIyLjE1IDMuODUgMjEuNTZDMy41OCAyMS4yOSAzLjQ0IDIwLjk0IDMuNDIgMjAuNThDMy4wNiAyMC41NiAyLjcxIDIwLjQyIDIuNDQgMjAuMTVDMS44NSAxOS41NiAxLjg1IDE4LjYxIDIuNDQgMTguMDNDMi45IDE3LjU3IDMuNTkgMTcuNDcgNC4xNCAxNy43NEw2LjYyIDE1LjMxQzYuNzYgMTUuNSA2LjkyIDE1LjcyIDcuMSAxNS45TDguMDkgMTYuODlDOC4zIDE3LjA5IDguNSAxNy4yNiA4Ljc2IDE3LjQxTDYuMjYgMTkuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEZvcmtEcmluayA9IFwiTTMsM0ExLDEgMCAwLDAgMiw0VjhMMiw5LjVDMiwxMS4xOSAzLjAzLDEyLjYzIDQuNSwxMy4yMlYxOS41QTEuNSwxLjUgMCAwLDAgNiwyMUExLjUsMS41IDAgMCwwIDcuNSwxOS41VjEzLjIyQzguOTcsMTIuNjMgMTAsMTEuMTkgMTAsOS41VjhMMTAsNEExLDEgMCAwLDAgOSwzQTEsMSAwIDAsMCA4LDRWOEEwLjUsMC41IDAgMCwxIDcuNSw4LjVBMC41LDAuNSAwIDAsMSA3LDhWNEExLDEgMCAwLDAgNiwzQTEsMSAwIDAsMCA1LDRWOEEwLjUsMC41IDAgMCwxIDQuNSw4LjVBMC41LDAuNSAwIDAsMSA0LDhWNEExLDEgMCAwLDAgMywzTTE5Ljg4LDNDMTkuNzUsMyAxOS42MiwzLjA5IDE5LjUsMy4xNkwxNiw1LjI1VjlIMTJWMTFIMTNMMTQsMjFIMjBMMjEsMTFIMjJWOUgxOFY2LjM0TDIwLjUsNC44NEMyMSw0LjU2IDIxLjEzLDQgMjAuODQsMy41QzIwLjYzLDMuMTQgMjAuMjYsMi45NSAxOS44OCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RIYWxhbCA9IFwiTTcgNVYxNUM3IDE2LjExIDYuMTEgMTcgNSAxN0g0QzMuNDUgMTcgMyAxNi41NSAzIDE2VjEzSDFWMTZDMSAxNy42NiAyLjM0IDE5IDQgMTlINUM3LjIxIDE5IDkgMTcuMjEgOSAxNVY1TTIzIDEzLjM4TDIxLjc3IDEyLjE1QzIxLjAzIDExLjQxIDIwLjA0IDExIDE5IDExSDE3VjEzSDE5QzE5LjUgMTMgMjAgMTMuMiAyMC4zNSAxMy41NkwyMC43IDEzLjkxTDE5LjUgMTQuNkMxOS4wNCAxNC44NiAxOC41MyAxNSAxOCAxNUgxN0MxNi40NCAxNSAxNiAxNC41NiAxNiAxNFY2SDE0VjkuODFMMTMuMzggOS4xMkMxMi43IDguMzcgMTEuNiA4IDEwLjU5IDhIMTBWMTBIMTAuNTlDMTEuMjMgMTAgMTEuODQgMTAuMjUgMTIuMjkgMTAuNzFMMTQgMTIuNDFWMTRDMTQgMTUuMTIgMTMuMTIgMTYgMTIgMTZIMTBWMThIMTJDMTMuMzcgMTggMTQuNSAxNy4zIDE1LjE3IDE2LjI0QzE1LjYzIDE2LjcxIDE2LjI1IDE3IDE3IDE3SDE4QzE4Ljg4IDE3IDE5Ljc0IDE2Ljc3IDIwLjUgMTYuMzNMMjMgMTQuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEtvc2hlciA9IFwiTTEgN1Y5SDNDMy41NyA5IDQgOS40MyA0IDEwVjE3SDZWMTBDNiA4LjM2IDQuNjQgNyAzIDdIMU03IDdWMTRDNyAxNS42NSA4LjM2IDE3IDEwIDE3SDE0QzE1LjY1IDE3IDE3IDE1LjY1IDE3IDE0VjdIMTVWMTRDMTUgMTQuNTcgMTQuNTcgMTUgMTQgMTVIMTBDOS40MyAxNSA5IDE0LjU3IDkgMTRWMTNIMTBDMTEuNjUgMTMgMTMgMTEuNjUgMTMgMTBWN0gxMVYxMEMxMSAxMC41NyAxMC41NyAxMSAxMCAxMUg5VjdIN00xOCA3VjlIMjBDMjAuNTcgOSAyMSA5LjQzIDIxIDEwVjE0QzIxIDE0LjU3IDIwLjU3IDE1IDIwIDE1SDE4VjE3SDIwQzIxLjY1IDE3IDIzIDE1LjY1IDIzIDE0VjEwQzIzIDguMzYgMjEuNjUgNyAyMCA3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIxLDIxLjcyTDE5LjczLDIzTDE3LjczLDIxSDE1LjVMMTUuMjEsMTguNUwxMi45NywxNi4yNEMxMi44NiwxNi42OCAxMi40NywxNyAxMiwxN0gzQTEsMSAwIDAsMSAyLDE2QTEsMSAwIDAsMSAzLDE1SDhMOS41LDE2LjVMMTEsMTVIMTEuNzNMMTAuNzMsMTRIMkEzLDMgMCAwLDEgNSwxMUg3LjczTDIsNS4yN00xNCw4SDE2LjIzTDE1LjEsMy40NkwxNi44NCwzTDE4LjA5LDhIMjJMMjAuNzQsMTguOTJMMTQuNTQsMTIuNzJMMTQsOE0xMywxOEEzLDMgMCAwLDEgMTAsMjFINUEzLDMgMCAwLDEgMiwxOEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kU3RlYWsgPSBcIk0xMS45IDJDOCAyIDQuOSA1LjQgNSA5LjNDNS4xIDExLjkgNi42IDE0LjEgOC43IDE1LjJDMTAuMSAxNS45IDExIDE3LjMgMTEgMTguOFYxOUMxMSAyMC43IDEyLjMgMjIgMTQgMjJDMTggMjIgMTkgMTcgMTkgOUMxOSA5IDE5IDIgMTEuOSAyTTE0IDIwQzEzLjQgMjAgMTMgMTkuNiAxMyAxOVYxOC44QzEzIDE2LjYgMTEuNyAxNC41IDkuNyAxMy40QzguMSAxMi42IDcuMSAxMSA3IDkuMkM3IDcuOSA3LjUgNi41IDguNCA1LjVDOS4zIDQuNSAxMC42IDQgMTEuOCA0QzE2LjcgNCAxNyA4LjIgMTcgOUMxNyAxOC45IDE1LjMgMjAgMTQgMjBNMTUuOCA3LjZMOC4zIDEwLjNDOC4xIDEwIDggOS42IDggOS4xQzggOC40IDguMiA3LjggOC41IDcuMUwxMy43IDUuMkMxNC45IDUuOCAxNS41IDYuNyAxNS44IDcuNk0xMi45IDE1LjFMMTUuNyAxNC4xQzE1LjYgMTUuNiAxNS4zIDE2LjcgMTUuMSAxNy40TDEzLjggMTcuOUMxMy44IDE2LjkgMTMuNSAxNiAxMi45IDE1LjFNMTYgOS4yQzE2IDEwLjQgMTYgMTEuNSAxNS45IDEyLjRMMTEuOSAxMy45QzExLjQgMTMuNCAxMC44IDEyLjkgMTAuMSAxMi42QzkuNyAxMi40IDkuMyAxMi4xIDkgMTEuOEwxNiA5LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZFN0ZWFrT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0w1LjI3IDcuMTZDNS4wOCA3LjgzIDUgOC41MyA1IDkuMjZDNS4xIDExLjgzIDYuNTkgMTQuMDUgOC43NCAxNS4xOUMxMC4xIDE1LjkgMTEgMTcuMjUgMTEgMTguNzlWMTlDMTEgMjAuNjYgMTIuMzQgMjIgMTQgMjJDMTUuNjggMjIgMTYuODMgMjEuMTEgMTcuNiAxOS41TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M00xNCAyMEMxMy40NSAyMCAxMyAxOS41NSAxMyAxOVYxOC43OUMxMyAxNi41NiAxMS43MiAxNC41IDkuNjcgMTMuNDJDOC4wOSAxMi41OCA3LjA3IDEwLjk2IDcgOS4xOEM3IDkuMDkgNyA5IDcgOC45TDguMTYgMTAuMDVDOC4xOSAxMC4xNSA4LjIxIDEwLjI1IDguMjQgMTAuMzVMOC40IDEwLjI5TDkuNjIgMTEuNUw5LjA4IDExLjcxQzkuMzggMTIuMDQgOS43MyAxMi4zMiAxMC4xNCAxMi41M0MxMC44MSAxMi44OSAxMS40IDEzLjM0IDExLjkxIDEzLjg1TDExLjk1IDEzLjg0TDEzLjE3IDE1LjA2TDEyLjk1IDE1LjE0QzEzLjQ2IDE1Ljk2IDEzLjggMTYuODkgMTMuOTMgMTcuODVMMTUuMiAxNy4zOUMxNS4yMiAxNy4zMiAxNS4yNSAxNy4yNCAxNS4yNyAxNy4xNkwxNi4wNyAxNy45NkMxNS40NyAxOS42OCAxNC42OCAyMCAxNCAyME0xNS43OSA3LjZMMTIuMTQgOC45NEw5Ljg4IDYuNjhMMTMuNjkgNS4zQzE0Ljk0IDUuNzcgMTUuNTMgNi43MiAxNS43OSA3LjZNOC41OSA1LjM5TDcuMTcgMy45N0M4LjQxIDIuNzcgMTAuMDcgMiAxMS44OCAySDExLjg4QzE5IDIgMTkgOSAxOSA5QzE5IDExLjQ2IDE4LjkgMTMuNjMgMTguNjYgMTUuNDZMMTYuODQgMTMuNjRDMTYuOTQgMTIuMzYgMTcgMTAuODMgMTcgOUMxNyA4LjE4IDE2LjY5IDQgMTEuODggNEgxMS44OEMxMC42NyA0IDkuNSA0LjUgOC41OSA1LjM5TTE1LjY4IDEyLjVMMTMuMzYgMTAuMTVMMTYgOS4xOUMxNiAxMC40MSAxNS45NyAxMS40NiAxNS45MiAxMi40TDE1LjY4IDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZFR1cmtleSA9IFwiTTUuNDQgNy45Nkw1Ljk2IDcuNDNDNi41NCA2Ljg1IDcuNSA2Ljg1IDguMSA3LjQ3TDguMTIgNy41QzguNjEgOCA5LjI2IDguMjQgOS45NyA4LjMxQzEwLjk0IDguNCAxMS44OCA4LjkyIDEyLjUgOS44NkMxMy4xOCAxMC45NCAxMy4xNyAxMi4zOCAxMi40NiAxMy40NUMxMS4yNiAxNS4zIDguNzUgMTUuNSA3LjI4IDE0QzYuNzIgMTMuNDUgNi40IDEyLjc0IDYuMzIgMTJDNi4yNCAxMS4yNyA1Ljk1IDEwLjU4IDUuNDQgMTAuMDdDNC44NiA5LjUgNC44NiA4LjU0IDUuNDQgNy45Nk05LjY0IDE2QzguNDcgMTYgNy4zOCAxNS41NSA2LjU3IDE0LjcyQzUuODcgMTQgNS40MyAxMy4xIDUuMzIgMTIuMTJDNS4yOSAxMS44MiA1LjIgMTEuNDMgNC45NiAxMS4wN0M0LjM2IDExLjkgNCAxMi45IDQgMTRDNCAxNS42NCA0LjggMTcuMDkgNi4wMyAxOEgxOVYxN0MxOSAxMy40IDE2LjYxIDEwLjM1IDEzLjM0IDkuMzVDMTQuMjMgMTAuNzUgMTQuMjEgMTIuNjIgMTMuMyAxNEMxMi41IDE1LjI1IDExLjEyIDE2IDkuNjQgMTZNMTQuNzggNy41NkgxNi4wNUMxNi45MiA3LjU2IDE3LjY4IDguMTcgMTcuNjggOS4yNlYxMEgxOC45M1Y5QzE4LjkzIDcuNSAxNy42IDYuMzYgMTYuMDUgNi4zNkgxNC43OEMxMy45NSA2LjM2IDEzLjI0IDUuNTQgMTMuMjQgNC43UzEzLjk1IDMuMjQgMTQuNzggMy4yNFYyQzEzLjI0IDIgMTIgMy4yNCAxMiA0Ljc4UzEzLjI0IDcuNTYgMTQuNzggNy41Nk00LjUgNy41NUM0LjU2IDcuNDUgNC42NCA3LjM1IDQuNzMgNy4yNUw1LjI1IDYuNzNDNS4zNCA2LjY0IDUuNDQgNi41NyA1LjU0IDYuNUw0LjEzIDUuMDdDNC4yNyA0LjggNC4yMiA0LjQ1IDQgNC4yMkMzLjcgMy45MyAzLjIyIDMuOTMgMi45MyA0LjIyQzIuNzkgNC4zNiAyLjcyIDQuNTMgMi43MSA0LjcxQzIuNTMgNC43MiAyLjM2IDQuNzkgMi4yMiA0LjkzQzEuOTMgNS4yMiAxLjkzIDUuNyAyLjIyIDZDMi40NSA2LjIyIDIuNzkgNi4yNyAzLjA3IDYuMTNMNC41IDcuNTVNMTguMzkgNC4zOUMxOC45IDMuODggMTkuMjIgMy4xOSAxOS4yMiAyLjQySDE3Ljk3QzE3Ljk3IDMuMjUgMTcuMjcgMy45NSAxNi40NCAzLjk1VjUuMTlDMTguMyA1LjE5IDE5Ljc2IDYuNzEgMTkuNzYgOC41N1YxMUgyMVY4LjU3QzIxIDYuNzIgMTkuOTQgNS4xMyAxOC4zOSA0LjM5TTUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlIM0MzIDIwLjExIDMuOSAyMSA1IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RWYXJpYW50ID0gXCJNMjIsMThBNCw0IDAgMCwxIDE4LDIySDE1QTQsNCAwIDAsMSAxMSwxOFYxNkgxNy43OUwyMC41NSwxMS4yM0wyMi4xMSwxMi4xM0wxOS44NywxNkgyMlYxOE05LDIySDJDMiwxOSAyLDE2IDIuMzMsMTIuODNDMi42LDEwLjMgMy4wOCw3LjY2IDMuNiw1SDNWM0g0TDcsM0g4VjVINy40QzcuOTIsNy42NiA4LjQsMTAuMyA4LjY3LDEyLjgzQzksMTYgOSwxOSA5LDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RWYXJpYW50T2ZmID0gXCJNMi4yOCAzTDEgNC4yN0wzLjMxIDYuNThDMi45MSA4LjcgMi41NSAxMC44IDIuMzMgMTIuODNDMiAxNiAyIDE5IDIgMjJIOUM5IDE5IDkgMTYgOC42NyAxMi44M0M4LjYzIDEyLjUgOC41OCAxMi4xNSA4LjU0IDExLjgxTDEyLjczIDE2SDExVjE4QzExIDIwLjIxIDEyLjc5IDIyIDE1IDIySDE4QzE4LjIzIDIyIDE4LjQ1IDIyIDE4LjY3IDIxLjk0TDE5LjczIDIzTDIxIDIxLjcyTTQuODIgM0w3LjUzIDUuNzFDNy41IDUuNDcgNy40NSA1LjI0IDcuNCA1SDhWM0g3TTIwLjU1IDExLjIzTDE3LjggMTZMMjEuNTkgMTkuNzZDMjEuODYgMTkuMjEgMjIgMTguNjEgMjIgMThWMTZIMTkuODdMMjIuMTEgMTIuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vdFByaW50ID0gXCJNMTYgMkEyIDIgMCAxIDEgMTQgNEEyIDIgMCAwIDEgMTYgMk0xMi4wNCAzQTEuNSAxLjUgMCAxIDEgMTAuNTQgNC41QTEuNSAxLjUgMCAwIDEgMTIuMDQgM005LjA5IDQuNUExIDEgMCAxIDEgOC4wOSA1LjVBMSAxIDAgMCAxIDkuMDkgNC41TTcuMDQgNkExIDEgMCAxIDEgNi4wNCA3QTEgMSAwIDAgMSA3LjA0IDZNMTQuNTMgMTJBMi41IDIuNSAwIDAgMCAxNyA5LjI0QTIuNiAyLjYgMCAwIDAgMTQuMzkgN0gxMS45MUE2IDYgMCAwIDAgNi4xMiAxMS40QTIgMiAwIDAgMCA2LjIzIDEyLjhBNi44IDYuOCAwIDAgMSA2LjkxIDE1Ljc2QTYuODkgNi44OSAwIDAgMSA2LjIyIDE4LjU1QTEuOTIgMS45MiAwIDAgMCA2LjMgMjAuMzFBMy42MiAzLjYyIDAgMCAwIDEwLjE5IDIxLjkxQTMuNSAzLjUgMCAwIDAgMTIuMzYgMTYuNjNBMi44MiAyLjgyIDAgMCAxIDExLjkxIDE1UzExLjY4IDEyIDE0LjUzIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb3RiYWxsID0gXCJNNy41LDcuNUM5LjE3LDUuODcgMTEuMjksNC42OSAxMy4zNyw0LjE4QzE1LjQ2LDMuNjcgMTcuNSwzLjgzIDE4LjYsNEMxOS43MSw0LjE1IDE5Ljg3LDQuMzEgMjAuMDMsNS40MUMyMC4xOCw2LjUgMjAuMzMsOC41NSAxOS44MiwxMC42M0MxOS4zMSwxMi43MSAxOC4xMywxNC44MyAxNi41LDE2LjVDMTQuODMsMTguMTMgMTIuNzEsMTkuMzEgMTAuNjMsMTkuODJDOC41NSwyMC4zMyA2LjUsMjAuMTggNS40MSwyMC4wM0M0LjMxLDE5Ljg3IDQuMTUsMTkuNzEgNCwxOC42QzMuODMsMTcuNSAzLjY3LDE1LjQ2IDQuMTgsMTMuMzdDNC42OSwxMS4yOSA1Ljg3LDkuMTcgNy41LDcuNU03LjMsMTUuNzlMOC4yMSwxNi43TDkuNDIsMTUuNUwxMC42MywxNi43TDExLjU0LDE1Ljc5TDEwLjM0LDE0LjU4TDEyLDEyLjkxTDEzLjIxLDE0LjEyTDE0LjEyLDEzLjIxTDEyLjkxLDEyTDE0LjU4LDEwLjM0TDE1Ljc5LDExLjU0TDE2LjcsMTAuNjNMMTUuNSw5LjQyTDE2LjcsOC4yMUwxNS43OSw3LjNMMTQuNTgsOC41TDEzLjM3LDcuM0wxMi40Niw4LjIxTDEzLjY2LDkuNDJMMTIsMTEuMDlMMTAuNzksOS44OEw5Ljg4LDEwLjc5TDExLjA5LDEyTDkuNDIsMTMuNjZMOC4yMSwxMi40Nkw3LjMsMTMuMzdMOC41LDE0LjU4TDcuMywxNS43OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb290YmFsbEF1c3RyYWxpYW4gPSBcIk03LjUsNy41QzkuMTcsNS44NyAxMS4yOSw0LjY5IDEzLjM3LDQuMThDMTgsMyAyMSw2IDE5LjgyLDEwLjYzQzE5LjMxLDEyLjcxIDE4LjEzLDE0LjgzIDE2LjUsMTYuNUMxNC44MywxOC4xMyAxMi43MSwxOS4zMSAxMC42MywxOS44MkM2LDIxIDMsMTggNC4xOCwxMy4zN0M0LjY5LDExLjI5IDUuODcsOS4xNyA3LjUsNy41TTEwLjYyLDExLjI2TDEwLjI2LDExLjYyTDEyLjM4LDEzLjc0TDEyLjc0LDEzLjM4TDEwLjYyLDExLjI2TTExLjYyLDEwLjI2TDExLjI2LDEwLjYyTDEzLjM4LDEyLjc0TDEzLjc0LDEyLjM4TDExLjYyLDEwLjI2TTkuNjIsMTIuMjZMOS4yNiwxMi42MkwxMS4zOCwxNC43NEwxMS43NCwxNC4zOEw5LjYyLDEyLjI2TTEyLjYzLDkuMjhMMTIuMjgsOS42M0wxNC40LDExLjc1TDE0Ljc1LDExLjRMMTIuNjMsOS4yOE04LjYzLDEzLjI4TDguMjgsMTMuNjNMMTAuNCwxNS43NUwxMC43NSwxNS40TDguNjMsMTMuMjhNMTMuNjMsOC4yOEwxMy4yOCw4LjYzTDE1LjQsMTAuNzVMMTUuNzUsMTAuNEwxMy42Myw4LjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb3RiYWxsSGVsbWV0ID0gXCJNMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDE1QTEuNSwxLjUgMCAwLDAgMTUsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJNMTMuNSwzQzE4LjE5LDMgMjIsNi41OCAyMiwxMUMyMiwxMi42MiAyMiwxNCAyMS4wOSwxNkMxNywxNiAxNiwyMCAxMi41LDIwQzEwLjMyLDIwIDkuMjcsMTguMjggOS4wNSwxNkg5TDguMjQsMTZMNi45NiwyMC4zQzYuODEsMjAuNzkgNi4zMywyMS4wOCA1Ljg0LDIxSDNBMSwxIDAgMCwxIDIsMjBBMSwxIDAgMCwxIDMsMTlWMTZBMSwxIDAgMCwxIDIsMTVBMSwxIDAgMCwxIDMsMTRINi43NUw3LjIzLDEyLjM5QzYuNzIsMTIuMTQgNi4xMywxMiA1LjUsMTJINS4wN0w1LDExQzUsNi41OCA4LjgxLDMgMTMuNSwzTTUsMTZWMTlINS4yNkw2LjE1LDE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ya2xpZnQgPSBcIk02LDRWMTFINEMyLjg5LDExIDIsMTEuODkgMiwxM1YxN0EzLDMgMCAwLDAgNSwyMEEzLDMgMCAwLDAgOCwxN0gxMEEzLDMgMCAwLDAgMTMsMjBBMywzIDAgMCwwIDE2LDE3VjEzTDEyLDRINk0xNyw1VjE5SDIyVjE3LjVIMTguNVY1SDE3TTcuNSw1LjVIMTEuMkwxNC41LDEzSDcuNVY1LjVNNSwxNS41QTEuNSwxLjUgMCAwLDEgNi41LDE3QTEuNSwxLjUgMCAwLDEgNSwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDE3QTEuNSwxLjUgMCAwLDEgNSwxNS41TTEzLDE1LjVBMS41LDEuNSAwIDAsMSAxNC41LDE3QTEuNSwxLjUgMCAwLDEgMTMsMTguNUExLjUsMS41IDAgMCwxIDExLjUsMTdBMS41LDEuNSAwIDAsMSAxMywxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1Ecm9wZG93biA9IFwiTTE3IDVIMjBMMTguNSA3TDE3IDVNMyAySDIxQzIyLjExIDIgMjMgMi45IDIzIDRWOEMyMyA5LjExIDIyLjExIDEwIDIxIDEwSDE2VjIwQzE2IDIxLjExIDE1LjExIDIyIDE0IDIySDNDMS45IDIyIDEgMjEuMTEgMSAyMFY0QzEgMi45IDEuOSAyIDMgMk0zIDRWOEgxNFY0SDNNMjEgOFY0SDE2VjhIMjFNMyAyMEgxNFYxMEgzVjIwTTUgMTJIMTJWMTRINVYxMk01IDE2SDEyVjE4SDVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybVNlbGVjdCA9IFwiTTE1IDVIMThMMTYuNSA3TDE1IDVNNSAySDE5QzIwLjExIDIgMjEgMi45IDIxIDRWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjRDMyAyLjkgMy45IDIgNSAyTTUgNFY4SDE5VjRINU01IDIwSDE5VjEwSDVWMjBNNyAxMkgxN1YxNEg3VjEyTTcgMTZIMTdWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGFyZWEgPSBcIk0xMyA5SDRWMjNIMlY3SDEzTTIzIDlWN0gxN1Y1QTEgMSAwIDAgMSAxOCA0SDIwVjJIMTcuNUMxNyAyIDE2IDIuNDUgMTYgM0MxNiAyLjQ1IDE1LjA1IDIgMTQuNSAySDEyVjRIMTRBMSAxIDAgMCAxIDE1IDVWMTlBMSAxIDAgMCAxIDE0IDIwSDEyVjIySDE0LjVDMTUuMDUgMjIgMTYgMjEuNTUgMTYgMjFDMTYgMjEuNTUgMTYuOTUgMjIgMTcuNSAyMkgyMFYyMEgxOEExIDEgMCAwIDEgMTcgMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGJveCA9IFwiTTE3LDdIMjJWMTdIMTdWMTlBMSwxIDAgMCwwIDE4LDIwSDIwVjIySDE3LjVDMTYuOTUsMjIgMTYsMjEuNTUgMTYsMjFDMTYsMjEuNTUgMTUuMDUsMjIgMTQuNSwyMkgxMlYyMEgxNEExLDEgMCAwLDAgMTUsMTlWNUExLDEgMCAwLDAgMTQsNEgxMlYySDE0LjVDMTUuMDUsMiAxNiwyLjQ1IDE2LDNDMTYsMi40NSAxNi45NSwyIDE3LjUsMkgyMFY0SDE4QTEsMSAwIDAsMCAxNyw1VjdNMiw3SDEzVjlINFYxNUgxM1YxN0gyVjdNMjAsMTVWOUgxN1YxNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGJveExvY2sgPSBcIk0yIDdINlY5SDRWMTVINlYxN0gyVjdNMTAgN0gyMlYxMkMyMS40MiAxMS41NiAyMC43NCAxMS4yNSAyMCAxMS4xVjlIMTBWMTVIMTQuMjVDMTMuNTYgMTUgMTMgMTUuNTYgMTMgMTYuMjVWMTdIMTBWMTlDMTAgMTkuNTUgMTAuNDUgMjAgMTEgMjBIMTNWMjJIMTAuNUM5Ljk1IDIyIDkgMjEuNTUgOSAyMUM5IDIxLjU1IDguMDUgMjIgNy41IDIySDVWMjBIN0M3LjU1IDIwIDggMTkuNTUgOCAxOVY1QzggNC40NSA3LjU1IDQgNyA0SDVWMkg3LjVDOC4wNSAyIDkgMi40NSA5IDNDOSAyLjQ1IDkuOTUgMiAxMC41IDJIMTNWNEgxMUMxMC40NSA0IDEwIDQuNDUgMTAgNVY3TTIxLjggMTdDMjIuNCAxNyAyMyAxNy42IDIzIDE4LjNWMjEuOEMyMyAyMi40IDIyLjQgMjMgMjEuNyAyM0gxNi4yQzE1LjYgMjMgMTUgMjIuNCAxNSAyMS43VjE4LjJDMTUgMTcuNiAxNS42IDE3IDE2LjIgMTdWMTUuNUMxNi4yIDE0LjEgMTcuNiAxMyAxOSAxM0MyMC40IDEzIDIxLjggMTQuMSAyMS44IDE1LjVWMTdNMjAuNSAxN1YxNS41QzIwLjUgMTQuNyAxOS44IDE0LjIgMTkgMTQuMkMxOC4yIDE0LjIgMTcuNSAxNC43IDE3LjUgMTUuNVYxN0gyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1UZXh0Ym94UGFzc3dvcmQgPSBcIk0xNyw3SDIyVjE3SDE3VjE5QTEsMSAwIDAsMCAxOCwyMEgyMFYyMkgxNy41QzE2Ljk1LDIyIDE2LDIxLjU1IDE2LDIxQzE2LDIxLjU1IDE1LjA1LDIyIDE0LjUsMjJIMTJWMjBIMTRBMSwxIDAgMCwwIDE1LDE5VjVBMSwxIDAgMCwwIDE0LDRIMTJWMkgxNC41QzE1LjA1LDIgMTYsMi40NSAxNiwzQzE2LDIuNDUgMTYuOTUsMiAxNy41LDJIMjBWNEgxOEExLDEgMCAwLDAgMTcsNVY3TTIsN0gxM1Y5SDRWMTVIMTNWMTdIMlY3TTIwLDE1VjlIMTdWMTVIMjBNOC41LDEyQTEuNSwxLjUgMCAwLDAgNywxMC41QTEuNSwxLjUgMCAwLDAgNS41LDEyQTEuNSwxLjUgMCAwLDAgNywxMy41QTEuNSwxLjUgMCAwLDAgOC41LDEyTTEzLDEwLjg5QzEyLjM5LDEwLjMzIDExLjQ0LDEwLjM4IDEwLjg4LDExQzEwLjMyLDExLjYgMTAuMzcsMTIuNTUgMTEsMTMuMTFDMTEuNTUsMTMuNjMgMTIuNDMsMTMuNjMgMTMsMTMuMTFWMTAuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25Cb3R0b20gPSBcIk0xMyw5TDE1LjUsNi41TDE2LjkyLDcuOTJMMTIsMTIuODRMNy4wOCw3LjkyTDguNSw2LjVMMTEsOVYzSDEzVjlNMywxNUgyMVYxN0gzVjE1TTMsMTlIMTNWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRBbGlnbkNlbnRlciA9IFwiTTMsM0gyMVY1SDNWM003LDdIMTdWOUg3VjdNMywxMUgyMVYxM0gzVjExTTcsMTVIMTdWMTdIN1YxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25KdXN0aWZ5ID0gXCJNMywzSDIxVjVIM1YzTTMsN0gyMVY5SDNWN00zLDExSDIxVjEzSDNWMTFNMywxNUgyMVYxN0gzVjE1TTMsMTlIMjFWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRBbGlnbkxlZnQgPSBcIk0zLDNIMjFWNUgzVjNNMyw3SDE1VjlIM1Y3TTMsMTFIMjFWMTNIM1YxMU0zLDE1SDE1VjE3SDNWMTVNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEFsaWduTWlkZGxlID0gXCJNMTMsNkwxNSw0TDE2LjQyLDUuNDJMMTIsOS44NEw3LjU4LDUuNDJMOSw0TDExLDZWMkgxM1Y2TTMsMTFIMjFWMTNIM1YxMU0xMywxOFYyMkgxMVYxOEw5LDIwTDcuNTgsMTguNThMMTIsMTQuMTZMMTYuNDIsMTguNThMMTUsMjBMMTMsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25SaWdodCA9IFwiTTMsM0gyMVY1SDNWM005LDdIMjFWOUg5VjdNMywxMUgyMVYxM0gzVjExTTksMTVIMjFWMTdIOVYxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25Ub3AgPSBcIk0xMywxNUwxNS41LDE3LjVMMTYuOTIsMTYuMDhMMTIsMTEuMTZMNy4wOCwxNi4wOEw4LjUsMTcuNUwxMSwxNVYyMUgxM1YxNU0zLDNIMjFWNUgzVjNNMyw3SDEzVjlIM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEFubm90YXRpb25NaW51cyA9IFwiTTEwLjUsN0g4LjVMMywyMUg1LjJMNi4zLDE4SDEyLjVMMTMuNiwyMUgxNkwxMC41LDdNNy4xLDE2TDkuNSw5LjdMMTEuOSwxNkg3LjFNMjIsN0gxNFY1SDIyVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QW5ub3RhdGlvblBsdXMgPSBcIk04LjUsN0gxMC41TDE2LDIxSDEzLjZMMTIuNSwxOEg2LjNMNS4yLDIxSDNMOC41LDdNNy4xLDE2SDExLjlMOS41LDkuN0w3LjEsMTZNMjIsNVY3SDE5VjEwSDE3VjdIMTRWNUgxN1YySDE5VjVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0Qm9sZCA9IFwiTTEzLjUsMTUuNUgxMFYxMi41SDEzLjVBMS41LDEuNSAwIDAsMSAxNSwxNEExLjUsMS41IDAgMCwxIDEzLjUsMTUuNU0xMCw2LjVIMTNBMS41LDEuNSAwIDAsMSAxNC41LDhBMS41LDEuNSAwIDAsMSAxMyw5LjVIMTBNMTUuNiwxMC43OUMxNi41NywxMC4xMSAxNy4yNSw5IDE3LjI1LDhDMTcuMjUsNS43NCAxNS41LDQgMTMuMjUsNEg3VjE4SDE0LjA0QzE2LjE0LDE4IDE3Ljc1LDE2LjMgMTcuNzUsMTQuMjFDMTcuNzUsMTIuNjkgMTYuODksMTEuMzkgMTUuNiwxMC43OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRDbGVhciA9IFwiTTYsNVY1LjE4TDguODIsOEgxMS4yMkwxMC41LDkuNjhMMTIuNiwxMS43OEwxNC4yMSw4SDIwVjVINk0zLjI3LDVMMiw2LjI3TDguOTcsMTMuMjRMNi41LDE5SDkuNUwxMS4wNywxNS4zNEwxNi43MywyMUwxOCwxOS43M0wzLjU1LDUuMjdMMy4yNyw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yRmlsbCA9IFwiTTE5LDExLjVDMTksMTEuNSAxNywxMy42NyAxNywxNUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDIxLDE1QzIxLDEzLjY3IDE5LDExLjUgMTksMTEuNU01LjIxLDEwTDEwLDUuMjFMMTQuNzksMTBNMTYuNTYsOC45NEw3LjYyLDBMNi4yMSwxLjQxTDguNTksMy43OUwzLjQ0LDguOTRDMi44NSw5LjUgMi44NSwxMC40NyAzLjQ0LDExLjA2TDguOTQsMTYuNTZDOS4yMywxNi44NSA5LjYyLDE3IDEwLDE3QzEwLjM4LDE3IDEwLjc3LDE2Ljg1IDExLjA2LDE2LjU2TDE2LjU2LDExLjA2QzE3LjE1LDEwLjQ3IDE3LjE1LDkuNSAxNi41Niw4Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9ySGlnaGxpZ2h0ID0gXCJNNCwxN0w2Ljc1LDE0LjI1TDYuNzIsMTQuMjNDNi4xNCwxMy42NCA2LjE0LDEyLjY5IDYuNzIsMTIuMTFMMTEuNDYsNy4zN0wxNS43LDExLjYxTDEwLjk2LDE2LjM1QzEwLjM5LDE2LjkzIDkuNDYsMTYuOTMgOC44NywxNi4zN0w4LjI0LDE3SDRNMTUuOTEsMi45MUMxNi41LDIuMzMgMTcuNDUsMi4zMyAxOC4wMywyLjkxTDIwLjE2LDUuMDNDMjAuNzQsNS42MiAyMC43NCw2LjU3IDIwLjE2LDcuMTZMMTYuODYsMTAuNDVMMTIuNjIsNi4yMUwxNS45MSwyLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yTWFya2VyQ2FuY2VsID0gXCJNMTYuNSA4QzE0IDggMTIgMTAgMTIgMTIuNVMxNCAxNyAxNi41IDE3IDIxIDE1IDIxIDEyLjUgMTkgOCAxNi41IDhNMTYuNSAxNS41QzE0LjggMTUuNSAxMy41IDE0LjIgMTMuNSAxMi41QzEzLjUgMTEuOSAxMy43IDExLjQgMTMuOSAxMUwxOCAxNS4xQzE3LjYgMTUuMyAxNy4xIDE1LjUgMTYuNSAxNS41TTE5LjEgMTRMMTUgOS45QzE1LjQgOS42IDE1LjkgOS41IDE2LjUgOS41QzE4LjIgOS41IDE5LjUgMTAuOCAxOS41IDEyLjVDMTkuNSAxMy4xIDE5LjMgMTMuNiAxOS4xIDE0TTEyLjEgNy43TDEwLjYgNi4yTDEzLjkgMi45QzE0LjUgMi4zIDE1LjQgMi4zIDE2IDIuOUwxOC4yIDVDMTguNiA1LjQgMTguNyA1LjggMTguNiA2LjNDMTggNi4xIDE3LjMgNiAxNi42IDZDMTQuOCA2IDEzLjMgNi43IDEyLjEgNy43TTEwLjUgMTQuOUw5IDE2LjNDOC40IDE2LjkgNy41IDE2LjkgNi45IDE2LjNMNi4yIDE3SDJMNC44IDE0LjJDNC4yIDEzLjYgNC4yIDEyLjcgNC44IDEyLjFMOS41IDcuNEwxMS4xIDlDMTAuNCAxMCAxMCAxMS4yIDEwIDEyLjVDMTAgMTMuMyAxMC4yIDE0LjEgMTAuNSAxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yVGV4dCA9IFwiTTkuNjIsMTJMMTIsNS42N0wxNC4zNywxMk0xMSwzTDUuNSwxN0g3Ljc1TDguODcsMTRIMTUuMTJMMTYuMjUsMTdIMTguNUwxMywzSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbHVtbnMgPSBcIk0zLDNIMTFWNUgzVjNNMTMsM0gyMVY1SDEzVjNNMyw3SDExVjlIM1Y3TTEzLDdIMjFWOUgxM1Y3TTMsMTFIMTFWMTNIM1YxMU0xMywxMUgyMVYxM0gxM1YxMU0zLDE1SDExVjE3SDNWMTVNMTMsMTVIMjFWMTdIMTNWMTVNMywxOUgxMVYyMUgzVjE5TTEzLDE5SDIxVjIxSDEzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZsb2F0Q2VudGVyID0gXCJNOSw3SDE1VjEzSDlWN00zLDNIMjFWNUgzVjNNMywxNUgyMVYxN0gzVjE1TTMsMTlIMTdWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRGbG9hdExlZnQgPSBcIk0zLDdIOVYxM0gzVjdNMywzSDIxVjVIM1YzTTIxLDdWOUgxMVY3SDIxTTIxLDExVjEzSDExVjExSDIxTTMsMTVIMTdWMTdIM1YxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0RmxvYXROb25lID0gXCJNMyw3SDlWMTNIM1Y3TTMsM0gyMVY1SDNWM00yMSwxMVYxM0gxMVYxMUgyMU0zLDE1SDE3VjE3SDNWMTVNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZsb2F0UmlnaHQgPSBcIk0xNSw3SDIxVjEzSDE1VjdNMywzSDIxVjVIM1YzTTEzLDdWOUgzVjdIMTNNOSwxMVYxM0gzVjExSDlNMywxNUgxN1YxN0gzVjE1TTMsMTlIMjFWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRGb250ID0gXCJNMTcsOEgyMFYyMEgyMVYyMUgxN1YyMEgxOFYxN0gxNEwxMi41LDIwSDE0VjIxSDEwVjIwSDExTDE3LDhNMTgsOUwxNC41LDE2SDE4VjlNNSwzSDEwQzExLjExLDMgMTIsMy44OSAxMiw1VjE2SDlWMTFINlYxNkgzVjVDMywzLjg5IDMuODksMyA1LDNNNiw1VjlIOVY1SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0Rm9udFNpemVEZWNyZWFzZSA9IFwiTTUuMTIsMTRMNy41LDcuNjdMOS44NywxNE02LjUsNUwxLDE5SDMuMjVMNC4zNywxNkgxMC42MkwxMS43NSwxOUgxNEw4LjUsNUg2LjVNMTgsMTdMMjMsMTEuOTNMMjEuNTksMTAuNUwxOSwxMy4xVjdIMTdWMTMuMUwxNC40MSwxMC41TDEzLDExLjkzTDE4LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZvbnRTaXplSW5jcmVhc2UgPSBcIk01LjEyLDE0TDcuNSw3LjY3TDkuODcsMTRNNi41LDVMMSwxOUgzLjI1TDQuMzcsMTZIMTAuNjJMMTEuNzUsMTlIMTRMOC41LDVINi41TTE4LDdMMTMsMTIuMDdMMTQuNDEsMTMuNUwxNywxMC45VjE3SDE5VjEwLjlMMjEuNTksMTMuNUwyMywxMi4wN0wxOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlcjEgPSBcIk0zLDRINVYxMEg5VjRIMTFWMThIOVYxMkg1VjE4SDNWNE0xNCwxOFYxNkgxNlY2LjMxTDEzLjUsNy43NVY1LjQ0TDE2LDRIMThWMTZIMjBWMThIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyMiA9IFwiTTMsNEg1VjEwSDlWNEgxMVYxOEg5VjEySDVWMThIM1Y0TTIxLDE4SDE1QTIsMiAwIDAsMSAxMywxNkMxMywxNS40NyAxMy4yLDE1IDEzLjU0LDE0LjY0TDE4LjQxLDkuNDFDMTguNzgsOS4wNSAxOSw4LjU1IDE5LDhBMiwyIDAgMCwwIDE3LDZBMiwyIDAgMCwwIDE1LDhIMTNBNCw0IDAgMCwxIDE3LDRBNCw0IDAgMCwxIDIxLDhDMjEsOS4xIDIwLjU1LDEwLjEgMTkuODMsMTAuODNMMTUsMTZIMjFWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyMyA9IFwiTTMsNEg1VjEwSDlWNEgxMVYxOEg5VjEySDVWMThIM1Y0TTE1LDRIMTlBMiwyIDAgMCwxIDIxLDZWMTZBMiwyIDAgMCwxIDE5LDE4SDE1QTIsMiAwIDAsMSAxMywxNlYxNUgxNVYxNkgxOVYxMkgxNVYxMEgxOVY2SDE1VjdIMTNWNkEyLDIgMCAwLDEgMTUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXI0ID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTgsMThWMTNIMTNWMTFMMTgsNEgyMFYxMUgyMVYxM0gyMFYxOEgxOE0xOCwxMVY3LjQyTDE1LjQ1LDExSDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlcjUgPSBcIk0zLDRINVYxMEg5VjRIMTFWMThIOVYxMkg1VjE4SDNWNE0xNSw0SDIwVjZIMTVWMTBIMTdBNCw0IDAgMCwxIDIxLDE0QTQsNCAwIDAsMSAxNywxOEgxNUEyLDIgMCAwLDEgMTMsMTZWMTVIMTVWMTZIMTdBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAxNywxMkgxNUEyLDIgMCAwLDEgMTMsMTBWNkEyLDIgMCAwLDEgMTUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXI2ID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTUsNEgxOUEyLDIgMCAwLDEgMjEsNlY3SDE5VjZIMTVWMTBIMTlBMiwyIDAgMCwxIDIxLDEyVjE2QTIsMiAwIDAsMSAxOSwxOEgxNUEyLDIgMCAwLDEgMTMsMTZWNkEyLDIgMCAwLDEgMTUsNE0xNSwxMlYxNkgxOVYxMkgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXJEZWNyZWFzZSA9IFwiTTQsNEg2VjEwSDEwVjRIMTJWMThIMTBWMTJINlYxOEg0VjRNMjAuNDIsNy40MUwxNi44MywxMUwyMC40MiwxNC41OUwxOSwxNkwxNCwxMUwxOSw2TDIwLjQyLDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyRXF1YWwgPSBcIk00LDRINlYxMEgxMFY0SDEyVjE4SDEwVjEySDZWMThINFY0TTE0LDEwVjhIMjFWMTBIMTRNMTQsMTJIMjFWMTRIMTRWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVySW5jcmVhc2UgPSBcIk00LDRINlYxMEgxMFY0SDEyVjE4SDEwVjEySDZWMThINFY0TTE0LjU5LDcuNDFMMTguMTcsMTFMMTQuNTksMTQuNTlMMTYsMTZMMjEsMTFMMTYsNkwxNC41OSw3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlclBvdW5kID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTMsOEgxNS4zMUwxNS42Myw1SDE3LjYzTDE3LjMxLDhIMTkuMzFMMTkuNjMsNUgyMS42M0wyMS4zMSw4SDIzVjEwSDIxLjFMMjAuOSwxMkgyM1YxNEgyMC42OUwyMC4zNywxN0gxOC4zN0wxOC42OSwxNEgxNi42OUwxNi4zNywxN0gxNC4zN0wxNC42OSwxNEgxM1YxMkgxNC45TDE1LjEsMTBIMTNWOE0xNy4xLDEwTDE2LjksMTJIMTguOUwxOS4xLDEwSDE3LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SG9yaXpvbnRhbEFsaWduQ2VudGVyID0gXCJNMTksMTZWMTNIMjNWMTFIMTlWOEwxNSwxMkwxOSwxNk01LDhWMTFIMVYxM0g1VjE2TDksMTJMNSw4TTExLDIwSDEzVjRIMTFWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SG9yaXpvbnRhbEFsaWduTGVmdCA9IFwiTTExLDE2VjEzSDIxVjExSDExVjhMNywxMkwxMSwxNk0zLDIwSDVWNEgzVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhvcml6b250YWxBbGlnblJpZ2h0ID0gXCJNMTMsOFYxMUgzVjEzSDEzVjE2TDE3LDEyTDEzLDhNMTksMjBIMjFWNEgxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJbmRlbnREZWNyZWFzZSA9IFwiTTExLDEzSDIxVjExSDExTTExLDlIMjFWN0gxMU0zLDNWNUgyMVYzTTMsMjFIMjFWMTlIM00zLDEyTDcsMTZWOE0xMSwxN0gyMVYxNUgxMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJbmRlbnRJbmNyZWFzZSA9IFwiTTExLDEzSDIxVjExSDExTTExLDlIMjFWN0gxMU0zLDNWNUgyMVYzTTExLDE3SDIxVjE1SDExTTMsOFYxNkw3LDEyTTMsMjFIMjFWMTlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJdGFsaWMgPSBcIk0xMCw0VjdIMTIuMjFMOC43OSwxNUg2VjE4SDE0VjE1SDExLjc5TDE1LjIxLDdIMThWNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMZXR0ZXJDYXNlID0gXCJNMjAuMDYsMThDMjAsMTcuODMgMTkuOTEsMTcuNTQgMTkuODYsMTcuMTFDMTkuMTksMTcuODEgMTguMzgsMTguMTYgMTcuNDUsMTguMTZDMTYuNjIsMTguMTYgMTUuOTMsMTcuOTIgMTUuNCwxNy40NUMxNC44NywxNyAxNC42LDE2LjM5IDE0LjYsMTUuNjZDMTQuNiwxNC43OCAxNC45MywxNC4xIDE1LjYsMTMuNjFDMTYuMjcsMTMuMTIgMTcuMjEsMTIuODggMTguNDMsMTIuODhIMTkuODNWMTIuMjRDMTkuODMsMTEuNzUgMTkuNjgsMTEuMzYgMTkuMzgsMTEuMDdDMTkuMDgsMTAuNzggMTguNjMsMTAuNjQgMTguMDUsMTAuNjRDMTcuNTMsMTAuNjQgMTcuMSwxMC43NiAxNi43NSwxMUMxNi40LDExLjI1IDE2LjIzLDExLjU0IDE2LjIzLDExLjg5SDE0Ljc3QzE0Ljc3LDExLjQ2IDE0LjkyLDExLjA1IDE1LjIyLDEwLjY1QzE1LjUsMTAuMjUgMTUuOTMsOS45NCAxNi40NCw5LjcxQzE2Ljk1LDkuNSAxNy41LDkuMzYgMTguMTMsOS4zNkMxOS4xMSw5LjM2IDE5Ljg3LDkuNiAyMC40MiwxMC4wOUMyMC45NywxMC41OCAyMS4yNiwxMS4yNSAyMS4yOCwxMi4xMVYxNkMyMS4yOCwxNi44IDIxLjM4LDE3LjQyIDIxLjU4LDE3Ljg4VjE4SDIwLjA2TTE3LjY2LDE2Ljg4QzE4LjExLDE2Ljg4IDE4LjU0LDE2Ljc3IDE4Ljk1LDE2LjU2QzE5LjM1LDE2LjM1IDE5LjY1LDE2LjA3IDE5LjgzLDE1LjczVjE0LjE2SDE4LjdDMTYuOTMsMTQuMTYgMTYuMDQsMTQuNjMgMTYuMDQsMTUuNTdDMTYuMDQsMTYgMTYuMTksMTYuMyAxNi41LDE2LjUzQzE2LjgsMTYuNzYgMTcuMTgsMTYuODggMTcuNjYsMTYuODhNNS40NiwxMy43MUg5LjUzTDcuNSw4LjI5TDUuNDYsMTMuNzFNNi42NCw2SDguMzZMMTMuMDcsMThIMTEuMTRMMTAuMTcsMTUuNDNINC44MkwzLjg2LDE4SDEuOTNMNi42NCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlckNhc2VMb3dlciA9IFwiTTIwLjA2LDE4QzIwLDE3LjgzIDE5LjkxLDE3LjU0IDE5Ljg2LDE3LjExQzE5LjE5LDE3LjgxIDE4LjM4LDE4LjE2IDE3LjQ1LDE4LjE2QzE2LjYyLDE4LjE2IDE1LjkzLDE3LjkyIDE1LjQsMTcuNDVDMTQuODcsMTcgMTQuNiwxNi4zOSAxNC42LDE1LjY2QzE0LjYsMTQuNzggMTQuOTMsMTQuMSAxNS42LDEzLjYxQzE2LjI3LDEzLjEyIDE3LjIxLDEyLjg4IDE4LjQzLDEyLjg4SDE5LjgzVjEyLjI0QzE5LjgzLDExLjc1IDE5LjY4LDExLjM2IDE5LjM4LDExLjA3QzE5LjA4LDEwLjc4IDE4LjYzLDEwLjY0IDE4LjA1LDEwLjY0QzE3LjUzLDEwLjY0IDE3LjEsMTAuNzYgMTYuNzUsMTFDMTYuNCwxMS4yNSAxNi4yMywxMS41NCAxNi4yMywxMS44OUgxNC43N0MxNC43NywxMS40NiAxNC45MiwxMS4wNSAxNS4yMiwxMC42NUMxNS41LDEwLjI1IDE1LjkzLDkuOTQgMTYuNDQsOS43MUMxNi45NSw5LjUgMTcuNSw5LjM2IDE4LjEzLDkuMzZDMTkuMTEsOS4zNiAxOS44Nyw5LjYgMjAuNDIsMTAuMDlDMjAuOTcsMTAuNTggMjEuMjYsMTEuMjUgMjEuMjgsMTIuMTFWMTZDMjEuMjgsMTYuOCAyMS4zOCwxNy40MiAyMS41OCwxNy44OFYxOEgyMC4wNk0xNy42NiwxNi44OEMxOC4xMSwxNi44OCAxOC41NCwxNi43NyAxOC45NSwxNi41NkMxOS4zNSwxNi4zNSAxOS42NSwxNi4wNyAxOS44MywxNS43M1YxNC4xNkgxOC43QzE2LjkzLDE0LjE2IDE2LjA0LDE0LjYzIDE2LjA0LDE1LjU3QzE2LjA0LDE2IDE2LjE5LDE2LjMgMTYuNSwxNi41M0MxNi44LDE2Ljc2IDE3LjE4LDE2Ljg4IDE3LjY2LDE2Ljg4TTUuNDYsMTMuNzFIOS41M0w3LjUsOC4yOUw1LjQ2LDEzLjcxTTYuNjQsNkg4LjM2TDEzLjA3LDE4SDExLjE0TDEwLjE3LDE1LjQzSDQuODJMMy44NiwxOEgxLjkzTDYuNjQsNk0yMiwyMFYyMkgxNC41VjIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlckNhc2VVcHBlciA9IFwiTTIwLjA2LDE4QzIwLDE3LjgzIDE5LjkxLDE3LjU0IDE5Ljg2LDE3LjExQzE5LjE5LDE3LjgxIDE4LjM4LDE4LjE2IDE3LjQ1LDE4LjE2QzE2LjYyLDE4LjE2IDE1LjkzLDE3LjkyIDE1LjQsMTcuNDVDMTQuODcsMTcgMTQuNiwxNi4zOSAxNC42LDE1LjY2QzE0LjYsMTQuNzggMTQuOTMsMTQuMSAxNS42LDEzLjYxQzE2LjI3LDEzLjEyIDE3LjIxLDEyLjg4IDE4LjQzLDEyLjg4SDE5LjgzVjEyLjI0QzE5LjgzLDExLjc1IDE5LjY4LDExLjM2IDE5LjM4LDExLjA3QzE5LjA4LDEwLjc4IDE4LjYzLDEwLjY0IDE4LjA1LDEwLjY0QzE3LjUzLDEwLjY0IDE3LjEsMTAuNzYgMTYuNzUsMTFDMTYuNCwxMS4yNSAxNi4yMywxMS41NCAxNi4yMywxMS44OUgxNC43N0MxNC43NywxMS40NiAxNC45MiwxMS4wNSAxNS4yMiwxMC42NUMxNS41LDEwLjI1IDE1LjkzLDkuOTQgMTYuNDQsOS43MUMxNi45NSw5LjUgMTcuNSw5LjM2IDE4LjEzLDkuMzZDMTkuMTEsOS4zNiAxOS44Nyw5LjYgMjAuNDIsMTAuMDlDMjAuOTcsMTAuNTggMjEuMjYsMTEuMjUgMjEuMjgsMTIuMTFWMTZDMjEuMjgsMTYuOCAyMS4zOCwxNy40MiAyMS41OCwxNy44OFYxOEgyMC4wNk0xNy42NiwxNi44OEMxOC4xMSwxNi44OCAxOC41NCwxNi43NyAxOC45NSwxNi41NkMxOS4zNSwxNi4zNSAxOS42NSwxNi4wNyAxOS44MywxNS43M1YxNC4xNkgxOC43QzE2LjkzLDE0LjE2IDE2LjA0LDE0LjYzIDE2LjA0LDE1LjU3QzE2LjA0LDE2IDE2LjE5LDE2LjMgMTYuNSwxNi41M0MxNi44LDE2Ljc2IDE3LjE4LDE2Ljg4IDE3LjY2LDE2Ljg4TTUuNDYsMTMuNzFIOS41M0w3LjUsOC4yOUw1LjQ2LDEzLjcxTTYuNjQsNkg4LjM2TDEzLjA3LDE4SDExLjE0TDEwLjE3LDE1LjQzSDQuODJMMy44NiwxOEgxLjkzTDYuNjQsNk0yLDIwSDEzVjIySDJWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGV0dGVyRW5kc1dpdGggPSBcIk0xMS4xNCA0TDYuNDMgMTZIOC4zNkw5LjMyIDEzLjQzSDE0LjY3TDE1LjY0IDE2SDE3LjU3TDEyLjg2IDRNMTIgNi4yOUwxNC4wMyAxMS43MUg5Ljk2TTIwIDE0VjE4SDJWMjBIMjJWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGV0dGVyTWF0Y2hlcyA9IFwiTTExLjE0IDRMNi40MyAxNkg4LjM2TDkuMzIgMTMuNDNIMTQuNjdMMTUuNjQgMTZIMTcuNTdMMTIuODYgNE0xMiA2LjI5TDE0LjAzIDExLjcxSDkuOTZNMjAgMTRWMThINFYxNUgyVjIwSDIyVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlclN0YXJ0c1dpdGggPSBcIk0xMS4xNCA0TDYuNDMgMTZIOC4zNkw5LjMyIDEzLjQzSDE0LjY3TDE1LjY0IDE2SDE3LjU3TDEyLjg2IDRNMTIgNi4yOUwxNC4wMyAxMS43MUg5Ljk2TTQgMThWMTVIMlYyMEgyMlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMaW5lU3BhY2luZyA9IFwiTTEwLDEzSDIyVjExSDEwTTEwLDE5SDIyVjE3SDEwTTEwLDdIMjJWNUgxME02LDdIOC41TDUsMy41TDEuNSw3SDRWMTdIMS41TDUsMjAuNUw4LjUsMTdINlY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpbmVTdHlsZSA9IFwiTTMsMTZIOFYxNEgzVjE2TTkuNSwxNkgxNC41VjE0SDkuNVYxNk0xNiwxNkgyMVYxNEgxNlYxNk0zLDIwSDVWMThIM1YyME03LDIwSDlWMThIN1YyME0xMSwyMEgxM1YxOEgxMVYyME0xNSwyMEgxN1YxOEgxNVYyME0xOSwyMEgyMVYxOEgxOVYyME0zLDEySDExVjEwSDNWMTJNMTMsMTJIMjFWMTBIMTNWMTJNMyw0VjhIMjFWNEgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpbmVXZWlnaHQgPSBcIk0zLDE3SDIxVjE1SDNWMTdNMywyMEgyMVYxOUgzVjIwTTMsMTNIMjFWMTBIM1YxM00zLDRWOEgyMVY0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkID0gXCJNNyw1SDIxVjdIN1Y1TTcsMTNWMTFIMjFWMTNIN000LDQuNUExLjUsMS41IDAgMCwxIDUuNSw2QTEuNSwxLjUgMCAwLDEgNCw3LjVBMS41LDEuNSAwIDAsMSAyLjUsNkExLjUsMS41IDAgMCwxIDQsNC41TTQsMTAuNUExLjUsMS41IDAgMCwxIDUuNSwxMkExLjUsMS41IDAgMCwxIDQsMTMuNUExLjUsMS41IDAgMCwxIDIuNSwxMkExLjUsMS41IDAgMCwxIDQsMTAuNU03LDE5VjE3SDIxVjE5SDdNNCwxNi41QTEuNSwxLjUgMCAwLDEgNS41LDE4QTEuNSwxLjUgMCAwLDEgNCwxOS41QTEuNSwxLjUgMCAwLDEgMi41LDE4QTEuNSwxLjUgMCAwLDEgNCwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpc3RCdWxsZXRlZFNxdWFyZSA9IFwiTTMsNEg3VjhIM1Y0TTksNVY3SDIxVjVIOU0zLDEwSDdWMTRIM1YxME05LDExVjEzSDIxVjExSDlNMywxNkg3VjIwSDNWMTZNOSwxN1YxOUgyMVYxN0g5XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkVHJpYW5nbGUgPSBcIk01LDE1LjVMNy41LDIwSDIuNUw1LDE1LjVNOSwxOUgyMVYxN0g5VjE5TTUsOS41TDcuNSwxNEgyLjVMNSw5LjVNOSwxM0gyMVYxMUg5VjEzTTUsMy41TDcuNSw4SDIuNUw1LDMuNU05LDdIMjFWNUg5VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkVHlwZSA9IFwiTTUsOS41TDcuNSwxNEgyLjVMNSw5LjVNMyw0SDdWOEgzVjRNNSwyMEEyLDIgMCAwLDAgNywxOEEyLDIgMCAwLDAgNSwxNkEyLDIgMCAwLDAgMywxOEEyLDIgMCAwLDAgNSwyME05LDVWN0gyMVY1SDlNOSwxOUgyMVYxN0g5VjE5TTksMTNIMjFWMTFIOVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMaXN0Q2hlY2tib3ggPSBcIk0yMSwxOVYxN0g4VjE5SDIxTTIxLDEzVjExSDhWMTNIMjFNOCw3SDIxVjVIOFY3TTQsNVY3SDZWNUg0TTMsNUExLDEgMCAwLDEgNCw0SDZBMSwxIDAgMCwxIDcsNVY3QTEsMSAwIDAsMSA2LDhINEExLDEgMCAwLDEgMyw3VjVNNCwxMVYxM0g2VjExSDRNMywxMUExLDEgMCAwLDEgNCwxMEg2QTEsMSAwIDAsMSA3LDExVjEzQTEsMSAwIDAsMSA2LDE0SDRBMSwxIDAgMCwxIDMsMTNWMTFNNCwxN1YxOUg2VjE3SDRNMywxN0ExLDEgMCAwLDEgNCwxNkg2QTEsMSAwIDAsMSA3LDE3VjE5QTEsMSAwIDAsMSA2LDIwSDRBMSwxIDAgMCwxIDMsMTlWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdENoZWNrcyA9IFwiTTMsNUg5VjExSDNWNU01LDdWOUg3VjdINU0xMSw3SDIxVjlIMTFWN00xMSwxNUgyMVYxN0gxMVYxNU01LDIwTDEuNSwxNi41TDIuOTEsMTUuMDlMNSwxNy4xN0w5LjU5LDEyLjU5TDExLDE0TDUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdE51bWJlcmVkID0gXCJNNywxM1YxMUgyMVYxM0g3TTcsMTlWMTdIMjFWMTlIN003LDdWNUgyMVY3SDdNMyw4VjVIMlY0SDRWOEgzTTIsMTdWMTZINVYyMEgyVjE5SDRWMTguNUgzVjE3LjVINFYxN0gyTTQuMjUsMTBBMC43NSwwLjc1IDAgMCwxIDUsMTAuNzVDNSwxMC45NSA0LjkyLDExLjE0IDQuNzksMTEuMjdMMy4xMiwxM0g1VjE0SDJWMTMuMDhMNCwxMUgyVjEwSDQuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdE51bWJlcmVkUnRsID0gXCJNMywxM1YxMUgxN1YxM0gzTTMsMTlWMTdIMTdWMTlIM00zLDdWNUgxN1Y3SDNNMjAsOFY1SDE5VjRIMjFWOEgyME0xOSwxN1YxNkgyMlYyMEgxOVYxOUgyMVYxOC41SDIwVjE3LjVIMjFWMTdIMTlNMjEuMjUsMTBDMjEuNjcsMTAgMjIsMTAuMzQgMjIsMTAuNzVDMjIsMTAuOTUgMjEuOTIsMTEuMTQgMjEuNzksMTEuMjdMMjAuMTIsMTNIMjJWMTRIMTlWMTMuMDhMMjEsMTFIMTlWMTBIMjEuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdFRleHQgPSBcIk0yIDE0SDhWMjBIMk0xNiA4SDEwVjEwSDE2TTIgMTBIOFY0SDJNMTAgNFY2SDIyVjRNMTAgMjBIMTZWMThIMTBNMTAgMTZIMjJWMTRIMTBcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRPdmVybGluZSA9IFwiTTUsNUgxOVYzSDVWNU05LjYyLDE2TDEyLDkuNjdMMTQuMzcsMTZNMTEsN0w1LjUsMjFINy43NUw4Ljg3LDE4SDE1LjEyTDE2LjI1LDIxSDE4LjVMMTMsN0gxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRQYWdlQnJlYWsgPSBcIk0xOCwyMEg2VjE4SDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjE4SDE4VjIwTTE0LDJINkEyLDIgMCAwLDAgNCw0VjEySDZWNEgxNFY4SDE4VjEySDIwVjhMMTQsMk0xMSwxNkg4VjE0SDExVjE2TTE2LDE2SDEzVjE0SDE2VjE2TTMsMTRINlYxNkgzVjE0TTIxLDE2SDE4VjE0SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFBhaW50ID0gXCJNMTgsNFYzQTEsMSAwIDAsMCAxNywySDVBMSwxIDAgMCwwIDQsM1Y3QTEsMSAwIDAsMCA1LDhIMTdBMSwxIDAgMCwwIDE4LDdWNkgxOVYxMEg5VjIxQTEsMSAwIDAsMCAxMCwyMkgxMkExLDEgMCAwLDAgMTMsMjFWMTJIMjFWNEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRQYXJhZ3JhcGggPSBcIk0xMyw0QTQsNCAwIDAsMSAxNyw4QTQsNCAwIDAsMSAxMywxMkgxMVYxOEg5VjRIMTNNMTMsMTBBMiwyIDAgMCwwIDE1LDhBMiwyIDAgMCwwIDEzLDZIMTFWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0UGlsY3JvdyA9IFwiTTEwLDExQTQsNCAwIDAsMSA2LDdBNCw0IDAgMCwxIDEwLDNIMThWNUgxNlYyMUgxNFY1SDEyVjIxSDEwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlQ2xvc2UgPSBcIk0xNCwxN0gxN0wxOSwxM1Y3SDEzVjEzSDE2TTYsMTdIOUwxMSwxM1Y3SDVWMTNIOEw2LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlQ2xvc2VPdXRsaW5lID0gXCJNMTMgNlYxNEgxNC44OEwxMi44OCAxOEgxOC42MkwyMSAxMy4yNFY2TTE1IDhIMTlWMTIuNzZMMTcuMzggMTZIMTYuMTJMMTguMTIgMTJIMTVNMyA2VjE0SDQuODhMMi44OCAxOEg4LjYyTDExIDEzLjI0VjZNNSA4SDlWMTIuNzZMNy4zOCAxNkg2LjEyTDguMTIgMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRRdW90ZU9wZW4gPSBcIk0xMCw3TDgsMTFIMTFWMTdINVYxMUw3LDdIMTBNMTgsN0wxNiwxMUgxOVYxN0gxM1YxMUwxNSw3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlT3Blbk91dGxpbmUgPSBcIk0xMSAxOFYxMEg5LjEyTDExLjEyIDZINS4zOEwzIDEwLjc2VjE4TTkgMTZINVYxMS4yNEw2LjYyIDhINy44OEw1Ljg4IDEySDlNMjEgMThWMTBIMTkuMTJMMjEuMTIgNkgxNS4zOEwxMyAxMC43NlYxOE0xOSAxNkgxNVYxMS4yNEwxNi42MiA4SDE3Ljg4TDE1Ljg4IDEySDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFJvdGF0ZTkwID0gXCJNNy4zNCw2LjQxTDAuODYsMTIuOUw3LjM1LDE5LjM4TDEzLjg0LDEyLjlMNy4zNCw2LjQxTTMuNjksMTIuOUw3LjM1LDkuMjRMMTEsMTIuOUw3LjM0LDE2LjU2TDMuNjksMTIuOU0xOS4zNiw2LjY0QzE3LjYxLDQuODggMTUuMyw0IDEzLDRWMC43Nkw4Ljc2LDVMMTMsOS4yNFY2QzE0Ljc5LDYgMTYuNTgsNi42OCAxNy45NSw4LjA1QzIwLjY4LDEwLjc4IDIwLjY4LDE1LjIyIDE3Ljk1LDE3Ljk1QzE2LjU4LDE5LjMyIDE0Ljc5LDIwIDEzLDIwQzEyLjAzLDIwIDExLjA2LDE5Ljc5IDEwLjE2LDE5LjM5TDguNjcsMjAuODhDMTAsMjEuNjIgMTEuNSwyMiAxMywyMkMxNS4zLDIyIDE3LjYxLDIxLjEyIDE5LjM2LDE5LjM2QzIyLjg4LDE1Ljg1IDIyLjg4LDEwLjE1IDE5LjM2LDYuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U2VjdGlvbiA9IFwiTTE1LjY3LDQuNDJDMTQuNywzLjg0IDEzLjU4LDMuNTQgMTIuNDUsMy41NkMxMC44NywzLjU2IDkuNjYsNC4zNCA5LjY2LDUuNTZDOS42Niw2Ljk2IDExLDcuNDcgMTMsOC4xNEMxNS41LDguOTUgMTcuNCw5Ljk3IDE3LjQsMTIuMzhDMTcuMzYsMTMuNjkgMTYuNjksMTQuODkgMTUuNiwxNS42MUMxNi4yNSwxNi4yMiAxNi42MSwxNy4wOCAxNi42LDE3Ljk3QzE2LjYsMjAuNzkgMTQsMjEuOTcgMTEuNSwyMS45N0MxMC4wNCwyMi4wMyA4LjU5LDIxLjY0IDcuMzUsMjAuODdMOCwxOS4zNEM5LjA0LDIwLjA1IDEwLjI3LDIwLjQzIDExLjUzLDIwLjQ0QzEzLjI1LDIwLjQ0IDE0LjUzLDE5LjY2IDE0LjUzLDE4LjI0QzE0LjUzLDE3IDEzLjc1LDE2LjMxIDExLjI1LDE1LjQ1QzguNSwxNC41IDYuNiwxMy41IDYuNiwxMS4yMUM2LjY3LDkuODkgNy40Myw4LjY5IDguNiw4LjA3QzcuOTcsNy41IDcuNjEsNi42NyA3LjYsNS44MUM3LjYsMy40NSA5Ljc3LDIgMTIuNTMsMkMxMy44MiwyIDE1LjA5LDIuMjkgMTYuMjMsMi44OUwxNS42Nyw0LjQyTTExLjM1LDEzLjQyQzEyLjQxLDEzLjc1IDEzLjQ0LDE0LjE4IDE0LjQxLDE0LjcxQzE1LjA2LDE0LjIyIDE1LjQzLDEzLjQ1IDE1LjQxLDEyLjY0QzE1LjQxLDExLjY0IDE0Ljc3LDEwLjc2IDEzLDEwLjE0QzExLjg5LDkuNzcgMTAuNzgsOS4zMSA5LjcyLDguNzdDOC45Nyw5LjIyIDguNSwxMC4wMyA4LjUsMTAuOTFDOC41LDExLjg4IDkuMjMsMTIuNjggMTEuMzUsMTMuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U2l6ZSA9IFwiTTIgNFY3SDdWMTlIMTBWN0gxNVY0SDJNMjEgOUgxMlYxMkgxNVYxOUgxOFYxMkgyMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN0cmlrZXRocm91Z2ggPSBcIk0zLDE0SDIxVjEySDNNNSw0VjdIMTBWMTBIMTRWN0gxOVY0TTEwLDE5SDE0VjE2SDEwVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN0cmlrZXRocm91Z2hWYXJpYW50ID0gXCJNMjMsMTJWMTRIMTguNjFDMTkuNjEsMTYuMTQgMTkuNTYsMjIgMTIuMzgsMjJDNC4wNSwyMi4wNSA0LjM3LDE1LjUgNC4zNywxNS41TDguMzQsMTUuNTVDOC4zNywxOC45MiAxMS41LDE4LjkyIDEyLjEyLDE4Ljg4QzEyLjc2LDE4LjgzIDE1LjE1LDE4Ljg0IDE1LjM0LDE2LjVDMTUuNDIsMTUuNDEgMTQuMzIsMTQuNTggMTMuMTIsMTRIMVYxMkgyM00xOS40MSw3Ljg5TDE1LjQzLDcuODZDMTUuNDMsNy44NiAxNS42LDUuMDkgMTIuMTUsNS4wOEM4LjcsNS4wNiA5LDcuMjggOSw3LjU2QzkuMDQsNy44NCA5LjM0LDkuMjIgMTIsOS44OEg1LjcxQzUuNzEsOS44OCAyLjIyLDMuMTUgMTAuNzQsMkMxOS40NSwwLjggMTkuNDMsNy45MSAxOS40MSw3Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN1YnNjcmlwdCA9IFwiTTE2LDcuNDFMMTEuNDEsMTJMMTYsMTYuNTlMMTQuNTksMThMMTAsMTMuNDFMNS40MSwxOEw0LDE2LjU5TDguNTksMTJMNCw3LjQxTDUuNDEsNkwxMCwxMC41OUwxNC41OSw2TDE2LDcuNDFNMjEuODUsMjEuMDNIMTYuOTdWMjAuMDNMMTcuODYsMTkuMjNDMTguNjIsMTguNTggMTkuMTgsMTguMDQgMTkuNTYsMTcuNkMxOS45MywxNy4xNiAyMC4xMiwxNi43NSAyMC4xMywxNi4zNkMyMC4xNCwxNi4wOCAyMC4wNSwxNS44NSAxOS44NiwxNS42NkMxOS42OCwxNS41IDE5LjM5LDE1LjM4IDE5LDE1LjM4QzE4LjY5LDE1LjM4IDE4LjQyLDE1LjQ0IDE4LjE2LDE1LjU2TDE3LjUsMTUuOTRMMTcuMDUsMTQuNzdDMTcuMzIsMTQuNTYgMTcuNjQsMTQuMzggMTguMDMsMTQuMjRDMTguNDIsMTQuMSAxOC44NSwxNCAxOS4zMiwxNEMyMC4xLDE0LjA0IDIwLjcsMTQuMjUgMjEuMSwxNC42NkMyMS41LDE1LjA3IDIxLjcyLDE1LjU5IDIxLjcyLDE2LjIzQzIxLjcxLDE2Ljc5IDIxLjUzLDE3LjMxIDIxLjE4LDE3Ljc4QzIwLjg0LDE4LjI1IDIwLjQyLDE4LjcgMTkuOTEsMTkuMTRMMTkuMjcsMTkuNjZWMTkuNjhIMjEuODVWMjEuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U3VwZXJzY3JpcHQgPSBcIk0xNiw3LjQxTDExLjQxLDEyTDE2LDE2LjU5TDE0LjU5LDE4TDEwLDEzLjQxTDUuNDEsMThMNCwxNi41OUw4LjU5LDEyTDQsNy40MUw1LjQxLDZMMTAsMTAuNTlMMTQuNTksNkwxNiw3LjQxTTIxLjg1LDlIMTYuOTdWOEwxNy44Niw3LjE4QzE4LjYyLDYuNTQgMTkuMTgsNiAxOS41Niw1LjU1QzE5LjkzLDUuMTEgMjAuMTIsNC43IDIwLjEzLDQuMzJDMjAuMTQsNC4wNCAyMC4wNSwzLjggMTkuODYsMy42MkMxOS42OCwzLjQzIDE5LjM5LDMuMzQgMTksMy4zM0MxOC42OSwzLjM0IDE4LjQyLDMuNCAxOC4xNiwzLjVMMTcuNSwzLjg5TDE3LjA1LDIuNzJDMTcuMzIsMi41IDE3LjY0LDIuMzMgMTguMDMsMi4xOUMxOC40MiwyLjA1IDE4Ljg1LDIgMTkuMzIsMkMyMC4xLDIgMjAuNywyLjIgMjEuMSwyLjYxQzIxLjUsMyAyMS43MiwzLjU0IDIxLjcyLDQuMThDMjEuNzEsNC43NCAyMS41Myw1LjI2IDIxLjE4LDUuNzNDMjAuODQsNi4yMSAyMC40Miw2LjY2IDE5LjkxLDcuMDlMMTkuMjcsNy42MVY3LjYzSDIxLjg1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dCA9IFwiTTE4LjUsNEwxOS42Niw4LjM1TDE4LjcsOC42MUMxOC4yNSw3Ljc0IDE3Ljc5LDYuODcgMTcuMjYsNi40M0MxNi43Myw2IDE2LjExLDYgMTUuNSw2SDEzVjE2LjVDMTMsMTcgMTMsMTcuNSAxMy4zMywxNy43NUMxMy42NywxOCAxNC4zMywxOCAxNSwxOFYxOUg5VjE4QzkuNjcsMTggMTAuMzMsMTggMTAuNjcsMTcuNzVDMTEsMTcuNSAxMSwxNyAxMSwxNi41VjZIOC41QzcuODksNiA3LjI3LDYgNi43NCw2LjQzQzYuMjEsNi44NyA1Ljc1LDcuNzQgNS4zLDguNjFMNC4zNCw4LjM1TDUuNSw0SDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dFJvdGF0aW9uQW5nbGVEb3duID0gXCJNMTQuMjUgMjFIMTAuMDNMMTEuNDQgMTkuNTlMMi41OCAxMC43M0w0LjAzIDkuMzNMMTIuODQgMTguMTlMMTQuMjUgMTYuNzhNMTIuNjEgOEwxNS4yMyAxMC42NEwxNy40MyA1Ljc3TTE5LjQxIDQuOTJMMTQuOTUgMTYuMDNMMTMuNSAxNC41OEwxNC4zOSAxMi4zOEwxMC44OCA4LjgxTDguNjggOS43NUw3LjIyIDguMjVMMTguMzMgMy44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25BbmdsZVVwID0gXCJNMjAuNTggOS4zM1YxMy41NUwxOS4xNyAxMi4xNEwxMC4zMSAyMUw4LjkxIDE5LjU5TDE3LjcyIDEwLjczTDE2LjMxIDkuMzNNNy41OSAxMUwxMC4yMiA4LjM5TDUuMzQgNi4xNE00LjUgNC4yMkwxNS42MSA4LjYzTDE0LjE2IDEwLjEzTDExLjk2IDkuMTlMOC4zOSAxMi43NUw5LjMzIDE0LjkxTDcuODMgMTYuNDFMMy40MiA1LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbkRvd24gPSBcIk02LDE5LjczTDMsMTYuNzNINVY0LjI3SDdWMTYuNzNIOUw2LDE5LjczTTE0LDkuMzhWMTMuMTNMMTkuMDMsMTEuMjVMMTQsOS4zOE0yMSwxMkwxMCwxNi43M1YxNC42N0wxMi4xOSwxMy43M1Y4Ljc3TDEwLDcuODNWNS43N0wyMSwxMC41VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbkRvd25WZXJ0aWNhbCA9IFwiTTE1LjI1IDRIMTMuNzVMOSAxNUgxMS4xTDEyIDEyLjhIMTdMMTcuOSAxNUgyMEwxNS4yNSA0TTEyLjYzIDExTDE0LjUgNkwxNi4zNyAxMUgxMi42M001IDE3LjVMOCAxNC41SDZWMkg0VjE0LjVIMkw1IDE3LjVNMjIgMjBMMTkgMTdWMTlINi41VjIxSDE5VjIzTDIyIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbk5vbmUgPSBcIk0yMC41LDE4TDE3LjUsMjFWMTlINVYxN0gxNy41VjE1TDIwLjUsMThNMTAuMTMsMTBIMTMuODhMMTIsNC45N0wxMC4xMywxME0xMi43NSwzTDE3LjUsMTRIMTUuNDJMMTQuNSwxMS44MUg5LjVMOC41OCwxNEg2LjVMMTEuMjUsM0gxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25VcCA9IFwiTTMgMTJWMTMuNUwxNCAxOC4yNVYxNi4xNUwxMS44IDE1LjI1VjEwLjI1TDE0IDkuMzVWNy4yNUwzIDEyTTEwIDE0LjYyTDUgMTIuNzVMMTAgMTAuODhWMTQuNjJNMTggNC4yNUwxNSA3LjI1SDE3VjE5Ljc1SDE5VjcuMjVIMjFMMTggNC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25WZXJ0aWNhbCA9IFwiTTE1Ljc1IDVIMTQuMjVMOS41IDE2SDExLjZMMTIuNSAxMy44SDE3LjVMMTguNCAxNkgyMC41TDE1Ljc1IDVNMTMuMTMgMTJMMTUgN0wxNi44NyAxMkgxMy4xM002IDE5Ljc1TDkgMTYuNzVIN1Y0LjI1SDVWMTYuNzVIM0w2IDE5Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRWYXJpYW50ID0gXCJNOS42LDE0TDEyLDcuN0wxNC40LDE0TTExLDVMNS41LDE5SDcuN0w4LjgsMTZIMTVMMTYuMSwxOUgxOC4zTDEzLDVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dFZhcmlhbnRPdXRsaW5lID0gXCJNMTEgM0MxMC4xOCAzIDkuNDQgMy41IDkuMTQgNC4yN0wzLjY0IDE4LjI3QzMuMTIgMTkuNTggNC4wOSAyMSA1LjUgMjFINy43NUM4LjU5IDIxIDkuMzMgMjAuNSA5LjYyIDE5LjdMMTAuMjYgMThIMTMuNzRMMTQuMzggMTkuN0MxNC42NyAyMC41IDE1LjQyIDIxIDE2LjI1IDIxSDE4LjVDMTkuOTEgMjEgMjAuODggMTkuNTggMjAuMzYgMTguMjdMMTQuODYgNC4yN0MxNC41NiAzLjUgMTMuODIgMyAxMyAzTTExIDVIMTNMMTguNSAxOUgxNi4yNUwxNS4xMiAxNkg4Ljg3TDcuNzUgMTlINS41TTEyIDcuNjdMOS42MiAxNEgxNC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0V3JhcHBpbmdDbGlwID0gXCJNNywyMUg1VjNIN1YyMU0xNywzVjExSDlWMTNIMTdWMjFIMTlWM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0V3JhcHBpbmdPdmVyZmxvdyA9IFwiTTcsMjFINVYzSDdWMjFNMTQsM0gxMlY5SDE0VjNNMTQsMTVIMTJWMjFIMTRWMTVNMTksMTJMMTYsOVYxMUg5VjEzSDE2VjE1TDE5LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRXcmFwcGluZ1dyYXAgPSBcIk03LDIxSDVWM0g3VjIxTTE5LDNIMTdWMjFIMTlWM00xMyw4SDlWMTBIMTIuOTdDMTMuMTQsMTAgMTQsMTAuMTYgMTQsMTJDMTQsMTMuODQgMTMuMTQsMTQgMTMsMTRIMTFWMTJMOCwxNUwxMSwxOFYxNkgxM0MxNC4wNCwxNiAxNiwxNS4xNiAxNiwxMkMxNiw4Ljg0IDE0LjA0LDggMTMsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Ym94ID0gXCJNMjEsN1YzSDE3VjRIN1YzSDNWN0g0VjE3SDNWMjFIN1YyMEgxN1YyMUgyMVYxN0gyMFY3SDIxTTE4LDRIMjBWNkgxOFY0TTQsNEg2VjZINFY0TTYsMjBINFYxOEg2VjIwTTIwLDIwSDE4VjE4SDIwVjIwTTE4LDE3SDE3VjE4SDdWMTdINlY3SDdWNkgxN1Y3SDE4VjE3TTE2LDhWMTBIMTNWMTZIMTFWMTBIOFY4SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRkaXJlY3Rpb25MVG9SID0gXCJNMjEsMThMMTcsMTRWMTdINVYxOUgxN1YyMk05LDEwVjE1SDExVjRIMTNWMTVIMTVWNEgxN1YySDlBNCw0IDAgMCwwIDUsNkE0LDQgMCAwLDAgOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0ZGlyZWN0aW9uUlRvTCA9IFwiTTgsMTdWMTRMNCwxOEw4LDIyVjE5SDIwVjE3TTEwLDEwVjE1SDEyVjRIMTRWMTVIMTZWNEgxOFYySDEwQTQsNCAwIDAsMCA2LDZBNCw0IDAgMCwwIDEwLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRpdGxlID0gXCJNNSw0VjdIMTAuNVYxOUgxMy41VjdIMTlWNEg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFVuZGVybGluZSA9IFwiTTUsMjFIMTlWMTlINVYyMU0xMiwxN0E2LDYgMCAwLDAgMTgsMTFWM0gxNS41VjExQTMuNSwzLjUgMCAwLDEgMTIsMTQuNUEzLjUsMy41IDAgMCwxIDguNSwxMVYzSDZWMTFBNiw2IDAgMCwwIDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25Cb3R0b20gPSBcIk0xNiwxM0gxM1YzSDExVjEzSDhMMTIsMTdMMTYsMTNNNCwxOVYyMUgyMFYxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25DZW50ZXIgPSBcIk04LDE5SDExVjIzSDEzVjE5SDE2TDEyLDE1TDgsMTlNMTYsNUgxM1YxSDExVjVIOEwxMiw5TDE2LDVNNCwxMVYxM0gyMFYxMUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25Ub3AgPSBcIk04LDExSDExVjIxSDEzVjExSDE2TDEyLDdMOCwxMU00LDNWNUgyMFYzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0V3JhcElubGluZSA9IFwiTTgsN0wxMywxN0gzTDgsN00zLDNIMjFWNUgzVjNNMjEsMTVWMTdIMTRWMTVIMjFNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFdyYXBTcXVhcmUgPSBcIk0xMiw3TDE3LDE3SDdMMTIsN00zLDNIMjFWNUgzVjNNMyw3SDZWOUgzVjdNMjEsN1Y5SDE4VjdIMjFNMywxMUg2VjEzSDNWMTFNMjEsMTFWMTNIMThWMTFIMjFNMywxNUg2VjE3SDNWMTVNMjEsMTVWMTdIMThWMTVIMjFNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFdyYXBUaWdodCA9IFwiTTEyLDdMMTcsMTdIN0wxMiw3TTMsM0gyMVY1SDNWM00zLDdIOVY5SDNWN00yMSw3VjlIMTVWN0gyMU0zLDExSDdWMTNIM1YxMU0yMSwxMVYxM0gxN1YxMUgyMU0zLDE1SDZWMTdIM1YxNU0yMSwxNVYxN0gxOFYxNUgyMU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0V3JhcFRvcEJvdHRvbSA9IFwiTTEyLDdMMTcsMTdIN0wxMiw3TTMsM0gyMVY1SDNWM00zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ydW0gPSBcIk0xNywxMlYzQTEsMSAwIDAsMCAxNiwySDNBMSwxIDAgMCwwIDIsM1YxN0w2LDEzSDE2QTEsMSAwIDAsMCAxNywxMk0yMSw2SDE5VjE1SDZWMTdBMSwxIDAgMCwwIDcsMThIMThMMjIsMjJWN0ExLDEgMCAwLDAgMjEsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3J1bU91dGxpbmUgPSBcIk0xNSw0VjExSDUuMTdMNCwxMi4xN1Y0SDE1TTE2LDJIM0ExLDEgMCAwLDAgMiwzVjE3TDYsMTNIMTZBMSwxIDAgMCwwIDE3LDEyVjNBMSwxIDAgMCwwIDE2LDJNMjEsNkgxOVYxNUg2VjE3QTEsMSAwIDAsMCA3LDE4SDE4TDIyLDIyVjdBMSwxIDAgMCwwIDIxLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9yd2FyZCA9IFwiTTEyLDhWNEwyMCwxMkwxMiwyMFYxNkg0VjhIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9yd2FyZGJ1cmdlciA9IFwiTTE5LDEzSDNWMTFIMTlMMTUsN0wxNi40LDUuNkwyMi44LDEyTDE2LjQsMTguNEwxNSwxN0wxOSwxM00zLDZIMTNWOEgzVjZNMTMsMTZWMThIM1YxNkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3VudGFpbiA9IFwiTTcuNSwyQzQuNDcsMiAyLDQuNDYgMiw3LjVWNy41TDIsOEg0VjcuNUEzLjUsMy41IDAgMCwxIDcuNSw0QzksNCAxMC4yNiw0LjkzIDEwLjc2LDYuMjRDMTAuMzcsNi4wOCA5Ljk1LDYgOS41LDZDOC4xMSw2IDYuOSw2LjgyIDYuMzQsOEw4LjA4LDlDOC4yOSw4LjQyIDguODUsOCA5LjUsOEExLjUsMS41IDAgMCwxIDExLDkuNVYxMUgxM1Y5LjVBMS41LDEuNSAwIDAsMSAxNC41LDhDMTUuMTYsOCAxNS43MSw4LjQyIDE1LjkyLDlMMTcuNjYsOEMxNy4xLDYuODIgMTUuOSw2IDE0LjUsNkMxNC4wNSw2IDEzLjYzLDYuMDggMTMuMjQsNi4yNEMxMy43NCw0LjkzIDE1LDQgMTYuNSw0QTMuNSwzLjUgMCAwLDEgMjAsNy41VjhIMjJWNy41SDIyQTUuNSw1LjUgMCAwLDAgMTYuNSwyQzE0LjY0LDIgMTMsMi45MyAxMiw0LjM0QzExLDIuOTMgOS4zNiwyIDcuNSwyTTYsMTJWMTRINy40MkM3LjkyLDE1LjE1IDguODUsMTYuMDcgMTAsMTYuNTdDMTAsMTcuMzggMTAsMTguMTkgMTAsMTlIMkMyLDE5IDIuODIsMjAuMjMgMy40MSwyMS4xMUMzLjc4LDIxLjY3IDQuNCwyMiA1LjA3LDIySDE4LjkzQzE5LjYsMjIgMjAuMjIsMjEuNjcgMjAuNTksMjEuMTFMMjIsMTlIMTRDMTQsMTguMTkgMTQsMTcuMzggMTQsMTYuNTdDMTUuMTUsMTYuMDcgMTYuMDgsMTUuMTUgMTYuNTgsMTRIMThWMTJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3VudGFpblBlbiA9IFwiTTYuOTUsMTQuOTNMMTEuMTksOS4yN0wxOS42OCwyLjJDMjAuMDcsMS44MSAyMC43MiwxLjgxIDIxLjA5LDIuMkwyMS44LDIuOTFDMjIuMTksMy4yOCAyMi4xOSwzLjkzIDIxLjgsNC4zMkwxNC43MywxMi44MUw5LjA3LDE3LjA1TDYuOTUsMTQuOTNNOC4zNiwxNy43Nkw2LjI0LDE1LjY0TDMuNDEsMTcuMDVMMiwyMS4yOUw0LjEyLDE5LjE3QzQuMzIsMTkgNC42MywxOSA0LjgzLDE5LjE3QzUsMTkuMzcgNSwxOS42OCA0LjgzLDE5Ljg4TDIuNzEsMjJMNi45NSwyMC41OUw4LjM2LDE3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvdW50YWluUGVuVGlwID0gXCJNMTUuNTQsMy41TDIwLjUsOC40N0wxOS4wNyw5Ljg4TDE0LjEyLDQuOTNMMTUuNTQsMy41TTMuNSwxOS43OEwxMCwxMy4zMUM5LjksMTMgOS45NywxMi42MSAxMC4yMywxMi4zNUMxMC42MiwxMS45NiAxMS4yNiwxMS45NiAxMS42NSwxMi4zNUMxMi4wNCwxMi43NSAxMi4wNCwxMy4zOCAxMS42NSwxMy43N0MxMS4zOSwxNC4wMyAxMSwxNC4xIDEwLjY5LDE0TDQuMjIsMjAuNUwxNC44MywxNi45NUwxOC4zNiwxMC41OUwxMy40Miw1LjY0TDcuMDUsOS4xN0wzLjUsMTkuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJlZWJzZCA9IFwiTTIuNjksMkMzLjU0LDEuOTUgNi4wOCwzLjE2IDYuMTMsMy4xOUM0Ljg0LDQgMy43NCw1LjA5IDIuOTEsNi4zOEMyLjA5LDQuODEgMS4zNCwyLjkxIDIsMi4yNUMyLjE3LDIuMDggMi40LDIgMi42OSwyTTIwLjg0LDIuMTNDMjEuMjUsMi4wOCAyMS41OCwyLjE0IDIxLjc4LDIuMzRDMjIuODUsMy40MiAxOS44OCw4LjE1IDE5LjM4LDguNjZDMTguODcsOS4xNiAxNy41Nyw4LjcgMTYuNSw3LjYzQzE1LjQzLDYuNTUgMTQuOTcsNS4yNiAxNS40Nyw0Ljc1QzE1Ljg4LDQuMzQgMTkuMDksMi4zIDIwLjg0LDIuMTNNMTIsMi41NkMxMy4yOSwyLjU2IDE0LjUzLDIuODIgMTUuNjYsMy4yOEMxNS4xNywzLjYgMTQuODEsMy44NSAxNC42OSwzLjk3QzEzLjcsNC45NiAxNC4xNCw2LjgzIDE1LjcyLDguNDFDMTYuNyw5LjM4IDE3Ljg0LDkuOTcgMTguNzgsOS45N0MxOS40Niw5Ljk3IDE5LjkyLDkuNjggMjAuMTYsOS40NEMyMC4zMyw5LjI3IDIwLjYsOC44OCAyMC45MSw4LjQxQzIxLjQyLDkuNTkgMjEuNjksMTAuODggMjEuNjksMTIuMjVDMjEuNjksMTcuNjEgMTcuMzYsMjEuOTcgMTIsMjEuOTdDNi42NCwyMS45NyAyLjMxLDE3LjYxIDIuMzEsMTIuMjVDMi4zMSw2Ljg5IDYuNjQsMi41NiAxMiwyLjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyA9IFwiTTE4LDE1SDZMMiwxOVYzQTEsMSAwIDAsMSAzLDJIMThBMSwxIDAgMCwxIDE5LDNWMTRBMSwxIDAgMCwxIDE4LDE1TTIzLDlWMjNMMTksMTlIOEExLDEgMCAwLDEgNywxOFYxN0gyMVY4SDIyQTEsMSAwIDAsMSAyMyw5TTguMTksNEM3LjMyLDQgNi42Miw0LjIgNi4wOCw0LjU5QzUuNTYsNSA1LjMsNS41NyA1LjMxLDYuMzZMNS4zMiw2LjM5SDcuMjVDNy4yNiw2LjA5IDcuMzUsNS44NiA3LjUzLDUuN0M3LjcxLDUuNTUgNy45Myw1LjQ3IDguMTksNS40N0M4LjUsNS40NyA4Ljc2LDUuNTcgOC45NCw1Ljc1QzkuMTIsNS45NCA5LjIsNi4yIDkuMiw2LjVDOS4yLDYuODIgOS4xMyw3LjA5IDguOTcsNy4zMkM4LjgzLDcuNTUgOC42Miw3Ljc1IDguMzYsNy45MUM3Ljg1LDguMjUgNy41LDguNTUgNy4zMSw4LjgyQzcuMTEsOS4wOCA3LDkuNSA3LDEwSDlDOSw5LjY5IDkuMDQsOS40NCA5LjEzLDkuMjZDOS4yMiw5LjA4IDkuMzksOC45IDkuNjQsOC43NEMxMC4wOSw4LjUgMTAuNDYsOC4yMSAxMC43NSw3LjgxQzExLjA0LDcuNDEgMTEuMTksNyAxMS4xOSw2LjVDMTEuMTksNS43NCAxMC45Miw1LjEzIDEwLjM4LDQuNjhDOS44NSw0LjIzIDkuMTIsNCA4LjE5LDRNNywxMVYxM0g5VjExSDdNMTMsMTNIMTVWMTFIMTNWMTNNMTMsNFYxMEgxNVY0SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZSA9IFwiTTcsMkgxN0EyLDIgMCAwLDEgMTksNFY5SDVWNEEyLDIgMCAwLDEgNywyTTE5LDE5QTIsMiAwIDAsMSAxNywyMVYyMkgxNVYyMUg5VjIySDdWMjFBMiwyIDAgMCwxIDUsMTlWMTBIMTlWMTlNOCw1VjdIMTBWNUg4TTgsMTJWMTVIMTBWMTJIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VBbGVydCA9IFwiTTUgMkgxNUMxNi4xMSAyIDE3IDIuOSAxNyA0VjlIM1Y0QzMgMi45IDMuOSAyIDUgMk0xNyAxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3VjIySDVWMjFDMy45IDIxIDMgMjAuMTEgMyAxOVYxMEgxN1YxOU02IDVWN0g4VjVINk02IDEyVjE1SDhWMTJINk0xOSAxNUgyMVYxN0gxOVYxNU0xOSA3SDIxVjEzSDE5VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlQWxlcnRPdXRsaW5lID0gXCJNNyAyMVYyMkg1VjIxQzMuOSAyMSAzIDIwLjExIDMgMTlWNEMzIDIuOSAzLjkgMiA1IDJIMTVDMTYuMTEgMiAxNyAyLjkgMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3TTUgNFY5SDE1VjRINU01IDE5SDE1VjExSDVWMTlNNiAxMkg4VjE1SDZWMTJNNiA2SDhWOEg2VjZNMTkgMTVIMjFWMTdIMTlWMTVNMTkgN0gyMVYxM0gxOVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZUJvdHRvbSA9IFwiTTcsMkEyLDIgMCAwLDAgNSw0VjE5QTIsMiAwIDAsMCA3LDIxVjIySDlWMjFIMTVWMjJIMTdWMjFBMiwyIDAgMCwwIDE5LDE5VjRBMiwyIDAgMCwwIDE3LDJIN004LDZIMTBWOEg4VjZNNywxMUgxN1YxOUg3VjExTTgsMTJWMTVIMTBWMTJIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTEwIDE1SDhWMTBIMTBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlSW5kdXN0cmlhbEFsZXJ0ID0gXCJNMTUgMkg1QzMuOSAyIDMgMi45IDMgNFYxOUMzIDIwLjExIDMuOSAyMSA1IDIxVjIySDdWMjFIMTNWMjJIMTVWMjFDMTYuMTEgMjEgMTcgMjAuMTEgMTcgMTlWNEMxNyAyLjkgMTYuMTEgMiAxNSAyTTggMTVINlYxMEg4VjE1TTIxIDdWMTNIMTlWN0gyMU0xOSAxNUgyMVYxN0gxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsQWxlcnRPdXRsaW5lID0gXCJNOCAxNUg2VjEwSDhWMTVNMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3VjIySDVWMjFDMy45IDIxIDMgMjAuMTEgMyAxOVY0QzMgMi45IDMuOSAyIDUgMkgxNUMxNi4xMSAyIDE3IDIuOSAxNyA0TTE1IDRINVYxOUgxNVY0TTE5IDE3SDIxVjE1SDE5VjE3TTE5IDdWMTNIMjFWN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsT2ZmID0gXCJNMTkgMTUuOEw1LjcgMi41QzYuMDUgMi4xOSA2LjUgMiA3IDJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFYxNS44TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjQ2IDIwLjM1QzE4LjEgMjAuNzUgMTcuNTggMjEgMTcgMjFWMjJIMTVWMjFIOVYyMkg3VjIxQzUuOSAyMSA1IDIwLjExIDUgMTlWNi44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEwIDExLjg5TDguMTEgMTBIOFYxNUgxMFYxMS44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsT2ZmT3V0bGluZSA9IFwiTTcuMiA0TDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0VjE1LjhMMTcgMTMuOFY0SDcuMk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOC40NiAyMC4zNUMxOC4xIDIwLjc1IDE3LjU4IDIxIDE3IDIxVjIySDE1VjIxSDlWMjJIN1YyMUM1LjkgMjEgNSAyMC4xMSA1IDE5VjYuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xNyAxOC44OUwxMCAxMS44OVYxNUg4VjEwSDguMTFMNyA4Ljg5VjE5SDE3VjE4Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZUluZHVzdHJpYWxPdXRsaW5lID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTE3IDE5SDdWNEgxN1YxOU0xMCAxNUg4VjEwSDEwVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNSA2Ljg5VjlINy4xMUw4LjExIDEwSDVWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE3LjU4IDIxIDE4LjEgMjAuNzUgMTguNDYgMjAuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTAgMTVIOFYxMkgxMFYxNU0xOSAxNS44TDEzLjIgMTBIMTlWMTUuOE04LjIgNUw1LjcgMi41QzYuMDUgMi4xOSA2LjUgMiA3IDJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFY5SDEyLjJMMTAgNi44VjVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZU9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDUgNi44OVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTcuNTggMjEgMTguMSAyMC43NSAxOC40NiAyMC4zNUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xNyAxOUg3VjExSDkuMTFMMTcgMTguODlWMTlNNy4yIDRMNS43IDIuNUM2LjA1IDIuMTkgNi41IDIgNyAySDE3QzE4LjExIDIgMTkgMi45IDE5IDRWMTUuOEwxNyAxMy44VjExSDE0LjJMMTIuMiA5SDE3VjRINy4yTTggMTJIMTBWMTVIOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VPdXRsaW5lID0gXCJNOSwyMVYyMkg3VjIxQTIsMiAwIDAsMSA1LDE5VjRBMiwyIDAgMCwxIDcsMkgxN0EyLDIgMCAwLDEgMTksNFYxOUEyLDIgMCAwLDEgMTcsMjFWMjJIMTVWMjFIOU03LDRWOUgxN1Y0SDdNNywxOUgxN1YxMUg3VjE5TTgsMTJIMTBWMTVIOFYxMk04LDZIMTBWOEg4VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlVG9wID0gXCJNOCw4VjZIMTBWOEg4TTcsMkgxN0EyLDIgMCAwLDEgMTksNFYxOUEyLDIgMCAwLDEgMTcsMjFWMjJIMTVWMjFIOVYyMkg3VjIxQTIsMiAwIDAsMSA1LDE5VjRBMiwyIDAgMCwxIDcsMk03LDRWOUgxN1Y0SDdNOCwxMlYxNUgxMFYxMkg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnQgPSBcIk0xOSA0VjE5QzE5IDIwLjExIDE4LjExIDIxIDE3IDIxVjIySDE1VjIxSDEyLjVWMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0TTcgMkgxMS41VjIxSDlWMjJIN1YyMUM1LjkgMjEgNSAyMC4xMSA1IDE5VjRDNSAyLjkgNS45IDIgNyAyTTEwIDEwSDdWMTRIMTBWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlVmFyaWFudEFsZXJ0ID0gXCJNMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUgxMC41VjJIMTVDMTYuMTEgMiAxNyAyLjkgMTcgNE01IDJIOS41VjIxSDdWMjJINVYyMUMzLjkgMjEgMyAyMC4xMSAzIDE5VjRDMyAyLjkgMy45IDIgNSAyTTggMTBINVYxNEg4VjEwTTE5IDdWMTNIMjFWN0gxOU0xOSAxN0gyMVYxNUgxOVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VWYXJpYW50QWxlcnRPdXRsaW5lID0gXCJNMTUgMkg1QzMuOSAyIDMgMi45IDMgNFYxOUMzIDIwLjExIDMuOSAyMSA1IDIxVjIySDdWMjFIMTNWMjJIMTVWMjFDMTYuMTEgMjEgMTcgMjAuMTEgMTcgMTlWNEMxNyAyLjkgMTYuMTEgMiAxNSAyTTkgMTlINVYxNEg4VjEwSDVWNEg5VjE5TTE1IDE5SDExVjRIMTVWMTlNMTkgMTVIMjFWMTdIMTlWMTVNMjEgN1YxM0gxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnRPZmYgPSBcIk0yLjM5IDEuNzNMMS4xMSAzTDUgNi44OVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTEuNVYxMy4zOUwxMi41IDE0LjM5VjIxSDE1VjIySDE3VjIxQzE3LjU4IDIxIDE4LjEgMjAuNzUgMTguNDYgMjAuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTEwIDE0SDdWMTBIOC4xMUwxMCAxMS44OVYxNE0xOSAxNS44TDEyLjUgOS4zVjJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFYxNS44TTExLjUgOC4zTDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxMS41VjguM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VWYXJpYW50T2ZmT3V0bGluZSA9IFwiTTcuMiA0TDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0VjE1LjhMMTcgMTMuOFY0SDEzVjkuOEwxMSA3LjhWNEg3LjJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTguNDYgMjAuMzVDMTguMSAyMC43NSAxNy41OCAyMSAxNyAyMVYyMkgxNVYyMUg5VjIySDdWMjFDNS45IDIxIDUgMjAuMTEgNSAxOVY2Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNNyAxMEg4LjExTDcgOC44OVYxME0xMSAxMi44OUwxMCAxMS44OVYxNEg3VjE5SDExVjEyLjg5TTE3IDE4Ljg5TDEzIDE0Ljg5VjE5SDE3VjE4Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnRPdXRsaW5lID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTcgMTlWMTRIMTBWMTBIN1Y0SDExVjE5SDdNMTcgMTlIMTNWNEgxN1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcnVpdENoZXJyaWVzID0gXCJNMTYgMTNIMTUuNUMxNC44IDExLjcgMTQuMyAxMCAxMy44IDguM0wxNC43IDkuMkMxNy40IDExLjMgMTkuOCAxMC45IDE5LjggMTAuOVMyMC41IDcuMSAxNy44IDUuMUMxNS41IDMuMyAxMy40IDMuMyAxMi44IDMuNEMxMi43IDIuOCAxMi43IDIuMyAxMi42IDEuOUwxMS4yIDJDMTEuMiA1LjIgOC41IDExLjEgNy42IDEzQzUuNiAxMy4yIDQgMTQuOSA0IDE3QzQgMTkuMiA1LjggMjEgOCAyMUM5LjEgMjEgMTAgMjAuNiAxMC43IDE5LjlDMTAuMyAxOSAxMCAxOCAxMCAxN1MxMC4zIDE1IDEwLjcgMTQuMUMxMC4zIDEzLjcgOS43IDEzLjQgOS4yIDEzLjJDOS45IDExLjcgMTEuMSA5IDExLjkgNi40QzEyLjMgOC43IDEzLjEgMTEuNCAxNC4xIDEzLjVDMTIuOSAxNC4yIDEyIDE1LjUgMTIgMTdDMTIgMTkuMiAxMy44IDIxIDE2IDIxUzIwIDE5LjIgMjAgMTcgMTguMiAxMyAxNiAxM004IDE1LjVDNy4yIDE1LjUgNi41IDE2LjIgNi41IDE3SDUuNUM1LjUgMTUuNiA2LjYgMTQuNSA4IDE0LjVWMTUuNU0xNiAxNS41QzE1LjIgMTUuNSAxNC41IDE2LjIgMTQuNSAxN0gxMy41QzEzLjUgMTUuNiAxNC42IDE0LjUgMTYgMTQuNVYxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2hlcnJpZXNPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjcgMTAuNkM4LjMgMTEuNiA3LjkgMTIuNSA3LjYgMTNDNS42IDEzLjIgNCAxNC45IDQgMTdDNCAxOS4yIDUuOCAyMSA4IDIxQzkuMSAyMSAxMCAyMC42IDEwLjcgMTkuOUMxMC4zIDE5IDEwIDE4IDEwIDE3UzEwLjMgMTUgMTAuNyAxNC4xQzEwLjMgMTMuNyA5LjcgMTMuNCA5LjIgMTMuMkM5LjQgMTIuOCA5LjYgMTIuMyA5LjkgMTEuN0wxMi44IDE0LjZDMTIuMyAxNS4zIDEyIDE2LjEgMTIgMTdDMTIgMTkuMiAxMy44IDIxIDE2IDIxQzE2LjkgMjEgMTcuNyAyMC43IDE4LjMgMjAuMkwyMC44IDIyLjdMMjIuMSAyMS41TTggMTUuNUM3LjIgMTUuNSA2LjUgMTYuMiA2LjUgMTdINS41QzUuNSAxNS42IDYuNiAxNC41IDggMTQuNVYxNS41TTE0LjUgMTdIMTMuNUMxMy41IDE2LjUgMTMuNiAxNi4xIDEzLjggMTUuN0wxNC42IDE2LjVDMTQuNSAxNi43IDE0LjUgMTYuOCAxNC41IDE3TTIwIDE2LjhMMTYuMiAxM0MxOC4yIDEzLjEgMTkuOSAxNC44IDIwIDE2LjhNMTEuMyA4LjFMMTAuMSA2LjlDMTAuNyA1LjEgMTEuMiAzLjMgMTEuMiAyTDEyLjYgMS45QzEyLjcgMi4zIDEyLjcgMi44IDEyLjggMy40QzEzLjQgMy4zIDE1LjUgMy4zIDE3LjggNS4xQzIwLjUgNy4xIDE5LjggMTAuOSAxOS44IDEwLjlTMTcuNCAxMS4zIDE0LjcgOS4yTDEzLjggOC4zQzE0LjEgOS41IDE0LjUgMTAuNyAxNC45IDExLjdMMTIuNiA5LjRDMTIuMyA4LjQgMTIuMSA3LjQgMTEuOSA2LjRDMTEuNyA3IDExLjUgNy42IDExLjMgOC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2l0cnVzID0gXCJNOSAxNS45QzYuOSAxNS43IDUuMSAxNC45IDQgMTMuNkMzLjIgMTMuNiAyLjQgMTMuMSAyLjEgMTIuM0MxLjggMTEuNSAyLjEgMTAuNyAyLjggMTAuMkMyLjkgNy4yIDUuNiA0LjEgOS43IDIuN0MxMy44IDEuMyAxOCAyLjEgMjAgNC40QzIwLjggNC40IDIxLjYgNC45IDIxLjkgNS43QzIyLjIgNi41IDIxLjkgNy4zIDIxLjIgNy44QzIxLjIgOC42IDIxIDkuNCAyMC42IDEwLjJDMTkuNCA5LjUgMTggOSAxNi41IDlDMTIuNiA5IDkuMyAxMiA5IDE1LjlNMjIgMTYuNUMyMiAxOS41IDE5LjUgMjIgMTYuNSAyMlMxMSAxOS41IDExIDE2LjUgMTMuNSAxMSAxNi41IDExIDIyIDEzLjUgMjIgMTYuNU0xMy4zIDE4TDE1LjYgMTYuNUwxMy4zIDE1QzEzLjEgMTUuNSAxMyAxNiAxMyAxNi41UzEzLjEgMTcuNSAxMy4zIDE4TTE2IDE3LjRMMTMuOSAxOC44QzE0LjQgMTkuNCAxNS4yIDE5LjggMTYgMjBWMTcuNE0xNiAxMy4xQzE1LjIgMTMuMiAxNC40IDEzLjYgMTMuOSAxNC4zTDE2IDE1LjdWMTMuMU0xNyAxNS42TDE5LjEgMTQuMkMxOC42IDEzLjYgMTcuOCAxMy4yIDE3IDEzVjE1LjZNMTkuMSAxOC44TDE3IDE3LjRWMTkuOUMxNy44IDE5LjggMTguNiAxOS40IDE5LjEgMTguOE0yMCAxNi41QzIwIDE2IDE5LjkgMTUuNSAxOS43IDE1TDE3LjQgMTYuNUwxOS43IDE4QzE5LjkgMTcuNSAyMCAxNyAyMCAxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2l0cnVzT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNC40IDYuM0MzLjQgNy41IDIuOSA4LjkgMi44IDEwLjJDMi4xIDEwLjcgMS44IDExLjUgMi4xIDEyLjNDMi40IDEzLjEgMy4yIDEzLjYgNCAxMy42QzUuMSAxNC45IDYuOSAxNS43IDkgMTUuOUM5LjEgMTQuNSA5LjYgMTMuMyAxMC4zIDEyLjJMMTEuOCAxMy43QzExLjMgMTQuNSAxMSAxNS41IDExIDE2LjVDMTEgMTkuNSAxMy41IDIyIDE2LjUgMjJDMTcuNSAyMiAxOC41IDIxLjcgMTkuMyAyMS4yTDIwLjggMjIuN0wyMi4xIDIxLjVNMTMgMTYuNUMxMyAxNiAxMy4xIDE1LjYgMTMuMyAxNS4xTDE1IDE2LjhMMTMuMyAxOEMxMy4xIDE3LjUgMTMgMTcgMTMgMTYuNU0xMy45IDE4LjhMMTUuNyAxNy42TDE2IDE3LjlWMjBDMTUuMiAxOS44IDE0LjQgMTkuNCAxMy45IDE4LjhNMTcgMTkuOVYxOC45TDE3LjggMTkuN0MxNy41IDE5LjggMTcuMyAxOS45IDE3IDE5LjlNMjAgMTYuOFYxNi41QzIwIDE2IDE5LjkgMTUuNSAxOS43IDE1TDE4LjggMTUuNkwxOC4xIDE0LjlMMTkuMSAxNC4yQzE4LjYgMTMuNiAxNy44IDEzLjIgMTcgMTNWMTMuOEwxNC42IDExLjRDMTUuMiAxMS4yIDE1LjkgMTEgMTYuNSAxMUMxOS41IDExIDIyIDEzLjUgMjIgMTYuNUMyMiAxNy4yIDIxLjkgMTcuOCAyMS42IDE4LjRMMjAgMTYuOE0xMyA5LjhMNy4xIDMuOUM3LjkgMy40IDguOCAzIDkuNyAyLjdDMTMuOCAxLjMgMTggMi4xIDIwIDQuNEMyMC44IDQuNCAyMS42IDQuOSAyMS45IDUuN0MyMi4yIDYuNSAyMS45IDcuMyAyMS4yIDcuOEMyMS4yIDguNiAyMSA5LjQgMjAuNiAxMC4yQzE5LjQgOS41IDE4IDkgMTYuNSA5QzE1LjMgOSAxNC4xIDkuMyAxMyA5LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJ1aXRHcmFwZXMgPSBcIk0xNCAxMkMxNCAxMy4xIDEzLjEgMTQgMTIgMTRTMTAgMTMuMSAxMCAxMiAxMC45IDEwIDEyIDEwIDE0IDEwLjkgMTQgMTJNNyAxMEM1LjkgMTAgNSAxMC45IDUgMTJTNS45IDE0IDcgMTQgOSAxMy4xIDkgMTIgOC4xIDEwIDcgMTBNMTcgMTBDMTUuOSAxMCAxNSAxMC45IDE1IDEyUzE1LjkgMTQgMTcgMTQgMTkgMTMuMSAxOSAxMiAxOC4xIDEwIDE3IDEwTTE0LjUgNkMxMy40IDYgMTIuNSA2LjkgMTIuNSA4UzEzLjQgMTAgMTQuNSAxMCAxNi41IDkuMSAxNi41IDggMTUuNiA2IDE0LjUgNk05LjUgNkM4LjQgNiA3LjUgNi45IDcuNSA4UzguNCAxMCA5LjUgMTAgMTEuNSA5LjEgMTEuNSA4IDEwLjYgNiA5LjUgNk0xNC41IDE0QzEzLjQgMTQgMTIuNSAxNC45IDEyLjUgMTZTMTMuNCAxOCAxNC41IDE4IDE2LjUgMTcuMSAxNi41IDE2IDE1LjYgMTQgMTQuNSAxNE05LjUgMTRDOC40IDE0IDcuNSAxNC45IDcuNSAxNlM4LjQgMTggOS41IDE4IDExLjUgMTcuMSAxMS41IDE2IDEwLjYgMTQgOS41IDE0TTEyIDE4QzEwLjkgMTggMTAgMTguOSAxMCAyMFMxMC45IDIyIDEyIDIyIDE0IDIxLjEgMTQgMjAgMTMuMSAxOCAxMiAxOE0xNC40IDIuMkwxMy42IDFDMTEuNCAyIDExLjIgNS42IDExLjIgNkgxMi43QzEyLjggNS4yIDEzLjEgMi43IDE0LjQgMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0R3JhcGVzT3V0bGluZSA9IFwiTTE5IDEyQzE5IDEwLjYxIDE4LjA1IDkuNDcgMTYuNzggOS4xMkMxNi45MiA4Ljc4IDE3IDguNCAxNyA4QzE3IDYuMzQgMTUuNjYgNSAxNCA1QzEzLjU3IDUgMTMuMTcgNS4xIDEyLjgxIDUuMjZDMTMgNC4xOSAxMy4zOSAyLjU5IDE0LjQgMi4yTDEzLjYgMUMxMS45IDEuNzcgMTEuNCA0LjA5IDExLjI2IDUuMjlDMTAuODcgNS4xMSAxMC40NSA1IDEwIDVDOC4zNCA1IDcgNi4zNCA3IDhDNyA4LjQgNy4wOCA4Ljc3IDcuMjIgOS4xMkM1Ljk0IDkuNDYgNSAxMC42MiA1IDEyQzUgMTMuMzkgNS45NSAxNC41NCA3LjIzIDE0Ljg4QzcuMDkgMTUuMjIgNyAxNS42IDcgMTZDNyAxNy4zOSA3Ljk0IDE4LjU0IDkuMjIgMTguODhDOS4wOCAxOS4yMyA5IDE5LjYxIDkgMjBDOSAyMS42NiAxMC4zNCAyMyAxMiAyM1MxNSAyMS42NiAxNSAyMEMxNSAxOS42MSAxNC45MiAxOS4yMyAxNC43OCAxOC44OEMxNi4wNiAxOC41NCAxNyAxNy4zOSAxNyAxNkMxNyAxNS42IDE2LjkyIDE1LjIzIDE2Ljc3IDE0Ljg4QzE4LjA1IDE0LjU0IDE5IDEzLjM5IDE5IDEyTTE2LjMxIDkuODhWOS45SDE2LjNMMTYuMzEgOS44OE0xNCA2LjVDMTQuODMgNi41IDE1LjUgNy4xNyAxNS41IDhTMTQuODMgOS41IDE0IDkuNSAxMi41IDguODMgMTIuNSA4IDEzLjE3IDYuNSAxNCA2LjVNMTMuNSAxMkMxMy41IDEyLjgzIDEyLjgzIDEzLjUgMTIgMTMuNVMxMC41IDEyLjgzIDEwLjUgMTIgMTEuMTcgMTAuNSAxMiAxMC41IDEzLjUgMTEuMTcgMTMuNSAxMk0xMCA2LjVDMTAuODMgNi41IDExLjUgNy4xNyAxMS41IDhTMTAuODMgOS41IDEwIDkuNSA4LjUgOC44MyA4LjUgOCA5LjE3IDYuNSAxMCA2LjVNNi41IDEyQzYuNSAxMS4xNyA3LjE3IDEwLjUgOCAxMC41UzkuNSAxMS4xNyA5LjUgMTIgOC44MyAxMy41IDggMTMuNSA2LjUgMTIuODMgNi41IDEyTTguNSAxNkM4LjUgMTUuMTcgOS4xNyAxNC41IDEwIDE0LjVTMTEuNSAxNS4xNyAxMS41IDE2IDEwLjgzIDE3LjUgMTAgMTcuNSA4LjUgMTYuODMgOC41IDE2TTEyIDIxLjVDMTEuMTcgMjEuNSAxMC41IDIwLjgzIDEwLjUgMjBTMTEuMTcgMTguNSAxMiAxOC41IDEzLjUgMTkuMTcgMTMuNSAyMCAxMi44MyAyMS41IDEyIDIxLjVNMTQgMTcuNUMxMy4xNyAxNy41IDEyLjUgMTYuODMgMTIuNSAxNlMxMy4xNyAxNC41IDE0IDE0LjUgMTUuNSAxNS4xNyAxNS41IDE2IDE0LjgzIDE3LjUgMTQgMTcuNU0xNiAxMy41QzE1LjE3IDEzLjUgMTQuNSAxMi44MyAxNC41IDEyUzE1LjE3IDEwLjUgMTYgMTAuNSAxNy41IDExLjE3IDE3LjUgMTIgMTYuODMgMTMuNSAxNiAxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0UGluZWFwcGxlID0gXCJNMTQuNCA3LjdDMTYuNCA2LjQgMTkgNyAxOSA3QzE3LjIgNC42IDE1LjEgNC43IDEzLjYgNS4yVjVDMTQuNyAzLjQgMTYuOSAzLjUgMTYuOSAzLjVDMTUuMyAyLjEgMTMuOSAyLjUgMTMgM0MxMi41IDEuOCAxMiAxIDEyIDFDMTEuNiAxLjcgMTEuMyAyLjQgMTEgMy4xQzEwLjEgMi41IDguNiAyLjEgNyAzLjVDNyAzLjUgOS4zIDMuNSAxMC40IDUuMkM4LjkgNC43IDYuOCA0LjYgNSA3QzUgNyA3LjYgNi40IDkuNiA3LjdDNy41IDguOSA2IDExLjcgNiAxNUM2IDE5LjQgOC43IDIzIDEyIDIzUzE4IDE5LjQgMTggMTVDMTggMTEuNyAxNi41IDguOSAxNC40IDcuN00xNS44IDE2LjhDMTUuNyAxNy4yIDE1LjYgMTcuNiAxNS40IDE4TDE0IDE2TDEyLjUgMThMMTQuMSAyMC4xQzEzLjggMjAuMyAxMy42IDIwLjUgMTMuMyAyMC43TDEyIDE5TDEwLjcgMjAuN0MxMC40IDIwLjYgMTAuMSAyMC40IDkuOSAyMC4xTDExLjUgMThMMTAgMTZMOC41IDE3LjlDOC40IDE3LjUgOC4yIDE3LjEgOC4xIDE2LjdMOS41IDE1TDguMiAxMy4yQzguMyAxMi44IDguNCAxMi40IDguNiAxMkwxMCAxNEwxMS41IDEyTDkuOSA5LjlDMTAuMiA5LjcgMTAuNCA5LjUgMTAuNyA5LjNMMTIgMTFMMTMuMyA5LjNDMTMuNiA5LjQgMTMuOSA5LjYgMTQuMSA5LjlMMTIuNSAxMkwxNCAxNEwxNS41IDEyLjFDMTUuNiAxMi41IDE1LjggMTIuOSAxNS45IDEzLjNMMTQuNSAxNUwxNS44IDE2LjhNMTIgMTNMMTMuNSAxNUwxMiAxN0wxMC41IDE1TDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0V2F0ZXJtZWxvbiA9IFwiTTE2LjQgMTYuNEMxOS44IDEzIDE5LjggNy41IDE2LjQgNC4yTDQuMiAxNi40QzcuNSAxOS44IDEzIDE5LjggMTYuNCAxNi40TTE2IDdDMTYuNiA3IDE3IDcuNCAxNyA4QzE3IDguNiAxNi42IDkgMTYgOVMxNSA4LjYgMTUgOEMxNSA3LjQgMTUuNCA3IDE2IDdNMTYgMTFDMTYuNiAxMSAxNyAxMS40IDE3IDEyQzE3IDEyLjYgMTYuNiAxMyAxNiAxM1MxNSAxMi42IDE1IDEyQzE1IDExLjQgMTUuNCAxMSAxNiAxMU0xMiAxMUMxMi42IDExIDEzIDExLjQgMTMgMTJDMTMgMTIuNiAxMi42IDEzIDEyIDEzUzExIDEyLjYgMTEgMTJDMTEgMTEuNCAxMS40IDExIDEyIDExTTEyIDE1QzEyLjYgMTUgMTMgMTUuNCAxMyAxNkMxMyAxNi42IDEyLjYgMTcgMTIgMTdTMTEgMTYuNiAxMSAxNkMxMSAxNS40IDExLjQgMTUgMTIgMTVNOCAxN0M3LjQgMTcgNyAxNi42IDcgMTZDNyAxNS40IDcuNCAxNSA4IDE1UzkgMTUuNCA5IDE2QzkgMTYuNiA4LjYgMTcgOCAxN00xOC42IDE4LjZDMTQgMjMuMiA2LjYgMjMuMiAyIDE4LjZMMy40IDE3LjJDNy4yIDIxIDEzLjMgMjEgMTcuMSAxNy4yQzIwLjkgMTMuNCAyMC45IDcuMyAxNy4xIDMuNUwxOC42IDJDMjMuMSA2LjYgMjMuMSAxNCAxOC42IDE4LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVlbCA9IFwiTTMsMkg2QzYuMjgsMiA2LjUzLDIuMTEgNi43MSwyLjI5TDguNzksNC4zOEw5LjU5LDMuNTlDMTAsMy4yIDEwLjUsMyAxMSwzSDE3QzE3LjUsMyAxOCwzLjIgMTguNDEsMy41OUwxOS40MSw0LjU5QzE5LjgsNSAyMCw1LjUgMjAsNlYxOUEyLDIgMCAwLDEgMTgsMjFIOEEyLDIgMCAwLDEgNiwxOVYxM0w2LDEyVjhDNiw3LjUgNi4yLDcgNi41OSw2LjU5TDcuMzgsNS43OUw1LjU5LDRIM1YyTTExLDVWN0gxN1Y1SDExTTExLjQxLDExTDkuNDEsOUg4VjEwLjQxTDEwLDEyLjQxVjE1LjU5TDgsMTcuNTlWMTlIOS40MUwxMS40MSwxN0gxNC41OUwxNi41OSwxOUgxOFYxNy41OUwxNiwxNS41OVYxMi40MUwxOCwxMC40MVY5SDE2LjU5TDE0LjU5LDExSDExLjQxTTEyLDEzSDE0VjE1SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZ1bGxzY3JlZW4gPSBcIk01LDVIMTBWN0g3VjEwSDVWNU0xNCw1SDE5VjEwSDE3VjdIMTRWNU0xNywxNEgxOVYxOUgxNFYxN0gxN1YxNE0xMCwxN1YxOUg1VjE0SDdWMTdIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVsbHNjcmVlbkV4aXQgPSBcIk0xNCwxNEgxOVYxNkgxNlYxOUgxNFYxNE01LDE0SDEwVjE5SDhWMTZINVYxNE04LDVIMTBWMTBINVY4SDhWNU0xOSw4VjEwSDE0VjVIMTZWOEgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGdW5jdGlvbiA9IFwiTTE1LjYsNS4yOUMxNC41LDUuMTkgMTMuNTMsNiAxMy40Myw3LjExTDEzLjE4LDEwSDE2VjEySDEzTDEyLjU2LDE3LjA3QzEyLjM3LDE5LjI3IDEwLjQzLDIwLjkgOC4yMywyMC43QzYuOTIsMjAuNTkgNS44MiwxOS44NiA1LjE3LDE4LjgzTDYuNjcsMTcuMzNDNi45MSwxOC4wNyA3LjU3LDE4LjY0IDguNCwxOC43MUM5LjUsMTguODEgMTAuNDcsMTggMTAuNTcsMTYuODlMMTEsMTJIOFYxMEgxMS4xN0wxMS40NCw2LjkzQzExLjYzLDQuNzMgMTMuNTcsMy4xIDE1Ljc3LDMuM0MxNy4wOCwzLjQxIDE4LjE4LDQuMTQgMTguODMsNS4xN0wxNy4zMyw2LjY3QzE3LjA5LDUuOTMgMTYuNDMsNS4zNiAxNS42LDUuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVuY3Rpb25WYXJpYW50ID0gXCJNMTIuNDIsNS4yOUMxMS4zMiw1LjE5IDEwLjM1LDYgMTAuMjUsNy4xMUwxMCwxMEgxMi44MlYxMkg5LjgyTDkuMzgsMTcuMDdDOS4xOCwxOS4yNyA3LjI0LDIwLjkgNS4wNCwyMC43QzMuNzksMjAuNTkgMi42NiwxOS45IDIsMTguODNMMy41LDE3LjMzQzMuODMsMTguMzggNC45NiwxOC45NyA2LDE4LjYzQzYuNzgsMTguMzkgNy4zMywxNy43IDcuNCwxNi44OUw3LjgyLDEySDQuODJWMTBIOEw4LjI3LDYuOTNDOC40Niw0LjczIDEwLjM5LDMuMSAxMi42LDMuMjhDMTMuODYsMy4zOSAxNSw0LjA5IDE1LjY2LDUuMTdMMTQuMTYsNi42N0MxMy45MSw1LjkgMTMuMjMsNS4zNiAxMi40Miw1LjI5TTIyLDEzLjY1TDIwLjU5LDEyLjI0TDE3Ljc2LDE1LjA3TDE0LjkzLDEyLjI0TDEzLjUsMTMuNjVMMTYuMzUsMTYuNUwxMy41LDE5LjMxTDE0LjkzLDIwLjcyTDE3Ljc2LDE3Ljg5TDIwLjU5LDIwLjcyTDIyLDE5LjMxTDE5LjE3LDE2LjVMMjIsMTMuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVyaWdhbmFIb3Jpem9udGFsID0gXCJNOC41IDJDNy4xMiAyIDYgMy4xMiA2IDQuNVM3LjEyIDcgOC41IDcgMTEgNS44OCAxMSA0LjUgOS44OCAyIDguNSAyTTE1LjUgMkMxNC4xMiAyIDEzIDMuMTIgMTMgNC41UzE0LjEyIDcgMTUuNSA3IDE4IDUuODggMTggNC41IDE2Ljg4IDIgMTUuNSAyTTExIDhWMTBINVYxMkgxNC45NUMxNC41MyAxMy4xMyAxMy41IDE0LjUgMTIuMTYgMTUuNjdDMTEuMTIgMTQuNzQgMTAuMzUgMTMuODIgOS44MiAxM0g3LjVDOC4wOCAxNC4yNSA5LjEzIDE1LjYyIDEwLjYyIDE2Ljk2TDYuNTUgMjAuMjJMNS43NiAyMC44NEw3IDIyLjQxTDcuOCAyMS43OEwxMi4xNyAxOC4yOEwxNi41NSAyMS43OEwxNy4zMyAyMi40MUwxOC41OCAyMC44NEwxNy44IDIwLjIyTDEzLjczIDE2Ljk3QzE1LjM0IDE1LjUgMTYuNyAxMy44NSAxNy4wNyAxMkgxOVYxMEgxM1Y4SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZ1cmlnYW5hVmVydGljYWwgPSBcIk04IDVWN0gyVjlIMTEuOTVDMTEuNTMgMTAuMTMgMTAuNSAxMS41IDkuMTYgMTIuNjdDOC4xMiAxMS43NCA3LjM1IDEwLjgyIDYuODIgMTBINC41QzUuMDggMTEuMjUgNi4xMyAxMi42MiA3LjYyIDEzLjk2TDMuNTUgMTcuMjJMMi43NiAxNy44NEw0IDE5LjQxTDQuOCAxOC43OEw5LjE3IDE1LjI4TDEzLjU1IDE4Ljc4TDE0LjMzIDE5LjQxTDE1LjU4IDE3Ljg0TDE0LjggMTcuMjJMMTAuNzMgMTMuOTdDMTIuMzQgMTIuNSAxMy43IDEwLjg1IDE0LjA3IDlIMTZWN0gxMFY1SDhNMTkuNSA2QzE4LjEyIDYgMTcgNy4xMiAxNyA4LjVTMTguMTIgMTEgMTkuNSAxMSAyMiA5Ljg4IDIyIDguNSAyMC44OCA2IDE5LjUgNk0xOS40NyAxM0MxOC4wOSAxMyAxNi45NyAxNC4xMiAxNi45NyAxNS41UzE4LjA5IDE4IDE5LjQ3IDE4IDIxLjk3IDE2Ljg4IDIxLjk3IDE1LjUgMjAuODUgMTMgMTkuNDcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVzZSA9IFwiTTgsN1YxN0gxNVY3SDhNMTEuMTYsMTZWMTIuODdIOS40MUwxMS45MSw4VjExLjE0SDEzLjU5TDExLjE2LDE2TTE2LDJWNkg3VjJBMSwxIDAgMCwxIDgsMUgxNUExLDEgMCAwLDEgMTYsMk0xNiwxOFYyMkExLDEgMCAwLDEgMTUsMjNIOEExLDEgMCAwLDEgNywyMlYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGdXNlQWxlcnQgPSBcIk02IDdWMTdIMTNWN0g2TTkuMTYgMTZWMTIuODdINy40MUw5LjkxIDhWMTEuMTRIMTEuNTlMOS4xNiAxNk0xNCAyVjZINVYyQzUgMS40NSA1LjQ1IDEgNiAxSDEzQzEzLjU1IDEgMTQgMS40NSAxNCAyTTE0IDE4VjIyQzE0IDIyLjU1IDEzLjU1IDIzIDEzIDIzSDZDNS40NSAyMyA1IDIyLjU1IDUgMjJWMThIMTRNMTkgMTNIMTdWN0gxOVYxM00xOSAxN0gxN1YxNUgxOVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGdXNlQmxhZGUgPSBcIk0xMCwyMUg4TDYsMTlWMTZIMTBWMjFNMTgsMTZIMTRWMjFIMTZMMTgsMTlWMTZNMywzVjRBMSwxIDAgMCwwIDQsNVYxNEExLDEgMCAwLDAgNSwxNUgxOUExLDEgMCAwLDAgMjAsMTRWNUgyMEExLDEgMCAwLDAgMjEsNFYzSDNNMTEuODMsMTNWOS43M0gxMEwxMi42MSw0LjY2VjcuOTNIMTQuMzZMMTEuODMsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVzZU9mZiA9IFwiTTE1IDExLjhMMTAuMiA3SDE1VjExLjhNMTYgNlYyQzE2IDEuNDUgMTUuNTUgMSAxNSAxSDhDNy40NSAxIDcgMS40NSA3IDJWMy44TDkuMiA2SDE2TTIuMzkgMS43M0wxLjExIDNMOCA5Ljg5VjE3SDE1LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M003IDIyQzcgMjIuNTUgNy40NSAyMyA4IDIzSDE1QzE1LjU1IDIzIDE2IDIyLjU1IDE2IDIyVjE4SDdWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZCA9IFwiTTE2LjUsOUwxMy41LDEyTDE2LjUsMTVIMjJWOU05LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41TTcuNSw5SDJWMTVINy41TDEwLjUsMTJNMTUsNy41VjJIOVY3LjVMMTIsMTAuNUwxNSw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZENpcmNsZSA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRDaXJjbGVEb3duID0gXCJNNSw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDE1QTQsNCAwIDAsMSAxNiwxOUE0LDQgMCAwLDEgMTIsMjNBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDEyLDE1TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNMTIsM0EyLDIgMCAwLDAgMTAsNUEyLDIgMCAwLDAgMTIsN0EyLDIgMCAwLDAgMTQsNUEyLDIgMCAwLDAgMTIsM001LDEwQTIsMiAwIDAsMCAzLDEyQTIsMiAwIDAsMCA1LDE0QTIsMiAwIDAsMCA3LDEyQTIsMiAwIDAsMCA1LDEwTTE5LDEwQTIsMiAwIDAsMCAxNywxMkEyLDIgMCAwLDAgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkQ2lyY2xlTGVmdCA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4TTE5LDEwQTIsMiAwIDAsMCAxNywxMkEyLDIgMCAwLDAgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxME0xMiwxN0EyLDIgMCAwLDAgMTAsMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOUEyLDIgMCAwLDAgMTIsMTdNMTIsM0EyLDIgMCAwLDAgMTAsNUEyLDIgMCAwLDAgMTIsN0EyLDIgMCAwLDAgMTQsNUEyLDIgMCAwLDAgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkQ2lyY2xlT3V0bGluZSA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTUsMTBBMiwyIDAgMCwwIDMsMTJBMiwyIDAgMCwwIDUsMTRBMiwyIDAgMCwwIDcsMTJBMiwyIDAgMCwwIDUsMTBNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDNBMiwyIDAgMCwwIDEwLDVBMiwyIDAgMCwwIDEyLDdBMiwyIDAgMCwwIDE0LDVBMiwyIDAgMCwwIDEyLDNNMTIsMTVBNCw0IDAgMCwxIDE2LDE5QTQsNCAwIDAsMSAxMiwyM0E0LDQgMCAwLDEgOCwxOUE0LDQgMCAwLDEgMTIsMTVNMTIsMTdBMiwyIDAgMCwwIDEwLDE5QTIsMiAwIDAsMCAxMiwyMUEyLDIgMCAwLDAgMTQsMTlBMiwyIDAgMCwwIDEyLDE3TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNMTksMTBBMiwyIDAgMCwwIDE3LDEyQTIsMiAwIDAsMCAxOSwxNEEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRDaXJjbGVSaWdodCA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4TTEyLDNBMiwyIDAgMCwwIDEwLDVBMiwyIDAgMCwwIDEyLDdBMiwyIDAgMCwwIDE0LDVBMiwyIDAgMCwwIDEyLDNNNSwxMEEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxMkEyLDIgMCAwLDAgNSwxME0xMiwxN0EyLDIgMCAwLDAgMTAsMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOUEyLDIgMCAwLDAgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZENpcmNsZVVwID0gXCJNNSw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDE1QTQsNCAwIDAsMSAxNiwxOUE0LDQgMCAwLDEgMTIsMjNBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDEyLDE1TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNNSwxMEEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxMkEyLDIgMCAwLDAgNSwxME0xOSwxMEEyLDIgMCAwLDAgMTcsMTJBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBNMTIsMTdBMiwyIDAgMCwwIDEwLDE5QTIsMiAwIDAsMCAxMiwyMUEyLDIgMCAwLDAgMTQsMTlBMiwyIDAgMCwwIDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWREb3duID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41TTExLDE4SDEzVjIwSDExVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRMZWZ0ID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNNCwxMUg2VjEzSDRWMTFNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSaWdodCA9IFwiTTksMlY3LjVMMTIsMTAuNUwxNSw3LjVWMkg5TTIsOVYxNUg3LjVMMTAuNSwxMkw3LjUsOUgyTTE2LjUsOUwxMy41LDEyTDE2LjUsMTVIMjJWOUgxNi41TTE4LDExSDIwVjEzSDE4VjExTTEyLDEzLjVMOSwxNi41VjIySDE1VjE2LjVMMTIsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkUm91bmQgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZERvd24gPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTEwLDE2VjIwSDE0VjE2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZExlZnQgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTQsMTBWMTRIOFYxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZE91dGxpbmUgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTQsMTBWMTRIMTBWMjBIMTRWMTRIMjBWMTBIMTRWNEgxMFYxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZFJpZ2h0ID0gXCJNNCw4SDhWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY4SDIwQTIsMiAwIDAsMSAyMiwxMFYxNEEyLDIgMCAwLDEgMjAsMTZIMTZWMjBBMiwyIDAgMCwxIDE0LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE2SDRBMiwyIDAgMCwxIDIsMTRWMTBBMiwyIDAgMCwxIDQsOE0xNiwxMFYxNEgyMFYxMEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkUm91bmRVcCA9IFwiTTQsOEg4VjRBMiwyIDAgMCwxIDEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWOEgyMEEyLDIgMCAwLDEgMjIsMTBWMTRBMiwyIDAgMCwxIDIwLDE2SDE2VjIwQTIsMiAwIDAsMSAxNCwyMkgxMEEyLDIgMCAwLDEgOCwyMFYxNkg0QTIsMiAwIDAsMSAyLDE0VjEwQTIsMiAwIDAsMSA0LDhNMTAsNFY4SDE0VjRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFNxdWFyZSA9IFwiTTIxLDZIM0EyLDIgMCAwLDAgMSw4VjE2QTIsMiAwIDAsMCAzLDE4SDIxQTIsMiAwIDAsMCAyMywxNlY4QTIsMiAwIDAsMCAyMSw2TTExLDEzSDhWMTZINlYxM0gzVjExSDZWOEg4VjExSDExTTE1LjUsMTVBMS41LDEuNSAwIDAsMSAxNCwxMy41QTEuNSwxLjUgMCAwLDEgMTUuNSwxMkExLjUsMS41IDAgMCwxIDE3LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDE1TTE5LjUsMTJBMS41LDEuNSAwIDAsMSAxOCwxMC41QTEuNSwxLjUgMCAwLDEgMTkuNSw5QTEuNSwxLjUgMCAwLDEgMjEsMTAuNUExLjUsMS41IDAgMCwxIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFNxdWFyZU91dGxpbmUgPSBcIk0yMSw2SDNBMiwyIDAgMCwwIDEsOFYxNkEyLDIgMCAwLDAgMywxOEgyMUEyLDIgMCAwLDAgMjMsMTZWOEEyLDIgMCAwLDAgMjEsNk0yMSwxNkgzVjhIMjFNNiwxNUg4VjEzSDEwVjExSDhWOUg2VjExSDRWMTNINk0xNC41LDEyQTEuNSwxLjUgMCAwLDEgMTYsMTMuNUExLjUsMS41IDAgMCwxIDE0LjUsMTVBMS41LDEuNSAwIDAsMSAxMywxMy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxMk0xOC41LDlBMS41LDEuNSAwIDAsMSAyMCwxMC41QTEuNSwxLjUgMCAwLDEgMTguNSwxMkExLjUsMS41IDAgMCwxIDE3LDEwLjVBMS41LDEuNSAwIDAsMSAxOC41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFVwID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMTEsNEgxM1Y2SDExVjRNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRWYXJpYW50ID0gXCJNNyw2SDE3QTYsNiAwIDAsMSAyMywxMkE2LDYgMCAwLDEgMTcsMThDMTUuMjIsMTggMTMuNjMsMTcuMjMgMTIuNTMsMTZIMTEuNDdDMTAuMzcsMTcuMjMgOC43OCwxOCA3LDE4QTYsNiAwIDAsMSAxLDEyQTYsNiAwIDAsMSA3LDZNNiw5VjExSDRWMTNINlYxNUg4VjEzSDEwVjExSDhWOUg2TTE1LjUsMTJBMS41LDEuNSAwIDAsMCAxNCwxMy41QTEuNSwxLjUgMCAwLDAgMTUuNSwxNUExLjUsMS41IDAgMCwwIDE3LDEzLjVBMS41LDEuNSAwIDAsMCAxNS41LDEyTTE4LjUsOUExLjUsMS41IDAgMCwwIDE3LDEwLjVBMS41LDEuNSAwIDAsMCAxOC41LDEyQTEuNSwxLjUgMCAwLDAgMjAsMTAuNUExLjUsMS41IDAgMCwwIDE4LjUsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkVmFyaWFudE91dGxpbmUgPSBcIk02LDlIOFYxMUgxMFYxM0g4VjE1SDZWMTNINFYxMUg2VjlNMTguNSw5QTEuNSwxLjUgMCAwLDEgMjAsMTAuNUExLjUsMS41IDAgMCwxIDE4LjUsMTJBMS41LDEuNSAwIDAsMSAxNywxMC41QTEuNSwxLjUgMCAwLDEgMTguNSw5TTE1LjUsMTJBMS41LDEuNSAwIDAsMSAxNywxMy41QTEuNSwxLjUgMCAwLDEgMTUuNSwxNUExLjUsMS41IDAgMCwxIDE0LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDEyTTE3LDVBNyw3IDAgMCwxIDI0LDEyQTcsNyAwIDAsMSAxNywxOUMxNS4wNCwxOSAxMy4yNywxOC4yIDEyLDE2LjlDMTAuNzMsMTguMiA4Ljk2LDE5IDcsMTlBNyw3IDAgMCwxIDAsMTJBNyw3IDAgMCwxIDcsNUgxN003LDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdDOC42NCwxNyAxMC4wOSwxNi4yMSAxMSwxNUgxM0MxMy45MSwxNi4yMSAxNS4zNiwxNyAxNywxN0E1LDUgMCAwLDAgMjIsMTJBNSw1IDAgMCwwIDE3LDdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1tYSA9IFwiTTExLjc2IDE5QzEyLjkyIDE5IDEzLjU4IDE4IDEzLjU4IDE2LjI5QzEzLjU4IDE1LjIgMTMuNSAxMy44OCAxMy4zIDEyLjY3TDE4IDVIMTUuMjhMMTIuNzEgOS44MkwxMi41NSA5LjMzQzExLjgzIDcuMTkgMTAuODIgNSA4LjY4IDVDOCA1IDcuNDUgNS4xOCA3IDUuNTRDNiA2LjM5IDYgOCA2IDguNUg2LjkxQzYuOTcgOC4wNiA3LjIxIDYuODMgOC4yNSA2LjgzQzEwIDYuODMgMTAuOCAxMCAxMS40IDEyLjQyQzEwLjUgMTQuNTggMTAgMTYuMTQgMTAgMTYuOTdDMTAgMTcuOTUgMTAuNTYgMTkgMTEuNzYgMTlcIjtcclxuZXhwb3J0IHZhciBtZGlHYW50cnlDcmFuZSA9IFwiTTIxLDZIMjJWNEgyMVYzSDE4VjRINlYzSDNWNEgyVjZIM1YyMEgyVjIySDdWMjBINlY2SDExVjdIMTEuNVYxMC42MkMxMSwxMC43OSAxMC42OSwxMS4yNSAxMC42OSwxMS43NkMxMC42OSwxMi4yIDEwLjkyLDEyLjYgMTEuMywxMi44MlYxNEgxMS45MkMxMi4yNiwxNCAxMi41NCwxNC4yNyAxMi41NSwxNC42MUMxMi41NSwxNC45NiAxMi4yOCwxNS4yNCAxMS45MywxNS4yNEMxMS43MSwxNS4yNCAxMS41LDE1LjEyIDExLjM5LDE0LjkzQzExLjIyLDE0LjY0IDEwLjg0LDE0LjU0IDEwLjU1LDE0LjcxQzEwLjI2LDE0Ljg3IDEwLjE1LDE1LjI1IDEwLjMyLDE1LjU1QzEwLjY1LDE2LjEyIDExLjI2LDE2LjQ3IDExLjkyLDE2LjQ3QzEyLjk0LDE2LjQ2IDEzLjc2LDE1LjYyIDEzLjc1LDE0LjZDMTMuNzQsMTMuODMgMTMuMjYsMTMuMTQgMTIuNTMsMTIuODhWMTIuODJDMTMuMTIsMTIuNSAxMy4zNCwxMS43OCAxMy4wMywxMS4yQzEyLjkyLDExIDEyLjc0LDEwLjgxIDEyLjUzLDEwLjdWN0gxM1Y2SDE4VjIwSDE3VjIySDIyVjIwSDIxVjZNNSwxNS4yOVYxNi43MUw0LDE3LjcxVjE2LjI5TDUsMTUuMjlNNCwyMFYxOS4yNEw1LDE4LjI0VjE5LjY2TDQuNjYsMjBINE00LDcuMjlMNSw2LjI5VjcuNzFMNCw4LjcxVjcuMjlNNCwxMC4yOUw1LDkuMjlWMTAuNzFMNCwxMS43MVYxMC4yOU00LDEzLjI5TDUsMTIuMjlWMTMuNzFMNCwxNC43MVYxMy4yNEw0LDEzLjI5TTIwLDE1LjI5VjE2LjcxTDE5LDE3LjcxVjE2LjI5TDIwLDE1LjI5TTE5LDIwVjE5LjI0TDIwLDE4LjI0VjE5LjY2TDE5LjY2LDIwSDE5TTE5LDcuMjlMMjAsNi4yOVY3LjcxTDE5LDguNzFWNy4yOU0xOSwxMC4yOUwyMCw5LjI5VjEwLjcxTDE5LDExLjcxVjEwLjI5TTE5LDEzLjI5TDIwLDEyLjI5VjEzLjcxTDE5LDE0LjcxVjEzLjI0TDE5LDEzLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhcmFnZSA9IFwiTTE5LDIwSDE3VjExSDdWMjBINVY5TDEyLDVMMTksOVYyME04LDEySDE2VjE0SDhWMTJNOCwxNUgxNlYxN0g4VjE1TTE2LDE4VjIwSDhWMThIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlQWxlcnQgPSBcIk0xNywyMEgxNVYxMUg1VjIwSDNWOUwxMCw1TDE3LDlWMjBNNiwxMkgxNFYxNEg2VjEyTTYsMTVIMTRWMTdINlYxNU0xOSwxNVYxMEgyMVYxNUgxOU0xOSwxOVYxN0gyMVYxOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXJhZ2VBbGVydFZhcmlhbnQgPSBcIk0yMCA5VjIwSDE4VjExSDJWMjBIMFY5TDEwIDVMMjAgOU0xNyAxMkgzVjE0SDE3VjEyTTE3IDE1SDNWMTdIMTdWMTVNMjIgMTVWMTBIMjRWMTVIMjJNMjIgMTlWMTdIMjRWMTlIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlT3BlbiA9IFwiTTE5LDIwSDE3VjExSDdWMjBINVY5TDEyLDVMMTksOVYyME04LDEySDE2VjE0SDhWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlT3BlblZhcmlhbnQgPSBcIk0yMiA5VjIwSDIwVjExSDRWMjBIMlY5TDEyIDVMMjIgOU0xOSAxMkg1VjE0SDE5VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhcmFnZVZhcmlhbnQgPSBcIk0yMiA5VjIwSDIwVjExSDRWMjBIMlY5TDEyIDVMMjIgOU0xOSAxMkg1VjE0SDE5VjEyTTE5IDE4SDVWMjBIMTlWMThNMTkgMTVINVYxN0gxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXNDeWxpbmRlciA9IFwiTTE2LDlWMTRMMTYsMjBBMiwyIDAgMCwxIDE0LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE0TDgsOUM4LDcuMTQgOS4yNyw1LjU3IDExLDUuMTNWNEg5VjJIMTVWNEgxM1Y1LjEzQzE0LjczLDUuNTcgMTYsNy4xNCAxNiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhc1N0YXRpb24gPSBcIk0xOCwxMEExLDEgMCAwLDEgMTcsOUExLDEgMCAwLDEgMTgsOEExLDEgMCAwLDEgMTksOUExLDEgMCAwLDEgMTgsMTBNMTIsMTBINlY1SDEyTTE5Ljc3LDcuMjNMMTkuNzgsNy4yMkwxNi4wNiwzLjVMMTUsNC41NkwxNy4xMSw2LjY3QzE2LjE3LDcgMTUuNSw3LjkzIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDExLjVDMTguMzYsMTEuNSAxOC42OSwxMS40MiAxOSwxMS4yOVYxOC41QTEsMSAwIDAsMSAxOCwxOS41QTEsMSAwIDAsMSAxNywxOC41VjE0QzE3LDEyLjg5IDE2LjEsMTIgMTUsMTJIMTRWNUMxNCwzLjg5IDEzLjEsMyAxMiwzSDZDNC44OSwzIDQsMy44OSA0LDVWMjFIMTRWMTMuNUgxNS41VjE4LjVBMi41LDIuNSAwIDAsMCAxOCwyMUEyLjUsMi41IDAgMCwwIDIwLjUsMTguNVY5QzIwLjUsOC4zMSAyMC4yMiw3LjY4IDE5Ljc3LDcuMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FzU3RhdGlvbk9mZiA9IFwiTTEgNC4yN0wyLjI4IDNMMjEgMjEuNzJMMTkuNzMgMjNMMTcuNzEgMjFDMTYuNTYgMjAuODUgMTUuNjUgMTkuOTQgMTUuNSAxOC43OEwxNCAxNy4yN1YyMUg0VjcuMjdMMSA0LjI3TTE4IDEwQzE4LjU1IDEwIDE5IDkuNTUgMTkgOUMxOSA4LjQ1IDE4LjU1IDggMTggOEMxNy40NSA4IDE3IDguNDUgMTcgOUMxNyA5LjU1IDE3LjQ1IDEwIDE4IDEwTTEyIDEwVjVINi44Mkw1LjA2IDMuMjNDNS4zNCAzLjA4IDUuNjYgMyA2IDNIMTJDMTMuMSAzIDE0IDMuODkgMTQgNVYxMkgxNUMxNi4xIDEyIDE3IDEyLjg5IDE3IDE0VjE1LjE4TDExLjgyIDEwSDEyTTYgMTBINi43M0w2IDkuMjdWMTBNMTkuNzcgNy4yM0MyMC4yMiA3LjY4IDIwLjUgOC4zMSAyMC41IDlMMjAuNSAxOC42N0wxOSAxNy4xOFYxMS4yOUMxOC42OSAxMS40MiAxOC4zNiAxMS41IDE4IDExLjVDMTYuNjIgMTEuNSAxNS41IDEwLjM4IDE1LjUgOUMxNS41IDcuOTMgMTYuMTcgNy4wMyAxNy4xMSA2LjY3TDE1IDQuNTZMMTYuMDYgMy41TDE5Ljc4IDcuMjJMMTkuNzcgNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYXNTdGF0aW9uT2ZmT3V0bGluZSA9IFwiTTEgNC4yN0wyLjI4IDNMNiA2LjcyTDIxIDIxLjcyTDE5LjczIDIzTDE3LjcyIDIxQzE2LjU2IDIwLjg1IDE1LjY1IDE5Ljk0IDE1LjUgMTguNzhMMTQgMTcuMjdWMjFINFY3LjI3TDEgNC4yN00xOS43NyA3LjIzQzIwLjIyIDcuNjggMjAuNSA4LjMxIDIwLjUgOUwyMC41IDE4LjY3TDE5IDE3LjE4VjExLjI5QzE4LjY5IDExLjQyIDE4LjM2IDExLjUgMTggMTEuNUMxNi42MiAxMS41IDE1LjUgMTAuMzggMTUuNSA5QzE1LjUgNy45MyAxNi4xNyA3LjAzIDE3LjExIDYuNjdMMTUgNC41NkwxNi4wNiAzLjVMMTkuNzggNy4yMkwxOS43NyA3LjIzTTExLjgyIDEwSDEyVjVINi44Mkw1LjA2IDMuMjRDNS4zNCAzLjA5IDUuNjYgMyA2IDNIMTJDMTMuMSAzIDE0IDMuOSAxNCA1VjEySDE1QzE2LjEgMTIgMTcgMTIuOSAxNyAxNFYxNS4xOEwxMS44MiAxME02IDEwSDYuNzNMNiA5LjI3VjEwTTYgMTJWMTlIMTJWMTUuMjdMOC43MyAxMkg2TTE4IDEwQzE4LjU1IDEwIDE5IDkuNTUgMTkgOUMxOSA4LjQ1IDE4LjU1IDggMTggOEMxNy40NSA4IDE3IDguNDUgMTcgOUMxNyA5LjU1IDE3LjQ1IDEwIDE4IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhc1N0YXRpb25PdXRsaW5lID0gXCJNMTkuNzcsNy4yM0wxOS43OCw3LjIyTDE2LjA2LDMuNUwxNSw0LjU2TDE3LjExLDYuNjdDMTYuMTcsNy4wMyAxNS41LDcuOTMgMTUuNSw5QTIuNSwyLjUgMCAwLDAgMTgsMTEuNUMxOC4zNiwxMS41IDE4LjY5LDExLjQyIDE5LDExLjI5VjE4LjVBMSwxIDAgMCwxIDE4LDE5LjVBMSwxIDAgMCwxIDE3LDE4LjVWMTRBMiwyIDAgMCwwIDE1LDEySDE0VjVBMiwyIDAgMCwwIDEyLDNINkEyLDIgMCAwLDAgNCw1VjIxSDE0VjEzLjVIMTUuNVYxOC41QTIuNSwyLjUgMCAwLDAgMTgsMjFBMi41LDIuNSAwIDAsMCAyMC41LDE4LjVWOUMyMC41LDguMzEgMjAuMjIsNy42OCAxOS43Nyw3LjIzTTEyLDEzLjVWMTlINlYxMkgxMlYxMy41TTEyLDEwSDZWNUgxMlYxME0xOCwxMEExLDEgMCAwLDEgMTcsOUExLDEgMCAwLDEgMTgsOEExLDEgMCAwLDEgMTksOUExLDEgMCAwLDEgMTgsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZSA9IFwiTTksNVYxMEg3VjZINVYxMEgzVjhIMVYyMEgzVjE4SDVWMjBIN1YxOEg5VjIwSDExVjE4SDEzVjIwSDE1VjE4SDE3VjIwSDE5VjE4SDIxVjIwSDIzVjhIMjFWMTBIMTlWNkgxN1YxMEgxNVY1SDEzVjEwSDExVjVIOU0zLDEySDVWMTZIM1YxMk03LDEySDlWMTZIN1YxMk0xMSwxMkgxM1YxNkgxMVYxMk0xNSwxMkgxN1YxNkgxNVYxMk0xOSwxMkgyMVYxNkgxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlQW5kID0gXCJNMiw0VjIwSDE0QTgsOCAwIDAsMCAyMiwxMkE4LDggMCAwLDAgMTQsNEgyTTQsNkgxNEE2LDYgMCAwLDEgMjAsMTJBNiw2IDAgMCwxIDE0LDE4SDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlQXJyb3dSaWdodCA9IFwiTTE1IDVWMTBIMTNWNkgxMVYxMEg5VjhIN1YyMEg5VjE4SDExVjIwSDEyLjA5QTYgNiAwIDAgMSAxMiAxOUE2IDYgMCAwIDEgMTMgMTUuNjlWMTJIMTVWMTMuODFBNiA2IDAgMCAxIDE3IDEzLjA5VjEySDE5VjEzLjA5QTYgNiAwIDAgMSAyMSAxMy44MVYxMkgyMlYxMEgyMVY1SDE5VjEwSDE3VjVIMTVNOSAxMkgxMVYxNkg5VjEyTTE5IDE2VjE4SDE1VjIwSDE5VjIyTDIyIDE5TDE5IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdGVOYW5kID0gXCJNMiw0VjIwSDEwQzEzLjQzLDIwIDE2LjUsMTcuODQgMTcuNiwxNC42QzE4LDE0LjggMTguNSwxNSAxOSwxNUEzLDMgMCAwLDAgMjIsMTJBMywzIDAgMCwwIDE5LDlDMTguNSw5IDE4LjAzLDkuMTUgMTcuNiw5LjRDMTYuNSw2LjE2IDEzLjQzLDQgMTAsNEgyTTQsNkgxMEE2LDYgMCAwLDEgMTYsMTJBNiw2IDAgMCwxIDEwLDE4SDRWNk0xOSwxMUMxOS41LDExIDIwLDExLjUgMjAsMTJDMjAsMTIuNSAxOS41LDEzIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkMxOCwxMS41IDE4LjUsMTEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZU5vciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg1QzkuNCwyMCAxMywxNy43IDE2LjYsMTMuN0MxNy4xNSwxNC41IDE4LjA0LDE1IDE5LDE1QTMsMyAwIDAsMCAyMiwxMkEzLDMgMCAwLDAgMTksOUMxOC4wNCw5IDE3LjE1LDkuNSAxNi42LDEwLjNDMTMsNi4zIDkuNCw0IDUsNEgyTTUsNkM4LjgsNiAxMiw4LjEgMTUuMywxMkMxMiwxNS45IDguOCwxOCA1LDE4QzYuNSwxNCA2LjUsMTAgNSw2TTE5LDExQzE5LjUsMTEgMjAsMTEuNSAyMCwxMkMyMCwxMi41IDE5LjUsMTMgMTksMTNBMSwxIDAgMCwxIDE4LDEyQzE4LDExLjUgMTguNSwxMSAxOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlTm90ID0gXCJNMiw0VjIwTDE2LjIsMTNDMTYuNjIsMTQuMTkgMTcuNzQsMTUgMTksMTVBMywzIDAgMCwwIDIyLDEyQTMsMyAwIDAsMCAxOSw5QzE3Ljc0LDkgMTYuNjIsOS44MSAxNi4yLDExTDIsNE00LDcuM0wxMy43LDEyTDQsMTYuN1Y3LjNNMTksMTFDMTkuNSwxMSAyMCwxMS41IDIwLDEyQzIwLDEyLjUgMTkuNSwxMyAxOSwxM0ExLDEgMCAwLDEgMTgsMTJDMTgsMTEuNSAxOC41LDExIDE5LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdGVPcGVuID0gXCJNNyAyMFY2SDVWMTBIM1Y4SDFWMjBIM1YxOEg1VjIwSDdNMyAxNlYxMkg1VjE2SDNNMjEgOFYxMEgxOVY2SDE3VjIwSDE5VjE4SDIxVjIwSDIzVjhIMjFNMjEgMTZIMTlWMTJIMjFWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZU9yID0gXCJNMiw0QzUsMTAgNSwxNCAyLDIwSDhDMTMsMjAgMTksMTYgMjIsMTJDMTksOCAxMyw0IDgsNEgyTTUsNkg4QzExLjUsNiAxNi4zLDkgMTkuMywxMkMxNi4zLDE1IDExLjUsMTggOCwxOEg1QzYuNCwxMy45IDYuNCwxMC4xIDUsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlWG5vciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg0QzcsMTQgNywxMCA0LjEsNEgyTTYsNEM5LDEwIDksMTQgNiwyMEg5QzEyLjIsMjAgMTQuOCwxNi44IDE2LjcsMTRDMTcuMjgsMTQuNjUgMTguMTIsMTUgMTksMTVBMywzIDAgMCwwIDIyLDEyQTMsMyAwIDAsMCAxOSw5QzE4LjEyLDkgMTcuMjgsOS4zNSAxNi43LDEwQzE0LjcsNy4yIDEyLjIsNCA5LDRINk05LDZDMTIsNiAxNCwxMCAxNS41LDEyQzE0LDE0IDEyLDE4IDksMThDMTAuNiwxNCAxMC42LDEwIDksNk0xOSwxMUMxOS41LDExIDIwLDExLjUgMjAsMTJDMjAsMTIuNSAxOS41LDEzIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkMxOCwxMS41IDE4LjUsMTEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZVhvciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg0QzcsMTQgNywxMCA0LjEsNEgyTTYsNEM5LDEwIDksMTQgNiwyMEg5QzE0LDIwIDE4LDE3IDIyLDEyQzE4LDcgMTQsNCA5LDRINk05LDZDMTIuOCw2IDE2LDguMSAxOS4zLDEyQzE1LjksMTUuOSAxMi44LDE4IDksMThDMTAuNSwxNCAxMC41LDEwIDksNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRzYnkgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QzguMjcsNCA1LjE0LDYuNTUgNC4yNSwxMEwxNCwxOS43NUMxNy40NSwxOC44NiAyMCwxNS43MyAyMCwxMkgxNC43NVYxMy41SDE4LjJDMTcuNzEsMTUuNTQgMTYuMjQsMTcuMTkgMTQuMzEsMTcuOTRMNi4wNiw5LjY5QzcsNy4zMSA5LjMsNS42MyAxMiw1LjYzQzE0LjEzLDUuNjMgMTYsNi42NyAxNy4xOCw4LjI4TDE4LjQxLDcuMjJDMTYuOTUsNS4yNiAxNC42Myw0IDEyLDRNNCwxMkE4LDggMCAwLDAgMTIsMjBDMTIuMDQsMjAgMTIuMDksMjAgNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXVnZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQzIwLDE0LjQgMTksMTYuNSAxNy4zLDE4QzE1LjksMTYuNyAxNCwxNiAxMiwxNkMxMCwxNiA4LjIsMTYuNyA2LjcsMThDNSwxNi41IDQsMTQuNCA0LDEyQTgsOCAwIDAsMSAxMiw0TTE0LDUuODlDMTMuNjIsNS45IDEzLjI2LDYuMTUgMTMuMSw2LjU0TDExLjgxLDkuNzdMMTEuNzEsMTBDMTEsMTAuMTMgMTAuNDEsMTAuNiAxMC4xNCwxMS4yNkM5LjczLDEyLjI5IDEwLjIzLDEzLjQ1IDExLjI2LDEzLjg2QzEyLjI5LDE0LjI3IDEzLjQ1LDEzLjc3IDEzLjg2LDEyLjc0QzE0LjEyLDEyLjA4IDE0LDExLjMyIDEzLjU3LDEwLjc2TDEzLjY3LDEwLjVMMTQuOTYsNy4yOUwxNC45Nyw3LjI2QzE1LjE3LDYuNzUgMTQuOTIsNi4xNyAxNC40MSw1Ljk2QzE0LjI4LDUuOTEgMTQuMTUsNS44OSAxNCw1Ljg5TTEwLDZBMSwxIDAgMCwwIDksN0ExLDEgMCAwLDAgMTAsOEExLDEgMCAwLDAgMTEsN0ExLDEgMCAwLDAgMTAsNk03LDlBMSwxIDAgMCwwIDYsMTBBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDgsMTBBMSwxIDAgMCwwIDcsOU0xNyw5QTEsMSAwIDAsMCAxNiwxMEExLDEgMCAwLDAgMTcsMTFBMSwxIDAgMCwwIDE4LDEwQTEsMSAwIDAsMCAxNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdWdlRW1wdHkgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTQuNCA1LDE2LjUgNi43LDE4QzguMSwxNi43IDEwLDE2IDEyLDE2QzE0LDE2IDE1LjgsMTYuNyAxNy4zLDE4QzE5LDE2LjUgMjAsMTQuNCAyMCwxMkE4LDggMCAwLDAgMTIsNE0xNCw2QTEsMSAwIDAsMSAxNSw3QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxMyw3QTEsMSAwIDAsMSAxNCw2TTEwLDZBMSwxIDAgMCwxIDExLDdBMSwxIDAgMCwxIDEwLDhBMSwxIDAgMCwxIDksN0ExLDEgMCAwLDEgMTAsNk02LjkxLDguOTRDNy4wNCw4Ljk0IDcuMTYsOC45NyA3LjMsOUwxMC41LDEwLjMyTDEwLjc3LDEwLjQzQzExLjMzLDEwIDEyLjA5LDkuODggMTIuNzUsMTAuMTVDMTMuNzcsMTAuNTYgMTQuMjcsMTEuNzMgMTMuODUsMTIuNzVDMTMuNDQsMTMuNzcgMTIuMjcsMTQuMjcgMTEuMjUsMTMuODVDMTAuNTksMTMuNTkgMTAuMTIsMTMgMTAsMTIuMjhMOS43NywxMi4xOEw2LjU1LDEwLjg4TDYuNTMsMTAuODdDNiwxMC42NiA1Ljc3LDEwLjA4IDUuOTcsOS41NkM2LjEzLDkuMTggNi41LDguOTMgNi45MSw4Ljk0VjguOTRNMTcsOUExLDEgMCAwLDEgMTgsMTBBMSwxIDAgMCwxIDE3LDExQTEsMSAwIDAsMSAxNiwxMEExLDEgMCAwLDEgMTcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXVnZUZ1bGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QTgsOCAwIDAsMSAyMCwxMkMyMCwxNC40IDE5LDE2LjUgMTcuMywxOEMxNS45LDE2LjcgMTQsMTYgMTIsMTZDMTAsMTYgOC4yLDE2LjcgNi43LDE4QzUsMTYuNSA0LDE0LjQgNCwxMkE4LDggMCAwLDEgMTIsNE0xMCw2QTEsMSAwIDAsMCA5LDdBMSwxIDAgMCwwIDEwLDhBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEwLDZNMTQsNkExLDEgMCAwLDAgMTMsN0ExLDEgMCAwLDAgMTQsOEExLDEgMCAwLDAgMTUsN0ExLDEgMCAwLDAgMTQsNk0xNy4wOSw4Ljk0QzE2Ljk2LDguOTQgMTYuODQsOC45NyAxNi43LDlMMTMuNSwxMC4zMkwxMy4yMywxMC40M0MxMi42NywxMCAxMS45MSw5Ljg4IDExLjI1LDEwLjE1QzEwLjIzLDEwLjU2IDkuNzMsMTEuNzMgMTAuMTUsMTIuNzVDMTAuNTYsMTMuNzcgMTEuNzMsMTQuMjcgMTIuNzUsMTMuODVDMTMuNDEsMTMuNTkgMTMuODgsMTMgMTQsMTIuMjhMMTQuMjMsMTIuMThMMTcuNDUsMTAuODhMMTcuNDcsMTAuODdDMTgsMTAuNjYgMTguMjMsMTAuMDggMTguMDMsOS41NkMxNy44Nyw5LjE4IDE3LjUsOC45MyAxNy4wOSw4Ljk0TTcsOUExLDEgMCAwLDAgNiwxMEExLDEgMCAwLDAgNywxMUExLDEgMCAwLDAgOCwxMEExLDEgMCAwLDAgNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdWdlTG93ID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjQgNSwxNi41IDYuNywxOEM4LjEsMTYuNyAxMCwxNiAxMiwxNkMxNCwxNiAxNS44LDE2LjcgMTcuMywxOEMxOSwxNi41IDIwLDE0LjQgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTAsNS44OUMxMC4zOCw1LjkgMTAuNzQsNi4xNSAxMC45LDYuNTRMMTIuMTksOS43N0wxMi4yOSwxMEMxMywxMC4xMyAxMy41OSwxMC42IDEzLjg2LDExLjI2QzE0LjI3LDEyLjI5IDEzLjc3LDEzLjQ1IDEyLjc0LDEzLjg2QzExLjcxLDE0LjI3IDEwLjU1LDEzLjc3IDEwLjE0LDEyLjc0QzkuODgsMTIuMDggMTAsMTEuMzIgMTAuNDMsMTAuNzZMMTAuMzMsMTAuNUw5LjA0LDcuMjlMOS4wMyw3LjI2QzguODMsNi43NSA5LjA4LDYuMTcgOS41OSw1Ljk2QzkuNzIsNS45MSA5Ljg1LDUuODkgMTAsNS44OVY1Ljg5TTE0LDZBMSwxIDAgMCwxIDE1LDdBMSwxIDAgMCwxIDE0LDhBMSwxIDAgMCwxIDEzLDdBMSwxIDAgMCwxIDE0LDZNMTcsOUExLDEgMCAwLDEgMTgsMTBBMSwxIDAgMCwxIDE3LDExQTEsMSAwIDAsMSAxNiwxMEExLDEgMCAwLDEgMTcsOU03LDlBMSwxIDAgMCwxIDgsMTBBMSwxIDAgMCwxIDcsMTFBMSwxIDAgMCwxIDYsMTBBMSwxIDAgMCwxIDcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXZlbCA9IFwiTTIuMywyMC4yOEwxMS45LDEwLjY4TDEwLjUsOS4yNkw5Ljc4LDkuOTdDOS4zOSwxMC4zNiA4Ljc2LDEwLjM2IDguMzcsOS45N0w3LjY2LDkuMjZDNy4yNyw4Ljg3IDcuMjcsOC4yNCA3LjY2LDcuODVMMTMuMzIsMi4xOUMxMy43MSwxLjggMTQuMzQsMS44IDE0LjczLDIuMTlMMTUuNDQsMi45QzE1LjgzLDMuMjkgMTUuODMsMy45MiAxNS40NCw0LjMxTDE0LjczLDVMMTYuMTUsNi40M0MxNi41NCw2LjA0IDE3LjE3LDYuMDQgMTcuNTYsNi40M0MxNy45NSw2LjgyIDE3Ljk1LDcuNDYgMTcuNTYsNy44NUwxOC45Nyw5LjI2TDE5LjY4LDguNTVDMjAuMDcsOC4xNiAyMC43MSw4LjE2IDIxLjEsOC41NUwyMS44LDkuMjZDMjIuMTksOS42NSAyMi4xOSwxMC4yOSAyMS44LDEwLjY4TDE2LjE1LDE2LjMzQzE1Ljc2LDE2LjcyIDE1LjEyLDE2LjcyIDE0LjczLDE2LjMzTDE0LjAzLDE1LjYzQzEzLjYzLDE1LjI0IDEzLjYzLDE0LjYgMTQuMDMsMTQuMjFMMTQuNzMsMTMuNUwxMy4zMiwxMi4wOUwzLjcxLDIxLjdDMy4zMiwyMi4wOSAyLjY5LDIyLjA5IDIuMywyMS43QzEuOTEsMjEuMzEgMS45MSwyMC42NyAyLjMsMjAuMjhNMjAsMTlBMiwyIDAgMCwxIDIyLDIxVjIySDEyVjIxQTIsMiAwIDAsMSAxNCwxOUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJGZW1hbGUgPSBcIk0xMiw0QTYsNiAwIDAsMSAxOCwxMEMxOCwxMi45NyAxNS44NCwxNS40NCAxMywxNS45MlYxOEgxNVYyMEgxM1YyMkgxMVYyMEg5VjE4SDExVjE1LjkyQzguMTYsMTUuNDQgNiwxMi45NyA2LDEwQTYsNiAwIDAsMSAxMiw0TTEyLDZBNCw0IDAgMCwwIDgsMTBBNCw0IDAgMCwwIDEyLDE0QTQsNCAwIDAsMCAxNiwxMEE0LDQgMCAwLDAgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJNYWxlID0gXCJNOSw5QzEwLjI5LDkgMTEuNSw5LjQxIDEyLjQ3LDEwLjExTDE3LjU4LDVIMTNWM0gyMVYxMUgxOVY2LjQxTDEzLjg5LDExLjVDMTQuNTksMTIuNSAxNSwxMy43IDE1LDE1QTYsNiAwIDAsMSA5LDIxQTYsNiAwIDAsMSAzLDE1QTYsNiAwIDAsMSA5LDlNOSwxMUE0LDQgMCAwLDAgNSwxNUE0LDQgMCAwLDAgOSwxOUE0LDQgMCAwLDAgMTMsMTVBNCw0IDAgMCwwIDksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VuZGVyTWFsZUZlbWFsZSA9IFwiTTE3LjU4LDRIMTRWMkgyMVY5SDE5VjUuNDFMMTUuMTcsOS4yNEMxNS42OSwxMC4wMyAxNiwxMSAxNiwxMkMxNiwxNC40MiAxNC4yOCwxNi40NCAxMiwxNi45VjE5SDE0VjIxSDEyVjIzSDEwVjIxSDhWMTlIMTBWMTYuOUM3LjcyLDE2LjQ0IDYsMTQuNDIgNiwxMkE1LDUgMCAwLDEgMTEsN0MxMiw3IDEyLjk2LDcuMyAxMy43NSw3LjgzTDE3LjU4LDRNMTEsOUEzLDMgMCAwLDAgOCwxMkEzLDMgMCAwLDAgMTEsMTVBMywzIDAgMCwwIDE0LDEyQTMsMyAwIDAsMCAxMSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlbmRlck1hbGVGZW1hbGVWYXJpYW50ID0gXCJNNyAzQTUgNSAwIDAgMCA5IDdBNSA1IDAgMCAwIDcgMTFBNSA1IDAgMCAwIDExIDE1LjlWMThIOVYyMEgxMVYyMkgxM1YyMEgxNVYxOEgxM1YxNS45QTUgNSAwIDAgMCAxNyAxMUE1IDUgMCAwIDAgMTUgN0E1IDUgMCAwIDAgMTcgM0gxNUEzIDMgMCAwIDEgMTIgNkEzIDMgMCAwIDEgOSAzTTEyIDhBMyAzIDAgMCAxIDE1IDExQTMgMyAwIDAgMSAxMiAxNEEzIDMgMCAwIDEgOSAxMUEzIDMgMCAwIDEgMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJOb25CaW5hcnkgPSBcIk0xMyAzSDExVjUuMjdMOS4wNCA0LjEzTDguMDQgNS44N0wxMCA3TDguMDQgOC4xM0w5LjA0IDkuODdMMTEgOC43M1YxMi4xQzguNzIgMTIuNTYgNyAxNC41OCA3IDE3QzcgMTkuNzYgOS4yNCAyMiAxMiAyMlMxNyAxOS43NiAxNyAxN0MxNyAxNC41OCAxNS4yOCAxMi41NiAxMyAxMi4xVjguNzNMMTQuOTYgOS44N0wxNS45NiA4LjEzTDE0IDdMMTUuOTYgNS44N0wxNC45NiA0LjEzTDEzIDUuMjdWM00xMiAyMEMxMC4zNSAyMCA5IDE4LjY1IDkgMTdTMTAuMzUgMTQgMTIgMTQgMTUgMTUuMzUgMTUgMTcgMTMuNjUgMjAgMTIgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VuZGVyVHJhbnNnZW5kZXIgPSBcIk0xOS41OCwzSDE1VjFIMjNWOUgyMVY0LjQxTDE2LjE3LDkuMjRDMTYuNjksMTAuMDMgMTcsMTEgMTcsMTJDMTcsMTQuNDIgMTUuMjgsMTYuNDQgMTMsMTYuOVYxOUgxNVYyMUgxM1YyM0gxMVYyMUg5VjE5SDExVjE2LjlDOC43MiwxNi40NCA3LDE0LjQyIDcsMTJDNywxMSA3LjMsMTAuMDQgNy44Miw5LjI2TDYuNjQsOC4wN0w1LjI0LDkuNDZMMy44Myw4LjA0TDUuMjMsNi42NUwzLDQuNDJWOEgxVjFIOFYzSDQuNDFMNi42NCw1LjI0TDguMDgsMy44MUw5LjUsNS4yM0w4LjA2LDYuNjZMOS4yMyw3Ljg0QzEwLDcuMzEgMTEsNyAxMiw3QzEzLDcgMTMuOTYsNy4zIDE0Ljc1LDcuODNMMTkuNTgsM00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VudG9vID0gXCJNMTAuMjgsMkM5LjkzLDIgOS41NywyLjAzIDkuMjMsMi4xQzUuNjEsMi43NiAzLjA2LDUuODkgMi44NSw3Ljk2QzIuNzQsOC45NyAzLjI5LDkuNzMgMy41OSwxMC4wNkM0LjQsMTAuOTcgNi4wMywxMS42NiA3LjA3LDEyLjIzQzUuNTYsMTMuNSA0Ljg3LDE0LjE0IDQuMTksMTQuODZDMy4xNywxNS45MyAyLjQ1LDE3LjEgMi40NSwxNy45NUMyLjQ1LDE4LjIyIDIuNCwxOS4wOSAyLjc2LDE5Ljc3QzIuODksMjAuMDMgMy4yNywyMC44OSA0LjQxLDIxLjUzQzUuMTQsMjEuOTQgNi4xNywyMi4wOSA3LjE5LDIxLjk1QzEwLjMzLDIxLjUgMTQuNTQsMTguODMgMTcuNTUsMTYuMzVDMTkuNDYsMTQuNzcgMjAuODYsMTMuMjMgMjEuMjYsMTIuNUMyMS41OSwxMS44NyAyMS42MywxMC43OCAyMS40NCwxMC4wOUMyMC45LDguMTQgMTYuNTMsNC4xNSAxMi45NiwyLjU1QzEyLjE0LDIuMTggMTEuMiwyIDEwLjI4LDJNMTEuMzQsNC45MUMxMS41OSw0LjkxIDExLjgxLDQuOTQgMTIsNUMxMy4xNSw1LjMgMTUuMDgsNi42OCAxNC45MSw3Ljk0QzE0LjY4LDkuNiAxMy4yMywxMC4yNyAxMS41NiwxMC4wM0MxMC41OCw5LjkgOC42Myw4LjggOC43OCw2Ljg5QzguODksNS40IDEwLjMsNC45IDExLjM0LDQuOTFNMTEuMzIsNi42NUMxMS4wNSw2LjY1IDEwLjg0LDYuNzEgMTAuNzQsNi44N0MxMC4yNyw3LjU5IDEwLjUsOC4wOSAxMC45Miw4LjQyQzExLjA3LDguMDQgMTIuNzEsOC40NSAxMi43NSw4Ljc5QzE0LjE3LDcuNzIgMTIuMzYsNi42NiAxMS4zMiw2LjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmUgPSBcIk00LjU5LDYuODlDNS4yOSw2LjE4IDYsNS41NCA2LjMsNS42N0M2LjgsNS44NyA2LjMsNi43IDYsNy4xOUM1Ljc1LDcuNjEgMy4xNCwxMS4wOCAzLjE0LDEzLjVDMy4xNCwxNC43OCAzLjYyLDE1Ljg0IDQuNSwxNi41QzUuMjMsMTcuMDQgNi4yMiwxNy4yMSA3LjEyLDE2Ljk0QzguMTksMTYuNjMgOS4wNywxNS41NCAxMC4xOCwxNC4xN0MxMS4zOSwxMi42OCAxMywxMC43MyAxNC4yNiwxMC43M0MxNS44OSwxMC43MyAxNS45MSwxMS43NCAxNiwxMi41QzEyLjI0LDEzLjE2IDEwLjY0LDE2LjE5IDEwLjY0LDE3Ljg5QzEwLjY0LDE5LjU5IDEyLjA4LDIxIDEzLjg1LDIxQzE1LjUsMjEgMTguMTQsMTkuNjUgMTguNTQsMTQuODhIMjFWMTIuMzhIMTguNTNDMTguMzgsMTAuNzMgMTcuNDQsOC4xOCAxNC41LDguMThDMTIuMjUsOC4xOCAxMC4zMiwxMC4wOSA5LjU2LDExQzksMTEuNzUgNy41LDEzLjUgNy4yNywxMy43NEM3LDE0LjA0IDYuNTksMTQuNTggNi4xNiwxNC41OEM1LjcxLDE0LjU4IDUuNDQsMTMuNzUgNS44LDEyLjY2QzYuMTUsMTEuNTcgNy4yLDkuOCA3LjY1LDkuMTRDOC40Myw4IDguOTUsNy4yMiA4Ljk1LDUuODZDOC45NSwzLjY5IDcuMzEsMyA2LjQ0LDNDNS4xMiwzIDMuOTcsNCAzLjcyLDQuMjVDMy4zNiw0LjYxIDMuMDYsNC45MSAyLjg0LDUuMThMNC41OSw2Ljg5TTEzLjg4LDE4LjU1QzEzLjU3LDE4LjU1IDEzLjE0LDE4LjI5IDEzLjE0LDE3LjgzQzEzLjE0LDE3LjIzIDEzLjg3LDE1LjYzIDE2LDE1LjA3QzE1LjcxLDE3Ljc2IDE0LjU4LDE4LjU1IDEzLjg4LDE4LjU1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVEb3VibGVUYXAgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0xMSw1QTQsNCAwIDAsMSAxNSw5QzE1LDEwLjUgMTQuMiwxMS43NyAxMywxMi40NlYxMS4yNEMxMy42MSwxMC42OSAxNCw5Ljg5IDE0LDlBMywzIDAgMCwwIDExLDZBMywzIDAgMCwwIDgsOUM4LDkuODkgOC4zOSwxMC42OSA5LDExLjI0VjEyLjQ2QzcuOCwxMS43NyA3LDEwLjUgNyw5QTQsNCAwIDAsMSAxMSw1TTExLDNBNiw2IDAgMCwxIDE3LDlDMTcsMTAuNyAxNi4yOSwxMi4yMyAxNS4xNiwxMy4zM0wxNC4xNiwxMi44OEMxNS4yOCwxMS45NiAxNiwxMC41NiAxNiw5QTUsNSAwIDAsMCAxMSw0QTUsNSAwIDAsMCA2LDlDNiwxMS4wNSA3LjIzLDEyLjgxIDksMTMuNThWMTQuNjZDNi42NywxMy44MyA1LDExLjYxIDUsOUE2LDYgMCAwLDEgMTEsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlUGluY2ggPSBcIk0xMyw5QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxNSw5VjEzLjQ3TDE2LjIxLDEzLjZMMjEuMTUsMTUuOEMyMS42NywxNi4wNCAyMiwxNi41NiAyMiwxNy4xNFYyMS41QzIxLjk3LDIyLjMyIDIxLjMyLDIyLjk3IDIwLjUsMjNIMTRDMTMuNjIsMjMgMTMuMjYsMjIuODUgMTMsMjIuNTdMOC4xLDE4LjM3TDguODQsMTcuNkM5LjAzLDE3LjM5IDkuMywxNy4yOCA5LjU4LDE3LjI4SDkuOEwxMywxOVY5TTE0LDVDMTUuNDIsNSAxNi43NCw1Ljc2IDE3LjQ1LDdDMTguNTYsOC45IDE3LjkxLDExLjM1IDE2LDEyLjQ2VjExLjIzQzE2LjY0LDEwLjY3IDE3LDkuODUgMTcsOUEzLDMgMCAwLDAgMTQsNkEzLDMgMCAwLDAgMTEsOUMxMSw5Ljg1IDExLjM2LDEwLjY3IDEyLDExLjIzVjEyLjQ2QzEwLjc3LDExLjc1IDEwLDEwLjQzIDEwLDlBNCw0IDAgMCwxIDE0LDVNNCw5TDcsMTJINVYxNUgzVjEySDFMNCw5TTQsN0wxLDRIM1YxSDVWNEg3TDQsN005LDE0QzkuNzMsMTQgMTAuNDEsMTQuMTkgMTEsMTQuNTRWMTUuNzZDMTAuNDcsMTUuMjkgOS43NywxNSA5LDE1QTMsMyAwIDAsMCA2LDE4QzYsMTkgNi41LDE5Ljg3IDcuMjIsMjAuNDJMOS4zMSwyMkg5QTQsNCAwIDAsMSA1LDE4QTQsNCAwIDAsMSA5LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTcHJlYWQgPSBcIk00LDFMNyw0SDVWN0gzVjRIMUw0LDFNNCwxNUwxLDEySDNWOUg1VjEySDdMNCwxNU0xMyw5QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxNSw5VjEzLjQ3TDE2LjIxLDEzLjZMMjEuMTUsMTUuOEMyMS42NywxNi4wNCAyMiwxNi41NiAyMiwxNy4xNFYyMS41QzIxLjk3LDIyLjMyIDIxLjMyLDIyLjk3IDIwLjUsMjNIMTRDMTMuNjIsMjMgMTMuMjYsMjIuODUgMTMsMjIuNTdMOC4xLDE4LjM3TDguODQsMTcuNkM5LjAzLDE3LjM5IDkuMywxNy4yOCA5LjU4LDE3LjI4SDkuOEwxMywxOVY5TTE0LDVDMTUuNDIsNSAxNi43NCw1Ljc2IDE3LjQ1LDdDMTguNTYsOC45IDE3LjkxLDExLjM1IDE2LDEyLjQ2VjExLjIzQzE2LjY0LDEwLjY3IDE3LDkuODUgMTcsOUEzLDMgMCAwLDAgMTQsNkEzLDMgMCAwLDAgMTEsOUMxMSw5Ljg1IDExLjM2LDEwLjY3IDEyLDExLjIzVjEyLjQ2QzEwLjc3LDExLjc1IDEwLDEwLjQzIDEwLDlBNCw0IDAgMCwxIDE0LDVNOSwxNEM5LjczLDE0IDEwLjQxLDE0LjE5IDExLDE0LjU0VjE1Ljc2QzEwLjQ3LDE1LjI5IDkuNzcsMTUgOSwxNUEzLDMgMCAwLDAgNiwxOEM2LDE5IDYuNSwxOS44NyA3LjIyLDIwLjQyTDkuMzEsMjJIOUE0LDQgMCAwLDEgNSwxOEE0LDQgMCAwLDEgOSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlU3dpcGUgPSBcIk0yMC4xMSwzLjg5TDIyLDJWN0gxN0wxOS4wOCw0LjkyQzE4LjU1LDQuMjMgMTcuNjQsMy42NiAxNi4zNiwzLjE5QzE1LjA4LDIuNzIgMTMuNjMsMi41IDEyLDIuNUMxMC4zOCwyLjUgOC45MiwyLjcyIDcuNjQsMy4xOUM2LjM2LDMuNjYgNS40NSw0LjIzIDQuOTIsNC45Mkw3LDdIMlYyTDMuODksMy44OUM0LjY0LDMgNS43NCwyLjMxIDcuMiwxLjc4QzguNjUsMS4yNSAxMC4yNSwxIDEyLDFDMTMuNzUsMSAxNS4zNSwxLjI1IDE2LjgsMS43OEMxOC4yNiwyLjMxIDE5LjM2LDMgMjAuMTEsMy44OU0xOS43MywxNi4yN1YxNi40NUwxOSwyMS43QzE4LjkyLDIyLjA4IDE4Ljc2LDIyLjM5IDE4LjUsMjIuNjRDMTguMjMsMjIuODkgMTcuOTEsMjMgMTcuNTMsMjNIMTAuNzNDMTAuMzYsMjMgMTAsMjIuODYgOS43LDIyLjU1TDQuNzMsMTcuNjNMNS41MywxNi44M0M1Ljc1LDE2LjYxIDYsMTYuNSA2LjMzLDE2LjVINi41NkwxMCwxNy4yNVY2LjVDMTAsNi4xMSAxMC4xMyw1Ljc2IDEwLjQzLDUuNDZDMTAuNzMsNS4xNiAxMS4wOCw1IDExLjUsNUMxMS44OSw1IDEyLjI0LDUuMTYgMTIuNTQsNS40NkMxMi44NCw1Ljc2IDEzLDYuMTEgMTMsNi41VjEyLjVIMTMuNzhDMTMuODgsMTIuNSAxNC4wNSwxMi41NSAxNC4zLDEyLjYxTDE4Ljg0LDE0Ljg2QzE5LjQ0LDE1LjE0IDE5LjczLDE1LjYxIDE5LjczLDE2LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZURvd24gPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0xLDlMNCwxMkw3LDlINVYzSDNWOUgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZUhvcml6b250YWwgPSBcIk02LDFMMyw0TDYsN1Y1SDlWN0wxMiw0TDksMVYzSDZWMU0xMSw4QTEsMSAwIDAsMCAxMCw5VjE5TDYuOCwxNy4yOEg2LjU4QzYuMywxNy4yOCA2LjAzLDE3LjM5IDUuODQsMTcuNkw1LjEsMTguMzdMMTAsMjIuNTdDMTAuMjYsMjIuODUgMTAuNjIsMjMgMTEsMjNIMTcuNUExLjUsMS41IDAgMCwwIDE5LDIxLjVWMTcuMTRDMTksMTYuNTYgMTguNjgsMTYuMDMgMTguMTUsMTUuNzlMMTMuMjEsMTMuNkwxMiwxMy40N1Y5QTEsMSAwIDAsMCAxMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZUxlZnQgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0zLDRMNiw3VjVIMTJWM0g2VjFMMyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZVJpZ2h0ID0gXCJNMTAsOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVYxMy40N0wxMy4yMSwxMy42TDE4LjE1LDE1Ljc5QzE4LjY4LDE2LjAzIDE5LDE2LjU2IDE5LDE3LjE0VjIxLjVDMTguOTcsMjIuMzIgMTguMzIsMjIuOTcgMTcuNSwyM0gxMUMxMC42MiwyMyAxMC4yNiwyMi44NSAxMCwyMi41N0w1LjEsMTguMzdMNS44NCwxNy42QzYuMDMsMTcuMzkgNi4zLDE3LjI4IDYuNTgsMTcuMjhINi44TDEwLDE5VjlNMTIsNEw5LDFWM0gzVjVIOVY3TDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVN3aXBlVXAgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU03LDZMNCwzTDEsNkgzVjEySDVWNkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZVZlcnRpY2FsID0gXCJNNCwzTDEsNkgzVjlIMUw0LDEyTDcsOUg1VjZIN0w0LDNNMTEsOEExLDEgMCAwLDAgMTAsOVYxOUw2LjgsMTcuMjhINi41OEM2LjMsMTcuMjggNi4wMywxNy4zOSA1Ljg0LDE3LjZMNS4xLDE4LjM3TDEwLDIyLjU3QzEwLjI2LDIyLjg1IDEwLjYyLDIzIDExLDIzSDE3LjVBMS41LDEuNSAwIDAsMCAxOSwyMS41VjE3LjE0QzE5LDE2LjU2IDE4LjY4LDE2LjAzIDE4LjE1LDE1Ljc5TDEzLjIxLDEzLjZMMTIsMTMuNDdWOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVGFwID0gXCJNMTAsOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVYxMy40N0wxMy4yMSwxMy42TDE4LjE1LDE1Ljc5QzE4LjY4LDE2LjAzIDE5LDE2LjU2IDE5LDE3LjE0VjIxLjVDMTguOTcsMjIuMzIgMTguMzIsMjIuOTcgMTcuNSwyM0gxMUMxMC42MiwyMyAxMC4yNiwyMi44NSAxMCwyMi41N0w1LjEsMTguMzdMNS44NCwxNy42QzYuMDMsMTcuMzkgNi4zLDE3LjI4IDYuNTgsMTcuMjhINi44TDEwLDE5VjlNMTEsNUE0LDQgMCAwLDEgMTUsOUMxNSwxMC41IDE0LjIsMTEuNzcgMTMsMTIuNDZWMTEuMjRDMTMuNjEsMTAuNjkgMTQsOS44OSAxNCw5QTMsMyAwIDAsMCAxMSw2QTMsMyAwIDAsMCA4LDlDOCw5Ljg5IDguMzksMTAuNjkgOSwxMS4yNFYxMi40NkM3LjgsMTEuNzcgNywxMC41IDcsOUE0LDQgMCAwLDEgMTEsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVGFwQm94ID0gXCJNMjAgMkg0QzIuODkgMiAyIDIuODkgMiA0VjIwQzIgMjEuMTEgMi44OSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjRDMjIgMi44OSAyMS4xMSAyIDIwIDJNMTEgNEMxMy4yMSA0IDE1IDUuNzkgMTUgOEMxNSA5LjUgMTQuMiAxMC43NyAxMyAxMS40NlYxMC4yNEMxMy42MSA5LjY5IDE0IDguODkgMTQgOEMxNCA2LjM0IDEyLjY2IDUgMTEgNVM4IDYuMzQgOCA4QzggOC44OSA4LjM5IDkuNjkgOSAxMC4yNFYxMS40NkM3LjggMTAuNzcgNyA5LjUgNyA4QzcgNS43OSA4Ljc5IDQgMTEgNE0xOCAxOC41QzE3Ljk3IDE5LjMyIDE3LjMyIDE5Ljk3IDE2LjUgMjBIMTFDMTAuNjIgMjAgMTAuMjYgMTkuODUgMTAgMTkuNTdMNiAxNS4zN0w2Ljc0IDE0LjZDNi45MyAxNC4zOSA3LjIgMTQuMjggNy41IDE0LjI4SDcuN0wxMCAxNlY4QzEwIDcuNDUgMTAuNDUgNyAxMSA3UzEyIDcuNDUgMTIgOFYxMi40N0wxMy4yMSAxMi42TDE3LjE1IDE0Ljc5QzE3LjY4IDE1LjAzIDE4IDE1LjU2IDE4IDE2LjE0VjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVRhcEJ1dHRvbiA9IFwiTTEzIDVDMTUuMjEgNSAxNyA2Ljc5IDE3IDlDMTcgMTAuNSAxNi4yIDExLjc3IDE1IDEyLjQ2VjExLjI0QzE1LjYxIDEwLjY5IDE2IDkuODkgMTYgOUMxNiA3LjM0IDE0LjY2IDYgMTMgNlMxMCA3LjM0IDEwIDlDMTAgOS44OSAxMC4zOSAxMC42OSAxMSAxMS4yNFYxMi40NkM5LjggMTEuNzcgOSAxMC41IDkgOUM5IDYuNzkgMTAuNzkgNSAxMyA1TTIwIDIwLjVDMTkuOTcgMjEuMzIgMTkuMzIgMjEuOTcgMTguNSAyMkgxM0MxMi42MiAyMiAxMi4yNiAyMS44NSAxMiAyMS41N0w4IDE3LjM3TDguNzQgMTYuNkM4LjkzIDE2LjM5IDkuMiAxNi4yOCA5LjUgMTYuMjhIOS43TDEyIDE4VjlDMTIgOC40NSAxMi40NSA4IDEzIDhTMTQgOC40NSAxNCA5VjEzLjQ3TDE1LjIxIDEzLjZMMTkuMTUgMTUuNzlDMTkuNjggMTYuMDMgMjAgMTYuNTYgMjAgMTcuMTRWMjAuNU0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjEyQzIgMTMuMTEgMi45IDE0IDQgMTRIOFYxMkw0IDEyTDQgNEgyMEwyMCAxMkgxOFYxNEgyMFYxMy45NkwyMC4wNCAxNEMyMS4xMyAxNCAyMiAxMy4wOSAyMiAxMlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVRhcEhvbGQgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU05LDEyLjQ0VjlBMiwyIDAgMCwxIDExLDdBMiwyIDAgMCwxIDEzLDlWMTIuNDRDMTQuMTksMTEuNzUgMTUsMTAuNDcgMTUsOUE0LDQgMCAwLDAgMTEsNUE0LDQgMCAwLDAgNyw5QzcsMTAuNDcgNy44MSwxMS43NSA5LDEyLjQ0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVUd29Eb3VibGVUYXAgPSBcIk0xOSwxNS4xNFYyMS41QzE4Ljk3LDIyLjMyIDE4LjMyLDIyLjk3IDE3LjUsMjNIMTFDMTAuNjIsMjMgMTAuMjYsMjIuODUgMTAsMjIuNTdMNS4xLDE4LjM3TDUuODQsMTcuNkM2LjAzLDE3LjM5IDYuMywxNy4yOCA2LjU4LDE3LjI4SDYuOEwxMCwxOVY5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjdBMSwxIDAgMCwxIDEzLDZBMSwxIDAgMCwxIDE0LDdWMTJMMTguMTUsMTMuODRDMTguNjYsMTQuMDcgMTksMTQuNTggMTksMTUuMTRNMTMsM0E0LDQgMCAwLDEgMTcsN0MxNyw4LjUgMTYuMiw5Ljc3IDE1LDEwLjQ2VjkuMjRDMTUuNjEsOC42OSAxNiw3Ljg5IDE2LDdBMywzIDAgMCwwIDEzLDRDMTEuNjUsNCAxMC41LDQuOSAxMC4xMyw2LjEzQzguOSw2LjUgOCw3LjY1IDgsOUM4LDkuODkgOC4zOSwxMC42OSA5LDExLjI0VjEyLjQ2QzcuOCwxMS43NyA3LDEwLjUgNyw5QzcsNy4zOCA3Ljk3LDYgOS4zNSw1LjM1QzEwLDMuOTcgMTEuMzgsMyAxMywzTTEzLDFBNiw2IDAgMCwxIDE5LDdDMTksOS4wNiAxNy45NiwxMC44OCAxNi4zOCwxMS45NkwxNS4yNiwxMS40NkMxNi44OSwxMC42NCAxOCw4Ljk1IDE4LDdBNSw1IDAgMCwwIDEzLDJDMTEuMTEsMiA5LjQ2LDMuMDUgOC42MSw0LjYxQzcuMDUsNS40NiA2LDcuMTEgNiw5QzYsMTEuMDUgNy4yMywxMi44MSA5LDEzLjU4VjE0LjY2QzYuNjcsMTMuODMgNSwxMS42MSA1LDlDNSw2LjgzIDYuMTUsNC45MyA3Ljg4LDMuODhDOC45MywyLjE1IDEwLjgzLDEgMTMsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVHdvVGFwID0gXCJNMTksMTUuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVY3QTEsMSAwIDAsMSAxMyw2QTEsMSAwIDAsMSAxNCw3VjEyTDE4LjE1LDEzLjg0QzE4LjY2LDE0LjA3IDE5LDE0LjU4IDE5LDE1LjE0TTE1LDEwLjQ1VjkuMjRMMTUsOS4yM0MxNS4yMyw5LjAzIDE1LjQyLDguNzkgMTUuNTcsOC41NEMxNS44NCw4LjA5IDE2LDcuNTYgMTYsN0EzLDMgMCAwLDAgMTMsNEMxMi4yMSw0IDExLjUsNC4zMSAxMC45NSw0LjgxTDEwLjgxLDQuOTVDMTAuNjgsNS4wOSAxMC41Niw1LjI0IDEwLjQ2LDUuNEMxMC4zNiw1LjU2IDEwLjI3LDUuNzQgMTAuMiw1LjkyQzEwLjE3LDYgMTAuMTUsNi4wNiAxMC4xMyw2LjEzQzguOSw2LjUgOCw3LjY1IDgsOUM4LDkuNyA4LjI0LDEwLjM0IDguNjQsMTAuODVDOC43NCwxMSA4Ljg3LDExLjExIDksMTEuMjNWMTEuMjRMOSwxMi40NlYxMi40NkM3LjgsMTEuNzcgNywxMC41IDcsOUM3LDcuMzggNy45Nyw2IDkuMzUsNS4zNUMxMCwzLjk3IDExLjM4LDMgMTMsM0E0LDQgMCAwLDEgMTcsN0MxNyw4LjUgMTYuMiw5Ljc3IDE1LDEwLjQ2VjEwLjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdob3N0ID0gXCJNMTIsMkE5LDkgMCAwLDAgMywxMVYyMkw2LDE5TDksMjJMMTIsMTlMMTUsMjJMMTgsMTlMMjEsMjJWMTFBOSw5IDAgMCwwIDEyLDJNOSw4QTIsMiAwIDAsMSAxMSwxMEEyLDIgMCAwLDEgOSwxMkEyLDIgMCAwLDEgNywxMEEyLDIgMCAwLDEgOSw4TTE1LDhBMiwyIDAgMCwxIDE3LDEwQTIsMiAwIDAsMSAxNSwxMkEyLDIgMCAwLDEgMTMsMTBBMiwyIDAgMCwxIDE1LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2hvc3RPZmYgPSBcIk0yLDMuMjdMMy4yOCwyTDIyLDIwLjcyTDIwLjczLDIyTDE3Ljg3LDE5LjEzTDE1LDIyTDEyLDE5TDksMjJMNiwxOUwzLDIyVjExQzMsOS4wOSAzLjU5LDcuMzMgNC42LDUuODdMMiwzLjI3TTEyLDJBOSw5IDAgMCwxIDIxLDExVjE3LjE4TDE1LjcsMTEuODhDMTYuNDYsMTEuNTkgMTcsMTAuODYgMTcsMTBBMiwyIDAgMCwwIDE1LDhDMTQuMTQsOCAxMy40MSw4LjU0IDEzLjEzLDkuM0w3LjIsMy4zOEM4LjU5LDIuNSAxMC4yNCwyIDEyLDJNNywxMEEyLDIgMCAwLDAgOSwxMkM5LjUsMTIgOS45MywxMS44MyAxMC4yNywxMS41NEw3LjQ2LDguNzNDNy4xNyw5LjA3IDcsOS41IDcsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2hvc3RPZmZPdXRsaW5lID0gXCJNOC4yOSA1LjA5TDYuODQgMy42NEM4LjMgMi42MSAxMC4wOCAyIDEyIDJDMTYuOTcgMiAyMSA2LjAzIDIxIDExVjE3LjhMMTkgMTUuOFYxMUMxOSA3LjE0IDE1Ljg2IDQgMTIgNEMxMC42MyA0IDkuMzYgNC40IDguMjkgNS4wOU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNy41NiAxOS40NUwxNSAyMkwxMiAxOUw5IDIyTDYgMTlMMyAyMlYxMUMzIDkuMjYgMy41IDcuNjMgNC4zNiA2LjI1TDEuMTEgM0wyLjM5IDEuNzNMNi44OSA2LjIzTDguNjkgOC4wM0g4LjY5TDEwLjk3IDEwLjMxVjEwLjMxTDE3LjQxIDE2Ljc2TDE3LjQyIDE2Ljc2TDIxIDIwLjM0VjIwLjM1TDIyLjExIDIxLjQ2TTE2LjE0IDE4LjAzTDkuODkgMTEuNzhDOS42MiAxMS45MiA5LjMyIDEyIDkgMTJDNy45IDEyIDcgMTEuMTEgNyAxMEM3IDkuNjggNy4wOCA5LjM4IDcuMjIgOS4xMUw1LjgyIDcuNzFDNS4zIDguNjkgNSA5LjgxIDUgMTFWMTcuMTdMNiAxNi4xN0w3LjQxIDE3LjU5TDkgMTkuMTdMMTAuNTkgMTcuNTlMMTIgMTYuMTdMMTMuNDEgMTcuNTlMMTUgMTkuMTdMMTYuMTQgMTguMDNNMTUgOEMxMy45NiA4IDEzLjExIDguOCAxMyA5LjgyTDE1LjE4IDEyQzE2LjIgMTEuODkgMTcgMTEuMDQgMTcgMTBDMTcgOC45IDE2LjExIDggMTUgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHaG9zdE91dGxpbmUgPSBcIk0xMiAyQzcuMDMgMiAzIDYuMDMgMyAxMVYyMkw2IDE5TDkgMjJMMTIgMTlMMTUgMjJMMTggMTlMMjEgMjJWMTFDMjEgNi4wMyAxNi45NyAyIDEyIDJNMTkgMTcuMTdMMTggMTYuMTdMMTYuNTkgMTcuNTlMMTUgMTkuMTdMMTMuNDEgMTcuNTlMMTIgMTYuMTdMMTAuNTkgMTcuNTlMOSAxOS4xN0w3LjQxIDE3LjU5TDYgMTYuMTdMNSAxNy4xN1YxMUM1IDcuMTQgOC4xNCA0IDEyIDRTMTkgNy4xNCAxOSAxMVYxNy4xN00xMSAxMEMxMSAxMS4xMSAxMC4xMSAxMiA5IDEyUzcgMTEuMTEgNyAxMCA3LjkgOCA5IDggMTEgOC45IDExIDEwTTE3IDEwQzE3IDExLjExIDE2LjExIDEyIDE1IDEyUzEzIDExLjExIDEzIDEwIDEzLjkgOCAxNSA4IDE3IDguOSAxNyAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWYgPSBcIk0xMSw4SDEzVjE2SDExVjhNNy42Nyw4SDQuMzNDMy41Myw4IDMsOC42NyAzLDkuMzNWMTQuNjdDMywxNS4zMyAzLjUzLDE2IDQuMzMsMTZINy42N0M4LjQ3LDE2IDksMTUuMzMgOSwxNC42N1YxMkg3VjE0SDVWMTBIOVY5LjMzQzksOC42NyA4LjQ3LDggNy42Nyw4TTIxLDEwVjhIMTVWMTZIMTdWMTRIMTkuNVYxMkgxN1YxMEgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWZ0ID0gXCJNOS4wNiwxLjkzQzcuMTcsMS45MiA1LjMzLDMuNzQgNi4xNyw2SDNBMiwyIDAgMCwwIDEsOFYxMEExLDEgMCAwLDAgMiwxMUgxMVY4SDEzVjExSDIyQTEsMSAwIDAsMCAyMywxMFY4QTIsMiAwIDAsMCAyMSw2SDE3LjgzQzE5LDIuNzMgMTQuNiwwLjQyIDEyLjU3LDMuMjRMMTIsNEwxMS40MywzLjIyQzEwLjgsMi4zMyA5LjkzLDEuOTQgOS4wNiwxLjkzTTksNEM5Ljg5LDQgMTAuMzQsNS4wOCA5LjcxLDUuNzFDOS4wOCw2LjM0IDgsNS44OSA4LDVBMSwxIDAgMCwxIDksNE0xNSw0QzE1Ljg5LDQgMTYuMzQsNS4wOCAxNS43MSw1LjcxQzE1LjA4LDYuMzQgMTQsNS44OSAxNCw1QTEsMSAwIDAsMSAxNSw0TTIsMTJWMjBBMiwyIDAgMCwwIDQsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEySDEzVjIwSDExVjEySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE9mZiA9IFwiTTEuMTEgM0w0LjE0IDYuMDRIM0MxLjkgNi4wNCAxIDYuOTMgMSA4LjA0VjEwLjA0QzEgMTAuNTkgMS40NSAxMS4wNCAyIDExLjA0SDkuMTVMMTAuMTUgMTIuMDRIMlYyMC4wNEMyIDIxLjE0IDIuOSAyMi4wNCA0IDIyLjA0SDIwQzIwLjA1IDIyLjA0IDIwLjA5IDIyLjAzIDIwLjEzIDIyTDIxLjU2IDIzLjQ1TDIyLjgzIDIyLjE4TDIuMzkgMS43M0wxLjExIDNNMTEgMTIuODlMMTMgMTQuODlWMjAuMDRIMTFWMTIuODlNMjIgMTIuMDRWMTguOEwxNS4yNCAxMi4wNEgyMk0yMSA2LjA0SDE3LjgzQzE5IDIuNzcgMTQuNiAuNDU1IDEyLjU3IDMuMjhMMTIgNC4wNEwxMS40MyAzLjI2QzEwLjggMi4zNyA5LjkzIDIgOS4wNiAxLjk3QzguMDYgMS45NiA3LjA4IDIuNSA2LjUgMy4zTDguMDQgNC44NEM4LjEzIDQuMzggOC41IDQuMDQgOSA0LjA0QzkuODkgNC4wNCAxMC4zNCA1LjEyIDkuNzEgNS43NUM5LjU2IDUuODkgOS4zOSA2IDkuMjEgNkwxMS4yNCA4LjA0SDEzVjkuOEwxNC4yNCAxMS4wNEgyMkMyMi41NSAxMS4wNCAyMyAxMC41OSAyMyAxMC4wNFY4LjA0QzIzIDYuOTMgMjIuMTEgNi4wNCAyMSA2LjA0TTE1LjcxIDUuNzVDMTUuMDggNi4zOCAxNCA1LjkzIDE0IDUuMDRDMTQgNC41IDE0LjQ1IDQuMDQgMTUgNC4wNEMxNS44OSA0LjA0IDE2LjM0IDUuMTIgMTUuNzEgNS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWZ0T2ZmT3V0bGluZSA9IFwiTTIxIDZIMTcuODNDMTcuOTQgNS42OSAxOCA1LjM1IDE4IDVDMTggMy4zNCAxNi42NiAyIDE1IDJDMTQgMiAxMy4xMiAyLjUgMTIuNTcgMy4yNFYzLjIzTDEyIDRMMTEuNDMgMy4yM1YzLjI0QzEwLjg4IDIuNSAxMCAyIDkgMkM3Ljk3IDIgNy4wNiAyLjUgNi41IDMuMzJMOC4wMyA0LjgzQzguMTIgNC4zNiA4LjUgNCA5IDRDOS41NSA0IDEwIDQuNDUgMTAgNUMxMCA1LjUgOS42NCA1Ljg4IDkuMTcgNS45N0wxMyA5LjhWOEgyMVYxMEgxMy4yTDE1LjIgMTJIMjBWMTYuOEwyMiAxOC44VjEyQzIyLjU1IDEyIDIzIDExLjU1IDIzIDExVjhDMjMgNi45IDIyLjExIDYgMjEgNk0xNSA2QzE0LjQ1IDYgMTQgNS41NSAxNCA1UzE0LjQ1IDQgMTUgNCAxNiA0LjQ1IDE2IDUgMTUuNTUgNiAxNSA2TTEuMTEgM0w0LjExIDZIM0MxLjkgNiAxIDYuOSAxIDhWMTFDMSAxMS41NSAxLjQ1IDEyIDIgMTJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgyMEMyMC4wMyAyMiAyMC4wNyAyMiAyMC4xIDIyTDIxLjU2IDIzLjQ1TDIyLjgzIDIyLjE4TDIuMzkgMS43M0wxLjExIDNNMTMgMTQuODlMMTguMTEgMjBIMTNWMTQuODlNMTEgMTIuODlWMjBINFYxMkgxMC4xMUwxMSAxMi44OU04LjExIDEwSDNWOEg2LjExTDguMTEgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE9wZW4gPSBcIk0yMiAxMC45MkwxOS4yNiA5LjMzQzIxLjkgNy4wOCAxOS4yNSAyLjg4IDE2LjA4IDQuMzFMMTUuMjEgNC42OEwxNS4xIDMuNzJDMTUgMi42NCAxNC40NCAxLjg3IDEzLjcgMS40MkMxMi4wNiAuNDY3IDkuNTYgMS4xMiA5LjE2IDMuNUw2LjQxIDEuOTJDNS40NSAxLjM2IDQuMjMgMS42OSAzLjY4IDIuNjVMMi42OCA0LjM4QzIuNCA0Ljg2IDIuNTcgNS40NyAzLjA1IDUuNzVMMTAuODQgMTAuMjVMMTIuMzQgNy42NUwxNC4wNyA4LjY1TDEyLjU3IDExLjI1TDIwLjM2IDE1Ljc1QzIwLjg0IDE2IDIxLjQ2IDE1Ljg2IDIxLjczIDE1LjM4TDIyLjczIDEzLjY1QzIzLjI4IDEyLjY5IDIyLjk2IDExLjQ3IDIyIDEwLjkyTTEyLjM3IDVDMTEuNSA1LjI1IDEwLjggNC4zMiAxMS4yNCAzLjU1QzExLjUgMy4wNyAxMi4xMyAyLjkxIDEyLjYxIDMuMThDMTMuMzggMy42MyAxMy4yMyA0Ljc5IDEyLjM3IDVNMTcuNTYgOEMxNi43IDguMjUgMTYgNy4zMiAxNi40NCA2LjU1QzE2LjcxIDYuMDcgMTcuMzMgNS45MSAxNy44IDYuMThDMTguNTcgNi42MyAxOC40MiA3Ljc5IDE3LjU2IDhNMjAuODcgMTYuODhDMjEuMjggMTYuODggMjEuNjcgMTYuNzQgMjIgMTYuNVYyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTFIMTAuMTVMMTEgMTEuNVYyMEgxM1YxMi42NUwxOS44NyAxNi42MUMyMC4xNyAxNi43OSAyMC41IDE2Ljg4IDIwLjg3IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdpZnRPcGVuT3V0bGluZSA9IFwiTTIyIDEwLjg3TDE5LjI2IDkuMjhDMTkuNSA5LjA3IDE5LjczIDguOCAxOS45IDguNUMyMC43MyA3LjA3IDIwLjI0IDUuMjMgMTguOCA0LjRDMTcuOTQgMy45IDE2LjkzIDMuOSAxNi4wOCA0LjI2TDE2LjA5IDQuMjVMMTUuMjEgNC42NEwxNS4xIDMuNjhMMTUuMDkgMy42OUMxNSAyLjc4IDE0LjQ3IDEuOSAxMy42MSAxLjRDMTIuMTcgLjU3NSAxMC4zNCAxLjA3IDkuNSAyLjVDOS4zMyAyLjggOS4yMiAzLjEzIDkuMTYgMy40NUw2LjQxIDEuODdDNS40NSAxLjMyIDQuMjMgMS42NCAzLjY4IDIuNkwyLjE4IDUuMkMxLjkgNS42OCAyLjA3IDYuMjkgMi41NSA2LjU2TDQuMjggNy41Nkw4LjUgMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjE0Ljg3TDIyLjczIDEzLjZDMjMuMjggMTIuNjQgMjIuOTYgMTEuNDIgMjIgMTAuODdNMTYuNDQgNi41QzE2LjcxIDYgMTcuMzMgNS44NiAxNy44IDYuMTNDMTguMjggNi40MSAxOC40NSA3IDE4LjE3IDcuNUMxNy44OSA4IDE3LjI4IDguMTQgMTYuOCA3Ljg3QzE2LjMzIDcuNTkgMTYuMTYgNyAxNi40NCA2LjVNMTQuMDcgOC42TDIxIDEyLjZMMjAgMTQuMzNMMTMuMDcgMTAuMzNMMTQuMDcgOC42TTExIDIwSDRWMTJIMTFWMjBNMTEuMzQgOS4zM0w0LjQxIDUuMzNMNS40MSAzLjZMMTIuMzQgNy42TDExLjM0IDkuMzNNMTEuNjEgNC44N0MxMS4xMyA0LjU5IDEwLjk3IDQgMTEuMjQgMy41QzExLjUgMyAxMi4xMyAyLjg2IDEyLjYxIDMuMTNDMTMuMDkgMy40MSAxMy4yNSA0IDEyLjk3IDQuNUMxMi43IDUgMTIuMDkgNS4xNCAxMS42MSA0Ljg3TTEzIDIwVjEyLjZMMjAgMTYuNjRWMjBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE91dGxpbmUgPSBcIk0yMiwxMlYyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFYxMkExLDEgMCAwLDEgMSwxMVY4QTIsMiAwIDAsMSAzLDZINi4xN0M2LjA2LDUuNjkgNiw1LjM1IDYsNUEzLDMgMCAwLDEgOSwyQzEwLDIgMTAuODgsMi41IDExLjQzLDMuMjRWMy4yM0wxMiw0TDEyLjU3LDMuMjNWMy4yNEMxMy4xMiwyLjUgMTQsMiAxNSwyQTMsMyAwIDAsMSAxOCw1QzE4LDUuMzUgMTcuOTQsNS42OSAxNy44Myw2SDIxQTIsMiAwIDAsMSAyMyw4VjExQTEsMSAwIDAsMSAyMiwxMk00LDIwSDExVjEySDRWMjBNMjAsMjBWMTJIMTNWMjBIMjBNOSw0QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsNUExLDEgMCAwLDAgOSw0TTE1LDRBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE2LDVBMSwxIDAgMCwwIDE1LDRNMyw4VjEwSDExVjhIM00xMyw4VjEwSDIxVjhIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2l0ID0gXCJNMi42LDEwLjU5TDguMzgsNC44TDEwLjA3LDYuNUM5LjgzLDcuMzUgMTAuMjIsOC4yOCAxMSw4LjczVjE0LjI3QzEwLjQsMTQuNjEgMTAsMTUuMjYgMTAsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwxNkMxNCwxNS4yNiAxMy42LDE0LjYxIDEzLDE0LjI3VjkuNDFMMTUuMDcsMTEuNUMxNSwxMS42NSAxNSwxMS44MiAxNSwxMkEyLDIgMCAwLDAgMTcsMTRBMiwyIDAgMCwwIDE5LDEyQTIsMiAwIDAsMCAxNywxMEMxNi44MiwxMCAxNi42NSwxMCAxNi41LDEwLjA3TDEzLjkzLDcuNUMxNC4xOSw2LjU3IDEzLjcxLDUuNTUgMTIuNzgsNS4xNkMxMi4zNSw1IDExLjksNC45NiAxMS41LDUuMDdMOS44LDMuMzhMMTAuNTksMi42QzExLjM3LDEuODEgMTIuNjMsMS44MSAxMy40MSwyLjZMMjEuNCwxMC41OUMyMi4xOSwxMS4zNyAyMi4xOSwxMi42MyAyMS40LDEzLjQxTDEzLjQxLDIxLjRDMTIuNjMsMjIuMTkgMTEuMzcsMjIuMTkgMTAuNTksMjEuNEwyLjYsMTMuNDFDMS44MSwxMi42MyAxLjgxLDExLjM3IDIuNiwxMC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaXRodWIgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNi40MiA0Ljg3LDIwLjE3IDguODQsMjEuNUM5LjM0LDIxLjU4IDkuNSwyMS4yNyA5LjUsMjFDOS41LDIwLjc3IDkuNSwyMC4xNCA5LjUsMTkuMzFDNi43MywxOS45MSA2LjE0LDE3Ljk3IDYuMTQsMTcuOTdDNS42OCwxNi44MSA1LjAzLDE2LjUgNS4wMywxNi41QzQuMTIsMTUuODggNS4xLDE1LjkgNS4xLDE1LjlDNi4xLDE1Ljk3IDYuNjMsMTYuOTMgNi42MywxNi45M0M3LjUsMTguNDUgOC45NywxOCA5LjU0LDE3Ljc2QzkuNjMsMTcuMTEgOS44OSwxNi42NyAxMC4xNywxNi40MkM3Ljk1LDE2LjE3IDUuNjIsMTUuMzEgNS42MiwxMS41QzUuNjIsMTAuMzkgNiw5LjUgNi42NSw4Ljc5QzYuNTUsOC41NCA2LjIsNy41IDYuNzUsNi4xNUM2Ljc1LDYuMTUgNy41OSw1Ljg4IDkuNSw3LjE3QzEwLjI5LDYuOTUgMTEuMTUsNi44NCAxMiw2Ljg0QzEyLjg1LDYuODQgMTMuNzEsNi45NSAxNC41LDcuMTdDMTYuNDEsNS44OCAxNy4yNSw2LjE1IDE3LjI1LDYuMTVDMTcuOCw3LjUgMTcuNDUsOC41NCAxNy4zNSw4Ljc5QzE4LDkuNSAxOC4zOCwxMC4zOSAxOC4zOCwxMS41QzE4LjM4LDE1LjMyIDE2LjA0LDE2LjE2IDEzLjgxLDE2LjQxQzE0LjE3LDE2LjcyIDE0LjUsMTcuMzMgMTQuNSwxOC4yNkMxNC41LDE5LjYgMTQuNSwyMC42OCAxNC41LDIxQzE0LjUsMjEuMjcgMTQuNjYsMjEuNTkgMTUuMTcsMjEuNUMxOS4xNCwyMC4xNiAyMiwxNi40MiAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdpdGxhYiA9IFwiTTIxLjk0IDEzLjExTDIwLjg5IDkuODlDMjAuODkgOS44NiAyMC44OCA5LjgzIDIwLjg3IDkuOEwxOC43NiAzLjMyQzE4LjY1IDMgMTguMzMgMi43NSAxNy45NiAyLjc1QzE3LjYgMi43NSAxNy4yOCAzIDE3LjE3IDMuMzNMMTUuMTcgOS41SDguODRMNi44MyAzLjMzQzYuNzIgMyA2LjQgMi43NSA2LjA0IDIuNzVINi4wNEM1LjY3IDIuNzUgNS4zNSAzIDUuMjQgMy4zM0wzLjEzIDkuODJDMy4xMyA5LjgyIDMuMTMgOS44MyAzLjEzIDkuODNMMi4wNiAxMy4xMUMxLjkgMTMuNjEgMi4wNyAxNC4xNSAyLjUgMTQuNDVMMTEuNzIgMjEuMTZDMTEuODkgMjEuMjggMTIuMTEgMjEuMjggMTIuMjggMjEuMTVMMjEuNSAxNC40NUMyMS45MyAxNC4xNSAyMi4xIDEzLjYxIDIxLjk0IDEzLjExTTguMTUgMTAuNDVMMTAuNzIgMTguMzZMNC41NSAxMC40NU0xMy4yOCAxOC4zN0wxNS43NSAxMC43OEwxNS44NSAxMC40NUgxOS40NkwxMy44NyAxNy42MU0xNy45NyAzLjk0TDE5Ljc4IDkuNUgxNi4xNk0xNC44NiAxMC40NUwxMy4wNyAxNS45NkwxMiAxOS4yNEw5LjE0IDEwLjQ1TTYuMDMgMy45NEw3Ljg0IDkuNUg0LjIzTTMuMDUgMTMuNjlDMi45NiAxMy42MiAyLjkyIDEzLjUgMi45NiAxMy40TDMuNzUgMTAuOTdMOS41NyAxOC40Mk0yMC45NSAxMy42OUwxNC40NCAxOC40MkwxNC40NiAxOC4zOUwyMC4yNSAxMC45N0wyMS4wNCAxMy40QzIxLjA4IDEzLjUgMjEuMDQgMTMuNjIgMjAuOTUgMTMuNjlcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc0NvY2t0YWlsID0gXCJNNy41LDdMNS41LDVIMTguNUwxNi41LDdNMTEsMTNWMTlINlYyMUgxOFYxOUgxM1YxM0wyMSw1VjNIM1Y1TDExLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzQ29ja3RhaWxPZmYgPSBcIk0xMy4zMyAxMi42N0w3LjY2IDdMNi4xMyA1LjQ3TDIuMzkgMS43M0wxLjExIDNMMyA0Ljg5VjVMMTEgMTNWMTlINlYyMUgxOFYxOS44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxMy4zMyAxMi42N00xMyAxOVYxNC44OUwxNy4xMSAxOUgxM004LjIgNUw2LjIgM0gyMVY1TDE0LjYgMTEuNEwxMC4yIDdIMTYuNUwxOC41IDVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzRmx1dGUgPSBcIk04LDJIMTZDMTUuNjcsNSAxNS4zMyw4IDE0Ljc1LDkuODNDMTQuMTcsMTEuNjcgMTMuMzMsMTIuMzMgMTIuOTIsMTQuMDhDMTIuNSwxNS44MyAxMi41LDE4LjY3IDEzLjA4LDIwQzEzLjY3LDIxLjMzIDE0LjgzLDIxLjE3IDE1LjQyLDIxLjI1QzE2LDIxLjMzIDE2LDIxLjY3IDE2LDIySDhDOCwyMS42NyA4LDIxLjMzIDguNTgsMjEuMjVDOS4xNywyMS4xNyAxMC4zMywyMS4zMyAxMC45MiwyMEMxMS41LDE4LjY3IDExLjUsMTUuODMgMTEuMDgsMTQuMDhDMTAuNjcsMTIuMzMgOS44MywxMS42NyA5LjI1LDkuODNDOC42Nyw4IDguMzMsNSA4LDJNMTAsNEMxMC4wNyw1LjAzIDEwLjE1LDYuMDcgMTAuMjQsN0gxMy43NkMxMy44NSw2LjA3IDEzLjkzLDUuMDMgMTQsNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc011ZyA9IFwiTTEwLDRWN0gxOFY0SDEwTTgsMkgyMEwyMSwyVjNMMjAsNFYyMEwyMSwyMVYyMkgyMEw4LDIySDdWMjFMOCwyMFYxOC42TDQuMiwxNi44M0MzLjUsMTYuNSAzLDE1LjgyIDMsMTVWOEEyLDIgMCAwLDEgNSw2SDhWNEw3LDNWMkg4TTUsMTVMOCwxNi4zOVY4SDVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2xhc3NNdWdPZmYgPSBcIk0yMCAxOS4zNVYxOS4zNEw2LjY2IDZMNi4wNyA1LjQxTDIuMzkgMS43M0wxLjExIDNMNC4yNiA2LjE1QzMuNSA2LjQ0IDMgNy4xNiAzIDhWMTVDMyAxNS44MiAzLjUgMTYuNSA0LjIgMTYuODNMOCAxOC42VjIwTDcgMjFWMjJIMjAuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMjAgMTkuMzVNOCAxNi4zOUw1IDE1VjhINi4xMUw4IDkuODlWMTYuMzlNOCA0TDcgM1YySDIxVjNMMjAgNFYxNi44TDEwLjIgN0gxOFY0SDEwVjYuOEw4IDQuOFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzTXVnVmFyaWFudCA9IFwiTTkuNSAzQzcuNTYgMyA1Ljg1IDQuMjQgNS4yMyA2LjA4QzMuMzYgNi40NCAyIDguMDkgMiAxMEMyIDEyLjIxIDMuNzkgMTQgNiAxNFYyMkgxN1YyMEgyMEMyMC41NSAyMCAyMSAxOS41NSAyMSAxOVYxMUMyMSAxMC40NSAyMC41NSAxMCAyMCAxMEgxOFY4QzE4IDUuNzkgMTYuMjEgNCAxNCA0SDEyLjMyQzExLjUgMy4zNSAxMC41MyAzIDkuNSAzTTkuNSA1QzEwLjI5IDUgMTEuMDMgNS4zNyAxMS41IDZIMTRDMTUuMTEgNiAxNiA2LjkgMTYgOEgxMkMxMCA4IDkuMzIgOS4xMyA4LjUgMTAuNjNDNy42OCAxMi4xMyA2IDEyIDYgMTJDNC44OSAxMiA0IDExLjExIDQgMTBDNCA4LjkgNC44OSA4IDYgOEg3VjcuNUM3IDYuMTIgOC4xMiA1IDkuNSA1TTE3IDEySDE5VjE4SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzTXVnVmFyaWFudE9mZiA9IFwiTTguNDQgNS4yNEw3IDMuNzlDNy43MSAzLjI5IDguNTcgMyA5LjUgM0MxMC41MyAzIDExLjUgMy4zNSAxMi4zMiA0SDE0QzE2LjIxIDQgMTggNS43OSAxOCA4VjEwSDIwQzIwLjU1IDEwIDIxIDEwLjQ1IDIxIDExVjE3LjhMMTkgMTUuOFYxMkgxN1YxMy44TDExLjI2IDguMDZDMTEuNSA4IDExLjczIDggMTIgOEgxNkMxNiA2LjkgMTUuMTEgNiAxNCA2SDExLjVDMTEuMDMgNS4zNyAxMC4yOSA1IDkuNSA1QzkuMTIgNSA4Ljc2IDUuMDkgOC40NCA1LjI0TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjExIDIwSDE3VjIySDZWMTRDMy43OSAxNCAyIDEyLjIxIDIgMTBDMiA4LjM3IDMgNi45NCA0LjQ0IDYuMzNMMS4xMSAzTDIuMzkgMS43M0w3LjE5IDYuNTRMOS42MSA4Ljk2TDE3IDE2LjM0VjE2LjM1TDE4LjY1IDE4SDE4LjY2TDIwLjUgMTkuODRWMTkuODVMMjIuMTEgMjEuNDZNOC41OSAxMC41TDYuMTEgOEg2QzQuODkgOCA0IDguOSA0IDEwQzQgMTEuMTEgNC44OSAxMiA2IDEyQzYgMTIgNy42OCAxMi4xMyA4LjUgMTAuNjNMOC41OSAxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzUGludE91dGxpbmUgPSBcIk00IDJMNiAyMkgxN0wxOSAySDRNNi4yIDRIMTYuOEwxNS4yIDIwSDcuOEw2LjIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc1N0YW5nZSA9IFwiTTgsMkgxNlYyMkg4VjJNMTAsNFY3SDE0VjRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2xhc3NUdWxpcCA9IFwiTTgsMkgxNkMxNS42NywyLjY3IDE1LjMzLDMuMzMgMTUuNTgsNUMxNS44Myw2LjY3IDE2LjY3LDkuMzMgMTYuMjUsMTAuNzRDMTUuODMsMTIuMTQgMTQuMTcsMTIuMjggMTMuMzMsMTMuODZDMTIuNSwxNS40NCAxMi41LDE4LjQ3IDEzLjA4LDE5LjlDMTMuNjcsMjEuMzMgMTQuODMsMjEuMTcgMTUuNDIsMjEuMjVDMTYsMjEuMzMgMTYsMjEuNjcgMTYsMjJIOEM4LDIxLjY3IDgsMjEuMzMgOC41OCwyMS4yNUM5LjE3LDIxLjE3IDEwLjMzLDIxLjMzIDEwLjkyLDE5LjlDMTEuNSwxOC40NyAxMS41LDE1LjQ0IDEwLjY3LDEzLjg2QzkuODMsMTIuMjggOC4xNywxMi4xNCA3Ljc1LDEwLjc0QzcuMzMsOS4zMyA4LjE3LDYuNjcgOC40Miw1QzguNjcsMy4zMyA4LjMzLDIuNjcgOCwyTTEwLDRDMTAsNS4xOSA5LjgzLDYuMTcgOS42NCw3SDE0LjI3QzE0LjEzLDYuMTcgMTQsNS4xOSAxNCw0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzV2luZSA9IFwiTTE1LjUsMjEuMjdMMTQuNjYsMjEuMThDMTMuOSwyMS4xMSAxMy4yNSwyMC42IDEzLDE5Ljg3QzEyLjQ3LDE3LjkxIDEyLjQ3LDE1LjgzIDEzLDEzLjg3QzE1LjMyLDEzLjQgMTcsMTEuMzcgMTcsOUMxNyw3IDE1LDIgMTUsMkg5QzksMiA3LDcgNyw5QzcsMTEuMzggOC42NywxMy40MiAxMSwxMy45QzExLjUzLDE1Ljg2IDExLjUzLDE3Ljk0IDExLDE5LjlDMTAuNzYsMjAuNjIgMTAuMTIsMjEuMTMgOS4zNywyMS4yMUw4LjUsMjEuM0M4LjUsMjEuMyA4LDIxLjI4IDgsMjJIMTZDMTYsMjEuMjggMTUuNSwyMS4yNyAxNS41LDIxLjI3TTkuNDQsN0wxMC40NCw0SDEzLjU2TDE0LjU2LDdIOS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc2VzID0gXCJNMywxMEMyLjc2LDEwIDIuNTUsMTAuMDkgMi40MSwxMC4yNUMyLjI3LDEwLjQgMi4yMSwxMC42MiAyLjI0LDEwLjg2TDIuNzQsMTMuODVDMi44MiwxNC41IDMuNCwxNSA0LDE1SDdDNy42NCwxNSA4LjM2LDE0LjQ0IDguNSwxMy44Mkw5LjU2LDEwLjYzQzkuNiwxMC41IDkuNTcsMTAuMzEgOS41LDEwLjE5QzkuMzksMTAuMDcgOS4yMiwxMCA5LDEwSDNNNywxN0g0QzIuMzgsMTcgMC45NiwxNS43NCAwLjc2LDE0LjE0TDAuMjYsMTEuMTVDMC4xNSwxMC4zIDAuMzksOS41IDAuOTEsOC45MkMxLjQzLDguMzQgMi4xOSw4IDMsOEg5QzkuODMsOCAxMC41OCw4LjM1IDExLjA2LDguOTZDMTEuMTcsOS4xMSAxMS4yNyw5LjI3IDExLjM1LDkuNDVDMTEuNzgsOS4zNiAxMi4yMiw5LjM2IDEyLjY0LDkuNDVDMTIuNzIsOS4yNyAxMi44Miw5LjExIDEyLjk0LDguOTZDMTMuNDEsOC4zNSAxNC4xNiw4IDE1LDhIMjFDMjEuODEsOCAyMi41Nyw4LjM0IDIzLjA5LDguOTJDMjMuNiw5LjUgMjMuODQsMTAuMyAyMy43NCwxMS4xMUwyMy4yMywxNC4xOEMyMy4wNCwxNS43NCAyMS42MSwxNyAyMCwxN0gxN0MxNS40NCwxNyAxMy45MiwxNS44MSAxMy41NCwxNC4zTDEyLjY0LDExLjU5QzEyLjI2LDExLjMxIDExLjczLDExLjMxIDExLjM1LDExLjU5TDEwLjQzLDE0LjM3QzEwLjA3LDE1LjgyIDguNTYsMTcgNywxN00xNSwxMEMxNC43OCwxMCAxNC42MSwxMC4wNyAxNC41LDEwLjE5QzE0LjQyLDEwLjMxIDE0LjQsMTAuNSAxNC40NSwxMC43TDE1LjQ2LDEzLjc1QzE1LjY0LDE0LjQ0IDE2LjM2LDE1IDE3LDE1SDIwQzIwLjU5LDE1IDIxLjE4LDE0LjUgMjEuMjUsMTMuODlMMjEuNzYsMTAuODJDMjEuNzksMTAuNjIgMjEuNzMsMTAuNCAyMS41OSwxMC4yNUMyMS40NSwxMC4wOSAyMS4yNCwxMCAyMSwxMEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHbG9iZUxpZ2h0ID0gXCJNMTMgOC4wOFYySDExVjguMDhDNy42MSA4LjU3IDUgMTEuNDcgNSAxNUM1IDE4Ljg3IDguMTMgMjIgMTIgMjJTMTkgMTguODcgMTkgMTVDMTkgMTEuNDcgMTYuMzkgOC41NyAxMyA4LjA4TTEyIDIwQzkuMjQgMjAgNyAxNy43NiA3IDE1QzcgMTMuODcgNy4zOSAxMi44NCA4LjAzIDEySDE1Ljk3QzE2LjYxIDEyLjg0IDE3IDEzLjg3IDE3IDE1QzE3IDE3Ljc2IDE0Ljc2IDIwIDEyIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsb2JlTW9kZWwgPSBcIk0xNy4zNiwyLjY0TDE1Ljk1LDQuMDZDMTcuMjYsNS4zNyAxOCw3LjE0IDE4LDlBNyw3IDAgMCwxIDExLDE2QzkuMTUsMTYgNy4zNywxNS4yNiA2LjA2LDEzLjk1TDQuNjQsMTUuMzZDNi4wOCwxNi44IDcuOTcsMTcuNzEgMTAsMTcuOTNWMjBINlYyMkgxNlYyMEgxMlYxNy45NEMxNi41NSwxNy40MyAyMCwxMy41OCAyMCw5QzIwLDYuNjIgMTkuMDUsNC4zMyAxNy4zNiwyLjY0TTExLDMuNUE1LjUsNS41IDAgMCwwIDUuNSw5QTUuNSw1LjUgMCAwLDAgMTEsMTQuNUE1LjUsNS41IDAgMCwwIDE2LjUsOUE1LjUsNS41IDAgMCwwIDExLDMuNU0xMSw1LjVDMTIuOTQsNS41IDE0LjUsNy4wNyAxNC41LDlBMy41LDMuNSAwIDAsMSAxMSwxMi41QTMuNSwzLjUgMCAwLDEgNy41LDlBMy41LDMuNSAwIDAsMSAxMSw1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR21haWwgPSBcIk0yMCwxOEgxOFY5LjI1TDEyLDEzTDYsOS4yNVYxOEg0VjZINS4yTDEyLDEwLjI1TDE4LjgsNkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbm9tZSA9IFwiTTE4LjQyLDJDMTQuMjYsMiAxMy41LDcuOTMgMTUuODIsNy45M0MxOC4xNiw3LjkzIDIyLjU4LDIgMTguNDIsMk0xMiwyLjczQzExLjkyLDIuNzMgMTEuODUsMi43MyAxMS43OCwyLjc0QzkuNDQsMy4wNCAxMC4yNiw3LjEyIDExLjUsNy4xOUMxMi43Miw3LjI3IDE0LjA0LDIuNzMgMTIsMi43M003LjkzLDQuMzRDNy44MSw0LjM0IDcuNjcsNC4zNyA3LjUzLDQuNDNDNS42NSw1LjIxIDcuMjQsOC40MSA4LjMsOC4yQzkuMjcsOCA5LjM5LDQuMyA3LjkzLDQuMzRNNC45Myw2Ljg1QzQuNzcsNi44NCA0LjU5LDYuOSA0LjQxLDcuMDNDMi45LDguMDcgNC45MSwxMC41OCA1LjgsMTAuMTlDNi41Nyw5Ljg1IDYuMDgsNi44OSA0LjkzLDYuODVNMTMuMjksOC43N0MxMC4xLDguOCA2LjAzLDEwLjQyIDUuMzIsMTMuNTlDNC41MywxNy4xMSA4LjU2LDIyIDEyLjc2LDIyQzE0LjgzLDIyIDE3LjIxLDIwLjEzIDE3LjY2LDE3Ljc3QzE4LDE1Ljk3IDEzLjY1LDE2LjY5IDEzLjgxLDE3Ljg4QzE0LDE5LjMxIDEyLjc2LDIwIDExLjU1LDE5LjFDNy42OSwxNi4xNiAxNy45MywxNC43IDE3LjI1LDEwLjY5QzE3LjAzLDkuMzkgMTUuMzQsOC43NiAxMy4yOSw4Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvS2FydCA9IFwiTTE4LDEwSDE1LjUzTDE0LjM4LDguMjhMMTUuOCw3LjMzTDE0LjcsNS42N0wxMC4yLDguNjdMMTEuMywxMC4zM0wxMi43Myw5LjM4TDEzLjg4LDExLjEyTDEzLDEySDEwLjJMNS44Myw1LjQ1TDQuMTcsNi41NUw1Ljg3LDkuMTFDMy4wNCw5LjY1IDEsMTIuMTIgMSwxNVYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTVBNSw1IDAgMCwwIDE4LDEwTTYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNU0xOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxOS41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb0thcnRUcmFjayA9IFwiTTIyLDUuNUEzLjUsMy41IDAgMCwwIDE4LjUsMkEzLjUsMy41IDAgMCwwIDE1LDUuNVY2QTMsMyAwIDAsMSAxMiw5QzEwLDkgOSw2IDYsNkE0LDQgMCAwLDAgMiwxMFYxMUg0VjEwQTIsMiAwIDAsMSA2LDhDNi44Niw4IDcuNDIsOC40NSA4LjMyLDkuMjRDOS4yOCwxMC4yNyAxMC42LDEwLjkgMTIsMTFBNSw1IDAgMCwwIDE3LDZWNS41QTEuNSwxLjUgMCAwLDEgMTguNSw0QTEuNSwxLjUgMCAwLDEgMjAsNS41QzE5Ljg2LDYuMzUgMTkuNTgsNy4xOCAxOS4xNyw3Ljk0QzE4LjUsOS4yIDE4LjExLDEwLjU4IDE4LDEyQzE4LjA5LDEzLjM3IDE4LjUsMTQuNzEgMTkuMjEsMTUuODlDMTkuNiwxNi41NCAxOS44NywxNy4yNSAyMCwxOEEyLDIgMCAwLDEgMTgsMjBBMiwyIDAgMCwxIDE2LDE4QTMuNzUsMy43NSAwIDAsMCAxMi4yNSwxNC4yNUEzLjc1LDMuNzUgMCAwLDAgOC41LDE4VjE4LjVBMS41LDEuNSAwIDAsMSA3LDIwQTMsMyAwIDAsMSA0LDE3VjE1SDZWMTNIMFYxNUgyVjE3QTUsNSAwIDAsMCA3LDIyQTMuNSwzLjUgMCAwLDAgMTAuNSwxOC41VjE4QTEuNzUsMS43NSAwIDAsMSAxMi4yNSwxNi4yNUExLjc1LDEuNzUgMCAwLDEgMTQsMThBNCw0IDAgMCwwIDE4LDIyQTQsNCAwIDAsMCAyMiwxOEMyMiwxNiAyMCwxNCAyMCwxMkMyMCwxMCAyMiw3LjUgMjIsNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvZyA9IFwiTTQsM0gyMEEyLDIgMCAwLDEgMjIsNVYxOUEyLDIgMCAwLDEgMjAsMjFINEEyLDIgMCAwLDEgMiwxOVY1QTIsMiAwIDAsMSA0LDNNMTAuNDYsNS41NEM5Ljk1LDUuNTQgOS41NCw1Ljk1IDkuNTQsNi40NlY5LjU0QTAuOTIsMC45MiAwIDAsMCAxMC40NiwxMC40NkgxMy41NEEwLjkyLDAuOTIgMCAwLDAgMTQuNDYsOS41NFY2LjQ2QzE0LjQ2LDUuOTUgMTQuMDUsNS41NCAxMy41NCw1LjU0SDEwLjQ2TTExLjA4LDYuNzdIMTIuOTJBMC4zMSwwLjMxIDAgMCwxIDEzLjIzLDcuMDhWOC45MkEwLjMxLDAuMzEgMCAwLDEgMTIuOTIsOS4yM0gxMS4wOEEwLjMxLDAuMzEgMCAwLDEgMTAuNzcsOC45MlY3LjA4QTAuMzEsMC4zMSAwIDAsMSAxMS4wOCw2Ljc3TTQuOTIsNS41NEEwLjkyLDAuOTIgMCAwLDAgNCw2LjQ2VjkuNTRDNCwxMC4wNSA0LjQxLDEwLjQ2IDQuOTIsMTAuNDZINy4wOFY5LjIzSDUuNTRDNS4zNyw5LjIzIDUuMjMsOS4wOSA1LjIzLDguOTJWNy4wOEM1LjIzLDYuOTEgNS4zNyw2Ljc3IDUuNTQsNi43N0g3LjM4QTAuMzEsMC4zMSAwIDAsMSA3LjY5LDcuMDhWMTAuNzdBMC4zMSwwLjMxIDAgMCwxIDcuMzgsMTEuMDhINFYxMi4zMUg4QzguNSwxMi4zMSA4LjkyLDExLjg5IDguOTIsMTEuMzhWNi40NkEwLjkyLDAuOTIgMCAwLDAgOCw1LjU0SDQuOTJNMTYsNS41NEMxNS41LDUuNTQgMTUuMDgsNS45NSAxNS4wOCw2LjQ2VjkuNTRDMTUuMDgsMTAuMDUgMTUuNSwxMC40NiAxNiwxMC40NkgxOC4xNVY5LjIzSDE2LjYyQzE2LjQ1LDkuMjMgMTYuMzEsOS4wOSAxNi4zMSw4LjkyVjcuMDhDMTYuMzEsNi45MSAxNi40NSw2Ljc3IDE2LjYyLDYuNzdIMTguNDZDMTguNjMsNi43NyAxOC43Nyw2LjkxIDE4Ljc3LDcuMDhWMTAuNzdDMTguNzcsMTAuOTQgMTguNjMsMTEuMDggMTguNDYsMTEuMDhIMTUuMDhWMTIuMzFIMTkuMDhDMTkuNTksMTIuMzEgMjAsMTEuODkgMjAsMTEuMzhWNi40NkMyMCw1Ljk1IDE5LjU5LDUuNTQgMTkuMDgsNS41NEgxNk05Ljg1LDEzLjU0QzkuMzQsMTMuNTQgOC45MiwxMy45NSA4LjkyLDE0LjQ2VjE3LjU0QzguOTIsMTguMDUgOS4zNCwxOC40NiA5Ljg1LDE4LjQ2SDEyLjkyQzEzLjQzLDE4LjQ2IDEzLjg1LDE4LjA1IDEzLjg1LDE3LjU0VjE0LjQ2QzEzLjg1LDEzLjk1IDEzLjQzLDEzLjU0IDEyLjkyLDEzLjU0SDkuODVNMTAuNDYsMTQuNzdIMTIuMzFDMTIuNSwxNC43NyAxMi42MiwxNC45MSAxMi42MiwxNS4wOFYxNi45MkEwLjMxLDAuMzEgMCAwLDEgMTIuMzEsMTcuMjNIMTAuNDZDMTAuMjksMTcuMjMgMTAuMTUsMTcuMDkgMTAuMTUsMTYuOTJWMTUuMDhBMC4zMSwwLjMxIDAgMCwxIDEwLjQ2LDE0Ljc3TTQuOTIsMTMuNTRDNC40MSwxMy41NCA0LDEzLjk1IDQsMTQuNDZWMTcuNTRDNCwxOC4wNSA0LjQxLDE4LjQ2IDQuOTIsMTguNDZIOC4zMVYxNy4yM0g1LjU0QzUuMzcsMTcuMjMgNS4yMywxNy4wOSA1LjIzLDE2LjkyVjE1LjA4QzUuMjMsMTQuOTEgNS4zNywxNC43NyA1LjU0LDE0Ljc3SDguMzFWMTMuNTRINC45Mk0xNS4zOCwxMy41NEMxNC44NywxMy41NCAxNC40NiwxMy45NSAxNC40NiwxNC40NlYxOC40NkgxNS42OVYxNS4wOEEwLjMxLDAuMzEgMCAwLDEgMTYsMTQuNzdIMTYuNjJWMTguNDZIMTcuODVWMTQuNzdIMTguNzdWMTguNDZIMjBWMTMuNTRIMTUuMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29sZCA9IFwiTTEgMjJMMi41IDE3SDkuNUwxMSAyMkgxTTEzIDIyTDE0LjUgMTdIMjEuNUwyMyAyMkgxM002IDE1TDcuNSAxMEgxNC41TDE2IDE1SDZNMjMgNi4wNUwxOS4xNCA3LjE0TDE4LjA1IDExTDE2Ljk2IDcuMTRMMTMuMSA2LjA1TDE2Ljk2IDQuOTZMMTguMDUgMS4xTDE5LjE0IDQuOTZMMjMgNi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb2xmID0gXCJNMTkuNSwxOEExLjUsMS41IDAgMCwxIDIxLDE5LjVBMS41LDEuNSAwIDAsMSAxOS41LDIxQTEuNSwxLjUgMCAwLDEgMTgsMTkuNUExLjUsMS41IDAgMCwxIDE5LjUsMThNMTcsNS45MkwxMSw5VjE4LjAzQzEzLjg0LDE4LjE5IDE2LDE5IDE2LDIwQzE2LDIxLjEgMTMuMzEsMjIgMTAsMjJDNi42OSwyMiA0LDIxLjEgNCwyMEM0LDE5LjI2IDUuMjEsMTguNjIgNywxOC4yN1YyMEg5VjJMMTcsNS45MlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb2xmQ2FydCA9IFwiTTE5Ljg5IDEyLjM3TDE4LjI1IDVIMTlWM0gzVjdIMVY5SDNWMTIuNTRBNiA2IDAgMCAwIDEgMTdWMTlIM0EzIDMgMCAwIDAgOSAxOUgxNUEzIDMgMCAwIDAgMjEgMTlIMjNWMTdBNSA1IDAgMCAwIDE5Ljg5IDEyLjM3TTYgMjAuNUExLjUgMS41IDAgMSAxIDcuNSAxOUExLjUgMS41IDAgMCAxIDYgMjAuNU0xNS41MyAxMkwxNC4zOCAxMC4yOEwxNS44IDkuMzNMMTQuNyA3LjY3TDEwLjIgMTAuNjdMMTEuMyAxMi4zM0wxMi43MyAxMS4zOEwxMy44OCAxMy4xMkwxMyAxNEgxMC4yTDUgN1Y1SDE2LjJMMTcuNzUgMTJNMTggMjAuNUExLjUgMS41IDAgMSAxIDE5LjUgMTlBMS41IDEuNSAwIDAgMSAxOCAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvbGZUZWUgPSBcIk03IDE5VjE3SDE3VjE5SDE1QzE0LjUgMTkgMTQgMTkuMiAxMy42IDE5LjZTMTMgMjAuNSAxMyAyMVYyMkgxMVYyMUMxMSAyMC41IDEwLjggMjAgMTAuNCAxOS42UzkuNSAxOSA5IDE5SDdNMTEgNkMxMSA1LjcgMTEuMSA1LjUgMTEuMyA1LjNTMTEuNyA1IDEyIDUgMTIuNSA1LjEgMTIuNyA1LjMgMTMgNS43IDEzIDYgMTIuOSA2LjUgMTIuNyA2LjcgMTIuMyA3IDEyIDcgMTEuNSA2LjkgMTEuMyA2LjcgMTEgNi4zIDExIDZNMTMgOEMxMyA3LjcgMTMuMSA3LjUgMTMuMyA3LjNTMTMuNyA3IDE0IDcgMTQuNSA3LjEgMTQuNyA3LjMgMTUgNy43IDE1IDggMTQuOSA4LjUgMTQuNyA4LjcgMTQuMyA5IDE0IDkgMTMuNSA4LjkgMTMuMyA4LjcgMTMgOC4zIDEzIDhNOSA4QzkgNy43IDkuMSA3LjUgOS4zIDcuM1M5LjcgNyAxMCA3IDEwLjUgNy4xIDEwLjcgNy4zIDExIDcuNyAxMSA4IDEwLjkgOC41IDEwLjcgOC43IDEwLjMgOSAxMCA5IDkuNSA4LjkgOS4zIDguNyA5IDguMyA5IDhNMTYuOSA0LjFDMTUuNSAyLjcgMTMuOSAyLjEgMTIgMi4xUzguNCAyLjggNy4xIDQuMSA1IDcuMSA1IDkgNS43IDEyLjYgNyAxMy45IDEwIDE1LjkgMTEuOSAxNS45IDE1LjUgMTUuMiAxNi44IDEzLjkgMTguOCAxMC45IDE4LjggOSAxOC4zIDUuNCAxNi45IDQuMU0xNS41IDEyLjVDMTQuNSAxMy41IDEzLjMgMTQgMTIgMTRTOS40IDEzLjUgOC41IDEyLjUgNyAxMC40IDcgOSA3LjUgNi40IDguNSA1LjUgMTAuNiA0IDEyIDQgMTQuNiA0LjUgMTUuNSA1LjUgMTcgNy42IDE3IDkgMTYuNSAxMS42IDE1LjUgMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb25kb2xhID0gXCJNMTgsMTBIMTNWNy41OUwyMi4xMiw2LjA3TDIxLjg4LDQuNTlMMTYuNDEsNS41QzE2LjQ2LDUuMzUgMTYuNSw1LjE4IDE2LjUsNUExLjUsMS41IDAgMCwwIDE1LDMuNUExLjUsMS41IDAgMCwwIDEzLjUsNUMxMy41LDUuMzUgMTMuNjMsNS42OCAxMy44NCw1LjkzTDEzLDYuMDdWNUgxMVY2LjQxTDEwLjQxLDYuNUMxMC40Niw2LjM1IDEwLjUsNi4xOCAxMC41LDZBMS41LDEuNSAwIDAsMCA5LDQuNUExLjUsMS41IDAgMCwwIDcuNSw2QzcuNSw2LjM2IDcuNjMsNi42OCA3LjgzLDYuOTNMMS44OCw3LjkzTDIuMTIsOS40MUwxMSw3LjkzVjEwSDZDNC44OSwxMCA0LDEwLjkgNCwxMlYxOEEyLDIgMCAwLDAgNiwyMEgxOEEyLDIgMCAwLDAgMjAsMThWMTJBMiwyIDAgMCwwIDE4LDEwTTYsMTJIOC4yNVYxNkg2VjEyTTkuNzUsMTZWMTJIMTQuMjVWMTZIOS43NU0xOCwxNkgxNS43NVYxMkgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29kcmVhZHMgPSBcIk0xNywxMi43N0MxNS45NiwxNC40MiAxNC4yMiwxNS41IDEyLjI1LDE1LjVDOS4wNywxNS41IDYuNSwxMi43IDYuNSw5LjI1QzYuNSw1LjggOS4wNywzIDEyLjI1LDNDMTQuMjIsMyAxNS45Niw0LjA4IDE3LDUuNzNWM0gxOFYxNS4yNUMxOCwyMC43MSAxNC41NCwyMSAxMS41LDIxQzksMjEgNy41NSwxOS4zMSA3LjEzLDE3SDguMTRDOC41LDE4Ljc1IDkuNTQsMjAgMTEuNSwyMEMxMy43MiwyMCAxNywyMC4wNSAxNywxNS4yNVYxNS4yNUwxNywxMi43N00xMi4yNSw0QzkuNjMsNCA3LjUsNi4zNSA3LjUsOS4yNUM3LjUsMTIuMTUgOS42MywxNC41IDEyLjI1LDE0LjVDMTQuODcsMTQuNSAxNywxMi4xNSAxNyw5LjI1QzE3LDYuMzUgMTQuODcsNCAxMi4yNSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZSA9IFwiTTIxLjM1LDExLjFIMTIuMThWMTMuODNIMTguNjlDMTguMzYsMTcuNjQgMTUuMTksMTkuMjcgMTIuMTksMTkuMjdDOC4zNiwxOS4yNyA1LDE2LjI1IDUsMTJDNSw3LjkgOC4yLDQuNzMgMTIuMiw0LjczQzE1LjI5LDQuNzMgMTcuMSw2LjcgMTcuMSw2LjdMMTksNC43MkMxOSw0LjcyIDE2LjU2LDIgMTIuMSwyQzYuNDIsMiAyLjAzLDYuOCAyLjAzLDEyQzIuMDMsMTcuMDUgNi4xNiwyMiAxMi4yNSwyMkMxNy42LDIyIDIxLjUsMTguMzMgMjEuNSwxMi45MUMyMS41LDExLjc2IDIxLjM1LDExLjEgMjEuMzUsMTEuMVYxMS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUFkcyA9IFwiTTEyLjI1IDEuNDdDMTEuNTUgMS40MiAxMC44MiAxLjU4IDEwLjE3IDEuOTZDOC40MSAyLjk3IDcuODEgNS4yMSA4LjgyIDYuOTZMMTYuMTYgMTkuNjZDMTcuMTcgMjEuNDIgMTkuNDEgMjIgMjEuMTcgMjFDMjIuOTIgMjAgMjMuNSAxNy43NSAyMi41IDE2TDE1LjE4IDMuM0MxNC41NCAyLjIgMTMuNDMgMS41NiAxMi4yNSAxLjQ3TTYuODIgNi43NkwxLjUgMTZBMy42NyAzLjY3IDAgMCAwIDEgMTcuODNBMy42NyAzLjY3IDAgMCAwIDQuNjcgMjEuNUEzLjY3IDMuNjcgMCAwIDAgNy44NCAxOS42NlYxOS42N0wxMSAxNC4xOUM5LjY1IDExLjg5IDguMjcgOS42IDcuMDMgNy4yM0M2Ljk1IDcuMDggNi44OCA2LjkyIDYuODMgNi43NlpMMTYuNCA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUFuYWx5dGljcyA9IFwiTTE1Ljg2IDQuMzlWMTkuMzlDMTUuODYgMjEuMDYgMTcgMjIgMTguMjUgMjJDMTkuMzkgMjIgMjAuNjQgMjEuMjEgMjAuNjQgMTkuMzlWNC41QzIwLjY0IDIuOTYgMTkuNSAyIDE4LjI1IDJTMTUuODYgMy4wNiAxNS44NiA0LjM5TTkuNjEgMTJWMTkuMzlDOS42MSAyMS4wNyAxMC43NyAyMiAxMiAyMkMxMy4xNCAyMiAxNC4zOSAyMS4yMSAxNC4zOSAxOS4zOVYxMi4xMUMxNC4zOSAxMC41NyAxMy4yNSA5LjYxIDEyIDkuNjFTOS42MSAxMC42NyA5LjYxIDEyTTUuNzUgMTcuMjNDNy4wNyAxNy4yMyA4LjE0IDE4LjMgOC4xNCAxOS42MUM4LjE0IDIwLjkzIDcuMDcgMjIgNS43NSAyMlMzLjM2IDIwLjkzIDMuMzYgMTkuNjFDMy4zNiAxOC4zIDQuNDMgMTcuMjMgNS43NSAxNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVBc3Npc3RhbnQgPSBcIk03LDJBNiw2IDAgMCwwIDEsOEE2LDYgMCAwLDAgNywxNEE2LDYgMCAwLDAgMTMsOEE2LDYgMCAwLDAgNywyTTIxLjUsNkExLjUsMS41IDAgMCwwIDIwLDcuNUExLjUsMS41IDAgMCwwIDIxLjUsOUExLjUsMS41IDAgMCwwIDIzLDcuNUExLjUsMS41IDAgMCwwIDIxLjUsNk0xNyw4QTMsMyAwIDAsMCAxNCwxMUEzLDMgMCAwLDAgMTcsMTRBMywzIDAgMCwwIDIwLDExQTMsMyAwIDAsMCAxNyw4TTE3LDE1QTMuNSwzLjUgMCAwLDAgMTMuNSwxOC41QTMuNSwzLjUgMCAwLDAgMTcsMjJBMy41LDMuNSAwIDAsMCAyMC41LDE4LjVBMy41LDMuNSAwIDAsMCAxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDYXJkYm9hcmQgPSBcIk0yMC43NCw2SDMuMkMyLjU1LDYgMiw2LjU3IDIsNy4yN1YxNy43M0MyLDE4LjQzIDIuNTUsMTkgMy4yMywxOUg4QzguNTQsMTkgOSwxOC42OCA5LjE2LDE4LjIxTDEwLjU1LDE0Ljc0QzEwLjc5LDE0LjE2IDExLjM1LDEzLjc1IDEyLDEzLjc1QzEyLjY1LDEzLjc1IDEzLjIxLDE0LjE2IDEzLjQ1LDE0Ljc0TDE0Ljg0LDE4LjIxQzE1LjAzLDE4LjY4IDE1LjQ2LDE5IDE1Ljk1LDE5SDIwLjc0QzIxLjQ1LDE5IDIyLDE4LjQzIDIyLDE3LjczVjcuMjdDMjIsNi41NyAyMS40NSw2IDIwLjc0LDZNNy4yMiwxNC41OEM2LDE0LjU4IDUsMTMuNTUgNSwxMi4yOUM1LDExIDYsMTAgNy4yMiwxMEM4LjQ0LDEwIDkuNDMsMTEgOS40MywxMi4yOUM5LjQzLDEzLjU1IDguNDQsMTQuNTggNy4yMiwxNC41OE0xNi43OCwxNC41OEMxNS41NiwxNC41OCAxNC41NywxMy41NSAxNC41NywxMi4yOUMxNC41NywxMS4wMyAxNS41NiwxMCAxNi43OCwxMEMxOCwxMCAxOSwxMS4wMyAxOSwxMi4yOUMxOSwxMy41NSAxOCwxNC41OCAxNi43OCwxNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDaHJvbWUgPSBcIk0xMiwyMEwxNS40NiwxNEgxNS40NUMxNS43OSwxMy40IDE2LDEyLjczIDE2LDEyQzE2LDEwLjggMTUuNDYsOS43MyAxNC42Miw5SDE5LjQxQzE5Ljc5LDkuOTMgMjAsMTAuOTQgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTQsMTJDNCwxMC41NCA0LjM5LDkuMTggNS4wNyw4TDguNTQsMTRIOC41NUM5LjI0LDE1LjE5IDEwLjUsMTYgMTIsMTZDMTIuNDUsMTYgMTIuODgsMTUuOTEgMTMuMjksMTUuNzdMMTAuODksMTkuOTFDNywxOS4zNyA0LDE2LjA0IDQsMTJNMTUsMTJBMywzIDAgMCwxIDEyLDE1QTMsMyAwIDAsMSA5LDEyQTMsMyAwIDAsMSAxMiw5QTMsMyAwIDAsMSAxNSwxMk0xMiw0QzE0Ljk2LDQgMTcuNTQsNS42MSAxOC45Miw4SDEyQzEwLjA2LDggOC40NSw5LjM4IDguMDgsMTEuMjFMNS43LDcuMDhDNy4xNiw1LjIxIDkuNDQsNCAxMiw0TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUNpcmNsZXMgPSBcIk0xNi42NiwxNUgxN0MxOCwxNSAxOSwxNC44IDE5Ljg3LDE0LjQ2QzE5LjE3LDE4LjczIDE1LjQ3LDIyIDExLDIyQzYsMjIgMiwxNy45NyAyLDEzQzIsOC41MyA1LjI3LDQuODMgOS41NCw0LjEzQzkuMiw1IDksNiA5LDdWNy4zNEM2LjY4LDguMTYgNSwxMC4zOCA1LDEzQTYsNiAwIDAsMCAxMSwxOUMxMy42MiwxOSAxNS44NCwxNy4zMiAxNi42NiwxNU0xNywxMEEzLDMgMCAwLDAgMjAsN0EzLDMgMCAwLDAgMTcsNEEzLDMgMCAwLDAgMTQsN0EzLDMgMCAwLDAgMTcsMTBNMTcsMUE2LDYgMCAwLDEgMjMsN0E2LDYgMCAwLDEgMTcsMTNBNiw2IDAgMCwxIDExLDdDMTEsMy42OCAxMy42OSwxIDE3LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ2lyY2xlc0NvbW11bml0aWVzID0gXCJNMTUsMTJDMTMuODksMTIgMTMsMTIuODkgMTMsMTRBMiwyIDAgMCwwIDE1LDE2QTIsMiAwIDAsMCAxNywxNEMxNywxMi44OSAxNi4xLDEyIDE1LDEyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTQsOUMxNCw3Ljg5IDEzLjEsNyAxMiw3QzEwLjg5LDcgMTAsNy44OSAxMCw5QTIsMiAwIDAsMCAxMiwxMUEyLDIgMCAwLDAgMTQsOU05LDEyQTIsMiAwIDAsMCA3LDE0QTIsMiAwIDAsMCA5LDE2QTIsMiAwIDAsMCAxMSwxNEMxMSwxMi44OSAxMC4xLDEyIDksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ2lyY2xlc0V4dGVuZGVkID0gXCJNMTgsMTlDMTYuODksMTkgMTYsMTguMSAxNiwxN0MxNiwxNS44OSAxNi44OSwxNSAxOCwxNUEyLDIgMCAwLDEgMjAsMTdBMiwyIDAgMCwxIDE4LDE5TTE4LDEzQTQsNCAwIDAsMCAxNCwxN0E0LDQgMCAwLDAgMTgsMjFBNCw0IDAgMCwwIDIyLDE3QTQsNCAwIDAsMCAxOCwxM00xMiwxMS4xQTEuOSwxLjkgMCAwLDAgMTAuMSwxM0ExLjksMS45IDAgMCwwIDEyLDE0LjlBMS45LDEuOSAwIDAsMCAxMy45LDEzQTEuOSwxLjkgMCAwLDAgMTIsMTEuMU02LDE5QzQuODksMTkgNCwxOC4xIDQsMTdDNCwxNS44OSA0Ljg5LDE1IDYsMTVBMiwyIDAgMCwxIDgsMTdBMiwyIDAgMCwxIDYsMTlNNiwxM0E0LDQgMCAwLDAgMiwxN0E0LDQgMCAwLDAgNiwyMUE0LDQgMCAwLDAgMTAsMTdBNCw0IDAgMCwwIDYsMTNNMTIsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsOEMxMC44OSw4IDEwLDcuMSAxMCw2QzEwLDQuODkgMTAuODksNCAxMiw0TTEyLDEwQTQsNCAwIDAsMCAxNiw2QTQsNCAwIDAsMCAxMiwyQTQsNCAwIDAsMCA4LDZBNCw0IDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUNpcmNsZXNHcm91cCA9IFwiTTUsMTBBMiwyIDAgMCwwIDMsMTJDMywxMy4xMSAzLjksMTQgNSwxNEM2LjExLDE0IDcsMTMuMTEgNywxMkEyLDIgMCAwLDAgNSwxME01LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhBNCw0IDAgMCwxIDksMTJBNCw0IDAgMCwxIDUsMTZNMTAuNSwxMUgxNFY4TDE4LDEyTDE0LDE2VjEzSDEwLjVWMTFNNSw2QzQuNTUsNiA0LjExLDYuMDUgMy42OSw2LjE0QzUuNjMsMy4wNSA5LjA4LDEgMTMsMUMxOS4wOCwxIDI0LDUuOTIgMjQsMTJDMjQsMTguMDggMTkuMDgsMjMgMTMsMjNDOS4wOCwyMyA1LjYzLDIwLjk1IDMuNjksMTcuODZDNC4xMSwxNy45NSA0LjU1LDE4IDUsMThDNS44LDE4IDYuNTYsMTcuODQgNy4yNSwxNy41NkM4LjcxLDE5LjA3IDEwLjc0LDIwIDEzLDIwQTgsOCAwIDAsMCAyMSwxMkE4LDggMCAwLDAgMTMsNEMxMC43NCw0IDguNzEsNC45MyA3LjI1LDYuNDRDNi41Niw2LjE2IDUuOCw2IDUsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDbGFzc3Jvb20gPSBcIk0yMywySDFBMSwxIDAgMCwwIDAsM1YyMUExLDEgMCAwLDAgMSwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWM0ExLDEgMCAwLDAgMjMsMk0yMiwyMEgyMFYxOUgxNVYyMEgyVjRIMjJWMjBNMTAuMjksOS43MUExLjcxLDEuNzEgMCAwLDEgMTIsOEMxMi45NSw4IDEzLjcxLDguNzcgMTMuNzEsOS43MUMxMy43MSwxMC42NiAxMi45NSwxMS40MyAxMiwxMS40M0MxMS4wNSwxMS40MyAxMC4yOSwxMC42NiAxMC4yOSw5LjcxTTUuNzEsMTEuMjlDNS43MSwxMC41OCA2LjI5LDEwIDcsMTBBMS4yOSwxLjI5IDAgMCwxIDguMjksMTEuMjlDOC4yOSwxMiA3LjcxLDEyLjU3IDcsMTIuNTdDNi4yOSwxMi41NyA1LjcxLDEyIDUuNzEsMTEuMjlNMTUuNzEsMTEuMjlBMS4yOSwxLjI5IDAgMCwxIDE3LDEwQTEuMjksMS4yOSAwIDAsMSAxOC4yOSwxMS4yOUMxOC4yOSwxMiAxNy43MSwxMi41NyAxNywxMi41N0MxNi4yOSwxMi41NyAxNS43MSwxMiAxNS43MSwxMS4yOU0yMCwxNS4xNFYxNkgxNkwxNCwxNkgxMEw4LDE2SDRWMTUuMTRDNCwxNC4yIDUuNTUsMTMuNDMgNywxMy40M0M3LjU1LDEzLjQzIDguMTEsMTMuNTQgOC42LDEzLjczQzkuMzUsMTMuMDQgMTAuNywxMi41NyAxMiwxMi41N0MxMy4zLDEyLjU3IDE0LjY1LDEzLjA0IDE1LjQsMTMuNzNDMTUuODksMTMuNTQgMTYuNDUsMTMuNDMgMTcsMTMuNDNDMTguNDUsMTMuNDMgMjAsMTQuMiAyMCwxNS4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDbG91ZCA9IFwiTTIzIDE0Ljc1QzIzIDE4LjIgMjAuMiAyMSAxNi43NSAyMUg3LjI1QzMuOCAyMSAxIDE4LjIgMSAxNC43NUMxIDEyLjYxIDIuMDggMTAuNzIgMy43MSA5LjZDNC41OCA1LjgyIDcuOTYgMyAxMiAzQzE2LjA0IDMgMTkuNDIgNS44MiAyMC4yOSA5LjZDMjEuOTMgMTAuNzIgMjMgMTIuNjEgMjMgMTQuNzVNMTYuNjMgMTdDMTcuOTQgMTcgMTkgMTUuOTQgMTkgMTQuNjNDMTkgMTMuMzUgMTggMTIuMyAxNi43MiAxMi4yNUwxNi43NSAxMS43NUMxNi43NSA5LjEzIDE0LjYyIDcgMTIgN0MxMC41OCA3IDkuMyA3LjYyIDguNDMgOC42MUM5LjkzIDguOSAxMS4yMyA5LjcyIDEyLjE0IDEwLjg2TDkuNSAxMy41QzkuMDggMTIuNzcgOC4yOSAxMi4yNSA3LjM4IDEyLjI1QzYuMDYgMTIuMjUgNSAxMy4zMSA1IDE0LjYzQzUgMTUuOSA2IDE2LjkzIDcuMjUgMTdWMTdIMTYuNjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ29udHJvbGxlciA9IFwiTTcuOTcsMTZMNSwxOUM0LjY3LDE5LjMgNC4yMywxOS41IDMuNzUsMTkuNUExLjc1LDEuNzUgMCAwLDEgMiwxNy43NVYxNy41TDMsMTAuMTJDMy4yMSw3LjgxIDUuMTQsNiA3LjUsNkgxNi41QzE4Ljg2LDYgMjAuNzksNy44MSAyMSwxMC4xMkwyMiwxNy41VjE3Ljc1QTEuNzUsMS43NSAwIDAsMSAyMC4yNSwxOS41QzE5Ljc3LDE5LjUgMTkuMzMsMTkuMyAxOSwxOUwxNi4wMywxNkg3Ljk3TTcsOFYxMEg1VjExSDdWMTNIOFYxMUgxMFYxMEg4VjhIN00xNi41LDhBMC43NSwwLjc1IDAgMCwwIDE1Ljc1LDguNzVBMC43NSwwLjc1IDAgMCwwIDE2LjUsOS41QTAuNzUsMC43NSAwIDAsMCAxNy4yNSw4Ljc1QTAuNzUsMC43NSAwIDAsMCAxNi41LDhNMTQuNzUsOS43NUEwLjc1LDAuNzUgMCAwLDAgMTQsMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTQuNzUsMTEuMjVBMC43NSwwLjc1IDAgMCwwIDE1LjUsMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTQuNzUsOS43NU0xOC4yNSw5Ljc1QTAuNzUsMC43NSAwIDAsMCAxNy41LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE4LjI1LDExLjI1QTAuNzUsMC43NSAwIDAsMCAxOSwxMC41QTAuNzUsMC43NSAwIDAsMCAxOC4yNSw5Ljc1TTE2LjUsMTEuNUEwLjc1LDAuNzUgMCAwLDAgMTUuNzUsMTIuMjVBMC43NSwwLjc1IDAgMCwwIDE2LjUsMTNBMC43NSwwLjc1IDAgMCwwIDE3LjI1LDEyLjI1QTAuNzUsMC43NSAwIDAsMCAxNi41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ29udHJvbGxlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuNzMsMTZINy45N0w1LDE5QzQuNjcsMTkuMyA0LjIzLDE5LjUgMy43NSwxOS41QTEuNzUsMS43NSAwIDAsMSAyLDE3Ljc1VjE3LjVMMywxMC4xMkMzLjEsOS4wOSAzLjUzLDguMTcgNC4xOSw3LjQ2TDIsNS4yN001LDEwVjExSDdWMTNIOFYxMS4yN0w2LjczLDEwSDVNMTYuNSw2QzE4Ljg2LDYgMjAuNzksNy44MSAyMSwxMC4xMkwyMiwxNy41VjE3Ljc1QzIyLDE4LjQxIDIxLjY0LDE5IDIxLjEsMTkuMjhMNy44Miw2SDE2LjVNMTYuNSw4QTAuNzUsMC43NSAwIDAsMCAxNS43NSw4Ljc1QTAuNzUsMC43NSAwIDAsMCAxNi41LDkuNUEwLjc1LDAuNzUgMCAwLDAgMTcuMjUsOC43NUEwLjc1LDAuNzUgMCAwLDAgMTYuNSw4TTE0Ljc1LDkuNzVBMC43NSwwLjc1IDAgMCwwIDE0LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE0Ljc1LDExLjI1QTAuNzUsMC43NSAwIDAsMCAxNS41LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE0Ljc1LDkuNzVNMTguMjUsOS43NUEwLjc1LDAuNzUgMCAwLDAgMTcuNSwxMC41QTAuNzUsMC43NSAwIDAsMCAxOC4yNSwxMS4yNUEwLjc1LDAuNzUgMCAwLDAgMTksMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTguMjUsOS43NU0xNi41LDExLjVBMC43NSwwLjc1IDAgMCwwIDE1Ljc1LDEyLjI1QTAuNzUsMC43NSAwIDAsMCAxNi41LDEzQTAuNzUsMC43NSAwIDAsMCAxNy4yNSwxMi4yNUEwLjc1LDAuNzUgMCAwLDAgMTYuNSwxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZURvd25hc2F1ciA9IFwiTTEzIDJWM0gxMlY5SDExVjEwSDlWMTFIOFYxMkg3VjEzSDVWMTJINFYxMUgzVjlIMlYxNUgzVjE2SDRWMTdINVYxOEg2VjIySDhWMjFIN1YyMEg4VjE5SDlWMThIMTBWMTlIMTFWMjJIMTNWMjFIMTJWMTdIMTNWMTZIMTRWMTVIMTVWMTJIMTZWMTNIMTdWMTFIMTVWOUgyMFY4SDE3VjdIMjJWM0gyMVYyTTE0IDNIMTVWNEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVEcml2ZSA9IFwiTTcuNzEsMy41TDEuMTUsMTVMNC41OCwyMUwxMS4xMyw5LjVNOS43MywxNUw2LjMsMjFIMTkuNDJMMjIuODUsMTVNMjIuMjgsMTRMMTUuNDIsMkg4LjU4TDguNTcsMkwxNS40MywxNEgyMi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVFYXJ0aCA9IFwiTTEyLDEyLjE0QzExLjA5LDEwLjc3IDEwLjE0LDkuNzggOS4xNCw5LjE5QzguMTQsOC41OSA3LjI3LDguMzggNi41LDguNTVDNS43Nyw4LjczIDUuMTQsOS4xNCA0LjY0LDkuOEM0LjIsMTAuMzkgNCwxMS4wNiA0LDExLjgxVjEyQzQsMTIuNzggNC4xMSwxMy41OCA0LjM2LDE0LjM5QzQuNDUsMTQuNjQgNC41LDE0LjY0IDQuNTUsMTQuMzlDNC42NywxMy43NyA0Ljk2LDEzLjMxIDUuNDEsMTMuMDNDNS44NywxMi43NSA2LjQ3LDEyLjc2IDcuMjIsMTMuMDVDNy45NywxMy4zNSA4LjcsMTQgOS40MiwxNC45NUMxMC43LDE2LjY3IDEyLjIsMTcuNzIgMTMuOTIsMTguMDlDMTYuMTQsMTguNDEgMTcuODEsMTcuNyAxOC45NCwxNkMxOS4yNSwxNS4zOSAxOS41LDE0Ljg2IDE5LjY0LDE0LjM5QzE5LjczLDE0LjA4IDE5LjY5LDE0LjA1IDE5LjUsMTQuM0MxOS4wMywxNC45MiAxOC40LDE1LjMzIDE3LjYsMTUuNUMxNi44LDE1LjcgMTUuODksMTUuNSAxNC44NiwxNUMxMy44MywxNC40MyAxMi44OCwxMy41IDEyLDEyLjE0TTE2Ljk3LDguMTZDMTUuNDEsNS44MSAxMy43Miw0LjUgMTEuOTEsNC4xN0MxMC40NywzLjk1IDguOTEsNC40NSA3LjIyLDUuNjdDNyw1LjgzIDYuOSw1LjkxIDYuOTEsNS45M0M2LjkzLDUuOTUgNy4wNiw1Ljg5IDcuMzEsNS43N0M5LjgxLDQuNTUgMTIuMjIsNS44MyAxNC41Myw5LjYxQzE1LjAzLDEwLjQ1IDE1LjU1LDExLjExIDE2LjEsMTEuNThDMTYuNjUsMTIuMDUgMTcuMTYsMTIuMzMgMTcuNjUsMTIuNDJDMTguMTMsMTIuNSAxOC41NywxMi41IDE4Ljk2LDEyLjM4QzE5LjM1LDEyLjI1IDE5LjcsMTIuMDUgMjAsMTEuNzdDMjAsMTEuMTcgMTkuOTEsMTAuNSAxOS42OSw5LjhDMTkuMTksOS45MiAxOC43NCw5Ljg4IDE4LjM1LDkuNjhDMTcuOTYsOS41IDE3LjUsOC45NyAxNi45Nyw4LjE2TTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlRml0ID0gXCJNMTcsNEE1LDUgMCAwLDEgMjIsOUMyMiwxMC4zOCAyMS40NCwxMS42MyAyMC41NCwxMi41NEwxMiwyMS4wN0wzLjQ2LDEyLjU0QzIuNTYsMTEuNjMgMiwxMC4zOCAyLDlBNSw1IDAgMCwxIDcsNEM4LjM4LDQgOS42Myw0LjU2IDEwLjU0LDUuNDZMMTIsNi45M0wxMy40Niw1LjQ2QzE0LjM3LDQuNTYgMTUuNjIsNCAxNyw0TTE1LjU5LDcuNTlMOS4xNywxNEwxMiwxNi44M0wxOC40MSwxMC40MUMxOC43OCwxMC4wNSAxOSw5LjU1IDE5LDlBMiwyIDAgMCwwIDE3LDdDMTYuNDUsNyAxNS45NSw3LjIyIDE1LjU5LDcuNTlNOC40MSw3LjU5QzguMDUsNy4yMiA3LjU1LDcgNyw3QTIsMiAwIDAsMCA1LDlDNSw5LjU1IDUuMjIsMTAuMDUgNS41OSwxMC40MUw3LjA1LDExLjg4TDkuODgsOS4wNUw4LjQxLDcuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlR2xhc3MgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTYuNzUgMThIMTUuMjVWOC45TDYuNzIgMThINC42NkwxNS40NSA2LjVDMTUuNjYgNi4yNiAxNiA2LjE5IDE2LjI3IDYuM0MxNi41NiA2LjQyIDE2Ljc1IDYuNjkgMTYuNzUgN1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVIYW5nb3V0cyA9IFwiTTE1LDExTDE0LDEzSDEyLjVMMTMuNSwxMUgxMlY4SDE1TTExLDExTDEwLDEzSDguNUw5LjUsMTFIOFY4SDExTTExLjUsMkE4LjUsOC41IDAgMCwwIDMsMTAuNUE4LjUsOC41IDAgMCwwIDExLjUsMTlIMTJWMjIuNUMxNi44NiwyMC4xNSAyMCwxNSAyMCwxMC41QzIwLDUuOCAxNi4xOSwyIDExLjUsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVIb21lID0gXCJNOC4wNiw3Ljc4QzcuNSw3Ljc4IDcuMTcsNy43MyA3LjA4LDcuNjRMNi42NiwxMy43M0M3LjE5LDE0LjA1IDcuODgsMTQuMyA4LjcyLDE0LjVDOS41NiwxNC43MSAxMC43OCwxNC43NyAxMi4zOCwxNC42N0MxMy45NywxNC41OCAxNS42MywxNC4yMyAxNy4zNCwxMy42NEwxNi41NSw0LjIyQzE1LjY3LDUuMDkgMTQuMzgsNS45MSAxMi42Niw2LjY2QzExLjEzLDcuMzEgOS44MSw3LjY5IDguNzIsNy43OEg4LjA2TTcuOTcsNS4zNEM3LjI4LDUuOTQgNyw2LjM0IDcuMTMsNi41NkM3LjIyLDYuNzggNy43LDYuODQgOC41OCw2Ljc1QzkuNjcsNi42NiAxMC45MSw2LjMxIDEyLjI4LDUuNzJDMTMuMjIsNS4zMSAxNC4wMyw0Ljg4IDE0LjcyLDQuNDFDMTUuNDEsMy45NCAxNS44OCwzLjU1IDE2LjEzLDMuMjNDMTYuMzgsMi45MiAxNi40NywyLjcgMTYuNDEsMi41OEMxNi4zNCwyLjQyIDE2LjAzLDIuMzQgMTUuNDcsMi4zNEMxNC4zNCwyLjM0IDEyLjk0LDIuNyAxMS4yNSwzLjQyQzkuODEsNC4wNSA4LjcyLDQuNjkgNy45Nyw1LjM0TTE3LjM0LDIuMkMxNy40MSwyLjMzIDE3LjQ0LDIuNDcgMTcuNDQsMi42M0wxOC42MSwxN0MxOC42MSwxOC43MyAxOCwyMC4wOSAxNi44MywyMS4wN0MxNS42NCwyMi4wNSAxNC4wMywyMi41NSAxMiwyMi41NUMxMCwyMi41NSA4LjQsMjIuMDQgNy4yLDIxQzYsMjAgNS4zOSwxOC42NCA1LjM5LDE2LjkyTDYuMDksNi40N0M2LjA5LDYuMjIgNi4yLDUuOTQgNi40Miw1LjYzQzYuNjQsNS4zMSA2Ljg0LDUuMDYgNy4wMyw0Ljg4TDcuMzYsNC41OUM4LjMzLDMuNzggOS41LDMuMDggMTAuODgsMi41QzExLjgxLDIuMDggMTIuNzMsMS43NyAxMy42MiwxLjU3QzE0LjUsMS4zNyAxNS4zLDEuMyAxNiwxLjM4QzE2LjcxLDEuNDYgMTcuMTYsMS43MyAxNy4zNCwyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlS2VlcCA9IFwiTTQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE3LjMzTDE3LjMzIDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMk0xNyAxN1YyMC4yNUwyMC4yNSAxN0gxN00xMCAxOUgxNFYxOEgxNVYxM0MxNi4yMSAxMi4wOSAxNyAxMC42NCAxNyA5QzE3IDYuMjQgMTQuNzYgNCAxMiA0UzcgNi4yNCA3IDlDNyAxMC42NCA3Ljc5IDEyLjA5IDkgMTNWMThIMTBWMTlNMTQgMTdIMTBWMTVIMTRWMTdNMTIgNUMxNC4yMSA1IDE2IDYuNzkgMTYgOUMxNiAxMC41IDE1LjIgMTEuNzcgMTQgMTIuNDZWMTRIMTBWMTIuNDZDOC44IDExLjc3IDggMTAuNSA4IDlDOCA2Ljc5IDkuNzkgNSAxMiA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUxlbnMgPSBcIk02LDJIMThBNCw0IDAgMCwxIDIyLDZWMTJIMjBWNkEyLDIgMCAwLDAgMTgsNEg2QTIsMiAwIDAsMCA0LDZWMThBMiwyIDAgMCwwIDYsMjBIMTJWMjJINkE0LDQgMCAwLDEgMiwxOFY2QTQsNCAwIDAsMSA2LDJNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTE4LDE2QTIsMiAwIDAsMSAyMCwxOEEyLDIgMCAwLDEgMTgsMjBBMiwyIDAgMCwxIDE2LDE4QTIsMiAwIDAsMSAxOCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVNYXBzID0gXCJNMTguMjcgNkMxOS4yOCA4LjE3IDE5LjA1IDEwLjczIDE3Ljk0IDEyLjgxQzE3IDE0LjUgMTUuNjUgMTUuOTMgMTQuNSAxNy41QzE0IDE4LjIgMTMuNSAxOC45NSAxMy4xMyAxOS43NkMxMyAyMC4wMyAxMi45MSAyMC4zMSAxMi44MSAyMC41OUMxMi43MSAyMC44NyAxMi42MiAyMS4xNSAxMi41MyAyMS40M0MxMi40NCAyMS42OSAxMi4zMyAyMiAxMiAyMkgxMkMxMS42MSAyMiAxMS41IDIxLjU2IDExLjQyIDIxLjI2QzExLjE4IDIwLjUzIDEwLjk0IDE5LjgzIDEwLjU3IDE5LjE2QzEwLjE1IDE4LjM3IDkuNjIgMTcuNjQgOS4wOCAxNi45M0wxOC4yNyA2TTkuMTIgOC40Mkw1LjgyIDEyLjM0QzYuNDMgMTMuNjMgNy4zNCAxNC43MyA4LjIxIDE1LjgzQzguNDIgMTYuMDggOC42MyAxNi4zNCA4LjgzIDE2LjYxTDEzIDExLjY3TDEyLjk2IDExLjY4QzExLjUgMTIuMTggOS44OCAxMS40NCA5LjMgMTBDOS4yMiA5LjgzIDkuMTYgOS42MyA5LjEyIDkuNDNDOS4wNyA5LjA2IDkuMDYgOC43OSA5LjEyIDguNDNMOS4xMiA4LjQyTTYuNTggNC42Mkw2LjU3IDQuNjNDNC45NSA2LjY4IDQuNjcgOS41MyA1LjY0IDExLjk0TDkuNjMgNy4yTDkuNTggNy4xNUw2LjU4IDQuNjJNMTQuMjIgMi4zNkwxMSA2LjE3TDExLjA0IDYuMTZDMTIuMzggNS43IDEzLjg4IDYuMjggMTQuNTYgNy41QzE0LjcxIDcuNzggMTQuODMgOC4wOCAxNC44NyA4LjM4QzE0LjkzIDguNzYgMTQuOTUgOS4wMyAxNC44OCA5LjRMMTQuODggOS40MUwxOC4wOCA1LjYxQzE3LjI0IDQuMDkgMTUuODcgMi45MyAxNC4yMyAyLjM3TDE0LjIyIDIuMzZNOS44OSA2Ljg5TDEzLjggMi4yNEwxMy43NiAyLjIzQzEzLjE4IDIuMDggMTIuNTkgMiAxMiAyQzEwLjAzIDIgOC4xNyAyLjg1IDYuODUgNC4zMUw2LjgzIDQuMzJMOS44OSA2Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZU15QnVzaW5lc3MgPSBcIk0yMiA4LjVDMjIgOS44NyAyMC44OCAxMSAxOS41IDExUzE3IDkuODcgMTcgOC41QzE3IDkuODcgMTUuODggMTEgMTQuNSAxMUMxMy4xMiAxMSAxMiA5Ljg3IDEyIDguNUMxMiA5Ljg3IDEwLjg4IDExIDkuNSAxMVM3IDkuODcgNyA4LjVDNyA5Ljg3IDUuODggMTEgNC41IDExUzIgOS44NyAyIDguNUwzLjM5IDMuMDhDMy4zOSAzLjA4IDMuNjggMiA0LjcgMkgxOS4zQzIwLjMyIDIgMjAuNjEgMy4wOCAyMC42MSAzLjA4TDIyIDguNU0yMSAxMi4yVjIwQzIxIDIxLjEgMjAuMSAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjEgMyAyMFYxMi4yQzMuNDYgMTIuMzkgMy45NyAxMi41IDQuNSAxMi41QzUuNDUgMTIuNSA2LjMyIDEyLjE3IDcgMTEuNjJDNy42OSAxMi4xNyA4LjU2IDEyLjUgOS41IDEyLjVDMTAuNDUgMTIuNSAxMS4zMiAxMi4xNyAxMiAxMS42MkMxMi42OSAxMi4xNyAxMy41NiAxMi41IDE0LjUgMTIuNUMxNS40NSAxMi41IDE2LjMyIDEyLjE3IDE3IDExLjYyQzE3LjY4IDEyLjE3IDE4LjU2IDEyLjUgMTkuNSAxMi41QzIwLjAzIDEyLjUgMjAuNTQgMTIuMzkgMjEgMTIuMk0xOSAxNy4zM0MxOSAxNy4xMyAxOSAxNi45MiAxOC45NSAxNi43TDE4LjkyIDE2LjU0SDE1Ljk1VjE3LjcxSDE3Ljc2QzE3LjcgMTcuOTMgMTcuNjIgMTguMTUgMTcuNDUgMTguMzNDMTcuMTIgMTguNjYgMTYuNjcgMTguODQgMTYuMTkgMTguODRDMTUuNjkgMTguODQgMTUuMiAxOC42MyAxNC44NCAxOC4yOEMxNC4xNSAxNy41NyAxNC4xNSAxNi40MiAxNC44NiAxNS43QzE1LjU1IDE1IDE2LjY5IDE1IDE3LjQxIDE1LjY3TDE3LjU1IDE1LjhMMTguMzkgMTQuOTVMMTguMjMgMTQuODFDMTcuNjcgMTQuMjkgMTYuOTMgMTQgMTYuMTUgMTRIMTYuMTRDMTUuMzMgMTQgMTQuNTcgMTQuMzEgMTQgMTQuODdDMTMuNDEgMTUuNDUgMTMuMDggMTYuMjEgMTMuMDggMTdDMTMuMDggMTcuOCAxMy4zOSAxOC41NCAxMy45NiAxOS4wOUgxMy45NkMxNC41NCAxOS42NiAxNS4zNSAyMCAxNi4xOCAyMEgxNi4yQzE3IDIwIDE3LjcxIDE5LjcxIDE4LjIzIDE5LjJDMTguNyAxOC43MiAxOSAxOCAxOSAxNy4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVOZWFyYnkgPSBcIk0yMS4zNiwxMC40NkwxMy41NCwyLjY0QzEyLjY5LDEuNzkgMTEuMzEsMS43OSAxMC40NiwyLjY0TDIuNjQsMTAuNDZDMS43OSwxMS4zMSAxLjc5LDEyLjY5IDIuNjQsMTMuNTRMMTAuNDYsMjEuMzZDMTEuMzEsMjIuMjEgMTIuNjksMjIuMjEgMTMuNTQsMjEuMzZMMjEuMzYsMTMuNTRDMjIuMjEsMTIuNjkgMjIuMjEsMTEuMzEgMjEuMzYsMTAuNDZNMTIsMTlMNSwxMkwxMiw1TDE5LDEyTDEyLDE5TTE2LjUsMTJMMTIsMTYuNUw3LjUsMTJMMTIsNy41TDE2LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlUGhvdG9zID0gXCJNMTAsMTNDMTAuNTUsMTMgMTEsMTMuMTggMTEuNDEsMTMuNTdDMTEuOCwxMy45NiAxMiwxNC40NCAxMiwxNVYyMkMxMiwyMi4xNyAxMS45MSwyMi4yNyAxMS43MiwyMi4yN0MxMS42NiwyMi4yNyAxMS41OCwyMi4yMiAxMS41LDIyLjEzTDcsMTcuNjdWMTNIMTBNMTIuNSwxLjg4TDE3LDYuMzNWMTFIMTRDMTMuNDUsMTEgMTMsMTAuODIgMTIuNTksMTAuNDNDMTIuMiwxMC4wNCAxMiw5LjU2IDEyLDlWMkMxMiwxLjgzIDEyLjA5LDEuNzMgMTIuMjgsMS43M0MxMi4zNCwxLjczIDEyLjQyLDEuNzggMTIuNSwxLjg4TTIyLDEyQzIyLjE3LDEyIDIyLjI3LDEyLjA5IDIyLjI3LDEyLjI4QzIyLjI3LDEyLjM0IDIyLjIyLDEyLjQyIDIyLjEzLDEyLjVMMTcuNjcsMTdIMTNWMTRDMTMsMTMuNDUgMTMuMTgsMTMgMTMuNTcsMTIuNTlDMTMuOTYsMTIuMiAxNC40NCwxMiAxNSwxMkgyMk02LjMzLDdIMTFWMTBDMTEsMTAuNTUgMTAuODIsMTEgMTAuNDMsMTEuNDFDMTAuMDQsMTEuOCA5LjU2LDEyIDksMTJIMkMxLjgzLDEyIDEuNzMsMTEuOTEgMS43MywxMS43MkMxLjczLDExLjY2IDEuNzgsMTEuNTggMS44OCwxMS41TDYuMzMsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVQbGF5ID0gXCJNMywyMC41VjMuNUMzLDIuOTEgMy4zNCwyLjM5IDMuODQsMi4xNUwxMy42OSwxMkwzLjg0LDIxLjg1QzMuMzQsMjEuNiAzLDIxLjA5IDMsMjAuNU0xNi44MSwxNS4xMkw2LjA1LDIxLjM0TDE0LjU0LDEyLjg1TDE2LjgxLDE1LjEyTTIwLjE2LDEwLjgxQzIwLjUsMTEuMDggMjAuNzUsMTEuNSAyMC43NSwxMkMyMC43NSwxMi41IDIwLjUzLDEyLjkgMjAuMTgsMTMuMThMMTcuODksMTQuNUwxNS4zOSwxMkwxNy44OSw5LjVMMjAuMTYsMTAuODFNNi4wNSwyLjY2TDE2LjgxLDguODhMMTQuNTQsMTEuMTVMNi4wNSwyLjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZVBsdXMgPSBcIk0yMywxMUgyMVY5SDE5VjExSDE3VjEzSDE5VjE1SDIxVjEzSDIzTTgsMTFWMTMuNEgxMkMxMS44LDE0LjQgMTAuOCwxNi40IDgsMTYuNEM1LjYsMTYuNCAzLjcsMTQuNCAzLjcsMTJDMy43LDkuNiA1LjYsNy42IDgsNy42QzkuNCw3LjYgMTAuMyw4LjIgMTAuOCw4LjdMMTIuNyw2LjlDMTEuNSw1LjcgOS45LDUgOCw1QzQuMSw1IDEsOC4xIDEsMTJDMSwxNS45IDQuMSwxOSA4LDE5QzEyLDE5IDE0LjcsMTYuMiAxNC43LDEyLjJDMTQuNywxMS43IDE0LjcsMTEuNCAxNC42LDExSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlUG9kY2FzdCA9IFwiTTE3LjY4LDcuMjJWOC42MkMxNy42OCw5LjMgMTcuMTMsOS44NiAxNi40Myw5Ljg2QzE1Ljc0LDkuODYgMTUuMTgsOS4zIDE1LjE4LDguNjJWNy4yMkExLjI1LDEuMjUgMCAwLDEgMTYuNDMsNS45N0MxNy4xMyw1Ljk3IDE3LjY4LDYuNTMgMTcuNjgsNy4yMk0xMy4yNSw4LjM2VjE1LjYzQzEzLjI1LDE2LjMyIDEyLjY5LDE2Ljg4IDEyLDE2Ljg4QzExLjMxLDE2Ljg4IDEwLjc1LDE2LjMyIDEwLjc1LDE1LjYzVjguMzZDMTAuNzUsNy42OCAxMS4zMSw3LjExIDEyLDcuMTFDMTIuNjksNy4xMSAxMy4yNSw3LjY4IDEzLjI1LDguMzZNMjIsMTEuM1YxMi43QzIyLDEzLjM4IDIxLjQ0LDEzLjk0IDIwLjc1LDEzLjk0QzIwLjA2LDEzLjk0IDE5LjUsMTMuMzggMTkuNSwxMi43VjExLjNDMTkuNSwxMC42MSAyMC4wNiwxMC4wNiAyMC43NSwxMC4wNkMyMS40NCwxMC4wNiAyMiwxMC42MSAyMiwxMS4zTTQuNSwxMS4zVjEyLjdDNC41LDEzLjM4IDMuOTQsMTMuOTQgMy4yNSwxMy45NEMyLjU1LDEzLjk0IDIsMTMuMzggMiwxMi43VjExLjNDMiwxMC42MSAyLjU1LDEwLjA2IDMuMjUsMTAuMDZDMy45NCwxMC4wNiA0LjUsMTAuNjEgNC41LDExLjNNOC44MiwxNS4zOFYxNi43N0M4LjgyLDE3LjQ1IDguMjYsMTggNy41NywxOEM2Ljg4LDE4IDYuMzIsMTcuNDUgNi4zMiwxNi43N1YxNS4zOEM2LjMyLDE0LjY4IDYuODgsMTQuMTMgNy41NywxNC4xM0ExLjI1LDEuMjUgMCAwLDEgOC44MiwxNS4zOE0xMy4yNSwxOS4zNlYyMC43NUExLjI1LDEuMjUgMCAwLDEgMTIsMjJBMS4yNSwxLjI1IDAgMCwxIDEwLjc1LDIwLjc1VjE5LjM2QTEuMjUsMS4yNSAwIDAsMSAxMiwxOC4xMUExLjI1LDEuMjUgMCAwLDEgMTMuMjUsMTkuMzZNMTMuMjUsMy4yNVY0LjY0QTEuMjUsMS4yNSAwIDAsMSAxMiw1Ljg5QTEuMjUsMS4yNSAwIDAsMSAxMC43NSw0LjY0VjMuMjVDMTAuNzUsMi41NSAxMS4zMSwyIDEyLDJBMS4yNSwxLjI1IDAgMCwxIDEzLjI1LDMuMjVNMTcuNjgsMTIuMzRWMTYuNzdDMTcuNjgsMTcuNDYgMTcuMTMsMTggMTYuNDMsMThDMTUuNzQsMTggMTUuMTgsMTcuNDYgMTUuMTgsMTYuNzdWMTIuMzRDMTUuMTgsMTEuNjQgMTUuNzQsMTEuMDkgMTYuNDMsMTEuMDlDMTcuMTMsMTEuMDkgMTcuNjgsMTEuNjQgMTcuNjgsMTIuMzRNOC44Miw3LjIyVjExLjY1QzguODIsMTIuMzUgOC4yNiwxMi45IDcuNTcsMTIuOUExLjI1LDEuMjUgMCAwLDEgNi4zMiwxMS42NVY3LjIyQTEuMjUsMS4yNSAwIDAsMSA3LjU3LDUuOTdBMS4yNSwxLjI1IDAgMCwxIDguODIsNy4yMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVTcHJlYWRzaGVldCA9IFwiTTE5LDExVjlIMTFWNUg5VjlINVYxMUg5VjE5SDExVjExSDE5TTE5LDNDMTkuNSwzIDIwLDMuMiAyMC4zOSwzLjYxQzIwLjgsNCAyMSw0LjUgMjEsNVYxOUMyMSwxOS41IDIwLjgsMjAgMjAuMzksMjAuMzlDMjAsMjAuOCAxOS41LDIxIDE5LDIxSDVDNC41LDIxIDQsMjAuOCAzLjYxLDIwLjM5QzMuMiwyMCAzLDE5LjUgMywxOVY1QzMsNC41IDMuMiw0IDMuNjEsMy42MUM0LDMuMiA0LjUsMyA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlU3RyZWV0VmlldyA9IFwiTTExLjk1LDkuMjdDMTMuOTYsOS4yNyAxNS41OSw3LjY0IDE1LjU5LDUuNjNDMTUuNTksMy42MyAxMy45NiwyIDExLjk1LDJDOS45NCwyIDguMzIsMy42MyA4LjMyLDUuNjNDOC4zMiw3LjY0IDkuOTQsOS4yNyAxMS45NSw5LjI3TTkuMzYsMTIuOTdDOS4zNiwxMi45NyA4LjI3LDE1Ljk0IDcuOTYsMTYuNUM3Ljg1LDE2LjcxIDcuODcsMTYuNzcgNy42LDE2Ljc3QzcuMzMsMTYuNzcgNi45MSwxNi41IDYuOTEsMTYuNUM2LjkxLDE2LjUgNi43MSwxNi4zNyA2Ljc5LDE2LjE0QzcuMDMsMTUuNCA4LjEyLDExLjA4IDguMzUsMTAuMjVDOC42LDkuMzYgOS4yOCw5LjM5IDkuMjgsOS4zOUg5LjkzTDEyLjAzLDEzLjA0TDE0LjE0LDkuMzlIMTQuOTJDMTQuOTIsOS4zOSAxNS4yMyw5LjQzIDE1LjQ2LDkuN0MxNS43LDkuOTcgMTUuNzUsMTAuNDQgMTUuNzUsMTAuNDRMMTcuMTQsMTUuODRDMTcuMTQsMTUuODQgMTcuMjQsMTYuMjIgMTcuMjEsMTYuMzNDMTcuMTcsMTYuNSAxNy4wOCwxNi41IDE3LjA4LDE2LjVDMTcuMDgsMTYuNSAxNi42OSwxNi42MiAxNi40NywxNi42OUMxNi4wNywxNi44MiAxNiwxNi40NCAxNiwxNi40NEwxNC43LDEzLjA0TDE0LjU1LDIySDEyLjZMMTIuMjcsMTYuODlDMTIuMjcsMTYuODkgMTIuMjEsMTYuNzYgMTIuMDMsMTYuNzZDMTEuODYsMTYuNzYgMTEuOCwxNi44OSAxMS44LDE2Ljg5TDExLjQ1LDIySDkuNUw5LjM3LDEyLjk3SDkuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlVHJhbnNsYXRlID0gXCJNMjAsNUgxMC44OEwxMCwySDRBMiwyIDAgMCwwIDIsNFYxN0EyLDIgMCAwLDAgNCwxOUgxMUwxMiwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWN0EyLDIgMCAwLDAgMjAsNU03LjE3LDE0LjU5QTQuMDksNC4wOSAwIDAsMSAzLjA4LDEwLjVBNC4wOSw0LjA5IDAgMCwxIDcuMTcsNi40MUM4LjIxLDYuNDEgOS4xNiw2Ljc4IDkuOTEsNy41TDEwLDcuNTRMOC43NSw4LjcyTDguNjksOC42N0M4LjQsOC40IDcuOTEsOC4wOCA3LjE3LDguMDhDNS44Niw4LjA4IDQuNzksOS4xNyA0Ljc5LDEwLjVDNC43OSwxMS44MyA1Ljg2LDEyLjkyIDcuMTcsMTIuOTJDOC41NCwxMi45MiA5LjEzLDEyLjA1IDkuMjksMTEuNDZINy4wOFY5LjkxSDExLjAzTDExLjA0LDEwQzExLjA4LDEwLjE5IDExLjA5LDEwLjM4IDExLjA5LDEwLjU5QzExLjA5LDEyLjk0IDkuNSwxNC41OSA3LjE3LDE0LjU5TTEzLjIsMTIuODhDMTMuNTMsMTMuNSAxMy45NCwxNC4wNiAxNC4zOSwxNC41OEwxMy44NSwxNS4xMUwxMy4yLDEyLjg4TTEzLjk3LDEyLjEySDEzTDEyLjY3LDExLjA4SDE2LjY2QzE2LjY2LDExLjA4IDE2LjMyLDEyLjM5IDE1LjEsMTMuODJDMTQuNTgsMTMuMiAxNC4yMSwxMi41OSAxMy45NywxMi4xMk0yMSwyMEExLDEgMCAwLDEgMjAsMjFIMTNMMTUsMTlMMTQuMTksMTYuMjNMMTUuMTEsMTUuMzFMMTcuNzksMThMMTguNSwxNy4yN0wxNS44MSwxNC41OUMxNi43MSwxMy41NiAxNy40MSwxMi4zNCAxNy43MywxMS4wOEgxOVYxMC4wNEgxNS4zNlY5SDE0LjMyVjEwLjA0SDEyLjM2TDExLjE4LDZIMjBBMSwxIDAgMCwxIDIxLDdWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhZGllbnQgPSBcIk0xMSw5SDEzVjExSDExVjlNOSwxMUgxMVYxM0g5VjExTTEzLDExSDE1VjEzSDEzVjExTTE1LDlIMTdWMTFIMTVWOU03LDlIOVYxMUg3VjlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNOSwxOEg3VjE2SDlWMThNMTMsMThIMTFWMTZIMTNWMThNMTcsMThIMTVWMTZIMTdWMThNMTksMTFIMTdWMTNIMTlWMTVIMTdWMTNIMTVWMTVIMTNWMTNIMTFWMTVIOVYxM0g3VjE1SDVWMTNIN1YxMUg1VjVIMTlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhaW4gPSBcIk0xMCwxMkEyLDIgMCAwLDAgOCwxNEEyLDIgMCAwLDAgMTAsMTZBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxMCwxMk02LDhBMiwyIDAgMCwwIDQsMTBBMiwyIDAgMCwwIDYsMTJBMiwyIDAgMCwwIDgsMTBBMiwyIDAgMCwwIDYsOE02LDE2QTIsMiAwIDAsMCA0LDE4QTIsMiAwIDAsMCA2LDIwQTIsMiAwIDAsMCA4LDE4QTIsMiAwIDAsMCA2LDE2TTE4LDhBMiwyIDAgMCwwIDIwLDZBMiwyIDAgMCwwIDE4LDRBMiwyIDAgMCwwIDE2LDZBMiwyIDAgMCwwIDE4LDhNMTQsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwyMEEyLDIgMCAwLDAgMTYsMThBMiwyIDAgMCwwIDE0LDE2TTE4LDEyQTIsMiAwIDAsMCAxNiwxNEEyLDIgMCAwLDAgMTgsMTZBMiwyIDAgMCwwIDIwLDE0QTIsMiAwIDAsMCAxOCwxMk0xNCw4QTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDE2LDEwQTIsMiAwIDAsMCAxNCw4TTEwLDRBMiwyIDAgMCwwIDgsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsNkEyLDIgMCAwLDAgMTAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmFwaCA9IFwiTTE5LjUgMTdDMTkuMzcgMTcgMTkuMjQgMTcgMTkuMTEgMTcuMDRMMTcuNSAxMy43OUMxNy45NSAxMy4zNCAxOC4yNSAxMi43MSAxOC4yNSAxMkMxOC4yNSAxMC42MiAxNy4xMyA5LjUgMTUuNzUgOS41QzE1LjYyIDkuNSAxNS41IDkuNSAxNS4zNiA5LjU0TDEzLjczIDYuMjlDMTQuMjEgNS44NCAxNC41IDUuMjEgMTQuNSA0LjVDMTQuNSAzLjEyIDEzLjM4IDIgMTIgMlM5LjUgMy4xMiA5LjUgNC41QzkuNSA1LjIxIDkuNzkgNS44NCAxMC4yNiA2LjI5TDguNjQgOS41NEM4LjUgOS41IDguMzggOS41IDguMjUgOS41QzYuODcgOS41IDUuNzUgMTAuNjIgNS43NSAxMkM1Ljc1IDEyLjcxIDYuMDUgMTMuMzQgNi41IDEzLjc5TDQuODkgMTcuMDRDNC43NiAxNyA0LjYzIDE3IDQuNSAxN0MzLjEyIDE3IDIgMTguMTIgMiAxOS41QzIgMjAuODggMy4xMiAyMiA0LjUgMjJTNyAyMC44OCA3IDE5LjVDNyAxOC44IDYuNzEgMTguMTYgNi4yNCAxNy43MUw3Ljg2IDE0LjQ2QzggMTQuNSA4LjEyIDE0LjUgOC4yNSAxNC41QzguMzggMTQuNSA4LjUgMTQuNSA4LjY0IDE0LjQ2TDEwLjI3IDE3LjcxQzkuOCAxOC4xNiA5LjUgMTguOCA5LjUgMTkuNUM5LjUgMjAuODggMTAuNjIgMjIgMTIgMjJTMTQuNSAyMC44OCAxNC41IDE5LjVDMTQuNSAxOC4xMiAxMy4zOCAxNyAxMiAxN0MxMS44NyAxNyAxMS43NCAxNyAxMS42MSAxNy4wNEwxMCAxMy43OUMxMC40NiAxMy4zNCAxMC43NSAxMi43MSAxMC43NSAxMlMxMC40NiAxMC42NiAxMCAxMC4yMUwxMS42MSA2Ljk2QzExLjc0IDcgMTEuODcgNyAxMiA3UzEyLjI2IDcgMTIuMzkgNi45NkwxNCAxMC4yMUMxMy41NSAxMC42NiAxMy4yNSAxMS4zIDEzLjI1IDEyQzEzLjI1IDEzLjM4IDE0LjM3IDE0LjUgMTUuNzUgMTQuNUMxNS44OCAxNC41IDE2IDE0LjUgMTYuMTQgMTQuNDZMMTcuNzcgMTcuNzFDMTcuMyAxOC4xNiAxNyAxOC44IDE3IDE5LjVDMTcgMjAuODggMTguMTIgMjIgMTkuNSAyMlMyMiAyMC44OCAyMiAxOS41QzIyIDE4LjEyIDIwLjg4IDE3IDE5LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhcGhPdXRsaW5lID0gXCJNMTkuNSAxN0MxOS4zNiAxNyAxOS4yNCAxNyAxOS4xMSAxNy4wNEwxNy41IDEzLjhDMTcuOTUgMTMuMzUgMTguMjUgMTIuNzEgMTguMjUgMTJDMTguMjUgMTAuNjIgMTcuMTMgOS41IDE1Ljc1IDkuNUMxNS42MSA5LjUgMTUuNSA5LjUgMTUuMzUgOS41NEwxMy43NCA2LjNDMTQuMjEgNS44NCAxNC41IDUuMjEgMTQuNSA0LjVDMTQuNSAzLjEyIDEzLjM4IDIgMTIgMlM5LjUgMy4xMiA5LjUgNC41QzkuNSA1LjIgOS43OSA1Ljg0IDEwLjI2IDYuMjlMOC42NSA5LjU0QzguNSA5LjUgOC4zOSA5LjUgOC4yNSA5LjVDNi44NyA5LjUgNS43NSAxMC42MiA1Ljc1IDEyQzUuNzUgMTIuNzEgNi4wNCAxMy4zNCA2LjUgMTMuNzlMNC44OSAxNy4wNEM0Ljc2IDE3IDQuNjQgMTcgNC41IDE3QzMuMTIgMTcgMiAxOC4xMiAyIDE5LjVDMiAyMC44OCAzLjEyIDIyIDQuNSAyMlM3IDIwLjg4IDcgMTkuNUM3IDE4LjggNi43MSAxOC4xNiA2LjI0IDE3LjcxTDcuODYgMTQuNDZDOCAxNC41IDguMTIgMTQuNSA4LjI1IDE0LjVDOC4zOCAxNC41IDguNSAxNC41IDguNjMgMTQuNDZMMTAuMjYgMTcuNzFDOS43OSAxOC4xNiA5LjUgMTguOCA5LjUgMTkuNUM5LjUgMjAuODggMTAuNjIgMjIgMTIgMjJTMTQuNSAyMC44OCAxNC41IDE5LjVDMTQuNSAxOC4xMiAxMy4zOCAxNyAxMiAxN0MxMS44NyAxNyAxMS43NCAxNyAxMS42MSAxNy4wNEwxMCAxMy44QzEwLjQ1IDEzLjM1IDEwLjc1IDEyLjcxIDEwLjc1IDEyQzEwLjc1IDExLjMgMTAuNDYgMTAuNjcgMTAgMTAuMjFMMTEuNjEgNi45NkMxMS43NCA3IDExLjg3IDcgMTIgN0MxMi4xMyA3IDEyLjI2IDcgMTIuMzkgNi45NkwxNCAxMC4yMUMxMy41NCAxMC42NiAxMy4yNSAxMS4zIDEzLjI1IDEyQzEzLjI1IDEzLjM4IDE0LjM3IDE0LjUgMTUuNzUgMTQuNUMxNS44OCAxNC41IDE2IDE0LjUgMTYuMTMgMTQuNDZMMTcuNzYgMTcuNzFDMTcuMjkgMTguMTYgMTcgMTguOCAxNyAxOS41QzE3IDIwLjg4IDE4LjEyIDIyIDE5LjUgMjJTMjIgMjAuODggMjIgMTkuNUMyMiAxOC4xMiAyMC44OCAxNyAxOS41IDE3TTQuNSAyMC41QzMuOTUgMjAuNSAzLjUgMjAuMDUgMy41IDE5LjVTMy45NSAxOC41IDQuNSAxOC41IDUuNSAxOC45NSA1LjUgMTkuNSA1LjA1IDIwLjUgNC41IDIwLjVNMTMgMTkuNUMxMyAyMC4wNSAxMi41NSAyMC41IDEyIDIwLjVTMTEgMjAuMDUgMTEgMTkuNSAxMS40NSAxOC41IDEyIDE4LjUgMTMgMTguOTUgMTMgMTkuNU03LjI1IDEyQzcuMjUgMTEuNDUgNy43IDExIDguMjUgMTFTOS4yNSAxMS40NSA5LjI1IDEyIDguOCAxMyA4LjI1IDEzIDcuMjUgMTIuNTUgNy4yNSAxMk0xMSA0LjVDMTEgMy45NSAxMS40NSAzLjUgMTIgMy41UzEzIDMuOTUgMTMgNC41IDEyLjU1IDUuNSAxMiA1LjUgMTEgNS4wNSAxMSA0LjVNMTQuNzUgMTJDMTQuNzUgMTEuNDUgMTUuMiAxMSAxNS43NSAxMVMxNi43NSAxMS40NSAxNi43NSAxMiAxNi4zIDEzIDE1Ljc1IDEzIDE0Ljc1IDEyLjU1IDE0Ljc1IDEyTTE5LjUgMjAuNUMxOC45NSAyMC41IDE4LjUgMjAuMDUgMTguNSAxOS41UzE4Ljk1IDE4LjUgMTkuNSAxOC41IDIwLjUgMTguOTUgMjAuNSAxOS41IDIwLjA1IDIwLjUgMTkuNSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyYXBocWwgPSBcIk0xMiw1LjM3TDExLjU2LDUuMzFMNiwxNC45QzYuMjQsMTUuMTEgNi40LDE1LjM4IDYuNDcsMTUuNjhIMTcuNTNDMTcuNiwxNS4zOCAxNy43NiwxNS4xMSAxOCwxNC45TDEyLjQ0LDUuMzFMMTIsNS4zN002LjYsMTYuNTNMMTAuODgsMTkuMDZDMTEuMTcsMTguNzkgMTEuNTcsMTguNjMgMTIsMTguNjNDMTIuNDMsMTguNjMgMTIuODMsMTguNzkgMTMuMTIsMTkuMDZMMTcuNCwxNi41M0g2LjZNMTIsMjJBMS42OCwxLjY4IDAgMCwxIDEwLjMyLDIwLjMyTDEwLjQxLDE5Ljc2TDYuMTEsMTcuMjFDNS44LDE3LjU3IDUuMzUsMTcuNzkgNC44NCwxNy43OUExLjY4LDEuNjggMCAwLDEgMy4xNiwxNi4xMUMzLjE2LDE1LjMyIDMuNjksMTQuNjYgNC40MiwxNC40N1Y5LjM2QzMuNTksOS4yNSAyLjk1LDguNTQgMi45NSw3LjY4QTEuNjgsMS42OCAwIDAsMSA0LjYzLDZDNS4xOCw2IDUuNjYsNi4yNiA1Ljk3LDYuNjZMMTAuMzgsNC4xM0wxMC4zMiwzLjY4QzEwLjMyLDIuNzUgMTEuMDcsMiAxMiwyQzEyLjkzLDIgMTMuNjgsMi43NSAxMy42OCwzLjY4TDEzLjYyLDQuMTNMMTguMDMsNi42NkMxOC4zNCw2LjI2IDE4LjgyLDYgMTkuMzcsNkExLjY4LDEuNjggMCAwLDEgMjEuMDUsNy42OEMyMS4wNSw4LjU0IDIwLjQxLDkuMjUgMTkuNTgsOS4zNlYxNC40N0MyMC4zMSwxNC42NiAyMC44NCwxNS4zMiAyMC44NCwxNi4xMUExLjY4LDEuNjggMCAwLDEgMTkuMTYsMTcuNzlDMTguNjUsMTcuNzkgMTguMiwxNy41NyAxNy44OSwxNy4yMUwxMy41OSwxOS43NkwxMy42OCwyMC4zMkExLjY4LDEuNjggMCAwLDEgMTIsMjJNMTAuOCw0Ljg2TDYuMyw3LjQ0TDYuMzIsNy42OEM2LjMyLDguMzkgNS44OCw5IDUuMjYsOS4yNUw1LjI5LDE0LjVMMTAuOCw0Ljg2TTEzLjIsNC44NkwxOC43MSwxNC41TDE4Ljc0LDkuMjVDMTguMTIsOSAxNy42OCw4LjM5IDE3LjY4LDcuNjhMMTcuNyw3LjQ0TDEzLjIsNC44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmFzcyA9IFwiTTEyIDIwSDJWMThINy43NUM3IDE1LjE5IDQuODEgMTMgMiAxMi4yNkMyLjY0IDEyLjEgMy4zMSAxMiA0IDEyQzguNDIgMTIgMTIgMTUuNTggMTIgMjBNMjIgMTIuMjZDMjEuMzYgMTIuMSAyMC42OSAxMiAyMCAxMkMxNy4wNyAxMiAxNC41IDEzLjU4IDEzLjEyIDE1LjkzQzEzLjQxIDE2LjU5IDEzLjY1IDE3LjI4IDEzLjc5IDE4QzEzLjkyIDE4LjY1IDE0IDE5LjMyIDE0IDIwSDIyVjE4SDE2LjI0QzE3IDE1LjE5IDE5LjE5IDEzIDIyIDEyLjI2TTE1LjY0IDExQzE2LjQyIDguOTMgMTcuODcgNy4xOCAxOS43MyA2QzE1LjQ0IDYuMTYgMTIgOS42NyAxMiAxNFYxNEMxMi45NSAxMi43NSAxNC4yIDExLjcyIDE1LjY0IDExTTExLjQyIDguODVDMTAuNTggNi42NiA4Ljg4IDQuODkgNi43IDRDOC4xNCA1Ljg2IDkgOC4xOCA5IDEwLjcxQzkgMTAuOTIgOC45NyAxMS4xMiA4Ljk2IDExLjMyQzkuMzkgMTEuNTYgOS43OSAxMS44NCAxMC4xOCAxMi4xNEMxMC4zOSAxMC45NiAxMC44MyA5Ljg1IDExLjQyIDguODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhdmVTdG9uZSA9IFwiTTEwLDJIMTRDMTcuMzEsMiAxOSw0LjY5IDE5LDhWMTguNjZDMTYuODgsMTcuNjMgMTUuMDcsMTcgMTIsMTdDOC45MywxNyA3LjEyLDE3LjYzIDUsMTguNjZWOEM1LDQuNjkgNi42OSwyIDEwLDJNOCw4VjkuNUgxNlY4SDhNOSwxMlYxMy41SDE1VjEySDlNMywyMlYyMS4zMUM1LjY2LDE5LjYyIDEzLjIzLDE1Ljg0IDIxLDIxLjI1VjIySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JlYXNlUGVuY2lsID0gXCJNMTguNjIsMS41QzE4LjExLDEuNSAxNy42LDEuNjkgMTcuMjEsMi4wOUwxMC43NSw4LjU1TDE0Ljk1LDEyLjc0TDIxLjQxLDYuMjlDMjIuMiw1LjUgMjIuMiw0LjI0IDIxLjQxLDMuNDZMMjAuMDQsMi4wOUMxOS42NSwxLjY5IDE5LjE0LDEuNSAxOC42MiwxLjVNOS44LDkuNUwzLjIzLDE2LjA3TDMuOTMsMTYuNzdDMy40LDE3LjI0IDIuODksMTcuNzggMi4zOCwxOC4yOUMxLjYsMTkuMDggMS42LDIwLjM0IDIuMzgsMjEuMTJDMy4xNiwyMS45IDQuNDIsMjEuOSA1LjIxLDIxLjEyQzUuNzIsMjAuNjMgNi4yNSwyMC4wOCA2LjczLDE5LjU4TDcuNDMsMjAuMjdMMTQsMTMuN1wiO1xyXG5leHBvcnQgdmFyIG1kaUdyZWF0ZXJUaGFuID0gXCJNNS41LDQuMTRMNC41LDUuODZMMTUsMTJMNC41LDE4LjE0TDUuNSwxOS44NkwxOSwxMkw1LjUsNC4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmVhdGVyVGhhbk9yRXF1YWwgPSBcIk02LjUsMi4yN0wyMCwxMC4xNEw2LjUsMThMNS41LDE2LjI3TDE2LjAzLDEwLjE0TDUuNSw0TDYuNSwyLjI3TTIwLDIwVjIySDVWMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JpZCA9IFwiTTEwLDRWOEgxNFY0SDEwTTE2LDRWOEgyMFY0SDE2TTE2LDEwVjE0SDIwVjEwSDE2TTE2LDE2VjIwSDIwVjE2SDE2TTE0LDIwVjE2SDEwVjIwSDE0TTgsMjBWMTZINFYyMEg4TTgsMTRWMTBINFYxNEg4TTgsOFY0SDRWOEg4TTEwLDE0SDE0VjEwSDEwVjE0TTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYyMEEyLDIgMCAwLDEgMjAsMjJINEMyLjkyLDIyIDIsMjEuMSAyLDIwVjRBMiwyIDAgMCwxIDQsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmlkTGFyZ2UgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDRDMi45MiwyMiAyLDIxLjEgMiwyMFY0QTIsMiAwIDAsMSA0LDJNNCw0VjExSDExVjRINE00LDIwSDExVjEzSDRWMjBNMjAsMjBWMTNIMTNWMjBIMjBNMjAsNEgxM1YxMUgyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyaWRPZmYgPSBcIk0wLDIuNzdMMS4yOCwxLjVMMjIuNSwyMi43MkwyMS4yMywyNEwxOS4yMywyMkg0QzIuOTIsMjIgMiwyMS4xIDIsMjBWNC43N0wwLDIuNzdNMTAsNFY3LjY4TDgsNS42OFY0SDYuMzJMNC4zMiwySDIwQTIsMiAwIDAsMSAyMiw0VjE5LjdMMjAsMTcuN1YxNkgxOC4zMkwxNi4zMiwxNEgyMFYxMEgxNlYxMy42OEwxNCwxMS42OFYxMEgxMi4zMkwxMC4zMiw4SDE0VjRIMTBNMTYsNFY4SDIwVjRIMTZNMTYsMjBIMTcuMjNMMTYsMTguNzdWMjBNNCw4SDUuMjNMNCw2Ljc3VjhNMTAsMTRIMTEuMjNMMTAsMTIuNzdWMTRNMTQsMjBWMTYuNzdMMTMuMjMsMTZIMTBWMjBIMTRNOCwyMFYxNkg0VjIwSDhNOCwxNFYxMC43N0w3LjIzLDEwSDRWMTRIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmlsbCA9IFwiTTguMDYsMkM3Ljg4LDMuMTcgOC4xNyw0LjE2IDguOTUsNC45N0M5LjQ1LDUuNDcgOS42MSw2LjE0IDkuNDIsN0gxMC40MUMxMC41Myw2LjQ1IDEwLjU1LDYgMTAuNDUsNS41NUMxMC4zNiw1LjEzIDEwLjA1LDQuNjMgOS41LDQuMDNDOS4wNSwzLjQ3IDguODksMi44IDkuMDUsMkg4LjA2TTEwLjU1LDJDMTAuMzYsMy4xNyAxMC42Niw0LjE2IDExLjQ0LDQuOTdDMTEuOTQsNS40NyAxMi4wOSw2LjE0IDExLjkxLDdIMTIuODlDMTMsNi40NSAxMy4wMyw2IDEyLjk0LDUuNTVDMTIuODQsNS4xMyAxMi41Myw0LjYzIDEyLDQuMDNDMTEuNTMsMy40NyAxMS4zOCwyLjggMTEuNTMsMkgxMC41NU0xMy4wOCwyQzEyLjg5LDMuMTcgMTMuMTksNC4xNiAxMy45Nyw0Ljk3QzE0LjQ3LDUuNDcgMTQuNjEsNi4xNCAxNC4zOSw3SDE1LjQyQzE1LjU1LDYuNDUgMTUuNTYsNiAxNS40Nyw1LjU1QzE1LjM4LDUuMTMgMTUuMDYsNC42MyAxNC41Myw0LjAzQzE0LjA2LDMuNDcgMTMuOTEsMi44IDE0LjA2LDJIMTMuMDhNNSw4QzUsOS40MiA1LjM5LDEwLjcgNi4xNCwxMS44NEM2Ljg3LDEyLjk2IDcuOTEsMTMuODUgOS4xNCwxNC4zOUw1LjE2LDIwLjQ0QzUuMDYsMjAuNTYgNSwyMC43NSA1LDIxQzUsMjEuNDEgNS4xNiwyMS42OSA1LjQ0LDIxLjg0QzUuNTYsMjEuOTQgNS43NSwyMiA2LDIyQzYuNDEsMjIgNi42OSwyMS44NCA2Ljg0LDIxLjU2TDcuODMsMTkuOTdIMTQuMkMxNC40MSwyMC41NSAxNC43OSwyMS4wNSAxNS4yOCwyMS40MkMxNS43OCwyMS44IDE2LjM2LDIyIDE3LDIyQzE3LjgzLDIyIDE4LjUzLDIxLjY5IDE5LjEzLDIxLjA5QzE5LjcyLDIwLjUgMjAsMTkuOCAyMCwxOUMyMCwxOC4xNyAxOS43MiwxNy40NyAxOS4xMywxNi44OEMxOC41MywxNi4yOCAxNy44MywxNiAxNywxNkMxNi4zNiwxNiAxNS43OCwxNi4xNyAxNS4yOCwxNi41NUMxNC43OCwxNi45MiAxNC40MiwxNy40MSAxNC4yLDE4SDkuMTRMMTEuMTEsMTQuOTVDMTEuMjcsMTUgMTEuNTYsMTUgMTIsMTVDMTIuNDQsMTUgMTIuNzMsMTUgMTIuODksMTQuOTVMMTMuODgsMTYuNUMxNC4yOSwxNS45NiAxNC44NCwxNS41NCAxNS40NywxNS4yOEwxNC45MSwxNC4zOUMxNi4wMywxMy44OSAxNywxMyAxNy43OSwxMS43N0MxOC41OSwxMC41IDE5LDkuMjcgMTksOEg1TTE3LDE4QzE3LjMsMTggMTcuNTMsMTguMDkgMTcuNzIsMTguMjhDMTcuOTEsMTguNDcgMTgsMTguNzIgMTgsMTlDMTgsMTkuMjcgMTcuOTEsMTkuNSAxNy43MiwxOS43MUMxNy41NCwxOS45MSAxNy4yOCwyMCAxNywyMEMxNi43NCwyMCAxNi41LDE5LjkxIDE2LjI5LDE5LjcxQzE2LjA5LDE5LjUgMTYsMTkuMjYgMTYsMTlDMTYsMTguNyAxNi4wOSwxOC40NyAxNi4yOSwxOC4yOEMxNi41LDE4LjA5IDE2LjczLDE4IDE3LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyaWxsT3V0bGluZSA9IFwiTTE3IDIyQTMgMyAwIDEgMCAxNC4xOCAxOEg5LjE0TDExLjEzIDE0Ljk0QTYuMzYgNi4zNiAwIDAgMCAxMi44NyAxNC45NEwxMy44OSAxNi41QzE0LjMxIDE2IDE0Ljg1IDE1LjU2IDE1LjUgMTUuM0wxNC44OSAxNC4zN0E3IDcgMCAwIDAgMTkgOEg1QTcgNyAwIDAgMCA5LjEyIDE0LjM3TDUuMTcgMjAuNDVBMSAxIDAgMCAwIDYuODQgMjEuNTRMNy44NCAyMEgxNC4xOEEzIDMgMCAwIDAgMTcgMjJNMTcgMThBMSAxIDAgMCAxIDE4IDE5QzE4IDE5LjU1IDE3LjU1IDIwIDE3IDIwUzE2IDE5LjU1IDE2IDE5QTEgMSAwIDAgMSAxNyAxOE03LjQyIDEwSDE2LjU4QTUgNSAwIDAgMSA3LjQyIDEwTTkuNDEgN0gxMC40MUMxMC41NiA1Ljg1IDEwLjY0IDUuMzYgOS41IDQuMDRDOS4xIDMuNTQgOC44NCAzLjI3IDkuMDYgMkg4LjA3QTMuMTQgMy4xNCAwIDAgMCA4Ljk2IDQuOTZDOS4xOCA1LjIgOS43NSA1LjYzIDkuNDEgN00xMS44OSA3SDEyLjg5QzEzLjA0IDUuODUgMTMuMTIgNS4zNiAxMiA0LjA0QzExLjU4IDMuNTQgMTEuMzIgMy4yNiAxMS41NCAySDEwLjU1QTMuMTQgMy4xNCAwIDAgMCAxMS40NCA0Ljk2QzExLjY3IDUuMiAxMi4yNCA1LjYzIDExLjg5IDdNMTQuNDEgN0gxNS40MUMxNS41NiA1Ljg1IDE1LjY0IDUuMzYgMTQuNSA0LjA0QzE0LjEgMy41NCAxMy44NCAzLjI3IDE0LjA2IDJIMTMuMDdBMy4xNCAzLjE0IDAgMCAwIDEzLjk2IDQuOTZDMTQuMTggNS4yIDE0Ljc1IDUuNjMgMTQuNDEgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHcm91cCA9IFwiTTEsMVY1SDJWMTlIMVYyM0g1VjIySDE5VjIzSDIzVjE5SDIyVjVIMjNWMUgxOVYySDVWMU01LDRIMTlWNUgyMFYxOUgxOVYyMEg1VjE5SDRWNUg1TTYsNlYxNEg5VjE4SDE4VjlIMTRWNk04LDhIMTJWMTJIOE0xNCwxMUgxNlYxNkgxMVYxNEgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUd1aXRhckFjb3VzdGljID0gXCJNMTkuNTksM0gyMlY1SDIwLjQxTDE2LjE3LDkuMjRDMTUuOCw4LjY4IDE1LjMyLDguMiAxNC43Niw3LjgzTDE5LjU5LDNNMTIsOEE0LDQgMCAwLDEgMTYsMTJDMTYsMTMuODIgMTQuNzcsMTUuNDIgMTMsMTUuODdWMTZBNSw1IDAgMCwxIDgsMjFBNSw1IDAgMCwxIDMsMTZBNSw1IDAgMCwxIDgsMTFIOC4xM0M4LjU4LDkuMjQgMTAuMTcsOCAxMiw4TTEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgMTIsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMC41TTYuOTQsMTQuMjRMNi4yMywxNC45NEw5LjA2LDE3Ljc3TDkuNzcsMTcuMDZMNi45NCwxNC4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHdWl0YXJFbGVjdHJpYyA9IFwiTTE5LjU5LDNIMjJWNUgyMC40MUwxNS4xMiwxMC4yOUwxMy43MSw4LjlMMTkuNTksM00xMiw5QzEyLjI2LDkgMTIuNSw5LjEgMTIuNzEsOS4zTDE0LjcxLDExLjNDMTQuODksMTEuNSAxNSwxMS43MyAxNSwxMkwxNC45LDEyLjRMMTAuOSwyMC40QzEwLjcxLDIwLjc1IDEwLjM2LDIwLjkzIDEwLDIwLjkzQzkuNjUsMjAuOTMgOS4yOSwyMC43NSA5LjExLDIwLjRMNy4yNSwxNi43TDMuNTUsMTQuOUMzLjE4LDE0LjcgMywxNC4zNSAzLDE0QzMsMTMuNjUgMy4xOCwxMy4zIDMuNTUsMTMuMUwxMS41NSw5LjFDMTEuNjksOSAxMS44NCw5IDEyLDlNOS4zNSwxMS44Mkw4LjY1LDEyLjVMMTEuNSwxNS4zNUwxMi4xOCwxNC42NUw5LjM1LDExLjgyTTcuOTQsMTMuMjNMNy4yMywxMy45NEwxMC4wNiwxNi43N0wxMC43NywxNi4wNkw3Ljk0LDEzLjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUd1aXRhclBpY2sgPSBcIk0xOSw0LjFDMTguMSwzLjMgMTcsMi44IDE1LjgsMi41QzE1LjUsMi40IDEzLjYsMiAxMi4yLDJDMTIuMiwyIDEyLjEsMiAxMiwyQzEyLDIgMTEuOSwyIDExLjgsMkMxMC40LDIgOC40LDIuNCA4LjEsMi41QzcsMi44IDUuOSwzLjMgNSw0LjFDMyw1LjkgMyw4LjcgNCwxMUM1LDEzLjUgNi4xLDE1LjcgNy42LDE3LjlDOC44LDE5LjYgMTAuMSwyMiAxMiwyMkMxMy45LDIyIDE1LjIsMTkuNiAxNi41LDE3LjlDMTgsMTUuOCAxOS4xLDEzLjUgMjAuMSwxMUMyMSw4LjcgMjEsNS45IDE5LDQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHdWl0YXJQaWNrT3V0bGluZSA9IFwiTTE5LDQuMUMxOC4xLDMuMyAxNywyLjggMTUuOCwyLjVDMTUuNSwyLjQgMTMuNiwyIDEyLjIsMkMxMi4yLDIgMTIuMSwyIDEyLDJDMTIsMiAxMS45LDIgMTEuOCwyQzEwLjQsMiA4LjQsMi40IDguMSwyLjVDNywyLjggNS45LDMuMyA1LDQuMUMzLDUuOSAzLDguNyA0LDExQzUsMTMuNSA2LjEsMTUuNyA3LjYsMTcuOUM4LjgsMTkuNiAxMC4xLDIyIDEyLDIyQzEzLjksMjIgMTUuMiwxOS42IDE2LjUsMTcuOUMxOCwxNS44IDE5LjEsMTMuNSAyMC4xLDExQzIxLDguNyAyMSw1LjkgMTksNC4xTTE4LjIsMTAuMkMxNy4xLDEyLjkgMTYuMSwxNC45IDE0LjgsMTYuN0MxNC42LDE2LjkgMTQuNSwxNy4yIDE0LjMsMTcuNEMxMy44LDE4LjIgMTIuNiwyMCAxMiwyMEMxMiwyMCAxMiwyMCAxMiwyMEMxMS4zLDIwIDEwLjIsMTguMyA5LjYsMTcuNEM5LjQsMTcuMiA5LjMsMTYuOSA5LjEsMTYuN0M3LjksMTQuOSA2LjgsMTIuOSA1LjcsMTAuMkM1LjUsOS41IDQuNyw3IDYuMyw1LjVDNi44LDUgNy42LDQuNyA4LjYsNC40QzksNC40IDEwLjcsNCAxMS44LDRDMTEuOCw0IDEyLjEsNCAxMi4xLDRDMTMuMiw0IDE0LjksNC4zIDE1LjMsNC40QzE2LjMsNC43IDE3LjEsNSAxNy42LDUuNUMxOS4zLDcgMTguNSw5LjUgMTguMiwxMC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUd1eUZhd2tlc01hc2sgPSBcIk0yMSwxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDMsMTNMMy4wMyw0LjQzQzUuNjgsMi44OCA4Ljc2LDIgMTIuMDUsMkMxNS4zLDIgMTguMzYsMi44NyAyMSw0LjM4VjEzTTEzLDE5LjkzQzE2LjM5LDE5LjQ0IDE5LDE2LjUgMTksMTNWNS41OUMxNi45LDQuNTcgMTQuNTQsNCAxMi4wNSw0QzkuNSw0IDcuMDgsNC42IDQuOTQsNS42Nkw1LDEzQzUsMTYuNSA3LjYzLDE5LjQ0IDExLDE5LjkzVjE4SDEzVjE5LjkzTTExLDE2SDhMNiwxM0w5LDE0SDEwTDExLDEzSDEzTDE0LDE0SDE1TDE4LDEzTDE2LDE2SDEzTDEyLDE1TDExLDE2TTYsOS4wM0M2LjY0LDguNCA3LjUsOC4wNSA4LjUsOC4wNUM5LjQ1LDguMDUgMTAuMzQsOC40IDExLDkuMDNDMTAuMzQsOS42NSA5LjQ1LDEwIDguNSwxMEM3LjUsMTAgNi42NCw5LjY1IDYsOS4wM00xMyw5LjAzQzEzLjY0LDguNCAxNC41LDguMDUgMTUuNSw4LjA1QzE2LjQ1LDguMDUgMTcuMzQsOC40IDE4LDkuMDNDMTcuMzQsOS42NSAxNi40NSwxMCAxNS41LDEwQzE0LjUsMTAgMTMuNjQsOS42NSAxMyw5LjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhaWwgPSBcIk00LDE2SDdWMjJINFYxNk0xOSwyLjM5QzE4LjkyLDMuODYgMTguNTUsNS4xMyAxNy44Niw2LjIxQzE3LjE3LDcuMjkgMTYuMjIsOCAxNSw4LjM5VjIySDEzVjE2SDExVjIySDlWMTAuMDhDOC43MiwxMC4xNyA4LjUsMTAuMjggOC4zOSwxMC40MUM3LjQ1LDExLjE2IDcsMTIuMTkgNywxMy41VjE0SDVWMTMuNUM1LDExLjUzIDUuNzIsOS45NCA3LjEzLDguNzJDOC41Myw3LjU2IDEwLjE2LDcgMTIsN0MxMy40MSw3IDE0LjU2LDYuNjQgMTUuNDcsNS45NUMxNi41LDUuMTEgMTcsMy45NSAxNywyLjVWMkgxOVYyLjM5TTEyLDJBMiwyIDAgMCwxIDE0LDRBMiwyIDAgMCwxIDEyLDZBMiwyIDAgMCwxIDEwLDRBMiwyIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFpckRyeWVyID0gXCJNMjIgOUE0LjMyIDQuMzIgMCAwIDEgMTkuNzggOC40NUEzLjQgMy40IDAgMCAwIDE4IDhWN0E0LjMyIDQuMzIgMCAwIDEgMjAuMjIgNy41NUEzLjQgMy40IDAgMCAwIDIyIDhNMjIgNkEzLjQgMy40IDAgMCAxIDIwLjIyIDUuNTVBNC4zMiA0LjMyIDAgMCAwIDE4IDVWNkEzLjQgMy40IDAgMCAxIDE5Ljc4IDYuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDdNMjIgMTBBMy40IDMuNCAwIDAgMSAyMC4yMiA5LjU1QTQuMzIgNC4zMiAwIDAgMCAxOCA5VjEwQTMuNCAzLjQgMCAwIDEgMTkuNzggMTAuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDExTTEwIDEyLjczQTcwLjM5IDcwLjM5IDAgMCAwIDE3IDExVjRTMTAuNSAyIDcuNSAyQTUuNSA1LjUgMCAwIDAgNi4xMiAxMi44Mkw3IDE5SDhBMyAzIDAgMCAwIDkuNDYgMjEuMzNBMy4xNSAzLjE1IDAgMCAxIDExIDI0SDEyQTQuMTIgNC4xMiAwIDAgMCAxMC4wOSAyMC41NUM5LjM5IDIwIDkgMTkuNjMgOSAxOUgxME03LjUgMTBBMi41IDIuNSAwIDEgMSAxMCA3LjVBMi41IDIuNSAwIDAgMSA3LjUgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFpckRyeWVyT3V0bGluZSA9IFwiTTEwIDEyLjczQTcwLjM5IDcwLjM5IDAgMCAwIDE3IDExVjRTMTAuNSAyIDcuNSAyQTUuNSA1LjUgMCAwIDAgNi4xMiAxMi44Mkw3IDE5SDhBMyAzIDAgMCAwIDkuNDYgMjEuMzNBMy4xNSAzLjE1IDAgMCAxIDExIDI0SDEyQTQuMTIgNC4xMiAwIDAgMCAxMC4wOSAyMC41NUM5LjM5IDIwIDkgMTkuNjMgOSAxOUgxME00IDcuNUEzLjUgMy41IDAgMCAxIDcuNSA0QTM3LjA4IDM3LjA4IDAgMCAxIDE1IDUuNVY5LjVBMzcuMDggMzcuMDggMCAwIDEgNy41IDExQTMuNSAzLjUgMCAwIDEgNCA3LjVNMjIgOUE0LjMyIDQuMzIgMCAwIDEgMTkuNzggOC40NUEzLjQgMy40IDAgMCAwIDE4IDhWN0E0LjMyIDQuMzIgMCAwIDEgMjAuMjIgNy41NUEzLjQgMy40IDAgMCAwIDIyIDhNMjIgNkEzLjQgMy40IDAgMCAxIDIwLjIyIDUuNTVBNC4zMiA0LjMyIDAgMCAwIDE4IDVWNkEzLjQgMy40IDAgMCAxIDE5Ljc4IDYuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDdNMjIgMTBBMy40IDMuNCAwIDAgMSAyMC4yMiA5LjU1QTQuMzIgNC4zMiAwIDAgMCAxOCA5VjEwQTMuNCAzLjQgMCAwIDEgMTkuNzggMTAuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDExTTkgNy41QTEuNSAxLjUgMCAxIDEgNy41IDZBMS41IDEuNSAwIDAgMSA5IDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYWxsb3dlZW4gPSBcIk02LjUsNkM3LjQ3LDYgOC4zNyw2LjUgOS4xMSw3LjM4QzkuNjYsNi43OSAxMC4zMSw2LjM2IDExLDYuMTVWNEEyLDIgMCAwLDEgMTMsMkgxNVY0SDEzVjYuMTVDMTMuNjksNi4zNiAxNC4zNCw2Ljc5IDE0Ljg5LDcuMzhDMTUuNjMsNi41IDE2LjUzLDYgMTcuNSw2QzIwLDYgMjIsOS4zNiAyMiwxMy41QzIyLDE3LjY0IDIwLDIxIDE3LjUsMjFDMTYuNTMsMjEgMTUuNjMsMjAuNSAxNC44OSwxOS42MkMxNC4wOCwyMC41IDEzLjA4LDIxIDEyLDIxQzEwLjkyLDIxIDkuOTIsMjAuNSA5LjExLDE5LjYyQzguMzcsMjAuNSA3LjQ3LDIxIDYuNSwyMUM0LDIxIDIsMTcuNjQgMiwxMy41QzIsOS4zNiA0LDYgNi41LDZNOSwxMEw3Ljc1LDEyLjI1SDEwLjI1TDksMTBNMTUsMTBMMTMuNzUsMTIuMjVIMTYuMjVMMTUsMTBNOCwxN0gxMEwxMSwxNkwxMiwxN0gxNEwxNSwxNkwxNiwxN0wxNy41LDE0TDEzLjkyLDE0LjYyTDEzLDE2TDEyLDE1SDEwTDksMTZMOCwxNUw2LDE0TDgsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFtYnVyZ2VyID0gXCJNMiwxNkgyMlYxOEMyMiwxOS4xMSAyMS4xMSwyMCAyMCwyMEg0QzIuODksMjAgMiwxOS4xMSAyLDE4VjE2TTYsNEgxOEMyMC4yMiw0IDIyLDUuNzggMjIsOFYxMEgyVjhDMiw1Ljc4IDMuNzgsNCA2LDRNNCwxMUgxNUwxNywxM0wxOSwxMUgyMEMyMS4xMSwxMSAyMiwxMS44OSAyMiwxM0MyMiwxNC4xMSAyMS4xMSwxNSAyMCwxNUg0QzIuODksMTUgMiwxNC4xMSAyLDEzQzIsMTEuODkgMi44OSwxMSA0LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbW1lciA9IFwiTTIgMTkuNjNMMTMuNDMgOC4yTDEyLjcyIDcuNUwxNC4xNCA2LjA3TDEyIDMuODlDMTMuMiAyLjcgMTUuMDkgMi43IDE2LjI3IDMuODlMMTkuODcgNy41TDE4LjQ1IDguOTFIMjEuMjlMMjIgOS42MkwxOC40NSAxMy4yMUwxNy43NCAxMi41VjkuNjJMMTYuMjcgMTEuMDRMMTUuNTYgMTAuMzNMNC4xMyAyMS43NkwyIDE5LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbW1lclNjcmV3ZHJpdmVyID0gXCJNMTYuMDYgMTMuMDlMMjEuNjkgMTguNjhMMTguMzcgMjEuOTZMMTIuNzggMTYuMzdWMTUuNDVMMTUuMTQgMTMuMDlIMTYuMDZNMTYuOTcgMTAuNTZMMTYgOS42TDExLjIxIDE0LjRWMTYuMzdMNS41OCAyMkwyLjMgMTguNjhMNy44OSAxMy4wOUg5Ljg2TDEwLjY0IDEyLjMxTDYuOCA4LjQ2SDUuNUwyLjY5IDUuNjJMNS4zMSAzTDguMTEgNS44VjcuMTFMMTIgMTAuOTVMMTQuNjYgOC4yOUwxMy43IDcuMjhMMTUgNS45N0gxMi4zNEwxMS42OSA1LjMyTDE1IDJMMTUuNjYgMi42NlY1LjMyTDE2Ljk3IDRMMjAuMjUgNy4yOEMyMS4zNCA4LjM4IDIxLjM0IDEwLjE3IDIwLjI1IDExLjI2TDE4LjI4IDkuMjVMMTYuOTcgMTAuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFtbWVyV3JlbmNoID0gXCJNMTMuNzggMTUuM0wxOS43OCAyMS4zTDIxLjg5IDE5LjE0TDE1Ljg5IDEzLjE0TDEzLjc4IDE1LjNNMTcuNSAxMC4xQzE3LjExIDEwLjEgMTYuNjkgMTAuMDUgMTYuMzYgOS45MUw0Ljk3IDIxLjI1TDIuODYgMTkuMTRMMTAuMjcgMTEuNzRMOC41IDkuOTZMNy43OCAxMC42Nkw2LjMzIDkuMjVWMTIuMTFMNS42MyAxMi44MUwyLjExIDkuMjVMMi44MSA4LjU1SDUuNjJMNC4yMiA3LjE0TDcuNzggMy41OEM4Ljk1IDIuNDEgMTAuODMgMi40MSAxMiAzLjU4TDkuODkgNS43NEwxMS4zIDcuMTRMMTAuNTkgNy44NUwxMi4zOCA5LjYzTDE0LjIgNy43NUMxNC4wNiA3LjQyIDE0IDcgMTQgNi42M0MxNCA0LjY2IDE1LjU2IDMuMTEgMTcuNSAzLjExQzE4LjA5IDMuMTEgMTguNjEgMy4yNSAxOS4wOCAzLjUzTDE2LjQxIDYuMkwxNy45MSA3LjdMMjAuNTggNS4wM0MyMC44NiA1LjUgMjEgNiAyMSA2LjYzQzIxIDguNTUgMTkuNDUgMTAuMSAxNy41IDEwLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZCA9IFwiTTYuNTgsMTlIMTQuNThWMjJINi41OFYxOU0xOS43NCwxMS42QzE5LjU1LDExLjQgMTkuMjksMTEuMjggMTksMTEuMjhMMTguNzgsMTEuMzFMMTUuNTgsMTNWMTEuODNMMTYuMDksMi45QzE2LjEyLDIuMzUgMTUuNywxLjg3IDE1LjE1LDEuODRDMTQuNiwxLjgxIDE0LjEyLDIuMjMgMTQuMDksMi43OEwxMy44Miw3LjQ3SDEzLjU4TDEyLjU0LDcuNThWMkExLDEgMCAwLDAgMTEuNTQsMUMxMSwxIDEwLjU0LDEuNDUgMTAuNTQsMlY4LjQxTDkuNzIsOC43OEw5LjAzLDMuMzJDOC45NiwyLjc3IDguNDYsMi4zOCA3LjkxLDIuNDVDNy4zNiwyLjUgNi45NywzIDcuMDQsMy41N0w3LjgxLDkuNjNMNy40Myw5LjhDNy4zLDkuODUgNy4xOCw5LjkzIDcuMDcsMTBMNS45Nyw2LjExQzUuODEsNS41NCA1LjI1LDUuMiA0LjcxLDUuMzRDNC4xOCw1LjUgMy44OCw2LjA4IDQuMDQsNi42NUw2LjYxLDE1Ljc3QzYuNjEsMTUuOCA2LjYzLDE1Ljg0IDYuNjQsMTUuODdMNi42NywxNkg2LjY4QzYuOSwxNi41NyA3LjQ3LDE3IDguMDgsMTdIMTQuNThDMTQuOTcsMTcgMTUuMzIsMTYuODQgMTUuNTgsMTYuNTdMMjAuNSwxMi4zN0wxOS43NCwxMS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRIZWFydCA9IFwiTTIwIDE3UTIwLjg2IDE3IDIxLjQ1IDE3LjZUMjIuMDMgMTlMMTQgMjJMNyAyMFYxMUg4Ljk1TDE2LjIyIDEzLjY5UTE3IDE0IDE3IDE0LjgxIDE3IDE1LjI4IDE2LjY2IDE1LjYzVDE1LjggMTZIMTNMMTEuMjUgMTUuMzNMMTAuOTIgMTYuMjdMMTMgMTdIMjBNMTYgMy4yM1ExNy4wNiAyIDE4LjcgMiAyMC4wNiAyIDIxIDNUMjIgNS4zUTIyIDYuMzMgMjEgNy43NlQxOS4wMyAxMC4xNSAxNiAxM1ExMy45MiAxMS4xMSAxMi45NCAxMC4xNVQxMC45NyA3Ljc2IDEwIDUuM1ExMCAzLjk0IDEwLjk3IDNUMTMuMzEgMlExNC45MSAyIDE2IDMuMjNNLjk4NCAxMUg1VjIySC45ODRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZEhlYXJ0T3V0bGluZSA9IFwiTTE2IDMuMjNDMTYuNzEgMi40MSAxNy42MSAyIDE4LjcgMkMxOS42MSAyIDIwLjM3IDIuMzMgMjEgM0MyMS42MyAzLjY3IDIxLjk2IDQuNDMgMjIgNS4zQzIyIDYgMjEuNjcgNi44MSAyMSA3Ljc2UzE5LjY4IDkuNSAxOS4wMyAxMC4xNUMxOC4zOCAxMC43OSAxNy4zNyAxMS43NCAxNiAxM0MxNC42MSAxMS43NCAxMy41OSAxMC43OSAxMi45NCAxMC4xNVMxMS42MyA4LjcxIDEwLjk3IDcuNzZDMTAuMzEgNi44MSAxMCA2IDEwIDUuM0MxMCA0LjM5IDEwLjMyIDMuNjMgMTAuOTcgM0MxMS42MiAyLjM3IDEyLjQgMi4wNCAxMy4zMSAyQzE0LjM4IDIgMTUuMjcgMi40MSAxNiAzLjIzTTIyIDE5VjIwTDE0IDIyLjVMNyAyMC41NlYyMkgxVjExSDguOTdMMTUuMTMgMTMuM0MxNi4yNSAxMy43MiAxNyAxNC44IDE3IDE2SDE5QzIwLjY2IDE2IDIyIDE3LjM0IDIyIDE5TTUgMjBWMTNIM1YyMEg1TTE5LjkgMTguNTdDMTkuNzQgMTguMjQgMTkuMzkgMTggMTkgMThIMTMuNjVDMTMuMTEgMTggMTIuNTggMTcuOTIgMTIuMDcgMTcuNzVMOS42OSAxNi45NkwxMC4zMiAxNS4wNkwxMi43IDE1Ljg1QzEzIDE1Ljk1IDE1IDE2IDE1IDE2QzE1IDE1LjYzIDE0Ljc3IDE1LjMgMTQuNDMgMTUuMTdMOC42MSAxM0g3VjE4LjVMMTMuOTcgMjAuNDFMMTkuOSAxOC41N1pcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kTGVmdCA9IFwiTTMsNi41OFYxOC42N0MzLDIwLjUgNC41LDIyIDYuMzMsMjJIMTIuNDJDMTMuMzIsMjIgMTQuMTcsMjEuNjQgMTQuNzksMjFMMjEuMzMsMTQuMzZDMjEuMzMsMTQuMzYgMjAuMjgsMTMuMzMgMjAuMjUsMTMuMzJDMjAuMDcsMTMuMTYgMTkuODQsMTMuMDcgMTkuNTksMTMuMDdDMTkuNDEsMTMuMDcgMTkuMjQsMTMuMTIgMTkuMDksMTMuMjFDMTkuMDYsMTMuMjIgMTUuNSwxNS4yNiAxNS41LDE1LjI2VjUuMzNBMS4yNSwxLjI1IDAgMCwwIDE0LjI1LDQuMDhBMS4yNSwxLjI1IDAgMCwwIDEzLDUuMzNWMTEuMTdIMTIuMTdWMy4yNUExLjI1LDEuMjUgMCAwLDAgMTAuOTIsMkExLjI1LDEuMjUgMCAwLDAgOS42NywzLjI1VjExLjE3SDguODNWNC4wOEExLjI1LDEuMjUgMCAwLDAgNy41OCwyLjgzQTEuMjUsMS4yNSAwIDAsMCA2LjMzLDQuMDhWMTEuMTdINS41VjYuNThBMS4yNSwxLjI1IDAgMCwwIDQuMjUsNS4zM0ExLjI1LDEuMjUgMCAwLDAgMyw2LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRPa2F5ID0gXCJNMTMuMywxOS4yNkwxOC45NiwxMy42MUwyMS4wOCwxNS43M0wxNS40MiwyMS4zOEwxMy4zLDE5LjI2TTE2LjUsMTEuMTNMMTMuNCw4LjA1QzEzLjI3LDcuOTIgMTMuMTMsNy44MyAxMyw3Ljc2TDExLjg4LDMuNDdDMTEuNzQsMi45MyAxMS4yLDIuNjEgMTAuNjYsMi43NUMxMC4xMywyLjg4IDkuODEsMy40MyA5Ljk0LDMuOTZMMTEsOC4wM1Y4LjAzTDguNjcsMy4xOUM4LjQ0LDIuNjkgNy44NCwyLjUgNy4zNCwyLjcxQzYuODQsMi45NSA2LjYzLDMuNTUgNi44Nyw0LjA1TDguNTYsNy41OUw1LjE5LDQuMjVDNC44LDMuODYgNC4xNiwzLjg2IDMuNzcsNC4yNUMzLjM4LDQuNjUgMy4zOSw1LjI4IDMuNzgsNS42N0w3LjUsOS4zN0w2LjgsOS42NEw1LjcyLDEwLjA3TDMuODEsMTEuMzlDMy44MSwxMS4zOSAzLDEyLjQ0IDIuOTMsMTIuODlDMi44NSwxMy4zNCAzLjcyLDE1LjYgMy43MiwxNS42SDMuNzNDMy44OSwxNS45NCA0LjIzLDE2LjE4IDQuNjMsMTYuMThBMSwxIDAgMCwwIDUuNjMsMTUuMThDNS42MywxNS4wOCA1LjYsMTUgNS41NywxNC45MUw1LjU5LDE0LjlMNSwxMy4xN0w2LjIzLDEyLjE5QzYuNywxMi4yMSA3LjcxLDEyLjI5IDguMiwxMi4zMkMxMC45MywxNC43NyA4LjM1LDE1LjczIDguMzUsMTUuNzNMNC44OSwxNi43OUw0LjcyLDE2LjkzQzQuNSwxNy4xMyA0LjQxLDE3LjQgNC40MiwxNy42OEw0LjQ0LDE4Ljc1TDEwLjg3LDE4LjI1QzExLjI1LDE4LjI2IDExLjYxLDE4LjEyIDExLjg5LDE3Ljg1TDE2LjUsMTMuMjVDMTcuMDMsMTIuNzEgMTcuMDUsMTEuNyAxNi41LDExLjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQZWFjZSA9IFwiTTcsMTlIMTVWMjJIN1YxOU0xNi4xNSwxMlYxMkwxMi45NywxMC4zNEMxMi44MiwxMC4zNCAxMi42OSwxMC40IDEyLjYsMTAuNUwxMi4zLDEwLjgxTDEyLjg5LDEzLjIzTDExLjkxLDEzLjQ3TDEwLjcyLDguNUw5LjI1LDkuMThMMTAuMjksMTMuNDdMOS4zMiwxMy43TDguMzIsOS41OUw3Ljg1LDkuOEM3LjM1LDEwIDcsMTAuNTMgNywxMS4xNFYxNS41QzcsMTYuMyA3LjczLDE3IDguNSwxN0gxNUMxNS4zOSwxNyAxNS43NCwxNi44NCAxNiwxNi41N0wxNi41LDE2LjE2QzE2LjUsMTYuMTYgMTcsMTUuNzggMTcsMTUuMzZWMTMuN0MxNywxMy43IDE3LDEyLjU2IDE2LjE1LDEyTTE2Ljk0LDFDMTYuNCwwLjkxIDE1Ljg3LDEuMjUgMTUuNzYsMS44TDE0LjY5LDcuOTdDMTQuNDcsNy45NCAxNC4zOCw3Ljg2IDE0LjA4LDcuODNMMTMuNjUsNy44OEwxMi40MSwxLjhDMTIuMywxLjI2IDExLjc4LDAuOTEgMTEuMjQsMUMxMC42OSwxLjEzIDEwLjM0LDEuNjYgMTAuNDUsMi4yTDExLjY1LDguMTFWOC4xMUwxMiw5LjY3QzEyLjI4LDkuNDcgMTIuNjEsOS4zNCAxMi45Nyw5LjM0SDEzLjMxTDE2LjMxLDEwLjk1TDE3LjcyLDIuMkMxNy44MywxLjY2IDE3LjUsMS4xMyAxNi45NCwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQZWFjZVZhcmlhbnQgPSBcIk03LDE5SDE1VjIySDdWMTlNMTYuOTQsMUMxNi40LDAuOTEgMTUuODcsMS4yNSAxNS43NiwxLjhMMTQuNzUsNy41N0MxNC41Myw3LjU0IDE0LjI5LDcuNSAxNCw3LjQ3TDEzLjU3LDcuNUwxMi40MSwxLjhDMTIuMzEsMS4yNiAxMS43OCwwLjkxIDExLjI0LDFDMTAuNywxLjEzIDEwLjM1LDEuNjYgMTAuNDUsMi4yTDExLjY1LDguMTFMNy44NSw5LjhDNy4zNSwxMCA3LDEwLjUzIDcsMTEuMTRWMTUuNUM3LDE2LjMgNy43MywxNyA4LjUsMTdIMTVDMTUuMzksMTcgMTUuNzQsMTYuODQgMTYsMTYuNTdMMTYuNSwxNi4xNkMxNi41LDE2LjE2IDE3LDE1Ljc4IDE3LDE1LjM2VjEzQzE3LDEzIDE3LDExLjg2IDE2LjEzLDExLjNMMTcuNzEsMi4yQzE3LjgzLDEuNjYgMTcuNSwxLjEzIDE2Ljk0LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFBvaW50aW5nRG93biA9IFwiTTkuOSwyMVYxMUw2LjcsMTIuNjlMNi41LDEyLjcyQzYuMTksMTIuNzIgNS45MywxMi42IDUuNzQsMTIuNEw1LDExLjYzTDkuOSw3LjQzQzEwLjE2LDcuMTYgMTAuNSw3IDEwLjksN0gxNy40QzE4LjE3LDcgMTguOSw3LjcgMTguOSw4LjVWMTIuODZDMTguOSwxMy40NyAxOC41NSwxNCAxOC4wNSwxNC4yTDEzLjExLDE2LjRMMTEuOSwxNi41M1YyMUExLDEgMCAwLDEgMTAuOSwyMkExLDEgMCAwLDEgOS45LDIxTTE4LjksNUgxMC45VjJIMTguOVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQb2ludGluZ0xlZnQgPSBcIk0zLDlIMTNMMTEuMzEsNS44TDExLjI4LDUuNThDMTEuMjgsNS4yOSAxMS40LDUuMDMgMTEuNiw0Ljg0TDEyLjM3LDQuMUwxNi41Nyw5QzE2Ljg0LDkuMjYgMTcsOS42MSAxNywxMFYxNi41QzE3LDE3LjI3IDE2LjMsMTggMTUuNSwxOEgxMS4xNEMxMC41MywxOCAxMCwxNy42NSA5LjgsMTcuMTVMNy42LDEyLjIxTDcuNDcsMTFIM0ExLDEgMCAwLDEgMiwxMEExLDEgMCAwLDEgMyw5TTE5LDE4VjEwSDIyVjE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQb2ludGluZ1JpZ2h0ID0gXCJNMjEsOUExLDEgMCAwLDEgMjIsMTBBMSwxIDAgMCwxIDIxLDExSDE2LjUzTDE2LjQsMTIuMjFMMTQuMiwxNy4xNUMxNCwxNy42NSAxMy40NywxOCAxMi44NiwxOEg4LjVDNy43LDE4IDcsMTcuMjcgNywxNi41VjEwQzcsOS42MSA3LjE2LDkuMjYgNy40Myw5TDExLjYzLDQuMUwxMi40LDQuODRDMTIuNiw1LjAzIDEyLjcyLDUuMjkgMTIuNzIsNS41OEwxMi42OSw1LjhMMTEsOUgyMU0yLDE4VjEwSDVWMThIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kUG9pbnRpbmdVcCA9IFwiTTE0LDNWMTNMMTcuMiwxMS4zMUwxNy40MiwxMS4yOEMxNy43MSwxMS4yOCAxNy45NywxMS40IDE4LjE2LDExLjZMMTguOSwxMi4zN0wxNCwxNi41N0MxMy43NCwxNi44NCAxMy4zOSwxNyAxMywxN0g2LjVDNS43MywxNyA1LDE2LjMgNSwxNS41VjExLjE0QzUsMTAuNTMgNS4zNSwxMCA1Ljg1LDkuOEwxMC43OSw3LjZMMTIsNy40N1YzQTEsMSAwIDAsMSAxMywyQTEsMSAwIDAsMSAxNCwzTTUsMTlIMTNWMjJINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kUmlnaHQgPSBcIk0yMSw2LjU4VjE4LjY3QTMuMzMsMy4zMyAwIDAsMSAxNy42NywyMkgxMS41OEMxMC42OCwyMiA5LjgzLDIxLjY0IDkuMjEsMjFMMi42NywxNC4zNkMyLjY3LDE0LjM2IDMuNzIsMTMuMzMgMy43NSwxMy4zMkMzLjkzLDEzLjE2IDQuMTYsMTMuMDcgNC40MSwxMy4wN0M0LjU5LDEzLjA3IDQuNzYsMTMuMTIgNC45MSwxMy4yMUM0Ljk0LDEzLjIyIDguNSwxNS4yNiA4LjUsMTUuMjZWNS4zM0ExLjI1LDEuMjUgMCAwLDEgOS43NSw0LjA4QTEuMjUsMS4yNSAwIDAsMSAxMSw1LjMzVjExLjE3SDExLjgzVjMuMjVBMS4yNSwxLjI1IDAgMCwxIDEzLjA4LDJDMTMuNzgsMiAxNC4zMywyLjU2IDE0LjMzLDMuMjVWMTEuMTdIMTUuMTdWNC4wOEMxNS4xNywzLjM5IDE1LjcyLDIuODMgMTYuNDIsMi44M0ExLjI1LDEuMjUgMCAwLDEgMTcuNjcsNC4wOFYxMS4xN0gxOC41VjYuNThBMS4yNSwxLjI1IDAgMCwxIDE5Ljc1LDUuMzNBMS4yNSwxLjI1IDAgMCwxIDIxLDYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFNhdyA9IFwiTTkuOCwxN0w1LjksMTEuNkwyMCwyTDIyLDVWOEgxOVYxMUgxNlYxNEgxM1YxN005LjcsMTguN0w5LjIsMjEuNUw3LjYsMjIuN0M2LjcsMjMuMyA1LjUsMjMuMSA0LjgsMjIuMkwxLjMsMTcuM0MwLjcsMTYuNCAwLjksMTUuMiAxLjgsMTQuNUw1LjEsMTIuMkw5LjcsMTguN000LjYsMTVMMywxNi4xTDYuNSwyMUw4LjEsMTkuOEw0LjYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFdhc2ggPSBcIk0xNyA1TDE3LjYyIDYuMzdMMTkgN0wxNy42MiA3LjYzTDE3IDlMMTYuMzYgNy42M0wxNSA3TDE2LjM2IDYuMzdMMTcgNU0xMSA2LjEzVjRIMTNDMTMuNTcgNCAxNC4xIDQuMTcgMTQuNTUgNC40NUwxNiAzQzE1LjE1IDIuMzkgMTQuMTMgMiAxMyAySDcuNVY0SDlWNi4xNEM3LjIzIDYuNSA1LjgxIDcuOCA1LjI2IDkuNUg5LjI0TDE1IDExLjY1VjExLjAzQzE1IDguNjEgMTMuMjggNi41OSAxMSA2LjEzTTEgMjJINVYxMUgxVjIyTTIwIDE3SDEzTDEwLjkxIDE2LjI3TDExLjI0IDE1LjMzTDEzIDE2SDE1LjgyQzE2LjQ3IDE2IDE3IDE1LjQ3IDE3IDE0LjgyQzE3IDE0LjMzIDE2LjY5IDEzLjg5IDE2LjIzIDEzLjcxTDguOTcgMTFIN1YyMEwxNCAyMkwyMiAxOUMyMiAxNy45IDIxLjExIDE3IDIwIDE3TTIwIDE0QzIxLjEgMTQgMjIgMTMuMSAyMiAxMlMyMCA4IDIwIDggMTggMTAuOSAxOCAxMiAxOC45IDE0IDIwIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRXYXNoT3V0bGluZSA9IFwiTTE3IDVMMTcuNjIgNi4zN0wxOSA3TDE3LjYyIDcuNjNMMTcgOUwxNi4zNiA3LjYzTDE1IDdMMTYuMzYgNi4zN0wxNyA1TTIwIDE0QzIxLjEgMTQgMjIgMTMuMSAyMiAxMlMyMCA4IDIwIDggMTggMTAuOSAxOCAxMiAxOC45IDE0IDIwIDE0TTExIDYuMVY0SDEzQzEzLjU3IDQgMTQuMSA0LjE3IDE0LjU1IDQuNDVMMTYgM0MxNS4xNSAyLjM5IDE0LjEzIDIgMTMgMkg3LjVWNEg5VjYuMTFDNy4yMiA2LjUgNS44IDcuNzkgNS4yNSA5LjVINy40MUM3Ljk0IDguNjEgOC44OSA4IDEwIDhDMTEuNjIgOCAxMi45NCA5LjI5IDEzIDEwLjlMMTUgMTEuNjVWMTFDMTUgOC41OCAxMy4yOCA2LjU2IDExIDYuMU0yMiAxOVYyMEwxNCAyMi41TDcgMjAuNTZWMjJIMVYxMUg4Ljk3TDE1LjEzIDEzLjNDMTYuMjUgMTMuNzIgMTcgMTQuOCAxNyAxNkgxOUMyMC42NiAxNiAyMiAxNy4zNCAyMiAxOU01IDIwVjEzSDNWMjBINU0xOS45IDE4LjU3QzE5Ljc0IDE4LjI0IDE5LjM5IDE4IDE5IDE4SDEzLjY1QzEzLjExIDE4IDEyLjU4IDE3LjkyIDEyLjA3IDE3Ljc1TDkuNjkgMTYuOTZMMTAuMzIgMTUuMDZMMTIuNyAxNS44NUMxMyAxNS45NSAxNSAxNiAxNSAxNkMxNSAxNS42MyAxNC43NyAxNS4zIDE0LjQzIDE1LjE3TDguNjEgMTNIN1YxOC41TDEzLjk3IDIwLjQxTDE5LjkgMTguNTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFdhdGVyID0gXCJNMTcuNDIgMjIuNUg1LjMzQzMuNSAyMi41IDIgMjEgMiAxOS4xN1YxMy4wOEMyIDEyLjE4IDIuMzYgMTEuMzMgMyAxMC43MUw4LjYzIDUuMTdDOC42MyA1LjE3IDkuNjYgNi4yMiA5LjY3IDYuMjVDOS44MyA2LjQzIDkuOTIgNi42NiA5LjkyIDYuOTFDOS45MiA3LjA5IDkuODcgNy4yNiA5Ljc4IDcuNDFDOS43NyA3LjQ0IDggMTAgOCAxMEgxOC42N0MxOS4zNiAxMCAxOS45MiAxMC41NiAxOS45MiAxMS4yNUMxOS45MiAxMS45NCAxOS4zNiAxMi41IDE4LjY3IDEyLjVIMTIuODNWMTMuMzNIMjAuNzVDMjEuNDQgMTMuMzMgMjIgMTMuODkgMjIgMTQuNThDMjIgMTUuMjggMjEuNDQgMTUuODMgMjAuNzUgMTUuODNIMTIuODNWMTYuNjdIMTkuOTJDMjAuNjEgMTYuNjcgMjEuMTcgMTcuMjIgMjEuMTcgMTcuOTJDMjEuMTcgMTguNjEgMjAuNjEgMTkuMTcgMTkuOTIgMTkuMTdIMTIuODNWMjBIMTcuNDJDMTguMTEgMjAgMTguNjcgMjAuNTYgMTguNjcgMjEuMjVDMTguNjcgMjEuOTQgMTguMTEgMjIuNSAxNy40MiAyMi41TTEzLjUgNC44QzEzLjUgNC44IDEyIDYuNDYgMTIgNy41QzEyIDkuNSAxNSA5LjUgMTUgNy41QzE1IDYuNDYgMTMuNSA0LjggMTMuNSA0LjhNMTguNSAxQzE4LjUgMSAxNiAzLjc2IDE2IDUuNUMxNiA4LjgzIDIxIDguODMgMjEgNS41QzIxIDMuNzYgMTguNSAxIDE4LjUgMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kYmFsbCA9IFwiTTE1LjgzIDEwLjQzQTYuOTMgNi45MyAwIDAgMSAxOC4zOSAxNC44NkE2LjY0IDYuNjQgMCAwIDEgMTcuNSAxOS41TDE1Ljc4IDE4LjVBNSA1IDAgMCAwIDE2LjQ0IDE2QTUuMjIgNS4yMiAwIDAgMCAxNS40NiAxMy4wNkw5LjE4IDIzLjkzTDcuNDQgMjIuOTVMMTAuNDQgMTcuNzVMOC43MSAxNi43Nkw3LjIxIDE5LjM0TDUuNSAxOC4zNkwxMC42MyA5LjQ1QTcgNyAwIDAgMSA4LjggNS40NkE2LjkxIDYuOTEgMCAwIDEgOS42OSAxLjFMMTEuNDMgMi4xM0E0Ljg0IDQuODQgMCAwIDAgMTAuOTEgNS45QTQuNzQgNC43NCAwIDAgMCAxMy4yMSA4LjkzTTE2IDVBMiAyIDAgMSAwIDE4IDdBMiAyIDAgMCAwIDE2IDVNMTMuNSAxQTEuNSAxLjUgMCAxIDAgMTUgMi41QTEuNSAxLjUgMCAwIDAgMTMuNSAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRjdWZmcyA9IFwiTTIwLjI0IDYuNzZDMTguNCA0LjkxIDE1LjY1IDQuNTMgMTMuNDIgNS41OUwxMi40NiA0LjYzQzEyLjA3IDQuMjQgMTEuNDQgNC4yNCAxMS4wNSA0LjYzTDEwLjk3IDQuNzJDMTAuODMgMy43NSAxMCAzIDkgM0M3LjkgMyA3IDMuOSA3IDVDNyA1LjA5IDcgNS4xOCA3LjAzIDUuMjZDNi40MiA1LjYxIDYgNi4yNSA2IDdDNiA3LjQ2IDYuMTYgNy44NyA2LjQyIDguMjFDNi4xNyA4LjM5IDYgOC42NyA2IDlWMTAuMzVDMy42NyAxMS4xNyAyIDEzLjM5IDIgMTZDMiAxOS4zMSA0LjY5IDIyIDggMjJTMTQgMTkuMzEgMTQgMTZDMTQgMTMuMzkgMTIuMzMgMTEuMTcgMTAgMTAuMzVWOUMxMCA4LjY3IDkuODMgOC4zOSA5LjU4IDguMjFDOS44NCA3Ljg3IDEwIDcuNDYgMTAgN0MxMCA2LjkxIDEwIDYuODIgOS45NyA2Ljc0QzEwLjE1IDYuNjQgMTAuMyA2LjUgMTAuNDMgNi4zOEMxMS4zNiA2Ljg4IDEyIDcuODYgMTIgOVY5LjA4QzEyLjEzIDkuMTUgMTIuMjUgOS4yNSAxMi4zOCA5LjMzQzEyLjU3IDguOTEgMTIuODMgOC41IDEzLjE3IDguMTdDMTQuNzMgNi42MSAxNy4yNyA2LjYxIDE4LjgzIDguMTdDMjAuMzkgOS43MyAyMC4zOSAxMi4yNyAxOC44MyAxMy44M0MxOC4wMyAxNC42MyAxNyAxNSAxNS45MyAxNUMxNiAxNS4zMiAxNiAxNS42NiAxNiAxNkMxNiAxNi4zNCAxNS45NyAxNi42NyAxNS45MyAxN0MxNy41IDE3IDE5LjA1IDE2LjQzIDIwLjI0IDE1LjI0QzIyLjU5IDEyLjkgMjIuNTkgOS4xIDIwLjI0IDYuNzZNOSA0QzkuNTUgNCAxMCA0LjQ1IDEwIDVDMTAgNS4zMyA5LjgzIDUuNjEgOS41OCA1Ljc5QzkuMjIgNS4zMSA4LjY1IDUgOCA1QzggNC40NSA4LjQ1IDQgOSA0TTcuNDIgNi4yMUM3Ljc4IDYuNjkgOC4zNSA3IDkgN0M5IDcuNTUgOC41NSA4IDggOFM3IDcuNTUgNyA3QzcgNi42NyA3LjE3IDYuMzkgNy40MiA2LjIxTTEyIDE2QzEyIDE4LjIxIDEwLjIxIDIwIDggMjBTNCAxOC4yMSA0IDE2QzQgMTMuNzkgNS43OSAxMiA4IDEyUzEyIDEzLjc5IDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRzaGFrZSA9IFwiTTExIDZIMTRMMTcuMjkgMi43QTEgMSAwIDAgMSAxOC43MSAyLjdMMjEuMjkgNS4yOUExIDEgMCAwIDEgMjEuMjkgNi43TDE5IDlIMTFWMTFBMSAxIDAgMCAxIDEwIDEyQTEgMSAwIDAgMSA5IDExVjhBMiAyIDAgMCAxIDExIDZNNSAxMVYxNUwyLjcxIDE3LjI5QTEgMSAwIDAgMCAyLjcxIDE4LjdMNS4yOSAyMS4yOUExIDEgMCAwIDAgNi43MSAyMS4yOUwxMSAxN0gxNUExIDEgMCAwIDAgMTYgMTZWMTVIMTdBMSAxIDAgMCAwIDE4IDE0VjEzSDE5QTEgMSAwIDAgMCAyMCAxMlYxMUgxM1YxMkEyIDIgMCAwIDEgMTEgMTRIOUEyIDIgMCAwIDEgNyAxMlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRzaGFrZU91dGxpbmUgPSBcIk0yMS43MSA4LjcxQzIyLjk2IDcuNDYgMjIuMzkgNiAyMS43MSA1LjI5TDE4LjcxIDIuMjlDMTcuNDUgMS4wNCAxNiAxLjYxIDE1LjI5IDIuMjlMMTMuNTkgNEgxMUM5LjEgNCA4IDUgNy40NCA2LjE1TDMgMTAuNTlWMTQuNTlMMi4yOSAxNS4yOUMxLjA0IDE2LjU1IDEuNjEgMTggMi4yOSAxOC43MUw1LjI5IDIxLjcxQzUuODMgMjIuMjUgNi40MSAyMi40NSA2Ljk2IDIyLjQ1QzcuNjcgMjIuNDUgOC4zMiAyMi4xIDguNzEgMjEuNzFMMTEuNDEgMTlIMTVDMTYuNyAxOSAxNy41NiAxNy45NCAxNy44NyAxNi45QzE5IDE2LjYgMTkuNjIgMTUuNzQgMTkuODcgMTQuOUMyMS40MiAxNC41IDIyIDEzLjAzIDIyIDEyVjlIMjEuNDFMMjEuNzEgOC43MU0yMCAxMkMyMCAxMi40NSAxOS44MSAxMyAxOSAxM0wxOCAxM0wxOCAxNEMxOCAxNC40NSAxNy44MSAxNSAxNyAxNUwxNiAxNUwxNiAxNkMxNiAxNi40NSAxNS44MSAxNyAxNSAxN0gxMC41OUw3LjMxIDIwLjI4QzcgMjAuNTcgNi44MiAyMC40IDYuNzEgMjAuMjlMMy43MiAxNy4zMUMzLjQzIDE3IDMuNiAxNi44MiAzLjcxIDE2LjcxTDUgMTUuNDFWMTEuNDFMNyA5LjQxVjExQzcgMTIuMjEgNy44IDE0IDEwIDE0UzEzIDEyLjIxIDEzIDExSDIwVjEyTTIwLjI5IDcuMjlMMTguNTkgOUgxMVYxMUMxMSAxMS40NSAxMC44MSAxMiAxMCAxMlM5IDExLjQ1IDkgMTFWOEM5IDcuNTQgOS4xNyA2IDExIDZIMTQuNDFMMTYuNjkgMy43MkMxNyAzLjQzIDE3LjE4IDMuNiAxNy4yOSAzLjcxTDIwLjI4IDYuNjlDMjAuNTcgNyAyMC40IDcuMTggMjAuMjkgNy4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5nZXIgPSBcIk0xMiA0QTMuNSAzLjUgMCAwIDAgOC41IDcuNUgxMC41QTEuNSAxLjUgMCAwIDEgMTIgNkExLjUgMS41IDAgMCAxIDEzLjUgNy41QTEuNSAxLjUgMCAwIDEgMTIgOUMxMS40NSA5IDExIDkuNDUgMTEgMTBWMTEuNzVMMi40IDE4LjJBMSAxIDAgMCAwIDMgMjBIMjFBMSAxIDAgMCAwIDIxLjYgMTguMkwxMyAxMS43NVYxMC44NUEzLjUgMy41IDAgMCAwIDE1LjUgNy41QTMuNSAzLjUgMCAwIDAgMTIgNE0xMiAxMy41TDE4IDE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFyZEhhdCA9IFwiTTkuODcsMTIuMTVMOSw2LjQ2QzEwLjk1LDUuODQgMTMuMDUsNS44NCAxNSw2LjQ2TDE0LjEzLDEyLjE1QzE0LjA2LDEyLjY0IDEzLjYzLDEzIDEzLjEzLDEzSDEwLjg2QzEwLjM3LDEzIDkuOTQsMTIuNjQgOS44NywxMi4xNU0yMiwxNlYxNkMyMiwxNS4yMSAyMS41MywxNC41IDIwLjgsMTQuMTdDMjAuMzIsMTEuODYgMTguOTYsOS44MyAxNyw4LjVMMTUuMjQsMTMuMzRDMTUuMSwxMy43NCAxNC43MiwxNCAxNC4zLDE0SDkuN0M5LjI4LDE0IDguOSwxMy43NCA4Ljc2LDEzLjM0TDcsOC41QzUuMDQsOS44MyAzLjY4LDExLjg2IDMuMiwxNC4xNkMyLjQ3LDE0LjUgMiwxNS4yIDIsMTZMOC40NSwxNy44NEM4LjgxLDE3Ljk0IDkuMTgsMTggOS41NSwxOEgxNC40M0MxNC44LDE4IDE1LjE3LDE3Ljk0IDE1LjUzLDE3Ljg0TDIyLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhcmRkaXNrID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk0xMiw0QTYsNiAwIDAsMCA2LDEwQzYsMTMuMzEgOC42OSwxNiAxMi4xLDE2TDExLjIyLDEzLjc3QzEwLjk1LDEzLjI5IDExLjExLDEyLjY4IDExLjU5LDEyLjRMMTIuNDUsMTEuOUMxMi45MywxMS42MyAxMy41NCwxMS43OSAxMy44MiwxMi4yN0wxNS43NCwxNC42OUMxNy4xMiwxMy41OSAxOCwxMS45IDE4LDEwQTYsNiAwIDAsMCAxMiw0TTEyLDlBMSwxIDAgMCwxIDEzLDEwQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTEsMTBBMSwxIDAgMCwxIDEyLDlNNywxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywyMEExLDEgMCAwLDAgOCwxOUExLDEgMCAwLDAgNywxOE0xMi4wOSwxMy4yN0wxNC41OCwxOS41OEwxNy4xNywxOC4wOEwxMi45NSwxMi43N0wxMi4wOSwxMy4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIYXJkZGlza1BsdXMgPSBcIk0xMiA5QTEgMSAwIDEgMCAxMyAxMEExIDEgMCAwIDAgMTIgOU0xMiA5QTEgMSAwIDEgMCAxMyAxMEExIDEgMCAwIDAgMTIgOU0xOCAySDZBMiAyIDAgMCAwIDQgNFYxMy4wOUE1LjQ3IDUuNDcgMCAwIDEgNSAxM0E1LjcxIDUuNzEgMCAwIDEgNyAxMy4zNkE2IDYgMCAxIDEgMTUuNzEgMTQuNjlMMTMuNzkgMTIuMjdBMSAxIDAgMCAwIDEyLjQyIDExLjlMMTEuNTYgMTIuNEExIDEgMCAwIDAgMTEuMTkgMTMuNzdMMTIuMSAxNkE2LjEyIDYuMTIgMCAwIDEgMTAgMTUuNjJBNiA2IDAgMCAxIDEwLjE5IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY0QTIgMiAwIDAgMCAxOCAyTTE0LjU4IDE5LjU4TDEyLjA5IDEzLjI3TDEyLjk1IDEyLjc3TDE3LjE3IDE4LjA4TTEyIDExQTEgMSAwIDEgMCAxMSAxMEExIDEgMCAwIDAgMTIgMTFNOSAyMEg2VjIzSDRWMjBIMVYxOEg0VjE1SDZWMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXJkZGlza1JlbW92ZSA9IFwiTTEyIDlBMSAxIDAgMSAwIDEzIDEwQTEgMSAwIDAgMCAxMiA5TTEyIDlBMSAxIDAgMSAwIDEzIDEwQTEgMSAwIDAgMCAxMiA5TTE4IDJINkEyIDIgMCAwIDAgNCA0VjEzLjA5QTUuNDcgNS40NyAwIDAgMSA1IDEzQTUuNzEgNS43MSAwIDAgMSA3IDEzLjM2QTYgNiAwIDEgMSAxNS43MSAxNC42OUwxMy43OSAxMi4yN0ExIDEgMCAwIDAgMTIuNDIgMTEuOUwxMS41NiAxMi40QTEgMSAwIDAgMCAxMS4xOSAxMy43N0wxMi4xIDE2QTYuMTIgNi4xMiAwIDAgMSAxMCAxNS42MkE2IDYgMCAwIDEgMTAuMTkgMjJIMThBMiAyIDAgMCAwIDIwIDIwVjRBMiAyIDAgMCAwIDE4IDJNMTQuNTggMTkuNThMMTIuMDkgMTMuMjdMMTIuOTUgMTIuNzdMMTcuMTcgMTguMDhNMTIgMTFBMSAxIDAgMSAwIDExIDEwQTEgMSAwIDAgMCAxMiAxMU03LjEyIDIyLjU0TDUgMjAuNDFMMi44OCAyMi41NEwxLjQ2IDIxLjEyTDMuNTkgMTlMMS40NiAxNi44OEwyLjg4IDE1LjQ2TDUgMTcuNTlMNy4xMiAxNS40Nkw4LjU0IDE2Ljg4TDYuNDEgMTlMOC41NCAyMS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXRGZWRvcmEgPSBcIk0xOS4xMSwxMS45MkMxOS4xMywxMS43MSAxOS4xNCwxMS41IDE5LjE0LDExLjI5QzE5LjE0LDcuODYgMTcuNzEsNC4xNCAxNi4yOCw0LjE0QzE0Ljg1LDQuMTQgMTMuNDIsNS41NyAxMiw1LjU3QzEwLjU3LDUuNTcgOS4xNCw0LjE0IDcuNzEsNC4xNEM2LjI4LDQuMTQgNC44Niw3Ljc5IDQuODYsMTEuMjlDNC44NiwxMS41IDQuODYsMTEuNzEgNC44OCwxMS45MkM3LjIyLDEyLjQ1IDkuNiwxMi43MiAxMiwxMi43MUMxNC40NSwxMi43MSAxNi44MywxMi40NCAxOS4xMSwxMS45Mk0zLjQ1LDE4LjE4QzksMTkuODUgMTQuOTYsMTkuODYgMjAuNTQsMTguMThDMjAuOTYsMTguMDQgMjEuMzMsMTcuNzcgMjEuNTksMTcuNDFDMjEuODUsMTcuMDUgMjIsMTYuNjEgMjIsMTYuMTdDMjIsMTUuNzIgMjEuODYsMTUuMjkgMjEuNjEsMTQuOTJDMjEuMzUsMTQuNTYgMjEsMTQuMjkgMjAuNTYsMTQuMTRDMTcuODYsMTUgMTUsMTUuNDUgMTIsMTUuNDVDOSwxNS40NSA2LjEzLDE1IDMuNDMsMTQuMTRDMywxNC4yOSAyLjY1LDE0LjU3IDIuMzksMTQuOTNDMi4xNCwxNS4yOSAyLDE1LjcyIDIsMTYuMTdDMiwxNy4xMSAyLjYxLDE3LjkgMy40NSwxOC4xOFYxOC4xOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXphcmRMaWdodHMgPSBcIk0xMiwxMkwxNC4zMywxNkg5LjY4TDEyLDEyTTEyLDhMNi4yMSwxOEgxNy44TDEyLDhNMTIsMkwxLDIxSDIzTDEyLDJNMTIsNkwxOS41MywxOUg0LjQ3TDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGRyID0gXCJNMjEsMTEuNVYxMC41QzIxLDkuNyAyMC4zLDkgMTkuNSw5SDE2VjE1SDE3LjVWMTNIMTguNkwxOS41LDE1SDIxTDIwLjEsMTIuOUMyMC42LDEyLjYgMjEsMTIuMSAyMSwxMS41TTE5LjUsMTEuNUgxNy41VjEwLjVIMTkuNVYxMS41TTYuNSwxMUg0LjVWOUgzVjE1SDQuNVYxMi41SDYuNVYxNUg4VjlINi41VjExTTEzLDlIOS41VjE1SDEzQzEzLjgsMTUgMTQuNSwxNC4zIDE0LjUsMTMuNVYxMC41QzE0LjUsOS43IDEzLjgsOSAxMyw5TTEzLDEzLjVIMTFWMTAuNUgxM1YxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhkck9mZiA9IFwiTTE3LjUsMTVWMTNIMTguNkwxOS41LDE1SDIxTDIwLjEsMTIuOUMyMC42LDEyLjcgMjEsMTIuMSAyMSwxMS41VjEwLjVDMjEsOS43IDIwLjMsOSAxOS41LDlIMTZWMTMuOUwxNy4xLDE1SDE3LjVNMTcuNSwxMC41SDE5LjVWMTEuNUgxNy41VjEwLjVNMTMsMTAuNVYxMC45TDE0LjUsMTIuNFYxMC41QzE0LjUsOS43IDEzLjgsOSAxMyw5SDExLjFMMTIuNiwxMC41SDEzTTkuNSw5LjVMMi41LDIuNUwxLjQsMy41TDYuOSw5SDYuNVYxMUg0LjVWOUgzVjE1SDQuNVYxMi41SDYuNVYxNUg4VjEwLjFMOS41LDExLjZWMTVIMTIuOUwyMC41LDIyLjZMMjEuNiwyMS41TDkuNSw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZCA9IFwiTTEzIDNDOS4yIDMgNi4yIDUuOSA2IDkuN0w0LjEgMTIuMkMzLjkgMTIuNSA0LjEgMTMgNC41IDEzSDZWMTZDNiAxNy4xIDYuOSAxOCA4IDE4SDlWMjFIMTZWMTYuM0MxOC40IDE1LjIgMjAgMTIuOCAyMCAxMEMyMCA2LjEgMTYuOSAzIDEzIDNcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkQWxlcnQgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE0IDE1SDEyVjEzSDE0VjE0TTE0IDExSDEyVjVIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEFsZXJ0T3V0bGluZSA9IFwiTTEzIDNDMTYuOSAzIDIwIDYuMSAyMCAxMEMyMCAxMi44IDE4LjQgMTUuMiAxNiAxNi4zVjIxSDlWMThIOEM2LjkgMTggNiAxNy4xIDYgMTZWMTNINC41QzQuMSAxMyAzLjggMTIuNSA0LjEgMTIuMkw2IDkuN0M2LjIgNS45IDkuMiAzIDEzIDNNMTMgMUM4LjQgMSA0LjYgNC40IDQuMSA4LjlMMi41IDExQzEuOSAxMS44IDEuOSAxMi44IDIuMyAxMy42QzIuNyAxNC4zIDMuMyAxNC44IDQgMTQuOVYxNkM0IDE3LjkgNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS44IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTQgMTVIMTJWMTNIMTRWMTVNMTQgMTFIMTJWNUgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDaGVjayA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTIuNDcgMTNMOSA5LjVMMTAuNCA4LjA5TDEyLjQ3IDEwLjE3TDE2LjYgNkwxOCA3LjQxTDEyLjQ3IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDaGVja091dGxpbmUgPSBcIk0xMyAzQzE2Ljg4IDMgMjAgNi4xNCAyMCAxMEMyMCAxMi44IDE4LjM3IDE1LjE5IDE2IDE2LjMxVjIxSDlWMThIOEM2Ljg5IDE4IDYgMTcuMTEgNiAxNlYxM0g0LjVDNC4wOCAxMyAzLjg0IDEyLjUgNC4wOCAxMi4xOUw2IDkuNjZDNi4xOSA1Ljk1IDkuMjMgMyAxMyAzTTEzIDFDOC40MiAxIDQuNjEgNC40MyA0LjA2IDguOTFMMi41IDExQzEuOTIgMTEuNzIgMS44MiAxMi43MiAyLjI0IDEzLjU5QzIuNiAxNC4zMSAzLjI0IDE0LjggNCAxNC45NVYxNkM0IDE3Ljg2IDUuMjggMTkuNDMgNyAxOS44N1YyM0gxOFYxNy40N0MyMC41IDE1LjgzIDIyIDEzLjA2IDIyIDEwQzIyIDUuMDQgMTcuOTYgMSAxMyAxTTEyLjQ3IDEzTDkgOS41TDEwLjQgOC4wOUwxMi40NyAxMC4xN0wxNi42IDZMMTggNy40MUwxMi40NyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkQ29nID0gXCJNMTMgOC41OEMxMy43OCA4LjU4IDE0LjQ0IDkuMTkgMTQuNDQgMTBTMTMuNzggMTEuNDQgMTMgMTEuNDQgMTEuNTggMTAuNzggMTEuNTggMTAgMTIuMTkgOC41OCAxMyA4LjU4TTEzIDNDMTYuODggMyAyMCA2LjE0IDIwIDEwQzIwIDEyLjggMTguMzcgMTUuMTkgMTYgMTYuMzFWMjFIOVYxOEg4QzYuODkgMTggNiAxNy4xMSA2IDE2VjEzSDQuNUM0LjA4IDEzIDMuODQgMTIuNSA0LjA4IDEyLjE5TDYgOS42NkM2LjE5IDUuOTUgOS4yMyAzIDEzIDNNMTYgMTBDMTYgOS44NCAxNiA5Ljc1IDE1Ljk0IDkuNjFMMTYuODMgOC45NUMxNi44OCA4LjkxIDE2LjkyIDguNzcgMTYuODggOC42N0wxNi4wOCA3LjMxQzE2LjAzIDcuMjIgMTUuODkgNy4xNyAxNS44IDcuMjJMMTQuODEgNy42NEMxNC42MyA3LjQ1IDE0LjM5IDcuMzEgMTQuMTYgNy4yMkwxNCA2LjE5QzEzLjk3IDYuMDUgMTMuOTIgNiAxMy43OCA2SDEyLjE5QzEyLjA5IDYgMTIgNi4wNSAxMiA2LjE5TDExLjg2IDcuMjJDMTEuNjMgNy4zMSAxMS4zOSA3LjQ1IDExLjIgNy42NEwxMC4xNyA3LjIyQzEwLjA4IDcuMTcgMTAgNy4yMiA5Ljk0IDcuMzFMOS4xNCA4LjY3QzkuMDkgOC44MSA5LjA5IDguOTEgOS4xOSA4Ljk1TDEwLjAzIDkuNjFDMTAuMDMgOS43NSAxMCA5Ljg5IDEwIDEwQzEwIDEwLjEzIDEwLjAzIDEwLjI3IDEwLjAzIDEwLjQxTDkuMTkgMTEuMDZDOS4wOSAxMS4xMSA5LjA5IDExLjIgOS4xNCAxMS4zTDkuOTQgMTIuN0MxMCAxMi44IDEwLjA4IDEyLjggMTAuMTcgMTIuOEwxMS4xNiAxMi4zN0MxMS4zOSAxMi41NiAxMS41OCAxMi42NiAxMS44NiAxMi43NUwxMiAxMy44M0MxMiAxMy45MiAxMi4wOSAxNCAxMi4xOSAxNEgxMy43OEMxMy45MiAxNCAxMy45NyAxMy45MiAxNCAxMy44M0wxNC4xNiAxMi43NUMxNC4zOSAxMi42NiAxNC42MyAxMi41NiAxNC44MSAxMi4zOEwxNS44IDEyLjhDMTUuODkgMTIuOCAxNi4wMyAxMi44IDE2LjA4IDEyLjdMMTYuODggMTEuM0MxNi45MiAxMS4yIDE2Ljg4IDExLjExIDE2LjgzIDExLjA2TDE2IDEwLjQxVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDb2dPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDIgMSA0LjYxIDQuNDMgNC4wNiA4LjkxTDIuNSAxMUMxLjkyIDExLjcyIDEuODIgMTIuNzIgMi4yNCAxMy41OUMyLjYgMTQuMzEgMy4yNCAxNC44IDQgMTQuOTVWMTZDNCAxNy44NiA1LjI4IDE5LjQzIDcgMTkuODdWMjNIMThWMTcuNDdDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjA0IDE3Ljk2IDEgMTMgMU0xNi4xIDkuNDJWOUMxNi4xIDguODUgMTYuMSA4Ljc2IDE2LjA0IDguNjJMMTYuOTMgNy45NkMxNyA3LjkyIDE3IDcuNzggMTcgNy42OEwxNi4xOCA2LjMyQzE2LjEzIDYuMjMgMTYgNi4xOCAxNS45IDYuMjNMMTQuOTEgNi42NUMxNC43MyA2LjQ2IDE0LjUgNi4zMiAxNC4yNiA2LjIzTDE0LjEgNS4yQzE0LjA3IDUuMDYgMTQgNSAxMy44OCA1SDEyLjI5QzEyLjE5IDUgMTIuMSA1LjA2IDEyLjEgNS4yTDExLjk2IDYuMjNDMTEuNzMgNi4zMiAxMS41IDYuNDYgMTEuMyA2LjY1TDEwLjI3IDYuMjNDMTAuMTggNi4xOCAxMC4xIDYuMjMgMTAuMDQgNi4zMkw5LjI0IDcuNjhDOS4xOSA3LjgyIDkuMTkgNy45MiA5LjI5IDcuOTZMMTAuMTMgOC42MkMxMC4xMyA4Ljc2IDEwLjEgOC45IDEwLjEgOUMxMC4xIDkuMTQgMTAuMTMgOS4yOCAxMC4xMyA5LjQyTDkuMjkgMTAuMDdDOS4xOSAxMC4xMiA5LjE5IDEwLjIxIDkuMjQgMTAuMzFMMTAuMDQgMTEuNzFDMTAuMSAxMS44MSAxMC4xOCAxMS44MSAxMC4yNyAxMS44MUwxMS4yNiAxMS4zOEMxMS41IDExLjU3IDExLjY4IDExLjY3IDExLjk2IDExLjc2TDEyLjEgMTIuODRDMTIuMSAxMi45MyAxMi4xOSAxMyAxMi4yOSAxM0gxMy44OEMxNCAxMyAxNC4wNyAxMi45MyAxNC4xIDEyLjg0TDE0LjI2IDExLjc2QzE0LjUgMTEuNjcgMTQuNzMgMTEuNTcgMTQuOTEgMTEuMzlMMTUuOSAxMS44MUMxNiAxMS44MSAxNi4xMyAxMS44MSAxNi4xOCAxMS43MUwxNyAxMC4zMUMxNyAxMC4yMSAxNyAxMC4xMiAxNi45MyAxMC4wN0wxNi4xIDkuNDJNMTMuMSAxMC40NUMxMi4zMiAxMC40NSAxMS42OCA5Ljc5IDExLjY4IDlTMTIuMjkgNy41OSAxMy4xIDcuNTlDMTMuODggNy41OSAxNC41NCA4LjIgMTQuNTQgOVMxMy44OCAxMC40NSAxMy4xIDEwLjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWREb3RzSG9yaXpvbnRhbCA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTAgMTFDOS40NSAxMSA5IDEwLjU1IDkgMTBTOS40NSA5IDEwIDkgMTEgOS40NSAxMSAxMCAxMC41NSAxMSAxMCAxMU0xMyAxMUMxMi40NSAxMSAxMiAxMC41NSAxMiAxMFMxMi40NSA5IDEzIDkgMTQgOS40NSAxNCAxMCAxMy41NSAxMSAxMyAxMU0xNiAxMUMxNS40NSAxMSAxNSAxMC41NSAxNSAxMFMxNS40NSA5IDE2IDkgMTcgOS40NSAxNyAxMCAxNi41NSAxMSAxNiAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkRG90c0hvcml6b250YWxPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjggMS45IDEyLjggMi4zIDEzLjZDMi43IDE0LjMgMy4zIDE0LjggNCAxNC45VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjggMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xMCAxMEM5LjQgMTAgOSA5LjYgOSA5UzkuNCA4IDEwIDggMTEgOC40IDExIDkgMTAuNiAxMCAxMCAxME0xMyAxMEMxMi40IDEwIDEyIDkuNiAxMiA5UzEyLjQgOCAxMyA4IDE0IDguNCAxNCA5IDEzLjYgMTAgMTMgMTBNMTYgMTBDMTUuNSAxMCAxNSA5LjYgMTUgOVMxNS41IDggMTYgOCAxNyA4LjQgMTcgOSAxNi41IDEwIDE2IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRGbGFzaCA9IFwiTTEzIDNDOS4yIDMgNi4yIDYgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE1IDlMMTEuOSAxNUwxMi41IDExSDEwLjVMMTIuNSA2SDE1TDEzLjUgOUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkRmxhc2hPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjggMS45IDEyLjggMi4zIDEzLjZDMi43IDE0LjMgMy4zIDE0LjggNCAxNC45VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjggMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNSA5TDExLjkgMTVMMTIuNSAxMUgxMC40TDEyLjUgNkgxNUwxMy41IDlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEhlYXJ0ID0gXCJNMTMgM0M5LjIzIDMgNi4xOSA1Ljk1IDYgOS42Nkw0LjA4IDEyLjE5QzMuODQgMTIuNSA0LjA4IDEzIDQuNSAxM0g2VjE2QzYgMTcuMTEgNi44OSAxOCA4IDE4SDlWMjFIMTZWMTYuMzFDMTguMzcgMTUuMTkgMjAgMTIuOCAyMCAxMEMyMCA2LjE0IDE2Ljg4IDMgMTMgM00xNyA4LjgzQzE3IDEwLjM3IDE1LjY0IDExLjYgMTMuNTggMTMuNDdMMTMgMTRMMTIuNDIgMTMuNDdDMTAuMzYgMTEuNiA5IDEwLjM3IDkgOC44M0M5IDcuNjMgOS45NiA2LjY0IDExLjE2IDYuNjNIMTEuMkMxMS44OSA2LjYzIDEyLjU1IDYuOTQgMTMgNy40NkMxMy40NSA2Ljk0IDE0LjExIDYuNjMgMTQuOCA2LjYzQzE2IDYuNjIgMTcgNy41OSAxNyA4Ljc5VjguODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEhlYXJ0T3V0bGluZSA9IFwiTTEzIDNDMTYuODggMyAyMCA2LjE0IDIwIDEwQzIwIDEyLjggMTguMzcgMTUuMTkgMTYgMTYuMzFWMjFIOVYxOEg4QzYuODkgMTggNiAxNy4xMSA2IDE2VjEzSDQuNUM0LjA4IDEzIDMuODQgMTIuNSA0LjA4IDEyLjE5TDYgOS42NkM2LjE5IDUuOTUgOS4yMyAzIDEzIDNNMTMgMUM4LjQxIDEgNC42MSA0LjQyIDQuMDYgOC45TDIuNSAxMUwyLjQ3IDExTDIuNDUgMTEuMDNDMS45IDExLjc5IDEuODMgMTIuNzkgMi4yNiAxMy42MkMyLjYyIDE0LjMxIDMuMjYgMTQuNzkgNCAxNC45NFYxNkM0IDE3Ljg1IDUuMjggMTkuNDIgNyAxOS44N1YyM0gxOFYxNy41QzIwLjUgMTUuODMgMjIgMTMuMDYgMjIgMTBDMjIgNS4wMyAxNy45NiAxIDEzIDFNMTcgOC44M0MxNyAxMC4zNyAxNS42NCAxMS42IDEzLjU4IDEzLjQ3TDEzIDE0TDEyLjQyIDEzLjQ3QzEwLjM2IDExLjYgOSAxMC4zNyA5IDguODNDOSA3LjYzIDkuOTYgNi42NCAxMS4xNiA2LjYzSDExLjJDMTEuODkgNi42MyAxMi41NSA2Ljk0IDEzIDcuNDZDMTMuNDUgNi45NCAxNC4xMSA2LjYzIDE0LjggNi42M0MxNiA2LjYyIDE3IDcuNTkgMTcgOC43OVY4LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRMaWdodGJ1bGIgPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTE0IDE0SDEyVjEzSDE0VjE0TTE1LjYgOS41QzE1LjM0IDkuOTQgMTQuOTYgMTAuMzIgMTQuNSAxMC41OFYxMkgxMS41VjEwLjU4QzEwLjA3IDkuNzUgOS41NyA3LjkyIDEwLjQgNi41UzEzLjA3IDQuNTYgMTQuNSA1LjM4IDE2LjQzIDguMDUgMTUuNiA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZExpZ2h0YnVsYk91dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuOCAxLjkgMTIuOCAyLjMgMTMuNkMyLjcgMTQuMyAzLjMgMTQuOCA0IDE0LjlWMTZDNCAxNy45IDUuMyAxOS40IDcgMTkuOVYyM0gxOFYxNy41QzIwLjUgMTUuOCAyMiAxMy4xIDIyIDEwQzIyIDUgMTggMSAxMyAxTTE0IDE0SDEyVjEzSDE0VjE0TTE1LjYgOS41QzE1LjMgOS45IDE1IDEwLjMgMTQuNSAxMC42VjEySDExLjVWMTAuNkMxMC4xIDkuOCA5LjYgNy45IDEwLjQgNi41UzEzLjEgNC42IDE0LjUgNS40IDE2LjQgOC4xIDE1LjYgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRNaW51cyA9IFwiTTEzIDNDOS4yIDMgNi4yIDUuOSA2IDkuN0w0LjEgMTIuMkMzLjkgMTIuNSA0LjEgMTMgNC41IDEzSDZWMTZDNiAxNy4xIDYuOSAxOCA4IDE4SDlWMjFIMTZWMTYuM0MxOC40IDE1LjIgMjAgMTIuOCAyMCAxMEMyMCA2LjEgMTYuOSAzIDEzIDNNMTcgMTBIOVY4SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRNaW51c091dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuNyAxLjggMTIuNyAyLjIgMTMuNkMyLjYgMTQuMyAzLjIgMTQuOCA0IDE1VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjkgMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNyAxMEg5VjhIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZE91dGxpbmUgPSBcIk0xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMiAxMS44IDEuOSAxMi44IDIuMyAxMy42QzIuNyAxNC4zIDMuMyAxNC44IDQgMTQuOVYxNkM0IDE3LjggNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS44IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDYgOS4yIDMgMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFBsdXMgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE3IDEwSDE0VjEzSDEyVjEwSDlWOEgxMlY1SDE0VjhIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFBsdXNPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjcgMS44IDEyLjcgMi4yIDEzLjZDMi42IDE0LjMgMy4yIDE0LjggNCAxNVYxNkM0IDE3LjkgNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS45IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTcgMTBIMTRWMTNIMTJWMTBIOVY4SDEyVjVIMTRWOEgxN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkUXVlc3Rpb24gPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTE0IDE0SDEyVjEySDE0VjE0TTE1Ljc1IDguODFDMTUuNDYgOS4yMSAxNS4wOSA5LjUgMTQuNjQgOS43NEMxNC4zOSA5LjkgMTQuMjIgMTAuMDcgMTQuMTMgMTAuMjZDMTQuMDQgMTAuNDQgMTQgMTAuNjkgMTQgMTFIMTJDMTIgMTAuNSAxMi4xMSAxMC4wOCAxMi4zMSA5LjgyQzEyLjUgOS41NSAxMi44NSA5LjI1IDEzLjM2IDguOTFDMTMuNjIgOC43NSAxMy44MyA4LjU1IDEzLjk3IDguMzJDMTQuMTMgOC4wOSAxNC4yIDcuODIgMTQuMiA3LjVDMTQuMiA3LjIgMTQuMTIgNi45NCAxMy45NCA2Ljc1QzEzLjc2IDYuNTcgMTMuNSA2LjQ3IDEzLjE5IDYuNDdDMTIuOTMgNi40NyAxMi43MSA2LjU1IDEyLjUzIDYuN0MxMi4zNSA2Ljg2IDEyLjI2IDcuMDkgMTIuMjUgNy4zOUgxMC4zMkwxMC4zMSA3LjM2QzEwLjMgNi41NyAxMC41NiA2IDExLjA4IDUuNTlDMTEuNjIgNS4yIDEyLjMyIDUgMTMuMTkgNUMxNC4xMiA1IDE0Ljg1IDUuMjMgMTUuMzggNS42OEMxNS45MiA2LjEzIDE2LjE5IDYuNzQgMTYuMTkgNy41QzE2LjE5IDggMTYuMDQgOC40MSAxNS43NSA4LjgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRRdWVzdGlvbk91dGxpbmUgPSBcIk0xMyAzQzE2Ljg4IDMgMjAgNi4xNCAyMCAxMEMyMCAxMi44IDE4LjM3IDE1LjE5IDE2IDE2LjMxVjIxSDlWMThIOEM2Ljg5IDE4IDYgMTcuMTEgNiAxNlYxM0g0LjVDNC4wOCAxMyAzLjg0IDEyLjUgNC4wOCAxMi4xOUw2IDkuNjZDNi4xOSA1Ljk1IDkuMjMgMyAxMyAzTTEwLjMyIDcuMzlIMTIuMjVDMTIuMjYgNy4wOSAxMi4zNSA2Ljg2IDEyLjUzIDYuN0MxMi43MSA2LjU1IDEyLjkzIDYuNDcgMTMuMTkgNi40N0MxMy41IDYuNDcgMTMuNzYgNi41NyAxMy45NCA2Ljc1QzE0LjEyIDYuOTQgMTQuMiA3LjIgMTQuMiA3LjVDMTQuMiA3LjgyIDE0LjEzIDguMDkgMTMuOTcgOC4zMkMxMy44MyA4LjU1IDEzLjYyIDguNzUgMTMuMzYgOC45MUMxMi44NSA5LjI1IDEyLjUgOS41NSAxMi4zMSA5LjgyQzEyLjExIDEwLjA4IDEyIDEwLjUgMTIgMTFIMTRDMTQgMTAuNjkgMTQuMDQgMTAuNDQgMTQuMTMgMTAuMjZDMTQuMjIgMTAuMDcgMTQuMzkgOS45IDE0LjY0IDkuNzRDMTUuMDkgOS41IDE1LjQ2IDkuMjEgMTUuNzUgOC44MUMxNi4wNCA4LjQxIDE2LjE5IDggMTYuMTkgNy41QzE2LjE5IDYuNzQgMTUuOTIgNi4xMyAxNS4zOCA1LjY4QzE0Ljg1IDUuMjMgMTQuMTIgNSAxMy4xOSA1QzEyLjMyIDUgMTEuNjIgNS4yIDExLjA4IDUuNTlDMTAuNTYgNiAxMC4zIDYuNTcgMTAuMzEgNy4zNkwxMC4zMiA3LjM5TTEyIDE0SDE0VjEySDEyVjE0TTEzIDFDOC40MSAxIDQuNjEgNC40MiA0LjA2IDguOUwyLjUgMTFMMi40NyAxMUwyLjQ1IDExLjAzQzEuOSAxMS43OSAxLjgzIDEyLjc5IDIuMjYgMTMuNjJDMi42MiAxNC4zMSAzLjI2IDE0Ljc5IDQgMTQuOTRWMTZDNCAxNy44NSA1LjI4IDE5LjQyIDcgMTkuODdWMjNIMThWMTcuNUMyMC41IDE1LjgzIDIyIDEzLjA2IDIyIDEwQzIyIDUuMDMgMTcuOTYgMSAxMyAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRSZW1vdmUgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE1LjEgMTIuNUwxMyAxMC40TDEwLjkgMTIuNUw5LjUgMTEuMUwxMS42IDlMOS41IDYuOUwxMC45IDUuNUwxMyA3LjZMMTUuMSA1LjVMMTYuNSA2LjlMMTQuNCA5TDE2LjUgMTEuMUwxNS4xIDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFJlbW92ZU91dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuNyAxLjggMTIuNyAyLjIgMTMuNkMyLjYgMTQuMyAzLjIgMTQuOCA0IDE1VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjkgMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNi41IDYuOUwxNC40IDlMMTYuNSAxMS4xTDE1LjEgMTIuNUwxMyAxMC40TDEwLjkgMTIuNUw5LjUgMTEuMUwxMS42IDlMOS41IDYuOUwxMC45IDUuNUwxMyA3LjZMMTUuMSA1LjVMMTYuNSA2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFNub3dmbGFrZSA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTcuMDYgOS41N0wxNS4xIDEwLjA5TDE2LjU0IDExLjU0QzE2Ljg5IDExLjg4IDE2Ljg5IDEyLjQ2IDE2LjU0IDEyLjgxQzE2LjE5IDEzLjE2IDE1LjYxIDEzLjE2IDE1LjI3IDEyLjgxTDEzLjgxIDExLjM3TDEzLjMgMTMuMzNDMTMuMTggMTMuODIgMTIuNjggMTQuMSAxMi4yMSAxMy45N0MxMS43MiAxMy44NCAxMS40NCAxMy4zNSAxMS41NyAxMi44N0wxMi4xIDEwLjlMMTAuMTMgMTEuNDNDOS42NSAxMS41NiA5LjE1IDExLjI4IDkuMDMgMTAuNzlDOC45IDEwLjMyIDkuMTggOS44MiA5LjY3IDkuN0wxMS42MyA5LjE5TDEwLjE5IDcuNzNDOS44NCA3LjM5IDkuODQgNi44MiAxMC4xOSA2LjQ2QzEwLjU0IDYuMTEgMTEuMTIgNi4xMSAxMS40NiA2LjQ2TDEyLjkxIDcuOUwxMy40MyA1Ljk0QzEzLjU1IDUuNDYgMTQuMDQgNS4xOCAxNC41IDUuM0MxNSA1LjQzIDE1LjI4IDUuOTIgMTUuMTYgNi40MUwxNC42MyA4LjM3TDE2LjU5IDcuODRDMTcuMDggNy43MiAxNy41NyA4IDE3LjcgOC41QzE3LjgyIDguOTYgMTcuNTQgOS40NSAxNy4wNiA5LjU3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRTbm93Zmxha2VPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDEgMSA0LjYxIDQuNDIgNC4wNiA4LjlMMi41IDExTDIuNDcgMTFMMi40NSAxMS4wM0MxLjkgMTEuNzkgMS44MyAxMi43OSAyLjI2IDEzLjYyQzIuNjIgMTQuMzEgMy4yNiAxNC43OSA0IDE0Ljk0VjE2QzQgMTcuODUgNS4yOCAxOS40MiA3IDE5Ljg3VjIzSDE4VjE3LjVDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjAzIDE3Ljk2IDEgMTMgMU0xNy4zMyA5LjNMMTUuMzcgOS44MUwxNi44MSAxMS4yN0MxNy4xNiAxMS42MSAxNy4xNiAxMi4xOSAxNi44MSAxMi41NFMxNS44OCAxMi44OSAxNS41NCAxMi41NEwxNC4wOSAxMS4xTDEzLjU3IDEzLjA2QzEzLjQ1IDEzLjU1IDEyLjk2IDEzLjgyIDEyLjUgMTMuN0MxMiAxMy41NyAxMS43MiAxMy4wOCAxMS44NCAxMi41OUwxMi4zNyAxMC42M0wxMC40MSAxMS4xNkM5LjkyIDExLjI4IDkuNDMgMTEgOS4zIDEwLjVDOS4xOCAxMC4wNSA5LjQ2IDkuNTUgOS45NCA5LjQzTDExLjkgOC45MUwxMC40NiA3LjQ2QzEwLjExIDcuMTIgMTAuMTEgNi41NSAxMC40NiA2LjE5QzEwLjgxIDUuODQgMTEuMzkgNS44NCAxMS43MyA2LjE5TDEzLjE5IDcuNjNMMTMuNyA1LjY3QzEzLjgyIDUuMTggMTQuMzIgNC45IDE0Ljc5IDUuMDNDMTUuMjggNS4xNiAxNS41NiA1LjY1IDE1LjQzIDYuMTNMMTQuOSA4LjFMMTYuODcgNy41N0MxNy4zNSA3LjQ0IDE3Ljg0IDcuNzIgMTcuOTcgOC4yMUMxOC4xIDguNjggMTcuODIgOS4xOCAxNy4zMyA5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFN5bmMgPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTEzIDE1VjEzLjVDMTAuNzkgMTMuNSA5IDExLjcxIDkgOS41QzkgOC42OCA5LjI1IDcuOTIgOS42NyA3LjI5TDEwLjc2IDguMzhDMTAuNTkgOC43MiAxMC41IDkuMSAxMC41IDkuNUMxMC41IDEwLjg4IDExLjYyIDEyIDEzIDEyVjEwLjVMMTUuMjUgMTIuNzVMMTMgMTVNMTYuMzMgMTEuNzFMMTUuMjQgMTAuNjJDMTUuNDEgMTAuMjggMTUuNSA5LjkgMTUuNSA5LjVDMTUuNSA4LjEyIDE0LjM4IDcgMTMgN1Y4LjVMMTAuNzUgNi4yNUwxMyA0VjUuNUMxNS4yMSA1LjUgMTcgNy4yOSAxNyA5LjVDMTcgMTAuMzIgMTYuNzUgMTEuMDggMTYuMzMgMTEuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFN5bmNPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDEgMSA0LjYxIDQuNDIgNC4wNiA4LjlMMi41IDExTDIuNDcgMTFMMi40NSAxMS4wM0MxLjkgMTEuNzkgMS44MyAxMi43OSAyLjI2IDEzLjYyQzIuNjIgMTQuMzEgMy4yNiAxNC43OSA0IDE0Ljk0VjE2QzQgMTcuODUgNS4yOCAxOS40MiA3IDE5Ljg3VjIzSDE4VjE3LjVDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjAzIDE3Ljk2IDEgMTMgMU0xNCAxNVYxMy41QzExLjc5IDEzLjUgMTAgMTEuNzEgMTAgOS41QzEwIDguNjggMTAuMjUgNy45MiAxMC42NyA3LjI5TDExLjc2IDguMzhDMTEuNTkgOC43MiAxMS41IDkuMSAxMS41IDkuNUMxMS41IDEwLjg4IDEyLjYyIDEyIDE0IDEyVjEwLjVMMTYuMjUgMTIuNzVMMTQgMTVNMTcuMzMgMTEuNzFMMTYuMjQgMTAuNjJDMTYuNDEgMTAuMjggMTYuNSA5LjkgMTYuNSA5LjVDMTYuNSA4LjEyIDE1LjM4IDcgMTQgN1Y4LjVMMTEuNzUgNi4yNUwxNCA0VjUuNUMxNi4yMSA1LjUgMTggNy4yOSAxOCA5LjVDMTggMTAuMzIgMTcuNzUgMTEuMDggMTcuMzMgMTEuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lcyA9IFwiTTEyLDFDNywxIDMsNSAzLDEwVjE3QTMsMyAwIDAsMCA2LDIwSDlWMTJINVYxMEE3LDcgMCAwLDEgMTIsM0E3LDcgMCAwLDEgMTksMTBWMTJIMTVWMjBIMThBMywzIDAgMCwwIDIxLDE3VjEwQzIxLDUgMTYuOTcsMSAxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRwaG9uZXNCbHVldG9vdGggPSBcIk04LDZBNiw2IDAgMCwwIDIsMTJWMTYuOEMyLDE3LjQ2IDIuNTQsMTggMy4yLDE4SDZWMTRINFYxMkE0LDQgMCAwLDEgOCw4QTQsNCAwIDAsMSAxMiwxMlYxNEgxMFYxOEgxMi44QTEuMiwxLjIgMCAwLDAgMTQsMTYuOFYxMkE2LDYgMCAwLDAgOCw2TTE5LDdWMTAuNzlMMTYuNzEsOC41TDE2LDkuMjFMMTguNzksMTJMMTYsMTQuNzlMMTYuNzEsMTUuNUwxOSwxMy4yMVYxN0gxOS41TDIyLjM1LDE0LjE0TDIwLjIxLDEyTDIyLjM1LDkuODVMMTkuNSw3SDE5TTIwLDguOTFMMjAuOTQsOS44NUwyMCwxMC43OVY4LjkxTTIwLDEzLjIxTDIwLjk0LDE0LjE0TDIwLDE1LjA4VjEzLjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRwaG9uZXNCb3ggPSBcIk03LjIsMThDNi41NCwxOCA2LDE3LjQ2IDYsMTYuOFYxMy4yTDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyVjEzLjJMMTgsMTYuOEExLjIsMS4yIDAgMCwxIDE2LjgsMThIMTRWMTRIMTZWMTJBNCw0IDAgMCwwIDEyLDhBNCw0IDAgMCwwIDgsMTJWMTRIMTBWMThNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lc09mZiA9IFwiTTEyLDFBOSw5IDAgMCwxIDIxLDEwVjE3QzIxLDE3LjYyIDIwLjgxLDE4LjE5IDIwLjUsMTguNjdMMTUsMTMuMThWMTJIMTlWMTBBNyw3IDAgMCwwIDEyLDNDMTAsMyA4LjIzLDMuODIgNi45Niw1LjE0TDUuNTUsMy43MkM3LjE4LDIuMDQgOS40NywxIDEyLDFNMi43OCwzLjVMMjAuNSwyMS4yMkwxOS4yMywyMi41TDE2LjczLDIwSDE1VjE4LjI3TDksMTIuMjdWMjBINkEzLDMgMCAwLDEgMywxN1YxMEMzLDguODkgMy4yLDcuODIgMy41Nyw2Ljg0TDEuNSw0Ljc3TDIuNzgsMy41TTUuMTcsOC40NEM1LjA2LDguOTQgNSw5LjQ2IDUsMTBWMTJIOC43M0w1LjE3LDguNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lc1NldHRpbmdzID0gXCJNMTIsMUE5LDkgMCAwLDEgMjEsMTBWMTdBMywzIDAgMCwxIDE4LDIwSDE1VjEySDE5VjEwQTcsNyAwIDAsMCAxMiwzQTcsNyAwIDAsMCA1LDEwVjEySDlWMjBINkEzLDMgMCAwLDEgMywxN1YxMEE5LDkgMCAwLDEgMTIsMU0xNSwyNFYyMkgxN1YyNEgxNU0xMSwyNFYyMkgxM1YyNEgxMU03LDI0VjIySDlWMjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkc2V0ID0gXCJNMTIsMUM3LDEgMyw1IDMsMTBWMTdBMywzIDAgMCwwIDYsMjBIOVYxMkg1VjEwQTcsNyAwIDAsMSAxMiwzQTcsNyAwIDAsMSAxOSwxMFYxMkgxNVYyMEgxOVYyMUgxMlYyM0gxOEEzLDMgMCAwLDAgMjEsMjBWMTBDMjEsNSAxNi45NywxIDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHNldERvY2sgPSBcIk0yLDE4SDlWNi4xM0M3LjI3LDYuNTcgNiw4LjE0IDYsMTBWMTFIOFYxN0g2QTIsMiAwIDAsMSA0LDE1VjEwQTYsNiAwIDAsMSAxMCw0SDExQTYsNiAwIDAsMSAxNywxMFYxMkgxOFY5SDIwVjEyQTIsMiAwIDAsMSAxOCwxNEgxN1YxNUEyLDIgMCAwLDEgMTUsMTdIMTNWMTFIMTVWMTBDMTUsOC4xNCAxMy43Myw2LjU3IDEyLDYuMTNWMThIMjJWMjBIMlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkc2V0T2ZmID0gXCJNMS41LDQuNzdMMy41Nyw2Ljg0QzMuMiw3LjgyIDMsOC44OSAzLDEwVjIwQTMsMyAwIDAsMCA2LDIzSDEyVjIxSDVWMjBIOVYxMi4yN0wxNSwxOC4yN1YyMEgxNi43M0wxOS4yMywyMi41TDIwLjUsMjEuMjJMMi43OCwzLjVMMS41LDQuNzdNMTIsMUM5LjQ3LDEgNy4xOCwyLjA0IDUuNTUsMy43Mkw2Ljk2LDUuMTRDOC4yMywzLjgyIDEwLDMgMTIsM0E3LDcgMCAwLDEgMTksMTBWMTJIMTVWMTMuMThMMjAuNSwxOC42N0MyMC44MSwxOC4xOSAyMSwxNy42MiAyMSwxN1YxMEE5LDkgMCAwLDAgMTIsMU01LDEyVjEwQzUsOS40NiA1LjA2LDguOTQgNS4xNyw4LjQ0TDguNzMsMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydCA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzQzE5LjU4LDMgMjIsNS40MSAyMiw4LjVDMjIsMTIuMjcgMTguNiwxNS4zNiAxMy40NSwyMC4wM0wxMiwyMS4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTIsMTdMMTIuNzIsMTYuMzRDMTUuMywxNCAxNywxMi40NiAxNywxMC41N0MxNyw5LjAzIDE1Ljc5LDcuODIgMTQuMjUsNy44MkMxMy4zOCw3LjgyIDEyLjU1LDguMjMgMTIsOC44N0MxMS40NSw4LjIzIDEwLjYyLDcuODIgOS43NSw3LjgyQzguMjEsNy44MiA3LDkuMDMgNywxMC41N0M3LDEyLjQ2IDguNywxNCAxMS4yOCwxNi4zNEwxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJveE91dGxpbmUgPSBcIk0xMiwxN0wxMS4yOCwxNi4zNEM4LjcsMTQgNywxMi40NiA3LDEwLjU3QzcsOS4wMyA4LjIxLDcuODIgOS43NSw3LjgyQzEwLjYyLDcuODIgMTEuNDUsOC4yMyAxMiw4Ljg3QzEyLjU1LDguMjMgMTMuMzgsNy44MiAxNC4yNSw3LjgyQzE1Ljc5LDcuODIgMTcsOS4wMyAxNywxMC41N0MxNywxMi40NiAxNS4zLDE0IDEyLjcyLDE2LjM0TDEyLDE3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJyb2tlbiA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOC4xNywzIDguODIsMy4xMiA5LjQ0LDMuMzNMMTMsOS4zNUw5LDE0LjM1TDEyLDIxLjM1VjIxLjM1TTE2LjUsM0MxOS41OCwzIDIyLDUuNDEgMjIsOC41QzIyLDEyLjI3IDE4LjYsMTUuMzYgMTMuNDUsMjAuMDNMMTIsMjEuMzVMMTEsMTQuMzVMMTUuNSw5LjM1TDEyLjg1LDQuMjdDMTMuODcsMy40NyAxNS4xNywzIDE2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJyb2tlbk91dGxpbmUgPSBcIk03LjUsNUM3LjcsNSA3LjksNSA4LjEsNS4xTDEwLjUsOS4yTDYuOCwxMy44QzUuMSwxMS44IDQsMTAuMiA0LDguNUM0LDYuNSA1LjUsNSA3LjUsNU03LjUsM0M0LjQsMyAyLDUuNCAyLDguNUMyLDEyLjMgNS40LDE1LjQgMTAuNiwyMEwxMiwyMS4zTDksMTQuM0wxMyw5LjNMOS40LDMuM0M4LjgsMy4xIDguMiwzIDcuNSwzTTE2LjUsNUMxOC41LDUgMjAsNi41IDIwLDguNUMyMCwxMS4xIDE3LjQsMTMuNyAxMy40LDE3LjNMMTMuMSwxNUwxNy45LDkuN0wxNS42LDUuMkMxNS45LDUgMTYuMiw1IDE2LjUsNU0xNi41LDNDMTUuMiwzIDEzLjksMy41IDEyLjksNC4zTDE1LjUsOS40TDExLDE0LjRMMTIsMjEuNEwxMy40LDIwLjFDMTguNiwxNS40IDIyLDEyLjMgMjIsOC42QzIyLDUuNCAxOS42LDMgMTYuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0Q2lyY2xlID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTkuNzUsNy44MkMxMC42Miw3LjgyIDExLjQ1LDguMjMgMTIsOC44N0MxMi41NSw4LjIzIDEzLjM4LDcuODIgMTQuMjUsNy44MkMxNS43OSw3LjgyIDE3LDkuMDMgMTcsMTAuNTdDMTcsMTIuNDYgMTUuMywxNCAxMi43MiwxNi4zNEwxMiwxN0wxMS4yOCwxNi4zNEM4LjcsMTQgNywxMi40NiA3LDEwLjU3QzcsOS4wMyA4LjIxLDcuODIgOS43NSw3LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0Q2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE05Ljc1LDcuODJDOC4yMSw3LjgyIDcsOS4wMyA3LDEwLjU3QzcsMTIuNDYgOC43LDE0IDExLjI4LDE2LjM0TDEyLDE3TDEyLjcyLDE2LjM0QzE1LjMsMTQgMTcsMTIuNDYgMTcsMTAuNTdDMTcsOS4wMyAxNS43OSw3LjgyIDE0LjI1LDcuODJDMTMuMzgsNy44MiAxMi41NSw4LjIzIDEyLDguODdDMTEuNDUsOC4yMyAxMC42Miw3LjgyIDkuNzUsNy44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydENvZyA9IFwiTTEyIDE5QzEyIDE5LjcxIDEyLjEyIDIwLjQgMTIuMzIgMjEuMDZMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjggMjEuNTkgMTEgMjAuODQgMTIuMjVDMjAuMjUgMTIuMDkgMTkuNjMgMTIgMTkgMTJDMTUuMTQgMTIgMTIgMTUuMTQgMTIgMTlNMjMuODMgMjAuNjRMMjIuODMgMjIuMzdDMjIuNzYgMjIuNSAyMi42MyAyMi41IDIyLjUgMjIuNUwyMS4yNyAyMkMyMSAyMi4xOCAyMC43MyAyMi4zNCAyMC40MyAyMi40N0wyMC4yNCAyMy43OUMyMC4yMiAyMy45MSAyMC4xMSAyNCAyMCAyNEgxOEMxNy44NiAyNCAxNy43NiAyMy45MSAxNy43NCAyMy43OUwxNy41NSAyMi40N0MxNy4yNCAyMi4zNSAxNi45NiAyMi4xOCAxNi43IDIyTDE1LjQ2IDIyLjVDMTUuMzQgMjIuNSAxNS4yMSAyMi41IDE1LjE1IDIyLjM3TDE0LjE1IDIwLjY0QzE0LjA5IDIwLjUzIDE0LjEyIDIwLjQgMTQuMjEgMjAuMzJMMTUuMjcgMTkuNUMxNS4yNSAxOS4zMyAxNS4yNCAxOS4xNyAxNS4yNCAxOVMxNS4yNSAxOC42NyAxNS4yNyAxOC41TDE0LjIxIDE3LjY4QzE0LjExIDE3LjYgMTQuMDkgMTcuNDcgMTQuMTUgMTcuMzZMMTUuMTUgMTUuNjNDMTUuMjIgMTUuNSAxNS4zNSAxNS41IDE1LjQ2IDE1LjVMMTYuNyAxNkMxNi45NiAxNS44MiAxNy4yNSAxNS42NiAxNy41NSAxNS41M0wxNy43NCAxNC4yMUMxNy43NiAxNC4wOSAxNy44NyAxNCAxOCAxNEgyMEMyMC4xMSAxNCAyMC4yMiAxNC4wOSAyMC4yMyAxNC4yMUwyMC40MiAxNS41M0MyMC43MyAxNS42NSAyMSAxNS44MiAyMS4yNyAxNkwyMi41IDE1LjVDMjIuNjMgMTUuNSAyMi43NiAxNS41IDIyLjgyIDE1LjYzTDIzLjgyIDE3LjM2QzIzLjg4IDE3LjQ3IDIzLjg1IDE3LjYgMjMuNzYgMTcuNjhMMjIuNyAxOC41QzIyLjczIDE4LjY3IDIyLjc0IDE4LjgzIDIyLjc0IDE5UzIyLjcyIDE5LjMzIDIyLjcgMTkuNUwyMy43NyAyMC4zMkMyMy44NiAyMC40IDIzLjg5IDIwLjUzIDIzLjgzIDIwLjY0TTIwLjUgMTlDMjAuNSAxOC4xNyAxOS44MyAxNy41IDE5IDE3LjVTMTcuNSAxOC4xNyAxNy41IDE5IDE4LjE2IDIwLjUgMTkgMjAuNUMxOS44MyAyMC41IDIwLjUgMTkuODMgMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydENvZ091dGxpbmUgPSBcIk0xNi41IDVDMTQuOTYgNSAxMy40NiA2IDEyLjkzIDcuMzZIMTEuMDdDMTAuNTQgNiA5LjA0IDUgNy41IDVDNS41IDUgNCA2LjUgNCA4LjVDNCAxMS4zOSA3LjE0IDE0LjI0IDExLjg5IDE4LjU1TDEyIDE4LjY1TDEyIDE4LjYzQzEyIDE4Ljc1IDEyIDE4Ljg4IDEyIDE5QzEyIDE5LjcxIDEyLjEyIDIwLjQgMTIuMzIgMjEuMDZMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjggMjEuNTkgMTEgMjAuODQgMTIuMjVDMjAuMjUgMTIuMDkgMTkuNjMgMTIgMTkgMTJDMTguODcgMTIgMTguNzQgMTIgMTguNiAxMkMxOS41IDEwLjc5IDIwIDkuNjUgMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1TTIzLjgzIDIwLjY0TDIyLjgzIDIyLjM3QzIyLjc2IDIyLjUgMjIuNjMgMjIuNSAyMi41IDIyLjVMMjEuMjcgMjJDMjEgMjIuMTggMjAuNzMgMjIuMzQgMjAuNDMgMjIuNDdMMjAuMjQgMjMuNzlDMjAuMjIgMjMuOTEgMjAuMTEgMjQgMjAgMjRIMThDMTcuODYgMjQgMTcuNzYgMjMuOTEgMTcuNzQgMjMuNzlMMTcuNTUgMjIuNDdDMTcuMjQgMjIuMzUgMTYuOTYgMjIuMTggMTYuNyAyMkwxNS40NiAyMi41QzE1LjM0IDIyLjUgMTUuMjEgMjIuNSAxNS4xNSAyMi4zN0wxNC4xNSAyMC42NEMxNC4wOSAyMC41MyAxNC4xMiAyMC40IDE0LjIxIDIwLjMyTDE1LjI3IDE5LjVDMTUuMjUgMTkuMzMgMTUuMjQgMTkuMTcgMTUuMjQgMTlTMTUuMjUgMTguNjcgMTUuMjcgMTguNUwxNC4yMSAxNy42OEMxNC4xMSAxNy42IDE0LjA5IDE3LjQ3IDE0LjE1IDE3LjM2TDE1LjE1IDE1LjYzQzE1LjIyIDE1LjUgMTUuMzUgMTUuNSAxNS40NiAxNS41TDE2LjcgMTZDMTYuOTYgMTUuODIgMTcuMjUgMTUuNjYgMTcuNTUgMTUuNTNMMTcuNzQgMTQuMjFDMTcuNzYgMTQuMDkgMTcuODcgMTQgMTggMTRIMjBDMjAuMTEgMTQgMjAuMjIgMTQuMDkgMjAuMjMgMTQuMjFMMjAuNDIgMTUuNTNDMjAuNzMgMTUuNjUgMjEgMTUuODIgMjEuMjcgMTZMMjIuNSAxNS41QzIyLjYzIDE1LjUgMjIuNzYgMTUuNSAyMi44MiAxNS42M0wyMy44MiAxNy4zNkMyMy44OCAxNy40NyAyMy44NSAxNy42IDIzLjc2IDE3LjY4TDIyLjcgMTguNUMyMi43MyAxOC42NyAyMi43NCAxOC44MyAyMi43NCAxOVMyMi43MiAxOS4zMyAyMi43IDE5LjVMMjMuNzcgMjAuMzJDMjMuODYgMjAuNCAyMy44OSAyMC41MyAyMy44MyAyMC42NE0yMC41IDE5QzIwLjUgMTguMTcgMTkuODMgMTcuNSAxOSAxNy41UzE3LjUgMTguMTcgMTcuNSAxOSAxOC4xNiAyMC41IDE5IDIwLjVDMTkuODMgMjAuNSAyMC41IDE5LjgzIDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRGbGFzaCA9IFwiTTE2LjUsMi44M0MxNC43NiwyLjgzIDEzLjA5LDMuNjQgMTIsNC45QzEwLjkxLDMuNjQgOS4yNCwyLjgzIDcuNSwyLjgzQzQuNDIsMi44MyAyLDUuMjQgMiw4LjMzQzIsMTIuMSA1LjQsMTUuMTkgMTAuNTUsMTkuODZMMTIsMjEuMTdMMTMuNDUsMTkuODZDMTguNiwxNS4xOSAyMiwxMi4xIDIyLDguMzNDMjIsNS4yNCAxOS41OCwyLjgzIDE2LjUsMi44M00xMiwxNy44M1YxMy44M0g5TDEyLDYuODNWMTAuODNIMTVcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEhhbGYgPSBcIk0xMyw3LjJWMTcuNzRMMTMsMjAuNDRMMTIsMjEuMzVMMTAuNTUsMjAuMDNDNS40LDE1LjM2IDIsMTIuMjcgMiw4LjVDMiw1LjQxIDQuNDIsMyA3LjUsM0MxMCwzIDEzLDUgMTMsNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0SGFsZkZ1bGwgPSBcIk0xNi41LDVDMTUsNSAxMy41OCw1LjkxIDEzLDcuMlYxNy43NEMxNy4yNSwxMy44NyAyMCwxMS4yIDIwLDguNUMyMCw2LjUgMTguNSw1IDE2LjUsNU0xNi41LDNDMTkuNTgsMyAyMiw1LjQxIDIyLDguNUMyMiwxMi4yNyAxOC42LDE1LjM2IDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0SGFsZk91dGxpbmUgPSBcIk00LDguNUM0LDExLjIgNi43NSwxMy44NyAxMSwxNy43NFY3LjJDMTAuNDIsNS45MSA5LDUgNy41LDVDNS41LDUgNCw2LjUgNCw4LjVNMTMsNy4yVjE3Ljc0TDEzLDIwLjQ0TDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDMTAsMyAxMyw1IDEzLDcuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydE1pbnVzID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMTQgMTdWMTlIMjJWMTdIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRNaW51c091dGxpbmUgPSBcIk0xMi42NyAyMC43NEwxMiAyMS4zNUwxMC41NSAyMC4wM0M1LjQgMTUuMzYgMiAxMi4yNyAyIDguNUMyIDUuNDEgNC40MiAzIDcuNSAzQzkuMjQgMyAxMC45MSAzLjgxIDEyIDUuMDhDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgM0MxOS41OCAzIDIyIDUuNDEgMjIgOC41QzIyIDkuOTMgMjEuNSAxMS4yNiAyMC42MiAxMi42MUMyMCAxMi4zMSAxOS4zMSAxMi4xMSAxOC41OSAxMi4wNEMxOS41IDEwLjggMjAgOS42NSAyMCA4LjVDMjAgNi41IDE4LjUgNSAxNi41IDVDMTQuOTYgNSAxMy40NiA2IDEyLjkzIDcuMzZIMTEuMDdDMTAuNTQgNiA5LjA0IDUgNy41IDVDNS41IDUgNCA2LjUgNCA4LjVDNCAxMS4zOSA3LjE0IDE0LjI0IDExLjg5IDE4LjU1TDEyIDE4LjY1TDEyLjA0IDE4LjYxQzEyLjEyIDE5LjM3IDEyLjM0IDIwLjA5IDEyLjY3IDIwLjc0TTE0IDE3VjE5SDIyVjE3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0TXVsdGlwbGUgPSBcIk0xMy41LDIwQzYuOSwxMy45IDMuNSwxMC44IDMuNSw3LjFDMy41LDQgNS45LDEuNiA5LDEuNkMxMC43LDEuNiAxMi40LDIuNCAxMy41LDMuN0MxNC42LDIuNCAxNi4zLDEuNiAxOCwxLjZDMjEuMSwxLjYgMjMuNSw0IDIzLjUsNy4xQzIzLjUsMTAuOSAyMC4xLDE0IDEzLjUsMjBNMTIsMjEuMUM1LjQsMTUuMiAxLjUsMTEuNyAxLjUsN0MxLjUsNi44IDEuNSw2LjYgMS41LDYuNEMwLjksNy4zIDAuNSw4LjQgMC41LDkuNkMwLjUsMTMuNCAzLjksMTYuNSAxMC41LDIyLjRMMTIsMjEuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydE11bHRpcGxlT3V0bGluZSA9IFwiTTEyLDIxLjFMMTAuNSwyMi40QzMuOSwxNi41IDAuNSwxMy40IDAuNSw5LjZDMC41LDguNCAwLjksNy4zIDEuNSw2LjRDMS41LDYuNiAxLjUsNi44IDEuNSw3QzEuNSwxMS43IDUuNCwxNS4yIDEyLDIxLjFNMTMuNiwxN0MxOC4zLDEyLjcgMjEuNSw5LjkgMjEuNiw3QzIxLjYsNSAyMC4xLDMuNSAxOC4xLDMuNUMxNi41LDMuNSAxNSw0LjUgMTQuNSw1LjlIMTIuNkMxMiw0LjUgMTAuNSwzLjUgOSwzLjVDNywzLjUgNS41LDUgNS41LDdDNS41LDkuOSA4LjYsMTIuNyAxMy40LDE3TDEzLjUsMTcuMU0xOCwxLjVDMjEuMSwxLjUgMjMuNSwzLjkgMjMuNSw3QzIzLjUsMTAuNyAyMC4xLDEzLjggMTMuNSwxOS44QzYuOSwxMy45IDMuNSwxMC44IDMuNSw3QzMuNSwzLjkgNS45LDEuNSA5LDEuNUMxMC43LDEuNSAxMi40LDIuMyAxMy41LDMuNkMxNC42LDIuMyAxNi4zLDEuNSAxOCwxLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRPZmYgPSBcIk0xLDQuMjdMMi4yOCwzTDIwLDIwLjcyTDE4LjczLDIyTDE1LjE4LDE4LjQ0TDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNy41NSAyLjIzLDYuNjcgMi42Myw1LjlMMSw0LjI3TTcuNSwzQzkuMjQsMyAxMC45MSwzLjgxIDEyLDUuMDhDMTMuMDksMy44MSAxNC43NiwzIDE2LjUsM0MxOS41OCwzIDIyLDUuNDEgMjIsOC41QzIyLDExLjA3IDIwLjQyLDEzLjMyIDE3Ljc5LDE1Ljk3TDUuMjcsMy40NUM1Ljk1LDMuMTYgNi43LDMgNy41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRPZmZPdXRsaW5lID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzLjE5IDUuMDhDMi40NSA2IDIgNy4xOSAyIDguNUMyIDEyLjI3IDUuNCAxNS4zNiAxMC41NSAyMC4wM0wxMiAyMS4zNUwxMy40NSAyMC4wM0MxNC4zMiAxOS4yNCAxNS4xNCAxOC41IDE1LjkgMTcuNzlMMjAgMjJMMjEuMjcgMjAuNzNNMTIuMSAxOC41NUwxMiAxOC42NUwxMS44OSAxOC41NUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjVDNCA3Ljc0IDQuMjIgNy4wNiA0LjYxIDYuNUwxNC41IDE2LjM3QzEzLjc0IDE3LjA2IDEyLjk1IDE3Ljc4IDEyLjEgMTguNTVNOC4zIDUuMUw2LjMzIDMuMTNDNi43IDMuMDUgNy4xIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVDMjIgMTAuODQgMjAuNjkgMTIuOTIgMTguNDcgMTUuMjdMMTcuMDYgMTMuODZDMTguOTEgMTEuODggMjAgMTAuMiAyMCA4LjVDMjAgNi41IDE4LjUgNSAxNi41IDVDMTUuMSA1IDEzLjc0IDUuODMgMTMuMTEgN0gxMC44OUMxMC4zOCA2LjA2IDkuMzkgNS4zNCA4LjMgNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0T3V0bGluZSA9IFwiTTEyLjEsMTguNTVMMTIsMTguNjVMMTEuODksMTguNTVDNy4xNCwxNC4yNCA0LDExLjM5IDQsOC41QzQsNi41IDUuNSw1IDcuNSw1QzkuMDQsNSAxMC41NCw2IDExLjA3LDcuMzZIMTIuOTNDMTMuNDYsNiAxNC45Niw1IDE2LjUsNUMxOC41LDUgMjAsNi41IDIwLDguNUMyMCwxMS4zOSAxNi44NiwxNC4yNCAxMi4xLDE4LjU1TTE2LjUsM0MxNC43NiwzIDEzLjA5LDMuODEgMTIsNS4wOEMxMC45MSwzLjgxIDkuMjQsMyA3LjUsM0M0LjQyLDMgMiw1LjQxIDIsOC41QzIsMTIuMjcgNS40LDE1LjM2IDEwLjU1LDIwLjAzTDEyLDIxLjM1TDEzLjQ1LDIwLjAzQzE4LjYsMTUuMzYgMjIsMTIuMjcgMjIsOC41QzIyLDUuNDEgMTkuNTgsMyAxNi41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQbHVzID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMTkgMTRIMTdWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQbHVzT3V0bGluZSA9IFwiTTEyLjY3IDIwLjc0TDEyIDIxLjM1TDEwLjU1IDIwLjAzQzUuNCAxNS4zNiAyIDEyLjI3IDIgOC41QzIgNS40MSA0LjQyIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVDMjIgOS45MyAyMS41IDExLjI2IDIwLjYyIDEyLjYxQzIwIDEyLjMxIDE5LjMxIDEyLjExIDE4LjU5IDEyLjA0QzE5LjUgMTAuOCAyMCA5LjY1IDIwIDguNUMyMCA2LjUgMTguNSA1IDE2LjUgNUMxNC45NiA1IDEzLjQ2IDYgMTIuOTMgNy4zNkgxMS4wN0MxMC41NCA2IDkuMDQgNSA3LjUgNUM1LjUgNSA0IDYuNSA0IDguNUM0IDExLjM5IDcuMTQgMTQuMjQgMTEuODkgMTguNTVMMTIgMTguNjVMMTIuMDQgMTguNjFDMTIuMTIgMTkuMzcgMTIuMzQgMjAuMDkgMTIuNjcgMjAuNzRNMTcgMTRWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlWMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQdWxzZSA9IFwiTTcuNSw0QTUuNSw1LjUgMCAwLDAgMiw5LjVDMiwxMCAyLjA5LDEwLjUgMi4yMiwxMUg2LjNMNy41Nyw3LjYzQzcuODcsNi44MyA5LjA1LDYuNzUgOS40Myw3LjYzTDExLjUsMTNMMTIuMDksMTEuNThDMTIuMjIsMTEuMjUgMTIuNTcsMTEgMTMsMTFIMjEuNzhDMjEuOTEsMTAuNSAyMiwxMCAyMiw5LjVBNS41LDUuNSAwIDAsMCAxNi41LDRDMTQuNjQsNCAxMyw0LjkzIDEyLDYuMzRDMTEsNC45MyA5LjM2LDQgNy41LDRWNE0zLDEyLjVBMSwxIDAgMCwwIDIsMTMuNUExLDEgMCAwLDAgMywxNC41SDUuNDRMMTEsMjBDMTIsMjAuOSAxMiwyMC45IDEzLDIwTDE4LjU2LDE0LjVIMjFBMSwxIDAgMCwwIDIyLDEzLjVBMSwxIDAgMCwwIDIxLDEyLjVIMTMuNEwxMi40NywxNC44QzEyLjA3LDE1LjgxIDEwLjkyLDE1LjY3IDEwLjU1LDE0LjgzTDguNSw5LjVMNy41NCwxMS44M0M3LjM5LDEyLjIxIDcuMDUsMTIuNSA2LjYsMTIuNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0UmVtb3ZlID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMjEuNTQgMTUuODhMMjAuMTIgMTQuNDdMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTRMMTggMTkuNDFMMjAuMTIgMjEuNTRMMjEuNTQgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRSZW1vdmVPdXRsaW5lID0gXCJNMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMjAgMTIuMzEgMTkuMzEgMTIuMTEgMTguNTkgMTIuMDRDMTkuNSAxMC44IDIwIDkuNjUgMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1QzE0Ljk2IDUgMTMuNDYgNiAxMi45MyA3LjM2SDExLjA3QzEwLjU0IDYgOS4wNCA1IDcuNSA1QzUuNSA1IDQgNi41IDQgOC41QzQgMTEuMzkgNy4xNCAxNC4yNCAxMS44OSAxOC41NUwxMiAxOC42NUwxMi4wNCAxOC42MUMxMi4xMiAxOS4zNyAxMi4zNCAyMC4wOSAxMi42NyAyMC43NE0yMC4xMiAxNC40NkwxOCAxNi41OUwxNS44OCAxNC40N0wxNC40NyAxNS44OEwxNi41OSAxOEwxNC40NyAyMC4xMkwxNS44OCAyMS41NEwxOCAxOS40MUwyMC4xMiAyMS41NEwyMS41NCAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OEwyMC4xMiAxNC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydFNldHRpbmdzID0gXCJNMTUgMjJIMTdWMjRIMTVWMjJNMTEgMjRIMTNWMjJIMTFWMjRNNyAyNEg5VjIySDdWMjRNMTYuNSAzQzE0Ljc2IDMgMTMuMDkgMy44MSAxMiA1LjA4QzEwLjkxIDMuODEgOS4yNCAzIDcuNSAzQzQuNDIgMyAyIDUuNDEgMiA4LjVDMiAxMi4yNyA1LjQgMTUuMzYgMTAuNTUgMjAuMDNMMTIgMjEuMzVMMTMuNDUgMjAuMDNDMTguNiAxNS4zNiAyMiAxMi4yNyAyMiA4LjVDMjIgNS40MSAxOS41OCAzIDE2LjUgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydFNldHRpbmdzT3V0bGluZSA9IFwiTTcgMjJIOVYyNEg3VjIyTTExIDI0SDEzVjIySDExVjI0TTE1IDI0SDE3VjIySDE1VjI0TTIyIDguNUMyMiAxMi4yNyAxOC42IDE1LjM2IDEzLjQ1IDIwLjAzTDEyIDIxLjM1TDEwLjU1IDIwLjAzQzUuNCAxNS4zNiAyIDEyLjI3IDIgOC41QzIgNS40MSA0LjQyIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVNMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1QzE0Ljk2IDUgMTMuNDYgNiAxMi45MyA3LjM2SDExLjA3QzEwLjU0IDYgOS4wNCA1IDcuNSA1QzUuNSA1IDQgNi41IDQgOC41QzQgMTEuMzkgNy4xNCAxNC4yNCAxMS44OSAxOC41NUwxMiAxOC42NUwxMi4xIDE4LjU1QzE2Ljg2IDE0LjI0IDIwIDExLjM5IDIwIDguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWxpY29wdGVyID0gXCJNMywzSDE3VjVIM1YzTTIzLDZWMTAuNUwxNC43NSwxMi4yQzE0LjkxLDEyLjYgMTUsMTMuMDQgMTUsMTMuNUMxNSwxNC45IDE0LjE4LDE2LjEgMTMsMTYuNjZWMTdMMTMsMTlIMTZWMjFINEEzLDMgMCAwLDEgMSwxOFYxN0gzVjE4QTEsMSAwIDAsMCA0LDE5SDVWMTYuNzRDMy4yNSwxNi4xMyAyLDE0LjQ2IDIsMTIuNUMyLDEwIDQsOCA2LjUsOEg5VjZIMTFWOEgyMVY2SDIzTTExLDE5VjE3SDdWMTlIMTFNNy41LDEwQzYuMTIsMTAgNSwxMC45IDUsMTJDNSwxMy4xIDYuMTIsMTQgNy41LDE0QzguODgsMTQgMTAsMTMuMSAxMCwxMkMxMCwxMC45IDguODgsMTAgNy41LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHAgPSBcIk0xMCwxOUgxM1YyMkgxMFYxOU0xMiwyQzE3LjM1LDIuMjIgMTkuNjgsNy42MiAxNi41LDExLjY3QzE1LjY3LDEyLjY3IDE0LjMzLDEzLjMzIDEzLjY3LDE0LjE3QzEzLDE1IDEzLDE2IDEzLDE3SDEwQzEwLDE1LjMzIDEwLDEzLjkyIDEwLjY3LDEyLjkyQzExLjMzLDExLjkyIDEyLjY3LDExLjMzIDEzLjUsMTAuNjdDMTUuOTIsOC40MyAxNS4zMiw1LjI2IDEyLDVBMywzIDAgMCwwIDksOEg2QTYsNiAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHBCb3ggPSBcIk0xMSwxOEgxM1YxNkgxMVYxOE0xMiw2QTQsNCAwIDAsMCA4LDEwSDEwQTIsMiAwIDAsMSAxMiw4QTIsMiAwIDAsMSAxNCwxMEMxNCwxMiAxMSwxMS43NSAxMSwxNUgxM0MxMywxMi43NSAxNiwxMi41IDE2LDEwQTQsNCAwIDAsMCAxMiw2TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscENpcmNsZSA9IFwiTTE1LjA3LDExLjI1TDE0LjE3LDEyLjE3QzEzLjQ1LDEyLjg5IDEzLDEzLjUgMTMsMTVIMTFWMTQuNUMxMSwxMy4zOSAxMS40NSwxMi4zOSAxMi4xNywxMS42N0wxMy40MSwxMC40MUMxMy43OCwxMC4wNSAxNCw5LjU1IDE0LDlDMTQsNy44OSAxMy4xLDcgMTIsN0EyLDIgMCAwLDAgMTAsOUg4QTQsNCAwIDAsMSAxMiw1QTQsNCAwIDAsMSAxNiw5QzE2LDkuODggMTUuNjQsMTAuNjcgMTUuMDcsMTEuMjVNMTMsMTlIMTFWMTdIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscENpcmNsZU91dGxpbmUgPSBcIk0xMSwxOEgxM1YxNkgxMVYxOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDZBNCw0IDAgMCwwIDgsMTBIMTBBMiwyIDAgMCwxIDEyLDhBMiwyIDAgMCwxIDE0LDEwQzE0LDEyIDExLDExLjc1IDExLDE1SDEzQzEzLDEyLjc1IDE2LDEyLjUgMTYsMTBBNCw0IDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscE5ldHdvcmsgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN00xMi4xOSw1QzExLjMyLDUgMTAuNjIsNS4yIDEwLjA4LDUuNTlDOS41Niw2IDkuMyw2LjU3IDkuMzEsNy4zNkw5LjMyLDcuMzlIMTEuMjVDMTEuMjYsNy4wOSAxMS4zNSw2Ljg2IDExLjUzLDYuN0MxMS43MSw2LjU1IDExLjkzLDYuNDcgMTIuMTksNi40N0MxMi41LDYuNDcgMTIuNzYsNi41NyAxMi45NCw2Ljc1QzEzLjEyLDYuOTQgMTMuMiw3LjIgMTMuMiw3LjVDMTMuMiw3LjgyIDEzLjEzLDguMDkgMTIuOTcsOC4zMkMxMi44Myw4LjU1IDEyLjYyLDguNzUgMTIuMzYsOC45MUMxMS44NSw5LjI1IDExLjUsOS41NSAxMS4zMSw5LjgyQzExLjExLDEwLjA4IDExLDEwLjUgMTEsMTFIMTNDMTMsMTAuNjkgMTMuMDQsMTAuNDQgMTMuMTMsMTAuMjZDMTMuMjIsMTAuMDcgMTMuMzksOS45IDEzLjY0LDkuNzRDMTQuMDksOS41IDE0LjQ2LDkuMjEgMTQuNzUsOC44MUMxNS4wNCw4LjQxIDE1LjE5LDggMTUuMTksNy41QzE1LjE5LDYuNzQgMTQuOTIsNi4xMyAxNC4zOCw1LjY4QzEzLjg1LDUuMjMgMTMuMTIsNSAxMi4xOSw1TTExLDEyVjE0SDEzVjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHBOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTEuOTUsNkMxMS4xNyw2IDEwLjU1LDYuMTggMTAuMDcsNi41QzkuNjEsNi44OSA5LjM4LDcuNCA5LjM5LDguMUw5LjQsOC4xM0gxMS4xMUMxMS4xMiw3Ljg2IDExLjIsNy42NSAxMS4zNiw3LjVDMTEuNSw3LjM4IDExLjcyLDcuMzEgMTEuOTUsNy4zMUMxMi4yMiw3LjMxIDEyLjQ1LDcuNCAxMi42MSw3LjU2QzEyLjc3LDcuNzMgMTIuODUsNy45NiAxMi44NSw4LjIyQzEyLjg1LDguNSAxMi43OCw4Ljc1IDEyLjY0LDguOTVDMTIuNSw5LjE2IDEyLjMzLDkuMzMgMTIuMSw5LjVDMTEuNjUsOS43OCAxMS4zNCwxMC4wNSAxMS4xNywxMC4yOUMxMSwxMC41IDEwLjg5LDEwLjg5IDEwLjg5LDExLjMzSDEyLjY3QzEyLjY3LDExLjA2IDEyLjcsMTAuODQgMTIuNzgsMTAuNjhDMTIuODYsMTAuNSAxMywxMC4zNiAxMy4yNCwxMC4yMUMxMy42NCwxMCAxMy45Nyw5Ljc0IDE0LjIyLDkuMzlDMTQuNSw5LjAzIDE0LjYyLDguNjcgMTQuNjIsOC4yMkMxNC42Miw3LjU1IDE0LjM4LDcgMTMuOSw2LjYxQzEzLjQyLDYuMiAxMi43Nyw2IDExLjk1LDZNMTAuODksMTIuMjJWMTRIMTIuNjdWMTIuMjJIMTAuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscFJob21idXMgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNi45NUMxNC43IDcuMDYgMTUuODcgOS43OCAxNC4yOCAxMS44MUMxMy44NiAxMi4zMSAxMy4xOSAxMi42NCAxMi44NSAxMy4wN0MxMi41IDEzLjUgMTIuNSAxNCAxMi41IDE0LjVIMTFDMTEgMTMuNjUgMTEgMTIuOTQgMTEuMzUgMTIuNDRDMTEuNjggMTEuOTQgMTIuMzUgMTEuNjQgMTIuNzcgMTEuMzFDMTQgMTAuMTggMTMuNjggOC41OSAxMiA4LjQ2QzExLjE4IDguNDYgMTAuNSA5LjEzIDEwLjUgOS45N0g5QzkgOC4zIDEwLjM1IDYuOTUgMTIgNi45NU0xMSAxNS41SDEyLjVWMTdIMTFWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWxwUmhvbWJ1c091dGxpbmUgPSBcIk0xMSAxNS41SDEyLjVWMTdIMTFWMTUuNU0xMiA2Ljk1QzE0LjcgNy4wNiAxNS44NyA5Ljc4IDE0LjI4IDExLjgxQzEzLjg2IDEyLjMxIDEzLjE5IDEyLjY0IDEyLjg1IDEzLjA3QzEyLjUgMTMuNSAxMi41IDE0IDEyLjUgMTQuNUgxMUMxMSAxMy42NSAxMSAxMi45NCAxMS4zNSAxMi40NEMxMS42OCAxMS45NCAxMi4zNSAxMS42NCAxMi43NyAxMS4zMUMxNCAxMC4xOCAxMy42OCA4LjU5IDEyIDguNDZDMTEuMTggOC40NiAxMC41IDkuMTMgMTAuNSA5Ljk3SDlDOSA4LjMgMTAuMzUgNi45NSAxMiA2Ljk1TTEyIDJDMTEuNSAyIDExIDIuMTkgMTAuNTkgMi41OUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUwxMC41OSAyMS40MUMxMS4zNyAyMi4yIDEyLjYzIDIyLjIgMTMuNDEgMjEuNDFMMjEuNDEgMTMuNDFDMjIuMiAxMi42MyAyMi4yIDExLjM3IDIxLjQxIDEwLjU5TDEzLjQxIDIuNTlDMTMgMi4xOSAxMi41IDIgMTIgMk0xMiA0TDIwIDEyTDEyIDIwTDQgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWRlY2ltYWwgPSBcIk03IDdDNS45IDcgNSA3LjkgNSA5VjE1QzUgMTYuMTEgNS45IDE3IDcgMTdIOUMxMC4xMSAxNyAxMSAxNi4xMSAxMSAxNVY5QzExIDcuOSAxMC4xMSA3IDkgN0g3TTcgOUg5VjE1SDdWOU0xNy42IDE3TDE1LjUgMTQuOUwxMy40IDE3TDEyIDE1LjZMMTQuMSAxMy41TDEyIDExLjRMMTMuNCAxMEwxNS41IDEyLjFMMTcuNiAxMEwxOSAxMS40TDE2LjkgMTMuNUwxOSAxNS42TDE3LjYgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbiA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhleGFnb25NdWx0aXBsZSA9IFwiTTEwLjI1LDJDMTAuNDQsMiAxMC42MSwyLjExIDEwLjY5LDIuMjZMMTIuOTEsNi4yMkwxMyw2LjVMMTIuOTEsNi43OEwxMC42OSwxMC43NEMxMC42MSwxMC44OSAxMC40NCwxMSAxMC4yNSwxMUg1Ljc1QzUuNTYsMTEgNS4zOSwxMC44OSA1LjMxLDEwLjc0TDMuMDksNi43OEwzLDYuNUwzLjA5LDYuMjJMNS4zMSwyLjI2QzUuMzksMi4xMSA1LjU2LDIgNS43NSwySDEwLjI1TTEwLjI1LDEzQzEwLjQ0LDEzIDEwLjYxLDEzLjExIDEwLjY5LDEzLjI2TDEyLjkxLDE3LjIyTDEzLDE3LjVMMTIuOTEsMTcuNzhMMTAuNjksMjEuNzRDMTAuNjEsMjEuODkgMTAuNDQsMjIgMTAuMjUsMjJINS43NUM1LjU2LDIyIDUuMzksMjEuODkgNS4zMSwyMS43NEwzLjA5LDE3Ljc4TDMsMTcuNUwzLjA5LDE3LjIyTDUuMzEsMTMuMjZDNS4zOSwxMy4xMSA1LjU2LDEzIDUuNzUsMTNIMTAuMjVNMTkuNSw3LjVDMTkuNjksNy41IDE5Ljg2LDcuNjEgMTkuOTQsNy43NkwyMi4xNiwxMS43MkwyMi4yNSwxMkwyMi4xNiwxMi4yOEwxOS45NCwxNi4yNEMxOS44NiwxNi4zOSAxOS42OSwxNi41IDE5LjUsMTYuNUgxNUMxNC44MSwxNi41IDE0LjY0LDE2LjM5IDE0LjU2LDE2LjI0TDEyLjM0LDEyLjI4TDEyLjI1LDEyTDEyLjM0LDExLjcyTDE0LjU2LDcuNzZDMTQuNjQsNy42MSAxNC44MSw3LjUgMTUsNy41SDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbk11bHRpcGxlT3V0bGluZSA9IFwiTTkuMzcgNEwxMC43OCA2LjVMOS4zNyA5SDYuNjNMNS4yMyA2LjVMNi42MyA0SDkuMzdNMTAuMjUgMkg1Ljc1QzUuNTYgMiA1LjM5IDIuMTEgNS4zMSAyLjI2TDMuMDkgNi4yMkwzIDYuNUwzLjA5IDYuNzhMNS4zMSAxMC43NEM1LjM5IDEwLjg5IDUuNTYgMTEgNS43NSAxMUgxMC4yNUMxMC40NCAxMSAxMC42MSAxMC44OSAxMC42OSAxMC43NEwxMi45MSA2Ljc4TDEzIDYuNUwxMi45MSA2LjIyTDEwLjY5IDIuMjZDMTAuNjEgMi4xMSAxMC40NCAyIDEwLjI1IDJNMTguNjIgOS41TDIwIDEyTDE4LjYyIDE0LjVIMTUuODhMMTQuNSAxMkwxNS44OCA5LjVIMTguNjJNMTkuNSA3LjVIMTVDMTQuODEgNy41IDE0LjY0IDcuNjEgMTQuNTYgNy43NkwxMi4zNCAxMS43MkwxMi4yNSAxMkwxMi4zNCAxMi4yOEwxNC41NiAxNi4yNEMxNC42NCAxNi4zOSAxNC44MSAxNi41IDE1IDE2LjVIMTkuNUMxOS42OSAxNi41IDE5Ljg2IDE2LjM5IDE5Ljk0IDE2LjI0TDIyLjE2IDEyLjI4TDIyLjI1IDEyTDIyLjE2IDExLjcyTDE5Ljk0IDcuNzZDMTkuODYgNy42MSAxOS42OSA3LjUgMTkuNSA3LjVNOS4zNyAxNUwxMC43OCAxNy41TDkuMzcgMjBINi42M0w1LjIzIDE3LjVMNi42MyAxNUg5LjM3TTEwLjI1IDEzSDUuNzVDNS41NiAxMyA1LjM5IDEzLjExIDUuMzEgMTMuMjZMMy4wOSAxNy4yMkwzIDE3LjVMMy4wOSAxNy43OEw1LjMxIDIxLjc0QzUuMzkgMjEuODkgNS41NiAyMiA1Ljc1IDIySDEwLjI1QzEwLjQ0IDIyIDEwLjYxIDIxLjg5IDEwLjY5IDIxLjc0TDEyLjkxIDE3Ljc4TDEzIDE3LjVMMTIuOTEgMTcuMjJMMTAuNjkgMTMuMjZDMTAuNjEgMTMuMTEgMTAuNDQgMTMgMTAuMjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbk91dGxpbmUgPSBcIk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMSA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNU0xMiwxMlY1LjMyTDE3Ljk0LDguNjZMMTIsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMiA9IFwiTTE4LDE1LjM4TDEyLDEyVjUuMzJMMTgsOC42OVYxNS4zOE0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMyA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OFY1LjMyTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZXhhZ29uU2xpY2U0ID0gXCJNMTIsNS4zMkwxOCw4LjY5VjE1LjMxTDEyLDE4LjY4TDYuMDYsMTUuMzRMMTIsMTJWNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlNSA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OEw2LDE1LjMxVjguNjlMMTIsMTJWNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlNiA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OEw2LDE1LjMxVjguNjlMMTIsNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdyYW0gPSBcIk0xNC41LDcuNjZMMjAuNjQsNi45N0wxNywxMkwyMC42OCwxNi45N0wxNC41LDE2LjMyTDEyLjAzLDIyTDkuNSwxNi4zNEwzLjM2LDE3LjAzTDcsMTJMMy4zMiw3LjAzTDkuNSw3LjY4TDExLjk3LDJMMTQuNSw3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhleGFncmFtT3V0bGluZSA9IFwiTTEyLDdMMTMuMyw5LjhMMTYuNSw5LjRMMTQuNSwxMkwxNi40LDE0LjVMMTMuMiwxNC4xTDEyLDE3TDEwLjcsMTQuMkw3LjUsMTQuNkw5LjUsMTJMNy42LDkuNUwxMC44LDkuOUwxMiw3TTEyLDJMOS41LDcuN0wzLjMsN0w3LDEyTDMuNCwxN0w5LjYsMTYuM0wxMiwyMkwxNC41LDE2LjNMMjAuNywxNi45TDE3LDEyTDIwLjYsN0wxNC40LDcuN0wxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhpZ2hEZWZpbml0aW9uID0gXCJNNSw3SDdWMTFIOVY3SDExVjE3SDlWMTNIN1YxN0g1VjdNMTMsN0gxNkEzLDMgMCAwLDEgMTksMTBWMTRBMywzIDAgMCwxIDE2LDE3SDEzVjdNMTYsMTVBMSwxIDAgMCwwIDE3LDE0VjEwQTEsMSAwIDAsMCAxNiw5SDE1VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhpZ2hEZWZpbml0aW9uQm94ID0gXCJNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTEsMTVIOS41VjEzSDcuNVYxNUg2VjlINy41VjExLjVIOS41VjlIMTFWMTVNMTMsOUgxN0ExLDEgMCAwLDEgMTgsMTBWMTRBMSwxIDAgMCwxIDE3LDE1SDEzVjlNMTQuNSwxMy41SDE2LjVWMTAuNUgxNC41VjEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlnaHdheSA9IFwiTTEwLDJMOCw4SDExVjJIMTBNMTMsMlY4SDE2TDE0LDJIMTNNMiw5VjEwSDRWMTFINlYxMEgxOEwxOC4wNiwxMUgyMFYxMEgyMlY5SDJNNywxMUwzLjM0LDIySDExVjExSDdNMTMsMTFWMjJIMjAuNjZMMTcsMTFIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlraW5nID0gXCJNOS44LDguOUw3LDIzSDkuMUwxMC45LDE1TDEzLDE3VjIzSDE1VjE1LjVMMTIuOSwxMy41TDEzLjUsMTAuNUMxNC42MywxMS44MSAxNi4yOSwxMi43MyAxOC4xNSwxMi45NUwxNiwyM0gxN0wyMCw5TDE5LjA0LDguOEwxOC41OCwxMUMxNi44NiwxMC44NSAxNS40NCw5Ljg5IDE0LjcsOC42TDEzLjcsN0MxMy41LDYuNjUgMTMuMiw2LjM3IDEyLjg0LDYuMkMxMi41LDYgMTIuMDgsNS45NiAxMS42OCw2QzExLjI4LDYuMDkgMTAuOTIsNi4yNyAxMC42Myw2LjU1QzEwLjM0LDYuODMgMTAuMTQsNy4xOSAxMC4wNiw3LjU4TDkuOCw4LjlNNy4wOCw2LjkyTDkuNCw3LjM4TDguNCwxMi40Nkw2LjA4LDEyTDcuMDgsNi45Mk0xMy41LDUuNUEyLDIgMCAwLDAgMTUuNSwzLjVBMiwyIDAgMCwwIDEzLjUsMS41QTIsMiAwIDAsMCAxMS41LDMuNUEyLDIgMCAwLDAgMTMuNSw1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGluZHVpc20gPSBcIk0xNSwyTDEzLjUsMy41TDE1LDVMMTYuNSwzLjVMMTUsMk0xMSwzQzEwLDkgMTcsMTAgMjAsNkwxOCw0LjVDMTcsNiAxMyw4IDExLDNNOSw3QzcsNyA0LjUsOC41IDQuNSw4LjVMNiwxMUM3LDEwIDksOS41IDEwLDEwQzEyLDExIDksMTMgNywxMlYxNS41QzEwLDE0IDEyLDE2IDExLDE3LjVDOCwyMiAzLDE2IDMsMTNDMSwxOSA2LDIyIDksMjJDMTIsMjIgMTQsMjAgMTIuNSwxNUgxNEMxMi41LDE5LjUgMTgsMjQgMjEsMThDMjIsMTYgMjIsOS41IDE3LDkuNUMxMyw5LjUgMTQsMTUgMTAuNSwxMy41QzE0LDEwIDEyLDcgOSw3TTE5LDEyQzIyLDE1IDE1LDIxIDE1LDE1QzE1LDEzIDE3LDEwLjUgMTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlzdG9yeSA9IFwiTTEzLjUsOEgxMlYxM0wxNi4yOCwxNS41NEwxNywxNC4zM0wxMy41LDEyLjI1VjhNMTMsM0E5LDkgMCAwLDAgNCwxMkgxTDQuOTYsMTYuMDNMOSwxMkg2QTcsNyAwIDAsMSAxMyw1QTcsNyAwIDAsMSAyMCwxMkE3LDcgMCAwLDEgMTMsMTlDMTEuMDcsMTkgOS4zMiwxOC4yMSA4LjA2LDE2Ljk0TDYuNjQsMTguMzZDOC4yNywyMCAxMC41LDIxIDEzLDIxQTksOSAwIDAsMCAyMiwxMkE5LDkgMCAwLDAgMTMsM1wiO1xyXG5leHBvcnQgdmFyIG1kaUhvY2tleVB1Y2sgPSBcIk0xMiw1QzYuNSw1IDIsNi41NyAyLDguNUMyLDEwLjQzIDYuNSwxMiAxMiwxMkMxNy41LDEyIDIyLDEwLjQzIDIyLDguNUMyMiw2LjU3IDE3LjUsNSAxMiw1TTIsMTEuNzZWMTYuNUMyLDE4LjQzIDYuNSwyMCAxMiwyMEMxNy41LDIwIDIyLDE4LjQzIDIyLDE2LjVWMTEuNzZDMjEuMzMsMTIuMjIgMjAuNTgsMTIuNTcgMTkuNzMsMTIuODZDMTcuNjIsMTMuNiAxNC45NSwxNCAxMiwxNEM5LjA1LDE0IDYuMzgsMTMuNiA0LjI3LDEyLjg2QzMuNDIsMTIuNTcgMi42NywxMi4yMiAyLDExLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvY2tleVN0aWNrcyA9IFwiTTcuNTgsM0w1LjA1LDQuNjFMOS4wNCwxMC44N0wxMC44Miw4LjA4TDcuNTgsM00xNi40MywzTDcuNSwxN0gyVjIxSDguNUwxOC45Niw0LjYxTDE2LjQzLDNNMTQuOTcsMTQuNTlMMTMuMTksMTcuMzhMMTUuNSwyMUgyMlYxN0gxNi41TDE0Ljk3LDE0LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbG9sZW5zID0gXCJNMTIsOEMxMiw4IDIyLDggMjIsMTFDMjIsMTEgMjIuMDksMTQuMzYgMjEuNzUsMTQuMjVDMjEsMTEgMTIsMTEgMTIsMTFDMTIsMTEgMywxMSAyLjI1LDE0LjI1QzEuOTEsMTQuMzYgMiwxMSAyLDExQzIsOCAxMiw4IDEyLDhNMTIsMTJDMjAsMTIgMjAuNzUsMTQuMjUgMjAuNzUsMTQuMjVDMTkuNzUsMTcuMjUgMTksMTggMTUsMThDMTIsMTggMTMsMTYuNSAxMiwxNi41QzExLDE2LjUgMTIsMTggOSwxOEM1LDE4IDQuMjUsMTcuMjUgMy4yNSwxNC4yNUMzLjI1LDE0LjI1IDQsMTIgMTIsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZSA9IFwiTTEwLDIwVjE0SDE0VjIwSDE5VjEySDIyTDEyLDNMMiwxMkg1VjIwSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBY2NvdW50ID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMiw4Ljc1QTIuMjUsMi4yNSAwIDAsMSAxNC4yNSwxMUEyLjI1LDIuMjUgMCAwLDEgMTIsMTMuMjVBMi4yNSwyLjI1IDAgMCwxIDkuNzUsMTFBMi4yNSwyLjI1IDAgMCwxIDEyLDguNzVNMTIsMTVDMTMuNSwxNSAxNi41LDE1Ljc1IDE2LjUsMTcuMjVWMThINy41VjE3LjI1QzcuNSwxNS43NSAxMC41LDE1IDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBbGVydCA9IFwiTTEyIDNMMiAxMkg1VjIwSDE5VjEySDIyTDEyIDNNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWOEgxM1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQWxlcnRPdXRsaW5lID0gXCJNMTIgNS43TDE3IDEwLjJWMThIN1YxMC4yTDEyIDUuN00xOSAyMFYxMkgyMkwxMiAzTDIgMTJINVYyME0xMyA4SDExVjEzSDEzVjhNMTMgMTVIMTFWMTdIMTNWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQW5hbHl0aWNzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJNOSwxOEg3VjEySDlNMTMsMThIMTFWMTBIMTNNMTcsMThIMTVWMTRIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQXNzaXN0YW50ID0gXCJNMjEuOCwxM0gyMFYyMUgxM1YxNy42N0wxNS43OSwxNC44OEwxNi41LDE1QzE3LjY2LDE1IDE4LjYsMTQuMDYgMTguNiwxMi45QzE4LjYsMTEuNzQgMTcuNjYsMTAuOCAxNi41LDEwLjhBMi4xLDIuMSAwIDAsMCAxNC40LDEyLjlMMTQuNSwxMy42MUwxMywxNS4xM1Y5LjY1QzEzLjY2LDkuMjkgMTQuMSw4LjYgMTQuMSw3LjhBMi4xLDIuMSAwIDAsMCAxMiw1LjdBMi4xLDIuMSAwIDAsMCA5LjksNy44QzkuOSw4LjYgMTAuMzQsOS4yOSAxMSw5LjY1VjE1LjEzTDkuNSwxMy42MUw5LjYsMTIuOUEyLjEsMi4xIDAgMCwwIDcuNSwxMC44QTIuMSwyLjEgMCAwLDAgNS40LDEyLjlBMi4xLDIuMSAwIDAsMCA3LjUsMTVMOC4yMSwxNC44OEwxMSwxNy42N1YyMUg0VjEzSDIuMjVDMS44MywxMyAxLjQyLDEzIDEuNDIsMTIuNzlDMS40MywxMi41NyAxLjg1LDEyLjE1IDIuMjgsMTEuNzJMMTEsM0MxMS4zMywyLjY3IDExLjY3LDIuMzMgMTIsMi4zM0MxMi4zMywyLjMzIDEyLjY3LDIuNjcgMTMsM0wxNyw3VjZIMTlWOUwyMS43OCwxMS43OEMyMi4xOCwxMi4xOCAyMi41OSwxMi41OSAyMi42LDEyLjhDMjIuNiwxMyAyMi4yLDEzIDIxLjgsMTNNNy41LDEyQTAuOSwwLjkgMCAwLDEgOC40LDEyLjlBMC45LDAuOSAwIDAsMSA3LjUsMTMuOEEwLjksMC45IDAgMCwxIDYuNiwxMi45QTAuOSwwLjkgMCAwLDEgNy41LDEyTTE2LjUsMTJDMTcsMTIgMTcuNCwxMi40IDE3LjQsMTIuOUMxNy40LDEzLjQgMTcsMTMuOCAxNi41LDEzLjhBMC45LDAuOSAwIDAsMSAxNS42LDEyLjlBMC45LDAuOSAwIDAsMSAxNi41LDEyTTEyLDYuOUMxMi41LDYuOSAxMi45LDcuMyAxMi45LDcuOEMxMi45LDguMyAxMi41LDguNyAxMiw4LjdDMTEuNSw4LjcgMTEuMSw4LjMgMTEuMSw3LjhDMTEuMSw3LjMgMTEuNSw2LjkgMTIsNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBdXRvbWF0aW9uID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMiw4LjVDMTQuMzQsOC41IDE2LjQ2LDkuNDMgMTgsMTAuOTRMMTYuOCwxMi4xMkMxNS41OCwxMC45MSAxMy44OCwxMC4xNyAxMiwxMC4xN0MxMC4xMiwxMC4xNyA4LjQyLDEwLjkxIDcuMiwxMi4xMkw2LDEwLjk0QzcuNTQsOS40MyA5LjY2LDguNSAxMiw4LjVNMTIsMTEuODNDMTMuNCwxMS44MyAxNC42NywxMi4zOSAxNS42LDEzLjNMMTQuNCwxNC40N0MxMy43OSwxMy44NyAxMi45NCwxMy41IDEyLDEzLjVDMTEuMDYsMTMuNSAxMC4yMSwxMy44NyA5LjYsMTQuNDdMOC40LDEzLjNDOS4zMywxMi4zOSAxMC42LDExLjgzIDEyLDExLjgzTTEyLDE1LjE3QzEyLjk0LDE1LjE3IDEzLjcsMTUuOTEgMTMuNywxNi44M0MxMy43LDE3Ljc1IDEyLjk0LDE4LjUgMTIsMTguNUMxMS4wNiwxOC41IDEwLjMsMTcuNzUgMTAuMywxNi44M0MxMC4zLDE1LjkxIDExLjA2LDE1LjE3IDEyLDE1LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVDaXJjbGUgPSBcIk0xOS4wNyw0LjkzQzE3LjIyLDMgMTQuNjYsMS45NiAxMiwyQzkuMzQsMS45NiA2Ljc5LDMgNC45NCw0LjkzQzMsNi43OCAxLjk2LDkuMzQgMiwxMkMxLjk2LDE0LjY2IDMsMTcuMjEgNC45MywxOS4wNkM2Ljc4LDIxIDkuMzQsMjIuMDQgMTIsMjJDMTQuNjYsMjIuMDQgMTcuMjEsMjEgMTkuMDYsMTkuMDdDMjEsMTcuMjIgMjIuMDQsMTQuNjYgMjIsMTJDMjIuMDQsOS4zNCAyMSw2Ljc4IDE5LjA3LDQuOTNNMTcsMTJWMThIMTMuNVYxM0gxMC41VjE4SDdWMTJINUwxMiw1TDE5LjUsMTJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUNpcmNsZU91dGxpbmUgPSBcIk0xMiAyMEM3LjYgMjAgNCAxNi40IDQgMTJTNy42IDQgMTIgNCAyMCA3LjYgMjAgMTIgMTYuNCAyMCAxMiAyME0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTEgMTRIMTNWMTdIMTZWMTJIMThMMTIgN0w2IDEySDhWMTdIMTFWMTRcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQ2l0eSA9IFwiTTAsMjFWMTBMNy41LDVMMTUsMTBWMjFIMTBWMTRINVYyMUgwTTI0LDJWMjFIMTdWOC45M0wxNiw4LjI3VjZIMTRWNi45M0wxMCw0LjI3VjJIMjRNMjEsMTRIMTlWMTZIMjFWMTRNMjEsMTBIMTlWMTJIMjFWMTBNMjEsNkgxOVY4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUNpdHlPdXRsaW5lID0gXCJNMTAsMlY0LjI2TDEyLDUuNTlWNEgyMlYxOUgxN1YyMUgyNFYySDEwTTcuNSw1TDAsMTBWMjFIMTVWMTBMNy41LDVNMTQsNlY2LjkzTDE1LjYxLDhIMTZWNkgxNE0xOCw2VjhIMjBWNkgxOE03LjUsNy41TDEzLDExVjE5SDEwVjEzSDVWMTlIMlYxMUw3LjUsNy41TTE4LDEwVjEySDIwVjEwSDE4TTE4LDE0VjE2SDIwVjE0SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVDdXJyZW5jeVVzZCA9IFwiTTEyLDNMMjIsMTJIMTlWMjBINVYxMkgyTDEyLDNNOS4yMiw4LjkzQzguNzUsOS40IDguNSwxMC4wMyA4LjUsMTAuNzVDOC41LDEyLjQzIDEwLjU0LDEzLjA3IDExLjc2LDEzLjQ2QzEzLjI2LDEzLjkzIDEzLjQ3LDE0LjIxIDEzLjUsMTQuMjVDMTMuNSwxNSAxMi4xNSwxNSAxMiwxNVYxNUMxMS4zNywxNSAxMS4wMywxNC44OCAxMC44NiwxNC43OEMxMC42NywxNC42NyAxMC41LDE0LjUgMTAuNSwxNEg4LjVDOC41LDE1LjQzIDkuMjQsMTYuMTYgOS44NSwxNi41QzEwLjE4LDE2LjcgMTAuNTcsMTYuODQgMTEsMTYuOTJWMThIMTNWMTYuOTFDMTQuNTMsMTYuNjEgMTUuNSwxNS42MiAxNS41LDE0LjI1QzE1LjUsMTIuNjcgMTMuODgsMTIuMDMgMTIuMzYsMTEuNTVDMTAuOCwxMS4wNiAxMC41MywxMC43NyAxMC41LDEwLjc1QzEwLjUsMTAuNSAxMC41NywxMC40MSAxMC42NCwxMC4zNEMxMC44NSwxMC4xMyAxMS4zNiwxMCAxMiwxMFYxMEMxMi42OCwxMCAxMy41LDEwLjEzIDEzLjUsMTAuNzVIMTUuNUMxNS41LDkuMzQgMTQuNTYsOC4zNyAxMyw4LjA5VjdIMTFWOC4wOEMxMC4yNiw4LjIxIDkuNjUsOC41IDkuMjIsOC45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRWRpdCA9IFwiTTEyIDNMMiAxMkg1VjIwSDEwVjE0SDE0VjE1LjExTDE5LjQzIDkuNjhMMTIgM00yMS4wNCAxMS4xNEMyMC45IDExLjE0IDIwLjc2IDExLjIgMjAuNjUgMTEuM0wxOS42NSAxMi4zTDIxLjcgMTQuMzVMMjIuNyAxMy4zNUMyMi45MSAxMy4xNCAyMi45MSAxMi43OSAyMi43IDEyLjU4TDIxLjQyIDExLjNDMjEuMzIgMTEuMiAyMS4xOCAxMS4xNCAyMS4wNCAxMS4xNE0xOS4wNiAxMi44OEwxMyAxOC45NFYyMUgxNS4wNkwyMS4xMSAxNC45M0wxOS4wNiAxMi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRWRpdE91dGxpbmUgPSBcIk0xMiAzTDIgMTJINVYyMEgxMVYxNEgxM1YxNi4xMUwxNSAxNC4xMVYxMkg5VjE4SDdWMTAuMTlMMTIgNS42OUwxNyAxMC4xOVYxMi4xMUwxOS40MyA5LjY4TDEyIDNNMjEuMDQgMTEuMTRDMjAuOSAxMS4xNCAyMC43NiAxMS4yIDIwLjY1IDExLjNMMTkuNjUgMTIuM0wyMS43IDE0LjM1TDIyLjcgMTMuMzVDMjIuOTEgMTMuMTQgMjIuOTEgMTIuNzkgMjIuNyAxMi41OEwyMS40MiAxMS4zQzIxLjMyIDExLjIgMjEuMTggMTEuMTQgMjEuMDQgMTEuMTRNMTkuMDYgMTIuODhMMTMgMTguOTRWMjFIMTUuMDZMMjEuMTEgMTQuOTNMMTkuMDYgMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUV4cG9ydE91dGxpbmUgPSBcIk0yNCAxM0wyMCA5VjEySDExVjE0SDIwVjE3TTE4IDE2VjIxSDJWMTJIMEwxMCAyTDE4IDEwSDE1TDEwIDVMNCAxMVYxOUgxNlYxNkgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb2QgPSBcIk01LDExSDJMMTIsMkwyMiwxMUgxOVYxNS45MkMxNy45NSwxNS43NSAxNi45MywxNS4zMiAxNiwxNC42N0MxNS4zNywxNS4xMSAxNC43LDE1LjQzIDE0LDE1LjY1VjEzSDEwVjE1LjY1QzkuMywxNS40MyA4LjYzLDE1LjExIDgsMTQuNjdDNy4wNywxNS4zMiA2LjA1LDE1Ljc1IDUsMTUuOTJNMjAsMThDMTguNjEsMTggMTcuMjIsMTcuNTMgMTYsMTYuNjdDMTMuNTYsMTguMzggMTAuNDQsMTguMzggOCwxNi42N0M2Ljc4LDE3LjUzIDUuMzksMTggNCwxOEgyVjIySDIyVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yMCA9IFwiTTExLDEwSDEzVjE2SDExVjEwTTIyLDEySDE5VjIwSDVWMTJIMkwxMiwzTDIyLDEyTTE1LDEwQTIsMiAwIDAsMCAxMyw4SDExQTIsMiAwIDAsMCA5LDEwVjE2QTIsMiAwIDAsMCAxMSwxOEgxM0EyLDIgMCAwLDAgMTUsMTZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yMSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTAsOEgxNFYxOEgxMlYxMEgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vcjIgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTksOEgxM0EyLDIgMCAwLDEgMTUsMTBWMTJBMiwyIDAgMCwxIDEzLDE0SDExVjE2SDE1VjE4SDlWMTRBMiwyIDAgMCwxIDExLDEySDEzVjEwSDlWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3IzID0gXCJNMTIsM0wyMiwxMkgxOVYyMEg1VjEySDJMMTIsM00xNSwxMS41VjEwQzE1LDguODkgMTQuMSw4IDEzLDhIOVYxMEgxM1YxMkgxMVYxNEgxM1YxNkg5VjE4SDEzQTIsMiAwIDAsMCAxNSwxNlYxNC41QTEuNSwxLjUgMCAwLDAgMTMuNSwxM0ExLjUsMS41IDAgMCwwIDE1LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yQSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTEsOEgxM0EyLDIgMCAwLDEgMTUsMTBWMThIMTNWMTVIMTFWMThIOVYxMEM5LDguODkgOS45LDggMTEsOE0xMSwxMFYxM0gxM1YxMEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3JCID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM005LDhIMTNBMiwyIDAgMCwxIDE1LDEwVjExLjVBMS41LDEuNSAwIDAsMSAxMy41LDEzQTEuNSwxLjUgMCAwLDEgMTUsMTQuNVYxNkEyLDIgMCAwLDEgMTMsMThIOVY4TTExLDEwVjEySDEzVjEwSDExTTExLDE0VjE2SDEzVjE0SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vckcgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTExLDhIMTVWMTBIMTFWMTZIMTNWMTJIMTVWMTZDMTUsMTcuMTEgMTQuMSwxOCAxMywxOEgxMUEyLDIgMCAwLDEgOSwxNlYxMEM5LDguODkgOS45LDggMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3JMID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM005LDhIMTFWMTZIMTVWMThIOVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vck5lZ2F0aXZlMSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTEsMTVIN1YxM0gxMVYxNU0xNSwxOEgxM1YxMEgxMVY4SDE1VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVHcm91cCA9IFwiTTE3LDE2SDE1VjIySDEyVjE3SDhWMjJINVYxNkgzTDEwLDEwTDE3LDE2TTYsMkwxMCw2SDlWOUg3VjZINVY5SDNWNkgyTDYsMk0xOCwzTDIzLDhIMjJWMTJIMTlWOUgxN1YxMkgxNS4zNEwxNCwxMC44N1Y4SDEzTDE4LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUhlYXJ0ID0gXCJNMiwxMkwxMiwzTDIyLDEySDE5VjIwSDVWMTJIMk0xMiwxOEwxMi43MiwxNy4zNEMxNS4zLDE1IDE3LDEzLjQ2IDE3LDExLjU3QzE3LDEwLjAzIDE1Ljc5LDguODIgMTQuMjUsOC44MkMxMy4zOCw4LjgyIDEyLjU1LDkuMjMgMTIsOS44N0MxMS40NSw5LjIzIDEwLjYyLDguODIgOS43NSw4LjgyQzguMjEsOC44MiA3LDEwLjAzIDcsMTEuNTdDNywxMy40NiA4LjcsMTUgMTEuMjgsMTcuMzRMMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUltcG9ydE91dGxpbmUgPSBcIk0xNSAxM0wxMSA5VjEySDJWMTRIMTFWMTdNMjIgMTJIMjBWMjFINFYxNkg2VjE5SDE4VjExTDEyIDVMNyAxMEg0TDEyIDJMMjIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUxpZ2h0YnVsYiA9IFwiTTEyIDNMMiAxMkg1VjIwSDE5VjEySDIyTTEzIDE4SDExVjE3SDEzTTEzLjUgMTQuNThWMTZIMTAuNVYxNC41OEEzIDMgMCAxIDEgMTMuNSAxNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lTGlnaHRidWxiT3V0bGluZSA9IFwiTTEyIDJMMiAxMkg0VjIxSDIwVjEySDIyTTEyIDVMMTggMTFWMTlINlYxMU0xMy41IDE0LjU4VjE2SDEwLjVWMTQuNThDOS4wNyAxMy43NSA4LjU3IDExLjkyIDkuNCAxMC41QzEwLjIzIDkuMDUgMTIuMDcgOC41NiAxMy41IDkuMzhTMTUuNDMgMTIuMDUgMTQuNiAxMy41QzE0LjM0IDEzLjk0IDEzLjk2IDE0LjMyIDEzLjUgMTQuNThNMTMgMTdIMTFWMThIMTNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUxvY2sgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTEyLDlBMywzIDAgMCwxIDE1LDEyVjEzSDE2VjE3SDhWMTNIOVYxMkEzLDMgMCAwLDEgMTIsOU0xMiwxMUExLDEgMCAwLDAgMTEsMTJWMTNIMTNWMTJDMTMsMTEuNSAxMi42LDExIDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVMb2NrT3BlbiA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTIsOEEzLDMgMCAwLDEgMTUsMTFIMTNBMSwxIDAgMCwwIDEyLDEwQTEsMSAwIDAsMCAxMSwxMVYxM0gxNlYxN0g4VjEzSDlWMTFBMywzIDAgMCwxIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZU1hcE1hcmtlciA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTIsNy43QzE0LjEsNy43IDE1LjgsOS40IDE1LjgsMTEuNUMxNS44LDE0LjUgMTIsMTggMTIsMThDMTIsMTggOC4yLDE0LjUgOC4yLDExLjVDOC4yLDkuNCA5LjksNy43IDEyLDcuN00xMiwxMEExLjUsMS41IDAgMCwwIDEwLjUsMTEuNUExLjUsMS41IDAgMCwwIDEyLDEzQTEuNSwxLjUgMCAwLDAgMTMuNSwxMS41QTEuNSwxLjUgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZU1pbnVzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xNiwxM1YxNUg4VjEzSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVNaW51c091dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTYgMTNWMTVIOFYxM0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lTW9kZXJuID0gXCJNNiwyMVY4QTIsMiAwIDAsMSA4LDZMMTYsM1Y2QTIsMiAwIDAsMSAxOCw4VjIxSDEyVjE2SDhWMjFINk0xNCwxOUgxNlYxNkgxNFYxOU04LDEzSDEwVjlIOFYxM00xMiwxM0gxNlY5SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVPdXRsaW5lID0gXCJNMTIgNS42OUwxNyAxMC4xOVYxOEgxNVYxMkg5VjE4SDdWMTAuMTlMMTIgNS42OU0xMiAzTDIgMTJINVYyMEgxMVYxNEgxM1YyMEgxOVYxMkgyMkwxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVQbHVzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMSwxMEgxM1YxM0gxNlYxNUgxM1YxOEgxMVYxNUg4VjEzSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVQbHVzT3V0bGluZSA9IFwiTTEyIDJMMiAxMkg0VjIxSDIwVjEySDIyTTEyIDVMMTggMTFWMTlINlYxMU0xMSAxMEgxM1YxM0gxNlYxNUgxM1YxOEgxMVYxNUg4VjEzSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVSZW1vdmUgPSBcIk0xMiAzTDIgMTJINVYyMEgxOVYxMkgyMkwxMiAzTTE1LjU0IDE2LjEyTDE0LjEyIDE3LjU0TDEyIDE1LjQxTDkuODggMTcuNTRMOC40NyAxNi4xMkwxMC41OSAxNEw4LjQ3IDExLjg4TDkuODggMTAuNDdMMTIgMTIuNTlMMTQuMTIgMTAuNDdMMTUuNTQgMTEuODhMMTMuNDEgMTRMMTUuNTQgMTYuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVJlbW92ZU91dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTQuMTIgMTAuNDZMMTUuNTQgMTEuODhMMTMuNDEgMTRMMTUuNTQgMTYuMTJMMTQuMTIgMTcuNTRMMTIgMTUuNDFMOS44OCAxNy41NEw4LjQ3IDE2LjEyTDEwLjU5IDE0TDguNDcgMTEuODhMOS44OCAxMC40N0wxMiAxMi41OUwxNC4xMiAxMC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lUm9vZiA9IFwiTTE5IDE2SDIyTDEyIDdMMiAxNkg1TDEyIDkuNjlMMTkgMTZNNyA4LjgxVjdINFYxMS41TDcgOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lU2VhcmNoID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTUgMjBWMTJIMkwxMiAzTDIyIDEySDIwLjE4QzE5IDEwLjc3IDE3LjM0IDEwIDE1LjUgMTBDMTEuOTIgMTAgOSAxMi45MiA5IDE2LjVDOSAxNy43OSA5LjM4IDE5IDEwLjAzIDIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVNlYXJjaE91dGxpbmUgPSBcIk0xOS4zMSAxOC45QzE5Ljc1IDE4LjIxIDIwIDE3LjM4IDIwIDE2LjVDMjAgMTQgMTggMTIgMTUuNSAxMlMxMSAxNCAxMSAxNi41IDEzIDIxIDE1LjUgMjFDMTYuMzcgMjEgMTcuMTkgMjAuNzUgMTcuODggMjAuMzJMMjEgMjMuMzlMMjIuMzkgMjJMMTkuMzEgMTguOU0xNS41IDE5QzE0LjEyIDE5IDEzIDE3Ljg4IDEzIDE2LjVTMTQuMTIgMTQgMTUuNSAxNCAxOCAxNS4xMiAxOCAxNi41IDE2Ljg4IDE5IDE1LjUgMTlNNSAyMFYxMkgyTDEyIDNMMjIgMTJIMjAuMThDMTkuMzMgMTEuMTEgMTguMjMgMTAuNDcgMTcgMTAuMThMMTIgNS42OUw3IDEwLjE5VjE4SDkuMThDOS4zNSAxOC43MiA5LjY0IDE5LjM5IDEwLjAzIDIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVRoZXJtb21ldGVyID0gXCJNMTIgM0wyIDEySDVWMjBIMTlWMTJIMjJMMTIgM00xMiA4QTEgMSAwIDAgMSAxMyA5VjE0LjI3QTIgMiAwIDAgMSAxNCAxNkEyIDIgMCAwIDEgMTIgMThBMiAyIDAgMCAxIDEwIDE2QTIgMiAwIDAgMSAxMSAxNC4yN1Y5QTEgMSAwIDAgMSAxMiA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVUaGVybW9tZXRlck91dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTIgOEMxMS40NSA4IDExIDguNDUgMTEgOVYxMy4yN0MxMC4zOCAxMy42MyAxMCAxNC4yOSAxMCAxNUMxMCAxNi4xMSAxMC45IDE3IDEyIDE3UzE0IDE2LjExIDE0IDE1QzE0IDE0LjI5IDEzLjYyIDEzLjYzIDEzIDEzLjI3VjlDMTMgOC40NSAxMi41NSA4IDEyIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVZhcmlhbnQgPSBcIk0xMiwzTDIwLDlWMjFIMTVWMTRIOVYyMUg0VjlMMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lVmFyaWFudE91dGxpbmUgPSBcIk05LDEzSDE1VjE5SDE4VjEwTDEyLDUuNUw2LDEwVjE5SDlWMTNNNCwyMVY5TDEyLDNMMjAsOVYyMUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvb2sgPSBcIk0xOCw2QzE4LDcuODIgMTYuNzYsOS40MSAxNSw5Ljg2VjE3QTUsNSAwIDAsMSAxMCwyMkE1LDUgMCAwLDEgNSwxN1YxMkwxMCwxN0g3QTMsMyAwIDAsMCAxMCwyMEEzLDMgMCAwLDAgMTMsMTdWOS44NkMxMS4yMyw5LjQgMTAsNy44IDEwLDUuOTdDMTAsMy43NiAxMS44LDIgMTQsMkMxNi4yMiwyIDE4LDMuNzkgMTgsNk0xNCw4QTIsMiAwIDAsMCAxNiw2QTIsMiAwIDAsMCAxNCw0QTIsMiAwIDAsMCAxMiw2QTIsMiAwIDAsMCAxNCw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvb2tPZmYgPSBcIk0xMyw5Ljg2VjExLjE4TDE1LDEzLjE4VjkuODZDMTcuMTQsOS4zMSAxOC40Myw3LjEzIDE3Ljg3LDVDMTcuMzIsMi44NSAxNS4xNCwxLjU2IDEzLDIuMTFDMTAuODYsMi42NyA5LjU3LDQuODUgMTAuMTMsN0MxMC41LDguNCAxMS41OSw5LjUgMTMsOS44Nk0xNCw0QTIsMiAwIDAsMSAxNiw2QTIsMiAwIDAsMSAxNCw4QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxNCw0TTE4LjczLDIyTDE0Ljg2LDE4LjEzQzE0LjIxLDIwLjgxIDExLjUsMjIuNDYgOC44MywyMS44MkM2LjYsMjEuMjggNSwxOS4yOSA1LDE3VjEyTDEwLDE3SDdBMywzIDAgMCwwIDEwLDIwQTMsMyAwIDAsMCAxMywxN1YxNi4yN0wyLDUuMjdMMy4yOCw0TDEzLDEzLjcyTDE1LDE1LjcyTDIwLDIwLjcyTDE4LjczLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcHMgPSBcIk0yMSwxMkMyMSwxMiAxMi41LDEwIDEyLjUsMkMxMi41LDIgMjEsMiAyMSwxMk0zLDEyQzMsMiAxMS41LDIgMTEuNSwyQzExLjUsMTAgMywxMiAzLDEyTTEyLDYuNUMxMiw2LjUgMTMsOC42NiAxNSwxMC41QzE0Ljc2LDE0LjE2IDEyLDE2IDEyLDE2QzEyLDE2IDkuMjQsMTQuMTYgOSwxMC41QzExLDguNjYgMTIsNi41IDEyLDYuNU0yMC43NSwxMy4yNUMyMC43NSwxMy4yNSAyMCwxNyAxOCwxOUMxOCwxOSAxNS41MywxNy4zNiAxNC4zMywxNC44MUMxNS4wNSwxMy41OCAxNS41LDEyLjEyIDE1Ljc1LDExLjEzQzE3LjEzLDEyLjE4IDE4Ljc1LDEzIDIwLjc1LDEzLjI1TTE1LjUsMTguMjVDMTQuNSwyMC4yNSAxMiwyMS43NSAxMiwyMS43NUMxMiwyMS43NSA5LjUsMjAuMjUgOC41LDE4LjI1QzguNSwxOC4yNSA5LjU5LDE3LjM0IDEwLjM1LDE1LjhDMTAuODIsMTYuMzUgMTEuMzYsMTYuNzkgMTIsMTdDMTIuNjQsMTYuNzkgMTMuMTgsMTYuMzUgMTMuNjUsMTUuOEMxNC40MSwxNy4zNCAxNS41LDE4LjI1IDE1LjUsMTguMjVNMy4yNSwxMy4yNUM1LjI1LDEzIDYuODcsMTIuMTggOC4yNSwxMS4xM0M4LjUsMTIuMTIgOC45NSwxMy41OCA5LjY3LDE0LjgxQzguNDcsMTcuMzYgNiwxOSA2LDE5QzQsMTcgMy4yNSwxMy4yNSAzLjI1LDEzLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcml6b250YWxSb3RhdGVDbG9ja3dpc2UgPSBcIk0xMiAxNEw4IDEwTDQgMTRINy4xQzcuNTYgMTguNTYgOS41OCAyMiAxMiAyMlMxNi40NCAxOC41NiAxNi45IDE0SDE0LjkxQzE0LjU3IDE3LjQ1IDEzLjQgMjAgMTIgMjBTOS40MyAxNy40NSA5LjA5IDE0SDEyTTEyIDRDMTMuNCA0IDE0LjU3IDYuNTUgMTQuOTEgMTBIMTYuOUMxNi40NCA1LjQ0IDE0LjQyIDIgMTIgMkM5Ljg0IDIgOCA0Ljc0IDcuMyA4LjU4TDggNy44OEw5LjIxIDkuMDhDOS42NCA2LjExIDEwLjczIDQgMTIgNE0yMiAxM1YxMUgxMUwxMyAxM0gyMk0yIDEzSDNMNSAxMUgyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcml6b250YWxSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTIgMTBIOS4wOUM5LjQzIDYuNTUgMTAuNiA0IDEyIDRTMTQuNTcgNi41NSAxNC45MSAxMEgxNi45QzE2LjQ0IDUuNDQgMTQuNDIgMiAxMiAyUzcuNTYgNS40NCA3LjEgMTBINEw4IDE0TDEyIDEwTTEyIDIwQzEwLjczIDIwIDkuNjQgMTcuODkgOS4yMSAxNC45Mkw4IDE2LjEyTDcuMyAxNS40MkM4IDE5LjI2IDkuODQgMjIgMTIgMjJDMTQuNDIgMjIgMTYuNDQgMTguNTYgMTYuOSAxNEgxNC45MUMxNC41NyAxNy40NSAxMy40IDIwIDEyIDIwTTIyIDExSDEzTDExIDEzSDIyVjExTTIgMTNINUwzIDExSDJWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlIb3JzZSA9IFwiTTIyIDZWOS41TDIwLjUgMTBMMTguOTYgNy41NEMxOC44MyA3LjMzIDE4LjUgNy40MiAxOC41IDcuNjdWMTEuMjVDMTguNSAxMi4yMyAxOC4xMSAxMy4xMSAxNy41IDEzLjc4VjIxSDE1VjE1QzE0LjkyIDE1IDE0Ljg0IDE1IDE0Ljc1IDE1QzE0LjU0IDE1IDE0LjMzIDE0Ljk3IDE0LjEzIDE0Ljk0TDkuNjkgMTQuMkw4LjU3IDE2LjIxTDkuNTMgMjFIN0w2IDE2LjI1QzUuOTcgMTUuOTUgNiAxNS42NSA2LjE2IDE1LjM5TDcuMTggMTMuNThDNi4yIDEzLjAzIDUuNTMgMTIgNS41IDEwLjgxQzUuNDYgMTAuOTYgNS40NCAxMS4xOCA1LjQ3IDExLjVDNS41IDExLjk0IDUuNjEgMTIuNTkgNS41NCAxMy4zMUM1LjUgMTQuMDMgNS4xNyAxNC43NyA0Ljc1IDE1LjI2QzQuMzIgMTUuNzUgMy44NSAxNi4wOSAzLjM1IDE2LjM1TDIuNjUgMTUuNjVDMi44NCAxNS4xOCAzLjAzIDE0Ljc2IDMuMDcgMTQuMzdDMy4xMyAxNCAzLjA2IDEzLjcgMi45NSAxMy40M0wyLjQyIDEyLjNDMi4yMSAxMS43OSAxLjk1IDExLjA1IDIgMTAuMThDMi4wMyA5LjMzIDIuNSA4LjIyIDMuMzkgNy42MUM0LjI5IDcgNS4yNiA2LjkyIDYuMDUgNy4wOEM2LjU1IDcuMTggNy4wNiA3LjQyIDcuNSA3Ljc2QzcuODcgNy41OSA4LjMgNy41IDguNzUgNy41SDE0LjVWN0MxNC41IDQuNzkgMTYuMjkgMyAxOC41IDNIMjJMMjEuMTEgNC4zNEMyMS42NSA0LjcgMjIgNS4zMSAyMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcnNlSHVtYW4gPSBcIk0xMCAzLjVDMTAgMi42NyAxMC42NyAyIDExLjUgMlMxMyAyLjY3IDEzIDMuNSAxMi4zMyA1IDExLjUgNSAxMCA0LjMzIDEwIDMuNU0yMiA4VjExLjVMMjAuOTcgMTEuODVDMjAuOCAxMy4wNiAxOS43NiAxNCAxOC41IDE0SDE4LjQyQzE4LjI4IDE0LjY4IDE3Ljk1IDE1LjI5IDE3LjUgMTUuNzhWMjJIMTVWMTdDMTQuOTIgMTcgMTQuODQgMTcgMTQuNzUgMTdDMTQuNTQgMTcgMTQuMzMgMTYuOTcgMTQuMTMgMTYuOTRMOS42OSAxNi4yTDguNTcgMTguMjFMOS4zMiAyMkg2Ljc4TDYgMTguMjVDNS45NyAxNy45NSA2IDE3LjY1IDYuMTYgMTcuMzlMNy4xOCAxNS41OEM2LjIgMTUuMDMgNS41MyAxNCA1LjUgMTIuODFDNS40NiAxMi45NiA1LjQ0IDEzLjE4IDUuNDcgMTMuNUM1LjUgMTMuOTQgNS42MSAxNC41OSA1LjU0IDE1LjMxQzUuNSAxNi4wMyA1LjE3IDE2Ljc3IDQuNzUgMTcuMjZDNC4zMiAxNy43NSAzLjg1IDE4LjA5IDMuMzUgMTguMzVMMi42NSAxNy42NUMyLjg0IDE3LjE4IDMuMDMgMTYuNzYgMy4wNyAxNi4zN0MzLjEzIDE2IDMuMDYgMTUuNyAyLjk1IDE1LjQzTDIuNDIgMTQuM0MyLjIxIDEzLjc5IDEuOTUgMTMuMDUgMiAxMi4xOEMyLjAzIDExLjMzIDIuNSAxMC4yMiAzLjM5IDkuNjFDNC4yOSA5IDUuMjYgOC45MSA2LjA1IDkuMDhDNi41NSA5LjE4IDcuMDYgOS40MiA3LjUgOS43NkM3Ljg3IDkuNTkgOC4zIDkuNSA4Ljc1IDkuNUg5VjguMTFDOSA3LjExIDkuNjggNi4xOSAxMC42NiA2LjAzQzExLjkyIDUuODIgMTMgNi43OSAxMyA4VjkuNUgxNC41VjlDMTQuNSA2Ljc5IDE2LjI5IDUgMTguNSA1SDIyTDIxLjExIDYuMzRDMjEuNjUgNi43IDIyIDcuMzEgMjIgOE0yMCAxMS4yTDE4Ljk2IDkuNTRDMTguODMgOS4zMyAxOC41IDkuNDIgMTguNSA5LjY3VjEzQzE5LjMzIDEzIDIwIDEyLjMzIDIwIDExLjVWMTEuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb3JzZVZhcmlhbnQgPSBcIk0yMCA4VjE2TDE3IDE3TDEzLjkxIDExLjVDMTMuNjUgMTEuMDQgMTIuOTIgMTEuMjcgMTMgMTEuODFMMTQgMjFMNCAxN0w1LjE1IDguOTRDNS42NCA1LjUzIDguNTYgMyAxMiAzSDIwTDE4LjQyIDUuMzdDMTkuMzYgNS44OCAyMCA2Ljg2IDIwIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9yc2VzaG9lID0gXCJNMTksNEgyMFYxSDE2VjRDMTYsNCAxOCw4IDE4LDEyQzE4LDE2IDE2LDE5IDEyLDE5QzgsMTkgNiwxNiA2LDEyQzYsOCA4LDQgOCw0VjFINFY0SDVDNSw0IDIsOCAyLDE0QzIsMTkgNywyMyAxMiwyM0MxNywyMyAyMiwxOSAyMiwxNEMyMiw4IDE5LDQgMTksNE00LDEzQzMuNCwxMyAzLDEyLjYgMywxMkMzLDExLjQgMy40LDExIDQsMTFDNC42LDExIDUsMTEuNCA1LDEyQzUsMTIuNiA0LjYsMTMgNCwxM002LDE5QzUuNCwxOSA1LDE4LjYgNSwxOEM1LDE3LjQgNS40LDE3IDYsMTdDNi42LDE3IDcsMTcuNCA3LDE4QzcsMTguNiA2LjYsMTkgNiwxOU0xMiwyMkMxMS40LDIyIDExLDIxLjYgMTEsMjFDMTEsMjAuNCAxMS40LDIwIDEyLDIwQzEyLjYsMjAgMTMsMjAuNCAxMywyMUMxMywyMS42IDEyLjYsMjIgMTIsMjJNMTgsMTlDMTcuNCwxOSAxNywxOC42IDE3LDE4QzE3LDE3LjQgMTcuNCwxNyAxOCwxN0MxOC42LDE3IDE5LDE3LjQgMTksMThDMTksMTguNiAxOC42LDE5IDE4LDE5TTIwLDEzQzE5LjQsMTMgMTksMTIuNiAxOSwxMkMxOSwxMS40IDE5LjQsMTEgMjAsMTFDMjAuNiwxMSAyMSwxMS40IDIxLDEyQzIxLDEyLjYgMjAuNiwxMyAyMCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb3NwaXRhbCA9IFwiTTE4IDE0SDE0VjE4SDEwVjE0SDZWMTBIMTBWNkgxNFYxMEgxOFwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQm94ID0gXCJNMTgsMTRIMTRWMThIMTBWMTRINlYxMEgxMFY2SDE0VjEwSDE4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQm94T3V0bGluZSA9IFwiTTE4IDE0SDE0VjE4SDEwVjE0SDZWMTBIMTBWNkgxNFYxMEgxOE0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMjBINFY0SDIwVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQnVpbGRpbmcgPSBcIk0yLDIyVjdBMSwxIDAgMCwxIDMsNkg3VjJIMTdWNkgyMUExLDEgMCAwLDEgMjIsN1YyMkgxNFYxN0gxMFYyMkgyTTksNFYxMEgxMVY4SDEzVjEwSDE1VjRIMTNWNkgxMVY0SDlNNCwyMEg4VjE3SDRWMjBNNCwxNUg4VjEySDRWMTVNMTYsMjBIMjBWMTdIMTZWMjBNMTYsMTVIMjBWMTJIMTZWMTVNMTAsMTVIMTRWMTJIMTBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9zcGl0YWxNYXJrZXIgPSBcIk0xMiwyQzE1Ljg2LDIgMTksNS4xMyAxOSw5QzE5LDE0LjI1IDEyLDIyIDEyLDIyQzEyLDIyIDUsMTQuMjUgNSw5QTcsNyAwIDAsMSAxMiwyTTksNlYxMkgxMVYxMEgxM1YxMkgxNVY2SDEzVjhIMTFWNkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvdFR1YiA9IFwiTTcsNEEyLDIgMCAwLDEgOSw2QTIsMiAwIDAsMSA3LDhBMiwyIDAgMCwxIDUsNkEyLDIgMCAwLDEgNyw0TTExLjE1LDEySDIyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjEySDVWMTEuMjVDNSwxMCA2LDkgNy4yNSw5SDcuMjhDNy42Miw5IDcuOTUsOS4wOSA4LjI0LDkuMjNDOC41LDkuMzUgOC43NCw5LjUgOC45Myw5LjczTDEwLjMzLDExLjI4QzEwLjU2LDExLjU0IDEwLjg0LDExLjc4IDExLjE1LDEyTTcsMjBWMTRINVYyMEg3TTExLDIwVjE0SDlWMjBIMTFNMTUsMjBWMTRIMTNWMjBIMTVNMTksMjBWMTRIMTdWMjBIMTlNMTguNjUsNS44NkMxOS42OCw2Ljg2IDIwLjE2LDguMjEgMTkuOTUsOS41N0wxOS44OSwxMEgxOEwxOC4wOSw5LjQxQzE4LjI0LDguNjIgMTgsNy44MyAxNy40Miw3LjIxTDE3LjM1LDcuMTVDMTYuMzIsNi4xNCAxNS44NSw0Ljc5IDE2LjA1LDMuNDNMMTYuMTEsM0gxOEwxNy45MSwzLjU5QzE3Ljc2LDQuMzggMTgsNS4xNyAxOC41OCw1Ljc5TDE4LjY1LDUuODZNMTQuNjUsNS44NkMxNS42OCw2Ljg2IDE2LjE2LDguMjEgMTUuOTUsOS41N0wxNS44OSwxMEgxNEwxNC4wOSw5LjQxQzE0LjI0LDguNjIgMTQsNy44MyAxMy40Miw3LjIxTDEzLjM1LDcuMTVDMTIuMzIsNi4xNCAxMS44NSw0Ljc5IDEyLjA1LDMuNDNMMTIuMTEsM0gxNEwxMy45MSwzLjU5QzEzLjc2LDQuMzggMTQsNS4xNyAxNC41OCw1Ljc5TDE0LjY1LDUuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG91cnMyNCA9IFwiTTEzIDIuMDVWNC4wN0MxNi45NSA0LjU2IDIwIDcuOTIgMjAgMTJDMjAgMTUuMjEgMTguMDggMTggMTUuMjggMTkuMjhMMTMgMTdWMjJIMThMMTYuNzggMjAuNzhDMTkuOTEgMTkuMDcgMjIgMTUuNzYgMjIgMTJDMjIgNi44MiAxOC4wNSAyLjU1IDEzIDIuMDVNMTEgMkM5LjA1IDIuMiA3LjIgMi45NiA1LjY4IDQuMjFMNy4xIDUuNjNDOC4yMyA0Ljc1IDkuNTggNC4yIDExIDRWMk00LjIgNS42OEMyLjk2IDcuMiAyLjIgOS4wNSAyIDExSDRDNC4xOSA5LjU4IDQuNzUgOC4yMyA1LjYzIDcuMUw0LjIgNS42OE02IDhWMTBIOVYxMUg4QzYuOSAxMSA2IDExLjkgNiAxM1YxNkgxMVYxNEg4VjEzSDlDMTAuMTEgMTMgMTEgMTIuMTEgMTEgMTFWMTBDMTEgOC45IDEwLjExIDggOSA4SDZNMTIgOFYxM0gxNVYxNkgxN1YxM0gxOFYxMUgxN1Y4SDE1VjExSDE0VjhIMTJNMiAxM0MyLjIgMTQuOTUgMi45NyAxNi44IDQuMjIgMTguMzJMNS42NCAxNi45QzQuNzYgMTUuNzcgNC4yIDE0LjQyIDQgMTNIMk03LjExIDE4LjM3TDUuNjggMTkuNzlDNy4yIDIxLjAzIDkuMDUgMjEuOCAxMSAyMlYyMEM5LjU4IDE5LjgxIDguMjQgMTkuMjUgNy4xMSAxOC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIdWJzcG90ID0gXCJNMTcuMSw4LjZWNi4yQzE3LjcsNS45IDE4LjIsNS4zIDE4LjIsNC42VjQuNUMxOC4yLDMuNSAxNy40LDIuNyAxNi40LDIuN0gxNi4zQzE1LjMsMi43IDE0LjUsMy41IDE0LjUsNC41VjQuNkMxNC41LDUuMyAxNC45LDUuOSAxNS42LDYuMlY4LjZDMTQuNyw4LjcgMTMuOCw5LjEgMTMuMSw5LjdMNi41LDQuNkM2LjgsMy41IDYuMSwyLjMgNSwyLjFDMy45LDEuOSAyLjgsMi40IDIuNSwzLjVDMi4yLDQuNiAyLjksNS44IDQsNi4xQzQuNSw2LjIgNS4xLDYuMiA1LjYsNS45TDEyLDEwLjlDMTAuOCwxMi43IDEwLjgsMTUgMTIuMSwxNi44TDEwLjEsMTguOEM5LjksMTguOCA5LjgsMTguNyA5LjYsMTguN0M4LjcsMTguNyA3LjksMTkuNSA3LjksMjAuNEM3LjksMjEuMyA4LjcsMjIgOS42LDIyQzEwLjUsMjIgMTEuMywyMS4yIDExLjMsMjAuM1YyMC4zQzExLjMsMjAuMSAxMS4zLDIwIDExLjIsMTkuOEwxMy4xLDE3LjlDMTUuNCwxOS42IDE4LjcsMTkuMiAyMC40LDE2LjlDMjIuMSwxNC42IDIxLjcsMTEuMyAxOS40LDkuNkMxOC44LDkuMSAxOCw4LjcgMTcuMSw4LjZNMTYuMywxNi40QzE0LjgsMTYuNCAxMy42LDE1LjIgMTMuNiwxMy43QzEzLjYsMTIuMiAxNC44LDExIDE2LjMsMTFDMTcuOCwxMSAxOSwxMi4yIDE5LDEzLjdDMTksMTUuMiAxNy44LDE2LjQgMTYuMywxNi40XCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVsdSA9IFwiTTE5LjUsMTIuOFYyMkgxNC43VjEzLjlDMTQuNywxMy4yIDE0LjEsMTIuNiAxMy40LDEyLjZIMTAuNUM5LjgsMTIuNiA5LjIsMTMuMiA5LjIsMTMuOVYyMkg0LjVWMkg5LjNWOC40QzkuNiw4LjMgOS45LDguMiAxMC4yLDguMkgxNUMxNy41LDguMiAxOS41LDEwLjMgMTkuNSwxMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuID0gXCJNMjEsOUgxNVYyMkgxM1YxNkgxMVYyMkg5VjlIM1Y3SDIxTTEyLDJBMiwyIDAgMCwxIDE0LDRBMiwyIDAgMCwxIDEyLDZDMTAuODksNiAxMCw1LjEgMTAsNEMxMCwyLjg5IDEwLjg5LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkJhYnlDaGFuZ2luZ1RhYmxlID0gXCJNNi41IDYuMDhDNS43MiA2LjEyIDUgNi42MiA0LjcyIDcuNEwzIDEyLjEzVjIySDdWMTIuODRMOC40MiA4Ljk0TDEwLjcgMTBIMTRWOEgxMS4xNUw3LjI5IDYuMkM3LjAzIDYuMTEgNi43NiA2LjA3IDYuNSA2LjA4TTkgMTdIMjFWMTlIOU0xMCAzLjVBMiAyIDAgMCAxIDggNS41QTIgMiAwIDAgMSA2IDMuNUEyIDIgMCAwIDEgOCAxLjVBMiAyIDAgMCAxIDEwIDMuNU0yMSAxNC41QTEuNSAxLjUgMCAwIDEgMTkuNSAxNkExLjUgMS41IDAgMCAxIDE4IDE0LjVBMS41IDEuNSAwIDAgMSAxOS41IDEzQTEuNSAxLjUgMCAwIDEgMjEgMTQuNU05IDExVjEzSDExVjE0QzExIDE1LjExIDExLjg5IDE2IDEzIDE2SDE1QzE2LjExIDE2IDE3IDE1LjExIDE3IDE0VjExSDE1VjEzSDEzVjEyQTEgMSAwIDAgMCAxMiAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhbmUgPSBcIk0xOCAxMi4yNFYyMkgxNy4wNlYxMi4yNEMxNy4wNiAxMi4wOSAxNyAxMiAxNi45MyAxMS44OUMxNi44NCAxMS44IDE2Ljc0IDExLjc2IDE2LjYyIDExLjc2QzE2LjQ3IDExLjc2IDE2LjM2IDExLjggMTYuMjcgMTEuODlDMTYuMTggMTIgMTYuMTQgMTIuMSAxNi4xNCAxMi4yNFYxMy4xNkgxNS4yM1YxMi41QzE0LjUzIDEyLjMzIDEzLjkgMTIuMDQgMTMuMzUgMTEuNjNDMTIuOCAxMS4yMiAxMi4zNCAxMC43NCAxMS45NiAxMC4xOUwxMS42MSAxMS4zOUMxMS41IDExLjgxIDExLjUgMTIuMjQgMTEuNSAxMi42OEwxMS41IDEzTDExLjUgMTMuMzNMMTMuMzUgMTUuOTRWMjJIMTEuNVYxNy4zNEw5LjgyIDE1TDkuNjUgMTguMjVMNi44NiAyMkw1LjM4IDIwLjg3TDcuNzcgMTcuNjRWMTIuNjhDNy43NyAxMi4xNSA3LjgyIDExLjYzIDcuOTEgMTEuMTFMOC4yNSA5LjU0TDYuODYgMTAuMzJWMTMuNjNINVY5LjIzTDEwIDYuNEMxMC4yOSA2LjI2IDEwLjU5IDYuMTggMTAuOTEgNi4xOEMxMS4yMyA2LjE4IDExLjU0IDYuMjcgMTEuODMgNi40NEMxMi4xNSA2LjYyIDEyLjM5IDYuODggMTIuNTcgNy4yM0wxMy4zMSA4LjhDMTMuNiA5LjM4IDE0LjA0IDkuODcgMTQuNjQgMTAuMjZDMTUuMjMgMTAuNjUgMTUuODkgMTAuODUgMTYuNjIgMTAuODVDMTcgMTAuODUgMTcuMzIgMTEgMTcuNiAxMS4yNEMxNy44OCAxMS41IDE4IDExLjgzIDE4IDEyLjI0TTEyIDJDMTMuMTEgMiAxNCAyLjkgMTQgNEMxNCA1LjExIDEzLjExIDYgMTIgNkMxMC45IDYgMTAgNS4xMSAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhcGFjaXR5RGVjcmVhc2UgPSBcIk0xNiA0QzE2IDIuOSAxNi45IDIgMTggMlMyMCAyLjkgMjAgNCAxOS4xIDYgMTggNiAxNiA1LjEgMTYgNE0yMC43OCA3LjU4QzE5LjkzIDcuMjEgMTkgNyAxOCA3QzE3LjMzIDcgMTYuNjkgNy4xIDE2LjA4IDcuMjhDMTYuNjYgNy44MyAxNyA4LjYgMTcgOS40M1YxMEgyMlY5LjQzQzIyIDguNjIgMjEuNSA3LjkgMjAuNzggNy41OE02IDZDNy4xIDYgOCA1LjEgOCA0UzcuMSAyIDYgMiA0IDIuOSA0IDQgNC45IDYgNiA2TTcuOTIgNy4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3QzUgNyA0LjA3IDcuMjEgMy4yMiA3LjU4QzIuNSA3LjkgMiA4LjYyIDIgOS40M1YxMEg3VjkuNDNDNyA4LjYgNy4zNCA3LjgzIDcuOTIgNy4yOE0xMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNCAxMy4xIDYgMTIgNiAxMCA1LjEgMTAgNE0xNiAxMEg4VjkuNDNDOCA4LjYyIDguNSA3LjkgOS4yMiA3LjU4QzEwLjA3IDcuMjEgMTEgNyAxMiA3QzEzIDcgMTMuOTMgNy4yMSAxNC43OCA3LjU4QzE1LjUgNy45IDE2IDguNjIgMTYgOS40M1YxME0xNSAxNkMxNSAxNC45IDE1LjkgMTQgMTcgMTRTMTkgMTQuOSAxOSAxNiAxOC4xIDE4IDE3IDE4IDE1IDE3LjEgMTUgMTZNMjEgMjJIMTNWMjEuNDNDMTMgMjAuNjIgMTMuNSAxOS45IDE0LjIyIDE5LjU4QzE1LjA3IDE5LjIxIDE2IDE5IDE3IDE5QzE4IDE5IDE4LjkzIDE5LjIxIDE5Ljc4IDE5LjU4QzIwLjUgMTkuOSAyMSAyMC42MiAyMSAyMS40M1YyMk01IDE2QzUgMTQuOSA1LjkgMTQgNyAxNFM5IDE0LjkgOSAxNiA4LjEgMTggNyAxOCA1IDE3LjEgNSAxNk0xMSAyMkgzVjIxLjQzQzMgMjAuNjIgMy41IDE5LjkgNC4yMiAxOS41OEM1LjA3IDE5LjIxIDYgMTkgNyAxOUM4IDE5IDguOTMgMTkuMjEgOS43OCAxOS41OEMxMC41IDE5LjkgMTEgMjAuNjIgMTEgMjEuNDNWMjJNMTIuNzUgMTNWMTFIMTEuMjVWMTNIOUwxMiAxNkwxNSAxM0gxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhcGFjaXR5SW5jcmVhc2UgPSBcIk0xNiA0QzE2IDIuOSAxNi45IDIgMTggMkMxOS4xIDIgMjAgMi45IDIwIDRDMjAgNS4xIDE5LjEgNiAxOCA2QzE2LjkgNiAxNiA1LjEgMTYgNE0yMC43OCA3LjU4QzE5LjkzIDcuMjEgMTkgNyAxOCA3QzE3LjMzIDcgMTYuNjkgNy4xIDE2LjA4IDcuMjhDMTYuNjYgNy44MyAxNyA4LjYgMTcgOS40M1YxMEgyMlY5LjQzQzIyIDguNjIgMjEuNSA3LjkgMjAuNzggNy41OE02IDZDNy4xIDYgOCA1LjEgOCA0QzggMi45IDcuMSAyIDYgMkM0LjkgMiA0IDIuOSA0IDRDNCA1LjEgNC45IDYgNiA2TTcuOTIgNy4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3QzUgNyA0LjA3IDcuMjEgMy4yMiA3LjU4QzIuNSA3LjkgMiA4LjYyIDIgOS40M1YxMEg3VjkuNDNDNyA4LjYgNy4zNCA3LjgzIDcuOTIgNy4yOE0xMCA0QzEwIDIuOSAxMC45IDIgMTIgMkMxMy4xIDIgMTQgMi45IDE0IDRDMTQgNS4xIDEzLjEgNiAxMiA2QzEwLjkgNiAxMCA1LjEgMTAgNE0xNiAxMEg4VjkuNDNDOCA4LjYyIDguNSA3LjkgOS4yMiA3LjU4QzEwLjA3IDcuMjEgMTEgNyAxMiA3QzEzIDcgMTMuOTMgNy4yMSAxNC43OCA3LjU4QzE1LjUgNy45IDE2IDguNjIgMTYgOS40M00xNSAxNkMxNSAxNC45IDE1LjkgMTQgMTcgMTRDMTguMSAxNCAxOSAxNC45IDE5IDE2QzE5IDE3LjEgMTguMSAxOCAxNyAxOEMxNS45IDE4IDE1IDE3LjEgMTUgMTZNMjEgMjJIMTNWMjEuNDNDMTMgMjAuNjIgMTMuNSAxOS45IDE0LjIyIDE5LjU4QzE1LjA3IDE5LjIxIDE2IDE5IDE3IDE5QzE4IDE5IDE4LjkzIDE5LjIxIDE5Ljc4IDE5LjU4QzIwLjUgMTkuOSAyMSAyMC42MiAyMSAyMS40M001IDE2QzUgMTQuOSA1LjkgMTQgNyAxNEM4LjEgMTQgOSAxNC45IDkgMTZDOSAxNy4xIDguMSAxOCA3IDE4QzUuOSAxOCA1IDE3LjEgNSAxNk0xMSAyMkgzVjIxLjQzQzMgMjAuNjIgMy41IDE5LjkgNC4yMiAxOS41OEM1LjA3IDE5LjIxIDYgMTkgNyAxOUM4IDE5IDguOTMgMTkuMjEgOS43OCAxOS41OEMxMC41IDE5LjkgMTEgMjAuNjIgMTEgMjEuNDNNMTIuNzUgMTRWMTZIMTEuMjVWMTRIOUwxMiAxMUwxNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNoaWxkID0gXCJNMTIsMkEzLDMgMCAwLDEgMTUsNUEzLDMgMCAwLDEgMTIsOEEzLDMgMCAwLDEgOSw1QTMsMyAwIDAsMSAxMiwyTTExLDIySDhWMTZINlY5SDE4VjE2SDE2VjIySDEzVjE4SDExVjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRWRpdCA9IFwiTTE5LjA3IDE0Ljg4TDIxLjEyIDE2LjkzTDE1LjA2IDIzSDEzVjIwLjk0TDE5LjA3IDE0Ljg4TTIxLjA0IDEzLjEzQzIxLjE4IDEzLjEzIDIxLjMxIDEzLjE5IDIxLjQyIDEzLjNMMjIuNyAxNC41OEMyMi45MiAxNC43OSAyMi45MiAxNS4xNCAyMi43IDE1LjM1TDIxLjcgMTYuMzVMMTkuNjUgMTQuM0wyMC42NSAxMy4zQzIwLjc2IDEzLjE5IDIwLjkgMTMuMTMgMjEuMDQgMTMuMTNNMjEgOUgxNVYxNkwxMyAxOFYxNkgxMVYyMkg5VjlIM1Y3SDIxVjlNMTIgMkMxMy4xIDIgMTQgMi45IDE0IDRDMTQgNS4xIDEzLjEgNiAxMiA2QzEwLjkgNiAxMCA1LjEgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5GZW1hbGUgPSBcIk0xMiwyQTIsMiAwIDAsMSAxNCw0QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxMCw0QTIsMiAwIDAsMSAxMiwyTTEwLjUsMjJWMTZINy41TDEwLjA5LDguNDFDMTAuMzQsNy41OSAxMS4xLDcgMTIsN0MxMi45LDcgMTMuNjYsNy41OSAxMy45MSw4LjQxTDE2LjUsMTZIMTMuNVYyMkgxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlQm95ID0gXCJNNy41LDJBMiwyIDAgMCwxIDkuNSw0QTIsMiAwIDAsMSA3LjUsNkEyLDIgMCAwLDEgNS41LDRBMiwyIDAgMCwxIDcuNSwyTTYsMjJWMTZIM0w1LjYsOC40QzUuOSw3LjYgNi42LDcgNy41LDdDOC40LDcgOS4yLDcuNiA5LjQsOC40TDEyLDE2SDlWMjJINk0xNC41LDEyQTIsMiAwIDAsMSAxNi41LDEwQTIsMiAwIDAsMSAxOC41LDEyQTIsMiAwIDAsMSAxNi41LDE0QTIsMiAwIDAsMSAxNC41LDEyTTEzLjUsMTVIMTkuNVYxOUgxOFYyMkgxNVYxOUgxMy41VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlRGFuY2UgPSBcIk0xNyAxN0gxNVYyM0gxM1YxN0gxMC44OEw5LjM0IDE4LjkzTDExLjcxIDIxLjI5TDEwLjI5IDIyLjcxTDcuOTMgMjAuMzRDNy41OCAyMCA3LjM4IDE5LjUzIDcuMzUgMTkuMDRDNy4zMiAxOC41NSA3LjQ3IDE4LjA2IDcuNzggMTcuNjhMOC4zMiAxN0g3TDkgMTNWMTBDOC4zOCAxMC40NyA3Ljg4IDExLjA3IDcuNTMgMTEuNzZDNy4xOCAxMi40NiA3IDEzLjIyIDcgMTRINUM1IDEyLjE0IDUuNzQgMTAuMzYgNy4wNSA5LjA1QzguMzYgNy43NCAxMC4xNCA3IDEyIDdDMTMuMzMgNyAxNC42IDYuNDcgMTUuNTQgNS41NEMxNi40NyA0LjYgMTcgMy4zMyAxNyAySDE5QzE5IDMuMzIgMTguNjIgNC42MiAxNy45MSA1LjczQzE3LjIgNi44NSAxNi4yIDcuNzQgMTUgOC4zMVYxM0wxNyAxN00xNCA0QzE0IDQuNCAxMy44OCA0Ljc4IDEzLjY2IDUuMTFDMTMuNDQgNS40NCAxMy4xMyA1LjcgMTIuNzcgNS44NUMxMi40IDYgMTIgNi4wNCAxMS42MSA1Ljk2QzExLjIyIDUuODggMTAuODcgNS42OSAxMC41OSA1LjQxQzEwLjMxIDUuMTMgMTAuMTIgNC43OCAxMC4wNCA0LjM5QzkuOTYgNCAxMCAzLjYgMTAuMTUgMy4yNEMxMC4zIDIuODcgMTAuNTYgMi41NiAxMC44OSAyLjM0QzExLjIyIDIuMTIgMTEuNiAyIDEyIDJDMTIuNTMgMiAxMy4wNCAyLjIxIDEzLjQxIDIuNTlDMTMuNzkgMi45NiAxNCAzLjQ3IDE0IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5GZW1hbGVGZW1hbGUgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiwyMlYxNkgzTDUuNiw4LjRDNS45LDcuNiA2LjYsNyA3LjUsN0M4LjQsNyA5LjIsNy42IDkuNCw4LjRMMTIsMTZMMTQuNiw4LjRDMTQuOSw3LjYgMTUuNiw3IDE2LjUsN0MxNy40LDcgMTguMiw3LjYgMTguNCw4LjRMMjEsMTZIMThWMjJIMTVWMTZIMTJMOSwxNlYyMkg2TTE2LjUsMkEyLDIgMCAwLDEgMTguNSw0QTIsMiAwIDAsMSAxNi41LDZBMiwyIDAgMCwxIDE0LjUsNEEyLDIgMCAwLDEgMTYuNSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlR2lybCA9IFwiTTcuNSwyQTIsMiAwIDAsMSA5LjUsNEEyLDIgMCAwLDEgNy41LDZBMiwyIDAgMCwxIDUuNSw0QTIsMiAwIDAsMSA3LjUsMk02LDIyVjE2SDNMNS42LDguNEM1LjksNy42IDYuNiw3IDcuNSw3QzguNCw3IDkuMiw3LjYgOS40LDguNEwxMiwxNkg5VjIySDZNMTQuNSwxMkEyLDIgMCAwLDEgMTYuNSwxMEEyLDIgMCAwLDEgMTguNSwxMkEyLDIgMCAwLDEgMTYuNSwxNEEyLDIgMCAwLDEgMTQuNSwxMk0xNSwxNUgxOEwxOS41LDE5SDE4VjIySDE1VjE5SDEzLjVMMTUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5HcmVldGluZyA9IFwiTTEuNSw0VjUuNUMxLjUsOS42NSAzLjcxLDEzLjI4IDcsMTUuM1YyMEgyMlYxOEMyMiwxNS4zNCAxNi42NywxNCAxNCwxNEMxNCwxNCAxMy44MywxNCAxMy43NSwxNEM5LDE0IDUsMTAgNSw1LjVWNE0xNCw0QTQsNCAwIDAsMCAxMCw4QTQsNCAwIDAsMCAxNCwxMkE0LDQgMCAwLDAgMTgsOEE0LDQgMCAwLDAgMTQsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkdyZWV0aW5nUHJveGltaXR5ID0gXCJNMTEgMTRIOUM5IDkuMDMgMTMuMDMgNSAxOCA1VjdDMTQuMTMgNyAxMSAxMC4xMyAxMSAxNE0xOCAxMVY5QzE1LjI0IDkgMTMgMTEuMjQgMTMgMTRIMTVDMTUgMTIuMzQgMTYuMzQgMTEgMTggMTFNNyA0QzcgMi44OSA2LjExIDIgNSAyUzMgMi44OSAzIDQgMy44OSA2IDUgNiA3IDUuMTEgNyA0TTExLjQ1IDQuNUg5LjQ1QzkuMjEgNS45MiA4IDcgNi41IDdIMy41QzIuNjcgNyAyIDcuNjcgMiA4LjVWMTFIOFY4Ljc0QzkuODYgOC4xNSAxMS4yNSA2LjUgMTEuNDUgNC41TTE5IDE3QzIwLjExIDE3IDIxIDE2LjExIDIxIDE1UzIwLjExIDEzIDE5IDEzIDE3IDEzLjg5IDE3IDE1IDE3Ljg5IDE3IDE5IDE3TTIwLjUgMThIMTcuNUMxNiAxOCAxNC43OSAxNi45MiAxNC41NSAxNS41SDEyLjU1QzEyLjc1IDE3LjUgMTQuMTQgMTkuMTUgMTYgMTkuNzRWMjJIMjJWMTkuNUMyMiAxOC42NyAyMS4zMyAxOCAyMC41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuSGFuZHNkb3duID0gXCJNMTIsMUMxMC44OSwxIDEwLDEuOSAxMCwzQzEwLDQuMTEgMTAuODksNSAxMiw1QzEzLjExLDUgMTQsNC4xMSAxNCwzQTIsMiAwIDAsMCAxMiwxTTEwLDZDOS43Myw2IDkuNSw2LjExIDkuMzEsNi4yOEg5LjNMNCwxMS41OUw1LjQyLDEzTDksOS40MVYyMkgxMVYxNUgxM1YyMkgxNVY5LjQxTDE4LjU4LDEzTDIwLDExLjU5TDE0LjcsNi4yOEMxNC41LDYuMTEgMTQuMjcsNiAxNCw2XCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5IYW5kc3VwID0gXCJNNSwxQzUsMy43IDYuNTYsNi4xNiA5LDcuMzJWMjJIMTFWMTVIMTNWMjJIMTVWNy4zMUMxNy40NCw2LjE2IDE5LDMuNyAxOSwxSDE3QTUsNSAwIDAsMSAxMiw2QTUsNSAwIDAsMSA3LDFNMTIsMUMxMC44OSwxIDEwLDEuODkgMTAsM0MxMCw0LjExIDEwLjg5LDUgMTIsNUMxMy4xMSw1IDE0LDQuMTEgMTQsM0MxNCwxLjg5IDEzLjExLDEgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbk1hbGUgPSBcIk0xMiwyQTIsMiAwIDAsMSAxNCw0QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxMCw0QTIsMiAwIDAsMSAxMiwyTTEwLjUsN0gxMy41QTIsMiAwIDAsMSAxNS41LDlWMTQuNUgxNFYyMkgxMFYxNC41SDguNVY5QTIsMiAwIDAsMSAxMC41LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlQm95ID0gXCJNNy41LDJBMiwyIDAgMCwxIDkuNSw0QTIsMiAwIDAsMSA3LjUsNkEyLDIgMCAwLDEgNS41LDRBMiwyIDAgMCwxIDcuNSwyTTYsN0g5QTIsMiAwIDAsMSAxMSw5VjE0LjVIOS41VjIySDUuNVYxNC41SDRWOUEyLDIgMCAwLDEgNiw3TTE0LjUsMTJBMiwyIDAgMCwxIDE2LjUsMTBBMiwyIDAgMCwxIDE4LjUsMTJBMiwyIDAgMCwxIDE2LjUsMTRBMiwyIDAgMCwxIDE0LjUsMTJNMTMuNSwxNUgxOS41VjE5SDE4VjIySDE1VjE5SDEzLjVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlQ2hpbGQgPSBcIk03IDJDNS45IDIgNSAyLjkgNSA0UzUuOSA2IDcgNiA5IDUuMTEgOSA0IDguMTEgMiA3IDJNNSA3QzMuODkgNyAzIDcuODkgMyA5VjE1SDVWMjJIMTBWMTEuNkwxMi41MyAxNkgxNC45N0wxNiAxNC42NlYyMkgyMFYxN0gyMVYxNEMyMSAxMi44OSAyMC4xMSAxMiAxOSAxMkgxNi41QzE1LjkgMTIgMTUuMzcgMTIuMjYgMTUgMTIuNjhDMTQuNjcgMTMuMSAxNC4zMiAxMy41NiAxNCAxNEgxMy42OUwxMCA3LjY2QzkuODQgNy4zOCA5LjIyIDcgOC41IDdINU0xOCA4QzE3LjE3IDggMTYuNSA4LjY3IDE2LjUgOS41UzE3LjE3IDExIDE4IDExIDE5LjUgMTAuMzMgMTkuNSA5LjUgMTguODMgOCAxOCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZUZlbWFsZSA9IFwiTTcuNSwyQTIsMiAwIDAsMSA5LjUsNEEyLDIgMCAwLDEgNy41LDZBMiwyIDAgMCwxIDUuNSw0QTIsMiAwIDAsMSA3LjUsMk02LDdIOUEyLDIgMCAwLDEgMTEsOVYxNC41SDkuNVYyMkg1LjVWMTQuNUg0VjlBMiwyIDAgMCwxIDYsN00xNi41LDJBMiwyIDAgMCwxIDE4LjUsNEEyLDIgMCAwLDEgMTYuNSw2QTIsMiAwIDAsMSAxNC41LDRBMiwyIDAgMCwxIDE2LjUsMk0xNSwyMlYxNkgxMkwxNC41OSw4LjQxQzE0Ljg0LDcuNTkgMTUuNiw3IDE2LjUsN0MxNy40LDcgMTguMTYsNy41OSAxOC40MSw4LjQxTDIxLDE2SDE4VjIySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZUdpcmwgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiw3SDlBMiwyIDAgMCwxIDExLDlWMTQuNUg5LjVWMjJINS41VjE0LjVINFY5QTIsMiAwIDAsMSA2LDdNMTQuNSwxMkEyLDIgMCAwLDEgMTYuNSwxMEEyLDIgMCAwLDEgMTguNSwxMkEyLDIgMCAwLDEgMTYuNSwxNEEyLDIgMCAwLDEgMTQuNSwxMk0xNSwxNUgxOEwxOS41LDE5SDE4VjIySDE1VjE5SDEzLjVMMTUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlSGVpZ2h0ID0gXCJNNywyQzguNzgsMiA5LjY3LDQuMTYgOC40Miw1LjQyQzcuMTYsNi42NyA1LDUuNzggNSw0QTIsMiAwIDAsMSA3LDJNNS41LDdIOC41QTIsMiAwIDAsMSAxMC41LDlWMTQuNUg5VjIySDVWMTQuNUgzLjVWOUEyLDIgMCAwLDEgNS41LDdNMjEsOEgxNVYxMEgyMU0yMSwxMUgxOFYxM0gyMU0yMSwySDE1VjRIMjFNMjEsNUgxOFY3SDIxTTIxLDE0SDE1VjE2SDIxTTIxLDIwSDE1VjIySDIxTTIxLDE3SDE4VjE5SDIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlSGVpZ2h0VmFyaWFudCA9IFwiTTcsMkM4Ljc4LDIgOS42Nyw0LjE2IDguNDIsNS40MkM3LjE2LDYuNjcgNSw1Ljc4IDUsNEEyLDIgMCAwLDEgNywyTTUuNSw3SDguNUEyLDIgMCAwLDEgMTAuNSw5VjE0LjVIOVYyMkg1VjE0LjVIMy41VjlBMiwyIDAgMCwxIDUuNSw3TTE5LDhIMjFMMTgsNEwxNSw4SDE3VjE2SDE1TDE4LDIwTDIxLDE2SDE5TTIyLDJIMTRWNEgyMk0yMiwyMEgxNFYyMkgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZU1hbGUgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiw3SDlBMiwyIDAgMCwxIDExLDlWMTQuNUg5LjVWMjJINS41VjE0LjVINFY5QTIsMiAwIDAsMSA2LDdNMTYuNSwyQTIsMiAwIDAsMSAxOC41LDRBMiwyIDAgMCwxIDE2LjUsNkEyLDIgMCAwLDEgMTQuNSw0QTIsMiAwIDAsMSAxNi41LDJNMTUsN0gxOEEyLDIgMCAwLDEgMjAsOVYxNC41SDE4LjVWMjJIMTQuNVYxNC41SDEzVjlBMiwyIDAgMCwxIDE1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5QcmVnbmFudCA9IFwiTTksNEM5LDIuODkgOS44OSwyIDExLDJDMTIuMTEsMiAxMywyLjg5IDEzLDRDMTMsNS4xMSAxMi4xMSw2IDExLDZDOS44OSw2IDksNS4xMSA5LDRNMTYsMTNDMTYsMTEuNjYgMTUuMTcsMTAuNSAxNCwxMEEzLDMgMCAwLDAgMTEsN0EzLDMgMCAwLDAgOCwxMFYxN0gxMFYyMkgxM1YxN0gxNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hblF1ZXVlID0gXCJNNSA2QzMuOSA2IDMgNi45IDMgOFMzLjkgMTAgNSAxMCA3IDkuMTEgNyA4IDYuMTEgNiA1IDZNMTIgNEMxMC45IDQgMTAgNC44OSAxMCA2UzEwLjkgOCAxMiA4IDE0IDcuMTEgMTQgNiAxMy4xMSA0IDEyIDRNMTkgMkMxNy45IDIgMTcgMi45IDE3IDRTMTcuOSA2IDE5IDYgMjEgNS4xMSAyMSA0IDIwLjExIDIgMTkgMk0zLjUgMTFDMi42NyAxMSAyIDExLjY3IDIgMTIuNVYxN0gzVjIySDdWMTdIOFYxMi41QzggMTEuNjcgNy4zMyAxMSA2LjUgMTFIMy41TTEwLjUgOUM5LjY3IDkgOSA5LjY3IDkgMTAuNVYxNUgxMFYyMEgxNFYxNUgxNVYxMC41QzE1IDkuNjcgMTQuMzMgOSAxMy41IDlIMTAuNU0xNy41IDdDMTYuNjcgNyAxNiA3LjY3IDE2IDguNVYxM0gxN1YxOEgyMVYxM0gyMlY4LjVDMjIgNy42NyAyMS4zMyA3IDIwLjUgN0gxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuU2Nvb3RlciA9IFwiTTE2LjUgMi4yNUMxNy4zMyAyLjI1IDE4IDIuOTIgMTggMy43NUMxOCA0LjU4IDE3LjMzIDUuMjUgMTYuNSA1LjI1QzE1LjY3IDUuMjUgMTUgNC41OCAxNSAzLjc1QzE1IDIuOTIgMTUuNjcgMi4yNSAxNi41IDIuMjVNMjAgMThDMjEuMTEgMTggMjIgMTguOSAyMiAyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkMxOS4yNiAyMiAxOC42MSAyMS42IDE4LjI3IDIxSDguNzNDOC4zOSAyMS42IDcuNzQgMjIgNyAyMkM1LjkgMjIgNSAyMS4xMSA1IDIwQzUgMTguOSA1LjkgMTggNyAxOEM3Ljc0IDE4IDguMzkgMTguNCA4LjczIDE5SDEzVjEzLjVMOS43MyAxMS4yM0w2Ljc3IDE0QzYuMzYgMTQuMzcgNS43MyAxNC4zNCA1LjM1IDEzLjk0TDIuMjggMTAuNjVDMS45MSAxMC4yNCAxLjkzIDkuNjEgMi4zMyA5LjIzQzIuNzQgOC44NiAzLjM3IDguODggMy43NCA5LjI4TDYuMTMgMTEuODRMMTMuMjYgNS4yTDEzLjMgNS4xOEMxMy43MiA0LjgyIDE0LjM1IDQuODggMTQuNzEgNS4zTDE2Ljk3IDhIMjBDMjAuNTUgOCAyMSA4LjQ1IDIxIDlDMjEgOS41NSAyMC41NSAxMCAyMCAxMEgxNi41QzE2LjE1IDEwIDE1Ljg1IDkuODIgMTUuNjcgOS41NkwxNC4xNyA3Ljc3TDExLjY0IDEwLjEzTDE0LjU3IDEyLjE4SDE0LjU3QzE0LjgzIDEyLjM2IDE1IDEyLjY2IDE1IDEzVjE5SDE1LjYxQzE2LjA0IDE3LjEzIDE3LjYzIDE1LjcgMTkuNTggMTUuNUwxOC44MSAxMUgyMC4zMUwyMS4zOSAxNy4zNEMyMC45NyAxNy4xMiAyMC41IDE3IDIwIDE3QzE4LjY5IDE3IDE3LjU4IDE3Ljg0IDE3LjE3IDE5SDE4LjI3QzE4LjYxIDE4LjQgMTkuMjYgMTggMjAgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5XaGVlbGNoYWlyID0gXCJNOC41IDRBMiAyIDAgMCAxIDYuNSA2QTIgMiAwIDAgMSA0LjUgNEEyIDIgMCAwIDEgNi41IDJBMiAyIDAgMCAxIDguNSA0TTUgN0MzLjg5IDcgMyA3Ljg5IDMgOVYxNUg1VjIySDguNjFBNyA3IDAgMCAxIDYuNSAxN0E3IDcgMCAwIDEgMTAgMTAuOTVWOUMxMCA3Ljg5IDkuMTEgNyA4IDdNMTMgOFYxNkgxOC41TDIxLjIgMTkuNkwyMi44IDE4LjRMMTkuNSAxNEgxNVY4TTEyIDEyLjIzQTUgNSAwIDAgMCA4LjUgMTdBNSA1IDAgMCAwIDEzLjUgMjJBNSA1IDAgMCAwIDE4LjUgMTdIMTYuNUEzIDMgMCAwIDEgMTMuNSAyMEEzIDMgMCAwIDEgMTAuNSAxN0EzIDMgMCAwIDEgMTIgMTQuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYmxlQnVuZGxlID0gXCJNMTYuOTEsMTguMTJDMTQuMDksMTguMTIgMTguNDMsMi4xMyAxOC40MywyLjEzSDE1LjUzQzE1LjUzLDIuMTMgMTQuMzQsNS44OSAxMy41NSwxMC4wN0gxMS4wNUMxMS4xMSw5LjIxIDExLjE1LDguMzQgMTEuMTMsNy41QzExLDAuNTkgNywxLjg3IDUuMTgsMy40NUMzLjQ3LDQuOTUgMi4wMyw3LjggMiwxMEMyLjI3LDEwIDMuMzUsMTAgMy4zNSwxMEMzLjM1LDEwIDQuMjUsNS44OCA3LjA3LDUuODhDOS44OSw1Ljg4IDUuNTQsMjEuODcgNS41NCwyMS44N0g4LjQ1QzguNDUsMjEuODcgOS45NSwxNy41OSAxMC43LDEyLjgxTDEzLjA5LDEyLjhDMTIuOTUsMTQuMDQgMTIuOTEsMTUuNCAxMi45MywxNi42N0MxMy4wNCwyMy41NiAxNy4wNiwyMi4wOCAxOC44NiwyMC41QzIwLjY3LDE4LjkyIDIyLDE1LjU4IDIyLDE0SDIwLjYxQzIwLjYyLDE0LjEyIDE5LjczLDE4LjEyIDE2LjkxLDE4LjEyVjE4LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh2YWMgPSBcIk04LjU4IDE0QzguMyAxMy41NSA4LjExIDEzLjAzIDguMDYgMTIuNUgxNS45NEMxNS44OSAxMy4wMyAxNS43IDEzLjU1IDE1LjQ3IDE0SDguNThNMTIgMTZDMTAuOTcgMTYgMTAuMDggMTUuNjEgOS4zOCAxNUgxNC42M0MxMy45MiAxNS42MSAxMy4wMyAxNiAxMiAxNk0xMiA4QzEzLjAzIDggMTMuOTIgOC4zOSAxNC42MyA5SDkuMzhDMTAuMDggOC4zOSAxMC45NyA4IDEyIDhNOC41OCAxMEgxNS40MkMxNS43IDEwLjQ1IDE1Ljg5IDEwLjk3IDE1Ljk0IDExLjVIOC4wNkM4LjExIDEwLjk3IDguMyAxMC40NSA4LjU4IDEwTTMgM1YyMUgyMVYzSDNNMTIgMThDOC42NyAxOCA2IDE1LjMzIDYgMTJTOC42NyA2IDEyIDYgMTggOC42NyAxOCAxMiAxNS4zMyAxOCAxMiAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdmFjT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuODlWMjFIMTkuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMThDOC42NyAxOCA2IDE1LjMzIDYgMTJDNiAxMC44MiA2LjM0IDkuNzMgNi45MiA4LjgxTDguNDMgMTAuMzJDOC4yNCAxMC42OSA4LjEgMTEuMDkgOC4wNiAxMS41SDkuNjFMMTAuNjEgMTIuNUg4LjA2QzguMTEgMTMuMDMgOC4zIDEzLjU1IDguNTggMTRIMTIuMTFMMTMuMTEgMTVIOS4zOEMxMC4wOCAxNS42MSAxMC45NyAxNiAxMiAxNkMxMi42MyAxNiAxMy4xOSAxNS44NCAxMy43IDE1LjU5TDE1LjE5IDE3LjA4QzE0LjI3IDE3LjY2IDEzLjE4IDE4IDEyIDE4TTEyIDhDMTMuMDMgOCAxMy45MiA4LjM5IDE0LjYzIDlIMTIuMkwxMS4yNyA4LjA3QzExLjUgOC4wMyAxMS43NSA4IDEyIDhNOS42NyA2LjQ3TDYuMiAzSDIxVjE3LjhMMTcuNTMgMTQuMzNDMTcuODMgMTMuNjIgMTggMTIuODMgMTggMTJDMTggOC42NyAxNS4zMyA2IDEyIDZDMTEuMTcgNiAxMC4zOCA2LjE3IDkuNjcgNi40N00xNS45NCAxMS41SDE0LjdMMTMuMiAxMEgxNS40MkMxNS43IDEwLjQ1IDE1Ljg5IDEwLjk3IDE1Ljk0IDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcmF1bGljT2lsTGV2ZWwgPSBcIk0xNSAxOEMxMy4zNCAxOCAxMiAxNi42NiAxMiAxNUMxMiAxMyAxNSA5LjYzIDE1IDkuNjNTMTggMTMgMTggMTVDMTggMTYuNjYgMTYuNjYgMTggMTUgMThNMjAgNFYyMEgxMFY0SDhWMjBDOCAyMS4xMSA4Ljg5IDIyIDEwIDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjRIMjBNMiAxOUw3IDE0TDIgOVYxOU0xNiA2VjJIMTRWNkgxMVY4SDE5VjZIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcmF1bGljT2lsVGVtcGVyYXR1cmUgPSBcIk05IDE4QzcuMzQgMTggNiAxNi42NiA2IDE1QzYgMTMgOSA5LjYzIDkgOS42M1MxMiAxMyAxMiAxNUMxMiAxNi42NiAxMC42NiAxOCA5IDE4TTE0IDRWMjBINFY0SDJWMjBDMiAyMS4xMSAyLjg5IDIyIDQgMjJIMTRDMTUuMTEgMjIgMTYgMjEuMTEgMTYgMjBWNEgxNE0xMCA2VjJIOFY2SDVWOEgxM1Y2SDEwTTIxIDE3LjVWNS41QzIxIDQuNjcgMjAuMzMgNCAxOS41IDRTMTggNC42NyAxOCA1LjVWMTcuNUMxNy4zNyAxNy45NyAxNyAxOC43MSAxNyAxOS41QzE3IDIwLjg4IDE4LjEyIDIyIDE5LjUgMjJTMjIgMjAuODggMjIgMTkuNUMyMiAxOC43MSAyMS42MyAxOCAyMSAxNy41TTIwIDEzSDE5VjZIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcm9Qb3dlciA9IFwiTTE3LjEyIDMuNTVBMiAyIDAgMCAwIDE1LjIgNC45NUwxNC40IDcuNUEzIDMgMCAwIDAgMTMuMzMgNy43NEwxMS41IDUuNzdMMTAuMTcgNC4yOUEyIDIgMCAwIDAgMTAuMDUgNy4xMkwxMS44NiA5LjA5QTMgMyAwIDAgMCAxMS42NCA5LjZBMyAzIDAgMCAwIDExLjUzIDEwLjEzTDguOTIgMTAuNzFMNi45NiAxMS4xNUEyIDIgMCAwIDAgOS4zNSAxMi42N0wxMS45NiAxMi4wOEEzIDMgMCAwIDAgMTIuNyAxMi44OUwxMS45IDE1LjQ0TDExLjMgMTcuMzVBMiAyIDAgMCAwIDEzLjggMTYuMDRMMTQuNjEgMTMuNUEzIDMgMCAwIDAgMTUuNjggMTMuMjZMMTcuNSAxNS4yM0wxOC44MyAxNi43QTIgMiAwIDAgMCAxOC45NiAxMy44OEwxNy4xNSAxMS45MUEzIDMgMCAwIDAgMTcuMzYgMTEuNEEzIDMgMCAwIDAgMTcuNSAxMC44NkwyMC4wOSAxMC4yOEwyMi4wNCA5Ljg1QTIgMiAwIDAgMCAxOS42NiA4LjMzTDE3LjA1IDguOTFBMyAzIDAgMCAwIDE2LjMxIDguMTFMMTcuMTEgNS41NUwxNy43MSAzLjY1QTIgMiAwIDAgMCAxNy4xMiAzLjU1TTE0LjU2IDlBMS41IDEuNSAwIDAgMSAxNC45NSA5LjA3QTEuNSAxLjUgMCAwIDEgMTUuOTMgMTAuOTVBMS41IDEuNSAwIDAgMSAxNC4wNSAxMS45M0ExLjUgMS41IDAgMCAxIDEzLjA3IDEwLjA1QTEuNSAxLjUgMCAwIDEgMTQuNTUgOU04IDEzLjY3QzYuNzggMTQuNTMgNS4zOSAxNSA0IDE1SDJWMTdINEM1LjM3IDE3IDYuNzQgMTYuNjUgOCAxNkM4Ljc3IDE2LjQgOS41OCAxNi42NiAxMC40MSAxNi44MUwxMC45NCAxNS4xNEwxMS4wMyAxNC44OEM5Ljk3IDE0LjczIDguOTMgMTQuMzIgOCAxMy42N00yMC40NSAxNUMyMC41IDE1LjcgMjAuMzMgMTYuNDEgMTkuOTEgMTdDMTkuOTMgMTcgMTkuOTcgMTcgMjAgMTdIMjJWMTVIMjAuNDVNOCAxNy42N0M2Ljc4IDE4LjUzIDUuMzkgMTkgNCAxOUgyVjIxSDRDNS4zNyAyMSA2Ljc0IDIwLjY1IDggMjBDMTAuNSAyMS4zIDEzLjUgMjEuMyAxNiAyMEMxNy4yNiAyMC42NSAxOC42MiAyMSAyMCAyMUgyMlYxOUgyMEMxOC42MSAxOSAxNy4yMiAxOC41MyAxNiAxNy42N0MxMy41NiAxOS4zOCAxMC40NCAxOS4zOCA4IDE3LjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUljZUNyZWFtID0gXCJNMTcuNSA2LjA1QzE3LjI1IDMuMjIgMTQuODkgMSAxMiAxUzYuNzUgMy4yMiA2LjUgNi4wNUM1LjA5IDYuMjggNCA3LjUgNCA5QzQgMTAuNjYgNS4zNCAxMiA3IDEyTDEyIDIyTDE3IDEyQzE4LjY2IDEyIDIwIDEwLjY2IDIwIDlDMjAgNy41IDE4LjkxIDYuMjggMTcuNSA2LjA1TTEyIDE3LjUzTDguODkgMTEuMzFDOC45NSAxMS4yNiA5IDExLjIxIDkuMDggMTEuMTZDOS45MyAxMS42OSAxMC45MyAxMiAxMiAxMlMxNC4wNyAxMS42OSAxNC45MiAxMS4xNkMxNSAxMS4yMSAxNS4wNSAxMS4yNiAxNS4xMSAxMS4zMUwxMiAxNy41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlJY2VDcmVhbU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNC45NSA2Ljg0QzQuMzcgNy4zOCA0IDguMTQgNCA5QzQgMTAuNjYgNS4zNCAxMiA3IDEyTDEyIDIyTDE0LjcgMTYuNTlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMTcuNTNMOC44OSAxMS4zMUM4Ljk1IDExLjI2IDkgMTEuMjEgOS4wOCAxMS4xNkM5LjIxIDExLjI0IDkuMzUgMTEuMyA5LjUgMTEuMzdMMTMuMjEgMTUuMUwxMiAxNy41M003LjE1IDMuOTVDOC4wNyAyLjIgOS44OSAxIDEyIDFDMTQuODkgMSAxNy4yNSAzLjIyIDE3LjUgNi4wNUMxOC45MSA2LjI4IDIwIDcuNSAyMCA5QzIwIDEwLjY2IDE4LjY2IDEyIDE3IDEyTDE2LjQgMTMuMkw3LjE1IDMuOTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWNlUG9wID0gXCJNMTguMTUgMTQuOTZMOS45NSAxOC42NUw1Ljg1IDkuNjVDNy4yMSA5LjEzIDguMTIgNy44MiA4LjE1IDYuMzZDOC4xNCA1IDcuMzYgMy43NiA2LjE1IDMuMTVDNi41NCAyLjggNyAyLjUgNy40NSAyLjI1QzkuNzEgMS4yNSAxMi4zNyAyLjIzIDEzLjQ1IDQuNDZNMTMuMTUgMTguMzZMMTQuNzUgMjEuODZMMTcuNDUgMjAuNjVMMTUuODUgMTcuMTVcIjtcclxuZXhwb3J0IHZhciBtZGlJZENhcmQgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjg5IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0TTQgNkgyMFYxMEg0VjZNNCAxMkg4VjE0SDRWMTJNMTAgMTJIMjBWMTRIMTBWMTJNNCAxNkgxNFYxOEg0VjE2TTE2IDE2SDIwVjE4SDE2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlkZW50aWZpZXIgPSBcIk0xMCA3VjlIOVYxNUgxMFYxN0g2VjE1SDdWOUg2VjdIMTBNMTYgN0MxNy4xMSA3IDE4IDcuOSAxOCA5VjE1QzE4IDE2LjExIDE3LjExIDE3IDE2IDE3SDEyVjdNMTYgOUgxNFYxNUgxNlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlkZW9ncmFtQ2prID0gXCJNMTEgNFY2SDRWMTBINlY4SDE4VjEwSDIwVjZIMTNWNE04IDEwVjEySDEzLjU5TDExLjU5IDE0SDRWMTZIMTFWMThIMTBWMjBIMTNWMTZIMjBWMTRIMTQuMjFMMTYgMTIuMjFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWRlb2dyYW1DamtWYXJpYW50ID0gXCJNMTEgNFY2SDRWOEgxNS4zNkMxNS4xMyA4Ljg3IDE0LjYzIDkuNzcgMTMuODggMTAuNjlDMTMuMzUgMTEuMzUgMTIuNzEgMTIgMTIgMTIuNjdDMTEuMjkgMTIgMTAuNjUgMTEuMzUgMTAuMTIgMTAuNjlDOS42NSAxMC4xMiA5LjMgOS41NSA5LjAzIDlINi44NUM3LjIxIDEwLjA1IDcuODIgMTEuMDMgOC41NiAxMS45NUM5LjEzIDEyLjY2IDkuNzkgMTMuMzQgMTAuNSAxNEw1LjM2IDE4LjIzTDYuNjQgMTkuNzdMMTIgMTUuMzRMMTcuMzYgMTkuNzdMMTguNjQgMTguMjNMMTMuNSAxNEMxNC4yMSAxMy4zNCAxNC44NyAxMi42NiAxNS40NCAxMS45NUMxNi40MSAxMC43NCAxNy4xNiA5LjQzIDE3LjQgOEgyMFY2SDEzVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lID0gXCJNMjEsMkgzQTIsMiAwIDAsMCAxLDRWMjBBMiwyIDAgMCwwIDMsMjJIMjFBMiwyIDAgMCwwIDIzLDIwVjRBMiwyIDAgMCwwIDIxLDJNMTEsMTcuNUw5LjUsMTlMNSwxNC41TDkuNSwxMEwxMSwxMS41TDgsMTQuNUwxMSwxNy41TTE0LjUsMTlMMTMsMTcuNUwxNiwxNC41TDEzLDExLjVMMTQuNSwxMEwxOSwxNC41TDE0LjUsMTlNMjEsN0gzVjRIMjFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVBcnJheSA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMCAxMUg4VjE4SDEwVjIwSDZWOUgxMFYxMU0xOCAyMEgxNFYxOEgxNlYxMUgxNFY5SDE4VjIwTTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lQXJyYXlPdXRsaW5lID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTIxIDIwSDNWNkgyMVYyME02IDhWMThIMTBWMTZIOFYxMEgxMFY4SDZNMTYgMTZIMTRWMThIMThWOEgxNFYxMEgxNlYxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUlmcmFtZUJyYWNlcyA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMSAxMUg5VjEyLjVDOSAxMy42IDguMSAxNC41IDcgMTQuNUM4LjEgMTQuNSA5IDE1LjQgOSAxNi41VjE4SDExVjIwSDlDNy45IDIwIDcgMTkuMSA3IDE4VjE3LjVDNyAxNi40IDYuMSAxNS41IDUgMTUuNVYxMy41QzYuMSAxMy41IDcgMTIuNiA3IDExLjVWMTFDNyA5LjkgNy45IDkgOSA5SDExVjExTTE5IDE1LjVDMTcuOSAxNS41IDE3IDE2LjQgMTcgMTcuNVYxOEMxNyAxOS4xIDE2LjEgMjAgMTUgMjBIMTNWMThIMTVWMTYuNUMxNSAxNS40IDE1LjkgMTQuNSAxNyAxNC41QzE1LjkgMTQuNSAxNSAxMy42IDE1IDEyLjVWMTFIMTNWOUgxNUMxNi4xIDkgMTcgOS45IDE3IDExVjExLjVDMTcgMTIuNiAxNy45IDEzLjUgMTkgMTMuNVYxNS41TTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lQnJhY2VzT3V0bGluZSA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0yMSAyMEgzVjZIMjFWMjBNOSA4QzcuOSA4IDcgOC45IDcgMTBDNyAxMS4xIDYuMSAxMiA1IDEyVjE0QzYuMSAxNCA3IDE0LjkgNyAxNkM3IDE3LjEgNy45IDE4IDkgMThIMTFWMTZIOVYxNUM5IDEzLjkgOC4xIDEzIDcgMTNDOC4xIDEzIDkgMTIuMSA5IDExVjEwSDExVjhNMTUgOEMxNi4xIDggMTcgOC45IDE3IDEwQzE3IDExLjEgMTcuOSAxMiAxOSAxMlYxNEMxNy45IDE0IDE3IDE0LjkgMTcgMTZDMTcgMTcuMSAxNi4xIDE4IDE1IDE4SDEzVjE2SDE1VjE1QzE1IDEzLjkgMTUuOSAxMyAxNyAxM0MxNS45IDEzIDE1IDEyLjEgMTUgMTFWMTBIMTNWOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVPdXRsaW5lID0gXCJNOS41LDguNUwxMSwxMEw4LDEzTDExLDE2TDkuNSwxNy41TDUsMTNMOS41LDguNU0xNC41LDE3LjVMMTMsMTZMMTYsMTNMMTMsMTBMMTQuNSw4LjVMMTksMTNMMTQuNSwxNy41TTIxLDJIM0EyLDIgMCAwLDAgMSw0VjIwQTIsMiAwIDAsMCAzLDIySDIxQTIsMiAwIDAsMCAyMywyMFY0QTIsMiAwIDAsMCAyMSwyTTIxLDIwSDNWNkgyMVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVQYXJlbnRoZXNlcyA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMCAxOS40TDguNCAyMEM2LjkgMTguNiA2IDE2LjYgNiAxNC41UzYuOSAxMC40IDguNCA5TDEwIDkuNkM4LjcgMTAuNyA4IDEyLjYgOCAxNC41UzguNyAxOC4yIDEwIDE5LjRNMTUuNiAyMEwxNCAxOS40QzE1LjMgMTguMiAxNiAxNi40IDE2IDE0LjVTMTUuMyAxMC44IDE0IDkuNkwxNS42IDlDMTcuMSAxMC40IDE4IDEyLjQgMTggMTQuNUMxOCAxNi42IDE3LjEgMTguNiAxNS42IDIwTTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lUGFyZW50aGVzZXNPdXRsaW5lID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTIxIDIwSDNWNkgyMVYyME0xNS42IDhDMTcuMSA5LjMgMTggMTEuMSAxOCAxM0MxOCAxNC45IDE3LjEgMTYuNyAxNS42IDE4TDE0IDE3LjRDMTUuMyAxNi40IDE2IDE0LjcgMTYgMTNTMTUuMyA5LjYgMTQgOC42TDE1LjYgOE04LjQgOEwxMCA4LjZDOC43IDkuNiA4IDExLjMgOCAxM1M4LjcgMTYuNCAxMCAxNy40TDguNCAxOEM2LjkgMTYuNyA2IDE0LjkgNiAxM1M2LjkgOS4zIDguNCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlmcmFtZVZhcmlhYmxlID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTcuNCAyMEM1LjkgMTguNiA1IDE2LjYgNSAxNC41UzUuOSAxMC40IDcuNCA5TDkgOS42QzcuNyAxMC43IDcgMTIuNiA3IDE0LjVTNy43IDE4LjIgOSAxOS40TDcuNCAyME0xMi43IDE4TDExLjkgMTZMMTAuNSAxOEg5TDExLjMgMTQuOUwxMCAxMkgxMS4zTDEyLjEgMTRMMTMuNSAxMkgxNUwxMi44IDE1TDE0LjEgMThIMTIuN00xNi42IDIwTDE1IDE5LjRDMTYuMyAxOC4yIDE3IDE2LjQgMTcgMTQuNVMxNi4zIDEwLjggMTUgOS42TDE2LjYgOUMxOC4xIDEwLjQgMTkgMTIuNCAxOSAxNC41QzE5IDE2LjYgMTguMSAxOC42IDE2LjYgMjBNMjEgN0gzVjRIMjFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVWYXJpYWJsZU91dGxpbmUgPSBcIk0yMSAySDNDMS45IDIgMSAyLjkgMSA0VjIwQzEgMjEuMSAxLjkgMjIgMyAyMkgyMUMyMi4xIDIyIDIzIDIxLjEgMjMgMjBWNEMyMyAyLjkgMjIuMSAyIDIxIDJNMjEgMjBIM1Y2SDIxVjIwTTE2LjYgOEMxOC4xIDkuMyAxOSAxMS4xIDE5IDEzQzE5IDE0LjkgMTguMSAxNi43IDE2LjYgMThMMTUgMTcuNEMxNi4zIDE2LjQgMTcgMTQuNyAxNyAxM1MxNi4zIDkuNiAxNSA4LjZMMTYuNiA4TTcuNCA4TDkgOC42QzcuNyA5LjYgNyAxMS4zIDcgMTNTNy43IDE2LjQgOSAxNy40TDcuNCAxOEM1LjkgMTYuNyA1IDE0LjkgNSAxM1M1LjkgOS4zIDcuNCA4TTEyLjEgMTJMMTMuNSAxMEgxNUwxMi44IDEzTDE0LjEgMTZIMTIuOEwxMiAxNEwxMC42IDE2SDlMMTEuMyAxMi45TDEwIDEwSDExLjNMMTIuMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZSA9IFwiTTguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxOSwxOEg1TTIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQWxidW0gPSBcIk02LDE5TDksMTUuMTRMMTEuMTQsMTcuNzJMMTQuMTQsMTMuODZMMTgsMTlINk02LDRIMTFWMTJMOC41LDEwLjVMNiwxMk0xOCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWNEEyLDIgMCAwLDAgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUFyZWEgPSBcIk0yMCw1QTIsMiAwIDAsMSAyMiw3VjE3QTIsMiAwIDAsMSAyMCwxOUg0QzIuODksMTkgMiwxOC4xIDIsMTdWN0MyLDUuODkgMi44OSw1IDQsNUgyME01LDE2SDE5TDE0LjUsMTBMMTEsMTQuNUw4LjUsMTEuNUw1LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQXJlYUNsb3NlID0gXCJNMTIsMjNMOCwxOUgxNkwxMiwyM00yMCwzQTIsMiAwIDAsMSAyMiw1VjE1QTIsMiAwIDAsMSAyMCwxN0g0QTIsMiAwIDAsMSAyLDE1VjVBMiwyIDAgMCwxIDQsM0gyME01LDE0SDE5TDE0LjUsOEwxMSwxMi41TDguNSw5LjVMNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUF1dG9BZGp1c3QgPSBcIk0xOSAxMFYxOUg1VjVIMTRWM0g1QzMuOTIgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOTIgMjEgNSAyMUgxOUMyMC4xMiAyMSAyMSAyMC4xIDIxIDE5VjEwSDE5TTE3IDEwTDE3Ljk0IDcuOTRMMjAgN0wxNy45NCA2LjA2TDE3IDRMMTYuMDYgNi4wNkwxNCA3TDE2LjA2IDcuOTRMMTcgMTBNMTMuMjUgMTAuNzVMMTIgOEwxMC43NSAxMC43NUw4IDEyTDEwLjc1IDEzLjI1TDEyIDE2TDEzLjI1IDEzLjI1TDE2IDEyTDEzLjI1IDEwLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQnJva2VuID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxMUgxOVYxM0gxOUwxNywxM1YxNUgxNVYxN0gxM1YxOUgxMVYyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxOUwxNSwyMVYxOUgxN1YxN0gxOVYxNUgyMU0xOSw4LjVBMC41LDAuNSAwIDAsMCAxOC41LDhINS41QTAuNSwwLjUgMCAwLDAgNSw4LjVWMTUuNUEwLjUsMC41IDAgMCwwIDUuNSwxNkgxMVYxNUgxM1YxM0gxNVYxMUgxN1Y5SDE5VjguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUJyb2tlblZhcmlhbnQgPSBcIk0yMSw1VjExLjU5TDE4LDguNThMMTQsMTIuNTlMMTAsOC41OUw2LDEyLjU5TDMsOS41OFY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVNMTgsMTEuNDJMMjEsMTQuNDNWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTIuNDJMNiwxNS40MUwxMCwxMS40MUwxNCwxNS40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRWRpdCA9IFwiTTIyLjcgMTQuM0wyMS43IDE1LjNMMTkuNyAxMy4zTDIwLjcgMTIuM0MyMC44IDEyLjIgMjAuOSAxMi4xIDIxLjEgMTIuMUMyMS4yIDEyLjEgMjEuNCAxMi4yIDIxLjUgMTIuM0wyMi44IDEzLjZDMjIuOSAxMy44IDIyLjkgMTQuMSAyMi43IDE0LjNNMTMgMTkuOVYyMkgxNS4xTDIxLjIgMTUuOUwxOS4yIDEzLjlMMTMgMTkuOU0yMSA1QzIxIDMuOSAyMC4xIDMgMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTFWMTkuMUwxMi4xIDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjEgMTQuMUwyMSA5LjFWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUVkaXRPdXRsaW5lID0gXCJNMjIuNyAxNC4zTDIxLjcgMTUuM0wxOS43IDEzLjNMMjAuNyAxMi4zQzIwLjggMTIuMiAyMC45IDEyLjEgMjEuMSAxMi4xQzIxLjIgMTIuMSAyMS40IDEyLjIgMjEuNSAxMi4zTDIyLjggMTMuNkMyMi45IDEzLjggMjIuOSAxNC4xIDIyLjcgMTQuM00xMyAxOS45VjIySDE1LjFMMjEuMiAxNS45TDE5LjIgMTMuOUwxMyAxOS45TTExLjIxIDE1LjgzTDkuMjUgMTMuNDdMNi41IDE3SDEzLjEyTDE1LjY2IDE0LjU1TDEzLjk2IDEyLjI5TDExLjIxIDE1LjgzTTExIDE5LjlWMTkuMDVMMTEuMDUgMTlINVY1SDE5VjExLjMxTDIxIDkuMzhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTFWMTkuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckJsYWNrV2hpdGUgPSBcIk0xOSwxOUwxMiwxMVYxOUg1TDEyLDExVjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJDZW50ZXJGb2N1cyA9IFwiTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOSwxOUgxNVYyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTVIMTlNMTksM0gxNVY1SDE5VjlIMjFWNUEyLDIgMCAwLDAgMTksM001LDVIOVYzSDVBMiwyIDAgMCwwIDMsNVY5SDVNNSwxNUgzVjE5QTIsMiAwIDAsMCA1LDIxSDlWMTlINVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckNlbnRlckZvY3VzU3Ryb25nID0gXCJNMTIgOEM4LjQ0IDggNi42NSAxMi4zMSA5LjE3IDE0LjgzQzExLjY5IDE3LjM1IDE2IDE1LjU2IDE2IDEyQzE2IDkuNzkgMTQuMjEgOCAxMiA4TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1TTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTE5IDE5SDE1VjIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNUgxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyQ2VudGVyRm9jdXNTdHJvbmdPdXRsaW5lID0gXCJNMTcgMTJDMTcgNy41NSAxMS42MiA1LjMxIDguNDYgOC40NkM1LjMxIDExLjYxIDcuNTUgMTcgMTIgMTdDMTQuNzYgMTcgMTcgMTQuNzYgMTcgMTJNMTIgMTVDOS4zMyAxNSA4IDExLjc3IDkuODggOS44OEMxMS43NyA4IDE1IDkuMzMgMTUgMTJDMTUgMTMuNjYgMTMuNjYgMTUgMTIgMTVNNSAxNUgzVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVNNSA1SDlWM0g1QzMuOSAzIDMgMy45IDMgNVY5SDVNMTkgM0gxNVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5XCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJDZW50ZXJGb2N1c1dlYWsgPSBcIk01LDE1SDNWMTlBMiwyIDAgMCwwIDUsMjFIOVYxOUg1TTUsNUg5VjNINUEyLDIgMCAwLDAgMyw1VjlINU0xOSwzSDE1VjVIMTlWOUgyMVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDE1VjIxSDE5QTIsMiAwIDAsMCAyMSwxOVYxNUgxOU0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhNMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyRHJhbWEgPSBcIk0xOSwxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwQTQsNCAwIDAsMSAxMCwxNEgxMkMxMiwxMS4yNCAxMC4xNCw4LjkyIDcuNiw4LjIyQzguNjEsNi44OCAxMC4yLDYgMTIsNkMxNS4wMyw2IDE3LjUsOC40NyAxNy41LDExLjVWMTJIMTlBMywzIDAgMCwxIDIyLDE1QTMsMyAwIDAsMSAxOSwxOE0xOS4zNSwxMC4wNEMxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42MSw1LjY0IDUuMzYsOC4wNEMyLjM1LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyRnJhbWVzID0gXCJNMTgsOEg2VjE4SDE4TTIwLDIwSDRWNkg4LjVMMTIuMDQsMi41TDE1LjUsNkgyME0yMCw0SDE2TDEyLDBMOCw0SDRBMiwyIDAgMCwwIDIsNlYyMEEyLDIgMCAwLDAgNCwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWNkEyLDIgMCAwLDAgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckhkciA9IFwiTTE0LDZMMTAuMjUsMTFMMTMuMSwxNC44TDExLjUsMTZDOS44MSwxMy43NSA3LDEwIDcsMTBMMSwxOEgyM0wxNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyTm9uZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJUaWx0U2hpZnQgPSBcIk01LjY4LDE5Ljc0QzcuMTYsMjAuOTUgOSwyMS43NSAxMSwyMS45NVYxOS45M0M5LjU0LDE5Ljc1IDguMjEsMTkuMTcgNy4xLDE4LjMxTTEzLDE5LjkzVjIxLjk1QzE1LDIxLjc1IDE2Ljg0LDIwLjk1IDE4LjMyLDE5Ljc0TDE2Ljg5LDE4LjMxQzE1Ljc5LDE5LjE3IDE0LjQ2LDE5Ljc1IDEzLDE5LjkzTTE4LjMxLDE2LjlMMTkuNzQsMTguMzNDMjAuOTUsMTYuODUgMjEuNzUsMTUgMjEuOTUsMTNIMTkuOTNDMTkuNzUsMTQuNDYgMTkuMTcsMTUuNzkgMTguMzEsMTYuOU0xNSwxMkEzLDMgMCAwLDAgMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyTTQuMDcsMTNIMi4wNUMyLjI1LDE1IDMuMDUsMTYuODQgNC4yNiwxOC4zMkw1LjY5LDE2Ljg5QzQuODMsMTUuNzkgNC4yNSwxNC40NiA0LjA3LDEzTTUuNjksNy4xTDQuMjYsNS42OEMzLjA1LDcuMTYgMi4yNSw5IDIuMDUsMTFINC4wN0M0LjI1LDkuNTQgNC44Myw4LjIxIDUuNjksNy4xTTE5LjkzLDExSDIxLjk1QzIxLjc1LDkgMjAuOTUsNy4xNiAxOS43NCw1LjY4TDE4LjMxLDcuMUMxOS4xNyw4LjIxIDE5Ljc1LDkuNTQgMTkuOTMsMTFNMTguMzIsNC4yNkMxNi44NCwzLjA1IDE1LDIuMjUgMTMsMi4wNVY0LjA3QzE0LjQ2LDQuMjUgMTUuNzksNC44MyAxNi45LDUuNjlNMTEsNC4wN1YyLjA1QzksMi4yNSA3LjE2LDMuMDUgNS42OCw0LjI2TDcuMSw1LjY5QzguMjEsNC44MyA5LjU0LDQuMjUgMTEsNC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlclZpbnRhZ2UgPSBcIk0xMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2TTE4LjcsMTIuNEMxOC40MiwxMi4yNCAxOC4xMywxMi4xMSAxNy44NCwxMkMxOC4xMywxMS44OSAxOC40MiwxMS43NiAxOC43LDExLjZDMjAuNjIsMTAuNSAyMS42OSw4LjUgMjEuNyw2LjQxQzE5LjkxLDUuMzggMTcuNjMsNS4zIDE1LjcsNi40MUMxNS40Miw2LjU3IDE1LjE2LDYuNzYgMTQuOTIsNi45NUMxNC45Nyw2LjY0IDE1LDYuMzIgMTUsNkMxNSwzLjc4IDEzLjc5LDEuODUgMTIsMC44MUMxMC4yMSwxLjg1IDksMy43OCA5LDZDOSw2LjMyIDkuMDMsNi42NCA5LjA4LDYuOTVDOC44NCw2Ljc1IDguNTgsNi41NiA4LjMsNi40QzYuMzgsNS4yOSA0LjEsNS4zNyAyLjMsNi40QzIuMyw4LjQ3IDMuMzcsMTAuNSA1LjMsMTEuNTlDNS41OCwxMS43NSA1Ljg3LDExLjg4IDYuMTYsMTJDNS44NywxMi4xIDUuNTgsMTIuMjMgNS4zLDEyLjM5QzMuMzgsMTMuNSAyLjMxLDE1LjUgMi4zLDE3LjU4QzQuMDksMTguNjEgNi4zNywxOC42OSA4LjMsMTcuNThDOC41OCwxNy40MiA4Ljg0LDE3LjIzIDkuMDgsMTcuMDRDOS4wMywxNy4zNiA5LDE3LjY4IDksMThDOSwyMC4yMiAxMC4yMSwyMi4xNSAxMiwyMy4xOUMxMy43OSwyMi4xNSAxNSwyMC4yMiAxNSwxOEMxNSwxNy42OCAxNC45NywxNy4zNiAxNC45MiwxNy4wNUMxNS4xNiwxNy4yNSAxNS40MiwxNy40MyAxNS43LDE3LjU5QzE3LjYyLDE4LjcgMTkuOSwxOC42MiAyMS43LDE3LjU5QzIxLjY5LDE1LjUgMjAuNjIsMTMuNSAxOC43LDEyLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGcmFtZSA9IFwiTTEwLDE0LjI5TDYuNSwxOUgxNy40NkwxNC43NSwxNS40NkwxMi43OCwxNy44TDEwLDE0LjI5TTUsMjFWN0gxOC45NlYyMUg1TTEyLDIuNEwxNC42MSw1LjAzSDkuMzdMMTIsMi40TTUsNS4wM0M0LjUsNS4wMyA0LDUuMjIgMy42MSw1LjYxQzMuMiw2IDMsNi40NiAzLDdWMjFDMywyMS41IDMuMiwyMiAzLjYxLDIyLjM5QzQsMjIuOCA0LjUsMjMgNSwyM0gxOC45NkMxOS41LDIzIDE5Ljk2LDIyLjggMjAuMzcsMjIuMzlDMjAuNzcsMjIgMjEsMjEuNSAyMSwyMVY3QzIxLDYuNDYgMjAuNzcsNiAyMC4zNyw1LjYxQzE5Ljk2LDUuMjIgMTkuNSw1LjAzIDE4Ljk2LDUuMDNIMTZMMTIsMUw3Ljk2LDUuMDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU1pbnVzID0gXCJNNSAzQzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE0LjA5QzE0LjAzIDIwLjY3IDE0IDIwLjM0IDE0IDIwQzE0IDE5LjMyIDE0LjEyIDE4LjY0IDE0LjM1IDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjczIDE0Ljk3QzE3LjcgMTQuMzQgMTguODQgMTQgMjAgMTRDMjAuMzQgMTQgMjAuNjcgMTQuMDMgMjEgMTQuMDlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzSDVNMTYgMTlWMjFIMjRWMTlIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VNb3ZlID0gXCJNMTUsM0gxOVYwTDI0LDVMMTksMTBWN0gxNVYzTTIxLDExLjk0VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxMi4wNkMxMiwzLjMzIDEyLDMuNjcgMTIsNEE4LDggMCAwLDAgMjAsMTJDMjAuMzMsMTIgMjAuNjcsMTIgMjEsMTEuOTRNMTksMThMMTQuNSwxMkwxMSwxNi41TDguNSwxMy41TDUsMThIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VNdWx0aXBsZSA9IFwiTTIyLDE2VjRBMiwyIDAgMCwwIDIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNk0xMSwxMkwxMy4wMywxNC43MUwxNiwxMUwyMCwxNkg4TTIsNlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU11bHRpcGxlT3V0bGluZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzTTE1Ljk2LDEwLjI5TDEzLjIxLDEzLjgzTDExLjI1LDExLjQ3TDguNSwxNUgxOS41TDE1Ljk2LDEwLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlT2ZmID0gXCJNMjEgMTcuMkw2LjggM0gxOUMyMC4xIDMgMjEgMy45IDIxIDVWMTcuMk0yMC43IDIyTDE5LjcgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWNC4zTDIgMy4zTDMuMyAyTDIyIDIwLjdMMjAuNyAyMk0xNi44IDE4TDEyLjkgMTQuMUwxMSAxNi41TDguNSAxMy41TDUgMThIMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU9mZk91dGxpbmUgPSBcIk0yMiAyMC43TDMuMyAyTDIgMy4zTDMgNC4zVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOS43TDIwLjcgMjJMMjIgMjAuN001IDE5VjYuM0wxMi42IDEzLjlMMTEuMSAxNS44TDkgMTMuMUw2IDE3SDE1LjdMMTcuNyAxOUg1TTguOCA1TDYuOCAzSDE5QzIwLjEgMyAyMSAzLjkgMjEgNVYxNy4yTDE5IDE1LjJWNUg4LjhcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMuOTYsMTIuMjlMMTEuMjEsMTUuODNMOS4yNSwxMy40N0w2LjUsMTdIMTcuNUwxMy45NiwxMi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVBsdXMgPSBcIk01LDNBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxNC4wOUMxNC4wMywyMC42NyAxNCwyMC4zNCAxNCwyMEMxNCwxOS4zMiAxNC4xMiwxOC42NCAxNC4zNSwxOEg1TDguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxNi43MywxNC45N0MxNy43LDE0LjM0IDE4Ljg0LDE0IDIwLDE0QzIwLjM0LDE0IDIwLjY3LDE0LjAzIDIxLDE0LjA5VjVDMjEsMy44OSAyMC4xLDMgMTksM0g1TTE5LDE2VjE5SDE2VjIxSDE5VjI0SDIxVjIxSDI0VjE5SDIxVjE2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlUmVtb3ZlID0gXCJNNSAzQzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE0LjA5QzE0LjAzIDIwLjY3IDE0IDIwLjM0IDE0IDIwQzE0IDE5LjMyIDE0LjEyIDE4LjY0IDE0LjM1IDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjczIDE0Ljk3QzE3LjcgMTQuMzQgMTguODQgMTQgMjAgMTRDMjAuMzQgMTQgMjAuNjcgMTQuMDMgMjEgMTQuMDlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzSDVNMTYuNDcgMTcuODhMMTguNTkgMjBMMTYuNDcgMjIuMTJMMTcuODggMjMuNTRMMjAgMjEuNDFMMjIuMTIgMjMuNTRMMjMuNTQgMjIuMTJMMjEuNDEgMjBMMjMuNTQgMTcuODhMMjIuMTIgMTYuNDZMMjAgMTguNTlMMTcuODggMTYuNDdMMTYuNDYgMTcuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTZWFyY2ggPSBcIk0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMjEgMTkuMzEsOC45TDIyLjM5LDEyTDIxLDEzLjM5TDE3Ljg4LDEwLjMyQzE3LjE5LDEwLjc1IDE2LjM3LDExIDE1LjUsMTFDMTMsMTEgMTEsOSAxMSw2LjVDMTEsNCAxMywyIDE1LjUsMk0xNS41LDRBMi41LDIuNSAwIDAsMCAxMyw2LjVBMi41LDIuNSAwIDAsMCAxNS41LDlBMi41LDIuNSAwIDAsMCAxOCw2LjVBMi41LDIuNSAwIDAsMCAxNS41LDRNNy41LDE0LjVMNCwxOUgxOEwxMy41LDEzTDEwLDE3LjVMNy41LDE0LjVNMjAsMjBBMiwyIDAgMCwxIDE4LDIySDRBMiwyIDAgMCwxIDIsMjBWNkEyLDIgMCAwLDEgNCw0SDkuNUM5LjE4LDQuNzcgOSw1LjYxIDksNi41QTYuNSw2LjUgMCAwLDAgMTUuNSwxM0MxNi4xOCwxMyAxNi44NCwxMi44OSAxNy40NiwxMi43TDIwLDE1LjI0VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlU2VhcmNoT3V0bGluZSA9IFwiTTE1LjUsOUMxNi4yLDkgMTYuNzksOC43NiAxNy4yNyw4LjI3QzE3Ljc2LDcuNzkgMTgsNy4yIDE4LDYuNUMxOCw1LjgzIDE3Ljc2LDUuMjMgMTcuMjcsNC43M0MxNi43OSw0LjIzIDE2LjIsNCAxNS41LDRDMTQuODMsNCAxNC4yMyw0LjIzIDEzLjczLDQuNzNDMTMuMjMsNS4yMyAxMyw1LjgzIDEzLDYuNUMxMyw3LjIgMTMuMjMsNy43OSAxMy43Myw4LjI3QzE0LjIzLDguNzYgMTQuODMsOSAxNS41LDlNMTkuMzEsOC45MUwyMi40MSwxMkwyMSwxMy40MUwxNy44NiwxMC4zMUMxNy4wOCwxMC43OCAxNi4yOCwxMSAxNS40NywxMUMxNC4yMiwxMSAxMy4xNiwxMC41OCAxMi4zLDkuN0MxMS40NSw4LjgzIDExLDcuNzcgMTEsNi41QzExLDUuMjcgMTEuNDUsNC4yIDEyLjMzLDMuMzNDMTMuMiwyLjQ1IDE0LjI3LDIgMTUuNSwyQzE2Ljc3LDIgMTcuODMsMi40NSAxOC43LDMuMzNDMTkuNTgsNC4yIDIwLDUuMjcgMjAsNi41QzIwLDcuMzMgMTkuNzgsOC4xMyAxOS4zMSw4LjkxTTE2LjUsMThINS41TDguMjUsMTQuNUwxMC4yMiwxNi44M0wxMi45NCwxMy4zMUwxNi41LDE4TTE4LDEzTDIwLDE1VjIwQzIwLDIwLjU1IDE5LjgxLDIxIDE5LjQxLDIxLjRDMTksMjEuNzkgMTguNTMsMjIgMTgsMjJINEMzLjQ1LDIyIDMsMjEuNzkgMi42LDIxLjRDMi4yMSwyMSAyLDIwLjU1IDIsMjBWNkMyLDUuNDcgMi4yMSw1IDIuNiw0LjU5QzMsNC4xOSAzLjQ1LDQgNCw0SDkuNUM5LjIsNC42NCA5LjAzLDUuMzEgOSw2SDRWMjBIMThWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTaXplU2VsZWN0QWN0dWFsID0gXCJNMjEsM0gzQzIsMyAxLDQgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQzIyLDIxIDIzLDIwIDIzLDE5VjVDMjMsNCAyMiwzIDIxLDNNNSwxN0w4LjUsMTIuNUwxMSwxNS41TDE0LjUsMTFMMTksMTdINVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVNpemVTZWxlY3RMYXJnZSA9IFwiTTIxLDE1SDIzVjE3SDIxVjE1TTIxLDExSDIzVjEzSDIxVjExTTIzLDE5SDIxVjIxQzIyLDIxIDIzLDIwIDIzLDE5TTEzLDNIMTVWNUgxM1YzTTIxLDdIMjNWOUgyMVY3TTIxLDNWNUgyM0MyMyw0IDIyLDMgMjEsM00xLDdIM1Y5SDFWN00xNywzSDE5VjVIMTdWM00xNywxOUgxOVYyMUgxN1YxOU0zLDNDMiwzIDEsNCAxLDVIM1YzTTksM0gxMVY1SDlWM001LDNIN1Y1SDVWM00xLDExVjE5QTIsMiAwIDAsMCAzLDIxSDE1VjExSDFNMywxOUw1LjUsMTUuNzlMNy4yOSwxNy45NEw5Ljc5LDE0LjcyTDEzLDE5SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTaXplU2VsZWN0U21hbGwgPSBcIk0yMywxNUgyMVYxN0gyM1YxNU0yMywxMUgyMVYxM0gyM1YxMU0yMywxOUgyMVYyMUMyMiwyMSAyMywyMCAyMywxOU0xNSwzSDEzVjVIMTVWM00yMyw3SDIxVjlIMjNWN00yMSwzVjVIMjNDMjMsNCAyMiwzIDIxLDNNMywyMUgxMVYxNUgxVjE5QTIsMiAwIDAsMCAzLDIxTTMsN0gxVjlIM1Y3TTE1LDE5SDEzVjIxSDE1VjE5TTE5LDNIMTdWNUgxOVYzTTE5LDE5SDE3VjIxSDE5VjE5TTMsM0MyLDMgMSw0IDEsNUgzVjNNMywxMUgxVjEzSDNWMTFNMTEsM0g5VjVIMTFWM003LDNINVY1SDdWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVRleHQgPSBcIk0yMiAxM0gxNFYxMUgyMlYxM00yMiA3SDE0VjlIMjJWN00xNCAxN0gyMlYxNUgxNFYxN00xMiA5VjE1QzEyIDE2LjEgMTEuMSAxNyAxMCAxN0g0QzIuOSAxNyAyIDE2LjEgMiAxNVY5QzIgNy45IDIuOSA3IDQgN0gxMEMxMS4xIDcgMTIgNy45IDEyIDlNMTAuNSAxNUw4LjMgMTJMNi41IDE0LjNMNS4zIDEyLjhMMy41IDE1SDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1wb3J0ID0gXCJNMTQsMTJMMTAsOFYxMUgyVjEzSDEwVjE2TTIwLDE4VjZDMjAsNC44OSAxOS4xLDQgMTgsNEg2QTIsMiAwIDAsMCA0LDZWOUg2VjZIMThWMThINlYxNUg0VjE4QTIsMiAwIDAsMCA2LDIwSDE4QTIsMiAwIDAsMCAyMCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveCA9IFwiTTE5LDE1SDE1QTMsMyAwIDAsMSAxMiwxOEEzLDMgMCAwLDEgOSwxNUg1VjVIMTlNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hBcnJvd0Rvd24gPSBcIk0xNiwxMEgxNFY3SDEwVjEwSDhMMTIsMTRNMTksMTVIMTVBMywzIDAgMCwxIDEyLDE4QTMsMyAwIDAsMSA5LDE1SDVWNUgxOU0xOSwzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEFycm93RG93bk91dGxpbmUgPSBcIk0xOSAzSDVBMiAyIDAgMCAwIDMgNVYxOUEyIDIgMCAwIDAgNSAyMUgxOUEyIDIgMCAwIDAgMjEgMTlWNUEyIDIgMCAwIDAgMTkgM001IDE5VjE3SDguMTNBNC4xMyA0LjEzIDAgMCAwIDkuNCAxOU0xOSAxOUgxNC42QTQuMTMgNC4xMyAwIDAgMCAxNS44NyAxN0gxOU0xOSAxNUgxNFYxNkEyIDIgMCAwIDEgMTAgMTZWMTVINVY1SDE5TTE2IDEwSDE0VjdIMTBWMTBIOEwxMiAxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94QXJyb3dVcCA9IFwiTTE0LDE0SDEwVjExSDhMMTIsN0wxNiwxMUgxNFYxNE0xNiwxMU01LDE1VjVIMTlWMTVIMTVBMywzIDAgMCwxIDEyLDE4QTMsMyAwIDAsMSA5LDE1SDVNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEFycm93VXBPdXRsaW5lID0gXCJNMTkgM0g1QTIgMiAwIDAgMCAzIDVWMTlBMiAyIDAgMCAwIDUgMjFIMTlBMiAyIDAgMCAwIDIxIDE5VjVBMiAyIDAgMCAwIDE5IDNNNSAxOVYxN0g4LjEzQTQuMTMgNC4xMyAwIDAgMCA5LjQgMTlNMTkgMTlIMTQuNkE0LjEzIDQuMTMgMCAwIDAgMTUuODcgMTdIMTlNMTkgMTVIMTRWMTZBMiAyIDAgMCAxIDEwIDE2VjE1SDVWNUgxOU04IDExSDEwVjE0SDE0VjExSDE2TDEyIDdcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEZ1bGwgPSBcIk0xOSAxNVY1SDVWMTVIOUM5IDE2LjY2IDEwLjM0IDE4IDEyIDE4QzEzLjY2IDE4IDE1IDE2LjY2IDE1IDE1SDE5TTE5IDNDMjAuMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjEgMjAuMSAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlMMyA1QzMgMy45IDMuODkgMyA1IDNIMTlNNyAxM1YxMUgxN1YxM0g3TTcgOVY3SDE3VjlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEZ1bGxPdXRsaW5lID0gXCJNMTkgM0MyMC4xIDMgMjEgMy45IDIxIDVWMTlDMjEgMjAuMSAyMC4xIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDE5TTUgMTlIOS40QzguNzkgMTguNDcgOC4zNSAxNy43OCA4LjEzIDE3SDVWMTlNMTkgMTlWMTdIMTUuODdDMTUuNjUgMTcuNzggMTUuMjEgMTguNDcgMTQuNiAxOUgxOU0xOSAxNVY1SDVWMTVIMTBWMTZDMTAgMTguNjcgMTQgMTguNjcgMTQgMTZWMTVIMTlNNyA3SDE3VjlIN1Y3TTE3IDExVjEzSDdWMTFIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hNdWx0aXBsZSA9IFwiTTE5LDhWNUg1VjhIOUEzLDMgMCAwLDAgMTIsMTFBMywzIDAgMCwwIDE1LDhIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxMkEyLDIgMCAwLDEgMTksMTRINUEyLDIgMCAwLDEgMywxMlY1QTIsMiAwIDAsMSA1LDNIMTlNMywxNUg5QTMsMyAwIDAsMCAxMiwxOEEzLDMgMCAwLDAgMTUsMTVIMjFWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hNdWx0aXBsZU91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjEyQTIsMiAwIDAsMSAxOSwxNEg1QTIsMiAwIDAsMSAzLDEyVjVBMiwyIDAgMCwxIDUsM0gxOU01LDEwVjEySDkuNEM4LjgsMTEuNDcgOC4zNCwxMC43OCA4LjEzLDEwSDVNMTksMTJWMTBIMTUuODdDMTUuNjYsMTAuNzggMTUuMiwxMS40NyAxNC42LDEySDE5TTE5LDhWNUg1VjhIMTBWOUMxMCwxMC4wNyAxMC45MywxMSAxMiwxMUMxMy4wNywxMSAxNCwxMC4wNyAxNCw5VjhIMTlNMjEsMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTVIMTBWMTZDMTAsMTcuMDcgMTAuOTMsMTggMTIsMThDMTMuMDcsMTggMTQsMTcuMDcgMTQsMTZWMTVIMjFWMTlNNSwxN1YxOUg5LjRDOC44LDE4LjQ3IDguMzQsMTcuNzggOC4xMywxN0g1TTE5LDE5VjE3SDE1Ljg3QzE1LjY2LDE3Ljc4IDE1LjIsMTguNDcgMTQuNiwxOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveE91dGxpbmUgPSBcIk0xOSAzSDVBMiAyIDAgMCAwIDMgNVYxOUEyIDIgMCAwIDAgNSAyMUgxOUEyIDIgMCAwIDAgMjEgMTlWNUEyIDIgMCAwIDAgMTkgM001IDE5VjE3SDguMTNBNC4xMyA0LjEzIDAgMCAwIDkuNCAxOU0xOSAxOUgxNC42QTQuMTMgNC4xMyAwIDAgMCAxNS44NyAxN0gxOU0xOSAxNUgxNFYxNkEyIDIgMCAwIDEgMTAgMTZWMTVINVY1SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94UmVtb3ZlID0gXCJNMTkgMTVIMTVDMTUgMTYuNyAxMy43IDE4IDEyIDE4UzkgMTYuNyA5IDE1SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTQuMSA2LjVMMTUuNSA3LjlMMTMuNCAxMEwxNS41IDEyLjFMMTQuMSAxMy41TDEyIDExLjRMOS45IDEzLjVMOC41IDEyLjFMMTAuNiAxMEw4LjUgNy45TDkuOSA2LjVMMTIgOC42TDE0LjEgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94UmVtb3ZlT3V0bGluZSA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM001IDE5VjE3SDguMUM4LjMgMTcuOCA4LjggMTguNSA5LjQgMTlNMTkgMTlIMTQuNkMxNS4yIDE4LjUgMTUuNyAxNy44IDE1LjkgMTdIMTlNMTkgMTVIMTRWMTZDMTQgMTcuMSAxMy4xIDE4IDEyIDE4UzEwIDE3LjEgMTAgMTZWMTVINVY1SDE5VjE1TTE0LjEgNi41TDE1LjUgNy45TDEzLjQgMTBMMTUuNSAxMi4xTDE0LjEgMTMuNUwxMiAxMS40TDkuOSAxMy41TDguNSAxMi4xTDEwLjYgMTBMOC41IDcuOUw5LjkgNi41TDEyIDguNkwxNC4xIDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG8gPSBcIk0xNy4wNiAxM0MxNS4yIDEzIDEzLjY0IDE0LjMzIDEzLjI0IDE2LjFDMTIuMjkgMTUuNjkgMTEuNDIgMTUuOCAxMC43NiAxNi4wOUMxMC4zNSAxNC4zMSA4Ljc5IDEzIDYuOTQgMTNDNC43NyAxMyAzIDE0Ljc5IDMgMTdDMyAxOS4yMSA0Ljc3IDIxIDYuOTQgMjFDOSAyMSAxMC42OCAxOS4zOCAxMC44NCAxNy4zMkMxMS4xOCAxNy4wOCAxMi4wNyAxNi42MyAxMy4xNiAxNy4zNEMxMy4zNCAxOS4zOSAxNSAyMSAxNy4wNiAyMUMxOS4yMyAyMSAyMSAxOS4yMSAyMSAxN0MyMSAxNC43OSAxOS4yMyAxMyAxNy4wNiAxM002Ljk0IDE5Ljg2QzUuMzggMTkuODYgNC4xMyAxOC41OCA0LjEzIDE3UzUuMzkgMTQuMTQgNi45NCAxNC4xNEM4LjUgMTQuMTQgOS43NSAxNS40MiA5Ljc1IDE3UzguNSAxOS44NiA2Ljk0IDE5Ljg2TTE3LjA2IDE5Ljg2QzE1LjUgMTkuODYgMTQuMjUgMTguNTggMTQuMjUgMTdTMTUuNSAxNC4xNCAxNy4wNiAxNC4xNEMxOC42MiAxNC4xNCAxOS44OCAxNS40MiAxOS44OCAxN1MxOC42MSAxOS44NiAxNy4wNiAxOS44Nk0yMiAxMC41SDJWMTJIMjJWMTAuNU0xNS41MyAyLjYzQzE1LjMxIDIuMTQgMTQuNzUgMS44OCAxNC4yMiAyLjA1TDEyIDIuNzlMOS43NyAyLjA1TDkuNzIgMi4wNEM5LjE5IDEuODkgOC42MyAyLjE3IDguNDMgMi42OEw2IDlIMThMMTUuNTYgMi42OEwxNS41MyAyLjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluY29nbml0b0NpcmNsZSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyIDIgMTcuNSAyIDEyIDYuNSAyIDEyIDJNMTQuOTIgMTIuODFDMTMuODQgMTIuODEgMTIuOTUgMTMuNTYgMTIuNzEgMTQuNTZDMTIuMTcgMTQuMzMgMTEuNjYgMTQuMzkgMTEuMjkgMTQuNTVDMTEuMDUgMTMuNTUgMTAuMTUgMTIuODEgOS4wOCAxMi44MUM3LjgzIDEyLjgxIDYuODIgMTMuODIgNi44MiAxNS4wN0M2LjgyIDE2LjMyIDcuODMgMTcuMzMgOS4wOCAxNy4zM0MxMC4yOCAxNy4zMyAxMS4yNCAxNi40MiAxMS4zMyAxNS4yNUMxMS41MyAxNS4xMiAxMi4wNCAxNC44NiAxMi42NyAxNS4yNkMxMi43NyAxNi40MiAxMy43MyAxNy4zMyAxNC45MiAxNy4zM0MxNi4xNyAxNy4zMyAxNy4xOCAxNi4zMiAxNy4xOCAxNS4wN0MxNy4xOCAxMy44MiAxNi4xNyAxMi44MSAxNC45MiAxMi44MU05LjA4IDEzLjQ1QzEwIDEzLjQ1IDEwLjcgMTQuMTggMTAuNyAxNS4wN0MxMC43IDE1Ljk2IDEwIDE2LjY5IDkuMDggMTYuNjlDOC4xOSAxNi42OSA3LjQ2IDE1Ljk2IDcuNDYgMTUuMDdDNy40NiAxNC4xOCA4LjE5IDEzLjQ1IDkuMDggMTMuNDVNMTQuOTIgMTMuNDVDMTUuODEgMTMuNDUgMTYuNTQgMTQuMTggMTYuNTQgMTUuMDdDMTYuNTQgMTUuOTYgMTUuODEgMTYuNjkgMTQuOTIgMTYuNjlDMTQgMTYuNjkgMTMuMyAxNS45NiAxMy4zIDE1LjA3QzEzLjMgMTQuMTggMTQgMTMuNDUgMTQuOTIgMTMuNDVNMTcuODMgMTEuNUg2LjE3VjEyLjE3SDE3LjgzVjExLjVNMTQuMTUgNi44OUMxNCA2LjU5IDEzLjY3IDYuNDMgMTMuMzUgNi41M0wxMiA3TDEwLjY1IDYuNTNMMTAuNjEgNi41QzEwLjI5IDYuNDMgOS45NSA2LjYxIDkuODQgNi45Mkw4LjM2IDEwLjgzSDE1LjY0TDE0LjE2IDYuOTJMMTQuMTUgNi44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG9DaXJjbGVPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQuMDYgNS45NUMyLjc3IDcuNjMgMiA5LjcyIDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNC4yOCAyMiAxNi4zNyAyMS4yMyAxOC4wNSAxOS45NEwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk04Ljk0IDEwLjgzSDguMzZMOC41IDEwLjQxTDguOTQgMTAuODNNNi4xNyAxMS41SDkuNjFMMTAuMjggMTIuMTdINi4xN1YxMS41TTE0LjkyIDE3LjMzQzEzLjczIDE3LjMzIDEyLjc3IDE2LjQyIDEyLjY3IDE1LjI2QzEyLjA0IDE0Ljg2IDExLjUzIDE1LjEyIDExLjMzIDE1LjI1QzExLjI0IDE2LjQyIDEwLjI4IDE3LjMzIDkuMDggMTcuMzNDNy44MyAxNy4zMyA2LjgyIDE2LjMyIDYuODIgMTUuMDdDNi44MiAxMy44MiA3LjgzIDEyLjgxIDkuMDggMTIuODFDMTAuMTUgMTIuODEgMTEuMDUgMTMuNTUgMTEuMjkgMTQuNTVDMTEuNjUgMTQuNCAxMi4xMyAxNC4zNCAxMi42NSAxNC41NEwxMy4zMSAxNS4yQzEzLjM3IDE2IDE0IDE2LjYxIDE0Ljc4IDE2LjY3TDE1LjM4IDE3LjI3QzE1LjIzIDE3LjMgMTUuMDggMTcuMzMgMTQuOTIgMTcuMzNNOS45NCA2Ljc0TDYuNzIgMy41QzguMjUgMi41NiAxMC4wNiAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45NCAyMS40NCAxNS43NSAyMC41IDE3LjI4TDE1LjM3IDEyLjE3SDE3LjgzVjExLjVIMTQuN0wxNC4wMyAxMC44M0gxNS42NEwxNC4xNiA2LjkyTDE0LjE1IDYuODlDMTQgNi41OSAxMy42NyA2LjQzIDEzLjM1IDYuNTNMMTIgN0wxMC42NSA2LjUzTDEwLjYxIDYuNUMxMC4zNiA2LjQ1IDEwLjEgNi41NSA5Ljk0IDYuNzRNMTAuNyAxNS4wN0MxMC43IDE1Ljk2IDEwIDE2LjY5IDkuMDggMTYuNjlDOC4xOSAxNi42OSA3LjQ2IDE1Ljk2IDcuNDYgMTUuMDdTOC4xOSAxMy40NSA5LjA4IDEzLjQ1QzEwIDEzLjQ1IDEwLjcgMTQuMTggMTAuNyAxNS4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG9PZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYuMzEgOC4yTDYgOUg3LjExTDguNjEgMTAuNUgyVjEySDEwLjExTDEzLjUgMTUuMzdDMTMuMzggMTUuNjEgMTMuMyAxNS44NSAxMy4yNCAxNi4xQzEyLjI5IDE1LjY5IDExLjQxIDE1LjggMTAuNzYgMTYuMDlDMTAuMzUgMTQuMzEgOC43OSAxMyA2Ljk0IDEzQzQuNzcgMTMgMyAxNC43OSAzIDE3QzMgMTkuMjEgNC43NyAyMSA2Ljk0IDIxQzkgMjEgMTAuNjggMTkuMzggMTAuODQgMTcuMzJDMTEuMTggMTcuMDggMTIuMDcgMTYuNjMgMTMuMTYgMTcuMzRDMTMuMzQgMTkuMzkgMTUgMjEgMTcuMDYgMjFDMTcuNjYgMjEgMTguMjIgMjAuODYgMTguNzIgMjAuNjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNi45NCAxOS44NkM1LjM4IDE5Ljg2IDQuMTMgMTguNTggNC4xMyAxN0M0LjEzIDE1LjQyIDUuMzkgMTQuMTQgNi45NCAxNC4xNEM4LjUgMTQuMTQgOS43NSAxNS40MiA5Ljc1IDE3QzkuNzUgMTguNTggOC41IDE5Ljg2IDYuOTQgMTkuODZNMTcuMDYgMTkuODZDMTUuNSAxOS44NiAxNC4yNSAxOC41OCAxNC4yNSAxN0MxNC4yNSAxNi43NCAxNC4yOSAxNi41IDE0LjM2IDE2LjI1TDE3Ljg0IDE5LjczQzE3LjU5IDE5LjgxIDE3LjM0IDE5Ljg2IDE3LjA2IDE5Ljg2TTIyIDEySDE1LjJMMTMuNyAxMC41SDIyVjEyTTE3LjA2IDEzQzE5LjIzIDEzIDIxIDE0Ljc5IDIxIDE3QzIxIDE3LjI1IDIwLjk3IDE3LjUgMjAuOTMgMTcuNzNMMTkuODQgMTYuNjRDMTkuNjggMTUuMzQgMTguNjYgMTQuMzIgMTcuMzggMTQuMTdMMTYuMjkgMTMuMDlDMTYuNTQgMTMuMDMgMTYuOCAxMyAxNy4wNiAxM00xMi4yIDlMNy43MiA0LjVMOC40MyAyLjY4QzguNjMgMi4xNyA5LjE5IDEuODkgOS43MiAyLjA0TDkuNzcgMi4wNUwxMiAyLjc5TDE0LjIyIDIuMDVDMTQuNzUgMS44OCAxNS4zMiAyLjE0IDE1LjU0IDIuNjNMMTUuNTYgMi42OEwxOCA5SDEyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5maW5pdHkgPSBcIk0xOC42LDYuNjJDMjEuNTgsNi42MiAyNCw5IDI0LDEyQzI0LDE0Ljk2IDIxLjU4LDE3LjM3IDE4LjYsMTcuMzdDMTcuMTUsMTcuMzcgMTUuOCwxNi44MSAxNC43OCwxNS44TDEyLDEzLjM0TDkuMTcsMTUuODVDOC4yLDE2LjgyIDYuODQsMTcuMzggNS40LDE3LjM4QzIuNDIsMTcuMzggMCwxNC45NiAwLDEyQzAsOS4wNCAyLjQyLDYuNjIgNS40LDYuNjJDNi44NCw2LjYyIDguMiw3LjE4IDkuMjIsOC4yTDEyLDEwLjY2TDE0LjgzLDguMTVDMTUuOCw3LjE4IDE3LjE2LDYuNjIgMTguNiw2LjYyTTcuOCwxNC4zOUwxMC41LDEyTDcuODQsOS42NUM3LjE2LDguOTcgNi4zMSw4LjYyIDUuNCw4LjYyQzMuNTMsOC42MiAyLDEwLjEzIDIsMTJDMiwxMy44NyAzLjUzLDE1LjM4IDUuNCwxNS4zOEM2LjMxLDE1LjM4IDcuMTYsMTUuMDMgNy44LDE0LjM5TTE2LjIsOS42MUwxMy41LDEyTDE2LjE2LDE0LjM1QzE2Ljg0LDE1LjAzIDE3LjcsMTUuMzggMTguNiwxNS4zOEMyMC40NywxNS4zOCAyMiwxMy44NyAyMiwxMkMyMiwxMC4xMyAyMC40Nyw4LjYyIDE4LjYsOC42MkMxNy42OSw4LjYyIDE2Ljg0LDguOTcgMTYuMiw5LjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uID0gXCJNMTMsOUgxMVY3SDEzTTEzLDE3SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uT3V0bGluZSA9IFwiTTExLDlIMTNWN0gxMU0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTExLDE3SDEzVjExSDExVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uVmFyaWFudCA9IFwiTTEzLjUsNEExLjUsMS41IDAgMCwwIDEyLDUuNUExLjUsMS41IDAgMCwwIDEzLjUsN0ExLjUsMS41IDAgMCwwIDE1LDUuNUExLjUsMS41IDAgMCwwIDEzLjUsNE0xMy4xNCw4Ljc3QzExLjk1LDguODcgOC43LDExLjQ2IDguNywxMS40NkM4LjUsMTEuNjEgOC41NiwxMS42IDguNzIsMTEuODhDOC44OCwxMi4xNSA4Ljg2LDEyLjE3IDkuMDUsMTIuMDRDOS4yNSwxMS45MSA5LjU4LDExLjcgMTAuMTMsMTEuMzZDMTIuMjUsMTAgMTAuNDcsMTMuMTQgOS41NiwxOC40M0M5LjIsMjEuMDUgMTEuNTYsMTkuNyAxMi4xNywxOS4zQzEyLjc3LDE4LjkxIDE0LjM4LDE3LjggMTQuNTQsMTcuNjlDMTQuNzYsMTcuNTQgMTQuNiwxNy40MiAxNC40MywxNy4xN0MxNC4zMSwxNyAxNC4xOSwxNy4xMiAxNC4xOSwxNy4xMkMxMy41NCwxNy41NSAxMi4zNSwxOC40NSAxMi4xOSwxNy44OEMxMiwxNy4zMSAxMy4yMiwxMy40IDEzLjg5LDEwLjcxQzE0LDEwLjA3IDE0LjMsOC42NyAxMy4xNCw4Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluc3RhZ3JhbSA9IFwiTTcuOCwySDE2LjJDMTkuNCwyIDIyLDQuNiAyMiw3LjhWMTYuMkE1LjgsNS44IDAgMCwxIDE2LjIsMjJINy44QzQuNiwyMiAyLDE5LjQgMiwxNi4yVjcuOEE1LjgsNS44IDAgMCwxIDcuOCwyTTcuNiw0QTMuNiwzLjYgMCAwLDAgNCw3LjZWMTYuNEM0LDE4LjM5IDUuNjEsMjAgNy42LDIwSDE2LjRBMy42LDMuNiAwIDAsMCAyMCwxNi40VjcuNkMyMCw1LjYxIDE4LjM5LDQgMTYuNCw0SDcuNk0xNy4yNSw1LjVBMS4yNSwxLjI1IDAgMCwxIDE4LjUsNi43NUExLjI1LDEuMjUgMCAwLDEgMTcuMjUsOEExLjI1LDEuMjUgMCAwLDEgMTYsNi43NUExLjI1LDEuMjUgMCAwLDEgMTcuMjUsNS41TTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5zdHJ1bWVudFRyaWFuZ2xlID0gXCJNMTEuNSAySDEwLjVWNi4yQzEwLjQgNi4zIDEwLjMgNi4zIDEwLjIgNi41TDIuMSAyMC43QzEuOCAyMS4zIDIuMiAyMiAyLjkgMjJIMTZWMjBINC44TDExIDkuMkwxNi43IDE5LjJMMTguNCAxOC4yTDExLjggNi40TDExLjUgNi4xVjJNMjEgNkgyMFYxOEwxOS41IDIySDIxLjVMMjEgMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbnZlcnRDb2xvcnMgPSBcIk0xMiwxOS41OFYxOS41OEMxMC40LDE5LjU4IDguODksMTguOTYgNy43NiwxNy44M0M2LjYyLDE2LjY5IDYsMTUuMTkgNiwxMy41OEM2LDEyIDYuNjIsMTAuNDcgNy43Niw5LjM0TDEyLDUuMU0xNy42Niw3LjkzTDEyLDIuMjdWMi4yN0w2LjM0LDcuOTNDMy4yMiwxMS4wNSAzLjIyLDE2LjEyIDYuMzQsMTkuMjRDNy45LDIwLjggOS45NSwyMS41OCAxMiwyMS41OEMxNC4wNSwyMS41OCAxNi4xLDIwLjggMTcuNjYsMTkuMjRDMjAuNzgsMTYuMTIgMjAuNzgsMTEuMDUgMTcuNjYsNy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbnZlcnRDb2xvcnNPZmYgPSBcIk0yMC42NSwyMC44N0wxOC4zLDE4LjVMMTIsMTIuMjNMOC40NCw4LjY2TDcsNy4yNUw0LjI3LDQuNUwzLDUuNzdMNS43OCw4LjU1QzMuMjMsMTEuNjkgMy40MiwxNi4zMSA2LjM0LDE5LjI0QzcuOSwyMC44IDkuOTUsMjEuNTggMTIsMjEuNThDMTMuNzksMjEuNTggMTUuNTcsMjEgMTcuMDMsMTkuOEwxOS43MywyMi41TDIxLDIxLjIzTDIwLjY1LDIwLjg3TTEyLDE5LjU5QzEwLjQsMTkuNTkgOC44OSwxOC45NyA3Ljc2LDE3LjgzQzYuNjIsMTYuNjkgNiwxNS4xOSA2LDEzLjU5QzYsMTIuMjcgNi40MywxMSA3LjIxLDEwTDEyLDE0Ljc3VjE5LjU5TTEyLDUuMVY5LjY4TDE5LjI1LDE2Ljk0QzIwLjYyLDE0IDIwLjA5LDEwLjM3IDE3LjY1LDcuOTNMMTIsMi4yN0w4LjMsNS45N0w5LjcxLDcuMzhMMTIsNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUlvYnJva2VyID0gXCJNMTIgMkMxMS41IDIgMTEgMi4wNCAxMC41IDIuMTFWNC44NUMxMSA0Ljc1IDExLjUgNC43IDEyIDQuN0MxMi41IDQuNyAxMyA0Ljc1IDEzLjUgNC44NVYyLjEyQzEzIDIuMDQgMTIuNSAyIDEyIDJNOS44MiAyLjI1QzUuNCAzLjI1IDIuMTEgNy4yNCAyLjExIDEyQzIuMTEgMTcuNSA2LjUzIDIyIDEyIDIyQzE3LjQ3IDIyIDIxLjg5IDE3LjUgMjEuODkgMTJDMjEuODkgNy4yNCAxOC42IDMuMjUgMTQuMTkgMi4yNVY1LjAzQzE3LjE3IDUuOTYgMTkuMzQgOC43MyAxOS4zNCAxMkMxOS4zNCAxNiAxNi4wNSAxOS4zIDEyIDE5LjNDNy45NiAxOS4zIDQuNjcgMTYgNC42NyAxMkM0LjY3IDguNzMgNi44NCA1Ljk2IDkuODIgNS4wM00xMiA1LjQ1QzExLjUgNS40NSAxMSA1LjUgMTAuNSA1LjYyVjE4LjI3QzExIDE4LjM4IDExLjUgMTguNDQgMTIgMTguNDRDMTIuNSAxOC40NCAxMyAxOC4zOSAxMy41IDE4LjI3VjUuNjJDMTMgNS41IDEyLjUgNS40NSAxMiA1LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlwID0gXCJNMTYsMTFIMTRWOUgxNlYxMU0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNMTAsN0g4VjE3SDEwVjdNMTIsMTdIMTRWMTNIMTZBMiwyIDAgMCwwIDE4LDExVjlBMiwyIDAgMCwwIDE2LDdIMTJWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXBOZXR3b3JrID0gXCJNMTUsOUgxM1Y3SDE1VjlNMjIsMjBWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0EyLDIgMCAwLDEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdBMiwyIDAgMCwxIDE5LDVWMTVBMiwyIDAgMCwxIDE3LDE3SDEzVjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMk05LDVIN1YxNUg5VjVNMTEsMTVIMTNWMTFIMTVBMiwyIDAgMCwwIDE3LDlWN0EyLDIgMCAwLDAgMTUsNUgxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJcE5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xMCw2SDhWMTRIMTBWNk0xNCw2SDExVjE0SDEzVjEySDE0QTIsMiAwIDAsMCAxNiwxMFY4QTIsMiAwIDAsMCAxNCw2TTE0LDEwSDEzVjhIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXBvZCA9IFwiTTcsMkEyLDIgMCAwLDAgNSw0VjIwQTIsMiAwIDAsMCA3LDIySDE3QTIsMiAwIDAsMCAxOSwyMFY0QTIsMiAwIDAsMCAxNywySDdNNyw0SDE3VjEwSDdWNE0xMiwxMkE0LDQgMCAwLDEgMTYsMTZBNCw0IDAgMCwxIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMk0xMiwxNEEyLDIgMCAwLDAgMTAsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwxNkEyLDIgMCAwLDAgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXNsYW0gPSBcIk0xMi4zLDJDMTIuMiwyIDEyLjEsMiAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTUsMjIgMTYuNywyMSAxOC41LDE5LjVDMTMsMjEgOCwxNyA4LDEyQzgsNyAxMywzIDE4LjUsNC41QzE2Ljg2LDIuODYgMTQuNjIsMS45NiAxMi4zLDJNMTYuOCw2LjJMMTUuMyw5LjdMMTEuNiwxMEwxNC41LDEyLjVMMTMuNiwxNkwxNi44LDE0TDIwLDE2TDE5LDEyLjVMMjIsMTBMMTguMyw5LjdMMTYuOCw2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXNsYW5kID0gXCJNMjAgMjBDMTguNjEgMjAgMTcuMjIgMTkuNTMgMTYgMTguNjdDMTMuNTYgMjAuMzggMTAuNDQgMjAuMzggOCAxOC42N0M2Ljc4IDE5LjUzIDUuMzkgMjAgNCAyMEgyVjIySDRDNS4zNyAyMiA2Ljc0IDIxLjY1IDggMjFDMTAuNSAyMi4zIDEzLjUgMjIuMyAxNiAyMUMxNy4yNiAyMS42NSAxOC42MiAyMiAyMCAyMkgyMlYyMEgyME0yMC43OCAxOUgyMEMxOC44MiAxOSAxNy42NCAxOC42IDE2LjU4IDE3Ljg1TDE2IDE3LjQ1TDE1LjQyIDE3Ljg1QzE0LjM5IDE4LjU3IDEzLjIxIDE4Ljk1IDEyIDE4Ljk1QzEwLjc3IDE4Ljk1IDkuNTkgMTguNTcgOC41NiAxNy44NUw4IDE3LjQ1TDcuNDMgMTcuODVDNi4zNiAxOC42IDUuMTggMTkgNCAxOUgzLjIyQzMuNzUgMTcuNTQgNS41OCAxNSAxMiAxNUMxNCAxNSAxNSAxNS4yNCAxNSAxNS4yNEMxNS42OCAxMy44NyAxNi44MyAxMC43NyAxNiA2LjgyTDE3LjA2IDcuNTNDMTcuMzkgOC45NiAxOCAxMS43NSAxNi44IDE1LjY1QzE5LjQzIDE2LjUgMjAuNDIgMTggMjAuNzggMTlNMjIgNy41OUMyMS4yMSA2LjUgMjAgNS43MSAxOC41OCA1LjUzQzE4LjcgNS42NyAxOC44MSA1LjgzIDE4LjkyIDZDMjAuMTIgNy45MSAxOS44NyAxMC4zMiAxOC40NyAxMS45NUMxOS4wNiAxMC41IDE5IDguNzkgMTguMDggNy4zNkMxOCA3LjI4IDE3Ljk2IDcuMiAxNy45IDcuMTFDMTcuNSA2LjUzIDE2Ljk2IDYuMDYgMTYuMzggNS43MkMxNC4zNSA2LjM3IDEyLjg4IDguMjcgMTIuODggMTAuNUMxMi44OCAxMS4wMyAxMi45NiAxMS41MyAxMy4xIDEyQzEyLjUgMTEuMTcgMTIuMTYgMTAuMTcgMTIuMTYgOS4wN0MxMi4xNiA3LjQxIDEyLjk2IDUuOTUgMTQuMiA1LjAzQzEzLjE2IDQuOTUgMTIuMDkgNS4xOCAxMS4xNCA1Ljc4QzEwLjcgNi4wNSAxMC4zMiA2LjM4IDEwIDYuNzZDMTAuMzkgNS44MiAxMS4wNSA1IDEyIDQuNEMxMy4wNCAzLjc0IDE0LjI1IDMuNSAxNS4zOSAzLjY5QzE1LjEgMy4yOSAxNC43NSAyLjkyIDE0LjMzIDIuNkMxMy45MiAyLjI5IDEzLjQ3IDIuMDUgMTMgMS44OEMxNCAxLjkxIDE1LjA0IDIuMjQgMTUuOTEgMi44OUMxNi4zNSAzLjIyIDE2LjcgMy42MiAxNyA0LjA1QzE3LjA2IDQuMDUgMTcuMTIgNC4wNCAxNy4xOSA0LjA0QzE5LjQ1IDQuMDQgMjEuMzcgNS41MyAyMiA3LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUl2QmFnID0gXCJNMTQgMUgxMEM1IDEgNSAzIDUgM1YxNUM1IDE1IDUgMTcgMTAgMTdWMTlIMTFWMjBDMTEgMjEuMjEgMTEuOCAyMyAxNCAyM0gxOFYyMUgxNEMxMy4xOSAyMSAxMyAyMC40NSAxMyAyMFYxOUgxNFYxN0MxOSAxNyAxOSAxNSAxOSAxNVYzQzE5IDMgMTkgMSAxNCAxTTE3IDEySDE0VjExSDE3VjEyTTE3IDVIMTRWNkgxN1Y4SDE0VjlIMTdWMTBIN1YzLjVDNy4zIDMuMzIgOC4xMyAzIDEwIDNIMTRDMTUuODggMyAxNi43IDMuMzIgMTcgMy41VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmFiYmVyID0gXCJNNS4yMyw1LjcyQzQuNjEsNS41NSA1LDMuMTkgNSwzLjE3QzUsMy4xOSAxMi41OCwtMC43MSAxNi43LDUuNzNDMjAuOCwxMi4xNSAxNS44NiwxNC44NiAxMy45NywxNi4wNkMxMi4wOCwxNy4yNyAxMi43MywxOS43MiAxMi43MywyMC4xM0MxMi43MywyMC41MyAxMi4xNiwyMC45NyAxMiwyMC40MUMxMS44OCwxOS44NCAxMS4yNSwxNi41NSAxMy4zMywxNS4xNkMxNy4xMywxMi42MSAxNy45LDEwLjEgMTYsNi40MkMxNC4yLDMgOC4yOCwzLjQxIDcuMDMsNC4wOEM1Ljc4LDQuNzUgNS44Niw1Ljg5IDUuMjMsNS43Mk05LjMzLDEyLjYzTDkuMTEsMTIuMTZDOS4yMywxMC4yOCA3LjYzLDEwLjM5IDguMDgsMTMuMzNDOC4yMSwxNC4xNiA3LjQ3LDEzLjggNy40NSwxMy43M0M2Ljg5LDExLjQ0IDcuNDIsMTAuMjIgOC41NSwxMC40NUM5LjYyLDEwLjY4IDkuNTMsMTEuODMgOS41MywxMS44M0M5LjU2LDExLjc4IDExLDEwLjE3IDExLjUsMTAuOTJDMTIuNTgsMTIuNSAxMC41MywxNC40NyAxMC40MSwxNC42M0MxMC4yOCwxNC43OCAxMC4xNCwxNS4wNSA5LjkyLDE0Ljg0QzkuNywxNC42NCA5LjcyLDE0LjUgOS44OSwxNC4yN0MxMi43NywxMCA5LjU5LDEyLjIyIDkuMzMsMTIuNjNNNi41LDE1LjMzVjE1LjMxQzYuNSwxNS4zMSA4LDE4LjEzIDEwLjYxLDE3LjA4QzExLDE2LjkyIDExLjE3LDE3LjE0IDExLjIsMTcuMjdDMTEuMjcsMTcuNTMgMTEuMTMsMTcuNjQgMTAuODYsMTcuNzNDNy44NiwxOC43MiA1Ljg5LDE2LjYzIDUuNjMsMTYuMTNDNS4zOSwxNS42OCA1LjUsMTUuMzggNS43NSwxNS4yMkM2LDE1LjA2IDYuNSwxNS4zMyA2LjUsMTUuMzNNNiwxNy41QzYsMTcuNSA3LjY3LDE5LjUgMTAuOCwxOUMxMS4wOSwxOC45NCAxMS4yLDE5LjEzIDExLjI1LDE5LjM4QzExLjMsMTkuNjMgMTEuMjIsMTkuODQgMTAuOTIsMTkuOTRDMTAuNjMsMjAuMDMgNy4wOCwyMC41IDUuMTMsMTcuNzJDNSwxNy41NiA1LjMsMTcuMzYgNS40NywxNy4zNkM1LjY0LDE3LjM2IDYuMDMsMTcuNSA2LDE3LjVNNS45NSwxOS4zOUM3LjUzLDIxLjUgMTAuMzMsMjEuNTUgMTEuMjgsMjAuODhDMTEuNSwyMC43MyAxMS43LDIxLjA1IDExLjU2LDIxLjE5QzkuNjQsMjMuMTYgNS42NywyMSA1LjI3LDIwLjMzQzUuMDksMjAuMDUgNS4xMywxOS42NiA1LjMxLDE5LjQ1QzUuNSwxOS4yNSA1LjkzLDE5LjM4IDUuOTUsMTkuMzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmVlcG5leSA9IFwiTTE5LDEzVjdIMjBWNEg0VjdINVYxM0gyQzIsMTMuOTMgMi41LDE0LjcxIDMuNSwxNC45M1YyMEExLDEgMCAwLDAgNC41LDIxSDUuNUExLDEgMCAwLDAgNi41LDIwVjE5SDE3LjVWMjBBMSwxIDAgMCwwIDE4LjUsMjFIMTkuNUExLDEgMCAwLDAgMjAuNSwyMFYxNC45M0MyMS41LDE0LjcgMjIsMTMuOTMgMjIsMTNIMTlNOCwxNUExLjUsMS41IDAgMCwxIDYuNSwxMy41QTEuNSwxLjUgMCAwLDEgOCwxMkExLjUsMS41IDAgMCwxIDkuNSwxMy41QTEuNSwxLjUgMCAwLDEgOCwxNU0xNiwxNUExLjUsMS41IDAgMCwxIDE0LjUsMTMuNUExLjUsMS41IDAgMCwxIDE2LDEyQTEuNSwxLjUgMCAwLDEgMTcuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTYsMTVNMTcuNSwxMC41QzE1LjkyLDEwLjE4IDE0LjAzLDEwIDEyLDEwQzkuOTcsMTAgOCwxMC4xOCA2LjUsMTAuNVY3SDE3LjVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlKZWxseWZpc2ggPSBcIk0xOS41LDE0LjVDMTguOTIsMTQuNDMgMTguNDMsMTQuOTIgMTguNSwxNS41QzE4LjUsMTYuMTcgMTcuNSwxNi4xNyAxNy41LDE1LjVWMTMuMkwxOS4yLDEyLjdDMTkuOTIsMTIuMzYgMjAuNDEsMTEuNjggMjAuNSwxMC45QzIwLjUsNS41IDE2LjcsMiAxMiwyQzcuMywyIDMuNSw1LjUgMy41LDEwLjlDMy41NiwxMS43IDQuMDYsMTIuNCA0LjgsMTIuN0w2LjUsMTMuMlYxNS41QTAuNSwwLjUgMCAwLDEgNiwxNkEwLjUsMC41IDAgMCwxIDUuNSwxNS41QzUuNTcsMTQuOTIgNS4wOCwxNC40MyA0LjUsMTQuNUMzLjkyLDE0LjQzIDMuNDMsMTQuOTIgMy41LDE1LjVDMy40NCwxNi45MSA0LjU5LDE4LjA2IDYsMThDNy40MSwxOC4wNiA4LjU2LDE2LjkxIDguNSwxNS41VjEzLjdIOS41VjE5LjRDOS41LDIwLjA3IDguNSwyMC4wNyA4LjUsMTkuNEM4LjU3LDE4LjgyIDguMDgsMTguMzMgNy41LDE4LjRDNi45MiwxOC4zMyA2LjQzLDE4LjgyIDYuNSwxOS40QzYuMzgsMjAuODQgNy41NSwyMi4wNyA5LDIyQzEwLjQxLDIyLjA2IDExLjU2LDIwLjkxIDExLjUsMTkuNVYxNEgxMi41VjE5LjVDMTIuNDQsMjAuOTEgMTMuNTksMjIuMDYgMTUsMjJDMTYuNDEsMjIuMDYgMTcuNTYsMjAuOTEgMTcuNSwxOS41QzE3LjUsMTguMTcgMTUuNSwxOC4xNyAxNS41LDE5LjVDMTUuNSwyMC4xNyAxNC41LDIwLjE3IDE0LjUsMTkuNVYxMy44SDE1LjVWMTUuNkMxNS41LDE2Ljk2IDE2LjYzLDE4LjA2IDE4LDE4QzE5LjQxLDE4LjA2IDIwLjU2LDE2LjkxIDIwLjUsMTUuNUMyMC41NywxNC45MiAyMC4wOCwxNC40MyAxOS41LDE0LjVNMTAuNiw0LjdDOS4wOSw1LjAzIDcuNzksNS45NyA3LDcuM0M2LjgzLDcuNSA2LjUsNy41NyA2LjMsNy40QzYuMDgsNy4yMyA2LjA0LDYuOTIgNi4yLDYuN0M3LjE2LDUuMTkgOC42Nyw0LjEyIDEwLjQsMy43QzEwLjY3LDMuNjggMTAuOTEsMy44NSAxMSw0LjFDMTEuMDYsNC4zNyAxMC44OCw0LjY1IDEwLjYsNC43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUplbGx5ZmlzaE91dGxpbmUgPSBcIk0xMiw0QzE1LjgsNCAxOC41LDYuOCAxOC41LDEwLjhDMTQuMzEsMTIuMzkgOS42OSwxMi4zOSA1LjUsMTAuOEM1LjUsNi44IDguMiw0IDEyLDRNMTIsMkM3LjMsMiAzLjUsNS41IDMuNSwxMC45QzMuNTYsMTEuNyA0LjA2LDEyLjQgNC44LDEyLjdMNi41LDEzLjJWMTUuNUEwLjUsMC41IDAgMCwxIDYsMTZBMC41LDAuNSAwIDAsMSA1LjUsMTUuNUM1LjU3LDE0LjkyIDUuMDgsMTQuNDMgNC41LDE0LjVDMy45MiwxNC40MyAzLjQzLDE0LjkyIDMuNSwxNS41QzMuNDQsMTYuODYgNC41NCwxOCA1LjksMThINkM3LjQxLDE4LjA2IDguNTYsMTYuOTEgOC41LDE1LjVWMTMuN0g5LjVWMTkuNEM5LjUsMjAuMDcgOC41LDIwLjA3IDguNSwxOS40QzguNTcsMTguODIgOC4wOCwxOC4zMyA3LjUsMTguNEM2LjkyLDE4LjMzIDYuNDMsMTguODIgNi41LDE5LjRDNi4zOSwyMC44IDcuNSwyMiA4LjksMjJIOUMxMC40MSwyMi4wNiAxMS41NiwyMC45MSAxMS41LDE5LjVWMTRIMTIuNVYxOS41QzEyLjQ0LDIwLjkxIDEzLjU5LDIyLjA2IDE1LDIySDE1LjFDMTYuNDcsMjIgMTcuNTYsMjAuODYgMTcuNSwxOS41QzE3LjUsMTguMTcgMTUuNSwxOC4xNyAxNS41LDE5LjVDMTUuNSwyMC4xNyAxNC41LDIwLjE3IDE0LjUsMTkuNVYxMy44SDE1LjVWMTUuNkMxNS41LDE2Ljk2IDE2LjYzLDE4LjA2IDE4LDE4SDE4LjFDMTkuNDcsMTggMjAuNTYsMTYuODYgMjAuNSwxNS41QzIwLjUsMTQuMTcgMTguNSwxNC4xNyAxOC41LDE1LjVDMTguNSwxNi4xNyAxNy41LDE2LjE3IDE3LjUsMTUuNVYxMy4yTDE5LjIsMTIuN0MxOS45MiwxMi4zNiAyMC40MSwxMS42OCAyMC41LDEwLjlDMjAuNSw1LjUgMTYuNywyIDEyLDJNMTIsNi4yQzEwLjUzLDYuNiA5LjI0LDcuNTMgOC40LDguOEM4LDkuMzMgNy4yLDguNzMgNy42LDguMkM4LjYsNi43MyAxMC4wOSw1LjY3IDExLjgsNS4yQzEyLjA4LDUuMTQgMTIuMzUsNS4zMiAxMi40LDUuNkMxMi41LDUuOSAxMi4zLDYuMSAxMiw2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmlyYSA9IFwiTTExLjUzLDJDMTEuNTMsNC40IDEzLjUsNi4zNSAxNS44OCw2LjM1SDE3LjY2VjguMDVDMTcuNjYsMTAuNDUgMTkuNiwxMi4zOSAyMiwxMi40VjIuODRBMC44NCwwLjg0IDAgMCwwIDIxLjE2LDJIMTEuNTNNNi43Nyw2LjhDNi43OCw5LjE5IDguNzIsMTEuMTMgMTEuMTEsMTEuMTRIMTIuOTFWMTIuODZDMTIuOTIsMTUuMjUgMTQuODYsMTcuMTkgMTcuMjUsMTcuMlY3LjYzQzE3LjI0LDcuMTcgMTYuODgsNi44MSAxNi40Miw2LjhINi43N00yLDExLjZDMiwxNCAzLjk1LDE1Ljk0IDYuMzUsMTUuOTRIOC4xM1YxNy42NkM4LjE0LDIwLjA1IDEwLjA4LDIyIDEyLjQ3LDIyVjEyLjQzQTAuODQsMC44NCAwIDAsMCAxMS42MywxMS41OUwyLDExLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSnF1ZXJ5ID0gXCJNMjIuODgsMTAuNDFDMjAuNzcsMTIuMTggMTcuNjEsMTEuOSAxNS44NCw5Ljc5QzE0LjA2LDcuNjcgMTQuMzQsNC41IDE2LjQ1LDIuNzVMMTYuOTYsMi4zN0MxNS4yNyw0LjE5IDE1LjE2LDcuMDMgMTYuOCw5QzE4LjQzLDEwLjk0IDIxLjI1LDExLjMyIDIzLjM0LDkuOTdMMjIuODgsMTAuNDFNMjEuMSwxNC41QzE3LjkzLDE3LjE3IDEzLjIsMTYuNzYgMTAuNTQsMTMuNThDNy44NywxMC40MSA4LjI5LDUuNjggMTEuNDYsM0wxMi4zOCwyLjM2QzkuOTYsNS4wOSA5Ljg0LDkuMjYgMTIuMjYsMTIuMTRDMTQuNjgsMTUgMTguOCwxNS42MyAyMS45MSwxMy43MkwyMS4xLDE0LjVNMTkuOTcsMTkuMzhDMTUuNTMsMjMuMTEgOC45LDIyLjUzIDUuMTcsMTguMDhDMS40NSwxMy42NCAyLjAzLDcgNi40NywzLjI5TDcuNTgsMi41QzQuMDcsNi4zIDMuODUsMTIuMjMgNy4yOCwxNi4zMkMxMC43MSwyMC40IDE2LjU5LDIxLjIyIDIwLjk2LDE4LjQzTDE5Ljk3LDE5LjM4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUpzZmlkZGxlID0gXCJNMTcuMzQgMTMuN0MxNy4zNCAxNSAxNi4yMyAxNi4wNCAxNC44NiAxNi4wNEMxMy42NSAxNi4wNCAxMi42NCAxNSAxMS43NSAxNC4wNEwxMS41IDEzLjc5QzExLjUgMTMuNzYgMTEuNDcgMTMuNzMgMTEuNDUgMTMuN0MxMC43NCAxMi45NiA5Ljk2IDEyLjIyIDkuMjEgMTIuMjJDOC4zMiAxMi4yMiA3LjYgMTIuODggNy42IDEzLjY5QzcuNiAxNC41IDguMzIgMTUuMTcgOS4yMSAxNS4xN0M5Ljk3IDE1LjE3IDEwLjM1IDE0Ljc1IDEwLjYzIDE0LjQ1TDEwLjcgMTQuMzdDMTAuODYgMTQuMiAxMS4xNCAxNC4xOSAxMS4zMSAxNC4zNUMxMS41IDE0LjUgMTEuNSAxNC43OSAxMS4zMyAxNC45NkwxMS4yNyAxNS4wM0MxMC45NCAxNS4zOCAxMC4zNSAxNi4wMyA5LjIxIDE2LjAzQzcuODQgMTYuMDMgNi43MyAxNSA2LjczIDEzLjY5QzYuNzMgMTIuNCA3Ljg0IDExLjM1IDkuMjEgMTEuMzVDMTAuNDIgMTEuMzUgMTEuNDMgMTIuNDEgMTIuMzIgMTMuMzVMMTIuNTYgMTMuNkMxMi41OCAxMy42MyAxMi42IDEzLjY2IDEyLjYyIDEzLjY5QzEzLjMzIDE0LjQzIDE0LjExIDE1LjE3IDE0Ljg2IDE1LjE3QzE1Ljc1IDE1LjE3IDE2LjQ3IDE0LjUgMTYuNDcgMTMuNjlDMTYuNDcgMTIuODggMTUuNzUgMTIuMjIgMTQuODYgMTIuMjJDMTQuMTEgMTIuMjIgMTMuNzIgMTIuNjQgMTMuNDQgMTIuOTRMMTMuMzcgMTNDMTMuMjEgMTMuMTkgMTIuOTQgMTMuMiAxMi43NiAxMy4wNEMxMi41OSAxMi44NyAxMi41OCAxMi42IDEyLjc0IDEyLjQyTDEyLjgxIDEyLjM2QzEzLjEzIDEyIDEzLjczIDExLjM2IDE0Ljg2IDExLjM2QzE2LjIzIDExLjM2IDE3LjM0IDEyLjQgMTcuMzQgMTMuN00yMiAxNC44NUMyMiAxNS45NiAyMS41NyAxNyAyMC43OCAxNy43OUMyMCAxOC41NyAxOC45NSAxOSAxNy44NCAxOUg2LjI4QzMuOTYgMTguOTYgMi4wNyAxNy4wNiAyLjA3IDE0Ljc1QzIuMDcgMTMuMzcgMi43NiAxMi4wNyAzLjg5IDExLjI4QzMuODUgMTEuMDkgMy44MyAxMC45IDMuODMgMTAuN0MzLjgzIDkuMDMgNS4yIDcuNjcgNi44OCA3LjY3QzcuMzkgNy42NyA3Ljg4IDcuNzkgOC4zMiA4LjAzQzkuNDEgNi4xNyAxMS40MyA1IDEzLjYgNUMxNi45NyA1IDE5LjcgNy43MiAxOS43IDExLjA3TDE5LjcgMTEuMTRDMjEuMTEgMTEuODQgMjIgMTMuMjcgMjIgMTQuODVNMjEuMTMgMTQuODVDMjEuMTMgMTMuNSAyMC4zMyAxMi4zMiAxOS4wOSAxMS44MUMxOC45MiAxMS43NCAxOC44MSAxMS41NyAxOC44MiAxMS4zOEwxOC44MyAxMS4yOUMxOC44MyAxMS4yMiAxOC44NCAxMS4xNCAxOC44NCAxMS4wN0MxOC44NCA4LjIgMTYuNSA1Ljg3IDEzLjYgNS44N0MxMS42IDUuODcgOS43NCA3LjAzIDguODcgOC44M0M4LjgyIDguOTUgOC43MSA5LjA0IDguNTggOS4wN0M4LjQ2IDkuMSA4LjMyIDkuMDcgOC4yMiA5QzcuODMgOC42OSA3LjM3IDguNTMgNi44OCA4LjUzQzUuNjggOC41MyA0LjcgOS41IDQuNyAxMC43QzQuNyAxMC45MiA0LjczIDExLjE0IDQuOCAxMS4zNEM0Ljg2IDExLjU0IDQuNzggMTEuNzUgNC42MSAxMS44NUMzLjU2IDEyLjQ3IDIuOTQgMTMuNTUgMi45NCAxNC43NUMyLjk0IDE2LjU5IDQuNDQgMTguMSA2LjI5IDE4LjEzSDE3LjgzQzE4LjcyIDE4LjEzIDE5LjU0IDE3Ljc5IDIwLjE2IDE3LjE3QzIwLjc5IDE2LjU1IDIxLjEzIDE1LjczIDIxLjEzIDE0Ljg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUp1ZGFpc20gPSBcIk0xMiwyTDkuMSw3SDMuM0w2LjMsMTJMMy4zLDE3SDkuMUwxMiwyMkwxNC45LDE3SDIwLjdMMTcuNywxMkwyMC43LDdIMTQuOUwxMiwyTTEyLDVMMTMuMiw3SDEwLjhMMTIsNU04LjIsOC41TDcuMSwxMC41TDUuOSw4LjVIOC4yTTEwLDguNUgxNEwxNiwxMkwxNCwxNS41SDEwTDgsMTJMMTAsOC41TTE4LDguNUwxNi44LDEwLjVMMTUuNyw4LjVIMThNNy4xLDEzLjVMOC4yLDE1LjVINkw3LjEsMTMuNU0xNi45LDEzLjVMMTguMSwxNS41SDE1LjhMMTYuOSwxMy41TTEzLjMsMTdMMTIsMTlMMTAuOCwxN0gxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUp1bXBSb3BlID0gXCJNMjEgNC41VjEwLjVDMjEgMTEuMiAyMC41IDExLjkgMTkuOCAxMlYxNy4zQzE5LjggMTguNiAxOSAyMS4xIDE2IDIxLjFIMTQuNUMxNC45IDIwLjcgMTUuMyAyMC4yIDE1LjUgMTkuNkgxNkMxOC4xIDE5LjYgMTguMiAxNy43IDE4LjIgMTcuNFYxMkMxNy41IDExLjkgMTcgMTEuMyAxNyAxMC41VjQuNUMxNyAzLjcgMTcuNyAzIDE4LjUgM0gxOS41QzIwLjMgMyAyMSAzLjcgMjEgNC41TTE0LjggMTguMkMxNC44IDE5LjcgMTMuNiAyMSAxMiAyMUg4QzUgMjEgNC4yIDE4LjUgNC4yIDE3LjJWMTJDMy41IDExLjkgMyAxMS4yIDMgMTAuNVY0LjVDMyAzLjcgMy43IDMgNC41IDNINS41QzYuMyAzIDcgMy43IDcgNC41VjEwLjVDNyAxMS4yIDYuNSAxMS45IDUuOCAxMlYxNy4zQzUuOCAxNy43IDUuOSAxOS41IDggMTkuNUg5LjZDOS40IDE5LjEgOS4zIDE4LjcgOS4zIDE4LjNWOC4zQzkuMyA2LjggMTAuNSA1LjUgMTIuMSA1LjVTMTQuOCA2LjcgMTQuOCA4LjNNMTMuMiA4LjJDMTMuMiA3LjYgMTIuNyA3IDEyIDdTMTAuOCA3LjYgMTAuOCA4LjJWMTguMkMxMC44IDE4LjkgMTEuNCAxOS40IDEyIDE5LjRTMTMuMiAxOC44IDEzLjIgMTguMlY4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2FiYWRkaSA9IFwiTTExLjIgMTAuNkMxMi4yIDExLjYgMTMuNCAxMi4xIDE0LjggMTIuMUwxNC45IDE0LjJDMTMgMTQuMiAxMS4zIDEzLjUgOS44IDEyLjFMOS4xIDExLjRMNi44IDEzLjhMOSAxNS45VjIxLjlIN1YxNi43TDUuNyAxNS41VjE3LjdMMS41IDIyTC4xIDIwLjZMMy43IDE3TDIuNSAxMy41QzIuMyAxMi45IDIuNiAxMi40IDMuMSAxMkw2LjQgOC43QzYuOCA4LjIgNy4zIDggNy44IDhDOC4zIDggOC42IDguMSA4LjkgOC4zTDExLjIgMTAuNk0yNCAxMS45SDIyVjguNUwyMC4yIDcuOEwyMS4xIDEyLjJMMjIuMSAxNy40TDIzIDIxLjhIMjAuOUwxOS4xIDEzLjhMMTcgMTUuOFYyMS44SDE1VjE0LjNMMTcuMSAxMi4zTDE2LjUgOS4zQzE1LjkgOS45IDE1LjIgMTAuNSAxNC40IDEwLjlDMTMuNSAxMC44IDEyLjYgMTAuNCAxMS45IDkuN0MxMy41IDkuNCAxNC42IDguNiAxNS4zIDcuNEwxNi4zIDUuOEMxNi45IDQuOCAxNy44IDQuNSAxOC45IDVMMjQgNy4yVjExLjlNMTEuNCA0LjRDMTIuNSA0LjQgMTMuNCA1LjMgMTMuNCA2LjRDMTMuNCA3LjUgMTIuNSA4LjQgMTEuNCA4LjRDMTAuMyA4LjQgOS40IDcuNSA5LjQgNi40QzkuNCA1LjMgMTAuMyA0LjQgMTEuNCA0LjRNMTYuNSAuM0MxNy42IC4zIDE4LjUgMS4yIDE4LjUgMi4zQzE4LjUgMy40IDE3LjYgNC4zIDE2LjUgNC4zQzE1LjQgNC4zIDE0LjUgMy40IDE0LjUgMi4zQzE0LjUgMS4yIDE1LjQgLjMgMTYuNSAuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlLYW5nYXJvbyA9IFwiTTE5LjggNi41OUwxOSA3Ljk3VjEwLjA0TDE3LjY5IDExLjYxTDE3LjMxIDEzLjI1TDE2IDE0TDE1LjUgMTMuMTJMMTYuNDQgMTIuNTlMMTYuNyAxMS40NUwxNi43IDExLjQ1TDE2Ljc3IDExLjE1TDE2Ljc3IDExLjE1VjExLjE1TDE3LjQ3IDEwLjMxQzE3LjY1IDEwLjEgMTcuNjIgOS43OCAxNy40MSA5LjYxQzE3LjIgOS40MyAxNi44OCA5LjQ2IDE2LjcgOS42N0wxNS44NSAxMC42OUwxNS41NiAxMS45M0MxNS4zOCAxMS45NiAxNS4yIDEyIDE1IDEyQzE0LjMxIDEyIDEzLjY4IDExLjc2IDEzLjIzIDExLjRDMTMuMTUgMTIuNyAxMi43MyAxMy44MSAxMi4xMyAxNC40M0wxMC41IDE2LjE5TDkuOTYgMTkuNzlMOC4wNyAyMUw3LjUzIDIwLjE3TDkuMDQgMTkuMTlMOS41IDE1LjkyTDkuNSAxNS45MUwxMCAxNC41NEM5LjQ3IDE0LjA4IDkuMDggMTMuMjggOC44OCAxMi4zTDguNzEgMTIuNjFDOC4zNSAxMy4yNSA4IDEzLjkgNy41NiAxNC41NkM3LjExIDE1LjIgNi42NiAxNS45IDUuNzggMTYuNDRDNS4zNCAxNi43MiA0LjcgMTYuODQgNC4xNyAxNi43M0MzLjYxIDE2LjYxIDMuMTQgMTYuMjYgMi44NiAxNS44OUMyLjMxIDE1LjEzIDIuMTUgMTQuMzUgMiAxMy42MkwyLjk3IDEzLjM2QzMuMiAxNCAzLjUgMTQuNjUgMy44OCAxNUM0LjI2IDE1LjMzIDQuNTcgMTUuMjYgNC44NCAxNUM1LjE2IDE0LjczIDUuNDcgMTQuMTUgNS43MyAxMy41NUM2IDEyLjk0IDYuMjIgMTIuMjggNi40NSAxMS42QzYuOTMgMTAuMjQgNy4zOSA4LjgyIDguMiA3LjM2QzguNjIgNi42NCA5LjEzIDUuODkgOS45MiA1LjIyQzEwLjcgNC41NSAxMS43MyA0IDEzIDRTMTUuNyA1LjIyIDE2LjU4IDYuMzRDMTcgNi44OSAxNy44NyA2LjgyIDE4LjIyIDYuMjFMMTkuMTQgNC42M0MxOSA0LjU4IDE4Ljg5IDQuNSAxOC43OSA0LjRDMTguNCA0IDE4LjQgMy4zOCAxOC43OSAzTDE5LjkzIDQuMTNDMTkuOTYgNC4xMyAyMCA0LjExIDIwIDQuMTFDMjAuNDEgNC4xMSAyMC43NSA0LjM1IDIwLjkxIDQuNjlMMjIgN0wyMSA3LjVMMTkuOCA2LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUthcmF0ZSA9IFwiTTE5LDEuMjdDMTguMDQsMC43MiAxNi44MiwxLjA0IDE2LjI3LDJDMTUuNzEsMi45NSAxNi4wNCw0LjE4IDE3LDQuNzNDMTcuOTUsNS4yOCAxOS4xNyw0Ljk2IDE5LjczLDRDMjAuMjgsMy4wNCAxOS45NSwxLjgyIDE5LDEuMjdNMjEuMjcsOS4zNEwxOC43LDEzLjc5TDE2Ljk2LDEyLjc5TDE4LjY5LDkuNzlMMTcuMTQsOC41TDE0LDEzLjkyVjIySDEyVjEzLjM5TDIuNDcsNy44OUwzLjQ3LDYuMTZMMTEuMjcsMTAuNjZMMTMuNjcsNi41TDcuMjgsNC4xN0w4LDIuMjlMMTQuNzMsNC43NEwxNSw0Ljg0QzE1LjM5LDUgMTUuNzYsNS4xNSAxNi4xMiw1LjM1TDE2Ljk2LDUuODRDMTcuMzEsNi4wNCAxNy42NSw2LjI4IDE3Ljk2LDYuNTRMMTguMTksNi43NEwyMS4yNyw5LjM0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtlZyA9IFwiTTUsMjJWMjBINlYxNkg1VjE0SDZWMTFINVY3SDExVjNIMTBWMkgxMUwxMywySDE0VjNIMTNWN0gxOVYxMUgxOFYxNEgxOVYxNkgxOFYyMEgxOVYyMkg1TTE3LDlBMSwxIDAgMCwwIDE2LDhIMTRBMSwxIDAgMCwwIDEzLDlBMSwxIDAgMCwwIDE0LDEwSDE2QTEsMSAwIDAsMCAxNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZSA9IFwiTTEyLjUsM0M3LjgxLDMgNCw1LjY5IDQsOVY5QzQsMTAuMTkgNC41LDExLjM0IDUuNDQsMTIuMzNDNC41MywxMy41IDQsMTQuOTYgNCwxNi41QzQsMTcuNjQgNCwxOC44MyA0LDIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE5QzIwLjExLDIyIDIxLDIxLjExIDIxLDIwQzIxLDE4Ljg1IDIxLDE3LjYxIDIxLDE2LjVDMjEsMTUuMjggMjAuNjYsMTQuMDcgMjAsMTNMMjIsMTFMMTksOEwxNi45LDEwLjFDMTUuNTgsOS4zOCAxNC4wNSw5IDEyLjUsOUMxMC42NSw5IDguOTUsOS41MyA3LjU1LDEwLjQxQzcuMTksOS45NyA3LDkuNSA3LDlDNyw3LjIxIDkuNDYsNS43NSAxMi41LDUuNzVWNS43NUMxMy45Myw1Ljc1IDE1LjMsNi4wOCAxNi4zMyw2LjY3TDE4LjM1LDQuNjVDMTYuNzcsMy41OSAxNC42OCwzIDEyLjUsM00xMi41LDExQzEyLjg0LDExIDEzLjE3LDExLjA0IDEzLjUsMTEuMDlDMTAuMzksMTEuNTcgOCwxNC4yNSA4LDE3LjVWMjBINlYxNy41QTYuNSw2LjUgMCAwLDEgMTIuNSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVBbGVydCA9IFwiTTkuNSAzQzQuOCAzIDEgNS43IDEgOUMxIDEwLjIgMS41IDExLjMgMi40IDEyLjNDMS41IDEzLjUgMSAxNSAxIDE2LjVWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDE2QzE3LjEgMjIgMTggMjEuMSAxOCAyMFYxNi41QzE4IDE1LjMgMTcuNyAxNC4xIDE3IDEzTDE5IDExTDE2IDhMMTMuOSAxMC4xQzEyLjYgOS40IDExLjEgOSA5LjUgOUM3LjcgOSA1LjkgOS41IDQuNiAxMC40QzQuMiAxMCA0IDkuNSA0IDlDNCA3LjIgNi41IDUuOCA5LjUgNS44QzEwLjkgNS44IDEyLjMgNi4xIDEzLjMgNi43TDE1LjMgNC43QzEzLjggMy42IDExLjcgMyA5LjUgM005LjUgMTFDOS44IDExIDEwLjIgMTEgMTAuNSAxMS4xQzcuNCAxMS42IDUgMTQuMiA1IDE3LjVWMjBIM1YxNy41QzMgMTMuOSA1LjkgMTEgOS41IDExTTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlQWxlcnRPdXRsaW5lID0gXCJNOS41IDNDNC44IDMgMSA1LjcgMSA5QzEgMTAuMiAxLjUgMTEuMyAyLjQgMTIuM0MxLjUgMTMuNSAxIDE1IDEgMTYuNVYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMTZDMTcuMSAyMiAxOCAyMS4xIDE4IDIwVjE2LjVDMTggMTUuMyAxNy43IDE0LjEgMTcgMTNMMTkgMTFMMTYgOEwxMy45IDEwLjFDMTEgOC41IDcuNCA4LjYgNC42IDEwLjRDNC4yIDEwIDQgOS41IDQgOUM0IDcuMiA2LjUgNS43IDkuNSA1LjdDMTAuOSA1LjcgMTIuMyA2LjEgMTMuMyA2LjdMMTUuMyA0LjdDMTMuNiAzLjUgMTEuNiAzIDkuNSAzTTkuNSAxMUMxMyAxMSAxNiAxNCAxNiAxNi41VjIwSDNWMTYuNUMzIDE0IDYgMTEgOS41IDExTTEwIDEyLjVDNyAxMi41IDUgMTQgNSAxN1YxOEg3VjE3QzcgMTYgNyAxMy41IDEwIDEyLjVNMjEgMTNWN0gyM1YxM0gyMU0yMSAxN1YxNUgyM1YxN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjcgNi42QzQuMyA3LjMgNCA4LjEgNCA5QzQgMTAuMiA0LjUgMTEuMyA1LjQgMTIuM0M0LjUgMTMuNSA0IDE1IDQgMTYuNVYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMTlDMTkuMyAyMiAxOS42IDIxLjkgMTkuOSAyMS44TDIwLjggMjIuN0wyMi4xIDIxLjVNOC4yIDEwLjFMNy42IDEwLjRDNy4yIDEwIDcgOS41IDcgOVY4LjlMOC4yIDEwLjFNOCAxNy41VjIwSDZWMTcuNUM2IDE0LjkgNy41IDEyLjcgOS43IDExLjZMMTAuNSAxMi40QzkgMTMuNiA4IDE1LjQgOCAxNy41TTE2LjkgMTAuMUwxOSA4TDIyIDExTDIwIDEzQzIwLjcgMTQuMSAyMSAxNS4zIDIxIDE2LjVWMTcuOEwxMi4yIDlIMTIuNUMxNCA5IDE1LjYgOS40IDE2LjkgMTAuMU05LjUgNi4zTDcuNCA0LjJDOC44IDMuNSAxMC42IDMgMTIuNSAzQzE0LjcgMyAxNi44IDMuNiAxOC4zIDQuN0wxNi4zIDYuN0MxNS4zIDYuMSAxMy45IDUuOCAxMi41IDUuOEMxMS40IDUuOCAxMC40IDUuOSA5LjUgNi4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZU9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjcgNi42QzQuMyA3LjMgNCA4LjEgNCA5QzQgMTAuMiA0LjUgMTEuMyA1LjQgMTIuM0M0LjUgMTMuNSA0IDE1IDQgMTYuNVYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMTlDMTkuMyAyMiAxOS42IDIxLjkgMTkuOSAyMS44TDIwLjggMjIuN0wyMi4xIDIxLjVNOC4yIDEwLjFMNy42IDEwLjRDNy4yIDEwIDcgOS41IDcgOVY4LjlMOC4yIDEwLjFNNiAyMFYxNi41QzYgMTQuNyA3LjYgMTIuNiA5LjcgMTEuNkwxMC45IDEyLjhDOS4xIDEzLjQgOCAxNC44IDggMTdWMThIMTBWMTdDMTAgMTYuMiAxMCAxNC41IDExLjQgMTMuM0wxOC4xIDIwSDZNMTYuOSAxMC4xTDE5IDhMMjIgMTFMMjAgMTNDMjAuNyAxNC4xIDIxIDE1LjMgMjEgMTYuNVYxNy44TDE4LjkgMTUuN0MxOC41IDEzLjkgMTYuOCAxMi4xIDE0LjYgMTEuNEwxMi4yIDlDMTMuOCA4LjkgMTUuNCA5LjMgMTYuOSAxMC4xTTkuNSA2LjNMNy40IDQuMkM4LjggMy41IDEwLjYgMyAxMi41IDNDMTQuNiAzIDE2LjYgMy41IDE4LjMgNC43TDE2LjMgNi43QzE1LjMgNi4xIDEzLjkgNS43IDEyLjUgNS43QzExLjQgNS43IDEwLjMgNS45IDkuNSA2LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlT3V0bGluZSA9IFwiTTEyLjUgM0M3LjggMyA0IDUuNyA0IDlDNCAxMC4yIDQuNSAxMS4zIDUuNCAxMi4zQTYuOCA2LjggMCAwIDAgNCAxNi41VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOUEyIDIgMCAwIDAgMjEgMjBWMTYuNUMyMSAxNS4zIDIwLjcgMTQuMSAyMCAxM0wyMiAxMUwxOSA4TDE2LjkgMTAuMUE5LjIgOS4yIDAgMCAwIDcuNiAxMC40QTIgMiAwIDAgMSA3IDlDNyA3LjIgOS41IDUuNyAxMi41IDUuN0MxMy45IDUuNyAxNS4zIDYuMSAxNi4zIDYuN0wxOC4zIDQuN0ExMCAxMCAwIDAgMCAxMi41IDNNMTIuNSAxMUMxNiAxMSAxOSAxNCAxOSAxNi41VjIwSDZWMTYuNUM2IDE0IDkgMTEgMTIuNSAxMU0xMyAxMi41QzEwIDEyLjUgOCAxNCA4IDE3VjE4SDEwVjE3QzEwIDE2IDEwIDEzLjUgMTMgMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVQb3VyT3ZlciA9IFwiTTEwIDRDOS40IDQgOSA0LjQgOSA1VjZIMTRWNUMxNCA0LjQgMTMuNiA0IDEzIDRIMTBNMyA3TDQuMSAxNC4xQzQuMiAxNC44IDQuNSAxNS41IDUuMSAxNi4xQzUuNSAxNi42IDYuMiAxNi45IDcgMTdDNyAxNy42IDcuNCAxOCA4IDE4SDE2QzE2LjYgMTggMTcgMTcuNiAxNyAxN0wxNSAxMUgxN0wyMC4zIDE2TDIyIDE1TDE4LjcgMTBMMjAgOS4yTDE5IDcuNUwxNi40IDlIMTVWN0g4VjExTDcuMiAxNkM2LjUgMTUuOSA2LjEgMTUuNyA1LjggMTUuNEM1LjQgMTUgNS4yIDE0LjUgNS4xIDEzLjlMNCA3SDNNNCAxOVYyMUgyMFYxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZVN0ZWFtID0gXCJNMTkgMTFMMTYgOEwxMy45IDEwLjFDMTIuNTggOS4zOCAxMS4wNSA5IDkuNSA5QzcuNjUgOSA1Ljk1IDkuNTMgNC41NSAxMC40MUM0LjE5IDkuOTcgNCA5LjUgNCA5QzQgNy4yMSA2LjQ2IDUuNzUgOS41IDUuNzVDMTAuOTMgNS43NSAxMi4zIDYuMDggMTMuMzMgNi42N0wxNS4zNSA0LjY1QzEzLjc3IDMuNTkgMTEuNjggMyA5LjUgM0M0LjgxIDMgMSA1LjY5IDEgOUMxIDEwLjE5IDEuNSAxMS4zNCAyLjQ0IDEyLjMzQzEuNTMgMTMuNSAxIDE0Ljk2IDEgMTYuNVYyMEMxIDIxLjExIDEuODkgMjIgMyAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFYxNi41QzE4IDE1LjI4IDE3LjY2IDE0LjA3IDE3IDEzTDE5IDExTTUgMTcuNVYyMEgzVjE3LjVDMyAxMy45MSA1LjkxIDExIDkuNSAxMUM5Ljg0IDExIDEwLjE3IDExLjA0IDEwLjUgMTEuMDlDNy4zOSAxMS41NyA1IDE0LjI1IDUgMTcuNU0yMyA3LjNDMjMgOC45MyAyMS45MSAxMC42IDIwLjM4IDEwLjk3TDE5LjcxIDEwLjI5TDE5IDkuNkgxOS43NUMyMC43NSA5LjYgMjEuNSA4LjIyIDIxLjUgNy4yQzIxLjUgNi4xOCAyMC42NSA1LjE0IDE5LjY1IDUuMTRWMy42NEMyMS41IDMuNjQgMjMgNS40NSAyMyA3LjNNMTcuNjUgNi43M0MxNy4wMyA2LjEyIDE2LjY1IDUuMjggMTYuNjUgNC4zNUMxNi42NSAyLjUgMTguMTUgMSAyMCAxVjIuNUMxOSAyLjUgMTguMTUgMy4zMyAxOC4xNSA0LjM1QzE4LjE1IDUuMzcgMTkgNi4yIDIwIDYuMlY3LjdDMTkuMTggNy43IDE4LjQyIDcuOTUgMTcuNzkgOC4zOEwxNi43MiA3LjMxQzE3IDcuMDkgMTcuMzIgNi44OSAxNy42NSA2LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZVN0ZWFtT3V0bGluZSA9IFwiTTkuNSAzQzQuOCAzIDEgNS43IDEgOUMxIDEwLjIgMS41IDExLjMgMi40IDEyLjNDMS41IDEzLjUgLjk4NSAxNSAxIDE2LjVWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDE2QzE3LjExIDIyIDE4IDIxLjExIDE4IDIwVjE2LjVDMTggMTUuMyAxNy43IDE0LjEgMTcgMTNMMTkgMTFMMTYgOEwxMy45IDEwLjFDMTAuOTcgOC41IDcuNDIgOC42MyA0LjYgMTAuNEM0LjIyIDEwLjAzIDQgOS41MyA0IDlDNCA3LjIgNi41IDUuNyA5LjUgNS43QzEwLjkgNS43IDEyLjMgNi4xIDEzLjMgNi43TDE1LjMgNC43QzEzLjU5IDMuNTUgMTEuNTYgMi45NiA5LjUgM005LjUgMTFDMTMgMTEgMTYgMTQgMTYgMTYuNVYyMEgzVjE2LjVDMyAxNCA2IDExIDkuNSAxMU0xMCAxMi41QzcgMTIuNSA1IDE0IDUgMTdWMThIN1YxN0M3IDE2IDcgMTMuNSAxMCAxMi41TTIzIDcuM0MyMyA4LjkzIDIxLjkxIDEwLjYgMjAuMzggMTAuOTdMMTkuNzEgMTAuMjlMMTkgOS42SDE5Ljc1QzIwLjc1IDkuNiAyMS41IDguMjIgMjEuNSA3LjJDMjEuNSA2LjE4IDIwLjY1IDUuMTQgMTkuNjUgNS4xNFYzLjY0QzIxLjUgMy42NCAyMyA1LjQ1IDIzIDcuM00xNy42NSA2LjczQzE3LjAzIDYuMTIgMTYuNjUgNS4yOCAxNi42NSA0LjM1QzE2LjY1IDIuNSAxOC4xNSAxIDIwIDFWMi41QzE5IDIuNSAxOC4xNSAzLjMzIDE4LjE1IDQuMzVDMTguMTUgNS4zNyAxOSA2LjIgMjAgNi4yVjcuN0MxOS4xOCA3LjcgMTguNDIgNy45NSAxNy43OSA4LjM4TDE2LjcyIDcuMzFDMTcgNy4wOSAxNy4zMiA2Ljg5IDE3LjY1IDYuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlYmVsbCA9IFwiTTE2LjIgMTAuN0wxNi44IDguM0MxNi45IDggMTcuMyA2LjYgMTYuNSA1LjRDMTUuOSA0LjUgMTQuNyA0IDEzIDRIMTFDOS4zIDQgOC4xIDQuNSA3LjUgNS40QzYuNyA2LjYgNy4xIDcuOSA3LjIgOC4zTDcuOCAxMC43QzYuNyAxMS44IDYgMTMuMyA2IDE1QzYgMTcuMSA3LjEgMTguOSA4LjcgMjBIMTUuM0MxNi45IDE4LjkgMTggMTcuMSAxOCAxNUMxOCAxMy4zIDE3LjMgMTEuOCAxNi4yIDEwLjdNOS42IDkuNUw5LjEgNy44VjcuN0M5LjEgNy43IDguOSA3IDkuMiA2LjZDOS40IDYuMiAxMCA2IDExIDZIMTNDMTMuOSA2IDE0LjYgNi4yIDE0LjkgNi41QzE1LjIgNi45IDE1IDcuNiAxNSA3LjZMMTQuNSA5LjVDMTMuNyA5LjIgMTIuOSA5IDEyIDlDMTEuMSA5IDEwLjMgOS4yIDkuNiA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5ID0gXCJNNywxNEEyLDIgMCAwLDEgNSwxMkEyLDIgMCAwLDEgNywxMEEyLDIgMCAwLDEgOSwxMkEyLDIgMCAwLDEgNywxNE0xMi42NSwxMEMxMS44Myw3LjY3IDkuNjEsNiA3LDZBNiw2IDAgMCwwIDEsMTJBNiw2IDAgMCwwIDcsMThDOS42MSwxOCAxMS44MywxNi4zMyAxMi42NSwxNEgxN1YxOEgyMVYxNEgyM1YxMEgxMi42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlBcnJvd1JpZ2h0ID0gXCJNMTAuNyA2QzEwLjEgNC4yIDguNCAzIDYuNSAzQzQgMyAyIDUgMiA3LjVTNCAxMiA2LjUgMTJDOC41IDEyIDEwLjEgMTAuOCAxMC43IDlIMTVWMTJIMThWOUgyMlY2SDEwLjdNNi41IDlDNS43IDkgNSA4LjMgNSA3LjVTNS43IDYgNi41IDYgOCA2LjcgOCA3LjUgNy4zIDkgNi41IDlNMTMgMjFWMTlIOFYxN0gxM1YxNUwxNiAxOEwxMyAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUtleUNoYWluID0gXCJNMTIuNjcgMTMuNjdDMTIuMiAxNC4xMyAxMS42MyAxNC41IDExIDE0LjczVjIzSDhWMjFINVYxOEg4VjE0LjcyQzYuMjYgMTQuMSA1IDEyLjQ2IDUgMTAuNUM1IDggNyA2IDkuNSA2QzkuNTQgNiA5LjU3IDYgOS42IDZDOS4xMyA2Ljk1IDguOTIgOCA5LjAzIDkuMDhDOC40NCA5LjI4IDggOS44NCA4IDEwLjVDOCAxMS4zMyA4LjY3IDEyIDkuNSAxMkM5LjczIDEyIDkuOTUgMTEuOTQgMTAuMTUgMTEuODVDMTAuNzkgMTIuNjkgMTEuNjcgMTMuMzIgMTIuNjcgMTMuNjdNMjAuNzMgMTkuNDRMMTcuOTcgMjAuNkwxNy4xOSAxOC43NkwxNC40MyAxOS45M0wxMy4yNiAxNy4xNkwxNi4wMyAxNkwxNC43NiAxM0MxMi45MSAxMy4wOCAxMS4xMSAxMi4wNSAxMC4zNSAxMC4yNUM5LjM5IDcuOTYgMTAuNDcgNS4zMiAxMi43NiA0LjM1QzEzIDQuMjUgMTMuMjYgNC4xOCAxMy41IDQuMTJDMTIuODQgMi44NyAxMS41IDIgMTAgMkM3Ljc5IDIgNiAzLjc5IDYgNkM2IDYuMDggNiA2LjE2IDYgNi4yNEM1LjcgNi41IDUuNCA2LjgyIDUuMTUgNy4xNUM1LjA2IDYuNzggNSA2LjQgNSA2QzUgMy4yNCA3LjI0IDEgMTAgMVMxNSAzLjI0IDE1IDZDMTUgNy40MiAxNC40IDguNjcgMTMuNDUgOS41N0MxMy44NyAxMCAxNC41IDEwLjEzIDE1LjA4IDkuODhDMTUuODUgOS41NiAxNi4yIDguNjggMTUuODggNy45MkMxNS44NSA3LjgzIDE1LjggNy43NCAxNS43NCA3LjY2QzE1LjkgNy4xMyAxNiA2LjU4IDE2IDZDMTYgNS4zNyAxNS45IDQuNzYgMTUuNzIgNC4xOUMxNyA0LjU1IDE4LjEgNS40NCAxOC42NSA2Ljc2QzE5LjQxIDguNTYgMTguODkgMTAuNTcgMTcuNSAxMS44MUwyMC43MyAxOS40NE0xMyA4LjZDMTMuMzcgOC4xOSAxMy42NSA3LjcxIDEzLjgyIDcuMThDMTMuMjggNy40NSAxMi45NyA4IDEzIDguNlpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlDaGFpblZhcmlhbnQgPSBcIk0xMi42NiAxMy42N0MxMi4zMiAxNCAxMS45MyAxNC4yOSAxMS41IDE0LjVWMjFMOS41IDIzTDcuNSAyMUw5LjUgMTkuMjlMOCAxOEw5LjUgMTYuNzFMNy41IDE1VjE0LjVDNiAxMy43NyA1IDEyLjI2IDUgMTAuNUM1IDggNyA2IDkuNSA2QzkuNTQgNiA5LjU4IDYgOS42MSA2QzkuNTkgNi4wNyA5LjU0IDYuMTIgOS41IDYuMThDOS4yMyA2Ljc5IDkuMDggNy40MyA5LjAzIDguMDhDOC40MyA4LjI4IDggOC44NCA4IDkuNUM4IDEwLjMzIDguNjcgMTEgOS41IDExQzkuNTMgMTEgOS41NyAxMSA5LjYgMTFDMTAuMjQgMTIuMjUgMTEuMzQgMTMuMiAxMi42NiAxMy42N00xNiA2QzE2IDUuMzcgMTUuOSA0Ljc1IDE1LjcyIDQuMThDMTcuMDYgNC41NiAxOC4yMSA1LjU1IDE4LjczIDYuOTZDMTkuMzMgOC42MiAxOC44OSAxMC4zOSAxNy43NSAxMS41OUwyMCAxNy42OEwxOC43OCAyMC4yNUwxNi4yMiAxOS4wNUwxNy41IDE2Ljc2TDE1LjY2IDE2LjA2TDE2LjYzIDE0LjM0TDE0LjE2IDEzLjQxTDE0IDEyLjk1QzEyLjM2IDEyLjc3IDEwLjg4IDExLjcgMTAuMjcgMTAuMDRDOS40MiA3LjcxIDEwLjYzIDUuMTIgMTIuOTYgNC4yN0MxMy4xNCA0LjIxIDEzLjMzIDQuMTcgMTMuNSA0LjEzQzEyLjg0IDIuODcgMTEuNTMgMiAxMCAyQzcuNzkgMiA2IDMuNzkgNiA2QzYgNi4wOSA2IDYuMTcgNi4wMyA2LjI2QzUuNyA2LjUzIDUuNCA2LjgyIDUuMTUgNy4xNUM1LjA2IDYuNzggNSA2LjQgNSA2QzUgMy4yNCA3LjI0IDEgMTAgMVMxNSAzLjI0IDE1IDZDMTUgNy4xNiAxNC42IDguMjEgMTMuOTQgOS4wNkMxNi4wOCA4Ljg4IDE2IDYgMTYgNk0xMi44MSA4LjFDMTIuODcgOC4yNyAxMi45NiA4LjQxIDEzLjA2IDguNTRDMTMuNjIgNy44OCAxMy45NyA3LjA0IDE0IDYuMTFDMTMuODkgNi4xMyAxMy44IDYuMTUgMTMuNyA2LjE4QzEyLjkyIDYuNDcgMTIuNSA3LjMzIDEyLjgxIDguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlDaGFuZ2UgPSBcIk02LjUsMkM4LjQ2LDIgMTAuMTMsMy4yNSAxMC43NCw1SDIyVjhIMThWMTFIMTVWOEgxMC43NEMxMC4xMyw5Ljc1IDguNDYsMTEgNi41LDExQzQsMTEgMiw5IDIsNi41QzIsNCA0LDIgNi41LDJNNi41LDVBMS41LDEuNSAwIDAsMCA1LDYuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgOCw2LjVBMS41LDEuNSAwIDAsMCA2LjUsNU02LjUsMTNDOC40NiwxMyAxMC4xMywxNC4yNSAxMC43NCwxNkgyMlYxOUgyMFYyMkgxOFYxOUgxNlYyMkgxM1YxOUgxMC43NEMxMC4xMywyMC43NSA4LjQ2LDIyIDYuNSwyMkM0LDIyIDIsMjAgMiwxNy41QzIsMTUgNCwxMyA2LjUsMTNNNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE5QTEuNSwxLjUgMCAwLDAgOCwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleUxpbmsgPSBcIk02LjUgM0M0IDMgMiA1IDIgNy41UzQgMTIgNi41IDEyQzguNDYgMTIgMTAuMTMgMTAuNzUgMTAuNzQgOUgxNVYxMkgxOFY5SDIyVjZIMTAuNzRDMTAuMTMgNC4yNSA4LjQ2IDMgNi41IDNNNi41IDZDNy4zMyA2IDggNi42NyA4IDcuNVM3LjMzIDkgNi41IDkgNSA4LjMzIDUgNy41IDUuNjcgNiA2LjUgNk0xMCAxNEM4LjM5IDE0IDYgMTUuMDcgNiAxOEM2IDIwLjk0IDguMzkgMjIgMTAgMjJIMTFWMjBIMTBDOS42NyAyMCA4IDE5LjkgOCAxOEM4IDE2LjE3IDkuNTQgMTYgMTAgMTZIMTFWMTRNMTMgMTRWMTZIMTRDMTQuMzMgMTYgMTYgMTYuMSAxNiAxOEMxNiAxOS44MyAxNC40NiAyMCAxNCAyMEgxM1YyMkgxNEMxNS42MSAyMiAxOCAyMC45NCAxOCAxOEMxOCAxNS4wNyAxNS42MSAxNCAxNCAxNE05IDE3VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleU1pbnVzID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk04LDE3SDE2VjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5T3V0bGluZSA9IFwiTTIyLDE5SDE2VjE1SDEzLjMyQzEyLjE4LDE3LjQyIDkuNzIsMTkgNywxOUMzLjE0LDE5IDAsMTUuODYgMCwxMkMwLDguMTQgMy4xNCw1IDcsNUM5LjcyLDUgMTIuMTcsNi41OCAxMy4zMiw5SDI0VjE1SDIyVjE5TTE4LDE3SDIwVjEzSDIyVjExSDExLjk0TDExLjcxLDEwLjMzQzExLDguMzQgOS4xMSw3IDcsN0E1LDUgMCAwLDAgMiwxMkE1LDUgMCAwLDAgNywxN0M5LjExLDE3IDExLDE1LjY2IDExLjcxLDEzLjY3TDExLjk0LDEzSDE4VjE3TTcsMTVBMywzIDAgMCwxIDQsMTJBMywzIDAgMCwxIDcsOUEzLDMgMCAwLDEgMTAsMTJBMywzIDAgMCwxIDcsMTVNNywxMUExLDEgMCAwLDAgNiwxMkExLDEgMCAwLDAgNywxM0ExLDEgMCAwLDAgOCwxMkExLDEgMCAwLDAgNywxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlQbHVzID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk04LDE3SDExVjE0SDEzVjE3SDE2VjE5SDEzVjIySDExVjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5UmVtb3ZlID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk0xNC41OSwxNEwxNiwxNS40MUwxMy40MSwxOEwxNiwyMC41OUwxNC41OSwyMkwxMiwxOS40MUw5LjQxLDIyTDgsMjAuNTlMMTAuNTksMThMOCwxNS40MUw5LjQxLDE0TDEyLDE2LjU5TDE0LjU5LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleVN0YXIgPSBcIk02LjUgM0M0IDMgMiA1IDIgNy41UzQgMTIgNi41IDEyQzguNDYgMTIgMTAuMTMgMTAuNzUgMTAuNzQgOUgxNVYxMkgxOFY5SDIyVjZIMTAuNzRDMTAuMTMgNC4yNSA4LjQ2IDMgNi41IDNNNi41IDZDNy4zMyA2IDggNi42NyA4IDcuNVM3LjMzIDkgNi41IDkgNSA4LjMzIDUgNy41IDUuNjcgNiA2LjUgNk0xMiAxNEwxMC44NyAxNi42NEw4IDE2Ljg5TDEwLjE4IDE4Ljc3TDkuNSAyMS41OEwxMiAyMC4wOUwxNC40NSAyMS41OEwxMy44IDE4Ljc3TDE2IDE2Ljg5TDEzLjExIDE2LjY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleVZhcmlhbnQgPSBcIk0yMiwxOFYyMkgxOFYxOUgxNVYxNkgxMkw5Ljc0LDEzLjc0QzkuMTksMTMuOTEgOC42MSwxNCA4LDE0QTYsNiAwIDAsMSAyLDhBNiw2IDAgMCwxIDgsMkE2LDYgMCAwLDEgMTQsOEMxNCw4LjYxIDEzLjkxLDkuMTkgMTMuNzQsOS43NEwyMiwxOE03LDVBMiwyIDAgMCwwIDUsN0EyLDIgMCAwLDAgNyw5QTIsMiAwIDAsMCA5LDdBMiwyIDAgMCwwIDcsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlXaXJlbGVzcyA9IFwiTTQuOTMgNS45Mkw2LjM0IDcuMzNBOCA4IDAgMCAxIDE3LjY2IDcuMzNMMTkuMDcgNS45MkExMCAxMCAwIDAgMCA0LjkzIDUuOTJNNy43NiA4Ljc1TDkuMTcgMTAuMTZBNCA0IDAgMCAxIDE0LjgzIDEwLjE2TDE2LjI0IDguNzVBNiA2IDAgMCAwIDcuNzYgOC43NU0xMC43NiAxNUE0LjUgNC41IDAgMSAwIDEwLjc2IDE4SDE1VjIxSDE4VjE4SDIyVjE1TTYuNSAxOEExLjUgMS41IDAgMSAxIDggMTYuNUExLjUgMS41IDAgMCAxIDYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZCA9IFwiTTE5LDEwSDE3VjhIMTlNMTksMTNIMTdWMTFIMTlNMTYsMTBIMTRWOEgxNk0xNiwxM0gxNFYxMUgxNk0xNiwxN0g4VjE1SDE2TTcsMTBINVY4SDdNNywxM0g1VjExSDdNOCwxMUgxMFYxM0g4TTgsOEgxMFYxMEg4TTExLDExSDEzVjEzSDExTTExLDhIMTNWMTBIMTFNMjAsNUg0QzIuODksNSAyLDUuODkgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QzIyLDUuODkgMjEuMSw1IDIwLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRCYWNrc3BhY2UgPSBcIk0yMSwxMUg2LjgzTDEwLjQxLDcuNDFMOSw2TDMsMTJMOSwxOEwxMC40MSwxNi41OEw2LjgzLDEzSDIxVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkQ2FwcyA9IFwiTTYsMThIMThWMTZINk0xMiw4LjQxTDE2LjU5LDEzTDE4LDExLjU4TDEyLDUuNThMNiwxMS41OEw3LjQxLDEzTDEyLDguNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRDbG9zZSA9IFwiTTEyLDIzTDE2LDE5SDhNMTksOEgxN1Y2SDE5TTE5LDExSDE3VjlIMTlNMTYsOEgxNFY2SDE2TTE2LDExSDE0VjlIMTZNMTYsMTVIOFYxM0gxNk03LDhINVY2SDdNNywxMUg1VjlIN004LDlIMTBWMTFIOE04LDZIMTBWOEg4TTExLDlIMTNWMTFIMTFNMTEsNkgxM1Y4SDExTTIwLDNINEMyLjg5LDMgMiwzLjg5IDIsNVYxNUEyLDIgMCAwLDAgNCwxN0gyMEEyLDIgMCAwLDAgMjIsMTVWNUMyMiwzLjg5IDIxLjEsMyAyMCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRXNjID0gXCJNMSA3SDdWOUgzVjExSDdWMTNIM1YxNUg3VjE3SDFWN00xMSA3SDE1VjlIMTFWMTFIMTNDMTQuMTEgMTEgMTUgMTEuOSAxNSAxM1YxNUMxNSAxNi4xMSAxNC4xMSAxNyAxMyAxN0g5VjE1SDEzVjEzSDExQzkuOSAxMyA5IDEyLjExIDkgMTFWOUM5IDcuOSA5LjkgNyAxMSA3TTE5IDdIMjFDMjIuMTEgNyAyMyA3LjkgMjMgOVYxMEgyMVY5SDE5VjE1SDIxVjE0SDIzVjE1QzIzIDE2LjExIDIyLjExIDE3IDIxIDE3SDE5QzE3LjkgMTcgMTcgMTYuMTEgMTcgMTVWOUMxNyA3LjkgMTcuOSA3IDE5IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMSA9IFwiTTYgN0gxMlY5SDhWMTFIMTFWMTNIOFYxN0g2VjdNMTQgN0gxOFYxN0gxNlY5SDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMTAgPSBcIk0yIDdIOFY5SDRWMTFIN1YxM0g0VjE3SDJWN00xMCA3SDE0VjE3SDEyVjlIMTBWN00xOCA3SDIwQzIxLjExIDcgMjIgNy45IDIyIDlWMTVDMjIgMTYuMTEgMjEuMTEgMTcgMjAgMTdIMThDMTYuOSAxNyAxNiAxNi4xMSAxNiAxNVY5QzE2IDcuOSAxNi45IDcgMTggN00xOCA5VjE1SDIwVjlIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMTEgPSBcIk0zIDdIOVY5SDVWMTFIOFYxM0g1VjE3SDNWN00xMSA3SDE1VjE3SDEzVjlIMTFWN00xNyA3SDIxVjE3SDE5VjlIMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEYxMiA9IFwiTTIgN0g4VjlINFYxMUg3VjEzSDRWMTdIMlY3TTE2IDdIMjBDMjEuMTEgNyAyMiA3LjkgMjIgOVYxMUMyMiAxMi4xMSAyMS4xMSAxMyAyMCAxM0gxOFYxNUgyMlYxN0gxNlYxM0MxNiAxMS45IDE2LjkgMTEgMTggMTFIMjBWOUgxNlY3TTEwIDdIMTRWMTdIMTJWOUgxMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjIgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTdDMTguMTEgNyAxOSA3LjkgMTkgOVYxMUMxOSAxMi4xMSAxOC4xMSAxMyAxNyAxM0gxNVYxNUgxOVYxN0gxM1YxM0MxMyAxMS45IDEzLjkgMTEgMTUgMTFIMTdWOUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjMgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTE5IDE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDE1VjExSDE3VjlIMTNWN0gxN0MxOC4xIDcgMTkgNy44OSAxOSA5VjEwLjVDMTkgMTEuMzMgMTguMzMgMTIgMTcuNSAxMkMxOC4zMyAxMiAxOSAxMi42NyAxOSAxMy41VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjQgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTVWMTFIMTdWN0gxOVYxN0gxN1YxM0gxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjUgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTlWOUgxNVYxMUgxN0MxOC4xMSAxMSAxOSAxMS45IDE5IDEzVjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGNiA9IFwiTTUgN0gxMVY5SDdWMTFIMTBWMTNIN1YxN0g1VjdNMTUgN0gxOVY5SDE1VjExSDE3QzE4LjExIDExIDE5IDExLjkgMTkgMTNWMTVDMTkgMTYuMTEgMTguMTEgMTcgMTcgMTdIMTVDMTMuOSAxNyAxMyAxNi4xMSAxMyAxNVY5QzEzIDcuOSAxMy45IDcgMTUgN00xNSAxM1YxNUgxN1YxM0gxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEY3ID0gXCJNNSA3SDExVjlIN1YxMUgxMFYxM0g3VjE3SDVWN00xNSAxN0gxM0wxNyA5SDEzVjdIMTlWOUwxNSAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEY4ID0gXCJNNSA3SDExVjlIN1YxMUgxMFYxM0g3VjE3SDVWN00xNSAxM1YxNUgxN1YxM0gxNU0xNSA5VjExSDE3VjlIMTVNMTUgMTdDMTMuOSAxNyAxMyAxNi4xMSAxMyAxNVYxMy41QzEzIDEyLjY3IDEzLjY3IDEyIDE0LjUgMTJDMTMuNjcgMTIgMTMgMTEuMzMgMTMgMTAuNVY5QzEzIDcuOSAxMy45IDcgMTUgN0gxN0MxOC4xIDcgMTkgNy44OSAxOSA5VjEwLjVDMTkgMTEuMzMgMTguMzMgMTIgMTcuNSAxMkMxOC4zMyAxMiAxOSAxMi42NyAxOSAxMy41VjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjkgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTE3IDE3SDEzVjE1SDE3VjEzSDE1QzEzLjkgMTMgMTMgMTIuMTEgMTMgMTFWOUMxMyA3LjkgMTMuOSA3IDE1IDdIMTdDMTguMTEgNyAxOSA3LjkgMTkgOVYxNUMxOSAxNi4xMSAxOC4xMSAxNyAxNyAxN00xNyAxMVY5SDE1VjExSDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMCwyMC43MkwxOC43MywyMkwxNS43MywxOUg0QzIuODksMTkgMiwxOC4xIDIsMTdWN0MyLDYuNSAyLjE4LDYuMDcgMi40Niw1LjczTDEsNC4yN00xOSwxMFY4SDE3VjEwSDE5TTE5LDEzVjExSDE3VjEzSDE5TTE2LDEwVjhIMTRWMTBIMTZNMTYsMTNWMTFIMTRWMTIuMThMMTEuODIsMTBIMTNWOEgxMVY5LjE4TDkuODIsOEw2LjgyLDVIMjBBMiwyIDAgMCwxIDIyLDdWMTdDMjIsMTcuODYgMjEuNDYsMTguNTkgMjAuNywxOC44N0wxNC44MiwxM0gxNk04LDE1VjE3SDEzLjczTDExLjczLDE1SDhNNSwxMEg2LjczTDUsOC4yN1YxME03LDEzVjExSDVWMTNIN004LDEzSDkuNzNMOCwxMS4yN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZE9mZk91dGxpbmUgPSBcIk0xLDQuMjdMMi40Nyw1Ljc0QzIuMTgsNi4wOCAyLDYuNSAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMTUuNzNMMTguNzMsMjJMMjAsMjAuNzJMMi4yOCwzTDEsNC4yN000LDE3VjcuMjdMNSw4LjI3VjEwSDYuNzNMOCwxMS4yN1YxM0g5LjczTDEwLjczLDE0SDhWMTZIMTIuNzNMMTMuNzMsMTdINE01LDExSDdWMTNINVYxMU0xNywxMUgxOVYxM0gxN1YxMU0xOSwxMEgxN1Y4SDE5VjEwTTE0LDExSDE2VjEzSDE0LjgzTDE0LDEyLjE3VjExTTEzLDEwSDExLjgzTDExLDkuMTdWOEgxM1YxME0yMiw3VjE3QzIyLDE3Ljg2IDIxLjQ1LDE4LjU4IDIwLjcsMTguODdMMTguODMsMTdIMjBWN0g4LjgzTDYuODMsNUgyMEEyLDIgMCAwLDEgMjIsN00xNiwxMEgxNFY4SDE2VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkT3V0bGluZSA9IFwiTTQsNUEyLDIgMCAwLDAgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1SDRNNCw3SDIwVjE3SDRWN001LDhWMTBIN1Y4SDVNOCw4VjEwSDEwVjhIOE0xMSw4VjEwSDEzVjhIMTFNMTQsOFYxMEgxNlY4SDE0TTE3LDhWMTBIMTlWOEgxN001LDExVjEzSDdWMTFINU04LDExVjEzSDEwVjExSDhNMTEsMTFWMTNIMTNWMTFIMTFNMTQsMTFWMTNIMTZWMTFIMTRNMTcsMTFWMTNIMTlWMTFIMTdNOCwxNFYxNkgxNlYxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkUmV0dXJuID0gXCJNMTksN1YxMUg1LjgzTDkuNDEsNy40MUw4LDZMMiwxMkw4LDE4TDkuNDEsMTYuNThMNS44MywxM0gyMVY3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkU2V0dGluZ3MgPSBcIk0xOSwxMEgxN1Y4SDE5TTE5LDEzSDE3VjExSDE5TTE2LDEwSDE0VjhIMTZNMTYsMTNIMTRWMTFIMTZNMTYsMTdIOFYxNUgxNk03LDEwSDVWOEg3TTcsMTNINVYxMUg3TTgsMTFIMTBWMTNIOE04LDhIMTBWMTBIOE0xMSwxMUgxM1YxM0gxMU0xMSw4SDEzVjEwSDExTTIwLDVINEEyLDIgMCAwLDAgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkU2V0dGluZ3NPdXRsaW5lID0gXCJNNywyMkg5VjI0SDdWMjJNMTEsMjJIMTNWMjRIMTFWMjJNMTUsMjJIMTdWMjRIMTVWMjJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMjBWMTdINFY3TTUsOFYxMEg3VjhINU04LDhWMTBIMTBWOEg4TTExLDhWMTBIMTNWOEgxMU0xNCw4VjEwSDE2VjhIMTRNMTcsOFYxMEgxOVY4SDE3TTUsMTFWMTNIN1YxMUg1TTgsMTFWMTNIMTBWMTFIOE0xMSwxMVYxM0gxM1YxMUgxMU0xNCwxMVYxM0gxNlYxMUgxNE0xNywxMVYxM0gxOVYxMUgxN004LDE0VjE2SDE2VjE0SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRTcGFjZSA9IFwiTTMgMTVINVYxOUgxOVYxNUgyMVYxOUMyMSAyMC4xIDIwLjEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRUYWIgPSBcIk0yMCwxOEgyMlY2SDIwTTExLjU5LDcuNDFMMTUuMTcsMTFIMVYxM0gxNS4xN0wxMS41OSwxNi41OEwxMywxOEwxOSwxMkwxMyw2TDExLjU5LDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRWYXJpYW50ID0gXCJNNiwxNkgxOFYxOEg2VjE2TTYsMTNWMTVIMlYxM0g2TTcsMTVWMTNIMTBWMTVIN00xMSwxNVYxM0gxM1YxNUgxMU0xNCwxNVYxM0gxN1YxNUgxNE0xOCwxNVYxM0gyMlYxNUgxOE0yLDEwSDVWMTJIMlYxME0xOSwxMlYxMEgyMlYxMkgxOU0xOCwxMkgxNlYxMEgxOFYxMk04LDEySDZWMTBIOFYxMk0xMiwxMkg5VjEwSDEyVjEyTTE1LDEySDEzVjEwSDE1VjEyTTIsOVY3SDRWOUgyTTUsOVY3SDdWOUg1TTgsOVY3SDEwVjlIOE0xMSw5VjdIMTNWOUgxMU0xNCw5VjdIMTZWOUgxNE0xNyw5VjdIMjJWOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLaGFuZGEgPSBcIk0xNiAyMEMxOS43MiAxOCAyMiAxNS4yNyAyMiAxMkMyMiA5LjM0IDIwLjQ2IDYuOSAxNy44OSA1SDE3LjgyQzE5IDYuMzUgMTkuNjggOC4wOSAxOS42OCAxMEMxOS42OCAxMyAxOCAxNSAxNS41IDE2LjgzQzE1LjUgMTYuODQgMTQuMzggMTcuNTQgMTMgMTguNDFWMTcuMzNMMTUgMTZDMTUgMTYgMTQuOCAxNS40IDE0LjU4IDE0LjQ2QzE2LjYgMTMuNTggMTggMTEuNjkgMTggOS41QzE4IDcuMzQgMTYuNjQgNS40NyAxNC42NSA0LjU3QzE0Ljg0IDMuNjMgMTUgMyAxNSAzTDEyIDFMOSAzQzkgMyA5LjE2IDMuNjMgOS4zNSA0LjU3QzcuMzcgNS40NyA2IDcuMzQgNiA5LjVDNiAxMS42OSA3LjQgMTMuNTggOS40MiAxNC40NkM5LjIgMTUuNCA5IDE2IDkgMTZMMTEgMTcuMzNWMTguNDFDOS42MiAxNy41NCA4LjUgMTYuODQgOC41IDE2LjgzQzYgMTUgNC4zMiAxMyA0LjMyIDEwQzQuMzIgOC4wOSA1IDYuMzUgNi4xOCA1SDYuMTJDMy41NCA2LjkgMiA5LjM0IDIgMTJDMiAxNS4yNyA0LjI5IDE4IDggMjBMOSAxOC41TDEwLjkyIDE5LjczTDcuMzQgMjJMOCAyM0wxMSAyMS4wN1YyM0gxM1YyMS4wN0wxNiAyM0wxNi42NiAyMkwxMy4wOCAxOS43M0wxNSAxOC41TDE2IDIwTTE2Ljc1IDkuNUMxNi43NSAxMS4wOSAxNS43NiAxMi40NiAxNC4zMSAxMy4xOUMxNC4xNCAxMi4yMyAxNCAxMS4xMiAxNCAxMEMxNCA4LjY3IDE0LjIgNy4xNSAxNC40MiA1Ljg2QzE1LjgxIDYuNiAxNi43NSA3Ljk1IDE2Ljc1IDkuNU03LjI1IDkuNUM3LjI1IDcuOTUgOC4xOSA2LjYgOS41OSA1Ljg2QzkuOCA3LjE1IDEwIDguNjcgMTAgMTBDMTAgMTEuMTIgOS44NiAxMi4yMyA5LjY5IDEzLjE5QzguMjQgMTIuNDYgNy4yNSAxMS4wOSA3LjI1IDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLaWNrc3RhcnRlciA9IFwiTTE5LjMgMTAuMkwxNy41IDEyTDE5LjMgMTMuOEMyMS4xOSAxNS42NyAyMS4xOSAxOC43MiAxOS4zIDIwLjU5QzE3LjQyIDIyLjQ2IDE0LjM1IDIyLjQ2IDEyLjQ3IDIwLjU5TDExLjggMTkuOTNDMTAuOTMgMjEuMTkgOS41IDIyIDcuODMgMjJDNS4xNiAyMiAzIDE5Ljg1IDMgMTcuMlY2LjhDMyA0LjE1IDUuMTYgMiA3LjgzIDJDOS41IDIgMTAuOTMgMi44MiAxMS44IDQuMDdMMTIuNDcgMy40MUMxNC4zNSAxLjU0IDE3LjQyIDEuNTQgMTkuMyAzLjQxQzIxLjE5IDUuMjggMjEuMTkgOC4zMyAxOS4zIDEwLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2xpbmdvbiA9IFwiTTQuNzkgMjEuNUw0LjcxIDIxLjI0QzQuNTMgMjAuNjUgNC40NyAyMC4wOCA0LjUgMTkuNEM0LjYgMTguMTcgNS4xNCAxNy4zMSA1LjgyIDE2LjU5QzUuNjQgMTYgNS41MyAxNS4zOSA1LjUzIDE0Ljc0QzUuNTMgMTMgNi4yNiAxMS40NCA3LjQ1IDEwLjNDOC4zMyA5LjQ2IDkuNDYgOC44NiAxMC43MSA4LjZDMTEuMzcgNi4yMyAxMS44IDMuOCAxMiAxLjVDMTIuMjQgMy41IDEyLjY1IDYuMTIgMTMuMyA4LjU4QzE0LjYgOC44MiAxNS43NiA5LjQzIDE2LjY3IDEwLjNDMTcuODUgMTEuNDQgMTguNTkgMTMgMTguNTkgMTQuNzRDMTguNTkgMTUuMzUgMTguNSAxNS45MyAxOC4zMyAxNi41QzE5LjIxIDE2LjkyIDIwLjIgMTcuMTcgMjEuNSAxNy4yOUwyMS40NCAxNy40NEMyMS4zMiAxNy43NyAyMSAxOCAyMC43MSAxOC4xOEwyMC42OSAxOC4xOUMyMC4xMyAxOC41NyAxOS4xOCAxOSAxNy44NSAxOUMxNy43IDE5IDE3LjU2IDE5IDE3LjQxIDE5QzE3LjIzIDE5IDE3LjA2IDE4Ljk3IDE2LjkgMTguOTVDMTYuODMgMTkgMTYuNzUgMTkuMSAxNi42NyAxOS4xOEMxNS41IDIwLjMxIDEzLjg2IDIxIDEyLjA2IDIxQzEwLjI3IDIxIDguNjQgMjAuMzEgNy40NiAxOS4xOEM3LjQyIDE5LjE0IDcuMzggMTkuMSA3LjM0IDE5LjA2QzYuMzQgMTkuNTkgNS41NCAyMC4zMyA0Ljk0IDIxLjI3TDQuOCAyMS41TTYuNSAxNS45NEM2LjY1IDE1LjgyIDguMiAxNC41IDguNjMgMTMuNzhMOC43MyAxMy42MUM5LjY1IDE1IDEwLjQgMTYuMjggMTEuNDMgMTguMDhMMTEuMjIgMTguMDlDMTAuMDggMTguMTYgOS4wNSAxOC4zNyA4LjE1IDE4LjdDOS4xNyAxOS42MiAxMC41NSAyMC4xOSAxMi4wNiAyMC4xOUMxMy41NCAyMC4xOSAxNC44OCAxOS42NSAxNS44OSAxOC43N0MxNS42NCAxOC43MiAxNS4zOSAxOC42NSAxNS4xNSAxOC41OUMxNC4zOCAxOC40MSAxMy42NSAxOC4yMiAxMi44MSAxOC4xOUwxMi42MiAxOC4xOEwxMi43IDE4QzEzLjEgMTcuMiAxNC44IDE0LjQxIDE1LjIzIDEzLjYzTDE1LjM0IDEzLjgxQzE2IDE0Ljc3IDE2LjczIDE1LjUgMTcuNTggMTYuMDdDMTcuNjkgMTUuNjQgMTcuNzUgMTUuMiAxNy43NSAxNC43NUMxNy43NSAxMy4yNSAxNy4xMSAxMS44OSAxNi4wOSAxMC45QzE1LjQgMTAuMjQgMTQuNTMgOS43NCAxMy41NSA5LjVDMTMuODUgMTAuNSAxNC4yIDExLjUgMTQuNTkgMTIuMzVMMTQuNjIgMTIuNEwxNC41OSAxMi40NkMxNC4yIDEzLjIyIDEzLjc2IDEzLjk1IDEzLjMzIDE0LjY2QzEyLjk0IDE1LjMgMTIuNTQgMTUuOTYgMTIuMTggMTYuNjRMMTIuMDggMTYuODNMMTEuOTYgMTYuNjVDMTEuMzkgMTUuODIgOS43NSAxMy4wNiA5LjQxIDEyLjVDOS44MSAxMS41IDEwLjE1IDEwLjUgMTAuNDUgOS41QzkuNSA5Ljc4IDguNyAxMC4yNiA4LjAzIDEwLjlDNyAxMS44OCA2LjM3IDEzLjI1IDYuMzcgMTQuNzRDNi4zNyAxNS4xNiA2LjQyIDE1LjU2IDYuNSAxNS45NVwiO1xyXG5leHBvcnQgdmFyIG1kaUtuaWZlID0gXCJNMjAuNjIsMkMyMy45Nyw3LjYxIDEyLjQ3LDIwLjE1IDEyLjQ3LDIwLjE1TDkuNiwxNy4yOEw0LjkxLDIyTDIuNzcsMTkuODZMMjAuNjIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlLbmlmZU1pbGl0YXJ5ID0gXCJNMjIsMkwxNy4zOSwzLjc1TDEwLjQ2LDEwLjY4TDE0LDE0LjIyTDIwLjkyLDcuMjlDMjIuNDMsNS43OCAyMiwyIDIyLDJNOC4zMywxMEw2LjkyLDExLjM5TDguMzMsMTIuOEwyLjY4LDE4LjQ2TDYuMjEsMjJMMTEuODcsMTYuMzRMMTMuMjgsMTcuNzZMMTQuNywxNi4zNEw4LjMzLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtvYWxhID0gXCJNMTkgM0MxOC4xIDMgMTUuNSAzIDE0LjMgNi4xQzEzLjkgNiAxMy40IDYgMTMgNkgxMUMxMC42IDYgMTAuMSA2IDkuNyA2LjFDOC41IDMgNS45IDMgNSAzQzQgMyAxIDQgMSA5QzEgMTIuNiAzLjUgMTMuNiA1IDEzLjlWMTVDNSAxOC4zIDcuNyAyMSAxMSAyMUgxM0MxNi4zIDIxIDE5IDE4LjMgMTkgMTVWMTMuOUMyMC41IDEzLjYgMjMgMTIuNiAyMyA5QzIzIDQgMjAgMyAxOSAzTTUgMTJWMTIuNEMyLjkgMTEuOCAzLjMgOS41IDQuMyA4LjdDNCA4LjMgMyA5IDMgOC42QzMgOC4xIDQuOCA3LjQgNS4xIDcuM0M0LjggNi44IDMuNiA3IDMuNiA2LjZDMy42IDYuMyA0LjggNS44IDUuOCA2QzYuMyA2LjEgNi45IDYuMyA3LjQgNi43QzYgOCA1IDkuOCA1IDEyTTguNSAxNUM2LjUgMTUgNi41IDEyIDguNSAxMkMxMC41IDEyIDEwLjUgMTUgOC41IDE1TTEyLjUgMThIMTEuNUMxMC44IDE4IDEwLjMgMTcuMyAxMC42IDE2LjdMMTEuMyAxMy43QzExLjQgMTMuMyAxMS44IDEzLjEgMTIuMSAxM0MxMi40IDEzIDEyLjcgMTMuMiAxMi45IDEzLjdMMTMuNiAxNi43QzEzLjcgMTcuMyAxMy4yIDE4IDEyLjUgMThNMTUuNSAxNUMxMy41IDE1IDEzLjUgMTIgMTUuNSAxMkMxNy41IDEyIDE3LjUgMTUgMTUuNSAxNU0xOS43IDguNkMyMC43IDkuNCAyMS4xIDExLjcgMTkgMTIuM0MxOS4xIDEwLjEgMTguMSA4IDE2LjYgNi43QzE3LjEgNi4zIDE3LjcgNi4xIDE4LjIgNkMxOS4yIDUuOCAyMC40IDYuMiAyMC40IDYuNkMyMC40IDcgMTkuMiA2LjggMTguOSA3LjJDMTkuMiA3LjQgMjEgOC4xIDIxIDguNkMyMSA5IDIwLjEgOC4zIDE5LjcgOC42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtvZGkgPSBcIk0xMi4wMywxQzExLjgyLDEgMTEuNiwxLjExIDExLjQxLDEuMzFDMTAuNTYsMi4xNiA5LjcyLDMgOC44OCwzLjg0QzguNjYsNC4wNiA4LjYsNC4xOCA4LjM4LDQuMzhDOC4wOSw0LjYyIDcuOTYsNC45MSA3Ljk3LDUuMjhDOCw2LjU3IDgsNy44NCA4LDkuMTNDOCwxMC40NiA4LDExLjgyIDgsMTMuMTZDOCwxMy4yNiA4LDEzLjM0IDguMDMsMTMuNDRDOC4xMSwxMy43NSA4LjMxLDEzLjgyIDguNTMsMTMuNTlDOS43MywxMi4zOSAxMC44LDExLjMgMTIsMTAuMDlDMTMuMzYsOC43MyAxNC43Myw3LjM3IDE2LjA5LDZDMTYuNSw1LjYgMTYuNSw1LjE1IDE2LjA5LDQuNzVDMTQuOTQsMy42IDEzLjc3LDIuNDcgMTIuNjMsMS4zMUMxMi40MywxLjExIDEyLjI0LDEgMTIuMDMsMU0xOC42Niw3LjY2QzE4LjQ1LDcuNjYgMTguMjUsNy43NSAxOC4wNiw3Ljk0QzE2LjkxLDkuMSAxNS43NSwxMC4yNCAxNC41OSwxMS40MUMxNC4yLDExLjggMTQuMiwxMi4yMyAxNC41OSwxMi42M0MxNS43NCwxMy43OCAxNi44OCwxNC45NCAxOC4wMywxNi4wOUMxOC40MywxNi41IDE4Ljg1LDE2LjUgMTkuMjUsMTYuMDlDMjAuMzYsMTUgMjEuNSwxMy44NyAyMi41OSwxMi43NUMyMi43NiwxMi41OCAyMi45MywxMi40MiAyMywxMi4xOVYxMS44OEMyMi45MywxMS42NCAyMi43NiwxMS41IDIyLjU5LDExLjMxQzIxLjQ3LDEwLjE5IDIwLjM3LDkuMDYgMTkuMjUsNy45NEMxOS4wNiw3Ljc1IDE4Ljg2LDcuNjYgMTguNjYsNy42Nk00Ljc4LDguMDlDNC42NSw4LjA0IDQuNTgsOC4xNCA0LjUsOC4yMkMzLjM1LDkuMzkgMi4zNCwxMC40MyAxLjE5LDExLjU5QzAuOTMsMTEuODYgMC45MywxMi4yNCAxLjE5LDEyLjVDMS44MSwxMy4xMyAyLjQ0LDEzLjc1IDMuMDYsMTQuMzhDMy42LDE0LjkyIDQsMTUuMzMgNC41NiwxNS44OEM0LjcyLDE2LjAzIDQuODYsMTYgNC45NCwxNS44MUM1LDE1LjcxIDUsMTUuNTggNSwxNS40N0M1LDE0LjI5IDUsMTMuMzcgNSwxMi4xOUM1LDExIDUsOS44MSA1LDguNjNDNSw4LjU1IDUsOC40NSA0Ljk3LDguMzhDNC45NSw4LjI1IDQuOSw4LjE0IDQuNzgsOC4wOU0xMi4wOSwxNC4yNUMxMS44OSwxNC4yNSAxMS42NiwxNC4zNCAxMS40NywxNC41M0MxMC4zMiwxNS42OSA5LjE4LDE2Ljg3IDguMDMsMTguMDNDNy42MywxOC40MyA3LjYzLDE4Ljg1IDguMDMsMTkuMjVDOS4xNCwyMC4zNyAxMC4yNiwyMS40NyAxMS4zOCwyMi41OUMxMS41NCwyMi43NiAxMS43MSwyMi45MyAxMS45NCwyM0gxMi4yMkMxMi40NCwyMi45NCAxMi42MiwyMi43OSAxMi43OCwyMi42M0MxMy45LDIxLjUgMTUuMDMsMjAuMzggMTYuMTYsMTkuMjVDMTYuNTUsMTguODUgMTYuNSwxOC40IDE2LjEzLDE4QzE0Ljk3LDE2Ljg0IDEzLjg0LDE1LjY5IDEyLjY5LDE0LjUzQzEyLjUsMTQuMzQgMTIuMywxNC4yNSAxMi4wOSwxNC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLdWJlcm5ldGVzID0gXCJNMTMuOTUgMTMuNUgxMy43MkMxMy41NCAxMy42MSAxMy40NiAxMy44MiAxMy41NCAxNEwxNC40IDE2LjExQzE1LjIzIDE1LjU4IDE1Ljg2IDE0Ljc5IDE2LjE5IDEzLjg2TDEzLjk2IDEzLjVIMTMuOTVNMTAuNSAxMy43OUMxMC40NCAxMy42MiAxMC4yOSAxMy41IDEwLjEyIDEzLjVIMTAuMDRMNy44MiAxMy44N0M4LjE1IDE0Ljc5IDguNzggMTUuNTcgOS42MSAxNi4xTDEwLjQ2IDE0LjAzVjE0QzEwLjUgMTMuOTUgMTAuNSAxMy44NiAxMC41IDEzLjc5TTEyLjMzIDE0LjZDMTIuMjMgMTQuNDIgMTIgMTQuMzUgMTEuODIgMTQuNDVDMTEuNzUgMTQuNSAxMS43IDE0LjUzIDExLjY3IDE0LjZIMTEuNjZMMTAuNTcgMTYuNTdDMTEuMzUgMTYuODMgMTIuMTkgMTYuODggMTMgMTYuNjlDMTMuMTQgMTYuNjYgMTMuMjkgMTYuNjIgMTMuNDMgMTYuNTdMMTIuMzQgMTQuNkgxMi4zM00xNS43OCAxMC4wM0wxNC4xIDExLjVMMTQuMTEgMTEuNTNDMTMuOTUgMTEuNjcgMTMuOTMgMTEuOTEgMTQuMDcgMTIuMDZDMTQuMTIgMTIuMTIgMTQuMTggMTIuMTYgMTQuMjUgMTIuMThMMTQuMjYgMTIuMTlMMTYuNDMgMTIuODFDMTYuNSAxMS44NCAxNi4yOSAxMC44NiAxNS43OCAxMC4wM00xMi42NyAxMC4xOUMxMi42OCAxMC40IDEyLjg1IDEwLjU2IDEzLjA2IDEwLjU1QzEzLjE0IDEwLjU1IDEzLjIxIDEwLjUzIDEzLjI3IDEwLjVIMTMuMjhMMTUuMTEgOS4xOUMxNC40MSA4LjUgMTMuNSA4LjA3IDEyLjU0IDcuOTVMMTIuNjcgMTAuMTlNMTAuNzMgMTAuNUMxMC45IDEwLjYxIDExLjEzIDEwLjU4IDExLjI1IDEwLjQxQzExLjMgMTAuMzUgMTEuMzIgMTAuMjggMTEuMzMgMTAuMkgxMS4zNEwxMS40NiA3Ljk1QzExLjMxIDcuOTcgMTEuMTYgOCAxMSA4LjAzQzEwLjIgOC4yMSA5LjQ2IDguNjEgOC44OCA5LjE5TDEwLjcyIDEwLjVIMTAuNzNNOS43NCAxMi4xOUM5Ljk0IDEyLjE0IDEwLjA2IDExLjkzIDEwIDExLjczQzEwIDExLjY1IDkuOTUgMTEuNTkgOS44OSAxMS41NFYxMS41M0w4LjIxIDEwQzcuNjkgMTAuODYgNy40NyAxMS44NCA3LjU4IDEyLjgyTDkuNzQgMTIuMlYxMi4xOU0xMS4zOCAxMi44NUwxMiAxMy4xNUwxMi42MiAxMi44NUwxMi43NyAxMi4xOEwxMi4zNCAxMS42NUgxMS42NUwxMS4yMiAxMi4xOEwxMS4zOCAxMi44NU0yMi4yNyAxNC4xN0wyMC41IDYuNUMyMC40MSA2LjA4IDIwLjEzIDUuNzQgMTkuNzYgNS41NkwxMi41OSAyLjEzQzEyLjIyIDEuOTYgMTEuNzggMS45NiAxMS40IDIuMTNMNC4yNCA1LjU2QzMuODcgNS43NCAzLjU5IDYuMDggMy41IDYuNUwxLjczIDE0LjE3QzEuNjggMTQuMzcgMS42OCAxNC41NyAxLjczIDE0Ljc2QzEuNzQgMTQuODIgMS43NiAxNC44OCAxLjc4IDE0Ljk0QzEuODEgMTUuMDMgMS44NiAxNS4xMyAxLjkxIDE1LjIxQzEuOTQgMTUuMjUgMS45NiAxNS4yOSAyIDE1LjMyTDYuOTUgMjEuNUM2Ljk3IDIxLjUgNyAyMS41NCA3IDIxLjU2QzcuMSAyMS42NSA3LjE5IDIxLjcyIDcuMjggMjEuNzhDNy40IDIxLjg2IDcuNTQgMjEuOTIgNy42OCAyMS45NUM3Ljc5IDIyIDcuOTEgMjIgOCAyMkgxNi4xMkMxNi4xOSAyMiAxNi4yNiAyMS45NyAxNi4zMiAyMS45NUMxNi4zNyAyMS45NCAxNi40MiAyMS45MiAxNi40NiAyMS45MUMxNi41IDIxLjg5IDE2LjUzIDIxLjg4IDE2LjU3IDIxLjg2QzE2LjYyIDIxLjg0IDE2LjY3IDIxLjgxIDE2LjcyIDIxLjc4QzE2Ljg0IDIxLjcgMTYuOTUgMjEuNiAxNy4wNSAyMS41TDE3LjIgMjEuM0wyMiAxNS4zMkMyMi4xIDE1LjIgMjIuMTcgMTUuMDcgMjIuMjIgMTQuOTRDMjIuMjQgMTQuODggMjIuMjYgMTQuODIgMjIuMjcgMTQuNzZDMjIuMzIgMTQuNTcgMjIuMzIgMTQuMzYgMjIuMjcgMTQuMTdNMTQuODQgMTcuMTZDMTQuODYgMTcuMjIgMTQuODggMTcuMjggMTQuOTEgMTcuMzNDMTQuODcgMTcuNDEgMTQuODUgMTcuNSAxNC44OCAxNy41OUMxNSAxNy44MyAxNS4xMSAxOC4wNSAxNS4yNiAxOC4yN0MxNS4zNCAxOC4zOCAxNS40MiAxOC41IDE1LjUgMTguNjFDMTUuNSAxOC42NCAxNS41MyAxOC42OSAxNS41NCAxOC43M0MxNS42NiAxOC45MyAxNS42IDE5LjE5IDE1LjM5IDE5LjMyUzE0LjkyIDE5LjM3IDE0LjggMTkuMTdDMTQuNzkgMTkuMTQgMTQuNzggMTkuMTIgMTQuNzcgMTkuMDlDMTQuNzUgMTkuMDYgMTQuNzMgMTkgMTQuNzEgMTlDMTQuNjYgMTguODUgMTQuNjIgMTguNzIgMTQuNTkgMTguNTlDMTQuNSAxOC4zNCAxNC40MiAxOC4xIDE0LjI5IDE3Ljg3QzE0LjI0IDE3LjggMTQuMTYgMTcuNzUgMTQuMDggMTcuNzNMMTQgMTcuNTdDMTIuNzEgMTguMDUgMTEuMyAxOC4wNSAxMC4wMyAxNy41Nkw5LjkzIDE3Ljc0QzkuODYgMTcuNzUgOS43OSAxNy43OCA5Ljc0IDE3LjgzQzkuNiAxOC4wNyA5LjUgMTguMzIgOS40MSAxOC42QzkuMzggMTguNzMgOS4zNCAxOC44NiA5LjI5IDE5QzkuMjcgMTkgOS4yNSAxOS4wNyA5LjIzIDE5LjFDOS4xNSAxOS4zMiA4LjkxIDE5LjQ0IDguNjggMTkuMzZDOC40NiAxOS4yOCA4LjM0IDE5LjA0IDguNDIgMTguODFDOC40MyAxOC43OCA4LjQ1IDE4Ljc2IDguNDYgMTguNzNDOC41IDE4LjcgOC41IDE4LjY1IDguNSAxOC42MkM4LjU5IDE4LjUgOC42NiAxOC4zOSA4Ljc0IDE4LjI3QzguOSAxOC4wNiA5LjAzIDE3LjgyIDkuMTMgMTcuNThDOS4xNCAxNy41IDkuMTMgMTcuNDEgOS4xIDE3LjMzTDkuMTcgMTcuMTVDOCAxNi40NSA3LjEyIDE1LjM2IDYuNyAxNC4wNkw2LjUgMTQuMDlDNi40NCAxNC4wNCA2LjM1IDE0IDYuMjcgMTRDNiAxNC4wNSA1Ljc2IDE0LjEzIDUuNSAxNC4yMkM1LjM5IDE0LjI4IDUuMjYgMTQuMzMgNS4xMyAxNC4zN0M1LjEgMTQuMzggNS4wNiAxNC4zOSA1IDE0LjRDNC43OCAxNC40NyA0LjU0IDE0LjM1IDQuNDYgMTQuMTNDNC4zOSAxMy45IDQuNSAxMy42NiA0Ljc0IDEzLjU4QzQuNzYgMTMuNTggNC43OSAxMy41NyA0LjgyIDEzLjU3VjEzLjU2SDQuODNMNC45NCAxMy41NEM1LjA4IDEzLjUgNS4yMiAxMy41IDUuMzUgMTMuNUM1LjYxIDEzLjUgNS44NyAxMy40NCA2LjEyIDEzLjM4QzYuMiAxMy4zMyA2LjI2IDEzLjI3IDYuMzEgMTMuMTlMNi41IDEzLjE0QzYuMjkgMTEuNzggNi42IDEwLjQxIDcuMzYgOS4yN0w3LjIyIDkuMTVDNy4yMiA5LjA2IDcuMTkgOC45NyA3LjE0IDguOUM2Ljk0IDguNzMgNi43MyA4LjU4IDYuNSA4LjQ1QzYuMzggOC4zOSA2LjI2IDguMzIgNi4xNCA4LjI0QzYuMTIgOC4yMiA2LjA4IDguMTkgNi4wNiA4LjE3TDYuMDUgOC4xNkM1Ljg1IDggNS44IDcuNzQgNS45NCA3LjUzQzYuMDMgNy40MyA2LjE1IDcuMzggNi4yOSA3LjM4QzYuNCA3LjM5IDYuNSA3LjQzIDYuNTkgNy41TDYuNjggNy41N0M2Ljc4IDcuNjYgNi44NyA3Ljc3IDYuOTYgNy44N0M3LjE0IDguMDYgNy4zMyA4LjI0IDcuNTQgOC4zOUM3LjYyIDguNDMgNy43MSA4LjQ0IDcuOCA4LjQyTDcuOTUgOC41M0M4LjcgNy43MyA5LjY4IDcuMTcgMTAuNzUgNi45M0MxMSA2Ljg3IDExLjI3IDYuODMgMTEuNTMgNi44MUwxMS41NCA2LjYzQzExLjYxIDYuNTcgMTEuNjUgNi41IDExLjY4IDYuNEMxMS42OSA2LjE0IDExLjY3IDUuODggMTEuNjMgNS42M0MxMS42IDUuNSAxMS41OCA1LjM2IDExLjU3IDUuMjJWNS4xQzExLjU1IDQuODYgMTEuNzIgNC42NSAxMS45NiA0LjYyUzEyLjQgNC43NyAxMi40MyA1VjUuMjJDMTIuNDIgNS4zNiAxMi40IDUuNSAxMi4zNyA1LjYzQzEyLjMzIDUuODggMTIuMzEgNi4xNCAxMi4zMiA2LjRDMTIuMzQgNi41IDEyLjM5IDYuNTcgMTIuNDYgNi42MkwxMi40NyA2LjgxQzEzLjgzIDYuOTMgMTUuMDkgNy41NCAxNi4wMyA4LjUzTDE2LjE5IDguNDFDMTYuMjggOC40MyAxNi4zNyA4LjQyIDE2LjQ1IDguMzhDMTYuNjYgOC4yMyAxNi44NiA4LjA1IDE3LjAzIDcuODZDMTcuMTIgNy43NiAxNy4yMSA3LjY2IDE3LjMxIDcuNTZDMTcuMzQgNy41NCAxNy4zOCA3LjUgMTcuNDEgNy41QzE3LjU4IDcuMzIgMTcuODUgNy4zMiAxOCA3LjVDMTguMTkgNy42NiAxOC4xOCA3LjkzIDE4IDguMUMxOCA4LjEyIDE3Ljk3IDguMTQgMTcuOTQgOC4xNkMxNy45MiA4LjE4IDE3Ljg4IDguMjEgMTcuODUgOC4yM0MxNy43NCA4LjMxIDE3LjYyIDguMzggMTcuNSA4LjQ0QzE3LjI3IDguNTcgMTcuMDUgOC43MiAxNi44NiA4Ljg5QzE2LjggOC45NiAxNi43NyA5LjA0IDE2Ljc4IDkuMTNMMTYuNjIgOS4yN0MxNy4zOSAxMC40IDE3LjcgMTEuNzggMTcuNSAxMy4xM0wxNy42OSAxMy4xOEMxNy43MyAxMy4yNiAxNy44IDEzLjMyIDE3Ljg4IDEzLjM2QzE4LjEzIDEzLjQzIDE4LjM5IDEzLjQ3IDE4LjY1IDEzLjVIMTkuMDZDMTkuMDkgMTMuNTMgMTkuMTQgMTMuNTQgMTkuMTggMTMuNTVDMTkuNDIgMTMuNTggMTkuNTggMTMuOCAxOS41NSAxNC4wNEMxOS41IDE0LjI3IDE5LjMxIDE0LjQ0IDE5LjA3IDE0LjQxQzE5LjA0IDE0LjQgMTkgMTQuNCAxOSAxNC4zOVYxNC4zOEMxOC45NCAxNC4zOCAxOC45IDE0LjM3IDE4Ljg2IDE0LjM2QzE4LjczIDE0LjMyIDE4LjYxIDE0LjI3IDE4LjUgMTQuMjFDMTguMjQgMTQuMTEgMTggMTQuMDQgMTcuNzMgMTRDMTcuNjQgMTQgMTcuNTYgMTQgMTcuNSAxNC4wOEMxNy40MyAxNC4wNyAxNy4zNyAxNC4wNiAxNy4zMSAxNC4wNUMxNi45IDE1LjM2IDE2IDE2LjQ2IDE0Ljg0IDE3LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsID0gXCJNMTcuNjMsNS44NEMxNy4yNyw1LjMzIDE2LjY3LDUgMTYsNUg1QTIsMiAwIDAsMCAzLDdWMTdBMiwyIDAgMCwwIDUsMTlIMTZDMTYuNjcsMTkgMTcuMjcsMTguNjYgMTcuNjMsMTguMTVMMjIsMTJMMTcuNjMsNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbE11bHRpcGxlID0gXCJNNCAxOUgxM0wxMSAyMUg0QzMuNSAyMSAyLjk3IDIwLjc5IDIuNTkgMjAuNDFDMi4yMSAyMC4wMyAyIDE5LjUgMiAxOVY5SDRWMTlNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg4QzYuOSA1IDYgNS45IDYgN1YxNUM2IDE2LjEgNi45IDE3IDggMTdIMTZDMTYuNjcgMTcgMTcuMjcgMTYuNjYgMTcuNjMgMTYuMTVMMjIgMTFMMTcuNjMgNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbE11bHRpcGxlT3V0bGluZSA9IFwiTTQgMThIMTNMMTEgMjBINEMzLjUgMjAgMi45NyAxOS43OSAyLjU5IDE5LjQxQzIuMjEgMTkuMDMgMiAxOC41IDIgMThWOEg0VjE4TTE3LjYzIDQuODRDMTcuMjcgNC4zMyAxNi42NyA0IDE2IDRIOEM2LjkgNCA2IDQuOSA2IDZWMTRDNiAxNS4xIDYuOSAxNiA4IDE2SDE2QzE2LjY3IDE2IDE3LjI3IDE1LjY2IDE3LjYzIDE1LjE1TDIyIDEwTDE3LjYzIDQuODRNMTYgMTRIOFY2SDE2TDE5LjU1IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT2ZmID0gXCJNMiw0LjI3TDMuMjgsM0wyMCwxOS43MkwxOC43MywyMUwxNi42MywxOC45QzE2LjQzLDE4Ljk2IDE2LjIyLDE5IDE2LDE5SDVBMiwyIDAgMCwxIDMsMTdWN0MzLDYuNSAzLjE3LDYuMDcgMy40Niw1LjczTDIsNC4yN00xNy42Myw1Ljg0TDIyLDEyTDE5LDE2LjJMNy44Myw1SDE2QzE2LjY3LDUgMTcuMjcsNS4zMyAxNy42Myw1Ljg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT2ZmT3V0bGluZSA9IFwiTTIsNC4yN0wzLjI4LDNMMjAsMTkuNzJMMTguNzMsMjFMMTYuNjMsMTguOUMxNi40MywxOC45NiAxNi4yMiwxOSAxNiwxOUg1QTIsMiAwIDAsMSAzLDE3VjdDMyw2LjUgMy4xNyw2LjA3IDMuNDYsNS43M0wyLDQuMjdNNSwxN0gxNC43M0w1LDcuMjdWMTdNMTkuNTUsMTJMMTYsN0g5LjgyTDcuODMsNUgxNkMxNi42Nyw1IDE3LjI3LDUuMzMgMTcuNjMsNS44NEwyMiwxMkwxOSwxNi4yTDE3LjU5LDE0Ljc2TDE5LjU1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT3V0bGluZSA9IFwiTTE2LDE3SDVWN0gxNkwxOS41NSwxMk0xNy42Myw1Ljg0QzE3LjI3LDUuMzMgMTYuNjcsNSAxNiw1SDVBMiwyIDAgMCwwIDMsN1YxN0EyLDIgMCAwLDAgNSwxOUgxNkMxNi42NywxOSAxNy4yNywxOC42NiAxNy42MywxOC4xNUwyMiwxMkwxNy42Myw1Ljg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsUGVyY2VudCA9IFwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVINUMzLjkgNSAzIDUuOSAzIDdWMTdDMyAxOC4xMSAzLjkgMTkgNSAxOUgxNkMxNi42NyAxOSAxNy4yNyAxOC42NiAxNy42MyAxOC4xNUwyMiAxMkwxNy42MyA1Ljg0TTguNDUgOC4wM0M5LjIzIDguMDMgOS44NyA4LjY3IDkuODcgOS40NVM5LjIzIDEwLjg3IDguNDUgMTAuODcgNy4wMyAxMC4yMyA3LjAzIDkuNDUgNy42NyA4LjAzIDguNDUgOC4wM00xMy41NSAxNS45N0MxMi43NyAxNS45NyAxMi4xMyAxNS4zMyAxMi4xMyAxNC41NVMxMi43NyAxMy4xMyAxMy41NSAxMy4xMyAxNC45NyAxMy43NyAxNC45NyAxNC41NSAxNC4zMyAxNS45NyAxMy41NSAxNS45N004LjIgMTZMNyAxNC44TDEzLjggOEwxNSA5LjJMOC4yIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsUGVyY2VudE91dGxpbmUgPSBcIk0xNiAxN0g1VjdIMTZMMTkuNTUgMTJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg1QzMuOSA1IDMgNS45IDMgN1YxN0MzIDE4LjExIDMuOSAxOSA1IDE5SDE2QzE2LjY3IDE5IDE3LjI3IDE4LjY2IDE3LjYzIDE4LjE1TDIyIDEyTDE3LjYzIDUuODRNMTMuOCA4TDE1IDkuMkw4LjIgMTZMNyAxNC44TTguNDUgOC4wM0M5LjIzIDguMDMgOS44NyA4LjY3IDkuODcgOS40NVM5LjIzIDEwLjg3IDguNDUgMTAuODcgNy4wMyAxMC4yMyA3LjAzIDkuNDUgNy42NyA4LjAzIDguNDUgOC4wM00xMy41NSAxMy4xM0MxNC4zMyAxMy4xMyAxNC45NyAxMy43NyAxNC45NyAxNC41NUMxNC45NyAxNS4zMyAxNC4zMyAxNS45NyAxMy41NSAxNS45N0MxMi43NyAxNS45NyAxMi4xMyAxNS4zMyAxMi4xMyAxNC41NUMxMi4xMyAxMy43NyAxMi43NyAxMy4xMyAxMy41NSAxMy4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbFZhcmlhbnQgPSBcIk0zLjUsMTlMOC4zNCwxMkwzLjUsNUgxNC41QzE1LjE3LDUgMTUuNzIsNS4zIDE2LjEzLDUuODZMMjAuNSwxMkwxNi4xMywxOC4xNEMxNS43MiwxOC43IDE1LjE3LDE5IDE0LjUsMTlIMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsVmFyaWFudE91dGxpbmUgPSBcIk02LjUsMTdIMTVMMTguNSwxMkwxNSw3SDYuNUwxMCwxMkw2LjUsMTdNMTUsMTlIM0w3LjUsMTJMMyw1SDE1QzE1LjY5LDUgMTYuMjMsNS4zIDE2LjY0LDUuODZMMjEsMTJMMTYuNjQsMTguMTRDMTYuMjMsMTguNyAxNS42OSwxOSAxNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWRkZXIgPSBcIk0xNCAxVjNIMTBWMUg4VjIySDEwVjIwSDE0VjIySDE2VjFIMTRNMTQgNVY4SDEwVjVIMTRNMTQgMTBWMTNIMTBWMTBIMTRNMTAgMThWMTVIMTRWMThIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFkeWJ1ZyA9IFwiTTEyLDVDMTIuNzQsNSAxMy40Nyw1LjEgMTQuMTUsNS4yOUwxNS43OCwyLjQ2QzE2LjA2LDIgMTYuNjcsMS44MiAxNy4xNSwyLjFDMTcuNjMsMi4zNyAxNy43OSwzIDE3LjUsMy40NkwxNiw2LjA3QzE3LjIyLDYuNzggMTguMjMsNy43OSAxOC45Myw5SDUuMDdDNS43Nyw3Ljc5IDYuNzgsNi43OCA4LDYuMDdMNi41LDMuNDZDNi4yMSwzIDYuMzcsMi4zNyA2Ljg1LDIuMUM3LjMzLDEuODIgNy45NCwyIDguMjIsMi40Nkw5Ljg1LDUuMjlDMTAuNTMsNS4xIDExLjI2LDUgMTIsNU0yMCwxM0MyMCwxNy4xNyAxNi44MiwyMC41OSAxMi43NSwyMC45N1YxMC41SDE5LjZDMTkuODYsMTEuMjkgMjAsMTIuMTMgMjAsMTNNNCwxM0M0LDEyLjEzIDQuMTQsMTEuMjkgNC40LDEwLjVIMTEuMjVWMjAuOTdDNy4xOCwyMC41OSA0LDE3LjE3IDQsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFtYmRhID0gXCJNNiwyMEwxMC4xNiw3LjkxTDkuMzQsNkg4VjRIMTBDMTAuNDIsNCAxMC43OCw0LjI2IDEwLjkzLDQuNjNMMTYuNjYsMThIMThWMjBIMTZDMTUuNTcsMjAgMTUuMjEsMTkuNzMgMTUuMDcsMTkuMzZMMTEuMzMsMTAuNjVMOC4xMiwyMEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbXAgPSBcIk04LDJIMTZMMjAsMTRINEw4LDJNMTEsMTVIMTNWMjBIMThWMjJINlYyMEgxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW1wcyA9IFwiTTEwIDJMMTIgOUgyTDQgMk02IDEwSDhWMjBIMTFWMjJIM1YyMEg2VjEwTTIwIDhMMjIgMTVIMTJMMTQgOE0xNiAxNkgxOFYyMEgyMVYyMkgxM1YyMEgxNlYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW4gPSBcIk0xMCwyQzguODksMiA4LDIuODkgOCw0VjdDOCw4LjExIDguODksOSAxMCw5SDExVjExSDJWMTNINlYxNUg1QzMuODksMTUgMywxNS44OSAzLDE3VjIwQzMsMjEuMTEgMy44OSwyMiA1LDIySDlDMTAuMTEsMjIgMTEsMjEuMTEgMTEsMjBWMTdDMTEsMTUuODkgMTAuMTEsMTUgOSwxNUg4VjEzSDE2VjE1SDE1QzEzLjg5LDE1IDEzLDE1Ljg5IDEzLDE3VjIwQzEzLDIxLjExIDEzLjg5LDIyIDE1LDIySDE5QzIwLjExLDIyIDIxLDIxLjExIDIxLDIwVjE3QzIxLDE1Ljg5IDIwLjExLDE1IDE5LDE1SDE4VjEzSDIyVjExSDEzVjlIMTRDMTUuMTEsOSAxNiw4LjExIDE2LDdWNEMxNiwyLjg5IDE1LjExLDIgMTQsMkgxME0xMCw0SDE0VjdIMTBWNE01LDE3SDlWMjBINVYxN00xNSwxN0gxOVYyMEgxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5DaGVjayA9IFwiTTQgMUMyLjg5IDEgMiAxLjg5IDIgM1Y3QzIgOC4xMSAyLjg5IDkgNCA5SDFWMTFIMTNWOUgxMEMxMS4xMSA5IDEyIDguMTEgMTIgN1YzQzEyIDEuODkgMTEuMTEgMSAxMCAxSDRNNCAzSDEwVjdINFYzTTE0IDEzQzEyLjg5IDEzIDEyIDEzLjg5IDEyIDE1VjE5QzEyIDIwLjExIDEyLjg5IDIxIDE0IDIxSDExVjIzSDIzVjIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjE1QzIyIDEzLjg5IDIxLjExIDEzIDIwIDEzSDE0TTE0IDE1SDIwVjE5SDE0VjE1TTUuNSAyMC41TDEwLjUgMTUuNUw5IDE0TDUuNSAxNy41TDMuNSAxNS41TDIgMTdMNS41IDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuQ29ubmVjdCA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTMsMTNWMThMMywyMEgxMFYxOEg1VjEzSDNNMTQsMTNDMTIuODksMTMgMTIsMTMuODkgMTIsMTVWMTlDMTIsMjAuMTEgMTIuODksMjEgMTQsMjFIMTFWMjNIMjNWMjFIMjBDMjEuMTEsMjEgMjIsMjAuMTEgMjIsMTlWMTVDMjIsMTMuODkgMjEuMTEsMTMgMjAsMTNIMTRNMTQsMTVIMjBWMTlIMTRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuRGlzY29ubmVjdCA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTE0LDEzQzEyLjg5LDEzIDEyLDEzLjg5IDEyLDE1VjE5QzEyLDIwLjExIDEyLjg5LDIxIDE0LDIxSDExVjIzSDIzVjIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjE1QzIyLDEzLjg5IDIxLjExLDEzIDIwLDEzSDE0TTMuODgsMTMuNDZMMi40NiwxNC44OEw0LjU5LDE3TDIuNDYsMTkuMTJMMy44OCwyMC41NEw2LDE4LjQxTDguMTIsMjAuNTRMOS41NCwxOS4xMkw3LjQxLDE3TDkuNTQsMTQuODhMOC4xMiwxMy40Nkw2LDE1LjU5TDMuODgsMTMuNDZNMTQsMTVIMjBWMTlIMTRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuUGVuZGluZyA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTMsMTJWMTRINVYxMkgzTTE0LDEzQzEyLjg5LDEzIDEyLDEzLjg5IDEyLDE1VjE5QzEyLDIwLjExIDEyLjg5LDIxIDE0LDIxSDExVjIzSDIzVjIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjE1QzIyLDEzLjg5IDIxLjExLDEzIDIwLDEzSDE0TTMsMTVWMTdINVYxNUgzTTE0LDE1SDIwVjE5SDE0VjE1TTMsMThWMjBINVYxOEgzTTYsMThWMjBIOFYxOEg2TTksMThWMjBIMTFWMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUMgPSBcIk0xNS40NSwxNS45N0wxNS44NywxOC40MUMxNS42MSwxOC41NSAxNS4xOSwxOC42OCAxNC42MywxOC44QzE0LjA2LDE4LjkzIDEzLjM5LDE5IDEyLjYyLDE5QzEwLjQxLDE4Ljk2IDguNzUsMTguMyA3LjY0LDE3LjA0QzYuNSwxNS43NyA1Ljk2LDE0LjE2IDUuOTYsMTIuMjFDNiw5LjkgNi42OCw4LjEzIDgsNi44OUM5LjI4LDUuNjQgMTAuOTIsNSAxMi45LDVDMTMuNjUsNSAxNC4zLDUuMDcgMTQuODQsNS4xOUMxNS4zOCw1LjMxIDE1Ljc4LDUuNDQgMTYuMDQsNS41OUwxNS40NCw4LjA4TDE0LjQsNy43NEMxNCw3LjY0IDEzLjUzLDcuNTkgMTMsNy41OUMxMS44NSw3LjU4IDEwLjg5LDcuOTUgMTAuMTQsOC42OUM5LjM4LDkuNDIgOSwxMC41NCA4Ljk2LDEyLjAzQzguOTcsMTMuMzkgOS4zMywxNC40NSAxMC4wNCwxNS4yM0MxMC43NSwxNiAxMS43NCwxNi40IDEzLjAzLDE2LjQxTDE0LjM2LDE2LjI5QzE0Ljc5LDE2LjIxIDE1LjE1LDE2LjEgMTUuNDUsMTUuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VDcHAgPSBcIk0xMC41LDE1Ljk3TDEwLjkxLDE4LjQxQzEwLjY1LDE4LjU1IDEwLjIzLDE4LjY4IDkuNjcsMTguOEM5LjEsMTguOTMgOC40MywxOSA3LjY2LDE5QzUuNDUsMTguOTYgMy43OSwxOC4zIDIuNjgsMTcuMDRDMS41NiwxNS43NyAxLDE0LjE2IDEsMTIuMjFDMS4wNSw5LjkgMS43Miw4LjEzIDMsNi44OUM0LjMyLDUuNjQgNS45Niw1IDcuOTQsNUM4LjY5LDUgOS4zNCw1LjA3IDkuODgsNS4xOUMxMC40Miw1LjMxIDEwLjgyLDUuNDQgMTEuMDgsNS41OUwxMC41LDguMDhMOS40NCw3Ljc0QzkuMDQsNy42NCA4LjU4LDcuNTkgOC4wNSw3LjU5QzYuODksNy41OCA1LjkzLDcuOTUgNS4xOCw4LjY5QzQuNDIsOS40MiA0LjAzLDEwLjU0IDQsMTIuMDNDNCwxMy4zOSA0LjM3LDE0LjQ1IDUuMDgsMTUuMjNDNS43OSwxNiA2Ljc5LDE2LjQgOC4wNywxNi40MUw5LjQsMTYuMjlDOS44MywxNi4yMSAxMC4xOSwxNi4xIDEwLjUsMTUuOTdNMTEsMTFIMTNWOUgxNVYxMUgxN1YxM0gxNVYxNUgxM1YxM0gxMVYxMU0xOCwxMUgyMFY5SDIyVjExSDI0VjEzSDIyVjE1SDIwVjEzSDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlQ3NoYXJwID0gXCJNMTEuNSwxNS45N0wxMS45MSwxOC40MUMxMS42NSwxOC41NSAxMS4yMywxOC42OCAxMC42NywxOC44QzEwLjEsMTguOTMgOS40MywxOSA4LjY2LDE5QzYuNDUsMTguOTYgNC43OSwxOC4zIDMuNjgsMTcuMDRDMi41NiwxNS43NyAyLDE0LjE2IDIsMTIuMjFDMi4wNSw5LjkgMi43Miw4LjEzIDQsNi44OUM1LjMyLDUuNjQgNi45Niw1IDguOTQsNUM5LjY5LDUgMTAuMzQsNS4wNyAxMC44OCw1LjE5QzExLjQyLDUuMzEgMTEuODIsNS40NCAxMi4wOCw1LjU5TDExLjUsOC4wOEwxMC40NCw3Ljc0QzEwLjA0LDcuNjQgOS41OCw3LjU5IDkuMDUsNy41OUM3Ljg5LDcuNTggNi45Myw3Ljk1IDYuMTgsOC42OUM1LjQyLDkuNDIgNS4wMywxMC41NCA1LDEyLjAzQzUsMTMuMzkgNS4zNywxNC40NSA2LjA4LDE1LjIzQzYuNzksMTYgNy43OSwxNi40IDkuMDcsMTYuNDFMMTAuNCwxNi4yOUMxMC44MywxNi4yMSAxMS4xOSwxNi4xIDExLjUsMTUuOTdNMTMuODksMTlMMTQuNSwxNUgxM0wxMy4zNCwxM0gxNC44NEwxNS4xNiwxMUgxMy42NkwxNCw5SDE1LjVMMTYuMTEsNUgxOC4xMUwxNy41LDlIMTguNUwxOS4xMSw1SDIxLjExTDIwLjUsOUgyMkwyMS42NiwxMUgyMC4xNkwxOS44NCwxM0gyMS4zNEwyMSwxNUgxOS41TDE4Ljg5LDE5SDE2Ljg5TDE3LjUsMTVIMTYuNUwxNS44OSwxOUgxMy44OU0xNi44NCwxM0gxNy44NEwxOC4xNiwxMUgxNy4xNkwxNi44NCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUNzczMgPSBcIk01LDNMNC4zNSw2LjM0SDE3Ljk0TDE3LjUsOC41SDMuOTJMMy4yNiwxMS44M0gxNi44NUwxNi4wOSwxNS42NEwxMC42MSwxNy40NUw1Ljg2LDE1LjY0TDYuMTksMTRIMi44NUwyLjA2LDE4TDkuOTEsMjFMMTguOTYsMThMMjAuMTYsMTEuOTdMMjAuNCwxMC43NkwyMS45NCwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VGb3J0cmFuID0gXCJNNSA0VjZINkM2LjU1IDYgNyA2LjQ1IDcgN1YxN0M3IDE3LjU1IDYuNTUgMTggNiAxOEg1VjIwSDE0VjE4SDEyQzExLjQ1IDE4IDExIDE3LjU1IDExIDE3VjEzSDEzQzEzLjU1IDEzIDE0IDEzLjQ1IDE0IDE0VjE2SDE2VjhIMTRWMTBDMTQgMTAuNTUgMTMuNTUgMTEgMTMgMTFIMTFWNkgxNkMxNy4xMSA2IDE4IDcuMzQgMTggOVYxMEgyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlR28gPSBcIk0yLjY0LDEwLjMzTDIuNjIsMTAuMjdMMi44NCwxMEwyLjk2LDkuOTJINi44TDYuODMsMTBMNi42NSwxMC4yNkw2LjU0LDEwLjMyTDIuNjQsMTAuMzNNMS4wMywxMS4zMUwxLDExLjI2TDEuMjIsMTAuOTdMMS4zNCwxMC45MUg2LjI0TDYuMjksMTFMNi4yMSwxMS4yNEw2LjExLDExLjMxSDEuMDNNMy42MywxMi4zTDMuNTksMTIuMjRMMy43NSwxMS45NkwzLjg1LDExLjlINkw2LjA3LDExLjk3TDYuMDUsMTIuMjJMNS45NywxMi4zSDMuNjNNMTQuNzgsMTAuMTRMMTMsMTAuNjFDMTIuODEsMTAuNjUgMTIuOCwxMC42NiAxMi42NiwxMC41QzEyLjUsMTAuMzIgMTIuMzksMTAuMjEgMTIuMTYsMTAuMUMxMS41LDkuNzYgMTAuODMsOS44NiAxMC4yMiwxMC4yNUM5LjUsMTAuNzMgOS4xMSwxMS40MiA5LjEyLDEyLjNDOS4xMywxMy4xNiA5LjcyLDEzLjg3IDEwLjU3LDE0QzExLjMsMTQuMDkgMTEuOTEsMTMuODMgMTIuNCwxMy4yOEwxMi42OSwxMi44OUgxMC42MkMxMC40LDEyLjg5IDEwLjM1LDEyLjc1IDEwLjQyLDEyLjU3TDEwLjk3LDExLjM5QzExLDExLjMzIDExLjA4LDExLjIyIDExLjI0LDExLjIySDE0LjY4QzE0LjgzLDEwLjcyIDE1LjA5LDEwLjI2IDE1LjQzLDkuODFDMTYuMjEsOC43OCAxNy4xNiw4LjI0IDE4LjQzLDhDMTkuNSw3LjgyIDIwLjU2LDcuOTMgMjEuNSw4LjU3QzIyLjM0LDkuMTUgMjIuODcsOS45MyAyMywxMC45NkMyMy4xOSwxMi40MSAyMi43NiwxMy41OSAyMS43NiwxNC42MUMyMS4wNSwxNS4zMyAyMC4xOCwxNS43OCAxOS4xOSwxNkwxOC4zMywxNi4wOEMxNy4zNSwxNi4wNiAxNi40NiwxNS43OCAxNS43MSwxNS4xM0MxNS4xOSwxNC42OCAxNC44MywxNC4xNCAxNC42NSwxMy41QzE0LjUsMTMuNzQgMTQuMzgsMTMuOTcgMTQuMjEsMTQuMkMxMy40NCwxNS4yMiAxMi40MywxNS44NSAxMS4xNSwxNkMxMC4xLDE2LjE2IDkuMTIsMTUuOTUgOC4yNiwxNS4zMUM3LjQ3LDE0LjcxIDcsMTMuOTEgNi45LDEyLjkyQzYuNzYsMTEuNzUgNy4xLDEwLjcgNy44MSw5Ljc4QzguNTcsOC43OCA5LjU4LDguMTUgMTAuODIsNy45MkMxMS44Miw3Ljc0IDEyLjc5LDcuODYgMTMuNjYsOC40NEMxNC4yMyw4LjgyIDE0LjYzLDkuMzQgMTQuOSw5Ljk2QzE0Ljk0LDEwLjA1IDE0LjksMTAuMTEgMTQuNzgsMTAuMTRNMjAuODksMTEuNzRMMjAuODYsMTEuMzhDMjAuNjcsMTAuMzIgMTkuNjksOS43MiAxOC42Nyw5Ljk1QzE3LjY2LDEwLjE3IDE3LDEwLjggMTYuNzksMTEuODFDMTYuNiwxMi42NSAxNywxMy41IDE3Ljc3LDEzLjg0QzE4LjM2LDE0LjEgMTguOTYsMTQuMDYgMTkuNTMsMTMuNzhDMjAuMzcsMTMuMzUgMjAuODQsMTIuNjYgMjAuODksMTEuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VIYXNrZWxsID0gXCJNMi4wOCwxOUw2Ljc1LDEyTDIuMDgsNUg1LjU4TDEwLjI1LDEyTDUuNTgsMTlIMi4wOE02Ljc1LDE5TDExLjQyLDEyTDYuNzUsNUgxMC4yNUwxOS41OSwxOUgxNi4wOUwxMy4xNywxNC42M0wxMC4yNSwxOUg2Ljc1TTE4LjAzLDE0LjkyTDE2LjUsMTIuNThIMjEuOTJWMTQuOTJIMTguMDNNMTUuNywxMS40MkwxNC4xNCw5LjA4SDIxLjkyVjExLjQySDE1LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VIdG1sNSA9IFwiTTEyLDE3LjU2TDE2LjA3LDE2LjQzTDE2LjYyLDEwLjMzSDkuMzhMOS4yLDguM0gxNi44TDE3LDYuMzFIN0w3LjU2LDEyLjMySDE0LjQ1TDE0LjIyLDE0LjlMMTIsMTUuNUw5Ljc4LDE0LjlMOS42NCwxMy4yNEg3LjY0TDcuOTMsMTYuNDNMMTIsMTcuNTZNNC4wNywzSDE5LjkzTDE4LjUsMTkuMkwxMiwyMUw1LjUsMTkuMkw0LjA3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VKYXZhID0gXCJNMTYuNSw2LjA4QzE2LjUsNi4wOCA5LjY2LDcuNzkgMTIuOTQsMTEuNTZDMTMuOTEsMTIuNjcgMTIuNjksMTMuNjcgMTIuNjksMTMuNjdDMTIuNjksMTMuNjcgMTUuMTQsMTIuNDIgMTQsMTAuODJDMTIuOTQsOS4zNSAxMi4xNCw4LjYyIDE2LjUsNi4wOE0xMi4wMyw3LjI4QzE2LjA4LDQuMDggMTQsMiAxNCwyQzE0Ljg0LDUuMyAxMS4wNCw2LjMgOS42Nyw4LjM2QzguNzMsOS43NiAxMC4xMywxMS4yNyAxMiwxM0MxMS4yOSwxMS4zIDguNzgsOS44NCAxMi4wMyw3LjI4TTkuMzcsMTcuNDdDNi4yOSwxOC4zMyAxMS4yNSwyMC4xIDE1LjE2LDE4LjQzQzE0Ljc4LDE4LjI4IDE0LjQxLDE4LjEgMTQuMDYsMTcuODlDMTIuNywxOC4yIDExLjMsMTguMjYgOS45MiwxOC4wN0M4LjYxLDE3LjkxIDkuMzcsMTcuNDcgOS4zNywxNy40N00xNC42OSwxNS43OUMxMi45NCwxNi4xNyAxMS4xMywxNi4yNiA5LjM1LDE2LjA1QzguMDQsMTUuOTIgOC45LDE1LjI4IDguOSwxNS4yOEM1LjUsMTYuNDEgMTAuNzgsMTcuNjggMTUuNSwxNi4zQzE1LjIxLDE2LjE5IDE0LjkzLDE2IDE0LjY5LDE1Ljc5TTE4LjExLDE5LjA5QzE4LjExLDE5LjA5IDE4LjY4LDE5LjU2IDE3LjUsMTkuOTJDMTUuMjIsMjAuNiA4LjA3LDIwLjgxIDYuMDksMTkuOTVDNS4zOCwxOS42NCA2LjcyLDE5LjIxIDcuMTQsMTkuMTJDNy4zNywxOS4wNiA3LjYsMTkuMDQgNy44MywxOS4wNEM3LjA0LDE4LjUgMi43LDIwLjE0IDUuNjQsMjAuNkMxMy42MSwyMS45IDIwLjE4LDIwIDE4LjExLDE5LjA5TTE1LjM3LDE0LjIzQzE1LjY2LDE0LjA0IDE1Ljk3LDEzLjg4IDE2LjI5LDEzLjc0QzE2LjI5LDEzLjc0IDE0Ljc4LDE0IDEzLjI3LDE0LjE0QzExLjY3LDE0LjMgMTAuMDYsMTQuMzIgOC40NiwxNC4yQzYuMTEsMTMuODkgOS43NSwxMyA5Ljc1LDEzQzguNjUsMTMgNy41NywxMy4yNiA2LjU5LDEzLjc1QzQuNTQsMTQuNzUgMTEuNjksMTUuMiAxNS4zNywxNC4yM00xNi4yNywxNi42NUMxNi4yNSwxNi42OSAxNi4yMywxNi43MiAxNi4xOSwxNi43NUMyMS4yLDE1LjQ0IDE5LjM2LDEyLjExIDE2Ljk2LDEyLjk0QzE2LjgzLDEzIDE2LjcyLDEzLjA4IDE2LjY1LDEzLjE5QzE2Ljc5LDEzLjE0IDE2LjkzLDEzLjEgMTcuMDgsMTMuMDdDMTguMjgsMTIuODMgMjAsMTQuNyAxNi4yNywxNi42NU0xNi40LDIxLjI2QzEzLjM5LDIxLjc4IDEwLjMxLDIxLjgyIDcuMjgsMjEuNEM3LjI4LDIxLjQgNy43NCwyMS43OCAxMC4wOSwyMS45M0MxMy42OSwyMi4xNiAxOS4yMiwyMS44IDE5LjM1LDIwLjFDMTkuMzgsMjAuMTEgMTkuMTIsMjAuNzUgMTYuNCwyMS4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUphdmFzY3JpcHQgPSBcIk0zLDNIMjFWMjFIM1YzTTcuNzMsMTguMDRDOC4xMywxOC44OSA4LjkyLDE5LjU5IDEwLjI3LDE5LjU5QzExLjc3LDE5LjU5IDEyLjgsMTguNzkgMTIuOCwxNy4wNFYxMS4yNkgxMS4xVjE3QzExLjEsMTcuODYgMTAuNzUsMTguMDggMTAuMiwxOC4wOEM5LjYyLDE4LjA4IDkuMzgsMTcuNjggOS4xMSwxNy4yMUw3LjczLDE4LjA0TTEzLjcxLDE3Ljg2QzE0LjIxLDE4Ljg0IDE1LjIyLDE5LjU5IDE2LjgsMTkuNTlDMTguNCwxOS41OSAxOS42LDE4Ljc2IDE5LjYsMTcuMjNDMTkuNiwxNS44MiAxOC43OSwxNS4xOSAxNy4zNSwxNC41N0wxNi45MywxNC4zOUMxNi4yLDE0LjA4IDE1Ljg5LDEzLjg3IDE1Ljg5LDEzLjM3QzE1Ljg5LDEyLjk2IDE2LjIsMTIuNjQgMTYuNywxMi42NEMxNy4xOCwxMi42NCAxNy41LDEyLjg1IDE3Ljc5LDEzLjM3TDE5LjEsMTIuNUMxOC41NSwxMS41NCAxNy43NywxMS4xNyAxNi43LDExLjE3QzE1LjE5LDExLjE3IDE0LjIyLDEyLjEzIDE0LjIyLDEzLjRDMTQuMjIsMTQuNzggMTUuMDMsMTUuNDMgMTYuMjUsMTUuOTVMMTYuNjcsMTYuMTNDMTcuNDUsMTYuNDcgMTcuOTEsMTYuNjggMTcuOTEsMTcuMjZDMTcuOTEsMTcuNzQgMTcuNDYsMTguMDkgMTYuNzYsMTguMDlDMTUuOTMsMTguMDkgMTUuNDUsMTcuNjYgMTUuMDksMTcuMDZMMTMuNzEsMTcuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VLb3RsaW4gPSBcIk0yIDJIMjJMMTIgMTJMMjIgMjJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUx1YSA9IFwiTTEwLjUsNUE4LjUsOC41IDAgMCwwIDIsMTMuNUE4LjUsOC41IDAgMCwwIDEwLjUsMjJBOC41LDguNSAwIDAsMCAxOSwxMy41QTguNSw4LjUgMCAwLDAgMTAuNSw1TTEzLjUsMTNBMi41LDIuNSAwIDAsMSAxMSwxMC41QTIuNSwyLjUgMCAwLDEgMTMuNSw4QTIuNSwyLjUgMCAwLDEgMTYsMTAuNUEyLjUsMi41IDAgMCwxIDEzLjUsMTNNMTkuNSwyQTIuNSwyLjUgMCAwLDAgMTcsNC41QTIuNSwyLjUgMCAwLDAgMTkuNSw3QTIuNSwyLjUgMCAwLDAgMjIsNC41QTIuNSwyLjUgMCAwLDAgMTkuNSwyXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VNYXJrZG93biA9IFwiTTIwLjU2IDE4SDMuNDRDMi42NSAxOCAyIDE3LjM3IDIgMTYuNTlWNy40MUMyIDYuNjMgMi42NSA2IDMuNDQgNkgyMC41NkMyMS4zNSA2IDIyIDYuNjMgMjIgNy40MVYxNi41OUMyMiAxNy4zNyAyMS4zNSAxOCAyMC41NiAxOE02LjgxIDE1LjE5VjExLjUzTDguNzMgMTMuODhMMTAuNjUgMTEuNTNWMTUuMTlIMTIuNThWOC44MUgxMC42NUw4LjczIDExLjE2TDYuODEgOC44MUg0Ljg5VjE1LjE5SDYuODFNMTkuNjkgMTJIMTcuNzdWOC44MUgxNS44NVYxMkgxMy45MkwxNi44MSAxNS4yOEwxOS42OSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZU1hcmtkb3duT3V0bGluZSA9IFwiTTIwLjU2IDE4SDMuNDRDMi42NSAxOCAyIDE3LjM3IDIgMTYuNTlWNy40MUMyIDYuNjMgMi42NSA2IDMuNDQgNkgyMC41NkMyMS4zNSA2IDIyIDYuNjMgMjIgNy40MVYxNi41OUMyMiAxNy4zNyAyMS4zNSAxOCAyMC41NiAxOE0zLjQ0IDYuOTRDMy4xOCA2Ljk0IDIuOTYgNy4xNSAyLjk2IDcuNDFWMTYuNkMyLjk2IDE2Ljg1IDMuMTggMTcuMDYgMy40NCAxNy4wNkgyMC41NkMyMC44MiAxNy4wNiAyMS4wNCAxNi44NSAyMS4wNCAxNi42VjcuNDFDMjEuMDQgNy4xNSAyMC44MiA2Ljk0IDIwLjU2IDYuOTRIMy40NE00Ljg5IDE1LjE5VjguODFINi44MUw4LjczIDExLjE2TDEwLjY1IDguODFIMTIuNThWMTUuMTlIMTAuNjVWMTEuNTNMOC43MyAxMy44OEw2LjgxIDExLjUzVjE1LjE5SDQuODlNMTYuOSAxNS4xOUwxNCAxMi4wOUgxNS45NFY4LjgxSDE3Ljg2VjEyLjA5SDE5Ljc5TDE2LjkgMTUuMTlcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVBocCA9IFwiTTEyLDE4LjA4QzUuMzcsMTguMDggMCwxNS4zNiAwLDEyQzAsOC42NCA1LjM3LDUuOTIgMTIsNS45MkMxOC42Myw1LjkyIDI0LDguNjQgMjQsMTJDMjQsMTUuMzYgMTguNjMsMTguMDggMTIsMTguMDhNNi44MSwxMC4xM0M3LjM1LDEwLjEzIDcuNzIsMTAuMjMgNy45LDEwLjQ0QzguMDgsMTAuNjQgOC4xMiwxMSA4LjAzLDExLjQ3QzcuOTMsMTIgNy43NCwxMi4zNCA3LjQ1LDEyLjU2QzcuMTcsMTIuNzggNi43NCwxMi44OSA2LjE2LDEyLjg5SDUuMjlMNS44MiwxMC4xM0g2LjgxTTMuMzEsMTUuNjhINC43NUw1LjA5LDEzLjkzSDYuMzJDNi44NiwxMy45MyA3LjMsMTMuODcgNy42NSwxMy43NkM4LDEzLjY0IDguMzIsMTMuNDUgOC42MSwxMy4xOEM4Ljg1LDEyLjk2IDkuMDQsMTIuNzIgOS4xOSwxMi40NUM5LjM0LDEyLjE5IDkuNDUsMTEuODkgOS41LDExLjU3QzkuNjYsMTAuNzkgOS41NSwxMC4xOCA5LjE3LDkuNzVDOC43OCw5LjMxIDguMTgsOS4xIDcuMzUsOS4xSDQuNTlMMy4zMSwxNS42OE0xMC41Niw3LjM1TDkuMjgsMTMuOTNIMTAuN0wxMS40NCwxMC4xNkgxMi41OEMxMi45NCwxMC4xNiAxMy4xOCwxMC4yMiAxMy4yOSwxMC4zNEMxMy40LDEwLjQ2IDEzLjQyLDEwLjY4IDEzLjM2LDExTDEyLjc5LDEzLjkzSDE0LjI0TDE0LjgzLDEwLjg2QzE0Ljk2LDEwLjI0IDE0Ljg2LDkuNzkgMTQuNTYsOS41QzE0LjI2LDkuMjMgMTMuNzEsOS4xIDEyLjkxLDkuMUgxMS42NEwxMiw3LjM1SDEwLjU2TTE4LDEwLjEzQzE4LjU1LDEwLjEzIDE4LjkxLDEwLjIzIDE5LjA5LDEwLjQ0QzE5LjI3LDEwLjY0IDE5LjMxLDExIDE5LjIyLDExLjQ3QzE5LjEyLDEyIDE4LjkzLDEyLjM0IDE4LjY1LDEyLjU2QzE4LjM2LDEyLjc4IDE3LjkzLDEyLjg5IDE3LjM1LDEyLjg5SDE2LjVMMTcsMTAuMTNIMThNMTQuNSwxNS42OEgxNS45NEwxNi4yOCwxMy45M0gxNy41QzE4LjA1LDEzLjkzIDE4LjUsMTMuODcgMTguODUsMTMuNzZDMTkuMiwxMy42NCAxOS41LDEzLjQ1IDE5LjgsMTMuMThDMjAuMDQsMTIuOTYgMjAuMjQsMTIuNzIgMjAuMzgsMTIuNDVDMjAuNTMsMTIuMTkgMjAuNjQsMTEuODkgMjAuNywxMS41N0MyMC44NSwxMC43OSAyMC43NCwxMC4xOCAyMC4zNiw5Ljc1QzIwLDkuMzEgMTkuMzcsOS4xIDE4LjU0LDkuMUgxNS43OUwxNC41LDE1LjY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlUHl0aG9uID0gXCJNMTkuMTQsNy41QTIuODYsMi44NiAwIDAsMSAyMiwxMC4zNlYxNC4xNEEyLjg2LDIuODYgMCAwLDEgMTkuMTQsMTdIMTJDMTIsMTcuMzkgMTIuMzIsMTcuOTYgMTIuNzEsMTcuOTZIMTdWMTkuNjRBMi44NiwyLjg2IDAgMCwxIDE0LjE0LDIyLjVIOS44NkEyLjg2LDIuODYgMCAwLDEgNywxOS42NFYxNS44OUM3LDE0LjMxIDguMjgsMTMuMDQgOS44NiwxMy4wNEgxNS4xMUMxNi42OSwxMy4wNCAxNy45NiwxMS43NiAxNy45NiwxMC4xOFY3LjVIMTkuMTRNMTQuODYsMTkuMjlDMTQuNDYsMTkuMjkgMTQuMTQsMTkuNTkgMTQuMTQsMjAuMThDMTQuMTQsMjAuNzcgMTQuNDYsMjAuODkgMTQuODYsMjAuODlBMC43MSwwLjcxIDAgMCwwIDE1LjU3LDIwLjE4QzE1LjU3LDE5LjU5IDE1LjI1LDE5LjI5IDE0Ljg2LDE5LjI5TTQuODYsMTcuNUMzLjI4LDE3LjUgMiwxNi4yMiAyLDE0LjY0VjEwLjg2QzIsOS4yOCAzLjI4LDggNC44Niw4SDEyQzEyLDcuNjEgMTEuNjgsNy4wNCAxMS4yOSw3LjA0SDdWNS4zNkM3LDMuNzggOC4yOCwyLjUgOS44NiwyLjVIMTQuMTRDMTUuNzIsMi41IDE3LDMuNzggMTcsNS4zNlY5LjExQzE3LDEwLjY5IDE1LjcyLDExLjk2IDE0LjE0LDExLjk2SDguODlDNy4zMSwxMS45NiA2LjA0LDEzLjI0IDYuMDQsMTQuODJWMTcuNUg0Ljg2TTkuMTQsNS43MUM5LjU0LDUuNzEgOS44Niw1LjQxIDkuODYsNC44MkM5Ljg2LDQuMjMgOS41NCw0LjExIDkuMTQsNC4xMUM4Ljc1LDQuMTEgOC40Myw0LjIzIDguNDMsNC44MkM4LjQzLDUuNDEgOC43NSw1LjcxIDkuMTQsNS43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVIgPSBcIk0xMiw0LjI5QzYuNSw0LjI5IDIsNy4yOSAyLDExQzIsMTQuMjggNS41NiwxNyAxMC4yNCwxNy41OFYxOS43MUgxMy42NVYxNy41OUMxNC41LDE3LjUgMTUuMjksMTcuMzQgMTYuMDQsMTcuMTFMMTcuNDIsMTkuNzFIMjEuMjhMMTguOTYsMTUuOEMyMC44MywxNC41OCAyMiwxMi44NyAyMiwxMUMyMiw3LjI5IDE3LjUsNC4yOSAxMiw0LjI5VjQuMjlNMTMuNTMsNi45MUMxNy43Myw2LjkxIDIwLjgzLDguMzEgMjAuODMsMTEuNUMyMC44MywxMy4yMSAxOS45MSwxNC40MSAxOC40MSwxNS4xNUMxOC4zMiwxNS4xIDE4LjI0LDE1LjA1IDE4LjE5LDE1QzE3LjgzLDE0Ljg0IDE3LjIzLDE0LjY2IDE3LjIzLDE0LjY2QzE3LjIzLDE0LjY2IDIwLjIxLDE0LjQ0IDIwLjIxLDExLjQ3QzIwLjIxLDguNSAxNy4wOSw4LjQ1IDE3LjA5LDguNDVIMTAuMjRWMTUuNjFDNy42OSwxNC44NyA1LjkzLDEzLjMgNS45MywxMS41QzUuOTMsOC45NiA5LjMzLDYuOTEgMTMuNTMsNi45MU0xMy42OCwxMC44OUgxNS43NUMxNS43NSwxMC44OSAxNi43LDEwLjg0IDE2LjcsMTEuODNDMTYuNywxMi44IDE1Ljc1LDEyLjggMTUuNzUsMTIuOEgxMy42OFYxMC44OU0xMy42NSwxNS4zSDE0LjU3QzE0Ljc1LDE1LjMgMTQuODQsMTUuMzUgMTUsMTUuNUMxNS4xMywxNS42IDE1LjI3LDE1Ljc5IDE1LjM5LDE1Ljk2QzE0Ljg0LDE2LjAzIDE0LjI2LDE2LjA2IDEzLjY1LDE2LjA2VjE1LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VSdWJ5ID0gXCJNMTguOCwyLjA3QzIxLjMyLDIuNSAyMi4wNCw0LjIzIDIyLDYuMDRWNkwyMC44NiwyMC45M0w2LjA4LDIxLjk0SDYuMDlDNC44NiwyMS44OSAyLjEzLDIxLjc3IDIsMTcuOTVMMy4zNywxNS40NUw2LjE0LDIxLjkxTDguNSwxNC4yOUw4LjQ1LDE0LjNMOC40NywxNC4yOEwxNi4xOCwxNi43NEwxNC4xOSw4Ljk2TDIxLjU0LDguNUwxNS43NSwzLjc2TDE4LjgsMi4wNlYyLjA3TTIsMTcuOTFWMTcuOTNMMiwxNy45MVYxNy45MU02LjI4LDYuMjNDOS4yNCwzLjI4IDEzLjA3LDEuNTQgMTQuNTQsMy4wM0MxNiw0LjUgMTQuNDYsOC4xMiAxMS41LDExLjA2QzguNSwxNCA0LjczLDE1Ljg0IDMuMjYsMTQuMzZDMS43OSwxMi44NyAzLjMsOS4xNyA2LjI3LDYuMjNINi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVJ1YnlPblJhaWxzID0gXCJNMTkuOCwxNi43QzE5LjgsMTYuNyAyMS42LDE2LjUgMjEuNiwxNC4zQzIxLjYsMTIuMSAxOS41LDExLjggMTkuNSwxMS44SDE1LjdWMTlIMTcuNlYxNy4zTDE5LjMsMTlIMjJMMTkuOCwxNi43TTE5LDE1LjNIMTcuNVYxMy43SDE5QzE5LDEzLjcgMTkuNCwxMy45IDE5LjQsMTQuNUMxOS41LDE1LjEgMTksMTUuMyAxOSwxNS4zTTIxLjMsOC4yVjguNEMxMy4yLDYuMSAxMCwxMy4yIDEwLjYsMTguN0MxMC42LDE4LjcgNC45LDE4LjcgNC4zLDE4LjdDNSwxMy4zIDExLjgsMi42IDIxLjMsOC4yTTIwLjUsNi45QzE5LjgsNi42IDE5LjEsNi4zIDE4LjQsNi4xTDE4LjUsNC44TDIwLjYsNS42TDIwLjUsNi45TTE4LjUsOC43QzE5LjIsOC43IDE5LjksOC44IDIwLjYsOUwyMC41LDEwLjJMMTguNywxMEwxOC41LDguN00xMy45LDUuOEwxMy41LDQuNkwxNS42LDQuNEwxNiw1LjdDMTUuOCw1LjcgMTQuMSw1LjggMTMuOSw1LjhNMTUuMiw5LjVDMTUuNiw5LjMgMTYuMyw5IDE3LjIsOC44TDE3LjYsMTBMMTUuOCwxMC43TDE1LjIsOS41TTExLjgsNi41QzExLjIsNi44IDEwLjYsNy4xIDEwLDcuNUw5LjIsNi4yTDExLDUuMkwxMS44LDYuNU0xNC4zLDEwLjFMMTUuMSwxMS4zTDE0LDEyLjZMMTIuOSwxMS42QzEzLjIsMTEgMTMuNywxMC41IDE0LjMsMTAuMU0xMS42LDE1QzExLjcsMTQuMiAxMS45LDEzLjUgMTIuMiwxMi43TDEzLjQsMTMuN0wxMy4xLDE1LjZMMTEuNiwxNU03LjksOS4zQzcuNCw5LjggNi45LDEwLjQgNi41LDEwLjlMNS4yLDkuOEw2LjcsOC4yTDcuOSw5LjNNNC44LDEzLjdDNC40LDE0LjUgNC4xLDE1LjMgMy44LDE2TDIsMTUuM0wyLjksMTNMNC44LDEzLjdNMTEuNSwxNi4zTDEzLjMsMTYuOUwxMy42LDE4LjlMMTEuNiwxOC40QzExLjYsMTguMiAxMS41LDE3LjUgMTEuNSwxNi4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlUnVzdCA9IFwiTTIxLjkgMTEuN0wyMSAxMS4yVjExTDIxLjcgMTAuM0MyMS44IDEwLjIgMjEuOCAxMCAyMS43IDkuOUwyMS42IDkuOEwyMC43IDkuNUMyMC43IDkuNCAyMC43IDkuMyAyMC42IDkuM0wyMS4yIDguNUMyMS4zIDguNCAyMS4zIDguMiAyMS4xIDguMUMyMS4xIDguMSAyMSA4LjEgMjEgOEwyMCA3LjhDMjAgNy43IDE5LjkgNy43IDE5LjkgNy42TDIwLjMgNi43VjYuNEMyMC4yIDYuMyAyMC4xIDYuMyAyMCA2LjNIMTlDMTkgNi4zIDE5IDYuMiAxOC45IDYuMkwxOS4xIDUuMkMxOS4xIDUgMTkgNC45IDE4LjkgNC45SDE4LjhMMTcuOCA1LjFDMTcuOCA1IDE3LjcgNSAxNy42IDQuOVYzLjlDMTcuNiAzLjcgMTcuNSAzLjYgMTcuMyAzLjZIMTcuMkwxNi4zIDRIMTYuMkwxNiAzQzE2IDIuOCAxNS44IDIuNyAxNS43IDIuOEgxNS42TDE0LjggMy40QzE0LjcgMy40IDE0LjYgMy40IDE0LjYgMy4zTDE0LjMgMi40QzE0LjIgMi4zIDE0LjEgMi4yIDEzLjkgMi4yQzEzLjkgMi4yIDEzLjggMi4yIDEzLjggMi4zTDEzIDNIMTIuOEwxMi4zIDIuMkMxMi4yIDIgMTIgMiAxMS44IDJMMTEuNyAyLjFMMTEuMiAzSDExTDEwLjMgMi4zQzEwLjIgMi4yIDEwIDIuMiA5LjkgMi4zTDkuOCAyLjRMOS41IDMuM0M5LjQgMy4zIDkuMyAzLjMgOS4zIDMuNEw4LjUgMi44QzguMyAyLjcgOC4xIDIuNyA4IDIuOVYzTDcuOCA0QzcuOCA0IDcuNyA0IDcuNiA0LjFMNi43IDMuN0M2LjYgMy42IDYuNCAzLjcgNi4zIDMuOFY0LjlDNi4zIDUgNi4yIDUgNi4yIDUuMUw1LjIgNC45QzUgNC44IDQuOSA0LjkgNC45IDUuMVY1LjJMNS4xIDYuMkM1IDYuMiA1IDYuMyA0LjkgNi4zSDMuOUMzLjcgNi4zIDMuNiA2LjQgMy42IDYuNlY2LjdMNCA3LjZWNy44TDMgOEMyLjggOCAyLjcgOC4yIDIuNyA4LjNWOC40TDMuMyA5LjJDMy4zIDkuMyAzLjMgOS40IDMuMiA5LjRMMi40IDkuOEMyLjMgOS45IDIuMiAxMCAyLjIgMTAuMkMyLjIgMTAuMiAyLjIgMTAuMyAyLjMgMTAuM0wzIDExVjExLjJMMi4yIDExLjdDMiAxMS44IDIgMTIgMiAxMi4xTDIuMSAxMi4yTDMgMTIuOFYxM0wyLjMgMTMuN0MyLjIgMTMuOCAyLjIgMTQgMi4zIDE0LjFMMi40IDE0LjJMMy4zIDE0LjVDMy4zIDE0LjYgMy4zIDE0LjcgMy40IDE0LjdMMi44IDE1LjVDMi43IDE1LjYgMi43IDE1LjggMi45IDE1LjlDMi45IDE1LjkgMyAxNS45IDMgMTZMNCAxNi4yQzQgMTYuMyA0LjEgMTYuMyA0LjEgMTYuNEwzLjcgMTcuM0MzLjYgMTcuNCAzLjcgMTcuNiAzLjggMTcuN0g0LjlDNSAxNy43IDUgMTcuOCA1LjEgMTcuOEw0LjkgMTguOEM0LjkgMTkgNSAxOS4xIDUuMSAxOS4xSDUuMkw2LjIgMTguOUM2LjIgMTkgNi4zIDE5IDYuNCAxOS4xVjIwLjFDNi40IDIwLjMgNi41IDIwLjQgNi43IDIwLjRINi44TDcuNyAyMEg3LjhMOCAyMUM4IDIxLjIgOC4yIDIxLjMgOC4zIDIxLjJIOC40TDkuMiAyMC42QzkuMyAyMC42IDkuNCAyMC42IDkuNCAyMC43TDkuNyAyMS42QzkuOCAyMS43IDkuOSAyMS44IDEwLjEgMjEuOEMxMC4xIDIxLjggMTAuMiAyMS44IDEwLjIgMjEuN0wxMSAyMUgxMS4yTDExLjcgMjEuOEMxMS44IDIxLjkgMTIgMjIgMTIuMSAyMS45TDEyLjIgMjEuOEwxMi43IDIxSDEyLjlMMTMuNiAyMS43QzEzLjcgMjEuOCAxMy45IDIxLjggMTQgMjEuN0wxNC4xIDIxLjZMMTQuNCAyMC43QzE0LjUgMjAuNyAxNC42IDIwLjcgMTQuNiAyMC42TDE1LjQgMjEuMkMxNS41IDIxLjMgMTUuNyAyMS4zIDE1LjggMjEuMUMxNS44IDIxLjEgMTUuOCAyMSAxNS45IDIxTDE2LjEgMjBDMTYuMiAyMCAxNi4yIDE5LjkgMTYuMyAxOS45TDE3LjIgMjAuM0MxNy4zIDIwLjQgMTcuNSAyMC4zIDE3LjYgMjAuMlYxOS4xTDE3LjggMTguOUwxOC44IDE5LjFDMTkgMTkuMSAxOS4xIDE5IDE5LjEgMTguOVYxOC44TDE4LjkgMTcuOEwxOS4xIDE3LjZIMjAuMUMyMC4zIDE3LjYgMjAuNCAxNy41IDIwLjQgMTcuM1YxNy4yTDIwIDE2LjNDMjAgMTYuMiAyMC4xIDE2LjIgMjAuMSAxNi4xTDIxLjEgMTUuOUMyMS4zIDE1LjkgMjEuNCAxNS43IDIxLjMgMTUuNlYxNS41TDIwLjcgMTQuN0wyMC44IDE0LjVMMjEuNyAxNC4yQzIxLjggMTQuMSAyMS45IDE0IDIxLjkgMTMuOEMyMS45IDEzLjggMjEuOSAxMy43IDIxLjggMTMuN0wyMSAxM1YxMi44TDIxLjggMTIuM0MyMiAxMi4yIDIyIDEyIDIxLjkgMTEuN0MyMS45IDExLjggMjEuOSAxMS44IDIxLjkgMTEuN00xNi4yIDE4LjdDMTUuOSAxOC42IDE1LjcgMTguMyAxNS43IDE4QzE1LjggMTcuNyAxNi4xIDE3LjUgMTYuNCAxNy41QzE2LjcgMTcuNiAxNi45IDE3LjkgMTYuOSAxOC4yQzE2LjkgMTguNiAxNi42IDE4LjggMTYuMiAxOC43TTE2IDE2LjhDMTUuNyAxNi43IDE1LjQgMTYuOSAxNS40IDE3LjJMMTUgMTguNkMxNC4xIDE5IDEzLjEgMTkuMiAxMiAxOS4yQzEwLjkgMTkuMiA5LjkgMTkgOC45IDE4LjVMOC42IDE3LjFDOC41IDE2LjggOC4zIDE2LjYgOCAxNi43TDYuOCAxN0M2LjYgMTYuOCA2LjQgMTYuNSA2LjIgMTYuM0gxMi4yQzEyLjMgMTYuMyAxMi4zIDE2LjMgMTIuMyAxNi4yVjE0LjFDMTIuMyAxNCAxMi4zIDE0IDEyLjIgMTRIMTAuNVYxMi43SDEyLjRDMTIuNiAxMi43IDEzLjMgMTIuNyAxMy42IDEzLjdDMTMuNyAxNCAxMy44IDE1IDE0IDE1LjNDMTQuMSAxNS42IDE0LjYgMTYuMyAxNS4xIDE2LjNIMTguMkMxOCAxNi42IDE3LjggMTYuOCAxNy41IDE3LjFMMTYgMTYuOE03LjcgMTguN0M3LjQgMTguOCA3LjEgMTguNiA3IDE4LjJDNi45IDE3LjkgNy4xIDE3LjYgNy41IDE3LjVTOC4xIDE3LjYgOC4yIDE4QzguMiAxOC4zIDggMTguNiA3LjcgMTguN001LjQgOS41QzUuNSA5LjggNS40IDEwLjIgNS4xIDEwLjNDNC44IDEwLjQgNC40IDEwLjMgNC4zIDEwQzQuMiA5LjcgNC4zIDkuMyA0LjYgOS4yQzUgOS4xIDUuMyA5LjIgNS40IDkuNU00LjcgMTEuMUw2IDEwLjZDNi4zIDEwLjUgNi40IDEwLjIgNi4zIDkuOUw2IDkuM0g3VjE0SDVDNC43IDEzIDQuNiAxMi4xIDQuNyAxMS4xTTEwLjMgMTAuN1Y5LjNIMTIuOEMxMi45IDkuMyAxMy43IDkuNCAxMy43IDEwQzEzLjcgMTAuNSAxMy4xIDEwLjcgMTIuNiAxMC43SDEwLjNNMTkuMyAxMS45VjEyLjRIMTguNUMxOC40IDEyLjQgMTguNCAxMi40IDE4LjQgMTIuNVYxMi44QzE4LjQgMTMuNiAxNy45IDEzLjggMTcuNSAxMy44QzE3LjEgMTMuOCAxNi43IDEzLjYgMTYuNiAxMy40QzE2LjQgMTIuMSAxNiAxMS45IDE1LjQgMTEuNEMxNi4xIDEwLjkgMTYuOSAxMC4yIDE2LjkgOS4zQzE2LjkgOC4zIDE2LjIgNy43IDE1LjggNy40QzE1LjEgNyAxNC40IDYuOSAxNC4yIDYuOUg2LjZDNy43IDUuNyA5LjEgNC45IDEwLjcgNC42TDExLjYgNS42QzExLjggNS44IDEyLjEgNS44IDEyLjQgNS42TDEzLjQgNC42QzE1LjUgNSAxNy4zIDYuMyAxOC40IDguMkwxNy43IDkuOEMxNy42IDEwLjEgMTcuNyAxMC40IDE4IDEwLjVMMTkuMyAxMS4xVjExLjlNMTEuNiAzLjlDMTEuOCAzLjcgMTIuMiAzLjcgMTIuNCAzLjlDMTIuNiA0LjEgMTIuNiA0LjUgMTIuNCA0LjdDMTIuMSA1IDExLjggNSAxMS41IDQuN0MxMS4zIDQuNSAxMS40IDQuMiAxMS42IDMuOU0xOC41IDkuNUMxOC42IDkuMiAxOSA5LjEgMTkuMyA5LjJDMTkuNiA5LjMgMTkuNyA5LjcgMTkuNiAxMEMxOS41IDEwLjMgMTkuMSAxMC40IDE4LjggMTAuM0MxOC41IDEwLjIgMTguNCA5LjggMTguNSA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VTd2lmdCA9IFwiTTE3LjA5LDE5LjcyQzE0LjczLDIxLjA4IDExLjUsMjEuMjIgOC4yMywxOS44MkM1LjU5LDE4LjcgMy40LDE2Ljc0IDIsMTQuNUMyLjY3LDE1LjA1IDMuNDYsMTUuNSA0LjMsMTUuOUM3LjY3LDE3LjQ3IDExLjAzLDE3LjM2IDEzLjQsMTUuOUMxMC4wMywxMy4zMSA3LjE2LDkuOTQgNS4wMyw3LjE5QzQuNTgsNi43NCA0LjI1LDYuMTggMy45MSw1LjY4QzEyLjE5LDExLjczIDExLjgzLDEzLjI3IDYuMzIsNC42N0MxMS4yMSw5LjYxIDE1Ljc1LDEyLjQxIDE1Ljc1LDEyLjQxQzE1LjkxLDEyLjUgMTYsMTIuNTcgMTYuMTEsMTIuNjNDMTYuMjEsMTIuMzggMTYuMywxMi4xMiAxNi4zNywxMS44NUMxNy4xNiw5IDE2LjI2LDUuNzMgMTQuMjksMy4wNEMxOC44NCw1Ljc5IDIxLjU0LDEwLjk1IDIwLjQxLDE1LjI4QzIwLjM4LDE1LjM5IDIwLjM1LDE1LjUgMjAuMzYsMTUuNjdDMjIuNiwxOC41IDIyLDIxLjQ1IDIxLjcxLDIwLjg5QzIwLjUsMTguNSAxOC4yMywxOS4yNCAxNy4wOSwxOS43MlYxOS43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVR5cGVzY3JpcHQgPSBcIk0zLDNIMjFWMjFIM1YzTTEzLjcxLDE3Ljg2QzE0LjIxLDE4Ljg0IDE1LjIyLDE5LjU5IDE2LjgsMTkuNTlDMTguNCwxOS41OSAxOS42LDE4Ljc2IDE5LjYsMTcuMjNDMTkuNiwxNS44MiAxOC43OSwxNS4xOSAxNy4zNSwxNC41N0wxNi45MywxNC4zOUMxNi4yLDE0LjA4IDE1Ljg5LDEzLjg3IDE1Ljg5LDEzLjM3QzE1Ljg5LDEyLjk2IDE2LjIsMTIuNjQgMTYuNywxMi42NEMxNy4xOCwxMi42NCAxNy41LDEyLjg1IDE3Ljc5LDEzLjM3TDE5LjEsMTIuNUMxOC41NSwxMS41NCAxNy43NywxMS4xNyAxNi43LDExLjE3QzE1LjE5LDExLjE3IDE0LjIyLDEyLjEzIDE0LjIyLDEzLjRDMTQuMjIsMTQuNzggMTUuMDMsMTUuNDMgMTYuMjUsMTUuOTVMMTYuNjcsMTYuMTNDMTcuNDUsMTYuNDcgMTcuOTEsMTYuNjggMTcuOTEsMTcuMjZDMTcuOTEsMTcuNzQgMTcuNDYsMTguMDkgMTYuNzYsMTguMDlDMTUuOTMsMTguMDkgMTUuNDUsMTcuNjYgMTUuMDksMTcuMDZMMTMuNzEsMTcuODZNMTMsMTEuMjVIOFYxMi43NUg5LjVWMjBIMTEuMjVWMTIuNzVIMTNWMTEuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VYYW1sID0gXCJNMTYuOTMgNy45TDE5LjMxIDEyTDE2Ljk1IDE2LjA5TDE2LjMzIDE1TDE3LjggMTIuNUMxNy45NyAxMi4xOSAxNy45NyAxMS44MyAxNy44IDExLjU0TDE2LjMyIDlMMTYuOTMgNy45TTE2LjkyIDYuNTdDMTYuODkgNi41NyAxNi44NSA2LjU5IDE2LjgzIDYuNjJMMTUuNTYgOC44N0MxNS41IDguOTQgMTUuNSA5IDE1LjU2IDkuMDlMMTcuMTggMTEuOUMxNy4yMiAxMS45NyAxNy4yMiAxMi4wNSAxNy4xOCAxMi4xMkwxNS41NyAxNC45MUMxNS41MyAxNC45NyAxNS41MyAxNS4wNiAxNS41NyAxNS4xM0wxNi44NSAxNy4zNkMxNi44NyAxNy40IDE2LjkxIDE3LjQyIDE2Ljk0IDE3LjQyQzE3IDE3LjQyIDE3IDE3LjQgMTcuMDQgMTcuMzZMMjAgMTIuMjNDMjAuMDggMTIuMDkgMjAuMDggMTEuOTIgMjAgMTEuNzlMMTcgNi42MkMxNyA2LjU5IDE2Ljk2IDYuNTcgMTYuOTIgNi41N00yMS45MSAxMS42N0wxNy4yMyAzLjU4QzE3LjExIDMuMzggMTYuODkgMy4yNSAxNi42NiAzLjI1SDcuMjhDNy4wNSAzLjI1IDYuODMgMy4zOCA2LjcxIDMuNThMMiAxMS42N0MxLjkxIDExLjg3IDEuOTEgMTIuMTMgMiAxMi4zM0w2LjcxIDIwLjQyQzYuODMgMjAuNjIgNy4wNSAyMC43NSA3LjI4IDIwLjc1SDE2LjY2QzE2Ljg5IDIwLjc1IDE3LjExIDIwLjYyIDE3LjIzIDIwLjQyTDIxLjkxIDEyLjMzQzIyLjAzIDEyLjEzIDIyLjAzIDExLjg4IDIxLjkxIDExLjY3TTcuMyAzLjk1SDE2LjEyTDExLjc2IDExLjY1SDYuOTNMMTAuODcgNC44MkMxMC45MSA0Ljc1IDEwLjg2IDQuNjYgMTAuNzggNC42Nkw4LjIxIDQuNjVDOC4xMyA0LjY1IDguMDYgNC43IDggNC43Nkw0LjA0IDExLjY1SDIuODRMNy4zIDMuOTVNNi4xNyAxMi40Nkw5Ljc0IDE4LjYzTDguNSAxOC42M0w0Ljg3IDEyLjM1TDQuNjcgMTJMNC44NyAxMS42NUw4LjUgNS4zN0w5LjczIDUuMzdMNi4xNyAxMS41M0M2LjE1IDExLjU3IDYuMTMgMTEuNjEgNi4xMSAxMS42NUM2LjAzIDExLjg4IDYuMDMgMTIuMTMgNi4xMiAxMi4zNUM2LjEzIDEyLjM5IDYuMTUgMTIuNDMgNi4xNyAxMi40Nk03LjMgMjAuMDVMMi44NSAxMi4zNUg0LjA1TDguMDMgMTkuMjNDOC4wNyAxOS4zIDguMTQgMTkuMzQgOC4yMiAxOS4zNEwxMC43OSAxOS4zNEMxMC44NyAxOS4zNCAxMC45MiAxOS4yNSAxMC44OCAxOS4xOEw2Ljk0IDEyLjM1SDExLjc3TDE2LjE3IDIwLjA1SDcuM00xNi44IDE5Ljc1TDEyLjM3IDEyTDE2Ljc4IDQuMjFMMjEuMjkgMTJMMTYuOCAxOS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXB0b3AgPSBcIk00LDZIMjBWMTZINE0yMCwxOEEyLDIgMCAwLDAgMjIsMTZWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMTZBMiwyIDAgMCwwIDQsMThIMFYyMEgyNFYxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXB0b3BDaHJvbWVib29rID0gXCJNMjAsMTVINFY1SDIwTTE0LDE4SDEwVjE3SDE0TTIyLDE4VjNIMlYxOEgwVjIwSDI0VjE4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcHRvcE1hYyA9IFwiTTEyLDE5QTEsMSAwIDAsMSAxMSwxOEExLDEgMCAwLDEgMTIsMTdBMSwxIDAgMCwxIDEzLDE4QTEsMSAwIDAsMSAxMiwxOU00LDVIMjBWMTZINE0yMCwxOEEyLDIgMCAwLDAgMjIsMTZWNUMyMiwzLjg5IDIxLjEsMyAyMCwzSDRDMi44OSwzIDIsMy44OSAyLDVWMTZBMiwyIDAgMCwwIDQsMThIMEEyLDIgMCAwLDAgMiwyMEgyMkEyLDIgMCAwLDAgMjQsMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFwdG9wT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMCwyMC43MkwxOC43MywyMkwxNi43MywyMEgwVjE4SDRDMi44OSwxOCAyLDE3LjEgMiwxNlY2QzIsNS43OCAyLjA0LDUuNTcgMi4xLDUuMzdMMSw0LjI3TTQsMTZIMTIuNzNMNCw3LjI3VjE2TTIwLDE2VjZINy44Mkw1LjgyLDRIMjBBMiwyIDAgMCwxIDIyLDZWMTZBMiwyIDAgMCwxIDIwLDE4SDI0VjIwSDIxLjgyTDE3LjgyLDE2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcHRvcFdpbmRvd3MgPSBcIk0zLDRIMjFBMSwxIDAgMCwxIDIyLDVWMTZBMSwxIDAgMCwxIDIxLDE3SDIyTDI0LDIwVjIxSDBWMjBMMiwxN0gzQTEsMSAwIDAsMSAyLDE2VjVBMSwxIDAgMCwxIDMsNE00LDZWMTVIMjBWNkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcmF2ZWwgPSBcIk0yMS43IDYuNTNDMjEuNzEgNi41NSAyMS43MSA2LjU4IDIxLjcxIDYuNjFWMTAuOUMyMS43MSAxMSAyMS42NSAxMS4xMiAyMS41NiAxMS4xN0wxNy45NSAxMy4yNVYxNy4zNkMxNy45NSAxNy40NyAxNy45IDE3LjU3IDE3LjggMTcuNjNMMTAuMjggMjEuOTZDMTAuMjYgMjEuOTcgMTAuMjQgMjIgMTAuMjIgMjJMMTAuMiAyMkMxMC4xNSAyMiAxMC4wOSAyMiAxMC4wNCAyMkMxMC4wMyAyMiAxMCAyMiAxMCAyMkMxMCAyMiAxMCAyMS45NyA5Ljk2IDIxLjk2TDIuNDQgMTcuNjNDMi4zNSAxNy41OCAyLjI5IDE3LjQ3IDIuMjkgMTcuMzZWNC41QzIuMjkgNC40NSAyLjI5IDQuNDIgMi4zIDQuNEMyLjMgNC4zOSAyLjMxIDQuMzggMi4zMSA0LjM3QzIuMzEgNC4zNSAyLjMyIDQuMzQgMi4zMyA0LjMyQzIuMzMgNC4zMSAyLjM0IDQuMyAyLjM1IDQuMjlDMi4zNiA0LjI4IDIuMzcgNC4yNyAyLjM4IDQuMjZDMi4zOSA0LjI1IDIuNCA0LjI0IDIuNDEgNC4yM0MyLjQyIDQuMjIgMi40MyA0LjIxIDIuNDQgNC4yMUw2LjIgMi4wNEM2LjMgMiA2LjQyIDIgNi41IDIuMDRMMTAuMjggNC4yMUgxMC4yOEMxMC4yOSA0LjIyIDEwLjMgNC4yMiAxMC4zMSA0LjIzQzEwLjMyIDQuMjQgMTAuMzMgNC4yNSAxMC4zNCA0LjI2QzEwLjM1IDQuMjcgMTAuMzYgNC4yOCAxMC4zNyA0LjI5QzEwLjM4IDQuMyAxMC4zOSA0LjMxIDEwLjM5IDQuMzJDMTAuNCA0LjM0IDEwLjQxIDQuMzUgMTAuNDEgNC4zN0MxMC40MSA0LjM4IDEwLjQyIDQuMzkgMTAuNDIgNC40QzEwLjQzIDQuNDMgMTAuNDMgNC40NSAxMC40MyA0LjVWMTIuNUwxMy41NyAxMC43MlY2LjYxQzEzLjU3IDYuNTggMTMuNTcgNi41NSAxMy41OCA2LjUzTDEzLjU5IDYuNUMxMy41OSA2LjUgMTMuNiA2LjQ3IDEzLjYxIDYuNDVDMTMuNjEgNi40NCAxMy42MiA2LjQzIDEzLjYzIDYuNDJDMTMuNjQgNi40MSAxMy42NSA2LjQgMTMuNjYgNi4zOUMxMy42NyA2LjM4IDEzLjY4IDYuMzcgMTMuNjkgNi4zNkMxMy43IDYuMzUgMTMuNzEgNi4zNCAxMy43MiA2LjM0TDE3LjUgNC4xN0MxNy41OCA0LjExIDE3LjcgNC4xMSAxNy44IDQuMTdMMjEuNTYgNi4zNEMyMS41NyA2LjM0IDIxLjU4IDYuMzUgMjEuNTkgNi4zNkwyMS42MiA2LjM5QzIxLjYzIDYuNCAyMS42NCA2LjQxIDIxLjY1IDYuNDJDMjEuNjYgNi40MyAyMS42NiA2LjQ0IDIxLjY3IDYuNDVDMjEuNjggNi40NyAyMS42OCA2LjUgMjEuNjkgNi41QzIxLjcgNi41IDIxLjcgNi41IDIxLjcgNi41M00yMS4wOSAxMC43MlY3LjE1TDE3Ljk1IDguOTVWMTIuNUwyMS4wOSAxMC43Mk0xNy4zMyAxNy4xOFYxMy42TDEwLjQzIDE3LjU0VjIxLjE1TDE3LjMzIDE3LjE4TTIuOTEgNVYxNy4xOEw5LjgxIDIxLjE1VjE3LjU0TDYuMjEgMTUuNUw2LjIgMTUuNUw2LjIgMTUuNUM2LjE5IDE1LjUgNi4xOCAxNS41IDYuMTcgMTUuNDdDNi4xNiAxNS40NyA2LjE1IDE1LjQ2IDYuMTQgMTUuNDVWMTUuNDVDNi4xMyAxNS40NCA2LjEyIDE1LjQzIDYuMTEgMTUuNDJDNi4xIDE1LjQxIDYuMSAxNS40IDYuMDkgMTUuMzlWMTUuMzlDNi4wOCAxNS4zNyA2LjA4IDE1LjM2IDYuMDcgMTUuMzVDNi4wNyAxNS4zMyA2LjA2IDE1LjMyIDYuMDYgMTUuMzFDNi4wNSAxNS4zIDYuMDUgMTUuMjggNi4wNSAxNS4yN0M2LjA1IDE1LjI1IDYuMDUgMTUuMjQgNi4wNSAxNS4yM1Y2LjgyTDIuOTEgNU02LjM2IDIuNjhMMy4yMyA0LjVMNi4zNiA2LjI4TDkuNSA0LjVMNi4zNiAyLjY4TTkuODEgMTIuODhWNUw2LjY3IDYuODJWMTQuNjlMOS44MSAxMi44OE0xNy42NCA0LjhMMTQuNSA2LjYxTDE3LjY0IDguNDFMMjAuNzcgNi42MUwxNy42NCA0LjhNMTcuMzMgOC45NUwxNC4xOSA3LjE1VjEwLjcyTDE3LjMzIDEyLjVWOC45NU0xMC4xMiAxN0wxNyAxMy4wNkwxMy44OCAxMS4yNkw3IDE1LjIzTDEwLjEyIDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhc2VyUG9pbnRlciA9IFwiTTkgMTNMNSAxNkM0IDE2Ljg4IDMuODYgMTguMTIgNCAxOUM0LjEzIDIwIDQuOTEgMjEuMjIgNiAyMS42OEM3LjU3IDIyLjM1IDkuMDkgMjEuOSAxMC4wNCAyMC45MkwxOSAxM0MyMC44NiAxMS42MiAyMCA5IDE4IDlIMTJMMTkuNDYgNC42MUMxOS45IDQuMjkgMjAuMDggMy44MiAyMC4wNiAzLjM3QzIwIDIuNjcgMTkuNDYgMiAxOC42IDJIMTguNTRDMTguMTkgMiAxNy44NiAyLjExIDE3LjU2IDIuMjlMNSA5QzQuMTkgOS40NiAzLjk0IDEwLjI0IDQgMTFDNC4wNSAxMi4wMyA0Ljc0IDEzIDYgMTNNNSAxOC41QzUgMTcuMTIgNi4xMiAxNiA3LjUgMTZTMTAgMTcuMTIgMTAgMTguNSA4Ljg4IDIxIDcuNSAyMSA1IDE5Ljg4IDUgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXNzbyA9IFwiTTEyIDJDMTcuNSAyIDIyIDUuMTMgMjIgOUMyMiAxMi4yNiAxOC44MSAxNSAxNC41IDE1Ljc4TDE0LjUgMTUuNUMxNC41IDE0LjkxIDE0LjQgMTQuMzQgMTQuMjEgMTMuODFDMTcuNTUgMTMuMjEgMjAgMTEuMjggMjAgOUMyMCA2LjI0IDE2LjQyIDQgMTIgNEM3LjU4IDQgNCA2LjI0IDQgOUM0IDEwLjE5IDQuNjcgMTEuMjkgNS43OSAxMi4xNUM1LjM1IDEyLjY0IDUgMTMuMjEgNC43OCAxMy44NUMzLjA2IDEyLjU5IDIgMTAuODggMiA5QzIgNS4xMyA2LjUgMiAxMiAyTTkuNSAxMkMxMS40MyAxMiAxMyAxMy41NyAxMyAxNS41QzEzIDE3LjQgMTEuNSAxOC45NSA5LjYgMTlDOS4zOSAxOS4zNiA5LjE4IDIwIDkuODMgMjAuNjhDMTEgMjEuODggMTMuMjggMTkuNzIgMTYuMzkgMTkuNzFDMTguNDMgMTkuNyAyMC4wMyAxOS45NyAyMC4wMyAxOS45N0MyMC4wMyAxOS45NyAyMS4wOCAyMC4xIDIwLjk3IDIxLjA0QzIwLjg2IDIxLjk3IDE5LjkxIDIxLjk3IDE5LjkxIDIxLjk3QzE5LjUzIDIxLjkzIDE4LjAzIDIxLjU4IDE2LjIyIDIxLjY4QzE0LjQxIDIxLjc3IDEzLjQ3IDIyLjQxIDEyLjU2IDIyLjY5QzExLjY2IDIyLjk3IDkuOTEgMjMuMzggOC4zIDIyLjA1QzYuOTcgMjAuOTYgNy40NiAxOS4xMSA3LjY3IDE4LjVDNi42NyAxNy44NyA2IDE2Ljc2IDYgMTUuNUM2IDEzLjU3IDcuNTcgMTIgOS41IDEyTTkuNSAxNEM4LjY3IDE0IDggMTQuNjcgOCAxNS41QzggMTYuMzMgOC42NyAxNyA5LjUgMTdDMTAuMzMgMTcgMTEgMTYuMzMgMTEgMTUuNUMxMSAxNC42NyAxMC4zMyAxNCA5LjUgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFzdHBhc3MgPSBcIk0xNCwxMkEyLDIgMCAwLDEgMTYsMTBBMiwyIDAgMCwxIDE4LDEyQTIsMiAwIDAsMSAxNiwxNEEyLDIgMCAwLDEgMTQsMTJNOCwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDEyQTIsMiAwIDAsMSAxMCwxNEEyLDIgMCAwLDEgOCwxMk0yLDEyQTIsMiAwIDAsMSA0LDEwQTIsMiAwIDAsMSA2LDEyQTIsMiAwIDAsMSA0LDE0QTIsMiAwIDAsMSAyLDEyTTIyLDVIMjBWMTlIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXRpdHVkZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xMiA0QzE1IDQgMTcuNSA1LjYgMTguOSA4SDUuMUM2LjUgNS42IDkgNCAxMiA0TTEyIDIwQzkgMjAgNi41IDE4LjQgNS4xIDE2SDE4LjlDMTcuNSAxOC40IDE1IDIwIDEyIDIwTTQuMyAxNEM0LjEgMTMuNCA0IDEyLjcgNCAxMlM0LjEgMTAuNiA0LjMgMTBIMTkuOEMyMCAxMC42IDIwLjEgMTEuMyAyMC4xIDEyUzIwIDEzLjQgMTkuOCAxNEg0LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF1bmNoID0gXCJNMTQsM1Y1SDE3LjU5TDcuNzYsMTQuODNMOS4xNywxNi4yNEwxOSw2LjQxVjEwSDIxVjNNMTksMTlINVY1SDEyVjNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF2YUxhbXAgPSBcIk0xMCwzTDgsMTZIMTZMMTQsM0gxME0xMS41LDUuNzVBMC43NSwwLjc1IDAgMCwxIDEyLjI1LDYuNUEwLjc1LDAuNzUgMCAwLDEgMTEuNSw3LjI1QTAuNzUsMC43NSAwIDAsMSAxMC43NSw2LjVBMC43NSwwLjc1IDAgMCwxIDExLjUsNS43NU0xMi41LDguNUExLDEgMCAwLDEgMTMuNSw5LjVBMSwxIDAgMCwxIDEyLjUsMTAuNUExLDEgMCAwLDEgMTEuNSw5LjVBMSwxIDAgMCwxIDEyLjUsOC41TTExLjUsMTJBMS41LDEuNSAwIDAsMSAxMywxMy41QTEuNSwxLjUgMCAwLDEgMTEuNSwxNUExLjUsMS41IDAgMCwxIDEwLDEzLjVBMS41LDEuNSAwIDAsMSAxMS41LDEyTTgsMTdMMTAsMTlMOCwyMUgxNkwxNCwxOUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVycyA9IFwiTTEyLDE2TDE5LjM2LDEwLjI3TDIxLDlMMTIsMkwzLDlMNC42MywxMC4yN00xMiwxOC41NEw0LjYyLDEyLjgxTDMsMTQuMDdMMTIsMjEuMDdMMjEsMTQuMDdMMTkuMzcsMTIuOEwxMiwxOC41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNNaW51cyA9IFwiTTIyLDE3VjE5SDE0VjE3SDIyTTExLDE2TDIsOUwxMSwyTDIwLDlMMTEsMTZNMTEsMTguNTRMMTIsMTcuNzVWMThDMTIsMTguNzEgMTIuMTIsMTkuMzkgMTIuMzUsMjBMMTEsMjEuMDdMMiwxNC4wN0wzLjYyLDEyLjgxTDExLDE4LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc09mZiA9IFwiTTMuMjcsMUwyLDIuMjdMNi4yMiw2LjVMMyw5TDQuNjMsMTAuMjdMMTIsMTZMMTQuMSwxNC4zN0wxNS41MywxNS44TDEyLDE4LjU0TDQuNjMsMTIuODFMMywxNC4wN0wxMiwyMS4wN0wxNi45NSwxNy4yMkwyMC43MywyMUwyMiwxOS43M0wzLjI3LDFNMTkuMzYsMTAuMjdMMjEsOUwxMiwyTDkuMDksNC4yN0wxNi45NiwxMi4xNUwxOS4zNiwxMC4yN00xOS44MSwxNUwyMSwxNC4wN0wxOS41NywxMi42NEwxOC4zOCwxMy41NkwxOS44MSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNPZmZPdXRsaW5lID0gXCJNMTIsNC41M0wxMC44Myw1LjQ0TDkuNDEsNEwxMiwyTDIxLDlMMTcuMjgsMTEuODlMMTUuODUsMTAuNDdMMTcuNzQsOUwxMiw0LjUzTTIxLDE0LjA3TDIwLjEzLDE0Ljc1TDE4LjcsMTMuMzJMMTkuMzcsMTIuOEwyMSwxNC4wN00zLjQxLDAuODZMMjIuMTQsMTkuNTlMMjAuNzMsMjFMMTYuOTUsMTcuMjJMMTIsMjEuMDdMMywxNC4wN0w0LjYyLDEyLjgxTDEyLDE4LjU0TDE1LjUsMTUuNzlMMTQuMSwxNC4zN0wxMiwxNkwzLDlMNi4yMiw2LjVMMiwyLjI3TDMuNDEsMC44Nk0xMiwxMy40N0wxMi42NywxMi45NEw3LjY1LDcuOTJMNi4yNiw5TDEyLDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc091dGxpbmUgPSBcIk0xMiwxOC41NEwxOS4zNywxMi44TDIxLDE0LjA3TDEyLDIxLjA3TDMsMTQuMDdMNC42MiwxMi44MUwxMiwxOC41NE0xMiwxNkwzLDlMMTIsMkwyMSw5TDEyLDE2TTEyLDQuNTNMNi4yNiw5TDEyLDEzLjQ3TDE3Ljc0LDlMMTIsNC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF5ZXJzUmVtb3ZlID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF5ZXJzU2VhcmNoID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTkuNTkgMTkuMkwzIDE0LjA3TDQuNjIgMTIuODFMOSAxNi4yMkM5IDE2LjMyIDkgMTYuNDEgOSAxNi41QzkgMTcuNDYgOS4yMiAxOC4zOCA5LjU5IDE5LjJNNC42MyAxMC4yN0wzIDlMMTIgMkwyMSA5TDE5LjM2IDEwLjI3TDE4LjY1IDEwLjgyQzE3LjcyIDEwLjMgMTYuNjQgMTAgMTUuNSAxMEMxMi43OSAxMCAxMC40NiAxMS42OCA5LjUgMTQuMDVMNC42MyAxMC4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNTZWFyY2hPdXRsaW5lID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTkuNTkgMTkuMkwzIDE0LjA3TDQuNjIgMTIuODFMOSAxNi4yMkM5IDE2LjMyIDkgMTYuNDEgOSAxNi41QzkgMTcuNDYgOS4yMiAxOC4zOCA5LjU5IDE5LjJNOS41IDE0LjA0TDMgOUwxMiAyTDIxIDlMMTguNjYgMTAuODJDMTcuOTYgMTAuNDQgMTcuMTkgMTAuMTggMTYuMzcgMTAuMDdMMTcuNzQgOUwxMiA0LjUzTDYuMjYgOUwxMC41MyAxMi4zMkMxMC4xIDEyLjg0IDkuNzQgMTMuNDIgOS41IDE0LjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc1RyaXBsZSA9IFwiTTEyIDBMMyA3TDQuNjMgOC4yN0wxMiAxNEwxOS4zNiA4LjI3TDIxIDdMMTIgME0xOS4zNyAxMC43M0wxMiAxNi40N0w0LjYyIDEwLjc0TDMgMTJMMTIgMTlMMjEgMTJMMTkuMzcgMTAuNzNNMTkuMzcgMTUuNzNMMTIgMjEuNDdMNC42MiAxNS43NEwzIDE3TDEyIDI0TDIxIDE3TDE5LjM3IDE1LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc1RyaXBsZU91dGxpbmUgPSBcIk0xMiAxNi41NEwxOS4zNyAxMC44TDIxIDEyLjA3TDEyIDE5LjA3TDMgMTIuMDdMNC42MiAxMC44MUwxMiAxNi41NE0xMiAxNEwzIDdMMTIgMEwyMSA3TDEyIDE0TTEyIDIuNTNMNi4yNiA3TDEyIDExLjQ3TDE3Ljc0IDdMMTIgMi41M00xMiAyMS40N0wxOS4zNyAxNS43M0wyMSAxN0wxMiAyNEwzIDE3TDQuNjIgMTUuNzRMMTIgMjEuNDdcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFkUGVuY2lsID0gXCJNMTYuODQsMi43M0MxNi40NSwyLjczIDE2LjA3LDIuODggMTUuNzcsMy4xN0wxMy42NSw1LjI5TDE4Ljk1LDEwLjZMMjEuMDcsOC41QzIxLjY3LDcuODkgMjEuNjcsNi45NCAyMS4wNyw2LjM2TDE3LjksMy4xN0MxNy42LDIuODggMTcuMjIsMi43MyAxNi44NCwyLjczTTEyLjk0LDZMNC44NCwxNC4xMUw3LjQsMTQuMzlMNy41OCwxNi42OEw5Ljg2LDE2Ljg1TDEwLjE1LDE5LjQxTDE4LjI1LDExLjNNNC4yNSwxNS4wNEwyLjUsMjEuNzNMOS4yLDE5Ljk0TDguOTYsMTcuNzhMNi42NSwxNy42MUw2LjQ3LDE1LjI5XCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVhZiA9IFwiTTE3LDhDOCwxMCA1LjksMTYuMTcgMy44MiwyMS4zNEw1LjcxLDIyTDYuNjYsMTkuN0M3LjE0LDE5Ljg3IDcuNjQsMjAgOCwyMEMxOSwyMCAyMiwzIDIyLDNDMjEsNSAxNCw1LjI1IDksNi4yNUM0LDcuMjUgMiwxMS41IDIsMTMuNUMyLDE1LjUgMy43NSwxNy4yNSAzLjc1LDE3LjI1QzcsOCAxNyw4IDE3LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVhZk1hcGxlID0gXCJNMjEuNzksMTNMMTYsMTZMMTcsMThMMTMsMTcuMjVWMjFIMTFWMTcuMjVMNywxOEw4LDE2TDIuMjEsMTNMMy4yMSwxMS4yN0wxLjYxLDhMNS4yMSw3Ljc3TDYuMjEsNkw5LjYzLDkuOUw4LDVIMTBMMTIsMkwxNCw1SDE2TDE0LjM3LDkuOUwxNy43OSw2TDE4Ljc5LDcuNzNMMjIuMzksNy45NkwyMC43OSwxMS4xOUwyMS43OSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFmTWFwbGVPZmYgPSBcIk0xOC4xMSAxNC45MUw4LjIgNUgxMEwxMiAyTDE0IDVIMTZMMTQuMzcgOS45TDE3Ljc5IDZMMTguNzkgNy43M0wyMi4zOSA3Ljk2TDIwLjc5IDExLjE5TDIxLjc5IDEzTDE4LjExIDE0LjkxTTIuMzkgMS43M0wxLjExIDNMNS40NSA3LjM0TDUuMjEgNy43N0wxLjYxIDhMMy4yMSAxMS4yN0wyLjIxIDEzTDggMTZMNyAxOEwxMSAxNy4yNVYyMUgxM1YxNy4yNUwxNS45MSAxNy44TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFmT2ZmID0gXCJNMjAuODQgMjIuNzNMMTUuMTQgMTcuMDNDMTMuMjYgMTguNzkgMTAuOTIgMjAgOCAyMEM3LjY0IDIwIDcuMTQgMTkuODcgNi42NiAxOS43TDUuNzEgMjJMMy44MiAyMS4zNEM1LjE1IDE4LjAzIDYuNSAxNC4zMiA5LjY2IDExLjU1TDguNzcgMTAuNjZDNi43NiAxMi4wMyA0Ljg2IDE0LjEgMy43NSAxNy4yNUMzLjc1IDE3LjI1IDIgMTUuNSAyIDEzLjVDMiAxMiAzLjEyIDkuMzIgNS43MiA3LjYxTDEuMTEgM0wyLjM5IDEuNzNDMi4zOSAxLjczIDE2LjM5IDE1Ljc0IDE2LjM5IDE1Ljc0TDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE3IDhDMTUuMzUgOC4zNyAxMy45MyA4Ljg4IDEyLjcgOS41TDE3LjUgMTQuMjlDMjAuODcgOS4zNSAyMiAzIDIyIDNDMjEuMDMgNC45NSAxNC4zNSA1LjI0IDkuMzggNi4xOEwxMi4xNSA4Ljk1QzE0LjgxIDggMTcgOCAxNyA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlYWsgPSBcIk02LDNIM1Y2QTMsMyAwIDAsMCA2LDNNMTQsM0gxMkE5LDkgMCAwLDEgMywxMlYxNEM5LjA4LDE0IDE0LDkuMDcgMTQsM00xMCwzSDhBNSw1IDAgMCwxIDMsOFYxMEE3LDcgMCAwLDAgMTAsM00xMCwyMUgxMkE5LDkgMCAwLDEgMjEsMTJWMTBBMTEsMTEgMCAwLDAgMTAsMjFNMTgsMjFIMjFWMThBMywzIDAgMCwwIDE4LDIxTTE0LDIxSDE2QTUsNSAwIDAsMSAyMSwxNlYxNEE3LDcgMCAwLDAgMTQsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVha09mZiA9IFwiTTEwLDNIOEM4LDMuMzcgNy45NiwzLjcyIDcuODgsNC4wNkw5LjQ3LDUuNjVDOS44MSw0Ljg0IDEwLDMuOTQgMTAsM00zLDQuMjdMNS44NCw3LjExQzUuMDMsNy42NyA0LjA2LDggMyw4VjEwQzQuNjEsMTAgNi4wOSw5LjQ1IDcuMjcsOC41NEw4LjcsOS45N0M3LjE0LDExLjI0IDUuMTYsMTIgMywxMlYxNEM1LjcxLDE0IDguMTksMTMgMTAuMTEsMTEuMzhMMTIuNjEsMTMuODhDMTEsMTUuODEgMTAsMTguMjkgMTAsMjFIMTJDMTIsMTguODQgMTIuNzYsMTYuODYgMTQuMDMsMTUuMzFMMTUuNDYsMTYuNzRDMTQuNTUsMTcuOTEgMTQsMTkuMzkgMTQsMjFIMTZDMTYsMTkuOTQgMTYuMzMsMTguOTcgMTYuODksMTguMTZMMTkuNzMsMjFMMjEsMTkuNzNMNC4yNywzTDMsNC4yN00xNCwzSDEyQzEyLDQuNSAxMS42Myw1LjkxIDExLDcuMTZMMTIuNDQsOC42MkMxMy40Miw3IDE0LDUuMDYgMTQsM00xOS45NCwxNi4xMkMyMC4yOCwxNi4wNCAyMC42MywxNiAyMSwxNlYxNEMyMC4wNiwxNCAxOS4xNiwxNC4xOSAxOC4zNCwxNC41TDE5Ljk0LDE2LjEyTTE1LjM4LDExLjU2TDE2Ljg0LDEzQzE4LjA5LDEyLjM3IDE5LjUsMTIgMjEsMTJWMTBDMTguOTQsMTAgMTcsMTAuNTggMTUuMzgsMTEuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkT2ZmID0gXCJNMTIsNkE0LDQgMCAwLDAgOCwxMFYxNkg2VjE4SDlWMjNIMTFWMThIMTNWMjNIMTVWMThIMThWMTZIMTZWMTBBNCw0IDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkT24gPSBcIk0xMSwwVjRIMTNWMEgxMU0xOC4zLDIuMjlMMTUuMjQsNS4yOUwxNi42NCw2LjcxTDE5LjcsMy43MUwxOC4zLDIuMjlNNS43MSwyLjI5TDQuMjksMy43MUw3LjI5LDYuNzFMOC43MSw1LjI5TDUuNzEsMi4yOU0xMiw2QTQsNCAwIDAsMCA4LDEwVjE2SDZWMThIOVYyM0gxMVYxOEgxM1YyM0gxNVYxOEgxOFYxNkgxNlYxMEE0LDQgMCAwLDAgMTIsNk0yLDlWMTFINlY5SDJNMTgsOVYxMUgyMlY5SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZE91dGxpbmUgPSBcIk0xMiw2QTQsNCAwIDAsMCA4LDEwVjE2SDZWMThIOVYyM0gxMVYxOEgxM1YyM0gxNVYxOEgxOFYxNkgxNlYxMEE0LDQgMCAwLDAgMTIsNk0xMiw4QTIsMiAwIDAsMSAxNCwxMFYxNUgxMFYxMEEyLDIgMCAwLDEgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRTdHJpcCA9IFwiTTIuODEsOC40NkwxNC44MywyMC41TDE1LjU0LDE5Ljc4TDE2Ljk1LDIxLjE5TDE4LjM2LDE5Ljc4TDE2Ljk1LDE4LjM2TDE4LjM2LDE2Ljk1TDE5Ljc4LDE4LjM2TDIxLjE5LDE2Ljk1TDE5Ljc4LDE1LjU0TDIwLjUsMTQuODNMOC40NiwyLjgxTDIuODEsOC40Nk01LjY0LDguNDZMOC40Niw1LjY0TDE3LjY2LDE0LjgzTDE0LjgzLDE3LjY2TDUuNjQsOC40Nk03LjA1LDguNDZMOC40Niw5Ljg4TDkuODgsOC40Nkw4LjQ2LDcuMDVMNy4wNSw4LjQ2TTkuMTcsMTAuNTlMMTAuNTksMTJMMTIsMTAuNTlMMTAuNTksOS4xN0w5LjE3LDEwLjU5TTExLjI5LDEyLjcxTDEyLjcxLDE0LjEyTDE0LjEyLDEyLjcxTDEyLjcxLDExLjI5TDExLjI5LDEyLjcxTTEzLjQxLDE0LjgzTDE0LjgzLDE2LjI0TDE2LjI0LDE0LjgzTDE0LjgzLDEzLjQxTDEzLjQxLDE0LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZFN0cmlwVmFyaWFudCA9IFwiTTIuOTUgM0wyIDYuOTFMMTkuMzQgMTEuMjVMMjAuMjkgNy4zNEwyLjk1IDNNNi4wOSA2Ljg5TDQuMTYgNi40MUw0LjY0IDQuNDZMNi41NyA0Ljk0TDYuMDkgNi44OU05Ljk0IDcuODZMOCA3LjM4TDguNSA1LjQyTDEwLjQyIDUuOTFMOS45NCA3Ljg2TTEzLjggOC44MkwxMS44NyA4LjM0TDEyLjM1IDYuMzlMMTQuMjcgNi44N0wxMy44IDguODJNMTcuNjUgOS43OUwxNS43MiA5LjMxTDE2LjIgNy4zNUwxOC4xMyA3Ljg0TDE3LjY1IDkuNzlNNC42NiAxMi43NUwzLjcxIDE2LjY2TDIxLjA1IDIxTDIyIDE3LjFMNC42NiAxMi43NU03LjggMTYuNjVMNS44OCAxNi4xNkw2LjM1IDE0LjIxTDguMjggMTQuNjlMNy44IDE2LjY1TTExLjY1IDE3LjYxTDkuNzMgMTcuMTNMMTAuMiAxNS4xOEwxMi4xMyAxNS42NkwxMS42NSAxNy42MU0xNS41IDE4LjU4TDEzLjU4IDE4LjA5TDE0LjA2IDE2LjE0TDE2IDE2LjYyTDE1LjUgMTguNThNMTkuMzYgMTkuNTRMMTcuNDMgMTkuMDZMMTcuOTEgMTcuMTFMMTkuODQgMTcuNTlMMTkuMzYgMTkuNTRNNi4yNSAxMi4xMUwxMSAxMC4yTDE3Ljc1IDExLjg5TDEzIDEzLjhMNi4yNSAxMi4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRWYXJpYW50T2ZmID0gXCJNMTIsM0MxMC4wNSwzIDguNDMsNC40IDguMDgsNi4yNUwxNi44MiwxNUgxOFYxM0gxNlY3QTQsNCAwIDAsMCAxMiwzTTMuMjgsNEwyLDUuMjdMOCwxMS4yN1YxM0g2VjE1SDlWMjFIMTFWMTVIMTEuNzNMMTMsMTYuMjdWMjFIMTVWMTguMjdMMTguNzMsMjJMMjAsMjAuNzJMMTUsMTUuNzJMOCw4LjcyTDMuMjgsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRWYXJpYW50T24gPSBcIk0xMiwzQTQsNCAwIDAsMCA4LDdWMTNINlYxNUg5VjIxSDExVjE1SDEzVjIxSDE1VjE1SDE4VjEzSDE2VjdBNCw0IDAgMCwwIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkVmFyaWFudE91dGxpbmUgPSBcIk0xMiwzQTQsNCAwIDAsMCA4LDdWMTNINlYxNUg5VjIxSDExVjE1SDEzVjIxSDE1VjE1SDE4VjEzSDE2VjdBNCw0IDAgMCwwIDEyLDNNMTIsNUEyLDIgMCAwLDEgMTQsN1YxMkgxMFY3QTIsMiAwIDAsMSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZWsgPSBcIk0xMCAyVjUuNTVMMTIgNy41NUwxNCA1LjU1VjJIMTBNNi4zNCA0TDMuODcgNi41TDE1IDE3LjYyVjEyLjY3TDYuMzQgNE0xNy42NiA0TDEzLjA2IDguNjFMMTUuNTQgMTEuMDlMMjAuMTMgNi41TDE3LjY2IDRNOSAxMy43NFYyMEEyIDIgMCAwIDAgMTEgMjJIMTNBMiAyIDAgMCAwIDE1IDIwVjE5Ljc0TDEzIDE3Ljc0VjIwSDExVjE1Ljc0TDkgMTMuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVzc1RoYW4gPSBcIk0xOC41LDQuMTRMMTkuNSw1Ljg2TDguOTcsMTJMMTkuNSwxOC4xNEwxOC41LDE5Ljg2TDUsMTJMMTguNSw0LjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlc3NUaGFuT3JFcXVhbCA9IFwiTTE4LjUsMi4yN0w1LDEwLjE0TDE4LjUsMThMMTkuNSwxNi4yN0w4Ljk3LDEwLjE0TDE5LjUsNEwxOC41LDIuMjdNNSwyMFYyMkgyMFYyMEg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpYnJhcnkgPSBcIk0xMiw4QTMsMyAwIDAsMCAxNSw1QTMsMyAwIDAsMCAxMiwyQTMsMyAwIDAsMCA5LDVBMywzIDAgMCwwIDEyLDhNMTIsMTEuNTRDOS42NCw5LjM1IDYuNSw4IDMsOFYxOUM2LjUsMTkgOS42NCwyMC4zNSAxMiwyMi41NEMxNC4zNiwyMC4zNSAxNy41LDE5IDIxLDE5VjhDMTcuNSw4IDE0LjM2LDkuMzUgMTIsMTEuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlicmFyeVNoZWx2ZXMgPSBcIk0xOS41LDlWMS41SDE2LjVWOUgxMy41VjEuNUgxMC41VjlINy41VjEuNUg0LjY1VjlIM1YxMC41SDIxVjlIMTkuNU0xOS41LDEzLjVIMTYuNVYyMUgxMy41VjEzLjVIMTAuNVYyMUg3LjVWMTMuNUg0LjY1VjIxSDNWMjIuNUgyMVYyMUgxOS41VjEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGljZW5zZSA9IFwiTTkgMTBBMy4wNCAzLjA0IDAgMCAxIDEyIDdBMy4wNCAzLjA0IDAgMCAxIDE1IDEwQTMuMDQgMy4wNCAwIDAgMSAxMiAxM0EzLjA0IDMuMDQgMCAwIDEgOSAxME0xMiAxOUwxNiAyMFYxNi45MkE3LjU0IDcuNTQgMCAwIDEgMTIgMThBNy41NCA3LjU0IDAgMCAxIDggMTYuOTJWMjBNMTIgNEE1Ljc4IDUuNzggMCAwIDAgNy43NiA1Ljc0QTUuNzggNS43OCAwIDAgMCA2IDEwQTUuNzggNS43OCAwIDAgMCA3Ljc2IDE0LjIzQTUuNzggNS43OCAwIDAgMCAxMiAxNkE1Ljc4IDUuNzggMCAwIDAgMTYuMjQgMTQuMjNBNS43OCA1Ljc4IDAgMCAwIDE4IDEwQTUuNzggNS43OCAwIDAgMCAxNi4yNCA1Ljc0QTUuNzggNS43OCAwIDAgMCAxMiA0TTIwIDEwQTguMDQgOC4wNCAwIDAgMSAxOS40MyAxMi44QTcuODQgNy44NCAwIDAgMSAxOCAxNS4yOFYyM0wxMiAyMUw2IDIzVjE1LjI4QTcuOSA3LjkgMCAwIDEgNCAxMEE3LjY4IDcuNjggMCAwIDEgNi4zMyA0LjM2QTcuNzMgNy43MyAwIDAgMSAxMiAyQTcuNzMgNy43MyAwIDAgMSAxNy42NyA0LjM2QTcuNjggNy42OCAwIDAgMSAyMCAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaWZlYnVveSA9IFwiTTE5Ljc5LDE1LjQxQzIwLjc0LDEzLjI0IDIwLjc0LDEwLjc1IDE5Ljc5LDguNTlMMTcuMDUsOS44M0MxNy42NSwxMS4yMSAxNy42NSwxMi43OCAxNy4wNiwxNC4xN0wxOS43OSwxNS40MU0xNS40Miw0LjIxQzEzLjI1LDMuMjYgMTAuNzYsMy4yNiA4LjU5LDQuMjFMOS44Myw2Ljk0QzExLjIyLDYuMzUgMTIuNzksNi4zNSAxNC4xOCw2Ljk1TDE1LjQyLDQuMjFNNC4yMSw4LjU4QzMuMjYsMTAuNzYgMy4yNiwxMy4yNCA0LjIxLDE1LjQyTDYuOTUsMTQuMTdDNi4zNSwxMi43OSA2LjM1LDExLjIxIDYuOTUsOS44Mkw0LjIxLDguNThNOC41OSwxOS43OUMxMC43NiwyMC43NCAxMy4yNSwyMC43NCAxNS40MiwxOS43OEwxNC4xOCwxNy4wNUMxMi44LDE3LjY1IDExLjIyLDE3LjY1IDkuODQsMTcuMDZMOC41OSwxOS43OU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRTd2l0Y2ggPSBcIk03LDFBMiwyIDAgMCwwIDUsM1YyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMUg3TTcsM0gxN1YyMUg3VjNNOSw2VjE4SDE1VjZIOU0xMCw3SDE0VjExSDEwVjdNMTAsMTNIMTRWMTdIMTBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiID0gXCJNMTIsMkE3LDcgMCAwLDAgNSw5QzUsMTEuMzggNi4xOSwxMy40NyA4LDE0Ljc0VjE3QTEsMSAwIDAsMCA5LDE4SDE1QTEsMSAwIDAsMCAxNiwxN1YxNC43NEMxNy44MSwxMy40NyAxOSwxMS4zOCAxOSw5QTcsNyAwIDAsMCAxMiwyTTksMjFBMSwxIDAgMCwwIDEwLDIySDE0QTEsMSAwIDAsMCAxNSwyMVYyMEg5VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbCA9IFwiTTEwLjUgMkMxMS44OCAyIDEzIDMuMTIgMTMgNC41VjE0SDE0VjQuNDdDMTQgMy41NiAxMy42MyAyLjcgMTMgMi4wNUMxMy4xNyAyIDEzLjMzIDIgMTMuNSAyQzE0Ljg4IDIgMTYgMy4xMiAxNiA0LjVWMTRIMTdWMTdDMTcgMTcuNTUgMTYuNTUgMTggMTYgMThIOEM3LjQ1IDE4IDcgMTcuNTUgNyAxN1YxNEg4VjQuNUM4IDMuMTIgOS4xMiAyIDEwLjUgMk0xMC41IDRDMTAuMjIgNCAxMCA0LjIyIDEwIDQuNVYxNEgxMVY0LjVDMTEgNC4yMiAxMC43OCA0IDEwLjUgNE05IDIwSDE1VjIxQzE1IDIxLjU1IDE0LjU1IDIyIDE0IDIySDEwQzkuNDUgMjIgOSAyMS41NSA5IDIxVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbE9mZiA9IFwiTTE0IDQuNDdDMTQgMy41NiAxMy42MyAyLjcgMTMgMi4wNUMxMy4xNyAyIDEzLjMzIDIgMTMuNSAyQzE0Ljg4IDIgMTYgMy4xMiAxNiA0LjVWMTRIMTdWMTUuMThMMTQgMTIuMThWNC41TDE0IDQuNDdNMTAgNC41QzEwIDQuMjIgMTAuMjIgNCAxMC41IDRTMTEgNC4yMiAxMSA0LjVWOS4xOEwxMyAxMS4xOFY0LjVDMTMgMy4xMiAxMS44OCAyIDEwLjUgMlM4IDMuMTIgOCA0LjVWNi4xOEwxMCA4LjE4VjQuNU05IDIxQzkgMjEuNTUgOS40NSAyMiAxMCAyMkgxNEMxNC41NSAyMiAxNSAyMS41NSAxNSAyMVYyMEg5VjIxTTIwIDIwLjcyTDE4LjczIDIyTDE0LjczIDE4SDhDNy40NSAxOCA3IDE3LjU1IDcgMTdWMTRIOFYxMS4yN0wyIDUuMjdMMy4yOCA0TDIwIDIwLjcyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbFNwaXJhbCA9IFwiTTExIDJDMTAuODQgMiAxMC42OSAyLjAzIDEwLjU1IDIuMUw4LjU1IDMuMUM3LjU2IDMuNjYgOCA1IDkgNUM5LjE2IDUgOS4zMiA0Ljk1IDkuNDUgNC45TDExLjQ1IDMuOUMxMi40MyAzLjM2IDEyIDIgMTEgMk0xNSA0QzE0LjgzIDQgMTQuNjkgNC4wMyAxNC41NSA0LjFMOC41NSA3LjFDNy41NiA3LjY4IDggOSA5IDlDOS4xOCA5IDkuMzIgOC45NSA5LjQ1IDguOUwxNS40NSA1LjlDMTYuNDEgNS40MyAxNiA0IDE1IDRNMTUgOEMxNC44NCA4IDE0LjY5IDguMDMgMTQuNTUgOC4xTDguNyAxMS4wM0M4LjIgMTEuMjUgOCAxMS42IDggMTJWMTRIN1YxN0M3IDE3LjU1IDcuNDQgMTggOCAxOEgxNkMxNi41NSAxOCAxNyAxNy41NSAxNyAxN1YxNEgxNlYxM0MxNiAxMi40NCAxNS41NSAxMiAxNSAxMkMxNC40NSAxMiAxNCAxMi40NSAxNCAxM1YxNEgxMFYxMi42MkwxNS40NSA5LjlDMTYuNDIgOS4zNCAxNiA4IDE1IDhNOSAyMFYyMUM5IDIxLjU3IDkuNDYgMjIgMTAgMjJIMTRDMTQuNTYgMjIgMTUgMjEuNTUgMTUgMjFWMjBcIjtcclxuZXhwb3J0IHZhciBtZGlMaWdodGJ1bGJDZmxTcGlyYWxPZmYgPSBcIk0xNS40NSA5LjlMMTMuODggMTAuNjhMMTIuMzggOS4xOEwxNC41NSA4LjFDMTQuNjkgOC4wMyAxNC44NCA4IDE1IDhDMTYgOCAxNi40MiA5LjM0IDE1LjQ1IDkuOU0xMS4yMiA4TDE1LjQ1IDUuOUMxNi40MSA1LjQzIDE2IDQgMTUgNEMxNC44MyA0IDE0LjY5IDQuMDMgMTQuNTUgNC4xTDkuNzIgNi41TDExLjIyIDhNMjAuODQgMjIuNzNMMTYuMDkgMThIOEM3LjQ0IDE4IDcgMTcuNTUgNyAxN1YxNEg4VjEyQzggMTEuNiA4LjIgMTEuMjUgOC43IDExLjAzTDkgMTAuODhMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMi4xMSAxNEwxMC41IDEyLjM4TDEwIDEyLjYyVjE0SDEyLjExTTkgMjFDOSAyMS41NyA5LjQ2IDIyIDEwIDIySDE0QzE0LjU2IDIyIDE1IDIxLjU1IDE1IDIxVjIwSDlWMjFNOSA1QzkuMTYgNSA5LjMyIDQuOTUgOS40NSA0LjlMMTEuNDUgMy45QzEyLjQzIDMuMzYgMTIgMiAxMSAyQzEwLjg0IDIgMTAuNjkgMi4wMyAxMC41NSAyLjFMOC41NSAzLjFDNy41NiAzLjY2IDggNSA5IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiR3JvdXAgPSBcIk0xNSAxNFYxNkExIDEgMCAwIDEgMTQgMTdIMTBBMSAxIDAgMCAxIDkgMTZWMTRBNSA1IDAgMSAxIDE1IDE0TTE0IDE4SDEwVjE5QTEgMSAwIDAgMCAxMSAyMEgxM0ExIDEgMCAwIDAgMTQgMTlNNyAxOVYxOEg1VjE5QTEgMSAwIDAgMCA2IDIwSDcuMTdBMi45MyAyLjkzIDAgMCAxIDcgMTlNNSAxMEE2Ljc5IDYuNzkgMCAwIDEgNS42OCA3QTQgNCAwIDAgMCA0IDE0LjQ1VjE2QTEgMSAwIDAgMCA1IDE3SDdWMTQuODhBNi45MiA2LjkyIDAgMCAxIDUgMTBNMTcgMThWMTlBMi45MyAyLjkzIDAgMCAxIDE2LjgzIDIwSDE4QTEgMSAwIDAgMCAxOSAxOVYxOE0xOC4zMiA3QTYuNzkgNi43OSAwIDAgMSAxOSAxMEE2LjkyIDYuOTIgMCAwIDEgMTcgMTQuODhWMTdIMTlBMSAxIDAgMCAwIDIwIDE2VjE0LjQ1QTQgNCAwIDAgMCAxOC4zMiA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT2ZmID0gXCJNMjAuODQgMjIuNzNMMTguMDkgMjBDMTguMDYgMjAgMTguMDMgMjAgMTggMjBIMTYuODNDMTYuOTQgMTkuNjggMTcgMTkuMzQgMTcgMTlWMTguODlMMTQuNzUgMTYuNjRDMTQuNTcgMTYuODYgMTQuMzEgMTcgMTQgMTdIMTBDOS40NSAxNyA5IDE2LjU1IDkgMTZWMTRDNy40IDEyLjggNi43NCAxMC44NCA3LjEyIDlMNS41IDcuNEM1LjE4IDguMjMgNSA5LjExIDUgMTBDNSAxMS44MyA1LjcyIDEzLjU4IDcgMTQuODhWMTdINUM0LjQ1IDE3IDQgMTYuNTUgNCAxNlYxNC40NUMyLjg2IDEzLjc5IDIuMTIgMTIuNjIgMiAxMS4zMUMxLjg1IDkuMjcgMy4yNSA3LjUgNS4yIDcuMDlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNSA2QzEzLjIyIDQuNjcgMTAuODYgNC43MiA5LjEzIDUuOTNMMTYuMDggMTIuODhDMTcuNjMgMTAuNjcgMTcuMTcgNy42MyAxNSA2TTE5Ljc5IDE2LjU5QzE5LjkxIDE2LjQyIDIwIDE2LjIyIDIwIDE2VjE0LjQ1QzIxLjkxIDEzLjM0IDIyLjU3IDEwLjkgMjEuNDYgOUMyMC44IDcuODUgMTkuNjMgNy4xMSAxOC4zMiA3QzE4Ljc3IDcuOTQgMTkgOC45NiAxOSAxMEMxOSAxMS41NyAxOC40NyAxMy4wOSAxNy41IDE0LjMxTDE5Ljc5IDE2LjU5TTEwIDE5QzEwIDE5LjU1IDEwLjQ1IDIwIDExIDIwSDEzQzEzLjU1IDIwIDE0IDE5LjU1IDE0IDE5VjE4SDEwVjE5TTcgMThINVYxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEg3LjE3QzcuMDYgMTkuNjggNyAxOS4zNCA3IDE5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNS4yIDcuMDlDMy4yNSA3LjUgMS44NSA5LjI3IDIgMTEuMzFDMi4xMiAxMi42MiAyLjg2IDEzLjc5IDQgMTQuNDVWMTZDNCAxNi41NSA0LjQ1IDE3IDUgMTdIN1YxNC44OEM1LjcyIDEzLjU4IDUgMTEuODMgNSAxMEM1IDkuMTEgNS4xOCA4LjIzIDUuNSA3LjRMNy4xMiA5QzYuNzQgMTAuODQgNy40IDEyLjggOSAxNFYxNkM5IDE2LjU1IDkuNDUgMTcgMTAgMTdIMTRDMTQuMzEgMTcgMTQuNTcgMTYuODYgMTQuNzUgMTYuNjRMMTcgMTguODlWMTlDMTcgMTkuMzQgMTYuOTQgMTkuNjggMTYuODMgMjBIMThDMTguMDMgMjAgMTguMDYgMjAgMTguMDkgMjBMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNOS4yMyAxMS4xMkwxMC44NyAxMi43NkMxMC4xMSAxMi40NiA5LjUzIDExLjg2IDkuMjMgMTEuMTJNMTMgMTVIMTFWMTIuODlMMTMgMTQuODlWMTVNMTAuNTcgNy4zN0w5LjEzIDUuOTNDMTAuODYgNC43MiAxMy4yMiA0LjY3IDE1IDZDMTYuMjYgNi45NCAxNyA4LjQzIDE3IDEwQzE3IDExLjA1IDE2LjY3IDEyLjA1IDE2LjA4IDEyLjg4TDE0LjYzIDExLjQzQzE0Ljg2IDExIDE1IDEwLjUgMTUgMTBDMTUgOC4zNCAxMy42NyA3IDEyIDdDMTEuNSA3IDExIDcuMTQgMTAuNTcgNy4zN00xNy41IDE0LjMxQzE4LjQ3IDEzLjA5IDE5IDExLjU3IDE5IDEwQzE5IDguOTYgMTguNzcgNy45NCAxOC4zMiA3QzE5LjYzIDcuMTEgMjAuOCA3Ljg1IDIxLjQ2IDlDMjIuNTcgMTAuOSAyMS45MSAxMy4zNCAyMCAxNC40NVYxNkMyMCAxNi4yMiAxOS45MSAxNi40MiAxOS43OSAxNi41OUwxNy41IDE0LjMxTTEwIDE4SDE0VjE5QzE0IDE5LjU1IDEzLjU1IDIwIDEzIDIwSDExQzEwLjQ1IDIwIDEwIDE5LjU1IDEwIDE5VjE4TTcgMTlDNyAxOS4zNCA3LjA2IDE5LjY4IDcuMTcgMjBINkM1LjQ1IDIwIDUgMTkuNTUgNSAxOVYxOEg3VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT3V0bGluZSA9IFwiTTcgMTlBMi45MyAyLjkzIDAgMCAwIDcuMTcgMjBINkExIDEgMCAwIDEgNSAxOVYxOEg3TTEwIDE5QTEgMSAwIDAgMCAxMSAyMEgxM0ExIDEgMCAwIDAgMTQgMTlWMThIMTBNNCAxNkExIDEgMCAwIDAgNSAxN0g3VjE0Ljg4QTYuOTIgNi45MiAwIDAgMSA1IDEwQTYuNzkgNi43OSAwIDAgMSA1LjY4IDdBNCA0IDAgMCAwIDQgMTQuNDVNMTcgMTlBMi45MyAyLjkzIDAgMCAxIDE2LjgzIDIwSDE4QTEgMSAwIDAgMCAxOSAxOVYxOEgxN00xNyAxMEE1IDUgMCAwIDEgMTUgMTRWMTZBMSAxIDAgMCAxIDE0IDE3SDEwQTEgMSAwIDAgMSA5IDE2VjE0QTUgNSAwIDEgMSAxNyAxME0xNSAxMEEzIDMgMCAxIDAgMTEgMTIuODJWMTVIMTNWMTIuODJBMyAzIDAgMCAwIDE1IDEwTTE4LjMyIDdBNi43OSA2Ljc5IDAgMCAxIDE5IDEwQTYuOTIgNi45MiAwIDAgMSAxNyAxNC44OFYxN0gxOUExIDEgMCAwIDAgMjAgMTZWMTQuNDVBNCA0IDAgMCAwIDE4LjMyIDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiTXVsdGlwbGUgPSBcIk0xNyAxNlYxOEMxNyAxOC41NSAxNi41MyAxOSAxNiAxOUgxMkMxMS40MiAxOSAxMSAxOC41NSAxMSAxOFYxNkM4Ljc3IDE0LjM0IDguMzIgMTEuMjEgMTAgOVMxNC43NyA2LjM0IDE3IDggMTkuNjMgMTIuNzkgMTggMTVDMTcuNjkgMTUuMzggMTcuMzUgMTUuNzIgMTcgMTZNMTYgMjBIMTJWMjFDMTIgMjEuNTUgMTIuNDIgMjIgMTMgMjJIMTVDMTUuNTMgMjIgMTYgMjEuNTUgMTYgMjFNNy42NiAxNUg3VjE2QzcgMTYuNTUgNy40MiAxNyA4IDE3SDlWMTYuODhDOC40NCAxNi4zMyA4IDE1LjcgNy42NiAxNU0xMy41OCA1QzEyLjQ2IDIuNDcgOS41IDEuMzMgNyAyLjQ1UzMuMzEgNi41IDQuNDMgOS4wNEM0Ljc3IDkuODEgNS4zIDEwLjUgNiAxMVYxM0M2IDEzLjU1IDYuNDIgMTQgNyAxNEg3LjI4QzcuMDcgMTMuMzUgNi45NyAxMi42OCA3IDEyQzYuOTcgOC4yOSA5Ljg3IDUuMjEgMTMuNTggNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaWdodGJ1bGJNdWx0aXBsZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE2Ljc0IDE4LjYzQzE2LjU1IDE4Ljg1IDE2LjI5IDE5IDE2IDE5SDEyQzExLjQyIDE5IDExIDE4LjU1IDExIDE4VjE2QzkuMzcgMTQuOCA4LjcxIDEyLjgyIDkuMSAxMUw3LjUgOS4zOUM3LjE3IDEwLjIgNi45NyAxMS4wOCA3IDEyQzYuOTcgMTIuNjggNy4wNyAxMy4zNSA3LjI4IDE0SDdDNi40MiAxNCA2IDEzLjU1IDYgMTNWMTFDNS4zIDEwLjUgNC43NyA5LjgxIDQuNDMgOS4wNEM0IDguMDUgMy45MSA3IDQuMTIgNkwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTEzLjU4IDVDMTIuNDYgMi40NyA5LjUgMS4zMyA3IDIuNDVDNi42OCAyLjU4IDYuMzkgMi43NSA2LjEzIDIuOTNMOS42NyA2LjQ3QzEwLjc2IDUuNjMgMTIuMSA1LjA4IDEzLjU4IDVNMTguMDYgMTQuODZDMTkuNiAxMi42NiAxOS4xNCA5LjYyIDE3IDhDMTUuMiA2LjY3IDEyLjg0IDYuNzIgMTEuMTIgNy45MkwxOC4wNiAxNC44Nk0xMiAyMUMxMiAyMS41NSAxMi40MiAyMiAxMyAyMkgxNUMxNS41MyAyMiAxNiAyMS41NSAxNiAyMVYyMEgxMlYyMU03IDE1VjE2QzcgMTYuNTUgNy40MiAxNyA4IDE3SDlWMTYuODhDOC40MyAxNi4zMyA4IDE1LjcgNy42NiAxNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk11bHRpcGxlT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNC4xNCA2LjAzQzMuOTMgNyA0IDguMDUgNC40NSA5LjA0QzQuNzkgOS44MSA1LjMzIDEwLjUgNiAxMVYxM0M2IDEzLjU1IDYuNDUgMTQgNyAxNEg3LjNDNy4xIDEzLjM1IDcgMTIuNjggNyAxMkM3IDExLjA4IDcuMTkgMTAuMjEgNy41IDkuNDFMOS4xMSAxMUM5LjA1IDExLjMzIDkgMTEuNjYgOSAxMkM5IDEzLjU3IDkuNzQgMTUuMDYgMTEgMTZWMThDMTEgMTguNTUgMTEuNDUgMTkgMTIgMTlIMTZDMTYuMzEgMTkgMTYuNTcgMTguODYgMTYuNzUgMTguNjRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTEuMjMgMTMuMTJMMTIuODcgMTQuNzZDMTIuMSAxNC40NCAxMS41MyAxMy44NSAxMS4yMyAxMy4xMk0xNSAxN0gxM1YxNC44OUwxNSAxNi44OVYxN005LjY5IDYuNUw2LjE0IDIuOTRDNi40MSAyLjc1IDYuNyAyLjU4IDcgMi40NEM5LjUzIDEuMzMgMTIuNSAyLjQ3IDEzLjYgNUMxMi4xMiA1LjA5IDEwLjc3IDUuNjMgOS42OSA2LjVNMTEuMTIgNy45MkMxMS45NCA3LjM1IDEyLjkzIDcgMTQgN0MxNS41NyA3IDE3LjA2IDcuNzQgMTggOUMxOS4zMyAxMC43OCAxOS4yOCAxMy4xNCAxOC4wNyAxNC44N0wxNi42MiAxMy40MkMxNi43IDEzLjI4IDE2Ljc3IDEzLjE0IDE2LjgzIDEzQzE3LjM4IDExLjQzIDE2LjU2IDkuNzIgMTUgOS4xNkMxNC4xNiA4Ljg3IDEzLjI5IDguOTcgMTIuNTcgOS4zN0wxMS4xMiA3LjkyTTcuNjggMTVDOCAxNS43IDguNDYgMTYuMzMgOSAxNi44OFYxN0g4QzcuNDUgMTcgNyAxNi41NSA3IDE2VjE1SDcuNjhNMTIgMjBIMTZWMjFDMTYgMjEuNTUgMTUuNTUgMjIgMTUgMjJIMTNDMTIuNDUgMjIgMTIgMjEuNTUgMTIgMjFWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiTXVsdGlwbGVPdXRsaW5lID0gXCJNMTIgMjFDMTIgMjEuNTUgMTIuNDUgMjIgMTMgMjJIMTVDMTUuNTUgMjIgMTYgMjEuNTUgMTYgMjFWMjBIMTJNMTQgN0MxMS4yNCA3IDkgOS4yNCA5IDEyQzkgMTMuNTcgOS43NCAxNS4wNiAxMSAxNlYxOEMxMSAxOC41NSAxMS40NSAxOSAxMiAxOUgxNkMxNi41NSAxOSAxNyAxOC41NSAxNyAxOFYxNkMxOS4yMSAxNC4zNCAxOS42NiAxMS4yMSAxOCA5QzE3LjA2IDcuNzQgMTUuNTcgNyAxNCA3TTE1IDE0LjgyVjE3SDEzVjE0LjgyQzExLjQ0IDE0LjI3IDEwLjYyIDEyLjU1IDExLjE3IDExQzExLjcyIDkuNDMgMTMuNDQgOC42MSAxNSA5LjE2QzE2LjU2IDkuNzIgMTcuMzggMTEuNDMgMTYuODMgMTNDMTYuNTMgMTMuODUgMTUuODUgMTQuNSAxNSAxNC44Mk03LjY4IDE1SDdWMTZDNyAxNi41NSA3LjQ1IDE3IDggMTdIOVYxNi44OEM4LjQ2IDE2LjMzIDggMTUuNyA3LjY4IDE1TTEzLjYgNUMxMi41IDIuNDcgOS41MyAxLjMzIDcgMi40NVMzLjM0IDYuNSA0LjQ1IDkuMDRDNC43OSA5LjgxIDUuMzMgMTAuNSA2IDExVjEzQzYgMTMuNTUgNi40NSAxNCA3IDE0SDcuM0M3LjEgMTMuMzUgNyAxMi42OCA3IDEyQzcgOC4yOSA5Ljg5IDUuMjEgMTMuNiA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk9mZiA9IFwiTTEyLDJDOS43NiwyIDcuNzgsMy4wNSA2LjUsNC42OEwxNi4zMSwxNC41QzE3Ljk0LDEzLjIxIDE5LDExLjI0IDE5LDlBNyw3IDAgMCwwIDEyLDJNMy4yOCw0TDIsNS4yN0w1LjA0LDguM0M1LDguNTMgNSw4Ljc2IDUsOUM1LDExLjM4IDYuMTksMTMuNDcgOCwxNC43NFYxN0ExLDEgMCAwLDAgOSwxOEgxNC43M0wxOC43MywyMkwyMCwyMC43MkwzLjI4LDRNOSwyMFYyMUExLDEgMCAwLDAgMTAsMjJIMTRBMSwxIDAgMCwwIDE1LDIxVjIwSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiT2ZmT3V0bGluZSA9IFwiTTEyLDJDOS43NiwyIDcuNzgsMy4wNSA2LjUsNC42OEw3LjkzLDYuMTFDOC44NCw0Ljg0IDEwLjMyLDQgMTIsNEE1LDUgMCAwLDEgMTcsOUMxNywxMC42OCAxNi4xNiwxMi4xNiAxNC44OSwxMy4wNkwxNi4zMSwxNC41QzE3Ljk0LDEzLjIxIDE5LDExLjI0IDE5LDlBNyw3IDAgMCwwIDEyLDJNMy4yOCw0TDIsNS4yN0w1LjA0LDguM0M1LDguNTMgNSw4Ljc2IDUsOUM1LDExLjM4IDYuMTksMTMuNDcgOCwxNC43NFYxN0ExLDEgMCAwLDAgOSwxOEgxNC43M0wxOC43MywyMkwyMCwyMC43MkwzLjI4LDRNNy4yMywxMC41TDEyLjczLDE2SDEwVjEzLjU4QzguNjgsMTMgNy42NiwxMS44OCA3LjIzLDEwLjVNOSwyMFYyMUExLDEgMCAwLDAgMTAsMjJIMTRBMSwxIDAgMCwwIDE1LDIxVjIwSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiT24gPSBcIk0xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxNC4yMiAxNi43OSwxNi4xNiAxNSwxNy4yVjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVYxNy4yQzcuMjEsMTYuMTYgNiwxNC4yMiA2LDEyQTYsNiAwIDAsMSAxMiw2TTE0LDIxVjIyQTEsMSAwIDAsMSAxMywyM0gxMUExLDEgMCAwLDEgMTAsMjJWMjFIMTRNMjAsMTFIMjNWMTNIMjBWMTFNMSwxMUg0VjEzSDFWMTFNMTMsMVY0SDExVjFIMTNNNC45MiwzLjVMNy4wNSw1LjY0TDUuNjMsNy4wNUwzLjUsNC45M0w0LjkyLDMuNU0xNi45NSw1LjYzTDE5LjA3LDMuNUwyMC41LDQuOTNMMTguMzcsNy4wNUwxNi45NSw1LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk9uT3V0bGluZSA9IFwiTTIwLDExSDIzVjEzSDIwVjExTTEsMTFINFYxM0gxVjExTTEzLDFWNEgxMVYxSDEzTTQuOTIsMy41TDcuMDUsNS42NEw1LjYzLDcuMDVMMy41LDQuOTNMNC45MiwzLjVNMTYuOTUsNS42M0wxOS4wNywzLjVMMjAuNSw0LjkzTDE4LjM3LDcuMDVMMTYuOTUsNS42M00xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxNC4yMiAxNi43OSwxNi4xNiAxNSwxNy4yVjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVYxNy4yQzcuMjEsMTYuMTYgNiwxNC4yMiA2LDEyQTYsNiAwIDAsMSAxMiw2TTE0LDIxVjIyQTEsMSAwIDAsMSAxMywyM0gxMUExLDEgMCAwLDEgMTAsMjJWMjFIMTRNMTEsMThIMTNWMTUuODdDMTQuNzMsMTUuNDMgMTYsMTMuODYgMTYsMTJBNCw0IDAgMCwwIDEyLDhBNCw0IDAgMCwwIDgsMTJDOCwxMy44NiA5LjI3LDE1LjQzIDExLDE1Ljg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk91dGxpbmUgPSBcIk0xMiwyQTcsNyAwIDAsMSAxOSw5QzE5LDExLjM4IDE3LjgxLDEzLjQ3IDE2LDE0Ljc0VjE3QTEsMSAwIDAsMSAxNSwxOEg5QTEsMSAwIDAsMSA4LDE3VjE0Ljc0QzYuMTksMTMuNDcgNSwxMS4zOCA1LDlBNyw3IDAgMCwxIDEyLDJNOSwyMVYyMEgxNVYyMUExLDEgMCAwLDEgMTQsMjJIMTBBMSwxIDAgMCwxIDksMjFNMTIsNEE1LDUgMCAwLDAgNyw5QzcsMTEuMDUgOC4yMywxMi44MSAxMCwxMy41OFYxNkgxNFYxMy41OEMxNS43NywxMi44MSAxNywxMS4wNSAxNyw5QTUsNSAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0aG91c2UgPSBcIk04LDEwVjhIOVY0SDhWM0wxMiwxTDE2LDNWNEgxNVY4SDE2VjEwSDE0Ljc0TDguNDQsMTMuNjRMOSwxMEg4TTEzLDhWNEgxMVY4SDEzTTcsMjNMNy4wNCwyMi43NkwxNi4xNSwxNy41TDE2LjY3LDIwLjg4TDEzLDIzSDdNOC4wNSwxNi4xN0wxNS4zMSwxMkwxNS44MywxNS4zN0w3LjQzLDIwLjIyTDguMDUsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRob3VzZU9uID0gXCJNMSwxMFYyTDEwLDVWN0wxLDEwTTgsMTBWOEgxM1Y0SDhWM0wxMiwxTDE2LDNWNEgxNVY4SDE2VjEwSDE0Ljc0TDguNDQsMTMuNjRMOSwxMEg4TTcsMjNMNy4wNCwyMi43NkwxNi4xNSwxNy41TDE2LjY3LDIwLjg4TDEzLDIzSDdNOC4wNSwxNi4xN0wxNS4zMSwxMkwxNS44MywxNS4zN0w3LjQzLDIwLjIyTDguMDUsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRuaW5nQm9sdCA9IFwiTTExIDE1SDZMMTMgMVY5SDE4TDExIDIzVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0bmluZ0JvbHRPdXRsaW5lID0gXCJNMTEgOS40N1YxMUgxNC43NkwxMyAxNC41M1YxM0g5LjI0TDExIDkuNDdNMTMgMUw2IDE1SDExVjIzTDE4IDlIMTNWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5nZXJpZSA9IFwiTTIyIDdIMjBWMkgxOFY0LjM0TDEyIDYuOTFMNiA0LjM0VjJINFY3SDJWOUg0LjA1QzQuMyAxMS4yNSA2LjE5IDEzIDguNSAxM0M5LjkyIDEzIDExLjE4IDEyLjMzIDEyIDExLjNDMTIuODMgMTIuMzMgMTQuMDggMTMgMTUuNSAxM0MxNy44MSAxMyAxOS43IDExLjI1IDE5Ljk1IDlIMjJWN004LjUgMTFDNy4xMiAxMSA2IDkuODggNiA4LjVWNi41TDExIDguNjVDMTAuOSA5Ljk2IDkuODMgMTEgOC41IDExTTE4IDguNUMxOCA5Ljg4IDE2Ljg4IDExIDE1LjUgMTFDMTQuMTcgMTEgMTMuMSA5Ljk2IDEzIDguNjVMMTggNi41VjguNU0yIDE1VjE3SDNDNS45NyAxNyA4LjQzIDE5LjE3IDguOTEgMjJIMTUuMDlDMTUuNTcgMTkuMTcgMTguMDMgMTcgMjEgMTdIMjJWMTVIMk0xMy41OSAyMEgxMC40MUM5Ljk0IDE4Ljg0IDkuMjEgMTcuODIgOC4yOSAxN0gxNS43MUMxNC43OSAxNy44MiAxNC4wNiAxOC44NCAxMy41OSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rID0gXCJNMy45LDEyQzMuOSwxMC4yOSA1LjI5LDguOSA3LDguOUgxMVY3SDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdIMTFWMTUuMUg3QzUuMjksMTUuMSAzLjksMTMuNzEgMy45LDEyTTgsMTNIMTZWMTFIOFYxM00xNyw3SDEzVjguOUgxN0MxOC43MSw4LjkgMjAuMSwxMC4yOSAyMC4xLDEyQzIwLjEsMTMuNzEgMTguNzEsMTUuMSAxNywxNS4xSDEzVjE3SDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTEsMTZIMTBDOC4zOSwxNiA2LDE0Ljk0IDYsMTJDNiw5LjA3IDguMzksOCAxMCw4SDExVjEwSDEwQzkuNTQsMTAgOCwxMC4xNyA4LDEyQzgsMTMuOSA5LjY3LDE0IDEwLDE0SDExVjE2TTE1LDExVjEzSDlWMTFIMTVNMTQsMTZIMTNWMTRIMTRDMTQuNDYsMTQgMTYsMTMuODMgMTYsMTJDMTYsMTAuMSAxNC4zMywxMCAxNCwxMEgxM1Y4SDE0QzE1LjYxLDggMTgsOS4wNyAxOCwxMkMxOCwxNC45NCAxNS42MSwxNiAxNCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94T3V0bGluZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xMSwxNkgxMEM4LjM5LDE2IDYsMTQuOTQgNiwxMkM2LDkuMDcgOC4zOSw4IDEwLDhIMTFWMTBIMTBDOS41NCwxMCA4LDEwLjE3IDgsMTJDOCwxMy45IDkuNjcsMTQgMTAsMTRIMTFWMTZNMTQsMTZIMTNWMTRIMTRDMTQuNDYsMTQgMTYsMTMuODMgMTYsMTJDMTYsMTAuMSAxNC4zMywxMCAxNCwxMEgxM1Y4SDE0QzE1LjYxLDggMTgsOS4wNyAxOCwxMkMxOCwxNC45NCAxNS42MSwxNiAxNCwxNk0xNSwxM0g5VjExSDE1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtCb3hWYXJpYW50ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMuOTQsMTQuODFMMTEuNzMsMTdDMTEuMDgsMTcuNjcgMTAuMjIsMTggOS4zNiwxOEM4LjUsMTggNy42NCwxNy42NyA3LDE3QzUuNjcsMTUuNzEgNS42NywxMy41OCA3LDEyLjI2TDguMzUsMTAuOUw4LjM0LDExLjVDOC4zMywxMiA4LjQxLDEyLjUgOC41NywxMi45NEw4LjYyLDEzLjA5TDguMjIsMTMuNUM3LjkxLDEzLjggNy43NCwxNC4yMSA3Ljc0LDE0LjY0QzcuNzQsMTUuMDcgNy45MSwxNS40NyA4LjIyLDE1Ljc4QzguODMsMTYuNCA5Ljg5LDE2LjQgMTAuNSwxNS43OEwxMi43LDEzLjU5QzEzLDEzLjI4IDEzLjE4LDEyLjg3IDEzLjE4LDEyLjQ0QzEzLjE4LDEyIDEzLDExLjYxIDEyLjcsMTEuM0MxMi41MywxMS4xNCAxMi40NCwxMC45MiAxMi40NCwxMC42OEMxMi40NCwxMC40NSAxMi41MywxMC4yMyAxMi43LDEwLjA2QzEzLjAzLDkuNzMgMTMuNjEsOS43NCAxMy45NCwxMC4wNkMxNC41NywxMC43IDE0LjkyLDExLjU0IDE0LjkyLDEyLjQ0QzE0LjkyLDEzLjM0IDE0LjU3LDE0LjE4IDEzLjk0LDE0LjgxTTE3LDExLjc0TDE1LjY2LDEzLjFWMTIuNUMxNS42NywxMiAxNS41OSwxMS41IDE1LjQzLDExLjA2TDE1LjM4LDEwLjkyTDE1Ljc4LDEwLjVDMTYuMDksMTAuMiAxNi4yNiw5Ljc5IDE2LjI2LDkuMzZDMTYuMjYsOC45MyAxNi4wOSw4LjUzIDE1Ljc4LDguMjJDMTUuMTcsNy42IDE0LjEsNy42MSAxMy41LDguMjJMMTEuMywxMC40MkMxMSwxMC43MiAxMC44MiwxMS4xMyAxMC44MiwxMS41NkMxMC44MiwxMiAxMSwxMi4zOSAxMS4zLDEyLjdDMTEuNDcsMTIuODYgMTEuNTYsMTMuMDggMTEuNTYsMTMuMzJDMTEuNTYsMTMuNTYgMTEuNDcsMTMuNzggMTEuMywxMy45NEMxMS4xMywxNC4xMSAxMC45MSwxNC4xOSAxMC42OCwxNC4xOUMxMC40NiwxNC4xOSAxMC4yMywxNC4xMSAxMC4wNiwxMy45NEM4Ljc1LDEyLjYzIDguNzUsMTAuNSAxMC4wNiw5LjE5TDEyLjI3LDdDMTMuNTgsNS42NyAxNS43MSw1LjY4IDE3LDdDMTcuNjUsNy42MiAxOCw4LjQ2IDE4LDkuMzZDMTgsMTAuMjYgMTcuNjUsMTEuMSAxNywxMS43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94VmFyaWFudE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSwxOUg1VjVIMTlWMTlNMTMuOTQsMTAuMDZDMTQuNTcsMTAuNyAxNC45MiwxMS41NCAxNC45MiwxMi40NEMxNC45MiwxMy4zNCAxNC41NywxNC4xOCAxMy45NCwxNC44MUwxMS43MywxN0MxMS4wOCwxNy42NyAxMC4yMiwxOCA5LjM2LDE4QzguNSwxOCA3LjY0LDE3LjY3IDcsMTdDNS42NywxNS43MSA1LjY3LDEzLjU4IDcsMTIuMjZMOC4zNSwxMC45TDguMzQsMTEuNUM4LjMzLDEyIDguNDEsMTIuNSA4LjU3LDEyLjk0TDguNjIsMTMuMDlMOC4yMiwxMy41QzcuOTEsMTMuOCA3Ljc0LDE0LjIxIDcuNzQsMTQuNjRDNy43NCwxNS4wNyA3LjkxLDE1LjQ3IDguMjIsMTUuNzhDOC44MywxNi40IDkuODksMTYuNCAxMC41LDE1Ljc4TDEyLjcsMTMuNTlDMTMsMTMuMjggMTMuMTgsMTIuODcgMTMuMTgsMTIuNDRDMTMuMTgsMTIgMTMsMTEuNjEgMTIuNywxMS4zQzEyLjUzLDExLjE0IDEyLjQ0LDEwLjkyIDEyLjQ0LDEwLjY4QzEyLjQ0LDEwLjQ1IDEyLjUzLDEwLjIzIDEyLjcsMTAuMDZDMTMuMDMsOS43MyAxMy42MSw5Ljc0IDEzLjk0LDEwLjA2TTE4LDkuMzZDMTgsMTAuMjYgMTcuNjUsMTEuMSAxNywxMS43NEwxNS42NiwxMy4xVjEyLjVDMTUuNjcsMTIgMTUuNTksMTEuNSAxNS40MywxMS4wNkwxNS4zOCwxMC45MkwxNS43OCwxMC41QzE2LjA5LDEwLjIgMTYuMjYsOS43OSAxNi4yNiw5LjM2QzE2LjI2LDguOTMgMTYuMDksOC41MyAxNS43OCw4LjIyQzE1LjE3LDcuNiAxNC4xLDcuNjEgMTMuNSw4LjIyTDExLjMsMTAuNDJDMTEsMTAuNzIgMTAuODIsMTEuMTMgMTAuODIsMTEuNTZDMTAuODIsMTIgMTEsMTIuMzkgMTEuMywxMi43QzExLjQ3LDEyLjg2IDExLjU2LDEzLjA4IDExLjU2LDEzLjMyQzExLjU2LDEzLjU2IDExLjQ3LDEzLjc4IDExLjMsMTMuOTRDMTEuMTMsMTQuMTEgMTAuOTEsMTQuMTkgMTAuNjgsMTQuMTlDMTAuNDYsMTQuMTkgMTAuMjMsMTQuMTEgMTAuMDYsMTMuOTRDOC43NSwxMi42MyA4Ljc1LDEwLjUgMTAuMDYsOS4xOUwxMi4yNyw3QzEzLjU4LDUuNjcgMTUuNzEsNS42OCAxNyw3QzE3LjY1LDcuNjIgMTgsOC40NiAxOCw5LjM2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtMb2NrID0gXCJNMjMgMTZWMTUuNUEyLjUgMi41IDAgMCAwIDE4IDE1LjVWMTZBMSAxIDAgMCAwIDE3IDE3VjIxQTEgMSAwIDAgMCAxOCAyMkgyM0ExIDEgMCAwIDAgMjQgMjFWMTdBMSAxIDAgMCAwIDIzIDE2TTIyIDE2SDE5VjE1LjVBMS41IDEuNSAwIDAgMSAyMiAxNS41TTcgOC45SDExVjdIN0E1IDUgMCAwIDAgNyAxN0gxMVYxNS4xSDdBMy4xIDMuMSAwIDAgMSA3IDguOU04IDExVjEzSDE2VjExTTEzIDE1LjFWMTdIMTVWMTUuMU0xNyA3SDEzVjguOUgxN0EzLjA5IDMuMDkgMCAwIDEgMTkuOTQgMTFBNS4xMiA1LjEyIDAgMCAxIDIwLjUgMTFIMjEuOUE1IDUgMCAwIDAgMTcgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rT2ZmID0gXCJNMTcsN0gxM1Y4LjlIMTdDMTguNzEsOC45IDIwLjEsMTAuMjkgMjAuMSwxMkMyMC4xLDEzLjQzIDE5LjEyLDE0LjYzIDE3Ljc5LDE1TDE5LjI1LDE2LjQ0QzIwLjg4LDE1LjYxIDIyLDEzLjk1IDIyLDEyQTUsNSAwIDAsMCAxNyw3TTE2LDExSDEzLjgxTDE1LjgxLDEzSDE2VjExTTIsNC4yN0w1LjExLDcuMzhDMy4yOSw4LjEyIDIsOS45MSAyLDEyQTUsNSAwIDAsMCA3LDE3SDExVjE1LjFIN0M1LjI5LDE1LjEgMy45LDEzLjcxIDMuOSwxMkMzLjksMTAuNDEgNS4xMSw5LjEgNi42Niw4LjkzTDguNzMsMTFIOFYxM0gxMC43M0wxMywxNS4yN1YxN0gxNC43M0wxOC43NCwyMUwyMCwxOS43NEwzLjI3LDNMMiw0LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtQbHVzID0gXCJNNyw3SDExVjlIN0EzLDMgMCAwLDAgNCwxMkEzLDMgMCAwLDAgNywxNUgxMVYxN0g3QTUsNSAwIDAsMSAyLDEyQTUsNSAwIDAsMSA3LDdNMTcsN0E1LDUgMCAwLDEgMjIsMTJIMjBBMywzIDAgMCwwIDE3LDlIMTNWN0gxN004LDExSDE2VjEzSDhWMTFNMTcsMTJIMTlWMTVIMjJWMTdIMTlWMjBIMTdWMTdIMTRWMTVIMTdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnQgPSBcIk0xMC41OSwxMy40MUMxMSwxMy44IDExLDE0LjQ0IDEwLjU5LDE0LjgzQzEwLjIsMTUuMjIgOS41NiwxNS4yMiA5LjE3LDE0LjgzQzcuMjIsMTIuODggNy4yMiw5LjcxIDkuMTcsNy43NlY3Ljc2TDEyLjcxLDQuMjJDMTQuNjYsMi4yNyAxNy44MywyLjI3IDE5Ljc4LDQuMjJDMjEuNzMsNi4xNyAyMS43Myw5LjM0IDE5Ljc4LDExLjI5TDE4LjI5LDEyLjc4QzE4LjMsMTEuOTYgMTguMTcsMTEuMTQgMTcuODksMTAuMzZMMTguMzYsOS44OEMxOS41NCw4LjcxIDE5LjU0LDYuODEgMTguMzYsNS42NEMxNy4xOSw0LjQ2IDE1LjI5LDQuNDYgMTQuMTIsNS42NEwxMC41OSw5LjE3QzkuNDEsMTAuMzQgOS40MSwxMi4yNCAxMC41OSwxMy40MU0xMy40MSw5LjE3QzEzLjgsOC43OCAxNC40NCw4Ljc4IDE0LjgzLDkuMTdDMTYuNzgsMTEuMTIgMTYuNzgsMTQuMjkgMTQuODMsMTYuMjRWMTYuMjRMMTEuMjksMTkuNzhDOS4zNCwyMS43MyA2LjE3LDIxLjczIDQuMjIsMTkuNzhDMi4yNywxNy44MyAyLjI3LDE0LjY2IDQuMjIsMTIuNzFMNS43MSwxMS4yMkM1LjcsMTIuMDQgNS44MywxMi44NiA2LjExLDEzLjY1TDUuNjQsMTQuMTJDNC40NiwxNS4yOSA0LjQ2LDE3LjE5IDUuNjQsMTguMzZDNi44MSwxOS41NCA4LjcxLDE5LjU0IDkuODgsMTguMzZMMTMuNDEsMTQuODNDMTQuNTksMTMuNjYgMTQuNTksMTEuNzYgMTMuNDEsMTAuNTlDMTMsMTAuMiAxMyw5LjU2IDEzLjQxLDkuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRNaW51cyA9IFwiTTEwLjYgMTMuNEExIDEgMCAwIDEgOS4yIDE0LjhBNC44IDQuOCAwIDAgMSA5LjIgNy44TDEyLjcgNC4yQTUuMSA1LjEgMCAwIDEgMTkuOCA0LjJBNS4xIDUuMSAwIDAgMSAxOS44IDExLjNMMTguMyAxMi44QTYuNCA2LjQgMCAwIDAgMTcuOSAxMC40TDE4LjQgOS45QTMuMiAzLjIgMCAwIDAgMTguNCA1LjZBMy4yIDMuMiAwIDAgMCAxNC4xIDUuNkwxMC42IDkuMkEyLjkgMi45IDAgMCAwIDEwLjYgMTMuNE0yMyAxOFYyMEgxNVYxOE0xNi4yIDEzLjdBNC44IDQuOCAwIDAgMCAxNC44IDkuMkExIDEgMCAwIDAgMTMuNCAxMC42QTIuOSAyLjkgMCAwIDEgMTMuNCAxNC44TDkuOSAxOC40QTMuMiAzLjIgMCAwIDEgNS42IDE4LjRBMy4yIDMuMiAwIDAgMSA1LjYgMTQuMUw2LjEgMTMuN0E3LjMgNy4zIDAgMCAxIDUuNyAxMS4yTDQuMiAxMi43QTUuMSA1LjEgMCAwIDAgNC4yIDE5LjhBNS4xIDUuMSAwIDAgMCAxMS4zIDE5LjhMMTMuMSAxOEE2IDYgMCAwIDEgMTYuMiAxMy43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtWYXJpYW50T2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxMy45LDE3LjE3TDExLjI5LDE5Ljc4QzkuMzQsMjEuNzMgNi4xNywyMS43MyA0LjIyLDE5Ljc4QzIuMjcsMTcuODMgMi4yNywxNC42NiA0LjIyLDEyLjcxTDUuNzEsMTEuMjJDNS43LDEyLjA0IDUuODMsMTIuODYgNi4xMSwxMy42NUw1LjY0LDE0LjEyQzQuNDYsMTUuMjkgNC40NiwxNy4xOSA1LjY0LDE4LjM2QzYuODEsMTkuNTQgOC43MSwxOS41NCA5Ljg4LDE4LjM2TDEyLjUsMTUuNzZMMTAuODgsMTQuMTVDMTAuODcsMTQuMzkgMTAuNzcsMTQuNjQgMTAuNTksMTQuODNDMTAuMiwxNS4yMiA5LjU2LDE1LjIyIDkuMTcsMTQuODNDOC4xMiwxMy43NyA3LjYzLDEyLjM3IDcuNzIsMTFMMiw1LjI3TTEyLjcxLDQuMjJDMTQuNjYsMi4yNyAxNy44MywyLjI3IDE5Ljc4LDQuMjJDMjEuNzMsNi4xNyAyMS43Myw5LjM0IDE5Ljc4LDExLjI5TDE4LjI5LDEyLjc4QzE4LjMsMTEuOTYgMTguMTcsMTEuMTQgMTcuODksMTAuMzZMMTguMzYsOS44OEMxOS41NCw4LjcxIDE5LjU0LDYuODEgMTguMzYsNS42NEMxNy4xOSw0LjQ2IDE1LjI5LDQuNDYgMTQuMTIsNS42NEwxMC43OSw4Ljk3TDkuMzgsNy41NUwxMi43MSw0LjIyTTEzLjQxLDkuMTdDMTMuOCw4Ljc4IDE0LjQ0LDguNzggMTQuODMsOS4xN0MxNi4yLDEwLjU0IDE2LjYxLDEyLjUgMTYuMDYsMTQuMjNMMTQuMjgsMTIuNDZDMTQuMjMsMTEuNzggMTMuOTQsMTEuMTEgMTMuNDEsMTAuNTlDMTMsMTAuMiAxMyw5LjU2IDEzLjQxLDkuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRQbHVzID0gXCJNMTAuNiAxMy40QTEgMSAwIDAgMSA5LjIgMTQuOEE0LjggNC44IDAgMCAxIDkuMiA3LjhMMTIuNyA0LjJBNS4xIDUuMSAwIDAgMSAxOS44IDQuMkE1LjEgNS4xIDAgMCAxIDE5LjggMTEuM0wxOC4zIDEyLjhBNi40IDYuNCAwIDAgMCAxNy45IDEwLjRMMTguNCA5LjlBMy4yIDMuMiAwIDAgMCAxOC40IDUuNkEzLjIgMy4yIDAgMCAwIDE0LjEgNS42TDEwLjYgOS4yQTIuOSAyLjkgMCAwIDAgMTAuNiAxMy40TTIzIDE4VjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwVjE4TTE2LjIgMTMuN0E0LjggNC44IDAgMCAwIDE0LjggOS4yQTEgMSAwIDAgMCAxMy40IDEwLjZBMi45IDIuOSAwIDAgMSAxMy40IDE0LjhMOS45IDE4LjRBMy4yIDMuMiAwIDAgMSA1LjYgMTguNEEzLjIgMy4yIDAgMCAxIDUuNiAxNC4xTDYuMSAxMy43QTcuMyA3LjMgMCAwIDEgNS43IDExLjJMNC4yIDEyLjdBNS4xIDUuMSAwIDAgMCA0LjIgMTkuOEE1LjEgNS4xIDAgMCAwIDExLjMgMTkuOEwxMy4xIDE4QTYgNiAwIDAgMSAxNi4yIDEzLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRSZW1vdmUgPSBcIk0xMC42IDEzLjRBMSAxIDAgMCAxIDkuMiAxNC44QTQuOCA0LjggMCAwIDEgOS4yIDcuOEwxMi43IDQuMkE1LjEgNS4xIDAgMCAxIDE5LjggNC4yQTUuMSA1LjEgMCAwIDEgMTkuOCAxMS4zTDE4LjMgMTIuOEE2LjQgNi40IDAgMCAwIDE3LjkgMTAuNEwxOC40IDkuOUEzLjIgMy4yIDAgMCAwIDE4LjQgNS42QTMuMiAzLjIgMCAwIDAgMTQuMSA1LjZMMTAuNiA5LjJBMi45IDIuOSAwIDAgMCAxMC42IDEzLjRNMTYuMiAxMy43QTQuOCA0LjggMCAwIDAgMTQuOCA5LjJBMSAxIDAgMCAwIDEzLjQgMTAuNkEyLjkgMi45IDAgMCAxIDEzLjQgMTQuOEw5LjkgMTguNEEzLjIgMy4yIDAgMCAxIDUuNiAxOC40QTMuMiAzLjIgMCAwIDEgNS42IDE0LjFMNi4xIDEzLjdBNy4zIDcuMyAwIDAgMSA1LjcgMTEuMkw0LjIgMTIuN0E1LjEgNS4xIDAgMCAwIDQuMiAxOS44QTUuMSA1LjEgMCAwIDAgMTEuMyAxOS44TDEzLjEgMThBNiA2IDAgMCAxIDE2LjIgMTMuN00yMS4xIDE1LjVMMTkgMTcuNkwxNi45IDE1LjVMMTUuNSAxNi45TDE3LjYgMTlMMTUuNSAyMS4xTDE2LjkgMjIuNUwxOSAyMC40TDIxLjEgMjIuNUwyMi41IDIxLjFMMjAuNCAxOUwyMi41IDE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua2VkaW4gPSBcIk0xOSAzQTIgMiAwIDAgMSAyMSA1VjE5QTIgMiAwIDAgMSAxOSAyMUg1QTIgMiAwIDAgMSAzIDE5VjVBMiAyIDAgMCAxIDUgM0gxOU0xOC41IDE4LjVWMTMuMkEzLjI2IDMuMjYgMCAwIDAgMTUuMjQgOS45NEMxNC4zOSA5Ljk0IDEzLjQgMTAuNDYgMTIuOTIgMTEuMjRWMTAuMTNIMTAuMTNWMTguNUgxMi45MlYxMy41N0MxMi45MiAxMi44IDEzLjU0IDEyLjE3IDE0LjMxIDEyLjE3QTEuNCAxLjQgMCAwIDEgMTUuNzEgMTMuNTdWMTguNUgxOC41TTYuODggOC41NkExLjY4IDEuNjggMCAwIDAgOC41NiA2Ljg4QzguNTYgNS45NSA3LjgxIDUuMTkgNi44OCA1LjE5QTEuNjkgMS42OSAwIDAgMCA1LjE5IDYuODhDNS4xOSA3LjgxIDUuOTUgOC41NiA2Ljg4IDguNTZNOC4yNyAxOC41VjEwLjEzSDUuNVYxOC41SDguMjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGludXggPSBcIk0xNC42Miw4LjM1QzE0LjIsOC42MyAxMi44Nyw5LjM5IDEyLjY3LDkuNTRDMTIuMjgsOS44NSAxMS45Miw5LjgzIDExLjUzLDkuNTNDMTEuMzMsOS4zNyAxMCw4LjYxIDkuNTgsOC4zNEM5LjEsOC4wMyA5LjEzLDcuNjQgOS42Niw3LjQyQzExLjMsNi43MyAxMi45NCw2Ljc4IDE0LjU3LDcuNDVDMTUuMDYsNy42NiAxNS4wOCw4LjA1IDE0LjYyLDguMzVNMjEuODQsMTUuNjNDMjAuOTEsMTMuNTQgMTkuNjQsMTEuNjQgMTgsOS45N0MxNy40Nyw5LjQyIDE3LjE0LDguOCAxNi45NCw4LjA5QzE2Ljg0LDcuNzYgMTYuNzcsNy40MiAxNi43LDcuMDhDMTYuNSw2LjIgMTYuNDEsNS4zIDE2LDQuNDdDMTUuMjcsMi44OSAxNCwyLjA3IDEyLjE2LDJDMTAuMzUsMi4wNSA5LDIuODEgOC4yMSw0LjRDOCw0LjgzIDcuODUsNS4yOCA3Ljc1LDUuNzRDNy41OCw2LjUgNy40Myw3LjI5IDcuMjUsOC4wNkM3LjEsOC43MSA2LjgsOS4yNyA2LjI5LDkuNzdDNC42OCwxMS4zNCAzLjM5LDEzLjE0IDIuNDEsMTUuMTJDMi4yNywxNS40MSAyLjEzLDE1LjcgMi4wNCwxNkMxLjg1LDE2LjY2IDIuMzMsMTcuMTIgMy4wMywxNi45NkMzLjQ3LDE2Ljg3IDMuOTEsMTYuNzggNC4zMywxNi42NUM0Ljc0LDE2LjUgNC45LDE2LjYgNSwxN0M1LjY1LDE5LjE1IDcuMDcsMjAuNjYgOS4yNCwyMS41QzEzLjM2LDIzLjA2IDE4LjE3LDIwLjg0IDE5LjIxLDE2LjkyQzE5LjI4LDE2LjY1IDE5LjM4LDE2LjU1IDE5LjY4LDE2LjY1QzIwLjE0LDE2Ljc5IDIwLjYxLDE2Ljg5IDIxLjA4LDE3QzIxLjU3LDE3LjA5IDIxLjkzLDE2Ljg0IDIyLDE2LjM2QzIyLjAzLDE2LjEgMjEuOTQsMTUuODcgMjEuODQsMTUuNjNcIjtcclxuZXhwb3J0IHZhciBtZGlMaW51eE1pbnQgPSBcIk0yLDMuMjNWNi44SDMuNUM0LjU5LDYuOCA0Ljc4LDcuNTMgNC43OCw4LjU1VjE0Ljg2QzQuNzgsMTguMTIgNy42NSwyMC43NyAxMS4xOCwyMC43N0gxOS45QzIxLDIwLjc3IDIyLDIwLjA3IDIyLDE5VjkuMkMyMiw1LjkzIDE5LjEzLDMuMjggMTUuNiwzLjI4SDExLjkzVjMuMjdMMiwzLjIzVjMuMjNNNi42Miw1LjQ2SDguMzdWMTQuNDVDOC4zNywxNS42NSA5LjE5LDE2LjU5IDEwLjE2LDE2LjU5TDE2LjEzLDE2LjYxQzE3LjM4LDE2LjYxIDE4LjM1LDE1Ljc1IDE4LjM1LDE0LjczTDE4LjM0LDkuOTZDMTguMzQsOS42NSAxOC4yNCw5LjQxIDE4LDkuMTlDMTcuNzksOC45NiAxNy41Niw4Ljg2IDE3LjI1LDguODZDMTYuOTQsOC44NiAxNi43MSw4Ljk2IDE2LjUsOS4xOUMxNi4yNyw5LjQxIDE2LjE2LDkuNjUgMTYuMTYsOS45NlYxNC4wNUgxNC4zMVY5Ljk2QzE0LjMxLDkuNjUgMTQuMjEsOS40MSAxNCw5LjE5QzEzLjc3LDguOTYgMTMuNTQsOC44NiAxMy4yMiw4Ljg2QzEyLjkyLDguODYgMTIuNjgsOC45NiAxMi40Niw5LjE5QzEyLjI0LDkuNDEgMTIuMTQsOS42NSAxMi4xNCw5Ljk2VjE0LjA1SDEwLjI5VjkuOTZDMTAuMjksOS4xNSAxMC41OCw4LjQ0IDExLjE1LDcuODZDMTEuNzIsNy4yOSAxMi40Myw3IDEzLjIyLDdDMTQsNyAxNC42OCw3LjI4IDE1LjI0LDcuODJDMTUuNzksNy4yOCAxNi40Nyw3IDE3LjI1LDdDMTguMDUsNyAxOC43Niw3LjI5IDE5LjMyLDcuODZDMTkuODksOC40NCAyMC4xOSw5LjE1IDIwLjE5LDkuOTZMMjAuMiwxNS4wNkMyMC4xMSwxNS45MSAxOS43NSwxNi42NyAxOS4xMywxNy4zMVYxNy4zMUMxOC40LDE4LjA0IDE3LjUsMTguNDIgMTYuNSwxOC40Mkg5LjgzQzksMTguMzQgOC4yOSwxNy45NSA3LjY5LDE3LjM2QzcsMTYuNjUgNi42MiwxNS43OSA2LjYyLDE0Ljc5VjUuNDZINi42MlpcIjtcclxuZXhwb3J0IHZhciBtZGlMaXBzdGljayA9IFwiTTkgMjNDOC40NSAyMyA4IDIyLjU1IDggMjJWMTNDOCAxMi40NSA4LjQ1IDEyIDkgMTJIMTVDMTUuNTUgMTIgMTYgMTIuNDUgMTYgMTNWMjJDMTYgMjIuNTUgMTUuNTUgMjMgMTUgMjNIOU0xMCAxMUM5LjQ1IDExIDkgMTAuNTUgOSAxMFY1LjI1QzkgNS4yNSAxMSAzIDExLjc1IDFDMTIuODMgMS42NyAxMy45MiAyLjMzIDE0LjQ2IDMuODNDMTUgNS4zMyAxNSA3LjY3IDE1IDEwQzE1IDEwLjU1IDE0LjU1IDExIDE0IDExSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpc3RTdGF0dXMgPSBcIk0xNi41IDExTDEzIDcuNUwxNC40IDYuMUwxNi41IDguMkwyMC43IDRMMjIuMSA1LjRMMTYuNSAxMU0xMSA3SDJWOUgxMVY3TTIxIDEzLjRMMTkuNiAxMkwxNyAxNC42TDE0LjQgMTJMMTMgMTMuNEwxNS42IDE2TDEzIDE4LjZMMTQuNCAyMEwxNyAxNy40TDE5LjYgMjBMMjEgMTguNkwxOC40IDE2TDIxIDEzLjRNMTEgMTVIMlYxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaXRlY29pbiA9IFwiTTEyLjU1LDE1LjkyTDEzLjE2LDEzLjc4TDE0LjgxLDEzLjE5TDE2LjI1LDcuNjNMMTQuNTYsOC4zMUwxNi4yNSwySDhMNS4zOCwxMS43N0wzLjcyLDEyLjM0TDIuMjIsMTcuOTFMNCwxNy4yN0wyLjY2LDIySDIwLjE2TDIxLjc4LDE1LjkySDEyLjU1TTE5LjM5LDIxSDRMNS40NiwxNS42NUwzLjcyLDE2LjNMNC41OCwxMy4xMUw2LjI0LDEyLjU0TDguNzQsM0gxNUwxMy4xMywxMEwxNC44Myw5LjNMMTQsMTIuNDJMMTIuMzMsMTNMMTEuMjIsMTYuOTFIMjAuNUwxOS4zOSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2FkaW5nID0gXCJNMTIsNFYyQTEwLDEwIDAgMCwwIDIsMTJINEE4LDggMCAwLDEgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NhdGlvbkVudGVyID0gXCJNMTQgMTJMMTAgOFYxMUgyVjEzSDEwVjE2TTIyIDEyQTEwIDEwIDAgMCAxIDIuNDYgMTVINC41OUE4IDggMCAxIDAgNC41OSA5SDIuNDZBMTAgMTAgMCAwIDEgMjIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9jYXRpb25FeGl0ID0gXCJNMjIgMTJMMTggOFYxMUgxMFYxM0gxOFYxNk0yMCAxOEExMCAxMCAwIDEgMSAyMCA2SDE3LjI3QTggOCAwIDEgMCAxNy4yNyAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrID0gXCJNMTIsMTdBMiwyIDAgMCwwIDE0LDE1QzE0LDEzLjg5IDEzLjEsMTMgMTIsMTNBMiwyIDAgMCwwIDEwLDE1QTIsMiAwIDAsMCAxMiwxN00xOCw4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFYxMEM0LDguODkgNC45LDggNiw4SDdWNkE1LDUgMCAwLDEgMTIsMUE1LDUgMCAwLDEgMTcsNlY4SDE4TTEyLDNBMywzIDAgMCwwIDksNlY4SDE1VjZBMywzIDAgMCwwIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja0FsZXJ0ID0gXCJNMTAgMTdDMTEuMSAxNyAxMiAxNi4xIDEyIDE1QzEyIDEzLjkgMTEuMSAxMyAxMCAxM0M4LjkgMTMgOCAxMy45IDggMTVTOC45IDE3IDEwIDE3TTE2IDhDMTcuMSA4IDE4IDguOSAxOCAxMFYyMEMxOCAyMS4xIDE3LjEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBDMiA4LjkgMi45IDggNCA4SDVWNkM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgM0M4LjMgMyA3IDQuMyA3IDZWOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM00yMiAxM0gyMFY3SDIyVjEzTTIyIDE3SDIwVjE1SDIyVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tBbGVydE91dGxpbmUgPSBcIk0xMCAxN0M4LjkgMTcgOCAxNi4xIDggMTVDOCAxMy45IDguOSAxMyAxMCAxM0MxMS4xIDEzIDEyIDEzLjkgMTIgMTVTMTEuMSAxNyAxMCAxN00xNiAyMFYxMEg0VjIwSDE2TTE2IDhDMTcuMSA4IDE4IDguOSAxOCAxMFYyMEMxOCAyMS4xIDE3LjEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBDMiA4LjkgMi45IDggNCA4SDVWNkM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgM0M4LjMgMyA3IDQuMyA3IDZWOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM00yMiA3SDIwVjEzSDIyVjdNMjIgMTVIMjBWMTdIMjJWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja0NoZWNrID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZWOEg2QzQuOSA4IDQgOC44OSA0IDEwVjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM005IDZDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg5VjZNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzQzEzLjEgMTMgMTQgMTMuODkgMTQgMTVDMTQgMTYuMTEgMTMuMTEgMTcgMTIgMTdNMjIuNSAxNy4yNUwxNy43NSAyMkwxNSAxOUwxNi4xNiAxNy44NEwxNy43NSAxOS40M0wyMS4zNCAxNS44NEwyMi41IDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tDaGVja091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMSA0IDIwVjEwQzQgOC44OSA0Ljg5IDggNiA4SDdWNkM3IDMuMjQgOS4yNCAxIDEyIDFTMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWMTBINlYyMEgxMy4wOU05IDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM1M5IDQuMzQgOSA2VjhNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrQ2xvY2sgPSBcIk04LjUsMkM2LDIgNCw0IDQsNi41VjdDMi44OSw3IDIsNy44OSAyLDlWMThDMiwxOS4xMSAyLjg5LDIwIDQsMjBIOC43MkMxMC4xOCwyMS4yOSAxMi4wNiwyMiAxNCwyMkE4LDggMCAwLDAgMjIsMTRBOCw4IDAgMCwwIDE0LDZDMTMuNjYsNiAxMy4zMiw2LjAzIDEzLDYuMDhDMTIuNzYsMy43NyAxMC44MiwyIDguNSwyTTguNSw0QTIuNSwyLjUgMCAwLDEgMTEsNi41VjdINlY2LjVBMi41LDIuNSAwIDAsMSA4LjUsNE0xNCw4QTYsNiAwIDAsMSAyMCwxNEE2LDYgMCAwLDEgMTQsMjBBNiw2IDAgMCwxIDgsMTRBNiw2IDAgMCwxIDE0LDhNMTMsMTBWMTVMMTYuNjQsMTcuMTlMMTcuNDIsMTUuOUwxNC41LDE0LjE1VjEwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tNaW51cyA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguODkgNCAxMFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNOSA2QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhIOVY2TTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxM0MxMy4xIDEzIDE0IDEzLjg5IDE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3TTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tNaW51c091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMSA0IDIwVjEwQzQgOC44OSA0Ljg5IDggNiA4SDdWNkM3IDMuMjQgOS4yNCAxIDEyIDFTMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWMTBINlYyMEgxMy4wOU05IDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM1M5IDQuMzQgOSA2VjhNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09mZiA9IFwiTTkgNS44Mkw3LjM2IDQuMTZDOC4wOSAyLjMxIDkuODkgMSAxMiAxQzE0Ljc2IDEgMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTYuOEwxMS4yIDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM0MxMC40MSAzIDkuMTEgNC4yNSA5IDUuODJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNDYgMjEuMzVDMTkuMSAyMS43NSAxOC41OCAyMiAxOCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjEwQzQgOC44OSA0LjkgOCA2IDhINi4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEzLjg1IDE1Ljc0TDExLjI2IDEzLjE1QzEwLjUgMTMuNDQgMTAgMTQuMTYgMTAgMTVDMTAgMTYuMTEgMTAuOSAxNyAxMiAxN0MxMi44NCAxNyAxMy41NiAxNi41IDEzLjg1IDE1Ljc0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPZmZPdXRsaW5lID0gXCJNOSA1LjgyTDcuMzYgNC4xNkM4LjA5IDIuMzEgOS44OSAxIDEyIDFDMTQuNzYgMSAxNyAzLjI0IDE3IDZWOEgxOEMxOS4xMSA4IDIwIDguOSAyMCAxMFYxNi44TDE4IDE0LjhWMTBIMTMuMkwxMS4yIDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM0MxMC40MSAzIDkuMTEgNC4yNSA5IDUuODJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNDYgMjEuMzVDMTkuMSAyMS43NSAxOC41OCAyMiAxOCAyMkg2QzQuODkgMjIgNCAyMS4xIDQgMjBWMTBDNCA4Ljg5IDQuODkgOCA2IDhINi4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE4IDE5Ljg5TDEzLjg1IDE1Ljc0QzEzLjU2IDE2LjUgMTIuODQgMTcgMTIgMTdDMTAuODkgMTcgMTAgMTYuMSAxMCAxNUMxMCAxNC4xNSAxMC41IDEzLjQ0IDExLjI2IDEzLjE1TDguMTEgMTBINlYyMEgxOFYxOS44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlbiA9IFwiTTE4LDhBMiwyIDAgMCwxIDIwLDEwVjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWMTBBMiwyIDAgMCwxIDYsOEgxNVY2QTMsMyAwIDAsMCAxMiwzQTMsMyAwIDAsMCA5LDZIN0E1LDUgMCAwLDEgMTIsMUE1LDUgMCAwLDEgMTcsNlY4SDE4TTEyLDE3QTIsMiAwIDAsMCAxNCwxNUEyLDIgMCAwLDAgMTIsMTNBMiwyIDAgMCwwIDEwLDE1QTIsMiAwIDAsMCAxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlbkFsZXJ0ID0gXCJNMTYgOEMxNy4xIDggMTggOC45IDE4IDEwVjIwQzE4IDIxLjEgMTcuMSAyMiAxNiAyMkg0QzIuOSAyMiAyIDIxLjEgMiAyMFYxMEMyIDguOSAyLjkgOCA0IDhIMTNWNkMxMyA0LjMgMTEuNyAzIDEwIDNTNyA0LjMgNyA2SDVDNSAzLjIgNy4yIDEgMTAgMVMxNSAzLjIgMTUgNlY4SDE2TTEwIDE3QzExLjEgMTcgMTIgMTYuMSAxMiAxNVMxMS4xIDEzIDEwIDEzIDggMTMuOSA4IDE1IDguOSAxNyAxMCAxN00yMiAxM0gyMFY3SDIyVjEzTTIyIDE3SDIwVjE1SDIyVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuQWxlcnRPdXRsaW5lID0gXCJNMTYgMjBWMTBINFYyMEgxNk0xNiA4QzE3LjEgOCAxOCA4LjkgMTggMTBWMjBDMTggMjEuMSAxNy4xIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjEwQzIgOC45IDIuOSA4IDQgOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM1M3IDQuMyA3IDZINUM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgMTdDOC45IDE3IDggMTYuMSA4IDE1UzguOSAxMyAxMCAxMyAxMiAxMy45IDEyIDE1IDExLjEgMTcgMTAgMTdNMjIgN0gyMFYxM0gyMlY3TTIyIDE1SDIwVjE3SDIyVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuQ2hlY2sgPSBcIk0xOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM00xMiAxN0MxMC45IDE3IDEwIDE2LjExIDEwIDE1UzEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNSAxMy4xMSAxNyAxMiAxN00yMi41IDE3LjI1TDE3Ljc1IDIyTDE1IDE5TDE2LjE2IDE3Ljg0TDE3Ljc1IDE5LjQzTDIxLjM0IDE1Ljg0TDIyLjUgMTcuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5DaGVja091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN1MxMCAxNi4xMSAxMCAxNSAxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTVNNiAyMFYxMEgxOFYxMy4wOUMxOC4zMyAxMy4wNCAxOC42NiAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDZNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3Blbk1pbnVzID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZIOUM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDZDNC44OSA4IDQgOC45IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTUgMTMuMTEgMTcgMTIgMTdNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5NaW51c091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN1MxMCAxNi4xMSAxMCAxNSAxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTVNNiAyMFYxMEgxOFYxMy4wOUMxOC4zMyAxMy4wNCAxOC42NiAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDZNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5PdXRsaW5lID0gXCJNMTgsMjBWMTBINlYyMEgxOE0xOCw4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjEwQTIsMiAwIDAsMSA2LDhIMTVWNkEzLDMgMCAwLDAgMTIsM0EzLDMgMCAwLDAgOSw2SDdBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZWOEgxOE0xMiwxN0EyLDIgMCAwLDEgMTAsMTVBMiwyIDAgMCwxIDEyLDEzQTIsMiAwIDAsMSAxNCwxNUEyLDIgMCAwLDEgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5QbHVzID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZIOUM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDZDNC44OSA4IDQgOC45IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTUgMTMuMTEgMTcgMTIgMTdNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5QbHVzT3V0bGluZSA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINk0yMCAxOFYxNUgxOFYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlblJlbW92ZSA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxMyAxNCAxMy45IDE0IDE1IDEzLjExIDE3IDEyIDE3TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuUmVtb3ZlT3V0bGluZSA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINk0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlblZhcmlhbnQgPSBcIk0xOCAxQzE1LjI0IDEgMTMgMy4yNCAxMyA2VjhINEMyLjkgOCAyIDguODkgMiAxMFYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE2QzE3LjExIDIyIDE4IDIxLjExIDE4IDIwVjEwQzE4IDguOSAxNy4xMSA4IDE2IDhIMTVWNkMxNSA0LjM0IDE2LjM0IDMgMTggM0MxOS42NiAzIDIxIDQuMzQgMjEgNlY4SDIzVjZDMjMgMy4yNCAyMC43NiAxIDE4IDFNMTAgMTNDMTEuMSAxMyAxMiAxMy44OSAxMiAxNUMxMiAxNi4xMSAxMS4xMSAxNyAxMCAxN0M4LjkgMTcgOCAxNi4xMSA4IDE1QzggMTMuOSA4LjkgMTMgMTAgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5WYXJpYW50T3V0bGluZSA9IFwiTTEwIDEzQzExLjEgMTMgMTIgMTMuODkgMTIgMTVDMTIgMTYuMTEgMTEuMTEgMTcgMTAgMTdTOCAxNi4xMSA4IDE1IDguOSAxMyAxMCAxM00xOCAxQzE1LjI0IDEgMTMgMy4yNCAxMyA2VjhINEMyLjkgOCAyIDguOSAyIDEwVjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxNkMxNy4xIDIyIDE4IDIxLjEgMTggMjBWMTBDMTggOC45IDE3LjEgOCAxNiA4SDE1VjZDMTUgNC4zNCAxNi4zNCAzIDE4IDNTMjEgNC4zNCAyMSA2VjhIMjNWNkMyMyAzLjI0IDIwLjc2IDEgMTggMU0xNiAxMFYyMEg0VjEwSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPdXRsaW5lID0gXCJNMTIsMTdDMTAuODksMTcgMTAsMTYuMSAxMCwxNUMxMCwxMy44OSAxMC44OSwxMyAxMiwxM0EyLDIgMCAwLDEgMTQsMTVBMiwyIDAgMCwxIDEyLDE3TTE4LDIwVjEwSDZWMjBIMThNMTgsOEEyLDIgMCAwLDEgMjAsMTBWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFYxMEM0LDguODkgNC44OSw4IDYsOEg3VjZBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZWOEgxOE0xMiwzQTMsMyAwIDAsMCA5LDZWOEgxNVY2QTMsMyAwIDAsMCAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tQYXR0ZXJuID0gXCJNNywzQTQsNCAwIDAsMSAxMSw3QzExLDguODYgOS43MywxMC40MyA4LDEwLjg3VjEzLjEzQzguMzcsMTMuMjIgOC43MiwxMy4zNyA5LjA0LDEzLjU2TDEzLjU2LDkuMDRDMTMuMiw4LjQ0IDEzLDcuNzUgMTMsN0E0LDQgMCAwLDEgMTcsM0E0LDQgMCAwLDEgMjEsN0E0LDQgMCAwLDEgMTcsMTFDMTYuMjYsMTEgMTUuNTcsMTAuOCAxNSwxMC40NUwxMC40NSwxNUMxMC44LDE1LjU3IDExLDE2LjI2IDExLDE3QTQsNCAwIDAsMSA3LDIxQTQsNCAwIDAsMSAzLDE3QzMsMTUuMTQgNC4yNywxMy41NyA2LDEzLjEzVjEwLjg3QzQuMjcsMTAuNDMgMyw4Ljg2IDMsN0E0LDQgMCAwLDEgNywzTTE3LDEzQTQsNCAwIDAsMSAyMSwxN0E0LDQgMCAwLDEgMTcsMjFBNCw0IDAgMCwxIDEzLDE3QTQsNCAwIDAsMSAxNywxM00xNywxNUEyLDIgMCAwLDAgMTUsMTdBMiwyIDAgMCwwIDE3LDE5QTIsMiAwIDAsMCAxOSwxN0EyLDIgMCAwLDAgMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1BsdXMgPSBcIk0xOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNlY4SDZDNC45IDggNCA4Ljg5IDQgMTBWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDlWNk0xMiAxN0MxMC45IDE3IDEwIDE2LjExIDEwIDE1UzEwLjkgMTMgMTIgMTNDMTMuMSAxMyAxNCAxMy44OSAxNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN00yMyAxOFYyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyMFYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrUGx1c091dGxpbmUgPSBcIk02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0Ljg5IDggNCA4Ljg5IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy40NiAyMS4zOSAxMy4yMiAyMC43MiAxMy4wOSAyMEg2TTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDlWNk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1F1ZXN0aW9uID0gXCJNMTIsMUE1LDUgMCAwLDAgNyw2VjhINkEyLDIgMCAwLDAgNCwxMFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWMTBBMiwyIDAgMCwwIDE4LDhIMTdWNkE1LDUgMCAwLDAgMTIsMU0xMiwyLjlDMTMuNzEsMi45IDE1LjEsNC4yOSAxNS4xLDZWOEg4LjlWNkM4LjksNC4yOSAxMC4yOSwyLjkgMTIsMi45TTEyLjE5LDEwLjVDMTMuMTMsMTAuNSAxMy44OCwxMC43MSAxNC40MiwxMS4xMkMxNC45NiwxMS41NCAxNS4yMywxMi4xIDE1LjIzLDEyLjhDMTUuMjMsMTMuMjQgMTUuMDgsMTMuNjMgMTQuNzksMTRDMTQuNSwxNC4zNiAxNC4xMiwxNC42NCAxMy42NiwxNC44NUMxMy40LDE1IDEzLjIzLDE1LjE1IDEzLjE0LDE1LjMyQzEzLjA1LDE1LjUgMTMsMTUuNzIgMTMsMTZIMTFDMTEsMTUuNSAxMS4xLDE1LjE2IDExLjI5LDE0LjkyQzExLjUsMTQuNjggMTEuODQsMTQuNCAxMi4zNiwxNC4wOEMxMi42MiwxMy45NCAxMi44MywxMy43NiAxMywxMy41NEMxMy4xNCwxMy4zMyAxMy4yMiwxMy4wOCAxMy4yMiwxMi44QzEzLjIyLDEyLjUgMTMuMTMsMTIuMjggMTIuOTUsMTIuMTFDMTIuNzcsMTEuOTMgMTIuNSwxMS44NSAxMi4xOSwxMS44NUMxMS45MiwxMS44NSAxMS43LDExLjkyIDExLjUsMTIuMDZDMTEuMzQsMTIuMiAxMS4yNCwxMi40MSAxMS4yNCwxMi42OUg5LjI3QzkuMjIsMTIgOS41LDExLjQgMTAuMDUsMTEuMDRDMTAuNTksMTAuNjggMTEuMywxMC41IDEyLjE5LDEwLjVNMTEsMTdIMTNWMTlIMTFWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1JlbW92ZSA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguODkgNCAxMFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNOSA2QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhIOVY2TTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxM0MxMy4xIDEzIDE0IDEzLjg5IDE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tSZW1vdmVPdXRsaW5lID0gXCJNMTQgMTVDMTQgMTYuMTEgMTMuMTEgMTcgMTIgMTdDMTAuODkgMTcgMTAgMTYuMSAxMCAxNUMxMCAxMy44OSAxMC44OSAxMyAxMiAxM0MxMy4xMSAxMyAxNCAxMy45IDE0IDE1TTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjEgNCAyMFYxMEM0IDguODkgNC44OSA4IDYgOEg3VjZDNyAzLjI0IDkuMjQgMSAxMiAxUzE3IDMuMjQgMTcgNlY4SDE4QzE5LjExIDggMjAgOC45IDIwIDEwVjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjEwSDZWMjBIMTMuMDlNOSA4SDE1VjZDMTUgNC4zNCAxMy42NiAzIDEyIDNTOSA0LjM0IDkgNlY4TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tSZXNldCA9IFwiTTEyLjYzLDJDMTguMTYsMiAyMi42NCw2LjUgMjIuNjQsMTJDMjIuNjQsMTcuNSAxOC4xNiwyMiAxMi42MywyMkM5LjEyLDIyIDYuMDUsMjAuMTggNC4yNiwxNy40M0w1Ljg0LDE2LjE4QzcuMjUsMTguNDcgOS43NiwyMCAxMi42NCwyMEE4LDggMCAwLDAgMjAuNjQsMTJBOCw4IDAgMCwwIDEyLjY0LDRDOC41Niw0IDUuMiw3LjA2IDQuNzEsMTFINy40N0wzLjczLDE0LjczTDAsMTFIMi42OUMzLjE5LDUuOTUgNy40NSwyIDEyLjYzLDJNMTUuNTksMTAuMjRDMTYuMDksMTAuMjUgMTYuNSwxMC42NSAxNi41LDExLjE2VjE1Ljc3QzE2LjUsMTYuMjcgMTYuMDksMTYuNjkgMTUuNTgsMTYuNjlIMTAuMDVDOS41NCwxNi42OSA5LjEzLDE2LjI3IDkuMTMsMTUuNzdWMTEuMTZDOS4xMywxMC42NSA5LjU0LDEwLjI1IDEwLjA0LDEwLjI0VjkuMjNDMTAuMDQsNy43IDExLjI5LDYuNDYgMTIuODEsNi40NkMxNC4zNCw2LjQ2IDE1LjU5LDcuNyAxNS41OSw5LjIzVjEwLjI0TTEyLjgxLDcuODZDMTIuMDYsNy44NiAxMS40NCw4LjQ3IDExLjQ0LDkuMjNWMTAuMjRIMTQuMTlWOS4yM0MxNC4xOSw4LjQ3IDEzLjU3LDcuODYgMTIuODEsNy44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrU21hcnQgPSBcIk0xMiwyQTYsNiAwIDAsMCA2LDhWMTZBNiw2IDAgMCwwIDEyLDIyQTYsNiAwIDAsMCAxOCwxNlY4QTYsNiAwIDAsMCAxMiwyTTgsNkgxMFY4SDhWNk0xMSw2SDEzVjhIMTFWNk0xNCw2SDE2VjhIMTRWNk04LDlIMTBWMTFIOFY5TTExLDlIMTNWMTFIMTFWOU0xNCw5SDE2VjExSDE0VjlNOCwxMkgxMFYxNEg4VjEyTTExLDEySDEzVjE0SDExVjEyTTE0LDEySDE2VjE0SDE0VjEyTTEyLDE2QTIsMiAwIDAsMSAxNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4QTIsMiAwIDAsMSAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrZXIgPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsNFYyMEgxNlY0SDhNMTAsMTNIMTJWMTdIMTBWMTNNMTAsNkgxNFY3LjVIMTBWNk0xMCw5SDE0VjEwLjVIMTBWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrZXJNdWx0aXBsZSA9IFwiTTMsMkgyMUEyLDIgMCAwLDEgMjMsNFYyMEEyLDIgMCAwLDEgMjEsMjJIM0EyLDIgMCAwLDEgMSwyMFY0QTIsMiAwIDAsMSAzLDJNMTMsNFYyMEgyMVY0SDEzTTMsNFYyMEgxMVY0SDNNNSwxM0g3VjE3SDVWMTNNNSw2SDlWNy41SDVWNk01LDlIOVYxMC41SDVWOU0xNSwxM0gxN1YxN0gxNVYxM00xNSw2SDE5VjcuNUgxNVY2TTE1LDlIMTlWMTAuNUgxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvZ2luID0gXCJNMTAsMTdWMTRIM1YxMEgxMFY3TDE1LDEyTDEwLDE3TTEwLDJIMTlBMiwyIDAgMCwxIDIxLDRWMjBBMiwyIDAgMCwxIDE5LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE4SDEwVjIwSDE5VjRIMTBWNkg4VjRBMiwyIDAgMCwxIDEwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9naW5WYXJpYW50ID0gXCJNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjlINVY1SDE5VjE5SDVWMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzTTEwLjA4LDE1LjU4TDExLjUsMTdMMTYuNSwxMkwxMS41LDdMMTAuMDgsOC40MUwxMi42NywxMUgzVjEzSDEyLjY3TDEwLjA4LDE1LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvZ291dCA9IFwiTTE2LDE3VjE0SDlWMTBIMTZWN0wyMSwxMkwxNiwxN00xNCwyQTIsMiAwIDAsMSAxNiw0VjZIMTRWNEg1VjIwSDE0VjE4SDE2VjIwQTIsMiAwIDAsMSAxNCwyMkg1QTIsMiAwIDAsMSAzLDIwVjRBMiwyIDAgMCwxIDUsMkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2dvdXRWYXJpYW50ID0gXCJNMTQuMDgsMTUuNTlMMTYuNjcsMTNIN1YxMUgxNi42N0wxNC4wOCw4LjQxTDE1LjUsN0wyMC41LDEyTDE1LjUsMTdMMTQuMDgsMTUuNTlNMTksM0EyLDIgMCAwLDEgMjEsNVY5LjY3TDE5LDcuNjdWNUg1VjE5SDE5VjE2LjMzTDIxLDE0LjMzVjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb25naXR1ZGUgPSBcIk0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwLjAzIDEwLjAzIDAgMCAwIDEyIDJNOS40IDE5LjZBOC4wNSA4LjA1IDAgMCAxIDkuNCA0LjRBMTYuNDUgMTYuNDUgMCAwIDAgNy41IDEyQTE2LjQ1IDE2LjQ1IDAgMCAwIDkuNCAxOS42TTEyIDIwQTEzLjgxIDEzLjgxIDAgMCAxIDkuNSAxMkExMy44MSAxMy44MSAwIDAgMSAxMiA0QTEzLjgxIDEzLjgxIDAgMCAxIDE0LjUgMTJBMTMuODEgMTMuODEgMCAwIDEgMTIgMjBNMTQuNiAxOS42QTE2LjE1IDE2LjE1IDAgMCAwIDE0LjYgNC40QTguMDMgOC4wMyAwIDAgMSAyMCAxMkE3LjkgNy45IDAgMCAxIDE0LjYgMTkuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb29rcyA9IFwiTTEyLDZBMTEsMTEgMCAwLDAgMSwxN0gzQzMsMTIuMDQgNy4wNCw4IDEyLDhDMTYuOTYsOCAyMSwxMi4wNCAyMSwxN0gyM0ExMSwxMSAwIDAsMCAxMiw2TTEyLDEwQzguMTQsMTAgNSwxMy4xNCA1LDE3SDdBNSw1IDAgMCwxIDEyLDEyQTUsNSAwIDAsMSAxNywxN0gxOUMxOSwxMy4xNCAxNS44NiwxMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb3Rpb24gPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTYgMTJWMjJINFYxMkM0IDkuMDMgNi4xNiA2LjU3IDkgNi4wOVY0SDdWMkgxM0MxNC4xMyAyIDE1LjE1IDIuMzkgMTYgM0wxNC41NiA0LjQ0QzE0LjEgNC4xNyAxMy41NyA0IDEzIDRIMTFWNi4wOUMxMy44NCA2LjU3IDE2IDkuMDMgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG90aW9uT3V0bGluZSA9IFwiTTE1LjUgNi41QzE1LjUgNS42NiAxNyA0IDE3IDRTMTguNSA1LjY2IDE4LjUgNi41QzE4LjUgNy4zMyAxNy44MyA4IDE3IDhTMTUuNSA3LjMzIDE1LjUgNi41TTE5LjUgMTVDMjAuODggMTUgMjIgMTMuODggMjIgMTIuNUMyMiAxMC44MyAxOS41IDggMTkuNSA4UzE3IDEwLjgzIDE3IDEyLjVDMTcgMTMuODggMTguMTIgMTUgMTkuNSAxNU0xNiAxMlYyMEMxNiAyMS4xIDE1LjEgMjIgMTQgMjJINkM0LjkgMjIgNCAyMS4xIDQgMjBWMTJDNCA5LjAzIDYuMTYgNi41NyA5IDYuMDlWNEg3VjJIMTNDMTQuMTMgMiAxNS4xNSAyLjM5IDE2IDNMMTQuNTYgNC40NEMxNC4xIDQuMTcgMTMuNTcgNCAxMyA0SDExVjYuMDlDMTMuODQgNi41NyAxNiA5LjAzIDE2IDEyTTE0IDEyQzE0IDkuNzkgMTIuMjEgOCAxMCA4UzYgOS43OSA2IDEyVjIwSDE0VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvdGlvblBsdXMgPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTMgMTRIMTFWMTJIOVYxNEg3VjE2SDlWMThIMTFWMTZIMTNWMTRNMTYgMTJWMjJINFYxMkM0IDkuMDMgNi4xNiA2LjU3IDkgNi4wOVY0SDdWMkgxM0MxNC4xMyAyIDE1LjE1IDIuMzkgMTYgM0wxNC41NiA0LjQ0QzE0LjEgNC4xNyAxMy41NyA0IDEzIDRIMTFWNi4wOUMxMy44NCA2LjU3IDE2IDkuMDMgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG90aW9uUGx1c091dGxpbmUgPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTMgMTRIMTFWMTJIOVYxNEg3VjE2SDlWMThIMTFWMTZIMTNWMTRNMTYgMTJWMjBDMTYgMjEuMSAxNS4xIDIyIDE0IDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjEyQzQgOS4wMyA2LjE2IDYuNTcgOSA2LjA5VjRIN1YySDEzQzE0LjEzIDIgMTUuMTUgMi4zOSAxNiAzTDE0LjU2IDQuNDRDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNEgxMVY2LjA5QzEzLjg0IDYuNTcgMTYgOS4wMyAxNiAxMk0xNCAxMkMxNCA5Ljc5IDEyLjIxIDggMTAgOFM2IDkuNzkgNiAxMlYyMEgxNFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb3VwZSA9IFwiTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkExMCwxMCAwIDAsMCAxMiwyTTEzLDdIMTFWMTFIN1YxM0gxMVYxN0gxM1YxM0gxN1YxMUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUx1bXggPSBcIk0xMi4zNSwxLjc1TDIwLjEzLDkuNTNMMTMuNzcsMTUuODlMMTIuMzUsMTQuNDdMMTcuMyw5LjUzTDEwLjk0LDMuMTZMMTIuMzUsMS43NU0xNS44OSw5LjUzTDE0LjQ3LDEwLjk0TDEwLjIzLDYuN0w1LjI4LDExLjY1TDMuODcsMTAuMjNMMTAuMjMsMy44N0wxNS44OSw5LjUzTTEwLjIzLDguMTFMMTEuNjUsOS41M0w2LjcsMTQuNDdMMTMuMDYsMjAuODRMMTEuNjUsMjIuMjVMMy44NywxNC40N0wxMC4yMyw4LjExTTguMTEsMTQuNDdMOS41MywxMy4wNkwxMy43NywxNy4zTDE4LjcyLDEyLjM1TDIwLjEzLDEzLjc3TDEzLjc3LDIwLjEzTDguMTEsMTQuNDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTHVuZ3MgPSBcIk0xNS40NyAzLjExQzE1IDIuODUgMTQuMzcgMy4wNSAxNC4xMSAzLjU0QzE0LjA0IDMuNjggMTQgMy44NCAxNCA0VjYuNTlMMTMuMjkgNS44OEMxMy4xIDUuNjkgMTMgNS40NCAxMyA1LjE4VjFIMTFWNS4xN0MxMSA1LjQ0IDEwLjkgNS42OSAxMC43MSA1Ljg4TDEwIDYuNTlWNEMxMCAzLjQ0IDkuNTQgMyA5IDNDOC44MyAzIDguNjcgMy4wNCA4LjUzIDMuMTFDNC43MiA1IDIgOS45NyAyIDE1Ljc3QzIgMTcuNjcgMi4zMyAxOS41NSAzIDIxLjMyQzMuMTkgMjEuODUgMy43NiAyMi4xMyA0LjI5IDIxLjk0QzQuMzQgMjEuOTIgNC4zOSAyMS45IDQuNDQgMjEuODdMOS41IDE5LjA3QzkuODEgMTguOSAxMCAxOC41NiAxMCAxOC4xOVY5LjQxTDExLjMgOC4xMkMxMS42OSA3LjczIDEyLjMyIDcuNzMgMTIuNzEgOC4xMkwxNCA5LjQyVjE4LjJDMTQgMTguNTYgMTQuMjEgMTguOSAxNC41IDE5LjA4TDE5LjU4IDIxLjg4QzIwLjA3IDIyLjE0IDIwLjY4IDIxLjk2IDIwLjk0IDIxLjQ2QzIwLjk2IDIxLjQyIDIxIDIxLjM3IDIxIDIxLjMyQzIxLjY3IDE5LjU1IDIyIDE3LjY3IDIyIDE1Ljc3QzIyIDkuOTcgMTkuMjkgNSAxNS40NyAzLjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25ldCA9IFwiTTMsN1YxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDIxLDEzVjdIMTdWMTNBNSw1IDAgMCwxIDEyLDE4QTUsNSAwIDAsMSA3LDEzVjdNMTcsNUgyMVYySDE3TTMsNUg3VjJIM1wiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25ldE9uID0gXCJNMyw3VjEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNWN0gxN1YxM0E1LDUgMCAwLDEgMTIsMThBNSw1IDAgMCwxIDcsMTNWN00xNyw1SDIxVjJIMTdNMyw1SDdWMkgzTTEzLDEuNUw5LDlIMTFWMTQuNUwxNSw3SDEzVjEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5ID0gXCJNOS41LDNBNi41LDYuNSAwIDAsMSAxNiw5LjVDMTYsMTEuMTEgMTUuNDEsMTIuNTkgMTQuNDQsMTMuNzNMMTQuNzEsMTRIMTUuNUwyMC41LDE5TDE5LDIwLjVMMTQsMTUuNVYxNC43MUwxMy43MywxNC40NEMxMi41OSwxNS40MSAxMS4xMSwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzTTkuNSw1QzcsNSA1LDcgNSw5LjVDNSwxMiA3LDE0IDkuNSwxNEMxMiwxNCAxNCwxMiAxNCw5LjVDMTQsNyAxMiw1IDkuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlDbG9zZSA9IFwiTTksMkE3LDcgMCAwLDEgMTYsOUMxNiwxMC41IDE1LjUsMTIgMTQuNjEsMTMuMTlMMTUuNDEsMTRIMTZMMjIsMjBMMjAsMjJMMTQsMTZWMTUuNDFMMTMuMTksMTQuNjFDMTIsMTUuNSAxMC41LDE2IDksMTZBNyw3IDAgMCwxIDIsOUE3LDcgMCAwLDEgOSwyTTExLjEyLDUuNDZMOSw3LjU5TDYuODgsNS40Nkw1LjQ2LDYuODhMNy41OSw5TDUuNDYsMTEuMTJMNi44OCwxMi41NEw5LDEwLjQxTDExLjEyLDEyLjU0TDEyLjU0LDExLjEyTDEwLjQxLDlMMTIuNTQsNi44OEwxMS4xMiw1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlNaW51cyA9IFwiTTksMkE3LDcgMCAwLDEgMTYsOUMxNiwxMC41NyAxNS41LDEyIDE0LjYxLDEzLjE5TDE1LjQxLDE0SDE2TDIyLDIwTDIwLDIyTDE0LDE2VjE1LjQxTDEzLjE5LDE0LjYxQzEyLDE1LjUgMTAuNTcsMTYgOSwxNkE3LDcgMCAwLDEgMiw5QTcsNyAwIDAsMSA5LDJNNSw4VjEwSDEzVjhINVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5TWludXNDdXJzb3IgPSBcIk0xMSw0QTcsNyAwIDAsMSAxOCwxMUMxOCwxMi41IDE3LjUsMTQgMTYuNjEsMTUuMTlMMTcuNDIsMTZIMThMMjMsMjFMMjEsMjNMMTYsMThWMTcuNDFMMTUuMTksMTYuNkMxMi4xLDE4LjkyIDcuNzEsMTguMjkgNS4zOSwxNS4yQzMuMDcsMTIuMTEgMy43LDcuNzIgNi43OSw1LjRDOCw0LjUgOS41LDQgMTEsNE03LDEwVjEySDE1VjEwSDdNMSwxVjhMOCwxSDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeU1pbnVzT3V0bGluZSA9IFwiTTE1LjUsMTRIMTQuNzFMMTQuNDMsMTMuNzNDMTUuNDEsMTIuNTkgMTYsMTEuMTEgMTYsOS41QTYuNSw2LjUgMCAwLDAgOS41LDNBNi41LDYuNSAwIDAsMCAzLDkuNUE2LjUsNi41IDAgMCwwIDkuNSwxNkMxMS4xMSwxNiAxMi41OSwxNS40MSAxMy43MywxNC40M0wxNCwxNC43MVYxNS41TDE5LDIwLjVMMjAuNSwxOUwxNS41LDE0TTkuNSwxNEM3LDE0IDUsMTIgNSw5LjVDNSw3IDcsNSA5LjUsNUMxMiw1IDE0LDcgMTQsOS41QzE0LDEyIDEyLDE0IDkuNSwxNE03LDlIMTJWMTBIN1Y5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlQbHVzID0gXCJNOSwyQTcsNyAwIDAsMSAxNiw5QzE2LDEwLjU3IDE1LjUsMTIgMTQuNjEsMTMuMTlMMTUuNDEsMTRIMTZMMjIsMjBMMjAsMjJMMTQsMTZWMTUuNDFMMTMuMTksMTQuNjFDMTIsMTUuNSAxMC41NywxNiA5LDE2QTcsNyAwIDAsMSAyLDlBNyw3IDAgMCwxIDksMk04LDVWOEg1VjEwSDhWMTNIMTBWMTBIMTNWOEgxMFY1SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVBsdXNDdXJzb3IgPSBcIk0xMSw0QTcsNyAwIDAsMSAxOCwxMUMxOCwxMi41IDE3LjUsMTQgMTYuNjEsMTUuMTlMMTcuNDIsMTZIMThMMjMsMjFMMjEsMjNMMTYsMThWMTcuNDFMMTUuMTksMTYuNkMxMi4xLDE4LjkyIDcuNzEsMTguMjkgNS4zOSwxNS4yQzMuMDcsMTIuMTEgMy43LDcuNzIgNi43OSw1LjRDOCw0LjUgOS41LDQgMTEsNE0xMCw3VjEwSDdWMTJIMTBWMTVIMTJWMTJIMTVWMTBIMTJWN0gxME0xLDFWOEw4LDFIMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5UGx1c091dGxpbmUgPSBcIk0xNS41LDE0TDIwLjUsMTlMMTksMjAuNUwxNCwxNS41VjE0LjcxTDEzLjczLDE0LjQzQzEyLjU5LDE1LjQxIDExLjExLDE2IDkuNSwxNkE2LjUsNi41IDAgMCwxIDMsOS41QTYuNSw2LjUgMCAwLDEgOS41LDNBNi41LDYuNSAwIDAsMSAxNiw5LjVDMTYsMTEuMTEgMTUuNDEsMTIuNTkgMTQuNDMsMTMuNzNMMTQuNzEsMTRIMTUuNU05LjUsMTRDMTIsMTQgMTQsMTIgMTQsOS41QzE0LDcgMTIsNSA5LjUsNUM3LDUgNSw3IDUsOS41QzUsMTIgNywxNCA5LjUsMTRNMTIsMTBIMTBWMTJIOVYxMEg3VjlIOVY3SDEwVjlIMTJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVJlbW92ZUN1cnNvciA9IFwiTTEgMVY4TDggMUgxTTE4IDE2SDE3LjQyTDE2LjYxIDE1LjE5QzE3LjUgMTQgMTggMTIuNSAxOCAxMUMxOCA3LjEzIDE0Ljg3IDQgMTEgNEM5LjUgNCA4IDQuNSA2Ljc5IDUuNEMzLjcgNy43MiAzLjA3IDEyLjExIDUuMzkgMTUuMkM3LjcxIDE4LjI5IDEyLjEgMTguOTIgMTUuMTkgMTYuNkwxNiAxNy40MVYxOEwyMSAyM0wyMyAyMUwxOCAxNk0xNC42IDEzLjE2TDEzLjE4IDE0LjU4TDExLjA2IDEyLjQ1TDguOTQgMTQuNThMNy41IDEzLjE2TDkuNjUgMTEuMDRMNy41IDguOTJMOC45NCA3LjVMMTEuMDYgOS42M0wxMy4xOCA3LjVMMTQuNiA4LjkyTDEyLjQ3IDExLjA0TDE0LjYgMTMuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVJlbW92ZU91dGxpbmUgPSBcIk0xNS41IDE0SDE0LjcxTDE0LjQzIDEzLjczQzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNUMxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2QzExLjExIDE2IDEyLjU5IDE1LjQxIDEzLjczIDE0LjQzTDE0IDE0LjcxVjE1LjVMMTkgMjAuNUwyMC41IDE5TDE1LjUgMTRNOS41IDE0QzcgMTQgNSAxMiA1IDkuNVM3IDUgOS41IDUgMTQgNyAxNCA5LjUgMTIgMTQgOS41IDE0TTEwLjkxIDExLjYyTDkuNSAxMC4yMUw4LjA5IDExLjYyTDcuMzggMTAuOTFMOC43OSA5LjVMNy4zOCA4LjA5TDguMDkgNy4zOEw5LjUgOC43OUwxMC45MSA3LjM4TDExLjYyIDguMDlMMTAuMjEgOS41TDExLjYyIDEwLjkxTDEwLjkxIDExLjYyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlTY2FuID0gXCJNMTcgMjJWMjBIMjBWMTdIMjJWMjAuNUMyMiAyMC44OSAyMS44NCAyMS4yNCAyMS41NCAyMS41NEMyMS4yNCAyMS44NCAyMC44OSAyMiAyMC41IDIySDE3TTcgMjJIMy41QzMuMTEgMjIgMi43NiAyMS44NCAyLjQ2IDIxLjU0QzIuMTYgMjEuMjQgMiAyMC44OSAyIDIwLjVWMTdINFYyMEg3VjIyTTE3IDJIMjAuNUMyMC44OSAyIDIxLjI0IDIuMTYgMjEuNTQgMi40NkMyMS44NCAyLjc2IDIyIDMuMTEgMjIgMy41VjdIMjBWNEgxN1YyTTcgMlY0SDRWN0gyVjMuNUMyIDMuMTEgMi4xNiAyLjc2IDIuNDYgMi40NkMyLjc2IDIuMTYgMy4xMSAyIDMuNSAySDdNMTAuNSA2QzEzIDYgMTUgOCAxNSAxMC41QzE1IDExLjM4IDE0Ljc1IDEyLjIgMTQuMzEgMTIuOUwxNy41NyAxNi4xNkwxNi4xNiAxNy41N0wxMi45IDE0LjMxQzEyLjIgMTQuNzUgMTEuMzggMTUgMTAuNSAxNUM4IDE1IDYgMTMgNiAxMC41QzYgOCA4IDYgMTAuNSA2TTEwLjUgOEM5LjEyIDggOCA5LjEyIDggMTAuNUM4IDExLjg4IDkuMTIgMTMgMTAuNSAxM0MxMS44OCAxMyAxMyAxMS44OCAxMyAxMC41QzEzIDkuMTIgMTEuODggOCAxMC41IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbCA9IFwiTTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0TTE3LDE3SDdWMTVIMTdNMTcsMTNIN1YxMUgxN00yMCw5SDE3VjZIMjBcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94ID0gXCJNMTcsNEg3QTUsNSAwIDAsMCAyLDlWMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjlBNSw1IDAgMCwwIDE3LDRNMTAsMThINFY5QTMsMyAwIDAsMSA3LDZBMywzIDAgMCwxIDEwLDlWMThNMTksMTVIMTdWMTNIMTNWMTFIMTlWMTVNOSwxMUg1VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94T3BlbiA9IFwiTTgsNEE1LDUgMCAwLDAgMyw5VjE4SDFWMjBIMjFBMiwyIDAgMCwwIDIzLDE4VjlBNSw1IDAgMCwwIDE4LDRIOE04LDZBMywzIDAgMCwxIDExLDlWMThINVY5QTMsMyAwIDAsMSA4LDZNMTQsMTFIMjBWMTVIMThWMTNIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveE9wZW5PdXRsaW5lID0gXCJNMTQsMTFIMjBWMTVIMThWMTNIMTRWMTFNMTgsNEg4QTUsNSAwIDAsMCAzLDlWMThIMVYyMEgyMUEyLDIgMCAwLDAgMjMsMThWOUE1LDUgMCAwLDAgMTgsNE0xMSwxOEg1VjlBMywzIDAgMCwxIDgsNkEzLDMgMCAwLDEgMTEsOVYxOE0yMSwxOEgxM1Y5QzEzLDcuOTIgMTIuNjUsNi44NiAxMiw2SDE4QTMsMyAwIDAsMSAyMSw5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1haWxib3hPcGVuVXAgPSBcIk04LDRBNSw1IDAgMCwwIDMsOVYxOEgxVjIwSDIxQTIsMiAwIDAsMCAyMywxOFY5QTUsNSAwIDAsMCAxOCw0SDhNOCw2QTMsMyAwIDAsMSAxMSw5VjE4SDVWOUEzLDMgMCAwLDEgOCw2TTEzLDEzVjdIMTdWOUgxNVYxM0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94T3BlblVwT3V0bGluZSA9IFwiTTE0LDEyLjg1VjYuODVIMThWOC44NUgxNlYxMi44NUgxNE0xOCwzLjg1SDhBNSw1IDAgMCwwIDMsOC44NVYxNy44NUgxVjE5Ljg1SDIxQTIsMiAwIDAsMCAyMywxNy44NVY4Ljg1QTUsNSAwIDAsMCAxOCwzLjg1TTExLDE3Ljg1SDVWOC44NUEzLDMgMCAwLDEgOCw1Ljg1QTMsMyAwIDAsMSAxMSw4Ljg1VjE3Ljg1TTIxLDE3Ljg1SDEzVjguODVDMTMsNy43NiAxMi42NSw2LjcxIDEyLDUuODVIMThBMywzIDAgMCwxIDIxLDguODVWMTcuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveE91dGxpbmUgPSBcIk0xNyw0SDdBNSw1IDAgMCwwIDIsOVYyMEgyMEEyLDIgMCAwLDAgMjIsMThWOUE1LDUgMCAwLDAgMTcsNE0xMCwxOEg0VjlBMywzIDAgMCwxIDcsNkEzLDMgMCAwLDEgMTAsOVYxOE0yMCwxOEgxMlY5QzEyLDcuOTIgMTEuNjUsNi44NiAxMSw2SDE3QTMsMyAwIDAsMSAyMCw5VjE4TTEzLDExVjEzSDE3VjE1SDE5VjExSDEzTTksMTFINVY5SDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveFVwID0gXCJNNSw5SDlWMTFINVY5TTIyLDlWMThBMiwyIDAgMCwxIDIwLDIwSDJWOUE1LDUgMCAwLDEgNyw0SDE3QTUsNSAwIDAsMSAyMiw5TTEwLDlBMywzIDAgMCwwIDcsNkEzLDMgMCAwLDAgNCw5VjE4SDEwVjlNMTYsN0gxMlYxM0gxNFY5SDE2VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveFVwT3V0bGluZSA9IFwiTTE3LDRIN0E1LDUgMCAwLDAgMiw5VjIwSDIwQTIsMiAwIDAsMCAyMiwxOFY5QTUsNSAwIDAsMCAxNyw0TTEwLDE4SDRWOUEzLDMgMCAwLDEgNyw2QTMsMyAwIDAsMSAxMCw5VjE4TTIwLDE4SDEyVjlDMTIsNy45MiAxMS42NSw2Ljg2IDExLDZIMTdBMywzIDAgMCwxIDIwLDlWMThNMTMsMTNIMTVWOUgxN1Y3SDEzVjEzTTksMTFINVY5SDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFuamFybyA9IFwiTTIgMlYyMkg3LjZWNy42SDE0LjhWMkgyTTkuMiA5LjJWMjJIMTQuOFY5LjJIOS4yTTE2LjQgMlYyMkgyMlYySDE2LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwID0gXCJNMTUsMTlMOSwxNi44OVY1TDE1LDcuMTFNMjAuNSwzQzIwLjQ0LDMgMjAuMzksMyAyMC4zNCwzTDE1LDUuMUw5LDNMMy4zNiw0LjlDMy4xNSw0Ljk3IDMsNS4xNSAzLDUuMzhWMjAuNUEwLjUsMC41IDAgMCwwIDMuNSwyMUMzLjU1LDIxIDMuNjEsMjEgMy42NiwyMC45N0w5LDE4LjlMMTUsMjFMMjAuNjQsMTkuMUMyMC44NSwxOSAyMSwxOC44NSAyMSwxOC42MlYzLjVBMC41LDAuNSAwIDAsMCAyMC41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwQ2hlY2sgPSBcIk0xOC4yNSwyMkwxNS41LDE5TDE2LjY2LDE3LjgyTDE4LjI1LDE5LjQxTDIxLjg0LDE1LjgyTDIzLDE3LjIzTTIwLjUsM0EwLjUsMC41IDAgMCwxIDIxLDMuNVYxMy4zNkMyMC4zNiwxMy4xMyAxOS42OSwxMyAxOSwxM0MxNy40NiwxMyAxNi4wNiwxMy42IDE1LDE0LjU2VjcuMUw5LDVWMTYuOUwxMy4wNCwxOC4zQzEzLDE4LjU0IDEzLDE4Ljc3IDEzLDE5QzEzLDE5LjQ2IDEzLjA2LDE5LjkyIDEzLjE2LDIwLjM2TDksMTguOUwzLjY2LDIwLjk3QzMuNTksMjEgMy41NSwyMSAzLjUsMjFBMC41LDAuNSAwIDAsMSAzLDIwLjVWNS4zOEMzLDUuMTUgMy4xNiw0Ljk3IDMuMzUsNC45TDksM0wxNSw1LjFMMjAuMzMsM1wiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENoZWNrT3V0bGluZSA9IFwiTTE4LjI1LDIyTDE1LjUsMTlMMTYuNjYsMTcuODJMMTguMjUsMTkuNDFMMjEuODQsMTUuODJMMjMsMTcuMjNMMTguMjUsMjJNMjAuNSwzQTAuNSwwLjUgMCAwLDEgMjEsMy41VjEzLjM0QzIwLjM3LDEzLjEyIDE5LjcsMTMgMTksMTNWNS43TDE2LDYuODZWMTMuOEMxNS4yLDE0LjI3IDE0LjUsMTQuOTEgMTQsMTUuNjhWNi44N0wxMCw1LjQ3VjE3LjEzTDEzLjA1LDE4LjJMMTMsMTlDMTMsMTkuNDYgMTMuMDUsMTkuOTIgMTMuMTUsMjAuMzVMOSwxOC45TDMuNjYsMjAuOTdMMy41LDIxQTAuNSwwLjUgMCAwLDEgMywyMC41VjUuMzhDMyw1LjE1IDMuMTUsNC45NyAzLjM2LDQuOUw5LDNMMTUsNS4xTDIwLjM0LDMuMDNMMjAuNSwzTTUsNi40NlYxOC4zMUw4LDE3LjE1VjUuNDVMNSw2LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENsb2NrID0gXCJNMTUsMTJIMTYuNVYxNi4yNUwxOS4zNiwxNy45NEwxOC42MSwxOS4xNkwxNSwxN1YxMk0yMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMsMjMgMTAuNCwyMS4wOCA5LjQyLDE4LjRMOCwxNy45TDIuNjYsMTkuOTdMMi41LDIwQTAuNSwwLjUgMCAwLDEgMiwxOS41VjQuMzhDMiw0LjE1IDIuMTUsMy45NyAyLjM2LDMuOUw4LDJMMTQsNC4xTDE5LjM0LDJIMTkuNUEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMC4yNUMyMS44MSwxMS41IDIzLDEzLjYyIDIzLDE2TTksMTZDOSwxMi44MyAxMS4xMSwxMC4xNSAxNCw5LjI5VjYuMTFMOCw0VjE1Ljg5TDksMTYuMjRDOSwxNi4xNiA5LDE2LjA4IDksMTZNMTYsMTFBNSw1IDAgMCwwIDExLDE2QTUsNSAwIDAsMCAxNiwyMUE1LDUgMCAwLDAgMjEsMTZBNSw1IDAgMCwwIDE2LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENsb2NrT3V0bGluZSA9IFwiTTE1LDEySDE2LjVWMTYuMjVMMTkuMzYsMTcuOTRMMTguNjEsMTkuMTZMMTUsMTdWMTJNMTYsOUMxNi42OSw5IDE3LjM3LDkuMSAxOCw5LjI5VjQuN0wxNSw1Ljg2VjkuMDdDMTUuMzMsOSAxNS42Niw5IDE2LDlNMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzEzLDIzIDEwLjQsMjEuMDggOS40MiwxOC40TDgsMTcuOUwyLjY2LDE5Ljk3TDIuNSwyMEEwLjUsMC41IDAgMCwxIDIsMTkuNVY0LjM4QzIsNC4xNSAyLjE1LDMuOTcgMi4zNiwzLjlMOCwyTDE0LDQuMUwxOS4zNCwyLjAzTDE5LjUsMkEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMC4yNUMyMS44MSwxMS41IDIzLDEzLjYyIDIzLDE2TTksMTZDOSwxMy4yMSAxMC42MywxMC44IDEzLDkuNjdWNS44N0w5LDQuNDdWMTYuMTNIOUM5LDE2LjA5IDksMTYuMDQgOSwxNk0xNiwxMUE1LDUgMCAwLDAgMTEsMTZBNSw1IDAgMCwwIDE2LDIxQTUsNSAwIDAsMCAyMSwxNkE1LDUgMCAwLDAgMTYsMTFNNCw1LjQ2VjE3LjMxTDcsMTYuMTVWNC40NUw0LDUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTGVnZW5kID0gXCJNOSwzTDMuMzYsNC45QzMuMTUsNC45NyAzLDUuMTUgMyw1LjM4VjIwLjVBMC41LDAuNSAwIDAsMCAzLjUsMjFMMy42NiwyMC45N0w5LDE4LjlMMTUsMjFMMjAuNjQsMTkuMUMyMC44NSwxOS4wMyAyMSwxOC44NSAyMSwxOC42MlYzLjVBMC41LDAuNSAwIDAsMCAyMC41LDNMMjAuMzQsMy4wM0wxNSw1LjFMOSwzTTgsNS40NVYxNy4xNUw1LDE4LjMxVjYuNDZMOCw1LjQ1TTEwLDUuNDdMMTQsNi44N1YxOC41M0wxMCwxNy4xM1Y1LjQ3TTE5LDUuN1YxNy41NEwxNiwxOC41NVY2Ljg2TDE5LDUuN003LjQ2LDYuM0w1LjU3LDYuOTdWOS4xMkw3LjQ2LDguNDVWNi4zTTcuNDYsOS4wNUw1LjU3LDkuNzJWMTEuODdMNy40NiwxMS4yVjkuMDVNNy40NiwxMS44TDUuNTcsMTIuNDdWMTQuNjJMNy40NiwxMy45NVYxMS44TTcuNDYsMTQuNTVMNS41NywxNS4yMlYxNy4zN0w3LjQ2LDE2LjdWMTQuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyID0gXCJNMTIsMTEuNUEyLjUsMi41IDAgMCwxIDkuNSw5QTIuNSwyLjUgMCAwLDEgMTIsNi41QTIuNSwyLjUgMCAwLDEgMTQuNSw5QTIuNSwyLjUgMCAwLDEgMTIsMTEuNU0xMiwyQTcsNyAwIDAsMCA1LDlDNSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiAxOSwxNC4yNSAxOSw5QTcsNyAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlckFsZXJ0ID0gXCJNMTIgMkMxNS45IDIgMTkgNS4xIDE5IDlDMTkgMTQuMiAxMiAyMiAxMiAyMlM1IDE0LjIgNSA5QzUgNS4xIDguMSAyIDEyIDJNMTEgNlYxMkgxM1Y2SDExTTExIDE0VjE2SDEzVjE0SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlckFsZXJ0T3V0bGluZSA9IFwiTTEyLDJBNyw3IDAgMCwxIDE5LDlDMTksMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgNSwxNC4yNSA1LDlBNyw3IDAgMCwxIDEyLDJNMTIsNEE1LDUgMCAwLDAgNyw5QzcsMTAgNywxMiAxMiwxOC43MUMxNywxMiAxNywxMCAxNyw5QTUsNSAwIDAsMCAxMiw0TTExLDZIMTNWMTFIMTFWNk0xMSwxM0gxM1YxNUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaGVjayA9IFwiTTEyLDJDMTUuODYsMiAxOSw1LjE0IDE5LDlDMTksMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgNSwxNC4yNSA1LDlDNSw1LjE0IDguMTQsMiAxMiwyTTEwLjQ3LDE0TDE3LDcuNDFMMTUuNiw2TDEwLjQ3LDExLjE4TDguNCw5LjA5TDcsMTAuNUwxMC40NywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaGVja091dGxpbmUgPSBcIk0xMiA0QzE0LjggNCAxNyA2LjIgMTcgOUMxNyAxMS45IDE0LjEgMTYuMiAxMiAxOC45QzkuOSAxNi4yIDcgMTEuOSA3IDlDNyA2LjIgOS4yIDQgMTIgNE0xMiAyQzguMSAyIDUgNS4xIDUgOUM1IDE0LjIgMTIgMjIgMTIgMjJTMTkgMTQuMiAxOSA5QzE5IDUuMSAxNS45IDIgMTIgMk0xMS4zIDE0TDE2LjIgOUwxNC44IDcuNkwxMS4zIDExLjJMOS43IDkuNkw4LjMgMTFMMTEuMyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaXJjbGUgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDEyLjVBMS41LDEuNSAwIDAsMSAxMC41LDExQTEuNSwxLjUgMCAwLDEgMTIsOS41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMUExLjUsMS41IDAgMCwxIDEyLDEyLjVNMTIsNy4yQzkuOSw3LjIgOC4yLDguOSA4LjIsMTFDOC4yLDE0IDEyLDE3LjUgMTIsMTcuNUMxMiwxNy41IDE1LjgsMTQgMTUuOCwxMUMxNS44LDguOSAxNC4xLDcuMiAxMiw3LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyRGlzdGFuY2UgPSBcIk02LjUsOC4xMUM1LjYxLDguMTEgNC44OSw3LjM5IDQuODksNi41QTEuNjEsMS42MSAwIDAsMSA2LjUsNC44OUM3LjM5LDQuODkgOC4xMSw1LjYxIDguMTEsNi41VjYuNUExLjYxLDEuNjEgMCAwLDEgNi41LDguMTFNNi41LDJDNCwyIDIsNCAyLDYuNUMyLDkuODcgNi41LDE0Ljg2IDYuNSwxNC44NkM2LjUsMTQuODYgMTEsOS44NyAxMSw2LjVDMTEsNCA5LDIgNi41LDJNMTcuNSw4LjExQTEuNjEsMS42MSAwIDAsMSAxNS44OSw2LjVDMTUuODksNS42MSAxNi42MSw0Ljg5IDE3LjUsNC44OUMxOC4zOSw0Ljg5IDE5LjExLDUuNjEgMTkuMTEsNi41QTEuNjEsMS42MSAwIDAsMSAxNy41LDguMTFNMTcuNSwyQzE1LDIgMTMsNCAxMyw2LjVDMTMsOS44NyAxNy41LDE0Ljg2IDE3LjUsMTQuODZDMTcuNSwxNC44NiAyMiw5Ljg3IDIyLDYuNUMyMiw0IDIwLDIgMTcuNSwyTTE3LjUsMTZDMTYuMjMsMTYgMTUuMSwxNi44IDE0LjY4LDE4SDkuMzJDOC43NywxNi40NCA3LjA1LDE1LjYyIDUuNSwxNi4xN0MzLjkzLDE2LjcyIDMuMTEsMTguNDQgMy42NiwyMEM0LjIyLDIxLjU2IDUuOTMsMjIuMzggNy41LDIxLjgzQzguMzUsMjEuNTMgOSwyMC44NSA5LjMyLDIwSDE0LjY5QzE1LjI0LDIxLjU2IDE2Ljk2LDIyLjM4IDE4LjUsMjEuODNDMjAuMDgsMjEuMjggMjAuOSwxOS41NiAyMC4zNSwxOEMxOS45MiwxNi44IDE4Ljc4LDE2IDE3LjUsMTZWMTZNMTcuNSwyMC41QTEuNSwxLjUgMCAwLDEgMTYsMTlBMS41LDEuNSAwIDAsMSAxNy41LDE3LjVBMS41LDEuNSAwIDAsMSAxOSwxOUExLjUsMS41IDAgMCwxIDE3LjUsMjAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJEb3duID0gXCJNMTIgMkE3IDcgMCAwIDAgNSA5QzUgMTQuMjUgMTIgMjIgMTIgMjJTMTkgMTQuMjUgMTkgOUE3IDcgMCAwIDAgMTIgMk03LjUgMTBIMTBWNUgxNFYxMEgxNi41TDEyIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTGVmdCA9IFwiTTE1IDExLjVDMTMuNjIgMTEuNSAxMi41IDEwLjM4IDEyLjUgOVMxMy42MiA2LjUgMTUgNi41IDE3LjUgNy42MiAxNy41IDkgMTYuMzggMTEuNSAxNSAxMS41TTggOUM4IDE0LjI1IDE1IDIyIDE1IDIyUzIyIDE0LjI1IDIyIDlDMjIgNS4xMyAxOC44NyAyIDE1IDJTOCA1LjEzIDggOU02IDdMMSAxMkw2IDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTGVmdE91dGxpbmUgPSBcIk0xNSA2LjVDMTYuMzggNi41IDE3LjUgNy42MiAxNy41IDlTMTYuMzggMTEuNSAxNSAxMS41IDEyLjUgMTAuMzggMTIuNSA5IDEzLjYyIDYuNSAxNSA2LjVNMTUgMkMxOC44NyAyIDIyIDUuMTMgMjIgOUMyMiAxNC4yNSAxNSAyMiAxNSAyMlM4IDE0LjI1IDggOUM4IDUuMTMgMTEuMTMgMiAxNSAyTTEwIDlDMTAgMTAgMTAgMTIgMTUgMTguNzFDMjAgMTIgMjAgMTAgMjAgOUMyMCA2LjI0IDE3Ljc2IDQgMTUgNFMxMCA2LjI0IDEwIDlNNiA3TDEgMTJMNiAxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlck1pbnVzID0gXCJNOSwxMS41QTIuNSwyLjUgMCAwLDAgMTEuNSw5QTIuNSwyLjUgMCAwLDAgOSw2LjVBMi41LDIuNSAwIDAsMCA2LjUsOUEyLjUsMi41IDAgMCwwIDksMTEuNU05LDJDMTIuODYsMiAxNiw1LjEzIDE2LDlDMTYsMTQuMjUgOSwyMiA5LDIyQzksMjIgMiwxNC4yNSAyLDlBNyw3IDAgMCwxIDksMk0xNSwxN0gyM1YxOUgxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJNaW51c091dGxpbmUgPSBcIk0xNSAxN0gyM1YxOUgxNVYxN005IDYuNUMxMC40IDYuNSAxMS41IDcuNiAxMS41IDlTMTAuNCAxMS41IDkgMTEuNSA2LjUgMTAuNCA2LjUgOSA3LjYgNi41IDkgNi41TTkgMkMxMi45IDIgMTYgNS4xIDE2IDlDMTYgMTQuMiA5IDIyIDkgMjJTMiAxNC4yIDIgOUMyIDUuMSA1LjEgMiA5IDJNOSA0QzYuMiA0IDQgNi4yIDQgOUM0IDEwIDQgMTIgOSAxOC43QzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yIDExLjggNCA5IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTXVsdGlwbGUgPSBcIk0xNCwxMS41QTIuNSwyLjUgMCAwLDAgMTYuNSw5QTIuNSwyLjUgMCAwLDAgMTQsNi41QTIuNSwyLjUgMCAwLDAgMTEuNSw5QTIuNSwyLjUgMCAwLDAgMTQsMTEuNU0xNCwyQzE3Ljg2LDIgMjEsNS4xMyAyMSw5QzIxLDE0LjI1IDE0LDIyIDE0LDIyQzE0LDIyIDcsMTQuMjUgNyw5QTcsNyAwIDAsMSAxNCwyTTUsOUM1LDEzLjUgMTAuMDgsMTkuNjYgMTEsMjAuODFMMTAsMjJDMTAsMjIgMywxNC4yNSAzLDlDMyw1LjgzIDUuMTEsMy4xNSA4LDIuMjlDNi4xNiwzLjk0IDUsNi4zMyA1LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTXVsdGlwbGVPdXRsaW5lID0gXCJNMTEuNSA5QzExLjUgNy42MiAxMi42MiA2LjUgMTQgNi41QzE1LjEgNi41IDE2LjAzIDcuMjEgMTYuMzcgOC4xOUMxNi40NSA4LjQ1IDE2LjUgOC43MiAxNi41IDlDMTYuNSAxMC4zOCAxNS4zOCAxMS41IDE0IDExLjVDMTIuOTEgMTEuNSAxMiAxMC44MSAxMS42NCA5Ljg0QzExLjU1IDkuNTggMTEuNSA5LjI5IDExLjUgOU01IDlDNSAxMy41IDEwLjA4IDE5LjY2IDExIDIwLjgxTDEwIDIyQzEwIDIyIDMgMTQuMjUgMyA5QzMgNS44MyA1LjExIDMuMTUgOCAyLjI5QzYuMTYgMy45NCA1IDYuMzMgNSA5TTE0IDJDMTcuODYgMiAyMSA1LjEzIDIxIDlDMjEgMTQuMjUgMTQgMjIgMTQgMjJDMTQgMjIgNyAxNC4yNSA3IDlDNyA1LjEzIDEwLjE0IDIgMTQgMk0xNCA0QzExLjI0IDQgOSA2LjI0IDkgOUM5IDEwIDkgMTIgMTQgMTguNzFDMTkgMTIgMTkgMTAgMTkgOUMxOSA2LjI0IDE2Ljc2IDQgMTQgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJPZmYgPSBcIk0xNi4zNywxNi4xTDExLjc1LDExLjQ3TDExLjY0LDExLjM2TDMuMjcsM0wyLDQuMjdMNS4xOCw3LjQ1QzUuMDYsNy45NSA1LDguNDYgNSw5QzUsMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgMTMuNjcsMjAuMTUgMTUuMzcsMTcuNjVMMTguNzMsMjFMMjAsMTkuNzJNMTIsNi41QTIuNSwyLjUgMCAwLDEgMTQuNSw5QzE0LjUsOS43MyAxNC4xNywxMC4zOSAxMy42NywxMC44NUwxNy4zLDE0LjVDMTguMjgsMTIuNjIgMTksMTAuNjggMTksOUE3LDcgMCAwLDAgMTIsMkMxMCwyIDguMjQsMi44MiA2Ljk2LDQuMTRMMTAuMTUsNy4zM0MxMC42MSw2LjgyIDExLjI2LDYuNSAxMiw2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyT2ZmT3V0bGluZSA9IFwiTTIwIDE5LjdMMy4zIDNMMiA0LjNMNS4yIDcuNUM1LjEgOCA1IDguNSA1IDlDNSAxNC4yIDEyIDIyIDEyIDIyUzEzLjcgMjAuMSAxNS40IDE3LjZMMTguOCAyMUwyMCAxOS43TTEyIDE4LjdDNy40IDEyLjUgNyAxMC40IDcgOS4zTDEzLjggMTYuMUMxMy4zIDE2LjkgMTIuNyAxNy43IDEyIDE4LjdNOC40IDUuNkw3IDQuMkM4LjIgMi44IDEwIDIgMTIgMkMxNS45IDIgMTkgNS4xIDE5IDlDMTkgMTAuNyAxOC4zIDEyLjYgMTcuMyAxNC41TDE1LjggMTNDMTcgMTAuNiAxNyA5LjYgMTcgOUMxNyA2LjIgMTQuOCA0IDEyIDRDMTAuNiA0IDkuMyA0LjYgOC40IDUuNk0xMiA2LjVDMTMuNCA2LjUgMTQuNSA3LjYgMTQuNSA5QzE0LjUgOS43IDE0LjIgMTAuNCAxMy43IDEwLjlMMTAuMiA3LjRDMTAuNiA2LjggMTEuMyA2LjUgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlck91dGxpbmUgPSBcIk0xMiw2LjVBMi41LDIuNSAwIDAsMSAxNC41LDlBMi41LDIuNSAwIDAsMSAxMiwxMS41QTIuNSwyLjUgMCAwLDEgOS41LDlBMi41LDIuNSAwIDAsMSAxMiw2LjVNMTIsMkE3LDcgMCAwLDEgMTksOUMxOSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiA1LDE0LjI1IDUsOUE3LDcgMCAwLDEgMTIsMk0xMiw0QTUsNSAwIDAsMCA3LDlDNywxMCA3LDEyIDEyLDE4LjcxQzE3LDEyIDE3LDEwIDE3LDlBNSw1IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUGF0aCA9IFwiTTE4LDE1QTMsMyAwIDAsMSAyMSwxOEEzLDMgMCAwLDEgMTgsMjFDMTYuNjksMjEgMTUuNTgsMjAuMTcgMTUuMTcsMTlIMTRWMTdIMTUuMTdDMTUuNTgsMTUuODMgMTYuNjksMTUgMTgsMTVNMTgsMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxOUExLDEgMCAwLDAgMTksMThBMSwxIDAgMCwwIDE4LDE3TTE4LDhBMS40MywxLjQzIDAgMCwwIDE5LjQzLDYuNTdDMTkuNDMsNS43OCAxOC43OSw1LjE0IDE4LDUuMTRDMTcuMjEsNS4xNCAxNi41Nyw1Ljc4IDE2LjU3LDYuNTdBMS40MywxLjQzIDAgMCwwIDE4LDhNMTgsMi41N0E0LDQgMCAwLDEgMjIsNi41N0MyMiw5LjU2IDE4LDE0IDE4LDE0QzE4LDE0IDE0LDkuNTYgMTQsNi41N0E0LDQgMCAwLDEgMTgsMi41N004LjgzLDE3SDEwVjE5SDguODNDOC40MiwyMC4xNyA3LjMxLDIxIDYsMjFBMywzIDAgMCwxIDMsMThDMywxNi42OSAzLjgzLDE1LjU4IDUsMTUuMTdWMTRIN1YxNS4xN0M3Ljg1LDE1LjQ3IDguNTMsMTYuMTUgOC44MywxN002LDE3QTEsMSAwIDAsMCA1LDE4QTEsMSAwIDAsMCA2LDE5QTEsMSAwIDAsMCA3LDE4QTEsMSAwIDAsMCA2LDE3TTYsM0EzLDMgMCAwLDEgOSw2QzksNy4zMSA4LjE3LDguNDIgNyw4LjgzVjEwSDVWOC44M0MzLjgzLDguNDIgMyw3LjMxIDMsNkEzLDMgMCAwLDEgNiwzTTYsNUExLDEgMCAwLDAgNSw2QTEsMSAwIDAsMCA2LDdBMSwxIDAgMCwwIDcsNkExLDEgMCAwLDAgNiw1TTExLDE5VjE3SDEzVjE5SDExTTcsMTNINVYxMUg3VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclBsdXMgPSBcIk05LDExLjVBMi41LDIuNSAwIDAsMCAxMS41LDlBMi41LDIuNSAwIDAsMCA5LDYuNUEyLjUsMi41IDAgMCwwIDYuNSw5QTIuNSwyLjUgMCAwLDAgOSwxMS41TTksMkMxMi44NiwyIDE2LDUuMTMgMTYsOUMxNiwxNC4yNSA5LDIyIDksMjJDOSwyMiAyLDE0LjI1IDIsOUE3LDcgMCAwLDEgOSwyTTE1LDE3SDE4VjE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclBsdXNPdXRsaW5lID0gXCJNMTUgMTdIMThWMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdNOSA2LjVDMTAuNCA2LjUgMTEuNSA3LjYgMTEuNSA5UzEwLjQgMTEuNSA5IDExLjUgNi41IDEwLjQgNi41IDkgNy42IDYuNSA5IDYuNU05IDJDMTIuOSAyIDE2IDUuMSAxNiA5QzE2IDE0LjIgOSAyMiA5IDIyUzIgMTQuMiAyIDlDMiA1LjEgNS4xIDIgOSAyTTkgNEM2LjIgNCA0IDYuMiA0IDlDNCAxMCA0IDEyIDkgMTguN0MxNCAxMiAxNCAxMCAxNCA5QzE0IDYuMiAxMS44IDQgOSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclF1ZXN0aW9uID0gXCJNMTIsMkM4LjE0LDIgNSw1LjE0IDUsOUM1LDE0LjI1IDEyLDIyIDEyLDIyQzEyLDIyIDE5LDE0LjI1IDE5LDlDMTksNS4xNCAxNS44NiwyIDEyLDJNMTIuODgsMTUuNzVIMTEuMTNWMTRIMTIuODhNMTIuODgsMTIuODhIMTEuMTNDMTEuMTMsMTAuMDQgMTMuNzUsMTAuMjYgMTMuNzUsOC41QTEuNzUsMS43NSAwIDAsMCAxMiw2Ljc1QTEuNzUsMS43NSAwIDAsMCAxMC4yNSw4LjVIOC41QTMuNSwzLjUgMCAwLDEgMTIsNUEzLjUsMy41IDAgMCwxIDE1LjUsOC41QzE1LjUsMTAuNjkgMTIuODgsMTAuOTEgMTIuODgsMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUXVlc3Rpb25PdXRsaW5lID0gXCJNMTIsMUM3LjU5LDEgNCw0LjU5IDQsOUM0LDE0LjU3IDEwLjk2LDIyLjM0IDExLjI2LDIyLjY3TDEyLDIzLjVMMTIuNzQsMjIuNjdDMTMuMDQsMjIuMzQgMjAsMTQuNTcgMjAsOUMyMCw0LjU5IDE2LjQxLDEgMTIsMU0xMiwyMC40N0M5LjgyLDE3Ljg2IDYsMTIuNTQgNiw5QTYsNiAwIDAsMSAxMiwzQTYsNiAwIDAsMSAxOCw5QzE4LDEyLjgzIDEzLjc1LDE4LjM2IDEyLDIwLjQ3TTExLjEzLDE0SDEyLjg4VjE1Ljc1SDExLjEzTTEyLDVBMy41LDMuNSAwIDAsMCA4LjUsOC41SDEwLjI1QTEuNzUsMS43NSAwIDAsMSAxMiw2Ljc1QTEuNzUsMS43NSAwIDAsMSAxMy43NSw4LjVDMTMuNzUsMTAuMjYgMTEuMTMsMTAuMDQgMTEuMTMsMTIuODhIMTIuODhDMTIuODgsMTAuOTEgMTUuNSwxMC42OSAxNS41LDguNUEzLjUsMy41IDAgMCwwIDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmFkaXVzID0gXCJNMTIsMkMxNS4zMSwyIDE4LDQuNjYgMTgsNy45NUMxOCwxMi40MSAxMiwxOSAxMiwxOUMxMiwxOSA2LDEyLjQxIDYsNy45NUM2LDQuNjYgOC42OSwyIDEyLDJNMTIsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDE0LDhBMiwyIDAgMCwwIDEyLDZNMjAsMTlDMjAsMjEuMjEgMTYuNDIsMjMgMTIsMjNDNy41OCwyMyA0LDIxLjIxIDQsMTlDNCwxNy43MSA1LjIyLDE2LjU2IDcuMTEsMTUuODNMNy43NSwxNi43NEM2LjY3LDE3LjE5IDYsMTcuODEgNiwxOC41QzYsMTkuODggOC42OSwyMSAxMiwyMUMxNS4zMSwyMSAxOCwxOS44OCAxOCwxOC41QzE4LDE3LjgxIDE3LjMzLDE3LjE5IDE2LjI1LDE2Ljc0TDE2Ljg5LDE1LjgzQzE4Ljc4LDE2LjU2IDIwLDE3LjcxIDIwLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclJhZGl1c091dGxpbmUgPSBcIk0xMiA0QzE0LjIgNCAxNiA1LjggMTYgOEMxNiAxMC4xIDEzLjkgMTMuNSAxMiAxNS45QzEwLjEgMTMuNCA4IDEwLjEgOCA4QzggNS44IDkuOCA0IDEyIDRNMTIgMkM4LjcgMiA2IDQuNyA2IDhDNiAxMi41IDEyIDE5IDEyIDE5UzE4IDEyLjQgMTggOEMxOCA0LjcgMTUuMyAyIDEyIDJNMTIgNkMxMC45IDYgMTAgNi45IDEwIDhTMTAuOSAxMCAxMiAxMCAxNCA5LjEgMTQgOCAxMy4xIDYgMTIgNk0yMCAxOUMyMCAyMS4yIDE2LjQgMjMgMTIgMjNTNCAyMS4yIDQgMTlDNCAxNy43IDUuMiAxNi42IDcuMSAxNS44TDcuNyAxNi43QzYuNyAxNy4yIDYgMTcuOCA2IDE4LjVDNiAxOS45IDguNyAyMSAxMiAyMVMxOCAxOS45IDE4IDE4LjVDMTggMTcuOCAxNy4zIDE3LjIgMTYuMiAxNi43TDE2LjggMTUuOEMxOC44IDE2LjYgMjAgMTcuNyAyMCAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJSZW1vdmUgPSBcIk05LDJDNS4xNCwyIDIsNS4xNCAyLDlDMiwxNC4yNSA5LDIyIDksMjJDOSwyMiAxNiwxNC4yNSAxNiw5QTcsNyAwIDAsMCA5LDJNOSw2LjVBMi41LDIuNSAwIDAsMSAxMS41LDlBMi41LDIuNSAwIDAsMSA5LDExLjVBMi41LDIuNSAwIDAsMSA2LjUsOUEyLjUsMi41IDAgMCwxIDksNi41TTE2LjU4LDE0LjE2TDE1LjE3LDE1LjU4TDE3LjU4LDE4TDE1LjE3LDIwLjQxTDE2LjU4LDIxLjgyTDE5LDE5LjQxTDIxLjQxLDIxLjgyTDIyLjgzLDIwLjQxTDIwLjQxLDE4TDIyLjgzLDE1LjU4TDIxLjQxLDE0LjE2TDE5LDE2LjU4XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmVtb3ZlT3V0bGluZSA9IFwiTTE2LjYgMTQuMkwxNS4yIDE1LjZMMTcuNiAxOEwxNS4yIDIwLjRMMTYuNiAyMS44TDE5IDE5LjRMMjEuNCAyMS44TDIyLjggMjAuNEwyMC40IDE4TDIyLjggMTUuNkwyMS40IDE0LjJMMTkgMTYuNk05IDYuNUMxMC40IDYuNSAxMS41IDcuNiAxMS41IDlTMTAuNCAxMS41IDkgMTEuNSA2LjUgMTAuNCA2LjUgOSA3LjYgNi41IDkgNi41TTkgMkMxMi45IDIgMTYgNS4xIDE2IDlDMTYgMTQuMiA5IDIyIDkgMjJTMiAxNC4yIDIgOUMyIDUuMSA1LjEgMiA5IDJNOSA0QzYuMiA0IDQgNi4yIDQgOUM0IDEwIDQgMTIgOSAxOC43QzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yIDExLjggNCA5IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmVtb3ZlVmFyaWFudCA9IFwiTTEyLDJDOC4xNCwyIDUsNS4xNCA1LDlDNSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiAxOSwxNC4yNSAxOSw5QzE5LDUuMTQgMTUuODYsMiAxMiwyTTkuNTksNS4xN0wxMiw3LjU4TDE0LjQxLDUuMTdMMTUuODMsNi41OEwxMy40MSw5TDE1LjgzLDExLjQxTDE0LjQxLDEyLjgzTDEyLDEwLjQxTDkuNTksMTIuODNMOC4xNywxMS40MUwxMC41OSw5TDguMTcsNi41OFwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclJpZ2h0ID0gXCJNOSAxMS41QzcuNjIgMTEuNSA2LjUgMTAuMzggNi41IDlTNy42MiA2LjUgOSA2LjUgMTEuNSA3LjYyIDExLjUgOSAxMC4zOCAxMS41IDkgMTEuNU05IDJDNS4xMyAyIDIgNS4xMyAyIDlDMiAxNC4yNSA5IDIyIDkgMjJTMTYgMTQuMjUgMTYgOUMxNiA1LjEzIDEyLjg3IDIgOSAyTTE4IDE3TDIzIDEyTDE4IDdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmlnaHRPdXRsaW5lID0gXCJNOSA2LjVDMTAuMzggNi41IDExLjUgNy42MiAxMS41IDlTMTAuMzggMTEuNSA5IDExLjUgNi41IDEwLjM4IDYuNSA5IDcuNjIgNi41IDkgNi41TTkgMkMxMi44NyAyIDE2IDUuMTMgMTYgOUMxNiAxNC4yNSA5IDIyIDkgMjJTMiAxNC4yNSAyIDlDMiA1LjEzIDUuMTMgMiA5IDJNOSA0QzYuMjQgNCA0IDYuMjQgNCA5QzQgMTAgNCAxMiA5IDE4LjcxQzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yNCAxMS43NiA0IDkgNE0xOCAxN0wyMyAxMkwxOCA3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclN0YXIgPSBcIk0xMiAyQzguMSAyIDUgNS4xIDUgOUM1IDE0LjIgMTIgMjIgMTIgMjJTMTkgMTQuMiAxOSA5QzE5IDUuMSAxNS45IDIgMTIgMk0xNC41IDEzTDEyIDExLjVMOS41IDEzTDEwLjIgMTAuMkw4IDguM0wxMC45IDguMUwxMiA1LjRMMTMuMSA4TDE2IDguM0wxMy44IDEwLjJMMTQuNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJTdGFyT3V0bGluZSA9IFwiTTEyIDJDMTUuOSAyIDE5IDUuMSAxOSA5QzE5IDE0LjIgMTIgMjIgMTIgMjJTNSAxNC4yIDUgOUM1IDUuMSA4LjEgMiAxMiAyTTEyIDRDOS4yIDQgNyA2LjIgNyA5QzcgMTAgNyAxMiAxMiAxOC43QzE3IDEyIDE3IDEwIDE3IDlDMTcgNi4yIDE0LjggNCAxMiA0TTEyIDExLjVMMTQuNCAxM0wxMy44IDEwLjJMMTYgOC4zTDEzLjEgOC4xTDEyIDUuNEwxMC45IDhMOCA4LjNMMTAuMiAxMC4yTDkuNSAxM0wxMiAxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclVwID0gXCJNMTIgMkE3IDcgMCAwIDAgNSA5QzUgMTQuMjUgMTIgMjIgMTIgMjJTMTkgMTQuMjUgMTkgOUE3IDcgMCAwIDAgMTIgMk0xNi41IDlIMTRWMTRIMTBWOUg3LjVMMTIgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1pbnVzID0gXCJNMTUgMThWMjBIMjNWMThIMTVNMTMuMTYgMjAuMzZMOSAxOC45TDMuNjYgMjAuOTdDMy42IDIxIDMuNTUgMjEgMy41IDIxQzMuMjIgMjEgMyAyMC43OCAzIDIwLjVWNS4zOEMzIDUuMTUgMy4xNiA0Ljk3IDMuMzYgNC45TDkgM0wxNSA1LjFMMjAuMzQgM0gyMC41QzIwLjc4IDMgMjEgMy4yMiAyMSAzLjVWMTMuMzVDMjAuMzcgMTMuMTMgMTkuNyAxMyAxOSAxM0MxNy40NiAxMyAxNi4wNiAxMy41OCAxNSAxNC41NFY3LjFMOSA1VjE2LjlMMTMuMDQgMTguMzJDMTMgMTguNTQgMTMgMTguNzcgMTMgMTlDMTMgMTkuNDcgMTMuMDYgMTkuOTIgMTMuMTYgMjAuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwT3V0bGluZSA9IFwiTTIwLjUsM0wyMC4zNCwzLjAzTDE1LDUuMUw5LDNMMy4zNiw0LjlDMy4xNSw0Ljk3IDMsNS4xNSAzLDUuMzhWMjAuNUEwLjUsMC41IDAgMCwwIDMuNSwyMUwzLjY2LDIwLjk3TDksMTguOUwxNSwyMUwyMC42NCwxOS4xQzIwLjg1LDE5LjAzIDIxLDE4Ljg1IDIxLDE4LjYyVjMuNUEwLjUsMC41IDAgMCwwIDIwLjUsM00xMCw1LjQ3TDE0LDYuODdWMTguNTNMMTAsMTcuMTNWNS40N001LDYuNDZMOCw1LjQ1VjE3LjE1TDUsMTguMzFWNi40Nk0xOSwxNy41NEwxNiwxOC41NVY2Ljg2TDE5LDUuN1YxNy41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBQbHVzID0gXCJNOSwzTDMuMzYsNC45QzMuMTYsNC45NyAzLDUuMTUgMyw1LjM4VjIwLjVBMC41LDAuNSAwIDAsMCAzLjUsMjFDMy41NSwyMSAzLjYsMjEgMy42NiwyMC45N0w5LDE4LjlMMTMuMTYsMjAuMzZDMTMuMDYsMTkuOTIgMTMsMTkuNDYgMTMsMTlDMTMsMTguNzcgMTMsMTguNTQgMTMuMDQsMTguM0w5LDE2LjlWNUwxNSw3LjFWMTQuNTZDMTYuMDcsMTMuNiAxNy40NywxMyAxOSwxM0MxOS43LDEzIDIwLjM3LDEzLjEzIDIxLDEzLjM2VjMuNUEwLjUsMC41IDAgMCwwIDIwLjUsM0gyMC4zNEwxNSw1LjFMOSwzTTE4LDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcFNlYXJjaCA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE0LDYuMTFMOCw0VjE1Ljg5TDksMTYuMjRWMTYuNUM5LDE3LjE0IDkuMDksMTcuNzYgOS4yNiwxOC4zNEw4LDE3LjlMMi42NiwxOS45N0wyLjUsMjBBMC41LDAuNSAwIDAsMSAyLDE5LjVWNC4zOEMyLDQuMTUgMi4xNSwzLjk3IDIuMzYsMy45TDgsMkwxNCw0LjFMMTkuMzQsMkgxOS41QTAuNSwwLjUgMCAwLDEgMjAsMi41VjExLjgxQzE4LjgzLDEwLjY5IDE3LjI1LDEwIDE1LjUsMTBDMTUsMTAgMTQuNSwxMC4wNiAxNCwxMC4xN1Y2LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcFNlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMiAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE5LjUsMkEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMS44MUMxOS40MiwxMS4yNiAxOC43NSwxMC44MSAxOCwxMC41VjQuN0wxNSw1Ljg2VjEwQzE0LjMsMTAuMDcgMTMuNjIsMTAuMjQgMTMsMTAuNVY1Ljg3TDksNC40N1YxNi4xM0g5VjE2LjVDOSwxNy4xNCA5LjA5LDE3Ljc2IDkuMjYsMTguMzRMOCwxNy45TDIuNjYsMTkuOTdMMi41LDIwQTAuNSwwLjUgMCAwLDEgMiwxOS41VjQuMzhDMiw0LjE1IDIuMTUsMy45NyAyLjM2LDMuOUw4LDJMMTQsNC4xTDE5LjM0LDIuMDNMMTkuNSwyTTQsNS40NlYxNy4zMUw3LDE2LjE1VjQuNDVMNCw1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcGJveCA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTE2Ljc1LDE0LjQ1QzE4LjY1LDEyLjU1IDE4LjU4LDkuMzkgMTYuNTksNy40MUMxNC42LDUuNDMgMTEuNDUsNS4zNSA5LjU1LDcuMjVDNi4xMiwxMC42OCA3LjIyLDE2Ljc4IDcuMjIsMTYuNzhDNy4yMiwxNi43OCAxMy4zMywxNy44NyAxNi43NSwxNC40NU0xMy4xNSw3Ljg2TDE0LjEzLDkuODdMMTYuMTQsMTAuODVMMTQuMTMsMTEuODNMMTMuMTUsMTMuODRMMTIuMTcsMTEuODNMMTAuMTYsMTAuODVMMTIuMTcsOS44N0wxMy4xNSw3Ljg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcmdpbiA9IFwiTTIwLDRWOUwxOC41LDcuNUw1LjUsMjAuNUwzLjUsMTguNUwxNi41LDUuNUwxNSw0SDIwTTE3LDIwQTMsMyAwIDAsMSAxNCwxN1YxNUEzLDMgMCAwLDEgMTcsMTJBMywzIDAgMCwxIDIwLDE1VjE3QTMsMyAwIDAsMSAxNywyME0xNywxNEExLDEgMCAwLDAgMTYsMTVWMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxN1YxNUExLDEgMCAwLDAgMTcsMTRNNywxMkEzLDMgMCAwLDEgNCw5VjdBMywzIDAgMCwxIDcsNEEzLDMgMCAwLDEgMTAsN1Y5QTMsMyAwIDAsMSA3LDEyTTcsNkExLDEgMCAwLDAgNiw3VjlBMSwxIDAgMCwwIDcsMTBBMSwxIDAgMCwwIDgsOVY3QTEsMSAwIDAsMCA3LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFya2VyID0gXCJNMTguNSwxLjE1QzE3Ljk3LDEuMTUgMTcuNDYsMS4zNCAxNy4wNywxLjczTDExLjI2LDcuNTVMMTYuOTEsMTMuMkwyMi43Myw3LjM5QzIzLjUsNi42MSAyMy41LDUuMzUgMjIuNzMsNC41NkwxOS44OSwxLjczQzE5LjUsMS4zNCAxOSwxLjE1IDE4LjUsMS4xNU0xMC4zLDguNUw0LjM0LDE0LjQ2QzMuNTYsMTUuMjQgMy41NiwxNi41IDQuMzYsMTcuMzFDMy4xNCwxOC41NCAxLjksMTkuNzcgMC42NywyMUg2LjMzTDcuMTksMjAuMTRDNy45NywyMC45IDkuMjIsMjAuODkgMTAsMjAuMTJMMTUuOTUsMTQuMTZcIjtcclxuZXhwb3J0IHZhciBtZGlNYXJrZXJDYW5jZWwgPSBcIk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNNMTcuNSwxNC41QzE2Ljk0LDE0LjUgMTYuNDIsMTQuNjUgMTYsMTQuOTJMMjAuMDgsMTlDMjAuMzUsMTguNTggMjAuNSwxOC4wNiAyMC41LDE3LjVBMywzIDAgMCwwIDE3LjUsMTQuNU0xNC41LDE3LjVBMywzIDAgMCwwIDE3LjUsMjAuNUMxOC4wNiwyMC41IDE4LjU4LDIwLjM1IDE5LDIwLjA4TDE0LjkyLDE2QzE0LjY1LDE2LjQyIDE0LjUsMTYuOTQgMTQuNSwxNy41TTE4LjUsMS4xNUMxOSwxLjE1IDE5LjUsMS4zNCAxOS44OSwxLjczTDIyLjczLDQuNTZDMjMuNSw1LjM1IDIzLjUsNi42MSAyMi43Myw3LjM5TDE4Ljk1LDExLjE2QzE4LjUsMTEuMDYgMTgsMTEgMTcuNSwxMUMxNi42NywxMSAxNS44OCwxMS4xNiAxNS4xNSwxMS40NEwxMS4yNiw3LjU1TDE3LjA3LDEuNzNDMTcuNDYsMS4zNCAxNy45NywxLjE1IDE4LjUsMS4xNU0xMC4zLDguNUwxMy44OSwxMi4xQzEyLjE1LDEzLjI2IDExLDE1LjI1IDExLDE3LjVDMTEsMTggMTEuMDYsMTguNSAxMS4xNiwxOC45NUwxMCwyMC4xMkM5LjIyLDIwLjg5IDcuOTcsMjAuOSA3LjE5LDIwLjE0TDYuMzMsMjFIMC42N0w0LjM2LDE3LjMxQzMuNTYsMTYuNSAzLjU2LDE1LjI0IDQuMzQsMTQuNDZMMTAuMyw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFya2VyQ2hlY2sgPSBcIk0xMCwxNkw1LDExTDYuNDEsOS41OEwxMCwxMy4xN0wxNy41OSw1LjU4TDE5LDdNMTksMUg1QzMuODksMSAzLDEuODkgMywzVjE1LjkzQzMsMTYuNjIgMy4zNSwxNy4yMyAzLjg4LDE3LjU5TDEyLDIzTDIwLjExLDE3LjU5QzIwLjY0LDE3LjIzIDIxLDE2LjYyIDIxLDE1LjkzVjNDMjEsMS44OSAyMC4xLDEgMTksMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXN0b2RvbiA9IFwiTTIwLjk0LDE0QzIwLjY2LDE1LjQxIDE4LjUsMTYuOTYgMTUuOTcsMTcuMjZDMTQuNjYsMTcuNDEgMTMuMzcsMTcuNTYgMTIsMTcuNUM5Ljc1LDE3LjM5IDgsMTYuOTYgOCwxNi45NlYxNy41OEM4LjMyLDE5LjggMTAuMjIsMTkuOTMgMTIuMDMsMjBDMTMuODUsMjAuMDUgMTUuNDcsMTkuNTQgMTUuNDcsMTkuNTRMMTUuNTUsMjEuMTlDMTUuNTUsMjEuMTkgMTQuMjcsMjEuODcgMTIsMjJDMTAuNzUsMjIuMDcgOS4xOSwyMS45NyA3LjM4LDIxLjVDMy40NiwyMC40NSAyLjc4LDE2LjI2IDIuNjgsMTJMMi42Nyw4LjU3QzIuNjcsNC4yMyA1LjUsMi45NiA1LjUsMi45NkM2Ljk1LDIuMyA5LjQxLDIgMTEuOTcsMkgxMi4wM0MxNC41OSwyIDE3LjA1LDIuMyAxOC41LDIuOTZDMTguNSwyLjk2IDIxLjMzLDQuMjMgMjEuMzMsOC41N0MyMS4zMyw4LjU3IDIxLjM3LDExLjc4IDIwLjk0LDE0TTE4LDguOTFDMTgsNy44MyAxNy43LDcgMTcuMTUsNi4zNUMxNi41OSw1LjcyIDE1Ljg1LDUuMzkgMTQuOTIsNS4zOUMxMy44Niw1LjM5IDEzLjA1LDUuOCAxMi41LDYuNjJMMTIsNy41TDExLjUsNi42MkMxMC45NCw1LjggMTAuMTQsNS4zOSA5LjA3LDUuMzlDOC4xNSw1LjM5IDcuNDEsNS43MiA2Ljg0LDYuMzVDNi4yOSw3IDYsNy44MyA2LDguOTFWMTQuMTdIOC4xVjkuMDZDOC4xLDggOC41NSw3LjQ0IDkuNDYsNy40NEMxMC40Niw3LjQ0IDEwLjk2LDguMDkgMTAuOTYsOS4zN1YxMi4xNkgxMy4wM1Y5LjM3QzEzLjAzLDguMDkgMTMuNTMsNy40NCAxNC41NCw3LjQ0QzE1LjQ0LDcuNDQgMTUuODksOCAxNS44OSw5LjA2VjE0LjE3SDE4VjguOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0ZXJpYWxEZXNpZ24gPSBcIk0yMSwxMkMyMSw5Ljk3IDIwLjMzLDguMDkgMTksNi4zOFYxNy42M0MyMC4zMywxNS45NyAyMSwxNC4wOSAyMSwxMk0xNy42MywxOUg2LjM4QzcuMDYsMTkuNTUgNy45NSwyMCA5LjA1LDIwLjQxQzEwLjE0LDIwLjggMTEuMTMsMjEgMTIsMjFDMTIuODgsMjEgMTMuODYsMjAuOCAxNC45NSwyMC40MUMxNi4wNSwyMCAxNi45NCwxOS41NSAxNy42MywxOU0xMSwxN0w3LDlWMTdIMTFNMTcsOUwxMywxN0gxN1Y5TTEyLDE0LjUzTDE1Ljc1LDdIOC4yNUwxMiwxNC41M00xNy42Myw1QzE1Ljk3LDMuNjcgMTQuMDksMyAxMiwzQzkuOTEsMyA4LjAzLDMuNjcgNi4zOCw1SDE3LjYzTTUsMTcuNjNWNi4zOEMzLjY3LDguMDkgMyw5Ljk3IDMsMTJDMywxNC4wOSAzLjY3LDE1Ljk3IDUsMTcuNjNNMjMsMTJDMjMsMTUuMDMgMjEuOTQsMTcuNjMgMTkuNzgsMTkuNzhDMTcuNjMsMjEuOTQgMTUuMDMsMjMgMTIsMjNDOC45NywyMyA2LjM4LDIxLjk0IDQuMjIsMTkuNzhDMi4wNiwxNy42MyAxLDE1LjAzIDEsMTJDMSw4Ljk3IDIuMDYsNi4zOCA0LjIyLDQuMjJDNi4zOCwyLjA2IDguOTcsMSAxMiwxQzE1LjAzLDEgMTcuNjMsMi4wNiAxOS43OCw0LjIyQzIxLjk0LDYuMzggMjMsOC45NyAyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRlcmlhbFVpID0gXCJNOCwxNi42MVYxNS4zN0wxNCwxMS45MVY3LjIzTDksMTAuMTJMNCw3LjIzVjEzTDMsMTMuNThMMiwxM1Y1TDMuMDcsNC4zOEw5LDcuODFMMTIuOTMsNS41NEwxNC45Myw0LjM4TDE2LDVWMTMuMDZMMTAuOTIsMTZMMTQuOTcsMTguMzNMMjAsMTUuNDNWMTFMMjEsMTAuNDJMMjIsMTFWMTYuNThMMTQuOTcsMjAuNjRMOCwxNi42MU0yMiw5Ljc1TDIxLDEwLjMzTDIwLDkuNzVWOC41OEwyMSw4TDIyLDguNThWOS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoQ29tcGFzcyA9IFwiTTIwLDE5Ljg4VjIyTDE4LjIsMjAuODNMMTMuNDEsMTEuODNDMTQuMDcsMTEuNjIgMTQuNjcsMTEuMjggMTUuMTksMTAuODNMMjAsMTkuODhNMTUsN0EzLDMgMCAwLDEgMTIsMTBDMTEuODUsMTAgMTEuNzEsMTAgMTEuNTYsMTBMNS44LDIwLjgzTDQsMjJWMTkuODhMOS43OSw5QzguNjksNy43NyA4Ljc5LDUuODcgMTAuMDMsNC43NkMxMC41Nyw0LjI4IDExLjI3LDQgMTIsNFYyQTEsMSAwIDAsMSAxMywzVjQuMThDMTQuMiw0LjYgMTUsNS43MyAxNSw3TTEzLDdBMSwxIDAgMCwwIDEyLDZBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEyLDhBMSwxIDAgMCwwIDEzLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0aENvcyA9IFwiTTQsN0EyLDIgMCAwLDAgMiw5VjE1QTIsMiAwIDAsMCA0LDE3SDZBMiwyIDAgMCwwIDgsMTVWMTRINlYxNUg0VjlINlYxMEg4VjlBMiwyIDAgMCwwIDYsN0g0TTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTE4LDdBMiwyIDAgMCwwIDE2LDlWMTFBMiwyIDAgMCwwIDE4LDEzSDIwVjE1SDE2VjE3SDIwQTIsMiAwIDAsMCAyMiwxNVYxM0EyLDIgMCAwLDAgMjAsMTFIMThWOUgyMlY3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhJbnRlZ3JhbCA9IFwiTTExLjUgMTkuMUMxMS4zIDIwLjIgMTAuOSAyMSAxMC4yIDIxLjVDOS41IDIyIDguNiAyMi4xIDcuNSAyMS45QzcuMSAyMS44IDYuMyAyMS43IDYgMjEuNUw2LjUgMjBDNi44IDIwLjEgNy40IDIwLjMgNy43IDIwLjNDOC44IDIwLjUgOS40IDIwIDkuNiAxOC44TDEyIDUuMkMxMi4yIDQgMTIuNyAzLjIgMTMuNCAyLjZDMTQuMSAyLjEgMTUuMSAxLjkgMTYuMiAyLjFDMTYuNiAyLjIgMTcuNCAyLjMgMTggMi42TDE3LjUgNEMxNy4zIDMuOSAxNi42IDMuOCAxNi4zIDMuN0MxNSAzLjUgMTQuMyA0LjEgMTQgNS42TDExLjUgMTkuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoSW50ZWdyYWxCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTUuOSA2LjlDMTUuOSA2LjkgMTUuMiA2LjYgMTQuOSA2LjZDMTQuMyA2LjUgMTMuOSA2LjcgMTMuNyA3LjdMMTIgMTYuOEMxMS44IDE3LjYgMTEuNSAxOC4yIDExIDE4LjZDMTAuNiAxOC45IDEwLjIgMTkgOS43IDE5QzguOSAxOSA3LjcgMTguNSA3LjcgMTguNUw4LjIgMTcuMUM4LjIgMTcuMSA5IDE3LjQgOS4yIDE3LjRDOS41IDE3LjUgOS43IDE3LjQgOS45IDE3LjNDMTAuMSAxNy4yIDEwLjIgMTYuOSAxMC4zIDE2LjZMMTEuOSA3LjRDMTIgNi42IDEyLjQgNiAxMi45IDUuNUMxMy41IDUuMSAxNC4yIDUgMTUgNS4xQzE1LjcgNS4yIDE2LjUgNS42IDE2LjUgNS42TDE1LjkgNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhMb2cgPSBcIk0xOCA3QzE2LjkgNyAxNiA3LjkgMTYgOVYxNUMxNiAxNi4xIDE2LjkgMTcgMTggMTdIMjBDMjEuMSAxNyAyMiAxNi4xIDIyIDE1VjExSDIwVjE1SDE4VjlIMjJWN0gxOE0yIDdWMTdIOFYxNUg0VjdIMk0xMSA3QzkuOSA3IDkgNy45IDkgOVYxNUM5IDE2LjEgOS45IDE3IDExIDE3SDEzQzE0LjEgMTcgMTUgMTYuMSAxNSAxNVY5QzE1IDcuOSAxNC4xIDcgMTMgN0gxMU0xMSA5SDEzVjE1SDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0aE5vcm0gPSBcIk0xNCAyMVYzSDE2VjIxSDE0TTggMjFWM0gxMFYyMUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhOb3JtQm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTEwIDE4SDhWNkgxMFYxOE0xNiAxOEgxNFY2SDE2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhTaW4gPSBcIk00LDdBMiwyIDAgMCwwIDIsOVYxMUEyLDIgMCAwLDAgNCwxM0g2VjE1SDJWMTdINkEyLDIgMCAwLDAgOCwxNVYxM0EyLDIgMCAwLDAgNiwxMUg0VjlIOFY3SDRNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE0xNiw3VjE3SDE4VjEyTDIwLDE3SDIyVjdIMjBWMTJMMTgsN0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoVGFuID0gXCJNMiw3VjlINFYxN0g2VjlIOFY3SDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5TTE2LDdWMTdIMThWMTJMMjAsMTdIMjJWN0gyMFYxMkwxOCw3SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdHJpeCA9IFwiTTIsMkg2VjRINFYyMEg2VjIySDJWMk0yMCw0SDE4VjJIMjJWMjJIMThWMjBIMjBWNE05LDVIMTBWMTBIMTFWMTFIOFYxMEg5VjZMOCw2LjVWNS41TDksNU0xNSwxM0gxNlYxOEgxN1YxOUgxNFYxOEgxNVYxNEwxNCwxNC41VjEzLjVMMTUsMTNNOSwxM0MxMC4xLDEzIDExLDE0LjM0IDExLDE2QzExLDE3LjY2IDEwLjEsMTkgOSwxOUM3LjksMTkgNywxNy42NiA3LDE2QzcsMTQuMzQgNy45LDEzIDksMTNNOSwxNEM4LjQ1LDE0IDgsMTQuOSA4LDE2QzgsMTcuMSA4LjQ1LDE4IDksMThDOS41NSwxOCAxMCwxNy4xIDEwLDE2QzEwLDE0LjkgOS41NSwxNCA5LDE0TTE1LDVDMTYuMSw1IDE3LDYuMzQgMTcsOEMxNyw5LjY2IDE2LjEsMTEgMTUsMTFDMTMuOSwxMSAxMyw5LjY2IDEzLDhDMTMsNi4zNCAxMy45LDUgMTUsNU0xNSw2QzE0LjQ1LDYgMTQsNi45IDE0LDhDMTQsOS4xIDE0LjQ1LDEwIDE1LDEwQzE1LjU1LDEwIDE2LDkuMSAxNiw4QzE2LDYuOSAxNS41NSw2IDE1LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVkYWwgPSBcIk0yMCwySDRWNEw5LjgxLDguMzZDNi4xNCw5LjU3IDQuMTQsMTMuNTMgNS4zNSwxNy4yQzYuNTYsMjAuODcgMTAuNSwyMi44NyAxNC4xOSwyMS42NkMxNy44NiwyMC40NSAxOS44NiwxNi41IDE4LjY1LDEyLjgyQzE3Ljk1LDEwLjcxIDE2LjMsOS4wNSAxNC4xOSw4LjM2TDIwLDRWMk0xNC45NCwxOS41TDEyLDE3Ljc4TDkuMDYsMTkuNUw5Ljg0LDE2LjE3TDcuMjUsMTMuOTNMMTAuNjYsMTMuNjRMMTIsMTAuNUwxMy4zNCwxMy42NEwxNi43NSwxMy45M0wxNC4xNiwxNi4xN0wxNC45NCwxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lZGFsT3V0bGluZSA9IFwiTTE0Ljk0IDE5LjVMMTIgMTcuNzdMOS4wNiAxOS41TDkuODQgMTYuMTZMNy4yNSAxMy45MkwxMC42NiAxMy42M0wxMiAxMC41TDEzLjM0IDEzLjYzTDE2Ljc1IDEzLjkyTDE0LjE2IDE2LjE2TTIwIDJINFY0TDguODYgNy42NEE4IDggMCAxIDAgMTUuMTQgNy42NEwyMCA0TTE4IDE1QTYgNiAwIDEgMSAxMC44MiA5LjEyQTUuODYgNS44NiAwIDAgMSAxMy4xOCA5LjEyQTYgNiAwIDAgMSAxOCAxNU0xMi42MyA3SDExLjM3TDcuMzcgNEgxNi43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZWRpY2FsQmFnID0gXCJNMTAsM0w4LDVWN0g1QzMuODUsNyAzLjEyLDggMyw5TDIsMTlDMS44OCwyMCAyLjU0LDIxIDQsMjFIMjBDMjEuNDYsMjEgMjIuMTIsMjAgMjIsMTlMMjEsOUMyMC44OCw4IDIwLjA2LDcgMTksN0gxNlY1TDE0LDNIMTBNMTAsNUgxNFY3SDEwVjVNMTEsMTBIMTNWMTNIMTZWMTVIMTNWMThIMTFWMTVIOFYxM0gxMVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZWRpdGF0aW9uID0gXCJNMTIgNEMxMy4xMSA0IDE0IDQuODkgMTQgNlMxMy4xMSA4IDEyIDggMTAgNy4xMSAxMCA2IDEwLjkgNCAxMiA0TTIxIDE2VjE0QzE4Ljc2IDE0IDE2Ljg0IDEzLjA0IDE1LjQgMTEuMzJMMTQuMDYgOS43MkMxMy42OCA5LjI2IDEzLjEyIDkgMTIuNTMgOUgxMS41QzEwLjg5IDkgMTAuMzMgOS4yNiA5Ljk1IDkuNzJMOC42MSAxMS4zMkM3LjE2IDEzLjA0IDUuMjQgMTQgMyAxNFYxNkM1Ljc3IDE2IDguMTkgMTQuODMgMTAgMTIuNzVWMTVMNi4xMiAxNi41NUM1LjQ1IDE2LjgyIDUgMTcuNSA1IDE4LjIxQzUgMTkuMiA1LjggMjAgNi43OSAyMEg5VjE5LjVDOSAxOC4xMiAxMC4xMiAxNyAxMS41IDE3SDE0LjVDMTQuNzggMTcgMTUgMTcuMjIgMTUgMTcuNVMxNC43OCAxOCAxNC41IDE4SDExLjVDMTAuNjcgMTggMTAgMTguNjcgMTAgMTkuNVYyMEgxNy4yMUMxOC4yIDIwIDE5IDE5LjIgMTkgMTguMjFDMTkgMTcuNSAxOC41NSAxNi44MiAxNy44OCAxNi41NUwxNCAxNVYxMi43NUMxNS44MSAxNC44MyAxOC4yMyAxNiAyMSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW1vcnkgPSBcIk0xNywxN0g3VjdIMTdNMjEsMTFWOUgxOVY3QzE5LDUuODkgMTguMSw1IDE3LDVIMTVWM0gxM1Y1SDExVjNIOVY1SDdDNS44OSw1IDUsNS44OSA1LDdWOUgzVjExSDVWMTNIM1YxNUg1VjE3QTIsMiAwIDAsMCA3LDE5SDlWMjFIMTFWMTlIMTNWMjFIMTVWMTlIMTdBMiwyIDAgMCwwIDE5LDE3VjE1SDIxVjEzSDE5VjExTTEzLDEzSDExVjExSDEzTTE1LDlIOVYxNUgxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnUgPSBcIk0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51RG93biA9IFwiTTcsMTBMMTIsMTVMMTcsMTBIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51RG93bk91dGxpbmUgPSBcIk0xOCw5VjEwLjVMMTIsMTYuNUw2LDEwLjVWOUgxOE0xMiwxMy42N0wxNC42NywxMUg5LjMzTDEyLDEzLjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVMZWZ0ID0gXCJNMTQsN0w5LDEyTDE0LDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudUxlZnRPdXRsaW5lID0gXCJNMTUsMThIMTMuNUw3LjUsMTJMMTMuNSw2SDE1VjE4TTEwLjMzLDEyTDEzLDE0LjY3VjkuMzNMMTAuMzMsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudU9wZW4gPSBcIk0yMSwxNS42MUwxOS41OSwxN0wxNC41OCwxMkwxOS41OSw3TDIxLDguMzlMMTcuNDQsMTJMMjEsMTUuNjFNMyw2SDE2VjhIM1Y2TTMsMTNWMTFIMTNWMTNIM00zLDE4VjE2SDE2VjE4SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudVJpZ2h0ID0gXCJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51UmlnaHRPdXRsaW5lID0gXCJNOSw2SDEwLjVMMTYuNSwxMkwxMC41LDE4SDlWNk0xMy42NywxMkwxMSw5LjMzVjE0LjY3TDEzLjY3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVTd2FwID0gXCJNMTIsNkw3LDExSDE3TDEyLDZNNywxM0wxMiwxOEwxNywxM0g3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVTd2FwT3V0bGluZSA9IFwiTTEyLDMuNUw2LDkuNVYxMUgxOFY5LjVMMTIsMy41TTEyLDYuMzNMMTQuNjcsOUg5LjMzTDEyLDYuMzNNNiwxM1YxNC41TDEyLDIwLjVMMTgsMTQuNVYxM0g2TTkuMzMsMTVIMTQuNjdMMTIsMTcuNjdMOS4zMywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51VXAgPSBcIk03LDE1TDEyLDEwTDE3LDE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudVVwT3V0bGluZSA9IFwiTTE4LDE2VjE0LjVMMTIsOC41TDYsMTQuNVYxNkgxOE0xMiwxMS4zM0wxNC42NywxNEg5LjMzTDEyLDExLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lcmdlID0gXCJNOCAxN0wxMiAxM0gxNS4yQzE1LjYgMTQuMiAxNi43IDE1IDE4IDE1QzE5LjcgMTUgMjEgMTMuNyAyMSAxMlMxOS43IDkgMTggOUMxNi43IDkgMTUuNiA5LjggMTUuMiAxMUgxMkw4IDdWM0gzVjhINkwxMC4yIDEyTDYgMTZIM1YyMUg4VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2UgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QzIyLDIuODkgMjEuMSwyIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFsZXJ0ID0gXCJNMTMgMTFIMTFWNUgxM00xMyAxNUgxMVYxM0gxM00yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VBbGVydE91dGxpbmUgPSBcIk0xMywxMEgxMVY2SDEzVjEwTTEzLDEySDExVjE0SDEzVjEyTTIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDZMMiwyMlY0QTIsMiAwIDAsMSA0LDJIMjBBMiwyIDAgMCwxIDIyLDRNMjAsNEg0VjE3LjJMNS4yLDE2SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93TGVmdCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTYgMTFIMTEuNUwxMy4zIDEyLjhMMTIgMTRMOCAxMEwxMiA2TDEzLjIgNy4yTDExLjUgOUgxNlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQXJyb3dMZWZ0T3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMTZINS4yTDQgMTcuMlY0SDIwVjE2TTE2IDExVjlIMTEuNUwxMy4zIDcuMkwxMiA2TDggMTBMMTIgMTRMMTMuMiAxMi44TDExLjUgMTFIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93UmlnaHQgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0TDEwLjggMTIuOEwxMi42IDExSDhWOUgxMi41TDEwLjcgNy4yTDEyIDZMMTYgMTBMMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93UmlnaHRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNOCA5VjExSDEyLjVMMTAuNyAxMi44TDEyIDE0TDE2IDEwTDEyIDZMMTAuOCA3LjJMMTIuNSA5SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUJvb2ttYXJrID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0xOSAxM0wxNi41IDExLjVMMTQgMTNWNUgxOVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQm9va21hcmtPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTggMTRWNkgxM1YxNEwxNS41IDEyLjVMMTggMTRcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQnVsbGV0ZWQgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTgsMTRINlYxMkg4VjE0TTgsMTFINlY5SDhWMTFNOCw4SDZWNkg4VjhNMTUsMTRIMTBWMTJIMTVWMTRNMTgsMTFIMTBWOUgxOFYxMU0xOCw4SDEwVjZIMThWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQnVsbGV0ZWRPZmYgPSBcIk0xLjI3LDEuNzNMMCwzTDIsNVYyMkw2LDE4SDE1TDIwLjczLDIzLjczTDIyLDIyLjQ2TDEuMjcsMS43M004LDE0SDZWMTJIOFYxNE02LDExVjlMOCwxMUg2TTIwLDJINC4wOEwxMCw3LjkyVjZIMThWOEgxMC4wOEwxMS4wOCw5SDE4VjExSDEzLjA4TDIwLjA3LDE4QzIxLjE0LDE3Ljk1IDIyLDE3LjA4IDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUNvZyA9IFwiTTEzLjUsMTBBMS41LDEuNSAwIDAsMSAxMiwxMS41QzExLjE2LDExLjUgMTAuNSwxMC44MyAxMC41LDEwQTEuNSwxLjUgMCAwLDEgMTIsOC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxME0yMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEg2TDIsMjJWNEEyLDIgMCAwLDEgNCwySDIwQTIsMiAwIDAsMSAyMiw0TTE2Ljc3LDExLjMyTDE1LjcsMTAuNUMxNS43MSwxMC4zMyAxNS43MSwxMC4xNiAxNS43LDEwQzE1LjcyLDkuODQgMTUuNzIsOS42NyAxNS43LDkuNUwxNi43Niw4LjY4QzE2Ljg1LDguNiAxNi44OCw4LjQ3IDE2LjgyLDguMzZMMTUuODIsNi42M0MxNS43Niw2LjUgMTUuNjMsNi40NyAxNS41LDYuNUwxNC4yNyw3QzE0LDYuOCAxMy43Myw2LjYzIDEzLjQyLDYuNUwxMy4yMyw1LjE5QzEzLjIxLDUuMDggMTMuMTEsNSAxMyw1SDExQzEwLjg4LDUgMTAuNzcsNS4wOSAxMC43NSw1LjIxTDEwLjU2LDYuNTNDMTAuMjYsNi42NSA5Ljk3LDYuODEgOS43LDdMOC40Niw2LjVDOC4zNCw2LjQ2IDguMjEsNi41IDguMTUsNi42MUw3LjE1LDguMzRDNy4wOSw4LjQ1IDcuMTEsOC41OCA3LjIxLDguNjZMOC4yNyw5LjVDOC4yMyw5LjgyIDguMjMsMTAuMTYgOC4yNywxMC41TDcuMjEsMTEuMzJDNy4xMiwxMS40IDcuMDksMTEuNTMgNy4xNSwxMS42NEw4LjE1LDEzLjM3QzguMjEsMTMuNSA4LjM0LDEzLjUzIDguNDYsMTMuNUw5LjcsMTNDOS45NiwxMy4yIDEwLjI0LDEzLjM3IDEwLjU1LDEzLjVMMTAuNzQsMTQuODFDMTAuNzcsMTQuOTMgMTAuODgsMTUgMTEsMTVIMTNDMTMuMTIsMTUgMTMuMjMsMTQuOTEgMTMuMjUsMTQuNzlMMTMuNDQsMTMuNDdDMTMuNzQsMTMuMzQgMTQsMTMuMTggMTQuMjgsMTNMMTUuNTMsMTMuNUMxNS42NSwxMy41IDE1Ljc4LDEzLjUgMTUuODQsMTMuMzdMMTYuODQsMTEuNjRDMTYuOSwxMS41MyAxNi44NywxMS40IDE2Ljc3LDExLjMyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VDb2dPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTYuOCAxMS4zTDE1LjcgMTAuNVYxMCA5LjVMMTYuOCA4LjdDMTYuOSA4LjYgMTYuOSA4LjUgMTYuOSA4LjRMMTUuOSA2LjdDMTUuOCA2LjYgMTUuNyA2LjUgMTUuNiA2LjZMMTQuMyA3QzE0IDYuOCAxMy44IDYuNiAxMy40IDYuNUwxMy4yIDUuMkMxMy4yIDUuMSAxMy4xIDUgMTMgNUgxMUMxMC45IDUgMTAuOCA1LjEgMTAuOCA1LjJMMTAuNiA2LjVDMTAuMyA2LjcgMTAgNi44IDkuNyA3TDguNSA2LjVDOC40IDYuNSA4LjMgNi41IDguMiA2LjZMNy4yIDguM0M3LjEgOC40IDcuMiA4LjUgNy4zIDguNkw4LjQgOS40VjEwLjRMNy4zIDExLjJDNy4yIDExLjMgNy4yIDExLjQgNy4yIDExLjVMOC4yIDEzLjJDOC4zIDEzLjMgOC40IDEzLjQgOC41IDEzLjNMOS43IDEzQzEwIDEzLjIgMTAuMiAxMy40IDEwLjUgMTMuNUwxMC43IDE0LjhDMTAuNyAxNC45IDEwLjggMTUgMTEgMTVIMTNDMTMuMSAxNSAxMy4yIDE0LjkgMTMuMiAxNC44TDEzLjQgMTMuNUMxMy43IDEzLjQgMTQgMTMuMiAxNC4yIDEzTDE1LjQgMTMuNUMxNS41IDEzLjUgMTUuNiAxMy41IDE1LjcgMTMuNEwxNi43IDExLjdDMTYuOSAxMS41IDE2LjkgMTEuNCAxNi44IDExLjNNMTIgMTEuNUMxMS4yIDExLjUgMTAuNSAxMC44IDEwLjUgMTBTMTEuMiA4LjUgMTIgOC41IDEzLjUgOS4yIDEzLjUgMTAgMTIuOCAxMS41IDEyIDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZURyYXcgPSBcIk0xOCwxNEgxMC41TDEyLjUsMTJIMThNNiwxNFYxMS41TDEyLjg4LDQuNjRDMTMuMDcsNC40NSAxMy4zOSw0LjQ1IDEzLjU5LDQuNjRMMTUuMzUsNi40MUMxNS41NSw2LjYxIDE1LjU1LDYuOTIgMTUuMzUsNy4xMkw4LjQ3LDE0TTIwLDJINEEyLDIgMCAwLDAgMiw0VjIyTDYsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRDMjIsMi44OSAyMS4xLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlRmxhc2ggPSBcIk0yMiA0QzIyIDIuOSAyMS4xIDIgMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDE1VjEwSDIyVjRNMjIuNSAxNkgyMC4zTDIyIDEySDE3VjE4SDE5VjIzTDIyLjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUZsYXNoT3V0bGluZSA9IFwiTTQgMTcuMlY0SDIwVjEwSDIyVjRDMjIgMi45IDIxLjEgMiAyMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMTVWMTZINS4yTDQgMTcuMk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlSW1hZ2UgPSBcIk01LDE0TDguNSw5LjVMMTEsMTIuNUwxNC41LDhMMTksMTRNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VJbWFnZU91dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk01IDE0TDguNSA5LjVMMTEgMTIuNUwxNC41IDhMMTkgMTRcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlTG9jayA9IFwiTTIwLjUgMEEyLjUgMi41IDAgMCAwIDE4IDIuNVYzQTEgMSAwIDAgMCAxNyA0VjhBMSAxIDAgMCAwIDE4IDlIMjNBMSAxIDAgMCAwIDI0IDhWNEExIDEgMCAwIDAgMjMgM1YyLjVBMi41IDIuNSAwIDAgMCAyMC41IDBNMjAuNSAxQTEuNSAxLjUgMCAwIDEgMjIgMi41VjNIMTlWMi41QTEuNSAxLjUgMCAwIDEgMjAuNSAxTTQgMkEyIDIgMCAwIDAgMiA0VjIyTDYgMThIMjBBMiAyIDAgMCAwIDIyIDE2VjExSDE3QzE1Ljg5IDExIDE1IDEwLjExIDE1IDlWMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VMb2NrT3V0bGluZSA9IFwiTTIzIDNWMi41QzIzIDEuMSAyMS45IDAgMjAuNSAwUzE4IDEuMSAxOCAyLjVWM0MxNy41IDMgMTcgMy41IDE3IDRWOEMxNyA4LjUgMTcuNSA5IDE4IDlIMjNDMjMuNSA5IDI0IDguNSAyNCA4VjRDMjQgMy41IDIzLjUgMyAyMyAzTTIyIDNIMTlWMi41QzE5IDEuNyAxOS43IDEgMjAuNSAxUzIyIDEuNyAyMiAyLjVWM00yMiAxMVYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThINkwyIDIyVjRDMiAyLjkgMi45IDIgNCAySDE1VjRINFYxNy4yTDUuMiAxNkgyMFYxMUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlTWludXMgPSBcIk0yMCAyQzIxLjExIDIgMjIgMi45IDIyIDRWMTZDMjIgMTcuMTEgMjEuMTEgMTggMjAgMThINkwyIDIyVjRDMiAyLjg5IDIuOSAyIDQgMkgyME04IDlWMTFIMTZWOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VNaW51c091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk04IDlWMTFIMTZWOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VPZmYgPSBcIk0yMC45NSAxNy43NUw1LjIgMkgyMEMyMS4xIDIgMjIgMi44OSAyMiA0VjE2QzIyIDE2Ljc2IDIxLjU3IDE3LjQxIDIwLjk1IDE3Ljc1TTIuMzkgMS43M0wxLjExIDNMMiAzLjlDMiAzLjkzIDIgMy45NyAyIDRWMjJMNiAxOEgxNi4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZU9mZk91dGxpbmUgPSBcIk03LjIgNEw1LjIgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE2Ljc2IDIxLjU3IDE3LjQxIDIwLjk1IDE3Ljc1TDE5LjIgMTZIMjBWNEg3LjJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTYuMTEgMThINkwyIDIyVjRDMiAzLjk3IDIgMy45MyAyIDMuOUwxLjExIDNMMi4zOSAxLjczTDYuMSA1LjQ0TDE2LjY1IDE2SDE2LjY2TDE4LjY2IDE4SDE4LjY1TDIyLjExIDIxLjQ2TTE0LjExIDE2TDQgNS44OVYxOEw2IDE2SDE0LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVBsdXMgPSBcIk0yMCwyQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEg2TDIsMjJWNEMyLDIuODkgMi45LDIgNCwySDIwTTExLDZWOUg4VjExSDExVjE0SDEzVjExSDE2VjlIMTNWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUGx1c091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk0xNiA5VjExSDEzVjE0SDExVjExSDhWOUgxMVY2SDEzVjlIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVByb2Nlc3NpbmcgPSBcIk0xNywxMUgxNVY5SDE3TTEzLDExSDExVjlIMTNNOSwxMUg3VjlIOU0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QzIyLDIuODkgMjEuMSwyIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVByb2Nlc3NpbmdPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTcgMTFIMTVWOUgxN00xMyAxMUgxMVY5SDEzTTkgMTFIN1Y5SDlcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUXVlc3Rpb24gPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEzIDE0SDExVjEySDEzVjE0TTE0LjggOUMxNC41IDkuNCAxNC4xIDkuNiAxMy43IDkuOEMxMy40IDEwIDEzLjMgMTAuMSAxMy4yIDEwLjNDMTMgMTAuNSAxMyAxMC43IDEzIDExSDExQzExIDEwLjUgMTEuMSAxMC4yIDExLjMgOS45QzExLjUgOS43IDExLjkgOS40IDEyLjQgOS4xQzEyLjcgOSAxMi45IDguOCAxMyA4LjZDMTMuMSA4LjQgMTMuMiA4LjEgMTMuMiA3LjlDMTMuMiA3LjYgMTMuMSA3LjQgMTIuOSA3LjJDMTIuNyA3IDEyLjQgNi45IDEyLjEgNi45QzExLjggNi45IDExLjYgNyAxMS40IDcuMUMxMS4yIDcuMiAxMS4xIDcuNCAxMS4xIDcuN0g5LjFDOS4yIDcgOS41IDYuNCAxMCA2QzEwLjUgNS42IDExLjIgNS41IDEyLjEgNS41QzEzIDUuNSAxMy44IDUuNyAxNC4zIDYuMUMxNC44IDYuNSAxNS4xIDcuMSAxNS4xIDcuOEMxNS4yIDguMiAxNS4xIDguNiAxNC44IDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVF1ZXN0aW9uT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMTZINS4yTDQgMTcuMlY0SDIwVjE2TTEyLjIgNS41QzExLjMgNS41IDEwLjYgNS43IDEwLjEgNkM5LjUgNi40IDkuMiA3IDkuMyA3LjdIMTEuM0MxMS4zIDcuNCAxMS40IDcuMiAxMS42IDcuMUMxMS44IDcgMTIgNi45IDEyLjMgNi45QzEyLjYgNi45IDEyLjkgNyAxMy4xIDcuMkMxMy4zIDcuNCAxMy40IDcuNiAxMy40IDcuOUMxMy40IDguMiAxMy4zIDguNCAxMy4yIDguNkMxMyA4LjggMTIuOCA5IDEyLjYgOS4xQzEyLjEgOS40IDExLjcgOS43IDExLjUgOS45QzExLjEgMTAuMiAxMSAxMC41IDExIDExSDEzQzEzIDEwLjcgMTMuMSAxMC41IDEzLjEgMTAuM0MxMy4yIDEwLjEgMTMuNCAxMCAxMy42IDkuOEMxNC4xIDkuNiAxNC40IDkuMyAxNC43IDguOUMxNSA4LjUgMTUuMSA4LjEgMTUuMSA3LjdDMTUuMSA3IDE0LjggNi40IDE0LjMgNkMxMy45IDUuNyAxMy4xIDUuNSAxMi4yIDUuNU0xMSAxMlYxNEgxM1YxMkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUmVwbHkgPSBcIk0yMiw0QzIyLDIuODkgMjEuMSwyIDIwLDJINEEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDE4TDIyLDIyVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVJlcGx5T3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDE4TDIyIDIyVjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE3LjJMMTguOCAxNkg0VjRIMjBWMTcuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUmVwbHlUZXh0ID0gXCJNMTgsOEg2VjZIMThWOE0xOCwxMUg2VjlIMThWMTFNMTgsMTRINlYxMkgxOFYxNE0yMiw0QTIsMiAwIDAsMCAyMCwySDRBMiwyIDAgMCwwIDIsNFYxNkEyLDIgMCAwLDAgNCwxOEgxOEwyMiwyMlY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VSZXBseVRleHRPdXRsaW5lID0gXCJNOSAxMUgxOFYxM0g5VjExTTE4IDdINlY5SDE4VjdNMjIgNFYyMkwxOCAxOEg0QzIuOSAxOCAyIDE3LjExIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuODkgMjIgNE0yMCA0SDRWMTZIMTguODNMMjAgMTcuMTdWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlU2V0dGluZ3MgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTExLDI0SDEzVjIySDExVjI0TTcsMjRIOVYyMkg3VjI0TTE1LDI0SDE3VjIySDE1VjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VTZXR0aW5nc091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk0xMSAyNEgxM1YyMkgxMVYyNE03IDI0SDlWMjJIN1YyNE0xNSAyNEgxN1YyMkgxNVYyNFwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0ID0gXCJNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMk02LDlIMThWMTFINk0xNCwxNEg2VjEySDE0TTE4LDhINlY2SDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVRleHRDbG9jayA9IFwiTTIyIDEyLjQxVjRDMjIgMi45IDIxLjExIDIgMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDkuMjlDMTAuMTUgMjAuODkgMTIuODMgMjMgMTYgMjNDMTkuODYgMjMgMjMgMTkuODcgMjMgMTZDMjMgMTQuNjkgMjIuNjMgMTMuNDYgMjIgMTIuNDFNNiA2SDE4VjhINlY2TTE2IDlDMTQuMSA5IDEyLjM3IDkuNzcgMTEuMTEgMTFINlY5SDE2TTYgMTJIMTAuMjZDOS44NCAxMi42IDkuNSAxMy4yOCA5LjMgMTRINlYxMk0xNiAyMC44NUMxMy4zMiAyMC44NSAxMS4xNSAxOC42OCAxMS4xNSAxNlMxMy4zMiAxMS4xNSAxNiAxMS4xNUMxOC42NyAxMS4xNSAyMC44NSAxMy4zMiAyMC44NSAxNlMxOC42NyAyMC44NSAxNiAyMC44NU0xNi41IDE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzSDE2LjVWMTUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVRleHRDbG9ja091dGxpbmUgPSBcIk0yMiAxMi40MVY0QzIyIDIuOSAyMS4xMSAyIDIwIDJINEMyLjkgMiAyIDIuODkgMiA0VjIyTDYgMThIOS4yOUMxMC4xNSAyMC44OSAxMi44MyAyMyAxNiAyM0MxOS44NiAyMyAyMyAxOS44NyAyMyAxNkMyMyAxNC42OSAyMi42MyAxMy40NiAyMiAxMi40MU01LjE3IDE2TDQgMTcuMTdWNEgyMFYxMC4yNkMxOC44NiA5LjQ3IDE3LjUgOSAxNiA5QzE0LjEgOSAxMi4zNyA5Ljc3IDExLjExIDExSDZWMTNIOS42OUM5LjI1IDEzLjkxIDkgMTQuOTMgOSAxNkg1LjE3TTE2IDIwLjg1QzEzLjMyIDIwLjg1IDExLjE1IDE4LjY4IDExLjE1IDE2UzEzLjMyIDExLjE1IDE2IDExLjE1QzE4LjY3IDExLjE1IDIwLjg1IDEzLjMyIDIwLjg1IDE2UzE4LjY3IDIwLjg1IDE2IDIwLjg1TTE4IDlINlY3SDE4VjlNMTYuNSAxNS44MkwxOC45NCAxNy4yM0wxOC4xOSAxOC41M0wxNSAxNi42OVYxM0gxNi41VjE1LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0TG9jayA9IFwiTTIwLjUgMEEyLjUgMi41IDAgMCAwIDE4IDIuNVYzQTEgMSAwIDAgMCAxNyA0VjhBMSAxIDAgMCAwIDE4IDlIMjNBMSAxIDAgMCAwIDI0IDhWNEExIDEgMCAwIDAgMjMgM1YyLjVBMi41IDIuNSAwIDAgMCAyMC41IDBNMjAuNSAxQTEuNSAxLjUgMCAwIDEgMjIgMi41VjNIMTlWMi41QTEuNSAxLjUgMCAwIDEgMjAuNSAxTTQgMkEyIDIgMCAwIDAgMiA0VjIyTDYgMThIMjBBMiAyIDAgMCAwIDIyIDE2VjExSDE3QzE1Ljg5IDExIDE1IDEwLjExIDE1IDlWMkg0TTYgNkgxM1Y4SDZWNk02IDlIMTNWMTFINlY5TTYgMTJIMTRWMTRINlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlVGV4dExvY2tPdXRsaW5lID0gXCJNMjMgM1YyLjVDMjMgMS4xMiAyMS44OCAwIDIwLjUgMFMxOCAxLjEyIDE4IDIuNVYzQzE3LjQ1IDMgMTcgMy40NSAxNyA0VjhDMTcgOC41NSAxNy40NSA5IDE4IDlIMjNDMjMuNTUgOSAyNCA4LjU1IDI0IDhWNEMyNCAzLjQ1IDIzLjU1IDMgMjMgM00yMiAzSDE5VjIuNUMxOSAxLjY3IDE5LjY3IDEgMjAuNSAxUzIyIDEuNjcgMjIgMi41VjNNNiAxMUgxNVYxM0g2VjExTTYgN0gxNVY5SDZWN00yMiAxMVYxNkMyMiAxNy4xMSAyMS4xMSAxOCAyMCAxOEg2TDIgMjJWNEMyIDIuODkgMi45IDIgNCAySDE1VjRINFYxNy4xN0w1LjE3IDE2SDIwVjExSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0T3V0bGluZSA9IFwiTTIwLDJBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDZMMiwyMlY0QzIsMi44OSAyLjksMiA0LDJIMjBNNCw0VjE3LjE3TDUuMTcsMTZIMjBWNEg0TTYsN0gxOFY5SDZWN002LDExSDE1VjEzSDZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVZpZGVvID0gXCJNMTgsMTRMMTQsMTAuOFYxNEg2VjZIMTRWOS4yTDE4LDZNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1ldGVvciA9IFwiTTIuOCwzTDE5LjY3LDE4LjgyQzE5LjY3LDE4LjgyIDIwLDE5LjI3IDE5LjU4LDE5LjcxQzE5LjE3LDIwLjE1IDE4LjYzLDE5Ljc3IDE4LjYzLDE5Ljc3TDIuOCwzTTcuODEsNC41OUwyMC45MSwxNi42NEMyMC45MSwxNi42NCAyMS4yMywxNy4wOCAyMC44MiwxNy41QzIwLjQsMTcuOTcgMTkuODYsMTcuNTkgMTkuODYsMTcuNTlMNy44MSw0LjU5TTQuMjksOEwxNy4zOSwyMC4wM0MxNy4zOSwyMC4wMyAxNy43MSwyMC40NyAxNy4zLDIwLjkxQzE2Ljg4LDIxLjM2IDE2LjM0LDIxIDE2LjM0LDIxTDQuMjksOE0xMi4wNSw1Ljk2TDIxLjIsMTQuMzdDMjEuMiwxNC4zNyAyMS40MiwxNC42OCAyMS4xMywxNUMyMC44NSwxNS4zIDIwLjQ3LDE1LjAzIDIwLjQ3LDE1LjAzTDEyLjA1LDUuOTZNNS40NSwxMS45MUwxNC42LDIwLjMzQzE0LjYsMjAuMzMgMTQuODIsMjAuNjQgMTQuNTQsMjAuOTVDMTQuMjUsMjEuMjYgMTMuODcsMjEgMTMuODcsMjFMNS40NSwxMS45MU0xNi4zOCw3LjkyTDIwLjU1LDExLjc0QzIwLjU1LDExLjc0IDIwLjY2LDExLjg4IDIwLjUsMTIuMDNDMjAuMzgsMTIuMTcgMjAuMTksMTIuMDUgMjAuMTksMTIuMDVMMTYuMzgsNy45Mk03LjU2LDE2LjFMMTEuNzQsMTkuOTFDMTEuNzQsMTkuOTEgMTEuODUsMjAuMDYgMTEuNywyMC4yQzExLjU2LDIwLjM1IDExLjM3LDIwLjIyIDExLjM3LDIwLjIyTDcuNTYsMTYuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXRyb25vbWUgPSBcIk0xMiwxLjc1TDguNTcsMi42N0w0LjA2LDE5LjUzQzQuMDMsMTkuNjggNCwxOS44NCA0LDIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE4QzE5LjExLDIyIDIwLDIxLjExIDIwLDIwQzIwLDE5Ljg0IDE5Ljk3LDE5LjY4IDE5Ljk0LDE5LjUzTDE4LjU4LDE0LjQyTDE3LDE2TDE3LjIsMTdIMTMuNDFMMTYuMjUsMTQuMTZMMTQuODQsMTIuNzVMMTAuNTksMTdINi44TDEwLjI5LDRIMTMuNzFMMTUuMTcsOS40M0wxNi44LDcuNzlMMTUuNDMsMi42N0wxMiwxLjc1TTExLjI1LDVWMTQuNzVMMTIuNzUsMTMuMjVWNUgxMS4yNU0xOS43OSw3LjhMMTYuOTYsMTAuNjNMMTYuMjUsOS45MkwxNC44NCwxMS4zNEwxNy42NiwxNC4xNkwxOS4wOCwxMi43NUwxOC4zNywxMi4wNEwyMS4yLDkuMjFMMTkuNzksNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1ldHJvbm9tZVRpY2sgPSBcIk0xMiwxLjc1TDguNTcsMi42N0w0LjA3LDE5LjVDNC4wNiwxOS41IDQsMTkuODQgNCwyMEM0LDIxLjExIDQuODksMjIgNiwyMkgxOEMxOS4xMSwyMiAyMCwyMS4xMSAyMCwyMEMyMCwxOS44NCAxOS45NCwxOS41IDE5LjkzLDE5LjVMMTUuNDMsMi42N0wxMiwxLjc1TTEwLjI5LDRIMTMuNzFMMTcuMiwxN0gxM1YxMkgxMVYxN0g2LjhMMTAuMjksNE0xMSw1VjlIMTBWMTFIMTRWOUgxM1Y1SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvU2QgPSBcIk04LDJBMiwyIDAgMCwwIDYsNFYxMUw0LDEzVjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwySDhNOSw0SDExVjhIOVY0TTEyLDRIMTRWOEgxMlY0TTE1LDRIMTdWOEgxNVY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmUgPSBcIk0xMiwyQTMsMyAwIDAsMSAxNSw1VjExQTMsMyAwIDAsMSAxMiwxNEEzLDMgMCAwLDEgOSwxMVY1QTMsMyAwIDAsMSAxMiwyTTE5LDExQzE5LDE0LjUzIDE2LjM5LDE3LjQ0IDEzLDE3LjkzVjIxSDExVjE3LjkzQzcuNjEsMTcuNDQgNSwxNC41MyA1LDExSDdBNSw1IDAgMCwwIDEyLDE2QTUsNSAwIDAsMCAxNywxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3Bob25lTWludXMgPSBcIk05LDJBMywzIDAgMCwxIDEyLDVWMTFBMywzIDAgMCwxIDksMTRBMywzIDAgMCwxIDYsMTFWNUEzLDMgMCAwLDEgOSwyTTE2LDExQzE2LDE0LjUgMTMuNDQsMTcuNDMgMTAsMTcuOTNWMjFIOFYxNy45M0M0LjU2LDE3LjQzIDIsMTQuNSAyLDExSDRBNSw1IDAgMCwwIDksMTZBNSw1IDAgMCwwIDE0LDExSDE2TTE1LDVIMjNWN0gxNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVPZmYgPSBcIk0xOSwxMUMxOSwxMi4xOSAxOC42NiwxMy4zIDE4LjEsMTQuMjhMMTYuODcsMTMuMDVDMTcuMTQsMTIuNDMgMTcuMywxMS43NCAxNy4zLDExSDE5TTE1LDExLjE2TDksNS4xOFY1QTMsMyAwIDAsMSAxMiwyQTMsMyAwIDAsMSAxNSw1VjExTDE1LDExLjE2TTQuMjcsM0wyMSwxOS43M0wxOS43MywyMUwxNS41NCwxNi44MUMxNC43NywxNy4yNyAxMy45MSwxNy41OCAxMywxNy43MlYyMUgxMVYxNy43MkM3LjcyLDE3LjIzIDUsMTQuNDEgNSwxMUg2LjdDNi43LDE0IDkuMjQsMTYuMSAxMiwxNi4xQzEyLjgxLDE2LjEgMTMuNiwxNS45MSAxNC4zMSwxNS41OEwxMi42NSwxMy45MkwxMiwxNEEzLDMgMCAwLDEgOSwxMVYxMC4yOEwzLDQuMjdMNC4yNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVPdXRsaW5lID0gXCJNMTcuMywxMUMxNy4zLDE0IDE0Ljc2LDE2LjEgMTIsMTYuMUM5LjI0LDE2LjEgNi43LDE0IDYuNywxMUg1QzUsMTQuNDEgNy43MiwxNy4yMyAxMSwxNy43MlYyMUgxM1YxNy43MkMxNi4yOCwxNy4yMyAxOSwxNC40MSAxOSwxMU0xMC44LDQuOUMxMC44LDQuMjQgMTEuMzQsMy43IDEyLDMuN0MxMi42NiwzLjcgMTMuMiw0LjI0IDEzLjIsNC45TDEzLjE5LDExLjFDMTMuMTksMTEuNzYgMTIuNjYsMTIuMyAxMiwxMi4zQzExLjM0LDEyLjMgMTAuOCwxMS43NiAxMC44LDExLjFNMTIsMTRBMywzIDAgMCwwIDE1LDExVjVBMywzIDAgMCwwIDEyLDJBMywzIDAgMCwwIDksNVYxMUEzLDMgMCAwLDAgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVBsdXMgPSBcIk05LDJBMywzIDAgMCwxIDEyLDVWMTFBMywzIDAgMCwxIDksMTRBMywzIDAgMCwxIDYsMTFWNUEzLDMgMCAwLDEgOSwyTTE2LDExQzE2LDE0LjUgMTMuNDQsMTcuNDMgMTAsMTcuOTNWMjFIOFYxNy45M0M0LjU2LDE3LjQzIDIsMTQuNSAyLDExSDRBNSw1IDAgMCwwIDksMTZBNSw1IDAgMCwwIDE0LDExSDE2TTE1LDVIMThWMkgyMFY1SDIzVjdIMjBWMTBIMThWN0gxNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVTZXR0aW5ncyA9IFwiTTE5LDEwSDE3LjNDMTcuMywxMyAxNC43NiwxNS4xIDEyLDE1LjFDOS4yNCwxNS4xIDYuNywxMyA2LjcsMTBINUM1LDEzLjQxIDcuNzIsMTYuMjMgMTEsMTYuNzJWMjBIMTNWMTYuNzJDMTYuMjgsMTYuMjMgMTksMTMuNDEgMTksMTBNMTUsMjRIMTdWMjJIMTVNMTEsMjRIMTNWMjJIMTFNMTIsMTNBMywzIDAgMCwwIDE1LDEwVjRBMywzIDAgMCwwIDEyLDFBMywzIDAgMCwwIDksNFYxMEEzLDMgMCAwLDAgMTIsMTNNNywyNEg5VjIySDdWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVZhcmlhbnQgPSBcIk05LDNBNCw0IDAgMCwxIDEzLDdINUE0LDQgMCAwLDEgOSwzTTExLjg0LDkuODJMMTEsMThIMTBWMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOVYxNEE0LDQgMCAwLDEgMTgsMTBIMjBMMTksMTFMMjAsMTJIMThBMiwyIDAgMCwwIDE2LDE0VjE5QTQsNCAwIDAsMSAxMiwyM0E0LDQgMCAwLDEgOCwxOVYxOEg3TDYuMTYsOS44MkM1LjY3LDkuMzIgNS4zMSw4LjcgNS4xMyw4SDEyLjg3QzEyLjY5LDguNyAxMi4zMyw5LjMyIDExLjg0LDkuODJNOSwxMUExLDEgMCAwLDAgOCwxMkExLDEgMCAwLDAgOSwxM0ExLDEgMCAwLDAgMTAsMTJBMSwxIDAgMCwwIDksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVZhcmlhbnRPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE2LDE5LjI2QzE1Ljg2LDIxLjM1IDE0LjEyLDIzIDEyLDIzQTQsNCAwIDAsMSA4LDE5VjE4SDdMNi4xNiw5LjgyQzUuODIsOS40NyA1LjUzLDkuMDYgNS4zMyw4LjZMMiw1LjI3TTksM0E0LDQgMCAwLDEgMTMsN0g4LjgyTDYuMDgsNC4yNkM2LjgxLDMuNSA3Ljg1LDMgOSwzTTExLjg0LDkuODJMMTEuODIsMTBMOS44Miw4SDEyLjg3QzEyLjY5LDguNyAxMi4zMyw5LjMyIDExLjg0LDkuODJNMTEsMThIMTBWMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOVYxNy4yN0wxMS4zNSwxNC42MkwxMSwxOE0xOCwxMEgyMEwxOSwxMUwyMCwxMkgxOEEyLDIgMCAwLDAgMTYsMTRWMTQuMThMMTQuMywxMi41QzE0LjksMTEgMTYuMzMsMTAgMTgsMTBNOCwxMkExLDEgMCAwLDAgOSwxM0M5LjIxLDEzIDkuNCwxMi45NCA5LjU2LDEyLjgzTDguMTcsMTEuNDRDOC4wNiwxMS42IDgsMTEuNzkgOCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3Njb3BlID0gXCJNOS40Niw2LjI4TDExLjA1LDlDOC40Nyw5LjI2IDYuNSwxMS40MSA2LjUsMTRBNSw1IDAgMCwwIDExLjUsMTlDMTMuNTUsMTkgMTUuMzEsMTcuNzcgMTYuMDgsMTZIMTMuNVYxNEgyMS41VjE2SDE5LjI1QzE4Ljg0LDE3LjU3IDE3Ljk3LDE4Ljk2IDE2Ljc5LDIwSDE5LjVWMjJIMy41VjIwSDYuMjFDNC41NSwxOC41MyAzLjUsMTYuMzkgMy41LDE0QzMuNSwxMC4zNyA1Ljk2LDcuMiA5LjQ2LDYuMjhNMTIuNzQsMi4wN0wxMy41LDMuMzdMMTQuMzYsMi44N0wxNy44Niw4LjkzTDE0LjM5LDEwLjkzTDEwLjg5LDQuODdMMTEuNzYsNC4zN0wxMSwzLjA3TDEyLjc0LDIuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0ID0gXCJNMiwzSDExVjEySDJWM00xMSwyMkgyVjEzSDExVjIyTTIxLDNWMTJIMTJWM0gyMU0yMSwyMkgxMlYxM0gyMVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRBY2Nlc3MgPSBcIk0xNC41IDIuNjNRMTUuODQgMi42MyAxNy4xOCAyLjc3TDE3Ljg1IDIuODZRMTguMyAyLjkzIDE4Ljg0IDMuMDQgMTkuMzcgMy4xNSAxOS45MyAzLjMxIDIwLjUgMy40NyAyMC45NiAzLjY5IDIxLjQyIDMuOTEgMjEuNzEgNC4xOSAyMiA0LjQ3IDIyIDQuODFWMTkuMTlRMjIgMTkuNTMgMjEuNzEgMTkuODEgMjEuNDEgMjAuMDkgMjAuOTYgMjAuMzEgMjAuNSAyMC41MyAxOS45MyAyMC42OSAxOS4zNyAyMC44NSAxOC44MyAyMC45NiAxOC4zIDIxLjA3IDE3Ljg2IDIxLjE0IDE3LjQxIDIxLjIxIDE3LjE3IDIxLjIzIDE1Ljg0IDIxLjM4IDE0LjUgMjEuMzggMTMuMTUgMjEuMzggMTEuODIgMjEuMjMgMTEuNTkgMjEuMjEgMTEuMTUgMjEuMTQgMTAuNyAyMS4wNyAxMC4xNiAyMC45NiA5LjYzIDIwLjg1IDkuMDcgMjAuNjkgOC41IDIwLjUzIDguMDUgMjAuMzEgNy41OSAyMC4wOSA3LjI5IDE5LjgxIDcgMTkuNTMgNyAxOS4xOVYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuODFRNyA0LjQ3IDcuMjkgNC4xOSA3LjU5IDMuOTEgOC4wNSAzLjY5IDguNSAzLjQ3IDkuMDcgMy4zMSA5LjYzIDMuMTUgMTAuMTcgMy4wNCAxMC43IDIuOTMgMTEuMTQgMi44NiAxMS41OSAyLjggMTEuODMgMi43NyAxMy4xNSAyLjYzIDE0LjUgMi42M00xNC41IDMuODhRMTMuODcgMy44OCAxMy4wOCAzLjkyIDEyLjMgMy45NiAxMS41IDQuMDcgMTAuNjkgNC4xOCA5LjkzIDQuMzYgOS4xNyA0LjU0IDguNTggNC44MSA5LjE5IDUuMSA5Ljk1IDUuMjggMTAuNyA1LjQ2IDExLjUgNS41NiAxMi4yOSA1LjY2IDEzLjA3IDUuNzEgMTMuODUgNS43NSAxNC41IDUuNzUgMTUuMTYgNS43NSAxNS45MyA1LjcxIDE2LjcxIDUuNjYgMTcuNSA1LjU2IDE4LjMgNS40NiAxOS4wNiA1LjI4IDE5LjgxIDUuMSAyMC40MiA0LjgxIDE5LjgzIDQuNTQgMTkuMDcgNC4zNiAxOC4zMSA0LjE4IDE3LjUgNC4wNyAxNi43IDMuOTYgMTUuOTIgMy45MiAxNS4xNCAzLjg4IDE0LjUgMy44OE01Ljk0IDEzLjc5SDguMDZMOC41NSAxNS4yOEgxMC4yMkw3LjgzIDguNzJINi4yTDMuNzggMTUuMjhINS40NE0yMC43NSAxOVYxNlEyMC4xMSAxNi4zMSAxOS4zMSAxNi41IDE4LjUgMTYuNjggMTcuNjcgMTYuNzkgMTYuODMgMTYuOSAxNiAxNi45NSAxNS4xOSAxNyAxNC41IDE3IDEzLjc5IDE3IDEzLjA4IDE2Ljk2IDEyLjM3IDE2LjkxIDExLjY3IDE2LjgzIDExLjQ0IDE3IDExLjE3IDE3SDguMjVWMTlROC41MyAxOS4yMSA5IDE5LjM4IDkuNSAxOS41NiAxMC4wNyAxOS42OCAxMC42NSAxOS44MSAxMS4yOSAxOS45IDExLjkyIDIwIDEyLjUgMjAuMDMgMTMuMTIgMjAuMDkgMTMuNjQgMjAuMTEgMTQuMTYgMjAuMTMgMTQuNSAyMC4xMyAxNC44NCAyMC4xMiAxNS4zNiAyMC4xIDE1Ljg4IDIwLjA5IDE2LjUgMjAuMDMgMTcuMDggMjAgMTcuNzEgMTkuOSAxOC4zNSAxOS44MSAxOC45MyAxOS42OCAxOS41IDE5LjU2IDIwIDE5LjM4IDIwLjQ3IDE5LjIxIDIwLjc1IDE5TTIwLjc1IDE0LjYzVjExUTIwLjExIDExLjMxIDE5LjMxIDExLjUgMTguNSAxMS42OCAxNy42NyAxMS43OSAxNi44MyAxMS45IDE2IDExLjk1IDE1LjE5IDEyIDE0LjUgMTIgMTMuODggMTIgMTMuMjUgMTEuOTcgMTIuNjMgMTEuOTMgMTIgMTEuODdWMTUuNjJRMTIuNjMgMTUuNjkgMTMuMjUgMTUuNzIgMTMuODggMTUuNzUgMTQuNSAxNS43NSAxNC44NiAxNS43NSAxNS4zOCAxNS43MyAxNS45IDE1LjcxIDE2LjUgMTUuNjYgMTcuMDggMTUuNiAxNy43IDE1LjUgMTguMzMgMTUuNDQgMTguOSAxNS4zMSAxOS41IDE1LjE4IDE5Ljk2IDE1IDIwLjQ1IDE0Ljg1IDIwLjc1IDE0LjYzTTIwLjc1IDkuNjNWNlEyMC4xMSA2LjMxIDE5LjMxIDYuNSAxOC41IDYuNjggMTcuNjcgNi43OSAxNi44MyA2LjkgMTYgNi45NSAxNS4xOSA3IDE0LjUgNyAxMy44MSA3IDEzIDYuOTUgMTIuMTcgNi45IDExLjMzIDYuNzkgMTAuNSA2LjY4IDkuNjkgNi41IDguODkgNi4zMSA4LjI1IDZWN0gxMS4xN1ExMS41IDcgMTEuNzYgNy4yNCAxMiA3LjUgMTIgNy44M1YxMC42MlExMi42MyAxMC42OSAxMy4yNSAxMC43MiAxMy44OCAxMC43NSAxNC41IDEwLjc1IDE0Ljg2IDEwLjc1IDE1LjM4IDEwLjczIDE1LjkgMTAuNzEgMTYuNSAxMC42NiAxNy4wOCAxMC42IDE3LjcgMTAuNSAxOC4zMyAxMC40NCAxOC45IDEwLjMxIDE5LjUgMTAuMTggMTkuOTYgMTAgMjAuNDQgOS44NSAyMC43NSA5LjYzTTYuMzIgMTIuNUw3IDEwLjVMNy42NSAxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdEF6dXJlID0gXCJNMTMuMDUsNC4yNEw2LjU2LDE4LjA1TDIsMThMNy4wOSw5LjI0TDEzLjA1LDQuMjRNMTMuNzUsNS4zM0wyMiwxOS43Nkg2Ljc0TDE2LjA0LDE4LjFMMTEuMTcsMTIuMzFMMTMuNzUsNS4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRBenVyZURldm9wcyA9IFwiTTIyIDE4TDE3IDIyTDkgMTlWMjJMNC44MSAxNi4yNUwxNy43MiAxNy4zVjYuMzRMMjIgNS42NVYxOE00LjgxIDE2LjI1VjguOTZMMTcuNzIgNi4zNEwxMC42IDJWNC44NEwzLjk3IDYuNzZMMiA5LjM4VjE1LjA3TDQuODEgMTYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0QmluZyA9IFwiTTUsM1YxOUw4LjcyLDIxTDE4LDE1LjgyVjExLjczSDE4TDkuNzcsOC45NUwxMS4zOCwxMi44NEwxMy45NCwxNEw4LjcsMTYuOTJWNC4yN0w1LDNcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnREeW5hbWljczM2NSA9IFwiTTYsMkwxNy4yNSw4LjVMMTMuNSwxMS41TDYsOFYyTTYsOUw5LjUsMTEuMjVMNiwyMkwxOCw5VjE1TDYsMjJWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRFZGdlID0gXCJNMTAuODYgMTUuMzdDMTAuMTcgMTQuNiA5LjcgMTMuNjggOS41NSAxMi42NUM5LjI1IDEzLjExIDkgMTMuNjEgOC44MiAxNC4xNUM3LjkgMTYuOSA5LjUgMjAuMzMgMTIuMjIgMjEuMzNDMTQuNTYgMjIuMTEgMTcuMTkgMjAuNzIgMTguOTIgMTkuMkMxOS4xOCAxOC44NSAyMS4yMyAxNy4wNCAyMC4yMSAxNi44NEMxNy4xOSAxOC4zOSAxMy4xOSAxNy45NSAxMC44NiAxNS4zN00xMS40NiA5LjU2QzEyLjUgOS41NSAxMS41IDkuMTMgMTEuMDcgOC44MUMxMC4wMyA4LjI0IDguODEgNy45NiA3LjYzIDcuOTZDMy43OCA4IC45OTUgMTAuNDEgMi4zIDE0LjRDMy4yNCAxOC4yOCA2LjYxIDIxLjQgMTAuNTkgMjEuOUM4LjU0IDIwLjYxIDcuMyAxOC4xOSA3LjMgMTUuNzhDNy4zOCAxMy4yNSA4Ljk0IDEwLjI4IDExLjQ2IDkuNTZNMi43OCA4LjI0QzUuODIgNiAxMC42NiA2LjE4IDEzLjI4IDlDMTQuMyAxMC4xMSAxNSAxMiAxNC4wNyAxMy4zN0MxMi4zMyAxNS4yNSAxNy4xNSAxNS41IDE4LjE4IDE1LjIyQzIxLjkyIDE0LjUgMjIuOTEgMTAuMTUgMjEuMTMgNy4xNUMxOS40MyAzLjc1IDE1LjY2IDEuOTcgMTEuOTYgMkM3LjkgMS45MyA0LjI1IDQuNSAyLjc4IDguMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0RWRnZUxlZ2FjeSA9IFwiTSAyLjczNjc1LDEwLjgwNzdDIDMuODI5MywtMS4zNjEwOSAyMi41MTU3LC0xLjM2MTA5IDIxLjE5NzEsMTMuNTU3OUwgOC42MTM5MiwxMy41NTc5QyA4LjYxMzkyLDE3Ljg1MjcgMTQuNDE1NywxOS4yMDkgMTkuNTM5NCwxNi4zMDgxTCAxOS41Mzk0LDIwLjUyNzZDIDEzLjI0NzgsMjMuODgwNiA0Ljk5NzIsMjEuNDMxOCA0Ljk5NzIsMTQuMDg1M0MgNC45OTcyLDguNTg0NzYgOS45NzAxOSw2LjgxNDIgOS45NzAxOSw2LjgxNDJDIDkuOTcwMTksNi44MTQyIDguNTc2MjQsOC41ODQ4OSA4LjUzODU3LDEwLjA1NDJMIDE1LjY5NjcsMTAuMDU0MkMgMTUuNjk2NywyLjkzMzc2IDUuOTAxMzcsNS41NzA5NSAyLjczNjc1LDEwLjgwNzcgWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdEV4Y2VsID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU03IDEzLjA2TDguMTggMTUuMjhIOS45N0w4IDEyLjA2TDkuOTMgOC44OUg4LjIyTDcuMTMgMTAuOUw3LjA5IDEwLjk2TDcuMDYgMTEuMDNRNi44IDEwLjUgNi41IDkuOTYgNi4yNSA5LjQzIDUuOTcgOC44OUg0LjE2TDYuMDUgMTIuMDhMNCAxNS4yOEg1Ljc4TTEzLjg4IDE5LjVWMTdIOC4yNVYxOS41TTEzLjg4IDE1Ljc1VjEyLjYzSDEyVjE1Ljc1TTEzLjg4IDExLjM4VjguMjVIMTJWMTEuMzhNMTMuODggN1Y0LjVIOC4yNVY3TTIwLjc1IDE5LjVWMTdIMTUuMTNWMTkuNU0yMC43NSAxNS43NVYxMi42M0gxNS4xM1YxNS43NU0yMC43NSAxMS4zOFY4LjI1SDE1LjEzVjExLjM4TTIwLjc1IDdWNC41SDE1LjEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlciA9IFwiTTEzLDNMMTQsMy4wNkMxNi44LDEuNzkgMTkuMjMsMS42NCAyMC41LDIuOTJDMjEuNSwzLjkzIDIxLjU4LDUuNjcgMjAuOTIsNy43MkMyMS42MSw5IDIyLDEwLjQ1IDIyLDEyTDIxLjk1LDEzSDkuMDhDOS40NSwxNS4yOCAxMS4wNiwxNyAxMywxN0MxNC4zMSwxNyAxNS40NywxNi4yMSAxNi4yLDE1SDIxLjVDMjAuMjUsMTguNSAxNi45MiwyMSAxMywyMUMxMS43MiwyMSAxMC41LDIwLjczIDkuNDEsMjAuMjVDNi41LDIxLjY4IDMuODksMjEuOSAyLjU3LDIwLjU2QzEsMTguOTYgMS42OCwxNS41NyA0LDEyQzQuOTMsMTAuNTQgNi4xNCw5LjA2IDcuNTcsNy42NUw4LjM4LDYuODhDNy4yMSw3LjU3IDUuNzEsOC42MiA0LjE5LDEwLjE3QzUuMDMsNi4wOCA4LjY2LDMgMTMsM00xMyw3QzExLjIxLDcgOS42OSw4LjQ3IDkuMTgsMTAuNUgxNi44MkMxNi4zMSw4LjQ3IDE0Ljc5LDcgMTMsN00yMC4wNiw0LjA2QzE5LjQsMy4zOSAxOC4yMiwzLjM1IDE2Ljc0LDMuODFDMTguMjIsNC41IDE5LjUsNS41NiAyMC40MSw2Ljg5QzIwLjczLDUuNjUgMjAuNjQsNC42NSAyMC4wNiw0LjA2TTMuODksMjBDNC43MiwyMC44NCA2LjQsMjAuNjkgOC40NCwxOS43NkM2LjU5LDE4LjY3IDUuMTcsMTYuOTQgNC40NywxNC44OEMzLjI3LDE3LjE1IDMsMTkuMDcgMy44OSwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPZmZpY2UgPSBcIk0xOS45NCA1LjU5VjE4LjM5UTE5Ljk0IDE5LjA2IDE5LjU1IDE5LjU5IDE5LjE2IDIwLjExIDE4LjUgMjAuMjlMMTIuNzcgMjEuOTRRMTIuNjUgMjEuOTcgMTIuNSAyMkgxMi4yOFExMS45NSAyMiAxMS42OCAyMS45MSAxMS40MSAyMS44MiAxMS4xMyAyMS42N0w3LjM4IDE5LjU1UTcuMTcgMTkuNDMgNy4wNSAxOS4yNCA2LjkzIDE5LjA1IDYuOTMgMTguODEgNi45MyAxOC40NSA3LjE5IDE4LjIgNy40NCAxNy45NSA3LjggMTcuOTVIMTIuNjZWNi4xNEw5IDcuNDRROC41NyA3LjYgOC4zIDggOC4wMyA4LjM4IDguMDMgOC44NVYxNS41OFE4LjAzIDE2IDcuODIgMTYuMzQgNy42MiAxNi42OCA3LjI1IDE2Ljg4TDUuNTMgMTcuODJRNS4yOSAxNy45NSA1LjA1IDE3Ljk1IDQuNjQgMTcuOTUgNC4zNSAxNy42NiA0LjA2IDE3LjM3IDQuMDYgMTYuOTVWNy40N1E0LjA2IDYuOTUgNC4zMyA2LjUgNC42MSA2IDUuMDYgNS43NEwxMS4yMiAyLjI0UTExLjQzIDIuMTIgMTEuNjcgMi4wNiAxMS45MSAyIDEyLjE1IDIgMTIuMzIgMiAxMi40NiAyLjAzIDEyLjYgMi4wNSAxMi43NyAyLjFMMTguNSAzLjY5UTE4LjgzIDMuNzggMTkuMDkgMy45NiAxOS4zNSA0LjE0IDE5LjU0IDQuMzkgMTkuNzQgNC42NSAxOS44NCA0Ljk1IDE5Ljk0IDUuMjYgMTkuOTQgNS41OU0xOC42MiAxOC4zOVY1LjU5UTE4LjYyIDUuMzYgMTguNSA1LjE5IDE4LjM1IDUgMTguMTMgNC45NkwxNS4zMSA0LjE4UTE1IDQuMDkgMTQuNjUgNCAxNC4zMiAzLjg5IDE0IDMuODFWMjAuMjFMMTguMTMgMTlRMTguMzUgMTguOTYgMTguNSAxOC43OSAxOC42MiAxOC42MiAxOC42MiAxOC4zOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPbmVkcml2ZSA9IFwiTTE4LjIxIDEwLjI5UTE5IDEwLjM0IDE5LjcgMTAuNjggMjAuMzkgMTEgMjAuOSAxMS41NyAyMS40MSAxMi4xMiAyMS43MSAxMi44MyAyMiAxMy41NCAyMiAxNC4zNCAyMiAxNS4xOCAyMS42OCAxNS45MiAyMS4zNiAxNi42NiAyMC44IDE3LjIxIDIwLjI1IDE3Ljc2IDE5LjUgMTguMDggMTguNzggMTguNDEgMTcuOTQgMTguNDFIN1E1Ljk3IDE4LjQxIDUuMDYgMTggNC4xNSAxNy42MSAzLjQ3IDE2Ljk0IDIuNzkgMTYuMjYgMi40IDE1LjM1IDIgMTQuNDQgMiAxMy40MSAyIDEyLjU5IDIuMjYgMTEuODMgMi41IDExLjA4IDMgMTAuNDUgMy40NCA5LjgyIDQuMDggOS4zNSA0LjcyIDguODggNS41IDguNjMgNS44NyA4LjUgNi4yMSA4LjUgNi41NiA4LjQzIDYuOTMgOC40MUg2Ljk0UTcuMzcgNy43NSA3Ljk1IDcuMjMgOC41IDYuNzEgOS4yIDYuMzQgOS44NyA2IDEwLjYyIDUuNzggMTEuMzcgNS41OSAxMi4xNiA1LjU5IDEzLjIyIDUuNTkgMTQuMiA1Ljk0IDE1LjE4IDYuMjkgMTYgNi45MSAxNi44IDcuNTMgMTcuMzcgOC4zOSAxNy45NSA5LjI2IDE4LjIxIDEwLjI5TTEyLjE2IDYuODRRMTEuMDUgNi44NCAxMC4wNiA3LjMgOS4wNiA3Ljc1IDguMzYgOC42IDguNzMgOC43IDkuMDcgOC44NSA5LjQgOSA5LjczIDkuMkwxMy43MSAxMS41OEwxNiAxMC42MlExNi4yMSAxMC41MyAxNi40NCAxMC40NSAxNi42NyAxMC4zOCAxNi45MiAxMC4zMyAxNi42OCA5LjU1IDE2LjIxIDguOTEgMTUuNzQgOC4yNyAxNS4xMSA3LjgxIDE0LjUgNy4zNSAxMy43MyA3LjEgMTMgNi44NCAxMi4xNiA2Ljg0TTQgMTUuNjZMMTIuMjcgMTIuMThMOS4wOCAxMC4yNlE4LjU5IDkuOTcgOC4wNiA5LjgxIDcuNSA5LjY2IDYuOTUgOS42NiA2LjE5IDkuNjYgNS41IDkuOTYgNC44NCAxMC4yNiA0LjM0IDEwLjc3IDMuODQgMTEuMjkgMy41NCAxMS45NyAzLjI1IDEyLjY1IDMuMjUgMTMuNDEgMy4yNSAxNCAzLjQ1IDE0LjU5IDMuNjQgMTUuMTkgNCAxNS42Nk0xNy45NCAxNy4xNlExOC40MSAxNy4xNiAxOC44NCAxNyAxOS4yNyAxNi44NiAxOS42NCAxNi41OEwxMy42MSAxM0w1LjAzIDE2LjU5UTUuNDcgMTYuODYgNS45NyAxNyA2LjQ3IDE3LjE2IDcgMTcuMTZNMjAuNDUgMTUuNjFRMjAuNzUgMTUgMjAuNzUgMTQuMzQgMjAuNzUgMTMuNyAyMC41IDEzLjE3IDIwLjI2IDEyLjY1IDE5Ljg1IDEyLjI4IDE5LjQzIDExLjkxIDE4Ljg4IDExLjcxIDE4LjMyIDExLjUgMTcuNyAxMS41IDE3LjM1IDExLjUgMTcgMTEuNiAxNi42NiAxMS42OCAxNi4zMyAxMS44MSAxNiAxMS45MyAxNS42NyAxMi4wOCAxNS4zNSAxMi4yMyAxNS4wNCAxMi4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPbmVub3RlID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU01LjggMTEuMTdMOC4xNiAxNS4yN0g5LjY1VjguNzNIOC4yVjEyLjkyTDUuOTMgOC43M0g0LjM1VjE1LjI3SDUuOE0yMC43NSAxOS41VjE3SDE4LjI1VjE5LjVNMjAuNzUgMTUuNzVWMTMuMjVIMTguMjVWMTUuNzVNMjAuNzUgMTJWOS41SDE4LjI1VjEyTTIwLjc1IDguMjVWNC41SDguMjVWN0gxMS4xN1ExMS41IDcgMTEuNzYgNy4yNCAxMiA3LjUgMTIgNy44M1YxNi4xN1ExMiAxNi41IDExLjc2IDE2Ljc2IDExLjUgMTcgMTEuMTcgMTdIOC4yNVYxOS41SDE3VjguMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0T3V0bG9vayA9IFwiTTguNTYgMTIuMDNROC41NiAxMi40MSA4LjUgMTIuNzYgOC4zOSAxMy4xIDguMiAxMy4zOCA4IDEzLjY1IDcuNzEgMTMuODEgNy40MSAxMy45NyA3IDEzLjk3IDYuNTggMTMuOTcgNi4yOSAxMy44IDYgMTMuNjMgNS44MSAxMy4zNSA1LjYyIDEzLjA3IDUuNTQgMTIuNzIgNS40NSAxMi4zNyA1LjQ1IDEyIDUuNDUgMTEuNjQgNS41NCAxMS4yOCA1LjYyIDEwLjkzIDUuODEgMTAuNjUgNiAxMC4zNyA2LjMxIDEwLjIgNi42MSAxMC4wMyA3LjAzIDEwLjAzIDcuNDYgMTAuMDMgNy43NSAxMC4yIDguMDUgMTAuMzggOC4yMyAxMC42NiA4LjQxIDEwLjk1IDguNSAxMS4zIDguNTYgMTEuNjYgOC41NiAxMi4wM00yMiAxMlYxOS44MVEyMiAyMC4yIDIxLjczIDIwLjUgMjEuNDUgMjAuNzUgMjEuMDYgMjAuNzVINy45NFE3LjU1IDIwLjc1IDcuMjcgMjAuNSA3IDIwLjIgNyAxOS44MVYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g4LjI1VjQuMTNROC4yNSAzLjc2IDguNSAzLjUgOC43NiAzLjI1IDkuMTMgMy4yNUgxOS44N1EyMC4yNCAzLjI1IDIwLjUgMy41IDIwLjc1IDMuNzYgMjAuNzUgNC4xM1YxMS4wNEwyMS43OSAxMS42NEgyMS44UTIxLjg4IDExLjcgMjEuOTQgMTEuOCAyMiAxMS44OSAyMiAxMk0xNyA1LjEzVjcuNjNIMTkuNVY1LjEzTTE3IDguODhWMTEuMzhIMTkuNVY4Ljg4TTE3IDEyLjYzVjE0LjE1TDE5LjU0IDEyLjYzTTEyLjYzIDUuMTNWNy42M0gxNS43NVY1LjEzTTEyLjYzIDguODhWMTEuMzhIMTUuNzVWOC44OE0xMi42MyAxMi42M1YxNC4zMkwxNC42NCAxNS41NkwxNS43NSAxNC45VjEyLjYzTTkuNSA1LjEzVjdIMTEuMjdRMTEuMzMgNyAxMS4zOCA3LjA0VjUuMTJNNyAxNS4zMlE3LjczIDE1LjMyIDguMzIgMTUuMDYgOC45IDE0LjggOS4zMSAxNC4zNSA5LjcxIDEzLjkgOS45MSAxMy4yOCAxMC4xMiAxMi42NiAxMC4xMyAxMS45NCAxMC4xMyAxMS4yNSA5LjkyIDEwLjY1IDkuNzIgMTAuMDYgOS4zMiA5LjYyIDguOTMgOS4xOCA4LjM3IDguOTMgNy44IDguNjggNy4wOCA4LjY4IDYuMzEgOC42OCA1LjcxIDguOTMgNS4xMiA5LjE4IDQuNzEgOS42MyA0LjMgMTAuMDkgNC4wOSAxMC43MSAzLjg4IDExLjM0IDMuODggMTIuMDggMy44OCAxMi43OCA0LjA5IDEzLjM4IDQuMzEgMTMuOTcgNC43MSAxNC40IDUuMTEgMTQuODMgNS42OCAxNS4wOCA2LjI2IDE1LjMyIDcgMTUuMzJNOC4yNSAxOS41SDE4LjU3TDEyIDE1LjRWMTYuMTdRMTIgMTYuNSAxMS43NiAxNi43NiAxMS41IDE3IDExLjE3IDE3SDguMjVNMjAuNzUgMTkuMzlWMTMuMzZMMTUuODMgMTYuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0UG93ZXJwb2ludCA9IFwiTTEzLjI1IDMuMjVRMTQuNDYgMy4yNSAxNS41OCAzLjU2IDE2LjcgMy44OCAxNy42NyA0LjQ1IDE4LjY0IDUgMTkuNDQgNS44MSAyMC4yMyA2LjYxIDIwLjggNy41OCAyMS4zOCA4LjU1IDIxLjY5IDkuNjcgMjIgMTAuNzkgMjIgMTIgMjIgMTMuMjEgMjEuNjkgMTQuMzMgMjEuMzggMTUuNDUgMjAuOCAxNi40MiAyMC4yMyAxNy4zOSAxOS40NCAxOC4xOSAxOC42NCAxOSAxNy42NyAxOS41NSAxNi43IDIwLjEzIDE1LjU4IDIwLjQ0IDE0LjQ2IDIwLjc1IDEzLjI1IDIwLjc1IDEyLjE4IDIwLjc1IDExLjE1IDIwLjUgMTAuMTIgMjAuMjQgOS4yIDE5Ljc2IDguMjggMTkuMjcgNy41IDE4LjU4IDYuNjkgMTcuODggNi4wNyAxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI1IDIuNSA3IDIuODMgN0g2LjA3UTYuNjkgNi4xMiA3LjUgNS40MiA4LjI4IDQuNzIgOS4yIDQuMjQgMTAuMTMgMy43NiAxMS4xNSAzLjUgMTIuMTggMy4yNSAxMy4yNSAzLjI1TTEzLjg4IDQuNTNWMTEuMzdIMjAuNzJRMjAuNiAxMCAyMC4wMyA4LjgxIDE5LjQ2IDcuNjIgMTguNTUgNi43IDE3LjY0IDUuNzkgMTYuNDMgNS4yMiAxNS4yMyA0LjY1IDEzLjg4IDQuNTNNOS41IDEwLjg0UTkuNSAxMC4yNyA5LjMgOS44NyA5LjExIDkuNDYgOC43OCA5LjIxIDguNDUgOC45NSA4IDguODQgNy41NSA4LjcyIDcgOC43Mkg0LjM3VjE1LjI3SDUuOTFWMTNINi45NFE3LjQyIDEzIDcuODcgMTIuODQgOC4zMyAxMi43IDguNjkgMTIuNDMgOS4wNSAxMi4xNyA5LjI3IDExLjc2IDkuNSAxMS4zNiA5LjUgMTAuODRNMTMuMjUgMTkuNVExNC4yMyAxOS41IDE1LjE0IDE5LjI2IDE2LjA0IDE5IDE2Ljg1IDE4LjU4IDE3LjY2IDE4LjEzIDE4LjMzIDE3LjUgMTkgMTYuODkgMTkuNSAxNi4xMyAyMCAxNS4zNiAyMC4zMyAxNC40NyAyMC42NCAxMy41OCAyMC43MiAxMi42MkgxMi42NFY0LjUzUTExLjE5IDQuNjUgOS45MSA1LjI5IDguNjMgNS45MyA3LjY3IDdIMTEuMTdRMTEuNSA3IDExLjc2IDcuMjUgMTIgNy41IDEyIDcuODNWMTYuMTdRMTIgMTYuNSAxMS43NiAxNi43NiAxMS41IDE3IDExLjE3IDE3SDcuNjdROC4yIDE3LjYgOC44NCAxOC4wNiA5LjUgMTguNSAxMC4xOSAxOC44NCAxMC45MSAxOS4xNyAxMS42OCAxOS4zMyAxMi40NSAxOS41IDEzLjI1IDE5LjVNNi44NSAxMFE3LjMyIDEwIDcuNjEgMTAuMTkgNy44OSAxMC4zOCA3Ljg5IDEwLjg5IDcuODkgMTEuMTEgNy43OSAxMS4yNSA3LjY5IDExLjM5IDcuNTMgMTEuNSA3LjM3IDExLjU3IDcuMTggMTEuNiA3IDExLjY0IDYuOCAxMS42NEg1LjkxVjEwSDYuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0U2hhcmVwb2ludCA9IFwiTTIyIDEzLjI1UTIyIDE0LjI5IDIxLjYgMTUuMiAyMS4yMSAxNi4xIDIwLjUzIDE2Ljc4IDE5Ljg1IDE3LjQ2IDE4Ljk0IDE3Ljg2IDE4LjAzIDE4LjI1IDE3IDE4LjI1IDE2LjM2IDE4LjI1IDE1LjczIDE4LjA5IDE1LjY0IDE4LjkyIDE1LjI3IDE5LjYzIDE0Ljg5IDIwLjM1IDE0LjMgMjAuODggMTMuNzIgMjEuNDEgMTIuOTcgMjEuNyAxMi4yMSAyMiAxMS4zOCAyMiAxMC40NyAyMiA5LjY3IDIxLjY1IDguODggMjEuMzEgOC4yOCAyMC43MiA3LjY5IDIwLjEzIDcuMzUgMTkuMzMgNyAxOC41MyA3IDE3LjYzVjE3LjMxUTcuMDMgMTcuMTYgNy4wNSAxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g1Ljc4UTUuOSA1Ljk0IDYuMzkgNSA2Ljg3IDQuMTEgNy42MyAzLjQ0IDguMzggMi43NiA5LjM0IDIuMzggMTAuMyAyIDExLjM4IDIgMTIuNTQgMiAxMy41NiAyLjQ0IDE0LjU5IDIuODkgMTUuMzUgMy42NSAxNi4xMSA0LjQxIDE2LjU2IDUuNDQgMTcgNi40NiAxNyA3LjYzVjcuOTRRMTcgOC4wOSAxNi45NiA4LjI1IDE4IDguMjUgMTguOTEgOC42NCAxOS44MyA5LjAzIDIwLjUgOS43MSAyMS4yMSAxMC4zOCAyMS42IDExLjI5IDIyIDEyLjIxIDIyIDEzLjI1TTExLjM3IDMuMjVRMTAuNTYgMy4yNSA5LjgzIDMuNTQgOS4wOSAzLjgyIDguNSA0LjMyIDcuOTQgNC44MiA3LjU1IDUuNSA3LjE3IDYuMiA3LjA1IDdIMTEuMTdRMTEuNSA3IDExLjc2IDcuMjUgMTIgNy41IDEyIDcuODNWMTEuOTVMMTIuMTggMTEuOTJRMTIuMzUgMTEuMyAxMi42OCAxMC43NCAxMyAxMC4xNyAxMy40NyA5LjcyIDEzLjkyIDkuMjcgMTQuNSA4LjkzIDE1LjA0IDguNiAxNS42NyA4LjQzIDE1Ljc1IDggMTUuNzUgNy42MyAxNS43NSA2LjcyIDE1LjQgNS45MiAxNS4wNiA1LjEzIDE0LjQ2IDQuNTQgMTMuODcgMy45NSAxMy4wOCAzLjYgMTIuMjggMy4yNSAxMS4zNyAzLjI1TTcuMSAxNS4yNVE3LjU1IDE1LjI1IDggMTUuMTYgOC40MiAxNS4wNyA4Ljc2IDE0Ljg1IDkuMSAxNC42NCA5LjMxIDE0LjI5IDkuNSAxMy45MyA5LjUgMTMuNDEgOS41IDEyLjg4IDkuMyAxMi41MyA5LjA4IDEyLjE4IDguNzUgMTEuOTQgOC40MiAxMS43MSA4LjA0IDExLjU2TDcuMzIgMTEuMjdRNyAxMS4xNCA2Ljc3IDExIDYuNTUgMTAuODUgNi41NSAxMC42MiA2LjU1IDEwLjQ2IDYuNjcgMTAuMzUgNi43OSAxMC4yNSA2Ljk1IDEwLjIgNy4xMSAxMC4xMyA3LjI4IDEwLjExIDcuNDYgMTAuMSA3LjU4IDEwLjEgOC4wNyAxMC4xIDguNDYgMTAuMjIgOC44NCAxMC4zNSA5LjI1IDEwLjZWOS4xMlE5IDkuMDUgOC44MSA5IDguNjEgOC45NSA4LjQyIDguOTIgOC4yMiA4Ljg5IDggOC44NyA3LjggOC44NiA3LjU1IDguODYgNy4xMiA4Ljg2IDYuNjcgOC45NSA2LjIyIDkuMDUgNS44NSA5LjI3IDUuNSA5LjUgNS4yNiA5LjgzIDUuMDMgMTAuMTggNS4wMyAxMC42OSA1LjAzIDExLjE5IDUuMjUgMTEuNSA1LjQ3IDExLjg1IDUuOCAxMi4wOSA2LjEzIDEyLjMyIDYuNSAxMi41TDcuMjIgMTIuNzlRNy41NiAxMi45MyA3Ljc4IDEzLjA4IDggMTMuMjQgOCAxMy40NiA4IDEzLjY1IDcuODkgMTMuNzYgNy43OSAxMy44NyA3LjYzIDEzLjkyIDcuNSAxNCA3LjMxIDE0SDdRNi40MSAxNCA1Ljk2IDEzLjgyIDUuNSAxMy42MiA1LjA0IDEzLjNWMTQuODZRNi4wMyAxNS4yNSA3LjEgMTUuMjVNMTEuMzcgMjAuNzVRMTIgMjAuNzUgMTIuNTggMjAuNSAxMy4xNSAyMC4yNiAxMy41OCAxOS44NCAxNCAxOS40MSAxNC4yNSAxOC44NCAxNC41IDE4LjI3IDE0LjUgMTcuNjMgMTQuNSAxNy4wNyAxNC4zMSAxNi41NiAxNC4xMyAxNi4wNSAxMy44IDE1LjY1IDEzLjQ2IDE1LjI0IDEzIDE0Ljk2IDEyLjU1IDE0LjY4IDEyIDE0LjU2VjE2LjE3UTEyIDE2LjUgMTEuNzYgMTYuNzYgMTEuNSAxNyAxMS4xNyAxN0g4LjMxUTguMjUgMTcuMzEgOC4yNSAxNy42MyA4LjI1IDE4LjI3IDguNSAxOC44NCA4Ljc0IDE5LjQxIDkuMTYgMTkuODQgOS41OSAyMC4yNiAxMC4xNiAyMC41IDEwLjczIDIwLjc1IDExLjM3IDIwLjc1TTE3IDE3UTE3Ljc3IDE3IDE4LjQ1IDE2LjcxIDE5LjE0IDE2LjQyIDE5LjY1IDE1LjkgMjAuMTYgMTUuMzkgMjAuNDYgMTQuNzEgMjAuNzUgMTQuMDMgMjAuNzUgMTMuMjUgMjAuNzUgMTIuNSAyMC40NiAxMS44IDIwLjE2IDExLjExIDE5LjY1IDEwLjYgMTkuMTQgMTAuMDkgMTguNDUgOS43OSAxNy43NyA5LjUgMTcgOS41IDE2LjIzIDkuNSAxNS41NSA5LjggMTQuODcgMTAuMSAxNC4zNiAxMC42MSAxMy44NSAxMS4xMiAxMy41NSAxMS44IDEzLjI1IDEyLjUgMTMuMjUgMTMuMjVWMTMuNDZMMTMuMjcgMTMuNjhRMTMuNzMgMTMuOSAxNC4xMiAxNC4yMiAxNC41IDE0LjU0IDE0LjgyIDE0LjkzIDE1LjEyIDE1LjMzIDE1LjM0IDE1Ljc5IDE1LjU1IDE2LjI1IDE1LjY2IDE2Ljc0IDE2LjMyIDE3IDE3IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFRlYW1zID0gXCJNMTkuMTkgOC43N1ExOC43MyA4Ljc3IDE4LjMzIDguNiAxNy45NCA4LjQzIDE3LjY0IDguMTMgMTcuMzQgNy44MyAxNy4xNyA3LjQ0IDE3IDcuMDQgMTcgNi41OCAxNyA2LjEzIDE3LjE3IDUuNzMgMTcuMzQgNS4zMyAxNy42NCA1LjA0IDE3Ljk0IDQuNzQgMTguMzMgNC41NyAxOC43MyA0LjM5IDE5LjE5IDQuNCAxOS42NCA0LjM5IDIwLjA0IDQuNTcgMjAuNDQgNC43NCAyMC43NCA1LjA0IDIxLjAzIDUuMzMgMjEuMjEgNS43MyAyMS4zOCA2LjEzIDIxLjM4IDYuNTggMjEuMzggNy4wNCAyMS4yMSA3LjQ0IDIxLjA0IDcuODMgMjAuNzQgOC4xMyAyMC40NCA4LjQzIDIwLjA0IDguNiAxOS42NCA4Ljc3IDE5LjE5IDguNzdNMTkuMTkgNS42NVExOC44IDUuNjUgMTguNSA1LjkyIDE4LjI1IDYuMTkgMTguMjUgNi41OCAxOC4yNSA2Ljk3IDE4LjUgNy4yNSAxOC44IDcuNSAxOS4xOSA3LjUgMTkuNTggNy41IDE5Ljg1IDcuMjUgMjAuMTMgNyAyMC4xMyA2LjU4IDIwLjEzIDYuMTkgMTkuODUgNS45MiAxOS41OCA1LjY1IDE5LjE5IDUuNjVNMjIgMTAuMzNWMTVRMjIgMTUuNjMgMjEuNzYgMTYuMiAyMS41IDE2Ljc3IDIxLjA5IDE3LjE5IDIwLjY2IDE3LjYyIDIwLjA5IDE3Ljg2IDE5LjUgMTguMTEgMTguODggMTguMTEgMTguNSAxOC4xMSAxOC4xMiAxOCAxNy43MyAxNy45MyAxNy40MSAxNy43NSAxNy4xNyAxOC41NCAxNi43IDE5LjE5IDE2LjIzIDE5Ljg0IDE1LjYgMjAuMyAxNC45NyAyMC43NiAxNC4yMSAyMSAxMy40NSAyMS4yNyAxMi42MyAyMS4yNyAxMS42NyAyMS4yNyAxMC44MiAyMC45NCAxMCAyMC42MSA5LjMyIDIwIDguNjYgMTkuNDMgOC4yMyAxOC42NCA3Ljc5IDE3Ljg0IDcuNjYgMTYuOUgyLjgzUTIuNSAxNi45IDIuMjQgMTYuNjUgMiAxNi40MSAyIDE2LjA3VjcuNzNRMiA3LjM5IDIuMjQgNy4xNCAyLjUgNi45IDIuODMgNi45SDEwUTkuNzEgNi4zIDkuNzEgNS42NSA5LjcxIDUuMDQgOS45NCA0LjUgMTAuMTYgNCAxMC41NiAzLjU4IDEwLjk2IDMuMTkgMTEuNSAyLjk2IDEyIDIuNzMgMTIuNjIgMi43MyAxMy4yMyAyLjczIDEzLjc2IDIuOTYgMTQuMjkgMy4xOSAxNC42OSAzLjU4IDE1LjA5IDQgMTUuMzEgNC41IDE1LjU0IDUuMDQgMTUuNTQgNS42NSAxNS41NCA2LjI1IDE1LjMxIDYuNzkgMTUuMDkgNy4zMiAxNC42OSA3LjcxIDE0LjI5IDguMTEgMTMuNzYgOC4zNCAxMy4yMyA4LjU3IDEyLjYyIDguNTcgMTIuNDcgOC41NyAxMi4zMSA4LjU1IDEyLjE2IDguNTMgMTIgOC41VjkuNEgyMS4wNlEyMS40NSA5LjQgMjEuNzMgOS42NyAyMiA5Ljk0IDIyIDEwLjMzTTEyLjYzIDRRMTIuMjggNCAxMiA0LjExIDExLjY3IDQuMjQgMTEuNDQgNC40NyAxMS4yMiA0LjcgMTEuMDkgNSAxMC45NiA1LjMxIDEwLjk2IDUuNjUgMTAuOTYgNiAxMS4wOSA2LjMgMTEuMjIgNi42IDExLjQ0IDYuODMgMTEuNjcgNy4wNSAxMiA3LjE5IDEyLjI4IDcuMzIgMTIuNjMgNy4zMiAxMi45NyA3LjMyIDEzLjI3IDcuMTkgMTMuNTcgNy4wNSAxMy44IDYuODMgMTQuMDMgNi42IDE0LjE2IDYuMyAxNC4zIDYgMTQuMyA1LjY1IDE0LjMgNS4zMSAxNC4xNiA1IDE0LjAzIDQuNyAxMy44IDQuNDcgMTMuNTcgNC4yNCAxMy4yNyA0LjExIDEyLjk3IDQgMTIuNjMgNE03Ljc4IDEwLjE4SDkuNjZWOC42Mkg0LjM0VjEwLjE4SDYuMjJWMTUuMThINy43OE0xNi4zOCAxNi4yN1YxMC42NUgxMlYxNi4wN1ExMiAxNi40MSAxMS43NiAxNi42NSAxMS41IDE2LjkgMTEuMTcgMTYuOUg4LjkyUTkuMDUgMTcuNTcgOS4zOSAxOC4xNSA5LjczIDE4LjcyIDEwLjIxIDE5LjE0IDEwLjY5IDE5LjU1IDExLjMxIDE5Ljc5IDExLjkyIDIwIDEyLjYzIDIwIDEzLjQgMjAgMTQuMDggMTkuNzMgMTQuNzYgMTkuNDMgMTUuMjggMTguOTIgMTUuNzkgMTguNDEgMTYuMDggMTcuNzMgMTYuMzggMTcuMDUgMTYuMzggMTYuMjdNMjAuNzUgMTVWMTAuNjVIMTcuNjNWMTYuMzZRMTcuODggMTYuNjEgMTguMiAxNi43NCAxOC41IDE2Ljg2IDE4Ljg4IDE2Ljg2IDE5LjI3IDE2Ljg2IDE5LjYxIDE2LjcxIDE5Ljk1IDE2LjU2IDIwLjIgMTYuMzEgMjAuNDYgMTYuMDYgMjAuNiAxNS43MSAyMC43NSAxNS4zNyAyMC43NSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRWaXN1YWxTdHVkaW8gPSBcIk0xNyw4LjVMMTIuMjUsMTIuMzJMMTcsMTZWOC41TTQuNywxOC40TDIsMTYuN1Y3LjdMNSw2LjdMOS4zLDEwLjAzTDE4LDJMMjIsNC41VjIwTDE3LDIyTDkuMzQsMTQuNjZMNC43LDE4LjRNNSwxNEw2Ljg2LDEyLjI4TDUsMTAuNVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRWaXN1YWxTdHVkaW9Db2RlID0gXCJNMTcsMTYuNDdWNy4zOUwxMSwxMS45M00yLjIyLDkuMTlDMS45Miw4Ljg3IDEuOTEsOC4zNyAyLjIsOC4wNEwzLjQsNi45M0MzLjYsNi43NSA0LjA5LDYuNjcgNC40NSw2LjkzTDcuODcsOS41NEwxNS44LDIuMjlDMTYuMTIsMS45NyAxNi42NywxLjg0IDE3LjMsMi4xN0wyMS4zLDQuMDhDMjEuNjYsNC4yOSAyMiw0LjYyIDIyLDUuMjNWMTguNzNDMjIsMTkuMTMgMjEuNzEsMTkuNTYgMjEuNCwxOS43M0wxNywyMS44M0MxNi42OCwyMS45NiAxNi4wOCwyMS44NCAxNS44NywyMS42M0w3Ljg1LDE0LjMzTDQuNDUsMTYuOTNDNC4wNywxNy4xOSAzLjYsMTcuMTIgMy40LDE2LjkzTDIuMiwxNS44M0MxLjg4LDE1LjUgMS45MiwxNC45NiAyLjI1LDE0LjYzTDUuMjUsMTEuOTNcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRXaW5kb3dzID0gXCJNMywxMlY2Ljc1TDksNS40M1YxMS45MUwzLDEyTTIwLDNWMTEuNzVMMTAsMTEuOVY1LjIxTDIwLDNNMywxM0w5LDEzLjA5VjE5LjlMMywxOC43NVYxM00yMCwxMy4yNVYyMkwxMCwyMC4wOVYxMy4xTDIwLDEzLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFdpbmRvd3NDbGFzc2ljID0gXCJNMi42Nyw1LjNWNS45MUwxLjk2LDYuMjFWNS42TDIuNjcsNS4zTTIuNjcsMTEuMjRWMTEuODZMMS45NiwxMi4xNVYxMS41NkwyLjY3LDExLjI0TTIuNjcsMTcuMjdWMTcuODlMMS45NiwxOC4xOFYxNy41OUwyLjY3LDE3LjI3TTIuNiw3LjI5VjcuODRMMi4wMyw4LjFWNy41NkwyLjYsNy4yOU0yLjYsOS4yOFY5LjgyTDIuMDMsMTAuMDhWOS41NEwyLjYsOS4yOE0yLjYsMTMuMzFWMTMuODRMMi4wMywxNC4xVjEzLjU2TDIuNiwxMy4zMU0yLjYsMTUuMzNWMTUuODdMMi4wMywxNi4xM1YxNS42TDIuNiwxNS4zM000LjUsNS42NFY2LjM2TDMuNSw2LjczVjZMNC41LDUuNjRNNC41LDExLjY2VjEyLjM3TDMuNSwxMi43NFYxMi4wM0w0LjUsMTEuNjZNNC41LDE3LjdWMTguNDFMMy41LDE4LjgxVjE4LjFMNC41LDE3LjdNNC40Myw3LjcyVjguMzhMMy42NCw4LjY4VjhMNC40Myw3LjcyTTQuNDMsOS43M1YxMC4zN0wzLjY1LDEwLjY3VjEwTDQuNDMsOS43M000LjQzLDEzLjc0VjE0LjM4TDMuNjUsMTQuNjlWMTQuMDNMNC40MywxMy43NE00LjQzLDE1Ljc2VjE2LjQxTDMuNjUsMTYuNzJWMTYuMDZMNC40MywxNS43Nk02LjMxLDYuMDlWNi45NEw1LjA1LDcuNDNWNi41OUw2LjMxLDYuMDlNNi4zMSwxMi4xMVYxMi45Nkw1LjA1LDEzLjQ1VjEyLjYxTDYuMzEsMTIuMTFNNi4zMSwxOC4wOFYxOC45M0w1LjA1LDE5LjQzVjE4LjU4TDYuMzEsMTguMDhNNi4yNSw4LjE4VjguOTRMNS4xOSw5LjM0VjguNjFMNi4yNSw4LjE4TTYuMjUsMTAuMThWMTAuOTNMNS4xOSwxMS4zNVYxMC42TDYuMjUsMTAuMThNNi4yNSwxNC4xOVYxNC45NEw1LjE5LDE1LjM3VjE0LjYyTDYuMjUsMTQuMTlNNi4yNSwxNi4xNFYxNi45TDUuMTksMTcuMzJWMTYuNTdMNi4yNSwxNi4xNE04LjI5LDYuMDRWNy4xNkw2LjcyLDcuNzhWNi42N0w4LjI5LDYuMDRNOC4yOSwxMi4wNlYxMy4xOUw2LjcyLDEzLjhWMTIuNjhMOC4yOSwxMi4wNk04LjI5LDE4LjAzVjE5LjE1TDYuNzIsMTkuNzdWMTguNjZMOC4yOSwxOC4wM004LjIsOC4xM1Y5LjE2TDYuODksOS42OVY4LjY2TDguMiw4LjEzTTguMiwxMC4xM1YxMS4xNUw2Ljg5LDExLjY4VjEwLjY1TDguMiwxMC4xM004LjIsMTQuMTVWMTUuMThMNi44OSwxNS43VjE0LjY3TDguMiwxNC4xNU04LjIsMTYuMVYxNy4xMkw2Ljg5LDE3LjY0VjE2LjYzTDguMiwxNi4xTTEwLjM0LDUuODVWNy4zMkw4LjYxLDhWNi41NkwxMC4zNCw1Ljg1TTEwLjM0LDExLjg3VjEzLjMzTDguNjEsMTQuMDNWMTIuNTZMMTAuMzQsMTEuODdNMTAuMzQsMTcuODRWMTkuM0w4LjYxLDIwVjE4LjU0TDEwLjM0LDE3Ljg0TTEwLjI2LDguMDVWOS4yOEw4Ljc4LDkuODdWOC42NEwxMC4yNiw4LjA1TTEwLjI2LDkuOTdWMTEuMkw4Ljc4LDExLjc4VjEwLjU2TDEwLjI2LDkuOTdNMTAuMjYsMTQuMDZWMTUuMzFMOC43OCwxNS44OFYxNC42NUwxMC4yNiwxNC4wNk0xMC4yNiwxNlYxNy4yNUw4Ljc4LDE3Ljg0VjE2LjZMMTAuMjYsMTZNMTIuNDUsNS4xMlY3LjEyTDEwLjU5LDcuODlWNkMxMS4yMyw1LjY1IDExLjg1LDUuMzUgMTIuNDUsNS4xMk0xMi40NSw3LjMzVjkuMDZMMTAuNTksOS44NFY4LjFMMTIuNDUsNy4zM00xMi40NSw5LjI4VjExLjA0TDEwLjU5LDExLjgyVjEwLjA2TDEyLjQ1LDkuMjhNMTIuNDUsMTEuMjVWMTNMMTAuNTksMTMuNzdWMTJMMTIuNDUsMTEuMjVNMTIuNDUsMTMuMjFWMTVMMTAuNTksMTUuNzhWMTRMMTIuNDUsMTMuMjFNMTIuNDUsMTUuMjFWMTYuOTZMMTAuNTksMTcuNzZWMTZMMTIuNDUsMTUuMjFNMTIuNDUsMTcuMTdWMTkuMDRDMTEuNzIsMTkuMzIgMTEuMSwxOS41OSAxMC41OSwxOS44NFYxNy45NkwxMi40NSwxNy4xN00yMi4wNCw1LjE4VjE5LjIzQzIwLjg1LDE4LjQ0IDE5LjM3LDE4LjA1IDE3LjU5LDE4LjA1QzE2LjEyLDE4LjA1IDE0LjQ3LDE4LjM1IDEyLjY1LDE4Ljk2VjE3LjA2QzEzLjYyLDE2LjY5IDE0LjY4LDE2LjQyIDE1Ljg0LDE2LjI2VjExLjY5QzE0Ljg2LDExLjgxIDEzLjgsMTIuMTUgMTIuNjUsMTIuNzFWMTEuNEMxMy42NCwxMC45NCAxNC43MSwxMC42MyAxNS44NCwxMC40NlY2QzE0LjgyLDYuMTggMTMuNzYsNi41MyAxMi42NSw3VjUuMDNDMTQuMjcsNC4zNCAxNS44Niw0IDE3LjQxLDRDMTkuMDksNCAyMC42Myw0LjM5IDIyLjA0LDUuMThNMjAuMTUsNi40MUMxOS4zOSw2IDE4LjUsNS44MiAxNy40Miw1LjgyQzE3LjI5LDUuODIgMTcuMTcsNS44MyAxNy4wNSw1Ljg0VjEwLjM4TDE3LjQ2LDEwLjM3QzE4LjM3LDEwLjM3IDE5LjI3LDEwLjUgMjAuMTUsMTAuOFY2LjQxTTIwLjE1LDEyLjFDMTkuMzQsMTEuNzQgMTguNDMsMTEuNTYgMTcuNDQsMTEuNTZDMTcuMzEsMTEuNTYgMTcuMTgsMTEuNTcgMTcuMDUsMTEuNThWMTYuMTZIMTcuNDZDMTguNDUsMTYuMTYgMTkuMzUsMTYuMjggMjAuMTUsMTYuNTNWMTIuMUgyMC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRXb3JkID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU03LjAzIDExLjM0TDguMjMgMTUuMjhIOS42TDEwLjkxIDguNzJIOS41M0w4Ljc1IDEyLjZMNy42NCA4Ljg1SDYuNUw1LjMxIDEyLjYyTDQuNTMgOC43MkgzLjA5TDQuNCAxNS4yOEg1Ljc3TTIwLjc1IDE5LjVWMTdIOC4yNVYxOS41TTIwLjc1IDE1Ljc1VjEyLjYzSDEyVjE1Ljc1TTIwLjc1IDExLjM4VjguMjVIMTJWMTEuMzhNMjAuNzUgN1Y0LjVIOC4yNVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFhib3ggPSBcIk02LjQzLDMuNzJDNi41LDMuNjYgNi41NywzLjYgNi42MiwzLjU2QzguMTgsMi41NSAxMCwyIDEyLDJDMTMuODgsMiAxNS42NCwyLjUgMTcuMTQsMy40MkMxNy4yNSwzLjUgMTcuNTQsMy42OSAxNy43LDMuODhDMTYuMjUsMi4yOCAxMiw1LjcgMTIsNS43QzEwLjUsNC41NyA5LjE3LDMuOCA4LjE2LDMuNUM3LjMxLDMuMjkgNi43MywzLjUgNi40NiwzLjdNMTkuMzQsNS4yMUMxOS4yOSw1LjE2IDE5LjI0LDUuMTEgMTkuMiw1LjA2QzE4Ljg0LDQuNjYgMTguMzgsNC41NiAxOCw0LjU5QzE3LjYxLDQuNzEgMTUuOSw1LjMyIDEzLjgsNy4zMUMxMy44LDcuMzEgMTYuMTcsOS42MSAxNy42MiwxMS45NkMxOS4wNywxNC4zMSAxOS45MywxNi4xNiAxOS40LDE4LjczQzIxLDE2Ljk1IDIyLDE0LjU5IDIyLDEyQzIyLDkuMzggMjEsNyAxOS4zNCw1LjIxTTE1LjczLDEyLjk2QzE1LjA4LDEyLjI0IDE0LjEzLDExLjIxIDEyLjg2LDkuOTVDMTIuNTksOS42OCAxMi4zLDkuNCAxMiw5LjFDMTIsOS4xIDExLjUzLDkuNTYgMTAuOTMsMTAuMTdDMTAuMTYsMTAuOTQgOS4xNywxMS45NSA4LjYxLDEyLjU0QzcuNjMsMTMuNTkgNC44MSwxNi44OSA0LjY1LDE4Ljc0QzQuNjUsMTguNzQgNCwxNy4yOCA1LjQsMTMuODlDNi4zLDExLjY4IDksOC4zNiAxMC4xNSw3LjI4QzEwLjE1LDcuMjggOS4xMiw2LjE0IDcuODIsNS4zNUw3Ljc3LDUuMzJDNy4xNCw0Ljk1IDYuNDYsNC42NiA1LjgsNC42MkM1LjEzLDQuNjcgNC43MSw1LjE2IDQuNzEsNS4xNkMzLjAzLDYuOTUgMiw5LjM1IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTQuOTMsMjIgMTcuNTcsMjAuNzQgMTkuNCwxOC43M0MxOS40LDE4LjczIDE5LjE5LDE3LjQgMTcuODQsMTUuNUMxNy41MywxNS4wNyAxNi4zNywxMy42OSAxNS43MywxMi45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlciA9IFwiTTguNzUsMTUuNzVDNi43NSwxNS43NSA2LDE4IDQsMTlDMiwxOSAwLjUsMTYgNC41LDcuNUg0Ljc1TDUuMTksNi42N0M1LjE5LDYuNjcgOCw1IDkuMzMsNi4yM0gxNC42N0MxNiw1IDE4LjgxLDYuNjcgMTguODEsNi42N0wxOS4yNSw3LjVIMTkuNUMyMy41LDE2IDIyLDE5IDIwLDE5QzE4LDE4IDE3LjI1LDE1Ljc1IDE1LjI1LDE1Ljc1SDguNzVNMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlBbGVydCA9IFwiTTIxLDE5VjdIMTVWMTlIMjFNMjEuNjcsNUMyMi40LDUgMjMsNS42IDIzLDYuMzNWMTkuNjdBMS4zMywxLjMzIDAgMCwxIDIxLjY3LDIxSDE0LjMzQzEzLjYsMjEgMTMsMjAuNCAxMywxOS42N1YxNi43NUg3Ljc1QzUuNzUsMTYuNzUgNSwxOSAzLDIwQzEsMjAgLTAuNSwxNyAzLjUsOC41SDMuNzVMNC4xOSw3LjY3QzQuMTksNy42NyA3LDYgOC4zMyw3LjIzSDEzVjYuMzNBMS4zMywxLjMzIDAgMCwxIDE0LjMzLDVIMTZWM0gyMFY1SDIxLjY3TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4TTE3LDlIMTlWMTRIMTdWOU0xNywxNUgxOVYxN0gxN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlDaGFyZ2luZyA9IFwiTTIwLDVIMjEuNjdDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNU0yMSw3SDE1VjE5SDIxVjdNMTUuNSwxNEwxOC41LDcuNVYxMkgyMC41TDE3LjUsMTguNVYxNEgxNS41TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFhib3hDb250cm9sbGVyQmF0dGVyeUVtcHR5ID0gXCJNMjEsMTlWN0gxNVYxOUgyMU0yMS42Nyw1QzIyLjQsNSAyMyw1LjYgMjMsNi4zM1YxOS42N0ExLjMzLDEuMzMgMCAwLDEgMjEuNjcsMjFIMTQuMzNDMTMuNiwyMSAxMywyMC40IDEzLDE5LjY3VjE2Ljc1SDcuNzVDNS43NSwxNi43NSA1LDE5IDMsMjBDMSwyMCAtMC41LDE3IDMuNSw4LjVIMy43NUw0LjE5LDcuNjdDNC4xOSw3LjY3IDcsNiA4LjMzLDcuMjNIMTNWNi4zM0ExLjMzLDEuMzMgMCAwLDEgMTQuMzMsNUgxNlYzSDIwVjVIMjEuNjdNMTEsOEExLDEgMCAwLDAgMTAsOUExLDEgMCAwLDAgMTEsMTBBMSwxIDAgMCwwIDEyLDlBMSwxIDAgMCwwIDExLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0WGJveENvbnRyb2xsZXJCYXR0ZXJ5RnVsbCA9IFwiTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlMb3cgPSBcIk0yMSwxNlY3SDE1VjE2SDIxTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlNZWRpdW0gPSBcIk0yMSwxMlY3SDE1VjEySDIxTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlVbmtub3duID0gXCJNMjEuNjcsNUMyMi40LDUgMjMsNS42IDIzLDYuMzNWMTkuNjdBMS4zMywxLjMzIDAgMCwxIDIxLjY3LDIxSDE0LjMzQzEzLjYsMjEgMTMsMjAuNCAxMywxOS42N1YxNi43NUg3Ljc1QzUuNzUsMTYuNzUgNSwxOSAzLDIwQzEsMjAgLTAuNSwxNyAzLjUsOC41SDMuNzVMNC4xOSw3LjY3QzQuMTksNy42NyA3LDYgOC4zMyw3LjIzSDEzVjYuMzNBMS4zMywxLjMzIDAgMCwxIDE0LjMzLDVIMTZWM0gyMFY1SDIxLjY3TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4TTE4LjE5LDhDMTcuMzIsOCAxNi42Miw4LjIgMTYuMDgsOC41OUMxNS41Niw5IDE1LjMsOS41NyAxNS4zMSwxMC4zNkwxNS4zMiwxMC4zOUgxNy4yNUMxNy4yNiwxMC4wOSAxNy4zNSw5Ljg2IDE3LjUzLDkuN0MxNy43MSw5LjU1IDE3LjkzLDkuNDcgMTguMTksOS40N0MxOC41LDkuNDcgMTguNzYsOS41NyAxOC45NCw5Ljc1QzE5LjEyLDkuOTQgMTkuMiwxMC4yIDE5LjIsMTAuNUMxOS4yLDEwLjgyIDE5LjEzLDExLjA5IDE4Ljk3LDExLjMyQzE4LjgzLDExLjU1IDE4LjYyLDExLjc1IDE4LjM2LDExLjkxQzE3Ljg1LDEyLjI1IDE3LjUsMTIuNTUgMTcuMzEsMTIuODJDMTcuMTEsMTMuMDggMTcsMTMuNSAxNywxNEgxOUMxOSwxMy42OSAxOS4wNCwxMy40NCAxOS4xMywxMy4yNkMxOS4yMiwxMy4wOCAxOS4zOSwxMi45IDE5LjY0LDEyLjc0QzIwLjA5LDEyLjUgMjAuNDYsMTIuMjEgMjAuNzUsMTEuODFDMjEuMDQsMTEuNDEgMjEuMTksMTEgMjEuMTksMTAuNUMyMS4xOSw5Ljc0IDIwLjkyLDkuMTMgMjAuMzgsOC42OEMxOS44NSw4LjIzIDE5LjEyLDggMTguMTksOE0xNywxNVYxN0gxOVYxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlck1lbnUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk02LDdIMThWOUg2VjdNNiwxMUgxOFYxM0g2VjExTTYsMTVIMThWMTdINlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuNSwxNS43NUg4Ljc1QzYuNzUsMTUuNzUgNiwxOCA0LDE5QzIsMTkgMC41LDE2LjA0IDQuNDIsNy42OUwyLDUuMjdNOS4zMyw2LjIzSDE0LjY3QzE2LDUgMTguODEsNi42NyAxOC44MSw2LjY3TDE5LjI1LDcuNUgxOS41QzIzLDE1IDIyLjI4LDE4LjIgMjAuNjksMTguODdMNy42Miw1LjhDOC4yNSw1LjczIDguODcsNS44MSA5LjMzLDYuMjNNMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlclZpZXcgPSBcIk0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNiw3SDE1VjlIOFYxNEg2VjdNOSwxMEgxOFYxN0g5VjEwTTExLDEyVjE1SDE2VjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFlhbW1lciA9IFwiTTIyIDEyUTIyIDEyLjQzIDIxLjk3IDEyLjk0IDIxLjk1IDEzLjQ1IDIxLjg5IDEzLjk3IDIxLjg0IDE0LjUgMjEuNzYgMTUgMjEuNjggMTUuNSAyMS41NiAxNS44OSAyMS41IDE2LjA3IDIxLjM4IDE2LjE5IDIxLjI0IDE2LjMgMjEuMDQgMTYuMyAyMC45NSAxNi4zIDIwLjY2IDE2LjIzIDIwLjM3IDE2LjE2IDIwLjAzIDE2LjA3TDE5LjM5IDE1Ljg4UTE5LjA5IDE1Ljc5IDE4Ljk2IDE1Ljc2IDE4Ljc1IDE2LjU0IDE4LjQxIDE3LjM4IDE4LjA4IDE4LjIxIDE3LjY1IDE5IDE3LjIyIDE5LjggMTYuNyAyMC41IDE2LjE4IDIxLjI1IDE1LjYxIDIxLjgyTDE1LjQzIDIxLjk1UTE1LjMzIDIyIDE1LjIxIDIyIDE1IDIyIDE0Ljg0IDIxLjg0TDEwLjEgMTcuMTFIMi44NVEyLjUgMTcuMTEgMi4yNSAxNi44NiAyIDE2LjYxIDIgMTYuMjZWNy43NFEyIDcuMzkgMi4yNSA3LjE0IDIuNSA2Ljg5IDIuODUgNi44OUgxMC4xTDE0LjgzIDIuMTZRMTUgMiAxNS4yMSAyIDE1LjMzIDIgMTUuNDIgMi4wNSAxNS41IDIuMDkgMTUuNTkgMi4xOCAxNS44NSAyLjQ0IDE2LjA4IDIuNzEgMTYuMyAzIDE2LjUgMy4yOCAxOC4yMyA1LjU1IDE4Ljk2IDguMjggMTkuMTQgOC4yMyAxOS40NCA4LjE0IDE5Ljc0IDguMDUgMjAuMDYgNy45NiAyMC4zNyA3Ljg3IDIwLjY1IDcuOCAyMC45MiA3Ljc0IDIxLjA0IDcuNzQgMjEuMjQgNy43NCAyMS4zOCA3Ljg1IDIxLjUgNy45NyAyMS41NiA4LjE1IDIxLjY4IDguNTYgMjEuNzcgOS4wNSAyMS44NSA5LjU1IDIxLjkxIDEwLjA2IDIxLjk2IDEwLjU3IDIyIDExLjA4VjEyTTkuODIgOS4zN1E5LjgyIDkuMDYgOS42MiA4Ljg1IDkuNCA4LjY0IDkuMSA4LjY0IDguOSA4LjY0IDguNzIgOC43NCA4LjU1IDguODUgOC40NSA5LjAzTDcuMTUgMTEuNDdMNS44OSA5LjAzUTUuNzcgOC44IDUuNTcgOC43MiA1LjM3IDguNjQgNS4xMyA4LjY0IDQuODIgOC42NCA0LjYxIDguODUgNC40IDkuMDYgNC40IDkuMzYgNC40IDkuNTcgNC41IDkuNzNMNi4yNSAxMi44N1E2LjI3IDEyLjkxIDYuMjkgMTIuOTcgNi4zIDEzLjAzIDYuMyAxMy4wOFYxNC42M1E2LjMgMTUgNi41NiAxNS4xOSA2LjgxIDE1LjM2IDcuMTUgMTUuMzYgNy4zOSAxNS4zNiA3LjU0IDE1LjI3IDcuNjggMTUuMTggNy43NiAxNS4wMyA3Ljg0IDE0Ljg4IDcuODcgMTQuNjkgNy45IDE0LjUgNy45IDE0LjI4IDcuOSAxNCA3Ljg4IDEzLjc2IDcuODYgMTMuNSA3Ljg2IDEzLjI4IDcuODYgMTMuMTQgNy44NyAxMy4wMyA3Ljg4IDEyLjkzIDcuOTMgMTIuODVMOS43MyA5LjczUTkuODMgOS41NSA5LjgzIDkuMzdNMTUuMTcgMy42M0wxMS44IDdRMTIgNy4xMiAxMi4xIDcuMzEgMTIuMjIgNy41IDEyLjIyIDcuNzRWMTAuMDdMMTcuNzIgOC42MVExNy4zNCA3LjE5IDE2LjcxIDYgMTYuMDggNC43NyAxNS4xNyAzLjYzTTE3LjczIDE1LjQyTDEyLjIyIDEzLjk1VjE2LjI2UTEyLjIyIDE2LjUgMTIuMSAxNi42OSAxMiAxNi44OCAxMS44IDE3TDE1LjE4IDIwLjM3UTE2LjA3IDE5LjI5IDE2LjcyIDE4LjA0IDE3LjM3IDE2Ljc5IDE3LjczIDE1LjQzVjE1LjQyTTIwLjQ3IDE0Ljg0UTIwLjYgMTQuMTQgMjAuNjYgMTMuNDMgMjAuNzIgMTIuNzMgMjAuNzIgMTIgMjAuNzIgMTEuMjkgMjAuNjYgMTAuNTkgMjAuNiA5Ljg5IDIwLjQ3IDkuMTkgMTguNCA5Ljc0IDE2LjM1IDEwLjI5IDE0LjMgMTAuODMgMTIuMjIgMTEuMzkgMTIuMjEgMTEuNTUgMTIuMjEgMTEuN1YxMi4zMkwxMi4yMiAxMi42M1ExNC4zIDEzLjE5IDE2LjM1IDEzLjczIDE4LjQgMTQuMjcgMjAuNDcgMTQuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm93YXZlID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMTZWMTdINFY3TTE5LDdBMSwxIDAgMCwxIDIwLDhBMSwxIDAgMCwxIDE5LDlBMSwxIDAgMCwxIDE4LDhBMSwxIDAgMCwxIDE5LDdNMTMsOVYxNUgxNVY5SDEzTTE5LDExQTEsMSAwIDAsMSAyMCwxMkExLDEgMCAwLDEgMTksMTNBMSwxIDAgMCwxIDE4LDEyQTEsMSAwIDAsMSAxOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3dhdmVPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDMuMjYgNS4xNUMyLjUgNS40NCAyIDYuMTYgMiA3VjE3QzIgMTguMTEgMi45IDE5IDQgMTlIMTcuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNCAxN1Y3SDUuMTFMMTUuMTEgMTdINE0xNiA3VjEyLjhMMjEuNSAxOC4zMUMyMS44MSAxNy45NSAyMiAxNy41IDIyIDE3VjdDMjIgNS45IDIxLjExIDUgMjAgNUg4LjJMMTAuMiA3SDE2TTE5IDdDMTkuNTUgNyAyMCA3LjQ1IDIwIDhTMTkuNTUgOSAxOSA5IDE4IDguNTUgMTggOCAxOC40NSA3IDE5IDdNMTkgMTFDMTkuNTUgMTEgMjAgMTEuNDUgMjAgMTJTMTkuNTUgMTMgMTkgMTMgMTggMTIuNTUgMTggMTIgMTguNDUgMTEgMTkgMTFNMTMgOS44VjlIMTVWMTEuOEwxMyA5LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkZGxld2FyZSA9IFwiTTIzIDEyTDE5IDhWMTFIMTQuODJDMTQuNCA5Ljg0IDEzLjMgOSAxMiA5UzkuNiA5Ljg0IDkuMTggMTFINUwyIDhWMTZMNSAxM0g5LjE4QzkuNiAxNC4xNiAxMC43IDE1IDEyIDE1UzE0LjQgMTQuMTYgMTQuODIgMTNIMTlWMTZMMjMgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkZGxld2FyZU91dGxpbmUgPSBcIk0yMyAxMkwxOSA4VjExSDE1Ljg2QzE1LjQxIDkuMjggMTMuODYgOCAxMiA4UzguNTkgOS4yOCA4LjE0IDExSDVMMiA4VjE2TDUgMTNIOC4xNEM4LjU5IDE0LjcyIDEwLjE0IDE2IDEyIDE2UzE1LjQxIDE0LjcyIDE1Ljg2IDEzSDE5VjE2TDIzIDEyTTEyIDE0QzEwLjkgMTQgMTAgMTMuMSAxMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMkMxNCAxMy4xIDEzLjEgMTQgMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkaSA9IFwiTTIwLjE1IDguMjZIMjJWMTUuNzRIMjAuMTVNMTMgOC4yNkgxOC40M0MxOSA4LjI2IDE5LjMgOC43NCAxOS4zIDkuM1YxNC44MUMxOS4zIDE1LjUgMTkgMTUuNzQgMTguMzggMTUuNzRIMTNWMTFIMTQuODdWMTMuOTFIMTcuNVY5Ljk1SDEzTTEwLjMyIDguMjZIMTIuMTRWMTUuNzRIMTAuMzJNMiA4LjI2SDguNTVDOS4xIDguMjYgOS40MSA4Ljc0IDkuNDEgOS4zVjE1Ljc0SDcuNTlWMTAuMTVINi41VjE1Ljc0SDQuODdWMTAuMTVIMy44M1YxNS43NEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pZGlQb3J0ID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMjAuMTgsMTJDMjAuMTgsOC4xOCAxNy41NSw0Ljk2IDE0LDQuMDdWNkgxMFY0LjA3QzYuNDUsNC45NiAzLjgyLDguMTggMy44MiwxMkE4LjE4LDguMTggMCAwLDAgMTIsMjAuMThBOC4xOCw4LjE4IDAgMCwwIDIwLjE4LDEyTTcsMTAuNjRBMS4zNiwxLjM2IDAgMCwxIDguMzYsMTJBMS4zNiwxLjM2IDAgMCwxIDcsMTMuMzZDNi4yNSwxMy4zNiA1LjY0LDEyLjc1IDUuNjQsMTJDNS42NCwxMS4yNSA2LjI1LDEwLjY0IDcsMTAuNjRNMTcsMTAuNjRBMS4zNiwxLjM2IDAgMCwxIDE4LjM2LDEyQTEuMzYsMS4zNiAwIDAsMSAxNywxMy4zNkExLjM2LDEuMzYgMCAwLDEgMTUuNjQsMTJBMS4zNiwxLjM2IDAgMCwxIDE3LDEwLjY0TTguMzYsMTQuMjdBMS4zNywxLjM3IDAgMCwxIDkuNzMsMTUuNjRDOS43MywxNi4zOSA5LjEyLDE3IDguMzYsMTdBMS4zNiwxLjM2IDAgMCwxIDcsMTUuNjRDNywxNC44OCA3LjYxLDE0LjI3IDguMzYsMTQuMjdNMTUuNjQsMTQuMjdDMTYuMzksMTQuMjcgMTcsMTQuODggMTcsMTUuNjRBMS4zNiwxLjM2IDAgMCwxIDE1LjY0LDE3QzE0Ljg4LDE3IDE0LjI3LDE2LjM5IDE0LjI3LDE1LjY0QTEuMzcsMS4zNyAwIDAsMSAxNS42NCwxNC4yN00xMiwxNS42NEExLjM2LDEuMzYgMCAwLDEgMTMuMzYsMTdBMS4zNiwxLjM2IDAgMCwxIDEyLDE4LjM2QTEuMzYsMS4zNiAwIDAsMSAxMC42NCwxN0ExLjM2LDEuMzYgMCAwLDEgMTIsMTUuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWluZSA9IFwiTTIzLDEzVjExSDE5LjkzQzE5Ljc1LDkuNTggMTkuMTksOC4yMyAxOC4zMSw3LjFMMjAuNSw0LjkzTDE5LjA3LDMuNUwxNi45LDUuNjlDMTUuNzcsNC44MSAxNC40Miw0LjI1IDEzLDQuMDdWMUgxMVY0LjA3QzkuNTgsNC4yNSA4LjIzLDQuODEgNy4xLDUuNjlMNC45MywzLjVMMy41LDQuOTNMNS42OSw3LjFDNC44MSw4LjIzIDQuMjUsOS41OCA0LjA3LDExSDFWMTNINC4wN0M0LjI1LDE0LjQyIDQuODEsMTUuNzcgNS42OSwxNi45TDMuNSwxOS4wN0w0LjkzLDIwLjVMNy4xLDE4LjMxQzguMjMsMTkuMTkgOS41OCwxOS43NSAxMSwxOS45M1YyM0gxM1YxOS45M0MxNC40MiwxOS43NSAxNS43NywxOS4xOSAxNi45LDE4LjMxTDE5LjA3LDIwLjVMMjAuNSwxOS4wN0wxOC4zMSwxNi45QzE5LjE5LDE1Ljc3IDE5Ljc1LDE0LjQyIDE5LjkzLDEzSDIzTTEyLDhBNCw0IDAgMCwwIDgsMTJINkE2LDYgMCAwLDEgMTIsNlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbmVjcmFmdCA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFY0QTIsMiAwIDAsMSA0LDJNNiw2VjEwSDEwVjEySDhWMThIMTBWMTZIMTRWMThIMTZWMTJIMTRWMTBIMThWNkgxNFYxMEgxMFY2SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWluaVNkID0gXCJNNiw0QTIsMiAwIDAsMCA0LDZWMThBMiwyIDAgMCwwIDYsMjBIMThBMiwyIDAgMCwwIDIwLDE4VjEyTDE4LDEwVjZBMiwyIDAgMCwwIDE2LDRINk03LDZIOVYxMEg3VjZNMTAsNkgxMlYxMEgxMFY2TTEzLDZIMTVWMTBIMTNWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW5pZGlzYyA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzSDVNMTIsNUMxNS4wOSw1IDE3LjgyLDcuMDQgMTguNywxMEgxNkExLDEgMCAwLDAgMTUsMTFWMTNBMSwxIDAgMCwwIDE2LDE0SDE4LjcxQzE3LjgyLDE2Ljk3IDE1LjA5LDE5IDEyLDE5QTcsNyAwIDAsMSA1LDEyQTcsNyAwIDAsMSAxMiw1TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51cyA9IFwiTTE5LDEzSDVWMTFIMTlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNCb3ggPSBcIk0xNywxM0g3VjExSDE3TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbnVzQm94TXVsdGlwbGUgPSBcIk0xOSAxMUg5VjlIMTlNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk00IDZIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE4VjIwSDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE4IDExSDEwVjlIMThNMjAgNFYxNkg4VjRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk00IDZIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE4VjIwSDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0JveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QzMsMy44OSAzLjksMyA1LDNIMTlNMTcsMTFWMTNIN1YxMUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0NpcmNsZSA9IFwiTTE3LDEzSDdWMTFIMTdNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVNdWx0aXBsZSA9IFwiTTIgMTJDMiA5LjIxIDMuNjQgNi44IDYgNS42OFYzLjVDMi41IDQuNzYgMCA4LjA5IDAgMTJTMi41IDE5LjI0IDYgMjAuNVYxOC4zMkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyTTE1IDNDMTAuMDQgMyA2IDcuMDQgNiAxMlMxMC4wNCAyMSAxNSAyMSAyNCAxNi45NiAyNCAxMiAxOS45NiAzIDE1IDNNMjAgMTNIMTBWMTFIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVNdWx0aXBsZU91dGxpbmUgPSBcIk0xMSAxMVYxM0gxOVYxMUgxMU0yIDEyQzIgOS4yMSAzLjY0IDYuOCA2IDUuNjhWMy41QzIuNSA0Ljc2IDAgOC4wOSAwIDEyUzIuNSAxOS4yNCA2IDIwLjVWMTguMzJDMy42NCAxNy4yIDIgMTQuNzkgMiAxMk0xNSAzQzEwLjA0IDMgNiA3LjA0IDYgMTJTMTAuMDQgMjEgMTUgMjEgMjQgMTYuOTYgMjQgMTIgMTkuOTYgMyAxNSAzTTE1IDE5QzExLjE0IDE5IDggMTUuODYgOCAxMlMxMS4xNCA1IDE1IDUgMjIgOC4xNCAyMiAxMiAxOC44NiAxOSAxNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0NpcmNsZU9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDQuMSA2QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuNCAyMS4yIDE4IDE5LjlMMjAuOCAyMi43TDIyLjEgMjEuNU03IDEzVjExSDkuMUwxMS4xIDEzSDdNMTQuMiAxMUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45IDIxLjQgMTUuNyAyMC41IDE3LjNMMTYuMiAxM0gxN1YxMUgxNC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbnVzQ2lyY2xlT2ZmT3V0bGluZSA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDQuMSA2QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuNCAyMS4yIDE4IDE5LjlMMjAuOCAyMi43TDIyLjEgMjEuNU0xMiAyMEM3LjYgMjAgNCAxNi40IDQgMTJDNCAxMC4zIDQuNiA4LjcgNS41IDcuNEw5LjEgMTFIN1YxM0gxMS4xTDE2LjYgMTguNUMxNS4zIDE5LjQgMTMuNyAyMCAxMiAyME04LjIgNUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45IDIxLjQgMTUuNyAyMC41IDE3LjNMMTkgMTUuOEMxOS42IDE0LjcgMjAgMTMuNCAyMCAxMkMyMCA3LjYgMTYuNCA0IDEyIDRDMTAuNiA0IDkuMyA0LjQgOC4yIDVNMTYuMiAxM0wxNC4yIDExSDE3VjEzSDE2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk03LDEzSDE3VjExSDdcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c05ldHdvcmsgPSBcIk0xNiwxMVY5SDhWMTFIMTZNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTUsMTFWOUg5VjExSDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNUaGljayA9IFwiTTIwIDE0SDRWMTBIMjBWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlycm9yID0gXCJNMTIgMUMxNi42OSAxIDIwLjUgNS45MyAyMC41IDEyQzIwLjUgMTguMDggMTYuNjkgMjMgMTIgMjNDNy4zMSAyMyAzLjUgMTguMDggMy41IDEyQzMuNSA1LjkzIDcuMzEgMSAxMiAxTTEyIDNDOC40MSAzIDUuNSA3LjAzIDUuNSAxMkM1LjUgMTYuOTcgOC40MSAyMSAxMiAyMUMxNS41OSAyMSAxOC41IDE2Ljk3IDE4LjUgMTJDMTguNSA3LjAzIDE1LjU5IDMgMTIgM004LjI5IDEwLjI4TDExLjUzIDcuMDNMMTIuNTkgOC4wOUw5LjM1IDExLjM0TDguMjkgMTAuMjhNOC43IDE0LjYxTDE0LjM2IDguOTVMMTUuNDIgMTBMOS43NiAxNS42N0w4LjcgMTQuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWl4ZWRNYXJ0aWFsQXJ0cyA9IFwiTTE1LDEwVjdIN1YxMEgxNU0xOCw3QzE4LjI4LDcgMTguNSw3LjA5IDE4LjcsNy4yOUMxOC44OSw3LjUgMTksNy43MyAxOSw4VjEwLjc4QzE5LDEwLjk3IDE4Ljk3LDExLjExIDE4Ljk0LDExLjJMMTguMTQsMTUuMTlDMTgsMTUuNzIgMTcuNywxNiAxNy4yLDE2SDYuOEM2LjI3LDE2IDUuOTUsMTUuNzIgNS44NiwxNS4xOUw1LjA2LDExLjJDNS4wMywxMS4xMSA1LDEwLjk3IDUsMTAuNzhWNUM1LDQuNSA1LjIxLDQgNS42LDMuNjFDNiwzLjIgNi40NSwzIDcsM0gxNUMxNS41MywzIDE2LDMuMiAxNi40MSwzLjYxQzE2LjgxLDQgMTcsNC41IDE3LDVWOEMxNyw3LjczIDE3LjExLDcuNSAxNy4zLDcuMjlDMTcuNSw3LjA5IDE3LjcyLDcgMTgsN003LDIwVjE3SDE3VjIwQzE3LDIwLjMgMTYuOTEsMjAuNTMgMTYuNzEsMjAuNzJDMTYuNSwyMC45MSAxNi4yNywyMSAxNiwyMUg4QzcuNzMsMjEgNy41LDIwLjkxIDcuMjksMjAuNzJDNy4wOSwyMC41MyA3LDIwLjMgNywyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaXhlZFJlYWxpdHkgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QTIsMiAwIDAsMSA1LDNNOC4yNSwxNUg5Ljc1TDEwLjc1LDExLjU3VjE1SDEyLjI1VjlIMTBMOSwxMi40M0w4LDlINS43NVYxNUg3LjI1VjExLjU3TDguMjUsMTVNMTMuNSw5VjE1SDE1VjEzSDE2LjE1TDE3LDE1SDE4LjVMMTcuNiwxMi45QzE4LjEsMTIuNjUgMTguNSwxMi4xIDE4LjUsMTEuNVYxMC41QzE4LjUsOS42NSAxNy44NSw5IDE3LDlIMTMuNU0xNSwxMC41SDE3VjExLjVIMTVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb2xlY3VsZSA9IFwiTTcuMjcsMTBMOSw3SDE0LjQyTDE1LjU4LDVMMTUuNSw0LjVBMS41LDEuNSAwIDAsMSAxNywzQTEuNSwxLjUgMCAwLDEgMTguNSw0LjVDMTguNSw1LjIxIDE4LDUuODEgMTcuMzMsNS45NkwxNi4zNyw3LjYzTDE3LjczLDEwTDE4LjU5LDguNUwxOC41LDhBMS41LDEuNSAwIDAsMSAyMCw2LjVBMS41LDEuNSAwIDAsMSAyMS41LDhDMjEuNSw4LjcxIDIxLDkuMyAyMC4zNSw5LjQ2TDE4Ljg5LDEyTDIwLjYyLDE1QzIxLjM5LDE1LjA3IDIyLDE1LjcxIDIyLDE2LjVBMS41LDEuNSAwIDAsMSAyMC41LDE4QTEuNSwxLjUgMCAwLDEgMTksMTYuNVYxNi4yNEwxNy43MywxNEwxNi4zNywxNi4zN0wxNy4zMywxOC4wNEMxOCwxOC4xOSAxOC41LDE4Ljc5IDE4LjUsMTkuNUExLjUsMS41IDAgMCwxIDE3LDIxQTEuNSwxLjUgMCAwLDEgMTUuNSwxOS41TDE1LjU4LDE5TDE0LjQyLDE3SDEwLjU4TDkuNDIsMTlMOS41LDE5LjVBMS41LDEuNSAwIDAsMSA4LDIxQTEuNSwxLjUgMCAwLDEgNi41LDE5LjVDNi41LDE4Ljc5IDcsMTguMTkgNy42NywxOC4wNEw4LjYzLDE2LjM3TDQuMzgsOUMzLjYxLDguOTMgMyw4LjI5IDMsNy41QTEuNSwxLjUgMCAwLDEgNC41LDZBMS41LDEuNSAwIDAsMSA2LDcuNUM2LDcuNTkgNiw3LjY4IDYsNy43Nkw3LjI3LDEwTTEwLjE1LDlMOC40MiwxMkwxMC4xNSwxNUgxNC44NUwxNi41OCwxMkwxNC44NSw5SDEwLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbGVjdWxlQ28gPSBcIk04IDdDNi45IDcgNiA3LjkgNiA5VjE1QzYgMTYuMTEgNi45IDE3IDggMTdIMTFWMTVIOFY5SDExVjdIOE0xNCA3QzEyLjkgNyAxMiA3LjkgMTIgOVYxNUMxMiAxNi4xMSAxMi45IDE3IDE0IDE3SDE2QzE3LjExIDE3IDE4IDE2LjExIDE4IDE1VjlDMTggNy45IDE3LjExIDcgMTYgN0gxNE0xNCA5SDE2VjE1SDE0VjlcIjtcclxuZXhwb3J0IHZhciBtZGlNb2xlY3VsZUNvMiA9IFwiTTUsN0EyLDIgMCAwLDAgMyw5VjE1QTIsMiAwIDAsMCA1LDE3SDhWMTVINVY5SDhWN0g1TTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTE2LDEwLjVWMTJIMTlWMTMuNUgxNy41QTEuNSwxLjUgMCAwLDAgMTYsMTVWMThIMjAuNVYxNi41SDE3LjVWMTVIMTlBMS41LDEuNSAwIDAsMCAyMC41LDEzLjVWMTJBMS41LDEuNSAwIDAsMCAxOSwxMC41SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3IgPSBcIk0yMSwxNkgzVjRIMjFNMjEsMkgzQzEuODksMiAxLDIuODkgMSw0VjE2QTIsMiAwIDAsMCAzLDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFBMiwyIDAgMCwwIDIzLDE2VjRDMjMsMi44OSAyMi4xLDIgMjEsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yQ2VsbHBob25lID0gXCJNMjMsMTFIMThBMSwxIDAgMCwwIDE3LDEyVjIxQTEsMSAwIDAsMCAxOCwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWMTJBMSwxIDAgMCwwIDIzLDExTTIzLDIwSDE4VjEzSDIzVjIwTTIwLDJIMkMwLjg5LDIgMCwyLjg5IDAsNFYxNkEyLDIgMCAwLDAgMiwxOEg5VjIwSDdWMjJIMTVWMjBIMTNWMThIMTVWMTZIMlY0SDIwVjlIMjJWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JDZWxscGhvbmVTdGFyID0gXCJNMjMsMTFIMThBMSwxIDAgMCwwIDE3LDEyVjIxQTEsMSAwIDAsMCAxOCwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWMTJBMSwxIDAgMCwwIDIzLDExTTIzLDIwSDE4VjEzSDIzVjIwTTIwLDJIMkMwLjg5LDIgMCwyLjg5IDAsNFYxNkEyLDIgMCAwLDAgMiwxOEg5VjIwSDdWMjJIMTVWMjBIMTNWMThIMTVWMTZIMlY0SDIwVjlIMjJWNEMyMiwyLjg5IDIxLjEsMiAyMCwyTTExLjk3LDlMMTEsNkwxMC4wMyw5SDdMOS40NywxMC43Nkw4LjUzLDEzLjY3TDExLDExLjg3TDEzLjQ3LDEzLjY3TDEyLjUzLDEwLjc2TDE1LDlIMTEuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckNsZWFuID0gXCJNMjEgMTZIM1Y0SDIxTTIxIDJIM0MxLjg5IDIgMSAyLjg5IDEgNFYxNkMxIDE3LjExIDEuOSAxOCAzIDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFDMjIuMTEgMTggMjMgMTcuMTEgMjMgMTZWNEMyMyAyLjg5IDIyLjEgMiAyMSAyTTE1IDUuNUwxNC4zOCA2Ljg3TDEzIDcuNUwxNC4zOCA4LjEzTDE1IDkuNUwxNS42MyA4LjEzTDE3IDcuNUwxNS42MyA2Ljg3TDE1IDUuNU0xMC41IDcuNUw5LjQxIDkuOTFMNyAxMUw5LjQxIDEyLjA5TDEwLjUgMTQuNUwxMS42IDEyLjA5TDE0IDExTDExLjYgOS45MUwxMC41IDcuNVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JEYXNoYm9hcmQgPSBcIk0yMSwxNlY0SDNWMTZIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU01LDZIMTRWMTFINVY2TTE1LDZIMTlWOEgxNVY2TTE5LDlWMTRIMTVWOUgxOU01LDEySDlWMTRINVYxMk0xMCwxMkgxNFYxNEgxMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yRWRpdCA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMTZDMSAxNy4xMSAxLjkgMTggMyAxOEgxMFYyMEg4VjIySDE2VjIwSDE0VjE4SDIxQzIyLjExIDE4IDIzIDE3LjExIDIzIDE2VjRDMjMgMi45IDIyLjExIDIgMjEgMk0yMSAxNkgzVjRIMjFWMTZNMTUuODQgOC4yTDE0LjgzIDkuMjFMMTIuNzYgNy4xOEwxMy43NyA2LjE2QzEzLjk3IDUuOTUgMTQuMzEgNS45NCAxNC41NSA2LjE2TDE1Ljg0IDcuNDFDMTYuMDUgNy42MiAxNi4wNiA3Ljk2IDE1Ljg0IDguMk04IDExLjkxTDEyLjE3IDcuNzJMMTQuMjQgOS44TDEwLjA4IDE0SDhWMTEuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckV5ZSA9IFwiTTMgNFYxNkgyMVY0SDNNMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRWMTZDMjMgMTYuNTMgMjIuNzkgMTcuMDQgMjIuNDEgMTcuNDFDMjIuMDQgMTcuNzkgMjEuNTMgMTggMjEgMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzIuNDcgMTggMS45NiAxNy43OSAxLjU5IDE3LjQxQzEuMjEgMTcuMDQgMSAxNi41MyAxIDE2VjRDMSAyLjg5IDEuODkgMiAzIDJNMTAuODQgOC45M0MxMS4xNSA4LjYzIDExLjU3IDguNDUgMTIgOC40NUMxMi40MyA4LjQ2IDEyLjg1IDguNjMgMTMuMTYgOC45NEMxMy40NiA5LjI0IDEzLjY0IDkuNjYgMTMuNjQgMTAuMDlDMTMuNjQgMTAuNTMgMTMuNDYgMTAuOTQgMTMuMTYgMTEuMjVDMTIuODUgMTEuNTYgMTIuNDMgMTEuNzMgMTIgMTEuNzNDMTEuNTcgMTEuNzMgMTEuMTUgMTEuNTUgMTAuODQgMTEuMjVDMTAuNTQgMTAuOTQgMTAuMzYgMTAuNTMgMTAuMzYgMTAuMDlDMTAuMzYgOS42NiAxMC41NCA5LjI0IDEwLjg0IDguOTNNMTAuMDcgMTJDMTAuNTggMTIuNTMgMTEuMjggMTIuODIgMTIgMTIuODJDMTIuNzIgMTIuODIgMTMuNDIgMTIuNTMgMTMuOTMgMTJDMTQuNDQgMTEuNSAxNC43MyAxMC44MSAxNC43MyAxMC4wOUMxNC43MyA5LjM3IDE0LjQ0IDguNjcgMTMuOTMgOC4xNkMxMy40MiA3LjY1IDEyLjcyIDcuMzYgMTIgNy4zNkMxMS4yOCA3LjM2IDEwLjU4IDcuNjUgMTAuMDcgOC4xNkM5LjU2IDguNjcgOS4yNyA5LjM3IDkuMjcgMTAuMDlDOS4yNyAxMC44MSA5LjU2IDExLjUgMTAuMDcgMTJNNiAxMC4wOUM2Ljk0IDcuNyA5LjI3IDYgMTIgNkMxNC43MyA2IDE3LjA2IDcuNyAxOCAxMC4wOUMxNy4wNiAxMi41IDE0LjczIDE0LjE4IDEyIDE0LjE4QzkuMjcgMTQuMTggNi45NCAxMi41IDYgMTAuMDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckxvY2sgPSBcIk0yMC41LDEzQTIuNSwyLjUgMCAwLDEgMjMsMTUuNVYxNkExLDEgMCAwLDEgMjQsMTdWMjFBMSwxIDAgMCwxIDIzLDIySDE4QTEsMSAwIDAsMSAxNywyMVYxN0ExLDEgMCAwLDEgMTgsMTZWMTUuNUEyLjUsMi41IDAgMCwxIDIwLjUsMTNNMjAuNSwxNEExLjUsMS41IDAgMCwwIDE5LDE1LjVWMTZIMjJWMTUuNUExLjUsMS41IDAgMCwwIDIwLjUsMTRNMjAsNEgyVjE2SDE1VjE4SDEzVjIwSDE1VjIySDdWMjBIOVYxOEgyQzAuODksMTggMCwxNy4xIDAsMTZWNEMwLDIuODkgMC44OSwyIDIsMkgyMEEyLDIgMCAwLDEgMjIsNFYxMS41M0MyMS40MSwxMS4xOSAyMC43MywxMSAyMCwxMVY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JNdWx0aXBsZSA9IFwiTTIyLDE3VjdINlYxN0gyMk0yMiw1QTIsMiAwIDAsMSAyNCw3VjE3QzI0LDE4LjExIDIzLjEsMTkgMjIsMTlIMTZWMjFIMThWMjNIMTBWMjFIMTJWMTlINkM0Ljg5LDE5IDQsMTguMTEgNCwxN1Y3QTIsMiAwIDAsMSA2LDVIMjJNMiwzVjE1SDBWM0EyLDIgMCAwLDEgMiwxSDIwVjNIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yT2ZmID0gXCJNMTQsMThWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQTIsMiAwIDAsMSAxLDE2VjRMMCwzTDEuNDEsMS41OEwyMi4xNiwyMi4zNEwyMC43NSwyMy43NUwxNSwxOEgxNE0zLDE2SDEzTDMsNlYxNk0yMSwyQTIsMiAwIDAsMSAyMyw0VjE2QTIsMiAwIDAsMSAyMSwxOEgyMC42NkwxOC42NiwxNkgyMVY0SDYuNjZMNC42NiwySDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JTY3JlZW5zaG90ID0gXCJNOSw2SDVWMTBIN1Y4SDlNMTksMTBIMTdWMTJIMTVWMTRIMTlNMjEsMTZIM1Y0SDIxTTIxLDJIM0MxLjg5LDIgMSwyLjg5IDEsNFYxNkEyLDIgMCAwLDAgMywxOEgxMFYyMEg4VjIySDE2VjIwSDE0VjE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QzIzLDIuODkgMjIuMSwyIDIxLDJcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yU2hhcmUgPSBcIk0yMyA0VjE2QzIzIDE3LjExIDIyLjExIDE4IDIxIDE4SDE1VjE2SDIxVjRIM1YxNkg5VjE4SDNDMS45IDE4IDEgMTcuMTEgMSAxNlY0QzEgMi44OSAxLjg5IDIgMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRNMTMgMTNIMTZMMTIgOUw4IDEzSDExVjIwSDhWMjJIMTZWMjBIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclNwZWFrZXIgPSBcIk0xMCAyMFYxOEgzQzEuOSAxOCAxIDE3LjEgMSAxNlY0QzEgMi44OSAxLjg5IDIgMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRWOEgyMVY0SDNWMTZIMTJWMjJIOFYyMEgxME0xOC41IDE1QzE3LjEyIDE1IDE2IDE2LjEyIDE2IDE3LjVTMTcuMTIgMjAgMTguNSAyMCAyMSAxOC44OCAyMSAxNy41IDE5Ljg4IDE1IDE4LjUgMTVNMjMgMTBWMjFDMjMgMjEuNTUgMjIuNTUgMjIgMjIgMjJIMTVDMTQuNDUgMjIgMTQgMjEuNTUgMTQgMjFWMTBDMTQgOS40NSAxNC40NSA5IDE1IDlIMjJDMjIuNTUgOSAyMyA5LjQ1IDIzIDEwTTE3IDExLjVDMTcgMTIuMzMgMTcuNjcgMTMgMTguNSAxM1MyMCAxMi4zMyAyMCAxMS41IDE5LjMzIDEwIDE4LjUgMTAgMTcgMTAuNjcgMTcgMTEuNU0yMiAxNy41QzIyIDE1LjU3IDIwLjQzIDE0IDE4LjUgMTRTMTUgMTUuNTcgMTUgMTcuNSAxNi41NyAyMSAxOC41IDIxIDIyIDE5LjQzIDIyIDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclNwZWFrZXJPZmYgPSBcIk0yMy4xIDIyLjVMMS40LjcuMSAyTDEuMiAzLjFDMS4xIDMuNCAxIDMuNyAxIDRWMTZDMSAxNy4xIDEuOSAxOCAzIDE4SDEwVjIwSDhWMjJIMTJWMTZIM1Y0LjlMMTQgMTUuOVYyMUMxNCAyMS42IDE0LjUgMjIgMTUgMjJIMjAuMUwyMS44IDIzLjdMMjMuMSAyMi41TTE4LjUgMjFDMTYuNiAyMSAxNSAxOS40IDE1IDE3LjVDMTUgMTcuMyAxNSAxNy4xIDE1LjEgMTYuOUwxNi4xIDE3LjlDMTYuMyAxOC45IDE3LjEgMTkuNyAxOC4xIDE5LjlMMTkuMSAyMC45QzE4LjkgMjEgMTguNyAyMSAxOC41IDIxTTIxIDE3LjVWMTcuOEwxOC4yIDE1SDE4LjVDMTkuOSAxNSAyMSAxNi4xIDIxIDE3LjVNMjMgMTkuOFYxMEMyMyA5LjQgMjIuNSA5IDIyIDlIMTVDMTQuNCA5IDE0IDkuNSAxNCAxMFYxMC44TDE3LjQgMTQuMkMxNy43IDE0LjEgMTguMSAxNCAxOC41IDE0QzIwLjQgMTQgMjIgMTUuNiAyMiAxNy41QzIyIDE3LjkgMjEuOSAxOC4zIDIxLjggMTguNkwyMyAxOS44TTE4LjUgMTNDMTcuNyAxMyAxNyAxMi4zIDE3IDExLjVTMTcuNyAxMCAxOC41IDEwIDIwIDEwLjcgMjAgMTEuNSAxOS4zIDEzIDE4LjUgMTNNNy4yIDRMNS4yIDJIMjFDMjIuMSAyIDIzIDIuOSAyMyA0VjhIMjFWNEg3LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclN0YXIgPSBcIk0yMSwxNlY0SDNWMTZIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU0xMi45Nyw5SDE2TDEzLjUzLDEwLjc2TDE0LjQ3LDEzLjY3TDEyLDExLjg3TDkuNTMsMTMuNjdMMTAuNDcsMTAuNzZMOCw5SDExLjAzTDEyLDZMMTIuOTcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uRmlyc3RRdWFydGVyID0gXCJNMTIgMlYyMkExMCAxMCAwIDAgMCAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vb25GdWxsID0gXCJNMTIgMkExMCAxMCAwIDEgMSAyIDEyQTEwIDEwIDAgMCAxIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbkxhc3RRdWFydGVyID0gXCJNMTIgMkExMCAxMCAwIDAgMCAxMiAyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uTmV3ID0gXCJNMTIgMjBBOCA4IDAgMSAxIDIwIDEyQTggOCAwIDAgMSAxMiAyME0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwIDEwIDAgMCAwIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldhbmluZ0NyZXNjZW50ID0gXCJNMiAxMkExMCAxMCAwIDAgMCAxNSAyMS41NEExMCAxMCAwIDAgMSAxNSAyLjQ2QTEwIDEwIDAgMCAwIDIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldhbmluZ0dpYmJvdXMgPSBcIk0xOCAxMkMxOCA3LjUgMTYuMDggMy4yNiAxMiAyQTEwIDEwIDAgMCAwIDEyIDIyQzE2LjA4IDIwLjc0IDE4IDE2LjUgMTggMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldheGluZ0NyZXNjZW50ID0gXCJNMTIgMkE5LjkxIDkuOTEgMCAwIDAgOSAyLjQ2QTEwIDEwIDAgMCAxIDkgMjEuNTRBMTAgMTAgMCAxIDAgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uV2F4aW5nR2liYm91cyA9IFwiTTYgMTJDNiA3LjUgNy45MyAzLjI2IDEyIDJBMTAgMTAgMCAwIDEgMTIgMjJDNy45MyAyMC43NCA2IDE2LjUgNiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZCA9IFwiTTE5IDE1QzE5LjU1IDE1IDIwIDE1LjQ1IDIwIDE2QzIwIDE2LjU1IDE5LjU1IDE3IDE5IDE3UzE4IDE2LjU1IDE4IDE2QzE4IDE1LjQ1IDE4LjQ1IDE1IDE5IDE1TTE5IDEzQzE3LjM0IDEzIDE2IDE0LjM0IDE2IDE2UzE3LjM0IDE5IDE5IDE5IDIyIDE3LjY2IDIyIDE2IDIwLjY2IDEzIDE5IDEzTTEwIDZINVY4SDEwVjZNMTcgNUgxNFY3SDE3VjkuNjVMMTMuNSAxNEgxMFY5SDZDMy43OSA5IDIgMTAuNzkgMiAxM1YxNkg0QzQgMTcuNjYgNS4zNCAxOSA3IDE5UzEwIDE3LjY2IDEwIDE2SDE0LjVMMTkgMTAuMzVWN0MxOSA1LjkgMTguMTEgNSAxNyA1TTcgMTdDNi40NSAxNyA2IDE2LjU1IDYgMTZIOEM4IDE2LjU1IDcuNTUgMTcgNyAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZEVsZWN0cmljID0gXCJNMTkgNUMxOSAzLjkgMTguMSAzIDE3IDNIMTRWNUgxN1Y3LjY1TDEzLjUgMTJIMTBWN0g2QzMuNzkgNyAyIDguNzkgMiAxMVYxNEg0QzQgMTUuNjYgNS4zNCAxNyA3IDE3UzEwIDE1LjY2IDEwIDE0SDE0LjVMMTkgOC4zNVY1TTcgMTVDNi40NSAxNSA2IDE0LjU1IDYgMTRIOEM4IDE0LjU1IDcuNTUgMTUgNyAxNU01IDRIMTBWNkg1VjRNMTkgMTFDMTcuMzQgMTEgMTYgMTIuMzQgMTYgMTRTMTcuMzQgMTcgMTkgMTcgMjIgMTUuNjYgMjIgMTQgMjAuNjYgMTEgMTkgMTFNMTkgMTVDMTguNDUgMTUgMTggMTQuNTUgMTggMTRTMTguNDUgMTMgMTkgMTMgMjAgMTMuNDUgMjAgMTQgMTkuNTUgMTUgMTkgMTVNNyAyMEgxMVYxOEwxNyAyMUgxM1YyM0w3IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vcGVkRWxlY3RyaWNPdXRsaW5lID0gXCJNMTkgNUMxOSAzLjkgMTguMSAzIDE3IDNIMTRWNUgxN1Y3LjY1TDEzLjUgMTJIMTBWN0g2QzMuNzkgNyAyIDguNzkgMiAxMVYxNEg0QzQgMTUuNjYgNS4zNCAxNyA3IDE3UzEwIDE1LjY2IDEwIDE0SDE0LjVMMTkgOC4zNVY1TTQgMTJWMTFDNCA5LjkgNC45IDkgNiA5SDhWMTJINE03IDE1QzYuNDUgMTUgNiAxNC41NSA2IDE0SDhDOCAxNC41NSA3LjU1IDE1IDcgMTVNNSA0SDEwVjZINVY0TTE5IDExQzE3LjM0IDExIDE2IDEyLjM0IDE2IDE0UzE3LjM0IDE3IDE5IDE3IDIyIDE1LjY2IDIyIDE0IDIwLjY2IDExIDE5IDExTTE5IDE1QzE4LjQ1IDE1IDE4IDE0LjU1IDE4IDE0UzE4LjQ1IDEzIDE5IDEzIDIwIDEzLjQ1IDIwIDE0IDE5LjU1IDE1IDE5IDE1TTcgMjBIMTFWMThMMTcgMjFIMTNWMjNMNyAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZE91dGxpbmUgPSBcIk0xOSA3QzE5IDUuOSAxOC4xMSA1IDE3IDVIMTRWN0gxN1Y5LjY1TDEzLjUgMTRIMTBWOUg2QzMuNzkgOSAyIDEwLjc5IDIgMTNWMTZINEM0IDE3LjY2IDUuMzQgMTkgNyAxOVMxMCAxNy42NiAxMCAxNkgxNC41TDE5IDEwLjM1VjdNNyAxN0M2LjQ1IDE3IDYgMTYuNTUgNiAxNkg4QzggMTYuNTUgNy41NSAxNyA3IDE3TTggMTRINFYxM0M0IDExLjkgNC45IDExIDYgMTFIOFYxNE0xOSAxM0MxNy4zNCAxMyAxNiAxNC4zNCAxNiAxNlMxNy4zNCAxOSAxOSAxOSAyMiAxNy42NiAyMiAxNiAyMC42NiAxMyAxOSAxM00xOSAxN0MxOC40NSAxNyAxOCAxNi41NSAxOCAxNlMxOC40NSAxNSAxOSAxNSAyMCAxNS40NSAyMCAxNiAxOS41NSAxNyAxOSAxN00xMCA4SDVWNkgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vcmUgPSBcIk0xOSwxMy41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMkExLjUsMS41IDAgMCwxIDE5LDEwLjVBMS41LDEuNSAwIDAsMSAyMC41LDEyQTEuNSwxLjUgMCAwLDEgMTksMTMuNU0xNCwxMy41QTEuNSwxLjUgMCAwLDEgMTIuNSwxMkExLjUsMS41IDAgMCwxIDE0LDEwLjVBMS41LDEuNSAwIDAsMSAxNS41LDEyQTEuNSwxLjUgMCAwLDEgMTQsMTMuNU05LDEzLjVBMS41LDEuNSAwIDAsMSA3LjUsMTJBMS41LDEuNSAwIDAsMSA5LDEwLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgOSwxMy41TTIyLDNIN0M2LjMxLDMgNS43NywzLjM1IDUuNDEsMy44OEwwLDEyTDUuNDEsMjAuMTFDNS43NywyMC42NCA2LjM3LDIxIDcuMDYsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVDMjQsMy44OSAyMy4xLDMgMjIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RoZXJIZWFydCA9IFwiTTEyIDJDMTMuNjYgMiAxNSAzLjM0IDE1IDVTMTMuNjYgOCAxMiA4IDkgNi42NiA5IDUgMTAuMzQgMiAxMiAyTTIwIDE4TDE4IDEyLjU2QzE3LjY1IDExLjU3IDE3LjM0IDEwLjcxIDE2IDEwQzE0LjYzIDkuMyAxMy42MyA5IDEyIDlDMTAuMzkgOSA5LjM5IDkuMyA4IDEwQzYuNjggMTAuNzEgNi4zNyAxMS41NyA2IDEyLjU2TDQgMThDMy43NyAxOS4xMyA2LjM4IDIwLjQ0IDguMTMgMjEuMTlDOS4zNCAyMS43MiAxMC42NCAyMiAxMiAyMkMxMy4zOCAyMiAxNC42NyAyMS43MiAxNS44OSAyMS4xOUMxNy42NCAyMC40NCAyMC4yNSAxOS4xMyAyMCAxOE0xNS40MiAxNy41TDEyIDIxTDguNTggMTcuNUM4LjIyIDE3LjEyIDggMTYuNjEgOCAxNi4wNUM4IDE0LjkyIDguOSAxNCAxMCAxNEMxMC41NSAxNCAxMS4wNiAxNC4yMyAxMS40MiAxNC42MUwxMiAxNS4yTDEyLjU4IDE0LjZDMTIuOTQgMTQuMjMgMTMuNDUgMTQgMTQgMTRDMTUuMTEgMTQgMTYgMTQuOTIgMTYgMTYuMDVDMTYgMTYuNjEgMTUuNzggMTcuMTMgMTUuNDIgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RoZXJOdXJzZSA9IFwiTTEyLDJBMywzIDAgMCwxIDE1LDVBMywzIDAgMCwxIDEyLDhBMywzIDAgMCwxIDksNUEzLDMgMCAwLDEgMTIsMk0yMCwxOEwxOCwxMi41NkMxNy42NSwxMS41NyAxNy4zNCwxMC43MSAxNiwxMEMxNC42Miw5LjMgMTMuNjIsOSAxMiw5QzEwLjM3LDkgOS4zOCw5LjMgOCwxMEM2LjY2LDEwLjcxIDYuMzUsMTEuNTcgNiwxMi41Nkw0LDE4QzMuNjgsMTkuMzUgNi4zNiwyMC40NCA4LjExLDIxLjE5VjE5QzguMTEsMTguMDUgOC45NywxNy4zOCAxMC42OSwxNi45N0MxMC44NSwxNi45MyAxMSwxNi45MSAxMS4xMiwxNi44OUMxMC41OCwxNi4wNyAxMC4zNiwxNS4zNCAxMC4zNCwxNS4yOEwxMi4xMSwxNC42OEMxMi4xMiwxNC43IDEyLjYzLDE2LjI3IDEzLjg0LDE3LjA2QzE0LjA1LDE3LjEzIDE0LjI2LDE3LjIxIDE0LjQ2LDE3LjNDMTUuMjMsMTcuNjQgMTUuNjksMTguMDggMTUuODQsMTguNjFDMTQuNSwxOS4xNCAxMy4yMiwxOS40MSAxMiwxOS40MUwxMSwxOS4zMVYyMS45NEwxMiwyMkMxMy4zNywyMiAxNC42NywyMS43MiAxNS44OSwyMS4xOUMxNy42NCwyMC40NCAyMC4yNSwxOS4xMyAyMCwxOE0xNS41LDE3QTEuNSwxLjUgMCAwLDEgMTQsMTUuNUExLjUsMS41IDAgMCwxIDE1LjUsMTRBMS41LDEuNSAwIDAsMSAxNywxNS41QTEuNSwxLjUgMCAwLDEgMTUuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb24gPSBcIk03IDEzSDNDMi40NSAxMyAyIDEyLjU1IDIgMTJTMi40NSAxMSAzIDExSDdDNy41NSAxMSA4IDExLjQ1IDggMTJTNy41NSAxMyA3IDEzTTYgOEM2IDcuNDUgNS41NSA3IDUgN0g0QzMuNDUgNyAzIDcuNDUgMyA4UzMuNDUgOSA0IDlINUM1LjU1IDkgNiA4LjU1IDYgOE0yMiAxMkMyMiAxNC43NiAxOS43NiAxNyAxNyAxN0g0QzMuNDUgMTcgMyAxNi41NSAzIDE2UzMuNDUgMTUgNCAxNUgxM0MxMi41OCAxNC40MiAxMi4yNSAxMy43NCAxMi4xIDEzSDEwQzkuNDUgMTMgOSAxMi41NSA5IDEyUzkuNDUgMTEgMTAgMTFIMTIuMUMxMi4yNSAxMC4yNiAxMi41OCA5LjU4IDEzIDlIOEM3LjQ1IDkgNyA4LjU1IDcgOFM3LjQ1IDcgOCA3SDE3QzE5Ljc2IDcgMjIgOS4yNCAyMiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb25PdXRsaW5lID0gXCJNNyAxM0gzQzIuNDUgMTMgMiAxMi41NSAyIDEyUzIuNDUgMTEgMyAxMUg3QzcuNTUgMTEgOCAxMS40NSA4IDEyUzcuNTUgMTMgNyAxM002IDhDNiA3LjQ1IDUuNTUgNyA1IDdINEMzLjQ1IDcgMyA3LjQ1IDMgOFMzLjQ1IDkgNCA5SDVDNS41NSA5IDYgOC41NSA2IDhNMjIgMTJDMjIgMTQuNzYgMTkuNzYgMTcgMTcgMTdINEMzLjQ1IDE3IDMgMTYuNTUgMyAxNlMzLjQ1IDE1IDQgMTVIMTNDMTIuNTggMTQuNDIgMTIuMjUgMTMuNzQgMTIuMSAxM0gxMEM5LjQ1IDEzIDkgMTIuNTUgOSAxMlM5LjQ1IDExIDEwIDExSDEyLjFDMTIuMjUgMTAuMjYgMTIuNTggOS41OCAxMyA5SDhDNy40NSA5IDcgOC41NSA3IDhTNy40NSA3IDggN0gxN0MxOS43NiA3IDIyIDkuMjQgMjIgMTJNMjAgMTJDMjAgMTAuMzUgMTguNjUgOSAxNyA5UzE0IDEwLjM1IDE0IDEyQzE0IDEzLjY1IDE1LjM1IDE1IDE3IDE1UzIwIDEzLjY1IDIwIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdGlvblBhdXNlID0gXCJNMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDMTAuODMgMiA5LjcgMi4xOSA4LjYyIDIuNTZMOS4zMiA0LjVDMTAuMTcgNC4xNiAxMS4wNiAzLjk3IDEyIDMuOTdDMTYuNDEgMy45NyAyMC4wMyA3LjU5IDIwLjAzIDEyQzIwLjAzIDE2LjQxIDE2LjQxIDIwLjAzIDEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgMTEuMDYgNC4xNiAxMC4xMiA0LjUgOS4yOEwyLjU2IDguNjJDMi4xOSA5LjcgMiAxMC44MyAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMkMxNy41NCAyMiAyMiAxNy41NCAyMiAxMk01LjQ3IDMuOTdDNi4zMiAzLjk3IDcgNC42OCA3IDUuNDdDNyA2LjMyIDYuMzIgNyA1LjQ3IDdDNC42OCA3IDMuOTcgNi4zMiAzLjk3IDUuNDdDMy45NyA0LjY4IDQuNjggMy45NyA1LjQ3IDMuOTdNMTggMTJDMTggOC42NyAxNS4zMyA2IDEyIDZDOC42NyA2IDYgOC42NyA2IDEyQzYgMTUuMzMgOC42NyAxOCAxMiAxOEMxNS4zMyAxOCAxOCAxNS4zMyAxOCAxMk0xMSA5VjE1SDlWOU0xNSA5VjE1SDEzVjlcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb25QYXVzZU91dGxpbmUgPSBcIk0yMiAxMkMyMiA2LjQ2IDE3LjU0IDIgMTIgMkMxMC44MyAyIDkuNyAyLjE5IDguNjIgMi41Nkw5LjMyIDQuNUMxMC4xNyA0LjE2IDExLjA2IDMuOTcgMTIgMy45N0MxNi40MSAzLjk3IDIwLjAzIDcuNTkgMjAuMDMgMTJDMjAuMDMgMTYuNDEgMTYuNDEgMjAuMDMgMTIgMjAuMDNDNy41OSAyMC4wMyAzLjk3IDE2LjQxIDMuOTcgMTJDMy45NyAxMS4wNiA0LjE2IDEwLjEyIDQuNSA5LjI4TDIuNTYgOC42MkMyLjE5IDkuNyAyIDEwLjgzIDIgMTJDMiAxNy41NCA2LjQ2IDIyIDEyIDIyQzE3LjU0IDIyIDIyIDE3LjU0IDIyIDEyTTUuNDcgN0M0LjY4IDcgMy45NyA2LjMyIDMuOTcgNS40N0MzLjk3IDQuNjggNC42OCAzLjk3IDUuNDcgMy45N0M2LjMyIDMuOTcgNyA0LjY4IDcgNS40N0M3IDYuMzIgNi4zMiA3IDUuNDcgN005IDlIMTFWMTVIOU0xMyA5SDE1VjE1SDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uUGxheSA9IFwiTTIyIDEyQzIyIDYuNDYgMTcuNTQgMiAxMiAyQzEwLjgzIDIgOS43IDIuMTkgOC42MiAyLjU2TDkuMzIgNC41QzEwLjE3IDQuMTYgMTEuMDYgMy45NyAxMiAzLjk3QzE2LjQxIDMuOTcgMjAuMDMgNy41OSAyMC4wMyAxMkMyMC4wMyAxNi40MSAxNi40MSAyMC4wMyAxMiAyMC4wM0M3LjU5IDIwLjAzIDMuOTcgMTYuNDEgMy45NyAxMkMzLjk3IDExLjA2IDQuMTYgMTAuMTIgNC41IDkuMjhMMi41NiA4LjYyQzIuMTkgOS43IDIgMTAuODMgMiAxMkMyIDE3LjU0IDYuNDYgMjIgMTIgMjJDMTcuNTQgMjIgMjIgMTcuNTQgMjIgMTJNNS40NyAzLjk3QzYuMzIgMy45NyA3IDQuNjggNyA1LjQ3QzcgNi4zMiA2LjMyIDcgNS40NyA3QzQuNjggNyAzLjk3IDYuMzIgMy45NyA1LjQ3QzMuOTcgNC42OCA0LjY4IDMuOTcgNS40NyAzLjk3TTE4IDEyQzE4IDguNjcgMTUuMzMgNiAxMiA2QzguNjcgNiA2IDguNjcgNiAxMkM2IDE1LjMzIDguNjcgMTggMTIgMThDMTUuMzMgMTggMTggMTUuMzMgMTggMTJNMTUgMTJMMTAgMTVWOVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdGlvblBsYXlPdXRsaW5lID0gXCJNMTAgMTYuNUwxNiAxMkwxMCA3LjVNMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDMTAuODMgMiA5LjcgMi4xOSA4LjYyIDIuNTZMOS4zMiA0LjVDMTAuMTcgNC4xNiAxMS4wNiAzLjk3IDEyIDMuOTdDMTYuNDEgMy45NyAyMC4wMyA3LjU5IDIwLjAzIDEyQzIwLjAzIDE2LjQxIDE2LjQxIDIwLjAzIDEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgMTEuMDYgNC4xNiAxMC4xMiA0LjUgOS4yOEwyLjU2IDguNjJDMi4xOSA5LjcgMiAxMC44MyAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMkMxNy41NCAyMiAyMiAxNy41NCAyMiAxMk01LjQ3IDMuOTdDNi4zMiAzLjk3IDcgNC42OCA3IDUuNDdDNyA2LjMyIDYuMzIgNyA1LjQ3IDdDNC42OCA3IDMuOTcgNi4zMiAzLjk3IDUuNDdDMy45NyA0LjY4IDQuNjggMy45NyA1LjQ3IDMuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uU2Vuc29yID0gXCJNMTAsMC4yQzksMC4yIDguMiwxIDguMiwyQzguMiwzIDksMy44IDEwLDMuOEMxMSwzLjggMTEuOCwzIDExLjgsMkMxMS44LDEgMTEsMC4yIDEwLDAuMk0xNS42NywxQTcuMzMsNy4zMyAwIDAsMCAyMyw4LjMzVjdBNiw2IDAgMCwxIDE3LDFIMTUuNjdNMTguMzMsMUMxOC4zMywzLjU4IDIwLjQyLDUuNjcgMjMsNS42N1Y0LjMzQzIxLjE2LDQuMzMgMTkuNjcsMi44NCAxOS42NywxSDE4LjMzTTIxLDFBMiwyIDAgMCwwIDIzLDNWMUgyMU03LjkyLDQuMDNDNy43NSw0LjAzIDcuNTgsNC4wNiA3LjQyLDQuMTFMMiw1LjhWMTFIMy44VjcuMzNMNS45MSw2LjY3TDIsMjJIMy44TDYuNjcsMTMuODlMOSwxN1YyMkgxMC44VjE1LjU5TDguMzEsMTEuMDVMOS4wNCw4LjE4TDEwLjEyLDEwSDE1VjguMkgxMS4zOEw5LjM4LDQuODdDOS4wOCw0LjM3IDguNTQsNC4wMyA3LjkyLDQuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uU2Vuc29yT2ZmID0gXCJNMTEuNCA4LjJIMTVWMTBIMTMuMkwxMS40IDguMk0xOS42NyAxSDE4LjMzQzE4LjMzIDMuNTggMjAuNDIgNS42NyAyMyA1LjY3VjQuMzNDMjEuMTYgNC4zMyAxOS42NyAyLjg0IDE5LjY3IDFNMjEgMUMyMSAyLjExIDIxLjkgMyAyMyAzVjFIMjFNMTcgMUgxNS42N0MxNS42NyA1LjA1IDE4Ljk1IDguMzMgMjMgOC4zM1Y3QzE5LjY5IDcgMTcgNC4zMSAxNyAxTTEwIDMuOEMxMSAzLjggMTEuOCAzIDExLjggMlMxMSAuMiAxMCAuMiA4LjIgMSA4LjIgMiA5IDMuOCAxMCAzLjhNMi4zOSAxLjczTDEuMTEgM0wzLjQ2IDUuMzVMMiA1LjhWMTFIMy44VjcuMzNMNS4wNSA2Ljk0TDUuNjggNy41N0wyIDIySDMuOEw2LjY3IDEzLjg5TDkgMTdWMjJIMTAuOFYxNS41OUw4LjMxIDExLjA1TDguNSAxMC4zN0wyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNOS4zOCA0Ljg3QzkuMDggNC4zNyA4LjU0IDQuMDMgNy45MiA0LjAzQzcuNzUgNC4wMyA3LjU4IDQuMDYgNy40MiA0LjExTDcuMzQgNC4xNEwxMS4zNSA4LjE1TDkuMzggNC44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RvcmJpa2UgPSBcIk0xNy40MiwxMEwxMy40MSw2SDlWOEgxMi41OUwxNC41OSwxMEg2LjVDNCwxMCAyLDEyIDIsMTQuNUMyLDE3IDQsMTkgNi41LDE5QzguNzIsMTkgMTAuNTYsMTcuMzggMTAuOTIsMTUuMjdMMTMuMDQsMTRDMTMsMTQuMTcgMTMsMTQuMzMgMTMsMTQuNUMxMywxNyAxNSwxOSAxNy41LDE5QzIwLDE5IDIyLDE3IDIyLDE0LjVDMjIsMTIgMjAsMTAgMTcuNSwxME04Ljg0LDE1LjI2QzguNSwxNi4yNyA3LjU4LDE3IDYuNDcsMTdDNS4wOSwxNyAzLjk3LDE1Ljg4IDMuOTcsMTQuNUMzLjk3LDEzLjEyIDUuMDksMTIgNi40NywxMkM3LjU5LDEyIDguNSwxMi43NCA4Ljg0LDEzLjc1SDZWMTUuMjVMOC44NCwxNS4yNk0xNy40NywxN0MxNi4wOSwxNyAxNC45NywxNS44OCAxNC45NywxNC41QzE0Ljk3LDEzLjEyIDE2LjA5LDEyIDE3LjQ3LDEyQTIuNSwyLjUgMCAwLDEgMTkuOTcsMTQuNUEyLjUsMi41IDAgMCwxIDE3LjQ3LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdG9yYmlrZUVsZWN0cmljID0gXCJNMTcuNDIgOEwxMy40MSA0SDlWNkgxMi41OUwxNC41OSA4SDYuNUM0IDggMiAxMCAyIDEyLjVTNCAxNyA2LjUgMTdDOC43MiAxNyAxMC41NiAxNS4zOCAxMC45MiAxMy4yN0wxMy4wNCAxMkMxMyAxMi4xNyAxMyAxMi4zMyAxMyAxMi41QzEzIDE1IDE1IDE3IDE3LjUgMTdTMjIgMTUgMjIgMTIuNSAyMCA4IDE3LjUgOE04Ljg0IDEzLjI2QzguNSAxNC4yNyA3LjU4IDE1IDYuNDcgMTVDNS4wOSAxNSAzLjk3IDEzLjg4IDMuOTcgMTIuNVM1LjA5IDEwIDYuNDcgMTBDNy41OSAxMCA4LjUgMTAuNzQgOC44NCAxMS43NUg2VjEzLjI1TDguODQgMTMuMjZNMTcuNDcgMTVDMTYuMDkgMTUgMTQuOTcgMTMuODggMTQuOTcgMTIuNVMxNi4wOSAxMCAxNy40NyAxMEMxOC44NSAxMCAxOS45NyAxMS4xMiAxOS45NyAxMi41UzE4Ljg1IDE1IDE3LjQ3IDE1TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW91c2UgPSBcIk0xMSwxLjA3QzcuMDUsMS41NiA0LDQuOTIgNCw5SDExTTQsMTVBOCw4IDAgMCwwIDEyLDIzQTgsOCAwIDAsMCAyMCwxNVYxMUg0TTEzLDEuMDdWOUgyMEMyMCw0LjkyIDE2Ljk0LDEuNTYgMTMsMS4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZUJsdWV0b290aCA9IFwiTTIwLDdIMjAuNUwyMy4zNSw5Ljg1TDIxLjIxLDEyTDIzLjM1LDE0LjE0TDIwLjUsMTdIMjBWMTMuMjFMMTcuNzEsMTUuNUwxNywxNC43OUwxOS43OSwxMkwxNyw5LjIxTDE3LjcxLDguNUwyMCwxMC43OVY3TTIxLDguOTFWMTAuNzlMMjEuOTQsOS44NUwyMSw4LjkxTTIxLDEzLjIxVjE1LjA4TDIxLjk0LDE0LjE0TDIxLDEzLjIxTTE1LDlWMTBIOVYyLjA3QzEyLjM5LDIuNTYgMTUsNS40NyAxNSw5TTEsMTBWOUMxLDUuNDcgMy42MSwyLjU2IDcsMi4wN1YxMEgxTTE1LDE1QTcsNyAwIDAsMSA4LDIyQTcsNyAwIDAsMSAxLDE1VjEySDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdXNlTW92ZURvd24gPSBcIk03IDlIMkMyIDYuMDQgNC4xNyAzLjU3IDcgMy4wOVY5TTIwIDdIMThWMTNIMTVMMTkgMTdMMjMgMTNIMjBWN005IDMuMDlWOUgxNEMxNCA2LjA0IDExLjgzIDMuNTcgOSAzLjA5TTIgMTVDMiAxOC4zIDQuNyAyMSA4IDIxUzE0IDE4LjMgMTQgMTVWMTFIMlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZU1vdmVVcCA9IFwiTTcgOUgyQzIgNi4wNCA0LjE3IDMuNTcgNyAzLjA5VjlNMTggMTdIMjBWMTFIMjNMMTkgN0wxNSAxMUgxOFYxN005IDMuMDlWOUgxNEMxNCA2LjA0IDExLjgzIDMuNTcgOSAzLjA5TTIgMTVDMiAxOC4zIDQuNyAyMSA4IDIxUzE0IDE4LjMgMTQgMTVWMTFIMlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZU1vdmVWZXJ0aWNhbCA9IFwiTTIwIDZIMjNMMTkgMkwxNSA2SDE4VjE4SDE1TDE5IDIyTDIzIDE4SDIwVjZNOSAzLjA5QzExLjgzIDMuNTcgMTQgNi4wNCAxNCA5SDlWMy4wOU0xNCAxMVYxNUMxNCAxOC4zIDExLjMgMjEgOCAyMVMyIDE4LjMgMiAxNVYxMUgxNE03IDlIMkMyIDYuMDQgNC4xNyAzLjU3IDcgMy4wOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdXNlT2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxNy41LDIwLjc5QzE2LjA4LDIyLjE2IDE0LjE0LDIzIDEyLDIzQTgsOCAwIDAsMSA0LDE1VjExSDcuNzNMNS43Myw5SDRDNCw4LjQ2IDQuMDUsNy45MyA0LjE1LDcuNDJMMiw1LjI3TTExLDEuMDdWOUgxMC44Mkw1Ljc5LDMuOTZDNy4wNSwyLjQgOC45LDEuMzMgMTEsMS4wN00yMCwxMVYxNUMyMCwxNS45NSAxOS44MywxNi44NiAxOS41MywxNy43MUwxMi44MiwxMUgyME0xMywxLjA3QzE2Ljk0LDEuNTYgMjAsNC45MiAyMCw5SDEzVjEuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW91c2VWYXJpYW50ID0gXCJNMTQsN0gxMFYyLjFDMTIuMjgsMi41NiAxNCw0LjU4IDE0LDdNNCw3QzQsNC41OCA1LjcyLDIuNTYgOCwyLjFWN0g0TTE0LDEyQzE0LDE0LjQyIDEyLjI4LDE2LjQ0IDEwLDE2LjlWMThBMywzIDAgMCwwIDEzLDIxQTMsMyAwIDAsMCAxNiwxOFYxM0E0LDQgMCAwLDEgMjAsOUgyMkwyMSwxMEwyMiwxMUgyMEEyLDIgMCAwLDAgMTgsMTNIMThWMThBNSw1IDAgMCwxIDEzLDIzQTUsNSAwIDAsMSA4LDE4VjE2LjlDNS43MiwxNi40NCA0LDE0LjQyIDQsMTJWOUgxNFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZVZhcmlhbnRPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE3LjI5LDIwLjU2QzE2LjQyLDIyIDE0LjgyLDIzIDEzLDIzQTUsNSAwIDAsMSA4LDE4VjE2LjlDNS43MiwxNi40NCA0LDE0LjQyIDQsMTJWOUg1LjczTDIsNS4yN00xNCw3SDEwVjIuMUMxMi4yOCwyLjU2IDE0LDQuNTggMTQsN004LDIuMVY2LjE4TDUuMzgsMy41NUM2LjA3LDIuODMgNywyLjMxIDgsMi4xTTE0LDEyVjEyLjE3TDEwLjgyLDlIMTRWMTJNMTAsMTYuOVYxOEEzLDMgMCAwLDAgMTMsMjFDMTQuMjgsMjEgMTUuMzcsMjAuMiAxNS44LDE5LjA3TDEyLjQsMTUuNjdDMTEuNzQsMTYuMjggMTAuOTIsMTYuNzEgMTAsMTYuOU0xNiwxM0E0LDQgMCAwLDEgMjAsOUgyMkwyMSwxMEwyMiwxMUgyMEEyLDIgMCAwLDAgMTgsMTNWMTYuMThMMTYsMTQuMThWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92ZVJlc2l6ZSA9IFwiTTksMVYySDEwVjVIOVY2SDEyVjVIMTFWMkgxMlYxTTksN0M3Ljg5LDcgNyw3Ljg5IDcsOVYyMUM3LDIyLjExIDcuODksMjMgOSwyM0gyMUMyMi4xMSwyMyAyMywyMi4xMSAyMywyMVY5QzIzLDcuODkgMjIuMTEsNyAyMSw3TTEsOVYxMkgyVjExSDVWMTJINlY5SDVWMTBIMlY5TTksOUgyMVYyMUg5TTE0LDEwVjExSDE1VjE2SDExVjE1SDEwVjE4SDExVjE3SDE1VjE5SDE0VjIwSDE3VjE5SDE2VjE3SDE5VjE4SDIwVjE1SDE5VjE2SDE2VjExSDE3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92ZVJlc2l6ZVZhcmlhbnQgPSBcIk0xLjg4LDAuNDZMMC40NiwxLjg4TDUuNTksN0gyVjlIOVYySDdWNS41OU0xMSw3VjlIMjFWMTVIMjNWOUEyLDIgMCAwLDAgMjEsN003LDExVjIxQTIsMiAwIDAsMCA5LDIzSDE1VjIxSDlWMTFNMTUuODgsMTQuNDZMMTQuNDYsMTUuODhMMTkuNiwyMUgxN1YyM0gyM1YxN0gyMVYxOS41OVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllID0gXCJNMTgsNEwyMCw4SDE3TDE1LDRIMTNMMTUsOEgxMkwxMCw0SDhMMTAsOEg3TDUsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjRIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDaGVjayA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDaGVja091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDb2cgPSBcIk0xMiAxOUMxMiAxOS4zNCAxMi4wMyAxOS42NyAxMi4wOCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEyLjY4QzIxLjA5IDEyLjI1IDIwLjA4IDEyIDE5IDEyQzE1LjEzIDEyIDEyIDE1LjEzIDEyIDE5TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllQ29nT3V0bGluZSA9IFwiTTEyIDE5QzEyIDE5LjM0IDEyLjAzIDE5LjY3IDEyLjA4IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTIuNjhDMjEuMzggMTIuMzkgMjAuNzEgMTIuMTggMjAgMTIuMDhWMTBINS43Nkw0IDYuNDdWMThIMTIuMDhDMTIuMDMgMTguMzMgMTIgMTguNjYgMTIgMTlNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVFZGl0ID0gXCJNMjEuMDQgMTEuMTNDMjAuOSAxMS4xMyAyMC43NiAxMS4xOSAyMC42NSAxMS4zTDE5LjY1IDEyLjNMMjEuNyAxNC4zNUwyMi43IDEzLjM1QzIyLjkyIDEzLjE0IDIyLjkyIDEyLjc5IDIyLjcgMTIuNThMMjEuNDIgMTEuM0MyMS4zMSAxMS4xOSAyMS4xOCAxMS4xMyAyMS4wNCAxMS4xM00xOS4wNyAxMi44OEwxMyAxOC45NFYyMUgxNS4wNkwyMS4xMiAxNC45M0wxOS4wNyAxMi44OE0xMSAyMEgzQzEuOSAyMCAxIDE5LjExIDEgMThWNkMxIDQuODkgMS45IDQgMyA0SDRMNiA4SDlMNyA0SDlMMTEgOEgxNEwxMiA0SDE0TDE2IDhIMTlMMTcgNEgyMVY4LjEyTDExIDE4LjExVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRWRpdE91dGxpbmUgPSBcIk0yMSA0VjguMTJMMTkuMTIgMTBINC43NkwzIDYuNDdWMThIMTFWMjBIM0MxLjkgMjAgMSAxOS4xMSAxIDE4VjZDMSA0Ljg5IDEuOSA0IDMgNEg0TDYgOEg5TDcgNEg5TDExIDhIMTRMMTIgNEgxNEwxNiA4SDE5TDE3IDRIMjFNMjEuNDIgMTIuM0wyMi43IDEzLjU4QzIyLjkyIDEzLjc5IDIyLjkyIDE0LjE0IDIyLjcgMTQuMzVMMjEuNyAxNS4zNUwxOS42NSAxMy4zTDIwLjY1IDEyLjNDMjAuNzYgMTIuMTkgMjAuOSAxMi4xMyAyMS4wNCAxMi4xM0MyMS4xOCAxMi4xMyAyMS4zMSAxMi4xOSAyMS40MiAxMi4zTTIxLjEyIDE1LjkzTDE1LjA2IDIySDEzVjE5Ljk0TDE5LjA3IDEzLjg4TDIxLjEyIDE1LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRmlsdGVyID0gXCJNMTggNEwyMCA3SDE3TDE1IDRIMTNMMTUgN0gxMkwxMCA0SDhMMTAgN0g3TDUgNEg0QzIuOSA0IDIgNC45IDIgNkwyIDE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNEgxOE0xMS4yNSAxNS4yNUwxMCAxOEw4Ljc1IDE1LjI1TDYgMTRMOC43NSAxMi43NUwxMCAxMEwxMS4yNSAxMi43NUwxNCAxNEwxMS4yNSAxNS4yNU0xNi45NCAxMS45NEwxNiAxNEwxNS4wNiAxMS45NEwxMyAxMUwxNS4wNiAxMC4wNkwxNiA4TDE2Ljk0IDEwLjA2TDE5IDExTDE2Ljk0IDExLjk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRmlsdGVyT3V0bGluZSA9IFwiTTEwIDExTDkuMDYgMTMuMDZMNyAxNEw5LjA2IDE0Ljk0TDEwIDE3TDEwLjk0IDE0Ljk0TDEzIDE0TDEwLjk0IDEzLjA2TTE4IDRMMjAgOEgxN0wxNSA0SDEzTDE1IDhIMTJMMTAgNEg4TDEwIDhIN0w1IDRINEMyLjkxIDQgMiA0LjkgMiA2TDIgMThDMiAxOS4xIDIuOTEgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xIDIyIDE4VjRIMThNMjAgMThINFY2LjQ3TDUuNzcgMTBIMTZMMTUuMzcgMTEuMzdMMTQgMTJMMTUuMzcgMTIuNjNMMTYgMTRMMTYuNjMgMTIuNjNMMTggMTJMMTYuNjMgMTEuMzdMMTYgMTBIMjBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVNaW51cyA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllTWludXNPdXRsaW5lID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOU0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjExIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNS40MiAyLjI1IDQuOSAyLjY1IDQuNTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0yMS44OCAxOC42OEMyMS45NiAxOC40NyAyMiAxOC4yNCAyMiAxOFY0SDE4TDIwIDhIMTdMMTUgNEgxM0wxNSA4SDEyTDEwIDRIOEw4LjggNS42TDIxLjg4IDE4LjY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMMi42NSA0LjU0QzIuMjUgNC45IDIgNS40MiAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNNCAxOFY2LjQ3TDUuNzYgMTBIOC4xMUwxNi4xMSAxOEg0TTguOCA1LjZMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhMMjAgMTYuOFYxMEgxMy4yTDguOCA1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuID0gXCJNMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFMMjAuODQgMi4xOE0xMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TDEzLjk3IDMuNTRNOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVMOS4wNyA0LjVNNC4xNiA1LjVMMy4xOCA1LjY5QTIgMiAwIDAgMCAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0yIDEwVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMjBDMjEuMTEgMjIgMjIgMjEuMTEgMjIgMjBWMTBIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5DaGVjayA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNMTkgMTNDMjAuMSAxMyAyMS4xMiAxMy4zIDIyIDEzLjgxVjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTEuODEgOC4wNUw5LjA3IDQuNUw3LjEgNC45MUw5Ljg1IDguNDRMMTEuODEgOC4wNU00LjE2IDUuNUwzLjE4IDUuNjlDMi4xIDUuOTEgMS40IDYuOTYgMS42MSA4LjA0TDIgMTBMNi45IDkuMDNMNC4xNiA1LjVNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5DaGVja091dGxpbmUgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTQgMjBWMTJIMjBWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDRNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5Db2cgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTE5IDEyQzIwLjA4IDEyIDIxLjA5IDEyLjI1IDIyIDEyLjY4VjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMi42OEMxMi4yNSAyMS4wOSAxMiAyMC4wOCAxMiAxOUMxMiAxNS4xMyAxNS4xMyAxMiAxOSAxMk0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0yMy44IDIwLjRDMjMuOSAyMC40IDIzLjkgMjAuNSAyMy44IDIwLjZMMjIuOCAyMi4zQzIyLjcgMjIuNCAyMi42IDIyLjQgMjIuNSAyMi40TDIxLjMgMjJDMjEgMjIuMiAyMC44IDIyLjMgMjAuNSAyMi41TDIwLjMgMjMuOEMyMC4zIDIzLjkgMjAuMiAyNCAyMC4xIDI0SDE4LjFDMTggMjQgMTcuOSAyMy45IDE3LjggMjMuOEwxNy42IDIyLjVDMTcuMyAyMi40IDE3IDIyLjIgMTYuOCAyMkwxNS42IDIyLjVDMTUuNSAyMi41IDE1LjQgMjIuNSAxNS4zIDIyLjRMMTQuMyAyMC43QzE0LjIgMjAuNiAxNC4zIDIwLjUgMTQuNCAyMC40TDE1LjUgMTkuNlYxOC42TDE0LjQgMTcuOEMxNC4zIDE3LjcgMTQuMyAxNy42IDE0LjMgMTcuNUwxNS4zIDE1LjhDMTUuNCAxNS43IDE1LjUgMTUuNyAxNS42IDE1LjdMMTYuOCAxNi4yQzE3LjEgMTYgMTcuMyAxNS45IDE3LjYgMTUuN0wxNy44IDE0LjRDMTcuOCAxNC4zIDE3LjkgMTQuMiAxOC4xIDE0LjJIMjAuMUMyMC4yIDE0LjIgMjAuMyAxNC4zIDIwLjMgMTQuNEwyMC41IDE1LjdDMjAuOCAxNS44IDIxLjEgMTYgMjEuNCAxNi4yTDIyLjYgMTUuN0MyMi43IDE1LjcgMjIuOSAxNS43IDIyLjkgMTUuOEwyMy45IDE3LjVDMjQgMTcuNiAyMy45IDE3LjcgMjMuOCAxNy44TDIyLjcgMTguNlYxOS42TDIzLjggMjAuNE0yMC41IDE5QzIwLjUgMTguMiAxOS44IDE3LjUgMTkgMTcuNVMxNy41IDE4LjIgMTcuNSAxOSAxOC4yIDIwLjUgMTkgMjAuNSAyMC41IDE5LjggMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5Db2dPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45IDEuMzkgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU00IDIwVjEySDIwVjEyLjA4QzIwLjcxIDEyLjE4IDIxLjM4IDEyLjM5IDIyIDEyLjY5VjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMi42OEMxMi4zOSAyMS4zOCAxMi4xOCAyMC43MSAxMi4wOCAyMEg0TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlbkVkaXQgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTIgMTBWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMVYxOS4xM0wyMC4xMyAxMEgyTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkxIDEuNCA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTEzIDE5Ljk2VjIySDE1LjA0TDIxLjE3IDE1Ljg4TDE5LjEzIDEzLjgzTDEzIDE5Ljk2TTIyLjg1IDEzLjQ3TDIxLjUzIDEyLjE1QzIxLjMzIDExLjk1IDIxIDExLjk1IDIwLjgxIDEyLjE1TDE5LjgzIDEzLjEzTDIxLjg3IDE1LjE3TDIyLjg1IDE0LjE5QzIzLjA1IDE0IDIzLjA1IDEzLjY3IDIyLjg1IDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlbkVkaXRPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU00IDEySDE4LjEzTDIwLjEzIDEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMVYyMEg0VjEyTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTEzIDE5Ljk2VjIySDE1LjA0TDIxLjE3IDE1Ljg4TDE5LjEzIDEzLjgzTDEzIDE5Ljk2TTIyLjg1IDEzLjQ3TDIxLjUzIDEyLjE1QzIxLjMzIDExLjk1IDIxIDExLjk1IDIwLjgxIDEyLjE1TDE5LjgzIDEzLjEzTDIxLjg3IDE1LjE3TDIyLjg1IDE0LjE5QzIzLjA1IDE0IDIzLjA1IDEzLjY3IDIyLjg1IDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3Blbk1pbnVzID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xOSAxM0MyMC4xIDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM00xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5NaW51c091dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTBIMjJWMTMuODFDMjEuMzkgMTMuNDYgMjAuNzIgMTMuMjIgMjAgMTMuMDlWMTJINFYyMEgxMy4wOU0yMS42MiA2LjFMMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45IDEuMzkgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3Blbk9mZiA9IFwiTTEzLjIgMTBIMjJWMTguOEwxMy4yIDEwTTIxLjYgNi4xTDIwLjggMi4yTDE2LjkgM0wxOS42IDYuNUwyMS42IDYuMU0xMS44IDhMOS4xIDQuNUw3LjkgNC43TDExLjMgOC4xTDExLjggOE0yLjQgMS43TDEuMSAzTDMuNyA1LjZMMy4yIDUuN0MyLjEgNS45IDEuNCA3IDEuNiA4TDIgMTBMNy4xIDlMOC4xIDEwSDJWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDIwLjFMMjAuOCAyMi43TDIyLjEgMjEuNEwyLjQgMS43TTE2LjcgNy4xTDE0IDMuNUwxMiAzLjlMMTQuOCA3LjRMMTYuNyA3LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuT2ZmT3V0bGluZSA9IFwiTTE5LjcgNi41TDE2LjkgM0wyMC44IDIuMkwyMS42IDYuMUwxOS43IDYuNU0yMi4xIDIxLjVMMjAuOCAyMi44TDIwLjEgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBIOC4xTDcuMSA5TDIgMTBMMS42IDhDMS40IDcgMi4xIDUuOSAzLjIgNS43TDMuNyA1LjZMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjVNMTguMSAyMEwxMC4xIDEySDRWMjBIMTguMU0yMiAxOC44VjEwSDEzLjJMMTUuMiAxMkgyMFYxNi44TDIyIDE4LjhNMTYuNyA3LjFMMTQgMy41TDEyIDMuOUwxNC44IDcuNEwxNi43IDcuMU0xMS44IDhMOS4xIDQuNUw3LjkgNC43TDExLjMgOC4xTDExLjggOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5PdXRsaW5lID0gXCJNMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFMMjAuODQgMi4xOE0xMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TDEzLjk3IDMuNTRNOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVMOS4wNyA0LjVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDEyVjIwSDRWMTJIMjBNMjIgMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsYXkgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIgMTBWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMjAuMSAxMyAyMS4xMiAxMy4zIDIyIDEzLjgxVjEwSDJNMTcgMjJMMjIgMTlMMTcgMTZWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuUGxheU91dGxpbmUgPSBcIk0yMiAxMFYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMkg0VjIwSDEzLjA5QzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxMEgyMk0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTE3IDIyTDIyIDE5TDE3IDE2VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsdXMgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTE5IDEzQzIwLjEgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkxIDEuNCA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsdXNPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU00IDIwVjEySDIwVjEzLjA5QzIwLjcyIDEzLjIxIDIxLjM5IDEzLjQ2IDIyIDEzLjgxVjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy40NiAyMS4zOSAxMy4yMiAyMC43MiAxMy4wOSAyMEg0TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblJlbW92ZSA9IFwiTTE0Ljc1IDcuNDZMMTIgMy45M0wxMy45NyAzLjU0TDE2LjcxIDcuMDdMMTQuNzUgNy40Nk0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xOSAxM0MyMC4xIDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM000LjE2IDUuNUwzLjE4IDUuNjlDMi4xIDUuOTEgMS40IDYuOTYgMS42MSA4LjA0TDIgMTBMNi45IDkuMDNMNC4xNiA1LjVNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuUmVtb3ZlT3V0bGluZSA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNCAyMFYxMkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINE0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5TZXR0aW5ncyA9IFwiTTE0Ljc1IDUuNDZMMTIgMS45M0wxMy45NyAxLjU0TDE2LjcxIDUuMDdMMTQuNzUgNS40Nk0yMS42MiA0LjFMMjAuODQgLjE4TDE2LjkxIC45NkwxOS42NSA0LjVMMjEuNjIgNC4xTTExLjgxIDYuMDVMOS4wNyAyLjVMNy4xIDIuOTFMOS44NSA2LjQ0TDExLjgxIDYuMDVNMiA4VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWOEgyTTQuMTYgMy41TDMuMTggMy42OUMyLjEgMy45MSAxLjQgNC45NiAxLjYxIDYuMDRMMiA4TDYuOSA3LjAzTDQuMTYgMy41TTExIDI0SDEzVjIySDExVjI0TTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblNldHRpbmdzT3V0bGluZSA9IFwiTTE5LjY1IDQuNUwxNi45MSAuOTZMMjAuODQgLjE4TDIxLjYyIDQuMUwxOS42NSA0LjVNMTYuNzEgNS4wN0wxMy45NyAxLjU0TDEyIDEuOTNMMTQuNzUgNS40NkwxNi43MSA1LjA3TTExLjgxIDYuMDVMOS4wNyAyLjVMNy4xIDIuOTFMOS44NSA2LjQ0TDExLjgxIDYuMDVNNC4xNiAzLjVMMy4xOCAzLjY5QzIuMSAzLjkgMS4zOSA0Ljk2IDEuNjEgNi4wNEwyIDhMNi45IDcuMDNMNC4xNiAzLjVNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWOEgyMk0yMCAxMEg0VjE4SDIwVjEwTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblN0YXIgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTE5IDEzQzIwLjEgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIzIDE3Ljg5TDIwLjExIDE3LjY0TDE5IDE1TDE3Ljg3IDE3LjY0TDE1IDE3Ljg5TDE3LjE4IDE5Ljc3TDE2LjUgMjIuNThMMTkgMjEuMDlMMjEuNDUgMjIuNThMMjAuOCAxOS43N0wyMyAxNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5TdGFyT3V0bGluZSA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNCAyMFYxMkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINE0yMyAxNy44OUwyMC4xMSAxNy42NEwxOSAxNUwxNy44NyAxNy42NEwxNSAxNy44OUwxNy4xOCAxOS43N0wxNi41IDIyLjU4TDE5IDIxLjA5TDIxLjQ1IDIyLjU4TDIwLjggMTkuNzdMMjMgMTcuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPdXRsaW5lID0gXCJNNS43NiwxMEgyMFYxOEg0VjYuNDdNMjIsNEgxOEwyMCw4SDE3TDE1LDRIMTNMMTUsOEgxMkwxMCw0SDhMMTAsOEg3TDUsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVQbGF5ID0gXCJNMjIgNFYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMk0xNyAyMkwyMiAxOUwxNyAxNlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZVBsYXlPdXRsaW5lID0gXCJNMjIgNFYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyTTE3IDIyTDIyIDE5TDE3IDE2VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUGx1cyA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUGx1c091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUmVtb3ZlID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVSZW1vdmVPdXRsaW5lID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOU0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZVJvbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTIuNSwyLjUgMCAwLDAgOS41LDYuNUEyLjUsMi41IDAgMCwwIDEyLDlBMi41LDIuNSAwIDAsMCAxNC41LDYuNUEyLjUsMi41IDAgMCwwIDEyLDRNNC40LDkuNTNDMy45NywxMC44NCA0LjY5LDEyLjI1IDYsMTIuNjhDNy4zMiwxMy4xIDguNzMsMTIuMzkgOS4xNSwxMS4wN0M5LjU4LDkuNzYgOC44Niw4LjM1IDcuNTUsNy45MkM2LjI0LDcuNSA0LjgyLDguMjEgNC40LDkuNTNNMTkuNjEsOS41QzE5LjE4LDguMjEgMTcuNzcsNy41IDE2LjQ2LDcuOTJDMTUuMTQsOC4zNCAxNC40Miw5Ljc1IDE0Ljg1LDExLjA3QzE1LjI4LDEyLjM4IDE2LjY5LDEzLjEgMTgsMTIuNjdDMTkuMzEsMTIuMjUgMjAuMDMsMTAuODMgMTkuNjEsOS41TTcuMzEsMTguNDZDOC40MiwxOS4yOCAxMCwxOS4wMyAxMC44LDE3LjkxQzExLjYxLDE2Ljc5IDExLjM2LDE1LjIzIDEwLjI0LDE0LjQyQzkuMTMsMTMuNjEgNy41NiwxMy44NiA2Ljc1LDE0Ljk3QzUuOTQsMTYuMDkgNi4xOSwxNy42NSA3LjMxLDE4LjQ2TTE2LjcsMTguNDZDMTcuODIsMTcuNjUgMTguMDcsMTYuMDkgMTcuMjYsMTQuOTdDMTYuNDUsMTMuODUgMTQuODgsMTMuNiAxMy43NywxNC40MkMxMi42NSwxNS4yMyAxMi40LDE2Ljc5IDEzLjIxLDE3LjkxQzE0LDE5LjAzIDE1LjU5LDE5LjI3IDE2LjcsMTguNDZNMTIsMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTZWFyY2ggPSBcIk0xMS4wMyAyMEg0QzIuOSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0LjkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjA1QzIwLjg1IDExLjIyIDE4LjgyIDEwIDE2LjUgMTBDMTIuOTIgMTAgMTAgMTIuOTIgMTAgMTYuNUMxMCAxNy43OSAxMC4zOCAxOSAxMS4wMyAyME0yMy4zOSAyMkwyMiAyMy4zOUwxOC44OCAyMC4zMkMxOC4xOSAyMC43NSAxNy4zNyAyMSAxNi41IDIxQzE0IDIxIDEyIDE5IDEyIDE2LjVTMTQgMTIgMTYuNSAxMiAyMSAxNCAyMSAxNi41QzIxIDE3LjM4IDIwLjc1IDE4LjIxIDIwLjMxIDE4LjlMMjMuMzkgMjJNMTkgMTYuNUMxOSAxNS4xMiAxNy44OCAxNCAxNi41IDE0UzE0IDE1LjEyIDE0IDE2LjUgMTUuMTIgMTkgMTYuNSAxOSAxOSAxNy44OCAxOSAxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU2VhcmNoT3V0bGluZSA9IFwiTTExIDIwSDRDMi45IDIwIDIgMTkuMSAyIDE4VjZDMiA0LjkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzQzIxLjUgMTIuMiAyMC44IDExLjUgMjAgMTFWMTBINS44TDQgNi41VjE4SDEwLjJDMTAuNCAxOC43IDEwLjYgMTkuNCAxMSAyME0yMC4zIDE4LjlDMjAuNyAxOC4yIDIxIDE3LjQgMjEgMTYuNUMyMSAxNCAxOSAxMiAxNi41IDEyUzEyIDE0IDEyIDE2LjUgMTQgMjEgMTYuNSAyMUMxNy40IDIxIDE4LjIgMjAuOCAxOC45IDIwLjNMMjIgMjMuNEwyMy40IDIyTDIwLjMgMTguOU0xNi41IDE5QzE1LjEgMTkgMTQgMTcuOSAxNCAxNi41UzE1LjEgMTQgMTYuNSAxNCAxOSAxNS4xIDE5IDE2LjUgMTcuOSAxOSAxNi41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU2V0dGluZ3MgPSBcIk0yMiA0VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJNNyAyNEg5VjIySDdWMjRNMTEgMjRIMTNWMjJIMTFWMjRNMTUgMjRIMTdWMjJIMTVWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTZXR0aW5nc091dGxpbmUgPSBcIk0xOCA0TDIwIDhIMTdMMTUgNEgxM0wxNSA4SDEyTDEwIDRIOEwxMCA4SDdMNSA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDIwQzIxLjExIDIwIDIyIDE5LjExIDIyIDE4VjRIMThNMjAgMThINFY2LjQ3TDUuNzYgMTBIMjBWMThNMTEgMjJIMTNWMjRIMTFWMjJNNyAyMkg5VjI0SDdWMjJNMTUgMjJIMTdWMjRIMTVWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTdGFyID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjMgMTcuODlMMjAuMTEgMTcuNjRMMTkgMTVMMTcuODcgMTcuNjRMMTUgMTcuODlMMTcuMTggMTkuNzdMMTYuNSAyMi41OEwxOSAyMS4wOUwyMS40NSAyMi41OEwyMC44IDE5Ljc3TDIzIDE3Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU3Rhck91dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIzIDE3Ljg5TDIwLjExIDE3LjY0TDE5IDE1TDE3Ljg3IDE3LjY0TDE1IDE3Ljg5TDE3LjE4IDE5Ljc3TDE2LjUgMjIuNThMMTkgMjEuMDlMMjEuNDUgMjIuNThMMjAuOCAxOS43N0wyMyAxNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3dlciA9IFwiTTE4LjUgMTRDMTcuNTUgMTQgMTYuNjkgMTQuMzggMTYuMDYgMTVIOS4zOUw1Ljc0IDNIMlY1SDQuMjZMNyAxNC4wNUM2Ljg1IDE0LjAzIDYuNjggMTQgNi41IDE0QzQuNTcgMTQgMyAxNS41NyAzIDE3LjVTNC41NyAyMSA2LjUgMjFDNy44OSAyMSA5LjA5IDIwLjE4IDkuNjUgMTlIMTUuMzVDMTUuOTEgMjAuMTggMTcuMTEgMjEgMTguNSAyMUMyMC40MyAyMSAyMiAxOS40MyAyMiAxNy41UzIwLjQzIDE0IDE4LjUgMTRNNi41IDE5QzUuNjcgMTkgNSAxOC4zMyA1IDE3LjVTNS42NyAxNiA2LjUgMTYgOCAxNi42NyA4IDE3LjUgNy4zMyAxOSA2LjUgMTlNMTguNSAxOUMxNy42NyAxOSAxNyAxOC4zMyAxNyAxNy41UzE3LjY3IDE2IDE4LjUgMTYgMjAgMTYuNjcgMjAgMTcuNSAxOS4zMyAxOSAxOC41IDE5TTEwLjEzIDE0TDkuNTMgMTJIMTIuNzZDMTMuNSAxMiAxNC4yMSAxMi40MyAxNC41NSAxMy4xMUwxNSAxNEgxMC4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3dlckJhZyA9IFwiTTExLjk1IDE0TDEwLjgyIDEySDE0Ljc2QzE1LjUgMTIgMTYuMjEgMTIuNDMgMTYuNTUgMTMuMTFMMTcgMTRIMTEuOTVNMjMgMThDMjMgMTkuNjYgMjEuNjYgMjEgMjAgMjFDMTguNyAyMSAxNy42IDIwLjE2IDE3LjE4IDE5SDExLjY1QzExLjA5IDIwLjE4IDkuODkgMjEgOC41IDIxUzUuOTEgMjAuMTggNS4zNSAxOUgyQzEuNDUgMTkgMSAxOC41NSAxIDE4VjExQzEgMTAuNjcgMS4xNyAxMC4zNiAxLjQ0IDEwLjE3QzEuNzEgMTAgMi4wNiA5Ljk1IDIuMzcgMTAuMDdMNy40MyAxMi4wOUwzLjQyIDVIMVYzSDQuNThMMTEuMzcgMTVIMjBDMjEuNjYgMTUgMjMgMTYuMzQgMjMgMThNNy4zNCAxNC4yMUwzIDEyLjVWMTdINS4wNUM1LjI0IDE1LjcgNi4xMyAxNC42NCA3LjM0IDE0LjIxTTEwIDE3LjVDMTAgMTYuNjcgOS4zMyAxNiA4LjUgMTZTNyAxNi42NyA3IDE3LjUgNy42NyAxOSA4LjUgMTkgMTAgMTguMzMgMTAgMTcuNU0yMSAxOEMyMSAxNy40NSAyMC41NSAxNyAyMCAxN1MxOSAxNy40NSAxOSAxOCAxOS40NSAxOSAyMCAxOSAyMSAxOC41NSAyMSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdWZmaW4gPSBcIk0xNiw1QzE2LDUgMTUsMiAxMiwyQzksMiA4LDUgOCw1QzYsNSA0LDcgNCw5QzEuMyw5IDEuMywxMyA0LDEzSDIwQzIyLjcsMTMgMjIuNyw5IDIwLDlDMjAsNyAxOCw1IDE2LDVNNSwxNUw3LDIySDlMOCwxNUg1TTEwLDE1TDExLDIySDEzTDE0LDE1SDEwTTE2LDE1TDE1LDIySDE3TDE5LDE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11bHRpcGxpY2F0aW9uID0gXCJNMTEsM0gxM1YxMC4yN0wxOS4yOSw2LjY0TDIwLjI5LDguMzdMMTQsMTJMMjAuMywxNS42NEwxOS4zLDE3LjM3TDEzLDEzLjcyVjIxSDExVjEzLjczTDQuNjksMTcuMzZMMy42OSwxNS42M0wxMCwxMkwzLjcyLDguMzZMNC43Miw2LjYzTDExLDEwLjI2VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVsdGlwbGljYXRpb25Cb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOU0xMSwxN0gxM1YxMy43M0wxNS44MywxNS4zNkwxNi44MywxMy42M0wxNCwxMkwxNi44MywxMC4zNkwxNS44Myw4LjYzTDEzLDEwLjI3VjdIMTFWMTAuMjdMOC4xNyw4LjYzTDcuMTcsMTAuMzZMMTAsMTJMNy4xNywxMy42M0w4LjE3LDE1LjM2TDExLDEzLjczVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2hyb29tID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkEyLDIgMCAwLDEgMjAsMTRINEEyLDIgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDhBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRBMiwyIDAgMCwwIDEwLDZBMiwyIDAgMCwwIDEyLDhNMTcsMTJBMiwyIDAgMCwwIDE5LDEwQTIsMiAwIDAsMCAxNyw4QTIsMiAwIDAsMCAxNSwxMEEyLDIgMCAwLDAgMTcsMTJNNywxMkEyLDIgMCAwLDAgOSwxMEEyLDIgMCAwLDAgNyw4QTIsMiAwIDAsMCA1LDEwQTIsMiAwIDAsMCA3LDEyTTE1LDE1TDE2LjI3LDE5LjQ1TDE2LjM1LDIwQzE2LjM1LDIxLjEgMTUuNDUsMjIgMTQuMzUsMjJIOS42NUEyLDIgMCAwLDEgNy42NSwyMEw3LjczLDE5LjQ1TDksMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjEgNkMyLjggNy42IDIgOS43IDIgMTJDMiAxMy4xIDIuOSAxNCA0IDE0SDEyLjFMMTMuMSAxNUg5TDcuNyAxOS41VjIwQzcuNyAyMS4xIDguNiAyMiA5LjcgMjJIMTQuNEMxNS41IDIyIDE2LjQgMjEuMSAxNi40IDIwTDE2LjMgMTkuNUwxNS44IDE3LjdMMjAuOSAyMi44TDIyLjEgMjEuNU03IDEyQzUuOSAxMiA1IDExLjEgNSAxMEM1IDkuMiA1LjUgOC40IDYuMyA4LjFMOC45IDEwLjdDOC42IDExLjUgNy44IDEyIDcgMTJNMTAgNkMxMCA0LjkgMTAuOSA0IDEyIDRTMTQgNC45IDE0IDYgMTMuMSA4IDEyIDhDMTEuNSA4IDExLjEgNy44IDEwLjcgNy41TDE3LjIgMTRIMjBDMjEuMSAxNCAyMiAxMy4xIDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkMxMC4xIDIgOC4zIDIuNiA2LjcgMy41TDEwLjQgNy4yQzEwLjIgNi45IDEwIDYuNSAxMCA2TTE3IDhDMTguMSA4IDE5IDguOSAxOSAxMFMxOC4xIDEyIDE3IDEyIDE1IDExLjEgMTUgMTAgMTUuOSA4IDE3IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNC4xIDZDMi44IDcuNiAyIDkuNyAyIDEyQzIgMTMuMSAyLjkgMTQgNCAxNEgxMi4xTDEzLjEgMTVIOUw4IDE4LjVMNy43IDE5LjVDNy40IDIwLjYgOC4xIDIxLjcgOS4xIDIxLjlMOS43IDIySDE0LjRDMTUuNSAyMiAxNi40IDIxLjEgMTYuNCAyMEwxNi4zIDE5LjVMMTYgMTguNUwxNS44IDE3LjZMMjAuOSAyMi43TDIyLjEgMjEuNU00IDEyQzQgMTAuMyA0LjYgOC43IDUuNSA3LjRMNi4yIDguMUM2LjEgOC40IDYgOC43IDYgOUM2IDEwLjEgNi45IDExIDggMTFDOC4zIDExIDguNiAxMC45IDguOSAxMC44TDEwLjEgMTJINE05LjcgMjBMMTAgMTlMMTAuNiAxN0gxMy42TDE0LjIgMTlMMTQuNSAyMEg5LjdNMTYgMTFDMTQuOSAxMSAxNCAxMC4xIDE0IDlTMTQuOSA3IDE2IDcgMTggNy45IDE4IDkgMTcuMSAxMSAxNiAxMU04LjIgNUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy4xIDIxLjEgMTQgMjAgMTRIMTcuMkwxNS4yIDEySDIwQzIwIDguMyAxNy40IDUuMSAxNCA0LjJDMTMuOSA1LjIgMTMgNiAxMiA2UzEwLjEgNS4yIDEwIDQuMkM5LjQgNC40IDguNyA0LjcgOC4yIDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PdXRsaW5lID0gXCJNNCwxMkgyMEMyMCw4LjI3IDE3LjQ0LDUuMTMgMTQsNC4yNUMxMy44Niw1LjI0IDEzLDYgMTIsNkMxMSw2IDEwLjE0LDUuMjQgMTAsNC4yNUM2LjU2LDUuMTMgNCw4LjI3IDQsMTJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkEyLDIgMCAwLDEgMjAsMTRINEEyLDIgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEzLjUsMTdIMTAuNUw5LjkyLDE5TDkuNjUsMjBIMTQuMzVMMTQuMDgsMTlMMTMuNSwxN00xNSwxNUwxNiwxOC41TDE2LjI3LDE5LjQ1TDE2LjM1LDIwQzE2LjM1LDIxLjEgMTUuNDUsMjIgMTQuMzUsMjJIOS42NUw5LjE3LDIxLjk0QzguMSwyMS42NiA3LjQ1LDIwLjU3IDcuNzMsMTkuNUw4LDE4LjVMOSwxNUgxNU0xNiw3QTIsMiAwIDAsMSAxOCw5QTIsMiAwIDAsMSAxNiwxMUEyLDIgMCAwLDEgMTQsOUEyLDIgMCAwLDEgMTYsN004LDdBMiwyIDAgMCwxIDEwLDlBMiwyIDAgMCwxIDgsMTFBMiwyIDAgMCwxIDYsOUEyLDIgMCAwLDEgOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljID0gXCJNMjEsM1YxNS41QTMuNSwzLjUgMCAwLDEgMTcuNSwxOUEzLjUsMy41IDAgMCwxIDE0LDE1LjVBMy41LDMuNSAwIDAsMSAxNy41LDEyQzE4LjA0LDEyIDE4LjU1LDEyLjEyIDE5LDEyLjM0VjYuNDdMOSw4LjZWMTcuNUEzLjUsMy41IDAgMCwxIDUuNSwyMUEzLjUsMy41IDAgMCwxIDIsMTcuNUEzLjUsMy41IDAgMCwxIDUuNSwxNEM2LjA0LDE0IDYuNTUsMTQuMTIgNywxNC4zNFY2TDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsRG91YmxlRmxhdCA9IFwiTTE1LjUgOUMxNC44IDkgMTQuMTEgOS4yOCAxMy41IDkuNjdWNUgxMS41VjkuNjJDMTEuMDQgOS4yNCAxMC4zOSA5IDkuNSA5QzguOCA5IDguMTEgOS4yOCA3LjUgOS42N1Y1SDUuNVYxOUM4LjUgMTcuMzIgMTAuNDMgMTUuNzkgMTEuNSAxNC40MVYxOUMxNi4zNiAxNi4yNiAxOC41IDEzLjkxIDE4LjUgMTJDMTguNSAxMC41OSAxNy43OSA5IDE1LjUgOU03LjUgMTUuMzhWMTIuMjZDOC4xMiAxMS41OSA4Ljk1IDExIDkuNSAxMUMxMC4wOSAxMSAxMC41IDExLjA3IDEwLjUgMTJDMTAuNSAxMi4xNSAxMC40IDEzLjMgNy41IDE1LjM4TTEzLjUgMTUuMzhWMTIuMjZDMTQuMTIgMTEuNTkgMTQuOTUgMTEgMTUuNSAxMUMxNi4wOSAxMSAxNi41IDExLjA3IDE2LjUgMTJDMTYuNSAxMi4xNSAxNi40IDEzLjMgMTMuNSAxNS4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0FjY2lkZW50YWxEb3VibGVTaGFycCA9IFwiTTE1LjQxIDEwSDE3VjdIMTRWOC41OUwxMiAxMC41OUwxMCA4LjU5VjdIN1YxMEg4LjU5TDEwLjU5IDEyTDguNTkgMTRIN1YxN0gxMFYxNS40MUwxMiAxMy40MUwxNCAxNS40MVYxN0gxN1YxNEgxNS40MUwxMy40MSAxMkwxNS40MSAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0FjY2lkZW50YWxGbGF0ID0gXCJNOC41IDE5QzEzLjM2IDE2LjI2IDE1LjUgMTMuOTEgMTUuNSAxMkMxNS41IDEwLjU5IDE0Ljc5IDkgMTIuNSA5QzExLjggOSAxMS4xMSA5LjI4IDEwLjUgOS42N1Y1SDguNU0xMC41IDE1LjM4VjEyLjI2QzExLjEyIDExLjU5IDExLjk1IDExIDEyLjUgMTFDMTMuMDkgMTEgMTMuNSAxMS4wNyAxMy41IDEyQzEzLjUgMTIuMTUgMTMuNCAxMy4zIDEwLjUgMTUuMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsTmF0dXJhbCA9IFwiTTEwIDguNzVWMy41SDhWMTcuNUwxNCAxNS4yNVYyMC41SDE2VjYuNUwxMCA4Ljc1TTE0IDEzLjI1TDEwIDE0Ljc1VjEwLjc1TDE0IDkuMjVWMTMuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsU2hhcnAgPSBcIk0xNyA5LjVWNy41TDE1IDguMVY1LjVIMTNWOC43TDExIDkuM1Y2LjVIOVY5LjlMNyAxMC41VjEyLjVMOSAxMS45VjEzLjlMNyAxNC41VjE2LjVMOSAxNS45VjE4LjVIMTFWMTUuM0wxMyAxNC43VjE3LjVIMTVWMTQuMUwxNyAxMy41VjExLjVMMTUgMTIuMVYxMC4xTDE3IDkuNU0xMyAxMi43TDExIDEzLjNWMTEuM0wxMyAxMC43VjEyLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNCb3ggPSBcIk0xNiw5SDEzVjE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDE3QTIuNSwyLjUgMCAwLDEgOCwxNC41QTIuNSwyLjUgMCAwLDEgMTAuNSwxMkMxMS4wNywxMiAxMS41OCwxMi4xOSAxMiwxMi41VjdIMTZNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNCb3hNdWx0aXBsZSA9IFwiTTQsNkgyVjIwQTIsMiAwIDAsMCA0LDIySDE4VjIwSDRNMTgsN0gxNVYxMi41QTIuNSwyLjUgMCAwLDEgMTIuNSwxNUEyLjUsMi41IDAgMCwxIDEwLDEyLjVBMi41LDIuNSAwIDAsMSAxMi41LDEwQzEzLjA3LDEwIDEzLjU4LDEwLjE5IDE0LDEwLjVWNUgxOE0yMCwySDhBMiwyIDAgMCwwIDYsNFYxNkEyLDIgMCAwLDAgOCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTIwLDE2SDhWNEgyME0xMi41LDE1QTIuNSwyLjUgMCAwLDAgMTUsMTIuNVY3SDE4VjVIMTRWMTAuNUMxMy41OCwxMC4xOSAxMy4wNywxMCAxMi41LDEwQTIuNSwyLjUgMCAwLDAgMTAsMTIuNUEyLjUsMi41IDAgMCwwIDEyLjUsMTVNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljQm94T3V0bGluZSA9IFwiTTE2LDlIMTNWMTQuNUEyLjUsMi41IDAgMCwxIDEwLjUsMTdBMi41LDIuNSAwIDAsMSA4LDE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDEyQzExLjA3LDEyIDExLjU4LDEyLjE5IDEyLDEyLjVWN0gxNlY5TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDaXJjbGUgPSBcIk0xNiw5VjdIMTJWMTIuNUMxMS41OCwxMi4xOSAxMS4wNywxMiAxMC41LDEyQTIuNSwyLjUgMCAwLDAgOCwxNC41QTIuNSwyLjUgMCAwLDAgMTAuNSwxN0EyLjUsMi41IDAgMCwwIDEzLDE0LjVWOUgxNk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0NpcmNsZU91dGxpbmUgPSBcIk0xNiw5SDEzVjE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDE3QTIuNSwyLjUgMCAwLDEgOCwxNC41QTIuNSwyLjUgMCAwLDEgMTAuNSwxMkMxMS4wNywxMiAxMS41OCwxMi4xOSAxMiwxMi41VjdIMTZWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDbGVmQWx0byA9IFwiTTUgNEg3VjIwSDVNMTUuNDYgMTNIMTQuODNMMTMuODMgMTJMMTQuODMgMTFIMTUuNDZBMy41IDMuNSAwIDEgMCAxMS45NiA3LjVIMTMuOTZBMS41IDEuNSAwIDEgMSAxNS40NiA5SDE0TDEyIDExSDExVjRIOVYyMEgxMVYxM0gxMkwxNCAxNUgxNS40NkExLjUgMS41IDAgMSAxIDEzLjk2IDE2LjVIMTEuOTZBMy41IDMuNSAwIDEgMCAxNS40NiAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0NsZWZCYXNzID0gXCJNMTguNSA1QTEuNSAxLjUgMCAxIDEgMTcgNi41QTEuNSAxLjUgMCAwIDEgMTguNSA1TTE4LjUgMTFBMS41IDEuNSAwIDEgMSAxNyAxMi41QTEuNSAxLjUgMCAwIDEgMTguNSAxMU0xMCA0QTUgNSAwIDAgMCA1IDlWMTBBMiAyIDAgMSAwIDcuMTggOEEzIDMgMCAwIDEgMTAgNkE0IDQgMCAwIDEgMTQgMTBDMTQgMTMuNTkgMTEuNzcgMTYuMTkgNyAxOC4yTDcuNzYgMjAuMDRDMTMuMzEgMTcuNzIgMTYgMTQuNDMgMTYgMTBBNiA2IDAgMCAwIDEwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDbGVmVHJlYmxlID0gXCJNMTMgMTFWNy41TDE1LjIgNS4yOUMxNiA0LjUgMTYuMTUgMy4yNCAxNS41OSAyLjI2QzE1LjE0IDEuNDcgMTQuMzIgMSAxMy40NSAxQzEzLjI0IDEgMTMgMS4wMyAxMi44MSAxLjA5QzExLjczIDEuMzggMTEgMi4zOCAxMSAzLjVWNi43NEw3Ljg2IDkuOTFDNi4yIDExLjYgNS43IDE0LjEzIDYuNjEgMTYuMzRDNy4zOCAxOC4yNCA5LjA2IDE5LjU1IDExIDE5Ljg5VjIwLjVDMTEgMjAuNzYgMTAuNzcgMjEgMTAuNSAyMUg5VjIzSDEwLjVDMTEuODUgMjMgMTMgMjEuODkgMTMgMjAuNVYyMEMxNS4wMyAyMCAxNy4xNiAxOC4wOCAxNy4xNiAxNS4yNUMxNy4xNiAxMi45NSAxNS4yNCAxMSAxMyAxMU0xMyAzLjVDMTMgMy4yNyAxMy4xMSAzLjA5IDEzLjMyIDMuMDNDMTMuNTQgMi45NyAxMy43NyAzLjA2IDEzLjg4IDMuMjZDMTQgMy40NiAxMy45NiAzLjcxIDEzLjggMy44N0wxMyA0LjczVjMuNU0xMSAxMS41QzEwLjAzIDEyLjE0IDkuMyAxMy4yNCA5LjA0IDE0LjI2TDExIDE0Ljc4VjE3LjgzQzkuODcgMTcuNTMgOC45IDE2LjcxIDguNDMgMTUuNTdDNy44NCAxNC4xMSA4LjE2IDEyLjQ1IDkuMjYgMTEuMzNMMTEgOS41VjExLjVNMTMgMThWMTIuOTRDMTQuMTcgMTIuOTQgMTUuMTggMTQuMDQgMTUuMTggMTUuMjVDMTUuMTggMTcgMTMuOTEgMTggMTMgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlID0gXCJNMTIgM1YxMy41NUMxMS40MSAxMy4yMSAxMC43MyAxMyAxMCAxM0M3Ljc5IDEzIDYgMTQuNzkgNiAxN1M3Ljc5IDIxIDEwIDIxIDE0IDE5LjIxIDE0IDE3VjdIMThWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVCbHVldG9vdGggPSBcIk0yMiA5Ljg1TDE5LjE0IDdIMTguNjRWMTAuNzlMMTYuMzUgOC41TDE1LjY0IDkuMjFMMTguNDMgMTJMMTUuNjQgMTQuNzlMMTYuMzUgMTUuNUwxOC42NCAxMy4yMVYxN0gxOS4xNEwyMiAxNC4xNUwxOS44NSAxMkwyMiA5Ljg1TTE5LjY0IDguOTFMMjAuNTggOS44NUwxOS42NCAxMC43OVY4LjkxTTIwLjU4IDE0LjE1TDE5LjY0IDE1LjA5VjEzLjIxTDIwLjU4IDE0LjE1TTkuNjQgM1YxMy41NUM5LjA1IDEzLjIxIDguMzcgMTMgNy42NCAxM0M1LjQzIDEzIDMuNjQgMTQuNzkgMy42NCAxN1M1LjQzIDIxIDcuNjQgMjEgMTEuNjQgMTkuMjEgMTEuNjQgMTdWN0gxNS42NFYzSDkuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlQmx1ZXRvb3RoT2ZmID0gXCJNMjIgOS44NUwxOS4xNCA3SDE4LjY0VjEwLjc5TDE2LjM1IDguNUwxNS42NCA5LjIxTDE4LjQzIDEyTDE1LjY0IDE0Ljc5TDE2LjM1IDE1LjVMMTguNjQgMTMuMjFWMTdIMTkuMTRMMjIgMTQuMTVMMTkuODUgMTJMMjIgOS44NU0xOS42NCA4LjkxTDIwLjU4IDkuODVMMTkuNjQgMTAuNzlWOC45MU0yMC41OCAxNC4xNUwxOS42NCAxNS4wOVYxMy4yMUwyMC41OCAxNC4xNU0xLjk2IDNMLjY4NyA0LjI3TDkuNjkgMTMuMjdWMTMuNTVDOS4xIDEzLjIxIDguNDIgMTMgNy42OSAxM0M1LjUgMTMgMy42OSAxNC43OSAzLjY5IDE3UzUuNSAyMSA3LjY5IDIxIDExLjY5IDE5LjIxIDExLjY5IDE3VjE1LjI3TDE3LjQyIDIxTDE4LjY5IDE5LjczTDEuOTYgM00xMS42OSA3SDE1LjY5VjNIOS42OVY4LjE4TDExLjY5IDEwLjE4VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlRWlnaHRoID0gXCJNMTIgM1YxMy41NUMxMS40MSAxMy4yMSAxMC43MyAxMyAxMCAxM0M3Ljc5IDEzIDYgMTQuNzkgNiAxN1M3Ljc5IDIxIDEwIDIxIDE0IDE5LjIxIDE0IDE3VjdIMThWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVFaWdodGhEb3R0ZWQgPSBcIk0xMiAzVjEzLjU1QTQgNCAwIDEgMCAxNCAxN1Y3SDE4VjNNMTYuNSAyMEExLjUgMS41IDAgMSAxIDE4IDE4LjVBMS41IDEuNSAwIDAgMSAxNi41IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZUhhbGYgPSBcIk0xNiAzSDE0VjEzLjU2QTMuOTYgMy45NiAwIDAgMCAxMiAxM0E0IDQgMCAxIDAgMTYgMTdWM00xMiAxOUEyIDIgMCAxIDEgMTQgMTdBMiAyIDAgMCAxIDEyIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZUhhbGZEb3R0ZWQgPSBcIk0xNCAzSDEyVjEzLjU2QTMuOTYgMy45NiAwIDAgMCAxMCAxM0E0IDQgMCAxIDAgMTQgMTdWM00xMCAxOUEyIDIgMCAxIDEgMTIgMTdBMiAyIDAgMCAxIDEwIDE5TTE2LjUgMjBBMS41IDEuNSAwIDEgMSAxOCAxOC41QTEuNSAxLjUgMCAwIDEgMTYuNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVPZmYgPSBcIk00LjI3IDNMMyA0LjI3TDEyIDEzLjI3VjEzLjU1QzExLjQxIDEzLjIxIDEwLjczIDEzIDEwIDEzQzcuNzkgMTMgNiAxNC43OSA2IDE3UzcuNzkgMjEgMTAgMjEgMTQgMTkuMjEgMTQgMTdWMTUuMjdMMTkuNzMgMjFMMjEgMTkuNzNMNC4yNyAzTTE0IDdIMThWM0gxMlY4LjE4TDE0IDEwLjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZU9mZk91dGxpbmUgPSBcIk0xNCA3SDE4VjNIMTJWNy42MUwxNCA5LjYxTTEyIDEwLjQ0TDQuNDEgMi44NkwzIDQuMjdMMTIgMTMuMjdWMTMuNTVBMy45NCAzLjk0IDAgMCAwIDguNjcgMTMuMjNBNCA0IDAgMCAwIDEwLjY1IDIwLjk1QTQuMSA0LjEgMCAwIDAgMTQgMTYuODVWMTUuMjdMMTkuNzMgMjFMMjEuMTQgMTkuNTlNMTAgMTlBMiAyIDAgMSAxIDEyIDE3QTIgMiAwIDAgMSAxMCAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVPdXRsaW5lID0gXCJNMTIgM1YxMy41NUE0IDQgMCAxIDAgMTQgMTdWN0gxOFYzTTEwIDE5QTIgMiAwIDEgMSAxMiAxN0EyIDIgMCAwIDEgMTAgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlUGx1cyA9IFwiTTE3IDlWMTJIMTRWMTRIMTdWMTdIMTlWMTRIMjJWMTJIMTlWOUgxN005IDNWMTMuNTVDOC40MSAxMy4yMSA3LjczIDEzIDcgMTNDNC43OSAxMyAzIDE0Ljc5IDMgMTdTNC43OSAyMSA3IDIxIDExIDE5LjIxIDExIDE3VjdIMTVWM0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVF1YXJ0ZXIgPSBcIk0xNCAzVjEzLjU2QzEzLjQxIDEzLjIxIDEyLjczIDEzIDEyIDEzQzkuNzkgMTMgOCAxNC43OSA4IDE3UzkuNzkgMjEgMTIgMjEgMTYgMTkuMjEgMTYgMTdWM0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVRdWFydGVyRG90dGVkID0gXCJNMTIgMTNWMTMuNTZBMy45NiAzLjk2IDAgMCAwIDEwIDEzQTQgNCAwIDEgMCAxNCAxN1YzSDEyTTE2LjUgMTdBMS41IDEuNSAwIDEgMSAxNSAxOC41QTEuNSAxLjUgMCAwIDEgMTYuNSAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVTaXh0ZWVudGggPSBcIk0xOCA3VjNIMTJWMTMuNTVDMTEuNDEgMTMuMjEgMTAuNzMgMTMgMTAgMTNDNy43OSAxMyA2IDE0Ljc5IDYgMTdTNy43OSAyMSAxMCAyMSAxNCAxOS4yMSAxNCAxN1YxMUgxOFY4SDE0VjdIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlU2l4dGVlbnRoRG90dGVkID0gXCJNMTggMTguNUExLjUgMS41IDAgMSAxIDE2LjUgMTdBMS41IDEuNSAwIDAgMSAxOCAxOC41TTE4IDdWM0gxMlYxMy41NUE0IDQgMCAxIDAgMTQgMTdWMTFIMThWOEgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVdob2xlID0gXCJNMTIgMTVBMiAyIDAgMSAxIDEwIDE3QTIgMiAwIDAgMSAxMiAxNU0xMiAxM0E0IDQgMCAxIDAgMTYgMTdBNCA0IDAgMCAwIDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVdob2xlRG90dGVkID0gXCJNMTAgMTVBMiAyIDAgMSAxIDggMTdBMiAyIDAgMCAxIDEwIDE1TTEwIDEzQTQgNCAwIDEgMCAxNCAxN0E0IDQgMCAwIDAgMTAgMTNNMTYuNSAxN0ExLjUgMS41IDAgMSAxIDE1IDE4LjVBMS41IDEuNSAwIDAgMSAxNi41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljT2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkw5LDEyLjI3VjE3LjVBMy41LDMuNSAwIDAsMSA1LjUsMjFBMy41LDMuNSAwIDAsMSAyLDE3LjVBMy41LDMuNSAwIDAsMSA1LjUsMTRDNi4wNCwxNCA2LjU1LDE0LjEyIDcsMTQuMzRWMTAuMjdMMiw1LjI3TTIxLDNWMTUuNUMyMSwxNi41IDIwLjU3LDE3LjQyIDE5Ljg4LDE4LjA2TDE0Ljk0LDEzLjEyQzE1LjU4LDEyLjQzIDE2LjUsMTIgMTcuNSwxMkMxOC4wNCwxMiAxOC41NSwxMi4xMiAxOSwxMi4zNFY2LjQ3TDEwLjE3LDguMzVMNy42Niw1Ljg0TDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNSZXN0RWlnaHRoID0gXCJNMTQgNkE1LjU2IDUuNTYgMCAwIDEgMTAuOTUgNy44NkExLjUgMS41IDAgMSAwIDkuNSA5SDkuNzRBNi4zMiA2LjMyIDAgMCAwIDEzLjI1IDcuOTNMMTAgMThIMTJMMTYgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY1Jlc3RIYWxmID0gXCJNNiAxNEg4VjEwSDE2VjE0SDE4VjE1SDZWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNSZXN0UXVhcnRlciA9IFwiTTExLjcxIDE2LjgxQzEwLjkxIDE3LjYgMTAuODggMTguODQgMTEuNjQgMTkuNThMMTAuMTkgMjFDOC42NiAxOS41IDguNzIgMTcuMDMgMTAuMzIgMTUuNDZDMTAuODUgMTQuOTQgMTEuNSAxNC42MSAxMi4xNiAxNC40Mkw5IDExLjM0TDEwLjQ1IDkuOTJMMTAuODIgOS41N0MxMS44MiA4LjU5IDExLjg1IDcuMDQgMTAuOSA2LjExTDkuMTYgNC40MkwxMC42MiAzTDE0Ljc4IDcuMDZDMTUuNTQgNy44MSAxNS41IDkuMDUgMTQuNzEgOS44M0wxMi41MyAxMS45NUwxNiAxNS4zM0wxNS42MSAxNS43MkMxNS4xMSAxNi4yMSAxNC4zOCAxNi40NiAxMy43MiAxNi4yOEMxMy4wNCAxNi4xIDEyLjI2IDE2LjI4IDExLjcxIDE2LjgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljUmVzdFNpeHRlZW50aCA9IFwiTTE1IDNBNS41NiA1LjU2IDAgMCAxIDExLjk1IDQuODZBMS41IDEuNSAwIDEgMCAxMC41IDZIMTAuNzRBNi4zMiA2LjMyIDAgMCAwIDE0LjI1IDQuOTNMMTIuOSA5LjFBNS41NiA1LjU2IDAgMCAxIDkuOTUgMTAuODZBMS41IDEuNSAwIDEgMCA4LjUgMTJIOC43NEE2LjMyIDYuMzIgMCAwIDAgMTIuMjUgMTAuOTNMOSAyMUgxMUwxNyAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljUmVzdFdob2xlID0gXCJNMTggMTBIMTZWMTRIOFYxMEg2VjlIMThWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzdGFjaGUgPSBcIk0yMSAxMkMxOSAxMiAxOCA5IDE1IDlTMTIgMTEgMTIgMTEgMTIgOSA5IDkgNSAxMiAzIDEyQzIgMTIgMSAxMSAxIDExUzIgMTYgNiAxNkMxMSAxNiAxMiAxMyAxMiAxM1MxMyAxNiAxOCAxNkMyMiAxNiAyMyAxMSAyMyAxMVMyMiAxMiAyMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOYWlsID0gXCJNMTMuNSw1VjE2TDEyLDIyTDEwLjUsMTZWNUgxMy41TTE3LDJIN1Y0SDE3VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmFzID0gXCJNNCw1QzIuODksNSAyLDUuODkgMiw3VjE3QzIsMTguMTEgMi44OSwxOSA0LDE5SDIwQzIxLjExLDE5IDIyLDE4LjExIDIyLDE3VjdDMjIsNS44OSAyMS4xMSw1IDIwLDVINE00LjUsN0ExLDEgMCAwLDEgNS41LDhBMSwxIDAgMCwxIDQuNSw5QTEsMSAwIDAsMSAzLjUsOEExLDEgMCAwLDEgNC41LDdNNyw3SDIwVjE3SDdWN004LDhWMTZIMTFWOEg4TTEyLDhWMTZIMTVWOEgxMk0xNiw4VjE2SDE5VjhIMTZNOSw5SDEwVjEwSDlWOU0xMyw5SDE0VjEwSDEzVjlNMTcsOUgxOFYxMEgxN1Y5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdGl2ZXNjcmlwdCA9IFwiTTcuNSwzSDE2LjVDMTksMyAyMSw1IDIxLDcuNVYxNi41QzIxLDE5IDE5LDIxIDE2LjUsMjFINy41QzUsMjEgMywxOSAzLDE2LjVWNy41QzMsNSA1LDMgNy41LDNNNiwxMy41VjE2LjVBMS41LDEuNSAwIDAsMCA3LjUsMThIOVYxMC41TDE1LDE4SDE2LjVBMS41LDEuNSAwIDAsMCAxOCwxNi41VjEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDEyQTEuNSwxLjUgMCAwLDEgMTgsMTAuNVY3LjVBMS41LDEuNSAwIDAsMCAxNi41LDZIMTVWMTMuNUw5LDZINy41QTEuNSwxLjUgMCAwLDAgNiw3LjVWMTAuNUExLjUsMS41IDAgMCwxIDQuNSwxMkExLjUsMS41IDAgMCwxIDYsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOYXR1cmUgPSBcIk0xMywxNi4xMkMxNi40NywxNS43MSAxOS4xNywxMi43NiAxOS4xNyw5LjE3QzE5LjE3LDUuMyAxNi4wNCwyLjE3IDEyLjE3LDIuMTdBNyw3IDAgMCwwIDUuMTcsOS4xN0M1LjE3LDEyLjY0IDcuNjksMTUuNSAxMSwxNi4wNlYyMEg1VjIySDE5VjIwSDEzVjE2LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdHVyZVBlb3BsZSA9IFwiTTQuNSwxMUExLjUsMS41IDAgMCwwIDYsOS41QTEuNSwxLjUgMCAwLDAgNC41LDhBMS41LDEuNSAwIDAsMCAzLDkuNUExLjUsMS41IDAgMCwwIDQuNSwxMU0yMi4xNyw5LjE3QzIyLjE3LDUuMyAxOS4wNCwyLjE3IDE1LjE3LDIuMTdBNyw3IDAgMCwwIDguMTcsOS4xN0M4LjE3LDEyLjY0IDEwLjY5LDE1LjUgMTQsMTYuMDZWMjBINlYxN0g3VjEzQTEsMSAwIDAsMCA2LDEySDNBMSwxIDAgMCwwIDIsMTNWMTdIM1YyMkgxOVYyMEgxNlYxNi4xMkMxOS40NywxNS43MSAyMi4xNywxMi43NiAyMi4xNyw5LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdmlnYXRpb24gPSBcIk0xMiwyTDQuNSwyMC4yOUw1LjIxLDIxTDEyLDE4TDE4Ljc5LDIxTDE5LjUsMjAuMjlMMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOYXZpZ2F0aW9uT3V0bGluZSA9IFwiTTEyIDcuM0wxNi4zIDE3LjdMMTIuOCAxNi4yTDEyIDE1LjhMMTEuMiAxNi4yTDcuNyAxNy43TDEyIDcuM00xMiAyTDQuNSAyMC4zTDUuMiAyMUwxMiAxOEwxOC44IDIxTDE5LjUgMjAuM0wxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5lYXJNZSA9IFwiTTIxLDNMMywxMC41M1YxMS41TDkuODQsMTQuMTZMMTIuNSwyMUgxMy40NkwyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5lY2tsYWNlID0gXCJNMjEuNSA1SDE5LjVDMTkuNSA5LjE0IDE2LjE0IDEyLjUgMTIgMTIuNUM3Ljg2IDEyLjUgNC41IDkuMTQgNC41IDVIMi41QzIuNTUgMTAuMTEgNi41OSAxNC4yOSAxMS43IDE0LjVDMTEuMSAxNS40IDEwIDE3LjIgMTAgMThDMTAgMjAuNjcgMTQgMjAuNjcgMTQgMThDMTQgMTcuMiAxMi45IDE1LjQgMTIuMyAxNC41QzE3LjQxIDE0LjI5IDIxLjQ1IDEwLjExIDIxLjUgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZWVkbGUgPSBcIk0xMS4xNSwxNS4xOEw5LjczLDEzLjc3TDExLjE1LDEyLjM1TDEyLjU2LDEzLjc3TDEzLjk3LDEyLjM1TDEyLjU2LDEwLjk0TDEzLjk3LDkuNTNMMTUuMzksMTAuOTRMMTYuOCw5LjUzTDEzLjk3LDYuN0w2LjksMTMuNzdMOS43MywxNi42TDExLjE1LDE1LjE4TTMuMDgsMTlMNi4yLDE1Ljg5TDQuMDgsMTMuNzdMMTMuOTcsMy44N0wxNi4xLDZMMTcuNSw0LjU4TDE2LjEsMy4xNkwxNy41LDEuNzVMMjEuNzUsNkwyMC4zNCw3LjRMMTguOTIsNkwxNy41LDcuNEwxOS42Myw5LjUzTDkuNzMsMTkuNDJMNy42MSwxNy4zTDMuMDgsMjEuODRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0ZmxpeCA9IFwiTTYuNSwySDEwLjVMMTMuNDQsMTAuODNMMTMuNSwySDE3LjVWMjJDMTYuMjUsMjEuNzggMTQuODcsMjEuNjQgMTMuNDEsMjEuNThMMTAuNSwxM0wxMC40MywyMS41OUM5LjAzLDIxLjY1IDcuNywyMS43OSA2LjUsMjJWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya09mZiA9IFwiTTEsNS4yN0w1LDkuMjdWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMTcuNzNMMTkuNzMsMjRMMjEsMjIuNzJMMi4yOCw0TDEsNS4yN00xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTcuMjdMMTUuNzMsMjBIMTVNMTcuNjksMTYuODdMNS4xMyw0LjMxQzUuNDEsMy41NSA2LjE0LDMgNywzSDE3QTIsMiAwIDAsMSAxOSw1VjE1QzE5LDE1Ljg2IDE4LjQ1LDE2LjU5IDE3LjY5LDE2Ljg3TTIyLDIwVjIxLjE4TDIwLjgyLDIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtPZmZPdXRsaW5lID0gXCJNMS4wNCw1LjI3TDUsOS4yM1YxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgxNy43N0wxOS43NywyNEwyMS4wNCwyMi43MkwyLjMyLDRMMS4wNCw1LjI3TTcsMTEuMjNMMTAuNzcsMTVIN1YxMS4yM00xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTcuMjNMMTUuNzcsMjBIMTVNMjIsMjBWMjEuMTRMMjAuODYsMjBIMjJNNyw2LjE0TDUuMTQsNC4yOEM1LjQzLDMuNTMgNi4xNiwzIDcsM0gxN0EyLDIgMCAwLDEgMTksNVYxNUMxOSwxNS44NSAxOC40NywxNi41NyAxNy43MiwxNi44NkwxNS44NiwxNUgxN1Y1SDdWNi4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoMSA9IFwiTTEsMjFIMjFWMU0xOSw1LjgzVjE5SDExVjEzLjgzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoMUFsZXJ0ID0gXCJNMjEgMUwxIDIxSDE3VjE5SDExVjEzLjhMMTkgNS44VjlIMjFNMTkgMTFWMTdIMjFWMTFNMTkgMTlWMjFIMjFWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGgyID0gXCJNMSwyMUgyMVYxTTE5LDUuODNWMTlIMTNWMTEuODNcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGgyQWxlcnQgPSBcIk0yMSAxTDEgMjFIMTdWMTlIMTNWMTEuOEwxOSA1LjhWOUgyMU0xOSAxMVYxN0gyMVYxMU0xOSAxOVYyMUgyMVYxOVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aDMgPSBcIk0xLDIxSDIxVjFNMTksNS44M1YxOUgxNlY4LjgzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoM0FsZXJ0ID0gXCJNMjEgMUwxIDIxSDE3VjE5SDE2VjguOEwxOSA1LjhWOUgyMU0xOSAxMVYxN0gyMVYxMU0xOSAxOVYyMUgyMVYxOVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aDQgPSBcIk0xLDIxSDIxVjFcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGg0QWxlcnQgPSBcIk0xOSAxN0gyMVYxMUgxOU0xOSAyMUgyMVYxOUgxOU0xIDIxSDE3VjlIMjFWMVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aE9mZiA9IFwiTTIxLDFMMTIuNCw5LjZMMjEsMTguMTlNNC43Nyw0LjVMMy41LDUuNzdMOS44NiwxMi4xM0wxLDIxSDE4LjczTDIwLjczLDIzTDIyLDIxLjczXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoT2ZmT3V0bGluZSA9IFwiTTIxLDFMMTIuNCw5LjZMMTMuODUsMTEuMDVMMTksNS44M1YxNi4xOUwyMSwxOC4xOU00Ljc3LDQuNUwzLjUsNS43N0w5Ljg2LDEyLjEzTDEsMjFIMTguNzNMMjAuNzMsMjNMMjIsMjEuNzNNMTEuMzMsMTMuNkwxNi43MywxOUg2XCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoT3V0bGluZSA9IFwiTTEsMjFIMjFWMU0xOSw1LjgzVjE5SDZcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdCb3ggPSBcIk0yMCw0QzIxLjExLDQgMjIsNC44OSAyMiw2VjE4QzIyLDE5LjExIDIxLjExLDIwIDIwLDIwSDRDMi44OSwyMCAyLDE5LjExIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgyME04LjUsMTVWOUg3LjI1VjEyLjVMNC43NSw5SDMuNVYxNUg0Ljc1VjExLjVMNy4zLDE1SDguNU0xMy41LDEwLjI2VjlIOS41VjE1SDEzLjVWMTMuNzVIMTFWMTIuNjRIMTMuNVYxMS4zOEgxMVYxMC4yNkgxMy41TTIwLjUsMTRWOUgxOS4yNVYxMy41SDE4LjEzVjEwSDE2Ljg4VjEzLjVIMTUuNzVWOUgxNC41VjE0QTEsMSAwIDAsMCAxNS41LDE1SDE5LjVBMSwxIDAgMCwwIDIwLjUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyID0gXCJNMjAsMTFINFY4SDIwTTIwLDE1SDEzVjEzSDIwTTIwLDE5SDEzVjE3SDIwTTExLDE5SDRWMTNIMTFNMjAuMzMsNC42N0wxOC42NywzTDE3LDQuNjdMMTUuMzMsM0wxMy42Nyw0LjY3TDEyLDNMMTAuMzMsNC42N0w4LjY3LDNMNyw0LjY3TDUuMzMsM0wzLjY3LDQuNjdMMiwzVjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVYzTDIwLjMzLDQuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyTWludXMgPSBcIk0yMiwxN1YxOUgxNFYxN0gyMk0yMCwxMVY4SDRWMTFIMjBNMTMsMTNWMTQuNjhDMTIuMzcsMTUuNjMgMTIsMTYuNzcgMTIsMThDMTIsMTkuMDkgMTIuMjksMjAuMTIgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjNMMy42Nyw0LjY3TDUuMzMsM0w3LDQuNjdMOC42NywzTDEwLjMzLDQuNjdMMTIsM0wxMy42Nyw0LjY3TDE1LjMzLDNMMTcsNC42N0wxOC42NywzTDIwLjMzLDQuNjdMMjIsM1YxMy41QzIwLjkzLDEyLjU4IDE5LjUzLDEyIDE4LDEyQzE2Ljc3LDEyIDE1LjYzLDEyLjM3IDE0LjY4LDEzSDEzTTExLDE5VjEzSDRWMTlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyUGx1cyA9IFwiTTE3LDE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0TTIwLDExVjhINFYxMUgyME0xMywxM1YxNC42OEMxMi4zNywxNS42MyAxMiwxNi43NyAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRBMiwyIDAgMCwxIDIsMTlWM0wzLjY3LDQuNjdMNS4zMywzTDcsNC42N0w4LjY3LDNMMTAuMzMsNC42N0wxMiwzTDEzLjY3LDQuNjdMMTUuMzMsM0wxNyw0LjY3TDE4LjY3LDNMMjAuMzMsNC42N0wyMiwzVjEzLjVDMjAuOTMsMTIuNTggMTkuNTMsMTIgMTgsMTJDMTYuNzcsMTIgMTUuNjMsMTIuMzcgMTQuNjgsMTNIMTNNMTEsMTlWMTNINFYxOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdzcGFwZXJWYXJpYW50ID0gXCJNMjAgM0g0QzIuODkgMyAyIDMuODkgMiA1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjVDMjIgMy44OSAyMS4xMSAzIDIwIDNNNSA3SDEwVjEzSDVWN00xOSAxN0g1VjE1SDE5VjE3TTE5IDEzSDEyVjExSDE5VjEzTTE5IDlIMTJWN0gxOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ld3NwYXBlclZhcmlhbnRNdWx0aXBsZSA9IFwiTTQgN1YxOUgxOVYyMUg0QzIgMjEgMiAxOSAyIDE5VjdINE0yMS4zIDNINy43QzYuNzYgMyA2IDMuNyA2IDQuNTVWMTUuNDVDNiAxNi4zMSA2Ljc2IDE3IDcuNyAxN0gyMS4zQzIyLjI0IDE3IDIzIDE2LjMxIDIzIDE1LjQ1VjQuNTVDMjMgMy43IDIyLjI0IDMgMjEuMyAzTTggNUgxM1YxMUg4VjVNMjEgMTVIOFYxM0gyMVYxNU0yMSAxMUgxNVY5SDIxVjExTTIxIDdIMTVWNUgyMVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ld3NwYXBlclZhcmlhbnRNdWx0aXBsZU91dGxpbmUgPSBcIk00IDdWMTlIMTlWMjFINEMyIDIxIDIgMTkgMiAxOVY3SDRNMjEgNVYxNUg4VjVIMjFNMjEuMyAzSDcuN0M2Ljc2IDMgNiAzLjcgNiA0LjU1VjE1LjQ1QzYgMTYuMzEgNi43NiAxNyA3LjcgMTdIMjEuM0MyMi4yNCAxNyAyMyAxNi4zMSAyMyAxNS40NVY0LjU1QzIzIDMuNyAyMi4yNCAzIDIxLjMgM005IDZIMTJWMTFIOVY2TTIwIDE0SDlWMTJIMjBWMTRNMjAgOEgxNFY2SDIwVjhNMjAgMTFIMTRWOUgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdzcGFwZXJWYXJpYW50T3V0bGluZSA9IFwiTTIwIDVMMjAgMTlMNCAxOUw0IDVIMjBNMjAgM0g0QzIuODkgMyAyIDMuODkgMiA1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjVDMjIgMy44OSAyMS4xMSAzIDIwIDNNMTggMTVINlYxN0gxOFYxNU0xMCA3SDZWMTNIMTBWN00xMiA5SDE4VjdIMTJWOU0xOCAxMUgxMlYxM0gxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmMgPSBcIk03LjI0IDJDNS42IDIgMy45NiAyIDMuNTUgMi4wNEMyLjY3IDIuMDkgMi4wOCAyLjczIDIuMDQgMy41NkMyIDQuMzcgMiAxOS41OSAyLjA0IDIwLjQxQzIuMDkgMjEuMjMgMi43MSAyMS44NiAzLjU1IDIxLjkxQzQuNDYgMjEuOTYgNy40NCAyMS45NyA4LjI5IDIxLjk3QzYuNzYgMjAuOTEgNi41NSAxOC45MiA2LjQxIDE1LjIzQzYuMzMgMTMuMDQgNi40IDUuMzYgNi40MSA1LjA0TDYuNDUgMi45NEwxNC41IDExVjEzLjVMOC4wOSA3LjExQzguMDggOC4zOCA4LjA2IDEwLjAzIDguMDYgMTEuNTRDOC4wNiAxMyA4LjA4IDE0LjM0IDguMTIgMTUuMDVDOC4zNiAxOS4wNyA4Ljc0IDIwLjk2IDEwLjgzIDIxLjdDMTEuNSAyMS45MyAxMi4wNyAyMiAxMy4wNyAyMkMxMy44OSAyMiAxOS42MyAyMiAyMC40NSAyMS45NkMyMS4zMyAyMS45MSAyMS45MyAyMS4yNyAyMS45NyAyMC40NEMyMiAxOS42MyAyMiA0LjQ1IDIxLjk3IDMuNjJDMjEuOTEgMi44IDIxLjI5IDIuMTggMjAuNDUgMi4xM0MxOS41NCAyLjA4IDE2LjU3IDIuMDMgMTUuNzEgMi4wM0MxNy4yNCAzLjA5IDE3LjQ0IDUuMDggMTcuNTkgOC43OEMxNy42NyAxMC45NyAxNy42IDE4LjY0IDE3LjU5IDE4Ljk3TDE3LjU1IDIxLjA2TDkuNTMgMTNWMTAuNUwxNS45MSAxNi44OUMxNS45MiAxNS42MiAxNS45NCAxMy45NyAxNS45NCAxMi40NkMxNS45NCAxMSAxNS45MiA5LjY2IDE1Ljg4IDguOTZDMTUuNjQgNC45MyAxNS4yNiAzLjA0IDEzLjE3IDIuM0MxMi41MyAyLjA3IDExLjkzIDIgMTAuOTMgMkg3LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5mY1NlYXJjaFZhcmlhbnQgPSBcIk0xNi41LDEyQzE5LDEyIDIxLDE0IDIxLDE2LjVDMjEsMTcuMzggMjAuNzYsMTguMjEgMjAuMzIsMTguOUwyMy40LDIyTDIyLDIzLjM5TDE4Ljg5LDIwLjMyQzE4LjIsMjAuNzUgMTcuMzgsMjEgMTYuNSwyMUMxNCwyMSAxMiwxOSAxMiwxNi41QzEyLDE0IDE0LDEyIDE2LjUsMTJNMTYuNSwxNEEyLjUsMi41IDAgMCwwIDE0LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE5QzE3Ljg5LDE5IDE5LDE3Ljg4IDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTE4LDZWMTAuMThDMTcuMzMsMTAgMTYuNjYsOS45NyAxNiwxMFY4SDEzVjEwLjI4TDEzLjUzLDEwLjcyQzEyLjM0LDExLjMzIDExLjM1LDEyLjMgMTAuNzIsMTMuNTNDMTAuMjgsMTMuMTcgMTAsMTIuNjIgMTAsMTJDMTAsMTEuMjYgMTAuNDEsMTAuNjIgMTEsMTAuMjhWOEEyLDIgMCAwLDEgMTMsNkgxOE02LDE4VjZIOEwxMCw2VjhIOFYxNkgxMEM5Ljk2LDE2LjY4IDEwLDE3LjM1IDEwLjE3LDE4SDZNMjAsNEg0VjIwSDExQzExLjUzLDIwLjggMTIuMjEsMjEuNSAxMy4wMywyMkg0QzIuODksMjIgMiwyMS4xIDIsMjBWNEEyLDIgMCAwLDEgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjEzLjA0QzIxLjUsMTIuMjQgMjAuODIsMTEuNTQgMjAsMTFWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNUYXAgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNNCw0SDExQTIsMiAwIDAsMSAxMyw2VjlIMTFWNkg0VjExSDZWOUw5LDEyTDYsMTVWMTNINEEyLDIgMCAwLDEgMiwxMVY2QTIsMiAwIDAsMSA0LDRNMjAsMjBIMTNBMiwyIDAgMCwxIDExLDE4VjE1SDEzVjE4SDIwVjEzSDE4VjE1TDE1LDEyTDE4LDlWMTFIMjBBMiwyIDAgMCwxIDIyLDEzVjE4QTIsMiAwIDAsMSAyMCwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNWYXJpYW50ID0gXCJNMTgsNkgxM0EyLDIgMCAwLDAgMTEsOFYxMC4yOEMxMC40MSwxMC42MiAxMCwxMS4yNiAxMCwxMkEyLDIgMCAwLDAgMTIsMTRDMTMuMTEsMTQgMTQsMTMuMSAxNCwxMkMxNCwxMS4yNiAxMy42LDEwLjYyIDEzLDEwLjI4VjhIMTZWMTZIOFY4SDEwVjZIOEw2LDZWMThIMThNMjAsMjBINFY0SDIwTTIwLDJINEEyLDIgMCAwLDAgMiw0VjIwQTIsMiAwIDAsMCA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNWYXJpYW50T2ZmID0gXCJNMS4yNSwyLjA1TDIxLjk1LDIyLjc1TDIwLjcsMjRMMTguNywyMkg0QTIsMiAwIDAsMSAyLDIwVjUuM0wwLDMuM0wxLjI1LDIuMDVNMy44MSwyQzMuODcsMiAzLjk0LDIgNCwySDIwQzIxLjExLDIgMjIsMi44OSAyMiw0VjIwQzIyLDIwLjA2IDIyLDIwLjEzIDIyLDIwLjE5TDIwLDE4LjJWNEg1LjhMMy44MSwyTTYsOS4zTDQsNy4zVjIwSDE2LjdMMTQuNywxOEg2VjkuM00xOCwxNi4yTDE2LDE0LjJWOEgxM1YxMC4yOEMxMy42LDEwLjYyIDE0LDExLjI2IDE0LDEyQzE0LDEyLjA2IDE0LDEyLjEzIDE0LDEyLjE5TDExLDkuMlY4QTIsMiAwIDAsMSAxMyw2SDE4VjE2LjJNOCwxNkgxMi43TDgsMTEuM1YxNk0xMCw4SDkuOEw3LjgsNkgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5pbmphID0gXCJNNy43NSwxM0M3Ljc0LDEyLjY1IDcuOSwxMi4zMSA4LjE3LDEyLjA4QzguOTIsMTIuMjQgOS42MiwxMi41NSAxMC4yNSwxM0MxMC4yNSwxMy42OCA5LjY5LDE0LjI0IDksMTQuMjRDOC4zMSwxNC4yNCA3Ljc2LDEzLjY5IDcuNzUsMTNNMTMuNzUsMTNDMTQuMzgsMTIuNTYgMTUuMDgsMTIuMjUgMTUuODMsMTIuMDlDMTYuMSwxMi4zMiAxNi4yNiwxMi42NiAxNi4yNSwxM0MxNi4yNSwxMy43IDE1LjY5LDE0LjI2IDE1LDE0LjI2QzE0LjMxLDE0LjI2IDEzLjc1LDEzLjcgMTMuNzUsMTNWMTNNMTIsOUM5LjIzLDguOTYgNi41LDkuNjUgNC4wNywxMUw0LDEyQzQsMTMuMjMgNC4yOSwxNC40NCA0Ljg0LDE1LjU0QzcuMjEsMTUuMTggOS42LDE1IDEyLDE1QzE0LjQsMTUgMTYuNzksMTUuMTggMTkuMTYsMTUuNTRDMTkuNzEsMTQuNDQgMjAsMTMuMjMgMjAsMTJMMTkuOTMsMTFDMTcuNSw5LjY1IDE0Ljc3LDguOTYgMTIsOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOaW50ZW5kb0dhbWVCb3kgPSBcIk03IDFDNS45IDEgNSAxLjkgNSAzVjIxQzUgMjIuMTEgNS45IDIzIDcgMjNIMTRDMTYuNzYgMjMgMTkgMjAuNzYgMTkgMThWM0MxOSAxLjkgMTguMTEgMSAxNyAxSDdNOCA0SDE2VjExSDhWNE05IDE0SDEwVjE2SDEyVjE3SDEwVjE5SDlWMTdIN1YxNkg5VjE0TTE2IDE1QzE2LjU1IDE1IDE3IDE1LjQ1IDE3IDE2QzE3IDE2LjU1IDE2LjU1IDE3IDE2IDE3QzE1LjQ1IDE3IDE1IDE2LjU1IDE1IDE2QzE1IDE1LjQ1IDE1LjQ1IDE1IDE2IDE1TTE0IDE3QzE0LjU1IDE3IDE1IDE3LjQ1IDE1IDE4QzE1IDE4LjU1IDE0LjU1IDE5IDE0IDE5QzEzLjQ1IDE5IDEzIDE4LjU1IDEzIDE4QzEzIDE3LjQ1IDEzLjQ1IDE3IDE0IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5pbnRlbmRvU3dpdGNoID0gXCJNMTAuMDQsMjAuNEg3LjEyQzYuMTksMjAuNCA1LjMsMjAgNC42NCwxOS4zNkM0LDE4LjcgMy42LDE3LjgxIDMuNiwxNi44OFY3LjEyQzMuNiw2LjE5IDQsNS4zIDQuNjQsNC42NEM1LjMsNCA2LjE5LDMuNjIgNy4xMiwzLjYySDEwLjA0VjIwLjRNNy4xMiwyQTUuMTIsNS4xMiAwIDAsMCAyLDcuMTJWMTYuODhDMiwxOS43MSA0LjI5LDIyIDcuMTIsMjJIMTEuNjVWMkg3LjEyTTUuMTEsOEM1LjExLDkuMDQgNS45NSw5Ljg4IDcsOS44OEM4LjAzLDkuODggOC44Nyw5LjA0IDguODcsOEM4Ljg3LDYuOTYgOC4wMyw2LjEyIDcsNi4xMkM1Ljk1LDYuMTIgNS4xMSw2Ljk2IDUuMTEsOE0xNy42MSwxMUMxOC43MiwxMSAxOS42MiwxMS44OSAxOS42MiwxM0MxOS42MiwxNC4xMiAxOC43MiwxNSAxNy42MSwxNUMxNi41LDE1IDE1LjU4LDE0LjEyIDE1LjU4LDEzQzE1LjU4LDExLjg5IDE2LjUsMTEgMTcuNjEsMTFNMTYuODgsMjJBNS4xMiw1LjEyIDAgMCwwIDIyLDE2Ljg4VjcuMTJDMjIsNC4yOSAxOS43MSwyIDE2Ljg4LDJIMTMuNjVWMjJIMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmludGVuZG9XaWkgPSBcIk0xNy44NCwxNi45NEgxNS45N1YxMC43OUgxNy44NFYxNi45NE0xOCw4LjU4QzE4LDkuMTkgMTcuNSw5LjY5IDE2LjksOS42OUExLjExLDEuMTEgMCAwLDEgMTUuNzksOC41OEMxNS43OSw3Ljk2IDE2LjI5LDcuNDYgMTYuOSw3LjQ2QzE3LjUsNy40NiAxOCw3Ljk2IDE4LDguNThNMjEuODIsMTYuOTRIMTkuOTRWMTAuNzlIMjEuODJWMTYuOTRNMjIsOC41OEMyMiw5LjE5IDIxLjUsOS42OSAyMC44OCw5LjY5QTEuMTEsMS4xMSAwIDAsMSAxOS43Nyw4LjU4QzE5Ljc3LDcuOTYgMjAuMjcsNy40NiAyMC44OCw3LjQ2QzIxLjUsNy40NiAyMiw3Ljk2IDIyLDguNThNMTIuOSw4LjA1SDE0LjlMMTIuNzgsMTUuNUMxMi43OCwxNS41IDEyLjUsMTcuMDQgMTEuMjgsMTcuMDRDMTAuMDcsMTcuMDQgOS43OSwxNS41IDkuNzksMTUuNUw4LjQ1LDEwLjY0TDcuMTEsMTUuNUM3LjExLDE1LjUgNi44MiwxNy4wNCA1LjYxLDE3LjA0QzQuNCwxNy4wNCA0LjEyLDE1LjUgNC4xMiwxNS41TDIsOC4wNUg0TDUuNzIsMTQuNjdMNy4xMSw5LjNDNy40Myw3Ljk1IDguNDUsNy45NyA4LjQ1LDcuOTdDOC40NSw3Ljk3IDkuNDcsNy45NSA5Ljc5LDkuM0wxMS4xNywxNC42N0wxMi45LDguMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmludGVuZG9XaWl1ID0gXCJNMiwxNS45NkMyLDE4LjE5IDMuNTQsMTkuNSA1Ljc5LDE5LjVIMTguNTdDMjAuNDcsMTkuNSAyMiwxOC4yIDIyLDE2LjMyVjYuOTdDMjIsNS44MyAyMS4xNSw0LjYgMjAuMTEsNC42SDE3LjE1VjEyLjNDMTcuMTUsMTguMTQgNi45NywxOC4wOSA2Ljk3LDEyLjQxVjQuNUg0LjcyQzMuMjYsNC41IDIsNS40MSAyLDYuODVWMTUuOTZNOS4zNCwxMS4yM0M5LjM0LDE1Ljc0IDE0LjY2LDE1LjA5IDE0LjY2LDExLjk0VjQuNUg5LjM0VjExLjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5peCA9IFwiTTkuOSA4LjdMNSAxNy4yTDMuOSAxNS4zTDUuMiAxM0gyLjZMMiAxMkwyLjYgMTFINi4zTDcuNiA4LjdIOS45TTEwLjIgMTUuNUgxOS45TDE4LjggMTcuNEgxNi4yTDE3LjUgMTkuN0wxNi45IDIwLjdIMTUuOEwxNCAxNy40SDExLjNMMTAuMiAxNS41TTE1LjkgMTEuOEwxMSAzLjNIMTMuMkwxNC41IDUuNkwxNS44IDMuM0gxNi45TDE3LjUgNC4zTDE1LjYgNy41TDE3IDkuOEwxNS45IDExLjhNMTMuOCA4LjVINEw1LjEgNi42SDcuN0w2LjQgNC4zTDcgMy4zSDguMUwxMCA2LjVIMTIuN0wxMy44IDguNU0xNC4xIDE1LjNMMTkgNi44TDIwLjEgOC43TDE4LjggMTFIMjEuNEwyMiAxMkwyMS40IDEzSDE3LjdMMTYuNCAxNS4zSDE0LjFNOC4xIDEyLjJMMTMgMjAuNkgxMC44TDkuNSAxOC4zTDguNCAyMC42SDcuMUw2LjUgMTkuNkw4LjQgMTYuNEw3IDE0LjJMOC4xIDEyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm9kZWpzID0gXCJNMTIsMS44NUMxMS43MywxLjg1IDExLjQ1LDEuOTIgMTEuMjIsMi4wNUwzLjc4LDYuMzVDMy4zLDYuNjMgMyw3LjE1IDMsNy43MVYxNi4yOUMzLDE2Ljg1IDMuMywxNy4zNyAzLjc4LDE3LjY1TDUuNzMsMTguNzdDNi42OCwxOS4yMyA3LDE5LjI0IDcuNDQsMTkuMjRDOC44NCwxOS4yNCA5LjY1LDE4LjM5IDkuNjUsMTYuOTFWOC40NEM5LjY1LDguMzIgOS41NSw4LjIyIDkuNDMsOC4yMkg4LjVDOC4zNyw4LjIyIDguMjcsOC4zMiA4LjI3LDguNDRWMTYuOTFDOC4yNywxNy41NyA3LjU5LDE4LjIyIDYuNSwxNy42N0w0LjQ1LDE2LjVDNC4zOCwxNi40NSA0LjM0LDE2LjM3IDQuMzQsMTYuMjlWNy43MUM0LjM0LDcuNjIgNC4zOCw3LjU0IDQuNDUsNy41TDExLjg5LDMuMjFDMTEuOTUsMy4xNyAxMi4wNSwzLjE3IDEyLjExLDMuMjFMMTkuNTUsNy41QzE5LjYyLDcuNTQgMTkuNjYsNy42MiAxOS42Niw3LjcxVjE2LjI5QzE5LjY2LDE2LjM3IDE5LjYyLDE2LjQ1IDE5LjU1LDE2LjVMMTIuMTEsMjAuNzlDMTIuMDUsMjAuODMgMTEuOTUsMjAuODMgMTEuODgsMjAuNzlMMTAsMTkuNjVDOS45MiwxOS42MiA5Ljg0LDE5LjYxIDkuNzksMTkuNjRDOS4yNiwxOS45NCA5LjE2LDIwIDguNjcsMjAuMTVDOC41NSwyMC4xOSA4LjM2LDIwLjI2IDguNzQsMjAuNDdMMTEuMjIsMjEuOTRDMTEuNDYsMjIuMDggMTEuNzIsMjIuMTUgMTIsMjIuMTVDMTIuMjgsMjIuMTUgMTIuNTQsMjIuMDggMTIuNzgsMjEuOTRMMjAuMjIsMTcuNjVDMjAuNywxNy4zNyAyMSwxNi44NSAyMSwxNi4yOVY3LjcxQzIxLDcuMTUgMjAuNyw2LjYzIDIwLjIyLDYuMzVMMTIuNzgsMi4wNUMxMi41NSwxLjkyIDEyLjI4LDEuODUgMTIsMS44NU0xNCw4QzExLjg4LDggMTAuNjEsOC44OSAxMC42MSwxMC4zOUMxMC42MSwxMiAxMS44NywxMi40NyAxMy45MSwxMi42N0MxNi4zNCwxMi45MSAxNi41MywxMy4yNyAxNi41MywxMy43NUMxNi41MywxNC41OCAxNS44NiwxNC45MyAxNC4zLDE0LjkzQzEyLjMyLDE0LjkzIDExLjksMTQuNDQgMTEuNzUsMTMuNDZDMTEuNzMsMTMuMzYgMTEuNjQsMTMuMjggMTEuNTMsMTMuMjhIMTAuNTdDMTAuNDUsMTMuMjggMTAuMzYsMTMuMzcgMTAuMzYsMTMuNUMxMC4zNiwxNC43NCAxMS4wNCwxNi4yNCAxNC4zLDE2LjI0QzE2LjY1LDE2LjI0IDE4LDE1LjMxIDE4LDEzLjY5QzE4LDEyLjA4IDE2LjkyLDExLjY2IDE0LjYzLDExLjM1QzEyLjMyLDExLjA1IDEyLjA5LDEwLjg5IDEyLjA5LDEwLjM1QzEyLjA5LDkuOSAxMi4yOSw5LjMgMTQsOS4zQzE1LjUsOS4zIDE2LjA5LDkuNjMgMTYuMzIsMTAuNjZDMTYuMzQsMTAuNzYgMTYuNDMsMTAuODMgMTYuNTMsMTAuODNIMTcuNUMxNy41NSwxMC44MyAxNy42MSwxMC44MSAxNy42NSwxMC43NkMxNy42OSwxMC43MiAxNy43MiwxMC42NiAxNy43LDEwLjZDMTcuNTYsOC44MiAxNi4zOCw4IDE0LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm9vZGxlcyA9IFwiTTIyIDNMMTAgNC40MVY2SDIyVjdIMTBWMTJIMjJDMjIgMTMuODEgMjEuNDMgMTUuNDYgMjAuMzIgMTYuOTVTMTcuNzcgMTkuNTMgMTYgMjAuMjVWMjJIOFYyMC4yNUM2LjI0IDE5LjUzIDQuNzkgMTguNDMgMy42OCAxNi45NVMyIDEzLjgxIDIgMTJINVY0TDIyIDJWM002IDQuODhWNkg3VjQuNzhMNiA0Ljg4TTYgN1YxMkg3VjdINk05IDEyVjdIOFYxMkg5TTkgNlY0LjU1TDggNC42NFY2SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90RXF1YWwgPSBcIk0yMSwxMEg5VjhIMjFWMTBNMjEsMTZIOVYxNEgyMVYxNk00LDVINlYxNkg0VjVNNiwxOFYyMEg0VjE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90RXF1YWxWYXJpYW50ID0gXCJNMTQuMDgsNC42MUwxNS45Miw1LjRMMTQuOCw4SDE5VjEwSDEzLjk1TDEyLjIzLDE0SDE5VjE2SDExLjM4TDkuOTIsMTkuNEw4LjA4LDE4LjYxTDkuMiwxNkg1VjE0SDEwLjA2TDExLjc3LDEwSDVWOEgxMi42M0wxNC4wOCw0LjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGUgPSBcIk0xNCwxMFY0LjVMMTkuNSwxME01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjlMMTUsM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNaW51cyA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xNCAxNUg2VjEzSDE0VjE1TTE0IDEwVjQuNUwxOS41IDEwSDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNaW51c091dGxpbmUgPSBcIk0xNiAzSDRDMi44OSAzIDIgMy44OSAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY5TDE2IDNNMjAgMTlINFY1SDEzVjEySDIwVjE5TTE1IDEwVjQuNUwyMC41IDEwSDE1TTYgMTNIMTJWMTVINlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlTXVsdGlwbGUgPSBcIk0xNiw5SDIxLjVMMTYsMy41VjlNNywySDE3TDIzLDhWMThBMiwyIDAgMCwxIDIxLDIwSDdDNS44OSwyMCA1LDE5LjEgNSwxOFY0QTIsMiAwIDAsMSA3LDJNMyw2VjIySDIxVjI0SDNBMiwyIDAgMCwxIDEsMjJWNkgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNdWx0aXBsZU91dGxpbmUgPSBcIk0zLDZWMjJIMjFWMjRIM0EyLDIgMCAwLDEgMSwyMlY2SDNNMTYsOUgyMS41TDE2LDMuNVY5TTcsMkgxN0wyMyw4VjE4QTIsMiAwIDAsMSAyMSwyMEg3QzUuODksMjAgNSwxOS4xIDUsMThWNEEyLDIgMCAwLDEgNywyTTcsNFYxOEgyMVYxMUgxNFY0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZU91dGxpbmUgPSBcIk0xNCwxMEgxOS41TDE0LDQuNVYxME01LDNIMTVMMjEsOVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNNNSw1VjE5SDE5VjEySDEyVjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlUGx1cyA9IFwiTTE0LDEwSDE5LjVMMTQsNC41VjEwTTUsM0gxNUwyMSw5VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM005LDE4SDExVjE1SDE0VjEzSDExVjEwSDlWMTNINlYxNUg5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVQbHVzT3V0bGluZSA9IFwiTTE1LDEwSDIwLjVMMTUsNC41VjEwTTQsM0gxNkwyMiw5VjE5QTIsMiAwIDAsMSAyMCwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWNUMyLDMuODkgMi44OSwzIDQsM000LDVWMTlIMjBWMTJIMTNWNUg0TTgsMTdWMTVINlYxM0g4VjExSDEwVjEzSDEyVjE1SDEwVjE3SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVJlbW92ZSA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xMy41NCAxNi4xMkwxMi4xMiAxNy41NEwxMCAxNS40MUw3Ljg4IDE3LjU0TDYuNDcgMTYuMTJMOC41OSAxNEw2LjQ3IDExLjg4TDcuODggMTAuNDdMMTAgMTIuNTlMMTIuMTIgMTAuNDdMMTMuNTQgMTEuODhMMTEuNDEgMTRMMTMuNTQgMTYuMTJNMTQgMTBWNC41TDE5LjUgMTBIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVJlbW92ZU91dGxpbmUgPSBcIk0xNiAzSDRDMi44OSAzIDIgMy44OSAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY5TDE2IDNNMjAgMTlINFY1SDEzVjEySDIwVjE5TTE1IDEwVjQuNUwyMC41IDEwSDE1TTExLjgzIDEyLjU5TDEwLjQxIDE0TDExLjgzIDE1LjQxTDEwLjQxIDE2LjgzTDkgMTUuNDFMNy41OSAxNi44M0w2LjE3IDE1LjQxTDcuNTkgMTRMNi4xNyAxMi41OUw3LjU5IDExLjE3TDkgMTIuNTlMMTAuNDEgMTEuMTdMMTEuODMgMTIuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVNlYXJjaCA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxMC44MkM1LjU1IDguMzcgOS41OSA4LjQgMTIuMSAxMC45QzE0LjYzIDEzLjQ0IDE0LjYzIDE3LjU2IDEyLjEgMjAuMUMxMS43NCAyMC40NSAxMS4zNSAyMC43NCAxMC45NCAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY5TDE1IDNNMTQgMTBWNC41TDE5LjUgMTBIMTRNNy41IDExQzUgMTEgMyAxMyAzIDE1LjVDMyAxNi4zOCAzLjI1IDE3LjIxIDMuNjkgMTcuOUwuNjEgMjFMMiAyMi4zOUw1LjEyIDE5LjMyQzUuODEgMTkuNzUgNi42MyAyMCA3LjUgMjBDMTAgMjAgMTIgMTggMTIgMTUuNVMxMCAxMSA3LjUgMTFNNy41IDE4QzYuMTIgMTggNSAxNi44OCA1IDE1LjVTNi4xMiAxMyA3LjUgMTMgMTAgMTQuMTIgMTAgMTUuNSA4Ljg4IDE4IDcuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlU2VhcmNoT3V0bGluZSA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxMC44MkMzLjYgMTAuMjQgNC4yOCA5LjggNSA5LjVWNUgxMlYxMC44MkMxMi4wMyAxMC44NSAxMi4wNyAxMC44NyAxMi4xIDEwLjlDMTIuNDQgMTEuMjQgMTIuNzMgMTEuNjEgMTIuOTcgMTJIMTlWMTlIMTIuOTdDMTIuNzMgMTkuMzkgMTIuNDQgMTkuNzYgMTIuMSAyMC4xQzExLjc0IDIwLjQ1IDExLjM1IDIwLjc0IDEwLjk0IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xNCAxMFY0LjVMMTkuNSAxMEgxNE03LjUgMTFDNSAxMSAzIDEzIDMgMTUuNUMzIDE2LjM4IDMuMjUgMTcuMjEgMy42OSAxNy45TC42MSAyMUwyIDIyLjM5TDUuMTIgMTkuMzJDNS44MSAxOS43NSA2LjYzIDIwIDcuNSAyMEMxMCAyMCAxMiAxOCAxMiAxNS41UzEwIDExIDcuNSAxMU03LjUgMThDNi4xMiAxOCA1IDE2Ljg4IDUgMTUuNVM2LjEyIDEzIDcuNSAxMyAxMCAxNC4xMiAxMCAxNS41IDguODggMTggNy41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVUZXh0ID0gXCJNMTQsMTBIMTkuNUwxNCw0LjVWMTBNNSwzSDE1TDIxLDlWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzTTUsMTJWMTRIMTlWMTJINU01LDE2VjE4SDE0VjE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVRleHRPdXRsaW5lID0gXCJNMTUgM0g1QTIgMiAwIDAgMCAzIDVWMTlBMiAyIDAgMCAwIDUgMjFIMTlBMiAyIDAgMCAwIDIxIDE5VjlMMTUgM00xOSAxOUg1VjVIMTRWMTBIMTlNMTcgMTRIN1YxMkgxN00xNCAxN0g3VjE1SDE0XCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2sgPSBcIk0zLDdWNUg1VjRDNSwyLjg5IDUuOSwyIDcsMkgxM1Y5TDE1LjUsNy41TDE4LDlWMkgxOUMyMC4wNSwyIDIxLDIuOTUgMjEsNFYyMEMyMSwyMS4wNSAyMC4wNSwyMiAxOSwyMkg3QzUuOTUsMjIgNSwyMS4wNSA1LDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTcsMTFINVYxM0g3VjExTTcsN1Y1SDVWN0g3TTcsMTlWMTdINVYxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rQ2hlY2sgPSBcIk0xNi43NSAyMi4xNkwxNCAxOS4xNkwxNS4xNiAxOEwxNi43NSAxOS41OUwyMC4zNCAxNkwyMS41IDE3LjQxTDE2Ljc1IDIyLjE2TTMgN1Y1SDVWNEM1IDIuODkgNS45IDIgNyAySDEzVjlMMTUuNSA3LjVMMTggOVYySDE5QzIwLjA1IDIgMjEgMi45NSAyMSA0VjEzLjhDMjAuMTIgMTMuMjkgMTkuMDkgMTMgMTggMTNDMTQuNjkgMTMgMTIgMTUuNjkgMTIgMTlDMTIgMjAuMDkgMTIuMjkgMjEuMTIgMTIuOCAyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgNVY3SDdWNUg1TTUgMTlIN1YxN0g1VjE5TTUgMTNIN1YxMUg1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rQ2hlY2tPdXRsaW5lID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjA4QzEyLjIgMjAuNzIgMTIuNDUgMjEuMzkgMTIuOCAyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzVjVINVY0QzUgMi44OSA1LjkgMiA3IDJIMTlDMjAuMDUgMiAyMSAyLjk1IDIxIDRWMTMuOEMyMC4zOSAxMy40NSAxOS43MiAxMy4yIDE5IDEzLjA4VjRIMTdNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNNSA3SDdWNUg1VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tFZGl0ID0gXCJNMjEuMDQgMTMuMTNDMjEuMTggMTMuMTMgMjEuMzEgMTMuMTkgMjEuNDIgMTMuM0wyMi43IDE0LjU4QzIyLjkyIDE0Ljc5IDIyLjkyIDE1LjE0IDIyLjcgMTUuMzVMMjEuNyAxNi4zNUwxOS42NSAxNC4zTDIwLjY1IDEzLjNDMjAuNzYgMTMuMTkgMjAuOSAxMy4xMyAyMS4wNCAxMy4xM00xOS4wNyAxNC44OEwyMS4xMiAxNi45M0wxNS4wNiAyM0gxM1YyMC45NEwxOS4wNyAxNC44OE0zIDdWNUg1VjRDNSAyLjg5IDUuOSAyIDcgMkgxM1Y5TDE1LjUgNy41TDE4IDlWMkgxOUMyMC4wNSAyIDIxIDIuOTUgMjEgNFYxMEwxMSAyMFYyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgN0g3VjVINVY3TTUgMTFWMTNIN1YxMUg1TTUgMTdWMTlIN1YxN0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rRWRpdE91dGxpbmUgPSBcIk0xOS4wNyAxNC44OEwyMS4xMiAxNi45M0wxNS4wNiAyM0gxM1YyMC45NEwxOS4wNyAxNC44OE0yMS4wNCAxMy4xM0MyMS4xOCAxMy4xMyAyMS4zMSAxMy4xOSAyMS40MiAxMy4zTDIyLjcgMTQuNThDMjIuOTIgMTQuNzkgMjIuOTIgMTUuMTQgMjIuNyAxNS4zNUwyMS43IDE2LjM1TDE5LjY1IDE0LjNMMjAuNjUgMTMuM0MyMC43NiAxMy4xOSAyMC45IDEzLjEzIDIxLjA0IDEzLjEzTTE3IDRWMTBMMTUgOEwxMyAxMFY0SDlWMjBIMTFWMjJIN0M1Ljk1IDIyIDUgMjEuMDUgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuODkgNS45IDIgNyAySDE5QzIwLjA1IDIgMjEgMi45NSAyMSA0VjEwTDE5IDEyVjRIMTdNNSA1VjdIN1Y1SDVNNSAxMVYxM0g3VjExSDVNNSAxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tNaW51cyA9IFwiTTMgN1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTNWOUwxNS41IDcuNUwxOCA5VjJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC4xIDEzLjMgMTkuMSAxMyAxOCAxM0MxNC43IDEzIDEyIDE1LjcgMTIgMTlDMTIgMjAuMSAxMi4zIDIxLjEgMTIuOCAyMkg3QzUuOSAyMiA1IDIxIDUgMjBWMTlIM1YxN0g1VjEzSDNWMTFINVY3SDNNNSA1VjdIN1Y1SDVNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNMTQgMThWMjBIMjJWMThIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tNaW51c091dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00xNCAxOFYyMEgyMlYxOEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va011bHRpcGxlID0gXCJNOS4wNSw5SDcuMDZWNkg5LjA1VjQuMDNINy4wNlYzLjAzQzcuMDYsMS45MiA3Ljk1LDEuMDQgOS4wNSwxLjA0SDE1LjAzVjhMMTcuNSw2LjVMMjAsOFYxLjA0SDIxQzIyLjA1LDEuMDQgMjMsMiAyMywzLjAzVjE3QzIzLDE4LjAzIDIyLjA1LDE5IDIxLDE5SDkuMDVDOCwxOSA3LjA2LDE4LjA1IDcuMDYsMTdWMTZIOS4wNVYxNEg3LjA2VjExSDkuMDVWOU0xLDE4SDNWMTVIMVYxM0gzVjEwSDFWOEgzVjVINVY4SDNWMTBINVYxM0gzVjE1SDVWMThIM1YyMEg1VjIxSDIxVjIzSDVBMiwyIDAgMCwxIDMsMjFWMjBIMVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va091dGxpbmUgPSBcIk0xNyw0VjEwTDE1LDhMMTMsMTBWNEg5VjIwSDE5VjRIMTdNMyw3VjVINVY0QzUsMi44OSA1LjksMiA3LDJIMTlDMjAuMDUsMiAyMSwyLjk1IDIxLDRWMjBDMjEsMjEuMDUgMjAuMDUsMjIgMTksMjJIN0M1Ljk1LDIyIDUsMjEuMDUgNSwyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM001LDVWN0g3VjVINU01LDE5SDdWMTdINVYxOU01LDEzSDdWMTFINVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1BsdXMgPSBcIk0zIDdWNUg1VjRDNSAyLjkgNS45IDIgNyAySDEzVjlMMTUuNSA3LjVMMTggOVYySDE5QzIwIDIgMjEgMyAyMSA0VjEzLjhDMjAuMSAxMy4zIDE5LjEgMTMgMTggMTNDMTQuNyAxMyAxMiAxNS43IDEyIDE5QzEyIDIwLjEgMTIuMyAyMS4xIDEyLjggMjJIN0M1LjkgMjIgNSAyMSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgNVY3SDdWNUg1TTUgMTlIN1YxN0g1VjE5TTUgMTNIN1YxMUg1VjEzTTE3IDE1VjE4SDE0VjIwSDE3VjIzSDE5VjIwSDIyVjE4SDE5VjE1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rUGx1c091dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00xNyAxNVYxOEgxNFYyMEgxN1YyM0gxOVYyMEgyMlYxOEgxOVYxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1JlbW92ZSA9IFwiTTMgN1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTNWOUwxNS41IDcuNUwxOCA5VjJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC4xIDEzLjMgMTkuMSAxMyAxOCAxM0MxNC43IDEzIDEyIDE1LjcgMTIgMTlDMTIgMjAuMSAxMi4zIDIxLjEgMTIuOCAyMkg3QzUuOSAyMiA1IDIxIDUgMjBWMTlIM1YxN0g1VjEzSDNWMTFINVY3SDNNNSA1VjdIN1Y1SDVNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNMjAuMSAxNS41TDE4IDE3LjZMMTUuOSAxNS41TDE0LjUgMTYuOUwxNi42IDE5TDE0LjUgMjEuMUwxNS45IDIyLjVMMTggMjAuNEwyMC4xIDIyLjVMMjEuNSAyMS4xTDE5LjQgMTlMMjEuNSAxNi45TDIwLjEgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1JlbW92ZU91dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00yMC4xIDE1LjVMMTggMTcuNkwxNS45IDE1LjVMMTQuNSAxNi45TDE2LjYgMTlMMTQuNSAyMS4xTDE1LjkgMjIuNUwxOCAyMC40TDIwLjEgMjIuNUwyMS41IDIxLjFMMTkuNCAxOUwyMS41IDE2LjlMMjAuMSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGlmaWNhdGlvbkNsZWFyQWxsID0gXCJNNSwxM0gxOVYxMUg1TTMsMTdIMTdWMTVIM003LDdWOUgyMVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnBtID0gXCJNNCwxMFYxNEg2VjExSDdWMTRIOFYxMEg0TTksMTBWMTVIMTFWMTRIMTNWMTBIOU0xMiwxMVYxM0gxMVYxMUgxMk0xNCwxMFYxNEgxNlYxMUgxN1YxNEgxOFYxMUgxOVYxNEgyMFYxMEgxNE0zLDlIMjFWMTVIMTJWMTZIOFYxNUgzVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVrZSA9IFwiTTE0LjA0LDEySDEwVjExSDUuNUEzLjUsMy41IDAgMCwxIDIsNy41QTMuNSwzLjUgMCAwLDEgNS41LDRDNi41Myw0IDcuNDUsNC40NCA4LjA5LDUuMTVDOC41LDMuMzUgMTAuMDgsMiAxMiwyQzEzLjkyLDIgMTUuNSwzLjM1IDE1LjkxLDUuMTVDMTYuNTUsNC40NCAxNy40Nyw0IDE4LjUsNEEzLjUsMy41IDAgMCwxIDIyLDcuNUEzLjUsMy41IDAgMCwxIDE4LjUsMTFIMTQuMDRWMTJNMTAsMTYuOVYxNS43Nkg1VjEzLjc2SDE5VjE1Ljc2SDE0LjA0VjE2LjkyTDIwLDE5LjA4QzIwLjU4LDE5LjI5IDIxLDE5Ljg0IDIxLDIwLjVBMS41LDEuNSAwIDAsMSAxOS41LDIySDQuNUExLjUsMS41IDAgMCwxIDMsMjAuNUMzLDE5Ljg0IDMuNDIsMTkuMjkgNCwxOS4wOEwxMCwxNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bGwgPSBcIk0xMiwyQzEzLjg1LDIgMTUuNTUsMi43OCAxNi45LDQuMUwxOC42LDEuOTNMMjAuMTgsMy4xNkwxOC4yLDUuNjhDMTkuMzMsNy40MSAyMCw5LjYgMjAsMTJDMjAsMTcuNSAxNi40MiwyMiAxMiwyMkMxMC4xNSwyMiA4LjQ1LDIxLjIyIDcuMSwxOS45TDUuNCwyMi4wN0wzLjgyLDIwLjg0TDUuOCwxOC4zMkM0LjY3LDE2LjU5IDQsMTQuNCA0LDEyQzQsNi41IDcuNTgsMiAxMiwyTTEyLDRDOC42OSw0IDYsNy41OCA2LDEyQzYsMTMuNzMgNi40MSwxNS4zMyA3LjExLDE2LjY0TDE1LjY3LDUuNjdDMTQuNjYsNC42MiAxMy4zOCw0IDEyLDRNMTIsMjBDMTUuMzEsMjAgMTgsMTYuNDIgMTgsMTJDMTgsMTAuMjcgMTcuNTksOC42NyAxNi44OSw3LjM2TDguMzMsMTguMzNDOS4zNCwxOS4zOCAxMC42MiwyMCAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljID0gXCJNNCwxN1Y5SDJWN0g2VjE3SDRNMjIsMTVDMjIsMTYuMTEgMjEuMSwxNyAyMCwxN0gxNlYxNUgyMFYxM0gxOFYxMUgyMFY5SDE2VjdIMjBBMiwyIDAgMCwxIDIyLDlWMTAuNUExLjUsMS41IDAgMCwxIDIwLjUsMTJBMS41LDEuNSAwIDAsMSAyMiwxMy41VjE1TTE0LDE1VjE3SDhWMTNDOCwxMS44OSA4LjksMTEgMTAsMTFIMTJWOUg4VjdIMTJBMiwyIDAgMCwxIDE0LDlWMTFDMTQsMTIuMTEgMTMuMSwxMyAxMiwxM0gxMFYxNUgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMwQm94ID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMU0xMSw5SDEzVjE1SDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMU0xMyw1QTIsMiAwIDAsMCAxMSw3VjEzQTIsMiAwIDAsMCAxMywxNUgxNUEyLDIgMCAwLDAgMTcsMTNWN0EyLDIgMCAwLDAgMTUsNUgxM00xMyw3SDE1VjEzSDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBCb3hNdWx0aXBsZU91dGxpbmUgPSBcIk0yMSwxN1YzSDdWMTdIMjFNMjEsMUEyLDIgMCAwLDEgMjMsM1YxN0EyLDIgMCAwLDEgMjEsMTlIN0EyLDIgMCAwLDEgNSwxN1YzQTIsMiAwIDAsMSA3LDFIMjFNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTEzLDVIMTVBMiwyIDAgMCwxIDE3LDdWMTNBMiwyIDAgMCwxIDE1LDE1SDEzQTIsMiAwIDAsMSAxMSwxM1Y3QTIsMiAwIDAsMSAxMyw1TTEzLDdWMTNIMTVWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMEJveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjE1SDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBDaXJjbGUgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMENpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE1QTIsMiAwIDAsMSAxMywxN0gxMUEyLDIgMCAwLDEgOSwxNVY5QTIsMiAwIDAsMSAxMSw3TTExLDlWMTVIMTNWOUgxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzEgPSBcIk0xMCw3VjlIMTJWMTdIMTRWN0gxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveCA9IFwiTTE0LDE3SDEyVjlIMTBWN0gxNE0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTE0LDE1SDE2VjVIMTJWN0gxNFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveE11bHRpcGxlT3V0bGluZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0xNCwxNUgxNlY1SDEyVjdIMTRNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxQm94T3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwxN0gxNFY3SDEwVjlIMTJcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUNpcmNsZSA9IFwiTTEwLDdWOUgxMlYxN0gxNFY3SDEwTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxQ2lyY2xlT3V0bGluZSA9IFwiTTEwLDdIMTRWMTdIMTJWOUgxMFY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTAgPSBcIk0xMCA3SDZWOUg4VjE3SDEwVjdNMTYgN0gxNEMxMi45IDcgMTIgNy45IDEyIDlWMTVDMTIgMTYuMTEgMTIuOSAxNyAxNCAxN0gxNkMxNy4xMSAxNyAxOCAxNi4xMSAxOCAxNVY5QzE4IDcuOSAxNy4xMSA3IDE2IDdNMTYgMTVIMTRWOUgxNlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTBCb3ggPSBcIk0xNCw5SDE2VjE1SDE0VjlNMjEsNVYxOUMyMSwyMC4xMSAyMC4xMSwyMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUMyMC4xMSwzIDIxLDMuOSAyMSw1TTEwLDdINlY5SDhWMTdIMTBWN00xOCw5QTIsMiAwIDAsMCAxNiw3SDE0QTIsMiAwIDAsMCAxMiw5VjE1QzEyLDE2LjExIDEyLjksMTcgMTQsMTdIMTZDMTcuMTEsMTcgMTgsMTYuMTEgMTgsMTVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTBCb3hNdWx0aXBsZSA9IFwiTTMgNVYyMUgxOVYyM0gzQzEuOSAyMyAxIDIyLjExIDEgMjFWNUgzTTE2IDEzSDE4VjdIMTZWMTNNMjEgMUg3QzUuOSAxIDUgMS45IDUgM1YxN0M1IDE4LjExIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS45IDIyLjExIDEgMjEgMU0xMiAxNUgxMFY3SDhWNUgxMlYxNU0yMCAxM0MyMCAxNC4xMSAxOS4xMSAxNSAxOCAxNUgxNkMxNC45IDE1IDE0IDE0LjExIDE0IDEzVjdDMTQgNS45IDE0LjkgNSAxNiA1SDE4QzE5LjExIDUgMjAgNS45IDIwIDdWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzEwQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEgMTdWM0g3VjE3SDIxTTIxIDFDMjIuMTEgMSAyMyAxLjkgMjMgM1YxN0MyMyAxOC4xMSAyMi4xMSAxOSAyMSAxOUg3QzUuOSAxOSA1IDE4LjExIDUgMTdWM0M1IDEuOSA1LjkgMSA3IDFIMjFNMyA1VjIxSDE5VjIzSDNDMS45IDIzIDEgMjIuMTEgMSAyMVY1SDNNMTIgNUg4VjdIMTBWMTVIMTJWNU0xOCA1SDE2QzE0LjkgNSAxNCA1LjkgMTQgN1YxM0MxNCAxNC4xMSAxNC45IDE1IDE2IDE1SDE4QzE5LjExIDE1IDIwIDE0LjExIDIwIDEzVjdDMjAgNS45IDE5LjExIDUgMTggNU0xOCAxM0gxNlY3SDE4VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTgsMTdIMTBWN0g2VjlIOE0xNCw3SDE2QzE3LjExLDcgMTgsNy45IDE4LDlWMTVDMTgsMTYuMTEgMTcuMTEsMTcgMTYsMTdIMTRBMiwyIDAgMCwxIDEyLDE1VjlBMiwyIDAgMCwxIDE0LDdNMTQsOVYxNUgxNlY5SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMENpcmNsZSA9IFwiTTE0IDlIMTZWMTVIMTRWOU0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTIgNi41IDIgMTIgMiAyMiA2LjUgMjIgMTJNMTAgN0g2VjlIOFYxN0gxMFY3TTE4IDlDMTggNy45IDE3LjExIDcgMTYgN0gxNEMxMi45IDcgMTIgNy45IDEyIDlWMTVDMTIgMTYuMTEgMTIuOSAxNyAxNCAxN0gxNkMxNy4xMSAxNyAxOCAxNi4xMSAxOCAxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMENpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMiAyIDE3LjUgMiAxMiA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyUzcuNTggMjAgMTIgMjAgMjAgMTYuNDIgMjAgMTIgMTYuNDIgNCAxMiA0TTEwIDdINlY5SDhWMTdIMTBWN00xNiA3SDE0QzEyLjkgNyAxMiA3LjkgMTIgOVYxNUMxMiAxNi4xMSAxMi45IDE3IDE0IDE3SDE2QzE3LjExIDE3IDE4IDE2LjExIDE4IDE1VjlDMTggNy45IDE3LjExIDcgMTYgN00xNiAxNUgxNFY5SDE2VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyID0gXCJNOSw3VjlIMTNWMTFIMTFBMiwyIDAgMCwwIDksMTNWMTdIMTFMMTUsMTdWMTVIMTFWMTNIMTNBMiwyIDAgMCwwIDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveCA9IFwiTTE1LDExQzE1LDEyLjExIDE0LjEsMTMgMTMsMTNIMTFWMTVIMTVWMTdIOVYxM0M5LDExLjg5IDkuOSwxMSAxMSwxMUgxM1Y5SDlWN0gxM0EyLDIgMCAwLDEgMTUsOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTE3LDEzSDEzVjExSDE1QTIsMiAwIDAsMCAxNyw5VjdDMTcsNS44OSAxNi4xLDUgMTUsNUgxMVY3SDE1VjlIMTNBMiwyIDAgMCwwIDExLDExVjE1SDE3VjEzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTcsMTNIMTNWMTFIMTVBMiwyIDAgMCwwIDE3LDlWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1SDExVjdIMTVWOUgxM0EyLDIgMCAwLDAgMTEsMTFWMTVIMTdNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveE91dGxpbmUgPSBcIk0xNSwxNUgxMVYxM0gxM0EyLDIgMCAwLDAgMTUsMTFWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDlWOUgxM1YxMUgxMUEyLDIgMCAwLDAgOSwxM1YxN0gxNU0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzJDaXJjbGUgPSBcIk05LDdWOUgxM1YxMUgxMUEyLDIgMCAwLDAgOSwxM1YxN0gxMUwxNSwxN1YxNUgxMVYxM0gxM0EyLDIgMCAwLDAgMTUsMTFWOUEyLDIgMCAwLDAgMTMsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUEyLDIgMCAwLDEgMTMsMTNIMTFWMTVIMTVWMTdIMTFMOSwxN1YxM0EyLDIgMCAwLDEgMTEsMTFIMTNWOUg5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzID0gXCJNMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0g5VjlIMTNWMTFIMTFWMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0JveCA9IFwiTTE1LDEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQzE0LjM0LDEyIDE1LDEyLjY3IDE1LDEzLjVWMTVDMTUsMTYuMTEgMTQuMTEsMTcgMTMsMTdIOVYxNUgxM1YxM0gxMVYxMUgxM1Y5SDlWN0gxM0MxNC4xMSw3IDE1LDcuODkgMTUsOU0xOSwzSDVDMy45MSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzNCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNywxM1YxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE3LDguNVY3QzE3LDUuODkgMTYuMSw1IDE1LDVIMTFWN0gxNVY5SDEzVjExSDE1VjEzSDExVjE1SDE1QTIsMiAwIDAsMCAxNywxM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE3LDEzVjExLjVBMS41LDEuNSAwIDAsMCAxNS41LDEwQTEuNSwxLjUgMCAwLDAgMTcsOC41VjdDMTcsNS44OSAxNi4xLDUgMTUsNUgxMVY3SDE1VjlIMTNWMTFIMTVWMTNIMTFWMTVIMTVBMiwyIDAgMCwwIDE3LDEzTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzQm94T3V0bGluZSA9IFwiTTE1LDE1VjEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDEyQTEuNSwxLjUgMCAwLDAgMTUsMTAuNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdIOVY5SDEzVjExSDExVjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1TTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0NpcmNsZSA9IFwiTTE1LDE1VjEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDEyQTEuNSwxLjUgMCAwLDAgMTUsMTAuNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdIOVY5SDEzVjExSDExVjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzQ2lyY2xlT3V0bGluZSA9IFwiTTE1LDE1QTIsMiAwIDAsMSAxMywxN0g5VjE1SDEzVjEzSDExVjExSDEzVjlIOVY3SDEzQTIsMiAwIDAsMSAxNSw5VjEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQTEuNSwxLjUgMCAwLDEgMTUsMTMuNVYxNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzQgPSBcIk05LDdWMTNIMTNWMTdIMTVWN0gxM1YxMUgxMVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzRCb3ggPSBcIk0xNSwxN0gxM1YxM0g5VjdIMTFWMTFIMTNWN0gxNU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNEJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTE1LDE1SDE3VjVIMTVWOUgxM1Y1SDExVjExSDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM0Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTE1LDE1SDE3VjVIMTVWOUgxM1Y1SDExVjExSDE1TTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMsMTdIMTVWN0gxM1YxMUgxMVY3SDlWMTNIMTNcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNENpcmNsZSA9IFwiTTksN1YxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFWMTFIMTNWN0gxNVYxN0gxM1YxM0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM1ID0gXCJNOSw3VjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjEzQTIsMiAwIDAsMCAxMywxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNUJveCA9IFwiTTE1LDlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QzE1LDE2LjExIDE0LjEsMTcgMTMsMTdIOVYxNUgxM1YxM0g5VjdIMTVNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMU0xNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxMVYxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hNdWx0aXBsZU91dGxpbmUgPSBcIk0xNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxMVYxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM00yMSwxN0g3VjNIMjFNMjEsMUg3QTIsMiAwIDAsMCA1LDNWMTdBMiwyIDAgMCwwIDcsMTlIMjFBMiwyIDAgMCwwIDIzLDE3VjNBMiwyIDAgMCwwIDIxLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hPdXRsaW5lID0gXCJNMTUsMTVWMTNDMTUsMTEuODkgMTQuMSwxMSAxMywxMUgxMVY5SDE1VjdIOVYxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNU0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVDaXJjbGUgPSBcIk05LDdWMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM1Q2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDEzQTIsMiAwIDAsMSAxNSwxM1YxNUEyLDIgMCAwLDEgMTMsMTdIOVYxNUgxM1YxM0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2ID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU0xMSwxM0gxM1YxNUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveCA9IFwiTTE1LDlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QzE1LDE2LjExIDE0LjEsMTcgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUM5LDcuODkgOS45LDcgMTEsN0gxNU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMSwxNUgxM1YxM0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveE11bHRpcGxlID0gXCJNMTMsMTFIMTVWMTNIMTNWMTFNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTEzLDE1SDE1QTIsMiAwIDAsMCAxNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxM0EyLDIgMCAwLDAgMTEsN1YxM0MxMSwxNC4xMSAxMS45LDE1IDEzLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTMsMTFIMTVWMTNIMTNNMTMsMTVIMTVBMiwyIDAgMCwwIDE3LDEzVjExQzE3LDkuODkgMTYuMSw5IDE1LDlIMTNWN0gxN1Y1SDEzQTIsMiAwIDAsMCAxMSw3VjEzQzExLDE0LjExIDExLjksMTUgMTMsMTVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveE91dGxpbmUgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNDMTUsMTEuODkgMTQuMSwxMSAxMywxMUgxMVY5SDE1VjdIMTFBMiwyIDAgMCwwIDksOVYxNUM5LDE2LjExIDkuOSwxNyAxMSwxN00xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzZDaXJjbGUgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxM0EyLDIgMCAwLDAgMTMsMTFIMTFWOUgxNVY3SDExTTExLDEzSDEzVjE1SDExVjEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2Q2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTVWOUgxMVYxMUgxM0EyLDIgMCAwLDEgMTUsMTNWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsMTNWMTVIMTNWMTNIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM3ID0gXCJNMTEsMTdMMTUsOVY3SDlWOUgxM0w5LDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMSwxN0wxNSw5VjdIOVY5SDEzTDksMTdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xMywxNUwxNyw3VjVIMTFWN0gxNUwxMSwxNUgxM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTEzLDE1TDE3LDdWNUgxMVY3SDE1TDExLDE1TTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3hPdXRsaW5lID0gXCJNMTEsMTdMMTUsOVY3SDlWOUgxM0w5LDE3TTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0NpcmNsZSA9IFwiTTExLDE3TDE1LDlWN0g5VjlIMTNMOSwxN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0NpcmNsZU91dGxpbmUgPSBcIk0xMSwxN0g5TDEzLDlIOVY3SDE1VjlMMTEsMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM4ID0gXCJNMTEsMTNIMTNWMTVIMTFNMTEsOUgxM1YxMUgxMU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QzksMTYuMTEgOS45LDE3IDExLDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzhCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QzksMTYuMTEgOS45LDE3IDExLDE3TTExLDEzSDEzVjE1SDExVjEzTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE11bHRpcGxlID0gXCJNMTMsMTFIMTVWMTNIMTNWMTFNMTMsN0gxNVY5SDEzVjdNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTEzLDE1SDE1QTIsMiAwIDAsMCAxNywxM1YxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE3LDguNVY3QzE3LDUuODkgMTYuMSw1IDE1LDVIMTNBMiwyIDAgMCwwIDExLDdWOC41QTEuNSwxLjUgMCAwLDAgMTIuNSwxMEExLjUsMS41IDAgMCwwIDExLDExLjVWMTNDMTEsMTQuMTEgMTEuOSwxNSAxMywxNU0yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTEzLDExSDE1VjEzSDEzTTEzLDdIMTVWOUgxM00xMywxNUgxNUEyLDIgMCAwLDAgMTcsMTNWMTEuNUExLjUsMS41IDAgMCwwIDE1LjUsMTBBMS41LDEuNSAwIDAsMCAxNyw4LjVWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1SDEzQTIsMiAwIDAsMCAxMSw3VjguNUExLjUsMS41IDAgMCwwIDEyLjUsMTBBMS41LDEuNSAwIDAsMCAxMSwxMS41VjEzQzExLDE0LjExIDExLjksMTUgMTMsMTVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE91dGxpbmUgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSw5SDEzVjExSDExTTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDExQTIsMiAwIDAsMCA5LDlWMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCA5LDEzLjVWMTVDOSwxNi4xMSA5LjksMTcgMTEsMTdNMTksMTlINVY1SDE5TTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM4Q2lyY2xlID0gXCJNMTEsMTNIMTNWMTVIMTFWMTNNMTEsOUgxM1YxMUgxMVY5TTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDExQTIsMiAwIDAsMCA5LDlWMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCA5LDEzLjVWMTVDOSwxNi4xMSA5LjksMTcgMTEsMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzhDaXJjbGVPdXRsaW5lID0gXCJNMTEsMTNWMTVIMTNWMTNIMTFNMTEsOVYxMUgxM1Y5SDExTTExLDE3QTIsMiAwIDAsMSA5LDE1VjEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgOSwxMC41VjlBMiwyIDAgMCwxIDExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTAuNUExLjUsMS41IDAgMCwxIDEzLjUsMTJBMS41LDEuNSAwIDAsMSAxNSwxMy41VjE1QTIsMiAwIDAsMSAxMywxN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzkgPSBcIk0xMywxN0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjExQTIsMiAwIDAsMCAxMSwxM0gxM1YxNUg5VjE3SDEzTTEzLDExSDExVjlIMTNWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMywxMUgxMVY5SDEzVjExTTEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUM5LDEyLjExIDkuOSwxMyAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlCb3hNdWx0aXBsZSA9IFwiTTE1LDlIMTNWN0gxNVY5TTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNSw1SDEzQTIsMiAwIDAsMCAxMSw3VjlDMTEsMTAuMTEgMTEuOSwxMSAxMywxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1TTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTUsOUgxM1Y3SDE1TTE1LDVIMTNBMiwyIDAgMCwwIDExLDdWOUMxMSwxMC4xMSAxMS45LDExIDEzLDExSDE1VjEzSDExVjE1SDE1QTIsMiAwIDAsMCAxNywxM1Y3QzE3LDUuODkgMTYuMSw1IDE1LDVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOUJveE91dGxpbmUgPSBcIk0xMywxMUgxMVY5SDEzTTEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUM5LDEyLjExIDkuOSwxMyAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdNMTksMTlINVY1SDE5TTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Q2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTMsMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM00xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Q2lyY2xlT3V0bGluZSA9IFwiTTEzLDE3SDlWMTVIMTNWMTNIMTFBMiwyIDAgMCwxIDksMTFWOUEyLDIgMCAwLDEgMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdNMTMsMTFWOUgxMVYxMUgxM00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlQbHVzID0gXCJNMTkgMTFIMTdWOUgxNVYxMUgxM1YxM0gxNVYxNUgxN1YxM0gxOVYxMU0xMCA3SDhDNi45IDcgNiA3LjkgNiA5VjExQzYgMTIuMTEgNi45IDEzIDggMTNIMTBWMTVINlYxN0gxMEMxMS4xMSAxNyAxMiAxNi4xMSAxMiAxNVY5QzEyIDcuODkgMTEuMSA3IDEwIDdNMTAgMTFIOFY5SDEwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0JveCA9IFwiTTIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1TTE5LDExSDE3VjlIMTVWMTFIMTNWMTNIMTVWMTVIMTdWMTNIMTlWMTFNMTAsN0g4QTIsMiAwIDAsMCA2LDlWMTFDNiwxMi4xMSA2LjksMTMgOCwxM0gxMFYxNUg2VjE3SDEwQTIsMiAwIDAsMCAxMiwxNVY5QzEyLDcuODkgMTEuMSw3IDEwLDdNOCw5SDEwVjExSDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOVBsdXNCb3hNdWx0aXBsZSA9IFwiTTExLDlWOEgxMlY5SDExTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNSw5VjExSDE3VjEzSDE5VjExSDIxVjlIMTlWN0gxN1Y5SDE1TTE0LDEyVjhDMTQsNi44OSAxMy4xLDYgMTIsNkgxMUEyLDIgMCAwLDAgOSw4VjlDOSwxMC4xMSA5LjksMTEgMTEsMTFIMTJWMTJIOVYxNEgxMkEyLDIgMCAwLDAgMTQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlQbHVzQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEsOUgxOVY3SDE3VjlIMTVWMTFIMTdWMTNIMTlWMTFIMjFWMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTExLDlWOEgxMlY5TTE0LDEyVjhDMTQsNi44OSAxMy4xLDYgMTIsNkgxMUEyLDIgMCAwLDAgOSw4VjlDOSwxMC4xMSA5LjksMTEgMTEsMTFIMTJWMTJIOVYxNEgxMkEyLDIgMCAwLDAgMTQsMTJNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0JveE91dGxpbmUgPSBcIk0xOSwxMUgxN1Y5SDE1VjExSDEzVjEzSDE1VjE1SDE3VjEzSDE5VjE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM005LDExVjEwSDEwVjExTTEyLDE0VjEwQzEyLDguODkgMTEuMSw4IDEwLDhIOUEyLDIgMCAwLDAgNywxMFYxMUM3LDEyLjExIDcuOSwxMyA5LDEzSDEwVjE0SDdWMTZIMTBBMiwyIDAgMCwwIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0NpcmNsZSA9IFwiTTE5LDExSDE3VjlIMTVWMTFIMTNWMTNIMTVWMTVIMTdWMTNIMTlWMTFNMTAsN0g4QTIsMiAwIDAsMCA2LDlWMTFDNiwxMi4xMSA2LjksMTMgOCwxM0gxMFYxNUg2VjE3SDEwQTIsMiAwIDAsMCAxMiwxNVY5QzEyLDcuODkgMTEuMSw3IDEwLDdNOCw5SDEwVjExSDhWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOVBsdXNDaXJjbGVPdXRsaW5lID0gXCJNMTksMTFWMTNIMTdWMTVIMTVWMTNIMTNWMTFIMTVWOUgxN1YxMUgxOU0xMCw3QTIsMiAwIDAsMSAxMiw5VjE1QzEyLDE2LjExIDExLjEsMTcgMTAsMTdINlYxNUgxMFYxM0g4QTIsMiAwIDAsMSA2LDExVjlDNiw3Ljg5IDYuOSw3IDgsN0gxME04LDlWMTFIMTBWOUg4TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljTmVnYXRpdmUxID0gXCJNMTMgN1Y5SDE1VjE3SDE3VjdIMTNNMTEgMTNINVYxMUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljUG9zaXRpdmUxID0gXCJNMTMgN1Y5SDE1VjE3SDE3VjdIMTNNMTEgMTNIOVYxNUg3VjEzSDVWMTFIN1Y5SDlWMTFIMTFWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnV0ID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsN0E1LDUgMCAwLDAgNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDEyQTUsNSAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51dHJpdGlvbiA9IFwiTTIyLDE4QTQsNCAwIDAsMSAxOCwyMkgxNEE0LDQgMCAwLDEgMTAsMThWMTZIMjJWMThNNCwzSDE0QTIsMiAwIDAsMSAxNiw1VjE0SDhWMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw2VjhINlY2SDRNMTQsOFY2SDhWOEgxNE00LDEwVjEySDZWMTBINE04LDEwVjEySDE0VjEwSDhNNCwxNFYxNkg2VjE0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnV4dCA9IFwiTTIxLjggMTguMzZMMTYuMDMgOC4wOEMxNS45MyA4IDE1LjYzIDcuNDMgMTUuMDMgNy40M0MxNC43OCA3LjQzIDE0LjQzIDcuNTMgMTQuMDcgOC4wOEwxMy4zMyA5LjI2TDExLjMxIDUuNjVDMTEuMjYgNS41NSAxMC45MSA1IDEwLjMxIDVDMTAuMDYgNSA5LjY2IDUuMSA5LjM2IDUuNjVMMi4xOCAxOC4zMUMyLjEzIDE4LjQxIDEuODMgMTkgMi4xMyAxOS41QzIuMjMgMTkuNzUgMi41MyAyMCAzLjE5IDIwSDIwLjg1QzIwLjk1IDIwIDIxLjYgMjAgMjEuOSAxOS41QzIyIDE5LjI2IDIyLjEgMTguODYgMjEuOCAxOC4zNk04LjEgMTguMzFMNy45NSAxOC44NkgzLjI0TDEwLjM2IDYuMzRMMTIuNjYgMTAuNDdMOC4xIDE4LjMxTTkuMjEgMTguODZMMTMuMzIgMTEuNjZMMTcuNSAxOC44Nkg5LjIxTTE4Ljc0IDE4Ljg2TDE4LjU0IDE4LjMxTDE0IDEwLjQ2TDE1LjAzIDguNzNMMjAuNzUgMTguODZIMTguNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2FyID0gXCJNMjAuMjMsMTUuMjFDMTguNzcsMTMuNzUgMTQuOTcsMTAuMiAxMi43NywxMS4yN0w0LjUsM0wzLDQuNUwxMS4yOCwxMi43OUMxMC4zLDE1IDEzLjg4LDE4LjYyIDE1LjM1LDIwLjA4QzE3LjExLDIxLjg0IDE4LjI2LDIwLjkyIDE5LjYxLDE5LjU3QzIxLjEsMTguMDggMjEuNjEsMTYuNjEgMjAuMjMsMTUuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NhcmluYSA9IFwiTTIwLDEyQzE2LjgsMTAuNCAxMy40LDkuNyAxMC44LDkuM0w5LjcsNS45QzkuMyw0LjggNy43LDQuOCA3LjMsNS45TDYuMyw5QzMuOSw5LjQgMiwxMS41IDIsMTRDMiwxNi44IDQuMiwxOSA3LDE5QzcsMTkgMTQsMTkgMjAsMTZDMjAsMTYgMjIsMTUgMjIsMTRDMjIsMTMgMjAsMTIgMjAsMTJNNSwxNEM0LjQsMTQgNCwxMy42IDQsMTNDNCwxMi40IDQuNCwxMiA1LDEyQzUuNiwxMiA2LDEyLjQgNiwxM0M2LDEzLjUgNS42LDE0IDUsMTRNNywxN0M2LjQsMTcgNiwxNi42IDYsMTZDNiwxNS40IDYuNCwxNSA3LDE1QzcuNiwxNSA4LDE1LjQgOCwxNkM4LDE2LjUgNy42LDE3IDcsMTdNOSwxNEM4LjQsMTQgOCwxMy42IDgsMTNDOCwxMi40IDguNCwxMiA5LDEyQzkuNiwxMiAxMCwxMi40IDEwLDEzQzEwLDEzLjUgOS42LDE0IDksMTRNMTEsMTdDMTAuNCwxNyAxMCwxNi42IDEwLDE2QzEwLDE1LjQgMTAuNCwxNSAxMSwxNUMxMS42LDE1IDEyLDE1LjQgMTIsMTZDMTIsMTYuNSAxMS42LDE3IDExLDE3TTE2LDE0QzE1LjQsMTQgMTUsMTMuNiAxNSwxM0MxNSwxMi40IDE1LjQsMTIgMTYsMTJDMTYuNiwxMiAxNywxMi40IDE3LDEzQzE3LDEzLjUgMTYuNiwxNCAxNiwxNE0xOSwxNUMxOC40LDE1IDE4LDE0LjYgMTgsMTRDMTgsMTMuNCAxOC40LDEzIDE5LDEzQzE5LjYsMTMgMjAsMTMuNCAyMCwxNEMyMCwxNC41IDE5LjYsMTUgMTksMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NpID0gXCJNMiAyVjIySDIyVjJNMTkuMTIgMTkuMDNINC44N1Y1SDE5LjEzVjE5LjAzTTE0LjgzIDEwLjcxSDE3LjY5VjE3LjU5SDE0LjgzTTE0LjgzIDYuNDFIMTcuNjlWOS4yN0gxNC44M002LjMgNi40MVYxNy41OUgxMy40VjE0LjcySDkuMTdWOS4yOEgxMy40VjYuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NyID0gXCJNMiA1VjE5SDE0VjE3SDEyQzEwLjg5IDE3IDEwIDE2LjExIDEwIDE1VjlDMTAgNy44OSAxMC44OSA3IDEyIDdIMTRWNU0xNCA3VjlIMTZWN00xNCA5SDEyVjE1SDE0TTE0IDE1VjE3SDE2VjE1TTUgN0g3QzguMTEgNyA5IDcuODkgOSA5VjE1QzkgMTYuMTEgOC4xMSAxNyA3IDE3SDVDMy44OSAxNyAzIDE2LjExIDMgMTVWOUMzIDcuODkgMy44OSA3IDUgN00xNyA3VjE3SDE5VjEzSDIwVjE0SDIxVjE3SDIzVjE0SDIyVjEySDIzVjhIMjJWN001IDlWMTVIN1Y5TTE5IDlIMjFWMTFIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdvbiA9IFwiTTE1LjczLDNIOC4yN0wzLDguMjdWMTUuNzNMOC4yNywyMUgxNS43M0wyMSwxNS43M1Y4LjI3XCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdvbk91dGxpbmUgPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNDMTcuNSwxOS4yNCAyMSwxNS43MyAyMSwxNS43M1Y4LjI3TDE1LjczLDNNOS4xLDVIMTQuOUwxOSw5LjFWMTQuOUwxNC45LDE5SDkuMUw1LDE0LjlWOS4xXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdyYW0gPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlPY3RhZ3JhbU91dGxpbmUgPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNk00LjgxLDlMNi4wNSwxMkw0LjgxLDE1TDcuNzksMTYuMjFMOSwxOS4xOUwxMiwxNy45NUwxNSwxOS4xOUwxNi4yMSwxNi4yMUwxOS4xOSwxNUwxNy45NSwxMkwxOS4xOSw5TDE2LjIxLDcuNzlMMTUsNC44MUwxMiw2LjA1TDksNC44MUw3Ljc5LDcuNzlMNC44MSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9kbm9rbGFzc25pa2kgPSBcIk0xNy44MywxMi43NEMxNy41NSwxMi4xNyAxNi43NiwxMS42OSAxNS43MSwxMi41QzE0LjI4LDEzLjY0IDEyLDEzLjY0IDEyLDEzLjY0QzEyLDEzLjY0IDkuNzIsMTMuNjQgOC4yOSwxMi41QzcuMjQsMTEuNjkgNi40NSwxMi4xNyA2LjE3LDEyLjc0QzUuNjcsMTMuNzQgNi4yMywxNC4yMyA3LjUsMTUuMDRDOC41OSwxNS43NCAxMC4wOCwxNiAxMS4wNCwxNi4xTDEwLjI0LDE2LjlDOS4xLDE4LjAzIDgsMTkuMTIgNy4yNSwxOS44OEM2LjgsMjAuMzQgNi44LDIxLjA3IDcuMjUsMjEuNUw3LjM5LDIxLjY2QzcuODQsMjIuMTEgOC41OCwyMi4xMSA5LjAzLDIxLjY2TDEyLDE4LjY4QzEzLjE1LDE5LjgxIDE0LjI0LDIwLjkgMTUsMjEuNjZDMTUuNDUsMjIuMTEgMTYuMTgsMjIuMTEgMTYuNjQsMjEuNjZMMTYuNzcsMjEuNUMxNy4yMywyMS4wNyAxNy4yMywyMC4zNCAxNi43NywxOS44OEwxMy43OSwxNi45TDEzLDE2LjA5QzEzLjk1LDE2IDE1LjQyLDE1LjczIDE2LjUsMTUuMDRDMTcuNzcsMTQuMjMgMTguMzMsMTMuNzQgMTcuODMsMTIuNzRNMTIsNC41N0MxMy4zOCw0LjU3IDE0LjUsNS42OSAxNC41LDcuMDZDMTQuNSw4LjQ0IDEzLjM4LDkuNTUgMTIsOS41NUMxMC42Miw5LjU1IDkuNSw4LjQ0IDkuNSw3LjA2QzkuNSw1LjY5IDEwLjYyLDQuNTcgMTIsNC41N00xMiwxMi4xMkMxNC44LDEyLjEyIDE3LjA2LDkuODYgMTcuMDYsNy4wNkMxNy4wNiw0LjI3IDE0LjgsMiAxMiwyQzkuMiwyIDYuOTQsNC4yNyA2Ljk0LDcuMDZDNi45NCw5Ljg2IDkuMiwxMi4xMiAxMiwxMi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPZmZlciA9IFwiTTIxIDEzQzIxLjYgMTMgMjIuMSAxMy4yIDIyLjQgMTMuNkMyMi44IDE0IDIzIDE0LjUgMjMgMTVMMTUgMThMOCAxNlY3SDkuOUwxNy4yIDkuN0MxNy43IDkuOSAxOCAxMC4zIDE4IDEwLjhDMTggMTEuMSAxNy45IDExLjQgMTcuNyAxMS42QzE3LjUgMTEuOCAxNy4yIDEyIDE2LjggMTJIMTRMMTIuMyAxMS4zTDEyIDEyLjJMMTQgMTNIMjFNMiA3SDZWMThIMlY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nID0gXCJNNSwzVjIxSDExVjE3LjVIMTNWMjFIMTlWM0g1TTcsNUg5VjdIN1Y1TTExLDVIMTNWN0gxMVY1TTE1LDVIMTdWN0gxNVY1TTcsOUg5VjExSDdWOU0xMSw5SDEzVjExSDExVjlNMTUsOUgxN1YxMUgxNVY5TTcsMTNIOVYxNUg3VjEzTTExLDEzSDEzVjE1SDExVjEzTTE1LDEzSDE3VjE1SDE1VjEzTTcsMTdIOVYxOUg3VjE3TTE1LDE3SDE3VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nTWFya2VyID0gXCJNMTUuMTkgMjFDMTQuMTIgMTkuNDMgMTMgMTcuMzYgMTMgMTUuNUMxMyAxMy42NyAxMy45NiAxMiAxNS40IDExSDE1VjlIMTdWMTAuMjNDMTcuNSAxMC4wOSAxOCAxMCAxOC41IDEwQzE4LjY3IDEwIDE4Ljg0IDEwIDE5IDEwLjAzVjNINVYyMUgxMVYxNy41SDEzVjIxSDE1LjE5TTE1IDVIMTdWN0gxNVY1TTkgMTlIN1YxN0g5VjE5TTkgMTVIN1YxM0g5VjE1TTkgMTFIN1Y5SDlWMTFNOSA3SDdWNUg5VjdNMTEgNUgxM1Y3SDExVjVNMTEgOUgxM1YxMUgxMVY5TTExIDE1VjEzSDEzVjE1SDExTTE4LjUgMTJDMTYuNiAxMiAxNSAxMy42MSAxNSAxNS41QzE1IDE4LjExIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xMSAyMiAxNS41QzIyIDEzLjYxIDIwLjQgMTIgMTguNSAxMk0xOC41IDE2LjgxQzE3LjggMTYuODEgMTcuMyAxNi4yMSAxNy4zIDE1LjYxQzE3LjMgMTQuOTEgMTcuOSAxNC40MSAxOC41IDE0LjQxUzE5LjcgMTUgMTkuNyAxNS42MUMxOS44IDE2LjIxIDE5LjIgMTYuODEgMTguNSAxNi44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlPZmZpY2VCdWlsZGluZ01hcmtlck91dGxpbmUgPSBcIk0xNSA5SDE3VjExSDE1VjlNMTcgNUgxNVY3SDE3VjVNMTEgMTVIMTNWMTNIMTFWMTVNMTMgNUgxMVY3SDEzVjVNMTEgMTFIMTNWOUgxMVYxMU05IDVIN1Y3SDlWNU05IDlIN1YxMUg5VjlNMTQuNTUgMjFIMTNWMTcuNUgxMVYyMUg1VjNIMTlWMTEuMDNDMTkuNzEgMTEuMDkgMjAuMzkgMTEuMzEgMjEgMTEuNjNWMUgzVjIzSDE1LjkxQzE1LjUgMjIuNDQgMTUgMjEuNzYgMTQuNTUgMjFNNyAxOUg5VjE3SDdWMTlNOSAxM0g3VjE1SDlWMTNNMjIgMTYuNUMyMiAxOS4xIDE4LjUgMjMgMTguNSAyM1MxNSAxOS4xIDE1IDE2LjVDMTUgMTQuNiAxNi42IDEzIDE4LjUgMTNTMjIgMTQuNiAyMiAxNi41TTE5LjcgMTYuNkMxOS43IDE2IDE5LjEgMTUuNCAxOC41IDE1LjRTMTcuMyAxNS45IDE3LjMgMTYuNkMxNy4zIDE3LjIgMTcuOCAxNy44IDE4LjUgMTcuOFMxOS44IDE3LjIgMTkuNyAxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nT3V0bGluZSA9IFwiTTE5IDNWMjFIMTNWMTcuNUgxMVYyMUg1VjNIMTlNMTUgN0gxN1Y1SDE1VjdNMTEgN0gxM1Y1SDExVjdNNyA3SDlWNUg3VjdNMTUgMTFIMTdWOUgxNVYxMU0xMSAxMUgxM1Y5SDExVjExTTcgMTFIOVY5SDdWMTFNMTUgMTVIMTdWMTNIMTVWMTVNMTEgMTVIMTNWMTNIMTFWMTVNNyAxNUg5VjEzSDdWMTVNMTUgMTlIMTdWMTdIMTVWMTlNNyAxOUg5VjE3SDdWMTlNMjEgMUgzVjIzSDIxVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsID0gXCJNMjIsMTIuNUMyMiwxMi41IDI0LDE0LjY3IDI0LDE2QTIsMiAwIDAsMSAyMiwxOEEyLDIgMCAwLDEgMjAsMTZDMjAsMTQuNjcgMjIsMTIuNSAyMiwxMi41TTYsNkgxMEExLDEgMCAwLDEgMTEsN0ExLDEgMCAwLDEgMTAsOEg5VjEwSDExQzExLjc0LDEwIDEyLjM5LDEwLjQgMTIuNzMsMTFMMTkuMjQsNy4yNEwyMi41LDkuMTNDMjMsOS40IDIzLjE0LDEwIDIyLjg3LDEwLjVDMjIuNTksMTAuOTcgMjIsMTEuMTQgMjEuNSwxMC44NkwxOS40LDkuNjVMMTUuNzUsMTUuOTdDMTUuNDEsMTYuNTggMTQuNzUsMTcgMTQsMTdINUEyLDIgMCAwLDEgMywxNVYxMkEyLDIgMCAwLDEgNSwxMEg3VjhINkExLDEgMCAwLDEgNSw3QTEsMSAwIDAsMSA2LDZNNSwxMlYxNUgxNEwxNi4wNiwxMS40M0wxMi42LDEzLjQzTDExLjY5LDEySDVNMC4zOCw5LjIxTDIuMDksNy41QzIuNSw3LjExIDMuMTEsNy4xMSAzLjUsNy41QzMuODksNy44OSAzLjg5LDguNSAzLjUsOC45MUwxLjc5LDEwLjYyQzEuNCwxMSAwLjc3LDExIDAuMzgsMTAuNjJDMCwxMC4yMyAwLDkuNiAwLjM4LDkuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsTGFtcCA9IFwiTTUsMjBIMTZWMjJINU0xMSw1SDEwQTIsMiAwIDAsMCA4LDdIMTNBMiwyIDAgMCwwIDExLDVNMTYsOEgyMkEyLDIgMCAwLDEgMjAsMTBIMTlBNCw0IDAgMCwwIDE1LDE0VjE1QTQsNCAwIDAsMSAxMSwxOUgxMEE0LDQgMCAwLDEgNiwxNUg0QTIsMiAwIDAsMSAyLDEzVjEwQTIsMiAwIDAsMSA0LDhNNiwxMEg0VjEzSDZNMTksNUEyLDIgMCAwLDEgMjEsN0gyMkEyLjksMi45IDAgMCwwIDE5LDRBMiwyIDAgMCwxIDE3LDJIMTZBMi45LDIuOSAwIDAsMCAxOSw1XCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsTGV2ZWwgPSBcIk04IDE4QzYuNjcgMTggNS43OSAxOC43OSA1LjI5IDE5LjI5UzQuNjcgMjAgNCAyMCAzLjIxIDE5Ljc5IDIuNzEgMTkuMjlDMi4zNSAxOC45MyAxLjc5IDE4LjQyIDEgMTguMTZWMjAuNDFDMS4wOSAyMC41IDEuMTggMjAuNTkgMS4yOSAyMC43MUMxLjc5IDIxLjIxIDIuNjcgMjIgNCAyMlM2LjIxIDIxLjIxIDYuNzEgMjAuNzEgNy4zMyAyMCA4IDIwIDguNzkgMjAuMjEgOS4yOSAyMC43MUM5LjczIDIxLjE0IDEwLjQ0IDIxLjggMTEuNSAyMS45NkMxMS42NiAyMiAxMS44MyAyMiAxMiAyMkMxMy4zMyAyMiAxNC4yMSAyMS4yMSAxNC43MSAyMC43MVMxNS4zMyAyMCAxNiAyMCAxNi43OSAyMC4yMSAxNy4yOSAyMC43MSAxOC42NyAyMiAyMCAyMiAyMi4yMSAyMS4yMSAyMi43MSAyMC43MUMyMi44MiAyMC41OSAyMi45MSAyMC41IDIzIDIwLjQxVjE4LjE2QzIyLjIxIDE4LjQyIDIxLjY1IDE4LjkzIDIxLjI5IDE5LjI5QzIwLjc5IDE5Ljc5IDIwLjY3IDIwIDIwIDIwUzE5LjIxIDE5Ljc5IDE4LjcxIDE5LjI5IDE3LjMzIDE4IDE2IDE4IDEzLjc5IDE4Ljc5IDEzLjI5IDE5LjI5IDEyLjY3IDIwIDEyIDIwQzExLjc4IDIwIDExLjYzIDE5Ljk3IDExLjUgMTkuOTJDMTEuMjIgMTkuODIgMTEuMDUgMTkuNjMgMTAuNzEgMTkuMjlDMTAuMjEgMTguNzkgOS4zMyAxOCA4IDE4TTIyIDEwLjVDMjIgMTAuNSAyNCAxMi42NyAyNCAxNEMyNCAxNS4xIDIzLjEgMTYgMjIgMTZTMjAgMTUuMSAyMCAxNEMyMCAxMi42NyAyMiAxMC41IDIyIDEwLjVNMjIuNSA3LjEzTDE5LjI0IDUuMjRMMTIuNzMgOUMxMi4zOSA4LjQgMTEuNzQgOCAxMSA4SDlWNkgxMEMxMC41NSA2IDExIDUuNTUgMTEgNVMxMC41NSA0IDEwIDRINkM1LjQ1IDQgNSA0LjQ1IDUgNVM1LjQ1IDYgNiA2SDdWOEg1QzMuOSA4IDMgOC45IDMgMTBWMTNDMyAxNC4xIDMuOSAxNSA1IDE1SDE0QzE0Ljc1IDE1IDE1LjQxIDE0LjU4IDE1Ljc1IDEzLjk3TDE5LjQgNy42NUwyMS41IDguODZDMjIgOS4xNCAyMi41OSA4Ljk3IDIyLjg3IDguNUMyMy4xNCA4IDIzIDcuNCAyMi41IDcuMTNNMTQgMTNINVYxMEgxMS42OUwxMi42IDExLjQzTDE2LjA2IDkuNDNMMTQgMTNNMy41IDYuOTJMMS43OSA4LjYyQTEgMSAwIDAgMSAuMzggNy4yMUwyLjA5IDUuNUExIDEgMCAwIDEgMy41IDUuNUMzLjg5IDUuODkgMy44OSA2LjUgMy41IDYuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsVGVtcGVyYXR1cmUgPSBcIk0xMCA1SDEzVjNIMTBWMkMxMCAxLjQgOS42IDEgOSAxUzggMS40IDggMlYxNS4zQzcuNCAxNS42IDcgMTYuMyA3IDE3QzcgMTguMSA3LjkgMTkgOSAxOVMxMSAxOC4xIDExIDE3QzExIDE2LjMgMTAuNiAxNS42IDEwIDE1LjNWMTNIMTNWMTFIMTBWOUgxM1Y3SDEwVjVNMjIgMTcuNUMyMiAxNy41IDI0IDE5LjcgMjQgMjFDMjQgMjIuMSAyMy4xIDIzIDIyIDIzUzIwIDIyLjEgMjAgMjFDMjAgMTkuNyAyMiAxNy41IDIyIDE3LjVNMjIuOSAxNS41QzIyLjYgMTYgMjIgMTYuMSAyMS41IDE1LjlMMTkuNCAxNC43TDE1LjggMjFDMTUuNSAyMS42IDE0LjggMjIgMTQgMjJINUMzLjkgMjIgMyAyMS4xIDMgMjBWMTdDMyAxNS45IDMuOSAxNSA1IDE1VjIwSDE0TDE2LjEgMTYuNEwxMyAxOC4yVjE1LjhMMTkuMiAxMi4yTDIyLjUgMTQuMUMyMyAxNC40IDIzLjEgMTUgMjIuOSAxNS41TTMuNSAxMy45TDEuOCAxNS42QzEuNCAxNiAuOCAxNiAuNCAxNS42UzAgMTQuNi40IDE0LjJMMi4xIDEyLjVDMi41IDEyLjEgMy4xIDEyLjEgMy41IDEyLjVTMy45IDEzLjUgMy41IDEzLjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT21lZ2EgPSBcIk0xOS4xNSwxOUgxMy4zOVYxNi44N0MxNS41LDE1LjI1IDE2LjU5LDEzLjI0IDE2LjU5LDEwLjg0QzE2LjU5LDkuMzQgMTYuMTYsOC4xNiAxNS4zMiw3LjI5QzE0LjQ3LDYuNDIgMTMuMzcsNiAxMi4wMyw2QzEwLjY4LDYgOS41Nyw2LjQyIDguNzEsNy4zQzcuODQsOC4xNyA3LjQxLDkuMzcgNy40MSwxMC44OEM3LjQxLDEzLjI2IDguNSwxNS4yNiAxMC42MSwxNi44N1YxOUg0Ljg1VjE2Ljg3SDguNDFDNi4wNCwxNS4zMiA0Ljg1LDEzLjIzIDQuODUsMTAuNkM0Ljg1LDguNSA1LjUsNi44NiA2LjgxLDUuNjZDOC4xMiw0LjQ1IDkuODQsMy44NSAxMS45NywzLjg1QzE0LjE1LDMuODUgMTUuODksNC40NSAxNy4xOSw1LjY0QzE4LjUsNi44MyAxOS4xNSw4LjUgMTkuMTUsMTAuNThDMTkuMTUsMTMuMjEgMTcuOTUsMTUuMzEgMTUuNTUsMTYuODdIMTkuMTVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT25lVXAgPSBcIk0xMCwxOVYxOUM5LjQsMTkgOSwxOC42IDksMThWMTdDOSwxNi41IDkuNCwxNiAxMCwxNlYxNkMxMC41LDE2IDExLDE2LjQgMTEsMTdWMThDMTEsMTguNiAxMC42LDE5IDEwLDE5TTE1LDE4VjE3QzE1LDE2LjUgMTQuNiwxNiAxNCwxNlYxNkMxMy41LDE2IDEzLDE2LjQgMTMsMTdWMThDMTMsMTguNSAxMy40LDE5IDE0LDE5VjE5QzE0LjYsMTkgMTUsMTguNiAxNSwxOE0yMiwxMkMyMiwxNC42IDIwLjQsMTYuOSAxOCwxOC40VjIwQTIsMiAwIDAsMSAxNiwyMkg4QTIsMiAwIDAsMSA2LDIwVjE4LjRDMy42LDE2LjkgMiwxNC42IDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LDEwQzcsOC45IDYuNCw3LjkgNS41LDcuNEM0LjUsOC43IDQsMTAuMyA0LDEyQzQsMTIuMyA0LDEyLjcgNC4xLDEzQzUuNywxMi45IDcsMTEuNiA3LDEwTTksOUM5LDEwLjcgMTAuMywxMiAxMiwxMkMxMy43LDEyIDE1LDEwLjcgMTUsOUMxNSw3LjMgMTMuNyw2IDEyLDZDMTAuMyw2IDksNy4zIDksOU0xNiwyMFYxNS41QzE0LjgsMTUuMiAxMy40LDE1IDEyLDE1QzEwLjYsMTUgOS4yLDE1LjIgOCwxNS41VjIwSDE2TTE5LjksMTNDMjAsMTIuNyAyMCwxMi4zIDIwLDEyQzIwLDEwLjMgMTkuNSw4LjcgMTguNSw3LjRDMTcuNiw3LjkgMTcsOC45IDE3LDEwQzE3LDExLjYgMTguMywxMi45IDE5LjksMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT25lcGFzc3dvcmQgPSBcIk0xMiwxQzUuOTIsMSAxLDUuOTIgMSwxMkMxLDE4LjA4IDUuOTIsMjMgMTIsMjNDMTguMDgsMjMgMjMsMTguMDggMjMsMTJDMjMsNS45MiAxOC4wOCwxIDEyLDFNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMywxMy41QzEzLDE0LjEzIDEzLjQsMTQuNyAxNCwxNC45MVYxOEgxMFYxMS45MUMxMC43OCwxMS42NCAxMS4xOSwxMC44IDEwLjkzLDEwQzEwLjc4LDkuNTggMTAuNDQsOS4yNCAxMCw5LjA5VjZIMTRWMTIuMDlDMTMuNCwxMi4zIDEzLDEyLjg3IDEzLDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3BhY2l0eSA9IFwiTTE3LjY2LDhMMTIsMi4zNUw2LjM0LDhDNC43OCw5LjU2IDQsMTEuNjQgNCwxMy42NEM0LDE1LjY0IDQuNzgsMTcuNzUgNi4zNCwxOS4zMUM3LjksMjAuODcgOS45NSwyMS42NiAxMiwyMS42NkMxNC4wNSwyMS42NiAxNi4xLDIwLjg3IDE3LjY2LDE5LjMxQzE5LjIyLDE3Ljc1IDIwLDE1LjY0IDIwLDEzLjY0QzIwLDExLjY0IDE5LjIyLDkuNTYgMTcuNjYsOE02LDE0QzYsMTIgNi42MiwxMC43MyA3Ljc2LDkuNkwxMiw1LjI3TDE2LjI0LDkuNjVDMTcuMzgsMTAuNzcgMTgsMTIgMTgsMTRINlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcGVuSW5BcHAgPSBcIk0xMiwxMEw4LDE0SDExVjIwSDEzVjE0SDE2TTE5LDRINUMzLjg5LDQgMyw0LjkgMyw2VjE4QTIsMiAwIDAsMCA1LDIwSDlWMThINVY4SDE5VjE4SDE1VjIwSDE5QTIsMiAwIDAsMCAyMSwxOFY2QTIsMiAwIDAsMCAxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9wZW5Jbk5ldyA9IFwiTTE0LDNWNUgxNy41OUw3Ljc2LDE0LjgzTDkuMTcsMTYuMjRMMTksNi40MVYxMEgyMVYzTTE5LDE5SDVWNUgxMlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3BlblNvdXJjZUluaXRpYXRpdmUgPSBcIk0xNS40MSwyMkMxNS4zNSwyMiAxNS4yOCwyMiAxNS4yMiwyMkMxNS4xLDIxLjk1IDE1LDIxLjg1IDE0Ljk2LDIxLjczTDEyLjc0LDE1LjkzQzEyLjY1LDE1LjY5IDEyLjc3LDE1LjQyIDEzLDE1LjMyQzEzLjcxLDE1LjA2IDE0LjI4LDE0LjUgMTQuNTgsMTMuODNDMTUuMjIsMTIuNCAxNC41OCwxMC43MyAxMy4xNSwxMC4wOUMxMS43Miw5LjQ1IDEwLjA1LDEwLjA5IDkuNDEsMTEuNUM5LjExLDEyLjIxIDkuMDksMTMgOS4zNiwxMy42OUM5LjY2LDE0LjQzIDEwLjI1LDE1IDExLDE1LjI4QzExLjI0LDE1LjM3IDExLjM3LDE1LjY0IDExLjI4LDE1Ljg5TDksMjEuNjlDOC45NiwyMS44MSA4Ljg3LDIxLjkxIDguNzUsMjEuOTZDOC42MywyMiA4LjUsMjIgOC4zOSwyMS45NkMzLjI0LDE5Ljk3IDAuNjcsMTQuMTggMi42Niw5LjAzQzQuNjUsMy44OCAxMC40NCwxLjMxIDE1LjU5LDMuM0MxOC4wNiw0LjI2IDIwLjA1LDYuMTUgMjEuMTMsOC41N0MyMi4yMiwxMSAyMi4yOSwxMy43NSAyMS4zMywxNi4yMkMyMC4zMiwxOC44OCAxOC4yMywyMSAxNS41OCwyMkMxNS41LDIyIDE1LjQ3LDIyIDE1LjQxLDIyTTEyLDMuNTlDNy4wMywzLjQ2IDIuOSw3LjM5IDIuNzcsMTIuMzZDMi42OCwxNi4wOCA0Ljg4LDE5LjQ3IDguMzIsMjAuOUwxMC4yMSwxNkM4LjM4LDE1IDcuNjksMTIuNzIgOC42OCwxMC44OUM5LjY3LDkuMDYgMTEuOTYsOC4zOCAxMy43OSw5LjM2QzE1LjYyLDEwLjM1IDE2LjMxLDEyLjY0IDE1LjMyLDE0LjQ3QzE0Ljk3LDE1LjEyIDE0LjQ0LDE1LjY1IDEzLjc5LDE2TDE1LjY4LDIwLjkzQzE3Ljg2LDE5Ljk1IDE5LjU3LDE4LjE2IDIwLjQ0LDE1LjkzQzIyLjI4LDExLjMxIDIwLjA0LDYuMDggMTUuNDIsNC4yM0MxNC4zMywzLjggMTMuMTcsMy41OCAxMiwzLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9wZW5pZCA9IFwiTTE0LDJMMTEsMy41VjE5Ljk0QzcsMTkuNSA0LDE3LjQ2IDQsMTVDNCwxMi43NSA2LjUsMTAuODUgMTAsMTAuMjJWOC4xOUM0Ljg2LDguODggMSwxMS42NiAxLDE1QzEsMTguNTYgNS4zNiwyMS41IDExLDIxLjk0QzExLjAzLDIxLjk0IDExLjA2LDIxLjk0IDExLjA5LDIxLjk0TDE0LDIwLjVWMk0xNSw4LjE5VjEwLjIyQzE2LjE1LDEwLjQzIDE3LjE4LDEwLjc3IDE4LjA2LDExLjIyTDE2LjUsMTJMMjMsMTMuNUwyMi41LDlMMjAuNSwxMEMxOSw5LjEyIDE3LjEyLDguNDcgMTUsOC4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlPcGVyYSA9IFwiTTkuMDQsMTcuMDdDOC4wNCwxNS45IDcuNCwxNC4xNiA3LjM1LDEyLjIxVjExLjc5QzcuNCw5Ljg0IDguMDQsOC4xIDkuMDQsNi45M0M5Ljg2LDUuOTUgMTAuOTMsNS4zNyAxMi4xLDUuMzdDMTQuNzIsNS4zNyAxNi44NCw4LjM0IDE2Ljg0LDEyQzE2Ljg0LDE1LjY2IDE0LjcyLDE4LjYzIDEyLjEsMTguNjNDMTAuOTMsMTguNjMgMTAuMzMsMTguNSA5LjA0LDE3LjA3TTEyLjAzLDNIMTJBOSw5IDAgMCwwIDMsMTJDMywxNi44MyA2LjgsMjAuNzcgMTEuNTcsMjFIMTJDMTQuMywyMSAxNi40LDIwLjEzIDE4LDE4LjcxQzE5Ljg0LDE3LjA2IDIxLDE0LjY3IDIxLDEyQzIxLDkuMzMgMTkuODQsNi45NCAxOCw1LjI5QzE2LjQxLDMuODcgMTQuMzIsMyAxMi4wMywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yYml0ID0gXCJNOC4xMSwxLjc1QzkuMywxLjI1IDEwLjYyLDEgMTIsMUMxOC4wOCwxIDIzLDUuOTIgMjMsMTJDMjMsMTguMDggMTguMDgsMjMgMTIsMjNDNS45MiwyMyAxLDE4LjA4IDEsMTJDMSwxMC42MiAxLjI1LDkuMyAxLjcyLDguMDhDMi4yNCw4LjYxIDIuODMsOC45NiAzLjQ1LDkuMThDMy4xNiwxMC4wNyAzLDExIDMsMTJBOSw5IDAgMCwwIDEyLDIxQTksOSAwIDAsMCAyMSwxMkE5LDkgMCAwLDAgMTIsM0MxMSwzIDEwLjA3LDMuMTYgOS4xOCwzLjQ1QzguOTYsMi44MyA4LjYxLDIuMjQgOC4xMSwxLjc1TTQuOTMsMi45M0M2LjAzLDIuOTMgNi45MywzLjgyIDYuOTMsNC45M0EyLDIgMCAwLDEgNC45Myw2LjkzQzMuODIsNi45MyAyLjkzLDYuMDMgMi45Myw0LjkzQzIuOTMsMy44MiAzLjgyLDIuOTMgNC45MywyLjkzTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlPcmJpdFZhcmlhbnQgPSBcIk0xOSA4TDE1IDEySDE4QzE4IDE1LjMxIDE1LjMxIDE4IDEyIDE4QzExIDE4IDEwLjAzIDE3Ljc1IDkuMiAxNy4zTDcuNzQgMTguNzZDOC45NyAxOS41NCAxMC40MyAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkgyM002IDEyQzYgOC42OSA4LjY5IDYgMTIgNkMxMyA2IDEzLjk3IDYuMjUgMTQuOCA2LjdMMTYuMjYgNS4yNEMxNS4wMyA0LjQ2IDEzLjU3IDQgMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJIMUw1IDE2TDkgMTJNMTQgMTJDMTQgMTMuMTEgMTMuMTEgMTQgMTIgMTRTMTAgMTMuMTEgMTAgMTIgMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQWxwaGFiZXRpY2FsQXNjZW5kaW5nID0gXCJNMTIgNUgyMlY3SDEyTTEyIDE5VjE3SDIyVjE5TTEyIDExSDIyVjEzSDEyTTkgMTNWMTVMNS42NyAxOUg5VjIxSDNWMTlMNi4zMyAxNUgzVjEzTTcgM0g1QzMuOSAzIDMgMy45IDMgNVYxMUg1VjlIN1YxMUg5VjVDOSAzLjkgOC4xMSAzIDcgM003IDdINVY1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JkZXJBbHBoYWJldGljYWxEZXNjZW5kaW5nID0gXCJNNyAxM0g1QzMuOSAxMyAzIDEzLjkgMyAxNVYyMUg1VjE5SDdWMjFIOVYxNUM5IDEzLjkgOC4xMSAxMyA3IDEzTTcgMTdINVYxNUg3TTkgM1Y1TDUuNjcgOUg5VjExSDNWOUw2LjMzIDVIM1YzTTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlckJvb2xBc2NlbmRpbmcgPSBcIk02IDNDMy43OSAzIDIgNC43OSAyIDdTMy43OSAxMSA2IDExIDEwIDkuMjEgMTAgNyA4LjIxIDMgNiAzTTYgOUM0LjkgOSA0IDguMSA0IDdTNC45IDUgNiA1IDggNS45IDggNyA3LjEgOSA2IDlNNiAxM0MzLjc5IDEzIDIgMTQuNzkgMiAxN1MzLjc5IDIxIDYgMjEgMTAgMTkuMjEgMTAgMTcgOC4yMSAxMyA2IDEzTTEyIDVIMjJWN0gxMlY1TTEyIDE5VjE3SDIyVjE5SDEyTTEyIDExSDIyVjEzSDEyVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQm9vbEFzY2VuZGluZ1ZhcmlhbnQgPSBcIk00IDEzQzIuODkgMTMgMiAxMy44OSAyIDE1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDhDOS4xMSAyMSAxMCAyMC4xMSAxMCAxOVYxNUMxMCAxMy44OSA5LjExIDEzIDggMTNNOC4yIDE0LjVMOS4yNiAxNS41NUw1LjI3IDE5LjVMMi43NCAxNi45NUwzLjgxIDE1LjlMNS4yOCAxNy4zOU00IDNDMi44OSAzIDIgMy44OSAyIDVWOUMyIDEwLjExIDIuODkgMTEgNCAxMUg4QzkuMTEgMTEgMTAgMTAuMTEgMTAgOVY1QzEwIDMuODkgOS4xMSAzIDggM000IDVIOFY5SDRNMTIgNUgyMlY3SDEyTTEyIDE5VjE3SDIyVjE5TTEyIDExSDIyVjEzSDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQm9vbERlc2NlbmRpbmcgPSBcIk02IDEzQzMuNzkgMTMgMiAxNC43OSAyIDE3UzMuNzkgMjEgNiAyMSAxMCAxOS4yMSAxMCAxNyA4LjIxIDEzIDYgMTNNNiAxOUM0LjkgMTkgNCAxOC4xIDQgMTdTNC45IDE1IDYgMTUgOCAxNS45IDggMTcgNy4xIDE5IDYgMTlNNiAzQzMuNzkgMyAyIDQuNzkgMiA3UzMuNzkgMTEgNiAxMSAxMCA5LjIxIDEwIDcgOC4yMSAzIDYgM00xMiA1SDIyVjdIMTJWNU0xMiAxOVYxN0gyMlYxOUgxMk0xMiAxMUgyMlYxM0gxMlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlckJvb2xEZXNjZW5kaW5nVmFyaWFudCA9IFwiTTQgM0MyLjg5IDMgMiAzLjg5IDIgNVY5QzIgMTAuMTEgMi44OSAxMSA0IDExSDhDOS4xMSAxMSAxMCAxMC4xMSAxMCA5VjVDMTAgMy44OSA5LjExIDMgOCAzTTguMiA0LjVMOS4yNiA1LjU1TDUuMjcgOS41TDIuNzQgNi45NUwzLjgxIDUuOUw1LjI4IDcuMzlNNCAxM0MyLjg5IDEzIDIgMTMuODkgMiAxNVYxOUMyIDIwLjExIDIuODkgMjEgNCAyMUg4QzkuMTEgMjEgMTAgMjAuMTEgMTAgMTlWMTVDMTAgMTMuODkgOS4xMSAxMyA4IDEzTTQgMTVIOFYxOUg0TTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlck51bWVyaWNBc2NlbmRpbmcgPSBcIk03IDIxSDNWMTlIN1YxOEg1QzMuOSAxOCAzIDE3LjExIDMgMTZWMTVDMyAxMy45IDMuOSAxMyA1IDEzSDdDOC4xMSAxMyA5IDEzLjkgOSAxNVYxOUM5IDIwLjExIDguMTEgMjEgNyAyMU03IDE1SDVWMTZIN001IDNIN0M4LjExIDMgOSAzLjkgOSA1VjlDOSAxMC4xMSA4LjExIDExIDcgMTFINUMzLjkgMTEgMyAxMC4xMSAzIDlWNUMzIDMuOSAzLjkgMyA1IDNNNSA5SDdWNUg1TTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlck51bWVyaWNEZXNjZW5kaW5nID0gXCJNNyAxMUgzVjlIN1Y4SDVDMy45IDggMyA3LjExIDMgNlY1QzMgMy45IDMuOSAzIDUgM0g3QzguMTEgMyA5IDMuOSA5IDVWOUM5IDEwLjExIDguMTEgMTEgNyAxMU03IDVINVY2SDdNNSAxM0g3QzguMTEgMTMgOSAxMy45IDkgMTVWMTlDOSAyMC4xMSA4LjExIDIxIDcgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjE1QzMgMTMuOSAzLjkgMTMgNSAxM001IDE5SDdWMTVINU0xMiA1SDIyVjdIMTJNMTIgMTlWMTdIMjJWMTlNMTIgMTFIMjJWMTNIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JpZ2luID0gXCJNMTIsMi4xM0MxMiwyLjIzIDExLjk1LDIuMzMgMTEuODksMi40MUMxMS41LDMgMTEuMTYsMy42NCAxMS4wNCw0LjMzTDExLDQuNTZMMTIsNC41QTcuNSw3LjUgMCAwLDEgMTkuNSwxMkMxOS41LDEzLjYyIDE5LDE1LjExIDE4LjEyLDE2LjM0QzE2LjczLDE4LjY4IDE0LjcyLDIwLjY1IDEyLjM0LDIxLjk3QzEyLjI1LDIyIDEyLjEyLDIyIDEyLjA2LDIxLjkzQzEyLDIxLjgzIDEyLDIxLjcgMTIuMDksMjEuNjFDMTIuNDcsMjEuMDkgMTIuNzMsMjAuNSAxMi44NywxOS44NUwxMi45MywxOS40NEwxMiwxOS41QTcuNSw3LjUgMCAwLDEgNC41LDEyQzQuNSwxMC4zOSA1LDguODkgNS44OCw3LjY3QzcuMjYsNS4zMiA5LjI4LDMuMzQgMTEuNjcsMkMxMS43OCwxLjk1IDExLjk0LDIgMTIsMi4xM00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JuYW1lbnQgPSBcIk0xMiwxQTMsMyAwIDAsMSAxNSw0VjVBMSwxIDAgMCwxIDE2LDZWNy4wN0MxOC4zOSw4LjQ1IDIwLDExLjA0IDIwLDE0QTgsOCAwIDAsMSAxMiwyMkE4LDggMCAwLDEgNCwxNEM0LDExLjA0IDUuNjEsOC40NSA4LDcuMDdWNkExLDEgMCAwLDEgOSw1VjRBMywzIDAgMCwxIDEyLDFNMTIsM0ExLDEgMCAwLDAgMTEsNFY1SDEzVjRBMSwxIDAgMCwwIDEyLDNNMTIsOEMxMC4yMiw4IDguNjMsOC43NyA3LjUzLDEwSDE2LjQ3QzE1LjM3LDguNzcgMTMuNzgsOCAxMiw4TTYuMzQsMTZINy41OUw2LDE0LjQzQzYuMDUsMTUgNi4xNywxNS41IDYuMzQsMTZNMTIuNTksMTZMOC41OSwxMkg2LjQxTDEwLjQxLDE2SDEyLjU5TTE3LjY2LDEySDE2LjQxTDE4LDEzLjU3QzE3Ljk1LDEzIDE3LjgzLDEyLjUgMTcuNjYsMTJNMTEuNDEsMTJMMTUuNDEsMTZIMTcuNTlMMTMuNTksMTJIMTEuNDFNMTIsMjBDMTMuNzgsMjAgMTUuMzcsMTkuMjMgMTYuNDcsMThINy41M0M4LjYzLDE5LjIzIDEwLjIyLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9ybmFtZW50VmFyaWFudCA9IFwiTTEyLDFBMywzIDAgMCwxIDE1LDRWNUExLDEgMCAwLDEgMTYsNlY3LjA3QzE4LjM5LDguNDUgMjAsMTEuMDQgMjAsMTRBOCw4IDAgMCwxIDEyLDIyQTgsOCAwIDAsMSA0LDE0QzQsMTEuMDQgNS42MSw4LjQ1IDgsNy4wN1Y2QTEsMSAwIDAsMSA5LDVWNEEzLDMgMCAwLDEgMTIsMU0xMiwzQTEsMSAwIDAsMCAxMSw0VjVIMTNWNEExLDEgMCAwLDAgMTIsM00xMiw4QzEwLjIyLDggOC42Myw4Ljc3IDcuNTMsMTBIMTYuNDdDMTUuMzcsOC43NyAxMy43OCw4IDEyLDhNMTIsMjBDMTMuNzgsMjAgMTUuMzcsMTkuMjMgMTYuNDcsMThINy41M0M4LjYzLDE5LjIzIDEwLjIyLDIwIDEyLDIwTTEyLDEyQTIsMiAwIDAsMCAxMCwxNEEyLDIgMCAwLDAgMTIsMTZBMiwyIDAgMCwwIDE0LDE0QTIsMiAwIDAsMCAxMiwxMk0xOCwxNEMxOCwxMy4zMSAxNy44OCwxMi42NSAxNy42NywxMkMxNi43MiwxMi4xOSAxNiwxMyAxNiwxNEMxNiwxNSAxNi43MiwxNS44MSAxNy42NywxNS45N0MxNy44OCwxNS4zNSAxOCwxNC42OSAxOCwxNE02LDE0QzYsMTQuNjkgNi4xMiwxNS4zNSA2LjMzLDE1Ljk3QzcuMjgsMTUuODEgOCwxNSA4LDE0QzgsMTMgNy4yOCwxMi4xOSA2LjMzLDEyQzYuMTIsMTIuNjUgNiwxMy4zMSA2LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU91dGRvb3JMYW1wID0gXCJNMTUgMjJIMTNDMTEuOSAyMiAxMSAyMS4xIDExIDIwVjE1SDE3VjIwQzE3IDIxLjEgMTYuMSAyMiAxNSAyMk03IDE0SDIxTDE1IDkuNzFWNkMxNSA0LjM5IDEzLjk0IDIgMTEgMlM3IDQuMzkgNyA2QzcgNi40NSA2LjgxIDcgNiA3SDVWM0gzVjEySDVWOUg2QzguMiA5IDkgNy4yMSA5IDZDOSA1LjY3IDkuMSA0IDExIDRDMTIuODMgNCAxMyA1LjU0IDEzIDZWOS43MUw3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU92ZXJzY2FuID0gXCJNMTIgNS41TDEwIDhIMTRMMTIgNS41TTE4IDEwVjE0TDIwLjUgMTJMMTggMTBNNiAxMEwzLjUgMTJMNiAxNFYxME0xNCAxNkgxMEwxMiAxOC41TDE0IDE2TTIxIDNIM0MxLjkgMyAxIDMuOSAxIDVWMTlDMSAyMC4xIDEuOSAyMSAzIDIxSDIxQzIyLjEgMjEgMjMgMjAuMSAyMyAxOVY1QzIzIDMuOSAyMi4xIDMgMjEgM00yMSAxOUgzVjVIMjFWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3dsID0gXCJNMTIsMTZDMTIuNTYsMTYuODQgMTMuMzEsMTcuNTMgMTQuMiwxOEwxMiwyMC4yTDkuOCwxOEMxMC42OSwxNy41MyAxMS40NSwxNi44NCAxMiwxNk0xNywxMS4yQTIsMiAwIDAsMCAxNSwxMy4yQTIsMiAwIDAsMCAxNywxNS4yQTIsMiAwIDAsMCAxOSwxMy4yQzE5LDEyLjA5IDE4LjEsMTEuMiAxNywxMS4yTTcsMTEuMkEyLDIgMCAwLDAgNSwxMy4yQTIsMiAwIDAsMCA3LDE1LjJBMiwyIDAgMCwwIDksMTMuMkM5LDEyLjA5IDguMSwxMS4yIDcsMTEuMk0xNyw4LjdBNCw0IDAgMCwxIDIxLDEyLjdBNCw0IDAgMCwxIDE3LDE2LjdBNCw0IDAgMCwxIDEzLDEyLjdBNCw0IDAgMCwxIDE3LDguN003LDguN0E0LDQgMCAwLDEgMTEsMTIuN0E0LDQgMCAwLDEgNywxNi43QTQsNCAwIDAsMSAzLDEyLjdBNCw0IDAgMCwxIDcsOC43TTIuMjQsMUM0LDQuNyAyLjczLDcuNDYgMS41NSwxMC4yQzEuMTksMTEgMSwxMS44MyAxLDEyLjdBNiw2IDAgMCwwIDcsMTguN0M3LjIxLDE4LjY5IDcuNDIsMTguNjggNy42MywxOC42NUwxMC41OSwyMS42MUwxMiwyM0wxMy40MSwyMS42MUwxNi4zNywxOC42NUMxNi41OCwxOC42OCAxNi43OSwxOC42OSAxNywxOC43QTYsNiAwIDAsMCAyMywxMi43QzIzLDExLjgzIDIyLjgxLDExIDIyLjQ1LDEwLjJDMjEuMjcsNy40NiAyMCw0LjcgMjEuNzYsMUMxOS4xMiwzLjA2IDE1LjM2LDQuNjkgMTIsNC43QzguNjQsNC42OSA0Ljg4LDMuMDYgMi4yNCwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY01hbiA9IFwiTTEyLDEyTDE5LjA3LDE5LjA3QzE1LjE3LDIzIDguODMsMjMgNC45MywxOS4wN0MxLDE1LjE3IDEsOC44NCA0LjkzLDQuOTNDOC44MywxIDE1LjE2LDEgMTkuMDcsNC45M0wxMiwxMk0xOSwxMEEyLDIgMCAwLDAgMTcsMTJBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFja2FnZSA9IFwiTTUuMTIsNUgxOC44N0wxNy45Myw0SDUuOTNMNS4xMiw1TTIwLjU0LDUuMjNDMjAuODMsNS41NyAyMSw2IDIxLDYuNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY2LjVDMyw2IDMuMTcsNS41NyAzLjQ2LDUuMjNMNC44NCwzLjU1QzUuMTIsMy4yMSA1LjUzLDMgNiwzSDE4QzE4LjQ3LDMgMTguODgsMy4yMSAxOS4xNSwzLjU1TDIwLjU0LDUuMjNNNiwxOEgxMlYxNUg2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VEb3duID0gXCJNNS4xMiw1TDUuOTMsNEgxNy45M0wxOC44Nyw1TTEyLDE3LjVMNi41LDEySDEwVjEwSDE0VjEySDE3LjVMMTIsMTcuNU0yMC41NCw1LjIzTDE5LjE1LDMuNTVDMTguODgsMy4yMSAxOC40NywzIDE4LDNINkM1LjUzLDMgNS4xMiwzLjIxIDQuODQsMy41NUwzLjQ2LDUuMjNDMy4xNyw1LjU3IDMsNiAzLDYuNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNi41QzIxLDYgMjAuODMsNS41NyAyMC41NCw1LjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VVcCA9IFwiTTIwLjU0LDUuMjNDMjAuODMsNS41NyAyMSw2IDIxLDYuNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY2LjVDMyw2IDMuMTcsNS41NyAzLjQ2LDUuMjNMNC44NCwzLjU1QzUuMTIsMy4yMSA1LjUzLDMgNiwzSDE4QzE4LjQ3LDMgMTguODgsMy4yMSAxOS4xNSwzLjU1TDIwLjU0LDUuMjNNNS4xMiw1SDE4Ljg3TDE3LjkzLDRINS45M0w1LjEyLDVNMTIsOS41TDYuNSwxNUgxMFYxN0gxNFYxNUgxNy41TDEyLDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWNrYWdlVmFyaWFudCA9IFwiTTIsMTAuOTZDMS41LDEwLjY4IDEuMzUsMTAuMDcgMS42Myw5LjU5TDMuMTMsN0MzLjI0LDYuOCAzLjQxLDYuNjYgMy42LDYuNThMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjY2LDYuNzIgMjAuODIsNi44OCAyMC45MSw3LjA4TDIyLjM2LDkuNkMyMi42NCwxMC4wOCAyMi40NywxMC42OSAyMiwxMC45NkwyMSwxMS41NFYxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVYxMC45NkMyLjcsMTEuMTMgMi4zMiwxMS4xNCAyLDEwLjk2TTEyLDQuMTVWNC4xNUwxMiwxMC44NVYxMC44NUwxNy45Niw3LjVMMTIsNC4xNU01LDE1LjkxTDExLDE5LjI5VjEyLjU4TDUsOS4yMVYxNS45MU0xOSwxNS45MVYxMi42OUwxNCwxNS41OUMxMy42NywxNS43NyAxMy4zLDE1Ljc2IDEzLDE1LjZWMTkuMjlMMTksMTUuOTFNMTMuODUsMTMuMzZMMjAuMTMsOS43M0wxOS41NSw4LjcyTDEzLjI3LDEyLjM1TDEzLjg1LDEzLjM2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VWYXJpYW50Q2xvc2VkID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUwxMC4xMSw1LjIyTDE2LDguNjFMMTcuOTYsNy41TDEyLDQuMTVNNi4wNCw3LjVMMTIsMTAuODVMMTMuOTYsOS43NUw4LjA4LDYuMzVMNi4wNCw3LjVNNSwxNS45MUwxMSwxOS4yOVYxMi41OEw1LDkuMjFWMTUuOTFNMTksMTUuOTFWOS4yMUwxMywxMi41OFYxOS4yOUwxOSwxNS45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlRmlyc3QgPSBcIk0xOC40MSwxNi41OUwxMy44MiwxMkwxOC40MSw3LjQxTDE3LDZMMTEsMTJMMTcsMThMMTguNDEsMTYuNTlNNiw2SDhWMThINlY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXN0ID0gXCJNNS41OSw3LjQxTDEwLjE4LDEyTDUuNTksMTYuNTlMNywxOEwxMywxMkw3LDZMNS41OSw3LjQxTTE2LDZIMThWMThIMTZWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0Qm9keSA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw4VjE2SDE4VjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0Rm9vdGVyID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk02LDE2VjIwSDE4VjE2SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZUxheW91dEhlYWRlciA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw0VjhIMThWNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXlvdXRIZWFkZXJGb290ZXIgPSBcIk0xOCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY0QzIwIDIuOSAxOS4xMSAyIDE4IDJNMTggMjBINlYxNkgxOFYyME0xOCA4SDZWNEgxOFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXlvdXRTaWRlYmFyTGVmdCA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw4VjE2SDEwVjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0U2lkZWJhclJpZ2h0ID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk0xNCw4VjE2SDE4VjhIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZU5leHQgPSBcIk0yMCwzSDVBMiwyIDAgMCwwIDMsNVYxMUg3VjlMMTEsMTJMNywxNVYxM0gzVjE5QTIsMiAwIDAsMCA1LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY1QTIsMiAwIDAsMCAyMCwzTTE3LDE3SDEzVjE1SDE3VjE3TTIwLDEzSDEzVjExSDIwVjEzTTIwLDlIMTNWN0gyMFY5TTMsMTNIMFYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VOZXh0T3V0bGluZSA9IFwiTTIyLDNINUEyLDIgMCAwLDAgMyw1VjlINVY1SDIyVjE5SDVWMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM003LDE1VjEzSDBWMTFIN1Y5TDExLDEyTDcsMTVNMjAsMTNIMTNWMTFIMjBWMTNNMjAsOUgxM1Y3SDIwVjlNMTcsMTdIMTNWMTVIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZVByZXZpb3VzID0gXCJNNCwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTNIMTdWMTVMMTMsMTJMMTcsOVYxMUgyMVY1QTIsMiAwIDAsMCAxOSwzSDRBMiwyIDAgMCwwIDIsNVYxOUEyLDIgMCAwLDAgNCwyMU00LDE1SDhWMTdINFYxNU00LDExSDExVjEzSDRWMTFNNCw3SDExVjlINFY3TTIxLDExSDI0VjEzSDIxVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VQcmV2aW91c091dGxpbmUgPSBcIk0yLDNIMTlBMiwyIDAgMCwxIDIxLDVWOUgxOVY1SDJWMTlIMTlWMTVIMjFWMTlBMiwyIDAgMCwxIDE5LDIxSDJBMiwyIDAgMCwxIDAsMTlWNUEyLDIgMCAwLDEgMiwzTTE3LDE1VjEzSDI0VjExSDE3VjlMMTMsMTJMMTcsMTVNNCwxM0gxMVYxMUg0VjEzTTQsOUgxMVY3SDRWOU00LDE3SDhWMTVINFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsID0gXCJNMTEuNSA3LjYzQzExLjk3IDcuMzUgMTIuNTggNy41IDEyLjg2IDhDMTMuMTQgOC40NyAxMi45NyA5LjA5IDEyLjUgOS4zNkw0LjI3IDE0LjExQzMuNzkgMTQuMzkgMy4xOCAxNC4yMyAyLjkgMTMuNzVDMi42MiAxMy4yNyAyLjc5IDEyLjY2IDMuMjcgMTIuMzhMMTEuNSA3LjYzTTcgMjFMNS43OSAxNC45N0wxMy4yMSAxMC42OUMxNCAxMC4yNiAxNC41IDkuNDQgMTQuNSA4LjVDMTQuNSA3LjEyIDEzLjM4IDYgMTIgNkMxMS41MyA2IDExLjA5IDYuMTMgMTAuNzEgNi4zNkw0Ljc2IDkuNzlMNCA2SDNWNEgyMVY2SDIwTDE3IDIxSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFpbE1pbnVzID0gXCJNMTIuNSA5LjM2TDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEwxMS41IDcuNjNDMTEuOTcgNy4zNSAxMi41OCA3LjUgMTIuODYgOEMxMy4xNCA4LjQ3IDEyLjk3IDkuMDkgMTIuNSA5LjM2TTEzIDE5QzEzIDE1LjgyIDE1LjQ3IDEzLjIzIDE4LjYgMTNMMjAgNkgyMVY0SDNWNkg0TDQuNzYgOS43OUwxMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS40NCAxNCAxMC4yNiAxMy4yMSAxMC42OUw1Ljc5IDE0Ljk3TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsTWludXNPdXRsaW5lID0gXCJNNCA2SDNWNEgyMVY2SDIwTDE4LjYgMTNDMTcuODMgMTMuMDcgMTcuMTEgMTMuMjYgMTYuNDUgMTMuNThMMTcuOTYgNkg2LjA0TDYuNSA4LjIyTDQuNjUgOS4yN0w0IDZNMTIuODYgOEMxMi41OCA3LjUgMTEuOTcgNy4zNSAxMS41IDcuNjNMMy4yNyAxMi4zOEMyLjc5IDEyLjY2IDIuNjIgMTMuMjcgMi45IDEzLjc1QzMuMTggMTQuMjMgMy43OSAxNC4zOSA0LjI3IDE0LjExTDEyLjUgOS4zNkMxMi45NyA5LjA5IDEzLjE0IDguNDcgMTIuODYgOE0xMyAxOUg4LjY0TDcuNzMgMTQuNDNMNS45IDE1LjVMNyAyMUgxMy4zNUMxMy4xMyAyMC4zNyAxMyAxOS43IDEzIDE5TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPZmYgPSBcIk0yMC44NCAyMi43M0wxNy4zNSAxOS4yNEwxNyAyMUg3TDUuNzkgMTQuOTdMMTAuNDEgMTIuM0w5LjMxIDExLjJMNC4yNyAxNC4xMUMzLjc5IDE0LjM5IDMuMTggMTQuMjMgMi45IDEzLjc1QzIuNjIgMTMuMjcgMi43OSAxMi42NiAzLjI3IDEyLjM4TDcuODUgOS43NEw2Ljc1IDguNjRMNC43NiA5Ljc5TDQgNkgzVjQuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS4yNyAxNC4xNiA5Ljk0IDEzLjYgMTAuNEwxOC4yIDE1TDIwIDZIMjFWNEg3LjJMMTAgNi43OEwxMC43MSA2LjM2TTExLjUgNy42M0wxMS4wOCA3Ljg4TDEyLjUzIDkuMzNDMTIuOTcgOS4wNSAxMy4xMyA4LjQ2IDEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPZmZPdXRsaW5lID0gXCJNMjAuODQgMjIuNzNMMTcuMzUgMTkuMjRMMTcgMjFIN0w1LjkgMTUuNUw3LjczIDE0LjQzTDguNjQgMTlIMTUuMzZMMTUuNjUgMTcuNTRMOS4zMSAxMS4yTDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEw3Ljg1IDkuNzRMNi4zOCA4LjI3TDQuNjUgOS4yN0w0IDZIM1Y0Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTcuOTYgNkwxNi41IDEzLjNMMTguMiAxNUwyMCA2SDIxVjRINy4yTDkuMiA2SDE3Ljk2TTExLjUgNy42M0wxMS4wOCA3Ljg4TDEyLjUzIDkuMzNDMTIuOTcgOS4wNSAxMy4xMyA4LjQ2IDEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPdXRsaW5lID0gXCJNMTEuNSA3LjYzQzExLjk3IDcuMzUgMTIuNTggNy41IDEyLjg2IDhDMTMuMTQgOC40NyAxMi45NyA5LjA5IDEyLjUgOS4zNkw0LjI3IDE0LjExQzMuNzkgMTQuMzkgMy4xOCAxNC4yMyAyLjkgMTMuNzVTMi43OSAxMi42NiAzLjI3IDEyLjM4TDExLjUgNy42M00zIDRWNkg0TDQuNjUgOS4yN0w2LjUgOC4yMkw2LjA0IDZIMTcuOTZMMTUuMzYgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTdMMjAgNkgyMVY0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFpbFBsdXMgPSBcIk0xMi41IDkuMzZMNC4yNyAxNC4xMUMzLjc5IDE0LjM5IDMuMTggMTQuMjMgMi45IDEzLjc1QzIuNjIgMTMuMjcgMi43OSAxMi42NiAzLjI3IDEyLjM4TDExLjUgNy42M0MxMS45NyA3LjM1IDEyLjU4IDcuNSAxMi44NiA4QzEzLjE0IDguNDcgMTIuOTcgOS4wOSAxMi41IDkuMzZNMTMgMTlDMTMgMTUuODIgMTUuNDcgMTMuMjMgMTguNiAxM0wyMCA2SDIxVjRIM1Y2SDRMNC43NiA5Ljc5TDEwLjcxIDYuMzZDMTEuMDkgNi4xMyAxMS41MyA2IDEyIDZDMTMuMzggNiAxNC41IDcuMTIgMTQuNSA4LjVDMTQuNSA5LjQ0IDE0IDEwLjI2IDEzLjIxIDEwLjY5TDUuNzkgMTQuOTdMNyAyMUgxMy4zNUMxMy4xMyAyMC4zNyAxMyAxOS43IDEzIDE5TTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxQbHVzT3V0bGluZSA9IFwiTTQgNkgzVjRIMjFWNkgyMEwxOC42IDEzQzE3LjgzIDEzLjA3IDE3LjExIDEzLjI2IDE2LjQ1IDEzLjU4TDE3Ljk2IDZINi4wNEw2LjUgOC4yMkw0LjY1IDkuMjdMNCA2TTEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzTDMuMjcgMTIuMzhDMi43OSAxMi42NiAyLjYyIDEzLjI3IDIuOSAxMy43NUMzLjE4IDE0LjIzIDMuNzkgMTQuMzkgNC4yNyAxNC4xMUwxMi41IDkuMzZDMTIuOTcgOS4wOSAxMy4xNCA4LjQ3IDEyLjg2IDhNMTMgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsUmVtb3ZlID0gXCJNMTIuNSA5LjM2TDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEwxMS41IDcuNjNDMTEuOTcgNy4zNSAxMi41OCA3LjUgMTIuODYgOEMxMy4xNCA4LjQ3IDEyLjk3IDkuMDkgMTIuNSA5LjM2TTEzIDE5QzEzIDE1LjgyIDE1LjQ3IDEzLjIzIDE4LjYgMTNMMjAgNkgyMVY0SDNWNkg0TDQuNzYgOS43OUwxMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS40NCAxNCAxMC4yNiAxMy4yMSAxMC42OUw1Ljc5IDE0Ljk3TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsUmVtb3ZlT3V0bGluZSA9IFwiTTQgNkgzVjRIMjFWNkgyMEwxOC42IDEzQzE3LjgzIDEzLjA3IDE3LjExIDEzLjI2IDE2LjQ1IDEzLjU4TDE3Ljk2IDZINi4wNEw2LjUgOC4yMkw0LjY1IDkuMjdMNCA2TTEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzTDMuMjcgMTIuMzhDMi43OSAxMi42NiAyLjYyIDEzLjI3IDIuOSAxMy43NUMzLjE4IDE0LjIzIDMuNzkgMTQuMzkgNC4yNyAxNC4xMUwxMi41IDkuMzZDMTIuOTcgOS4wOSAxMy4xNCA4LjQ3IDEyLjg2IDhNMTMgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NiAxNi44OEwxNy41OCAxOUwxNS40NiAyMS4xMkwxNi44NyAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41MyAyMS4xMkwyMC40MSAxOUwyMi41MyAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxldHRlID0gXCJNMTcuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDlBMS41LDEuNSAwIDAsMSAxOSwxMC41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMk0xNC41LDhBMS41LDEuNSAwIDAsMSAxMyw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDVBMS41LDEuNSAwIDAsMSAxNiw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDhNOS41LDhBMS41LDEuNSAwIDAsMSA4LDYuNUExLjUsMS41IDAgMCwxIDkuNSw1QTEuNSwxLjUgMCAwLDEgMTEsNi41QTEuNSwxLjUgMCAwLDEgOS41LDhNNi41LDEyQTEuNSwxLjUgMCAwLDEgNSwxMC41QTEuNSwxLjUgMCAwLDEgNi41LDlBMS41LDEuNSAwIDAsMSA4LDEwLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBMS41LDEuNSAwIDAsMCAxMy41LDE5LjVDMTMuNSwxOS4xMSAxMy4zNSwxOC43NiAxMy4xMSwxOC41QzEyLjg4LDE4LjIzIDEyLjczLDE3Ljg4IDEyLjczLDE3LjVBMS41LDEuNSAwIDAsMSAxNC4yMywxNkgxNkE1LDUgMCAwLDAgMjEsMTFDMjEsNi41OCAxNi45NywzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFsZXR0ZUFkdmFuY2VkID0gXCJNMjIsMjJIMTBWMjBIMjJWMjJNMiwyMlYyMEg5VjIySDJNMTgsMThWMTBIMjJWMThIMThNMTgsM0gyMlY5SDE4VjNNMiwxOFYzSDE2VjE4SDJNOSwxNC41NkEzLDMgMCAwLDAgMTIsMTEuNTZDMTIsOS41NiA5LDYuMTkgOSw2LjE5QzksNi4xOSA2LDkuNTYgNiwxMS41NkEzLDMgMCAwLDAgOSwxNC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxldHRlT3V0bGluZSA9IFwiTTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkMxNy41LDIgMjIsNiAyMiwxMUE2LDYgMCAwLDEgMTYsMTdIMTQuMkMxMy45LDE3IDEzLjcsMTcuMiAxMy43LDE3LjVDMTMuNywxNy42IDEzLjgsMTcuNyAxMy44LDE3LjhDMTQuMiwxOC4zIDE0LjQsMTguOSAxNC40LDE5LjVDMTQuNSwyMC45IDEzLjQsMjIgMTIsMjJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBDMTIuMywyMCAxMi41LDE5LjggMTIuNSwxOS41QzEyLjUsMTkuMyAxMi40LDE5LjIgMTIuNCwxOS4xQzEyLDE4LjYgMTEuOCwxOC4xIDExLjgsMTcuNUMxMS44LDE2LjEgMTIuOSwxNSAxNC4zLDE1SDE2QTQsNCAwIDAsMCAyMCwxMUMyMCw3LjEgMTYuNCw0IDEyLDRNNi41LDEwQzcuMywxMCA4LDEwLjcgOCwxMS41QzgsMTIuMyA3LjMsMTMgNi41LDEzQzUuNywxMyA1LDEyLjMgNSwxMS41QzUsMTAuNyA1LjcsMTAgNi41LDEwTTkuNSw2QzEwLjMsNiAxMSw2LjcgMTEsNy41QzExLDguMyAxMC4zLDkgOS41LDlDOC43LDkgOCw4LjMgOCw3LjVDOCw2LjcgOC43LDYgOS41LDZNMTQuNSw2QzE1LjMsNiAxNiw2LjcgMTYsNy41QzE2LDguMyAxNS4zLDkgMTQuNSw5QzEzLjcsOSAxMyw4LjMgMTMsNy41QzEzLDYuNyAxMy43LDYgMTQuNSw2TTE3LjUsMTBDMTguMywxMCAxOSwxMC43IDE5LDExLjVDMTksMTIuMyAxOC4zLDEzIDE3LjUsMTNDMTYuNywxMyAxNiwxMi4zIDE2LDExLjVDMTYsMTAuNyAxNi43LDEwIDE3LjUsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFsZXR0ZVN3YXRjaCA9IFwiTTIuNTMsMTkuNjVMMy44NywyMC4yMVYxMS4xOEwxLjQ0LDE3LjA0QzEuMDMsMTguMDYgMS41LDE5LjIzIDIuNTMsMTkuNjVNMjIuMDMsMTUuOTVMMTcuMDcsNEMxNi43NiwzLjIzIDE2LjAzLDIuNzcgMTUuMjYsMi43NUMxNSwyLjc1IDE0LjczLDIuNzkgMTQuNDcsMi45TDcuMSw1Ljk1QzYuMzUsNi4yNiA1Ljg5LDcgNS44Nyw3Ljc1QzUuODYsOCA1LjkxLDguMjkgNiw4LjU1TDExLDIwLjVDMTEuMjksMjEuMjggMTIuMDMsMjEuNzQgMTIuODEsMjEuNzVDMTMuMDcsMjEuNzUgMTMuMzMsMjEuNyAxMy41OCwyMS42TDIwLjk0LDE4LjU1QzIxLjk2LDE4LjEzIDIyLjQ1LDE2Ljk2IDIyLjAzLDE1Ljk1TTcuODgsOC43NUExLDEgMCAwLDEgNi44OCw3Ljc1QTEsMSAwIDAsMSA3Ljg4LDYuNzVDOC40Myw2Ljc1IDguODgsNy4yIDguODgsNy43NUM4Ljg4LDguMyA4LjQzLDguNzUgNy44OCw4Ljc1TTUuODgsMTkuNzVBMiwyIDAgMCwwIDcuODgsMjEuNzVIOS4zM0w1Ljg4LDEzLjQxVjE5Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbGV0dGVTd2F0Y2hPdXRsaW5lID0gXCJNMi41IDE5LjZMMy44IDIwLjJWMTEuMkwxLjQgMTdDMSAxOC4xIDEuNSAxOS4yIDIuNSAxOS42TTE1LjIgNC44TDIwLjIgMTYuOEwxMi45IDE5LjhMNy45IDcuOVY3LjhMMTUuMiA0LjhNMTUuMyAyLjhDMTUgMi44IDE0LjggMi44IDE0LjUgMi45TDcuMSA2QzYuNCA2LjMgNS45IDcgNS45IDcuOEM1LjkgOCA1LjkgOC4zIDYgOC42TDExIDIwLjVDMTEuMyAyMS4zIDEyIDIxLjcgMTIuOCAyMS43QzEzLjEgMjEuNyAxMy4zIDIxLjcgMTMuNiAyMS42TDIxIDE4LjVDMjIgMTguMSAyMi41IDE2LjkgMjIuMSAxNS45TDE3LjEgNEMxNi44IDMuMiAxNiAyLjggMTUuMyAyLjhNMTAuNSA5LjlDOS45IDkuOSA5LjUgOS41IDkuNSA4LjlTOS45IDcuOSAxMC41IDcuOUMxMS4xIDcuOSAxMS41IDguNCAxMS41IDguOVMxMS4xIDkuOSAxMC41IDkuOU01LjkgMTkuOEM1LjkgMjAuOSA2LjggMjEuOCA3LjkgMjEuOEg5LjNMNS45IDEzLjVWMTkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxtVHJlZSA9IFwiTTEyIDlDMTMuNTkgMTYuNjEgMTAgMjIgMTAgMjJIMTNDMTQuODggMTYuMiAxNCAxMi4wOSAxMy41IDEwTTE1LjY2IDcuMTZDMTUuODMgNy4zNyAxNiA3LjU5IDE2LjEzIDcuODJDMTcuODQgMTAuNTMgMTcuNSAxMy45NSAxNS41IDE2LjI2QzE2LjM0IDE0LjIxIDE2LjIyIDExLjc5IDE0Ljk1IDkuNzdDMTQuODcgOS42NCAxNC43OCA5LjUzIDE0LjcgOS40MUMxNC4xMSA4LjU4IDEzLjM2IDcuOTIgMTIuNTQgNy40M0M5LjY2IDguMzUgNy41OCAxMS4wNCA3LjU4IDE0LjIyQzcuNTggMTQuOTYgNy42OSAxNS42NyA3Ljg5IDE2LjMzQzcuMDUgMTUuMTYgNi41NiAxMy43MyA2LjU2IDEyLjE5QzYuNTYgOS44NCA3LjcgNy43NiA5LjQ1IDYuNDZDOCA2LjM1IDYuNDYgNi42NyA1LjEyIDcuNUM0LjUgNy45MSAzLjk2IDguMzggMy41IDguOTFDNC4wNSA3LjU4IDUgNi4zOSA2LjMgNS41N0M3LjggNC42MyA5LjUgNC4zMiAxMS4xNCA0LjU2QzEwLjczIDQgMTAuMjMgMy40NyA5LjYzIDNDOS4wNSAyLjU4IDguNDIgMi4yNCA3Ljc2IDJDOS4yIDIuMDQgMTAuNjQgMi41IDExLjg3IDMuNDNDMTIuNSAzLjkgMTMgNC40NyAxMy40IDUuMDdDMTMuNSA1LjA3IDEzLjU5IDUuMDYgMTMuNjkgNS4wNkMxNi44OSA1LjA2IDE5LjYgNy4xNyAyMC41IDEwLjA4QzE5LjM4IDguNSAxNy42NSA3LjQzIDE1LjY2IDcuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNNyw4TDIuNSwxMkw3LDE2VjhNMTcsOFYxNkwyMS41LDEyTDE3LDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTgsMTdMMTIsMjEuNUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbkJvdHRvbUxlZnQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNNS4zNSwxM0wxMSwxOC42NUw1LDE5TDUuMzUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuQm90dG9tUmlnaHQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTMsMTguNjVMMTguNjUsMTNMMTksMTlMMTMsMTguNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuRG93biA9IFwiTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME04LDE3TDEyLDIxLjVMMTYsMTdIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5Ib3Jpem9udGFsID0gXCJNNyw4TDIuNSwxMkw3LDE2VjhNMTcsOFYxNkwyMS41LDEyTDE3LDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbkxlZnQgPSBcIk03LDhMMi41LDEyTDcsMTZWOE0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuUmlnaHQgPSBcIk0xNyw4VjE2TDIxLjUsMTJMMTcsOE0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuVG9wTGVmdCA9IFwiTTEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxME0xMSw1LjM1TDUuMzUsMTFMNSw1TDExLDUuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuVG9wUmlnaHQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTguNjUsMTFMMTMsNS4zNUwxOSw1TDE4LjY1LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhblVwID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhblZlcnRpY2FsID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTgsMTdMMTIsMjEuNUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbmRhID0gXCJNMTIsM0MxMy43NCwzIDE1LjM2LDMuNSAxNi43NCw0LjM1QzE3LjM4LDMuNTMgMTguMzgsMyAxOS41LDNBMy41LDMuNSAwIDAsMSAyMyw2LjVDMjMsOCAyMi4wNSw5LjI4IDIwLjcyLDkuNzhDMjAuOSwxMC41IDIxLDExLjIzIDIxLDEyQTksOSAwIDAsMSAxMiwyMUE5LDkgMCAwLDEgMywxMkMzLDExLjIzIDMuMSwxMC41IDMuMjgsOS43OEMxLjk1LDkuMjggMSw4IDEsNi41QTMuNSwzLjUgMCAwLDEgNC41LDNDNS42MiwzIDYuNjIsMy41MyA3LjI2LDQuMzVDOC42NCwzLjUgMTAuMjYsMyAxMiwzTTEyLDVBNyw3IDAgMCwwIDUsMTJBNyw3IDAgMCwwIDEyLDE5QTcsNyAwIDAsMCAxOSwxMkE3LDcgMCAwLDAgMTIsNU0xNi4xOSwxMC4zQzE2LjU1LDExLjYzIDE2LjA4LDEyLjkxIDE1LjE1LDEzLjE2QzE0LjIxLDEzLjQyIDEzLjE3LDEyLjU0IDEyLjgxLDExLjJDMTIuNDUsOS44NyAxMi45Miw4LjU5IDEzLjg1LDguMzRDMTQuNzksOC4wOSAxNS44Myw4Ljk2IDE2LjE5LDEwLjNNNy44MSwxMC4zQzguMTcsOC45NiA5LjIxLDguMDkgMTAuMTUsOC4zNEMxMS4wOCw4LjU5IDExLjU1LDkuODcgMTEuMTksMTEuMkMxMC44MywxMi41NCA5Ljc5LDEzLjQyIDguODUsMTMuMTZDNy45MiwxMi45MSA3LjQ1LDExLjYzIDcuODEsMTAuM00xMiwxNEMxMi42LDE0IDEzLjEzLDE0LjE5IDEzLjUsMTQuNUwxMi41LDE1LjVDMTIuNSwxNS45MiAxMi44NCwxNi4yNSAxMy4yNSwxNi4yNUEwLjc1LDAuNzUgMCAwLDAgMTQsMTUuNUEwLjUsMC41IDAgMCwxIDE0LjUsMTVBMC41LDAuNSAwIDAsMSAxNSwxNS41QTEuNzUsMS43NSAwIDAsMSAxMy4yNSwxNy4yNUMxMi43NiwxNy4yNSAxMi4zMiwxNy4wNSAxMiwxNi43MkMxMS42OCwxNy4wNSAxMS4yNCwxNy4yNSAxMC43NSwxNy4yNUExLjc1LDEuNzUgMCAwLDEgOSwxNS41QTAuNSwwLjUgMCAwLDEgOS41LDE1QTAuNSwwLjUgMCAwLDEgMTAsMTUuNUEwLjc1LDAuNzUgMCAwLDAgMTAuNzUsMTYuMjVBMC43NSwwLjc1IDAgMCwwIDExLjUsMTUuNUwxMC41LDE0LjVDMTAuODcsMTQuMTkgMTEuNCwxNCAxMiwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5kb3JhID0gXCJNMTAsMjBBMSwxIDAgMCwxIDksMjFINFYzSDEzLjcxQTYuNzUsNi43NSAwIDAsMSAyMC40Niw5Ljc1QzIwLjQ2LDEzLjUgMTcuNDQsMTYuNSAxMy43MSwxNi41SDEwVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hID0gXCJNOC41LDEyLjVMMTEsMTUuNUwxNC41LDExTDE5LDE3SDVNMjMsMThWNkEyLDIgMCAwLDAgMjEsNEgzQTIsMiAwIDAsMCAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMjFBMiwyIDAgMCwwIDIzLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hRmlzaGV5ZSA9IFwiTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIsMkM2LjQ3LDIgMiw2LjQ3IDIsMTJDMiwxNy41MyA2LjQ3LDIyIDEyLDIyQzE3LjUzLDIyIDIyLDE3LjUzIDIyLDEyQzIyLDYuNDcgMTcuNTMsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hSG9yaXpvbnRhbCA9IFwiTTIxLjQzLDRDMjEuMzMsNCAyMS4yMyw0IDIxLjEyLDQuMDZDMTguMTgsNS4xNiAxNS4wOSw1LjcgMTIsNS43QzguOTEsNS43IDUuODIsNS4xNSAyLjg4LDQuMDZDMi43Nyw0IDIuNjYsNCAyLjU3LDRDMi4yMyw0IDIsNC4yMyAyLDQuNjNWMTkuMzhDMiwxOS43NyAyLjIzLDIwIDIuNTcsMjBDMi42NywyMCAyLjc3LDIwIDIuODgsMTkuOTRDNS44MiwxOC44NCA4LjkxLDE4LjMgMTIsMTguM0MxNS4wOSwxOC4zIDE4LjE4LDE4Ljg1IDIxLjEyLDE5Ljk0QzIxLjIzLDIwIDIxLjMzLDIwIDIxLjQzLDIwQzIxLjc2LDIwIDIyLDE5Ljc3IDIyLDE5LjM3VjQuNjNDMjIsNC4yMyAyMS43Niw0IDIxLjQzLDRNMjAsNi41NFYxNy40NUMxNy40LDE2LjY4IDE0LjcyLDE2LjI5IDEyLDE2LjI5QzkuMjgsMTYuMjkgNi42LDE2LjY4IDQsMTcuNDVWNi41NEM2LjYsNy4zMSA5LjI4LDcuNyAxMiw3LjdDMTQuNzIsNy43MSAxNy40LDcuMzIgMjAsNi41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5vcmFtYVZlcnRpY2FsID0gXCJNNi41NCwyMEM3LjMxLDE3LjQgNy43LDE0LjcyIDcuNywxMkM3LjcsOS4yOCA3LjMxLDYuNiA2LjU0LDRIMTcuNDVDMTYuNjgsNi42IDE2LjI5LDkuMjggMTYuMjksMTJDMTYuMjksMTQuNzIgMTYuNjgsMTcuNCAxNy40NSwyME0xOS45NCwyMS4xMkMxOC44NCwxOC4xOCAxOC4zLDE1LjA5IDE4LjMsMTJDMTguMyw4LjkxIDE4Ljg1LDUuODIgMTkuOTQsMi44OEMyMCwyLjc3IDIwLDIuNjYgMjAsMi41N0MyMCwyLjIzIDE5Ljc3LDIgMTkuMzcsMkg0LjYzQzQuMjMsMiA0LDIuMjMgNCwyLjU3QzQsMi42NyA0LDIuNzcgNC4wNiwyLjg4QzUuMTYsNS44MiA1LjcxLDguOTEgNS43MSwxMkM1LjcxLDE1LjA5IDUuMTYsMTguMTggNC4wNywyMS4xMkM0LDIxLjIzIDQsMjEuMzQgNCwyMS40M0M0LDIxLjc2IDQuMjMsMjIgNC42MywyMkgxOS4zOEMxOS43NywyMiAyMCwyMS43NiAyMCwyMS40M0MyMCwyMS4zMyAyMCwyMS4yMyAxOS45NCwyMS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5vcmFtYVdpZGVBbmdsZSA9IFwiTTEyLDRDOS4yNyw0IDYuNzgsNC4yNCA0LjA1LDQuNzJMMy4xMiw0Ljg4TDIuODcsNS43OEMyLjI5LDcuODUgMiw5LjkzIDIsMTJDMiwxNC4wNyAyLjI5LDE2LjE1IDIuODcsMTguMjJMMy4xMiwxOS4xMUw0LjA1LDE5LjI3QzYuNzgsMTkuNzYgOS4yNywyMCAxMiwyMEMxNC43MywyMCAxNy4yMiwxOS43NiAxOS45NSwxOS4yOEwyMC44OCwxOS4xMkwyMS4xMywxOC4yM0MyMS43MSwxNi4xNSAyMiwxNC4wNyAyMiwxMkMyMiw5LjkzIDIxLjcxLDcuODUgMjEuMTMsNS43OEwyMC44OCw0Ljg5TDE5Ljk1LDQuNzNDMTcuMjIsNC4yNCAxNC43Myw0IDEyLDRNMTIsNkMxNC40NSw2IDE2LjcxLDYuMiAxOS4yOSw2LjY0QzE5Ljc2LDguNDIgMjAsMTAuMjIgMjAsMTJDMjAsMTMuNzggMTkuNzYsMTUuNTggMTkuMjksMTcuMzZDMTYuNzEsMTcuOCAxNC40NSwxOCAxMiwxOEM5LjU1LDE4IDcuMjksMTcuOCA0LjcxLDE3LjM2QzQuMjQsMTUuNTggNCwxMy43OCA0LDEyQzQsMTAuMjIgNC4yNCw4LjQyIDQuNzEsNi42NEM3LjI5LDYuMiA5LjU1LDYgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXBlckN1dFZlcnRpY2FsID0gXCJNMTEuNDMsMy4yM0wxMiw0TDEyLjU3LDMuMjNWMy4yNEMxMy4xMiwyLjUgMTQsMiAxNSwyQTMsMyAwIDAsMSAxOCw1QzE4LDUuMzUgMTcuOTQsNS42OSAxNy44Myw2SDIwQTIsMiAwIDAsMSAyMiw4VjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjhBMiwyIDAgMCwxIDQsNkg2LjE3QzYuMDYsNS42OSA2LDUuMzUgNiw1QTMsMyAwIDAsMSA5LDJDMTAsMiAxMC44OCwyLjUgMTEuNDMsMy4yNFYzLjIzTTQsOFYyMEgxMUExLDEgMCAwLDEgMTIsMTlBMSwxIDAgMCwxIDEzLDIwSDIwVjhIMTVMMTQuOSw4TDE3LDEwLjkyTDE1LjQsMTIuMUwxMi40Miw4SDExLjU4TDguNiwxMi4xTDcsMTAuOTJMOS4xLDhIOUw0LDhNOSw0QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsNUExLDEgMCAwLDAgOSw0TTE1LDRBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE2LDVBMSwxIDAgMCwwIDE1LDRNMTIsMTZBMSwxIDAgMCwxIDEzLDE3QTEsMSAwIDAsMSAxMiwxOEExLDEgMCAwLDEgMTEsMTdBMSwxIDAgMCwxIDEyLDE2TTEyLDEzQTEsMSAwIDAsMSAxMywxNEExLDEgMCAwLDEgMTIsMTVBMSwxIDAgMCwxIDExLDE0QTEsMSAwIDAsMSAxMiwxM00xMiwxMEExLDEgMCAwLDEgMTMsMTFBMSwxIDAgMCwxIDEyLDEyQTEsMSAwIDAsMSAxMSwxMUExLDEgMCAwLDEgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFwZXJSb2xsID0gXCJNOSAzQzUuNjkgMyAzLjE0IDUuNjkgMyA5VjIxSDEyVjEzLjQ2QzEzLjEgMTQuNDUgMTQuNSAxNSAxNiAxNUMxOS4zMSAxNSAyMiAxMi4zMSAyMiA5QzIyIDUuNjkgMTkuMzEgMyAxNiAzSDlNMTYgNUMxOC4yMSA1IDIwIDYuNzkgMjAgOUMyMCAxMS4yMSAxOC4yMSAxMyAxNiAxM0MxMy43OSAxMyAxMiAxMS4yMSAxMiA5QzEyIDYuNzkgMTMuNzkgNSAxNiA1TTE2IDcuMjVDMTUuMDMgNy4yNSAxNC4yNSA4LjAzIDE0LjI1IDlDMTQuMjUgOS45NyAxNS4wMyAxMC43NSAxNiAxMC43NUMxNi45NyAxMC43NSAxNy43NSA5Ljk3IDE3Ljc1IDlDMTcuNzUgOC4wMyAxNi45NyA3LjI1IDE2IDcuMjVNNCAxMkg1VjEzSDRWMTJNNiAxMkg3VjEzSDZWMTJNOCAxMkg5VjEzSDhWMTJNMTAgMTJIMTFWMTNIMTBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFwZXJSb2xsT3V0bGluZSA9IFwiTTkgM0M1LjY5IDMgMy4xNCA1LjY5IDMgOVYyMUgxMlYxMy40NkMxMy4xIDE0LjQ1IDE0LjUgMTUgMTYgMTVDMTkuMzEgMTUgMjIgMTIuMzEgMjIgOUMyMiA1LjY5IDE5LjMxIDMgMTYgM0g5TTkgNUgxMS41NEMxMC41NSA2LjEgMTAgNy41IDEwIDlWMTJIOVYxM0gxMFYxOUg1VjEzSDZWMTJINVY5QzUgNi43OSA2Ljc5IDUgOSA1TTE2IDVDMTguMjEgNSAyMCA2Ljc5IDIwIDlDMjAgMTEuMjEgMTguMjEgMTMgMTYgMTNDMTMuNzkgMTMgMTIgMTEuMjEgMTIgOUMxMiA2Ljc5IDEzLjc5IDUgMTYgNU0xNiA3LjI1QzE1LjAzIDcuMjUgMTQuMjUgOC4wMyAxNC4yNSA5QzE0LjI1IDkuOTcgMTUuMDMgMTAuNzUgMTYgMTAuNzVDMTYuOTcgMTAuNzUgMTcuNzUgOS45NyAxNy43NSA5QzE3Ljc1IDguMDMgMTYuOTcgNy4yNSAxNiA3LjI1TTcgMTJWMTNIOFYxMkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhcGVyY2xpcCA9IFwiTTE2LjUsNlYxNy41QTQsNCAwIDAsMSAxMi41LDIxLjVBNCw0IDAgMCwxIDguNSwxNy41VjVBMi41LDIuNSAwIDAsMSAxMSwyLjVBMi41LDIuNSAwIDAsMSAxMy41LDVWMTUuNUExLDEgMCAwLDEgMTIuNSwxNi41QTEsMSAwIDAsMSAxMS41LDE1LjVWNkgxMFYxNS41QTIuNSwyLjUgMCAwLDAgMTIuNSwxOEEyLjUsMi41IDAgMCwwIDE1LDE1LjVWNUE0LDQgMCAwLDAgMTEsMUE0LDQgMCAwLDAgNyw1VjE3LjVBNS41LDUuNSAwIDAsMCAxMi41LDIzQTUuNSw1LjUgMCAwLDAgMTgsMTcuNVY2SDE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFyYWNodXRlID0gXCJNMjEuMiwxMC45NUwxMiwyM0wyLjc4LDEwLjk2TDIuODcsMTAuODhDMy4wOCwxMC42NyAzLjMzLDEwLjUgMy41OCwxMC4zNkwxMC43MywxOS42OUw4LjU4LDEzTDkuMjQsMTEuODFMMTIsMjAuMzhMMTQuNzMsMTEuOEwxNS40LDEzTDEzLjI3LDE5LjY5TDIwLjQxLDEwLjM1QzIwLjY2LDEwLjUgMjAuOSwxMC42NCAyMS4xLDEwLjg1TDIxLjIsMTAuOTVNNSw5QzYuNSw5IDcuODEsOS44NiA4LjUsMTEuMUM5LjE3LDkuODYgMTAuNDcsOSAxMiw5QzEzLjUsOSAxNC44LDkuODUgMTUuNSwxMS4wOUMxNi4xNiw5Ljg0IDE3LjQ3LDkgMTksOUMyMC4wOSw5IDIxLjA5LDkuNDIgMjEuODEsMTAuMTRDMjAuOTQsNS41IDE2Ljg4LDIgMTIsMkM3LjA5LDIgMy4wMyw1LjUgMi4xNiwxMC4xN0MyLjg5LDkuNDUgMy44OSw5IDUsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXJhY2h1dGVPdXRsaW5lID0gXCJNMjEuMiwxMC45NUwxMiwyM0wyLjc4LDEwLjk2TDIuODcsMTAuODhDMy4wOCwxMC42NyAzLjMzLDEwLjUgMy41OCwxMC4zNkwxMC43MywxOS42OUw4LjU4LDEzTDkuMjQsMTEuODFMMTIsMjAuMzhMMTQuNzMsMTEuOEwxNS40LDEzTDEzLjI3LDE5LjY5TDIwLjQxLDEwLjM1QzIwLjY2LDEwLjUgMjAuOSwxMC42NCAyMS4xLDEwLjg1TDIxLjIsMTAuOTVNMTIsNEMxNC41LDQgMTYuNzcsNS4xNyAxOC4yNSw3LjAzQzE3LjI0LDcuMTUgMTYuMjgsNy41NCAxNS40Nyw4LjEzQzE0LjQ3LDcuNDEgMTMuMjYsNyAxMiw3QzEwLjcxLDcgOS41LDcuNDEgOC41LDguMTRDNy42OCw3LjU1IDYuNzIsNy4xNyA1LjcxLDcuMDRDNy4xOSw1LjE3IDkuNDcsNCAxMiw0TTEyLDJDNy4wOSwyIDMuMDMsNS41IDIuMTYsMTAuMTdDMi44OSw5LjQ1IDMuODksOSA1LDlDNi41LDkgNy44MSw5Ljg2IDguNSwxMS4xQzkuMTcsOS44NiAxMC40Nyw5IDEyLDlDMTMuNSw5IDE0LjgsOS44NSAxNS41LDExLjA5QzE2LjE2LDkuODQgMTcuNDcsOSAxOSw5QzIwLjA5LDkgMjEuMDksOS40MiAyMS44MSwxMC4xNEMyMC45NCw1LjUgMTYuODgsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhcmtpbmcgPSBcIk0xMy4yLDExSDEwVjdIMTMuMkEyLDIgMCAwLDEgMTUuMiw5QTIsMiAwIDAsMSAxMy4yLDExTTEzLDNINlYyMUgxMFYxNUgxM0E2LDYgMCAwLDAgMTksOUMxOSw1LjY4IDE2LjMxLDMgMTMsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYXJ0eVBvcHBlciA9IFwiTTE0LjUzIDEuNDVMMTMuNDUgMi41M0wxNS4wNSA0LjEzQzE1LjI3IDQuMzggMTUuMzggNC42NyAxNS4zOCA1UzE1LjI3IDUuNjQgMTUuMDUgNS44NkwxMS41IDkuNDdMMTIuNSAxMC41NUwxNi4xMyA2Ljk0QzE2LjY2IDYuMzUgMTYuOTIgNS43IDE2LjkyIDVDMTYuOTIgNC4zIDE2LjY2IDMuNjQgMTYuMTMgMy4wNUwxNC41MyAxLjQ1TTEwLjU1IDMuNDdMOS40NyA0LjU1TDEwLjA4IDUuMTFDMTAuMyA1LjMzIDEwLjQxIDUuNjMgMTAuNDEgNlMxMC4zIDYuNjcgMTAuMDggNi44OUw5LjQ3IDcuNDVMMTAuNTUgOC41M0wxMS4xMSA3LjkyQzExLjY0IDcuMzMgMTEuOTEgNi42OSAxMS45MSA2QzExLjkxIDUuMjggMTEuNjQgNC42MyAxMS4xMSA0LjAzTDEwLjU1IDMuNDdNMjEgNS4wNkMyMC4zMSA1LjA2IDE5LjY3IDUuMzMgMTkuMDggNS44NkwxMy40NSAxMS41TDE0LjUzIDEyLjVMMjAuMTEgNi45NEMyMC4zNiA2LjY5IDIwLjY2IDYuNTYgMjEgNi41NlMyMS42NCA2LjY5IDIxLjg5IDYuOTRMMjIuNSA3LjU1TDIzLjUzIDYuNDdMMjIuOTcgNS44NkMyMi4zOCA1LjMzIDIxLjcyIDUuMDYgMjEgNS4wNk03IDhMMiAyMkwxNiAxN0w3IDhNMTkgMTEuMDZDMTguMyAxMS4wNiAxNy42NiAxMS4zMyAxNy4wNiAxMS44NkwxNS40NyAxMy40NUwxNi41NSAxNC41M0wxOC4xNCAxMi45NEMxOC4zOSAxMi42OSAxOC42NyAxMi41NiAxOSAxMi41NkMxOS4zMyAxMi41NiAxOS42MyAxMi42OSAxOS44OCAxMi45NEwyMS41IDE0LjUzTDIyLjU1IDEzLjVMMjAuOTUgMTEuODZDMjAuMzYgMTEuMzMgMTkuNyAxMS4wNiAxOSAxMS4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXNzcG9ydCA9IFwiTTYsMkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwySDZNMTIsNUE1LDUgMCAwLDEgMTcsMTBBNSw1IDAgMCwxIDEyLDE1QTUsNSAwIDAsMSA3LDEwQTUsNSAwIDAsMSAxMiw1TTEyLDZDMTEuNTksNi42MiAxMS4yNSw3LjI5IDExLjA0LDhIMTIuOTZDMTIuNzUsNy4yOSAxMi40Miw2LjYyIDEyLDZNMTAuNyw2LjIyQzkuNzgsNi41MyA5LDcuMTcgOC41NCw4SDEwQzEwLjE4LDcuMzggMTAuNCw2Ljc4IDEwLjcsNi4yMk0xMy4yOSw2LjIyQzEzLjU5LDYuNzggMTMuODIsNy4zOCAxNCw4SDE1LjQ2QzE1LDcuMTcgMTQuMjEsNi41NCAxMy4yOSw2LjIyTTguMTMsOUM4LjA1LDkuMzIgOCw5LjY1IDgsMTBDOCwxMC4zNSA4LjA1LDEwLjY4IDguMTMsMTFIOS44MkM5Ljc4LDEwLjY3IDkuNzUsMTAuMzQgOS43NSwxMEM5Ljc1LDkuNjYgOS43OCw5LjMzIDkuODIsOUg4LjEzTTEwLjgzLDlDMTAuNzgsOS4zMiAxMC43NSw5LjY2IDEwLjc1LDEwQzEwLjc1LDEwLjM0IDEwLjc4LDEwLjY3IDEwLjgzLDExSDEzLjE3QzEzLjIxLDEwLjY3IDEzLjI1LDEwLjM0IDEzLjI1LDEwQzEzLjI1LDkuNjYgMTMuMjEsOS4zMiAxMy4xNyw5SDEwLjgzTTE0LjE4LDlDMTQuMjIsOS4zMyAxNC4yNSw5LjY2IDE0LjI1LDEwQzE0LjI1LDEwLjM0IDE0LjIyLDEwLjY3IDE0LjE4LDExSDE1Ljg3QzE1Ljk1LDEwLjY4IDE2LDEwLjM1IDE2LDEwQzE2LDkuNjUgMTUuOTUsOS4zMiAxNS44Nyw5SDE0LjE4TTguNTQsMTJDOSwxMi44MyA5Ljc4LDEzLjQ2IDEwLjcsMTMuNzhDMTAuNCwxMy4yMiAxMC4xOCwxMi42MyAxMCwxMkg4LjU0TTExLjA0LDEyQzExLjI1LDEyLjcyIDExLjU5LDEzLjM4IDEyLDE0QzEyLjQyLDEzLjM4IDEyLjc1LDEyLjcyIDEyLjk2LDEySDExLjA0TTE0LDEyQzEzLjgyLDEyLjYzIDEzLjU5LDEzLjIyIDEzLjI5LDEzLjc4QzE0LjIxLDEzLjQ2IDE1LDEyLjgzIDE1LjQ2LDEySDE0TTcsMTdIMTdWMTlIN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYXNzcG9ydEJpb21ldHJpYyA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjExSDguMTNDOC41OSw5LjI0IDEwLjE4LDggMTIsOEMxMy44Miw4IDE1LjQxLDkuMjQgMTUuODcsMTFIMjJWNkEyLDIgMCAwLDAgMjAsNEg0TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME0yLDEzVjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFYxM0gxNS44N0MxNS40MSwxNC43NiAxMy44MiwxNiAxMiwxNkMxMC4xOCwxNiA4LjU5LDE0Ljc2IDguMTMsMTNIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXN0YSA9IFwiTTQgMTYuNVY4SDNWN0g0VjZIM1Y1SDRWNEgzVjNIOUM5LjUgMy4wMyA5Ljk1IDMuMjQgMTAuMzQgMy42M1MxMC45NSA0LjUgMTEgNUgyMVY2SDExQzEwLjk1IDYuNTMgMTAuNzMgNyAxMC4zNCA3LjQzUzkuNSA4LjA1IDkgOEg3VjE1LjA1QzcuMDUgMTUuMDUgNy4xMyAxNS4wNCA3LjI0IDE1UzcuNDQgMTUgNy41IDE1QzguMDYgMTUgOC43IDE1LjE0IDkuNDIgMTUuNDJDOS44MyAxNC41IDEwLjUzIDEzLjY4IDExLjUzIDEzUzEzLjUzIDEyIDE0LjUzIDEyQzE2LjA2IDEyIDE3LjM2IDEyLjUzIDE4LjQyIDEzLjU5UzIwIDE1Ljk1IDIwIDE3LjVDMjAgMTcuNTUgMjAgMTcuNjQgMjAgMTcuNzdTMTkuOTcgMTcuOTcgMTkuOTcgMThIMy4xNEMzLjI3IDE3LjUgMy41NSAxNyA0IDE2LjVNNiAxNS4yM1Y4SDVWMTUuN0M1LjUgMTUuNDUgNS44MSAxNS4zIDYgMTUuMjNNOSA3VjZIN1Y3SDlNOSA0SDdWNUg5VjRNNSA0VjVINlY0SDVNNSA2VjdINlY2SDVNMiAxOUgyMkwyMCAyMUg0TDIgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF0aW9IZWF0ZXIgPSBcIk0xNSAyMkg5VjIxSDE1VjIyTTE5IDRMMTUgMkg5TDUgNEgxOU04IDVMOC40IDZIMTUuNkwxNiA1SDhNMTAgMTBIMTFWMTVDMTAuNCAxNSAxMCAxNS40IDEwIDE2VjIwSDE0VjE2QzE0IDE1LjQgMTMuNiAxNSAxMyAxNVYxMEgxNEwxNC40IDlIOS42TDEwIDEwTTkuMiA4SDE0LjhMMTUuMiA3SDguOEw5LjIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXRyZW9uID0gXCJNMTQuODIgMi40MUMxOC43OCAyLjQxIDIyIDUuNjUgMjIgOS42MkMyMiAxMy41OCAxOC43OCAxNi44IDE0LjgyIDE2LjhDMTAuODUgMTYuOCA3LjYxIDEzLjU4IDcuNjEgOS42MkM3LjYxIDUuNjUgMTAuODUgMi40MSAxNC44MiAyLjQxTTIgMjEuNkg1LjVWMi40MUgyVjIxLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2UgPSBcIk0xNCwxOUgxOFY1SDE0TTYsMTlIMTBWNUg2VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhdXNlQ2lyY2xlID0gXCJNMTUsMTZIMTNWOEgxNU0xMSwxNkg5VjhIMTFNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2VDaXJjbGVPdXRsaW5lID0gXCJNMTMsMTZWOEgxNVYxNkgxM005LDE2VjhIMTFWMTZIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2VPY3RhZ29uID0gXCJNMTUuNzMsM0wyMSw4LjI3VjE1LjczTDE1LjczLDIxSDguMjdMMywxNS43M1Y4LjI3TDguMjcsM0gxNS43M00xNSwxNlY4SDEzVjE2SDE1TTExLDE2VjhIOVYxNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXVzZU9jdGFnb25PdXRsaW5lID0gXCJNMTUsMTZIMTNWOEgxNVYxNk0xMSwxNkg5VjhIMTFWMTZNMTUuNzMsM0wyMSw4LjI3VjE1LjczTDE1LjczLDIxSDguMjdMMywxNS43M1Y4LjI3TDguMjcsM0gxNS43M00xNC45LDVIOS4xTDUsOS4xVjE0LjlMOS4xLDE5SDE0LjlMMTksMTQuOVY5LjFMMTQuOSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhdyA9IFwiTTguMzUsM0M5LjUzLDIuODMgMTAuNzgsNC4xMiAxMS4xNCw1LjlDMTEuNSw3LjY3IDEwLjg1LDkuMjUgOS42Nyw5LjQzQzguNSw5LjYxIDcuMjQsOC4zMiA2Ljg3LDYuNTRDNi41LDQuNzcgNy4xNywzLjE5IDguMzUsM00xNS41LDNDMTYuNjksMy4xOSAxNy4zNSw0Ljc3IDE3LDYuNTRDMTYuNjIsOC4zMiAxNS4zNyw5LjYxIDE0LjE5LDkuNDNDMTMsOS4yNSAxMi4zNSw3LjY3IDEyLjcyLDUuOUMxMy4wOCw0LjEyIDE0LjMzLDIuODMgMTUuNSwzTTMsNy42QzQuMTQsNy4xMSA1LjY5LDggNi41LDkuNTVDNy4yNiwxMS4xMyA3LDEyLjc5IDUuODcsMTMuMjhDNC43NCwxMy43NyAzLjIsMTIuODkgMi40MSwxMS4zMkMxLjYyLDkuNzUgMS45LDguMDggMyw3LjZNMjEsNy42QzIyLjEsOC4wOCAyMi4zOCw5Ljc1IDIxLjU5LDExLjMyQzIwLjgsMTIuODkgMTkuMjYsMTMuNzcgMTguMTMsMTMuMjhDMTcsMTIuNzkgMTYuNzQsMTEuMTMgMTcuNSw5LjU1QzE4LjMxLDggMTkuODYsNy4xMSAyMSw3LjZNMTkuMzMsMTguMzhDMTkuMzcsMTkuMzIgMTguNjUsMjAuMzYgMTcuNzksMjAuNzVDMTYsMjEuNTcgMTMuODgsMTkuODcgMTEuODksMTkuODdDOS45LDE5Ljg3IDcuNzYsMjEuNjQgNiwyMC43NUM1LDIwLjI2IDQuMzEsMTguOTYgNC40NCwxNy44OEM0LjYyLDE2LjM5IDYuNDEsMTUuNTkgNy40NywxNC41QzguODgsMTMuMDkgOS44OCwxMC40NCAxMS44OSwxMC40NEMxMy44OSwxMC40NCAxNC45NSwxMy4wNSAxNi4zLDE0LjVDMTcuNDEsMTUuNzIgMTkuMjYsMTYuNzUgMTkuMzMsMTguMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF3T2ZmID0gXCJNMiw0LjI3TDMuMjgsM0wyMS41LDIxLjIyTDIwLjIzLDIyLjVMMTguMjMsMjAuNUMxOC4wOSwyMC42IDE3Ljk0LDIwLjY4IDE3Ljc5LDIwLjc1QzE2LDIxLjU3IDEzLjg4LDE5Ljg3IDExLjg5LDE5Ljg3QzkuOSwxOS44NyA3Ljc2LDIxLjY0IDYsMjAuNzVDNSwyMC4yNiA0LjMxLDE4Ljk2IDQuNDQsMTcuODhDNC42MiwxNi4zOSA2LjQxLDE1LjU5IDcuNDcsMTQuNUM4LjIxLDEzLjc3IDguODQsMTIuNjkgOS41NSwxMS44MkwyLDQuMjdNOC4zNSwzQzkuNTMsMi44MyAxMC43OCw0LjEyIDExLjE0LDUuOUMxMS4zMiw2Ljc1IDExLjI2LDcuNTYgMTEsOC4xOUw3LjAzLDQuMkM3LjI5LDMuNTUgNy43NSwzLjEgOC4zNSwzTTE1LjUsM0MxNi42OSwzLjE5IDE3LjM1LDQuNzcgMTcsNi41NEMxNi42Miw4LjMyIDE1LjM3LDkuNjEgMTQuMTksOS40M0MxMyw5LjI1IDEyLjM1LDcuNjcgMTIuNzIsNS45QzEzLjA4LDQuMTIgMTQuMzMsMi44MyAxNS41LDNNMyw3LjZDNC4xNCw3LjExIDUuNjksOCA2LjUsOS41NUM3LjI2LDExLjEzIDcsMTIuNzkgNS44NywxMy4yOEM0Ljc0LDEzLjc3IDMuMiwxMi44OSAyLjQxLDExLjMyQzEuNjIsOS43NSAxLjksOC4wOCAzLDcuNk0yMSw3LjZDMjIuMSw4LjA4IDIyLjM4LDkuNzUgMjEuNTksMTEuMzJDMjAuOCwxMi44OSAxOS4yNiwxMy43NyAxOC4xMywxMy4yOEMxNywxMi43OSAxNi43NCwxMS4xMyAxNy41LDkuNTVDMTguMzEsOCAxOS44Niw3LjExIDIxLDcuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXdPZmZPdXRsaW5lID0gXCJNMjIuODMgOC4yNUMyMi41NiA3LjUgMjIuMDUgNi45NiAyMS4zOSA2LjY4QzIwLjIyIDYuMTggMTguOCA2LjYgMTcuNyA3LjY2QzE3LjgxIDcuMzcgMTcuOTEgNy4wNiAxOCA2LjczQzE4LjI1IDUuMzggMTggNC4wMyAxNy4zOCAzLjEyQzE2Ljk1IDIuNSAxNi4zMyAyLjExIDE1LjY0IDJDMTQuMSAxLjc4IDEyLjU3IDMuMDggMTEuOTMgNUMxMS4yOCAzLjA1IDkuNzQgMS43NiA4LjE5IDJDNy41IDIuMTIgNi44OCAyLjUzIDYuNDUgMy4xNkM2LjQ0IDMuMTggNi40MyAzLjIgNi40MiAzLjIyTDcuOTEgNC43MUM3Ljk2IDQuNTQgOCA0LjQgOC4xIDQuMjlDOC4yMiA0LjEyIDguMzYgNCA4LjUgNEM5IDMuOTEgOS44OCA0LjY5IDEwLjE2IDYuMUMxMC4yMyA2LjQ0IDEwLjI0IDYuNzUgMTAuMjIgN0wxMS44OCA4LjY4QzExLjg5IDguNjUgMTEuOTEgOC42MiAxMS45MyA4LjU4QzExLjk3IDguNjkgMTIuMDQgOC43OCAxMi4wOSA4Ljg5TDEzLjQzIDEwLjIzQzEzLjYzIDEwLjMyIDEzLjgzIDEwLjM5IDE0LjA0IDEwLjQyQzE0LjE2IDEwLjQ0IDE0LjI5IDEwLjQ1IDE0LjQxIDEwLjQ1QzE1LjEzIDEwLjQ1IDE1LjgzIDEwLjEyIDE2LjQzIDkuNTdDMTYgMTAuNjQgMTUuOTYgMTEuNzMgMTYuMjkgMTIuNjNDMTYuNTYgMTMuMzUgMTcuMDcgMTMuOTEgMTcuNzMgMTQuMkMxOC4wNyAxNC4zNCAxOC40MyAxNC40MSAxOC44IDE0LjQxQzIwLjE4IDE0LjQxIDIxLjY2IDEzLjQgMjIuNSAxMS43N0MyMy4wOCAxMC41OCAyMy4yMSA5LjMgMjIuODMgOC4yNU0xNiA2LjMzQzE1LjcyIDcuNzMgMTQuODMgOC41IDE0LjM0IDguNDRDMTQuMjggOC40MyAxNC4xMiA4LjQxIDEzLjk0IDguMTVDMTMuNjkgNy43OSAxMy41IDcuMDcgMTMuNyA2LjFDMTMuOTcgNC43NiAxNC44IDQgMTUuMjkgNEMxNS4zMSA0IDE1LjM0IDQgMTUuMzYgNEMxNS41IDQgMTUuNjMgNC4xMSAxNS43NSA0LjI3QzE2LjA3IDQuNzMgMTYuMTggNS41NCAxNiA2LjMzTTIwLjcgMTAuODdDMjAuMTIgMTIgMTkuMDggMTIuNiAxOC41MyAxMi4zNkMxOC40NyAxMi4zNCAxOC4yOCAxMi4yNiAxOC4xNiAxMS45M0MxOCAxMS40MyAxOC4wNyAxMC42OCAxOC4zOSAxMEMxOC45IDkuMDQgMTkuNzQgOC40NyAyMC4zMyA4LjQ3QzIwLjQzIDguNDcgMjAuNSA4LjUgMjAuNiA4LjVIMjAuNkMyMC43NSA4LjU4IDIwLjg3IDguNzIgMjAuOTUgOC45NEMyMS4wOSA5LjM0IDIxLjEgMTAuMDYgMjAuNyAxMC44N00xLjExIDNMNC44IDYuNjlDNC4wNiA2LjQxIDMuMjkgNi4zOSAyLjYgNi42OEMxLjk0IDYuOTcgMS40MyA3LjUzIDEuMTcgOC4yN0MuNzkzIDkuMzEgLjkxOSAxMC41OCAxLjUgMTEuNzdDMi4zNCAxMy40IDMuODIgMTQuNDEgNS4yMSAxNC40MUM1LjU3IDE0LjQxIDUuOTMgMTQuMzQgNi4yNyAxNC4yQzYuOTMgMTMuOTEgNy40NCAxMy4zNSA3LjcxIDEyLjYzQzggMTEuNzkgOCAxMC43NyA3LjY0IDkuNzZDNy44MyA5LjkxIDguMDQgMTAuMDMgOC4yNCAxMC4xM0w5LjczIDExLjYyQzguOTQgMTIuNSA4LjI3IDEzLjcgNy40NyAxNC41QzYuNDEgMTUuNTkgNC42MiAxNi4zOSA0LjQ0IDE3Ljg4QzQuMzEgMTguOTYgNSAyMC4yNiA2IDIwLjc1QzYuMzUgMjAuOTMgNi43MiAyMSA3LjEgMjFDOC42MSAyMSAxMC4zIDE5Ljg3IDExLjg5IDE5Ljg3QzEzLjUgMTkuODcgMTUuMTggMjAuOTcgMTYuNzEgMjAuOTdDMTcuMDggMjAuOTcgMTcuNDQgMjAuOTEgMTcuNzkgMjAuNzVDMTggMjAuNjUgMTguMjMgMjAuNSAxOC40MyAyMC4zMkwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTTExLjE1IDEzLjA0TDE3IDE4LjlDMTcgMTguOTEgMTYuOTcgMTguOTIgMTYuOTYgMTguOTNDMTYuOTIgMTguOTUgMTYuODUgMTguOTcgMTYuNzEgMTguOTdDMTYuMjggMTguOTcgMTUuNjMgMTguNzUgMTUgMTguNTRDMTQuMDggMTguMjMgMTMuMDMgMTcuODcgMTEuODkgMTcuODdDMTAuNzUgMTcuODcgOS43IDE4LjI0IDguNzggMTguNTZDOC4xNSAxOC43NyA3LjUgMTkgNy4xIDE5QzYuOTcgMTkgNi45MiAxOSA2Ljg4IDE4Ljk1QzYuNjYgMTguODQgNi40IDE4LjM3IDYuNDMgMTguMTJDNi41IDE3Ljg5IDcuMjMgMTcuMzEgNy41OSAxN0M4LjAzIDE2LjY4IDguNSAxNi4zMyA4Ljg5IDE1LjkxQzkuNDQgMTUuMzYgOS44OSAxNC43MyAxMC4zMyAxNC4xMkMxMC41NSAxMy44IDEwLjg2IDEzLjM4IDExLjE1IDEzLjA0TTUuNiAxMEM1LjkzIDEwLjY4IDYgMTEuNDMgNS44NCAxMS45M0M1LjcxIDEyLjI2IDUuNTMgMTIuMzQgNS40NyAxMi4zNkM0LjkyIDEyLjYgMy44OCAxMiAzLjMgMTAuODdDMi45IDEwLjA2IDIuOTEgOS4zNSAzLjA1IDguOTRDMy4xMyA4LjczIDMuMjUgOC41OCAzLjQgOC41QzMuNSA4LjUgMy41NyA4LjQ2IDMuNjggOC40NkM0LjI2IDguNDYgNS4xIDkuMDMgNS42IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhd091dGxpbmUgPSBcIk0yMi44MyA4LjI1QzIyLjU2IDcuNSAyMi4wNSA2Ljk2IDIxLjQgNi42OEMyMC4yMyA2LjE4IDE4LjgxIDYuNiAxNy43IDcuNjZDMTcuODEgNy4zNyAxNy45MSA3LjA2IDE4IDYuNzNDMTguMjUgNS4zOCAxOC4wMyA0LjAzIDE3LjM4IDMuMTJDMTYuOTUgMi41IDE2LjMzIDIuMTEgMTUuNjQgMkMxNC4xIDEuNzggMTIuNTcgMy4wOCAxMS45MyA1QzExLjI5IDMuMDUgOS43NCAxLjc2IDguMTkgMkM3LjUgMi4xMiA2Ljg4IDIuNTMgNi40NSAzLjE2QzUuODEgNC4wOSA1LjYxIDUuMzkgNS44OSA2Ljc0QzUuOTQgNyA2IDcuMjQgNi4wOSA3LjQ3QzUgNi41NiAzLjcgNi4yIDIuNiA2LjY4QzEuOTQgNi45NyAxLjQ0IDcuNTMgMS4xNyA4LjI3Qy43OTQgOS4zMSAuOTIgMTAuNTggMS41IDExLjc3QzIuMzQgMTMuNCAzLjgyIDE0LjQxIDUuMjEgMTQuNDFDNS41NyAxNC40MSA1LjkzIDE0LjM0IDYuMjcgMTQuMkM2LjkzIDEzLjkxIDcuNDQgMTMuMzUgNy43MSAxMi42M0M4LjAzIDExLjc5IDggMTAuNzcgNy42NCA5Ljc2QzguMTkgMTAuMTkgOC44MSAxMC40NSA5LjQ1IDEwLjQ1QzkuNTcgMTAuNDUgOS43IDEwLjQ0IDkuODIgMTAuNDJDMTAuNSAxMC4zMiAxMS4xMiA5LjkyIDExLjU1IDkuM0MxMS43IDkuMDggMTEuODMgOC44NCAxMS45MyA4LjU4QzEyLjAzIDguODQgMTIuMTUgOS4wOCAxMi4zIDkuMjlDMTIuNzMgOS45MSAxMy4zNSAxMC4zMSAxNC4wNCAxMC40MkMxNC4xNiAxMC40NCAxNC4yOSAxMC40NSAxNC40MSAxMC40NUMxNS4xMyAxMC40NSAxNS44MyAxMC4xMiAxNi40MyA5LjU3QzE2IDEwLjY0IDE1Ljk2IDExLjczIDE2LjI5IDEyLjYzQzE2LjU2IDEzLjM2IDE3LjA3IDEzLjkxIDE3LjczIDE0LjJDMTguMDcgMTQuMzQgMTguNDMgMTQuNDEgMTguOCAxNC40MUMyMC4xOCAxNC40MSAyMS42NiAxMy40IDIyLjUgMTEuNzdDMjMuMDggMTAuNTggMjMuMjEgOS4zIDIyLjgzIDguMjVNNS44NCAxMS45M0M1LjcyIDEyLjI2IDUuNTMgMTIuMzQgNS40NyAxMi4zNkM0LjkyIDEyLjYgMy44OCAxMiAzLjMgMTAuODdDMi45IDEwLjA2IDIuOTEgOS4zNSAzLjA1IDguOTRDMy4xMyA4LjczIDMuMjUgOC41OCAzLjQgOC41QzMuNSA4LjUgMy41OCA4LjQ2IDMuNjggOC40NkM0LjI2IDguNDYgNS4xIDkuMDMgNS42IDEwQzUuOTMgMTAuNjggNi4wMyAxMS40MyA1Ljg0IDExLjkzTTkuOTEgOC4xNkM5Ljc5IDguMzIgOS42NiA4LjQyIDkuNSA4LjQ0QzkgOC41IDguMTQgNy43MyA3Ljg1IDYuMzRDNy42NSA1LjM4IDcuODUgNC42NiA4LjEgNC4yOUM4LjIyIDQuMTIgOC4zNiA0IDguNSA0QzkgMy45MSA5Ljg4IDQuNjkgMTAuMTYgNi4xQzEwLjM2IDcuMDcgMTAuMTYgNy44IDkuOTEgOC4xNk0xNiA2LjMzQzE1LjcyIDcuNzMgMTQuODMgOC41IDE0LjM0IDguNDRDMTQuMjggOC40MyAxNC4xMiA4LjQxIDEzLjk0IDguMTVDMTMuNjkgNy43OSAxMy41IDcuMDcgMTMuNyA2LjFDMTMuOTcgNC43NiAxNC44IDQgMTUuMjkgNEMxNS4zMiA0IDE1LjM0IDQgMTUuMzYgNEMxNS41IDQgMTUuNjMgNC4xMSAxNS43NSA0LjI3QzE2LjA3IDQuNzMgMTYuMTggNS41NCAxNiA2LjMzTTIwLjcgMTAuODdDMjAuMTIgMTIgMTkuMDggMTIuNiAxOC41MyAxMi4zNkMxOC40NyAxMi4zNCAxOC4yOCAxMi4yNiAxOC4xNiAxMS45M0MxOCAxMS40MyAxOC4wNyAxMC42OCAxOC4zOSAxMEMxOC45IDkuMDQgMTkuNzUgOC40NyAyMC4zMyA4LjQ3QzIwLjQzIDguNDcgMjAuNSA4LjUgMjAuNiA4LjVIMjAuNjFDMjAuNzYgOC41OCAyMC44NyA4LjcyIDIwLjk1IDguOTRDMjEuMSA5LjM0IDIxLjExIDEwLjA2IDIwLjcgMTAuODdNMTYuMyAxNC41QzE0Ljk1IDEzLjA1IDEzLjg5IDEwLjQ0IDExLjg5IDEwLjQ0QzkuODggMTAuNDQgOC44OCAxMy4wOSA3LjQ3IDE0LjVDNi40MSAxNS41OSA0LjYyIDE2LjM5IDQuNDQgMTcuODhDNC4zMSAxOC45NiA1IDIwLjI2IDYgMjAuNzVDNi4zNSAyMC45MyA2LjcyIDIxIDcuMSAyMUM4LjYxIDIxIDEwLjMgMTkuODcgMTEuODkgMTkuODdDMTMuNSAxOS44NyAxNS4xOCAyMC45NyAxNi43MSAyMC45N0MxNy4wOCAyMC45NyAxNy40NCAyMC45MSAxNy43OSAyMC43NUMxOC42NSAyMC4zNiAxOS4zNyAxOS4zMiAxOS4zMyAxOC4zOEMxOS4yNiAxNi43NSAxNy40MSAxNS43MiAxNi4zIDE0LjVNMTYuOTYgMTguOTNDMTYuOTIgMTguOTUgMTYuODUgMTguOTcgMTYuNzEgMTguOTdDMTYuMjkgMTguOTcgMTUuNjMgMTguNzUgMTUgMTguNTRDMTQuMDggMTguMjMgMTMuMDMgMTcuODcgMTEuODkgMTcuODdDMTAuNzUgMTcuODcgOS43IDE4LjI0IDguNzggMTguNTZDOC4xNSAxOC43NyA3LjUgMTkgNy4xIDE5QzYuOTcgMTkgNi45MiAxOSA2Ljg4IDE4Ljk1QzYuNjYgMTguODQgNi40IDE4LjM3IDYuNDMgMTguMTJDNi41IDE3Ljg5IDcuMjMgMTcuMzEgNy41OSAxN0M4LjAzIDE2LjY4IDguNSAxNi4zMyA4Ljg5IDE1LjkxQzkuNDQgMTUuMzYgOS44OSAxNC43MyAxMC4zMyAxNC4xMkMxMC43OCAxMy41IDExLjUzIDEyLjQ0IDExLjg5IDEyLjQ0QzEyLjI5IDEyLjQ0IDEzLjA4IDEzLjU2IDEzLjU2IDE0LjIyQzEzLjk1IDE0Ljc4IDE0LjM2IDE1LjM1IDE0LjgyIDE1Ljg1QzE1LjIxIDE2LjI3IDE1LjYyIDE2LjY0IDE2IDE3QzE2LjU0IDE3LjQ1IDE3LjMyIDE4LjE0IDE3LjMzIDE4LjQ0QzE3LjMyIDE4LjU4IDE3LjEyIDE4Ljg2IDE2Ljk2IDE4LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBkZkJveCA9IFwiTTEyLDEwLjVIMTNWMTMuNUgxMlYxMC41TTcsMTEuNUg4VjEwLjVIN1YxMS41TTIwLDZWMThBMiwyIDAgMCwxIDE4LDIwSDZBMiwyIDAgMCwxIDQsMThWNkEyLDIgMCAwLDEgNiw0SDE4QTIsMiAwIDAsMSAyMCw2TTkuNSwxMC41QTEuNSwxLjUgMCAwLDAgOCw5SDUuNVYxNUg3VjEzSDhBMS41LDEuNSAwIDAsMCA5LjUsMTEuNVYxMC41TTE0LjUsMTAuNUExLjUsMS41IDAgMCwwIDEzLDlIMTAuNVYxNUgxM0ExLjUsMS41IDAgMCwwIDE0LjUsMTMuNVYxMC41TTE4LjUsOUgxNS41VjE1SDE3VjEzSDE4LjVWMTEuNUgxN1YxMC41SDE4LjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZWFjZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTExLDE0LjQxVjE5LjkzQzkuNTgsMTkuNzUgOC4yMywxOS4xOSA3LjEsMTguMzFMMTEsMTQuNDFNMTMsMTQuNDFMMTYuOSwxOC4zMUMxNS43NywxOS4xOSAxNC40MiwxOS43NSAxMywxOS45M1YxNC40MU00LDEyQzQsNy45NyA3LDQuNTcgMTEsNC4wN1YxMS41OUw1LjY5LDE2LjlDNC41OSwxNS41IDQsMTMuNzggNCwxMk0xOC4zMSwxNi45TDEzLDExLjU5VjQuMDdDMTcsNC41NyAyMCw3Ljk3IDIwLDEyQzIwLDEzLjc4IDE5LjQxLDE1LjUgMTguMzEsMTYuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZWFudXQgPSBcIk0xNiAxMi43N0EyIDIgMCAwIDEgMTUuODYgMTAuMTJBNSA1IDAgMCAwIDEzLjA0IDIuMTJBNS43NCA1Ljc0IDAgMCAwIDEyIDJBNSA1IDAgMCAwIDcgN0E1IDUgMCAwIDAgOC4xMSAxMC4xMkEyIDIgMCAwIDEgOCAxMi43MkE1LjUgNS41IDAgMCAwIDEwLjgxIDIxLjg3QTUuNDIgNS40MiAwIDAgMCAxMiAyMkE1LjUgNS41IDAgMCAwIDE2IDEyLjc3TTEzIDVBMSAxIDAgMSAxIDEyIDZBMSAxIDAgMCAxIDEzIDVNMTEgMThBMSAxIDAgMSAxIDEyIDE3QTEgMSAwIDAgMSAxMSAxOE0xMiAxNUExIDEgMCAxIDEgMTMgMTZBMSAxIDAgMCAxIDEyIDE1TTE0IDE5QTEgMSAwIDEgMSAxNSAxOEExIDEgMCAwIDEgMTQgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVhbnV0T2ZmID0gXCJNMTUuOSAxMC4xMkE1IDUgMCAwIDAgMTMuMDggMi4xMkE1Ljc0IDUuNzQgMCAwIDAgMTIgMkE1IDUgMCAwIDAgNy42OCA0LjVMMTYuMzggMTMuMThBNC4zNSA0LjM1IDAgMCAwIDE2LjA0IDEyLjc3QTIgMiAwIDAgMSAxNS45IDEwLjEyTTEzIDdBMSAxIDAgMSAxIDE0IDZBMSAxIDAgMCAxIDEzIDdNNyA2LjM5TDIuMzkgMS43M0wxLjExIDNMNy44IDkuNjlDNy45IDkuODQgOCAxMCA4LjExIDEwLjEyQTIgMiAwIDAgMSA4IDEyLjcyQTUuNSA1LjUgMCAwIDAgMTAuODEgMjEuODdBNS40MiA1LjQyIDAgMCAwIDEyIDIyQTUuNSA1LjUgMCAwIDAgMTcgMTguODZMMjAuODcgMjIuNzNMMjIuMTQgMjEuNDZNMTEgMThBMSAxIDAgMSAxIDEyIDE3QTEgMSAwIDAgMSAxMSAxOE0xNCAxOUExIDEgMCAxIDEgMTUgMThBMSAxIDAgMCAxIDE0IDE5TTEzIDE2QTEgMSAwIDAgMSAxMiAxNUExIDEgMCAwIDEgMTIuMzUgMTQuMjRMMTMuNzYgMTUuNjVBMSAxIDAgMCAxIDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlYW51dE9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNy42OSAxOS41OEMxNy4zNiAyMC4yMSAxNi45MyAyMC43NyAxNi40MSAyMS4yNUMxNC44NiAyMi43MSAxMi42OSAyMy4zMSAxMC42MSAyMi44NUM3LjEgMjIuMSA0Ljg3IDE4LjY0IDUuNjIgMTUuMTNDNS44NyAxMy45NSA2LjQ1IDEyLjg3IDcuMjggMTJDNy42MiAxMS42NCA3LjYyIDExLjA4IDcuMjggMTAuNzJDNi42MyA5LjkxIDYuMjEgOC45NSA2LjA0IDcuOTNMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xNS4zIDE5LjU2QzE1LjY5IDE5LjEzIDE2IDE4LjYzIDE2LjE5IDE4LjA4TDEzLjc1IDE1LjY0QzEzLjU3IDE1Ljg3IDEzLjI5IDE2IDEzIDE2QzEyLjQ1IDE2IDEyIDE1LjU1IDEyIDE1QzEyIDE0LjcxIDEyLjEzIDE0LjQzIDEyLjM2IDE0LjI1TDkuNTUgMTEuNDRDOS41MyAxMi4xOCA5LjI0IDEyLjg4IDguNzMgMTMuNDFDNy4wMyAxNS4yMiA3LjEzIDE4LjA3IDguOTQgMTkuNzdMOC45NSAxOS43OEMxMC43NiAyMS40NyAxMy42MSAyMS4zNyAxNS4zIDE5LjU2TTE0IDE3QzEyLjcxIDE3IDEyLjcyIDE5IDE0IDE5QzE1LjI4IDE5IDE1LjI5IDE3IDE0IDE3TTYuOSAzLjdMOC40MyA1LjIzQzguNjggNC43MSA5LjA1IDQuMjUgOS41IDMuODlDMTAuMiAzLjMxIDExLjA5IDMgMTIgM0gxMi44OEMxMy40NyAzLjE0IDE0IDMuNDEgMTQuNSAzLjc5QzE2LjIyIDUuMTcgMTYuNSA3LjY5IDE1LjEyIDkuNDFDMTQuNyA5LjkzIDE0LjQ2IDEwLjU4IDE0LjQ1IDExLjI1TDE4LjMyIDE1LjEyQzE4LjA3IDEzLjk3IDE3LjUgMTIuOTIgMTYuNzIgMTIuMDZDMTYuMzcgMTEuNyAxNi4zMyAxMS4xMyAxNi42MiAxMC43MkMxNi42MiAxMC43MiAxOCA5IDE4IDdTMTUuOTcuOTk3IDEyIC45OTcgNi45IDMuNyA2LjkgMy43TTEyIDE3QzEyIDE1LjcxIDEwIDE1LjcyIDEwIDE3QzEwIDE4LjI4IDEyIDE4LjI5IDEyIDE3TTEzIDVDMTEuNzEgNSAxMS43MiA3IDEzIDdDMTQuMjggNyAxNC4yOSA1IDEzIDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVhbnV0T3V0bGluZSA9IFwiTTEyIDIzQzExLjUzIDIzIDExLjA3IDIyLjk1IDEwLjYxIDIyLjg1QzcuMSAyMi4xIDQuODcgMTguNjQgNS42MiAxNS4xM0M1Ljg3IDEzLjk1IDYuNDUgMTIuODcgNy4yOCAxMkM3LjYyIDExLjY0IDcuNjIgMTEuMDggNy4yOCAxMC43MkM1LjIgOC4xNCA1LjYgNC4zNiA4LjE4IDIuMjhTMTQuNTQuNjA3IDE2LjYyIDMuMTlDMTguMzkgNS4zOCAxOC4zOSA4LjUgMTYuNjIgMTAuNzJDMTYuMzMgMTEuMTMgMTYuMzcgMTEuNyAxNi43MiAxMi4wNkMxOS4xNyAxNC42OCAxOS4wNCAxOC44IDE2LjQxIDIxLjI1QzE1LjIyIDIyLjM3IDEzLjY0IDIzIDEyIDIzTTEyIDNDMTEuMDkgMyAxMC4yIDMuMzEgOS41IDMuODlDOC41NSA0LjY1IDggNS43OSA4IDdDOCA3LjkxIDguMzEgOC43OSA4Ljg4IDkuNUM5Ljg0IDEwLjY0IDkuNzcgMTIuMzMgOC43MyAxMy40MUM3LjAzIDE1LjIyIDcuMTMgMTguMDcgOC45NCAxOS43N1MxMy42IDIxLjM4IDE1LjMgMTkuNTZDMTYuOTIgMTcuODMgMTYuOTIgMTUuMTQgMTUuMyAxMy40MUMxNC4yMyAxMi4zMiAxNC4xNSAxMC42IDE1LjEyIDkuNDFDMTYuNSA3LjY5IDE2LjIyIDUuMTcgMTQuNSAzLjc5QzE0IDMuNDEgMTMuNDcgMy4xNCAxMi44OCAzQzEyLjU5IDMgMTIuMjkgMyAxMiAzTTEyIDZDMTIgNi41NSAxMi40NSA3IDEzIDdTMTQgNi41NSAxNCA2IDEzLjU1IDUgMTMgNSAxMiA1LjQ1IDEyIDZNMTQgMTlDMTQuNTUgMTkgMTUgMTguNTUgMTUgMThTMTQuNTUgMTcgMTQgMTcgMTMgMTcuNDUgMTMgMTggMTMuNDUgMTkgMTQgMTlNMTMgMTZDMTMuNTUgMTYgMTQgMTUuNTUgMTQgMTVTMTMuNTUgMTQgMTMgMTQgMTIgMTQuNDUgMTIgMTUgMTIuNDUgMTYgMTMgMTZNMTEgMThDMTEuNTUgMTggMTIgMTcuNTUgMTIgMTdTMTEuNTUgMTYgMTEgMTYgMTAgMTYuNDUgMTAgMTcgMTAuNDUgMTggMTEgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuID0gXCJNMjAuNzEsNy4wNEMyMC4zNyw3LjM4IDIwLjA0LDcuNzEgMjAuMDMsOC4wNEMyMCw4LjM2IDIwLjM0LDguNjkgMjAuNjYsOUMyMS4xNCw5LjUgMjEuNjEsOS45NSAyMS41OSwxMC40NEMyMS41NywxMC45MyAyMS4wNiwxMS40NCAyMC41NSwxMS45NEwxNi40MiwxNi4wOEwxNSwxNC42NkwxOS4yNSwxMC40MkwxOC4yOSw5LjQ2TDE2Ljg3LDEwLjg3TDEzLjEyLDcuMTJMMTYuOTYsMy4yOUMxNy4zNSwyLjkgMTgsMi45IDE4LjM3LDMuMjlMMjAuNzEsNS42M0MyMS4xLDYgMjEuMSw2LjY1IDIwLjcxLDcuMDRNMywxNy4yNUwxMi41Niw3LjY4TDE2LjMxLDExLjQzTDYuNzUsMjFIM1YxNy4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5Mb2NrID0gXCJNMjEuNyw3QzIxLjQsNy40IDIxLDcuNyAyMSw4QzIxLDguMyAyMS4zLDguNiAyMS42LDlDMjIuMSw5LjUgMjIuNiw5LjkgMjIuNSwxMC40QzIyLjUsMTAuOSAyMiwxMS40IDIxLjUsMTEuOUwxNy40LDE2TDE2LDE0LjdMMjAuMiwxMC41TDE5LjIsOS41TDE3LjgsMTAuOUwxNCw3LjFMMTgsMy4zQzE4LjQsMi45IDE5LDIuOSAxOS40LDMuM0wyMS43LDUuNkMyMi4xLDYgMjIuMSw2LjcgMjEuNyw3TTQsMTcuMkwxMy42LDcuNkwxNy4zLDExLjRMNy44LDIxSDRWMTcuMk04LDVWNC41QzgsMy4xIDYuOSwyIDUuNSwyQzQuMSwyIDMsMy4xIDMsNC41VjVDMi40LDUgMiw1LjQgMiw2VjEwQzIsMTAuNiAyLjQsMTEgMywxMUg4QzguNiwxMSA5LDEwLjYgOSwxMFY2QzksNS40IDguNiw1IDgsNU03LDVINFY0LjVDNCwzLjcgNC43LDMgNS41LDNDNi4zLDMgNywzLjcgNyw0LjVWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5NaW51cyA9IFwiTTIwLjcsN0MyMC40LDcuNCAyMCw3LjcgMjAsOEMyMCw4LjMgMjAuMyw4LjYgMjAuNiw5QzIxLjEsOS41IDIxLjYsOS45IDIxLjUsMTAuNEMyMS41LDEwLjkgMjEsMTEuNCAyMC41LDExLjlMMTYuNCwxNkwxNSwxNC43TDE5LjIsMTAuNUwxOC4yLDkuNUwxNi44LDEwLjlMMTMsNy4xTDE3LDMuM0MxNy40LDIuOSAxOCwyLjkgMTguNCwzLjNMMjAuNyw1LjZDMjEuMSw2IDIxLjEsNi43IDIwLjcsN00zLDE3LjJMMTIuNiw3LjZMMTYuMywxMS40TDYuOCwyMUgzVjE3LjJNMTAsNVY3SDJWNUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5PZmYgPSBcIk0yLjMsNUwxLDYuM0w3LjUsMTIuOEwzLDE3LjJWMjFINi44TDExLjMsMTYuNUwxNy44LDIzTDE5LjEsMjEuN0wyLjMsNU0xNi45LDEwLjlMMTMuMSw3LjFMMTcsMy4zQzE3LjQsMi45IDE4LDIuOSAxOC40LDMuM0wyMC43LDUuNkMyMS4xLDYgMjEuMSw2LjYgMjAuNyw3QzIwLjQsNy40IDIwLDcuNyAyMCw4QzIwLDguMyAyMC4zLDguNyAyMC42LDlDMjEuMSw5LjUgMjEuNiwxMCAyMS41LDEwLjRDMjEuNSwxMC45IDIxLDExLjQgMjAuNSwxMS45TDE2LjQsMTZMMTUsMTQuN0wxOS4yLDEwLjVMMTguMiw5LjVMMTYuOSwxMC45TTEwLDEwLjJMMTIuNSw3LjdMMTYuMywxMS41TDEzLjgsMTRMMTAsMTAuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5QbHVzID0gXCJNMjAuNyw3QzIwLjQsNy40IDIwLDcuNyAyMCw4QzIwLDguMyAyMC4zLDguNiAyMC42LDlDMjEuMSw5LjUgMjEuNiw5LjkgMjEuNSwxMC40QzIxLjUsMTAuOSAyMSwxMS40IDIwLjUsMTEuOUwxNi40LDE2TDE1LDE0LjdMMTkuMiwxMC41TDE4LjIsOS41TDE2LjgsMTAuOUwxMyw3LjFMMTcsMy4zQzE3LjQsMi45IDE4LDIuOSAxOC40LDMuM0wyMC43LDUuNkMyMS4xLDYgMjEuMSw2LjcgMjAuNyw3TTMsMTcuMkwxMi42LDcuNkwxNi4zLDExLjRMNi44LDIxSDNWMTcuMk03LDJWNUgxMFY3SDdWMTBINVY3SDJWNUg1VjJIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5SZW1vdmUgPSBcIk0yMC43LDdDMjAuNCw3LjQgMjAsNy43IDIwLDhDMjAsOC4zIDIwLjMsOC42IDIwLjYsOUMyMS4xLDkuNSAyMS42LDkuOSAyMS41LDEwLjRDMjEuNSwxMC45IDIxLDExLjQgMjAuNSwxMS45TDE2LjQsMTZMMTUsMTQuN0wxOS4yLDEwLjVMMTguMiw5LjVMMTYuOCwxMC45TDEzLDcuMUwxNywzLjNDMTcuNCwyLjkgMTgsMi45IDE4LjQsMy4zTDIwLjcsNS42QzIxLjEsNiAyMS4xLDYuNyAyMC43LDdNMywxNy4yTDEyLjYsNy42TDE2LjMsMTEuNEw2LjgsMjFIM1YxNy4yTTMuODgsMi40Nkw2LDQuNTlMOC4xMiwyLjQ2TDkuNTQsMy44OEw3LjQxLDZMOS41NCw4LjEyTDguMTIsOS41NEw2LDcuNDFMMy44OCw5LjU0TDIuNDYsOC4xMkw0LjU5LDZMMi40NiwzLjg4TDMuODgsMi40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWwgPSBcIk0yMC43MSw3LjA0QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M0wxOC4zNywzLjI5QzE4LDIuOSAxNy4zNSwyLjkgMTYuOTYsMy4yOUwxNS4xMiw1LjEyTDE4Ljg3LDguODdNMywxNy4yNVYyMUg2Ljc1TDE3LjgxLDkuOTNMMTQuMDYsNi4xOEwzLDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbEJveCA9IFwiTTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlDMjEsMjAuMTEgMjAuMSwyMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xNi43LDkuMzVDMTYuOTIsOS4xNCAxNi45Miw4Ljc5IDE2LjcsOC41OEwxNS40Miw3LjNDMTUuMjEsNy4wOCAxNC44Niw3LjA4IDE0LjY1LDcuM0wxMy42NSw4LjNMMTUuNywxMC4zNUwxNi43LDkuMzVNNywxNC45NFYxN0g5LjA2TDE1LjEyLDEwLjk0TDEzLjA2LDguODhMNywxNC45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxCb3hNdWx0aXBsZSA9IFwiTTIwLjIyIDJINy43OEM2LjggMiA2IDIuOCA2IDMuNzhWMTYuMjJDNiAxNy4yIDYuOCAxOCA3Ljc4IDE4SDIwLjIyQzIxLjIgMTggMjIgMTcuMjEgMjIgMTYuMjJWMy43OEMyMiAyLjggMjEuMiAyIDIwLjIyIDJNMTEuMDYgMTVIOVYxMi45NEwxNS4wNiA2Ljg4TDE3LjEyIDguOTRMMTEuMDYgMTVNMTguNyA3LjM1TDE3LjcgOC4zNUwxNS42NSA2LjNMMTYuNjUgNS4zQzE2Ljg2IDUuMDggMTcuMjEgNS4wOCAxNy40MiA1LjNMMTguNyA2LjU4QzE4LjkyIDYuNzkgMTguOTIgNy4xNCAxOC43IDcuMzVNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZNMTguNyA3LjM1TDE3LjcgOC4zNUwxNS42NSA2LjNMMTYuNjUgNS4zQzE2Ljg2IDUuMDggMTcuMjEgNS4wOCAxNy40MiA1LjNMMTguNyA2LjU4QzE4LjkyIDYuNzkgMTguOTIgNy4xNCAxOC43IDcuMzVNOSAxMi45NEwxNS4wNiA2Ljg4TDE3LjEyIDguOTRMMTEuMDYgMTVIOVYxMi45NE0yMCA0TDIwIDRMMjAgMTZMOCAxNkw4IDRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjEgNi45IDE4IDggMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbEJveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUMyMSwyMC4xMSAyMC4xLDIxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTE2LjcsOS4zNUwxNS43LDEwLjM1TDEzLjY1LDguM0wxNC42NSw3LjNDMTQuODYsNy4wOCAxNS4yMSw3LjA4IDE1LjQyLDcuM0wxNi43LDguNThDMTYuOTIsOC43OSAxNi45Miw5LjE0IDE2LjcsOS4zNU03LDE0Ljk0TDEzLjA2LDguODhMMTUuMTIsMTAuOTRMOS4wNiwxN0g3VjE0Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbENpcmNsZSA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkMxNy41MywyMiAyMiwxNy41MyAyMiwxMkMyMiw2LjQ3IDE3LjUzLDIgMTIsMk0xNS4xLDcuMDdDMTUuMjQsNy4wNyAxNS4zOCw3LjEyIDE1LjUsNy4yM0wxNi43Nyw4LjVDMTcsOC43MiAxNyw5LjA3IDE2Ljc3LDkuMjhMMTUuNzcsMTAuMjhMMTMuNzIsOC4yM0wxNC43Miw3LjIzQzE0LjgyLDcuMTIgMTQuOTYsNy4wNyAxNS4xLDcuMDdNMTMuMTMsOC44MUwxNS4xOSwxMC44N0w5LjEzLDE2LjkzSDcuMDdWMTQuODdMMTMuMTMsOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxDaXJjbGVPdXRsaW5lID0gXCJNNywxNC45NEwxMy4wNiw4Ljg4TDE1LjEyLDEwLjk0TDkuMDYsMTdIN1YxNC45NE0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwTTE2LjcsOS4zNUwxNS43LDEwLjM1TDEzLjY1LDguM0wxNC42NSw3LjNDMTQuODYsNy4wOCAxNS4yMSw3LjA4IDE1LjQyLDcuM0wxNi43LDguNThDMTYuOTIsOC43OSAxNi45Miw5LjE0IDE2LjcsOS4zNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbExvY2sgPSBcIk01LjUsMkEyLjUsMi41IDAgMCwwIDMsNC41VjVBMSwxIDAgMCwwIDIsNlYxMEExLDEgMCAwLDAgMywxMUg4QTEsMSAwIDAsMCA5LDEwVjZBMSwxIDAgMCwwIDgsNVY0LjVBMi41LDIuNSAwIDAsMCA1LjUsMk01LjUsM0ExLjUsMS41IDAgMCwxIDcsNC41VjVINFY0LjVBMS41LDEuNSAwIDAsMSA1LjUsM00xOS42NiwzQzE5LjQsMyAxOS4xNiwzLjA5IDE4Ljk3LDMuMjhMMTcuMTMsNS4xM0wyMC44OCw4Ljg4TDIyLjcyLDcuMDNDMjMuMTEsNi42NCAyMy4xMSw2IDIyLjcyLDUuNjNMMjAuMzgsMy4yOEMyMC4xOCwzLjA5IDE5LjkxLDMgMTkuNjYsM00xNi4wNiw2LjE5TDUsMTcuMjVWMjFIOC43NUwxOS44MSw5Ljk0TDE2LjA2LDYuMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsTG9ja091dGxpbmUgPSBcIk0xNi4xLDlMMTcsOS45TDcuOSwxOUg3VjE4LjFMMTYuMSw5TTE5LjcsM0MxOS41LDMgMTkuMiwzLjEgMTksMy4zTDE3LjIsNS4xTDIwLjksOC45TDIyLjcsN0MyMy4xLDYuNiAyMy4xLDYgMjIuNyw1LjZMMjAuNCwzLjNDMjAuMiwzLjEgMTkuOSwzIDE5LjcsM00xNi4xLDYuMkw1LDE3LjJWMjFIOC44TDE5LjgsOS45TDE2LjEsNi4yTTgsNVY0LjVDOCwzLjEgNi45LDIgNS41LDJDNC4xLDIgMywzLjEgMyw0LjVWNUMyLjQsNSAyLDUuNCAyLDZWMTBDMiwxMC42IDIuNCwxMSAzLDExSDhDOC42LDExIDksMTAuNiA5LDEwVjZDOSw1LjQgOC42LDUgOCw1TTcsNUg0VjQuNUM0LDMuNyA0LjcsMyA1LjUsM0M2LjMsMyA3LDMuNyA3LDQuNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE1pbnVzID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk0xMCw1VjdIMlY1SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE1pbnVzT3V0bGluZSA9IFwiTTE0LjEsOUwxNSw5LjlMNS45LDE5SDVWMTguMUwxNC4xLDlNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNMTAsNVY3SDJWNUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxPZmYgPSBcIk0xOC42NiwyQzE4LjQsMiAxOC4xNiwyLjA5IDE3Ljk3LDIuMjhMMTYuMTMsNC4xM0wxOS44OCw3Ljg4TDIxLjcyLDYuMDNDMjIuMTEsNS42NCAyMi4xMSw1IDIxLjcyLDQuNjNMMTkuMzgsMi4yOEMxOS4xOCwyLjA5IDE4LjkxLDIgMTguNjYsMk0zLjI4LDRMMiw1LjI4TDguNSwxMS43NUw0LDE2LjI1VjIwSDcuNzVMMTIuMjUsMTUuNUwxOC43MiwyMkwyMCwyMC43MkwxMy41LDE0LjI1TDkuNzUsMTAuNUwzLjI4LDRNMTUuMDYsNS4xOUwxMS4wMyw5LjIyTDE0Ljc4LDEyLjk3TDE4LjgxLDguOTRMMTUuMDYsNS4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxPZmZPdXRsaW5lID0gXCJNMTAsMTAuMkwxNCw2LjJMMTcuOCwxMEwxMy44LDE0TDEyLjQsMTIuNkwxNSw5LjlMMTQuMSw5TDExLjUsMTEuNkwxMCwxMC4yTTIwLjcsNS42TDE4LjQsMy4zQzE4LjIsMy4xIDE3LjksMyAxNy43LDNDMTcuNSwzIDE3LjIsMy4xIDE3LDMuM0wxNS4yLDUuMUwxOSw4LjlMMjAuNyw3QzIxLjEsNi43IDIxLjEsNiAyMC43LDUuNk0xOSwyMS43TDE3LjcsMjNMMTEuMiwxNi41TDYuOCwyMUgzVjE3LjJMNy41LDEyLjdMMSw2LjNMMi4zLDVMMTksMjEuN005LjgsMTUuMUw4LjksMTQuMkw1LDE4LjFWMTlINS45TDkuOCwxNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE91dGxpbmUgPSBcIk0xNC4wNiw5TDE1LDkuOTRMNS45MiwxOUg1VjE4LjA4TDE0LjA2LDlNMTcuNjYsM0MxNy40MSwzIDE3LjE1LDMuMSAxNi45NiwzLjI5TDE1LjEzLDUuMTJMMTguODgsOC44N0wyMC43MSw3LjA0QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M0wxOC4zNywzLjI5QzE4LjE3LDMuMDkgMTcuOTIsMyAxNy42NiwzTTE0LjA2LDYuMTlMMywxNy4yNVYyMUg2Ljc1TDE3LjgxLDkuOTRMMTQuMDYsNi4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxQbHVzID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk03LDJWNUgxMFY3SDdWMTBINVY3SDJWNUg1VjJIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxQbHVzT3V0bGluZSA9IFwiTTE0LjEsOUwxNSw5LjlMNS45LDE5SDVWMTguMUwxNC4xLDlNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNNywyVjVIMTBWN0g3VjEwSDVWN0gyVjVINVYySDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsUmVtb3ZlID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk0zLjksMi40TDYsNC41TDguMSwyLjRMOS41LDMuOEw3LjQsNS45TDkuNSw4TDguMSw5LjVMNiw3LjRMMy45LDkuNUwyLjUsOC4xTDQuNiw2TDIuNSwzLjhMMy45LDIuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxSZW1vdmVPdXRsaW5lID0gXCJNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNNS45LDE5SDVWMTguMUwxNC4xLDlMMTUsOS45TDUuOSwxOU0zLjksMi41TDYsNC42TDguMSwyLjVMOS41LDMuOUw3LjQsNkw5LjUsOC4xTDguMSw5LjVMNiw3LjRMMy45LDkuNUwyLjUsOC4xTDQuNiw2TDIuNSwzLjlMMy45LDIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxSdWxlciA9IFwiTTMgMTcuMjVWMjFINi43NUwxNy44MSA5LjkzTDE0LjA2IDYuMThMMyAxNy4yNU0yMi42MSAxOC4zNkwxOC4zNiAyMi42MUwxMy4xNiAxNy40MUwxNC45MyAxNS42NEwxNS45MyAxNi42NEwxOC40IDE0LjE2TDE5LjgyIDE1LjU4TDE4LjM2IDE3TDE5LjQyIDE4TDIwLjg0IDE2LjZMMjIuNjEgMTguMzZNNi42MSAxMC44M0wxLjM5IDUuNjRMNS42NCAxLjM5TDcuNCAzLjE2TDQuOTMgNS42NEw2IDYuN0w4LjQ2IDQuMjJMOS44OCA1LjY0TDguNDYgNy4wNUw5LjQ2IDguMDVMNi42MSAxMC44M00yMC43MSA3QzIxLjEgNi42MSAyMS4xIDYgMjAuNzEgNS41OUwxOC4zNyAzLjI5QzE4IDIuOSAxNy4zNSAyLjkgMTYuOTYgMy4yOUwxNS4xMiA1LjEyTDE4Ljg3IDguODdMMjAuNzEgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5ndWluID0gXCJNMTksMTZDMTksMTcuNzIgMTguMzcsMTkuMyAxNy4zNCwyMC41QzE3Ljc1LDIwLjg5IDE4LDIxLjQxIDE4LDIySDZDNiwyMS40MSA2LjI1LDIwLjg5IDYuNjYsMjAuNUM1LjYzLDE5LjMgNSwxNy43MiA1LDE2SDNDMywxNC43NSAzLjU3LDEzLjY0IDQuNDYsMTIuOTFMNC40NywxMi44OUM2LDExLjgxIDcsMTAgNyw4VjdBNSw1IDAgMCwxIDEyLDJBNSw1IDAgMCwxIDE3LDdWOEMxNywxMCAxOCwxMS44MSAxOS41MywxMi44OUwxOS41NCwxMi45MUMyMC40MywxMy42NCAyMSwxNC43NSAyMSwxNkgxOU0xNiwxNkE0LDQgMCAwLDAgMTIsMTJBNCw0IDAgMCwwIDgsMTZBNCw0IDAgMCwwIDEyLDIwQTQsNCAwIDAsMCAxNiwxNk0xMCw5TDEyLDEwLjVMMTQsOUwxMiw3LjVMMTAsOU0xMCw1QTEsMSAwIDAsMCA5LDZBMSwxIDAgMCwwIDEwLDdBMSwxIDAgMCwwIDExLDZBMSwxIDAgMCwwIDEwLDVNMTQsNUExLDEgMCAwLDAgMTMsNkExLDEgMCAwLDAgMTQsN0ExLDEgMCAwLDAgMTUsNkExLDEgMCAwLDAgMTQsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW50YWdvbiA9IFwiTTEyLDIuNUwyLDkuOEw1LjgsMjEuNUgxOC4yTDIyLDkuOEwxMiwyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVudGFnb25PdXRsaW5lID0gXCJNMTIsNUwxOS42LDEwLjVMMTYuNywxOS40SDcuM0w0LjQsMTAuNUwxMiw1TTEyLDIuNUwyLDkuOEw1LjgsMjEuNUgxOC4xTDIyLDkuOEwxMiwyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVudGFncmFtID0gXCJNMTYuMTUgMTQuNEwxOC43MSAyMi4yNkwxMiAxNy40TDUuMjggMjIuM0w3Ljg1IDE0LjM3TDEuMTUgOS41SDkuNDRMMTIgMS42MUwxNC41NiA5LjVIMjIuODlMMTYuMTUgMTQuNE0xMy4zIDE2LjQ3TDE1Ljg2IDE4LjMzTDE0Ljg4IDE1LjMyTDEzLjMgMTYuNDdNMTEgOS41SDEzTDEyIDYuNDdMMTEgOS41TTEwLjc0IDE2LjQ3TDkuMTMgMTUuM0w4LjEzIDE4LjM3TDEwLjc0IDE2LjQ3TTE4LjI4IDExSDE1LjA1TDE1LjY3IDEyLjlMMTguMjggMTFNMTAuNTMgMTFMOS42MiAxMy44TDEyIDE1LjU0TDE0LjM5IDEzLjgyTDEzLjQ3IDExSDEwLjUzTTUuNzYgMTFMOC4zNCAxMi44N0w4Ljk1IDExSDUuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVyY2VudCA9IFwiTTE4LjUsMy41TDMuNSwxOC41TDUuNSwyMC41TDIwLjUsNS41TTcsNEEzLDMgMCAwLDAgNCw3QTMsMyAwIDAsMCA3LDEwQTMsMyAwIDAsMCAxMCw3QTMsMyAwIDAsMCA3LDRNMTcsMTRBMywzIDAgMCwwIDE0LDE3QTMsMyAwIDAsMCAxNywyMEEzLDMgMCAwLDAgMjAsMTdBMywzIDAgMCwwIDE3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlcmNlbnRPdXRsaW5lID0gXCJNMTguNSAzLjVMMjAuNSA1LjVMNS41IDIwLjVMMy41IDE4LjVMMTguNSAzLjVNNyA0QzguNjYgNCAxMCA1LjM0IDEwIDdDMTAgOC42NiA4LjY2IDEwIDcgMTBDNS4zNCAxMCA0IDguNjYgNCA3QzQgNS4zNCA1LjM0IDQgNyA0TTE3IDE0QzE4LjY2IDE0IDIwIDE1LjM0IDIwIDE3QzIwIDE4LjY2IDE4LjY2IDIwIDE3IDIwQzE1LjM0IDIwIDE0IDE4LjY2IDE0IDE3QzE0IDE1LjM0IDE1LjM0IDE0IDE3IDE0TTcgNkM2LjQ1IDYgNiA2LjQ1IDYgN0M2IDcuNTUgNi40NSA4IDcgOEM3LjU1IDggOCA3LjU1IDggN0M4IDYuNDUgNy41NSA2IDcgNk0xNyAxNkMxNi40NSAxNiAxNiAxNi40NSAxNiAxN0MxNiAxNy41NSAxNi40NSAxOCAxNyAxOEMxNy41NSAxOCAxOCAxNy41NSAxOCAxN0MxOCAxNi40NSAxNy41NSAxNiAxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZXJpb2RpY1RhYmxlID0gXCJNMiw0VjZINFY0SDJNMjAsNFY2SDIyVjRIMjBNMiw3VjlINFY3SDJNNSw3VjlIN1Y3SDVNMTQsN1Y5SDE2VjdIMTRNMTcsN1Y5SDE5VjdIMTdNMjAsN1Y5SDIyVjdIMjBNMiwxMFYxMkg0VjEwSDJNNSwxMFYxMkg3VjEwSDVNOCwxMFYxMkgxMFYxMEg4TTExLDEwVjEySDEzVjEwSDExTTE0LDEwVjEySDE2VjEwSDE0TTE3LDEwVjEySDE5VjEwSDE3TTIwLDEwVjEySDIyVjEwSDIwTTIsMTNWMTVINFYxM0gyTTUsMTNWMTVIN1YxM0g1TTgsMTNWMTVIMTBWMTNIOE0xMSwxM1YxNUgxM1YxM0gxMU0xNCwxM1YxNUgxNlYxM0gxNE0xNywxM1YxNUgxOVYxM0gxN00yMCwxM1YxNUgyMlYxM0gyME01LDE3VjE5SDdWMTdINU04LDE3VjE5SDEwVjE3SDhNMTEsMTdWMTlIMTNWMTdIMTFNMTQsMTdWMTlIMTZWMTdIMTRNMTcsMTdWMTlIMTlWMTdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVyc3BlY3RpdmVMZXNzID0gXCJNMTYuNTYsMTJMMTkuMjMsMjBINC43OEw3LjQ0LDEySDE2LjU2TTcsMUwzLDVMNyw5VjZIMTFWNEg3VjFNMTcsMVY0SDEzVjZIMTdWOUwyMSw1TDE3LDFNMTgsMTBINkwyLDIySDIyTDE4LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlcnNwZWN0aXZlTW9yZSA9IFwiTTE2LjU2LDEyTDE5LjIzLDIwSDQuNzhMNy40NCwxMkgxNi41Nk0xNywxTDEzLDVMMTcsOVY2SDIxVjRIMTdWMU03LDFWNEgzVjZIN1Y5TDExLDVMNywxTTE4LDEwSDZMMiwyMkgyMkwxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaGFybWFjeSA9IFwiTTE2LDE0SDEzVjE3SDExVjE0SDhWMTJIMTFWOUgxM1YxMkgxNk0yMSw1SDE4LjM1TDE5LjUsMS44NUwxNy4xNSwxTDE1LjY5LDVIM1Y3TDUsMTNMMywxOVYyMUgyMVYxOUwxOSwxM0wyMSw3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmUgPSBcIk02LjYyLDEwLjc5QzguMDYsMTMuNjIgMTAuMzgsMTUuOTQgMTMuMjEsMTcuMzhMMTUuNDEsMTUuMThDMTUuNjksMTQuOSAxNi4wOCwxNC44MiAxNi40MywxNC45M0MxNy41NSwxNS4zIDE4Ljc1LDE1LjUgMjAsMTUuNUExLDEgMCAwLDEgMjEsMTYuNVYyMEExLDEgMCAwLDEgMjAsMjFBMTcsMTcgMCAwLDEgMyw0QTEsMSAwIDAsMSA0LDNINy41QTEsMSAwIDAsMSA4LjUsNEM4LjUsNS4yNSA4LjcsNi40NSA5LjA3LDcuNTdDOS4xOCw3LjkyIDkuMSw4LjMxIDguODIsOC41OUw2LjYyLDEwLjc5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQWxlcnQgPSBcIk02LjYyLDEwLjc5QzguMDYsMTMuNjIgMTAuMzgsMTUuOTQgMTMuMjEsMTcuMzhMMTUuNDEsMTUuMThDMTUuNjksMTQuOSAxNi4wOCwxNC44MiAxNi40MywxNC45M0MxNy41NSwxNS4zIDE4Ljc1LDE1LjUgMjAsMTUuNUExLDEgMCAwLDEgMjEsMTYuNVYyMEExLDEgMCAwLDEgMjAsMjFBMTcsMTcgMCAwLDEgMyw0QzMsMy40NCAzLjQ1LDMgNCwzSDcuNUExLDEgMCAwLDEgOC41LDRDOC41LDUuMjQgOC43LDYuNDUgOS4wNyw3LjU3QzkuMTgsNy45MiA5LjEsOC4zMSA4LjgyLDguNThMNi42MiwxMC43OU0xNywxMlYxMEgxOVYxMkgxN00xNyw4VjJIMTlWOEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUFsZXJ0T3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xNyAxMlYxMEgxOVYxMkgxN00xNyA4VjJIMTlWOEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUJsdWV0b290aCA9IFwiTTIwLDE1LjVDMTguNzUsMTUuNSAxNy41NSwxNS4zIDE2LjQzLDE0LjkzQzE2LjA4LDE0LjgyIDE1LjY5LDE0LjkgMTUuNDEsMTUuMThMMTMuMjEsMTcuMzhDMTAuMzgsMTUuOTQgOC4wNiwxMy42MiA2LjYyLDEwLjc5TDguODIsOC41OUM5LjEsOC4zMSA5LjE4LDcuOTIgOS4wNyw3LjU3QzguNyw2LjQ1IDguNSw1LjI1IDguNSw0QTEsMSAwIDAsMCA3LjUsM0g0QTEsMSAwIDAsMCAzLDRBMTcsMTcgMCAwLDAgMjAsMjFBMSwxIDAgMCwwIDIxLDIwVjE2LjVBMSwxIDAgMCwwIDIwLDE1LjVNMTgsNy4yMUwxOC45NCw4LjE0TDE4LDkuMDhNMTgsMi45MUwxOC45NCwzLjg1TDE4LDQuNzlNMTQuNzEsOS41TDE3LDcuMjFWMTFIMTcuNUwyMC4zNSw4LjE0TDE4LjIxLDZMMjAuMzUsMy44NUwxNy41LDFIMTdWNC43OUwxNC43MSwyLjVMMTQsMy4yMUwxNi43OSw2TDE0LDguNzlMMTQuNzEsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQmx1ZXRvb3RoT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xOCA3LjIxTDE4Ljk0IDguMTRMMTggOS4wOE0xOCAyLjkxTDE4Ljk0IDMuODVMMTggNC43OU0xNC43MSA5LjVMMTcgNy4yMVYxMUgxNy41TDIwLjM1IDguMTRMMTguMjEgNkwyMC4zNSAzLjg1TDE3LjUgMUgxN1Y0Ljc5TDE0LjcxIDIuNUwxNCAzLjIxTDE2Ljc5IDZMMTQgOC43OUwxNC43MSA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDYW5jZWwgPSBcIk02LjYyIDEwLjc5QzguMDYgMTMuNjIgMTAuMzggMTUuOTQgMTMuMjEgMTcuMzhMMTUuNDEgMTUuMThDMTUuNjkgMTQuOSAxNi4wOCAxNC44MiAxNi40MyAxNC45M0MxNy41NSAxNS4zIDE4Ljc1IDE1LjUgMjAgMTUuNUMyMC41NSAxNS41IDIxIDE1Ljk1IDIxIDE2LjVWMjBDMjEgMjAuNTUgMjAuNTUgMjEgMjAgMjFDMTAuNjEgMjEgMyAxMy4zOSAzIDRDMyAzLjQ1IDMuNDUgMyA0IDNINy41QzguMDUgMyA4LjUgMy40NSA4LjUgNEM4LjUgNS4yNSA4LjcgNi40NSA5LjA3IDcuNTdDOS4xOCA3LjkyIDkuMSA4LjMxIDguODIgOC41OUw2LjYyIDEwLjc5TTE2LjUgMkMxNCAyIDEyIDQgMTIgNi41UzE0IDExIDE2LjUgMTEgMjEgOSAyMSA2LjUgMTkgMiAxNi41IDJNMTYuNSA5LjVDMTQuODQgOS41IDEzLjUgOC4xNiAxMy41IDYuNUMxMy41IDUuOTQgMTMuNjUgNS40MiAxMy45MiA1TDE4IDkuMDhDMTcuNTggOS4zNSAxNy4wNiA5LjUgMTYuNSA5LjVNMTkuMDggOEwxNSAzLjkyQzE1LjQyIDMuNjUgMTUuOTQgMy41IDE2LjUgMy41QzE4LjE2IDMuNSAxOS41IDQuODQgMTkuNSA2LjVDMTkuNSA3LjA2IDE5LjM1IDcuNTggMTkuMDggOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUNhbmNlbE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTYuNSAyQzE0IDIgMTIgNCAxMiA2LjVTMTQgMTEgMTYuNSAxMSAyMSA5IDIxIDYuNSAxOSAyIDE2LjUgMk0xNi41IDkuNUMxNC44NCA5LjUgMTMuNSA4LjE2IDEzLjUgNi41QzEzLjUgNS45NCAxMy42NSA1LjQyIDEzLjkyIDVMMTggOS4wOEMxNy41OCA5LjM1IDE3LjA2IDkuNSAxNi41IDkuNU0xOS4wOCA4TDE1IDMuOTJDMTUuNDIgMy42NSAxNS45NCAzLjUgMTYuNSAzLjVDMTguMTYgMy41IDE5LjUgNC44NCAxOS41IDYuNUMxOS41IDcuMDYgMTkuMzUgNy41OCAxOS4wOCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQ2hlY2sgPSBcIk02LjYyIDEwLjc5QTE1LjEgMTUuMSAwIDAgMCAxMy4yMSAxNy4zOEwxNS40MSAxNS4xOEExIDEgMCAwIDEgMTYuNDEgMTQuOTNBMTEuMzYgMTEuMzYgMCAwIDAgMjAgMTUuNUExIDEgMCAwIDEgMjEgMTYuNVYyMEExIDEgMCAwIDEgMjAgMjFBMTcgMTcgMCAwIDEgMyA0QTEgMSAwIDAgMSA0IDNINy41QTEgMSAwIDAgMSA4LjUgNEExMS4zNiAxMS4zNiAwIDAgMCA5LjA3IDcuNTdBMSAxIDAgMCAxIDguODIgOC41N00yMS43MSA0LjcxTDIwLjI5IDMuMjlMMTUgOC41OUwxMi43MSA2LjI5TDExLjI5IDcuNzFMMTUgMTEuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDaGVja091dGxpbmUgPSBcIk0yMCAxNS41QTExLjM2IDExLjM2IDAgMCAxIDE2LjQzIDE0LjkzQTEgMSAwIDAgMCAxNS40MyAxNS4xOEwxMy4yMyAxNy4zOEExNS4xIDE1LjEgMCAwIDEgNi42NCAxMC43OUw4Ljg0IDguNTlBMSAxIDAgMCAwIDkuMDkgNy41OUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNEExIDEgMCAwIDAgNy41IDNINEExIDEgMCAwIDAgMyA0QTE3IDE3IDAgMCAwIDIwIDIxQTEgMSAwIDAgMCAyMSAyMFYxNi41QTEgMSAwIDAgMCAyMCAxNS41TTUgNUg2LjU0QTEyLjU0IDEyLjU0IDAgMCAwIDcgNy41OUw1Ljc5IDguOEExNSAxNSAwIDAgMSA1IDVNMTkgMTlBMTUgMTUgMCAwIDEgMTUuMiAxOC4yNEwxNi40MSAxN0ExMi4zMSAxMi4zMSAwIDAgMCAxOSAxNy40NU0xNSAxMS40NEwxMS4yOSA3Ljc0TDEyLjcxIDYuMzJMMTUgOC41OUwyMC4yOSAzLjI5TDIxLjcxIDQuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDbGFzc2ljID0gXCJNMTIsM0M3LjQ2LDMgMy4zNCw0Ljc4IDAuMjksNy42N0MwLjExLDcuODUgMCw4LjEgMCw4LjM4QzAsOC42NiAwLjExLDguOTEgMC4yOSw5LjA5TDIuNzcsMTEuNTdDMi45NSwxMS43NSAzLjIsMTEuODYgMy41LDExLjg2QzMuNzUsMTEuODYgNCwxMS43NSA0LjE4LDExLjU4QzQuOTcsMTAuODQgNS44NywxMC4yMiA2Ljg0LDkuNzNDNy4xNyw5LjU3IDcuNCw5LjIzIDcuNCw4LjgzVjUuNzNDOC44NSw1LjI1IDEwLjM5LDUgMTIsNUMxMy41OSw1IDE1LjE0LDUuMjUgMTYuNTksNS43MlY4LjgyQzE2LjU5LDkuMjEgMTYuODIsOS41NiAxNy4xNSw5LjcyQzE4LjEzLDEwLjIxIDE5LDEwLjg0IDE5LjgyLDExLjU3QzIwLDExLjc1IDIwLjI1LDExLjg1IDIwLjUsMTEuODVDMjAuOCwxMS44NSAyMS4wNSwxMS43NCAyMS4yMywxMS41NkwyMy43MSw5LjA4QzIzLjg5LDguOSAyNCw4LjY1IDI0LDguMzdDMjQsOC4wOSAyMy44OCw3Ljg1IDIzLjcsNy42N0MyMC42NSw0Ljc4IDE2LjUzLDMgMTIsM005LDdWMTBDOSwxMCAzLDE1IDMsMThWMjJIMjFWMThDMjEsMTUgMTUsMTAgMTUsMTBWN0gxM1Y5SDExVjdIOU0xMiwxMkE0LDQgMCAwLDEgMTYsMTZBNCw0IDAgMCwxIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMk0xMiwxMy41QTIuNSwyLjUgMCAwLDAgOS41LDE2QTIuNSwyLjUgMCAwLDAgMTIsMTguNUEyLjUsMi41IDAgMCwwIDE0LjUsMTZBMi41LDIuNSAwIDAsMCAxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQ2xhc3NpY09mZiA9IFwiTTEyIDNDMTYuNTMgMyAyMC42NSA0Ljc4IDIzLjcgNy42N0MyMy44OCA3Ljg1IDI0IDguMDkgMjQgOC4zN0MyNCA4LjY1IDIzLjg5IDguOSAyMy43MSA5LjA4TDIxLjIzIDExLjU2QzIxLjA1IDExLjc0IDIwLjggMTEuODUgMjAuNSAxMS44NUMyMC4yNSAxMS44NSAyMCAxMS43NSAxOS44MiAxMS41N0MxOSAxMC44NCAxOC4xMyAxMC4yMSAxNy4xNSA5LjcyQzE2LjgyIDkuNTYgMTYuNTkgOS4yMSAxNi41OSA4LjgyVjUuNzJDMTUuMTQgNS4yNSAxMy41OSA1IDEyIDVDMTAuNDQgNSA4LjkzIDUuMjQgNy41IDUuNjlMNS45NCA0LjExQzcuODIgMy40IDkuODYgMyAxMiAzTTkgN0gxMVY5SDEzVjdIMTVWMTBDMTUgMTAgMjEgMTUgMjEgMThWMTkuMThMOSA3LjE4VjdNMSA0LjI3TDIuMjggM0wyMS41IDIyLjIyTDIwLjIzIDIzLjVMMTguNzMgMjJIM1YxOEMzIDE1Ljg2IDYuMDUgMTIuNzEgNy44IDExLjA3TDYuNTkgOS44NkM1LjcxIDEwLjMzIDQuOSAxMC45IDQuMTggMTEuNThDNCAxMS43NSAzLjc1IDExLjg2IDMuNSAxMS44NkMzLjIgMTEuODYgMi45NSAxMS43NSAyLjc3IDExLjU3TC4yOSA5LjA5Qy4xMSA4LjkxIDAgOC42NiAwIDguMzhDMCA4LjEgLjExIDcuODUgLjI5IDcuNjdDLjk5NiA3IDIuNTggNS44NSAyLjU4IDUuODVMMSA0LjI3TTggMTZDOCAxOC4yMSA5Ljc5IDIwIDEyIDIwQzEzLjI5IDIwIDE0LjQ0IDE5LjM5IDE1LjE3IDE4LjQ0TDE0LjEgMTcuMzZDMTMuNjUgMTguMDUgMTIuODggMTguNSAxMiAxOC41QzEwLjYyIDE4LjUgOS41IDE3LjM4IDkuNSAxNkM5LjUgMTUuMTIgOS45NSAxNC4zNSAxMC42NCAxMy45MUw5LjU2IDEyLjgzQzguNjEgMTMuNTYgOCAxNC43MSA4IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRGlhbCA9IFwiTTYuNiAxMC44QzggMTMuNiAxMC40IDE1LjkgMTMuMiAxNy40TDE1LjQgMTUuMkMxNS43IDE0LjkgMTYuMSAxNC44IDE2LjQgMTVDMTcuNSAxNS40IDE4LjcgMTUuNiAyMCAxNS42QzIwLjYgMTUuNiAyMSAxNiAyMSAxNi42VjIwQzIxIDIwLjYgMjAuNiAyMSAyMCAyMUMxMC42IDIxIDMgMTMuNCAzIDRDMyAzLjQgMy41IDMgNCAzSDcuNUM4LjEgMyA4LjUgMy40IDguNSA0QzguNSA1LjIgOC43IDYuNCA5LjEgNy42QzkuMiA3LjkgOS4xIDguMyA4LjkgOC42TDYuNiAxMC44TTE0IDNDMTMuNCAzIDEzIDMuNCAxMyA0UzEzLjQgNSAxNCA1IDE1IDQuNiAxNSA0IDE0LjYgMyAxNCAzTTE3IDNDMTYuNCAzIDE2IDMuNCAxNiA0UzE2LjQgNSAxNyA1IDE4IDQuNiAxOCA0IDE3LjYgMyAxNyAzTTIwIDNDMTkuNCAzIDE5IDMuNCAxOSA0UzE5LjQgNSAyMCA1IDIxIDQuNiAyMSA0IDIwLjYgMyAyMCAzTTE0IDZDMTMuNCA2IDEzIDYuNCAxMyA3UzEzLjQgOCAxNCA4IDE1IDcuNiAxNSA3IDE0LjYgNiAxNCA2TTE3IDZDMTYuNCA2IDE2IDYuNCAxNiA3UzE2LjQgOCAxNyA4IDE4IDcuNiAxOCA3IDE3LjYgNiAxNyA2TTIwIDZDMTkuNCA2IDE5IDYuNCAxOSA3UzE5LjQgOCAyMCA4IDIxIDcuNiAyMSA3IDIwLjYgNiAyMCA2TTE0IDlDMTMuNCA5IDEzIDkuNCAxMyAxMFMxMy40IDExIDE0IDExIDE1IDEwLjYgMTUgMTAgMTQuNiA5IDE0IDlNMTcgOUMxNi40IDkgMTYgOS40IDE2IDEwUzE2LjQgMTEgMTcgMTEgMTggMTAuNiAxOCAxMCAxNy42IDkgMTcgOU0yMCA5QzE5LjQgOSAxOSA5LjQgMTkgMTBTMTkuNCAxMSAyMCAxMSAyMSAxMC42IDIxIDEwIDIwLjYgOSAyMCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRGlhbE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgNEMxNSA0LjYgMTQuNiA1IDE0IDVTMTMgNC42IDEzIDQgMTMuNCAzIDE0IDMgMTUgMy40IDE1IDRNMTggNEMxOCA0LjYgMTcuNiA1IDE3IDVTMTYgNC42IDE2IDQgMTYuNCAzIDE3IDMgMTggMy40IDE4IDRNMjEgNEMyMSA0LjYgMjAuNiA1IDIwIDVTMTkgNC42IDE5IDQgMTkuNCAzIDIwIDMgMjEgMy40IDIxIDRNMTUgN0MxNSA3LjYgMTQuNiA4IDE0IDhTMTMgNy42IDEzIDcgMTMuNCA2IDE0IDYgMTUgNi40IDE1IDdNMTggN0MxOCA3LjYgMTcuNiA4IDE3IDhTMTYgNy42IDE2IDcgMTYuNCA2IDE3IDYgMTggNi40IDE4IDdNMjEgN0MyMSA3LjYgMjAuNiA4IDIwIDhTMTkgNy42IDE5IDcgMTkuNCA2IDIwIDYgMjEgNi40IDIxIDdNMTUgMTBDMTUgMTAuNiAxNC42IDExIDE0IDExUzEzIDEwLjYgMTMgMTAgMTMuNCA5IDE0IDkgMTUgOS40IDE1IDEwTTE4IDEwQzE4IDEwLjYgMTcuNiAxMSAxNyAxMVMxNiAxMC42IDE2IDEwIDE2LjQgOSAxNyA5IDE4IDkuNCAxOCAxME0yMSAxMEMyMSAxMC42IDIwLjYgMTEgMjAgMTFTMTkgMTAuNiAxOSAxMCAxOS40IDkgMjAgOSAyMSA5LjQgMjEgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVGb3J3YXJkID0gXCJNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xOCwxMUwyMyw2TDE4LDFWNEgxNFY4SDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRm9yd2FyZE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTggMTFMMjMgNkwxOCAxVjRIMTRWOEgxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUhhbmd1cCA9IFwiTTEyLDlDMTAuNCw5IDguODUsOS4yNSA3LjQsOS43MlYxMi44MkM3LjQsMTMuMjIgNy4xNywxMy41NiA2Ljg0LDEzLjcyQzUuODYsMTQuMjEgNC45NywxNC44NCA0LjE3LDE1LjU3QzQsMTUuNzUgMy43NSwxNS44NiAzLjUsMTUuODZDMy4yLDE1Ljg2IDIuOTUsMTUuNzQgMi43NywxNS41NkwwLjI5LDEzLjA4QzAuMTEsMTIuOSAwLDEyLjY1IDAsMTIuMzhDMCwxMi4xIDAuMTEsMTEuODUgMC4yOSwxMS42N0MzLjM0LDguNzcgNy40Niw3IDEyLDdDMTYuNTQsNyAyMC42Niw4Ljc3IDIzLjcxLDExLjY3QzIzLjg5LDExLjg1IDI0LDEyLjEgMjQsMTIuMzhDMjQsMTIuNjUgMjMuODksMTIuOSAyMy43MSwxMy4wOEwyMS4yMywxNS41NkMyMS4wNSwxNS43NCAyMC44LDE1Ljg2IDIwLjUsMTUuODZDMjAuMjUsMTUuODYgMjAsMTUuNzUgMTkuODIsMTUuNTdDMTkuMDMsMTQuODQgMTguMTQsMTQuMjEgMTcuMTYsMTMuNzJDMTYuODMsMTMuNTYgMTYuNiwxMy4yMiAxNi42LDEyLjgyVjkuNzJDMTUuMTUsOS4yNSAxMy42LDkgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUhhbmd1cE91dGxpbmUgPSBcIk0yMy43MSAxMS42N0ExNyAxNyAwIDAgMCAuMjkgMTEuNjdBMSAxIDAgMCAwIDAgMTIuMzhBMSAxIDAgMCAwIC4yOSAxMy4wOEwyLjc3IDE1LjU2QTEgMSAwIDAgMCAzLjUgMTUuODVBMSAxIDAgMCAwIDQuMTggMTUuNTdBMTEuNSAxMS41IDAgMCAxIDYuODQgMTMuNzJBMSAxIDAgMCAwIDcuNCAxMi44MlY5LjcyQTE0LjkxIDE0LjkxIDAgMCAxIDEyIDlBMTQuNSAxNC41IDAgMCAxIDE2LjU5IDkuNzNWMTIuODNBMSAxIDAgMCAwIDE3LjE1IDEzLjczQTExLjI3IDExLjI3IDAgMCAxIDE5LjgyIDE1LjU4QTEgMSAwIDAgMCAyMC41IDE1Ljg2QTEgMSAwIDAgMCAyMS4yMyAxNS41N0wyMy43MSAxMy4wOUExIDEgMCAwIDAgMjMuNzEgMTEuNjdNNS40IDEyLjIyQTEzLjY4IDEzLjY4IDAgMCAwIDMuNTMgMTMuNUwyLjQ2IDEyLjQyQTE1LjU0IDE1LjU0IDAgMCAxIDUuNCAxMC41TTIwLjUgMTMuNUExMy43NSAxMy43NSAwIDAgMCAxOC42IDEyLjIzVjEwLjUzQTE0LjI2IDE0LjI2IDAgMCAxIDIxLjU1IDEyLjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lSW5UYWxrID0gXCJNMTUsMTJIMTdBNSw1IDAgMCwwIDEyLDdWOUEzLDMgMCAwLDEgMTUsMTJNMTksMTJIMjFDMjEsNyAxNi45NywzIDEyLDNWNUMxNS44Niw1IDE5LDguMTMgMTksMTJNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUluVGFsa091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgMTJIMTdBNSA1IDAgMCAwIDEyIDdWOUEzIDMgMCAwIDEgMTUgMTJNMTkgMTJIMjFDMjEgNyAxNi45NyAzIDEyIDNWNUMxNS44NiA1IDE5IDguMTMgMTkgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVJbmNvbWluZyA9IFwiTTQsM0ExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE3TDEzLjIxLDE3LjM3QzEwLjM4LDE1LjkzIDguMDYsMTMuNjIgNi42MiwxMC43OEw4LjgyLDguNTdDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINE0xOSwxMVY5LjVIMTUuNUwyMSw0TDIwLDNMMTQuNSw4LjVWNUgxM1YxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUluY29taW5nT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xOSAxMVY5LjVIMTUuNUwyMSA0TDIwIDNMMTQuNSA4LjVWNUgxM1YxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUxvY2sgPSBcIk0xOS4yLDRIMTUuOFYzLjVDMTUuOCwyLjU2IDE2LjU2LDEuOCAxNy41LDEuOEMxOC40NCwxLjggMTkuMiwyLjU2IDE5LjIsMy41TTIwLDRWMy41QTIuNSwyLjUgMCAwLDAgMTcuNSwxQTIuNSwyLjUgMCAwLDAgMTUsMy41VjRBMSwxIDAgMCwwIDE0LDVWOUExLDEgMCAwLDAgMTUsMTBIMjBBMSwxIDAgMCwwIDIxLDlWNUExLDEgMCAwLDAgMjAsNE0yMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEwLjM4LDE1Ljk0IDguMDYsMTMuNjIgNi42MiwxMC43OUw4LjgyLDguNTlDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINEExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lTG9ja091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTkuMiA0SDE1LjhWMy41QzE1LjggMi41NiAxNi41NiAxLjggMTcuNSAxLjhDMTguNDQgMS44IDE5LjIgMi41NiAxOS4yIDMuNU0yMCA0VjMuNUEyLjUgMi41IDAgMCAwIDE3LjUgMUEyLjUgMi41IDAgMCAwIDE1IDMuNVY0QTEgMSAwIDAgMCAxNCA1VjlBMSAxIDAgMCAwIDE1IDEwSDIwQTEgMSAwIDAgMCAyMSA5VjVBMSAxIDAgMCAwIDIwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVMb2cgPSBcIk0yMCwxNS41QTEsMSAwIDAsMSAyMSwxNi41VjIwQTEsMSAwIDAsMSAyMCwyMUExNywxNyAwIDAsMSAzLDRBMSwxIDAgMCwxIDQsM0g3LjVBMSwxIDAgMCwxIDguNSw0QzguNSw1LjI0IDguNyw2LjQ1IDkuMDcsNy41N0M5LjE4LDcuOTIgOS4xLDguMzEgOC44Miw4LjU4TDYuNjIsMTAuNzlDOC4wNiwxMy42MiAxMC4zOCwxNS45NCAxMy4yMSwxNy4zOEwxNS40MSwxNS4xOEMxNS42OSwxNC45IDE2LjA4LDE0LjgyIDE2LjQzLDE0LjkzQzE3LjU1LDE1LjMgMTguNzUsMTUuNSAyMCwxNS41TTEyLDNIMTRWNUgxMk0xNSwzSDIxVjVIMTVNMTIsNkgxNFY4SDEyTTE1LDZIMjFWOEgxNU0xMiw5SDE0VjExSDEyTTE1LDlIMjFWMTFIMTVcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUxvZ091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTIgM0gxNFY1SDEyTTE1IDNIMjFWNUgxNU0xMiA2SDE0VjhIMTJNMTUgNkgyMVY4SDE1TTEyIDlIMTRWMTFIMTJNMTUgOUgyMVYxMUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1lc3NhZ2UgPSBcIk0yMCAxNS41QzE4Ljc1IDE1LjUgMTcuNTUgMTUuMyAxNi40MyAxNC45M0MxNi4wOCAxNC44MiAxNS42OSAxNC45IDE1LjQxIDE1LjE3TDEzLjIxIDE3LjM3QzEwLjM4IDE1LjkzIDguMDYgMTMuNjIgNi42MiAxMC43OUw4LjgyIDguNThDOS4xIDguMzEgOS4xOCA3LjkyIDkuMDcgNy41N0M4LjcgNi40NSA4LjUgNS4yNSA4LjUgNEM4LjUgMy40NSA4LjA1IDMgNy41IDNINEMzLjQ1IDMgMyAzLjQ1IDMgNEMzIDEzLjM5IDEwLjYxIDIxIDIwIDIxQzIwLjU1IDIxIDIxIDIwLjU1IDIxIDIwVjE2LjVDMjEgMTUuOTUgMjAuNTUgMTUuNSAyMCAxNS41TTEyIDNWMTNMMTUgMTBIMjFWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1lc3NhZ2VPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC43NSAxNS41IDE3LjU1IDE1LjMgMTYuNDMgMTQuOTNDMTYuMzMgMTQuOSAxNi4yMiAxNC44OCAxNi4xMiAxNC44OEMxNS44NiAxNC44OCAxNS42MSAxNSAxNS40MSAxNS4xN0wxMy4yMSAxNy4zN0MxMC4zOCAxNS45MyA4LjA2IDEzLjYyIDYuNjIgMTAuNzlMOC44MiA4LjU4QzkuMSA4LjMxIDkuMTggNy45MiA5LjA3IDcuNTdDOC43IDYuNDUgOC41IDUuMjUgOC41IDRDOC41IDMuNDUgOC4wNSAzIDcuNSAzSDRDMy40NSAzIDMgMy40NSAzIDRDMyAxMy4zOSAxMC42MSAyMSAyMCAyMUMyMC41NSAyMSAyMSAyMC41NSAyMSAyMFYxNi41QzIxIDE1Ljk1IDIwLjU1IDE1LjUgMjAgMTUuNU01LjAzIDVINi41M0M2LjYgNS44OCA2Ljc1IDYuNzUgNyA3LjU5TDUuNzkgOC44QzUuMzggNy41OSA1LjEyIDYuMzIgNS4wMyA1TTE5IDE4Ljk3QzE3LjY4IDE4Ljg4IDE2LjQgMTguNjIgMTUuMiAxOC4yMUwxNi40IDE3QzE3LjI1IDE3LjI1IDE4LjEyIDE3LjQgMTkgMTcuNDZWMTguOTdNMTIgM1YxM0wxNSAxMEgyMVYzSDEyTTE5IDhIMTRWNUgxOVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lTWludXMgPSBcIk00LDNBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNUMxOC43NiwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA3LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU4QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjQgOC41LDRBMSwxIDAgMCwwIDcuNSwzTTEzLDZWOEgyMVY2XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVNaW51c091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTMgNlY4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVNaXNzZWQgPSBcIk0yMy43MSwxNi42N0MyMC42NiwxMy43NyAxNi41NCwxMiAxMiwxMkM3LjQ2LDEyIDMuMzQsMTMuNzcgMC4yOSwxNi42N0MwLjExLDE2Ljg1IDAsMTcuMSAwLDE3LjM4QzAsMTcuNjUgMC4xMSwxNy45IDAuMjksMTguMDhMMi43NywyMC41NkMyLjk1LDIwLjc0IDMuMiwyMC44NiAzLjUsMjAuODZDMy43NSwyMC44NiA0LDIwLjc1IDQuMTgsMjAuNTdDNC45NywxOS44MyA1Ljg2LDE5LjIxIDYuODQsMTguNzJDNy4xNywxOC41NiA3LjQsMTguMjIgNy40LDE3LjgyVjE0LjcyQzguODUsMTQuMjUgMTAuMzksMTQgMTIsMTRDMTMuNiwxNCAxNS4xNSwxNC4yNSAxNi42LDE0LjcyVjE3LjgyQzE2LjYsMTguMjIgMTYuODMsMTguNTYgMTcuMTYsMTguNzJDMTguMTQsMTkuMjEgMTkuMDMsMTkuODMgMTkuODIsMjAuNTdDMjAsMjAuNzUgMjAuMjUsMjAuODYgMjAuNSwyMC44NkMyMC44LDIwLjg2IDIxLjA1LDIwLjc0IDIxLjIzLDIwLjU2TDIzLjcxLDE4LjA4QzIzLjg5LDE3LjkgMjQsMTcuNjUgMjQsMTcuMzhDMjQsMTcuMSAyMy44OSwxNi44NSAyMy43MSwxNi42N002LjUsNS41TDEyLDExTDE5LDRMMTgsM0wxMiw5TDcuNSw0LjVIMTFWM0g1VjlINi41VjUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1pc3NlZE91dGxpbmUgPSBcIk0xOC42IDE1LjV2MS44Yy43LjQgMS4zLjggMS45IDEuM2wxLjEtMS4xYy0uOS0uOS0xLjktMS41LTMtMm0tMTMuMiAwYy0xIC41LTIgMS4xLTIuOSAxLjlsMS4xIDEuMWMuNi0uNSAxLjItLjkgMS45LTEuM3YtMS43TTEyIDEyYzQuNSAwIDguNyAxLjcgMTEuNyA0LjcuMi4yLjMuNC4zLjcgMCAuMy0uMS41LS4zLjdsLTIuNSAyLjVjLS4yLjItLjQuMy0uNy4zLS4yIDAtLjUtLjEtLjctLjMtLjgtLjctMS43LTEuNC0yLjctMS44LS4zLS4yLS42LS41LS42LS45di0zLjFjLTEuNS0uNS0zLS43LTQuNi0uNy0xLjYgMC0zLjEuMi00LjYuN3YzLjFjMCAuNC0uMi43LS42LjktMSAuNS0xLjkgMS4xLTIuNyAxLjgtLjIuMi0uNC4zLS43LjMtLjMgMC0uNS0uMS0uNy0uM0wuMSAxOC4xYzAtLjItLjEtLjUtLjEtLjcgMC0uMy4xLS41LjMtLjdDMy4zIDEzLjggNy41IDEyIDEyIDEyek02LjUgNS41VjlINVYzaDZ2MS41SDcuNUwxMiA5bDYtNiAxIDEtNyA3LTUuNS01LjV6XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPZmYgPSBcIk0yMC4yMiwyLjVMMi41LDIwLjIyTDMuNzcsMjEuNUw4LjY1LDE2LjYyQzExLjc2LDE5LjQzIDE1LjgxLDIxIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEyLjA2LDE2LjggMTEsMTYuMDYgMTAuMDYsMTUuMjFMMjEuNSwzLjc3TDIwLjIyLDIuNU00LDNBMSwxIDAgMCwwIDMsNEMzLDcuNTcgNC4xNCwxMS4wNSA2LjI0LDEzLjk0TDcuNjYsMTIuNUM3LjI4LDExLjk3IDYuOTMsMTEuMzkgNi42MiwxMC43OUw4LjgyLDguNTlDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU9mZk91dGxpbmUgPSBcIk0xNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNVYxOUMxNy43IDE4LjkgMTYuNCAxOC43IDE1LjIgMTguMkwxNi40IDE3TTIwLjIgMi41TDIuNSAyMC4yTDMuOCAyMS41TDguNyAxNi42QzExLjggMTkuNCAxNS44IDIxIDIwIDIxQzIwLjYgMjEgMjEgMjAuNiAyMSAyMFYxNi41QzIxIDE1LjkgMjAuNiAxNS41IDIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEyLjEgMTYuOCAxMSAxNi4xIDEwLjEgMTUuMkwyMS41IDMuOEwyMC4yIDIuNU02LjUgNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1SDYuNU03LjUgM0g0QzMuNCAzIDMgMy40IDMgNEMzIDcuNiA0LjEgMTEgNi4yIDEzLjlMNy42IDEyLjVDNy4yIDEyIDYuOSAxMS40IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjQgOC41IDUuMiA4LjUgNEM4LjUgMy40IDguMSAzIDcuNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lT3V0Z29pbmcgPSBcIk00LDNBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xN0wxMy4yMSwxNy4zN0MxMC4zOCwxNS45MyA4LjA2LDEzLjYyIDYuNjIsMTAuNzhMOC44Miw4LjU3QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRNMTUsM1Y0LjVIMTguNUwxMywxMEwxNCwxMUwxOS41LDUuNVY5SDIxVjNIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPdXRnb2luZ091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgM1Y0LjVIMTguNUwxMyAxMEwxNCAxMUwxOS41IDUuNVY5SDIxVjNIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPdXRsaW5lID0gXCJNMjAsMTUuNUMxOC44LDE1LjUgMTcuNSwxNS4zIDE2LjQsMTQuOUMxNi4zLDE0LjkgMTYuMiwxNC45IDE2LjEsMTQuOUMxNS44LDE0LjkgMTUuNiwxNSAxNS40LDE1LjJMMTMuMiwxNy40QzEwLjQsMTUuOSA4LDEzLjYgNi42LDEwLjhMOC44LDguNkM5LjEsOC4zIDkuMiw3LjkgOSw3LjZDOC43LDYuNSA4LjUsNS4yIDguNSw0QzguNSwzLjUgOCwzIDcuNSwzSDRDMy41LDMgMywzLjUgMyw0QzMsMTMuNCAxMC42LDIxIDIwLDIxQzIwLjUsMjEgMjEsMjAuNSAyMSwyMFYxNi41QzIxLDE2IDIwLjUsMTUuNSAyMCwxNS41TTUsNUg2LjVDNi42LDUuOSA2LjgsNi44IDcsNy42TDUuOCw4LjhDNS40LDcuNiA1LjEsNi4zIDUsNU0xOSwxOUMxNy43LDE4LjkgMTYuNCwxOC42IDE1LjIsMTguMkwxNi40LDE3QzE3LjIsMTcuMiAxOC4xLDE3LjQgMTksMTcuNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVBhdXNlZCA9IFwiTTE5LDEwSDIxVjNIMTlNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xNywzSDE1VjEwSDE3VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVQYXVzZWRPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE5IDEwSDIxVjNIMTlNMTcgM0gxNVYxMEgxN1YzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUGx1cyA9IFwiTTQsM0ExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc2LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEwLjM4LDE1Ljk0IDguMDcsMTMuNjIgNi42MiwxMC43OUw4LjgyLDguNThDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNCA4LjUsNEExLDEgMCAwLDAgNy41LDNNMTYsM1Y2SDEzVjhIMTZWMTFIMThWOEgyMVY2SDE4VjNcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVBsdXNPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE2IDNWNkgxM1Y4SDE2VjExSDE4VjhIMjFWNkgxOFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUmVtb3ZlID0gXCJNNCAzQzMuNCAzIDMgMy40IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC42IDIxIDIxIDIwLjYgMjEgMjBWMTYuNUMyMSAxNS45IDIwLjYgMTUuNSAyMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45QzE2IDE0LjggMTUuNyAxNC45IDE1LjQgMTUuMUwxMy4yIDE3LjNDMTAuNCAxNS45IDguMSAxMy41IDYuNiAxMC43TDguOCA4LjVDOS4xIDguMiA5LjIgNy44IDkgNy41QzguNyA2LjQgOC41IDUuMiA4LjUgNEM4LjUgMy40IDguMSAzIDcuNSAzTTE5LjEgMy41TDE3IDUuNkwxNC45IDMuNUwxMy41IDQuOUwxNS42IDdMMTMuNSA5LjFMMTQuOSAxMC41TDE3IDguNEwxOS4xIDEwLjVMMjAuNSA5LjFMMTguNCA3TDIwLjUgNC45XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSZW1vdmVPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE5LjEgMy41TDE3IDUuNkwxNC45IDMuNUwxMy41IDQuOUwxNS42IDdMMTMuNSA5LjFMMTQuOSAxMC41TDE3IDguNEwxOS4xIDEwLjVMMjAuNSA5LjFMMTguNCA3TDIwLjUgNC45TDE5LjEgMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUmV0dXJuID0gXCJNMjEsNlYxMUgxOS41VjcuNUgxMy44N0wxNi4zLDkuOTNMMTUuMjQsMTFMMTEsNi43NUwxNS4yNCwyLjVMMTYuMywzLjU3TDEzLjg3LDZIMjFNOC44Miw4LjU4QzkuMDgsOC4zMiA5LjE3LDcuOTMgOS4wNiw3LjU4QzguNjksNi40MiA4LjUsNS4yMiA4LjUsNEExLDEgMCAwLDAgNy41LDNINEExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc5LDE1LjUgMTcuNTgsMTUuMzEgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOTEgMTUuNDMsMTUuMTdMMTMuMjMsMTcuMzdDMTAuMzksMTUuOTIgOC4wOSwxMy42MiA2LjY0LDEwLjc4TDguODIsOC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVJldHVybk91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMjEgNlYxMUgxOS41VjcuNUgxMy44N0wxNi4zIDkuOTNMMTUuMjQgMTFMMTEgNi43NUwxNS4yNCAyLjVMMTYuMyAzLjU3TDEzLjg3IDZIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSaW5nID0gXCJNMjMuNzEgMTYuNjdDMjAuNjYgMTMuNzggMTYuNTQgMTIgMTIgMTJTMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6TTIxLjE2IDYuMjZsLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTEzIDJoLTJ2NWgyVjJ6TTYuNCA5LjgxTDcuODEgOC40IDQuMjYgNC44NCAyLjg0IDYuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSaW5nT3V0bGluZSA9IFwiTTIzLjcxIDE2LjY3QzIwLjY2IDEzLjc4IDE2LjU0IDEyIDEyIDEyUzMuMzQgMTMuNzguMjkgMTYuNjdjLS4xOC4xOC0uMjkuNDMtLjI5LjcxIDAgLjI4LjExLjUzLjI5LjcxbDIuNDggMi40OGMuMTguMTguNDMuMjkuNzEuMjkuMjcgMCAuNTItLjExLjctLjI4Ljc5LS43NCAxLjY5LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNS41Ni0uOXYtMy4xYzEuNDUtLjQ4IDMtLjczIDQuNi0uNzNzMy4xNS4yNSA0LjYuNzJ2My4xYzAgLjM5LjIzLjc0LjU2LjkuOTguNDkgMS44NyAxLjEyIDIuNjYgMS44NS4xOC4xOC40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MWEuOTkuOTkgMCAwIDAtLjI5LS43em0tMTguMzEuNTZjLS42Ni4zNy0xLjI5LjgtMS44NyAxLjI3bC0xLjA3LTEuMDdjLjkxLS43NSAxLjktMS4zOSAyLjk1LTEuOXYxLjdINS40em0xNS4wNyAxLjI2Yy0uNTktLjQ4LTEuMjEtLjktMS44Ny0xLjI3di0xLjdjMS4wNC41MSAyLjAzIDEuMTUgMi45NCAxLjlsLTEuMDcgMS4wN3ptLjY5LTEyLjIzbC0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAyaDJ2NWgtMlYyek02LjQgOS44MUw3LjgxIDguNCA0LjI2IDQuODQgMi44NCA2LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1elwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUm90YXRlTGFuZHNjYXBlID0gXCJNOSwxSDNBMiwyIDAgMCwwIDEsM1YxNkEyLDIgMCAwLDAgMywxOEg5QTIsMiAwIDAsMCAxMSwxNlYzQTIsMiAwIDAsMCA5LDFNOSwxNUgzVjNIOVYxNU0yMSwxM0gxM1YxNUgyMVYyMUg5VjIwSDZWMjFBMiwyIDAgMCwwIDgsMjNIMjFBMiwyIDAgMCwwIDIzLDIxVjE1QTIsMiAwIDAsMCAyMSwxM00yMywxMEwxOSw4TDIwLjkxLDcuMDlDMTkuNzQsNC4zMSAxNywyLjUgMTQsMi41VjFBOSw5IDAgMCwxIDIzLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUm90YXRlUG9ydHJhaXQgPSBcIk05LDFIM0EyLDIgMCAwLDAgMSwzVjE2QTIsMiAwIDAsMCAzLDE4SDRWMTVIM1YzSDlWMTFIMTFWM0EyLDIgMCAwLDAgOSwxTTIzLDIxVjE1QTIsMiAwIDAsMCAyMSwxM0g4QTIsMiAwIDAsMCA2LDE1VjIxQTIsMiAwIDAsMCA4LDIzSDIxQTIsMiAwIDAsMCAyMywyMU05LDIxVjE1SDIxVjIxSDlNMjMsMTBIMjEuNUMyMS41LDcgMTkuNjksNC4yNyAxNi45MiwzLjA5TDE2LDVMMTQsMUE5LDkgMCAwLDEgMjMsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVTZXR0aW5ncyA9IFwiTTE5LDExSDIxVjlIMTlNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xNyw5SDE1VjExSDE3TTEzLDlIMTFWMTFIMTNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVNldHRpbmdzT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xNyA5SDE1VjExSDE3TTEzIDlIMTFWMTFIMTNWOU0xOSAxMUgyMVY5SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lVm9pcCA9IFwiTTEzLDE3VjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0gxM00yMy43LDcuNjdDMjMuODgsNy44NSAyNCw4LjA5IDI0LDguMzdDMjQsOC42NSAyMy44OSw4LjkgMjMuNzEsOS4wOEwyMS4yMywxMS41NkMyMS4wNSwxMS43NCAyMC44LDExLjg1IDIwLjUsMTEuODVDMjAuMjUsMTEuODUgMjAsMTEuNzUgMTkuODIsMTEuNTdDMTksMTAuODQgMTguMTMsMTAuMjEgMTcuMTUsOS43MkMxNi44Miw5LjU2IDE2LjU5LDkuMjEgMTYuNTksOC44MlY1LjcyQzE1LjE0LDUuMjUgMTMuNTksNSAxMiw1QzEwLjQsNSA4Ljg1LDUuMjUgNy40LDUuNzNWOC44M0M3LjQsOS4yMyA3LjE3LDkuNTcgNi44NCw5LjczQzUuODcsMTAuMjIgNC45NywxMC44NCA0LjE4LDExLjU4QzQsMTEuNzUgMy43NSwxMS44NiAzLjUsMTEuODZDMy4yLDExLjg2IDIuOTUsMTEuNzUgMi43NywxMS41N0wwLjI5LDkuMDlDMC4xMSw4LjkxIDAsOC42NiAwLDguMzhDMCw4LjEgMC4xMSw3Ljg1IDAuMjksNy42N0MzLjM0LDQuNzggNy40NiwzIDEyLDNDMTYuNTMsMyAyMC42NSw0Ljc4IDIzLjcsNy42N00xMSwxMFYxNUgxMFYxMEgxMU0xMiwxMEgxNVYxM0gxM1YxNUgxMlYxME0xNCwxMlYxMUgxM1YxMkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaSA9IFwiTTQsNVY3SDZWMTlIOFY3SDE0VjE2QTMsMyAwIDAsMCAxNywxOUEzLDMgMCAwLDAgMjAsMTZIMThBMSwxIDAgMCwxIDE3LDE3QTEsMSAwIDAsMSAxNiwxNlY3SDE4VjVcIjtcclxuZXhwb3J0IHZhciBtZGlQaUJveCA9IFwiTTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTYsN0gxN1Y5SDE1VjE0QTEsMSAwIDAsMCAxNiwxNUExLDEgMCAwLDAgMTcsMTRIMTlBMywzIDAgMCwxIDE2LDE3QTMsMyAwIDAsMSAxMywxNFY5SDEwVjE3SDhWOUg2XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlIb2xlID0gXCJNNS42MiwyQzkuNSwyIDExLjU3LDQuMjkgMTEuNzcsNy45M0MxMi41LDMuNTcgMTUuOTMsNC4wOCAxNS45Myw0LjA4QzE2LjEsNi41NSAxNC4wNyw4LjA1IDExLjc3LDguMTdDMTEuMTIsNi44MSA3LjI1LDMuNDcgNy4yNSwzLjQ3QzcuMjMsMy41IDEwLjk3LDYuNzQgMTAuODMsOC4xNUM4LjMzLDcuODggNS44Miw2IDUuNjIsMk02LjA2LDEzLjExTDkuOTIsOS4yNUMxMS4wOSw4LjA4IDEzLDguMDggMTQuMTYsOS4yNUwxOCwxMy4xMUMxOS4xOSwxNC4yOCAxOS4xOSwxNi4xOCAxOCwxNy4zNUwxNC4xNiwyMS4yMUMxMywyMi4zOCAxMS4wOSwyMi4zOCA5LjkyLDIxLjIxTDYuMDYsMTcuMzVDNC44OSwxNi4xOCA0Ljg5LDE0LjI4IDYuMDYsMTMuMTFNOS4zOSwxOS41OUM5LjM5LDE4LjM2IDEwLjE1LDE2Ljg1IDEyLjA5LDE2Ljg1QzEzLjQsMTYuODUgMTQuODcsMTguMSAxNi4zMSwxNy45NkMxNC44NywxNy45MiAxMy41OSwxNi44NSAxMy41OSwxNS4xOUMxMy41OSwxMy44NiAxNC42OSwxMi45IDE0LjY5LDExLjM0QzE0LjYzLDEyLjMzIDEzLjgyLDEzLjc3IDEyLDEzLjc3QzEwLjU5LDEzLjc3IDkuNTUsMTIuNjMgNy44NywxMi42M0M4LjU4LDEyLjY3IDEwLjUsMTMuMyAxMC41LDE1LjM1QzEwLjUsMTcgOS4zOSwxNy41IDkuMzksMTkuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlhbm8gPSBcIk00LDNIMjBBMiwyIDAgMCwxIDIyLDVWMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlWNUEyLDIgMCAwLDEgNCwzTTQsNVYxOUg4VjEzSDYuNzVWNUg0TTksMTlIMTVWMTNIMTMuNzVWNUgxMC4yNVYxM0g5VjE5TTE2LDE5SDIwVjVIMTcuMjVWMTNIMTZWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlja2F4ZSA9IFwiTTE0Ljc5LDEwLjYyTDMuNSwyMS45TDIuMSwyMC41TDEzLjM4LDkuMjFMMTQuNzksMTAuNjJNMTkuMjcsNy43M0wxOS44Niw3LjE0TDE5LjA3LDYuMzVMMTkuNzEsNS43MUwxOC4yOSw0LjI5TDE3LjY1LDQuOTNMMTYuODYsNC4xNEwxNi4yNyw0LjczQzE0LjUzLDMuMzEgMTIuNTcsMi4xNyAxMC40NywxLjM3TDkuNjQsMy4xNkMxMS4zOSw0LjA4IDEzLDUuMTkgMTQuNSw2LjVMMTQsN0wxNywxMEwxNy41LDkuNUMxOC44MSwxMSAxOS45MiwxMi42MSAyMC44NCwxNC4zNkwyMi42MywxMy41M0MyMS44MywxMS40MyAyMC42OSw5LjQ3IDE5LjI3LDcuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGljdHVyZUluUGljdHVyZUJvdHRvbVJpZ2h0ID0gXCJNMTksMTFIMTFWMTdIMTlWMTFNMjMsMTlWNUMyMywzLjg4IDIyLjEsMyAyMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlNMjEsMTlIM1Y0Ljk3SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpY3R1cmVJblBpY3R1cmVCb3R0b21SaWdodE91dGxpbmUgPSBcIk0xOSwxMUgxMVYxN0gxOVYxMU0xNywxNUgxM1YxM0gxN1YxNU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlWNUMyMywzLjg4IDIyLjEsMyAyMSwzTTIxLDE5SDNWNC45N0gyMVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWN0dXJlSW5QaWN0dXJlVG9wUmlnaHQgPSBcIk0xOSw3SDExVjEzSDE5VjdNMjEsM0gzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpY3R1cmVJblBpY3R1cmVUb3BSaWdodE91dGxpbmUgPSBcIk0xOSw3SDExVjEzSDE5VjdNMTcsMTFIMTNWOUgxN1YxMU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUMxLDIwLjExIDEuOSwyMSAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QzIzLDMuOTEgMjIuMSwzIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpZXIgPSBcIk0yMCwxOEMxOC42LDE4IDE3LjIsMTcuNSAxNiwxNi43QzEzLjYsMTguNCAxMC40LDE4LjQgOCwxNi43QzYuOCwxNy41IDUuNCwxOCA0LDE4SDJWMjBINEM1LjQsMjAgNi43LDE5LjYgOCwxOUMxMC41LDIwLjMgMTMuNSwyMC4zIDE2LDE5QzE3LjMsMTkuNiAxOC42LDIwIDIwLDIwSDIyVjE4SDIwTTIwLDEzSDE5VjE2LjlDMTguMywxNi44IDE3LjYsMTYuNiAxNywxNi4yVjEzSDEyVjE3QzExLjMsMTcgMTAuNywxNi45IDEwLDE2LjdWMTNINVYxNi45QzQuNywxNyA0LjMsMTcgNCwxN0gzVjEzSDJWMTFIM1Y5SDVWMTFIMTBWOUgxMlYxMUgxN1Y5SDE5VjExSDIwVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpZXJDcmFuZSA9IFwiTTIwLDIwQzE4LjYxLDIwIDE3LjIyLDE5LjUzIDE2LDE4LjY3QzEzLjU2LDIwLjM4IDEwLjQ0LDIwLjM4IDgsMTguNjdDNi43OCwxOS41MyA1LjM5LDIwIDQsMjBIMlYyMkg0QzUuMzcsMjIgNi43NCwyMS42NSA4LDIxQzEwLjUsMjIuMyAxMy41LDIyLjMgMTYsMjFDMTcuMjYsMjEuNjUgMTguNjIsMjIgMjAsMjJIMjJWMjBIMjBNMjAsNFYzQTEsMSAwIDAsMCAxOSwySDlWMUg2VjJINVY0SDZWMTNINVYxMUgzVjEzSDJWMTVIM1YxOUg0QzQuMzMsMTkgNC42NywxOC45NyA1LDE4LjkyVjE1SDEwVjE4LjY1QzEwLjY1LDE4Ljg1IDExLjMzLDE4Ljk1IDEyLDE4Ljk1VjE4LjkyTDEyLDE1SDEzVjEzSDEyVjExSDEwVjEzSDlWNEgxN1Y4LjYyQzE2LjUzLDguNzkgMTYuMTksOS4yMyAxNi4xOSw5Ljc2QzE2LjE5LDEwLjIgMTYuNDMsMTAuNiAxNi44LDEwLjgyVjEySDE3LjQyQzE3Ljc2LDEyIDE4LjAzLDEyLjI4IDE4LjAzLDEyLjYyQzE4LjAzLDEyLjk2IDE3Ljc2LDEzLjI0IDE3LjQyLDEzLjI0QzE3LjIsMTMuMjQgMTcsMTMuMTIgMTYuODgsMTIuOTNDMTYuNzEsMTIuNjQgMTYuMzQsMTIuNTQgMTYuMDUsMTIuNzFDMTUuNzUsMTIuODcgMTUuNjUsMTMuMjUgMTUuODIsMTMuNTVDMTYuMTUsMTQuMTEgMTYuNzYsMTQuNDcgMTcuNDIsMTQuNDdDMTguNDMsMTQuNDcgMTkuMjYsMTMuNjQgMTkuMjYsMTIuNjJDMTkuMjYsMTEuODQgMTguNzYsMTEuMTQgMTguMDMsMTAuODhWMTAuODJDMTguNDEsMTAuNiAxOC42NSwxMC4yIDE4LjY1LDkuNzZDMTguNjUsOS4zIDE4LjM4LDguOTEgMTgsOC43VjRIMjBNOCwxMS42Nkw3LDEyLjY2VjExLjI0TDgsMTAuMjRWMTEuNjZNOCw4LjcxTDcsOS43MVY4LjI5TDgsNy4yOVY4LjcxTTcsNi43MVY1LjI5TDgsNC4yOVY1LjcxTDcsNi43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWcgPSBcIk05LjUsOUExLjUsMS41IDAgMCwwIDgsMTAuNUExLjUsMS41IDAgMCwwIDkuNSwxMkExLjUsMS41IDAgMCwwIDExLDEwLjVBMS41LDEuNSAwIDAsMCA5LjUsOU0xNC41LDlBMS41LDEuNSAwIDAsMCAxMywxMC41QTEuNSwxLjUgMCAwLDAgMTQuNSwxMkExLjUsMS41IDAgMCwwIDE2LDEwLjVBMS41LDEuNSAwIDAsMCAxNC41LDlNMTIsNEwxMi42OCw0LjAzQzEzLjYyLDMuMjQgMTQuODIsMi41OSAxNS43MiwyLjM1QzE3LjU5LDEuODUgMjAuODgsMi4yMyAyMS4zMSwzLjgzQzIxLjYyLDUgMjAuNiw2LjQ1IDE5LjAzLDcuMzhDMjAuMjYsOC45MiAyMSwxMC44NyAyMSwxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDMsMTNDMywxMC44NyAzLjc0LDguOTIgNC45Nyw3LjM4QzMuNCw2LjQ1IDIuMzgsNSAyLjY5LDMuODNDMy4xMiwyLjIzIDYuNDEsMS44NSA4LjI4LDIuMzVDOS4xOCwyLjU5IDEwLjM4LDMuMjQgMTEuMzIsNC4wM0wxMiw0TTEwLDE2QTEsMSAwIDAsMSAxMSwxN0ExLDEgMCAwLDEgMTAsMThBMSwxIDAgMCwxIDksMTdBMSwxIDAgMCwxIDEwLDE2TTE0LDE2QTEsMSAwIDAsMSAxNSwxN0ExLDEgMCAwLDEgMTQsMThBMSwxIDAgMCwxIDEzLDE3QTEsMSAwIDAsMSAxNCwxNk0xMiwxM0M5LjI0LDEzIDcsMTUuMzQgNywxN0M3LDE4LjY2IDkuMjQsMjAgMTIsMjBDMTQuNzYsMjAgMTcsMTguNjYgMTcsMTdDMTcsMTUuMzQgMTQuNzYsMTMgMTIsMTNNNy43Niw0LjI4QzcuMzEsNC4xNiA0LjU5LDQuMzUgNC41OSw0LjM1QzQuNTksNC4zNSA2LjgsNi4xIDcuMjQsNi4yMkM3LjY5LDYuMzQgOS43Nyw2LjQzIDkuOTEsNS45QzEwLjA2LDUuMzYgOC4yLDQuNCA3Ljc2LDQuMjhNMTYuMjQsNC4yOEMxNS44LDQuNCAxMy45NCw1LjM2IDE0LjA5LDUuOUMxNC4yMyw2LjQzIDE2LjMxLDYuMzQgMTYuNzYsNi4yMkMxNy4yLDYuMSAxOS40MSw0LjM1IDE5LjQxLDQuMzVDMTkuNDEsNC4zNSAxNi42OSw0LjE2IDE2LjI0LDQuMjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlnVmFyaWFudCA9IFwiTTIwIDEyQzIwIDguNjkgMTYuNDIgNiAxMiA2QzExLjE1IDYgMTAuMzQgNi4xIDkuNTcgNi4yOEw3IDVWNy4zMkM1LjUgOC4yMiA0LjQ1IDkuNSA0LjEyIDExSDJWMTVINS4wOEM1LjU4IDE1LjY1IDYuMjMgMTYuMjIgNyAxNi42OFYyMEg5VjE3LjU2QzkuOTMgMTcuODQgMTAuOTQgMTggMTIgMThTMTQuMDcgMTcuODQgMTUgMTcuNTZWMjBIMTdWMTYuNjhDMTguMTUgMTYgMTkuMDMgMTUuMDYgMTkuNTQgMTRIMjJWMTJIMjBNNyAxMUM2LjQ1IDExIDYgMTAuNTUgNiAxMFM2LjQ1IDkgNyA5IDggOS40NSA4IDEwIDcuNTUgMTEgNyAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdWYXJpYW50T3V0bGluZSA9IFwiTTkgMTJDOC40IDEyIDggMTEuNiA4IDExUzguNCAxMCA5IDEwIDEwIDEwLjQgMTAgMTEgOS42IDEyIDkgMTJNMjIgMTJIMjBDMjAgOC43IDE2LjQgNiAxMiA2QzExLjIgNiAxMC4zIDYuMSA5LjYgNi4zTDcgNVY3LjNDNS41IDguMiA0LjUgOS41IDQuMSAxMUgyVjE1SDUuMUM1LjYgMTUuNiA2LjIgMTYuMiA3IDE2LjdWMjBIOVYxNy42QzkuOSAxNy45IDEwLjkgMTggMTIgMThTMTQuMSAxNy44IDE1IDE3LjZWMjBIMTdWMTYuN0MxOC4xIDE2IDE5IDE1LjEgMTkuNSAxNEgyMlYxMk0xMiAxNkM4LjcgMTYgNiAxNC4yIDYgMTJTOC43IDggMTIgOCAxOCA5LjggMTggMTIgMTUuMyAxNiAxMiAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdneUJhbmsgPSBcIk0xMyAxQzE0LjY2IDEgMTYgMi4zNCAxNiA0UzE0LjY2IDcgMTMgNyAxMCA1LjY2IDEwIDQgMTEuMzQgMSAxMyAxTTIwIDE0QzIwIDExLjY0IDE4LjE3IDkuNiAxNS41IDguNjJDMTUgOS40NSAxNC4wNiAxMCAxMyAxMEMxMS43NiAxMCAxMC42OSA5LjI0IDEwLjI0IDguMTdDMTAgOC4yIDkuNzggOC4yMyA5LjU3IDguMjlMNyA3VjkuMzJDNS41IDEwLjIyIDQuNDUgMTEuNSA0LjEyIDEzSDJWMTdINS4wOEM1LjU4IDE3LjY1IDYuMjMgMTguMjIgNyAxOC42OFYyMkg5VjE5LjU2QzkuOTMgMTkuODQgMTAuOTQgMjAgMTIgMjBTMTQuMDcgMTkuODQgMTUgMTkuNTZWMjJIMTdWMTguNjhDMTguMTUgMTggMTkuMDMgMTcuMDYgMTkuNTQgMTZIMjJWMTRIMjBNNyAxM0M2LjQ1IDEzIDYgMTIuNTUgNiAxMlM2LjQ1IDExIDcgMTEgOCAxMS40NSA4IDEyIDcuNTUgMTMgNyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdneUJhbmtPdXRsaW5lID0gXCJNMjIgMTRIMjBDMjAgMTEuNiAxOC4yIDkuNiAxNS41IDguNkMxNSA5LjQgMTQuMSAxMCAxMyAxMEMxMS43IDEwIDEwLjcgOS4yIDEwLjIgOC4yQzEwIDguMiA5LjggOC4zIDkuNSA4LjNMNyA3VjkuM0M1LjUgMTAuMiA0LjQgMTEuNSA0LjEgMTNIMlYxN0g1LjFDNS42IDE3LjYgNi4yIDE4LjIgNyAxOC43VjIySDlWMTkuNkM5LjkgMTkuOSAxMC45IDIwIDEyIDIwUzE0LjEgMTkuOCAxNSAxOS42VjIySDE3VjE4LjdDMTguMSAxOCAxOSAxNy4xIDE5LjUgMTZIMjJWMTRNMTIgMThDOC43IDE4IDYgMTYuMiA2IDE0QzYgMTIuNSA3LjQgMTEuMSA5LjQgMTAuNEMxMC4zIDExLjQgMTEuNiAxMiAxMyAxMkMxNC4xIDEyIDE1LjEgMTEuNyAxNiAxMUMxNy4zIDExLjggMTggMTIuOSAxOCAxNEMxOCAxNi4yIDE1LjMgMTggMTIgMThNMTMgM0MxMy42IDMgMTQgMy40IDE0IDRTMTMuNiA1IDEzIDUgMTIgNC42IDEyIDQgMTIuNCAzIDEzIDNNMTMgMUMxMS4zIDEgMTAgMi4zIDEwIDRTMTEuMyA3IDEzIDcgMTYgNS43IDE2IDQgMTQuNyAxIDEzIDFNMTAgMTNDMTAgMTMuNiA5LjYgMTQgOSAxNFM4IDEzLjYgOCAxMyA4LjQgMTIgOSAxMiAxMCAxMi40IDEwIDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlsbCA9IFwiTTQuMjIsMTEuMjlMMTEuMjksNC4yMkMxMy42NCwxLjg4IDE3LjQzLDEuODggMTkuNzgsNC4yMkMyMi4xMiw2LjU2IDIyLjEyLDEwLjM2IDE5Ljc4LDEyLjcxTDEyLjcxLDE5Ljc4QzEwLjM2LDIyLjEyIDYuNTYsMjIuMTIgNC4yMiwxOS43OEMxLjg4LDE3LjQzIDEuODgsMTMuNjQgNC4yMiwxMS4yOU01LjY0LDEyLjcxQzQuNTksMTMuNzUgNC4yNCwxNS4yNCA0LjYsMTYuNTdMMTAuNTksMTAuNTlMMTQuODMsMTQuODNMMTguMzYsMTEuMjlDMTkuOTMsOS43MyAxOS45Myw3LjIgMTguMzYsNS42NEMxNi44LDQuMDcgMTQuMjcsNC4wNyAxMi43MSw1LjY0TDUuNjQsMTIuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlsbGFyID0gXCJNNiw1SDE4QTEsMSAwIDAsMSAxOSw2QTEsMSAwIDAsMSAxOCw3SDZBMSwxIDAgMCwxIDUsNkExLDEgMCAwLDEgNiw1TTIxLDJWNEgzVjJIMjFNMTUsOEgxN1YyMkgxNVY4TTcsOEg5VjIySDdWOE0xMSw4SDEzVjIySDExVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluID0gXCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpbk9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuOCwxNi4wN1YyMkgxMS4yVjE2SDZWMTRMOCwxMlYxMS4yN0wyLDUuMjdNMTYsMTJMMTgsMTRWMTZIMTcuODJMOCw2LjE4VjRIN1YySDE3VjRIMTZWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluT2ZmT3V0bGluZSA9IFwiTTgsNi4yVjRIN1YySDE3VjRIMTZWMTJMMTgsMTRWMTZIMTcuOEwxNCwxMi4yVjRIMTBWOC4yTDgsNi4yTTIwLDIwLjdMMTguNywyMkwxMi44LDE2LjFWMjJIMTEuMlYxNkg2VjE0TDgsMTJWMTEuM0wyLDUuM0wzLjMsNEwyMCwyMC43TTguOCwxNEgxMC42TDkuNywxMy4xTDguOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW5PdXRsaW5lID0gXCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyTTguOCwxNEwxMCwxMi44VjRIMTRWMTIuOEwxNS4yLDE0SDguOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW5lVHJlZSA9IFwiTTEwLDIxVjE4SDNMOCwxM0g1TDEwLDhIN0wxMiwzTDE3LDhIMTRMMTksMTNIMTZMMjEsMThIMTRWMjFIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluZVRyZWVCb3ggPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDIsMjBWNEEyLDIgMCAwLDEgNCwyTTExLDE5SDEzVjE3SDE4TDE0LDEzSDE3TDEzLDlIMTZMMTIsNUw4LDlIMTFMNywxM0gxMEw2LDE3SDExVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpbmVUcmVlRmlyZSA9IFwiTTIyLjE0IDE0Ljg0TDIyLjEyIDE0Ljg1QzIyLjM1IDE1LjEzIDIyLjU1IDE1LjQ0IDIyLjcgMTUuNzdMMjIuNzkgMTUuOTZDMjMuNSAxNy42NSAyMyAxOS42IDIxLjY5IDIwLjgyQzIwLjUgMjEuOTEgMTguODQgMjIuMiAxNy4zIDIyQzE1Ljg0IDIxLjgyIDE0LjUgMjAuOSAxMy43MyAxOS42M0MxMy41IDE5LjI0IDEzLjMgMTguOCAxMy4yIDE4LjM1QzEzLjA3IDE4IDEzLjAzIDE3LjYyIDEzIDE3LjI1QzEyLjkxIDE1LjY1IDEzLjU1IDEzLjk1IDE0Ljc2IDEyLjk1QzE0LjIxIDE0LjE2IDE0LjM0IDE1LjY3IDE1LjE1IDE2LjcyTDE1LjI2IDE2Ljg1QzE1LjQgMTYuOTcgMTUuNTcgMTcgMTUuNzMgMTYuOTRDMTUuODggMTYuODggMTYgMTYuNzMgMTYgMTYuNTdMMTUuOTMgMTYuMzNDMTUuMDUgMTQgMTUuNzkgMTEuMyAxNy42NiA5Ljc3QzE4LjE3IDkuMzUgMTguOCA4Ljk3IDE5LjQ2IDguOEMxOC43OCAxMC4xNiAxOSAxMS45NCAyMC4wOSAxM0MyMC41NSAxMy41IDIxLjExIDEzLjc5IDIxLjU4IDE0LjIzTDIyLjE0IDE0Ljg0TTE5Ljg2IDE5LjVMMTkuODUgMTkuNDdDMjAuMyAxOS4wOCAyMC41NSAxOC40MSAyMC41MyAxNy44MUwyMC41IDE3LjVDMjAuMyAxNi41IDE5LjQzIDE2LjE2IDE4Ljg3IDE1LjQzQzE4LjcgMTUuMjEgMTguNTUgMTQuOTMgMTguNDQgMTQuNjVDMTguMjIgMTUuMTUgMTguMiAxNS42MiAxOC4yOSAxNi4xNkMxOC4zOSAxNi43MyAxOC42MSAxNy4yMiAxOC41IDE3LjgxQzE4LjM0IDE4LjQ2IDE3LjgzIDE5LjExIDE2Ljk0IDE5LjMyQzE3LjQ0IDE5LjgxIDE4LjI1IDIwLjIgMTkuMDYgMTkuOTJDMTkuMzIgMTkuODUgMTkuNjUgMTkuNjYgMTkuODYgMTkuNU05IDIxVjE4SDJMNyAxM0g0TDkgOEg2TDExIDNMMTYgOEgxM0wxNC44MiA5LjgyQzEyLjU1IDExLjA2IDExIDEzLjU5IDExIDE2LjVDMTEgMTguMTkgMTEuNSAxOS43NSAxMi40IDIxSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGludGVyZXN0ID0gXCJNOS4wNCwyMS41NEMxMCwyMS44MyAxMC45NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNi4yNSA0LjY3LDE5LjkgOC40NCwyMS4zNEM4LjM1LDIwLjU2IDguMjYsMTkuMjcgOC40NCwxOC4zOEw5LjU5LDEzLjQ0QzkuNTksMTMuNDQgOS4zLDEyLjg2IDkuMywxMS45NEM5LjMsMTAuNTYgMTAuMTYsOS41MyAxMS4xNCw5LjUzQzEyLDkuNTMgMTIuNCwxMC4xNiAxMi40LDEwLjk3QzEyLjQsMTEuODMgMTEuODMsMTMuMDYgMTEuNTQsMTQuMjRDMTEuMzcsMTUuMjIgMTIuMDYsMTYuMDggMTMuMDYsMTYuMDhDMTQuODQsMTYuMDggMTYuMjIsMTQuMTggMTYuMjIsMTEuNUMxNi4yMiw5LjEgMTQuNSw3LjQ2IDEyLjAzLDcuNDZDOS4yMSw3LjQ2IDcuNTUsOS41NiA3LjU1LDExLjc3QzcuNTUsMTIuNjMgNy44MywxMy41IDguMjksMTQuMDdDOC4zOCwxNC4xMyA4LjM4LDE0LjIxIDguMzUsMTQuMzZMOC4wNiwxNS40NUM4LjA2LDE1LjYyIDcuOTUsMTUuNjggNy43OCwxNS41NkM2LjUsMTUgNS43NiwxMy4xOCA1Ljc2LDExLjcxQzUuNzYsOC41NSA4LDUuNjggMTIuMzIsNS42OEMxNS43Niw1LjY4IDE4LjQ0LDguMTUgMTguNDQsMTEuNDNDMTguNDQsMTQuODcgMTYuMzEsMTcuNjMgMTMuMjYsMTcuNjNDMTIuMjksMTcuNjMgMTEuMzQsMTcuMTEgMTEsMTYuNUwxMC4zMywxOC44N0MxMC4xLDE5LjczIDkuNDcsMjAuODggOS4wNCwyMS41N1YyMS41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW53aGVlbCA9IFwiTTEyLDEyQzEyLDkgMTQuNSw2LjUgMTcuNSw2LjVDMjAuNSw2LjUgMjMsOSAyMywxMkgxMk0xMiwxMkMxMiwxNSA5LjUsMTcuNSA2LjUsMTcuNUMzLjUsMTcuNSAxLDE1IDEsMTJIMTJNMTIsMTJDOSwxMiA2LjUsOS41IDYuNSw2LjVDNi41LDMuNSA5LDEgMTIsMVYxMk0xMiwxMkMxNSwxMiAxNy41LDE0LjUgMTcuNSwxNy41QzE3LjUsMjAuNSAxNSwyMyAxMiwyM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW53aGVlbE91dGxpbmUgPSBcIk0xMiwyM0gxMVYxNi40M0M5LjkzLDE3LjQgOC41LDE4IDcsMThDMy43NSwxOCAxLDE1LjI1IDEsMTJWMTFINy41N0M2LjYsOS45MyA2LDguNSA2LDdDNiwzLjc1IDguNzUsMSAxMiwxSDEzVjcuNTdDMTQuMDcsNi42IDE1LjUsNiAxNyw2QzIwLjI1LDYgMjMsOC43NSAyMywxMlYxM0gxNi40M0MxNy40LDE0LjA3IDE4LDE1LjUgMTgsMTdDMTgsMjAuMjUgMTUuMjUsMjMgMTIsMjNNMTMsMTMuMTNWMjAuODdDMTQuNywyMC40MSAxNiwxOC44MyAxNiwxN0MxNiwxNS4xNyAxNC43LDEzLjU5IDEzLDEzLjEzTTMuMTMsMTNDMy41OSwxNC43IDUuMTcsMTYgNywxNkM4LjgzLDE2IDEwLjQxLDE0LjcgMTAuODcsMTNIMy4xM00xMy4xMywxMUgyMC44N0MyMC40MSw5LjMgMTguODIsOCAxNyw4QzE1LjE4LDggMTMuNTksOS4zIDEzLjEzLDExTTExLDMuMTNDOS4zLDMuNTkgOCw1LjE4IDgsN0M4LDguODIgOS4zLDEwLjQxIDExLDEwLjg3VjMuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZSA9IFwiTTIyLDE0SDIwVjE2SDE0VjEzSDE2VjExSDE0VjZBMiwyIDAgMCwwIDEyLDRINFYySDJWMTBINFY4SDEwVjExSDhWMTNIMTBWMThBMiwyIDAgMCwwIDEyLDIwSDIwVjIySDIyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZURpc2Nvbm5lY3RlZCA9IFwiTTE2LDlWMTFIOFY5SDEwVjhINFYxMEgyVjJINFY0SDEyQTIsMiAwIDAsMSAxNCw2VjlIMTZNMTAsMTVWMThBMiwyIDAgMCwwIDEyLDIwSDIwVjIySDIyVjE0SDIwVjE2SDE0VjE1SDE2VjEzSDhWMTVIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZUxlYWsgPSBcIk0yLDVWMTNINFYxMUgxMEwxMiw5TDEwLDdINFY1SDJNMjAsNVY3SDEyTDE0LDlMMTIsMTFIMjBWMTNIMjJWNUgyME0xMiwxM0MxMiwxMyAxMCwxNS4xNyAxMCwxNi41QTIsMiAwIDAsMCAxMiwxOC41QTIsMiAwIDAsMCAxNCwxNi41QzE0LDE1LjE3IDEyLDEzIDEyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpcGVXcmVuY2ggPSBcIk0xNi4xNyA1LjYzTDE0LjA2IDcuNzhMMTEuOTEgNS42M0wxNi4xNyAxLjQxTDE5LjY5IDQuOTJDMjAuODYgNi4wOSAyMC44NiA4IDE5LjY5IDkuMTlMMTYuMTcgNS42M000LjgzIDEyLjdMNyAxNC44MUwxMC41IDExLjNMOC4zOSA5LjE5TDQuODMgMTIuN00xNS40NyA3Ljc4TDE5IDExLjNMMTcuNTggMTIuN0wxNi44OCAxMkw2LjIzIDIyLjU5TDMuNDIgMTkuNzhMMTEuOTEgMTEuM0w3LjY5IDcuMDNMOS44IDQuOTJMMTQuMDYgOS4xOUwxNS40NyA3Ljc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpcmF0ZSA9IFwiTTguMiwxMi4xQzcuOSwxMi4zIDcuNywxMi43IDcuOCwxM0M3LjgsMTMuNyA4LjUsMTQuMiA5LjEsMTQuMkM5LjcsMTQuMiAxMC4zLDEzLjcgMTAuMywxM0M5LjcsMTIuNiA5LDEyLjMgOC4yLDEyLjFNMjIsMTFMMjMsN0MyMyw3IDIxLDcgMTgsNUMxNSwzIDE1LDEgMTIsMUM5LDEgOSwzIDYsNUMzLDcgMSw3IDEsN0wyLDExSDIuMUMyLDExLjMgMiwxMS43IDIsMTJDMiwxNS41IDMuOCwxOC42IDYuNSwyMC40TDYsMjEuM0MxMi40LDI1LjQgMTgsMjEuMyAxOCwyMS4zTDE3LjUsMjAuNEMyMC4yLDE4LjYgMjIsMTUuNSAyMiwxMkMyMiwxMS43IDIyLDExLjMgMjIsMTFNMTEuMyw0LjVMOS45LDMuMUwxMC42LDIuNEwxMiwzLjhMMTMuNCwyLjRMMTQuMSwzLjFMMTIuNyw0LjVMMTQuMSw1LjlMMTMuNCw2LjZMMTIsNS4yTDEwLjYsNi42TDkuOSw1LjlMMTEuMyw0LjVNOS4zLDguNUMxMC4zLDguMiAxMS4zLDggMTIsOEMxNC4yLDggMTcuOSw5LjYgMTkuOCwxMC40QzE5LjksMTAuNyAxOS45LDExIDE5LjksMTEuM0w5LjMsOC41TTEzLjYsMTkuMUMxMi45LDE5LjUgMTIuMiwxOS44IDExLjQsMTkuOUMxMC45LDE5LjUgMTAuOSwxOC43IDExLjQsMTguM0MxMS44LDE3LjkgMTIuNywxNy43IDEzLjIsMTguMkMxMy41LDE4LjMgMTMuNiwxOC44IDEzLjYsMTkuMU0yMCwxMy40QzE5LjUsMTUuNSAxOC4yLDE3LjQgMTYuNSwxOC42TDE1LDE2SDlMNy41LDE4LjZDNS40LDE3LjIgNCwxNC44IDQsMTJDNCwxMS41IDQuMSwxMSA0LjIsMTAuNUM0LjcsMTAuMyA1LjMsMTAgNiw5LjdMMTMuMSwxMS42VjE0QzEzLjEsMTQuNSAxMy41LDE1IDE0LjEsMTVIMTYuMUMxNi42LDE1IDE3LjEsMTQuNiAxNy4xLDE0VjEyLjZMMjAsMTMuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXN0b2wgPSBcIk03LDVIMjNWOUgyMlYxMEgxNkExLDEgMCAwLDAgMTUsMTFWMTJBMiwyIDAgMCwxIDEzLDE0SDkuNjJDOS4yNCwxNCA4Ljg5LDE0LjIyIDguNzIsMTQuNTZMNi4yNywxOS40NUM2LjEsMTkuNzkgNS43NiwyMCA1LjM4LDIwSDJDMiwyMCAtMSwyMCAzLDE0QzMsMTQgNiwxMCAyLDEwVjVIM0wzLjUsNEg2LjVMNyw1TTE0LDEyVjExQTEsMSAwIDAsMCAxMywxMEgxMkMxMiwxMCAxMSwxMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMSwxIDAgMCwwIDksMTFWMTJBMSwxIDAgMCwwIDEwLDEzSDEzQTEsMSAwIDAsMCAxNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXN0b24gPSBcIk0xMywxNi4xOEMxMy41LDE2LjM1IDEzLjksMTYuNjMgMTQuMjMsMTdIMTVWMjFIMTQuMjFDMTMuODksMjEuMzUgMTMuNSwyMS42MyAxMywyMS44QzExLjg1LDIyLjIyIDEwLjU4LDIxLjg3IDkuNzgsMjFIOVYxN0g5Ljc3QzEwLjEsMTYuNjMgMTAuNSwxNi4zNSAxMSwxNi4xOFYxMkgxM1YxNi4xOE0xMiwyMEExLDEgMCAwLDAgMTMsMTlBMSwxIDAgMCwwIDEyLDE4QTEsMSAwIDAsMCAxMSwxOUExLDEgMCAwLDAgMTIsMjBNMTcsNEgxNVY1SDE3VjExSDdWNUg5VjRIN1YySDE3VjRNMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXRjaGZvcmsgPSBcIk0xNS45IC45TDEzLjEgMy43QzEyLjMgNC41IDEyLjMgNS43IDEzLjEgNi41TDE0LjUgOEw5LjIgMTMuNEw3LjggMTJDNyAxMS4yIDUuOCAxMS4yIDUgMTJMMSAxNkwyLjQgMTcuNEw2LjQgMTMuNEw3LjggMTQuOEwzLjggMTguOEw1LjIgMjAuMkw5LjIgMTYuMkwxMC42IDE3LjZMOS45IDE4LjRMNi43IDIxLjZMOCAyM0wxMiAxOUMxMi44IDE4LjIgMTIuOCAxNyAxMiAxNi4yTDEwLjYgMTQuOEwxNS45IDkuNEwxNy4zIDEwLjhDMTguMSAxMS42IDE5LjMgMTEuNiAyMC4xIDEwLjhMMjMgOEwxNS45IC45TTE4LjcgOS40TDE0LjUgNS4yTDE1LjkgMy44TDIwLjEgOEwxOC43IDkuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXp6YSA9IFwiTTEyLDE1QTIsMiAwIDAsMSAxMCwxM0MxMCwxMS44OSAxMC45LDExIDEyLDExQTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTIsMTVNNyw3QzcsNS44OSA3Ljg5LDUgOSw1QTIsMiAwIDAsMSAxMSw3QTIsMiAwIDAsMSA5LDlDNy44OSw5IDcsOC4xIDcsN00xMiwyQzguNDMsMiA1LjIzLDMuNTQgMyw2TDEyLDIyTDIxLDZDMTguNzgsMy41NCAxNS41NywyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheSA9IFwiTTgsNS4xNFYxOS4xNEwxOSwxMi4xNEw4LDUuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveCA9IFwiTTE5IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy44OSAyMC4xIDMgMTkgM00xMCAxNlY4TDE1IDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE11bHRpcGxlID0gXCJNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFY2TTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTEyLDE0LjVWNS41TDE4LDEwTDEyLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNkgyVjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZNMjAgNFYxNkg4VjRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjEgNi45IDE4IDggMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0LjVWNS41TDE4IDEwTDEyIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMCw4VjE2TDE1LDEyTDEwLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUNpcmNsZSA9IFwiTTEwLDE2LjVWNy41TDE2LDEyTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMCwxNi41TDE2LDEyTDEwLDcuNVYxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlOZXR3b3JrID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU0xMCwxNFY2TDE1LDEwTDEwLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTAsMTRWNkwxNSwxMEwxMCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5T3V0bGluZSA9IFwiTTguNSw4LjY0TDEzLjc3LDEyTDguNSwxNS4zNlY4LjY0TTYuNSw1VjE5TDE3LjUsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5UGF1c2UgPSBcIk0zLDVWMTlMMTEsMTJNMTMsMTlIMTZWNUgxM00xOCw1VjE5SDIxVjVcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5UHJvdGVjdGVkQ29udGVudCA9IFwiTTIsNVYxOEgxMVYxNkg0VjdIMTdWMTFIMTlWNUgyTTksOVYxNEwxMi41LDExLjVMOSw5TTIxLjA0LDExLjY3TDE2LjA5LDE2LjYyTDEzLjk2LDE0LjVMMTIuNTUsMTUuOTFMMTYuMDksMTkuNDVMMjIuNDUsMTMuMDlMMjEuMDQsMTEuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheVNwZWVkID0gXCJNMTMsMi4wNVY0LjA1QzE3LjM5LDQuNTkgMjAuNSw4LjU4IDE5Ljk2LDEyLjk3QzE5LjUsMTYuNjEgMTYuNjQsMTkuNSAxMywxOS45M1YyMS45M0MxOC41LDIxLjM4IDIyLjUsMTYuNSAyMS45NSwxMUMyMS41LDYuMjUgMTcuNzMsMi41IDEzLDIuMDNWMi4wNU01LjY3LDE5Ljc0QzcuMTgsMjEgOS4wNCwyMS43OSAxMSwyMlYyMEM5LjU4LDE5LjgyIDguMjMsMTkuMjUgNy4xLDE4LjM3TDUuNjcsMTkuNzRNNy4xLDUuNzRDOC4yMiw0Ljg0IDkuNTcsNC4yNiAxMSw0LjA2VjIuMDZDOS4wNSwyLjI1IDcuMTksMyA1LjY3LDQuMjZMNy4xLDUuNzRNNS42OSw3LjFMNC4yNiw1LjY3QzMsNy4xOSAyLjI1LDkuMDQgMi4wNSwxMUg0LjA1QzQuMjQsOS41OCA0LjgsOC4yMyA1LjY5LDcuMU00LjA2LDEzSDIuMDZDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzTTEwLDE2LjVMMTYsMTJMMTAsNy41VjE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RDaGVjayA9IFwiTTE0LDEwSDJWMTJIMTRWMTBNMTQsNkgyVjhIMTRWNk0yLDE2SDEwVjE0SDJWMTZNMjEuNSwxMS41TDIzLDEzTDE2LDIwTDExLjUsMTUuNUwxMywxNEwxNiwxN0wyMS41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RFZGl0ID0gXCJNMiw2VjhIMTRWNkgyTTIsMTBWMTJIMTRWMTBIMk0yMC4wNCwxMC4xM0MxOS45LDEwLjEzIDE5Ljc2LDEwLjE5IDE5LjY1LDEwLjNMMTguNjUsMTEuM0wyMC43LDEzLjM1TDIxLjcsMTIuMzVDMjEuOTIsMTIuMTQgMjEuOTIsMTEuNzkgMjEuNywxMS41OEwyMC40MiwxMC4zQzIwLjMxLDEwLjE5IDIwLjE4LDEwLjEzIDIwLjA0LDEwLjEzTTE4LjA3LDExLjg4TDEyLDE3Ljk0VjIwSDE0LjA2TDIwLjEyLDEzLjkzTDE4LjA3LDExLjg4TTIsMTRWMTZIMTBWMTRIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdE1pbnVzID0gXCJNMiwxNkgxMFYxNEgyTTEyLDE0VjE2SDIyVjE0TTE0LDZIMlY4SDE0TTE0LDEwSDJWMTJIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RNdXNpYyA9IFwiTTE1LDZIM1Y4SDE1VjZNMTUsMTBIM1YxMkgxNVYxME0zLDE2SDExVjE0SDNWMTZNMTcsNlYxNC4xOEMxNi42OSwxNC4wNyAxNi4zNSwxNCAxNiwxNEEzLDMgMCAwLDAgMTMsMTdBMywzIDAgMCwwIDE2LDIwQTMsMyAwIDAsMCAxOSwxN1Y4SDIyVjZIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RNdXNpY091dGxpbmUgPSBcIk0xNSw2VjhIM1Y2SDE1TTE1LDEwVjEySDNWMTBIMTVNMywxNlYxNEgxMVYxNkgzTTE3LDZIMjJWOEgxOVYxN0EzLDMgMCAwLDEgMTYsMjBBMywzIDAgMCwxIDEzLDE3QTMsMyAwIDAsMSAxNiwxNEMxNi4zNSwxNCAxNi42OSwxNC4wNyAxNywxNC4xOFY2TTE2LDE2QTEsMSAwIDAsMCAxNSwxN0ExLDEgMCAwLDAgMTYsMThBMSwxIDAgMCwwIDE3LDE3QTEsMSAwIDAsMCAxNiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFBsYXkgPSBcIk0xOSw5SDJWMTFIMTlWOU0xOSw1SDJWN0gxOVY1TTIsMTVIMTVWMTNIMlYxNU0xNywxM1YxOUwyMiwxNkwxNywxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFBsdXMgPSBcIk0yLDE2SDEwVjE0SDJNMTgsMTRWMTBIMTZWMTRIMTJWMTZIMTZWMjBIMThWMTZIMjJWMTRNMTQsNkgyVjhIMTRNMTQsMTBIMlYxMkgxNFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFJlbW92ZSA9IFwiTTIsNlY4SDE0VjZIMk0yLDEwVjEySDExVjEwSDJNMTQuMTcsMTAuNzZMMTIuNzYsMTIuMTdMMTUuNTksMTVMMTIuNzYsMTcuODNMMTQuMTcsMTkuMjRMMTcsMTYuNDFMMTkuODMsMTkuMjRMMjEuMjQsMTcuODNMMTguNDEsMTVMMjEuMjQsMTIuMTdMMTkuODMsMTAuNzZMMTcsMTMuNTlMMTQuMTcsMTAuNzZNMiwxNFYxNkgxMVYxNEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlsaXN0U3RhciA9IFwiTTE3LDE5LjA5TDE5LjQ1LDIwLjU4TDE4LjgsMTcuNzdMMjEsMTUuODlMMTguMTEsMTUuNjRMMTcsMTNMMTUuODcsMTUuNjRMMTMsMTUuODlMMTUuMTgsMTcuNzdMMTQuNSwyMC41OEwxNywxOS4wOU00LDE0SDEyVjE2SDRWMTRNNCw2SDE2VjhINFY2TTQsMTBIMTZWMTJINFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGV4ID0gXCJNNCwyQzIuODksMiAyLDIuODkgMiw0VjIwQzIsMjEuMTEgMi44OSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xMSwyIDIwLDJINE04LjU2LDZIMTIuMDZMMTUuNSwxMkwxMi4wNiwxOEg4LjU2TDEyLDEyTDguNTYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzID0gXCJNMTksMTNIMTNWMTlIMTFWMTNINVYxMUgxMVY1SDEzVjExSDE5VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNCb3ggPSBcIk0xNywxM0gxM1YxN0gxMVYxM0g3VjExSDExVjdIMTNWMTFIMTdNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE11bHRpcGxlID0gXCJNMTksMTFIMTVWMTVIMTNWMTFIOVY5SDEzVjVIMTVWOUgxOU0yMCwySDhBMiwyIDAgMCwwIDYsNFYxNkEyLDIgMCAwLDAgOCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE4IDExSDE1VjE0SDEzVjExSDEwVjlIMTNWNkgxNVY5SDE4TTIwIDRWMTZIOFY0SDIwTTIwIDJIOEM2LjkgMiA2IDIuOSA2IDRWMTZDNiAxNy4xMSA2LjkgMTggOCAxOEgyMEMyMS4xMSAxOCAyMiAxNy4xMSAyMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QzMsMy44OSAzLjksMyA1LDNIMTlNMTEsN0gxM1YxMUgxN1YxM0gxM1YxN0gxMVYxM0g3VjExSDExVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZSA9IFwiTTE3LDEzSDEzVjE3SDExVjEzSDdWMTFIMTFWN0gxM1YxMUgxN00xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzQ2lyY2xlTXVsdGlwbGUgPSBcIk0yIDEyQzIgOS4yIDMuNiA2LjggNiA1LjdWMy41QzIuNSA0LjggMCA4LjEgMCAxMlMyLjUgMTkuMiA2IDIwLjVWMTguM0MzLjYgMTcuMiAyIDE0LjggMiAxMk0xNSAzQzEwIDMgNiA3IDYgMTJTMTAgMjEgMTUgMjEgMjQgMTcgMjQgMTIgMjAgMyAxNSAzTTIwIDEzSDE2VjE3SDE0VjEzSDEwVjExSDE0VjdIMTZWMTFIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZU11bHRpcGxlT3V0bGluZSA9IFwiTTE2LDhIMTRWMTFIMTFWMTNIMTRWMTZIMTZWMTNIMTlWMTFIMTZNMiwxMkMyLDkuMjEgMy42NCw2LjggNiw1LjY4VjMuNUMyLjUsNC43NiAwLDguMDkgMCwxMkMwLDE1LjkxIDIuNSwxOS4yNCA2LDIwLjVWMTguMzJDMy42NCwxNy4yIDIsMTQuNzkgMiwxMk0xNSwzQzEwLjA0LDMgNiw3LjA0IDYsMTJDNiwxNi45NiAxMC4wNCwyMSAxNSwyMUMxOS45NiwyMSAyNCwxNi45NiAyNCwxMkMyNCw3LjA0IDE5Ljk2LDMgMTUsM00xNSwxOUMxMS4xNCwxOSA4LDE1Ljg2IDgsMTJDOCw4LjE0IDExLjE0LDUgMTUsNUMxOC44Niw1IDIyLDguMTQgMjIsMTJDMjIsMTUuODYgMTguODYsMTkgMTUsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZU91dGxpbmUgPSBcIk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEzLDdIMTFWMTFIN1YxM0gxMVYxN0gxM1YxM0gxN1YxMUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNNaW51cyA9IFwiTTExLDRWOUg2VjExSDExVjE2SDEzVjExSDE4VjlIMTNWNEgxMU02LDE4VjIwSDE4VjE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c01pbnVzQm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNMTEsNkgxM1Y5SDE2VjExSDEzVjE0SDExVjExSDhWOUgxMVY2TTgsMTZIMTZWMThIOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzTWludXNWYXJpYW50ID0gXCJNMyA3SDZWNEg4VjdIMTFWOUg4VjEySDZWOUgzVjdNMTMgMTVIMjFWMTdIMTNWMTVNMTYuMDQgM0gxOC4zNUw3Ljk2IDIxSDUuNjVMMTYuMDQgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzTmV0d29yayA9IFwiTTE2LDExVjlIMTNWNkgxMVY5SDhWMTFIMTFWMTRIMTNWMTFIMTZNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c05ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xNSwxMUgxM1YxM0gxMVYxMUg5VjlIMTFWN0gxM1Y5SDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNPbmUgPSBcIk0xMCw4VjEySDE0VjE0SDEwVjE4SDhWMTRINFYxMkg4VjhIMTBNMTQuNSw2LjA4TDE5LDVWMThIMTdWNy40TDE0LjUsNy45VjYuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c091dGxpbmUgPSBcIk00LDlIOVY0SDE1VjlIMjBWMTVIMTVWMjBIOVYxNUg0VjlNMTEsMTNWMThIMTNWMTNIMThWMTFIMTNWNkgxMVYxMUg2VjEzSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNUaGljayA9IFwiTTIwIDE0SDE0VjIwSDEwVjE0SDRWMTBIMTBWNEgxNFYxMEgyMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb2RjYXN0ID0gXCJNMTcsMTguMjVWMjEuNUg3VjE4LjI1QzcsMTYuODcgOS4yNCwxNS43NSAxMiwxNS43NUMxNC43NiwxNS43NSAxNywxNi44NyAxNywxOC4yNU0xMiw1LjVBNi41LDYuNSAwIDAsMSAxOC41LDEyQzE4LjUsMTMuMjUgMTguMTUsMTQuNDIgMTcuNTQsMTUuNDFMMTYsMTQuMDRDMTYuMzIsMTMuNDMgMTYuNSwxMi43MyAxNi41LDEyQzE2LjUsOS41IDE0LjUsNy41IDEyLDcuNUM5LjUsNy41IDcuNSw5LjUgNy41LDEyQzcuNSwxMi43MyA3LjY4LDEzLjQzIDgsMTQuMDRMNi40NiwxNS40MUM1Ljg1LDE0LjQyIDUuNSwxMy4yNSA1LjUsMTJBNi41LDYuNSAwIDAsMSAxMiw1LjVNMTIsMS41QTEwLjUsMTAuNSAwIDAsMSAyMi41LDEyQzIyLjUsMTQuMjggMjEuNzcsMTYuMzkgMjAuNTQsMTguMTFMMTkuMDQsMTYuNzZDMTkuOTYsMTUuNCAyMC41LDEzLjc2IDIwLjUsMTJBOC41LDguNSAwIDAsMCAxMiwzLjVBOC41LDguNSAwIDAsMCAzLjUsMTJDMy41LDEzLjc2IDQuMDQsMTUuNCA0Ljk2LDE2Ljc2TDMuNDYsMTguMTFDMi4yMywxNi4zOSAxLjUsMTQuMjggMS41LDEyQTEwLjUsMTAuNSAwIDAsMSAxMiwxLjVNMTIsOS41QTIuNSwyLjUgMCAwLDEgMTQuNSwxMkEyLjUsMi41IDAgMCwxIDEyLDE0LjVBMi41LDIuNSAwIDAsMSA5LjUsMTJBMi41LDIuNSAwIDAsMSAxMiw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtID0gXCJNMTIsNy4wOUwxNC40NSw4LjU4TDEzLjgsNS43N0wxNiwzLjg5TDEzLjExLDMuNjRMMTIsMUwxMC44NywzLjY0TDgsMy44OUwxMC4xOCw1Ljc3TDkuNSw4LjU4TDEyLDcuMDlNNCwxMy4wOUw2LjQ1LDE0LjU4TDUuOCwxMS43N0w4LDkuODlMNS4xMSw5LjY0TDQsN0wyLjg3LDkuNjRMMCw5Ljg5TDIuMTgsMTEuNzdMMS41LDE0LjU4TDQsMTMuMDlNMjAsMTAuMDlMMjIuNDUsMTEuNThMMjEuOCw4Ljc3TDI0LDYuODlMMjEuMTEsNi42NEwyMCw0TDE4Ljg3LDYuNjRMMTYsNi44OUwxOC4xOCw4Ljc3TDE3LjUsMTEuNThMMjAsMTAuMDlNMTUsMjNIOVYxMEgxNVYyM003LDIzSDFWMTdIN1YyM00yMywyM0gxN1YxM0gyM1YyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQb2RpdW1Ccm9uemUgPSBcIk00LDEzLjA5TDYuNDUsMTQuNThMNS44LDExLjc3TDgsOS44OUw1LjExLDkuNjRMNCw3TDIuODcsOS42NEwwLDkuODlMMi4xOCwxMS43N0wxLjUsMTQuNThMNCwxMy4wOU03LDIzSDFWMTdIN1YyM005LDEwVjIzSDE1VjEwSDlNMTMsMjFIMTFWMTJIMTNWMjFNMTcsMTNWMjNIMjNWMTNIMTdNMjEsMjFIMTlWMTVIMjFWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtR29sZCA9IFwiTTEyLDcuMDlMMTQuNDUsOC41OEwxMy44LDUuNzdMMTYsMy44OUwxMy4xMSwzLjY0TDEyLDFMMTAuODcsMy42NEw4LDMuODlMMTAuMTgsNS43N0w5LjUsOC41OEwxMiw3LjA5TTE1LDIzSDlWMTBIMTVWMjNNMSwxN1YyM0g3VjE3SDFNNSwyMUgzVjE5SDVWMjFNMTcsMTNWMjNIMjNWMTNIMTdNMjEsMjFIMTlWMTVIMjFWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtU2lsdmVyID0gXCJNMjAsMTAuMDlMMjIuNDUsMTEuNThMMjEuOCw4Ljc3TDI0LDYuODlMMjEuMTEsNi42NEwyMCw0TDE4Ljg3LDYuNjRMMTYsNi44OUwxOC4xOCw4Ljc3TDE3LjUsMTEuNThMMjAsMTAuMDlNMjMsMjNIMTdWMTNIMjNWMjNNMSwxN1YyM0g3VjE3SDFNNSwyMUgzVjE5SDVWMjFNOSwxMFYyM0gxNVYxMEg5TTEzLDIxSDExVjEySDEzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvaW50T2ZTYWxlID0gXCJNMjAsNUMxOS40LDUgMTksNS41IDE5LDYuMVYxNkMxOSwxNi42IDE5LjQsMTcgMjAsMTcuMUMyMC42LDE3LjEgMjEsMTYuNiAyMSwxNlY2LjFDMjEsNS41IDIwLjYsNSAyMCw1TTE2LjQsMkg0LjZDMy43LDIgMywyLjcgMywzLjZWMTcuNEMzLDE4LjMgMy43LDE5IDQuNiwxOUg2VjIxQzYsMjEuNiA2LjQsMjIgNywyMkgxM0MxMy42LDIyIDE0LDIxLjYgMTQsMjFWMTlIMTYuNEMxNy4zLDE5IDE4LDE4LjMgMTgsMTcuNFYzLjZDMTgsMi43IDE3LjMsMiAxNi40LDJNNSw4SDhWMTBINVY4TTEyLDExVjEzSDlWMTFIMTJNOSwxMFY4SDEyVjEwSDlNMTIsMTRWMTZIOVYxNEgxMk01LDExSDhWMTNINVYxMU01LDE2VjE0SDhWMTZINU04LDIxSDdWMTlIOFYyMU0xMywyMUgxMFYxOUgxM1YyMU0xNiwxNkgxM1YxNEgxNlYxNk0xNiwxM0gxM1YxMUgxNlYxM00xNiwxMEgxM1Y4SDE2VjEwTTE2LDZINVY0SDE2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZWJhbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QzcuOTIsNCA0LjU1LDcuMDUgNC4wNiwxMUg4LjEzQzguNTcsOS4yNyAxMC4xNCw4IDEyLDhDMTMuODYsOCAxNS40Myw5LjI3IDE1Ljg3LDExSDE5Ljk0QzE5LjQ1LDcuMDUgMTYuMDgsNCAxMiw0TTEyLDIwQzE2LjA4LDIwIDE5LjQ1LDE2Ljk1IDE5Ljk0LDEzSDE1Ljg3QzE1LjQzLDE0LjczIDEzLjg2LDE2IDEyLDE2QzEwLjE0LDE2IDguNTcsMTQuNzMgOC4xMywxM0g0LjA2QzQuNTUsMTYuOTUgNy45MiwyMCAxMiwyME0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZW1vbkdvID0gXCJNMTIsMkE3LDcgMCAwLDEgMTksOUMxOSwxMC40IDE4LjU5LDExLjcxIDE3Ljg4LDEyLjhMMTIsMjIuMjFMNi4xMiwxMi44QzUuNDEsMTEuNzEgNSwxMC40IDUsOUE3LDcgMCAwLDEgMTIsMk0xMiwzLjVDOS4zLDMuNSA3LjA2LDUuNDQgNi41OSw4SDkuMTdDOS41OCw2LjgzIDEwLjY5LDYgMTIsNkMxMy4zMSw2IDE0LjQyLDYuODMgMTQuODMsOEgxNy40MUMxNi45NCw1LjQ0IDE0LjcsMy41IDEyLDMuNU0xMiwxMkMxMC42OSwxMiA5LjU4LDExLjE3IDkuMTcsMTBINi41OUM2LjcyLDEwLjY5IDYuOTcsMTEuMzQgNy4zNCwxMS45MVYxMS45MUw3LjM4LDEyQzguMzYsMTMuNSAxMC4wNiwxNC41IDEyLDE0LjVDMTMuOTQsMTQuNSAxNS42NCwxMy41IDE2LjYyLDEyTDE2LjY2LDExLjkxVjExLjkxQzE3LjAzLDExLjM0IDE3LjI4LDEwLjY5IDE3LjQxLDEwSDE0LjgzQzE0LjQyLDExLjE3IDEzLjMxLDEyIDEyLDEyTTEyLDcuNUExLjUsMS41IDAgMCwwIDEwLjUsOUExLjUsMS41IDAgMCwwIDEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMy41LDlBMS41LDEuNSAwIDAsMCAxMiw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZXJDaGlwID0gXCJNMjMsMTJDMjMsMTguMDggMTguMDgsMjMgMTIsMjNDNS45MiwyMyAxLDE4LjA4IDEsMTJDMSw1LjkyIDUuOTIsMSAxMiwxQzE4LjA4LDEgMjMsNS45MiAyMywxMk0xMyw0LjA2QzE1LjEzLDQuMzMgMTcuMDcsNS40NSAxOC4zNyw3LjE2TDIwLjExLDYuMTZDMTguNDUsMy44MiAxNS44NiwyLjMgMTMsMlY0LjA2TTMuODksNi4xNkw1LjYzLDcuMTZDNi45Myw1LjQ1IDguODcsNC4zMyAxMSw0LjA2VjJDOC4xNCwyLjMgNS41NSwzLjgyIDMuODksNi4xNk0yLjg5LDE2LjFMNC42MiwxNS4xQzMuNzksMTMuMTIgMy43OSwxMC44OCA0LjYyLDguOUwyLjg5LDcuOUMxLjcsMTAuNSAxLjcsMTMuNSAyLjg5LDE2LjFNMTEsMTkuOTRDOC44NywxOS42NyA2LjkzLDE4LjU1IDUuNjMsMTYuODRMMy44OSwxNy44NEM1LjU1LDIwLjE4IDguMTQsMjEuNyAxMSwyMlYxOS45NE0yMC4xMSwxNy44NEwxOC4zNywxNi44NEMxNy4wNywxOC41NSAxNS4xMywxOS42NyAxMywxOS45NFYyMS45NEMxNS44NSwyMS42NSAxOC40NCwyMC4xNiAyMC4xMSwxNy44NE0yMS4xMSwxNi4xQzIyLjMsMTMuNSAyMi4zLDEwLjUgMjEuMTEsNy45TDE5LjM4LDguOUMyMC4yMSwxMC44OCAyMC4yMSwxMy4xMiAxOS4zOCwxNS4xTDIxLjExLDE2LjFNMTUsMTJMMTIsN0w5LDEyTDEyLDE3TDE1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGFyb2lkID0gXCJNNiwzSDE4QTIsMiAwIDAsMSAyMCw1VjE5QTIsMiAwIDAsMSAxOCwyMUg2QTIsMiAwIDAsMSA0LDE5VjVBMiwyIDAgMCwxIDYsM002LDVWMTdIMThWNUg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGljZUJhZGdlID0gXCJNMjIgNEwyMCAyQzE4Ljg1IDIuNjQgMTcuNCAzIDE2IDNDMTQuNiAzIDEzLjE0IDIuNjMgMTIgMkMxMC44NiAyLjYzIDkuNCAzIDggM0M2LjYgMyA1LjE1IDIuNjQgNCAyTDIgNEMyIDQgNCA2IDQgOFMyIDE0IDIgMTZDMiAyMCAxMiAyMiAxMiAyMlMyMiAyMCAyMiAxNkMyMiAxNCAyMCAxMCAyMCA4UzIyIDQgMjIgNE0xNS4wNSAxNi40NUwxMS45NyAxNC41OUw4LjkgMTYuNDVMOS43MiAxMi45NUw3IDEwLjYxTDEwLjU4IDEwLjNMMTEuOTcgN0wxMy4zNyAxMC4yOUwxNi45NSAxMC42TDE0LjIzIDEyLjk0TDE1LjA1IDE2LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGljZUJhZGdlT3V0bGluZSA9IFwiTTEyIDQuMjFDMTMuMjQgNC43MiAxNC42NSA1IDE2IDVDMTcuMDUgNSAxOC4xIDQuODQgMTkuMDggNC41NEMxOC41IDUuNSAxOCA2LjcxIDE4IDhDMTggOS4zMiAxOC41NCAxMC45MyAxOS4xIDEyLjYzQzE5LjUgMTMuODMgMjAgMTUuMzMgMjAgMTZDMjAgMTcuMDMgMTYuNDcgMTkgMTIgMTkuOTZDNy41NCAxOSA0IDE3LjAzIDQgMTZDNCAxNS4zMyA0LjUgMTMuODMgNC45IDEyLjYzQzUuNDYgMTAuOTMgNiA5LjMyIDYgOEM2IDYuNzEgNS41IDUuNSA0LjkyIDQuNTRDNS45IDQuODQgNi45NiA1IDggNUM5LjM1IDUgMTAuNzYgNC43MiAxMiA0LjIxTTIwIDJDMTguODUgMi42NCAxNy40IDMgMTYgM0MxNC42IDMgMTMuMTQgMi42MyAxMiAyQzEwLjg2IDIuNjMgOS40IDMgOCAzQzYuNiAzIDUuMTUgMi42NCA0IDJMMiA0QzIgNCA0IDYgNCA4UzIgMTQgMiAxNkMyIDIwIDEyIDIyIDEyIDIyUzIyIDIwIDIyIDE2QzIyIDE0IDIwIDEwIDIwIDhTMjIgNCAyMiA0TDIwIDJNMTUuMDUgMTYuNDVMMTEuOTcgMTQuNTlMOC45IDE2LjQ1TDkuNzIgMTIuOTVMNyAxMC42MUwxMC41OCAxMC4zTDExLjk3IDdMMTMuMzcgMTAuMjlMMTYuOTUgMTAuNkwxNC4yMyAxMi45NEwxNS4wNSAxNi40NVwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGwgPSBcIk0zLDIyVjhIN1YyMkgzTTEwLDIyVjJIMTRWMjJIMTBNMTcsMjJWMTRIMjFWMjJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbEJveCA9IFwiTTE3LDE3SDE1VjEzSDE3TTEzLDE3SDExVjdIMTNNOSwxN0g3VjEwSDlNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbEJveE91dGxpbmUgPSBcIk05IDE3SDdWMTBIOU0xMyAxN0gxMVY3SDEzTTE3IDE3SDE1VjEzSDE3TTE5LjUgMTkuMUg0LjVWNUgxOS41TTE5LjUgM0g0LjVDMy40IDMgMi41IDMuOSAyLjUgNVYxOUMyLjUgMjAuMSAzLjQgMjEgNC41IDIxSDE5LjVDMjAuNiAyMSAyMS41IDIwLjEgMjEuNSAxOVY1QzIxLjUgMy45IDIwLjYgMyAxOS41IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbyA9IFwiTTIyIDkuNUMyMiAxMC44OCAyMC44OCAxMiAxOS41IDEyUzE3IDEwLjg4IDE3IDkuNSAxOC4xMiA3IDE5LjUgNyAyMiA4LjEyIDIyIDkuNU0xMSAxN1YzSDhWMTdIMkw2IDIxSDEzVjE3SDExTTE2IDE3SDE0VjIxSDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbHltZXIgPSBcIk0xOSw0SDE1TDcuMSwxNi42M0w0LjUsMTJMOSw0SDVMMC41LDEyTDUsMjBIOUwxNi44OSw3LjM3TDE5LjUsMTJMMTUsMjBIMTlMMjMuNSwxMkwxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvb2wgPSBcIk0yLDE1QzMuNjcsMTQuMjUgNS4zMywxMy41IDcsMTMuMTdWNUEzLDMgMCAwLDEgMTAsMkMxMS4zMSwyIDEyLjQyLDIuODMgMTIuODMsNEgxMEExLDEgMCAwLDAgOSw1VjZIMTRWNUEzLDMgMCAwLDEgMTcsMkMxOC4zMSwyIDE5LjQyLDIuODMgMTkuODMsNEgxN0ExLDEgMCAwLDAgMTYsNVYxNC45NEMxOCwxNC42MiAyMCwxMyAyMiwxM1YxNUMxOS43OCwxNSAxNy41NiwxNyAxNS4zMywxN0MxMy4xMSwxNyAxMC44OSwxNSA4LjY3LDE1QzYuNDQsMTUgNC4yMiwxNiAyLDE3VjE1TTE0LDhIOVYxMEgxNFY4TTE0LDEySDlWMTNDMTAuNjcsMTMuMTYgMTIuMzMsMTQuMzEgMTQsMTQuNzlWMTJNMiwxOUM0LjIyLDE4IDYuNDQsMTcgOC42NywxN0MxMC44OSwxNyAxMy4xMSwxOSAxNS4zMywxOUMxNy41NiwxOSAxOS43OCwxNyAyMiwxN1YxOUMxOS43OCwxOSAxNy41NiwyMSAxNS4zMywyMUMxMy4xMSwyMSAxMC44OSwxOSA4LjY3LDE5QzYuNDQsMTkgNC4yMiwyMCAyLDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvcGNvcm4gPSBcIk03LDIySDQuNzVDNC43NSwyMiA0LDIyIDMuODEsMjAuNjVMMi4wNCwzLjgxTDIsMy41QzIsMi42NyAyLjksMiA0LDJDNS4xLDIgNiwyLjY3IDYsMy41QzYsMi42NyA2LjksMiA4LDJDOS4xLDIgMTAsMi42NyAxMCwzLjVDMTAsMi42NyAxMC45LDIgMTIsMkMxMy4wOSwyIDE0LDIuNjYgMTQsMy41VjMuNUMxNCwyLjY3IDE0LjksMiAxNiwyQzE3LjEsMiAxOCwyLjY3IDE4LDMuNUMxOCwyLjY3IDE4LjksMiAyMCwyQzIxLjEsMiAyMiwyLjY3IDIyLDMuNUwyMS45NiwzLjgxTDIwLjE5LDIwLjY1QzIwLDIyIDE5LjI1LDIyIDE5LjI1LDIySDE3TDE2LjUsMjJIMTMuNzVMMTAuMjUsMjJINy41TDcsMjJNMTcuODUsNC45M0MxNy41NSw0LjM5IDE2Ljg0LDQgMTYsNEMxNS4xOSw0IDE0LjM2LDQuMzYgMTQsNC44N0wxMy43OCwyMEgxNi42NkwxNy44NSw0LjkzTTEwLDQuODdDOS42NCw0LjM2IDguODEsNCA4LDRDNy4xNiw0IDYuNDUsNC4zOSA2LjE1LDQuOTNMNy4zNCwyMEgxMC4yMkwxMCw0Ljg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvc3QgPSBcIk0zIDNWMjFIMjFWM0gzTTE4IDE4SDZWMTdIMThWMThNMTggMTZINlYxNUgxOFYxNk0xOCAxMkg2VjZIMThWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9zdE91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0yMSAzSDNWMjFIMjFWM00xNyAxN0g3VjE2SDE3VjE3TTE3IDE1SDdWMTRIMTdWMTVNMTcgMTJIN1Y3SDE3VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvc3RhZ2VTdGFtcCA9IFwiTTIsMlY1LjVDMy4xLDUuNSA0LDYuNjIgNCw4QzQsOS4zOCAzLjEsMTAuNSAyLDEwLjVWMTMuNUMzLjEsMTMuNSA0LDE0LjYyIDQsMTZDNCwxNy4zOCAzLjEsMTguNSAyLDE4LjVWMjJINS41QzUuNSwyMC45IDYuNjIsMjAgOCwyMEM5LjM4LDIwIDEwLjUsMjAuOSAxMC41LDIySDEzLjVDMTMuNSwyMC45IDE0LjYyLDIwIDE2LDIwQzE3LjM4LDIwIDE4LjUsMjAuOSAxOC41LDIySDIyVjE4LjVDMjAuOSwxOC41IDIwLDE3LjM4IDIwLDE2VjE2QzIwLDE0LjYyIDIwLjksMTMuNSAyMiwxMy41VjEwLjVDMjAuOSwxMC41IDIwLDkuMzggMjAsOFY4QzIwLDYuNjIgMjAuOSw1LjUgMjIsNS41VjJIMTguNUMxOC41LDMuMSAxNy4zOCw0IDE2LDRDMTQuNjIsNCAxMy41LDMuMSAxMy41LDJIMTAuNUMxMC41LDMuMSA5LjM4LDQgOCw0QzYuNjIsNCA1LjUsMy4xIDUuNSwySDJNNiw2SDE4VjE4SDZWNk05LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSwxMUEyLDIgMCAwLDAgMTEsOUEyLDIgMCAwLDAgOSw3TTE3LDEwTDE0LDEzTDEyLDEyTDcsMTdIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90ID0gXCJNMTkgMTlDMTkgMjAuMSAxOC4xIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMSA1IDE5VjEySDNWMTBIMjFWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90TWl4ID0gXCJNMTQuNiA5TDE4IDMuMUwxOS43IDQuMUwxNi45IDlIMTQuNk0xNCAxMEgzVjEySDVWMTlDNSAyMC4xIDUuOSAyMSA3IDIxSDE3QzE4LjEgMjEgMTkgMjAuMSAxOSAxOVYxMkgyMVYxMEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3RNaXhPdXRsaW5lID0gXCJNMTQuNiA5TDE4IDMuMUwxOS43IDQuMUwxNi45IDlIMTQuNk0xNi4zIDEwSDIxVjEySDE5VjE5QzE5IDIwLjEgMTguMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVYxMkgzVjEwSDE2LjNNMTcgMTJIN1YxOUgxN1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3RPdXRsaW5lID0gXCJNMyAxMFYxMkg1VjE5QzUgMjAuMSA1LjkgMjEgNyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWMTJIMjFWMTBIM003IDEySDE3VjE5SDdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90U3RlYW0gPSBcIk0xOSAxOUMxOSAyMC4xMSAxOC4xMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjExIDUgMTlWMTJIM1YxMEgyMVYxMkgxOU04IDEuNUM2LjE1IDEuNSA0LjY1IDMgNC42NSA0Ljg1QzQuNjUgNi43IDYuMTUgOC4yIDggOC4ySDkuNTNDOS45MiA4LjIgMTAuMjkgOC4zIDEwLjYxIDguNUgxMi42M0MxMi4wNSA3LjQ1IDEwLjg2IDYuNzUgOS41MyA2Ljc1SDhDNyA2Ljc1IDYuMTUgNS43NyA2LjE1IDQuNzVDNi4xNSAzLjczIDcgMyA4IDNNMTIuODUgMkMxMi44NSAzIDEyIDMuODUgMTEgMy44NVY1LjM1QzEyLjkyIDUuMzUgMTQuNSA2LjcgMTQuODkgOC41SDE2LjQyQzE2LjEyIDYuNjcgMTQuOTYgNS4xNSAxMy4zNSA0LjM4QzEzLjk3IDMuNzcgMTQuMzUgMi45MyAxNC4zNSAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdFN0ZWFtT3V0bGluZSA9IFwiTTggMS41QzYuMTUgMS41IDQuNjUgMyA0LjY1IDQuODVDNC42NSA2LjcgNi4xNSA4LjIgOCA4LjJIOS41M0M5LjkyIDguMiAxMC4yOSA4LjMgMTAuNjEgOC41SDEyLjYzQzEyLjA1IDcuNDUgMTAuODYgNi43NSA5LjUzIDYuNzVIOEM3IDYuNzUgNi4xNSA1Ljc3IDYuMTUgNC43NUM2LjE1IDMuNzMgNyAzIDggM1YxLjVNMTIuODUgMkMxMi44NSAzIDEyIDMuODUgMTEgMy44NVY1LjM1QzEyLjkyIDUuMzUgMTQuNSA2LjcgMTQuODkgOC41SDE2LjQyQzE2LjEyIDYuNjcgMTQuOTYgNS4xNSAxMy4zNSA0LjM4QzEzLjk3IDMuNzcgMTQuMzUgMi45MyAxNC4zNSAySDEyLjg1TTMgMTBWMTJINVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxSDE3QzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjEySDIxVjEwSDNNNyAxMkgxN1YxOUg3VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdW5kID0gXCJNNS40MSwyMUw2LjEyLDE3SDIuMTJMMi40NywxNUg2LjQ3TDcuNTMsOUgzLjUzTDMuODgsN0g3Ljg4TDguNTksM0gxMC41OUw5Ljg4LDdIMTUuODhMMTYuNTksM0gxOC41OUwxNy44OCw3SDIxLjg4TDIxLjUzLDlIMTcuNTNMMTYuNDcsMTVIMjAuNDdMMjAuMTIsMTdIMTYuMTJMMTUuNDEsMjFIMTMuNDFMMTQuMTIsMTdIOC4xMkw3LjQxLDIxSDUuNDFNOS41Myw5TDguNDcsMTVIMTQuNDdMMTUuNTMsOUg5LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdW5kQm94ID0gXCJNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTcsMThIOUw5LjM1LDE2SDEzLjM1TDEzLDE4SDE1TDE1LjM1LDE2SDE3LjM1TDE3LjcxLDE0SDE1LjcxTDE2LjQxLDEwSDE4LjQxTDE4Ljc2LDhIMTYuNzZMMTcuMTIsNkgxNS4xMkwxNC43Niw4SDEwLjc2TDExLjEyLDZIOS4xMkw4Ljc2LDhINi43Nkw2LjQxLDEwSDguNDFMNy43MSwxNEg1LjcxTDUuMzUsMTZINy4zNUw3LDE4TTEwLjQxLDEwSDE0LjQxTDEzLjcxLDE0SDkuNzFMMTAuNDEsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG91bmRCb3hPdXRsaW5lID0gXCJNMTkgMTlINVY1SDE5TTE5IDNINUEyIDIgMCAwIDAgMyA1VjE5QTIgMiAwIDAgMCA1IDIxSDE5QTIgMiAwIDAgMCAyMSAxOVY1QTIgMiAwIDAgMCAxOSAzTTcgOUg5LjMxTDkuNjMgNkgxMS42M0wxMS4zMSA5SDEzLjMxTDEzLjYzIDZIMTUuNjNMMTUuMzEgOUgxN1YxMUgxNS4xTDE0LjkgMTNIMTdWMTVIMTQuNjlMMTQuMzcgMThIMTIuMzdMMTIuNjkgMTVIMTAuNjlMMTAuMzcgMThIOC4zN0w4LjY5IDE1SDdWMTNIOC45TDkuMSAxMUg3VjlNMTEuMSAxMUwxMC45IDEzSDEyLjlMMTMuMSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlciA9IFwiTTE2LjU2LDUuNDRMMTUuMTEsNi44OUMxNi44NCw3Ljk0IDE4LDkuODMgMTgsMTJBNiw2IDAgMCwxIDEyLDE4QTYsNiAwIDAsMSA2LDEyQzYsOS44MyA3LjE2LDcuOTQgOC44OCw2Ljg4TDcuNDQsNS40NEM1LjM2LDYuODggNCw5LjI4IDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5LjI4IDE4LjY0LDYuODggMTYuNTYsNS40NE0xMywzSDExVjEzSDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJDeWNsZSA9IFwiTTEyLDNBOSw5IDAgMCwwIDMsMTJBOSw5IDAgMCwwIDEyLDIxQTksOSAwIDAsMCAyMSwxMkE5LDkgMCAwLDAgMTIsM00xMiwxOUE3LDcgMCAwLDEgNSwxMkE3LDcgMCAwLDEgMTIsNUE3LDcgMCAwLDEgMTksMTJBNyw3IDAgMCwxIDEyLDE5TTEzLDE3SDExVjdIMTNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJPZmYgPSBcIk0xMiwzQTksOSAwIDAsMCAzLDEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJBOSw5IDAgMCwwIDEyLDNNMTIsMTlBNyw3IDAgMCwxIDUsMTJBNyw3IDAgMCwxIDEyLDVBNyw3IDAgMCwxIDE5LDEyQTcsNyAwIDAsMSAxMiwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlck9uID0gXCJNMTEsM0gxM1YyMUgxMVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyUGx1ZyA9IFwiTTE2LDdWM0gxNFY3SDEwVjNIOFY3SDhDNyw3IDYsOCA2LDlWMTQuNUw5LjUsMThWMjFIMTQuNVYxOEwxOCwxNC41VjlDMTgsOCAxNyw3IDE2LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJQbHVnT2ZmID0gXCJNMjAuODQgMjIuNzNMMTUuMzEgMTcuMkwxNC41IDE4VjIxSDkuNVYxOEw2IDE0LjVWOUM2IDguNyA2LjEgOC40MSA2LjI1IDguMTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xOCAxNC41VjlDMTggOCAxNyA3IDE2IDdWM0gxNFY3SDEwLjJMMTcuODUgMTQuNjVMMTggMTQuNU0xMCAzSDhWNC44TDEwIDYuOFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyUGx1Z09mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYuMjUgOC4xNEM2LjEgOC40MSA2IDguNyA2IDlWMTQuNUw5LjUgMThWMjFIMTQuNVYxOEwxNS4zMSAxNy4yTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEzLjA5IDE2LjU5TDEyLjY3IDE3SDExLjMzTDEwLjkyIDE2LjU5TDggMTMuNjdWOS44OUwxMy44OSAxNS43OEwxMy4wOSAxNi41OU0xMi4yIDlMMTAuMiA3SDE0VjNIMTZWN0MxNyA3IDE4IDggMTggOVYxNC41TDE3Ljg1IDE0LjY1TDE2IDEyLjhWOS4wOUMxNiA5LjA2IDE1Ljk1IDkgMTUuOTIgOUgxMi4yTTEwIDYuOEw4IDQuOFYzSDEwVjYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclBsdWdPdXRsaW5lID0gXCJNMTYgN1YzSDE0VjdIMTBWM0g4VjdDNyA3IDYgOCA2IDlWMTQuNUw5LjUgMThWMjFIMTQuNVYxOEwxOCAxNC41VjlDMTggOCAxNyA3IDE2IDdNMTYgMTMuNjdMMTMuMDkgMTYuNTlMMTIuNjcgMTdIMTEuMzNMMTAuOTIgMTYuNTlMOCAxMy42N1Y5LjA5QzggOS4wNiA4LjA2IDkgOC4wOSA5SDE1LjkyQzE1Ljk1IDkgMTYgOS4wNiAxNiA5LjA5VjEzLjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyU2V0dGluZ3MgPSBcIk0xNSwyNEgxN1YyMkgxNU0xNi41Niw0LjQ0TDE1LjExLDUuODlDMTYuODQsNi45NCAxOCw4LjgzIDE4LDExQTYsNiAwIDAsMSAxMiwxN0E2LDYgMCAwLDEgNiwxMUM2LDguODMgNy4xNiw2Ljk0IDguODgsNS44OEw3LjQ0LDQuNDRDNS4zNiw1Ljg4IDQsOC4yOCA0LDExQTgsOCAwIDAsMCAxMiwxOUE4LDggMCAwLDAgMjAsMTFDMjAsOC4yOCAxOC42NCw1Ljg4IDE2LjU2LDQuNDRNMTMsMkgxMVYxMkgxM00xMSwyNEgxM1YyMkgxMU03LDI0SDlWMjJIN1YyNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclNsZWVwID0gXCJNMTguNzMsMThDMTUuNCwyMS42OSA5LjcxLDIyIDYsMTguNjRDMi4zMywxNS4zMSAyLjA0LDkuNjIgNS4zNyw1LjkzQzYuOSw0LjI1IDksMy4yIDExLjI3LDNDNy45Niw2LjcgOC4yNywxMi4zOSAxMiwxNS43MUMxMy42MywxNy4xOSAxNS43OCwxOCAxOCwxOEMxOC4yNSwxOCAxOC41LDE4IDE4LjczLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyU29ja2V0ID0gXCJNMTUsMTVIMTdWMTFIMTVNNywxNUg5VjExSDdNMTEsMTNIMTNWOUgxMU04LjgzLDdIMTUuMkwxOSwxMC44VjE3SDVWMTAuOE04LDVMMywxMFYxOUgyMVYxMEwxNiw1SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRBdSA9IFwiTTQuMjIsMkEyLjIyLDIuMjIgMCAwLDAgMiw0LjIyVjE5Ljc4QzIsMjEgMywyMiA0LjIyLDIySDE5Ljc4QTIuMjIsMi4yMiAwIDAsMCAyMiwxOS43OFY0LjIyQzIyLDMgMjEsMiAxOS43OCwySDQuMjJNMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0TTguMjcsNy41NEw2LjI3LDExTDgsMTJMMTAsOC41NEw4LjI3LDcuNTRNMTUuNzMsNy41NEwxNCw4LjU0TDE2LDEyTDE3LjczLDExTDE1LjczLDcuNTRNMTEsMTRWMThIMTNWMTRIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXREZSA9IFwiTTQuMjIgMkEyLjIyIDIuMjIgMCAwIDAgMiA0LjIyVjE5Ljc4QzIgMjEgMyAyMiA0LjIyIDIySDE5Ljc4QTIuMjIgMi4yMiAwIDAgMCAyMiAxOS43OFY0LjIyQzIyIDMgMjEgMiAxOS43OCAySDQuMjJNMTEgNC4wN1Y2SDEzVjQuMDdBOCA4IDAgMCAxIDIwIDEyQTggOCAwIDAgMSAxMyAxOS45M1YxOEgxMVYxOS45M0E4IDggMCAwIDEgNCAxMkE4IDggMCAwIDEgMTEgNC4wN003LjUgMTAuNUExLjUgMS41IDAgMCAwIDYgMTJDNiAxMi44MyA2LjY2IDEzLjUgNy41IDEzLjVBMS41IDEuNSAwIDAgMCA5IDEyQTEuNSAxLjUgMCAwIDAgNy41IDEwLjVNMTYuNSAxMC41QTEuNSAxLjUgMCAwIDAgMTUgMTJBMS41IDEuNSAwIDAgMCAxNi41IDEzLjVBMS41IDEuNSAwIDAgMCAxOCAxMkExLjUgMS41IDAgMCAwIDE2LjUgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclNvY2tldEV1ID0gXCJNNy41LDEwLjVBMS41LDEuNSAwIDAsMSA5LDEyQTEuNSwxLjUgMCAwLDEgNy41LDEzLjVDNi42NiwxMy41IDYsMTIuODMgNiwxMkExLjUsMS41IDAgMCwxIDcuNSwxMC41TTE2LjUsMTAuNUExLjUsMS41IDAgMCwxIDE4LDEyQTEuNSwxLjUgMCAwLDEgMTYuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTUsMTJBMS41LDEuNSAwIDAsMSAxNi41LDEwLjVNNC4yMiwySDE5Ljc4QzIxLDIgMjIsMyAyMiw0LjIyVjE5Ljc4QTIuMjIsMi4yMiAwIDAsMSAxOS43OCwyMkg0LjIyQzMsMjIgMiwyMSAyLDE5Ljc4VjQuMjJBMi4yMiwyLjIyIDAgMCwxIDQuMjIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRGciA9IFwiTTQuMjIgMkEyLjIyIDIuMjIgMCAwIDAgMiA0LjIyVjE5Ljc4QzIgMjEgMyAyMiA0LjIyIDIySDE5Ljc4QTIuMjIgMi4yMiAwIDAgMCAyMiAxOS43OFY0LjIyQzIyIDMgMjEgMiAxOS43OCAySDQuMjJNMTIgNEE4IDggMCAwIDEgMjAgMTJBOCA4IDAgMCAxIDEyIDIwQTggOCAwIDAgMSA0IDEyQTggOCAwIDAgMSAxMiA0TTEyIDZBMS41IDEuNSAwIDAgMCAxMC41IDcuNUExLjUgMS41IDAgMCAwIDEyIDlBMS41IDEuNSAwIDAgMCAxMy41IDcuNUExLjUgMS41IDAgMCAwIDEyIDZNNy41IDEwLjVBMS41IDEuNSAwIDAgMCA2IDEyQzYgMTIuODMgNi42NiAxMy41IDcuNSAxMy41QTEuNSAxLjUgMCAwIDAgOSAxMkExLjUgMS41IDAgMCAwIDcuNSAxMC41TTE2LjUgMTAuNUExLjUgMS41IDAgMCAwIDE1IDEyQTEuNSAxLjUgMCAwIDAgMTYuNSAxMy41QTEuNSAxLjUgMCAwIDAgMTggMTJBMS41IDEuNSAwIDAgMCAxNi41IDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRJdCA9IFwiTTEwLjUgMTYuNUMxMC41IDE1LjY4IDExLjE3IDE1IDEyIDE1QzEyLjgzIDE1IDEzLjUgMTUuNjggMTMuNSAxNi41QzEzLjUgMTcuMzQgMTIuODMgMTggMTIgMThDMTEuMTcgMTggMTAuNSAxNy4zNCAxMC41IDE2LjVNMTAuNSA3LjVDMTAuNSA2LjY3IDExLjE3IDYgMTIgNkMxMi44MyA2IDEzLjUgNi42NyAxMy41IDcuNUMxMy41IDguMzMgMTIuODMgOSAxMiA5QzExLjE3IDkgMTAuNSA4LjMzIDEwLjUgNy41TTQuMjIgMkgxOS43OEMyMSAyIDIyIDMgMjIgNC4yMlYxOS43OEMyMiAyMSAyMSAyMiAxOS43OCAyMkg0LjIyQzMgMjIgMiAyMSAyIDE5Ljc4VjQuMjJDMiAzIDMgMiA0LjIyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEwLjUgMTJDMTAuNSAxMS4xNyAxMS4xNyAxMC41IDEyIDEwLjVDMTIuODMgMTAuNSAxMy41IDExLjE3IDEzLjUgMTJDMTMuNSAxMi44MyAxMi44MyAxMy41IDEyIDEzLjVDMTEuMTcgMTMuNSAxMC41IDEyLjgzIDEwLjUgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRKcCA9IFwiTTEwIDkuNVYxNC41SDhWOS41TTE5Ljc4IDJDMjEgMiAyMiAzIDIyIDQuMjJWMTkuNzhDMjIgMjEgMjEgMjIgMTkuNzggMjJINC4yMkMzIDIyIDIgMjEgMiAxOS43OFY0LjIyQzIgMyAzIDIgNC4yMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xNiA5LjVWMTQuNUgxNFY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRVayA9IFwiTTQgMkEyIDIgMCAwIDAgMiA0VjIwQTIgMiAwIDAgMCA0IDIySDIwQTIgMiAwIDAgMCAyMiAyMFY0QTIgMiAwIDAgMCAyMCAySDRNNCA0SDIwVjIwSDRWNE0xMSA3VjExSDEzVjdIMTFNNiAxNC43NVYxN0g5LjVWMTQuNzVINk0xNC41IDE0Ljc1VjE3SDE4VjE0Ljc1SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRVcyA9IFwiTTgsN0gxMFYxMkg4VjdNNC4yMiwySDE5Ljc4QzIxLDIgMjIsMyAyMiw0LjIyVjE5Ljc4QTIuMjIsMi4yMiAwIDAsMSAxOS43OCwyMkg0LjIyQzMsMjIgMiwyMSAyLDE5Ljc4VjQuMjJBMi4yMiwyLjIyIDAgMCwxIDQuMjIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTQsNy41SDE2VjExLjVIMTRWNy41TTEwLjUsMTYuMjVBMS41LDEuNSAwIDAsMSAxMiwxNC43NUExLjUsMS41IDAgMCwxIDEzLjUsMTYuMjVWMTdIMTAuNVYxNi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclN0YW5kYnkgPSBcIk0xMywzSDExVjEzSDEzVjNNMTcuODMsNS4xN0wxNi40MSw2LjU5QzE4LjA1LDcuOTEgMTksOS45IDE5LDEyQTcsNyAwIDAsMSAxMiwxOUM4LjE0LDE5IDUsMTUuODggNSwxMkM1LDkuOTEgNS45NSw3LjkxIDcuNTgsNi41OEw2LjE3LDUuMTdDMi4zOCw4LjM5IDEuOTIsMTQuMDcgNS4xNCwxNy44NkM4LjM2LDIxLjY0IDE0LjA0LDIyLjEgMTcuODMsMTguODhDMTkuODUsMTcuMTcgMjEsMTQuNjUgMjEsMTJDMjEsOS4zNyAxOS44NCw2Ljg3IDE3LjgzLDUuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJzaGVsbCA9IFwiTTIxLjgzLDRDMjIuMzIsNCAyMi42Myw0LjQgMjIuNSw0Ljg5TDE5LjM0LDE5LjExQzE5LjIzLDE5LjYgMTguNzUsMjAgMTguMjYsMjBIMi4xN0MxLjY4LDIwIDEuMzcsMTkuNiAxLjUsMTkuMTFMNC42Niw0Ljg5QzQuNzcsNC40IDUuMjUsNCA1Ljc0LDRIMjEuODNNMTUuODMsMTZIMTEuODNDMTEuMzcsMTYgMTEsMTYuMzggMTEsMTYuODRDMTEsMTcuMzEgMTEuMzcsMTcuNjkgMTEuODMsMTcuNjlIMTUuODNDMTYuMywxNy42OSAxNi42OCwxNy4zMSAxNi42OCwxNi44NEMxNi42OCwxNi4zOCAxNi4zLDE2IDE1LjgzLDE2TTUuNzgsMTYuMjhDNS4zOCwxNi41NiA1LjI5LDE3LjExIDUuNTcsMTcuNUM1Ljg1LDE3LjkyIDYuNDEsMTggNi44MSwxNy43M0MxNC4xNiwxMi41NiAxNC4yMSwxMi41IDE0LjI2LDEyLjQ3QzE0LjQ0LDEyLjMxIDE0LjUzLDEyLjA5IDE0LjU0LDExLjg3QzE0LjU1LDExLjY3IDE0LjUsMTEuNSAxNC4zOCwxMS4zMUw5LjQ2LDYuMDNDOS4xMyw1LjY3IDguNTcsNS42NSA4LjIxLDZDNy44NSw2LjMyIDcuODMsNi44OCA4LjE2LDcuMjRMMTIuMzEsMTEuNjhMNS43OCwxNi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmVzY3JpcHRpb24gPSBcIk00LDRWMTBMNCwxNEg2VjEwSDhMMTMuNDEsMTUuNDFMOS44MywxOUwxMS4yNCwyMC40MUwxNC44MywxNi44M0wxOC40MSwyMC40MUwxOS44MiwxOUwxNi4yNCwxNS40MUwxOS44MiwxMS44M0wxOC40MSwxMC40MUwxNC44MywxNEwxMC44MywxMEgxMUEzLDMgMCAwLDAgMTQsN0EzLDMgMCAwLDAgMTEsNEg0TTYsNkgxMUExLDEgMCAwLDEgMTIsN0ExLDEgMCAwLDEgMTEsOEg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJlc2VudGF0aW9uID0gXCJNMiwzSDEwQTIsMiAwIDAsMSAxMiwxQTIsMiAwIDAsMSAxNCwzSDIyVjVIMjFWMTZIMTUuMjVMMTcsMjJIMTVMMTMuMjUsMTZIMTAuNzVMOSwyMkg3TDguNzUsMTZIM1Y1SDJWM001LDVWMTRIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByZXNlbnRhdGlvblBsYXkgPSBcIk0yLDNIMTBBMiwyIDAgMCwxIDEyLDFBMiwyIDAgMCwxIDE0LDNIMjJWNUgyMVYxNkgxNS4yNUwxNywyMkgxNUwxMy4yNSwxNkgxMC43NUw5LDIySDdMOC43NSwxNkgzVjVIMlYzTTUsNVYxNEgxOVY1SDVNMTEuODUsMTEuODVDMTEuNzYsMTEuOTQgMTEuNjQsMTIgMTEuNSwxMkEwLjUsMC41IDAgMCwxIDExLDExLjVWNy41QTAuNSwwLjUgMCAwLDEgMTEuNSw3QzExLjY0LDcgMTEuNzYsNy4wNiAxMS44NSw3LjE1TDEzLjI1LDguNTRDMTMuNTcsOC44NiAxMy44OSw5LjE4IDEzLjg5LDkuNUMxMy44OSw5LjgyIDEzLjU3LDEwLjE0IDEzLjI1LDEwLjQ2TDExLjg1LDExLjg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByZXR6ZWwgPSBcIk01LjE1IDE1Ljg0QzMuODEgMTQuMjcgMyAxMi4yMyAzIDEwVjkuOTdDMyA3LjIyIDUuMjUgNSA4IDVDOS42NCA1IDExLjA5IDUuNzkgMTIgN0MxMi45MSA1Ljc5IDE0LjM3IDUgMTYgNUMxOC43NiA1IDIxIDcuMjQgMjEgMTBDMjEgMTIuMjMgMjAuMTkgMTQuMjcgMTguODUgMTUuODRMMjAuMjEgMTcuMkwxOC43OSAxOC42MUwxNy4zOSAxNy4yMUMxNS44OSAxOC4zMyAxNCAxOSAxMiAxOUMxMCAxOSA4LjExIDE4LjMzIDYuNjEgMTcuMjFMNS4yMSAxOC42MUwzLjc5IDE3LjJMNS4xNSAxNS44NE0xNS45NiAxNS43N0wxMiAxMS44Mkw4LjA0IDE1Ljc3QzkuMTcgMTYuNTUgMTAuNTMgMTcgMTIgMTdDMTMuNDcgMTcgMTQuODMgMTYuNTUgMTUuOTYgMTUuNzdNMTEgMTBDMTEgOC4zNCA5LjY1IDcgOCA3QzYuMzQgNyA1IDguMzQgNSAxMEM1IDExLjY4IDUuNTkgMTMuMjEgNi41NyAxNC40MkwxMSAxME0xNy40MyAxNC40MkMxOC40MSAxMy4yMSAxOSAxMS42OCAxOSAxMFYxMEMxOSA4LjMzIDE3LjY1IDcgMTYgN0MxNC4zNSA3IDEzIDguMzQgMTMgMTBMMTcuNDMgMTQuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlciA9IFwiTTE4LDNINlY3SDE4TTE5LDEyQTEsMSAwIDAsMSAxOCwxMUExLDEgMCAwLDEgMTksMTBBMSwxIDAgMCwxIDIwLDExQTEsMSAwIDAsMSAxOSwxMk0xNiwxOUg4VjE0SDE2TTE5LDhINUEzLDMgMCAwLDAgMiwxMVYxN0g2VjIxSDE4VjE3SDIyVjExQTMsMyAwIDAsMCAxOSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZCA9IFwiTTE5LDZBMSwxIDAgMCwwIDIwLDVBMSwxIDAgMCwwIDE5LDRBMSwxIDAgMCwwIDE4LDVBMSwxIDAgMCwwIDE5LDZNMTksMkEzLDMgMCAwLDEgMjIsNVYxMUgxOFY3SDZWMTFIMlY1QTMsMyAwIDAsMSA1LDJIMTlNMTgsMTguMjVDMTgsMTguNjMgMTcuNzksMTguOTYgMTcuNDcsMTkuMTNMMTIuNTcsMjEuODJDMTIuNCwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44Mkw2LjUzLDE5LjEzQzYuMjEsMTguOTYgNiwxOC42MyA2LDE4LjI1VjEzQzYsMTIuNjIgNi4yMSwxMi4yOSA2LjUzLDEyLjEyTDExLjQzLDkuNjhDMTEuNTksOS41NiAxMS43OSw5LjUgMTIsOS41QzEyLjIxLDkuNSAxMi40LDkuNTYgMTIuNTcsOS42OEwxNy40NywxMi4xMkMxNy43OSwxMi4yOSAxOCwxMi42MiAxOCwxM1YxOC4yNU0xMiwxMS42NUw5LjA0LDEzTDEyLDE0LjZMMTQuOTYsMTNMMTIsMTEuNjVNOCwxNy42NkwxMSwxOS4yOVYxNi4zM0w4LDE0LjcxVjE3LjY2TTE2LDE3LjY2VjE0LjcxTDEzLDE2LjMzVjE5LjI5TDE2LDE3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZE5venpsZSA9IFwiTTcsMkgxN1Y4SDE5VjEzSDE2LjVMMTMsMTdIMTFMNy41LDEzSDVWOEg3VjJNMTAsMjJIMlYyMEgxMEExLDEgMCAwLDAgMTEsMTlWMThIMTNWMTlBMywzIDAgMCwxIDEwLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZE5venpsZUFsZXJ0ID0gXCJNNyAySDE3VjhIMTlWMTNIMTYuNUwxMyAxN0gxMUw3LjUgMTNINVY4SDdWMk0xMCAyMkgyVjIwSDEwQzEwLjYgMjAgMTEgMTkuNSAxMSAxOVYxOEgxM1YxOUMxMyAyMC43IDExLjcgMjIgMTAgMjJNMjEgMTNWN0gyM1YxM0gyMU0yMSAxN1YxNUgyM1YxN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyM2ROb3p6bGVBbGVydE91dGxpbmUgPSBcIk03IDJIMTdWN0gxOVYxM0gxNi41TDEzIDE3SDExTDcuNSAxM0g1VjdIN1YyTTEwIDIySDJWMjBIMTBDMTAuNiAyMCAxMSAxOS41IDExIDE5VjE4SDEzVjE5QzEzIDIwLjcgMTEuNyAyMiAxMCAyMk03IDlWMTFIOC41TDEyIDE1TDE1LjUgMTFIMTdWOUgxNVY0SDlWOUg3TTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlcjNkTm96emxlT3V0bGluZSA9IFwiTTcsMkgxN1Y3SDE5VjEzSDE2LjVMMTMsMTdIMTFMNy41LDEzSDVWN0g3VjJNMTAsMjJIMlYyMEgxMEExLDEgMCAwLDAgMTEsMTlWMThIMTNWMTlBMywzIDAgMCwxIDEwLDIyTTcsOVYxMUg4LjVMMTIsMTVMMTUuNSwxMUgxN1Y5SDE1VjRIOVY5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlckFsZXJ0ID0gXCJNMTYgM0g0VjdIMTZNMTcgMTJDMTYuNCAxMiAxNiAxMS42IDE2IDExUzE2LjQgMTAgMTcgMTAgMTggMTAuNCAxOCAxMSAxNy42IDEyIDE3IDEyTTE0IDE5SDZWMTRIMTRNMTcgOEgzQzEuMyA4IDAgOS4zIDAgMTFWMTdINFYyMUgxNlYxN0gyMFYxMUMyMCA5LjMgMTguNyA4IDE3IDhNMjQgMTNIMjJWN0gyNFYxM00yNCAxN0gyMlYxNUgyNFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyQ2hlY2sgPSBcIk0xOCA3SDZWM0gxOFY3TTYgMjFWMTdIMlYxMUMyIDkuMzQgMy4zNCA4IDUgOEgxOUMyMC42NiA4IDIyIDkuMzQgMjIgMTFWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE3Ljc3IDEzIDE2LjY0IDEzLjM3IDE1LjY5IDE0SDhWMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg2TTE4IDExQzE4IDExLjU1IDE4LjQ1IDEyIDE5IDEyUzIwIDExLjU1IDIwIDExIDE5LjU1IDEwIDE5IDEwIDE4IDEwLjQ1IDE4IDExTTIzLjUgMTdMMjIgMTUuNUwxOC41IDE5TDE2LjUgMTdMMTUgMTguNUwxOC41IDIyTDIzLjUgMTdcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyRXllID0gXCJNOS44IDIxQzkuNiAyMC42IDkuMyAyMC4yIDkuMiAxOS43TDguOCAxOUg4VjE0SDEzQzE0LjIgMTMuNCAxNS42IDEzIDE3IDEzQzE4LjkgMTMgMjAuNiAxMy42IDIyIDE0LjZWMTFDMjIgOS4zIDIwLjcgOCAxOSA4SDVDMy4zIDggMiA5LjMgMiAxMVYxN0g2VjIxSDkuOE0xOSAxMEMxOS42IDEwIDIwIDEwLjQgMjAgMTFTMTkuNiAxMiAxOSAxMiAxOCAxMS42IDE4IDExIDE4LjQgMTAgMTkgMTBNMTggN0g2VjNIMThWN00xNyAxOEMxNy42IDE4IDE4IDE4LjQgMTggMTlTMTcuNiAyMCAxNyAyMCAxNiAxOS42IDE2IDE5IDE2LjQgMTggMTcgMThNMTcgMTVDMTQuMyAxNSAxMS45IDE2LjcgMTEgMTlDMTEuOSAyMS4zIDE0LjMgMjMgMTcgMjNTMjIuMSAyMS4zIDIzIDE5QzIyLjEgMTYuNyAxOS43IDE1IDE3IDE1TTE3IDIxLjVDMTUuNiAyMS41IDE0LjUgMjAuNCAxNC41IDE5UzE1LjYgMTYuNSAxNyAxNi41IDE5LjUgMTcuNiAxOS41IDE5IDE4LjQgMjEuNSAxNyAyMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJPZmYgPSBcIk02LDNWNC4xOEw4LjgyLDdIMThWM0g2TTIuMjgsM0wxLDQuMjdMNC43NSw4QzMuMTksOC4xNSAyLDkuNDQgMiwxMVYxN0g2VjIxSDE3LjczTDE5LjczLDIzTDIxLDIxLjcyTDIuMjgsM005LjgyLDhMMTguODIsMTdIMjJWMTFBMywzIDAgMCwwIDE5LDhIOS44Mk0xOSwxMEExLDEgMCAwLDEgMjAsMTFBMSwxIDAgMCwxIDE5LDEyQTEsMSAwIDAsMSAxOCwxMUExLDEgMCAwLDEgMTksMTBNOCwxNEgxMC43M0wxNS43MywxOUg4VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJQb3MgPSBcIk0xOCAxMEg2QTIgMiAwIDAgMCA0IDEyVjE5SDIwVjEyQTIgMiAwIDAgMCAxOCAxME0xOCAxNEgxNFYxMkgxOE0xNyA5SDdWNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyU2VhcmNoID0gXCJNMjAuMyAxOC45QzIwLjcgMTguMiAyMSAxNy40IDIxIDE2LjVDMjEgMTQgMTkgMTIgMTYuNSAxMlMxMiAxNCAxMiAxNi41IDE0IDIxIDE2LjUgMjFDMTcuNCAyMSAxOC4yIDIwLjggMTguOSAyMC4zTDIyIDIzLjRMMjMuNCAyMkwyMC4zIDE4LjlNMTYuNSAxOUMxNS4xIDE5IDE0IDE3LjkgMTQgMTYuNVMxNS4xIDE0IDE2LjUgMTQgMTkgMTUuMSAxOSAxNi41IDE3LjkgMTkgMTYuNSAxOU0xOCA3SDZWM0gxOFY3TTYgMjFWMTdIMlYxMUMyIDkuMyAzLjMgOCA1IDhIMTlDMjAuNyA4IDIyIDkuMyAyMiAxMVYxM0MyMC44IDExLjIgMTguOCAxMCAxNi41IDEwQzEzLjggMTAgMTEuNSAxMS43IDEwLjUgMTRIOFYxOUgxMC41QzEwLjggMTkuNyAxMS4zIDIwLjQgMTEuOCAyMUg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJTZXR0aW5ncyA9IFwiTTE4LDJWNkg2VjJIMThNMTksMTFBMSwxIDAgMCwwIDIwLDEwQTEsMSAwIDAsMCAxOSw5QTEsMSAwIDAsMCAxOCwxMEExLDEgMCAwLDAgMTksMTFNMTYsMThWMTNIOFYxOEgxNk0xOSw3QTMsMyAwIDAsMSAyMiwxMFYxNkgxOFYyMEg2VjE2SDJWMTBBMywzIDAgMCwxIDUsN0gxOU0xNSwyNFYyMkgxN1YyNEgxNU0xMSwyNFYyMkgxM1YyNEgxMU03LDI0VjIySDlWMjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyV2lyZWxlc3MgPSBcIk00LjkzLDMuOTJMNi4zNCw1LjMzQzkuNDYsMi4yIDE0LjUzLDIuMiAxNy42Niw1LjMzTDE5LjA3LDMuOTJDMTUuMTcsMCA4Ljg0LDAgNC45MywzLjkyTTcuNzYsNi43NUw5LjE3LDguMTZDMTAuNzMsNi42IDEzLjI2LDYuNiAxNC44Myw4LjE2TDE2LjI0LDYuNzVDMTMuOSw0LjQxIDEwLjEsNC40MSA3Ljc2LDYuNzVNMTksMTRBMSwxIDAgMCwxIDE4LDEzQTEsMSAwIDAsMSAxOSwxMkExLDEgMCAwLDEgMjAsMTNBMSwxIDAgMCwxIDE5LDE0TTE2LDIwSDhWMTVIMTZWMjBNMTksMTBINUEzLDMgMCAwLDAgMiwxM1YxOEg2VjIySDE4VjE4SDIyVjEzQTMsMyAwIDAsMCAxOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmlvcml0eUhpZ2ggPSBcIk0xNCwxOUgyMlYxN0gxNFYxOU0xNCwxMy41SDIyVjExLjVIMTRWMTMuNU0xNCw4SDIyVjZIMTRWOE0yLDEyLjVDMiw4LjkyIDQuOTIsNiA4LjUsNkg5VjRMMTIsN0w5LDEwVjhIOC41QzYsOCA0LDEwIDQsMTIuNUM0LDE1IDYsMTcgOC41LDE3SDEyVjE5SDguNUM0LjkyLDE5IDIsMTYuMDggMiwxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW9yaXR5TG93ID0gXCJNMTQsNUgyMlY3SDE0VjVNMTQsMTAuNUgyMlYxMi41SDE0VjEwLjVNMTQsMTZIMjJWMThIMTRWMTZNMiwxMS41QzIsMTUuMDggNC45MiwxOCA4LjUsMThIOVYyMEwxMiwxN0w5LDE0VjE2SDguNUM2LDE2IDQsMTQgNCwxMS41QzQsOSA2LDcgOC41LDdIMTJWNUg4LjVDNC45Miw1IDIsNy45MiAyLDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZmVzc2lvbmFsSGV4YWdvbiA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTUsOVYxNUg2LjI1VjEzSDdBMiwyIDAgMCwwIDksMTFBMiwyIDAgMCwwIDcsOUg1TTYuMjUsMTJWMTBINi43NUExLDEgMCAwLDEgNy43NSwxMUExLDEgMCAwLDEgNi43NSwxMkg2LjI1TTkuNzUsOVYxNUgxMVYxM0gxMS43NUwxMi40MSwxNUgxMy43M0wxMi45NCwxMi42MUMxMy40MywxMi4yNSAxMy43NSwxMS42NiAxMy43NSwxMUEyLDIgMCAwLDAgMTEuNzUsOUg5Ljc1TTExLDEyVjEwSDExLjVBMSwxIDAgMCwxIDEyLjUsMTFBMSwxIDAgMCwxIDExLjUsMTJIMTFNMTcsOUMxNS42Miw5IDE0LjUsMTAuMzQgMTQuNSwxMkMxNC41LDEzLjY2IDE1LjYyLDE1IDE3LDE1QzE4LjM4LDE1IDE5LjUsMTMuNjYgMTkuNSwxMkMxOS41LDEwLjM0IDE4LjM4LDkgMTcsOU0xNywxMC4yNUMxNy43NiwxMC4yNSAxOC4zOCwxMS4wMyAxOC4zOCwxMkMxOC4zOCwxMi45NyAxNy43NiwxMy43NSAxNywxMy43NUMxNi4yNCwxMy43NSAxNS42MywxMi45NyAxNS42MywxMkMxNS42MywxMS4wMyAxNi4yNCwxMC4yNSAxNywxMC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0FsZXJ0ID0gXCJNMTMsMlY0QzE3LjM5LDQuNTQgMjAuNSw4LjUzIDE5Ljk2LDEyLjkyQzE5LjUsMTYuNTYgMTYuNjQsMTkuNDMgMTMsMTkuODhWMjEuODhDMTguNSwyMS4yOCAyMi40NSwxNi4zNCAyMS44NSwxMC44NUMyMS4zMyw2LjE5IDE3LjY2LDIuNSAxMywyTTExLDJDOS4wNCwyLjE4IDcuMTksMi45NSA1LjY3LDQuMkw3LjEsNS43NEM4LjIyLDQuODQgOS41Nyw0LjI2IDExLDQuMDZWMi4wNk00LjI2LDUuNjdDMyw3LjE5IDIuMjQsOS4wNCAyLjA1LDExSDQuMDVDNC4yNCw5LjU4IDQuOCw4LjIzIDUuNjksNy4xTDQuMjYsNS42N00yLjA2LDEzQzIuMjYsMTQuOTYgMy4wMywxNi44MSA0LjI3LDE4LjMzTDUuNjksMTYuOUM0LjgxLDE1Ljc3IDQuMjQsMTQuNDIgNC4wNiwxM0gyLjA2TTcuMDYsMTguMzdMNS42NywxOS43NEM3LjE4LDIxIDkuMDQsMjEuNzkgMTEsMjJWMjBDOS41OCwxOS44MiA4LjIzLDE5LjI1IDcuMSwxOC4zN0g3LjA2TTEzLDEzVjdIMTFWMTNIMTNNMTMsMTdWMTVIMTFWMTdIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZ3Jlc3NDaGVjayA9IFwiTTEzLDIuMDNWMi4wNUwxMyw0LjA1QzE3LjM5LDQuNTkgMjAuNSw4LjU4IDE5Ljk2LDEyLjk3QzE5LjUsMTYuNjEgMTYuNjQsMTkuNSAxMywxOS45M1YyMS45M0MxOC41LDIxLjM4IDIyLjUsMTYuNSAyMS45NSwxMUMyMS41LDYuMjUgMTcuNzMsMi41IDEzLDIuMDNNMTEsMi4wNkM5LjA1LDIuMjUgNy4xOSwzIDUuNjcsNC4yNkw3LjEsNS43NEM4LjIyLDQuODQgOS41Nyw0LjI2IDExLDQuMDZWMi4wNk00LjI2LDUuNjdDMyw3LjE5IDIuMjUsOS4wNCAyLjA1LDExSDQuMDVDNC4yNCw5LjU4IDQuOCw4LjIzIDUuNjksNy4xTDQuMjYsNS42N00xNS41LDguNUwxMC42MiwxMy4zOEw4LjUsMTEuMjZMNy40NCwxMi4zMkwxMC42MiwxNS41TDE2LjU2LDkuNTZMMTUuNSw4LjVNMi4wNiwxM0MyLjI2LDE0Ljk2IDMuMDMsMTYuODEgNC4yNywxOC4zM0w1LjY5LDE2LjlDNC44MSwxNS43NyA0LjI0LDE0LjQyIDQuMDYsMTNIMi4wNk03LjEsMTguMzdMNS42NywxOS43NEM3LjE4LDIxIDkuMDQsMjEuNzkgMTEsMjJWMjBDOS41OCwxOS44MiA4LjIzLDE5LjI1IDcuMSwxOC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0Nsb2NrID0gXCJNMTMsMi4wM1YyLjA1TDEzLDQuMDVDMTcuMzksNC41OSAyMC41LDguNTggMTkuOTYsMTIuOTdDMTkuNSwxNi42MSAxNi42NCwxOS41IDEzLDE5LjkzVjIxLjkzQzE4LjUsMjEuMzggMjIuNSwxNi41IDIxLjk1LDExQzIxLjUsNi4yNSAxNy43MywyLjUgMTMsMi4wM00xMSwyLjA2QzkuMDUsMi4yNSA3LjE5LDMgNS42Nyw0LjI2TDcuMSw1Ljc0QzguMjIsNC44NCA5LjU3LDQuMjYgMTEsNC4wNlYyLjA2TTQuMjYsNS42N0MzLDcuMTkgMi4yNSw5LjA0IDIuMDUsMTFINC4wNUM0LjI0LDkuNTggNC44LDguMjMgNS42OSw3LjFMNC4yNiw1LjY3TTIuMDYsMTNDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzSDIuMDZNNy4xLDE4LjM3TDUuNjcsMTkuNzRDNy4xOCwyMSA5LjA0LDIxLjc5IDExLDIyVjIwQzkuNTgsMTkuODIgOC4yMywxOS4yNSA3LjEsMTguMzdNMTIuNSw3VjEyLjI1TDE3LDE0LjkyTDE2LjI1LDE2LjE1TDExLDEzVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0Nsb3NlID0gXCJNMTMgMi4wM1Y0LjA1QzE3LjM5IDQuNTkgMjAuNSA4LjU4IDE5Ljk2IDEyLjk3QzE5LjUgMTYuNjEgMTYuNjQgMTkuNSAxMyAxOS45M1YyMS45M0MxOC41IDIxLjM4IDIyLjUgMTYuNSAyMS45NSAxMUMyMS41IDYuMjUgMTcuNzMgMi41IDEzIDIuMDNNMTEgMi4wNkM5LjA1IDIuMjUgNy4xOSAzIDUuNjcgNC4yNkw3LjEgNS43NEM4LjIyIDQuODQgOS41NyA0LjI2IDExIDQuMDZWMi4wNk00LjI2IDUuNjdDMyA3LjE5IDIuMjUgOS4wNCAyLjA1IDExSDQuMDVDNC4yNCA5LjU4IDQuOCA4LjIzIDUuNjkgNy4xTDQuMjYgNS42N00yLjA2IDEzQzIuMjYgMTQuOTYgMy4wMyAxNi44MSA0LjI3IDE4LjMzTDUuNjkgMTYuOUM0LjgxIDE1Ljc3IDQuMjQgMTQuNDIgNC4wNiAxM0gyLjA2TTcuMSAxOC4zN0w1LjY3IDE5Ljc0QzcuMTggMjEgOS4wNCAyMS43OSAxMSAyMlYyMEM5LjU4IDE5LjgyIDguMjMgMTkuMjUgNy4xIDE4LjM3TTE0LjU5IDhMMTIgMTAuNTlMOS40MSA4TDggOS40MUwxMC41OSAxMkw4IDE0LjU5TDkuNDEgMTZMMTIgMTMuNDFMMTQuNTkgMTZMMTYgMTQuNTlMMTMuNDEgMTJMMTYgOS40MUwxNC41OSA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2dyZXNzRG93bmxvYWQgPSBcIk0xMywyLjAzQzE3LjczLDIuNSAyMS41LDYuMjUgMjEuOTUsMTFDMjIuNSwxNi41IDE4LjUsMjEuMzggMTMsMjEuOTNWMTkuOTNDMTYuNjQsMTkuNSAxOS41LDE2LjYxIDE5Ljk2LDEyLjk3QzIwLjUsOC41OCAxNy4zOSw0LjU5IDEzLDQuMDVWMi4wNUwxMywyLjAzTTExLDIuMDZWNC4wNkM5LjU3LDQuMjYgOC4yMiw0Ljg0IDcuMSw1Ljc0TDUuNjcsNC4yNkM3LjE5LDMgOS4wNSwyLjI1IDExLDIuMDZNNC4yNiw1LjY3TDUuNjksNy4xQzQuOCw4LjIzIDQuMjQsOS41OCA0LjA1LDExSDIuMDVDMi4yNSw5LjA0IDMsNy4xOSA0LjI2LDUuNjdNMi4wNiwxM0g0LjA2QzQuMjQsMTQuNDIgNC44MSwxNS43NyA1LjY5LDE2LjlMNC4yNywxOC4zM0MzLjAzLDE2LjgxIDIuMjYsMTQuOTYgMi4wNiwxM003LjEsMTguMzdDOC4yMywxOS4yNSA5LjU4LDE5LjgyIDExLDIwVjIyQzkuMDQsMjEuNzkgNy4xOCwyMSA1LjY3LDE5Ljc0TDcuMSwxOC4zN00xMiwxNi41TDcuNSwxMkgxMVY4SDEzVjEySDE2LjVMMTIsMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc1F1ZXN0aW9uID0gXCJNMTMgMi4wM1Y0LjA1QzE3LjM5IDQuNTkgMjAuNSA4LjU4IDE5Ljk2IDEyLjk3QzE5LjUgMTYuNjEgMTYuNjQgMTkuNSAxMyAxOS45M1YyMS45M0MxOC41IDIxLjM4IDIyLjUgMTYuNSAyMS45NSAxMUMyMS41IDYuMjUgMTcuNzMgMi41IDEzIDIuMDNNMTEgMi4wNkM5LjA1IDIuMjUgNy4xOSAzIDUuNjcgNC4yNkw3LjEgNS43NEM4LjIyIDQuODQgOS41NyA0LjI2IDExIDQuMDZWMi4wNk00LjI2IDUuNjdDMyA3LjE5IDIuMjUgOS4wNCAyLjA1IDExSDQuMDVDNC4yNCA5LjU4IDQuOCA4LjIzIDUuNjkgNy4xTDQuMjYgNS42N00yLjA2IDEzQzIuMjYgMTQuOTYgMy4wMyAxNi44MSA0LjI3IDE4LjMzTDUuNjkgMTYuOUM0LjgxIDE1Ljc3IDQuMjQgMTQuNDIgNC4wNiAxM0gyLjA2TTcuMSAxOC4zN0w1LjY3IDE5Ljc0QzcuMTggMjEgOS4wNCAyMS43OSAxMSAyMlYyMEM5LjU4IDE5LjgyIDguMjMgMTkuMjUgNy4xIDE4LjM3TTIwIDRINDRNMTMgMThIMTFWMTZIMTNWMThNMTMgMTVIMTFDMTEgMTEuNzUgMTQgMTIgMTQgMTBDMTQgOC45IDEzLjEgOCAxMiA4UzEwIDguOSAxMCAxMEg4QzggNy43OSA5Ljc5IDYgMTIgNlMxNiA3Ljc5IDE2IDEwQzE2IDEyLjUgMTMgMTIuNzUgMTMgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZ3Jlc3NVcGxvYWQgPSBcIk0xMywyLjAzQzE3LjczLDIuNSAyMS41LDYuMjUgMjEuOTUsMTFDMjIuNSwxNi41IDE4LjUsMjEuMzggMTMsMjEuOTNWMTkuOTNDMTYuNjQsMTkuNSAxOS41LDE2LjYxIDE5Ljk2LDEyLjk3QzIwLjUsOC41OCAxNy4zOSw0LjU5IDEzLDQuMDVWMi4wNUwxMywyLjAzTTExLDIuMDZWNC4wNkM5LjU3LDQuMjYgOC4yMiw0Ljg0IDcuMSw1Ljc0TDUuNjcsNC4yNkM3LjE5LDMgOS4wNSwyLjI1IDExLDIuMDZNNC4yNiw1LjY3TDUuNjksNy4xQzQuOCw4LjIzIDQuMjQsOS41OCA0LjA1LDExSDIuMDVDMi4yNSw5LjA0IDMsNy4xOSA0LjI2LDUuNjdNMi4wNiwxM0g0LjA2QzQuMjQsMTQuNDIgNC44MSwxNS43NyA1LjY5LDE2LjlMNC4yNywxOC4zM0MzLjAzLDE2LjgxIDIuMjYsMTQuOTYgMi4wNiwxM003LjEsMTguMzdDOC4yMywxOS4yNSA5LjU4LDE5LjgyIDExLDIwVjIyQzkuMDQsMjEuNzkgNy4xOCwyMSA1LjY3LDE5Ljc0TDcuMSwxOC4zN00xMiw3LjVMNy41LDEySDExVjE2SDEzVjEySDE2LjVMMTIsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2dyZXNzV3JlbmNoID0gXCJNMTMsMi4wM1YyLjA1TDEzLDQuMDVDMTcuMzksNC41OSAyMC41LDguNTggMTkuOTYsMTIuOTdDMTkuNSwxNi42MSAxNi42NCwxOS41IDEzLDE5LjkzVjIxLjkzQzE4LjUsMjEuMzggMjIuNSwxNi41IDIxLjk1LDExQzIxLjUsNi4yNSAxNy43MywyLjUgMTMsMi4wM00xMSwyLjA2QzkuMDUsMi4yNSA3LjE5LDMgNS42Nyw0LjI2TDcuMSw1Ljc0QzguMjIsNC44NCA5LjU3LDQuMjYgMTEsNC4wNlYyLjA2TTQuMjYsNS42N0MzLDcuMTkgMi4yNSw5LjA0IDIuMDUsMTFINC4wNUM0LjI0LDkuNTggNC44LDguMjMgNS42OSw3LjFMNC4yNiw1LjY3TTIuMDYsMTNDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzSDIuMDZNNy4xLDE4LjM3TDUuNjcsMTkuNzRDNy4xOCwyMSA5LjA0LDIxLjc5IDExLDIyVjIwQzkuNTgsMTkuODIgOC4yMywxOS4yNSA3LjEsMTguMzdNMTYuODIsMTUuMTlMMTIuNzEsMTEuMDhDMTMuMTIsMTAuMDQgMTIuODksOC44MiAxMi4wMyw3Ljk3QzExLjEzLDcuMDYgOS43OCw2Ljg4IDguNjksNy4zOEwxMC42Myw5LjMyTDkuMjgsMTAuNjhMNy4yOSw4LjczQzYuNzUsOS44MiA3LDExLjE3IDcuODgsMTIuMDhDOC43NCwxMi45NCA5Ljk2LDEzLjE2IDExLDEyLjc2TDE1LjExLDE2Ljg2QzE1LjI5LDE3LjA1IDE1LjU2LDE3LjA1IDE1Ljc0LDE2Ljg2TDE2Ljc4LDE1LjgzQzE3LDE1LjY1IDE3LDE1LjMzIDE2LjgyLDE1LjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2plY3RvciA9IFwiTTE2LDZDMTQuODcsNiAxMy43Nyw2LjM1IDEyLjg0LDdINEMyLjg5LDcgMiw3Ljg5IDIsOVYxNUMyLDE2LjExIDIuODksMTcgNCwxN0g1VjE4QTEsMSAwIDAsMCA2LDE5SDhBMSwxIDAgMCwwIDksMThWMTdIMTVWMThBMSwxIDAgMCwwIDE2LDE5SDE4QTEsMSAwIDAsMCAxOSwxOFYxN0gyMEMyMS4xMSwxNyAyMiwxNi4xMSAyMiwxNVY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE5LjE1QzE4LjIzLDYuMzUgMTcuMTMsNiAxNiw2TTE2LDcuNUEzLjUsMy41IDAgMCwxIDE5LjUsMTFBMy41LDMuNSAwIDAsMSAxNiwxNC41QTMuNSwzLjUgMCAwLDEgMTIuNSwxMUEzLjUsMy41IDAgMCwxIDE2LDcuNU00LDlIOFYxMEg0VjlNMTYsOUEyLDIgMCAwLDAgMTQsMTFBMiwyIDAgMCwwIDE2LDEzQTIsMiAwIDAsMCAxOCwxMUEyLDIgMCAwLDAgMTYsOU00LDExSDhWMTJINFYxMU00LDEzSDhWMTRINFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9qZWN0b3JTY3JlZW4gPSBcIk00LDJBMSwxIDAgMCwwIDMsM1Y0QTEsMSAwIDAsMCA0LDVINVYxNEgxMVYxNi41OUw2Ljc5LDIwLjc5TDguMjEsMjIuMjFMMTEsMTkuNDFWMjJIMTNWMTkuNDFMMTUuNzksMjIuMjFMMTcuMjEsMjAuNzlMMTMsMTYuNTlWMTRIMTlWNUgyMEExLDEgMCAwLDAgMjEsNFYzQTEsMSAwIDAsMCAyMCwySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvamVjdG9yU2NyZWVuT3V0bGluZSA9IFwiTTIwIDJINEMzLjQ1IDIgMyAyLjQ1IDMgM1Y0QzMgNC41NSAzLjQ1IDUgNCA1SDVWMTRIMTFWMTYuNTlMNi43OSAyMC43OUw4LjIxIDIyLjIxTDExIDE5LjQxVjIySDEzVjE5LjQxTDE1Ljc5IDIyLjIxTDE3LjIxIDIwLjc5TDEzIDE2LjU5VjE0SDE5VjVIMjBDMjAuNTUgNSAyMSA0LjU1IDIxIDRWM0MyMSAyLjQ1IDIwLjU1IDIgMjAgMk0xNyAxMkg3VjVIMTdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvcGFuZVRhbmsgPSBcIk0xNiA2SDE2VjRDMTYgMi45IDE1LjExIDIgMTQgMkgxMEM4LjkgMiA4IDIuOSA4IDRWNkg4QzUuNzkgNiA0IDcuNzkgNCAxMFYxN0M0IDE4Ljg2IDUuMjggMjAuNDEgNyAyMC44NlYyMkgxN1YyMC44NkMxOC43MiAyMC40MiAyMCAxOC44NiAyMCAxN1YxMEMyMCA3Ljc5IDE4LjIxIDYgMTYgNk0xMCA0SDE0VjZIMTBWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9wYW5lVGFua091dGxpbmUgPSBcIk0xNiA2VjRDMTYgMi45IDE1LjExIDIgMTQgMkgxMEM4LjkgMiA4IDIuOSA4IDRWNkM1Ljc5IDYgNCA3Ljc5IDQgMTBWMTdDNCAxOC44NiA1LjI4IDIwLjQxIDcgMjAuODZWMjJIMTdWMjAuODZDMTguNzIgMjAuNDIgMjAgMTguODYgMjAgMTdWMTBDMjAgNy43OSAxOC4yMSA2IDE2IDZNMTAgNEgxNFY2SDEwVjRNMTggMTdDMTggMTguMSAxNy4xIDE5IDE2IDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjEwQzYgOC45IDYuOSA4IDggOEgxNkMxNy4xIDggMTggOC45IDE4IDEwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb3RvY29sID0gXCJNMTggMjBIMTRMMTggNEgyMk0xNiA0SDEyTDggMjBIMTJNMiAxNi41QTIuNSAyLjUgMCAwIDAgNC41IDE5QTIuNSAyLjUgMCAwIDAgNyAxNi41QTIuNSAyLjUgMCAwIDAgNC41IDE0QTIuNSAyLjUgMCAwIDAgMiAxNi41TTIgOS41QTIuNSAyLjUgMCAwIDAgNC41IDEyQTIuNSAyLjUgMCAwIDAgNyA5LjVBMi41IDIuNSAwIDAgMCA0LjUgN0EyLjUgMi41IDAgMCAwIDIgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1Ymxpc2ggPSBcIk01LDRWNkgxOVY0SDVNNSwxNEg5VjIwSDE1VjE0SDE5TDEyLDdMNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQdWxzZSA9IFwiTTMsMTNINS43OUwxMC4xLDQuNzlMMTEuMjgsMTMuNzVMMTQuNSw5LjY2TDE3LjgzLDEzSDIxVjE1SDE3TDE0LjY3LDEyLjY3TDkuOTIsMTguNzNMOC45NCwxMS4zMUw3LDE1SDNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHVtcCA9IFwiTTIgMjFWMTVIMy41QzMuMTggMTQuMDYgMyAxMy4wNSAzIDEyQzMgNy4wMyA3LjAzIDMgMTIgM0gyMlY5SDIwLjVDMjAuODIgOS45NCAyMSAxMC45NSAyMSAxMkMyMSAxNi45NyAxNi45NyAyMSAxMiAyMUgyTTUgMTJDNSAxMy4yOCA1LjM0IDE0LjQ3IDUuOTQgMTUuNUw5LjQgMTMuNUM5LjE1IDEzLjA2IDkgMTIuNTUgOSAxMkM5IDExLjM1IDkuMjEgMTAuNzUgOS41NiAxMC4yNkw2LjMgNy45M0M1LjUgOS4wOCA1IDEwLjUgNSAxMk0xMiAxOUMxNC41OSAxOSAxNi44NSAxNy41OSAxOC4wNiAxNS41TDE0LjYgMTMuNUMxNC4wOCAxNC40IDEzLjExIDE1IDEyIDE1TDExLjcxIDE1TDExLjMzIDE4Ljk3TDEyIDE5TTEyIDlDMTMuMjEgOSAxNC4yNiA5LjcyIDE0LjczIDEwLjc2TDE4LjM3IDkuMUMxNy4yNyA2LjY4IDE0LjgzIDUgMTIgNVY5TTEyIDExQzExLjQ1IDExIDExIDExLjQ1IDExIDEyQzExIDEyLjU1IDExLjQ1IDEzIDEyIDEzQzEyLjU1IDEzIDEzIDEyLjU1IDEzIDEyQzEzIDExLjQ1IDEyLjU1IDExIDEyIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1bXBraW4gPSBcIk02LjUsNkM3LjQ3LDYgOC4zNyw2LjUgOS4xMSw3LjM4QzkuNjYsNi43OSAxMC4zMSw2LjM2IDExLDYuMTVWNEEyLDIgMCAwLDEgMTMsMkgxNVY0SDEzVjYuMTVDMTMuNjksNi4zNiAxNC4zNCw2Ljc5IDE0Ljg5LDcuMzhDMTUuNjMsNi41IDE2LjUzLDYgMTcuNSw2QzIwLDYgMjIsOS4zNiAyMiwxMy41QzIyLDE3LjY0IDIwLDIxIDE3LjUsMjFDMTYuNTMsMjEgMTUuNjMsMjAuNSAxNC44OSwxOS42MkMxNC4wOCwyMC41IDEzLjA4LDIxIDEyLDIxQzEwLjkyLDIxIDkuOTIsMjAuNSA5LjExLDE5LjYyQzguMzcsMjAuNSA3LjQ3LDIxIDYuNSwyMUM0LDIxIDIsMTcuNjQgMiwxMy41QzIsOS4zNiA0LDYgNi41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHVyc2UgPSBcIk0yMiwxOS4xTDIxLDEwLjVBMS42NSwxLjY1IDAgMCwwIDE5LjMsOUgxNlY1TDE0LDNIMTBMOCw1VjlINC43QTEuNjUsMS42NSAwIDAsMCAzLDEwLjVMMiwxOS4xQTEuNzQsMS43NCAwIDAsMCAzLjcsMjFIMjAuM0ExLjc0LDEuNzQgMCAwLDAgMjIsMTkuMU0xMCw1SDE0VjlIMTBcIjtcclxuZXhwb3J0IHZhciBtZGlQdXJzZU91dGxpbmUgPSBcIk0xOSwxMUwyMCwxOUg0TDUsMTFIMTlNMTQsM0gxMEw4LDVWOUg0LjdBMS42NSwxLjY1IDAgMCwwIDMsMTAuNUwyLDE5LjFBMS43NCwxLjc0IDAgMCwwIDMuNywyMUgyMC4zQTEuNzQsMS43NCAwIDAsMCAyMiwxOS4xTDIxLDEwLjVBMS42NSwxLjY1IDAgMCwwIDE5LjMsOUgxNlY1TDE0LDNNMTAsOVY1SDE0VjlcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGUgPSBcIk0yMC41LDExSDE5VjdDMTksNS44OSAxOC4xLDUgMTcsNUgxM1YzLjVBMi41LDIuNSAwIDAsMCAxMC41LDFBMi41LDIuNSAwIDAsMCA4LDMuNVY1SDRBMiwyIDAgMCwwIDIsN1YxMC44SDMuNUM1LDEwLjggNi4yLDEyIDYuMiwxMy41QzYuMiwxNSA1LDE2LjIgMy41LDE2LjJIMlYyMEEyLDIgMCAwLDAgNCwyMkg3LjhWMjAuNUM3LjgsMTkgOSwxNy44IDEwLjUsMTcuOEMxMiwxNy44IDEzLjIsMTkgMTMuMiwyMC41VjIySDE3QTIsMiAwIDAsMCAxOSwyMFYxNkgyMC41QTIuNSwyLjUgMCAwLDAgMjMsMTMuNUEyLjUsMi41IDAgMCwwIDIwLjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlQ2hlY2sgPSBcIk0yMy41IDE3TDE4LjUgMjJMMTUgMTguNUwxNi41IDE3TDE4LjUgMTlMMjIgMTUuNUwyMy41IDE3TTIwLjUgMTFDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNUMyMyAxMy44MSAyMi45NCAxNC4xMSAyMi44NCAxNC4zOUMyMS44IDEzLjUgMjAuNDYgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlWMTkuNTRDMTIuNjQgMTguNSAxMS42NSAxNy44IDEwLjUgMTcuOEM5IDE3LjggNy44IDE5IDcuOCAyMC41VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuODkgMi45IDUgNCA1SDhWMy41QzggMi4xMiA5LjEyIC45OTggMTAuNSAuOTk4UzEzIDIuMTIgMTMgMy41VjVIMTdDMTguMSA1IDE5IDUuODkgMTkgN1YxMUgyMC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlQ2hlY2tPdXRsaW5lID0gXCJNMjMuNSAxN0wxOC41IDIyTDE1IDE4LjVMMTYuNSAxN0wxOC41IDE5TDIyIDE1LjVMMjMuNSAxN00yMiAxMy41TDIyIDEzLjhDMjEuMzcgMTMuNDQgMjAuNjcgMTMuMTkgMTkuOTQgMTMuMDdDMTkuNzUgMTIuNDUgMTkuMTggMTIgMTguNSAxMkgxN1Y3SDEyVjUuNUMxMiA0LjY3IDExLjMzIDQgMTAuNSA0QzkuNjcgNCA5IDQuNjcgOSA1LjVWN0g0TDQgOS4xMkM1Ljc2IDkuOCA3IDExLjUgNyAxMy41QzcgMTUuNSA1Ljc1IDE3LjIgNCAxNy44OFYyMEg2LjEyQzYuOCAxOC4yNSA4LjUgMTcgMTAuNSAxN0MxMS40NyAxNyAxMi4zNyAxNy4zIDEzLjEyIDE3LjhMMTMgMTlDMTMgMjAuMDkgMTMuMjkgMjEuMTIgMTMuOCAyMkgxMy4yVjIxLjdDMTMuMiAyMC4yMSAxMiAxOSAxMC41IDE5QzkgMTkgNy44IDIwLjIxIDcuOCAyMS43VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNUM1IDEyIDMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMkMxMi4yNiAyIDEzLjcyIDMuMyAxMy45NiA1SDE3QzE4LjEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC43IDEwLjI4IDIyIDExLjc0IDIyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlRWRpdCA9IFwiTTIxLjA0IDEyLjEzQzIwLjkgMTIuMTMgMjAuNzYgMTIuMTkgMjAuNjUgMTIuM0wxOS42NSAxMy4zTDIxLjcgMTUuMzVMMjIuNyAxNC4zNUMyMi45MiAxNC4xNCAyMi45MiAxMy43OSAyMi43IDEzLjU4TDIxLjQyIDEyLjNDMjEuMzEgMTIuMTkgMjEuMTggMTIuMTMgMjEuMDQgMTIuMTNNMTkuMDcgMTMuODhMMTMgMTkuOTRWMjJIMTUuMDZMMjEuMTIgMTUuOTNMMTkuMDcgMTMuODhNMTkgMTEuMTJMMTEuOTEgMTguMkMxMS41IDE3Ljk1IDExIDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExLjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZUVkaXRPdXRsaW5lID0gXCJNMjEuMDQgMTIuMTNDMjAuOSAxMi4xMyAyMC43NiAxMi4xOSAyMC42NSAxMi4zTDE5LjY1IDEzLjNMMjEuNyAxNS4zNUwyMi43IDE0LjM1QzIyLjkyIDE0LjE0IDIyLjkyIDEzLjc5IDIyLjcgMTMuNThMMjEuNDIgMTIuM0MyMS4zMSAxMi4xOSAyMS4xOCAxMi4xMyAyMS4wNCAxMi4xM00xOS4wNyAxMy44OEwxMyAxOS45NFYyMkgxNS4wNkwyMS4xMiAxNS45M0wxOS4wNyAxMy44OE0xMS4wNSAxOS4wNkMxMC44NyAxOSAxMC42OSAxOSAxMC41IDE5QzkgMTkgNy44IDIwLjIxIDcuOCAyMS43VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxNi4ySDIuM0MzLjc5IDE2LjIgNSAxNSA1IDEzLjVTMy43OSAxMC44IDIuMyAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVINy4wNEM3LjI4IDMuMyA4Ljc0IDIgMTAuNSAyUzEzLjcyIDMuMyAxMy45NiA1SDE3QzE4LjExIDUgMTkgNS45IDE5IDdWMTAuMDRDMTkuMzYgMTAuMDkgMTkuNjkgMTAuMjEgMjAgMTAuMzZDMTkuNzMgMTAuNSAxOS40NiAxMC42NiAxOS4yNCAxMC44OUwxOC4xMiAxMkgxN1Y3SDEyVjUuNUMxMiA0LjY3IDExLjMzIDQgMTAuNSA0UzkgNC42NyA5IDUuNVY3SDRWOS4xMkM1Ljc2IDkuOCA3IDExLjUgNyAxMy41UzUuNzUgMTcuMiA0IDE3Ljg4VjIwSDYuMTJDNi44IDE4LjI1IDguNSAxNyAxMC41IDE3QzExLjI2IDE3IDEyIDE3LjE4IDEyLjYxIDE3LjVMMTEuMDUgMTkuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlSGVhcnQgPSBcIk0xOSAyMi4zTDE4LjQgMjEuOEMxNi40IDE5LjkgMTUgMTguNyAxNSAxNy4yQzE1IDE2IDE2IDE1IDE3LjIgMTVDMTcuOSAxNSAxOC42IDE1LjMgMTkgMTUuOEMxOS40IDE1LjMgMjAuMSAxNSAyMC44IDE1QzIyIDE1IDIzIDE1LjkgMjMgMTcuMkMyMyAxOC43IDIxLjYgMTkuOSAxOS42IDIxLjhMMTkgMjIuM00yMC41IDExSDE5VjdDMTkgNS44OSAxOC4xIDUgMTcgNUgxM1YzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0QzIuOSA1IDIgNS45IDIgN1YxMC44SDMuNUM1IDEwLjggNi4yIDEyIDYuMiAxMy41UzUgMTYuMiAzLjUgMTYuMkgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJINy44VjIwLjVDNy44IDE5IDkgMTcuOCAxMC41IDE3LjhDMTEuNDQgMTcuOCAxMi4yNyAxOC4yNyAxMi43NSAxOUgxMy4wOUMxMy4wNCAxOC42NyAxMyAxOC4zNCAxMyAxOEMxMyAxNC42OSAxNS42OSAxMiAxOSAxMkMyMC41NCAxMiAyMS45NCAxMi41OCAyMyAxMy41M0MyMyAxMy41IDIzIDEzLjUgMjMgMTMuNUMyMyAxMi4xMiAyMS44OCAxMSAyMC41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZUhlYXJ0T3V0bGluZSA9IFwiTTEzLjIgMjJWMjEuN0MxMy4yIDIwLjIxIDEyIDE5IDEwLjUgMTlDOSAxOSA3LjggMjAuMjEgNy44IDIxLjdWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNVMzLjc5IDEwLjggMi4zIDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg3LjA0QzcuMjggMy4zIDguNzQgMiAxMC41IDJTMTMuNzIgMy4zIDEzLjk2IDVIMTdDMTguMTEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC40NSAxMC4yNSAyMS42MSAxMS4zNCAyMS45MSAxMi43NkMyMS4wNSAxMi4yOCAyMC4wNiAxMiAxOSAxMkMxOC44OSAxMiAxOC43OCAxMiAxOC42NyAxMkMxOC42MSAxMiAxOC41NiAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDMgMTcgMTIuMjkgMTcuMjggMTMgMTcuNzRDMTMgMTcuODMgMTMgMTcuOTEgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTQgMjJIMTMuMk0xOSAyMi4zTDE5LjYgMjEuOEMyMS42IDE5LjkgMjMgMTguNyAyMyAxNy4yQzIzIDE1LjkgMjIgMTUgMjAuOCAxNUMyMC4xIDE1IDE5LjQgMTUuMyAxOSAxNS44QzE4LjYgMTUuMyAxNy45IDE1IDE3LjIgMTVDMTYgMTUgMTUgMTYgMTUgMTcuMkMxNSAxOC43IDE2LjQgMTkuOSAxOC40IDIxLjhMMTkgMjIuM1wiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZU1pbnVzID0gXCJNMTMuMDQgMTkuNjFDMTIuNjcgMTguNTUgMTEuNjggMTcuOCAxMC41IDE3LjhDOSAxNy44IDcuOCAxOSA3LjggMjAuNVYyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgzLjVDNSAxNi4yIDYuMiAxNSA2LjIgMTMuNVM1IDEwLjggMy41IDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg4VjMuNUM4IDIuMTIgOS4xMiAxIDEwLjUgMVMxMyAyLjEyIDEzIDMuNVY1SDE3QzE4LjEgNSAxOSA1Ljg5IDE5IDdWMTFIMjAuNUMyMS44OCAxMSAyMyAxMi4xMiAyMyAxMy41QzIzIDEzLjgyIDIyLjk0IDE0LjEyIDIyLjgzIDE0LjM5QzIxLjc5IDEzLjUzIDIwLjQ2IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5QzEzIDE5LjIgMTMgMTkuNDEgMTMuMDQgMTkuNjFNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlTWludXNPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVPdXRsaW5lID0gXCJNMjIsMTMuNUMyMiwxNS4yNiAyMC43LDE2LjcyIDE5LDE2Ljk2VjIwQTIsMiAwIDAsMSAxNywyMkgxMy4yVjIxLjdBMi43LDIuNyAwIDAsMCAxMC41LDE5QzksMTkgNy44LDIwLjIxIDcuOCwyMS43VjIySDRBMiwyIDAgMCwxIDIsMjBWMTYuMkgyLjNDMy43OSwxNi4yIDUsMTUgNSwxMy41QzUsMTIgMy43OSwxMC44IDIuMywxMC44SDJWN0EyLDIgMCAwLDEgNCw1SDcuMDRDNy4yOCwzLjMgOC43NCwyIDEwLjUsMkMxMi4yNiwyIDEzLjcyLDMuMyAxMy45Niw1SDE3QTIsMiAwIDAsMSAxOSw3VjEwLjA0QzIwLjcsMTAuMjggMjIsMTEuNzQgMjIsMTMuNU0xNywxNUgxOC41QTEuNSwxLjUgMCAwLDAgMjAsMTMuNUExLjUsMS41IDAgMCwwIDE4LjUsMTJIMTdWN0gxMlY1LjVBMS41LDEuNSAwIDAsMCAxMC41LDRBMS41LDEuNSAwIDAsMCA5LDUuNVY3SDRWOS4xMkM1Ljc2LDkuOCA3LDExLjUgNywxMy41QzcsMTUuNSA1Ljc1LDE3LjIgNCwxNy44OFYyMEg2LjEyQzYuOCwxOC4yNSA4LjUsMTcgMTAuNSwxN0MxMi41LDE3IDE0LjIsMTguMjUgMTQuODgsMjBIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlUGx1cyA9IFwiTTEzLjA0IDE5LjYxQzEyLjY3IDE4LjU1IDExLjY4IDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExSDIwLjVDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNUMyMyAxMy44MiAyMi45NCAxNC4xMiAyMi44MyAxNC4zOUMyMS43OSAxMy41MyAyMC40NiAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOUMxMyAxOS4yIDEzIDE5LjQxIDEzLjA0IDE5LjYxTTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZVBsdXNPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVSZW1vdmUgPSBcIk0xMy4wNCAxOS42MUMxMi42NyAxOC41NSAxMS42OCAxNy44IDEwLjUgMTcuOEM5IDE3LjggNy44IDE5IDcuOCAyMC41VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxNi4ySDMuNUM1IDE2LjIgNi4yIDE1IDYuMiAxMy41UzUgMTAuOCAzLjUgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDhWMy41QzggMi4xMiA5LjEyIDEgMTAuNSAxUzEzIDIuMTIgMTMgMy41VjVIMTdDMTguMSA1IDE5IDUuODkgMTkgN1YxMUgyMC41QzIxLjg4IDExIDIzIDEyLjEyIDIzIDEzLjVDMjMgMTMuODIgMjIuOTQgMTQuMTIgMjIuODMgMTQuMzlDMjEuNzkgMTMuNTMgMjAuNDYgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMiAxMyAxOS40MSAxMy4wNCAxOS42MU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVSZW1vdmVPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVTdGFyID0gXCJNMTkgMjAuMDlMMjEuNDUgMjEuNThMMjAuOCAxOC43N0wyMyAxNi44OUwyMC4xMSAxNi42NEwxOSAxNEwxNy44NyAxNi42NEwxNSAxNi44OUwxNy4xOCAxOC43N0wxNi41IDIxLjU4TDE5IDIwLjA5TTIzIDEzLjVDMjMgMTMuNSAyMyAxMy41IDIzIDEzLjUzQzIxLjk0IDEyLjU4IDIwLjU0IDEyIDE5IDEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE4LjM0IDEzLjA0IDE4LjY3IDEzLjA5IDE5SDEyLjc1QzEyLjI3IDE4LjI3IDExLjQ0IDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExSDIwLjVDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVTdGFyT3V0bGluZSA9IFwiTTEzLjIgMjJWMjEuN0MxMy4yIDIwLjIxIDEyIDE5IDEwLjUgMTlDOSAxOSA3LjggMjAuMjEgNy44IDIxLjdWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNVMzLjc5IDEwLjggMi4zIDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg3LjA0QzcuMjggMy4zIDguNzQgMiAxMC41IDJTMTMuNzIgMy4zIDEzLjk2IDVIMTdDMTguMTEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC40NSAxMC4yNSAyMS42MSAxMS4zNCAyMS45MSAxMi43NkMyMS4wNSAxMi4yOCAyMC4wNiAxMiAxOSAxMkMxOC44OSAxMiAxOC43OCAxMiAxOC42NyAxMkMxOC42MSAxMiAxOC41NiAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDMgMTcgMTIuMjkgMTcuMjggMTMgMTcuNzRDMTMgMTcuODMgMTMgMTcuOTEgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTQgMjJIMTMuMk0xOSAyMC4wOUwxNi41IDIxLjU4TDE3LjE4IDE4Ljc3TDE1IDE2Ljg5TDE3Ljg3IDE2LjY0TDE5IDE0TDIwLjExIDE2LjY0TDIzIDE2Ljg5TDIwLjggMTguNzdMMjEuNDUgMjEuNThMMTkgMjAuMDlcIjtcclxuZXhwb3J0IHZhciBtZGlRaSA9IFwiTTEyLjA5LDYuNTZWMTQuNjRDMTIuMDksMTQuNzIgMTIsMTQuNzkgMTEuOTQsMTQuNzlDOS42MiwxNC43OSA3Ljc1LDEyLjkxIDcuNzUsMTAuNkM3Ljc1LDguMjggOS42Miw2LjQgMTEuOTQsNi40QzEyLDYuNCAxMi4wOSw2LjQ3IDEyLjA5LDYuNTZNMTIuMDksMTcuODZWMjAuMjlDMTIuMDYsMjEuNjkgMTMuMTIsMjIuODcgMTQuNSwyM0MxNC42NiwyMyAxNC43OCwyMi44OSAxNC43OSwyMi43M1Y0LjQ3QzE0Ljc4LDQuMyAxNC42OCw0LjE1IDE0LjUsNC4wOUMxMC45MiwyLjY3IDYuODYsNC40NCA1LjQ0LDguMDNDNCwxMS42MyA1Ljc5LDE1LjY5IDkuMzgsMTcuMTFDMTAuMTYsMTcuNDIgMTEsMTcuNTggMTEuODEsMTcuNkMxMS45NSwxNy41OSAxMi4wNywxNy43MSAxMi4wOCwxNy44N00xNi4xOSw1LjVWMTUuNzJDMTYuMTksMTYgMTYuMTksMTYuMiAxNi40NiwxNlYxNkMxOS40MiwxMy41IDE5LjgxLDkuMDkgMTcuMzMsNi4xM0MxNy4wNyw1LjgxIDE2Ljc3LDUuNSAxNi40Niw1LjI2QzE2LjE5LDUuMDUgMTYuMTksNS4yNiAxNi4xOSw1LjUzTTE0Ljc5LDIuNDNDMTQuNzksMS42NiAxNS40MiwxLjAzIDE2LjE5LDEuMDNDMTYuOTYsMS4wMyAxNy41OSwxLjY2IDE3LjU5LDIuNDNDMTcuNTksMy4yIDE2Ljk2LDMuODMgMTYuMTksMy44M1YzLjgzQzE1LjQyLDMuODMgMTQuNzksMy4yIDE0Ljc5LDIuNDNcIjtcclxuZXhwb3J0IHZhciBtZGlRcWNoYXQgPSBcIk0zLjE4LDEzLjU0QzMuNzYsMTIuMTYgNC41NywxMS4xNCA1LjE3LDEwLjkyQzUuMTYsMTAuMTIgNS4zMSw5LjYyIDUuNTYsOS4yMkM1LjU2LDkuMTkgNS41LDguODYgNS43Miw4LjQ1QzUuODcsNC44NSA4LjIxLDIgMTIsMkMxNS43OSwyIDE4LjEzLDQuODUgMTguMjgsOC40NUMxOC41LDguODYgMTguNDQsOS4xOSAxOC40NCw5LjIyQzE4LjY5LDkuNjIgMTguODQsMTAuMTIgMTguODMsMTAuOTJDMTkuNDMsMTEuMTQgMjAuMjQsMTIuMTYgMjAuODIsMTMuNTVDMjEuNTcsMTUuMzEgMjEuNjksMTcgMjEuMDksMTcuM0MyMC42OCwxNy41IDIwLjAzLDE3IDE5LjQyLDE2LjEyQzE5LjE4LDE3LjEgMTguNTgsMTggMTcuNzMsMTguNzFDMTguNjMsMTkuMDQgMTkuMjEsMTkuNTggMTkuMjEsMjAuMTlDMTkuMjEsMjEuMTkgMTcuNjMsMjIgMTUuNjksMjJDMTMuOTMsMjIgMTIuNSwyMS4zNCAxMi4yMSwyMC41SDExLjc5QzExLjUsMjEuMzQgMTAuMDcsMjIgOC4zMSwyMkM2LjM3LDIyIDQuNzksMjEuMTkgNC43OSwyMC4xOUM0Ljc5LDE5LjU4IDUuMzcsMTkuMDQgNi4yNywxOC43MUM1LjQyLDE4IDQuODIsMTcuMSA0LjU4LDE2LjEyQzMuOTcsMTcgMy4zMiwxNy41IDIuOTEsMTcuM0MyLjMxLDE3IDIuNDMsMTUuMzEgMy4xOCwxMy41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlRcmNvZGUgPSBcIk0zLDExSDVWMTNIM1YxMU0xMSw1SDEzVjlIMTFWNU05LDExSDEzVjE1SDExVjEzSDlWMTFNMTUsMTFIMTdWMTNIMTlWMTFIMjFWMTNIMTlWMTVIMjFWMTlIMTlWMjFIMTdWMTlIMTNWMjFIMTFWMTdIMTVWMTVIMTdWMTNIMTVWMTFNMTksMTlWMTVIMTdWMTlIMTlNMTUsM0gyMVY5SDE1VjNNMTcsNVY3SDE5VjVIMTdNMywzSDlWOUgzVjNNNSw1VjdIN1Y1SDVNMywxNUg5VjIxSDNWMTVNNSwxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlRWRpdCA9IFwiTTUsNUg3VjdINVY1TTEsMUgxMVYxMUgxVjFNMywzVjlIOVYzSDNNNSwxN0g3VjE5SDVWMTdNMSwxM0gxMVYyM0gxVjEzTTMsMTVWMjFIOVYxNUgzTTEzLDEzSDE3VjE1SDE5VjEzSDIzVjE1SDE5VjE3SDIzVjIzSDE5VjIxSDE1VjIzSDEzVjIxSDE1VjE5SDEzVjEzTTIxLDIxVjE5SDE5VjIxSDIxTTE5LDE3SDE3VjE1SDE1VjE5SDE5VjE3TTIyLjcsMy4zNUwyMS43LDQuMzVMMTkuNjUsMi4zNUwyMC42NSwxLjM1QzIwLjg1LDEuMTQgMjEuMTksMS4xMyAyMS40MiwxLjM1TDIyLjcsMi41OEMyMi45MSwyLjc4IDIyLjkyLDMuMTIgMjIuNywzLjM1TTEzLDguOTRMMTkuMDcsMi44OEwyMS4xMiw0LjkzTDE1LjA2LDExSDEzVjguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlTWludXMgPSBcIk01IDVIN1Y3SDVWNU0xIDFIMTFWMTFIMVYxTTMgM1Y5SDlWM0gzTTUgMTdIN1YxOUg1VjE3TTEgMTNIMTFWMjNIMVYxM00zIDE1VjIxSDlWMTVIM00xMyAxM0gxN1YxNUgxOVYxM0gyM1YxNUgxOVYxN0gyM1YyM0gxOVYyMUgxNVYyM0gxM1YyMUgxNVYxOUgxM1YxM00yMSAyMVYxOUgxOVYyMUgyMU0xOSAxN0gxN1YxNUgxNVYxOUgxOVYxN00xNCA1VjdIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlRcmNvZGVQbHVzID0gXCJNNSA1SDdWN0g1VjVNMSAxSDExVjExSDFWMU0zIDNWOUg5VjNIM001IDE3SDdWMTlINVYxN00xIDEzSDExVjIzSDFWMTNNMyAxNVYyMUg5VjE1SDNNMTMgMTNIMTdWMTVIMTlWMTNIMjNWMTVIMTlWMTdIMjNWMjNIMTlWMjFIMTVWMjNIMTNWMjFIMTVWMTlIMTNWMTNNMjEgMjFWMTlIMTlWMjFIMjFNMTkgMTdIMTdWMTVIMTVWMTlIMTlWMTdNMTcgMlY1SDE0VjdIMTdWMTBIMTlWN0gyMlY1SDE5VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlUmVtb3ZlID0gXCJNNSA1SDdWN0g1VjVNMSAxSDExVjExSDFWMU0zIDNWOUg5VjNIM001IDE3SDdWMTlINVYxN00xIDEzSDExVjIzSDFWMTNNMyAxNVYyMUg5VjE1SDNNMTMgMTNIMTdWMTVIMTlWMTNIMjNWMTVIMTlWMTdIMjNWMjNIMTlWMjFIMTVWMjNIMTNWMjFIMTVWMTlIMTNWMTNNMjEgMjFWMTlIMTlWMjFIMjFNMTkgMTdIMTdWMTVIMTVWMTlIMTlWMTdNMTUuMTcgMS43NkwxMy43NiAzLjE3TDE2LjU5IDZMMTMuNzYgOC44M0wxNS4xNyAxMC4yNEwxOCA3LjQxTDIwLjgzIDEwLjI0TDIyLjI0IDguODNMMTkuNDEgNkwyMi4yNCAzLjE3TDIwLjgzIDEuNzZMMTggNC41OUwxNS4xNyAxLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVFyY29kZVNjYW4gPSBcIk00LDRIMTBWMTBINFY0TTIwLDRWMTBIMTRWNEgyME0xNCwxNUgxNlYxM0gxNFYxMUgxNlYxM0gxOFYxMUgyMFYxM0gxOFYxNUgyMFYxOEgxOFYyMEgxNlYxOEgxM1YyMEgxMVYxNkgxNFYxNU0xNiwxNVYxOEgxOFYxNUgxNk00LDIwVjE0SDEwVjIwSDRNNiw2VjhIOFY2SDZNMTYsNlY4SDE4VjZIMTZNNiwxNlYxOEg4VjE2SDZNNCwxMUg2VjEzSDRWMTFNOSwxMUgxM1YxNUgxMVYxM0g5VjExTTExLDZIMTNWMTBIMTFWNk0yLDJWNkgwVjJBMiwyIDAgMCwxIDIsMEg2VjJIMk0yMiwwQTIsMiAwIDAsMSAyNCwyVjZIMjJWMkgxOFYwSDIyTTIsMThWMjJINlYyNEgyQTIsMiAwIDAsMSAwLDIyVjE4SDJNMjIsMjJWMThIMjRWMjJBMiwyIDAgMCwxIDIyLDI0SDE4VjIySDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVF1YWRjb3B0ZXIgPSBcIk01LjUsMUM4LDEgMTAsMyAxMCw1LjVDMTAsNi4zOCA5Ljc1LDcuMiA5LjMxLDcuOUw5LjQxLDhIMTQuNTlMMTQuNjksNy45QzE0LjI1LDcuMiAxNCw2LjM4IDE0LDUuNUMxNCwzIDE2LDEgMTguNSwxQzIxLDEgMjMsMyAyMyw1LjVDMjMsOCAyMSwxMCAxOC41LDEwQzE3LjYyLDEwIDE2LjgsOS43NSAxNi4xLDkuMzFMMTUsMTAuNDFWMTMuNTlMMTYuMSwxNC42OUMxNi44LDE0LjI1IDE3LjYyLDE0IDE4LjUsMTRDMjEsMTQgMjMsMTYgMjMsMTguNUMyMywyMSAyMSwyMyAxOC41LDIzQzE2LDIzIDE0LDIxIDE0LDE4LjVDMTQsMTcuNjIgMTQuMjUsMTYuOCAxNC42OSwxNi4xTDE0LjU5LDE2SDkuNDFMOS4zMSwxNi4xQzkuNzUsMTYuOCAxMCwxNy42MiAxMCwxOC41QzEwLDIxIDgsMjMgNS41LDIzQzMsMjMgMSwyMSAxLDE4LjVDMSwxNiAzLDE0IDUuNSwxNEM2LjM4LDE0IDcuMiwxNC4yNSA3LjksMTQuNjlMOSwxMy41OVYxMC40MUw3LjksOS4zMUM3LjIsOS43NSA2LjM4LDEwIDUuNSwxMEMzLDEwIDEsOCAxLDUuNUMxLDMgMywxIDUuNSwxTTUuNSwzQTIuNSwyLjUgMCAwLDAgMyw1LjVBMi41LDIuNSAwIDAsMCA1LjUsOEEyLjUsMi41IDAgMCwwIDgsNS41QTIuNSwyLjUgMCAwLDAgNS41LDNNNS41LDE2QTIuNSwyLjUgMCAwLDAgMywxOC41QTIuNSwyLjUgMCAwLDAgNS41LDIxQTIuNSwyLjUgMCAwLDAgOCwxOC41QTIuNSwyLjUgMCAwLDAgNS41LDE2TTE4LjUsM0EyLjUsMi41IDAgMCwwIDE2LDUuNUEyLjUsMi41IDAgMCwwIDE4LjUsOEEyLjUsMi41IDAgMCwwIDIxLDUuNUEyLjUsMi41IDAgMCwwIDE4LjUsM00xOC41LDE2QTIuNSwyLjUgMCAwLDAgMTYsMTguNUEyLjUsMi41IDAgMCwwIDE4LjUsMjFBMi41LDIuNSAwIDAsMCAyMSwxOC41QTIuNSwyLjUgMCAwLDAgMTguNSwxNk0zLjkxLDE3LjI1TDUuMDQsMTcuOTFDNS4xNywxNy44MSA1LjMzLDE3Ljc1IDUuNSwxNy43NUEwLjc1LDAuNzUgMCAwLDEgNi4yNSwxOC41TDYuMjQsMTguNkw3LjM3LDE5LjI1TDcuMDksMTkuNzVMNS45NiwxOS4wOUM1LjgzLDE5LjE5IDUuNjcsMTkuMjUgNS41LDE5LjI1QTAuNzUsMC43NSAwIDAsMSA0Ljc1LDE4LjVMNC43NiwxOC40TDMuNjMsMTcuNzVMMy45MSwxNy4yNU0zLjYzLDYuMjVMNC43Niw1LjZMNC43NSw1LjVBMC43NSwwLjc1IDAgMCwxIDUuNSw0Ljc1QzUuNjcsNC43NSA1LjgzLDQuODEgNS45Niw0LjkxTDcuMDksNC4yNUw3LjM3LDQuNzVMNi4yNCw1LjRMNi4yNSw1LjVBMC43NSwwLjc1IDAgMCwxIDUuNSw2LjI1QzUuMzMsNi4yNSA1LjE3LDYuMTkgNS4wNCw2LjA5TDMuOTEsNi43NUwzLjYzLDYuMjVNMTYuOTEsNC4yNUwxOC4wNCw0LjkxQzE4LjE3LDQuODEgMTguMzMsNC43NSAxOC41LDQuNzVBMC43NSwwLjc1IDAgMCwxIDE5LjI1LDUuNUwxOS4yNCw1LjZMMjAuMzcsNi4yNUwyMC4wOSw2Ljc1TDE4Ljk2LDYuMDlDMTguODMsNi4xOSAxOC42Nyw2LjI1IDE4LjUsNi4yNUEwLjc1LDAuNzUgMCAwLDEgMTcuNzUsNS41TDE3Ljc2LDUuNEwxNi42Myw0Ljc1TDE2LjkxLDQuMjVNMTYuNjMsMTkuMjVMMTcuNzUsMTguNUEwLjc1LDAuNzUgMCAwLDEgMTguNSwxNy43NUMxOC42NywxNy43NSAxOC44MywxNy44MSAxOC45NiwxNy45MUwyMC4wOSwxNy4yNUwyMC4zNywxNy43NUwxOS4yNSwxOC41QTAuNzUsMC43NSAwIDAsMSAxOC41LDE5LjI1QzE4LjMzLDE5LjI1IDE4LjE3LDE5LjE5IDE4LjA0LDE5LjA5TDE2LjkxLDE5Ljc1TDE2LjYzLDE5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVF1YWxpdHlIaWdoID0gXCJNMTQuNSwxMy41SDE2LjVWMTAuNUgxNC41TTE4LDE0QTEsMSAwIDAsMSAxNywxNUgxNi4yNVYxNi41SDE0Ljc1VjE1SDE0QTEsMSAwIDAsMSAxMywxNFYxMEExLDEgMCAwLDEgMTQsOUgxN0ExLDEgMCAwLDEgMTgsMTBNMTEsMTVIOS41VjEzSDcuNVYxNUg2VjlINy41VjExLjVIOS41VjlIMTFNMTksNEg1QzMuODksNCAzLDQuODkgMyw2VjE4QTIsMiAwIDAsMCA1LDIwSDE5QTIsMiAwIDAsMCAyMSwxOFY2QzIxLDQuODkgMjAuMSw0IDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXVhbGl0eUxvdyA9IFwiTTE0LjUsMTMuNUgxNi41VjEwLjVIMTQuNU0xOCwxNEMxOCwxNC42IDE3LjYsMTUgMTcsMTVIMTYuMjVWMTYuNUgxNC43NVYxNUgxNEMxMy40LDE1IDEzLDE0LjYgMTMsMTRWMTBDMTMsOS40IDEzLjQsOSAxNCw5SDE3QzE3LjYsOSAxOCw5LjQgMTgsMTBNMTksNEg1QTIsMiAwIDAsMCAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjZBMiwyIDAgMCwwIDE5LDRNMTEsMTMuNVYxNUg2VjlINy41VjEzLjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXVhbGl0eU1lZGl1bSA9IFwiTTIxLDZWMThBMiwyIDAgMCwxIDE5LDIwSDVBMiwyIDAgMCwxIDMsMThWNkEyLDIgMCAwLDEgNSw0SDE5QTIsMiAwIDAsMSAyMSw2TTEyLDEwQzEyLDkuNSAxMS41LDkgMTEsOUg2LjVDNiw5IDUuNSw5LjUgNS41LDEwVjE1SDdWMTAuNUg4VjE0SDkuNVYxMC41SDEwLjVWMTVIMTJWMTBNMTQuNSw5QTEsMSAwIDAsMCAxMy41LDEwVjE0QTEsMSAwIDAsMCAxNC41LDE1SDE1LjVWMTYuNUgxNi43NVYxNUgxNy41QTEsMSAwIDAsMCAxOC41LDE0VjEwQTEsMSAwIDAsMCAxNy41LDlIMTQuNU0xNSwxMC41SDE3VjEzLjVIMTVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlRdW9yYSA9IFwiTTE5LjcsMTguOEMyMC4yLDE4LjIgMjAuMSwxNy43IDIwLjEsMTcuN0gyMS42QzIxLjYsMTcuNyAyMS42LDE4LjEgMjEuNSwxOC42QzIxLjQsMTkgMjEuMywxOS4zIDIxLjIsMTkuNkMyMSwyMC4zIDIwLDIxLjEgMjAsMjEuMUMxOC45LDIyIDE3LjcsMjEuOSAxNy43LDIxLjlDMTcuNywyMS45IDE2LjMsMjIuMSAxNS4yLDIxLjRDMTQuMSwyMC43IDEzLjIsMTkuMiAxMy4yLDE5LjJDMTMuMiwxOS4yIDguOCwyMC40IDUuNCwxNy41QzIsMTQuNiAyLjIsMTEuMSAyLjIsMTAuOEMyLjIsMTAuMSAyLjYsMi4zIDEwLjgsMkMxNS42LDEuOCAxOC4yLDQuOCAxOS4yLDcuMkMxOS45LDguOSAxOS45LDEwLjIgMTkuOSwxMC40QzE5LjksMTAuNiAxOS45LDExLjUgMTkuNywxMi40QzE5LjYsMTMuMyAxOS4yLDE0LjMgMTguOSwxNC44QzE4LjYsMTUuMyAxOC4yLDE2IDE3LjcsMTYuNUMxNy4yLDE3LjEgMTYuNiwxNy42IDE2LjUsMTcuN0MxNi41LDE3LjcgMTcuNSwxOC45IDE4LjEsMTkuMUMxOC4zLDE5LjEgMTkuMiwxOS40IDE5LjcsMTguOE0xMi43LDE3LjNDMTIuOCwxNy4yIDEyLjQsMTYuNyAxMi4yLDE2LjRDMTIsMTYuMSAxMi4zLDE2LjUgMTEuNSwxNS40QzExLjIsMTQuOSAxMC44LDE0LjcgMTAuMiwxNC42QzEwLDE0LjYgOS43LDE0LjYgOS41LDE0LjZDOSwxNC42IDguNywxNC43IDguNiwxNC43QzguNiwxNC42IDguNCwxNC40IDguMywxNC4yQzguMiwxNCA4LjIsMTMuNyA4LjIsMTMuN0M4LjIsMTMuNSA5LjcsMTIuOCAxMS40LDEyLjhDMTIuOCwxMi44IDEzLjgsMTMuNiAxNC4yLDE0QzE0LjYsMTQuMyAxNC43LDE0LjcgMTUuMSwxNUMxNS4xLDE1IDE1LjIsMTUgMTUuMiwxNS4xQzE1LjYsMTUuNCAxNi4xLDEyLjEgMTYsOS45QzE1LjksNy43IDE1LjgsNi42IDE1LDUuNUMxNC4zLDQuNSAxMi44LDMuNyAxMS40LDMuN0MxMC43LDMuNyA4LjQsMy44IDcuNCw1LjVDNi4yLDcuNSA2LjQsMTEuMSA2LjQsMTEuMUM2LjQsMTEuMSA2LjEsMTQuMyA3LjgsMTZDOS41LDE3LjcgMTEuMiwxNy40IDEyLDE3LjRMMTIuNywxNy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhYmJpdCA9IFwiTTE4LjA1LDIxTDE1LjMyLDE2LjI2QzE1LjMyLDE0LjUzIDE0LjI1LDEzLjQyIDEyLjk1LDEzLjQyQzEyLjA1LDEzLjQyIDExLjI3LDEzLjkyIDEwLjg3LDE0LjY2QzExLjIsMTQuNDcgMTEuNTksMTQuMzcgMTIsMTQuMzdDMTMuMywxNC4zNyAxNC4zNiwxNS40MyAxNC4zNiwxNi43M0MxNC4zNiwxOC4wNCAxMy4zMSwxOS4xMSAxMiwxOS4xMUgxNS4zVjIxSDYuNzlDNi41NSwyMSA2LjMsMjAuOTEgNi4xMiwyMC43MkM1Ljc1LDIwLjM1IDUuNzUsMTkuNzUgNi4xMiwxOS4zOFYxOS4zOEw2LjYyLDE4Ljg4QzYuMjgsMTguNzMgNiwxOC41IDUuNzIsMTguMjZDNS41LDE4Ljc2IDUsMTkuMTEgNC40MiwxOS4xMUMzLjY0LDE5LjExIDMsMTguNDcgMywxNy42OEMzLDE2LjkgMy42NCwxNi4yNiA0LjQyLDE2LjI2TDQuODksMTYuMzRWMTQuMzdDNC44OSwxMS43NSA3LDkuNjMgOS42Myw5LjYzSDkuNjVDMTEuNzcsOS42NCAxMy40MiwxMC40NyAxMy40Miw5LjE2QzEzLjQyLDguMjMgMTMuNjIsNy44NiAxMy45Niw3LjM0QzEzLjIzLDcgMTIuNCw2Ljc5IDExLjUzLDYuNzlDMTEsNi43OSAxMC41OCw2LjM3IDEwLjU4LDUuODRDMTAuNTgsNS40MSAxMC44Niw1LjA1IDExLjI1LDQuOTNMMTAuNTgsNC44OUMxMC4wNiw0Ljg5IDkuNjMsNC40NyA5LjYzLDMuOTVDOS42MywzLjQyIDEwLjA2LDMgMTAuNTgsM0gxMS41M0MxMy42MywzIDE1LjQ3LDQuMTUgMTYuNDYsNS44NUwxNi43NCw1Ljg0QzE3LjQ1LDUuODQgMTguMTEsNi4wNyAxOC42NSw2LjQ1TDE5LjEsNi44M0MyMS4yNyw4Ljc4IDIxLDEwLjEgMjEsMTAuMTFDMjEsMTEuMzkgMTkuOTQsMTIuNDQgMTguNjUsMTIuNDRMMTguMTYsMTIuMzlWMTIuNDdDMTguMTYsMTMuNTggMTcuNjgsMTQuNTcgMTYuOTMsMTUuMjdMMjAuMjQsMjFIMTguMDVNMTguMTYsNy43NEMxNy42Myw3Ljc0IDE3LjIxLDguMTYgMTcuMjEsOC42OEMxNy4yMSw5LjIxIDE3LjYzLDkuNjMgMTguMTYsOS42M0MxOC42OCw5LjYzIDE5LjExLDkuMjEgMTkuMTEsOC42OEMxOS4xMSw4LjE2IDE4LjY4LDcuNzQgMTguMTYsNy43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWNpbmdIZWxtZXQgPSBcIk0yLjIsMTEuMkMyLDEzLjYgMi43LDE1LjYgNC4yLDE3LjRDNS43LDE5LjIgNy43LDIwIDEwLjEsMjBIMjAuMUMyMC42LDIwIDIxLjEsMTkuOCAyMS41LDE5LjRDMjEuOSwxOSAyMi4xLDE4LjUgMjIuMSwxOFYxNy4yQzIyLjEsMTYuNiAyMiwxNS45IDIxLjksMTVIMTMuN0MxMi43LDE1IDExLjksMTQuNiAxMS4yLDEzLjlDMTAuNSwxMy4yIDEwLjEsMTIuMyAxMC4xLDExLjRDMTAuMSw5LjggMTAuOCw4LjcgMTIuMyw4LjFMMTcuMSw2QzE1LjQsNC44IDEzLjQsNC4xIDExLjEsNEM4LjksMy44IDYuOSw0LjUgNS4xLDUuOUMzLjMsNy4zIDIuNCw5IDIuMiwxMS4yTTEyLjEsMTEuNEMxMi4xLDExLjggMTIuMywxMi4yIDEyLjYsMTIuNUMxMi45LDEyLjggMTMuMywxMyAxMy43LDEzSDIxLjVDMjAuOSwxMC44IDIwLDkgMTguNyw3LjZMMTMuMSw5LjlDMTIuNCwxMC4xIDEyLjEsMTAuNiAxMi4xLDExLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFjcXVldGJhbGwgPSBcIk0xOC41LDE2QzE5LjksMTYgMjEsMTcuMSAyMSwxOC41QzIxLDE5LjkgMTkuOSwyMSAxOC41LDIxQzE3LjEsMjEgMTYsMTkuOSAxNiwxOC41QzE2LDE3LjEgMTcuMSwxNiAxOC41LDE2TTEwLjUsMUMzLDEgMywzLjcgMyw5LjhDMywxMy4yIDYuNCwxNi45IDksMTguMVYyM0gxMlYxOC4xQzE0LjYsMTYuOSAxOCwxMy4yIDE4LDkuOEMxOCwzLjYgMTgsMSAxMC41LDFNMTUuNCw0LjJDMTUuNyw0LjYgMTUuOCw1LjIgMTUuOSw2SDE1VjMuOEMxNS4yLDMuOSAxNS4zLDQuMSAxNS40LDQuMk0xNiw5LjhDMTYsOS45IDE2LDEwIDE2LDEwSDE1VjdIMTZDMTYsNy44IDE2LDguNyAxNiw5LjhNMTQsMTRIMTFWMTFIMTRWMTRNNywxNFYxMUgxMFYxNEg3TTUsOS44QzUsOC44IDUsNy45IDUsN0g2VjEwSDVDNSw5LjkgNSw5LjggNSw5LjhNNyw3SDEwVjEwSDdWN00xMSwzQzEyLjQsMyAxMy40LDMuMiAxNCwzLjNWNkgxMVYzTTEwLDZIN1YzLjRDNy42LDMuMiA4LjYsMyAxMCwzVjZNMTEsMTBWN0gxNFYxMEgxMU02LDMuOFY2SDUuMUM1LjIsNS4yIDUuMyw0LjYgNS42LDQuMkM1LjcsNC4xIDUuOCw0IDYsMy44TTUuMiwxMUg2VjEyLjdDNS43LDEyLjEgNS40LDExLjYgNS4yLDExTTgsMTVIMTBWMTYuM0w5LjgsMTYuMkM5LjIsMTYgOC42LDE1LjUgOCwxNU0xMS4yLDE2LjNIMTFWMTVIMTNDMTIuNCwxNS41IDExLjgsMTYgMTEuMiwxNi4zTTE1LDEyLjdWMTFIMTUuOEMxNS42LDExLjUgMTUuMywxMi4xIDE1LDEyLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkYXIgPSBcIk0xOS4wNyw0LjkzTDE3LjY2LDYuMzRDMTkuMSw3Ljc5IDIwLDkuNzkgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQzQsNy45MiA3LjA1LDQuNTYgMTEsNC4wN1Y2LjA5QzguMTYsNi41NyA2LDkuMDMgNiwxMkE2LDYgMCAwLDAgMTIsMThBNiw2IDAgMCwwIDE4LDEyQzE4LDEwLjM0IDE3LjMzLDguODQgMTYuMjQsNy43NkwxNC44Myw5LjE3QzE1LjU1LDkuOSAxNiwxMC45IDE2LDEyQTQsNCAwIDAsMSAxMiwxNkE0LDQgMCAwLDEgOCwxMkM4LDEwLjE0IDkuMjgsOC41OSAxMSw4LjE0VjEwLjI4QzEwLjQsMTAuNjMgMTAsMTEuMjYgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkMxNCwxMS4yNiAxMy42LDEwLjYyIDEzLDEwLjI4VjJIMTJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw5LjI0IDIwLjg4LDYuNzQgMTkuMDcsNC45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpYXRvciA9IFwiTTcuOTUsM0w2LjUzLDUuMTlMNy45NSw3LjRINy45NEw1Ljk1LDEwLjVMNC4yMiw5LjZMNS42NCw3LjM5TDQuMjIsNS4xOUw2LjIyLDIuMDlMNy45NSwzTTEzLjk1LDIuODlMMTIuNTMsNS4xTDEzLjk1LDcuM0wxMy45NCw3LjMxTDExLjk1LDEwLjRMMTAuMjIsOS41TDExLjY0LDcuM0wxMC4yMiw1LjFMMTIuMjIsMkwxMy45NSwyLjg5TTIwLDIuODlMMTguNTYsNS4xTDIwLDcuM1Y3LjMxTDE4LDEwLjRMMTYuMjUsOS41TDE3LjY3LDcuM0wxNi4yNSw1LjFMMTguMjUsMkwyMCwyLjg5TTIsMjJWMTRBMiwyIDAgMCwxIDQsMTJIMjBBMiwyIDAgMCwxIDIyLDE0VjIySDIwVjIwSDRWMjJIMk02LDE0QTEsMSAwIDAsMCA1LDE1VjE3QTEsMSAwIDAsMCA2LDE4QTEsMSAwIDAsMCA3LDE3VjE1QTEsMSAwIDAsMCA2LDE0TTEwLDE0QTEsMSAwIDAsMCA5LDE1VjE3QTEsMSAwIDAsMCAxMCwxOEExLDEgMCAwLDAgMTEsMTdWMTVBMSwxIDAgMCwwIDEwLDE0TTE0LDE0QTEsMSAwIDAsMCAxMywxNVYxN0ExLDEgMCAwLDAgMTQsMThBMSwxIDAgMCwwIDE1LDE3VjE1QTEsMSAwIDAsMCAxNCwxNE0xOCwxNEExLDEgMCAwLDAgMTcsMTVWMTdBMSwxIDAgMCwwIDE4LDE4QTEsMSAwIDAsMCAxOSwxN1YxNUExLDEgMCAwLDAgMTgsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaWF0b3JEaXNhYmxlZCA9IFwiTTIwLDEySDRBMiwyIDAgMCwwIDIsMTRWMjJINFYyMEgyMFYyMkgyMlYxNEEyLDIgMCAwLDAgMjAsMTJNNywxN0ExLDEgMCAwLDEgNiwxOEExLDEgMCAwLDEgNSwxN1YxNUExLDEgMCAwLDEgNiwxNEExLDEgMCAwLDEgNywxNVYxN00xMSwxN0ExLDEgMCAwLDEgMTAsMThBMSwxIDAgMCwxIDksMTdWMTVBMSwxIDAgMCwxIDEwLDE0QTEsMSAwIDAsMSAxMSwxNVYxN00xNSwxN0ExLDEgMCAwLDEgMTQsMThBMSwxIDAgMCwxIDEzLDE3VjE1QTEsMSAwIDAsMSAxNCwxNEExLDEgMCAwLDEgMTUsMTVWMTdNMTksMTdBMSwxIDAgMCwxIDE4LDE4QTEsMSAwIDAsMSAxNywxN1YxNUExLDEgMCAwLDEgMTgsMTRBMSwxIDAgMCwxIDE5LDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlhdG9yT2ZmID0gXCJNMy4yOCwyTDIsMy4yN0w0Ljc3LDYuMDRMNS42NCw3LjM5TDQuMjIsOS42TDUuOTUsMTAuNUw3LjIzLDguNUwxMC43MywxMkg0QTIsMiAwIDAsMCAyLDE0VjIySDRWMjBIMTguNzNMMjAsMjEuMjdWMjJIMjJWMjAuNzNMMjIsMjAuNzJWMjAuNzJMMy4yOCwyTTcsMTdBMSwxIDAgMCwxIDYsMThBMSwxIDAgMCwxIDUsMTdWMTVBMSwxIDAgMCwxIDYsMTRBMSwxIDAgMCwxIDcsMTVWMTdNMTEsMTdBMSwxIDAgMCwxIDEwLDE4QTEsMSAwIDAsMSA5LDE3VjE1QTEsMSAwIDAsMSAxMCwxNEExLDEgMCAwLDEgMTEsMTVWMTdNMTUsMTdBMSwxIDAgMCwxIDE0LDE4QTEsMSAwIDAsMSAxMywxN1YxNUMxMywxNC43OSAxMy4wOCwxNC42MSAxMy4xOCwxNC40NUwxNSwxNi4yN1YxN00xNi4yNSw5LjVMMTcuNjcsNy4zTDE2LjI1LDUuMUwxOC4yNSwyTDIwLDIuODlMMTguNTYsNS4xTDIwLDcuM1Y3LjMxTDE4LDEwLjRMMTYuMjUsOS41TTIyLDE0VjE4LjE4TDE5LDE1LjE4VjE1QTEsMSAwIDAsMCAxOCwxNEMxNy45NSwxNCAxNy45LDE0IDE3Ljg1LDE0LjAzTDE1LjgyLDEySDIwQzIxLjExLDEyIDIyLDEyLjkgMjIsMTRNMTEuNjQsNy4zTDEwLjIyLDUuMUwxMi4yMiwyTDEzLjk1LDIuODlMMTIuNTMsNS4xTDEzLjk1LDcuM0wxMy45NCw3LjMxTDEyLjg0LDlMMTEuNDQsNy42MkwxMS42NCw3LjNNNy41LDMuNjlMNi4xLDIuMjhMNi4yMiwyLjA5TDcuOTUsM0w3LjUsMy42OVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpbyA9IFwiTTIwLDZBMiwyIDAgMCwxIDIyLDhWMjBBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDIsMjBWOEMyLDcuMTUgMi41Myw2LjQyIDMuMjgsNi4xM0wxNS43MSwxTDE2LjQ3LDIuODNMOC44Myw2SDIwTTIwLDhINFYxMkgxNlYxMEgxOFYxMkgyMFY4TTcsMTRBMywzIDAgMCwwIDQsMTdBMywzIDAgMCwwIDcsMjBBMywzIDAgMCwwIDEwLDE3QTMsMyAwIDAsMCA3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvQW0gPSBcIk01LDdBMiwyIDAgMCwwIDMsOVYxN0g1VjEzSDdWMTdIOVY5QTIsMiAwIDAsMCA3LDdINU01LDlIN1YxMUg1VjlNMTMsN0EyLDIgMCAwLDAgMTEsOVYxN0gxM1Y5SDE1VjE2SDE3VjlIMTlWMTdIMjFWOUEyLDIgMCAwLDAgMTksN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb0ZtID0gXCJNMyw3VjE3SDVWMTNIOFYxMUg1VjlIOVY3SDNNMTMsN0EyLDIgMCAwLDAgMTEsOVYxN0gxM1Y5SDE1VjE2SDE3VjlIMTlWMTdIMjFWOUEyLDIgMCAwLDAgMTksN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb0hhbmRoZWxkID0gXCJNOSwyQTEsMSAwIDAsMCA4LDNDOCw4LjY3IDgsMTQuMzMgOCwyMEM4LDIxLjExIDguODksMjIgMTAsMjJIMTVDMTYuMTEsMjIgMTcsMjEuMTEgMTcsMjBWOUMxNyw3Ljg5IDE2LjExLDcgMTUsN0gxMFYzQTEsMSAwIDAsMCA5LDJNMTAsOUgxNVYxM0gxMFY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvT2ZmID0gXCJNMSA0LjI3TDMgNi4yN0MyLjQgNi42MSAyIDcuMjYgMiA4VjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTguNzNMMjAuNzMgMjRMMjIgMjIuNzJMMi4yOCAzTDEgNC4yN00yMCA2SDguODNMMTYuNDcgMi44M0wxNS43MSAxTDYuNTkgNC43Nkw5LjgyIDhIMjBWMTJIMThWMTBIMTZWMTJIMTMuODJMMjIgMjAuMThWOEMyMiA2LjkgMjEuMTEgNiAyMCA2TTQgOEg0LjczTDguNzMgMTJINFY4TTcgMTRDOC42NiAxNCAxMCAxNS4zNCAxMCAxN0MxMCAxOC42NiA4LjY2IDIwIDcgMjBDNS4zNCAyMCA0IDE4LjY2IDQgMTdDNCAxNS4zNCA1LjM0IDE0IDcgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9Ub3dlciA9IFwiTTEyLDEwQTIsMiAwIDAsMSAxNCwxMkMxNCwxMi41IDEzLjgyLDEyLjk0IDEzLjUzLDEzLjI5TDE2LjcsMjJIMTQuNTdMMTIsMTQuOTNMOS40MywyMkg3LjNMMTAuNDcsMTMuMjlDMTAuMTgsMTIuOTQgMTAsMTIuNSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsOEE0LDQgMCAwLDAgOCwxMkM4LDEyLjUgOC4xLDEzIDguMjgsMTMuNDZMNy40LDE1Ljg2QzYuNTMsMTQuODEgNiwxMy40NyA2LDEyQTYsNiAwIDAsMSAxMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxMy40NyAxNy40NywxNC44MSAxNi42LDE1Ljg2TDE1LjcyLDEzLjQ2QzE1LjksMTMgMTYsMTIuNSAxNiwxMkE0LDQgMCAwLDAgMTIsOE0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTQuMzYgNSwxNi41IDYuNjQsMTcuOTRMNS45MiwxOS45NEMzLjU0LDE4LjExIDIsMTUuMjMgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE1LjIzIDIwLjQ2LDE4LjExIDE4LjA4LDE5Ljk0TDE3LjM2LDE3Ljk0QzE5LDE2LjUgMjAsMTQuMzYgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9hY3RpdmUgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsMjJDMTAuMDUsMjIgOC4yMiwyMS40NCA2LjY5LDIwLjQ3TDEwLDE1LjQ3QzEwLjYsMTUuODEgMTEuMjgsMTYgMTIsMTZDMTIuNzIsMTYgMTMuNCwxNS44MSAxNCwxNS40N0wxNy4zMSwyMC40N0MxNS43OCwyMS40NCAxMy45NSwyMiAxMiwyMk0yLDEyQzIsNy44NiA0LjUsNC4zIDguMTEsMi43OEwxMC4zNCw4LjM2QzguOTYsOSA4LDEwLjM4IDgsMTJIMk0xNiwxMkMxNiwxMC4zOCAxNS4wNCw5IDEzLjY2LDguMzZMMTUuODksMi43OEMxOS41LDQuMyAyMiw3Ljg2IDIyLDEySDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvYWN0aXZlT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMSwyMS43MkwxOS43MywyM0wxNy4yNSwyMC41QzE1LjcyLDIxLjQ2IDEzLjkyLDIyIDEyLDIyQzEwLjA1LDIyIDguMjIsMjEuNDQgNi42OSwyMC40N0wxMCwxNS40N0MxMC42LDE1LjgxIDExLjI4LDE2IDEyLDE2QzEyLjIzLDE2IDEyLjQ2LDE2IDEyLjY3LDE1Ljk0TDguMDYsMTEuMzNDOCwxMS41NCA4LDExLjc3IDgsMTJIMkMyLDEwLjA4IDIuNTQsOC4yOCAzLjUsNi43NUwxLDQuMjdNMTIsMTBBMiwyIDAgMCwxIDE0LDEyVjEyLjE3TDExLjgzLDEwSDEyTTguMTEsMi43OEwxMC4yMyw4LjQxTDUuOSw0LjA4QzYuNTcsMy41NiA3LjMyLDMuMTIgOC4xMSwyLjc4TTE2LDEyQzE2LDEwLjM4IDE1LjA0LDkgMTMuNjYsOC4zNkwxNS44OSwyLjc4QzE5LjUsNC4zIDIyLDcuODYgMjIsMTJIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9ib3hCbGFuayA9IFwiTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9ib3hNYXJrZWQgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb2xvZ3lCb3ggPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM00xNy4xIDEzSDEzVjE0SDE3QzE3IDE0IDE2Ljk0IDE3IDE1LjUgMTdDMTQuMTUgMTcgMTQuNSAxNS40NyAxMyAxNVYxN0MxMyAxNy41NSAxMi41NSAxOCAxMiAxOFMxMSAxNy41NSAxMSAxN1YxNUM5LjUgMTUuNDcgOS44NSAxNyA4LjUgMTdDNy4wNiAxNyA3IDE0IDcgMTRIMTFWMTNINi45QzYuODUgMTIuNjkgNi44NCAxMi4zNSA2LjggMTJIMTFWMTFINi44MUM2LjgzIDEwLjY3IDYuOTEgMTAuMzMgNyAxMEgxMVY5SDcuMzRDNy41IDguNjUgNy42NSA4LjMxIDcuODMgOEgxMVY3QzExIDYuNDUgMTEuNDUgNiAxMiA2UzEzIDYuNDUgMTMgN1Y4SDE2LjE3QzE2LjM1IDguMzEgMTYuNSA4LjY1IDE2LjY2IDlIMTNWMTBIMTdDMTcuMSAxMC4zMyAxNy4xNyAxMC42NyAxNy4xOSAxMUgxM1YxMkgxNy4yQzE3LjE2IDEyLjM1IDE3LjE1IDEyLjY5IDE3LjEgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9sb2d5Qm94T3V0bGluZSA9IFwiTTE5IDVWMTlINVY1SDE5TTE5IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuODkgMjAuMTEgMyAxOSAzTTEyIDZDMTIuNTUgNiAxMyA2LjQ1IDEzIDdWOEgxNi4xN0MxNi4zNSA4LjMxIDE2LjUgOC42NSAxNi42NiA5SDEzVjEwSDE3QzE3LjEgMTAuMzMgMTcuMTcgMTAuNjcgMTcuMTkgMTFIMTNWMTJIMTcuMkMxNy4xNiAxMi4zNSAxNy4xNSAxMi42OSAxNy4xIDEzSDEzVjE0SDE3QzE3IDE0IDE2Ljk0IDE3IDE1LjUgMTdDMTQuMTUgMTcgMTQuNSAxNS40NyAxMyAxNVYxN0MxMyAxNy41NSAxMi41NSAxOCAxMiAxOFMxMSAxNy41NSAxMSAxN1YxNUM5LjUgMTUuNDcgOS44NSAxNyA4LjUgMTdDNy4wNiAxNyA3IDE0IDcgMTRIMTFWMTNINi45QzYuODUgMTIuNjkgNi44NCAxMi4zNSA2LjggMTJIMTFWMTFINi44MUM2LjgzIDEwLjY3IDYuOTEgMTAuMzMgNyAxMEgxMVY5SDcuMzRDNy41IDguNjUgNy42NSA4LjMxIDcuODMgOEgxMVY3QzExIDYuNDUgMTEuNDUgNiAxMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGl1cyA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE3LDE1VjEzSDEzLjcyQzEzLjM2LDEzLjYyIDEyLjcxLDE0IDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBDMTIuNzEsMTAgMTMuMzYsMTAuMzggMTMuNzIsMTFIMTdWOUwyMCwxMkwxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpdXNPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNiwxNVYxM0gxMy43MkMxMy4zNiwxMy42MiAxMi43MSwxNCAxMiwxNEEyLDIgMCAwLDEgMTAsMTJBMiwyIDAgMCwxIDEyLDEwQzEyLjcxLDEwIDEzLjM2LDEwLjM4IDEzLjcyLDExSDE2VjlMMTksMTJMMTYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFpbHJvYWRMaWdodCA9IFwiTTE3LjY3LDEwLjVDMTYuNCwxMC41IDE1LjI3LDExLjMgMTQuODUsMTIuNUgxMy4xN1Y3Ljc3TDE2LjY2LDkuODZMMTcuNjYsOC4xNEwxNC4xMSw2TDE3LjY4LDMuODZMMTYuNjgsMi4xNEwxMy4xNyw0LjIzVjJIMTEuMTdWNC4yM0w3LjY4LDIuMTRMNi42OCwzLjg2TDEwLjIzLDZMNi42Niw4LjE0TDcuNjYsOS44NkwxMS4xNyw3Ljc3VjEyLjVIOS41QzguMzYsOS4zMiAzLjY2LDEwLjEzIDMuNjYsMTMuNUMzLjY2LDE2Ljg3IDguMzYsMTcuNjggOS41LDE0LjVIMTEuMTdWMjBBMiwyIDAgMCwwIDkuMTcsMjJIMTUuMTdBMiwyIDAgMCwwIDEzLjE3LDIwVjE0LjVIMTQuODVDMTUuNjYsMTYuOCAxOC43MywxNy4yMiAyMC4xMywxNS4yM0MyMS41MywxMy4yNCAyMC4xLDEwLjUgMTcuNjcsMTAuNU02LjY3LDE0LjVDNS43OCwxNC41IDUuMzMsMTMuNDIgNS45NiwxMi43OUM2LjU5LDEyLjE2IDcuNjcsMTIuNjEgNy42NywxMy41QTEsMSAwIDAsMSA2LjY3LDE0LjVNMTcuNjcsMTQuNUMxNi43OCwxNC41IDE2LjMzLDEzLjQyIDE2Ljk2LDEyLjc5QzE3LjU5LDEyLjE2IDE4LjY3LDEyLjYxIDE4LjY3LDEzLjVBMSwxIDAgMCwxIDE3LjY3LDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFrZSA9IFwiTTEwLjUgMTcuMDVMOS40MyAxNkwyMi4wNyAzLjM1TDIwLjY2IDEuOTNMOCAxNC41OEw2Ljk1IDEzLjVDNi4xNyAxMi43MyA0LjkgMTIuNzMgNC4xMiAxMy41TDIgMTUuNjRMMi43MSAxNi4zNEw0LjgzIDE0LjIyTDUuNTQgMTQuOTNMMy40MSAxNy4wNUw0LjEyIDE3Ljc2TDYuMjQgMTUuNjRMNi45NSAxNi4zNEw0LjgzIDE4LjQ2TDUuNTQgMTkuMTdMNy42NiAxNy4wNUw4LjM2IDE3Ljc2TDYuMjQgMTkuODhMNi45NSAyMC41OUw5LjA3IDE4LjQ2TDkuNzggMTkuMTdMNy42NiAyMS4yOUw4LjM2IDIyTDEwLjUgMTkuODhDMTEuMjcgMTkuMSAxMS4yNyAxNy44MyAxMC41IDE3LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhc3BiZXJyeVBpID0gXCJNMjAsOEgyMlYxMEgyMFY4TTQsNUgyMEEyLDIgMCAwLDEgMjIsN0gxOVY5SDVWMTNIOFYxNkgxOVYxN0gyMkEyLDIgMCAwLDEgMjAsMTlIMTZWMjBIMTRWMTlIMTFWMjBIN1YxOUg0QTIsMiAwIDAsMSAyLDE3VjdBMiwyIDAgMCwxIDQsNU0xOSwxNUg5VjEwSDE5VjExSDIyVjEzSDE5VjE1TTEzLDEyVjE0SDE1VjEySDEzTTUsNlY4SDZWNkg1TTcsNlY4SDhWNkg3TTksNlY4SDEwVjZIOU0xMSw2VjhIMTJWNkgxMU0xMyw2VjhIMTRWNkgxM00xNSw2VjhIMTZWNkgxNU0yMCwxNEgyMlYxNkgyMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlFbmQgPSBcIk0yMCw5QzE4LjY5LDkgMTcuNTgsOS44MyAxNy4xNywxMUgyVjEzSDE3LjE3QzE3LjU4LDE0LjE3IDE4LjY5LDE1IDIwLDE1QTMsMyAwIDAsMCAyMywxMkEzLDMgMCAwLDAgMjAsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlFbmRBcnJvdyA9IFwiTTEsMTJMNSwxNlYxM0gxNy4xN0MxNy41OCwxNC4xNyAxOC42OSwxNSAyMCwxNUEzLDMgMCAwLDAgMjMsMTJBMywzIDAgMCwwIDIwLDlDMTguNjksOSAxNy41OCw5LjgzIDE3LjE3LDExSDVWOEwxLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJheVN0YXJ0ID0gXCJNNCw5QzUuMzEsOSA2LjQyLDkuODMgNi44MywxMUgyMlYxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmF5U3RhcnRBcnJvdyA9IFwiTTIzLDEyTDE5LDE2VjEzSDYuODNDNi40MiwxNC4xNyA1LjMxLDE1IDQsMTVBMywzIDAgMCwxIDEsMTJBMywzIDAgMCwxIDQsOUM1LjMxLDkgNi40Miw5LjgzIDYuODMsMTFIMTlWOEwyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlTdGFydEVuZCA9IFwiTTQsOUM1LjMxLDkgNi40Miw5LjgzIDYuODMsMTFIMTcuMTdDMTcuNTgsOS44MyAxOC42OSw5IDIwLDlBMywzIDAgMCwxIDIzLDEyQTMsMyAwIDAsMSAyMCwxNUMxOC42OSwxNSAxNy41OCwxNC4xNyAxNy4xNywxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmF5U3RhcnRWZXJ0ZXhFbmQgPSBcIk0yMCA5QzE4LjY5IDkgMTcuNTggOS44MyAxNy4xNyAxMUgxNC44MkMxNC40IDkuODQgMTMuMyA5IDEyIDlTOS42IDkuODQgOS4xOCAxMUg2LjgzQzYuNDIgOS44MyA1LjMxIDkgNCA5QzIuMzQgOSAxIDEwLjM0IDEgMTJTMi4zNCAxNSA0IDE1QzUuMzEgMTUgNi40MiAxNC4xNyA2LjgzIDEzSDkuMThDOS42IDE0LjE2IDEwLjcgMTUgMTIgMTVTMTQuNCAxNC4xNiAxNC44MiAxM0gxNy4xN0MxNy41OCAxNC4xNyAxOC42OSAxNSAyMCAxNUMyMS42NiAxNSAyMyAxMy42NiAyMyAxMlMyMS42NiA5IDIwIDlcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlWZXJ0ZXggPSBcIk0yLDExSDkuMTdDOS41OCw5LjgzIDEwLjY5LDkgMTIsOUMxMy4zMSw5IDE0LjQyLDkuODMgMTQuODMsMTFIMjJWMTNIMTQuODNDMTQuNDIsMTQuMTcgMTMuMzEsMTUgMTIsMTVDMTAuNjksMTUgOS41OCwxNC4xNyA5LjE3LDEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVhY3QgPSBcIk0xMiwxMC4xMUMxMy4wMywxMC4xMSAxMy44NywxMC45NSAxMy44NywxMkMxMy44NywxMyAxMy4wMywxMy44NSAxMiwxMy44NUMxMC45NywxMy44NSAxMC4xMywxMyAxMC4xMywxMkMxMC4xMywxMC45NSAxMC45NywxMC4xMSAxMiwxMC4xMU03LjM3LDIwQzgsMjAuMzggOS4zOCwxOS44IDEwLjk3LDE4LjNDMTAuNDUsMTcuNzEgOS45NCwxNy4wNyA5LjQ2LDE2LjRDOC42NCwxNi4zMiA3LjgzLDE2LjIgNy4wNiwxNi4wNEM2LjU1LDE4LjE4IDYuNzQsMTkuNjUgNy4zNywyME04LjA4LDE0LjI2TDcuNzksMTMuNzVDNy42OCwxNC4wNCA3LjU3LDE0LjMzIDcuNSwxNC42MUM3Ljc3LDE0LjY3IDguMDcsMTQuNzIgOC4zOCwxNC43N0M4LjI4LDE0LjYgOC4xOCwxNC40MyA4LjA4LDE0LjI2TTE0LjYyLDEzLjVMMTUuNDMsMTJMMTQuNjIsMTAuNUMxNC4zMiw5Ljk3IDE0LDkuNSAxMy43MSw5LjAzQzEzLjE3LDkgMTIuNiw5IDEyLDlDMTEuNCw5IDEwLjgzLDkgMTAuMjksOS4wM0MxMCw5LjUgOS42OCw5Ljk3IDkuMzgsMTAuNUw4LjU3LDEyTDkuMzgsMTMuNUM5LjY4LDE0LjAzIDEwLDE0LjUgMTAuMjksMTQuOTdDMTAuODMsMTUgMTEuNCwxNSAxMiwxNUMxMi42LDE1IDEzLjE3LDE1IDEzLjcxLDE0Ljk3QzE0LDE0LjUgMTQuMzIsMTQuMDMgMTQuNjIsMTMuNU0xMiw2Ljc4QzExLjgxLDcgMTEuNjEsNy4yMyAxMS40MSw3LjVDMTEuNjEsNy41IDExLjgsNy41IDEyLDcuNUMxMi4yLDcuNSAxMi4zOSw3LjUgMTIuNTksNy41QzEyLjM5LDcuMjMgMTIuMTksNyAxMiw2Ljc4TTEyLDE3LjIyQzEyLjE5LDE3IDEyLjM5LDE2Ljc3IDEyLjU5LDE2LjVDMTIuMzksMTYuNSAxMi4yLDE2LjUgMTIsMTYuNUMxMS44LDE2LjUgMTEuNjEsMTYuNSAxMS40MSwxNi41QzExLjYxLDE2Ljc3IDExLjgxLDE3IDEyLDE3LjIyTTE2LjYyLDRDMTYsMy42MiAxNC42Miw0LjIgMTMuMDMsNS43QzEzLjU1LDYuMjkgMTQuMDYsNi45MyAxNC41NCw3LjZDMTUuMzYsNy42OCAxNi4xNyw3LjggMTYuOTQsNy45NkMxNy40NSw1LjgyIDE3LjI2LDQuMzUgMTYuNjIsNE0xNS45Miw5Ljc0TDE2LjIxLDEwLjI1QzE2LjMyLDkuOTYgMTYuNDMsOS42NyAxNi41LDkuMzlDMTYuMjMsOS4zMyAxNS45Myw5LjI4IDE1LjYyLDkuMjNDMTUuNzIsOS40IDE1LjgyLDkuNTcgMTUuOTIsOS43NE0xNy4zNywyLjY5QzE4Ljg0LDMuNTMgMTksNS43NCAxOC4zOCw4LjMyQzIwLjkyLDkuMDcgMjIuNzUsMTAuMzEgMjIuNzUsMTJDMjIuNzUsMTMuNjkgMjAuOTIsMTQuOTMgMTguMzgsMTUuNjhDMTksMTguMjYgMTguODQsMjAuNDcgMTcuMzcsMjEuMzFDMTUuOTEsMjIuMTUgMTMuOTIsMjEuMTkgMTIsMTkuMzZDMTAuMDgsMjEuMTkgOC4wOSwyMi4xNSA2LjYyLDIxLjMxQzUuMTYsMjAuNDcgNSwxOC4yNiA1LjYyLDE1LjY4QzMuMDgsMTQuOTMgMS4yNSwxMy42OSAxLjI1LDEyQzEuMjUsMTAuMzEgMy4wOCw5LjA3IDUuNjIsOC4zMkM1LDUuNzQgNS4xNiwzLjUzIDYuNjIsMi42OUM4LjA5LDEuODUgMTAuMDgsMi44MSAxMiw0LjY0QzEzLjkyLDIuODEgMTUuOTEsMS44NSAxNy4zNywyLjY5TTE3LjA4LDEyQzE3LjQyLDEyLjc1IDE3LjcyLDEzLjUgMTcuOTcsMTQuMjZDMjAuMDcsMTMuNjMgMjEuMjUsMTIuNzMgMjEuMjUsMTJDMjEuMjUsMTEuMjcgMjAuMDcsMTAuMzcgMTcuOTcsOS43NEMxNy43MiwxMC41IDE3LjQyLDExLjI1IDE3LjA4LDEyTTYuOTIsMTJDNi41OCwxMS4yNSA2LjI4LDEwLjUgNi4wMyw5Ljc0QzMuOTMsMTAuMzcgMi43NSwxMS4yNyAyLjc1LDEyQzIuNzUsMTIuNzMgMy45MywxMy42MyA2LjAzLDE0LjI2QzYuMjgsMTMuNSA2LjU4LDEyLjc1IDYuOTIsMTJNMTUuOTIsMTQuMjZDMTUuODIsMTQuNDMgMTUuNzIsMTQuNiAxNS42MiwxNC43N0MxNS45MywxNC43MiAxNi4yMywxNC42NyAxNi41LDE0LjYxQzE2LjQzLDE0LjMzIDE2LjMyLDE0LjA0IDE2LjIxLDEzLjc1TDE1LjkyLDE0LjI2TTEzLjAzLDE4LjNDMTQuNjIsMTkuOCAxNiwyMC4zOCAxNi42MiwyMEMxNy4yNiwxOS42NSAxNy40NSwxOC4xOCAxNi45NCwxNi4wNEMxNi4xNywxNi4yIDE1LjM2LDE2LjMyIDE0LjU0LDE2LjRDMTQuMDYsMTcuMDcgMTMuNTUsMTcuNzEgMTMuMDMsMTguM004LjA4LDkuNzRDOC4xOCw5LjU3IDguMjgsOS40IDguMzgsOS4yM0M4LjA3LDkuMjggNy43Nyw5LjMzIDcuNSw5LjM5QzcuNTcsOS42NyA3LjY4LDkuOTYgNy43OSwxMC4yNUw4LjA4LDkuNzRNMTAuOTcsNS43QzkuMzgsNC4yIDgsMy42MiA3LjM3LDRDNi43NCw0LjM1IDYuNTUsNS44MiA3LjA2LDcuOTZDNy44Myw3LjggOC42NCw3LjY4IDkuNDYsNy42QzkuOTQsNi45MyAxMC40NSw2LjI5IDEwLjk3LDUuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZWFkID0gXCJNMjEuNTksMTEuNTlMMjMsMTNMMTMuNSwyMi41TDguNDIsMTcuNDFMOS44MywxNkwxMy41LDE5LjY4TDIxLjU5LDExLjU5TTQsMTZWM0g2TDksM0E0LDQgMCAwLDEgMTMsN0MxMyw4LjU0IDEyLjEzLDkuODggMTAuODUsMTAuNTVMMTQsMTZIMTJMOS4xMSwxMUg2VjE2SDRNNiw5SDlBMiwyIDAgMCwwIDExLDdBMiwyIDAgMCwwIDksNUg2VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjZWlwdCA9IFwiTTMsMjJMNC41LDIwLjVMNiwyMkw3LjUsMjAuNUw5LDIyTDEwLjUsMjAuNUwxMiwyMkwxMy41LDIwLjVMMTUsMjJMMTYuNSwyMC41TDE4LDIyTDE5LjUsMjAuNUwyMSwyMlYyTDE5LjUsMy41TDE4LDJMMTYuNSwzLjVMMTUsMkwxMy41LDMuNUwxMiwyTDEwLjUsMy41TDksMkw3LjUsMy41TDYsMkw0LjUsMy41TDMsMk0xOCw5SDZWN0gxOE0xOCwxM0g2VjExSDE4TTE4LDE3SDZWMTVIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkID0gXCJNMTksMTJDMTksMTUuODYgMTUuODYsMTkgMTIsMTlDOC4xNCwxOSA1LDE1Ljg2IDUsMTJDNSw4LjE0IDguMTQsNSAxMiw1QzE1Ljg2LDUgMTksOC4xNCAxOSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWNvcmRDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkUGxheWVyID0gXCJNNSwxNy41QTAuNSwwLjUgMCAwLDEgNC41LDE4SDMuNUEwLjUsMC41IDAgMCwxIDMsMTcuNVYxN0gyQTEsMSAwIDAsMSAxLDE2VjEzQTEsMSAwIDAsMSAyLDEySDE5VjEwSDdMNiwxMVY5QTEsMSAwIDAsMSA3LDhIMTlWN0gyMVY4QTEsMSAwIDAsMSAyMiw5VjEwSDIxVjEySDIyQTEsMSAwIDAsMSAyMywxM1YxNkExLDEgMCAwLDEgMjIsMTdIMjFWMTcuNUEwLjUsMC41IDAgMCwxIDIwLjUsMThIMTkuNUEwLjUsMC41IDAgMCwxIDE5LDE3LjVWMTdINVYxNy41TTMsMTRWMTVINVYxNEgzTTYsMTRWMTVIOFYxNEg2TTIwLjUsMTMuNUExLDEgMCAwLDAgMTkuNSwxNC41QTEsMSAwIDAsMCAyMC41LDE1LjVBMSwxIDAgMCwwIDIxLjUsMTQuNUExLDEgMCAwLDAgMjAuNSwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlY29yZFJlYyA9IFwiTTEyLjUsNUE3LjUsNy41IDAgMCwwIDUsMTIuNUE3LjUsNy41IDAgMCwwIDEyLjUsMjBBNy41LDcuNSAwIDAsMCAyMCwxMi41QTcuNSw3LjUgMCAwLDAgMTIuNSw1TTcsMTBIOUExLDEgMCAwLDEgMTAsMTFWMTJDMTAsMTIuNSA5LjYyLDEyLjkgOS4xNCwxMi45N0wxMC4zMSwxNUg5LjE1TDgsMTNWMTVIN00xMiwxMEgxNFYxMUgxMlYxMkgxNFYxM0gxMlYxNEgxNFYxNUgxMkExLDEgMCAwLDEgMTEsMTRWMTFBMSwxIDAgMCwxIDEyLDEwTTE2LDEwSDE4VjExSDE2VjE0SDE4VjE1SDE2QTEsMSAwIDAsMSAxNSwxNFYxMUExLDEgMCAwLDEgMTYsMTBNOCwxMVYxMkg5VjExXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjdGFuZ2xlID0gXCJNNCw2VjE5SDIwVjZINFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWN0YW5nbGVPdXRsaW5lID0gXCJNNCw2VjE5SDIwVjZINE0xOCwxN0g2VjhIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjeWNsZSA9IFwiTTIxLjgyLDE1LjQyTDE5LjMyLDE5Ljc1QzE4LjgzLDIwLjYxIDE3LjkyLDIxLjA2IDE3LDIxSDE1VjIzTDEyLjUsMTguNUwxNSwxNFYxNkgxNy44MkwxNS42LDEyLjE1TDE5LjkzLDkuNjVMMjEuNzMsMTIuNzdDMjIuMjUsMTMuNTQgMjIuMzIsMTQuNTcgMjEuODIsMTUuNDJNOS4yMSwzLjA2SDE0LjIxQzE1LjE5LDMuMDYgMTYuMDQsMy42MyAxNi40NSw0LjQ1TDE3LjQ1LDYuMTlMMTkuMTgsNS4xOUwxNi41NCw5LjZMMTEuMzksOS42OUwxMy4xMiw4LjY5TDExLjcxLDYuMjRMOS41LDEwLjA5TDUuMTYsNy41OUw2Ljk2LDQuNDdDNy4zNywzLjY0IDguMjIsMy4wNiA5LjIxLDMuMDZNNS4wNSwxOS43NkwyLjU1LDE1LjQzQzIuMDYsMTQuNTggMi4xMywxMy41NiAyLjY0LDEyLjc5TDMuNjQsMTEuMDZMMS45MSwxMC4wNkw3LjA1LDEwLjE0TDkuNywxNC41Nkw3Ljk3LDEzLjU2TDYuNTYsMTZIMTFWMjFINy40QzYuNDcsMjEuMDcgNS41NSwyMC42MSA1LjA1LDE5Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlY3ljbGVWYXJpYW50ID0gXCJNNy4xNyA3LjkxTDguOSA4LjkxTDEyLjA4IDMuNDJMMTQuMzMgNy4zMUwxMS43MyA4LjgxTDE3LjE5IDEwLjI3TDE4LjY2IDQuODFMMTYuMDYgNi4zMUwxMy44MSAyLjQxQzEzLjI2IDEuNDUgMTIuMDMgMS4xMiAxMS4wOCAxLjY4QzEwLjgxIDEuODMgMTAuNTggMi4wNSAxMC40MSAyLjMxTTEwIDIwVjE4TDMuNjYgMThMNS45IDE0LjFMOC41IDE1LjZMNy4wNCAxMC4xNEwxLjU3IDExLjZMNC4xNyAxMy4xTDEuOTIgMTdDMS4zNyAxNy45NiAxLjcgMTkuMTggMi42NSAxOS43M0MyLjkyIDE5Ljg5IDMuMjIgMTkuOTcgMy41NCAyME0xOS4wNiAxMS41TDE3LjMyIDEyLjVMMjAuNSAxOEgxNlYxNUwxMiAxOUwxNiAyM1YyMEgyMC41QzIxLjYxIDIwIDIyLjUgMTkuMTEgMjIuNSAxOEMyMi41IDE3LjY5IDIyLjQyIDE3LjM4IDIyLjI4IDE3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlZGRpdCA9IFwiTTE0LjUgMTUuNDFDMTQuNTggMTUuNSAxNC41OCAxNS42OSAxNC41IDE1LjhDMTMuNzcgMTYuNSAxMi40MSAxNi41NiAxMiAxNi41NkMxMS42MSAxNi41NiAxMC4yNSAxNi41IDkuNTQgMTUuOEM5LjQ0IDE1LjY5IDkuNDQgMTUuNSA5LjU0IDE1LjQxQzkuNjUgMTUuMzEgOS44MiAxNS4zMSA5LjkyIDE1LjQxQzEwLjM4IDE1Ljg3IDExLjMzIDE2IDEyIDE2QzEyLjY5IDE2IDEzLjY2IDE1Ljg3IDE0LjEgMTUuNDFDMTQuMjEgMTUuMzEgMTQuMzggMTUuMzEgMTQuNSAxNS40MU0xMC43NSAxMy4wNEMxMC43NSAxMi40NyAxMC4yOCAxMiA5LjcxIDEyQzkuMTQgMTIgOC42NyAxMi40NyA4LjY3IDEzLjA0QzguNjcgMTMuNjEgOS4xNCAxNC4wOSA5LjcxIDE0LjA4QzEwLjI4IDE0LjA4IDEwLjc1IDEzLjYxIDEwLjc1IDEzLjA0TTE0LjI5IDEyQzEzLjcyIDEyIDEzLjI1IDEyLjUgMTMuMjUgMTMuMDVTMTMuNzIgMTQuMDkgMTQuMjkgMTQuMDlDMTQuODYgMTQuMDkgMTUuMzMgMTMuNjEgMTUuMzMgMTMuMDVDMTUuMzMgMTIuNSAxNC44NiAxMiAxNC4yOSAxMk0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMlMyMiA2LjUgMjIgMTJNMTguNjcgMTJDMTguNjcgMTEuMTkgMTggMTAuNTQgMTcuMjIgMTAuNTRDMTYuODIgMTAuNTQgMTYuNDYgMTAuNyAxNi4yIDEwLjk1QzE1LjIgMTAuMjMgMTMuODMgOS43NyAxMi4zIDkuNzFMMTIuOTcgNi41OEwxNS4xNCA3LjA1QzE1LjE2IDcuNiAxNS42MiA4LjA0IDE2LjE4IDguMDRDMTYuNzUgOC4wNCAxNy4yMiA3LjU3IDE3LjIyIDdDMTcuMjIgNi40MyAxNi43NSA1Ljk2IDE2LjE4IDUuOTZDMTUuNzcgNS45NiAxNS40MSA2LjIgMTUuMjUgNi41NUwxMi44MiA2LjAzQzEyLjc1IDYgMTIuNjggNi4wMyAxMi42MyA2LjA3QzEyLjU3IDYuMTEgMTIuNTQgNi4xNyAxMi41MyA2LjI0TDExLjc5IDkuNzJDMTAuMjQgOS43NyA4Ljg0IDEwLjIzIDcuODIgMTAuOTZDNy41NiAxMC43MSA3LjIgMTAuNTYgNi44MSAxMC41NkM2IDEwLjU2IDUuMzUgMTEuMjEgNS4zNSAxMkM1LjM1IDEyLjYxIDUuNzEgMTMuMTEgNi4yMSAxMy4zNEM2LjE5IDEzLjUgNi4xOCAxMy42MiA2LjE4IDEzLjc4QzYuMTggMTYgOC43OSAxNy44NSAxMiAxNy44NUMxNS4yMyAxNy44NSAxNy44NSAxNi4wMyAxNy44NSAxMy43OEMxNy44NSAxMy42NCAxNy44NCAxMy41IDE3LjgxIDEzLjM0QzE4LjMxIDEzLjExIDE4LjY3IDEyLjYgMTguNjcgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVkaGF0ID0gXCJNMTUuMzQgMTMuMTZDMTYuNjYgMTMuMTYgMTguNTYgMTIuODkgMTguNTYgMTEuMzJDMTguNTcgMTEuMiAxOC41NiAxMS4wOCAxOC41MyAxMC45NkwxNy43NSA3LjU2QzE3LjU3IDYuODEgMTcuNDEgNi40NyAxNi4wOSA1LjgxQzE1LjA3IDUuMjkgMTIuODUgNC40MyAxMi4xOSA0LjQzQzExLjU4IDQuNDMgMTEuNCA1LjIyIDEwLjY3IDUuMjJDOS45NyA1LjIyIDkuNDUgNC42MyA4Ljc5IDQuNjNDOC4xNiA0LjYzIDcuNzUgNS4wNiA3LjQzIDUuOTRDNy40MyA1Ljk0IDYuNTUgOC40NCA2LjQzIDguOEM2LjQyIDguODcgNi40MSA4LjkzIDYuNDEgOUM2LjQxIDkuOTcgMTAuMjMgMTMuMTUgMTUuMzQgMTMuMTVNMTguNzcgMTEuOTZDMTguOTUgMTIuODIgMTguOTUgMTIuOTEgMTguOTUgMTNDMTguOTUgMTQuNSAxNy4yOSAxNS4zMSAxNS4xMiAxNS4zMUMxMC4yIDE1LjMxIDUuODkgMTIuNDMgNS44OSAxMC41M0M1Ljg5IDEwLjI2IDUuOTUgMTAgNi4wNSA5Ljc2QzQuMjggOS44NCAyIDEwLjE2IDIgMTIuMThDMiAxNS41IDkuODQgMTkuNTcgMTYuMDUgMTkuNTdDMjAuODEgMTkuNTcgMjIgMTcuNDIgMjIgMTUuNzJDMjIgMTQuMzggMjAuODUgMTIuODYgMTguNzcgMTEuOTZcIjtcclxuZXhwb3J0IHZhciBtZGlSZWRvID0gXCJNMTguNCwxMC42QzE2LjU1LDkgMTQuMTUsOCAxMS41LDhDNi44NSw4IDIuOTIsMTEuMDMgMS41NCwxNS4yMkwzLjksMTZDNC45NSwxMi44MSA3Ljk1LDEwLjUgMTEuNSwxMC41QzEzLjQ1LDEwLjUgMTUuMjMsMTEuMjIgMTYuNjIsMTIuMzhMMTMsMTZIMjJWN0wxOC40LDEwLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVkb1ZhcmlhbnQgPSBcIk0xMC41LDdBNi41LDYuNSAwIDAsMCA0LDEzLjVBNi41LDYuNSAwIDAsMCAxMC41LDIwSDE0VjE4SDEwLjVDOCwxOCA2LDE2IDYsMTMuNUM2LDExIDgsOSAxMC41LDlIMTYuMTdMMTMuMDksMTIuMDlMMTQuNSwxMy41TDIwLDhMMTQuNSwyLjVMMTMuMDgsMy45MUwxNi4xNyw3SDEwLjVNMTgsMThIMTZWMjBIMThWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVmbGVjdEhvcml6b250YWwgPSBcIk0yMiwyMEgxNEExLDEgMCAwLDEgMTMsMTlWNC45N0MxMyw0LjUgMTMuMzEsNC4xMiAxMy43NCw0QzE0LjE5LDMuODggMTQuNjUsNC4wOCAxNC44Nyw0LjQ3TDIyLjg5LDE4LjVDMjMuMDcsMTguODEgMjMuMDcsMTkuMTkgMjIuODksMTkuNUMyMi43MSwxOS44MSAyMi4zOCwyMCAyMiwyME0yLDIwQzEuNjIsMjAgMS4yOSwxOS44MSAxLjExLDE5LjVDMC45MywxOS4xOSAwLjkzLDE4LjgxIDEuMTEsMTguNUw5LjEzLDQuNDdDOS4zNSw0LjA4IDkuODEsMy44OCAxMC4yNiw0QzEwLjY5LDQuMTIgMTEsNC41IDExLDQuOTdWMTlBMSwxIDAgMCwxIDEwLDIwSDJNOSwxOFY4Ljc0TDMuNzEsMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZsZWN0VmVydGljYWwgPSBcIk0xOCwyM0g2QzUuNjEsMjMgNS4yNiwyMi43OSA1LjA5LDIyLjQ1QzQuOTIsMjIuMTEgNC45NiwyMS43IDUuMTksMjEuNEwxMS4yLDEzLjM4QzExLjU4LDEyLjg3IDEyLjQyLDEyLjg3IDEyLjgsMTMuMzhMMTguODEsMjEuNEMxOS4wNCwyMS43IDE5LjA4LDIyLjExIDE4LjkxLDIyLjQ1QzE4Ljc0LDIyLjc5IDE4LjM5LDIzIDE4LDIzTTE4LDFDMTguMzksMSAxOC43NCwxLjIxIDE4LjkxLDEuNTVDMTkuMDgsMS44OSAxOS4wNCwyLjMgMTguODEsMi42TDEyLjgsMTAuNjJDMTIuNDIsMTEuMTMgMTEuNTgsMTEuMTMgMTEuMiwxMC42Mkw1LjE5LDIuNkM0Ljk2LDIuMyA0LjkyLDEuODkgNS4wOSwxLjU1QzUuMjYsMS4yMSA1LjYxLDEgNiwxSDE4TTgsM0wxMiw4LjM1TDE2LDNIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZyZXNoID0gXCJNMTcuNjUsNi4zNUMxNi4yLDQuOSAxNC4yMSw0IDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQzE1LjczLDIwIDE4Ljg0LDE3LjQ1IDE5LjczLDE0SDE3LjY1QzE2LjgzLDE2LjMzIDE0LjYxLDE4IDEyLDE4QTYsNiAwIDAsMSA2LDEyQTYsNiAwIDAsMSAxMiw2QzEzLjY2LDYgMTUuMTQsNi42OSAxNi4yMiw3Ljc4TDEzLDExSDIwVjRMMTcuNjUsNi4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZyZXNoQ2lyY2xlID0gXCJNMTIgMkExMCAxMCAwIDEgMCAyMiAxMkExMCAxMCAwIDAgMCAxMiAyTTE4IDExSDEzTDE0LjgxIDkuMTlBMy45NCAzLjk0IDAgMCAwIDEyIDhBNCA0IDAgMSAwIDE1Ljg2IDEzSDE3LjkxQTYgNiAwIDEgMSAxMiA2QTUuOTEgNS45MSAwIDAgMSAxNi4yMiA3Ljc4TDE4IDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVnZXggPSBcIk0xNiwxNi45MkMxNS42NywxNi45NyAxNS4zNCwxNyAxNSwxN0MxNC42NiwxNyAxNC4zMywxNi45NyAxNCwxNi45MlYxMy40MUwxMS41LDE1Ljg5QzExLDE1LjUgMTAuNSwxNSAxMC4xMSwxNC41TDEyLjU5LDEySDkuMDhDOS4wMywxMS42NyA5LDExLjM0IDksMTFDOSwxMC42NiA5LjAzLDEwLjMzIDkuMDgsMTBIMTIuNTlMMTAuMTEsNy41QzEwLjMsNy4yNSAxMC41LDcgMTAuNzYsNi43NlY2Ljc2QzExLDYuNSAxMS4yNSw2LjMgMTEuNSw2LjExTDE0LDguNTlWNS4wOEMxNC4zMyw1LjAzIDE0LjY2LDUgMTUsNUMxNS4zNCw1IDE1LjY3LDUuMDMgMTYsNS4wOFY4LjU5TDE4LjUsNi4xMUMxOSw2LjUgMTkuNSw3IDE5Ljg5LDcuNUwxNy40MSwxMEgyMC45MkMyMC45NywxMC4zMyAyMSwxMC42NiAyMSwxMUMyMSwxMS4zNCAyMC45NywxMS42NyAyMC45MiwxMkgxNy40MUwxOS44OSwxNC41QzE5LjcsMTQuNzUgMTkuNSwxNSAxOS4yNCwxNS4yNFYxNS4yNEMxOSwxNS41IDE4Ljc1LDE1LjcgMTguNSwxNS44OUwxNiwxMy40MVYxNi45MkgxNlYxNi45Mk01LDE5QTIsMiAwIDAsMSA3LDE3QTIsMiAwIDAsMSA5LDE5QTIsMiAwIDAsMSA3LDIxQTIsMiAwIDAsMSA1LDE5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVnaXN0ZXJlZFRyYWRlbWFyayA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIuMjUsMTMuMjdIMTAuODFWMTYuNUg5VjcuNzFIMTIuMjZDMTMuMjksNy43MSAxNC4wOSw3Ljk0IDE0LjY2LDguNEMxNS4yMiw4Ljg3IDE1LjUsOS41IDE1LjUsMTAuMzZDMTUuNSwxMC45NiAxNS4zNywxMS40NiAxNS4xMSwxMS44NkMxNC44NSwxMi4yNiAxNC40NiwxMi41OCAxMy45MywxMi44MUwxNS44MywxNi40VjE2LjVIMTMuODlMMTIuMjUsMTMuMjdNMTAuODEsMTEuODFIMTIuMjdDMTIuNzIsMTEuODEgMTMuMDcsMTEuNjkgMTMuMzIsMTEuNDZDMTMuNTcsMTEuMjMgMTMuNjksMTAuOTEgMTMuNjksMTAuNUMxMy42OSwxMC4wOSAxMy41OCw5Ljc3IDEzLjM0LDkuNTNDMTMuMTEsOS4yOSAxMi43NSw5LjE4IDEyLjI2LDkuMThIMTAuODFWMTEuODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVpdGVyYXRlID0gXCJNMTAuNSA0QTYuNSA2LjUgMCAwIDAgNCAxMEgxTDUgMTRMOSAxMEg2LjAzQTQuNSA0LjUgMCAwIDEgMTAuNSA2QTQuNSA0LjUgMCAwIDEgMTUgMTAuNUE0LjUgNC41IDAgMCAxIDEwLjUgMTVIMlYxN0gxMC41QTYuNSA2LjUgMCAwIDAgMTcgMTAuNUE2LjUgNi41IDAgMCAwIDEwLjUgNE0xOSAxMlYxNUgxNi41QTcuNSA3LjUgMCAwIDEgMTQuMjQgMTdIMTlWMjBMMjMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25NYW55VG9NYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25lID0gXCJNMjIgMTVWMTdIMTlWMTlIMTdWMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25lT3JNYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdWMTlIMTdWMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25seU9uZSA9IFwiTTIyIDE1VjE3SDIxVjE5SDE5VjE3SDE4VjE5SDE2VjE3SDExVjlINUwzIDExSDJWNUgzTDUgN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk1hbnlUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdINUwzIDVIMlYxMUgzTDUgOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25NYW55VG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdINUwzIDVIMlYxMUgzTDUgOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVPck1hbnlUb01hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9PbmUgPSBcIk0yMiAxNVYxN0gxOVYxOUgxN1YxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9PbmVPck1hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN1YxOUgxN1YxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9Pbmx5T25lID0gXCJNMjIgMTVWMTdIMjFWMTlIMTlWMTdIMThWMTlIMTZWMTdIMTFWOUg3VjExSDVWOUwzIDExSDJWNUgzTDUgN1Y1SDdWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9uZU9yTWFueVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3TDMgNUgyVjExSDNMNSA5VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVPck1hbnlUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3TDMgNUgyVjExSDNMNSA5VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVUb01hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9PbmUgPSBcIk0yMiAxNVYxN0gxOVYxOUgxN1YxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9PbmVPck1hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN1YxOUgxN1YxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9Pbmx5T25lID0gXCJNMjIgMTVWMTdIMjFWMTlIMTlWMTdIMThWMTlIMTZWMTdIMTFWOUg3VjExSDVWOUgyVjdINVY1SDdWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9uZVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3SDJWOUg1VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3SDJWOUg1VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25Pbmx5T25lVG9NYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25lID0gXCJNMjIgMTVWMTdIMTlWMTlIMTdWMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25lT3JNYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdWMTlIMTdWMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25seU9uZSA9IFwiTTIyIDE1VjE3SDIxVjE5SDE5VjE3SDE4VjE5SDE2VjE3SDExVjlIOFYxMUg2VjlINVYxMUgzVjlIMlY3SDNWNUg1VjdINlY1SDhWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9ubHlPbmVUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOFY1SDZWN0g1VjVIM1Y3SDJWOUgzVjExSDVWOUg2VjExSDhWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25Pbmx5T25lVG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOFY1SDZWN0g1VjVIM1Y3SDJWOUgzVjExSDVWOUg2VjExSDhWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JNYW55VG9NYW55ID0gXCJNMjEgMTNMMTkgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25lID0gXCJNMTkgMTVWMTNIMTdWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25lT3JNYW55ID0gXCJNMjEgMTNMMTkgMTVWMTNIMTdWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0wyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25seU9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4VjEzSDE2VjE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTZWMTlIMThWMTdIMTlWMTlIMjFWMTdIMjJWMTVNNy41IDlBMSAxIDAgMSAxIDguNSA4QTEgMSAwIDAgMSA3LjUgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvblplcm9Pck1hbnlUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JNYW55VG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOVYxOUgyMVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JPbmVUb01hbnkgPSBcIk0yMSAxM0wxOSAxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9PbmUgPSBcIk0xOSAxNVYxM0gxN1YxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9PbmVPck1hbnkgPSBcIk0yMSAxM0wxOSAxNVYxM0gxN1YxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0wyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9Pbmx5T25lID0gXCJNMjEgMTVWMTNIMTlWMTVIMThWMTNIMTZWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTZWMTlIMThWMTdIMTlWMTlIMjFWMTdIMjJWMTVNNy41IDlBMSAxIDAgMSAxIDguNSA4QTEgMSAwIDAgMSA3LjUgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvblplcm9Pck9uZVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JPbmVUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOVYxOUgyMVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpdmVTY2FsZSA9IFwiTTIwLDE4SDRWNkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNE0xMiwxMEgxMFYxMkgxMk04LDEwSDZWMTJIOE0xNiwxNEgxNFYxNkgxNk0xNiwxMEgxNFYxMkgxNlYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxvYWQgPSBcIk0yIDEyQzIgMTYuOTcgNi4wMyAyMSAxMSAyMUMxMy4zOSAyMSAxNS42OCAyMC4wNiAxNy40IDE4LjRMMTUuOSAxNi45QzE0LjYzIDE4LjI1IDEyLjg2IDE5IDExIDE5QzQuNzYgMTkgMS42NCAxMS40NiA2LjA1IDcuMDVDMTAuNDYgMi42NCAxOCA1Ljc3IDE4IDEySDE1TDE5IDE2SDE5LjFMMjMgMTJIMjBDMjAgNy4wMyAxNS45NyAzIDExIDNDNi4wMyAzIDIgNy4wMyAyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbG9hZEFsZXJ0ID0gXCJNMiAxMkMyIDE3IDYgMjEgMTEgMjFDMTMuNCAyMSAxNS43IDIwLjEgMTcuNCAxOC40TDE1LjkgMTYuOUMxNC42IDE4LjMgMTIuOSAxOSAxMSAxOUM0LjggMTkgMS42IDExLjUgNi4xIDcuMVMxOCA1LjggMTggMTJIMTVMMTkgMTZIMTkuMUwyMyAxMkgyMEMyMCA3IDE2IDMgMTEgM1MyIDcgMiAxMk0xMCAxNUgxMlYxN0gxMFYxNU0xMCA3SDEyVjEzSDEwVjdcIjtcclxuZXhwb3J0IHZhciBtZGlSZW1pbmRlciA9IFwiTTcuMjUsM0M3LjksMyA4LjUsMy4yMSA5LDMuNTZWM0EyLDIgMCAwLDEgMTEsMUEyLDIgMCAwLDEgMTMsM1YzLjU3QzEzLjUsMy4yMiAxNC4xLDMgMTQuNzUsM0EzLDMgMCAwLDEgMTcuNzUsNkMxNy43NSw3LjU4IDE2LjU0LDguODcgMTUsOUgxM1YxMEgxNC4yNEwxNC43MiwxMC4xM0wxOS4zMSwxMi40MkMyMC4xMywxMi43MyAyMC41MywxMy4zNCAyMC41MywxNC4yNUwyMC41LDE0LjM5VjE0LjUzTDE5LjUsMjEuMjhDMTkuNDQsMjEuNzUgMTkuMjIsMjIuMTYgMTguODQsMjIuNUMxOC40NywyMi44NCAxOC4wNSwyMyAxNy41OCwyM0gxMEM5LjQ1LDIzIDksMjIuODEgOC41OCwyMi40MUwyLDE1Ljg0TDMuMDUsMTQuNzdDMy4zMywxNC41IDMuNjksMTQuMzQgNC4xMywxNC4zNEg0LjQ1TDksMTUuMzNWMTBMOSw5SDdWOUM1LjQ2LDguODYgNC4yNSw3LjU3IDQuMjUsNkEzLDMgMCAwLDEgNy4yNSwzTTksNkExLjc1LDEuNzUgMCAwLDAgNy4yNSw0LjI1QTEuNzUsMS43NSAwIDAsMCA1LjUsNkM1LjUsNi44OCA2LjE1LDcuNjEgNyw3LjczVjcuNzVIOVY2TTE1LDcuNzVWNy43NEMxNS44NSw3LjYyIDE2LjUsNi44OSAxNi41LDZDMTYuNSw1LjA0IDE1LjcyLDQuMjYgMTQuNzUsNC4yNkMxMy43OCw0LjI2IDEzLDUuMDQgMTMsNlY3Ljc1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZSA9IFwiTTEyLDBDOC45NiwwIDYuMjEsMS4yMyA0LjIyLDMuMjJMNS42Myw0LjYzQzcuMjYsMyA5LjUsMiAxMiwyQzE0LjUsMiAxNi43NCwzIDE4LjM2LDQuNjRMMTkuNzcsMy4yM0MxNy43OSwxLjIzIDE1LjA0LDAgMTIsME03LjA1LDYuMDVMOC40Niw3LjQ2QzkuMzcsNi41NiAxMC42Miw2IDEyLDZDMTMuMzgsNiAxNC42Myw2LjU2IDE1LjU0LDcuNDZMMTYuOTUsNi4wNUMxNS42OCw0Ljc4IDEzLjkzLDQgMTIsNEMxMC4wNyw0IDguMzIsNC43OCA3LjA1LDYuMDVNMTIsMTVBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSAxMiwxMUEyLDIgMCAwLDEgMTQsMTNBMiwyIDAgMCwxIDEyLDE1TTE1LDlIOUExLDEgMCAwLDAgOCwxMFYyMkExLDEgMCAwLDAgOSwyM0gxNUExLDEgMCAwLDAgMTYsMjJWMTBBMSwxIDAgMCwwIDE1LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVtb3RlRGVza3RvcCA9IFwiTTMsMkEyLDIgMCAwLDAgMSw0VjE2QzEsMTcuMTEgMS45LDE4IDMsMThIMTBWMjBIOFYyMkgxNlYyMEgxNFYxOEgyMUEyLDIgMCAwLDAgMjMsMTZWNEEyLDIgMCAwLDAgMjEsMk0zLDRIMjFWMTZIM00xNSw1TDExLjUsOC41TDE1LDEyTDE2LjQsMTAuNkwxNC4zLDguNUwxNi40LDYuNE05LDhMNy42LDkuNEw5LjcsMTEuNUw3LjYsMTMuNkw5LDE1TDEyLjUsMTEuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZU9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjEsMjEuNzJMMTkuNzMsMjNMMTYsMTkuMjdWMjJBMSwxIDAgMCwxIDE1LDIzSDlDOC40NiwyMyA4LDIyLjU1IDgsMjJWMTEuMjdMMiw1LjI3TTEyLDBDMTUuMDUsMCAxNy44LDEuMjMgMTkuNzcsMy4yM0wxOC4zNiw0LjY0QzE2Ljc1LDMgMTQuNSwyIDEyLDJDOS43MiwyIDcuNjQsMi44NSA2LjA2LDQuMjRMNC42NCwyLjgyQzYuNTksMS4wNyA5LjE3LDAgMTIsME0xMiw0QzEzLjk0LDQgMTUuNjksNC43OCAxNi45NSw2LjA1TDE1LjU1LDcuNDZDMTQuNjQsNi41NiAxMy4zOSw2IDEyLDZDMTAuODMsNiA5Ljc2LDYuNCA4LjksNy4wOEw3LjUsNS42NkM4LjcsNC42MiAxMC4yOCw0IDEyLDRNMTUsOUMxNS41Niw5IDE2LDkuNDUgMTYsMTBWMTQuMThMMTMuNSwxMS42OUwxMy4zMSwxMS41TDEwLjgyLDlIMTVNMTAuMDMsMTMuM0MxMC4xNiwxNC4xNiAxMC44NCwxNC44NSAxMS43MSwxNUwxMC4wMywxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZVR2ID0gXCJNOSwyQzcuODksMiA3LDIuODkgNyw0VjIwQzcsMjEuMTEgNy44OSwyMiA5LDIySDE1QzE2LjExLDIyIDE3LDIxLjExIDE3LDIwVjRDMTcsMi44OSAxNi4xMSwyIDE1LDJIMTNWNEgxMVYySDlNMTEsNkgxM1Y4SDE1VjEwSDEzVjEySDExVjEwSDlWOEgxMVY2TTksMTRIMTFWMTZIOVYxNE0xMywxNEgxNVYxNkgxM1YxNE05LDE4SDExVjIwSDlWMThNMTMsMThIMTVWMjBIMTNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVtb3RlVHZPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE3LDIwLjI1QzE2Ljg2LDIxLjI0IDE2LDIyIDE1LDIySDlBMiwyIDAgMCwxIDcsMjBWMTAuMjdMMiw1LjI3TTksMkgxMVY0SDEzVjJIMTVBMiwyIDAgMCwxIDE3LDRWMTUuMThMMTMsMTEuMThWMTBIMTVWOEgxM1Y2SDExVjhIOS44Mkw3LDUuMThWNEEyLDIgMCAwLDEgOSwyTTksMjBIMTFWMThIOVYyME0xMywyMEgxNVYxOC4yN0wxNC43MywxOEgxM1YyME05LDE0VjE2SDExVjE0LjI3TDEwLjczLDE0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVuYW1lQm94ID0gXCJNMTgsMTdIMTAuNUwxMi41LDE1SDE4TTYsMTdWMTQuNUwxMy44OCw2LjY1QzE0LjA3LDYuNDUgMTQuMzksNi40NSAxNC41OSw2LjY1TDE2LjM1LDguNDFDMTYuNTUsOC42MSAxNi41NSw4LjkyIDE2LjM1LDkuMTJMOC40NywxN00xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZW9yZGVySG9yaXpvbnRhbCA9IFwiTTMsMTVIMjFWMTNIM1YxNU0zLDE5SDIxVjE3SDNWMTlNMywxMUgyMVY5SDNWMTFNMyw1VjdIMjFWNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlb3JkZXJWZXJ0aWNhbCA9IFwiTTksM1YyMUgxMVYzSDlNNSwzVjIxSDdWM0g1TTEzLDNWMjFIMTVWM0gxM00xOSwzSDE3VjIxSDE5VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwZWF0ID0gXCJNMTcsMTdIN1YxNEwzLDE4TDcsMjJWMTlIMTlWMTNIMTdNNyw3SDE3VjEwTDIxLDZMMTcsMlY1SDVWMTFIN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGVhdE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuNzMsMTlIN1YyMkwzLDE4TDcsMTRWMTdIMTMuNzNMNywxMC4yN1YxMUg1VjguMjdMMiw1LjI3TTE3LDEzSDE5VjE3LjE4TDE3LDE1LjE4VjEzTTE3LDVWMkwyMSw2TDE3LDEwVjdIOC44Mkw2LjgyLDVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwZWF0T25jZSA9IFwiTTEzLDE1VjlIMTJMMTAsMTBWMTFIMTEuNVYxNU0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwbGF5ID0gXCJNMTIsNVYxTDcsNkwxMiwxMVY3QTYsNiAwIDAsMSAxOCwxM0E2LDYgMCAwLDEgMTIsMTlBNiw2IDAgMCwxIDYsMTNINEE4LDggMCAwLDAgMTIsMjFBOCw4IDAgMCwwIDIwLDEzQTgsOCAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGx5ID0gXCJNMTAsOVY1TDMsMTJMMTAsMTlWMTQuOUMxNSwxNC45IDE4LjUsMTYuNSAyMSwyMEMyMCwxNSAxNywxMCAxMCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGx5QWxsID0gXCJNMTMsOVY1TDYsMTJMMTMsMTlWMTQuOUMxOCwxNC45IDIxLjUsMTYuNSAyNCwyMEMyMywxNSAyMCwxMCAxMyw5TTcsOFY1TDAsMTJMNywxOVYxNkwzLDEyTDcsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXBseUFsbE91dGxpbmUgPSBcIk0xMSw5LjhWMTAuN0wxMi43LDEwLjlDMTUuMywxMS4zIDE3LjIsMTIuMyAxOC42LDEzLjZDMTYuOSwxMy4xIDE1LjEsMTIuOCAxMywxMi44SDExVjE0LjFMOC44LDEyTDExLDkuOE0xMyw1TDYsMTJMMTMsMTlWMTQuOUMxOCwxNC45IDIxLjUsMTYuNSAyNCwyMEMyMywxNSAyMCwxMCAxMyw5TTcsOFY1TDAsMTJMNywxOVYxNkwzLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwbHlDaXJjbGUgPSBcIk0yIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJTMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMiAyIDYuNSAyIDEyTTUgMTFMMTAgNlY5QzE1LjA2IDkuNzMgMTcuMjggMTMuMzMgMTggMTdDMTYuMTkgMTQuNDMgMTMuNjEgMTMgMTAgMTNWMTZMNSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXBseU91dGxpbmUgPSBcIk04LDkuOFYxMC43TDkuNywxMUMxMi4zLDExLjQgMTQuMiwxMi40IDE1LjYsMTMuN0MxMy45LDEzLjIgMTIuMSwxMi45IDEwLDEyLjlIOFYxNC4yTDUuOCwxMkw4LDkuOE0xMCw1TDMsMTJMMTAsMTlWMTQuOUMxNSwxNC45IDE4LjUsMTYuNSAyMSwyMEMyMCwxNSAxNywxMCAxMCw5XCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwcm9kdWN0aW9uID0gXCJNMTIuNzIsMTMuMTVMMTMuNjIsMTIuMjZDMTMuNiwxMSAxNC4zMSw5LjQ0IDE1LjYyLDguMTRDMTcuNTcsNi4xOCAyMC4xMSw1LjU1IDIxLjI4LDYuNzJDMjIuNDUsNy44OSAyMS44MiwxMC40MyAxOS44NiwxMi4zOEMxOC41NiwxMy42OSAxNywxNC40IDE1Ljc0LDE0LjM4TDE0Ljg1LDE1LjI4QzE0LjUsMTUuNjEgMTQsMTUuNjYgMTMuNiwxNS40MUMxMi43NiwxNS43MSAxMiwxNi4wOCAxMS41NiwxNi44QzExLjAzLDE3LjY4IDExLjAzLDE5LjEgMTAuNDcsMTkuOTVDOS45MSwyMC44MSA4Ljc5LDIxLjEgNy42MSwyMS4xQzYuNDMsMjEuMSA1LDIxIDMuOTUsMTkuNUw2LjQzLDE5LjkyQzcsMjAgOC41LDE5LjM5IDkuMDUsMTguNTRDOS42MSwxNy42OCA5LjYxLDE2LjI3IDEwLjE0LDE1LjM4QzEwLjYxLDE0LjYgMTEuNSwxNC4yMyAxMi40MywxMy45MUMxMi40MiwxMy42NCAxMi41LDEzLjM2IDEyLjcyLDEzLjE1TTcsMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMiw3QTUsNSAwIDAsMSA3LDJNNyw0QTMsMyAwIDAsMCA0LDdBMywzIDAgMCwwIDcsMTBBMywzIDAgMCwwIDEwLDdBMywzIDAgMCwwIDcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXNpc3RvciA9IFwiTTIsMTFIN0wxMC4wNywxNS4zNUwxMy4xMSw0TDE4LDExSDIyVjEzSDE3TDEzLjkzLDguNjVMMTAuODksMjBMNiwxM0gyVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc2lzdG9yTm9kZXMgPSBcIk0yLDExSDMuNjdDNC4wOCw5LjgzIDUuMTksOSA2LjUsOUEzLDMgMCAwLDEgOS41LDEyQzkuNSwxMi42NSA5LjI5LDEzLjI1IDguOTQsMTMuNzRMMTAuMDcsMTUuMzVMMTMuMTEsNEwxNC42MSw2LjEzTDE2LjcsOS4xMUwxNy41LDlDMTguODEsOSAxOS45Miw5LjgzIDIwLjMzLDExSDIyVjEzSDIwLjMzQzE5LjkyLDE0LjE3IDE4LjgxLDE1IDE3LjUsMTVBMywzIDAgMCwxIDE0LjUsMTJDMTQuNSwxMS4zNSAxNC43MSwxMC43NSAxNS4wNiwxMC4yNkwxMy45Myw4LjY1TDEwLjg5LDIwTDcuMywxNC44OUM3LjA1LDE0Ljk2IDYuNzgsMTUgNi41LDE1QzUuMTksMTUgNC4wOCwxNC4xNyAzLjY3LDEzSDJWMTFNMTcuNSwxMC41QTEuNSwxLjUgMCAwLDAgMTYsMTJBMS41LDEuNSAwIDAsMCAxNy41LDEzLjVBMS41LDEuNSAwIDAsMCAxOSwxMkExLjUsMS41IDAgMCwwIDE3LjUsMTAuNU02LjUsMTAuNUExLjUsMS41IDAgMCwwIDUsMTJBMS41LDEuNSAwIDAsMCA2LjUsMTMuNUExLjUsMS41IDAgMCwwIDgsMTJBMS41LDEuNSAwIDAsMCA2LjUsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXNpemUgPSBcIk0xMC41OSwxMkwxNC41OSw4SDExVjZIMThWMTNIMTZWOS40MUwxMiwxMy40MVYxNkgyMFY0SDhWMTJIMTAuNTlNMjIsMlYxOEgxMlYyMkgyVjEySDZWMkgyMk0xMCwxNEg0VjIwSDEwVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc2l6ZUJvdHRvbVJpZ2h0ID0gXCJNMjIsMjJIMjBWMjBIMjJWMjJNMjIsMThIMjBWMTZIMjJWMThNMTgsMjJIMTZWMjBIMThWMjJNMTgsMThIMTZWMTZIMThWMThNMTQsMjJIMTJWMjBIMTRWMjJNMjIsMTRIMjBWMTJIMjJWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzcG9uc2l2ZSA9IFwiTTQsNlYxNkg5VjEyQTIsMiAwIDAsMSAxMSwxMEgxNkEyLDIgMCAwLDEgMTgsMTJWMTZIMjBWNkg0TTAsMjBWMThINEEyLDIgMCAwLDEgMiwxNlY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMTZBMiwyIDAgMCwxIDIwLDE4SDI0VjIwSDE4VjIwQzE4LDIxLjExIDE3LjEsMjIgMTYsMjJIMTFBMiwyIDAgMCwxIDksMjBIOUwwLDIwTTExLjUsMjBBMC41LDAuNSAwIDAsMCAxMSwyMC41QTAuNSwwLjUgMCAwLDAgMTEuNSwyMUEwLjUsMC41IDAgMCwwIDEyLDIwLjVBMC41LDAuNSAwIDAsMCAxMS41LDIwTTE1LjUsMjBBMC41LDAuNSAwIDAsMCAxNSwyMC41QTAuNSwwLjUgMCAwLDAgMTUuNSwyMUEwLjUsMC41IDAgMCwwIDE2LDIwLjVBMC41LDAuNSAwIDAsMCAxNS41LDIwTTEzLDIwVjIxSDE0VjIwSDEzTTExLDEyVjE5SDE2VjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc3RhcnQgPSBcIk0xMiw0QzE0LjEsNCAxNi4xLDQuOCAxNy42LDYuM0MyMC43LDkuNCAyMC43LDE0LjUgMTcuNiwxNy42QzE1LjgsMTkuNSAxMy4zLDIwLjIgMTAuOSwxOS45TDExLjQsMTcuOUMxMy4xLDE4LjEgMTQuOSwxNy41IDE2LjIsMTYuMkMxOC41LDEzLjkgMTguNSwxMC4xIDE2LjIsNy43QzE1LjEsNi42IDEzLjUsNiAxMiw2VjEwLjZMNyw1LjZMMTIsMC42VjRNNi4zLDE3LjZDMy43LDE1IDMuMywxMSA1LjEsNy45TDYuNiw5LjRDNS41LDExLjYgNS45LDE0LjQgNy44LDE2LjJDOC4zLDE2LjcgOC45LDE3LjEgOS42LDE3LjRMOSwxOS40QzgsMTkgNy4xLDE4LjQgNi4zLDE3LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzdGFydEFsZXJ0ID0gXCJNMTAgNC4wM1YuNjMzTDUgNS42M0wxMCAxMC42M1Y2LjAzQzExLjUgNi4wMyAxMy4xMSA2LjYzIDE0LjIxIDcuNzNDMTYuNSAxMC4xMyAxNi41IDEzLjkzIDE0LjIxIDE2LjIzQzEyLjkxIDE3LjUzIDExLjExIDE4LjEzIDkuNCAxNy45M0w4LjkgMTkuOTNDMTEuMzEgMjAuMjMgMTMuODEgMTkuNTMgMTUuNjEgMTcuNjNDMTguNyAxNC41MyAxOC43IDkuNDMgMTUuNjEgNi4zM0MxNC4xMSA0LjgzIDEyLjExIDQuMDMgMTAgNC4wM000LjMxIDE3LjYzQzUuMTEgMTguNDMgNiAxOS4wMyA3IDE5LjQzTDcuNjEgMTcuNDNDNi45MSAxNy4xMyA2LjMxIDE2LjczIDUuODEgMTYuMjNDMy45MSAxNC40MyAzLjUgMTEuNjMgNC42MSA5LjQzTDMuMTEgNy45M0MxLjMxIDExLjAzIDEuNzEgMTUuMDMgNC4zMSAxNy42M00yMCAxM0gyMlY3SDIwVjEzTTIwIDE3SDIyVjE1SDIwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc3RhcnRPZmYgPSBcIk0yMC44LDIyLjdMMTYuNiwxOC41QzE0LjksMTkuNyAxMi45LDIwLjIgMTAuOSwxOS45TDExLjQsMTcuOUMxMi43LDE4IDE0LDE3LjcgMTUuMSwxN0wxLjEsM0wyLjQsMS43TDE2LjUsMTUuOEwxNy45LDE3LjJMMjIuMSwyMS40TDIwLjgsMjIuN00xMiw2QzEzLjUsNiAxNS4xLDYuNiAxNi4yLDcuOEMxOCw5LjYgMTguNCwxMi4yIDE3LjUsMTQuNEwxOSwxNS45QzIwLjcsMTIuOSAyMC4yLDkgMTcuNiw2LjRDMTYuMSw0LjggMTQsNCAxMiw0VjAuN0w3LjksNC43TDEyLDguOFY2TTYuNiw5LjRMNS4xLDcuOUMzLjMsMTEgMy43LDE1IDYuMywxNy43QzcuMSwxOC40IDgsMTkgOSwxOS40TDkuNSwxNy40QzguOSwxNy4xIDguMywxNi43IDcuNywxNi4yQzUuOSwxNC40IDUuNSwxMS42IDYuNiw5LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzdG9yZSA9IFwiTTEzLDNBOSw5IDAgMCwwIDQsMTJIMUw0Ljg5LDE1Ljg5TDQuOTYsMTYuMDNMOSwxMkg2QTcsNyAwIDAsMSAxMyw1QTcsNyAwIDAsMSAyMCwxMkE3LDcgMCAwLDEgMTMsMTlDMTEuMDcsMTkgOS4zMiwxOC4yMSA4LjA2LDE2Ljk0TDYuNjQsMTguMzZDOC4yNywyMCAxMC41LDIxIDEzLDIxQTksOSAwIDAsMCAyMiwxMkE5LDkgMCAwLDAgMTMsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZXN0b3JlQWxlcnQgPSBcIk0xMyAzQzggMyA0IDcgNCAxMkgxTDQuOSAxNS45TDUgMTZMOSAxMkg2QzYgOC4xIDkuMSA1IDEzIDVTMjAgOC4xIDIwIDEyIDE2LjkgMTkgMTMgMTlDMTEuMSAxOSA5LjMgMTguMiA4LjEgMTYuOUw2LjcgMTguM0M4LjMgMjAgMTAuNSAyMSAxMyAyMUMxOCAyMSAyMiAxNyAyMiAxMlMxOCAzIDEzIDNNMTIgMTVIMTRWMTdIMTJWMTVNMTIgN0gxNFYxM0gxMlY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kID0gXCJNMTEuNSwxMkwyMCwxOFY2TTExLDE4VjZMMi41LDEyTDExLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZDEwID0gXCJNMTIuNSwzQzE3LjE1LDMgMjEuMDgsNi4wMyAyMi40NywxMC4yMkwyMC4xLDExQzE5LjA1LDcuODEgMTYuMDQsNS41IDEyLjUsNS41QzEwLjU0LDUuNSA4Ljc3LDYuMjIgNy4zOCw3LjM4TDEwLDEwSDNWM0w1LjYsNS42QzcuNDUsNCA5Ljg1LDMgMTIuNSwzTTEwLDEyVjIySDhWMTRINlYxMkgxME0xOCwxNFYyMEMxOCwyMS4xMSAxNy4xMSwyMiAxNiwyMkgxNEEyLDIgMCAwLDEgMTIsMjBWMTRBMiwyIDAgMCwxIDE0LDEySDE2QzE3LjExLDEyIDE4LDEyLjkgMTgsMTRNMTQsMTRWMjBIMTZWMTRIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kMzAgPSBcIk0xOSwxNFYyMEMxOSwyMS4xMSAxOC4xMSwyMiAxNywyMkgxNUEyLDIgMCAwLDEgMTMsMjBWMTRBMiwyIDAgMCwxIDE1LDEySDE3QzE4LjExLDEyIDE5LDEyLjkgMTksMTRNMTUsMTRWMjBIMTdWMTRIMTVNMTEsMjBDMTEsMjEuMTEgMTAuMSwyMiA5LDIySDVWMjBIOVYxOEg3VjE2SDlWMTRINVYxMkg5QTIsMiAwIDAsMSAxMSwxNFYxNS41QTEuNSwxLjUgMCAwLDEgOS41LDE3QTEuNSwxLjUgMCAwLDEgMTEsMTguNVYyME0xMi41LDNDMTcuMTUsMyAyMS4wOCw2LjAzIDIyLjQ3LDEwLjIyTDIwLjEsMTFDMTkuMDUsNy44MSAxNi4wNCw1LjUgMTIuNSw1LjVDMTAuNTQsNS41IDguNzcsNi4yMiA3LjM4LDcuMzhMMTAsMTBIM1YzTDUuNiw1LjZDNy40NSw0IDkuODUsMyAxMi41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kNSA9IFwiTTEyLjUgM0MxNy4xNSAzIDIxLjA4IDYuMDMgMjIuNDcgMTAuMjJMMjAuMSAxMUMxOS4wNSA3LjgxIDE2LjA0IDUuNSAxMi41IDUuNUMxMC41NCA1LjUgOC43NyA2LjIyIDcuMzggNy4zOEwxMCAxMEgzVjNMNS42IDUuNkM3LjQ1IDQgOS44NSAzIDEyLjUgM005IDEySDE1VjE0SDExVjE2SDEzQzE0LjExIDE2IDE1IDE2LjkgMTUgMThWMjBDMTUgMjEuMTEgMTQuMTEgMjIgMTMgMjJIOVYyMEgxM1YxOEg5VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZDYwID0gXCJNMTkgMTRWMjBDMTkgMjEuMSAxOC4xIDIyIDE3IDIySDE1QzEzLjkgMjIgMTMgMjEuMSAxMyAyMFYxNEMxMyAxMi45IDEzLjkgMTIgMTUgMTJIMTdDMTguMSAxMiAxOSAxMi45IDE5IDE0TTE1IDE0VjIwSDE3VjE0SDE1TTEyLjUgM0MxNy4xIDMgMjEuMSA2IDIyLjUgMTAuMkwyMC4xIDExQzE5IDcuOCAxNiA1LjUgMTIuNSA1LjVDMTAuNSA1LjUgOC44IDYuMiA3LjQgNy40TDEwIDEwSDNWM0w1LjYgNS42QzcuNCA0IDkuOSAzIDEyLjUgM003IDEyQzUuOSAxMiA1IDEyLjkgNSAxNFYyMEM1IDIxLjEgNS45IDIyIDcgMjJIOUMxMC4xIDIyIDExIDIxLjEgMTEgMjBWMThDMTEgMTYuOSAxMC4xIDE2IDkgMTZIN1YxNEgxMVYxMkg3TTcgMThIOVYyMEg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZE91dGxpbmUgPSBcIk0xMCw5LjlMNywxMkwxMCwxNC4xVjkuOU0xOSw5LjlMMTYsMTJMMTksMTQuMVY5LjlNMTIsNlYxOEwzLjUsMTJMMTIsNk0yMSw2VjE4TDEyLjUsMTJMMjEsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNNZWRpdW0gPSBcIk0xMiA2LjQ2QzExLjcyIDYuNDYgMTEuNDQgNi41NiAxMS4yMiA2Ljc4TDYuNzggMTEuMjJDNi4zNSAxMS42NSA2LjM1IDEyLjM1IDYuNzggMTIuNzhMMTEuMjIgMTcuMjJDMTEuNjUgMTcuNjUgMTIuMzUgMTcuNjUgMTIuNzggMTcuMjJMMTcuMjIgMTIuNzhDMTcuNjUgMTIuMzUgMTcuNjUgMTEuNjUgMTcuMjIgMTEuMjJMMTIuNzggNi43OEMxMi41NiA2LjU2IDEyLjI4IDYuNDYgMTIgNi40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzTWVkaXVtT3V0bGluZSA9IFwiTTEyIDYuNDZDMTEuNzIgNi40NiAxMS40NCA2LjU2IDExLjIyIDYuNzhMNi43OCAxMS4yMkM2LjM1IDExLjY1IDYuMzUgMTIuMzUgNi43OCAxMi43OEwxMS4yMiAxNy4yMkMxMS42NSAxNy42NSAxMi4zNSAxNy42NSAxMi43OCAxNy4yMkwxNy4yMiAxMi43OEMxNy42NSAxMi4zNSAxNy42NSAxMS42NSAxNy4yMiAxMS4yMkwxMi43OCA2Ljc4QzEyLjU2IDYuNTYgMTIuMjggNi40NiAxMiA2LjQ2TTEyIDguODNMMTUuMTcgMTJMMTIgMTUuMTdMOC44MyAxMkwxMiA4LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNPdXRsaW5lID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDRMMjAgMTJMMTIgMjBMNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzU3BsaXQgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMNy4yOSA1Ljg4TDEyIDEwLjU4TDE2LjcxIDUuODhMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTUuODggNy4yOUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUw1Ljg4IDE2LjcxTDEwLjU4IDEyTDUuODggNy4yOU0xOC4xMiA3LjI5TDEzLjQyIDEyTDE4LjEyIDE2LjcxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxOC4xMiA3LjI5TTEyIDEzLjQyTDcuMjkgMTguMTJMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDE2LjcxIDE4LjEyTDEyIDEzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNTcGxpdE91dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwxNS4yOSA3LjI5TDEyIDEwLjU5TDguNzEgNy4yOUwxMiA0TTcuMjkgOC43MUwxMC41OSAxMkw3LjI5IDE1LjI5TDQgMTJMNy4yOSA4LjcxTTE2LjcxIDguNzFMMjAgMTJMMTYuNzEgMTUuMjlMMTMuNDEgMTJMMTYuNzEgOC43MU0xMiAxMy40MUwxNS4yOSAxNi43MUwxMiAyMEw4LjcxIDE2LjcxTDEyIDEzLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJpYmJvbiA9IFwiTTEzLjQxLDE5LjMxTDE2LjU5LDIyLjVMMTgsMjEuMDdMMTQuODMsMTcuOU0xNS41NCwxMS41M0gxNS41M0wxMiwxNS4wN0w4LjQ3LDExLjUzSDguNDZWMTEuNTNDNy41NiwxMC42MyA3LDkuMzggNyw4QTUsNSAwIDAsMSAxMiwzQTUsNSAwIDAsMSAxNyw4QzE3LDkuMzggMTYuNDQsMTAuNjMgMTUuNTQsMTEuNTNNMTYuOSwxM0MxOC4yLDExLjczIDE5LDkuOTYgMTksOEE3LDcgMCAwLDAgMTIsMUE3LDcgMCAwLDAgNSw4QzUsOS45NiA1LjgxLDExLjczIDcuMSwxM1YxM0wxMC41OSwxNi41TDYsMjEuMDdMNy40MSwyMi41TDE2LjksMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmljZSA9IFwiTTIyLDExSDE5LjdDMTkuNCw5LjkgMTguOSw4LjggMTguMiw4TDIxLjYsMi42TDE5LjksMS41TDE2LjcsNi42QzE2LjMsNi4zIDE2LDYuMSAxNS41LDUuOUwxNi40LDIuM0wxNC41LDEuOEwxMy43LDUuMkMxMy4xLDUuMSAxMi42LDUgMTIsNUM4LjMsNSA1LjIsNy42IDQuMywxMUgyQzIsMTUuMSA0LjUsMTguNiA4LDIwLjJWMjJIMTZWMjAuMkMxOS41LDE4LjYgMjIsMTUuMSAyMiwxMU0xMiw3QzE0LjYsNyAxNi44LDguNyAxNy42LDExSDYuNEM3LjIsOC43IDkuNCw3IDEyLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmlja3NoYXcgPSBcIk0yMCAxNC4wNVYxMi43M0MyMCAxMi4yNiAxOS44NCAxMS44IDE5LjU0IDExLjQ0TDE1LjYgNi43MkMxNS4yMiA2LjI2IDE0LjY2IDYgMTQuMDYgNkg0QzIuOSA2IDIgNi45IDIgOFYxNUMyIDE2LjEgMi45IDE3IDQgMTdINC4wNUM0LjI4IDE4LjE0IDUuMjkgMTkgNi41IDE5UzguNzIgMTguMTQgOC45NSAxN0gxNy4wNUMxNy4yOCAxOC4xNCAxOC4yOSAxOSAxOS41IDE5QzIwLjg4IDE5IDIyIDE3Ljg4IDIyIDE2LjVDMjIgMTUuMjkgMjEuMTQgMTQuMjggMjAgMTQuMDVNMy41IDhDMy41IDcuNzMgMy43MyA3LjUgNCA3LjVIN1YxMkgzLjVWOE02LjUgMTcuNUM1Ljk1IDE3LjUgNS41IDE3LjA1IDUuNSAxNi41UzUuOTUgMTUuNSA2LjUgMTUuNSA3LjUgMTUuOTUgNy41IDE2LjUgNy4wNSAxNy41IDYuNSAxNy41TTEzIDE1LjVIOVYxNEgxMVYxMkg5VjcuNUgxM1YxNS41TTE1IDguMzRMMTguMDUgMTJIMTVWOC4zNE0xOS41IDE3LjVDMTguOTUgMTcuNSAxOC41IDE3LjA1IDE4LjUgMTYuNVMxOC45NSAxNS41IDE5LjUgMTUuNSAyMC41IDE1Ljk1IDIwLjUgMTYuNSAyMC4wNSAxNy41IDE5LjUgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSaWNrc2hhd0VsZWN0cmljID0gXCJNMjAgMTIuMDVWMTAuNzNDMjAgMTAuMjYgMTkuODQgOS44IDE5LjU0IDkuNDRMMTUuNiA0LjcyQzE1LjIyIDQuMjYgMTQuNjYgNCAxNC4wNiA0SDRDMi45IDQgMiA0LjkgMiA2VjEzQzIgMTQuMSAyLjkgMTUgNCAxNUg0LjA1QzQuMjggMTYuMTQgNS4yOSAxNyA2LjUgMTdTOC43MiAxNi4xNCA4Ljk1IDE1SDE3LjA1QzE3LjI4IDE2LjE0IDE4LjI5IDE3IDE5LjUgMTdDMjAuODggMTcgMjIgMTUuODggMjIgMTQuNUMyMiAxMy4yOSAyMS4xNCAxMi4yOCAyMCAxMi4wNU0zLjUgNkMzLjUgNS43MyAzLjczIDUuNSA0IDUuNUg3VjEwSDMuNVY2TTYuNSAxNS41QzUuOTUgMTUuNSA1LjUgMTUuMDUgNS41IDE0LjVTNS45NSAxMy41IDYuNSAxMy41IDcuNSAxMy45NSA3LjUgMTQuNSA3LjA1IDE1LjUgNi41IDE1LjVNMTMgMTMuNUg5VjEySDExVjEwSDlWNS41SDEzVjEzLjVNMTUgNi4zNEwxOC4wNSAxMEgxNVY2LjM0TTE5LjUgMTUuNUMxOC45NSAxNS41IDE4LjUgMTUuMDUgMTguNSAxNC41UzE4Ljk1IDEzLjUgMTkuNSAxMy41IDIwLjUgMTMuOTUgMjAuNSAxNC41IDIwLjA1IDE1LjUgMTkuNSAxNS41TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmluZyA9IFwiTTEyLDEwTDgsNC40TDkuNiwySDE0LjRMMTYsNC40TDEyLDEwTTE1LjUsNi44TDE0LjMsOC41QzE2LjUsOS40IDE4LDExLjUgMTgsMTRBNiw2IDAgMCwxIDEyLDIwQTYsNiAwIDAsMSA2LDE0QzYsMTEuNSA3LjUsOS40IDkuNyw4LjVMOC41LDYuOEM1LjgsOC4xIDQsMTAuOCA0LDE0QTgsOCAwIDAsMCAxMiwyMkE4LDggMCAwLDAgMjAsMTRDMjAsMTAuOCAxOC4yLDguMSAxNS41LDYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSaXZldCA9IFwiTTExLjQzLDJDMTAuNjEsMiA5Ljk0LDIuNjUgOS45NCwzLjVDOS45NCw0LjY0IDkuOTQsNS44IDkuOTQsNi45Nkg3Ljk1VjcuOTVIMTUuOTFWNi45NkgxMy45MkMxMy45Miw1LjggMTMuOTIsNC42NCAxMy45MiwzLjVDMTMuOTIsMi42NSAxMy4yNSwyIDEyLjQzLDJIMTEuNDNNMTAuOTQsOC45NVYyMS44N0wxMS45MywyMi44N0wxMi45MiwyMS44N1Y4Ljk1SDEwLjk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYWQgPSBcIk0xMSwxNkgxM1YyMEgxMU0xMSwxMEgxM1YxNEgxMU0xMSw0SDEzVjhIMTFNNCwyMkgyMFYySDRWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9hZFZhcmlhbnQgPSBcIk0xOC4xLDQuOEMxOCw0LjMgMTcuNiw0IDE3LjEsNEgxM0wxMy4yLDdIMTAuOEwxMSw0SDYuOEM2LjMsNCA1LjksNC40IDUuOCw0LjhMMy4xLDE4LjhDMywxOS40IDMuNSwyMCA0LjEsMjBIMTBMMTAuMywxNUgxMy43TDE0LDIwSDE5LjhDMjAuNCwyMCAyMC45LDE5LjQgMjAuOCwxOC44TDE4LjEsNC44TTEwLjQsMTNMMTAuNiw5SDEzLjJMMTMuNCwxM0gxMC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYmJlciA9IFwiTTEwLjcgMTIuNUMxMC43IDEyLjggOS40IDEzLjIgOC40IDEzLjJTNi4zIDEyLjUgNi4zIDEyLjNDNi4zIDEyIDcgMTEuMSA4LjYgMTFDOS41IDEwLjkgMTAuNSAxMS41IDEwLjcgMTIuNU0xNS40IDExQzE0LjQgMTAuOSAxMy41IDExLjUgMTMuMyAxMi41QzEzLjMgMTIuOCAxNC41IDEzLjIgMTUuNiAxMy4yQzE2LjcgMTMuMiAxNy43IDEyLjUgMTcuNyAxMi4zUzE3IDExLjEgMTUuNCAxMU0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTIgNi41IDIgMTIgMiAyMiA2LjUgMjIgMTJNMjAgMTEuMkMyMCA5LjIgMTkuMyA4LjUgMTYuNyA4LjVDMTQuMSA4LjUgMTMuMyA5LjYgMTIgOS42UzEwIDguNSA3LjMgOC41IDQgOS4xIDQgMTEuMkM0IDE0LjYgNS41IDE2LjUgNy42IDE2LjVDOS4yIDE2LjUgMTAuNCAxNC41IDEyIDE0LjVTMTQuNyAxNi41IDE2LjQgMTYuNUMxOC41IDE2LjUgMjAgMTQuNiAyMCAxMS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90ID0gXCJNMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0Ljc0IDEzLjYsNS4zOSAxMyw1LjczVjdIMTRBNyw3IDAgMCwxIDIxLDE0SDIyQTEsMSAwIDAsMSAyMywxNVYxOEExLDEgMCAwLDEgMjIsMTlIMjFWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWMTlIMkExLDEgMCAwLDEgMSwxOFYxNUExLDEgMCAwLDEgMiwxNEgzQTcsNyAwIDAsMSAxMCw3SDExVjUuNzNDMTAuNCw1LjM5IDEwLDQuNzQgMTAsNEEyLDIgMCAwLDEgMTIsMk03LjUsMTNBMi41LDIuNSAwIDAsMCA1LDE1LjVBMi41LDIuNSAwIDAsMCA3LjUsMThBMi41LDIuNSAwIDAsMCAxMCwxNS41QTIuNSwyLjUgMCAwLDAgNy41LDEzTTE2LjUsMTNBMi41LDIuNSAwIDAsMCAxNCwxNS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOEEyLjUsMi41IDAgMCwwIDE5LDE1LjVBMi41LDIuNSAwIDAsMCAxNi41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90QW5ncnkgPSBcIk0yMiAxNEgyMUMyMSAxMC4xMyAxNy44NyA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNNy41IDE4QzYuMTIgMTggNSAxNi44OCA1IDE1LjVDNSAxNC42OCA1LjQgMTMuOTYgNiAxMy41TDkuODMgMTYuMzhDOS41IDE3LjMyIDguNTcgMTggNy41IDE4TTE2LjUgMThDMTUuNDMgMTggMTQuNSAxNy4zMiAxNC4xNyAxNi4zOEwxOCAxMy41QzE4LjYgMTMuOTYgMTkgMTQuNjggMTkgMTUuNUMxOSAxNi44OCAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90QW5ncnlPdXRsaW5lID0gXCJNMjIgMTRIMjFDMjEgMTAuMTMgMTcuODcgNyAxNCA3SDEzVjUuNzNDMTMuNiA1LjM5IDE0IDQuNzQgMTQgNEMxNCAyLjkgMTMuMTEgMiAxMiAyUzEwIDIuOSAxMCA0QzEwIDQuNzQgMTAuNCA1LjM5IDExIDUuNzNWN0gxMEM2LjEzIDcgMyAxMC4xMyAzIDE0SDJDMS40NSAxNCAxIDE0LjQ1IDEgMTVWMThDMSAxOC41NSAxLjQ1IDE5IDIgMTlIM1YyMEMzIDIxLjExIDMuOSAyMiA1IDIySDE5QzIwLjExIDIyIDIxIDIxLjExIDIxIDIwVjE5SDIyQzIyLjU1IDE5IDIzIDE4LjU1IDIzIDE4VjE1QzIzIDE0LjQ1IDIyLjU1IDE0IDIyIDE0TTIxIDE3SDE5VjIwSDVWMTdIM1YxNkg1VjE0QzUgMTEuMjQgNy4yNCA5IDEwIDlIMTRDMTYuNzYgOSAxOSAxMS4yNCAxOSAxNFYxNkgyMVYxN00xNy41IDE1LjVDMTcuNSAxNi42MSAxNi42MSAxNy41IDE1LjUgMTcuNUMxNC41MyAxNy41IDEzLjczIDE2LjgxIDEzLjU0IDE1LjlMMTYuNSAxMy43OEMxNy4xIDE0LjEzIDE3LjUgMTQuNzYgMTcuNSAxNS41TTcuNSAxMy43OEwxMC40NiAxNS45QzEwLjI4IDE2LjgxIDkuNDcgMTcuNSA4LjUgMTcuNUM3LjQgMTcuNSA2LjUgMTYuNjEgNi41IDE1LjVDNi41IDE0Ljc2IDYuOSAxNC4xMyA3LjUgMTMuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RDb25mdXNlZCA9IFwiTTIwIDRIMThWM0gyMC41QzIwLjc4IDMgMjEgMy4yMiAyMSAzLjVWNS41QzIxIDUuNzggMjAuNzggNiAyMC41IDZIMjBWN0gxOVY1SDIwVjRNMTkgOUgyMFY4SDE5VjlNMTcgM0gxNlY3SDE3VjNNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE0LjM0IDcgMTQuNjcgNy4wMyAxNSA3LjA4VjEwSDE5Ljc0QzIwLjUzIDExLjEzIDIxIDEyLjUgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMTAgMTUuNUMxMCAxNC4xMiA4Ljg4IDEzIDcuNSAxM1M1IDE0LjEyIDUgMTUuNSA2LjEyIDE4IDcuNSAxOCAxMCAxNi44OCAxMCAxNS41TTE5IDE1LjVDMTkgMTQuMTIgMTcuODggMTMgMTYuNSAxM1MxNCAxNC4xMiAxNCAxNS41IDE1LjEyIDE4IDE2LjUgMTggMTkgMTYuODggMTkgMTUuNU0xNyA4SDE2VjlIMTdWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdENvbmZ1c2VkT3V0bGluZSA9IFwiTTE5IDhIMjBWOUgxOVY4TTIwIDVIMTlWN0gyMFY2SDIwLjVDMjAuNzggNiAyMSA1Ljc4IDIxIDUuNVYzLjVDMjEgMy4yMiAyMC43OCAzIDIwLjUgM0gxOFY0SDIwVjVNMTcgM0gxNlY3SDE3VjNNMTMuNSAxNS41QzEzLjUgMTYuNjEgMTQuNCAxNy41IDE1LjUgMTcuNVMxNy41IDE2LjYxIDE3LjUgMTUuNSAxNi42MSAxMy41IDE1LjUgMTMuNSAxMy41IDE0LjQgMTMuNSAxNS41TTE3IDhIMTZWOUgxN1Y4TTIyIDE0SDIxQzIxIDEyLjUgMjAuNTMgMTEuMTMgMTkuNzQgMTBIMTYuOTdDMTguMTkgMTAuOTEgMTkgMTIuMzYgMTkgMTRWMTZIMjFWMTdIMTlWMjBINVYxN0gzVjE2SDVWMTRDNSAxMS4yNCA3LjI0IDkgMTAgOUgxNEMxNC4zNCA5IDE0LjY4IDkuMDQgMTUgOS4xVjcuMDhDMTQuNjcgNy4wMyAxNC4zNCA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNOC41IDEzLjVDNy40IDEzLjUgNi41IDE0LjQgNi41IDE1LjVTNy40IDE3LjUgOC41IDE3LjUgMTAuNSAxNi42MSAxMC41IDE1LjUgOS42MSAxMy41IDguNSAxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RGVhZCA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05Ljg2IDE2LjY4TDguNjggMTcuODZMNy41IDE2LjY4TDYuMzIgMTcuODZMNS4xNCAxNi42OEw2LjMyIDE1LjVMNS4xNCAxNC4zMkw2LjMyIDEzLjE0TDcuNSAxNC4zMkw4LjY4IDEzLjE0TDkuODYgMTQuMzJMOC42OCAxNS41TDkuODYgMTYuNjhNMTguODYgMTYuNjhMMTcuNjggMTcuODZMMTYuNSAxNi42OEwxNS4zMiAxNy44NkwxNC4xNCAxNi42OEwxNS4zMiAxNS41TDE0LjE0IDE0LjMyTDE1LjMyIDEzLjE0TDE2LjUgMTQuMzJMMTcuNjggMTMuMTRMMTguODYgMTQuMzJMMTcuNjggMTUuNUwxOC44NiAxNi42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdERlYWRPdXRsaW5lID0gXCJNMTAuNjIgMTQuNDRMOS41NiAxNS41TDEwLjYyIDE2LjU2TDkuNTYgMTcuNjJMOC41IDE2LjU2TDcuNDQgMTcuNjJMNi4zOCAxNi41Nkw3LjQ0IDE1LjVMNi4zOCAxNC40NEw3LjQ0IDEzLjM4TDguNSAxNC40NEw5LjU2IDEzLjM4TDEwLjYyIDE0LjQ0TTE2LjU2IDEzLjM4TDE1LjUgMTQuNDRMMTQuNDQgMTMuMzhMMTMuMzggMTQuNDRMMTQuNDQgMTUuNUwxMy4zOCAxNi41NkwxNC40NCAxNy42MkwxNS41IDE2LjU2TDE2LjU2IDE3LjYyTDE3LjYyIDE2LjU2TDE2LjU2IDE1LjVMMTcuNjIgMTQuNDRMMTYuNTYgMTMuMzhNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE3Ljg3IDcgMjEgMTAuMTMgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMjEgMTZIMTlWMTRDMTkgMTEuMjQgMTYuNzYgOSAxNCA5SDEwQzcuMjQgOSA1IDExLjI0IDUgMTRWMTZIM1YxN0g1VjIwSDE5VjE3SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RXhjaXRlZCA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE04LjY4IDE3LjA0TDcuNSAxNS44Nkw2LjMyIDE3LjA0TDUuMTQgMTUuODZMNy41IDEzLjVMOS44NiAxNS44Nkw4LjY4IDE3LjA0TTE3LjY4IDE3LjA0TDE2LjUgMTUuODZMMTUuMzIgMTcuMDRMMTQuMTQgMTUuODZMMTYuNSAxMy41TDE4Ljg2IDE1Ljg2TDE3LjY4IDE3LjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RXhjaXRlZE91dGxpbmUgPSBcIk0yMiAxNEgyMUMyMSAxMC4xMyAxNy44NyA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNMjEgMTdIMTlWMjBINVYxN0gzVjE2SDVWMTRDNSAxMS4yNCA3LjI0IDkgMTAgOUgxNEMxNi43NiA5IDE5IDExLjI0IDE5IDE0VjE2SDIxVjE3TTguNSAxMy41TDEwLjg2IDE1Ljg2TDkuNjggMTcuMDRMOC41IDE1Ljg2TDcuMzIgMTcuMDRMNi4xNCAxNS44Nkw4LjUgMTMuNU0xNS41IDEzLjVMMTcuODYgMTUuODZMMTYuNjggMTcuMDRMMTUuNSAxNS44NkwxNC4zMiAxNy4wNEwxMy4xNCAxNS44NkwxNS41IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RIYXBweSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05Ljc5IDE2LjVDOS40IDE1LjYyIDguNTMgMTUgNy41IDE1UzUuNiAxNS42MiA1LjIxIDE2LjVDNS4wOCAxNi4xOSA1IDE1Ljg2IDUgMTUuNUM1IDE0LjEyIDYuMTIgMTMgNy41IDEzUzEwIDE0LjEyIDEwIDE1LjVDMTAgMTUuODYgOS45MiAxNi4xOSA5Ljc5IDE2LjVNMTguNzkgMTYuNUMxOC40IDE1LjYyIDE3LjUgMTUgMTYuNSAxNVMxNC42IDE1LjYyIDE0LjIxIDE2LjVDMTQuMDggMTYuMTkgMTQgMTUuODYgMTQgMTUuNUMxNCAxNC4xMiAxNS4xMiAxMyAxNi41IDEzUzE5IDE0LjEyIDE5IDE1LjVDMTkgMTUuODYgMTguOTIgMTYuMTkgMTguNzkgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdEhhcHB5T3V0bGluZSA9IFwiTTEwLjUgMTUuNUMxMC41IDE1Ljg3IDEwLjQgMTYuMiAxMC4yMiAxNi41QzkuODggMTUuOTEgOS4yNCAxNS41IDguNSAxNS41UzcuMTIgMTUuOTEgNi43OCAxNi41QzYuNjEgMTYuMiA2LjUgMTUuODcgNi41IDE1LjVDNi41IDE0LjQgNy40IDEzLjUgOC41IDEzLjVTMTAuNSAxNC40IDEwLjUgMTUuNU0yMyAxNVYxOEMyMyAxOC41NSAyMi41NSAxOSAyMiAxOUgyMVYyMEMyMSAyMS4xMSAyMC4xMSAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTAuMTMgNi4xMyA3IDEwIDdIMTFWNS43M0MxMC40IDUuMzkgMTAgNC43NCAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNEMxNCA0Ljc0IDEzLjYgNS4zOSAxMyA1LjczVjdIMTRDMTcuODcgNyAyMSAxMC4xMyAyMSAxNEgyMkMyMi41NSAxNCAyMyAxNC40NSAyMyAxNU0yMSAxNkgxOVYxNEMxOSAxMS4yNCAxNi43NiA5IDE0IDlIMTBDNy4yNCA5IDUgMTEuMjQgNSAxNFYxNkgzVjE3SDVWMjBIMTlWMTdIMjFWMTZNMTUuNSAxMy41QzE0LjQgMTMuNSAxMy41IDE0LjQgMTMuNSAxNS41QzEzLjUgMTUuODcgMTMuNjEgMTYuMiAxMy43OCAxNi41QzE0LjEyIDE1LjkxIDE0Ljc2IDE1LjUgMTUuNSAxNS41UzE2Ljg4IDE1LjkxIDE3LjIyIDE2LjVDMTcuNCAxNi4yIDE3LjUgMTUuODcgMTcuNSAxNS41QzE3LjUgMTQuNCAxNi42MSAxMy41IDE1LjUgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdEluZHVzdHJpYWwgPSBcIk0xOC40MSw0TDE2LDYuNDFWNi41OUwxOC40MSw5SDIyVjExSDE3LjU5TDE2LDkuNDFWMTJIMTVBMiwyIDAgMCwxIDEzLDEwVjcuNUg5Ljg2QzkuNzcsNy44NyA5LjYyLDguMjIgOS40Miw4LjU1TDE1LjE4LDE5SDIwQTIsMiAwIDAsMSAyMiwyMVYyMkgyVjIxQTIsMiAwIDAsMSA0LDE5SDEwLjYxTDUuOTIsMTAuNUM0LjEyLDEwLjQ3IDIuNTYsOS4yNCAyLjExLDcuNUMxLjU2LDUuMzYgMi44NSwzLjE4IDUsMi42M0M3LjEzLDIuMDggOS4zMSwzLjM2IDkuODYsNS41SDEzVjNBMiwyIDAgMCwxIDE1LDFIMTZWMy41OUwxNy41OSwySDIyVjRIMTguNDFNNiw0LjVBMiwyIDAgMCwwIDQsNi41QTIsMiAwIDAsMCA2LDguNUEyLDIgMCAwLDAgOCw2LjVBMiwyIDAgMCwwIDYsNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90TG92ZSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05LjcgMTUuNDVMOC45NyAxNi4xOEw3LjUgMTcuNjVMNS4zIDE1LjQ1QzQuOSAxNS4wNSA0LjkgMTQuMzkgNS4zIDE0QzUuNzEgMTMuNTggNi4zNiAxMy41OCA2Ljc3IDE0TDcuNSAxNC43Mkw4LjIzIDE0QzguNjQgMTMuNTggOS4yOSAxMy41OCA5LjcgMTRDMTAuMSAxNC4zOSAxMC4xIDE1LjA1IDkuNyAxNS40NU0xOC43IDE1LjQ1TDE3Ljk3IDE2LjE4TDE2LjUgMTcuNjVMMTQuMyAxNS40NUMxMy45IDE1LjA1IDEzLjkgMTQuMzkgMTQuMyAxNEMxNC43MSAxMy41OCAxNS4zNiAxMy41OCAxNS43NyAxNEwxNi41IDE0LjcyTDE3LjIzIDE0QzE3LjY0IDEzLjU4IDE4LjI5IDEzLjU4IDE4LjcgMTRDMTkuMSAxNC4zOSAxOS4xIDE1LjA1IDE4LjcgMTUuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RMb3ZlT3V0bGluZSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE0yMSAxN0gxOVYyMEg1VjE3SDNWMTZINVYxNEM1IDExLjI0IDcuMjQgOSAxMCA5SDE0QzE2Ljc2IDkgMTkgMTEuMjQgMTkgMTRWMTZIMjFWMTdNMTAuNyAxNEMxMS4xIDE0LjM5IDExLjEgMTUuMDUgMTAuNyAxNS40NUw5Ljk3IDE2LjE4TDguNSAxNy42NUw2LjMgMTUuNDVDNS45IDE1LjA1IDUuOSAxNC4zOSA2LjMgMTRDNi43MSAxMy41OCA3LjM2IDEzLjU4IDcuNzcgMTRMOC41IDE0LjcyTDkuMjMgMTRDOS42NCAxMy41OCAxMC4yOSAxMy41OCAxMC43IDE0TTE3LjcgMTRDMTguMSAxNC4zOSAxOC4xIDE1LjA1IDE3LjcgMTUuNDVMMTYuOTcgMTYuMThMMTUuNSAxNy42NUwxMy4zIDE1LjQ1QzEyLjkgMTUuMDUgMTIuOSAxNC4zOSAxMy4zIDE0QzEzLjcxIDEzLjU4IDE0LjM2IDEzLjU4IDE0Ljc3IDE0TDE1LjUgMTQuNzJMMTYuMjMgMTRDMTYuNjQgMTMuNTggMTcuMjkgMTMuNTggMTcuNyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdE1vd2VyID0gXCJNMSAxNFY1SDEzQzE4LjUgNSAyMyA5LjUgMjMgMTVWMTdIMjAuODNDMjAuNDIgMTguMTcgMTkuMzEgMTkgMTggMTlDMTYuNjkgMTkgMTUuNTggMTguMTcgMTUuMTcgMTdIMTBDOS4wOSAxOC4yMSA3LjY0IDE5IDYgMTlDMy4yNCAxOSAxIDE2Ljc2IDEgMTRNNiAxMUM0LjM0IDExIDMgMTIuMzQgMyAxNEMzIDE1LjY2IDQuMzQgMTcgNiAxN0M3LjY2IDE3IDkgMTUuNjYgOSAxNEM5IDEyLjM0IDcuNjYgMTEgNiAxMU0xNSAxMFYxMkgyMC4yNUMxOS45MiAxMS4yNyAxOS41IDEwLjYgMTkgMTBIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RNb3dlck91dGxpbmUgPSBcIk0xIDE0QzEgMTYuNzYgMy4yNCAxOSA2IDE5QzcuNjQgMTkgOS4wOSAxOC4yMSAxMCAxN0gxNS4xN0MxNS41OCAxOC4xNyAxNi43IDE5IDE4IDE5QzE5LjMxIDE5IDIwLjQyIDE4LjE3IDIwLjgzIDE3SDIzVjE1QzIzIDkuNSAxOC41IDUgMTMgNUgxVjE0TTIxIDE1SDEwLjlDMTAuOTcgMTQuNjggMTEgMTQuMzQgMTEgMTRDMTEgMTEuMjQgOC43NiA5IDYgOUM0Ljg3IDkgMy44NCA5LjM3IDMgMTBWN0gxMi41QzE1LjEgNyAxNy40MiA4LjE2IDE5IDEwSDE1VjEySDIwLjI1QzIwLjY3IDEyLjkyIDIwLjkyIDEzLjk0IDIxIDE1TTYgMTFDNy42NiAxMSA5IDEyLjM0IDkgMTRDOSAxNS42NiA3LjY2IDE3IDYgMTdDNC4zNCAxNyAzIDE1LjY2IDMgMTRDMyAxMi4zNCA0LjM0IDExIDYgMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RPZmYgPSBcIk0yMyAxNVYxOEMyMyAxOC41IDIyLjY0IDE4Ljg4IDIyLjE3IDE4Ljk3TDE4Ljk3IDE1Ljc3QzE5IDE1LjY4IDE5IDE1LjU5IDE5IDE1LjVDMTkgMTQuMTIgMTcuODggMTMgMTYuNSAxM0MxNi40MSAxMyAxNi4zMiAxMyAxNi4yMyAxMy4wM0wxMC4yIDdIMTFWNS43M0MxMC40IDUuMzkgMTAgNC43NCAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNEMxNCA0Ljc0IDEzLjYgNS4zOSAxMyA1LjczVjdIMTRDMTcuODcgNyAyMSAxMC4xMyAyMSAxNEgyMkMyMi41NSAxNCAyMyAxNC40NSAyMyAxNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS44OSAyMS43OEMxOS42MiAyMS45MiAxOS4zMiAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTEuNTMgNC4yOSA5LjM2IDYuMjIgOC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEwIDE1LjVDMTAgMTQuMTIgOC44OCAxMyA3LjUgMTNTNSAxNC4xMiA1IDE1LjUgNi4xMiAxOCA3LjUgMTggMTAgMTYuODggMTAgMTUuNU0xNi4wNyAxNy45NkwxNC4wNCAxNS45M0MxNC4yMyAxNi45NyAxNS4wNCAxNy43NyAxNi4wNyAxNy45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdE9mZk91dGxpbmUgPSBcIk0yMyAxNVYxOEMyMyAxOC41IDIyLjY0IDE4Ljg4IDIyLjE3IDE4Ljk3TDIwLjIgMTdIMjFWMTZIMTkuMkwxOSAxNS44VjE0QzE5IDExLjI0IDE2Ljc2IDkgMTQgOUgxMi4yTDEwLjIgN0gxMVY1LjczQzEwLjQgNS4zOSAxMCA0Ljc0IDEwIDRDMTAgMi45IDEwLjkgMiAxMiAyUzE0IDIuOSAxNCA0QzE0IDQuNzQgMTMuNiA1LjM5IDEzIDUuNzNWN0gxNEMxNy44NyA3IDIxIDEwLjEzIDIxIDE0SDIyQzIyLjU1IDE0IDIzIDE0LjQ1IDIzIDE1TTguNSAxMy41QzcuNCAxMy41IDYuNSAxNC40IDYuNSAxNS41UzcuNCAxNy41IDguNSAxNy41IDEwLjUgMTYuNjEgMTAuNSAxNS41IDkuNjEgMTMuNSA4LjUgMTMuNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS44OSAyMS43OEMxOS42MiAyMS45MiAxOS4zMiAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTEuNTMgNC4yOSA5LjM2IDYuMjIgOC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE4LjExIDIwTDE1LjYgMTcuNUMxNS41NyAxNy41IDE1LjUzIDE3LjUgMTUuNSAxNy41QzE0LjQgMTcuNSAxMy41IDE2LjYxIDEzLjUgMTUuNUMxMy41IDE1LjQ3IDEzLjUgMTUuNDMgMTMuNSAxNS40TDcuNyA5LjU5QzYuMSAxMC40MiA1IDEyLjA4IDUgMTRWMTZIM1YxN0g1VjIwSDE4LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90T3V0bGluZSA9IFwiTTE3LjUgMTUuNUMxNy41IDE2LjYxIDE2LjYxIDE3LjUgMTUuNSAxNy41UzEzLjUgMTYuNjEgMTMuNSAxNS41IDE0LjQgMTMuNSAxNS41IDEzLjUgMTcuNSAxNC40IDE3LjUgMTUuNU04LjUgMTMuNUM3LjQgMTMuNSA2LjUgMTQuNCA2LjUgMTUuNVM3LjQgMTcuNSA4LjUgMTcuNSAxMC41IDE2LjYxIDEwLjUgMTUuNSA5LjYxIDEzLjUgOC41IDEzLjVNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE3Ljg3IDcgMjEgMTAuMTMgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMjEgMTZIMTlWMTRDMTkgMTEuMjQgMTYuNzYgOSAxNCA5SDEwQzcuMjQgOSA1IDExLjI0IDUgMTRWMTZIM1YxN0g1VjIwSDE5VjE3SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90VmFjdXVtID0gXCJNMTIsMkMxNC42NSwyIDE3LjE5LDMuMDYgMTkuMDcsNC45M0wxNy42NSw2LjM1QzE2LjE1LDQuODUgMTQuMTIsNCAxMiw0QzkuODgsNCA3Ljg0LDQuODQgNi4zNSw2LjM1TDQuOTMsNC45M0M2LjgxLDMuMDYgOS4zNSwyIDEyLDJNMy42Niw2LjVMNS4xMSw3Ljk0QzQuMzksOS4xNyA0LDEwLjU3IDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCwxMC41NyAxOS42MSw5LjE3IDE4Ljg4LDcuOTRMMjAuMzQsNi41QzIxLjQyLDguMTIgMjIsMTAuMDQgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkMyLDEwLjA0IDIuNTgsOC4xMiAzLjY2LDYuNU0xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxMy41OSAxNy4zNywxNS4xMiAxNi4yNCwxNi4yNEwxNC44MywxNC44M0MxNC4wOCwxNS41OCAxMy4wNiwxNiAxMiwxNkMxMC45NCwxNiA5LjkyLDE1LjU4IDkuMTcsMTQuODNMNy43NiwxNi4yNEM2LjYzLDE1LjEyIDYsMTMuNTkgNiwxMkE2LDYgMCAwLDEgMTIsNk0xMiw4QTEsMSAwIDAsMCAxMSw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsOUExLDEgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdFZhY3V1bVZhcmlhbnQgPSBcIk01LDNBMiwyIDAgMCwwIDMsNVY3SDVWNUgxOVY3SDIxVjVBMiwyIDAgMCwwIDE5LDNINU04LDdWOUgxNlY3SDhNMyw5VjEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJWOUgxOVYxMkE3LDcgMCAwLDEgMTIsMTlBNyw3IDAgMCwxIDUsMTJWOUgzTTEyLDEyQTIuNSwyLjUgMCAwLDAgOS41LDE0LjVBMi41LDIuNSAwIDAsMCAxMiwxN0EyLjUsMi41IDAgMCwwIDE0LjUsMTQuNUEyLjUsMi41IDAgMCwwIDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvY2tldCA9IFwiTTIwIDIyTDE2LjE0IDIwLjQ1QzE2Ljg0IDE4LjkyIDE3LjM0IDE3LjM0IDE3LjY1IDE1LjczTDIwIDIyTTcuODYgMjAuNDVMNCAyMkw2LjM1IDE1LjczQzYuNjYgMTcuMzQgNy4xNiAxOC45MiA3Ljg2IDIwLjQ1TTEyIDJDMTIgMiAxNyA0IDE3IDEyQzE3IDE1LjEgMTYuMjUgMTcuNzUgMTUuMzMgMTkuODNDMTUgMjAuNTUgMTQuMjkgMjEgMTMuNSAyMUgxMC41QzkuNzEgMjEgOSAyMC41NSA4LjY3IDE5LjgzQzcuNzYgMTcuNzUgNyAxNS4xIDcgMTJDNyA0IDEyIDIgMTIgMk0xMiAxMkMxMy4xIDEyIDE0IDExLjEgMTQgMTBDMTQgOC45IDEzLjEgOCAxMiA4QzEwLjkgOCAxMCA4LjkgMTAgMTBDMTAgMTEuMSAxMC45IDEyIDEyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvY2tldExhdW5jaCA9IFwiTTEzLjEzIDIyLjE5TDExLjUgMTguMzZDMTMuMDcgMTcuNzggMTQuNTQgMTcgMTUuOSAxNi4wOUwxMy4xMyAyMi4xOU01LjY0IDEyLjVMMS44MSAxMC44N0w3LjkxIDguMUM3IDkuNDYgNi4yMiAxMC45MyA1LjY0IDEyLjVNMjEuNjEgMi4zOUMyMS42MSAyLjM5IDE2LjY2IC4yNjkgMTEgNS45M0M4LjgxIDguMTIgNy41IDEwLjUzIDYuNjUgMTIuNjRDNi4zNyAxMy4zOSA2LjU2IDE0LjIxIDcuMTEgMTQuNzdMOS4yNCAxNi44OUM5Ljc5IDE3LjQ1IDEwLjYxIDE3LjYzIDExLjM2IDE3LjM1QzEzLjUgMTYuNTMgMTUuODggMTUuMTkgMTguMDcgMTNDMjMuNzMgNy4zNCAyMS42MSAyLjM5IDIxLjYxIDIuMzlNMTQuNTQgOS40NkMxMy43NiA4LjY4IDEzLjc2IDcuNDEgMTQuNTQgNi42M1MxNi41OSA1Ljg1IDE3LjM3IDYuNjNDMTguMTQgNy40MSAxOC4xNSA4LjY4IDE3LjM3IDkuNDZDMTYuNTkgMTAuMjQgMTUuMzIgMTAuMjQgMTQuNTQgOS40Nk04Ljg4IDE2LjUzTDcuNDcgMTUuMTJMOC44OCAxNi41M002LjI0IDIyTDkuODggMTguMzZDOS41NCAxOC4yNyA5LjIxIDE4LjEyIDguOTEgMTcuOTFMNC44MyAyMkg2LjI0TTIgMjJIMy40MUw4LjE4IDE3LjI0TDYuNzYgMTUuODNMMiAyMC41OVYyMk0yIDE5LjE3TDYuMDkgMTUuMDlDNS44OCAxNC43OSA1LjczIDE0LjQ3IDUuNjQgMTQuMTJMMiAxNy43NlYxOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2NrZXRMYXVuY2hPdXRsaW5lID0gXCJNMTMuMTMgMjIuMTlMMTEuNSAxOC4zNkMxMy4wNyAxNy43OCAxNC41NCAxNyAxNS45IDE2LjA5TDEzLjEzIDIyLjE5TTUuNjQgMTIuNUwxLjgxIDEwLjg3TDcuOTEgOC4xQzcgOS40NiA2LjIyIDEwLjkzIDUuNjQgMTIuNU0xOS4yMiA0QzE5LjUgNCAxOS43NSA0IDE5Ljk2IDQuMDVDMjAuMTMgNS40NCAxOS45NCA4LjMgMTYuNjYgMTEuNThDMTQuOTYgMTMuMjkgMTIuOTMgMTQuNiAxMC42NSAxNS40N0w4LjUgMTMuMzdDOS40MiAxMS4wNiAxMC43MyA5LjAzIDEyLjQyIDcuMzRDMTUuMTggNC41OCAxNy42NCA0IDE5LjIyIDRNMTkuMjIgMkMxNy4yNCAyIDE0LjI0IDIuNjkgMTEgNS45M0M4LjgxIDguMTIgNy41IDEwLjUzIDYuNjUgMTIuNjRDNi4zNyAxMy4zOSA2LjU2IDE0LjIxIDcuMTEgMTQuNzdMOS4yNCAxNi44OUM5LjYyIDE3LjI3IDEwLjEzIDE3LjUgMTAuNjYgMTcuNUMxMC44OSAxNy41IDExLjEzIDE3LjQ0IDExLjM2IDE3LjM1QzEzLjUgMTYuNTMgMTUuODggMTUuMTkgMTguMDcgMTNDMjMuNzMgNy4zNCAyMS42MSAyLjM5IDIxLjYxIDIuMzlTMjAuNyAyIDE5LjIyIDJNMTQuNTQgOS40NkMxMy43NiA4LjY4IDEzLjc2IDcuNDEgMTQuNTQgNi42M1MxNi41OSA1Ljg1IDE3LjM3IDYuNjNDMTguMTQgNy40MSAxOC4xNSA4LjY4IDE3LjM3IDkuNDZDMTYuNTkgMTAuMjQgMTUuMzIgMTAuMjQgMTQuNTQgOS40Nk04Ljg4IDE2LjUzTDcuNDcgMTUuMTJMOC44OCAxNi41M002LjI0IDIyTDkuODggMTguMzZDOS41NCAxOC4yNyA5LjIxIDE4LjEyIDguOTEgMTcuOTFMNC44MyAyMkg2LjI0TTIgMjJIMy40MUw4LjE4IDE3LjI0TDYuNzYgMTUuODNMMiAyMC41OVYyMk0yIDE5LjE3TDYuMDkgMTUuMDlDNS44OCAxNC43OSA1LjczIDE0LjQ3IDUuNjQgMTQuMTJMMiAxNy43NlYxOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2NrZXRPdXRsaW5lID0gXCJNMTIgMkMxMiAyIDcgNCA3IDEyQzcgMTUuMSA3Ljc2IDE3Ljc1IDguNjcgMTkuODNDOSAyMC41NSA5LjcxIDIxIDEwLjUgMjFIMTMuNUMxNC4yOSAyMSAxNSAyMC41NSAxNS4zMyAxOS44M0MxNi4yNSAxNy43NSAxNyAxNS4xIDE3IDEyQzE3IDQgMTIgMiAxMiAyTTEzLjUgMTlIMTAuNUM5LjUgMTYuNzYgOSAxNC40MSA5IDEyQzkgNy4zNiAxMC45IDUuMiAxMiA0LjMzQzEzLjEgNS4yIDE1IDcuMzYgMTUgMTJDMTUgMTQuNDEgMTQuNSAxNi43NiAxMy41IDE5TTIwIDIyTDE2LjE0IDIwLjQ1QzE2Ljg0IDE4LjkyIDE3LjM0IDE3LjM0IDE3LjY1IDE1LjczTTcuODYgMjAuNDVMNCAyMkw2LjM1IDE1LjczQzYuNjYgMTcuMzQgNy4xNiAxOC45MiA3Ljg2IDIwLjQ1TTEyIDEyQzEwLjkgMTIgMTAgMTEuMSAxMCAxMEMxMCA4LjkgMTAuOSA4IDEyIDhDMTMuMSA4IDE0IDguOSAxNCAxMEMxNCAxMS4xIDEzLjEgMTIgMTIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9kZW50ID0gXCJNMjEuMzMgMTcuMzlDMjIuNzMgMTguNjYgMjEuOCAyMSAxOS45MiAyMUgxMS4wNkM4LjI1IDIxIDYgMTguNzUgNiAxNS45NFYxNS44OUMzLjcgMTUuNDIgMiAxMy40MSAyIDExQzIgOC4yNSA0LjIyIDYgNyA2SDkuNUM5LjggNiAxMCA1Ljc3IDEwIDUuNVM5LjggNSA5LjUgNUg3VjNIOS41QzEwLjg4IDMgMTIgNC4xMyAxMiA1LjVDMTIgNi44OSAxMC44OCA4IDkuNSA4SDdDNS4zNCA4IDQgOS4zMyA0IDExQzQgMTIuMzcgNC45MiAxMy41IDYuMTQgMTMuODdDNi43IDExLjY3IDguNjcgMTAgMTEuMDYgMTBDMTEuODYgMTAgMTIuNjYgMTAuMjIgMTMuMzYgMTAuNTVDMTEuOTUgMTEuMzQgMTEgMTIuOCAxMSAxNC41QzExIDE1Ljc1IDExLjUgMTYuODcgMTIuMzMgMTcuNjdMMTMuMDMgMTYuOTdDMTIuMzggMTYuMzYgMTIgMTUuNDcgMTIgMTQuNUMxMiAxMS45MSAxNC4zNCAxMSAxNS41IDExQzE3LjU4IDExIDE5LjQ1IDEyLjg5IDE4Ljk0IDE1LjIzTDIxLjMzIDE3LjM5TTE4IDE5QzE4LjU2IDE5IDE5IDE4LjU2IDE5IDE4UzE4LjU2IDE3IDE4IDE3IDE3IDE3LjQ0IDE3IDE4IDE3LjQ0IDE5IDE4IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlclNrYXRlID0gXCJNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1TTYuNSwxN0EyLjUsMi41IDAgMCwwIDQsMTkuNUEyLjUsMi41IDAgMCwwIDYuNSwyMkEyLjUsMi41IDAgMCwwIDksMTkuNUEyLjUsMi41IDAgMCwwIDYuNSwxN00xNi41LDE3QTIuNSwyLjUgMCAwLDAgMTQsMTkuNUEyLjUsMi41IDAgMCwwIDE2LjUsMjJBMi41LDIuNSAwIDAsMCAxOSwxOS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2xsZXJTa2F0ZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE4LjczIDIwLjYyQzE4LjMyIDIxLjQzIDE3LjUgMjIgMTYuNSAyMkMxNS4xMiAyMiAxNCAyMC44OCAxNCAxOS41QzE0IDE4LjUgMTQuNTcgMTcuNjggMTUuMzggMTcuMjdMMTQuMTEgMTZINFY1Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTkgMTVDMTkgMTAgMTQgMTAgMTQgMTBIMTMuMkwxOC43MiAxNS41QzE5IDE1LjI3IDE5IDE1IDE5IDE1TTExLjY0IDcuNUwxMS40MyA2SDkuMjRWNC41SDExLjIxTDExIDNINi4yTDEwLjcgNy41SDExLjY0TTYuNSAxN0M1LjEyIDE3IDQgMTguMTIgNCAxOS41UzUuMTIgMjIgNi41IDIyIDkgMjAuODggOSAxOS41IDcuODggMTcgNi41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlcmJsYWRlID0gXCJNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1TTUuNSwxN0EyLjUsMi41IDAgMCwwIDMsMTkuNUEyLjUsMi41IDAgMCwwIDUuNSwyMkEyLjUsMi41IDAgMCwwIDgsMTkuNUEyLjUsMi41IDAgMCwwIDUuNSwxN00xNy41LDE3QTIuNSwyLjUgMCAwLDAgMTUsMTkuNUEyLjUsMi41IDAgMCwwIDE3LjUsMjJBMi41LDIuNSAwIDAsMCAyMCwxOS41QTIuNSwyLjUgMCAwLDAgMTcuNSwxN00xMS41LDE3QTIuNSwyLjUgMCAwLDAgOSwxOS41QTIuNSwyLjUgMCAwLDAgMTEuNSwyMkEyLjUsMi41IDAgMCwwIDE0LDE5LjVBMi41LDIuNSAwIDAsMCAxMS41LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlcmJsYWRlT2ZmID0gXCJNMjAuODQgMjIuNzNMMTkuMzIgMjEuMjFDMTguODYgMjEuNjkgMTguMjIgMjIgMTcuNSAyMkMxNi4xMiAyMiAxNSAyMC44OCAxNSAxOS41QzE1IDE4Ljc4IDE1LjMxIDE4LjE0IDE1Ljc5IDE3LjY4TDE0LjExIDE2SDRWNS44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTExLjY0IDcuNUwxMS40MyA2SDkuMjRWNC41SDExLjIxTDExIDNINi4yTDEwLjcgNy41SDExLjY0TTE5IDE1QzE5IDEwIDE0IDEwIDE0IDEwSDEzLjJMMTguNzIgMTUuNUMxOSAxNS4yNyAxOSAxNSAxOSAxNU0xMS41IDE3QzEwLjEyIDE3IDkgMTguMTIgOSAxOS41UzEwLjEyIDIyIDExLjUgMjIgMTQgMjAuODggMTQgMTkuNSAxMi44OCAxNyAxMS41IDE3TTUuNSAxN0M0LjEyIDE3IDMgMTguMTIgMyAxOS41UzQuMTIgMjIgNS41IDIyIDggMjAuODggOCAxOS41IDYuODggMTcgNS41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGx1cGpzID0gXCJNMTkuNDYsOC42NEMxOS40NiwxMS4xMSAxOC4xMSwxMy4yNiAxNi4xMiwxNC40QzE2LDE0LjUgMTUuOTMsMTQuNjYgMTYsMTQuODFMMTkuNDEsMjEuNTVDMTkuNSwyMS43NiAxOS4zNiwyMiAxOS4xMywyMkg2LjFMNi4xNywyMS45NkM2LjY2LDIxLjY4IDEwLjA2LDE0Ljk3IDEzLjM4LDExLjc5QzE2LjcsOC42MSAxNy4xMiw5LjY3IDE1LjI5LDYuMjFDMTUuMjksNi4yMSAxNi43LDguOTYgMTUuNSw5LjE3QzE0LjU2LDkuMzQgMTIuNCw3LjI1IDEzLjIsNS4zN0MxNCwzLjUzIDE3LjE1LDMuODggMTguNiw1LjM4QzE5LjE1LDYuMzQgMTkuNDYsNy40NSAxOS40Niw4LjY0TTcuMTYsMTMuMTNDNS44NCwxNS41NiA1LDE3LjMzIDQuNTQsMTguNTdWMi4zMUM0LjU0LDIuMTQgNC42OCwyIDQuODUsMkgxMi45MkMxNS4yNiwyLjA0IDE3LjMxLDMuMjggMTguNDYsNS4xNUMxNy42Miw0LjEgMTYuMywzLjUgMTUsMy41QzEyLjUzLDMuNSAxMS45MSw0LjQgNy4xNiwxMy4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWwxID0gXCJNMTQgN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWwxMCA9IFwiTTkgN0wxMSAxMkw5IDE3SDExTDEyIDE0LjVMMTMgMTdIMTVMMTMgMTJMMTUgN0gxM0wxMiA5LjVMMTEgN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbWFuTnVtZXJhbDIgPSBcIk0xMSA3VjlIMTBWMTVIMTFWMTdIN1YxNUg4VjlIN1Y3SDExTTE3IDdWOUgxNlYxNUgxN1YxN0gxM1YxNUgxNFY5SDEzVjdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsMyA9IFwiTTkgN1Y5SDhWMTVIOVYxN0g1VjE1SDZWOUg1VjdIOU0xNCA3VjlIMTNWMTVIMTRWMTdIMTBWMTVIMTFWOUgxMFY3SDE0TTE5IDdWOUgxOFYxNUgxOVYxN0gxNVYxNUgxNlY5SDE1VjdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNCA9IFwiTTEyIDdMMTQgMTdIMTZMMTggN0gxNkwxNSAxMkwxNCA3SDEyTTExIDdWOUgxMFYxNUgxMVYxN0g3VjE1SDhWOUg3VjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNSA9IFwiTTkgN0wxMSAxN0gxM0wxNSA3SDEzTDEyIDEyTDExIDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWw2ID0gXCJNNiA3TDggMTdIMTBMMTIgN0gxMEw5IDEyTDggN0g2TTE3IDdWOUgxNlYxNUgxN1YxN0gxM1YxNUgxNFY5SDEzVjdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNyA9IFwiTTQgN0w2IDE3SDhMMTAgN0g4TDcgMTJMNiA3SDRNMTUgN1Y5SDE0VjE1SDE1VjE3SDExVjE1SDEyVjlIMTFWN0gxNU0yMCA3VjlIMTlWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNlY3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbWFuTnVtZXJhbDggPSBcIk0xIDdMMyAxN0g1TDcgN0g1TDQgMTJMMyA3SDFNMTIgN1Y5SDExVjE1SDEyVjE3SDhWMTVIOVY5SDhWN0gxMk0xNyA3VjlIMTZWMTVIMTdWMTdIMTNWMTVIMTRWOUgxM1Y3SDE3TTIyIDdWOUgyMVYxNUgyMlYxN0gxOFYxNUgxOVY5SDE4VjdIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsOSA9IFwiTTExIDdWOUgxMFYxNUgxMVYxN0g3VjE1SDhWOUg3VjdIMTFNMTIgN0wxNCAxMkwxMiAxN0gxNEwxNSAxNC41TDE2IDE3SDE4TDE2IDEyTDE4IDdIMTZMMTUgOS41TDE0IDdIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9vbVNlcnZpY2UgPSBcIk0xMiw1QTIsMiAwIDAsMSAxNCw3QzE0LDcuMjQgMTMuOTYsNy40NyAxMy44OCw3LjY5QzE3Ljk1LDguNSAyMSwxMS45MSAyMSwxNkgzQzMsMTEuOTEgNi4wNSw4LjUgMTAuMTIsNy42OUMxMC4wNCw3LjQ3IDEwLDcuMjQgMTAsN0EyLDIgMCAwLDEgMTIsNU0yMiwxOUgyVjE3SDIyVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvb21TZXJ2aWNlT3V0bGluZSA9IFwiTTEyLDVBMiwyIDAgMCwxIDE0LDdDMTQsNy4yNCAxMy45Niw3LjQ3IDEzLjg4LDcuNjlDMTcuOTUsOC41IDIxLDExLjkxIDIxLDE2SDNDMywxMS45MSA2LjA1LDguNSAxMC4xMiw3LjY5QzEwLjA0LDcuNDcgMTAsNy4yNCAxMCw3QTIsMiAwIDAsMSAxMiw1TTIyLDE5SDJWMTdIMjJWMTlNMTIsOS41QzguODksOS41IDYuMjUsMTEuMzkgNS4zNCwxNEgxOC42NkMxNy43NSwxMS4zOSAxNS4xMSw5LjUgMTIsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZTNkID0gXCJNNy40NywyMS41QzQuMiwxOS45NCAxLjg2LDE2Ljc2IDEuNSwxM0gwQzAuNSwxOS4xNiA1LjY2LDI0IDExLjk1LDI0TDEyLjYxLDIzLjk3TDguOCwyMC4xNkw3LjQ3LDIxLjVNOC4zNiwxNC45NkM4LjE3LDE0Ljk2IDgsMTQuOTMgNy44NCwxNC44OEM3LjY4LDE0LjgyIDcuNTUsMTQuNzUgNy40NCwxNC42NEM3LjMzLDE0LjU0IDcuMjQsMTQuNDIgNy4xOCwxNC4yN0M3LjEyLDE0LjEzIDcuMDksMTMuOTcgNy4wOSwxMy44SDUuNzlDNS43OSwxNC4xNiA1Ljg2LDE0LjUgNiwxNC43NUM2LjE0LDE1IDYuMzMsMTUuMjUgNi41NiwxNS40NEM2LjgsMTUuNjIgNy4wNywxNS43NiA3LjM4LDE1Ljg1QzcuNjgsMTUuOTUgOCwxNiA4LjM0LDE2QzguNzEsMTYgOS4wNiwxNS45NSA5LjM3LDE1Ljg1QzkuNjksMTUuNzUgOS45NywxNS42IDEwLjIsMTUuNDFDMTAuNDMsMTUuMjIgMTAuNjIsMTUgMTAuNzUsMTQuNjlDMTAuODgsMTQuNCAxMC45NSwxNC4wOCAxMC45NSwxMy43MkMxMC45NSwxMy41MyAxMC45MywxMy4zNCAxMC44OCwxMy4xNkMxMC44MywxMyAxMC43NiwxMi44MSAxMC42NSwxMi42NUMxMC41NSwxMi41IDEwLjQxLDEyLjM1IDEwLjI1LDEyLjIyQzEwLjA4LDEyLjA5IDkuODgsMTIgOS42NCwxMS45MUM5Ljg0LDExLjgyIDEwLDExLjcxIDEwLjE2LDExLjU4QzEwLjMxLDExLjQ1IDEwLjQzLDExLjMxIDEwLjUzLDExLjE2QzEwLjYzLDExIDEwLjcsMTAuODYgMTAuNzUsMTAuN0MxMC44LDEwLjU0IDEwLjgyLDEwLjM4IDEwLjgyLDEwLjIyQzEwLjgyLDkuODYgMTAuNzYsOS41NCAxMC42NCw5LjI2QzEwLjUsOSAxMC4zNSw4Ljc1IDEwLjEzLDguNTdDOS45Myw4LjM4IDkuNjYsOC4yNCA5LjM2LDguMTRDOS4wNSw4LjA1IDguNzEsOCA4LjM0LDhDOCw4IDcuNjUsOC4wNSA3LjM0LDguMTZDNy4wNCw4LjI3IDYuNzcsOC40MiA2LjU1LDguNjFDNi4zNCw4LjggNi4xNyw5IDYuMDQsOS4yOEM1LjkyLDkuNTQgNS44Niw5LjgyIDUuODYsMTAuMTNINy4xNkM3LjE2LDkuOTYgNy4xOSw5LjgxIDcuMjUsOS42OEM3LjMxLDkuNTUgNy4zOSw5LjQzIDcuNSw5LjM0QzcuNjEsOS4yNSA3LjczLDkuMTcgNy44OCw5LjEyQzguMDMsOS4wNyA4LjE4LDkuMDQgOC4zNiw5LjA0QzguNzYsOS4wNCA5LjA2LDkuMTQgOS4yNSw5LjM1QzkuNDQsOS41NSA5LjU0LDkuODQgOS41NCwxMC4yMUM5LjU0LDEwLjM5IDkuNSwxMC41NSA5LjQ2LDEwLjdDOS40MSwxMC44NSA5LjMyLDEwLjk3IDkuMjEsMTEuMDdDOS4xLDExLjE3IDguOTYsMTEuMjUgOC44LDExLjMxQzguNjQsMTEuMzcgOC40NCwxMS40IDguMjIsMTEuNEg3LjQ1VjEyLjQzSDguMjJDOC40NCwxMi40MyA4LjY0LDEyLjQ1IDguODIsMTIuNUM5LDEyLjU1IDkuMTUsMTIuNjMgOS4yNywxMi43M0M5LjM5LDEyLjg0IDkuNSwxMi45NyA5LjU2LDEzLjEzQzkuNjMsMTMuMjkgOS42NiwxMy41IDkuNjYsMTMuN0M5LjY2LDE0LjExIDkuNTQsMTQuNDIgOS4zMSwxNC42M0M5LjA4LDE0Ljg2IDguNzYsMTQuOTYgOC4zNiwxNC45Nk0xNi45MSw5LjA0QzE2LjU5LDguNzEgMTYuMjEsOC40NSAxNS43Nyw4LjI3QzE1LjM0LDguMDkgMTQuODUsOCAxNC4zMSw4SDExLjk1VjE2SDE0LjI1QzE0LjgsMTYgMTUuMzEsMTUuOTEgMTUuNzYsMTUuNzNDMTYuMjEsMTUuNTUgMTYuNiwxNS4zIDE2LjkyLDE0Ljk3QzE3LjI0LDE0LjY0IDE3LjUsMTQuMjQgMTcuNjYsMTMuNzhDMTcuODMsMTMuMzEgMTcuOTIsMTIuNzkgMTcuOTIsMTIuMjFWMTEuODFDMTcuOTIsMTEuMjMgMTcuODMsMTAuNzEgMTcuNjYsMTAuMjRDMTcuNSw5Ljc3IDE3LjIzLDkuMzcgMTYuOTEsOS4wNE0xNi41LDEyLjJDMTYuNSwxMi42MiAxNi40NywxMyAxNi4zOCwxMy4zM0MxNi4yOCwxMy42NiAxNi4xNCwxMy45NSAxNS45NSwxNC4xOEMxNS43NiwxNC40MSAxNS41LDE0LjU5IDE1LjI0LDE0LjcxQzE0Ljk1LDE0LjgzIDE0LjYyLDE0Ljg5IDE0LjI1LDE0Ljg5SDEzLjM0VjkuMTJIMTQuMzFDMTUuMDMsOS4xMiAxNS41OCw5LjM1IDE1Ljk1LDkuODFDMTYuMzMsMTAuMjcgMTYuNSwxMC45MyAxNi41LDExLjhNMTEuOTUsMEwxMS4yOSwwLjAzTDE1LjEsMy44NEwxNi40MywyLjVDMTkuNyw0LjA2IDIyLjA0LDcuMjMgMjIuMzksMTFIMjMuODlDMjMuMzksNC44NCAxOC4yNCwwIDExLjk1LDBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlM2RWYXJpYW50ID0gXCJNMTIsNUMxNi45Nyw1IDIxLDcuNjkgMjEsMTFDMjEsMTIuNjggMTkuOTYsMTQuMiAxOC4yOSwxNS4yOUMxOS4zNiwxNC40MiAyMCwxMy4zMiAyMCwxMi4xM0MyMCw5LjI5IDE2LjQyLDcgMTIsN1YxMEw4LDZMMTIsMlY1TTEyLDE5QzcuMDMsMTkgMywxNi4zMSAzLDEzQzMsMTEuMzIgNC4wNCw5LjggNS43MSw4LjcxQzQuNjQsOS41OCA0LDEwLjY4IDQsMTEuODhDNCwxNC43MSA3LjU4LDE3IDEyLDE3VjE0TDE2LDE4TDEyLDIyVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZUxlZnQgPSBcIk0xMyw0LjA3VjFMOC40NSw1LjU1TDEzLDEwVjYuMDlDMTUuODQsNi41NyAxOCw5LjAzIDE4LDEyQzE4LDE0Ljk3IDE1Ljg0LDE3LjQzIDEzLDE3LjkxVjE5LjkzQzE2Ljk1LDE5LjQ0IDIwLDE2LjA4IDIwLDEyQzIwLDcuOTIgMTYuOTUsNC41NiAxMyw0LjA3TTcuMSwxOC4zMkM4LjI2LDE5LjIyIDkuNjEsMTkuNzYgMTEsMTkuOTNWMTcuOUMxMC4xMywxNy43NSA5LjI5LDE3LjQxIDguNTQsMTYuODdMNy4xLDE4LjMyTTYuMDksMTNINC4wN0M0LjI0LDE0LjM5IDQuNzksMTUuNzMgNS42OSwxNi44OUw3LjEsMTUuNDdDNi41OCwxNC43MiA2LjIzLDEzLjg4IDYuMDksMTNNNy4xMSw4LjUzTDUuNyw3LjExQzQuOCw4LjI3IDQuMjQsOS42MSA0LjA3LDExSDYuMDlDNi4yMywxMC4xMyA2LjU4LDkuMjggNy4xMSw4LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZUxlZnRWYXJpYW50ID0gXCJNNCwySDdBMiwyIDAgMCwxIDksNFYyMEEyLDIgMCAwLDEgNywyMkg0QTIsMiAwIDAsMSAyLDIwVjRBMiwyIDAgMCwxIDQsMk0yMCwxNUEyLDIgMCAwLDEgMjIsMTdWMjBBMiwyIDAgMCwxIDIwLDIySDExVjE1SDIwTTE0LDRBOCw4IDAgMCwxIDIyLDEyTDIxLjk0LDEzSDE5LjkyTDIwLDEyQTYsNiAwIDAsMCAxNCw2VjlMMTAsNUwxNCwxVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlT3JiaXQgPSBcIk04LDE0LjI1TDQuNzUsMTFIN0M3LjI1LDUuMzkgOS4zOSwxIDEyLDFDMTQsMSAxNS43NywzLjY0IDE2LjU1LDcuNDVDMjAuMzYsOC4yMyAyMywxMCAyMywxMkMyMywxMy44MyAyMC44MywxNS40MyAxNy42LDE2LjNMMTcuODksMTQuMjdDMTkuOCwxMy43MiAyMSwxMi45MSAyMSwxMkMyMSwxMC45NCAxOS4zNSwxMCAxNi44Nyw5LjVDMTYuOTUsMTAuMjkgMTcsMTEuMTMgMTcsMTJDMTcsMTguMDggMTQuNzYsMjMgMTIsMjNDMTAuMTcsMjMgOC41NywyMC44MyA3LjcsMTcuNkw5LjczLDE3Ljg5QzEwLjI4LDE5LjggMTEuMDksMjEgMTIsMjFDMTMuNjYsMjEgMTUsMTYuOTcgMTUsMTJDMTUsMTEgMTQuOTUsMTAuMDUgMTQuODUsOS4xNUMxMy45NSw5LjA1IDEzLDkgMTIsOUwxMC4xNCw5LjA2TDEwLjQzLDcuMDVMMTIsN0MxMi44Nyw3IDEzLjcxLDcuMDUgMTQuNSw3LjEzQzE0LDQuNjUgMTMuMDYsMyAxMiwzQzEwLjQ2LDMgOS4xOCw2LjUgOSwxMUgxMS4yNUw4LDE0LjI1TTE0LjI1LDE2TDExLDE5LjI1VjE3QzUuMzksMTYuNzUgMSwxNC42MSAxLDEyQzEsMTAuMTcgMy4xNyw4LjU3IDYuNCw3LjdMNi4xMSw5LjczQzQuMiwxMC4yOCAzLDExLjA5IDMsMTJDMywxMy41NCA2LjUsMTQuODIgMTEsMTVWMTIuNzVMMTQuMjUsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlUmlnaHQgPSBcIk0xNi44OSwxNS41TDE4LjMxLDE2Ljg5QzE5LjIxLDE1LjczIDE5Ljc2LDE0LjM5IDE5LjkzLDEzSDE3LjkxQzE3Ljc3LDEzLjg3IDE3LjQzLDE0LjcyIDE2Ljg5LDE1LjVNMTMsMTcuOVYxOS45MkMxNC4zOSwxOS43NSAxNS43NCwxOS4yMSAxNi45LDE4LjMxTDE1LjQ2LDE2Ljg3QzE0LjcxLDE3LjQxIDEzLjg3LDE3Ljc2IDEzLDE3LjlNMTkuOTMsMTFDMTkuNzYsOS42MSAxOS4yMSw4LjI3IDE4LjMxLDcuMTFMMTYuODksOC41M0MxNy40Myw5LjI4IDE3Ljc3LDEwLjEzIDE3LjkxLDExTTE1LjU1LDUuNTVMMTEsMVY0LjA3QzcuMDYsNC41NiA0LDcuOTIgNCwxMkM0LDE2LjA4IDcuMDUsMTkuNDQgMTEsMTkuOTNWMTcuOTFDOC4xNiwxNy40MyA2LDE0Ljk3IDYsMTJDNiw5LjAzIDguMTYsNi41NyAxMSw2LjA5VjEwTDE1LjU1LDUuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlUmlnaHRWYXJpYW50ID0gXCJNMTAsNFYxTDE0LDVMMTAsOVY2QTYsNiAwIDAsMCA0LDEyTDQuMDgsMTNIMi4wNkwyLDEyQTgsOCAwIDAsMSAxMCw0TTE3LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDE3QTIsMiAwIDAsMSAxNSwyMFY0QTIsMiAwIDAsMSAxNywyTTQsMTVIMTNWMjJINEEyLDIgMCAwLDEgMiwyMFYxN0EyLDIgMCAwLDEgNCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3VuZGVkQ29ybmVyID0gXCJNMTksMTlIMjFWMjFIMTlWMTlNMTksMTdIMjFWMTVIMTlWMTdNMywxM0g1VjExSDNWMTNNMywxN0g1VjE1SDNWMTdNMyw5SDVWN0gzVjlNMyw1SDVWM0gzVjVNNyw1SDlWM0g3VjVNMTUsMjFIMTdWMTlIMTVWMjFNMTEsMjFIMTNWMTlIMTFWMjFNMTUsMjFIMTdWMTlIMTVWMjFNNywyMUg5VjE5SDdWMjFNMywyMUg1VjE5SDNWMjFNMjEsOEE1LDUgMCAwLDAgMTYsM0gxMVY1SDE2QTMsMyAwIDAsMSAxOSw4VjEzSDIxVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm91dGVyID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMk0xMiAyMEM3LjU4IDIwIDQgMTYuNDIgNCAxMkM0IDcuNTggNy41OCA0IDEyIDRDMTYuNDIgNCAyMCA3LjU4IDIwIDEyQzIwIDE2LjQyIDE2LjQyIDIwIDEyIDIwTTEzIDEzVjE2SDE1TDEyIDE5TDkgMTZIMTFWMTNNNSAxM0g4VjE1TDExIDEyTDggOVYxMUg1TTExIDExVjhIOUwxMiA1TDE1IDhIMTNWMTFNMTkgMTFIMTZWOUwxMyAxMkwxNiAxNVYxM0gxOVwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdXRlck5ldHdvcmsgPSBcIk01IDlDMy45IDkgMyA5LjkgMyAxMVYxNUMzIDE2LjExIDMuOSAxNyA1IDE3SDExVjE5SDEwQzkuNDUgMTkgOSAxOS40NSA5IDIwSDJWMjJIOUM5IDIyLjU1IDkuNDUgMjMgMTAgMjNIMTRDMTQuNTUgMjMgMTUgMjIuNTUgMTUgMjJIMjJWMjBIMTVDMTUgMTkuNDUgMTQuNTUgMTkgMTQgMTlIMTNWMTdIMTlDMjAuMTEgMTcgMjEgMTYuMTEgMjEgMTVWMTFDMjEgOS45IDIwLjExIDkgMTkgOUg1TTYgMTJIOFYxNEg2VjEyTTkuNSAxMkgxMS41VjE0SDkuNVYxMk0xMyAxMkgxNVYxNEgxM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXJXaXJlbGVzcyA9IFwiTTIwLjIsNS45TDIxLDUuMUMxOS42LDMuNyAxNy44LDMgMTYsM0MxNC4yLDMgMTIuNCwzLjcgMTEsNS4xTDExLjgsNS45QzEzLDQuOCAxNC41LDQuMiAxNiw0LjJDMTcuNSw0LjIgMTksNC44IDIwLjIsNS45TTE5LjMsNi43QzE4LjQsNS44IDE3LjIsNS4zIDE2LDUuM0MxNC44LDUuMyAxMy42LDUuOCAxMi43LDYuN0wxMy41LDcuNUMxNC4yLDYuOCAxNS4xLDYuNSAxNiw2LjVDMTYuOSw2LjUgMTcuOCw2LjggMTguNSw3LjVMMTkuMyw2LjdNMTksMTNIMTdWOUgxNVYxM0g1QTIsMiAwIDAsMCAzLDE1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVYxNUEyLDIgMCAwLDAgMTksMTNNOCwxOEg2VjE2SDhWMThNMTEuNSwxOEg5LjVWMTZIMTEuNVYxOE0xNSwxOEgxM1YxNkgxNVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXJXaXJlbGVzc09mZiA9IFwiTTExLjggNS45TDExIDUuMUMxMi40IDMuNyAxNC4yIDMgMTYgM1MxOS42IDMuNyAyMSA1LjFMMjAuMiA1LjlDMTkgNC44IDE3LjUgNC4yIDE2IDQuMlMxMyA0LjggMTEuOCA1LjlNMjEgMTVDMjEgMTMuOSAyMC4xIDEzIDE5IDEzSDE3VjlIMTVWMTEuOEwyMSAxNy44VjE1TTE4LjUgNy41TDE5LjMgNi43QzE4LjQgNS44IDE3LjIgNS4zIDE2IDUuM1MxMy42IDUuOCAxMi43IDYuN0wxMy41IDcuNUMxNC4yIDYuOCAxNS4xIDYuNSAxNiA2LjVDMTYuOSA2LjUgMTcuOCA2LjggMTguNSA3LjVNMjIuMSAyMS41TDIwLjggMjIuOEwxOS4xIDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjE1QzMgMTMuOSAzLjkgMTMgNSAxM0gxMS4xTDEuMSAzTDIuNCAxLjdMMjIuMSAyMS41TTggMTZINlYxOEg4VjE2TTExLjUgMTZIOS41VjE4SDExLjVWMTZNMTUgMTYuOUwxNC4xIDE2SDEzVjE4SDE1VjE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm91dGVyV2lyZWxlc3NTZXR0aW5ncyA9IFwiTTIwLjIsNC45QzE5LDMuOCAxNy41LDMuMiAxNiwzLjJDMTQuNSwzLjIgMTMsMy44IDExLjgsNC45TDExLDQuMUMxMi40LDIuNyAxNC4yLDIgMTYsMkMxNy44LDIgMTkuNiwyLjcgMjEsNC4xTDIwLjIsNC45TTE5LjMsNS43TDE4LjUsNi41QzE3LjgsNS44IDE2LjksNS41IDE2LDUuNUMxNS4xLDUuNSAxNC4yLDUuOCAxMy41LDYuNUwxMi43LDUuN0MxMy42LDQuOCAxNC44LDQuMyAxNiw0LjNDMTcuMiw0LjMgMTguNCw0LjggMTkuMyw1LjdNMTksMTJBMiwyIDAgMCwxIDIxLDE0VjE4QTIsMiAwIDAsMSAxOSwyMEg1QTIsMiAwIDAsMSAzLDE4VjE0QTIsMiAwIDAsMSA1LDEySDE1VjhIMTdWMTJIMTlNOCwxN1YxNUg2VjE3SDhNMTEuNSwxN1YxNUg5LjVWMTdIMTEuNU0xNSwxN1YxNUgxM1YxN0gxNU03LDIySDlWMjRIN1YyMk0xMSwyMkgxM1YyNEgxMVYyMk0xNSwyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXMgPSBcIk0xMSwxMEg1TDMsOEw1LDZIMTFWM0wxMiwyTDEzLDNWNEgxOUwyMSw2TDE5LDhIMTNWMTBIMTlMMjEsMTJMMTksMTRIMTNWMjBBMiwyIDAgMCwxIDE1LDIySDlBMiwyIDAgMCwxIDExLDIwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdXRlc0Nsb2NrID0gXCJNMTYuNSAxM0gxNVYxNi42OUwxOC4xOSAxOC41M0wxOC45NCAxNy4yM0wxNi41IDE1LjgyVjEzTTE2IDlDMTQuMDQgOSAxMi4yNyA5LjgyIDExIDExLjEyVjdIMTdMMTkgNUwxNyAzSDExVjJMMTAgMUw5IDJWNkgzTDEgOEwzIDEwSDlWMjBDNy45IDIwIDcgMjAuOSA3IDIySDEyLjQxQzEzLjQ2IDIyLjYzIDE0LjY5IDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2UzE5Ljg3IDkgMTYgOU0xNiAyMC44NUMxMy4zMiAyMC44NSAxMS4xNSAxOC42OCAxMS4xNSAxNlMxMy4zMiAxMS4xNSAxNiAxMS4xNSAyMC44NSAxMy4zMiAyMC44NSAxNiAxOC42OCAyMC44NSAxNiAyMC44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3dpbmcgPSBcIk04LjUsMTQuNUw0LDE5TDUuNSwyMC41TDksMTdIMTFMOC41LDE0LjVNMTUsMUEyLDIgMCAwLDAgMTMsM0EyLDIgMCAwLDAgMTUsNUEyLDIgMCAwLDAgMTcsM0EyLDIgMCAwLDAgMTUsMU0yMSwyMUwxOCwyNEwxNSwyMVYxOS41TDcuOTEsMTIuNDFDNy42LDEyLjQ2IDcuMywxMi41IDcsMTIuNVYxMC4zMkM4LjY2LDEwLjM1IDEwLjYxLDkuNDUgMTEuNjcsOC4yOEwxMy4wNyw2LjczQzEzLjI2LDYuNSAxMy41LDYuMzUgMTMuNzYsNi4yM0MxNC4wNSw2LjA5IDE0LjM4LDYgMTQuNzIsNkgxNC43NUMxNiw2IDE3LDcgMTcsOC4yNlYxNEMxNywxNC44NSAxNi42NSwxNS42MiAxNi4wOCwxNi4xN0wxMi41LDEyLjU5VjEwLjMyQzExLjg3LDEwLjg0IDExLjA3LDExLjM0IDEwLjIxLDExLjcxTDE2LjUsMThIMThMMjEsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnNzID0gXCJNNi4xOCwxNS42NEEyLjE4LDIuMTggMCAwLDEgOC4zNiwxNy44MkM4LjM2LDE5IDcuMzgsMjAgNi4xOCwyMEM1LDIwIDQsMTkgNCwxNy44MkEyLjE4LDIuMTggMCAwLDEgNi4xOCwxNS42NE00LDQuNDRBMTUuNTYsMTUuNTYgMCAwLDEgMTkuNTYsMjBIMTYuNzNBMTIuNzMsMTIuNzMgMCAwLDAgNCw3LjI3VjQuNDRNNCwxMC4xQTkuOSw5LjkgMCAwLDEgMTMuOSwyMEgxMS4wN0E3LjA3LDcuMDcgMCAwLDAgNCwxMi45M1YxMC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJzc0JveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNy41LDE1QTEuNSwxLjUgMCAwLDAgNiwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE4QTEuNSwxLjUgMCAwLDAgOSwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE1TTYsMTBWMTJBNiw2IDAgMCwxIDEyLDE4SDE0QTgsOCAwIDAsMCA2LDEwTTYsNlY4QTEwLDEwIDAgMCwxIDE2LDE4SDE4QTEyLDEyIDAgMCwwIDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSc3NPZmYgPSBcIk0yLjUsMy43N0wzLjc4LDIuNUwyMS41LDIwLjIyTDIwLjIzLDIxLjVMMTguNzMsMjBIMTYuNzNDMTYuNzMsMTkuMjUgMTYuNjcsMTguNSAxNi41NCwxNy44MUw2LjE5LDcuNDZDNS41LDcuMzMgNC43NSw3LjI3IDQsNy4yN1Y1LjI3TDIuNSwzLjc3TTYuMTgsMTUuNjRBMi4xOCwyLjE4IDAgMCwxIDguMzYsMTcuODJDOC4zNiwxOSA3LjM4LDIwIDYuMTgsMjBDNSwyMCA0LDE5IDQsMTcuODJBMi4xOCwyLjE4IDAgMCwxIDYuMTgsMTUuNjRNNCwxMC4xQTkuOSw5LjkgMCAwLDEgMTMuOSwyMEgxMS4wN0E3LjA3LDcuMDcgMCAwLDAgNCwxMi45M1YxMC4xTTkuMTMsNS4zMUMxMy41OSw2Ljg3IDE3LjEzLDEwLjQxIDE4LjY5LDE0Ljg3TDkuMTMsNS4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWcgPSBcIk0xMiAxNEMxMC45IDE0IDEwIDEzLjExIDEwIDEyUzEwLjkgMTAgMTIgMTAgMTQgMTAuOSAxNCAxMiAxMy4xMSAxNCAxMiAxNE0yMyAxOUgxVjE3SDRWMTVIMVYxM0g0VjExSDFWOUg0VjdIMVY1SDIzVjdIMjBWOUgyM1YxMUgyMFYxM0gyM1YxNUgyMFYxN0gyM1YxOU0xMiAxNS45MkMxMi42MiAxNi42MiAxMy42NiAxNi44MSAxNC41IDE2LjMzQzE1LjM0IDE1Ljg1IDE1LjY5IDE0Ljg0IDE1LjQgMTMuOTZDMTYuMzEgMTMuNzggMTcgMTIuOTcgMTcgMTJTMTYuMzEgMTAuMjIgMTUuNCAxMC4wNEMxNS42OSA5LjE2IDE1LjM0IDguMTUgMTQuNSA3LjY3QzEzLjY2IDcuMTkgMTIuNjIgNy4zOCAxMiA4LjA4QzExLjM4IDcuMzggMTAuMzQgNy4xOSA5LjUgNy42N0M4LjY2IDguMTUgOC4zMSA5LjE2IDguNjEgMTAuMDRDNy42OSAxMC4yMiA3IDExLjAzIDcgMTJTNy42OSAxMy43OCA4LjYxIDEzLjk2QzguMzEgMTQuODQgOC42NiAxNS44NSA5LjUgMTYuMzNDMTAuMzQgMTYuODIgMTEuMzggMTYuNjIgMTIgMTUuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnVnYnkgPSBcIk0xNi4yMiwxNi4yMkMxOC4yNSwxNC4xOSAxOS4zMywxMS41IDE5LjQ1LDguMkMxOC4zNiwxMC42MSAxNi44MSwxMi44MSAxNC44MSwxNC44MUMxMi44MSwxNi44MSAxMC42MSwxOC4zNiA4LjIsMTkuNDVDMTEuNSwxOS4zNiAxNC4xNiwxOC4yOCAxNi4yMiwxNi4yMk03Ljc4LDcuNzhDNS43NSw5LjgxIDQuNjcsMTIuNSA0LjU1LDE1LjhDNSwxNC44IDUuNywxMy42NSA2LjYxLDEyLjM1QzcuNSwxMS4wNSA4LjM4LDEwIDkuMTksOS4xOUMxMS4xOSw3LjE5IDEzLjM5LDUuNjQgMTUuOCw0LjU1QzEyLjUsNC42NCA5Ljg0LDUuNzIgNy43OCw3Ljc4TTIwLjUsMy41QzIxLDQuMDUgMjEuMzQsNS4xMSAyMS40Nyw2LjdDMjEuNTksOC4zIDIxLjM1LDEwLjE2IDIwLjc0LDEyLjNDMjAuMTMsMTQuNDUgMTkuMTEsMTYuMjMgMTcuNjcsMTcuNjdDMTYuMzYsMTkgMTQuOCwxOS45NSAxMywyMC41NUMxMS4yMSwyMS4xNiA5LjQ0LDIxLjQ3IDcuNjksMjEuNDdDNS41NiwyMS40NyA0LjE3LDIxLjE0IDMuNSwyMC41QzMsMTkuOTUgMi42NiwxOC44OSAyLjUzLDE3LjNDMi40MSwxNS43IDIuNjUsMTMuODQgMy4yNiwxMS43QzMuODcsOS41NSA0Ljg5LDcuNzcgNi4zMyw2LjMzQzcuNjQsNSA5LjIsNC4wNSAxMSwzLjQ1QzEyLjc5LDIuODQgMTQuNTYsMi41MyAxNi4zMSwyLjUzQzE4LjQ0LDIuNTMgMTkuODMsMi44NiAyMC41LDMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWxlciA9IFwiTTEuMzksMTguMzZMMy4xNiwxNi42TDQuNTgsMThMNS42NCwxNi45NUw0LjIyLDE1LjU0TDUuNjQsMTQuMTJMOC4xMSwxNi42TDkuMTcsMTUuNTRMNi43LDEzLjA2TDguMTEsMTEuNjVMOS41MywxMy4wNkwxMC41OSwxMkw5LjE3LDEwLjU5TDEwLjU5LDkuMTdMMTMuMDYsMTEuNjVMMTQuMTIsMTAuNTlMMTEuNjUsOC4xMUwxMy4wNiw2LjdMMTQuNDcsOC4xMUwxNS41NCw3LjA1TDE0LjEyLDUuNjRMMTUuNTQsNC4yMkwxOCw2LjdMMTkuMDcsNS42NEwxNi42LDMuMTZMMTguMzYsMS4zOUwyMi42MSw1LjY0TDUuNjQsMjIuNjFMMS4zOSwxOC4zNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWxlclNxdWFyZSA9IFwiTTMsNVYyMUg5VjE5LjVIN1YxOEg5VjE2LjVINVYxNUg5VjEzLjVIN1YxMkg5VjEwLjVINVY5SDlWNUgxMC41VjlIMTJWN0gxMy41VjlIMTVWNUgxNi41VjlIMThWN0gxOS41VjlIMjFWM0g1QTIsMiAwIDAsMCAzLDVNNiw3QTEsMSAwIDAsMSA1LDZBMSwxIDAgMCwxIDYsNUExLDEgMCAwLDEgNyw2QTEsMSAwIDAsMSA2LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnVsZXJTcXVhcmVDb21wYXNzID0gXCJNMjAgMTkuODhWMjJMMTguMiAyMC44M0wxMy40MSAxMS44M0E0Ljk0IDQuOTQgMCAwIDAgMTUuMTkgMTAuODNNMTUgN0EzIDMgMCAwIDEgMTIgMTBBMy4yNyAzLjI3IDAgMCAxIDExLjU2IDEwTDUuOCAyMC44M0w0IDIyVjE5Ljg4TDkuNzkgOUEzIDMgMCAwIDEgMTIgNFYyQTEgMSAwIDAgMSAxMyAzVjQuMThBMyAzIDAgMCAxIDE1IDdNMTMgN0ExIDEgMCAxIDAgMTIgOEExIDEgMCAwIDAgMTMgN000LjIyIDEwTDYgMTEuOEw0LjU2IDE0LjU2TDIuMSAxMi4xTTEyIDE3Ljc2TDEwLjUgMTYuMjVMOSAxOUwxMiAyMkwxNSAxOUwxMy41MyAxNi4yM00xOS43OCAxMEwxOCAxMS44TDE5LjUgMTQuNTZMMjEuOSAxMi4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJ1biA9IFwiTTEzLjUsNS41QzE0LjU5LDUuNSAxNS41LDQuNTggMTUuNSwzLjVDMTUuNSwyLjM4IDE0LjU5LDEuNSAxMy41LDEuNUMxMi4zOSwxLjUgMTEuNSwyLjM4IDExLjUsMy41QzExLjUsNC41OCAxMi4zOSw1LjUgMTMuNSw1LjVNOS44OSwxOS4zOEwxMC44OSwxNUwxMywxN1YyM0gxNVYxNS41TDEyLjg5LDEzLjVMMTMuNSwxMC41QzE0Ljc5LDEyIDE2Ljc5LDEzIDE5LDEzVjExQzE3LjA5LDExIDE1LjUsMTAgMTQuNjksOC41OEwxMy42OSw3QzEzLjI5LDYuMzggMTIuNjksNiAxMiw2QzExLjY5LDYgMTEuNSw2LjA4IDExLjE5LDYuMDhMNiw4LjI4VjEzSDhWOS41OEw5Ljc5LDguODhMOC4xOSwxN0wzLjI5LDE2TDIuODksMThMOS44OSwxOS4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSdW5GYXN0ID0gXCJNMTYuNSw1LjVBMiwyIDAgMCwwIDE4LjUsMy41QTIsMiAwIDAsMCAxNi41LDEuNUEyLDIgMCAwLDAgMTQuNSwzLjVBMiwyIDAgMCwwIDE2LjUsNS41TTEyLjksMTkuNEwxMy45LDE1TDE2LDE3VjIzSDE4VjE1LjVMMTUuOSwxMy41TDE2LjUsMTAuNUMxNy44OSwxMi4wOSAxOS44OSwxMyAyMiwxM1YxMUMyMC4yNCwxMS4wMyAxOC42LDEwLjExIDE3LjcsOC42TDE2LjcsN0MxNi4zNCw2LjQgMTUuNyw2IDE1LDZDMTQuNyw2IDE0LjUsNi4xIDE0LjIsNi4xTDksOC4zVjEzSDExVjkuNkwxMi44LDguOUwxMS4yLDE3TDYuMywxNkw1LjksMThMMTIuOSwxOS40TTQsOUExLDEgMCAwLDEgMyw4QTEsMSAwIDAsMSA0LDdIN1Y5SDRNNSw1QTEsMSAwIDAsMSA0LDRBMSwxIDAgMCwxIDUsM0gxMFY1SDVNMywxM0ExLDEgMCAwLDEgMiwxMkExLDEgMCAwLDEgMywxMUg3VjEzSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnZUcnVjayA9IFwiTTIwIDhIMjJWNkwyMCA0SDNBMiAyIDAgMCAwIDEgNlYxNUEyIDIgMCAwIDAgMyAxN0g0QTMgMyAwIDAgMCA3IDIwQTMgMyAwIDAgMCAxMCAxN0gxNUEzIDMgMCAwIDAgMjEgMTdIMjNWMTJNNyAxOC41QTEuNSAxLjUgMCAwIDEgNyAxNS41QTEuNSAxLjUgMCAwIDEgNyAxOC41TTkgMTJIM1Y5SDlNMTQgMTVIMTFWOUgxNE0xOCAxOC41QTEuNSAxLjUgMCAxIDEgMTkuNSAxN0ExLjU0IDEuNTQgMCAwIDEgMTggMTguNU0xNyAxMlY5LjVIMTkuNUwyMS41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhY2sgPSBcIk0xNiw5QzIwLDExIDIxLDE4IDIxLDE4QzIxLDE4IDIyLDIyIDE2LDIyQzEwLDIyIDgsMjIgOCwyMkMyLDIyIDMsMTggMywxOEMzLDE4IDQsMTEgOCw5TTE0LDRMMTIsMkwxMCw0TDYsMkw4LDdIMTZMMTgsMkwxNCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhY2tQZXJjZW50ID0gXCJNOCw3TDYsMkwxMCw0TDEyLDJMMTQsNEwxOCwyTDE2LDdIOE0xNiwyMkMxMCwyMiA4LDIyIDgsMjJDMiwyMiAzLDE4IDMsMThDMywxOCA0LDExIDgsOUgxNkMyMCwxMSAyMSwxOCAyMSwxOEMyMSwxOCAyMiwyMiAxNiwyMk03LjUsMTIuNUExLjUsMS41IDAgMCwwIDksMTRBMS41LDEuNSAwIDAsMCAxMC41LDEyLjVBMS41LDEuNSAwIDAsMCA5LDExQTEuNSwxLjUgMCAwLDAgNy41LDEyLjVNMTYuNSwxOC41QTEuNSwxLjUgMCAwLDAgMTUsMTdBMS41LDEuNSAwIDAsMCAxMy41LDE4LjVBMS41LDEuNSAwIDAsMCAxNSwyMEExLjUsMS41IDAgMCwwIDE2LjUsMTguNU0xNi41LDEyLjM1TDE1LjE1LDExTDcuNSwxOC42NUw4Ljg3LDIwTDE2LjUsMTIuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FmZSA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjE3QTIsMiAwIDAsMCA0LDE5VjIwSDZWMTlIMTdWMjBIMTlWMTlBMiwyIDAgMCwwIDIxLDE3VjE2SDIyVjE0SDIxVjlIMjJWN0gyMVY2QTIsMiAwIDAsMCAxOSw0SDRNNCw2SDE5VjE3SDRWNk0xMy41LDcuNUE0LDQgMCAwLDAgOS41LDExLjVBNCw0IDAgMCwwIDEzLjUsMTUuNUE0LDQgMCAwLDAgMTcuNSwxMS41QTQsNCAwIDAsMCAxMy41LDcuNU01LDlWMTRIN1Y5SDVNMTMuNSw5LjVBMiwyIDAgMCwxIDE1LjUsMTEuNUEyLDIgMCAwLDEgMTMuNSwxMy41QTIsMiAwIDAsMSAxMS41LDExLjVBMiwyIDAgMCwxIDEzLjUsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhZmVTcXVhcmUgPSBcIk0yMCAyQzIxLjEgMiAyMiAyLjkgMjIgNFYyMEMyMiAyMS4xIDIxLjEgMjIgMjAgMjJIMTlWMjNIMTVWMjJIOVYyM0g1VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAySDIwTTE3IDEyQzE3IDExIDE2LjcgMTAgMTYuMiA5LjJMMTcuNyA3LjdMMTYuMyA2LjNMMTQuOCA3LjhDMTQgNy4zIDEzIDcgMTIgN0MxMSA3IDEwIDcuMyA5LjIgNy44TDcuOCA2LjNMNi4zIDcuOEw3LjggOS4zQzcuMyAxMCA3IDExIDcgMTJDNyAxMyA3LjMgMTQgNy44IDE0LjhMNi4zIDE2LjNMNy44IDE3LjdMOS4zIDE2LjJDMTAgMTYuNyAxMSAxNyAxMiAxN0MxMyAxNyAxNCAxNi43IDE0LjggMTYuMkwxNi4zIDE3LjdMMTcuNyAxNi4zTDE2LjIgMTQuOEMxNi43IDE0IDE3IDEzIDE3IDEyTTEyIDlDMTMuNyA5IDE1IDEwLjMgMTUgMTJDMTUgMTMuNyAxMy43IDE1IDEyIDE1QzEwLjMgMTUgOSAxMy43IDkgMTJDOSAxMC4zIDEwLjMgOSAxMiA5TTEyIDE0QzEzLjEgMTQgMTQgMTMuMSAxNCAxMkMxNCAxMC45IDEzLjEgMTAgMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyQzEwIDEzLjEgMTAuOSAxNCAxMiAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYWZlU3F1YXJlT3V0bGluZSA9IFwiTTEwIDEyQzEwIDEwLjkgMTAuOSAxMCAxMiAxMEMxMy4xIDEwIDE0IDEwLjkgMTQgMTJDMTQgMTMuMSAxMy4xIDE0IDEyIDE0QzEwLjkgMTQgMTAgMTMuMSAxMCAxMk03LjggMTcuN0w2LjMgMTYuM0w3LjggMTQuOEM3LjMgMTQgNyAxMyA3IDEyQzcgMTEgNy4zIDEwIDcuOCA5LjNMNi4zIDcuOEw3LjggNi4zTDkuMiA3LjhDMTAgNy4zIDExIDcgMTIgN0MxMyA3IDE0IDcuMyAxNC44IDcuOEwxNi4zIDYuM0wxNy43IDcuN0wxNi4yIDkuMkMxNi43IDEwIDE3IDExIDE3IDEyQzE3IDEzIDE2LjcgMTQgMTYuMiAxNC44TDE3LjcgMTYuM0wxNi4zIDE3LjdMMTQuOCAxNi4yQzE0IDE2LjcgMTMgMTcgMTIgMTdDMTEgMTcgMTAgMTYuNyA5LjMgMTYuMkw3LjggMTcuN00xMiA5QzEwLjMgOSA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNSAxMiAxNUMxMy43IDE1IDE1IDEzLjcgMTUgMTJDMTUgMTAuMyAxMy43IDkgMTIgOU0yMCAyQzIxLjEgMiAyMiAyLjkgMjIgNFYyMEMyMiAyMS4xIDIxLjEgMjIgMjAgMjJIMTlWMjNIMTVWMjJIOVYyM0g1VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAySDIwTTIwIDIwVjRINFYyMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYWZldHlHb2dnbGVzID0gXCJNMTgsOUMxOS4xMSw5IDIwLDkuODkgMjAsMTFWMTRDMjAsMTUuMTEgMTkuMTEsMTYgMTgsMTZIMTUuNzdMMTQuNTMsMTQuNzdDMTMuNzgsMTQgMTIuNzcsMTMuNiAxMS43LDEzLjZDMTAuNjMsMTMuNiA5LjYzLDE0IDguODcsMTQuNzdMNy42NCwxNkg2QzQuODksMTYgNCwxNS4xMSA0LDE0VjExQzQsOS44OSA0Ljg5LDkgNiw5SDE4TTE4LDdINkE0LDQgMCAwLDAgMiwxMUgyTDEsMTFWMTRIMlYxNEE0LDQgMCAwLDAgNiwxOEg4LjVDOC41NCwxNy45NCA4LjU5LDE3Ljg4IDEwLjI5LDE2LjE4QzEwLjY4LDE1Ljc5IDExLjE5LDE1LjYgMTEuNywxNS42QzEyLjIyLDE1LjYgMTIuNzMsMTUuNzkgMTMuMTIsMTYuMThMMTQuOTEsMThIMThBNCw0IDAgMCwwIDIyLDE0SDIyTDIzLDE0VjExSDIyVjExQTQsNCAwIDAsMCAxOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhaWxCb2F0ID0gXCJNMTQsM0w1LDE0SDE0TTMsMTZMNiwyMUgxOEwyMSwxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhbGUgPSBcIk0xOC42NSwyLjg1TDE5LjI2LDYuNzFMMjIuNzcsOC41TDIxLDEyTDIyLjc4LDE1LjVMMTkuMjQsMTcuMjlMMTguNjMsMjEuMTVMMTQuNzQsMjAuNTRMMTEuOTcsMjMuM0w5LjE5LDIwLjVMNS4zMywyMS4xNEw0LjcxLDE3LjI1TDEuMjIsMTUuNDdMMywxMS45N0wxLjIzLDguNUw0Ljc0LDYuNjlMNS4zNSwyLjg2TDkuMjIsMy41TDEyLDAuNjlMMTQuNzcsMy40NkwxOC42NSwyLjg1TTkuNSw3QTEuNSwxLjUgMCAwLDAgOCw4LjVBMS41LDEuNSAwIDAsMCA5LjUsMTBBMS41LDEuNSAwIDAsMCAxMSw4LjVBMS41LDEuNSAwIDAsMCA5LjUsN00xNC41LDE0QTEuNSwxLjUgMCAwLDAgMTMsMTUuNUExLjUsMS41IDAgMCwwIDE0LjUsMTdBMS41LDEuNSAwIDAsMCAxNiwxNS41QTEuNSwxLjUgMCAwLDAgMTQuNSwxNE04LjQxLDE3TDE3LDguNDFMMTUuNTksN0w3LDE1LjU5TDguNDEsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FsZXNmb3JjZSA9IFwiTTE4LjM4LDYuMzdDMTcuNjgsNi4zNyAxNy4wNyw2LjU4IDE2LjQ3LDYuNzhDMTUuNzcsNS41NyAxNC40Niw0Ljc3IDEzLjA1LDQuNzdDMTEuOTUsNC43NyAxMC45NSw1LjI3IDEwLjI0LDUuOTdDOS40NCw0Ljk3IDguMjMsNC4yNiA2LjgzLDQuMjZDNC41LDQuMjYgMi41LDYuMTcgMi41LDguNUMyLjUsOS4wOSAyLjcxLDkuNjkgMi45MSwxMC4yOUMxLjgsMTAuOSAxLDEyLjEgMSwxMy41QzEsMTUuNSAyLjYxLDE3LjIyIDQuNjIsMTcuMjJDNC45MiwxNy4yMiA1LjIyLDE3LjIyIDUuNDIsMTcuMTJDNS44MiwxOC42MyA3LjMzLDE5Ljc0IDkuMTQsMTkuNzRDMTAuODQsMTkuNzQgMTIuMjUsMTguNzMgMTIuNzUsMTcuMzJDMTMuMjYsMTcuNTMgMTMuNzYsMTcuNzMgMTQuMjYsMTcuNzNDMTUuNTcsMTcuNzMgMTYuNzcsMTcgMTcuMzcsMTUuOTJDMTcuNjgsMTYgMTgsMTYgMTguMjgsMTZDMjAuODksMTYgMjMsMTMuOTEgMjMsMTEuMkMyMy4xLDguNSAyMSw2LjM3IDE4LjM4LDYuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FzcyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEwLDE1LjMzQzEwLjE2LDE1Ljg3IDEwLjE0LDE2LjM3IDEwLDE2LjgzQzEwLDE2Ljg4IDkuOTYsMTYuOTMgOS45NCwxN0M5LjkyLDE3IDkuOSwxNy4wNyA5Ljg3LDE3LjEyQzkuNzYsMTcuMzYgOS42LDE3LjU5IDkuNDEsMTcuNzlDOC44MywxOC40MyA4LDE4LjY3IDcuNjcsMTguNDdDNy4yOSwxOC4yNSA3LjUsMTcuMzUgOC4xNiwxNi42NEM4Ljg4LDE1Ljg4IDkuOTIsMTUuMzggOS45MiwxNS4zOFYxNS4zOEwxMCwxNS4zM00xOC4yNyw2LjI4QzE3LjgyLDQuNSAxNC44NywzLjkyIDEyLjA5LDQuOTFDMTAuNDMsNS41IDguNjMsNi40MiA3LjM0LDcuNjNDNS44MSw5LjA3IDUuNTYsMTAuMzIgNS42NiwxMC44NEM2LDEyLjY4IDguNTQsMTMuODkgOS41OCwxNC43OFYxNC43OUM5LjI4LDE0Ljk0IDcuMDQsMTYuMDcgNi41LDE3LjIzQzUuOTYsMTguNDUgNi42LDE5LjMzIDcsMTkuNDVDOC4zNCwxOS44MSA5LjY5LDE5LjE2IDEwLjQxLDE4LjA3QzExLjExLDE3LjAzIDExLjA2LDE1LjY4IDEwLjc1LDE1QzExLjE3LDE0LjkgMTEuNjYsMTQuODUgMTIuMjgsMTQuOTJDMTQuMDQsMTUuMTMgMTQuMzgsMTYuMjIgMTQuMzEsMTYuNjhDMTQuMjUsMTcuMTQgMTMuODgsMTcuMzkgMTMuNzYsMTcuNDdDMTMuNjQsMTcuNTQgMTMuNiwxNy41NyAxMy42MSwxNy42M0MxMy42MiwxNy43MSAxMy42OCwxNy43MSAxMy43OCwxNy42OUMxMy45MywxNy42NiAxNC43MSwxNy4zMiAxNC43NCwxNi40N0MxNC43OCwxNS4zOSAxMy43NSwxNC4xOSAxMS45MywxNC4yMkMxMS4xOCwxNC4yNCAxMC43MSwxNC4zMSAxMC4zNywxNC40NEwxMC4yOSwxNC4zNUM5LjE2LDEzLjE1IDcuMDgsMTIuMyA3LjE3LDEwLjY4QzcuMiwxMC4wOSA3LjQsOC41NSAxMS4xNyw2LjY3QzE0LjI1LDUuMTMgMTYuNzIsNS41NSAxNy4xNSw2LjVDMTcuNzYsNy44MyAxNS44MywxMC4zMiAxMi42MywxMC42OEMxMS40MSwxMC44MiAxMC43NiwxMC4zNCAxMC42LDEwLjE3QzEwLjQzLDEwIDEwLjQxLDkuOTcgMTAuMzUsMTBDMTAuMjQsMTAuMDcgMTAuMzEsMTAuMjMgMTAuMzUsMTAuMzNDMTAuNDQsMTAuNTggMTAuODQsMTEgMTEuNSwxMS4yNEMxMi4wOSwxMS40MyAxMy41MywxMS41NCAxNS4yNiwxMC44N0MxNy4yLDEwLjEyIDE4LjcyLDguMDMgMTguMjcsNi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGUgPSBcIk01LDE4TDguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxOSwxOE01LDEyVjEwQTUsNSAwIDAsMCAxMCw1SDEyQTcsNyAwIDAsMSA1LDEyTTUsNUg4QTMsMyAwIDAsMSA1LDhNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGVVcGxpbmsgPSBcIk0xMS44NiwyTDExLjM0LDMuOTNDMTUuNzUsNC43OCAxOS4yLDguMjMgMjAuMDUsMTIuNjVMMjIsMTIuMTNDMjAuOTUsNy4wMyAxNi45NiwzLjA0IDExLjg2LDJNMTAuODIsNS44NkwxMC4zLDcuODFDMTMuMzQsOC4yNyAxNS43MiwxMC42NSAxNi4xOCwxMy42OEwxOC4xMiwxMy4xNkMxNy40Niw5LjQ0IDE0LjU1LDYuNSAxMC44Miw1Ljg2TTMuNzIsOS42OUMzLjI1LDEwLjczIDMsMTEuODYgMywxM0MzLDE0Ljk1IDMuNzEsMTYuODIgNSwxOC4yOFYyMkg4VjIwLjQxQzguOTUsMjAuOCA5Ljk3LDIxIDExLDIxQzEyLjE0LDIxIDEzLjI3LDIwLjc1IDE0LjMsMjAuMjhMMy43Miw5LjY5TTkuNzksOS43Nkw5LjI2LDExLjcyQTMsMyAwIDAsMSAxMi4yNiwxNC43MkwxNC4yMywxNC4yQzE0LDExLjg2IDEyLjEzLDEwIDkuNzksOS43NlpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGVWYXJpYW50ID0gXCJNMTEuNjIsMUwxNy4yOCw2LjY3TDE1LjE2LDguNzlMMTMuMDQsNi42N0wxMS42Miw4LjA5TDEzLjk1LDEwLjQxTDEyLjc5LDExLjU4TDEzLjI0LDEyLjA0QzE0LjE3LDExLjYxIDE1LjMxLDExLjc3IDE2LjA3LDEyLjU0TDEyLjU0LDE2LjA3QzExLjc3LDE1LjMxIDExLjYxLDE0LjE3IDEyLjA0LDEzLjI0TDExLjU4LDEyLjc5TDEwLjQxLDEzLjk1TDguMDksMTEuNjJMNi42NywxMy4wNEw4Ljc5LDE1LjE2TDYuNjcsMTcuMjhMMSwxMS42MkwzLjE0LDkuNUw1LjI2LDExLjYyTDYuNjcsMTAuMjFMMy44NCw3LjM4QzMuMDYsNi42IDMuMDYsNS4zMyAzLjg0LDQuNTVMNC41NSwzLjg0QzUuMzMsMy4wNiA2LjYsMy4wNiA3LjM4LDMuODRMMTAuMjEsNi42N0wxMS42Miw1LjI2TDkuNSwzLjE0TDExLjYyLDFNMTgsMTRBNCw0IDAgMCwxIDE0LDE4VjE2QTIsMiAwIDAsMCAxNiwxNEgxOE0yMiwxNEE4LDggMCAwLDEgMTQsMjJWMjBBNiw2IDAgMCwwIDIwLDE0SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhdXNhZ2UgPSBcIk0zLjUsM0g5LjVMNy45Niw1LjMyQzkuMTYsNS44NyAxMCw3LjA5IDEwLDguNUE1LjUsNS41IDAgMCwwIDE1LjUsMTRDMTYuOTEsMTQgMTguMTMsMTQuODQgMTguNjgsMTYuMDRMMjEsMTQuNVYyMC41TDE4LjY4LDE4Ljk2QzE4LjEzLDIwLjE2IDE2LjkxLDIxIDE1LjUsMjFBMTIuNSwxMi41IDAgMCwxIDMsOC41QzMsNy4wOSAzLjg0LDUuODcgNS4wNCw1LjMyTDMuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhd0JsYWRlID0gXCJNMjAsMTVDMjAsMTUgMTguNiwxNi4zIDIxLjEsMTdMMTguMywxOS44SDE1LjVDMTUuNSwxOS44IDEzLjYsMTkuNyAxNSwyMkgxMUw5LDIwQzksMjAgNy43LDE4LjYgNywyMS4xTDQuMiwxOC4zVjE1LjVDNC4yLDE1LjUgNC4zLDEzLjYgMiwxNVYxMUw0LDlDNCw5IDUuNCw3LjcgMi44LDcuMUw1LjYsNC4ySDguNUM4LjUsNC4yIDEwLjQsNC4zIDksMkgxM0wxNSw0QzE1LDQgMTYuMyw1LjQgMTcsMi44TDE5LjgsNS42VjguNUMxOS44LDguNSAxOS43LDEwLjQgMjIsOVYxM0wyMCwxNU0xNCwxMkEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2F3dG9vdGhXYXZlID0gXCJNMTEgMjJWNi44M0wyIDE2VjEzLjE3TDEzIDJWMTcuMTdMMjIgOFYxMC44M0wxMSAyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXhvcGhvbmUgPSBcIk00LDJBMSwxIDAgMCwwIDMsM0ExLDEgMCAwLDAgNCw0QTMsMyAwIDAsMSA3LDdWOC42Nkw3LDE1LjVDNywxOS4xIDkuOSwyMiAxMy41LDIyQzE3LjEsMjIgMjAsMTkuMSAyMCwxNS41VjEzQTEsMSAwIDAsMCAyMSwxMkExLDEgMCAwLDAgMjAsMTFIMTRBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxNCwxM1YxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE1VjExQTEsMSAwIDAsMCAxMywxMEExLDEgMCAwLDAgMTIsOVY4QTEsMSAwIDAsMCAxMyw3QTEsMSAwIDAsMCAxMiw2VjUuNUEzLjUsMy41IDAgMCwwIDguNSwySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhbGUgPSBcIk04LjQ2LDE1LjA2TDcuMDUsMTYuNDdMNS42OCwxNS4xQzQuODIsMTYuMjEgNC4yNCwxNy41NCA0LjA2LDE5SDZWMjFIMlYyMEMyLDE1LjE2IDUuNDQsMTEuMTMgMTAsMTAuMlY4LjJMMiw1VjNIMjJWNUwxNCw4LjJWMTAuMkMxOC41NiwxMS4xMyAyMiwxNS4xNiAyMiwyMFYyMUgxOFYxOUgxOS45NEMxOS43NiwxNy41NCAxOS4xOCwxNi4yMSAxOC4zMiwxNS4xTDE2Ljk1LDE2LjQ3TDE1LjU0LDE1LjA2TDE2LjkxLDEzLjY4QzE1LjgsMTIuODIgMTQuNDYsMTIuMjQgMTMsMTIuMDZWMTRIMTFWMTIuMDZDOS41NCwxMi4yNCA4LjIsMTIuODIgNy4wOSwxMy42OEw4LjQ2LDE1LjA2TTEyLDE4QTIsMiAwIDAsMSAxNCwyMEEyLDIgMCAwLDEgMTIsMjJDMTEuNjgsMjIgMTEuMzgsMjEuOTMgMTEuMTIsMjEuNzlMNy4yNywyMEwxMS4xMiwxOC4yMUMxMS4zOCwxOC4wNyAxMS42OCwxOCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2FsZUJhbGFuY2UgPSBcIk0xMiwzQzEwLjczLDMgOS42LDMuOCA5LjE4LDVIM1Y3SDQuOTVMMiwxNEMxLjUzLDE2IDMsMTcgNS41LDE3QzgsMTcgOS41NiwxNiA5LDE0TDYuMDUsN0g5LjE3QzkuNSw3Ljg1IDEwLjE1LDguNSAxMSw4LjgzVjIwSDJWMjJIMjJWMjBIMTNWOC44MkMxMy44NSw4LjUgMTQuNSw3Ljg1IDE0LjgyLDdIMTcuOTVMMTUsMTRDMTQuNTMsMTYgMTYsMTcgMTguNSwxN0MyMSwxNyAyMi41NiwxNiAyMiwxNEwxOS4wNSw3SDIxVjVIMTQuODNDMTQuNCwzLjggMTMuMjcsMyAxMiwzTTEyLDVBMSwxIDAgMCwxIDEzLDZBMSwxIDAgMCwxIDEyLDdBMSwxIDAgMCwxIDExLDZBMSwxIDAgMCwxIDEyLDVNNS41LDEwLjI1TDcsMTRINEw1LjUsMTAuMjVNMTguNSwxMC4yNUwyMCwxNEgxN0wxOC41LDEwLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYWxlQmF0aHJvb20gPSBcIk01LDJIMTlBMiwyIDAgMCwxIDIxLDRWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWNEEyLDIgMCAwLDEgNSwyTTEyLDRBNCw0IDAgMCwwIDgsOEgxMS4yNkwxMC44NSw1LjIzTDEyLjksOEgxNkE0LDQgMCAwLDAgMTIsNE01LDEwVjIwSDE5VjEwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhbGVPZmYgPSBcIk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS4xMSAyMUgxOFYxOS44OUwxMi4xMSAxNEgxMVYxMi44OUwxMC4zMSAxMi4yQTcuOTIgNy45MiAwIDAgMCA3LjA5IDEzLjY4TDguNDYgMTUuMDZMNy4wNSAxNi40N0w1LjY4IDE1LjFBNy45NCA3Ljk0IDAgMCAwIDQuMDYgMTlINlYyMUgyVjIwQTEwIDEwIDAgMCAxIDguNjggMTAuNTdMMy44NSA1Ljc0TDIgNVYzLjg5TDEuMTEgM0wyLjM5IDEuNzNNMjEuOTEgMTguNzFBMTAgMTAgMCAwIDAgMTQgMTAuMlY4LjJMMjIgNVYzSDYuMk0xMiAxOEExLjg0IDEuODQgMCAwIDAgMTEuMTIgMTguMjFMNy4yNyAyMEwxMS4xMiAyMS43OUExLjg0IDEuODQgMCAwIDAgMTIgMjJBMiAyIDAgMCAwIDEyIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYW5IZWxwZXIgPSBcIk0wIDJBMiAyIDAgMCAxIDIgMEg2VjJIMlY2SDBWMk0yNCAyMkEyIDIgMCAwIDEgMjIgMjRIMThWMjJIMjJWMThIMjRWMjJNMiAyNEEyIDIgMCAwIDEgMCAyMlYxOEgyVjIySDZWMjRIMk0yMiAwQTIgMiAwIDAgMSAyNCAyVjZIMjJWMkgxOFYwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYW5uZXIgPSBcIk00LjIsMTAuN0wxOS44LDVMMjAuNSw2LjlMNi40LDEySDE5QTIsMiAwIDAsMSAyMSwxNFYxOEEyLDIgMCAwLDEgMTksMjBINUEyLDIgMCAwLDEgMywxOFYxMi41QzMsMTEuNyAzLjUsMTAuOSA0LjIsMTAuN00xNywxN0gxOVYxNUgxN1YxN001LDE3SDE1VjE1SDVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Nhbm5lck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTYuNzMsMjBINUEyLDIgMCAwLDEgMywxOFYxMi41QzMsMTEuNyAzLjUsMTAuOSA0LjIsMTAuN0w2LjU3LDkuODRMMiw1LjI3TTYuNCwxMkg4LjczTDguMTEsMTEuMzhMNi40LDEyTTUsMTVWMTdIMTMuNzNMMTEuNzMsMTVINU0xOS44LDVMMjAuNSw2LjlMMTEuODUsMTAuMDNMMTAuMyw4LjQ3TDE5LjgsNU0xOSwxMkEyLDIgMCAwLDEgMjEsMTRWMThDMjEsMTguMzQgMjAuOTEsMTguNjYgMjAuNzYsMTguOTRMMTksMTcuMThWMTVIMTYuODJMMTMuODIsMTJIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhdHRlclBsb3QgPSBcIk03LDExQTMsMyAwIDAsMSAxMCwxNEEzLDMgMCAwLDEgNywxN0EzLDMgMCAwLDEgNCwxNEEzLDMgMCAwLDEgNywxMU0xMSwzQTMsMyAwIDAsMSAxNCw2QTMsMyAwIDAsMSAxMSw5QTMsMyAwIDAsMSA4LDZBMywzIDAgMCwxIDExLDNNMTYuNiwxNC42QzE4LjI1LDE0LjYgMTkuNiwxNS45NCAxOS42LDE3LjZBMywzIDAgMCwxIDE2LjYsMjAuNkMxNC45NCwyMC42IDEzLjYsMTkuMjUgMTMuNiwxNy42QTMsMyAwIDAsMSAxNi42LDE0LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhdHRlclBsb3RPdXRsaW5lID0gXCJNNywxOEE0LDQgMCAwLDEgMywxNEE0LDQgMCAwLDEgNywxMEE0LDQgMCAwLDEgMTEsMTRBNCw0IDAgMCwxIDcsMThNNywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxNkEyLDIgMCAwLDAgOSwxNEEyLDIgMCAwLDAgNywxMk0xMSwxMEE0LDQgMCAwLDEgNyw2QTQsNCAwIDAsMSAxMSwyQTQsNCAwIDAsMSAxNSw2QTQsNCAwIDAsMSAxMSwxME0xMSw0QTIsMiAwIDAsMCA5LDZBMiwyIDAgMCwwIDExLDhBMiwyIDAgMCwwIDEzLDZBMiwyIDAgMCwwIDExLDRNMTYuNiwyMS42QzE0LjM5LDIxLjYgMTIuNiwxOS44MSAxMi42LDE3LjZBNCw0IDAgMCwxIDE2LjYsMTMuNkMxOC44MSwxMy42IDIwLjYsMTUuMzkgMjAuNiwxNy42QTQsNCAwIDAsMSAxNi42LDIxLjZNMTYuNiwxNS42QTIsMiAwIDAsMCAxNC42LDE3LjZDMTQuNiwxOC43IDE1LjUsMTkuNiAxNi42LDE5LjZBMiwyIDAgMCwwIDE4LjYsMTcuNkMxOC42LDE2LjUgMTcuNywxNS42IDE2LjYsMTUuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2hvb2wgPSBcIk0xMiwzTDEsOUwxMiwxNUwyMSwxMC4wOVYxN0gyM1Y5TTUsMTMuMThWMTcuMThMMTIsMjFMMTksMTcuMThWMTMuMThMMTIsMTdMNSwxMy4xOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2hvb2xPdXRsaW5lID0gXCJNMTIgM0wxIDlMNSAxMS4xOFYxNy4xOEwxMiAyMUwxOSAxNy4xOFYxMS4xOEwyMSAxMC4wOVYxN0gyM1Y5TDEyIDNNMTguODIgOUwxMiAxMi43Mkw1LjE4IDlMMTIgNS4yOEwxOC44MiA5TTE3IDE2TDEyIDE4LjcyTDcgMTZWMTIuMjdMMTIgMTVMMTcgMTIuMjdWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Npc3NvcnNDdXR0aW5nID0gXCJNMTEsMjFIN1YxOUgxMVYyMU0xNS41LDE5SDE3VjIxSDEzVjE5SDEzLjJMMTEuOCwxMi45TDkuMywxMy41QzkuMiwxNCA5LDE0LjQgOC44LDE0LjhDNy45LDE2LjMgNiwxNi43IDQuNSwxNS44QzMsMTQuOSAyLjYsMTMgMy41LDExLjVDNC40LDEwIDYuMyw5LjYgNy44LDEwLjVDOC4yLDEwLjcgOC41LDExLjEgOC43LDExLjRMMTEuMiwxMC44TDEwLjYsOC4zQzEwLjIsOC4yIDkuOCw4IDkuNCw3LjhDOCw2LjkgNy41LDUgOC40LDMuNUM5LjMsMiAxMS4yLDEuNiAxMi43LDIuNUMxNC4yLDMuNCAxNC42LDUuMyAxMy43LDYuOEMxMy41LDcuMiAxMy4xLDcuNSAxMi44LDcuN0wxNS41LDE5TTcsMTEuOEM2LjMsMTEuMyA1LjMsMTEuNiA0LjgsMTIuM0M0LjMsMTMgNC42LDE0IDUuMywxNC40QzYsMTQuOSA3LDE0LjcgNy41LDEzLjlDNy45LDEzLjIgNy43LDEyLjIgNywxMS44TTEyLjQsNkMxMi45LDUuMyAxMi42LDQuMyAxMS45LDMuOEMxMS4yLDMuMyAxMC4yLDMuNiA5LjcsNC4zQzkuMyw1IDkuNSw2IDEwLjMsNi41QzExLDYuOSAxMiw2LjcgMTIuNCw2TTEyLjgsMTEuM0MxMi42LDExLjIgMTIuNCwxMS4yIDEyLjMsMTEuNEMxMi4yLDExLjYgMTIuMiwxMS44IDEyLjQsMTEuOUMxMi42LDEyIDEyLjgsMTIgMTIuOSwxMS44QzEzLjEsMTEuNiAxMywxMS40IDEyLjgsMTEuM00yMSw4LjVMMTQuNSwxMEwxNSwxMi4yTDIyLjUsMTAuNEwyMyw5LjdMMjEsOC41TTIzLDE5SDE5VjIxSDIzVjE5TTUsMTlIMVYyMUg1VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjb290ZXIgPSBcIk03LjgyIDE5SDE1VjE4QzE1IDE1Ljc5IDE2Ljc5IDE0IDE5IDE0SDE5Ljc0TDE3Ljg0IDUuNTZDMTcuNjMgNC42NSAxNi44MiA0IDE1Ljg5IDRIMTJWNkgxNS44OUwxNy4yOSAxMi4yNUgxNy4yOEMxNS4xMiAxMi45IDEzLjQ3IDE0LjczIDEzLjA5IDE3SDcuODJDNy4zNCAxNS42NiA1Ljk2IDE0Ljc2IDQuNCAxNS4wNkMzLjIyIDE1LjI5IDIuMjcgMTYuMjYgMi4wNSAxNy40NEMxLjcgMTkuMzQgMy4xNiAyMSA1IDIxQzYuMyAyMSA3LjQgMjAuMTYgNy44MiAxOU01IDE5QzQuNDUgMTkgNCAxOC41NSA0IDE4UzQuNDUgMTcgNSAxNyA2IDE3LjQ1IDYgMTggNS41NSAxOSA1IDE5TTE5IDE1QzE3LjM0IDE1IDE2IDE2LjM0IDE2IDE4UzE3LjM0IDIxIDE5IDIxIDIyIDE5LjY2IDIyIDE4IDIwLjY2IDE1IDE5IDE1TTE5IDE5QzE4LjQ1IDE5IDE4IDE4LjU1IDE4IDE4UzE4LjQ1IDE3IDE5IDE3IDIwIDE3LjQ1IDIwIDE4IDE5LjU1IDE5IDE5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjb290ZXJFbGVjdHJpYyA9IFwiTTcuODIgMTZIMTVWMTVDMTUgMTIuNzkgMTYuNzkgMTEgMTkgMTFIMTkuNzRMMTcuODQgMi41NkMxNy42MyAxLjY1IDE2LjgyIDEgMTUuODkgMUgxMlYzSDE1Ljg5TDE3LjI5IDkuMjVIMTcuMjhDMTUuMTIgOS45IDEzLjQ3IDExLjczIDEzLjA5IDE0SDcuODJDNy4zNCAxMi42NiA1Ljk2IDExLjc2IDQuNCAxMi4wNkMzLjIyIDEyLjI5IDIuMjcgMTMuMjYgMi4wNSAxNC40NEMxLjcgMTYuMzQgMy4xNiAxOCA1IDE4QzYuMyAxOCA3LjQgMTcuMTYgNy44MiAxNk01IDE2QzQuNDUgMTYgNCAxNS41NSA0IDE1UzQuNDUgMTQgNSAxNCA2IDE0LjQ1IDYgMTUgNS41NSAxNiA1IDE2TTE5IDEyQzE3LjM0IDEyIDE2IDEzLjM0IDE2IDE1UzE3LjM0IDE4IDE5IDE4IDIyIDE2LjY2IDIyIDE1IDIwLjY2IDEyIDE5IDEyTTE5IDE2QzE4LjQ1IDE2IDE4IDE1LjU1IDE4IDE1UzE4LjQ1IDE0IDE5IDE0IDIwIDE0LjQ1IDIwIDE1IDE5LjU1IDE2IDE5IDE2TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NvcmVib2FyZCA9IFwiTTYgOUg4VjE1SDZWOU0xNiA5SDE4VjE1SDE2VjlNMjEgM0MyMi4xIDMgMjMgMy45IDIzIDVWMTlDMjMgMjAuMSAyMi4xIDIxIDIxIDIxSDNDMS45IDIxIDEgMjAuMSAxIDE5VjVDMSAzLjkgMS45IDMgMyAzSDIxTTUgN0M0LjQgNyA0IDcuNCA0IDhWMTZDNCAxNi42IDQuNCAxNyA1IDE3SDlDOS42IDE3IDEwIDE2LjYgMTAgMTZWOEMxMCA3LjQgOS42IDcgOSA3SDVNMTUgN0MxNC40IDcgMTQgNy40IDE0IDhWMTZDMTQgMTYuNiAxNC40IDE3IDE1IDE3SDE5QzE5LjYgMTcgMjAgMTYuNiAyMCAxNlY4QzIwIDcuNCAxOS42IDcgMTkgN0gxNU0xMiAxMUMxMi42IDExIDEzIDEwLjYgMTMgMTBDMTMgOS40IDEyLjYgOSAxMiA5QzExLjQgOSAxMSA5LjQgMTEgMTBDMTEgMTAuNiAxMS40IDExIDEyIDExTTEyIDE1QzEyLjYgMTUgMTMgMTQuNiAxMyAxNEMxMyAxMy40IDEyLjYgMTMgMTIgMTNDMTEuNCAxMyAxMSAxMy40IDExIDE0QzExIDE0LjYgMTEuNCAxNSAxMiAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTY29yZWJvYXJkT3V0bGluZSA9IFwiTTIxIDNIM0MxLjkgMyAxIDMuOSAxIDVWMTlDMSAyMC4xIDEuOSAyMSAzIDIxSDIxQzIyLjEgMjEgMjMgMjAuMSAyMyAxOVY1QzIzIDMuOSAyMi4xIDMgMjEgM00yMSAxOUgzVjVIMjFNNSA3SDlDOS42IDcgMTAgNy40IDEwIDhWMTZDMTAgMTYuNiA5LjYgMTcgOSAxN0g1QzQuNCAxNyA0IDE2LjYgNCAxNlY4QzQgNy40IDQuNCA3IDUgN002IDlWMTVIOFY5TTE1IDdIMTlDMTkuNiA3IDIwIDcuNCAyMCA4VjE2QzIwIDE2LjYgMTkuNiAxNyAxOSAxN0gxNUMxNC40IDE3IDE0IDE2LjYgMTQgMTZWOEMxNCA3LjQgMTQuNCA3IDE1IDdNMTYgOVYxNUgxOFY5TTEyIDExQzEyLjYgMTEgMTMgMTAuNiAxMyAxMEMxMyA5LjQgMTIuNiA5IDEyIDlDMTEuNCA5IDExIDkuNCAxMSAxMEMxMSAxMC42IDExLjQgMTEgMTIgMTFNMTIgMTVDMTIuNiAxNSAxMyAxNC42IDEzIDE0QzEzIDEzLjQgMTIuNiAxMyAxMiAxM0MxMS40IDEzIDExIDEzLjQgMTEgMTRDMTEgMTQuNiAxMS40IDE1IDEyIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmVlblJvdGF0aW9uID0gXCJNNy41LDIxLjVDNC4yNSwxOS45NCAxLjkxLDE2Ljc2IDEuNTUsMTNIMC4wNUMwLjU2LDE5LjE2IDUuNzEsMjQgMTIsMjRMMTIuNjYsMjMuOTdMOC44NSwyMC4xNk0xNC44MywyMS4xOUwyLjgxLDkuMTdMOS4xNywyLjgxTDIxLjE5LDE0LjgzTTEwLjIzLDEuNzVDOS42NCwxLjE2IDguNjksMS4xNiA4LjExLDEuNzVMMS43NSw4LjExQzEuMTYsOC43IDEuMTYsOS42NSAxLjc1LDEwLjIzTDEzLjc3LDIyLjI1QzE0LjM2LDIyLjg0IDE1LjMxLDIyLjg0IDE1Ljg5LDIyLjI1TDIyLjI1LDE1Ljg5QzIyLjg0LDE1LjMgMjIuODQsMTQuMzUgMjIuMjUsMTMuNzdMMTAuMjMsMS43NU0xNi41LDIuNUMxOS43NSw0LjA3IDIyLjA5LDcuMjQgMjIuNDUsMTFIMjMuOTVDMjMuNDQsNC44NCAxOC4yOSwwIDEyLDBMMTEuMzQsMC4wM0wxNS4xNSwzLjg0TDE2LjUsMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmVlblJvdGF0aW9uTG9jayA9IFwiTTE2LjgsMi41QzE2LjgsMS41NiAxNy41NiwwLjggMTguNSwwLjhDMTkuNDQsMC44IDIwLjIsMS41NiAyMC4yLDIuNVYzSDE2LjhWMi41TTE2LDlIMjFBMSwxIDAgMCwwIDIyLDhWNEExLDEgMCAwLDAgMjEsM1YyLjVBMi41LDIuNSAwIDAsMCAxOC41LDBBMi41LDIuNSAwIDAsMCAxNiwyLjVWM0ExLDEgMCAwLDAgMTUsNFY4QTEsMSAwIDAsMCAxNiw5TTguNDcsMjAuNUM1LjIsMTguOTQgMi44NiwxNS43NiAyLjUsMTJIMUMxLjUsMTguMTYgNi42NiwyMyAxMi45NSwyM0wxMy42MSwyMi45N0w5LjgsMTkuMTVMOC40NywyMC41TTIzLjI1LDEyLjc3TDIwLjY4LDEwLjJMMTkuMjcsMTEuNjFMMjEuNSwxMy44M0wxNS44MywxOS41TDQuNSw4LjE3TDEwLjE3LDIuNUwxMi4yNyw0LjYxTDEzLjY4LDMuMkwxMS4yMywwLjc1QzEwLjY0LDAuMTYgOS42OSwwLjE2IDkuMTEsMC43NUwyLjc1LDcuMTFDMi4xNiw3LjcgMi4xNiw4LjY1IDIuNzUsOS4yM0wxNC43NywyMS4yNUMxNS4zNiwyMS44NCAxNi4zMSwyMS44NCAxNi44OSwyMS4yNUwyMy4yNSwxNC44OUMyMy44NCwxNC4zIDIzLjg0LDEzLjM1IDIzLjI1LDEyLjc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmV3RmxhdFRvcCA9IFwiTTEzLjUsMTdWMTlMMTIsMjJMMTAuNSwxOUwxMy41LDE3TTE0LjUsNi4zTDEzLjUsN1Y2SDEwLjVWOUw5LjUsOS43VjEwLjdMMTQuNSw3LjRWNi4zTTE0LjUsMTAuM0wxMy41LDExVjlMMTAuNSwxMVYxM0w5LjUsMTMuN1YxNC43TDE0LjUsMTEuNFYxMC4zTTE0LjUsMTQuM0wxMy41LDE1VjEzTDEwLjUsMTVWMTdMOS41LDE3LjdWMTguN0wxNC41LDE1LjRWMTQuM004LDJDOCwyIDcsMiA3LDNMMTAsNUgxNEwxNywzQzE3LDMgMTcsMiAxNiwyQzE1LDIgOCwyIDgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3Jld0xhZyA9IFwiTTEwLDE5LjNMMTQsMTYuNlYyMEwxMiwyMkwxMCwyMFYxOS4zTTE0LDEyLjdMMTAsMTUuNFYxNy40TDksMThWMTlMMTUsMTUuMVYxNEwxNCwxNC43VjEyLjdNNywyVjVIMTdWMkg3TTksNlY5TDEwLDkuN1YxMy40TDksMTRWMTVMMTUsMTEuMVYxMEwxNCwxMC43QzE0LDEwLjcgMTQsMTAuMyAxNCw5LjdMMTUsOVY2SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdNYWNoaW5lRmxhdFRvcCA9IFwiTTE0LjUsNy4zTDEzLjUsOFY3SDEwLjVWMTBMOS41LDEwLjdWMTEuN0wxNC41LDguNFY3LjNNMTQuNSwxMS4zTDEzLjUsMTJWMTBMMTAuNSwxMlYxNEw5LjUsMTQuN1YxNS43TDE0LjUsMTIuNFYxMS4zTTE0LjUsMTUuM0wxMy41LDE2VjE0TDEwLjUsMTZWMThMOS41LDE4LjdWMTkuN0wxNC41LDE2LjRWMTUuM004LDNDOCwzIDcsMyA3LDRMMTAsNkgxNEwxNyw0QzE3LDQgMTcsMyAxNiwzQzE1LDMgOCwzIDgsM00xMy41LDE4VjIxSDEwLjVWMjBMMTMuNSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3Jld01hY2hpbmVSb3VuZFRvcCA9IFwiTTE0LjUsNy4zTDEzLjUsOFY3SDEwLjVWMTBMOS41LDEwLjdWMTEuN0wxNC41LDguNFY3LjNNMTQuNSwxMS4zTDEzLjUsMTJWMTBMMTAuNSwxMlYxNEw5LjUsMTQuN1YxNS43TDE0LjUsMTIuNFYxMS4zTTE0LjUsMTUuM0wxMy41LDE2VjE0TDEwLjUsMTZWMThMOS41LDE4LjdWMTkuN0wxNC41LDE2LjRWMTUuM003LDZIMTdDMTcsNiAxNiwzIDEyLDNDOCwzIDcsNiA3LDZNMTMuNSwxOFYyMUgxMC41VjIwTDEzLjUsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdSb3VuZFRvcCA9IFwiTTEzLjUsMTdWMTlMMTIsMjJMMTAuNSwxOUwxMy41LDE3TTE0LjUsNi4zTDEzLjUsN1Y2SDEwLjVWOUw5LjUsOS43VjEwLjdMMTQuNSw3LjRWNi4zTTE0LjUsMTAuM0wxMy41LDExVjlMMTAuNSwxMVYxM0w5LjUsMTMuN1YxNC43TDE0LjUsMTEuNFYxMC4zTTE0LjUsMTQuM0wxMy41LDE1VjEzTDEwLjUsMTVWMTdMOS41LDE3LjdWMTguN0wxNC41LDE1LjRWMTQuM003LDVIMTdDMTcsNSAxNiwyIDEyLDJDOCwyIDcsNSA3LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdkcml2ZXIgPSBcIk0xOCwxLjgzQzE3LjUsMS44MyAxNywyIDE2LjU5LDIuNDFDMTMuNzIsNS4yOCA4LDExIDgsMTFMOS41LDEyLjVMNiwxNkg0TDIsMjBMNCwyMkw4LDIwVjE4TDExLjUsMTQuNUwxMywxNkMxMywxNiAxOC43MiwxMC4yOCAyMS41OSw3LjQxQzIyLjIxLDYuNSAyMi4zNyw1LjM3IDIxLjU5LDQuNTlMMTkuNDEsMi40MUMxOSwyIDE4LjUsMS44MyAxOCwxLjgzTTE4LDRMMjAsNkwxMywxM0wxMSwxMUwxOCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmlwdCA9IFwiTTE3LjgsMjBDMTcuNCwyMS4yIDE2LjMsMjIgMTUsMjJINUMzLjMsMjIgMiwyMC43IDIsMTlWMThINUwxNC4yLDE4QzE0LjYsMTkuMiAxNS43LDIwIDE3LDIwSDE3LjhNMTksMkg4QzYuMywyIDUsMy4zIDUsNVYxNkgxNlYxN0MxNiwxNy42IDE2LjQsMTggMTcsMThIMThWNUMxOCw0LjQgMTguNCw0IDE5LDRDMTkuNiw0IDIwLDQuNCAyMCw1VjZIMjJWNUMyMiwzLjMgMjAuNywyIDE5LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0T3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNiwxOVY0SDhBMSwxIDAgMCwwIDcsNVYxNkg1VjVBMywzIDAgMCwxIDgsMkgxOUEzLDMgMCAwLDEgMjIsNVY2SDIwVjVBMSwxIDAgMCwwIDE5LDRBMSwxIDAgMCwwIDE4LDVWOUwxOCwxOUEzLDMgMCAwLDEgMTUsMjJINUEzLDMgMCAwLDEgMiwxOVYxOEgxM0EyLDIgMCAwLDAgMTUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0VGV4dCA9IFwiTTE3LjgsMjBDMTcuNCwyMS4yIDE2LjMsMjIgMTUsMjJINUMzLjMsMjIgMiwyMC43IDIsMTlWMThINUwxNC4yLDE4QzE0LjYsMTkuMiAxNS43LDIwIDE3LDIwSDE3LjhNMTksMkMyMC43LDIgMjIsMy4zIDIyLDVWNkgyMFY1QzIwLDQuNCAxOS42LDQgMTksNEMxOC40LDQgMTgsNC40IDE4LDVWMThIMTdDMTYuNCwxOCAxNiwxNy42IDE2LDE3VjE2SDVWNUM1LDMuMyA2LjMsMiA4LDJIMTlNOCw2VjhIMTVWNkg4TTgsMTBWMTJIMTRWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0S2V5ID0gXCJNMTkgMkg4QzYuMyAyIDUgMy4zIDUgNVYxNkgxM0MxMy44IDE1LjQgMTQuOSAxNSAxNiAxNUMxNi43IDE1IDE3LjQgMTUuMiAxOCAxNS40VjVDMTggNC40IDE4LjQgNCAxOSA0UzIwIDQuNCAyMCA1VjZIMjJWNUMyMiAzLjMgMjAuNyAyIDE5IDJNMTQgMTJIOFYxMEgxNFYxMk0xNSA4SDhWNkgxNVY4TTExLjQgMjJINUMzLjMgMjIgMiAyMC43IDIgMTlWMThIMTEuNEMxMS4xIDE4LjYgMTEgMTkuMyAxMSAyMFMxMS4xIDIxLjQgMTEuNCAyMk0xOC44IDE5QzE4LjQgMTcuOCAxNy4zIDE3IDE2IDE3QzE0LjMgMTcgMTMgMTguMyAxMyAyMFMxNC4zIDIzIDE2IDIzQzE3LjMgMjMgMTguNCAyMi4yIDE4LjggMjFIMjBWMjNIMjJWMjFIMjNWMTlIMTguOE0xNiAyMS4zQzE1LjMgMjEuMyAxNC43IDIwLjcgMTQuNyAyMFMxNS4zIDE4LjcgMTYgMTguN0MxNi43IDE4LjcgMTcuMyAxOS4zIDE3LjMgMjBTMTYuNyAyMS4zIDE2IDIxLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0VGV4dEtleU91dGxpbmUgPSBcIk0xMS40IDIySDVDMy4zIDIyIDIgMjAuNyAyIDE5VjE4SDExLjRDMTEuMSAxOC42IDExIDE5LjMgMTEgMjBTMTEuMiAyMS40IDExLjQgMjJNMTkgMkg4QzYuMyAyIDUgMy4zIDUgNVYxNkg3VjVDNyA0LjQgNy40IDQgOCA0SDE2VjE1QzE2LjcgMTUgMTcuNCAxNS4yIDE4IDE1LjRWNUMxOCA0LjQgMTguNCA0IDE5IDRTMjAgNC40IDIwIDVWNkgyMlY1QzIyIDMuMyAyMC43IDIgMTkgMk05IDhIMTRWNkg5VjhNOSAxNkgxM0MxMy4zIDE1LjggMTMuNiAxNS42IDE0IDE1LjRWMTRIOVYxNk05IDEySDE0VjEwSDlWMTJNMjMgMTlWMjFIMjJWMjNIMjBWMjFIMTguOEMxOC40IDIyLjIgMTcuMyAyMyAxNiAyM0MxNC4zIDIzIDEzIDIxLjcgMTMgMjBTMTQuMyAxNyAxNiAxN0MxNy4zIDE3IDE4LjQgMTcuOCAxOC44IDE5SDIzTTE3LjMgMjBDMTcuMyAxOS4zIDE2LjcgMTguNyAxNiAxOC43UzE0LjcgMTkuMyAxNC43IDIwIDE1LjMgMjEuMyAxNiAyMS4zIDE3LjMgMjAuNyAxNy4zIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmlwdFRleHRPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE2LDE5VjRIOEExLDEgMCAwLDAgNyw1VjE2SDVWNUEzLDMgMCAwLDEgOCwySDE5QTMsMyAwIDAsMSAyMiw1VjZIMjBWNUExLDEgMCAwLDAgMTksNEExLDEgMCAwLDAgMTgsNVY5TDE4LDE5QTMsMyAwIDAsMSAxNSwyMkg1QTMsMyAwIDAsMSAyLDE5VjE4SDEzQTIsMiAwIDAsMCAxNSwyME05LDZIMTRWOEg5VjZNOSwxMEgxNFYxMkg5VjEwTTksMTRIMTRWMTZIOVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0UGxheSA9IFwiTTEzLjggMjJINUMzLjMgMjIgMiAyMC43IDIgMTlWMThIMTMuMUMxMyAxOC4zIDEzIDE4LjcgMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk0xMy44IDE2SDVWNUM1IDMuMyA2LjMgMiA4IDJIMTlDMjAuNyAyIDIyIDMuMyAyMiA1VjZIMjBWNUMyMCA0LjQgMTkuNiA0IDE5IDRTMTggNC40IDE4IDVWMTMuMUMxNi4yIDEzLjQgMTQuNyAxNC41IDEzLjggMTZNOCA4SDE1VjZIOFY4TTggMTJIMTRWMTBIOFYxMk0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0UGxheU91dGxpbmUgPSBcIk05IDE0SDE0VjE1LjdDMTMuOSAxNS44IDEzLjkgMTUuOSAxMy44IDE2SDlWMTRNOSAxMkgxNFYxMEg5VjEyTTkgOEgxNFY2SDlWOE03IDVDNyA0LjQgNy40IDQgOCA0SDE2VjEzLjhDMTYuNiAxMy40IDE3LjMgMTMuMiAxOCAxMy4xVjVDMTggNC40IDE4LjQgNCAxOSA0UzIwIDQuNCAyMCA1VjZIMjJWNUMyMiAzLjMgMjAuNyAyIDE5IDJIOEM2LjMgMiA1IDMuMyA1IDVWMTZIN1Y1TTEzIDE5VjE4LjQgMThIMlYxOUMyIDIwLjcgMy4zIDIyIDUgMjJIMTMuOEMxMy4zIDIxLjEgMTMgMjAuMSAxMyAxOU0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZCA9IFwiTTE4LDhIMTZWNEgxOE0xNSw4SDEzVjRIMTVNMTIsOEgxMFY0SDEyTTE4LDJIMTBMNCw4VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYWwgPSBcIk0yMC4zOSwxOS4zN0wxNi4zOCwxOEwxNSwyMkwxMS45MiwxNkw5LDIyTDcuNjIsMThMMy42MSwxOS4zN0w2LjUzLDEzLjM3QzUuNTcsMTIuMTcgNSwxMC42NSA1LDlBNyw3IDAgMCwxIDEyLDJBNyw3IDAgMCwxIDE5LDlDMTksMTAuNjUgMTguNDMsMTIuMTcgMTcuNDcsMTMuMzdMMjAuMzksMTkuMzdNNyw5TDkuNjksMTAuMzRMOS41LDEzLjM0TDEyLDExLjY4TDE0LjUsMTMuMzNMMTQuMzMsMTAuMzRMMTcsOUwxNC4zMiw3LjY1TDE0LjUsNC42N0wxMiw2LjMxTDkuNSw0LjY1TDkuNjcsNy42Nkw3LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhbFZhcmlhbnQgPSBcIk0xNy43MSA2LjE1QzE3LjQ2IDUuMzggMTYuNzkgNS4yMSAxNi40NSA0Ljc3QzE2LjE0IDQuMzEgMTYuMTggMy42MiAxNS41MyAzLjE1UzE0LjIzIDIuOTIgMTMuNyAyLjc3IDEyLjgxIDIgMTIgMiAxMC44MiAyLjU4IDEwLjMgMi43NyA5LjEzIDIuNjcgOC40NyAzLjE1IDcuODYgNC4zMSA3LjU1IDQuNzdDNy4yMSA1LjIxIDYuNTUgNS4zOCA2LjI5IDYuMTVTNi41IDcuNDUgNi41IDggNiA5LjA4IDYuMjkgOS44NSA3LjIxIDEwLjc5IDcuNTUgMTEuMjNDNy44NiAxMS42OSA3LjgyIDEyLjM4IDguNDcgMTIuODVTOS43NyAxMy4wOCAxMC4zIDEzLjIzIDExLjE5IDE0IDEyIDE0IDEzLjE4IDEzLjQyIDEzLjcgMTMuMjMgMTQuODcgMTMuMzMgMTUuNTMgMTIuODUgMTYuMTQgMTEuNjkgMTYuNDUgMTEuMjNDMTYuNzkgMTAuNzkgMTcuNDUgMTAuNjIgMTcuNzEgOS44NVMxNy41IDguNTUgMTcuNSA4IDE4IDYuOTIgMTcuNzEgNi4xNU0xMiAxMkE0IDQgMCAxIDEgMTYgOEE0IDQgMCAwIDEgMTIgMTJNMTQgOEEyIDIgMCAxIDEgMTIgNkEyIDIgMCAwIDEgMTQgOE0xMy43MSAxNS41NkwxMy4wOCAxOS4xNkwxMi4zNSAyMy4yOUw5Ljc0IDIwLjhMNi40NCAyMi4yNUw3Ljc3IDE0Ljc1QTQgNCAwIDAgMCA5LjY2IDE1LjE3QTQuMTUgNC4xNSAwIDAgMCAxMSAxNS44NUEzLjMyIDMuMzIgMCAwIDAgMTIgMTZBMy41IDMuNSAwIDAgMCAxMy43MSAxNS41Nk0xNy45MiAxOC43OEwxNS4zNCAxNy44NkwxNS44NSAxNC45MkEzLjIgMy4yIDAgMCAwIDE2LjcgMTQuNDdMMTYuODIgMTQuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhcmNoV2ViID0gXCJNMTUuNSwxNEwyMC41LDE5TDE5LDIwLjVMMTQsMTUuNVYxNC43MUwxMy43MywxNC40M0MxMi41OSwxNS40MSAxMS4xMSwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDExLjExIDE1LjQxLDEyLjU5IDE0LjQzLDEzLjczTDE0LjcxLDE0SDE1LjVNOS41LDQuNUw4Ljk1LDQuNTNDOC43MSw1LjA1IDguMzQsNS45MyA4LjA3LDdIMTAuOTNDMTAuNjYsNS45MyAxMC4yOSw1LjA1IDEwLjA1LDQuNTNDOS44Nyw0LjUgOS42OSw0LjUgOS41LDQuNU0xMy44Myw3QzEzLjI0LDUuOTcgMTIuMjksNS4xNyAxMS4xNSw0Ljc4QzExLjM5LDUuMzEgMTEuNyw2LjA4IDExLjkzLDdIMTMuODNNNS4xNyw3SDcuMDdDNy4zLDYuMDggNy42MSw1LjMxIDcuODUsNC43OEM2LjcxLDUuMTcgNS43Niw1Ljk3IDUuMTcsN000LjUsOS41QzQuNSwxMCA0LjU4LDEwLjUzIDQuNzMsMTFINi44N0w2Ljc1LDkuNUw2Ljg3LDhINC43M0M0LjU4LDguNDcgNC41LDkgNC41LDkuNU0xNC4yNywxMUMxNC40MiwxMC41MyAxNC41LDEwIDE0LjUsOS41QzE0LjUsOSAxNC40Miw4LjQ3IDE0LjI3LDhIMTIuMTNDMTIuMjEsOC41IDEyLjI1LDkgMTIuMjUsOS41QzEyLjI1LDEwIDEyLjIxLDEwLjUgMTIuMTMsMTFIMTQuMjdNNy44Nyw4TDcuNzUsOS41TDcuODcsMTFIMTEuMTNDMTEuMjEsMTAuNSAxMS4yNSwxMCAxMS4yNSw5LjVDMTEuMjUsOSAxMS4yMSw4LjUgMTEuMTMsOEg3Ljg3TTkuNSwxNC41QzkuNjgsMTQuNSA5Ljg2LDE0LjUgMTAuMDMsMTQuNDdDMTAuMjgsMTMuOTUgMTAuNjYsMTMuMDcgMTAuOTMsMTJIOC4wN0M4LjM0LDEzLjA3IDguNzIsMTMuOTUgOC45NywxNC40N0w5LjUsMTQuNU0xMy44MywxMkgxMS45M0MxMS43LDEyLjkyIDExLjM5LDEzLjY5IDExLjE1LDE0LjIyQzEyLjI5LDEzLjgzIDEzLjI0LDEzLjAzIDEzLjgzLDEyTTUuMTcsMTJDNS43NiwxMy4wMyA2LjcxLDEzLjgzIDcuODUsMTQuMjJDNy42MSwxMy42OSA3LjMsMTIuOTIgNy4wNywxMkg1LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXQgPSBcIk00LDE4VjIxSDdWMThIMTdWMjFIMjBWMTVINFYxOE0xOSwxMEgyMlYxM0gxOVYxME0yLDEwSDVWMTNIMlYxME0xNywxM0g3VjVBMiwyIDAgMCwxIDksM0gxNUEyLDIgMCAwLDEgMTcsNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0RmxhdCA9IFwiTTIyLDExVjEzSDlWN0gxOEE0LDQgMCAwLDEgMjIsMTFNMiwxNFYxNkg4VjE4SDE2VjE2SDIyVjE0TTcuMTQsMTIuMUM4LjMsMTAuOTEgOC4yOCw5IDcuMSw3Ljg2QzUuOTEsNi43IDQsNi43MiAyLjg2LDcuOUMxLjcsOS4wOSAxLjcyLDExIDIuOSwxMi4xNEM0LjA5LDEzLjMgNiwxMy4yOCA3LjE0LDEyLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdEZsYXRBbmdsZWQgPSBcIk0yMi4yNSwxNC4yOUwyMS41NiwxNi4xOEw5LjIsMTEuNzFMMTEuMjgsNi4wNUwxOS44NCw5LjE0QzIxLjk0LDkuOSAyMywxMi4yIDIyLjI1LDE0LjI5TTEuNSwxMi4xNEw4LDE0LjVWMTlIMTZWMTcuMzdMMjAuNSwxOUwyMS4yMSwxNy4xMUwyLjE5LDEwLjI1TTcuMywxMC4yQzguNzksOS41IDkuNDIsNy42OSA4LjcxLDYuMkM4LDQuNzEgNi4yLDQuMDggNC43LDQuOEMzLjIxLDUuNSAyLjU4LDcuMyAzLjMsOC44QzQsMTAuMjkgNS44LDEwLjkyIDcuMywxMC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRJbmRpdmlkdWFsU3VpdGUgPSBcIk03LDEzQTMsMyAwIDAsMCAxMCwxMEEzLDMgMCAwLDAgNyw3QTMsMyAwIDAsMCA0LDEwQTMsMyAwIDAsMCA3LDEzTTE5LDdIMTFWMTRIM1Y3SDFWMTdIMjNWMTFBNCw0IDAgMCwwIDE5LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdExlZ3Jvb21FeHRyYSA9IFwiTTQsMTJWM0gyVjEyQTUsNSAwIDAsMCA3LDE3SDEzVjE1SDdBMywzIDAgMCwxIDQsMTJNMjIuODMsMTcuMjRDMjIuNDUsMTYuNSAyMS41NCwxNi4yNyAyMC44LDE2LjYxTDE5LjcxLDE3LjExTDE2LjMsMTAuMTNDMTUuOTYsOS40NSAxNS4yNyw5IDE0LjUsOUgxMVYzSDVWMTFBMywzIDAgMCwwIDgsMTRIMTVMMTguNDEsMjFMMjIuMTMsMTkuM0MyMi45LDE4Ljk0IDIzLjIzLDE4IDIyLjgzLDE3LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRMZWdyb29tTm9ybWFsID0gXCJNNSwxMlYzSDNWMTJBNSw1IDAgMCwwIDgsMTdIMTRWMTVIOEEzLDMgMCAwLDEgNSwxMk0yMC41LDE4SDE5VjExQTIsMiAwIDAsMCAxNyw5SDEyVjNINlYxMUEzLDMgMCAwLDAgOSwxNEgxNlYyMUgyMC41QTEuNSwxLjUgMCAwLDAgMjIsMTkuNUExLjUsMS41IDAgMCwwIDIwLjUsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdExlZ3Jvb21SZWR1Y2VkID0gXCJNMTkuOTcsMTkuMkMyMC4xNSwyMC4xNiAxOS40MiwyMSAxOC41LDIxSDE0VjE4TDE1LDE0SDlBMywzIDAgMCwxIDYsMTFWM0gxMlY5SDE3QTIsMiAwIDAsMSAxOSwxMUwxNywxOEgxOC40NEMxOS4xNywxOCAxOS44MywxOC41IDE5Ljk3LDE5LjJNNSwxMlYzSDNWMTJBNSw1IDAgMCwwIDgsMTdIMTJWMTVIOEEzLDMgMCAwLDEgNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0T3V0bGluZSA9IFwiTTE1LDVWMTJIOVY1SDE1TTE1LDNIOUEyLDIgMCAwLDAgNyw1VjE0SDE3VjVBMiwyIDAgMCwwIDE1LDNNMjIsMTBIMTlWMTNIMjJWMTBNNSwxMEgyVjEzSDVWMTBNMjAsMTVINFYyMUg2VjE3SDE4VjIxSDIwVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRQYXNzZW5nZXIgPSBcIk05IDE5SDE1VjIxSDlDNi4yNCAyMSA0IDE4Ljc2IDQgMTZWN0g2VjE2QzYgMTcuNjYgNy4zNCAxOSA5IDE5TTEwLjQyIDUuNDFDMTEuMiA0LjYzIDExLjIgMy4zNiAxMC40MiAyLjU4QzkuNjQgMS44IDguMzcgMS44IDcuNTkgMi41OEM2LjgxIDMuMzYgNi44MSA0LjYzIDcuNTkgNS40MUM4LjM3IDYuMiA5LjYzIDYuMiAxMC40MiA1LjQxTTExLjUgOUMxMS41IDcuOSAxMC42IDcgOS41IDdIOUM3LjkgNyA3IDcuOSA3IDlWMTVDNyAxNi42NiA4LjM0IDE4IDEwIDE4SDE1LjA3TDE4LjU3IDIxLjVMMjAgMjAuMDdMMTQuOTMgMTVIMTEuNUwxMS41IDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdFJlY2xpbmVFeHRyYSA9IFwiTTUuMzUsNS42NEM0LjQ1LDUgNC4yMywzLjc2IDQuODYsMi44NUM1LjUsMS45NSA2Ljc0LDEuNzMgNy42NSwyLjM2QzguNTUsMyA4Ljc3LDQuMjQgOC4xNCw1LjE1QzcuNSw2LjA1IDYuMjYsNi4yNyA1LjM1LDUuNjRNMTYsMTlIOC45M0M3LjQ1LDE5IDYuMTksMTcuOTIgNS45NywxNi40Nkw0LDdIMkw0LDE2Ljc2QzQuMzcsMTkuMiA2LjQ3LDIxIDguOTQsMjFIMTZNMTYuMjMsMTVIMTEuMzVMMTAuMzIsMTAuOUMxMS45LDExLjc5IDEzLjYsMTIuNDQgMTUuNDcsMTIuMTJWMTBDMTMuODQsMTAuMyAxMi4wMyw5LjcyIDEwLjc4LDguNzRMOS4xNCw3LjQ3QzguOTEsNy4yOSA4LjY1LDcuMTcgOC4zOCw3LjA5QzguMDYsNyA3LjcyLDYuOTcgNy4zOSw3LjAzSDcuMzdDNi4xNCw3LjI1IDUuMzIsOC40MiA1LjUzLDkuNjRMNi44OCwxNS41NkM3LjE2LDE3IDguMzksMTggOS44MywxOEgxNi42OEwyMC41LDIxTDIyLDE5LjVcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0UmVjbGluZU5vcm1hbCA9IFwiTTcuNTksNS40MUM2LjgxLDQuNjMgNi44MSwzLjM2IDcuNTksMi41OEM4LjM3LDEuOCA5LjY0LDEuOCAxMC40MiwyLjU4QzExLjIsMy4zNiAxMS4yLDQuNjMgMTAuNDIsNS40MUM5LjYzLDYuMiA4LjM3LDYuMiA3LjU5LDUuNDFNNiwxNlY3SDRWMTZBNSw1IDAgMCwwIDksMjFIMTVWMTlIOUEzLDMgMCAwLDEgNiwxNk0yMCwyMC4wN0wxNC45MywxNUgxMS41VjExLjMyQzEyLjksMTIuNDcgMTUuMSwxMy41IDE3LDEzLjVWMTEuMzJDMTUuMzQsMTEuMzQgMTMuMzksMTAuNDUgMTIuMzMsOS4yOEwxMC45Myw3LjczQzEwLjc0LDcuNSAxMC41LDcuMzUgMTAuMjQsNy4yM0M5Ljk1LDcuMDkgOS42Miw3IDkuMjgsN0g5LjI1QzgsNyA3LDggNyw5LjI1VjE1QTMsMyAwIDAsMCAxMCwxOEgxNS4wN0wxOC41NywyMS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdGJlbHQgPSBcIk0xMiwyQzEzLjExLDIgMTQsMi45IDE0LDRDMTQsNS4xMSAxMy4xMSw2IDEyLDZBMiwyIDAgMCwxIDEwLDRBMiwyIDAgMCwxIDEyLDJNMTIuMzksMTQuNzlDMTQuMDMsMTQuNzkgMTUuNDYsMTQuODkgMTYuNjQsMTUuMDRDMTYuNywxMi4zMiAxNi40Niw5LjkyIDE2LDlDMTUuODcsOC43MyAxNS42OSw4LjUgMTUuNSw4LjNMNy40MywxNS4yMkM4Ljc5LDE1IDEwLjUsMTQuNzkgMTIuMzksMTQuNzlNNy40NiwxN0M3LjU5LDE4Ljc0IDcuODUsMjAuNSA4LjI3LDIySDEwLjM0QzEwLjA1LDIxLjEyIDkuODQsMjAuMDkgOS42OCwxOUM5LjY4LDE5IDEyLDE4LjU2IDE0LjMyLDE5QzE0LjE2LDIwLjA5IDEzLjk1LDIxLjEyIDEzLjY2LDIySDE1LjczQzE2LjE3LDIwLjQ1IDE2LjQzLDE4LjYxIDE2LjU2LDE2Ljc5QzE1LjQxLDE2LjY1IDE0LDE2LjU0IDEyLjM5LDE2LjU0QzEwLjQ2LDE2LjU0IDguNzgsMTYuNzUgNy40NiwxN00xMiw3QzEyLDcgOSw3IDgsOUM3LjY2LDkuNjggNy40NCwxMS4xNSA3LjM3LDEyLjk2TDEzLjkyLDcuMzRDMTIuOTMsNyAxMiw3IDEyLDdNMTguNTcsNS42N0wxNy40Myw0LjM0TDEzLjkyLDcuMzVDMTQuNDcsNy41NCAxNS4wNSw3Ljg0IDE1LjUsOC4zTDE4LjU3LDUuNjdNMjAuNjcsMTUuODNDMjAuNTgsMTUuOCAxOS4xNCwxNS4zMyAxNi42NCwxNS4wNEMxNi42MywxNS42MSAxNi42LDE2LjIgMTYuNTYsMTYuNzlDMTguODEsMTcuMDcgMjAuMSwxNy41IDIwLjEyLDE3LjVMMjAuNjcsMTUuODNNNy4zNywxMi45NkwzLjQzLDE2LjM0TDQuMzIsMTcuODJDNC4zNCwxNy44MSA1LjUsMTcuMzYgNy40NiwxN0M3LjM1LDE1LjU5IDcuMzIsMTQuMiA3LjM3LDEyLjk2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlY3VyaXR5ID0gXCJNMTIsMTJIMTlDMTguNDcsMTYuMTEgMTUuNzIsMTkuNzggMTIsMjAuOTJWMTJINVY2LjNMMTIsMy4xOU0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzMgMTIsMjNDMTcuMTYsMjEuNzMgMjEsMTYuNTUgMjEsMTFWNUwxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlY3VyaXR5TmV0d29yayA9IFwiTTEzLDE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxNy4zNEM4LjA3LDE2LjEzIDYsMTMgNiw5LjY3VjUuNjdMMTIsM0wxOCw1LjY3VjkuNjdDMTgsMTMgMTUuOTMsMTYuMTMgMTMsMTcuMzRWMTlNMTIsNUw4LDYuNjlWMTBIMTJWNU0xMiwxMFYxNkMxMy45MSwxNS41MyAxNiwxMy4wNiAxNiwxMVYxMEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWVkID0gXCJNMjAuNywzLjNDMjAuNywzLjMgMTkuMywzIDE3LjIsM0MxMS43LDMgMS42LDUuMSAzLjIsMjAuOEM0LjMsMjAuOSA1LjQsMjEgNi40LDIxQzI0LjMsMjEgMjAuNywzLjMgMjAuNywzLjNNNywxN0M3LDE3IDcsNyAxNyw3QzE3LDcgMTEsOSA3LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlZWRPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w1LjkgNy44QzMuOCAxMC41IDIuNiAxNC42IDMuMiAyMC44QzQuMyAyMC45IDUuNCAyMSA2LjQgMjFDMTAuOSAyMSAxNC4xIDE5LjkgMTYuMyAxOC4yTDIwLjkgMjIuOEwyMi4xIDIxLjVNNyAxN0M3IDE3IDcgMTMuNyA4LjkgMTAuOEwxMC4yIDEyLjFDOS4xIDEzLjQgOCAxNSA3IDE3TTExLjYgOC40TDguNSA1LjNDMTEuMyAzLjQgMTQuNyAzIDE3LjIgM0MxOS4zIDMgMjAuNyAzLjMgMjAuNyAzLjNTMjIuMSAxMC4zIDE4LjcgMTUuNUwxMi44IDkuNkMxNS4xIDcuNiAxNyA3IDE3IDdDMTQuNyA3IDEyLjkgNy41IDExLjYgOC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlZWRPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNS45IDcuOEMzLjggMTAuNSAyLjYgMTQuNiAzLjIgMjAuOEM0LjMgMjAuOSA1LjQgMjEgNi40IDIxQzEwLjkgMjEgMTQuMSAxOS45IDE2LjMgMTguMkwyMC45IDIyLjhMMjIuMSAyMS41TTYuNCAxOUg1LjFDNC45IDE0LjggNS42IDExLjUgNy4zIDkuMkw4LjkgMTAuOEM3IDEzLjcgNyAxNyA3IDE3QzggMTUgOS4xIDEzLjQgMTAuMiAxMi4xTDE0LjggMTYuN0MxMi44IDE4LjIgMTAgMTkgNi40IDE5TTEwIDYuOEw4LjUgNS4zQzExLjMgMy40IDE0LjcgMyAxNy4yIDNDMTkuMyAzIDIwLjcgMy4zIDIwLjcgMy4zUzIyLjEgMTAuMyAxOC43IDE1LjVMMTcuMiAxNEMxOS4xIDEwLjkgMTkgNy4xIDE4LjkgNS4xQzE4LjQgNSAxNy44IDUgMTcuMiA1QzE1LjEgNSAxMi4zIDUuMyAxMCA2LjhNMTIuOCA5LjZMMTEuNiA4LjRDMTIuOSA3LjUgMTQuNyA3IDE3IDdDMTcgNyAxNS4xIDcuNiAxMi44IDkuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWVkT3V0bGluZSA9IFwiTTE3LjIsNVY1QzE3LjgsNSAxOC40LDUgMTguOSw1LjFDMTkuMSw3LjQgMTkuMSwxMiAxNi40LDE1LjJDMTQuNCwxNy43IDExLDE5IDYuNCwxOUM2LDE5IDUuNSwxOSA1LjEsMTlDNC45LDE0LjQgNS44LDEwLjggNy45LDguNUMxMC40LDUuNiAxNC40LDUgMTcuMiw1TTE3LjIsM0MxMS43LDMgMS42LDUuMSAzLjIsMjAuOEM0LjMsMjAuOSA1LjQsMjEgNi40LDIxQzI0LjMsMjEgMjAuNywzLjMgMjAuNywzLjNDMjAuNywzLjMgMTkuMywzIDE3LjIsM00xNyw3QzcsNyA3LDE3IDcsMTdDMTEsOSAxNyw3IDE3LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Vlc2F3ID0gXCJNMjEuNjggMTMuMjZMMjIuMDQgMTUuMjNMMi4zNSAxOC43N0wyIDE2LjhMNC45NSAxNi4yN0w0LjYgMTQuM0M0LjUgMTMuNzYgNC44NiAxMy4yNCA1LjQxIDEzLjE0QzUuOTUgMTMuMDQgNi40NyAxMy40IDYuNTcgMTMuOTVMNi45MiAxNS45MUwxNi43NiAxNC4xNUwxNi40MSAxMi4xOEMxNi4zMSAxMS42MyAxNi42NyAxMS4xMSAxNy4yMiAxMUMxNy43NiAxMC45MiAxOC4yOCAxMS4yOCAxOC4zOCAxMS44MkwxOC43MyAxMy43OUwyMS42OCAxMy4yNk0xMC4wNiAxOC40TDggMjJIMTZMMTMuNTggMTcuNzdMMTAuMDYgMTguNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWdtZW50ID0gXCJNMjEsOEgzVjZIMjFNOSwxM0gyMVYxMUg5TTksMThIMjFWMTZIOVwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdCA9IFwiTTQsM0g1VjVIM1Y0QTEsMSAwIDAsMSA0LDNNMjAsM0ExLDEgMCAwLDEgMjEsNFY1SDE5VjNIMjBNMTUsNVYzSDE3VjVIMTVNMTEsNVYzSDEzVjVIMTFNNyw1VjNIOVY1SDdNMjEsMjBBMSwxIDAgMCwxIDIwLDIxSDE5VjE5SDIxVjIwTTE1LDIxVjE5SDE3VjIxSDE1TTExLDIxVjE5SDEzVjIxSDExTTcsMjFWMTlIOVYyMUg3TTQsMjFBMSwxIDAgMCwxIDMsMjBWMTlINVYyMUg0TTMsMTVINVYxN0gzVjE1TTIxLDE1VjE3SDE5VjE1SDIxTTMsMTFINVYxM0gzVjExTTIxLDExVjEzSDE5VjExSDIxTTMsN0g1VjlIM1Y3TTIxLDdWOUgxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdEFsbCA9IFwiTTksOUgxNVYxNUg5TTcsMTdIMTdWN0g3TTE1LDVIMTdWM0gxNU0xNSwyMUgxN1YxOUgxNU0xOSwxN0gyMVYxNUgxOU0xOSw5SDIxVjdIMTlNMTksMjFBMiwyIDAgMCwwIDIxLDE5SDE5TTE5LDEzSDIxVjExSDE5TTExLDIxSDEzVjE5SDExTTksM0g3VjVIOU0zLDE3SDVWMTVIM001LDIxVjE5SDNBMiwyIDAgMCwwIDUsMjFNMTksM1Y1SDIxQTIsMiAwIDAsMCAxOSwzTTEzLDNIMTFWNUgxM00zLDlINVY3SDNNNywyMUg5VjE5SDdNMywxM0g1VjExSDNNMyw1SDVWM0EyLDIgMCAwLDAgMyw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdENvbG9yID0gXCJNMy44OCwzQzMuMzgsMy4wNiAzLDMuNSAzLDRWNEwzLDVINEw1LDVWNEw1LDNINEwzLjg4LDNNNywzVjVIOVYzSDdNMTEsM1Y1SDEzVjNIMTFNMTUsM1Y1SDE3VjNIMTVNMTksM1Y0TDE5LDVIMjBMMjEsNVY0TDIxLDMuODhDMjAuOTQsMy4zOCAyMC41LDMgMjAsM0gxOU0zLDdWOUg1VjdIM00xOSw3VjlIMjFWN0gxOU0zLDExVjEzSDVWMTFIM00xOS4zMSwxMkMxOS4xOCwxMiAxOS4wNSwxMi4wNSAxOC45NSwxMi4xNEwxNy4zOSwxMy43MUwxNi40MywxMi43NUwxNS43MiwxMy40NkwxNi40MywxNC4xN0wxMS45NywxOC42M1YyMUgxNC4zNUwxOC44LDE2LjU0TDE5LjUsMTcuMjVMMjAuMjIsMTYuNTRMMTkuMjYsMTUuNThMMjAuODIsMTQuMDNDMjEsMTMuODMgMjEsMTMuNSAyMC44MiwxMy4zMUwxOS42NSwxMi4xNEMxOS41NiwxMi4wNSAxOS40NCwxMiAxOS4zMSwxMk0zLDE1VjE3SDVWMTVIM00xNywxNUwxNy45NywxNS45N0wxMy45MywyMEwxMi45NywxOS4wNEwxNywxNU0zLDE5VjIwTDMsMjAuMTJDMy4wNiwyMC42MiAzLjUsMjEgNCwyMVYyMUg1VjIwTDUsMTlINEwzLDE5TTcsMTlWMjFIOVYxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdENvbXBhcmUgPSBcIk0xMywyM0gxMVYxSDEzVjIzTTksMTlINVY1SDlWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QzMsMjAuMTEgMy45LDIxIDUsMjFIOVYxOU0xOSw3VjlIMjFWN0gxOU0xOSw1SDIxQzIxLDMuODkgMjAuMSwzIDE5LDNWNU0yMSwxNUgxOVYxN0gyMVYxNU0xOSwxMVYxM0gyMVYxMUgxOU0xNywzSDE1VjVIMTdWM00xOSwyMUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOUgxOVYyMU0xNywxOUgxNVYyMUgxN1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3REcmFnID0gXCJNMTMsMTdIMTdWMTNIMTlWMTdIMjNWMTlIMTlWMjNIMTdWMTlIMTNWMTdNMTEsMTdWMTlIOVYxN0gxMU03LDE3VjE5SDVWMTdIN00xOSw5VjExSDE3VjlIMTlNMTksNVY3SDE3VjVIMTlNMTUsNVY3SDEzVjVIMTVNMTEsNVY3SDlWNUgxMU03LDVWN0g1VjVIN003LDEzVjE1SDVWMTNIN003LDlWMTFINVY5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0R3JvdXAgPSBcIk01IDNBMiAyIDAgMCAwIDMgNUg1TTcgM1Y1SDlWM00xMSAzVjVIMTNWM00xNSAzVjVIMTdWM00xOSAzVjVIMjFBMiAyIDAgMCAwIDE5IDNNMyA3VjlINVY3TTcgN1YxMUgxMVY3TTEzIDdWMTFIMTdWN00xOSA3VjlIMjFWN00zIDExVjEzSDVWMTFNMTkgMTFWMTNIMjFWMTFNNyAxM1YxN0gxMVYxM00xMyAxM1YxN0gxN1YxM00zIDE1VjE3SDVWMTVNMTkgMTVWMTdIMjFWMTVNMyAxOUEyIDIgMCAwIDAgNSAyMVYxOU03IDE5VjIxSDlWMTlNMTEgMTlWMjFIMTNWMTlNMTUgMTlWMjFIMTdWMTlNMTkgMTlWMjFBMiAyIDAgMCAwIDIxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdEludmVyc2UgPSBcIk01LDNIN1Y1SDlWM0gxMVY1SDEzVjNIMTVWNUgxN1YzSDE5VjVIMjFWN0gxOVY5SDIxVjExSDE5VjEzSDIxVjE1SDE5VjE3SDIxVjE5SDE5VjIxSDE3VjE5SDE1VjIxSDEzVjE5SDExVjIxSDlWMTlIN1YyMUg1VjE5SDNWMTdINVYxNUgzVjEzSDVWMTFIM1Y5SDVWN0gzVjVINVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE1hcmtlciA9IFwiTTQgM0g1VjVIM1Y0QzMgMy40NSAzLjQ1IDMgNCAzTTIwIDNDMjAuNTUgMyAyMSAzLjQ1IDIxIDRWNUgxOVYzSDIwTTE1IDVWM0gxN1Y1SDE1TTExIDVWM0gxM1Y1SDExTTcgNVYzSDlWNUg3TTExIDIxVjE5SDEzVjIxSDExTTcgMjFWMTlIOVYyMUg3TTQgMjFDMy40NSAyMSAzIDIwLjU1IDMgMjBWMTlINVYyMUg0TTMgMTVINVYxN0gzVjE1TTMgMTFINVYxM0gzVjExTTMgN0g1VjlIM1Y3TTIxIDdWOUgxOVY3SDIxTTE5LjUgMTNDMjEuNCAxMyAyMyAxNC42IDIzIDE2LjVDMjMgMTkuMSAxOS41IDIzIDE5LjUgMjNDMTkuNSAyMyAxNiAxOS4xIDE2IDE2LjVDMTYgMTQuNiAxNy42IDEzIDE5LjUgMTNNMTkuNSAxNy44QzIwLjIgMTcuOCAyMC44IDE3LjIgMjAuNyAxNi42QzIwLjcgMTYgMjAuMSAxNS40IDE5LjUgMTUuNEMxOC45IDE1LjQgMTguMyAxNS45IDE4LjMgMTYuNkMxOC4zIDE3LjIgMTguOCAxNy44IDE5LjUgMTcuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3RNdWx0aXBsZSA9IFwiTTE4IDEySDIwVjE0SDE4VjEyTTE0IDE2SDE2VjE4SDE0VjE2TTIwIDE3QzIwIDE3LjU1IDE5LjU1IDE4IDE5IDE4SDE4VjE2SDIwVjE3TTcgNEg4VjZINlY1QzYgNC40NSA2LjQ1IDQgNyA0TTE5IDRDMTkuNTUgNCAyMCA0LjQ1IDIwIDVWNkgxOFY0SDE5TTE0IDZWNEgxNlY2SDE0TTEwIDZWNEgxMlY2SDEwTTEwIDE4VjE2SDEyVjE4SDEwTTcgMThDNi40NSAxOCA2IDE3LjU1IDYgMTdWMTZIOFYxOEg3TTYgMTJIOFYxNEg2VjEyTTYgOEg4VjEwSDZWOE0yMCA4VjEwSDE4VjhIMjBNMyA4SDRWMjBIMTZWMjFDMTYgMjEuNTQgMTUuNTcgMjIgMTUuMDMgMjJIMTVMMyAyMkMyLjQ1IDIyIDIgMjEuNTUgMiAyMVY5QzIgOC40NSAyLjQ1IDggMyA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE11bHRpcGxlTWFya2VyID0gXCJNNyA0SDhWNkg2VjVDNiA0LjQ1IDYuNDUgNCA3IDRNMTkgNEMxOS41NSA0IDIwIDQuNDUgMjAgNVY2SDE4VjRIMTlNMTQgNlY0SDE2VjZIMTRNMTAgNlY0SDEyVjZIMTBNMTAgMThWMTZIMTJWMThIMTBNNyAxOEM2LjQ1IDE4IDYgMTcuNTUgNiAxN1YxNkg4VjE4SDdNNiAxMkg4VjE0SDZWMTJNNiA4SDhWMTBINlY4TTIwIDhWMTBIMThWOEgyME0zIDhINFYyMEgxNC41OEwxNi4wMyAyMkwzIDIyQzIuNDUgMjIgMiAyMS41NSAyIDIxVjlDMiA4LjQ1IDIuNDUgOCAzIDhNMTguNSAxMkMyMC40IDEyIDIyIDEzLjYgMjIgMTUuNUMyMiAxOC4xIDE4LjUgMjIgMTguNSAyMkMxOC41IDIyIDE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMk0xOC41IDE2LjhDMTkuMiAxNi44IDE5LjggMTYuMiAxOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40QzE3LjkgMTQuNCAxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE9mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjEsMjEuNzJMMTkuNzMsMjNMMTcsMjAuMjdWMjFIMTVWMTlIMTUuNzNMNSw4LjI3VjlIM1Y3SDMuNzNMMSw0LjI3TTIwLDNBMSwxIDAgMCwxIDIxLDRWNUgxOVYzSDIwTTE1LDVWM0gxN1Y1SDE1TTExLDVWM0gxM1Y1SDExTTcsNVYzSDlWNUg3TTExLDIxVjE5SDEzVjIxSDExTTcsMjFWMTlIOVYyMUg3TTQsMjFBMSwxIDAgMCwxIDMsMjBWMTlINVYyMUg0TTMsMTVINVYxN0gzVjE1TTIxLDE1VjE3SDE5VjE1SDIxTTMsMTFINVYxM0gzVjExTTIxLDExVjEzSDE5VjExSDIxTTIxLDdWOUgxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdFBsYWNlID0gXCJNNCAzSDVWNUgzVjRDMyAzLjUgMy41IDMgNCAzTTIwIDNDMjAuNSAzIDIxIDMuNSAyMSA0VjVIMTlWM0gyME0xNSA1VjNIMTdWNUgxNU0xMSA1VjNIMTNWNUgxMU03IDVWM0g5VjVIN00yMSAxMkMyMSAxMi41IDIwLjUgMTMgMjAgMTNIMTlWMTFIMjFWMTJNMTUgMTNWMTFIMTdWMTNIMTVNMTEgMTNWMTFIMTNWMTNIMTFNNyAxM1YxMUg5VjEzSDdNNCAxM0MzLjUgMTMgMyAxMi41IDMgMTJWMTFINVYxM0g0TTMgN0g1VjlIM1Y3TTIxIDdWOUgxOVY3SDIxTTcgMTZMMTIgMjFMMTcgMTZIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3RTZWFyY2ggPSBcIk0xOS4zMSAxOC45QzE5Ljc1IDE4LjIxIDIwIDE3LjM4IDIwIDE2LjVDMjAgMTQgMTggMTIgMTUuNSAxMlMxMSAxNCAxMSAxNi41IDEzIDIxIDE1LjUgMjFDMTYuMzcgMjEgMTcuMTkgMjAuNzUgMTcuODggMjAuMzJMMjEgMjMuMzlMMjIuMzkgMjJMMTkuMzEgMTguOU0xNS41IDE5QzE0LjEyIDE5IDEzIDE3Ljg4IDEzIDE2LjVTMTQuMTIgMTQgMTUuNSAxNCAxOCAxNS4xMiAxOCAxNi41IDE2Ljg4IDE5IDE1LjUgMTlNMjEgOUgxOVY3SDIxVjlNMjEgNUgxOVYzSDIwQzIwLjU1IDMgMjEgMy40NSAyMSA0VjVNMTkgMTEuMDNWMTFIMjFWMTNIMjAuOTdDMjAuNDYgMTIuMjEgMTkuNzkgMTEuNTQgMTkgMTEuMDNNMTcgNUgxNVYzSDE3VjVNMTMgNUgxMVYzSDEzVjVNMyA3SDVWOUgzVjdNNyAxOUg5VjIxSDdWMTlNMyAxMUg1VjEzSDNWMTFNNCAzSDVWNUgzVjRDMyAzLjQ1IDMuNDUgMyA0IDNNOSA1SDdWM0g5VjVNMyAxOUg1VjIxSDRDMy40NSAyMSAzIDIwLjU1IDMgMjBWMTlNMyAxNUg1VjE3SDNWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uID0gXCJNMiw0QzIsMi44OSAyLjksMiA0LDJIN1Y0SDRWN0gyVjRNMjIsNFY3SDIwVjRIMTdWMkgyMEEyLDIgMCAwLDEgMjIsNE0yMCwyMFYxN0gyMlYyMEMyMiwyMS4xMSAyMS4xLDIyIDIwLDIySDE3VjIwSDIwTTIsMjBWMTdINFYyMEg3VjIySDRBMiwyIDAgMCwxIDIsMjBNMTAsMkgxNFY0SDEwVjJNMTAsMjBIMTRWMjJIMTBWMjBNMjAsMTBIMjJWMTRIMjBWMTBNMiwxMEg0VjE0SDJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uRHJhZyA9IFwiTTE0LDE3SDE3VjE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3TTEyLDE3VjE5SDlWMTdIMTJNNywxN1YxOUgzVjE1SDVWMTdIN00zLDEzVjEwSDVWMTNIM00zLDhWNEg3VjZINVY4SDNNOSw0SDEyVjZIOVY0TTE1LDRIMTlWOEgxN1Y2SDE1VjRNMTksMTBWMTJIMTdWMTBIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uRWxsaXBzZSA9IFwiTTYuMzUsMjAuMjVMNy41NiwxOC42NkM4LjQyLDE5LjIzIDkuMzksMTkuNjQgMTAuNDMsMTkuODVMMTAuMTYsMjEuODNDOC43NywyMS41NyA3LjUsMjEgNi4zNSwyMC4yNU0xNi40MywxOC42NkwxNy42NCwyMC4yNkMxNi41LDIxLjAzIDE1LjIzLDIxLjU3IDEzLjg0LDIxLjgzTDEzLjU3LDE5Ljg1QzE0LjYxLDE5LjY0IDE1LjU3LDE5LjIzIDE2LjQzLDE4LjY2TTE5Ljg0LDEzLjU5TDIxLjgzLDEzLjg2QzIxLjU3LDE1LjI1IDIxLDE2LjU0IDIwLjI0LDE3LjY2TDE4LjY1LDE2LjQ1QzE5LjIyLDE1LjYgMTkuNjMsMTQuNjMgMTkuODQsMTMuNTlNMi4xNywxMy44NEw0LjE1LDEzLjU3QzQuMzYsMTQuNjEgNC43NywxNS41OCA1LjM0LDE2LjQ0TDMuNzUsMTcuNjVDMywxNi41IDIuNDMsMTUuMjMgMi4xNywxMy44NE0xOC42Niw3LjU2TDIwLjI1LDYuMzVDMjEuMDMsNy41IDIxLjU4LDguNzggMjEuODMsMTAuMThMMTkuODUsMTAuNDVDMTkuNjQsOS40IDE5LjIzLDguNDIgMTguNjYsNy41Nk0xMy41Nyw0LjE1TDEzLjg0LDIuMTdDMTUuMjMsMi40MyAxNi41LDMgMTcuNjUsMy43NUwxNi40NCw1LjM0QzE1LjU4LDQuNzcgMTQuNjEsNC4zNiAxMy41Nyw0LjE1TTcuNTYsNS4zNEw2LjM1LDMuNzVDNy41LDMgOC43NywyLjQzIDEwLjE2LDIuMTdMMTAuNDMsNC4xNUM5LjM5LDQuMzYgOC40Miw0Ljc3IDcuNTYsNS4zNE00LjE1LDEwLjQzTDIuMTcsMTAuMTZDMi40Myw4Ljc3IDMsNy41IDMuNzUsNi4zNUw1LjM0LDcuNTZDNC43Nyw4LjQyIDQuMzYsOS4zOSA0LjE1LDEwLjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbkVsbGlwc2VBcnJvd0luc2lkZSA9IFwiTTExLjIgNEM5Ljk0IDQuMTIgOC43MiA0LjUzIDcuNjQgNS4yTDYuNjQgMy40N0M3Ljk1IDIuNjQgOS40NSAyLjEzIDExIDJNMTcuNTMgNi4yNUMxNi42MiA1LjM5IDE1LjUzIDQuNzMgMTQuMzQgNC4zM0wxNSAyLjM5QzE2LjUgMi44NCAxNy44OSAzLjY2IDE5IDQuNzhNNS4zNCA3LjQxQzQuNjQgOC40NCA0LjE5IDkuNiA0IDEwLjgzTDIgMTAuNTVDMi4yIDkgMi43OSA3LjUgMy43IDYuMjNNMjIgMTJWMTIuNjZMMjAgMTIuNVYxMkMyMCAxMC45MiAxOS44MSA5Ljg2IDE5LjM5IDguODZMMjEuMjIgOC4wNkMyMS43NSA5LjMxIDIyIDEwLjY1IDIyIDEyTTYgMTcuM0w0LjUgMTguNjFDMy40NyAxNy40MyAyLjcyIDE2LjA0IDIuMyAxNC41M0w0LjE3IDE0QzQuNTMgMTUuMjIgNS4xNiAxNi4zNSA2IDE3LjNNMTIuMTQgMjJIMTJDMTAuNSAyMiA5IDIxLjY4IDcuNjQgMjEuMDdMOC41MyAxOS4yNEM5LjYyIDE5Ljc1IDEwLjggMjAgMTIgMjBIMTIuMTlNMTcgMjFIMTVWMTVIMjFWMTdIMTguNDJMMjEuMTQgMTkuNzZMMTkuNzMgMjEuMTdMMTcgMTguNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk1hcmtlciA9IFwiTTIgNEMyIDIuODkgMi45IDIgNCAySDdWNEg0VjdIMlY0TTIyIDRWN0gyMFY0SDE3VjJIMjBDMjEuMSAyIDIyIDIuODkgMjIgNE0yIDIwVjE3SDRWMjBIN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBNMTAgMkgxNFY0SDEwVjJNMTAgMjBIMTRWMjJIMTBWMjBNMiAxMEg0VjE0SDJWMTBNMTguNSAxM0MyMC40IDEzIDIyIDE0LjYgMjIgMTYuNUMyMiAxOS4xIDE4LjUgMjMgMTguNSAyM0MxOC41IDIzIDE1IDE5LjEgMTUgMTYuNUMxNSAxNC42IDE2LjYgMTMgMTguNSAxM00xOC41IDE3LjhDMTkuMiAxNy44IDE5LjggMTcuMiAxOS43IDE2LjZDMTkuNyAxNiAxOS4xIDE1LjQgMTguNSAxNS40QzE3LjkgMTUuNCAxNy4zIDE1LjkgMTcuMyAxNi42QzE3LjMgMTcuMiAxNy44IDE3LjggMTguNSAxNy44TTIwIDEwSDIyVjEyLjM0QzIxLjQyIDExLjg0IDIwLjc0IDExLjQ1IDIwIDExLjIzVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk11bHRpcGxlID0gXCJNMTEgNlY0SDE1VjZIMTFNNiA5SDhWMTNINlY5TTYgNkM2IDQuODkgNi45IDQgOCA0SDlWNkg4VjdINlY2TTggMThDNi44OSAxOCA2IDE3LjEgNiAxNlYxNUg4VjE2SDlWMThIOE0xOCA0QzE5LjExIDQgMjAgNC45IDIwIDZWN0gxOFY2SDE3VjRIMThNMTUgMTZWMThIMTFWMTZIMTVNMjAgMTNIMThWOUgyMFYxM00yMCAxNkMyMCAxNy4xMSAxOS4xIDE4IDE4IDE4SDE3VjE2SDE4VjE1SDIwVjE2TTMgOEg0VjIwSDE2VjIxQzE2IDIxLjU0IDE1LjU3IDIyIDE1LjAzIDIySDE1TDMgMjJDMi40NSAyMiAyIDIxLjU1IDIgMjFWOUMyIDguNDUgMi40NSA4IDMgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3Rpb25NdWx0aXBsZU1hcmtlciA9IFwiTTcgNEg5VjZIOFY3SDZWNUM2IDQuNDUgNi40NSA0IDcgNE0xOSA0QzE5LjU1IDQgMjAgNC40NSAyMCA1VjdIMThWNkgxN1Y0SDE5TTExIDZWNEgxNVY2SDExTTcgMThDNi40NSAxOCA2IDE3LjU1IDYgMTdWMTVIOFYxNkg5VjE4SDdNNiA5SDhWMTNINlY5TTMgOEg0VjIwSDE0LjU4TDE2LjAzIDIyTDMgMjJDMi40NSAyMiAyIDIxLjU1IDIgMjFWOUMyIDguNDUgMi40NSA4IDMgOE0xOC41IDEyQzIwLjQgMTIgMjIgMTMuNiAyMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyQzE4LjUgMjIgMTUgMTguMSAxNSAxNS41QzE1IDEzLjYgMTYuNiAxMiAxOC41IDEyTTE4LjUgMTYuOEMxOS4yIDE2LjggMTkuOCAxNi4yIDE5LjcgMTUuNkMxOS43IDE1IDE5LjEgMTQuNCAxOC41IDE0LjRDMTcuOSAxNC40IDE3LjMgMTQuOSAxNy4zIDE1LjZDMTcuMyAxNi4yIDE3LjggMTYuOCAxOC41IDE2LjhNMTEgMThWMTZIMTNDMTMuMDkgMTYuNjYgMTMuMjcgMTcuMzMgMTMuNSAxOEgxMU0yMCA5VjEwLjIzQzE5LjUgMTAuMDggMTkgMTAgMTguNSAxMEwxOCAxMC4wM1Y5SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk9mZiA9IFwiTTAuNSwzLjc3TDEuNzgsMi41TDIxLjUsMjIuMjJMMjAuMjMsMjMuNUwxOC43MywyMkgxN1YyMC4yN0wzLjczLDdIMlY1LjI3TDAuNSwzLjc3TTQsMkg3VjRINS44MkwzLjgzLDJINE0yMiw0VjdIMjBWNEgxN1YySDIwQTIsMiAwIDAsMSAyMiw0TTIwLDE3SDIyVjIwTDIyLDIwLjE3TDIwLDE4LjE4VjE3TTIsMjBWMTdINFYyMEg3VjIySDRBMiwyIDAgMCwxIDIsMjBNMTAsMkgxNFY0SDEwVjJNMTAsMjBIMTRWMjJIMTBWMjBNMjAsMTBIMjJWMTRIMjBWMTBNMiwxMEg0VjE0SDJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uU2VhcmNoID0gXCJNMTkuMjcgMTguOUMxOS43IDE4LjIxIDE5Ljk1IDE3LjM4IDE5Ljk1IDE2LjVDMTkuOTUgMTQgMTcuOTUgMTIgMTUuNDYgMTJTMTAuOTYgMTQgMTAuOTYgMTYuNSAxMi45NiAyMSAxNS40NiAyMUMxNi4zMyAyMSAxNy4xNSAyMC43NSAxNy44NCAyMC4zMkwyMC45NiAyMy4zOUwyMi4zNSAyMkwxOS4yNyAxOC45TTE1LjQ2IDE5QzE0LjA3IDE5IDEyLjk2IDE3Ljg4IDEyLjk2IDE2LjVTMTQuMDcgMTQgMTUuNDYgMTQgMTcuOTUgMTUuMTIgMTcuOTUgMTYuNSAxNi44NCAxOSAxNS40NiAxOU0yMiAxNEgyMS40NUMyMS4xMiAxMy4xOSAyMC42MiAxMi40NyAyMCAxMS44NlYxMEgyMlYxNE0yMCA0SDE3VjJIMjBDMjEuMTEgMiAyMiAyLjkgMjIgNFY3SDIwVjRNMTQgNEgxMFYySDE0VjRNNCAySDdWNEg0VjdIMlY0QzIgMi44OSAyLjkgMiA0IDJNMTIgMjJIMTBWMjBDMTAuNSAyMC44MiAxMS4yIDIxLjUgMTIgMjJNNCAyMEg3VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxN0g0VjIwTTQgMTRIMlYxMEg0VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbWFudGljV2ViID0gXCJNMTIuOSA0LjIyQzE4LjczIDYuODQgMjAgMiAyMCAyUzE4Ljg5IDguMDcgMTMuNzkgMTAuNTVDMTIuNzUgMTEuMDYgMTIuMSAxMS4zMyAxMi4xIDExLjMzTDMuNzMgNy4yNUwxMi4xIDMuODJDMTIuMSAzLjgyIDExLjkgMy43NiAxMi45IDQuMjJNMTEuMTIgMjJMMy4zMyAxNy43OFY5LjA3TDExLjEyIDEzLjA0VjIyTTEyLjg4IDIyTDIwLjY4IDE3Ljc4VjkuMDdMMTIuODggMTMuMDRWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZCA9IFwiTTIsMjFMMjMsMTJMMiwzVjEwTDE3LDEyTDIsMTRWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENoZWNrID0gXCJNMiAzVjEwTDE3IDEyTDIgMTRWMjFMMjMgMTJNMjIgMTUuNUwxOC41IDE5TDE2LjUgMTdMMTUgMTguNUwxOC41IDIyTDIzLjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENoZWNrT3V0bGluZSA9IFwiTTIgM1YxMEwxNyAxMkwyIDE0VjIxTDIzIDEyTTQgNi4wM0wxMS41MyA5LjI1TDQgOC4yNU0xMS41MyAxNC43NUw0IDE3Ljk3VjE1Ljc1TTIyIDE1LjVMMTguNSAxOUwxNi41IDE3TDE1IDE4LjVMMTguNSAyMkwyMy41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbmRDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk04LDcuNzFWMTEuMDVMMTUuMTQsMTJMOCwxMi45NVYxNi4yOUwxOCwxMkw4LDcuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENpcmNsZU91dGxpbmUgPSBcIk04LDcuNzFMMTgsMTJMOCwxNi4yOVYxMi45NUwxNS4xNCwxMkw4LDExLjA1VjcuNzFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbmRDbG9jayA9IFwiTTIgM1YxMEwxMSAxMkwyIDE0VjIxTDkuMjcgMTcuODlBNyA3IDAgMCAwIDE2IDIzQTcgNyAwIDAgMCAyMyAxNkE3IDcgMCAwIDAgMTYgOUwyIDNNMTYgMTFBNSA1IDAgMCAxIDIxIDE2QTUgNSAwIDAgMSAxNiAyMUE1IDUgMCAwIDEgMTEgMTZBNSA1IDAgMCAxIDE2IDExTTE1IDEyLjVWMTYuNUwxOCAxOC41TDE4Ljc1IDE3LjI1TDE2LjUgMTUuNzVWMTIuNUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kQ2xvY2tPdXRsaW5lID0gXCJNMiAzVjEwTDExIDEyTDIgMTRWMjFMOS4yNyAxNy44OUE3IDcgMCAwIDAgMTYgMjNBNyA3IDAgMCAwIDIzIDE2QTcgNyAwIDAgMCAxNiA5TDIgM000IDYuMDNMMTIuNzggOS44QTcgNyAwIDAgMCAxMi4xIDEwLjJMNCA4LjRWNi4wM00xNiAxMUE1IDUgMCAwIDEgMjEgMTZBNSA1IDAgMCAxIDE2IDIxQTUgNSAwIDAgMSAxMSAxNkE1IDUgMCAwIDEgMTYgMTFNMTUgMTIuNVYxNi41TDE4IDE4LjVMMTguNzUgMTcuMjVMMTYuNSAxNS43NVYxMi41SDE1TTkuMTggMTQuNDVBNyA3IDAgMCAwIDkgMTUuODJMNCAxNy45N1YxNS42TDkuMTggMTQuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZExvY2sgPSBcIk0yMywxOFYxNy41QTIuNSwyLjUgMCAwLDAgMjAuNSwxNUEyLjUsMi41IDAgMCwwIDE4LDE3LjVWMThBMSwxIDAgMCwwIDE3LDE5VjIzQTEsMSAwIDAsMCAxOCwyNEgyM0ExLDEgMCAwLDAgMjQsMjNWMTlBMSwxIDAgMCwwIDIzLDE4TTIyLDE4SDE5VjE3LjVBMS41LDEuNSAwIDAsMSAyMC41LDE2QTEuNSwxLjUgMCAwLDEgMjIsMTcuNVYxOE0yMywxMkwyLDIxVjE0TDE3LDEyTDIsMTBWM0wyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kTG9ja091dGxpbmUgPSBcIk0yMyAxOFYxNy41QzIzIDE2LjEyIDIxLjg4IDE1IDIwLjUgMTVTMTggMTYuMTIgMTggMTcuNVYxOEMxNy40NSAxOCAxNyAxOC40NSAxNyAxOVYyM0MxNyAyMy41NSAxNy40NSAyNCAxOCAyNEgyM0MyMy41NSAyNCAyNCAyMy41NSAyNCAyM1YxOUMyNCAxOC40NSAyMy41NSAxOCAyMyAxOE0yMiAxOEgxOVYxNy41QzE5IDE2LjY3IDE5LjY3IDE2IDIwLjUgMTZTMjIgMTYuNjcgMjIgMTcuNVYxOE00IDYuMDNMMTEuNSA5LjI1TDQgOC4yNUw0IDYuMDNNMTEuNSAxNC43NUw0IDE3Ljk3VjE1Ljc1TDExLjUgMTQuNzVNMiAzTDIgMTBMMTcgMTJMMiAxNEwyIDIxTDIzIDEyTDIgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kT3V0bGluZSA9IFwiTTQgNi4wM0wxMS41IDkuMjVMNCA4LjI1TDQgNi4wM00xMS41IDE0Ljc1TDQgMTcuOTdWMTUuNzVMMTEuNSAxNC43NU0yIDNMMiAxMEwxNyAxMkwyIDE0TDIgMjFMMjMgMTJMMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcmlhbFBvcnQgPSBcIk03LDNIMTdWNUgxOVY4SDE2VjE0SDhWOEg1VjVIN1YzTTE3LDlIMTlWMTRIMTdWOU0xMSwxNUgxM1YyMkgxMVYxNU01LDlIN1YxNEg1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VydmVyID0gXCJNNCwxSDIwQTEsMSAwIDAsMSAyMSwyVjZBMSwxIDAgMCwxIDIwLDdINEExLDEgMCAwLDEgMyw2VjJBMSwxIDAgMCwxIDQsMU00LDlIMjBBMSwxIDAgMCwxIDIxLDEwVjE0QTEsMSAwIDAsMSAyMCwxNUg0QTEsMSAwIDAsMSAzLDE0VjEwQTEsMSAwIDAsMSA0LDlNNCwxN0gyMEExLDEgMCAwLDEgMjEsMThWMjJBMSwxIDAgMCwxIDIwLDIzSDRBMSwxIDAgMCwxIDMsMjJWMThBMSwxIDAgMCwxIDQsMTdNOSw1SDEwVjNIOVY1TTksMTNIMTBWMTFIOVYxM005LDIxSDEwVjE5SDlWMjFNNSwzVjVIN1YzSDVNNSwxMVYxM0g3VjExSDVNNSwxOVYyMUg3VjE5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VydmVyTWludXMgPSBcIk00LDRIMjBBMSwxIDAgMCwxIDIxLDVWOUExLDEgMCAwLDEgMjAsMTBINEExLDEgMCAwLDEgMyw5VjVBMSwxIDAgMCwxIDQsNE05LDhIMTBWNkg5VjhNNSw2VjhIN1Y2SDVNOCwxNkgxNlYxOEg4VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlck5ldHdvcmsgPSBcIk0xMywxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdINEExLDEgMCAwLDEgMywxNlYxMkExLDEgMCAwLDEgNCwxMUgyMEExLDEgMCAwLDEgMjEsMTJWMTZBMSwxIDAgMCwxIDIwLDE3SDEzVjE5TTQsM0gyMEExLDEgMCAwLDEgMjEsNFY4QTEsMSAwIDAsMSAyMCw5SDRBMSwxIDAgMCwxIDMsOFY0QTEsMSAwIDAsMSA0LDNNOSw3SDEwVjVIOVY3TTksMTVIMTBWMTNIOVYxNU01LDVWN0g3VjVINU01LDEzVjE1SDdWMTNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXJ2ZXJOZXR3b3JrT2ZmID0gXCJNMTMsMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDE1LjczTDEzLDE3LjI3VjE5TTIyLDIwVjIxLjE4TDIwLjgyLDIwSDIyTTIxLDIyLjcyTDE5LjczLDI0TDE3LjczLDIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDRBMSwxIDAgMCwxIDMsMTZWMTJBMSwxIDAgMCwxIDQsMTFINi43M0w0LjczLDlINEExLDEgMCAwLDEgMyw4VjcuMjdMMSw1LjI3TDIuMjgsNEwyMSwyMi43Mk00LDNIMjBBMSwxIDAgMCwxIDIxLDRWOEExLDEgMCAwLDEgMjAsOUg5LjgyTDcsNi4xOFY1SDUuODJMMy44NCwzQzMuODksMyAzLjk0LDMgNCwzTTIwLDExQTEsMSAwIDAsMSAyMSwxMlYxNkExLDEgMCAwLDEgMjAsMTdIMTcuODJMMTEuODIsMTFIMjBNOSw3SDEwVjVIOVY3TTksMTVIMTBWMTQuMjdMOSwxMy4yN1YxNU01LDEzVjE1SDdWMTNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXJ2ZXJPZmYgPSBcIk00LDFIMjBBMSwxIDAgMCwxIDIxLDJWNkExLDEgMCAwLDEgMjAsN0g4LjgyTDYuODIsNUg3VjNINVYzLjE4TDMuMjEsMS4zOUMzLjM5LDEuMTUgMy42OCwxIDQsMU0yMiwyMi43MkwyMC43MywyNEwxOS43MywyM0g0QTEsMSAwIDAsMSAzLDIyVjE4QTEsMSAwIDAsMSA0LDE3SDEzLjczTDExLjczLDE1SDRBMSwxIDAgMCwxIDMsMTRWMTBBMSwxIDAgMCwxIDQsOUg1LjczTDMuNjgsNi45NUMzLjM4LDYuODUgMy4xNSw2LjYyIDMuMDUsNi4zMkwxLDQuMjdMMi4yOCwzTDIyLDIyLjcyTTIwLDlBMSwxIDAgMCwxIDIxLDEwVjE0QTEsMSAwIDAsMSAyMCwxNUgxNi44MkwxMC44Miw5SDIwTTIwLDE3QTEsMSAwIDAsMSAyMSwxOFYxOS4xOEwxOC44MiwxN0gyME05LDVIMTBWM0g5VjVNOSwxM0g5LjczTDksMTIuMjdWMTNNOSwyMUgxMFYxOUg5VjIxTTUsMTFWMTNIN1YxMUg1TTUsMTlWMjFIN1YxOUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclBsdXMgPSBcIk00LDRIMjBBMSwxIDAgMCwxIDIxLDVWOUExLDEgMCAwLDEgMjAsMTBINEExLDEgMCAwLDEgMyw5VjVBMSwxIDAgMCwxIDQsNE05LDhIMTBWNkg5VjhNNSw2VjhIN1Y2SDVNOCwxNkgxMVYxM0gxM1YxNkgxNlYxOEgxM1YyMUgxMVYxOEg4VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclJlbW92ZSA9IFwiTTQsNEgyMEExLDEgMCAwLDEgMjEsNVY5QTEsMSAwIDAsMSAyMCwxMEg0QTEsMSAwIDAsMSAzLDlWNUExLDEgMCAwLDEgNCw0TTksOEgxMFY2SDlWOE01LDZWOEg3VjZINU0xMC41OSwxN0w4LDE0LjQxTDkuNDEsMTNMMTIsMTUuNTlMMTQuNTksMTNMMTYsMTQuNDFMMTMuNDEsMTdMMTYsMTkuNTlMMTQuNTksMjFMMTIsMTguNDFMOS40MSwyMUw4LDE5LjU5TDEwLjU5LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclNlY3VyaXR5ID0gXCJNMywxSDE5QTEsMSAwIDAsMSAyMCwyVjZBMSwxIDAgMCwxIDE5LDdIM0ExLDEgMCAwLDEgMiw2VjJBMSwxIDAgMCwxIDMsMU0zLDlIMTlBMSwxIDAgMCwxIDIwLDEwVjEwLjY3TDE3LjUsOS41NkwxMSwxMi40NFYxNUgzQTEsMSAwIDAsMSAyLDE0VjEwQTEsMSAwIDAsMSAzLDlNMywxN0gxMUMxMS4wNiwxOS4yNSAxMiwyMS40IDEzLjQ2LDIzSDNBMSwxIDAgMCwxIDIsMjJWMThBMSwxIDAgMCwxIDMsMTdNOCw1SDlWM0g4VjVNOCwxM0g5VjExSDhWMTNNOCwyMUg5VjE5SDhWMjFNNCwzVjVINlYzSDRNNCwxMVYxM0g2VjExSDRNNCwxOVYyMUg2VjE5SDRNMTcuNSwxMkwyMiwxNFYxN0MyMiwxOS43OCAyMC4wOCwyMi4zNyAxNy41LDIzQzE0LjkyLDIyLjM3IDEzLDE5Ljc4IDEzLDE3VjE0TDE3LjUsMTJNMTcuNSwxMy45NEwxNSwxNS4wNlYxNy43MkMxNSwxOS4yNiAxNi4wNywyMC43IDE3LjUsMjEuMDZWMTMuOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0QWxsID0gXCJNOSw1QzEwLjA0LDUgMTEuMDYsNS4yNCAxMiw1LjY4QzEyLjk0LDUuMjQgMTMuOTYsNSAxNSw1QTcsNyAwIDAsMSAyMiwxMkE3LDcgMCAwLDEgMTUsMTlDMTMuOTYsMTkgMTIuOTQsMTguNzYgMTIsMTguMzJDMTEuMDYsMTguNzYgMTAuMDQsMTkgOSwxOUE3LDcgMCAwLDEgMiwxMkE3LDcgMCAwLDEgOSw1TTguNSwxMkM4LjUsMTMuODcgOS4yOSwxNS41NiAxMC41NiwxNi43NUwxMS41NiwxNi4yOUMxMC4zMSwxNS4yOSA5LjUsMTMuNzQgOS41LDEyQzkuNSwxMC4yNiAxMC4zMSw4LjcxIDExLjU2LDcuNzFMMTAuNTYsNy4yNUM5LjI5LDguNDQgOC41LDEwLjEzIDguNSwxMk0xNS41LDEyQzE1LjUsMTAuMTMgMTQuNzEsOC40NCAxMy40NCw3LjI1TDEyLjQ0LDcuNzFDMTMuNjksOC43MSAxNC41LDEwLjI2IDE0LjUsMTJDMTQuNSwxMy43NCAxMy42OSwxNS4yOSAxMi40NCwxNi4yOUwxMy40NCwxNi43NUMxNC43MSwxNS41NiAxNS41LDEzLjg3IDE1LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0Q2VudGVyID0gXCJNOSw1QTcsNyAwIDAsMCAyLDEyQTcsNyAwIDAsMCA5LDE5QzEwLjA0LDE5IDExLjA2LDE4Ljc2IDEyLDE4LjMyQzEyLjk0LDE4Ljc2IDEzLjk2LDE5IDE1LDE5QTcsNyAwIDAsMCAyMiwxMkE3LDcgMCAwLDAgMTUsNUMxMy45Niw1IDEyLjk0LDUuMjQgMTIsNS42OEMxMS4wNiw1LjI0IDEwLjA0LDUgOSw1TTksN0M5LjM0LDcgOS42Nyw3LjAzIDEwLDcuMUM4LjcyLDguNDEgOCwxMC4xNyA4LDEyQzgsMTMuODMgOC43MiwxNS41OSAxMCwxNi44OUM5LjY3LDE2Ljk2IDkuMzQsMTcgOSwxN0E1LDUgMCAwLDEgNCwxMkE1LDUgMCAwLDEgOSw3TTE1LDdBNSw1IDAgMCwxIDIwLDEyQTUsNSAwIDAsMSAxNSwxN0MxNC42NiwxNyAxNC4zMywxNi45NyAxNCwxNi45QzE1LjI4LDE1LjU5IDE2LDEzLjgzIDE2LDEyQzE2LDEwLjE3IDE1LjI4LDguNDEgMTQsNy4xMUMxNC4zMyw3LjA0IDE0LjY2LDcgMTUsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRDZW50ZXJSaWdodCA9IFwiTTE1LDE5QzEzLjk2LDE5IDEyLjk0LDE4Ljc2IDEyLDE4LjMyQzExLjA2LDE4Ljc2IDEwLjA0LDE5IDksMTlBNyw3IDAgMCwxIDIsMTJBNyw3IDAgMCwxIDksNUMxMC4wNCw1IDExLjA2LDUuMjQgMTIsNS42OEMxMi45NCw1LjI0IDEzLjk2LDUgMTUsNUE3LDcgMCAwLDEgMjIsMTJBNyw3IDAgMCwxIDE1LDE5TTksMTdMMTAsMTYuODlDOC43MiwxNS41OSA4LDEzLjgzIDgsMTJDOCwxMC4xNyA4LjcyLDguNDEgMTAsNy4xTDksN0E1LDUgMCAwLDAgNCwxMkE1LDUgMCAwLDAgOSwxN00xNS41LDEyQzE1LjUsMTAuMTMgMTQuNzEsOC40NCAxMy40NCw3LjI1TDEyLjQ0LDcuNzFDMTMuNjksOC43MSAxNC41LDEwLjI2IDE0LjUsMTJDMTQuNSwxMy43NCAxMy42OSwxNS4yOSAxMi40NCwxNi4yOUwxMy40NCwxNi43NUMxNC43MSwxNS41NiAxNS41LDEzLjg3IDE1LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0TGVmdCA9IFwiTTksNUE3LDcgMCAwLDAgMiwxMkE3LDcgMCAwLDAgOSwxOUMxMC4wNCwxOSAxMS4wNiwxOC43NiAxMiwxOC4zMkMxMi45NCwxOC43NiAxMy45NiwxOSAxNSwxOUE3LDcgMCAwLDAgMjIsMTJBNyw3IDAgMCwwIDE1LDVDMTMuOTYsNSAxMi45NCw1LjI0IDEyLDUuNjhDMTEuMDYsNS4yNCAxMC4wNCw1IDksNU0xNSw3QTUsNSAwIDAsMSAyMCwxMkE1LDUgMCAwLDEgMTUsMTdDMTQuNjYsMTcgMTQuMzMsMTYuOTcgMTQsMTYuOUMxNS4yOCwxNS41OSAxNiwxMy44MyAxNiwxMkMxNiwxMC4xNyAxNS4yOCw4LjQxIDE0LDcuMTFDMTQuMzMsNy4wNCAxNC42Niw3IDE1LDdNMTIsOEMxMy4yNiw4Ljk1IDE0LDEwLjQzIDE0LDEyQzE0LDEzLjU3IDEzLjI2LDE1LjA1IDEyLDE2QzEwLjc0LDE1LjA1IDEwLDEzLjU3IDEwLDEyQzEwLDEwLjQzIDEwLjc0LDguOTUgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRMZWZ0Q2VudGVyID0gXCJNOSw1QzEwLjA0LDUgMTEuMDYsNS4yNCAxMiw1LjY4QzEyLjk0LDUuMjQgMTMuOTYsNSAxNSw1QTcsNyAwIDAsMSAyMiwxMkE3LDcgMCAwLDEgMTUsMTlDMTMuOTYsMTkgMTIuOTQsMTguNzYgMTIsMTguMzJDMTEuMDYsMTguNzYgMTAuMDQsMTkgOSwxOUE3LDcgMCAwLDEgMiwxMkE3LDcgMCAwLDEgOSw1TTE1LDdMMTQsNy4xMUMxNS4yOCw4LjQxIDE2LDEwLjE3IDE2LDEyQzE2LDEzLjgzIDE1LjI4LDE1LjU5IDE0LDE2LjlMMTUsMTdBNSw1IDAgMCwwIDIwLDEyQTUsNSAwIDAsMCAxNSw3TTguNSwxMkM4LjUsMTMuODcgOS4yOSwxNS41NiAxMC41NiwxNi43NUwxMS41NiwxNi4yOUMxMC4zMSwxNS4yOSA5LjUsMTMuNzQgOS41LDEyQzkuNSwxMC4yNiAxMC4zMSw4LjcxIDExLjU2LDcuNzFMMTAuNTYsNy4yNUM5LjI5LDguNDQgOC41LDEwLjEzIDguNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRMZWZ0UmlnaHQgPSBcIk05LDVDMTAuMDQsNSAxMS4wNiw1LjI0IDEyLDUuNjhDMTIuOTQsNS4yNCAxMy45Niw1IDE1LDVBNyw3IDAgMCwxIDIyLDEyQTcsNyAwIDAsMSAxNSwxOUMxMy45NiwxOSAxMi45NCwxOC43NiAxMiwxOC4zMkMxMS4wNiwxOC43NiAxMC4wNCwxOSA5LDE5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVNOSwxMkM5LDE0LjIyIDEwLjIxLDE2LjE2IDEyLDE3LjJDMTMuNzksMTYuMTYgMTUsMTQuMjIgMTUsMTJDMTUsOS43OCAxMy43OSw3Ljg0IDEyLDYuOEMxMC4yMSw3Ljg0IDksOS43OCA5LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNldE1lcmdlID0gXCJNMiA3VjlIN1Y3SDJNMTIgOVYxMUg5VjEzSDEyVjE1TDE1IDEyTDEyIDlNMTcgOVYxNUgyMlY5SDE3TTIgMTFWMTNIN1YxMUgyTTIgMTVWMTdIN1YxNUgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNldE5vbmUgPSBcIk05LDVBNyw3IDAgMCwwIDIsMTJBNyw3IDAgMCwwIDksMTlDMTAuMDQsMTkgMTEuMDYsMTguNzYgMTIsMTguMzJDMTIuOTQsMTguNzYgMTMuOTYsMTkgMTUsMTlBNyw3IDAgMCwwIDIyLDEyQTcsNyAwIDAsMCAxNSw1QzEzLjk2LDUgMTIuOTQsNS4yNCAxMiw1LjY4QzExLjA2LDUuMjQgMTAuMDQsNSA5LDVNOSw3QzkuMzQsNyA5LjY3LDcuMDMgMTAsNy4xQzguNzIsOC40MSA4LDEwLjE3IDgsMTJDOCwxMy44MyA4LjcyLDE1LjU5IDEwLDE2Ljg5QzkuNjcsMTYuOTYgOS4zNCwxNyA5LDE3QTUsNSAwIDAsMSA0LDEyQTUsNSAwIDAsMSA5LDdNMTUsN0E1LDUgMCAwLDEgMjAsMTJBNSw1IDAgMCwxIDE1LDE3QzE0LjY2LDE3IDE0LjMzLDE2Ljk3IDE0LDE2LjlDMTUuMjgsMTUuNTkgMTYsMTMuODMgMTYsMTJDMTYsMTAuMTcgMTUuMjgsOC40MSAxNCw3LjExQzE0LjMzLDcuMDQgMTQuNjYsNyAxNSw3TTEyLDhDMTMuMjYsOC45NSAxNCwxMC40MyAxNCwxMkMxNCwxMy41NyAxMy4yNiwxNS4wNSAxMiwxNkMxMC43NCwxNS4wNSAxMCwxMy41NyAxMCwxMkMxMCwxMC40MyAxMC43NCw4Ljk1IDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0UmlnaHQgPSBcIk0xNSwxOUMxMy45NiwxOSAxMi45NCwxOC43NiAxMiwxOC4zMkMxMS4wNiwxOC43NiAxMC4wNCwxOSA5LDE5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVDMTAuMDQsNSAxMS4wNiw1LjI0IDEyLDUuNjhDMTIuOTQsNS4yNCAxMy45Niw1IDE1LDVBNyw3IDAgMCwxIDIyLDEyQTcsNyAwIDAsMSAxNSwxOU05LDE3TDEwLDE2Ljg5QzguNzIsMTUuNTkgOCwxMy44MyA4LDEyQzgsMTAuMTcgOC43Miw4LjQxIDEwLDcuMUw5LDdBNSw1IDAgMCwwIDQsMTJBNSw1IDAgMCwwIDksMTdNMTIsMTZDMTMuMjYsMTUuMDUgMTQsMTMuNTcgMTQsMTJDMTQsMTAuNDMgMTMuMjYsOC45NSAxMiw4QzEwLjc0LDguOTUgMTAsMTAuNDMgMTAsMTJDMTAsMTMuNTcgMTAuNzQsMTUuMDUgMTIsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0U3BsaXQgPSBcIk0xNyA3VjlIMjJWN0gxN00yIDlWMTVIN1Y5SDJNMTIgOVYxMUg5VjEzSDEyVjE1TDE1IDEyTDEyIDlNMTcgMTFWMTNIMjJWMTFIMTdNMTcgMTVWMTdIMjJWMTVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0U3F1YXJlID0gXCJNMTcuNyAxNy43TDE2LjYgMTguOEwxNS45IDE4TDE3IDE3TDE1IDE1TDE0IDE2LjFMMTMuMyAxNS40TDE0LjQgMTQuM0wxMi41IDEyLjRMMTEuNCAxMy41TDEwLjcgMTIuOEwxMS44IDExLjdMOS44IDkuOEw4LjcgMTAuOUw4IDEwLjJMOSA5TDcuMSA3LjFMNiA4LjFMNS4zIDcuNEw2LjQgNi4zTDQgNFYyMEgyMEwxNy43IDE3LjdNNyAxN1YxMS4yTDEyLjggMTdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRUb3BCb3ggPSBcIk01LDE1LjVBMC41LDAuNSAwIDAsMSA0LjUsMTZIMy41QTAuNSwwLjUgMCAwLDEgMywxNS41VjE1SDJBMSwxIDAgMCwxIDEsMTRWMTFBMSwxIDAgMCwxIDIsMTBIMjJBMSwxIDAgMCwxIDIzLDExVjE0QTEsMSAwIDAsMSAyMiwxNUgyMVYxNS41QTAuNSwwLjUgMCAwLDEgMjAuNSwxNkgxOS41QTAuNSwwLjUgMCAwLDEgMTksMTUuNVYxNUg1VjE1LjVNMywxMlYxM0g1VjEySDNNNiwxMlYxM0g4VjEySDZNMjAuNSwxMS41QTEsMSAwIDAsMCAxOS41LDEyLjVBMSwxIDAgMCwwIDIwLjUsMTMuNUExLDEgMCAwLDAgMjEuNSwxMi41QTEsMSAwIDAsMCAyMC41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0dGluZ3NIZWxwZXIgPSBcIk03LDIySDlWMjRIN1YyMk0xMSwyMkgxM1YyNEgxMVYyMk0xNSwyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFrZXIgPSBcIk03IDE2QzcgMTYuNTUgNi41NSAxNyA2IDE3UzUgMTYuNTUgNSAxNkM1IDE1LjQ1IDUuNDUgMTUgNiAxNVM3IDE1LjQ1IDcgMTZNOSAxNkM4LjQ1IDE2IDggMTYuNDUgOCAxN1M4LjQ1IDE4IDkgMTggMTAgMTcuNTUgMTAgMTcgOS41NSAxNiA5IDE2TTQgMThDMy40NSAxOCAzIDE4LjQ1IDMgMTlTMy40NSAyMCA0IDIwIDUgMTkuNTUgNSAxOSA0LjU1IDE4IDQgMThNNyAxOUM2LjQ1IDE5IDYgMTkuNDUgNiAyMFM2LjQ1IDIxIDcgMjEgOCAyMC41NSA4IDIwIDcuNTUgMTkgNyAxOU0xNS4zMyAyLjcyTDkuOCA5LjY1TDEzLjM0IDEzLjE5TDIwLjI4IDcuNjdDMjEuMTggNi45MSAyMS4yNSA1LjU0IDIwLjQxIDQuN0wxOC4zIDIuNTlDMTcuNDYgMS43NSAxNi4wOSAxLjgyIDE1LjMzIDIuNzJNOC4zOSAxMi41TDEwLjUgMTQuNkMxMC45IDE1IDExLjU0IDE1IDExLjkzIDE0LjZMMTIuNjMgMTMuOUw5LjEgMTAuMzZMOC4zOSAxMS4wN0M4IDExLjQ2IDggMTIuMDkgOC4zOSAxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYWtlck91dGxpbmUgPSBcIk0xNi44OCA0TDE2Ljg4IDRMMTkuMDMgNi4xTDEzLjUgMTAuNUwxMi41IDkuNUwxNi44NyA0TDE2Ljg4IDRNMTYuODggMkMxNi4zIDIgMTUuNzMgMi4yNCAxNS4zMyAyLjcyTDkuOCA5LjY1TDEzLjM0IDEzLjE5TDIwLjI4IDcuNjdDMjEuMTggNi45MSAyMS4yNSA1LjU0IDIwLjQxIDQuN0wxOC4zIDIuNTlDMTcuOSAyLjE5IDE3LjM5IDIgMTYuODggMk05LjEgMTAuMzZMOC4zOSAxMS4wN0M4IDExLjQ2IDggMTIuMDkgOC4zOSAxMi41TDEwLjUgMTQuNkMxMC43MSAxNC44IDEwLjk2IDE0Ljg5IDExLjIyIDE0Ljg5UzExLjczIDE0LjggMTEuOTMgMTQuNkwxMi42MyAxMy45TDkuMSAxMC4zNk02IDE1QzUuNDUgMTUgNSAxNS40NSA1IDE2QzUgMTYuNTUgNS40NSAxNyA2IDE3QzYuNTUgMTcgNyAxNi41NSA3IDE2QzcgMTUuNDUgNi41NSAxNSA2IDE1TTkgMTZDOC40NSAxNiA4IDE2LjQ1IDggMTdTOC40NSAxOCA5IDE4QzkuNTUgMTggMTAgMTcuNTUgMTAgMTdTOS41NSAxNiA5IDE2TTQgMThDMy40NSAxOCAzIDE4LjQ1IDMgMTlTMy40NSAyMCA0IDIwQzQuNTUgMjAgNSAxOS41NSA1IDE5UzQuNTUgMTggNCAxOE03IDE5QzYuNDUgMTkgNiAxOS40NSA2IDIwUzYuNDUgMjEgNyAyMUM3LjU1IDIxIDggMjAuNTUgOCAyMFM3LjU1IDE5IDcgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGUgPSBcIk0xMSwxMy41VjIxLjVIM1YxMy41SDExTTEyLDJMMTcuNSwxMUg2LjVMMTIsMk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVDaXJjbGVQbHVzID0gXCJNMTEsMTlBNiw2IDAgMCwwIDE3LDEzSDE5QTgsOCAwIDAsMSAxMSwyMUE4LDggMCAwLDEgMywxM0E4LDggMCAwLDEgMTEsNVY3QTYsNiAwIDAsMCA1LDEzQTYsNiAwIDAsMCAxMSwxOU0xOSw1SDIyVjdIMTlWMTBIMTdWN0gxNFY1SDE3VjJIMTlWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFwZU91dGxpbmUgPSBcIk0xMSwxMy41VjIxLjVIM1YxMy41SDExTTksMTUuNUg1VjE5LjVIOVYxNS41TTEyLDJMMTcuNSwxMUg2LjVMMTIsMk0xMiw1Ljg2TDEwLjA4LDlIMTMuOTJMMTIsNS44Nk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNNMTcuNSwxNUEyLjUsMi41IDAgMCwwIDE1LDE3LjVBMi41LDIuNSAwIDAsMCAxNy41LDIwQTIuNSwyLjUgMCAwLDAgMjAsMTcuNUEyLjUsMi41IDAgMCwwIDE3LjUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVPdmFsUGx1cyA9IFwiTTE5IDVIMjJWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1TTExIDRMMTIgNC4wOVY2LjE0QzExLjY4IDYuMDUgMTEuMzQgNiAxMSA2QzguMjQgNiA2IDkuMTMgNiAxM0M2IDE2Ljg3IDguMjQgMjAgMTEgMjBDMTMuNzYgMjAgMTYgMTYuODcgMTYgMTNMMTUuOTUgMTJIMTcuOTZMMTggMTNDMTggMTcuOTcgMTQuODcgMjIgMTEgMjJDNy4xMyAyMiA0IDE3Ljk3IDQgMTNDNCA4LjAzIDcuMTMgNCAxMSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUGx1cyA9IFwiTTIsMkgxMVYxMUgyVjJNMTcuNSwyQzIwLDIgMjIsNCAyMiw2LjVDMjIsOSAyMCwxMSAxNy41LDExQzE1LDExIDEzLDkgMTMsNi41QzEzLDQgMTUsMiAxNy41LDJNNi41LDE0TDExLDIySDJMNi41LDE0TTE5LDE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0SDE5VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUG9seWdvblBsdXMgPSBcIk0xNywxNS43VjEzSDE5VjE3TDEwLDIxTDMsMTRMNyw1SDExVjdIOC4zTDUuNCwxMy42TDEwLjQsMTguNkwxNywxNS43TTIyLDVWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUmVjdGFuZ2xlUGx1cyA9IFwiTTE5LDZIMjJWOEgxOVYxMUgxN1Y4SDE0VjZIMTdWM0gxOVY2TTE3LDE3VjE0SDE5VjE5SDNWNkgxMVY4SDVWMTdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVTcXVhcmVQbHVzID0gXCJNMTksNUgyMlY3SDE5VjEwSDE3VjdIMTRWNUgxN1YySDE5VjVNMTcsMTlWMTNIMTlWMjFIM1Y1SDExVjdINVYxOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFwZVNxdWFyZVJvdW5kZWRQbHVzID0gXCJNMTcgMkgxOVY1SDIyVjdIMTlWMTBIMTdWN0gxNFY1SDE3VjJNNyA1SDExVjdIN0M1LjkgNyA1IDcuOSA1IDlWMTdDNSAxOC4xMSA1LjkgMTkgNyAxOUgxNUMxNi4xMSAxOSAxNyAxOC4xMSAxNyAxN1YxM0gxOVYxN0MxOSAxOS4yMSAxNy4yMSAyMSAxNSAyMUg3QzQuNzkgMjEgMyAxOS4yMSAzIDE3VjlDMyA2Ljc5IDQuNzkgNSA3IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmUgPSBcIk0yMSwxMkwxNCw1VjlDNywxMCA0LDE1IDMsMjBDNS41LDE2LjUgOSwxNC45IDE0LDE0LjlWMTlMMjEsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmVBbGwgPSBcIk0xMSA5VjVMMTggMTJMMTEgMTlWMTQuOUM2IDE0LjkgMi41IDE2LjUgMCAyMEMxIDE1IDQgMTAgMTEgOU0xNyA4VjVMMjQgMTJMMTcgMTlWMTZMMjEgMTJMMTcgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZUFsbE91dGxpbmUgPSBcIk0xMyA5LjhWMTAuN0wxMS4zIDEwLjlDOC43IDExLjMgNi44IDEyLjMgNS40IDEzLjZDNy4xIDEzLjEgOC45IDEyLjggMTEgMTIuOEgxM1YxNC4xTDE1LjIgMTJMMTMgOS44TTExIDVMMTggMTJMMTEgMTlWMTQuOUM2IDE0LjkgMi41IDE2LjUgMCAyMEMxIDE1IDQgMTAgMTEgOU0xNyA4VjVMMjQgMTJMMTcgMTlWMTZMMjEgMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZUNpcmNsZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xNCAxNlYxM0MxMC4zOSAxMyA3LjgxIDE0LjQzIDYgMTdDNi43MiAxMy4zMyA4Ljk0IDkuNzMgMTQgOVY2TDE5IDExTDE0IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlT2ZmID0gXCJNMjAuOCAyMi43TDE1LjYgMTcuNUwxNCAxOVYxNS45TDEzLjEgMTQuOUM4LjYgMTUuMiA1LjQgMTYuOCAzIDIwLjFDMy41OCAxNi4zMSA1LjcyIDEyLjk0IDguOSAxMC44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS41TTE4LjEgMTQuOUwyMSAxMkwxNCA1VjlMMTIuNSA5LjNcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZU9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjkgMTAuOEM1LjQgMTIuOSAzLjcgMTYuNCAzIDIwQzUuMyAxNi43IDguNiAxNS4xIDEzIDE0LjlMMTQgMTUuOVYxOUwxNS42IDE3LjRMMjAuOCAyMi43TTguMyAxMy44QzguOTQgMTMuMjIgOS42NSAxMi43MSAxMC40IDEyLjNMMTEuMyAxMy4xTTE0LjIgMTFMMTIuNSA5LjNMMTQgOVY1TDIxIDEyTDE4LjEgMTQuOUwxNi43IDEzLjVMMTguMiAxMkwxNiA5LjhWMTAuN1wiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlT3V0bGluZSA9IFwiTTE0LDVWOUM3LDEwIDQsMTUgMywyMEM1LjUsMTYuNSA5LDE0LjkgMTQsMTQuOVYxOUwyMSwxMkwxNCw1TTE2LDkuODNMMTguMTcsMTJMMTYsMTQuMTdWMTIuOUgxNEMxMS45MywxMi45IDEwLjA3LDEzLjI4IDguMzQsMTMuODVDOS43NCwxMi40NiAxMS41NCwxMS4zNyAxNC4yOCwxMUwxNiwxMC43M1Y5LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlVmFyaWFudCA9IFwiTTE4LDE2LjA4QzE3LjI0LDE2LjA4IDE2LjU2LDE2LjM4IDE2LjA0LDE2Ljg1TDguOTEsMTIuN0M4Ljk2LDEyLjQ3IDksMTIuMjQgOSwxMkM5LDExLjc2IDguOTYsMTEuNTMgOC45MSwxMS4zTDE1Ljk2LDcuMTlDMTYuNSw3LjY5IDE3LjIxLDggMTgsOEEzLDMgMCAwLDAgMjEsNUEzLDMgMCAwLDAgMTgsMkEzLDMgMCAwLDAgMTUsNUMxNSw1LjI0IDE1LjA0LDUuNDcgMTUuMDksNS43TDguMDQsOS44MUM3LjUsOS4zMSA2Ljc5LDkgNiw5QTMsMyAwIDAsMCAzLDEyQTMsMyAwIDAsMCA2LDE1QzYuNzksMTUgNy41LDE0LjY5IDguMDQsMTQuMTlMMTUuMTYsMTguMzRDMTUuMTEsMTguNTUgMTUuMDgsMTguNzcgMTUuMDgsMTlDMTUuMDgsMjAuNjEgMTYuMzksMjEuOTEgMTgsMjEuOTFDMTkuNjEsMjEuOTEgMjAuOTIsMjAuNjEgMjAuOTIsMTlBMi45MiwyLjkyIDAgMCwwIDE4LDE2LjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlVmFyaWFudE91dGxpbmUgPSBcIk0xOCAxNi4wOEMxNy4yNCAxNi4wOCAxNi41NiAxNi4zOCAxNi4wNCAxNi44NUw4LjkxIDEyLjdDOC45NiAxMi40NyA5IDEyLjI0IDkgMTJTOC45NiAxMS41MyA4LjkxIDExLjNMMTUuOTYgNy4xOUMxNi41IDcuNjkgMTcuMjEgOCAxOCA4QzE5LjY2IDggMjEgNi42NiAyMSA1UzE5LjY2IDIgMTggMiAxNSAzLjM0IDE1IDVDMTUgNS4yNCAxNS4wNCA1LjQ3IDE1LjA5IDUuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOUM0LjM0IDkgMyAxMC4zNCAzIDEyUzQuMzQgMTUgNiAxNUM2Ljc5IDE1IDcuNSAxNC42OSA4LjA0IDE0LjE5TDE1LjE2IDE4LjM0QzE1LjExIDE4LjU1IDE1LjA4IDE4Ljc3IDE1LjA4IDE5QzE1LjA4IDIwLjYxIDE2LjM5IDIxLjkxIDE4IDIxLjkxUzIwLjkyIDIwLjYxIDIwLjkyIDE5QzIwLjkyIDE3LjM5IDE5LjYxIDE2LjA4IDE4IDE2LjA4TTE4IDRDMTguNTUgNCAxOSA0LjQ1IDE5IDVTMTguNTUgNiAxOCA2IDE3IDUuNTUgMTcgNSAxNy40NSA0IDE4IDRNNiAxM0M1LjQ1IDEzIDUgMTIuNTUgNSAxMlM1LjQ1IDExIDYgMTEgNyAxMS40NSA3IDEyIDYuNTUgMTMgNiAxM00xOCAyMEMxNy40NSAyMCAxNyAxOS41NSAxNyAxOVMxNy40NSAxOCAxOCAxOCAxOSAxOC40NSAxOSAxOSAxOC41NSAyMCAxOCAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFya0ZpbiA9IFwiTTIyIDE2VjE4SDIwQzE4LjYgMTggMTcuMiAxNy42IDE2IDE3QzEzLjUgMTguMyAxMC41IDE4LjMgOCAxN0M2LjggMTcuNiA1LjQgMTggNCAxOEgyVjE2SDRDNS40IDE2IDYuOCAxNS41IDggMTQuN0MxMC40IDE2LjQgMTMuNiAxNi40IDE2IDE0LjdDMTcuMiAxNS41IDE4LjYgMTYgMjAgMTZIMjJNNS4yOCAxMy43OUM1LjgyIDEzLjYzIDYuMzcgMTMuMzggNi44OSAxMy4wNEw4LjAzIDEyLjI3TDkuMTYgMTMuMDdDMTAgMTMuNjYgMTEgMTQgMTIgMTRDMTMgMTQgMTQgMTMuNjYgMTQuODQgMTMuMDdMMTUuOTcgMTIuMjdMMTcuMTEgMTMuMDRDMTcuOTMgMTMuNTkgMTguODMgMTMuOSAxOS42NyAxMy45N0MxOC4yNCA3LjQgMTIuMzcgMiA2IDJDNS42NSAyIDUuMzMgMi4xOCA1LjE1IDIuNDdDNC45NyAyLjc3IDQuOTUgMy4xNCA1LjExIDMuNDVDNy4yOCA3Ljc5IDYuNjEgMTEuMjkgNS4yOCAxMy43OU0xNiAxOC43QzEzLjYgMjAuNCAxMC40IDIwLjQgOCAxOC43QzYuOCAxOS41IDUuNCAyMCA0IDIwSDJWMjJINEM1LjQgMjIgNi44IDIxLjYgOCAyMUMxMC41IDIyLjMgMTMuNSAyMi4zIDE2IDIxQzE3LjIgMjEuNiAxOC42IDIyIDIwIDIySDIyVjIwSDIwQzE4LjYgMjAgMTcuMiAxOS41IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmtGaW5PdXRsaW5lID0gXCJNMjIgMTZWMThIMjBDMTguNiAxOCAxNy4yIDE3LjYgMTYgMTdDMTMuNSAxOC4zIDEwLjUgMTguMyA4IDE3QzYuOCAxNy42IDUuNCAxOCA0IDE4SDJWMTZINEM1LjQgMTYgNi44IDE1LjUgOCAxNC43QzEwLjQgMTYuNCAxMy42IDE2LjQgMTYgMTQuN0MxNy4yIDE1LjUgMTguNiAxNiAyMCAxNkgyMk01LjI4IDEzLjc5QzUuODIgMTMuNjMgNi4zNyAxMy4zOCA2Ljg5IDEzLjA0TDggMTIuMjhDOC42OSAxMCA4Ljc4IDcuMjcgNy41OSA0LjE0QzExLjk1IDQuODkgMTUuODkgOC42NSAxNy4zNyAxMy4xOUMxOC4xMiAxMy42NCAxOC45MSAxMy45MSAxOS42NiAxMy45N0MxOC4yNCA3LjQgMTIuMzcgMiA2IDJDNS42NSAyIDUuMzMgMi4xOCA1LjE1IDIuNDdDNC45NyAyLjc3IDQuOTUgMy4xNCA1LjExIDMuNDVDNy4yOCA3Ljc5IDYuNjEgMTEuMjkgNS4yOCAxMy43OU0xNiAxOC43QzEzLjYgMjAuNCAxMC40IDIwLjQgOCAxOC43QzYuOCAxOS41IDUuNCAyMCA0IDIwSDJWMjJINEM1LjQgMjIgNi44IDIxLjYgOCAyMUMxMC41IDIyLjMgMTMuNSAyMi4zIDE2IDIxQzE3LjIgMjEuNiAxOC42IDIyIDIwIDIySDIyVjIwSDIwQzE4LjYgMjAgMTcuMiAxOS41IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hlZXAgPSBcIk0yMCw4LjVBMi41LDIuNSAwIDAsMSAxNy41LDExQzE2LjQyLDExIDE1LjUsMTAuMzEgMTUuMTYsOS4zNkMxNC43Miw5Ljc1IDE0LjE0LDEwIDEzLjUsMTBDMTIuOTQsMTAgMTIuNDIsOS44MSAxMiw5LjVDMTEuNTgsOS44MSAxMS4wNywxMCAxMC41LDEwQzkuODYsMTAgOS4yOCw5Ljc1IDguODQsOS4zNkM4LjUsMTAuMzEgNy41OCwxMSA2LjUsMTFBMi41LDIuNSAwIDAsMSA0LDguNUM0LDcuMjYgNC45MSw2LjIzIDYuMSw2LjA0QzYuMDQsNS44NyA2LDUuNjkgNiw1LjVBMS41LDEuNSAwIDAsMSA3LjUsNEM3LjcsNCA3Ljg5LDQuMDQgOC4wNiw0LjExQzguMjMsMy40NyA4LjgxLDMgOS41LDNDOS43NSwzIDEwLDMuMDcgMTAuMTgsMy4xN0MxMC41LDIuNSAxMS4xOSwyIDEyLDJDMTIuODEsMiAxMy41LDIuNSAxMy44MiwzLjE3QzE0LDMuMDcgMTQuMjUsMyAxNC41LDNDMTUuMTksMyAxNS43NywzLjQ3IDE1Ljk0LDQuMTFDMTYuMTEsNC4wNCAxNi4zLDQgMTYuNSw0QTEuNSwxLjUgMCAwLDEgMTgsNS41QzE4LDUuNjkgMTcuOTYsNS44NyAxNy45LDYuMDRDMTkuMDksNi4yMyAyMCw3LjI2IDIwLDguNU0xMCwxMkExLDEgMCAwLDAgOSwxM0ExLDEgMCAwLDAgMTAsMTRBMSwxIDAgMCwwIDExLDEzQTEsMSAwIDAsMCAxMCwxMk0xNCwxMkExLDEgMCAwLDAgMTMsMTNBMSwxIDAgMCwwIDE0LDE0QTEsMSAwIDAsMCAxNSwxM0ExLDEgMCAwLDAgMTQsMTJNMjAuMjMsMTAuNjZDMTkuNTksMTEuNDcgMTguNjEsMTIgMTcuNSwxMkMxNy4wNSwxMiAxNi42MiwxMS45IDE2LjIxLDExLjczQzE2LjIsMTQuMjggMTUuODMsMTcuMzYgMTQuNDUsMTguOTVDMTMuOTMsMTkuNTQgMTMuMywxOS44NiAxMi41LDE5Ljk2VjE4SDExLjVWMTkuOTZDMTAuNywxOS44NiAxMC4wNywxOS41NSA5LjU1LDE4Ljk1QzguMTYsMTcuMzUgNy43OSwxNC4yOSA3Ljc4LDExLjc0QzcuMzgsMTEuOSA2Ljk1LDEyIDYuNSwxMkM1LjM5LDEyIDQuNDEsMTEuNDcgMy43NywxMC42NkMyLjg4LDExLjU1IDIsMTIgMiwxMkMyLDEyIDMsMTQgNSwxNEM1LjM2LDE0IDUuNjQsMTMuOTYgNS44OCwxMy45MUM2LjIyLDE3LjczIDcuNTgsMjIgMTIsMjJDMTYuNDIsMjIgMTcuNzgsMTcuNzMgMTguMTIsMTMuOTFDMTguMzYsMTMuOTYgMTguNjQsMTQgMTksMTRDMjEsMTQgMjIsMTIgMjIsMTJDMjIsMTIgMjEuMTIsMTEuNTUgMjAuMjMsMTAuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBY2NvdW50ID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMU0xMiw1QTMsMyAwIDAsMSAxNSw4QTMsMyAwIDAsMSAxMiwxMUEzLDMgMCAwLDEgOSw4QTMsMyAwIDAsMSAxMiw1TTE3LjEzLDE3QzE1LjkyLDE4Ljg1IDE0LjExLDIwLjI0IDEyLDIwLjkyQzkuODksMjAuMjQgOC4wOCwxOC44NSA2Ljg3LDE3QzYuNTMsMTYuNSA2LjI0LDE2IDYsMTUuNDdDNiwxMy44MiA4LjcxLDEyLjQ3IDEyLDEyLjQ3QzE1LjI5LDEyLjQ3IDE4LDEzLjc5IDE4LDE1LjQ3QzE3Ljc2LDE2IDE3LjQ3LDE2LjUgMTcuMTMsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWNjb3VudE91dGxpbmUgPSBcIk0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzQgMTIsMjNDMTcuMTYsMjEuNzQgMjEsMTYuNTUgMjEsMTFWNUwxMiwxTTEyLDMuMThMMTksNi4zVjExLjIyQzE5LDEyLjkyIDE4LjUsMTQuNjUgMTcuNjUsMTYuMTdDMTYsMTQuOTQgMTMuMjYsMTQuNSAxMiwxNC41QzEwLjc0LDE0LjUgOCwxNC45NCA2LjM1LDE2LjE3QzUuNSwxNC42NSA1LDEyLjkyIDUsMTEuMjJWNi4zTDEyLDMuMThNMTIsNkEzLjUsMy41IDAgMCwwIDguNSw5LjVBMy41LDMuNSAwIDAsMCAxMiwxM0EzLjUsMy41IDAgMCwwIDE1LjUsOS41QTMuNSwzLjUgMCAwLDAgMTIsNk0xMiw4QTEuNSwxLjUgMCAwLDEgMTMuNSw5LjVBMS41LDEuNSAwIDAsMSAxMiwxMUExLjUsMS41IDAgMCwxIDEwLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsOE0xMiwxNi41QzEzLjU3LDE2LjUgMTUuNjQsMTcuMTEgMTYuNTMsMTcuODRDMTUuMjksMTkuMzggMTMuNywyMC41NSAxMiwyMUMxMC4zLDIwLjU1IDguNzEsMTkuMzggNy40NywxNy44NEM4LjM3LDE3LjExIDEwLjQzLDE2LjUgMTIsMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBY2NvdW50VmFyaWFudCA9IFwiTTE3IDExQzE3LjMgMTEgMTcuNyAxMSAxOCAxMS4xVjYuM0wxMC41IDNMMyA2LjNWMTEuMkMzIDE1LjcgNi4yIDIwIDEwLjUgMjFDMTEuMSAyMC45IDExLjYgMjAuNyAxMi4xIDIwLjVDMTEuNCAxOS41IDExIDE4LjMgMTEgMTdDMTEgMTMuNyAxMy43IDExIDE3IDExTTE3IDEzQzE0LjggMTMgMTMgMTQuOCAxMyAxN1MxNC44IDIxIDE3IDIxIDIxIDE5LjIgMjEgMTcgMTkuMiAxMyAxNyAxM00xNyAxNC40QzE3LjYgMTQuNCAxOC4xIDE0LjkgMTguMSAxNS41QzE4LjEgMTYuMSAxNy42IDE2LjYgMTcgMTYuNlMxNS45IDE2LjEgMTUuOSAxNS41IDE2LjQgMTQuNCAxNyAxNC40TTE3IDE5LjhDMTYuMSAxOS44IDE1LjMgMTkuMyAxNC44IDE4LjZDMTQuOSAxNy45IDE2LjMgMTcuNSAxNyAxNy41UzE5LjIgMTcuOSAxOS4yIDE4LjZDMTguNyAxOS4zIDE3LjkgMTkuOCAxNyAxOS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEFjY291bnRWYXJpYW50T3V0bGluZSA9IFwiTTE3IDE0LjRDMTcuNiAxNC40IDE4LjEgMTQuOSAxOC4xIDE1LjVTMTcuNiAxNi42IDE3IDE2LjYgMTUuOSAxNi4xIDE1LjkgMTUuNSAxNi40IDE0LjQgMTcgMTQuNE0xNyAxNy41QzE2LjMgMTcuNSAxNC44IDE3LjkgMTQuOCAxOC42QzE1LjMgMTkuMyAxNi4xIDE5LjggMTcgMTkuOFMxOC43IDE5LjMgMTkuMiAxOC42QzE5LjIgMTcuOSAxNy43IDE3LjUgMTcgMTcuNU0xOCAxMS4xVjYuM0wxMC41IDNMMyA2LjNWMTEuMkMzIDE1LjcgNi4yIDIwIDEwLjUgMjFDMTEuMSAyMC45IDExLjYgMjAuNyAxMi4xIDIwLjVDMTMuMiAyMiAxNSAyMyAxNyAyM0MyMC4zIDIzIDIzIDIwLjMgMjMgMTdDMjMgMTQgMjAuOCAxMS42IDE4IDExLjFNMTEgMTdDMTEgMTcuNiAxMS4xIDE4LjEgMTEuMiAxOC42QzExIDE4LjcgMTAuNyAxOC44IDEwLjUgMTguOUM3LjMgMTcuOSA1IDE0LjcgNSAxMS4yVjcuNkwxMC41IDUuMkwxNiA3LjZWMTEuMUMxMy4yIDExLjYgMTEgMTQgMTEgMTdNMTcgMjFDMTQuOCAyMSAxMyAxOS4yIDEzIDE3UzE0LjggMTMgMTcgMTMgMjEgMTQuOCAyMSAxNyAxOS4yIDIxIDE3IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEFpcnBsYW5lID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMU0xMiw1LjY4QzEyLjUsNS42OCAxMi45NSw2LjExIDEyLjk1LDYuNjNWMTAuMTFMMTgsMTMuMjZWMTQuNTNMMTIuOTUsMTIuOTVWMTYuNDJMMTQuMjEsMTcuMzdWMTguMzJMMTIsMTcuNjhMOS43OSwxOC4zMlYxNy4zN0wxMS4wNSwxNi40MlYxMi45NUw2LDE0LjUzVjEzLjI2TDExLjA1LDEwLjExVjYuNjNDMTEuMDUsNi4xMSAxMS41LDUuNjggMTIsNS42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBaXJwbGFuZU91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTIsNS42OEMxMi41LDUuNjggMTIuOTUsNi4xMSAxMi45NSw2LjYzVjEwLjExTDE4LDEzLjI2VjE0LjUzTDEyLjk1LDEyLjk1VjE2LjQyTDE0LjIxLDE3LjM3VjE4LjMyTDEyLDE3LjY4TDkuNzksMTguMzJWMTcuMzdMMTEuMDUsMTYuNDJWMTIuOTVMNiwxNC41M1YxMy4yNkwxMS4wNSwxMC4xMVY2LjYzQzExLjA1LDYuMTEgMTEuNSw1LjY4IDEyLDUuNjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWxlcnQgPSBcIk0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzQgMTIsMjNDMTcuMTYsMjEuNzQgMjEsMTYuNTUgMjEsMTFWNU0xMSw3SDEzVjEzSDExTTExLDE1SDEzVjE3SDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWxlcnRPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTExLDdIMTNWMTNIMTFWN00xMSwxNUgxM1YxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRCdWcgPSBcIk0xMSAxM0gxM1YxNEgxMVYxM00yMSA1VjExQzIxIDE2LjUgMTcuMiAyMS43IDEyIDIzQzYuOCAyMS43IDMgMTYuNSAzIDExVjVMMTIgMUwyMSA1TTE3IDEwSDE0LjhDMTQuNiA5LjQgMTQuMiA4LjkgMTMuNyA4LjVMMTQuOSA3LjNMMTQuMiA2LjZMMTIuOCA4SDEyQzExLjggOCAxMS41IDggMTEuMyA4LjFMOS45IDYuNkw5LjEgNy40TDEwLjMgOC42QzkuOCA4LjkgOS40IDkuNCA5LjIgMTBIN1YxMUg5VjEySDdWMTNIOVYxNEg3VjE1SDkuMkM5LjYgMTYuMiAxMC43IDE3IDEyIDE3UzE0LjQgMTYuMiAxNC44IDE1SDE3VjE0SDE1VjEzSDE3VjEySDE1VjExSDE3VjEwTTExIDEySDEzVjExSDExVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEJ1Z091dGxpbmUgPSBcIk05LjkgNi42TDkuMSA3LjRMMTAuMyA4LjZDOS44IDguOSA5LjQgOS40IDkuMiAxMEg3VjExSDlWMTJIN1YxM0g5VjE0SDdWMTVIOS4yQzkuNiAxNi4yIDEwLjcgMTcgMTIgMTdTMTQuNCAxNi4yIDE0LjggMTVIMTdWMTRIMTVWMTNIMTdWMTJIMTVWMTFIMTdWMTBIMTQuOEMxNC42IDkuNCAxNC4yIDguOSAxMy43IDguNUwxNC45IDcuM0wxNC4yIDYuNkwxMi44IDhIMTJDMTEuOCA4IDExLjUgOCAxMS4zIDguMUw5LjkgNi42TTExIDExSDEzVjEySDExVjExTTExIDEzSDEzVjE0SDExVjEzTTIxIDExQzIxIDE2LjUgMTcuMiAyMS43IDEyIDIzQzYuOCAyMS43IDMgMTYuNSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1LjggMjAgMTkgMTUuNSAxOSAxMS4yVjYuM0wxMiAzLjJMNSA2LjNWMTEuMkM1IDE1LjUgOC4yIDIwIDEyIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENhciA9IFwiTTE0LjQyIDcuNUwxNiAxMUg4TDkuNDIgNy41SDE0LjQyTTkgMTJDOC40NSAxMiA4IDEyLjQ1IDggMTNTOC40NSAxNCA5IDE0IDEwIDEzLjU1IDEwIDEzIDkuNTUgMTIgOSAxMk0xNSAxMkMxNC40NSAxMiAxNCAxMi40NSAxNCAxM1MxNC40NSAxNCAxNSAxNCAxNiAxMy41NSAxNiAxMyAxNS41NSAxMiAxNSAxMk0yMSA1VjExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1TTE4IDEyTDE1Ljg0IDdDMTUuNjQgNi40MiAxNS4wOCA2IDE0LjQyIDZIOS40MkM4Ljc2IDYgOC4yIDYuNDIgOCA3TDYgMTJWMTZDNiAxNi41NSA2LjQ1IDE3IDcgMTdIOEM4LjU1IDE3IDkgMTYuNTUgOSAxNlYxNUgxNVYxNkMxNSAxNi41NSAxNS40NSAxNyAxNiAxN0gxN0MxNy41NSAxNyAxOCAxNi41NSAxOCAxNlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRDaGVjayA9IFwiTTEwLDE3TDYsMTNMNy40MSwxMS41OUwxMCwxNC4xN0wxNi41OSw3LjU4TDE4LDlNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRDaGVja091dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTAsMTdMNiwxM0w3LjQxLDExLjU5TDEwLDE0LjE3TDE2LjU5LDcuNThMMTgsOVwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENyb3NzID0gXCJNMTIsMUwzLDVWMTFDMywxNi41IDYuOCwyMS43IDEyLDIzQzE3LjIsMjEuNyAyMSwxNi41IDIxLDExVjVMMTIsMU0xNiwxMEgxM1YxOEgxMVYxMEg4VjhIMTFWNUgxM1Y4SDE2VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENyb3NzT3V0bGluZSA9IFwiTTIxLDExQzIxLDE2LjUgMTcuMiwyMS43IDEyLDIzQzYuOCwyMS43IDMsMTYuNSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDIxQzE1LjgsMjAgMTksMTUuNSAxOSwxMS4yVjYuM0wxMiwzLjJMNSw2LjNWMTEuMkM1LDE1LjUgOC4zLDIwIDEyLDIxTTE2LDlIMTNWNkgxMVY5SDhWMTFIMTFWMTlIMTNWMTFIMTZWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRFZGl0ID0gXCJNMjEuNyAxNC40TDIwLjcgMTUuNEwxOC42IDEzLjNMMTkuNiAxMi4zQzE5LjggMTIuMSAyMC4yIDEyLjEgMjAuNCAxMi4zTDIxLjcgMTMuNkMyMS45IDEzLjggMjEuOSAxNC4xIDIxLjcgMTQuNE0xMiAxOS45TDE4LjEgMTMuOEwyMC4yIDE1LjlMMTQuMSAyMkgxMlYxOS45TTEwIDE5LjFMMjEgOC4xVjVMMTIgMUwzIDVWMTFDMyAxNS44IDUuOSAyMC4zIDEwIDIyLjNWMTkuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRFZGl0T3V0bGluZSA9IFwiTTIxLjcgMTMuNkwyMC40IDEyLjNDMjAuMyAxMi4yIDIwLjIgMTIuMSAyMCAxMi4xQzE5LjkgMTIuMSAxOS43IDEyLjIgMTkuNiAxMi4zTDE4LjYgMTMuM0wyMC42IDE1LjNMMjEuNiAxNC4zQzIxLjkgMTQuMSAyMS45IDEzLjggMjEuNyAxMy42TTEyIDE5LjlWMjJIMTQuMUwyMC4yIDE1LjlMMTguMiAxMy44TDEyIDE5LjlNMTAgMjIuM0M1LjkgMjAuMyAzIDE1LjggMyAxMVY1TDEyIDFMMjEgNVY4LjFMMTkgMTAuMVY2LjNMMTIgMy4yTDUgNi4zVjExLjJDNSAxNC43IDcuMiAxOC4zIDEwIDIwLjFWMjIuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIYWxmID0gXCJNMTIgMUwzIDVWMTFDMyAxNi41IDYuOCAyMS43IDEyIDIzVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkSGFsZkZ1bGwgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOFYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIb21lID0gXCJNMTEsMTNIMTNWMTZIMTZWMTFIMThMMTIsNkw2LDExSDhWMTZIMTFWMTNNMTIsMUwyMSw1VjExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIb21lT3V0bGluZSA9IFwiTTIxLDExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDIxQzE1Ljc1LDIwIDE5LDE1LjU0IDE5LDExLjIyVjYuM0wxMiwzLjE4TDUsNi4zVjExLjIyQzUsMTUuNTQgOC4yNSwyMCAxMiwyMU0xMSwxNEgxM1YxN0gxNlYxMkgxOEwxMiw3TDYsMTJIOFYxN0gxMVYxNFwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEtleSA9IFwiTTEyLDhBMSwxIDAgMCwxIDEzLDlBMSwxIDAgMCwxIDEyLDEwQTEsMSAwIDAsMSAxMSw5QTEsMSAwIDAsMSAxMiw4TTIxLDExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDZBMywzIDAgMCwwIDksOUM5LDEwLjMxIDkuODMsMTEuNDIgMTEsMTEuODNWMThIMTNWMTZIMTVWMTRIMTNWMTEuODNDMTQuMTcsMTEuNDIgMTUsMTAuMzEgMTUsOUEzLDMgMCAwLDAgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRLZXlPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTEyLDZBMywzIDAgMCwxIDE1LDlDMTUsMTAuMzEgMTQuMTcsMTEuNDIgMTMsMTEuODNWMTRIMTVWMTZIMTNWMThIMTFWMTEuODNDOS44MywxMS40MiA5LDEwLjMxIDksOUEzLDMgMCAwLDEgMTIsNk0xMiw4QTEsMSAwIDAsMCAxMSw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsOUExLDEgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRMaW5rVmFyaWFudCA9IFwiTTEyLDFMMyw1VjExQzMsMTYuNTUgNi44NCwyMS43NCAxMiwyM0MxNy4xNiwyMS43NCAyMSwxNi41NSAyMSwxMVY1TDEyLDFNMTQuMjgsMTQuMDhMMTIuMjYsMTYuMUMxMS42NiwxNi43IDEwLjg3LDE3IDEwLjA4LDE3QzkuMjksMTcgOC41LDE2LjcgNy45LDE2LjFDNi43LDE0LjkgNi43LDEyLjk1IDcuOSwxMS43NEw5LjE1LDEwLjVMOS4xNCwxMS4wNkM5LjE0LDExLjUgOS4yMSwxMS45NSA5LjM2LDEyLjM3TDkuNDEsMTIuNUw5LjA0LDEyLjg3QzguNzYsMTMuMTUgOC42LDEzLjUzIDguNiwxMy45MkM4LjYsMTQuMzIgOC43NiwxNC42OSA5LjA0LDE0Ljk3QzkuNiwxNS41MyAxMC41NywxNS41MyAxMS4xMywxNC45N0wxMy4xNCwxMi45NkMxMy40MywxMi42NyAxMy41OCwxMi4zIDEzLjU4LDExLjkxQzEzLjU4LDExLjUgMTMuNDMsMTEuMTQgMTMuMTUsMTAuODZDMTMsMTAuNzEgMTIuOSwxMC41IDEyLjksMTAuMjlDMTIuOSwxMC4wOCAxMyw5Ljg4IDEzLjE1LDkuNzNDMTMuNDUsOS40MiAxNCw5LjQzIDE0LjI4LDkuNzNDMTQuODYsMTAuMzEgMTUuMTgsMTEuMDggMTUuMTgsMTEuOUMxNS4xOCwxMi43MyAxNC44NiwxMy41IDE0LjI4LDE0LjA4TTE3LjEsMTEuMjZMMTUuODUsMTIuNUwxNS44NiwxMS45NEMxNS44NiwxMS41IDE1Ljc5LDExLjA2IDE1LjY0LDEwLjY0TDE1LjYsMTAuNUwxNS45NiwxMC4xM0MxNi4yNSw5Ljg1IDE2LjQsOS41IDE2LjQsOS4wOEMxNi40LDguNjkgMTYuMjUsOC4zMiAxNS45Nyw4LjA0QzE1LjQsNy40NyAxNC40Myw3LjQ3IDEzLjg3LDguMDRMMTEuODYsMTAuMDVDMTEuNTgsMTAuMzMgMTEuNDIsMTAuNyAxMS40MiwxMS4xQzExLjQyLDExLjUgMTEuNTcsMTEuODYgMTEuODYsMTIuMTRDMTIsMTIuMjkgMTIuMSwxMi41IDEyLjEsMTIuNzFDMTIuMSwxMi45MyAxMiwxMy4xMyAxMS44NSwxMy4yOEMxMS43LDEzLjQ0IDExLjUsMTMuNSAxMS4yOSwxMy41QzExLjA5LDEzLjUgMTAuODgsMTMuNDMgMTAuNzIsMTMuMjhDOS41LDEyLjA4IDkuNSwxMC4xMiAxMC43Miw4LjkyTDEyLjc0LDYuOUMxMy45NSw1LjcgMTUuOSw1LjcgMTcuMSw2LjlDMTcuNjgsNy41IDE4LDguMjYgMTgsOS4wOEMxOCw5LjkgMTcuNjgsMTAuNjggMTcuMSwxMS4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRMaW5rVmFyaWFudE91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTQuMjgsOS43M0MxNC44NiwxMC4zMSAxNS4xOCwxMS4wOCAxNS4xOCwxMS45QzE1LjE4LDEyLjczIDE0Ljg2LDEzLjUgMTQuMjgsMTQuMDhMMTIuMjYsMTYuMUMxMS42NiwxNi43IDEwLjg3LDE3IDEwLjA4LDE3QzkuMjksMTcgOC41LDE2LjcgNy45LDE2LjFDNi43LDE0LjkgNi43LDEyLjk1IDcuOSwxMS43NEw5LjE1LDEwLjVMOS4xNCwxMS4wNkM5LjE0LDExLjUgOS4yMSwxMS45NSA5LjM2LDEyLjM2TDkuNCwxMi41TDkuMDQsMTIuODdDOC43NSwxMy4xNSA4LjYsMTMuNSA4LjYsMTMuOTJDOC42LDE0LjMxIDguNzUsMTQuNjggOS4wMywxNC45NkM5LjYsMTUuNTMgMTAuNTcsMTUuNTMgMTEuMTMsMTQuOTdMMTMuMTQsMTIuOTVDMTMuNDMsMTIuNjcgMTMuNTgsMTIuMyAxMy41OCwxMS45MUMxMy41OCwxMS41IDEzLjQzLDExLjE0IDEzLjE0LDEwLjg2QzEzLDEwLjcxIDEyLjksMTAuNSAxMi45LDEwLjI5QzEyLjksMTAuMDggMTMsOS44NyAxMy4xNCw5LjcyQzEzLjQ1LDkuNDIgMTQsOS40MiAxNC4yOCw5LjczTTE4LDkuMDhDMTgsOS45IDE3LjY4LDEwLjY4IDE3LjEsMTEuMjZMMTUuODUsMTIuNUwxNS44NiwxMS45NEMxNS44NiwxMS41IDE1Ljc5LDExLjA2IDE1LjY0LDEwLjY0TDE1LjU5LDEwLjVMMTUuOTYsMTAuMTNDMTYuMjUsOS44NSAxNi40LDkuNSAxNi40LDkuMDhDMTYuNCw4LjY5IDE2LjI1LDguMzIgMTUuOTYsOC4wNEMxNS40LDcuNDcgMTQuNDMsNy40NyAxMy44Nyw4LjAzTDExLjg2LDEwLjA1QzExLjU3LDEwLjMzIDExLjQyLDEwLjcgMTEuNDIsMTEuMUMxMS40MiwxMS41IDExLjU3LDExLjg2IDExLjg1LDEyLjE0QzEyLDEyLjI5IDEyLjEsMTIuNSAxMi4xLDEyLjcxQzEyLjEsMTIuOTMgMTIsMTMuMTMgMTEuODUsMTMuMjhDMTEuNywxMy40MyAxMS41LDEzLjUgMTEuMjksMTMuNUMxMS4wOSwxMy41IDEwLjg4LDEzLjQzIDEwLjcyLDEzLjI4QzkuNSwxMi4wNyA5LjUsMTAuMTIgMTAuNzIsOC45MkwxMi43NCw2LjlDMTMuOTUsNS43IDE1LjksNS43IDE3LjEsNi45QzE3LjY4LDcuNSAxOCw4LjI2IDE4LDkuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkTG9jayA9IFwiTTEyLDFMMyw1VjExQzMsMTYuNTUgNi44NCwyMS43NCAxMiwyM0MxNy4xNiwyMS43NCAyMSwxNi41NSAyMSwxMVY1TDEyLDFNMTIsN0MxMy40LDcgMTQuOCw4LjEgMTQuOCw5LjVWMTFDMTUuNCwxMSAxNiwxMS42IDE2LDEyLjNWMTUuOEMxNiwxNi40IDE1LjQsMTcgMTQuNywxN0g5LjJDOC42LDE3IDgsMTYuNCA4LDE1LjdWMTIuMkM4LDExLjYgOC42LDExIDkuMiwxMVY5LjVDOS4yLDguMSAxMC42LDcgMTIsN00xMiw4LjJDMTEuMiw4LjIgMTAuNSw4LjcgMTAuNSw5LjVWMTFIMTMuNVY5LjVDMTMuNSw4LjcgMTIuOCw4LjIgMTIsOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZExvY2tPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTE0LjgsMTFWOS41QzE0LjgsOC4xIDEzLjQsNyAxMiw3QzEwLjYsNyA5LjIsOC4xIDkuMiw5LjVWMTFDOC42LDExIDgsMTEuNiA4LDEyLjJWMTUuN0M4LDE2LjQgOC42LDE3IDkuMiwxN0gxNC43QzE1LjQsMTcgMTYsMTYuNCAxNiwxNS44VjEyLjNDMTYsMTEuNiAxNS40LDExIDE0LjgsMTFNMTMuNSwxMUgxMC41VjkuNUMxMC41LDguNyAxMS4yLDguMiAxMiw4LjJDMTIuOCw4LjIgMTMuNSw4LjcgMTMuNSw5LjVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMC41LDIxLjIyTDE5LjIzLDIyLjVMMTcsMjAuMjVDMTUuNTcsMjEuNTcgMTMuODcsMjIuNTQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNi4yN0wxLDQuMjdNMTIsMUwyMSw1VjExQzIxLDEzLjI4IDIwLjM1LDE1LjUgMTkuMjMsMTcuNDFMNS42NSwzLjgyTDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkT2ZmT3V0bGluZSA9IFwiTTEsNC4yN0wzLDYuMjdWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzEzLjg3LDIyLjU0IDE1LjU3LDIxLjU2IDE2Ljk3LDIwLjI0TDE5LjIzLDIyLjVMMjAuNSwyMS4yMkwyLjI4LDNMMSw0LjI3TTEyLDIxQzguMjUsMjAgNSwxNS41NCA1LDExLjIyVjguMjdMMTUuNTksMTguODZDMTQuNTMsMTkuODkgMTMuMywyMC42NSAxMiwyMU0yMSw1VjExQzIxLDEzLjI4IDIwLjM1LDE1LjUgMTkuMjMsMTcuNEwxNy43NywxNS45NUMxOC41NCwxNC41IDE5LDEyLjg0IDE5LDExLjIyVjYuM0wxMiwzLjE4TDcuMTYsNS4zNEw1LjY1LDMuODJMMTIsMUwyMSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZE91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkUGx1cyA9IFwiTTE5LDIwVjIyLjk3SDE3VjIwSDE0VjE4SDE3VjE1SDE5VjE4SDIyVjIwSDE5TTEyLDFMMjEsNVYxMUMyMSwxMS45IDIwLjksMTIuNzggMjAuNzEsMTMuNjVDMTkuOSwxMy4yMyAxOSwxMyAxOCwxM0E2LDYgMCAwLDAgMTIsMTlDMTIsMjAuMzYgMTIuNDUsMjEuNjIgMTMuMjIsMjIuNjJMMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFBsdXNPdXRsaW5lID0gXCJNMTksMjBWMjIuOTdIMTdWMjBIMTRWMThIMTdWMTVIMTlWMThIMjJWMjBIMTlNMjEsMTFDMjEsMTEuOSAyMC45LDEyLjc4IDIwLjcxLDEzLjY1QzIwLjEzLDEzLjM1IDE5LjUsMTMuMTUgMTguODEsMTMuMDVDMTguOTMsMTIuNDUgMTksMTEuODMgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTDEyLjMxLDIwLjkxQzEyLjUsMjEuNTMgMTIuODMsMjIuMTEgMTMuMjIsMjIuNjJMMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkUmVmcmVzaCA9IFwiTTE4IDEyQzE5IDEyIDIwIDEyLjIgMjAuOSAxMi43QzIxIDEyLjEgMjEgMTEuNiAyMSAxMVY1TDEyIDFMMyA1VjExQzMgMTYuNSA2LjggMjEuNyAxMiAyM0MxMi40IDIyLjkgMTIuNyAyMi44IDEzIDIyLjdDMTIgMjEuNSAxMS41IDIwIDExLjUgMTguNUMxMS41IDE0LjkgMTQuNCAxMiAxOCAxMk0xOCAxNC41QzE5LjEgMTQuNSAyMC4xIDE0LjkgMjAuOCAxNS43TDIyIDE0LjVWMTguNUgxOEwxOS44IDE2LjdDMTkuMyAxNi4zIDE4LjcgMTYgMTggMTZDMTYuNiAxNiAxNS41IDE3LjEgMTUuNSAxOC41UzE2LjYgMjEgMTggMjFDMTguOCAyMSAxOS41IDIwLjYgMjAgMjBIMjEuN0MyMS4xIDIxLjUgMTkuNyAyMi41IDE4IDIyLjVDMTUuOCAyMi41IDE0IDIwLjcgMTQgMTguNVMxNS44IDE0LjUgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRSZWZyZXNoT3V0bGluZSA9IFwiTTEyIDIxQzguMiAyMCA1IDE1LjUgNSAxMS4yVjYuM0wxMiAzLjJMMTkgNi4zVjEyLjFDMTkuNyAxMi4yIDIwLjMgMTIuNCAyMC45IDEyLjdDMjEgMTIuMSAyMSAxMS42IDIxIDExVjVMMTIgMUwzIDVWMTFDMyAxNi41IDYuOCAyMS43IDEyIDIzQzEyLjQgMjIuOSAxMi43IDIyLjggMTMgMjIuN0MxMi42IDIyLjIgMTIuMiAyMS42IDEyIDIxTTE4IDE0LjVDMTkuMSAxNC41IDIwLjEgMTQuOSAyMC44IDE1LjdMMjIgMTQuNVYxOC41SDE4TDE5LjggMTYuN0MxOS4zIDE2LjMgMTguNyAxNiAxOCAxNkMxNi42IDE2IDE1LjUgMTcuMSAxNS41IDE4LjVTMTYuNiAyMSAxOCAyMUMxOC44IDIxIDE5LjUgMjAuNiAyMCAyMEgyMS43QzIxLjEgMjEuNSAxOS43IDIyLjUgMTggMjIuNUMxNS44IDIyLjUgMTQgMjAuNyAxNCAxOC41UzE1LjggMTQuNSAxOCAxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFJlbW92ZSA9IFwiTTE5LjQzLDE5TDIxLjUsMjEuMTFMMjAuMTIsMjIuNUwxOC4wMywyMC40MUwxNS45MSwyMi41M0wxNC41LDIxLjExTDE2LjYxLDE5TDE0LjUsMTYuODZMMTUuODgsMTUuNDdMMTgsMTcuNTlMMjAuMTIsMTUuNDdMMjEuNTUsMTYuOUwxOS40MywxOU0xMiwxTDIxLDVWMTFDMjEsMTEuOSAyMC45LDEyLjc4IDIwLjcxLDEzLjY1QzE5LjksMTMuMjMgMTksMTMgMTgsMTNBNiw2IDAgMCwwIDEyLDE5QzEyLDIwLjM2IDEyLjQ1LDIxLjYyIDEzLjIyLDIyLjYyTDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRSZW1vdmVPdXRsaW5lID0gXCJNMTkuNDMsMTlMMjEuNSwyMS4xMUwyMC4xMiwyMi41TDE4LjAzLDIwLjQxTDE1LjkxLDIyLjUzTDE0LjUsMjEuMTFMMTYuNjEsMTlMMTQuNSwxNi44NkwxNS44OCwxNS40N0wxOCwxNy41OUwyMC4xMiwxNS40N0wyMS41NSwxNi45TDE5LjQzLDE5TTIxLDExQzIxLDExLjkgMjAuOSwxMi43OCAyMC43MSwxMy42NUMyMC4xMywxMy4zNSAxOS41LDEzLjE1IDE4LjgxLDEzLjA1QzE4LjkzLDEyLjQ1IDE5LDExLjgzIDE5LDExLjIyVjYuM0wxMiwzLjE4TDUsNi4zVjExLjIyQzUsMTUuNTQgOC4yNSwyMCAxMiwyMUwxMi4zMSwyMC45MUMxMi41LDIxLjUzIDEyLjgzLDIyLjExIDEzLjIyLDIyLjYyTDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFNlYXJjaCA9IFwiTTEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOU0xNy44NiwxOS4zMUMxNi4yMywyMS4yMiAxNC4yOCwyMi40NSAxMiwyM0M5LjQ0LDIyLjM5IDcuMywyMC45MyA1LjU4LDE4LjYzQzMuODYsMTYuMzQgMywxMy44IDMsMTFWNUwxMiwxTDIxLDVWMTFDMjEsMTMuMzkgMjAuMzYsMTUuNjEgMTkuMDgsMTcuNjdMMTYuMTcsMTQuNzZDMTYuNjksMTMuOTcgMTcsMTMgMTcsMTJBNSw1IDAgMCwwIDEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QzEzLDE3IDEzLjk3LDE2LjY5IDE0Ljc2LDE2LjE3TDE3Ljg2LDE5LjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN0YXIgPSBcIk0xMiAxTDMgNVYxMUMzIDE2LjU1IDYuODQgMjEuNzQgMTIgMjNDMTcuMTYgMjEuNzQgMjEgMTYuNTUgMjEgMTFWNUwxMiAxTTE1LjA4IDE2TDEyIDE0LjE1TDguOTMgMTZMOS43NCAxMi41TDcuMDMgMTAuMTZMMTAuNjEgOS44NUwxMiA2LjU1TDEzLjM5IDkuODRMMTYuOTcgMTAuMTVMMTQuMjYgMTIuNUwxNS4wOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRTdGFyT3V0bGluZSA9IFwiTTIxIDExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1Ljc1IDIwIDE5IDE1LjU0IDE5IDExLjIyVjYuM0wxMiAzLjE4TDUgNi4zVjExLjIyQzUgMTUuNTQgOC4yNSAyMCAxMiAyMU0xNS4wNSAxNkwxMS45NyAxNC4xNUw4LjkgMTZMOS43MSAxMi41TDcgMTAuMTZMMTAuNTggOS44NUwxMS45NyA2LjU1TDEzLjM3IDkuODRMMTYuOTUgMTAuMTVMMTQuMjMgMTIuNUwxNS4wNSAxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN1biA9IFwiTTEyIDFMMyA1VjExQzMgMTYuNTUgNi44NCAyMS43NCAxMiAyM0MxNy4xNiAyMS43NCAyMSAxNi41NSAyMSAxMVY1TDEyIDFNMTIgOC44OUMxMy42IDguODkgMTQuODkgMTAuMTggMTQuODkgMTEuNzhTMTMuNiAxNC42NyAxMiAxNC42NyA5LjExIDEzLjM3IDkuMTEgMTEuNzggMTAuNDEgOC44OSAxMiA4Ljg5TTEyIDZMMTMuMzggOEMxMi45NiA3LjgyIDEyLjUgNy43MyAxMiA3LjczUzExLjA1IDcuODIgMTAuNjIgOEwxMiA2TTcgOC44OUw5LjQgOC42OUM5LjA2IDkgOC43NCA5LjM0IDguNSA5Ljc2QzguMjUgMTAuMTggOC4xIDEwLjYyIDggMTEuMDhMNyA4Ljg5TTcgMTQuNjdMOC4wMyAxMi41QzguMTEgMTIuOTMgOC4yNyAxMy4zOCA4LjUgMTMuOEM4Ljc1IDE0LjIzIDkuMDYgMTQuNTkgOS40IDE0Ljg4TDcgMTQuNjdNMTcgOC44OUwxNiAxMS4wOEMxNS45IDEwLjYyIDE1Ljc0IDEwLjE4IDE1LjUgOS43NkMxNS4yNiA5LjM0IDE0Ljk1IDkgMTQuNiA4LjY4TDE3IDguODlNMTcgMTQuNjdMMTQuNiAxNC44N0MxNC45NCAxNC41OCAxNS4yNSAxNC4yMiAxNS41IDEzLjhDMTUuNzQgMTMuMzggMTUuODkgMTIuOTMgMTUuOTcgMTIuNUwxNyAxNC42N00xMiAxNy41NUwxMC42MSAxNS41N0MxMS4wNCAxNS43MiAxMS41IDE1LjgyIDEyIDE1LjgyQzEyLjUgMTUuODIgMTIuOTUgMTUuNzIgMTMuMzcgMTUuNTdMMTIgMTcuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkU3VuT3V0bGluZSA9IFwiTTIxIDExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1Ljc1IDIwIDE5IDE1LjU0IDE5IDExLjIyVjYuM0wxMiAzLjE4TDUgNi4zVjExLjIyQzUgMTUuNTQgOC4yNSAyMCAxMiAyMU0xMiA4Ljg5QzEzLjYgOC44OSAxNC44OSAxMC4xOCAxNC44OSAxMS43OFMxMy42IDE0LjY3IDEyIDE0LjY3IDkuMTEgMTMuMzcgOS4xMSAxMS43OCAxMC40MSA4Ljg5IDEyIDguODlNMTIgNkwxMy4zOCA4QzEyLjk2IDcuODIgMTIuNSA3LjczIDEyIDcuNzNTMTEuMDUgNy44MiAxMC42MiA4TDEyIDZNNyA4Ljg5TDkuNCA4LjY5QzkuMDYgOSA4Ljc0IDkuMzQgOC41IDkuNzZDOC4yNSAxMC4xOCA4LjEgMTAuNjIgOCAxMS4wOEw3IDguODlNNyAxNC42N0w4LjAzIDEyLjVDOC4xMSAxMi45MyA4LjI3IDEzLjM4IDguNSAxMy44QzguNzUgMTQuMjMgOS4wNiAxNC41OSA5LjQgMTQuODhMNyAxNC42N00xNyA4Ljg5TDE2IDExLjA4QzE1LjkgMTAuNjIgMTUuNzQgMTAuMTggMTUuNSA5Ljc2QzE1LjI2IDkuMzQgMTQuOTUgOSAxNC42IDguNjhMMTcgOC44OU0xNyAxNC42N0wxNC42IDE0Ljg3QzE0Ljk0IDE0LjU4IDE1LjI1IDE0LjIyIDE1LjUgMTMuOEMxNS43NCAxMy4zOCAxNS44OSAxMi45MyAxNS45NyAxMi41TDE3IDE0LjY3TTEyIDE3LjU1TDEwLjYxIDE1LjU3QzExLjA0IDE1LjcyIDExLjUgMTUuODIgMTIgMTUuODJDMTIuNSAxNS44MiAxMi45NSAxNS43MiAxMy4zNyAxNS41N0wxMiAxNy41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRTeW5jID0gXCJNMTggMTJBNi40MSA2LjQxIDAgMCAxIDIwLjg3IDEyLjY3QTExLjYzIDExLjYzIDAgMCAwIDIxIDExVjVMMTIgMUwzIDVWMTFDMyAxNi41NSA2Ljg0IDIxLjc0IDEyIDIzQzEyLjM1IDIyLjkxIDEyLjcgMjIuOCAxMyAyMi42OEE2LjQyIDYuNDIgMCAwIDEgMTEuNSAxOC41QTYuNSA2LjUgMCAwIDEgMTggMTJNMTggMTQuNVYxM0wxNS43NSAxNS4yNUwxOCAxNy41VjE2QTIuNSAyLjUgMCAwIDEgMjAuMjQgMTkuNjJMMjEuMzMgMjAuNzFBNCA0IDAgMCAwIDE4IDE0LjVNMTggMjFBMi41IDIuNSAwIDAgMSAxNS43NiAxNy4zOEwxNC42NyAxNi4yOUE0IDQgMCAwIDAgMTggMjIuNVYyNEwyMC4yNSAyMS43NUwxOCAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN5bmNPdXRsaW5lID0gXCJNMTIgMjFDOC4yNSAyMCA1IDE1LjU0IDUgMTEuMjJWNi4zTDEyIDMuMThMMTkgNi4zVjEyLjA3QTYuNDUgNi40NSAwIDAgMSAyMC45MSAxMi42N0ExMS42MyAxMS42MyAwIDAgMCAyMSAxMVY1TDEyIDFMMyA1VjExQzMgMTYuNTUgNi44NCAyMS43NCAxMiAyM0MxMi4zNSAyMi45MSAxMi43IDIyLjggMTMgMjIuNjhBNi4zIDYuMyAwIDAgMSAxMiAyMU0xOCAxNC41VjEzTDE1Ljc1IDE1LjI1TDE4IDE3LjVWMTZBMi41IDIuNSAwIDAgMSAyMC4yNCAxOS42MkwyMS4zMyAyMC43MUE0IDQgMCAwIDAgMTggMTQuNU0xOCAyMUEyLjUgMi41IDAgMCAxIDE1Ljc2IDE3LjM4TDE0LjY3IDE2LjI5QTQgNCAwIDAgMCAxOCAyMi41VjI0TDIwLjI1IDIxLjc1TDE4IDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpcFdoZWVsID0gXCJNMiwxMUw0LjA1LDExLjFDNC4zLDguODMgNS41LDYuODUgNy4yNSw1LjU2TDYuMTMsMy44NEM1Ljg2LDMuMzYgNiwyLjc1IDYuNSwyLjQ3QzcsMi4yIDcuNTksMi4zNiA3Ljg3LDIuODRMOC44LDQuNjZDOS43OCw0LjI0IDEwLjg2LDQgMTIsNEMxMy4xNCw0IDE0LjIyLDQuMjQgMTUuMiw0LjY2TDE2LjEzLDIuODRDMTYuNDEsMi4zNiAxNywyLjIgMTcuNSwyLjQ3QzE4LDIuNzUgMTguMTQsMy4zNiAxNy44NywzLjg0TDE2Ljc1LDUuNTZDMTguNSw2Ljg1IDE5LjcsOC44MyAxOS45NSwxMS4xTDIyLDExQTEsMSAwIDAsMSAyMywxMkExLDEgMCAwLDEgMjIsMTNMMTkuOTUsMTIuOUMxOS43LDE1LjE3IDE4LjUsMTcuMTUgMTYuNzUsMTguNDRMMTcuODcsMjAuMTZDMTguMTQsMjAuNjQgMTgsMjEuMjUgMTcuNSwyMS41M0MxNywyMS44IDE2LjQxLDIxLjY0IDE2LjEzLDIxLjE2TDE1LjIsMTkuMzRDMTQuMjIsMTkuNzYgMTMuMTQsMjAgMTIsMjBDMTAuODYsMjAgOS43OCwxOS43NiA4LjgsMTkuMzRMNy44NywyMS4xNkM3LjU5LDIxLjY0IDcsMjEuOCA2LjUsMjEuNTNDNiwyMS4yNSA1Ljg2LDIwLjY0IDYuMTMsMjAuMTZMNy4yNSwxOC40NEM1LjUsMTcuMTUgNC4zLDE1LjE3IDQuMDUsMTIuOUwyLDEzQTEsMSAwIDAsMSAxLDEyQTEsMSAwIDAsMSAyLDExTTkuMDcsMTEuMzVDOS4yLDEwLjc0IDkuNTMsMTAuMiAxMCw5Ljc5TDguMzQsNy4yNUM3LjExLDguMTkgNi4yNyw5LjYgNi4wNSwxMS4yTDkuMDcsMTEuMzVNMTIsOUMxMi4zMiw5IDEyLjYyLDkuMDUgMTIuOSw5LjE0TDE0LjI4LDYuNDVDMTMuNTgsNi4xNiAxMi44MSw2IDEyLDZDMTEuMTksNiAxMC40Miw2LjE2IDkuNzIsNi40NUwxMS4xLDkuMTRDMTEuMzgsOS4wNSAxMS42OCw5IDEyLDlNMTQuOTMsMTEuMzVMMTcuOTUsMTEuMkMxNy43Myw5LjYgMTYuODksOC4xOSAxNS42Niw3LjI1TDE0LDkuNzlDMTQuNDcsMTAuMiAxNC44LDEwLjc0IDE0LjkzLDExLjM1TTE0LjkzLDEyLjY1QzE0LjgsMTMuMjYgMTQuNDcsMTMuOCAxNCwxNC4yMUwxNS42NiwxNi43NUMxNi44OSwxNS44MSAxNy43MywxNC40IDE3Ljk1LDEyLjhMMTQuOTMsMTIuNjVNMTIsMTVDMTEuNjgsMTUgMTEuMzgsMTQuOTUgMTEuMDksMTQuODZMOS43MiwxNy41NUMxMC40MiwxNy44NCAxMS4xOSwxOCAxMiwxOEMxMi44MSwxOCAxMy41OCwxNy44NCAxNC4yOCwxNy41NUwxMi45MSwxNC44NkMxMi42MiwxNC45NSAxMi4zMiwxNSAxMiwxNU05LjA3LDEyLjY1TDYuMDUsMTIuOEM2LjI3LDE0LjQgNy4xMSwxNS44MSA4LjM0LDE2Ljc1TDEwLDE0LjIxQzkuNTMsMTMuOCA5LjIsMTMuMjYgOS4wNywxMi42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG9lQmFsbGV0ID0gXCJNMTIuNzggMTEuOTdDMTIuMjcgOC41NCAxMC44NiAyIDcuNTMgMlMyLjggOC41NCAyLjI4IDExLjk3QzIuMDcgMTMuNDIgMiAxNC44OSAyLjE2IDE2LjM1QzIuNSAxOS4zOSAzLjU1IDIwLjg0IDQuMjcgMjEuNUM0LjY0IDIxLjgzIDUuMTEgMjIgNS42IDIySDkuNDdDOS45NiAyMiAxMC40MyAyMS44MyAxMC44IDIxLjVDMTEuNSAyMC44NCAxMi41NSAxOS4zOSAxMi45MSAxNi4zNUMxMy4wOCAxNC44OSAxMyAxMy40MiAxMi43OCAxMS45N003LjUzIDRDNy44OSAzLjg3IDguNTkgNC43MyA5LjI3IDYuMzFMNC41OCAxMC4zM0M1LjQxIDYuMjYgNi45NCAzLjc5IDcuNTMgNE05Ljc1IDEzSDUuMzFDNS4xIDEzIDQuOTIgMTIuOTIgNC43NiAxMi44MUwxMCA4LjMzQzEwLjI5IDkuMzUgMTAuNTYgMTAuNSAxMC43NSAxMS44M0MxMC44NCAxMi40NCAxMC4zNyAxMyA5Ljc1IDEzTTIxLjc4IDExLjk3QzIxLjI3IDguNTQgMTkuODYgMiAxNi41MyAyQzE1LjA0IDIgMTMuOTQgMy4zMiAxMy4xMyA1LjA4QzEzLjUgNi4wNCAxMy44NCA3LjE0IDE0LjEzIDguMzdMMTkuMzEgMTIuODFDMTkuMTUgMTIuOTIgMTguOTcgMTMgMTguNzUgMTNIMTQuOTJDMTUuMDQgMTQuMjcgMTUuMDMgMTUuNDUgMTQuODkgMTYuNTlDMTQuNjIgMTguODcgMTQgMjAuNDUgMTMuMzIgMjEuNTNDMTMuNjggMjEuODQgMTQuMTMgMjIgMTQuNiAyMkgxOC40N0MxOC45NiAyMiAxOS40MyAyMS44MyAxOS44IDIxLjVDMjAuNSAyMC44NCAyMS41NSAxOS4zOSAyMS45MSAxNi4zNUMyMi4wOCAxNC44OSAyMiAxMy40MiAyMS43OCAxMS45N00xNC44IDYuMzFDMTUuNSA0LjczIDE2LjE4IDMuODcgMTYuNTMgNEMxNy4xMyAzLjc5IDE4LjY1IDYuMjYgMTkuNSAxMC4zM0wxNC44IDYuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUNsZWF0ID0gXCJNMjEgOEMyMC43NiA4IDIwLjUzIDggMjAuMyA4TDIwLjI1IDcuOTdDMTguMTQgNy44NCAxNi4zOCA3LjE3IDE1LjUzIDYuMjNMMTQgN0MxMy45NSA3LjEgMTMuODkgNy4xOSAxMy44NCA3LjI4QzE0LjU1IDcuODkgMTUgOC42NSAxNSA5LjVDMTUgOS44MyAxNC45MSAxMC4xNCAxNC43OSAxMC40NUwxMi45MiA4LjU4QzEyLjcgOC44MyAxMi40NyA5LjA3IDEyLjIyIDkuMjlMMTQuMjUgMTEuMzJDMTQuMDQgMTEuNTcgMTMuOCAxMS43OSAxMy41IDEyTDExLjQzIDkuOTFDMTEuMTQgMTAuMTEgMTAuODUgMTAuMjggMTAuNTUgMTAuNDVMMTIuNTggMTIuNUMxMi4yNSAxMi42MyAxMS44OSAxMi43NCAxMS41IDEyLjgyTDkuNTkgMTAuOTFDOS4yNSAxMS4wNSA4LjkxIDExLjE4IDguNTYgMTEuMjlMMTAuMjYgMTNDMTAuMTcgMTMgMTAuMDkgMTMgMTAgMTNDOC41IDEzIDcuMiAxMi41NCA2LjI4IDExLjgyQzUuNDYgMTEuOTUgNC42OCAxMiA0IDEyQzIgMTIgMiAxNSAyIDE1VjE1QzIgMTYuMTEgMi44OSAxNyA0IDE3SDRWMThDNCAxOC41NSA0LjQ1IDE5IDUgMTlTNiAxOC41NSA2IDE4VjE3SDdWMThDNyAxOC41NSA3LjQ1IDE5IDggMTlTOSAxOC41NSA5IDE4VjE3SDEwVjE4QzEwIDE4LjU1IDEwLjQ1IDE5IDExIDE5UzEyIDE4LjU1IDEyIDE4VjE3SDE1VjE4QzE1IDE4LjU1IDE1LjQ1IDE5IDE2IDE5UzE3IDE4LjU1IDE3IDE4VjE3SDE4VjE4QzE4IDE4LjU1IDE4LjQ1IDE5IDE5IDE5UzIwIDE4LjU1IDIwIDE4VjE3SDIxQzIxIDE3IDIyIDE3IDIyIDEyLjVDMjIgOSAyMSA4IDIxIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUZvcm1hbCA9IFwiTTIxLjUsOVY4SDIwLjVMMTkuNSw5SDE1TDE0LDhIMTNMNywxMkg0QTIsMiAwIDAsMCAyLDE0VjE2SDEwTDEzLDE1SDE1VjE2SDIxLjVWMTRDMjEuNSwxNCAyMiwxMyAyMiwxMS41QzIyLDEwIDIxLjUsOSAyMS41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUhlZWwgPSBcIk0zLDE4SDExLjdMMTcsMTRIMThWMThIMjBWMTRDMjAsMTQgMjEsMTIgMjEsMTBDMjEsOCAyMC41LDYgMjAuNSw2SDE4LjVMMTgsN0wxMCwxNEg4TDMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZVByaW50ID0gXCJNMTAuNzQsMTEuNzJDMTEuMjEsMTIuOTUgMTEuMTYsMTQuMjMgOS43NSwxNC43NEM2Ljg1LDE1LjgxIDYuMiwxMyA2LjE2LDEyLjg2TDEwLjc0LDExLjcyTTUuNzEsMTAuOTFMMTAuMDMsOS44NEM5Ljg0LDguNzkgMTAuMTMsNy43NCAxMC4xMyw2LjVDMTAuMTMsNC44MiA4LjgsMS41MyA2LjY4LDIuMDZDNC4yNiwyLjY2IDMuOTEsNS4zNSA0LDYuNjVDNC4xMiw3Ljk1IDUuNjQsMTAuNzMgNS43MSwxMC45MU0xNy44NSwxOS44NUMxNy44MiwyMCAxNy4xNiwyMi44IDE0LjI2LDIxLjc0QzEyLjg2LDIxLjIyIDEyLjgsMTkuOTQgMTMuMjcsMTguNzFMMTcuODUsMTkuODVNMjAsMTMuNjVDMjAuMSwxMi4zNSAxOS43Niw5LjY1IDE3LjMzLDkuMDVDMTUuMjIsOC41IDEzLjg5LDExLjgxIDEzLjg5LDEzLjVDMTMuODksMTQuNzMgMTQuMTcsMTUuNzggMTQsMTYuODNMMTguMywxNy45QzE4LjM4LDE3LjcyIDE5Ljg5LDE0Ljk0IDIwLDEzLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob2VTbmVha2VyID0gXCJNMiAxNUMyIDE1IDIgMTIgNCAxMkM0LjY4IDEyIDUuNDYgMTEuOTUgNi4yOCAxMS44MkM3LjIgMTIuNTQgOC41IDEzIDEwIDEzSDEwLjI1TDguNTYgMTEuMjlDOC45MSAxMS4xOCA5LjI1IDExLjA1IDkuNTkgMTAuOTFMMTEuNSAxMi44MkMxMS44OSAxMi43NCAxMi4yNSAxMi42MyAxMi41OCAxMi41TDEwLjU1IDEwLjQ1QzEwLjg1IDEwLjI4IDExLjE0IDEwLjExIDExLjQzIDkuOTFMMTMuNSAxMkMxMy44IDExLjc5IDE0LjA0IDExLjU2IDE0LjI1IDExLjMyTDEyLjIyIDkuMjlDMTIuNDYgOS4wNyAxMi43IDguODMgMTIuOTIgOC41OEwxNC43OSAxMC40NUMxNC45MSAxMC4xNCAxNSA5LjgzIDE1IDkuNUMxNSA4LjY1IDE0LjU1IDcuODkgMTMuODQgNy4yOEMxMy44OSA3LjE5IDEzLjk1IDcuMSAxNCA3TDE1LjUzIDYuMjNDMTYuMzggNy4xNyAxOC4xNCA3Ljg0IDIwLjI1IDcuOTdMMjAuMyA4SDIxQzIxIDggMjIgOSAyMiAxMi41QzIyIDEzLjA3IDIyIDEzLjU3IDIxLjk2IDE0SDE5QzE3LjkgMTQgMTYuNTggMTQuMjYgMTUuMyAxNC41QzE0LjEyIDE0Ljc2IDEyLjkgMTUgMTIgMTVIMk0yMSAxN0MyMSAxNyAyMS41OCAxNyAyMS44NiAxNUgxOUMxNyAxNSAxNCAxNiAxMiAxNkgyLjI4QzIuNjIgMTYuNiAzLjI2IDE3IDQgMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcHBpbmcgPSBcIk0xMiwxM0E1LDUgMCAwLDEgNyw4SDlBMywzIDAgMCwwIDEyLDExQTMsMyAwIDAsMCAxNSw4SDE3QTUsNSAwIDAsMSAxMiwxM00xMiwzQTMsMyAwIDAsMSAxNSw2SDlBMywzIDAgMCwxIDEyLDNNMTksNkgxN0E1LDUgMCAwLDAgMTIsMUE1LDUgMCAwLDAgNyw2SDVDMy44OSw2IDMsNi44OSAzLDhWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjhDMjEsNi44OSAyMC4xLDYgMTksNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG9wcGluZ011c2ljID0gXCJNMTIsM0EzLDMgMCAwLDAgOSw2SDE1QTMsMyAwIDAsMCAxMiwzTTE5LDZBMiwyIDAgMCwxIDIxLDhWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY4QzMsNi44OSAzLjg5LDYgNSw2SDdBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZIMTlNOSwxOUwxNi41LDE0TDksMTBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcHBpbmdPdXRsaW5lID0gXCJNMTkgNkgxN0MxNyAzLjIgMTQuOCAxIDEyIDFTNyAzLjIgNyA2SDVDMy45IDYgMyA2LjkgMyA4VjIwQzMgMjEuMSAzLjkgMjIgNSAyMkgxOUMyMC4xIDIyIDIxIDIxLjEgMjEgMjBWOEMyMSA2LjkgMjAuMSA2IDE5IDZNMTIgM0MxMy43IDMgMTUgNC4zIDE1IDZIOUM5IDQuMyAxMC4zIDMgMTIgM00xOSAyMEg1VjhIMTlWMjBNMTIgMTJDMTAuMyAxMiA5IDEwLjcgOSA5SDdDNyAxMS44IDkuMiAxNCAxMiAxNFMxNyAxMS44IDE3IDlIMTVDMTUgMTAuNyAxMy43IDEyIDEyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3BwaW5nU2VhcmNoID0gXCJNMTkgNkgxN0E1IDUgMCAwIDAgNyA2SDVBMiAyIDAgMCAwIDMgOFYyMEEyIDIgMCAwIDAgNSAyMkgxMi4wNUE2LjUgNi41IDAgMCAxIDkgMTYuNUE2LjQgNi40IDAgMCAxIDEwLjI1IDEyLjY4QTUgNSAwIDAgMSA3IDhIOUEzIDMgMCAwIDAgMTIgMTFIMTIuMDZBNi4yMiA2LjIyIDAgMCAxIDE0LjA2IDEwLjE2QTMgMyAwIDAgMCAxNSA4SDE3QTQuODggNC44OCAwIDAgMSAxNi41NCAxMC4wOUE2LjUgNi41IDAgMCAxIDIxIDEzLjA5VjhBMiAyIDAgMCAwIDE5IDZNOSA2QTMgMyAwIDAgMSAxNSA2TTE5LjMxIDE4LjlBNC41IDQuNSAwIDEgMCAxNy44OCAyMC4zMkwyMSAyMy4zOUwyMi4zOSAyMk0xNS41IDE5QTIuNSAyLjUgMCAxIDEgMTggMTYuNUEyLjUgMi41IDAgMCAxIDE1LjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcmUgPSBcIk0yMCAxMkgyMlYxNEgyMEMxOC42IDE0IDE3LjMgMTMuNiAxNiAxM0MxMy41IDE0LjMgMTAuNSAxNC4zIDggMTNDNi43IDEzLjYgNS40IDE0IDQgMTRIMlYxMkg0QzUuNCAxMiA2LjggMTEuNSA4IDEwLjdDMTAuNCAxMi40IDEzLjYgMTIuNCAxNiAxMC43QzE3LjIgMTEuNSAxOC42IDEyIDIwIDEyTTIwIDZIMjJWOEgyMEMxOC42IDggMTcuMyA3LjcgMTYgN0MxMy41IDguMyAxMC41IDguMyA4IDdDNi43IDcuNyA1LjQgOCA0IDhIMlY2SDRDNS40IDYgNi44IDUuNSA4IDQuN0MxMC40IDYuNCAxMy42IDYuNCAxNiA0LjdDMTcuMiA1LjUgMTguNiA2IDIwIDZNMjIgMjBIMlYxOEgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3ZlbCA9IFwiTTE1LjEsMS44MUwxMi4yNyw0LjY0QzExLjUsNS40MiAxMS41LDYuNjkgMTIuMjcsNy40N0wxMy42OCw4Ljg4TDkuMTMsMTMuNDNMNi4zMSwxMC42TDQuODksMTJDLTAuMDYsMTcgMy41LDIwLjUgMy41LDIwLjVDMy41LDIwLjUgNywyNCAxMiwxOS4wOUwxMy40MSwxNy42OEwxMC42MSwxNC44OEwxNS4xNSwxMC4zNEwxNi41NCwxMS43M0MxNy4zMiwxMi41IDE4LjU5LDEyLjUgMTkuMzcsMTEuNzNMMjIuMiw4LjlMMTUuMSwxLjgxTTE3LjkzLDEwLjI4TDE2LjU1LDguOUwxNS4xMSw3LjQ2TDEzLjcxLDYuMDZMMTUuMTIsNC42NUwxOS4zNSw4Ljg4TDE3LjkzLDEwLjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3ZlbE9mZiA9IFwiTTE1LjEsMS44MUwxMi4yNyw0LjY1QzExLjUsNS40MyAxMS41LDYuNjkgMTIuMjcsNy40N0wxMy42OCw4Ljg5TDEzLDkuNjJMMTQuNDQsMTEuMDZMMTUuMTcsMTAuMzNMMTYuNTYsMTEuNzJDMTcuMzQsMTIuNSAxOC42MSwxMi41IDE5LjM5LDExLjcyTDIyLjIyLDguODhMMTUuMSwxLjgxTTE3LjkzLDEwLjI4TDEzLjcsNi4wNkwxNS4xMSw0LjY1TDE5LjM0LDguODhMMTcuOTMsMTAuMjhNMjAuNywyMC4yNEwxOS4yOSwyMS42NUwxMS41LDEzLjg4TDEwLjUsMTQuODhMMTMuMzMsMTcuNjlMMTIsMTkuMDlDNywyNCAzLjUsMjAuNSAzLjUsMjAuNUMzLjUsMjAuNSAtMC4wNiwxNyA0Ljg5LDEyTDYuMzEsMTAuNkw5LjEzLDEzLjQzTDEwLjEzLDEyLjQzTDIuMzUsNC42OEwzLjc3LDMuMjZMMjAuNywyMC4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG93ZXIgPSBcIk0yMSwxNFYxNUMyMSwxNi45MSAxOS45MywxOC41NyAxOC4zNSwxOS40MUwxOSwyMkgxN0wxNi41LDIwQzE2LjMzLDIwIDE2LjE3LDIwIDE2LDIwSDhDNy44MywyMCA3LjY3LDIwIDcuNSwyMEw3LDIySDVMNS42NSwxOS40MUM0LjA3LDE4LjU3IDMsMTYuOTEgMywxNVYxNEgyVjEySDIwVjVBMSwxIDAgMCwwIDE5LDRDMTguNSw0IDE4LjEyLDQuMzQgMTgsNC43OUMxOC42Myw1LjMzIDE5LDYuMTMgMTksN0gxM0EzLDMgMCAwLDEgMTYsNEMxNi4wNiw0IDE2LjExLDQgMTYuMTcsNEMxNi41OCwyLjg0IDE3LjY5LDIgMTksMkEzLDMgMCAwLDEgMjIsNVYxNEgyMVYxNE0xOSwxNEg1VjE1QTMsMyAwIDAsMCA4LDE4SDE2QTMsMyAwIDAsMCAxOSwxNVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG93ZXJIZWFkID0gXCJNMjAsMjBBMSwxIDAgMCwxIDIxLDIxQTEsMSAwIDAsMSAyMCwyMkExLDEgMCAwLDEgMTksMjFBMSwxIDAgMCwxIDIwLDIwTTE2LDIwQTEsMSAwIDAsMSAxNywyMUExLDEgMCAwLDEgMTYsMjJBMSwxIDAgMCwxIDE1LDIxQTEsMSAwIDAsMSAxNiwyME0xMiwyMEExLDEgMCAwLDEgMTMsMjFBMSwxIDAgMCwxIDEyLDIyQTEsMSAwIDAsMSAxMSwyMUExLDEgMCAwLDEgMTIsMjBNOCwyMEExLDEgMCAwLDEgOSwyMUExLDEgMCAwLDEgOCwyMkExLDEgMCAwLDEgNywyMUExLDEgMCAwLDEgOCwyME00LDIwQTEsMSAwIDAsMSA1LDIxQTEsMSAwIDAsMSA0LDIyQTEsMSAwIDAsMSAzLDIxQTEsMSAwIDAsMSA0LDIwTTYsMTdBMSwxIDAgMCwxIDcsMThBMSwxIDAgMCwxIDYsMTlINkExLDEgMCAwLDEgNSwxOEExLDEgMCAwLDEgNiwxN0g2TTEwLDE3QTEsMSAwIDAsMSAxMSwxOEExLDEgMCAwLDEgMTAsMTlBMSwxIDAgMCwxIDksMThBMSwxIDAgMCwxIDEwLDE3TTE0LDE3QTEsMSAwIDAsMSAxNSwxOEExLDEgMCAwLDEgMTQsMTlBMSwxIDAgMCwxIDEzLDE4QTEsMSAwIDAsMSAxNCwxN00xOCwxN0ExLDEgMCAwLDEgMTksMThBMSwxIDAgMCwxIDE4LDE5QTEsMSAwIDAsMSAxNywxOEExLDEgMCAwLDEgMTgsMTdNOCwxNEExLDEgMCAwLDEgOSwxNUExLDEgMCAwLDEgOCwxNkExLDEgMCAwLDEgNywxNUExLDEgMCAwLDEgOCwxNE0xMiwxNEExLDEgMCAwLDEgMTMsMTVBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMSwxNUExLDEgMCAwLDEgMTIsMTRNMTYsMTRBMSwxIDAgMCwxIDE3LDE1QTEsMSAwIDAsMSAxNiwxNkExLDEgMCAwLDEgMTUsMTVBMSwxIDAgMCwxIDE2LDE0TTE5LDEySDVWMTBIMTlWMTJNMTcuOTIsOUg2LjA4QzYuNSw2LjUgOC41LDQuNSAxMSw0LjA4VjJIMTNWNC4wOEMxNS41LDQuNSAxNy41LDYuNSAxNy45Miw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNocmVkZGVyID0gXCJNNiwzVjdIOFY1SDE2VjdIMThWM0g2TTUsOEEzLDMgMCAwLDAgMiwxMVYxN0g1VjE0SDE5VjE3SDIyVjExQTMsMyAwIDAsMCAxOSw4SDVNMTgsMTBBMSwxIDAgMCwxIDE5LDExQTEsMSAwIDAsMSAxOCwxMkExLDEgMCAwLDEgMTcsMTFBMSwxIDAgMCwxIDE4LDEwTTcsMTZWMjFIOVYxNkg3TTExLDE2VjIwSDEzVjE2SDExTTE1LDE2VjIxSDE3VjE2SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNodWZmbGUgPSBcIk0xNC44MywxMy40MUwxMy40MiwxNC44MkwxNi41NSwxNy45NUwxNC41LDIwSDIwVjE0LjVMMTcuOTYsMTYuNTRMMTQuODMsMTMuNDFNMTQuNSw0TDE2LjU0LDYuMDRMNCwxOC41OUw1LjQxLDIwTDE3Ljk2LDcuNDZMMjAsOS41VjRNMTAuNTksOS4xN0w1LjQxLDRMNCw1LjQxTDkuMTcsMTAuNThMMTAuNTksOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaHVmZmxlRGlzYWJsZWQgPSBcIk0xNiw0LjVWN0g1VjlIMTZWMTEuNUwxOS41LDhNMTYsMTIuNVYxNUg1VjE3SDE2VjE5LjVMMTkuNSwxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNodWZmbGVWYXJpYW50ID0gXCJNMTcsM0wyMi4yNSw3LjVMMTcsMTJMMjIuMjUsMTYuNUwxNywyMVYxOEgxNC4yNkwxMS40NCwxNS4xOEwxMy41NiwxMy4wNkwxNS41LDE1SDE3VjEyTDE3LDlIMTUuNUw2LjUsMThIMlYxNUg1LjI2TDE0LjI2LDZIMTdWM00yLDZINi41TDkuMzIsOC44Mkw3LjIsMTAuOTRMNS4yNiw5SDJWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaHVyaWtlbiA9IFwiTTE0LjUgOS41TDEyIDJMOS41IDkuNUwyIDEyTDkuNSAxNC41TDEyIDIyTDE0LjUgMTQuNUwyMiAxMkwxNC41IDkuNU0xMiAxMy43QzExLjEgMTMuNyAxMC4zIDEzIDEwLjMgMTJDMTAuMyAxMS4xIDExIDEwLjMgMTIgMTAuM0MxMi45IDEwLjMgMTMuNyAxMSAxMy43IDEyQzEzLjcgMTIuOSAxMi45IDEzLjcgMTIgMTMuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWdtYSA9IFwiTTE4LDZIOC44M0wxNC44MywxMkw4LjgzLDE4SDE4VjIwSDZWMThMMTIsMTJMNiw2VjRIMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWdtYUxvd2VyID0gXCJNMTksMTJDMTksMTYuNDIgMTUuNjQsMjAgMTEuNSwyMEM3LjM2LDIwIDQsMTYuNDIgNCwxMkM0LDcuNTggNy4zNiw0IDExLjUsNEgyMFY2SDE2LjQ2QzE4LDcuNDcgMTksOS42MSAxOSwxMk0xMS41LDZDOC40Niw2IDYsOC42OSA2LDEyQzYsMTUuMzEgOC40NiwxOCAxMS41LDE4QzE0LjU0LDE4IDE3LDE1LjMxIDE3LDEyQzE3LDguNjkgMTQuNTQsNiAxMS41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkNhdXRpb24gPSBcIk0yLDNIMjJWMTNIMThWMjFIMTZWMTNIOFYyMUg2VjEzSDJWM00xOC45NywxMUwyMCw5Ljk3VjcuMTVMMTYuMTUsMTFIMTguOTdNMTMuMzIsMTFMMTkuMzIsNUgxNi41TDEwLjUsMTFIMTMuMzJNNy42NiwxMUwxMy42Niw1SDEwLjgzTDQuODMsMTFINy42Nk01LjE4LDVMNCw2LjE4VjlMOCw1SDUuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkRpcmVjdGlvbiA9IFwiTTExLDEySDMuNUw2LDkuNUwzLjUsN0gxMVYzTDEyLDJMMTMsM1Y3SDE4TDIwLjUsOS41TDE4LDEySDEzVjIwQTIsMiAwIDAsMSAxNSwyMkg5QTIsMiAwIDAsMSAxMSwyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduRGlyZWN0aW9uTWludXMgPSBcIk0yMC41IDkuNUwxOCAxMkgxM1YyMkg5QTIgMiAwIDAgMSAxMSAyMFYxMkgzLjVMNiA5LjVMMy41IDdIMTFWM0wxMiAyTDEzIDNWN0gxOE0yMyAxOEgxNVYyMEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduRGlyZWN0aW9uUGx1cyA9IFwiTTEzIDIwSDEzLjA5QTUuNSA1LjUgMCAwIDAgMTMuODEgMjJIOUEyIDIgMCAwIDEgMTEgMjBWMTJIMy41TDYgOS41TDMuNSA3SDExVjNMMTIgMkwxMyAzVjdIMThMMjAuNSA5LjVMMTggMTJIMTNNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkRpcmVjdGlvblJlbW92ZSA9IFwiTTEzIDIwSDEzLjA5QTUuNSA1LjUgMCAwIDAgMTMuODEgMjJIOUEyIDIgMCAwIDEgMTEgMjBWMTJIMy41TDYgOS41TDMuNSA3SDExVjNMMTIgMkwxMyAzVjdIMThMMjAuNSA5LjVMMTggMTJIMTNNMjEuMTIgMTUuNDZMMTkgMTcuNTlMMTYuODggMTUuNDZMMTUuNDYgMTYuODhMMTcuNTkgMTlMMTUuNDYgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnblBvbGUgPSBcIk0xMSAzTDEyIDJMMTMgM1YyMEMxNC4xMSAyMCAxNSAyMC45IDE1IDIySDlDOSAyMC45IDkuOSAyMCAxMSAyMFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25SZWFsRXN0YXRlID0gXCJNMTggOEg4QzYuOSA4IDYgOC45IDYgMTBWMTZDNiAxNy4xMSA2LjkgMTggOCAxOEgxOEMxOS4xMSAxOCAyMCAxNy4xMSAyMCAxNlYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4TTE0IDE2SDhWMTRIMTRWMTZNMTggMTJIOFYxMEgxOFYxMk0yMiA2SDRWMjJIMlYySDRWNEgyMlY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25UZXh0ID0gXCJNMTEsM0wxMiwyTDEzLDNWNUgyMEExLDEgMCAwLDEgMjEsNlYxNkExLDEgMCAwLDEgMjAsMTdIMTNWMjBBMiwyIDAgMCwxIDE1LDIySDlBMiwyIDAgMCwxIDExLDIwVjE3SDRBMSwxIDAgMCwxIDMsMTZWNkExLDEgMCAwLDEgNCw1SDExVjNNNiw4VjEwSDE4VjhINk02LDEyVjE0SDEzVjEySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsID0gXCJNMywyMUg2VjE4SDNNOCwyMUgxMVYxNEg4TTEzLDIxSDE2VjlIMTNNMTgsMjFIMjFWM0gxOFYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWwyZyA9IFwiTTExLDE5LjVIMlYxMy41QTMsMyAwIDAsMSA1LDEwLjVIOFY3LjVIMlY0LjVIOEEzLDMgMCAwLDEgMTEsNy41VjEwLjVBMywzIDAgMCwxIDgsMTMuNUg1VjE2LjVIMTFNMjIsMTAuNUgxNy41VjEzLjVIMTlWMTYuNUgxNlY3LjVIMjJWNC41SDE2QTMsMyAwIDAsMCAxMyw3LjVWMTYuNUEzLDMgMCAwLDAgMTYsMTkuNUgxOUEzLDMgMCAwLDAgMjIsMTYuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbDNnID0gXCJNMTEsMTYuNVYxNC4yNUMxMSwxMyAxMCwxMiA4Ljc1LDEyQzEwLDEyIDExLDExIDExLDkuNzVWNy41QTMsMyAwIDAsMCA4LDQuNUgyVjcuNUg4VjEwLjVINVYxMy41SDhWMTYuNUgyVjE5LjVIOEEzLDMgMCAwLDAgMTEsMTYuNU0yMiwxNi41VjEwLjVIMTcuNVYxMy41SDE5VjE2LjVIMTZWNy41SDIyVjQuNUgxNkEzLDMgMCAwLDAgMTMsNy41VjE2LjVBMywzIDAgMCwwIDE2LDE5LjVIMTlBMywzIDAgMCwwIDIyLDE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsNGcgPSBcIk0yMiwxNi41VjEwLjVIMTcuNVYxMy41SDE5VjE2LjVIMTZWNy41SDIyVjQuNUgxNkEzLDMgMCAwLDAgMTMsNy41VjE2LjVBMywzIDAgMCwwIDE2LDE5LjVIMTlBMywzIDAgMCwwIDIyLDE2LjVNOCwxOS41SDExVjQuNUg4VjEwLjVINVY0LjVIMlYxMy41SDhWMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWw1ZyA9IFwiTTIyLDE2LjVWMTAuNUgxNy41VjEzLjVIMTlWMTYuNUgxNlY3LjVIMjJWNC41SDE2QTMsMyAwIDAsMCAxMyw3LjVWMTYuNUEzLDMgMCAwLDAgMTYsMTkuNUgxOUEzLDMgMCAwLDAgMjIsMTYuNU0xMCw0LjVIM1YxMkwzLDEzLjVIN1YxNi41SDNWMTkuNUg4LjVBMS41LDEuNSAwIDAsMCAxMCwxOFYxMkExLjUsMS41IDAgMCwwIDguNSwxMC41SDZWNy41SDEwVjQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxDZWxsdWxhcjEgPSBcIk0xOS41LDUuNVYxOC41SDE3LjVWNS41SDE5LjVNMTIuNSwxMC41VjE4LjVIMTAuNVYxMC41SDEyLjVNMjEsNEgxNlYyMEgyMVY0TTE0LDlIOVYyMEgxNFY5TTcsMTRIMlYyMEg3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbENlbGx1bGFyMiA9IFwiTTE5LjUsNS41VjE4LjVIMTcuNVY1LjVIMTkuNU0yMSw0SDE2VjIwSDIxVjRNMTQsOUg5VjIwSDE0VjlNNywxNEgyVjIwSDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsQ2VsbHVsYXIzID0gXCJNMjEsNEgxNlYyMEgyMVY0TTE0LDlIOVYyMEgxNFY5TTcsMTRIMlYyMEg3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbENlbGx1bGFyT3V0bGluZSA9IFwiTTE5LjUsNS41VjE4LjVIMTcuNVY1LjVIMTkuNU0xMi41LDEwLjVWMTguNUgxMC41VjEwLjVIMTIuNU01LjUsMTUuNVYxOC41SDMuNVYxNS41SDUuNU0yMSw0SDE2VjIwSDIxVjRNMTQsOUg5VjIwSDE0VjlNNywxNEgyVjIwSDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsRGlzdGFuY2VWYXJpYW50ID0gXCJNNCw2VjRBMTIsMTIgMCAwLDEgMTYsMTZIMTRBMTAsMTAgMCAwLDAgNCw2TTQsMTBWOEE4LDggMCAwLDEgMTIsMTZIMTBBNiw2IDAgMCwwIDQsMTBNNCwxMkE0LDQgMCAwLDEgOCwxNkg0VjEyTTMsMThIMTlWMTZMMjIsMTlMMTksMjJWMjBIM1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxIc3BhID0gXCJNMTAuNSwxMC41SDEzLjVWNC41SDE2LjVWMTkuNUgxMy41VjEzLjVIMTAuNVYxOS41SDcuNVY0LjVIMTAuNVYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbEhzcGFQbHVzID0gXCJNMTksOFYxMUgyMlYxNEgxOVYxN0gxNlYxNEgxM1YxMUgxNlY4SDE5TTUsMTAuNUg4VjQuNUgxMVYxOS41SDhWMTMuNUg1VjE5LjVIMlY0LjVINVYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbE9mZiA9IFwiTTE4LDNWMTYuMThMMjEsMTkuMThWM0gxOE00LjI4LDVMMyw2LjI3TDEwLjczLDE0SDhWMjFIMTFWMTQuMjdMMTMsMTYuMjdWMjFIMTZWMTkuMjdMMTkuNzMsMjNMMjEsMjEuNzJMNC4yOCw1TTEzLDlWMTEuMThMMTYsMTQuMThWOUgxM00zLDE4VjIxSDZWMThIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxWYXJpYW50ID0gXCJNNCw2VjRINC4xQzEyLjksNCAyMCwxMS4xIDIwLDE5LjlWMjBIMThWMTkuOUMxOCwxMi4yIDExLjgsNiA0LDZNNCwxMFY4QTEyLDEyIDAgMCwxIDE2LDIwSDE0QTEwLDEwIDAgMCwwIDQsMTBNNCwxNFYxMkE4LDggMCAwLDEgMTIsMjBIMTBBNiw2IDAgMCwwIDQsMTRNNCwxNkE0LDQgMCAwLDEgOCwyMEg0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hdHVyZSA9IFwiTTIyLDIySDJWMjBIMjJWMjJNMi4yNiwxNi44M0w1LjA5LDE0TDIuMjYsMTEuMTdMMy42Nyw5Ljc2TDYuNSwxMi41OUw5LjMzLDkuNzZMMTAuNzQsMTEuMTdMNy45MSwxNEwxMC43NCwxNi44M0w5LjMzLDE4LjI0TDYuNSwxNS40MUwzLjY3LDE4LjI0TDIuMjYsMTYuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmF0dXJlRnJlZWhhbmQgPSBcIk0yMiwyMkgyVjIwSDIyVjIyTTYuMiwxNy4zTDUuNSwxOEw0LjEsMTYuNkwyLjcsMThMMiwxNy4zTDMuNCwxNS45TDIsMTQuNUwyLjcsMTMuOEw0LjEsMTUuMkw1LjUsMTMuOEw2LjIsMTQuNUw0LjgsMTUuOUw2LjIsMTcuM00xNi4yMiwxNC40M0MxNi4yMiwxMy44NSAxNS41LDEzLjIgMTQuMDYsMTIuNDZDMTIuMjMsMTEuNTQgMTEsMTAuNzkgMTAuMzYsMTAuMjRDOS43MSw5LjY4IDkuMzksOS4wNiA5LjM5LDguMzdDOS4zOSw2LjU5IDEwLjMsNS4xMiAxMi4xMiwzLjk1QzEzLjk0LDIuNzggMTUuNDMsMi4xOSAxNi41NywyLjE5QzE3LjMxLDIuMTkgMTcuODUsMi4zMiAxOC4xOCwyLjU4QzE4LjUsMi44MyAxOC42OCwzLjI3IDE4LjY4LDMuOUMxOC42OCw0LjE4IDE4LjU2LDQuNDIgMTguMzEsNC42M0MxOC4wNyw0LjgzIDE3Ljg3LDQuOTMgMTcuNzQsNC45M0MxNy42Myw0LjkzIDE3LjQzLDQuODMgMTcuMTMsNC42NEwxNi41NSw0LjM4QzE2LjA4LDQuMzggMTUuMTQsNC43MSAxMy43MSw1LjM4QzEyLjI5LDYuMDQgMTEuNTgsNi43OSAxMS41OCw3LjYzQzExLjU4LDguMTQgMTEuODIsOC42IDEyLjMyLDlDMTIuODIsOS40MiAxMy43MSw5LjkzIDE1LDEwLjUzQzE2LjAzLDExIDE2Ljg2LDExLjUgMTcuNSwxMi4wN0MxOC4xLDEyLjYxIDE4LjQxLDEzLjI1IDE4LjQxLDE0QzE4LjQxLDE1LjM0IDE3LjQ3LDE2LjQxIDE1LjU4LDE3LjE3QzEzLjcsMTcuOTQgMTEuOSwxOC4zMiAxMC4xOSwxOC4zMkM4Ljc1LDE4LjMyIDgsMTcuODMgOCwxNi44NkM4LDE2LjUgOC4xOSwxNi4yNyA4LjUsMTYuMTFDOC44MywxNS45NSA5LjE2LDE1Ljg3IDkuNSwxNS44N0wxMC4yNSwxNkwxMC45NywxNi4xM0MxMS45NSwxNi4xMyAxMywxNS45NyAxNC4xMywxNS42NEMxNS4yNiwxNS4zMiAxNS45NiwxNC45MSAxNi4yMiwxNC40M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYXR1cmVJbWFnZSA9IFwiTTIyLDIySDJWMjBIMjJWMjJNNi4yLDE3LjNMNC44LDE1LjlMNi4yLDE0LjVMNS41LDEzLjhMNC4xLDE1LjJMMi43LDEzLjhMMiwxNC41TDMuNCwxNS45TDIsMTcuM0wyLjcsMThMNC4xLDE2LjZMNS41LDE4TDYuMiwxNy4zTTIwLDVIMTBBMiwyIDAgMCwwIDgsN1YxNkEyLDIgMCAwLDAgMTAsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjdBMiwyIDAgMCwwIDIwLDVNMTAsMTZMMTIuNiwxMi43TDE0LjQsMTQuOUwxNi44LDExLjZMMjAsMTZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmF0dXJlVGV4dCA9IFwiTTIyLDIySDJWMjBIMjJWMjJNNi4yLDE3LjNMNC44LDE1LjlMNi4yLDE0LjVMNS41LDEzLjhMNC4xLDE1LjJMMi43LDEzLjhMMiwxNC41TDMuNCwxNS45TDIsMTcuM0wyLjcsMThMNC4xLDE2LjZMNS41LDE4TDYuMiwxNy4zTTIwLjUsM0wyMS43LDcuNEwyMC43LDcuN0MyMC4yLDYuOCAxOS44LDYgMTkuMyw1LjVDMTguNyw1IDE4LjEsNSAxNy41LDVIMTVWMTUuNUMxNSwxNiAxNSwxNi41IDE1LjMsMTYuN0MxNS42LDE2LjkgMTYuMywxNi45IDE3LDE2LjlWMTcuOUgxMVYxNi45QzExLjcsMTYuOSAxMi4zLDE2LjkgMTIuNywxNi43QzEzLDE2LjUgMTMsMTYgMTMsMTUuNVY1SDEwLjVDOS45LDUgOS4zLDUgOC43LDUuNEM4LjIsNS44IDcuNyw2LjcgNy4zLDcuNkw2LjMsNy4zTDcuNSwzSDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lsbyA9IFwiTTguNSwyQzExLjg1LDIgMTQuNiw0LjUzIDE0Ljk2LDcuNzhMMjIsMTJWMTRMMjAsMTIuOFYyMkgxOFYxMS42TDE1LDkuOFYyMkgxM1Y5SDRWMjJIMlY4LjVBNi41LDYuNSAwIDAsMSA4LjUsMk04LjUsNEM2LjU0LDQgNC44Nyw1LjI1IDQuMjYsN0gxMi43NEMxMi4xMyw1LjI1IDEwLjQ2LDQgOC41LDRNNiwxMUgxMVYxM0g2VjExTTYsMTVIMTFWMTdINlYxNU02LDE5SDExVjIxSDZWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lsdmVyd2FyZSA9IFwiTTguMSwxMy4zNEwzLjkxLDkuMTZDMi4zNSw3LjU5IDIuMzUsNS4wNiAzLjkxLDMuNUwxMC45MywxMC41TDguMSwxMy4zNE0xNC44OCwxMS41M0wxMy40MSwxM0wyMC4yOSwxOS44OEwxOC44OCwyMS4yOUwxMiwxNC40MUw1LjEyLDIxLjI5TDMuNzEsMTkuODhMMTMuNDcsMTAuMTJDMTIuNzYsOC41OSAxMy4yNiw2LjQ0IDE0Ljg1LDQuODVDMTYuNzYsMi45MyAxOS41LDIuNTcgMjAuOTYsNC4wM0MyMi40Myw1LjUgMjIuMDcsOC4yNCAyMC4xNSwxMC4xNUMxOC41NiwxMS43NCAxNi40MSwxMi4yNCAxNC44OCwxMS41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWx2ZXJ3YXJlQ2xlYW4gPSBcIk0xNSAwTDE0LjM4IDEuMzdMMTMgMkwxNC4zOCAyLjYzTDE1IDRMMTUuNjMgMi42M0wxNyAyTDE1LjYzIDEuMzdMMTUgME0xMC41IDJMOS40MSA0LjQxTDcgNS41TDkuNDEgNi41OUwxMC41IDlMMTEuNiA2LjU5TDE0IDUuNUwxMS42IDQuNDFMMTAuNSAyTTE4Ljg5IDUuMTRDMTcuNTYgNS4wNiAxNi4wNCA1LjY1IDE0Ljg0IDYuODRDMTMuMjUgOC40MyAxMi43NSAxMC41OCAxMy40NiAxMi4xMUwzLjcgMjEuODdMNS4xMSAyMy4yOEwxMiAxNi40MUwxOC44OCAyMy4yOUwyMC4yOSAyMS44OEwxMy40MSAxNUwxNC44OCAxMy41M0MxNi40MSAxNC4yNCAxOC41NiAxMy43NCAyMC4xNSAxMi4xNUMyMi4wNiAxMC4yNCAyMi40MyA3LjUgMjAuOTYgNi4wM0MyMC40MSA1LjUgMTkuNjggNS4xOSAxOC44OSA1LjE0TTMuOTEgNS41QzIuMzUgNy4wNiAyLjM1IDkuNTkgMy45MSAxMS4xNkw4LjEgMTUuMzRMMTAuOTMgMTIuNUwzLjkxIDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWx2ZXJ3YXJlRm9yayA9IFwiTTUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy4zNiwxMC4yMkwxMy4xNiwxMEMxMi4zOCw5LjIzIDEyLjM4LDcuOTcgMTMuMTYsNy4xOUwxNy41LDIuODJMMTguNDMsMy43NEwxNS4xOSw3TDE2LjE1LDcuOTRMMTkuMzksNC42OUwyMC4zMSw1LjYxTDE3LjA2LDguODVMMTgsOS44MUwyMS4yNiw2LjU2TDIyLjE4LDcuNUwxNy44MSwxMS44NEMxNy4wMywxMi42MiAxNS43NywxMi42MiAxNSwxMS44NEwxNC43OCwxMS42NEw1LjEyLDIxLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVGb3JrS25pZmUgPSBcIk0xMSw5SDlWMkg3VjlINVYySDNWOUMzLDExLjEyIDQuNjYsMTIuODQgNi43NSwxMi45N1YyMkg5LjI1VjEyLjk3QzExLjM0LDEyLjg0IDEzLDExLjEyIDEzLDlWMkgxMVY5TTE2LDZWMTRIMTguNVYyMkgyMVYyQzE4LjI0LDIgMTYsNC4yNCAxNiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVTcG9vbiA9IFwiTTE0Ljg4LDExLjUzTDUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy40NywxMC4xMkMxMi43Niw4LjU5IDEzLjI2LDYuNDQgMTQuODUsNC44NUMxNi43NiwyLjkzIDE5LjUsMi41NyAyMC45Niw0LjAzQzIyLjQzLDUuNSAyMi4wNyw4LjI0IDIwLjE1LDEwLjE1QzE4LjU2LDExLjc0IDE2LjQxLDEyLjI0IDE0Ljg4LDExLjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVWYXJpYW50ID0gXCJNOC4xLDEzLjM0TDMuOTEsOS4xNkMyLjM1LDcuNTkgMi4zNSw1LjA2IDMuOTEsMy41TDEwLjkzLDEwLjVMOC4xLDEzLjM0TTEzLjQxLDEzTDIwLjI5LDE5Ljg4TDE4Ljg4LDIxLjI5TDEyLDE0LjQxTDUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy4zNiwxMC4yMkwxMy4xNiwxMEMxMi4zOCw5LjIzIDEyLjM4LDcuOTcgMTMuMTYsNy4xOUwxNy41LDIuODJMMTguNDMsMy43NEwxNS4xOSw3TDE2LjE1LDcuOTRMMTkuMzksNC42OUwyMC4zMSw1LjYxTDE3LjA2LDguODVMMTgsOS44MUwyMS4yNiw2LjU2TDIyLjE4LDcuNUwxNy44MSwxMS44NEMxNy4wMywxMi42MiAxNS43NywxMi42MiAxNSwxMS44NEwxNC43OCwxMS42NEwxMy40MSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaW0gPSBcIk0yMCw0QTIsMiAwIDAsMCAxOCwySDEwTDQsOFYyMEEyLDIgMCAwLDAgNiwyMkgxOEMxOS4xMSwyMiAyMCwyMS4xIDIwLDIwVjRNOSwxOUg3VjE3SDlWMTlNMTcsMTlIMTVWMTdIMTdWMTlNOSwxNUg3VjExSDlWMTVNMTMsMTlIMTFWMTVIMTNWMTlNMTMsMTNIMTFWMTFIMTNWMTNNMTcsMTVIMTVWMTFIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2ltQWxlcnQgPSBcIk0xMyAxM0gxMVY3SDEzTTEzIDE3SDExVjE1SDEzTTE4IDJIMTBMNCA4VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWNEMyMCAyLjkgMTkuMSAyIDE4IDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2ltQWxlcnRPdXRsaW5lID0gXCJNMTMgMTNIMTFWN0gxM00xMyAxN0gxMVYxNUgxM00xOCA0VjIwSDZWOC44TDEwLjggNEgxOE0xOCAySDEwTDQgOFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjRDMjAgMi45IDE5LjEgMiAxOCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbU9mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjQ2IDIxLjM1QzE5LjEgMjEuNzUgMTguNTggMjIgMTggMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY4TDUuMDYgNi45NUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIwIDRDMjAgMi45IDE5LjExIDIgMTggMkgxMEw3LjYgNC40TDIwIDE2LjhWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1PZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w1LjA2IDYuOTVMNCA4VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTggMjBINlY4LjgzTDYuNDcgOC4zNkwxOCAxOS44OVYyME0xMC44MyA0SDE4VjE0LjhMMjAgMTYuOFY0QzIwIDIuOSAxOS4xMSAyIDE4IDJIMTBMNy42IDQuNEw5IDUuODFMMTAuODMgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1PdXRsaW5lID0gXCJNMTggNFYyMEg2VjguOEwxMC44IDRIMThNMTggMkgxMEw0IDhWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY0QzIwIDIuOSAxOS4xIDIgMTggMk05LjUgMTlINy41VjE3SDkuNVYxOU0xNi41IDE5SDE0LjVWMTdIMTYuNVYxOU05LjUgMTVINy41VjExSDkuNVYxNU0xMyAxOUgxMVYxNUgxM1YxOU0xMyAxM0gxMVYxMUgxM1YxM00xNi41IDE1SDE0LjVWMTFIMTYuNVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1wbGVJY29ucyA9IFwiTTE4LjI1IDE3QzE4LjI1IDE3Ljg4IDE4LjA3IDE4Ljc0IDE3LjcxIDE5LjUzSDE2LjMxQzE3LjcxIDE3LjE1IDE2LjkxIDE0LjA5IDE0LjUzIDEyLjY5QzEzLjc2IDEyLjI0IDEyLjg5IDEyIDEyIDEyQzkuMjQgMTIgNyA5Ljc2IDcgN0M3IDQuMjQgOS4yNCAyIDEyIDJDMTQuNzYgMiAxNyA0LjI0IDE3IDdIMTUuNzVDMTUuNzUgNC45MyAxNC4wNyAzLjI1IDEyIDMuMjVDOS45MyAzLjI1IDguMjUgNC45MyA4LjI1IDdDOC4yNSA5LjA3IDkuOTMgMTAuNzUgMTIgMTAuNzVDMTUuNDUgMTAuNzUgMTguMjUgMTMuNTYgMTguMjUgMTdNNi4yOSAxOS41M0M1LjkzIDE4Ljc0IDUuNzUgMTcuODcgNS43NSAxN0g3QzcgMTcuOTMgNy4yNSAxOC43OSA3LjY5IDE5LjUzSDYuMjlNMTguMjUgMjAuNzVWMjJINS43NVYyMC43NUg5LjVWMTUuNzVIOC4yNVYxNC41SDE1Ljc1VjE1Ljc1SDE0LjVWMjAuNzVIMTguMjVNMTMuMjUgMTUuNzVIMTAuNzVWMjAuNzVIMTMuMjVWMTUuNzVNMTQuNDQgNy4wN0MxNC40IDguNCAxMy4zMyA5LjQ3IDEyIDkuNUMxMC42MiA5LjQ2IDkuNTMgOC4zMiA5LjU3IDYuOTRDOS42IDUuNjEgMTAuNjcgNC41MyAxMiA0LjVDMTMuMzggNC41NCAxNC40NyA1LjY4IDE0LjQ0IDcuMDdNMTMuMjUgN0MxMy4yNSA2LjMxIDEyLjY5IDUuNzUgMTIgNS43NUMxMS4zMSA1Ljc1IDEwLjc1IDYuMzEgMTAuNzUgN0MxMC43NSA3LjY5IDExLjMxIDguMjUgMTIgOC4yNUMxMi42OSA4LjI1IDEzLjI1IDcuNjkgMTMuMjUgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaW5hV2VpYm8gPSBcIk05LjgyLDEzLjg3QzEwLjg5LDEzLjg3IDExLjc3LDE0Ljc0IDExLjc3LDE1LjgyQTEuOTUsMS45NSAwIDAsMSA5LjgyLDE3Ljc3QzguNzQsMTcuNzcgNy44NywxNi44OSA3Ljg3LDE1LjgyQzcuODcsMTQuNzQgOC43NCwxMy44NyA5LjgyLDEzLjg3TTE0LjUsMy4zNEwxNS4xOCwzLjMxQzE4Ljk0LDMuMzEgMjIsNi4zNyAyMiwxMC4xM0wyMS45NSwxMC45NUwyMC43NiwxMC41OEwyMC43OCwxMC4xM0MyMC43OCw3LjA0IDE4LjI3LDQuNTMgMTUuMTgsNC41M0wxNC44Myw0LjU0TDE0LjUsMy4zNE0xNS4zMiw2LjIzQzE3LjM4LDYuMyAxOS4wNSw4IDE5LjA4LDEwLjA2TDE3Ljg0LDkuNjhDMTcuNjUsOC41NiAxNi43OCw3LjY4IDE1LjY3LDcuNUwxNS4zMiw2LjIzTTIsMTUuNDFDMS45NywxNC44IDIuMDcsMTIuNjQgNC45NSw5Ljk3QzguMzUsNi44MSA5LjgyLDcuMDUgOS44Miw3LjA1QzkuODIsNy4wNSAxMyw2Ljc1IDExLjA2LDEwLjQ2SDExLjEzQzExLjYsOS45NiAxMi42Miw5LjIxIDE0LjY5LDlDMTYuNzcsOC43OSAxNi43NywxMC41IDE2LjUsMTEuN0MxOC4zOCwxMi42NCAxOS41NiwxNC4wMyAxOS41NiwxNS41OEMxOS41NiwxOC40IDE1LjYzLDIwLjY5IDEwLjc4LDIwLjY5SDEwLjY1TDEwLjUsMjAuNjlDNywyMC42OSA0LDE5LjQyIDIuNzEsMTcuNTlDMi4yNSwxNi45NyAyLDE2LjI5IDIsMTUuNThWMTUuNDFNOS44MiwxMS45MkM2LjU5LDExLjkyIDMuOTcsMTMuNjcgMy45NywxNS44MkMzLjk3LDE3Ljk3IDYuNTksMTkuNzIgOS44MiwxOS43MkMxMy4wNSwxOS43MiAxNS42NywxNy45NyAxNS42NywxNS44MkMxNS42NywxMy42NyAxMy4wNSwxMS45MiA5LjgyLDExLjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbmVXYXZlID0gXCJNMTYuNSwyMUMxMy41LDIxIDEyLjMxLDE2Ljc2IDExLjA1LDEyLjI4QzEwLjE0LDkuMDQgOSw1IDcuNSw1QzQuMTEsNSA0LDExLjkzIDQsMTJIMkMyLDExLjYzIDIuMDYsMyA3LjUsM0MxMC41LDMgMTEuNzEsNy4yNSAxMi45NywxMS43NEMxMy44MywxNC44IDE1LDE5IDE2LjUsMTlDMTkuOTQsMTkgMjAuMDMsMTIuMDcgMjAuMDMsMTJIMjIuMDNDMjIuMDMsMTIuMzcgMjEuOTcsMjEgMTYuNSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaXRlbWFwID0gXCJNOSwyVjhIMTFWMTFINUMzLjg5LDExIDMsMTEuODkgMywxM1YxNkgxVjIySDdWMTZINVYxM0gxMVYxNkg5VjIySDE1VjE2SDEzVjEzSDE5VjE2SDE3VjIySDIzVjE2SDIxVjEzQzIxLDExLjg5IDIwLjExLDExIDE5LDExSDEzVjhIMTVWMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVMID0gXCJNOSA3VjE3SDE1VjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaXplTSA9IFwiTTkgN0M3LjkgNyA3IDcuOSA3IDlWMTdIOVY5SDExVjE2SDEzVjlIMTVWMTdIMTdWOUMxNyA3LjkgMTYuMTEgNyAxNSA3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVMgPSBcIk0xMSA3QzkuOSA3IDkgNy45IDkgOVYxMUM5IDEyLjExIDkuOSAxMyAxMSAxM0gxM1YxNUg5VjE3SDEzQzE0LjExIDE3IDE1IDE2LjExIDE1IDE1VjEzQzE1IDExLjkgMTQuMTEgMTEgMTMgMTFIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVYbCA9IFwiTTYgN0g4TDkgOS41TDEwIDdIMTJMMTAgMTJMMTIgMTdIMTBMOSAxNC41TDggMTdINkw4IDEyTDYgN00xMyA3SDE1VjE1SDE5VjE3SDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVhzID0gXCJNNiA3SDhMOSA5LjVMMTAgN0gxMkwxMCAxMkwxMiAxN0gxMEw5IDE0LjVMOCAxN0g2TDggMTJMNiA3TTE1IDdIMTlWOUgxNVYxMUgxN0MxOC4xMSAxMSAxOSAxMS45IDE5IDEzVjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDE1QzEzLjkgMTMgMTMgMTIuMTEgMTMgMTFWOUMxMyA3LjkgMTMuOSA3IDE1IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVh4bCA9IFwiTTkgN0gxMUwxMiA5LjVMMTMgN0gxNUwxMyAxMkwxNSAxN0gxM0wxMiAxNC41TDExIDE3SDlMMTEgMTJMOSA3TTE2IDdIMThWMTVIMjJWMTdIMTZWN00yIDdINEw1IDkuNUw2IDdIOEw2IDEyTDggMTdINkw1IDE0LjVMNCAxN0gyTDQgMTJMMiA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVYeHMgPSBcIk05IDdIMTFMMTIgOS41TDEzIDdIMTVMMTMgMTJMMTUgMTdIMTNMMTIgMTQuNUwxMSAxN0g5TDExIDEyTDkgN00xOCA3SDIyVjlIMThWMTFIMjBDMjEuMTEgMTEgMjIgMTEuOSAyMiAxM1YxNUMyMiAxNi4xMSAyMS4xMSAxNyAyMCAxN0gxNlYxNUgyMFYxM0gxOEMxNi45IDEzIDE2IDEyLjExIDE2IDExVjlDMTYgNy45IDE2LjkgNyAxOCA3TTIgN0g0TDUgOS41TDYgN0g4TDYgMTJMOCAxN0g2TDUgMTQuNUw0IDE3SDJMNCAxMkwyIDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVh4eGwgPSBcIk05IDdIMTFMMTIgOS41TDEzIDdIMTVMMTMgMTJMMTUgMTdIMTNMMTIgMTQuNUwxMSAxN0g5TDExIDEyTDkgN00xNiA3SDE4VjE1SDIyVjE3SDE2VjdNOCAxNUM4IDE2LjExIDcuMTEgMTcgNiAxN0gyVjE1SDZWMTNINFYxMUg2VjlIMlY3SDZDNy4xIDcgOCA3Ljg5IDggOVYxMC41QzggMTEuMzMgNy4zMyAxMiA2LjUgMTJDNy4zMyAxMiA4IDEyLjY3IDggMTMuNVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2F0ZSA9IFwiTTIxLjEsMTYuNUMyMC4zNiwxNi4xNyAxOS41LDE2LjUgMTkuMTksMTcuMjZDMTkuMDYsMTcuNTggMTguOCwxNy44NyAxOC41LDE4SDNWMjFIMTcuOTdDMTkuNjgsMjEgMjEuMjIsMjAgMjEuODgsMTguNDFDMjIuMiwxNy42NyAyMS44NiwxNi44MSAyMS4xLDE2LjVNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrYXRlYm9hcmQgPSBcIk05IDE0LjVDOSAxNS4zMyA4LjMzIDE2IDcuNSAxNlM2IDE1LjMzIDYgMTQuNSA2LjY3IDEzIDcuNSAxMyA5IDEzLjY3IDkgMTQuNU0xNi41IDEzQzE1LjY3IDEzIDE1IDEzLjY3IDE1IDE0LjVTMTUuNjcgMTYgMTYuNSAxNkMxNy4zMyAxNiAxOCAxNS4zMyAxOCAxNC41UzE3LjMzIDEzIDE2LjUgMTNNMjEuNTkgOS4xOUMyMS4xNCA4Ljg3IDIwLjUgOC45NyAyMC4xOSA5LjQxTDIwLjA2IDkuNTlDMTkuODggOS44NSAxOS41NyAxMCAxOS4yNiAxMEw0Ljc0IDEwQzQuNDMgMTAgNC4xMyA5Ljg1IDMuOTQgOS41OUwzLjgxIDkuNDFDMy41IDguOTcgMi44NiA4Ljg3IDIuNDEgOS4xOUMxLjk2IDkuNSAxLjg3IDEwLjE1IDIuMTkgMTAuNTlMMi4zMiAxMC43N0MyLjg4IDExLjU0IDMuNzkgMTIgNC43NCAxMkgxOS4yNkMyMC4yMSAxMiAyMS4xMiAxMS41NCAyMS42OCAxMC43N0wyMS44MSAxMC41OUMyMi4xMyAxMC4xNSAyMi4wNCA5LjUgMjEuNTkgOS4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2V3TGVzcyA9IFwiTTE3LjUsMTFMMTUuNDEsMjBIMTAuNUwxMi41OSwxMUgxNy41TTIwLDlIMTFMOCwyMkgxN0wyMCw5TTQsNkw4LDJWNUgxNlY3SDhWMTBMNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrZXdNb3JlID0gXCJNMTIuNSwxMUwxMC40MSwyMEg1LjVMNy41OSwxMUgxMi41TTE1LDlINkwzLDIySDEyTDE1LDlNMjEsNkwxNywyVjVIOVY3SDE3VjEwTDIxLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpID0gXCJNMTUuMyAxOC4zTDE3IDEyLjlMMTguNCAxMy4zTDE2LjcgMTguN0wxNS4zIDE4LjNNMTcuMyA1LjJDMTguMiA1LjIgMTkgNC40IDE5IDMuNVMxOC4zIDEuOCAxNy4zIDEuOEMxNi40IDEuOCAxNS42IDIuNiAxNS42IDMuNVMxNi40IDUuMiAxNy4zIDUuMk0yMS4zIDE5LjhDMjAuNyAyMC4xIDIwLjEgMjAuNCAxOS40IDIwLjVDMTguNyAyMC42IDE4IDIwLjYgMTcuMyAyMC40TDExIDE4LjVMMTMuNCAxMS43TDEwLjkgOC43TDEzLjggNy4xQzEzLjggNy4xIDE0LjkgMTAgMTUgMTAuM1MxNS4zIDEwLjggMTUuNiAxMC45TDE5LjcgMTIuMUwyMC4yIDEwLjNMMTkuMyA5LjlMMTkuOSA3LjhMMTguNSA3LjRMMTggOS40TDE2LjggOC45TDE1LjQgNUMxNSA0LjIgMTQgMy44IDEzLjEgNC4yTDguNSA2LjdDNy42IDcuMiA3LjMgOC4zIDcuOCA5LjFDNy45IDkuMyAxMC44IDEyLjMgMTAuOCAxMi4zTDkuMSAxOEwyLjMgMTZMMiAxNy4zTDE2LjkgMjEuN0MxOC42IDIyLjIgMjAuNCAyMiAyMiAyMS4xTDIxLjMgMTkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lDcm9zc0NvdW50cnkgPSBcIk0xNSAxLjJDMTYgMS4yIDE2LjggMiAxNi44IDNTMTYgNC44IDE1IDQuOCAxMy4yIDQgMTMuMiAzIDE0IDEuMiAxNSAxLjJNMTEgMjNWMjEuN0g5LjNMMTEuNyAxNC45TDE0IDE4VjIxLjdIMTNWMjNIMjBWMjEuN0gxNS44VjE2LjVMMTMuMyAxMkwxNCA5LjJMMTUuMSAxMUgyMFY5LjFIMTYuNEwxNC40IDUuOEMxNC4xIDUuMyAxMy41IDUgMTIuOSA1QzEyLjcgNSAxMi42IDUuMSAxMi40IDUuMUw3IDYuOFYxMkg4LjhWOC4zTDExIDcuN0w3LjQgMjEuN0g0VjIzXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpV2F0ZXIgPSBcIk00LjIgMy41QzQuMiAyLjcgNC45IDEuOSA1LjggMS45QzYuNyAxLjkgNy40IDIuNiA3LjQgMy41UzYuNiA1IDUuOCA1IDQuMiA0LjMgNC4yIDMuNU0yMiAzLjlMMjEuNSAzTDEzLjUgNy4xTDE0IDhMMjIgMy45TTIwLjggMjAuM0wyMS43IDIxLjJDMjEuMSAyMS44IDIwLjUgMjIuMiAxOS44IDIyLjVTMTguMyAyMyAxNy41IDIzSDJWMjEuN0g0LjdMNi44IDE4LjJMNC41IDE1TDMuNyA3LjJDMy43IDYuMyA0LjUgNS41IDUuNCA1LjVDNS43IDUuNSA2IDUuNiA2LjIgNS43TDkuNyA4LjNMMTIgNy41TDEyLjggOS4xTDkuMyAxMC42QzkuMiAxMC41IDcuNyA5LjQgNi42IDguNUw3IDEyTDEyLjMgMTYuNUwxNCAyMS43SDE3LjVDMTguMSAyMS43IDE4LjcgMjEuNiAxOS4zIDIxLjNDMTkuOSAyMS4xIDIwLjQgMjAuNyAyMC44IDIwLjNNNyAyMS43SDEyTDEwLjQgMTcuOEw4LjEgMTUuOUw5LjMgMTguNEw3IDIxLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpcEJhY2t3YXJkID0gXCJNMjAsNVYxOUwxMywxMk02LDVWMTlINFY1TTEzLDVWMTlMNiwxMlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBCYWNrd2FyZE91dGxpbmUgPSBcIk0xOCwxNC4xN0wxNS44MywxMkwxOCw5LjgzVjE0LjE3TTIwLDE5VjVMMTMsMTJNNCwxOUg2VjVINE0xMSwxNC4xN0w4LjgzLDEyTDExLDkuODNWMTQuMTdNMTMsMTlWNUw2LDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpcEZvcndhcmQgPSBcIk00LDVWMTlMMTEsMTJNMTgsNVYxOUgyMFY1TTExLDVWMTlMMTgsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwRm9yd2FyZE91dGxpbmUgPSBcIk02LDkuODNMOC4xNywxMkw2LDE0LjE3VjkuODNNNCw1VjE5TDExLDEyTTIwLDVIMThWMTlIMjBNMTMsOS44M0wxNS4xNywxMkwxMywxNC4xN1Y5LjgzTTExLDVWMTlMMTgsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dCA9IFwiTTE2LDE4SDE4VjZIMTZNNiwxOEwxNC41LDEyTDYsNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTgsOEwxMywxMkw4LDE2TTE0LDhIMTZWMTZIMTRcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRNOCw4VjE2TDEzLDEyTTE0LDhWMTZIMTZWOFwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBOZXh0T3V0bGluZSA9IFwiTTYsMThMMTQuNSwxMkw2LDZNOCw5Ljg2TDExLjAzLDEyTDgsMTQuMTRNMTYsNkgxOFYxOEgxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBQcmV2aW91cyA9IFwiTTYsMThWNkg4VjE4SDZNOS41LDEyTDE4LDZWMThMOS41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBQcmV2aW91c0NpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTgsOEgxMFYxNkg4TTE2LDhWMTZMMTEsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwUHJldmlvdXNDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEM3LjU5LDQgNCw3LjU5IDQsMTJDNCwxNi40MSA3LjU5LDIwIDEyLDIwQzE2LjQxLDIwIDIwLDE2LjQxIDIwLDEyQzIwLDcuNTkgMTYuNDEsNCAxMiw0TTE2LDhWMTZMMTEsMTJNMTAsOFYxNkg4VjhcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwUHJldmlvdXNPdXRsaW5lID0gXCJNNiw2SDhWMThINk05LjUsMTJMMTgsMThWNk0xNiwxNC4xNEwxMi45NywxMkwxNiw5Ljg2VjE0LjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsID0gXCJNMTIsMkE5LDkgMCAwLDAgMywxMUMzLDE0LjAzIDQuNTMsMTYuODIgNywxOC40N1YyMkg5VjE5SDExVjIySDEzVjE5SDE1VjIySDE3VjE4LjQ2QzE5LjQ3LDE2LjgxIDIxLDE0IDIxLDExQTksOSAwIDAsMCAxMiwyTTgsMTFBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSA4LDE1QTIsMiAwIDAsMSA2LDEzQTIsMiAwIDAsMSA4LDExTTE2LDExQTIsMiAwIDAsMSAxOCwxM0EyLDIgMCAwLDEgMTYsMTVBMiwyIDAgMCwxIDE0LDEzQTIsMiAwIDAsMSAxNiwxMU0xMiwxNEwxMy41LDE3SDEwLjVMMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2t1bGxDcm9zc2JvbmVzID0gXCJNMTUuOCwxOC41TDIxLjgsMjAuMUwyMS40LDIyTDEyLDE5LjVMMi42LDIyTDIuMSwyMC4xTDguMSwxOC41TDIsMTYuOUwyLjUsMTVMMTEuOSwxNy41TDIxLjMsMTVMMjEuOCwxNi45TDE1LjgsMTguNU0xOCw4QzE4LDkuOCAxNy4yLDExLjMgMTYsMTIuNFYxNUgxNFYxMy43TDE0LDEzSDEzVjE1SDExVjEzSDEwVjEzLjdMMTAsMTVIOFYxMi40QzYuOCwxMS4zIDYsOS44IDYsOEE2LDYgMCAwLDEgMTIsMkE2LDYgMCAwLDEgMTgsOE0xMSw3LjVDMTEsNi43IDEwLjMsNiA5LjUsNkM4LjcsNiA4LDYuNyA4LDcuNUM4LDguMyA4LjcsOSA5LjUsOUMxMC4zLDkgMTEsOC4zIDExLDcuNU0xMywxMUwxMiw5TDExLDExSDEzTTE2LDcuNUMxNiw2LjcgMTUuMyw2IDE0LjUsNkMxMy43LDYgMTMsNi43IDEzLDcuNUMxMyw4LjMgMTMuNyw5IDE0LjUsOUMxNS4zLDkgMTYsOC4zIDE2LDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3VsbENyb3NzYm9uZXNPdXRsaW5lID0gXCJNMTUuOCwxOC41TDIxLjgsMjAuMUwyMS40LDIyTDEyLDE5LjVMMi42LDIyTDIuMSwyMC4xTDguMSwxOC41TDIsMTYuOUwyLjUsMTVMMTEuOSwxNy41TDIxLjMsMTVMMjEuOCwxNi45TDE1LjgsMTguNU05LjUsNkM4LjcsNiA4LDYuNyA4LDcuNUM4LDguMyA4LjcsOSA5LjUsOUMxMC4zLDkgMTEsOC4zIDExLDcuNUMxMSw2LjcgMTAuMyw2IDkuNSw2TTE0LjUsNkMxMy43LDYgMTMsNi43IDEzLDcuNUMxMyw4LjMgMTMuNyw5IDE0LjUsOUMxNS4zLDkgMTYsOC4zIDE2LDcuNUMxNiw2LjcgMTUuMyw2IDE0LjUsNk0xMywxMUwxMiw5TDExLDExSDEzTTEyLDFDOC4xLDEgNSw0LjEgNSw4QzUsOS45IDUuOCwxMS42IDcsMTIuOVYxNkgxN1YxMi45QzE4LjIsMTEuNiAxOSw5LjkgMTksOEMxOSw0LjEgMTUuOSwxIDEyLDFNMTUsMTJWMTRIMTRWMTJIMTNWMTRIMTFWMTJIMTBWMTRIOVYxMkg5QzcuOCwxMS4xIDcsOS43IDcsOEM3LDUuMiA5LjIsMyAxMiwzQzE0LjgsMyAxNyw1LjIgMTcsOEMxNyw5LjYgMTYuMiwxMS4xIDE1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsT3V0bGluZSA9IFwiTTgsMTVBMiwyIDAgMCwxIDYsMTNBMiwyIDAgMCwxIDgsMTFBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSA4LDE1TTEwLjUsMTdMMTIsMTRMMTMuNSwxN0gxMC41TTE2LDE1QTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTYsMTFBMiwyIDAgMCwxIDE4LDEzQTIsMiAwIDAsMSAxNiwxNU0yMiwxMUExMCwxMCAwIDAsMCAxMiwxQTEwLDEwIDAgMCwwIDIsMTFDMiwxMy44IDMuMiwxNi4zIDUsMTguMVYyMkgxOVYxOC4xQzIwLjgsMTYuMyAyMiwxMy44IDIyLDExTTE3LDIwSDE1VjE4SDEzVjIwSDExVjE4SDlWMjBIN1YxNy4yQzUuMiwxNS43IDQsMTMuNSA0LDExQTgsOCAwIDAsMSAxMiwzQTgsOCAwIDAsMSAyMCwxMUMyMCwxMy41IDE4LjgsMTUuOCAxNywxNy4yVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsU2NhbiA9IFwiTTIgMEMuOSAwIDAgLjkgMCAyVjZIMlYySDZWMEgyTTE4IDBWMkgyMlY2SDI0VjJDMjQgLjkgMjMuMSAwIDIyIDBIMThNMTIgM0M3LjYgMyA0IDYuNiA0IDExQzQgMTMuNSA1LjIgMTUuOCA3IDE3LjJWMjFIOVYxOEgxMVYyMUgxM1YxOEgxNVYyMUgxN1YxNy4yQzE4LjggMTUuNyAyMCAxMy41IDIwIDExQzIwIDYuNiAxNi40IDMgMTIgM004IDE0QzYuOSAxNCA2IDEzLjEgNiAxMlM2LjkgMTAgOCAxMCAxMCAxMC45IDEwIDEyIDkuMSAxNCA4IDE0TTEwLjUgMTZMMTIgMTNMMTMuNSAxNkgxMC41TTE2IDE0QzE0LjkgMTQgMTQgMTMuMSAxNCAxMlMxNC45IDEwIDE2IDEwIDE4IDEwLjkgMTggMTIgMTcuMSAxNCAxNiAxNE0wIDE4VjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOEgwTTIyIDE4VjIySDE4VjI0SDIyQzIzLjEgMjQgMjQgMjMuMSAyNCAyMlYxOEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3VsbFNjYW5PdXRsaW5lID0gXCJNMiAwQy45IDAgMCAuOSAwIDJWNkgyVjJINlYwSDJNMTggMFYySDIyVjZIMjRWMkMyNCAuOSAyMy4xIDAgMjIgMEgxOE05LjUgMTNDOC43IDEzIDggMTIuMyA4IDExLjVTOC43IDEwIDkuNSAxMCAxMSAxMC43IDExIDExLjUgMTAuMyAxMyA5LjUgMTNNMTEgMTVMMTIgMTNMMTMgMTVIMTFNMTQuNSAxM0MxMy43IDEzIDEzIDEyLjMgMTMgMTEuNVMxMy43IDEwIDE0LjUgMTAgMTYgMTAuNyAxNiAxMS41IDE1LjMgMTMgMTQuNSAxM00wIDE4VjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOEgwTTIyIDE4VjIySDE4VjI0SDIyQzIzLjEgMjQgMjQgMjMuMSAyNCAyMlYxOEgyMk0xMiAzQzcuNiAzIDQgNi42IDQgMTFDNCAxMyA0LjggMTQuOSA2IDE2LjNWMjFIMThWMTYuM0MxOS4yIDE0LjkgMjAgMTMuMSAyMCAxMUMyMCA2LjYgMTYuNCAzIDEyIDNNMTYgMTUuNFYxOUgxNFYxN0gxM1YxOUgxMVYxN0gxMFYxOUg4VjE1LjRDNi44IDE0LjMgNiAxMi43IDYgMTFDNiA3LjcgOC43IDUgMTIgNVMxOCA3LjcgMTggMTFDMTggMTIuOCAxNy4yIDE0LjMgMTYgMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3lwZSA9IFwiTTE4LDZDMjAuMDcsOC4wNCAyMC44NSwxMC44OSAyMC4zNiwxMy41NUMyMC43NywxNC4yNyAyMSwxNS4xMSAyMSwxNkE1LDUgMCAwLDEgMTYsMjFDMTUuMTEsMjEgMTQuMjcsMjAuNzcgMTMuNTUsMjAuMzZDMTAuODksMjAuODUgOC4wNCwyMC4wNyA2LDE4QzMuOTMsMTUuOTYgMy4xNSwxMy4xMSAzLjY0LDEwLjQ1QzMuMjMsOS43MyAzLDguODkgMyw4QTUsNSAwIDAsMSA4LDNDOC44OSwzIDkuNzMsMy4yMyAxMC40NSwzLjY0QzEzLjExLDMuMTUgMTUuOTYsMy45MyAxOCw2TTEyLjA0LDE3LjE2QzE0LjkxLDE3LjE2IDE2LjM0LDE1Ljc4IDE2LjM0LDEzLjkyQzE2LjM0LDEyLjczIDE1Ljc4LDExLjQ2IDEzLjYxLDEwLjk3TDExLjYyLDEwLjUzQzEwLjg2LDEwLjM2IDEwLDEwLjEzIDEwLDkuNDJDMTAsOC43IDEwLjYsOC4yIDExLjcsOC4yQzEzLjkzLDguMiAxMy43Miw5LjczIDE0LjgzLDkuNzNDMTUuNDEsOS43MyAxNS45MSw5LjM5IDE1LjkxLDguOEMxNS45MSw3LjQzIDEzLjcyLDYuNCAxMS44Niw2LjRDOS44NSw2LjQgNy43LDcuMjYgNy43LDkuNTRDNy43LDEwLjY0IDguMDksMTEuODEgMTAuMjUsMTIuMzVMMTIuOTQsMTMuMDNDMTMuNzUsMTMuMjMgMTMuOTUsMTMuNjggMTMuOTUsMTQuMUMxMy45NSwxNC43OCAxMy4yNywxNS40NSAxMi4wNCwxNS40NUM5LjYzLDE1LjQ1IDkuOTYsMTMuNiA4LjY3LDEzLjZDOC4wOSwxMy42IDcuNjcsMTQgNy42NywxNC41N0M3LjY3LDE1LjY4IDksMTcuMTYgMTIuMDQsMTcuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2t5cGVCdXNpbmVzcyA9IFwiTTEyLjAzLDE2LjUzQzkuMzcsMTYuNTMgOC4xOCwxNS4yMiA4LjE4LDE0LjI0QzguMTgsMTMuNzQgOC41NSwxMy4zOCA5LjA2LDEzLjM4QzEwLjIsMTMuMzggOS45MSwxNSAxMi4wMywxNUMxMy4xMiwxNSAxMy43MywxNC40MyAxMy43MywxMy44MkMxMy43MywxMy40NiAxMy41NSwxMy4wNiAxMi44MywxMi44OEwxMC40NiwxMi4yOUM4LjU1LDExLjgxIDguMiwxMC43OCA4LjIsOS44MUM4LjIsNy43OSAxMC4xLDcuMDMgMTEuODgsNy4wM0MxMy41LDcuMDMgMTUuNDYsNy45NCAxNS40Niw5LjE1QzE1LjQ2LDkuNjcgMTUsOS45NyAxNC41LDkuOTdDMTMuNSw5Ljk3IDEzLjcsOC42MiAxMS43NCw4LjYyQzEwLjc3LDguNjIgMTAuMjMsOS4wNiAxMC4yMyw5LjY5QzEwLjIzLDEwLjMyIDExLDEwLjUgMTEuNjYsMTAuNjhMMTMuNDIsMTEuMDdDMTUuMzQsMTEuNSAxNS44MywxMi42MiAxNS44MywxMy42N0MxNS44MywxNS4zMSAxNC41NywxNi41MyAxMi4wMywxNi41M00xOCw2QzIwLjA3LDguMDQgMjAuODUsMTAuODkgMjAuMzYsMTMuNTVDMjAuNzcsMTQuMjcgMjEsMTUuMTEgMjEsMTZBNSw1IDAgMCwxIDE2LDIxQzE1LjExLDIxIDE0LjI3LDIwLjc3IDEzLjU1LDIwLjM2QzEwLjg5LDIwLjg1IDguMDQsMjAuMDcgNiwxOEMzLjkzLDE1Ljk2IDMuMTUsMTMuMTEgMy42NCwxMC40NUMzLjIzLDkuNzMgMyw4Ljg5IDMsOEE1LDUgMCAwLDEgOCwzQzguODksMyA5LjczLDMuMjMgMTAuNDUsMy42NEMxMy4xMSwzLjE1IDE1Ljk2LDMuOTMgMTgsNk04LDVBMywzIDAgMCwwIDUsOEM1LDguNzkgNS4zLDkuNSA1LjgsMTAuMDRDNS4xLDEyLjI4IDUuNjMsMTQuODIgNy40LDE2LjZDOS4xOCwxOC4zNyAxMS43MiwxOC45IDEzLjk2LDE4LjJDMTQuNSwxOC43IDE1LjIxLDE5IDE2LDE5QTMsMyAwIDAsMCAxOSwxNkMxOSwxNS4yMSAxOC43LDE0LjUgMTguMiwxMy45NkMxOC45LDExLjcyIDE4LjM3LDkuMTggMTYuNiw3LjRDMTQuODIsNS42MyAxMi4yOCw1LjEgMTAuMDQsNS44QzkuNSw1LjMgOC43OSw1IDgsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFjayA9IFwiTTYsMTVBMiwyIDAgMCwxIDQsMTdBMiwyIDAgMCwxIDIsMTVBMiwyIDAgMCwxIDQsMTNINlYxNU03LDE1QTIsMiAwIDAsMSA5LDEzQTIsMiAwIDAsMSAxMSwxNVYyMEEyLDIgMCAwLDEgOSwyMkEyLDIgMCAwLDEgNywyMFYxNU05LDdBMiwyIDAgMCwxIDcsNUEyLDIgMCAwLDEgOSwzQTIsMiAwIDAsMSAxMSw1VjdIOU05LDhBMiwyIDAgMCwxIDExLDEwQTIsMiAwIDAsMSA5LDEySDRBMiwyIDAgMCwxIDIsMTBBMiwyIDAgMCwxIDQsOEg5TTE3LDEwQTIsMiAwIDAsMSAxOSw4QTIsMiAwIDAsMSAyMSwxMEEyLDIgMCAwLDEgMTksMTJIMTdWMTBNMTYsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxMFY1QTIsMiAwIDAsMSAxNCwzQTIsMiAwIDAsMSAxNiw1VjEwTTE0LDE4QTIsMiAwIDAsMSAxNiwyMEEyLDIgMCAwLDEgMTQsMjJBMiwyIDAgMCwxIDEyLDIwVjE4SDE0TTE0LDE3QTIsMiAwIDAsMSAxMiwxNUEyLDIgMCAwLDEgMTQsMTNIMTlBMiwyIDAgMCwxIDIxLDE1QTIsMiAwIDAsMSAxOSwxN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFzaEZvcndhcmQgPSBcIk03IDIxTDE0LjkgM0gxN0w5LjEgMjFIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFzaEZvcndhcmRCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNOS4zIDE5SDdMMTQuNyA1SDE3TDkuMyAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGVlcCA9IFwiTTIzLDEySDE3VjEwTDIwLjM5LDZIMTdWNEgyM1Y2TDE5LjYyLDEwSDIzVjEyTTE1LDE2SDlWMTRMMTIuMzksMTBIOVY4SDE1VjEwTDExLjYyLDE0SDE1VjE2TTcsMjBIMVYxOEw0LjM5LDE0SDFWMTJIN1YxNEwzLjYyLDE4SDdWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xlZXBPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDEyLjczLDE2SDlWMTRMOS43OSwxMy4wNkwyLDUuMjdNMjMsMTJIMTdWMTBMMjAuMzksNkgxN1Y0SDIzVjZMMTkuNjIsMTBIMjNWMTJNOS44Miw4SDE1VjEwTDEzLjU0LDExLjcyTDkuODIsOE03LDIwSDFWMThMNC4zOSwxNEgxVjEySDdWMTRMMy42MiwxOEg3VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNsaWRlID0gXCJNMTQuODMgMTUuNDVDMTQuNDcgMTQuOSAxNC4xOCAxNC4zOSAxMy45MSAxMy45MkMxMi43NCAxMS45MSAxMS43OSAxMC41NSA5IDEwLjEzVjUuNUM5IDMuNTcgNy40MyAyIDUuNSAyUzIgMy41NyAyIDUuNVYyMkg0VjIwSDdWMjJIOVYxMi4xNkMxMC43NiAxMi41IDExLjI5IDEzLjM5IDEyLjE3IDE0LjkyQzEyLjQ2IDE1LjQzIDEyLjc4IDE1Ljk3IDEzLjE3IDE2LjU2QzE1LjQxIDE5LjkyIDE3LjY3IDIyIDIyIDIyVjIwQzE4LjUzIDIwIDE2LjggMTguNCAxNC44MyAxNS40NU01LjUgNEM2LjMzIDQgNyA0LjY3IDcgNS41VjEwSDRWNS41QzQgNC42NyA0LjY3IDQgNS41IDRNNCAxOFYxNkg3VjE4SDRNNyAxNEg0VjEySDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xvcGVEb3duaGlsbCA9IFwiTTIyLDE5VjIySDJWMTNMMjIsMTlNMTkuMDksNy41TDE4LjI1LDEwLjI2TDguMTMsNy4yNkM4LjA2LDUuNjYgNi43LDQuNDIgNS4xLDQuNUMzLjUsNC41NyAyLjI2LDUuOTMgMi4zNCw3LjUzQzIuNDEsOS4xMyAzLjc3LDEwLjM2IDUuMzcsMTAuMjlDNi4yNCwxMC4yNSA3LjA1LDkuODIgNy41Nyw5LjExTDE3LjY5LDEyLjExTDE2Ljg1LDE0Ljg5TDIxLjY3LDEyLjI5TDE5LjA5LDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbG9wZVVwaGlsbCA9IFwiTTIyLDEzVjIySDJWMTlMMjIsMTNNMjEuNjgsNy4wNkwxNi44Niw0LjQ2TDE3LjcsNy4yNEw3LjU4LDEwLjI0QzYuNjMsOC45NSA0LjgyLDguNjcgMy41Myw5LjYyQzIuMjQsMTAuNTcgMS45NiwxMi4zOCAyLjkxLDEzLjY3QzMuODUsMTQuOTcgNS42NywxNS4yNCA2Ljk2LDE0LjI5QzcuNjcsMTMuNzggOC4xLDEyLjk3IDguMTQsMTIuMDlMMTguMjYsOS4wOUwxOS4xLDExLjg3TDIxLjY4LDcuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xvdE1hY2hpbmUgPSBcIk01IDEyTDcgOFY3SDRWOEg2TDQgMTJNOSAxMkwxMSA4VjdIOFY4SDEwTDggMTJNMTMgMTJMMTUgOFY3SDEyVjhIMTRMMTIgMTJNMjEgMkMxOS45IDIgMTkgMi45IDE5IDRDMTkgNC43IDE5LjQgNS40IDIwIDUuN1YxN0gxN1YxNUMxNy42IDE1IDE4IDE0LjYgMTggMTRWNUMxOCA0LjQgMTcuNiA0IDE3IDRIMTMuMkMxMi40IDIuOCAxMSAyIDkuNSAyUzYuNiAyLjggNS44IDRIMkMxLjQgNCAxIDQuNCAxIDVWMTRDMSAxNC42IDEuNCAxNSAyIDE1VjIySDE3VjE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1LjdDMjIuNiA1LjQgMjMgNC43IDIzIDRDMjMgMi45IDIyLjEgMiAyMSAyTTEzIDE5SDZWMTdIMTNWMTlNMTYgMTNIM1Y2SDE2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNsb3RNYWNoaW5lT3V0bGluZSA9IFwiTTUgMTJMNyA4VjdINFY4SDZMNCAxMk05IDEyTDExIDhWN0g4VjhIMTBMOCAxMk0xMyAxMkwxNSA4VjdIMTJWOEgxNEwxMiAxMk0yMSAyQzE5LjkgMiAxOSAyLjkgMTkgNEMxOSA0LjcgMTkuNCA1LjQgMjAgNS43VjE3SDE3VjE1QzE3LjYgMTUgMTggMTQuNiAxOCAxNFY1QzE4IDQuNCAxNy42IDQgMTcgNEgxMy4yQzEyLjQgMi44IDExIDIgOS41IDJTNi42IDIuOCA1LjggNEgyQzEuNCA0IDEgNC40IDEgNVYxNEMxIDE0LjYgMS40IDE1IDIgMTVWMjJIMTdWMTlIMjBDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjUuN0MyMi42IDUuNCAyMyA0LjcgMjMgNEMyMyAyLjkgMjIuMSAyIDIxIDJNMyA2SDE2VjEzSDNWNk0xNSAyMEg0VjE1SDE1VjIwTTEzIDE5SDZWMTdIMTNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkID0gXCJNMiAzSDIyQTIuMDcgMi4wNyAwIDAgMSAyNCA1VjE5QTIuMDcgMi4wNyAwIDAgMSAyMiAyMUgyQTIuMDcgMi4wNyAwIDAgMSAwIDE5VjVBMi4wNyAyLjA3IDAgMCAxIDIgM004IDEzLjkxQzYgMTMuOTEgMiAxNSAyIDE3VjE4SDE0VjE3QzE0IDE1IDEwIDEzLjkxIDggMTMuOTFNOCA2QTMgMyAwIDEgMCAxMSA5QTMgMyAwIDAgMCA4IDZNMTcgMTBWMTNIMjFWMTBIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlTbWFydENhcmRPdXRsaW5lID0gXCJNMjIgM0gyQTIuMDcgMi4wNyAwIDAgMCAwIDVWMTlBMi4wNyAyLjA3IDAgMCAwIDIgMjFIMjJBMi4wNyAyLjA3IDAgMCAwIDI0IDE5VjVBMi4wNyAyLjA3IDAgMCAwIDIyIDNNMjIgMTlIMlY1SDIyTTE0IDE3VjE1Ljc1QzE0IDE0LjA5IDEwLjY2IDEzLjI1IDkgMTMuMjVTNCAxNC4wOSA0IDE1Ljc1VjE3SDE0TTkgN0EyLjUgMi41IDAgMSAwIDExLjUgOS41QTIuNSAyLjUgMCAwIDAgOSA3TTE1IDEwVjEzSDE5VjEwSDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkUmVhZGVyID0gXCJNMjEgNEEyLjA3IDIuMDcgMCAwIDAgMTkgMkg1QTIuMDcgMi4wNyAwIDAgMCAzIDRWMThIMjFNOC4yNSAxNkg3VjZIOC4yNUM5LjkxIDYgMTAuNzUgOS4zNCAxMC43NSAxMVM5LjkxIDE2IDguMjUgMTZNMTQuNSAxMy41QTIuNSAyLjUgMCAxIDEgMTcgMTFBMi41IDIuNSAwIDAgMSAxNC41IDEzLjVNMjMgMjFWMjJIMVYyMUEyIDIgMCAwIDEgMyAxOUgyMUEyIDIgMCAwIDEgMjMgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkUmVhZGVyT3V0bGluZSA9IFwiTTE0LjUgOC41QTIuNSAyLjUgMCAxIDAgMTcgMTFBMi41IDIuNSAwIDAgMCAxNC41IDguNU04LjI1IDZIN1YxNkg4LjI1QzkuOTEgMTYgMTAuNzUgMTIuNjYgMTAuNzUgMTFTOS45MSA2IDguMjUgNk0xOSAySDVBMi4wNyAyLjA3IDAgMCAwIDMgNFYxOEg1VjRIMTlWMThIMjFWNEEyLjA3IDIuMDcgMCAwIDAgMTkgMk0yMyAyMkgxVjIxQTIgMiAwIDAgMSAzIDE5SDIxQTIgMiAwIDAgMSAyMyAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9nID0gXCJNMTIsMkMxMC4wOCwyIDguNSwzLjM1IDguMDksNS4xNUM3LjQ1LDQuNDQgNi41Myw0IDUuNSw0QTMuNSwzLjUgMCAwLDAgMiw3LjVIMkEzLjUsMy41IDAgMCwwIDUuNSwxMUg2LjY4VjEySDEwLjcyVjExSDEzLjI4VjEySDE3LjMyVjExSDE4LjVBMy41LDMuNSAwIDAsMCAyMiw3LjVIMjJBMy41LDMuNSAwIDAsMCAxOC41LDRIMTguNUMxNy40Nyw0IDE2LjU1LDQuNDQgMTUuOTEsNS4xNUMxNS41LDMuMzUgMTMuOTIsMiAxMiwyTTcuMiwxNEw2LjQsMjJIMTFMMTAuMiwxNEg3LjJNMTMuOCwxNEwxMywyMkgxNy42TDE2LjgsMTRIMTMuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9rZURldGVjdG9yID0gXCJNMTIsMThBNiw2IDAgMCwwIDE4LDEyQzE4LDguNjggMTUuMzEsNiAxMiw2QzguNjgsNiA2LDguNjggNiwxMkE2LDYgMCAwLDAgMTIsMThNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlNOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNtb2tpbmcgPSBcIk0yLDE2SDE3VjE5SDJWMTZNMjAuNSwxNkgyMlYxOUgyMC41VjE2TTE4LDE2SDE5LjVWMTlIMThWMTZNMTguODUsNy43M0MxOS40Nyw3LjEyIDE5Ljg1LDYuMjggMTkuODUsNS4zNUMxOS44NSwzLjUgMTguMzUsMiAxNi41LDJWMy41QzE3LjUsMy41IDE4LjM1LDQuMzMgMTguMzUsNS4zNUMxOC4zNSw2LjM3IDE3LjUsNy4yIDE2LjUsNy4yVjguN0MxOC43NCw4LjcgMjAuNSwxMC41MyAyMC41LDEyLjc3VjE1SDIyVjEyLjc2QzIyLDEwLjU0IDIwLjcyLDguNjIgMTguODUsNy43M00xNi4wMywxMC4ySDE0LjVDMTMuNSwxMC4yIDEyLjY1LDkuMjIgMTIuNjUsOC4yQzEyLjY1LDcuMTggMTMuNSw2LjQ1IDE0LjUsNi40NVY0Ljk1QzEyLjY1LDQuOTUgMTEuMTUsNi40NSAxMS4xNSw4LjNBMy4zNSwzLjM1IDAgMCwwIDE0LjUsMTEuNjVIMTYuMDNDMTcuMDgsMTEuNjUgMTgsMTIuMzkgMTgsMTMuN1YxNUgxOS41VjEzLjM2QzE5LjUsMTEuNTUgMTcuOSwxMC4yIDE2LjAzLDEwLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21va2luZ09mZiA9IFwiTTIsNkw5LDEzSDJWMTZIMTJMMTksMjNMMjAuMjUsMjEuNzVMMy4yNSw0Ljc1TDIsNk0yMC41LDEzSDIyVjE2SDIwLjVWMTNNMTgsMTNIMTkuNVYxNkgxOFYxM00xOC44NSw0Ljg4QzE5LjQ3LDQuMjcgMTkuODUsMy40MyAxOS44NSwyLjVIMTguMzVDMTguMzUsMy41IDE3LjUsNC4zNSAxNi41LDQuMzVWNS44NUMxOC43NCw1Ljg1IDIwLjUsNy42OCAyMC41LDkuOTJWMTJIMjJWOS45MkMyMiw3LjY5IDIwLjcyLDUuNzcgMTguODUsNC44OE0xNC41LDguN0gxNi4wM0MxNy4wOCw4LjcgMTgsOS40NCAxOCwxMC43NVYxMkgxOS41VjEwLjQxQzE5LjUsOC42MSAxNy45LDcuMjUgMTYuMDMsNy4yNUgxNC41QzEzLjUsNy4yNSAxMi42NSw2LjI3IDEyLjY1LDUuMjVDMTIuNjUsNC4yMyAxMy41LDMuNSAxNC41LDMuNVYyQTMuMzUsMy4zNSAwIDAsMCAxMS4xNSw1LjM1QTMuMzUsMy4zNSAwIDAsMCAxNC41LDguN00xNywxNS45M1YxM0gxNC4wN0wxNywxNS45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9raW5nUGlwZSA9IFwiTTE2IDEzQzE0Ljg5IDEzIDE0IDEzLjg5IDE0IDE1VjE4SDEzQzEyIDE4IDExIDE3LjkyIDEwLjMgMTcuMjNMNi41MyAxMy40N0M1LjYgMTIuNTMgNC4zMyAxMiAzIDEySDJWMTRIM0MzLjggMTQgNC41NiAxNC4zMiA1LjEyIDE0Ljg4TDguODkgMTguNjVDMTEuNzIgMjEuNSAxMyAyMiAxNiAyMkgxOEMyMC4yMSAyMiAyMiAyMC4yMSAyMiAxOFYxNUMyMiAxMy44OSAyMS4xMSAxMyAyMCAxM0gxNk0xNCA3LjJIMTIuNUMxMS40NSA3LjEyIDEwLjY1IDYuMjUgMTAuNjUgNS4yQzEwLjY3IDQuMjIgMTEuNSAzLjQzIDEyLjQ2IDMuNDVMMTIuNSAzLjQ1VjJDMTAuNjUgMiA5LjE1IDMuNSA5LjE1IDUuMzVTMTAuNjUgOC43IDEyLjUgOC43SDE0QzE1LjA3IDguNjYgMTUuOTYgOS41IDE2IDEwLjU2QzE2IDEwLjYxIDE2IDEwLjY1IDE2IDEwLjdWMTJIMTcuNVYxMC4zNkMxNy40MiA4LjUzIDE1Ljg4IDcuMTIgMTQuMDUgNy4yTDE0IDcuMk0yMCA5Ljc2VjEySDE4LjVWOS43N0wxOC41IDkuN0MxOC41IDcuNSAxNi43MSA1LjcgMTQuNSA1LjdWNC4ySDE0LjVDMTUuNSA0LjIgMTYuMzUgMy4zNyAxNi4zNSAyLjM1QzE2LjM1IDIuMjMgMTYuMzQgMi4xMSAxNi4zMiAySDE3Ljc5QzE3Ljg5IDMgMTcuNTggNCAxNi44MiA0LjczSDE2Ljg1QzE4Ljc4IDUuNjYgMjAgNy42MiAyMCA5Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNtb2tpbmdQaXBlT2ZmID0gXCJNMjAuODQgMjIuNzNMMTkuNzEgMjEuNkMxOS4xOSAyMS44NSAxOC42MiAyMiAxOCAyMkgxNkMxMyAyMiAxMS43MiAyMS41IDguODkgMTguNjVMNS4xMiAxNC44OEM0LjU2IDE0LjMyIDMuOCAxNCAzIDE0SDJWMTJIM0M0LjMzIDEyIDUuNiAxMi41MyA2LjUzIDEzLjQ3TDEwLjMgMTcuMjNDMTEgMTcuOTIgMTIgMTggMTMgMThIMTRWMTUuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00yMS45MyAxOC43M0MyMS45NyAxOC41IDIyIDE4LjI1IDIyIDE4VjE1QzIyIDEzLjg5IDIxLjExIDEzIDIwIDEzSDE2LjJMMjEuOTMgMTguNzNNMTguNSA5LjdMMTguNSA5Ljc3VjEySDIwVjkuNzZDMjAgNy42MiAxOC43OCA1LjY2IDE2Ljg1IDQuNzNIMTYuODJDMTcuNTggNCAxNy45IDMgMTcuOCAySDE2LjMyQzE2LjM0IDIuMTEgMTYuMzUgMi4yMyAxNi4zNSAyLjM1QzE2LjM1IDMuMzcgMTUuNSA0LjIgMTQuNSA0LjJIMTQuNVY1LjdDMTYuNzEgNS43IDE4LjUgNy41IDE4LjUgOS43TTExLjgzIDguNjNDMTIuMDUgOC42OCAxMi4yNyA4LjcgMTIuNSA4LjdIMTRDMTUuMDcgOC42NiAxNS45NiA5LjUgMTYgMTAuNTZDMTYgMTAuNjEgMTYgMTAuNjUgMTYgMTAuN1YxMkgxNy41VjEwLjM2QzE3LjQyIDguNTMgMTUuODggNy4xMiAxNC4wNSA3LjJMMTQgNy4ySDEyLjVDMTEuNDUgNy4xMiAxMC42NSA2LjI1IDEwLjY1IDUuMkMxMC42NyA0LjIyIDExLjUgMy40MyAxMi40NiAzLjQ1TDEyLjUgMy40NVYyQzEwLjY1IDIgOS4xNSAzLjUgOS4xNSA1LjM1QzkuMTUgNS41OCA5LjE3IDUuOCA5LjIyIDZMMTEuODMgOC42M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbmFpbCA9IFwiTTIwLjMxIDguMDNMMjEuMjQgNC45NUMyMS42NyA0Ljg1IDIyIDQuNDcgMjIgNEMyMiAzLjQ1IDIxLjU1IDMgMjEgM1MyMCAzLjQ1IDIwIDRDMjAgNC4yNiAyMC4xMSA0LjUgMjAuMjcgNC42OEwxOS41IDcuMjZMMTguNzMgNC42OEMxOC44OSA0LjUgMTkgNC4yNiAxOSA0QzE5IDMuNDUgMTguNTUgMyAxOCAzUzE3IDMuNDUgMTcgNEMxNyA0LjQ3IDE3LjMzIDQuODUgMTcuNzYgNC45NUwxOC42OSA4LjAzQzE3LjczIDguMTggMTcgOSAxNyAxMFYxMi4yNUMxNS42NSA5LjE2IDEyLjYzIDcgOS4xMSA3QzUuMTkgNyAyIDEwLjI2IDIgMTQuMjZDMiAxNi4xIDIuODIgMTcuNzUgNC4xIDE4Ljg1TDIuODggMTlDMi4zOCAxOS4wNiAyIDE5LjUgMiAyMEMyIDIwLjU1IDIuNDUgMjEgMyAyMUwxOS4xMiAyMUMyMC4xNiAyMSAyMSAyMC4xNiAyMSAxOS4xMlYxMS43MkMyMS42IDExLjM4IDIyIDEwLjc0IDIyIDEwQzIyIDkgMjEuMjcgOC4xOCAyMC4zMSA4LjAzTTE1LjYgMTcuNDFMMTIuMDcgMTcuODZDMTIuNSAxNy4xIDEyLjggMTYuMjEgMTIuOCAxNS4yNkMxMi44IDEyLjk0IDEwLjk1IDExLjA2IDguNjcgMTEuMDZDOC4xNCAxMS4wNiA3LjYyIDExLjE4IDcuMTQgMTEuNDFDNi42NSAxMS42NiA2LjQ0IDEyLjI2IDYuNjkgMTIuNzVDNi45MyAxMy4yNSA3LjUzIDEzLjQ1IDguMDMgMTMuMjFDOC4yMyAxMy4xMSA4LjQ1IDEzLjA2IDguNjcgMTMuMDZDOS44NSAxMy4wNiAxMC44IDE0LjA0IDEwLjggMTUuMjZDMTAuOCAxNi45MiA5LjUgMTguMjcgNy44OSAxOC4yN0M1Ljc1IDE4LjI3IDQgMTYuNDcgNCAxNC4yNkM0IDExLjM2IDYuMjkgOSA5LjExIDlDMTIuNzcgOSAxNS43NSAxMi4wNiAxNS43NSAxNS44MkMxNS43NSAxNi4zNiAxNS42OSAxNi44OSAxNS42IDE3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNuYWtlID0gXCJNMTkuNSAxN0gxOEMxOS4xIDE3IDIwIDE2LjEgMjAgMTVTMTkuMSAxMyAxOCAxM1Y5QzE4IDggMTggNyAxNi45MiA2LjE0QzE2Ljk3IDUuOTMgMTcgNS43MiAxNyA1LjVDMTcgMy41NyAxNSAyIDEyLjUgMkMxMC4yNCAyIDguMzggMy4zMSA4LjA3IDVINkwzLjcxIDIuNzlMMyAzLjVMNSA1LjVMMyA3LjVMMy43MSA4LjIxTDYgNkg4LjA3QzguMzggNy42OSAxMC4yNCA5IDEyLjUgOUMxMyA5IDEzLjUgOC45MiAxMy45MyA4LjhDMTMuOTcgOC44NyAxNCA4Ljk0IDE0IDlWMTNIOEM2LjkgMTMgNiAxMy45IDYgMTVTNi45IDE3IDggMTdINi41QzUuMTIgMTcgNCAxOC4xMiA0IDE5LjVDNCAxOS42NyA0IDE5Ljg0IDQuMDUgMjBINEMyLjkgMjAgMiAyMC45IDIgMjJIMTkuNUMyMC44OCAyMiAyMiAyMC44OCAyMiAxOS41UzIwLjg4IDE3IDE5LjUgMTdNMTIgNUMxMS40NSA1IDExIDQuNTUgMTEgNFMxMS40NSAzIDEyIDMgMTMgMy40NSAxMyA0IDEyLjU1IDUgMTIgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbmFwY2hhdCA9IFwiTTIxLjkzIDE2LjU2QzIxLjc5IDE2LjE4IDIxLjUgMTYgMjEuMjIgMTUuODFDMjEuMTcgMTUuNzggMjEuMTEgMTUuNzUgMjEuMDcgMTUuNzNDMjEgMTUuNjggMjAuODkgMTUuNjQgMjAuOCAxNS41OUMxOS44NiAxNS4wOSAxOS4xMiAxNC40NiAxOC42MSAxMy43MkMxOC40NyAxMy41IDE4LjM1IDEzLjI5IDE4LjI0IDEzLjA2QzE4LjIgMTIuOTMgMTguMiAxMi44NiAxOC4yMyAxMi44QzE4LjI2IDEyLjc1IDE4LjMgMTIuNyAxOC4zNSAxMi42N0MxOC41IDEyLjU2IDE4LjY4IDEyLjQ2IDE4Ljc5IDEyLjM4QzE5IDEyLjI1IDE5LjE1IDEyLjE1IDE5LjI1IDEyLjA4QzE5LjY0IDExLjgxIDE5LjkxIDExLjUgMjAuMDggMTEuMkMyMC4zMiAxMC43NSAyMC4zNSAxMC4yMiAyMC4xNiA5Ljc1QzE5LjkxIDkuMDggMTkuMjcgOC42NiAxOC41IDguNjZDMTguMzQgOC42NiAxOC4xOCA4LjY4IDE4IDguNzFDMTggOC43MiAxNy45NCA4LjczIDE3LjkgOC43NEMxNy45IDguMjggMTcuODkgNy44IDE3Ljg1IDcuMzJDMTcuNzEgNS42NCAxNy4xMiA0Ljc2IDE2LjUgNC4wNkMxNi4xMSAzLjYyIDE1LjY1IDMuMjQgMTUuMTQgMi45NUMxNC4yMSAyLjQyIDEzLjE1IDIuMTUgMTIgMi4xNVM5LjggMi40MiA4Ljg3IDIuOTVDOC4zNSAzLjI0IDcuODkgMy42MiA3LjUgNC4wNkM2Ljg4IDQuNzYgNi4zIDUuNjQgNi4xNSA3LjMyQzYuMTEgNy44IDYuMSA4LjI4IDYuMTEgOC43NEM2LjA2IDguNzMgNiA4LjcyIDYgOC43MUM1LjgyIDguNjggNS42NiA4LjY2IDUuNSA4LjY2QzQuNzMgOC42NiA0LjA5IDkuMDggMy44NCA5Ljc1QzMuNjUgMTAuMjIgMy42OCAxMC43NSAzLjkyIDExLjJDNC4wOSAxMS41IDQuMzYgMTEuODEgNC43NSAxMi4wOEM0Ljg1IDEyLjE1IDUgMTIuMjUgNS4yMSAxMi4zOUw1LjYzIDEyLjY2QzUuNjkgMTIuNyA1LjczIDEyLjc1IDUuNzcgMTIuOEM1LjggMTIuODcgNS44IDEyLjk0IDUuNzUgMTMuMDdDNS42NSAxMy4zIDUuNTMgMTMuNSA1LjM5IDEzLjcyQzQuODkgMTQuNDUgNC4xOCAxNS4wNyAzLjI3IDE1LjU2QzIuNzggMTUuODIgMi4yOCAxNiAyLjA3IDE2LjU2QzEuOTEgMTcgMiAxNy41IDIuNDIgMTcuOTFDMi41NyAxOC4wNiAyLjc0IDE4LjE5IDIuOTMgMTguMjlDMy4zMyAxOC41IDMuNzUgMTguNjggNC4xOCAxOC43OUM0LjI3IDE4LjgyIDQuMzYgMTguODUgNC40MyAxOC45MUM0LjU4IDE5LjAzIDQuNTYgMTkuMjMgNC43NiAxOS41QzQuODYgMTkuNjYgNSAxOS43OSA1LjEzIDE5Ljg5QzUuNTQgMjAuMTggNiAyMC4xOSA2LjUgMjAuMjFDNi45NCAyMC4yMyA3LjQ0IDIwLjI1IDggMjAuNDRDOC4yNiAyMC41IDguNSAyMC42NyA4Ljc5IDIwLjg1QzkuNSAyMS4yNyAxMC40MiAyMS44NSAxMiAyMS44NUMxMy41NyAyMS44NSAxNC41IDIxLjI3IDE1LjIyIDIwLjg0QzE1LjUgMjAuNjcgMTUuNzUgMjAuNSAxNiAyMC40NEMxNi41NSAyMC4yNSAxNy4wNiAyMC4yMyAxNy41IDIwLjIxQzE4IDIwLjIgMTguNDYgMjAuMTggMTguODcgMTkuODlDMTkuMDQgMTkuNzcgMTkuMTggMTkuNjEgMTkuMjkgMTkuNDNDMTkuNDMgMTkuMTkgMTkuNDMgMTkgMTkuNTYgMTguOTFDMTkuNjMgMTguODYgMTkuNzEgMTguODIgMTkuOCAxOC44QzIwLjI0IDE4LjY4IDIwLjY2IDE4LjUgMjEuMDYgMTguMjlDMjEuMjcgMTguMTggMjEuNDUgMTguMDQgMjEuNiAxNy44N0wyMS42MSAxNy44N0MyMiAxNy40NiAyMi4wOCAxNyAyMS45MyAxNi41Nk0yMC41MyAxNy4zMUMxOS42NyAxNy43OCAxOS4xIDE3LjczIDE4LjY2IDE4QzE4LjUgMTguMTIgMTguNDUgMTguMjggMTguNDIgMTguNDRDMTguNDEgMTguNSAxOC40IDE4LjU4IDE4LjM5IDE4LjY0QzE4LjM3IDE4Ljc4IDE4LjM0IDE4LjkgMTguMjQgMTguOTdDMTcuOSAxOS4yIDE2LjkxIDE4Ljk1IDE1LjYzIDE5LjM3QzE0LjU3IDE5LjcyIDEzLjkgMjAuNzMgMTIgMjAuNzNDMTAuMSAyMC43MyA5LjQ1IDE5LjczIDguMzcgMTkuMzdDNy4xIDE4Ljk1IDYuMSAxOS4yIDUuNzcgMTguOTdDNS41IDE4Ljc4IDUuNzIgMTguMjYgNS4zNCAxOEM0LjkgMTcuNzMgNC4zMyAxNy43OCAzLjUgMTcuMzFDMy4xOSAxNy4xNSAzLjE0IDE3IDMuMTggMTYuOTNDMy4yMiAxNi44NCAzLjM0IDE2Ljc3IDMuNDIgMTYuNzNDNS4wNyAxNS45NCA2IDE0LjkxIDYuNDcgMTQuMUM2LjkxIDEzLjM4IDcgMTIuODMgNy4wMyAxMi43NUM3LjA2IDEyLjU0IDcuMDkgMTIuMzggNi44NiAxMi4xN0M2LjY0IDExLjk2IDUuNjYgMTEuMzYgNS4zOSAxMS4xN0M0LjkzIDEwLjg1IDQuNzQgMTAuNTQgNC44OCAxMC4xNUw0Ljg4IDEwLjE1VjEwLjE1QzUgOS44OCA1LjIzIDkuNzggNS41IDkuNzhDNS41OCA5Ljc4IDUuNjYgOS43OSA1Ljc0IDkuODFDNi4yNCA5LjkxIDYuNzIgMTAuMTYgNyAxMC4yM0M3LjAzIDEwLjI0IDcuMDYgMTAuMjQgNy4xIDEwLjI0QzcuMTkgMTAuMjQgNy4yNCAxMC4yMSA3LjI3IDEwLjE1QzcuMjggMTAuMTEgNy4yOSAxMC4wNiA3LjI5IDEwQzcuMjUgOS40NiA3LjE4IDguNDEgNy4yNiA3LjQyQzcuMyA3IDcuMzcgNi42NCA3LjQ2IDYuMzNDNy42NiA1LjY1IDggNS4yIDguMzQgNC43OUM4LjU5IDQuNSA5Ljc1IDMuMjcgMTIgMy4yN0MxMy44NSAzLjI3IDE0Ljk2IDQuMTEgMTUuNDQgNC41NkMxNS41NCA0LjY2IDE1LjYyIDQuNzQgMTUuNjYgNC43OUMxNi4wNCA1LjIzIDE2LjM4IDUuNzEgMTYuNTggNi40N0MxNi42NSA2Ljc0IDE2LjcxIDcuMDYgMTYuNzQgNy40MkMxNi44MiA4LjQgMTYuNzUgOS40NiAxNi43MSAxMEMxNi43MSAxMC4wNCAxNi43MSAxMC4wOCAxNi43MiAxMC4xMUMxNi43MyAxMC4yIDE2Ljc5IDEwLjI0IDE2LjkgMTAuMjRDMTYuOTQgMTAuMjQgMTYuOTcgMTAuMjQgMTcgMTAuMjNDMTcuMjggMTAuMTYgMTcuNzYgOS45MSAxOC4yNiA5LjhDMTguMzQgOS43OSAxOC40MiA5Ljc4IDE4LjUgOS43OEMxOC43NSA5Ljc4IDE5IDkuODcgMTkuMSAxMC4xTDE5LjExIDEwLjE0TDE5LjEyIDEwLjE0TDE5LjEyIDEwLjE1QzE5LjI3IDEwLjUzIDE5LjA3IDEwLjg1IDE4LjYyIDExLjE2QzE4LjM1IDExLjM1IDE3LjM2IDExLjk2IDE3LjE0IDEyLjE2QzE2LjkxIDEyLjM4IDE2Ljk0IDEyLjU0IDE2Ljk3IDEyLjc1QzE3IDEyLjg1IDE3LjE4IDEzLjggMTguMDggMTQuODZDMTguNjMgMTUuNSAxOS40MiAxNi4xNyAyMC41OCAxNi43M0MyMC42NSAxNi43NiAyMC43NCAxNi44MSAyMC43OSAxNi44N0MyMC44MiAxNi45MiAyMC44NCAxNi45NiAyMC44MyAxN0MyMC44MiAxNy4xIDIwLjczIDE3LjIgMjAuNTMgMTcuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2JvYXJkID0gXCJNMTUuNCA1LjRDMTUuNCA0LjMgMTYuMyAzLjQgMTcuNCAzLjRDMTguNSAzLjQgMTkuNCA0LjMgMTkuNCA1LjRDMTkuNCA2LjUgMTguNSA3LjQgMTcuNCA3LjRDMTYuMyA3LjQgMTUuNCA2LjUgMTUuNCA1LjRNMjIgMTkuMkMyMS40IDE5LjggMjAuOCAyMC4yIDIwLjEgMjAuNUMxOS40IDIwLjggMTguNiAyMSAxNy44IDIxSDYuMkM1LjQgMjEgNC42IDIwLjggMy45IDIwLjVDMy4yIDIwLjIgMi42IDE5LjggMiAxOS4yTDIuOSAxOC4zQzMuMyAxOC43IDMuOCAxOS4xIDQuNCAxOS4zQzQuOSAxOS42IDUuNCAxOS43IDUuOSAxOS43TDkuNyAxNkw4LjUgMTIuNUM4LjMgMTEuOSA4LjYgMTEuNCA5LjEgMTFMMTEgOUg2VjdIMTRDMTQuNSA3IDE0LjcgNy4xIDE1IDcuM0wxNy4zIDkuNUMxOC4zIDEwLjUgMTkuNSAxMSAyMC45IDExTDIxIDEzLjFDMTkuMSAxMy4xIDE3LjQgMTIuNCAxNS45IDExTDE1LjIgMTAuM0wxMi45IDEyLjdMMTUgMTVWMTkuN0gxNy44QzE4LjQgMTkuNyAxOSAxOS42IDE5LjYgMTkuM0MyMC4yIDE5LjEgMjAuNyAxOC43IDIxLjEgMTguM0wyMiAxOS4yTTguOCAxOS43SDEzVjE1LjhMMTEuNyAxNC42VjE2LjhMOC44IDE5LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlID0gXCJNMjAuNzksMTMuOTVMMTguNDYsMTQuNTdMMTYuNDYsMTMuNDRWMTAuNTZMMTguNDYsOS40M0wyMC43OSwxMC4wNUwyMS4zMSw4LjEyTDE5LjU0LDcuNjVMMjAsNS44OEwxOC4wNyw1LjM2TDE3LjQ1LDcuNjlMMTUuNDUsOC44MkwxMyw3LjM4VjUuMTJMMTQuNzEsMy40MUwxMy4yOSwyTDEyLDMuMjlMMTAuNzEsMkw5LjI5LDMuNDFMMTEsNS4xMlY3LjM4TDguNSw4LjgyTDYuNSw3LjY5TDUuOTIsNS4zNkw0LDUuODhMNC40Nyw3LjY1TDIuNyw4LjEyTDMuMjIsMTAuMDVMNS41NSw5LjQzTDcuNTUsMTAuNTZWMTMuNDVMNS41NSwxNC41OEwzLjIyLDEzLjk2TDIuNywxNS44OUw0LjQ3LDE2LjM2TDQsMTguMTJMNS45MywxOC42NEw2LjU1LDE2LjMxTDguNTUsMTUuMThMMTEsMTYuNjJWMTguODhMOS4yOSwyMC41OUwxMC43MSwyMkwxMiwyMC43MUwxMy4yOSwyMkwxNC43LDIwLjU5TDEzLDE4Ljg4VjE2LjYyTDE1LjUsMTUuMTdMMTcuNSwxNi4zTDE4LjEyLDE4LjYzTDIwLDE4LjEyTDE5LjUzLDE2LjM1TDIxLjMsMTUuODhMMjAuNzksMTMuOTVNOS41LDEwLjU2TDEyLDkuMTFMMTQuNSwxMC41NlYxMy40NEwxMiwxNC44OUw5LjUsMTMuNDRWMTAuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlQWxlcnQgPSBcIk0xNi40Niw5LjQxTDEzLDcuMzhWNS4xMkwxNC43MSwzLjQxTDEzLjI5LDJMMTIsMy4yOUwxMC43MSwyTDkuMjksMy40MUwxMSw1LjEyVjcuMzhMOC41LDguODJMNi41LDcuNjlMNS45Miw1LjM2TDQsNS44OEw0LjQ3LDcuNjVMMi43LDguMTJMMy4yMiwxMC4wNUw1LjU1LDkuNDNMNy41NSwxMC41NlYxMy40NUw1LjU1LDE0LjU4TDMuMjIsMTMuOTZMMi43LDE1Ljg5TDQuNDcsMTYuMzZMNCwxOC4xMkw1LjkzLDE4LjY0TDYuNTUsMTYuMzFMOC41NSwxNS4xOEwxMSwxNi42MlYxOC44OEw5LjI5LDIwLjU5TDEwLjcxLDIyTDEyLDIwLjcxTDEzLjI5LDIyTDE0LjcsMjAuNTlMMTMsMTguODhWMTYuNjJMMTYuNDYsMTQuNjFNOS41LDEwLjU2TDEyLDkuMTFMMTQuNSwxMC41NlYxMy40NEwxMiwxNC44OUw5LjUsMTMuNDRNMTksMTNWN0gyMVYxM0gxOU0xOSwxN1YxNUgyMVYxN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbm93Zmxha2VNZWx0ID0gXCJNOCAxNy44NUM4IDE5LjA0IDcuMTEgMjAgNiAyMFM0IDE5LjA0IDQgMTcuODVDNCAxNi40MiA2IDE0IDYgMTRTOCAxNi40MiA4IDE3Ljg1TTE2LjQ2IDEyVjEwLjU2TDE4LjQ2IDkuNDNMMjAuNzkgMTAuMDVMMjEuMzEgOC4xMkwxOS41NCA3LjY1TDIwIDUuODhMMTguMDcgNS4zNkwxNy40NSA3LjY5TDE1LjQ1IDguODJMMTMgNy4zOFY1LjEyTDE0LjcxIDMuNDFMMTMuMjkgMkwxMiAzLjI5TDEwLjcxIDJMOS4yOSAzLjQxTDExIDUuMTJWNy4zOEw4LjUgOC44Mkw2LjUgNy42OUw1LjkyIDUuMzZMNCA1Ljg4TDQuNDcgNy42NUwyLjcgOC4xMkwzLjIyIDEwLjA1TDUuNTUgOS40M0w3LjU1IDEwLjU2VjEySDJWMTNIMjJWMTJIMTYuNDZNOS41IDEyVjEwLjU2TDEyIDkuMTFMMTQuNSAxMC41NlYxMkg5LjVNMjAgMTcuODVDMjAgMTkuMDQgMTkuMTEgMjAgMTggMjBTMTYgMTkuMDQgMTYgMTcuODVDMTYgMTYuNDIgMTggMTQgMTggMTRTMjAgMTYuNDIgMjAgMTcuODVNMTQgMjAuODVDMTQgMjIuMDQgMTMuMTEgMjMgMTIgMjNTMTAgMjIuMDQgMTAgMjAuODVDMTAgMTkuNDIgMTIgMTcgMTIgMTdTMTQgMTkuNDIgMTQgMjAuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlT2ZmID0gXCJNMTEgNS4xMkw5LjI5IDMuNDFMMTAuNzEgMkwxMiAzLjI5TDEzLjI5IDJMMTQuNzEgMy40MUwxMyA1LjEyVjcuMzhMMTUuNDUgOC44MkwxNy40NSA3LjY5TDE4LjA3IDUuMzZMMjAgNS44OEwxOS41NCA3LjY1TDIxLjMxIDguMTJMMjAuNzkgMTAuMDVMMTguNDYgOS40M0wxNi40NiAxMC41NlYxMy4yNkwxNC41IDExLjNWMTAuNTZMMTIuNzQgOS41NEwxMC43MyA3LjUzTDExIDcuMzhWNS4xMk0xOC40NiAxNC41N0wxNi44NyAxMy42N0wxOS41NSAxNi4zNUwyMS4zIDE1Ljg4TDIwLjc5IDEzLjk1TDE4LjQ2IDE0LjU3TTEzIDE2LjYyVjE4Ljg4TDE0LjcgMjAuNTlMMTMuMjkgMjJMMTIgMjAuNzFMMTAuNzEgMjJMOS4yOSAyMC41OUwxMSAxOC44OFYxNi42Mkw4LjU1IDE1LjE4TDYuNTUgMTYuMzFMNS45MyAxOC42NEw0IDE4LjEyTDQuNDcgMTYuMzZMMi43IDE1Ljg5TDMuMjIgMTMuOTZMNS41NSAxNC41OEw3LjU1IDEzLjQ1VjEwLjU2TDUuNTUgOS40M0wzLjIyIDEwLjA1TDIuNyA4LjEyTDQuNDcgNy42NUw0IDUuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNC4xIDE2TDEzIDE2LjYyTTEyIDE0Ljg5TDEyLjYzIDE0LjVMOS41IDExLjM5VjEzLjQ0TDEyIDE0Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNub3dmbGFrZVZhcmlhbnQgPSBcIk0xNC4yNSwxMkwxNi4yNywxMUgyM0wyMiw5SDE4LjAzTDIwLjQyLDUuODNMMTkuNDMsMy44M0wxNS4zNyw5LjJMMTMuMzUsMTAuMjFMMTMuNzUsOEwxNy44MywyLjYyTDE1LjY0LDIuMjJMMTIsN0w4LjQsMi4yTDYuMiwyLjZMMTAuMjYsOEwxMC42NiwxMC4yMUw4LjgyLDkuMjlMOC42Niw5LjIxTDQuNiwzLjhMMy42LDUuOEw2LDlIMkwxLDExSDcuNzdMOS43NSwxMkw3LjczLDEzSDFMMiwxNUg1Ljk3TDMuNTgsMTguMTdMNC41NywyMC4xN0w4LjYzLDE0LjhMMTAuNjUsMTMuNzlMMTAuMjUsMTZMNi4xNywyMS4zOEw4LjM2LDIxLjc5TDEyLDE3TDE1LjYsMjEuOEwxNy44LDIxLjRMMTMuNzQsMTZMMTMuMzQsMTMuNzlMMTUuMzQsMTQuNzlMMTkuNCwyMC4yTDIwLjQsMTguMkwxOCwxNUgyMkwyMywxM0gxNi4yM1wiO1xyXG5leHBvcnQgdmFyIG1kaVNub3dtYW4gPSBcIk0xNywxN0E1LDUgMCAwLDEgMTIsMjJBNSw1IDAgMCwxIDcsMTdDNywxNS41IDcuNjUsMTQuMTcgOC42OSwxMy4yNUM4LjI2LDEyLjYxIDgsMTEuODMgOCwxMUM4LDEwLjg2IDgsMTAuNzMgOCwxMC41OUw1LjA0LDguODdMNC44Myw4LjcxTDIuMjksOS4zOUwyLjAzLDguNDNMNC4yNCw3Ljg0TDIuMjYsNi42OUwyLjc2LDUuODJMNC43NCw2Ljk3TDQuMTUsNC43NUw1LjExLDQuNUw1LjgsNy4wNEw2LjA0LDcuMTRMOC43Myw4LjY5QzkuMTEsOC4xNSA5LjYyLDcuNzEgMTAuMjIsNy40MkM5LjUsNi44NyA5LDYgOSw1QTMsMyAwIDAsMSAxMiwyQTMsMyAwIDAsMSAxNSw1QzE1LDYgMTQuNSw2Ljg3IDEzLjc4LDcuNDJDMTQuMzgsNy43MSAxNC44OSw4LjE1IDE1LjI3LDguNjlMMTcuOTYsNy4xNEwxOC4yLDcuMDRMMTguODksNC41TDE5Ljg1LDQuNzVMMTkuMjYsNi45N0wyMS4yNCw1LjgyTDIxLjc0LDYuNjlMMTkuNzYsNy44NEwyMS45Nyw4LjQzTDIxLjcxLDkuMzlMMTkuMTcsOC43MUwxOC45Niw4Ljg3TDE2LDEwLjU5VjExQzE2LDExLjgzIDE1Ljc0LDEyLjYxIDE1LjMxLDEzLjI1QzE2LjM1LDE0LjE3IDE3LDE1LjUgMTcsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29jY2VyID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsM0MxMy43NiwzIDE1LjQsMy41MyAxNi43OCw0LjQxTDE2LjUsNUgxM0wxMiw1TDEwLjI4LDQuMTZMMTAuNjMsMy4xM0MxMS4wOCwzLjA1IDExLjUzLDMgMTIsM005LjUzLDMuMzhMOS4xOSw0LjQxTDYuNjMsNS42OUw1LjM4LDUuOTRDNi41LDQuNzMgNy45MiwzLjg0IDkuNTMsMy4zOE0xMyw2SDE2TDE4LjY5LDkuNTlMMTcuNDQsMTIuMTZMMTQuODEsMTIuNzhMMTEuNTMsOC45NEwxMyw2TTYuMTYsNi42Nkw3LDEwTDUuNzgsMTMuMDZMMy4yMiwxMy45NEMzLjA4LDEzLjMxIDMsMTIuNjcgMywxMkMzLDEwLjEgMy41OSw4LjM2IDQuNTksNi45MUw2LjE2LDYuNjZNMjAuNTYsOS4yMkMyMC44NSwxMC4wOSAyMSwxMS4wMyAyMSwxMkMyMSwxMy40NCAyMC42MywxNC43OSAyMC4wMywxNkgxOUwxOC4xNiwxMi42NkwxOS42Niw5LjY2TDIwLjU2LDkuMjJNOCwxMEgxMUwxMy44MSwxMy4yOEwxMiwxNkw4Ljg0LDE2Ljc4TDYuNTMsMTMuNjlMOCwxME0xMiwxN0wxNSwxOUwxNC4xMywyMC43MkMxMy40NCwyMC44OCAxMi43MywyMSAxMiwyMUMxMC4yNSwyMSA4LjYzLDIwLjUgNy4yNSwxOS42M0w4LjQxLDE3LjkxTDEyLDE3TTE5LDE3SDE5LjVDMTguNSwxOC41IDE3LDE5LjY3IDE1LjMxLDIwLjM0TDE2LDE5TDE5LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvY2NlckZpZWxkID0gXCJNNCw0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QzIyLDQuODkgMjEuMSw0IDIwLDRINE00LDZIMTFWOC4xM0M5LjI0LDguNTkgOCwxMC4xOCA4LDEyQzgsMTMuODIgOS4yNCwxNS40MSAxMSwxNS44N1YxOEg0VjE2SDdWOEg0VjZNMTMsNkgyMFY4SDE3VjE2SDIwVjE4SDEzVjE1Ljg3QzE0Ljc2LDE1LjQxIDE2LDEzLjgyIDE2LDEyQzE2LDEwLjE4IDE0Ljc2LDguNTkgMTMsOC4xM1Y2TTQsMTBINVYxNEg0VjEwTTE5LDEwSDIwVjE0SDE5VjEwTTEzLDEwLjI3QzEzLjYyLDEwLjYzIDE0LDExLjI5IDE0LDEyQzE0LDEyLjcxIDEzLjYyLDEzLjM3IDEzLDEzLjczVjEwLjI3TTExLDEwLjI3VjEzLjczQzEwLjM4LDEzLjM3IDEwLDEyLjcxIDEwLDEyQzEwLDExLjI5IDEwLjM4LDEwLjYzIDExLDEwLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvY2lhbERpc3RhbmNlMk1ldGVycyA9IFwiTTYgNkM3LjEgNiA4IDUuMSA4IDRTNy4xIDIgNiAyIDQgMi45IDQgNCA0LjkgNiA2IDZNMTAgOS40M0MxMCA4LjYyIDkuNSA3LjkgOC43OCA3LjU4QzcuOTMgNy4yMSA3IDcgNiA3UzQuMDcgNy4yMSAzLjIyIDcuNThDMi41IDcuOSAyIDguNjIgMiA5LjQzVjEwSDEwVjkuNDNNMTggNkMxOS4xIDYgMjAgNS4xIDIwIDRTMTkuMSAyIDE4IDIgMTYgMi45IDE2IDQgMTYuOSA2IDE4IDZNMjIgOS40M0MyMiA4LjYyIDIxLjUgNy45IDIwLjc4IDcuNThDMTkuOTMgNy4yMSAxOSA3IDE4IDdTMTYuMDcgNy4yMSAxNS4yMiA3LjU4QzE0LjUgNy45IDE0IDguNjIgMTQgOS40M1YxMEgyMlY5LjQzTTE5IDE3VjE1TDUgMTVWMTdMMiAxNEw1IDExVjEzTDE5IDEzVjExTDIyIDE0TDE5IDE3TTkgMjAuNVYyMUgxMVYyMkg4VjIwLjVDOCAxOS45NSA4LjQ1IDE5LjUgOSAxOS41SDEwVjE5SDhWMThIMTBDMTAuNTUgMTggMTEgMTguNDUgMTEgMTlWMTkuNUMxMSAyMC4wNSAxMC41NSAyMC41IDEwIDIwLjVIOU0xNiAxOVYyMkgxNVYxOUgxNC41VjIxSDEzLjVWMTlIMTNWMjJIMTJWMTlDMTIgMTguNDUgMTIuNDUgMTggMTMgMThIMTVDMTUuNTUgMTggMTYgMTguNDUgMTYgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29jaWFsRGlzdGFuY2U2RmVldCA9IFwiTTYgNkM3LjEgNiA4IDUuMSA4IDRTNy4xIDIgNiAyIDQgMi45IDQgNCA0LjkgNiA2IDZNMTAgOS40M0MxMCA4LjYyIDkuNSA3LjkgOC43OCA3LjU4QzcuOTMgNy4yMSA3IDcgNiA3UzQuMDcgNy4yMSAzLjIyIDcuNThDMi41IDcuOSAyIDguNjIgMiA5LjQzVjEwSDEwVjkuNDNNMTggNkMxOS4xIDYgMjAgNS4xIDIwIDRTMTkuMSAyIDE4IDIgMTYgMi45IDE2IDQgMTYuOSA2IDE4IDZNMjIgOS40M0MyMiA4LjYyIDIxLjUgNy45IDIwLjc4IDcuNThDMTkuOTMgNy4yMSAxOSA3IDE4IDdTMTYuMDcgNy4yMSAxNS4yMiA3LjU4QzE0LjUgNy45IDE0IDguNjIgMTQgOS40M1YxMEgyMlY5LjQzTTE5IDE3VjE1SDVWMTdMMiAxNEw1IDExVjEzSDE5VjExTDIyIDE0TDE5IDE3TTEwIDE5VjE4SDcuNUM3LjIyIDE4IDcgMTguMjIgNyAxOC41VjIxLjVDNyAyMS43OCA3LjIyIDIyIDcuNSAyMkg5LjVDOS43OCAyMiAxMCAyMS43OCAxMCAyMS41VjIwQzEwIDE5LjcyIDkuNzggMTkuNSA5LjUgMTkuNUg4VjE5SDEwTTkgMjAuNVYyMUg4VjIwLjVIOU0xNy41IDE5SDE2LjVWMjJIMTUuNVYxOUgxNC41VjE4SDE3LjVWMTlNMTIuNSAxOVYxOS41SDEzLjVWMjAuNUgxMi41VjIySDExLjVWMThIMTRWMTlIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2ZhID0gXCJNMTIuNSA3QzEyLjUgNS44OSAxMy4zOSA1IDE0LjUgNUgxOEMxOS4xIDUgMjAgNS45IDIwIDdWOS4xNkMxOC44NCA5LjU3IDE4IDEwLjY3IDE4IDExLjk3VjE0SDEyLjVWN002IDExLjk2VjE0SDExLjVWN0MxMS41IDUuODkgMTAuNjEgNSA5LjUgNUg2QzQuOSA1IDQgNS45IDQgN1Y5LjE1QzUuMTYgOS41NiA2IDEwLjY3IDYgMTEuOTZNMjAuNjYgMTAuMDNDMTkuNjggMTAuMTkgMTkgMTEuMTIgMTkgMTIuMTJWMTVINVYxMkM1IDEwLjkgNC4xMSAxMCAzIDEwUzEgMTAuOSAxIDEyVjE3QzEgMTguMSAxLjkgMTkgMyAxOVYyMUg1VjE5SDE5VjIxSDIxVjE5QzIyLjEgMTkgMjMgMTguMSAyMyAxN1YxMkMyMyAxMC43OSAyMS45MSA5LjgyIDIwLjY2IDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvZmFPdXRsaW5lID0gXCJNMjEgOVY3QzIxIDUuMzUgMTkuNjUgNCAxOCA0SDE0QzEzLjIzIDQgMTIuNTMgNC4zIDEyIDQuNzhDMTEuNDcgNC4zIDEwLjc3IDQgMTAgNEg2QzQuMzUgNCAzIDUuMzUgMyA3VjlDMS4zNSA5IDAgMTAuMzUgMCAxMlYxN0MwIDE4LjY1IDEuMzUgMjAgMyAyMFYyMkg1VjIwSDE5VjIySDIxVjIwQzIyLjY1IDIwIDI0IDE4LjY1IDI0IDE3VjEyQzI0IDEwLjM1IDIyLjY1IDkgMjEgOU0xNCA2SDE4QzE4LjU1IDYgMTkgNi40NSAxOSA3VjkuNzhDMTguMzkgMTAuMzMgMTggMTEuMTIgMTggMTJWMTRIMTNWN0MxMyA2LjQ1IDEzLjQ1IDYgMTQgNk01IDdDNSA2LjQ1IDUuNDUgNiA2IDZIMTBDMTAuNTUgNiAxMSA2LjQ1IDExIDdWMTRINlYxMkM2IDExLjEyIDUuNjEgMTAuMzMgNSA5Ljc4VjdNMjIgMTdDMjIgMTcuNTUgMjEuNTUgMTggMjEgMThIM0MyLjQ1IDE4IDIgMTcuNTUgMiAxN1YxMkMyIDExLjQ1IDIuNDUgMTEgMyAxMVM0IDExLjQ1IDQgMTJWMTZIMjBWMTJDMjAgMTEuNDUgMjAuNDUgMTEgMjEgMTFTMjIgMTEuNDUgMjIgMTJWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29mYVNpbmdsZSA9IFwiTTUgOS4xNVY3QzUgNS45IDUuOSA1IDcgNUgxN0MxOC4xIDUgMTkgNS45IDE5IDdWOS4xNkMxNy44NCA5LjU3IDE3IDEwLjY3IDE3IDExLjk3VjE0SDdWMTEuOTZDNyAxMC42NyA2LjE2IDkuNTYgNSA5LjE1TTIwIDEwQzE4LjkgMTAgMTggMTAuOSAxOCAxMlYxNUg2VjEyQzYgMTAuOSA1LjExIDEwIDQgMTBTMiAxMC45IDIgMTJWMTdDMiAxOC4xIDIuOSAxOSA0IDE5VjIxSDZWMTlIMThWMjFIMjBWMTlDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjEyQzIyIDEwLjkgMjEuMSAxMCAyMCAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2ZhU2luZ2xlT3V0bGluZSA9IFwiTTE5IDlWN0MxOSA1LjM1IDE3LjY1IDQgMTYgNEg4QzYuMzUgNCA1IDUuMzUgNSA3VjlDMy4zNSA5IDIgMTAuMzUgMiAxMlYxN0MyIDE4LjY1IDMuMzUgMjAgNSAyMFYyMkg3VjIwSDE3VjIySDE5VjIwQzIwLjY1IDIwIDIyIDE4LjY1IDIyIDE3VjEyQzIyIDEwLjM1IDIwLjY1IDkgMTkgOU03IDdDNyA2LjQ1IDcuNDUgNiA4IDZIMTZDMTYuNTUgNiAxNyA2LjQ1IDE3IDdWOS43OEMxNi4zOSAxMC4zMyAxNiAxMS4xMiAxNiAxMlYxNEg4VjEyQzggMTEuMTIgNy42MSAxMC4zMyA3IDkuNzhWN00yMCAxN0MyMCAxNy41NSAxOS41NSAxOCAxOSAxOEg1QzQuNDUgMTggNCAxNy41NSA0IDE3VjEyQzQgMTEuNDUgNC40NSAxMSA1IDExUzYgMTEuNDUgNiAxMlYxNkgxOFYxMkMxOCAxMS40NSAxOC40NSAxMSAxOSAxMVMyMCAxMS40NSAyMCAxMlYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBhbmVsID0gXCJNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE0QTIsMiAwIDAsMSAyMCwxNkgxNVYyMEgxOFYyMkgxM1YxNkgxMVYyMkg2VjIwSDlWMTZINEEyLDIgMCAwLDEgMiwxNFY0QTIsMiAwIDAsMSA0LDJNNCw0VjhIMTFWNEg0TTQsMTRIMTFWMTBINFYxNE0yMCwxNFYxMEgxM1YxNEgyME0yMCw0SDEzVjhIMjBWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBhbmVsTGFyZ2UgPSBcIk0zLDZINlYzSDNWNk04LDNWNkgxMVYzSDhNMTMsM1Y2SDE2VjNIMTNNMTgsM1Y2SDIxVjNIMThNMjEsOEgxOFYxMUgyMVY4TTIxLDEzSDE4VjE2SDIxVjEzTTE2LDE2VjEzSDEzVjE2SDE2TTExLDE2VjEzSDhWMTZIMTFNNiwxNlYxM0gzVjE2SDZNMywxMUg2VjhIM1YxMU0xMyw4VjExSDE2VjhIMTNNOCw4VjExSDExVjhIOE0zLDFIMjFBMiwyIDAgMCwxIDIzLDNWMTZBMiwyIDAgMCwxIDIxLDE4SDE1VjIxSDE4VjIzSDEzVjE4SDExVjIzSDZWMjFIOVYxOEgzQTIsMiAwIDAsMSAxLDE2VjNBMiwyIDAgMCwxIDMsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBvd2VyID0gXCJNMTEuNDUsMlY1LjU1TDE1LDMuNzdMMTEuNDUsMk0xMC40NSw4TDgsMTAuNDZMMTEuNzUsMTEuNzFMMTAuNDUsOE0yLDExLjQ1TDMuNzcsMTVMNS41NSwxMS40NUgyTTEwLDJIMlYxMEMyLjU3LDEwLjE3IDMuMTcsMTAuMjUgMy43NywxMC4yNUM3LjM1LDEwLjI2IDEwLjI2LDcuMzUgMTAuMjcsMy43NUMxMC4yNiwzLjE2IDEwLjE3LDIuNTcgMTAsMk0xNywyMlYxNkgxNEwxOSw3VjEzSDIyTDE3LDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvbGRlcmluZ0lyb24gPSBcIk00Ljg2IDQuMDNMMi4wMyA2Ljg2TDUuMjEgMTAuMDRWMTIuODdMNi42MyAxNC4yOEwxMi4yOCA4LjYzTDEwLjg3IDcuMjFIOC4wNEw0Ljg2IDQuMDNNMTcgNlY3LjVDMTggNy41IDE4Ljg1IDguMzMgMTguODUgOS4zNUMxOC44NSAxMC4zNyAxOCAxMS4yIDE3IDExLjJWMTIuN0MxOS4yNCAxMi43IDIxIDE0LjUzIDIxIDE2Ljc3VjIxSDIyLjVWMTYuNzZDMjIuNSAxNC41NCAyMS4yMiAxMi42MiAxOS4zNSAxMS43M0MxOS45NyAxMS4xMiAyMC4zNSAxMC4yOCAyMC4zNSA5LjM1QzIwLjM1IDcuNSAxOC44NSA2IDE3IDZNMTEuOTMgMTEuMUw5LjEgMTMuOTNMMTQuMDUgMTguODhMMTQuNzYgMTguMTdMMTYuODggMjAuMjlMMTkgMjFMMTguMjkgMTguODhMMTYuMTcgMTYuNzZMMTYuODggMTYuMDVMMTEuOTMgMTEuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xpZCA9IFwiTTAsMEgyNFYyNEgwXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ueVBsYXlzdGF0aW9uID0gXCJNOS41LDQuMjdDMTAuODgsNC41MyAxMi45LDUuMTQgMTQsNS41QzE2Ljc1LDYuNDUgMTcuNjksNy42MyAxNy42OSwxMC4yOUMxNy42OSwxMi44OSAxNi4wOSwxMy44NyAxNC4wNSwxMi44OVY4LjA1QzE0LjA1LDcuNSAxMy45NSw2Ljk3IDEzLjQxLDYuODJDMTMsNi42OSAxMi43Niw3LjA3IDEyLjc2LDcuNjNWMTkuNzNMOS41LDE4LjY5VjQuMjdNMTMuMzcsMTcuNjJMMTguNjIsMTUuNzVDMTkuMjIsMTUuNTQgMTkuMzEsMTUuMjQgMTguODMsMTUuMDhDMTguMzQsMTQuOTIgMTcuNDcsMTQuOTcgMTYuODcsMTUuMThMMTMuMzcsMTYuNDFWMTQuNDVMMTMuNTgsMTQuMzhDMTMuNTgsMTQuMzggMTQuNTksMTQgMTYsMTMuODdDMTcuNDMsMTMuNzEgMTkuMTcsMTMuODkgMjAuNTMsMTQuNEMyMi4wNywxNC44OSAyMi4yNSwxNS42MSAyMS44NiwxNi4xQzIxLjQ2LDE2LjYgMjAuNSwxNi45NSAyMC41LDE2Ljk1TDEzLjM3LDE5LjVWMTcuNjJNMy41LDE3LjQyQzEuOTMsMTcgMS42NiwxNi4wNSAyLjM4LDE1LjVDMy4wNSwxNSA0LjE4LDE0LjY1IDQuMTgsMTQuNjVMOC44NiwxM1YxNC44OEw1LjUsMTYuMDlDNC45LDE2LjMgNC44MSwxNi42IDUuMjksMTYuNzZDNS43NywxNi45MiA2LjY1LDE2Ljg4IDcuMjQsMTYuNjZMOC44NiwxNi4wOFYxNy43N0w4LjU0LDE3LjgzQzYuOTIsMTguMDkgNS4yLDE4IDMuNSwxNy40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0ID0gXCJNMTggMjFMMTQgMTdIMTdWN0gxNEwxOCAzTDIyIDdIMTlWMTdIMjJNMiAxOVYxN0gxMlYxOU0yIDEzVjExSDlWMTNNMiA3VjVINlY3SDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEFscGhhYmV0aWNhbEFzY2VuZGluZyA9IFwiTTE5IDE3SDIyTDE4IDIxTDE0IDE3SDE3VjNIMTlNMTEgMTNWMTVMNy42NyAxOUgxMVYyMUg1VjE5TDguMzMgMTVINVYxM005IDNIN0M1LjkgMyA1IDMuOSA1IDVWMTFIN1Y5SDlWMTFIMTFWNUMxMSAzLjkgMTAuMTEgMyA5IDNNOSA3SDdWNUg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRBbHBoYWJldGljYWxBc2NlbmRpbmdWYXJpYW50ID0gXCJNOS4yNSA1TDEyLjUgMS43NUwxNS43NSA1SDkuMjVNOC44OSAxNC4zSDZMNS4yOCAxN0gyLjkxTDYgN0g5TDEyLjEzIDE3SDkuNjdMOC44OSAxNC4zTTYuMzMgMTIuNjhIOC41Nkw3LjkzIDEwLjU2TDcuNjcgOS41OUw3LjQyIDguNjNINy4zOUw3LjE3IDkuNkw2LjkzIDEwLjU4TDYuMzMgMTIuNjhNMTMuMDUgMTdWMTUuNzRMMTcuOCA4Ljk3VjguOTFIMTMuNVY3SDIwLjczVjguMzRMMTYuMDkgMTVWMTUuMDhIMjAuOFYxN0gxMy4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsRGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTExIDEzVjE1TDcuNjcgMTlIMTFWMjFINVYxOUw4LjMzIDE1SDVWMTNNOSAzSDdDNS45IDMgNSAzLjkgNSA1VjExSDdWOUg5VjExSDExVjVDMTEgMy45IDEwLjExIDMgOSAzTTkgN0g3VjVIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsRGVzY2VuZGluZ1ZhcmlhbnQgPSBcIk0xNS43NSAxOUwxMi41IDIyLjI1TDkuMjUgMTlIMTUuNzVNOC44OSAxNC4zSDZMNS4yOCAxN0gyLjkxTDYgN0g5TDEyLjEzIDE3SDkuNjdMOC44OSAxNC4zTTYuMzMgMTIuNjhIOC41Nkw3LjkzIDEwLjU2TDcuNjcgOS41OUw3LjQyIDguNjNINy4zOUw3LjE3IDkuNkw2LjkzIDEwLjU4TDYuMzMgMTIuNjhNMTMuMDUgMTdWMTUuNzRMMTcuOCA4Ljk3VjguOTFIMTMuNVY3SDIwLjczVjguMzRMMTYuMDkgMTVWMTUuMDhIMjAuOFYxN0gxMy4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsVmFyaWFudCA9IFwiTTkuMjUsNUwxMi41LDEuNzVMMTUuNzUsNUg5LjI1TTE1Ljc1LDE5TDEyLjUsMjIuMjVMOS4yNSwxOUgxNS43NU04Ljg5LDE0LjNINkw1LjI4LDE3SDIuOTFMNiw3SDlMMTIuMTMsMTdIOS42N0w4Ljg5LDE0LjNNNi4zMywxMi42OEg4LjU2TDcuOTMsMTAuNTZMNy42Nyw5LjU5TDcuNDIsOC42M0g3LjM5TDcuMTcsOS42TDYuOTMsMTAuNThMNi4zMywxMi42OE0xMy4wNSwxN1YxNS43NEwxNy44LDguOTdWOC45MUgxMy41VjdIMjAuNzNWOC4zNEwxNi4wOSwxNVYxNS4wOEgyMC44VjE3SDEzLjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5TTIgMTdIMTJWMTlIMk02IDVWN0gyVjVNMiAxMUg5VjEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5VjE3TTcgM0M0Ljc5IDMgMyA0Ljc5IDMgN1M0Ljc5IDExIDcgMTEgMTEgOS4yMSAxMSA3IDkuMjEgMyA3IDNNNyA5QzUuOSA5IDUgOC4xIDUgN1M1LjkgNSA3IDUgOSA1LjkgOSA3IDguMSA5IDcgOU03IDEzQzQuNzkgMTMgMyAxNC43OSAzIDE3UzQuNzkgMjEgNyAyMSAxMSAxOS4yMSAxMSAxNyA5LjIxIDEzIDcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xBc2NlbmRpbmdWYXJpYW50ID0gXCJNMTkgMTdIMjJMMTggMjFMMTQgMTdIMTdWM0gxOVYxN005IDEzSDVDMy44OSAxMyAzIDEzLjg5IDMgMTVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIOUMxMC4xMSAyMSAxMSAyMC4xMSAxMSAxOVYxNUMxMSAxMy44OSAxMC4xMSAxMyA5IDEzTTYuMjcgMTkuNUwzLjc0IDE2Ljk1TDQuODEgMTUuOUw2LjI4IDE3LjM5TDkuMiAxNC41TDEwLjI2IDE1LjU1TDYuMjcgMTkuNU05IDNINUMzLjg5IDMgMyAzLjg5IDMgNVY5QzMgMTAuMTEgMy44OSAxMSA1IDExSDlDMTAuMTEgMTEgMTEgMTAuMTEgMTEgOVY1QzExIDMuODkgMTAuMTEgMyA5IDNNOSA5SDVWNUg5VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xEZXNjZW5kaW5nID0gXCJNMTkgN0gyMkwxOCAzTDE0IDdIMTdWMjFIMTlNNSA3QzUgOC4xIDUuOSA5IDcgOUM4LjEgOSA5IDguMSA5IDdDOSA1LjkgOC4xIDUgNyA1QzUuOSA1IDUgNS45IDUgN003IDNDOS4yMSAzIDExIDQuNzkgMTEgN0MxMSA5LjIxIDkuMjEgMTEgNyAxMUM0Ljc5IDExIDMgOS4yMSAzIDdDMyA0Ljc5IDQuNzkgMyA3IDNNNyAxM0M0Ljc5IDEzIDMgMTQuNzkgMyAxN0MzIDE5LjIxIDQuNzkgMjEgNyAyMUM5LjIxIDIxIDExIDE5LjIxIDExIDE3QzExIDE0Ljc5IDkuMjEgMTMgNyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Qm9vbERlc2NlbmRpbmdWYXJpYW50ID0gXCJNMTkgN0gyMkwxOCAzTDE0IDdIMTdWMjFIMTlNNSAxM0MzLjg5IDEzIDMgMTMuODkgMyAxNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUg5QzEwLjExIDIxIDExIDIwLjExIDExIDE5VjE1QzExIDEzLjg5IDEwLjExIDEzIDkgMTNNOS4yIDE0LjVMMTAuMjYgMTUuNTVMNi4yNyAxOS41TDMuNzQgMTYuOTVMNC44MSAxNS45TDYuMjggMTcuMzlNNSAzQzMuODkgMyAzIDMuODkgMyA1VjlDMyAxMC4xMSAzLjg5IDExIDUgMTFIOUMxMC4xMSAxMSAxMSAxMC4xMSAxMSA5VjVDMTEgMy44OSAxMC4xMSAzIDkgM001IDVIOVY5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENhbGVuZGFyQXNjZW5kaW5nID0gXCJNMjEgMTdIMjRMMjAgMjFMMTYgMTdIMTlWM0gyMVYxN004IDE2SDExVjEzSDhWMTZNMTMgNUgxMlYzSDEwVjVINlYzSDRWNUgzQzEuODkgNSAxIDUuODkgMSA3VjE4QzEgMTkuMTEgMS44OSAyMCAzIDIwSDEzQzE0LjExIDIwIDE1IDE5LjExIDE1IDE4VjdDMTUgNS44OSAxNC4xMSA1IDEzIDVNMyAxOEwzIDExSDEzTDEzIDE4TDMgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENhbGVuZGFyRGVzY2VuZGluZyA9IFwiTTE5IDdIMTZMMjAgM0wyNCA3SDIxVjIxSDE5VjdNOCAxNkgxMVYxM0g4VjE2TTEzIDVIMTJWM0gxMFY1SDZWM0g0VjVIM0MxLjg5IDUgMSA1Ljg5IDEgN1YxOEMxIDE5LjExIDEuODkgMjAgMyAyMEgxM0MxNC4xMSAyMCAxNSAxOS4xMSAxNSAxOFY3QzE1IDUuODkgMTQuMTEgNSAxMyA1TTMgMThMMyAxMUgxM0wxMyAxOEwzIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRDbG9ja0FzY2VuZGluZyA9IFwiTTIwIDE3SDIzTDE5IDIxTDE1IDE3SDE4VjNIMjBWMTdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTEwLjE5IDE0LjUzTDcgMTIuNjlWOUg4LjVWMTEuODJMMTAuOTQgMTMuMjNMMTAuMTkgMTQuNTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENsb2NrQXNjZW5kaW5nT3V0bGluZSA9IFwiTTIwIDE3SDIzTDE5IDIxTDE1IDE3SDE4VjNIMjBWMTdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTggNy4xNUMxMC42NyA3LjE1IDEyLjg1IDkuMzIgMTIuODUgMTJDMTIuODUgMTQuNjggMTAuNjggMTYuODUgOCAxNi44NUM1LjMyIDE2Ljg1IDMuMTUgMTQuNjggMy4xNSAxMkMzLjE1IDkuMzIgNS4zMiA3LjE1IDggNy4xNU03IDlWMTIuNjlMMTAuMTkgMTQuNTNMMTAuOTQgMTMuMjNMOC41IDExLjgyVjlcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Q2xvY2tEZXNjZW5kaW5nID0gXCJNMTggN0gxNUwxOSAzTDIzIDdIMjBWMjFIMThWN004IDVDNC4xNCA1IDEgOC4xMyAxIDEyQzEgMTUuODcgNC4xMyAxOSA4IDE5QzExLjg2IDE5IDE1IDE1Ljg3IDE1IDEyQzE1IDguMTMgMTEuODcgNSA4IDVNMTAuMTkgMTQuNTNMNyAxMi42OVY5SDguNVYxMS44MkwxMC45NCAxMy4yM0wxMC4xOSAxNC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Q2xvY2tEZXNjZW5kaW5nT3V0bGluZSA9IFwiTTE4IDdIMTVMMTkgM0wyMyA3SDIwVjIxSDE4VjdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTggNy4xNUMxMC42NyA3LjE1IDEyLjg1IDkuMzIgMTIuODUgMTJDMTIuODUgMTQuNjggMTAuNjggMTYuODUgOCAxNi44NUM1LjMyIDE2Ljg1IDMuMTUgMTQuNjggMy4xNSAxMkMzLjE1IDkuMzIgNS4zMiA3LjE1IDggNy4xNU03IDlWMTIuNjlMMTAuMTkgMTQuNTNMMTAuOTQgMTMuMjNMOC41IDExLjgyVjlcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0RGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTIgMTdIMTJWMTlIMk02IDVWN0gyVjVNMiAxMUg5VjEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydE51bWVyaWNBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5VjE3TTkgMTNIN0M1LjkgMTMgNSAxMy45IDUgMTVWMTZDNSAxNy4xMSA1LjkgMTggNyAxOEg5VjE5SDVWMjFIOUMxMC4xMSAyMSAxMSAyMC4xMSAxMSAxOVYxNUMxMSAxMy45IDEwLjExIDEzIDkgMTNNOSAxNkg3VjE1SDlWMTZNOSAzSDdDNS45IDMgNSAzLjkgNSA1VjlDNSAxMC4xMSA1LjkgMTEgNyAxMUg5QzEwLjExIDExIDExIDEwLjExIDExIDlWNUMxMSAzLjkgMTAuMTEgMyA5IDNNOSA5SDdWNUg5VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydE51bWVyaWNBc2NlbmRpbmdWYXJpYW50ID0gXCJNNy43OCA3QzkuMDggNy4wNCAxMCA3LjUzIDEwLjU3IDguNDZDMTEuMTMgOS40IDExLjQxIDEwLjU2IDExLjM5IDExLjk1QzExLjQgMTMuNSAxMS4wOSAxNC43MyAxMC41IDE1LjYyQzkuODggMTYuNSA4Ljk1IDE2Ljk3IDcuNzEgMTdDNi40NSAxNi45NiA1LjU0IDE2LjUgNC45NiAxNS41NkM0LjM4IDE0LjYzIDQuMDkgMTMuNDUgNC4wOSAxMlM0LjM5IDkuMzYgNSA4LjQ0QzUuNTkgNy41IDYuNSA3LjA0IDcuNzggN003Ljc1IDguNjNDNy4zMSA4LjYzIDYuOTYgOC45IDYuNyA5LjQ2QzYuNDQgMTAgNi4zMiAxMC44NyA2LjMyIDEyQzYuMzEgMTMuMTUgNi40NCAxNCA2LjY5IDE0LjU0QzYuOTUgMTUuMSA3LjMxIDE1LjM3IDcuNzcgMTUuMzdDOC42OSAxNS4zNyA5LjE2IDE0LjI0IDkuMTcgMTJDOS4xNyA5Ljc3IDguNyA4LjY1IDcuNzUgOC42M00xMy4zMyAxN1YxNS4yMkwxMy43NiAxNS4yNEwxNC4zIDE1LjIyTDE1LjM0IDE1LjAzQzE1LjY4IDE0LjkyIDE2IDE0Ljc4IDE2LjI2IDE0LjU4QzE2LjU5IDE0LjM1IDE2Ljg2IDE0LjA4IDE3LjA3IDEzLjc2QzE3LjI5IDEzLjQ1IDE3LjQ0IDEzLjEyIDE3LjUzIDEyLjc4TDE3LjUgMTIuNzdDMTcuMDUgMTMuMTkgMTYuMzggMTMuNCAxNS40NyAxMy40MUMxNC42MiAxMy40IDEzLjkxIDEzLjE1IDEzLjM0IDEyLjY1UzEyLjUgMTEuNDMgMTIuNDYgMTAuNUMxMi40NyA5LjUgMTIuODEgOC42OSAxMy40NyA4LjAzQzE0LjE0IDcuMzcgMTUgNy4wMyAxNi4xMiA3QzE3LjM3IDcuMDQgMTguMjkgNy40NSAxOC44OCA4LjI0QzE5LjQ3IDkgMTkuNzYgMTAgMTkuNzYgMTEuMTlDMTkuNzUgMTIuMTUgMTkuNjEgMTMgMTkuMzIgMTMuNzZDMTkuMDMgMTQuNSAxOC42NCAxNS4xMyAxOC4xMiAxNS42NEMxNy42NiAxNi4wNiAxNy4xMSAxNi4zOCAxNi40NyAxNi42MUMxNS44MyAxNi44MyAxNS4xMiAxNi45NiAxNC4zNCAxN0gxMy4zM00xNi4wNiA4LjYzQzE1LjY1IDguNjQgMTUuMzIgOC44IDE1LjA2IDkuMTFDMTQuODEgOS40MiAxNC42OCA5Ljg0IDE0LjY4IDEwLjM2QzE0LjY4IDEwLjggMTQuOCAxMS4xNiAxNS4wMyAxMS40NkMxNS4yNyAxMS43NyAxNS42MyAxMS45MiAxNi4xMSAxMS45M0MxNi40MyAxMS45MyAxNi43IDExLjg2IDE2LjkyIDExLjc0QzE3LjE0IDExLjYxIDE3LjMgMTEuNDYgMTcuNDEgMTEuMjhDMTcuNSAxMS4xNyAxNy41MyAxMC45NyAxNy41MyAxMC43MUMxNy41NCAxMC4xNiAxNy40MyA5LjY5IDE3LjIgOS4yOEMxNi45NyA4Ljg3IDE2LjU5IDguNjUgMTYuMDYgOC42M005LjI1IDVMMTIuNSAxLjc1TDE1Ljc1IDVIOS4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnROdW1lcmljRGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTkgMjFINVYxOUg5VjE4SDdDNS45IDE4IDUgMTcuMTEgNSAxNlYxNUM1IDEzLjkgNS45IDEzIDcgMTNIOUMxMC4xMSAxMyAxMSAxMy45IDExIDE1VjE5QzExIDIwLjExIDEwLjExIDIxIDkgMjFNOSAxNUg3VjE2SDlNNyAzSDlDMTAuMTEgMyAxMSAzLjkgMTEgNVY5QzExIDEwLjExIDEwLjExIDExIDkgMTFIN0M1LjkgMTEgNSAxMC4xMSA1IDlWNUM1IDMuOSA1LjkgMyA3IDNNNyA5SDlWNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnROdW1lcmljRGVzY2VuZGluZ1ZhcmlhbnQgPSBcIk03Ljc4IDdDOS4wOCA3LjA0IDEwIDcuNTMgMTAuNTcgOC40NkMxMS4xMyA5LjQgMTEuNDEgMTAuNTYgMTEuMzkgMTEuOTVDMTEuNCAxMy41IDExLjA5IDE0LjczIDEwLjUgMTUuNjJDOS44OCAxNi41IDguOTUgMTYuOTcgNy43MSAxN0M2LjQ1IDE2Ljk2IDUuNTQgMTYuNSA0Ljk2IDE1LjU2QzQuMzggMTQuNjMgNC4wOSAxMy40NSA0LjA5IDEyUzQuMzkgOS4zNiA1IDguNDRDNS41OSA3LjUgNi41IDcuMDQgNy43OCA3TTcuNzUgOC42M0M3LjMxIDguNjMgNi45NiA4LjkgNi43IDkuNDZDNi40NCAxMCA2LjMyIDEwLjg3IDYuMzIgMTJDNi4zMSAxMy4xNSA2LjQ0IDE0IDYuNjkgMTQuNTRDNi45NSAxNS4xIDcuMzEgMTUuMzcgNy43NyAxNS4zN0M4LjY5IDE1LjM3IDkuMTYgMTQuMjQgOS4xNyAxMkM5LjE3IDkuNzcgOC43IDguNjUgNy43NSA4LjYzTTEzLjMzIDE3VjE1LjIyTDEzLjc2IDE1LjI0TDE0LjMgMTUuMjJMMTUuMzQgMTUuMDNDMTUuNjggMTQuOTIgMTYgMTQuNzggMTYuMjYgMTQuNThDMTYuNTkgMTQuMzUgMTYuODYgMTQuMDggMTcuMDcgMTMuNzZDMTcuMjkgMTMuNDUgMTcuNDQgMTMuMTIgMTcuNTMgMTIuNzhMMTcuNSAxMi43N0MxNy4wNSAxMy4xOSAxNi4zOCAxMy40IDE1LjQ3IDEzLjQxQzE0LjYyIDEzLjQgMTMuOTEgMTMuMTUgMTMuMzQgMTIuNjVTMTIuNSAxMS40MyAxMi40NiAxMC41QzEyLjQ3IDkuNSAxMi44MSA4LjY5IDEzLjQ3IDguMDNDMTQuMTQgNy4zNyAxNSA3LjAzIDE2LjEyIDdDMTcuMzcgNy4wNCAxOC4yOSA3LjQ1IDE4Ljg4IDguMjRDMTkuNDcgOSAxOS43NiAxMCAxOS43NiAxMS4xOUMxOS43NSAxMi4xNSAxOS42MSAxMyAxOS4zMiAxMy43NkMxOS4wMyAxNC41IDE4LjY0IDE1LjEzIDE4LjEyIDE1LjY0QzE3LjY2IDE2LjA2IDE3LjExIDE2LjM4IDE2LjQ3IDE2LjYxQzE1LjgzIDE2LjgzIDE1LjEyIDE2Ljk2IDE0LjM0IDE3SDEzLjMzTTE2LjA2IDguNjNDMTUuNjUgOC42NCAxNS4zMiA4LjggMTUuMDYgOS4xMUMxNC44MSA5LjQyIDE0LjY4IDkuODQgMTQuNjggMTAuMzZDMTQuNjggMTAuOCAxNC44IDExLjE2IDE1LjAzIDExLjQ2QzE1LjI3IDExLjc3IDE1LjYzIDExLjkyIDE2LjExIDExLjkzQzE2LjQzIDExLjkzIDE2LjcgMTEuODYgMTYuOTIgMTEuNzRDMTcuMTQgMTEuNjEgMTcuMyAxMS40NiAxNy40MSAxMS4yOEMxNy41IDExLjE3IDE3LjUzIDEwLjk3IDE3LjUzIDEwLjcxQzE3LjU0IDEwLjE2IDE3LjQzIDkuNjkgMTcuMiA5LjI4QzE2Ljk3IDguODcgMTYuNTkgOC42NSAxNi4wNiA4LjYzTTE1Ljc1IDE5TDEyLjUgMjIuMjVMOS4yNSAxOUgxNS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0TnVtZXJpY1ZhcmlhbnQgPSBcIk03Ljc4LDdDOS4wOCw3LjA0IDEwLDcuNTMgMTAuNTcsOC40NkMxMS4xMyw5LjQgMTEuNDEsMTAuNTYgMTEuMzksMTEuOTVDMTEuNCwxMy41IDExLjA5LDE0LjczIDEwLjUsMTUuNjJDOS44OCwxNi41IDguOTUsMTYuOTcgNy43MSwxN0M2LjQ1LDE2Ljk2IDUuNTQsMTYuNSA0Ljk2LDE1LjU2QzQuMzgsMTQuNjMgNC4wOSwxMy40NSA0LjA5LDEyQzQuMDksMTAuNTUgNC4zOSw5LjM2IDUsOC40NEM1LjU5LDcuNSA2LjUsNy4wNCA3Ljc4LDdNNy43NSw4LjYzQzcuMzEsOC42MyA2Ljk2LDguOSA2LjcsOS40NkM2LjQ0LDEwIDYuMzIsMTAuODcgNi4zMiwxMkM2LjMxLDEzLjE1IDYuNDQsMTQgNi42OSwxNC41NEM2Ljk1LDE1LjEgNy4zMSwxNS4zNyA3Ljc3LDE1LjM3QzguNjksMTUuMzcgOS4xNiwxNC4yNCA5LjE3LDEyQzkuMTcsOS43NyA4LjcsOC42NSA3Ljc1LDguNjNNMTMuMzMsMTdWMTUuMjJMMTMuNzYsMTUuMjRMMTQuMywxNS4yMkwxNS4zNCwxNS4wM0MxNS42OCwxNC45MiAxNiwxNC43OCAxNi4yNiwxNC41OEMxNi41OSwxNC4zNSAxNi44NiwxNC4wOCAxNy4wNywxMy43NkMxNy4yOSwxMy40NSAxNy40NCwxMy4xMiAxNy41MywxMi43OEwxNy41LDEyLjc3QzE3LjA1LDEzLjE5IDE2LjM4LDEzLjQgMTUuNDcsMTMuNDFDMTQuNjIsMTMuNCAxMy45MSwxMy4xNSAxMy4zNCwxMi42NUMxMi43NywxMi4xNSAxMi41LDExLjQzIDEyLjQ2LDEwLjVDMTIuNDcsOS41IDEyLjgxLDguNjkgMTMuNDcsOC4wM0MxNC4xNCw3LjM3IDE1LDcuMDMgMTYuMTIsN0MxNy4zNyw3LjA0IDE4LjI5LDcuNDUgMTguODgsOC4yNEMxOS40Nyw5IDE5Ljc2LDEwIDE5Ljc2LDExLjE5QzE5Ljc1LDEyLjE1IDE5LjYxLDEzIDE5LjMyLDEzLjc2QzE5LjAzLDE0LjUgMTguNjQsMTUuMTMgMTguMTIsMTUuNjRDMTcuNjYsMTYuMDYgMTcuMTEsMTYuMzggMTYuNDcsMTYuNjFDMTUuODMsMTYuODMgMTUuMTIsMTYuOTYgMTQuMzQsMTdIMTMuMzNNMTYuMDYsOC42M0MxNS42NSw4LjY0IDE1LjMyLDguOCAxNS4wNiw5LjExQzE0LjgxLDkuNDIgMTQuNjgsOS44NCAxNC42OCwxMC4zNkMxNC42OCwxMC44IDE0LjgsMTEuMTYgMTUuMDMsMTEuNDZDMTUuMjcsMTEuNzcgMTUuNjMsMTEuOTIgMTYuMTEsMTEuOTNDMTYuNDMsMTEuOTMgMTYuNywxMS44NiAxNi45MiwxMS43NEMxNy4xNCwxMS42MSAxNy4zLDExLjQ2IDE3LjQxLDExLjI4QzE3LjUsMTEuMTcgMTcuNTMsMTAuOTcgMTcuNTMsMTAuNzFDMTcuNTQsMTAuMTYgMTcuNDMsOS42OSAxNy4yLDkuMjhDMTYuOTcsOC44NyAxNi41OSw4LjY1IDE2LjA2LDguNjNNOS4yNSw1TDEyLjUsMS43NUwxNS43NSw1SDkuMjVNMTUuNzUsMTlMMTIuNSwyMi4yNUw5LjI1LDE5SDE1Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRSZXZlcnNlVmFyaWFudCA9IFwiTTMgMTFIMTVWMTNIM00zIDE4VjE2SDIxVjE4TTMgNkg5VjhIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0VmFyaWFudCA9IFwiTTMsMTNIMTVWMTFIM00zLDZWOEgyMVY2TTMsMThIOVYxNkgzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRWYXJpYW50TG9jayA9IFwiTTMsMTNWMTFIMTVWMTNIM00zLDZIMjFWOEgzVjZNMywxOFYxNkg5VjE4SDNNMjIsMjJIMTRWMThIMTVWMTdBMywzIDAgMCwxIDE4LDE0QTMsMyAwIDAsMSAyMSwxN1YxOEgyMlYyMk0xOCwxNkExLDEgMCAwLDAgMTcsMTdWMThIMTlWMTdBMSwxIDAgMCwwIDE4LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRWYXJpYW50TG9ja09wZW4gPSBcIk0zLDEzVjExSDE1VjEzSDNNMyw2SDIxVjhIM1Y2TTMsMThWMTZIOVYxOEgzTTIyLDIySDE0VjE4SDE1VjE2QTMsMyAwIDAsMSAxOCwxM0EzLDMgMCAwLDEgMjEsMTZIMTlBMSwxIDAgMCwwIDE4LDE1QTEsMSAwIDAsMCAxNywxNlYxOEgyMlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0VmFyaWFudFJlbW92ZSA9IFwiTTMgMTNIMTVWMTFIM00zIDZWOEgyMVY2TTMgMThIOVYxNkgzVjE4TTIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ2TDIyLjU0IDE2Ljg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpU291bmRjbG91ZCA9IFwiTTExLjU2LDguODdWMTdIMjAuMzJWMTdDMjIuMTcsMTYuODcgMjMsMTUuNzMgMjMsMTQuMzNDMjMsMTIuODUgMjEuODgsMTEuNjYgMjAuMzgsMTEuNjZDMjAsMTEuNjYgMTkuNjgsMTEuNzQgMTkuMzUsMTEuODhDMTkuMTEsOS41NCAxNy4xMiw3LjcxIDE0LjY3LDcuNzFDMTMuNSw3LjcxIDEyLjM5LDguMTUgMTEuNTYsOC44N00xMC42OCw5Ljg5QzEwLjM4LDkuNzEgMTAuMDYsOS41NyA5LjcxLDkuNVYxN0gxMS4xVjkuMzRDMTAuOTUsOS41IDEwLjgxLDkuNyAxMC42OCw5Ljg5TTguMzMsOS4zNVYxN0g5LjI1VjkuMzhDOS4wNiw5LjM1IDguODcsOS4zNCA4LjY3LDkuMzRDOC41NSw5LjM0IDguNDQsOS4zNCA4LjMzLDkuMzVNNi41LDEwVjE3SDcuNDFWOS41NEM3LjA4LDkuNjUgNi43Nyw5LjgxIDYuNSwxME00LjgzLDEyLjVDNC43NywxMi41IDQuNzEsMTIuNDQgNC42NCwxMi40MVYxN0g1LjU2VjEwLjg2QzUuMTksMTEuMzQgNC45NCwxMS45MSA0LjgzLDEyLjVNMi43OSwxMi4yMlYxNi45MUMzLDE2Ljk3IDMuMjQsMTcgMy41LDE3SDMuNzJWMTIuMTRDMy42NCwxMi4xMyAzLjU2LDEyLjEyIDMuNSwxMi4xMkMzLjI0LDEyLjEyIDMsMTIuMTYgMi43OSwxMi4yMk0xLDE0LjU2QzEsMTUuMzEgMS4zNCwxNS45NyAxLjg3LDE2LjQyVjEyLjcxQzEuMzQsMTMuMTUgMSwxMy44MiAxLDE0LjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUJyYW5jaCA9IFwiTTEzLDE0QzkuNjQsMTQgOC41NCwxNS4zNSA4LjE4LDE2LjI0QzkuMjUsMTYuNyAxMCwxNy43NiAxMCwxOUEzLDMgMCAwLDEgNywyMkEzLDMgMCAwLDEgNCwxOUM0LDE3LjY5IDQuODMsMTYuNTggNiwxNi4xN1Y3LjgzQzQuODMsNy40MiA0LDYuMzEgNCw1QTMsMyAwIDAsMSA3LDJBMywzIDAgMCwxIDEwLDVDMTAsNi4zMSA5LjE3LDcuNDIgOCw3LjgzVjEzLjEyQzguODgsMTIuNDcgMTAuMTYsMTIgMTIsMTJDMTQuNjcsMTIgMTUuNTYsMTAuNjYgMTUuODUsOS43N0MxNC43Nyw5LjMyIDE0LDguMjUgMTQsN0EzLDMgMCAwLDEgMTcsNEEzLDMgMCAwLDEgMjAsN0MyMCw4LjM0IDE5LjEyLDkuNSAxNy45MSw5Ljg2QzE3LjY1LDExLjI5IDE2LjY4LDE0IDEzLDE0TTcsMThBMSwxIDAgMCwwIDYsMTlBMSwxIDAgMCwwIDcsMjBBMSwxIDAgMCwwIDgsMTlBMSwxIDAgMCwwIDcsMThNNyw0QTEsMSAwIDAsMCA2LDVBMSwxIDAgMCwwIDcsNkExLDEgMCAwLDAgOCw1QTEsMSAwIDAsMCA3LDRNMTcsNkExLDEgMCAwLDAgMTYsN0ExLDEgMCAwLDAgMTcsOEExLDEgMCAwLDAgMTgsN0ExLDEgMCAwLDAgMTcsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VCcmFuY2hDaGVjayA9IFwiTTEzIDE0QzkuNjQgMTQgOC41NCAxNS4zNSA4LjE4IDE2LjI0QzkuMjUgMTYuNyAxMCAxNy43NiAxMCAxOUMxMCAyMC42NiA4LjY2IDIyIDcgMjJTNCAyMC42NiA0IDE5QzQgMTcuNjkgNC44MyAxNi41OCA2IDE2LjE3VjcuODNDNC44MyA3LjQyIDQgNi4zMSA0IDVDNCAzLjM0IDUuMzQgMiA3IDJTMTAgMy4zNCAxMCA1QzEwIDYuMzEgOS4xNyA3LjQyIDggNy44M1YxMy4xMkM4Ljg4IDEyLjQ3IDEwLjE2IDEyIDEyIDEyQzE0LjY3IDEyIDE1LjU2IDEwLjY2IDE1Ljg1IDkuNzdDMTQuNzcgOS4zMiAxNCA4LjI1IDE0IDdDMTQgNS4zNCAxNS4zNCA0IDE3IDRTMjAgNS4zNCAyMCA3QzIwIDguMzQgMTkuMTIgOS41IDE3LjkxIDkuODZDMTcuNjUgMTEuMjkgMTYuNjggMTQgMTMgMTRNNyAxOEM2LjQ1IDE4IDYgMTguNDUgNiAxOVM2LjQ1IDIwIDcgMjAgOCAxOS41NSA4IDE5IDcuNTUgMTggNyAxOE03IDRDNi40NSA0IDYgNC40NSA2IDVTNi40NSA2IDcgNiA4IDUuNTUgOCA1IDcuNTUgNCA3IDRNMTcgNkMxNi40NSA2IDE2IDYuNDUgMTYgN1MxNi40NSA4IDE3IDggMTggNy41NSAxOCA3IDE3LjU1IDYgMTcgNk0xNi43NSAyMS4xNkwxNCAxOC4xNkwxNS4xNiAxN0wxNi43NSAxOC41OUwyMC4zNCAxNUwyMS41IDE2LjQxTDE2Ljc1IDIxLjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoTWludXMgPSBcIk0xMyAxNEM5LjY0IDE0IDguNTQgMTUuMzUgOC4xOCAxNi4yNEM5LjI1IDE2LjcgMTAgMTcuNzYgMTAgMTlDMTAgMjAuNjYgOC42NiAyMiA3IDIyUzQgMjAuNjYgNCAxOUM0IDE3LjY5IDQuODMgMTYuNTggNiAxNi4xN1Y3LjgzQzQuODMgNy40MiA0IDYuMzEgNCA1QzQgMy4zNCA1LjM0IDIgNyAyUzEwIDMuMzQgMTAgNUMxMCA2LjMxIDkuMTcgNy40MiA4IDcuODNWMTMuMTJDOC44OCAxMi40NyAxMC4xNiAxMiAxMiAxMkMxNC42NyAxMiAxNS41NiAxMC42NiAxNS44NSA5Ljc3QzE0Ljc3IDkuMzIgMTQgOC4yNSAxNCA3QzE0IDUuMzQgMTUuMzQgNCAxNyA0UzIwIDUuMzQgMjAgN0MyMCA4LjM0IDE5LjEyIDkuNSAxNy45MSA5Ljg2QzE3LjY1IDExLjI5IDE2LjY4IDE0IDEzIDE0TTcgMThDNi40NSAxOCA2IDE4LjQ1IDYgMTlTNi40NSAyMCA3IDIwIDggMTkuNTUgOCAxOSA3LjU1IDE4IDcgMThNNyA0QzYuNDUgNCA2IDQuNDUgNiA1UzYuNDUgNiA3IDYgOCA1LjU1IDggNSA3LjU1IDQgNyA0TTE3IDZDMTYuNDUgNiAxNiA2LjQ1IDE2IDdTMTYuNDUgOCAxNyA4IDE4IDcuNTUgMTggNyAxNy41NSA2IDE3IDZNMTQgMTdWMTlIMjJWMTdIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoUGx1cyA9IFwiTTEzIDE0QzkuNjQgMTQgOC41NCAxNS4zNSA4LjE4IDE2LjI0QzkuMjUgMTYuNyAxMCAxNy43NiAxMCAxOUMxMCAyMC42NiA4LjY2IDIyIDcgMjJTNCAyMC42NiA0IDE5QzQgMTcuNjkgNC44MyAxNi41OCA2IDE2LjE3VjcuODNDNC44MyA3LjQyIDQgNi4zMSA0IDVDNCAzLjM0IDUuMzQgMiA3IDJTMTAgMy4zNCAxMCA1QzEwIDYuMzEgOS4xNyA3LjQyIDggNy44M1YxMy4xMkM4Ljg4IDEyLjQ3IDEwLjE2IDEyIDEyIDEyQzE0LjY3IDEyIDE1LjU2IDEwLjY2IDE1Ljg1IDkuNzdDMTQuNzcgOS4zMiAxNCA4LjI1IDE0IDdDMTQgNS4zNCAxNS4zNCA0IDE3IDRTMjAgNS4zNCAyMCA3QzIwIDguMzQgMTkuMTIgOS41IDE3LjkxIDkuODZDMTcuNjUgMTEuMjkgMTYuNjggMTQgMTMgMTRNNyAxOEM2LjQ1IDE4IDYgMTguNDUgNiAxOVM2LjQ1IDIwIDcgMjAgOCAxOS41NSA4IDE5IDcuNTUgMTggNyAxOE03IDRDNi40NSA0IDYgNC40NSA2IDVTNi40NSA2IDcgNiA4IDUuNTUgOCA1IDcuNTUgNCA3IDRNMTcgNkMxNi40NSA2IDE2IDYuNDUgMTYgN1MxNi40NSA4IDE3IDggMTggNy41NSAxOCA3IDE3LjU1IDYgMTcgNk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VCcmFuY2hSZWZyZXNoID0gXCJNMTMgMTRDOS42NCAxNCA4LjU0IDE1LjM1IDguMTggMTYuMjRDOS4yNSAxNi43IDEwIDE3Ljc2IDEwIDE5QzEwIDIwLjY2IDguNjYgMjIgNyAyMlM0IDIwLjY2IDQgMTlDNCAxNy42OSA0LjgzIDE2LjU4IDYgMTYuMTdWNy44M0M0LjgzIDcuNDIgNCA2LjMxIDQgNUM0IDMuMzQgNS4zNCAyIDcgMlMxMCAzLjM0IDEwIDVDMTAgNi4zMSA5LjE3IDcuNDIgOCA3LjgzVjEzLjEyQzguODggMTIuNDcgMTAuMTYgMTIgMTIgMTJDMTQuNjcgMTIgMTUuNTYgMTAuNjYgMTUuODUgOS43N0MxNC43NyA5LjMyIDE0IDguMjUgMTQgN0MxNCA1LjM0IDE1LjM0IDQgMTcgNFMyMCA1LjM0IDIwIDdDMjAgOC4zNCAxOS4xMiA5LjUgMTcuOTEgOS44NkMxNy42NSAxMS4yOSAxNi42OCAxNCAxMyAxNE03IDE4QzYuNDUgMTggNiAxOC40NSA2IDE5UzYuNDUgMjAgNyAyMCA4IDE5LjU1IDggMTkgNy41NSAxOCA3IDE4TTcgNEM2LjQ1IDQgNiA0LjQ1IDYgNVM2LjQ1IDYgNyA2IDggNS41NSA4IDUgNy41NSA0IDcgNE0xNyA2QzE2LjQ1IDYgMTYgNi40NSAxNiA3UzE2LjQ1IDggMTcgOCAxOCA3LjU1IDE4IDcgMTcuNTUgNiAxNyA2TTE4IDE0QzE5LjEgMTQgMjAuMSAxNC40IDIwLjggMTUuMkwyMiAxNFYxOEgxOEwxOS44IDE2LjJDMTkuMyAxNS44IDE4LjcgMTUuNSAxOCAxNS41QzE2LjYgMTUuNSAxNS41IDE2LjYgMTUuNSAxOFMxNi42IDIwLjUgMTggMjAuNUMxOC44IDIwLjUgMTkuNSAyMC4xIDIwIDE5LjVIMjEuN0MyMS4xIDIxIDE5LjcgMjIgMTggMjJDMTUuOCAyMiAxNCAyMC4yIDE0IDE4UzE1LjggMTQgMTggMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoUmVtb3ZlID0gXCJNMTMgMTRDOS42NCAxNCA4LjU0IDE1LjM1IDguMTggMTYuMjRDOS4yNSAxNi43IDEwIDE3Ljc2IDEwIDE5QzEwIDIwLjY2IDguNjYgMjIgNyAyMlM0IDIwLjY2IDQgMTlDNCAxNy42OSA0LjgzIDE2LjU4IDYgMTYuMTdWNy44M0M0LjgzIDcuNDIgNCA2LjMxIDQgNUM0IDMuMzQgNS4zNCAyIDcgMlMxMCAzLjM0IDEwIDVDMTAgNi4zMSA5LjE3IDcuNDIgOCA3LjgzVjEzLjEyQzguODggMTIuNDcgMTAuMTYgMTIgMTIgMTJDMTQuNjcgMTIgMTUuNTYgMTAuNjYgMTUuODUgOS43N0MxNC43NyA5LjMyIDE0IDguMjUgMTQgN0MxNCA1LjM0IDE1LjM0IDQgMTcgNFMyMCA1LjM0IDIwIDdDMjAgOC4zNCAxOS4xMiA5LjUgMTcuOTEgOS44NkMxNy42NSAxMS4yOSAxNi42OCAxNCAxMyAxNE03IDE4QzYuNDUgMTggNiAxOC40NSA2IDE5UzYuNDUgMjAgNyAyMCA4IDE5LjU1IDggMTkgNy41NSAxOCA3IDE4TTcgNEM2LjQ1IDQgNiA0LjQ1IDYgNVM2LjQ1IDYgNyA2IDggNS41NSA4IDUgNy41NSA0IDcgNE0xNyA2QzE2LjQ1IDYgMTYgNi40NSAxNiA3UzE2LjQ1IDggMTcgOCAxOCA3LjU1IDE4IDcgMTcuNTUgNiAxNyA2TTIwLjEyIDE0LjQ2TDE4IDE2LjU5TDE1Ljg4IDE0LjQ3TDE0LjQ3IDE1Ljg4TDE2LjU5IDE4TDE0LjQ3IDIwLjEyTDE1Ljg4IDIxLjU0TDE4IDE5LjQxTDIwLjEyIDIxLjU0TDIxLjU0IDIwLjEyTDE5LjQxIDE4TDIxLjU0IDE1Ljg4TDIwLjEyIDE0LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUJyYW5jaFN5bmMgPSBcIk0xMyAxNEM5LjY0IDE0IDguNTQgMTUuMzUgOC4xOCAxNi4yNEM5LjI1IDE2LjcgMTAgMTcuNzYgMTAgMTlDMTAgMjAuNjYgOC42NiAyMiA3IDIyUzQgMjAuNjYgNCAxOUM0IDE3LjY5IDQuODMgMTYuNTggNiAxNi4xN1Y3LjgzQzQuODMgNy40MiA0IDYuMzEgNCA1QzQgMy4zNCA1LjM0IDIgNyAyUzEwIDMuMzQgMTAgNUMxMCA2LjMxIDkuMTcgNy40MiA4IDcuODNWMTMuMTJDOC44OCAxMi40NyAxMC4xNiAxMiAxMiAxMkMxNC42NyAxMiAxNS41NiAxMC42NiAxNS44NSA5Ljc3QzE0Ljc3IDkuMzIgMTQgOC4yNSAxNCA3QzE0IDUuMzQgMTUuMzQgNCAxNyA0UzIwIDUuMzQgMjAgN0MyMCA4LjM0IDE5LjEyIDkuNSAxNy45MSA5Ljg2QzE3LjY1IDExLjI5IDE2LjY4IDE0IDEzIDE0TTcgMThDNi40NSAxOCA2IDE4LjQ1IDYgMTlTNi40NSAyMCA3IDIwIDggMTkuNTUgOCAxOSA3LjU1IDE4IDcgMThNNyA0QzYuNDUgNCA2IDQuNDUgNiA1UzYuNDUgNiA3IDYgOCA1LjU1IDggNSA3LjU1IDQgNyA0TTE3IDZDMTYuNDUgNiAxNiA2LjQ1IDE2IDdTMTYuNDUgOCAxNyA4IDE4IDcuNTUgMTggNyAxNy41NSA2IDE3IDZNMTggMTNWMTQuNUMyMC4yMSAxNC41IDIyIDE2LjI5IDIyIDE4LjVDMjIgMTkuMzIgMjEuNzUgMjAuMDggMjEuMzMgMjAuNzFMMjAuMjQgMTkuNjJDMjAuNDEgMTkuMjggMjAuNSAxOC45IDIwLjUgMTguNUMyMC41IDE3LjEyIDE5LjM4IDE2IDE4IDE2VjE3LjVMMTUuNzUgMTUuMjVMMTUuNzIgMTUuMjJDMTUuNzggMTUuMTcgMTUuODUgMTUuMTMgMTggMTNNMTggMjRWMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVDMTQgMTcuNjggMTQuMjUgMTYuOTIgMTQuNjcgMTYuMjlMMTUuNzYgMTcuMzhDMTUuNTkgMTcuNzIgMTUuNSAxOC4xIDE1LjUgMTguNUMxNS41IDE5Ljg4IDE2LjYyIDIxIDE4IDIxVjE5LjVMMjAuMjUgMjEuNzVMMjAuMjggMjEuNzhDMjAuMjIgMjEuODMgMjAuMTUgMjEuODcgMTggMjRcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXQgPSBcIk0xNywxMkMxNywxNC40MiAxNS4yOCwxNi40NCAxMywxNi45VjIxSDExVjE2LjlDOC43MiwxNi40NCA3LDE0LjQyIDcsMTJDNyw5LjU4IDguNzIsNy41NiAxMSw3LjFWM0gxM1Y3LjFDMTUuMjgsNy41NiAxNyw5LjU4IDE3LDEyTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRFbmQgPSBcIk0xNywxMkE1LDUgMCAwLDEgMTIsMTdBNSw1IDAgMCwxIDcsMTJDNyw5LjU4IDguNzIsNy41NiAxMSw3LjFWM0gxM1Y3LjFDMTUuMjgsNy41NiAxNyw5LjU4IDE3LDEyTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRFbmRMb2NhbCA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTEsNVYzSDEzVjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQ29tbWl0TG9jYWwgPSBcIk0xMiw3QTUsNSAwIDAsMSAxNywxMkE1LDUgMCAwLDEgMTIsMTdBNSw1IDAgMCwxIDcsMTJBNSw1IDAgMCwxIDEyLDdNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTExLDVWM0gxM1Y1SDExTTExLDIxVjE5SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUNvbW1pdE5leHRMb2NhbCA9IFwiTTE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkM3LDkuNTggOC43Miw3LjU2IDExLDcuMVYzSDEzVjcuMUMxNS4yOCw3LjU2IDE3LDkuNTggMTcsMTJNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTExLDIxVjE5SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUNvbW1pdFN0YXJ0ID0gXCJNMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTQuNDIgMTUuMjgsMTYuNDQgMTMsMTYuOVYyMUgxMVYxNi45QzguNzIsMTYuNDQgNywxNC40MiA3LDEyQTUsNSAwIDAsMSAxMiw3TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRTdGFydE5leHRMb2NhbCA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTEsMjFWMTlIMTNWMjFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlRm9yayA9IFwiTTYsMkEzLDMgMCAwLDEgOSw1QzksNi4yOCA4LjE5LDcuMzggNy4wNiw3LjgxQzcuMTUsOC4yNyA3LjM5LDguODMgOCw5LjYzQzksMTAuOTIgMTEsMTIuODMgMTIsMTQuMTdDMTMsMTIuODMgMTUsMTAuOTIgMTYsOS42M0MxNi42MSw4LjgzIDE2Ljg1LDguMjcgMTYuOTQsNy44MUMxNS44MSw3LjM4IDE1LDYuMjggMTUsNUEzLDMgMCAwLDEgMTgsMkEzLDMgMCAwLDEgMjEsNUMyMSw2LjMyIDIwLjE0LDcuNDUgMTguOTUsNy44NUMxOC44Nyw4LjM3IDE4LjY0LDkgMTgsOS44M0MxNywxMS4xNyAxNSwxMy4wOCAxNCwxNC4zOEMxMy4zOSwxNS4xNyAxMy4xNSwxNS43MyAxMy4wNiwxNi4xOUMxNC4xOSwxNi42MiAxNSwxNy43MiAxNSwxOUEzLDMgMCAwLDEgMTIsMjJBMywzIDAgMCwxIDksMTlDOSwxNy43MiA5LjgxLDE2LjYyIDEwLjk0LDE2LjE5QzEwLjg1LDE1LjczIDEwLjYxLDE1LjE3IDEwLDE0LjM4QzksMTMuMDggNywxMS4xNyA2LDkuODNDNS4zNiw5IDUuMTMsOC4zNyA1LjA1LDcuODVDMy44Niw3LjQ1IDMsNi4zMiAzLDVBMywzIDAgMCwxIDYsMk02LDRBMSwxIDAgMCwwIDUsNUExLDEgMCAwLDAgNiw2QTEsMSAwIDAsMCA3LDVBMSwxIDAgMCwwIDYsNE0xOCw0QTEsMSAwIDAsMCAxNyw1QTEsMSAwIDAsMCAxOCw2QTEsMSAwIDAsMCAxOSw1QTEsMSAwIDAsMCAxOCw0TTEyLDE4QTEsMSAwIDAsMCAxMSwxOUExLDEgMCAwLDAgMTIsMjBBMSwxIDAgMCwwIDEzLDE5QTEsMSAwIDAsMCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VNZXJnZSA9IFwiTTcsM0EzLDMgMCAwLDEgMTAsNkMxMCw3LjI5IDkuMTksOC4zOSA4LjA0LDguODFDOC41OCwxMy44MSAxMy4wOCwxNC43NyAxNS4xOSwxNC45NkMxNS42MSwxMy44MSAxNi43MSwxMyAxOCwxM0EzLDMgMCAwLDEgMjEsMTZBMywzIDAgMCwxIDE4LDE5QzE2LjY5LDE5IDE1LjU3LDE4LjE2IDE1LjE2LDE3QzEwLjkxLDE2LjggOS40NCwxNS4xOSA4LDEzLjM5VjE1LjE3QzkuMTcsMTUuNTggMTAsMTYuNjkgMTAsMThBMywzIDAgMCwxIDcsMjFBMywzIDAgMCwxIDQsMThDNCwxNi42OSA0LjgzLDE1LjU4IDYsMTUuMTdWOC44M0M0LjgzLDguNDIgNCw3LjMxIDQsNkEzLDMgMCAwLDEgNywzTTcsNUExLDEgMCAwLDAgNiw2QTEsMSAwIDAsMCA3LDdBMSwxIDAgMCwwIDgsNkExLDEgMCAwLDAgNyw1TTcsMTdBMSwxIDAgMCwwIDYsMThBMSwxIDAgMCwwIDcsMTlBMSwxIDAgMCwwIDgsMThBMSwxIDAgMCwwIDcsMTdNMTgsMTVBMSwxIDAgMCwwIDE3LDE2QTEsMSAwIDAsMCAxOCwxN0ExLDEgMCAwLDAgMTksMTZBMSwxIDAgMCwwIDE4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVB1bGwgPSBcIk02LDNBMywzIDAgMCwxIDksNkM5LDcuMzEgOC4xNyw4LjQyIDcsOC44M1YxNS4xN0M4LjE3LDE1LjU4IDksMTYuNjkgOSwxOEEzLDMgMCAwLDEgNiwyMUEzLDMgMCAwLDEgMywxOEMzLDE2LjY5IDMuODMsMTUuNTggNSwxNS4xN1Y4LjgzQzMuODMsOC40MiAzLDcuMzEgMyw2QTMsMyAwIDAsMSA2LDNNNiw1QTEsMSAwIDAsMCA1LDZBMSwxIDAgMCwwIDYsN0ExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA2LDVNNiwxN0ExLDEgMCAwLDAgNSwxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywxOEExLDEgMCAwLDAgNiwxN00yMSwxOEEzLDMgMCAwLDEgMTgsMjFBMywzIDAgMCwxIDE1LDE4QzE1LDE2LjY5IDE1LjgzLDE1LjU4IDE3LDE1LjE3VjdIMTVWMTAuMjVMMTAuNzUsNkwxNSwxLjc1VjVIMTdBMiwyIDAgMCwxIDE5LDdWMTUuMTdDMjAuMTcsMTUuNTggMjEsMTYuNjkgMjEsMThNMTgsMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxOUExLDEgMCAwLDAgMTksMThBMSwxIDAgMCwwIDE4LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVJlcG9zaXRvcnkgPSBcIk02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTEyLjc1LDEzLjVDMTUuNSwxMy41IDE2LjI0LDExLjQ3IDE2LjQzLDEwLjRDMTcuMzQsMTAuMTEgMTgsOS4yNiAxOCw4LjI1QzE4LDcgMTcsNiAxNS43NSw2QzE0LjUsNiAxMy41LDcgMTMuNSw4LjI1QzEzLjUsOS4xOSAxNC4wNywxMCAxNC44OSwxMC4zM0MxNC42NywxMSAxNCwxMiAxMiwxMkMxMC42MiwxMiA5LjY2LDEyLjM1IDksMTIuODRWOC44N0M5Ljg3LDguNTYgMTAuNSw3LjczIDEwLjUsNi43NUMxMC41LDUuNSA5LjUsNC41IDguMjUsNC41QzcsNC41IDYsNS41IDYsNi43NUM2LDcuNzMgNi42Myw4LjU2IDcuNSw4Ljg3VjE1LjEzQzYuNjMsMTUuNDQgNiwxNi4yNyA2LDE3LjI1QzYsMTguNSA3LDE5LjUgOC4yNSwxOS41QzkuNSwxOS41IDEwLjUsMTguNSAxMC41LDE3LjI1QzEwLjUsMTYuMzIgOS45NCwxNS41IDkuMTMsMTUuMThDOS40MSwxNC41IDEwLjIzLDEzLjUgMTIuNzUsMTMuNU04LjI1LDE2LjVBMC43NSwwLjc1IDAgMCwxIDksMTcuMjVBMC43NSwwLjc1IDAgMCwxIDguMjUsMThBMC43NSwwLjc1IDAgMCwxIDcuNSwxNy4yNUEwLjc1LDAuNzUgMCAwLDEgOC4yNSwxNi41TTguMjUsNkEwLjc1LDAuNzUgMCAwLDEgOSw2Ljc1QTAuNzUsMC43NSAwIDAsMSA4LjI1LDcuNUEwLjc1LDAuNzUgMCAwLDEgNy41LDYuNzVBMC43NSwwLjc1IDAgMCwxIDguMjUsNk0xNS43NSw3LjVBMC43NSwwLjc1IDAgMCwxIDE2LjUsOC4yNUEwLjc1LDAuNzUgMCAwLDEgMTUuNzUsOUEwLjc1LDAuNzUgMCAwLDEgMTUsOC4yNUEwLjc1LDAuNzUgMCAwLDEgMTUuNzUsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVJlcG9zaXRvcnlNdWx0aXBsZSA9IFwiTTgsMEgyMEEyLDIgMCAwLDEgMjIsMlYxOEEyLDIgMCAwLDEgMjAsMjBIOEEyLDIgMCAwLDEgNiwxOFYyQTIsMiAwIDAsMSA4LDBNMTQuNzUsMTEuNUMxNy41LDExLjUgMTguMjQsOS40NyAxOC40Myw4LjRDMTkuMzQsOC4xMSAyMCw3LjI2IDIwLDYuMjVDMjAsNSAxOSw0IDE3Ljc1LDRDMTYuNSw0IDE1LjUsNSAxNS41LDYuMjVDMTUuNSw3LjE5IDE2LjA3LDggMTYuODksOC4zM0MxNi42Nyw5IDE2LDEwIDE0LDEwQzEyLjYyLDEwIDExLjY2LDEwLjM1IDExLDEwLjg0VjYuODdDMTEuODcsNi41NiAxMi41LDUuNzMgMTIuNSw0Ljc1QzEyLjUsMy41IDExLjUsMi41IDEwLjI1LDIuNUM5LDIuNSA4LDMuNSA4LDQuNzVDOCw1LjczIDguNjMsNi41NiA5LjUsNi44N1YxMy4xM0M4LjYzLDEzLjQ0IDgsMTQuMjcgOCwxNS4yNUM4LDE2LjUgOSwxNy41IDEwLjI1LDE3LjVDMTEuNSwxNy41IDEyLjUsMTYuNSAxMi41LDE1LjI1QzEyLjUsMTQuMzIgMTEuOTQsMTMuNSAxMS4xMywxMy4xOEMxMS40MSwxMi41IDEyLjIzLDExLjUgMTQuNzUsMTEuNU0xMC4yNSwxNC41QTAuNzUsMC43NSAwIDAsMSAxMSwxNS4yNUEwLjc1LDAuNzUgMCAwLDEgMTAuMjUsMTZBMC43NSwwLjc1IDAgMCwxIDkuNSwxNS4yNUEwLjc1LDAuNzUgMCAwLDEgMTAuMjUsMTQuNU0xMC4yNSw0QTAuNzUsMC43NSAwIDAsMSAxMSw0Ljc1QTAuNzUsMC43NSAwIDAsMSAxMC4yNSw1LjVBMC43NSwwLjc1IDAgMCwxIDkuNSw0Ljc1QTAuNzUsMC43NSAwIDAsMSAxMC4yNSw0TTE3Ljc1LDUuNUEwLjc1LDAuNzUgMCAwLDEgMTguNSw2LjI1QTAuNzUsMC43NSAwIDAsMSAxNy43NSw3QTAuNzUsMC43NSAwIDAsMSAxNyw2LjI1QTAuNzUsMC43NSAwIDAsMSAxNy43NSw1LjVNMTYsMjJWMjRINEEyLDIgMCAwLDEgMiwyMlY2SDRWMjJIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU295U2F1Y2UgPSBcIk0xMy45LDcuNUMxMy45LDYuOCAxNC4xLDYuMyAxNC4yLDZIMTQuOEwxNS43LDMuNUgxNi41VjJINy41VjMuNUg4LjNMOS4yLDZIOS44QzEwLDYuMyAxMC4xLDYuOCAxMC4xLDcuNUMxMC4xLDguOCA2LDEzLjcgNiwxNy42VjE5LjZDNiwyMSA4LjcsMjEuOSAxMiwyMS45QzE1LjMsMjEuOSAxOCwyMSAxOCwxOS42VjE3LjZDMTgsMTMuNyAxMy45LDguOCAxMy45LDcuNU0xMiwxNUEyLDIgMCAwLDEgMTAsMTNBMiwyIDAgMCwxIDEyLDExQTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTIsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU295U2F1Y2VPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjYgMTAuNUM3LjUgMTIuNiA2IDE1LjMgNiAxNy42VjE5LjZDNiAyMSA4LjcgMjEuOSAxMiAyMS45QzE1LjEgMjEuOSAxNy43IDIxLjEgMTggMTkuOUwyMC45IDIyLjhMMjIuMSAyMS41TTEyIDE1QzEwLjkgMTUgMTAgMTQuMSAxMCAxM0MxMCAxMi43IDEwLjEgMTIuNCAxMC4yIDEyLjFMMTIuOSAxNC44QzEyLjYgMTQuOSAxMi4zIDE1IDEyIDE1TTguMyAzLjVINy41VjJIMTYuNVYzLjVIMTUuN0wxNC44IDZIMTQuMkMxNC4xIDYuMyAxMy45IDYuOCAxMy45IDcuNUMxMy45IDguNCAxNS45IDExIDE3LjEgMTMuOUwxMC4xIDYuOUMxMCA2LjUgOS45IDYuMiA5LjggNkg5LjJMOC4zIDMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGEgPSBcIk0xNS41LDkuNjNDMTUuMzEsNi44NCAxNC4xOCw0LjEyIDEyLjA2LDJDOS45Miw0LjE0IDguNzQsNi44NiA4LjUsOS42M0M5Ljc5LDEwLjMxIDEwLjk3LDExLjE5IDEyLDEyLjI2QzEzLjAzLDExLjIgMTQuMjEsMTAuMzIgMTUuNSw5LjYzTTEyLDE1LjQ1QzkuODUsMTIuMTcgNi4xOCwxMCAyLDEwQzIsMjAgMTEuMzIsMjEuODkgMTIsMjJDMTIuNjgsMjEuODggMjIsMjAgMjIsMTBDMTcuODIsMTAgMTQuMTUsMTIuMTcgMTIsMTUuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BhT3V0bGluZSA9IFwiTTE1LjUsOS42M0MxNC4yMSwxMC4zMiAxMy4wMywxMS4yIDEyLDEyLjI2QzEwLjk3LDExLjE5IDkuNzksMTAuMzEgOC41LDkuNjNDOC43NCw2Ljg2IDkuOTIsNC4xNCAxMi4wNiwyQzE0LjE4LDQuMTIgMTUuMzEsNi44NCAxNS41LDkuNjNNMTIsMTUuNDVDMTQuMTUsMTIuMTcgMTcuODIsMTAgMjIsMTBDMjIsMjAgMTIuNjgsMjEuODggMTIsMjJDMTEuMzIsMjEuODkgMiwyMCAyLDEwQzYuMTgsMTAgOS44NSwxMi4xNyAxMiwxNS40NU0xMi4wNSw1LjE5QzExLjM5LDYuMjMgMTAuOTMsNy4zOCAxMC42OCw4LjU4TDEyLDkuNTVMMTMuMzUsOC41N0MxMy4xMiw3LjM3IDEyLjY4LDYuMjIgMTIuMDUsNS4xOU0xMiwxOS45N0MxMiwxOS45NyAxOCwxOSAxOS43NCwxMi4yNUMxNCwxNCAxMiwxOS4xIDEyLDE5LjFDMTIsMTkuMSA5LDEzIDQuMjYsMTIuMjZDNiwxOSAxMiwxOS45NyAxMiwxOS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlTcGFjZUludmFkZXJzID0gXCJNNyw2SDVWNEg3VjZNMTcsNkgxOVY0SDE3VjZNMjMsMTJWMThIMjFWMTRIMTlWMThIMTdWMTZIN1YxOEg1VjE0SDNWMThIMVYxMkgzVjEwSDVWOEg3VjZIOVY4SDE1VjZIMTdWOEgxOVYxMEgyMVYxMkgyM00xNSwxMFYxMkgxN1YxMEgxNU03LDEySDlWMTBIN1YxMk0xMSwxOEg3VjIwSDExVjE4TTE3LDE4SDEzVjIwSDE3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwYWNlU3RhdGlvbiA9IFwiTTE1LjUgMTlWMjFIMTMuNzNDMTMuMzkgMjEuNiAxMi43NCAyMiAxMiAyMkMxMS4yNiAyMiAxMC42MSAyMS42IDEwLjI3IDIxSDguNVYxOUgxMC4yN0MxMC40NCAxOC43IDEwLjcgMTguNDQgMTEgMTguMjdWMTdIMTBDOS40NSAxNyA5IDE2LjU1IDkgMTZWMTNINlYxN0M2IDE3LjU1IDUuNTUgMTggNSAxOEgzQzIuNDUgMTggMiAxNy41NSAyIDE3VjhDMiA3LjQ1IDIuNDUgNyAzIDdINUM1LjU1IDcgNiA3LjQ1IDYgOFYxMUg5VjhDOSA3LjQ1IDkuNDUgNyAxMCA3SDExVjZIMTBDOS40NSA2IDkgNS41NSA5IDVWNEM5IDMuNDUgOS40NSAzIDEwIDNIMTRDMTQuNTUgMyAxNSAzLjQ1IDE1IDRWNUMxNSA1LjU1IDE0LjU1IDYgMTQgNkgxM1Y3SDE0QzE0LjU1IDcgMTUgNy40NSAxNSA4VjExSDE4VjhDMTggNy40NSAxOC40NSA3IDE5IDdIMjFDMjEuNTUgNyAyMiA3LjQ1IDIyIDhWMTdDMjIgMTcuNTUgMjEuNTUgMTggMjEgMThIMTlDMTguNDUgMTggMTggMTcuNTUgMTggMTdWMTNIMTVWMTZDMTUgMTYuNTUgMTQuNTUgMTcgMTQgMTdIMTNWMTguMjdDMTMuMyAxOC40NCAxMy41NiAxOC43IDEzLjczIDE5SDE1LjVNMyAxNlYxN0g1VjE2SDNNMyAxNFYxNUg1VjE0SDNNMyAxMlYxM0g1VjEySDNNMyAxMFYxMUg1VjEwSDNNMyA4VjlINVY4SDNNMTkgMTZWMTdIMjFWMTZIMTlNMTkgMTRWMTVIMjFWMTRIMTlNMTkgMTJWMTNIMjFWMTJIMTlNMTkgMTBWMTFIMjFWMTBIMTlNMTkgOFY5SDIxVjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BhZGUgPSBcIk0xNS43MSwxLjIyTDEyLjg4LDQuMDVDMTIuMSw0LjgzIDEyLjEsNi4wOSAxMi44OCw2Ljg3TDE0LjMsOC4yOUwxMC4wNiwxMi41M0w3LjU4LDEwLjA2TDEuMjIsMTYuNDJMNy41OCwyMi43OEwxMy45NCwxNi40MkwxMS40NywxMy45NEwxNS43MSw5LjdMMTcuMTMsMTEuMTJDMTcuOTEsMTEuOSAxOS4xNywxMS45IDE5Ljk1LDExLjEyTDIyLjc4LDguMjlMMTUuNzEsMS4yMk0xNS43MSw0LjA1TDE5Ljk1LDguMjlMMTguNTQsOS43TDE0LjMsNS40NkwxNS43MSw0LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwYXJrbGVzID0gXCJNMTAuNiA5LjZMOSAxNUw3LjQgOS42TDIgOEw3LjQgNi40TDkgMUwxMC42IDYuNEwxNiA4TDEwLjYgOS42TTE3IDE0LjJMMjEgMTJMMTguOCAxNkwyMSAyMEwxNyAxNy44TDEzIDIwTDE1LjIgMTZMMTMgMTJMMTcgMTQuMk0xMCAxNkw4LjMgMTlMMTAgMjJMNyAyMC4zTDQgMjJMNS43IDE5TDQgMTZMNyAxNy43TDEwIDE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlciA9IFwiTTEyLDEyQTMsMyAwIDAsMCA5LDE1QTMsMyAwIDAsMCAxMiwxOEEzLDMgMCAwLDAgMTUsMTVBMywzIDAgMCwwIDEyLDEyTTEyLDIwQTUsNSAwIDAsMSA3LDE1QTUsNSAwIDAsMSAxMiwxMEE1LDUgMCAwLDEgMTcsMTVBNSw1IDAgMCwxIDEyLDIwTTEyLDRBMiwyIDAgMCwxIDE0LDZBMiwyIDAgMCwxIDEyLDhDMTAuODksOCAxMCw3LjEgMTAsNkMxMCw0Ljg5IDEwLjg5LDQgMTIsNE0xNywySDdDNS44OSwyIDUsMi44OSA1LDRWMjBBMiwyIDAgMCwwIDcsMjJIMTdBMiwyIDAgMCwwIDE5LDIwVjRDMTksMi44OSAxOC4xLDIgMTcsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVha2VyQmx1ZXRvb3RoID0gXCJNNCwzQTIsMiAwIDAsMCAyLDVWMTlBMiwyIDAgMCwwIDQsMjFIMTJBMiwyIDAgMCwwIDE0LDE5VjVBMiwyIDAgMCwwIDEyLDNINE04LDVBMiwyIDAgMCwxIDEwLDdBMiwyIDAgMCwxIDgsOUEyLDIgMCAwLDEgNiw3QTIsMiAwIDAsMSA4LDVNMTksN1YxMC43OUwxNi43MSw4LjVMMTYsOS4yMUwxOC43OSwxMkwxNiwxNC43OUwxNi43MSwxNS41TDE5LDEzLjIxVjE3SDE5LjVMMjIuMzUsMTQuMTRMMjAuMjEsMTJMMjIuMzUsOS44NUwxOS41LDdIMTlNMjAsOC45MUwyMC45NCw5Ljg1TDIwLDEwLjc5VjguOTFNOCwxMUE0LDQgMCAwLDEgMTIsMTVBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDQsMTVBNCw0IDAgMCwxIDgsMTFNOCwxM0EyLDIgMCAwLDAgNiwxNUEyLDIgMCAwLDAgOCwxN0EyLDIgMCAwLDAgMTAsMTVBMiwyIDAgMCwwIDgsMTNNMjAsMTMuMjFMMjAuOTQsMTQuMTRMMjAsMTUuMDhWMTMuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlck11bHRpcGxlID0gXCJNMTQsMTBBMywzIDAgMCwwIDExLDEzQTMsMyAwIDAsMCAxNCwxNkEzLDMgMCAwLDAgMTcsMTNBMywzIDAgMCwwIDE0LDEwTTE0LDE4QTUsNSAwIDAsMSA5LDEzQTUsNSAwIDAsMSAxNCw4QTUsNSAwIDAsMSAxOSwxM0E1LDUgMCAwLDEgMTQsMThNMTQsMkEyLDIgMCAwLDEgMTYsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsNEEyLDIgMCAwLDEgMTQsMk0xOSwwSDlBMiwyIDAgMCwwIDcsMlYxOEEyLDIgMCAwLDAgOSwyMEgxOUEyLDIgMCAwLDAgMjEsMThWMkEyLDIgMCAwLDAgMTksME01LDIySDE3VjI0SDVBMiwyIDAgMCwxIDMsMjJWNEg1XCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjEsMjEuNzJMMTkuNzMsMjNMMTguMjcsMjEuNTRDMTcuOTMsMjEuODMgMTcuNSwyMiAxNywyMkg3QzUuODksMjIgNSwyMS4xIDUsMjBWOC4yN0wyLDUuMjdNMTIsMThBMywzIDAgMCwxIDksMTVDOSwxNC4yNCA5LjI4LDEzLjU0IDkuNzUsMTNMOC4zMywxMS42QzcuNSwxMi41IDcsMTMuNjkgNywxNUE1LDUgMCAwLDAgMTIsMjBDMTMuMzEsMjAgMTQuNSwxOS41IDE1LjQsMTguNjdMMTQsMTcuMjVDMTMuNDUsMTcuNzIgMTIuNzYsMTggMTIsMThNMTcsMTVBNSw1IDAgMCwwIDEyLDEwSDExLjgyTDUuMTIsMy4zQzUuNDEsMi41NCA2LjE0LDIgNywySDE3QTIsMiAwIDAsMSAxOSw0VjE3LjE4TDE3LDE1LjE3VjE1TTEyLDRDMTAuODksNCAxMCw0Ljg5IDEwLDZBMiwyIDAgMCwwIDEyLDhBMiwyIDAgMCwwIDE0LDZDMTQsNC44OSAxMy4xLDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVha2VyV2lyZWxlc3MgPSBcIk0yMC4wNywxOS4wN0wxOC42NiwxNy42NkMyMC4xMSwxNi4yMiAyMSwxNC4yMSAyMSwxMkMyMSw5Ljc4IDIwLjExLDcuNzggMTguNjYsNi4zNEwyMC4wNyw0LjkzQzIxLjg4LDYuNzQgMjMsOS4yNCAyMywxMkMyMywxNC43NiAyMS44OCwxNy4yNiAyMC4wNywxOS4wN00xNy4yNCwxNi4yNEwxNS44MywxNC44M0MxNi41NSwxNC4xMSAxNywxMy4xMSAxNywxMkMxNywxMC44OSAxNi41NSw5Ljg5IDE1LjgzLDkuMTdMMTcuMjQsNy43NkMxOC4zMyw4Ljg1IDE5LDEwLjM1IDE5LDEyQzE5LDEzLjY1IDE4LjMzLDE1LjE1IDE3LjI0LDE2LjI0TTQsM0gxMkEyLDIgMCAwLDEgMTQsNVYxOUEyLDIgMCAwLDEgMTIsMjFINEEyLDIgMCAwLDEgMiwxOVY1QTIsMiAwIDAsMSA0LDNNOCw1QTIsMiAwIDAsMCA2LDdBMiwyIDAgMCwwIDgsOUEyLDIgMCAwLDAgMTAsN0EyLDIgMCAwLDAgOCw1TTgsMTFBNCw0IDAgMCwwIDQsMTVBNCw0IDAgMCwwIDgsMTlBNCw0IDAgMCwwIDEyLDE1QTQsNCAwIDAsMCA4LDExTTgsMTNBMiwyIDAgMCwxIDEwLDE1QTIsMiAwIDAsMSA4LDE3QTIsMiAwIDAsMSA2LDE1QTIsMiAwIDAsMSA4LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWVkb21ldGVyID0gXCJNMTIsMTZBMywzIDAgMCwxIDksMTNDOSwxMS44OCA5LjYxLDEwLjkgMTAuNSwxMC4zOUwyMC4yMSw0Ljc3TDE0LjY4LDE0LjM1QzE0LjE4LDE1LjMzIDEzLjE3LDE2IDEyLDE2TTEyLDNDMTMuODEsMyAxNS41LDMuNSAxNi45Nyw0LjMyTDE0Ljg3LDUuNTNDMTQsNS4xOSAxMyw1IDEyLDVBOCw4IDAgMCwwIDQsMTNDNCwxNS4yMSA0Ljg5LDE3LjIxIDYuMzQsMTguNjVINi4zNUM2Ljc0LDE5LjA0IDYuNzQsMTkuNjcgNi4zNSwyMC4wNkM1Ljk2LDIwLjQ1IDUuMzIsMjAuNDUgNC45MywyMC4wN1YyMC4wN0MzLjEyLDE4LjI2IDIsMTUuNzYgMiwxM0ExMCwxMCAwIDAsMSAxMiwzTTIyLDEzQzIyLDE1Ljc2IDIwLjg4LDE4LjI2IDE5LjA3LDIwLjA3VjIwLjA3QzE4LjY4LDIwLjQ1IDE4LjA1LDIwLjQ1IDE3LjY2LDIwLjA2QzE3LjI3LDE5LjY3IDE3LjI3LDE5LjA0IDE3LjY2LDE4LjY1VjE4LjY1QzE5LjExLDE3LjIgMjAsMTUuMjEgMjAsMTNDMjAsMTIgMTkuODEsMTEgMTkuNDYsMTAuMUwyMC42Nyw4QzIxLjUsOS41IDIyLDExLjE4IDIyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWVkb21ldGVyTWVkaXVtID0gXCJNMTIgMS4zOEw5LjE0IDEyLjA2QzguOCAxMy4xIDkuMDQgMTQuMjkgOS44NiAxNS4xMkMxMS4wNCAxNi4yOSAxMi45NCAxNi4yOSAxNC4xMSAxNS4xMkMxNC45IDE0LjMzIDE1LjE2IDEzLjIgMTQuODkgMTIuMjFNMTQuNiAzLjM1TDE1LjIyIDUuNjhDMTguMDQgNi45MiAyMCA5LjczIDIwIDEzQzIwIDE1LjIxIDE5LjExIDE3LjIxIDE3LjY2IDE4LjY1SDE3LjY1QzE3LjI2IDE5LjA0IDE3LjI2IDE5LjY3IDE3LjY1IDIwLjA2QzE4LjA0IDIwLjQ1IDE4LjY4IDIwLjQ1IDE5LjA3IDIwLjA3QzIwLjg4IDE4LjI2IDIyIDE1Ljc2IDIyIDEzQzIyIDguMzggMTguODYgNC41IDE0LjYgMy4zNU05LjQgMy4zNkM1LjE1IDQuNSAyIDguNCAyIDEzQzIgMTUuNzYgMy4xMiAxOC4yNiA0LjkzIDIwLjA3QzUuMzIgMjAuNDUgNS45NSAyMC40NSA2LjM0IDIwLjA2QzYuNzMgMTkuNjcgNi43MyAxOS4wNCA2LjM0IDE4LjY1QzQuODkgMTcuMiA0IDE1LjIxIDQgMTNDNCA5LjY1IDUuOTQgNi44NiA4Ljc5IDUuNjVcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVlZG9tZXRlclNsb3cgPSBcIk0xMiAxNkMxMy42NiAxNiAxNSAxNC42NiAxNSAxM0MxNSAxMS44OCAxNC4zOSAxMC45IDEzLjUgMTAuMzlMMy43OSA0Ljc3TDkuMzIgMTQuMzVDOS44MiAxNS4zMyAxMC44MyAxNiAxMiAxNk0xMiAzQzEwLjE5IDMgOC41IDMuNSA3LjAzIDQuMzJMOS4xMyA1LjUzQzEwIDUuMTkgMTEgNSAxMiA1QzE2LjQyIDUgMjAgOC41OCAyMCAxM0MyMCAxNS4yMSAxOS4xMSAxNy4yMSAxNy42NiAxOC42NUgxNy42NUMxNy4yNiAxOS4wNCAxNy4yNiAxOS42NyAxNy42NSAyMC4wNkMxOC4wNCAyMC40NSAxOC42OCAyMC40NSAxOS4wNyAyMC4wN0MyMC44OCAxOC4yNiAyMiAxNS43NiAyMiAxM0MyMiA3LjUgMTcuNSAzIDEyIDNNMiAxM0MyIDE1Ljc2IDMuMTIgMTguMjYgNC45MyAyMC4wN0M1LjMyIDIwLjQ1IDUuOTUgMjAuNDUgNi4zNCAyMC4wNkM2LjczIDE5LjY3IDYuNzMgMTkuMDQgNi4zNCAxOC42NUM0Ljg5IDE3LjIgNCAxNS4yMSA0IDEzQzQgMTIgNC4xOSAxMSA0LjU0IDEwLjFMMy4zMyA4QzIuNSA5LjUgMiAxMS4xOCAyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWxsY2hlY2sgPSBcIk0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNNNi40MywxMUw4LjUsNS41TDEwLjU3LDExTTEyLjQ1LDE2SDE0LjU0TDkuNDMsM0g3LjU3TDIuNDYsMTZINC41NUw1LjY3LDEzSDExLjMxTDEyLjQ1LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwaWRlciA9IFwiTTIxLjI5IDE2LjcxTDIyLjcxIDE1LjI5TDE5LjUgMTIuMTFMMTYuNSAxMS4yNkwxOC40MSAxMUwyMi42IDcuOEwyMS40IDYuMkwxNy41OSA5LjA1TDE0LjkxIDkuNUwxOC4xMSA2LjMxTDE3IDEuNzZMMTUgMi4yNEwxNS44NiA1LjY5TDE0Ljc2IDYuODNBMyAzIDAgMCAwIDkuMjQgNi44M0w4LjExIDUuNjlMOSAyLjI0TDcgMS43Nkw1Ljg5IDYuMzFMOS4wOSA5LjVMNi40IDkuMDVMMi42IDYuMkwxLjQgNy44TDUuNiAxMUw3LjQ2IDExLjMxTDQuNDYgMTIuMTZMMS4yOSAxNS4yOUwyLjcxIDE2LjcxTDUuNSAxMy44OUw3Ljg3IDEzLjIyTDQgMTYuNTRWMjJINlYxNy40Nkw3LjU2IDE2LjEyQTQuNSA0LjUgMCAwIDAgMTYuNDQgMTYuMTJMMTggMTcuNDZWMjJIMjBWMTYuNTRMMTYuMTMgMTMuMjJMMTguNSAxMy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGlkZXJUaHJlYWQgPSBcIk0xMyAyVjcuMDhBNS40NyA1LjQ3IDAgMCAwIDEyIDdBNS40NyA1LjQ3IDAgMCAwIDExIDcuMDhWMk0xNi45IDE1QTUgNSAwIDAgMSAxNi43MyAxNS41NUwyMCAxNy40MlYyMkgxOFYxOC41OEwxNS43NCAxNy4yOUE0Ljk0IDQuOTQgMCAwIDEgOC4yNiAxNy4yOUw2IDE4LjU4VjIySDRWMTcuNDJMNy4yNyAxNS41NUE1IDUgMCAwIDEgNy4xIDE1SDUuM0wyLjU1IDE2LjgzTDEuNDUgMTUuMTdMNC43IDEzSDcuMUE1IDUgMCAwIDEgNy4zNyAxMi4xMkw1LjgxIDExLjEyTDIuMjQgMTJMMS43NiAxMEw2LjE5IDguOTJMOC41IDEwLjQ1QTUgNSAwIDAgMSAxNS41IDEwLjQ1TDE3Ljc3IDguOTJMMjIuMjQgMTBMMjEuNzYgMTJMMTguMTkgMTEuMTFMMTYuNjMgMTIuMTFBNSA1IDAgMCAxIDE2LjkgMTNIMTkuM0wyMi41NSAxNS4xNkwyMS40NSAxNi44MkwxOC43IDE1TTExIDE0QTEgMSAwIDEgMCAxMCAxNUExIDEgMCAwIDAgMTEgMTRNMTUgMTRBMSAxIDAgMSAwIDE0IDE1QTEgMSAwIDAgMCAxNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGlkZXJXZWIgPSBcIk0xMy42MiwxMy4yOEwxNS4yNiwxNS41NEMxNS4yOSwxNSAxNS4zOCwxNC40NyAxNS41NiwxMy45M0MxNS43NCwxMy4zNyAxNiwxMi44NiAxNi4zLDEyLjQxTDEzLjYyLDEzLjI4TTE3Ljc3LDE5QzE3Ljc1LDE3LjY4IDE3Ljk1LDE2LjI3IDE4LjQxLDE0Ljg1QzE4Ljg4LDEzLjQyIDE5LjU2LDEyLjE0IDIwLjM2LDExLjA5TDE4LjMyLDExLjc1QzE3LjU0LDEyLjI2IDE2Ljg3LDEzLjE0IDE2LjUsMTQuMjNDMTYuMTcsMTUuMjkgMTYuMTgsMTYuMzYgMTYuNSwxNy4yMkwxNy43NywxOU0xOS4yNSwyMUMxOC43NSwyMS40NiAxOC4yMSwyMS44NiAxNy42MywyMi4yTDE3LjMxLDIxLjc2QzE1LjksMjEgMTQuMDQsMjAuNSAxMiwyMC41QzkuOTYsMjAuNSA4LjEsMjEgNi42OSwyMS43Nkw2LjM3LDIyLjJDNS43OSwyMS44NiA1LjI1LDIxLjQ2IDQuNzUsMjFMNSwyMC42OUM1LjMzLDE5LjA4IDUuMjIsMTcuMTIgNC41OCwxNS4xNEMzLjk0LDEzLjE5IDIuOSwxMS41NiAxLjcxLDEwLjQ2TDEuMjcsMTAuMzJDMS40Miw5LjY2IDEuNjMsOSAxLjg5LDguNDFMMi4yOSw4LjU0QzMuOTIsOC4zNyA1Ljc0LDcuNjUgNy40Myw2LjQzQzkuMDksNS4yMiAxMC4zMiwzLjczIDExLDIuMjZWMS43OUwxMiwxLjc1TDEzLDEuNzlWMi4yMUMxMy42NywzLjcxIDE0LjkxLDUuMjMgMTYuNiw2LjQ1QzE4LjI2LDcuNjYgMjAuMDYsOC4zNyAyMS42Nyw4LjU2TDIyLjExLDguNDFDMjIuMzcsOSAyMi41OCw5LjY2IDIyLjczLDEwLjMyTDIyLjIzLDEwLjVDMjEuMDQsMTEuNTggMjAsMTMuMjEgMTkuMzcsMTUuMTZDMTguNzQsMTcuMDkgMTguNjIsMTkgMTguOTIsMjAuNTdMMTkuMjUsMjFNMTEsMTEuMzdWOC41QzEwLjY2LDguOTIgMTAuMjYsOS4zMiA5Ljc4LDkuNjdDOS4yOSwxMCA4Ljc3LDEwLjI5IDguMjUsMTAuNUwxMSwxMS4zN00xMSw0LjIyQzEwLjI1LDUuMzEgOS4yNCw2LjM1IDgsNy4yNEM2Ljc4LDguMTQgNS40Niw4Ljc4IDQuMTgsOS4xNkw2LjE1LDkuOEM3LjExLDkuODggOC4yMiw5LjU2IDkuMTksOC44NkMxMC4xMyw4LjE4IDEwLjc2LDcuMjcgMTEsNi4zNlY0LjIyTTEzLDExLjM3TDE1Ljc0LDEwLjVDMTUuMjMsMTAuMyAxNC43MiwxMC4wMyAxNC4yNSw5LjY5QzEzLjc2LDkuMzMgMTMuMzQsOC45MiAxMyw4LjVWMTEuMzdNMTkuOCw5LjE2QzE4LjUzLDguNzggMTcuMjMsOC4xNSAxNiw3LjI2QzE0Ljc3LDYuMzYgMTMuNzYsNS4zMSAxMyw0LjJWNi4yN0MxMy4yMiw3LjIxIDEzLjg2LDguMTcgMTQuODQsOC44OEMxNS43Nyw5LjU2IDE2LjgzLDkuODcgMTcuNzcsOS44MkwxOS44LDkuMTZNMTAuMzgsMTMuMjhMNy42NCwxMi4zOUM3Ljk1LDEyLjg0IDguMiwxMy4zNSA4LjM4LDEzLjkxQzguNTcsMTQuNSA4LjY2LDE1LjA2IDguNjgsMTUuNjJMMTAuMzgsMTMuMjhNMy41OCwxMS4wN0M0LjM4LDEyLjEyIDUuMDYsMTMuNCA1LjUzLDE0LjgzQzYsMTYuMjkgNi4yLDE3Ljc0IDYuMTcsMTkuMDhMNy4zOCwxNy40MUM3Ljc2LDE2LjUgNy44LDE1LjM2IDcuNDMsMTQuMjJDNy4wNywxMy4xMiA2LjQsMTIuMjQgNS42MSwxMS43M0wzLjU4LDExLjA3TTEyLDE0LjQ1TDEwLjM1LDE2LjcyQzEwLjg3LDE2LjU4IDExLjQyLDE2LjUgMTIsMTYuNUMxMi41OCwxNi41IDEzLjEzLDE2LjU4IDEzLjY1LDE2LjcyTDEyLDE0LjQ1TTcuODQsMjAuMThDOS4wOCwxOS43NSAxMC41LDE5LjUgMTIsMTkuNUMxMy41LDE5LjUgMTQuOTIsMTkuNzUgMTYuMTYsMjAuMThMMTQuODgsMTguNDJDMTQuMTYsMTcuODUgMTMuMTMsMTcuNSAxMiwxNy41QzEwLjg3LDE3LjUgOS44NCwxNy44NSA5LjEyLDE4LjQyTDcuODQsMjAuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Bpcml0TGV2ZWwgPSBcIk0yMiA4SDJWMTZIMjJWOE0xOCAxNFYxMEgyMFYxNEgxOE0xMSAxMkgxM0MxNC4xIDEyIDE1IDExLjExIDE1IDEwSDE3VjE0SDdWMTBIOUM5IDExLjExIDkuOSAxMiAxMSAxMk00IDE0VjEwSDZWMTRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcG9vblN1Z2FyID0gXCJNNiAxM0gzVjEwSDZWMTNNMTAgMTBIN1YxM0gxMFYxME04IDZINVY5SDhWNk0xOCAxMkMxNC4yNSAxMiAxMi4yOCAxMy4yNSAxMSAxNEgyQzIgMTYuMjEgMy43OSAxOCA2IDE4SDdDOCAxOCA4LjkyIDE3LjYzIDkuNjIgMTdDMTEuMDYgMTUuNzggMTIuNjggMTQuNzQgMTQuNTUgMTQuMzZDMTUuNjEgMTQuMTUgMTYuNzggMTQgMTggMTRIMjJWMTJIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BvdGlmeSA9IFwiTTE3LjksMTAuOUMxNC43LDkgOS4zNSw4LjggNi4zLDkuNzVDNS44LDkuOSA1LjMsOS42IDUuMTUsOS4xNUM1LDguNjUgNS4zLDguMTUgNS43NSw4QzkuMyw2Ljk1IDE1LjE1LDcuMTUgMTguODUsOS4zNUMxOS4zLDkuNiAxOS40NSwxMC4yIDE5LjIsMTAuNjVDMTguOTUsMTEgMTguMzUsMTEuMTUgMTcuOSwxMC45TTE3LjgsMTMuN0MxNy41NSwxNC4wNSAxNy4xLDE0LjIgMTYuNzUsMTMuOTVDMTQuMDUsMTIuMyA5Ljk1LDExLjggNi44LDEyLjhDNi40LDEyLjkgNS45NSwxMi43IDUuODUsMTIuM0M1Ljc1LDExLjkgNS45NSwxMS40NSA2LjM1LDExLjM1QzEwLDEwLjI1IDE0LjUsMTAuOCAxNy42LDEyLjdDMTcuOSwxMi44NSAxOC4wNSwxMy4zNSAxNy44LDEzLjdNMTYuNiwxNi40NUMxNi40LDE2Ljc1IDE2LjA1LDE2Ljg1IDE1Ljc1LDE2LjY1QzEzLjQsMTUuMiAxMC40NSwxNC45IDYuOTUsMTUuN0M2LjYsMTUuOCA2LjMsMTUuNTUgNi4yLDE1LjI1QzYuMSwxNC45IDYuMzUsMTQuNiA2LjY1LDE0LjVDMTAuNDUsMTMuNjUgMTMuNzUsMTQgMTYuMzUsMTUuNkMxNi43LDE1Ljc1IDE2Ljc1LDE2LjE1IDE2LjYsMTYuNDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BvdGxpZ2h0ID0gXCJNMiw2TDcuMDksOC41NUM2LjQsOS41IDYsMTAuNzEgNiwxMkM2LDEzLjI5IDYuNCwxNC41IDcuMDksMTUuNDVMMiwxOFY2TTYsM0gxOEwxNS40NSw3LjA5QzE0LjUsNi40IDEzLjI5LDYgMTIsNkMxMC43MSw2IDkuNSw2LjQgOC41NSw3LjA5TDYsM00yMiw2VjE4TDE2LjkxLDE1LjQ1QzE3LjYsMTQuNSAxOCwxMy4yOSAxOCwxMkMxOCwxMC43MSAxNy42LDkuNSAxNi45MSw4LjU1TDIyLDZNMTgsMjFINkw4LjU1LDE2LjkxQzkuNSwxNy42IDEwLjcxLDE4IDEyLDE4QzEzLjI5LDE4IDE0LjUsMTcuNiAxNS40NSwxNi45MUwxOCwyMU0xMiw4QTQsNCAwIDAsMSAxNiwxMkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwb3RsaWdodEJlYW0gPSBcIk05LDE2LjVMOS45MSwxNS41OUwxNS4xMywyMC44TDE0LjIxLDIxLjcxTDksMTYuNU0xNS41LDEwTDE2LjQxLDkuMDlMMjEuNjMsMTQuM0wyMC43MSwxNS4yMUwxNS41LDEwTTYuNzIsMi43MkwxMC4xNSw2LjE1TDYuMTUsMTAuMTVMMi43Miw2LjcyQzEuOTQsNS45NCAxLjk0LDQuNjcgMi43MiwzLjg5TDMuODksMi43MkM0LjY3LDEuOTQgNS45NCwxLjk0IDYuNzIsMi43Mk0xNC41Nyw3LjVMMTUuMjgsOC4yMUw4LjIxLDE1LjI4TDcuNSwxNC41N0w2LjY0LDExLjA3TDExLjA3LDYuNjRMMTQuNTcsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcmF5ID0gXCJNMTAsNEgxMlY2SDEwVjRNNywzSDlWNUg3VjNNNyw2SDlWOEg3VjZNNiw4VjEwSDRWOEg2TTYsNVY3SDRWNUg2TTYsMlY0SDRWMkg2TTEzLDIyQTIsMiAwIDAsMSAxMSwyMFYxMEEyLDIgMCAwLDEgMTMsOFY3SDE0VjRIMTdWN0gxOFY4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJIMTNNMTMsMTBWMjBIMThWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ByYXlCb3R0bGUgPSBcIk0xMiw3SDE1QzE1LjY2LDcuNjQgMTYsOC4zMSAxNiw5VjIySDhWMTVDOCwxNC43MiA4LjExLDE0LjM5IDguMywxNEwxMiw3TTE2LDRMMTUsNkgxMlY1TDEwLDdIOUwxMCw1VjRIOVYySDE0LjVBMS41LDEuNSAwIDAsMSAxNiwzLjVWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcHJpbmtsZXIgPSBcIk0xMSA3SDEzVjlIMTFWN001IDIySDlWMTBINVYyMk0xNCAxMUgxNlY5SDE0VjExTTE3IDEwSDE5VjhIMTdWMTBNMTcgNVY3SDE5VjVIMTdNMTQgOEgxNlY2SDE0VjhNMTcgMTNIMTlWMTFIMTdWMTNNNSA3SDUuMzNMNiA5SDhMOC42NyA3SDlWNkg1VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ByaW5rbGVyVmFyaWFudCA9IFwiTTEwIDEwSDE0VjIySDEwVjEwTTcgOUg5VjdIN1Y5TTQgOEg2VjZINFY4TTQgMTFINlY5SDRWMTFNMSAxM0gzVjExSDFWMTNNMSA3SDNWNUgxVjdNMSAxMEgzVjhIMVYxME0xOCAxMUgyMFY5SDE4VjExTTIxIDEwSDIzVjhIMjFWMTBNMjEgNVY3SDIzVjVIMjFNMjEgMTNIMjNWMTFIMjFWMTNNMTUgOUgxN1Y3SDE1VjlNMTggOEgyMFY2SDE4VjhNMTAgN0gxMC4zM0wxMSA5SDEzTDEzLjY3IDdIMTRWNkgxMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcm91dCA9IFwiTTIsMjJWMjBDMiwyMCA3LDE4IDEyLDE4QzE3LDE4IDIyLDIwIDIyLDIwVjIySDJNMTEuMyw5LjFDMTAuMSw1LjIgNCw2LjEgNCw2LjFDNCw2LjEgNC4yLDEzLjkgOS45LDEyLjdDOS41LDkuOCA4LDkgOCw5QzEwLjgsOSAxMSwxMi40IDExLDEyLjRWMTdDMTEuMywxNyAxMS43LDE3IDEyLDE3QzEyLjMsMTcgMTIuNywxNyAxMywxN1YxMi44QzEzLDEyLjggMTMsOC45IDE2LDcuOUMxNiw3LjkgMTQsMTAuOSAxNCwxMi45QzIxLDEzLjYgMjEsNCAyMSw0QzIxLDQgMTIuMSwzIDExLjMsOS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcm91dE91dGxpbmUgPSBcIk0yMyw0LjFWMi4zTDIxLjIsMi4xQzIxLjEsMi4xIDIwLjUsMiAxOS41LDJDMTUuNCwyIDEyLjQsMy4yIDEwLjcsNS4zQzkuNCw0LjUgNy42LDQgNS41LDRDNC41LDQgMy44LDQuMSAzLjgsNC4xTDEuOSw0LjRMMiw2LjFDMi4xLDkuMSAzLjYsMTQuOCA4LjgsMTQuOEM4LjksMTQuOCA4LjksMTQuOCA5LDE0LjhWMTguMkM1LjIsMTguNyAyLDIwIDIsMjBWMjJIMjJWMjBDMjIsMjAgMTguOCwxOC43IDE1LDE4LjJWMTVDMjEuMywxNC45IDIzLDcuOCAyMyw0LjFNMTIsMThDMTEuNywxOCAxMS4zLDE4IDExLDE4VjEyLjRDMTEsMTIuNCAxMC44LDkgOCw5QzgsOSA5LjUsOS44IDkuOSwxMi43QzkuNSwxMi44IDkuMSwxMi44IDguOCwxMi44QzQuMiwxMi44IDQsNi4xIDQsNi4xQzQsNi4xIDQuNiw2IDUuNSw2QzcuNCw2IDEwLjUsNi40IDExLjQsOS4xQzExLjksNC42IDE3LDQgMTkuNSw0QzIwLjQsNCAyMSw0LjEgMjEsNC4xQzIxLDQuMSAyMSwxMy4xIDE0LjcsMTMuMUMxNC41LDEzLjEgMTQuMiwxMy4xIDE0LDEzLjFDMTQsMTEuMSAxNiw4LjEgMTYsOC4xQzEzLDkuMSAxMywxMyAxMywxM1YxOEMxMi43LDE4IDEyLjMsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlID0gXCJNMywzVjIxSDIxVjNcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVDaXJjbGUgPSBcIk0yMCA0VjIwSDRWNEgyME0yMiAySDJWMjJIMjJWMk0xMiA2QzguNjkgNiA2IDguNjkgNiAxMlM4LjY5IDE4IDEyIDE4IDE4IDE1LjMxIDE4IDEyIDE1LjMxIDYgMTIgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVFZGl0T3V0bGluZSA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlINVY1SDEyVjNINU0xNy43OCw0QzE3LjYxLDQgMTcuNDMsNC4wNyAxNy4zLDQuMkwxNi4wOCw1LjQxTDE4LjU4LDcuOTFMMTkuOCw2LjdDMjAuMDYsNi40NCAyMC4wNiw2IDE5LjgsNS43NUwxOC4yNSw0LjJDMTguMTIsNC4wNyAxNy45NSw0IDE3Ljc4LDRNMTUuMzcsNi4xMkw4LDEzLjVWMTZIMTAuNUwxNy44Nyw4LjYyTDE1LjM3LDYuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlTWVkaXVtID0gXCJNMTYsOEg4VjE2SDE2VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlTWVkaXVtT3V0bGluZSA9IFwiTTE0LDEwVjE0SDEwVjEwSDE0TTE2LDhIOFYxNkgxNlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjExIDIxSDNWNC44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDNINi4yTDIxIDE3LjhWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuODlWMjFIMTkuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxOVY2Ljg5TDE3LjExIDE5SDVNOC4yIDVMNi4yIDNIMjFWMTcuOEwxOSAxNS44VjVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZU91dGxpbmUgPSBcIk0zLDNIMjFWMjFIM1YzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlUm9vdCA9IFwiTTExLjc2LDE2LjgzTDE0LjU5LDE0TDExLjc2LDExLjE3TDEzLjE3LDkuNzZMMTYsMTIuNTlMMTguODMsOS43NkwyMC4yNCwxMS4xN0wxNy40MSwxNEwyMC4yNCwxNi44M0wxOC44MywxOC4yNEwxNiwxNS40MUwxMy4xNywxOC4yNEwxMS43NiwxNi44M00yLDExSDVWMTFINUw3LjI5LDE2LjRMMTAsNkgyMlY4SDExLjU1TDguNjgsMTlINi4yMkwzLjY4LDEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlUm9vdEJveCA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0g1TTExLjI0LDZIMTlWOEgxMi43NkwxMCwxOEg4TDYuMjUsMTJINVYxMEg3Ljc1TDksMTQuMjhMMTEuMjQsNlY2TTE0LDEwLjU5TDE1Ljc5LDEyLjM4TDE3LjU5LDEwLjU5TDE5LDEyTDE3LjIxLDEzLjc5TDE5LDE1LjU5TDE3LjU5LDE3TDE1Ljc5LDE1LjIxTDE0LDE3TDEyLjU5LDE1LjU5TDE0LjM4LDEzLjc5TDEyLjU5LDEyTDE0LDEwLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVJvdW5kZWQgPSBcIk04IDNIMTZDMTguNzYgMyAyMSA1LjI0IDIxIDhWMTZDMjEgMTguNzYgMTguNzYgMjEgMTYgMjFIOEM1LjI0IDIxIDMgMTguNzYgMyAxNlY4QzMgNS4yNCA1LjI0IDMgOCAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVJvdW5kZWRPdXRsaW5lID0gXCJNOCAzSDE2QzE4Ljc2IDMgMjEgNS4yNCAyMSA4VjE2QzIxIDE4Ljc2IDE4Ljc2IDIxIDE2IDIxSDhDNS4yNCAyMSAzIDE4Ljc2IDMgMTZWOEMzIDUuMjQgNS4yNCAzIDggM004IDVDNi4zNCA1IDUgNi4zNCA1IDhWMTZDNSAxNy42NiA2LjM0IDE5IDggMTlIMTZDMTcuNjYgMTkgMTkgMTcuNjYgMTkgMTZWOEMxOSA2LjM0IDE3LjY2IDUgMTYgNUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVNtYWxsID0gXCJNMTAsMTRWMTBIMTRWMTRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlV2F2ZSA9IFwiTTIgMlYxMkg0VjRIMTFWMjJIMjJWMTJIMjBWMjBIMTNWMkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWVlZ2VlID0gXCJNMjIsMlY1SDJWMkgyMk0yLDhIN0w5LDEwSDEwVjIwQTIsMiAwIDAsMCAxMiwyMkEyLDIgMCAwLDAgMTQsMjBWMTBIMTVMMTcsOEgyMlY2SDJWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTc2ggPSBcIk00LjUsOUMzLjksOSAzLjUsOS41IDMuNSwxMFYxMS43NUMzLjUsMTIuMjUgMy45LDEyLjc1IDQuNSwxMi43NUg3VjEzLjVIMy41VjE1SDcuNUM4LjEsMTUgOC41LDE0LjUgOC41LDE0VjEyLjI1QzguNSwxMS43NSA4LjEsMTEuMjUgNy41LDExLjI1SDVWMTAuNUg4LjVWOUg0LjVNMTAuNSw5QzkuOSw5IDkuNSw5LjUgOS41LDEwVjExLjc1QzkuNSwxMi4yNSA5LjksMTIuNzUgMTAuNSwxMi43NUgxM1YxMy41SDkuNVYxNUgxMy41QzE0LjEsMTUgMTQuNSwxNC41IDE0LjUsMTRWMTIuMjVDMTQuNSwxMS43NSAxNC4xLDExLjI1IDEzLjUsMTEuMjVIMTFWMTAuNUgxNC41VjlIMTAuNU0xNS41LDlWMTVIMTdWMTIuNUgxOVYxNUgyMC41VjlIMTlWMTFIMTdWOUgxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWNrRXhjaGFuZ2UgPSBcIk0zLjkgMTAuNzJIMjBWMTQuMDNIMy45VjEwLjcyTTMuOSA2LjQ0SDIwVjkuNzVIMy45VjYuNDRNMTcuNSAySDYuNUM1LjA2IDIgMy45IDMuMTggMy45IDQuNjVWNS41SDIwVjQuNjVDMjAgMy4xOCAxOC44OCAyIDE3LjUgMk0zLjkgMTVWMTUuODRDMy45IDE3LjMxIDUuMDYgMTguNSA2LjUgMTguNUgxMy4zN1YyMkwxNi43NyAxOC41SDE3LjVDMTguOTQgMTguNSAyMC4xMSAxNy4zMSAyMC4xMSAxNS44NFYxNUgzLjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhY2tPdmVyZmxvdyA9IFwiTTE3LjM2LDIwLjJWMTQuODJIMTkuMTVWMjJIM1YxNC44Mkg0LjhWMjAuMkgxNy4zNk02Ljc3LDE0LjMyTDcuMTQsMTIuNTZMMTUuOTMsMTQuNDFMMTUuNTYsMTYuMTdMNi43NywxNC4zMk03LjkzLDEwLjExTDguNjksOC41TDE2LjgzLDEyLjI4TDE2LjA3LDEzLjlMNy45MywxMC4xMU0xMC4xOSw2LjEyTDExLjM0LDQuNzRMMTguMjQsMTAuNUwxNy4wOSwxMS44N0wxMC4xOSw2LjEyTTE0LjY0LDEuODdMMjAsOS4wOEwxOC41NiwxMC4xNUwxMy4yLDIuOTRMMTQuNjQsMS44N002LjU5LDE4LjQxVjE2LjYxSDE1LjU3VjE4LjQxSDYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhY2twYXRoID0gXCJNNC45MSA4QzQuMDQgOCAzLjMyIDguMiAyLjc2IDguNjFDMi4xOSA5IDEuOTEgOS41MyAxLjkxIDEwLjE5QzEuOTEgMTAuODUgMi4xNSAxMS4zNyAyLjYyIDExLjcyQzMuMSAxMi4wNyAzLjgyIDEyLjQxIDQuOCAxMi43MkM1LjI3IDEyLjg4IDUuNiAxMy4wNCA1Ljc4IDEzLjE5QzUuOTYgMTMuMzQgNi4wNSAxMy41NSA2LjA1IDEzLjgzQzYuMDUgMTQuMDcgNS45NiAxNC4yNiA1Ljc4IDE0LjQxQzUuNiAxNC41NiA1LjMyIDE0LjYzIDQuOTQgMTQuNjNDNC40NSAxNC42MyA0LjA5IDE0LjU0IDMuODUgMTQuMzVDMy42IDE0LjE2IDMuNSAxMy44NCAzLjUgMTMuMzlIMS43MkwxLjcxIDEzLjQyQzEuNyAxNC4yNSAyIDE0Ljg5IDIuNjYgMTUuMzNDMy4zIDE1Ljc4IDQuMDYgMTYgNC45NCAxNkM1LjgyIDE2IDYuNSAxNS44IDcuMDYgMTUuNDJDNy41OSAxNS4wMyA3Ljg2IDE0LjUgNy44NiAxMy44MUM3Ljg2IDEzLjE0IDcuNjMgMTIuNjEgNy4xOSAxMi4yM0M2Ljc0IDExLjg0IDYuMDggMTEuNSA1LjIgMTEuMjZDNC42MiAxMS4wNSA0LjIzIDEwLjg4IDQgMTAuNzRDMy44MSAxMC42IDMuNzEgMTAuNDIgMy43MSAxMC4yQzMuNzEgOS45NiAzLjgxIDkuNzYgNCA5LjZDNC4yMiA5LjQ0IDQuNSA5LjM2IDQuODcgOS4zNkM1LjI0IDkuMzYgNS41MyA5LjQ2IDUuNzQgOS42NUM1Ljk2IDkuODQgNi4wNyAxMC4xMiA2LjA2IDEwLjQxSDcuOEw3LjgyIDEwLjM3QzcuODQgOS42OCA3LjU3IDkuMTEgNyA4LjY2QzYuNDcgOC4yMiA1Ljc3IDggNC45MSA4TTkgOC4wNVYxNS45M0gxMC44NFYxMy4yM0gxMS45NkMxMi44OSAxMy4yMyAxMy42MyAxMyAxNC4xOCAxMi41QzE0LjczIDEyLjA1IDE1IDExLjQyIDE1IDEwLjY0QzE1IDkuODcgMTQuNzMgOS4yNSAxNC4xOCA4Ljc3QzEzLjYzIDguMjkgMTIuODkgOC4wNSAxMS45NiA4LjA1SDlNMTcuMjQgOC4wNUwxNC41IDE1LjkzSDE2LjIyTDE5IDguMDVNMjAuNSA4LjA1TDE3Ljc5IDE1LjkzSDE5LjVMMjIuMjkgOC4wNU0xMC44NCA5LjQ2SDExLjk2QzEyLjM1IDkuNDYgMTIuNjYgOS41NyAxMi44NiA5LjhDMTMuMDcgMTAgMTMuMTcgMTAuMzEgMTMuMTcgMTAuNjVDMTMuMTcgMTEgMTMuMDcgMTEuMjggMTIuODYgMTEuNUMxMi42NiAxMS43MSAxMi4zNSAxMS44MiAxMS45NiAxMS44MkgxMC44NFwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWRpdW0gPSBcIk0yMiAxMy41VjE3LjVDMjIgMTkuMiAxNy41IDIwLjUgMTIgMjAuNUMxMC42IDIwLjUgOS4yIDIwLjQgOCAyMC4yVjE3LjVMNCAxNi41VjE5LjNDMi43IDE4LjggMiAxOC4yIDIgMTcuNVYxMS41QzIgMTAuNSA0IDkuNSA2IDkuNUMxMiA5LjUgMTQgMTUgMTkgMTVDMjEgMTUgMjIgMTMuNSAyMiAxMy41TTUgOEw5IDlWNkw1IDVWOE0xOCA2LjVMMjIgNy41VjQuNUwxOCAzLjVWNi41TTIyLjMgMTAuOEMyMi4zIDkuOCAyMS41IDggMTguNyA4UzEzLjQgMTAuNyAxMy4zIDEwLjlDMTUuMSAxMi4yIDE2LjUgMTMuNSAxOSAxMy41QzIyLjMgMTMuNSAyMi4zIDEwLjggMjIuMyAxMC44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWRpdW1WYXJpYW50ID0gXCJNNSwzSDdMMTAsNUw3LDdWOC4zM0M4LjQ3LDguMTIgMTAuMTgsOCAxMiw4QzEzLjgyLDggMTUuNTMsOC4xMiAxNyw4LjMzVjNIMTlMMjIsNUwxOSw3VjguNzFDMjAuODUsOS4xNyAyMiw5LjggMjIsMTAuNUMyMiwxMS44OCAxNy41LDEzIDEyLDEzQzYuNSwxMyAyLDExLjg4IDIsMTAuNUMyLDkuOCAzLjE1LDkuMTcgNSw4LjcxVjNNMTIsOS41QzguNjksOS41IDcsOS42NyA3LDEwLjVDNywxMS4zMyA4LjY5LDExLjUgMTIsMTEuNUMxNS4zMSwxMS41IDE3LDExLjMzIDE3LDEwLjVDMTcsOS42NyAxNS4zMSw5LjUgMTIsOS41TTEyLDE0Ljc1QzE1LjgxLDE0Ljc1IDE5LjIsMTQuMDggMjEuNCwxMy4wNUwyMCwyMUgxNVYxOUEyLDIgMCAwLDAgMTMsMTdIMTFBMiwyIDAgMCwwIDksMTlWMjFINEwyLjYsMTMuMDVDNC44LDE0LjA4IDguMTksMTQuNzUgMTIsMTQuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzID0gXCJNMTUsNVY5SDExVjEzSDdWMTdIM1YyMEgxMFYxNkgxNFYxMkgxOFY4SDIyVjVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzQm94ID0gXCJNNSAzQzMuODkgMyAzIDMuODkgMyA1VjE5QzMgMjAuMTEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy44OSAyMC4xMSAzIDE5IDNINU0xNCA3SDE5VjlIMTZWMTJIMTNWMTVIMTBWMThINVYxNkg4VjEzSDExVjEwSDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzRG93biA9IFwiTTE1IDZIMjJWOUgxOFYxM0gxNFYxN0gxMFYyMUgzVjE4SDdWMTRIMTFWMTBIMTVWNk00LjgzIDguMzRMMTAuMzQgMi44M0wxMi4xNyA0LjY2TDYuNjYgMTAuMTdMOC41IDEySDNWNi41TDQuODMgOC4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFpcnNVcCA9IFwiTTE1IDZIMjJWOUgxOFYxM0gxNFYxN0gxMFYyMUgzVjE4SDdWMTRIMTFWMTBIMTVWNk0xMC4xNyA2LjY2TDQuNjYgMTIuMTdMMi44MyAxMC4zNEw4LjM0IDQuODNMNi41IDNIMTJWOC41TDEwLjE3IDYuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhbXBlciA9IFwiTTEyLDNBMywzIDAgMCwwIDksNkM5LDkgMTQsMTMgNiwxM0EyLDIgMCAwLDAgNCwxNVYxN0gyMFYxNUEyLDIgMCAwLDAgMTgsMTNDMTAsMTMgMTUsOSAxNSw2QzE1LDQgMTMuNjYsMyAxMiwzTTYsMTlWMjFIMThWMTlINlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFuZGFyZERlZmluaXRpb24gPSBcIk0xMyw3SDE2QTMsMyAwIDAsMSAxOSwxMFYxNEEzLDMgMCAwLDEgMTYsMTdIMTNWN00xNiwxNUExLDEgMCAwLDAgMTcsMTRWMTBBMSwxIDAgMCwwIDE2LDlIMTVWMTVIMTZNNyw3SDExVjlIN1YxMUg5QTIsMiAwIDAsMSAxMSwxM1YxNUEyLDIgMCAwLDEgOSwxN0g1VjE1SDlWMTNIN0EyLDIgMCAwLDEgNSwxMVY5QTIsMiAwIDAsMSA3LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhciA9IFwiTTEyLDE3LjI3TDE4LjE4LDIxTDE2LjU0LDEzLjk3TDIyLDkuMjRMMTQuODEsOC42MkwxMiwyTDkuMTksOC42MkwyLDkuMjRMNy40NSwxMy45N0w1LjgyLDIxTDEyLDE3LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QzIxLDIwLjExIDIwLjEsMjEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTUuNTgsMTdMMTQuNjMsMTIuOTJMMTcuNzksMTAuMTlMMTMuNjIsOS44M0wxMiw2TDEwLjM4LDkuODRMNi4yMSwxMC4yTDkuMzcsMTIuOTNMOC40MiwxN0wxMiwxNC44NEwxNS41OCwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQm94TXVsdGlwbGUgPSBcIk00IDZWMjBIMThWMjJIM0MyLjQgMjIgMiAyMS42IDIgMjFWNkg0TTggMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDhDNi45IDE4IDYgMTcuMTEgNiAxNlY0QzYgMi45IDYuOSAyIDggMk0xNi4zIDEzLjNMMTUuOSAxMC43TDE3LjggOC44TDE1LjIgOC40TDE0IDZMMTIuOCA4LjRMMTAuMiA4LjhMMTIuMSAxMC42TDExLjYgMTMuMkwxNCAxMkwxNi4zIDEzLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNlYyMEgxOFYyMkgzQzIuNCAyMiAyIDIxLjYgMiAyMVY2SDRNMTIuMSAxMC42TDEwLjIgOC44TDEyLjggOC40TDE0IDZMMTUuMiA4LjRMMTcuOCA4LjhMMTUuOSAxMC43TDE2LjMgMTMuM0wxNCAxMkwxMS42IDEzLjJMMTIuMSAxMC42TTggMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDhDNi45IDE4IDYgMTcuMTEgNiAxNlY0QzYgMi45IDYuOSAyIDggMk04IDRWMTZIMjBWNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJCb3hPdXRsaW5lID0gXCJNMTUuNTgsMTdMMTIsMTQuODRMOC40MiwxN0w5LjM3LDEyLjkzTDYuMjEsMTAuMkwxMC4zOCw5Ljg0TDEyLDZMMTMuNjIsOS44M0wxNy43OSwxMC4xOUwxNC42MywxMi45MkwxNS41OCwxN00xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QzIxLDIwLjExIDIwLjEsMjEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ2hlY2sgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNC45IDEyIDEyLjQgMTQuMyAxMiAxNy4zTDUuOCAyMU0xNy44IDIxLjJMMjIuNiAxNi40TDIxLjMgMTVMMTcuNyAxOC42TDE2LjIgMTdMMTUgMTguMkwxNy44IDIxLjJcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ2hlY2tPdXRsaW5lID0gXCJNNS44IDIxTDcuNCAxNEwyIDkuMkw5LjIgOC42TDEyIDJMMTQuOCA4LjZMMjIgOS4yTDE4LjggMTJIMThDMTcuMyAxMiAxNi42IDEyLjEgMTUuOSAxMi40TDE4LjEgMTAuNUwxMy43IDEwLjFMMTIgNi4xTDEwLjMgMTAuMUw1LjkgMTAuNUw5LjIgMTMuNEw4LjIgMTcuN0wxMiAxNS40TDEyLjUgMTUuN0MxMi4zIDE2LjIgMTIuMSAxNi44IDEyLjEgMTcuM0w1LjggMjFNMTcuOCAyMS4yTDE1IDE4LjJMMTYuMiAxN0wxNy44IDE4LjZMMjEuNCAxNUwyMi42IDE2LjRMMTcuOCAyMS4yXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckNpcmNsZSA9IFwiTTE2LjIzLDE4TDEyLDE1LjQ1TDcuNzcsMThMOC44OSwxMy4xOUw1LjE2LDkuOTZMMTAuMDgsOS41NEwxMiw1TDEzLjkyLDkuNTNMMTguODQsOS45NUwxNS4xMSwxMy4xOEwxNi4yMywxOE0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckNpcmNsZU91dGxpbmUgPSBcIk04LjU4LDE3LjI1TDkuNSwxMy4zNkw2LjUsMTAuNzhMMTAuNDUsMTAuNDFMMTIsNi44TDEzLjU1LDEwLjQ1TDE3LjUsMTAuNzhMMTQuNSwxMy4zNkwxNS40MiwxNy4yNUwxMiwxNS4xOUw4LjU4LDE3LjI1TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ29nID0gXCJNMTguOCAxMkMxNS41OSAxMi4xIDEyLjkxIDE0LjM3IDEyLjE5IDE3LjM5TDEyIDE3LjI3TDUuODIgMjFMNy40NSAxMy45N0wyIDkuMjRMOS4xOSA4LjYyTDEyIDJMMTQuODEgOC42MkwyMiA5LjI0TDE4LjggMTJNMjMuODMgMjAuNjRMMjIuODMgMjIuMzdDMjIuNzYgMjIuNSAyMi42MyAyMi41IDIyLjUgMjIuNUwyMS4yNyAyMkMyMSAyMi4xOCAyMC43MyAyMi4zNCAyMC40MyAyMi40N0wyMC4yNCAyMy43OUMyMC4yMiAyMy45MSAyMC4xMSAyNCAyMCAyNEgxOEMxNy44NiAyNCAxNy43NiAyMy45MSAxNy43NCAyMy43OUwxNy41NSAyMi40N0MxNy4yNCAyMi4zNSAxNi45NiAyMi4xOCAxNi43IDIyTDE1LjQ2IDIyLjVDMTUuMzQgMjIuNSAxNS4yMSAyMi41IDE1LjE1IDIyLjM3TDE0LjE1IDIwLjY0QzE0LjA5IDIwLjUzIDE0LjEyIDIwLjQgMTQuMjEgMjAuMzJMMTUuMjcgMTkuNUMxNS4yNSAxOS4zMyAxNS4yNCAxOS4xNyAxNS4yNCAxOVMxNS4yNSAxOC42NyAxNS4yNyAxOC41TDE0LjIxIDE3LjY4QzE0LjExIDE3LjYgMTQuMDkgMTcuNDcgMTQuMTUgMTcuMzZMMTUuMTUgMTUuNjNDMTUuMjIgMTUuNSAxNS4zNSAxNS41IDE1LjQ2IDE1LjVMMTYuNyAxNkMxNi45NiAxNS44MiAxNy4yNSAxNS42NiAxNy41NSAxNS41M0wxNy43NCAxNC4yMUMxNy43NiAxNC4wOSAxNy44NyAxNCAxOCAxNEgyMEMyMC4xMSAxNCAyMC4yMiAxNC4wOSAyMC4yMyAxNC4yMUwyMC40MiAxNS41M0MyMC43MyAxNS42NSAyMSAxNS44MiAyMS4yNyAxNkwyMi41IDE1LjVDMjIuNjMgMTUuNSAyMi43NiAxNS41IDIyLjgyIDE1LjYzTDIzLjgyIDE3LjM2QzIzLjg4IDE3LjQ3IDIzLjg1IDE3LjYgMjMuNzYgMTcuNjhMMjIuNyAxOC41QzIyLjczIDE4LjY3IDIyLjc0IDE4LjgzIDIyLjc0IDE5UzIyLjcyIDE5LjMzIDIyLjcgMTkuNUwyMy43NyAyMC4zMkMyMy44NiAyMC40IDIzLjg5IDIwLjUzIDIzLjgzIDIwLjY0TTIwLjUgMTlDMjAuNSAxOC4xNyAxOS44MyAxNy41IDE5IDE3LjVTMTcuNSAxOC4xNyAxNy41IDE5IDE4LjE2IDIwLjUgMTkgMjAuNUMxOS44MyAyMC41IDIwLjUgMTkuODMgMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ29nT3V0bGluZSA9IFwiTTEwLjI5IDEwLjEzTDUuOTEgMTAuNUw5LjIzIDEzLjM4TDguMjQgMTcuNjZMMTIgMTUuMzlMMTIuNzYgMTUuODVDMTIuNSAxNi4zMyAxMi4zMiAxNi44NSAxMi4xOSAxNy4zOUwxMiAxNy4yN0w1LjgyIDIxTDcuNDUgMTMuOTdMMiA5LjI0TDkuMTkgOC42M0wxMiAyTDE0LjgxIDguNjNMMjIgOS4yNEwxOC44IDEyQzE3LjI5IDEyLjA1IDE1LjkxIDEyLjU3IDE0Ljc4IDEzLjQzTDE0Ljc3IDEzLjM4TDE4LjA5IDEwLjVMMTMuNzEgMTAuMTNMMTIgNi4wOUwxMC4yOSAxMC4xM00yMy44MyAyMC42NEwyMi44MyAyMi4zN0MyMi43NiAyMi41IDIyLjYzIDIyLjUgMjIuNSAyMi41TDIxLjI3IDIyQzIxIDIyLjE4IDIwLjczIDIyLjM0IDIwLjQzIDIyLjQ3TDIwLjI0IDIzLjc5QzIwLjIyIDIzLjkxIDIwLjExIDI0IDIwIDI0SDE4QzE3Ljg2IDI0IDE3Ljc2IDIzLjkxIDE3Ljc0IDIzLjc5TDE3LjU1IDIyLjQ3QzE3LjI0IDIyLjM1IDE2Ljk2IDIyLjE4IDE2LjcgMjJMMTUuNDYgMjIuNUMxNS4zNCAyMi41IDE1LjIxIDIyLjUgMTUuMTUgMjIuMzdMMTQuMTUgMjAuNjRDMTQuMDkgMjAuNTMgMTQuMTIgMjAuNCAxNC4yMSAyMC4zMkwxNS4yNyAxOS41QzE1LjI1IDE5LjMzIDE1LjI0IDE5LjE3IDE1LjI0IDE5UzE1LjI1IDE4LjY3IDE1LjI3IDE4LjVMMTQuMjEgMTcuNjhDMTQuMTEgMTcuNiAxNC4wOSAxNy40NyAxNC4xNSAxNy4zNkwxNS4xNSAxNS42M0MxNS4yMiAxNS41IDE1LjM1IDE1LjUgMTUuNDYgMTUuNUwxNi43IDE2QzE2Ljk2IDE1LjgyIDE3LjI1IDE1LjY2IDE3LjU1IDE1LjUzTDE3Ljc0IDE0LjIxQzE3Ljc2IDE0LjA5IDE3Ljg3IDE0IDE4IDE0SDIwQzIwLjExIDE0IDIwLjIyIDE0LjA5IDIwLjIzIDE0LjIxTDIwLjQyIDE1LjUzQzIwLjczIDE1LjY1IDIxIDE1LjgyIDIxLjI3IDE2TDIyLjUgMTUuNUMyMi42MyAxNS41IDIyLjc2IDE1LjUgMjIuODIgMTUuNjNMMjMuODIgMTcuMzZDMjMuODggMTcuNDcgMjMuODUgMTcuNiAyMy43NiAxNy42OEwyMi43IDE4LjVDMjIuNzMgMTguNjcgMjIuNzQgMTguODMgMjIuNzQgMTlTMjIuNzIgMTkuMzMgMjIuNyAxOS41TDIzLjc3IDIwLjMyQzIzLjg2IDIwLjQgMjMuODkgMjAuNTMgMjMuODMgMjAuNjRNMjAuNSAxOUMyMC41IDE4LjE3IDE5LjgzIDE3LjUgMTkgMTcuNVMxNy41IDE4LjE3IDE3LjUgMTkgMTguMTYgMjAuNSAxOSAyMC41QzE5LjgzIDIwLjUgMjAuNSAxOS44MyAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJGYWNlID0gXCJNMTIsMi41TDguNDIsOC4wNkwyLDkuNzRMNi4yLDE0Ljg4TDUuODIsMjEuNUwxMiwxOS4wOUwxOC4xOCwyMS41TDE3LjgsMTQuODhMMjIsOS43NEwxNS41OCw4LjA2TDEyLDIuNU05LjM4LDEwLjVDMTAsMTAuNSAxMC41LDExIDEwLjUsMTEuNjNBMS4xMiwxLjEyIDAgMCwxIDkuMzgsMTIuNzVDOC43NSwxMi43NSA4LjI1LDEyLjI1IDguMjUsMTEuNjNDOC4yNSwxMSA4Ljc1LDEwLjUgOS4zOCwxMC41TTE0LjYzLDEwLjVDMTUuMjUsMTAuNSAxNS43NSwxMSAxNS43NSwxMS42M0ExLjEyLDEuMTIgMCAwLDEgMTQuNjMsMTIuNzVDMTQsMTIuNzUgMTMuNSwxMi4yNSAxMy41LDExLjYzQzEzLjUsMTEgMTQsMTAuNSAxNC42MywxMC41TTksMTVIMTVDMTQuNSwxNi4yMSAxMy4zMSwxNyAxMiwxN0MxMC42OSwxNyA5LjUsMTYuMjEgOSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyRm91clBvaW50cyA9IFwiTTEyLDFMOSw5TDEsMTJMOSwxNUwxMiwyM0wxNSwxNUwyMywxMkwxNSw5TDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckZvdXJQb2ludHNPdXRsaW5lID0gXCJNMTIsNi43TDEzLjQ1LDEwLjU1TDE3LjMsMTJMMTMuNDUsMTMuNDVMMTIsMTcuM0wxMC41NSwxMy40NUw2LjcsMTJMMTAuNTUsMTAuNTVMMTIsNi43TTEyLDFMOSw5TDEsMTJMOSwxNUwxMiwyM0wxNSwxNUwyMywxMkwxNSw5TDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckhhbGYgPSBcIk0xMiAyTDkuMTkgOC42MkwyIDkuMjRMNy40NSAxMy45N0w1LjgyIDIxTDEyIDE3LjI3VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckhhbGZGdWxsID0gXCJNMTIsMTUuNFY2LjFMMTMuNzEsMTAuMTNMMTguMDksMTAuNUwxNC43NywxMy4zOUwxNS43NiwxNy42N00yMiw5LjI0TDE0LjgxLDguNjNMMTIsMkw5LjE5LDguNjNMMiw5LjI0TDcuNDUsMTMuOTdMNS44MiwyMUwxMiwxNy4yN0wxOC4xOCwyMUwxNi41NCwxMy45N0wyMiw5LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJNaW51cyA9IFwiTTUuOCAyMUw3LjQgMTRMMiA5LjJMOS4yIDguNkwxMiAyTDE0LjggOC42TDIyIDkuMkwxOC44IDEySDE4QzE0LjkgMTIgMTIuNCAxNC4zIDEyIDE3LjNMNS44IDIxTTE0IDE3VjE5SDIyVjE3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJNaW51c091dGxpbmUgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNy4zIDEyIDE2LjYgMTIuMSAxNS45IDEyLjRMMTguMSAxMC41TDEzLjcgMTAuMUwxMiA2LjFMMTAuMyAxMC4xTDUuOSAxMC41TDkuMiAxMy40TDguMiAxNy43TDEyIDE1LjRMMTIuNSAxNS43QzEyLjMgMTYuMiAxMi4xIDE2LjggMTIuMSAxNy4zTDUuOCAyMU0xNCAxN1YxOUgyMlYxN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT2ZmID0gXCJNMjAuOCAyMi43TDE3LjkgMTkuOEwxOC4yIDIxTDEyIDE3LjNMNS44IDIxTDcuNCAxNEwyIDkuMkw2LjkgOC44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS40TDIwLjggMjIuN00yMiA5LjJMMTQuOCA4LjZMMTIgMkwxMCA2LjhMMTYuOSAxMy43TDIyIDkuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT2ZmT3V0bGluZSA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDYuOSA4LjhMMiA5LjJMNy41IDE0TDUuOSAyMUwxMi4xIDE3LjNMMTguMyAyMUwxOCAxOS44TDIwLjkgMjIuN0wyMi4xIDIxLjVNMTUuOCAxNy43TDEyIDE1LjRMOC4yIDE3LjdMOS4yIDEzLjRMNS45IDEwLjVMOC40IDEwLjNMMTUuOCAxNy43TTExLjIgOEwxMCA2LjhMMTIgMkwxNC44IDguNkwyMiA5LjJMMTYuOSAxMy42TDE1LjggMTIuNUwxOC4yIDEwLjVMMTMuOCAxMC4xTDEyLjEgNi4xTDExLjIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT3V0bGluZSA9IFwiTTEyLDE1LjM5TDguMjQsMTcuNjZMOS4yMywxMy4zOEw1LjkxLDEwLjVMMTAuMjksMTAuMTNMMTIsNi4wOUwxMy43MSwxMC4xM0wxOC4wOSwxMC41TDE0Ljc3LDEzLjM4TDE1Ljc2LDE3LjY2TTIyLDkuMjRMMTQuODEsOC42M0wxMiwyTDkuMTksOC42M0wyLDkuMjRMNy40NSwxMy45N0w1LjgyLDIxTDEyLDE3LjI3TDE4LjE4LDIxTDE2LjU0LDEzLjk3TDIyLDkuMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclBsdXMgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNC45IDEyIDEyLjQgMTQuMyAxMiAxNy4zTDUuOCAyMU0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUGx1c091dGxpbmUgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNy4zIDEyIDE2LjYgMTIuMSAxNS45IDEyLjRMMTguMSAxMC41TDEzLjcgMTAuMUwxMiA2LjFMMTAuMyAxMC4xTDUuOSAxMC41TDkuMiAxMy40TDguMiAxNy43TDEyIDE1LjRMMTIuNSAxNS43QzEyLjMgMTYuMiAxMi4xIDE2LjggMTIuMSAxNy4zTDUuOCAyMU0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUmVtb3ZlID0gXCJNNS44IDIxTDcuNCAxNEwyIDkuMkw5LjIgOC42TDEyIDJMMTQuOCA4LjZMMjIgOS4yTDE4LjggMTJIMThDMTQuOSAxMiAxMi40IDE0LjMgMTIgMTcuM0w1LjggMjFNMjAuMSAxNC41TDE4IDE2LjZMMTUuOSAxNC41TDE0LjUgMTUuOUwxNi42IDE4TDE0LjUgMjAuMUwxNS45IDIxLjVMMTggMTkuNEwyMC4xIDIxLjVMMjEuNSAyMC4xTDE5LjQgMThMMjEuNSAxNS45TDIwLjEgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUmVtb3ZlT3V0bGluZSA9IFwiTTUuOCAyMUw3LjQgMTRMMiA5LjJMOS4yIDguNkwxMiAyTDE0LjggOC42TDIyIDkuMkwxOC44IDEySDE4QzE3LjMgMTIgMTYuNiAxMi4xIDE1LjkgMTIuNEwxOC4xIDEwLjVMMTMuNyAxMC4xTDEyIDYuMUwxMC4zIDEwLjFMNS45IDEwLjVMOS4yIDEzLjRMOC4yIDE3LjdMMTIgMTUuNEwxMi41IDE1LjdDMTIuMyAxNi4yIDEyLjEgMTYuOCAxMi4xIDE3LjNMNS44IDIxTTIwLjEgMTQuNUwxOCAxNi42TDE1LjkgMTQuNUwxNC41IDE1LjlMMTYuNiAxOEwxNC41IDIwLjFMMTUuOSAyMS41TDE4IDE5LjRMMjAuMSAyMS41TDIxLjUgMjAuMUwxOS40IDE4TDIxLjUgMTUuOUwyMC4xIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclNldHRpbmdzID0gXCJNNyAyMkg5VjI0SDdWMjJNMTEgMjRIMTNWMjJIMTFWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMjIgOS4yNEwxNC44MSA4LjYyTDEyIDJMOS4xOSA4LjYyTDIgOS4yNEw3LjQ1IDEzLjk3TDUuODIgMjFMMTIgMTcuMjdMMTguMTggMjFMMTYuNTQgMTMuOTdMMjIgOS4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyU2V0dGluZ3NPdXRsaW5lID0gXCJNMTEgMjJIMTNWMjRIMTFWMjJNNyAyNEg5VjIySDdWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMTYuNTQgMTMuOTdMMTguMTggMjFMMTIgMTcuMjdMNS44MiAyMUw3LjQ1IDEzLjk3TDIgOS4yNEw5LjE5IDguNjNMMTIgMkwxNC44MSA4LjYzTDIyIDkuMjRMMTYuNTQgMTMuOTdNMTUuNzYgMTcuNjZMMTQuNzcgMTMuMzhMMTguMDkgMTAuNUwxMy43MSAxMC4xM0wxMiA2LjA5TDEwLjI5IDEwLjEzTDUuOTEgMTAuNUw5LjIzIDEzLjM4TDguMjQgMTcuNjZMMTIgMTUuMzlMMTUuNzYgMTcuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclNob290aW5nID0gXCJNMTguMDkgMTEuNzdMMTkuNTYgMTguMUwxNCAxNC43NEw4LjQ0IDE4LjFMOS45IDExLjc3TDUgNy41TDExLjQ3IDYuOTZMMTQgMUwxNi41MyA2Ljk2TDIzIDcuNUwxOC4wOSAxMS43N00yIDEyLjQzQzIuMTkgMTIuNDMgMi4zOCAxMi4zNyAyLjU1IDEyLjI2TDUuNzUgMTAuMTVMNC4xOCA4Ljc5TDEuNDUgMTAuNTlDLjk4OSAxMC44OSAuODYxIDExLjUgMS4xNiAxMkMxLjM2IDEyLjI3IDEuNjggMTIuNDMgMiAxMi40M00xLjE2IDIxLjU1QzEuMzYgMjEuODQgMS42OCAyMiAyIDIyQzIuMTkgMjIgMi4zOCAyMS45NSAyLjU1IDIxLjg0TDYuNjYgMTkuMTNMNyAxNy43Nkw3LjMxIDE2LjMxTDEuNDUgMjAuMTZDLjk4OSAyMC40NyAuODYxIDIxLjA5IDEuMTYgMjEuNTVNMS40NSAxNS4zOEMuOTg5IDE1LjY4IC44NjEgMTYuMyAxLjE2IDE2Ljc2QzEuMzYgMTcuMDYgMS42OCAxNy4yMSAyIDE3LjIxQzIuMTkgMTcuMjEgMi4zOCAxNy4xNiAyLjU1IDE3LjA1TDcuOTcgMTMuNUw4LjI0IDEyLjMxTDcuMzIgMTEuNUwxLjQ1IDE1LjM4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJTaG9vdGluZ091dGxpbmUgPSBcIk0yMyA3LjVMMTYuNTMgNi45NkwxNCAxTDExLjQ3IDYuOTZMNSA3LjVMOS45IDExLjc3TDguNDQgMTguMUwxNCAxNC43NEwxOS41NiAxOC4xTDE4LjA5IDExLjc3TDIzIDcuNU0xNi4xNCAxMi4yM0wxNi41NCAxMy45NEwxNS4wMyAxMy4wM0wxNCAxMi40MUwxMi45NyAxMy4wM0wxMS40NiAxMy45NEwxMS44NSAxMi4yM0wxMi4xMyAxMS4wNUwxMS4yMiAxMC4yNkw5Ljg4IDkuMUwxMS42NCA4Ljk1TDEyLjg0IDguODVMMTMuMzEgNy43NEwxNCA2LjEyTDE0LjY5IDcuNzRMMTUuMTYgOC44NUwxNi4zNiA4Ljk1TDE4LjExIDkuMUwxNi43OCAxMC4yNkwxNS44NiAxMS4wNUwxNi4xNCAxMi4yM00xLjE2IDEyQy44NjEgMTEuNSAuOTg5IDEwLjg5IDEuNDUgMTAuNTlMNC4xOCA4Ljc5TDUuNzUgMTAuMTVMMi41NSAxMi4yNkMyLjM4IDEyLjM3IDIuMTkgMTIuNDMgMiAxMi40M0MxLjY4IDEyLjQzIDEuMzYgMTIuMjcgMS4xNiAxMk0xLjQ1IDIwLjE2TDcuMzEgMTYuMzFMNyAxNy43Nkw2LjY2IDE5LjEzTDIuNTUgMjEuODRDMi4zOCAyMS45NSAyLjE5IDIyIDIgMjJDMS42OCAyMiAxLjM2IDIxLjg0IDEuMTYgMjEuNTVDLjg2MSAyMS4wOSAuOTg5IDIwLjQ3IDEuNDUgMjAuMTZNNy4zMiAxMS41TDguMjQgMTIuMzFMNy45NyAxMy41TDIuNTUgMTcuMDVDMi4zOCAxNy4xNiAyLjE5IDE3LjIxIDIgMTcuMjFDMS42OCAxNy4yMSAxLjM2IDE3LjA2IDEuMTYgMTYuNzZDLjg2MSAxNi4zIC45ODkgMTUuNjggMS40NSAxNS4zOEw3LjMyIDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclRocmVlUG9pbnRzID0gXCJNMTIsMi42TDksMTIuNEwyLDE5LjlMMTIsMTcuNkwyMiwyMEwxNSwxMi41TDEyLDIuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyVGhyZWVQb2ludHNPdXRsaW5lID0gXCJNMTIsOS41TDEzLjIsMTMuNUwxNiwxNi41TDEyLDE1LjZMNy45LDE2LjVMMTAuNywxMy41TDEyLDkuNU0xMiwyLjZMOSwxMi40TDIsMTkuOUwxMiwxNy42TDIyLDIwTDE1LDEyLjVMMTIsMi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXRlTWFjaGluZSA9IFwiTTYuMjcgMTcuMDVDNi43MiAxNy41OCA3IDE4LjI1IDcgMTlDNyAyMC42NiA1LjY2IDIyIDQgMjJTMSAyMC42NiAxIDE5IDIuMzQgMTYgNCAxNkM0LjE4IDE2IDQuMzYgMTYgNC41MyAxNi4wNUw3LjYgMTAuNjlMNS44NiA5LjdMOS45NSA4LjU4TDExLjA3IDEyLjY3TDkuMzMgMTEuNjhMNi4yNyAxNy4wNU0yMCAxNkMxOC43IDE2IDE3LjYgMTYuODQgMTcuMTggMThIMTFWMTZMOCAxOUwxMSAyMlYyMEgxNy4xOEMxNy42IDIxLjE2IDE4LjcgMjIgMjAgMjJDMjEuNjYgMjIgMjMgMjAuNjYgMjMgMTlTMjEuNjYgMTYgMjAgMTZNMTIgOEMxMi4xOCA4IDEyLjM2IDggMTIuNTMgNy45NUwxNS42IDEzLjMxTDEzLjg2IDE0LjNMMTcuOTUgMTUuNDJMMTkuMDcgMTEuMzNMMTcuMzMgMTIuMzJMMTQuMjcgNi45NUMxNC43MiA2LjQyIDE1IDUuNzUgMTUgNUMxNSAzLjM0IDEzLjY2IDIgMTIgMlM5IDMuMzQgOSA1IDEwLjM0IDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVhbSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDNy40LDIyIDMuNTUsMTguOTIgMi4zNiwxNC43M0w2LjE5LDE2LjMxQzYuNDUsMTcuNiA3LjYsMTguNTggOC45NywxOC41OEMxMC41MywxOC41OCAxMS44LDE3LjMxIDExLjgsMTUuNzVWMTUuNjJMMTUuMiwxMy4xOUgxNS4yOEMxNy4zNiwxMy4xOSAxOS4wNSwxMS41IDE5LjA1LDkuNDJDMTkuMDUsNy4zNCAxNy4zNiw1LjY1IDE1LjI4LDUuNjVDMTMuMiw1LjY1IDExLjUsNy4zNCAxMS41LDkuNDJWOS40N0w5LjEzLDEyLjkzTDguOTcsMTIuOTJDOC4zOCwxMi45MiA3LjgzLDEzLjEgNy4zOCwxMy40MUwyLDExLjJDMi40Myw2LjA1IDYuNzMsMiAxMiwyTTguMjgsMTcuMTdDOS4wOCwxNy41IDEwLDE3LjEzIDEwLjMzLDE2LjMzQzEwLjY2LDE1LjUzIDEwLjI4LDE0LjYyIDkuNSwxNC4yOUw4LjIyLDEzLjc2QzguNzEsMTMuNTggOS4yNiwxMy41NyA5Ljc4LDEzLjc5QzEwLjMxLDE0IDEwLjcyLDE0LjQxIDEwLjkzLDE0Ljk0QzExLjE1LDE1LjQ2IDExLjE1LDE2LjA0IDEwLjkzLDE2LjU2QzEwLjUsMTcuNjQgOS4yMywxOC4xNiA4LjE1LDE3LjcxQzcuNjUsMTcuNSA3LjI3LDE3LjEyIDcuMDYsMTYuNjdMOC4yOCwxNy4xN00xNy44LDkuNDJDMTcuOCwxMC44MSAxNi42NywxMS45NCAxNS4yOCwxMS45NEMxMy45LDExLjk0IDEyLjc3LDEwLjgxIDEyLjc3LDkuNDJBMi41LDIuNSAwIDAsMSAxNS4yOCw2LjkxQzE2LjY3LDYuOTEgMTcuOCw4LjA0IDE3LjgsOS40Mk0xMy40LDkuNDJDMTMuNCwxMC40NiAxNC4yNCwxMS4zMSAxNS4yOSwxMS4zMUMxNi4zMywxMS4zMSAxNy4xNywxMC40NiAxNy4xNyw5LjQyQzE3LjE3LDguMzggMTYuMzMsNy41MyAxNS4yOSw3LjUzQzE0LjI0LDcuNTMgMTMuNCw4LjM4IDEzLjQsOS40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVlcmluZyA9IFwiTTEzLDE5LjkyQzE0LjgsMTkuNyAxNi4zNSwxOC45NSAxNy42NSwxNy42NUMxOC45NSwxNi4zNSAxOS43LDE0LjggMTkuOTIsMTNIMTYuOTJDMTYuNywxNCAxNi4yNCwxNC44NCAxNS41NCwxNS41NEMxNC44NCwxNi4yNCAxNCwxNi43IDEzLDE2LjkyVjE5LjkyTTEwLDhIMTRMMTcsMTFIMTkuOTJDMTkuNjcsOS4wNSAxOC43OSw3LjM4IDE3LjI3LDZDMTUuNzYsNC42NiAxNCw0IDEyLDRDMTAsNCA4LjI0LDQuNjYgNi43Myw2QzUuMjEsNy4zOCA0LjMzLDkuMDUgNC4wOCwxMUg3TDEwLDhNMTEsMTkuOTJWMTYuOTJDMTAsMTYuNyA5LjE2LDE2LjI0IDguNDYsMTUuNTRDNy43NiwxNC44NCA3LjMsMTQgNy4wOCwxM0g0LjA4QzQuMywxNC43NyA1LjA1LDE2LjMgNi4zNSwxNy42QzcuNjUsMTguOSA5LjIsMTkuNjcgMTEsMTkuOTJNMTIsMkMxNC43NSwyIDE3LjEsMyAxOS4wNSw0Ljk1QzIxLDYuOSAyMiw5LjI1IDIyLDEyQzIyLDE0Ljc1IDIxLDE3LjEgMTkuMDUsMTkuMDVDMTcuMSwyMSAxNC43NSwyMiAxMiwyMkM5LjI1LDIyIDYuOSwyMSA0Ljk1LDE5LjA1QzMsMTcuMSAyLDE0Ljc1IDIsMTJDMiw5LjI1IDMsNi45IDQuOTUsNC45NUM2LjksMyA5LjI1LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVlcmluZ09mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTcuMjUsMjAuNUMxNS43LDIxLjUgMTMuOTUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsMTAuMDUgMi41LDguMyAzLjUsNi43NUwyLDUuMjdNMTMsMTkuOTJDMTQsMTkuOCAxNC45MywxOS41IDE1Ljc4LDE5LjA1TDEzLjUsMTYuNzhDMTMuMzQsMTYuODQgMTMuMTYsMTYuODggMTMsMTYuOTJWMTkuOTJNNC4wOCwxMUg3TDcuMzcsMTAuNjNMNC45Niw4LjIzQzQuNSw5LjA4IDQuMjEsMTAgNC4wOCwxMU0xOS45MiwxM0gxNi45MkMxNi44LDEzLjU0IDE2LjYsMTQuMDUgMTYuMzMsMTQuNUw5LjkxLDguMDlMMTAsOEgxNEwxNywxMUgxOS45MkMxOS42Nyw5LjA1IDE4Ljc5LDcuMzggMTcuMjcsNkMxNS43Niw0LjY2IDE0LDQgMTIsNEMxMC4yNiw0IDguNzEsNC41IDcuMzQsNS41TDUuOTEsNC4wOUM3LjY2LDIuNzEgOS42OSwyIDEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC4zMSAyMS4yOSwxNi4zNCAxOS45MSwxOC4wOUwxOC41LDE2LjY3QzE5LjI4LDE1LjU5IDE5Ljc2LDE0LjM2IDE5LjkyLDEzTTExLDE5LjkyVjE2LjkyQzEwLDE2LjcgOS4xNiwxNi4yNCA4LjQ2LDE1LjU0QzcuNzYsMTQuODQgNy4zLDE0IDcuMDgsMTNINC4wOEM0LjMsMTQuNzcgNS4wNSwxNi4zIDYuMzUsMTcuNkM3LjY1LDE4LjkgOS4yLDE5LjY3IDExLDE5LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0ZXBCYWNrd2FyZCA9IFwiTTE5LDVWMTlIMTZWNU0xNCw1VjE5TDMsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVwQmFja3dhcmQyID0gXCJNMTcsNUgxNFYxOUgxN1Y1TTEyLDVMMSwxMkwxMiwxOVY1TTIyLDVIMTlWMTlIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVwRm9yd2FyZCA9IFwiTTUsNVYxOUg4VjVNMTAsNVYxOUwyMSwxMlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0ZXBGb3J3YXJkMiA9IFwiTTcsNUgxMFYxOUg3VjVNMTIsNUwyMywxMkwxMiwxOVY1TTIsNUg1VjE5SDJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGV0aG9zY29wZSA9IFwiTTE5LDhDMTkuNTYsOCAyMCw4LjQzIDIwLDlBMSwxIDAgMCwxIDE5LDEwQzE4LjQzLDEwIDE4LDkuNTUgMTgsOUMxOCw4LjQzIDE4LjQzLDggMTksOE0yLDJWMTFDMiwxMy45NiA0LjE5LDE2LjUgNy4xNCwxNi45MUM3Ljc2LDE5LjkyIDEwLjQyLDIyIDEzLjUsMjJBNi41LDYuNSAwIDAsMCAyMCwxNS41VjExLjgxQzIxLjE2LDExLjM5IDIyLDEwLjI5IDIyLDlBMywzIDAgMCwwIDE5LDZBMywzIDAgMCwwIDE2LDlDMTYsMTAuMjkgMTYuODQsMTEuNCAxOCwxMS44MVYxNS40MUMxOCwxNy45MSAxNiwxOS45MSAxMy41LDE5LjkxQzExLjUsMTkuOTEgOS44MiwxOC43IDkuMjIsMTYuOUMxMiwxNi4zIDE0LDEzLjggMTQsMTFWMkgxMFY1SDEyVjExQTQsNCAwIDAsMSA4LDE1QTQsNCAwIDAsMSA0LDExVjVINlYySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlciA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyQWxlcnQgPSBcIk0xOC41IDJINS41QzMuNiAyIDIgMy42IDIgNS41VjE4LjVDMiAyMC40IDMuNiAyMiA1LjUgMjJIMTZMMjIgMTZWNS41QzIyIDMuNiAyMC40IDIgMTguNSAyTTEzIDE3SDExVjE1SDEzVjE2TTEzIDEzSDExVjdIMTNWMTJNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyQWxlcnRPdXRsaW5lID0gXCJNMTEgMTVIMTNWMTdIMTFWMTVNMTEgMTNIMTNWN0gxMVYxM00yMiA1LjVWMTZMMTYgMjJINS41QzMuNiAyMiAyIDIwLjQgMiAxOC41VjUuNUMyIDMuNiAzLjYgMiA1LjUgMkgxOC41QzIwLjQgMiAyMiAzLjYgMjIgNS41TTIwIDUuOEMyMCA0LjggMTkuMiA0IDE4LjIgNEg1LjhDNC44IDQgNCA0LjggNCA1LjhWMTguM0M0IDE5LjMgNC44IDIwLjEgNS44IDIwLjFIMTVWMTguNkMxNSAxNi43IDE2LjYgMTUuMSAxOC41IDE1LjFIMjBWNS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0aWNrZXJDaGVjayA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNNyAxMi41TDguMyAxMS4xTDEwLjQgMTMuMkwxNS42IDhMMTcgOS40TDEwLjUgMTZMNyAxMi41TTE1IDIwVjE4LjVDMTUgMTYuNiAxNi42IDE1IDE4LjUgMTVIMjBMMTUgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckNoZWNrT3V0bGluZSA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNMjAgMTVIMTguNUMxNi42IDE1IDE1IDE2LjYgMTUgMTguNVYyMEg1LjhDNC44IDIwIDQgMTkuMiA0IDE4LjJWNS44QzQgNC44IDQuOCA0IDUuOCA0SDE4LjNDMTkuMyA0IDIwLjEgNC44IDIwLjEgNS44VjE1TTE1LjIgOC4yTDE2LjcgOS43TDEwLjcgMTUuN0w3LjIgMTIuMkw4LjcgMTAuN0wxMC43IDEyLjdMMTUuMiA4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckNpcmNsZU91dGxpbmUgPSBcIk0xMi4xMiwxOC40NkwxOC4zLDEyLjI4QzE2Ljk0LDEyLjU5IDE1LjMxLDEzLjIgMTQuMDcsMTQuNDZDMTMuMDQsMTUuNSAxMi4zOSwxNi44MyAxMi4xMiwxOC40Nk0yMC43NSwxMEgyMS4wNUMyMS40NCwxMCAyMS43OSwxMC4yNyAyMS45MywxMC42NEMyMi4wNywxMSAyMiwxMS40MyAyMS43LDExLjcxTDExLjcsMjEuNzFDMTEuNSwyMS45IDExLjI2LDIyIDExLDIyTDEwLjY0LDIxLjkzQzEwLjI3LDIxLjc5IDEwLDIxLjQ0IDEwLDIxLjA1QzkuODQsMTcuNjYgMTAuNzMsMTQuOTYgMTIuNjYsMTMuMDNDMTUuNSwxMC4yIDE5LjYyLDEwIDIwLjc1LDEwTTEyLDJDMTYuNSwyIDIwLjM0LDUgMjEuNTgsOS4xMUwyMCw5SDE5LjQyQzE4LjI0LDYuMDcgMTUuMzYsNCAxMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTUuMzYgNi4wNywxOC4yNCA5LDE5LjQyQzguOTcsMjAuMTMgOSwyMC44NSA5LjExLDIxLjU3QzUsMjAuMzMgMiwxNi41IDIsMTJDMiw2LjQ3IDYuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckVtb2ppID0gXCJNNS41LDJDMy41NiwyIDIsMy41NiAyLDUuNVYxOC41QzIsMjAuNDQgMy41NiwyMiA1LjUsMjJIMTZMMjIsMTZWNS41QzIyLDMuNTYgMjAuNDQsMiAxOC41LDJINS41TTUuNzUsNEgxOC4yNUExLjc1LDEuNzUgMCAwLDEgMjAsNS43NVYxNUgxOC41QzE2LjU2LDE1IDE1LDE2LjU2IDE1LDE4LjVWMjBINS43NUExLjc1LDEuNzUgMCAwLDEgNCwxOC4yNVY1Ljc1QTEuNzUsMS43NSAwIDAsMSA1Ljc1LDRNMTQuNDQsNi43N0MxNC4yOCw2Ljc3IDE0LjEyLDYuNzkgMTMuOTcsNi44M0MxMy4wMyw3LjA5IDEyLjUsOC4wNSAxMi43NCw5QzEyLjc5LDkuMTUgMTIuODYsOS4zIDEyLjk1LDkuNDRMMTYuMTgsOC41NkMxNi4xOCw4LjM5IDE2LjE2LDguMjIgMTYuMTIsOC4wNUMxNS45MSw3LjMgMTUuMjIsNi43NyAxNC40NCw2Ljc3TTguMTcsOC41QzgsOC41IDcuODUsOC41IDcuNyw4LjU1QzYuNzcsOC44MSA2LjIyLDkuNzcgNi40NywxMC43QzYuNSwxMC44NiA2LjU5LDExIDYuNjgsMTEuMTZMOS45MSwxMC4yOEM5LjkxLDEwLjExIDkuODksOS45NCA5Ljg1LDkuNzhDOS42NCw5IDguOTUsOC41IDguMTcsOC41TTE2LjcyLDExLjI2TDcuNTksMTMuNzdDOC45MSwxNS4zIDExLDE1Ljk0IDEyLjk1LDE1LjQxQzE0LjksMTQuODcgMTYuMzYsMTMuMjUgMTYuNzIsMTEuMjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlck1pbnVzID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk04IDExSDE2VjEzSDhWMTFNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyTWludXNPdXRsaW5lID0gXCJNOCAxMUgxNlYxM0g4VjExTTIyIDUuNVYxNkwxNiAyMkg1LjVDMy42IDIyIDIgMjAuNCAyIDE4LjVWNS41QzIgMy42IDMuNiAyIDUuNSAySDE4LjVDMjAuNCAyIDIyIDMuNiAyMiA1LjVNMjAgNS44QzIwIDQuOCAxOS4yIDQgMTguMiA0SDUuOEM0LjggNCA0IDQuOCA0IDUuOFYxOC4zQzQgMTkuMyA0LjggMjAuMSA1LjggMjAuMUgxNVYxOC42QzE1IDE2LjcgMTYuNiAxNS4xIDE4LjUgMTUuMUgyMFY1LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlck91dGxpbmUgPSBcIk01LjUgMkMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMkg1LjVNNS44IDRIMTguM0MxOS4zIDQgMjAuMSA0LjggMjAuMSA1LjhWMTVIMTguNkMxNi43IDE1IDE1LjEgMTYuNiAxNS4xIDE4LjVWMjBINS44QzQuOCAyMCA0IDE5LjIgNCAxOC4yVjUuOEM0IDQuOCA0LjggNCA1LjggNFwiO1xyXG5leHBvcnQgdmFyIG1kaVN0aWNrZXJQbHVzID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk0xMyAxNkgxMVYxM0g4VjExSDExVjhIMTNWMTFIMTZWMTNIMTNWMTZNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUGx1c091dGxpbmUgPSBcIk0xMyAxMUgxNlYxM0gxM1YxNkgxMVYxM0g4VjExSDExVjhIMTNWMTFNMjIgNS41VjE2TDE2IDIySDUuNUMzLjYgMjIgMiAyMC40IDIgMTguNVY1LjVDMiAzLjYgMy42IDIgNS41IDJIMTguNUMyMC40IDIgMjIgMy42IDIyIDUuNU0yMCA1LjhDMjAgNC44IDE5LjIgNCAxOC4yIDRINS44QzQuOCA0IDQgNC44IDQgNS44VjE4LjNDNCAxOS4zIDQuOCAyMC4xIDUuOCAyMC4xSDE1VjE4LjZDMTUgMTYuNyAxNi42IDE1LjEgMTguNSAxNS4xSDIwVjUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUmVtb3ZlID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk0xMiAxMy40TDkuOSAxNS41TDguNSAxNC4xTDEwLjYgMTJMOC41IDkuOUw5LjkgOC41TDEyIDEwLjZMMTQuMSA4LjVMMTUuNSA5LjlMMTMuNCAxMkwxNS41IDE0LjFMMTQuMSAxNS41TDEyIDEzLjRNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUmVtb3ZlT3V0bGluZSA9IFwiTTE2IDkuNEwxMy40IDEyTDE2IDE0LjZMMTQuNiAxNkwxMiAxMy40TDkuNCAxNkw4IDE0LjZMMTAuNiAxMkw4IDkuNEw5LjQgOEwxMiAxMC42TDE0LjYgOEwxNiA5LjRNMjIgNS41VjE2TDE2IDIySDUuNUMzLjYgMjIgMiAyMC40IDIgMTguNVY1LjVDMiAzLjYgMy42IDIgNS41IDJIMTguNUMyMC40IDIgMjIgMy42IDIyIDUuNU0yMCA1LjhDMjAgNC44IDE5LjIgNCAxOC4yIDRINS44QzQuOCA0IDQgNC44IDQgNS44VjE4LjNDNCAxOS4zIDQuOCAyMC4xIDUuOCAyMC4xSDE1VjE4LjZDMTUgMTYuNyAxNi42IDE1LjEgMTguNSAxNS4xSDIwVjUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9ja2luZyA9IFwiTTE3LDJBMiwyIDAgMCwxIDE5LDRWN0EyLDIgMCAwLDEgMTcsOVYxN0MxNywxNy44NSAxNi41LDE4LjU3IDE1Ljc0LDE4Ljg2TDkuNSwyMS43N0M4LjUsMjIuMjQgNy4yOSwyMS44MSA2LjgzLDIwLjgxTDYsMTlDNS41LDE4IDUuOTUsMTYuOCA2Ljk1LDE2LjM0TDEwLDE0LjkxVjlBMiwyIDAgMCwxIDgsN1Y0QTIsMiAwIDAsMSAxMCwySDE3TTEwLDRWN0gxN1Y0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b21hY2ggPSBcIk00IDE4QzQuNjcgMTkuODUgNi4wNyAyMiAxMiAyMkMxNC4zNiAyMiAxNy4wNyAyMS45MyAxOSAyMEMyMCAxOSAyMiAxNyAyMiAxMVMyMCA0IDE4IDRDMTYuNjIgNCAxNSA0IDE0IDZWNi4wM0ExLjgyIDEuODIgMCAwIDEgMTIuMTMgNi45NUMxMSA2LjgxIDExIDYuMzcgMTEgNlYySDlWNkEyLjkyIDIuOTIgMCAwIDAgMTIgOUMxMyA5IDEzIDEwLjc4IDEzIDEyQzEzIDEzLjg5IDEyLjUgMTUuMjYgMTEgMTZDOC42OSAxNy4xNSA2LjM5IDE3IDUuNjEgMTUuNDdBMS41IDEuNSAwIDAgMCAzLjE0IDE0Ljg3QTMuNjcgMy42NyAwIDAgMCAyIDE4VjIySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RvcCA9IFwiTTE4LDE4SDZWNkgxOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9wQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNOSw5SDE1VjE1SDlcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9wQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNE05LDlWMTVIMTVWOVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlID0gXCJNMTIsMThINlYxNEgxMk0yMSwxNFYxMkwyMCw3SDRMMywxMlYxNEg0VjIwSDE0VjE0SDE4VjIwSDIwVjE0TTIwLDRINFY2SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RvcmUyNEhvdXIgPSBcIk0xNiwxMkgxNVYxMEgxM1Y3SDE0VjlIMTVWN0gxNk0xMSwxMEg5VjExSDExVjEySDhWOUgxMFY4SDhWN0gxMU0xOSw3VjRINVY3SDJWMjBIMTBWMTZIMTRWMjBIMjJWN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZU1pbnVzID0gXCJNNCA0VjZIMjBWNE00IDdMMyAxMlYxNEg0VjIwSDEzQzEyLjk1IDE5LjY2IDEyLjkyIDE5LjMxIDEyLjkyIDE4Ljk1QzEyLjkyIDE3LjczIDEzLjMgMTYuNTMgMTQgMTUuNTNWMTRIMTUuNTRDMTYuNTQgMTMuMzMgMTcuNzEgMTIuOTYgMTguOTEgMTIuOTZDMTkuNjIgMTIuOTYgMjAuMzMgMTMuMDkgMjEgMTMuMzRWMTJMMjAgN002IDE0SDEyVjE4SDZNMTUgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZU91dGxpbmUgPSBcIk0xOC4zNiA5TDE4Ljk2IDEySDUuMDRMNS42NCA5SDE4LjM2TTIwIDRINFY2SDIwVjRNMjAgN0g0TDMgMTJWMTRINFYyMEgxNFYxNEgxOFYyMEgyMFYxNEgyMVYxMkwyMCA3TTYgMThWMTRIMTJWMThINlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZVBsdXMgPSBcIk00IDRWNkgyMFY0TTQgN0wzIDEyVjE0SDRWMjBIMTNDMTIuOTUgMTkuNjYgMTIuOTIgMTkuMzEgMTIuOTIgMTguOTVDMTIuOTIgMTcuNzMgMTMuMyAxNi41MyAxNCAxNS41M1YxNEgxNS41NEMxNi41NCAxMy4zMyAxNy43MSAxMi45NiAxOC45MSAxMi45NkMxOS42MiAxMi45NiAyMC4zMyAxMy4wOSAyMSAxMy4zNFYxMkwyMCA3TTYgMTRIMTJWMThINk0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlUmVtb3ZlID0gXCJNNCA0SDIwVjZINFY0TTE1LjQ2IDE2Ljg4TDE2Ljg4IDE1LjQ2TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ2IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TTQgN0gyMEwyMSAxMlYxMy4zNEMyMC4zMyAxMy4wOSAxOS42MiAxMi45NiAxOC45MSAxMi45NkMxNy43MSAxMi45NiAxNi41NCAxMy4zMyAxNS41NCAxNEgxNFYxNS41M0MxMy4zIDE2LjUzIDEyLjkyIDE3LjczIDEyLjkyIDE4Ljk1TDEzIDIwSDRWMTRIM1YxMkw0IDdNNiAxNFYxOEgxMlYxNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlZnJvbnQgPSBcIk01LjA2IDNDNC42MyAzIDQuMjIgMy4xNCAzLjg0IDMuNDJDMy40NiAzLjcgMy4yNCA0LjA2IDMuMTQgNC41TDIuMTEgOC45MUMxLjg2IDEwIDIuMDYgMTAuOTIgMi42OSAxMS43M0MyLjgxIDExLjg1IDIuOTMgMTEuOTcgMy4wNCAxMi4wN0MzLjYzIDEyLjY0IDQuMjggMTMgNS4yMiAxM0M2LjE2IDEzIDYuOTEgMTIuNTkgNy40NyAxMi4wNUM4LjEgMTIuNjcgOC44NiAxMyA5LjggMTNDMTAuNjQgMTMgMTEuNDQgMTIuNjMgMTIgMTIuMDdDMTIuNjggMTIuNyAxMy40NSAxMyAxNC4zIDEzQzE1LjE3IDEzIDE1LjkxIDEyLjY3IDE2LjU0IDEyLjA1QzE3LjExIDEyLjYyIDE3Ljg2IDEzIDE4LjgxIDEzQzE5Ljc2IDEzIDIwLjQzIDEyLjY1IDIxIDEyLjA2QzIxLjA5IDExLjk3IDIxLjE4IDExLjg3IDIxLjI4IDExLjc3QzIxLjk0IDEwLjk1IDIyLjE0IDEwIDIxLjg5IDguOTFMMjAuODYgNC41QzIwLjczIDQuMDYgMjAuNSAzLjcgMjAuMTMgMy40MkMxOS43NyAzLjE0IDE5LjM4IDMgMTguOTQgM00xOC44OSA0Ljk3TDE5Ljk3IDkuMzhDMjAuMDYgOS44MSAxOS45NyAxMC4yIDE5LjY5IDEwLjU1QzE5LjQ0IDEwLjg2IDE5LjEzIDExIDE4Ljc1IDExQzE4LjQ0IDExIDE4LjE3IDEwLjkgMTcuOTUgMTAuNjZDMTcuNzMgMTAuNDMgMTcuNjEgMTAuMTYgMTcuNTggOS44NEwxNi45NyA1TTUuMDYgNUg3LjAzTDYuNDIgOS44NEM2LjMgMTAuNjMgNS45MSAxMSA1LjI1IDExQzQuODQgMTEgNC41MyAxMC44NiA0LjMxIDEwLjU1QzQuMDMgMTAuMiAzLjk0IDkuODEgNC4wMyA5LjM4TTkuMDUgNUgxMVY5LjdDMTEgMTAuMDUgMTAuODkgMTAuMzUgMTAuNjQgMTAuNjJDMTAuMzkgMTAuODggMTAuMDggMTEgOS43IDExQzkuMzYgMTEgOS4wNyAxMC44OCA4Ljg0IDEwLjU5QzguNjEgMTAuMyA4LjUgMTAgOC41IDkuNjZWOS41TTEzIDVIMTQuOTVMMTUuNSA5LjVDMTUuNTggOS45MiAxNS41IDEwLjI3IDE1LjIxIDEwLjU3QzE0Ljk1IDEwLjg3IDE0LjYxIDExIDE0LjIgMTFDMTMuODkgMTEgMTMuNjEgMTAuODggMTMuMzYgMTAuNjJDMTMuMTEgMTAuMzUgMTMgMTAuMDUgMTMgOS43TTMgMTQuMDNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFDOS42NyAyMSAxNC4zMyAyMSAxOSAyMUMyMC4xIDIxIDIxIDIwLjExIDIxIDE5VjE0LjA1QzIwLjQ1IDE0LjYzIDE5Ljc1IDE0Ljk2IDE5IDE1QzE4IDE1LjAzIDE3LjI1IDE0Ljc0IDE2LjU0IDE0LjA1QzE1Ljk0IDE0LjY1IDE1LjE0IDE1IDE0LjMgMTVDMTMuNCAxNSAxMi42IDE0LjY0IDEyIDE0LjA3QzExLjQzIDE0LjY0IDEwLjY1IDE1IDkuNzggMTVDOC44NyAxNSA4LjA3IDE0LjY1IDcuNDcgMTQuMDVDNi44OSAxNC42NCA2LjEgMTUgNS4yMyAxNUM0LjMzIDE1IDMuNjYgMTQuNjUgMyAxNC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZWZyb250T3V0bGluZSA9IFwiTTUuMDYgM0M0LjYzIDMgNC4yMiAzLjE0IDMuODQgMy40MlMzLjI0IDQuMDYgMy4xNCA0LjVMMi4xMSA4LjkxQzEuODYgMTAgMi4wNiAxMC45NSAyLjcyIDExLjc3TDMgMTIuMDVWMTlDMyAxOS41IDMuMiAyMCAzLjYxIDIwLjM5UzQuNSAyMSA1IDIxSDE5QzE5LjUgMjEgMjAgMjAuOCAyMC4zOSAyMC4zOVMyMSAxOS41IDIxIDE5VjEyLjA1TDIxLjI4IDExLjc3QzIxLjk0IDEwLjk1IDIyLjE0IDEwIDIxLjg5IDguOTFMMjAuODYgNC41QzIwLjczIDQuMDYgMjAuNSAzLjcgMjAuMTMgMy40MkMxOS43NyAzLjE0IDE5LjM4IDMgMTguOTQgM0g1LjA2TTE4Ljg5IDQuOTdMMTkuOTcgOS4zOEMyMC4wNiA5LjgxIDE5Ljk3IDEwLjIgMTkuNjkgMTAuNTVDMTkuNDQgMTAuODYgMTkuMTMgMTEgMTguNzUgMTFDMTguNDQgMTEgMTguMTcgMTAuOSAxNy45NSAxMC42NkMxNy43MyAxMC40MyAxNy42MSAxMC4xNiAxNy41OCA5Ljg0TDE2Ljk3IDVMMTguODkgNC45N001LjA2IDVINy4wM0w2LjQyIDkuODRDNi4zIDEwLjYzIDUuOTEgMTEgNS4yNSAxMUM0Ljg0IDExIDQuNTMgMTAuODYgNC4zMSAxMC41NUM0LjAzIDEwLjIgMy45NCA5LjgxIDQuMDMgOS4zOEw1LjA2IDVNOS4wNSA1SDExVjkuN0MxMSAxMC4wNSAxMC44OSAxMC4zNSAxMC42NCAxMC42MkMxMC4zOSAxMC44OCAxMC4wOCAxMSA5LjcgMTFDOS4zNiAxMSA5LjA3IDEwLjg4IDguODQgMTAuNTlTOC41IDEwIDguNSA5LjY2VjkuNUw5LjA1IDVNMTMgNUgxNC45NUwxNS41IDkuNUMxNS41OCA5LjkyIDE1LjUgMTAuMjcgMTUuMjEgMTAuNTdDMTQuOTUgMTAuODcgMTQuNjEgMTEgMTQuMiAxMUMxMy44OSAxMSAxMy42MSAxMC44OCAxMy4zNiAxMC42MkMxMy4xMSAxMC4zNSAxMyAxMC4wNSAxMyA5LjdWNU03LjQ1IDEyLjA1QzguMDggMTIuNjcgOC44NiAxMyA5LjggMTNDMTAuNjQgMTMgMTEuMzggMTIuNjcgMTIgMTIuMDVDMTIuNjkgMTIuNjcgMTMuNDUgMTMgMTQuMyAxM0MxNS4xNyAxMyAxNS45MiAxMi42NyAxNi41NSAxMi4wNUMxNy4xMSAxMi42NyAxNy44NiAxMyAxOC44IDEzSDE5LjAzVjE5SDVWMTNINS4yNUM2LjE2IDEzIDYuODkgMTIuNjcgNy40NSAxMi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG92ZSA9IFwiTTYsMTRIOEwxMSwxN0g5TDYsMTRNNCw0SDVWM0ExLDEgMCAwLDEgNiwySDEwQTEsMSAwIDAsMSAxMSwzVjRIMTNWM0ExLDEgMCAwLDEgMTQsMkgxOEExLDEgMCAwLDEgMTksM1Y0SDIwQTIsMiAwIDAsMSAyMiw2VjE5QTIsMiAwIDAsMSAyMCwyMVYyMkgxN1YyMUg3VjIySDRWMjFBMiwyIDAgMCwxIDIsMTlWNkEyLDIgMCAwLDEgNCw0TTE4LDdBMSwxIDAgMCwxIDE5LDhBMSwxIDAgMCwxIDE4LDlBMSwxIDAgMCwxIDE3LDhBMSwxIDAgMCwxIDE4LDdNMTQsN0ExLDEgMCAwLDEgMTUsOEExLDEgMCAwLDEgMTQsOUExLDEgMCAwLDEgMTMsOEExLDEgMCAwLDEgMTQsN00yMCw2SDRWMTBIMjBWNk00LDE5SDIwVjEySDRWMTlNNiw3QTEsMSAwIDAsMSA3LDhBMSwxIDAgMCwxIDYsOUExLDEgMCAwLDEgNSw4QTEsMSAwIDAsMSA2LDdNMTMsMTRIMTVMMTgsMTdIMTZMMTMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RyYXRlZ3kgPSBcIk02LjkxIDUuNUw5LjIxIDcuNzlMNy43OSA5LjIxTDUuNSA2LjkxTDMuMjEgOS4yMUwxLjc5IDcuNzlMNC4wOSA1LjVMMS43OSAzLjIxTDMuMjEgMS43OUw1LjUgNC4wOUw3Ljc5IDEuNzlMOS4yMSAzLjIxTTIyLjIxIDE2LjIxTDIwLjc5IDE0Ljc5TDE4LjUgMTcuMDlMMTYuMjEgMTQuNzlMMTQuNzkgMTYuMjFMMTcuMDkgMTguNUwxNC43OSAyMC43OUwxNi4yMSAyMi4yMUwxOC41IDE5LjkxTDIwLjc5IDIyLjIxTDIyLjIxIDIwLjc5TDE5LjkxIDE4LjVNMjAuNCA2LjgzTDE3LjE4IDExTDE1LjYgOS43M0wxNi43NyA4LjIzQTkuMDggOS4wOCAwIDAgMCAxMC4xMSAxMy44NUE0LjUgNC41IDAgMSAxIDcuNSAxM0E0IDQgMCAwIDEgOC4yOCAxMy4wOEExMS4yNyAxMS4yNyAwIDAgMSAxNi40MyA2LjI2TDE1IDUuMThMMTYuMjcgMy42TTEwIDE3LjVBMi41IDIuNSAwIDEgMCA3LjUgMjBBMi41IDIuNSAwIDAgMCAxMCAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0cmV0Y2hUb1BhZ2UgPSBcIk0yMCwySDRDMi44OSwyIDIsMi44OSAyLDRWMjBDMiwyMS4xMSAyLjg5LDIyIDQsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMk05LDE5SDVWMTVMNi4yOSwxNi4yOUw3LjgzLDE0Ljc1TDkuMjUsMTYuMTdMNy43MSwxNy43MU03LjgzLDkuMjVMNi4yOSw3LjcxTDUsOVY1SDlMNy43MSw2LjI5TDkuMjUsNy44M00xOSwxOUgxNUwxNi4yOSwxNy43MUwxNC43NSwxNi4xN0wxNi4xNywxNC43NUwxNy43MSwxNi4yOUwxOSwxNU0xOSw5TDE3LjcxLDcuNzFMMTYuMTcsOS4yNUwxNC43NSw3LjgzTDE2LjI5LDYuMjlMMTUsNUgxOVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0cmV0Y2hUb1BhZ2VPdXRsaW5lID0gXCJNMjAsMkg0QzIuODksMiAyLDIuODkgMiw0VjIwQzIsMjEuMTEgMi44OSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xMSwyIDIwLDJNMjAsMjBINFY0SDIwTTguODMsMTAuMjVMNy4yOSw4LjcxTDYsMTBWNkgxMEw4LjcxLDcuMjlMMTAuMjUsOC44M00xMy43NSw4LjgzTDE1LjI5LDcuMjlMMTQsNkgxOFYxMEwxNi43MSw4LjcxTDE1LjE3LDEwLjI1TTE1LjE3LDEzLjc1TDE2LjcxLDE1LjI5TDE4LDE0VjE4SDE0TDE1LjI5LDE2LjcxTDEzLjc1LDE1LjE3TTEwLjI1LDE1LjE3TDguNzEsMTYuNzFMMTAsMThINlYxNEw3LjI5LDE1LjI5TDguODMsMTMuNzVcIjtcclxuZXhwb3J0IHZhciBtZGlTdHJpbmdMaWdodHMgPSBcIk0yMi41NiAxMS4zOUMyMi4zNiAxMC41OSAyMS44MiA5Ljg1IDIxLjA1IDkuNDRMMjAuNjMgNy43NEMyMS4xMSA3LjU4IDIxLjU3IDcuNDEgMjIgNy4yM1Y1QzIwIDYuMDcgMTYuNTMgNy4wMyAxMiA3LjAzUzQgNi4wNyAyIDVWNy4yM0MyLjQzIDcuNDEgMi44OSA3LjU4IDMuMzcgNy43NEwyLjk1IDkuNDRDMi4xOCA5Ljg1IDEuNjQgMTAuNTkgMS40NCAxMS4zOUMuOTA1IDEzLjU3IC4zODUgMTcuMzEgMi45MiAxNy45M0M0IDE4LjIgNiAxNy44OSA3LjI3IDEyLjgyQzcuNDYgMTIgNy4zMyAxMS4xMiA2Ljg0IDEwLjM5TDcuMjYgOC42N0M4LjE0IDguODEgOS4wNSA4LjkgMTAgOC45NlYxMC43NEM5LjM1IDExLjMzIDkgMTIuMTcgOSAxM0M5IDE1LjI0IDkuMzkgMTkgMTIgMTlDMTMuMTIgMTkgMTUgMTguMjIgMTUgMTNDMTUgMTIuMTcgMTQuNjUgMTEuMzMgMTQgMTAuNzRWOC45NkMxNC45NSA4LjkgMTUuODYgOC44MSAxNi43NCA4LjY3TDE3LjE2IDEwLjM5QzE2LjY3IDExLjEyIDE2LjU0IDEyIDE2LjczIDEyLjgyQzE4IDE3Ljg5IDIwIDE4LjIgMjEuMDggMTcuOTNDMjMuNjEgMTcuMzEgMjMuMDkgMTMuNTcgMjIuNTYgMTEuMzlNNS44MSAxMi40N0M1LjgxIDEyLjQ3IDQuNzQgMTYuODQgMy4yOCAxNi41QzEuODIgMTYuMTIgMi45IDExLjc1IDIuOSAxMS43NVMzLjI2IDEwLjI5IDQuNzEgMTAuNjUgNS44MSAxMi40NyA1LjgxIDEyLjQ3TTEyIDE3LjVDMTAuNSAxNy41IDEwLjUgMTMgMTAuNSAxM1MxMC41IDExLjUgMTIgMTEuNSAxMy41IDEzIDEzLjUgMTMgMTMuNSAxNy41IDEyIDE3LjVNMjAuNzIgMTYuNUMxOS4yNyAxNi44NCAxOC4xOSAxMi40NyAxOC4xOSAxMi40N1MxNy44MyAxMSAxOS4yOSAxMC42NSAyMS4xIDExLjc1IDIxLjEgMTEuNzUgMjIuMTggMTYuMTIgMjAuNzIgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdHJpbmdMaWdodHNPZmYgPSBcIk0xNCAxMC43NFY4Ljk2QzE0Ljk1IDguOSAxNS44NiA4LjgxIDE2Ljc0IDguNjdMMTcuMTYgMTAuMzlDMTYuNjcgMTEuMTIgMTYuNTQgMTIgMTYuNzMgMTIuODJDMTYuODIgMTMuMTcgMTYuOTEgMTMuNSAxNyAxMy44TDIxLjEyIDE3LjkyQzIzLjYxIDE3LjI2IDIzLjA5IDEzLjU1IDIyLjU2IDExLjM5QzIyLjM2IDEwLjU5IDIxLjgyIDkuODUgMjEuMDUgOS40NEwyMC42MyA3Ljc0QzIxLjExIDcuNTggMjEuNTcgNy40MSAyMiA3LjIzVjVDMjAgNi4wNyAxNi41MyA3LjAzIDEyIDcuMDNDMTEuMzcgNy4wMyAxMC43NiA3IDEwLjE3IDYuOTdNMjAuNzIgMTYuNUMxOS4yNyAxNi44NCAxOC4xOSAxMi40NyAxOC4xOSAxMi40N1MxNy44MyAxMSAxOS4yOSAxMC42NSAyMS4xIDExLjc1IDIxLjEgMTEuNzUgMjIuMTggMTYuMTIgMjAuNzIgMTYuNU0xNC45NSAxNC4yOUwxMy41IDEyLjgzVjEyLjgzTDEyLjE4IDExLjVIMTIuMThMMTAgOS4zNFY5LjM0TDkuNTggOC45M0g5LjU5TDcuMzIgNi42Nkg3LjMyTDIuMzkgMS43M0wxLjExIDNMMy45MSA1LjhDMy4xOSA1LjU1IDIuNTMgNS4yOCAyIDVWNy4yM0MyLjQzIDcuNDEgMi44OSA3LjU4IDMuMzcgNy43NEwyLjk1IDkuNDRDMi4xOCA5Ljg1IDEuNjQgMTAuNTkgMS40NCAxMS4zOUMuOTA1IDEzLjU3IC4zODUgMTcuMzEgMi45MiAxNy45M0M0IDE4LjIgNiAxNy44OSA3LjI3IDEyLjgyQzcuNDYgMTIgNy4zMyAxMS4xMiA2Ljg0IDEwLjM5TDcuMTcgOS4wNkw5LjUgMTEuMzhDOS4xOCAxMS44NyA5IDEyLjQ0IDkgMTNDOSAxNS4yNCA5LjM5IDE5IDEyIDE5QzEyLjggMTkgMTMuOTcgMTguNTkgMTQuNTkgMTYuNUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxNC45NSAxNC4zTDE0Ljk1IDE0LjI5TTUuODEgMTIuNDdDNS44MSAxMi40NyA0Ljc0IDE2Ljg0IDMuMjggMTYuNUMxLjgyIDE2LjEyIDIuOSAxMS43NSAyLjkgMTEuNzVTMy4yNiAxMC4yOSA0LjcxIDEwLjY1IDUuODEgMTIuNDcgNS44MSAxMi40N00xMiAxNy41QzEwLjUgMTcuNSAxMC41IDEzIDEwLjUgMTNTMTAuNSAxMi43NyAxMC42IDEyLjVMMTMuMzIgMTUuMjFDMTMuMTMgMTYuMzUgMTIuNzYgMTcuNSAxMiAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YmRpcmVjdG9yeUFycm93TGVmdCA9IFwiTTExLDlMMTIuNDIsMTAuNDJMOC44MywxNEgxOFY0SDIwVjE2SDguODNMMTIuNDIsMTkuNThMMTEsMjFMNSwxNUwxMSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YmRpcmVjdG9yeUFycm93UmlnaHQgPSBcIk0xOSwxNUwxMywyMUwxMS41OCwxOS41OEwxNS4xNywxNkg0VjRINlYxNEgxNS4xN0wxMS41OCwxMC40MkwxMyw5TDE5LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1Ym1hcmluZSA9IFwiTTggMy42N0M2Ljc4IDQuNTMgNS4zOSA0LjkzIDQgNUgyVjdINEM1LjM3IDcgNi43NCA2LjY1IDggNkMxMC41IDcuMyAxMy41IDcuMyAxNiA2QzE3LjI2IDYuNjUgMTguNjIgNi45NCAyMCA3SDIyVjVIMjBDMTguNjEgNSAxNy4yMiA0LjUzIDE2IDMuNjdDMTMuNTYgNS4zOCAxMC40NCA1LjM4IDggMy42N00xNiA4LjY3TDE1IDEwVjEySDE0TDEyIDE0SDlMNiAxNkw1IDE0SDRWMTZMMiAxN0w0IDE4VjIwSDUuMTRMNiAxOEw5IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFYxNkEyIDIgMCAwIDAgMjAgMTRIMThMMTcgMTNWMTJIMTZWMTBIMTdWOC42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdWJ0aXRsZXMgPSBcIk0yMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkEyLDIgMCAwLDAgMjAsNE00LDEySDhWMTRINFYxMk0xNCwxOEg0VjE2SDE0VjE4TTIwLDE4SDE2VjE2SDIwVjE4TTIwLDE0SDEwVjEySDIwVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YnRpdGxlc091dGxpbmUgPSBcIk0yMCw0QTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyME0yMCwxOFY2SDRWMThIMjBNNiwxMEg4VjEySDZWMTBNNiwxNEgxNFYxNkg2VjE0TTE2LDE0SDE4VjE2SDE2VjE0TTEwLDEwSDE4VjEySDEwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YndheSA9IFwiTTguNSwxNUExLDEgMCAwLDEgOS41LDE2QTEsMSAwIDAsMSA4LjUsMTdBMSwxIDAgMCwxIDcuNSwxNkExLDEgMCAwLDEgOC41LDE1TTcsOUgxN1YxNEg3VjlNMTUuNSwxNUExLDEgMCAwLDEgMTYuNSwxNkExLDEgMCAwLDEgMTUuNSwxN0ExLDEgMCAwLDEgMTQuNSwxNkExLDEgMCAwLDEgMTUuNSwxNU0xOCwxNS44OFY5QzE4LDYuMzggMTUuMzIsNiAxMiw2QzksNiA2LDYuMzcgNiw5VjE1Ljg4QTIuNjIsMi42MiAwIDAsMCA4LjYyLDE4LjVMNy41LDE5LjYyVjIwSDkuMTdMMTAuNjcsMTguNUgxMy41TDE1LDIwSDE2LjVWMTkuNjJMMTUuMzcsMTguNUMxNi44MiwxOC41IDE4LDE3LjMzIDE4LDE1Ljg4TTE3LjgsMi44QzIwLjQ3LDMuODQgMjIsNi4wNSAyMiw4Ljg2VjIySDJWOC44NkMyLDYuMDUgMy41MywzLjg0IDYuMiwyLjhDOCwyLjA5IDEwLjE0LDIgMTIsMkMxMy44NiwyIDE2LDIuMDkgMTcuOCwyLjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vid2F5QWxlcnRWYXJpYW50ID0gXCJNMTYgMTFWNkgxMVYxMUgxNk0xNC41IDE3QzE1LjMgMTcgMTYgMTYuMyAxNiAxNS41QzE2IDE0LjcgMTUuMyAxNCAxNC41IDE0UzEzIDE0LjcgMTMgMTUuNUMxMyAxNi4zIDEzLjcgMTcgMTQuNSAxN005IDExVjZINFYxMUg5TTUuNSAxN0M2LjMgMTcgNyAxNi4zIDcgMTUuNUM3IDE0LjcgNi4zIDE0IDUuNSAxNFM0IDE0LjcgNCAxNS41QzQgMTYuMyA0LjcgMTcgNS41IDE3TTEwIDJDMTQuNCAyIDE4IDIuNSAxOCA2VjE1LjVDMTggMTcuNCAxNi40IDE5IDE0LjUgMTlMMTYgMjAuNVYyMUg0VjIwLjVMNS41IDE5QzMuNiAxOSAyIDE3LjQgMiAxNS41VjZDMiAyLjUgNS42IDIgMTAgMk0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YndheVZhcmlhbnQgPSBcIk0xOCwxMUgxM1Y2SDE4TTE2LjUsMTdBMS41LDEuNSAwIDAsMSAxNSwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNEExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3TTExLDExSDZWNkgxMU03LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTRBMS41LDEuNSAwIDAsMSA5LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdNMTIsMkM3LjU4LDIgNCwyLjUgNCw2VjE1LjVBMy41LDMuNSAwIDAsMCA3LjUsMTlMNiwyMC41VjIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNkMyMCwyLjUgMTYuNDIsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1bW1pdCA9IFwiTTE1LDNIMTdMMjIsNUwxNyw3VjEwLjE3TDIyLDIxSDJMOCwxM0wxMS41LDE3LjdMMTUsMTAuMTdWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdW5nbGFzc2VzID0gXCJNNywxN0g0QzIuMzgsMTcgMC45NiwxNS43NCAwLjc2LDE0LjE0TDAuMjYsMTEuMTVDMC4xNSwxMC4zIDAuMzksOS41IDAuOTEsOC45MkMxLjQzLDguMzQgMi4xOSw4IDMsOEg5QzkuODMsOCAxMC41OCw4LjM1IDExLjA2LDguOTZDMTEuMTcsOS4xMSAxMS4yNyw5LjI3IDExLjM1LDkuNDVDMTEuNzgsOS4zNiAxMi4yMiw5LjM2IDEyLjY0LDkuNDVDMTIuNzIsOS4yNyAxMi44Miw5LjExIDEyLjk0LDguOTZDMTMuNDEsOC4zNSAxNC4xNiw4IDE1LDhIMjFDMjEuODEsOCAyMi41Nyw4LjM0IDIzLjA5LDguOTJDMjMuNiw5LjUgMjMuODQsMTAuMyAyMy43NCwxMS4xMUwyMy4yMywxNC4xOEMyMy4wNCwxNS43NCAyMS42MSwxNyAyMCwxN0gxN0MxNS40NCwxNyAxMy45MiwxNS44MSAxMy41NCwxNC4zTDEyLjY0LDExLjU5QzEyLjI2LDExLjMxIDExLjczLDExLjMxIDExLjM1LDExLjU5TDEwLjQzLDE0LjM3QzEwLjA3LDE1LjgyIDguNTYsMTcgNywxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdXJyb3VuZFNvdW5kID0gXCJNMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZBMiwyIDAgMCwwIDIwLDRNNy43NiwxNi4yNEw2LjM1LDE3LjY1QzQuNzgsMTYuMSA0LDE0LjA1IDQsMTJDNCw5Ljk1IDQuNzgsNy45IDYuMzQsNi4zNEw3Ljc1LDcuNzVDNi41OSw4LjkzIDYsMTAuNDYgNiwxMkM2LDEzLjU0IDYuNTksMTUuMDcgNy43NiwxNi4yNE0xMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2TTE3LjY2LDE3LjY2TDE2LjI1LDE2LjI1QzE3LjQxLDE1LjA3IDE4LDEzLjU0IDE4LDEyQzE4LDEwLjQ2IDE3LjQxLDguOTMgMTYuMjQsNy43NkwxNy42NSw2LjM1QzE5LjIyLDcuOSAyMCw5Ljk1IDIwLDEyQzIwLDE0LjA1IDE5LjIyLDE2LjEgMTcuNjYsMTcuNjZNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1cnJvdW5kU291bmQyMCA9IFwiTTE3LDdIMTlBMiwyIDAgMCwxIDIxLDlWMTVBMiwyIDAgMCwxIDE5LDE3SDE3QTIsMiAwIDAsMSAxNSwxNVY5QTIsMiAwIDAsMSAxNyw3TTE3LDlWMTVIMTlWOUgxN005LDE3SDNWMTVMNyw5SDNWN0g3QTIsMiAwIDAsMSA5LDlDOSw5LjQyIDguODcsOS44MSA4LjY1LDEwLjEzTDUuNDEsMTVIOVYxN00xMiwxN0ExLDEgMCAwLDEgMTEsMTZBMSwxIDAgMCwxIDEyLDE1QTEsMSAwIDAsMSAxMywxNkExLDEgMCAwLDEgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDIxID0gXCJNNCA3VjlIOFYxMUg2QTIgMiAwIDAgMCA0IDEzVjE3SDEwVjE1SDZWMTNIOEEyIDIgMCAwIDAgMTAgMTFWOUEyIDIgMCAwIDAgOCA3SDRNMTYgN1Y5SDE4VjE3SDIwVjdIMTZNMTIgMTVWMTdIMTRWMTVIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDMxID0gXCJNMTMsMTdBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMywxNUExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3TTE5LDdWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNkwxNyw3SDE5TTQsN0g4QTIsMiAwIDAsMSAxMCw5VjE1QTIsMiAwIDAsMSA4LDE3SDRWMTVIOFYxM0g1VjExSDhWOUg0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDUxID0gXCJNMTMsMTdBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMywxNUExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3TTE5LDdWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNkwxNyw3SDE5TTYsMTNBMiwyIDAgMCwxIDQsMTFWN0gxMFY5SDZWMTFIOEEyLDIgMCAwLDEgMTAsMTNWMTVBMiwyIDAgMCwxIDgsMTdINFYxNUg4VjEzSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDUxMiA9IFwiTTIgOFYxM0g1VjE0SDJWMTZINUM2LjExIDE2IDcgMTUuMTEgNyAxNFYxM0M3IDExLjkgNi4xMSAxMSA1IDExSDRWMTBIN1Y4SDJNMTAgOFYxMEgxMVYxNkgxM1Y4SDEwTTE3IDhWMTBIMjBWMTFIMTlDMTcuOSAxMSAxNyAxMS45IDE3IDEzVjE2SDIyVjE0SDE5VjEzSDIwQzIxLjExIDEzIDIyIDEyLjExIDIyIDExVjEwQzIyIDguOSAyMS4xMSA4IDIwIDhIMTdNOCAxNFYxNkgxMFYxNEg4TTE0IDE0VjE2SDE2VjE0SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1cnJvdW5kU291bmQ3MSA9IFwiTTEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVBMSwxIDAgMCwxIDEzLDE2QTEsMSAwIDAsMSAxMiwxN00xOCw3VjE1SDE5VjE3SDE1VjE1SDE2VjlIMTVMMTYsN0gxOE0xMSw3TDgsMTdINkw4LjQsOUg1VjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ZnID0gXCJNNS4xMywxMC43MUg4Ljg3TDYuMjIsOC4wNkM1LjIxLDguMDYgNC4zOSw3LjI0IDQuMzksNi4yMkExLjgzLDEuODMgMCAwLDEgNi4yMiw0LjM5QzcuMjQsNC4zOSA4LjA2LDUuMjEgOC4wNiw2LjIyTDEwLjcxLDguODdWNS4xM0MxMCw0LjQxIDEwLDMuMjUgMTAuNzEsMi41NEMxMS40MiwxLjgyIDEyLjU4LDEuODIgMTMuMjksMi41NEMxNCwzLjI1IDE0LDQuNDEgMTMuMjksNS4xM1Y4Ljg3TDE1Ljk1LDYuMjJDMTUuOTUsNS4yMSAxNi43Niw0LjM5IDE3Ljc4LDQuMzlDMTguNzksNC4zOSAxOS42MSw1LjIxIDE5LjYxLDYuMjJDMTkuNjEsNy4yNCAxOC43OSw4LjA2IDE3Ljc4LDguMDZMMTUuMTMsMTAuNzFIMTguODdDMTkuNTksMTAgMjAuNzUsMTAgMjEuNDYsMTAuNzFDMjIuMTgsMTEuNDIgMjIuMTgsMTIuNTggMjEuNDYsMTMuMjlDMjAuNzUsMTQgMTkuNTksMTQgMTguODcsMTMuMjlIMTUuMTNMMTcuNzgsMTUuOTVDMTguNzksMTUuOTUgMTkuNjEsMTYuNzYgMTkuNjEsMTcuNzhBMS44MywxLjgzIDAgMCwxIDE3Ljc4LDE5LjYxQzE2Ljc2LDE5LjYxIDE1Ljk1LDE4Ljc5IDE1Ljk1LDE3Ljc4TDEzLjI5LDE1LjEzVjE4Ljg3QzE0LDE5LjU5IDE0LDIwLjc1IDEzLjI5LDIxLjQ2QzEyLjU4LDIyLjE4IDExLjQyLDIyLjE4IDEwLjcxLDIxLjQ2QzEwLDIwLjc1IDEwLDE5LjU5IDEwLjcxLDE4Ljg3VjE1LjEzTDguMDYsMTcuNzhDOC4wNiwxOC43OSA3LjI0LDE5LjYxIDYuMjIsMTkuNjFDNS4yMSwxOS42MSA0LjM5LDE4Ljc5IDQuMzksMTcuNzhDNC4zOSwxNi43NiA1LjIxLDE1Ljk1IDYuMjIsMTUuOTVMOC44NywxMy4yOUg1LjEzQzQuNDEsMTQgMy4yNSwxNCAyLjU0LDEzLjI5QzEuODIsMTIuNTggMS44MiwxMS40MiAyLjU0LDEwLjcxQzMuMjUsMTAgNC40MSwxMCA1LjEzLDEwLjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN3YXBIb3Jpem9udGFsID0gXCJNMjEsOUwxNyw1VjhIMTBWMTBIMTdWMTNNNywxMUwzLDE1TDcsMTlWMTZIMTRWMTRIN1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbEJvbGQgPSBcIk04LDEwVjEzSDE0VjE4SDhWMjFMMiwxNS41TDgsMTBNMjIsOC41TDE2LDNWNkgxMFYxMUgxNlYxNEwyMiw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dhcEhvcml6b250YWxDaXJjbGUgPSBcIk0yMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMk0xNSA2LjVMMTguNSAxMEwxNSAxMy41VjExSDExVjlIMTVWNi41TTkgMTcuNUw1LjUgMTRMOSAxMC41VjEzSDEzVjE1SDlWMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbENpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyME0xNSA2LjVWOUgxMVYxMUgxNVYxMy41TDE4LjUgMTBMMTUgNi41TTkgMTAuNUw1LjUgMTRMOSAxNy41VjE1SDEzVjEzSDlWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbFZhcmlhbnQgPSBcIk00LDZMOCwxMFY3SDE2QTIsMiAwIDAsMSAxOCw5QTIsMiAwIDAsMSAxNiwxMUg4QTQsNCAwIDAsMCA0LDE1QTQsNCAwIDAsMCA4LDE5SDE2VjIyTDIwLDE4TDE2LDE0VjE3SDhBMiwyIDAgMCwxIDYsMTVBMiwyIDAgMCwxIDgsMTNIMTZBNCw0IDAgMCwwIDIwLDlBNCw0IDAgMCwwIDE2LDVIOFYyTDQsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWwgPSBcIk05LDNMNSw3SDhWMTRIMTBWN0gxM00xNiwxN1YxMEgxNFYxN0gxMUwxNSwyMUwxOSwxN0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWxCb2xkID0gXCJNMTQsOEgxMVYxNEg2VjhIM0w4LjUsMkwxNCw4TTE1LjUsMjJMMjEsMTZIMThWMTBIMTNWMTZIMTBMMTUuNSwyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWxDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNNi41IDlMMTAgNS41TDEzLjUgOUgxMVYxM0g5VjlINi41TTE3LjUgMTVMMTQgMTguNUwxMC41IDE1SDEzVjExSDE1VjE1SDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dhcFZlcnRpY2FsQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xMiAyMEM3LjU5IDIwIDQgMTYuNDEgNCAxMlM3LjU5IDQgMTIgNCAyMCA3LjU5IDIwIDEyIDE2LjQxIDIwIDEyIDIwTTYuNSA5TDEwIDUuNUwxMy41IDlIMTFWMTNIOVY5SDYuNU0xNy41IDE1TDE0IDE4LjVMMTAuNSAxNUgxM1YxMUgxNVYxNUgxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN3YXBWZXJ0aWNhbFZhcmlhbnQgPSBcIk0xOCw0TDE0LDhIMTdWMTZBMiwyIDAgMCwxIDE1LDE4QTIsMiAwIDAsMSAxMywxNlY4QTQsNCAwIDAsMCA5LDRBNCw0IDAgMCwwIDUsOFYxNkgyTDYsMjBMMTAsMTZIN1Y4QTIsMiAwIDAsMSA5LDZBMiwyIDAgMCwxIDExLDhWMTZBNCw0IDAgMCwwIDE1LDIwQTQsNCAwIDAsMCAxOSwxNlY4SDIyTDE4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dpbSA9IFwiTTIsMThDNC4yMiwxNyA2LjQ0LDE2IDguNjcsMTZDMTAuODksMTYgMTMuMTEsMTggMTUuMzMsMThDMTcuNTYsMTggMTkuNzgsMTYgMjIsMTZWMTlDMTkuNzgsMTkgMTcuNTYsMjEgMTUuMzMsMjFDMTMuMTEsMjEgMTAuODksMTkgOC42NywxOUM2LjQ0LDE5IDQuMjIsMjAgMiwyMVYxOE04LjY3LDEzQzcuODksMTMgNy4xMiwxMy4xMiA2LjM1LDEzLjMyTDExLjI3LDkuODhMMTAuMjMsOC42NEMxMC4wOSw4LjQ3IDEwLDguMjQgMTAsOEMxMCw3LjY2IDEwLjE3LDcuMzUgMTAuNDQsNy4xN0wxNi4xNiwzLjE3TDE3LjMxLDQuOEwxMi40Nyw4LjE5TDE3LjcsMTQuNDJDMTYuOTEsMTQuNzUgMTYuMTIsMTUgMTUuMzMsMTVDMTMuMTEsMTUgMTAuODksMTMgOC42NywxM00xOCw3QTIsMiAwIDAsMSAyMCw5QTIsMiAwIDAsMSAxOCwxMUEyLDIgMCAwLDEgMTYsOUEyLDIgMCAwLDEgMTgsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTd2l0Y2ggPSBcIk0xMywxOEgxNEExLDEgMCAwLDEgMTUsMTlIMjJWMjFIMTVBMSwxIDAgMCwxIDE0LDIySDEwQTEsMSAwIDAsMSA5LDIxSDJWMTlIOUExLDEgMCAwLDEgMTAsMThIMTFWMTZIOEExLDEgMCAwLDEgNywxNVYzQTEsMSAwIDAsMSA4LDJIMTZBMSwxIDAgMCwxIDE3LDNWMTVBMSwxIDAgMCwxIDE2LDE2SDEzVjE4TTEzLDZIMTRWNEgxM1Y2TTksNFY2SDExVjRIOU05LDhWMTBIMTFWOEg5TTksMTJWMTRIMTFWMTJIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd29yZCA9IFwiTTYuOTIsNUg1TDE0LDE0TDE1LDEzLjA2TTE5Ljk2LDE5LjEyTDE5LjEyLDE5Ljk2QzE4LjczLDIwLjM1IDE4LjEsMjAuMzUgMTcuNzEsMTkuOTZMMTQuNTksMTYuODRMMTEuOTEsMTkuNUwxMC41LDE4LjA5TDExLjkyLDE2LjY3TDMsNy43NVYzSDcuNzVMMTYuNjcsMTEuOTJMMTguMDksMTAuNUwxOS41LDExLjkxTDE2LjgzLDE0LjU4TDE5Ljk1LDE3LjdDMjAuMzUsMTguMSAyMC4zNSwxOC43MyAxOS45NiwxOS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd29yZENyb3NzID0gXCJNNi4yLDIuNDRMMTguMSwxNC4zNEwyMC4yMiwxMi4yMkwyMS42MywxMy42M0wxOS4xNiwxNi4xTDIyLjM0LDE5LjI4QzIyLjczLDE5LjY3IDIyLjczLDIwLjMgMjIuMzQsMjAuNjlMMjEuNjMsMjEuNEMyMS4yNCwyMS43OSAyMC42MSwyMS43OSAyMC4yMiwyMS40TDE3LDE4LjIzTDE0LjU2LDIwLjdMMTMuMTUsMTkuMjlMMTUuMjcsMTcuMTdMMy4zNyw1LjI3VjIuNDRINi4yTTE1Ljg5LDEwTDIwLjYzLDUuMjZWMi40NEgxNy44TDEzLjA2LDcuMThMMTUuODksMTBNMTAuOTQsMTVMOC4xMSwxMi4xM0w1LjksMTQuMzRMMy43OCwxMi4yMkwyLjM3LDEzLjYzTDQuODQsMTYuMUwxLjY2LDE5LjI5QzEuMjcsMTkuNjggMS4yNywyMC4zMSAxLjY2LDIwLjdMMi4zNywyMS40MUMyLjc2LDIxLjggMy4zOSwyMS44IDMuNzgsMjEuNDFMNywxOC4yM0w5LjQ0LDIwLjdMMTAuODUsMTkuMjlMOC43MywxNy4xN0wxMC45NCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlIYW5ndWwgPSBcIk04IDRWNkg0VjhINi4zOUM1LjU1IDguNzQgNSA5LjggNSAxMUM1IDEzLjIgNi44IDE1IDkgMTVDMTEuMiAxNSAxMyAxMy4yIDEzIDExQzEzIDkuOCAxMi40NSA4Ljc0IDExLjYxIDhIMTRWNkgxMFY0TTE1IDRWMTZIMTdWMTFIMjBWOUgxN1Y0TTkgOUMxMC4xMiA5IDExIDkuODggMTEgMTFDMTEgMTIuMTIgMTAuMTIgMTMgOSAxM0M3Ljg4IDEzIDcgMTIuMTIgNyAxMUM3IDkuODggNy44OCA5IDkgOU03IDE2VjIwSDE3VjE4SDlWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3lsbGFiYXJ5SGlyYWdhbmEgPSBcIk05IDRWNkg2VjhIOVYxMEM2LjI1IDEwIDQgMTIuMjcgNCAxNS4wM0M0IDE3LjggNi4yNiAyMC4wNiA5LjAzIDIwLjA2QzkuODkgMjAuMDYgMTAuNzIgMTkuNzcgMTEuNCAxOS4yNkMxMS42MyAxOS41NCAxMS44OCAxOS44MiAxMi4xNSAyMC4wOUwxMy41NiAxOC42N0MxMy4zIDE4LjQyIDEzLjA3IDE4LjE1IDEyLjg2IDE3Ljg5TDEzLjg2IDE2Ljg5QzE0LjkzIDE1LjgyIDE1Ljc4IDE0LjIzIDE2LjQyIDEyLjU5QzE3LjMxIDEzLjExIDE4IDEzLjkgMTggMTVDMTggMTYuMzIgMTcuNDcgMTcuNiAxNi41NCAxOC41NEwxNy45NSAxOS45NUMxOS4yNiAxOC42NCAyMCAxNi44NiAyMCAxNUMyMCAxMy4wNCAxOC44MiAxMS4zNiAxNy4xNSAxMC41NUwxNy41IDkuMjlMMTUuNTUgOC43OEwxNS4yMSAxMC4wNUMxNS4xMyAxMC4wNSAxNS4wNiAxMCAxNC45NyAxMEgxMVY4SDE2VjZIMTFWNE0xMSAxMkgxNC41QzEzLjk0IDEzLjM3IDEzLjE5IDE0LjcyIDEyLjQ0IDE1LjQ3TDExLjc5IDE2LjEzQzExLjI1IDE0LjkzIDExIDEzLjU5IDExIDEyTTkgMTJDOSAxNC4wNyA5LjQxIDE1Ljk0IDEwLjMgMTcuNTlDOS45NCAxNy44OSA5LjUgMTguMDYgOS4wMyAxOC4wNkM3LjMzIDE4LjA2IDYgMTYuNzMgNiAxNS4wM0M2IDEzLjM0IDcuMzIgMTIgOSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlLYXRha2FuYSA9IFwiTTQgNFY2SDE4VjYuMDlMMTQuMjkgOS43OUwxNS43MSAxMS4yMUwyMCA2LjkxVjRNMTEgOVYxM0MxMSAxNS43OCAxMC4yNSAxNi44OSA4LjM2IDE4LjQ2TDkuNjQgMjBDMTEuNzUgMTguMjQgMTMgMTYuMjIgMTMgMTNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlLYXRha2FuYUhhbGZ3aWR0aCA9IFwiTTggNFY2SDE0TDEzIDEwLjgxTDE1IDExLjJMMTYgNi4xVjRNMTAgOVYxMkMxMCAxNC44NiA5LjM0IDE3LjI5IDguMDggMTguNjFMOS41IDIwQzExLjM1IDE4LjA4IDEyIDE1LjE1IDEyIDEyVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ltYm9sID0gXCJNMiA3VjE0SDRWN0gyTTYgN1Y5SDEwVjExSDhWMTRIMTBWMTNDMTEuMTEgMTMgMTIgMTIuMTEgMTIgMTFWOUMxMiA3Ljg5IDExLjExIDcgMTAgN0g2TTE1LjggN0wxNS42IDlIMTRWMTFIMTUuNEwxNS4yIDEzSDE0VjE1SDE1TDE0LjggMTdIMTYuOEwxNyAxNUgxOC40TDE4LjIgMTdIMjAuMkwyMC40IDE1SDIyVjEzSDIwLjZMMjAuOCAxMUgyMlY5SDIxTDIxLjIgN0gxOS4yTDE5IDlIMTcuNkwxNy44IDdIMTUuOE0xNy40IDExSDE4LjhMMTguNiAxM0gxNy4yTDE3LjQgMTFNMiAxNVYxN0g0VjE1SDJNOCAxNVYxN0gxMFYxNUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bWZvbnkgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNi4zNyw1LjdWNS43QzE3LjM5LDUuNjcgMTguMTUsNi4xMyAxOC4yMSw2Ljg0QzE4LjIyLDcuMTUgMTguMDQsNy43NSAxNy40Miw3Ljc3QzE2Ljk1LDcuNzkgMTYuNjMsNy41IDE2LjYyLDcuMDlDMTYuNjEsNi45MyAxNi44OCw2LjQyIDE2Ljg4LDYuMzNDMTYuODcsNi4wNiAxNi40Nyw2LjA1IDE2LjM2LDYuMDZDMTQuODYsNi4xMSAxNC40Niw4LjEzIDE0LjE0LDkuNzhMMTQsMTAuNjVDMTQuODQsMTAuNzggMTUuNDYsMTAuNjIgMTUuOCwxMC40QzE2LjI4LDEwLjA5IDE1LjY2LDkuNzcgMTUuNzQsOS40MUMxNS44Miw5LjA0IDE2LjE1LDguODcgMTYuNDEsOC44NkMxNi43OCw4Ljg1IDE3LjA0LDkuMjMgMTcuMDMsOS42MkMxNywxMC4yNiAxNi4xNywxMS4xNCAxNC41LDExLjFDMTQuMjgsMTEuMSAxNC4wOSwxMS4wOCAxMy45MSwxMS4wNkMxMy4zLDE0LjE2IDEyLjkyLDE2IDExLjU2LDE3LjU4QzEwLjM5LDE4Ljk3IDkuMiwxOS4xOCA4LjY3LDE5LjJDNy42NywxOS4yNCA3LDE4LjcxIDcsMThDNi45NywxNy4zMiA3LjU3LDE2Ljk0IDcuOTcsMTYuOTNDOC41LDE2LjkxIDguODcsMTcuMyA4Ljg4LDE3Ljc0QzguOSwxOC4xMSA4LjcsMTguMjMgOC41NywxOC4zQzguNSwxOC4zNyA4LjM1LDE4LjQ1IDguMzYsMTguNkM4LjM2LDE4LjY3IDguNDMsMTguODIgOC42NSwxOC44MUM5LjA3LDE4LjggOS4zNCwxOC41OSA5LjU0LDE4LjQ1QzEwLjUsMTcuNjUgMTAuODgsMTYuMjQgMTEuMzcsMTMuNjhDMTEuNjMsMTIuMjMgMTEuODIsMTEuMyAxMi4xLDEwLjM4QzExLjQyLDkuODcgMTEsOS4yMyAxMC4wOSw5QzkuNDYsOC44MSA5LjA4LDguOTYgOC44MSw5LjNDOC41LDkuNzEgOC42LDEwLjIzIDguOSwxMC41NEMxMC4wNSwxMS44MiAxMC4zOSwxMi4zOCAxMC4yNiwxMy4xNEMxMC4wNiwxNC4zNSA4LjYyLDE1LjI3IDYuOTIsMTQuNzVDNS40NywxNC4zIDUuMiwxMy4yOCA1LjM3LDEyLjcxQzUuNTMsMTIuMjIgNS45MiwxMi4xMiA2LjMxLDEyLjI0QzYuNzMsMTIuMzcgNi44OSwxMi44NyA2Ljc3LDEzLjI2QzYuNzUsMTMuMyA2LjU1LDEzLjY3IDYuNSwxMy43OUM2LjQxLDE0LjEgNi44MywxNC4zMSA3LjEyLDE0LjRDNy43NywxNC42IDguNCwxNC4yNiA4LjU1LDEzLjczQzguNywxMy4yNSA4LjQsMTIuOTEgOC4yNywxMi43OEM3LjM4LDExLjggNi43NiwxMC45MyA3LjA2LDkuOTVDNy4xOCw5LjU4IDcuNDIsOS4xOCA3Ljc4LDguOTFDOC41Myw4LjM2IDkuMzUsOC4yNiAxMC4xMiw4LjVDMTEuMTMsOC43NyAxMS42MSw5LjQ0IDEyLjI0LDkuOTVDMTIuNTksOC45MyAxMy4wOCw3LjkyIDEzLjgxLDcuMDdDMTQuNDcsNi4zIDE1LjM1LDUuNzQgMTYuMzcsNS43WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bmMgPSBcIk0xMiwxOEE2LDYgMCAwLDEgNiwxMkM2LDExIDYuMjUsMTAuMDMgNi43LDkuMkw1LjI0LDcuNzRDNC40Niw4Ljk3IDQsMTAuNDMgNCwxMkE4LDggMCAwLDAgMTIsMjBWMjNMMTYsMTlMMTIsMTVNMTIsNFYxTDgsNUwxMiw5VjZBNiw2IDAgMCwxIDE4LDEyQzE4LDEzIDE3Ljc1LDEzLjk3IDE3LjMsMTQuOEwxOC43NiwxNi4yNkMxOS41NCwxNS4wMyAyMCwxMy41NyAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTeW5jQWxlcnQgPSBcIk0xMSwxM0gxM1Y3SDExTTIxLDRIMTVWMTBMMTcuMjQsNy43NkMxOC4zMiw4Ljg1IDE5LDEwLjM0IDE5LDEyQzE5LDE0LjYxIDE3LjMzLDE2LjgzIDE1LDE3LjY1VjE5Ljc0QzE4LjQ1LDE4Ljg1IDIxLDE1LjczIDIxLDEyQzIxLDkuNzkgMjAuMDksNy44IDE4LjY0LDYuMzZNMTEsMTdIMTNWMTVIMTFNMywxMkMzLDE0LjIxIDMuOTEsMTYuMiA1LjM2LDE3LjY0TDMsMjBIOVYxNEw2Ljc2LDE2LjI0QzUuNjgsMTUuMTUgNSwxMy42NiA1LDEyQzUsOS4zOSA2LjY3LDcuMTcgOSw2LjM1VjQuMjZDNS41NSw1LjE1IDMsOC4yNyAzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bmNDaXJjbGUgPSBcIk0yIDEyQTEwIDEwIDAgMSAwIDEyIDJBMTAgMTAgMCAwIDAgMiAxMk0xNS42IDEzLjcyQTQgNCAwIDAgMCAxNiAxMkE0IDQgMCAwIDAgMTIgOFYxMEw4Ljg4IDdMMTIgNFY2QTYgNiAwIDAgMSAxOCAxMkE1LjkgNS45IDAgMCAxIDE3LjA3IDE1LjE5TTYgMTJBNS45IDUuOSAwIDAgMSA2LjkzIDguODFMOC40IDEwLjI4QTQgNCAwIDAgMCA4IDEyQTQgNCAwIDAgMCAxMiAxNlYxNEwxNSAxN0wxMiAyMFYxOEE2IDYgMCAwIDEgNiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTeW5jT2ZmID0gXCJNMjAsNEgxNFYxMEwxNi4yNCw3Ljc2QzE3LjMyLDguODUgMTgsMTAuMzQgMTgsMTJDMTgsMTMgMTcuNzUsMTMuOTQgMTcuMzIsMTQuNzdMMTguNzgsMTYuMjNDMTkuNTUsMTUgMjAsMTMuNTYgMjAsMTJDMjAsOS43OSAxOS4wOSw3LjggMTcuNjQsNi4zNkwyMCw0TTIuODYsNS40MUw1LjIyLDcuNzdDNC40NSw5IDQsMTAuNDQgNCwxMkM0LDE0LjIxIDQuOTEsMTYuMiA2LjM2LDE3LjY0TDQsMjBIMTBWMTRMNy43NiwxNi4yNEM2LjY4LDE1LjE1IDYsMTMuNjYgNiwxMkM2LDExIDYuMjUsMTAuMDYgNi42OCw5LjIzTDE0Ljc2LDE3LjMxQzE0LjUsMTcuNDQgMTQuMjYsMTcuNTYgMTQsMTcuNjVWMTkuNzRDMTQuNzksMTkuNTMgMTUuNTQsMTkuMiAxNi4yMiwxOC43OEwxOC41OCwyMS4xNEwxOS44NSwxOS44N0w0LjE0LDQuMTRMMi44Niw1LjQxTTEwLDYuMzVWNC4yNkM5LjIsNC40NyA4LjQ1LDQuOCA3Ljc3LDUuMjJMOS4yMyw2LjY4QzkuNSw2LjU2IDkuNzMsNi40NCAxMCw2LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYiA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTIxLDE5SDNWNUgxM1Y5SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYk1pbnVzID0gXCJNMywzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNIM00zLDVIMTNWOUgyMVYxOUgzVjVNNywxM1YxNUgxNVYxM0g3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlBsdXMgPSBcIk0zLDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlWNUEyLDIgMCAwLDAgMjEsM0gzTTMsNUgxM1Y5SDIxVjE5SDNWNU0xMCwxMFYxM0g3VjE1SDEwVjE4SDEyVjE1SDE1VjEzSDEyVjEwSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlJlbW92ZSA9IFwiTTcuNDYsMTEuODhMOC44OCwxMC40NkwxMSwxMi41OUwxMy4xMiwxMC40NkwxNC41NCwxMS44OEwxMi40MSwxNEwxNC41NCwxNi4xMkwxMy4xMiwxNy41NEwxMSwxNS40MUw4Ljg4LDE3LjU0TDcuNDYsMTYuMTJMOS41OSwxNEw3LjQ2LDExLjg4TTMsM0gyMUEyLDIgMCAwLDEgMjMsNVYxOUEyLDIgMCAwLDEgMjEsMjFIM0EyLDIgMCAwLDEgMSwxOVY1QTIsMiAwIDAsMSAzLDNNMyw1VjE5SDIxVjlIMTNWNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlVuc2VsZWN0ZWQgPSBcIk0xLDlIM1Y3SDFWOU0xLDEzSDNWMTFIMVYxM00xLDVIM1YzQTIsMiAwIDAsMCAxLDVNOSwyMUgxMVYxOUg5VjIxTTEsMTdIM1YxNUgxVjE3TTMsMjFWMTlIMUEyLDIgMCAwLDAgMywyMU0yMSwzSDEzVjlIMjNWNUEyLDIgMCAwLDAgMjEsM00yMSwxN0gyM1YxNUgyMVYxN005LDVIMTFWM0g5VjVNNSwyMUg3VjE5SDVWMjFNNSw1SDdWM0g1VjVNMjEsMjFBMiwyIDAgMCwwIDIzLDE5SDIxVjIxTTIxLDEzSDIzVjExSDIxVjEzTTEzLDIxSDE1VjE5SDEzVjIxTTE3LDIxSDE5VjE5SDE3VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlID0gXCJNNSw0SDE5QTIsMiAwIDAsMSAyMSw2VjE4QTIsMiAwIDAsMSAxOSwyMEg1QTIsMiAwIDAsMSAzLDE4VjZBMiwyIDAgMCwxIDUsNE01LDhWMTJIMTFWOEg1TTEzLDhWMTJIMTlWOEgxM001LDE0VjE4SDExVjE0SDVNMTMsMTRWMThIMTlWMTRIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVBY2NvdW50ID0gXCJNNCAzSDE4QzE5LjExIDMgMjAgMy45IDIwIDVWMTIuMDhDMTguNDUgMTEuODIgMTYuOTIgMTIuMTggMTUuNjggMTNIMTJWMTdIMTMuMDhDMTIuOTcgMTcuNjggMTIuOTcgMTguMzUgMTMuMDggMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjVDMiAzLjkgMi45IDMgNCAzTTQgN1YxMUgxMFY3SDRNMTIgN1YxMUgxOFY3SDEyTTQgMTNWMTdIMTBWMTNINE0yMyAyMlYyMUMyMyAxOS42NyAyMC4zMyAxOSAxOSAxOVMxNSAxOS42NyAxNSAyMVYyMkgyM00xOSAxNEMxNy45IDE0IDE3IDE0LjkgMTcgMTZTMTcuOSAxOCAxOSAxOCAyMSAxNy4xMSAyMSAxNiAyMC4xMSAxNCAxOSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUFsZXJ0ID0gXCJNMyA0SDE3QzE4LjExIDQgMTkgNC44OSAxOSA2VjE4QzE5IDE5LjExIDE4LjExIDIwIDE3IDIwSDNDMS45IDIwIDEgMTkuMTEgMSAxOFY2QzEgNC44OSAxLjkgNCAzIDRNMyA4VjEySDlWOEgzTTExIDhWMTJIMTdWOEgxMU0zIDE0VjE4SDlWMTRIM00xMSAxNFYxOEgxN1YxNEgxMU0yMyA3SDIxVjEzSDIzVjdNMjMgMTVIMjFWMTdIMjNWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVBcnJvd0Rvd24gPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTE1Ljk0IDE4LjVIMTcuOTRWMTQuNUgxOS45NFYxOC41SDIxLjk0TDE4Ljk0IDIxLjVMMTUuOTQgMTguNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQXJyb3dMZWZ0ID0gXCJNNCAzSDE4QzE5LjExIDMgMjAgMy45IDIwIDVWMTIuMDhDMTguNDUgMTEuODIgMTYuOTIgMTIuMTggMTUuNjggMTNIMTJWMTdIMTMuMDhDMTIuOTcgMTcuNjggMTIuOTcgMTguMzUgMTMuMDggMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjVDMiAzLjkgMi45IDMgNCAzTTQgN1YxMUgxMFY3SDRNMTIgN1YxMUgxOFY3SDEyTTQgMTNWMTdIMTBWMTNINE0xOC40NCAxNVYxN0gyMi40NFYxOUgxOC40NFYyMUwxNS40NCAxOEwxOC40NCAxNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQXJyb3dSaWdodCA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTkuNDQgMjFWMTlIMTUuNDRWMTdIMTkuNDRWMTVMMjIuNDQgMThMMTkuNDQgMjFcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUFycm93VXAgPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTIxLjk0IDE3LjVIMTkuOTRWMjEuNUgxNy45NFYxNy41SDE1Ljk0TDE4Ljk0IDE0LjVMMjEuOTQgMTcuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQm9yZGVyID0gXCJNMjEsMTlBMSwxIDAgMCwxIDIwLDIwSDE5VjE4SDIxVjE5TTE1LDIwVjE4SDE3VjIwSDE1TTExLDIwVjE4SDEzVjIwSDExTTcsMjBWMThIOVYyMEg3TTQsMjBBMSwxIDAgMCwxIDMsMTlWMThINVYyMEg0TTE5LDRINUEyLDIgMCAwLDAgMyw2VjhINUwxMSw4SDEzTDE5LDhIMjFWNkMyMSw0Ljg5IDIwLjExLDQgMTksNE01LDE0SDNWMTZINVYxNE01LDEwSDNWMTJINVYxME0yMSwxMEgxOVYxMkgyMVYxME0yMSwxNEgxOVYxNkgyMVYxNE0xMSwxNlYxNEgxM1YxNkgxMU0xMSwxMlYxMEgxM1YxMkgxMVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2FuY2VsID0gXCJNMyAzSDE3QzE4LjExIDMgMTkgMy45IDE5IDVWMTIuMDhDMTcuNDUgMTEuODIgMTUuOTIgMTIuMTggMTQuNjggMTNIMTFWMTdIMTIuMDhDMTEuOTcgMTcuNjggMTEuOTcgMTguMzUgMTIuMDggMTlIM0MxLjkgMTkgMSAxOC4xMSAxIDE3VjVDMSAzLjkgMS45IDMgMyAzTTMgN1YxMUg5VjdIM00xMSA3VjExSDE3VjdIMTFNMyAxM1YxN0g5VjEzSDNNMTguNSAxNEMxNiAxNCAxNCAxNiAxNCAxOC41UzE2IDIzIDE4LjUgMjMgMjMgMjEgMjMgMTguNSAyMSAxNCAxOC41IDE0TTE4LjUgMjEuNUMxNi44NCAyMS41IDE1LjUgMjAuMTYgMTUuNSAxOC41QzE1LjUgMTcuOTQgMTUuNjUgMTcuNDIgMTUuOTIgMTdMMjAgMjEuMDhDMTkuNTggMjEuMzUgMTkuMDYgMjEuNSAxOC41IDIxLjVNMjEuMDggMjBMMTcgMTUuOTJDMTcuNDIgMTUuNjUgMTcuOTQgMTUuNSAxOC41IDE1LjVDMjAuMTYgMTUuNSAyMS41IDE2Ljg0IDIxLjUgMTguNUMyMS41IDE5LjA2IDIxLjM1IDE5LjU4IDIxLjA4IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2hhaXIgPSBcIk0xMiAyMkg2QTIgMiAwIDAgMSA4IDIwVjhIMlY1SDE2VjhIMTBWMjBBMiAyIDAgMCAxIDEyIDIyTTIyIDJWMjJIMjBWMTVIMTVWMjJIMTNWMTRBMiAyIDAgMCAxIDE1IDEySDIwVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDaGVjayA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTcuNzUgMjFMMTUgMThMMTYuMTYgMTYuODRMMTcuNzUgMTguNDNMMjEuMzQgMTQuODRMMjIuNSAxNi4yNUwxNy43NSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2xvY2sgPSBcIk0xNi41IDE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzSDE2LjVWMTUuODJNMjAgMTAuMjZWNUMyMCAzLjkgMTkuMTEgMyAxOCAzSDRDMi45IDMgMiAzLjkgMiA1VjE3QzIgMTguMTEgMi45IDE5IDQgMTlIOS42OEMxMC44MSAyMS4zNiAxMy4yMSAyMyAxNiAyM0MxOS44NyAyMyAyMyAxOS44NyAyMyAxNkMyMyAxMy42MiAyMS44MSAxMS41MyAyMCAxMC4yNk0xOCA3VjkuMjlDMTcuMzcgOS4xMSAxNi43IDkgMTYgOUMxNC41IDkgMTMuMTMgOS40NyAxMiAxMC4yNlY3SDE4TTQgN0gxMFYxMUg0VjdNNCAxN1YxM0g5LjY4QzkuMjUgMTMuOTEgOSAxNC45MyA5IDE2QzkgMTYuMzQgOS4wMyAxNi42NyA5LjA4IDE3SDRNMTYgMjFDMTMuMjQgMjEgMTEgMTguNzYgMTEgMTZTMTMuMjQgMTEgMTYgMTEgMjEgMTMuMjQgMjEgMTYgMTguNzYgMjEgMTYgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2cgPSBcIk0zIDNIMTdDMTguMTEgMyAxOSAzLjkgMTkgNVYxMi4wOEMxNy40NSAxMS44MiAxNS45MiAxMi4xOCAxNC42OCAxM0gxMVYxN0gxMi4wOEMxMS45NyAxNy42OCAxMS45NyAxOC4zNSAxMi4wOCAxOUgzQzEuOSAxOSAxIDE4LjExIDEgMTdWNUMxIDMuOSAxLjkgMyAzIDNNMyA3VjExSDlWN0gzTTExIDdWMTFIMTdWN0gxMU0zIDEzVjE3SDlWMTNIM00yMi43OCAxOS4zMkwyMS43MSAxOC41QzIxLjczIDE4LjMzIDIxLjc1IDE4LjE3IDIxLjc1IDE4UzIxLjc0IDE3LjY3IDIxLjcxIDE3LjVMMjIuNzcgMTYuNjhDMjIuODYgMTYuNiAyMi44OSAxNi40NyAyMi44MyAxNi4zNkwyMS44MyAxNC42M0MyMS43NyAxNC41IDIxLjY0IDE0LjUgMjEuNSAxNC41TDIwLjI4IDE1QzIwIDE0LjgyIDE5Ljc0IDE0LjY1IDE5LjQzIDE0LjUzTDE5LjI0IDEzLjIxQzE5LjIzIDEzLjA5IDE5LjEyIDEzIDE5IDEzSDE3QzE2Ljg4IDEzIDE2Ljc3IDEzLjA5IDE2Ljc1IDEzLjIxTDE2LjU2IDE0LjUzQzE2LjI2IDE0LjY2IDE1Ljk3IDE0LjgyIDE1LjcxIDE1TDE0LjQ3IDE0LjVDMTQuMzYgMTQuNSAxNC4yMyAxNC41IDE0LjE2IDE0LjYzTDEzLjE2IDE2LjM2QzEzLjEgMTYuNDcgMTMuMTIgMTYuNiAxMy4yMiAxNi42OEwxNC4yOCAxNy41QzE0LjI2IDE3LjY3IDE0LjI1IDE3LjgzIDE0LjI1IDE4UzE0LjI2IDE4LjMzIDE0LjI4IDE4LjVMMTMuMjIgMTkuMzJDMTMuMTMgMTkuNCAxMy4xIDE5LjUzIDEzLjE2IDE5LjY0TDE0LjE2IDIxLjM3QzE0LjIyIDIxLjUgMTQuMzUgMjEuNSAxNC40NyAyMS41TDE1LjcxIDIxQzE1Ljk3IDIxLjE4IDE2LjI1IDIxLjM1IDE2LjU2IDIxLjQ3TDE2Ljc1IDIyLjc5QzE2Ljc3IDIyLjkxIDE2Ljg3IDIzIDE3IDIzSDE5QzE5LjEyIDIzIDE5LjIzIDIyLjkxIDE5LjI1IDIyLjc5TDE5LjQ0IDIxLjQ3QzE5Ljc0IDIxLjM0IDIwIDIxLjE4IDIwLjI4IDIxTDIxLjUgMjEuNUMyMS42NCAyMS41IDIxLjc3IDIxLjUgMjEuODQgMjEuMzdMMjIuODQgMTkuNjRDMjIuOSAxOS41MyAyMi44NyAxOS40IDIyLjc4IDE5LjMyTTE4IDE5LjVDMTcuMTcgMTkuNSAxNi41IDE4LjgzIDE2LjUgMThTMTcuMTggMTYuNSAxOCAxNi41IDE5LjUgMTcuMTcgMTkuNSAxOCAxOC44NCAxOS41IDE4IDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW4gPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsMTBWMTRIMTZWMTBIOE04LDE2VjIwSDE2VjE2SDhNOCw0VjhIMTZWNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ29sdW1uUGx1c0FmdGVyID0gXCJNMTEsMkEyLDIgMCAwLDEgMTMsNFYyMEEyLDIgMCAwLDEgMTEsMjJIMlYySDExTTQsMTBWMTRIMTFWMTBINE00LDE2VjIwSDExVjE2SDRNNCw0VjhIMTFWNEg0TTE1LDExSDE4VjhIMjBWMTFIMjNWMTNIMjBWMTZIMThWMTNIMTVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5QbHVzQmVmb3JlID0gXCJNMTMsMkEyLDIgMCAwLDAgMTEsNFYyMEEyLDIgMCAwLDAgMTMsMjJIMjJWMkgxM00yMCwxMFYxNEgxM1YxMEgyME0yMCwxNlYyMEgxM1YxNkgyME0yMCw0VjhIMTNWNEgyME05LDExSDZWOEg0VjExSDFWMTNINFYxNkg2VjEzSDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5SZW1vdmUgPSBcIk00LDJIMTFBMiwyIDAgMCwxIDEzLDRWMjBBMiwyIDAgMCwxIDExLDIySDRBMiwyIDAgMCwxIDIsMjBWNEEyLDIgMCAwLDEgNCwyTTQsMTBWMTRIMTFWMTBINE00LDE2VjIwSDExVjE2SDRNNCw0VjhIMTFWNEg0TTE3LjU5LDEyTDE1LDkuNDFMMTYuNDEsOEwxOSwxMC41OUwyMS41OSw4TDIzLDkuNDFMMjAuNDEsMTJMMjMsMTQuNTlMMjEuNTksMTZMMTksMTMuNDFMMTYuNDEsMTZMMTUsMTQuNTlMMTcuNTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5XaWR0aCA9IFwiTTUsOEgxOUEyLDIgMCAwLDEgMjEsMTBWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWMTBBMiwyIDAgMCwxIDUsOE01LDEyVjE1SDExVjEySDVNMTMsMTJWMTVIMTlWMTJIMTNNNSwxN1YyMEgxMVYxN0g1TTEzLDE3VjIwSDE5VjE3SDEzTTExLDJIMjFWNkgxOVY0SDEzVjZIMTFWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUVkaXQgPSBcIk0yMS43LDEzLjM1TDIwLjcsMTQuMzVMMTguNjUsMTIuM0wxOS42NSwxMS4zQzE5Ljg2LDExLjA4IDIwLjIxLDExLjA4IDIwLjQyLDExLjNMMjEuNywxMi41OEMyMS45MiwxMi43OSAyMS45MiwxMy4xNCAyMS43LDEzLjM1TTEyLDE4Ljk0TDE4LjA3LDEyLjg4TDIwLjEyLDE0LjkzTDE0LjA2LDIxSDEyVjE4Ljk0TTQsMkgxOEEyLDIgMCAwLDEgMjAsNFY4LjE3TDE2LjE3LDEySDEyVjE2LjE3TDEwLjE3LDE4SDRBMiwyIDAgMCwxIDIsMTZWNEEyLDIgMCAwLDEgNCwyTTQsNlYxMEgxMFY2SDRNMTIsNlYxMEgxOFY2SDEyTTQsMTJWMTZIMTBWMTJINFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUV5ZSA9IFwiTTE3IDE2Ljg4QzE3LjU2IDE2Ljg4IDE4IDE3LjMyIDE4IDE3Ljg4UzE3LjU2IDE4Ljg4IDE3IDE4Ljg4IDE2IDE4LjQzIDE2IDE3Ljg4IDE2LjQ0IDE2Ljg4IDE3IDE2Ljg4TTE3IDEzLjg4QzE5LjczIDEzLjg4IDIyLjA2IDE1LjU0IDIzIDE3Ljg4QzIyLjA2IDIwLjIyIDE5LjczIDIxLjg4IDE3IDIxLjg4UzExLjk0IDIwLjIyIDExIDE3Ljg4QzExLjk0IDE1LjU0IDE0LjI3IDEzLjg4IDE3IDEzLjg4TTE3IDE1LjM4QzE1LjYyIDE1LjM4IDE0LjUgMTYuNSAxNC41IDE3Ljg4UzE1LjYyIDIwLjM4IDE3IDIwLjM4IDE5LjUgMTkuMjYgMTkuNSAxNy44OCAxOC4zOCAxNS4zOCAxNyAxNS4zOE0xOCAzSDRDMi45IDMgMiAzLjkgMiA1VjE3QzIgMTguMSAyLjkgMTkgNCAxOUg5LjQyQzkuMjYgMTguNjggOS4xMiAxOC4zNCA5IDE4QzkuMTIgMTcuNjYgOS4yNiAxNy4zMiA5LjQyIDE3SDRWMTNIMTBWMTUuOTdDMTAuNTUgMTUuMTEgMTEuMjMgMTQuMzcgMTIgMTMuNzZWMTNIMTMuMTVDMTQuMzEgMTIuMzYgMTUuNjIgMTIgMTcgMTJDMTguMDYgMTIgMTkuMDcgMTIuMjEgMjAgMTIuNTlWNUMyMCAzLjkgMTkuMSAzIDE4IDNNMTAgMTFINFY3SDEwVjExTTE4IDExSDEyVjdIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVFeWVPZmYgPSBcIk0xMiA4LjhMNi4yIDNIMThDMTkuMSAzIDIwIDMuOSAyMCA1VjEyLjU5QzE5LjA3IDEyLjIxIDE4LjA2IDEyIDE3IDEyQzE2LjQ1IDEyIDE1LjkxIDEyLjA3IDE1LjM4IDEyLjE4TDE0LjIgMTFIMThWN0gxMlY4LjhNMTcuMDkgMTMuODlMMjIuMzEgMTkuMTFDMjIuNTggMTguNzMgMjIuODIgMTguMzIgMjMgMTcuODhDMjIuMDcgMTUuNTcgMTkuNzggMTMuOTIgMTcuMDkgMTMuODlNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNSAyMS4zN0MxOC43MSAyMS42OSAxNy44OCAyMS44OCAxNyAyMS44OEMxNC4yNyAyMS44OCAxMS45NCAyMC4yMiAxMSAxNy44OEMxMS40NSAxNi43NiAxMi4yMyAxNS44IDEzLjIxIDE1LjFMMTEuOTMgMTMuODJDMTEuMTkgMTQuNDIgMTAuNTMgMTUuMTQgMTAgMTUuOTdWMTNINFYxN0g5LjQyQzkuMjYgMTcuMzIgOS4xMiAxNy42NiA5IDE4QzkuMTIgMTguMzQgOS4yNiAxOC42OCA5LjQyIDE5SDRDMi45IDE5IDIgMTguMSAyIDE3VjVDMiA0LjY4IDIuMDggNC4zOCAyLjIyIDQuMTFMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk05LjExIDExTDUuMTEgN0g0VjExSDkuMTFNMTguMTggMjAuMDdMMTQuODEgMTYuN0MxNC42MSAxNy4wNSAxNC41IDE3LjQ1IDE0LjUgMTcuODhDMTQuNSAxOS4yNiAxNS42MiAyMC4zOCAxNyAyMC4zOEMxNy40MyAyMC4zOCAxNy44MyAyMC4yNyAxOC4xOCAyMC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUZ1cm5pdHVyZSA9IFwiTTIgN0gyMlYxMEgyMEwyMSAxOUgxOC41TDE3Ljk0IDE0SDYuMDZMNS41IDE5SDNMNCAxMEgyVjdNMTcuNSAxMEg2LjVMNi4yOSAxMkgxNy43MUwxNy41IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlSGVhZGVyc0V5ZSA9IFwiTTEgNlYxOUEyIDIgMCAwIDAgMyAyMUg5VjExSDIxVjZBMiAyIDAgMCAwIDE5IDRIM0EyIDIgMCAwIDAgMSA2TTMgNkg3VjlIM003IDE5SDNWMTZIN003IDE0SDNWMTFIN005IDlWNkgxM1Y5TTE5IDlIMTVWNkgxOU0xNyAxNkExIDEgMCAxIDEgMTYgMTdBMSAxIDAgMCAxIDE3IDE2TTE3IDEzQTYuNDUgNi40NSAwIDAgMSAyMyAxN0E2LjUgNi41IDAgMCAxIDExIDE3QTYuNDUgNi40NSAwIDAgMSAxNyAxM00xNyAxNC41QTIuNSAyLjUgMCAxIDAgMTkuNSAxN0EyLjUgMi41IDAgMCAwIDE3IDE0LjVcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUhlYWRlcnNFeWVPZmYgPSBcIk0yLjM4IDEuNzNMMS4xMSAzTDIuMjYgNC4xNUEyIDIgMCAwIDAgMSA2VjE5QTIgMiAwIDAgMCAzIDIxSDlWMTFIOS4xMUwxMi43MiAxNC42MUE2LjIxIDYuMjEgMCAwIDAgMTEgMTdBNi40NSA2LjQ1IDAgMCAwIDE3IDIxQTYuNTUgNi41NSAwIDAgMCAxOC44NCAyMC43M0wyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMC41OCAxOS45M003IDE5SDNWMTZIN003IDE0SDNWMTFIN003IDlIM1Y2SDQuMTFMNyA4Ljg5TTE3IDE5LjVBMi41IDIuNSAwIDAgMSAxNC41NiAxNi40NUwxNy41NiAxOS40NUEyLjUgMi41IDAgMCAxIDE3IDE5LjVNMTYuMjQgMTNMMTcuODUgMTQuNjFBMi41IDIuNSAwIDAgMSAxOS4zNSAxNi4xMUwyMS45NCAxOC43QTYuNDQgNi40NCAwIDAgMCAyMyAxN0E2LjQ1IDYuNDUgMCAwIDAgMTcgMTNIMTYuMjRNMTMgNlY5SDEyLjJMMTQuMiAxMUgyMVY2QTIgMiAwIDAgMCAxOSA0SDcuMkw5LjIgNk0xNSA2SDE5VjlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVIZWFydCA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTkgMjIuM0wxOC40IDIxLjhDMTYuNCAxOS45IDE1IDE4LjcgMTUgMTcuMkMxNSAxNiAxNiAxNSAxNy4yIDE1QzE3LjkgMTUgMTguNiAxNS4zIDE5IDE1LjhDMTkuNCAxNS4zIDIwLjEgMTUgMjAuOCAxNUMyMiAxNSAyMyAxNS45IDIzIDE3LjJDMjMgMTguNyAyMS42IDE5LjkgMTkuNiAyMS44TDE5IDIyLjNcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUtleSA9IFwiTTE2LjgzIDE3QzE2LjQyIDE1LjgzIDE1LjMxIDE1IDE0IDE1QzEyLjM0IDE1IDExIDE2LjM0IDExIDE4UzEyLjM0IDIxIDE0IDIxQzE1LjMxIDIxIDE2LjQyIDIwLjE3IDE2LjgzIDE5SDE5VjIxSDIxVjE5SDIyVjE3SDE2LjgzTTE0IDE5QzEzLjQ1IDE5IDEzIDE4LjU1IDEzIDE4UzEzLjQ1IDE3IDE0IDE3IDE1IDE3LjQ1IDE1IDE4IDE0LjU1IDE5IDE0IDE5TTkgMThINFYxNEgxMFYxNS4wM0MxMC45MSAxMy44MSAxMi4zNiAxMyAxNCAxM0MxNS4xIDEzIDE2LjE0IDEzLjM3IDE3IDE0SDE4VjE1TDE4IDE1SDIwVjZDMjAgNC44OSAxOS4xMSA0IDE4IDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIOS40MkM5LjE1IDE5LjM5IDkgMTguNzEgOSAxOE0xMiA4SDE4VjEySDEyVjhNNCA4SDEwVjEySDRWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUxhcmdlID0gXCJNNCwzSDIwQTIsMiAwIDAsMSAyMiw1VjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjVBMiwyIDAgMCwxIDQsM000LDdWMTBIOFY3SDRNMTAsN1YxMEgxNFY3SDEwTTIwLDEwVjdIMTZWMTBIMjBNNCwxMlYxNUg4VjEySDRNNCwyMEg4VjE3SDRWMjBNMTAsMTJWMTVIMTRWMTJIMTBNMTAsMjBIMTRWMTdIMTBWMjBNMjAsMjBWMTdIMTZWMjBIMjBNMjAsMTJIMTZWMTVIMjBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVMYXJnZVBsdXMgPSBcIk0xMi4zNSAyMEgxMFYxN0gxMi4wOUMxMi4yMSAxNi4yOCAxMi40NiAxNS42MSAxMi44MSAxNUgxMFYxMkgxNFYxMy41NEMxNC41OCAxMyAxNS4yNSAxMi42MSAxNiAxMi4zNVYxMkgyMFYxMi4zNUMyMC43NSAxMi42MSAyMS40MiAxMyAyMiAxMy41NFY1QzIyIDMuOSAyMS4xIDMgMjAgM0g0QzIuOSAzIDIgMy45IDIgNVYyMEMyIDIxLjEgMi45IDIyIDQgMjJIMTMuNTRDMTMgMjEuNDIgMTIuNjEgMjAuNzUgMTIuMzUgMjBNMTYgN0gyMFYxMEgxNlY3TTEwIDdIMTRWMTBIMTBWN004IDIwSDRWMTdIOFYyME04IDE1SDRWMTJIOFYxNU04IDEwSDRWN0g4VjEwTTE3IDE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVMYXJnZVJlbW92ZSA9IFwiTTEyLjM1IDIwSDEwVjE3SDEyLjA5QzEyLjIxIDE2LjI4IDEyLjQ2IDE1LjYxIDEyLjgxIDE1SDEwVjEySDE0VjEzLjU0QzE0LjU4IDEzIDE1LjI1IDEyLjYxIDE2IDEyLjM1VjEySDIwVjEyLjM1QzIwLjc1IDEyLjYxIDIxLjQyIDEzIDIyIDEzLjU0VjVDMjIgMy45IDIxLjEgMyAyMCAzSDRDMi45IDMgMiAzLjkgMiA1VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxMy41NEMxMyAyMS40MiAxMi42MSAyMC43NSAxMi4zNSAyME0xNiA3SDIwVjEwSDE2VjdNMTAgN0gxNFYxMEgxMFY3TTggMjBINFYxN0g4VjIwTTggMTVINFYxMkg4VjE1TTggMTBINFY3SDhWMTBNMTQuNDYgMTUuODhMMTUuODggMTQuNDZMMTggMTYuNTlMMjAuMTIgMTQuNDZMMjEuNTQgMTUuODhMMTkuNDEgMThMMjEuNTQgMjAuMTJMMjAuMTIgMjEuNTRMMTggMTkuNDFMMTUuODggMjEuNTRMMTQuNDYgMjAuMTJMMTYuNTkgMThMMTQuNDYgMTUuODhcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUxvY2sgPSBcIk0yMSAxNlYxNS41QzIxIDE0LjEyIDE5Ljg4IDEzIDE4LjUgMTNTMTYgMTQuMTIgMTYgMTUuNVYxNkMxNS40NSAxNiAxNSAxNi40NSAxNSAxN1YyMUMxNSAyMS41NSAxNS40NSAyMiAxNiAyMkgyMUMyMS41NSAyMiAyMiAyMS41NSAyMiAyMVYxN0MyMiAxNi40NSAyMS41NSAxNiAyMSAxNk0yMCAxNkgxN1YxNS41QzE3IDE0LjY3IDE3LjY3IDE0IDE4LjUgMTRTMjAgMTQuNjcgMjAgMTUuNVYxNk0xMyAxOEgxMlYxNEgxNC4yNkMxNC41NCAxMy4yMSAxNS4wNCAxMi41IDE1LjY5IDEySDEyVjhIMThWMTEuMDVDMTguMTcgMTEuMDMgMTguMzMgMTEgMTguNSAxMUMxOS4wMyAxMSAxOS41MyAxMS4xIDIwIDExLjI2VjZDMjAgNC44OSAxOS4xMSA0IDE4IDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTNWMThNMTAgMThINFYxNEgxMFYxOE0xMCAxMkg0VjhIMTBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVNZXJnZUNlbGxzID0gXCJNNSwxMEgzVjRIMTFWNkg1VjEwTTE5LDE4SDEzVjIwSDIxVjE0SDE5VjE4TTUsMThWMTRIM1YyMEgxMVYxOEg1TTIxLDRIMTNWNkgxOVYxMEgyMVY0TTgsMTNWMTVMMTEsMTJMOCw5VjExSDNWMTNIOE0xNiwxMVY5TDEzLDEyTDE2LDE1VjEzSDIxVjExSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlTWludXMgPSBcIk0xNSAxOVYxN0gyM1YxOUgxNU00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlTXVsdGlwbGUgPSBcIk03IDJIMjFDMjIuMTEgMiAyMyAyLjkgMjMgNFYxNkMyMyAxNy4xMSAyMi4xMSAxOCAyMSAxOEg3QzUuOSAxOCA1IDE3LjExIDUgMTZWNEM1IDIuOSA1LjkgMiA3IDJNNyA2VjEwSDEzVjZIN00xNSA2VjEwSDIxVjZIMTVNNyAxMlYxNkgxM1YxMkg3TTE1IDEyVjE2SDIxVjEySDE1TTMgMjBWNkgxVjIwQzEgMjEuMTEgMS44OSAyMiAzIDIySDE5VjIwSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVOZXR3b3JrID0gXCJNMTUgMjBDMTUgMTkuNDUgMTQuNTUgMTkgMTQgMTlIMTNWMTdIMTlDMjAuMTEgMTcgMjEgMTYuMTEgMjEgMTVWM0MyMSAxLjkgMjAuMTEgMSAxOSAxSDVDMy45IDEgMyAxLjkgMyAzVjE1QzMgMTYuMTEgMy45IDE3IDUgMTdIMTFWMTlIMTBDOS40NSAxOSA5IDE5LjQ1IDkgMjBIMlYyMkg5QzkgMjIuNTUgOS40NSAyMyAxMCAyM0gxNEMxNC41NSAyMyAxNSAyMi41NSAxNSAyMkgyMlYyMEgxNU0xMyA1SDE5VjlIMTNWNU0xMyAxMUgxOVYxNUgxM1YxMU01IDVIMTFWOUg1VjVNNSAxNVYxMUgxMVYxNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlT2ZDb250ZW50cyA9IFwiTTMsOUgxN1Y3SDNWOU0zLDEzSDE3VjExSDNWMTNNMywxN0gxN1YxNUgzVjE3TTE5LDE3SDIxVjE1SDE5VjE3TTE5LDdWOUgyMVY3SDE5TTE5LDEzSDIxVjExSDE5VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzLjIyIDUuMTFDMy4wOCA1LjM4IDMgNS42OCAzIDZWMThDMyAxOS4xMSAzLjkgMjAgNSAyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMC4xMSAxMkg1VjhINi4xMUwxMC4xMSAxMk0xMSAxOEg1VjE0SDExVjE4TTEzIDE4VjE0Ljg5TDE2LjExIDE4SDEzTTEzIDkuOEw3LjIgNEgxOUMyMC4xMSA0IDIxIDQuODkgMjEgNlYxNy44TDE5IDE1LjhWMTRIMTcuMkwxNS4yIDEySDE5VjhIMTNWOS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUGljbmljID0gXCJNNCA2SDIwVjlIMThMMTguMjIgMTFIMjNWMTNIMTguNDRMMTkgMThIMTYuNUwxNS45NCAxM0g4LjA2TDcuNSAxOEg1TDUuNTYgMTNIMVYxMUg1Ljc4TDYgOUg0TTE1LjUgOUg4LjVMOC4yOSAxMUgxNS43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVBsdXMgPSBcIk0xOCwxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE00LDNIMThBMiwyIDAgMCwxIDIwLDVWMTIuMDhDMTguNDUsMTEuODIgMTYuOTIsMTIuMTggMTUuNjgsMTNIMTJWMTdIMTMuMDhDMTIuOTcsMTcuNjggMTIuOTcsMTguMzUgMTMuMDgsMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw3VjExSDEwVjdINE0xMiw3VjExSDE4VjdIMTJNNCwxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUmVmcmVzaCA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NSAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4xN0MxOS41IDEyLjA2IDE5IDEyIDE4LjUgMTJDMTcuMjMgMTIgMTYuMDQgMTIuMzcgMTUuMDQgMTNIMTJWMTdIMTIuMThDMTIuMDYgMTcuNSAxMiAxOCAxMiAxOC41TDEyIDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSZW1vdmUgPSBcIk0xNS40NiwxNS44OEwxNi44OCwxNC40NkwxOSwxNi41OUwyMS4xMiwxNC40NkwyMi41NCwxNS44OEwyMC40MSwxOEwyMi41NCwyMC4xMkwyMS4xMiwyMS41NEwxOSwxOS40MUwxNi44OCwyMS41NEwxNS40NiwyMC4xMkwxNy41OSwxOEwxNS40NiwxNS44OE00LDNIMThBMiwyIDAgMCwxIDIwLDVWMTIuMDhDMTguNDUsMTEuODIgMTYuOTIsMTIuMTggMTUuNjgsMTNIMTJWMTdIMTMuMDhDMTIuOTcsMTcuNjggMTIuOTcsMTguMzUgMTMuMDgsMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw3VjExSDEwVjdINE0xMiw3VjExSDE4VjdIMTJNNCwxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUm93ID0gXCJNMjIsMTRBMiwyIDAgMCwxIDIwLDE2SDRBMiwyIDAgMCwxIDIsMTRWMTBBMiwyIDAgMCwxIDQsOEgyMEEyLDIgMCAwLDEgMjIsMTBWMTRNNCwxNEg4VjEwSDRWMTRNMTAsMTRIMTRWMTBIMTBWMTRNMTYsMTRIMjBWMTBIMTZWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSb3dIZWlnaHQgPSBcIk0zLDVIMTVBMiwyIDAgMCwxIDE3LDdWMTdBMiwyIDAgMCwxIDE1LDE5SDNBMiwyIDAgMCwxIDEsMTdWN0EyLDIgMCAwLDEgMyw1TTMsOVYxMkg4VjlIM00xMCw5VjEySDE1VjlIMTBNMywxNFYxN0g4VjE0SDNNMTAsMTRWMTdIMTVWMTRIMTBNMjMsMTRWN0gxOVY5SDIxVjEySDE5VjE0SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUm93UGx1c0FmdGVyID0gXCJNMjIsMTBBMiwyIDAgMCwxIDIwLDEySDRBMiwyIDAgMCwxIDIsMTBWM0g0VjVIOFYzSDEwVjVIMTRWM0gxNlY1SDIwVjNIMjJWMTBNNCwxMEg4VjdINFYxME0xMCwxMEgxNFY3SDEwVjEwTTIwLDEwVjdIMTZWMTBIMjBNMTEsMTRIMTNWMTdIMTZWMTlIMTNWMjJIMTFWMTlIOFYxN0gxMVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVJvd1BsdXNCZWZvcmUgPSBcIk0yMiwxNEEyLDIgMCAwLDAgMjAsMTJINEEyLDIgMCAwLDAgMiwxNFYyMUg0VjE5SDhWMjFIMTBWMTlIMTRWMjFIMTZWMTlIMjBWMjFIMjJWMTRNNCwxNEg4VjE3SDRWMTRNMTAsMTRIMTRWMTdIMTBWMTRNMjAsMTRWMTdIMTZWMTRIMjBNMTEsMTBIMTNWN0gxNlY1SDEzVjJIMTFWNUg4VjdIMTFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSb3dSZW1vdmUgPSBcIk05LjQxLDEzTDEyLDE1LjU5TDE0LjU5LDEzTDE2LDE0LjQxTDEzLjQxLDE3TDE2LDE5LjU5TDE0LjU5LDIxTDEyLDE4LjQxTDkuNDEsMjFMOCwxOS41OUwxMC41OSwxN0w4LDE0LjQxTDkuNDEsMTNNMjIsOUEyLDIgMCAwLDEgMjAsMTFINEEyLDIgMCAwLDEgMiw5VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlY5TTQsOUg4VjZINFY5TTEwLDlIMTRWNkgxMFY5TTE2LDlIMjBWNkgxNlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlU2VhcmNoID0gXCJNMTkuMywxNy44OUMyMC42MiwxNS43OSAyMCwxMyAxNy44OSwxMS42OEMxNS43OSwxMC4zNiAxMywxMSAxMS42OCwxMy4wOUMxMC4zNiwxNS4yIDExLDE4IDEzLjA5LDE5LjNDMTQuNTYsMjAuMjIgMTYuNDIsMjAuMjIgMTcuODksMTkuM0wyMSwyMi4zOUwyMi4zOSwyMUwxOS4zLDE3Ljg5TTE3LjMsMTcuMjdDMTYuMzIsMTguMjUgMTQuNzQsMTguMjQgMTMuNzYsMTcuMjdDMTIuNzksMTYuMjkgMTIuNzksMTQuNzEgMTMuNzcsMTMuNzNDMTQuNzQsMTIuNzYgMTYuMzIsMTIuNzYgMTcuMywxMy43M0MxOC4yNiwxNC43MiAxOC4yNSwxNi4zIDE3LjI3LDE3LjI3SDE3LjNNMTksNEg1QTIsMiAwIDAsMCAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTAuODFDMTAuMjUsMTkuNDIgOS44LDE4Ljc0IDkuNSwxOEg1VjE0SDkuMThDOS4zNCwxMy4yOSA5LjYxLDEyLjYxIDEwLDEySDVWOEgxMVYxMC44MUMxMS41OCwxMC4yNSAxMi4yNiw5LjggMTMsOS41VjhIMTlWMTBDMTkuNCwxMC4yNSAxOS43NywxMC41NSAyMC4xLDEwLjg4QzIwLjQ0LDExLjIyIDIwLjc0LDExLjU5IDIxLDEyVjZBMiwyIDAgMCwwIDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVTZXR0aW5ncyA9IFwiTTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyTTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYxOEEyLDIgMCAwLDEgMTksMjBINUEyLDIgMCAwLDEgMywxOFY2QTIsMiAwIDAsMSA1LDRNNSw4VjEySDExVjhINU0xMyw4VjEySDE5VjhIMTNNNSwxNFYxOEgxMVYxNEg1TTEzLDE0VjE4SDE5VjE0SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlU3BsaXRDZWxsID0gXCJNMTkgMTRIMjFWMjBIM1YxNEg1VjE4SDE5VjE0TTMgNFYxMEg1VjZIMTlWMTBIMjFWNEgzTTExIDExVjEzSDhWMTVMNSAxMkw4IDlWMTFIMTFNMTYgMTFWOUwxOSAxMkwxNiAxNVYxM0gxM1YxMUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVN0YXIgPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTE2LjUgMjEuNkwxNy4yIDE4LjhMMTUgMTYuOUwxNy45IDE2LjdMMTkgMTRMMjAuMSAxNi42TDIzIDE2LjhMMjAuOCAxOC43TDIxLjUgMjEuNUwxOSAyMC4xTDE2LjUgMjEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVN5bmMgPSBcIk0xOSAxMlYxMy41QzIxLjIxIDEzLjUgMjMgMTUuMjkgMjMgMTcuNUMyMyAxOC4zMiAyMi43NiAxOS4wOCAyMi4zMyAxOS43MUwyMS4yNCAxOC42MkMyMS40MSAxOC4yOCAyMS41IDE3LjkgMjEuNSAxNy41QzIxLjUgMTYuMTIgMjAuMzggMTUgMTkgMTVWMTYuNUwxNi43NSAxNC4yNUwxOSAxMk0xOSAyM1YyMS41QzE2Ljc5IDIxLjUgMTUgMTkuNzEgMTUgMTcuNUMxNSAxNi42OCAxNS4yNSAxNS45MiAxNS42NyAxNS4yOUwxNi43NiAxNi4zOEMxNi41OSAxNi43MiAxNi41IDE3LjEgMTYuNSAxNy41QzE2LjUgMTguODggMTcuNjIgMjAgMTkgMjBWMTguNUwyMS4yNSAyMC43NUwxOSAyM000IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMUwxOS41IDExQzE3LjY2IDExIDE2IDExLjc3IDE0LjgxIDEzSDEyVjE3SDEzTDEzIDE3LjVDMTMgMTggMTMuMDYgMTguNSAxMy4xNyAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlVGVubmlzID0gXCJNMTguNSwxNEMxOS45LDE0IDIxLDE1LjEgMjEsMTYuNUMyMSwxNy45IDE5LjksMTkgMTguNSwxOUMxNy4xLDE5IDE2LDE3LjkgMTYsMTYuNUMxNiwxNS4xIDE3LjEsMTQgMTguNSwxNE03LDE1QzcsMTUgOCwxNiA4LDE3VjIwLjVDOCwyMS4zIDguNywyMiA5LjUsMjJDMTAuMywyMiAxMSwyMS4zIDExLDIwLjVWMTdDMTEsMTYgMTIsMTUgMTIsMTVIN004LDE0SDExQzExLDE0IDE2LDE0IDE2LDlDMTYsNCAxMiwyIDkuNSwyQzcsMiAzLDQgMyw5QzMsMTQgOCwxNCA4LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxldCA9IFwiTTE5LDE4SDVWNkgxOU0yMSw0SDNDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMjFBMiwyIDAgMCwwIDIzLDE4VjZDMjMsNC44OSAyMi4xLDQgMjEsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZXRBbmRyb2lkID0gXCJNMTkuMjUsMTlINC43NVYzSDE5LjI1TTE0LDIySDEwVjIxSDE0TTE4LDBINkEzLDMgMCAwLDAgMywzVjIxQTMsMyAwIDAsMCA2LDI0SDE4QTMsMyAwIDAsMCAyMSwyMVYzQTMsMyAwIDAsMCAxOCwwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxldENlbGxwaG9uZSA9IFwiTTMsNEgyMEEyLDIgMCAwLDEgMjIsNlY4SDE4VjZINVYxOEgxNFYyMEgzQTIsMiAwIDAsMSAxLDE4VjZBMiwyIDAgMCwxIDMsNE0xNywxMEgyM0ExLDEgMCAwLDEgMjQsMTFWMjFBMSwxIDAgMCwxIDIzLDIySDE3QTEsMSAwIDAsMSAxNiwyMVYxMUExLDEgMCAwLDEgMTcsMTBNMTgsMTJWMTlIMjJWMTJIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGV0RGFzaGJvYXJkID0gXCJNMTksMThINVY2SDE5TTIxLDRIM0MxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgyMUEyLDIgMCAwLDAgMjMsMThWNkMyMyw0Ljg5IDIyLjEsNCAyMSw0TTcsOEgxM1YxM0g3VjhNMTQsOEgxN1YxMEgxNFY4TTE3LDExVjE2SDE0VjExSDE3TTcsMTRIMTNWMTZIN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZXRJcGFkID0gXCJNMTksMTlINFYzSDE5TTExLjUsMjNBMS41LDEuNSAwIDAsMSAxMCwyMS41QTEuNSwxLjUgMCAwLDEgMTEuNSwyMEExLjUsMS41IDAgMCwxIDEzLDIxLjVBMS41LDEuNSAwIDAsMSAxMS41LDIzTTE4LjUsMEg0LjVBMi41LDIuNSAwIDAsMCAyLDIuNVYyMS41QTIuNSwyLjUgMCAwLDAgNC41LDI0SDE4LjVBMi41LDIuNSAwIDAsMCAyMSwyMS41VjIuNUEyLjUsMi41IDAgMCwwIDE4LjUsMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWNvID0gXCJNMTksMThINUE0LDQgMCAwLDEgMSwxNEE4LDggMCAwLDEgOSw2QzEwLjA2LDYgMTEuMDcsNi4yMSAxMiw2LjU4QzEyLjkzLDYuMjEgMTMuOTQsNiAxNSw2QTgsOCAwIDAsMSAyMywxNEE0LDQgMCAwLDEgMTksMThNMywxNEEyLDIgMCAwLDAgNSwxNkEyLDIgMCAwLDAgNywxNEM3LDExLjYzIDguMDMsOS41IDkuNjcsOC4wNEw5LDhBNiw2IDAgMCwwIDMsMTRNMTksMTZBMiwyIDAgMCwwIDIxLDE0QTYsNiAwIDAsMCAxNSw4QTYsNiAwIDAsMCA5LDE0QzksMTQuNzMgOC44MSwxNS40MSA4LjQ2LDE2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZyA9IFwiTTUuNSw3QTEuNSwxLjUgMCAwLDEgNCw1LjVBMS41LDEuNSAwIDAsMSA1LjUsNEExLjUsMS41IDAgMCwxIDcsNS41QTEuNSwxLjUgMCAwLDEgNS41LDdNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNSwyLjIyIDExLjU1LDIgMTEsMkg0QzIuODksMiAyLDIuODkgMiw0VjExQzIsMTEuNTUgMi4yMiwxMi4wNSAyLjU5LDEyLjQxTDExLjU4LDIxLjQxQzExLjk1LDIxLjc3IDEyLjQ1LDIyIDEzLDIyQzEzLjU1LDIyIDE0LjA1LDIxLjc3IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc4LDE0LjA1IDIyLDEzLjU1IDIyLDEzQzIyLDEyLjQ0IDIxLjc3LDExLjk0IDIxLjQxLDExLjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93RG93biA9IFwiTTIxLjQxIDExLjU4TDEyLjQxIDIuNThDMTIuMDQgMi4yMSAxMS41MyAyIDExIDJINEMyLjkgMiAyIDIuOSAyIDRWMTFDMiAxMS41MyAyLjIxIDEyLjA0IDIuNTkgMTIuNDFMMyAxMi44MUMzLjkgMTIuMjcgNC45NCAxMiA2IDEyQzkuMzEgMTIgMTIgMTQuNjkgMTIgMThDMTIgMTkuMDYgMTEuNzIgMjAuMDkgMTEuMTggMjFMMTEuNTggMjEuNEMxMS45NSAyMS43OCAxMi40NyAyMiAxMyAyMlMxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM1MyMS43OSAxMS45NiAyMS40MSAxMS41OE01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3TTcgMTlWMTVINVYxOUgzTDYgMjJMOSAxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93RG93bk91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTggMThWMTRINlYxOEg0TDcgMjFMMTAgMThIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdBcnJvd0xlZnQgPSBcIk0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQxTDMgMTIuODFDMy45IDEyLjI3IDQuOTQgMTIgNiAxMkM5LjMxIDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE5LjA2IDExLjcyIDIwLjA5IDExLjE4IDIxTDExLjU4IDIxLjRDMTEuOTUgMjEuNzggMTIuNDcgMjIgMTMgMjJTMTQuMDQgMjEuNzkgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFDMjEuNzkgMTQuMDQgMjIgMTMuNTMgMjIgMTNTMjEuNzkgMTEuOTYgMjEuNDEgMTEuNThNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN001IDE5SDlWMTdINVYxNUwyIDE4TDUgMjFWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dMZWZ0T3V0bGluZSA9IFwiTTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNNi41IDVDNS42NyA1IDUgNS42NyA1IDYuNVM1LjY3IDggNi41IDggOCA3LjMzIDggNi41IDcuMzMgNSA2LjUgNU0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQyTDMgMTIuODJDMy42NCAxMi40NCA0LjM1IDEyLjE5IDUuMDggMTIuMDhMNCAxMVY0SDExTDIwIDEzTDEzIDIwTDExLjkyIDE4LjkyQzExLjgyIDE5LjY2IDExLjU2IDIwLjM2IDExLjE4IDIxTDExLjU5IDIxLjQxQzExLjk2IDIxLjc5IDEyLjQ3IDIyIDEzIDIyQzEzLjUzIDIyIDE0LjA0IDIxLjc5IDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQzIxLjc5IDE0LjA0IDIyIDEzLjUzIDIyIDEzQzIyIDEyLjQ3IDIxLjc5IDExLjk2IDIxLjQxIDExLjU4TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNNSAxOUg5VjE3SDVWMTVMMiAxOEw1IDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93UmlnaHQgPSBcIk0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQxTDMgMTIuODFDMy45IDEyLjI3IDQuOTQgMTIgNiAxMkM5LjMxIDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE5LjA2IDExLjcyIDIwLjA5IDExLjE4IDIxTDExLjU4IDIxLjRDMTEuOTUgMjEuNzggMTIuNDcgMjIgMTMgMjJTMTQuMDQgMjEuNzkgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFDMjEuNzkgMTQuMDQgMjIgMTMuNTMgMjIgMTNTMjEuNzkgMTEuOTYgMjEuNDEgMTEuNThNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN002IDE3SDJWMTlINlYyMUw5IDE4TDYgMTVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dSaWdodE91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYgMTdIMlYxOUg2VjIxTDkgMThMNiAxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdBcnJvd1VwID0gXCJNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MUwzIDEyLjgxQzMuOSAxMi4yNyA0Ljk0IDEyIDYgMTJDOS4zMSAxMiAxMiAxNC42OSAxMiAxOEMxMiAxOS4wNiAxMS43MiAyMC4wOSAxMS4xOCAyMUwxMS41OCAyMS40QzExLjk1IDIxLjc4IDEyLjQ3IDIyIDEzIDIyUzE0LjA0IDIxLjc5IDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQzIxLjc5IDE0LjA0IDIyIDEzLjUzIDIyIDEzUzIxLjc5IDExLjk2IDIxLjQxIDExLjU4TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDdNNSAxN1YyMUg3VjE3SDlMNiAxNEwzIDE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dVcE91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYgMTdWMjFIOFYxN0gxMEw3IDE0TDQgMTdINlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdGYWNlcyA9IFwiTTE1LDE4QzExLjY4LDE4IDksMTUuMzEgOSwxMkM5LDguNjggMTEuNjgsNiAxNSw2QTYsNiAwIDAsMSAyMSwxMkE2LDYgMCAwLDEgMTUsMThNNCwxM0ExLDEgMCAwLDEgMywxMkExLDEgMCAwLDEgNCwxMUExLDEgMCAwLDEgNSwxMkExLDEgMCAwLDEgNCwxM00yMiwzSDcuNjNDNi45NywzIDYuMzgsMy4zMiA2LDMuODFMMCwxMkw2LDIwLjE4QzYuMzgsMjAuNjggNi45NywyMSA3LjYzLDIxSDIyQTIsMiAwIDAsMCAyNCwxOVY1QzI0LDMuODkgMjMuMSwzIDIyLDNNMTMsMTFBMSwxIDAgMCwwIDE0LDEwQTEsMSAwIDAsMCAxMyw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsMTFNMTUsMTZDMTYuODYsMTYgMTguMzUsMTQuNzIgMTguOCwxM0gxMS4yQzExLjY1LDE0LjcyIDEzLjE0LDE2IDE1LDE2TTE3LDExQTEsMSAwIDAsMCAxOCwxMEExLDEgMCAwLDAgMTcsOUExLDEgMCAwLDAgMTYsMTBBMSwxIDAgMCwwIDE3LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0hlYXJ0ID0gXCJNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNSwyLjIyIDExLjU1LDIgMTEsMkg0QTIsMiAwIDAsMCAyLDRWMTFDMiwxMS41NSAyLjIyLDEyLjA1IDIuNTksMTIuNDJMMTEuNTksMjEuNDJDMTEuOTUsMjEuNzggMTIuNDUsMjIgMTMsMjJDMTMuNTUsMjIgMTQuMDUsMjEuNzggMTQuNDEsMjEuNDFMMjEuNDEsMTQuNDFDMjEuNzgsMTQuMDUgMjIsMTMuNTUgMjIsMTNDMjIsMTIuNDUgMjEuNzcsMTEuOTQgMjEuNDEsMTEuNThNNS41LDdBMS41LDEuNSAwIDAsMSA0LDUuNUExLjUsMS41IDAgMCwxIDUuNSw0QTEuNSwxLjUgMCAwLDEgNyw1LjVBMS41LDEuNSAwIDAsMSA1LjUsN00xNy4yNywxNS4yN0wxMywxOS41NEw4LjczLDE1LjI3QzguMjgsMTQuODEgOCwxNC4xOSA4LDEzLjVBMi41LDIuNSAwIDAsMSAxMC41LDExQzExLjE5LDExIDExLjgyLDExLjI4IDEyLjI3LDExLjc0TDEzLDEyLjQ2TDEzLjczLDExLjczQzE0LjE4LDExLjI4IDE0LjgxLDExIDE1LjUsMTFBMi41LDIuNSAwIDAsMSAxOCwxMy41QzE4LDE0LjE5IDE3LjcyLDE0LjgyIDE3LjI3LDE1LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0hlYXJ0T3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTUgMi4yMiwxMi4wNSAyLjU5LDEyLjQyTDExLjU5LDIxLjQyQzExLjk1LDIxLjc4IDEyLjQ1LDIyIDEzLDIyQzEzLjU1LDIyIDE0LjA1LDIxLjc4IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc4LDE0LjA1IDIyLDEzLjU1IDIyLDEzQzIyLDEyLjQ1IDIxLjc3LDExLjk0IDIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDUsMi4yMiAxMS41NSwyIDExLDJINFYyTTExLDRMMjAsMTNMMTMsMjBMNCwxMVY0SDExVjRIMTFNNi41LDVBMS41LDEuNSAwIDAsMCA1LDYuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgOCw2LjVBMS41LDEuNSAwIDAsMCA2LjUsNU0xMC45NSwxMC41QzkuODIsMTAuNSA4LjksMTEuNDIgOC45LDEyLjU1QzguOSwxMy4xMiA5LjEzLDEzLjYyIDkuNSwxNEwxMywxNy41TDE2LjUsMTRDMTYuODcsMTMuNjMgMTcuMSwxMy4xMSAxNy4xLDEyLjU1QTIuMDUsMi4wNSAwIDAsMCAxNS4wNSwxMC41QzE0LjUsMTAuNSAxMy45NywxMC43MyAxMy42LDExLjFMMTMsMTEuN0wxMi40LDExLjExQzEyLjAzLDEwLjczIDExLjUsMTAuNSAxMC45NSwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ01pbnVzID0gXCJNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNCwyLjIxIDExLjUzLDIgMTEsMkg0QTIsMiAwIDAsMCAyLDRWMTFDMiwxMS41MyAyLjIxLDEyLjA0IDIuNTksMTIuNDFMMywxMi44MUMzLjksMTIuMjcgNC45NCwxMiA2LDEyQTYsNiAwIDAsMSAxMiwxOEMxMiwxOS4wNiAxMS43MiwyMC4wOSAxMS4xOCwyMUwxMS41OCwyMS40QzExLjk1LDIxLjc4IDEyLjQ3LDIyIDEzLDIyQzEzLjUzLDIyIDE0LjA0LDIxLjc5IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc5LDE0LjA0IDIyLDEzLjUzIDIyLDEzQzIyLDEyLjQ3IDIxLjc5LDExLjk2IDIxLjQxLDExLjU4TTUuNSw3QTEuNSwxLjUgMCAwLDEgNCw1LjVBMS41LDEuNSAwIDAsMSA1LjUsNEExLjUsMS41IDAgMCwxIDcsNS41QTEuNSwxLjUgMCAwLDEgNS41LDdNMTAsMTlIMlYxN0gxMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdNaW51c091dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTEwIDE5SDJWMTdIMTBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnTXVsdGlwbGUgPSBcIk01LjUsOUExLjUsMS41IDAgMCwwIDcsNy41QTEuNSwxLjUgMCAwLDAgNS41LDZBMS41LDEuNSAwIDAsMCA0LDcuNUExLjUsMS41IDAgMCwwIDUuNSw5TTE3LjQxLDExLjU4QzE3Ljc3LDExLjk0IDE4LDEyLjQ0IDE4LDEzQzE4LDEzLjU1IDE3Ljc4LDE0LjA1IDE3LjQxLDE0LjQxTDEyLjQxLDE5LjQxQzEyLjA1LDE5Ljc3IDExLjU1LDIwIDExLDIwQzEwLjQ1LDIwIDkuOTUsMTkuNzggOS41OCwxOS40MUwyLjU5LDEyLjQyQzIuMjIsMTIuMDUgMiwxMS41NSAyLDExVjZDMiw0Ljg5IDIuODksNCA0LDRIOUM5LjU1LDQgMTAuMDUsNC4yMiAxMC40MSw0LjU4TDE3LjQxLDExLjU4TTEzLjU0LDUuNzFMMTQuNTQsNC43MUwyMS40MSwxMS41OEMyMS43OCwxMS45NCAyMiwxMi40NSAyMiwxM0MyMiwxMy41NSAyMS43OCwxNC4wNSAyMS40MiwxNC40MUwxNi4wNCwxOS43OUwxNS4wNCwxOC43OUwyMC43NSwxM0wxMy41NCw1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ011bHRpcGxlT3V0bGluZSA9IFwiTTYuNSAxMEM3LjMgMTAgOCA5LjMgOCA4LjVTNy4zIDcgNi41IDcgNSA3LjcgNSA4LjUgNS43IDEwIDYuNSAxME05IDZMMTYgMTNMMTEgMThMNCAxMVY2SDlNOSA0SDRDMi45IDQgMiA0LjkgMiA2VjExQzIgMTEuNiAyLjIgMTIuMSAyLjYgMTIuNEw5LjYgMTkuNEM5LjkgMTkuOCAxMC40IDIwIDExIDIwUzEyLjEgMTkuOCAxMi40IDE5LjRMMTcuNCAxNC40QzE3LjggMTQgMTggMTMuNSAxOCAxM0MxOCAxMi40IDE3LjggMTEuOSAxNy40IDExLjZMMTAuNCA0LjZDMTAuMSA0LjIgOS42IDQgOSA0TTEzLjUgNS43TDE0LjUgNC43TDIxLjQgMTEuNkMyMS44IDEyIDIyIDEyLjUgMjIgMTNTMjEuOCAxNC4xIDIxLjQgMTQuNEwxNiAxOS44TDE1IDE4LjhMMjAuNyAxM0wxMy41IDUuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPZmYgPSBcIk0xOC4zMyA4LjVMMjIuOTIgMy45MkwyMS41IDIuNUwyLjUgMjEuNUwzLjkyIDIyLjkyTDguNSAxOC4zM0wxMS41OCAyMS40MUEyIDIgMCAwIDAgMTMgMjJBMiAyIDAgMCAwIDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQTIgMiAwIDAgMCAyMiAxM0EyIDIgMCAwIDAgMjEuNDEgMTEuNThNNS42MSAxNS40M0wxNS40NyA1LjY1TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQxTTUuNSA0QTEuNSAxLjUgMCAxIDEgNCA1LjVBMS41IDEuNSAwIDAgMSA1LjUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPZmZPdXRsaW5lID0gXCJNNi41IDVBMS41IDEuNSAwIDEgMCA4IDYuNUExLjUgMS41IDAgMCAwIDYuNSA1TTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU0xOC4zMyA4LjVMMjIuOTIgMy45MkwyMS41IDIuNUwyLjUgMjEuNUwzLjkyIDIyLjkyTDguNSAxOC4zM0wxMS41OSAyMS40MkEyIDIgMCAwIDAgMTMgMjJBMiAyIDAgMCAwIDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQTIgMiAwIDAgMCAyMiAxM0EyIDIgMCAwIDAgMjEuNDEgMTEuNThNMTMgMjBMOS45MiAxNi45MkwxNi45MiA5LjkyTDIwIDEzTTUuNjEgMTUuNDNMNyAxNEw0IDExVjRIMTFMMTQuMDYgNy4wNkwxNS40NyA1LjY2TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQyTTUgNi41QTEuNSAxLjUgMCAxIDAgNi41IDVBMS41IDEuNSAwIDAgMCA1IDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPdXRsaW5lID0gXCJNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMTEuNTkgMjEuNDJBMiAyIDAgMCAwIDEzIDIyQTIgMiAwIDAgMCAxNC40MSAyMS40MUwyMS40MSAxNC40MUEyIDIgMCAwIDAgMjIgMTNBMiAyIDAgMCAwIDIxLjQxIDExLjU4TTEzIDIwTDQgMTFWNEgxMUwyMCAxM002LjUgNUExLjUgMS41IDAgMSAxIDUgNi41QTEuNSAxLjUgMCAwIDEgNi41IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnUGx1cyA9IFwiTTIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDQsMi4yMSAxMS41MywyIDExLDJINEEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTMgMi4yMSwxMi4wNCAyLjU5LDEyLjQxTDMsMTIuODFDMy45LDEyLjI3IDQuOTQsMTIgNiwxMkE2LDYgMCAwLDEgMTIsMThDMTIsMTkuMDYgMTEuNzIsMjAuMDkgMTEuMTgsMjFMMTEuNTgsMjEuNEMxMS45NSwyMS43OCAxMi40NywyMiAxMywyMkMxMy41MywyMiAxNC4wNCwyMS43OSAxNC40MSwyMS40MUwyMS40MSwxNC40MUMyMS43OSwxNC4wNCAyMiwxMy41MyAyMiwxM0MyMiwxMi40NyAyMS43OSwxMS45NiAyMS40MSwxMS41OE01LjUsN0ExLjUsMS41IDAgMCwxIDQsNS41QTEuNSwxLjUgMCAwLDEgNS41LDRBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDUuNSw3TTEwLDE5SDdWMjJINVYxOUgyVjE3SDVWMTRIN1YxN0gxMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdQbHVzT3V0bGluZSA9IFwiTTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMyAxMi44MkE1LjYyIDUuNjIgMCAwIDEgNS4wOCAxMi4wOEw0IDExVjRIMTFMMjAgMTNMMTMgMjBMMTEuOTIgMTguOTJBNS41NyA1LjU3IDAgMCAxIDExLjE4IDIxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMTAgMTlIN1YyMkg1VjE5SDJWMTdINVYxNEg3VjE3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ1JlbW92ZSA9IFwiTTIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDQsMi4yMSAxMS41MywyIDExLDJINEEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTMgMi4yMSwxMi4wNCAyLjU5LDEyLjQxTDMsMTIuODFDMy45LDEyLjI3IDQuOTQsMTIgNiwxMkE2LDYgMCAwLDEgMTIsMThDMTIsMTkuMDYgMTEuNzIsMjAuMDkgMTEuMTgsMjFMMTEuNTgsMjEuNEMxMS45NSwyMS43OCAxMi40NywyMiAxMywyMkMxMy41MywyMiAxNC4wNCwyMS43OSAxNC40MSwyMS40MUwyMS40MSwxNC40MUMyMS43OSwxNC4wNCAyMiwxMy41MyAyMiwxM0MyMiwxMi40NyAyMS43OSwxMS45NiAyMS40MSwxMS41OE01LjUsN0ExLjUsMS41IDAgMCwxIDQsNS41QTEuNSwxLjUgMCAwLDEgNS41LDRBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDUuNSw3TTguMTIsMjEuNTRMNiwxOS40MUwzLjg4LDIxLjU0TDIuNDYsMjAuMTJMNC41OSwxOEwyLjQ2LDE1Ljg4TDMuODcsMTQuNDdMNiwxNi41OUw4LjEyLDE0LjQ3TDkuNTMsMTUuODhMNy40MSwxOEw5LjUzLDIwLjEyTDguMTIsMjEuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnUmVtb3ZlT3V0bGluZSA9IFwiTTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMyAxMi44MkE1LjYyIDUuNjIgMCAwIDEgNS4wOCAxMi4wOEw0IDExVjRIMTFMMjAgMTNMMTMgMjBMMTEuOTIgMTguOTJBNS41NyA1LjU3IDAgMCAxIDExLjE4IDIxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNOC4xMiAyMS41NEw2IDE5LjQxTDMuODggMjEuNTRMMi40NiAyMC4xMkw0LjU5IDE4TDIuNDYgMTUuODhMMy44OCAxNC40Nkw2IDE2LjU5TDguMTIgMTQuNDZMOS41NCAxNS44OEw3LjQxIDE4TDkuNTQgMjAuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnVGV4dCA9IFwiTTIxLjQxIDExLjU4TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgOEExLjUgMS41IDAgMSAxIDggNi41QTEuNSAxLjUgMCAwIDEgNi41IDhNMTEuNTkgMTUuNDFMNy41OSAxMS40MUw5IDEwTDEzIDE0TTE1LjU5IDE0LjQxTDEwLjA5IDguOTFMMTEuNSA3LjVMMTcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnVGV4dE91dGxpbmUgPSBcIk0yMS40IDExLjZMMTIuNCAyLjZDMTIgMi4yIDExLjUgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNSAyLjIgMTIgMi42IDEyLjRMMTEuNiAyMS40QzEyIDIxLjggMTIuNSAyMiAxMyAyMkMxMy41IDIyIDE0IDIxLjggMTQuNCAyMS40TDIxLjQgMTQuNEMyMS44IDE0IDIyIDEzLjUgMjIgMTNDMjIgMTIuNSAyMS44IDEyIDIxLjQgMTEuNk0xMyAyMEw0IDExVjRIMTFMMjAgMTNNNi41IDVDNy4zIDUgOCA1LjcgOCA2LjVTNy4zIDggNi41IDggNSA3LjMgNSA2LjUgNS43IDUgNi41IDVNMTAuMSA4LjlMMTEuNSA3LjVMMTcgMTNMMTUuNiAxNC40TDEwLjEgOC45TTcuNiAxMS40TDkgMTBMMTMgMTRMMTEuNiAxNS40TDcuNiAxMS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhaWx3aW5kID0gXCJNMTIgNkM5LjMzIDYgNy42NyA3LjMzIDcgMTBDOCA4LjY3IDkuMTcgOC4xNyAxMC41IDguNUMxMS4yNiA4LjY5IDExLjgxIDkuMjQgMTIuNDEgOS44NUMxMy4zOSAxMC44NSAxNC41IDEyIDE3IDEyQzE5LjY3IDEyIDIxLjMzIDEwLjY3IDIyIDhDMjEgOS4zMyAxOS44MyA5LjgzIDE4LjUgOS41QzE3Ljc0IDkuMzEgMTcuMiA4Ljc2IDE2LjU5IDguMTVDMTUuNjEgNy4xNSAxNC41IDYgMTIgNk03IDEyQzQuMzMgMTIgMi42NyAxMy4zMyAyIDE2QzMgMTQuNjcgNC4xNyAxNC4xNyA1LjUgMTQuNUM2LjI2IDE0LjY5IDYuOCAxNS4yNCA3LjQxIDE1Ljg1QzguMzkgMTYuODUgOS41IDE4IDEyIDE4QzE0LjY3IDE4IDE2LjMzIDE2LjY3IDE3IDE0QzE2IDE1LjMzIDE0LjgzIDE1LjgzIDEzLjUgMTUuNUMxMi43NCAxNS4zMSAxMi4yIDE0Ljc2IDExLjU5IDE0LjE1QzEwLjYxIDEzLjE1IDkuNSAxMiA3IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhbmsgPSBcIk0yMCwxMkg0VjExSDZMNyw2SDEyTDEzLDExSDIwVjEyTTEzLjIyLDdMMTMuNjIsOUgyMlY3SDEzLjIyTTIyLDE2QTMsMyAwIDAsMSAxOSwxOUg1QTMsMyAwIDAsMSAyLDE2QTMsMyAwIDAsMSA1LDEzSDE5QTMsMyAwIDAsMSAyMiwxNk02LDE2QTEsMSAwIDAsMCA1LDE1QTEsMSAwIDAsMCA0LDE2QTEsMSAwIDAsMCA1LDE3QTEsMSAwIDAsMCA2LDE2TTEzLDE2QTEsMSAwIDAsMCAxMiwxNUExLDEgMCAwLDAgMTEsMTZBMSwxIDAgMCwwIDEyLDE3QTEsMSAwIDAsMCAxMywxNk0yMCwxNkExLDEgMCAwLDAgMTksMTVBMSwxIDAgMCwwIDE4LDE2QTEsMSAwIDAsMCAxOSwxN0ExLDEgMCAwLDAgMjAsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFua2VyVHJ1Y2sgPSBcIk0yMCA4SDE1VjE0SDJWMTdIM0MzIDE4LjcgNC4zIDIwIDYgMjBTOSAxOC43IDkgMTdIMTVDMTUgMTguNyAxNi4zIDIwIDE4IDIwUzIxIDE4LjcgMjEgMTdIMjNWMTJMMjAgOE02IDE4LjVDNS4yIDE4LjUgNC41IDE3LjggNC41IDE3UzUuMiAxNS41IDYgMTUuNSA3LjUgMTYuMiA3LjUgMTcgNi44IDE4LjUgNiAxOC41TTE4IDE4LjVDMTcuMiAxOC41IDE2LjUgMTcuOCAxNi41IDE3UzE3LjIgMTUuNSAxOCAxNS41IDE5LjUgMTYuMiAxOS41IDE3IDE4LjggMTguNSAxOCAxOC41TTE3IDEyVjkuNUgxOS41TDIxLjUgMTJIMTdNMTQgOS41QzE0IDExLjQgMTIuNCAxMyAxMC41IDEzSDQuNUMyLjYgMTMgMSAxMS40IDEgOS41UzIuNiA2IDQuNSA2SDVWNUg0VjRIOFY1SDdWNkgxMC41QzEyLjQgNiAxNCA3LjYgMTQgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcGVEcml2ZSA9IFwiTTEyIDEwQzEzLjExIDEwIDE0IDEwLjkgMTQgMTJDMTQgMTMuMTEgMTMuMTEgMTQgMTIgMTRDMTAuOSAxNCAxMCAxMy4xMSAxMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBNNSAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTdIMTYuOUMxOC4yIDE1LjczIDE5IDEzLjk2IDE5IDEyQzE5IDguMTMgMTUuODcgNSAxMiA1QzguMTMgNSA1IDguMTMgNSAxMkM1IDE1Ljg3IDguMTMgMTkgMTIgMTlIMjFDMjEgMjAuMTEgMjAuMTEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcGVNZWFzdXJlID0gXCJNOSw1QTcsNyAwIDAsMSAxNiwxMkgxN1YxNUgxNlYxOUg5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVNOSw4QTQsNCAwIDAsMCA1LDEyQTQsNCAwIDAsMCA5LDE2QTQsNCAwIDAsMCAxMywxMkE0LDQgMCAwLDAgOSw4TTE3LDE3SDIyVjE5TDIyLDIxSDIwVjE5SDE3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcmdldCA9IFwiTTExLDJWNC4wN0M3LjM4LDQuNTMgNC41Myw3LjM4IDQuMDcsMTFIMlYxM0g0LjA3QzQuNTMsMTYuNjIgNy4zOCwxOS40NyAxMSwxOS45M1YyMkgxM1YxOS45M0MxNi42MiwxOS40NyAxOS40NywxNi42MiAxOS45MywxM0gyMlYxMUgxOS45M0MxOS40Nyw3LjM4IDE2LjYyLDQuNTMgMTMsNC4wN1YyTTExLDYuMDhWOEgxM1Y2LjA5QzE1LjUsNi41IDE3LjUsOC41IDE3LjkyLDExSDE2VjEzSDE3LjkxQzE3LjUsMTUuNSAxNS41LDE3LjUgMTMsMTcuOTJWMTZIMTFWMTcuOTFDOC41LDE3LjUgNi41LDE1LjUgNi4wOCwxM0g4VjExSDYuMDlDNi41LDguNSA4LjUsNi41IDExLDYuMDhNMTIsMTFBMSwxIDAgMCwwIDExLDEyQTEsMSAwIDAsMCAxMiwxM0ExLDEgMCAwLDAgMTMsMTJBMSwxIDAgMCwwIDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcmdldEFjY291bnQgPSBcIk0yMC45NSwxMUgyMi41VjEzSDIwLjk1QzIwLjUsMTcuMTcgMTcuMTcsMjAuNSAxMywyMC45NVYyMi41SDExVjIwLjk1QzYuODMsMjAuNSAzLjUsMTcuMTcgMy4wNSwxM0gxLjVWMTFIMy4wNUMzLjUsNi44MyA2LjgzLDMuNSAxMSwzLjA1VjEuNUgxM1YzLjA1QzE3LjE3LDMuNSAyMC41LDYuODMgMjAuOTUsMTFNNS4wNywxMUg2LjVWMTNINS4wN0M1LjUsMTYuMDcgNy45MywxOC41IDExLDE4LjkzVjE3LjVIMTNWMTguOTNDMTYuMDcsMTguNSAxOC41LDE2LjA3IDE4LjkzLDEzSDE3LjVWMTFIMTguOTNDMTguNSw3LjkzIDE2LjA3LDUuNSAxMyw1LjA3VjYuNUgxMVY1LjA3QzcuOTMsNS41IDUuNSw3LjkzIDUuMDcsMTFNMTYsMTZIOFYxNUM4LDEzLjY3IDEwLjY3LDEzIDEyLDEzQzEzLjMzLDEzIDE2LDEzLjY3IDE2LDE1VjE2TTEyLDhBMiwyIDAgMCwxIDE0LDEwQTIsMiAwIDAsMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFyZ2V0VmFyaWFudCA9IFwiTTIyLjA4LDExLjA0SDIwLjA4VjRIMTMuMDVWMkgxMS4wNFY0SDRWMTEuMDRIMlYxMy4wNUg0VjIwLjA4SDExLjA0VjIyLjA4SDEzLjA1VjIwLjA4SDIwLjA4VjEzLjA1SDIyLjA4VjExLjA0TTE4LjA3LDE4LjA3SDEzLjA1VjE2LjA2SDExLjA0VjE4LjA3SDZWMTMuMDVIOC4wM1YxMS4wNEg2VjZIMTEuMDRWOC4wM0gxMy4wNVY2SDE4LjA3VjExLjA0SDE2LjA2VjEzLjA1SDE4LjA3VjE4LjA3TTEzLjA1LDEyLjA1QTEsMSAwIDAsMSAxMi4wNSwxMy4wNUMxMS41LDEzLjA1IDExLjA0LDEyLjYgMTEuMDQsMTIuMDVDMTEuMDQsMTEuNSAxMS41LDExLjA0IDEyLjA1LDExLjA0QzEyLjYsMTEuMDQgMTMuMDUsMTEuNSAxMy4wNSwxMi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYXhpID0gXCJNNSwxMUw2LjUsNi41SDE3LjVMMTksMTFNMTcuNSwxNkExLjUsMS41IDAgMCwxIDE2LDE0LjVBMS41LDEuNSAwIDAsMSAxNy41LDEzQTEuNSwxLjUgMCAwLDEgMTksMTQuNUExLjUsMS41IDAgMCwxIDE3LjUsMTZNNi41LDE2QTEuNSwxLjUgMCAwLDEgNSwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgOCwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDE2TTE4LjkyLDZDMTguNzIsNS40MiAxOC4xNiw1IDE3LjUsNUgxNVYzSDlWNUg2LjVDNS44NCw1IDUuMjgsNS40MiA1LjA4LDZMMywxMlYyMEExLDEgMCAwLDAgNCwyMUg1QTEsMSAwIDAsMCA2LDIwVjE5SDE4VjIwQTEsMSAwIDAsMCAxOSwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTJMMTguOTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUZWEgPSBcIk00LDE5SDIwVjIxSDRWMTlNMjAsOFY1SDE4VjhIMjBNMjAsM0MyMC42LDMgMjEsMy4yIDIxLjQsMy42QzIxLjgsNCAyMiw0LjUgMjIsNVY4QzIyLDguNiAyMS44LDkgMjEuNCw5LjRDMjEsOS44IDIwLjYsMTAgMjAsMTBIMThWMTNDMTgsMTQuMSAxNy42LDE1IDE2LjgsMTUuOEMxNiwxNi42IDE1LjEsMTcgMTQsMTdIOEM2LjksMTcgNiwxNi42IDUuMiwxNS44QzQuNCwxNSA0LDE0LjEgNCwxM1YzSDlWNS40TDcuMiw2LjhDNy4xLDYuOSA3LDcuMSA3LDcuMlYxMS41QzcsMTEuOCA3LjIsMTIgNy41LDEySDExLjVDMTEuOCwxMiAxMiwxMS44IDEyLDExLjVWNy4yQzEyLDcgMTEuOSw2LjkgMTEuOCw2LjhMMTAsNS40VjNIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVhT3V0bGluZSA9IFwiTTQsMTlIMjBWMjFINFYxOU0yMS40LDMuNkMyMSwzLjIgMjAuNiwzIDIwLDNINFYxM0M0LDE0LjEgNC40LDE1IDUuMiwxNS44QzYsMTYuNiA2LjksMTcgOCwxN0gxNEMxNS4xLDE3IDE2LDE2LjYgMTYuOCwxNS44QzE3LjYsMTUgMTgsMTQuMSAxOCwxM1YxMEgyMEMyMC42LDEwIDIxLDkuOCAyMS40LDkuNEMyMS44LDkgMjIsOC42IDIyLDhWNUMyMiw0LjUgMjEuOCw0IDIxLjQsMy42TTE2LDVWOEwxNiwxMFYxM0MxNiwxMy42IDE1LjgsMTQgMTUuNCwxNC40QzE1LDE0LjggMTQuNiwxNSAxNCwxNUg4QzcuNCwxNSA3LDE0LjggNi42LDE0LjRDNi4yLDE0IDYsMTMuNSA2LDEzVjVIMTBWNi40TDguMiw3LjhDOCw3LjkgOCw4LjEgOCw4LjJWMTIuNUM4LDEyLjggOC4yLDEzIDguNSwxM0gxMi41QzEyLjgsMTMgMTMsMTIuOCAxMywxMi41VjguMkMxMyw4IDEyLjksNy45IDEyLjgsNy44TDExLDYuNFY1SDE2TTIwLDhIMThWNUgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlYWNoID0gXCJNMjAsMTdBMiwyIDAgMCwwIDIyLDE1VjRBMiwyIDAgMCwwIDIwLDJIOS40NkM5LjgxLDIuNjEgMTAsMy4zIDEwLDRIMjBWMTVIMTFWMTdNMTUsN1Y5SDlWMjJIN1YxNkg1VjIySDNWMTRIMS41VjlBMiwyIDAgMCwxIDMuNSw3SDE1TTgsNEEyLDIgMCAwLDEgNiw2QTIsMiAwIDAsMSA0LDRBMiwyIDAgMCwxIDYsMkEyLDIgMCAwLDEgOCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlYW12aWV3ZXIgPSBcIk0xMC4wNCA5LjJMOS4zIDExSDE0Ljc1TDE0IDkuMkwxOS41NSAxMkwxNCAxNC44TDE0Ljc1IDEzSDkuM0wxMC4wNCAxNC44TDQuNSAxMkwxMC4wNCA5LjJNMjAuODMgMjJIMy4xN0MyLjUzIDIyIDIgMjEuNSAyIDIwLjgzVjMuMTdDMiAyLjUzIDIuNTMgMiAzLjE3IDJIMjAuODNDMjEuNSAyIDIyIDIuNTMgMjIgMy4xN1YyMC44M0MyMiAyMS40NyAyMS41IDIyIDIwLjgzIDIyTTExLjkzIDMuNzZDNy40MSAzLjgyIDMuNzggNy41IDMuNzYgMTJDMy43MiAxNi41IDcuMzUgMjAuMiAxMS44NiAyMC4yNEgxMkMxNi41MyAyMC4xOCAyMC4xOCAxNi41MyAyMC4yNCAxMkMyMC4zMSA3LjUgMTYuNzQgMy44MyAxMi4yNiAzLjc2QzEyLjE1IDMuNzUgMTIuMDQgMy43NiAxMS45MyAzLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGVncmFtID0gXCJNOS43OCwxOC42NUwxMC4wNiwxNC40MkwxNy43NCw3LjVDMTguMDgsNy4xOSAxNy42Nyw3LjA0IDE3LjIyLDcuMzFMNy43NCwxMy4zTDMuNjQsMTJDMi43NiwxMS43NSAyLjc1LDExLjE0IDMuODQsMTAuN0wxOS44MSw0LjU0QzIwLjU0LDQuMjEgMjEuMjQsNC43MiAyMC45Niw1Ljg0TDE4LjI0LDE4LjY1QzE4LjA1LDE5LjU2IDE3LjUsMTkuNzggMTYuNzQsMTkuMzZMMTIuNiwxNi4zTDEwLjYxLDE4LjIzQzEwLjM4LDE4LjQ2IDEwLjE5LDE4LjY1IDkuNzgsMTguNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXNjb3BlID0gXCJNMjEuOSw4LjlMMjAuMiw5LjlMMTYuMiwzTDE3LjksMkwyMS45LDguOU05LjgsNy45TDEyLjgsMTMuMUwxOC45LDkuNkwxNS45LDQuNEw5LjgsNy45TTExLjQsMTIuN0w5LjQsOS4yTDUuMSwxMS43TDcuMSwxNS4yTDExLjQsMTIuN00yLjEsMTQuNkwzLjEsMTYuM0w1LjcsMTQuOEw0LjcsMTMuMUwyLjEsMTQuNk0xMi4xLDE0TDExLjgsMTMuNkw3LjUsMTYuMUw3LjgsMTYuNUM4LDE2LjggOC4zLDE3LjEgOC42LDE3LjNMNywyMkg5TDEwLjQsMTcuN0gxMC41TDEyLDIySDE0TDEyLjEsMTYuNEMxMi42LDE1LjcgMTIuNiwxNC44IDEyLjEsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbiA9IFwiTTIxLDE3SDNWNUgyMU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxN0EyLDIgMCAwLDAgMywxOUg4VjIxSDE2VjE5SDIxQTIsMiAwIDAsMCAyMywxN1Y1QTIsMiAwIDAsMCAyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25BbWJpZW50TGlnaHQgPSBcIk0zIDExSDBWOUgzVjExTTMgMTRIMFYxNkgzVjE0TTUgNS4xMkwyLjg4IDNMMS40NiA0LjQxTDMuNTkgNi41NEw1IDUuMTJNMTAgNVYySDhWNUgxME0yNCA5SDIxVjExSDI0VjlNMTYgNVYySDE0VjVIMTZNMjAuNDEgNi41NEwyMi41NCA0LjQyTDIxLjEyIDNMMTkgNS4xMkwyMC40MSA2LjU0TTI0IDE0SDIxVjE2SDI0VjE0TTE5IDlWMTZDMTkgMTcuMSAxOC4xIDE4IDE3IDE4SDE1VjIwSDlWMThIN0M1LjkgMTggNSAxNy4xIDUgMTZWOUM1IDcuOSA1LjkgNyA3IDdIMTdDMTguMSA3IDE5IDcuOSAxOSA5TTE3IDlIN1YxNkgxN1Y5TTE5IDE5Ljg4TDIxLjEyIDIyTDIyLjU0IDIwLjU5TDIwLjQxIDE4LjQ3TDE5IDE5Ljg4TTMuNTkgMTguNDZMMS40NyAyMC41OUwyLjg4IDIyTDUgMTkuODhMMy41OSAxOC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUZWxldmlzaW9uQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xNiwxNkwxOSw4SDE2LjVMMTUsMTIuNUwxMy41LDhINVYxMEg4VjE2SDEwVjEwSDExLjc3TDE0LDE2SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25DbGFzc2ljID0gXCJNOC4xNiwzTDYuNzUsNC40MUw5LjM0LDdINEMyLjg5LDcgMiw3Ljg5IDIsOVYxOUMyLDIwLjExIDIuODksMjEgNCwyMUgyMEMyMS4xMSwyMSAyMiwyMC4xMSAyMiwxOVY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE0LjY2TDE3LjI1LDQuNDFMMTUuODQsM0wxMiw2Ljg0TDguMTYsM000LDlIMTdWMTlINFY5TTE5LjUsOUExLDEgMCAwLDEgMjAuNSwxMEExLDEgMCAwLDEgMTkuNSwxMUExLDEgMCAwLDEgMTguNSwxMEExLDEgMCAwLDEgMTkuNSw5TTE5LjUsMTJBMSwxIDAgMCwxIDIwLjUsMTNBMSwxIDAgMCwxIDE5LjUsMTRBMSwxIDAgMCwxIDE4LjUsMTNBMSwxIDAgMCwxIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbkNsYXNzaWNPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIxLDIxLjcyTDE5LjczLDIzTDE3LjczLDIxSDRDMi44OSwyMSAyLDIwLjExIDIsMTlWOUMyLDggMi43Niw3LjE0IDMuNzUsN0wyLDUuMjdNOC4xNiwzTDEyLDYuODRMMTUuODQsM0wxNy4yNSw0LjQxTDE0LjY2LDdIMjBDMjEuMTEsNyAyMiw3Ljg5IDIyLDlWMTlDMjIsMTkuMzQgMjEuOTIsMTkuNjYgMjEuNzcsMTkuOTRMMTcsMTUuMThWOUgxMC44Mkw4LjgyLDdIOS4zNEw2Ljc1LDQuNDFMOC4xNiwzTTQsOVYxOUgxNS43M0w1LjczLDlINE0xOS41LDlBMSwxIDAgMCwwIDE4LjUsMTBBMSwxIDAgMCwwIDE5LjUsMTFBMSwxIDAgMCwwIDIwLjUsMTBBMSwxIDAgMCwwIDE5LjUsOU0xOS41LDEyQTEsMSAwIDAsMCAxOC41LDEzQTEsMSAwIDAsMCAxOS41LDE0QTEsMSAwIDAsMCAyMC41LDEzQTEsMSAwIDAsMCAxOS41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25DbGVhbiA9IFwiTTIxIDE3SDNWNUgyMU0yMSAzSDNDMS45IDMgMSAzLjkgMSA1VjE3QzEgMTguMTEgMS45IDE5IDMgMTlIOFYyMUgxNlYxOUgyMUMyMi4xMSAxOSAyMyAxOC4xMSAyMyAxN1Y1QzIzIDMuOSAyMi4xMSAzIDIxIDNNMTUgNi41TDE0LjM4IDcuODdMMTMgOC41TDE0LjM4IDkuMTNMMTUgMTAuNUwxNS42MyA5LjEzTDE3IDguNUwxNS42MyA3Ljg3TDE1IDYuNU0xMC41IDguNUw5LjQxIDEwLjkxTDcgMTJMOS40MSAxMy4wOUwxMC41IDE1LjVMMTEuNiAxMy4wOUwxNCAxMkwxMS42IDEwLjkxTDEwLjUgOC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbkd1aWRlID0gXCJNMjEsMTdWNUgzVjE3SDIxTTIxLDNBMiwyIDAgMCwxIDIzLDVWMTdBMiwyIDAgMCwxIDIxLDE5SDE2VjIxSDhWMTlIM0EyLDIgMCAwLDEgMSwxN1Y1QTIsMiAwIDAsMSAzLDNIMjFNNSw3SDExVjExSDVWN001LDEzSDExVjE1SDVWMTNNMTMsN0gxOVY5SDEzVjdNMTMsMTFIMTlWMTVIMTNWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbk9mZiA9IFwiTTAuNSwyLjc3TDEuNzgsMS41TDIxLDIwLjcyTDE5LjczLDIyTDE2LjczLDE5SDE2VjIxSDhWMTlIM0EyLDIgMCAwLDEgMSwxN1Y1QzEsNC41IDEuMTcsNC4wNyAxLjQ2LDMuNzNMMC41LDIuNzdNMjEsMTdWNUg3LjgyTDUuODIsM0gyMUEyLDIgMCAwLDEgMjMsNVYxN0MyMywxNy44NSAyMi40NSwxOC41OSAyMS43LDE4Ljg3TDE5LjgyLDE3SDIxTTMsMTdIMTQuNzNMMyw1LjI3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25QYXVzZSA9IFwiTTMgM0MxLjg5IDMgMSAzLjg5IDEgNVYxN0MxIDE4LjEgMS45IDE5IDMgMTlIOFYyMUgxNlYxOUgyMUMyMi4xIDE5IDIzIDE4LjEgMjMgMTdWNUMyMyAzLjg5IDIyLjEgMyAyMSAzTTMgNUgyMVYxN0gzTTkgOFYxNEgxMVY4TTEzIDhWMTRIMTVWOFwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25QbGF5ID0gXCJNMjEsM0gzQzEuODksMyAxLDMuODkgMSw1VjE3QTIsMiAwIDAsMCAzLDE5SDhWMjFIMTZWMTlIMjFBMiwyIDAgMCwwIDIzLDE3VjVDMjMsMy44OSAyMi4xLDMgMjEsM00yMSwxN0gzVjVIMjFNMTYsMTFMOSwxNVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvblN0b3AgPSBcIk0zIDNIMjFDMjIuMSAzIDIzIDMuODkgMjMgNVYxN0MyMyAxOC4xIDIyLjEgMTkgMjEgMTlIMTZWMjFIOFYxOUgzQzEuOSAxOSAxIDE4LjEgMSAxN1Y1QzEgMy44OSAxLjg5IDMgMyAzTTMgNVYxN0gyMVY1SDNNOSA4SDE1VjE0SDlWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZW1wZXJhdHVyZUNlbHNpdXMgPSBcIk0xNi41LDVDMTguMDUsNSAxOS41LDUuNDcgMjAuNjksNi4yOEwxOS41Myw5LjE3QzE4LjczLDguNDQgMTcuNjcsOCAxNi41LDhDMTQsOCAxMiwxMCAxMiwxMi41QzEyLDE1IDE0LDE3IDE2LjUsMTdDMTcuNTMsMTcgMTguNDcsMTYuNjYgMTkuMjMsMTYuMDhMMjAuMzcsMTguOTNDMTkuMjQsMTkuNjEgMTcuOTIsMjAgMTYuNSwyMEE3LjUsNy41IDAgMCwxIDksMTIuNUE3LjUsNy41IDAgMCwxIDE2LjUsNU02LDNBMywzIDAgMCwxIDksNkEzLDMgMCAwLDEgNiw5QTMsMyAwIDAsMSAzLDZBMywzIDAgMCwxIDYsM002LDVBMSwxIDAgMCwwIDUsNkExLDEgMCAwLDAgNiw3QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDYsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZW1wZXJhdHVyZUZhaHJlbmhlaXQgPSBcIk0xMSwyMFY1SDIwVjhIMTRWMTFIMTlWMTRIMTRWMjBIMTFNNiwzQTMsMyAwIDAsMSA5LDZBMywzIDAgMCwxIDYsOUEzLDMgMCAwLDEgMyw2QTMsMyAwIDAsMSA2LDNNNiw1QTEsMSAwIDAsMCA1LDZBMSwxIDAgMCwwIDYsN0ExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA2LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVtcGVyYXR1cmVLZWx2aW4gPSBcIk03LDVIMTBWMTFMMTUsNUgxOUwxMy44OCwxMC43OEwxOSwyMEgxNS4zOEwxMS43NiwxMy4xN0wxMCwxNS4xNVYyMEg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVubmlzID0gXCJNMTgsMTVBNCw0IDAgMCwxIDIyLDE5QTQsNCAwIDAsMSAxOCwyM0E0LDQgMCAwLDEgMTQsMTlBNCw0IDAgMCwxIDE4LDE1TTE4LDE3QTIsMiAwIDAsMCAxNiwxOUEyLDIgMCAwLDAgMTgsMjFBMiwyIDAgMCwwIDIwLDE5QTIsMiAwIDAsMCAxOCwxN002LjA1LDE0LjU0QzYuMDUsMTQuNTQgNy40NiwxMy4xMiA3LjQ3LDEwLjNDNy4xMSw4LjExIDcuOTcsNS41NCA5Ljk0LDMuNThDMTIuODcsMC42NSAxNy4xNCwwLjE3IDE5LjUsMi41QzIxLjgzLDQuODYgMjEuMzUsOS4xMyAxOC40MiwxMi4wNkMxNi40NiwxNC4wMyAxMy44OSwxNC44OSAxMS43LDE0LjUzQzguODgsMTQuNTQgNy40NiwxNS45NSA3LjQ2LDE1Ljk1TDMuMjIsMjAuMTlMMS44MSwxOC43OEw2LjA1LDE0LjU0TTE4LjA3LDMuOTNDMTYuNSwyLjM3IDEzLjUsMi44NCAxMS4zNSw1QzkuMjEsNy4xNCA4LjczLDEwLjE1IDEwLjI5LDExLjcxQzExLjg2LDEzLjI3IDE0Ljg2LDEyLjc5IDE3LDEwLjY1QzE5LjE2LDguNSAxOS42Myw1LjUgMTguMDcsMy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZW5uaXNCYWxsID0gXCJNMTIsMkMxNC41LDIgMTYuNzUsMi45IDE4LjUsNC40QzE2LjM2LDYuMjMgMTUsOC45NiAxNSwxMkMxNSwxNS4wNCAxNi4zNiwxNy43NyAxOC41LDE5LjZDMTYuNzUsMjEuMSAxNC41LDIyIDEyLDIyQzkuNSwyMiA3LjI1LDIxLjEgNS41LDE5LjZDNy42NCwxNy43NyA5LDE1LjA0IDksMTJDOSw4Ljk2IDcuNjQsNi4yMyA1LjUsNC40QzcuMjUsMi45IDkuNSwyIDEyLDJNMjIsMTJDMjIsMTQuMzIgMjEuMjEsMTYuNDUgMTkuODgsMTguMTVDMTguMTIsMTYuNjggMTcsMTQuNDcgMTcsMTJDMTcsOS41MyAxOC4xMiw3LjMyIDE5Ljg4LDUuODVDMjEuMjEsNy41NSAyMiw5LjY4IDIyLDEyTTIsMTJDMiw5LjY4IDIuNzksNy41NSA0LjEyLDUuODVDNS44OCw3LjMyIDcsOS41MyA3LDEyQzcsMTQuNDcgNS44OCwxNi42OCA0LjEyLDE4LjE1QzIuNzksMTYuNDUgMiwxNC4zMiAyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbnQgPSBcIk00LDZDNCw3LjE5IDQuMzksOC4yNyA1LDlBMywzIDAgMCwxIDIsNkEzLDMgMCAwLDEgNSwzQzQuMzksMy43MyA0LDQuODEgNCw2TTIsMjFWMTlINC43NkwxMiw0Ljc4TDE5LjI0LDE5SDIyVjIxSDJNMTIsOS4xOUw3LDE5SDE3TDEyLDkuMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVycmFmb3JtID0gXCJNMjEgNS40VjExLjhMMTUuNCAxNVY4LjdMMjEgNS40TTE0LjggOC43VjE1TDkuMiAxMS44VjUuNEwxNC44IDguN00xNC44IDE1LjdWMjIuMUw5LjIgMTguOVYxMi41TDE0LjggMTUuN004LjYgNS4xVjExLjVMMyA4LjNWMS45TDguNiA1LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVycmFpbiA9IFwiTTE0LDZMMTAuMjUsMTFMMTMuMSwxNC44TDExLjUsMTZDOS44MSwxMy43NSA3LDEwIDcsMTBMMSwxOEgyM0wxNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlc3RUdWJlID0gXCJNNywyVjRIOFYxOEE0LDQgMCAwLDAgMTIsMjJBNCw0IDAgMCwwIDE2LDE4VjRIMTdWMkg3TTExLDE2QzEwLjQsMTYgMTAsMTUuNiAxMCwxNUMxMCwxNC40IDEwLjQsMTQgMTEsMTRDMTEuNiwxNCAxMiwxNC40IDEyLDE1QzEyLDE1LjYgMTEuNiwxNiAxMSwxNk0xMywxMkMxMi40LDEyIDEyLDExLjYgMTIsMTFDMTIsMTAuNCAxMi40LDEwIDEzLDEwQzEzLjYsMTAgMTQsMTAuNCAxNCwxMUMxNCwxMS42IDEzLjYsMTIgMTMsMTJNMTQsN0gxMFY0SDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVzdFR1YmVFbXB0eSA9IFwiTTcsMkgxN1Y0SDE2VjE4QTQsNCAwIDAsMSAxMiwyMkE0LDQgMCAwLDEgOCwxOFY0SDdWMk0xNCw0SDEwVjE4QTIsMiAwIDAsMCAxMiwyMEEyLDIgMCAwLDAgMTQsMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXN0VHViZU9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuODQsMTkuMTFDMTUuMzYsMjAuNzcgMTMuODIsMjIgMTIsMjJBNCw0IDAgMCwxIDgsMThWMTEuMjdMMiw1LjI3TTcsMkgxN1Y0SDE2VjE0LjE4TDEzLjYzLDExLjgxQzEzLjg2LDExLjYzIDE0LDExLjM1IDE0LDExQzE0LDEwLjQgMTMuNiwxMCAxMywxMEMxMi42NSwxMCAxMi4zNywxMC4xNCAxMi4xOSwxMC4zN0w4LDYuMThWNEg3VjJNMTEsMTZDMTEuNSwxNiAxMS44OCwxNS43MSAxMiwxNS4yNEwxMC43NiwxNEMxMC4yOSwxNC4xMiAxMCwxNC41IDEwLDE1QzEwLDE1LjYgMTAuNCwxNiAxMSwxNk0xNCw3VjRIMTBWN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0ID0gXCJNMjEsNlY4SDNWNkgyMU0zLDE4SDEyVjE2SDNWMThNMywxM0gyMVYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRBY2NvdW50ID0gXCJNMjEgNVY3SDNWNUgyMU0zIDE3SDEyVjE1SDNWMTdNMyAxMkgyMVYxMEgzVjEyTTE4IDE0QzE5LjExIDE0IDIwIDE0LjkgMjAgMTZTMTkuMTEgMTggMTggMTggMTYgMTcuMTEgMTYgMTYgMTYuOSAxNCAxOCAxNE0xNCAyMlYyMUMxNCAxOS45IDE1Ljc5IDE5IDE4IDE5UzIyIDE5LjkgMjIgMjFWMjJIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveCA9IFwiTTE0LDE3SDdWMTVIMTRNMTcsMTNIN1YxMUgxN00xNyw5SDdWN0gxN00xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94Q2hlY2sgPSBcIk0xNywyMUwxNC4yNSwxOEwxNS40MSwxNi44NEwxNywxOC40M0wyMC41OSwxNC44NEwyMS43NSwxNi4yNU0xMi44LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjEyLjhDMjAuMTIsMTIuMjkgMTkuMDksMTIgMTgsMTJMMTcsMTIuMDhWMTFIN1YxM0gxNC42OUMxMy4wNywxNC4wNyAxMiwxNS45MSAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxTTEyLDE1SDdWMTdIMTJNMTcsN0g3VjlIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94Q2hlY2tPdXRsaW5lID0gXCJNMTcsMjFMMTQuMjUsMThMMTUuNDEsMTYuODRMMTcsMTguNDNMMjAuNTksMTQuODRMMjEuNzUsMTYuMjVNMTIuOCwyMUg1QzMuODksMjEgMywyMC4xMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlDMjAuMTEsMyAyMSwzLjg5IDIxLDVWMTIuOEMyMC4zOSwxMi40NSAxOS43MiwxMi4yIDE5LDEyLjA4VjVINVYxOUgxMi4wOEMxMi4yLDE5LjcyIDEyLjQ1LDIwLjM5IDEyLjgsMjFNMTIsMTdIN1YxNUgxMk0xNC42OCwxM0g3VjExSDE3VjEyLjA4QzE2LjE1LDEyLjIyIDE1LjM3LDEyLjU0IDE0LjY4LDEzTTE3LDlIN1Y3SDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE1pbnVzID0gXCJNMjIsMTdWMTlIMTRWMTdIMjJNMTIsMTdWMTVIN1YxN0gxMk0xNywxMUg3VjEzSDE0LjY5QzEzLjA3LDE0LjA3IDEyLDE1LjkxIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTIuOEMyMC4xMiwxMi4yOSAxOS4wOSwxMiAxOCwxMkwxNywxMi4wOFYxMU0xNyw5VjdIN1Y5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hNaW51c091dGxpbmUgPSBcIk0yMiwxN1YxOUgxNFYxN0gyMk01LDNIMTlDMjAuMTEsMyAyMSwzLjg5IDIxLDVWMTIuOEMyMC4zOSwxMi40NSAxOS43MiwxMi4yIDE5LDEyLjA4VjVINVYxOUgxMi4wOEMxMi4yLDE5LjcyIDEyLjQ1LDIwLjM5IDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMTEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzTTcsN0gxN1Y5SDdWN003LDExSDE3VjEyLjA4QzE2LjE1LDEyLjIyIDE1LjM3LDEyLjU0IDE0LjY4LDEzSDdWMTFNNywxNUgxMlYxN0g3VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hNdWx0aXBsZSA9IFwiTTE2LDE1SDlWMTNIMTZNMTksMTFIOVY5SDE5TTE5LDdIOVY1SDE5TTIxLDFIN0M1Ljg5LDEgNSwxLjg5IDUsM1YxN0M1LDE4LjExIDUuOSwxOSA3LDE5SDIxQzIyLjExLDE5IDIzLDE4LjExIDIzLDE3VjNDMjMsMS44OSAyMi4xLDEgMjEsMU0zLDVWMjFIMTlWMjNIM0EyLDIgMCAwLDEgMSwyMVY1SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTE2LDE1SDlWMTNIMTZWMTVNMTksMTFIOVY5SDE5VjExTTE5LDdIOVY1SDE5VjdNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdDMjMsMTguMTEgMjIuMTEsMTkgMjEsMTlIN0EyLDIgMCAwLDEgNSwxN1YzQzUsMS44OSA1Ljg5LDEgNywxSDIxTTcsM1YxN0gyMVYzSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE91dGxpbmUgPSBcIk01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlDMywyMC4xMSAzLjg5LDIxIDUsMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWNUMyMSwzLjg5IDIwLjExLDMgMTksM0g1TTUsNUgxOVYxOUg1VjVNNyw3VjlIMTdWN0g3TTcsMTFWMTNIMTdWMTFIN003LDE1VjE3SDE0VjE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveFBsdXMgPSBcIk0xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMiwxN1YxNUg3VjE3SDEyTTE3LDExSDdWMTNIMTQuNjlDMTMuMDcsMTQuMDcgMTIsMTUuOTEgMTIsMThDMTIsMTkuMDkgMTIuMjksMjAuMTIgMTIuOCwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxMi44QzIwLjEyLDEyLjI5IDE5LjA5LDEyIDE4LDEyTDE3LDEyLjA4VjExTTE3LDlWN0g3VjlIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveFBsdXNPdXRsaW5lID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNNSwzSDE5QzIwLjExLDMgMjEsMy44OSAyMSw1VjEyLjhDMjAuMzksMTIuNDUgMTkuNzIsMTIuMiAxOSwxMi4wOFY1SDVWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDVDMy44OSwyMSAzLDIwLjExIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM003LDdIMTdWOUg3VjdNNywxMUgxN1YxMi4wOEMxNi4xNSwxMi4yMiAxNS4zNywxMi41NCAxNC42OCwxM0g3VjExTTcsMTVIMTJWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94UmVtb3ZlID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNMTIsMTdWMTVIN1YxN0gxMk0xNywxMUg3VjEzSDE0LjY5QzEzLjA3LDE0LjA3IDEyLDE1LjkxIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTIuOEMyMC4xMiwxMi4yOSAxOS4wOSwxMiAxOCwxMkwxNywxMi4wOFYxMU0xNyw5VjdIN1Y5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hSZW1vdmVPdXRsaW5lID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNNSwzSDE5QzIwLjExLDMgMjEsMy44OSAyMSw1VjEyLjhDMjAuMzksMTIuNDUgMTkuNzIsMTIuMiAxOSwxMi4wOFY1SDVWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDVDMy44OSwyMSAzLDIwLjExIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM003LDdIMTdWOUg3VjdNNywxMUgxN1YxMi4wOEMxNi4xNSwxMi4yMiAxNS4zNywxMi41NCAxNC42OCwxM0g3VjExTTcsMTVIMTJWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94U2VhcmNoID0gXCJNMTUuNSwxMkMxOCwxMiAyMCwxNCAyMCwxNi41QzIwLDE3LjM4IDE5Ljc1LDE4LjIxIDE5LjMxLDE4LjlMMjIuMzksMjJMMjEsMjMuMzlMMTcuODgsMjAuMzJDMTcuMTksMjAuNzUgMTYuMzcsMjEgMTUuNSwyMUMxMywyMSAxMSwxOSAxMSwxNi41QzExLDE0IDEzLDEyIDE1LjUsMTJNMTUuNSwxNEEyLjUsMi41IDAgMCwwIDEzLDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE5QTIuNSwyLjUgMCAwLDAgMTgsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTRNNywxNVYxN0g5QzkuMTQsMTguNTUgOS44LDE5Ljk0IDEwLjgxLDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjEzLjAzQzE5Ljg1LDExLjIxIDE3LjgyLDEwIDE1LjUsMTBDMTQuMjMsMTAgMTMuMDQsMTAuMzcgMTIuMDQsMTFIN1YxM0gxMEM5LjY0LDEzLjYgOS4zNCwxNC4yOCA5LjE3LDE1SDdNMTcsOVY3SDdWOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94U2VhcmNoT3V0bGluZSA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTUsM0gxOUMyMC4xMSwzIDIxLDMuODkgMjEsNVYxMy4wM0MyMC41LDEyLjIzIDE5LjgxLDExLjU0IDE5LDExVjVINVYxOUg5LjVDOS44MSwxOS43NSAxMC4yNiwyMC40MiAxMC44MSwyMUg1QzMuODksMjEgMywyMC4xMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNNNyw3SDE3VjlIN1Y3TTcsMTFIMTIuMDNDMTEuMjMsMTEuNSAxMC41NCwxMi4xOSAxMCwxM0g3VjExTTcsMTVIOS4xN0M5LjA2LDE1LjUgOSwxNiA5LDE2LjVWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0UmVjb2duaXRpb24gPSBcIk0yIDRDMiAyLjkgMi45IDIgNCAySDhWNEg0VjhIMlY0TTIyIDIwQzIyIDIxLjExIDIxLjExIDIyIDIwIDIySDE2VjIwSDIwVjE2SDIyVjIwTTQgMjJDMi45IDIyIDIgMjEuMTEgMiAyMFYxNkg0VjIwSDhWMjJINE0yMCAyQzIxLjExIDIgMjIgMi45IDIyIDRWOEgyMFY0SDE2VjJIMjBNOSA3VjlIMTFWMTdIMTNWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNlYXJjaCA9IFwiTTE5LjMxIDE4LjlMMjIuMzkgMjJMMjEgMjMuMzlMMTcuODggMjAuMzJDMTcuMTkgMjAuNzUgMTYuMzcgMjEgMTUuNSAyMUMxMyAyMSAxMSAxOSAxMSAxNi41QzExIDE0IDEzIDEyIDE1LjUgMTJDMTggMTIgMjAgMTQgMjAgMTYuNUMyMCAxNy4zOCAxOS43NSAxOC4yMSAxOS4zMSAxOC45TTE1LjUgMTlDMTYuODggMTkgMTggMTcuODggMTggMTYuNUMxOCAxNS4xMiAxNi44OCAxNCAxNS41IDE0QzE0LjEyIDE0IDEzIDE1LjEyIDEzIDE2LjVDMTMgMTcuODggMTQuMTIgMTkgMTUuNSAxOU0yMSA0VjZIM1Y0SDIxTTMgMTZWMTRIOVYxNkgzTTMgMTFWOUgyMVYxMUgxOC45N0MxNy45NiAxMC4zNyAxNi43NyAxMCAxNS41IDEwQzE0LjIzIDEwIDEzLjA0IDEwLjM3IDEyLjAzIDExSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNoYWRvdyA9IFwiTTMsM0gxNlY2SDExVjE4SDhWNkgzVjNNMTIsN0gxNFY5SDEyVjdNMTUsN0gxN1Y5SDE1VjdNMTgsN0gyMFY5SDE4VjdNMTIsMTBIMTRWMTJIMTJWMTBNMTIsMTNIMTRWMTVIMTJWMTNNMTIsMTZIMTRWMThIMTJWMTZNMTIsMTlIMTRWMjFIMTJWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNob3J0ID0gXCJNNCw5SDIwVjExSDRWOU00LDEzSDE0VjE1SDRWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFN1YmplY3QgPSBcIk00LDVIMjBWN0g0VjVNNCw5SDIwVjExSDRWOU00LDEzSDIwVjE1SDRWMTNNNCwxN0gxNFYxOUg0VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRUb1NwZWVjaCA9IFwiTTgsN0EyLDIgMCAwLDEgMTAsOVYxNEEyLDIgMCAwLDEgOCwxNkEyLDIgMCAwLDEgNiwxNFY5QTIsMiAwIDAsMSA4LDdNMTQsMTRDMTQsMTYuOTcgMTEuODQsMTkuNDQgOSwxOS45MlYyMkg3VjE5LjkyQzQuMTYsMTkuNDQgMiwxNi45NyAyLDE0SDRBNCw0IDAgMCwwIDgsMThBNCw0IDAgMCwwIDEyLDE0SDE0TTIxLjQxLDkuNDFMMTcuMTcsMTMuNjZMMTguMTgsMTBIMTRBMiwyIDAgMCwxIDEyLDhWNEEyLDIgMCAwLDEgMTQsMkgyMEEyLDIgMCAwLDEgMjIsNFY4QzIyLDguNTUgMjEuNzgsOS4wNSAyMS40MSw5LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRUb1NwZWVjaE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTMuMzgsMTYuNjVDMTIuNTUsMTguMzUgMTAuOTMsMTkuNTkgOSwxOS45MlYyMkg3VjE5LjkyQzQuMTYsMTkuNDQgMiwxNi45NyAyLDE0SDRBNCw0IDAgMCwwIDgsMThDOS44MiwxOCAxMS4zNiwxNi43OCAxMS44NCwxNS4xMUwxMCwxMy4yN1YxNEEyLDIgMCAwLDEgOCwxNkEyLDIgMCAwLDEgNiwxNFY5LjI3TDIsNS4yN00yMS40MSw5LjQxTDE3LjE3LDEzLjY2TDE4LjE4LDEwSDE0QTIsMiAwIDAsMSAxMiw4VjRBMiwyIDAgMCwxIDE0LDJIMjBBMiwyIDAgMCwxIDIyLDRWOEMyMiw4LjU1IDIxLjc4LDkuMDUgMjEuNDEsOS40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0dXJlID0gXCJNOS4yOSwyMUgxMi4xMkwyMSwxMi4xMlY5LjI5TTE5LDIxQzE5LjU1LDIxIDIwLjA1LDIwLjc4IDIwLjQxLDIwLjQxQzIwLjc4LDIwLjA1IDIxLDE5LjU1IDIxLDE5VjE3TDE3LDIxTTUsM0EyLDIgMCAwLDAgMyw1VjdMNywzTTExLjg4LDNMMywxMS44OFYxNC43MUwxNC43MSwzTTE5LjUsMy4wOEwzLjA4LDE5LjVDMy4xNywxOS44NSAzLjM1LDIwLjE2IDMuNTksMjAuNDFDMy44NCwyMC42NSA0LjE1LDIwLjgzIDQuNSwyMC45MkwyMC45Myw0LjVDMjAuNzQsMy44IDIwLjIsMy4yNiAxOS41LDMuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dHVyZUJveCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNNCA2TDYgNEgxMC45TDQgMTAuOVY2TTQgMTMuN0wxMy43IDRIMTguNkw0IDE4LjZWMTMuN00yMCAxOEwxOCAyMEgxMy4xTDIwIDEzLjFWMThNMjAgMTAuM0wxMC4zIDIwSDUuNEwyMCA1LjRWMTAuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVhdGVyID0gXCJNNCwxNUg2QTIsMiAwIDAsMSA4LDE3VjE5SDlWMTdBMiwyIDAgMCwxIDExLDE1SDEzQTIsMiAwIDAsMSAxNSwxN1YxOUgxNlYxN0EyLDIgMCAwLDEgMTgsMTVIMjBBMiwyIDAgMCwxIDIyLDE3VjE5SDIzVjIySDFWMTlIMlYxN0EyLDIgMCAwLDEgNCwxNU0xMSw3TDE1LDEwTDExLDEzVjdNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjEzLjU0QzIxLjQxLDEzLjE5IDIwLjczLDEzIDIwLDEzVjRINFYxM0MzLjI3LDEzIDIuNTksMTMuMTkgMiwxMy41NFY0QTIsMiAwIDAsMSA0LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlbWVMaWdodERhcmsgPSBcIk03LjUsMkM1LjcxLDMuMTUgNC41LDUuMTggNC41LDcuNUM0LjUsOS44MiA1LjcxLDExLjg1IDcuNTMsMTNDNC40NiwxMyAyLDEwLjU0IDIsNy41QTUuNSw1LjUgMCAwLDEgNy41LDJNMTkuMDcsMy41TDIwLjUsNC45M0w0LjkzLDIwLjVMMy41LDE5LjA3TDE5LjA3LDMuNU0xMi44OSw1LjkzTDExLjQxLDVMOS45Nyw2TDEwLjM5LDQuM0w5LDMuMjRMMTAuNzUsMy4xMkwxMS4zMywxLjQ3TDEyLDMuMUwxMy43MywzLjEzTDEyLjM4LDQuMjZMMTIuODksNS45M005LjU5LDkuNTRMOC40Myw4LjgxTDcuMzEsOS41OUw3LjY1LDguMjdMNi41Niw3LjQ0TDcuOTIsNy4zNUw4LjM3LDYuMDZMOC44OCw3LjMzTDEwLjI0LDcuMzZMOS4xOSw4LjIzTDkuNTksOS41NE0xOSwxMy41QTUuNSw1LjUgMCAwLDEgMTMuNSwxOUMxMi4yOCwxOSAxMS4xNSwxOC42IDEwLjI0LDE3LjkzTDE3LjkzLDEwLjI0QzE4LjYsMTEuMTUgMTksMTIuMjggMTksMTMuNU0xNC42LDIwLjA4TDE3LjM3LDE4LjkzTDE3LjEzLDIyLjI4TDE0LjYsMjAuMDhNMTguOTMsMTcuMzhMMjAuMDgsMTQuNjFMMjIuMjgsMTcuMTVMMTguOTMsMTcuMzhNMjAuMDgsMTIuNDJMMTguOTQsOS42NEwyMi4yOCw5Ljg4TDIwLjA4LDEyLjQyTTkuNjMsMTguOTNMMTIuNCwyMC4wOEw5Ljg3LDIyLjI3TDkuNjMsMTguOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXIgPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVWOEgxMVY1QTEgMSAwIDAgMSAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRoZXJtb21ldGVyQWxlcnQgPSBcIk0xNyAxM1Y3SDE5VjEzSDE3TTE3IDE3VjE1SDE5VjE3SDE3TTEzIDEzVjVDMTMgMy4zIDExLjcgMiAxMCAyUzcgMy4zIDcgNVYxM0M0LjggMTQuNyA0LjMgMTcuOCA2IDIwUzEwLjggMjIuNyAxMyAyMSAxNS43IDE2LjIgMTQgMTRDMTMuNyAxMy42IDEzLjQgMTMuMyAxMyAxM00xMCA0QzEwLjYgNCAxMSA0LjQgMTEgNVY4SDlWNUM5IDQuNCA5LjQgNCAxMCA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRoZXJtb21ldGVyQ2hldnJvbkRvd24gPSBcIk0xNy40MSAxMi4xN0wxNC4yNCA5TDEyLjgzIDEwLjQxTDE3LjQxIDE1TDIyIDEwLjQxTDIwLjU4IDlNMTAgMTNWNUMxMCAzLjM0IDguNjYgMiA3IDJTNCAzLjM0IDQgNVYxM0MxLjc5IDE0LjY2IDEuMzQgMTcuNzkgMyAyMFM3Ljc5IDIyLjY2IDEwIDIxIDEyLjY2IDE2LjIxIDExIDE0QzEwLjcyIDEzLjYyIDEwLjM4IDEzLjI4IDEwIDEzTTcgNEM3LjU1IDQgOCA0LjQ1IDggNVY4SDZWNUM2IDQuNDUgNi40NSA0IDcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlckNoZXZyb25VcCA9IFwiTTE3LjQxIDExLjgzTDIwLjU4IDE1TDIyIDEzLjU5TDE3LjQxIDlMMTIuODIgMTMuNTlMMTQuMjQgMTVMMTcuNDEgMTEuODNNMTAgMTNWNUMxMCAzLjM0IDguNjYgMiA3IDJTNCAzLjM0IDQgNVYxM0MxLjc5IDE0LjY2IDEuMzQgMTcuNzkgMyAyMFM3Ljc5IDIyLjY2IDEwIDIxIDEyLjY2IDE2LjIxIDExIDE0QzEwLjcyIDEzLjYyIDEwLjM4IDEzLjI4IDEwIDEzTTcgNEM3LjU1IDQgOCA0LjQ1IDggNVY4SDZWNUM2IDQuNDUgNi40NSA0IDcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlckhpZ2ggPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVIMTFBMSAxIDAgMCAxIDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXJMaW5lcyA9IFwiTTE3IDNIMjFWNUgxN1YzTTE3IDdIMjFWOUgxN1Y3TTE3IDExSDIxVjEzSDE3Ljc1TDE3IDEyLjFWMTFNMjEgMTVWMTdIMTlDMTkgMTYuMzEgMTguOSAxNS42MyAxOC43MSAxNUgyMU03IDNWNUgzVjNIN003IDdWOUgzVjdIN003IDExVjEyLjFMNi4yNSAxM0gzVjExSDdNMyAxNUg1LjI5QzUuMSAxNS42MyA1IDE2LjMxIDUgMTdIM1YxNU0xNSAxM1Y1QzE1IDMuMzQgMTMuNjYgMiAxMiAyUzkgMy4zNCA5IDVWMTNDNi43OSAxNC42NiA2LjM0IDE3Ljc5IDggMjBTMTIuNzkgMjIuNjYgMTUgMjEgMTcuNjYgMTYuMjEgMTYgMTRDMTUuNzIgMTMuNjIgMTUuMzggMTMuMjggMTUgMTNNMTIgNEMxMi41NSA0IDEzIDQuNDUgMTMgNVY4SDExVjVDMTEgNC40NSAxMS40NSA0IDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXJMb3cgPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVWMTJIMTFWNUExIDEgMCAwIDEgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlck1pbnVzID0gXCJNMjIgMTFIMTRWMTNIMjJWMTFNMTEgMTNWNUMxMSAzLjM0IDkuNjYgMiA4IDJTNSAzLjM0IDUgNVYxM0MyLjc5IDE0LjY2IDIuMzQgMTcuNzkgNCAyMFM4Ljc5IDIyLjY2IDExIDIxIDEzLjY2IDE2LjIxIDEyIDE0QzExLjcyIDEzLjYyIDExLjM4IDEzLjI4IDExIDEzTTggNEM4LjU1IDQgOSA0LjQ1IDkgNVY4SDdWNUM3IDQuNDUgNy40NSA0IDggNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlck9mZiA9IFwiTTExIDcuOEw5IDUuOFY1QzkgMy4zNCAxMC4zNCAyIDEyIDJTMTUgMy4zNCAxNSA1VjExLjhMMTEuMiA4SDEzVjVDMTMgNC40NSAxMi41NSA0IDEyIDRTMTEgNC40NSAxMSA1VjcuOE0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDkgMTAuODlWMTNDNi43OSAxNC42NiA2LjM0IDE3Ljc5IDggMjBDOS42NiAyMi4yMSAxMi43OSAyMi42NiAxNSAyMUMxNS44NCAyMC4zNyAxNi40IDE5LjUgMTYuNzEgMTguNkwyMC44NCAyMi43M0wyMi4xMSAyMS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlclBsdXMgPSBcIk0xOSAxMVY4SDE3VjExSDE0VjEzSDE3VjE2SDE5VjEzSDIyVjExTTExIDEzVjVDMTEgMy4zNCA5LjY2IDIgOCAyUzUgMy4zNCA1IDVWMTNDMi43OSAxNC42NiAyLjM0IDE3Ljc5IDQgMjBTOC43OSAyMi42NiAxMSAyMSAxMy42NiAxNi4yMSAxMiAxNEMxMS43MiAxMy42MiAxMS4zOCAxMy4yOCAxMSAxM004IDRDOC41NSA0IDkgNC40NSA5IDVWOEg3VjVDNyA0LjQ1IDcuNDUgNCA4IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vc3RhdCA9IFwiTTE2Ljk1LDE2Ljk1TDE0LjgzLDE0LjgzQzE1LjU1LDE0LjEgMTYsMTMuMSAxNiwxMkMxNiwxMS4yNiAxNS43OSwxMC41NyAxNS40MywxMEwxNy42LDcuODFDMTguNSw5IDE5LDEwLjQzIDE5LDEyQzE5LDEzLjkzIDE4LjIyLDE1LjY4IDE2Ljk1LDE2Ljk1TTEyLDVDMTMuNTcsNSAxNSw1LjUgMTYuMTksNi40TDE0LDguNTZDMTMuNDMsOC4yMSAxMi43NCw4IDEyLDhBNCw0IDAgMCwwIDgsMTJDOCwxMy4xIDguNDUsMTQuMSA5LjE3LDE0LjgzTDcuMDUsMTYuOTVDNS43OCwxNS42OCA1LDEzLjkzIDUsMTJBNyw3IDAgMCwxIDEyLDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vc3RhdEJveCA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNINU0xMiw1QzEzLjU3LDUgMTUsNS41IDE2LjE5LDYuNEwxNCw4LjU2QzEzLjQzLDguMjEgMTIuNzQsOCAxMiw4QTQsNCAwIDAsMCA4LDEyQzgsMTMuMSA4LjQ1LDE0LjEgOS4xNywxNC44M0w3LjA1LDE2Ljk1QzUuNzgsMTUuNjggNSwxMy45MyA1LDEyQTcsNyAwIDAsMSAxMiw1TTE3LjYsNy44MUMxOC41LDkgMTksMTAuNDMgMTksMTJDMTksMTMuOTMgMTguMjIsMTUuNjggMTYuOTUsMTYuOTVMMTQuODMsMTQuODNDMTUuNTUsMTQuMSAxNiwxMy4xIDE2LDEyQzE2LDExLjI2IDE1Ljc5LDEwLjU3IDE1LjQzLDEwTDE3LjYsNy44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaG91Z2h0QnViYmxlID0gXCJNMy41LDE5QTEuNSwxLjUgMCAwLDEgNSwyMC41QTEuNSwxLjUgMCAwLDEgMy41LDIyQTEuNSwxLjUgMCAwLDEgMiwyMC41QTEuNSwxLjUgMCAwLDEgMy41LDE5TTguNSwxNkEyLjUsMi41IDAgMCwxIDExLDE4LjVBMi41LDIuNSAwIDAsMSA4LjUsMjFBMi41LDIuNSAwIDAsMSA2LDE4LjVBMi41LDIuNSAwIDAsMSA4LjUsMTZNMTQuNSwxNUMxMy4zMSwxNSAxMi4yMywxNC41IDExLjUsMTMuNjVDMTAuNzcsMTQuNSA5LjY5LDE1IDguNSwxNUM2LjU0LDE1IDQuOTEsMTMuNTkgNC41NywxMS43NEMzLjA3LDExLjE2IDIsOS43IDIsOEE0LDQgMCAwLDEgNiw0QzYuMjYsNCA2LjUsNC4wMyA2Ljc3LDQuMDdDNy41LDMuNDEgOC40NSwzIDkuNSwzQzEwLjY5LDMgMTEuNzcsMy41IDEyLjUsNC4zNUMxMy4yMywzLjUgMTQuMzEsMyAxNS41LDNDMTcuNDYsMyAxOS4wOSw0LjQxIDE5LjQzLDYuMjZDMjAuOTMsNi44NCAyMiw4LjMgMjIsMTBBNCw0IDAgMCwxIDE4LDE0TDE3LjIzLDEzLjkzQzE2LjUsMTQuNTkgMTUuNTUsMTUgMTQuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaG91Z2h0QnViYmxlT3V0bGluZSA9IFwiTTMuNSwxOUExLjUsMS41IDAgMCwxIDUsMjAuNUExLjUsMS41IDAgMCwxIDMuNSwyMkExLjUsMS41IDAgMCwxIDIsMjAuNUExLjUsMS41IDAgMCwxIDMuNSwxOU04LjUsMTZBMi41LDIuNSAwIDAsMSAxMSwxOC41QTIuNSwyLjUgMCAwLDEgOC41LDIxQTIuNSwyLjUgMCAwLDEgNiwxOC41QTIuNSwyLjUgMCAwLDEgOC41LDE2TTE0LjUsMTVDMTMuMzEsMTUgMTIuMjMsMTQuNSAxMS41LDEzLjY1QzEwLjc3LDE0LjUgOS42OSwxNSA4LjUsMTVDNi41NCwxNSA0LjkxLDEzLjU5IDQuNTcsMTEuNzRDMy4wNywxMS4xNiAyLDkuNyAyLDhBNCw0IDAgMCwxIDYsNEw2Ljc3LDQuMDdDNy41LDMuNDEgOC40NSwzIDkuNSwzQzEwLjY5LDMgMTEuNzcsMy41IDEyLjUsNC4zNUMxMy4yMywzLjUgMTQuMzEsMyAxNS41LDNDMTcuNDYsMyAxOS4wOSw0LjQxIDE5LjQzLDYuMjZDMjAuOTMsNi44NCAyMiw4LjMgMjIsMTBBNCw0IDAgMCwxIDE4LDE0TDE3LjIzLDEzLjkzQzE2LjUsMTQuNTkgMTUuNTUsMTUgMTQuNSwxNU02LDZBMiwyIDAgMCwwIDQsOEEyLDIgMCAwLDAgNiwxMEM2LjMzLDEwIDYuNjQsOS45MiA2LjkyLDkuNzhDNi42NiwxMC4xMiA2LjUsMTAuNTQgNi41LDExQTIsMiAwIDAsMCA4LjUsMTNDOS4xLDEzIDkuNjQsMTIuNzMgMTAsMTIuMzFWMTIuMzFMMTEuNDcsMTAuNjNMMTMsMTIuMzRWMTIuMzRDMTMuMzgsMTIuNzQgMTMuOTEsMTMgMTQuNSwxM0MxNS41LDEzIDE2LjMzLDEyLjI2IDE2LjUsMTEuM0MxNi44NCwxMS43MyAxNy4zOSwxMiAxOCwxMkEyLDIgMCAwLDAgMjAsMTBBMiwyIDAgMCwwIDE4LDhDMTcuNjcsOCAxNy4zNiw4LjA4IDE3LjA4LDguMjJDMTcuMzQsNy44OCAxNy41LDcuNDYgMTcuNSw3QTIsMiAwIDAsMCAxNS41LDVDMTQuOTEsNSAxNC4zOCw1LjI2IDE0LDUuNjZMMTIuNDcsNy4zN0wxMSw1LjY5VjUuNjlDMTAuNjQsNS4yNyAxMC4xLDUgOS41LDVDOC41LDUgNy42Nyw1Ljc0IDcuNSw2LjdDNy4xNiw2LjI3IDYuNjEsNiA2LDZNOC41LDE3LjVBMSwxIDAgMCwwIDcuNSwxOC41QTEsMSAwIDAsMCA4LjUsMTkuNUExLDEgMCAwLDAgOS41LDE4LjVBMSwxIDAgMCwwIDguNSwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iRG93biA9IFwiTTE5LDE1SDIzVjNIMTlNMTUsM0g2QzUuMTcsMyA0LjQ2LDMuNSA0LjE2LDQuMjJMMS4xNCwxMS4yN0MxLjA1LDExLjUgMSwxMS43NCAxLDEyVjE0QTIsMiAwIDAsMCAzLDE2SDkuMzFMOC4zNiwyMC41N0M4LjM0LDIwLjY3IDguMzMsMjAuNzcgOC4zMywyMC44OEM4LjMzLDIxLjMgOC41LDIxLjY3IDguNzcsMjEuOTRMOS44MywyM0wxNi40MSwxNi40MUMxNi43OCwxNi4wNSAxNywxNS41NSAxNywxNVY1QzE3LDMuODkgMTYuMSwzIDE1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGh1bWJEb3duT3V0bGluZSA9IFwiTTE5LDE1VjNIMjNWMTVIMTlNMTUsM0EyLDIgMCAwLDEgMTcsNVYxNUMxNywxNS41NSAxNi43OCwxNi4wNSAxNi40MSwxNi40MUw5LjgzLDIzTDguNzcsMjEuOTRDOC41LDIxLjY3IDguMzMsMjEuMyA4LjMzLDIwLjg4TDguMzYsMjAuNTdMOS4zMSwxNkgzQzEuODksMTYgMSwxNS4xIDEsMTRWMTJDMSwxMS43NCAxLjA1LDExLjUgMS4xNCwxMS4yN0w0LjE2LDQuMjJDNC40NiwzLjUgNS4xNywzIDYsM0gxNU0xNSw1SDUuOTdMMywxMlYxNEgxMS43OEwxMC42NSwxOS4zMkwxNSwxNC45N1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iVXAgPSBcIk0yMywxMEMyMyw4Ljg5IDIyLjEsOCAyMSw4SDE0LjY4TDE1LjY0LDMuNDNDMTUuNjYsMy4zMyAxNS42NywzLjIyIDE1LjY3LDMuMTFDMTUuNjcsMi43IDE1LjUsMi4zMiAxNS4yMywyLjA1TDE0LjE3LDFMNy41OSw3LjU4QzcuMjIsNy45NSA3LDguNDUgNyw5VjE5QTIsMiAwIDAsMCA5LDIxSDE4QzE4LjgzLDIxIDE5LjU0LDIwLjUgMTkuODQsMTkuNzhMMjIuODYsMTIuNzNDMjIuOTUsMTIuNSAyMywxMi4yNiAyMywxMlYxME0xLDIxSDVWOUgxVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iVXBPdXRsaW5lID0gXCJNNSw5VjIxSDFWOUg1TTksMjFBMiwyIDAgMCwxIDcsMTlWOUM3LDguNDUgNy4yMiw3Ljk1IDcuNTksNy41OUwxNC4xNywxTDE1LjIzLDIuMDZDMTUuNSwyLjMzIDE1LjY3LDIuNyAxNS42NywzLjExTDE1LjY0LDMuNDNMMTQuNjksOEgyMUMyMi4xMSw4IDIzLDguOSAyMywxMFYxMkMyMywxMi4yNiAyMi45NSwxMi41IDIyLjg2LDEyLjczTDE5Ljg0LDE5Ljc4QzE5LjU0LDIwLjUgMTguODMsMjEgMTgsMjFIOU05LDE5SDE4LjAzTDIxLDEyVjEwSDEyLjIxTDEzLjM0LDQuNjhMOSw5LjAzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1ic1VwRG93biA9IFwiTTIyLjUsMTBIMTUuNzVDMTUuMTMsMTAgMTQuNiwxMC4zOCAxNC4zNywxMC45MUwxMi4xMSwxNi4yQzEyLjA0LDE2LjM3IDEyLDE2LjU2IDEyLDE2Ljc1VjE4QTEsMSAwIDAsMCAxMywxOUgxOC4xOEwxNy41LDIyLjE4VjIyLjQyQzE3LjUsMjIuNzMgMTcuNjMsMjMgMTcuODMsMjMuMjJMMTguNjIsMjRMMjMuNTYsMTkuMDZDMjMuODMsMTguNzkgMjQsMTguNDEgMjQsMThWMTEuNUExLjUsMS41IDAgMCwwIDIyLjUsMTBNMTIsNkExLDEgMCAwLDAgMTEsNUg1LjgyTDYuNSwxLjgyVjEuNTlDNi41LDEuMjggNi4zNywxIDYuMTcsMC43OUw1LjM4LDBMMC40NCw0Ljk0QzAuMTcsNS4yMSAwLDUuNTkgMCw2VjEyLjVBMS41LDEuNSAwIDAsMCAxLjUsMTRIOC4yNUM4Ljg3LDE0IDkuNCwxMy42MiA5LjYzLDEzLjA5TDExLjg5LDcuOEMxMS45Niw3LjYzIDEyLDcuNDQgMTIsNy4yNVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpY2tldCA9IFwiTTE1LjU4LDE2LjhMMTIsMTQuNUw4LjQyLDE2LjhMOS41LDEyLjY4TDYuMjEsMTBMMTAuNDYsOS43NEwxMiw1LjhMMTMuNTQsOS43NEwxNy43OSwxMEwxNC41LDEyLjY4TTIwLDEyQzIwLDEwLjg5IDIwLjksMTAgMjIsMTBWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRBMiwyIDAgMCwwIDIsNlYxMEMzLjExLDEwIDQsMTAuOSA0LDEyQTIsMiAwIDAsMSAyLDE0VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFYxNEEyLDIgMCAwLDEgMjAsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlja2V0QWNjb3VudCA9IFwiTTIwLDEyQTIsMiAwIDAsMCAyMiwxNFYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFYxNEMzLjExLDE0IDQsMTMuMSA0LDEyQTIsMiAwIDAsMCAyLDEwVjZDMiw0Ljg5IDIuOSw0IDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxMEEyLDIgMCAwLDAgMjAsMTJNMTYuNSwxNi4yNUMxNi41LDE0Ljc1IDEzLjUsMTQgMTIsMTRDMTAuNSwxNCA3LjUsMTQuNzUgNy41LDE2LjI1VjE3SDE2LjVWMTYuMjVNMTIsMTIuMjVBMi4yNSwyLjI1IDAgMCwwIDE0LjI1LDEwQTIuMjUsMi4yNSAwIDAsMCAxMiw3Ljc1QTIuMjUsMi4yNSAwIDAsMCA5Ljc1LDEwQTIuMjUsMi4yNSAwIDAsMCAxMiwxMi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRDb25maXJtYXRpb24gPSBcIk0xMyw4LjVIMTFWNi41SDEzVjguNU0xMywxM0gxMVYxMUgxM1YxM00xMywxNy41SDExVjE1LjVIMTNWMTcuNU0yMiwxMFY2QzIyLDQuODkgMjEuMSw0IDIwLDRINEEyLDIgMCAwLDAgMiw2VjEwQzMuMTEsMTAgNCwxMC45IDQsMTJBMiwyIDAgMCwxIDIsMTRWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjE0QTIsMiAwIDAsMSAyMCwxMkEyLDIgMCAwLDEgMjIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlja2V0Q29uZmlybWF0aW9uT3V0bGluZSA9IFwiTTIyIDEwVjZDMjIgNC44OSAyMS4xIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMTBDMy4xMSAxMCA0IDEwLjkgNCAxMlMzLjExIDE0IDIgMTRWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFYxNEMyMC45IDE0IDIwIDEzLjEgMjAgMTJTMjAuOSAxMCAyMiAxME0yMCA4LjU0QzE4LjgxIDkuMjMgMTggMTAuNTMgMTggMTJTMTguODEgMTQuNzcgMjAgMTUuNDZWMThINFYxNS40NkM1LjE5IDE0Ljc3IDYgMTMuNDcgNiAxMkM2IDEwLjUgNS4yIDkuMjMgNCA4LjU0TDQgNkgyMFY4LjU0TTExIDE1SDEzVjE3SDExTTExIDExSDEzVjEzSDExTTExIDdIMTNWOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRPdXRsaW5lID0gXCJNNCw0QTIsMiAwIDAsMCAyLDZWMTBBMiwyIDAgMCwxIDQsMTJBMiwyIDAgMCwxIDIsMTRWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjE0QTIsMiAwIDAsMSAyMCwxMkEyLDIgMCAwLDEgMjIsMTBWNkEyLDIgMCAwLDAgMjAsNEg0TTQsNkgyMFY4LjU0QzE4Ljc2LDkuMjUgMTgsMTAuNTcgMTgsMTJDMTgsMTMuNDMgMTguNzYsMTQuNzUgMjAsMTUuNDZWMThINFYxNS40NkM1LjI0LDE0Ljc1IDYsMTMuNDMgNiwxMkM2LDEwLjU3IDUuMjQsOS4yNSA0LDguNTRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRQZXJjZW50ID0gXCJNNCw0QTIsMiAwIDAsMCAyLDZWMTBDMy4xMSwxMCA0LDEwLjkgNCwxMkEyLDIgMCAwLDEgMiwxNFYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWMTRBMiwyIDAgMCwxIDIwLDEyQzIwLDEwLjg5IDIwLjksMTAgMjIsMTBWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRNMTUuNSw3TDE3LDguNUw4LjUsMTdMNywxNS41TDE1LjUsN004LjgxLDcuMDRDOS43OSw3LjA0IDEwLjU4LDcuODMgMTAuNTgsOC44MUExLjc3LDEuNzcgMCAwLDEgOC44MSwxMC41OEM3LjgzLDEwLjU4IDcuMDQsOS43OSA3LjA0LDguODFBMS43NywxLjc3IDAgMCwxIDguODEsNy4wNE0xNS4xOSwxMy40MkMxNi4xNywxMy40MiAxNi45NiwxNC4yMSAxNi45NiwxNS4xOUExLjc3LDEuNzcgMCAwLDEgMTUuMTksMTYuOTZDMTQuMjEsMTYuOTYgMTMuNDIsMTYuMTcgMTMuNDIsMTUuMTlBMS43NywxLjc3IDAgMCwxIDE1LjE5LDEzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpY2tldFBlcmNlbnRPdXRsaW5lID0gXCJNMTQuOCA4TDE2IDkuMkw5LjIgMTZMOCAxNC44TDE0LjggOE00IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTBDMjAuOSAxMCAyMCAxMC45IDIwIDEyQzIwIDEzLjExIDIwLjkgMTQgMjIgMTRWMThDMjIgMTkuMTEgMjEuMTEgMjAgMjAgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjE0QzMuMTEgMTQgNCAxMy4xMSA0IDEyQzQgMTAuOSAzLjExIDEwIDIgMTBWNkMyIDQuODkgMi45IDQgNCA0TTQgNlY4LjU0QzUuMjQgOS4yNiA2IDEwLjU3IDYgMTJDNiAxMy40MyA1LjI0IDE0Ljc1IDQgMTUuNDZWMThIMjBWMTUuNDZDMTguNzYgMTQuNzUgMTggMTMuNDMgMTggMTJDMTggMTAuNTcgMTguNzYgOS4yNiAyMCA4LjU0VjZINE05LjUgOEMxMC4zMyA4IDExIDguNjcgMTEgOS41QzExIDEwLjMzIDEwLjMzIDExIDkuNSAxMUM4LjY3IDExIDggMTAuMzMgOCA5LjVDOCA4LjY3IDguNjcgOCA5LjUgOE0xNC41IDEzQzE1LjMzIDEzIDE2IDEzLjY3IDE2IDE0LjVDMTYgMTUuMzMgMTUuMzMgMTYgMTQuNSAxNkMxMy42NyAxNiAxMyAxNS4zMyAxMyAxNC41QzEzIDEzLjY3IDEzLjY3IDEzIDE0LjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGllID0gXCJNNiwyTDEwLDZMNywxN0wxMiwyMkwxNywxN0wxNCw2TDE4LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlsZGUgPSBcIk0yLDE1QzIsMTUgMiw5IDgsOUMxMiw5IDEyLjUsMTIuNSAxNS41LDEyLjVDMTkuNSwxMi41IDE5LjUsOSAxOS41LDlIMjJDMjIsOSAyMiwxNSAxNiwxNUMxMiwxNSAxMC41LDExLjUgOC41LDExLjVDNC41LDExLjUgNC41LDE1IDQuNSwxNUgyXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxhcHNlID0gXCJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNi4yNCw3Ljc2QzE1LjA3LDYuNTggMTMuNTMsNiAxMiw2VjEyTDcuNzYsMTYuMjRDMTAuMSwxOC41OCAxMy45LDE4LjU4IDE2LjI0LDE2LjI0QzE4LjU5LDEzLjkgMTguNTksMTAuMSAxNi4yNCw3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUFsZXJ0ID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xNSA3VjEzSDE3VjdIMTVNMTUgMTVWMTdIMTdWMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVBbGVydE91dGxpbmUgPSBcIk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk01IDEyQzUgMTMuMTEgNC4xMSAxNCAzIDE0QzEuOSAxNCAxIDEzLjExIDEgMTJDMSAxMC45IDEuOSAxMCAzIDEwQzQuMTEgMTAgNSAxMC45IDUgMTJNMjQgNlYxOEMyNCAxOS4xMSAyMy4xMSAyMCAyMiAyMEgxMEM4LjkgMjAgOCAxOS4xMSA4IDE4VjE0TDYgMTJMOCAxMFY2QzggNC44OSA4LjkgNCAxMCA0SDIyQzIzLjExIDQgMjQgNC44OSAyNCA2TTEwIDZWMThIMjJWNkgxME0xNSA3SDE3VjEzSDE1VjdNMTUgMTVIMTdWMTdIMTVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVDaGVjayA9IFwiTTQgOEgyVjJINFY4TTIgMjJINFYxNkgyVjIyTTMgMTBDMS45IDEwIDEgMTAuOSAxIDEyQzEgMTMuMTEgMS45IDE0IDMgMTRDNC4xMSAxNCA1IDEzLjExIDUgMTJDNSAxMC45IDQuMTEgMTAgMyAxME0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTkuNzUgMTAuMzNMMTguNTkgOC45MkwxNSAxMi41TDEzLjQxIDEwLjkyTDEyLjI1IDEyLjA4TDE1IDE1LjA4TDE5Ljc1IDEwLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lQ2hlY2tPdXRsaW5lID0gXCJNMjIgNEgxMEM4LjkgNCA4IDQuODkgOCA2VjEwTDYgMTJMOCAxNFYxOEM4IDE5LjExIDguOSAyMCAxMCAyMEgyMkMyMy4xMSAyMCAyNCAxOS4xMSAyNCAxOFY2QzI0IDQuODkgMjMuMTEgNCAyMiA0TTIyIDE4SDEwVjZIMjJWMThNNCA4SDJWMkg0VjhNMiAxNkg0VjIySDJWMTZNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE1IDE1LjA4TDEyLjI1IDEyLjA4TDEzLjQxIDEwLjkyTDE1IDEyLjVMMTguNTkgOC45MkwxOS43NSAxMC4zM0wxNSAxNS4wOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUNsb2NrID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE2IDRDMjAuNDIgNCAyNCA3LjU4IDI0IDEyQzI0IDE2LjQyIDIwLjQyIDIwIDE2IDIwQzEyLjQgMjAgOS4zNiAxNy42MiA4LjM1IDE0LjM1TDYgMTJMOC4zNSA5LjY1QzkuMzYgNi4zOCAxMi40IDQgMTYgNE0xNSAxM0wxOS41MyAxNS43OUwyMC4zMyAxNC41TDE2LjUgMTIuMlY3SDE1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lQ2xvY2tPdXRsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE2IDRDMjAuNDIgNCAyNCA3LjU4IDI0IDEyQzI0IDE2LjQyIDIwLjQyIDIwIDE2IDIwQzEyLjQgMjAgOS4zNiAxNy42MiA4LjM1IDE0LjM1TDYgMTJMOC4zNSA5LjY1QzkuMzYgNi4zOCAxMi40IDQgMTYgNE0xNiA2QzEyLjY5IDYgMTAgOC42OSAxMCAxMkMxMCAxNS4zMSAxMi42OSAxOCAxNiAxOEMxOS4zMSAxOCAyMiAxNS4zMSAyMiAxMkMyMiA4LjY5IDE5LjMxIDYgMTYgNk0xNSAxM1Y4SDE2LjVWMTIuMkwxOS41IDE0TDE4LjY4IDE1LjI2TDE1IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lSGVscCA9IFwiTTQgMlY4SDJWMkg0TTIgMjJWMTZINFYyMkgyTTUgMTJDNSAxMy4xMSA0LjExIDE0IDMgMTRDMS45IDE0IDEgMTMuMTEgMSAxMkMxIDEwLjkgMS45IDEwIDMgMTBDNC4xMSAxMCA1IDEwLjkgNSAxMk0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTYuNSAxNS41SDE1VjE3SDE2LjVWMTUuNU0xNC41IDEwLjVWMTBDMTQuNSA5LjE3IDE1LjE3IDguNSAxNiA4LjVDMTYuODMgOC41IDE3LjUgOS4xOCAxNy41IDEwQzE3LjUgMTAuNDcgMTcuMjcgMTAuOSAxNi44OCAxMS4xNkwxNi41OSAxMS4zNUMxNS42IDEyIDE1IDEzLjExIDE1IDE0LjNWMTQuNUgxNi41VjE0LjNDMTYuNSAxMy42MiAxNi44NCAxMyAxNy40MSAxMi42TDE3LjcxIDEyLjQxQzE4LjUgMTEuODggMTkgMTAuOTcgMTkgMTBDMTkgOC4zNCAxNy42NiA3IDE2IDdDMTQuMzQgNyAxMyA4LjM0IDEzIDEwVjEwLjVIMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUhlbHBPdXRsaW5lID0gXCJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTQgMlY4SDJWMkg0TTIgMjJWMTZINFYyMkgyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjEwLjgzTDguODMgMTJMMTAgMTMuMTdWMThIMjJWNk0xNi41IDE1LjVWMTdIMTVWMTUuNUgxNi41TTE0LjUgMTAuNUgxM1YxMEMxMyA4LjM0IDE0LjM0IDcgMTYgN0MxNy42NiA3IDE5IDguMzQgMTkgMTBDMTkgMTAuOTcgMTguNSAxMS44OCAxNy43MSAxMi40MUwxNy40MSAxMi42QzE2Ljg0IDEzIDE2LjUgMTMuNjIgMTYuNSAxNC4zVjE0LjVIMTVWMTQuM0MxNSAxMy4xMSAxNS42IDEyIDE2LjU5IDExLjM1TDE2Ljg4IDExLjE2QzE3LjI3IDEwLjkgMTcuNSAxMC40NyAxNy41IDEwQzE3LjUgOS4xOCAxNi44MyA4LjUgMTYgOC41QzE1LjE3IDguNSAxNC41IDkuMTcgMTQuNSAxMFYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lTWludXMgPSBcIk00IDhIMlYySDRWOE0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMjAgMTFIMTJWMTNIMjBWMTFNMiAyMkg0VjE2SDJWMjJNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lTWludXNPdXRsaW5lID0gXCJNMiAxNkg0VjIySDJWMTZNNCAySDJWOEg0VjJNMjAgMTFIMTJWMTNIMjBWMTFNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjE4SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVPdXRsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xMCA2VjE4SDIyVjZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVQbHVzID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMCAxMUgxN1Y4SDE1VjExSDEyVjEzSDE1VjE2SDE3VjEzSDIwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUGx1c091dGxpbmUgPSBcIk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk01IDEyQzUgMTMuMTEgNC4xMSAxNCAzIDE0QzEuOSAxNCAxIDEzLjExIDEgMTJDMSAxMC45IDEuOSAxMCAzIDEwQzQuMTEgMTAgNSAxMC45IDUgMTJNMjAgMTFWMTNIMTdWMTZIMTVWMTNIMTJWMTFIMTVWOEgxN1YxMUgyME0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTAgNlYxOEgyMlY2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUmVtb3ZlID0gXCJNNCA4SDJWMkg0VjhNMiAyMkg0VjE2SDJWMjJNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xNy40MSAxMkwxOS41MyA5Ljg4TDE4LjEyIDguNDdMMTYgMTAuNTlMMTMuODggOC40N0wxMi40NyA5Ljg4TDE0LjU5IDEyTDEyLjQ3IDE0LjEyTDEzLjg4IDE1LjUzTDE2IDEzLjQxTDE4LjEyIDE1LjUzTDE5LjUzIDE0LjEyTDE3LjQxIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUmVtb3ZlT3V0bGluZSA9IFwiTTQgOEgyVjJINFY4TTIgMjJINFYxNkgyVjIyTTMgMTBDMS45IDEwIDEgMTAuOSAxIDEyQzEgMTMuMTEgMS45IDE0IDMgMTRDNC4xMSAxNCA1IDEzLjExIDUgMTJDNSAxMC45IDQuMTEgMTAgMyAxME0xMy44OCAxNS41NEwxNiAxMy40MUwxOC4xMiAxNS41M0wxOS41MyAxNC4xMkwxNy40MSAxMkwxOS41MyA5Ljg4TDE4LjEyIDguNDdMMTYgMTAuNTlMMTMuODggOC40N0wxMi40NyA5Ljg4TDE0LjU5IDEyTDEyLjQ3IDE0LjEyTDEzLjg4IDE1LjU0TTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjE4SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVUZXh0ID0gXCJNNCAyVjhIMlYySDRNMiAyMkg0VjE2SDJWMjJNNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwQzEuOSAxMCAxIDEwLjkgMSAxMkMxIDEzLjExIDEuOSAxNCAzIDE0QzQuMTEgMTQgNSAxMy4xMSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xOSAxM0gxMVYxNUgxOVYxM00yMSA5SDExVjExSDIxVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVUZXh0T3V0bGluZSA9IFwiTTUgMTJDNSAxMy4xMSA0LjExIDE0IDMgMTRDMS45IDE0IDEgMTMuMTEgMSAxMkMxIDEwLjkgMS45IDEwIDMgMTBDNC4xMSAxMCA1IDEwLjkgNSAxMk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMjIgNkgxMFYxMC44M0w4LjgzIDEyTDEwIDEzLjE3VjE4SDIyVjZNMTIgOUgyMFYxMUgxMlY5TTEyIDEzSDE4VjE1SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVyID0gXCJNMTkuMDMgNy4zOUwyMC40NSA1Ljk3QzIwIDUuNDYgMTkuNTUgNSAxOS4wNCA0LjU2TDE3LjYyIDZDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRDNy4wMyA0IDMgOC4wMyAzIDEzUzcuMDMgMjIgMTIgMjJDMTcgMjIgMjEgMTcuOTcgMjEgMTNDMjEgMTAuODggMjAuMjYgOC45MyAxOS4wMyA3LjM5TTEzIDE0SDExVjdIMTNWMTRNMTUgMUg5VjNIMTVWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lcjEwID0gXCJNMTIuOSwxMy4yMkMxMi45LDEzLjgyIDEyLjg2LDE0LjMzIDEyLjc4LDE0Ljc1QzEyLjcsMTUuMTcgMTIuNTgsMTUuNSAxMi40MiwxNS43N0MxMi4yNiwxNi4wMyAxMi4wNiwxNi4yMiAxMS44MywxNi4zNEMxMS42LDE2LjQ2IDExLjMyLDE2LjUgMTEsMTYuNUMxMC43MSwxNi41IDEwLjQzLDE2LjQ2IDEwLjE5LDE2LjM0QzkuOTUsMTYuMjIgOS43NSwxNi4wMyA5LjU5LDE1Ljc3QzkuNDMsMTUuNSA5LjMsMTUuMTcgOS4yMSwxNC43NUM5LjEyLDE0LjMzIDkuMDgsMTMuODIgOS4wOCwxMy4yMlYxMC43MkM5LjA4LDEwLjEyIDkuMTIsOS42MSA5LjIxLDkuMkM5LjMsOC43OSA5LjQyLDguNDYgOS41OSw4LjJDOS43NSw3Ljk1IDkuOTUsNy43NyAxMC4xOSw3LjY1QzEwLjQzLDcuNTQgMTAuNyw3LjUgMTEsNy41QzExLjMxLDcuNSAxMS41OCw3LjU0IDExLjgxLDcuNjVDMTIuMDUsNy43NiAxMi4yNSw3Ljk0IDEyLjQxLDguMkMxMi41Nyw4LjQ1IDEyLjcsOC43OCAxMi43OCw5LjE5QzEyLjg2LDkuNiAxMi45MSwxMC4xMSAxMi45MSwxMC43MVYxMy4yMk0xMy44Miw3LjA1QzEzLjUsNi42NSAxMy4wNyw2LjM1IDEyLjU5LDYuMTdDMTIuMTIsNiAxMS41OCw1LjkgMTEsNS45QzEwLjQyLDUuOSA5Ljg5LDYgOS40MSw2LjE3QzguOTMsNi4zNSA4LjUsNi42NCA4LjE4LDcuMDVDNy44NCw3LjQ2IDcuNTgsOCA3LjM5LDguNjRDNy4yMSw5LjI5IDcuMTEsMTAuMDkgNy4xMSwxMS4wM1YxMi45NUM3LjExLDEzLjg5IDcuMiwxNC42OSA3LjM5LDE1LjM0QzcuNTgsMTYgNy44NCwxNi41MyA4LjE5LDE2Ljk0QzguNTMsMTcuMzUgOC45NCwxNy42NSA5LjQyLDE3LjgzQzkuOSwxOCAxMC40MywxOC4xMSAxMSwxOC4xMUMxMS42LDE4LjExIDEyLjEzLDE4IDEyLjYsMTcuODNDMTMuMDgsMTcuNjUgMTMuNSwxNy4zNSAxMy44MiwxNi45NEMxNC4xNiwxNi41MyAxNC40MiwxNiAxNC42LDE1LjM0QzE0Ljc4LDE0LjY5IDE0Ljg4LDEzLjg5IDE0Ljg4LDEyLjk1VjExLjAzQzE0Ljg4LDEwLjA5IDE0Ljc5LDkuMjkgMTQuNiw4LjY0QzE0LjQyLDggMTQuMTYsNy40NSAxMy44Miw3LjA1TTIzLjc4LDE0LjM3QzIzLjY0LDE0LjA5IDIzLjQzLDEzLjg0IDIzLjE1LDEzLjYzQzIyLjg3LDEzLjQyIDIyLjU0LDEzLjI0IDIyLjE0LDEzLjFDMjEuNzQsMTIuOTYgMjEuMjksMTIuODMgMjAuNzksMTIuNzJDMjAuNDQsMTIuNjUgMjAuMTUsMTIuNTcgMTkuOTIsMTIuNUMxOS42OSwxMi40MSAxOS41LDEyLjMzIDE5LjM3LDEyLjI0QzE5LjIzLDEyLjE1IDE5LjE0LDEyLjA1IDE5LjA5LDExLjk0QzE5LjA0LDExLjgzIDE5LDExLjcgMTksMTEuNTVDMTksMTEuNDEgMTkuMDQsMTEuMjcgMTkuMSwxMS4xNEMxOS4xNiwxMSAxOS4yNSwxMC44OSAxOS4zNywxMC44QzE5LjUsMTAuNyAxOS42NCwxMC42MiAxOS44MiwxMC41NkMyMCwxMC41IDIwLjIyLDEwLjQ3IDIwLjQ2LDEwLjQ3QzIwLjcxLDEwLjQ3IDIwLjkzLDEwLjUgMjEuMTIsMTAuNThDMjEuMzEsMTAuNjUgMjEuNDcsMTAuNzUgMjEuNiwxMC44N0MyMS43MywxMSAyMS44MiwxMS4xMyAyMS44OSwxMS4yOUMyMS45NSwxMS40NSAyMiwxMS42MSAyMiwxMS43OEgyMy45NEMyMy45NCwxMS4zOSAyMy44NiwxMS4wMyAyMy43LDEwLjY5QzIzLjU0LDEwLjM1IDIzLjMxLDEwLjA2IDIzLDkuODFDMjIuNzEsOS41NiAyMi4zNSw5LjM3IDIxLjkyLDkuMjJDMjEuNSw5LjA3IDIxLDkgMjAuNDYsOUMxOS45NSw5IDE5LjUsOS4wNyAxOS4wNyw5LjIxQzE4LjY2LDkuMzUgMTguMyw5LjU0IDE4LDkuNzhDMTcuNzIsMTAgMTcuNSwxMC4zIDE3LjM0LDEwLjYyQzE3LjE4LDEwLjk0IDE3LjExLDExLjI3IDE3LjExLDExLjYzQzE3LjExLDEyIDE3LjE5LDEyLjMyIDE3LjM0LDEyLjU5QzE3LjUsMTIuODcgMTcuNywxMy4xMSAxOCwxMy4zMkMxOC4yNSwxMy41MyAxOC41OCwxMy43IDE4Ljk2LDEzLjg1QzE5LjM0LDE0IDE5Ljc3LDE0LjExIDIwLjIzLDE0LjIxQzIwLjYyLDE0LjI5IDIwLjk0LDE0LjM4IDIxLjE4LDE0LjQ3QzIxLjQyLDE0LjU2IDIxLjYxLDE0LjY2IDIxLjc1LDE0Ljc2QzIxLjg4LDE0Ljg2IDIxLjk3LDE1IDIyLDE1LjFDMjIuMDcsMTUuMjIgMjIuMDksMTUuMzUgMjIuMDksMTUuNUMyMi4wOSwxNS44MSAyMS45NiwxNi4wNiAyMS42OSwxNi4yNkMyMS40MiwxNi40NiAyMS4wMywxNi41NSAyMC41LDE2LjU1QzIwLjMsMTYuNTUgMjAuMDksMTYuNTMgMTkuODgsMTYuNDdDMTkuNjcsMTYuNDIgMTkuNSwxNi4zNCAxOS4zMiwxNi4yM0MxOS4xNSwxNi4xMiAxOSwxNS45NyAxOC45MSwxNS43OUMxOC44LDE1LjYxIDE4Ljc0LDE1LjM4IDE4LjczLDE1LjEySDE2Ljg0QzE2Ljg0LDE1LjUgMTYuOTIsMTUuODMgMTcuMDgsMTYuMTdDMTcuMjQsMTYuNSAxNy40NywxNi44MiAxNy43OCwxNy4xQzE4LjA5LDE3LjM3IDE4LjQ3LDE3LjU5IDE4LjkzLDE3Ljc2QzE5LjM5LDE3LjkzIDE5LjkxLDE4IDIwLjUsMThDMjEuMDQsMTggMjEuNSwxNy45NSAyMS45NSwxNy44MkMyMi4zOCwxNy42OSAyMi43NSwxNy41IDIzLjA2LDE3LjI4QzIzLjM3LDE3LjA1IDIzLjYsMTYuNzcgMjMuNzcsMTYuNDVDMjMuOTQsMTYuMTMgMjQsMTUuNzggMjQsMTUuMzlDMjQsMTUgMjMuOTMsMTQuNjUgMjMuNzgsMTQuMzdNMCw3LjcyVjkuNEwzLDguNFYxOEg1VjZINC43NUwwLDcuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXIzID0gXCJNMjAuODcsMTQuMzdDMjAuNzMsMTQuMDkgMjAuNSwxMy44NCAyMC4yNCwxMy42M0MxOS45NiwxMy40MiAxOS42MywxMy4yNCAxOS4yMywxMy4xQzE4LjgzLDEyLjk2IDE4LjM4LDEyLjgzIDE3Ljg4LDEyLjcyQzE3LjUzLDEyLjY1IDE3LjI0LDEyLjU3IDE3LDEyLjVDMTYuNzgsMTIuNDEgMTYuNiwxMi4zMyAxNi40NiwxMi4yNEMxNi4zMiwxMi4xNSAxNi4yMywxMi4wNSAxNi4xOCwxMS45NEMxNi4xMywxMS44MyAxNi4xLDExLjcgMTYuMSwxMS41NUMxNi4xLDExLjQgMTYuMTMsMTEuMjcgMTYuMTksMTEuMTRDMTYuMjUsMTEgMTYuMzQsMTAuODkgMTYuNDYsMTAuOEMxNi41OCwxMC43IDE2LjczLDEwLjYyIDE2LjkxLDEwLjU2QzE3LjA5LDEwLjUgMTcuMzEsMTAuNDcgMTcuNTUsMTAuNDdDMTcuOCwxMC40NyAxOCwxMC41IDE4LjIxLDEwLjU4QzE4LjQsMTAuNjUgMTguNTYsMTAuNzUgMTguNjksMTAuODdDMTguODIsMTEgMTguOTEsMTEuMTMgMTksMTEuMjlDMTkuMDQsMTEuNDUgMTkuMDgsMTEuNjEgMTkuMDgsMTEuNzhIMjEuMDNDMjEuMDMsMTEuMzkgMjAuOTUsMTEuMDMgMjAuNzksMTAuNjlDMjAuNjMsMTAuMzUgMjAuNCwxMC4wNiAyMC4xLDkuODFDMTkuOCw5LjU2IDE5LjQ0LDkuMzcgMTksOS4yMkMxOC41OCw5LjA3IDE4LjA5LDkgMTcuNTUsOUMxNy4wNCw5IDE2LjU3LDkuMDcgMTYuMTYsOS4yMUMxNS43NSw5LjM1IDE1LjM5LDkuNTQgMTUuMSw5Ljc4QzE0LjgxLDEwIDE0LjU5LDEwLjMgMTQuNDMsMTAuNjJDMTQuMjcsMTAuOTQgMTQuMiwxMS4yNyAxNC4yLDExLjYzQzE0LjIsMTIgMTQuMjgsMTIuMzEgMTQuNDMsMTIuNTlDMTQuNTgsMTIuODcgMTQuOCwxMy4xMSAxNS4wNywxMy4zMkMxNS4zNCwxMy41MyAxNS42NywxMy43IDE2LjA1LDEzLjg1QzE2LjQzLDE0IDE2Ljg2LDE0LjExIDE3LjMyLDE0LjIxQzE3LjcxLDE0LjI5IDE4LjAzLDE0LjM4IDE4LjI3LDE0LjQ3QzE4LjUsMTQuNTYgMTguNywxNC42NiAxOC44NCwxNC43NkMxOC45NywxNC44NiAxOS4wNiwxNSAxOS4xMSwxNS4xQzE5LjE2LDE1LjIyIDE5LjE4LDE1LjM1IDE5LjE4LDE1LjVDMTkuMTgsMTUuODEgMTkuMDUsMTYuMDYgMTguNzgsMTYuMjZDMTguNSwxNi40NiAxOC4xMiwxNi41NSAxNy42MSwxNi41NUMxNy4zOSwxNi41NSAxNy4xOCwxNi41MyAxNi45NywxNi40N0MxNi43NiwxNi40MiAxNi41NywxNi4zNCAxNi40MSwxNi4yM0MxNi4yNCwxNi4xMiAxNi4xMSwxNS45NyAxNiwxNS43OUMxNS44OSwxNS42MSAxNS44MywxNS4zOCAxNS44MiwxNS4xMkgxMy45M0MxMy45MywxNS41IDE0LDE1LjgzIDE0LjE3LDE2LjE3QzE0LjMzLDE2LjUgMTQuNTYsMTYuODIgMTQuODcsMTcuMUMxNS4xOCwxNy4zNyAxNS41NiwxNy41OSAxNiwxNy43NkMxNi41LDE3LjkzIDE3LDE4IDE3LjYsMThDMTguMTMsMTggMTguNjEsMTcuOTUgMTkuMDQsMTcuODJDMTkuNDcsMTcuNjkgMTkuODQsMTcuNSAyMC4xNSwxNy4yOEMyMC40NiwxNy4wNSAyMC42OSwxNi43NyAyMC44NiwxNi40NUMyMS4wMywxNi4xMyAyMS4xMSwxNS43OCAyMS4xMSwxNS4zOUMyMS4wOSwxNSAyMSwxNC42NSAyMC44NywxNC4zN00xMS42MSwxMi45N0MxMS40NSwxMi43MyAxMS4yNSwxMi41IDExLDEyLjMyQzEwLjc0LDEyLjEzIDEwLjQzLDExLjk3IDEwLjA2LDExLjg0QzEwLjM2LDExLjcgMTAuNjMsMTEuNTQgMTAuODYsMTEuMzRDMTEuMDksMTEuMTQgMTEuMjgsMTAuOTMgMTEuNDMsMTAuN0MxMS41OCwxMC40NyAxMS43LDEwLjI0IDExLjc3LDEwQzExLjg1LDkuNzUgMTEuODgsOS41IDExLjg4LDkuMjZDMTEuODgsOC43MSAxMS43OSw4LjIyIDExLjYsNy44QzExLjQyLDcuMzggMTEuMTYsNy4wMyAxMC44Miw2Ljc0QzEwLjUsNi40NiAxMC4wOSw2LjI0IDkuNjIsNi4xQzkuMTcsNS45NyA4LjY1LDUuOSA4LjA5LDUuOUM3LjU0LDUuOSA3LjAzLDYgNi41Nyw2LjE0QzYuMSw2LjMxIDUuNyw2LjU0IDUuMzcsNi44M0M1LjA0LDcuMTIgNC43Nyw3LjQ2IDQuNTksNy44NkM0LjM5LDguMjUgNC4zLDguNjkgNC4zLDkuMTVINi4yOEM2LjI4LDguODkgNi4zMyw4LjY2IDYuNDIsOC40NkM2LjUsOC4yNiA2LjY0LDguMDggNi44LDcuOTRDNi45Nyw3LjggNy4xNiw3LjY5IDcuMzgsNy42MUM3LjYsNy41MyA3Ljg0LDcuNSA4LjExLDcuNUM4LjcyLDcuNSA5LjE3LDcuNjUgOS40Nyw3Ljk2QzkuNzcsOC4yNyA5LjkxLDguNzEgOS45MSw5LjI4QzkuOTEsOS41NSA5Ljg3LDkuOCA5Ljc5LDEwQzkuNzEsMTAuMjQgOS41OCwxMC40MyA5LjQxLDEwLjU5QzkuMjQsMTAuNzUgOS4wMywxMC44NyA4Ljc4LDEwLjk2QzguNTMsMTEuMDUgOC4yMywxMS4wOSA3Ljg5LDExLjA5SDYuNzJWMTIuNjZINy45QzguMjQsMTIuNjYgOC41NCwxMi43IDguODEsMTIuNzdDOS4wOCwxMi44NSA5LjMxLDEyLjk2IDkuNSwxMy4xMkM5LjY5LDEzLjI4IDkuODQsMTMuNSA5Ljk0LDEzLjczQzEwLjA0LDEzLjk3IDEwLjEsMTQuMjcgMTAuMSwxNC42QzEwLjEsMTUuMjIgOS45MiwxNS42OSA5LjU3LDE2QzkuMjIsMTYuMzUgOC43MywxNi41IDguMTIsMTYuNUM3LjgzLDE2LjUgNy41NiwxNi40NyA3LjMyLDE2LjM4QzcuMDgsMTYuMyA2Ljg4LDE2LjE4IDYuNzEsMTZDNi41NCwxNS44NiA2LjQxLDE1LjY4IDYuMzIsMTUuNDZDNi4yMywxNS4yNCA2LjE4LDE1IDYuMTgsMTQuNzRINC4xOUM0LjE5LDE1LjI5IDQuMywxNS43NyA0LjUsMTYuMTlDNC43MiwxNi42MSA1LDE2Ljk2IDUuMzcsMTcuMjRDNS43MywxNy41IDYuMTQsMTcuNzMgNi42MSwxNy44N0M3LjA4LDE4IDcuNTcsMTguMDggOC4wOSwxOC4wOEM4LjY2LDE4LjA4IDkuMTgsMTggOS42NywxNy44NUMxMC4xNiwxNy43IDEwLjU4LDE3LjQ3IDEwLjkzLDE3LjE3QzExLjI5LDE2Ljg3IDExLjU3LDE2LjUgMTEuNzcsMTYuMDdDMTEuOTcsMTUuNjQgMTIuMDcsMTUuMTQgMTIuMDcsMTQuNTlDMTIuMDcsMTQuMyAxMi4wMywxNCAxMS45NiwxMy43M0MxMS44OCwxMy41IDExLjc3LDEzLjIyIDExLjYxLDEyLjk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVyT2ZmID0gXCJNMyA0TDEuNzUgNS4yN0w0LjUgOC4wM0MzLjU1IDkuNDUgMyAxMS4xNiAzIDEzQzMgMTcuOTcgNy4wMyAyMiAxMiAyMkMxMy44NCAyMiAxNS41NSAyMS40NSAxNyAyMC41TDE5LjUgMjNMMjAuNzUgMjEuNzNMMTMuMDQgMTRMMyA0TTE1IDFIOVYzSDE1TTIxIDEzQzIxIDE0LjgzIDIwLjQ1IDE2LjUzIDE5LjUgMTcuOTRMMTMgMTEuNDVWN0gxMVY5LjQ1TDcuMDUgNS41QzguNDcgNC41NSAxMC4xNyA0IDEyIDRDMTQuMTIgNCAxNi4wNyA0Ljc0IDE3LjYyIDUuOTdMMTkuMDQgNC41NUwyMC40NSA1Ljk3TDE5LjAzIDcuMzlDMjAuMjYgOC45MyAyMSAxMC44OCAyMSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lck9mZk91dGxpbmUgPSBcIk0xMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjcyIDUuMzUsMTAuNSA1Ljk1LDkuNUwxNS41LDE5LjA0QzE0LjUsMTkuNjUgMTMuMjgsMjAgMTIsMjBNMyw0TDEuNzUsNS4yN0w0LjUsOC4wM0MzLjU1LDkuNDUgMywxMS4xNiAzLDEzQTksOSAwIDAsMCAxMiwyMkMxMy44NCwyMiAxNS41NSwyMS40NSAxNywyMC41TDE5LjUsMjNMMjAuNzUsMjEuNzNMMTMuMDQsMTRMMyw0TTExLDkuNDRMMTMsMTEuNDRWOEgxMU0xNSwxSDlWM0gxNU0xOS4wNCw0LjU1TDE3LjYyLDUuOTdDMTYuMDcsNC43NCAxNC4xMiw0IDEyLDRDMTAuMTcsNCA4LjQ3LDQuNTUgNy4wNSw1LjVMOC41LDYuOTRDOS41Myw2LjM1IDEwLjczLDYgMTIsNkE3LDcgMCAwLDEgMTksMTNDMTksMTQuMjcgMTguNjUsMTUuNDcgMTguMDYsMTYuNUwxOS41LDE3Ljk0QzIwLjQ1LDE2LjUzIDIxLDE0LjgzIDIxLDEzQzIxLDEwLjg4IDIwLjI2LDguOTMgMTkuMDMsNy4zOUwyMC40NSw1Ljk3TDE5LjA0LDQuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXJPdXRsaW5lID0gXCJNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME0xOS4wMyw3LjM5TDIwLjQ1LDUuOTdDMjAsNS40NiAxOS41NSw1IDE5LjA0LDQuNTZMMTcuNjIsNkMxNi4wNyw0Ljc0IDE0LjEyLDQgMTIsNEE5LDkgMCAwLDAgMywxM0E5LDkgMCAwLDAgMTIsMjJDMTcsMjIgMjEsMTcuOTcgMjEsMTNDMjEsMTAuODggMjAuMjYsOC45MyAxOS4wMyw3LjM5TTExLDE0SDEzVjhIMTFNMTUsMUg5VjNIMTVWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lclNhbmQgPSBcIk02LDJIMThWOEgxOFY4TDE0LDEyTDE4LDE2VjE2SDE4VjIySDZWMTZINlYxNkwxMCwxMkw2LDhWOEg2VjJNMTYsMTYuNUwxMiwxMi41TDgsMTYuNVYyMEgxNlYxNi41TTEyLDExLjVMMTYsNy41VjRIOFY3LjVMMTIsMTEuNU0xMCw2SDE0VjYuNzVMMTIsOC43NUwxMCw2Ljc1VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXJTYW5kRW1wdHkgPSBcIk02LDJWOEg2VjhMMTAsMTJMNiwxNlYxNkg2VjIySDE4VjE2SDE4VjE2TDE0LDEyTDE4LDhWOEgxOFYySDZNMTYsMTYuNVYyMEg4VjE2LjVMMTIsMTIuNUwxNiwxNi41TTEyLDExLjVMOCw3LjVWNEgxNlY3LjVMMTIsMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lclNhbmRGdWxsID0gXCJNNiwyVjhINlY4TDEwLDEyTDYsMTZWMTZINlYyMkgxOFYxNkgxOFYxNkwxNCwxMkwxOCw4VjhIMThWMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWV0YWJsZSA9IFwiTTE0LDEySDE1LjVWMTQuODJMMTcuOTQsMTYuMjNMMTcuMTksMTcuNTNMMTQsMTUuNjlWMTJNNCwySDE4QTIsMiAwIDAsMSAyMCw0VjEwLjFDMjEuMjQsMTEuMzYgMjIsMTMuMDkgMjIsMTVBNyw3IDAgMCwxIDE1LDIyQzEzLjA5LDIyIDExLjM2LDIxLjI0IDEwLjEsMjBINEEyLDIgMCAwLDEgMiwxOFY0QTIsMiAwIDAsMSA0LDJNNCwxNVYxOEg4LjY3QzguMjQsMTcuMDkgOCwxNi4wNyA4LDE1SDRNNCw4SDEwVjVINFY4TTE4LDhWNUgxMlY4SDE4TTQsMTNIOC4yOUM4LjYzLDExLjg1IDkuMjYsMTAuODIgMTAuMSwxMEg0VjEzTTE1LDEwLjE1QTQuODUsNC44NSAwIDAsMCAxMC4xNSwxNUMxMC4xNSwxNy42OCAxMi4zMiwxOS44NSAxNSwxOS44NUE0Ljg1LDQuODUgMCAwLDAgMTkuODUsMTVDMTkuODUsMTIuMzIgMTcuNjgsMTAuMTUgMTUsMTAuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9hc3RlciA9IFwiTTIxIDExQTIgMiAwIDAgMCAxOSA5SDVBMiAyIDAgMCAwIDMgMTFIMlYxM0gzVjIwSDIxVjEzSDIyVjExTTE3IDE1QTIgMiAwIDEgMSAxOSAxM0EyIDIgMCAwIDEgMTcgMTVNMTggOEg2QzYuMzMgNS43NSA4Ljg4IDQgMTIgNFMxNy42MyA1Ljc1IDE4IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9hc3Rlck9mZiA9IFwiTTIwLjggMjIuN0wxOC4xIDIwSDNWMTNIMlYxMUgzQzMgOS45IDMuOSA5IDUgOUg3LjFMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTE1LjMgMTIuMUMxNS42IDExLjUgMTYuMyAxMSAxNyAxMUMxOC4xIDExIDE5IDExLjkgMTkgMTNDMTkgMTMuOCAxOC42IDE0LjQgMTcuOSAxNC43TDIxIDE3LjhWMTNIMjJWMTFIMjFDMjEgOS45IDIwLjEgOSAxOSA5SDEyLjJMMTUuMyAxMi4xTTE4IDhDMTcuNiA1LjggMTUuMSA0IDEyIDRDMTAuNiA0IDkuMiA0LjQgOC4yIDVMMTEuMiA4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvYXN0ZXJPdmVuID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMTZWMTdINFY3TTE5LDdBMSwxIDAgMCwxIDIwLDhBMSwxIDAgMCwxIDE5LDlBMSwxIDAgMCwxIDE4LDhBMSwxIDAgMCwxIDE5LDdNNiw5VjExSDE0VjlINk0xOSwxMUExLDEgMCAwLDEgMjAsMTJBMSwxIDAgMCwxIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkExLDEgMCAwLDEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoID0gXCJNMTcsN0g3QTUsNSAwIDAsMCAyLDEyQTUsNSAwIDAsMCA3LDE3SDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN00xNywxNUEzLDMgMCAwLDEgMTQsMTJBMywzIDAgMCwxIDE3LDlBMywzIDAgMCwxIDIwLDEyQTMsMyAwIDAsMSAxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb2dnbGVTd2l0Y2hPZmYgPSBcIk0xNyw3SDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdIMTdBNSw1IDAgMCwwIDIyLDEyQTUsNSAwIDAsMCAxNyw3TTcsMTVBMywzIDAgMCwxIDQsMTJBMywzIDAgMCwxIDcsOUEzLDMgMCAwLDEgMTAsMTJBMywzIDAgMCwxIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoT2ZmT3V0bGluZSA9IFwiTTcsMTBBMiwyIDAgMCwxIDksMTJBMiwyIDAgMCwxIDcsMTRBMiwyIDAgMCwxIDUsMTJBMiwyIDAgMCwxIDcsMTBNMTcsN0E1LDUgMCAwLDEgMjIsMTJBNSw1IDAgMCwxIDE3LDE3SDdBNSw1IDAgMCwxIDIsMTJBNSw1IDAgMCwxIDcsN0gxN003LDlBMywzIDAgMCwwIDQsMTJBMywzIDAgMCwwIDcsMTVIMTdBMywzIDAgMCwwIDIwLDEyQTMsMyAwIDAsMCAxNyw5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoT3V0bGluZSA9IFwiTTE3LDEwQTIsMiAwIDAsMSAxOSwxMkEyLDIgMCAwLDEgMTcsMTRBMiwyIDAgMCwxIDE1LDEyQTIsMiAwIDAsMSAxNywxME0xNyw3QTUsNSAwIDAsMSAyMiwxMkE1LDUgMCAwLDEgMTcsMTdIN0E1LDUgMCAwLDEgMiwxMkE1LDUgMCAwLDEgNyw3SDE3TTcsOUEzLDMgMCAwLDAgNCwxMkEzLDMgMCAwLDAgNywxNUgxN0EzLDMgMCAwLDAgMjAsMTJBMywzIDAgMCwwIDE3LDlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUb2lsZXQgPSBcIk05LDIySDE3VjE5LjVDMTkuNDEsMTcuODcgMjEsMTUuMTIgMjEsMTJWNEEyLDIgMCAwLDAgMTksMkgxNUMxMy44OSwyIDEzLDIuOSAxMyw0VjEySDNDMywxNS4wOSA1LDE4IDksMTkuNVYyMk01LjI5LDE0SDE4LjcxQzE4LjE0LDE1LjkxIDE2Ljc3LDE3LjUgMTUsMTguMzNWMjBIMTFWMTguMzNDOSwxOCA1Ljg2LDE1LjkxIDUuMjksMTRNMTUsNEgxOVYxMkgxNVY0TTE2LDVWOEgxOFY1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2xib3ggPSBcIk05LDVWNkgxNVY1SDlNMjIsMThDMjIsMTguNTMgMjEuNzksMTkgMjEuNCwxOS40MUMyMSwxOS44MSAyMC41NSwyMCAyMCwyMEg0QzMuNDUsMjAgMywxOS44MSAyLjYsMTkuNDFDMi4yMSwxOSAyLDE4LjUzIDIsMThWMTRIN1YxNUg5VjE0SDE1VjE1SDE3VjE0SDIyVjE4TTQuNSw3LjIyQzQuODQsNi40MSA1LjQ1LDYgNi4zMyw2SDdWNUM3LDQuNDUgNy4xOCw0IDcuNTcsMy41OUM3Ljk2LDMuMiA4LjQ0LDMgOSwzSDE1QzE1LjU2LDMgMTYuMDQsMy4yIDE2LjQzLDMuNTlDMTYuODIsNCAxNyw0LjQ1IDE3LDVWNkgxNy42N0MxOC41NSw2IDE5LjE2LDYuNDEgMTkuNSw3LjIyTDIxLjU4LDEySDE3VjExSDE1VjEySDlWMTFIN1YxMkgyLjQyTDQuNSw3LjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2xib3hPdXRsaW5lID0gXCJNMjAsMThWMTRIMTdWMTVIMTVWMTRIOVYxNUg3VjE0SDRWMThIMjBNNi4zMyw4TDQuNTksMTJIN1YxMUg5VjEySDE1VjExSDE3VjEySDE5LjQxTDE3LjY3LDhINi4zM005LDVWNkgxNVY1SDlNMjEuODQsMTIuNjFDMjEuOTQsMTIuODMgMjIsMTMuMDkgMjIsMTMuNDFWMThDMjIsMTguNTMgMjEuNzksMTkgMjEuNCwxOS40MUMyMSwxOS44MSAyMC41NSwyMCAyMCwyMEg0QzMuNDUsMjAgMywxOS44MSAyLjYsMTkuNDFDMi4yMSwxOSAyLDE4LjUzIDIsMThWMTMuNDFDMiwxMy4wOSAyLjA2LDEyLjgzIDIuMTYsMTIuNjFMNC41LDcuMjJDNC44NCw2LjQxIDUuNDUsNiA2LjMzLDZIN1Y1QzcsNC40NSA3LjE4LDQgNy41NywzLjU5QzcuOTYsMy4yIDguNDQsMyA5LDNIMTVDMTUuNTYsMyAxNi4wNCwzLjIgMTYuNDMsMy41OUMxNi44Miw0IDE3LDQuNDUgMTcsNVY2SDE3LjY3QzE4LjU1LDYgMTkuMTYsNi40MSAxOS41LDcuMjJMMjEuODQsMTIuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHMgPSBcIk0yMS43MSAyMC4yOUwyMC4yOSAyMS43MUExIDEgMCAwIDEgMTguODggMjEuNzFMNyA5Ljg1QTMuODEgMy44MSAwIDAgMSA2IDEwQTQgNCAwIDAgMSAyLjIyIDQuN0w0Ljc2IDcuMjRMNS4yOSA2LjcxTDYuNzEgNS4yOUw3LjI0IDQuNzZMNC43IDIuMjJBNCA0IDAgMCAxIDEwIDZBMy44MSAzLjgxIDAgMCAxIDkuODUgN0wyMS43MSAxOC44OEExIDEgMCAwIDEgMjEuNzEgMjAuMjlNMi4yOSAxOC44OEExIDEgMCAwIDAgMi4yOSAyMC4yOUwzLjcxIDIxLjcxQTEgMSAwIDAgMCA1LjEyIDIxLjcxTDEwLjU5IDE2LjI1TDcuNzYgMTMuNDJNMjAgMkwxNiA0VjZMMTMuODMgOC4xN0wxNS44MyAxMC4xN0wxOCA4SDIwTDIyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcCA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwQWNjb3VudCA9IFwiTTIwLDJINEEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDhMMTIsMjJMMTYsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMTIsNC4zQzEzLjUsNC4zIDE0LjcsNS41IDE0LjcsN0MxNC43LDguNSAxMy41LDkuNyAxMiw5LjdDMTAuNSw5LjcgOS4zLDguNSA5LjMsN0M5LjMsNS41IDEwLjUsNC4zIDEyLDQuM00xOCwxNUg2VjE0LjFDNiwxMi4xIDEwLDExIDEyLDExQzE0LDExIDE4LDEyLjEgMTgsMTQuMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwQ2hlY2sgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjE2QzIgMTcuMTEgMi45IDE4IDQgMThIOEwxMiAyMkwxNiAxOEgyMEMyMS4xMSAxOCAyMiAxNy4xMSAyMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNMTAuNDYgMTRMNi45NiAxMC41TDguMzcgOS4wOEwxMC40NiAxMS4xN0wxNS42NCA2TDE3LjA1IDcuNDFMMTAuNDYgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcENoZWNrT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkgxNS4xN0wxMiAxOS4xN0w4LjgzIDE2SDRWNEgyMFYxNk0xMC43NSAxMy43MUw3LjI1IDEwLjIxTDguNjYgOC43OUwxMC43NSAxMC44OEwxNS4zNCA2LjNMMTYuNzUgNy43MUwxMC43NSAxMy43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwRWRpdCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk05LjA4IDE1SDdWMTIuOTFMMTMuMTcgNi43MkwxNS4yNCA4LjhMOS4wOCAxNU0xNi44NCA3LjJMMTUuODMgOC4yMUwxMy43NiA2LjE4TDE0Ljc3IDUuMTZDMTQuOTcgNC45NSAxNS4zMSA0Ljk0IDE1LjU1IDUuMTZMMTYuODQgNi40MUMxNy4wNSA2LjYyIDE3LjA2IDYuOTYgMTYuODQgNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBFZGl0T3V0bGluZSA9IFwiTTQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDE2TDEyIDIyTDggMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAyTTQgNFYxNkg4LjgzTDEyIDE5LjE3TDE1LjE3IDE2SDIwVjRINE0xNS44NCA4LjJMMTQuODMgOS4yMUwxMi43NiA3LjE4TDEzLjc3IDYuMTZDMTMuOTcgNS45NSAxNC4zMSA1Ljk0IDE0LjU1IDYuMTZMMTUuODQgNy40MUMxNi4wNSA3LjYyIDE2LjA2IDcuOTYgMTUuODQgOC4yTTggMTEuOTFMMTIuMTcgNy43MkwxNC4yNCA5LjhMMTAuMDggMTRIOFYxMS45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwSW1hZ2UgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNMTksMTVWN0wxNSwxMUwxMyw5TDcsMTVIMTlNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcEltYWdlT3V0bGluZSA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMk00LDRWMTZIOC44M0wxMiwxOS4xN0wxNS4xNywxNkgyMFY0SDRNNy41LDZBMS41LDEuNSAwIDAsMSA5LDcuNUExLjUsMS41IDAgMCwxIDcuNSw5QTEuNSwxLjUgMCAwLDEgNiw3LjVBMS41LDEuNSAwIDAsMSA3LjUsNk02LDE0TDExLDlMMTMsMTFMMTgsNlYxNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBNaW51cyA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcE1pbnVzT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkgxNS4xN0wxMiAxOS4xN0w4LjgzIDE2SDRWNEgyMFYxNk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcE91dGxpbmUgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNCw0VjE2SDguODNMMTIsMTkuMTdMMTUuMTcsMTZIMjBWNEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBQbHVzID0gXCJNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxNkwxMiwyMkw4LDE4SDRBMiwyIDAgMCwxIDIsMTZWNEEyLDIgMCAwLDEgNCwyTTExLDZWOUg4VjExSDExVjE0SDEzVjExSDE2VjlIMTNWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwUGx1c091dGxpbmUgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNCw0VjE2SDguODNMMTIsMTkuMTdMMTUuMTcsMTZIMjBWNEg0TTExLDZIMTNWOUgxNlYxMUgxM1YxNEgxMVYxMUg4VjlIMTFWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwUmVtb3ZlID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhMMTIgMjJMMTYgMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjkgMjEuMTEgMiAyMCAyTTE1LjU0IDEyLjEyTDE0LjEyIDEzLjU0TDEyIDExLjQxTDkuODggMTMuNTRMOC40NyAxMi4xMkwxMC41OSAxMEw4LjQ2IDcuODhMOS44OCA2LjQ3TDEyIDguNTlMMTQuMTIgNi40N0wxNS41NCA3Ljg4TDEzLjQxIDEwTDE1LjU0IDEyLjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBSZW1vdmVPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhMMTIgMjJMMTYgMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjkgMjEuMTEgMiAyMCAyTTIwIDE2SDE1LjE3TDEyIDE5LjE3TDguODMgMTZINFY0SDIwVjE2TTguNDYgMTIuMTJMMTAuNTkgMTBMOC40NiA3Ljg4TDkuODggNi40N0wxMiA4LjU5TDE0LjEyIDYuNDdMMTUuNTQgNy44OEwxMy40MSAxMEwxNS41NCAxMi4xMkwxNC4xMiAxMy41NEwxMiAxMS40MUw5Ljg4IDEzLjU0TDguNDYgMTIuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcFRleHQgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNSw1VjdIMTlWNUg1TTUsOVYxMUgxNVY5SDVNNSwxM1YxNUgxN1YxM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBUZXh0T3V0bGluZSA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMk00LDRWMTZIOC44M0wxMiwxOS4xN0wxNS4xNywxNkgyMFY0SDRNNiw3SDE4VjlINlY3TTYsMTFIMTZWMTNINlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb290aCA9IFwiTTcsMkM0LDIgMiw1IDIsOEMyLDEwLjExIDMsMTMgNCwxNEM1LDE1IDYsMjIgOCwyMkMxMi41NCwyMiAxMCwxNSAxMiwxNUMxNCwxNSAxMS40NiwyMiAxNiwyMkMxOCwyMiAxOSwxNSAyMCwxNEMyMSwxMyAyMiwxMC4xMSAyMiw4QzIyLDUgMjAsMiAxNywyQzE0LDIgMTQsMyAxMiwzQzEwLDMgMTAsMiA3LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhPdXRsaW5lID0gXCJNNywyQzQsMiAyLDUgMiw4QzIsMTAuMTEgMywxMyA0LDE0QzUsMTUgNiwyMiA4LDIyQzEyLjU0LDIyIDEwLDE1IDEyLDE1QzE0LDE1IDExLjQ2LDIyIDE2LDIyQzE4LDIyIDE5LDE1IDIwLDE0QzIxLDEzIDIyLDEwLjExIDIyLDhDMjIsNSAyMCwyIDE3LDJDMTQsMiAxNCwzIDEyLDNDMTAsMyAxMCwyIDcsMk03LDRDOSw0IDEwLDUgMTIsNUMxNCw1IDE1LDQgMTcsNEMxOC42Nyw0IDIwLDYgMjAsOEMyMCw5Ljc1IDE5LjE0LDEyLjExIDE4LjE5LDEzLjA2QzE3LjMzLDEzLjkyIDE2LjA2LDE5Ljk0IDE1LjUsMTkuOTRDMTUuMjksMTkuOTQgMTUsMTguODggMTUsMTcuNTlDMTUsMTUuNTUgMTQuNDMsMTMgMTIsMTNDOS41NywxMyA5LDE1LjU1IDksMTcuNTlDOSwxOC44OCA4LjcxLDE5Ljk0IDguNSwxOS45NEM3Ljk0LDE5Ljk0IDYuNjcsMTMuOTIgNS44MSwxMy4wNkM0Ljg2LDEyLjExIDQsOS43NSA0LDhDNCw2IDUuMzMsNCA3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhicnVzaCA9IFwiTTEyLjkxIDYuNDNMMTUuMDMgOC41NUwxNi4wOSA3LjVMMTUuMDMgNi40M0wxNy44NiAzLjZMMTguOTIgNC42NkwyMCAzLjZMMTcuODYgMS41TTMgMjAuNTdMNC40MyAyMkwxNC41IDExLjlMMTYuNjMgMTEuMTlMMjEuNCA2LjQzQzIyLjE4IDUuNjUgMjIuMTggNC4zOCAyMS40IDMuNkwxNS41NSA5LjQ0TDEzLjQzIDEwLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb3RoYnJ1c2hFbGVjdHJpYyA9IFwiTTEyIDEuNVYxNEMxMC4zNCAxNCA5IDE1LjM0IDkgMTdWMjJIMTdWMTdDMTcgMTUuMzQgMTUuNjYgMTQgMTQgMTRWMy41QzE0IDIuNCAxMy4xMSAxLjUgMTIgMS41TTcuNSAyVjlIMTFWNy41SDlWMy41SDExVjJINy41TTEzIDE3LjVDMTMuODMgMTcuNSAxNC41IDE4LjE3IDE0LjUgMTlDMTQuNSAxOS44MyAxMy44MyAyMC41IDEzIDIwLjVDMTIuMTcgMjAuNSAxMS41IDE5LjgzIDExLjUgMTlDMTEuNSAxOC4xNyAxMi4xNyAxNy41IDEzIDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhicnVzaFBhc3RlID0gXCJNMTcuODYgMS41TDEyLjkxIDYuNDNMMTUuMDMgOC41NUwxNi4wOSA3LjVMMTUuMDMgNi40M0wxNy44NiAzLjZMMTguOTIgNC42NkwyMCAzLjZNMjEuNCAzLjZMMTUuNTYgOS40NEwxMy40MyAxMC4xNUwzIDIwLjU3TDQuNDMgMjJMMTAuMDggMTYuMzNMMTQuMzMgMjAuNTdMMTguNTcgMTYuMzNMMTQuMzMgMTIuMDlMMTQuNSAxMS45TDE2LjYzIDExLjE5TDIxLjQgNi40M0MyMi4xOCA1LjY1IDIyLjE4IDQuMzggMjEuNCAzLjZNNi41NSA0LjMxTDIuMzEgOC41NUw3LjI2IDEzLjVMMTEuNSA5LjI2TTE4LjIyIDE4LjFMMTYuMDkgMjAuMjJMMTcuNSAyMS42M0wxOS42MyAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvcmNoID0gXCJNOC42IDkuNkM5IDEwLjIgOS41IDEwLjcgMTAuMiAxMUgxNC4yQzE0LjUgMTAuOSAxNC43IDEwLjcgMTQuOSAxMC41QzE1LjkgOS41IDE2LjMgOCAxNS44IDYuN0wxNS43IDYuNUMxNS42IDYuMiAxNS40IDYgMTUuMiA1LjhDMTUuMSA1LjYgMTQuOSA1LjUgMTQuOCA1LjNDMTQuNCA1IDE0IDQuNyAxMy42IDQuM0MxMi43IDMuNCAxMi42IDIgMTMuMSAxQzEyLjYgMS4xIDEyLjEgMS40IDExLjcgMS44QzEwLjIgMyA5LjYgNS4xIDEwLjMgN1Y3LjJDMTAuMyA3LjMgMTAuMiA3LjQgMTAuMSA3LjVDMTAgNy42IDkuOCA3LjUgOS43IDcuNEw5LjYgNy4zQzkgNi41IDguOSA1LjMgOS4zIDQuM0M4LjQgNS4xIDcuOSA2LjQgOCA3LjdDOCA4IDguMSA4LjMgOC4yIDguNkM4LjIgOC45IDguNCA5LjMgOC42IDkuNk0xMi4zIDguMUMxMi40IDcuNiAxMi4yIDcuMiAxMi4xIDYuOEMxMiA2LjQgMTIgNiAxMi4yIDUuNkwxMi41IDYuMkMxMi45IDYuOCAxMy42IDcgMTMuOCA3LjhWOC4xQzEzLjggOC42IDEzLjYgOS4xIDEzLjMgOS40QzEzLjEgOS41IDEyLjkgOS43IDEyLjcgOS43QzEyLjEgOS45IDExLjQgOS42IDExIDkuMkMxMS44IDkuMiAxMi4yIDguNiAxMi4zIDguMU0xNSAxMlYxNEgxNEwxMyAyMkgxMUwxMCAxNEg5VjEySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvcnRvaXNlID0gXCJNMTkuMzEsNS42QzE4LjA5LDUuNTYgMTYuODgsNi41IDE2LjUsOEMxNiwxMCAxNiwxMCAxNSwxMUMxMywxMyAxMCwxNCA0LDE1QzMsMTUuMTYgMi41LDE1LjUgMiwxNkM0LDE2IDYsMTYgNC41LDE3LjVMMywxOUg2TDgsMTdDMTAsMTggMTEuMzMsMTggMTMuMzMsMTdMMTQsMTlIMTdMMTYsMTZDMTYsMTYgMTcsMTIgMTgsMTFDMTksMTAgMTksMTEgMjAsMTFDMjEsMTEgMjIsMTAgMjIsOC41QzIyLDggMjIsNyAyMC41LDZDMjAuMTUsNS43NiAxOS43NCw1LjYyIDE5LjMxLDUuNk05LDZBNiw2IDAgMCwwIDMsMTJDMywxMi42IDMuMTMsMTMuMDggMy4yMywxMy42QzkuMTUsMTIuNjIgMTIuMjksMTEuNTkgMTMuOTMsOS45NEwxNC40Myw5LjQ0QzEzLjQ0LDcuMzQgMTEuMzIsNiA5LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9zbGluayA9IFwiTTIwIDEwVjdMMTcgNEg3TDQgN1YxMEMyLjkgMTAgMiAxMC45IDIgMTJTMi45IDE0IDQgMTRWMThDNCAxOS4xIDQuOSAyMCA2IDIwSDE4QzE5LjEgMjAgMjAgMTkuMSAyMCAxOFYxNEMyMS4xMSAxNCAyMiAxMy4xMSAyMiAxMlMyMS4xMSAxMCAyMCAxME0xMiAxNkM5Ljc5IDE2IDggMTQuMjEgOCAxMlM5Ljc5IDggMTIgOCAxNiA5Ljc5IDE2IDEyIDE0LjIxIDE2IDEyIDE2TTE0IDEyQzE0IDEzLjExIDEzLjExIDE0IDEyIDE0UzEwIDEzLjExIDEwIDEyIDEwLjkgMTAgMTIgMTAgMTQgMTAuOSAxNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3VybmFtZW50ID0gXCJNMiwyVjRIN1Y4SDJWMTBIN0M4LjExLDEwIDksOS4xMSA5LDhWN0gxNFYxN0g5VjE2QzksMTQuODkgOC4xMSwxNCA3LDE0SDJWMTZIN1YyMEgyVjIySDdDOC4xMSwyMiA5LDIxLjExIDksMjBWMTlIMTRDMTUuMTEsMTkgMTYsMTguMTEgMTYsMTdWMTNIMjJWMTFIMTZWN0MxNiw1Ljg5IDE1LjExLDUgMTQsNUg5VjRDOSwyLjg5IDguMTEsMiA3LDJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3dUcnVjayA9IFwiTTE1LDEwSDIwLjM5TDE3LjA2LDZIMTVWMTBNMTcuNSwxOC41QzE3Ljg5LDE4LjUgMTguMjQsMTguMzcgMTguNTQsMTguMDdDMTguODQsMTcuNzcgMTksMTcuNDIgMTksMTdDMTksMTYuNjEgMTguODQsMTYuMjYgMTguNTQsMTUuOTZDMTguMjQsMTUuNjYgMTcuODksMTUuNSAxNy41LDE1LjVDMTcuMDgsMTUuNSAxNi43MywxNS42NiAxNi40MywxNS45NkMxNi4xMywxNi4yNiAxNiwxNi42MSAxNiwxN0MxNiwxNy40MiAxNi4xMywxNy43NyAxNi40MywxOC4wN0MxNi43MywxOC4zNyAxNy4wOCwxOC41IDE3LjUsMTguNU02LDE4LjVDNi40NCwxOC41IDYuOCwxOC4zNyA3LjA4LDE4LjA3QzcuMzYsMTcuNzcgNy41LDE3LjQyIDcuNSwxN0M3LjUsMTYuNjEgNy4zNiwxNi4yNiA3LjA4LDE1Ljk2QzYuOCwxNS42NiA2LjQ0LDE1LjUgNiwxNS41QzUuNTYsMTUuNSA1LjIsMTUuNjYgNC45MiwxNS45NkM0LjY0LDE2LjI2IDQuNSwxNi42MSA0LjUsMTdDNC41LDE3LjQyIDQuNjQsMTcuNzcgNC45MiwxOC4wN0M1LjIsMTguMzcgNS41NiwxOC41IDYsMTguNU0xOCw0TDIzLDEwVjE3SDIwLjVDMjAuNSwxNy44MyAyMC4xOSwxOC41MyAxOS41OSwxOS4xM0MxOSwxOS43MiAxOC4zLDIwIDE3LjUsMjBDMTYuNjcsMjAgMTUuOTcsMTkuNzIgMTUuMzgsMTkuMTNDMTQuNzgsMTguNTMgMTQuNSwxNy44MyAxNC41LDE3SDlDOSwxNy44MyA4LjcsMTguNTMgOC4xMSwxOS4xM0M3LjUsMTkuNzIgNi44MSwyMCA2LDIwQzUuMTksMjAgNC41LDE5LjcyIDMuODksMTkuMTNDMy4zLDE4LjUzIDMsMTcuODMgMywxN0gxVjEzSDkuMTlMMyw4LjExVjExSDFWNUgyTDEzLDExLjA2VjRIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG93ZXJCZWFjaCA9IFwiTTE3LDRWOEgxOFYxMEgxNy42NEwyMSwyM0gxOC45M0wxOC4zNywyMC44M0wxMiwxNy4xNUw1LjYzLDIwLjgzTDUuMDcsMjNIM0w2LjM2LDEwSDZWOEg3VjRINlYzTDE4LDFWNEgxN003LjI4LDE0LjQzTDYuMzMsMTguMTJMMTAsMTZMNy4yOCwxNC40M00xNS41NywxMEg4LjQzTDcuOCwxMi40MkwxMiwxNC44NUwxNi4yLDEyLjQyTDE1LjU3LDEwTTE3LjY3LDE4LjEyTDE2LjcyLDE0LjQzTDE0LDE2TDE3LjY3LDE4LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvd2VyRmlyZSA9IFwiTTE3LDRWOEgxOFYxMEgxNy42NEwyMSwyM0gxOC45M0wxOC4zNywyMC44M0wxMiwxNy4xNUw1LjYzLDIwLjgzTDUuMDcsMjNIM0w2LjM2LDEwSDZWOEg3VjRINlYzTDEyLDFMMTgsM1Y0SDE3TTcuMjgsMTQuNDNMNi4zMywxOC4xMkwxMCwxNkw3LjI4LDE0LjQzTTE1LjU3LDEwSDguNDNMNy44LDEyLjQyTDEyLDE0Ljg1TDE2LjIsMTIuNDJMMTUuNTcsMTBNMTcuNjcsMTguMTJMMTYuNzIsMTQuNDNMMTQsMTZMMTcuNjcsMTguMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2sgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgyMVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRveUJyaWNrTWFya2VyID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMTQuNTRBOS41NSA5LjU1IDAgMCAxIDEzIDE1LjVBNS41OCA1LjU4IDAgMCAxIDE4LjUgMTBBNS4zIDUuMyAwIDAgMSAyMSAxMC42M1Y2TTE4LjUgMTJBMy41NCAzLjU0IDAgMCAwIDE1IDE1LjVDMTUgMTguMSAxOC41IDIyIDE4LjUgMjJTMjIgMTguMSAyMiAxNS41QTMuNTQgMy41NCAwIDAgMCAxOC41IDEyTTE4LjUgMTYuOEExLjIgMS4yIDAgMSAxIDE4LjUgMTQuNEExLjI5IDEuMjkgMCAwIDEgMTkuNyAxNS42QTEuMTUgMS4xNSAwIDAgMSAxOC41IDE2LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tNYXJrZXJPdXRsaW5lID0gXCJNMTguNSAxMkEzLjU0IDMuNTQgMCAwIDAgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVBMy41NCAzLjU0IDAgMCAwIDE4LjUgMTJNMTguNSAxNi44QTEuMiAxLjIgMCAxIDEgMTguNSAxNC40QTEuMjkgMS4yOSAwIDAgMSAxOS43IDE1LjZBMS4xNSAxLjE1IDAgMCAxIDE4LjUgMTYuOE0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxNC41NEExNS41NSAxNS41NSAwIDAgMSAxMy41NCAxOEg1VjhIMTlWMTBBNS4xMSA1LjExIDAgMCAxIDIxIDEwLjZWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja01pbnVzID0gXCJNMjMgMjBIMTVWMThIMjNWMjBNMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMTkuNyAxMyAyMC4zNyAxMy4xMyAyMSAxMy4zNVY2SDE5VjVDMTkgMy45IDE4LjExIDMgMTcgM0gxNUMxMy45IDMgMTMgMy45IDEzIDVWNkgxMVY1QzExIDMuOSAxMC4xMSAzIDkgM0g3QzUuOSAzIDUgMy45IDUgNVY2SDNWMjBIMTMuMDlDMTMuMDQgMTkuNjcgMTMgMTkuMzQgMTMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tNaW51c091dGxpbmUgPSBcIk0xMy4wOSAyMEgzVjZINVY1QzUgMy45IDUuOSAzIDcgM0g5QzEwLjExIDMgMTEgMy45IDExIDVWNkgxM1Y1QzEzIDMuOSAxMy45IDMgMTUgM0gxN0MxOC4xMSAzIDE5IDMuOSAxOSA1VjZIMjFWMTMuMzVDMjAuMzcgMTMuMTMgMTkuNyAxMyAxOSAxM1Y4SDVWMThIMTMuMDlDMTMuMDQgMTguMzMgMTMgMTguNjYgMTMgMTlTMTMuMDQgMTkuNjcgMTMuMDkgMjBNMjMgMThIMTVWMjBIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tPdXRsaW5lID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMjFWNk0xOSAxOEg1VjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tQbHVzID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMTMuMDlBNS40NyA1LjQ3IDAgMCAxIDEzIDE5QTYgNiAwIDAgMSAyMSAxMy4zNFY2TTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRveUJyaWNrUGx1c091dGxpbmUgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxNFYxOEg1VjhIMTlWMTNIMjFWNk0yMSAxNVYxOEgyNFYyMEgyMVYyM0gxOVYyMEgxNlYxOEgxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1JlbW92ZSA9IFwiTTE5IDZWNUEyIDIgMCAwIDAgMTcgM0gxNUEyIDIgMCAwIDAgMTMgNVY2SDExVjVBMiAyIDAgMCAwIDkgM0g3QTIgMiAwIDAgMCA1IDVWNkgzVjIwSDEzLjA5QTUuNDcgNS40NyAwIDAgMSAxMyAxOUE2IDYgMCAwIDEgMjEgMTMuMzRWNk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1JlbW92ZU91dGxpbmUgPSBcIk0xOSA2VjVDMTkgMy45IDE4LjEgMyAxNyAzSDE1QzEzLjkgMyAxMyAzLjkgMTMgNVY2SDExVjVDMTEgMy45IDEwLjEgMyA5IDNIN0M1LjkgMyA1IDMuOSA1IDVWNkgzVjIwSDE0VjE4SDVWOEgxOVYxM0gyMVY2TTE3Ljg4IDE1LjQ2TDIwIDE3LjU5TDIyLjEyIDE1LjQ3TDIzLjU0IDE2Ljg4TDIxLjQxIDE5TDIzLjU0IDIxLjEyTDIyLjEyIDIyLjU0TDIwIDIwLjQxTDE3Ljg4IDIyLjU0TDE2LjQ2IDIxLjEyTDE4LjU5IDE5TDE2LjQ3IDE2Ljg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tTZWFyY2ggPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxMS44MUE2LjUgNi41IDAgMCAxIDIxIDEwLjgxVjZNMjAuMzEgMTcuOUE0LjUgNC41IDAgMSAwIDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTTE2LjUgMThBMi41IDIuNSAwIDEgMSAxOSAxNS41QTIuNSAyLjUgMCAwIDEgMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1NlYXJjaE91dGxpbmUgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxMS44MUE2LjU5IDYuNTkgMCAwIDEgMTAuNSAxOEg1VjhIMTlWOS41QTYuNTkgNi41OSAwIDAgMSAyMSAxMC44MVY2TTIwLjMxIDE3LjlBNC41IDQuNSAwIDEgMCAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMU0xNi41IDE4QTIuNSAyLjUgMCAxIDEgMTkgMTUuNUEyLjUgMi41IDAgMCAxIDE2LjUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhY2tMaWdodCA9IFwiTTYsMVYzSDlWNi40TDQuMTEsNC4zOEwxLjQzLDEwLjg0TDYuOTcsMTMuMTRMMTEuOTQsMTYuODJMMTMuNzksMTcuNTlMMTcuNjIsOC4zNUwxNS43Nyw3LjU4TDExLDYuODdWM0gxNFYxSDZNMjEuODEsNi4yOUwxOS41LDcuMjVMMjAuMjYsOS4xTDIyLjU3LDguMTRMMjEuODEsNi4yOU0xOS43OCwxMy41N0wxOSwxNS40MkwyMS43OSwxNi41N0wyMi41NSwxNC43MkwxOS43OCwxMy41N00xNi4xOSwxOC45M0wxNC4zNCwxOS42OUwxNS4zLDIyTDE3LjE1LDIxLjIzTDE2LjE5LDE4LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWNrcGFkID0gXCJNNCwzSDIwQTIsMiAwIDAsMSAyMiw1VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjVBMiwyIDAgMCwxIDQsM000LDVWMTNIMjBWNUg0TTQsMTlIMTFWMTVINFYxOU0yMCwxOVYxNUgxM1YxOUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFja3BhZExvY2sgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTdDMSwxOC4xMSAxLjg5LDE5IDMsMTlIMTRWMTdIMTJWMTNIMTYuNjhDMTcuNSwxMi4zNSAxOC40NywxMiAxOS41LDEyQzIwLDEyIDIwLjUsMTIuMDkgMjEsMTIuMjZWM0MyMSwxLjg5IDIwLjExLDEgMTksMUgzTTMsM0gxOVYxMUgzVjNNMywxM0gxMFYxN0gzVjEzTTE5LjUsMTRBMi41LDIuNSAwIDAsMCAxNywxNi41VjE3QTEsMSAwIDAsMCAxNiwxOFYyMkExLDEgMCAwLDAgMTcsMjNIMjJBMSwxIDAgMCwwIDIzLDIyVjE4QTEsMSAwIDAsMCAyMiwxN1YxNi41QTIuNSwyLjUgMCAwLDAgMTkuNSwxNE0xOS41LDE1QTEuNSwxLjUgMCAwLDEgMjEsMTYuNVYxN0gxOFYxNi41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFjdG9yID0gXCJNNSw0VjExLjI2QzMuMiwxMS45IDIsMTMuNiAyLDE1LjVDMiwxOCA0LDIwIDYuNSwyMEM4Ljc5LDIwIDEwLjcxLDE4LjI4IDEwLjk3LDE2SDE1LjE3QzE1LjA2LDE2LjMyIDE1LDE2LjY2IDE1LDE3QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdDMjEsMTYuNjYgMjAuOTQsMTYuMzIgMjAuODIsMTZIMjJWMTNDMjIsMTEuODkgMjEuMTEsMTEgMjAsMTFIMTUuMDRMMTMuNjUsNEg1TTcsNkgxMkwxMywxMVYxNEgxMC43NEMxMC4xNiwxMi4zOCA4LjcxLDExLjIzIDcsMTEuMDNWNk02LjUsMTMuMjVBMi4yNSwyLjI1IDAgMCwxIDguNzUsMTUuNUEyLjI1LDIuMjUgMCAwLDEgNi41LDE3Ljc1QTIuMjUsMi4yNSAwIDAsMSA0LjI1LDE1LjVBMi4yNSwyLjI1IDAgMCwxIDYuNSwxMy4yNU0xOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFjdG9yVmFyaWFudCA9IFwiTTEzLjMgMi43OUw5LjggNi4yOUwxMC41IDdMMTEuOSA1LjYxTDEzIDYuNzFWOUMxMyAxMC4xMSAxMi4xMSAxMSAxMSAxMUgxMC40NkE2IDYgMCAwIDEgMTIgMTVBNiA2IDAgMCAxIDExLjkxIDE2SDE1LjAzQTQuNSA0LjUgMCAwIDEgMTkuNSAxMkE0LjUgNC41IDAgMCAxIDIyIDEyLjc2VjhDMjIgNi44OSAyMS4xMSA2IDIwIDZIMTMuNzFMMTIuNjEgNC45TDE0IDMuNUwxMy4zIDIuNzlNNCA3QzMuNDUgNyAzIDcuNDUgMyA4QzMgOC41NSAzLjQ1IDkgNCA5SDlDOSA3LjkgOC4xMSA3IDcgN0g0TTYgMTBBNSA1IDAgMCAwIDQuNDQgMTAuMjVMNC44IDExLjE4TDQuMzMgMTEuMzZMNCAxMC40M0E1IDUgMCAwIDAgMS41NCAxMi43NEwyLjQ1IDEzLjE1TDIuMjQgMTMuNkwxLjM0IDEzLjJBNSA1IDAgMCAwIDEgMTVBNSA1IDAgMCAwIDEuMjUgMTYuNTZMMi4xOCAxNi4yTDIuMzYgMTYuNjdMMS40MyAxN0E1IDUgMCAwIDAgMy43NCAxOS40Nkw0LjE0IDE4LjU1TDQuNiAxOC43Nkw0LjIgMTkuNjZBNSA1IDAgMCAwIDYgMjBBNSA1IDAgMCAwIDcuNTYgMTkuNzVMNy4yIDE4LjgyTDcuNjcgMTguNjRMOCAxOS41N0E1IDUgMCAwIDAgMTAuNDYgMTcuMjZMOS41NSAxNi44Nkw5Ljc2IDE2LjRMMTAuNjYgMTYuOEE1IDUgMCAwIDAgMTEgMTVBNSA1IDAgMCAwIDEwLjc1IDEzLjQ0TDkuODIgMTMuOEw5LjY0IDEzLjMzTDEwLjU3IDEzQTUgNSAwIDAgMCA4LjI2IDEwLjU0TDcuODYgMTEuNDVMNy40IDExLjI0TDcuOCAxMC4zNEE1IDUgMCAwIDAgNiAxME02IDEyQTMgMyAwIDAgMSA5IDE1QTMgMyAwIDAgMSA2IDE4QTMgMyAwIDAgMSAzIDE1QTMgMyAwIDAgMSA2IDEyTTE5LjUgMTNBMy41IDMuNSAwIDAgMCAxNiAxNi41QTMuNSAzLjUgMCAwIDAgMTkuNSAyMEEzLjUgMy41IDAgMCAwIDIzIDE2LjVBMy41IDMuNSAwIDAgMCAxOS41IDEzTTE5LjUgMTVBMS41IDEuNSAwIDAgMSAyMSAxNi41QTEuNSAxLjUgMCAwIDEgMTkuNSAxOEExLjUgMS41IDAgMCAxIDE4IDE2LjVBMS41IDEuNSAwIDAgMSAxOS41IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWRlbWFyayA9IFwiTTkuOCw4LjQ0SDYuODdWMTZINC44OVY4LjQ0SDJWN0g5LjhWOC40NE0xMy41LDdMMTUuOTYsMTMuNUwxOC40MSw3SDIxVjE2SDE5VjEzLjVMMTkuMjIsOS4yNEwxNi42MywxNkgxNS4yOEwxMi43LDkuMjVMMTIuOSwxMy41VjE2SDEwLjkzVjdIMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFmZmljQ29uZSA9IFwiTTE3IDE1TDE4IDE5SDIxVjIySDNWMTlINkw3IDE1SDE3TTE1IDhMMTYgMTJIOEw5IDhIMTVNMTMgMUwxNCA1SDEwTDExIDFIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhZmZpY0xpZ2h0ID0gXCJNMTIsOUEyLDIgMCAwLDEgMTAsN0MxMCw1Ljg5IDEwLjksNSAxMiw1QzEzLjExLDUgMTQsNS44OSAxNCw3QTIsMiAwIDAsMSAxMiw5TTEyLDE0QTIsMiAwIDAsMSAxMCwxMkMxMCwxMC44OSAxMC45LDEwIDEyLDEwQzEzLjExLDEwIDE0LDEwLjg5IDE0LDEyQTIsMiAwIDAsMSAxMiwxNE0xMiwxOUEyLDIgMCAwLDEgMTAsMTdDMTAsMTUuODkgMTAuOSwxNSAxMiwxNUMxMy4xMSwxNSAxNCwxNS44OSAxNCwxN0EyLDIgMCAwLDEgMTIsMTlNMjAsMTBIMTdWOC44NkMxOC43Miw4LjQxIDIwLDYuODYgMjAsNUgxN1Y0QTEsMSAwIDAsMCAxNiwzSDhBMSwxIDAgMCwwIDcsNFY1SDRDNCw2Ljg2IDUuMjgsOC40MSA3LDguODZWMTBINEM0LDExLjg2IDUuMjgsMTMuNDEgNywxMy44NlYxNUg0QzQsMTYuODYgNS4yOCwxOC40MSA3LDE4Ljg2VjIwQTEsMSAwIDAsMCA4LDIxSDE2QTEsMSAwIDAsMCAxNywyMFYxOC44NkMxOC43MiwxOC40MSAyMCwxNi44NiAyMCwxNUgxN1YxMy44NkMxOC43MiwxMy40MSAyMCwxMS44NiAyMCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbiA9IFwiTTEyLDJDOCwyIDQsMi41IDQsNlYxNS41QTMuNSwzLjUgMCAwLDAgNy41LDE5TDYsMjAuNVYyMUg4LjIzTDEwLjIzLDE5SDE0TDE2LDIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNkMyMCwyLjUgMTYuNDIsMiAxMiwyTTcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxNEExLjUsMS41IDAgMCwxIDksMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN00xMSwxMEg2VjZIMTFWMTBNMTMsMTBWNkgxOFYxMEgxM00xNi41LDE3QTEuNSwxLjUgMCAwLDEgMTUsMTUuNUExLjUsMS41IDAgMCwxIDE2LjUsMTRBMS41LDEuNSAwIDAsMSAxOCwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhciA9IFwiTTEyLDRINUEzLDMgMCAwLDAgMiw3VjE1QTMsMyAwIDAsMCA1LDE4TDQsMTlWMjBINUw3LDE3Ljk3TDksMThWMTNINFY2SDEzVjhIMTVWN0EzLDMgMCAwLDAgMTIsNE01LDE0QTEsMSAwIDAsMSA2LDE1QTEsMSAwIDAsMSA1LDE2QTEsMSAwIDAsMSA0LDE1QTEsMSAwIDAsMSA1LDE0TTIwLjU3LDkuNjZDMjAuNDMsOS4yNiAyMC4wNSw5IDE5LjYsOUgxMi40MUMxMS45NSw5IDExLjU4LDkuMjYgMTEuNDMsOS42NkwxMCwxMy43N1YxOS4yOEMxMCwxOS42NiAxMC4zMiwyMCAxMC43LDIwSDExLjMyQzExLjcsMjAgMTIsMTkuNjIgMTIsMTkuMjRWMThIMjBWMTkuMjRDMjAsMTkuNjIgMjAuMzEsMjAgMjAuNjksMjBIMjEuM0MyMS42OCwyMCAyMiwxOS42NiAyMiwxOS4yOFYxNy45MUwyMiwxMy43N0wyMC41Nyw5LjY2TTEyLjQxLDEwSDE5LjZMMjAuNjMsMTNIMTEuMzhMMTIuNDEsMTBNMTIsMTZBMSwxIDAgMCwxIDExLDE1QTEsMSAwIDAsMSAxMiwxNEExLDEgMCAwLDEgMTMsMTVBMSwxIDAgMCwxIDEyLDE2TTIwLDE2QTEsMSAwIDAsMSAxOSwxNUExLDEgMCAwLDEgMjAsMTRBMSwxIDAgMCwxIDIxLDE1QTEsMSAwIDAsMSAyMCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhclBhc3NlbmdlciA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN003IDEySDNWOUg3VjEyTTE1IDEySDlWOUgxNVYxMk0yMSAxMkgxN1Y5SDIxVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWluQ2FyUGFzc2VuZ2VyRG9vciA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN003IDEySDNWOUg3VjEyTTExIDE2SDlWOUgxMVYxNk0xNSAxNkgxM1Y5SDE1VjE2TTIxIDEySDE3VjlIMjFWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhaW5DYXJQYXNzZW5nZXJEb29yT3BlbiA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN004IDEySDNWOUg4VjEyTTE0IDE2SDEwVjlIMTRWMTZNMjEgMTJIMTZWOUgyMVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhclBhc3NlbmdlclZhcmlhbnQgPSBcIk0yMSA3SDNDMS45IDcgMSA3LjkgMSA5VjE3SDJDMiAxOC4xMSAyLjkgMTkgNCAxOVM2IDE4LjExIDYgMTdIMThDMTggMTguMTEgMTguOSAxOSAyMCAxOVMyMiAxOC4xMSAyMiAxN0gyM1Y5QzIzIDcuOSAyMi4xMSA3IDIxIDdNMTEgMTJIM1Y5SDExVjEyTTIxIDEySDEzVjlIMjFWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhaW5WYXJpYW50ID0gXCJNMTgsMTBINlY1SDE4TTEyLDE3QzEwLjg5LDE3IDEwLDE2LjEgMTAsMTVDMTAsMTMuODkgMTAuODksMTMgMTIsMTNBMiwyIDAgMCwxIDE0LDE1QTIsMiAwIDAsMSAxMiwxN000LDE1LjVBMy41LDMuNSAwIDAsMCA3LjUsMTlMNiwyMC41VjIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNUMyMCwxLjUgMTYuNDIsMSAxMiwxQzcuNTgsMSA0LDEuNSA0LDVWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFtID0gXCJNMTksMTYuOTRWOC41QzE5LDUuNzEgMTYuMzksNS4xIDEzLDVMMTMuNzUsMy41SDE3VjJIN1YzLjVIMTEuNzVMMTEsNUM3Ljg2LDUuMTEgNSw1LjczIDUsOC41VjE2Ljk0QzUsMTguMzkgNi4xOSwxOS42IDcuNTksMTkuOTFMNiwyMS41VjIySDguMjNMMTAuMjMsMjBIMTRMMTYsMjJIMThWMjEuNUwxNi41LDIwSDE2LjQyQzE4LjExLDIwIDE5LDE4LjYzIDE5LDE2Ljk0TTEyLDE4LjVBMS41LDEuNSAwIDAsMSAxMC41LDE3QTEuNSwxLjUgMCAwLDEgMTIsMTUuNUExLjUsMS41IDAgMCwxIDEzLjUsMTdBMS41LDEuNSAwIDAsMSAxMiwxOC41TTE3LDE0SDdWOUgxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFtU2lkZSA9IFwiTTkgMUw1IDRMNy41IDZINUM1IDYgMiA2IDIgOVYxOUg3QzcgMTkgNyAxNyA5IDE3SDIyVjE0SDE4VjhIMjJWNkgxMC41TDEzIDRMOSAxTTQgOEg5VjE0SDRWOE0xMSA4SDE2VjE0SDExVjhNNCAxNkg1VjE4SDRWMTZNOSAxOVYxOS41QzkgMjAuODggMTAuMTIgMjIgMTEuNSAyMkMxMi41IDIyIDEzLjM5IDIxLjQxIDEzLjc5IDIwLjVIMTUuMjFDMTUuNjEgMjEuNDEgMTYuNSAyMiAxNy41IDIyQzE4Ljg4IDIyIDIwIDIwLjg4IDIwIDE5LjVWMTlIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2NyaWJlID0gXCJNMjAsNUEyLDIgMCAwLDEgMjIsN1YxN0EyLDIgMCAwLDEgMjAsMTlINEMyLjg5LDE5IDIsMTguMSAyLDE3VjdDMiw1Ljg5IDIuODksNSA0LDVIMjBNMTgsMTdWMTVIMTIuNUwxMC41LDE3SDE4TTYsMTdIOC41TDE1LjM1LDEwLjEyQzE1LjU1LDkuOTMgMTUuNTUsOS42MSAxNS4zNSw5LjQxTDEzLjU5LDcuNjVDMTMuMzksNy40NSAxMy4wNyw3LjQ1IDEyLjg4LDcuNjVMNiwxNC41M1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2NyaWJlQ2xvc2UgPSBcIk0xMiwyM0w4LDE5SDE2TDEyLDIzTTIwLDNBMiwyIDAgMCwxIDIyLDVWMTVBMiwyIDAgMCwxIDIwLDE3SDRBMiwyIDAgMCwxIDIsMTVWNUEyLDIgMCAwLDEgNCwzSDIwTTE4LDE1VjEzSDEyLjVMMTAuNSwxNUgxOE02LDE1SDguNUwxNS4zNSw4LjEyQzE1LjU1LDcuOTMgMTUuNTUsNy42MSAxNS4zNSw3LjQyTDEzLjU5LDUuNjVDMTMuMzksNS40NSAxMy4wNyw1LjQ1IDEyLjg4LDUuNjVMNiwxMi41M1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2ZlciA9IFwiTTggNEEyIDIgMCAwIDAgNiA2VjEwSDhWNkgxNlY5SDEzLjVMMTcgMTIuNUwyMC41IDlIMThWNkEyIDIgMCAwIDAgMTYgNEg4TTMgMTJWMTRIMTFWMTJIM00zIDE1VjE3SDExVjE1SDNNMTMgMTVWMTdIMjFWMTVIMTNNMyAxOFYyMEgxMVYxOEgzTTEzIDE4VjIwSDIxVjE4SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zZmVyRG93biA9IFwiTTE2LDNWNUg4VjNIMTZNMTYsN1Y5SDhWN0gxNk0xNiwxMVYxM0g4VjExSDE2TTUsMTVIMTlMMTIsMjJMNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2ZlckxlZnQgPSBcIk0yMSwxNkgxOVY4SDIxVjE2TTE3LDE2SDE1VjhIMTdWMTZNMTMsMTZIMTFWOEgxM1YxNk05LDVWMTlMMiwxMkw5LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNmZXJSaWdodCA9IFwiTTMsOEg1VjE2SDNWOE03LDhIOVYxNkg3VjhNMTEsOEgxM1YxNkgxMVY4TTE1LDE5LjI1VjQuNzVMMjIuMjUsMTJMMTUsMTkuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNmZXJVcCA9IFwiTTgsMjFWMTlIMTZWMjFIOE04LDE3VjE1SDE2VjE3SDhNOCwxM1YxMUgxNlYxM0g4TTE5LDlINUwxMiwyTDE5LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNpdENvbm5lY3Rpb24gPSBcIk0xNSwxMkMxNSwxMC43IDE0LjE2LDkuNiAxMyw5LjE4VjYuODJDMTQuMTYsNi40IDE1LDUuMyAxNSw0QTMsMyAwIDAsMCAxMiwxQTMsMyAwIDAsMCA5LDRDOSw1LjMgOS44NCw2LjQgMTEsNi44MlY5LjE5QzkuODQsOS42IDksMTAuNyA5LDEyQzksMTMuMyA5Ljg0LDE0LjQgMTEsMTQuODJWMTcuMThDOS44NCwxNy42IDksMTguNyA5LDIwQTMsMyAwIDAsMCAxMiwyM0EzLDMgMCAwLDAgMTUsMjBDMTUsMTguNyAxNC4xNiwxNy42IDEzLDE3LjE4VjE0LjgyQzE0LjE2LDE0LjQgMTUsMTMuMyAxNSwxMk0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEyLDIxQTEsMSAwIDAsMSAxMSwyMEExLDEgMCAwLDEgMTIsMTlBMSwxIDAgMCwxIDEzLDIwQTEsMSAwIDAsMSAxMiwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0Q29ubmVjdGlvbkhvcml6b250YWwgPSBcIk0xMiA5QzEwLjcgOSA5LjYgOS44IDkuMiAxMUg2LjhDNi40IDkuOCA1LjMgOSA0IDlDMi4zIDkgMSAxMC4zIDEgMTJTMi4zIDE1IDQgMTVDNS4zIDE1IDYuNCAxNC4yIDYuOCAxM0g5LjJDOS42IDE0LjIgMTAuNyAxNSAxMiAxNVMxNC40IDE0LjIgMTQuOCAxM0gxNy4yQzE3LjYgMTQuMiAxOC43IDE1IDIwIDE1QzIxLjcgMTUgMjMgMTMuNyAyMyAxMlMyMS43IDkgMjAgOUMxOC43IDkgMTcuNiA5LjggMTcuMiAxMUgxNC44QzE0LjQgOS44IDEzLjMgOSAxMiA5TTMgMTJDMyAxMS40IDMuNCAxMSA0IDExUzUgMTEuNCA1IDEyIDQuNiAxMyA0IDEzIDMgMTIuNiAzIDEyTTIxIDEyQzIxIDEyLjYgMjAuNiAxMyAyMCAxM1MxOSAxMi42IDE5IDEyIDE5LjQgMTEgMjAgMTEgMjEgMTEuNCAyMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0Q29ubmVjdGlvblZhcmlhbnQgPSBcIk0xOCwxMUgxNC44MkMxNC40LDkuODQgMTMuMyw5IDEyLDlDMTAuNyw5IDkuNiw5Ljg0IDkuMTgsMTFINkM1LjY3LDExIDQsMTAuOSA0LDlWOEM0LDYuMTcgNS41NCw2IDYsNkgxNi4xOEMxNi42LDcuMTYgMTcuNyw4IDE5LDhBMywzIDAgMCwwIDIyLDVBMywzIDAgMCwwIDE5LDJDMTcuNywyIDE2LjYsMi44NCAxNi4xOCw0SDZDNC4zOSw0IDIsNS4wNiAyLDhWOUMyLDExLjk0IDQuMzksMTMgNiwxM0g5LjE4QzkuNiwxNC4xNiAxMC43LDE1IDEyLDE1QzEzLjMsMTUgMTQuNCwxNC4xNiAxNC44MiwxM0gxOEMxOC4zMywxMyAyMCwxMy4xIDIwLDE1VjE2QzIwLDE3LjgzIDE4LjQ2LDE4IDE4LDE4SDcuODJDNy40LDE2Ljg0IDYuMywxNiA1LDE2QTMsMyAwIDAsMCAyLDE5QTMsMyAwIDAsMCA1LDIyQzYuMywyMiA3LjQsMjEuMTYgNy44MiwyMEgxOEMxOS42MSwyMCAyMiwxOC45MyAyMiwxNlYxNUMyMiwxMi4wNyAxOS42MSwxMSAxOCwxMU0xOSw0QTEsMSAwIDAsMSAyMCw1QTEsMSAwIDAsMSAxOSw2QTEsMSAwIDAsMSAxOCw1QTEsMSAwIDAsMSAxOSw0TTUsMjBBMSwxIDAgMCwxIDQsMTlBMSwxIDAgMCwxIDUsMThBMSwxIDAgMCwxIDYsMTlBMSwxIDAgMCwxIDUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNpdERldG91ciA9IFwiTTE5IDNBMyAzIDAgMCAwIDE2LjYxIDQuMjFBMTEuNSAxMS41IDAgMCAwIDEzLjc1IDRMMTMuODggNkE5LjQ3IDkuNDcgMCAwIDEgMTYgNi4xM0EzIDMgMCAxIDAgMTkgM00xOSA3QTEgMSAwIDEgMSAyMCA2QTEgMSAwIDAgMSAxOSA3TTguODYgNy44Nkw3LjY3IDYuMjVBMTEuNSAxMS41IDAgMCAxIDExLjYgNC4zN0wxMi4xIDYuMzFBOS41IDkuNSAwIDAgMCA4Ljg2IDcuODZNMjEgMThBMyAzIDAgMSAxIDE1LjY5IDE2LjExQTkuNDcgOS40NyAwIDAgMCA4LjU5IDEzLjQ2QzguMzcgMTMuNDcgOC4xNiAxMy41IDcuOTQgMTMuNTRBMyAzIDAgMSAxIDQuMzkgMTAuMDZBMTEuNTQgMTEuNTQgMCAwIDEgNi4wNCA3LjdMNy41IDkuMDZBOS4zNCA5LjM0IDAgMCAwIDYuNSAxMC40MUEzLjA0IDMuMDQgMCAwIDEgNy42MiAxMS41NkM3LjkxIDExLjUgOC4xOSAxMS41IDguNSAxMS40NkExMS40NyAxMS40NyAwIDAgMSAxNy40NiAxNS4wNUEyLjk2IDIuOTYgMCAwIDEgMTggMTVBMyAzIDAgMCAxIDIxIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zaXRTa2lwID0gXCJNMjEgMTJDMjEgOCAxOC41IDQuNyAxNSAzLjVDMTQuNyAyLjEgMTMuNSAxIDEyIDFDMTAuMyAxIDkgMi4zIDkgNFMxMC4zIDcgMTIgN0MxMy4xIDcgMTQuMSA2LjQgMTQuNiA1LjVDMTcuMiA2LjUgMTkgOSAxOSAxMkMxOSAxNC45IDE3LjIgMTcuNSAxNC42IDE4LjVDMTQuMSAxNy42IDEzLjEgMTcgMTIgMTdDMTAuMyAxNyA5IDE4LjMgOSAyMFMxMC4zIDIzIDEyIDIzQzEzLjUgMjMgMTQuNyAyMS45IDE1IDIwLjVDMTguNSAxOS4zIDIxIDE1LjkgMjEgMTJNMTIgNUMxMS40IDUgMTEgNC42IDExIDRTMTEuNCAzIDEyIDMgMTMgMy40IDEzIDQgMTIuNiA1IDEyIDVNMTIgMjFDMTEuNCAyMSAxMSAyMC42IDExIDIwUzExLjQgMTkgMTIgMTkgMTMgMTkuNCAxMyAyMCAxMi42IDIxIDEyIDIxTTEyIDlDMTMuNyA5IDE1IDEwLjMgMTUgMTJTMTMuNyAxNSAxMiAxNSA5IDEzLjcgOSAxMiAxMC4zIDkgMTIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0VHJhbnNmZXIgPSBcIk0xNi41LDE1LjVIMjJWMTdIMTYuNVYxOC43NUwxNCwxNi4yNUwxNi41LDEzLjc1VjE1LjVNMTkuNSwxOS43NVYxOEwyMiwyMC41TDE5LjUsMjNWMjEuMjVIMTRWMTkuNzVIMTkuNU05LjUsNS41QTIsMiAwIDAsMSA3LjUsMy41QTIsMiAwIDAsMSA5LjUsMS41QTIsMiAwIDAsMSAxMS41LDMuNUEyLDIgMCAwLDEgOS41LDUuNU01Ljc1LDguOUw0LDkuNjVWMTNIMlY4LjNMNy4yNSw2LjE1QzcuNSw2LjA1IDcuNzUsNiA4LDZDOC43LDYgOS4zNSw2LjM1IDkuNyw2Ljk1TDEwLjY1LDguNTVDMTEuNTUsMTAgMTMuMTUsMTEgMTUsMTFWMTNDMTIuOCwxMyAxMC44NSwxMiA5LjU1LDEwLjRMOC45NSwxMy40TDExLDE1LjQ1VjIzSDlWMTdMNi44NSwxNUw1LjEsMjNIM0w1Ljc1LDguOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0aW9uID0gXCJNMTUsMkE3LDcgMCAwLDEgMjIsOUMyMiwxMS43MSAyMC40NiwxNC4wNSAxOC4yMiwxNS4yMkMxNy41NSwxNi41IDE2LjUsMTcuNTUgMTUuMjIsMTguMjJDMTQuMDUsMjAuNDYgMTEuNzEsMjIgOSwyMkE3LDcgMCAwLDEgMiwxNUMyLDEyLjI5IDMuNTQsOS45NSA1Ljc4LDguNzhDNi40NSw3LjUgNy41LDYuNDUgOC43OCw1Ljc4QzkuOTUsMy41NCAxMi4yOSwyIDE1LDJNMTIsMTlBNyw3IDAgMCwxIDUsMTJDNC4zNywxMi44NCA0LDEzLjg3IDQsMTVBNSw1IDAgMCwwIDksMjBDMTAuMTMsMjAgMTEuMTYsMTkuNjMgMTIsMTlNMTUsMTZBNyw3IDAgMCwxIDgsOUg4QzcuMzcsOS44NCA3LDEwLjg3IDcsMTJBNSw1IDAgMCwwIDEyLDE3QzEzLjEzLDE3IDE0LjE2LDE2LjYzIDE1LDE2VjE2TTE1LDRDMTMuODcsNCAxMi44NCw0LjM3IDEyLDVWNUE3LDcgMCAwLDEgMTksMTJIMTlDMTkuNjMsMTEuMTYgMjAsMTAuMTMgMjAsOUE1LDUgMCAwLDAgMTUsNE0xMCw5QTUsNSAwIDAsMCAxNSwxNEMxNS42LDE0IDE2LjE3LDEzLjkgMTYuNywxMy43QzE2LjksMTMuMTcgMTcsMTIuNiAxNywxMkE1LDUgMCAwLDAgMTIsN0MxMS40LDcgMTAuODMsNy4xIDEwLjMsNy4zQzEwLjEsNy44MyAxMCw4LjQgMTAsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0aW9uTWFza2VkID0gXCJNMTUsMkMxNi45NCwyIDE4LjU5LDIuNyAxOS45NSw0LjA1QzIxLjMsNS40MSAyMiw3LjA2IDIyLDlDMjIsMTAuNTYgMjEuNSwxMS45NiAyMC41OCwxMy4yQzE5LjY0LDE0LjQzIDE4LjQ0LDE1LjI3IDE2Ljk3LDE1LjdMMTcsMTUuMzhWMTVDMTcsMTIuODEgMTYuMjMsMTAuOTMgMTQuNjUsOS4zNUMxMy4wNyw3Ljc3IDExLjE5LDcgOSw3SDguNjNMOC4zLDcuMDNDOC43Myw1LjU2IDkuNTcsNC4zNiAxMC44LDMuNDJDMTIuMDQsMi41IDEzLjQ0LDIgMTUsMk05LDhBNyw3IDAgMCwxIDE2LDE1QTcsNyAwIDAsMSA5LDIyQTcsNyAwIDAsMSAyLDE1QTcsNyAwIDAsMSA5LDhNOSwxMEE1LDUgMCAwLDAgNCwxNUE1LDUgMCAwLDAgOSwyMEE1LDUgMCAwLDAgMTQsMTVBNSw1IDAgMCwwIDksMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNsYXRlID0gXCJNMTIuODcsMTUuMDdMMTAuMzMsMTIuNTZMMTAuMzYsMTIuNTNDMTIuMSwxMC41OSAxMy4zNCw4LjM2IDE0LjA3LDZIMTdWNEgxMFYySDhWNEgxVjZIMTIuMTdDMTEuNSw3LjkyIDEwLjQ0LDkuNzUgOSwxMS4zNUM4LjA3LDEwLjMyIDcuMyw5LjE5IDYuNjksOEg0LjY5QzUuNDIsOS42MyA2LjQyLDExLjE3IDcuNjcsMTIuNTZMMi41OCwxNy41OEw0LDE5TDksMTRMMTIuMTEsMTcuMTFMMTIuODcsMTUuMDdNMTguNSwxMEgxNi41TDEyLDIySDE0TDE1LjEyLDE5SDE5Ljg3TDIxLDIySDIzTDE4LjUsMTBNMTUuODgsMTdMMTcuNSwxMi42N0wxOS4xMiwxN0gxNS44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2xhdGVPZmYgPSBcIk0xMi4xNyw1LjgxQzExLjg3LDYuNjkgMTEuNDcsNy41NSAxMSw4LjM5TDEyLjM1LDkuNzRDMTMuMTEsOC41IDEzLjcxLDcuMTggMTQuMTMsNS44MUgxNy4xNlYzLjc1SDkuOTRWMS42OUg3Ljg3VjMuNzVINi4zN0w4LjQzLDUuODFIMTIuMTdNMTUuNTMsMTIuOTFMMTcuMDMsMTQuNDFMMTcuNjcsMTIuNjlMMTkuMDgsMTYuNDdMMjIuMzksMTkuNzdMMTguNyw5Ljk0SDE2LjY0TDE1LjUzLDEyLjkxTTEuMzEsMS4zMUwwLDIuNjJMMS4xMywzLjc1SDAuNjVWNS44MUgzLjE5TDUuMjYsNy44OEg0LjQ2QzUuMjEsOS41NiA2LjI0LDExLjE1IDcuNTMsMTIuNThMMi4yOCwxNy43NkwzLjc1LDE5LjIyTDguOTEsMTQuMDdMMTIuMTEsMTcuMjdMMTIuOCwxNS40M0wxNC4xLDE2LjcyTDEyLDIyLjMxSDE0LjA2TDE1LjIyLDE5LjIySDE2LjZMMjEuMzgsMjRMMjIuNjksMjIuNjlMMS4zMSwxLjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zbWlzc2lvblRvd2VyID0gXCJNOC4yOCw1LjQ1TDYuNSw0LjU1TDcuNzYsMkgxNi4yM0wxNy41LDQuNTVMMTUuNzIsNS40NEwxNSw0SDlMOC4yOCw1LjQ1TTE4LjYyLDhIMTQuMDlMMTMuMyw1SDEwLjdMOS45MSw4SDUuMzhMNC4xLDEwLjU1TDUuODksMTEuNDRMNi42MiwxMEgxNy4zOEwxOC4xLDExLjQ1TDE5Ljg5LDEwLjU2TDE4LjYyLDhNMTcuNzcsMjJIMTUuN0wxNS40NiwyMS4xTDEyLDE1LjlMOC41MywyMS4xTDguMywyMkg2LjIzTDkuMTIsMTFIMTEuMTlMMTAuODMsMTIuMzVMMTIsMTQuMUwxMy4xNiwxMi4zNUwxMi44MSwxMUgxNC44OEwxNy43NywyMk0xMS40LDE1TDEwLjUsMTMuNjVMOS4zMiwxOC4xM0wxMS40LDE1TTE0LjY4LDE4LjEyTDEzLjUsMTMuNjRMMTIuNiwxNUwxNC42OCwxOC4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFzaENhbiA9IFwiTTksM1Y0SDRWNkg1VjE5QTIsMiAwIDAsMCA3LDIxSDE3QTIsMiAwIDAsMCAxOSwxOVY2SDIwVjRIMTVWM0g5TTksOEgxMVYxN0g5VjhNMTMsOEgxNVYxN0gxM1Y4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYXNoQ2FuT3V0bGluZSA9IFwiTTksM1Y0SDRWNkg1VjE5QTIsMiAwIDAsMCA3LDIxSDE3QTIsMiAwIDAsMCAxOSwxOVY2SDIwVjRIMTVWM0g5TTcsNkgxN1YxOUg3VjZNOSw4VjE3SDExVjhIOU0xMyw4VjE3SDE1VjhIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJheSA9IFwiTTIgMTJINFYxN0gyMFYxMkgyMlYxN0EyIDIgMCAwIDEgMjAgMTlINEEyIDIgMCAwIDEgMiAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5QWxlcnQgPSBcIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdBMiAyIDAgMCAxIDIwIDE5SDRBMiAyIDAgMCAxIDIgMTdNMTMgMTJIMTFWMTRIMTNNMTMgNEgxMVYxMEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5RnVsbCA9IFwiTTE4IDVINlY3SDE4TTYgOUgxOFYxMUg2TTIgMTJINFYxN0gyMFYxMkgyMlYxN0EyIDIgMCAwIDEgMjAgMTlINEEyIDIgMCAwIDEgMiAxN00xOCAxM0g2VjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYXlNaW51cyA9IFwiTTE2IDEwSDhWOEgxNk0yIDE3QTIgMiAwIDAgMCA0IDE5SDIwQTIgMiAwIDAgMCAyMiAxN1YxMkgyMFYxN0g0VjEySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJheVBsdXMgPSBcIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdBMiAyIDAgMCAxIDIwIDE5SDRBMiAyIDAgMCAxIDIgMTdNMTEgNUgxM1Y4SDE2VjEwSDEzVjEzSDExVjEwSDhWOEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5UmVtb3ZlID0gXCJNMiAxN0EyIDIgMCAwIDAgNCAxOUgyMEEyIDIgMCAwIDAgMjIgMTdWMTJIMjBWMTdINFYxMkgyTTE0LjEyIDUuNDZMMTUuNTQgNi44OEwxMy40MSA5TDE1LjU0IDExLjEyTDE0LjEyIDEyLjU0TDEyIDEwLjQxTDkuODggMTIuNTRMOC40NiAxMS4xMkwxMC41OSA5TDguNDYgNi44OEw5Ljg4IDUuNDZMMTIgNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmVhc3VyZUNoZXN0ID0gXCJNNSw0SDE5QTMsMyAwIDAsMSAyMiw3VjExSDE1VjEwSDlWMTFIMlY3QTMsMyAwIDAsMSA1LDRNMTEsMTFIMTNWMTNIMTFWMTFNMiwxMkg5VjEzTDExLDE1SDEzTDE1LDEzVjEySDIyVjIwSDJWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlZSA9IFwiTTExLDIxVjE2Ljc0QzEwLjUzLDE2LjkxIDEwLjAzLDE3IDkuNSwxN0M3LDE3IDUsMTUgNSwxMi41QzUsMTEuMjMgNS41LDEwLjA5IDYuMzYsOS4yN0M2LjEzLDguNzMgNiw4LjEzIDYsNy41QzYsNSA4LDMgMTAuNSwzQzEyLjA2LDMgMTMuNDQsMy44IDE0LjI1LDVDMTQuMzMsNSAxNC40MSw1IDE0LjUsNUE1LjUsNS41IDAgMCwxIDIwLDEwLjVBNS41LDUuNSAwIDAsMSAxNC41LDE2QzE0LDE2IDEzLjUsMTUuOTMgMTMsMTUuNzlWMjFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlZU91dGxpbmUgPSBcIk0xMC41LDNDOCwzIDYsNSA2LDcuNUM2LDguMTEgNi4xMyw4LjcxIDYuMzcsOS4yN0M1LjUsMTAuMTIgNSwxMS4yOCA1LDEyLjVDNSwxNSA3LDE3IDkuNSwxN0MxMCwxNyAxMC41LDE2Ljg5IDExLDE2LjcyVjIxSDEzVjE1Ljc3QzEzLjUsMTUuOTEgMTQsMTYgMTQuNSwxNkE1LjUsNS41IDAgMCwwIDIwLDEwLjVBNS41LDUuNSAwIDAsMCAxNC41LDVDMTQuNDEsNSAxNC4zMyw1IDE0LjI0LDVDMTMuNDEsMy43NiAxMiwzIDEwLjUsM00xMC41LDVDMTEuODIsNSAxMi45MSw2LjAzIDEzLDcuMzVDMTMuNDYsNy4xMiAxNCw3IDE0LjUsN0EzLjUsMy41IDAgMCwxIDE4LDEwLjVBMy41LDMuNSAwIDAsMSAxNC41LDE0QzEzLjU0LDE0IDEyLjYzLDEzLjYxIDExLjk2LDEyLjkxQzExLjc2LDE0LjEyIDEwLjcyLDE1IDkuNSwxNUEyLjUsMi41IDAgMCwxIDcsMTIuNUM3LDExLjEyIDcuOCwxMC41NCA5LDkuNzlDOC4yLDguNzYgOCw4LjE2IDgsNy41QTIuNSwyLjUgMCAwLDEgMTAuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZWxsbyA9IFwiTTE5LjUsMkg0LjVBMi41LDIuNSAwIDAsMCAyLDQuNVYxOS41QTIuNSwyLjUgMCAwLDAgNC41LDIySDE5LjVBMi41LDIuNSAwIDAsMCAyMiwxOS41VjQuNUEyLjUsMi41IDAgMCwwIDE5LjUsMk0xMC43LDE3LjJBMS4yLDEuMiAwIDAsMSA5LjUsMTguNEg1LjhDNS4xNCwxOC40IDQuNiwxNy44NiA0LjYsMTcuMlY1LjhBMS4yLDEuMiAwIDAsMSA1LjgsNC42SDkuNUMxMC4xNiw0LjYgMTAuNyw1LjE0IDEwLjcsNS44VjE3LjJNMTkuNCwxMi4yQzE5LjQsMTIuODYgMTguODYsMTMuNCAxOC4yLDEzLjRIMTQuNUMxMy44NCwxMy40IDEzLjMsMTIuODYgMTMuMywxMi4yVjUuOEMxMy4zLDUuMTQgMTMuODQsNC42IDE0LjUsNC42SDE4LjJDMTguODYsNC42IDE5LjQsNS4xNCAxOS40LDUuOFYxMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZW5kaW5nRG93biA9IFwiTTE2LDE4TDE4LjI5LDE1LjcxTDEzLjQxLDEwLjgzTDkuNDEsMTQuODNMMiw3LjQxTDMuNDEsNkw5LjQxLDEyTDEzLjQxLDhMMTkuNzEsMTQuMjlMMjIsMTJWMThIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlbmRpbmdOZXV0cmFsID0gXCJNMjIsMTJMMTgsOFYxMUgzVjEzSDE4VjE2TDIyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZW5kaW5nVXAgPSBcIk0xNiw2TDE4LjI5LDguMjlMMTMuNDEsMTMuMTdMOS40MSw5LjE3TDIsMTYuNTlMMy40MSwxOEw5LjQxLDEyTDEzLjQxLDE2TDE5LjcxLDkuNzFMMjIsMTJWNkgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmlhbmdsZSA9IFwiTTEsMjFIMjNMMTIsMlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyaWFuZ2xlT3V0bGluZSA9IFwiTTEyLDJMMSwyMUgyM00xMiw2TDE5LjUzLDE5SDQuNDdcIjtcclxuZXhwb3J0IHZhciBtZGlUcmlhbmdsZVdhdmUgPSBcIk0yMiAxMkwxNyAyMkw3LjEgNi4wNEw0LjI0IDEySDJMNyAyTDE2LjkgMTcuOTZMMTkuNzYgMTJIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJpZm9yY2UgPSBcIk0xLjUsMjFMMTIsMy41TDIyLjUsMjFIMS41TTEyLDIxTDE3LDEySDdMMTIsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJvcGh5ID0gXCJNMTggMkMxNy4xIDIgMTYgMyAxNiA0SDhDOCAzIDYuOSAyIDYgMkgyVjExQzIgMTIgMyAxMyA0IDEzSDYuMkM2LjYgMTUgNy45IDE2LjcgMTEgMTdWMTkuMDhDOCAxOS41NCA4IDIyIDggMjJIMTZDMTYgMjIgMTYgMTkuNTQgMTMgMTkuMDhWMTdDMTYuMSAxNi43IDE3LjQgMTUgMTcuOCAxM0gyMEMyMSAxMyAyMiAxMiAyMiAxMVYySDE4TTYgMTFINFY0SDZWMTFNMjAgMTFIMThWNEgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcm9waHlBd2FyZCA9IFwiTTE1LjIgMTAuN0wxNi42IDE2TDEyIDEyLjJMNy40IDE2TDguOCAxMC44TDQuNiA3LjNMMTAgN0wxMiAyTDE0IDdMMTkuNCA3LjNMMTUuMiAxMC43TTE0IDE5SDEzVjE2TDEyIDE1TDExIDE2VjE5SDEwQzguOSAxOSA4IDE5LjkgOCAyMVYyMkgxNlYyMUMxNiAxOS45IDE1LjExIDE5IDE0IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyb3BoeUJyb2tlbiA9IFwiTTYuMiAxM0M2LjYgMTQuOCA3LjYgMTYuMyAxMCAxNi44VjE5LjM0QzggMjAuMTIgOCAyMiA4IDIySDEzLjJMMTAuMiAxNUwxNC4yIDEwTDEwLjcgNEg4QzggMyA2LjkgMiA2IDJIMlYxMUMyIDEyIDMgMTMgNCAxM0g2LjJNNiAxMUg0VjRINlYxMU0xNy44IDEzSDIwQzIxIDEzIDIyIDEyIDIyIDExVjJIMThDMTcuMSAyIDE2IDMgMTYgNEgxMy45TDE2LjcgMTBMMTIuMiAxNUwxMy4yIDIySDE2QzE2IDIyIDE2IDIwLjEyIDE0IDE5LjM0TDE0IDE2Ljg1QzE2LjM5IDE2LjM1IDE3LjUgMTQuNyAxNy44IDEzTTIwIDExSDE4VjRIMjBWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJvcGh5T3V0bGluZSA9IFwiTTE4IDJDMTcuMSAyIDE2IDMgMTYgNEg4QzggMyA2LjkgMiA2IDJIMlYxMUMyIDEyIDMgMTMgNCAxM0g2LjJDNi42IDE1IDcuOSAxNi43IDExIDE3VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE3QzE2LjEgMTYuNyAxNy40IDE1IDE3LjggMTNIMjBDMjEgMTMgMjIgMTIgMjIgMTFWMkgxOE02IDExSDRWNEg2VjExTTE2IDExLjVDMTYgMTMuNDMgMTUuNDIgMTUgMTIgMTVDOC41OSAxNSA4IDEzLjQzIDggMTEuNVY2SDE2VjExLjVNMjAgMTFIMThWNEgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcm9waHlWYXJpYW50ID0gXCJNMTcgNFYySDdWNEgyVjExQzIgMTIuMSAyLjkgMTMgNCAxM0g3LjFDNy41IDE0Ljk2IDkuMDQgMTYuNSAxMSAxNi45VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE2LjlDMTQuOTYgMTYuNSAxNi41IDE0Ljk2IDE2LjkgMTNIMjBDMjEuMSAxMyAyMiAxMi4xIDIyIDExVjRIMTdNNCAxMVY2SDdWMTFMNCAxMU0yMCAxMUwxNyAxMVY2SDIwTDIwIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyb3BoeVZhcmlhbnRPdXRsaW5lID0gXCJNMTcgNFYySDdWNEgyVjExQzIgMTIuMSAyLjkgMTMgNCAxM0g3LjFDNy41IDE0Ljk2IDkuMDQgMTYuNSAxMSAxNi45VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE2LjlDMTQuOTYgMTYuNSAxNi41IDE0Ljk2IDE2LjkgMTNIMjBDMjEuMSAxMyAyMiAxMi4xIDIyIDExVjRIMTdNNCAxMVY2SDdWMTFMNCAxMU0xNSAxMkMxNSAxMy42NSAxMy42NSAxNSAxMiAxNVM5IDEzLjY1IDkgMTJWNEgxNVYxMk0yMCAxMUwxNyAxMVY2SDIwTDIwIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrID0gXCJNMTgsMTguNUExLjUsMS41IDAgMCwxIDE2LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVNMTkuNSw5LjVMMjEuNDYsMTJIMTdWOS41TTYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNU0yMCw4SDE3VjRIM0MxLjg5LDQgMSw0Ljg5IDEsNlYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTJMMjAsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja0NoZWNrID0gXCJNMyw0SDE3VjhIMjBMMjMsMTJWMTdIMjFBMywzIDAgMCwxIDE4LDIwQTMsMyAwIDAsMSAxNSwxN0g5QTMsMyAwIDAsMSA2LDIwQTMsMyAwIDAsMSAzLDE3SDFWNkMxLDQuODkgMS45LDQgMyw0TTE3LDkuNVYxMkgyMS40N0wxOS41LDkuNUgxN002LDE1LjVBMS41LDEuNSAwIDAsMCA0LjUsMTdBMS41LDEuNSAwIDAsMCA2LDE4LjVBMS41LDEuNSAwIDAsMCA3LjUsMTdBMS41LDEuNSAwIDAsMCA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwwIDE2LjUsMTdBMS41LDEuNSAwIDAsMCAxOCwxOC41QTEuNSwxLjUgMCAwLDAgMTkuNSwxN0ExLjUsMS41IDAgMCwwIDE4LDE1LjVNOCwxNEwxNCw4TDEyLjU5LDYuNThMOCwxMS4xN0w1LjkxLDkuMDhMNC41LDEwLjVMOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja0NoZWNrT3V0bGluZSA9IFwiTTE4IDE4LjVDMTguODMgMTguNSAxOS41IDE3LjgzIDE5LjUgMTdDMTkuNSAxNi4xNyAxOC44MyAxNS41IDE4IDE1LjVDMTcuMTcgMTUuNSAxNi41IDE2LjE3IDE2LjUgMTdDMTYuNSAxNy44MyAxNy4xNyAxOC41IDE4IDE4LjVNMTkuNSA5LjVIMTdWMTJIMjEuNDZMMTkuNSA5LjVNNiAxOC41QzYuODMgMTguNSA3LjUgMTcuODMgNy41IDE3QzcuNSAxNi4xNyA2LjgzIDE1LjUgNiAxNS41QzUuMTcgMTUuNSA0LjUgMTYuMTcgNC41IDE3QzQuNSAxNy44MyA1LjE3IDE4LjUgNiAxOC41TTIwIDhMMjMgMTJWMTdIMjFDMjEgMTguNjYgMTkuNjYgMjAgMTggMjBDMTYuMzQgMjAgMTUgMTguNjYgMTUgMTdIOUM5IDE4LjY2IDcuNjYgMjAgNiAyMEM0LjM0IDIwIDMgMTguNjYgMyAxN0gxVjZDMSA0Ljg5IDEuODkgNCAzIDRIMTdWOEgyME0zIDZWMTVIMy43NkM0LjMxIDE0LjM5IDUuMTEgMTQgNiAxNEM2Ljg5IDE0IDcuNjkgMTQuMzkgOC4yNCAxNUgxNVY2SDNNNSAxMC41TDYuNSA5TDggMTAuNUwxMS41IDdMMTMgOC41TDggMTMuNUw1IDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1Y2tEZWxpdmVyeSA9IFwiTTMsNEEyLDIgMCAwLDAgMSw2VjE3SDNBMywzIDAgMCwwIDYsMjBBMywzIDAgMCwwIDksMTdIMTVBMywzIDAgMCwwIDE4LDIwQTMsMyAwIDAsMCAyMSwxN0gyM1YxMkwyMCw4SDE3VjRNMTAsNkwxNCwxMEwxMCwxNFYxMUg0VjlIMTBNMTcsOS41SDE5LjVMMjEuNDcsMTJIMTdNNiwxNS41QTEuNSwxLjUgMCAwLDEgNy41LDE3QTEuNSwxLjUgMCAwLDEgNiwxOC41QTEuNSwxLjUgMCAwLDEgNC41LDE3QTEuNSwxLjUgMCAwLDEgNiwxNS41TTE4LDE1LjVBMS41LDEuNSAwIDAsMSAxOS41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTguNUExLjUsMS41IDAgMCwxIDE2LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrRGVsaXZlcnlPdXRsaW5lID0gXCJNMTggMTguNUMxOC44MyAxOC41IDE5LjUgMTcuODMgMTkuNSAxN0MxOS41IDE2LjE3IDE4LjgzIDE1LjUgMTggMTUuNUMxNy4xNyAxNS41IDE2LjUgMTYuMTcgMTYuNSAxN0MxNi41IDE3LjgzIDE3LjE3IDE4LjUgMTggMTguNU0xOS41IDkuNUgxN1YxMkgyMS40NkwxOS41IDkuNU02IDE4LjVDNi44MyAxOC41IDcuNSAxNy44MyA3LjUgMTdDNy41IDE2LjE3IDYuODMgMTUuNSA2IDE1LjVDNS4xNyAxNS41IDQuNSAxNi4xNyA0LjUgMTdDNC41IDE3LjgzIDUuMTcgMTguNSA2IDE4LjVNMjAgOEwyMyAxMlYxN0gyMUMyMSAxOC42NiAxOS42NiAyMCAxOCAyMEMxNi4zNCAyMCAxNSAxOC42NiAxNSAxN0g5QzkgMTguNjYgNy42NiAyMCA2IDIwQzQuMzQgMjAgMyAxOC42NiAzIDE3SDFWNkMxIDQuODkgMS44OSA0IDMgNEgxN1Y4SDIwTTMgNlYxNUgzLjc2QzQuMzEgMTQuMzkgNS4xMSAxNCA2IDE0QzYuODkgMTQgNy42OSAxNC4zOSA4LjI0IDE1SDE1VjZIM00xMCA3TDEzLjUgMTAuNUwxMCAxNFYxMS41SDVWOS41SDEwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1Y2tGYXN0ID0gXCJNMywxMy41TDIuMjUsMTJINy41TDYuOSwxMC41SDJMMS4yNSw5SDkuMDVMOC40NSw3LjVIMS4xMUwwLjI1LDZINEEyLDIgMCAwLDEgNiw0SDE4VjhIMjFMMjQsMTJWMTdIMjJBMywzIDAgMCwxIDE5LDIwQTMsMyAwIDAsMSAxNiwxN0gxMkEzLDMgMCAwLDEgOSwyMEEzLDMgMCAwLDEgNiwxN0g0VjEzLjVIM00xOSwxOC41QTEuNSwxLjUgMCAwLDAgMjAuNSwxN0ExLjUsMS41IDAgMCwwIDE5LDE1LjVBMS41LDEuNSAwIDAsMCAxNy41LDE3QTEuNSwxLjUgMCAwLDAgMTksMTguNU0yMC41LDkuNUgxOFYxMkgyMi40NkwyMC41LDkuNU05LDE4LjVBMS41LDEuNSAwIDAsMCAxMC41LDE3QTEuNSwxLjUgMCAwLDAgOSwxNS41QTEuNSwxLjUgMCAwLDAgNy41LDE3QTEuNSwxLjUgMCAwLDAgOSwxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrRmFzdE91dGxpbmUgPSBcIk0uNzUgNy41SDEwLjVMMTEuMjUgOUgxLjVMLjc1IDcuNU0xLjc1IDEwLjVIMTEuNUwxMi4yNSAxMkgyLjVMMS43NSAxMC41TTE4IDE4LjVDMTguODMgMTguNSAxOS41IDE3LjgzIDE5LjUgMTdDMTkuNSAxNi4xNyAxOC44MyAxNS41IDE4IDE1LjVDMTcuMTcgMTUuNSAxNi41IDE2LjE3IDE2LjUgMTdDMTYuNSAxNy44MyAxNy4xNyAxOC41IDE4IDE4LjVNMTkuNSA5LjVIMTdWMTJIMjEuNDZMMTkuNSA5LjVNOCAxOC41QzguODMgMTguNSA5LjUgMTcuODMgOS41IDE3QzkuNSAxNi4xNyA4LjgzIDE1LjUgOCAxNS41QzcuMTcgMTUuNSA2LjUgMTYuMTcgNi41IDE3QzYuNSAxNy44MyA3LjE3IDE4LjUgOCAxOC41TTIwIDhMMjMgMTJWMTdIMjFDMjEgMTguNjYgMTkuNjYgMjAgMTggMjBDMTYuMzQgMjAgMTUgMTguNjYgMTUgMTdIMTFDMTEgMTguNjYgOS42NSAyMCA4IDIwQzYuMzQgMjAgNSAxOC42NiA1IDE3SDNWMTMuNSAxMy41SDVWMTVINS43NkM2LjMxIDE0LjM5IDcuMTEgMTQgOCAxNEM4Ljg5IDE0IDkuNjkgMTQuMzkgMTAuMjQgMTVIMTVWNkgzVjZDMyA0Ljg5IDMuODkgNCA1IDRIMTdWOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja091dGxpbmUgPSBcIk0xOCAxOC41QzE4LjgzIDE4LjUgMTkuNSAxNy44MyAxOS41IDE3QzE5LjUgMTYuMTcgMTguODMgMTUuNSAxOCAxNS41QzE3LjE3IDE1LjUgMTYuNSAxNi4xNyAxNi41IDE3QzE2LjUgMTcuODMgMTcuMTcgMTguNSAxOCAxOC41TTE5LjUgOS41SDE3VjEySDIxLjQ2TDE5LjUgOS41TTYgMTguNUM2LjgzIDE4LjUgNy41IDE3LjgzIDcuNSAxN0M3LjUgMTYuMTcgNi44MyAxNS41IDYgMTUuNUM1LjE3IDE1LjUgNC41IDE2LjE3IDQuNSAxN0M0LjUgMTcuODMgNS4xNyAxOC41IDYgMTguNU0yMCA4TDIzIDEyVjE3SDIxQzIxIDE4LjY2IDE5LjY2IDIwIDE4IDIwQzE2LjM0IDIwIDE1IDE4LjY2IDE1IDE3SDlDOSAxOC42NiA3LjY2IDIwIDYgMjBDNC4zNCAyMCAzIDE4LjY2IDMgMTdIMVY2QzEgNC44OSAxLjg5IDQgMyA0SDE3VjhIMjBNMyA2VjE1SDMuNzZDNC4zMSAxNC4zOSA1LjExIDE0IDYgMTRDNi44OSAxNCA3LjY5IDE0LjM5IDguMjQgMTVIMTVWNkgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrVHJhaWxlciA9IFwiTTIyLDE1VjE3SDEwQTMsMyAwIDAsMSA3LDIwQTMsMyAwIDAsMSA0LDE3SDJWNkEyLDIgMCAwLDEgNCw0SDE3QTIsMiAwIDAsMSAxOSw2VjE1SDIyTTcsMTZBMSwxIDAgMCwwIDYsMTdBMSwxIDAgMCwwIDcsMThBMSwxIDAgMCwwIDgsMTdBMSwxIDAgMCwwIDcsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1bXBldCA9IFwiTTIyIDZDMjEgMTEgMTUgMTEgMTUgMTFINEMzIDExIDIgMTAgMiAxMEgxVjE0SDJDMiAxNCAzIDEzIDQgMTNINC4zQzQuMSAxMy4zIDQgMTMuNiA0IDE0VjE2QzQgMTcuMSA0LjkgMTggNiAxOEg3VjE5SDlWMThIMTBWMTlIMTJWMThIMTNWMTlIMTVWMThIMTZDMTcuMSAxOCAxOCAxNy4xIDE4IDE2VjE0QzE4IDEzLjkgMTggMTMuNyAxNy45IDEzLjZDMTkuNiAxNC4yIDIxLjQgMTUuNCAyMiAxOEgyM1Y2SDIyTTYgMTYuNUM1LjcgMTYuNSA1LjUgMTYuMyA1LjUgMTZWMTRDNS41IDEzLjcgNS43IDEzLjUgNiAxMy41SDdWMTYuNUg2TTkgMTYuNVYxMy41SDEwVjE2LjVIOU0xMiAxNi41VjEzLjVIMTNWMTYuNUgxMk0xNi41IDE2QzE2LjUgMTYuMyAxNi4zIDE2LjUgMTYgMTYuNUgxNVYxMy41SDE2QzE2LjMgMTMuNSAxNi41IDEzLjcgMTYuNSAxNFYxNk05IDEwSDdWOUg5VjEwTTEyIDEwSDEwVjlIMTJWMTBNMTUgMTBIMTNWOUgxNVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUc2hpcnRDcmV3ID0gXCJNMTYsMjFIOEExLDEgMCAwLDEgNywyMFYxMi4wN0w1LjcsMTMuMDdDNS4zMSwxMy40NiA0LjY4LDEzLjQ2IDQuMjksMTMuMDdMMS40NiwxMC4yOUMxLjA3LDkuOSAxLjA3LDkuMjcgMS40Niw4Ljg4TDcuMzQsM0g5QzksNC4xIDEwLjM0LDUgMTIsNUMxMy42Niw1IDE1LDQuMSAxNSwzSDE2LjY2TDIyLjU0LDguODhDMjIuOTMsOS4yNyAyMi45Myw5LjkgMjIuNTQsMTAuMjlMMTkuNzEsMTMuMTJDMTkuMzIsMTMuNSAxOC42OSwxMy41IDE4LjMsMTMuMTJMMTcsMTIuMTJWMjBBMSwxIDAgMCwxIDE2LDIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHNoaXJ0Q3Jld091dGxpbmUgPSBcIk0xNiwyMUg4QTEsMSAwIDAsMSA3LDIwVjEyLjA3TDUuNywxMy4xMkM1LjMxLDEzLjUgNC42OCwxMy41IDQuMjksMTMuMTJMMS40NiwxMC4yOUMxLjA3LDkuOSAxLjA3LDkuMjcgMS40Niw4Ljg4TDcuMzQsM0g5QzksNC4xIDEwLjM0LDUgMTIsNUMxMy42Niw1IDE1LDQuMSAxNSwzSDE2LjY2TDIyLjU0LDguODhDMjIuOTMsOS4yNyAyMi45Myw5LjkgMjIuNTQsMTAuMjlMMTkuNzEsMTMuMTJDMTkuMzIsMTMuNSAxOC42OSwxMy41IDE4LjMsMTMuMTJMMTcsMTIuMDdWMjBBMSwxIDAgMCwxIDE2LDIxTTIwLjQyLDkuNThMMTYuMTEsNS4yOEMxNS44LDUuNjMgMTUuNDMsNS45NCAxNSw2LjJDMTQuMTYsNi43IDEzLjEzLDcgMTIsN0MxMC4zLDcgOC43OSw2LjMyIDcuODksNS4yOEwzLjU4LDkuNThMNSwxMUw4LDlIOVYxOUgxNVY5SDE2TDE5LDExTDIwLjQyLDkuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHNoaXJ0ViA9IFwiTTE2LDIxSDhBMSwxIDAgMCwxIDcsMjBWMTIuMDdMNS43LDEzLjA3QzUuMzEsMTMuNDYgNC42OCwxMy40NiA0LjI5LDEzLjA3TDEuNDYsMTAuMjlDMS4wNyw5LjkgMS4wNyw5LjI3IDEuNDYsOC44OEw3LjM0LDNIOUM5LjI5LDQuOCAxMC40LDYuMzcgMTIsNy4yNUMxMy42LDYuMzcgMTQuNzEsNC44IDE1LDNIMTYuNjZMMjIuNTQsOC44OEMyMi45Myw5LjI3IDIyLjkzLDkuOSAyMi41NCwxMC4yOUwxOS43MSwxMy4xMkMxOS4zMiwxMy41IDE4LjY5LDEzLjUgMTguMywxMy4xMkwxNywxMi4xMlYyMEExLDEgMCAwLDEgMTYsMjFcIjtcclxuZXhwb3J0IHZhciBtZGlUc2hpcnRWT3V0bGluZSA9IFwiTTE2LDIxSDhBMSwxIDAgMCwxIDcsMjBWMTIuMDdMNS43LDEzLjEyQzUuMzEsMTMuNSA0LjY4LDEzLjUgNC4yOSwxMy4xMkwxLjQ2LDEwLjI5QzEuMDcsOS45IDEuMDcsOS4yNyAxLjQ2LDguODhMNy4zNCwzSDlDOSw0LjEgMTAsNiAxMiw3LjI1QzE0LDYgMTUsNC4xIDE1LDNIMTYuNjZMMjIuNTQsOC44OEMyMi45Myw5LjI3IDIyLjkzLDkuOSAyMi41NCwxMC4yOUwxOS43MSwxMy4xMkMxOS4zMiwxMy41IDE4LjY5LDEzLjUgMTguMywxMy4xMkwxNywxMi4wN1YyMEExLDEgMCAwLDEgMTYsMjFNMjAuNDIsOS41OEwxNi4xMSw1LjI4QzE1LDcgMTQsOC4yNSAxMiw5LjI1QzEwLDguMjUgOSw3IDcuODksNS4yOEwzLjU4LDkuNThMNSwxMUw4LDlIOVYxOUgxNVY5SDE2TDE5LDExTDIwLjQyLDkuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXIgPSBcIk02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTcsNEExLDEgMCAwLDAgNiw1QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDgsNUExLDEgMCAwLDAgNyw0TTEwLDRBMSwxIDAgMCwwIDksNUExLDEgMCAwLDAgMTAsNkExLDEgMCAwLDAgMTEsNUExLDEgMCAwLDAgMTAsNE0xMiw4QTYsNiAwIDAsMCA2LDE0QTYsNiAwIDAsMCAxMiwyMEE2LDYgMCAwLDAgMTgsMTRBNiw2IDAgMCwwIDEyLDhNOC4xMSwxMC41SDEwQzkuNzYsMTEuODggMTAsMTIuNjcgMTAuNTgsMTMuMjlDMTEuNjgsMTQuMzYgMTIuMTYsMTUuNzEgMTEuODksMTcuNUgxMEMxMC4yNCwxNi4xMiAxMCwxNS4zMyA5LjQyLDE0LjcxQzguMzIsMTMuNjQgNy44NSwxMi4yOSA4LjExLDEwLjVNMTIuMTEsMTAuNUgxNEMxMy43NiwxMS44OCAxNCwxMi42NyAxNC41OCwxMy4yOUMxNS42OCwxNC4zNiAxNi4xNiwxNS43MSAxNS44OSwxNy41SDE0QzE0LjI0LDE2LjEyIDE0LDE1LjMzIDEzLjQyLDE0LjcxQzEyLjMyLDEzLjY0IDExLjg1LDEyLjI5IDEyLjExLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXJBbGVydCA9IFwiTTQgMkgxNkMxNy4xMSAyIDE4IDIuOSAxOCA0VjIwQzE4IDIxLjExIDE3LjExIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMk01IDRDNC40NSA0IDQgNC40NSA0IDVTNC40NSA2IDUgNiA2IDUuNTUgNiA1IDUuNTUgNCA1IDRNOCA0QzcuNDUgNCA3IDQuNDUgNyA1UzcuNDUgNiA4IDYgOSA1LjU1IDkgNSA4LjU1IDQgOCA0TTEwIDhDNi42OSA4IDQgMTAuNjkgNCAxNFM2LjY5IDIwIDEwIDIwIDE2IDE3LjMxIDE2IDE0IDEzLjMxIDggMTAgOE02LjExIDEwLjVIOEM3Ljc2IDExLjg4IDggMTIuNjcgOC41OCAxMy4yOUM5LjY4IDE0LjM2IDEwLjE2IDE1LjcxIDkuODkgMTcuNUg4QzguMjQgMTYuMTIgOCAxNS4zMyA3LjQyIDE0LjcxQzYuMzIgMTMuNjQgNS44NSAxMi4yOSA2LjExIDEwLjVNMTAuMTEgMTAuNUgxMkMxMS43NiAxMS44OCAxMiAxMi42NyAxMi41OCAxMy4yOUMxMy42OCAxNC4zNiAxNC4xNiAxNS43MSAxMy44OSAxNy41SDEyQzEyLjI0IDE2LjEyIDEyIDE1LjMzIDExLjQyIDE0LjcxQzEwLjMyIDEzLjY0IDkuODUgMTIuMjkgMTAuMTEgMTAuNU0yMCAxNUgyMlYxN0gyMFYxNU0yMCA3SDIyVjEzSDIwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXJPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQgNS44OVYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOC41OCAyMiAxOS4xIDIxLjc1IDE5LjQ2IDIxLjM1TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTIuMzIgNi43IDEwLjggNy44MiA5LjcxTDguNjEgMTAuNUg4LjExQzcuODUgMTIuMjkgOC4zMiAxMy42NCA5LjQyIDE0LjcxQzEwIDE1LjMzIDEwLjI0IDE2LjEyIDEwIDE3LjVIMTEuODlDMTIuMTYgMTUuNzEgMTEuNjggMTQuMzYgMTAuNTggMTMuMjlDMTAuMjIgMTIuOTEgMTAgMTIuNDQgOS45NSAxMS44NEwxNC4wMyAxNS45MkMxNC4xMSAxNi4zNSAxNC4xMSAxNi44NiAxNCAxNy41SDE1LjYxTDE2LjI5IDE4LjE4QzE1LjIgMTkuMyAxMy42OSAyMCAxMiAyME0xMS4yNSA4LjA1QzExLjUgOCAxMS43NSA4IDEyIDhDMTUuMzEgOCAxOCAxMC42OSAxOCAxNEMxOCAxNC4yNSAxOCAxNC41IDE3Ljk1IDE0Ljc1TDIwIDE2LjhWNEMyMCAyLjkgMTkuMTEgMiAxOCAySDZDNS43NiAyIDUuNTQgMi4wNSA1LjMzIDIuMTNMMTEuMjUgOC4wNU0xMCA0QzEwLjU1IDQgMTEgNC40NSAxMSA1UzEwLjU1IDYgMTAgNiA5IDUuNTUgOSA1IDkuNDUgNCAxMCA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1bmUgPSBcIk0zLDE3VjE5SDlWMTdIM00zLDVWN0gxM1Y1SDNNMTMsMjFWMTlIMjFWMTdIMTNWMTVIMTFWMjFIMTNNNyw5VjExSDNWMTNIN1YxNUg5VjlIN00yMSwxM1YxMUgxMVYxM0gyMU0xNSw5SDE3VjdIMjFWNUgxN1YzSDE1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVuZVZhcmlhbnQgPSBcIk04IDEzQzYuMTQgMTMgNC41OSAxNC4yOCA0LjE0IDE2SDJWMThINC4xNEM0LjU5IDE5LjcyIDYuMTQgMjEgOCAyMVMxMS40MSAxOS43MiAxMS44NiAxOEgyMlYxNkgxMS44NkMxMS40MSAxNC4yOCA5Ljg2IDEzIDggMTNNOCAxOUM2LjkgMTkgNiAxOC4xIDYgMTdDNiAxNS45IDYuOSAxNSA4IDE1UzEwIDE1LjkgMTAgMTdDMTAgMTguMSA5LjEgMTkgOCAxOU0xOS44NiA2QzE5LjQxIDQuMjggMTcuODYgMyAxNiAzUzEyLjU5IDQuMjggMTIuMTQgNkgyVjhIMTIuMTRDMTIuNTkgOS43MiAxNC4xNCAxMSAxNiAxMVMxOS40MSA5LjcyIDE5Ljg2IDhIMjJWNkgxOS44Nk0xNiA5QzE0LjkgOSAxNCA4LjEgMTQgN0MxNCA1LjkgMTQuOSA1IDE2IDVTMTggNS45IDE4IDdDMTggOC4xIDE3LjEgOSAxNiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1bmVWZXJ0aWNhbCA9IFwiTTcgM0g1VjlIN1YzTTE5IDNIMTdWMTNIMTlWM00zIDEzSDVWMjFIN1YxM0g5VjExSDNWMTNNMTUgN0gxM1YzSDExVjdIOVY5SDE1VjdNMTEgMjFIMTNWMTFIMTFWMjFNMTUgMTVWMTdIMTdWMjFIMTlWMTdIMjFWMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVuZVZlcnRpY2FsVmFyaWFudCA9IFwiTTggMTIuMTRWMkg2VjEyLjE0QzQuMjggMTIuNTkgMyAxNC4xNCAzIDE2UzQuMjggMTkuNDEgNiAxOS44NlYyMkg4VjE5Ljg2QzkuNzIgMTkuNDEgMTEgMTcuODYgMTEgMTZTOS43MiAxMi41OSA4IDEyLjE0TTcgMTRDOC4xIDE0IDkgMTQuOSA5IDE2UzguMSAxOCA3IDE4QzUuOSAxOCA1IDE3LjEgNSAxNlM1LjkgMTQgNyAxNE0xOCAySDE2VjQuMTRDMTQuMjggNC41OSAxMyA2LjE0IDEzIDhTMTQuMjggMTEuNDEgMTYgMTEuODZWMjJIMThWMTEuODZDMTkuNzIgMTEuNDEgMjEgOS44NiAyMSA4UzE5LjcyIDQuNTkgMTggNC4xNFYyTTE3IDZDMTguMSA2IDE5IDYuOSAxOSA4UzE4LjEgMTAgMTcgMTBDMTUuOSAxMCAxNSA5LjEgMTUgOFMxNS45IDYgMTcgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUdXJrZXkgPSBcIk0xMC41IDE5LjQ0QzkuNzUgMTkuOCA4LjkgMjAgOCAyMEM0LjY5IDIwIDIgMTcuMzEgMiAxNFY5QzIgNS42OSA0LjY5IDMgOCAzTDEwLjUgNy41OEM4LjEgOC44MSA2LjUgMTEgNi41IDEzLjVDNi41IDE2IDguMTEgMTguMiAxMC41IDE5LjQ0TTE2IDE4Ljk0VjIwSDE3QzE3LjU1IDIwIDE4IDIwLjQ1IDE4IDIxUzE3LjU1IDIyIDE3IDIySDE0QzEzLjQ1IDIyIDEzIDIxLjU1IDEzIDIxUzEzLjQ1IDIwIDE0IDIwVjE4Ljk0QzEwLjYxIDE4LjU2IDggMTYuMjcgOCAxMy41QzggMTAuNDYgMTEuMTMgOCAxNSA4QzE1LjE5IDggMTUuMzcgOCAxNS41NiA4QzE0Ljg0IDYuNjMgMTQgNS4yMyAxNCA0QzE0IDIuOSAxNC45IDIgMTYgMkMxOC4yMSAyIDIwIDMuNzkgMjAgNkgxOEMxOCA2IDIyIDkgMjIgMTMuNUMyMiAxNi4yNyAxOS4zOSAxOC41NiAxNiAxOC45NE0xNiA0QzE2IDQuNTUgMTYuNDUgNSAxNyA1UzE4IDQuNTUgMTggNCAxNy41NSAzIDE3IDMgMTYgMy40NSAxNiA0TTE3IDEyQzE3IDEwLjkgMTYuMTEgMTAgMTUgMTBDMTIuNzkgMTAgMTEgMTEuNzkgMTEgMTRIMTVDMTYuMTEgMTQgMTcgMTMuMTEgMTcgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVybnN0aWxlID0gXCJNMjIsMjJIMTZWMTFMMTAsNVYySDIyVjIyTTkuMTcsNi4xN0M4LjQyLDYuOTIgOCw3Ljk0IDgsOUgyVjExSDguNTVDOC45LDExLjYgOS40LDEyLjEgMTAsMTIuNDVWMTlIMTJWMTNDMTMuMDYsMTMgMTQuMDgsMTIuNTggMTQuODMsMTEuODNMOS4xNyw2LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1cm5zdGlsZU91dGxpbmUgPSBcIk0xMy40MSwxMC40MUMxMy4wNCwxMC43OSAxMi41MywxMSAxMiwxMUEyLDIgMCAwLDEgMTAsOUMxMCw4LjQ3IDEwLjIxLDcuOTYgMTAuNTksNy41OUw5LjE3LDYuMTdDOC40Miw2LjkyIDgsNy45NCA4LDlIMlYxMUg4LjU1QzguOSwxMS42IDkuNCwxMi4xIDEwLDEyLjQ1VjE5SDEyVjEzQzEzLjA2LDEzIDE0LjA4LDEyLjU4IDE0LjgzLDExLjgzTDEzLjQxLDEwLjQxTTEwLDJWNUwxNiwxMVYyMkgyMlYySDEwTTIwLDIwSDE4VjEwLjE3TDEyLDQuMTdWNEgyMFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUdXJ0bGUgPSBcIk04LjQ3LDUuOTVDOC45NSw1LjY3IDkuNDcsNS40NCAxMCw1LjI4VjRDMTAsMi45IDEwLjg3LDIgMTEuOTcsMS45N0MxMy4xMywyIDE0LDIuOSAxNCw0VjUuMjhDMTQuNTMsNS40NSAxNS4wNSw1LjY3IDE1LjUzLDUuOTVMMTMuOTMsOC4wN0gxMC4wN0w4LjQ3LDUuOTVNMTksMTJDMTksMTIuNSAxOC45NSwxMi45NSAxOC44NiwxMy40TDE2LjMzLDEyLjYyTDE1LjE0LDguOTZMMTYuNzQsNi44NUMxNy4xNyw3LjI1IDE3LjU1LDcuNyAxNy44OCw4LjJDMTguNjcsOC4xMyAxOS40Myw4LjI1IDIwLjExLDguNTlDMjEuMTQsOS4xMiAyMS44NCwxMC4xMyAyMiwxMS4yOEwxOSwxMS42NEMxOSwxMS43NiAxOSwxMS44OCAxOSwxMk01LDEyQzUsMTEuODggNSwxMS43NiA1LDExLjY1TDIsMTEuMjhDMi4xNiwxMC4xMyAyLjg2LDkuMTIgMy44OSw4LjU5QzQuNTcsOC4yNSA1LjM0LDguMTMgNi4wOCw4LjI2QzYuNDEsNy43NSA2Ljc5LDcuMjggNy4yNCw2Ljg3TDguODYsOC45NUw3LjY3LDEyLjYyTDUuMTQsMTMuNEM1LjA1LDEyLjk1IDUsMTIuNSA1LDEyTTEwLjI0LDkuNTdIMTMuNzZMMTQuODUsMTIuOTNMMTIsMTVMOS4xNSwxMi45M0wxMC4yNCw5LjU3TTguMTMsMTQuMDVMMTEuMjUsMTYuMzFWMTguOTZDMTAuNjgsMTguOSAxMC4xMywxOC43NyA5LjYyLDE4LjU4TDguMzksMjEuMzRDNy4zMywyMC44NyA2LjU3LDE5LjkgNi4zNywxOC43NkM2LjIzLDE4IDYuMzUsMTcuMjQgNi42OSwxNi41NkM2LjI0LDE2LjA0IDUuODcsMTUuNDYgNS41OSwxNC44Mkw4LjEzLDE0LjA1TTE1Ljg3LDE0LjA1TDE4LjQxLDE0LjgyQzE4LjEzLDE1LjQ2IDE3Ljc2LDE2LjA0IDE3LjMxLDE2LjU2QzE3LjY1LDE3LjI0IDE3Ljc3LDE4IDE3LjY0LDE4Ljc2QzE3LjQzLDE5LjkgMTYuNjcsMjAuODcgMTUuNjEsMjEuMzRMMTQuMzksMTguNThDMTMuODYsMTguNzcgMTMuMzMsMTguOTQgMTIuNzUsMTlWMTYuMzFMMTUuODcsMTQuMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHdpdGNoID0gXCJNMTEuNjQgNS45M0gxMy4wN1YxMC4yMUgxMS42NE0xNS41NyA1LjkzSDE3VjEwLjIxSDE1LjU3TTcgMkwzLjQzIDUuNTdWMTguNDNINy43MVYyMkwxMS4yOSAxOC40M0gxNC4xNEwyMC41NyAxMlYyTTE5LjE0IDExLjI5TDE2LjI5IDE0LjE0SDEzLjQzTDEwLjkzIDE2LjY0VjE0LjE0SDcuNzFWMy40M0gxOS4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUd2l0dGVyID0gXCJNMjIuNDYsNkMyMS42OSw2LjM1IDIwLjg2LDYuNTggMjAsNi42OUMyMC44OCw2LjE2IDIxLjU2LDUuMzIgMjEuODgsNC4zMUMyMS4wNSw0LjgxIDIwLjEzLDUuMTYgMTkuMTYsNS4zNkMxOC4zNyw0LjUgMTcuMjYsNCAxNiw0QzEzLjY1LDQgMTEuNzMsNS45MiAxMS43Myw4LjI5QzExLjczLDguNjMgMTEuNzcsOC45NiAxMS44NCw5LjI3QzguMjgsOS4wOSA1LjExLDcuMzggMyw0Ljc5QzIuNjMsNS40MiAyLjQyLDYuMTYgMi40Miw2Ljk0QzIuNDIsOC40MyAzLjE3LDkuNzUgNC4zMywxMC41QzMuNjIsMTAuNSAyLjk2LDEwLjMgMi4zOCwxMEMyLjM4LDEwIDIuMzgsMTAgMi4zOCwxMC4wM0MyLjM4LDEyLjExIDMuODYsMTMuODUgNS44MiwxNC4yNEM1LjQ2LDE0LjM0IDUuMDgsMTQuMzkgNC42OSwxNC4zOUM0LjQyLDE0LjM5IDQuMTUsMTQuMzYgMy44OSwxNC4zMUM0LjQzLDE2IDYsMTcuMjYgNy44OSwxNy4yOUM2LjQzLDE4LjQ1IDQuNTgsMTkuMTMgMi41NiwxOS4xM0MyLjIyLDE5LjEzIDEuODgsMTkuMTEgMS41NCwxOS4wN0MzLjQ0LDIwLjI5IDUuNywyMSA4LjEyLDIxQzE2LDIxIDIwLjMzLDE0LjQ2IDIwLjMzLDguNzlDMjAuMzMsOC42IDIwLjMzLDguNDIgMjAuMzIsOC4yM0MyMS4xNiw3LjYzIDIxLjg4LDYuODcgMjIuNDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUd2l0dGVyUmV0d2VldCA9IFwiTTYsNS43NUwxMC4yNSwxMEg3VjE2SDEzLjVMMTUuNSwxOEg3QTIsMiAwIDAsMSA1LDE2VjEwSDEuNzVMNiw1Ljc1TTE4LDE4LjI1TDEzLjc1LDE0SDE3VjhIMTAuNUw4LjUsNkgxN0EyLDIgMCAwLDEgMTksOFYxNEgyMi4yNUwxOCwxOC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUd29GYWN0b3JBdXRoZW50aWNhdGlvbiA9IFwiTTIsN1Y5SDZWMTFINEEyLDIgMCAwLDAgMiwxM1YxN0g4VjE1SDRWMTNINkEyLDIgMCAwLDAgOCwxMVY5QzgsNy44OSA3LjEsNyA2LDdIMk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlNMTgsN0EyLDIgMCAwLDAgMTYsOVYxN0gxOFYxNEgyMFYxN0gyMlY5QTIsMiAwIDAsMCAyMCw3SDE4TTE4LDlIMjBWMTJIMThWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUeXBld3JpdGVyID0gXCJNMjAgMTNIMTZDMTYgMTQuMSAxNS4xIDE1IDE0IDE1SDEwQzguOSAxNSA4IDE0LjEgOCAxM0g0TDIgMThWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDIwQzIxLjEgMjIgMjIgMjEuMSAyMiAyMFYxOE02IDIwQzUuMTEgMjAgNC42NiAxOC45MiA1LjI5IDE4LjI5QzUuOTIgMTcuNjYgNyAxOC4xMSA3IDE5QzcgMTkuNTUgNi41NSAyMCA2IDIwTTEwIDIwQzkuMTEgMjAgOC42NiAxOC45MiA5LjI5IDE4LjI5QzkuOTIgMTcuNjYgMTEgMTguMTEgMTEgMTlDMTEgMTkuNTUgMTAuNTUgMjAgMTAgMjBNMTQgMjBDMTMuMTEgMjAgMTIuNjYgMTguOTIgMTMuMjkgMTguMjlDMTMuOTIgMTcuNjYgMTUgMTguMTEgMTUgMTlDMTUgMTkuNTUgMTQuNTUgMjAgMTQgMjBNMTggMjBDMTcuMTEgMjAgMTYuNjYgMTguOTIgMTcuMjkgMTguMjlDMTcuOTIgMTcuNjYgMTkgMTguMTEgMTkgMTlDMTkgMTkuNTUgMTguNTUgMjAgMTggMjBNMTggMTBWM0g2VjEwSDNWMTJIMjFWMTBNOCA1SDE2VjZIOE04IDdIMTRWOEg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVWJpc29mdCA9IFwiTTExLjQxLDJDNS4yMSwyIDIuNTMsNy41MyAyLjUzLDcuNTNMMy4zMiw4LjA5QzMuMzIsOC4wOSAyLjMzLDEwIDIuMzUsMTIuNEMyLjM1LDE3LjM0IDYuMjksMjIgMTIuMDcsMjJDMTcuMzMsMjIgMjEuNjcsMTcuNzEgMjEuNjcsMTIuNDFDMjEuNjcsNS41IDE2LjMxLDIgMTEuNDEsMk0xMS40NywzLjY5QzE2LjMxLDMuNjkgMjAuMDcsNy42IDIwLjA3LDEyLjE0QzIwLjA3LDE2Ljk1IDE2LjQ1LDIwLjMgMTIuMjMsMjAuM0M5LjEzLDIwLjMgNi4zMywxNy45NCA2LjMzLDE0LjdDNi4zMywxMi44MiA3LjMyLDExLjUgOC40NCwxMC44Mkw4LjYsMTFDOC4zLDExLjI0IDcuNDMsMTIuNjQgNy40MywxNEM3LjQzLDE2LjU2IDkuNDMsMTguMzMgMTEuOTUsMTguMzNDMTUuMTYsMTguMzMgMTcuMywxNS41OSAxNy4zLDEyLjQxQzE3LjMsOC43MSAxNC4wMyw1LjU3IDEwLjEsNS41N0M3LjkzLDUuNTcgNi4wOSw2LjUgNS4wMyw3LjMzTDQuODYsNy4xOEM2LjI1LDUuMDQgOC42NSwzLjY5IDExLjQ3LDMuNjlNMTAsNy4yM0MxMi41Myw3LjIzIDE0Ljk3LDguODkgMTUuNTksMTEuMjVMMTUuMzYsMTEuMzNDMTQuMjcsOS44OCAxMi40Nyw4LjY4IDEwLjM1LDguNjhDNi40NCw4LjY4IDQuMzksMTIuMjMgNC42OSwxNS4xOUw0LjQ2LDE1LjI4QzQuNDYsMTUuMjggNC4wMywxNC4zMyA0LjAzLDEzLjJDNC4wMyw5LjkzIDYuNzEsNy4yMyAxMCw3LjIzTTExLjY4LDExLjMzQzEyLjg2LDExLjMzIDEzLjgxLDEyLjMgMTMuODEsMTMuNDRDMTMuODEsMTQuMzggMTMuMjEsMTQuOTQgMTMuMjEsMTQuOTRMMTMuOTIsMTUuNDVDMTMuOTIsMTUuNDUgMTMuMjEsMTYuNTcgMTEuNzYsMTYuNTdDMTAuMzcsMTYuNTcgOS4xMywxNS40NCA5LjEzLDEzLjkzQzkuMTMsMTIuMzggMTAuNDcsMTEuMzMgMTEuNjgsMTEuMzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVWJ1bnR1ID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTE0LjM0LDcuNzRDMTQuOTIsOC4wNyAxNS42NSw3Ljg3IDE2LDcuM0MxNi4zMSw2LjczIDE2LjEyLDYgMTUuNTQsNS42NkMxNC45Nyw1LjMzIDE0LjIzLDUuNSAxMy45LDYuMUMxMy41Nyw2LjY3IDEzLjc3LDcuNDEgMTQuMzQsNy43NE0xMS44OCwxNS41QzExLjM1LDE1LjUgMTAuODUsMTUuMzkgMTAuNDEsMTUuMThMOS41NywxNi42OEMxMC4yNywxNyAxMS4wNSwxNy4yMiAxMS44OCwxNy4yMkMxMi4zNywxNy4yMiAxMi44MywxNy4xNSAxMy4yOCwxNy4wM0MxMy4zNiwxNi41NCAxMy42NCwxNi4xIDE0LjEsMTUuODRDMTQuNTYsMTUuNTcgMTUuMDgsMTUuNTUgMTUuNTQsMTUuNzJDMTYuNDMsMTQuODUgMTcsMTMuNjYgMTcuMDksMTIuMzNMMTUuMzgsMTIuMzFDMTUuMjIsMTQuMSAxMy43MiwxNS41IDExLjg4LDE1LjVNMTEuODgsOC41QzEzLjcyLDguNSAxNS4yMiw5Ljg5IDE1LjM4LDExLjY5TDE3LjA5LDExLjY2QzE3LDEwLjM0IDE2LjQzLDkuMTUgMTUuNTQsOC4yOEMxNS4wOCw4LjQ1IDE0LjU1LDguNDIgMTQuMSw4LjE2QzEzLjY0LDcuOSAxMy4zNiw3LjQ1IDEzLjI4LDYuOTdDMTIuODMsNi44NSAxMi4zNyw2Ljc4IDExLjg4LDYuNzhDMTEuMDUsNi43OCAxMC4yNyw2Ljk3IDkuNTcsNy4zMkwxMC40MSw4LjgyQzEwLjg1LDguNjEgMTEuMzUsOC41IDExLjg4LDguNU04LjM3LDEyQzguMzcsMTAuODEgOC45Niw5Ljc2IDkuODYsOS4xM0w5LDcuNjVDNy45NCw4LjM2IDcuMTUsOS40MyA2LjgzLDEwLjY5QzcuMjEsMTEgNy40NSwxMS40NyA3LjQ1LDEyQzcuNDUsMTIuNTMgNy4yMSwxMyA2LjgzLDEzLjMxQzcuMTUsMTQuNTYgNy45NCwxNS42NCA5LDE2LjM0TDkuODYsMTQuODdDOC45NiwxNC4yNCA4LjM3LDEzLjE5IDguMzcsMTJNMTQuMzQsMTYuMjZDMTMuNzcsMTYuNTkgMTMuNTcsMTcuMzIgMTMuOSwxNy45QzE0LjIzLDE4LjQ3IDE0Ljk3LDE4LjY3IDE1LjU0LDE4LjM0QzE2LjEyLDE4IDE2LjMxLDE3LjI3IDE2LDE2LjdDMTUuNjUsMTYuMTIgMTQuOTIsMTUuOTMgMTQuMzQsMTYuMjZNNS43NiwxMC44QzUuMSwxMC44IDQuNTYsMTEuMzQgNC41NiwxMkM0LjU2LDEyLjY2IDUuMSwxMy4yIDUuNzYsMTMuMkM2LjQzLDEzLjIgNi45NiwxMi42NiA2Ljk2LDEyQzYuOTYsMTEuMzQgNi40MywxMC44IDUuNzYsMTAuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlVZm8gPSBcIk0xNS45NCAxMC4yOEMxNS42NiA3Ljg3IDE0IDYgMTIgNlM4LjM0IDcuODcgOC4wNiAxMC4yOEM0LjUgMTAuODIgMiAxMi4wNiAyIDEzLjVDMiAxNS40MyA2LjUgMTcgMTIgMTdTMjIgMTUuNDMgMjIgMTMuNUMyMiAxMi4wNiAxOS41IDEwLjgyIDE1Ljk0IDEwLjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVmb091dGxpbmUgPSBcIk0xNyAxMC41NEMxNi43OCA3LjQ0IDE0LjYzIDUgMTIgNVM3LjIyIDcuNDQgNyAxMC41NEM0IDExLjIzIDIgMTIuNSAyIDE0QzIgMTYuMjEgNi41IDE4IDEyIDE4UzIyIDE2LjIxIDIyIDE0QzIyIDEyLjUgMjAgMTEuMjMgMTcgMTAuNTRNMTQuOTMgMTEuODRDMTMuMDMgMTIuMDUgMTAuOTcgMTIuMDUgOS4wNyAxMS44NEM5LjAzIDExLjU2IDkgMTEuMjggOSAxMUM5IDguOCAxMC4zNSA3IDEyIDdTMTUgOC44IDE1IDExQzE1IDExLjI4IDE1IDExLjU2IDE0LjkzIDExLjg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVsdHJhSGlnaERlZmluaXRpb24gPSBcIk05LDdIMTFWMTFIMTNWN0gxNVYxN0gxM1YxM0gxMVYxN0g5VjdNMTcsN0gyMEEzLDMgMCAwLDEgMjMsMTBWMTRBMywzIDAgMCwxIDIwLDE3SDE3VjdNMjAsMTVBMSwxIDAgMCwwIDIxLDE0VjEwQTEsMSAwIDAsMCAyMCw5SDE5VjE1SDIwTTcsMTRBMywzIDAgMCwxIDQsMTdBMywzIDAgMCwxIDEsMTRWN0gzVjE0QTEsMSAwIDAsMCA0LDE1QTEsMSAwIDAsMCA1LDE0VjdIN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyYWNvID0gXCJNOC42LDguNkw3LjE3LDguMzhDNi41LDExLjY3IDYuNDYsMTQuMjQgNy42MSwxNS41QzguNiwxNi42MSAxMS44OSwxNi42MSAxMS44OSwxNi42MUMxMS44OSwxNi42MSAxNS4yOSwxNi42MSAxNi4yOCwxNS41QzE3LjQzLDE0LjI0IDE3LjM4LDExLjY3IDE2LjcyLDguMzhMMTUuMjksOC42QzE1LjI5LDguNiAxNi41NCwxMy44OCAxNC42OSwxNC42OUMxMy44MSwxNS4wNyAxMS44OSwxNS4wNyAxMS44OSwxNS4wN0MxMS44OSwxNS4wNyAxMC4wOCwxNS4wNyA5LjIsMTQuNjlDNy4zNSwxMy44OCA4LjYsOC42IDguNiw4LjZNMTIsM0E5LDkgMCAwLDEgMjEsMTJBOSw5IDAgMCwxIDEyLDIxQTksOSAwIDAsMSAzLDEyQTksOSAwIDAsMSAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhID0gXCJNMTIsMkE5LDkgMCAwLDEgMjEsMTFIMTNWMTlBMywzIDAgMCwxIDEwLDIyQTMsMyAwIDAsMSA3LDE5VjE4SDlWMTlBMSwxIDAgMCwwIDEwLDIwQTEsMSAwIDAsMCAxMSwxOVYxMUgzQTksOSAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhQ2xvc2VkID0gXCJNMTIgMkMxMS42IDIgMTEuMyAyLjIgMTEuMSAyLjZMNi41IDE1SDExVjE5QzExIDE5LjYgMTAuNiAyMCAxMCAyMEM5LjQgMjAgOSAxOS42IDkgMTlWMThIN1YxOUM3IDIwLjcgOC4zIDIyIDEwIDIyUzEzIDIwLjcgMTMgMTlWMTVIMTcuNUwxMi45IDIuNkMxMi43IDIuMiAxMi40IDIgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyZWxsYUNsb3NlZE91dGxpbmUgPSBcIk0xMiAyQzEyLjQgMiAxMi44IDIuMiAxMi45IDIuNkwxNy41IDE1SDEzVjE5QzEzIDIwLjcgMTEuNyAyMiAxMCAyMlM3IDIwLjcgNyAxOVYxOEg5VjE5QzkgMTkuNiA5LjQgMjAgMTAgMjBDMTAuNiAyMCAxMSAxOS42IDExIDE5VjE1SDYuNUwxMS4xIDIuNkMxMS4yIDIuMiAxMS42IDIgMTIgMk0xMiA1LjlMOS40IDEzSDE0LjdMMTIgNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhQ2xvc2VkVmFyaWFudCA9IFwiTTE1IDdMMTMgNlYzLjVDMTMgMy4yIDEzLjIgMyAxMy41IDNTMTQgMy4yIDE0IDMuNVY0SDE2VjMuNUMxNiAyLjEgMTQuOSAxIDEzLjUgMVMxMSAyLjEgMTEgMy41VjZMOSA3TDYgNkwxMS4xIDIxLjNDMTEuNCAyMi4yIDEyLjcgMjIuMiAxMyAyMS4zQzE0LjYgMTYuMiAxOCA2IDE4IDZMMTUgN00xMSAxNUw5IDguOUw5LjcgOS4xTDExIDguMVYxNU0xMyA4LjFMMTQuMyA5LjFMMTUgOC45TDEzIDE1VjguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyZWxsYU91dGxpbmUgPSBcIk0xMiw0QzguOSw0IDYuMTgsNi4wMyA1LjMsOUgxOC43QzE3LjgyLDYuMDQgMTUuMDksNCAxMiw0TTEyLDJBOSw5IDAgMCwxIDIxLDExSDEzVjE5QTMsMyAwIDAsMSAxMCwyMkEzLDMgMCAwLDEgNywxOVYxOEg5VjE5QTEsMSAwIDAsMCAxMCwyMEExLDEgMCAwLDAgMTEsMTlWMTFIM0E5LDkgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmRvID0gXCJNMTIuNSw4QzkuODUsOCA3LjQ1LDkgNS42LDEwLjZMMiw3VjE2SDExTDcuMzgsMTIuMzhDOC43NywxMS4yMiAxMC41NCwxMC41IDEyLjUsMTAuNUMxNi4wNCwxMC41IDE5LjA1LDEyLjgxIDIwLjEsMTZMMjIuNDcsMTUuMjJDMjEuMDgsMTEuMDMgMTcuMTUsOCAxMi41LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5kb1ZhcmlhbnQgPSBcIk0xMy41LDdBNi41LDYuNSAwIDAsMSAyMCwxMy41QTYuNSw2LjUgMCAwLDEgMTMuNSwyMEgxMFYxOEgxMy41QzE2LDE4IDE4LDE2IDE4LDEzLjVDMTgsMTEgMTYsOSAxMy41LDlINy44M0wxMC45MSwxMi4wOUw5LjUsMTMuNUw0LDhMOS41LDIuNUwxMC45MiwzLjkxTDcuODMsN0gxMy41TTYsMThIOFYyMEg2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVuZm9sZExlc3NIb3Jpem9udGFsID0gXCJNMTYuNTksNS40MUwxNS4xNyw0TDEyLDcuMTdMOC44Myw0TDcuNDEsNS40MUwxMiwxME03LjQxLDE4LjU5TDguODMsMjBMMTIsMTYuODNMMTUuMTcsMjBMMTYuNTgsMTguNTlMMTIsMTRMNy40MSwxOC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmZvbGRMZXNzVmVydGljYWwgPSBcIk01LjQxLDcuNDFMMTAsMTJMNS40MSwxNi41OUw0LDE1LjE3TDcuMTcsMTJMNCw4LjgzTDUuNDEsNy40MU0xOC41OSwxNi41OUwxNCwxMkwxOC41OSw3LjQyTDIwLDguODNMMTYuODMsMTJMMjAsMTUuMTdMMTguNTksMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5mb2xkTW9yZUhvcml6b250YWwgPSBcIk0xMiwxOC4xN0w4LjgzLDE1TDcuNDIsMTYuNDFMMTIsMjFMMTYuNTksMTYuNDFMMTUuMTcsMTVNMTIsNS44M0wxNS4xNyw5TDE2LjU4LDcuNTlMMTIsM0w3LjQxLDcuNTlMOC44Myw5TDEyLDUuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5mb2xkTW9yZVZlcnRpY2FsID0gXCJNMTguMTcsMTJMMTUsOC44M0wxNi40MSw3LjQxTDIxLDEyTDE2LjQxLDE2LjU4TDE1LDE1LjE3TDE4LjE3LDEyTTUuODMsMTJMOSwxNS4xN0w3LjU5LDE2LjU5TDMsMTJMNy41OSw3LjQyTDksOC44M0w1LjgzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVuZ3JvdXAgPSBcIk0yLDJINlYzSDEzVjJIMTdWNkgxNlY5SDE4VjhIMjJWMTJIMjFWMThIMjJWMjJIMThWMjFIMTJWMjJIOFYxOEg5VjE2SDZWMTdIMlYxM0gzVjZIMlYyTTE4LDEyVjExSDE2VjEzSDE3VjE3SDEzVjE2SDExVjE4SDEyVjE5SDE4VjE4SDE5VjEySDE4TTEzLDZWNUg2VjZINVYxM0g2VjE0SDlWMTJIOFY4SDEyVjlIMTRWNkgxM00xMiwxMkgxMVYxNEgxM1YxM0gxNFYxMUgxMlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmljb2RlID0gXCJNMjIgNkExLjQ2IDEuNDYgMCAwIDEgMjAuNTQgNy40NEExLjQ2IDEuNDYgMCAwIDEgMTkuMDkgNkExLjQ2IDEuNDYgMCAwIDEgMjAuNTQgNC41QTEuNDYgMS40NiAwIDAgMSAyMiA2TTIxLjU2IDguODZIMTkuNTNDMTkuNCA4Ljg1IDE5LjM0IDguOTEgMTkuMzQgOVYxMi41OUMxOS4zNCAxMy4wOCAxOS4zNCAxMy41IDE5LjM1IDEzLjg2TDE5LjM3IDE0Ljc2QzE5LjM4IDE1IDE5LjM5IDE1LjIxIDE5LjM5IDE1LjM5QzE5LjQgMTUuNTYgMTkuNCAxNS43MiAxOS40IDE1Ljg2SDE5LjM4QzE5LjI2IDE1LjYgMTkuMDcgMTUuMjIgMTguODIgMTQuNzRDMTguNTggMTQuMjcgMTguMjkgMTMuNzIgMTcuOTcgMTMuMTFDMTcuNjQgMTIuNSAxNy4yOSAxMS44NCAxNi45MiAxMS4xNUMxNi41NSAxMC40NyAxNi4xOCA5Ljc4IDE1LjgxIDkuMTFDMTUuNDUgOC40MyAxNS4wOSA3Ljc4IDE0Ljc1IDcuMTZDMTQuNCA2LjU0IDE0LjEgNiAxMy44NSA1LjU0QzEzLjgyIDUuNSAxMy43OSA1LjQ0IDEzLjc3IDUuNDJDMTMuNzQgNS40IDEzLjY4IDUuMzkgMTMuNiA1LjM5SDEwLjYyQzEwLjUgNS4zOSAxMC40NyA1LjQ0IDEwLjQ3IDUuNTRIMTAuNUMxMC40NyA1LjU2IDEwLjQ3IDUuNTcgMTAuNDcgNS41OFYxMy44NEMxMC40NyAxNC41IDEwLjQgMTUgMTAuMjUgMTUuNDVDMTAuMSAxNS44OCA5LjkgMTYuMjMgOS42NCAxNi41QzkuMzggMTYuNzUgOS4wNyAxNi45MyA4LjcyIDE3LjA1QzguMzYgMTcuMTYgOCAxNy4yMiA3LjU2IDE3LjIyQzYuNTQgMTcuMjIgNS43OSAxNi45MSA1LjMgMTYuMzFDNC44IDE1LjcgNC41NiAxNC44OSA0LjU2IDEzLjg4VjUuNTZDNC41NiA1LjQ1IDQuNSA1LjM5IDQuMzkgNS4zOUgyLjE3QzIuMDYgNS4zOSAyIDUuNDUgMiA1LjU4VjE0LjA3QzIgMTUgMi4xMyAxNS43OCAyLjM4IDE2LjQ2QzIuNjMgMTcuMTMgMyAxNy42OSAzLjUgMTguMTRDMy45NiAxOC41OCA0LjUzIDE4LjkyIDUuMjEgMTkuMTRDNS44OSAxOS4zNiA2LjY0IDE5LjUgNy40NyAxOS41QzguMjQgMTkuNSA4Ljk3IDE5LjM4IDkuNjUgMTkuMTdDMTAuMzQgMTguOTcgMTAuOTMgMTguNjQgMTEuNDIgMTguMkMxMS45MSAxNy43NSAxMi4zIDE3LjE4IDEyLjU5IDE2LjVDMTIuODggMTUuNzkgMTMuMDMgMTQuOTUgMTMuMDMgMTMuOTZWOC42MkMxMy4xNCA4Ljg2IDEzLjI4IDkuMTUgMTMuNDQgOS40N0MxMy43MyAxMC4wNSAxNC4wNSAxMC42OCAxNC40MiAxMS4zOEMxNC43OSAxMi4wOCAxNS4xNyAxMi44IDE1LjU4IDEzLjU2QzE2IDE0LjMyIDE2LjM5IDE1LjA2IDE2Ljc3IDE1Ljc2QzE3LjE2IDE2LjQ2IDE3LjUgMTcuMTEgMTcuODMgMTcuN0MxOC4xNSAxOC4yOSAxOC40IDE4Ljc2IDE4LjU4IDE5LjEyQzE4LjYzIDE5LjIyIDE4LjczIDE5LjI3IDE4Ljg1IDE5LjI3SDIxLjU0QzIxLjY4IDE5LjI3IDIxLjc1IDE5LjIgMjEuNzUgMTkuMDhWOS4wNUMyMS43NSA4LjkyIDIxLjY4IDguODUgMjEuNTYgOC44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmljb3JuID0gXCJNMjIgNUwyMS4xMSA2LjM0QzIxLjY1IDYuNyAyMiA3LjMxIDIyIDhWMTEuNUwyMC41IDEyTDE4Ljk2IDkuNTRDMTguODMgOS4zMyAxOC41IDkuNDIgMTguNSA5LjY3VjEzLjI1QzE4LjUgMTQuMjMgMTguMTEgMTUuMTEgMTcuNSAxNS43OFYyMkgxNVYxN0MxNC45MiAxNyAxNC44NCAxNyAxNC43NSAxN0MxNC41NCAxNyAxNC4zMyAxNi45NyAxNC4xMyAxNi45NEw5LjQ1IDE2LjE2TDguNTcgMTguMTJMOS41NCAyMkg2Ljk2TDYuMDQgMTguM0M1Ljk3IDE4LjAzIDYgMTcuNzQgNi4xMSAxNy41TDcgMTUuNUM2LjEyIDE0LjkyIDUuNTMgMTMuOTQgNS41IDEyLjgxQzUuNDYgMTIuOTYgNS40NCAxMy4xOCA1LjQ3IDEzLjVDNS41IDEzLjk0IDUuNjEgMTQuNTkgNS41NCAxNS4zMUM1LjUgMTYuMDMgNS4xOCAxNi43NyA0Ljc2IDE3LjI2QzQuMzIgMTcuNzUgMy44NSAxOC4wOSAzLjM1IDE4LjM1TDIuNjUgMTcuNjVDMi44NCAxNy4xOCAzLjAzIDE2Ljc2IDMuMDcgMTYuMzdDMy4xMyAxNiAzLjA2IDE1LjcgMi45NSAxNS40M0wyLjQyIDE0LjNDMi4yMSAxMy43OSAxLjk1IDEzLjA1IDIgMTIuMThDMi4wMyAxMS4zMyAyLjUgMTAuMjIgMy4zOSA5LjYxQzQuMjkgOSA1LjI2IDguOTEgNi4wNSA5LjA4QzYuNTUgOS4xOCA3LjA2IDkuNDIgNy41IDkuNzZDNy44NyA5LjU5IDguMyA5LjUgOC43NSA5LjVIMTQuNVY5QzE0LjUgNi43OSAxNi4yOSA1IDE4LjUgNUwyMiAyTDIxIDVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5pY29yblZhcmlhbnQgPSBcIk0yMCAxMlYxOUwxNyAyMEwxNCAxNS4zM0MxMy43MSAxNC44OSAxMyAxNS4xNCAxMy4wOCAxNS42N0wxNCAyM0w0IDE4TDQuOTYgMTIuNzVDNS41NiA5LjQyIDguNDYgNyAxMS44NCA3SDEzTDE5IDFMMTcgN0gyMEwxOC40MiA5LjM3QzE5LjM2IDkuODggMjAgMTAuODYgMjAgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5pY3ljbGUgPSBcIk0xMyA5LjA5VjVIMTRDMTQuNTUgNSAxNSA0LjU1IDE1IDRTMTQuNTUgMyAxNCAzSDEwQzkuNDUgMyA5IDMuNDUgOSA0UzkuNDUgNSAxMCA1SDExVjkuMDlDOC4xNiA5LjU3IDYgMTIuMDMgNiAxNUM2IDE4LjMxIDguNjkgMjEgMTIgMjFTMTggMTguMzEgMTggMTVDMTggMTIuMDMgMTUuODQgOS41NyAxMyA5LjA5TTEyIDE5QzkuNzkgMTkgOCAxNy4yMSA4IDE1QzggMTMuMTQgOS4yOCAxMS41OSAxMSAxMS4xNFYxNkgxM1YxMS4xNEMxNC43MiAxMS41OSAxNiAxMy4xNCAxNiAxNUMxNiAxNy4yMSAxNC4yMSAxOSAxMiAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbml0eSA9IFwiTTEwLjExLDE3SDcuNUwyLjU5LDEyTDcuNSw3SDEwLjExTDExLjQyLDQuNzRMMTguMjEsM0wyMC4wOCw5Ljc0TDE4Ljc3LDEyTDIwLjA4LDE0LjI2TDE4LjIxLDIxTDExLjQyLDE5LjI2TDEwLjExLDE3TTEwLjI1LDE2Ljc1TDE1LjM4LDE4LjEzTDEyLjQyLDEzSDYuNUwxMC4yNSwxNi43NU0xNy4xMiwxNy4xM0wxOC41LDEyTDE3LjEyLDYuODdMMTQuMTUsMTJMMTcuMTIsMTcuMTNNMTAuMjUsNy4yNUw2LjUsMTFIMTIuNDJMMTUuMzgsNS44N0wxMC4yNSw3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVucmVhbCA9IFwiTTIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMkExMCwxMCAwIDAsMCAyLDEyTTUuMjQsMTguNzZDMy40MywxNi45NSAyLjQ0LDE0LjU1IDIuNDQsMTJDMi40NCw5LjQ1IDMuNDMsNy4wNSA1LjI0LDUuMjRDNy4wNSwzLjQzIDkuNDUsMi40NCAxMiwyLjQ0QzE0LjU1LDIuNDQgMTYuOTUsMy40MyAxOC43Niw1LjI0QzIwLjU3LDcuMDUgMjEuNTYsOS40NSAyMS41NiwxMkMyMS41NiwxNC41NSAyMC41NywxNi45NSAxOC43NiwxOC43NkMxNi45NSwyMC41NyAxNC41NSwyMS41NiAxMiwyMS41NkM5LjQ1LDIxLjU2IDcuMDUsMjAuNTcgNS4yNCwxOC43Nk02LjM1LDkuNUM0LjM0LDExLjc5IDQuNzMsMTMuNjggNC43MywxMy42OEM0LjczLDEzLjY4IDUuMjgsMTIuMzggNi42MSwxMUM3LjI1LDEwLjM3IDcuNzIsMTAuMTUgOC4wNCwxMC4xNUM4LjQsMTAuMTUgOC41NywxMC40MSA4LjU3LDEwLjY1VjE1LjI5QzguNTcsMTUuNzUgOC4yNywxNS44NSA4LDE1Ljg0QzcuNzcsMTUuODQgNy41NSwxNS43NiA3LjU1LDE1Ljc2QzguOTIsMTcuNzMgMTIuMTksMTggMTIuMTksMThMMTMuNjMsMTYuNUgxMy42N0wxNSwxNy42M0MxNy4zOSwxNi4yMSAxOC41NSwxMy41OCAxOC41NSwxMy41OEMxNy41LDE0LjcgMTYuNzksMTQuOTcgMTYuMzksMTQuOTZDMTYuMDMsMTQuOTYgMTUuODgsMTQuNzUgMTUuODgsMTQuNzVDMTUuODcsMTQuNjUgMTUuODIsOC45IDE1Ljg5LDguOUMxNi4zMSw4LjEzIDE3LjYzLDYuNTYgMTcuNjMsNi41NkMxNS4xNiw3LjA1IDEzLjgxLDguNjYgMTMuODEsOC42NkMxMy40MSw4LjM1IDEyLjU5LDguNCAxMi41OSw4LjRDMTIuOTcsOC42MSAxMy4zNSw5LjIxIDEzLjM1LDkuNzJWMTQuNjVDMTMuMzUsMTQuNjUgMTIuNSwxNS4zOCAxMS44OCwxNS4zOEMxMS41LDE1LjM4IDExLjI3LDE1LjE3IDExLjE0LDE1QzExLjA1LDE0Ljg4IDExLDE0Ljc5IDExLDE0Ljc5VjguNjlDMTAuOTMsOC43NSAxMC44Miw4LjggMTAuNzEsOC44QzEwLjU3LDguNzkgMTAuNDMsOC43MyAxMC4zNCw4LjUzQzEwLjI2LDguMzggMTAuMjIsOC4xNSAxMC4yMiw3LjgzQzEwLjIyLDYuNyAxMS41LDUuOTYgMTEuNSw1Ljk2QzkuODcsNi4zOSA4LjM2LDcuMjIgNi4zNSw5LjVcIjtcclxuZXhwb3J0IHZhciBtZGlVbnRhcHBkID0gXCJNMTQuNDEsNEMxNC40MSw0IDE0Ljk0LDQuMzkgMTQuOTcsNC43MUMxNC45Nyw0LjgxIDE0LjczLDQuODUgMTQuNjgsNC45M0MxNC42Miw1IDE0LjcsNS4xNSAxNC42NSw1LjIxQzE0LjU5LDUuMjYgMTQuNSw1LjI2IDE0LjQxLDUuNDFDMTQuMzMsNS41NiAxMi4wNywxMC4wOSAxMS43MywxMC42M0MxMS41OSwxMS4wMyAxMS40NywxMi40NiAxMS4zNywxMi42NkMxMS4yNiwxMi44NSA2LjM0LDE5Ljg0IDYuMTYsMjAuMDVDNS42NywyMC42MyA0LjMxLDIwLjMgMy4yOCwxOS41NkMyLjMsMTguODYgMS43NCwxNy43IDIuMTEsMTcuMTZDMi4yNywxNi45MyA3LjE1LDkuOTIgNy4yOSw5Ljc1QzcuNDQsOS41OCA4Ljc1LDkgOS4wNyw4LjcxQzkuNDcsOC4yMiAxMi45Niw0LjU0IDEzLjA3LDQuNDJDMTMuMTgsNC4zIDEzLjE1LDQuMiAxMy4xOCw0LjEzQzEzLjIyLDQuMDYgMTMuMzgsNC4wOCAxMy40Myw0QzEzLjUsMy45MyAxMy4zOSwzLjcxIDEzLjUsMy42OEMxMy41OSwzLjY0IDEzLjk2LDMuNjcgMTQuNDEsNE0xMC44NSw0LjQ0TDExLjc0LDUuMzdMMTAuMjYsNi45NEw5LjQ2LDUuMzdDOS4zOCw1LjIyIDkuMjgsNS4yMiA5LjIyLDUuMTdDOS4xNyw1LjExIDkuMjQsNC45NyA5LjE5LDQuODlDOS4xMyw0LjgxIDguOSw0LjgzIDguOSw0LjczQzguOSw0LjYyIDkuMDUsNC4yOCA5LjUsMy45NkM5LjUsMy45NiAxMC4wNiwzLjYgMTAuMzcsMy42OEMxMC40NywzLjcxIDEwLjQzLDMuOTUgMTAuNSw0QzEwLjU0LDQuMSAxMC43LDQuMDggMTAuNzMsNC4xNUMxMC43Nyw0LjIxIDEwLjczLDQuMzIgMTAuODUsNC40NE0yMS45MiwxNy4xNUMyMi4yOSwxNy44MSAyMS41MywxOSAyMC41LDE5LjdDMTkuNSwyMC4zOSAxOC4yMSwyMC41NCAxNy44MywyMEMxNy42NiwxOS43OCAxMi42NywxMi44MiAxMi41NiwxMi42MkMxMi40NSwxMi40MyAxMi4zMiwxMSAxMi4xOCwxMC41OUwxMi4xNSwxMC41NUMxMi40NSwxMCAxMy4wNyw4Ljc3IDEzLjczLDcuNDdDMTQuMyw4LjA2IDE0Ljc1LDguNTYgMTQuODgsOC43MkMxNS4yMSw5IDE2LjUzLDkuNTggMTYuNjgsOS43NUMxNi44Miw5LjkyIDIxLjc4LDE2LjkxIDIxLjkyLDE3LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVwZGF0ZSA9IFwiTTIxLDEwLjEySDE0LjIyTDE2Ljk2LDcuM0MxNC4yMyw0LjYgOS44MSw0LjUgNy4wOCw3LjJDNC4zNSw5LjkxIDQuMzUsMTQuMjggNy4wOCwxN0M5LjgxLDE5LjcgMTQuMjMsMTkuNyAxNi45NiwxN0MxOC4zMiwxNS42NSAxOSwxNC4wOCAxOSwxMi4xSDIxQzIxLDE0LjA4IDIwLjEyLDE2LjY1IDE4LjM2LDE4LjM5QzE0Ljg1LDIxLjg3IDkuMTUsMjEuODcgNS42NCwxOC4zOUMyLjE0LDE0LjkyIDIuMTEsOS4yOCA1LjYyLDUuODFDOS4xMywyLjM0IDE0Ljc2LDIuMzQgMTguMjcsNS44MUwyMSwzVjEwLjEyTTEyLjUsOFYxMi4yNUwxNiwxNC4zM0wxNS4yOCwxNS41NEwxMSwxM1Y4SDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkID0gXCJNOSwxNlYxMEg1TDEyLDNMMTksMTBIMTVWMTZIOU01LDIwVjE4SDE5VjIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkTG9jayA9IFwiTTIyIDIySDE3QzE2LjUgMjIgMTYgMjEuNSAxNiAyMVYxN0MxNiAxNi41IDE2LjUgMTYgMTcgMTZWMTQuNUMxNyAxMy4xIDE4LjEgMTIgMTkuNSAxMkMyMC45IDEyIDIyIDEzLjEgMjIgMTQuNVYxNkMyMi41IDE2IDIzIDE2LjUgMjMgMTdWMjFDMjMgMjEuNSAyMi41IDIyIDIyIDIyTTE0IDIwSDVWMThIMTRWMjBNMjEgMTZWMTQuNUMyMSAxMy43IDIwLjMgMTMgMTkuNSAxM0MxOC43IDEzIDE4IDEzLjcgMTggMTQuNVYxNkgyMU0xNSAxNkg5VjEwSDVMMTIgM0wxOSAxMEgxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWRMb2NrT3V0bGluZSA9IFwiTTIyIDIySDE3QzE2LjUgMjIgMTYgMjEuNSAxNiAyMVYxN0MxNiAxNi41IDE2LjUgMTYgMTcgMTZWMTQuNUMxNyAxMy4xIDE4LjEgMTIgMTkuNSAxMkMyMC45IDEyIDIyIDEzLjEgMjIgMTQuNVYxNkMyMi41IDE2IDIzIDE2LjUgMjMgMTdWMjFDMjMgMjEuNSAyMi41IDIyIDIyIDIyTTUgMThIMTRWMjBINVYxOE0yMSAxNlYxNC41QzIxIDEzLjcgMjAuMyAxMyAxOS41IDEzQzE4LjcgMTMgMTggMTMuNyAxOCAxNC41VjE2SDIxTTkgMTZWMTBINUwxMiAzTDE5IDEwSDE1VjE2SDlNOS44MyA4SDExVjE0SDEzVjhIMTQuMTdMMTIgNS44M0w5LjgzIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkTXVsdGlwbGUgPSBcIk05LDE0VjhINUwxMiwxTDE5LDhIMTVWMTRIOU01LDE4VjE2SDE5VjE4SDVNMTksMjBINVYyMkgxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWROZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdNMTIsNS41TDcuNSwxMEgxMVYxNEgxM1YxMEgxNi41TDEyLDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWROZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTIsNkw4LDEwSDExVjE0SDEzVjEwSDE2TDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w2LjU2IDguNDVMNSAxMEg4LjExTDkgMTAuODlWMTZIMTQuMTFMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xNSAxMEgxOUwxMiAzTDkuMSA1LjlMMTUgMTEuOFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWRPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w2LjU2IDguNDVMNSAxMEg4LjExTDkgMTAuODlWMTZIMTQuMTFMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMSAxNFYxMi44OUwxMi4xMSAxNEgxMU0xMiA1LjhMMTQuMiA4SDEzVjkuOEwxNSAxMS44VjEwSDE5TDEyIDNMOS4xIDUuOUwxMC41IDcuM0wxMiA1LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkT3V0bGluZSA9IFwiTTksMTBWMTZIMTVWMTBIMTlMMTIsM0w1LDEwSDlNMTIsNS44TDE0LjIsOEgxM1YxNEgxMVY4SDkuOEwxMiw1LjhNMTksMThINVYyMEgxOVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlVc2IgPSBcIk0xNSw3VjExSDE2VjEzSDEzVjVIMTVMMTIsMUw5LDVIMTFWMTNIOFYxMC45M0M4LjcsMTAuNTYgOS4yLDkuODUgOS4yLDlDOS4yLDcuNzggOC4yMSw2LjggNyw2LjhDNS43OCw2LjggNC44LDcuNzggNC44LDlDNC44LDkuODUgNS4zLDEwLjU2IDYsMTAuOTNWMTNBMiwyIDAgMCwwIDgsMTVIMTFWMTguMDVDMTAuMjksMTguNDEgOS44LDE5LjE1IDkuOCwyMEEyLjIsMi4yIDAgMCwwIDEyLDIyLjJBMi4yLDIuMiAwIDAsMCAxNC4yLDIwQzE0LjIsMTkuMTUgMTMuNzEsMTguNDEgMTMsMTguMDVWMTVIMTZBMiwyIDAgMCwwIDE4LDEzVjExSDE5VjdIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXNiRmxhc2hEcml2ZSA9IFwiTTggMTVDOC41NSAxNSA5IDE1LjQ1IDkgMTZDOSAxNi41NSA4LjU1IDE3IDggMTdDNy40NSAxNyA3IDE2LjU1IDcgMTZDNyAxNS40NSA3LjQ1IDE1IDggMTVNMTUuMDcgNC42OUwxNi41IDYuMUwxNS4wNyA3LjVMMTMuNjYgNi4xTDE1LjA3IDQuNjlNMTcuOSA3LjVMMTkuMzEgOC45M0wxNy45IDEwLjM0TDE2LjUgOC45M0wxNy45IDcuNU04IDEzQzYuMzQgMTMgNSAxNC4zNCA1IDE2QzUgMTcuNjYgNi4zNCAxOSA4IDE5QzkuNjYgMTkgMTEgMTcuNjYgMTEgMTZDMTEgMTQuMzQgOS42NiAxMyA4IDEzTTkuNzcgNC4zM0wxMC41IDUuMDhMMTQuMjkgMS4yOUMxNC40NyAxLjExIDE0LjcyIDEgMTUgMUMxNS4yOCAxIDE1LjUzIDEuMTEgMTUuNzEgMS4yOUwyMi43OCA4LjM2TDIyLjc4IDguMzdDMjIuOTIgOC41NCAyMyA4Ljc2IDIzIDlDMjMgOS4zIDIyLjg3IDkuNTcgMjIuNjYgOS43NkwyMi42NiA5Ljc2TDE4LjkzIDEzLjVMMTkuNjcgMTQuMjNMMTIuOTUgMjAuOTVDMTEuNjggMjIuMjIgOS45MyAyMyA4IDIzQzQuMTMgMjMgMSAxOS44NyAxIDE2QzEgMTQuMDcgMS43OCAxMi4zMiAzLjA1IDExLjA1TDkuNzcgNC4zM00yMC41OSA5TDE1IDMuNDFMMTEuOTMgNi41TDE3LjUgMTIuMDhMMjAuNTkgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlVc2JGbGFzaERyaXZlT3V0bGluZSA9IFwiTTggMTNDOS42NiAxMyAxMSAxNC4zNCAxMSAxNkMxMSAxNy42NiA5LjY2IDE5IDggMTlDNi4zNCAxOSA1IDE3LjY2IDUgMTZDNSAxNC4zNCA2LjM0IDEzIDggMTNNOCAxNUM3LjQ1IDE1IDcgMTUuNDUgNyAxNkM3IDE2LjU1IDcuNDUgMTcgOCAxN0M4LjU1IDE3IDkgMTYuNTUgOSAxNkM5IDE1LjQ1IDguNTUgMTUgOCAxNU05Ljc3IDQuMzNMMTAuNSA1LjA4TDE0LjI5IDEuMjlDMTQuNDcgMS4xMSAxNC43MiAxIDE1IDFDMTUuMjggMSAxNS41MyAxLjExIDE1LjcxIDEuMjlMMjIuNzggOC4zNkwyMi43OCA4LjM3QzIyLjkyIDguNTQgMjMgOC43NiAyMyA5QzIzIDkuMyAyMi44NyA5LjU3IDIyLjY2IDkuNzZMMjIuNjYgOS43NkwxOC45MyAxMy41TDE5LjY3IDE0LjIzTDEyLjk1IDIwLjk1QzExLjY4IDIyLjIyIDkuOTMgMjMgOCAyM0M0LjEzIDIzIDEgMTkuODcgMSAxNkMxIDE0LjA3IDEuNzggMTIuMzIgMy4wNSAxMS4wNUw5Ljc3IDQuMzNNMTEuNTQgMTkuNTRMMTYuODQgMTQuMjNMOS43NyA3LjE2TDQuNDYgMTIuNDZDMy41NiAxMy4zNyAzIDE0LjYyIDMgMTZDMyAxOC43NiA1LjI0IDIxIDggMjFDOS4zOCAyMSAxMC42MyAyMC40NCAxMS41NCAxOS41NE0xNS4wNyA0LjY5TDE2LjUgNi4xTDE1LjA3IDcuNUwxMy42NiA2LjFMMTUuMDcgNC42OU0xNy45IDcuNUwxOS4zMSA4LjkzTDE3LjkgMTAuMzRMMTYuNSA4LjkzTDE3LjkgNy41TTIwLjU5IDlMMTUgMy40MUwxMS45MyA2LjVMMTcuNSAxMi4wOEwyMC41OSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVzYlBvcnQgPSBcIk04IDJDNi45IDIgNiAyLjkgNiA0VjEySDVWMTZMOSAyMFYyMkgxNVYyMEwxOSAxNlYxMkgxOFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNOCA0SDE2VjEySDhNOSA3VjlIMTFWN00xMyA3VjlIMTVWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWYWx2ZSA9IFwiTTQgMjJIMlYySDRNMjIgMkgyMFYyMkgyMk0xNy4yNCA1LjM0TDEzLjI0IDkuMzRBMyAzIDAgMCAwIDkuMjQgMTMuMzRMNS4yNCAxNy4zNEw2LjY2IDE4Ljc2TDEwLjY2IDE0Ljc2QTMgMyAwIDAgMCAxNC42NiAxMC43NkwxOC42NiA2Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhbHZlQ2xvc2VkID0gXCJNMjIgMlYyMkgyMFYxM0gxNC44MkEzIDMgMCAwIDEgOS4xOCAxM0g0VjIySDJWMkg0VjExSDkuMThBMyAzIDAgMCAxIDE0LjgyIDExSDIwVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFsdmVPcGVuID0gXCJNNCAyMkgyVjJINE0yMiAySDIwVjIySDIyTTExIDRWOS4xOEEzIDMgMCAwIDAgMTEgMTQuODJWMjBIMTNWMTQuODJBMyAzIDAgMCAwIDEzIDkuMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWYW5QYXNzZW5nZXIgPSBcIk0zLDdDMS44OSw3IDEsNy44OSAxLDlWMTdIM0EzLDMgMCAwLDAgNiwyMEEzLDMgMCAwLDAgOSwxN0gxNUEzLDMgMCAwLDAgMTgsMjBBMywzIDAgMCwwIDIxLDE3SDIzVjEzQzIzLDExLjg5IDIyLjExLDExIDIxLDExTDE4LDdIM00zLDguNUg3VjExSDNWOC41TTksOC41SDEzVjExSDlWOC41TTE1LDguNUgxNy41TDE5LjQ2LDExSDE1VjguNU02LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFuVXRpbGl0eSA9IFwiTTMsN0MxLjg5LDcgMSw3Ljg5IDEsOVYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTNDMjMsMTEuODkgMjIuMTEsMTEgMjEsMTFMMTgsN0gzTTE1LDguNUgxNy41TDE5LjQ2LDExSDE1VjguNU02LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFuaXNoID0gXCJNMTYsMTNWMTFIMjFWMTNIMTZNMTQuODMsNy43NkwxNy42Niw0LjkzTDE5LjA3LDYuMzRMMTYuMjQsOS4xN0wxNC44Myw3Ljc2TTExLDE2SDEzVjIxSDExVjE2TTExLDNIMTNWOEgxMVYzTTQuOTMsMTcuNjZMNy43NiwxNC44M0w5LjE3LDE2LjI0TDYuMzQsMTkuMDdMNC45MywxNy42Nk00LjkzLDYuMzRMNi4zNCw0LjkzTDkuMTcsNy43Nkw3Ljc2LDkuMTdMNC45Myw2LjM0TTgsMTNIM1YxMUg4VjEzTTE5LjA3LDE3LjY2TDE3LjY2LDE5LjA3TDE0LjgzLDE2LjI0TDE2LjI0LDE0LjgzTDE5LjA3LDE3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhbmlzaFF1YXJ0ZXIgPSBcIk0xMSAzSDEzVjhIMTFWM000LjkgNi4zTDYuMyA0LjlMOS4xIDcuN0w3LjggOS4yTDQuOSA2LjNNOCAxM0gzVjExSDhWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlWYW5pdHlMaWdodCA9IFwiTTIyIDIwSDE2QzE2IDE4LjM0IDE3LjM0IDEzIDE5IDEzUzIyIDE4LjM0IDIyIDIwTTEyIDEzQzEwLjM0IDEzIDkgMTguMzQgOSAyMEgxNUMxNSAxOC4zNCAxMy42NiAxMyAxMiAxM001IDEzQzMuMzQgMTMgMiAxOC4zNCAyIDIwSDhDOCAxOC4zNCA2LjY2IDEzIDUgMTNNMTQuODIgNkMxNC4yNiA0LjQ0IDEyLjUzIDMuNjQgMTEgNC4yQzEwLjE0IDQuNSA5LjUgNS4xNyA5LjE4IDZIMlY4SDRWMTJINlY4SDkuMThDOS41IDguODUgMTAuMTUgOS41IDExIDkuODJWMTJIMTNWOS44MkMxMy44NSA5LjUgMTQuNSA4Ljg1IDE0LjgyIDhIMThWMTJIMjBWOEgyMlY2SDE0LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhcmlhYmxlID0gXCJNMjAuNDEsM0MyMS44LDUuNzEgMjIuMzUsOC44NCAyMiwxMkMyMS44LDE1LjE2IDIwLjcsMTguMjkgMTguODMsMjFMMTcuMywyMEMxOC45MSwxNy41NyAxOS44NSwxNC44IDIwLDEyQzIwLjM0LDkuMiAxOS44OSw2LjQzIDE4LjcsNEwyMC40MSwzTTUuMTcsM0w2LjcsNEM1LjA5LDYuNDMgNC4xNSw5LjIgNCwxMkMzLjY2LDE0LjggNC4xMiwxNy41NyA1LjMsMjBMMy42MSwyMUMyLjIxLDE4LjI5IDEuNjUsMTUuMTcgMiwxMkMyLjIsOC44NCAzLjMsNS43MSA1LjE3LDNNMTIuMDgsMTAuNjhMMTQuNCw3LjQ1SDE2LjkzTDEzLjE1LDEyLjQ1TDE1LjM1LDE3LjM3SDEzLjA5TDExLjcxLDE0TDkuMjgsMTcuMzNINi43NkwxMC42NiwxMi4yMUw4LjUzLDcuNDVIMTAuOEwxMi4wOCwxMC42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlWYXJpYWJsZUJveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003LjQgMThDNS45IDE2LjUgNSAxNC4zIDUgMTJTNS45IDcuNSA3LjQgNkw5IDYuN0M3LjcgNy45IDcgOS45IDcgMTJTNy43IDE2LjEgOSAxNy4zTDcuNCAxOE0xMi43IDE1TDExLjkgMTNMMTAuNSAxNUg5TDExLjMgMTEuOUwxMCA5SDExLjNMMTIuMSAxMUwxMy41IDlIMTVMMTIuOCAxMkwxNC4xIDE1SDEyLjdNMTYuNiAxOEwxNSAxNy4zQzE2LjMgMTYgMTcgMTQuMSAxNyAxMlMxNi4zIDcuOSAxNSA2LjdMMTYuNiA2QzE4LjEgNy41IDE5IDkuNyAxOSAxMlMxOC4xIDE2LjUgMTYuNiAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JBcnJhbmdlQWJvdmUgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZDNi42NywxNiAxMC4zMywxNiAxNCwxNkMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNEMxNiwxMC4zMyAxNiw2LjY3IDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRWMTRIM1YzTTE4LDdWOUgyMFYyMEg5VjE4SDdWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JBcnJhbmdlQmVsb3cgPSBcIk0yMCwyMkMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3QzE2LjMzLDcgMTIuNjcsNyA5LDdDNy44OSw3IDcsNy44OSA3LDlDNywxMi42NyA3LDE2LjMzIDcsMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBNMjAsMjBIOVY5SDIwVjIwTTUsMTZWMTRIM1YzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQmV6aWVyID0gXCJNNy41LDRBMS41LDEuNSAwIDAsMCA2LDUuNUExLjUsMS41IDAgMCwwIDcuNSw3QzguMTMsNyA4LjcsNi42IDguOTEsNkgxM0MxMy42Nyw1LjMzIDE0LjMzLDUgMTUsNUg4LjkxQzguNyw0LjQgOC4xMyw0IDcuNSw0TTE5LDVDOCw1IDE0LDE3IDUsMTdWMTlDMTYsMTkgMTAsNyAxOSw3VjVNMTYuNSwxN0MxNS44NywxNyAxNS4zLDE3LjQgMTUuMDksMThIMTFDMTAuMzMsMTguNjcgOS42NywxOSA5LDE5SDE1LjA5QzE1LjMsMTkuNiAxNS44NywyMCAxNi41LDIwQTEuNSwxLjUgMCAwLDAgMTgsMTguNUExLjUsMS41IDAgMCwwIDE2LjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ2lyY2xlID0gXCJNOSwyVjQuMDZDNi43Miw0LjkyIDQuOTIsNi43MiA0LjA1LDlIMlYxNUg0LjA2QzQuOTIsMTcuMjggNi43MiwxOS4wOSA5LDE5Ljk1VjIySDE1VjE5Ljk0QzE3LjI4LDE5LjA4IDE5LjA5LDE3LjI4IDE5Ljk1LDE1SDIyVjlIMTkuOTRDMTkuMDgsNi43MiAxNy4yOCw0LjkyIDE1LDQuMDVWMk0xMSw0SDEzVjZIMTFNOSw2LjI1VjhIMTVWNi4yNUMxNi4xOCw2Ljg2IDE3LjE0LDcuODIgMTcuNzUsOUgxNlYxNUgxNy43NUMxNy4xNCwxNi4xOCAxNi4xOCwxNy4xNCAxNSwxNy43NVYxNkg5VjE3Ljc1QzcuODIsMTcuMTQgNi44NiwxNi4xOCA2LjI1LDE1SDhWOUg2LjI1QzYuODYsNy44MiA3LjgyLDYuODYgOSw2LjI1TTQsMTFINlYxM0g0TTE4LDExSDIwVjEzSDE4TTExLDE4SDEzVjIwSDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ2lyY2xlVmFyaWFudCA9IFwiTTIyLDlIMTkuOTdDMTguNyw1LjQxIDE1LjMxLDMgMTEuNSwzQTksOSAwIDAsMCAyLjUsMTJDMi41LDE3IDYuNTMsMjEgMTEuNSwyMUMxNS4zMSwyMSAxOC43LDE4LjYgMjAsMTVIMjJNMjAsMTFWMTNIMThWMTFNMTcuODIsMTVDMTYuNjYsMTcuNDQgMTQuMiwxOSAxMS41LDE5QzcuNjQsMTkgNC41LDE1Ljg3IDQuNSwxMkM0LjUsOC4xNCA3LjY0LDUgMTEuNSw1QzE0LjIsNSAxNi42Niw2LjU3IDE3LjgxLDlIMTZWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JDb21iaW5lID0gXCJNMywxQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2QzQuMzMsMTYgNywxNiA3LDE2QzcsMTYgNywxOC42NyA3LDIwQzcsMjEuMTEgNy44OSwyMiA5LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjlDMjIsNy44OSAyMS4xMSw3IDIwLDdDMTguNjcsNyAxNiw3IDE2LDdDMTYsNyAxNiw0LjMzIDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRDMTQsNC4zMyAxNCw3IDE0LDdIOUM3Ljg5LDcgNyw3Ljg5IDcsOVYxNEM3LDE0IDQuMzMsMTQgMywxNFYzTTksOUgxNFYxNEg5VjlNMTYsOUMxNiw5IDE4LjY3LDkgMjAsOVYyMEg5QzksMTguNjcgOSwxNiA5LDE2SDE0QzE1LjExLDE2IDE2LDE1LjExIDE2LDE0VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ3VydmUgPSBcIk0xOC41LDJBMS41LDEuNSAwIDAsMSAyMCwzLjVBMS41LDEuNSAwIDAsMSAxOC41LDVDMTguMjcsNSAxOC4wNSw0Ljk1IDE3Ljg1LDQuODVMMTQuMTYsOC41NUwxNC41LDlDMTYuNjksNy43NCAxOS4yNiw3IDIyLDdMMjMsNy4wM1Y5LjA0TDIyLDlDMTkuNDIsOSAxNyw5Ljc1IDE1LDExLjA0QTMuOTYsMy45NiAwIDAsMSAxMS4wNCwxNUM5Ljc1LDE3IDksMTkuNDIgOSwyMkw5LjA0LDIzSDcuMDNMNywyMkM3LDE5LjI2IDcuNzQsMTYuNjkgOSwxNC41TDguNTUsMTQuMTZMNC44NSwxNy44NUM0Ljk1LDE4LjA1IDUsMTguMjcgNSwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDIwQTEuNSwxLjUgMCAwLDEgMiwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDE3QzMuNzMsMTcgMy45NSwxNy4wNSA0LjE1LDE3LjE1TDcuODQsMTMuNDVDNy4zMSwxMi43OCA3LDExLjkyIDcsMTFBNCw0IDAgMCwxIDExLDdDMTEuOTIsNyAxMi43OCw3LjMxIDEzLjQ1LDcuODRMMTcuMTUsNC4xNUMxNy4wNSwzLjk1IDE3LDMuNzMgMTcsMy41QTEuNSwxLjUgMCAwLDEgMTguNSwyTTExLDlBMiwyIDAgMCwwIDksMTFBMiwyIDAgMCwwIDExLDEzQTIsMiAwIDAsMCAxMywxMUEyLDIgMCAwLDAgMTEsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JEaWZmZXJlbmNlID0gXCJNMywxQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVWMTRIM1YzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzTTksN0M3Ljg5LDcgNyw3Ljg5IDcsOVYxMUg5VjlIMTFWN0g5TTEzLDdWOUgxNFYxMEgxNlY3SDEzTTE4LDdWOUgyMFYyMEg5VjE4SDdWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOE0xNCwxMlYxNEgxMlYxNkgxNEMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNFYxMkgxNE03LDEzVjE2SDEwVjE0SDlWMTNIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JEaWZmZXJlbmNlQWIgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWNUgzVjNINVYxSDNNNywxVjNIMTBWMUg3TTEyLDFWM0gxNFY1SDE2VjNDMTYsMS44OSAxNS4xMSwxIDE0LDFIMTJNMSw3VjEwSDNWN0gxTTE0LDdDMTQsNyAxNCwxMS42NyAxNCwxNEMxMS42NywxNCA3LDE0IDcsMTRDNywxNCA3LDE4IDcsMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0MxOCw3IDE0LDcgMTQsN00xNiw5SDIwVjIwSDlWMTZIMTRDMTUuMTEsMTYgMTYsMTUuMTEgMTYsMTRWOU0xLDEyVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVWMTRIM1YxMkgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckRpZmZlcmVuY2VCYSA9IFwiTTIwLDIyQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjE4SDIwVjIwSDE4VjIySDIwTTE2LDIyVjIwSDEzVjIySDE2TTExLDIyVjIwSDlWMThIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgxMU0yMiwxNlYxM0gyMFYxNkgyMk05LDE2QzksMTYgOSwxMS4zMyA5LDlDMTEuMzMsOSAxNiw5IDE2LDlDMTYsOSAxNiw1IDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM0MxLjg5LDEgMSwxLjg5IDEsM1YxNEMxLDE1LjExIDEuODksMTYgMywxNkM1LDE2IDksMTYgOSwxNk03LDE0SDNWM0gxNFY3SDlDNy44OSw3IDcsNy44OSA3LDlWMTRNMjIsMTFWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOFY5SDIwVjExSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckVsbGlwc2UgPSBcIk0yMyw5VjE1SDIwLjM1QzE5LjM4LDE3LjEyIDE3LjQzLDE4Ljc4IDE1LDE5LjU0VjIySDlWMTkuNTRDNS41LDE4LjQ1IDMsMTUuNSAzLDEyQzMsNy41OCA3LjAzLDQgMTIsNEMxNS43OCw0IDE5LDYuMDcgMjAuMzUsOUgyM00xNywxNVY5SDE4LjA2QzE2Ljg1LDcuMjEgMTQuNTksNiAxMiw2QzguMTMsNiA1LDguNjkgNSwxMkM1LDE0LjM5IDYuNjQsMTYuNDYgOSwxNy40MlYxNkgxNVYxNy40MkMxNi4yOSwxNi45IDE3LjM1LDE2LjA1IDE4LjA2LDE1SDE3TTE5LDEzSDIxVjExSDE5VjEzTTExLDIwSDEzVjE4SDExVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckludGVyc2VjdGlvbiA9IFwiTTMuMTQsMUEyLjE0LDIuMTQgMCAwLDAgMSwzLjE0VjVIM1YzSDVWMUgzLjE0TTcsMVYzSDEwVjFIN00xMiwxVjNIMTRWNUgxNlYzLjE0QzE2LDEuOTYgMTUuMDQsMSAxMy44NiwxSDEyTTEsN1YxMEgzVjdIMU05LDdDNy44OSw3IDcsNy44OSA3LDlDNywxMS4zMyA3LDE2IDcsMTZDNywxNiAxMS41NywxNiAxMy44NiwxNkEyLjE0LDIuMTQgMCAwLDAgMTYsMTMuODZDMTYsMTEuNTcgMTYsNyAxNiw3QzE2LDcgMTEuMzMsNyA5LDdNMTgsN1Y5SDIwVjExSDIyVjlDMjIsNy44OSAyMS4xMSw3IDIwLDdIMThNOSw5SDE0VjE0SDlWOU0xLDEyVjEzLjg2QzEsMTUuMDQgMS45NiwxNiAzLjE0LDE2SDVWMTRIM1YxMkgxTTIwLDEzVjE2SDIyVjEzSDIwTTcsMThWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMTFWMjBIOVYxOEg3TTIwLDE4VjIwSDE4VjIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjE4SDIwTTEzLDIwVjIySDE2VjIwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckxpbmUgPSBcIk0xNSwzVjcuNTlMNy41OSwxNUgzVjIxSDlWMTYuNDJMMTYuNDIsOUgyMVYzTTE3LDVIMTlWN0gxN001LDE3SDdWMTlINVwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckxpbmsgPSBcIk0zIDFDMS44OSAxIDEgMS44OSAxIDNWMTRDMSAxNS4xMSAxLjg5IDE2IDMgMTZIMTRDMTUuMTEgMTYgMTYgMTUuMTEgMTYgMTRWMTFIMTRWMTRIM1YzSDE0VjVIMTZWM0MxNiAxLjg5IDE1LjExIDEgMTQgMU05IDdDNy44OSA3IDcgNy44OSA3IDlWMTJIOVY5SDIwVjIwSDlWMThIN1YyMEM3IDIxLjExIDcuODkgMjIgOSAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY5QzIyIDcuODkgMjEuMTEgNyAyMCA3SDlcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2ludCA9IFwiTTEyLDIwTDcsMjJMMTIsMTFMMTcsMjJMMTIsMjBNOCwySDE2VjVIMjJWN0gxNlYxMEg4VjdIMlY1SDhWMk0xMCw0VjhIMTRWNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2x5Z29uID0gXCJNMiwyVjhINC4yOEw1LjU3LDE2SDRWMjJIMTBWMjAuMDZMMTUsMjAuMDVWMjJIMjFWMTZIMTkuMTdMMjAsOUgyMlYzSDE2VjYuNTNMMTQuOCw4SDkuNTlMOCw1LjgyVjJNNCw0SDZWNkg0TTE4LDVIMjBWN0gxOE02LjMxLDhINy4xMUw5LDEwLjU5VjE0SDE1VjEwLjkxTDE2LjU3LDlIMThMMTcuMTYsMTZIMTVWMTguMDZIMTBWMTZINy42TTExLDEwSDEzVjEySDExTTYsMThIOFYyMEg2TTE3LDE4SDE5VjIwSDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmUgPSBcIk0yIDNWOUg0Ljk1TDYuOTUgMTVINlYyMUgxMlYxNi40MUwxNy40MSAxMUgyMlY1SDE2VjkuNTdMMTAuNTkgMTVIOS4wNkw3LjA2IDlIOFYzTTQgNUg2VjdINE0xOCA3SDIwVjlIMThNOCAxN0gxMFYxOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvclBvbHlsaW5lRWRpdCA9IFwiTTIgM1Y5SDQuOTVMNi45NSAxNUg2VjIxSDEyVjE2LjQxTDE3LjQxIDExSDIyVjVIMTZWOS41N0wxMC41OSAxNUg5LjA2TDcuMDYgOUg4VjNIMk00IDVINlY3SDRWNU0xOCA3SDIwVjlIMThWN00yMS4xNSAxM0MyMSAxMyAyMC44NyAxMy4wNSAyMC43NiAxMy4xNkwxOS43NSAxNC4xOEwyMS44MiAxNi4yNUwyMi44NCAxNS4yNEMyMy4wNSAxNS4wMyAyMy4wNSAxNC42NyAyMi44NCAxNC40NkwyMS41NCAxMy4xNkMyMS40MyAxMy4wNSAyMS4yOSAxMyAyMS4xNSAxM00xOS4xNSAxNC43NkwxMyAyMC45MVYyM0gxNS4wOUwyMS4yMyAxNi44NEwxOS4xNSAxNC43Nk04IDE3SDEwVjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmVNaW51cyA9IFwiTTIgM1Y5SDQuOTVMNi45NSAxNUg2VjIxSDEyVjE2LjQxTDE3LjQxIDExSDIyVjVIMTZWOS41N0wxMC41OSAxNUg5LjA2TDcuMDYgOUg4VjNIMk00IDVINlY3SDRWNU0xOCA3SDIwVjlIMThWN004IDE3SDEwVjE5SDhWMTdNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmVQbHVzID0gXCJNMiAzVjlINC45NUw2Ljk1IDE1SDZWMjFIMTJWMTYuNDFMMTcuNDEgMTFIMjJWNUgxNlY5LjU3TDEwLjU5IDE1SDkuMDZMNy4wNiA5SDhWM0gyTTQgNUg2VjdINFY1TTE4IDdIMjBWOUgxOFY3TTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4TTggMTdIMTBWMTlIOFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2x5bGluZVJlbW92ZSA9IFwiTTIxLjEgMTUuNUwxOSAxNy42TDE2LjkgMTUuNUwxNS41IDE2LjlMMTcuNiAxOUwxNS41IDIxLjFMMTYuOSAyMi41TDE5IDIwLjRMMjEuMSAyMi41TDIyLjUgMjEuMUwyMC40IDE5TDIyLjUgMTYuOUwyMS4xIDE1LjVNMTYgNVY5LjZMMTAuNiAxNUg5LjFMNy4xIDlIOFYzSDJWOUg1TDcgMTVINlYyMUgxMlYxNi40TDE3LjQgMTFIMjJWNUgxNk02IDdINFY1SDZWN00xMCAxOUg4VjE3SDEwVjE5TTIwIDlIMThWN0gyMFY5XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUmFkaXVzID0gXCJNMiw0SDRWMkgxMFY0QTEwLDEwIDAgMCwxIDIwLDE0SDIyVjIwSDIwVjIySDE4VjIwSDE2VjE0SDE4QTgsOCAwIDAsMCAxMCw2VjhINFY2SDJWNE0xOCwxNlYxOEgyMFYxNkgxOE02LDRWNkg4VjRINlpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JSZWN0YW5nbGUgPSBcIk0yLDRIOFY2SDE2VjRIMjJWMTBIMjBWMTRIMjJWMjBIMTZWMThIOFYyMEgyVjE0SDRWMTBIMlY0TTE2LDEwVjhIOFYxMEg2VjE0SDhWMTZIMTZWMTRIMThWMTBIMTZNNCw2VjhINlY2SDRNMTgsNlY4SDIwVjZIMThNNCwxNlYxOEg2VjE2SDRNMTgsMTZWMThIMjBWMTZIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yU2VsZWN0aW9uID0gXCJNMywxSDVWM0gzVjVIMVYzQTIsMiAwIDAsMSAzLDFNMTQsMUEyLDIgMCAwLDEgMTYsM1Y1SDE0VjNIMTJWMUgxNE0yMCw3QTIsMiAwIDAsMSAyMiw5VjExSDIwVjlIMThWN0gyME0yMiwyMEEyLDIgMCAwLDEgMjAsMjJIMThWMjBIMjBWMThIMjJWMjBNMjAsMTNIMjJWMTZIMjBWMTNNMTMsOVY3SDE2VjEwSDE0VjlIMTNNMTMsMjJWMjBIMTZWMjJIMTNNOSwyMkEyLDIgMCAwLDEgNywyMFYxOEg5VjIwSDExVjIySDlNNywxNlYxM0g5VjE0SDEwVjE2SDdNNywzVjFIMTBWM0g3TTMsMTZBMiwyIDAgMCwxIDEsMTRWMTJIM1YxNEg1VjE2SDNNMSw3SDNWMTBIMVY3TTksN0gxMVY5SDlWMTFIN1Y5QTIsMiAwIDAsMSA5LDdNMTYsMTRBMiwyIDAgMCwxIDE0LDE2SDEyVjE0SDE0VjEySDE2VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvclNxdWFyZSA9IFwiTTIsMkg4VjRIMTZWMkgyMlY4SDIwVjE2SDIyVjIySDE2VjIwSDhWMjJIMlYxNkg0VjhIMlYyTTE2LDhWNkg4VjhINlYxNkg4VjE4SDE2VjE2SDE4VjhIMTZNNCw0VjZINlY0SDRNMTgsNFY2SDIwVjRIMThNNCwxOFYyMEg2VjE4SDRNMTgsMThWMjBIMjBWMThIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yVHJpYW5nbGUgPSBcIk05LDNWOUg5LjczTDUuNzksMTZIMlYyMkg4VjIwSDE2VjIySDIyVjE2SDE4LjIxTDE0LjI3LDlIMTVWM00xMSw1SDEzVjdIMTFNMTIsOS4wNEwxNiwxNi4xNVYxOEg4VjE2LjE1TTQsMThINlYyMEg0TTE4LDE4SDIwVjIwSDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yVW5pb24gPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE2VjNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRWOUgyMFYyMEg5VjE0SDNWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaHMgPSBcIk00LDZBMiwyIDAgMCwwIDIsOFYxNkEyLDIgMCAwLDAgNCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWOEEyLDIgMCAwLDAgMjAsNkg0TTQuNTQsMTBIN1YxNEg0LjU0QzQuMTksMTMuMzkgNCwxMi43IDQsMTJDNCwxMS4zIDQuMTksMTAuNjEgNC41NCwxME05LDEwSDE1VjE0SDlWMTBNMTcsMTBIMTkuNDZDMTkuODEsMTAuNjEgMjAsMTEuMyAyMCwxMkMyMCwxMi43IDE5LjgxLDEzLjM5IDE5LjQ2LDE0SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpYnJhdGUgPSBcIk0xNiwxOUg4VjVIMTZNMTYuNSwzSDcuNUExLjUsMS41IDAgMCwwIDYsNC41VjE5LjVBMS41LDEuNSAwIDAsMCA3LjUsMjFIMTYuNUExLjUsMS41IDAgMCwwIDE4LDE5LjVWNC41QTEuNSwxLjUgMCAwLDAgMTYuNSwzTTE5LDE3SDIxVjdIMTlNMjIsOVYxNUgyNFY5TTMsMTdINVY3SDNNMCwxNUgyVjlIMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWJyYXRlT2ZmID0gXCJNOC4yLDVMNi41NSwzLjM1QzYuODEsMy4xMiA3LjE1LDMgNy41LDNIMTYuNUExLjUsMS41IDAgMCwxIDE4LDQuNVYxNC44TDE2LDEyLjhWNUg4LjJNMCwxNUgyVjlIMFYxNU0yMSwxN1Y3SDE5VjE1LjhMMjAuMiwxN0gyMU0zLDE3SDVWN0gzVjE3TTE4LDE3LjM1TDIyLjExLDIxLjQ2TDIwLjg0LDIyLjczTDE4LDE5Ljg1QzE3LjgzLDIwLjU0IDE3LjIxLDIxIDE2LjUsMjFINy41QTEuNSwxLjUgMCAwLDEgNiwxOS41VjcuODlMMS4xMSwzTDIuMzksMS43M0w2LjA5LDUuNDRMOCw3LjM0TDE2LDE1LjM0TDE4LDE3LjM0VjE3LjM1TTE2LDE3Ljg5TDgsOS44OVYxOUgxNlYxNy44OU0yMiw5VjE1SDI0VjlIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8gPSBcIk0xNywxMC41VjdBMSwxIDAgMCwwIDE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8zZCA9IFwiTTUsN0g5QTIsMiAwIDAsMSAxMSw5VjE1QTIsMiAwIDAsMSA5LDE3SDVWMTVIOVYxM0g2VjExSDlWOUg1VjdNMTMsN0gxNkEzLDMgMCAwLDEgMTksMTBWMTRBMywzIDAgMCwxIDE2LDE3SDEzVjdNMTYsMTVBMSwxIDAgMCwwIDE3LDE0VjEwQTEsMSAwIDAsMCAxNiw5SDE1VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvM2RPZmYgPSBcIk0yLjYxIDJMMjEuMzUgMjAuNzRMMTkuOTQgMjIuMTVMMTQuOCAxN0gxM1YxNS4yTDExIDEzLjIzVjE1LjIxQzEwLjkzIDE1LjY4IDEwLjc0IDE2LjA4IDEwLjQxIDE2LjQxQzEwLjA4IDE2LjczIDkuNjggMTYuOTMgOS4yMSAxN0g1VjE1SDlWMTNINlYxMUg4LjhMNi43OSA5SDVWNy4yM0wxLjIgMy40MUwyLjYxIDJNMTYgN0gxNi4yMkMxNyA3LjA3IDE3LjYzIDcuMzYgMTguMTQgNy44OEMxOC42NSA4LjM5IDE4LjkzIDkgMTkgOS43NlYxNC4yNEMxOC45NSAxNC42MyAxOC44NyAxNSAxOC43MiAxNS4zTDE3IDEzLjZWOS44NUMxNi45NSA5LjYzIDE2Ljg0IDkuNDQgMTYuNjkgOS4yOEMxNi41MyA5LjEzIDE2LjM0IDkuMDMgMTYuMTIgOUgxNVYxMS41OUwxMyA5LjU3VjdIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8zZFZhcmlhbnQgPSBcIk0xNCwxMFYxNEEwLjUsMC41IDAgMCwxIDEzLjUsMTQuNUgxMi41VjkuNUgxMy41QTAuNSwwLjUgMCAwLDEgMTQsMTBNMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU05LjUsOS41QTEuNSwxLjUgMCAwLDAgOCw4SDQuNVY5LjVIOFYxMS4yNUg1LjVWMTIuNzVIOFYxNC41SDQuNVYxNkg4QTEuNSwxLjUgMCAwLDAgOS41LDE0LjVNMTUuNSw5LjVBMS41LDEuNSAwIDAsMCAxNCw4SDExVjE2SDE0QTEuNSwxLjUgMCAwLDAgMTUuNSwxNC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW80a0JveCA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDEzLjVIMTFWMTVIOS41VjEzLjVINi41VjlIOFYxMkg5LjVWOUgxMVYxMkgxMlYxMy41TTE4LDE1SDE2LjJMMTQuNCwxMi44VjE1SDEzVjlIMTQuNVYxMS4yTDE2LjIsOUgxOEwxNS44LDEyTDE4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQWNjb3VudCA9IFwiTTE3LDEwLjVMMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU0xNCwxNlYxNUMxNCwxMy42NyAxMS4zMywxMyAxMCwxM0M4LjY3LDEzIDYsMTMuNjcgNiwxNVYxNkgxNE0xMCw4QTIsMiAwIDAsMCA4LDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDEwLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9Cb3ggPSBcIk0xOCwxNkwxNCwxMi44VjE2SDZWOEgxNFYxMS4yTDE4LDhNMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0JveE9mZiA9IFwiTTYsOEg2LjczTDE0LDE1LjI3VjE2SDZNMi4yNywxTDEsMi4yN0wzLDQuMjhDMi40MSw0LjYyIDIsNS4yNiAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMTguNzNMMjAuNzMsMjJMMjIsMjAuNzNNMjAsNEg3LjgyTDExLjgyLDhIMTRWMTAuMThMMTQuNTcsMTAuNzVMMTgsOFYxNC4xOEwyMiwxOC4xN0MyMiwxOC4xMSAyMiwxOC4wNiAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQ2hlY2sgPSBcIk0xNyAxMC41VjdDMTcgNi40NSAxNi41NSA2IDE2IDZINEMzLjQ1IDYgMyA2LjQ1IDMgN1YxN0MzIDE3LjU1IDMuNDUgMTggNCAxOEgxNkMxNi41NSAxOCAxNyAxNy41NSAxNyAxN1YxMy41TDIxIDE3LjVWNi41TDE3IDEwLjVNOC45MyAxNUw2IDExLjhMNy4yNCAxMC41Nkw4LjkzIDEyLjI2TDEyLjc2IDguNDNMMTQgOS45M0w4LjkzIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQ2hlY2tPdXRsaW5lID0gXCJNMTUgOFYxNkg1VjhIMTVNMTYgNkg0QzMuNDUgNiAzIDYuNDUgMyA3VjE3QzMgMTcuNTUgMy40NSAxOCA0IDE4SDE2QzE2LjU1IDE4IDE3IDE3LjU1IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNVY3QzE3IDYuNDUgMTYuNTUgNiAxNiA2TTYuMzUgMTIuMDhMNy41IDEwLjk1TDkgMTIuNUwxMi41IDlMMTMuNjUgMTAuMzdMOSAxNUw2LjM1IDEyLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvSGlnaERlZmluaXRpb24gPSBcIk0xNCAxMFYxNEMxNCAxNC4zIDEzLjggMTQuNSAxMy41IDE0LjVIMTIuNVY5LjVIMTMuNUMxMy44IDkuNSAxNCA5LjcgMTQgMTBNMTcgMTAuNVY3QzE3IDYuNCAxNi42IDYgMTYgNkg0QzMuNCA2IDMgNi40IDMgN1YxN0MzIDE3LjYgMy40IDE4IDQgMThIMTZDMTYuNiAxOCAxNyAxNy42IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNU05LjUgMTZIOFYxMi44SDZWMTZINC41VjhINlYxMS4ySDhWOEg5LjVWMTZNMTUuNSAxNC41QzE1LjUgMTUuMyAxNC44IDE2IDE0IDE2SDExVjhIMTRDMTQuOCA4IDE1LjUgOC43IDE1LjUgOS41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9JbWFnZSA9IFwiTTE3LDEwLjVMMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU0xMC45MSw5LjU1TDkuMiwxMS44MkwxMC41LDEzLjU1TDkuNzcsMTQuMDlMNy43MywxMS4zNkw1LDE1SDE1TDEwLjkxLDkuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9JbnB1dEFudGVubmEgPSBcIk0xMiw1QTcsNyAwIDAsMCA1LDEySDdBNSw1IDAgMCwxIDEyLDdBNSw1IDAgMCwxIDE3LDEySDE5QTcsNyAwIDAsMCAxMiw1TTEzLDE0LjI5QzEzLjg4LDEzLjkgMTQuNSwxMy4wMyAxNC41LDEyQTIuNSwyLjUgMCAwLDAgMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQzkuNSwxMyAxMC4xMiwxMy45IDExLDE0LjI5VjE3LjU5TDcuNTksMjFMOSwyMi40MUwxMiwxOS40MUwxNSwyMi40MUwxNi40MSwyMUwxMywxNy41OVYxNC4yOU0xMiwxQTExLDExIDAgMCwwIDEsMTJIM0E5LDkgMCAwLDEgMTIsM0E5LDkgMCAwLDEgMjEsMTJIMjNBMTEsMTEgMCAwLDAgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0Q29tcG9uZW50ID0gXCJNNSwyQTEsMSAwIDAsMCA0LDFBMSwxIDAgMCwwIDMsMlY2SDFWMTJIN1Y2SDVWMk05LDE2QzksMTcuMyA5Ljg0LDE4LjQgMTEsMTguODJWMjNIMTNWMTguODJDMTQuMTYsMTguNDEgMTUsMTcuMzEgMTUsMTZWMTRIOVYxNk0xLDE2QzEsMTcuMyAxLjg0LDE4LjQgMywxOC44MlYyM0g1VjE4LjgyQzYuMTYsMTguNCA3LDE3LjMgNywxNlYxNEgxVjE2TTIxLDZWMkExLDEgMCAwLDAgMjAsMUExLDEgMCAwLDAgMTksMlY2SDE3VjEySDIzVjZIMjFNMTMsMkExLDEgMCAwLDAgMTIsMUExLDEgMCAwLDAgMTEsMlY2SDlWMTJIMTVWNkgxM1YyTTE3LDE2QzE3LDE3LjMgMTcuODQsMTguNCAxOSwxOC44MlYyM0gyMVYxOC44MkMyMi4xNiwxOC40MSAyMywxNy4zMSAyMywxNlYxNEgxN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0SGRtaSA9IFwiTTE4LDdWNEEyLDIgMCAwLDAgMTYsMkg4QTIsMiAwIDAsMCA2LDRWN0g1VjEzTDgsMTlWMjJIMTZWMTlMMTksMTNWN0gxOE04LDRIMTZWN0gxNFY1SDEzVjdIMTFWNUgxMFY3SDhWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0U2NhcnQgPSBcIk0yMC42IDIuMkwxNy4zIDIuNEwxMy44IDQuNEwxMy4zIDMuNUwyIDEwVjE3SDNWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE1QzE2LjEgMjEgMTcgMjAuMSAxNyAxOVYxN0gxOFYxMEgxN0wxNi44IDkuNkwyMC4zIDcuNkwyMi4xIDQuOEwyMC42IDIuMk0xNSAxN1YxOUg1VjE3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvSW5wdXRTdmlkZW8gPSBcIk04LDExLjVBMS41LDEuNSAwIDAsMCA2LjUsMTBBMS41LDEuNSAwIDAsMCA1LDExLjVBMS41LDEuNSAwIDAsMCA2LjUsMTNBMS41LDEuNSAwIDAsMCA4LDExLjVNMTUsNi41QTEuNSwxLjUgMCAwLDAgMTMuNSw1SDEwLjVBMS41LDEuNSAwIDAsMCA5LDYuNUExLjUsMS41IDAgMCwwIDEwLjUsOEgxMy41QTEuNSwxLjUgMCAwLDAgMTUsNi41TTguNSwxNUExLjUsMS41IDAgMCwwIDcsMTYuNUExLjUsMS41IDAgMCwwIDguNSwxOEExLjUsMS41IDAgMCwwIDEwLDE2LjVBMS41LDEuNSAwIDAsMCA4LjUsMTVNMTIsMUExMSwxMSAwIDAsMCAxLDEyQTExLDExIDAgMCwwIDEyLDIzQTExLDExIDAgMCwwIDIzLDEyQTExLDExIDAgMCwwIDEyLDFNMTIsMjFDNy4wNCwyMSAzLDE2Ljk2IDMsMTJDMyw3LjA0IDcuMDQsMyAxMiwzQzE2Ljk2LDMgMjEsNy4wNCAyMSwxMkMyMSwxNi45NiAxNi45NiwyMSAxMiwyMU0xNy41LDEwQTEuNSwxLjUgMCAwLDAgMTYsMTEuNUExLjUsMS41IDAgMCwwIDE3LjUsMTNBMS41LDEuNSAwIDAsMCAxOSwxMS41QTEuNSwxLjUgMCAwLDAgMTcuNSwxME0xNS41LDE1QTEuNSwxLjUgMCAwLDAgMTQsMTYuNUExLjUsMS41IDAgMCwwIDE1LjUsMThBMS41LDEuNSAwIDAsMCAxNywxNi41QTEuNSwxLjUgMCAwLDAgMTUuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb01pbnVzID0gXCJNMTcsMTAuNVY3QTEsMSAwIDAsMCAxNiw2SDRBMSwxIDAgMCwwIDMsN1YxN0ExLDEgMCAwLDAgNCwxOEgxNkExLDEgMCAwLDAgMTcsMTdWMTMuNUwyMSwxNy41VjYuNUwxNywxMC41TTE0LDEzSDZWMTFIMTRWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9NaW51c091dGxpbmUgPSBcIk0xNSA4VjE2SDVWOEgxNU0xNiA2SDRDMy40NSA2IDMgNi40NSAzIDdWMTdDMyAxNy41NSAzLjQ1IDE4IDQgMThIMTZDMTYuNTUgMTggMTcgMTcuNTUgMTcgMTdWMTMuNUwyMSAxNy41VjYuNUwxNyAxMC41VjdDMTcgNi40NSAxNi41NSA2IDE2IDZNMTMgMTNIN1YxMUgxM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb09mZiA9IFwiTTMuMjcsMkwyLDMuMjdMNC43Myw2SDRBMSwxIDAgMCwwIDMsN1YxN0ExLDEgMCAwLDAgNCwxOEgxNkMxNi4yLDE4IDE2LjM5LDE3LjkyIDE2LjU0LDE3LjgyTDE5LjczLDIxTDIxLDE5LjczTTIxLDYuNUwxNywxMC41VjdBMSwxIDAgMCwwIDE2LDZIOS44MkwyMSwxNy4xOFY2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9PZmZPdXRsaW5lID0gXCJNMy40MSwxLjg2TDIsMy4yN0w0LjczLDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QzE2LjIxLDE4IDE2LjM5LDE3LjkyIDE2LjU1LDE3LjgyTDE5LjczLDIxTDIxLjE0LDE5LjU5TDEyLjI4LDEwLjczTDMuNDEsMS44Nk01LDE2VjhINi43M0wxNC43MywxNkg1TTE1LDhWMTAuNjFMMjEsMTYuNjFWNi41TDE3LDEwLjVWN0ExLDEgMCAwLDAgMTYsNkgxMC4zOUwxMi4zOSw4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvT3V0bGluZSA9IFwiTTE1LDhWMTZINVY4SDE1TTE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVWN0ExLDEgMCAwLDAgMTYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1BsdXMgPSBcIk0xNywxMC41VjdBMSwxIDAgMCwwIDE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVNMTQsMTNIMTFWMTZIOVYxM0g2VjExSDlWOEgxMVYxMUgxNFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1BsdXNPdXRsaW5lID0gXCJNMTUgOFYxNkg1VjhIMTVNMTYgNkg0QzMuNDUgNiAzIDYuNDUgMyA3VjE3QzMgMTcuNTUgMy40NSAxOCA0IDE4SDE2QzE2LjU1IDE4IDE3IDE3LjU1IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNVY3QzE3IDYuNDUgMTYuNTUgNiAxNiA2TTEzIDEzSDExVjE1SDlWMTNIN1YxMUg5VjlIMTFWMTFIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9TdGFiaWxpemF0aW9uID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMjBWNkg0TTcuMjQsNi41OEwxOC44Myw5LjY5TDE2Ljc2LDE3LjQyTDUuMTcsMTQuMzFMNy4yNCw2LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvU3dpdGNoID0gXCJNMTMsMTUuNVYxM0g3VjE1LjVMMy41LDEyTDcsOC41VjExSDEzVjguNUwxNi41LDEyTTE4LDkuNVY2QTEsMSAwIDAsMCAxNyw1SDNBMSwxIDAgMCwwIDIsNlYxOEExLDEgMCAwLDAgMywxOUgxN0ExLDEgMCAwLDAgMTgsMThWMTQuNUwyMiwxOC41VjUuNUwxOCw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9Td2l0Y2hPdXRsaW5lID0gXCJNOCAxM0gxMlYxNUwxNSAxMkwxMiA5VjExSDhWOUw1IDEyTDggMTVWMTNNMTggOS41VjZDMTggNS40IDE3LjUgNSAxNyA1SDNDMi41IDUgMiA1LjQgMiA2VjE4QzIgMTguNSAyLjUgMTkgMyAxOUgxN0MxNy41IDE5IDE4IDE4LjUgMTggMThWMTQuNUwyMiAxOC41VjUuNUwxOCA5LjVNMTYgMTdINFY3SDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvVmludGFnZSA9IFwiTTE4LDE0LjVWMTFBMSwxIDAgMCwwIDE3LDEwSDE2QzE4LjI0LDguMzkgMTguNzYsNS4yNyAxNy4xNSwzQzE1LjU0LDAuNzggMTIuNDIsMC4yNiAxMC4xNywxLjg3QzkuNSwyLjM1IDguOTYsMyA4LjYsMy43M0M2LjI1LDIuMjggMy4xNywzIDEuNzIsNS4zN0MwLjI4LDcuNzIgMSwxMC44IDMuMzYsMTIuMjVDMy41NywxMi4zNyAzLjc4LDEyLjUgNCwxMi41OFYyMUExLDEgMCAwLDAgNSwyMkgxN0ExLDEgMCAwLDAgMTgsMjFWMTcuNUwyMiwyMS41VjEwLjVMMTgsMTQuNU0xMyw0QTIsMiAwIDAsMSAxNSw2QTIsMiAwIDAsMSAxMyw4QTIsMiAwIDAsMSAxMSw2QTIsMiAwIDAsMSAxMyw0TTYsNkEyLDIgMCAwLDEgOCw4QTIsMiAwIDAsMSA2LDEwQTIsMiAwIDAsMSA0LDhBMiwyIDAgMCwxIDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1dpcmVsZXNzID0gXCJNMTcsMTQuNVYxMUExLDEgMCAwLDAgMTYsMTBINEExLDEgMCAwLDAgMywxMVYyMUExLDEgMCAwLDAgNCwyMkgxNkExLDEgMCAwLDAgMTcsMjFWMTcuNUwyMSwyMS41VjEwLjVNMywzLjg2TDQuNCw1LjI0QzcuNSwyLjE5IDEyLjUsMi4xOSAxNS42LDUuMjRMMTcsMy44NkMxMy4xNCwwLjA1IDYuODcsMC4wNSAzLDMuODZNNS44LDYuNjJMNy4yLDhDOC43NSw2LjUgMTEuMjUsNi41IDEyLjgsOEwxNC4yLDYuNjJDMTEuODgsNC4zNCA4LjEyLDQuMzQgNS44LDYuNjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9XaXJlbGVzc091dGxpbmUgPSBcIk0xNSwxMlYyMEg1VjEySDE1TTE2LDEwSDRBMSwxIDAgMCwwIDMsMTFWMjFBMSwxIDAgMCwwIDQsMjJIMTZBMSwxIDAgMCwwIDE3LDIxVjE3LjVMMjEsMjEuNVYxMC41TDE3LDE0LjVWMTFBMSwxIDAgMCwwIDE2LDEwTTMsMy44Nkw0LjQsNS4yNEM3LjUsMi4xOSAxMi41LDIuMTkgMTUuNiw1LjI0TDE3LDMuODZDMTMuMTQsMC4wNSA2Ljg3LDAuMDUgMywzLjg2TTUuOCw2LjYzTDcuMiw4QzguNzUsNi41IDExLjI1LDYuNSAxMi44LDhMMTQuMiw2LjYzQzExLjg4LDQuMzQgOC4xMiw0LjM0IDUuOCw2LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdBZ2VuZGEgPSBcIk0yMSAzSDNDMi40IDMgMiAzLjQgMiA0VjEwQzIgMTAuNiAyLjQgMTEgMyAxMUgyMUMyMS42IDExIDIyIDEwLjYgMjIgMTBWNEMyMiAzLjQgMjEuNiAzIDIxIDNNMjEgMTNIM0MyLjQgMTMgMiAxMy40IDIgMTRWMjBDMiAyMC42IDIuNCAyMSAzIDIxSDIxQzIxLjYgMjEgMjIgMjAuNiAyMiAyMFYxNEMyMiAxMy40IDIxLjYgMTMgMjEgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0FnZW5kYU91dGxpbmUgPSBcIk0yMSAxM0gzQTEgMSAwIDAgMCAyIDE0VjIwQTEgMSAwIDAgMCAzIDIxSDIxQTEgMSAwIDAgMCAyMiAyMFYxNEExIDEgMCAwIDAgMjEgMTNNMjAgMTlINFYxNUgyME0yMSAzSDNBMSAxIDAgMCAwIDIgNFYxMEExIDEgMCAwIDAgMyAxMUgyMUExIDEgMCAwIDAgMjIgMTBWNEExIDEgMCAwIDAgMjEgM00yMCA5SDRWNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3QXJyYXkgPSBcIk04LDE4SDE3VjVIOE0xOCw1VjE4SDIxVjVNNCwxOEg3VjVINFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3QXJyYXlPdXRsaW5lID0gXCJNMTUgN1YxNkgxMFY3SDE1TTIxIDVIMThWMThIMjFWNU0xNyA1SDhWMThIMTdWNU03IDVINFYxOEg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Nhcm91c2VsID0gXCJNMTgsNlYxN0gyMlY2TTIsMTdINlY2SDJNNywxOUgxN1Y0SDdWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Nhcm91c2VsT3V0bGluZSA9IFwiTTIgNkg2VjE3SDJWNk03IDE5SDE3VjRIN1YxOU05IDZIMTVWMTdIOVY2TTE4IDZIMjJWMTdIMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29sdW1uID0gXCJNMTYsNVYxOEgyMVY1TTQsMThIOVY1SDRNMTAsMThIMTVWNUgxMFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29sdW1uT3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNMTQgN1YxNkgxMVY3SDE0TTYgN0g5VjE2SDZWN00xOSAxNkgxNlY3SDE5VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21meSA9IFwiTTMsOUg3VjVIM1Y5TTMsMTRIN1YxMEgzVjE0TTgsMTRIMTJWMTBIOFYxNE0xMywxNEgxN1YxMEgxM1YxNE04LDlIMTJWNUg4VjlNMTMsNVY5SDE3VjVIMTNNMTgsMTRIMjJWMTBIMThWMTRNMywxOUg3VjE1SDNWMTlNOCwxOUgxMlYxNUg4VjE5TTEzLDE5SDE3VjE1SDEzVjE5TTE4LDE5SDIyVjE1SDE4VjE5TTE4LDVWOUgyMlY1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21meU91dGxpbmUgPSBcIk0zIDVWMTlIMjJWNUgzTTIwIDlIMTcuNzVWN0gyMFY5TTkuMjUgMTFIMTEuNVYxM0g5LjI1VjExTTcuMjUgMTNINVYxMUg3LjI1VjEzTTExLjUgOUg5LjI1VjdIMTEuNVY5TTEzLjUgN0gxNS43NVY5SDEzLjVWN00xMS41IDE1VjE3SDkuMjVWMTVIMTEuNU0xMy41IDE1SDE1Ljc1VjE3SDEzLjVWMTVNMTMuNSAxM1YxMUgxNS43NVYxM0gxMy41TTE3Ljc1IDExSDIwVjEzSDE3Ljc1VjExTTcuMjUgN1Y5SDVWN0g3LjI1TTUgMTVINy4yNVYxN0g1VjE1TTE3Ljc1IDE3VjE1SDIwVjE3SDE3Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21wYWN0ID0gXCJNMywxOUg5VjEySDNWMTlNMTAsMTlIMjJWMTJIMTBWMTlNMyw1VjExSDIyVjVIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29tcGFjdE91dGxpbmUgPSBcIk0zLDVWMTlIMjJWNUgzTTUsN0gyMFYxMUg1VjdNNSwxN1YxM0g5VjE3SDVNMTEsMTdWMTNIMjBWMTdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Rhc2hib2FyZCA9IFwiTTEzLDNWOUgyMVYzTTEzLDIxSDIxVjExSDEzTTMsMjFIMTFWMTVIM00zLDEzSDExVjNIM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3RGFzaGJvYXJkT3V0bGluZSA9IFwiTTE5LDVWN0gxNVY1SDE5TTksNVYxMUg1VjVIOU0xOSwxM1YxOUgxNVYxM0gxOU05LDE3VjE5SDVWMTdIOU0yMSwzSDEzVjlIMjFWM00xMSwzSDNWMTNIMTFWM00yMSwxMUgxM1YyMUgyMVYxMU0xMSwxNUgzVjIxSDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdEYXNoYm9hcmRWYXJpYW50ID0gXCJNMiw1VjE5SDhWNUgyTTksNVYxMEgxNVY1SDlNMTYsNVYxNEgyMlY1SDE2TTksMTFWMTlIMTVWMTFIOU0xNiwxNVYxOUgyMlYxNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3RGFzaGJvYXJkVmFyaWFudE91dGxpbmUgPSBcIk0yIDVWMTlIMjJWNUgyTTIwIDEySDE2VjdIMjBWMTJNMTQgMTBIMTBWN0gxNFYxME0xMCAxMkgxNFYxN0gxMFYxMk00IDdIOFYxN0g0VjdNMTYgMTdWMTRIMjBWMTdIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0RheSA9IFwiTTIsM1Y2SDIxVjNNMjAsOEgzQTEsMSAwIDAsMCAyLDlWMTVBMSwxIDAgMCwwIDMsMTZIMjBBMSwxIDAgMCwwIDIxLDE1VjlBMSwxIDAgMCwwIDIwLDhNMiwyMUgyMVYxOEgyVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdEYXlPdXRsaW5lID0gXCJNMjEgMThIMlYyMEgyMVYxOE0xOSAxMFYxNEg0VjEwSDE5TTIwIDhIM0MyLjQ1IDggMiA4LjQ1IDIgOVYxNUMyIDE1LjU1IDIuNDUgMTYgMyAxNkgyMEMyMC41NSAxNiAyMSAxNS41NSAyMSAxNVY5QzIxIDguNDUgMjAuNTUgOCAyMCA4TTIxIDRIMlY2SDIxVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0dyaWQgPSBcIk0zLDExSDExVjNIM00zLDIxSDExVjEzSDNNMTMsMjFIMjFWMTNIMTNNMTMsM1YxMUgyMVYzXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0dyaWRPdXRsaW5lID0gXCJNMyAxMUgxMVYzSDNNNSA1SDlWOUg1TTEzIDIxSDIxVjEzSDEzTTE1IDE1SDE5VjE5SDE1TTMgMjFIMTFWMTNIM001IDE1SDlWMTlINU0xMyAzVjExSDIxVjNNMTkgOUgxNVY1SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdHcmlkUGx1cyA9IFwiTTEzIDNWMTFIMjFWM0gxM00zIDIxSDExVjEzSDNWMjFNMyAzVjExSDExVjNIM00xMyAxNkgxNlYxM0gxOFYxNkgyMVYxOEgxOFYyMUgxNlYxOEgxM1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3R3JpZFBsdXNPdXRsaW5lID0gXCJNMyAyMUgxMVYxM0gzTTUgMTVIOVYxOUg1TTMgMTFIMTFWM0gzTTUgNUg5VjlINU0xMyAzVjExSDIxVjNNMTkgOUgxNVY1SDE5TTE4IDE2SDIxVjE4SDE4VjIxSDE2VjE4SDEzVjE2SDE2VjEzSDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdIZWFkbGluZSA9IFwiTTQsNVY3SDIxVjVNNCwxMUgyMVY5SDRNNCwxOUgyMVYxN0g0TTQsMTVIMjFWMTNINFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TGlzdCA9IFwiTTksNVY5SDIxVjVNOSwxOUgyMVYxNUg5TTksMTRIMjFWMTBIOU00LDlIOFY1SDRNNCwxOUg4VjE1SDRNNCwxNEg4VjEwSDRWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0xpc3RPdXRsaW5lID0gXCJNMyA1VjE5SDIwVjVIM003IDdWOUg1VjdIN001IDEzVjExSDdWMTNINU01IDE1SDdWMTdINVYxNU0xOCAxN0g5VjE1SDE4VjE3TTE4IDEzSDlWMTFIMThWMTNNMTggOUg5VjdIMThWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TW9kdWxlID0gXCJNMTYsNVYxMUgyMVY1TTEwLDExSDE1VjVIMTBNMTYsMThIMjFWMTJIMTZNMTAsMThIMTVWMTJIMTBNNCwxOEg5VjEySDRNNCwxMUg5VjVINFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TW9kdWxlT3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNMTQgN1YxMC41SDExVjdIMTRNNiA3SDlWMTAuNUg2VjdNNiAxNlYxMi41SDlWMTZINk0xMSAxNlYxMi41SDE0VjE2SDExTTE5IDE2SDE2VjEyLjVIMTlWMTZNMTYgMTAuNVY3SDE5VjEwLjVIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1BhcmFsbGVsID0gXCJNMTkgM1YyMUgxNVYzSDE5TTE0IDNWMjFIMTBWM0gxNE05IDNWMjFINVYzSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1BhcmFsbGVsT3V0bGluZSA9IFwiTTE5IDNINVYyMUgxOVYzTTE3IDE5SDE1VjVIMTdWMTlNMTMgMTlIMTFWNUgxM1YxOU03IDVIOVYxOUg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1F1aWx0ID0gXCJNMTAsNVYxMUgyMVY1TTE2LDE4SDIxVjEySDE2TTQsMThIOVY1SDRNMTAsMThIMTVWMTJIMTBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1F1aWx0T3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNNiAxNlY3SDlWMTZINk0xMSAxNlYxMi41SDE0VjE2SDExTTE5IDE2SDE2VjEyLjVIMTlWMTZNMTEgMTAuNVY3SDE5VjEwLjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NlcXVlbnRpYWwgPSBcIk0zIDVIMjFWOUgzVjVNMyAxMEgyMVYxNEgzVjEwTTMgMTVIMjFWMTlIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3U2VxdWVudGlhbE91dGxpbmUgPSBcIk0zIDVWMTlIMjFWNUgzTTE5IDdWOUg1VjdIMTlNMTkgMTFWMTNINVYxMUgxOU01IDE3VjE1SDE5VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NwbGl0SG9yaXpvbnRhbCA9IFwiTTMsNUgyMVY3SDNWNU0zLDExVjlIMjFWMTFIM00zLDE5VjEzSDIxVjE5SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NwbGl0VmVydGljYWwgPSBcIk0xMyw1SDIxVjE5SDEzVjVNMyw1SDExVjdIM1Y1TTMsMTFWOUgxMVYxMUgzTTMsMTlWMTdIMTFWMTlIM00zLDE1VjEzSDExVjE1SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1N0cmVhbSA9IFwiTTQsNVYxMUgyMVY1TTQsMThIMjFWMTJINFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3U3RyZWFtT3V0bGluZSA9IFwiTTQgNlYxOEgyMVY2SDRNMTkgMTZINlYxM0gxOVYxNk02IDExVjhIMTlWMTFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3V2VlayA9IFwiTTEzLDVIMTBBMSwxIDAgMCwwIDksNlYxOEExLDEgMCAwLDAgMTAsMTlIMTNBMSwxIDAgMCwwIDE0LDE4VjZBMSwxIDAgMCwwIDEzLDVNMjAsNUgxN0ExLDEgMCAwLDAgMTYsNlYxOEExLDEgMCAwLDAgMTcsMTlIMjBBMSwxIDAgMCwwIDIxLDE4VjZBMSwxIDAgMCwwIDIwLDVNNiw1SDNBMSwxIDAgMCwwIDIsNlYxOEExLDEgMCAwLDAgMywxOUg2QTEsMSAwIDAsMCA3LDE4VjZBMSwxIDAgMCwwIDYsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3V2Vla091dGxpbmUgPSBcIk0yMSA0SDNDMi40NSA0IDIgNC40NSAyIDVWMTlDMiAxOS41NSAyLjQ1IDIwIDMgMjBIMjFDMjEuNTUgMjAgMjIgMTkuNTUgMjIgMTlWNUMyMiA0LjQ1IDIxLjU1IDQgMjEgNE04IDE4SDRWNkg4VjE4TTE0IDE4SDEwVjZIMTRWMThNMjAgMThIMTZWNkgyMFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaW1lbyA9IFwiTTIyLDcuNDJDMjEuOTEsOS4zNyAyMC41NSwxMi4wNCAxNy45MiwxNS40NEMxNS4yLDE5IDEyLjksMjAuNzUgMTEsMjAuNzVDOS44NSwyMC43NSA4Ljg2LDE5LjY3IDguMDUsMTcuNUM3LjUsMTUuNTQgNywxMy41NiA2LjQ0LDExLjU4QzUuODQsOS40MiA1LjIsOC4zNCA0LjUsOC4zNEM0LjM2LDguMzQgMy44NCw4LjY2IDIuOTQsOS4yOUwyLDguMDdDMyw3LjIgMy45Niw2LjMzIDQuOTIsNS40NkM2LjI0LDQuMzIgNy4yMywzLjcyIDcuODgsMy42NkM5LjQ0LDMuNSAxMC40LDQuNTggMTAuNzYsNi44NkMxMS4xNSw5LjMzIDExLjQyLDEwLjg2IDExLjU3LDExLjQ2QzEyLDEzLjUgMTIuNSwxNC41IDEzLjA1LDE0LjVDMTMuNDcsMTQuNSAxNC4xLDEzLjg2IDE0Ljk0LDEyLjUzQzE1Ljc4LDExLjIxIDE2LjIzLDEwLjIgMTYuMjksOS41QzE2LjQxLDguMzYgMTUuOTYsNy43OSAxNC45NCw3Ljc5QzE0LjQ2LDcuNzkgMTMuOTcsNy45IDEzLjQ2LDguMTJDMTQuNDQsNC44OSAxNi4zMiwzLjMyIDE5LjA5LDMuNDFDMjEuMTUsMy40NyAyMi4xMiw0LjgxIDIyLDcuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlvbGluID0gXCJNMTEsMkExLDEgMCAwLDAgMTAsM1Y1TDEwLDlBMC41LDAuNSAwIDAsMCAxMC41LDkuNUgxMkEwLjUsMC41IDAgMCwxIDEyLjUsMTBBMC41LDAuNSAwIDAsMSAxMiwxMC41SDEwLjVDOS43MywxMC41IDksOS43NyA5LDlWNS4xNkM3LjI3LDUuNiA2LDcuMTMgNiw5VjEwLjVBMi41LDIuNSAwIDAsMSA4LjUsMTNBMi41LDIuNSAwIDAsMSA2LDE1LjVWMTdDNiwxOS43NyA4LjIzLDIyIDExLDIySDEzQzE1Ljc3LDIyIDE4LDE5Ljc3IDE4LDE3VjE1LjVBMi41LDIuNSAwIDAsMSAxNS41LDEzQTIuNSwyLjUgMCAwLDEgMTgsMTAuNVY5QzE4LDYuNzggMTYuMjIsNSAxNCw1VjNBMSwxIDAgMCwwIDEzLDJIMTFNMTAuNzUsMTYuNUgxMy4yNUwxMi43NSwyMEgxMS4yNUwxMC43NSwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpcnR1YWxSZWFsaXR5ID0gXCJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINU02LDlINy41TDguNSwxMi40M0w5LjUsOUgxMUw5LjI1LDE1SDcuNzVMNiw5TTEzLDlIMTYuNUMxNy4zNSw5IDE4LDkuNjUgMTgsMTAuNVYxMS41QzE4LDEyLjEgMTcuNiwxMi42NSAxNy4xLDEyLjlMMTgsMTVIMTYuNUwxNS42NSwxM0gxNC41VjE1SDEzVjlNMTQuNSwxMC41VjExLjVIMTYuNVYxMC41SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlydXMgPSBcIk0xOS44MiAxNEMyMC4xMyAxNC40NSAyMC42NiAxNC43NSAyMS4yNSAxNC43NUMyMi4yMiAxNC43NSAyMyAxMy45NyAyMyAxM1MyMi4yMiAxMS4yNSAyMS4yNSAxMS4yNUMyMC42NiAxMS4yNSAyMC4xMyAxMS41NSAxOS44MiAxMkgxOUMxOSAxMC40MyAxOC41IDkgMTcuNiA3LjgxTDE4Ljk0IDYuNDdDMTkuNSA2LjU3IDIwLjA3IDYuNDEgMjAuNSA2QzIxLjE3IDUuMzEgMjEuMTcgNC4yIDIwLjUgMy41QzE5LjgxIDIuODMgMTguNyAyLjgzIDE4IDMuNUMxNy41OSAzLjkzIDE3LjQzIDQuNSAxNy41MyA1LjA2TDE2LjE5IDYuNEMxNS4yNyA1LjcxIDE0LjE5IDUuMjUgMTMgNS4wOFYzLjY4QzEzLjQ1IDMuMzcgMTMuNzUgMi44NCAxMy43NSAyLjI1QzEzLjc1IDEuMjggMTIuOTcgLjUgMTIgLjVTMTAuMjUgMS4yOCAxMC4yNSAyLjI1QzEwLjI1IDIuODQgMTAuNTUgMy4zNyAxMSAzLjY4VjUuMDhDMTAuMSA1LjIxIDkuMjYgNS41IDguNSA1Ljk0TDcuMzkgNC4zNUM3LjU4IDMuODMgNy41MyAzLjIzIDcuMTkgMi43NUM2LjYzIDEuOTYgNS41NCAxLjc2IDQuNzUgMi4zMkMzLjk2IDIuODcgMy43NiAzLjk2IDQuMzIgNC43NUM0LjY2IDUuMjQgNS4yIDUuNSA1Ljc1IDUuNUw2LjkzIDcuMThDNi41IDcuNjEgNi4xNiA4LjA5IDUuODcgOC42MkM1LjI1IDguMzggNC41IDguNSA0IDlDMy4zMyA5LjcgMy4zMyAxMC44IDQgMTEuNUM0LjI5IDExLjc3IDQuNjQgMTEuOTMgNSAxMkw1IDEyQzUgMTIuNTQgNS4wNyAxMy4wNiA1LjE4IDEzLjU2TDMuODcgMTMuOTFDMy40NSAxMy41NiAyLjg3IDEzLjQxIDIuMjkgMTMuNTZDMS4zNiAxMy44MSAuODA4IDE0Ljc3IDEuMDYgMTUuNzFDMS4zMSAxNi42NCAyLjI4IDE3LjE5IDMuMjEgMTYuOTRDMy43OCAxNi43OCA0LjIxIDE2LjM2IDQuMzkgMTUuODRMNS45IDE1LjQzQzYuMzUgMTYuMjIgNi45NSAxNi45MiA3LjY1IDE3LjVMNi41NSAxOS41QzYgMTkuNTggNS41IDE5Ljg5IDUuMjEgMjAuNDJDNC43NSAyMS4yNyA1LjA3IDIyLjMzIDUuOTIgMjIuNzlDNi43NyAyMy4yNSA3LjgzIDIyLjkzIDguMjkgMjIuMDhDOC41NyAyMS41NiA4LjU2IDIwLjk2IDguMzEgMjAuNDdMOS4zOCAxOC41QzEwLjE5IDE4LjgyIDExLjA3IDE5IDEyIDE5QzEyLjA2IDE5IDEyLjEyIDE5IDEyLjE4IDE5QzEyLjA1IDE5LjI2IDEyIDE5LjU2IDEyIDE5Ljg4QzEyLjA4IDIwLjg1IDEyLjkyIDIxLjU3IDEzLjg4IDIxLjVTMTUuNTcgMjAuNTggMTUuNSAxOS42MkMxNS40NiAxOS4xMiAxNS4yMSAxOC42OCAxNC44NSAxOC4zOUMxNS4zMiAxOC4xOCAxNS43NyAxNy45MSAxNi4xOSAxNy42TDE4LjUzIDE5Ljk0QzE4LjQzIDIwLjUgMTguNTkgMjEuMDcgMTkgMjEuNUMxOS43IDIyLjE3IDIwLjggMjIuMTcgMjEuNSAyMS41UzIyLjE3IDE5LjcgMjEuNSAxOUMyMS4wNyAxOC41OSAyMC41IDE4LjQzIDE5Ljk0IDE4LjUzTDE3LjYgMTYuMTlDMTguMDkgMTUuNTQgMTguNDcgMTQuOCAxOC43MSAxNEgxOS44Mk0xMC41IDEyQzkuNjcgMTIgOSAxMS4zMyA5IDEwLjVTOS42NyA5IDEwLjUgOSAxMiA5LjY3IDEyIDEwLjUgMTEuMzMgMTIgMTAuNSAxMk0xNCAxNUMxMy40NSAxNSAxMyAxNC41NSAxMyAxNEMxMyAxMy40NSAxMy40NSAxMyAxNCAxM1MxNSAxMy40NSAxNSAxNEMxNSAxNC41NSAxNC41NSAxNSAxNCAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaXJ1c091dGxpbmUgPSBcIk0xMiAuNUMxMS4wMyAuNSAxMC4yNSAxLjI4IDEwLjI1IDIuMjVDMTAuMjUgMi44NCAxMC41NSAzLjM3IDExIDMuNjhWNS4wOEMxMC4xIDUuMjEgOS4yNiA1LjUgOC41IDUuOTRMNy4zOSA0LjM1QzcuNTggMy44MyA3LjUzIDMuMjMgNy4xOSAyLjc1QzYuODQgMi4yNiA2LjMgMiA1Ljc1IDJDNS40IDIgNS4wNSAyLjEgNC43NSAyLjMyQzMuOTYgMi44NyAzLjc2IDMuOTYgNC4zMiA0Ljc1QzQuNjYgNS4yNCA1LjIgNS41IDUuNzUgNS41TDYuOTMgNy4xOEM2LjUgNy42MSA2LjE2IDguMDkgNS44NyA4LjYyQzUuNjcgOC41NCA1LjQ2IDguNSA1LjI1IDguNUM0LjggOC41IDQuMzUgOC42NyA0IDlDMy4zMyA5LjcgMy4zMyAxMC44IDQgMTEuNUM0LjI5IDExLjc3IDQuNjQgMTEuOTIgNSAxMkw1IDEyQzUgMTIuNTQgNS4wNyAxMy4wNiA1LjE4IDEzLjU2TDMuODcgMTMuOTFDMy41NiAxMy42NSAzLjE2IDEzLjUgMi43NSAxMy41QzIuNiAxMy41IDIuNDQgMTMuNSAyLjI5IDEzLjU2QzEuMzYgMTMuODEgLjgwOSAxNC43NyAxLjA2IDE1LjcxQzEuMjcgMTYuNSAyIDE3IDIuNzUgMTdDMi45IDE3IDMuMDUgMTcgMy4yMSAxNi45NEMzLjc4IDE2Ljc4IDQuMjEgMTYuMzYgNC4zOSAxNS44NEw1LjkgMTUuNDNDNi4zNSAxNi4yMiA2Ljk1IDE2LjkyIDcuNjUgMTcuNUw2LjU1IDE5LjVDNiAxOS41OCA1LjUgMTkuODkgNS4yMSAyMC40MkM0Ljc1IDIxLjI3IDUuMDcgMjIuMzMgNS45MiAyMi43OUM2LjE4IDIyLjkzIDYuNDcgMjMgNi43NSAyM0M3LjM3IDIzIDcuOTcgMjIuNjcgOC4yOSAyMi4wOEM4LjU3IDIxLjU2IDguNTYgMjAuOTYgOC4zMSAyMC40N0w5LjM4IDE4LjVDMTAuMTkgMTguODIgMTEuMDcgMTkgMTIgMTlDMTIuMDYgMTkgMTIuMTIgMTkgMTIuMTggMTlDMTIuMDUgMTkuMjYgMTIgMTkuNTYgMTIgMTkuODhDMTIuMDggMjAuOCAxMi44NCAyMS41IDEzLjc1IDIxLjVDMTMuNzkgMjEuNSAxMy44NCAyMS41IDEzLjg4IDIxLjVDMTQuODUgMjEuNDIgMTUuNTcgMjAuNTggMTUuNSAxOS42MkMxNS40NiAxOS4xMiAxNS4yMSAxOC42OCAxNC44NSAxOC4zOUMxNS4zMiAxOC4xOCAxNS43NyAxNy45MSAxNi4xOSAxNy42TDE4LjUzIDE5Ljk0QzE4LjQzIDIwLjUgMTguNTkgMjEuMDcgMTkgMjEuNUMxOS4zNSAyMS44MyAxOS44IDIyIDIwLjI1IDIyUzIxLjE1IDIxLjgzIDIxLjUgMjEuNUMyMi4xNyAyMC44IDIyLjE3IDE5LjcgMjEuNSAxOUMyMS4xNSAxOC42NyAyMC43IDE4LjUgMjAuMjUgMTguNUMyMC4xNSAxOC41IDIwLjA1IDE4LjUgMTkuOTQgMTguNTNMMTcuNiAxNi4xOUMxOC4wOSAxNS41NCAxOC40NyAxNC44IDE4LjcxIDE0SDE5LjgyQzIwLjEzIDE0LjQ1IDIwLjY2IDE0Ljc1IDIxLjI1IDE0Ljc1QzIyLjIyIDE0Ljc1IDIzIDEzLjk3IDIzIDEzUzIyLjIyIDExLjI1IDIxLjI1IDExLjI1QzIwLjY2IDExLjI1IDIwLjEzIDExLjU1IDE5LjgyIDEySDE5QzE5IDEwLjQzIDE4LjUgOSAxNy42IDcuODFMMTguOTQgNi40N0MxOS4wNSA2LjUgMTkuMTUgNi41IDE5LjI1IDYuNUMxOS43IDYuNSAyMC4xNSA2LjMzIDIwLjUgNkMyMS4xNyA1LjMxIDIxLjE3IDQuMiAyMC41IDMuNUMyMC4xNSAzLjE3IDE5LjcgMyAxOS4yNSAzUzE4LjM1IDMuMTcgMTggMy41QzE3LjU5IDMuOTMgMTcuNDMgNC41IDE3LjUzIDUuMDZMMTYuMTkgNi40QzE1LjI3IDUuNzEgMTQuMTkgNS4yNSAxMyA1LjA4VjMuNjhDMTMuNDUgMy4zNyAxMy43NSAyLjg0IDEzLjc1IDIuMjVDMTMuNzUgMS4yOCAxMi45NyAuNSAxMiAuNU0xMiAxN0M5LjI0IDE3IDcgMTQuNzYgNyAxMlM5LjI0IDcgMTIgNyAxNyA5LjI0IDE3IDEyIDE0Ljc2IDE3IDEyIDE3TTEwLjUgOUM5LjY3IDkgOSA5LjY3IDkgMTAuNVM5LjY3IDEyIDEwLjUgMTIgMTIgMTEuMzMgMTIgMTAuNSAxMS4zMyA5IDEwLjUgOU0xNCAxM0MxMy40NSAxMyAxMyAxMy40NSAxMyAxNEMxMyAxNC41NSAxMy40NSAxNSAxNCAxNUMxNC41NSAxNSAxNSAxNC41NSAxNSAxNEMxNSAxMy40NSAxNC41NSAxMyAxNCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWayA9IFwiTTE1LjA3IDJIOC45M0MzLjMzIDIgMiAzLjMzIDIgOC45M1YxNS4wN0MyIDIwLjY3IDMuMzMgMjIgOC45MyAyMkgxNS4wN0MyMC42NyAyMiAyMiAyMC42NyAyMiAxNS4wN1Y4LjkzQzIyIDMuMzMgMjAuNjcgMiAxNS4wNyAyTTE4LjE1IDE2LjI3SDE2LjY5QzE2LjE0IDE2LjI3IDE1Ljk3IDE1LjgyIDE1IDE0LjgzQzE0LjEyIDE0IDEzLjc0IDEzLjg4IDEzLjUzIDEzLjg4QzEzLjI0IDEzLjg4IDEzLjE1IDEzLjk2IDEzLjE1IDE0LjM4VjE1LjY5QzEzLjE1IDE2LjA0IDEzLjA0IDE2LjI2IDEyLjExIDE2LjI2QzEwLjU3IDE2LjI2IDguODYgMTUuMzIgNy42NiAxMy41OUM1Ljg1IDExLjA1IDUuMzYgOS4xMyA1LjM2IDguNzVDNS4zNiA4LjU0IDUuNDMgOC4zNCA1Ljg1IDguMzRINy4zMkM3LjY5IDguMzQgNy44MyA4LjUgNy45NyA4LjlDOC42OSAxMSA5Ljg5IDEyLjggMTAuMzggMTIuOEMxMC41NyAxMi44IDEwLjY1IDEyLjcxIDEwLjY1IDEyLjI1VjEwLjFDMTAuNiA5LjEyIDEwLjA3IDkuMDMgMTAuMDcgOC42OEMxMC4wNyA4LjUgMTAuMjEgOC4zNCAxMC40NCA4LjM0SDEyLjczQzEzLjA0IDguMzQgMTMuMTUgOC41IDEzLjE1IDguODhWMTEuNzdDMTMuMTUgMTIuMDggMTMuMjggMTIuMTkgMTMuMzggMTIuMTlDMTMuNTYgMTIuMTkgMTMuNzIgMTIuMDggMTQuMDUgMTEuNzRDMTUuMSAxMC41NyAxNS44NSA4Ljc2IDE1Ljg1IDguNzZDMTUuOTUgOC41NSAxNi4xMSA4LjM1IDE2LjUgOC4zNUgxNy45M0MxOC4zNyA4LjM1IDE4LjQ3IDguNTggMTguMzcgOC44OUMxOC4xOSA5Ljc0IDE2LjQxIDEyLjI1IDE2LjQzIDEyLjI1QzE2LjI3IDEyLjUgMTYuMjEgMTIuNjEgMTYuNDMgMTIuOUMxNi41OCAxMy4xMSAxNy4wOSAxMy41NSAxNy40MyAxMy45NEMxOC4wNSAxNC42NSAxOC41MyAxNS4yNCAxOC42NiAxNS42NUMxOC43NyAxNi4wNiAxOC41NyAxNi4yNyAxOC4xNSAxNi4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWbGMgPSBcIk0xMiwxQzExLjU4LDEgMTEuMTksMS4yMyAxMSwxLjc1TDkuODgsNC44OEMxMC4zNiw1LjQgMTEuMjgsNS41IDEyLDUuNUMxMi43Miw1LjUgMTMuNjQsNS40IDE0LjEzLDQuODhMMTMsMS43NUMxMi44MiwxLjI1IDEyLjQyLDEgMTIsMU04LjQ0LDguOTFMNywxMi45MUM4LjA3LDE0LjI3IDEwLjI2LDE0LjUgMTIsMTQuNUMxMy43NCwxNC41IDE1LjkzLDE0LjI3IDE3LDEyLjkxTDE1LjU2LDguOTFDMTQuNzYsOS44MyAxMy4yNCwxMCAxMiwxMEMxMC43NiwxMCA5LjI0LDkuODMgOC40NCw4LjkxTTUuNDQsMTVDNC42MiwxNSAzLjc2LDE1LjY1IDMuNTMsMTYuNDRMMi4wNiwyMS41NkMxLjg0LDIyLjM1IDIuMywyMyAzLjEzLDIzSDIwLjg4QzIxLjcsMjMgMjIuMTYsMjIuMzUgMjEuOTQsMjEuNTZMMjAuNDcsMTYuNDRDMjAuMjQsMTUuNjUgMTkuMzgsMTUgMTguNTYsMTVIMTcuNzVMMTguMDksMTUuOTdDMTguMjEsMTYuMjkgMTguMjksMTYuNjkgMTguMDksMTYuOTdDMTYuODQsMTguNyAxNC4xNCwxOSAxMiwxOUM5Ljg2LDE5IDcuMTYsMTguNyA1LjkxLDE2Ljk3QzUuNzEsMTYuNjkgNS43OSwxNi4yOSA1LjkxLDE1Ljk3TDYuMjUsMTVINS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlWb2ljZU9mZiA9IFwiTTIsMy4yN0wzLjI4LDJMMjIsMjAuNzJMMjAuNzMsMjJMMTYuNzMsMThDMTYuOSwxOC4zMSAxNywxOC42NCAxNywxOVYyMUgxVjE5QzEsMTYuMzQgNi4zMywxNSA5LDE1QzEwLjc3LDE1IDEzLjcyLDE1LjU5IDE1LjUsMTYuNzdMMTEuMTIsMTIuMzlDMTAuNSwxMi43OCA5Ljc4LDEzIDksMTNBNCw0IDAgMCwxIDUsOUM1LDguMjIgNS4yMiw3LjUgNS42MSw2Ljg4TDIsMy4yN005LDVBNCw0IDAgMCwxIDEzLDlWOS4xN0w4LjgzLDVIOU0xNi43Niw1LjM2QzE4Ljc4LDcuNTYgMTguNzgsMTAuNjEgMTYuNzYsMTIuNjNMMTUuMDgsMTAuOTRDMTUuOTIsOS43NiAxNS45Miw4LjIzIDE1LjA4LDcuMDVMMTYuNzYsNS4zNk0yMC4wNywyQzI0LDYuMDUgMjMuOTcsMTIuMTEgMjAuMDcsMTZMMTguNDQsMTQuMzdDMjEuMjEsMTEuMTkgMjEuMjEsNi42NSAxOC40NCwzLjYzTDIwLjA3LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9pY2VtYWlsID0gXCJNMTguNSwxNUEzLjUsMy41IDAgMCwxIDE1LDExLjVBMy41LDMuNSAwIDAsMSAxOC41LDhBMy41LDMuNSAwIDAsMSAyMiwxMS41QTMuNSwzLjUgMCAwLDEgMTguNSwxNU01LjUsMTVBMy41LDMuNSAwIDAsMSAyLDExLjVBMy41LDMuNSAwIDAsMSA1LjUsOEEzLjUsMy41IDAgMCwxIDksMTEuNUEzLjUsMy41IDAgMCwxIDUuNSwxNU0xOC41LDZBNS41LDUuNSAwIDAsMCAxMywxMS41QzEzLDEyLjgzIDEzLjQ3LDE0LjA1IDE0LjI2LDE1SDkuNzRDMTAuNTMsMTQuMDUgMTEsMTIuODMgMTEsMTEuNUE1LjUsNS41IDAgMCwwIDUuNSw2QTUuNSw1LjUgMCAwLDAgMCwxMS41QTUuNSw1LjUgMCAwLDAgNS41LDE3SDE4LjVBNS41LDUuNSAwIDAsMCAyNCwxMS41QTUuNSw1LjUgMCAwLDAgMTguNSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbGxleWJhbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMy42LDIwLjM1QzE1Ljk2LDE4LjA0IDE3LjY5LDE1LjA4IDE4LjUsMTEuNzZDMTcuODQsMTEuNjIgMTcuMTgsMTEuNTQgMTYuNSwxMS41QzE1LjU2LDE1LjExIDEzLjQxLDE4LjIyIDEwLjUsMjAuMzdDMTEsMjAuNDUgMTEuNSwyMC41IDEyLDIwLjVDMTIuNTUsMjAuNSAxMy4wOCwyMC40NSAxMy42LDIwLjM1TTkuMjMsMjAuMDRDMTIuMjMsMTguMDcgMTQuNSwxNS4wNSAxNS40NiwxMS41QzE0LjcxLDExLjU1IDEzLjk3LDExLjY1IDEzLjI3LDExLjgxQzEyLjE4LDE0Ljg5IDkuOTcsMTcuNDQgNy4xMywxOC45N0M3Ljc3LDE5LjQyIDguNSwxOS43OCA5LjIzLDIwLjA0TTIwLjUsMTIuMzdDMjAuMTYsMTIuMjMgMTkuODEsMTIuMTEgMTkuNDYsMTJDMTguNzYsMTQuOSAxNy4zOSwxNy41MyAxNS41NCwxOS43M0MxOC4zNiwxOC40NCAyMC4zNSwxNS42NCAyMC41LDEyLjM3TTMuNTYsMTEuMDRDMy41LDExLjM1IDMuNSwxMS42OCAzLjUsMTJDMy41LDE0LjUgNC41NywxNi43MyA2LjI3LDE4LjI4QzYuODYsMTggNy40MSwxNy42NiA3Ljk0LDE3LjI5QzYuMDgsMTUuNTQgNC41OCwxMy40MSAzLjU2LDExLjA0TTUuMzMsNi43NEM0LjczLDcuNSA0LjI2LDguMzUgMy45NSw5LjI4QzQuOTIsMTIuMTMgNi41OCwxNC42NiA4Ljc0LDE2LjY3QzkuMjUsMTYuMjQgOS43MiwxNS43NyAxMC4xNSwxNS4yNkM3Ljc0LDEzLjAzIDYsMTAuMDggNS4zMyw2Ljc0TTguMDQsNC41QzcuMzYsNC44NSA2LjczLDUuMyA2LjE4LDUuODJDNi43MSw5LjIxIDguMzcsMTIuMjMgMTAuNzcsMTQuNDdDMTEuMTcsMTMuOTEgMTEuNSwxMy4zMiAxMS44MiwxMi43QzkuNjgsMTAuNTYgOC4yOCw3LjY5IDguMDQsNC41TTE5Ljk2LDkuMDNDMTguNyw4LjY4IDE3LjM3LDguNSAxNiw4LjVDMTQuMSw4LjUgMTIuMjgsOC44NSAxMC42MSw5LjVDMTAuOTYsMTAuMSAxMS4zNSwxMC42NyAxMS44LDExLjJDMTMuMTIsMTAuNzUgMTQuNTMsMTAuNSAxNiwxMC41QzE3LjU3LDEwLjUgMTkuMDgsMTAuNzggMjAuNDcsMTEuMjlDMjAuNCwxMC41IDIwLjIzLDkuNzQgMTkuOTYsOS4wM00xNy41NCw1LjU3QzE3LjAzLDUuNSAxNi41LDUuNSAxNiw1LjVDMTMuNjksNS41IDExLjQ3LDUuOTQgOS40NCw2LjczQzkuNjIsNy4zOCA5Ljg2LDggMTAuMTQsOC42MUMxMS45Niw3Ljg5IDEzLjkzLDcuNSAxNiw3LjVDMTcuMTgsNy41IDE4LjMyLDcuNjMgMTkuNDIsNy44N0MxOC45Myw3IDE4LjI5LDYuMjEgMTcuNTQsNS41N00xNiw0LjVDMTQuNzksMy44NyAxMy40NCwzLjUgMTIsMy41QzEwLjk1LDMuNSA5Ljk0LDMuNyA5LDQuMDVDOS4wNCw0LjYzIDkuMTEsNS4yIDkuMjEsNS43NUMxMS4zMSw0Ljk1IDEzLjYsNC41IDE2LDQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWb2x1bWVIaWdoID0gXCJNMTQsMy4yM1Y1LjI5QzE2Ljg5LDYuMTUgMTksOC44MyAxOSwxMkMxOSwxNS4xNyAxNi44OSwxNy44NCAxNCwxOC43VjIwLjc3QzE4LDE5Ljg2IDIxLDE2LjI4IDIxLDEyQzIxLDcuNzIgMTgsNC4xNCAxNCwzLjIzTTE2LjUsMTJDMTYuNSwxMC4yMyAxNS41LDguNzEgMTQsNy45N1YxNkMxNS41LDE1LjI5IDE2LjUsMTMuNzYgMTYuNSwxMk0zLDlWMTVIN0wxMiwyMFY0TDcsOUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZUxvdyA9IFwiTTcsOVYxNUgxMUwxNiwyMFY0TDExLDlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWb2x1bWVNZWRpdW0gPSBcIk01LDlWMTVIOUwxNCwyMFY0TDksOU0xOC41LDEyQzE4LjUsMTAuMjMgMTcuNSw4LjcxIDE2LDcuOTdWMTZDMTcuNSwxNS4yOSAxOC41LDEzLjc2IDE4LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lTWludXMgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE0LDExSDIyVjEzSDE0VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZU11dGUgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE2LjU5LDEyTDE0LDkuNDFMMTUuNDEsOEwxOCwxMC41OUwyMC41OSw4TDIyLDkuNDFMMTkuNDEsMTJMMjIsMTQuNTlMMjAuNTksMTZMMTgsMTMuNDFMMTUuNDEsMTZMMTQsMTQuNTlMMTYuNTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lT2ZmID0gXCJNMTIsNEw5LjkxLDYuMDlMMTIsOC4xOE00LjI3LDNMMyw0LjI3TDcuNzMsOUgzVjE1SDdMMTIsMjBWMTMuMjdMMTYuMjUsMTcuNTNDMTUuNTgsMTguMDQgMTQuODMsMTguNDYgMTQsMTguN1YyMC43N0MxNS4zOCwyMC40NSAxNi42MywxOS44MiAxNy42OCwxOC45NkwxOS43MywyMUwyMSwxOS43M0wxMiwxMC43M00xOSwxMkMxOSwxMi45NCAxOC44LDEzLjgyIDE4LjQ2LDE0LjY0TDE5Ljk3LDE2LjE1QzIwLjYyLDE0LjkxIDIxLDEzLjUgMjEsMTJDMjEsNy43MiAxOCw0LjE0IDE0LDMuMjNWNS4yOUMxNi44OSw2LjE1IDE5LDguODMgMTksMTJNMTYuNSwxMkMxNi41LDEwLjIzIDE1LjUsOC43MSAxNCw3Ljk3VjEwLjE4TDE2LjQ1LDEyLjYzQzE2LjUsMTIuNDMgMTYuNSwxMi4yMSAxNi41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZVBsdXMgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE0LDExSDE3VjhIMTlWMTFIMjJWMTNIMTlWMTZIMTdWMTNIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lU291cmNlID0gXCJNMyA5VjE1SDdMMTIgMjBWNEw3IDlIM00xNiAxNUgxNFY5SDE2VjE1TTIwIDE5SDE4VjVIMjBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lVmFyaWFudE9mZiA9IFwiTTUuNjQsMy42NEwyMS4zNiwxOS4zNkwxOS45NSwyMC43OEwxNiwxNi44M1YyMEwxMSwxNUg3VjlIOC4xN0w0LjIyLDUuMDVMNS42NCwzLjY0TTE2LDRWMTEuMTdMMTIuNDEsNy41OEwxNiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZVZpYnJhdGUgPSBcIk00IDlWMTVIOEwxMyAyMFY0TDggOUg0TTE2LjU1IDIuNDdMMTUuNSAzLjUzTDE3LjkzIDZMMTUgOUwxNy45MyAxMkwxNSAxNUwxNy45MyAxOEwxNS41IDIwLjQ3TDE2LjU1IDIxLjUzTDIwIDE4TDE3LjA3IDE1TDIwIDEyTDE3LjA3IDlMMjAgNkwxNi41NSAyLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvdGUgPSBcIk0xOCwxM0gxNy4zMkwxNS4zMiwxNUgxNy4yM0wxOSwxN0g1TDYuNzgsMTVIOC44M0w2LjgzLDEzSDZMMywxNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWMTZMMTgsMTNNMTcsNy45NUwxMi4wNSwxMi45TDguNSw5LjM2TDEzLjQ2LDQuNDFMMTcsNy45NU0xMi43NiwyLjI5TDYuMzksOC42NkM2LDkuMDUgNiw5LjY4IDYuMzksMTAuMDdMMTEuMzQsMTVDMTEuNzMsMTUuNDEgMTIuMzYsMTUuNDEgMTIuNzUsMTVMMTkuMTEsOC42NkMxOS41LDguMjcgMTkuNSw3LjY0IDE5LjExLDcuMjVMMTQuMTYsMi4zQzEzLjc4LDEuOSAxMy4xNSwxLjkgMTIuNzYsMi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWb3RlT3V0bGluZSA9IFwiTTE4LDEzTDIxLDE2VjIwQzIxLDIxLjExIDIwLjEsMjIgMTksMjJINUMzLjg5LDIyIDMsMjEuMSAzLDIwVjE2TDYsMTNINi44M0w4LjgzLDE1SDYuNzhMNSwxN0gxOUwxNy4yMywxNUgxNS4zMkwxNy4zMiwxM0gxOE0xOSwyMFYxOUg1VjIwSDE5TTExLjM0LDE1TDYuMzksMTAuMDdDNiw5LjY4IDYsOS4wNSA2LjM5LDguNjZMMTIuNzYsMi4yOUMxMy4xNSwxLjkgMTMuNzgsMS45IDE0LjE2LDIuM0wxOS4xMSw3LjI1QzE5LjUsNy42NCAxOS41LDguMjcgMTkuMTEsOC42NkwxMi43NSwxNUMxMi4zNiwxNS40MSAxMS43MywxNS40MSAxMS4zNCwxNU0xMy40Niw0LjQxTDguNSw5LjM2TDEyLjA1LDEyLjlMMTcsNy45NUwxMy40Niw0LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZwbiA9IFwiTTksNUgxNUwxMiw4TDksNU0xMC41LDE0LjY2QzEwLjIsMTUgMTAsMTUuNSAxMCwxNkEyLDIgMCAwLDAgMTIsMThBMiwyIDAgMCwwIDE0LDE2QzE0LDE1LjQ1IDEzLjc4LDE0Ljk1IDEzLjQxLDE0LjU5TDE0LjgzLDEzLjE3QzE1LjU1LDEzLjkgMTYsMTQuOSAxNiwxNkE0LDQgMCAwLDEgMTIsMjBBNCw0IDAgMCwxIDgsMTZDOCwxNC45MyA4LjQyLDEzLjk2IDkuMSwxMy4yNUw5LjA5LDEzLjI0TDE2LjE3LDYuMTdWNi4xN0MxNi44OSw1LjQ1IDE3Ljg5LDUgMTksNUE0LDQgMCAwLDEgMjMsOUE0LDQgMCAwLDEgMTksMTNDMTcuOSwxMyAxNi45LDEyLjU1IDE2LjE3LDExLjgzTDE3LjU5LDEwLjQxQzE3Ljk1LDEwLjc4IDE4LjQ1LDExIDE5LDExQTIsMiAwIDAsMCAyMSw5QTIsMiAwIDAsMCAxOSw3QzE4LjQ1LDcgMTcuOTUsNy4yMiAxNy41OSw3LjU5TDEwLjUsMTQuNjZNNi40MSw3LjU5QzYuMDUsNy4yMiA1LjU1LDcgNSw3QTIsMiAwIDAsMCAzLDlBMiwyIDAgMCwwIDUsMTFDNS41NSwxMSA2LjA1LDEwLjc4IDYuNDEsMTAuNDFMNy44MywxMS44M0M3LjEsMTIuNTUgNi4xLDEzIDUsMTNBNCw0IDAgMCwxIDEsOUE0LDQgMCAwLDEgNSw1QzYuMTEsNSA3LjExLDUuNDUgNy44Myw2LjE3VjYuMTdMMTAuNTksOC45M0w5LjE3LDEwLjM1TDYuNDEsNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlWdWVqcyA9IFwiTTIsM0g1LjVMMTIsMTVMMTguNSwzSDIyTDEyLDIxTDIsM002LjUsM0g5LjVMMTIsNy41OEwxNC41LDNIMTcuNUwxMiwxMy4wOEw2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWdWV0aWZ5ID0gXCJNMTIsMTEuNjRMNy45MiwySDE2LjA4TDEyLDExLjY0TTEyLDIxLjk1TDMuMjcsNC45MUg3Ljg0TDEyLDE0LjQ3TDE2LjE2LDQuOTFIMjAuNzNMMTIsMjEuOTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsayA9IFwiTTE0LjEyLDEwSDE5VjguMkgxNS4zOEwxMy4zOCw0Ljg3QzEzLjA4LDQuMzcgMTIuNTQsNC4wMyAxMS45Miw0LjAzQzExLjc0LDQuMDMgMTEuNTgsNC4wNiAxMS40Miw0LjExTDYsNS44VjExSDcuOFY3LjMzTDkuOTEsNi42N0w2LDIySDcuOEwxMC42NywxMy44OUwxMywxN1YyMkgxNC44VjE1LjU5TDEyLjMxLDExLjA1TDEzLjA0LDguMThNMTQsMy44QzE1LDMuOCAxNS44LDMgMTUuOCwyQzE1LjgsMSAxNSwwLjIgMTQsMC4yQzEzLDAuMiAxMi4yLDEgMTIuMiwyQzEyLjIsMyAxMywzLjggMTQsMy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGwgPSBcIk0zLDE2SDEyVjIxSDNWMTZNMiwxMEg4VjE1SDJWMTBNOSwxMEgxNVYxNUg5VjEwTTE2LDEwSDIyVjE1SDE2VjEwTTEzLDE2SDIxVjIxSDEzVjE2TTMsNEgxMVY5SDNWNE0xMiw0SDIxVjlIMTJWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlID0gXCJNMTEsNEw3LDEzSDE5TDE1LDRIMTFNNCwxNFYyMkg2VjE5SDE0VjE0SDEyVjE3SDZWMTRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlRmxhdCA9IFwiTTUsNVYxMUgxOVY1SDVNNS4yNywxMy4zMkwzLjUsMTUuMDlMNC45MSwxNi41TDYuNjgsMTQuNzNMNS4yNywxMy4zMk0xOC43MywxMy4zMkwxNy4zMiwxNC43M0wxOS4wOSwxNi41TDIwLjUsMTUuMDlMMTguNzMsMTMuMzJNMTEsMTZWMTlIMTNWMTZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbFNjb25jZUZsYXRWYXJpYW50ID0gXCJNMTkgMTlWMTNINVYxOUgxOU0xOC43MyAxMC42OEwyMC41IDguOTFMMTkuMDkgNy41TDE3LjMyIDkuMjdMMTguNzMgMTAuNjhNNS4yNyAxMC42OEw2LjY4IDkuMjdMNC45MSA3LjVMMy41IDguOTFMNS4yNyAxMC42OE0xMyA4VjVIMTFWOEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlUm91bmQgPSBcIk0xMyAxOVYxNkgxMVYxOUgxM00xOS4wOSAxNi41TDIwLjUgMTUuMDlMMTguNzMgMTMuMzJMMTcuMzIgMTQuNzNMMTkuMDkgMTYuNU00LjkxIDE2LjVMNi42OCAxNC43M0w1LjI3IDEzLjMyTDMuNSAxNS4wOUw0LjkxIDE2LjVNMjAgMTJDMjAgOS4xNCAxOC41IDYuNSAxNiA1LjA3UzEwLjUgMy42NCA4IDUuMDcgNCA5LjE0IDQgMTJIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbFNjb25jZVJvdW5kVmFyaWFudCA9IFwiTTExIDVWOEgxM1Y1SDExTTQuOTEgNy41TDMuNSA4LjkxTDUuMjcgMTAuNjhMNi42OCA5LjI3TDQuOTEgNy41TTE5LjA5IDcuNUwxNy4zMiA5LjI3TDE4LjczIDEwLjY4TDIwLjUgOC45MUwxOS4wOSA3LjVNNCAxMkM0IDE0Ljg2IDUuNSAxNy41IDggMTguOTNTMTMuNSAyMC4zNiAxNiAxOC45MyAyMCAxNC44NiAyMCAxMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGxldCA9IFwiTTIxLDE4VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjZIMTJDMTAuODksNiAxMCw2LjkgMTAsOFYxNkEyLDIgMCAwLDAgMTIsMThNMTIsMTZIMjJWOEgxMk0xNiwxMy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDEyQTEuNSwxLjUgMCAwLDEgMTYsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRHaWZ0Y2FyZCA9IFwiTTIwLDE0SDRWOEg5LjA4TDcsMTAuODNMOC42MiwxMkwxMSw4Ljc2TDEyLDcuNEwxMyw4Ljc2TDE1LjM4LDEyTDE3LDEwLjgzTDE0LjkyLDhIMjBNMjAsMTlINFYxN0gyME05LDRBMSwxIDAgMCwxIDEwLDVBMSwxIDAgMCwxIDksNkExLDEgMCAwLDEgOCw1QTEsMSAwIDAsMSA5LDRNMTUsNEExLDEgMCAwLDEgMTYsNUExLDEgMCAwLDEgMTUsNkExLDEgMCAwLDEgMTQsNUExLDEgMCAwLDEgMTUsNE0yMCw2SDE3LjgyQzE3LjkzLDUuNjkgMTgsNS4zNSAxOCw1QTMsMyAwIDAsMCAxNSwyQzEzLjk1LDIgMTMuMDQsMi41NCAxMi41LDMuMzVMMTIsNEwxMS41LDMuMzRDMTAuOTYsMi41NCAxMC4wNSwyIDksMkEzLDMgMCAwLDAgNiw1QzYsNS4zNSA2LjA3LDUuNjkgNi4xOCw2SDRDMi44OSw2IDIsNi44OSAyLDhWMTlDMiwyMC4xMSAyLjg5LDIxIDQsMjFIMjBDMjEuMTEsMjEgMjIsMjAuMTEgMjIsMTlWOEMyMiw2Ljg5IDIxLjExLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRNZW1iZXJzaGlwID0gXCJNMjAsMTBINFY0SDIwTTIwLDE1SDRWMTNIMjBNMjAsMkg0QzIuODksMiAyLDIuODkgMiw0VjE1QzIsMTYuMTEgMi44OSwxNyA0LDE3SDhWMjJMMTIsMjBMMTYsMjJWMTdIMjBDMjEuMTEsMTcgMjIsMTYuMTEgMjIsMTVWNEMyMiwyLjg5IDIxLjExLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRPdXRsaW5lID0gXCJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjE2LjcyQzIxLjU5LDE2LjM3IDIyLDE1Ljc0IDIyLDE1VjlDMjIsOC4yNiAyMS41OSw3LjYzIDIxLDcuMjhWNUEyLDIgMCAwLDAgMTksM0g1TTUsNUgxOVY3SDEzQTIsMiAwIDAsMCAxMSw5VjE1QTIsMiAwIDAsMCAxMywxN0gxOVYxOUg1VjVNMTMsOUgyMFYxNUgxM1Y5TTE2LDEwLjVBMS41LDEuNSAwIDAsMCAxNC41LDEyQTEuNSwxLjUgMCAwLDAgMTYsMTMuNUExLjUsMS41IDAgMCwwIDE3LjUsMTJBMS41LDEuNSAwIDAsMCAxNiwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGxldFBsdXMgPSBcIk0zIDBWM0gwVjVIM1Y4SDVWNUg4VjNINVYwSDNNOSAzVjZINlY5SDNWMTlDMyAyMC4xIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVYxOEgxMkMxMC45IDE4IDEwIDE3LjExIDEwIDE2VjhDMTAgNi45IDEwLjg5IDYgMTIgNkgyMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIOU0xMiA4VjE2SDIyVjhIMTJNMTYgMTAuNUMxNi44MyAxMC41IDE3LjUgMTEuMTcgMTcuNSAxMkMxNy41IDEyLjgzIDE2LjgzIDEzLjUgMTYgMTMuNUMxNS4xNyAxMy41IDE0LjUgMTIuODMgMTQuNSAxMkMxNC41IDExLjE3IDE1LjE3IDEwLjUgMTYgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRQbHVzT3V0bGluZSA9IFwiTTMgMFYzSDBWNUgzVjhINVY1SDhWM0g1VjBIM00xMCAzVjVIMTlWN0gxM0MxMS45IDcgMTEgNy45IDExIDlWMTVDMTEgMTYuMSAxMS45IDE3IDEzIDE3SDE5VjE5SDVWMTBIM1YxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNi43MkMyMS41OSAxNi4zNyAyMiAxNS43NCAyMiAxNVY5QzIyIDguMjYgMjEuNTkgNy42MyAyMSA3LjI4VjVDMjEgMy45IDIwLjEgMyAxOSAzSDEwTTEzIDlIMjBWMTVIMTNWOU0xNiAxMC41QTEuNSAxLjUgMCAwIDAgMTQuNSAxMkExLjUgMS41IDAgMCAwIDE2IDEzLjVBMS41IDEuNSAwIDAgMCAxNy41IDEyQTEuNSAxLjUgMCAwIDAgMTYgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRUcmF2ZWwgPSBcIk0yMCwxNEg0VjhIN1YxMEg5VjhIMTVWMTBIMTdWOEgyME0yMCwxOUg0VjE3SDIwTTksNEgxNVY2SDlNMjAsNkgxN1Y0QzE3LDIuODkgMTYuMTEsMiAxNSwySDlDNy44OSwyIDcsMi44OSA3LDRWNkg0QzIuODksNiAyLDYuODkgMiw4VjE5QzIsMjAuMTEgMi44OSwyMSA0LDIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjhDMjIsNi44OSAyMS4xMSw2IDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbHBhcGVyID0gXCJNNCw0SDExVjJINEEyLDIgMCAwLDAgMiw0VjExSDRWNE0xMCwxM0w2LDE4SDE4TDE1LDE0TDEyLjk3LDE2LjcxTDEwLDEzTTE3LDguNUExLjUsMS41IDAgMCwwIDE1LjUsN0ExLjUsMS41IDAgMCwwIDE0LDguNUExLjUsMS41IDAgMCwwIDE1LjUsMTBBMS41LDEuNSAwIDAsMCAxNyw4LjVNMjAsMkgxM1Y0SDIwVjExSDIyVjRBMiwyIDAgMCwwIDIwLDJNMjAsMjBIMTNWMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEzSDIwVjIwTTQsMTNIMlYyMEEyLDIgMCAwLDAgNCwyMkgxMVYyMEg0VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbiA9IFwiTTEyLDJBOCw4IDAgMCwwIDQsMTBDNCwxNC4wMyA3LDE3LjQyIDExLDE3LjkzVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1QTEsMSAwIDAsMCAxNCwxOUgxM1YxNy45M0MxNywxNy40MyAyMCwxNC4wMyAyMCwxMEE4LDggMCAwLDAgMTIsMk0xMiw0QzEyLDQgMTIuNzQsNS4yOCAxMy4yNiw3SDEwLjc0QzExLjI2LDUuMjggMTIsNCAxMiw0TTkuNzcsNC40M0M5LjUsNC45MyA5LjA5LDUuODQgOC43NCw3SDYuODFDNy41LDUuODQgOC41LDQuOTMgOS43Nyw0LjQzTTE0LjIzLDQuNDRDMTUuNSw0Ljk0IDE2LjUsNS44NCAxNy4xOSw3SDE1LjI2QzE0LjkxLDUuODQgMTQuNSw0LjkzIDE0LjIzLDQuNDRNNi4wOSw5SDguMzJDOC4yOCw5LjMzIDguMjUsOS42NiA4LjI1LDEwQzguMjUsMTAuMzQgOC4yOCwxMC42NyA4LjMyLDExSDYuMDlDNi4wMywxMC42NyA2LDEwLjM0IDYsMTBDNiw5LjY2IDYuMDMsOS4zMyA2LjA5LDlNMTAuMzIsOUgxMy42OEMxMy43Miw5LjMzIDEzLjc1LDkuNjYgMTMuNzUsMTBDMTMuNzUsMTAuMzQgMTMuNzIsMTAuNjcgMTMuNjgsMTFIMTAuMzJDMTAuMjgsMTAuNjcgMTAuMjUsMTAuMzQgMTAuMjUsMTBDMTAuMjUsOS42NiAxMC4yOCw5LjMzIDEwLjMyLDlNMTUuNjgsOUgxNy45MUMxNy45Nyw5LjMzIDE4LDkuNjYgMTgsMTBDMTgsMTAuMzQgMTcuOTcsMTAuNjcgMTcuOTEsMTFIMTUuNjhDMTUuNzIsMTAuNjcgMTUuNzUsMTAuMzQgMTUuNzUsMTBDMTUuNzUsOS42NiAxNS43Miw5LjMzIDE1LjY4LDlNNi44MSwxM0g4Ljc0QzkuMDksMTQuMTYgOS41LDE1LjA3IDkuNzcsMTUuNTZDOC41LDE1LjA2IDcuNSwxNC4xNiA2LjgxLDEzTTEwLjc0LDEzSDEzLjI2QzEyLjc0LDE0LjcyIDEyLDE2IDEyLDE2QzEyLDE2IDExLjI2LDE0LjcyIDEwLjc0LDEzTTE1LjI2LDEzSDE3LjE5QzE2LjUsMTQuMTYgMTUuNSwxNS4wNyAxNC4yMywxNS41N0MxNC41LDE1LjA3IDE0LjkxLDE0LjE2IDE1LjI2LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhcmRyb2JlID0gXCJNNCA0VjE5QzQgMjAuMSA0LjkgMjEgNiAyMVYyMkg4VjIxSDExLjVWMkg2QzQuOSAyIDQgMi45IDQgNE04IDEwSDEwVjEzSDhWMTBNMTggMkgxMi41VjIxSDE2VjIySDE4VjIxQzE5LjEgMjEgMjAgMjAuMSAyMCAxOVY0QzIwIDIuOSAxOS4xIDIgMTggMk0xNiAxM0gxNFYxMEgxNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXJkcm9iZU91dGxpbmUgPSBcIk02IDJDNC44OSAyIDQgMi45IDQgNFYxOUM0IDIwLjExIDQuODkgMjEgNiAyMVYyMkg4VjIxSDE2VjIySDE4VjIxQzE5LjExIDIxIDIwIDIwLjExIDIwIDE5VjRDMjAgMi45IDE5LjExIDIgMTggMkg2TTYgNEgxMVYxOUg2VjRNMTMgNEgxOFYxOUgxM1Y0TTggMTBWMTNIMTBWMTBIOE0xNCAxMFYxM0gxNlYxMEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXJlaG91c2UgPSBcIk02IDE5SDhWMjFINlYxOU0xMiAzTDIgOFYyMUg0VjEzSDIwVjIxSDIyVjhMMTIgM004IDExSDRWOUg4VjExTTE0IDExSDEwVjlIMTRWMTFNMjAgMTFIMTZWOUgyMFYxMU02IDE1SDhWMTdINlYxNU0xMCAxNUgxMlYxN0gxMFYxNU0xMCAxOUgxMlYyMUgxMFYxOU0xNCAxOUgxNlYyMUgxNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXNoaW5nTWFjaGluZSA9IFwiTTE0LjgzLDExLjE3QzE2LjM5LDEyLjczIDE2LjM5LDE1LjI3IDE0LjgzLDE2LjgzQzEzLjI3LDE4LjM5IDEwLjczLDE4LjM5IDkuMTcsMTYuODNMMTQuODMsMTEuMTdNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk03LDRBMSwxIDAgMCwwIDYsNUExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDcsNE0xMCw0QTEsMSAwIDAsMCA5LDVBMSwxIDAgMCwwIDEwLDZBMSwxIDAgMCwwIDExLDVBMSwxIDAgMCwwIDEwLDRNMTIsOEE2LDYgMCAwLDAgNiwxNEE2LDYgMCAwLDAgMTIsMjBBNiw2IDAgMCwwIDE4LDE0QTYsNiAwIDAsMCAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhc2hpbmdNYWNoaW5lQWxlcnQgPSBcIk0xMi44MyAxMS4xN0MxNC4zOSAxMi43MyAxNC4zOSAxNS4yNyAxMi44MyAxNi44M1M4LjczIDE4LjM5IDcuMTcgMTYuODNMMTIuODMgMTEuMTdNNCAySDE2QzE3LjExIDIgMTggMi45IDE4IDRWMjBDMTggMjEuMTEgMTcuMTEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAyTTUgNEM0LjQ1IDQgNCA0LjQ1IDQgNVM0LjQ1IDYgNSA2IDYgNS41NSA2IDUgNS41NSA0IDUgNE04IDRDNy40NSA0IDcgNC40NSA3IDVTNy40NSA2IDggNiA5IDUuNTUgOSA1IDguNTUgNCA4IDRNMTAgOEM2LjY5IDggNCAxMC42OSA0IDE0UzYuNjkgMjAgMTAgMjAgMTYgMTcuMzEgMTYgMTQgMTMuMzEgOCAxMCA4TTIwIDE1SDIyVjE3SDIwVjE1TTIwIDdIMjJWMTNIMjBWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXNoaW5nTWFjaGluZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNCA1Ljg5VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMjBDOC42OSAyMCA2IDE3LjMxIDYgMTRDNiAxMi4zMiA2LjcgMTAuOCA3LjgyIDkuNzFMMTIuMDYgMTMuOTVMOS4xNyAxNi44M0MxMC43MyAxOC4zOSAxMy4yNyAxOC4zOSAxNC44MyAxNi44M0MxNC44NSAxNi44MSAxNC44NiAxNi43OSAxNC44OCAxNi43N0wxNi4yOSAxOC4xOEMxNS4yIDE5LjMgMTMuNjkgMjAgMTIgMjBNMTEuMjUgOC4wNUMxMS41IDggMTEuNzUgOCAxMiA4QzE1LjMxIDggMTggMTAuNjkgMTggMTRDMTggMTQuMjUgMTggMTQuNSAxNy45NSAxNC43NUwyMCAxNi44VjRDMjAgMi45IDE5LjExIDIgMTggMkg2QzUuNzYgMiA1LjU0IDIuMDUgNS4zMyAyLjEzTDExLjI1IDguMDVNMTAgNEMxMC41NSA0IDExIDQuNDUgMTEgNVMxMC41NSA2IDEwIDYgOSA1LjU1IDkgNSA5LjQ1IDQgMTAgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaCA9IFwiTTYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOEE2LDYgMCAwLDEgNiwxMk0yMCwxMkMyMCw5LjQ1IDE4LjgxLDcuMTkgMTYuOTUsNS43M0wxNiwwSDhMNy4wNSw1LjczQzUuMTksNy4xOSA0LDkuNDUgNCwxMkM0LDE0LjU0IDUuMTksMTYuODEgNy4wNSwxOC4yN0w4LDI0SDE2TDE2Ljk1LDE4LjI3QzE4LjgxLDE2LjgxIDIwLDE0LjU0IDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGNoRXhwb3J0ID0gXCJNMTQsMTFIMTlMMTYuNSw4LjVMMTcuOTIsNy4wOEwyMi44NCwxMkwxNy45MiwxNi45MkwxNi41LDE1LjVMMTksMTNIMTRWMTFNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZDMTMuNCw2IDE0LjY5LDYuNSAxNS43MSw3LjI5TDE3LjEzLDUuODdMMTYuOTUsNS43M0wxNiwwSDhMNy4wNSw1LjczQzUuMTksNy4xOSA0LDkuNDYgNCwxMkM0LDE0LjU1IDUuMTksMTYuODEgNy4wNSwxOC4yN0w4LDI0SDE2TDE2Ljk1LDE4LjI3TDE3LjEzLDE4LjEzTDE1LjcxLDE2LjcxQzE0LjY5LDE3LjUgMTMuNCwxOCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaEV4cG9ydFZhcmlhbnQgPSBcIk0xNCwxMUgxOUwxNi41LDguNUwxNy45Miw3LjA4TDIyLjg0LDEyTDE3LjkyLDE2LjkyTDE2LjUsMTUuNUwxOSwxM0gxNFYxMU04LDBIMTZMMTYuODMsNUgxN0MxNy4yOCw1IDE3LjU0LDUuMDYgMTcuNzgsNS4xNkwxNS45NCw3SDdWMTdIMTUuOTRMMTcuNzgsMTguODRDMTcuNTQsMTguOTQgMTcuMjgsMTkgMTcsMTlIMTYuODNMMTYsMjRIOEw3LjE3LDE5SDdBMiwyIDAgMCwxIDUsMTdWN0M1LDUuODkgNS45LDUgNyw1SDcuMTdMOCwwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGNoSW1wb3J0ID0gXCJNMiwxMUg3TDQuNSw4LjVMNS45Miw3LjA4TDEwLjg0LDEyTDUuOTIsMTYuOTJMNC41LDE1LjVMNywxM0gyVjExTTEyLDE4QTYsNiAwIDAsMCAxOCwxMkE2LDYgMCAwLDAgMTIsNkMxMC42LDYgOS4zMSw2LjUgOC4yOSw3LjI5TDYuODcsNS44N0w3LjA1LDUuNzNMOCwwSDE2TDE2Ljk1LDUuNzNDMTguODEsNy4xOSAyMCw5LjQ1IDIwLDEyQzIwLDE0LjU0IDE4LjgxLDE2LjgxIDE2Ljk1LDE4LjI3TDE2LDI0SDhMNy4wNSwxOC4yN0w2Ljg3LDE4LjEzTDguMjksMTYuNzFDOS4zMSwxNy41IDEwLjYsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0Y2hJbXBvcnRWYXJpYW50ID0gXCJNMSwxMUg2TDMuNSw4LjVMNC45Miw3LjA4TDkuODQsMTJMNC45MiwxNi45MkwzLjUsMTUuNUw2LDEzSDFWMTFNOCwwSDE2TDE2LjgzLDVIMTdBMiwyIDAgMCwxIDE5LDdWMTdDMTksMTguMTEgMTguMSwxOSAxNywxOUgxNi44M0wxNiwyNEg4TDcuMTcsMTlIN0M2LjQ2LDE5IDYsMTguNzkgNS42MiwxOC40NEw3LjA2LDE3SDE3VjdINy4wNkw1LjYyLDUuNTZDNiw1LjIxIDYuNDYsNSA3LDVINy4xN0w4LDBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0Y2hWYXJpYW50ID0gXCJNOCwwTDcuMTcsNUg3QTIsMiAwIDAsMCA1LDdWMTdDNSwxOC4xMSA1LjksMTkgNywxOUg3LjE3TDgsMjRIMTZMMTYuODMsMTlIMTdBMiwyIDAgMCwwIDE5LDE3VjdDMTksNS44OSAxOC4xLDUgMTcsNUgxNi44M0wxNiwwSDhNNyw3SDE3VjE3SDdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaFZpYnJhdGUgPSBcIk0zLDE3VjdINVYxN0gzTTE5LDE3VjdIMjFWMTdIMTlNMjIsOUgyNFYxNUgyMlY5TTAsMTVWOUgyVjE1SDBNMTcuOTYsMTEuOTdDMTcuOTYsMTMuODcgMTcuMDcsMTUuNTcgMTUuNjgsMTYuNjdMMTQuOTcsMjAuOTVIOUw4LjI3LDE2LjY3QzYuODgsMTUuNTcgNiwxMy44NyA2LDExLjk3QzYsMTAuMDcgNi44OCw4LjM3IDguMjcsNy4yOEw5LDNIMTQuOTdMMTUuNjgsNy4yOEMxNy4wNyw4LjM3IDE3Ljk2LDEwLjA3IDE3Ljk2LDExLjk3TTcuNSwxMS45N0M3LjUsMTQuNDUgOS41LDE2LjQ2IDExLjk3LDE2LjQ2QTQuNSw0LjUgMCAwLDAgMTYuNDYsMTEuOTdDMTYuNDYsOS41IDE0LjQ1LDcuNSAxMS45Nyw3LjVBNC40Nyw0LjQ3IDAgMCwwIDcuNSwxMS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaFZpYnJhdGVPZmYgPSBcIk0wLDlIMlYxNUgwVjlNMTIsNy41QzE0LjQ3LDcuNSAxNi40Nyw5LjUzIDE2LjQ2LDEyQzE2LjQ1LDEyLjM4IDE2LjQsMTIuNzYgMTYuMywxMy4xM0wxNy41LDE0LjMxQzE3LjgxLDEzLjU4IDE4LDEyLjggMTgsMTJDMTgsMTAuMTcgMTcuMTYsOC40NCAxNS43Miw3LjMxTDE1LDNIOUw4LjU5LDUuMzlMMTAuODYsNy42NkMxMS4yMyw3LjU1IDExLjYxLDcuNSAxMiw3LjVNMjEsMTdWN0gxOVYxNS44TDIwLjIsMTdIMjFNMTYuNSwxNS44NkwyMi4xMSwyMS40NkwyMC44NCwyMi43M0wxNS41NSwxNy40NEwxNSwyMUg5TDguMjcsMTYuNzJDNS44NSwxNC44MiA1LjI3LDExLjQgNi45MSw4LjhMMS4xMSwzTDIuMzksMS43M0w4LjA5LDcuNDRMOS4xNyw4LjVMMTUuNDQsMTQuNzlMMTYuNSwxNS44Nk0xNC4wNSwxNS45NEw4LjA1LDkuOTRDNy43LDEwLjU3IDcuNSwxMS4yOCA3LjUsMTJDNy41LDE0LjQ3IDkuNTMsMTYuNDcgMTIsMTYuNDZDMTIuNzIsMTYuNDYgMTMuNDIsMTYuMjggMTQuMDUsMTUuOTRNMjIsOVYxNUgyNFY5SDIyTTMsMTdINVY3SDNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXIgPSBcIk0xMiwyMEE2LDYgMCAwLDEgNiwxNEM2LDEwIDEyLDMuMjUgMTIsMy4yNUMxMiwzLjI1IDE4LDEwIDE4LDE0QTYsNiAwIDAsMSAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckFsZXJ0ID0gXCJNMTAgMy4yNUMxMCAzLjI1IDE2IDEwIDE2IDE0QzE2IDE3LjMxIDEzLjMxIDIwIDEwIDIwUzQgMTcuMzEgNCAxNEM0IDEwIDEwIDMuMjUgMTAgMy4yNU0yMCA3VjEzSDE4VjdIMjBNMTggMTdIMjBWMTVIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJBbGVydE91dGxpbmUgPSBcIk0xMCAzLjI1QzEwIDMuMjUgNCAxMCA0IDE0QzQgMTcuMzEgNi42OSAyMCAxMCAyMFMxNiAxNy4zMSAxNiAxNEMxNiAxMCAxMCAzLjI1IDEwIDMuMjVNMTAgMThDNy43OSAxOCA2IDE2LjIxIDYgMTRDNiAxMi4yMyA4IDguOTYgMTAgNi4zOUMxMiA4Ljk1IDE0IDEyLjIzIDE0IDE0QzE0IDE2LjIxIDEyLjIxIDE4IDEwIDE4TTIwIDdWMTNIMThWN0gyME0xOCAxN0gyMFYxNUgxOFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckJvaWxlciA9IFwiTTggMkM2Ljg5IDIgNiAyLjg5IDYgNFYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIwSDZWMjJIOUMxMC4xMSAyMiAxMSAyMS4xMSAxMSAyMFYxOEgxM1YyMEMxMyAyMS4xMSAxMy44OSAyMiAxNSAyMkgxOFYyMEgxNVYxOEgxNkMxNy4xMSAxOCAxOCAxNy4xMSAxOCAxNlY0QzE4IDIuODkgMTcuMTEgMiAxNiAySDhNMTIgNC45N0EyIDIgMCAwIDEgMTQgNi45N0EyIDIgMCAwIDEgMTIgOC45N0EyIDIgMCAwIDEgMTAgNi45N0EyIDIgMCAwIDEgMTIgNC45N00xMCAxNC41SDE0VjE2SDEwVjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJCb2lsZXJBbGVydCA9IFwiTTYgMkM0Ljg5IDIgNCAyLjg5IDQgNFYxNkM0IDE3LjExIDQuODkgMTggNiAxOEg3VjIwSDRWMjJIN0M4LjExIDIyIDkgMjEuMTEgOSAyMFYxOEgxMVYyMEMxMSAyMS4xMSAxMS44OSAyMiAxMyAyMkgxNlYyMEgxM1YxOEgxNEMxNS4xMSAxOCAxNiAxNy4xMSAxNiAxNlY0QzE2IDIuODkgMTUuMTEgMiAxNCAySDZNMTAgNC45N0MxMS4xMSA0Ljk3IDEyIDUuODcgMTIgNi45N1MxMS4xMSA4Ljk3IDEwIDguOTdDOC45IDguOTcgOCA4LjA3IDggNi45N0M4IDUuODcgOC45IDQuOTcgMTAgNC45N004IDE0LjVIMTJWMTZIOFYxNC41TTE4IDE1SDIwVjE3SDE4VjE1TTE4IDdIMjBWMTNIMThWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckJvaWxlck9mZiA9IFwiTTEwIDYuODJMNi4yNSAzLjA1QzYuNTkgMi40MiA3LjI0IDIgOCAySDE2QzE3LjExIDIgMTggMi44OSAxOCA0VjE0LjhMMTIuMTYgOC45NkMxMy4xOSA4Ljg3IDE0IDggMTQgNi45N0MxNCA1Ljg3IDEzLjExIDQuOTcgMTIgNC45N0MxMC45NSA0Ljk3IDEwLjEgNS43OCAxMCA2LjgyTTE1IDE4VjIwSDE4VjIySDE1QzEzLjg5IDIyIDEzIDIxLjExIDEzIDIwVjE4SDExVjIwQzExIDIxLjExIDEwLjExIDIyIDkgMjJINlYyMEg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWNy44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE2LjEgMThDMTYuMDYgMTggMTYuMDMgMTggMTYgMThIMTVNMTQgMTZWMTUuODlMMTIuNjEgMTQuNUgxMFYxNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckNoZWNrID0gXCJNMjEuNzUgMTYuMjVMMTcgMjFMMTQuMjUgMThMMTUuNDEgMTYuODRMMTcgMTguNDNMMjAuNTkgMTQuODRMMjEuNzUgMTYuMjVNMTcuNjIgMTJDMTYuMzEgOC4xIDEyIDMuMjUgMTIgMy4yNVM2IDEwIDYgMTRDNiAxNy4zMSA4LjY5IDIwIDEyIDIwSDEyLjM0QzEyLjEyIDE5LjM2IDEyIDE4LjcgMTIgMThDMTIgMTQuODIgMTQuNSAxMi4yMiAxNy42MiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckNoZWNrT3V0bGluZSA9IFwiTTIxLjc1IDE2LjI1TDE3IDIxTDE0LjI1IDE4TDE1LjQxIDE2Ljg0TDE3IDE4LjQzTDIwLjU5IDE0Ljg0TDIxLjc1IDE2LjI1TTggMTRDOCAxMi4yMyAxMCA4Ljk2IDEyIDYuMzlDMTMuNSA4LjMzIDE1IDEwLjY3IDE1LjY3IDEyLjQ3QzE2LjI3IDEyLjIxIDE2LjkzIDEyLjA2IDE3LjYyIDEyQzE2LjMxIDguMSAxMiAzLjI1IDEyIDMuMjVTNiAxMCA2IDE0QzYgMTcuMzEgOC42OSAyMCAxMiAyMEMxMi4xMiAyMCAxMi4yMyAyMCAxMi4zNCAyMEMxMi4xMiAxOS4zNiAxMiAxOC43IDEyIDE4QzkuNzkgMTggOCAxNi4yMSA4IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyTWludXMgPSBcIk0yMiAxN1YxOUgxNFYxN0gyMk0xNy42MiAxMkMxNi4zMSA4LjEgMTIgMy4yNSAxMiAzLjI1UzYgMTAgNiAxNEM2IDE3LjMxIDguNjkgMjAgMTIgMjBDMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzQgMjBDMTIuMTIgMTkuMzYgMTIgMTguNyAxMiAxOEMxMiAxNC44MiAxNC41IDEyLjIyIDE3LjYyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyTWludXNPdXRsaW5lID0gXCJNMjIgMTdWMTlIMTRWMTdIMjJNOCAxNEM4IDEyLjIzIDEwIDguOTYgMTIgNi4zOUMxMy41IDguMzMgMTUgMTAuNjcgMTUuNjcgMTIuNDdDMTYuMjcgMTIuMjEgMTYuOTMgMTIuMDYgMTcuNjIgMTJDMTYuMzEgOC4xIDEyIDMuMjUgMTIgMy4yNVM2IDEwIDYgMTRDNiAxNy4zMSA4LjY5IDIwIDEyIDIwQzEyLjEyIDIwIDEyLjIzIDIwIDEyLjM0IDIwQzEyLjEyIDE5LjM2IDEyIDE4LjcgMTIgMThDOS43OSAxOCA4IDE2LjIxIDggMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJPZmYgPSBcIk0yMC44NCAyMi43M0wxNi4yOSAxOC4xOEMxNS4yIDE5LjMgMTMuNjkgMjAgMTIgMjBDOC42OSAyMCA2IDE3LjMxIDYgMTRDNiAxMi42NyA2LjY3IDExLjAzIDcuNTUgOS40NEwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE4IDE0QzE4IDEwIDEyIDMuMjUgMTIgMy4yNVMxMC44NCA0LjU1IDkuNTUgNi4zNUwxNy45NSAxNC43NUMxOCAxNC41IDE4IDE0LjI1IDE4IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNy42NSA5LjU0QzYuNzQgMTEuMDMgNiAxMi42NSA2IDE0LjIzQzYgMTcuNTQgOC42OSAyMC4yMyAxMiAyMC4yM0MxMy43NCAyMC4yMyAxNS4zIDE5LjUgMTYuNCAxOC4yOUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMiAxOC4yM0M5Ljc4IDE4LjIzIDggMTYuNDUgOCAxNC4yM0M4IDEzLjUgOC41IDEyLjI3IDkuMTQgMTEuMDNMMTUgMTYuODhDMTQuMjYgMTcuNzEgMTMuMiAxOC4yMyAxMiAxOC4yM00xMS4xNCA3Ljk0TDkuNzEgNi41QzEwLjU3IDUuMzggMTEuMjUgNC42MSAxMS4yNSA0LjYxTDEyIDMuNzdMMTIuNzUgNC42MUMxMi43NSA0LjYxIDE0LjAzIDYuMDYgMTUuMzIgNy45NFMxOCAxMi4wNyAxOCAxNC4yM0MxOCAxNC40MSAxOCAxNC41OSAxNy45NyAxNC43N0wxNS40NiAxMi4yNkMxNSAxMS4yMyAxNC4zNyAxMC4wNyAxMy42OCA5LjA3QzEyLjg0IDcuODUgMTIuNDQgNy40MiAxMiA2LjlDMTEuNzMgNy4yMSAxMS41IDcuNSAxMS4xNCA3Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyT3V0bGluZSA9IFwiTTEyLDMuNzdMMTEuMjUsNC42MUMxMS4yNSw0LjYxIDkuOTcsNi4wNiA4LjY4LDcuOTRDNy4zOSw5LjgyIDYsMTIuMDcgNiwxNC4yM0E2LDYgMCAwLDAgMTIsMjAuMjNBNiw2IDAgMCwwIDE4LDE0LjIzQzE4LDEyLjA3IDE2LjYxLDkuODIgMTUuMzIsNy45NEMxNC4wMyw2LjA2IDEyLjc1LDQuNjEgMTIuNzUsNC42MUwxMiwzLjc3TTEyLDYuOUMxMi40NCw3LjQyIDEyLjg0LDcuODUgMTMuNjgsOS4wN0MxNC44OSwxMC44MyAxNiwxMy4wNyAxNiwxNC4yM0MxNiwxNi40NSAxNC4yMiwxOC4yMyAxMiwxOC4yM0M5Ljc4LDE4LjIzIDgsMTYuNDUgOCwxNC4yM0M4LDEzLjA3IDkuMTEsMTAuODMgMTAuMzIsOS4wN0MxMS4xNiw3Ljg1IDExLjU2LDcuNDIgMTIsNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUGVyY2VudCA9IFwiTTEyLDMuMjVDMTIsMy4yNSA2LDEwIDYsMTRDNiwxNy4zMiA4LjY5LDIwIDEyLDIwQTYsNiAwIDAsMCAxOCwxNEMxOCwxMCAxMiwzLjI1IDEyLDMuMjVNMTQuNDcsOS45N0wxNS41MywxMS4wM0w5LjUzLDE3LjAzTDguNDcsMTUuOTdNOS43NSwxMEExLjI1LDEuMjUgMCAwLDEgMTEsMTEuMjVBMS4yNSwxLjI1IDAgMCwxIDkuNzUsMTIuNUExLjI1LDEuMjUgMCAwLDEgOC41LDExLjI1QTEuMjUsMS4yNSAwIDAsMSA5Ljc1LDEwTTE0LjI1LDE0LjVBMS4yNSwxLjI1IDAgMCwxIDE1LjUsMTUuNzVBMS4yNSwxLjI1IDAgMCwxIDE0LjI1LDE3QTEuMjUsMS4yNSAwIDAsMSAxMywxNS43NUExLjI1LDEuMjUgMCAwLDEgMTQuMjUsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclBlcmNlbnRBbGVydCA9IFwiTTIwIDdWMTNIMThWN0gyME0xOCAxN0gyMFYxNUgxOFYxN00xMCAzLjI1QzEwIDMuMjUgNCAxMCA0IDE0QzQgMTcuMzIgNi42OSAyMCAxMCAyMFMxNiAxNy4zMSAxNiAxNEMxNiAxMCAxMCAzLjI1IDEwIDMuMjVNNy43NSAxMEM4LjQ0IDEwIDkgMTAuNTYgOSAxMS4yNVM4LjQ0IDEyLjUgNy43NSAxMi41IDYuNSAxMS45NCA2LjUgMTEuMjUgNy4wNiAxMCA3Ljc1IDEwTTEyLjI1IDE3QzExLjU2IDE3IDExIDE2LjQ0IDExIDE1Ljc1UzExLjU2IDE0LjUgMTIuMjUgMTQuNSAxMy41IDE1LjA2IDEzLjUgMTUuNzUgMTIuOTQgMTcgMTIuMjUgMTdNNy41MyAxNy4wM0w2LjQ3IDE1Ljk3TDEyLjQ3IDkuOTdMMTMuNTMgMTEuMDNMNy41MyAxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclBsdXMgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNC41IDEyLjIyIDEyIDE0LjgyIDEyIDE4TTE5IDE3VjE0SDE3VjE3SDE0VjE5SDE3VjIySDE5VjE5SDIyVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUGx1c091dGxpbmUgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNi45MyAxMi4wNiAxNi4yOCAxMi4yMiAxNS42NyAxMi40N0MxNSAxMC42OCAxMy41IDguMzMgMTIgNi4zOUMxMCA4Ljk2IDggMTIuMjMgOCAxNEM4IDE2LjIxIDkuNzkgMTggMTIgMThNMTkgMTdWMTRIMTdWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQb2xvID0gXCJNMjAgMTZIMjJWMThIMjBDMTguNiAxOCAxNy4yIDE3LjYgMTYgMTdDMTMuNSAxOC4zIDEwLjUgMTguMyA4IDE3QzYuOCAxNy42IDUuNCAxOCA0IDE4SDJWMTZINEM1LjQgMTYgNi44IDE1LjUgOCAxNC43QzEwLjQgMTYuNCAxMy42IDE2LjQgMTYgMTQuN0MxNy4yIDE1LjUgMTguNiAxNiAyMCAxNk0xMyAxMC42QzEzLjYgMTAuMyAxNC4zIDEwIDE1IDkuOVYxMC4yQzE1LjMgMTEuMiAxNS4zIDEyLjEgMTUuMiAxMy4xQzE0LjMgMTMuNiAxMy4yIDEzLjkgMTIuMiAxMy45QzEyLjcgMTIuOSAxMyAxMS43IDEzIDEwLjZNMTIuOSAzLjZDMTEuNSA0IDEwLjMgNC43IDkuMyA1LjdDOC45IDQuNyA4LjcgMy43IDguNyAyLjdDMTAuOSAxLjcgMTMuNCAxLjggMTUuNiAyLjlDMTUuOSAzIDE2LjIgMy4xIDE2LjQgMy4zQzE1LjIgMy4yIDE0IDMuMyAxMi45IDMuNk02LjggMTMuM0M2LjIgMTMuNiA1LjYgMTMuOCA1IDEzLjlDNC4zIDEyLjYgNCAxMS4yIDQgOS44QzQuNSAxMC44IDUuMiAxMS44IDYgMTIuNkM2LjMgMTIuOCA2LjUgMTMuMSA2LjggMTMuM00xOSAxMy45QzE4LjQgMTMuOCAxNy44IDEzLjYgMTcuMyAxMy40QzE3LjUgMTIuMiAxNy40IDExIDE3LjEgOS44QzE4LjIgOS45IDE5LjIgMTAuMiAyMC4xIDEwLjhDMjAgMTEuOCAxOS43IDEyLjcgMTkuMiAxMy42TDE5IDEzLjlNNy40IDExLjJDNi4yIDEwLjEgNS41IDguNSA1LjIgNi45TDUuMSA2QzUuNiA1LjIgNi4xIDQuNiA2LjggNEM2LjkgNS40IDcuNCA2LjcgOC4yIDcuOEM4LjkgOC45IDkuOSA5LjkgMTEgMTAuNUMxMSAxMS4zIDEwLjggMTIuMSAxMC41IDEyLjlDOS4zIDEyLjYgOC4zIDEyIDcuNCAxMS4yTTEzLjUgNS41QzE1IDUuMSAxNi43IDUuMiAxOC4yIDUuN0wxOSA2LjFDMTkuNCA2LjggMTkuNiA3LjYgMTkuOCA4LjRDMTcuMyA3LjMgMTQuNCA3LjUgMTIgOC44QzExLjMgOC41IDEwLjggOCAxMC4zIDcuNEwxMC40IDcuM0MxMS4zIDYuNSAxMi4zIDUuOCAxMy41IDUuNU0xNiAxOC43QzE3LjIgMTkuNSAxOC42IDIwIDIwIDIwSDIyVjIySDIwQzE4LjYgMjIgMTcuMiAyMS42IDE2IDIxQzEzLjUgMjIuMyAxMC41IDIyLjMgOCAyMUM2LjggMjEuNiA1LjQgMjIgNCAyMkgyVjIwSDRDNS40IDIwIDYuOCAxOS41IDggMTguN0MxMC40IDIwLjQgMTMuNiAyMC40IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQdW1wID0gXCJNMTksMTQuNUMxOSwxNC41IDIxLDE2LjY3IDIxLDE4QTIsMiAwIDAsMSAxOSwyMEEyLDIgMCAwLDEgMTcsMThDMTcsMTYuNjcgMTksMTQuNSAxOSwxNC41TTUsMThWOUEyLDIgMCAwLDEgMyw3QTIsMiAwIDAsMSA1LDVWNEEyLDIgMCAwLDEgNywySDlBMiwyIDAgMCwxIDExLDRWNUgxOUEyLDIgMCAwLDEgMjEsN1Y5TDIxLDExQTEsMSAwIDAsMSAyMiwxMkExLDEgMCAwLDEgMjEsMTNIMTdBMSwxIDAgMCwxIDE2LDEyQTEsMSAwIDAsMSAxNywxMVY5SDExVjE4SDEyQTIsMiAwIDAsMSAxNCwyMFYyMkgyVjIwQTIsMiAwIDAsMSA0LDE4SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQdW1wT2ZmID0gXCJNNS43IDIuNUEyIDIgMCAwIDEgNyAySDlBMiAyIDAgMCAxIDExIDRWNUgxOUEyIDIgMCAwIDEgMjEgN1YxMUExIDEgMCAwIDEgMjEgMTNIMTdBMSAxIDAgMCAxIDE3IDExVjlIMTIuMk0yMC44NCAyMi43M0wyMi4xMSAyMS40NkwxMSAxMC4zNEwyLjM5IDEuNzNMMS4xMSAzTDMuNjUgNS41NEEyIDIgMCAwIDAgNSA5VjE4SDRBMiAyIDAgMCAwIDIgMjBWMjJIMTRWMjBBMiAyIDAgMCAwIDEyIDE4SDExVjEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUmVtb3ZlID0gXCJNMTIgMThDMTIgMTguNyAxMi4xMiAxOS4zNiAxMi4zNCAyMEMxMi4yMyAyMCAxMi4xMiAyMCAxMiAyMEM4LjY5IDIwIDYgMTcuMzEgNiAxNEM2IDEwIDEyIDMuMjUgMTIgMy4yNVMxNi4zMSA4LjEgMTcuNjIgMTJDMTQuNSAxMi4yMiAxMiAxNC44MiAxMiAxOE0yMS41NCAxNS44OEwyMC4xMyAxNC40N0wxOCAxNi41OUwxNS44OCAxNC40N0wxNC40NyAxNS44OEwxNi41OSAxOEwxNC40NyAyMC4xMkwxNS44OCAyMS41M0wxOCAxOS40MUwyMC4xMiAyMS41M0wyMS41MyAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclJlbW92ZU91dGxpbmUgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNi45MyAxMi4wNiAxNi4yOCAxMi4yMiAxNS42NyAxMi40N0MxNSAxMC42OCAxMy41IDguMzMgMTIgNi4zOUMxMCA4Ljk2IDggMTIuMjMgOCAxNEM4IDE2LjIxIDkuNzkgMTggMTIgMThNMjEuNTQgMTUuODhMMjAuMTMgMTQuNDdMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTNMMTggMTkuNDFMMjAuMTIgMjEuNTNMMjEuNTMgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJXZWxsID0gXCJNMjIgMTZIMlYxOEg0VjIySDIwVjE4SDIyVjE2TTEwLjQ0IDE1QzEwLjE5IDE1IDEwIDE0LjgxIDkuOTUgMTQuNTZMOS41NyAxMS41NkM5LjU3IDExLjU0IDkuNTcgMTEuNSA5LjU3IDExLjVDOS41NyAxMS4yMiA5Ljc5IDExIDEwLjA3IDExSDEzLjkzQzEzLjk1IDExIDEzLjk3IDExIDE0IDExQzE0LjI3IDExLjA0IDE0LjQ2IDExLjI5IDE0LjQzIDExLjU2TDE0LjA1IDE0LjU2QzE0IDE0LjgxIDEzLjgxIDE1IDEzLjU2IDE1SDEwLjQ0TTE5IDJMMjEuNTYgNi42OEMyMS42IDYuNzggMjEuNjEgNi44OSAyMS42MSA3QzIxLjYxIDcuNTYgMjEuMTYgOCAyMC42MSA4SDE5VjE1SDE3VjhIMTNWMTBIMTFWOEg3VjE1SDVWOEgzLjYyQzMuNDYgOCAzLjMxIDcuOTYgMy4xNiA3Ljg5QzIuNjcgNy42NCAyLjQ3IDcuMDQgMi43MiA2LjU1TDUgMkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlcldlbGxPdXRsaW5lID0gXCJNMy42MiA4SDVWMTVIN1Y4SDExVjEwSDEzVjhIMTdWMTVIMTlWOEgyMC42MUMyMS4xNiA4IDIxLjYxIDcuNTYgMjEuNjEgN0MyMS42MSA2Ljg5IDIxLjYgNi43OCAyMS41NiA2LjY4TDE5IDJINUwyLjcyIDYuNTVDMi40NyA3LjA0IDIuNjcgNy42NCAzLjE2IDcuODlDMy4zMSA3Ljk2IDMuNDYgOCAzLjYyIDhNNi4yNCA0SDE3Ljc2TDE4Ljc2IDZINS4yNEw2LjI0IDRNMiAxNlYxOEg0VjIySDIwVjE4SDIyVjE2SDJNMTggMjBINlYxOEgxOFYyME0xMy45MyAxMUMxNC4yMSAxMSAxNC40MyAxMS4yMiAxNC40MyAxMS41QzE0LjQzIDExLjUgMTQuNDMgMTEuNTQgMTQuNDMgMTEuNTZMMTQuMDUgMTQuNTZDMTQgMTQuODEgMTMuODEgMTUgMTMuNTYgMTVIMTAuNDRDMTAuMTkgMTUgMTAgMTQuODEgOS45NSAxNC41Nkw5LjU3IDExLjU2QzkuNTQgMTEuMjkgOS43MyAxMS4wNCAxMCAxMUMxMC4wMyAxMSAxMC4wNSAxMSAxMC4wNyAxMUgxMy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlcmluZ0NhbiA9IFwiTTE4LjUgNy40N0MxNy43NiA4LjIgMTcuNTcgOS4yNSAxNy45MiAxMC4xNUwxNSAxMy4wN1YxMUMxNSAxMC40NSAxNC41NSAxMCAxNCAxMEgxMi45N0MxMyA5LjgzIDEzIDkuNjcgMTMgOS41QzEzIDYuNDYgMTAuNTQgNCA3LjUgNFMyIDYuNDYgMiA5LjVDMiAxMS4yMSAyLjc4IDEyLjczIDQgMTMuNzRWMjBDNCAyMC41NSA0LjQ1IDIxIDUgMjFIMTRDMTQuNTUgMjEgMTUgMjAuNTUgMTUgMjBWMTUuODlMMTkuMzMgMTEuNTZDMjAuMjMgMTEuOTEgMjEuMjggMTEuNzMgMjIgMTFMMTguNSA3LjQ3TTQuMDUgMTBDNC4wMyA5LjgzIDQgOS42NyA0IDkuNUM0IDcuNTcgNS41NyA2IDcuNSA2UzExIDcuNTcgMTEgOS41QzExIDkuNjcgMTAuOTcgOS44MyAxMC45NSAxMEg0LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyaW5nQ2FuT3V0bGluZSA9IFwiTTE4LjUgNy40N0MxNy43NiA4LjIgMTcuNTcgOS4yNSAxNy45MiAxMC4xNUwxNSAxMy4wN1YxMUMxNSAxMC40NSAxNC41NSAxMCAxNCAxMEgxMi45N0MxMyA5LjgzIDEzIDkuNjcgMTMgOS41QzEzIDYuNDYgMTAuNTQgNCA3LjUgNFMyIDYuNDYgMiA5LjVDMiAxMS4yMSAyLjc4IDEyLjczIDQgMTMuNzRWMjBDNCAyMC41NSA0LjQ1IDIxIDUgMjFIMTRDMTQuNTUgMjEgMTUgMjAuNTUgMTUgMjBWMTUuODlMMTkuMzMgMTEuNTZDMjAuMjMgMTEuOTEgMjEuMjggMTEuNzMgMjIgMTFMMTguNSA3LjQ3TTQuMDUgMTBDNC4wMyA5LjgzIDQgOS42NyA0IDkuNUM0IDcuNTcgNS41NyA2IDcuNSA2UzExIDcuNTcgMTEgOS41QzExIDkuNjcgMTAuOTcgOS44MyAxMC45NSAxME0xMyAxOUg2VjEySDEzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVybWFyayA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTIxLDE5SDEyVjEzSDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdmUgPSBcIk0yMCwxMkMxOC42MSwxMiAxNy4yMiwxMS41MyAxNiwxMC42N0MxMy41NiwxMi4zOCAxMC40NCwxMi4zOCA4LDEwLjY3QzYuNzgsMTEuNTMgNS4zOSwxMiA0LDEySDJWMTRINEM1LjM3LDE0IDYuNzQsMTMuNjUgOCwxM0MxMC41LDE0LjMgMTMuNSwxNC4zIDE2LDEzQzE3LjI2LDEzLjY1IDE4LjYyLDE0IDIwLDE0SDIyVjEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F2ZWZvcm0gPSBcIk0yMiAxMkwyMCAxM0wxOSAxNEwxOCAxM0wxNyAxNkwxNiAxM0wxNSAyMUwxNCAxM0wxMyAxNUwxMiAxM0wxMSAxN0wxMCAxM0w5IDIyTDggMTNMNyAxOUw2IDEzTDUgMTRMNCAxM0wyIDEyTDQgMTFMNSAxMEw2IDExTDcgNUw4IDExTDkgMkwxMCAxMUwxMSA3TDEyIDExTDEzIDlMMTQgMTFMMTUgM0wxNiAxMUwxNyA4TDE4IDExTDE5IDEwTDIwIDExTDIyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdmVzID0gXCJNMjAsMTJIMjJWMTRIMjBDMTguNjIsMTQgMTcuMjYsMTMuNjUgMTYsMTNDMTMuNSwxNC4zIDEwLjUsMTQuMyA4LDEzQzYuNzQsMTMuNjUgNS4zNywxNCA0LDE0SDJWMTJINEM1LjM5LDEyIDYuNzgsMTEuNTMgOCwxMC42N0MxMC40NCwxMi4zOCAxMy41NiwxMi4zOCAxNiwxMC42N0MxNy4yMiwxMS41MyAxOC42MSwxMiAyMCwxMk0yMCw2SDIyVjhIMjBDMTguNjIsOCAxNy4yNiw3LjY1IDE2LDdDMTMuNSw4LjMgMTAuNSw4LjMgOCw3QzYuNzQsNy42NSA1LjM3LDggNCw4SDJWNkg0QzUuMzksNiA2Ljc4LDUuNTMgOCw0LjY3QzEwLjQ0LDYuMzggMTMuNTYsNi4zOCAxNiw0LjY3QzE3LjIyLDUuNTMgMTguNjEsNiAyMCw2TTIwLDE4SDIyVjIwSDIwQzE4LjYyLDIwIDE3LjI2LDE5LjY1IDE2LDE5QzEzLjUsMjAuMyAxMC41LDIwLjMgOCwxOUM2Ljc0LDE5LjY1IDUuMzcsMjAgNCwyMEgyVjE4SDRDNS4zOSwxOCA2Ljc4LDE3LjUzIDgsMTYuNjdDMTAuNDQsMTguMzggMTMuNTYsMTguMzggMTYsMTYuNjdDMTcuMjIsMTcuNTMgMTguNjEsMTggMjAsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F6ZSA9IFwiTTIwLjU0LDYuNjNDMjEuMjMsNy41NyAyMS42OSw4LjY3IDIxLjg5LDkuODJDMjIuMSwxMS4wNyAyMiwxMi4zNCAyMS41OCwxMy41NEMyMS4xOCwxNC43MSAyMC41LDE1Ljc2IDE5LjU4LDE2LjZDMTguOTEsMTcuMjQgMTguMTUsMTcuNzcgMTcuMzIsMTguMThDMTcuNzMsMTkuMjUgMTcuMTksMjAuNDUgMTYuMTIsMjAuODZDMTUuODgsMjAuOTUgMTUuNjMsMjEgMTUuMzgsMjFDMTQuMjcsMjEgMTMuMzUsMjAuMTEgMTMuMzEsMTlDMTMuMDUsMTkgMTAuNzMsMTkgMTAuMjQsMTlDMTAuMTMsMjAuMTQgOS4xMSwyMSA3Ljk3LDIwLjg3QzYuOTEsMjAuNzcgNi4xMSwxOS44OSA2LjA5LDE4LjgzQzYuMSwxOC42NCA2LjEzLDE4LjQ0IDYuMTksMTguMjZDNC42LDE3LjczIDMuMjEsMTYuNzQgMi4xOSwxNS40MUMxLjg2LDE0Ljk3IDEuOTYsMTQuMzQgMi40MiwxNEMyLjYsMTMuODYgMi44MiwxMy43OCAzLjA1LDEzLjc4QzMuNzcsMTMuNzggNC4wNSwxMy41MyA0LjIyLDEzLjE1QzQuNDYsMTIuNDMgNC42LDExLjY4IDQuNjEsMTAuOTJDNC42NCwxMC4zOSA0LjcsOS44NyA0Ljc4LDkuMzVDNS4xMyw3LjYyIDYuMSw2LjA3IDcuNSw1QzkuMTYsMy43IDExLjE5LDMgMTMuMjksM0MxNC43MiwzIDE2LjEzLDMuMzUgMTcuNCw0QzE4LjY0LDQuNjIgMTkuNzEsNS41IDIwLjU0LDYuNjNNMTYuNzIsMTcuMzFDMTguNSwxNi41IDE5LjksMTUuMDQgMjAuNTksMTMuMjFDMjIuMjEsOC4yNyAxOCw0LjA1IDEzLjI5LDQuMDVDMTIuOTQsNC4wNSAxMi41OCw0LjA3IDEyLjIzLDQuMTJDOS4zNiw0LjUgNi40LDYuNSA1LjgxLDkuNUM1LjQzLDExLjUgNiwxNC43OSAzLjA1LDE0Ljc5QzQsMTYgNS4zMiwxNi45MyA2LjgxLDE3LjM3QzcuNjYsMTYuNjEgOC45NywxNi42OSA5Ljc0LDE3LjU1QzkuODUsMTcuNjcgOS45NCwxNy44IDEwLDE3Ljk0QzEwLjU5LDE3Ljk0IDEzLjIsMTcuOTQgMTMuNTUsMTcuOTRDMTQuMDcsMTYuOTIgMTUuMzMsMTYuNSAxNi4zNSwxNy4wNEMxNi41LDE3LjEyIDE2LjYsMTcuMjEgMTYuNzIsMTcuMzFNMTAuOTcsMTAuMzFDMTAuMzksMTAuMzQgOS44OCw5LjkgOS44NSw5LjMxQzkuODIsOC43MyAxMC4yNyw4LjIzIDEwLjg1LDguMTlDMTEuNDMsOC4xNiAxMS45NCw4LjYxIDExLjk3LDkuMjVDMTIsOS44IDExLjU2LDEwLjI3IDExLDEwLjI5TDEwLjk3LDEwLjMxTTE1LjY2LDEwLjMxQzE1LjA4LDEwLjM0IDE0LjU3LDkuOSAxNC41NCw5LjMxQzE0LjUsOC43MyAxNC45Niw4LjIzIDE1LjU0LDguMTlDMTYuMTIsOC4xNiAxNi42Myw4LjYxIDE2LjY2LDkuMjVDMTYuNjgsOS44IDE2LjI1LDEwLjI3IDE1LjY2LDEwLjI5VjEwLjMxTTkuNzEsMTIuMDdDOS42NSwxMS43OSA5Ljg0LDExLjUgMTAuMTIsMTEuNDVDMTAuNCwxMS40IDEwLjY4LDExLjU4IDEwLjc0LDExLjg2VjExLjg2QzExLjA5LDEyLjk3IDEyLjE2LDEzLjY5IDEzLjMyLDEzLjZDMTQuNDYsMTMuNjYgMTUuNSwxMi45NiAxNS44OSwxMS44OEMxNi4wMywxMS42MiAxNi4zNSwxMS41IDE2LjYsMTEuNjVDMTYuNzgsMTEuNzUgMTYuODksMTEuOTIgMTYuODksMTIuMTJDMTYuNywxMi44MyAxNi4yNiwxMy40NSAxNS42NiwxMy44OEMxNC45NywxNC4zNiAxNC4xNiwxNC42MyAxMy4zMiwxNC42NEgxMy4yMUMxMS41OCwxNC43MSAxMC4xMSwxMy42NCA5LjY4LDEyLjA2TDkuNzEsMTIuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlckNsb3VkeSA9IFwiTTYsMTlBNSw1IDAgMCwxIDEsMTRBNSw1IDAgMCwxIDYsOUM3LDYuNjUgOS4zLDUgMTIsNUMxNS40Myw1IDE4LjI0LDcuNjYgMTguNSwxMS4wM0wxOSwxMUE0LDQgMCAwLDEgMjMsMTVBNCw0IDAgMCwxIDE5LDE5SDZNMTksMTNIMTdWMTJBNSw1IDAgMCwwIDEyLDdDOS41LDcgNy40NSw4LjgyIDcuMDYsMTEuMTlDNi43MywxMS4wNyA2LjM3LDExIDYsMTFBMywzIDAgMCwwIDMsMTRBMywzIDAgMCwwIDYsMTdIMTlBMiwyIDAgMCwwIDIxLDE1QTIsMiAwIDAsMCAxOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyQ2xvdWR5QWxlcnQgPSBcIk02LDE5QTUsNSAwIDAsMSAxLDE0QTUsNSAwIDAsMSA2LDlDNyw2LjY1IDkuMyw1IDEyLDVDMTUuNDMsNSAxOC4yNCw3LjY2IDE4LjUsMTEuMDNMMTksMTFBNCw0IDAgMCwxIDIzLDE1QTQsNCAwIDAsMSAxOSwxOUg2TTE5LDEzSDE3VjEyQTUsNSAwIDAsMCAxMiw3QzkuNSw3IDcuNDUsOC44MiA3LjA2LDExLjE5QzYuNzMsMTEuMDcgNi4zNywxMSA2LDExQTMsMyAwIDAsMCAzLDE0QTMsMyAwIDAsMCA2LDE3SDE5QTIsMiAwIDAsMCAyMSwxNUEyLDIgMCAwLDAgMTksMTNNMTMsMTJIMTFWOEgxM1YxMk0xMywxNkgxMVYxNEgxM1wiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJDbG91ZHlBcnJvd1JpZ2h0ID0gXCJNNiw3TDYuNjksNy4wNkM3LjMyLDQuNzIgOS40NiwzIDEyLDNBNS41LDUuNSAwIDAsMSAxNy41LDguNUwxNy40Miw5LjQ1QzE3Ljg4LDkuMTYgMTguNDIsOSAxOSw5QTMsMyAwIDAsMSAyMiwxMkEzLDMgMCAwLDEgMTksMTVINkE0LDQgMCAwLDEgMiwxMUE0LDQgMCAwLDEgNiw3TTYsOUEyLDIgMCAwLDAgNCwxMUEyLDIgMCAwLDAgNiwxM0gxOUExLDEgMCAwLDAgMjAsMTJBMSwxIDAgMCwwIDE5LDExSDE1LjVWOC41QTMuNSwzLjUgMCAwLDAgMTIsNUEzLjUsMy41IDAgMCwwIDguNSw4LjVWOUg2TTIyLDE5TDE5LDIyVjIwSDJWMThIMTlWMTZMMjIsMTlcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyRm9nID0gXCJNMywxNUgxM0ExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3SDNBMSwxIDAgMCwxIDIsMTZBMSwxIDAgMCwxIDMsMTVNMTYsMTVIMjFBMSwxIDAgMCwxIDIyLDE2QTEsMSAwIDAsMSAyMSwxN0gxNkExLDEgMCAwLDEgMTUsMTZBMSwxIDAgMCwxIDE2LDE1TTEsMTJBNSw1IDAgMCwxIDYsN0M3LDQuNjUgOS4zLDMgMTIsM0MxNS40MywzIDE4LjI0LDUuNjYgMTguNSw5LjAzTDE5LDlDMjEuMTksOSAyMi45NywxMC43NiAyMywxM0gyMUEyLDIgMCAwLDAgMTksMTFIMTdWMTBBNSw1IDAgMCwwIDEyLDVDOS41LDUgNy40NSw2LjgyIDcuMDYsOS4xOUM2LjczLDkuMDcgNi4zNyw5IDYsOUEzLDMgMCAwLDAgMywxMkMzLDEyLjM1IDMuMDYsMTIuNjkgMy4xNywxM0gxLjFMMSwxMk0zLDE5SDVBMSwxIDAgMCwxIDYsMjBBMSwxIDAgMCwxIDUsMjFIM0ExLDEgMCAwLDEgMiwyMEExLDEgMCAwLDEgMywxOU04LDE5SDIxQTEsMSAwIDAsMSAyMiwyMEExLDEgMCAwLDEgMjEsMjFIOEExLDEgMCAwLDEgNywyMEExLDEgMCAwLDEgOCwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVySGFpbCA9IFwiTTYsMTRBMSwxIDAgMCwxIDcsMTVBMSwxIDAgMCwxIDYsMTZBNSw1IDAgMCwxIDEsMTFBNSw1IDAgMCwxIDYsNkM3LDMuNjUgOS4zLDIgMTIsMkMxNS40MywyIDE4LjI0LDQuNjYgMTguNSw4LjAzTDE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkgxOEExLDEgMCAwLDEgMTcsMTVBMSwxIDAgMCwxIDE4LDE0SDE5QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBIMTdWOUE1LDUgMCAwLDAgMTIsNEM5LjUsNCA3LjQ1LDUuODIgNy4wNiw4LjE5QzYuNzMsOC4wNyA2LjM3LDggNiw4QTMsMyAwIDAsMCAzLDExQTMsMyAwIDAsMCA2LDE0TTEwLDE4QTIsMiAwIDAsMSAxMiwyMEEyLDIgMCAwLDEgMTAsMjJBMiwyIDAgMCwxIDgsMjBBMiwyIDAgMCwxIDEwLDE4TTE0LjUsMTZBMS41LDEuNSAwIDAsMSAxNiwxNy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxOUExLjUsMS41IDAgMCwxIDEzLDE3LjVBMS41LDEuNSAwIDAsMSAxNC41LDE2TTEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMy41QTEuNSwxLjUgMCAwLDEgMTAuNSwxNUExLjUsMS41IDAgMCwxIDksMTMuNUExLjUsMS41IDAgMCwxIDEwLjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlckhhenkgPSBcIk0xMiwyTDE0LjM5LDUuNDJDMTMuNjUsNS4xNSAxMi44NCw1IDEyLDVDMTEuMTYsNSAxMC4zNSw1LjE1IDkuNjEsNS40MkwxMiwyTTMuMzQsN0w3LjUsNi42NUM2LjksNy4xNiA2LjM2LDcuNzggNS45NCw4LjVDNS41LDkuMjQgNS4yNSwxMCA1LjExLDEwLjc5TDMuMzQsN00yMC42NSw3TDE4Ljg4LDEwLjc5QzE4Ljc0LDEwIDE4LjQ3LDkuMjMgMTguMDUsOC41QzE3LjYzLDcuNzggMTcuMSw3LjE1IDE2LjUsNi42NE0xNCwxNUExLDEgMCAwLDAgMTMsMTRIM0ExLDEgMCAwLDAgMiwxNUExLDEgMCAwLDAgMywxNkgxM0ExLDEgMCAwLDAgMTQsMTVNMjIsMTVBMSwxIDAgMCwwIDIxLDE0SDE3QTEsMSAwIDAsMCAxNiwxNUExLDEgMCAwLDAgMTcsMTZIMjFBMSwxIDAgMCwwIDIyLDE1TTEwLDE5QTEsMSAwIDAsMCAxMSwyMEgyMEExLDEgMCAwLDAgMjEsMTlBMSwxIDAgMCwwIDIwLDE4SDExQTEsMSAwIDAsMCAxMCwxOU0zLDE5QTEsMSAwIDAsMCA0LDIwSDdBMSwxIDAgMCwwIDgsMTlBMSwxIDAgMCwwIDcsMThINEExLDEgMCAwLDAgMywxOU0xMiw5QTMsMyAwIDAsMSAxNSwxMkgxN0E1LDUgMCAwLDAgMTIsN0E1LDUgMCAwLDAgNywxMkg5QTMsMyAwIDAsMSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJIdXJyaWNhbmUgPSBcIk0xNSw2Ljc5QzE2Ljg2LDcuODYgMTgsOS44NSAxOCwxMkMxOCwyMiA2LDIyIDYsMjJDNy4yNSwyMS4wNiA4LjM4LDE5Ljk1IDkuMzQsMTguNzFDOS4zOCwxOC42NiA5LjQxLDE4LjYxIDkuNDQsMTguNTVDOS42OSwxOC4wNiA5LjUsMTcuNDYgOSwxNy4yMUM3LjE0LDE2LjE0IDYsMTQuMTUgNiwxMkM2LDIgMTgsMiAxOCwyQzE2Ljc1LDIuOTQgMTUuNjIsNC4wNSAxNC42Niw1LjI5QzE0LjYyLDUuMzQgMTQuNTksNS4zOSAxNC41Niw1LjQ1QzE0LjMxLDUuOTQgMTQuNSw2LjU0IDE1LDYuNzlNMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJMaWdodG5pbmcgPSBcIk02LDE2QTUsNSAwIDAsMSAxLDExQTUsNSAwIDAsMSA2LDZDNywzLjY1IDkuMywyIDEyLDJDMTUuNDMsMiAxOC4yNCw0LjY2IDE4LjUsOC4wM0wxOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZIMThBMSwxIDAgMCwxIDE3LDE1QTEsMSAwIDAsMSAxOCwxNEgxOUEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE3VjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUEzLDMgMCAwLDAgNiwxNEg3QTEsMSAwIDAsMSA4LDE1QTEsMSAwIDAsMSA3LDE2SDZNMTIsMTFIMTVMMTMsMTVIMTVMMTEuMjUsMjJMMTIsMTdIOS41TDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJMaWdodG5pbmdSYWlueSA9IFwiTTQuNSwxMy41OUM1LDEzLjg3IDUuMTQsMTQuNSA0Ljg3LDE0Ljk2QzQuNTksMTUuNDQgNCwxNS42IDMuNSwxNS4zM1YxNS4zM0MyLDE0LjQ3IDEsMTIuODUgMSwxMUE1LDUgMCAwLDEgNiw2QzcsMy42NSA5LjMsMiAxMiwyQzE1LjQzLDIgMTguMjQsNC42NiAxOC41LDguMDNMMTksOEE0LDQgMCAwLDEgMjMsMTJBNCw0IDAgMCwxIDE5LDE2QTEsMSAwIDAsMSAxOCwxNUExLDEgMCAwLDEgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxMEgxN1Y5QTUsNSAwIDAsMCAxMiw0QzkuNSw0IDcuNDUsNS44MiA3LjA2LDguMTlDNi43Myw4LjA3IDYuMzcsOCA2LDhBMywzIDAgMCwwIDMsMTFDMywxMi4xMSAzLjYsMTMuMDggNC41LDEzLjZWMTMuNTlNOS41LDExSDEyLjVMMTAuNSwxNUgxMi41TDguNzUsMjJMOS41LDE3SDdMOS41LDExTTE3LjUsMTguNjdDMTcuNSwxOS45NiAxNi41LDIxIDE1LjI1LDIxQzE0LDIxIDEzLDE5Ljk2IDEzLDE4LjY3QzEzLDE3LjEyIDE1LjI1LDE0LjUgMTUuMjUsMTQuNUMxNS4yNSwxNC41IDE3LjUsMTcuMTIgMTcuNSwxOC42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyTmlnaHQgPSBcIk0xNy43NSw0LjA5TDE1LjIyLDYuMDNMMTYuMTMsOS4wOUwxMy41LDcuMjhMMTAuODcsOS4wOUwxMS43OCw2LjAzTDkuMjUsNC4wOUwxMi40NCw0TDEzLjUsMUwxNC41Niw0TDE3Ljc1LDQuMDlNMjEuMjUsMTFMMTkuNjEsMTIuMjVMMjAuMiwxNC4yM0wxOC41LDEzLjA2TDE2LjgsMTQuMjNMMTcuMzksMTIuMjVMMTUuNzUsMTFMMTcuODEsMTAuOTVMMTguNSw5TDE5LjE5LDEwLjk1TDIxLjI1LDExTTE4Ljk3LDE1Ljk1QzE5LjgsMTUuODcgMjAuNjksMTcuMDUgMjAuMTYsMTcuOEMxOS44NCwxOC4yNSAxOS41LDE4LjY3IDE5LjA4LDE5LjA3QzE1LjE3LDIzIDguODQsMjMgNC45NCwxOS4wN0MxLjAzLDE1LjE3IDEuMDMsOC44MyA0Ljk0LDQuOTNDNS4zNCw0LjUzIDUuNzYsNC4xNyA2LjIxLDMuODVDNi45NiwzLjMyIDguMTQsNC4yMSA4LjA2LDUuMDRDNy43OSw3LjkgOC43NSwxMC44NyAxMC45NSwxMy4wNkMxMy4xNCwxNS4yNiAxNi4xLDE2LjIyIDE4Ljk3LDE1Ljk1TTE3LjMzLDE3Ljk3QzE0LjUsMTcuODEgMTEuNywxNi42NCA5LjUzLDE0LjVDNy4zNiwxMi4zMSA2LjIsOS41IDYuMDQsNi42OEMzLjIzLDkuODIgMy4zNCwxNC42NCA2LjM1LDE3LjY2QzkuMzcsMjAuNjcgMTQuMTksMjAuNzggMTcuMzMsMTcuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlck5pZ2h0UGFydGx5Q2xvdWR5ID0gXCJNMjIsMTAuMjhDMjEuNzQsMTAuMyAyMS41LDEwLjMxIDIxLjI2LDEwLjMxQzE5LjMyLDEwLjMxIDE3LjM5LDkuNTcgMTUuOTEsOC4wOUMxNC4yNSw2LjQ0IDEzLjUsNC4xOSAxMy43MiwyQzEzLjc3LDEuNTMgMTMuMjIsMSAxMi43MSwxQzEyLjU3LDEgMTIuNDQsMS4wNCAxMi4zMiwxLjEyQzEyLDEuMzYgMTEuNjYsMS42NCAxMS4zNiwxLjk0QzkuMDUsNC4yNCA4LjU1LDcuNjYgOS44NCwxMC40NkM4LjMxLDExLjExIDcuMTMsMTIuNDMgNi42OSwxNC4wNkw2LDE0QTQsNCAwIDAsMCAyLDE4QTQsNCAwIDAsMCA2LDIySDE5QTMsMyAwIDAsMCAyMiwxOUEzLDMgMCAwLDAgMTksMTZDMTguNDIsMTYgMTcuODgsMTYuMTYgMTcuNDIsMTYuNDVMMTcuNSwxNS41QzE3LjUsMTUuMjggMTcuNSwxNS4wNSAxNy40NiwxNC44M0MxOS4xNCwxNC42NyAyMC43NywxMy45NCAyMi4wNiwxMi42NEMyMi4zOCwxMi4zNCAyMi42NCwxMiAyMi44OCwxMS42OEMyMy4yNywxMS4xMyAyMi42NSwxMC4yOCAyMi4wNCwxMC4yOE0xOSwxOEExLDEgMCAwLDEgMjAsMTlBMSwxIDAgMCwxIDE5LDIwSDZBMiwyIDAgMCwxIDQsMThBMiwyIDAgMCwxIDYsMTZIOC41VjE1LjVDOC41LDEzLjk0IDkuNTMsMTIuNjQgMTAuOTQsMTIuMThDMTEuMSwxMi4xMyAxMS4yNiwxMi4wOSAxMS40MywxMi4wNkMxMS42MSwxMi4wMyAxMS44LDEyIDEyLDEyQzEyLjIzLDEyIDEyLjQ1LDEyLjAzIDEyLjY2LDEyLjA3QzEyLjczLDEyLjA4IDEyLjgsMTIuMSAxMi44NywxMi4xM0MxMywxMi4xNiAxMy4xNSwxMi4yIDEzLjI4LDEyLjI1QzEzLjM2LDEyLjI4IDEzLjQ0LDEyLjMyIDEzLjUsMTIuMzZDMTMuNjMsMTIuNDEgMTMuNzQsMTIuNDcgMTMuODQsMTIuNTRDMTMuOTIsMTIuNTkgMTQsMTIuNjQgMTQuMDcsMTIuN0MxNC4xNywxMi43NyAxNC4yNSwxMi44NCAxNC4zNCwxMi45MkMxNC40MSwxMyAxNC41LDEzLjA1IDE0LjU1LDEzLjEyQzE0LjYzLDEzLjIgMTQuNjksMTMuMjkgMTQuNzYsMTMuMzdDMTQuODIsMTMuNDUgMTQuODksMTMuNTMgMTQuOTQsMTMuNjJDMTUsMTMuNzEgMTUuMDQsMTMuOCAxNS4wOSwxMy45QzE1LjE0LDE0IDE1LjIsMTQuMDggMTUuMjQsMTQuMThDMTUuNDEsMTQuNTkgMTUuNSwxNS4wMyAxNS41LDE1LjVWMThNMTYuODMsMTIuODZDMTUuOSwxMS4xNiAxNC4wOCwxMCAxMiwxMEgxMS44N0MxMS40MSw5LjE5IDExLjE0LDguMjYgMTEuMTQsNy4yOUMxMS4xNCw2LjMxIDExLjM5LDUuMzcgMTEuODYsNC41NUMxMi4yMSw2LjQxIDEzLjEyLDguMTQgMTQuNSw5LjVDMTUuODYsMTAuODggMTcuNTgsMTEuNzkgMTkuNDUsMTIuMTRDMTguNjYsMTIuNiAxNy43NiwxMi44NCAxNi44MywxMi44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUGFydGx5Q2xvdWR5ID0gXCJNMTIuNzQsNS40N0MxNS4xLDYuNSAxNi4zNSw5LjAzIDE1LjkyLDExLjQ2QzE3LjE5LDEyLjU2IDE4LDE0LjE5IDE4LDE2VjE2LjE3QzE4LjMxLDE2LjA2IDE4LjY1LDE2IDE5LDE2QTMsMyAwIDAsMSAyMiwxOUEzLDMgMCAwLDEgMTksMjJINkE0LDQgMCAwLDEgMiwxOEE0LDQgMCAwLDEgNiwxNEg2LjI3QzUsMTIuNDUgNC42LDEwLjI0IDUuNSw4LjI2QzYuNzIsNS41IDkuOTcsNC4yNCAxMi43NCw1LjQ3TTExLjkzLDcuM0MxMC4xNiw2LjUgOC4wOSw3LjMxIDcuMzEsOS4wN0M2Ljg1LDEwLjA5IDYuOTMsMTEuMjIgNy40MSwxMi4xM0M4LjUsMTAuODMgMTAuMTYsMTAgMTIsMTBDMTIuNywxMCAxMy4zOCwxMC4xMiAxNCwxMC4zNEMxMy45NCw5LjA2IDEzLjE4LDcuODYgMTEuOTMsNy4zTTEzLjU1LDMuNjRDMTMsMy40IDEyLjQ1LDMuMjMgMTEuODgsMy4xMkwxNC4zNywxLjgyTDE1LjI3LDQuNzFDMTQuNzYsNC4yOSAxNC4xOSwzLjkzIDEzLjU1LDMuNjRNNi4wOSw0LjQ0QzUuNiw0Ljc5IDUuMTcsNS4xOSA0LjgsNS42M0w0LjkxLDIuODJMNy44NywzLjVDNy4yNSwzLjcxIDYuNjUsNC4wMyA2LjA5LDQuNDRNMTgsOS43MUMxNy45MSw5LjEyIDE3Ljc4LDguNTUgMTcuNTksOEwxOS45Nyw5LjVMMTcuOTIsMTEuNzNDMTguMDMsMTEuMDggMTguMDUsMTAuNCAxOCw5LjcxTTMuMDQsMTEuM0MzLjExLDExLjkgMy4yNCwxMi40NyAzLjQzLDEzTDEuMDYsMTEuNUwzLjEsOS4yOEMzLDkuOTMgMi45NywxMC42MSAzLjA0LDExLjNNMTksMThIMTZWMTZBNCw0IDAgMCwwIDEyLDEyQTQsNCAwIDAsMCA4LDE2SDZBMiwyIDAgMCwwIDQsMThBMiwyIDAgMCwwIDYsMjBIMTlBMSwxIDAgMCwwIDIwLDE5QTEsMSAwIDAsMCAxOSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUGFydGx5TGlnaHRuaW5nID0gXCJNMTksMTVDMTguNjUsMTUgMTguMzEsMTUuMDYgMTgsMTUuMTdWMTVDMTgsMTMuMTkgMTcuMTksMTEuNTYgMTUuOTIsMTAuNDZDMTYuMzUsOC4wMyAxNS4xLDUuNSAxMi43NSw0LjQ3QzkuOTcsMy4yNCA2LjcyLDQuNSA1LjUsNy4yNUM0LjYsOS4yNCA1LDExLjQ1IDYuMjcsMTNINkE0LDQgMCAwLDAgMiwxN0E0LDQgMCAwLDAgNiwyMUg3QzcsMjEgOCwyMSA4LDIwQzgsMTkgNywxOSA3LDE5SDZBMiwyIDAgMCwxIDQsMTdBMiwyIDAgMCwxIDYsMTVIOEE0LDQgMCAwLDEgMTIsMTFBNCw0IDAgMCwxIDE2LDE1VjE3SDE5QTEsMSAwIDAsMSAyMCwxOEExLDEgMCAwLDEgMTksMTlIMTdDMTcsMTkgMTYsMTkgMTYsMjBDMTYsMjEgMTcsMjEgMTcsMjFIMTlBMywzIDAgMCwwIDIyLDE4QTMsMyAwIDAsMCAxOSwxNU0xMiw5QzEwLjE2LDkgOC41LDkuODMgNy40MSwxMS4xM0M2LjkzLDEwLjIyIDYuODUsOS4wOSA3LjMxLDguMDdDOC4wOSw2LjMxIDEwLjE2LDUuNSAxMS45Myw2LjNDMTMuMTgsNi44NiAxMy45NCw4LjA2IDE0LDkuMzRDMTMuMzgsOS4xMiAxMi43LDkgMTIsOU0xMy41NSwyLjYzQzEzLDIuNCAxMi40NSwyLjIzIDExLjg4LDIuMTJMMTQuMzcsMC44MkwxNS4yNywzLjcxQzE0Ljc2LDMuMjkgMTQuMTksMi45MyAxMy41NSwyLjYzTTYuMDksMy40NEM1LjYsMy43OSA1LjE3LDQuMTkgNC44LDQuNjNMNC45MSwxLjgyTDcuODcsMi41QzcuMjUsMi43MSA2LjY1LDMuMDMgNi4wOSwzLjQ0TTE4LDguNzFDMTcuOTEsOC4xMiAxNy43OCw3LjU1IDE3LjU5LDdMMTkuOTcsOC41TDE3LjkyLDEwLjczQzE4LjAzLDEwLjA4IDE4LjA1LDkuNCAxOCw4LjcxTTMuMDQsMTAuM0MzLjExLDEwLjkgMy4yNSwxMS40NyAzLjQzLDEyTDEuMDYsMTAuNUwzLjEsOC4yOEMzLDguOTMgMi45Nyw5LjYxIDMuMDQsMTAuM00xMS44LDE1SDE0LjI1TDEyLjYxLDE4LjI3SDE0LjI1TDExLjE4LDI0TDExLjgsMTkuOTFIOS43NVwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJQYXJ0bHlSYWlueSA9IFwiTTEyLjc1LDQuNDdDMTUuMSw1LjUgMTYuMzUsOC4wMyAxNS45MiwxMC40NkMxNy4xOSwxMS41NiAxOCwxMy4xOSAxOCwxNVYxNS4xN0MxOC4zMSwxNS4wNiAxOC42NSwxNSAxOSwxNUEzLDMgMCAwLDEgMjIsMThBMywzIDAgMCwxIDE5LDIxSDE3QzE3LDIxIDE2LDIxIDE2LDIwQzE2LDE5IDE3LDE5IDE3LDE5SDE5QTEsMSAwIDAsMCAyMCwxOEExLDEgMCAwLDAgMTksMTdIMTZWMTVBNCw0IDAgMCwwIDEyLDExQTQsNCAwIDAsMCA4LDE1SDZBMiwyIDAgMCwwIDQsMTdBMiwyIDAgMCwwIDYsMTlIN0M3LDE5IDgsMTkgOCwyMEM4LDIxIDcsMjEgNywyMUg2QTQsNCAwIDAsMSAyLDE3QTQsNCAwIDAsMSA2LDEzSDYuMjdDNSwxMS40NSA0LjYsOS4yNCA1LjUsNy4yNUM2LjcyLDQuNSA5Ljk3LDMuMjQgMTIuNzUsNC40N00xMS45Myw2LjNDMTAuMTYsNS41IDguMDksNi4zMSA3LjMxLDguMDdDNi44NSw5LjA5IDYuOTMsMTAuMjIgNy40MSwxMS4xM0M4LjUsOS44MyAxMC4xNiw5IDEyLDlDMTIuNyw5IDEzLjM4LDkuMTIgMTQsOS4zNEMxMy45NCw4LjA2IDEzLjE4LDYuODYgMTEuOTMsNi4zTTEzLjU1LDIuNjNDMTMsMi40IDEyLjQ1LDIuMjMgMTEuODgsMi4xMkwxNC4zNywwLjgyTDE1LjI3LDMuNzFDMTQuNzYsMy4yOSAxNC4xOSwyLjkzIDEzLjU1LDIuNjNNNi4wOSwzLjQ0QzUuNiwzLjc5IDUuMTcsNC4xOSA0LjgsNC42M0w0LjkxLDEuODJMNy44NywyLjVDNy4yNSwyLjcxIDYuNjUsMy4wMyA2LjA5LDMuNDRNMTgsOC43MUMxNy45MSw4LjEyIDE3Ljc4LDcuNTUgMTcuNTksN0wxOS45Nyw4LjVMMTcuOTIsMTAuNzNDMTguMDMsMTAuMDggMTguMDUsOS40IDE4LDguNzFNMy4wNCwxMC4zQzMuMTEsMTAuOSAzLjI1LDExLjQ3IDMuNDMsMTJMMS4wNiwxMC41TDMuMSw4LjI4QzMsOC45MyAyLjk3LDkuNjEgMy4wNCwxMC4zTTEyLDE4LjkxQzEyLjU5LDE5LjgyIDEzLDIwLjYzIDEzLDIxQTEsMSAwIDAsMSAxMiwyMkExLDEgMCAwLDEgMTEsMjFDMTEsMjAuNjMgMTEuNDEsMTkuODIgMTIsMTguOTFNMTIsMTUuNjJDMTIsMTUuNjIgOSwxOSA5LDIxQTMsMyAwIDAsMCAxMiwyNEEzLDMgMCAwLDAgMTUsMjFDMTUsMTkgMTIsMTUuNjIgMTIsMTUuNjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclBhcnRseVNub3d5ID0gXCJNNiwxOS4wM0EyLDIgMCAwLDEgNCwxNy4wM0M0LDE1LjkyIDQuOSwxNS4wMyA2LDE1LjAzSDhDOCwxMi44MSA5Ljc5LDExLjAzIDEyLDExLjAzQTQsNCAwIDAsMSAxNiwxNS4wM1YxNy4wM0gxOUExLDEgMCAwLDEgMjAsMTguMDNDMjAsMTguNTcgMTkuNTUsMTkuMDMgMTksMTkuMDNIMTdDMTcsMTkuMDMgMTYsMTkuMDMgMTYsMjAuMDNDMTYsMjEuMDMgMTcsMjEuMDMgMTcsMjEuMDNIMTlBMywzIDAgMCwwIDIyLDE4LjAzQzIyLDE2LjM3IDIwLjY2LDE1LjAzIDE5LDE1LjAzQzE4LjY1LDE1LjAzIDE4LjMxLDE1LjA4IDE4LDE1LjE5VjE1LjAzQzE4LDEzLjIxIDE3LjE5LDExLjU4IDE1LjkyLDEwLjVDMTYuMzUsOC4wNSAxNS4xLDUuNTMgMTIuNzUsNC41QzkuOTcsMy4yNyA2LjcyLDQuNTMgNS41LDcuMjhDNC42LDkuMjcgNSwxMS40NyA2LjI3LDEzLjAzSDZDMy43OSwxMy4wMyAyLDE0LjgxIDIsMTcuMDNBNCw0IDAgMCwwIDYsMjEuMDNDNiwyMS4wMyA3LDIxLjAzIDcsMjAuMDNDNywxOS4wMyA2LDE5LjAzIDYsMTkuMDNNMTIsOS4wM0MxMC4xNiw5LjAzIDguNSw5Ljg1IDcuNDEsMTEuMTZDNi45MywxMC4yNSA2Ljg1LDkuMTEgNy4zMSw4LjA5QzguMDksNi4zMyAxMC4xNiw1LjUzIDExLjkzLDYuMzJDMTMuMTgsNi44OSAxMy45NCw4LjA4IDE0LDkuMzdDMTMuMzgsOS4xNSAxMi43LDkuMDMgMTIsOS4wM00xMy41NSwyLjY2QzEzLDIuNDIgMTIuNDUsMi4yNiAxMS44OCwyLjE1TDE0LjM3LDAuODRMMTUuMjcsMy43M0MxNC43NiwzLjMxIDE0LjE5LDIuOTUgMTMuNTUsMi42Nk02LjA5LDMuNDZDNS42LDMuODEgNS4xNyw0LjIxIDQuOCw0LjY2TDQuOTEsMS44NEw3Ljg3LDIuNTNDNy4yNSwyLjczIDYuNjUsMy4wNSA2LjA5LDMuNDZNMTgsOC43M0MxNy45MSw4LjE1IDE3Ljc4LDcuNTcgMTcuNTksNy4wM0wxOS45Nyw4LjUzTDE3LjkyLDEwLjc2QzE4LjAzLDEwLjEgMTguMDUsOS40MiAxOCw4LjczTTMuMDQsMTAuMzJDMy4xMSwxMC45MiAzLjI1LDExLjUgMy40MywxMi4wM0wxLjA2LDEwLjUzTDMuMSw4LjNDMyw4Ljk1IDIuOTcsOS42NCAzLjA0LDEwLjMyTTguMDMsMjEuNDVDOC4xMywyMS44NCA4LjUzLDIyLjA2IDguOTEsMjEuOTZMMTAuNSwyMS41NEwxMC4wNiwyMy4xMUM5Ljk2LDIzLjUgMTAuMTksMjMuOSAxMC41NywyNEMxMC45NSwyNC4xIDExLjM1LDIzLjg3IDExLjQ1LDIzLjVMMTEuODcsMjEuOTFMMTMuMDMsMjMuMDdDMTMuMywyMy4zNSAxMy43NywyMy4zNSAxNC4wNSwyMy4wN0MxNC4zMywyMi43OSAxNC4zMywyMi4zMiAxNC4wNSwyMi4wNUwxMi44OSwyMC44OEwxNC40NywyMC40N0MxNC44NSwyMC4zNyAxNS4wOCwxOS45NyAxNSwxOS41OUMxNC44OCwxOS4yMSAxNC41LDE5IDE0LjA5LDE5LjA4TDEyLjUsMTkuNUwxMi45NCwxNy45M0MxMy4wNCwxNy41NCAxMi44MiwxNy4xNSAxMi40MywxNy4wNUMxMi4wNSwxNi45NSAxMS42NiwxNy4xNyAxMS41NSwxNy41NkwxMS4xNCwxOS4xNEwxMCwxNy45N0M5LjcsMTcuNjkgOS4yMywxNy42OSA4Ljk1LDE3Ljk3QzguNjgsMTguMjcgOC42OCwxOC43MiA4Ljk1LDE5TDEwLjExLDIwLjE2TDguNTQsMjAuNTdDOC4xNSwyMC42OCA3LjkzLDIxLjA3IDguMDMsMjEuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclBhcnRseVNub3d5UmFpbnkgPSBcIk0xMy41NSwyLjY2QzEzLDIuNDIgMTIuNDUsMi4yNiAxMS44OCwyLjE1TDE0LjM3LDAuODRMMTUuMjcsMy43M0MxNC43NiwzLjMxIDE0LjE5LDIuOTUgMTMuNTUsMi42Nk02LjA5LDMuNDZDNS42LDMuODEgNS4xNyw0LjIxIDQuOCw0LjY2TDQuOTEsMS44NEw3Ljg3LDIuNTNDNy4yNSwyLjczIDYuNjUsMy4wNSA2LjA5LDMuNDZNMTgsOC43M0MxNy45MSw4LjE1IDE3Ljc4LDcuNTcgMTcuNTksNy4wM0wxOS45Nyw4LjUzTDE3LjkyLDEwLjc2QzE4LjAzLDEwLjEgMTguMDUsOS40MiAxOCw4LjczTTMuMDQsMTAuMzJDMy4xMSwxMC45MiAzLjI1LDExLjUgMy40MywxMi4wM0wxLjA2LDEwLjUzTDMuMSw4LjNDMyw4Ljk1IDIuOTcsOS42NCAzLjA0LDEwLjMyTTE2LjY4LDIyLjIxQzE2LjY4LDIzLjIgMTUuOTEsMjQgMTQuOTUsMjRDMTQsMjQgMTMuMjMsMjMuMiAxMy4yMywyMi4yMUMxMy4yMywyMS4wMyAxNC45NSwxOS4wMyAxNC45NSwxOS4wM0MxNC45NSwxOS4wMyAxNi42OCwyMS4wMyAxNi42OCwyMi4yMU02LjAzLDIxLjQ1QzUuOTMsMjEuMDcgNi4xNSwyMC42OCA2LjU0LDIwLjU4TDguMTMsMjAuMTVMNi45NiwxOUM2LjY4LDE4LjcyIDYuNjgsMTguMjcgNi45NiwxOEM3LjIzLDE3LjcgNy43LDE3LjcgOCwxOEw5LjE0LDE5LjE0TDkuNTUsMTcuNTZDOS42NSwxNy4xNyAxMC4wNSwxNi45NCAxMC40MywxNy4wNUMxMC44MiwxNy4xNSAxMS4wNSwxNy41NSAxMC45MywxNy45M0wxMC41LDE5LjVMMTIuMSwxOS4xQzEyLjUsMTkgMTIuODgsMTkuMjEgMTMsMTkuNkMxMy4wOCwxOS45NyAxMi44NiwyMC4zNyAxMi40NywyMC40N0wxMC44OSwyMC44OUwxMi4wNSwyMi4wNUMxMi4zMywyMi4zMiAxMi4zMywyMi43OSAxMi4wNSwyMy4wN0MxMS43NywyMy4zNSAxMS4zMSwyMy4zNSAxMS4wMywyMy4wN0w5Ljg3LDIxLjlMOS40NSwyMy41QzkuMzUsMjMuODggOC45NSwyNC4xIDguNTcsMjRDOC4xOCwyMy45IDcuOTcsMjMuNSA4LjA2LDIzLjEyTDguNSwyMS41NUw2LjkxLDIxLjk2QzYuNSwyMi4wNiA2LjEzLDIxLjg0IDYuMDMsMjEuNDVNMTksMTUuMDNDMTguNjUsMTUuMDMgMTguMzEsMTUuMDggMTgsMTUuMTlWMTUuMDNDMTgsMTMuMjEgMTcuMTksMTEuNTggMTUuOTIsMTAuNUMxNi4zNSw4LjA1IDE1LjEsNS41MyAxMi43NSw0LjVDOS45NywzLjI3IDYuNzIsNC41MyA1LjUsNy4yOEM0LjYsOS4yNyA1LDExLjQ3IDYuMjcsMTMuMDNINkMzLjc5LDEzLjAzIDIsMTQuODEgMiwxNy4wM0MyLDE4LjE3IDIuNSwxOS4yIDMuMjcsMTkuOTNWMTkuOTNDMy4yNywxOS45MyAzLjk3LDIwLjY0IDQuNjgsMTkuOTNDNS4zOSwxOS4yMiA0LjY4LDE4LjUgNC42OCwxOC41QzQuMjcsMTguMTUgNCwxNy42MiA0LDE3LjAzQzQsMTUuOTIgNC45LDE1LjAzIDYsMTUuMDNIOEM4LDEyLjgxIDkuNzksMTEuMDMgMTIsMTEuMDNBNCw0IDAgMCwxIDE2LDE1LjAzVjE3LjAzSDE5QTEsMSAwIDAsMSAyMCwxOC4wM0MyMCwxOC41NyAxOS41NSwxOS4wMyAxOSwxOS4wM0gxOEMxOCwxOS4wMyAxNywxOS4wMyAxNywyMC4wM0MxNywyMS4wMyAxOCwyMS4wMyAxOCwyMS4wM0gxOUEzLDMgMCAwLDAgMjIsMTguMDNDMjIsMTYuMzcgMjAuNjYsMTUuMDMgMTksMTUuMDNNMTIsOS4wM0MxMC4xNiw5LjAzIDguNSw5Ljg1IDcuNDEsMTEuMTZDNi45MywxMC4yNSA2Ljg1LDkuMTEgNy4zMSw4LjA5QzguMDksNi4zMyAxMC4xNiw1LjUzIDExLjkzLDYuMzJDMTMuMTgsNi44OSAxMy45NCw4LjA4IDE0LDkuMzdDMTMuMzgsOS4xNSAxMi43LDkuMDMgMTIsOS4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUG91cmluZyA9IFwiTTksMTJDOS41MywxMi4xNCA5Ljg1LDEyLjY5IDkuNzEsMTMuMjJMOC40MSwxOC4wNUM4LjI3LDE4LjU5IDcuNzIsMTguOSA3LjE5LDE4Ljc2QzYuNjUsMTguNjIgNi4zNCwxOC4wNyA2LjUsMTcuNTRMNy43OCwxMi43MUM3LjkyLDEyLjE3IDguNDcsMTEuODYgOSwxMk0xMywxMkMxMy41MywxMi4xNCAxMy44NSwxMi42OSAxMy43MSwxMy4yMkwxMS42NCwyMC45NUMxMS41LDIxLjUgMTAuOTUsMjEuOCAxMC40MSwyMS42NkM5Ljg4LDIxLjUgOS41NiwyMC45NyA5LjcsMjAuNDNMMTEuNzgsMTIuNzFDMTEuOTIsMTIuMTcgMTIuNDcsMTEuODYgMTMsMTJNMTcsMTJDMTcuNTMsMTIuMTQgMTcuODUsMTIuNjkgMTcuNzEsMTMuMjJMMTYuNDEsMTguMDVDMTYuMjcsMTguNTkgMTUuNzIsMTguOSAxNS4xOSwxOC43NkMxNC42NSwxOC42MiAxNC4zNCwxOC4wNyAxNC41LDE3LjU0TDE1Ljc4LDEyLjcxQzE1LjkyLDEyLjE3IDE2LjQ3LDExLjg2IDE3LDEyTTE3LDEwVjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUMzLDEyLjExIDMuNiwxMy4wOCA0LjUsMTMuNlYxMy41OUM1LDEzLjg3IDUuMTQsMTQuNSA0Ljg3LDE0Ljk2QzQuNTksMTUuNDMgNCwxNS42IDMuNSwxNS4zMlYxNS4zM0MyLDE0LjQ3IDEsMTIuODUgMSwxMUE1LDUgMCAwLDEgNiw2QzcsMy42NSA5LjMsMiAxMiwyQzE1LjQzLDIgMTguMjQsNC42NiAxOC41LDguMDNMMTksOEE0LDQgMCAwLDEgMjMsMTJDMjMsMTMuNSAyMi4yLDE0Ljc3IDIxLDE1LjQ2VjE1LjQ2QzIwLjUsMTUuNzMgMTkuOTEsMTUuNTcgMTkuNjMsMTUuMDlDMTkuMzYsMTQuNjEgMTkuNSwxNCAyMCwxMy43MlYxMy43M0MyMC42LDEzLjM5IDIxLDEyLjc0IDIxLDEyQTIsMiAwIDAsMCAxOSwxMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUmFpbnkgPSBcIk02LDE0LjAzQTEsMSAwIDAsMSA3LDE1LjAzQzcsMTUuNTggNi41NSwxNi4wMyA2LDE2LjAzQzMuMjQsMTYuMDMgMSwxMy43OSAxLDExLjAzQzEsOC4yNyAzLjI0LDYuMDMgNiw2LjAzQzcsMy42OCA5LjMsMi4wMyAxMiwyLjAzQzE1LjQzLDIuMDMgMTguMjQsNC42OSAxOC41LDguMDZMMTksOC4wM0E0LDQgMCAwLDEgMjMsMTIuMDNDMjMsMTQuMjMgMjEuMjEsMTYuMDMgMTksMTYuMDNIMThDMTcuNDUsMTYuMDMgMTcsMTUuNTggMTcsMTUuMDNDMTcsMTQuNDcgMTcuNDUsMTQuMDMgMTgsMTQuMDNIMTlBMiwyIDAgMCwwIDIxLDEyLjAzQTIsMiAwIDAsMCAxOSwxMC4wM0gxN1Y5LjAzQzE3LDYuMjcgMTQuNzYsNC4wMyAxMiw0LjAzQzkuNSw0LjAzIDcuNDUsNS44NCA3LjA2LDguMjFDNi43Myw4LjA5IDYuMzcsOC4wMyA2LDguMDNBMywzIDAgMCwwIDMsMTEuMDNBMywzIDAgMCwwIDYsMTQuMDNNMTIsMTQuMTVDMTIuMTgsMTQuMzkgMTIuMzcsMTQuNjYgMTIuNTYsMTQuOTRDMTMsMTUuNTYgMTQsMTcuMDMgMTQsMThDMTQsMTkuMTEgMTMuMSwyMCAxMiwyMEEyLDIgMCAwLDEgMTAsMThDMTAsMTcuMDMgMTEsMTUuNTYgMTEuNDQsMTQuOTRDMTEuNjMsMTQuNjYgMTEuODIsMTQuNCAxMiwxNC4xNU0xMiwxMS4wM0wxMS41LDExLjU5QzExLjUsMTEuNTkgMTAuNjUsMTIuNTUgOS43OSwxMy44MUM4LjkzLDE1LjA2IDgsMTYuNTYgOCwxOEE0LDQgMCAwLDAgMTIsMjJBNCw0IDAgMCwwIDE2LDE4QzE2LDE2LjU2IDE1LjA3LDE1LjA2IDE0LjIxLDEzLjgxQzEzLjM1LDEyLjU1IDEyLjUsMTEuNTkgMTIuNSwxMS41OVwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTbm93eSA9IFwiTTYsMTRBMSwxIDAgMCwxIDcsMTVBMSwxIDAgMCwxIDYsMTZBNSw1IDAgMCwxIDEsMTFBNSw1IDAgMCwxIDYsNkM3LDMuNjUgOS4zLDIgMTIsMkMxNS40MywyIDE4LjI0LDQuNjYgMTguNSw4LjAzTDE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkgxOEExLDEgMCAwLDEgMTcsMTVBMSwxIDAgMCwxIDE4LDE0SDE5QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBIMTdWOUE1LDUgMCAwLDAgMTIsNEM5LjUsNCA3LjQ1LDUuODIgNy4wNiw4LjE5QzYuNzMsOC4wNyA2LjM3LDggNiw4QTMsMyAwIDAsMCAzLDExQTMsMyAwIDAsMCA2LDE0TTcuODgsMTguMDdMMTAuMDcsMTcuNUw4LjQ2LDE1Ljg4QzguMDcsMTUuNSA4LjA3LDE0Ljg2IDguNDYsMTQuNDZDOC44NSwxNC4wNyA5LjUsMTQuMDcgOS44OCwxNC40NkwxMS41LDE2LjA3TDEyLjA3LDEzLjg4QzEyLjIxLDEzLjM0IDEyLjc2LDEzLjAzIDEzLjI5LDEzLjE3QzEzLjgzLDEzLjMxIDE0LjE0LDEzLjg2IDE0LDE0LjRMMTMuNDEsMTYuNTlMMTUuNiwxNkMxNi4xNCwxNS44NiAxNi42OSwxNi4xNyAxNi44MywxNi43MUMxNi45NywxNy4yNCAxNi42NiwxNy43OSAxNi4xMiwxNy45M0wxMy45MywxOC41TDE1LjU0LDIwLjEyQzE1LjkzLDIwLjUgMTUuOTMsMjEuMTUgMTUuNTQsMjEuNTRDMTUuMTUsMjEuOTMgMTQuNSwyMS45MyAxNC4xMiwyMS41NEwxMi41LDE5LjkzTDExLjkzLDIyLjEyQzExLjc5LDIyLjY2IDExLjI0LDIyLjk3IDEwLjcxLDIyLjgzQzEwLjE3LDIyLjY5IDkuODYsMjIuMTQgMTAsMjEuNkwxMC41OSwxOS40MUw4LjQsMjBDNy44NiwyMC4xNCA3LjMxLDE5LjgzIDcuMTcsMTkuMjlDNy4wMywxOC43NiA3LjM0LDE4LjIxIDcuODgsMTguMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclNub3d5SGVhdnkgPSBcIk00LDE2LjM2QzMuODYsMTUuODIgNC4xOCwxNS4yNSA0LjczLDE1LjExTDcsMTQuNUw1LjMzLDEyLjg2QzQuOTMsMTIuNDYgNC45MywxMS44MSA1LjMzLDExLjRDNS43MywxMSA2LjQsMTEgNi43OSwxMS40TDguNDUsMTMuMDVMOS4wNCwxMC44QzkuMTgsMTAuMjQgOS43NSw5LjkyIDEwLjI5LDEwLjA3QzEwLjg1LDEwLjIxIDExLjE3LDEwLjc4IDExLDExLjMzTDEwLjQyLDEzLjU4TDEyLjY3LDEzQzEzLjIyLDEyLjgzIDEzLjc5LDEzLjE1IDEzLjkzLDEzLjcxQzE0LjA4LDE0LjI1IDEzLjc2LDE0LjgyIDEzLjIsMTQuOTZMMTAuOTUsMTUuNTVMMTIuNiwxNy4yMUMxMywxNy42IDEzLDE4LjI3IDEyLjYsMTguNjdDMTIuMiwxOS4wNyAxMS41NCwxOS4wNyAxMS4xNSwxOC42N0w5LjUsMTdMOC44OSwxOS4yN0M4Ljc1LDE5LjgzIDguMTgsMjAuMTQgNy42NCwyMEM3LjA4LDE5Ljg2IDYuNzcsMTkuMjkgNi45MSwxOC43NEw3LjUsMTYuNUw1LjI2LDE3LjA5QzQuNzEsMTcuMjMgNC4xNCwxNi45MiA0LDE2LjM2TTEsMTBBNSw1IDAgMCwxIDYsNUM3LDIuNjUgOS4zLDEgMTIsMUMxNS40MywxIDE4LjI0LDMuNjYgMTguNSw3LjAzTDE5LDdBNCw0IDAgMCwxIDIzLDExQTQsNCAwIDAsMSAxOSwxNUExLDEgMCAwLDEgMTgsMTRBMSwxIDAgMCwxIDE5LDEzQTIsMiAwIDAsMCAyMSwxMUEyLDIgMCAwLDAgMTksOUgxN1Y4QTUsNSAwIDAsMCAxMiwzQzkuNSwzIDcuNDUsNC44MiA3LjA2LDcuMTlDNi43Myw3LjA3IDYuMzcsNyA2LDdBMywzIDAgMCwwIDMsMTBDMywxMC44NSAzLjM1LDExLjYxIDMuOTEsMTIuMTZDNC4yNywxMi41NSA0LjI2LDEzLjE2IDMuODgsMTMuNTRDMy41LDEzLjkzIDIuODUsMTMuOTMgMi40NywxMy41NEMxLjU2LDEyLjYzIDEsMTEuMzggMSwxME0xNC4wMywyMC40M0MxNC4xMywyMC44MiAxNC41LDIxLjA0IDE0LjkxLDIwLjk0TDE2LjUsMjAuNUwxNi4wNiwyMi4wOUMxNS45NiwyMi41IDE2LjE4LDIyLjg3IDE2LjU3LDIyLjk3QzE2Ljk1LDIzLjA4IDE3LjM1LDIyLjg1IDE3LjQ1LDIyLjQ2TDE3Ljg2LDIwLjg5TDE5LjAzLDIyLjA1QzE5LjMsMjIuMzMgMTkuNzcsMjIuMzMgMjAuMDUsMjIuMDVDMjAuMzMsMjEuNzcgMjAuMzMsMjEuMyAyMC4wNSwyMS4wM0wxOC44OSwxOS44NkwyMC40NiwxOS40NUMyMC44NSwxOS4zNSAyMS4wOCwxOC45NSAyMC45NywxOC41N0MyMC44NywxOC4xOCAyMC41LDE3Ljk2IDIwLjA5LDE4LjA2TDE4LjUsMTguNUwxOC45NCwxNi45MUMxOS4wNCwxNi41IDE4LjgyLDE2LjEzIDE4LjQzLDE2LjAzQzE4LjA1LDE1LjkyIDE3LjY1LDE2LjE1IDE3LjU1LDE2LjU0TDE3LjE0LDE4LjExTDE1Ljk3LDE2Ljk1QzE1LjcsMTYuNjcgMTUuMjMsMTYuNjcgMTQuOTUsMTYuOTVDMTQuNjcsMTcuMjQgMTQuNjcsMTcuNyAxNC45NSwxNy45N0wxNi4xMSwxOS4xNEwxNC41NCwxOS41NUMxNC4xNSwxOS42NSAxMy45MiwyMC4wNSAxNC4wMywyMC40M1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyU25vd3lSYWlueSA9IFwiTTE4LjUsMTguNjdDMTguNSwxOS45NiAxNy41LDIxIDE2LjI1LDIxQzE1LDIxIDE0LDE5Ljk2IDE0LDE4LjY3QzE0LDE3LjEyIDE2LjI1LDE0LjUgMTYuMjUsMTQuNUMxNi4yNSwxNC41IDE4LjUsMTcuMTIgMTguNSwxOC42N000LDE3LjM2QzMuODYsMTYuODIgNC4xOCwxNi4yNSA0LjczLDE2LjExTDcsMTUuNUw1LjMzLDEzLjg2QzQuOTMsMTMuNDYgNC45MywxMi44MSA1LjMzLDEyLjRDNS43MywxMiA2LjQsMTIgNi43OSwxMi40TDguNDUsMTQuMDVMOS4wNCwxMS44QzkuMTgsMTEuMjQgOS43NSwxMC45MiAxMC4yOSwxMS4wN0MxMC44NSwxMS4yMSAxMS4xNywxMS43OCAxMSwxMi4zM0wxMC40MiwxNC41OEwxMi42NywxNEMxMy4yMiwxMy44MyAxMy43OSwxNC4xNSAxMy45MywxNC43MUMxNC4wOCwxNS4yNSAxMy43NiwxNS44MiAxMy4yLDE1Ljk2TDEwLjk1LDE2LjU1TDEyLjYsMTguMjFDMTMsMTguNiAxMywxOS4yNyAxMi42LDE5LjY3QzEyLjIsMjAuMDcgMTEuNTQsMjAuMDcgMTEuMTUsMTkuNjdMOS41LDE4TDguODksMjAuMjdDOC43NSwyMC44MyA4LjE4LDIxLjE0IDcuNjQsMjFDNy4wOCwyMC44NiA2Ljc3LDIwLjI5IDYuOTEsMTkuNzRMNy41LDE3LjVMNS4yNiwxOC4wOUM0LjcxLDE4LjIzIDQuMTQsMTcuOTIgNCwxNy4zNk0xLDExQTUsNSAwIDAsMSA2LDZDNywzLjY1IDkuMywyIDEyLDJDMTUuNDMsMiAxOC4yNCw0LjY2IDE4LjUsOC4wM0wxOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBMSwxIDAgMCwxIDE4LDE1QTEsMSAwIDAsMSAxOSwxNEEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE3VjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUMzLDExLjg1IDMuMzUsMTIuNjEgMy45MSwxMy4xNkM0LjI3LDEzLjU1IDQuMjYsMTQuMTYgMy44OCwxNC41NEMzLjUsMTQuOTMgMi44NSwxNC45MyAyLjQ3LDE0LjU0QzEuNTYsMTMuNjMgMSwxMi4zOCAxLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTdW5ueSA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMy4zNiwxN0w1LjEyLDEzLjIzQzUuMjYsMTQgNS41MywxNC43OCA1Ljk1LDE1LjVDNi4zNywxNi4yNCA2LjkxLDE2Ljg2IDcuNSwxNy4zN0wzLjM2LDE3TTIwLjY1LDdMMTguODgsMTAuNzlDMTguNzQsMTAgMTguNDcsOS4yMyAxOC4wNSw4LjVDMTcuNjMsNy43OCAxNy4xLDcuMTUgMTYuNSw2LjY0TDIwLjY1LDdNMjAuNjQsMTdMMTYuNSwxNy4zNkMxNy4wOSwxNi44NSAxNy42MiwxNi4yMiAxOC4wNCwxNS41QzE4LjQ2LDE0Ljc3IDE4LjczLDE0IDE4Ljg3LDEzLjIxTDIwLjY0LDE3TTEyLDIyTDkuNTksMTguNTZDMTAuMzMsMTguODMgMTEuMTQsMTkgMTIsMTlDMTIuODIsMTkgMTMuNjMsMTguODMgMTQuMzcsMTguNTZMMTIsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bm55QWxlcnQgPSBcIk0xMiw3QTUsNSAwIDAsMCA3LDEyQTUsNSAwIDAsMCAxMiwxN0E1LDUgMCAwLDAgMTcsMTJBNSw1IDAgMCwwIDEyLDdNMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNU0xMiwyTDE0LjM5LDUuNDJDMTMuNjUsNS4xNSAxMi44NCw1IDEyLDVDMTEuMTYsNSAxMC4zNSw1LjE1IDkuNjEsNS40MkwxMiwyTTMuMzQsN0w3LjUsNi42NUM2LjksNy4xNiA2LjM2LDcuNzggNS45NCw4LjVDNS41LDkuMjQgNS4yNSwxMCA1LjExLDEwLjc5TDMuMzQsN00zLjM2LDE3TDUuMTIsMTMuMjNDNS4yNiwxNCA1LjUzLDE0Ljc4IDUuOTUsMTUuNUM2LjM3LDE2LjI0IDYuOTEsMTYuODYgNy41LDE3LjM3TDMuMzYsMTdNMTIsMjJMOS41OSwxOC41NkMxMC4zMywxOC44MyAxMS4xNCwxOSAxMiwxOUMxMi44MiwxOSAxMy42MywxOC44MyAxNC4zNywxOC41Nk0xOSwxM1Y3SDIxVjEzSDE5TTE5LDE3VjE1SDIxVjE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bm55T2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0Ljk3IDYuODZMMy4zNCA3TDUuMTEgMTAuNzlDNS4yNSAxMCA1LjUgOS4yNCA1Ljk0IDguNUM2IDguMzYgNi4xMyA4LjI0IDYuMjIgOC4xMUw3LjY2IDkuNTVDNy4yNSAxMC4yNyA3IDExLjExIDcgMTJDNyAxNC43NiA5LjI0IDE3IDEyIDE3QzEyLjkgMTcgMTMuNzMgMTYuNzUgMTQuNDUgMTYuMzRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMTVDMTAuMzQgMTUgOSAxMy42NiA5IDEyQzkgMTEuNjcgOS4wNyAxMS4zNiA5LjE3IDExLjA2TDEyLjk0IDE0LjgzQzEyLjY0IDE0LjkzIDEyLjMzIDE1IDEyIDE1TTE4LjA1IDguNUMxNy42MyA3Ljc4IDE3LjEgNy4xNSAxNi41IDYuNjRMMjAuNjUgN0wxOC44OCAxMC43OUMxOC43NCAxMCAxOC40NyA5LjIzIDE4LjA1IDguNU0xMiA3QzE0Ljc2IDcgMTcgOS4yNCAxNyAxMkMxNyAxMi41NCAxNi44OSAxMy4wNSAxNi43NCAxMy41NEwxNSAxMS43OEMxNC44NyAxMC4zIDEzLjcgOS4xMyAxMi4yMiA5TDEwLjQ3IDcuMjdDMTAuOTUgNy4xMSAxMS40NiA3IDEyIDdNMTIgNUMxMS4xNiA1IDEwLjM1IDUuMTUgOS42MSA1LjQyTDEyIDJMMTQuMzkgNS40MkMxMy42NSA1LjE1IDEyLjg0IDUgMTIgNU0xOC44NyAxMy4yMUwyMC42NCAxN0wyMC4yNCAxNy4wNEwxOC4yNSAxNS4wNUMxOC41NCAxNC40NSAxOC43NiAxMy44NCAxOC44NyAxMy4yMU0xMiAxOUMxMi44MiAxOSAxMy42MyAxOC44MyAxNC4zNyAxOC41NkwxMiAyMkw5LjU5IDE4LjU2QzEwLjMzIDE4LjgzIDExLjE0IDE5IDEyIDE5TTUuOTUgMTUuNUM2LjM3IDE2LjI0IDYuOTEgMTYuODYgNy41IDE3LjM3TDMuMzYgMTdMNS4xMiAxMy4yM0M1LjI2IDE0IDUuNTMgMTQuNzggNS45NSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTdW5zZXQgPSBcIk0zLDEySDdBNSw1IDAgMCwxIDEyLDdBNSw1IDAgMCwxIDE3LDEySDIxQTEsMSAwIDAsMSAyMiwxM0ExLDEgMCAwLDEgMjEsMTRIM0ExLDEgMCAwLDEgMiwxM0ExLDEgMCAwLDEgMywxMk01LDE2SDE5QTEsMSAwIDAsMSAyMCwxN0ExLDEgMCAwLDEgMTksMThINUExLDEgMCAwLDEgNCwxN0ExLDEgMCAwLDEgNSwxNk0xNywyMEExLDEgMCAwLDEgMTgsMjFBMSwxIDAgMCwxIDE3LDIySDdBMSwxIDAgMCwxIDYsMjFBMSwxIDAgMCwxIDcsMjBIMTdNMTUsMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksMTJIMTVNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMjAuNjUsN0wxOC44OCwxMC43OUMxOC43NCwxMCAxOC40Nyw5LjIzIDE4LjA1LDguNUMxNy42Myw3Ljc4IDE3LjEsNy4xNSAxNi41LDYuNjRMMjAuNjUsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyU3Vuc2V0RG93biA9IFwiTTMsMTJIN0E1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJIMjFBMSwxIDAgMCwxIDIyLDEzQTEsMSAwIDAsMSAyMSwxNEgzQTEsMSAwIDAsMSAyLDEzQTEsMSAwIDAsMSAzLDEyTTE1LDEyQTMsMyAwIDAsMCAxMiw5QTMsMyAwIDAsMCA5LDEySDE1TTEyLDJMMTQuMzksNS40MkMxMy42NSw1LjE1IDEyLjg0LDUgMTIsNUMxMS4xNiw1IDEwLjM1LDUuMTUgOS42MSw1LjQyTDEyLDJNMy4zNCw3TDcuNSw2LjY1QzYuOSw3LjE2IDYuMzYsNy43OCA1Ljk0LDguNUM1LjUsOS4yNCA1LjI1LDEwIDUuMTEsMTAuNzlMMy4zNCw3TTIwLjY1LDdMMTguODgsMTAuNzlDMTguNzQsMTAgMTguNDcsOS4yMyAxOC4wNSw4LjVDMTcuNjMsNy43OCAxNy4xLDcuMTUgMTYuNSw2LjY0TDIwLjY1LDdNMTIuNzEsMjAuNzFMMTUuODIsMTcuNkMxNi4yMSwxNy4yMSAxNi4yMSwxNi41NyAxNS44MiwxNi4xOEMxNS40MywxNS43OSAxNC44LDE1Ljc5IDE0LjQxLDE2LjE4TDEyLDE4LjU5TDkuNTksMTYuMThDOS4yLDE1Ljc5IDguNTcsMTUuNzkgOC4xOCwxNi4xOEM3Ljc5LDE2LjU3IDcuNzksMTcuMjEgOC4xOCwxNy42TDExLjI5LDIwLjcxQzExLjUsMjAuOSAxMS43NCwyMSAxMiwyMUMxMi4yNiwyMSAxMi41LDIwLjkgMTIuNzEsMjAuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bnNldFVwID0gXCJNMywxMkg3QTUsNSAwIDAsMSAxMiw3QTUsNSAwIDAsMSAxNywxMkgyMUExLDEgMCAwLDEgMjIsMTNBMSwxIDAgMCwxIDIxLDE0SDNBMSwxIDAgMCwxIDIsMTNBMSwxIDAgMCwxIDMsMTJNMTUsMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksMTJIMTVNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMjAuNjUsN0wxOC44OCwxMC43OUMxOC43NCwxMCAxOC40Nyw5LjIzIDE4LjA1LDguNUMxNy42Myw3Ljc4IDE3LjEsNy4xNSAxNi41LDYuNjRMMjAuNjUsN00xMi43MSwxNi4zTDE1LjgyLDE5LjQxQzE2LjIxLDE5LjggMTYuMjEsMjAuNDMgMTUuODIsMjAuODJDMTUuNDMsMjEuMjEgMTQuOCwyMS4yMSAxNC40MSwyMC44MkwxMiwxOC40MUw5LjU5LDIwLjgyQzkuMiwyMS4yMSA4LjU3LDIxLjIxIDguMTgsMjAuODJDNy43OSwyMC40MyA3Ljc5LDE5LjggOC4xOCwxOS40MUwxMS4yOSwxNi4zQzExLjUsMTYuMSAxMS43NCwxNiAxMiwxNkMxMi4yNiwxNiAxMi41LDE2LjEgMTIuNzEsMTYuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyVG9ybmFkbyA9IFwiTTIxLDVIM0ExLDEgMCAwLDEgMiw0QTEsMSAwIDAsMSAzLDNIMjFBMSwxIDAgMCwxIDIyLDRBMSwxIDAgMCwxIDIxLDVNMjAsOEExLDEgMCAwLDAgMTksN0g1QTEsMSAwIDAsMCA0LDhBMSwxIDAgMCwwIDUsOUgxOUExLDEgMCAwLDAgMjAsOE0yMSwxMkExLDEgMCAwLDAgMjAsMTFIMTBBMSwxIDAgMCwwIDksMTJBMSwxIDAgMCwwIDEwLDEzSDIwQTEsMSAwIDAsMCAyMSwxMk0xNiwxNkExLDEgMCAwLDAgMTUsMTVIOUExLDEgMCAwLDAgOCwxNkExLDEgMCAwLDAgOSwxN0gxNUExLDEgMCAwLDAgMTYsMTZNMTMsMjBBMSwxIDAgMCwwIDEyLDE5SDEwQTEsMSAwIDAsMCA5LDIwQTEsMSAwIDAsMCAxMCwyMUgxMkExLDEgMCAwLDAgMTMsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlcldpbmR5ID0gXCJNNCwxMEExLDEgMCAwLDEgMyw5QTEsMSAwIDAsMSA0LDhIMTJBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRDMTEuNDUsNCAxMC45NSw0LjIyIDEwLjU5LDQuNTlDMTAuMiw1IDkuNTYsNSA5LjE3LDQuNTlDOC43OCw0LjIgOC43OCwzLjU2IDkuMTcsMy4xN0M5LjksMi40NSAxMC45LDIgMTIsMkE0LDQgMCAwLDEgMTYsNkE0LDQgMCAwLDEgMTIsMTBINE0xOSwxMkExLDEgMCAwLDAgMjAsMTFBMSwxIDAgMCwwIDE5LDEwQzE4LjcyLDEwIDE4LjQ3LDEwLjExIDE4LjI5LDEwLjI5QzE3LjksMTAuNjggMTcuMjcsMTAuNjggMTYuODgsMTAuMjlDMTYuNSw5LjkgMTYuNSw5LjI3IDE2Ljg4LDguODhDMTcuNDIsOC4zNCAxOC4xNyw4IDE5LDhBMywzIDAgMCwxIDIyLDExQTMsMyAwIDAsMSAxOSwxNEg1QTEsMSAwIDAsMSA0LDEzQTEsMSAwIDAsMSA1LDEySDE5TTE4LDE4SDRBMSwxIDAgMCwxIDMsMTdBMSwxIDAgMCwxIDQsMTZIMThBMywzIDAgMCwxIDIxLDE5QTMsMyAwIDAsMSAxOCwyMkMxNy4xNywyMiAxNi40MiwyMS42NiAxNS44OCwyMS4xMkMxNS41LDIwLjczIDE1LjUsMjAuMSAxNS44OCwxOS43MUMxNi4yNywxOS4zMiAxNi45LDE5LjMyIDE3LjI5LDE5LjcxQzE3LjQ3LDE5Ljg5IDE3LjcyLDIwIDE4LDIwQTEsMSAwIDAsMCAxOSwxOUExLDEgMCAwLDAgMTgsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlcldpbmR5VmFyaWFudCA9IFwiTTYsNkw2LjY5LDYuMDZDNy4zMiwzLjcyIDkuNDYsMiAxMiwyQTUuNSw1LjUgMCAwLDEgMTcuNSw3LjVMMTcuNDIsOC40NUMxNy44OCw4LjE2IDE4LjQyLDggMTksOEEzLDMgMCAwLDEgMjIsMTFBMywzIDAgMCwxIDE5LDE0SDZBNCw0IDAgMCwxIDIsMTBBNCw0IDAgMCwxIDYsNk02LDhBMiwyIDAgMCwwIDQsMTBBMiwyIDAgMCwwIDYsMTJIMTlBMSwxIDAgMCwwIDIwLDExQTEsMSAwIDAsMCAxOSwxMEgxNS41VjcuNUEzLjUsMy41IDAgMCwwIDEyLDRBMy41LDMuNSAwIDAsMCA4LjUsNy41VjhINk0xOCwxOEg0QTEsMSAwIDAsMSAzLDE3QTEsMSAwIDAsMSA0LDE2SDE4QTMsMyAwIDAsMSAyMSwxOUEzLDMgMCAwLDEgMTgsMjJDMTcuMTcsMjIgMTYuNDIsMjEuNjYgMTUuODgsMjEuMTJDMTUuNSwyMC43MyAxNS41LDIwLjEgMTUuODgsMTkuNzFDMTYuMjcsMTkuMzIgMTYuOSwxOS4zMiAxNy4yOSwxOS43MUMxNy40NywxOS44OSAxNy43MiwyMCAxOCwyMEExLDEgMCAwLDAgMTksMTlBMSwxIDAgMCwwIDE4LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYiA9IFwiTTE2LjM2LDE0QzE2LjQ0LDEzLjM0IDE2LjUsMTIuNjggMTYuNSwxMkMxNi41LDExLjMyIDE2LjQ0LDEwLjY2IDE2LjM2LDEwSDE5Ljc0QzE5LjksMTAuNjQgMjAsMTEuMzEgMjAsMTJDMjAsMTIuNjkgMTkuOSwxMy4zNiAxOS43NCwxNE0xNC41OSwxOS41NkMxNS4xOSwxOC40NSAxNS42NSwxNy4yNSAxNS45NywxNkgxOC45MkMxNy45NiwxNy42NSAxNi40MywxOC45MyAxNC41OSwxOS41Nk0xNC4zNCwxNEg5LjY2QzkuNTYsMTMuMzQgOS41LDEyLjY4IDkuNSwxMkM5LjUsMTEuMzIgOS41NiwxMC42NSA5LjY2LDEwSDE0LjM0QzE0LjQzLDEwLjY1IDE0LjUsMTEuMzIgMTQuNSwxMkMxNC41LDEyLjY4IDE0LjQzLDEzLjM0IDE0LjM0LDE0TTEyLDE5Ljk2QzExLjE3LDE4Ljc2IDEwLjUsMTcuNDMgMTAuMDksMTZIMTMuOTFDMTMuNSwxNy40MyAxMi44MywxOC43NiAxMiwxOS45Nk04LDhINS4wOEM2LjAzLDYuMzQgNy41Nyw1LjA2IDkuNCw0LjQ0QzguOCw1LjU1IDguMzUsNi43NSA4LDhNNS4wOCwxNkg4QzguMzUsMTcuMjUgOC44LDE4LjQ1IDkuNCwxOS41NkM3LjU3LDE4LjkzIDYuMDMsMTcuNjUgNS4wOCwxNk00LjI2LDE0QzQuMSwxMy4zNiA0LDEyLjY5IDQsMTJDNCwxMS4zMSA0LjEsMTAuNjQgNC4yNiwxMEg3LjY0QzcuNTYsMTAuNjYgNy41LDExLjMyIDcuNSwxMkM3LjUsMTIuNjggNy41NiwxMy4zNCA3LjY0LDE0TTEyLDQuMDNDMTIuODMsNS4yMyAxMy41LDYuNTcgMTMuOTEsOEgxMC4wOUMxMC41LDYuNTcgMTEuMTcsNS4yMyAxMiw0LjAzTTE4LjkyLDhIMTUuOTdDMTUuNjUsNi43NSAxNS4xOSw1LjU1IDE0LjU5LDQuNDRDMTYuNDMsNS4wNyAxNy45Niw2LjM0IDE4LjkyLDhNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYkJveCA9IFwiTTguOTUgMTMuNEg2LjU4QTUuNSA1LjUgMCAwIDEgNi41OCAxMC42SDguOTVBMTEuNTYgMTEuNTYgMCAwIDAgOC44NSAxMkExMS41NiAxMS41NiAwIDAgMCA4Ljk1IDEzLjRNNy4xNiA5LjJIOS4yQTEyLjA2IDEyLjA2IDAgMCAxIDEwLjE4IDYuNzFBNS41NSA1LjU1IDAgMCAwIDcuMTYgOS4yTTE2Ljg0IDkuMkE1LjU5IDUuNTkgMCAwIDAgMTMuODEgNi43MUExMC45NSAxMC45NSAwIDAgMSAxNC43OCA5LjJNMTIgMTcuNTdBOS41IDkuNSAwIDAgMCAxMy4zNCAxNC44SDEwLjY2QTkuNSA5LjUgMCAwIDAgMTIgMTcuNTdNMTIgNi40MkE5LjUzIDkuNTMgMCAwIDAgMTAuNjYgOS4ySDEzLjM0QTkuNTMgOS41MyAwIDAgMCAxMiA2LjQyTTcuMTYgMTQuOEE1LjYxIDUuNjEgMCAwIDAgMTAuMTggMTcuMjlBMTIuMDYgMTIuMDYgMCAwIDEgOS4yIDE0LjhNMjEgNVYxOUEyIDIgMCAwIDEgMTkgMjFINUEyIDIgMCAwIDEgMyAxOVY1QTIgMiAwIDAgMSA1IDNIMTlBMiAyIDAgMCAxIDIxIDVNMTkgMTJBNyA3IDAgMSAwIDEyIDE5QTcgNyAwIDAgMCAxOSAxMk0xNS4xNSAxMkExMS41NiAxMS41NiAwIDAgMSAxNS4wNSAxMy40SDE3LjQyQTUuNSA1LjUgMCAwIDAgMTcuNDIgMTAuNkgxNS4wNUExMS41NiAxMS41NiAwIDAgMSAxNS4xNSAxMk0xMy44MSAxNy4yOUE1LjYyIDUuNjIgMCAwIDAgMTYuODQgMTQuOEgxNC43OEExMC45NSAxMC45NSAwIDAgMSAxMy44MSAxNy4yOU0xMC4zNiAxMC42QTguODEgOC44MSAwIDAgMCAxMC4zNiAxMy40SDEzLjY0QTEwLjMgMTAuMyAwIDAgMCAxMy43NSAxMkExMC4yMSAxMC4yMSAwIDAgMCAxMy42NCAxMC42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYkNsb2NrID0gXCJNMTUgMTIuNVYxNi41TDE4IDE4LjVMMTguNzUgMTcuMjVMMTYuNSAxNS43NVYxMi41SDE1TTIyIDEyLjM5QzIyIDEyLjI2IDIyIDEyLjEzIDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkM2LjQ3IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzEyLjEzIDIyIDEyLjI0IDIyIDEyLjM3IDIxLjk3QzEzLjQzIDIyLjYyIDE0LjY3IDIzIDE2IDIzQzE5Ljg2IDIzIDIzIDE5Ljg2IDIzIDE2QzIzIDE0LjY4IDIyLjYyIDEzLjQ0IDIyIDEyLjM5TTE5Ljc2IDEwLjExQzE5LjcgMTAuMDcgMTkuNjUgMTAuMDQgMTkuNTkgMTBIMTkuNzRDMTkuNzUgMTAuMDMgMTkuNzUgMTAuMDcgMTkuNzYgMTAuMTFNMTguOTIgOEgxNS45N0MxNS42NSA2Ljc1IDE1LjE5IDUuNTUgMTQuNTkgNC40NEMxNi40MyA1LjA3IDE3Ljk2IDYuMzQgMTguOTIgOE0xMiA0LjAzQzEyLjgzIDUuMjMgMTMuNSA2LjU3IDEzLjkxIDhIMTAuMDlDMTAuNSA2LjU3IDExLjE3IDUuMjMgMTIgNC4wM005LjY2IDEwSDEyLjQxQzExLjE2IDEwLjc1IDEwLjE1IDExLjg4IDkuNTcgMTMuMjRDOS41MyAxMi44MyA5LjUgMTIuNDIgOS41IDEyQzkuNSAxMS4zMiA5LjU2IDEwLjY1IDkuNjYgMTBNOS40IDQuNDRDOC44IDUuNTUgOC4zNSA2Ljc1IDggOEg1LjA4QzYuMDMgNi4zNCA3LjU3IDUuMDYgOS40IDQuNDRNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEyUzQuMSAxMC42NCA0LjI2IDEwSDcuNjRDNy41NiAxMC42NiA3LjUgMTEuMzIgNy41IDEyUzcuNTYgMTMuMzQgNy42NCAxNEg0LjI2TTUuMDggMTZIOEM4LjM1IDE3LjI1IDguOCAxOC40NSA5LjQgMTkuNTZDNy41NyAxOC45MyA2LjAzIDE3LjY1IDUuMDggMTZNMTYgMjFDMTMuMjQgMjEgMTEgMTguNzYgMTEgMTZTMTMuMjQgMTEgMTYgMTEgMjEgMTMuMjQgMjEgMTYgMTguNzYgMjEgMTYgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2ViY2FtID0gXCJNMTIsMkE3LDcgMCAwLDEgMTksOUE3LDcgMCAwLDEgMTIsMTZBNyw3IDAgMCwxIDUsOUE3LDcgMCAwLDEgMTIsMk0xMiw0QTUsNSAwIDAsMCA3LDlBNSw1IDAgMCwwIDEyLDE0QTUsNSAwIDAsMCAxNyw5QTUsNSAwIDAsMCAxMiw0TTEyLDZBMywzIDAgMCwxIDE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZNNiwyMkEyLDIgMCAwLDEgNCwyMEM0LDE5LjYyIDQuMSwxOS4yNyA0LjI5LDE4Ljk3TDYuMTEsMTUuODFDNy42OSwxNy4xNyA5Ljc1LDE4IDEyLDE4QzE0LjI1LDE4IDE2LjMxLDE3LjE3IDE3Ljg5LDE1LjgxTDE5LjcxLDE4Ljk3QzE5LjksMTkuMjcgMjAsMTkuNjIgMjAsMjBBMiwyIDAgMCwxIDE4LDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2ViY2FtT2ZmID0gXCJNMTIgNkMxMy42NiA2IDE1IDcuMzQgMTUgOUMxNSA5Ljc4IDE0LjcgMTAuNSAxNC4yMSAxMUwxMCA2Ljc5QzEwLjUgNi4zIDExLjIyIDYgMTIgNk0xMiA0QzE0Ljc2IDQgMTcgNi4yNCAxNyA5QzE3IDEwLjMzIDE2LjQ3IDExLjUzIDE1LjYyIDEyLjQyTDE3LjA0IDEzLjg0QzE4LjI1IDEyLjU5IDE5IDEwLjg4IDE5IDlDMTkgNS4xMyAxNS44NyAyIDEyIDJDMTAuMTIgMiA4LjQxIDIuNzUgNy4xNiAzLjk2TDguNTggNS4zOEM5LjQ3IDQuNTMgMTAuNjcgNCAxMiA0TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjQ2IDIxLjM1QzE5LjEgMjEuNzUgMTguNTggMjIgMTggMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMEM0IDE5LjYyIDQuMSAxOS4yNyA0LjI5IDE4Ljk3TDYuMTEgMTUuODFDNy42OSAxNy4xNyA5Ljc1IDE4IDEyIDE4QzEzLjIxIDE4IDE0LjM3IDE3Ljc1IDE1LjQzIDE3LjMyTDEzLjg1IDE1Ljc0QzEzLjI2IDE1LjkxIDEyLjY0IDE2IDEyIDE2QzguMTMgMTYgNSAxMi44NyA1IDlDNSA4LjM2IDUuMDkgNy43NCA1LjI2IDcuMTVMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xMi4xIDE0TDcgOC45QzcgOC45MyA3IDguOTcgNyA5QzcgMTEuNzYgOS4yNCAxNCAxMiAxNEMxMi4wMyAxNCAxMi4wNyAxNCAxMi4xIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYmhvb2sgPSBcIk0xMC40NiwxOUM5LDIxLjA3IDYuMTUsMjEuNTkgNC4wOSwyMC4xNUMyLjA0LDE4LjcxIDEuNTYsMTUuODQgMywxMy43NUMzLjg3LDEyLjUgNS4yMSwxMS44MyA2LjU4LDExLjc3TDYuNjMsMTMuMkM1LjcyLDEzLjI3IDQuODQsMTMuNzQgNC4yNywxNC41NkMzLjI3LDE2IDMuNTgsMTcuOTQgNC45NSwxOC45MUM2LjMzLDE5Ljg3IDguMjYsMTkuNSA5LjI2LDE4LjA3QzkuNTcsMTcuNjIgOS43NSwxNy4xMyA5LjgyLDE2LjYzVjE1LjYyTDE1LjQsMTUuNThMMTUuNDcsMTUuNDdDMTYsMTQuNTUgMTcuMTUsMTQuMjMgMTguMDUsMTQuNzVDMTguOTUsMTUuMjcgMTkuMjYsMTYuNDMgMTguNzMsMTcuMzVDMTguMiwxOC4yNiAxNy4wNCwxOC41OCAxNi4xNCwxOC4wNkMxNS43MywxNy44MyAxNS40NCwxNy40NiAxNS4zMSwxNy4wNEwxMS4yNCwxNy4wNkMxMS4xMywxNy43MyAxMC44NywxOC4zOCAxMC40NiwxOU0xNy43NCwxMS44NkMyMC4yNywxMi4xNyAyMi4wNywxNC40NCAyMS43NiwxNi45M0MyMS40NSwxOS40MyAxOS4xNSwyMS4yIDE2LjYyLDIwLjg5QzE1LjEzLDIwLjcxIDEzLjksMTkuODYgMTMuMTksMTguNjhMMTQuNDMsMTcuOTZDMTQuOTIsMTguNzMgMTUuNzUsMTkuMjggMTYuNzUsMTkuNDFDMTguNSwxOS42MiAyMC4wNSwxOC40MyAyMC4yNiwxNi43NkMyMC40NywxNS4wOSAxOS4yMywxMy41NiAxNy41LDEzLjM1QzE2Ljk2LDEzLjI5IDE2LjQ0LDEzLjM2IDE1Ljk3LDEzLjUzTDE1LjEyLDEzLjk3TDEyLjU0LDkuMkgxMi4zMkMxMS4yNiw5LjE2IDEwLjQ0LDguMjkgMTAuNDcsNy4yNUMxMC41LDYuMjEgMTEuNCw1LjQgMTIuNDUsNS40NEMxMy41LDUuNSAxNC4zMyw2LjM1IDE0LjMsNy4zOUMxNC4yOCw3LjgzIDE0LjExLDguMjMgMTMuODQsOC41NEwxNS43NCwxMi4wNUMxNi4zNiwxMS44NSAxNy4wNCwxMS43OCAxNy43NCwxMS44Nk04LjI1LDkuMTRDNy4yNSw2Ljc5IDguMzEsNC4xIDEwLjYyLDMuMTJDMTIuOTQsMi4xNCAxNS42MiwzLjI1IDE2LjYyLDUuNkMxNy4yMSw2Ljk3IDE3LjA5LDguNDcgMTYuNDIsOS42N0wxNS4xOCw4Ljk1QzE1LjYsOC4xNCAxNS42Nyw3LjE1IDE1LjI3LDYuMjJDMTQuNTksNC42MiAxMi43OCwzLjg1IDExLjIzLDQuNUM5LjY3LDUuMTYgOC45Nyw3IDkuNjUsOC42QzkuOTMsOS4yNiAxMC40LDkuNzcgMTAuOTcsMTAuMTFMMTEuMzYsMTAuMzJMOC4yOSwxNS4zMUM4LjMyLDE1LjM2IDguMzYsMTUuNDIgOC4zOSwxNS41QzguODgsMTYuNDEgOC41NCwxNy41NiA3LjYyLDE4LjA1QzYuNzEsMTguNTQgNS41NiwxOC4xOCA1LjA2LDE3LjI0QzQuNTcsMTYuMzEgNC45MSwxNS4xNiA1LjgzLDE0LjY3QzYuMjIsMTQuNDYgNi42NSwxNC40MSA3LjA2LDE0LjVMOS4zNywxMC43M0M4LjksMTAuMyA4LjUsOS43NiA4LjI1LDkuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VicGFjayA9IFwiTTIwLjQ1IDE3LjM5TDEyLjM2IDIxLjk3VjE4LjRMMTcuNCAxNS42M0wyMC40NSAxNy4zOU0yMSAxNi44OVY3LjMxTDE4LjA0IDlWMTUuMThMMjEgMTYuODlNMy41NSAxNy4zOUwxMS42NCAyMS45NlYxOC40TDYuNiAxNS42M0wzLjU1IDE3LjM5TTMgMTYuODlWNy4zMUw1Ljk2IDlWMTUuMThMMyAxNi44OU0zLjM1IDYuNjlMMTEuNjQgMlY1LjQ1TDYuMzMgOC4zN0w2LjI4IDguMzlMMy4zNSA2LjY5TTIwLjY1IDYuNjlMMTIuMzYgMlY1LjQ1TDE3LjY3IDguMzhMMTcuNzEgOC40TDIwLjY1IDYuNjlNMTEuNjQgMTcuNTlMNi42NyAxNC44NVY5LjQ0TDExLjY0IDEyLjMxVjE3LjU5TTEyLjM2IDE3LjU5TDE3LjMzIDE0Ljg2VjkuNDRMMTIuMzYgMTIuMzFWMTcuNTlNNyA4LjgxTDEyIDYuMDZMMTcgOC44MUwxMiAxMS42OUw3IDguODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VicnRjID0gXCJNMTIgMkMxNC40NCAyIDE2LjUgMy43NSAxNi45MSA2LjA3TDE3Ljc1IDZDMjAuNSA2IDIyLjc1IDguMjQgMjIuNzUgMTFDMjIuNzUgMTIuODkgMjEuNyAxNC41MyAyMC4xNiAxNS4zOEMyMC41NCAxNi4wOSAyMC43NSAxNi44OSAyMC43NSAxNy43NUMyMC43NSAyMC41IDE4LjUgMjIuNzUgMTUuNzUgMjIuNzVDMTQuMjYgMjIuNzUgMTIuOTIgMjIuMSAxMiAyMS4wNkMxMS4wOCAyMi4xIDkuNzQgMjIuNzUgOC4yNSAyMi43NUM1LjUgMjIuNzUgMy4yNSAyMC41IDMuMjUgMTcuNzVDMy4yNSAxNi44OSAzLjQ3IDE2LjA5IDMuODQgMTUuMzhDMi4zIDE0LjUzIDEuMjUgMTIuODkgMS4yNSAxMUMxLjI1IDguMjQgMy41IDYgNi4yNSA2TDcuMDkgNi4wN0M3LjUgMy43NSA5LjU2IDIgMTIgMk02Ljc1IDIwLjI1TDEzLjY2IDE3SDE3QzE3LjU1IDE3IDE4IDE2LjU1IDE4IDE2VjlDMTggOC40NSAxNy41NSA4IDE3IDhIN0M2LjQ1IDggNiA4LjQ1IDYgOVYxNkM2IDE2LjU1IDYuNDUgMTcgNyAxN0g3Ljc3TDYuNzUgMjAuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VjaGF0ID0gXCJNOS41LDRDNS4zNiw0IDIsNi42OSAyLDEwQzIsMTEuODkgMy4wOCwxMy41NiA0Ljc4LDE0LjY2TDQsMTdMNi41LDE1LjVDNy4zOSwxNS44MSA4LjM3LDE2IDkuNDEsMTZDOS4xNSwxNS4zNyA5LDE0LjcgOSwxNEM5LDEwLjY5IDEyLjEzLDggMTYsOEMxNi4xOSw4IDE2LjM4LDggMTYuNTYsOC4wM0MxNS41NCw1LjY5IDEyLjc4LDQgOS41LDRNNi41LDYuNUExLDEgMCAwLDEgNy41LDcuNUExLDEgMCAwLDEgNi41LDguNUExLDEgMCAwLDEgNS41LDcuNUExLDEgMCAwLDEgNi41LDYuNU0xMS41LDYuNUExLDEgMCAwLDEgMTIuNSw3LjVBMSwxIDAgMCwxIDExLjUsOC41QTEsMSAwIDAsMSAxMC41LDcuNUExLDEgMCAwLDEgMTEuNSw2LjVNMTYsOUMxMi42OSw5IDEwLDExLjI0IDEwLDE0QzEwLDE2Ljc2IDEyLjY5LDE5IDE2LDE5QzE2LjY3LDE5IDE3LjMxLDE4LjkyIDE3LjkxLDE4Ljc1TDIwLDIwTDE5LjM4LDE4LjEzQzIwLjk1LDE3LjIyIDIyLDE1LjcxIDIyLDE0QzIyLDExLjI0IDE5LjMxLDkgMTYsOU0xNCwxMS41QTEsMSAwIDAsMSAxNSwxMi41QTEsMSAwIDAsMSAxNCwxMy41QTEsMSAwIDAsMSAxMywxMi41QTEsMSAwIDAsMSAxNCwxMS41TTE4LDExLjVBMSwxIDAgMCwxIDE5LDEyLjVBMSwxIDAgMCwxIDE4LDEzLjVBMSwxIDAgMCwxIDE3LDEyLjVBMSwxIDAgMCwxIDE4LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VpZ2h0ID0gXCJNMTIsM0E0LDQgMCAwLDEgMTYsN0MxNiw3LjczIDE1LjgxLDguNDEgMTUuNDYsOUgxOEMxOC45NSw5IDE5Ljc1LDkuNjcgMTkuOTUsMTAuNTZDMjEuOTYsMTguNTcgMjIsMTguNzggMjIsMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlDMiwxOC43OCAyLjA0LDE4LjU3IDQuMDUsMTAuNTZDNC4yNSw5LjY3IDUuMDUsOSA2LDlIOC41NEM4LjE5LDguNDEgOCw3LjczIDgsN0E0LDQgMCAwLDEgMTIsM00xMiw1QTIsMiAwIDAsMCAxMCw3QTIsMiAwIDAsMCAxMiw5QTIsMiAwIDAsMCAxNCw3QTIsMiAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlaWdodEdyYW0gPSBcIk0xOS45NSwxMC41NkMxOS43NSw5LjY3IDE4Ljk1LDkgMTgsOUgxNS40NkMxNS44MSw4LjQxIDE2LDcuNzMgMTYsN0E0LDQgMCAwLDAgMTIsM0E0LDQgMCAwLDAgOCw3QzgsNy43MyA4LjE5LDguNDEgOC41NCw5SDZDNS4wNSw5IDQuMjUsOS42NyA0LjA1LDEwLjU2QzIuMDQsMTguNTcgMiwxOC43OCAyLDE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOUMyMiwxOC43OCAyMS45NiwxOC41NyAxOS45NSwxMC41Nk0xMiw1QTIsMiAwIDAsMSAxNCw3QTIsMiAwIDAsMSAxMiw5QTIsMiAwIDAsMSAxMCw3QTIsMiAwIDAsMSAxMiw1TTE1LDEzSDExVjE3SDEzVjE0SDE1VjE5SDExQzkuODksMTkgOSwxOC4xMSA5LDE3VjEzQzksMTEuODkgOS44OSwxMSAxMSwxMUgxNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWlnaHRLaWxvZ3JhbSA9IFwiTTEyLDNBNCw0IDAgMCwxIDE2LDdDMTYsNy43MyAxNS44MSw4LjQxIDE1LjQ2LDlIMThDMTguOTUsOSAxOS43NSw5LjY3IDE5Ljk1LDEwLjU2QzIxLjk2LDE4LjU3IDIyLDE4Ljc4IDIyLDE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5QzIsMTguNzggMi4wNCwxOC41NyA0LjA1LDEwLjU2QzQuMjUsOS42NyA1LjA1LDkgNiw5SDguNTRDOC4xOSw4LjQxIDgsNy43MyA4LDdBNCw0IDAgMCwxIDEyLDNNMTIsNUEyLDIgMCAwLDAgMTAsN0EyLDIgMCAwLDAgMTIsOUEyLDIgMCAwLDAgMTQsN0EyLDIgMCAwLDAgMTIsNU02LDExVjE5SDhWMTYuNUw5LDE3LjVWMTlIMTFWMTdMOSwxNUwxMSwxM1YxMUg5VjEyLjVMOCwxMy41VjExSDZNMTUsMTFDMTMuODksMTEgMTMsMTEuODkgMTMsMTNWMTdDMTMsMTguMTEgMTMuODksMTkgMTUsMTlIMThWMTRIMTZWMTdIMTVWMTNIMThWMTFIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VpZ2h0TGlmdGVyID0gXCJNMTIgNUMxMC44OSA1IDEwIDUuODkgMTAgN1MxMC44OSA5IDEyIDkgMTQgOC4xMSAxNCA3IDEzLjExIDUgMTIgNU0yMiAxVjZIMjBWNEg0VjZIMlYxSDRWM0gyMFYxSDIyTTE1IDExLjI2VjIzSDEzVjE4SDExVjIzSDlWMTEuMjZDNi45MyAxMC4xNyA1LjUgOCA1LjUgNS41TDUuNSA1SDcuNUw3LjUgNS41QzcuNSA4IDkuNSAxMCAxMiAxMFMxNi41IDggMTYuNSA1LjVMMTYuNSA1SDE4LjVMMTguNSA1LjVDMTguNSA4IDE3LjA3IDEwLjE3IDE1IDExLjI2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlaWdodFBvdW5kID0gXCJNMTIsM0E0LDQgMCAwLDEgMTYsN0MxNiw3LjczIDE1LjgxLDguNDEgMTUuNDYsOUgxOEMxOC45NSw5IDE5Ljc1LDkuNjcgMTkuOTUsMTAuNTZDMjEuOTYsMTguNTcgMjIsMTguNzggMjIsMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlDMiwxOC43OCAyLjA0LDE4LjU3IDQuMDUsMTAuNTZDNC4yNSw5LjY3IDUuMDUsOSA2LDlIOC41NEM4LjE5LDguNDEgOCw3LjczIDgsN0E0LDQgMCAwLDEgMTIsM00xMiw1QTIsMiAwIDAsMCAxMCw3QTIsMiAwIDAsMCAxMiw5QTIsMiAwIDAsMCAxNCw3QTIsMiAwIDAsMCAxMiw1TTYsMTFWMTlIMTFWMTdIOFYxMUg2TTEzLDExVjE5SDE2QzE3LjExLDE5IDE4LDE4LjExIDE4LDE3VjE2LjVDMTgsMTUuOTMgMTcuNzUsMTUuMzggMTcuMzIsMTVDMTcuNzUsMTQuNjIgMTgsMTQuMDcgMTgsMTMuNVYxM0MxOCwxMS44OSAxNy4xMSwxMSAxNiwxMUgxM00xNSwxM0gxNlYxNEgxNVYxM00xNSwxNkgxNlYxN0gxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGF0c2FwcCA9IFwiTTEyLjA0IDJDNi41OCAyIDIuMTMgNi40NSAyLjEzIDExLjkxQzIuMTMgMTMuNjYgMi41OSAxNS4zNiAzLjQ1IDE2Ljg2TDIuMDUgMjJMNy4zIDIwLjYyQzguNzUgMjEuNDEgMTAuMzggMjEuODMgMTIuMDQgMjEuODNDMTcuNSAyMS44MyAyMS45NSAxNy4zOCAyMS45NSAxMS45MkMyMS45NSA5LjI3IDIwLjkyIDYuNzggMTkuMDUgNC45MUMxNy4xOCAzLjAzIDE0LjY5IDIgMTIuMDQgMk0xMi4wNSAzLjY3QzE0LjI1IDMuNjcgMTYuMzEgNC41MyAxNy44NyA2LjA5QzE5LjQyIDcuNjUgMjAuMjggOS43MiAyMC4yOCAxMS45MkMyMC4yOCAxNi40NiAxNi41OCAyMC4xNSAxMi4wNCAyMC4xNUMxMC41NiAyMC4xNSA5LjExIDE5Ljc2IDcuODUgMTlMNy41NSAxOC44M0w0LjQzIDE5LjY1TDUuMjYgMTYuNjFMNS4wNiAxNi4yOUM0LjI0IDE1IDMuOCAxMy40NyAzLjggMTEuOTFDMy44MSA3LjM3IDcuNSAzLjY3IDEyLjA1IDMuNjdNOC41MyA3LjMzQzguMzcgNy4zMyA4LjEgNy4zOSA3Ljg3IDcuNjRDNy42NSA3Ljg5IDcgOC41IDcgOS43MUM3IDEwLjkzIDcuODkgMTIuMSA4IDEyLjI3QzguMTQgMTIuNDQgOS43NiAxNC45NCAxMi4yNSAxNkMxMi44NCAxNi4yNyAxMy4zIDE2LjQyIDEzLjY2IDE2LjUzQzE0LjI1IDE2LjcyIDE0Ljc5IDE2LjY5IDE1LjIyIDE2LjYzQzE1LjcgMTYuNTYgMTYuNjggMTYuMDMgMTYuODkgMTUuNDVDMTcuMSAxNC44NyAxNy4xIDE0LjM4IDE3LjA0IDE0LjI3QzE2Ljk3IDE0LjE3IDE2LjgxIDE0LjExIDE2LjU2IDE0QzE2LjMxIDEzLjg2IDE1LjA5IDEzLjI2IDE0Ljg3IDEzLjE4QzE0LjY0IDEzLjEgMTQuNSAxMy4wNiAxNC4zMSAxMy4zQzE0LjE1IDEzLjU1IDEzLjY3IDE0LjExIDEzLjUzIDE0LjI3QzEzLjM4IDE0LjQ0IDEzLjI0IDE0LjQ2IDEzIDE0LjM0QzEyLjc0IDE0LjIxIDExLjk0IDEzLjk1IDExIDEzLjExQzEwLjI2IDEyLjQ1IDkuNzcgMTEuNjQgOS42MiAxMS4zOUM5LjUgMTEuMTUgOS42MSAxMSA5LjczIDEwLjg5QzkuODQgMTAuNzggMTAgMTAuNiAxMC4xIDEwLjQ1QzEwLjIzIDEwLjMxIDEwLjI3IDEwLjIgMTAuMzUgMTAuMDRDMTAuNDMgOS44NyAxMC4zOSA5LjczIDEwLjMzIDkuNjFDMTAuMjcgOS41IDkuNzcgOC4yNiA5LjU2IDcuNzdDOS4zNiA3LjI5IDkuMTYgNy4zNSA5IDcuMzRDOC44NiA3LjM0IDguNyA3LjMzIDguNTMgNy4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXaGVlbEJhcnJvdyA9IFwiTTE4IDE1LjVDMTguODMgMTUuNSAxOS41IDE2LjE3IDE5LjUgMTdTMTguODMgMTguNSAxOCAxOC41IDE2LjUgMTcuODMgMTYuNSAxNyAxNy4xNyAxNS41IDE4IDE1LjVNMTggMTRDMTYuMzQgMTQgMTUgMTUuMzQgMTUgMTdTMTYuMzQgMjAgMTggMjBDMTkuNjYgMjAgMjEgMTguNjYgMjEgMTdTMTkuNjYgMTQgMTggMTRNNyA4TDUgNUgyVjdINS4xM0w4IDExLjNWMjBIMTBMMTIuNTcgMTVIMTQuNTVDMTUuMjUgMTMuODEgMTYuNSAxMyAxOCAxM0MxOC44OCAxMyAxOS42OSAxMy4yOSAyMC4zNSAxMy43OEwyMiA4SDdNOS4zOSAxOUg5VjEyLjhMOS44NyAxNC4xMUMxMC4yMyAxNC42NCAxMC44MiAxNC45NiAxMS40NSAxNUw5LjM5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdoZWVsY2hhaXJBY2Nlc3NpYmlsaXR5ID0gXCJNMTguNCwxMS4yTDE0LjMsMTEuNEwxNi42LDguOEMxNi44LDguNSAxNi45LDggMTYuOCw3LjVDMTYuNyw3LjIgMTYuNiw2LjkgMTYuMyw2LjdMMTAuOSwzLjVDMTAuNSwzLjIgOS45LDMuMyA5LjUsMy42TDYuOCw2LjFDNi4zLDYuNiA2LjIsNy4zIDYuNyw3LjhDNy4xLDguMyA3LjksOC4zIDguNCw3LjlMMTAuNCw2LjFMMTIuMyw3LjJMOC4xLDExLjVDOCwxMS42IDgsMTEuNyA3LjksMTEuN0M3LjQsMTEuOSA2LjksMTIuMSA2LjUsMTIuNEw4LDEzLjlDOC41LDEzLjcgOSwxMy41IDkuNSwxMy41QzExLjQsMTMuNSAxMywxNS4xIDEzLDE3QzEzLDE3LjYgMTIuOSwxOC4xIDEyLjYsMTguNUwxNC4xLDIwQzE0LjcsMTkuMSAxNSwxOC4xIDE1LDE3QzE1LDE1LjggMTQuNiwxNC42IDEzLjksMTMuN0wxNy4yLDEzLjRMMTcsMTguMkMxNi45LDE4LjkgMTcuNCwxOS40IDE4LjEsMTkuNUgxOC4yQzE4LjgsMTkuNSAxOS4zLDE5IDE5LjQsMTguNEwxOS42LDEyLjVDMTkuNiwxMi4yIDE5LjUsMTEuOCAxOS4zLDExLjZDMTksMTEuMyAxOC43LDExLjIgMTguNCwxMS4yTTE4LDUuNUEyLDIgMCAwLDAgMjAsMy41QTIsMiAwIDAsMCAxOCwxLjVBMiwyIDAgMCwwIDE2LDMuNUEyLDIgMCAwLDAgMTgsNS41TTEyLjUsMjEuNkMxMS42LDIyLjIgMTAuNiwyMi41IDkuNSwyMi41QzYuNSwyMi41IDQsMjAgNCwxN0M0LDE1LjkgNC4zLDE0LjkgNC45LDE0TDYuNCwxNS41QzYuMiwxNiA2LDE2LjUgNiwxN0M2LDE4LjkgNy42LDIwLjUgOS41LDIwLjVDMTAuMSwyMC41IDEwLjYsMjAuNCAxMSwyMC4xTDEyLjUsMjEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGlzdGxlID0gXCJNOC41LDlBNi41LDYuNSAwIDAsMCAyLDE1LjVBNi41LDYuNSAwIDAsMCA4LjUsMjJBNi41LDYuNSAwIDAsMCAxNSwxNS41VjEzLjkxTDIyLDEyVjlIMTFWMTFIOVY5SDguNU0xMSwyVjdIOVYySDExTTYuMzUsNy4yOEM1LjY4LDcuNDQgNS4wNCw3LjY4IDQuNDMsOEwyLjE0LDQuODhMMy43NiwzLjdMNi4zNSw3LjI4TTE3Ljg2LDQuODhMMTYuMzIsN0gxMy44NUwxNi4yNCwzLjdMMTcuODYsNC44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGlzdGxlT3V0bGluZSA9IFwiTTMuNzYgMy43TDIuMTQgNC44OEw0LjQzIDhBOC4yMyA4LjIzIDAgMCAxIDYuMzUgNy4yOE0xMSA5VjExSDE4VjExLjI5TDEzIDEyLjcxVjE1LjVBNC41IDQuNSAwIDEgMSA4LjUgMTFIOVY5SDguNUE2LjUgNi41IDAgMSAwIDE1IDE1LjVWMTMuOTFMMjIgMTJWOU0xNi4yNCAzLjdMMTMuODUgN0gxNi4zMkwxNy44NiA0Ljg4TTkgMlY3SDExVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlQXV0byA9IFwiTTEwLjMsMTZMOS42LDE0SDYuNEw1LjcsMTZIMy44TDcsN0g5TDEyLjIsMTZNMjIsN0wyMC44LDEzLjI5TDE5LjMsN0gxNy43TDE2LjIxLDEzLjI5TDE1LDdIMTQuMjRDMTIuNzcsNS4xNyAxMC41LDQgOCw0QTgsOCAwIDAsMCAwLDEyQTgsOCAwIDAsMCA4LDIwQzExLjEzLDIwIDEzLjg0LDE4LjE5IDE1LjE1LDE1LjU3TDE1LjI1LDE2SDE3TDE4LjUsOS45TDIwLDE2SDIxLjc1TDIzLjgsN002Ljg1LDEyLjY1SDkuMTVMOCw5TDYuODUsMTIuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlSW5jYW5kZXNjZW50ID0gXCJNMTcuMjQsMTguMTVMMTkuMDQsMTkuOTVMMjAuNDUsMTguNTNMMTguNjYsMTYuNzRNMjAsMTIuNUgyM1YxMC41SDIwTTE1LDYuMzFWMS41SDlWNi4zMUM3LjIxLDcuMzUgNiw5LjI4IDYsMTEuNUE2LDYgMCAwLDAgMTIsMTcuNUE2LDYgMCAwLDAgMTgsMTEuNUMxOCw5LjI4IDE2Ljc5LDcuMzUgMTUsNi4zMU00LDEwLjVIMVYxMi41SDRNMTEsMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVWMTkuNUgxMU0zLjU1LDE4LjUzTDQuOTYsMTkuOTVMNi43NiwxOC4xNUw1LjM0LDE2Ljc0TDMuNTUsMTguNTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlSXJpZGVzY2VudCA9IFwiTTQuOTYsMTkuOTVMNi43NiwxOC4xNUw1LjM0LDE2Ljc0TDMuNTUsMTguNTNNMy41NSw0LjQ2TDUuMzQsNi4yNkw2Ljc2LDQuODRMNC45NiwzLjA1TTIwLjQ1LDE4LjUzTDE4LjY2LDE2Ljc0TDE3LjI0LDE4LjE1TDE5LjA0LDE5Ljk1TTEzLDIyLjQ1VjE5LjVIMTFWMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVNMTkuMDQsMy4wNUwxNy4yNCw0Ljg0TDE4LjY2LDYuMjZMMjAuNDUsNC40Nk0xMSwzLjVIMTNWMC41NUgxMU01LDE0LjVIMTlWOC41SDVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGl0ZUJhbGFuY2VTdW5ueSA9IFwiTTMuNTUsMTguNTRMNC45NiwxOS45NUw2Ljc2LDE4LjE2TDUuMzQsMTYuNzRNMTEsMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVWMTkuNUgxMU0xMiw1LjVBNiw2IDAgMCwwIDYsMTEuNUE2LDYgMCAwLDAgMTIsMTcuNUE2LDYgMCAwLDAgMTgsMTEuNUMxOCw4LjE4IDE1LjMxLDUuNSAxMiw1LjVNMjAsMTIuNUgyM1YxMC41SDIwTTE3LjI0LDE4LjE2TDE5LjA0LDE5Ljk1TDIwLjQ1LDE4LjU0TDE4LjY2LDE2Ljc0TTIwLjQ1LDQuNDZMMTkuMDQsMy4wNUwxNy4yNCw0Ljg0TDE4LjY2LDYuMjZNMTMsMC41NUgxMVYzLjVIMTNNNCwxMC41SDFWMTIuNUg0TTYuNzYsNC44NEw0Ljk2LDMuMDVMMy41NSw0LjQ2TDUuMzQsNi4yNkw2Ljc2LDQuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lkZ2V0cyA9IFwiTTMsM0gxMVY3LjM0TDE2LjY2LDEuNjlMMjIuMzEsNy4zNEwxNi42NiwxM0gyMVYyMUgxM1YxM0gxNi42NkwxMSw3LjM0VjExSDNWM00zLDEzSDExVjIxSDNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lkZ2V0c091dGxpbmUgPSBcIk0xNi43IDQuNUwxOS41IDcuM0wxNi43IDEwLjFMMTMuOSA3LjNMMTYuNyA0LjVNOSA1VjlINVY1SDlNMTkgMTVWMTlIMTVWMTVIMTlNMTYuNyAxLjdMMTEgNy4zTDE2LjcgMTNIMTNWMjFIMjFWMTNIMTYuN0wyMi4zIDcuM0wxNi43IDEuN00xMSAzSDNWMTFIMTFWM005IDE1VjE5SDVWMTVIOU0xMSAxM0gzVjIxSDExVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmkgPSBcIk0xMiwyMUwxNS42LDE2LjJDMTQuNiwxNS40NSAxMy4zNSwxNSAxMiwxNUMxMC42NSwxNSA5LjQsMTUuNDUgOC40LDE2LjJMMTIsMjFNMTIsM0M3Ljk1LDMgNC4yMSw0LjM0IDEuMiw2LjZMMyw5QzUuNSw3LjEyIDguNjIsNiAxMiw2QzE1LjM4LDYgMTguNSw3LjEyIDIxLDlMMjIuOCw2LjZDMTkuNzksNC4zNCAxNi4wNSwzIDEyLDNNMTIsOUM5LjMsOSA2LjgxLDkuODkgNC44LDExLjRMNi42LDEzLjhDOC4xLDEyLjY3IDkuOTcsMTIgMTIsMTJDMTQuMDMsMTIgMTUuOSwxMi42NyAxNy40LDEzLjhMMTkuMiwxMS40QzE3LjE5LDkuODkgMTQuNyw5IDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFsZXJ0ID0gXCJNMjAuMjQgNUgxOFY3LjI1QzE2LjE2IDYuNDUgMTQuMTMgNiAxMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNDMTQuOTcgMyAxNy43NyAzLjczIDIwLjI0IDVNOC40IDE2LjJMMTIgMjFMMTUuNiAxNi4yQzE0LjYgMTUuNDUgMTMuMzUgMTUgMTIgMTVTOS40IDE1LjQ1IDguNCAxNi4yTTQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyUzE1LjkgMTIuNjcgMTcuNCAxMy44TDE4IDEzVjEwLjYyQzE2LjIzIDkuNTkgMTQuMTkgOSAxMiA5QzkuMyA5IDYuODEgOS44OSA0LjggMTEuNE0yMCAxN0gyMlYxNUgyMFYxN00yMCA3VjEzSDIyVjdIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFycm93RG93biA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuMDQgMTkuNjFDMTMgMTkuNDEgMTMgMTkuMjEgMTMgMTlDMTMgMTcuNjYgMTMuNDQgMTYuNDMgMTQuMTkgMTUuNDNDMTMuNSAxNS4xNiAxMi43NyAxNSAxMiAxNU0xNi44NCAxMy40MUMxNy4xOCAxMy4yNyAxNy41NSAxMy4xNyAxNy45MiAxMy4xTDE5LjIgMTEuNEMxNy4xOSA5Ljg5IDE0LjcgOSAxMiA5UzYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMy43OCAxMiAxNS40NCAxMi41IDE2Ljg0IDEzLjQxTTIwIDE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd0xlZnQgPSBcIk0xMiAxMkM5Ljk3IDEyIDguMSAxMi42NyA2LjYgMTMuOEw0LjggMTEuNEM2LjgxIDkuODkgOS4zIDkgMTIgOVMxNy4xOSA5Ljg5IDE5LjIgMTEuNEwxNy45MiAxMy4xQzE3LjU1IDEzLjE3IDE3LjE4IDEzLjI3IDE2Ljg0IDEzLjQxQzE1LjQ0IDEyLjUgMTMuNzggMTIgMTIgMTJNMjEgOUwyMi44IDYuNkMxOS43OSA0LjM0IDE2LjA1IDMgMTIgM1M0LjIxIDQuMzQgMS4yIDYuNkwzIDlDNS41IDcuMTIgOC42MiA2IDEyIDZTMTguNSA3LjEyIDIxIDlNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEzLjA0IDE5LjYxQzEzIDE5LjQxIDEzIDE5LjIxIDEzIDE5QzEzIDE3LjY2IDEzLjQ0IDE2LjQzIDE0LjE5IDE1LjQzQzEzLjUgMTUuMTYgMTIuNzcgMTUgMTIgMTVNMTggMTZMMTUgMTlMMTggMjJWMjBIMjJWMThIMThWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFycm93TGVmdFJpZ2h0ID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE4IDE4LjVMMTUgMjFMMTggMjMuNVYyMkgyMlYyMEgxOFYxOC41TTIzIDE3TDIwIDE0LjVWMTZIMTZWMThIMjBWMTkuNUwyMyAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpQXJyb3dSaWdodCA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xNi44NCAxMy40MUMxNy4xOCAxMy4yNyAxNy41NSAxMy4xNyAxNy45MiAxMy4xTDE5LjIgMTEuNEMxNy4xOSA5Ljg5IDE0LjcgOSAxMiA5UzYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMy43OCAxMiAxNS40NCAxMi41IDE2Ljg0IDEzLjQxTTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd1VwID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE2IDE4SDE4VjIySDIwVjE4SDIyTDE5IDE1TDE2IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd1VwRG93biA9IFwiTTEyIDEyQzkuOTcgMTIgOC4xIDEyLjY3IDYuNiAxMy44TDQuOCAxMS40QzYuODEgOS44OSA5LjMgOSAxMiA5UzE3LjE5IDkuODkgMTkuMiAxMS40TDE3LjkyIDEzLjFDMTcuNTUgMTMuMTcgMTcuMTggMTMuMjcgMTYuODQgMTMuNDFDMTUuNDQgMTIuNSAxMy43OCAxMiAxMiAxMk0yMSA5TDIyLjggNi42QzE5Ljc5IDQuMzQgMTYuMDUgMyAxMiAzUzQuMjEgNC4zNCAxLjIgNi42TDMgOUM1LjUgNy4xMiA4LjYyIDYgMTIgNlMxOC41IDcuMTIgMjEgOU0xMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuMDQgMTkuNjFDMTMgMTkuNDEgMTMgMTkuMjEgMTMgMTlDMTMgMTcuNjYgMTMuNDQgMTYuNDMgMTQuMTkgMTUuNDNDMTMuNSAxNS4xNiAxMi43NyAxNSAxMiAxNU0xNyAxNUwxNC41IDE4SDE2VjIySDE4VjE4SDE5LjVMMTcgMTVNMjIgMjBWMTZIMjBWMjBIMTguNUwyMSAyM0wyMy41IDIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlDYW5jZWwgPSBcIk0xMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNTMTkuNzkgNC4zNCAyMi44IDYuNkwyMSA5QzE4LjUgNy4xMiAxNS4zOCA2IDEyIDZNMTUuNTMgMTIuNzJDMTYuNDIgMTIuMjYgMTcuNDMgMTIgMTguNSAxMkMxOC41OCAxMiAxOC42NiAxMiAxOC43NCAxMkwxOS4yIDExLjRDMTcuMTkgOS44OSAxNC43IDkgMTIgOVM2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTMuMjYgMTIgMTQuNDUgMTIuMjYgMTUuNTMgMTIuNzJNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEyLjM0IDIwLjU0QzEyLjEzIDE5LjkgMTIgMTkuMjIgMTIgMTguNUMxMiAxNy4yNCAxMi4zNiAxNi4wOCAxMyAxNS4wOEMxMi42NiAxNS4wMyAxMi4zMyAxNSAxMiAxNU0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUNoZWNrID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUNvZyA9IFwiTTEyIDEyQzkuOTcgMTIgOC4xIDEyLjY3IDYuNiAxMy44TDQuOCAxMS40QzYuODEgOS44OSA5LjMgOSAxMiA5UzE3LjE5IDkuODkgMTkuMiAxMS40TDE4Ljc0IDEyQzE3LjY2IDEyLjA1IDE2LjYzIDEyLjMzIDE1LjczIDEyLjgxQzE0LjYgMTIuMjkgMTMuMzMgMTIgMTIgMTJNMjEgOUwyMi44IDYuNkMxOS43OSA0LjM0IDE2LjA1IDMgMTIgM1M0LjIxIDQuMzQgMS4yIDYuNkwzIDlDNS41IDcuMTIgOC42MiA2IDEyIDZTMTguNSA3LjEyIDIxIDlNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEyLjIyIDIwLjcxQzEyLjA4IDIwLjE2IDEyIDE5LjU5IDEyIDE5QzEyIDE3LjU3IDEyLjQzIDE2LjI0IDEzLjE3IDE1LjEzQzEyLjc5IDE1LjA1IDEyLjQgMTUgMTIgMTVNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUxvY2sgPSBcIk0xMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNTMTkuNzkgNC4zNCAyMi44IDYuNkwyMSA5QzE4LjUgNy4xMiAxNS4zOCA2IDEyIDZNMTcuNCAxMC4yOUMxNS43NyA5LjQ3IDEzLjk0IDkgMTIgOUM5LjMgOSA2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTIuOTcgMTIgMTMuOSAxMi4xNiAxNC43OCAxMi40NEMxNS4zNCAxMS40NSAxNi4yNyAxMC42OCAxNy40IDEwLjI5TTguNCAxNi4yTDEyIDIxTDEzIDE5LjY3VjE3LjJDMTMgMTYuNSAxMy4yNyAxNS44MSAxMy43IDE1LjI2QzEzLjE2IDE1LjEgMTIuNTkgMTUgMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUxvY2tPcGVuID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTE2LjMxIDkuODFDMTQuOTcgOS4yOSAxMy41IDkgMTIgOUM5LjMgOSA2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTIuODMgMTIgMTMuNjMgMTIuMTIgMTQuMzkgMTIuMzNDMTQuNyAxMS4zIDE1LjM4IDEwLjQxIDE2LjMxIDkuODFNOC40IDE2LjJMMTIgMjFMMTMgMTkuNjdWMTcuMkMxMyAxNi41IDEzLjI3IDE1LjgxIDEzLjcgMTUuMjZDMTMuMTYgMTUuMSAxMi41OSAxNSAxMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaU1hcmtlciA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xMyAxNS4wOUMxMi42OSAxNS4wMyAxMi4zNSAxNSAxMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuOCAxOC42QzEzLjMzIDE3LjU4IDEzIDE2LjUgMTMgMTUuNUMxMyAxNS4zNiAxMyAxNS4yMyAxMyAxNS4wOU0xMiA5QzkuMyA5IDYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMi43MyAxMiAxMy40MyAxMi4wOSAxNC4xIDEyLjI1QzE0Ljg2IDExLjI1IDE1LjkzIDEwLjUgMTcuMTcgMTAuMThDMTUuNiA5LjQzIDEzLjg1IDkgMTIgOU0yMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyUzE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMlMyMiAxMy42IDIyIDE1LjVNMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNFMxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44UzE5LjggMTYuMiAxOS43IDE1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaU1pbnVzID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlPZmYgPSBcIk0yLjI4LDNMMSw0LjI3TDIuNDcsNS43NEMyLjA0LDYgMS42MSw2LjI5IDEuMiw2LjZMMyw5QzMuNTMsOC42IDQuMDgsOC4yNSA0LjY2LDcuOTNMNi44OSwxMC4xNkM2LjE1LDEwLjUgNS40NCwxMC45MSA0LjgsMTEuNEw2LjYsMTMuOEM3LjM4LDEzLjIyIDguMjYsMTIuNzcgOS4yLDEyLjQ3TDExLjc1LDE1QzEwLjUsMTUuMDcgOS4zNCwxNS41IDguNCwxNi4yTDEyLDIxTDE0LjQ2LDE3LjczTDE3Ljc0LDIxTDE5LDE5LjcyTTEyLDNDOS44NSwzIDcuOCwzLjM4IDUuOSw0LjA3TDguMjksNi40N0M5LjUsNi4xNiAxMC43Miw2IDEyLDZDMTUuMzgsNiAxOC41LDcuMTEgMjEsOUwyMi44LDYuNkMxOS43OSw0LjM0IDE2LjA2LDMgMTIsM00xMiw5QzExLjYyLDkgMTEuMjUsOSAxMC44OCw5LjA1TDE0LjA3LDEyLjI1QzE1LjI5LDEyLjUzIDE2LjQzLDEzLjA3IDE3LjQsMTMuOEwxOS4yLDExLjRDMTcuMiw5Ljg5IDE0LjcsOSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlQbHVzID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE2Ljg0IDEzLjQxQzE3LjE4IDEzLjI3IDE3LjU1IDEzLjE3IDE3LjkyIDEzLjFMMTkuMiAxMS40QzE3LjE5IDkuODkgMTQuNyA5IDEyIDlTNi44MSA5Ljg5IDQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyQzEzLjc4IDEyIDE1LjQ0IDEyLjUgMTYuODQgMTMuNDFNMjAgMThWMTVIMThWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVJlZnJlc2ggPSBcIk0xMiAxMkM5Ljk3IDEyIDguMSAxMi42NyA2LjYgMTMuOEw0LjggMTEuNEM2LjgxIDkuODkgOS4zIDkgMTIgOVMxNy4xOSA5Ljg5IDE5LjIgMTEuNEwxOC43NCAxMkMxOC42NiAxMiAxOC41OCAxMiAxOC41IDEyQzE3LjQzIDEyIDE2LjQyIDEyLjI2IDE1LjUzIDEyLjcyQzE0LjQ1IDEyLjI2IDEzLjI2IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMi4zNCAyMC41NEMxMi4xMyAxOS45IDEyIDE5LjIyIDEyIDE4LjVDMTIgMTcuMjQgMTIuMzYgMTYuMDggMTMgMTUuMDhDMTIuNjYgMTUuMDMgMTIuMzMgMTUgMTIgMTVNMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpUmVtb3ZlID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTIxLjEyIDE1LjQ2TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTZXR0aW5ncyA9IFwiTTEyIDIwTDguNCAxNS4yQzkuNCAxNC40NSAxMC42NSAxNCAxMiAxNFMxNC42IDE0LjQ1IDE1LjYgMTUuMkwxMiAyME00LjggMTAuNEw2LjYgMTIuOEM4LjEgMTEuNjcgOS45NyAxMSAxMiAxMVMxNS45IDExLjY3IDE3LjQgMTIuOEwxOS4yIDEwLjRDMTcuMTkgOC44OSAxNC43IDggMTIgOFM2LjgxIDguODkgNC44IDEwLjRNMTIgMkM3Ljk1IDIgNC4yMSAzLjM0IDEuMiA1LjZMMyA4QzUuNSA2LjEyIDguNjIgNSAxMiA1UzE4LjUgNi4xMiAyMSA4TDIyLjggNS42QzE5Ljc5IDMuMzQgMTYuMDUgMiAxMiAyTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdGFyID0gXCJNMTIsNkM4LjYsNiA1LjUsNy4xIDMsOUwxLjIsNi42QzQuMiw0LjMgOCwzIDEyLDNDMTYsMyAxOS44LDQuMyAyMi44LDYuNkwyMSw5QzE4LjUsNy4xIDE1LjQsNiAxMiw2TTEzLDE5QzEzLDE3LjcgMTMuNCwxNi40IDE0LjIsMTUuNEMxMy41LDE1LjIgMTIuOCwxNSAxMiwxNUMxMC43LDE1IDkuNCwxNS41IDguNCwxNi4yTDEyLDIxTDEzLDE5LjZDMTMsMTkuNCAxMywxOS4yIDEzLDE5TTE2LjgsMTMuNEMxNy4xLDEzLjMgMTcuNSwxMy4yIDE3LjksMTMuMUwxOS4yLDExLjRDMTcuMiw5LjkgMTQuNyw5IDEyLDlDOS4zLDkgNi44LDkuOSA0LjgsMTEuNEw2LjYsMTMuOEM4LjEsMTIuNyAxMCwxMiAxMiwxMkMxMy44LDEyIDE1LjQsMTIuNSAxNi44LDEzLjRNMTYuNSwyMi42TDE3LjIsMTkuOEwxNSwxNy45TDE3LjksMTcuN0wxOSwxNUwyMC4xLDE3LjZMMjMsMTcuOEwyMC44LDE5LjdMMjEuNSwyMi41TDE5LDIxLjFMMTYuNSwyMi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDEgPSBcIk0xMiwzQzcuNzksMyAzLjcsNC40MSAwLjM4LDdDNC40MSwxMi4wNiA3Ljg5LDE2LjM3IDEyLDIxLjVDMTYuMDgsMTYuNDIgMjAuMjQsMTEuMjQgMjMuNjUsN0MyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM00xMiw1QzE1LjA3LDUgMTguMDksNS44NiAyMC43MSw3LjQ1TDE1LjYxLDEzLjgxQzE0LjUsMTMuMjggMTMuMjUsMTMgMTIsMTNDMTAuNzUsMTMgOS41LDEzLjI4IDguMzksMTMuOEwzLjI3LDcuNDRDNS45MSw1Ljg1IDguOTMsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDFBbGVydCA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuNCAxMi4xIDcuOSAxNi40IDEyIDIxLjVDMTQuNCAxOC41IDE2LjcgMTUuNyAxOSAxMi44VjkuNkwxNS42IDEzLjhDMTQuNSAxMy4zIDEzLjIgMTMgMTIgMTNTOS41IDEzLjMgOC40IDEzLjhMMy4zIDcuNEM1LjkgNS44IDguOSA1IDEyIDVTMTguMSA1LjkgMjAuNyA3LjRMMjAuMyA4SDIyLjlDMjMuMSA3LjcgMjMuNSA3LjMgMjMuNyA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMUxvY2sgPSBcIk0xMiAxM0MxMi44IDEzIDEzLjYxIDEzLjEzIDE0LjM4IDEzLjM2QzE0LjI4IDEzLjczIDE0LjIgMTQuMTEgMTQuMiAxNC41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjAuOTEgMTAuMzlDMjAuMzIgMTAuMTQgMTkuNjggMTAgMTkgMTBDMTguODcgMTAgMTguNzUgMTAuMDMgMTguNjIgMTAuMDRMMjAuNyA3LjQ1QzE4LjA4IDUuODYgMTUuMDYgNSAxMiA1UzUuOSA1Ljg1IDMuMjYgNy40NEw4LjM4IDEzLjhDOS41IDEzLjI4IDEwLjc0IDEzIDEyIDEzTTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMUxvY2tPcGVuID0gXCJNMTIgMTNDMTIuNzQgMTMgMTMuNSAxMy4xMiAxNC4yMiAxMy4zMUMxNC4yMiAxMy4zOCAxNC4yIDEzLjQ0IDE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuMjRMMTIgMjEuNUM3Ljg4IDE2LjM3IDQuMzkgMTIuMDYgLjM2NSA3QzMuNjkgNC40MSA3Ljc4IDMgMTIgM0MxNi4yIDMgMjAuMzEgNC40MSAyMy42NCA3TDIxLjUgOS42OUMyMC44NiA5LjMzIDIwLjE2IDkuMTEgMTkuNDIgOS4wNEwyMC43IDcuNDVDMTguMDggNS44NiAxNS4wNiA1IDEyIDVTNS45IDUuODUgMy4yNiA3LjQ0TDguMzggMTMuOEM5LjUgMTMuMjggMTAuNzQgMTMgMTIgMTNNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMiA9IFwiTTEyLDNDNy43OSwzIDMuNyw0LjQxIDAuMzgsN0M0LjQxLDEyLjA2IDcuODksMTYuMzcgMTIsMjEuNUMxNi4wOCwxNi40MiAyMC4yNCwxMS4yNCAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzTTEyLDVDMTUuMDcsNSAxOC4wOSw1Ljg2IDIwLjcxLDcuNDVMMTcuNSwxMS40M0MxNi4yNiwxMC43NCAxNC4zNywxMCAxMiwxMEM5LjYyLDEwIDcuNzQsMTAuNzUgNi41LDExLjQzTDMuMjcsNy40NEM1LjkxLDUuODUgOC45Myw1IDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMkFsZXJ0ID0gXCJNMTIgM0M3LjggMyAzLjcgNC40IC40IDdDNC40IDEyLjEgNy45IDE2LjQgMTIgMjEuNUMxNC40IDE4LjUgMTYuNyAxNS43IDE5IDEyLjhWOS42TDE3LjUgMTEuNEMxNi4zIDEwLjcgMTQuNCAxMCAxMiAxMEM5LjYgMTAgNy43IDEwLjggNi41IDExLjRMMy4zIDcuNEM1LjkgNS44IDguOSA1IDEyIDVTMTguMSA1LjkgMjAuNyA3LjRMMjAuMyA4SDIyLjlDMjMuMSA3LjcgMjMuNSA3LjMgMjMuNyA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMkxvY2sgPSBcIk0xNC4yIDE0LjVWMTQuNzRDMTMuNSAxNS4zNCAxMyAxNi4yNCAxMyAxNy4yVjIwLjI0TDEyIDIxLjVDNy44OCAxNi4zNyA0LjM5IDEyLjA2IC4zNjUgN0MzLjY5IDQuNDEgNy43OCAzIDEyIDNDMTYuMiAzIDIwLjMxIDQuNDEgMjMuNjQgN0wyMC45MSAxMC4zOUMyMC4zMiAxMC4xNCAxOS42OCAxMCAxOSAxMEMxOC44NyAxMCAxOC43NCAxMC4wMyAxOC42MSAxMC4wNEwyMC43IDcuNDVDMTguMDggNS44NiAxNS4wNiA1IDEyIDVTNS45IDUuODUgMy4yNiA3LjQ0TDYuNSAxMS40M0M3LjczIDEwLjc1IDkuNjEgMTAgMTIgMTBDMTMuNjggMTAgMTUuMTIgMTAuMzggMTYuMjYgMTAuODRDMTUuMDMgMTEuNjcgMTQuMiAxMyAxNC4yIDE0LjVNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgyTG9ja09wZW4gPSBcIk0xNS40NCAxMC41NUMxNC42OCAxMS4zNSAxNC4yIDEyLjM4IDE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuMjRMMTIgMjEuNUM3Ljg4IDE2LjM3IDQuMzkgMTIuMDYgLjM2NSA3QzMuNjkgNC40MSA3Ljc4IDMgMTIgM0MxNi4yIDMgMjAuMzEgNC40MSAyMy42NCA3TDIxLjUgOS42OUMyMC44NiA5LjMzIDIwLjE2IDkuMSAxOS40MSA5LjA0TDIwLjcgNy40NUMxOC4wOCA1Ljg2IDE1LjA2IDUgMTIgNVM1LjkgNS44NSAzLjI2IDcuNDRMNi41IDExLjQzQzcuNzMgMTAuNzUgOS42MSAxMCAxMiAxMEMxMy4yOSAxMCAxNC40NSAxMC4yMyAxNS40NCAxMC41NU0yMS44IDE2SDE3LjVWMTMuNUMxNy41IDEyLjcgMTguMiAxMi4yIDE5IDEyLjJTMjAuNSAxMi43IDIwLjUgMTMuNVYxNEgyMS44VjEzLjVDMjEuOCAxMi4xIDIwLjQgMTEgMTkgMTFTMTYuMiAxMi4xIDE2LjIgMTMuNVYxNkMxNS42IDE2IDE1IDE2LjYgMTUgMTcuMlYyMC43QzE1IDIxLjQgMTUuNiAyMiAxNi4yIDIySDIxLjdDMjIuNCAyMiAyMyAyMS40IDIzIDIwLjhWMTcuM0MyMyAxNi42IDIyLjQgMTYgMjEuOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgzID0gXCJNMTIsM0M3Ljc5LDMgMy43LDQuNDEgMC4zOCw3QzQuNDEsMTIuMDYgNy44OSwxNi4zNyAxMiwyMS41QzE2LjA4LDE2LjQyIDIwLjI0LDExLjI0IDIzLjY1LDdDMjAuMzIsNC40MSAxNi4yMiwzIDEyLDNNMTIsNUMxNS4wNyw1IDE4LjA5LDUuODYgMjAuNzEsNy40NUwxOC43Nyw5Ljg4QzE3LjI2LDkgMTQuODgsOCAxMiw4QzksOCA2LjY4LDkgNS4yMSw5Ljg0TDMuMjcsNy40NEM1LjkxLDUuODUgOC45Myw1IDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoM0FsZXJ0ID0gXCJNMTIgM0M3LjggMyAzLjcgNC40IC40IDdDNC40IDEyLjEgNy45IDE2LjQgMTIgMjEuNUMxNC40IDE4LjUgMTYuNyAxNS43IDE5IDEyLjhWOS42TDE4LjggOS45QzE3LjMgOSAxNC45IDggMTIgOEM5IDggNi43IDkgNS4yIDkuOEwzLjMgNy40QzUuOSA1LjggOC45IDUgMTIgNVMxOC4xIDUuOSAyMC43IDcuNEwyMC4zIDhIMjIuOUMyMy4xIDcuNyAyMy41IDcuMyAyMy43IDdDMjAuMyA0LjQgMTYuMiAzIDEyIDNNMjEgMTBWMTZIMjNWMTBNMjEgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgzTG9jayA9IFwiTTE5IDEwQzE5LjY4IDEwIDIwLjMyIDEwLjE0IDIwLjkxIDEwLjM5TDIzLjY0IDdDMjAuMzEgNC40MSAxNi4yIDMgMTIgM0M3Ljc4IDMgMy42OSA0LjQxIC4zNjUgN0M0LjM5IDEyLjA2IDcuODggMTYuMzcgMTIgMjEuNUwxMyAyMC4yNFYxNy4yQzEzIDE2LjI0IDEzLjUgMTUuMzQgMTQuMiAxNC43NFYxNC41QzE0LjIgMTIuMDYgMTYuNCAxMCAxOSAxME0xMiA4QzkgOCA2LjY3IDkgNS4yIDkuODRMMy4yNiA3LjQ0QzUuOSA1Ljg1IDguOTEgNSAxMiA1UzE4LjA4IDUuODYgMjAuNyA3LjQ1TDE4Ljc2IDkuODhDMTcuMjUgOSAxNC44NyA4IDEyIDhNMjEuOCAxNlYxNC41QzIxLjggMTMuMSAyMC40IDEyIDE5IDEyUzE2LjIgMTMuMSAxNi4yIDE0LjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZNMjAuNSAxNkgxNy41VjE0LjVDMTcuNSAxMy43IDE4LjIgMTMuMiAxOSAxMy4yUzIwLjUgMTMuNyAyMC41IDE0LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoM0xvY2tPcGVuID0gXCJNMTQuMiAxMy41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjEuNSA5LjY5QzIwLjg2IDkuMzMgMjAuMTcgOS4xMSAxOS40MiA5LjA0TDIwLjcgNy40NUMxOC4wOCA1Ljg2IDE1LjA2IDUgMTIgNVM1LjkgNS44NSAzLjI2IDcuNDRMNS4yIDkuODRDNi42NyA5IDkgOCAxMiA4QzE0LjE4IDggMTYuMDggOC41OCAxNy41MyA5LjI1QzE1LjYzIDkuODUgMTQuMiAxMS41NCAxNC4yIDEzLjVNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNCA9IFwiTTEyLDNDNy43OSwzIDMuNyw0LjQxIDAuMzgsN0M0LjQxLDEyLjA2IDcuODksMTYuMzcgMTIsMjEuNUMxNi4wOCwxNi40MiAyMC4yNCwxMS4yNCAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDRBbGVydCA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuNCAxMi4xIDcuOSAxNi40IDEyIDIxLjVDMTQuNCAxOC41IDE2LjcgMTUuNyAxOSAxMi44VjhIMjIuOEMyMyA3LjcgMjMuNCA3LjMgMjMuNiA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNExvY2sgPSBcIk0xNC4yIDE0LjVWMTQuNzRDMTMuNSAxNS4zNCAxMyAxNi4yNCAxMyAxNy4yVjIwLjI0TDEyIDIxLjVDNy44OCAxNi4zNyA0LjM5IDEyLjA2IC4zNjUgN0MzLjY5IDQuNDEgNy43OCAzIDEyIDNDMTYuMiAzIDIwLjMxIDQuNDEgMjMuNjQgN0wyMC45MSAxMC4zOUMyMC4zMiAxMC4xNCAxOS42OCAxMCAxOSAxMEMxNi40IDEwIDE0LjIgMTIuMDYgMTQuMiAxNC41TTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNExvY2tPcGVuID0gXCJNMTQuMiAxMy41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjEuNSA5LjY5QzIwLjc1IDkuMjYgMTkuOSA5IDE5IDlDMTYuNCA5IDE0LjIgMTEuMDYgMTQuMiAxMy41TTIxLjggMTZIMTcuNVYxMy41QzE3LjUgMTIuNyAxOC4yIDEyLjIgMTkgMTIuMlMyMC41IDEyLjcgMjAuNSAxMy41VjE0SDIxLjhWMTMuNUMyMS44IDEyLjEgMjAuNCAxMSAxOSAxMVMxNi4yIDEyLjEgMTYuMiAxMy41VjE2QzE1LjYgMTYgMTUgMTYuNiAxNSAxNy4yVjIwLjdDMTUgMjEuNCAxNS42IDIyIDE2LjIgMjJIMjEuN0MyMi40IDIyIDIzIDIxLjQgMjMgMjAuOFYxNy4zQzIzIDE2LjYgMjIuNCAxNiAyMS44IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aEFsZXJ0T3V0bGluZSA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuMyAxMS44IDguMiAxNi43IDEyIDIxLjVDMTQuMyAxOC42IDE2LjcgMTUuNyAxOSAxMi44VjkuNkwxMiAxOC4zTDMuMyA3LjRDNS45IDUuOCA4LjkgNSAxMiA1QzE1LjEgNSAxOC4xIDUuOSAyMC43IDcuNEwyMC4zIDhIMjIuOUMyMy4yIDcuNyAyMy40IDcuMyAyMy43IDdDMjAuMyA0LjQgMTYuMiAzIDEyIDNNMjEgMTBWMTZIMjNWMTBNMjEgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhMb2NrT3Blbk91dGxpbmUgPSBcIk0yMy42NSA3SDIzLjY0QzIyLjkyIDcuOSAyMi4yIDguNzkgMjEuNSA5LjY5QzIwLjg3IDkuMzMgMjAuMTcgOS4xMSAxOS40MyA5LjA0TDIwLjcxIDcuNDVDMTguMDkgNS44NiAxNS4wNyA1IDEyIDVDOC45MSA1IDUuOSA1Ljg1IDMuMjcgNy40NEwxMiAxOC4zTDEzIDE3QzEzIDE3LjA4IDEzIDE3LjE0IDEzIDE3LjJWMjAuMjVMMTIgMjEuNUM4LjEzIDE2LjY2IDQuMjQgMTEuODMgLjM1NSA3SC4zNzVDMy43IDQuNDEgNy43OSAzIDEyIDNDMTYuMjIgMyAyMC4zMiA0LjQxIDIzLjY1IDdNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoTG9ja091dGxpbmUgPSBcIk0yMy42NSA3SDIzLjY0TDIwLjkxIDEwLjM5QzIwLjMyIDEwLjE0IDE5LjY4IDEwIDE5IDEwQzE4Ljg3IDEwIDE4Ljc1IDEwLjAzIDE4LjYzIDEwLjA0TDIwLjcxIDcuNDVDMTguMDkgNS44NiAxNS4wNyA1IDEyIDVDOC45MSA1IDUuOSA1Ljg1IDMuMjcgNy40NEwxMiAxOC4zTDEzIDE3QzEzIDE3LjA4IDEzIDE3LjE0IDEzIDE3LjJWMjAuMjVMMTIgMjEuNUM4LjEzIDE2LjY2IDQuMjQgMTEuODMgLjM1NSA3SC4zNzVDMy43IDQuNDEgNy43OSAzIDEyIDNDMTYuMjIgMyAyMC4zMiA0LjQxIDIzLjY1IDdNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhPZmYgPSBcIk0zLjI3LDEuNDRMMiwyLjcyTDQuMDUsNC43N0MyLjc1LDUuMzcgMS41LDYuMTEgMC4zOCw3QzQuNDEsMTIuMDYgMTIsMjEuNSAxMiwyMS41TDE1LjkxLDE2LjYzTDE5LjIzLDE5Ljk1TDIwLjUsMTguNjhNMTIsM0MxMC42LDMgOS4yMSwzLjE3IDcuODYsMy41TDE4LjE4LDEzLjgxQzIwLDExLjUgMjIuMDUsOSAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aE9mZk91dGxpbmUgPSBcIk0zLjI3LDEuNDRMMiwyLjcyTDQuMDUsNC43N0MyLjc1LDUuMzcgMS41LDYuMTEgMC4zOCw3QzQuMiwxMS44IDguMTQsMTYuNjcgMTIsMjEuNUwxNS45MSwxNi42M0wxOS4yMywxOS45NUwyMC41LDE4LjY4QzE0Ljg3LDEzLjA0IDMuMjcsMS40NCAzLjI3LDEuNDRNMTIsM0MxMC42LDMgOS4yMSwzLjE3IDcuODYsMy41TDkuNTYsNS4xOUMxMC4zNyw1LjA3IDExLjE4LDUgMTIsNUMxNS4wNyw1IDE4LjA5LDUuODYgMjAuNzEsNy40NUwxNi43NiwxMi4zOEwxOC4xOCwxMy44QzIwLjA4LDExLjQzIDIyLDkgMjMuNjUsN0MyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM001LjU3LDYuMjlMMTQuNSwxNS4yMUwxMiwxOC4zTDMuMjcsNy40NEM0LDcgNC43OCw2LjYxIDUuNTcsNi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhPdXRsaW5lID0gXCJNMTIsM0M3Ljc5LDMgMy43LDQuNDEgMC4zOCw3SDAuMzZDNC4yNCwxMS44MyA4LjEzLDE2LjY2IDEyLDIxLjVDMTUuODksMTYuNjYgMTkuNzcsMTEuODMgMjMuNjQsN0gyMy42NUMyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM00xMiw1QzE1LjA3LDUgMTguMDksNS44NiAyMC43MSw3LjQ1TDEyLDE4LjNMMy4yNyw3LjQ0QzUuOSw1Ljg1IDguOTIsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTeW5jID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4yNiAxOS4zMkMxMy4xIDE4Ljc0IDEzIDE4LjEzIDEzIDE3LjVDMTMgMTYuNjkgMTMuMTYgMTUuOTEgMTMuNDMgMTUuMTlDMTIuOTcgMTUuMDggMTIuNSAxNSAxMiAxNU0xNS4yMyAxMi42MUMxNi4xOSAxMS43NyAxNy4zOCAxMS4yMiAxOC43IDExLjA1QzE2Ljc4IDkuNzYgMTQuNSA5IDEyIDlDOS4zIDkgNi44MSA5Ljg5IDQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyQzEzLjE0IDEyIDE0LjIzIDEyLjIyIDE1LjIzIDEyLjYxTTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lraXBlZGlhID0gXCJNMTQuOTcsMTguOTVMMTIuNDEsMTIuOTJDMTEuMzksMTQuOTEgMTAuMjcsMTcgOS4zMSwxOC45NUM5LjMsMTguOTYgOC44NCwxOC45NSA4Ljg0LDE4Ljk1QzcuMzcsMTUuNSA1Ljg1LDEyLjEgNC4zNyw4LjY4QzQuMDMsNy44NCAyLjgzLDYuNSAyLDYuNUMyLDYuNCAyLDYuMTggMiw2LjA1SDcuMDZWNi41QzYuNDYsNi41IDUuNDQsNi45IDUuNyw3LjU1QzYuNDIsOS4wOSA4Ljk0LDE1LjA2IDkuNjMsMTYuNThDMTAuMSwxNS42NCAxMS40MywxMy4xNiAxMiwxMi4xMUMxMS41NSwxMS4yMyAxMC4xMyw3LjkzIDkuNzEsNy4xMUM5LjM5LDYuNTcgOC41OCw2LjUgNy45Niw2LjVDNy45Niw2LjM1IDcuOTcsNi4yNSA3Ljk2LDYuMDZMMTIuNDIsNi4wN1Y2LjQ3QzExLjgxLDYuNSAxMS4yNCw2LjcxIDExLjUsNy4yOUMxMi4xLDguNTMgMTIuNDUsOS40MiAxMywxMC41N0MxMy4xNywxMC4yMyAxNC4wNyw4LjM4IDE0LjUsNy40MUMxNC43Niw2Ljc2IDE0LjM3LDYuNSAxMy4yOSw2LjVDMTMuMyw2LjM4IDEzLjMsNi4xNyAxMy4zLDYuMDdDMTQuNjksNi4wNiAxNi43OCw2LjA2IDE3LjE1LDYuMDVWNi40N0MxNi40NCw2LjUgMTUuNzEsNi44OCAxNS4zMyw3LjQ2TDEzLjUsMTEuM0MxMy42OCwxMS44MSAxNS40NiwxNS43NiAxNS42NSwxNi4yTDE5LjUsNy4zN0MxOS4yLDYuNjUgMTguMzQsNi41IDE4LDYuNUMxOCw2LjM3IDE4LDYuMiAxOCw2LjA1TDIyLDYuMDhWNi4xTDIyLDYuNUMyMS4xMiw2LjUgMjAuNTcsNyAyMC4yNSw3Ljc1QzE5LjQ1LDkuNTQgMTcsMTUuMjQgMTUuNCwxOC45NUMxNS40LDE4Ljk1IDE0Ljk3LDE4Ljk1IDE0Ljk3LDE4Ljk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRUdXJiaW5lID0gXCJNMTMuMzMsMTEuNjdMMTYuMjEsMTQuNThDMTcuNjIsMTMuMTYgMTYuMjEsMTEuNzUgMTYuMjEsMTEuNzVMMTQuNzIsMTAuMjRDMTQuOSw5Ljg2IDE1LDkuNDQgMTUsOUMxNSw3Ljk1IDE0LjQ2LDcuMDMgMTMuNjQsNi41TDE1LDIuMTFDMTMuMDksMS41MyAxMi41LDMuNDQgMTIuNSwzLjQ0TDExLjY5LDYuMDNDMTAuNDYsNi4xNiA5LjQ2LDcgOS4xMyw4LjE4TDQuNjcsOS42M0M1LjMxLDExLjUzIDcuMiwxMC45IDcuMiwxMC45TDkuMjcsMTAuMjNDOS42MSwxMC45NyAxMC4yMywxMS41NCAxMSwxMS44MlYxOUMxMSwxOSA5LDE5IDksMjFDOSwyMS41IDksMjEuODEgOSwyMkgxNVYyMUMxNSwyMSAxNSwxOSAxMywxOVYxMS44MkMxMy4xMiwxMS43OCAxMy4yMywxMS43MiAxMy4zMywxMS42N00xMC41LDlBMS41LDEuNSAwIDAsMSAxMiw3LjVBMS41LDEuNSAwIDAsMSAxMy41LDlBMS41LDEuNSAwIDAsMSAxMiwxMC41QTEuNSwxLjUgMCAwLDEgMTAuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlID0gXCJNMTMuNDYsMTJMMTksMTcuNTRWMTlIMTcuNTRMMTIsMTMuNDZMNi40NiwxOUg1VjE3LjU0TDEwLjU0LDEyTDUsNi40NlY1SDYuNDZMMTIsMTAuNTRMMTcuNTQsNUgxOVY2LjQ2TDEzLjQ2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlZCA9IFwiTTYsMTFIMTBWOUgxNFYxMUgxOFY0SDZWMTFNMTgsMTNINlYyMEgxOFYxM002LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlZFZhcmlhbnQgPSBcIk0yMSAyMFYySDNWMjBIMVYyM0gyM1YyME0xOSA0VjExSDEzVjRNNSA0SDExVjExSDVNNSAyMFYxM0gxMVYyME0xMyAyMFYxM0gxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dNYXhpbWl6ZSA9IFwiTTQsNEgyMFYyMEg0VjRNNiw4VjE4SDE4VjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dNaW5pbWl6ZSA9IFwiTTIwLDE0SDRWMTBIMjBcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dPcGVuID0gXCJNNiw4SDEwVjZIMTRWOEgxOFY0SDZWOE0xOCwxMEg2VjE1SDE4VjEwTTYsMjBIMThWMTdINlYyME02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd09wZW5WYXJpYW50ID0gXCJNMjEgMjBWMkgzVjIwSDFWMjNIMjNWMjBNMTkgNFYxMUgxN1Y0TTUgNEg3VjExSDVNNSAyMFYxM0g3VjIwTTkgMjBWNEgxNVYyME0xNyAyMFYxM0gxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dSZXN0b3JlID0gXCJNNCw4SDhWNEgyMFYxNkgxNlYyMEg0VjhNMTYsOFYxNEgxOFY2SDEwVjhIMTZNNiwxMlYxOEgxNFYxMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXIgPSBcIk0zIDRIMjFWOEgxOVYyMEgxN1Y4SDdWMjBINVY4SDNWNE04IDlIMTZWMTFIOFY5TTggMTJIMTZWMTRIOFYxMk04IDE1SDE2VjE3SDhWMTVNOCAxOEgxNlYyMEg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXJBbGVydCA9IFwiTTIgNEgyMFY4SDE4VjIwSDE2VjhINlYyMEg0VjhIMlY0TTcgOUgxNVYxMUg3VjlNNyAxMkgxNVYxNEg3VjEyTTIwIDE5VjE3SDIyVjE5SDIwTTIwIDE1VjEwSDIyVjE1SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXJPcGVuID0gXCJNMyA0SDIxVjhIMTlWMjBIMTdWOEg3VjIwSDVWOEgzVjRNOCA5SDE2VjExSDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kc29jayA9IFwiTTcgNVYxM0wyMiAxMVY3TDcgNU0xMCA2LjkxTDEzIDcuMzFWMTAuNjlMMTAgMTEuMDlWNi45MU0xNiA3LjcxTDE5IDguMTFWOS44OUwxNiAxMC4yOVY3LjcxTTUgMTBWMTFINlYxMkg1VjIxSDNWNEMzIDMuNDUgMy40NSAzIDQgM1M1IDMuNDUgNSA0VjZINlY3SDVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lwZXIgPSBcIk0xMiw0QzUsNCAyLDkgMiw5TDksMTZDOSwxNiA5LjUsMTUuMSAxMC40LDE0LjVMMTAuNywxNi41QzEwLjMsMTYuOCAxMCwxNy40IDEwLDE4QTIsMiAwIDAsMCAxMiwyMEEyLDIgMCAwLDAgMTQsMThDMTQsMTcuMSAxMy41LDE2LjQgMTIuNywxNi4xTDEyLjMsMTRDMTQuMSwxNC4yIDE1LDE2IDE1LDE2TDIyLDlDMjIsOSAxOSw0IDEyLDRNMTUuMSwxMy4xQzE0LjMsMTIuNSAxMy4zLDEyIDEyLDEyTDExLDYuMUMxMS4zLDYgMTEuNyw2IDEyLDZDMTUuNyw2IDE4LjEsNy43IDE5LjMsOC45TDE1LjEsMTMuMU04LjksMTMuMUw0LjcsOC45QzUuNSw4IDcsNyA5LDYuNEwxMCwxMi40QzkuNiwxMi42IDkuMiwxMi44IDguOSwxMy4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpcGVyV2FzaCA9IFwiTTEzLDZDMTMsNS43IDEzLjEsNC42IDEzLjgsMy44TDEyLDIuNEwxMC4yLDMuOUMxMC45LDQuNiAxMSw1LjcgMTEsNkM0LjcsNi40IDIsMTEgMiwxMUw5LDE4QzksMTggOS43LDE2LjcgMTEsMTYuMlYxOC4zQzEwLjQsMTguNiAxMCwxOS4zIDEwLDIwQTIsMiAwIDAsMCAxMiwyMkEyLDIgMCAwLDAgMTQsMjBDMTQsMTkuMyAxMy42LDE4LjYgMTMsMTguM1YxNi4yQzE0LjMsMTYuNyAxNSwxOCAxNSwxOEwyMiwxMUMyMiwxMSAxOS4zLDYuNSAxMyw2TTExLDE0LjFDMTAuMiwxNC4zIDkuNSwxNC42IDguOSwxNS4xTDQuNywxMC45QzUuOCw5LjggNy44LDguMyAxMSw4LjFWMTQuMU0xNS4xLDE1LjFDMTQuNSwxNC43IDEzLjgsMTQuMyAxMywxNC4xVjguMUMxNi4yLDguNCAxOC4yLDkuOCAxOS4zLDEwLjlMMTUuMSwxNS4xTTE4LDEuM0wxNy4zLDMuMkMxNi42LDIuOSAxNS41LDIuOSAxNC43LDMuMkwxNCwxLjNDMTUuMiwwLjkgMTYuOCwwLjkgMTgsMS4zTTIxLDZIMTlDMTksNiAxOSw0LjcgMTguMiwzLjlMMTkuNywyLjZDMjEsNCAyMSw1LjkgMjEsNk00LjIsMi42TDUuNywzLjlDNSw0LjcgNSw2IDUsNkgzQzMsNS45IDMsNCA0LjIsMi42TTEwLDEuM0w5LjMsMy4yQzguNiwyLjkgNy41LDIuOSA2LjcsMy4yTDYsMS4zQzcuMiwwLjkgOC44LDAuOSAxMCwxLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2l6YXJkSGF0ID0gXCJNMjEgMjJIM1YyMEgyMVYyMk0xOSAxOUg1TDExLjEgMi42QzExLjMgMi4yIDExLjYgMiAxMiAyTDE4IDVIMTMuOUwxOSAxOU0xMCA3LjVMMTEuMDQgNy45N0wxMS41IDlMMTEuOTcgNy45N0wxMyA3LjVMMTEuOTcgNy4wM0wxMS41IDZMMTEuMDQgNy4wM0wxMCA3LjVNMTMgMTVMMTAuOTQgMTQuMDdMMTAgMTJMOS4wNyAxNC4wN0w3IDE1TDkuMDcgMTUuOTNMMTAgMThMMTAuOTQgMTUuOTNMMTMgMTVNMTMuOTcgMTEuOTdMMTUgMTEuNUwxMy45NyAxMS4wM0wxMy41IDEwTDEzLjA0IDExLjAzTDEyIDExLjVMMTMuMDQgMTEuOTdMMTMuNSAxM0wxMy45NyAxMS45N00xNS45NyAxNS45N0wxNyAxNS41TDE1Ljk3IDE1LjAzTDE1LjUgMTRMMTUuMDQgMTUuMDNMMTQgMTUuNUwxNS4wNCAxNS45N0wxNS41IDE3TDE1Ljk3IDE1Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdvcmRwcmVzcyA9IFwiTTMuNDIsMTJDMy40MiwxMC43NiAzLjY5LDkuNTggNC4xNiw4LjVMOC4yNiwxOS43MkM1LjM5LDE4LjMzIDMuNDIsMTUuNCAzLjQyLDEyTTE3Ljc5LDExLjU3QzE3Ljc5LDEyLjMgMTcuNSwxMy4xNSAxNy4xNCwxNC4zNEwxNi4yOCwxNy4yTDEzLjE4LDhMMTQuMTYsNy45QzE0LjYzLDcuODQgMTQuNTcsNy4xNiAxNC4xMSw3LjE5QzE0LjExLDcuMTkgMTIuNzIsNy4zIDExLjgyLDcuM0w5LjU2LDcuMTlDOS4xLDcuMTYgOS4wNSw3Ljg3IDkuNSw3LjlMMTAuNDEsOEwxMS43NSwxMS42NEw5Ljg3LDE3LjI3TDYuNzQsOEw3LjczLDcuOUM4LjE5LDcuODQgOC4xMyw3LjE2IDcuNjcsNy4xOUM3LjY3LDcuMTkgNi4yOCw3LjMgNS4zOCw3LjNMNC44Myw3LjI5QzYuMzcsNC45NiA5LDMuNDIgMTIsMy40MkMxNC4yMywzLjQyIDE2LjI3LDQuMjggMTcuNzksNS42N0gxNy42OEMxNi44NCw1LjY3IDE2LjI0LDYuNCAxNi4yNCw3LjE5QzE2LjI0LDcuOSAxNi42NSw4LjUgMTcuMDgsOS4yQzE3LjQxLDkuNzcgMTcuNzksMTAuNSAxNy43OSwxMS41N00xMi4xNSwxMi43NUwxNC43OSwxOS45N0wxNC44NSwyMC4wOUMxMy45NiwyMC40MSAxMywyMC41OCAxMiwyMC41OEMxMS4xNiwyMC41OCAxMC4zNSwyMC40NiA5LjU4LDIwLjIzTDEyLjE1LDEyLjc1TTE5LjUzLDcuODhDMjAuMiw5LjExIDIwLjU4LDEwLjUgMjAuNTgsMTJDMjAuNTgsMTUuMTYgMTguODYsMTcuOTMgMTYuMzEsMTkuNDFMMTguOTMsMTEuODRDMTkuNDIsMTAuNjIgMTkuNTksOS42NCAxOS41OSw4Ljc3TDE5LjUzLDcuODhNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMjEuNTRDMTcuMjYsMjEuNTQgMjEuNTQsMTcuMjYgMjEuNTQsMTJDMjEuNTQsNi43NCAxNy4yNiwyLjQ2IDEyLDIuNDZDNi43NCwyLjQ2IDIuNDYsNi43NCAyLjQ2LDEyQzIuNDYsMTcuMjYgNi43NCwyMS41NCAxMiwyMS41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlXcmFwID0gXCJNMjEsNUgzVjdIMjFWNU0zLDE5SDEwVjE3SDNWMTlNMywxM0gxOEMxOSwxMyAyMCwxMy40MyAyMCwxNUMyMCwxNi41NyAxOSwxNyAxOCwxN0gxNlYxNUwxMiwxOEwxNiwyMVYxOUgxOEMyMC45NSwxOSAyMiwxNy43MyAyMiwxNUMyMiwxMi4yOCAyMSwxMSAxOCwxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdyYXBEaXNhYmxlZCA9IFwiTTE2LDdIM1Y1SDE2VjdNMywxOUgxNlYxN0gzVjE5TTIyLDEyTDE4LDlWMTFIM1YxM0gxOFYxNUwyMiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXcmVuY2ggPSBcIk0yMi43LDE5TDEzLjYsOS45QzE0LjUsNy42IDE0LDQuOSAxMi4xLDNDMTAuMSwxIDcuMSwwLjYgNC43LDEuN0w5LDZMNiw5TDEuNiw0LjdDMC40LDcuMSAwLjksMTAuMSAyLjksMTIuMUM0LjgsMTQgNy41LDE0LjUgOS44LDEzLjZMMTguOSwyMi43QzE5LjMsMjMuMSAxOS45LDIzLjEgMjAuMywyMi43TDIyLjYsMjAuNEMyMy4xLDIwIDIzLjEsMTkuMyAyMi43LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdyZW5jaE91dGxpbmUgPSBcIk0yMi42MSwxOUwxMy41Myw5LjkxQzE0LjQ2LDcuNTcgMTQsNC44MSAxMi4wOSwyLjkxQzkuNzksMC42MSA2LjIxLDAuNCAzLjY2LDIuMjZMNy41LDYuMTFMNi4wOCw3LjVMMi4yNSwzLjY5QzAuMzksNi4yMyAwLjYsOS44MiAyLjksMTIuMTFDNC43NiwxMy45NyA3LjQ3LDE0LjQ2IDkuNzksMTMuNTlMMTguOSwyMi43QzE5LjI5LDIzLjA5IDE5LjkyLDIzLjA5IDIwLjMxLDIyLjdMMjIuNjEsMjAuNEMyMywyMCAyMywxOS4zOSAyMi42MSwxOU0xOS42MSwyMC41OUwxMC4xNSwxMS4xM0M5LjU0LDExLjU4IDguODYsMTEuODUgOC4xNSwxMS45NUM2Ljc5LDEyLjE1IDUuMzYsMTEuNzQgNC4zMiwxMC43QzMuMzcsOS43NiAyLjkzLDguNSAzLDcuMjZMNi4wOSwxMC4zNUwxMC4zMyw2LjExTDcuMjQsM0M4LjUsMi45NSA5LjczLDMuMzkgMTAuNjgsNC4zM0MxMS43Niw1LjQxIDEyLjE3LDYuOSAxMS45Miw4LjI5QzExLjgsOSAxMS41LDkuNjYgMTEuMDQsMTAuMjVMMjAuNSwxOS43TDE5LjYxLDIwLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVhhbWFyaW4gPSBcIk0yMi43NSwxMS4wN0MyMi45MSwxMS4zNSAyMywxMS42NyAyMywxMkMyMywxMi4zMyAyMi45MSwxMi42NSAyMi43NSwxMi45M0wxOC4wOCwyMUMxNy43MiwyMS42MiAxNy4wNiwyMiAxNi4zNSwyMkg3LjY1QzYuOTQsMjIgNi4yOCwyMS42MiA1LjkyLDIxTDEuMjUsMTIuOTNDMS4wOSwxMi42NSAxLDEyLjMzIDEsMTJDMSwxMS42NyAxLjA5LDExLjM1IDEuMjUsMTEuMDdMNS45MiwzQzYuMjgsMi4zOCA2Ljk0LDIgNy42NSwySDE2LjM1QzE3LjA2LDIgMTcuNzIsMi4zOCAxOC4wOCwzTDIyLjc1LDExLjA3TTEyLDEyVjExLjlMOS40Miw3LjFMOS4yNSw3SDcuNjZMNy41LDcuMVY3LjNMMTAsMTJMNy41LDE2LjdWMTYuOUw3LjY2LDE3SDkuMjVMOS40MiwxNi45TDEyLDEyLjFWMTJMMTIuMDMsMTIuMUwxNC41OCwxNi45TDE0Ljc1LDE3SDE2LjM0TDE2LjUsMTYuOVYxNi43TDE0LDEyTDE2LjUsNy4zVjcuMUwxNi4zNCw3SDE0Ljc1TDE0LjU4LDcuMUwxMi4wMywxMS45TDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVhhbWFyaW5PdXRsaW5lID0gXCJNMTIsMTJMMTIuMDMsMTEuOUwxNC41OCw3LjFMMTQuNzUsN0gxNi4zNEwxNi41LDcuMVY3LjNMMTQsMTJMMTYuNSwxNi43VjE2LjlMMTYuMzQsMTdIMTQuNzVMMTQuNTgsMTYuOUwxMi4wMywxMi4xTDEyLDEyVjEyLjFMOS40MiwxNi45TDkuMjUsMTdINy42Nkw3LjUsMTYuOVYxNi43TDEwLDEyTDcuNSw3LjNWNy4xTDcuNjYsN0g5LjI1TDkuNDIsNy4xTDEyLDExLjlWMTJNMjIuNzUsMTEuMDdDMjIuOTEsMTEuMzUgMjMsMTEuNjcgMjMsMTJDMjMsMTIuMzMgMjIuOTEsMTIuNjUgMjIuNzUsMTIuOTNMMTguMDgsMjFDMTcuNzIsMjEuNjIgMTcuMDYsMjIgMTYuMzUsMjJINy42NUM2Ljk0LDIyIDYuMjgsMjEuNjIgNS45MiwyMUwxLjI1LDEyLjkzQzEuMDksMTIuNjUgMSwxMi4zMyAxLDEyQzEsMTEuNjcgMS4wOSwxMS4zNSAxLjI1LDExLjA3TDUuOTIsM0M2LjI4LDIuMzggNi45NCwyIDcuNjUsMkgxNi4zNUMxNy4wNiwyIDE3LjcyLDIuMzggMTguMDgsM0wyMi43NSwxMS4wN00yMC44LDExLjI1TDE2Ljk3LDQuOEMxNi42OCw0LjMgMTYuMTQsNCAxNS41Niw0SDguNDRDNy44Niw0IDcuMzIsNC4zIDcuMDMsNC44TDMuMiwxMS4yNUMzLjA3LDExLjUgMywxMS43NCAzLDEyQzMsMTIuMjYgMy4wNywxMi41IDMuMiwxMi43NUw3LjAzLDE5LjJDNy4zMiwxOS43IDcuODYsMjAgOC40NCwyMEgxNS41NkMxNi4xNCwyMCAxNi42OCwxOS43IDE2Ljk3LDE5LjJMMjAuOCwxMi43NUMyMC45MywxMi41IDIxLDEyLjI2IDIxLDEyQzIxLDExLjc0IDIwLjkzLDExLjUgMjAuOCwxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlYaW5nID0gXCJNNC44LDNDMy44LDMgMywzLjggMyw0LjhWMTkuMkMzLDIwLjIgMy44LDIxIDQuOCwyMUgxOS4yQzIwLjIsMjEgMjEsMjAuMiAyMSwxOS4yVjQuOEMyMSwzLjggMjAuMiwzIDE5LjIsM00xNi4wNyw1SDE4LjExQzE4LjIzLDUgMTguMzMsNS4wNCAxOC4zNyw1LjEzQzE4LjQzLDUuMjIgMTguNDMsNS4zMyAxOC4zNyw1LjQ0TDEzLjksMTMuMzZMMTYuNzUsMTguNTZDMTYuODEsMTguNjcgMTYuODEsMTguNzggMTYuNzUsMTguODdDMTYuNywxOC45NSAxNi42MSwxOSAxNi41LDE5SDE0LjQ3QzE0LjE2LDE5IDE0LDE4Ljc5IDEzLjkxLDE4LjYxTDExLjA0LDEzLjM1QzExLjE4LDEzLjEgMTUuNTMsNS4zOSAxNS41Myw1LjM5QzE1LjY0LDUuMTkgMTUuNzcsNSAxNi4wNyw1TTcuMDksNy43Nkg5LjFDOS40MSw3Ljc2IDkuNTcsNy45NiA5LjY3LDguMTVMMTEuMDYsMTAuNTdDMTAuOTcsMTAuNzEgOC44OCwxNC40MiA4Ljg4LDE0LjQyQzguNzcsMTQuNjEgOC42MywxNC44MSA4LjMyLDE0LjgxSDYuM0M2LjE4LDE0LjgxIDYuMDksMTQuNzYgNi4wNCwxNC42N0M2LDE0LjU5IDYsMTQuNDcgNi4wNCwxNC4zNkw4LjE4LDEwLjU3TDYuODIsOC4yQzYuNzcsOC4wOSA2Ljc1LDggNi44MSw3Ljg5QzYuODYsNy44MSA2Ljk2LDcuNzYgNy4wOSw3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVhtbCA9IFwiTTEyLjg5LDNMMTQuODUsMy40TDExLjExLDIxTDkuMTUsMjAuNkwxMi44OSwzTTE5LjU5LDEyTDE2LDguNDFWNS41OEwyMi40MiwxMkwxNiwxOC40MVYxNS41OEwxOS41OSwxMk0xLjU4LDEyTDgsNS41OFY4LjQxTDQuNDEsMTJMOCwxNS41OFYxOC40MUwxLjU4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVhtcHAgPSBcIk0xMiwxNS40QzkuNzUsMTMuMDkgOCw5LjU0IDgsNkMyLDQgOCw2IDIsNEMyLDkuNjUgNi4zMywxNC4xMSAxMC41NSwxNi42NkM5LjM4LDE3LjUgOC4xNSwxOCA3LDE4QzcsMTkgNywxOCA3LDE5QzguMiwxOSAxMC4wMywxOC40NiAxMiwxNy40NkMxMy45NywxOC40NiAxNS44LDE5IDE3LDE5QzE3LDE4IDE3LDE5IDE3LDE4QzE1Ljg1LDE4IDE0LjYyLDE3LjUgMTMuNDUsMTYuNjZDMTcuNjYsMTQuMTEgMjIsOS42NSAyMiw0QzE2LDYgMjIsNCAxNiw2QzE2LDkuNTQgMTQuMjUsMTMuMDkgMTIsMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlZQ29tYmluYXRvciA9IFwiTTIsMkgyMlYyMkgyVjJNMTEuMjUsMTcuNUgxMi43NVYxMy4wNkwxNiw3SDE0LjVMMTIsMTEuNjZMOS41LDdIOEwxMS4yNSwxMy4wNlYxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVlhaG9vID0gXCJNMTAuNSA3LjU5TDguMTYgMTMuMkw1Ljg1IDcuNTlIMkw2LjI5IDE3LjIzTDQuNzUgMjAuN0g4LjVMMTQuMjQgNy41OUgxMC41TTE1IDEyLjczQzEzLjYzIDEyLjczIDEyLjU5IDEzLjc3IDEyLjU5IDE1QzEyLjU5IDE2LjE3IDEzLjU5IDE3LjE2IDE0LjkzIDE3LjE2QzE2LjMyIDE3LjE2IDE3LjM2IDE2LjEzIDE3LjM2IDE0LjlDMTcuMzYgMTMuNjkgMTYuMzYgMTIuNzMgMTUgMTIuNzNNMTcuNzIgMy4zTDEzLjg5IDExLjg5SDE4LjE3TDIyIDMuM0gxNy43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlZZWFzdCA9IFwiTTE4LDE0QTQsNCAwIDAsMSAyMiwxOEE0LDQgMCAwLDEgMTgsMjJBNCw0IDAgMCwxIDE0LDE4TDE0LjA5LDE3LjE1QzE0LjA1LDE2LjQ1IDEzLjkyLDE1Ljg0IDEzLjU1LDE1LjVDMTMuMzUsMTUuMyAxMy4wNywxNS4xOSAxMi43NSwxNS4xM0MxMS43OSwxNS42OCAxMC42OCwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDEwLjY4IDE1LjY4LDExLjc5IDE1LjEzLDEyLjc1QzE1LjE5LDEzLjA3IDE1LjMsMTMuMzUgMTUuNSwxMy41NUMxNS44NCwxMy45MiAxNi40NSwxNC4wNSAxNy4xNSwxNC4wOUwxOCwxNE03LjUsMTBBMS41LDEuNSAwIDAsMSA5LDExLjVBMS41LDEuNSAwIDAsMSA3LjUsMTNBMS41LDEuNSAwIDAsMSA2LDExLjVBMS41LDEuNSAwIDAsMSA3LjUsMTBNOS41LDVDNyw1IDUsNyA1LDkuNUM1LDEyIDcsMTQgOS41LDE0QzEyLDE0IDE0LDEyIDE0LDkuNUMxNCw3IDEyLDUgOS41LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWWluWWFuZyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMkE0LDQgMCAwLDAgMTYsOEE0LDQgMCAwLDAgMTIsNE0xMiw2LjVBMS41LDEuNSAwIDAsMSAxMy41LDhBMS41LDEuNSAwIDAsMSAxMiw5LjVBMS41LDEuNSAwIDAsMSAxMC41LDhBMS41LDEuNSAwIDAsMSAxMiw2LjVNMTIsMTQuNUExLjUsMS41IDAgMCwwIDEwLjUsMTZBMS41LDEuNSAwIDAsMCAxMiwxNy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxNkExLjUsMS41IDAgMCwwIDEyLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW9nYSA9IFwiTTEzIDJDMTEuOSAyIDExIDIuOSAxMSA0QzExIDUuMTEgMTEuOSA2IDEzIDZDMTQuMTEgNiAxNSA1LjExIDE1IDRDMTUgMi45IDE0LjExIDIgMTMgMk00IDdWOUgxMFYxNUw0LjkzIDIwLjA3TDYuMzQgMjEuNUwxMy4wNiAxNC43N0wxNyAxNy4xM1YyMUgxOVYxNi41N0MxOSAxNi4yMSAxOC44MiAxNS44OSAxOC41IDE1LjcxTDE1IDEzLjZWOUgyMVY3SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW91dHViZSA9IFwiTTEwLDE1TDE1LjE5LDEyTDEwLDlWMTVNMjEuNTYsNy4xN0MyMS42OSw3LjY0IDIxLjc4LDguMjcgMjEuODQsOS4wN0MyMS45MSw5Ljg3IDIxLjk0LDEwLjU2IDIxLjk0LDExLjE2TDIyLDEyQzIyLDE0LjE5IDIxLjg0LDE1LjggMjEuNTYsMTYuODNDMjEuMzEsMTcuNzMgMjAuNzMsMTguMzEgMTkuODMsMTguNTZDMTkuMzYsMTguNjkgMTguNSwxOC43OCAxNy4xOCwxOC44NEMxNS44OCwxOC45MSAxNC42OSwxOC45NCAxMy41OSwxOC45NEwxMiwxOUM3LjgxLDE5IDUuMiwxOC44NCA0LjE3LDE4LjU2QzMuMjcsMTguMzEgMi42OSwxNy43MyAyLjQ0LDE2LjgzQzIuMzEsMTYuMzYgMi4yMiwxNS43MyAyLjE2LDE0LjkzQzIuMDksMTQuMTMgMi4wNiwxMy40NCAyLjA2LDEyLjg0TDIsMTJDMiw5LjgxIDIuMTYsOC4yIDIuNDQsNy4xN0MyLjY5LDYuMjcgMy4yNyw1LjY5IDQuMTcsNS40NEM0LjY0LDUuMzEgNS41LDUuMjIgNi44Miw1LjE2QzguMTIsNS4wOSA5LjMxLDUuMDYgMTAuNDEsNS4wNkwxMiw1QzE2LjE5LDUgMTguOCw1LjE2IDE5LjgzLDUuNDRDMjAuNzMsNS42OSAyMS4zMSw2LjI3IDIxLjU2LDcuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW91dHViZUdhbWluZyA9IFwiTTIyIDEzVjhMMTcgNUwxMiA4TDcgNUwyIDhWMTNMMTIgMTlMMjIgMTNNOSAxMUg3VjEzSDZWMTFINFYxMEg2VjhIN1YxMEg5VjExTTE1IDEzQzE0LjQ1IDEzIDE0IDEyLjU1IDE0IDEyUzE0LjQ1IDExIDE1IDExIDE2IDExLjQ1IDE2IDEyIDE1LjU1IDEzIDE1IDEzTTE4IDExQzE3LjQ1IDExIDE3IDEwLjU1IDE3IDEwUzE3LjQ1IDkgMTggOSAxOSA5LjQ1IDE5IDEwIDE4LjU1IDExIDE4IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVlvdXR1YmVTdHVkaW8gPSBcIk0xMCwxNUwxNSwxMkwxMCw5VjE1TTE5LjQ1LDEzTDIxLjU2LDE0LjYzQzIxLjc4LDE0Ljc4IDIxLjgxLDE1IDIxLjY2LDE1LjI4TDE5LjY0LDE4Ljc1QzE5LjUsMTguOTcgMTkuMzEsMTkuMDMgMTkuMDMsMTguOTRMMTYuNTUsMTcuOTVDMTUuODksMTguNDIgMTUuMzMsMTguNzUgMTQuODYsMTguOTRMMTQuNSwyMS41NkMxNC40MiwyMS44NCAxNC4yNywyMiAxNCwyMkgxMEM5LjczLDIyIDkuNTgsMjEuODQgOS41LDIxLjU2TDkuMTQsMTguOTRDOC41NSwxOC42OSA4LDE4LjM2IDcuNDUsMTcuOTVMNC45NywxOC45NEM0LjY5LDE5LjAzIDQuNSwxOC45NyA0LjM2LDE4Ljc1TDIuMzQsMTUuMjhDMi4xOSwxNSAyLjIyLDE0Ljc4IDIuNDQsMTQuNjNMNC41NSwxM0M0LjUsMTIuNzcgNC41LDEyLjQ0IDQuNSwxMkM0LjUsMTEuNTYgNC41LDExLjIzIDQuNTUsMTFMMi40NCw5LjM4QzIuMjIsOS4yMiAyLjE5LDkgMi4zNCw4LjcyTDQuMzYsNS4yNUM0LjUsNS4wMyA0LjY5LDQuOTcgNC45Nyw1LjA2TDcuNDUsNi4wNUM4LjExLDUuNTggOC42Nyw1LjI1IDkuMTQsNS4wNkw5LjUsMi40NEM5LjU4LDIuMTYgOS43MywyIDEwLDJIMTRDMTQuMjcsMiAxNC40MiwyLjE2IDE0LjUsMi40NEwxNC44Niw1LjA2QzE1LjQ1LDUuMzEgMTYsNS42NCAxNi41NSw2LjA1TDE5LjAzLDUuMDZDMTkuMzEsNC45NyAxOS41LDUuMDMgMTkuNjQsNS4yNUwyMS42Niw4LjcyQzIxLjgxLDkgMjEuNzgsOS4yMiAyMS41Niw5LjM4TDE5LjQ1LDExQzE5LjUsMTEuMjMgMTkuNSwxMS41NiAxOS41LDEyQzE5LjUsMTIuNDQgMTkuNSwxMi43NyAxOS40NSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlZb3V0dWJlU3Vic2NyaXB0aW9uID0gXCJNMjAsOEg0VjZIMjBWOE0xOCwySDZWNEgxOFYyTTIyLDEyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjEyQTIsMiAwIDAsMSA0LDEwSDIwQTIsMiAwIDAsMSAyMiwxMk0xNiwxNkwxMCwxMi43M1YxOS4yNkwxNiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlZb3V0dWJlVHYgPSBcIk0yLjUsNC41SDIxLjVDMjIuMzQsNC41IDIzLDUuMTUgMjMsNlYxNy41QzIzLDE4LjM1IDIyLjM0LDE5IDIxLjUsMTlIMi41QzEuNjUsMTkgMSwxOC4zNSAxLDE3LjVWNkMxLDUuMTUgMS42NSw0LjUgMi41LDQuNU05LjcxLDguNVYxNUwxNS40MiwxMS43TDkuNzEsOC41TTE3LjI1LDIxSDYuNjVDNi4zNSwyMSA2LjE1LDIwLjggNi4xNSwyMC41QzYuMTUsMjAuMiA2LjM1LDIwIDYuNjUsMjBIMTcuMzVDMTcuNjUsMjAgMTcuODUsMjAuMiAxNy44NSwyMC41QzE3Ljg1LDIwLjggMTcuNTUsMjEgMTcuMjUsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWXVydCA9IFwiTTIyIDE0Ljg3VjIySDE0VjE2SDEwVjIySDJWMTQuODdDMiAxNC4zMyAyLjI5IDEzLjgzIDIuNzYgMTMuNTdMOC42NiAxMC4yQzguODggMTAuMDcgOS4xNCAxMCA5LjQgMTBIMTIuNVY5SDE0VjEwSDE0LjU5QzE0Ljg1IDEwIDE1LjExIDEwLjA3IDE1LjMzIDEwLjJMMjEuMjMgMTMuNTdDMjEuNzEgMTMuODQgMjIgMTQuMzMgMjIgMTQuODdNNy44NiA2LjI1SDkuNEMxMC43MyA2LjI1IDExLjkyIDYuOTUgMTIuNSA4SDE0QzEzLjYgNi4yIDEyIDQuODUgMTAuMSA0Ljg1VjMuMzVDMTEuMSAzLjM1IDExLjk1IDIuNSAxMS45NSAxLjVWMUg3Ljg2VjIuNUM2Ljg2IDIuNSA2IDMuMjMgNiA0LjI1UzYuODYgNi4yNSA3Ljg2IDYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWldhdmUgPSBcIk0xNi4zLDEwLjU4QzEzLjE0LDEwLjU4IDEwLjYsMTMuMTMgMTAuNiwxNi4yOEMxMC42LDE5LjQzIDEzLjE1LDIyIDE2LjMsMjJDMTkuNDUsMjIgMjIsMTkuNDMgMjIsMTYuMjhDMjIsMTMuMTMgMTkuNDUsMTAuNTggMTYuMywxMC41OE0xOCwxOS4wOEgxMy4xOUwxNS44MSwxNUgxMy4zMUwxNC40LDEzLjIzSDE5LjE4TDE2LjYzLDE3LjI4SDE5LjE4TDE4LDE5LjA4TTE2LjMsMy45M1YyQzguNDEsMiAyLDguNDIgMiwxNi4zMUgzLjkyQzMuOTQsOS40NiA5LjUsMy45MyAxNi4zLDMuOTNNMTYuMyw3Ljc0VjUuODJDMTAuNSw1LjgyIDUuODEsMTAuNTMgNS44MSwxNi4zMUg3LjczQzcuNzUsMTEuNTggMTEuNTksNy43NCAxNi4zLDcuNzRcIjtcclxuZXhwb3J0IHZhciBtZGlaZW5kID0gXCJNMTEuMjgsOS44MUMxMS4yOCw5LjgxIDExLjI4LDcgMTQuMDksN0gyMi41QzIyLjUsNyAyMi41LDkuODEgMTkuNzEsOS44MUgxMS4yOE0xMS4yOCwxMy40MUMxMS4yOCwxMy40MSAxMS4yOCwxMC42IDE0LjA5LDEwLjZIMTguMzFDMTguMzEsMTAuNiAxOC4zMSwxMy40MSAxNS41LDEzLjQxSDExLjI4TTExLjI4LDE3QzExLjI4LDE3IDExLjI4LDE0LjE5IDE0LjA5LDE0LjE5SDE1LjVDMTUuNSwxNC4xOSAxNS41LDE3IDEyLjY4LDE3SDExLjI4TTEwLjQ2LDE0LjhWMTdIMS41OEw3LjMsOS4yMUgyLjRWN0gxMS42Nkw1Ljk2LDE0LjhIMTAuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWmlnYmVlID0gXCJNNC4wNiw2LjE1QzMuOTcsNi4xNyAzLjg4LDYuMjIgMy44LDYuMjhDMi42Niw3LjkgMiw5Ljg3IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTUsMjIgMTcuNjgsMjAuNjggMTkuNSwxOC42TDE3LDE4Ljg1QzE0LjI1LDE5LjE1IDExLjQ1LDE5LjE5IDguNjYsMTguOTZDNy45NSwxOC45NCA3LjI0LDE4Ljc2IDYuNTksMTguNDVDNS43MywxOC4wNiA1LjE1LDE3LjIzIDUuMDcsMTYuMjlDNS4wNiwxNi4xMyA1LjEyLDE2IDUuMjMsMTUuODdMNy40MiwxMy42TDE1LjAzLDUuN1Y1LjZIMTAuODRDOC41Nyw1LjY0IDYuMzEsNS44MiA0LjA2LDYuMTVNMjAuMTcsMTcuNUMyMC4yNiwxNy40NyAyMC4zNSwxNy40NCAyMC40MywxNy4zOUMyMS40MiwxNS44MyAyMiwxNCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQzkuMjIsMiA2LjcsMy4xMyA0Ljg5LDQuOTdINS4xN0M4LjI4LDQuNTcgMTEuNDMsNC40NyAxNC41Niw0LjY1QzE1LjUsNC42NCAxNi40NSw0LjgyIDE3LjMzLDUuMTdDMTguMjUsNS41MyAxOC44OSw2LjM4IDE5LDcuMzdDMTksNy41MyAxOC45Myw3LjcgMTguODIsNy44Mkw5LjcxLDE3LjE5TDksMTcuOTVWMTguMDZIMTMuMTRDMTUuNSwxOCAxNy44NCwxNy44MSAyMC4xNywxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVppcEJveCA9IFwiTTE0LDE3SDEyVjE1SDEwVjEzSDEyVjE1SDE0TTE0LDlIMTJWMTFIMTRWMTNIMTJWMTFIMTBWOUgxMlY3SDEwVjVIMTJWN0gxNE0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlaaXBCb3hPdXRsaW5lID0gXCJNMTIgMTdWMTVIMTRWMTdIMTJNMTQgMTNWMTFIMTJWMTNIMTRNMTQgOVY3SDEyVjlIMTRNMTAgMTFIMTJWOUgxMFYxMU0xMCAxNUgxMlYxM0gxMFYxNU0yMSA1VjE5QzIxIDIwLjEgMjAuMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0gxOUMyMC4xIDMgMjEgMy45IDIxIDVNMTkgNUgxMlY3SDEwVjVINVYxOUgxOVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVppcERpc2sgPSBcIk03LDNMMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1TDE3LDNWNUExLDEgMCAwLDEgMTYsNkgxMEExLDEgMCAwLDEgOSw1VjNIN004LDEwSDE2QTEsMSAwIDAsMSAxNywxMVYxOUg3VjExQTEsMSAwIDAsMSA4LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0FxdWFyaXVzID0gXCJNMTUsMTIuNDFMMTIsOS40MUw5LDEyLjQxTDYsOS40MUwzLjcxLDExLjcxTDIuMjksMTAuMjlMNiw2LjU5TDksOS41OUwxMiw2LjU5TDE1LDkuNTlMMTgsNi41OUwyMS43MSwxMC4yOUwyMC4yOSwxMS43MUwxOCw5LjQxTDE1LDEyLjQxTTE4LDE1LjQxTDIwLjI5LDE3LjcxTDIxLjcxLDE2LjI5TDE4LDEyLjU5TDE1LDE1LjU5TDEyLDEyLjU5TDksMTUuNTlMNiwxMi41OUwyLjI5LDE2LjI5TDMuNzEsMTcuNzFMNiwxNS40MUw5LDE4LjQxTDEyLDE1LjQxTDE1LDE4LjQxTDE4LDE1LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0FyaWVzID0gXCJNMTYsMkMxNC45NSwyIDEzLjkxLDIuMjcgMTMsMi44MUMxMi42NCwzIDEyLjMsMy4yNiAxMiwzLjU0QzExLjcsMy4yNiAxMS4zNiwzIDExLDIuODFDMTAuMDksMi4yNyA5LjA1LDIgOCwyQTYsNiAwIDAsMCAyLDhBNiw2IDAgMCwwIDgsMTRWMTJBNCw0IDAgMCwxIDQsOEE0LDQgMCAwLDEgOCw0QzksNCAxMCw0LjM5IDEwLjc1LDUuMUMxMC44NCw1LjE4IDEwLjkyLDUuMjcgMTEsNS4zNlYyMkgxM1Y1LjM2QzEzLjA4LDUuMjcgMTMuMTYsNS4xOCAxMy4yNSw1LjFDMTQuODUsMy41OCAxNy4zOCwzLjY0IDE4LjkxLDUuMjVDMjAuNDMsNi44NSAyMC4zNiw5LjM4IDE4Ljc2LDEwLjlDMTgsMTEuNjEgMTcuMDMsMTIgMTYsMTJWMTRBNiw2IDAgMCwwIDIyLDhBNiw2IDAgMCwwIDE2LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjQ2FuY2VyID0gXCJNMTIsNEM2LjUsNCAyLDcuNTggMiwxMkMyLDE0LjEyIDMuNjUsMTUuODcgNS43NiwxNkg2QTQsNCAwIDAsMCAxMCwxMkE0LDQgMCAwLDAgNiw4SDUuNzZDNy40NCw2LjQxIDkuNjksNS41NSAxMiw1LjZDMTMuNzcsNS41OCAxNS41LDYuMDcgMTcsN0wxOC4yNSw1Ljc1QzE2LjM4LDQuNTggMTQuMjEsMy45NyAxMiw0TTYsMTBBMiwyIDAgMCwxIDgsMTJDOCwxMy4xMSA3LjA4LDE0IDYsMTRDNC45NiwxNCA0LjEsMTMuMjIgNCwxMi4yQzQsMTIuMDcgNCwxMS45MyA0LDExLjhDNC4xLDEwLjc3IDQuOTcsMTAgNiwxME0xOC4yNCw4SDE4QTQsNCAwIDAsMCAxNCwxMkE0LDQgMCAwLDAgMTgsMTZIMTguMjRDMTYuNTYsMTcuNTkgMTQuMzEsMTguNDUgMTIsMTguNEMxMC4yMywxOC40MiA4LjUsMTcuOTMgNywxN0w1Ljc2LDE4LjI0QzcuNjMsMTkuNDEgOS43OSwyMCAxMiwyMEMxNy41LDIwIDIyLDE2LjQyIDIyLDEyQzIyLDkuODggMjAuMzUsOC4xMyAxOC4yNCw4TTE4LDE0QTIsMiAwIDAsMSAxNiwxMkMxNiwxMC44OSAxNi45MiwxMCAxOCwxMEMxOS4wNCwxMCAxOS45LDEwLjc4IDIwLDExLjhDMjAsMTEuOTMgMjAsMTIuMDcgMjAsMTIuMkMxOS45LDEzLjIzIDE5LjAzLDE0IDE4LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0NhcHJpY29ybiA9IFwiTTE1LDEzQzE0LjMsMTMgMTMuNjEsMTMuMTkgMTMsMTMuNTVWNkEzLDMgMCAwLDAgMTAsM0M5LjI1LDMgOC41NSwzLjI5IDgsMy43OEM3LjQ1LDMuMjggNi43NCwzIDYsM1Y1QTEsMSAwIDAsMSA3LDZWMTZIOVY2QTEsMSAwIDAsMSAxMCw1QTEsMSAwIDAsMSAxMSw2VjE3QTIsMiAwIDAsMSA5LDE5VjIxQzEwLjE1LDIxIDExLjI1LDIwLjUgMTIsMTkuNjJDMTMuNDUsMjEuMjkgMTUuOTcsMjEuNDcgMTcuNjQsMjBDMTkuMzEsMTguNTggMTkuNSwxNi4wNSAxOC4wNCwxNC4zOEMxNy4yOCwxMy41IDE2LjE3LDEzIDE1LDEzTTE1LDE5QTIsMiAwIDAsMSAxMywxN0EyLDIgMCAwLDEgMTUsMTVBMiwyIDAgMCwxIDE3LDE3QTIsMiAwIDAsMSAxNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlab2RpYWNHZW1pbmkgPSBcIk0xOCw1LjNDMTkuMzUsNC45NyAyMC42Niw0LjU0IDIxLjk0LDRMMjEuMTgsMi4xNEMxOC4yNywzLjM2IDE1LjE1LDQgMTIsNEM4Ljg1LDQgNS43MywzLjM4IDIuODIsMi4xN0wyLjA2LDRDMy4zNCw0LjU0IDQuNjUsNC45NyA2LDUuM1YxOC43QzQuNjUsMTkuMDMgMy4zNCwxOS40NiAyLjA2LDIwTDIuODIsMjEuODZDOC43LDE5LjQyIDE1LjMsMTkuNDIgMjEuMTgsMjEuODZMMjEuOTQsMjBDMjAuNjYsMTkuNDYgMTkuMzUsMTkuMDMgMTgsMTguN1Y1LjNNOCwxOC4zVjUuNjlDOS4zMiw1Ljg5IDEwLjY2LDYgMTIsNkMxMy4zNCw2IDE0LjY4LDUuODkgMTYsNS42OVYxOC4zMUMxMy4zNSwxNy45IDEwLjY1LDE3LjkgOCwxOC4zMVYxOC4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0xlbyA9IFwiTTIwLDE3QTMsMyAwIDAsMSAxNywyMEMxNS4zOCwxOS45MiAxNC4wOCwxOC42MiAxNCwxN0MxNC4xNiwxNS4zOSAxNC41LDEzLjggMTUsMTIuMjZDMTUuNTQsMTAuNTUgMTUuODcsOC43OSAxNiw3QzE1LjkzLDQuMjcgMTMuNzMsMi4wNyAxMSwyQzguMjcsMi4wNyA2LjA3LDQuMjcgNiw3QzYuMTUsOC41MyA2LjUsMTAuMDMgNywxMS41TDcuMjEsMTIuMkM1LjEsMTEuNTMgMi44NiwxMi43IDIuMTksMTQuOEMxLjUsMTYuOTEgMi42OCwxOS4xNiA0Ljc5LDE5LjgzQzYuOSwyMC41IDkuMTQsMTkuMzMgOS44MSwxNy4yMkM5Ljk0LDE2LjgzIDEwLDE2LjQxIDEwLDE2QzkuODQsMTQuMjcgOS41LDEyLjU2IDguOTEsMTAuOTJDOC40Nyw5LjY1IDguMTYsOC4zNCA4LDdDOC4wOCw1LjM4IDkuMzgsNC4wOCAxMSw0QzEyLjYyLDQuMDggMTMuOTIsNS4zOCAxNCw3QzEzLjg0LDguNjEgMTMuNSwxMC4yIDEzLDExLjc0QzEyLjQ2LDEzLjQ1IDEyLjEzLDE1LjIxIDEyLDE3QzEyLjA3LDE5LjczIDE0LjI3LDIxLjkzIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0gyME02LDE4QTIsMiAwIDAsMSA0LDE2QTIsMiAwIDAsMSA2LDE0QTIsMiAwIDAsMSA4LDE2QTIsMiAwIDAsMSA2LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0xpYnJhID0gXCJNMjAsMTZWMThIMTNWMTUuOTFDMTYsMTUuMzYgMTcuOTYsMTIuNSAxNy40MSw5LjVDMTYuODYsNi41IDE0LDQuNTQgMTEsNS4wOUM4LDUuNjUgNi4wNCw4LjUgNi41OSwxMS41QzcsMTMuNzQgOC43NiwxNS41IDExLDE1LjkxVjE4SDRWMTZINi45MkM1LjM3LDE0LjU5IDQuNSwxMi41OSA0LjUsMTAuNUE3LjUsNy41IDAgMCwxIDEyLDNBNy41LDcuNSAwIDAsMSAxOS41LDEwLjVDMTkuNSwxMi41OSAxOC42MywxNC41OSAxNy4wOCwxNkgyME0yMCwxOUg0VjIxSDIwVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1Bpc2NlcyA9IFwiTTIwLDExSDE4QzE4LjExLDguMTkgMTguNzMsNS40MiAxOS44MSwyLjgyTDE4LDIuMDZDMTYuODEsNC45IDE2LjEzLDcuOTIgMTYsMTFIOEM3Ljg3LDcuOTIgNy4xOSw0LjkgNiwyLjA2TDQuMTQsMi44MkM1LjI0LDUuNDEgNS44Nyw4LjE4IDYsMTFINFYxM0g2QzUuODksMTUuODEgNS4yNywxOC41OCA0LjE5LDIxLjE4TDYsMjEuOTRDNy4xOSwxOS4xIDcuODcsMTYuMDggOCwxM0gxNkMxNi4xMywxNi4wOCAxNi44MSwxOS4xIDE4LDIxLjk0TDE5Ljg2LDIxLjE4QzE4Ljc2LDE4LjU5IDE4LjEzLDE1LjgyIDE4LDEzSDIwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1NhZ2l0dGFyaXVzID0gXCJNMjIsMlYxMkgyMFY1LjQxTDEwLjQxLDE1TDEyLjcxLDE3LjI5TDExLjI5LDE4LjcxTDksMTYuNDFMMy43MSwyMS43MUwyLjI5LDIwLjI5TDcuNTksMTVMNS4yOSwxMi43MUw2LjcxLDExLjI5TDksMTMuNTlMMTguNTksNEgxMlYySDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1Njb3JwaW8gPSBcIk0xNy43MSwxNS4yOUwxNi4yOSwxNi43MUwxNy41OSwxOEgxNkEyLDIgMCAwLDEgMTQsMTZWNkEzLDMgMCAwLDAgMTEsM0MxMC4yNSwzIDkuNTUsMy4yOSA5LDMuNzhDNy44NiwyLjc2IDYuMTQsMi43NiA1LDMuNzhDNC40NSwzLjI4IDMuNzQsMyAzLDNWNUExLDEgMCAwLDEgNCw2VjE2SDZWNkExLDEgMCAwLDEgNyw1QTEsMSAwIDAsMSA4LDZWMTZIMTBWNkExLDEgMCAwLDEgMTEsNUExLDEgMCAwLDEgMTIsNlYxNkE0LDQgMCAwLDAgMTYsMjBIMTcuNTlMMTYuMjksMjEuMjlMMTcuNzEsMjIuNzFMMjEuNDEsMTlMMTcuNzEsMTUuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjVGF1cnVzID0gXCJNMTUuNTksOUMxNy43LDcuNzQgMTksNS40NiAxOSwzSDE3QTUsNSAwIDAsMSAxMiw4QTUsNSAwIDAsMSA3LDNINUM1LDUuNDYgNi4zLDcuNzQgOC40MSw5QzUuMDksMTEgNCwxNS4yOCA2LDE4LjZDNy45NywyMS45MiAxMi4yNywyMyAxNS41OSwyMUMxOC45MSwxOS4wNCAyMCwxNC43NCAxOCwxMS40MkMxNy40MiwxMC40MyAxNi41OCw5LjU5IDE1LjU5LDlNMTIsMjBBNSw1IDAgMCwxIDcsMTVBNSw1IDAgMCwxIDEyLDEwQTUsNSAwIDAsMSAxNywxNUE1LDUgMCAwLDEgMTIsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjVmlyZ28gPSBcIk0xOC41LDE5LjEzQzIwLDE3Ljc3IDIwLDE1LjE4IDIwLDE0QTQsNCAwIDAsMCAxNiwxMEMxNS4zLDEwIDE0LjYsMTAuMiAxNCwxMC41NlY2QTMsMyAwIDAsMCAxMSwzQzEwLjI1LDMgOS41NSwzLjI5IDksMy43OEM3Ljg2LDIuNzYgNi4xNCwyLjc2IDUsMy43OEM0LjQ1LDMuMjggMy43NCwzIDMsM1Y1QTEsMSAwIDAsMSA0LDZWMTZINlY2QTEsMSAwIDAsMSA3LDVBMSwxIDAgMCwxIDgsNlYxNkgxMFY2QTEsMSAwIDAsMSAxMSw1QTEsMSAwIDAsMSAxMiw2VjE0QzEyLDE1LjE4IDEyLDE3Ljc3IDEzLjUsMTkuMTNDMTIuNzIsMTkuNTQgMTEuODgsMTkuODQgMTEsMjBWMjJDMTIuMjksMjIgMTQuODQsMjAuNzQgMTYsMjAuMTNDMTcuMTYsMjAuNzQgMTkuNzEsMjIgMjEsMjJWMjBDMjAuMTIsMTkuODQgMTkuMjgsMTkuNTQgMTguNSwxOS4xM00xNiwxMkEyLDIgMCAwLDEgMTgsMTRDMTgsMTYuOTIgMTcuNDYsMTggMTYsMThDMTQuNTQsMTggMTQsMTYuOTIgMTQsMTRBMiwyIDAgMCwxIDE2LDEyWlwiO1xyXG4iLCIvLyBBdHRyaWJ1dGlvbjogaHR0cHM6Ly9naXRodWIuY29tL1Jlb2Npbi9vYnNpZGlhbi1tYXJrZG93bi1mb3JtYXR0aW5nLWFzc2lzdGFudC1wbHVnaW4vYmxvYi9tYWluL3NyYy9pY29ucy50c1xuaW1wb3J0IHsgYWRkSWNvbiB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCAqIGFzIG1kaUljb25zIGZyb20gJ0BtZGkvanMnO1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb1N2ZyhpY29uKSB7XG4gICAgcmV0dXJuIGBcbiAgICA8c3ZnIHN0eWxlPSBcIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudGNvbG9yXCIgZD1cIiR7aWNvbn1cIiAvPlxuICAgIDwvc3ZnPmA7IC8vXG59XG5leHBvcnQgY29uc3QgaWNvbnMgPSB7XG4gICAgYWdfZXhwYW5kOiBtZGlJY29ucy5tZGlBcnJvd0V4cGFuZEFsbCxcbiAgICBhZ19jb2xsYXBzZTogbWRpSWNvbnMubWRpQXJyb3dDb2xsYXBzZUFsbCxcbiAgICBhZ19zZWxlY3RfYWxsOiBtZGlJY29ucy5tZGlTZWxlY3RBbGwsXG4gICAgYWdfc2VsZWN0X2ludmVyc2U6IG1kaUljb25zLm1kaVNlbGVjdENvbXBhcmUsXG4gICAgYWdfc2VsZWN0X25laWdoYm9yczogbWRpSWNvbnMubWRpU2VsZWN0R3JvdXAsXG4gICAgYWdfbG9jazogbWRpSWNvbnMubWRpTG9jayxcbiAgICBhZ191bmxvY2s6IG1kaUljb25zLm1kaUxvY2tPcGVuVmFyaWFudE91dGxpbmUsXG4gICAgYWdfaGlkZTogbWRpSWNvbnMubWRpRXllT2ZmLFxuICAgIGFnX3VuaGlkZTogbWRpSWNvbnMubWRpRXllLFxuICAgIGFnX2ZpdDogbWRpSWNvbnMubWRpRml0VG9QYWdlT3V0bGluZSxcbiAgICBhZ19pbWFnZTogbWRpSWNvbnMubWRpSW1hZ2UsXG4gICAgYWdfd29ya3NwYWNlOiBtZGlJY29ucy5tZGlUb29sYm94T3V0bGluZSxcbiAgICBhZ19sb2NhbDogbWRpSWNvbnMubWRpRmxhcmUsXG4gICAgYWdfZmRnZDogbWRpSWNvbnMubWRpR3JhaW4sXG4gICAgYWdfY29uY2VudHJpYzogbWRpSWNvbnMubWRpR3JhcGhxbCxcbiAgICBhZ19ncmlkOiBtZGlJY29ucy5tZGlEb3RzR3JpZCxcbiAgICBhZ19oaWVyYXJjaHk6IG1kaUljb25zLm1kaUdyYXBoLFxuICAgIGFnX2ZpbGU6IG1kaUljb25zLm1kaUZpbGVPdXRsaW5lLFxuICAgIGFnX2ZpbHRlcjogbWRpSWNvbnMubWRpRmlsdGVyT3V0bGluZSxcbiAgICBhZ19zYXZlOiBtZGlJY29ucy5tZGlDb250ZW50U2F2ZSxcbiAgICBhZ19ub2RlX2xpc3Q6IG1kaUljb25zLm1kaUZvcm1hdExpc3RCdWxsZXRlZFR5cGUsXG4gICAgYWdfc3R5bGU6IG1kaUljb25zLm1kaVBhbGV0dGVPdXRsaW5lLFxuICAgIGFnX2hlbHA6IG1kaUljb25zLm1kaUhlbHAsXG59O1xuZXhwb3J0IGNvbnN0IGFkZEljb25zID0gKCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKGljb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgYWRkSWNvbihrZXkucmVwbGFjZSgnXycsICctJykucmVwbGFjZSgnXycsICctJyksIHBhdGhUb1N2ZyhpY29uc1trZXldKSk7XG4gICAgfSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBleHBvcnQgbGV0IGljb247XG4gICAgZXhwb3J0IGxldCBvbkNsaWNrO1xuICAgIGV4cG9ydCBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBleHBvcnQgbGV0IHRpdGxlO1xuPC9zY3JpcHQ+XG5cblxuPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJqdWdnbC1idXR0b25cIiBvbjpjbGljaz17b25DbGlja30gYXJpYS1sYWJlbD17dGl0bGV9IHtkaXNhYmxlZH0+XG4gICAgPHN2ZyBzdHlsZT0gXCJ3aWR0aDoxN3B4O2hlaWdodDoxN3B4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGggZD17aWNvbn0gLz5cbiAgICA8L3N2Zz5cbjwvYnV0dG9uPiIsImltcG9ydCB7IEl0ZW1WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgSlVHR0xfSEVMUF9WSUVXIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmV4cG9ydCBjbGFzcyBKdWdnbEhlbHBWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmZyYW1lID0gbnVsbDtcbiAgICB9XG4gICAgYXN5bmMgb25PcGVuKCkge1xuICAgICAgICB0aGlzLmZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICAgIHRoaXMuZnJhbWUuYWRkQ2xhc3MoYGp1Z2dsLXNpdGVgKTtcbiAgICAgICAgdGhpcy5mcmFtZS5zZXRBdHRyKCdzdHlsZScsICdoZWlnaHQ6IDEwMCU7IHdpZHRoOjEwMCUnKTtcbiAgICAgICAgdGhpcy5mcmFtZS5zZXRBdHRyKCdzcmMnLCAnaHR0cHM6Ly9qdWdnbC5pbycpO1xuICAgICAgICB0aGlzLmZyYW1lLnNldEF0dHIoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJFbC5jaGlsZHJlblsxXS5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lKTtcbiAgICB9XG4gICAgZ2V0RGlzcGxheVRleHQoKSB7XG4gICAgICAgIHJldHVybiAnSnVnZ2wgaGVscCc7XG4gICAgfVxuICAgIGdldFZpZXdUeXBlKCkge1xuICAgICAgICByZXR1cm4gSlVHR0xfSEVMUF9WSUVXO1xuICAgIH1cbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IFRvb2xiYXJCdXR0b24gZnJvbSBcIi4vVG9vbGJhckJ1dHRvbi5zdmVsdGVcIjtcbiAgICBpbXBvcnQge2ljb25zfSBmcm9tIFwiLi4vaWNvbnNcIjtcbiAgICBpbXBvcnQge1dvcmtzcGFjZX0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtKdWdnbEhlbHBWaWV3fSBmcm9tIFwiLi4vaGVscC12aWV3XCI7XG4gICAgZXhwb3J0IGxldCB3b3Jrc3BhY2U6IFdvcmtzcGFjZTtcbiAgICBsZXQgb3BlbkhlbHAgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGxlYWYgPSB3b3Jrc3BhY2UuZ2V0TGVhZih0cnVlKTtcbiAgICAgICAgbGV0IHZpZXcgPSBuZXcgSnVnZ2xIZWxwVmlldyhsZWFmKTtcbiAgICAgICAgbGVhZi5vcGVuKHZpZXcpO1xuICAgIH1cbjwvc2NyaXB0PlxuXG48VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19oZWxwfSB0aXRsZT1cIkhlbHBcIiBvbkNsaWNrPXtvcGVuSGVscH0gLz4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gXCIuLi9pY29uc1wiO1xuICAgIGltcG9ydCB7Q29yZX0gZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCBUb29sYmFyQnV0dG9uIGZyb20gXCIuL1Rvb2xiYXJCdXR0b24uc3ZlbHRlXCI7XG4gICAgaW1wb3J0IHtkZWJvdW5jZSwgV29ya3NwYWNlfSBmcm9tIFwib2JzaWRpYW5cIjtcbiAgICBpbXBvcnQgSGVscEJ1dHRvbiBmcm9tIFwiLi9IZWxwQnV0dG9uLnN2ZWx0ZVwiO1xuXG4gICAgZXhwb3J0IGxldCB2aXo6IENvcmU7XG4gICAgZXhwb3J0IGxldCBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xuICAgIGV4cG9ydCBsZXQgZmRnZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgY29uY2VudHJpY0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZ3JpZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgaGllcmFyY2h5Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBleHBhbmRDbGljaztcbiAgICBleHBvcnQgbGV0IGNvbGxhcHNlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBoaWRlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBzZWxlY3RBbGxDbGljaztcbiAgICBleHBvcnQgbGV0IHNlbGVjdEludmVydENsaWNrO1xuICAgIGV4cG9ydCBsZXQgc2VsZWN0TmVpZ2hib3JDbGljaztcbiAgICBleHBvcnQgbGV0IGxvY2tDbGljaztcbiAgICBleHBvcnQgbGV0IHVubG9ja0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZml0Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBsb2NhbE1vZGVDbGljaztcbiAgICBleHBvcnQgbGV0IGZpbHRlcklucHV0O1xuICAgIGV4cG9ydCBsZXQgc2F2ZUNsaWNrO1xuICAgIGV4cG9ydCBsZXQgd29ya3NwYWNlOiBXb3Jrc3BhY2U7XG5cbiAgICBmaWx0ZXJJbnB1dCA9IGRlYm91bmNlKGZpbHRlcklucHV0LCA1MDAsIHRydWUpO1xuXG4gICAgbGV0IGRpc2FibGVPbk5vbmVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIGxldCBkaXNhYmxlT25BbGxQaW5uZWQgPSBmYWxzZTtcbiAgICBsZXQgZGlzYWJsZU9uTm9uZVBpbm5lZCA9IHRydWU7XG5cbiAgICBleHBvcnQgY29uc3Qgb25TZWxlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZCA9IHZpei5ub2RlcyhcIjpzZWxlY3RlZFwiKTtcbiAgICAgICAgZGlzYWJsZU9uTm9uZVNlbGVjdGVkID0gc2VsZWN0ZWQubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBUT0RPOiBIYXJkY29kZWQgY2xhc3NcbiAgICAgICAgbGV0IHBpbm5lZCA9IHZpei5ub2RlcyhcIi5waW5uZWRcIik7XG4gICAgICAgIGxldCBhbnlVbnBpbm5lZCA9IHNlbGVjdGVkLmRpZmZlcmVuY2UocGlubmVkKS5sZW5ndGggPiAwXG4gICAgICAgIGxldCBhbnlQaW5uZWQgPSBzZWxlY3RlZC5pbnRlcnNlY3Rpb24ocGlubmVkKTtcbiAgICAgICAgZGlzYWJsZU9uQWxsUGlubmVkID0gIWFueVVucGlubmVkIHx8IGRpc2FibGVPbk5vbmVTZWxlY3RlZDtcbiAgICAgICAgZGlzYWJsZU9uTm9uZVBpbm5lZCA9ICFhbnlQaW5uZWQgfHwgZGlzYWJsZU9uTm9uZVNlbGVjdGVkO1xuICAgIH1cblxuPC9zY3JpcHQ+XG5cblxuPCEtLTxkaXYgY2xhc3M9XCJjeS10b29sYmFyXCI+LS0+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZmRnZH0gb25DbGljaz17ZmRnZENsaWNrfSB0aXRsZT1cIkZvcmNlIGRpcmVjdGVkIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19jb25jZW50cmljfSBvbkNsaWNrPXtjb25jZW50cmljQ2xpY2t9IHRpdGxlPVwiQ2lyY2xlIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19ncmlkfSBvbkNsaWNrPXtncmlkQ2xpY2t9IHRpdGxlPVwiR3JpZCBsYXlvdXRcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfaGllcmFyY2h5fSBvbkNsaWNrPXtoaWVyYXJjaHlDbGlja30gdGl0bGU9XCJIaWVyYXJjaGljYWwgbGF5b3V0XCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZml0fSBvbkNsaWNrPXtmaXRDbGlja30gdGl0bGU9XCJGaXQgdmlld1wiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19sb2NhbH0gb25DbGljaz17bG9jYWxNb2RlQ2xpY2t9IHRpdGxlPVwiTG9jYWwgbW9kZVwiLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxIZWxwQnV0dG9uIHt3b3Jrc3BhY2V9IC8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2F2ZX0gb25DbGljaz17c2F2ZUNsaWNrfSB0aXRsZT1cIk1hbmFnZSB3b3Jrc3BhY2UgZ3JhcGhzXCIgLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2V4cGFuZH0gb25DbGljaz17ZXhwYW5kQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uTm9uZVNlbGVjdGVkfVwiIHRpdGxlPVwiRXhwYW5kIHNlbGVjdGVkIG5vZGVzIChFKVwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19jb2xsYXBzZX0gb25DbGljaz17Y29sbGFwc2VDbGlja31cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIntkaXNhYmxlT25Ob25lU2VsZWN0ZWR9XCIgdGl0bGU9XCJDb2xsYXBzZSBleHBhbmRlZCBub2RlcyAoQylcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfaGlkZX0gb25DbGljaz17aGlkZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwie2Rpc2FibGVPbk5vbmVTZWxlY3RlZH1cIiB0aXRsZT1cIkhpZGUgc2VsZWN0ZWQgbm9kZXMgKEgpXCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2VsZWN0X2FsbH0gb25DbGljaz17c2VsZWN0QWxsQ2xpY2t9IHRpdGxlPVwiU2VsZWN0IGFsbCBub2RlcyAoQSlcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2VsZWN0X2ludmVyc2V9IG9uQ2xpY2s9e3NlbGVjdEludmVydENsaWNrfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwie2Rpc2FibGVPbk5vbmVTZWxlY3RlZH1cIiB0aXRsZT1cIkludmVydCBzZWxlY3Rpb24gKEkpXCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX3NlbGVjdF9uZWlnaGJvcnN9IG9uQ2xpY2s9e3NlbGVjdE5laWdoYm9yQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uTm9uZVNlbGVjdGVkfVwiIHRpdGxlPVwiU2VsZWN0IG5laWdoYm9ycyAoTilcIi8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19sb2NrfSBvbkNsaWNrPXtsb2NrQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uQWxsUGlubmVkfVwiIHRpdGxlPVwiTG9jayBzZWxlY3RlZCBub2RlcyBpbiBwbGFjZSAoUClcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfdW5sb2NrfSBvbkNsaWNrPXt1bmxvY2tDbGlja31cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIntkaXNhYmxlT25Ob25lUGlubmVkfVwiIHRpdGxlPVwiVW5sb2NrIHNlbGVjdGVkIG5vZGVzIGluIHBsYWNlIChVKVwiLz5cbjwvZGl2PlxuPCEtLTwvZGl2Pi0tPlxuPGJyIC8+PGxhYmVsIGZvcj1cImFnLWZpbHRlclwiPkZpbHRlcjogPC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImFnLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFnLWZpbHRlclwiIG9uOmlucHV0PXtmaWx0ZXJJbnB1dH0gdmFsdWU9e2ZpbHRlclZhbHVlfT4iLCJpbXBvcnQgeyBDTEFTU19BQ1RJVkVfTk9ERSwgQ0xBU1NfRVhQQU5ERUQsIERJU0NSRVRFX0xBWU9VVF9BTklNQVRJT05fVElNRSwgRElTQ1JFVEVfU1BBQ0lOR19GQUNUT1IsIExBWU9VVF9BTklNQVRJT05fVElNRSwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuZXhwb3J0IGNsYXNzIENvbGFHbG9iYWxMYXlvdXQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGFuaW1hdGUpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgQ29sYUdsb2JhbExheW91dC5ERUZBVUxULCBvcHRpb25zLCB7IGFuaW1hdGU6IGFuaW1hdGUgPyAnZW5kJyA6IGZhbHNlIH0pO1xuICAgIH1cbiAgICBzdGFydExheW91dCh2aWV3KSB7XG4gICAgICAgIHJldHVybiB2aWV3LnZpei5sYXlvdXQodGhpcy5vcHRpb25zKS5zdGFydCgpO1xuICAgIH1cbn1cbkNvbGFHbG9iYWxMYXlvdXQuREVGQVVMVCA9IHtcbiAgICBuYW1lOiAnY29sYScsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFuaW1hdGU6IHRydWUsXG4gICAgcmVmcmVzaDogMixcbiAgICBtYXhTaW11bGF0aW9uVGltZTogTEFZT1VUX0FOSU1BVElPTl9USU1FLFxuICAgIHVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZzogZmFsc2UsXG4gICAgZml0OiBmYWxzZSxcbiAgICBwYWRkaW5nOiAzMCxcbiAgICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IHRydWUsXG4gICAgLy8gcG9zaXRpb25pbmcgb3B0aW9uc1xuICAgIHJhbmRvbWl6ZTogZmFsc2UsXG4gICAgYXZvaWRPdmVybGFwOiB0cnVlLFxuICAgIGhhbmRsZURpc2Nvbm5lY3RlZDogdHJ1ZSxcbiAgICBjb252ZXJnZW5jZVRocmVzaG9sZDogMC4wMSxcbiAgICBub2RlU3BhY2luZzogMTAsIC8vIGV4dHJhIHNwYWNpbmcgYXJvdW5kIG5vZGVzXG59O1xuZXhwb3J0IGNsYXNzIEQzR2xvYmFsTGF5b3V0IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBhbmltYXRlKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIEQzR2xvYmFsTGF5b3V0LkRFRkFVTFQsIG9wdGlvbnMsIHsgYW5pbWF0ZTogYW5pbWF0ZSA/ICdlbmQnIDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHN0YXJ0TGF5b3V0KHZpZXcpIHtcbiAgICAgICAgcmV0dXJuIHZpZXcudml6LmxheW91dChPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgeyBsaW5rSWQ6IGZ1bmN0aW9uIGlkKGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC5pZDtcbiAgICAgICAgICAgIH0sIC8vIHNldHMgdGhlIG5vZGUgaWQgYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBmdW5jdGlvblxuICAgICAgICB9KSkuc3RhcnQoKTtcbiAgICB9XG59XG5EM0dsb2JhbExheW91dC5ERUZBVUxUID0ge1xuICAgIG5hbWU6ICdkMy1mb3JjZScsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFuaW1hdGU6ICdlbmQnLFxuICAgIG1heEl0ZXJhdGlvbnM6IDAsXG4gICAgbWF4U2ltdWxhdGlvblRpbWU6IExBWU9VVF9BTklNQVRJT05fVElNRSxcbiAgICB1bmdyYWJpZnlXaGlsZVNpbXVsYXRpbmc6IGZhbHNlLFxuICAgIGZpeGVkQWZ0ZXJEcmFnZ2luZzogZmFsc2UsXG4gICAgZml0OiBmYWxzZSxcbiAgICBwYWRkaW5nOiAzMCxcbiAgICAvKiogZDMtZm9yY2UgQVBJKiovXG4gICAgYWxwaGE6IDEsXG4gICAgYWxwaGFNaW46IDAuMDAxLFxuICAgIGFscGhhRGVjYXk6IDEgLSBNYXRoLnBvdygwLjAwMSwgMSAvIDMwMCksXG4gICAgYWxwaGFUYXJnZXQ6IDAsXG4gICAgdmVsb2NpdHlEZWNheTogMC40LFxuICAgIGNvbGxpZGVSYWRpdXM6IDYwLFxuICAgIGNvbGxpZGVTdHJlbmd0aDogMC45LFxuICAgIGNvbGxpZGVJdGVyYXRpb25zOiAxLFxuICAgIGxpbmtEaXN0YW5jZTogMTUwLFxuICAgIGxpbmtTdHJlbmd0aDogMC43LFxuICAgIGxpbmtJdGVyYXRpb25zOiAxLFxuICAgIG1hbnlCb2R5U3RyZW5ndGg6IC02MDAsXG4gICAgbWFueUJvZHlEaXN0YW5jZU1pbjogNSxcbiAgICB4U3RyZW5ndGg6IDAuMSxcbiAgICB4WDogMCxcbiAgICB5U3RyZW5ndGg6IDAuMSxcbiAgICB5WTogMCxcbiAgICByYWRpYWxTdHJlbmd0aDogMC4xLFxuICAgIHJhZGlhbFg6IDAsXG4gICAgcmFkaWFsWTogMCxcbiAgICByYWRpYWxSYWRpdXM6IDEwLFxuICAgIC8vIHBvc2l0aW9uaW5nIG9wdHNpb25zXG4gICAgcmFuZG9taXplOiBmYWxzZSxcbiAgICAvLyBpbmZpbml0ZSBsYXlvdXQgb3B0aW9uc1xuICAgIGluZmluaXRlOiBmYWxzZSwgLy8gb3ZlcnJpZGVzIGFsbCBvdGhlciBvcHRpb25zIGZvciBhIGZvcmNlcy1hbGwtdGhlLXRpbWUgbW9kZVxufTtcbmV4cG9ydCBjbGFzcyBHcmlkR2xvYmFsTGF5b3V0IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIEdyaWRHbG9iYWxMYXlvdXQuREVGQVVMVCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXJ0TGF5b3V0KHZpZXcpIHtcbiAgICAgICAgcmV0dXJuIHZpZXcudml6LmxheW91dCh0aGlzLm9wdGlvbnMpLnN0YXJ0KCk7XG4gICAgfVxufVxuR3JpZEdsb2JhbExheW91dC5ERUZBVUxUID0ge1xuICAgIG5hbWU6ICdncmlkJyxcbiAgICBhbmltYXRlOiB0cnVlLFxuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBESVNDUkVURV9MQVlPVVRfQU5JTUFUSU9OX1RJTUUsXG4gICAgLy8gYW5pbWF0aW9uRWFzaW5nIC8vIFNob3VsZCBwcm9iYWJseSBhZGQgc29tZXRoaW5nIGhlcmVcbiAgICBzcGFjaW5nRmFjdG9yOiBESVNDUkVURV9TUEFDSU5HX0ZBQ1RPUixcbiAgICBmaXQ6IGZhbHNlLFxuICAgIHBhZGRpbmc6IDMwLFxuICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogdHJ1ZSxcbiAgICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gICAgYXZvaWRPdmVybGFwOiB0cnVlLCAvLyBpZiB0cnVlLCBwcmV2ZW50cyBvdmVybGFwIG9mIG5vZGUgYm91bmRpbmcgYm94ZXNcbn07XG5leHBvcnQgY2xhc3MgRGFncmVHbG9iYWxMYXlvdXQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgRGFncmVHbG9iYWxMYXlvdXQuREVGQVVMVCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXJ0TGF5b3V0KHZpZXcpIHtcbiAgICAgICAgcmV0dXJuIHZpZXcudml6LmxheW91dCh0aGlzLm9wdGlvbnMpLnN0YXJ0KCk7XG4gICAgfVxufVxuRGFncmVHbG9iYWxMYXlvdXQuREVGQVVMVCA9IHtcbiAgICBuYW1lOiAnZGFncmUnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBhbmltYXRlOiB0cnVlLFxuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBESVNDUkVURV9MQVlPVVRfQU5JTUFUSU9OX1RJTUUsXG4gICAgc3BhY2luZ0ZhY3RvcjogRElTQ1JFVEVfU1BBQ0lOR19GQUNUT1IsXG4gICAgLy8gYW5pbWF0aW9uRWFzaW5nIC8vIFNob3VsZCBwcm9iYWJseSBhZGQgc29tZXRoaW5nIGhlcmVcbiAgICBmaXQ6IGZhbHNlLFxuICAgIHBhZGRpbmc6IDMwLFxuICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogdHJ1ZSxcbiAgICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gICAgYXZvaWRPdmVybGFwOiB0cnVlLCAvLyBpZiB0cnVlLCBwcmV2ZW50cyBvdmVybGFwIG9mIG5vZGUgYm91bmRpbmcgYm94ZXNcbn07XG5leHBvcnQgY2xhc3MgQVZTREZHbG9iYWxMYXlvdXQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgQVZTREZHbG9iYWxMYXlvdXQuREVGQVVMVCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXJ0TGF5b3V0KHZpZXcpIHtcbiAgICAgICAgcmV0dXJuIHZpZXcudml6LmxheW91dCh0aGlzLm9wdGlvbnMpLnN0YXJ0KCk7XG4gICAgfVxufVxuQVZTREZHbG9iYWxMYXlvdXQuREVGQVVMVCA9IHtcbiAgICBuYW1lOiAnYXZzZGYnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBhbmltYXRlOiAnZW5kJyxcbiAgICBhbmltYXRpb25EdXJhdGlvbjogRElTQ1JFVEVfTEFZT1VUX0FOSU1BVElPTl9USU1FLFxuICAgIC8vIGFuaW1hdGlvbkVhc2luZyAvLyBTaG91bGQgcHJvYmFibHkgYWRkIHNvbWV0aGluZyBoZXJlXG4gICAgZml0OiBmYWxzZSxcbiAgICBwYWRkaW5nOiAzMCxcbiAgICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IHRydWUsXG4gICAgLy8gcG9zaXRpb25pbmcgb3B0aW9uc1xuICAgIGF2b2lkT3ZlcmxhcDogdHJ1ZSwgLy8gaWYgdHJ1ZSwgcHJldmVudHMgb3ZlcmxhcCBvZiBub2RlIGJvdW5kaW5nIGJveGVzXG59O1xuZXhwb3J0IGNsYXNzIENvbmNlbnRyaWNMYXlvdXQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgQ29uY2VudHJpY0xheW91dC5ERUZBVUxULCBvcHRpb25zKTtcbiAgICB9XG4gICAgc3RhcnRMYXlvdXQodmlldykge1xuICAgICAgICByZXR1cm4gdmlldy52aXoubGF5b3V0KE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCB7IGNvbmNlbnRyaWM6IChuKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlmIChuLmhhc0NsYXNzKENMQVNTX0FDVElWRV9OT0RFKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlmIChuLmhhc0NsYXNzKENMQVNTX0VYUEFOREVEKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0gfSkpLnN0YXJ0KCk7XG4gICAgfVxufVxuQ29uY2VudHJpY0xheW91dC5ERUZBVUxUID0ge1xuICAgIG5hbWU6ICdjb25jZW50cmljJyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgYW5pbWF0ZTogJ2VuZCcsXG4gICAgYW5pbWF0aW9uRHVyYXRpb246IERJU0NSRVRFX0xBWU9VVF9BTklNQVRJT05fVElNRSxcbiAgICAvLyBhbmltYXRpb25FYXNpbmcgLy8gU2hvdWxkIHByb2JhYmx5IGFkZCBzb21ldGhpbmcgaGVyZVxuICAgIGZpdDogZmFsc2UsXG4gICAgcGFkZGluZzogMzAsXG4gICAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiB0cnVlLFxuICAgIC8vIHBvc2l0aW9uaW5nIG9wdGlvbnNcbiAgICBhdm9pZE92ZXJsYXA6IHRydWUsIC8vIGlmIHRydWUsIHByZXZlbnRzIG92ZXJsYXAgb2Ygbm9kZSBib3VuZGluZyBib3hlc1xufTtcbmV4cG9ydCBjb25zdCBnZXRMYXlvdXRTZXR0aW5nID0gZnVuY3Rpb24gKGxheW91dFR5cGUsIHNldHRpbmdzLCBvcHRpb25zKSB7XG4gICAgc3dpdGNoIChsYXlvdXRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ2NpcmNsZSc6XG4gICAgICAgIGNhc2UgJ2NvbmNlbnRyaWMnOiByZXR1cm4gbmV3IENvbmNlbnRyaWNMYXlvdXQob3B0aW9ucyk7XG4gICAgICAgIGNhc2UgJ2ZvcmNlLWRpcmVjdGVkJzogaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmZkZ2RMYXlvdXQgPT09ICdkMy1mb3JjZScpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRDNHbG9iYWxMYXlvdXQob3B0aW9ucywgc2V0dGluZ3MuYW5pbWF0ZUxheW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbGFHbG9iYWxMYXlvdXQob3B0aW9ucywgc2V0dGluZ3MuYW5pbWF0ZUxheW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnaGllcmFyY2h5JzpcbiAgICAgICAgY2FzZSAnZGFncmUnOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYWdyZUdsb2JhbExheW91dChvcHRpb25zKTtcbiAgICAgICAgY2FzZSAnZ3JpZCc6IHJldHVybiBuZXcgR3JpZEdsb2JhbExheW91dChvcHRpb25zKTtcbiAgICAgICAgY2FzZSAnY29sYSc6IHJldHVybiBuZXcgQ29sYUdsb2JhbExheW91dChvcHRpb25zLCBzZXR0aW5ncy5hbmltYXRlTGF5b3V0KTtcbiAgICAgICAgY2FzZSAnZDMtZm9yY2UnOiByZXR1cm4gbmV3IEQzR2xvYmFsTGF5b3V0KG9wdGlvbnMsIHNldHRpbmdzLmFuaW1hdGVMYXlvdXQpO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgcGFyc2VMYXlvdXRTZXR0aW5ncyA9IGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICAgIGlmICh0eXBlb2Ygc2V0dGluZ3MubGF5b3V0ID09PSAnc3RyaW5nJyB8fCBzZXR0aW5ncy5sYXlvdXQgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGdldExheW91dFNldHRpbmcoc2V0dGluZ3MubGF5b3V0LCBzZXR0aW5ncyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZ2V0TGF5b3V0U2V0dGluZyhzZXR0aW5ncy5sYXlvdXQubmFtZSwgc2V0dGluZ3MsIHNldHRpbmdzLmxheW91dCk7XG4gICAgfVxufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgZXhwb3J0IGxldCBuYW1lO1xuICAgIGV4cG9ydCBsZXQgb25DbGljaztcbiAgICBleHBvcnQgbGV0IG9uRGVsZXRlO1xuPC9zY3JpcHQ+XG48ZGl2IGNsYXNzPVwibGlzdC1pdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbS1wYXJ0IG1vZC1leHRlbmRlZFwiPlxuICAgICAgICB7bmFtZX1cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibGlzdC1pdGVtLXBhcnRcIiBvbjpjbGljaz17b25DbGljayhuYW1lKX0+TG9hZDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0tcGFydCBjbGlja2FibGUtaWNvblwiIGFyaWEtbGFiZWw9XCJEZWxldGUgZ3JhcGhcIiBvbjpjbGljaz17b25EZWxldGUobmFtZSl9PlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIGNsYXNzPVwiY3Jvc3NcIj5cbiAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE1LjQsMTIuNmwtMi45LDIuOUw0Ny4xLDUwTDEyLjYsODQuNmwyLjksMi45TDUwLDUyLjlsMzQuNiwzNC42bDIuOS0yLjlMNTIuOSw1MGwzNC42LTM0LjZsLTIuOS0yLjlMNTAsNDcuMUwxNS40LDEyLjZ6IFwiPlxuXG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuPC9kaXY+IiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQgU2F2ZVdvcmtzcGFjZUl0ZW0gZnJvbSBcIi4vU2F2ZVdvcmtzcGFjZUl0ZW0uc3ZlbHRlXCI7XG4gICAgZXhwb3J0IGxldCBvbkxvYWQ7XG4gICAgZXhwb3J0IGxldCBvblNhdmU7XG4gICAgZXhwb3J0IGxldCBvbkRlbGV0ZTtcbiAgICBleHBvcnQgbGV0IHNhdmVkR3JhcGhzOiBzdHJpbmdbXTtcbiAgICBsZXQgc2F2ZU5hbWUgPSAnJztcbiAgICBsZXQgX29uU2F2ZSA9IGFzeW5jIChzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgYXdhaXQgb25TYXZlKHMpO1xuICAgICAgICAvLyBFbnN1cmVzIHN2ZWx0ZSByZWFjdHMuXG4gICAgICAgIHNhdmVkR3JhcGhzID0gc2F2ZWRHcmFwaHM7XG4gICAgfVxuICAgIGxldCBfb25EZWxldGUgPSBhc3luYyhzOiBzdHJpbmcpID0+ICB7XG4gICAgICAgIGF3YWl0IG9uRGVsZXRlKHMpO1xuICAgICAgICBzYXZlZEdyYXBocyA9IHNhdmVkR3JhcGhzO1xuICAgIH1cbiAgICBsZXQgZmlsdGVySW5wdXQgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpPT4ge1xuICAgICAgICBpZihldmVudC5rZXkgPT09ICcvJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG48L3NjcmlwdD5cbjxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgPGlucHV0IGNsYXNzPVwibGlzdC1pdGVtLXBhcnQgbW9kLWV4dGVuZGVkXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNhdmUgY3VycmVudCBncmFwaCBhcy4uLlwiIGJpbmQ6dmFsdWU9e3NhdmVOYW1lfVxuICAgIG9uOmtleWRvd249e2ZpbHRlcklucHV0fSAvPlxuICAgIDxidXR0b24gY2xhc3M9XCJsaXN0LWl0ZW0tcGFydFwiIG9uOmNsaWNrPXtfb25TYXZlKHNhdmVOYW1lKX0+U2F2ZTwvYnV0dG9uPlxuPC9kaXY+XG48aHI+XG48ZGl2PlxuICAgIHsjZWFjaCBzYXZlZEdyYXBocyBhcyBncmFwaE5hbWV9XG4gICAgICAgIDxTYXZlV29ya3NwYWNlSXRlbSBuYW1lPXtncmFwaE5hbWV9IG9uQ2xpY2s9e29uTG9hZH0gb25EZWxldGU9e19vbkRlbGV0ZX0+XG4gICAgICAgIDwvU2F2ZVdvcmtzcGFjZUl0ZW0+XG4gICAgey9lYWNofVxuPC9kaXY+IiwiaW1wb3J0IHsgTW9kYWwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgU2F2ZVdvcmtzcGFjZXMgZnJvbSAnLi9TYXZlV29ya3NwYWNlcy5zdmVsdGUnO1xuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZU1vZGFsIGV4dGVuZHMgTW9kYWwge1xuICAgIGNvbnN0cnVjdG9yKGFwcCwgd29ya3NwYWNlTWFuYWdlciwgdmlldykge1xuICAgICAgICBzdXBlcihhcHApO1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSB3b3Jrc3BhY2VNYW5hZ2VyO1xuICAgICAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICAgIH1cbiAgICBvbk9wZW4oKSB7XG4gICAgICAgIHN1cGVyLm9uT3BlbigpO1xuICAgICAgICB0aGlzLnRpdGxlRWwuaW5uZXJIVE1MID0gJ01hbmFnZSB3b3Jrc3BhY2UgZ3JhcGhzJztcbiAgICAgICAgbmV3IFNhdmVXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5jb250ZW50RWwsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIG9uU2F2ZTogKHMpID0+IHRoaXMubWFuYWdlci5zYXZlR3JhcGgocywgdGhpcy52aWV3KSxcbiAgICAgICAgICAgICAgICBzYXZlZEdyYXBoczogdGhpcy5tYW5hZ2VyLmdyYXBocyxcbiAgICAgICAgICAgICAgICBvbkxvYWQ6IChzKSA9PiB0aGlzLm1hbmFnZXIubG9hZEdyYXBoKHMsIHRoaXMudmlldyksXG4gICAgICAgICAgICAgICAgb25EZWxldGU6IChzKSA9PiB0aGlzLm1hbmFnZXIuZGVsZXRlR3JhcGgocywgdGhpcy52aWV3KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCBUb29sYmFyIGZyb20gJy4uLy4uL3VpL3Rvb2xiYXIvVG9vbGJhci5zdmVsdGUnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgVml6SWQgfSBmcm9tICdqdWdnbC1hcGknO1xuaW1wb3J0IHsgQ0xBU1NfQUNUSVZFX05PREUsIENMQVNTX0NPTk5FQ1RFRF9BQ1RJVkVfTk9ERSwgQ0xBU1NfRVhQQU5ERUQsIENMQVNTX0hBUkRfRklMVEVSRUQsIENMQVNTX0lOQUNUSVZFX05PREUsIENMQVNTX1BJTk5FRCwgQ0xBU1NfUFJPVEVDVEVELCBWSUVXUE9SVF9BTklNQVRJT05fVElNRSwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TGF5b3V0U2V0dGluZywgfSBmcm9tICcuLi9sYXlvdXQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgaWNvbnMsIHBhdGhUb1N2ZyB9IGZyb20gJy4uLy4uL3VpL2ljb25zJztcbmltcG9ydCB7IFdvcmtzcGFjZU1vZGFsIH0gZnJvbSAnLi4vLi4vdWkvd29ya3NwYWNlLW1vZGFsJztcbmNsYXNzIEV2ZW50UmVjIHtcbn1cbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VNb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcih2aWV3KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICAgIHRoaXMucmVjdXJzaW9uUHJldmVudGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XG4gICAgfVxuICAgIG9ubG9hZCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmlldy52aXpSZWFkeSkge1xuICAgICAgICAgICAgdGhpcy5fb25Mb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy52aWV3Lm9uKCd2aXpSZWFkeScsICh2aXopID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkxvYWQoKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfb25Mb2FkKCkge1xuICAgICAgICB0aGlzLnZpeiA9IHRoaXMudmlldy52aXo7XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3O1xuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbG9yID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS10ZXh0LXNlbGVjdGlvbicpO1xuICAgICAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhY2tncm91bmQtc2Vjb25kYXJ5Jyk7XG4gICAgICAgIGNvbnN0IHRleHRDb2xvciA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdGV4dC1ub3JtYWwnKTtcbiAgICAgICAgY29uc3QgZm9udCA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdGV4dCcpO1xuICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzLnZpZXcucGx1Z2luO1xuICAgICAgICAvLyB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgZWFjaCBvcHRpb24gYXJlIG91dGxpbmVkIGJlbG93OlxuICAgICAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIG1lbnVSYWRpdXM6IDcwLFxuICAgICAgICAgICAgc2VsZWN0b3I6ICdub2RlJyxcbiAgICAgICAgICAgIGNvbW1hbmRzOiAobikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1hbmRzID0gW107XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBWaXpJZC5mcm9tTm9kZShuKTtcbiAgICAgICAgICAgICAgICBpZiAoaWQuc3RvcmVJZCA9PT0gJ2NvcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogcGF0aFRvU3ZnKGljb25zLmFnX2ZpbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiBhc3luYyBmdW5jdGlvbiAoZWxlLCBnZXN0dXJlU3RhcnQsIGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5vcGVuRmlsZUZyb21Ob2RlKGVsZSwgZXZlbnQub3JpZ2luYWxFdmVudC5tZXRhS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29tbWFuZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBhdGhUb1N2ZyhpY29ucy5hZ19oaWRlKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlLnJlbW92ZU5vZGVzKGVsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwYXRoVG9TdmcoaWNvbnMuYWdfZml0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlLnVwZGF0ZUFjdGl2ZU5vZGUoZWxlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwgLy8gd2hldGhlciB0aGUgY29tbWFuZCBpcyBzZWxlY3RhYmxlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG4uaGFzQ2xhc3MoQ0xBU1NfUElOTkVEKSkge1xuICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBhdGhUb1N2ZyhpY29ucy5hZ191bmxvY2spLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZS51bnBpbihlbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsIC8vIHdoZXRoZXIgdGhlIGNvbW1hbmQgaXMgc2VsZWN0YWJsZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogcGF0aFRvU3ZnKGljb25zLmFnX2xvY2spLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZS5waW4oZWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLCAvLyB3aGV0aGVyIHRoZSBjb21tYW5kIGlzIHNlbGVjdGFibGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuLmhhc0NsYXNzKENMQVNTX0VYUEFOREVEKSkge1xuICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBhdGhUb1N2ZyhpY29ucy5hZ19jb2xsYXBzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlLnJlbW92ZU5vZGVzKGVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwgLy8gd2hldGhlciB0aGUgY29tbWFuZCBpcyBzZWxlY3RhYmxlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwYXRoVG9TdmcoaWNvbnMuYWdfZXhwYW5kKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZXhwYW5kKGVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwgLy8gd2hldGhlciB0aGUgY29tbWFuZCBpcyBzZWxlY3RhYmxlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tbWFuZHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsbENvbG9yOiBgJHtiYWNrZ3JvdW5kQ29sb3J9YCxcbiAgICAgICAgICAgIGFjdGl2ZUZpbGxDb2xvcjogYCR7c2VsZWN0Q29sb3J9YCxcbiAgICAgICAgICAgIGFjdGl2ZVBhZGRpbmc6IDIwLFxuICAgICAgICAgICAgaW5kaWNhdG9yU2l6ZTogMjQsXG4gICAgICAgICAgICBzZXBhcmF0b3JXaWR0aDogMyxcbiAgICAgICAgICAgIHNwb3RsaWdodFBhZGRpbmc6IDAsXG4gICAgICAgICAgICBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1czogdHJ1ZSxcbiAgICAgICAgICAgIC8vIG1pblNwb3RsaWdodFJhZGl1czogMTIsIC8vIHRoZSBtaW5pbXVtIHJhZGl1cyBpbiBwaXhlbHMgb2YgdGhlIHNwb3RsaWdodCAoaWdub3JlZCBmb3IgdGhlIG5vZGUgaWYgYWRhcHRhdGl2ZU5vZGVTcG90bGlnaHRSYWRpdXMgaXMgZW5hYmxlZCBidXQgc3RpbGwgdXNlZCBmb3IgdGhlIGVkZ2UgJiBiYWNrZ3JvdW5kKVxuICAgICAgICAgICAgLy8gbWF4U3BvdGxpZ2h0UmFkaXVzOiAyOCwgLy8gdGhlIG1heGltdW0gcmFkaXVzIGluIHBpeGVscyBvZiB0aGUgc3BvdGxpZ2h0IChpZ25vcmVkIGZvciB0aGUgbm9kZSBpZiBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyBpcyBlbmFibGVkIGJ1dCBzdGlsbCB1c2VkIGZvciB0aGUgZWRnZSAmIGJhY2tncm91bmQpXG4gICAgICAgICAgICBvcGVuTWVudUV2ZW50czogJ3RhcGhvbGQnLFxuICAgICAgICAgICAgaXRlbUNvbG9yOiBgJHt0ZXh0Q29sb3J9YCxcbiAgICAgICAgICAgIGl0ZW1UZXh0U2hhZG93Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICB6SW5kZXg6IDk5OTksXG4gICAgICAgICAgICBhdE1vdXNlOiBmYWxzZSxcbiAgICAgICAgICAgIG91dHNpZGVNZW51Q2FuY2VsOiAxNSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLm1lbnUgPSB0aGlzLnZpei5jeHRtZW51KGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckN5RXZlbnQoJ3RhcCcsICdub2RlJywgYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy52aWV3LnNldHRpbmdzLm9wZW5XaXRoU2hpZnQgfHwgZS5vcmlnaW5hbEV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMudmlldy5wbHVnaW4ub3BlbkZpbGVGcm9tTm9kZShlLnRhcmdldCwgZS5vcmlnaW5hbEV2ZW50Lm1ldGFLZXkpO1xuICAgICAgICAgICAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlTm9kZShlLnRhcmdldCwgdGhpcy52aWV3LnNldHRpbmdzLmF1dG9ab29tKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ3lFdmVudCgndGFwaG9sZCcsICdub2RlJywgKGUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXcuZGVzdHJveUhvdmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3lIb3ZlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckN5RXZlbnQoJ2RibGNsaWNrJywgJ25vZGUnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy52aWV3LmV4cGFuZChlLnRhcmdldCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ3lFdmVudCgndGFwc2VsZWN0IHRhcHVuc2VsZWN0IGJveHNlbGVjdCcsIG51bGwsIChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpZXcudHJpZ2dlcignc2VsZWN0Q2hhbmdlJyk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZWdpc3RlciBvbiBmaWxlIG9wZW4gZXZlbnRcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMudmlldy53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmlldy5zZXR0aW5ncy5hdXRvQWRkTm9kZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsZSAmJiB0aGlzLnZpZXcuc2V0dGluZ3MuYXV0b0FkZE5vZGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IG5ldyBWaXpJZChuYW1lLCAnY29yZScpO1xuICAgICAgICAgICAgICAgIGxldCBmb2xsb3dJbW1lZGlhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpei4kaWQoaWQudG9JZCgpKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGF3YWl0IHRoaXMudmlldy5kYXRhc3RvcmVzLmNvcmVTdG9yZS5nZXQoaWQsIHRoaXMudmlldyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudml6LnN0YXJ0QmF0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGl0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgZ2V0IHJlbW92ZWRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXouYWRkKG5vZGUpLmFkZENsYXNzKENMQVNTX1BST1RFQ1RFRCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VzID0gYXdhaXQgdGhpcy52aWV3LmJ1aWxkRWRnZXModGhpcy52aXouJGlkKGlkLnRvSWQoKSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpei5hZGQoZWRnZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcub25HcmFwaENoYW5nZWQoZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpei5lbmRCYXRjaCgpO1xuICAgICAgICAgICAgICAgICAgICBmb2xsb3dJbW1lZGlhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMudml6LiRpZChpZC50b0lkKCkpO1xuICAgICAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoQ0xBU1NfUFJPVEVDVEVEKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZU5vZGUobm9kZSwgZm9sbG93SW1tZWRpYXRlICYmIHRoaXMudmlldy5zZXR0aW5ncy5hdXRvWm9vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMudmlldy5vbignZXhwYW5kJywgKGV4cGFuZGVkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZU5vZGUoZXhwYW5kZWQsIGZhbHNlKTtcbiAgICAgICAgfSkpO1xuICAgICAgICAvLyBUT0RPOiBXaGF0IHRvIGRvIHdpdGggdGhpcz9cbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMudmlldy5vbignZWxlbWVudHNDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWN1cnNpb25QcmV2ZW50ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW1vdmUgbm9kZXMgdGhhdCBhcmUgbm90IHByb3RlY3RlZCBhbmQgbm90IGNvbm5lY3RlZCB0byBleHBhbmRlZCBub2Rlc1xuICAgICAgICAgICAgdGhpcy52aXoubm9kZXMoKVxuICAgICAgICAgICAgICAgIC5kaWZmZXJlbmNlKHRoaXMudml6Lm5vZGVzKGAuJHtDTEFTU19QUk9URUNURUR9YCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoZWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgbm9uZSBpbiB0aGUgY2xvc2VkIG5laWdoYm9yaG9vZCBhcmUgZXhwYW5kZWQuXG4gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBjbG9zZWQgbmVpZ2hib3Job29kIGluY2x1ZGVzIHRoZSBjdXJyZW50IG5vdGUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZS5jbG9zZWROZWlnaGJvcmhvb2QoYG5vZGUuJHtDTEFTU19QUk9URUNURUR9YCkubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZU5vZGUodGhpcy52aXoubm9kZXMoYC4ke0NMQVNTX0FDVElWRV9OT0RFfWApLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnJlY3Vyc2lvblByZXZlbnRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnZpZXcub25HcmFwaENoYW5nZWQoKTtcbiAgICAgICAgICAgIHRoaXMucmVjdXJzaW9uUHJldmVudGVyID0gZmFsc2U7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy53aW5kb3dFdmVudCA9IGFzeW5jIChldnQpID0+IHtcbiAgICAgICAgICAgIGlmICghKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudmlldy5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnZScpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV4cGFuZFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleSA9PT0gJ2gnIHx8IGV2dC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXkgPT09ICdpJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52ZXJ0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldnQua2V5ID09PSAnYScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleSA9PT0gJ24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROZWlnaGJvdXJzT2ZTZWxlY3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5waW5TZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXkgPT09ICd1Jykge1xuICAgICAgICAgICAgICAgIHRoaXMudW5waW5TZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXkgPT09ICdjJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXkgPT09ICd2Jykge1xuICAgICAgICAgICAgICAgIHRoaXMudmlldy5maXRWaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldnQua2V5ID09PSAnZicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXcuZml0Vmlldyh0aGlzLnZpei5ub2RlcygnOnNlbGVjdGVkJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyAvLyBSZWdpc3RlciBrZXlwcmVzcyBldmVudFxuICAgICAgICAvLyBOb3RlOiBSZWdpc3RlcmVkIG9uIHdpbmRvdyBiZWNhdXNlIGl0IHdvdWxkbid0IGZpcmUgb24gdGhlIGRpdi4uLlxuICAgICAgICBkb2N1bWVudC5vbigna2V5ZG93bicsICcuY3ktY29udGVudCcsIHRoaXMud2luZG93RXZlbnQsIHRydWUpO1xuICAgIH1cbiAgICByZWdpc3RlckN5RXZlbnQobmFtZSwgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuZXZlbnRzLnB1c2goeyBldmVudE5hbWU6IG5hbWUsIHNlbGVjdG9yOiBzZWxlY3RvciwgZXZlbnQ6IGNhbGxiYWNrIH0pO1xuICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKG5hbWUsIHNlbGVjdG9yLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpei5vbihuYW1lLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb251bmxvYWQoKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5ldmVudHMpIHtcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lci5zZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIHRoaXMudml6Lm9mZihsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVyLnNlbGVjdG9yLCBsaXN0ZW5lci5ldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpei5vZmYobGlzdGVuZXIuZXZlbnROYW1lLCBsaXN0ZW5lci5ldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgICAgZG9jdW1lbnQub2ZmKCdrZXlkb3duJywgJy5jeS1jb250ZW50JywgdGhpcy53aW5kb3dFdmVudCwgdHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLnRvb2xiYXIpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbGJhci4kZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1lbnUpIHtcbiAgICAgICAgICAgIHRoaXMubWVudS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0TmFtZSgpIHtcbiAgICAgICAgcmV0dXJuICd3b3Jrc3BhY2UnO1xuICAgIH1cbiAgICBmaWxsTWVudShtZW51LCBub2Rlcykge1xuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZSgnRXhwYW5kIHNlbGVjdGlvbiAoRSknKS5zZXRJY29uKCdhZy1leHBhbmQnKVxuICAgICAgICAgICAgICAgICAgICAub25DbGljayhhc3luYyAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudmlldy5leHBhbmQobm9kZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKCdDb2xsYXBzZSBzZWxlY3Rpb24gKEMpJykuc2V0SWNvbignYWctY29sbGFwc2UnKVxuICAgICAgICAgICAgICAgICAgICAub25DbGljaygoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2Uobm9kZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKCdIaWRlIHNlbGVjdGlvbiAoSCknKS5zZXRJY29uKCdhZy1oaWRlJylcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2xpY2soKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZU5vZGVzKG5vZGVzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZSgnU2VsZWN0IGFsbCAoQSknKS5zZXRJY29uKCdhZy1zZWxlY3QtYWxsJylcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2xpY2soKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKCdJbnZlcnQgc2VsZWN0aW9uIChJKScpLnNldEljb24oJ2FnLXNlbGVjdC1pbnZlcnNlJylcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2xpY2soKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmVydFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoJ1NlbGVjdCBuZWlnaGJvcnMgKE4pJykuc2V0SWNvbignYWctc2VsZWN0LW5laWdoYm9ycycpXG4gICAgICAgICAgICAgICAgICAgIC5vbkNsaWNrKChldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROZWlnaGJvdXJob29kKG5vZGVzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcGlubmVkID0gdGhpcy52aWV3LmdldFBpbm5lZCgpO1xuICAgICAgICAgICAgaWYgKG5vZGVzLmRpZmZlcmVuY2UocGlubmVkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoJ1BpbiBzZWxlY3Rpb24gKFApJykuc2V0SWNvbignYWctbG9jaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAub25DbGljaygoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpbihub2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGVzLmludGVyc2VjdChwaW5uZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZSgnVW5waW4gc2VsZWN0aW9uIChVKScpLnNldEljb24oJ2FnLXVubG9jaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAub25DbGljaygoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVucGluKG5vZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY3JlYXRlVG9vbGJhcihlbGVtZW50KSB7XG4gICAgICAgIHRoaXMudG9vbGJhciA9IG5ldyBUb29sYmFyKHtcbiAgICAgICAgICAgIHRhcmdldDogZWxlbWVudCxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdml6OiB0aGlzLnZpeixcbiAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZTogdGhpcy52aWV3LnNldHRpbmdzLmZpbHRlcixcbiAgICAgICAgICAgICAgICBleHBhbmRDbGljazogdGhpcy5leHBhbmRTZWxlY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBmZGdkQ2xpY2s6ICgpID0+IHRoaXMudmlldy5zZXRMYXlvdXQoZ2V0TGF5b3V0U2V0dGluZygnZm9yY2UtZGlyZWN0ZWQnLCB0aGlzLnZpZXcuc2V0dGluZ3MpKSxcbiAgICAgICAgICAgICAgICBjb25jZW50cmljQ2xpY2s6ICgpID0+IHRoaXMudmlldy5zZXRMYXlvdXQoZ2V0TGF5b3V0U2V0dGluZygnY2lyY2xlJykpLFxuICAgICAgICAgICAgICAgIGdyaWRDbGljazogKCkgPT4gdGhpcy52aWV3LnNldExheW91dChnZXRMYXlvdXRTZXR0aW5nKCdncmlkJykpLFxuICAgICAgICAgICAgICAgIGhpZXJhcmNoeUNsaWNrOiAoKSA9PiB0aGlzLnZpZXcuc2V0TGF5b3V0KGdldExheW91dFNldHRpbmcoJ2hpZXJhcmNoeScpKSxcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUNsaWNrOiB0aGlzLmNvbGxhcHNlU2VsZWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgaGlkZUNsaWNrOiB0aGlzLnJlbW92ZVNlbGVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdEFsbENsaWNrOiB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdEludmVydENsaWNrOiB0aGlzLmludmVydFNlbGVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdE5laWdoYm9yQ2xpY2s6IHRoaXMuc2VsZWN0TmVpZ2hib3Vyc09mU2VsZWN0ZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBsb2NrQ2xpY2s6IHRoaXMucGluU2VsZWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgdW5sb2NrQ2xpY2s6IHRoaXMudW5waW5TZWxlY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBmaXRDbGljazogdGhpcy52aWV3LmZpdFZpZXcuYmluZCh0aGlzLnZpZXcpLFxuICAgICAgICAgICAgICAgIGxvY2FsTW9kZUNsaWNrOiAoKSA9PiB0aGlzLnZpZXcuc2V0TW9kZSgnbG9jYWwnKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJJbnB1dDogKGhhbmRsZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2VhcmNoRmlsdGVyKGhhbmRsZXIudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnJlc3RhcnRMYXlvdXQoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNhdmVDbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJ2FwcCcgaW4gdGhpcy52aWV3LnBsdWdpbiAmJiAnd29ya3NwYWNlTWFuYWdlcicgaW4gdGhpcy52aWV3LnBsdWdpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdvcmtzcGFjZU1vZGFsKHRoaXMudmlldy5wbHVnaW4uYXBwLCB0aGlzLnZpZXcucGx1Z2luLndvcmtzcGFjZU1hbmFnZXIsIHRoaXMudmlldykub3BlbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2U6IHRoaXMudmlldy5wbHVnaW4uYXBwLndvcmtzcGFjZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnZpZXcub24oJ3NlbGVjdENoYW5nZScsIHRoaXMudG9vbGJhci5vblNlbGVjdC5iaW5kKHRoaXMudG9vbGJhcikpO1xuICAgICAgICB0aGlzLnZpZXcub24oJ3ZpelJlYWR5JywgKHZpeikgPT4ge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyLiRzZXQoeyB2aXo6IHZpeiB9KTtcbiAgICAgICAgICAgIHRoaXMudG9vbGJhci5vblNlbGVjdC5iaW5kKHRoaXMudG9vbGJhcikoKTsgLy9cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZUFjdGl2ZU5vZGUobm9kZSwgZm9sbG93SW1tZWRpYXRlKSB7XG4gICAgICAgIHRoaXMudml6LmVsZW1lbnRzKClcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcyhbQ0xBU1NfQ09OTkVDVEVEX0FDVElWRV9OT0RFLCBDTEFTU19BQ1RJVkVfTk9ERSwgQ0xBU1NfSU5BQ1RJVkVfTk9ERV0pXG4gICAgICAgICAgICAuZGlmZmVyZW5jZShub2RlLmNsb3NlZE5laWdoYm9yaG9vZCgpKVxuICAgICAgICAgICAgLmFkZENsYXNzKENMQVNTX0lOQUNUSVZFX05PREUpO1xuICAgICAgICBub2RlLmFkZENsYXNzKENMQVNTX0FDVElWRV9OT0RFKTtcbiAgICAgICAgY29uc3QgbmVpZ2hib3VyaG9vZCA9IG5vZGUuY29ubmVjdGVkRWRnZXMoKVxuICAgICAgICAgICAgLmFkZENsYXNzKENMQVNTX0NPTk5FQ1RFRF9BQ1RJVkVfTk9ERSlcbiAgICAgICAgICAgIC5jb25uZWN0ZWROb2RlcygpXG4gICAgICAgICAgICAuYWRkQ2xhc3MoQ0xBU1NfQ09OTkVDVEVEX0FDVElWRV9OT0RFKVxuICAgICAgICAgICAgLnVuaW9uKG5vZGUpO1xuICAgICAgICBpZiAoZm9sbG93SW1tZWRpYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnZpei5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBmaXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZWxlczogbmVpZ2hib3VyaG9vZCxcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBWSUVXUE9SVF9BTklNQVRJT05fVElNRSxcbiAgICAgICAgICAgICAgICBxdWV1ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpei5vbmUoJ3RhcCcsIChlKSA9PiB7XG4gICAgICAgICAgICBlLmN5LmVsZW1lbnRzKCkucmVtb3ZlQ2xhc3MoW0NMQVNTX0NPTk5FQ1RFRF9BQ1RJVkVfTk9ERSwgQ0xBU1NfQUNUSVZFX05PREUsIENMQVNTX0lOQUNUSVZFX05PREVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGV4cGFuZFNlbGVjdGlvbigpIHtcbiAgICAgICAgYXdhaXQgdGhpcy52aWV3LmV4cGFuZCh0aGlzLnZpei5ub2RlcygnOnNlbGVjdGVkJykpO1xuICAgIH1cbiAgICBjb2xsYXBzZShub2Rlcykge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFByb3RlY3RlZCA9IG5vZGVzLmZpbHRlcihgOnNlbGVjdGVkYClcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcyhbQ0xBU1NfUFJPVEVDVEVELCBDTEFTU19FWFBBTkRFRF0pO1xuICAgICAgICBzZWxlY3RlZFByb3RlY3RlZC5vcGVuTmVpZ2hib3Job29kKClcbiAgICAgICAgICAgIC5ub2RlcygpXG4gICAgICAgICAgICAuZmlsdGVyKChlbGUpID0+IHtcbiAgICAgICAgICAgIC8vIElmIG5vbmUgaW4gdGhlIGNsb3NlZCBuZWlnaGJvcmhvb2QgYXJlIHByb3RlY3RlZCB0aGF0IGFyZW4ndCBhbHNvIHNlbGVjdGVkXG4gICAgICAgICAgICAvLyAodGhlaXIgUFJPVEVDVEVEIGZsYWcgaGFzIGJlZW4gcmVtb3ZlZClcbiAgICAgICAgICAgIHJldHVybiBlbGUuY2xvc2VkTmVpZ2hib3Job29kKGBub2RlLiR7Q0xBU1NfUFJPVEVDVEVEfWApLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZW1vdmUoKTtcbiAgICAgICAgLy8gY2FuIHRoaXMgY2F1c2UgcmFjZSBjb25kaXRpb25zIHdpdGggb24gZWxlbWVudHNDaGFuZ2U/XG4gICAgICAgIHRoaXMucmVjdXJzaW9uUHJldmVudGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52aWV3Lm9uR3JhcGhDaGFuZ2VkKHRydWUsIHRydWUpO1xuICAgICAgICB0aGlzLnJlY3Vyc2lvblByZXZlbnRlciA9IGZhbHNlO1xuICAgIH1cbiAgICBjb2xsYXBzZVNlbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZSh0aGlzLnZpei5ub2RlcygnOnNlbGVjdGVkJykpO1xuICAgIH1cbiAgICByZW1vdmVOb2Rlcyhub2Rlcykge1xuICAgICAgICBub2Rlcy5hZGRDbGFzcyhDTEFTU19IQVJEX0ZJTFRFUkVEKTtcbiAgICAgICAgdGhpcy52aWV3Lm9uR3JhcGhDaGFuZ2VkKHRydWUsIHRydWUpO1xuICAgICAgICB0aGlzLnZpZXcudHJpZ2dlcignaGlkZScsIG5vZGVzKTtcbiAgICAgICAgdGhpcy52aWV3LnRyaWdnZXIoJ3NlbGVjdENoYW5nZScpO1xuICAgIH1cbiAgICByZW1vdmVTZWxlY3Rpb24oKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTm9kZXModGhpcy52aXoubm9kZXMoJzpzZWxlY3RlZCcpKTtcbiAgICB9XG4gICAgc2VsZWN0QWxsKCkge1xuICAgICAgICB0aGlzLnZpei5ub2RlcygpLnNlbGVjdCgpO1xuICAgICAgICB0aGlzLnZpZXcudHJpZ2dlcignc2VsZWN0Q2hhbmdlJyk7XG4gICAgfVxuICAgIGludmVydFNlbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy52aXouJCgnOnNlbGVjdGVkJylcbiAgICAgICAgICAgIC51bnNlbGVjdCgpXG4gICAgICAgICAgICAuYWJzb2x1dGVDb21wbGVtZW50KClcbiAgICAgICAgICAgIC5zZWxlY3QoKTtcbiAgICAgICAgdGhpcy52aWV3LnRyaWdnZXIoJ3NlbGVjdENoYW5nZScpO1xuICAgIH1cbiAgICBzZWxlY3ROZWlnaGJvdXJzT2ZTZWxlY3RlZCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3ROZWlnaGJvdXJob29kKHRoaXMudml6Lm5vZGVzKCc6c2VsZWN0ZWQnKSk7XG4gICAgfVxuICAgIHNlbGVjdE5laWdoYm91cmhvb2Qobm9kZXMpIHtcbiAgICAgICAgLy8gVE9ETzogVGhpcyBrZWVwcyBzZWxmLWxvb3BzIHNlbGVjdGVkLlxuICAgICAgICB0aGlzLnZpei5ub2RlcygnOnNlbGVjdGVkJylcbiAgICAgICAgICAgIC51bnNlbGVjdCgpO1xuICAgICAgICBub2Rlcy5vcGVuTmVpZ2hib3Job29kKClcbiAgICAgICAgICAgIC5zZWxlY3QoKTtcbiAgICAgICAgdGhpcy52aWV3LnRyaWdnZXIoJ3NlbGVjdENoYW5nZScpO1xuICAgIH1cbiAgICB1bnBpbihub2Rlcykge1xuICAgICAgICBjb25zdCB1bmxvY2tlZCA9IG5vZGVzXG4gICAgICAgICAgICAudW5sb2NrKClcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcyhDTEFTU19QSU5ORUQpO1xuICAgICAgICB0aGlzLnZpZXcucmVzdGFydExheW91dCgpO1xuICAgICAgICB0aGlzLnZpZXcudHJpZ2dlcigndW5waW4nLCB1bmxvY2tlZCk7XG4gICAgfVxuICAgIHVucGluU2VsZWN0aW9uKCkge1xuICAgICAgICB0aGlzLnVucGluKHRoaXMudml6Lm5vZGVzKCc6c2VsZWN0ZWQnKSk7XG4gICAgfVxuICAgIHBpbihub2Rlcykge1xuICAgICAgICBjb25zdCBsb2NrZWQgPSBub2Rlc1xuICAgICAgICAgICAgLmxvY2soKVxuICAgICAgICAgICAgLmFkZENsYXNzKENMQVNTX1BJTk5FRCk7XG4gICAgICAgIHRoaXMudmlldy5yZXN0YXJ0TGF5b3V0KCk7XG4gICAgICAgIHRoaXMudmlldy50cmlnZ2VyKCdwaW4nLCBsb2NrZWQpO1xuICAgIH1cbiAgICBwaW5TZWxlY3Rpb24oKSB7XG4gICAgICAgIHRoaXMucGluKHRoaXMudml6Lm5vZGVzKCc6c2VsZWN0ZWQnKSk7XG4gICAgfVxufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQge2ljb25zfSBmcm9tIFwiLi4vaWNvbnNcIjtcbiAgICAvLyBpbXBvcnQge0NvcmV9IGZyb20gXCJjeXRvc2NhcGVcIjtcbiAgICBpbXBvcnQgVG9vbGJhckJ1dHRvbiBmcm9tIFwiLi9Ub29sYmFyQnV0dG9uLnN2ZWx0ZVwiO1xuICAgIGltcG9ydCBIZWxwQnV0dG9uIGZyb20gXCIuL0hlbHBCdXR0b24uc3ZlbHRlXCI7XG4gICAgaW1wb3J0IHtkZWJvdW5jZSwgV29ya3NwYWNlfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuICAgIGV4cG9ydCBsZXQgZmRnZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgY29uY2VudHJpY0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZ3JpZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgaGllcmFyY2h5Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBmaXRDbGljaztcbiAgICBleHBvcnQgbGV0IHdvcmtzcGFjZU1vZGVDbGljaztcbiAgICBleHBvcnQgbGV0IGZpbHRlcklucHV0O1xuICAgIGV4cG9ydCBsZXQgZmlsdGVyVmFsdWU7XG4gICAgZXhwb3J0IGxldCB3b3Jrc3BhY2U6IFdvcmtzcGFjZTtcbiAgICBmaWx0ZXJJbnB1dCA9IGRlYm91bmNlKGZpbHRlcklucHV0LCA1MDAsIHRydWUpO1xuXG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2ZkZ2R9IG9uQ2xpY2s9e2ZkZ2RDbGlja30gdGl0bGU9XCJGb3JjZSBkaXJlY3RlZCBsYXlvdXRcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfY29uY2VudHJpY30gb25DbGljaz17Y29uY2VudHJpY0NsaWNrfSB0aXRsZT1cIkNpcmNsZSBsYXlvdXRcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZ3JpZH0gb25DbGljaz17Z3JpZENsaWNrfSB0aXRsZT1cIkdyaWQgbGF5b3V0XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2hpZXJhcmNoeX0gb25DbGljaz17aGllcmFyY2h5Q2xpY2t9IHRpdGxlPVwiSGllcmFyY2hpY2FsIGxheW91dFwiLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2ZpdH0gb25DbGljaz17Zml0Q2xpY2t9IHRpdGxlPVwiRml0IHZpZXdcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfd29ya3NwYWNlfSBvbkNsaWNrPXt3b3Jrc3BhY2VNb2RlQ2xpY2t9IHRpdGxlPVwiV29ya3NwYWNlIG1vZGVcIi8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8SGVscEJ1dHRvbiB7d29ya3NwYWNlfS8+XG48L2Rpdj5cbjxiciAvPjxsYWJlbCBmb3I9XCJhZy1maWx0ZXJcIj5GaWx0ZXI6IDwvbGFiZWw+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJhZy1maWx0ZXJcIiBuYW1lPVwiYWctZmlsdGVyXCIgb246aW5wdXQ9e2ZpbHRlcklucHV0fSB2YWx1ZT17ZmlsdGVyVmFsdWV9PiIsImltcG9ydCBUb29sYmFyTG9jYWwgZnJvbSAnLi4vdWkvdG9vbGJhci9Ub29sYmFyTG9jYWwuc3ZlbHRlJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IFZpeklkIH0gZnJvbSAnanVnZ2wtYXBpJztcbmltcG9ydCB7IENMQVNTX0FDVElWRV9OT0RFLCBDTEFTU19DT05ORUNURURfQUNUSVZFX05PREUsIENMQVNTX0lOQUNUSVZFX05PREUsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldExheW91dFNldHRpbmcsIH0gZnJvbSAnLi9sYXlvdXQtc2V0dGluZ3MnO1xuY2xhc3MgRXZlbnRSZWMge1xufVxuZXhwb3J0IGNsYXNzIExvY2FsTW9kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3Iodmlldykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmV2ZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICAgIH1cbiAgICBvbmxvYWQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpZXcudml6UmVhZHkpIHtcbiAgICAgICAgICAgIHRoaXMuX29uTG9hZCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMudmlldy5vbigndml6UmVhZHknLCAodml6KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25Mb2FkKCk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX29uTG9hZCgpIHtcbiAgICAgICAgdGhpcy52aXogPSB0aGlzLnZpZXcudml6O1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ3lFdmVudCgndGFwJywgJ25vZGUnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMudmlldy5wbHVnaW4ub3BlbkZpbGVGcm9tTm9kZShlLnRhcmdldCwgZS5vcmlnaW5hbEV2ZW50Lm1ldGFLZXkpO1xuICAgICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uT3BlbkZpbGUoZmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZWdpc3RlciBvbiBmaWxlIG9wZW4gZXZlbnRcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMudmlldy53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25PcGVuRmlsZShmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBhc3luYyBvbk9wZW5GaWxlKGZpbGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXcuc2V0dGluZ3MuYXV0b0FkZE5vZGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWQgPSBuZXcgVml6SWQoZmlsZS5uYW1lLCAnY29yZScpO1xuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgdGhpcy52aXouc3RhcnRCYXRjaCgpO1xuICAgICAgICBpZiAodGhpcy52aXouJGlkKGlkLnRvSWQoKSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlRGVmID0gYXdhaXQgdGhpcy52aWV3LmRhdGFzdG9yZXMuY29yZVN0b3JlLmdldChpZCwgdGhpcy52aWV3KTtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnZpei5hZGQobm9kZURlZik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy52aXouJGlkKGlkLnRvSWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy52aWV3LmV4cGFuZChub2RlLCBmYWxzZSk7XG4gICAgICAgIG5vZGUuYWRkQ2xhc3MoQ0xBU1NfQUNUSVZFX05PREUpO1xuICAgICAgICB0aGlzLnZpei5ub2RlcygpXG4gICAgICAgICAgICAuZGlmZmVyZW5jZShub2RlLmNsb3NlZE5laWdoYm9yaG9vZCgpKVxuICAgICAgICAgICAgLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLnZpZXcub25HcmFwaENoYW5nZWQoZmFsc2UpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUZpbGUobm9kZSk7XG4gICAgICAgIHRoaXMudml6LmVuZEJhdGNoKCk7XG4gICAgfVxuICAgIHJlZ2lzdGVyQ3lFdmVudChuYW1lLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5ldmVudHMucHVzaCh7IGV2ZW50TmFtZTogbmFtZSwgc2VsZWN0b3I6IHNlbGVjdG9yLCBldmVudDogY2FsbGJhY2sgfSk7XG4gICAgICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgICAgICAgdGhpcy52aXoub24obmFtZSwgc2VsZWN0b3IsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKG5hbWUsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbnVubG9hZCgpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLmV2ZW50cykge1xuICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXoub2ZmKGxpc3RlbmVyLmV2ZW50TmFtZSwgbGlzdGVuZXIuc2VsZWN0b3IsIGxpc3RlbmVyLmV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudml6Lm9mZihsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVyLmV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2ZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnRvb2xiYXIuJGRlc3Ryb3koKTtcbiAgICB9XG4gICAgZ2V0TmFtZSgpIHtcbiAgICAgICAgcmV0dXJuICdsb2NhbCc7XG4gICAgfVxuICAgIGZpbGxNZW51KG1lbnUsIG5vZGVzKSB7XG4gICAgfVxuICAgIGNyZWF0ZVRvb2xiYXIoZWxlbWVudCkge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3O1xuICAgICAgICB0aGlzLnRvb2xiYXIgPSBuZXcgVG9vbGJhckxvY2FsKHtcbiAgICAgICAgICAgIHRhcmdldDogZWxlbWVudCxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdml6OiB0aGlzLnZpeixcbiAgICAgICAgICAgICAgICBmaXRDbGljazogdGhpcy52aWV3LmZpdFZpZXcuYmluZCh2aWV3KSxcbiAgICAgICAgICAgICAgICBmZGdkQ2xpY2s6ICgpID0+IHRoaXMudmlldy5zZXRMYXlvdXQoZ2V0TGF5b3V0U2V0dGluZygnZm9yY2UtZGlyZWN0ZWQnLCB0aGlzLnZpZXcuc2V0dGluZ3MpKSxcbiAgICAgICAgICAgICAgICBjb25jZW50cmljQ2xpY2s6ICgpID0+IHRoaXMudmlldy5zZXRMYXlvdXQoZ2V0TGF5b3V0U2V0dGluZygnY2lyY2xlJykpLFxuICAgICAgICAgICAgICAgIGdyaWRDbGljazogKCkgPT4gdGhpcy52aWV3LnNldExheW91dChnZXRMYXlvdXRTZXR0aW5nKCdncmlkJykpLFxuICAgICAgICAgICAgICAgIGhpZXJhcmNoeUNsaWNrOiAoKSA9PiB0aGlzLnZpZXcuc2V0TGF5b3V0KGdldExheW91dFNldHRpbmcoJ2hpZXJhcmNoeScpKSxcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VNb2RlQ2xpY2s6ICgpID0+IHZpZXcuc2V0TW9kZSgnd29ya3NwYWNlJyksXG4gICAgICAgICAgICAgICAgZmlsdGVySW5wdXQ6IChoYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnNlYXJjaEZpbHRlcihoYW5kbGVyLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZXN0YXJ0TGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZTogdGhpcy52aWV3LnNldHRpbmdzLmZpbHRlcixcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2U6IHRoaXMudmlldy5wbHVnaW4uYXBwLndvcmtzcGFjZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aGlzLnZpZXcub24oJ3ZpelJlYWR5JywgKHZpeikgPT4ge1xuICAgICAgICAvLyAgIHRiLiRzZXQoe3Zpejogdml6fSk7XG4gICAgICAgIC8vICAgdGIub25TZWxlY3QuYmluZCh0YikoKTtcbiAgICAgICAgLy8gfSk7XG4gICAgfVxuICAgIHVwZGF0ZUFjdGl2ZUZpbGUobm9kZSkge1xuICAgICAgICB0aGlzLnZpei5lbGVtZW50cygpXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoW0NMQVNTX0NPTk5FQ1RFRF9BQ1RJVkVfTk9ERSwgQ0xBU1NfQUNUSVZFX05PREUsIENMQVNTX0lOQUNUSVZFX05PREVdKVxuICAgICAgICAgICAgLmRpZmZlcmVuY2Uobm9kZS5jbG9zZWROZWlnaGJvcmhvb2QoKSlcbiAgICAgICAgICAgIC5hZGRDbGFzcyhDTEFTU19JTkFDVElWRV9OT0RFKTtcbiAgICAgICAgbm9kZS5hZGRDbGFzcyhDTEFTU19BQ1RJVkVfTk9ERSk7XG4gICAgICAgIG5vZGUuY29ubmVjdGVkRWRnZXMoKVxuICAgICAgICAgICAgLmFkZENsYXNzKENMQVNTX0NPTk5FQ1RFRF9BQ1RJVkVfTk9ERSlcbiAgICAgICAgICAgIC5jb25uZWN0ZWROb2RlcygpXG4gICAgICAgICAgICAuYWRkQ2xhc3MoQ0xBU1NfQ09OTkVDVEVEX0FDVElWRV9OT0RFKVxuICAgICAgICAgICAgLnVuaW9uKG5vZGUpO1xuICAgICAgICAvLyB0aGlzLnZpei5vbmUoJ3RhcCcsIChlKSA9PiB7XG4gICAgICAgIC8vICAgZS5jeS5lbGVtZW50cygpLnJlbW92ZUNsYXNzKFsnY29ubmVjdGVkLWFjdGl2ZS1maWxlJywgJ2FjdGl2ZS1maWxlJywgJ2luYWN0aXZlLWZpbGUnXSk7XG4gICAgICAgIC8vIH0pO1xuICAgIH1cbn1cbiIsIi8qIVxuICogc2VhcmNoLXF1ZXJ5LXBhcnNlci5qc1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxOVxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIChzdHJpbmcsIG9wdGlvbnMpIHtcblxuICAvLyBTZXQgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge29mZnNldHM6IHRydWV9O1xuICB9IGVsc2Uge1xuICAgIC8vIElmIG9wdGlvbnMgb2Zmc2V0cyB3YXMndCBwYXNzZWQsIHNldCBpdCB0byB0cnVlXG4gICAgb3B0aW9ucy5vZmZzZXRzID0gKHR5cGVvZiBvcHRpb25zLm9mZnNldHMgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMub2Zmc2V0cylcbiAgfVxuXG4gIGlmICghc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gJyc7XG4gIH1cblxuICAvLyBXaGVuIGEgc2ltcGxlIHN0cmluZywgcmV0dXJuIGl0XG4gIGlmICgtMSA9PT0gc3RyaW5nLmluZGV4T2YoJzonKSAmJiAhb3B0aW9ucy50b2tlbml6ZSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgLy8gV2hlbiBubyBrZXl3b3JkcyBvciByYW5nZXMgc2V0LCB0cmVhdCBhcyBhIHNpbXBsZSBzdHJpbmdcbiAgZWxzZSBpZiAoIW9wdGlvbnMua2V5d29yZHMgJiYgIW9wdGlvbnMucmFuZ2VzICYmICFvcHRpb25zLnRva2VuaXplKXtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG4gIC8vIE90aGVyd2lzZSBwYXJzZSB0aGUgYWR2YW5jZWQgcXVlcnkgc3ludGF4XG4gIGVsc2Uge1xuICAgIC8vIE91ciBvYmplY3QgdG8gc3RvcmUgdGhlIHF1ZXJ5IG9iamVjdFxuICAgIHZhciBxdWVyeSA9IHt0ZXh0OiBbXX07XG4gICAgLy8gV2hlbiBvZmZzZXRzIGlzIHRydWUsIGNyZWF0ZSB0aGVpciBhcnJheVxuICAgIGlmIChvcHRpb25zLm9mZnNldHMpIHtcbiAgICAgIHF1ZXJ5Lm9mZnNldHMgPSBbXTtcbiAgICB9XG4gICAgdmFyIGV4Y2x1c2lvbiA9IHt9O1xuICAgIHZhciB0ZXJtcyA9IFtdO1xuICAgIC8vIEdldCBhIGxpc3Qgb2Ygc2VhcmNoIHRlcm1zIHJlc3BlY3Rpbmcgc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVzXG4gICAgdmFyIHJlZ2V4ID0gLyhcXFMrOicoPzpbXidcXFxcXXxcXFxcLikqJyl8KFxcUys6XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwiKXwoLT9cIig/OlteXCJcXFxcXXxcXFxcLikqXCIpfCgtPycoPzpbXidcXFxcXXxcXFxcLikqJyl8XFxTK3xcXFMrOlxcUysvZztcbiAgICB2YXIgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIHZhciB0ZXJtID0gbWF0Y2hbMF07XG4gICAgICB2YXIgc2VwSW5kZXggPSB0ZXJtLmluZGV4T2YoJzonKTtcbiAgICAgIGlmIChzZXBJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gdGVybS5zcGxpdCgnOicpLFxuICAgICAgICAgICAga2V5ID0gdGVybS5zbGljZSgwLCBzZXBJbmRleCksXG4gICAgICAgICAgICB2YWwgPSB0ZXJtLnNsaWNlKHNlcEluZGV4ICsgMSk7XG4gICAgICAgIC8vIFN0cmlwIHN1cnJvdW5kaW5nIHF1b3Rlc1xuICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXlxcXCJ8XFxcIiR8XlxcJ3xcXCckL2csICcnKTtcbiAgICAgICAgLy8gU3RyaXAgYmFja3NsYXNoZXMgcmVzcGVjdGluZyBlc2NhcGVzXG4gICAgICAgIHZhbCA9ICh2YWwgKyAnJykucmVwbGFjZSgvXFxcXCguPykvZywgZnVuY3Rpb24gKHMsIG4xKSB7XG4gICAgICAgICAgc3dpdGNoIChuMSkge1xuICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgcmV0dXJuICdcXFxcJztcbiAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgIHJldHVybiAnXFx1MDAwMCc7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG4xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRlcm1zLnB1c2goe1xuICAgICAgICAgIGtleXdvcmQ6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICAgIG9mZnNldFN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICBvZmZzZXRFbmQ6IG1hdGNoLmluZGV4ICsgdGVybS5sZW5ndGhcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaXNFeGNsdWRlZFRlcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRlcm1bMF0gPT09ICctJykge1xuICAgICAgICAgIGlzRXhjbHVkZWRUZXJtID0gdHJ1ZTtcbiAgICAgICAgICB0ZXJtID0gdGVybS5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmlwIHN1cnJvdW5kaW5nIHF1b3Rlc1xuICAgICAgICB0ZXJtID0gdGVybS5yZXBsYWNlKC9eXFxcInxcXFwiJHxeXFwnfFxcJyQvZywgJycpO1xuICAgICAgICAvLyBTdHJpcCBiYWNrc2xhc2hlcyByZXNwZWN0aW5nIGVzY2FwZXNcbiAgICAgICAgdGVybSA9ICh0ZXJtICsgJycpLnJlcGxhY2UoL1xcXFwoLj8pL2csIGZ1bmN0aW9uIChzLCBuMSkge1xuICAgICAgICAgIHN3aXRjaCAobjEpIHtcbiAgICAgICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgICAgIHJldHVybiAnXFxcXCc7XG4gICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICByZXR1cm4gJ1xcdTAwMDAnO1xuICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBuMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc0V4Y2x1ZGVkVGVybSkge1xuICAgICAgICAgIGlmIChleGNsdXNpb25bJ3RleHQnXSkge1xuICAgICAgICAgICAgaWYgKGV4Y2x1c2lvblsndGV4dCddIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgZXhjbHVzaW9uWyd0ZXh0J10ucHVzaCh0ZXJtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGV4Y2x1c2lvblsndGV4dCddID0gW2V4Y2x1c2lvblsndGV4dCddXTtcbiAgICAgICAgICAgICAgZXhjbHVzaW9uWyd0ZXh0J10ucHVzaCh0ZXJtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmlyc3QgdGltZSBzZWVpbmcgYW4gZXhjbHVkZWQgdGV4dCB0ZXJtXG4gICAgICAgICAgICBleGNsdXNpb25bJ3RleHQnXSA9IHRlcm07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlcm1zLnB1c2goe1xuICAgICAgICAgICAgdGV4dDogdGVybSxcbiAgICAgICAgICAgIG9mZnNldFN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgIG9mZnNldEVuZDogbWF0Y2guaW5kZXggKyB0ZXJtLmxlbmd0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJldmVyc2UgdG8gZW5zdXJlIHByb3BlciBvcmRlciB3aGVuIHBvcCgpJ2luZy5cbiAgICB0ZXJtcy5yZXZlcnNlKCk7XG4gICAgLy8gRm9yIGVhY2ggc2VhcmNoIHRlcm1cbiAgICB2YXIgdGVybTtcbiAgICB3aGlsZSAodGVybSA9IHRlcm1zLnBvcCgpKSB7XG4gICAgICAvLyBXaGVuIGp1c3QgYSBzaW1wbGUgdGVybVxuICAgICAgaWYgKHRlcm0udGV4dCkge1xuICAgICAgICAvLyBXZSBhZGQgaXQgYXMgcHVyZSB0ZXh0XG4gICAgICAgIHF1ZXJ5LnRleHQucHVzaCh0ZXJtLnRleHQpO1xuICAgICAgICAvLyBXaGVuIG9mZnNldHMgaXMgdHJ1ZSwgcHVzaCBhIG5ldyBvZmZzZXRcbiAgICAgICAgaWYgKG9wdGlvbnMub2Zmc2V0cykge1xuICAgICAgICAgIHF1ZXJ5Lm9mZnNldHMucHVzaCh0ZXJtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gV2UgZ290IGFuIGFkdmFuY2VkIHNlYXJjaCBzeW50YXhcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIga2V5ID0gdGVybS5rZXl3b3JkO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUga2V5IGlzIGEgcmVnaXN0ZXJlZCBrZXl3b3JkXG4gICAgICAgIG9wdGlvbnMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdO1xuICAgICAgICB2YXIgaXNLZXl3b3JkID0gZmFsc2U7XG4gICAgICAgIHZhciBpc0V4Y2x1c2lvbiA9IGZhbHNlO1xuICAgICAgICBpZiAoIS9eLS8udGVzdChrZXkpKSB7XG4gICAgICAgICAgICBpc0tleXdvcmQgPSAhKC0xID09PSBvcHRpb25zLmtleXdvcmRzLmluZGV4T2Yoa2V5KSk7XG4gICAgICAgIH0gZWxzZSAgaWYgKGtleVswXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICB2YXIgX2tleSA9IGtleS5zbGljZSgxKTtcbiAgICAgICAgICAgIGlzS2V5d29yZCA9ICEoLTEgPT09IG9wdGlvbnMua2V5d29yZHMuaW5kZXhPZihfa2V5KSlcbiAgICAgICAgICAgIGlmIChpc0tleXdvcmQpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBfa2V5O1xuICAgICAgICAgICAgICAgIGlzRXhjbHVzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBrZXkgaXMgYSByZWdpc3RlcmVkIHJhbmdlXG4gICAgICAgIG9wdGlvbnMucmFuZ2VzID0gb3B0aW9ucy5yYW5nZXMgfHwgW107XG4gICAgICAgIHZhciBpc1JhbmdlID0gISgtMSA9PT0gb3B0aW9ucy5yYW5nZXMuaW5kZXhPZihrZXkpKTtcbiAgICAgICAgLy8gV2hlbiB0aGUga2V5IG1hdGNoZXMgYSBrZXl3b3JkXG4gICAgICAgIGlmIChpc0tleXdvcmQpIHtcbiAgICAgICAgICAvLyBXaGVuIG9mZnNldHMgaXMgdHJ1ZSwgcHVzaCBhIG5ldyBvZmZzZXRcbiAgICAgICAgICBpZiAob3B0aW9ucy5vZmZzZXRzKSB7XG4gICAgICAgICAgICBxdWVyeS5vZmZzZXRzLnB1c2goe1xuICAgICAgICAgICAgICBrZXl3b3JkOiBrZXksXG4gICAgICAgICAgICAgIHZhbHVlOiB0ZXJtLnZhbHVlLFxuICAgICAgICAgICAgICBvZmZzZXRTdGFydDogaXNFeGNsdXNpb24gPyB0ZXJtLm9mZnNldFN0YXJ0ICsgMSA6IHRlcm0ub2Zmc2V0U3RhcnQsXG4gICAgICAgICAgICAgIG9mZnNldEVuZDogdGVybS5vZmZzZXRFbmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2YWx1ZSA9IHRlcm0udmFsdWU7XG4gICAgICAgICAgLy8gV2hlbiB2YWx1ZSBpcyBhIHRoaW5nXG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gR2V0IGFuIGFycmF5IG9mIHZhbHVlcyB3aGVuIHNldmVyYWwgYXJlIHRoZXJlXG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gdmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGlmIChpc0V4Y2x1c2lvbikge1xuICAgICAgICAgICAgICBpZiAoZXhjbHVzaW9uW2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5tYW55IHRpbWVzLi4uXG4gICAgICAgICAgICAgICAgaWYgKGV4Y2x1c2lvbltrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBnb3Qgc2V2ZXJhbCB2YWx1ZXMgdGhpcyB0aW1lLi4uXG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIGNvbmNhdGVuYXRlIGJvdGggYXJyYXlzLlxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IGV4Y2x1c2lvbltrZXldLmNvbmNhdCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhcHBlbmQgdGhlIGN1cnJlbnQgc2luZ2xlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2F3IHRoYXQga2V5d29yZCBvbmx5IG9uY2UgYmVmb3JlXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBQdXQgYm90aCB0aGUgY3VycmVudCB2YWx1ZSBhbmQgdGhlIG5ld1xuICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgaW4gYW4gYXJyYXlcbiAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldID0gW2V4Y2x1c2lvbltrZXldXTtcbiAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBGaXJzdCB0aW1lIHdlIHNlZSB0aGF0IGtleXdvcmRcbiAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gLi4uYW5kIGdvdCBzZXZlcmFsIHZhbHVlcyB0aGlzIHRpbWUuLi5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIC8vIC4uLmFkZCBhbGwgdmFsdWVzIHNlZW4uXG4gICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gR290IG9ubHkgYSBzaW5nbGUgdmFsdWUgdGhpcyB0aW1lXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5hbHdheXNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi5idXQgd2UgYWx3YXlzIHJldHVybiBhbiBhcnJheSBpZiBvcHRpb24gYWx3YXlzQXJyYXkgaXMgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgc2VlbiB0aGF0IGtleXdvcmQuLi5cbiAgICAgICAgICAgICAgaWYgKHF1ZXJ5W2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5tYW55IHRpbWVzLi4uXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5W2tleV0gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgLy8gLi4uYW5kIGdvdCBzZXZlcmFsIHZhbHVlcyB0aGlzIHRpbWUuLi5cbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi4gY29uY2F0ZW5hdGUgYm90aCBhcnJheXMuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSBxdWVyeVtrZXldLmNvbmNhdCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhcHBlbmQgdGhlIGN1cnJlbnQgc2luZ2xlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBxdWVyeVtrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZSBzYXcgdGhhdCBrZXl3b3JkIG9ubHkgb25jZSBiZWZvcmVcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIFB1dCBib3RoIHRoZSBjdXJyZW50IHZhbHVlIGFuZCB0aGUgbmV3XG4gICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBpbiBhbiBhcnJheVxuICAgICAgICAgICAgICAgICAgcXVlcnlba2V5XSA9IFtxdWVyeVtrZXldXTtcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIEZpcnN0IHRpbWUgd2Ugc2VlIHRoYXQga2V5d29yZFxuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5hbmQgZ290IHNldmVyYWwgdmFsdWVzIHRoaXMgdGltZS4uLlxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgLy8gLi4uYWRkIGFsbCB2YWx1ZXMgc2Vlbi5cbiAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEdvdCBvbmx5IGEgc2luZ2xlIHZhbHVlIHRoaXMgdGltZVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWx3YXlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uYnV0IHdlIGFsd2F5cyByZXR1cm4gYW4gYXJyYXkgaWYgb3B0aW9uIGFsd2F5c0FycmF5IGlzIHRydWVcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGtleSBhbGxvd3MgYSByYW5nZVxuICAgICAgICBlbHNlIGlmIChpc1JhbmdlKSB7XG4gICAgICAgICAgLy8gV2hlbiBvZmZzZXRzIGlzIHRydWUsIHB1c2ggYSBuZXcgb2Zmc2V0XG4gICAgICAgICAgaWYgKG9wdGlvbnMub2Zmc2V0cykge1xuICAgICAgICAgICAgcXVlcnkub2Zmc2V0cy5wdXNoKHRlcm0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2YWx1ZSA9IHRlcm0udmFsdWU7XG4gICAgICAgICAgLy8gUmFuZ2UgYXJlIHNlcGFyYXRlZCB3aXRoIGEgZGFzaFxuICAgICAgICAgIHZhciByYW5nZVZhbHVlcyA9IHZhbHVlLnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gV2hlbiBib3RoIGVuZCBvZiB0aGUgcmFuZ2UgYXJlIHNwZWNpZmllZFxuICAgICAgICAgIC8vIGtleXdvcmQ6WFhYWC1ZWVlZXG4gICAgICAgICAgcXVlcnlba2V5XSA9IHt9O1xuICAgICAgICAgIGlmICgyID09PSByYW5nZVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0uZnJvbSA9IHJhbmdlVmFsdWVzWzBdO1xuICAgICAgICAgICAgcXVlcnlba2V5XS50byA9IHJhbmdlVmFsdWVzWzFdO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBXaGVuIHBhaXJzIG9mIHJhbmdlcyBhcmUgc3BlY2lmaWVkXG4gICAgICAgICAgLy8ga2V5d29yZDpYWFhYLVlZWVksQUFBQS1CQkJCXG4gICAgICAgICAgZWxzZSBpZiAoIXJhbmdlVmFsdWVzLmxlbmd0aCAlIDIpIHtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gV2hlbiBvbmx5IGdldHRpbmcgYSBzaW5nbGUgdmFsdWUsXG4gICAgICAgICAgLy8gb3IgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXNcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0uZnJvbSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBXZSBhZGQgaXQgYXMgcHVyZSB0ZXh0XG4gICAgICAgICAgdmFyIHRleHQgPSB0ZXJtLmtleXdvcmQgKyAnOicgKyB0ZXJtLnZhbHVlO1xuICAgICAgICAgIHF1ZXJ5LnRleHQucHVzaCh0ZXh0KTtcblxuICAgICAgICAgIC8vIFdoZW4gb2Zmc2V0cyBpcyB0cnVlLCBwdXNoIGEgbmV3IG9mZnNldFxuICAgICAgICAgIGlmIChvcHRpb25zLm9mZnNldHMpIHtcbiAgICAgICAgICAgIHF1ZXJ5Lm9mZnNldHMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQ6IHRleHQsXG4gICAgICAgICAgICAgIG9mZnNldFN0YXJ0OiB0ZXJtLm9mZnNldFN0YXJ0LFxuICAgICAgICAgICAgICBvZmZzZXRFbmQ6IHRlcm0ub2Zmc2V0RW5kXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb25jYXRlbmF0ZSBhbGwgdGV4dCB0ZXJtcyBpZiBhbnlcbiAgICBpZiAocXVlcnkudGV4dC5sZW5ndGgpIHtcbiAgICAgIGlmICghb3B0aW9ucy50b2tlbml6ZSkge1xuICAgICAgICBxdWVyeS50ZXh0ID0gcXVlcnkudGV4dC5qb2luKCcgJykudHJpbSgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBKdXN0IHJlbW92ZSB0aGUgYXR0cmlidXRlIHRleHQgd2hlbiBpdCdzIGVtcHR5XG4gICAgZWxzZSB7XG4gICAgICBkZWxldGUgcXVlcnkudGV4dDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZm9yZ2VkIHF1ZXJ5IG9iamVjdFxuICAgIHF1ZXJ5LmV4Y2x1ZGUgPSBleGNsdXNpb247XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbn07XG5cbmV4cG9ydHMuc3RyaW5naWZ5ID0gZnVuY3Rpb24gKHF1ZXJ5T2JqZWN0LCBvcHRpb25zLCBwcmVmaXgpIHtcblxuICAvLyBTZXQgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge29mZnNldHM6IHRydWV9O1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1ZXJ5IG9iamVjdCBpcyBmYWxzeSB3ZSBjYW4ganVzdCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXG4gIGlmICghcXVlcnlPYmplY3QpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBJZiB0aGUgcXVlcnkgb2JqZWN0IGlzIGFscmVhZHkgYSBzdHJpbmcsIHdlIGNhbiByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgaWYgKHR5cGVvZiBxdWVyeU9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcXVlcnlPYmplY3Q7XG4gIH1cblxuICAvLyBJZiB0aGUgcXVlcnkgb2JqZWN0IGlzIGFuIGFycmF5LCB3ZSBjYW4gcmV0dXJuIGl0IGNvbmNhdGVuYXRlZCB3aXRoIGEgc3BhY2VcbiAgaWYgKEFycmF5LmlzQXJyYXkocXVlcnlPYmplY3QpKSB7XG4gICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8vIElmIHRoZSBxdWVyeSBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbnkga2V5cywgd2UgY2FuIHJldHVybiBhbiBlbXB0eSBzdHJpbmdcbiAgaWYgKCFPYmplY3Qua2V5cyhxdWVyeU9iamVjdCkubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1ZXJ5IG9iamVjdCBjb250YWlucyBvbmx5IHRleHQgd2hpY2ggaXMgYSBzdHJpbmcsIHdlIGNhbiByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgaWYgKE9iamVjdC5rZXlzKHF1ZXJ5T2JqZWN0KS5sZW5ndGggPT09IDMgJiYgISFxdWVyeU9iamVjdC50ZXh0ICYmICEhcXVlcnlPYmplY3Qub2Zmc2V0cyAmJiAhIXF1ZXJ5T2JqZWN0LmV4Y2x1ZGUgJiYgdHlwZW9mIHF1ZXJ5T2JqZWN0LnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LnRleHQ7XG4gIH1cblxuICAvLyBXZSB3aWxsIHVzZSBhIHByZWZpeCBmb3IgdGhlIGV4Y2x1ZGUgc3ludGF4IGxhdGVyIG9uZVxuICBpZiAoIXByZWZpeCkge1xuICAgIHByZWZpeCA9ICcnXG4gIH1cblxuICAvLyBIZWxwZXJzXG4gIHZhciBhZGRRdW90ZXMgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5pbmRleE9mKCcgJykgPiAtIDEgPyBKU09OLnN0cmluZ2lmeShzdHJpbmcpIDogc3RyaW5nO1xuICB9O1xuICB2YXIgYWRkUHJlZml4ID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHJldHVybiBwcmVmaXggKyBzdHJpbmc7XG4gIH07XG5cbiAgLy8gS2VlcCB0cmFjayBvZiBhbGwgc2luZ2xlIHBhcnRzIGluIHRoaXMgYXJyYXlcbiAgdmFyIHBhcnRzID0gW107XG5cbiAgLy8gVGV4dFxuICBpZiAocXVlcnlPYmplY3QudGV4dCkge1xuICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgIGlmICh0eXBlb2YgcXVlcnlPYmplY3QudGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlLnB1c2gocXVlcnlPYmplY3QudGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlLnB1c2guYXBwbHkodmFsdWUsIHF1ZXJ5T2JqZWN0LnRleHQpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKHZhbHVlLm1hcChhZGRRdW90ZXMpLm1hcChhZGRQcmVmaXgpLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5d29yZHNcbiAgaWYgKG9wdGlvbnMua2V5d29yZHMpIHtcbiAgICBvcHRpb25zLmtleXdvcmRzLmZvckVhY2goZnVuY3Rpb24gKGtleXdvcmQpIHtcbiAgICAgIGlmICghcXVlcnlPYmplY3Rba2V5d29yZF0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgICAgaWYgKHR5cGVvZiBxdWVyeU9iamVjdFtrZXl3b3JkXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsdWUucHVzaChxdWVyeU9iamVjdFtrZXl3b3JkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZS5wdXNoLmFwcGx5KHZhbHVlLCBxdWVyeU9iamVjdFtrZXl3b3JkXSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkUHJlZml4KGtleXdvcmQgKyAnOicgKyB2YWx1ZS5tYXAoYWRkUXVvdGVzKS5qb2luKCcsJykpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJhbmdlc1xuICBpZiAob3B0aW9ucy5yYW5nZXMpIHtcbiAgICBvcHRpb25zLnJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgaWYgKCFxdWVyeU9iamVjdFtyYW5nZV0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5T2JqZWN0W3JhbmdlXS5mcm9tO1xuICAgICAgdmFyIHRvID0gcXVlcnlPYmplY3RbcmFuZ2VdLnRvO1xuICAgICAgaWYgKHRvKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgKyAnLScgKyB0bztcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkUHJlZml4KHJhbmdlICsgJzonICsgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4Y2x1ZGVcbiAgaWYgKHF1ZXJ5T2JqZWN0LmV4Y2x1ZGUpIHtcbiAgICBpZiAoT2JqZWN0LmtleXMocXVlcnlPYmplY3QuZXhjbHVkZSkubGVuZ3RoID4gMCkge1xuICAgICAgcGFydHMucHVzaChleHBvcnRzLnN0cmluZ2lmeShxdWVyeU9iamVjdC5leGNsdWRlLCBvcHRpb25zLCAnLScpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xuXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9zZWFyY2gtcXVlcnktcGFyc2VyJyk7XG4iLCJpbXBvcnQgc2VhcmNoUXVlcnkgZnJvbSAnc2VhcmNoLXF1ZXJ5LXBhcnNlcic7XG5pbXBvcnQgY3l0b3NjYXBlIGZyb20gJ2N5dG9zY2FwZSc7XG5jb25zdCBfY29udGFpbnNTZWxlY3RvciA9IGZ1bmN0aW9uIChhdHRyaWJ1dGUsIGZpbHRlcnMsIG9wID0gJyo9Jykge1xuICAgIGlmICh0eXBlb2YgKGZpbHRlcnMpID09PSAnc3RyaW5nJyB8fCBmaWx0ZXJzIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBbYFske2F0dHJpYnV0ZX0gJHtvcH0gJyR7ZmlsdGVyc30nXWBdO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVycy5tYXAoKHMpID0+IGBbJHthdHRyaWJ1dGV9ICR7b3B9ICcke3N9J11gKTtcbn07XG5jb25zdCBfdGFnU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFnKSB7XG4gICAgaWYgKHR5cGVvZiAodGFnKSA9PT0gJ3N0cmluZycgfHwgdGFnIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCAmJiB0YWdbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgY29uc3QgdCA9IHRhZy5zbGljZSgxKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBbYC50YWctJHt0YWcuc2xpY2UoMSkucmVwbGFjZUFsbCgnLycsICctJyl9YF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gdGFnLm1hcCgodCkgPT4ge1xuICAgICAgICBpZiAodC5sZW5ndGggPiAwICYmIHRbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIGAudGFnLSR7dC5zbGljZSgxKS5yZXBsYWNlQWxsKCcvJywgJy0nKX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbn07XG5jb25zdCBfY2xhc3NTZWxlY3RvciA9IGZ1bmN0aW9uIChjbGF6eikge1xuICAgIGlmICh0eXBlb2YgKGNsYXp6KSA9PT0gJ3N0cmluZycgfHwgY2xhenogaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIFtgLiR7Y2xhenp9YF07XG4gICAgfVxuICAgIHJldHVybiBjbGF6ei5tYXAoKGMpID0+IGAuJHtjfWApO1xufTtcbmNvbnN0IGxpdGVyYWwgPSBmdW5jdGlvbiAoYXRvbWljUXVlcnksIGtleSkge1xuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ2V4Y2x1ZGUnOiByZXR1cm4gW107XG4gICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICBjYXNlICdpZ25vcmUtY2FzZSc6XG4gICAgICAgIGNhc2UgJ3RleHQnOiByZXR1cm4gX2NvbnRhaW5zU2VsZWN0b3IoJ2NvbnRlbnQnLCBhdG9taWNRdWVyeVtrZXldLCAnQCo9Jyk7XG4gICAgICAgIGNhc2UgJ21hdGNoLWNhc2UnOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250YWluc1NlbGVjdG9yKCdjb250ZW50JywgYXRvbWljUXVlcnlba2V5XSwgJyo9Jyk7XG4gICAgICAgIGNhc2UgJ2ZpbGUnOiByZXR1cm4gX2NvbnRhaW5zU2VsZWN0b3IoJ25hbWUnLCBhdG9taWNRdWVyeVtrZXldKTtcbiAgICAgICAgY2FzZSAnbmFtZSc6IHJldHVybiBfY29udGFpbnNTZWxlY3RvcignbmFtZScsIGF0b21pY1F1ZXJ5W2tleV0sICdAKj0nKTtcbiAgICAgICAgY2FzZSAndGFnJzogcmV0dXJuIF90YWdTZWxlY3RvcihhdG9taWNRdWVyeVtrZXldKTtcbiAgICAgICAgY2FzZSAnY2xhc3MnOiByZXR1cm4gX2NsYXNzU2VsZWN0b3IoYXRvbWljUXVlcnlba2V5XSk7XG4gICAgICAgIGNhc2UgJ3Jhdyc6IHJldHVybiBbYXRvbWljUXVlcnlba2V5XV07XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBfY29udGFpbnNTZWxlY3RvcihrZXksIGF0b21pY1F1ZXJ5W2tleV0pO1xuICAgIH1cbn07XG5jb25zdCBfcGFyc2VBdG9taWNRdWVyeSA9IGZ1bmN0aW9uIChxdWVyeSwgbm9kZXMpIHtcbiAgICBjb25zdCBrZXlzID0gbmV3IFNldCgpO1xuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgT2JqZWN0LmtleXMobm9kZS5kYXRhKCkpLmZvckVhY2goKGtleSkgPT4ga2V5cy5hZGQoa2V5KSk7XG4gICAgfSk7XG4gICAgY29uc3Qga2V5d29yZHMgPSBbJ2ZpbGUnLCAndGFnJywgJ3JhdycsICdtYXRjaC1jYXNlJywgJ2lnbm9yZS1jYXNlJywgJ2NsYXNzJ107XG4gICAga2V5d29yZHMucHVzaCguLi5rZXlzKTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBrZXl3b3Jkczoga2V5d29yZHMsXG4gICAgICAgIHRva2VuaXplOiB0cnVlLFxuICAgICAgICBvZmZzZXRzOiBmYWxzZSxcbiAgICB9O1xuICAgIGNvbnN0IHBhcnNlZFF1ZXJ5ID0gc2VhcmNoUXVlcnkucGFyc2UocXVlcnksIG9wdGlvbnMpO1xuICAgIGxldCBzZWxlY3RvciA9ICdub2RlJztcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJzZWRRdWVyeSkpIHtcbiAgICAgICAgc2VsZWN0b3IgKz0gbGl0ZXJhbChwYXJzZWRRdWVyeSwga2V5KS5qb2luKCk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJlZE5vZGVzID0gbm9kZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICBpZiAocGFyc2VkUXVlcnkuZXhjbHVkZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJzZWRRdWVyeS5leGNsdWRlKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBsaXRlcmFsKHBhcnNlZFF1ZXJ5LmV4Y2x1ZGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RvciA9ICdub2RlJyArIHF1ZXJ5O1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkTm9kZXMgPSBmaWx0ZXJlZE5vZGVzLm5vdChzZWxlY3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkTm9kZXM7XG59O1xuY29uc3QgX3BhcnNlQ29uanVuY3RzID0gZnVuY3Rpb24gKHF1ZXJ5LCB0b0ZpbHRlcikge1xuICAgIGNvbnN0IGNvbmp1bmN0cyA9IFtdO1xuICAgIGNvbnN0IG5lZ2F0ZWQgPSBbXTtcbiAgICBsZXQgbmVzdGluZyA9IDA7XG4gICAgbGV0IHN0YXJ0QnJhY2UgPSAtMTtcbiAgICBsZXQgbGFzdEVuZEJyYWNlID0gLTE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocXVlcnlbaV0gPT09ICcoJykge1xuICAgICAgICAgICAgaWYgKG5lc3RpbmcgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdGFydEJyYWNlID0gaTtcbiAgICAgICAgICAgICAgICBjb25zdCBiZXR3ZWVuQnJhY2VzID0gcXVlcnkuc2xpY2UobGFzdEVuZEJyYWNlICsgMSwgaSA+IDAgPyAocXVlcnlbaSAtIDFdID09PSAnLScgPyBpIC0gMSA6IGkpIDogaSk7XG4gICAgICAgICAgICAgICAgaWYgKGJldHdlZW5CcmFjZXMudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmVnYXRlZC5wdXNoKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uanVuY3RzLnB1c2goYmV0d2VlbkJyYWNlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmVzdGluZyArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHF1ZXJ5W2ldID09PSAnKScpIHtcbiAgICAgICAgICAgIG5lc3RpbmcgLT0gMTtcbiAgICAgICAgICAgIGlmIChuZXN0aW5nID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGFzdEVuZEJyYWNlID0gaTtcbiAgICAgICAgICAgICAgICBuZWdhdGVkLnB1c2goc3RhcnRCcmFjZSA+IDAgPyBxdWVyeVtzdGFydEJyYWNlIC0gMV0gPT09ICctJyA6IGZhbHNlKTtcbiAgICAgICAgICAgICAgICBjb25qdW5jdHMucHVzaChxdWVyeS5zbGljZShzdGFydEJyYWNlICsgMSwgbGFzdEVuZEJyYWNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaSA9PT0gcXVlcnkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgYmV0d2VlbkJyYWNlcyA9IHF1ZXJ5LnNsaWNlKGxhc3RFbmRCcmFjZSArIDEpO1xuICAgICAgICAgICAgaWYgKGJldHdlZW5CcmFjZXMudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBuZWdhdGVkLnB1c2goZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbmp1bmN0cy5wdXNoKGJldHdlZW5CcmFjZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBjb2xsID0gdG9GaWx0ZXI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25qdW5jdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVjRmlsdGVyZWQgPSBfcGFyc2VEaXNqdW5jdHMoY29uanVuY3RzW2ldLCBjb2xsLCBxdWVyeSk7XG4gICAgICAgIGlmIChuZWdhdGVkW2ldKSB7XG4gICAgICAgICAgICBjb2xsID0gY29sbC5kaWZmZXJlbmNlKHJlY0ZpbHRlcmVkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbGwgPSBjb2xsLmludGVyc2VjdGlvbihyZWNGaWx0ZXJlZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGw7XG59O1xuY29uc3QgX3BhcnNlRGlzanVuY3RzID0gZnVuY3Rpb24gKHF1ZXJ5LCB0b0ZpbHRlciwgbGFzdERpc2p1bmN0KSB7XG4gICAgaWYgKGxhc3REaXNqdW5jdCA9PT0gcXVlcnkpIHtcbiAgICAgICAgcmV0dXJuIF9wYXJzZUF0b21pY1F1ZXJ5KHF1ZXJ5LCB0b0ZpbHRlcik7XG4gICAgfVxuICAgIGNvbnN0IGRpc2p1bmN0cyA9IFtdO1xuICAgIGxldCBsYXN0RW5kID0gMDtcbiAgICBsZXQgbmVzdGluZyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocXVlcnlbaV0gPT09ICcoJykge1xuICAgICAgICAgICAgbmVzdGluZyArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHF1ZXJ5W2ldID09PSAnKScpIHtcbiAgICAgICAgICAgIG5lc3RpbmcgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuZXN0aW5nID09PSAwICYmIHF1ZXJ5W2ldID09PSAnTycgJiZcbiAgICAgICAgICAgIGkgKyAxIDwgcXVlcnkubGVuZ3RoICYmIHF1ZXJ5W2kgKyAxXSA9PT0gJ1InKSB7XG4gICAgICAgICAgICBkaXNqdW5jdHMucHVzaChxdWVyeS5zbGljZShsYXN0RW5kLCBpKSk7XG4gICAgICAgICAgICBsYXN0RW5kID0gaSArIDI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RFbmQgPCBxdWVyeS5sZW5ndGgpIHtcbiAgICAgICAgZGlzanVuY3RzLnB1c2gocXVlcnkuc2xpY2UobGFzdEVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gZGlzanVuY3RzLnJlZHVjZSgoYWNjLCBzKSA9PiBcbiAgICAvLyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb246IFVzZSB0b0ZpbHRlciAtIGFjYyB0byBub3QgY29uc2lkZXIgZWxlbWVudHMgdGhhdCBhcmUgYWxyZWFkeSBtYXRjaGVkXG4gICAgYWNjLnVuaW9uKF9wYXJzZUNvbmp1bmN0cyhzLCB0b0ZpbHRlci5kaWZmZXJlbmNlKGFjYykpKSwgY3l0b3NjYXBlKCkuY29sbGVjdGlvbigpKTtcbn07XG5leHBvcnQgY29uc3QgZmlsdGVyID0gZnVuY3Rpb24gKHF1ZXJ5LCBub2Rlcykge1xuICAgIHJldHVybiBfcGFyc2VEaXNqdW5jdHMocXVlcnksIG5vZGVzLCAnJyk7XG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBkZWJvdW5jZSwgRXZlbnRzLCBNYXJrZG93blJlbmRlcmVyLCBNZW51LCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCBjeXRvc2NhcGUgZnJvbSAnY3l0b3NjYXBlJztcbmltcG9ydCB7IEdyYXBoU3R5bGVTaGVldCB9IGZyb20gJy4vc3R5bGVzaGVldCc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VNb2RlIH0gZnJvbSAnLi93b3Jrc3BhY2VzL3dvcmtzcGFjZS1tb2RlJztcbmltcG9ydCB7IFZpeklkIH0gZnJvbSAnanVnZ2wtYXBpJztcbmltcG9ydCB7IENMQVNTX0FDVElWRV9OT0RFLCBDTEFTU19DT05ORUNURURfSE9WRVIsIENMQVNTX0VYUEFOREVELCBDTEFTU19GSUxURVJFRCwgQ0xBU1NfSE9WRVIsIENMQVNTX1BJTk5FRCwgQ0xBU1NfUFJPVEVDVEVELCBDTEFTU19VTkhPVkVSLCBDTEFTU0VTLCBERUJPVU5DRV9GT0xMT1csIERFQk9VTkNFX0xBWU9VVCwgVklFV1BPUlRfQU5JTUFUSU9OX1RJTUUsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IExvY2FsTW9kZSB9IGZyb20gJy4vbG9jYWwtbW9kZSc7XG5pbXBvcnQgeyBwYXJzZUxheW91dFNldHRpbmdzIH0gZnJvbSAnLi9sYXlvdXQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyJztcbmV4cG9ydCBjb25zdCBNRF9WSUVXX1RZUEUgPSAnbWFya2Rvd24nO1xubGV0IFZJRVdfQ09VTlRFUiA9IDA7XG5leHBvcnQgY2xhc3MgSnVnZ2wgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHBsdWdpbiwgZGF0YVN0b3Jlcywgc2V0dGluZ3MsIGluaXRpYWxOb2Rlcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJlYnVpbGRSZWxhdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdE5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaG92ZXJUaW1lb3V0ID0ge307XG4gICAgICAgIHRoaXMudml6UmVhZHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kZXN0cm95SG92ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgICAgIHRoaXMud29ya3NwYWNlID0gcGx1Z2luLmFwcC53b3Jrc3BhY2U7XG4gICAgICAgIHRoaXMuaW5pdGlhbE5vZGVzID0gaW5pdGlhbE5vZGVzO1xuICAgICAgICB0aGlzLnZhdWx0ID0gcGx1Z2luLmFwcC52YXVsdDtcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgICAgIHRoaXMuZGF0YXN0b3JlcyA9IGRhdGFTdG9yZXM7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gbmV3IEV2ZW50cygpO1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5tb2RlID09PSAnbG9jYWwnKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBuZXcgTG9jYWxNb2RlKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MubW9kZSA9PT0gJ3dvcmtzcGFjZScpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IG5ldyBXb3Jrc3BhY2VNb2RlKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkQ2hpbGQodGhpcy5tb2RlKTtcbiAgICAgICAgdGhpcy5kZWJvdW5jZWRSZXN0YXJ0TGF5b3V0ID0gZGVib3VuY2UodGhpcy5yZXN0YXJ0TGF5b3V0LCBERUJPVU5DRV9MQVlPVVQsIHRydWUpO1xuICAgIH1cbiAgICBhc3luYyBvbmxvYWQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoJ2N5LWNvbnRlbnQnKTtcbiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY2FudmFzIGZpdHMgdGhlIHdob2xlIGNvbnRhaW5lclxuICAgICAgICAgICAgLy8gdGhpcy5lbGVtZW50LnNldEF0dHIoJ3N0eWxlJywgJ3BhZGRpbmc6IDAnKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyKCd0YWJpbmRleCcsIDApO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MudG9vbGJhcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICB0b29sYmFyRGl2LmFkZENsYXNzKCdjeS10b29sYmFyJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRvb2xiYXJEaXYpO1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZS5jcmVhdGVUb29sYmFyKHRvb2xiYXJEaXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBkaXYuaWQgPSAnY3knICsgVklFV19DT1VOVEVSO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRpdik7XG4gICAgICAgICAgICBkaXYuc2V0QXR0cignc3R5bGUnLCBgaGVpZ2h0OiAke3RoaXMuc2V0dGluZ3MuaGVpZ2h0fTsgd2lkdGg6JHt0aGlzLnNldHRpbmdzLndpZHRofWApO1xuICAgICAgICAgICAgZGl2LnNldEF0dHIoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgICAgIGxldCBub2RlcztcbiAgICAgICAgICAgIGxldCBpZHNJbml0aWFsID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxOb2Rlcykge1xuICAgICAgICAgICAgICAgIGlkc0luaXRpYWwgPSB0aGlzLmluaXRpYWxOb2Rlcy5tYXAoKHMpID0+IG5ldyBWaXpJZChzLCB0aGlzLmRhdGFzdG9yZXMuY29yZVN0b3JlLnN0b3JlSWQoKSkpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmV4cGFuZEluaXRpYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBhd2FpdCB0aGlzLm5laWdoYm91cmhvb2QoaWRzSW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2RlcyA9IGF3YWl0IFByb21pc2UuYWxsKGlkc0luaXRpYWwubWFwKChpZCkgPT4gdGhpcy5kYXRhc3RvcmVzLmNvcmVTdG9yZS5nZXQoaWQsIHRoaXMpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEZpbHRlciBudWxsc1xuICAgICAgICAgICAgICAgIG5vZGVzID0gbm9kZXMuZmlsdGVyKChuKSA9PiBuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpeiA9IGN5dG9zY2FwZSh7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZGl2LFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogbm9kZXMsXG4gICAgICAgICAgICAgICAgICAgIG1pblpvb206IDAuMyxcbiAgICAgICAgICAgICAgICAgICAgbWF4Wm9vbTogMTAsXG4gICAgICAgICAgICAgICAgICAgIHdoZWVsU2Vuc2l0aXZpdHk6IHRoaXMuc2V0dGluZ3Muem9vbVNwZWVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXogPSBjeXRvc2NhcGUoe1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IGRpdixcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM6IFt7IGRhdGE6IHsgaWQ6ICdhJyB9IH0sIHsgZGF0YTogeyBpZDogJ2InIH0gfV0sXG4gICAgICAgICAgICAgICAgICAgIG1pblpvb206IDAuMyxcbiAgICAgICAgICAgICAgICAgICAgbWF4Wm9vbTogMTAsXG4gICAgICAgICAgICAgICAgICAgIHdoZWVsU2Vuc2l0aXZpdHk6IHRoaXMuc2V0dGluZ3Muem9vbVNwZWVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52aXouZGJsY2xpY2soKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLm5hdmlnYXRvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hdkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIG5hdkRpdi5pZCA9ICdjeW5hdicgKyBWSUVXX0NPVU5URVI7XG4gICAgICAgICAgICAgICAgZGl2LmNoaWxkcmVuWzBdLmFwcGVuZENoaWxkKG5hdkRpdik7XG4gICAgICAgICAgICAgICAgbmF2RGl2LmFkZENsYXNzKCdjeS1uYXZpZ2F0b3InKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdGhpcy52aXoubmF2aWdhdG9yKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAnI2N5bmF2JyArIFZJRVdfQ09VTlRFUixcbiAgICAgICAgICAgICAgICAgICAgdmlld0xpdmVGcmFtZXJhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbEV2ZW50RnJhbWVyYXRlOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsTGl2ZUZyYW1lcmF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRibENsaWNrRGVsYXk6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ3VzdG9tQ29udGFpbmVyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICByZXJlbmRlckRlbGF5OiAxMDAsIC8vIG1zIHRvIHRocm90dGxlIHJlcmVuZGVyIHVwZGF0ZXMgdG8gdGhlIHBhbnpvb20gZm9yIHBlcmZvcm1hbmNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBWSUVXX0NPVU5URVIgKz0gMTtcbiAgICAgICAgICAgIGlmIChpZHNJbml0aWFsKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBpZHNJbml0aWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxOb2RlID0gdGhpcy52aXouJGlkKGlkLnRvSWQoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmV4cGFuZEluaXRpYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxOb2RlLmFkZENsYXNzKENMQVNTX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsTm9kZS5hZGRDbGFzcyhDTEFTU19QUk9URUNURUQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBub2RleiA9IHRoaXMudml6Lm5vZGVzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRnZXMgPSBhd2FpdCB0aGlzLmJ1aWxkRWRnZXMobm9kZXopO1xuICAgICAgICAgICAgICAgIHRoaXMudml6LmFkZChlZGdlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkdyYXBoQ2hhbmdlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3R5bGVzaGVldCgpO1xuICAgICAgICAgICAgLy8gU2hvdWxkbicnIHRoaXMganVzdCBjYWxsIHJlc3RhcnRMYXlvdXQ/XG4gICAgICAgICAgICBpZiAoaWRzSW5pdGlhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdGFydExheW91dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLnZpei5vbigndGFwIGJveHNlbGVjdCcsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnZpei5vbigndGFwJywgJ25vZGUnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gVml6SWQuZnJvbU5vZGUoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICghKGlkLnN0b3JlSWQgPT09ICdjb3JlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUT0RPIFRISVMgU0hPVUxEIEJFIE1PVkVEIFRPIExPQ0FMIE1PREUhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKCd0YXAnLCAnZWRnZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdG9kbzogbW92ZSB0byBjb3JyZWN0IHNwb3QgaW4gdGhlIGZpbGUuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKCdtb3VzZW92ZXInLCAnbm9kZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgZS50YXJnZXQudW5sb2NrKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIGUuY3kuZWxlbWVudHMoKVxuICAgICAgICAgICAgICAgICAgICAuZGlmZmVyZW5jZShub2RlLmNsb3NlZE5laWdoYm9yaG9vZCgpKVxuICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoQ0xBU1NfVU5IT1ZFUik7XG4gICAgICAgICAgICAgICAgbm9kZS5hZGRDbGFzcyhDTEFTU19IT1ZFUilcbiAgICAgICAgICAgICAgICAgICAgLmNvbm5lY3RlZEVkZ2VzKClcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKENMQVNTX0NPTk5FQ1RFRF9IT1ZFUilcbiAgICAgICAgICAgICAgICAgICAgLmNvbm5lY3RlZE5vZGVzKClcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKENMQVNTX0NPTk5FQ1RFRF9IT1ZFUik7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBWaXpJZC5mcm9tTm9kZShlLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgaWYgKGlkLnN0b3JlSWQgPT09ICdjb3JlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5wbHVnaW4ubWV0YWRhdGEuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoaWQuaWQsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUgJiYgZmlsZS5leHRlbnNpb24gPT09ICdtZCcgJiYgKGUub3JpZ2luYWxFdmVudC5tZXRhS2V5IHx8ICF0aGlzLnNldHRpbmdzLm1ldGFLZXlIb3ZlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB2aWV3LnZhdWx0LmNhY2hlZFJlYWQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvdmVyVGltZW91dFtlLnRhcmdldC5pZCgpXSA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4gdGhpcy5wbHVnaW4uYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdsaW5rLWhvdmVyJywgdGhpcy5lbGVtZW50LCBudWxsLCBmaWxlLnBhdGgsICcnKSwgMzAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy52aXoub24oJ21vdXNlb3ZlcicsICdlZGdlJywgYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlZGdlID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuaG92ZXJFZGdlcykge1xuICAgICAgICAgICAgICAgICAgICBlLmN5LmVsZW1lbnRzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5kaWZmZXJlbmNlKGVkZ2UuY29ubmVjdGVkTm9kZXMoKS51bmlvbihlZGdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcyhDTEFTU19VTkhPVkVSKTtcbiAgICAgICAgICAgICAgICAgICAgZWRnZS5hZGRDbGFzcygnaG92ZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbm5lY3RlZE5vZGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcyhDTEFTU19DT05ORUNURURfSE9WRVIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJ2NvbnRleHQnIGluIGVkZ2UuZGF0YSgpICYmIChlLm9yaWdpbmFsRXZlbnQubWV0YUtleSB8fCAhdGhpcy5zZXR0aW5ncy5tZXRhS2V5SG92ZXIpKSB7IC8vICYmIGUub3JpZ2luYWxFdmVudC5tZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVzb2x2ZSBTb3VyY2VQYXRoLCBjYW4gYmUgZG9uZSB1c2luZyB0aGUgc291cmNlIGZpbGUuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJUaW1lb3V0W2UudGFyZ2V0LmlkKCldID0gc2V0VGltZW91dChhc3luYyAoKSA9PiBcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBvcG92ZXIoZWRnZS5kYXRhKClbJ2NvbnRleHQnXSwgJycsIGVkZ2UsICdqdWdnbC1wcmV2aWV3LWVkZ2UnKSwgODAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlLmN5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBlLnRhcmdldC5pZCgpO1xuICAgICAgICAgICAgICAgIGlmIChpZCBpbiB0aGlzLmhvdmVyVGltZW91dCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5ob3ZlclRpbWVvdXRbaWRdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3ZlclRpbWVvdXRbaWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlLmN5LmVsZW1lbnRzKCkucmVtb3ZlQ2xhc3MoW0NMQVNTX0hPVkVSLCBDTEFTU19VTkhPVkVSLCBDTEFTU19DT05ORUNURURfSE9WRVJdKTtcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuaGFzQ2xhc3MoQ0xBU1NfUElOTkVEKSkge1xuICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5sb2NrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnZpei5vbignZ3JhYicsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlTGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5b3V0LnN0b3AoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKCdkcmFnZnJlZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlTGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5b3V0LnN0b3AoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5hY3RpdmVMYXlvdXQgPSB0aGlzLnZpei5sYXlvdXQodGhpcy5jb2xhTGF5b3V0KCkpLnN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVMYXlvdXQuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgbm9kZS5sb2NrKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVMYXlvdXQub25lKCdsYXlvdXRzdG9wJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLmhhc0NsYXNzKENMQVNTX1BJTk5FRCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudW5sb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy52aXoub24oJ2N4dHRhcCcsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVGhhbmtzIExpYW0gZm9yIHNoYXJpbmcgaG93IHRvIGRvIGNvbnRleHQgbWVudXNcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTWVudSA9IG5ldyBNZW51KHRoaXMucGx1Z2luLmFwcCk7IC8vIENyZWF0ZXMgZW1wdHkgZmlsZSBtZW51XG4gICAgICAgICAgICAgICAgaWYgKCEoZS50YXJnZXQgPT09IHRoaXMudml6KSAmJiBlLnRhcmdldC5ncm91cCgpID09PSAnbm9kZXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gVml6SWQuZnJvbU5vZGUoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkLnN0b3JlSWQgPT09ICdjb3JlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMucGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGlkLmlkLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmaWxlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9vayBmb3IgcGx1Z2lucyB0byBwb3B1bGF0ZSBtZW51IHdpdGggXCJmaWxlLWF3YXJlXCIgbWVudSBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignZmlsZS1tZW51JywgZmlsZU1lbnUsIGZpbGUsICdteS1jb250ZXh0LW1lbnUnLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm1vZGUuZmlsbE1lbnUoZmlsZU1lbnUsIHRoaXMudml6Lm5vZGVzKCc6c2VsZWN0ZWQnKSk7XG4gICAgICAgICAgICAgICAgZmlsZU1lbnUuc2hvd0F0UG9zaXRpb24oeyB4OiBlLm9yaWdpbmFsRXZlbnQueCwgeTogZS5vcmlnaW5hbEV2ZW50LnkgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudml6Lm9uKCdsYXlvdXRzdG9wJywgZGVib3VuY2UoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3MuYXV0b1pvb20pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgZml0Tm9kZXM7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlRmlsZSA9IHRoaXMudml6Lm5vZGVzKGAuJHtDTEFTU19BQ1RJVkVfTk9ERX1gKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlRmlsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpdE5vZGVzID0gYWN0aXZlRmlsZS5jbG9zZWROZWlnaGJvcmhvb2QoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpdE5vZGVzID0gdGhpcy52aXoubm9kZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZS5jeS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZml0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVzOiBmaXROb2RlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBWSUVXUE9SVF9BTklNQVRJT05fVElNRSxcbiAgICAgICAgICAgICAgICAgICAgcXVldWU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgREVCT1VOQ0VfRk9MTE9XLCB0cnVlKSk7XG4gICAgICAgICAgICB0aGlzLnZpelJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlcigndml6UmVhZHknLCB0aGlzLnZpeik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnVmlzdWFsaXphdGlvbiByZWFkeScpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBOZWVkZWQgdG8gZW5zdXJlIGVycm9ycyBhcmUgdGhyb3duIGluIGNvbnNvbGUuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcG9wb3ZlcihtZENvbnRlbnQsIHNvdXJjZVBhdGgsIHRhcmdldCwgc3R5bGVDbGFzcykge1xuICAgICAgICBjb25zdCBuZXdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbmV3RGl2LmFkZENsYXNzZXMoWydwb3BvdmVyJywgJ2hvdmVyLXBvcG92ZXInLCAnaXMtbG9hZGVkJywgJ2p1Z2dsLWhvdmVyJ10pO1xuICAgICAgICBjb25zdCBtZEVtYmVkRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG1kRW1iZWREaXYuYWRkQ2xhc3NlcyhbJ21hcmtkb3duLWVtYmVkJywgc3R5bGVDbGFzc10pO1xuICAgICAgICBuZXdEaXYuYXBwZW5kQ2hpbGQobWRFbWJlZERpdik7XG4gICAgICAgIGNvbnN0IG1kRW1iZWRDb250ZW50RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG1kRW1iZWRDb250ZW50RGl2LmFkZENsYXNzZXMoWydtYXJrZG93bi1lbWJlZC1jb250ZW50J10pO1xuICAgICAgICBtZEVtYmVkRGl2LmFwcGVuZENoaWxkKG1kRW1iZWRDb250ZW50RGl2KTtcbiAgICAgICAgY29uc3QgbWRQcmV2aWV3VmlldyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBtZFByZXZpZXdWaWV3LmFkZENsYXNzZXMoWydtYXJrZG93bi1wcmV2aWV3LXZpZXcnXSk7XG4gICAgICAgIG1kRW1iZWRDb250ZW50RGl2LmFwcGVuZENoaWxkKG1kUHJldmlld1ZpZXcpO1xuICAgICAgICBjb25zdCBtZFByZXZpZXdTZWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG1kUHJldmlld1NlY3Rpb24uYWRkQ2xhc3NlcyhbJ21hcmtkb3duLXByZXZpZXctc2l6ZXInLCAnbWFya2Rvd24tcHJldmlldy1zZWN0aW9uJ10pO1xuICAgICAgICBtZFByZXZpZXdWaWV3LmFwcGVuZENoaWxkKG1kUHJldmlld1NlY3Rpb24pO1xuICAgICAgICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKG1kQ29udGVudCwgbWRQcmV2aWV3U2VjdGlvbiwgc291cmNlUGF0aCwgbnVsbCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3RGl2KTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBwb3BwZXIgPSB0YXJnZXQucG9wcGVyKHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RGl2O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcHBlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgICB9LCAvLyBteSBwb3BwZXIgb3B0aW9ucyBoZXJlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1cGRhdGVQb3BwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3BwZXIudXBkYXRlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRhcmdldC5vbigncG9zaXRpb24nLCB1cGRhdGVQb3BwZXIpO1xuICAgICAgICB0aGlzLnZpei5vbigncGFuIHpvb20gcmVzaXplJywgdXBkYXRlUG9wcGVyKTtcbiAgICAgICAgbmV3RGl2LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoZSkgPT4ge1xuICAgICAgICAgICAgbmV3RGl2LmFkZENsYXNzKCdwb3BvdmVyLWhvdmVyZWQnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVzdHJveUhvdmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgcG9wcGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIG5ld0Rpdi5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveUhvdmVyID0gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgbmV3RGl2LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLmRlc3Ryb3lIb3Zlcik7XG4gICAgICAgIGNvbnN0IGRlc3Ryb3lIb3ZlciA9IHRoaXMuZGVzdHJveUhvdmVyO1xuICAgICAgICB0aGlzLnZpei5vbmUoJ21vdXNlb3V0JywgKGUpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICghbmV3RGl2Lmhhc0NsYXNzKCdwb3BvdmVyLWhvdmVyZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBkZXN0cm95SG92ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgbmVpZ2hib3VyaG9vZCh0b0V4cGFuZCkge1xuICAgICAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0b3JlIG9mIHRoaXMuZGF0YXN0b3Jlcy5kYXRhU3RvcmVzKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZU5vZGVzID0gYXdhaXQgc3RvcmUuZ2V0TmVpZ2hib3VyaG9vZCh0b0V4cGFuZCwgdGhpcyk7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKC4uLnN0b3JlTm9kZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG4gICAgYXN5bmMgYnVpbGRFZGdlcyhuZXdOb2Rlcykge1xuICAgICAgICBjb25zdCBlZGdlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0b3JlIG9mIHRoaXMuZGF0YXN0b3Jlcy5kYXRhU3RvcmVzKSB7XG4gICAgICAgICAgICBlZGdlcy5wdXNoKC4uLmF3YWl0IHN0b3JlLmNvbm5lY3ROb2Rlcyh0aGlzLnZpei5ub2RlcygpLCBuZXdOb2RlcywgdGhpcykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgYXN5bmMgZXhwYW5kKHRvRXhwYW5kLCBiYXRjaCA9IHRydWUsIHRyaWdnZXJHcmFwaENoYW5nZWQgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0b0V4cGFuZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXRjaCkge1xuICAgICAgICAgICAgdGhpcy52aXouc3RhcnRCYXRjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHRvRXhwYW5kLmFkZENsYXNzKENMQVNTX0VYUEFOREVEKTtcbiAgICAgICAgdG9FeHBhbmQuYWRkQ2xhc3MoQ0xBU1NfUFJPVEVDVEVEKTtcbiAgICAgICAgLy8gQ3VycmVudGx5IHJldHVybnMgdGhlIGVkZ2VzIG1lcmdlZCBpbnRvIHRoZSBncmFwaCwgbm90IHRoZSBmdWxsIG5laWdoYm9yaG9vZFxuICAgICAgICBjb25zdCBleHBhbmRlZElkcyA9IHRvRXhwYW5kLm1hcCgobikgPT4gVml6SWQuZnJvbU5vZGUobikpO1xuICAgICAgICBjb25zdCBuZWlnaGJvdXJob29kID0gYXdhaXQgdGhpcy5uZWlnaGJvdXJob29kKGV4cGFuZGVkSWRzKTtcbiAgICAgICAgdGhpcy5tZXJnZVRvR3JhcGgobmVpZ2hib3VyaG9vZCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLnZpei5jb2xsZWN0aW9uKCk7XG4gICAgICAgIG5laWdoYm91cmhvb2QuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgbm9kZXMubWVyZ2UodGhpcy52aXouJGlkKG4uZGF0YS5pZCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZWRnZXMgPSBhd2FpdCB0aGlzLmJ1aWxkRWRnZXMobm9kZXMpO1xuICAgICAgICBjb25zdCBlZGdlc0luR3JhcGggPSB0aGlzLm1lcmdlVG9HcmFwaChlZGdlcywgZmFsc2UsIHRyaWdnZXJHcmFwaENoYW5nZWQpO1xuICAgICAgICBpZiAoYmF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMudml6LmVuZEJhdGNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cmlnZ2VyKCdleHBhbmQnLCB0b0V4cGFuZCk7XG4gICAgICAgIHJldHVybiBlZGdlc0luR3JhcGg7XG4gICAgfVxuICAgIGFzeW5jIHVwZGF0ZVN0eWxlc2hlZXQoKSB7XG4gICAgICAgIGNvbnN0IHNoZWV0ID0gbmV3IEdyYXBoU3R5bGVTaGVldCh0aGlzLnBsdWdpbik7XG4gICAgICAgIHRoaXMudHJpZ2dlcignc3R5bGVzaGVldCcsIHNoZWV0KTtcbiAgICAgICAgY29uc3Qgc1NoZWV0ID0gYXdhaXQgc2hlZXQuZ2V0U3R5bGVzaGVldCh0aGlzKTtcbiAgICAgICAgdGhpcy52aXouc3R5bGUoc1NoZWV0KTtcbiAgICB9XG4gICAgb251bmxvYWQoKSB7XG4gICAgfVxuICAgIHJlbW92ZU5vZGVzKG5vZGVzKSB7XG4gICAgICAgIC8vIE9ubHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgbm9kZSBpcyBmb3JjZWZ1bGx5IHJlbW92ZWQgZnJvbSB0aGUgZ3JhcGgsIG5vdCB3aGVuIHRoZSBub2RlIG5vIGxvbmdlciBleGlzdHNcbiAgICAgICAgLy8gb24gdGhlIGJhY2stZW5kLiBUaGlzIGlzIGJlY2F1c2Ugb2YgaG93IGl0IGhhbmRsZXMgZXhwYW5kZWQuXG4gICAgICAgIC8vIFJlbW92ZSBhcyBleHBhbmRlZCBpZiBhIG5laWdoYm91ciBpcyByZW1vdmVkIGZyb20gdGhlIGdyYXBoLlxuICAgICAgICBsZXQgcmVtb3ZlZCA9IG51bGw7XG4gICAgICAgIHRoaXMudml6LmJhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obm9kZXMubmVpZ2hib3Job29kKCkpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdleHBhbmRlZCcpO1xuICAgICAgICAgICAgcmVtb3ZlZCA9IG5vZGVzLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5vbkdyYXBoQ2hhbmdlZChmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVtb3ZlZDtcbiAgICB9XG4gICAgZml0Vmlldyhub2Rlcykge1xuICAgICAgICBpZiAobm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMudml6LmZpdChub2Rlcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpei5maXQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBnZXRJblF1ZXJ5KG5vZGVzOiBJZFR5cGVbXSk6IHN0cmluZyB7XG4gICAgLy8gICBsZXQgcXVlcnkgPSAnSU4gWyc7XG4gICAgLy8gICBsZXQgZmlyc3QgPSB0cnVlO1xuICAgIC8vICAgZm9yIChjb25zdCBpZCBvZiBub2Rlcykge1xuICAgIC8vICAgICAvLyBAdHMtaWdub3JlXG4gICAgLy8gICAgIGNvbnN0IHRpdGxlID0gdGhpcy5maW5kTm9kZVJhdyhpZCkucHJvcGVydGllc1snbmFtZSddIGFzIHN0cmluZztcbiAgICAvLyAgICAgaWYgKCFmaXJzdCkge1xuICAgIC8vICAgICAgIHF1ZXJ5ICs9ICcsICc7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcXVlcnkgKz0gJ1wiJyArIHRpdGxlICsgJ1wiJztcbiAgICAvLyAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIHF1ZXJ5ICs9ICddJztcbiAgICAvLyAgIHJldHVybiBxdWVyeTtcbiAgICAvLyB9XG4gICAgcmVzdGFydExheW91dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTGF5b3V0KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxheW91dC5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5b3V0U2V0dGluZ3MgPSBwYXJzZUxheW91dFNldHRpbmdzKHRoaXMuc2V0dGluZ3MpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYXlvdXQgPSBsYXlvdXRTZXR0aW5ncy5zdGFydExheW91dCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2V0TGF5b3V0KHNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGF5b3V0ID0gc2V0dGluZ3Mub3B0aW9ucztcbiAgICAgICAgdGhpcy5yZXN0YXJ0TGF5b3V0KCk7XG4gICAgfVxuICAgIG1lcmdlVG9HcmFwaChlbGVtZW50cywgYmF0Y2ggPSB0cnVlLCB0cmlnZ2VyR3JhcGhDaGFuZ2VkID0gdHJ1ZSkge1xuICAgICAgICBpZiAoYmF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMudml6LnN0YXJ0QmF0Y2goKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZGRFbGVtZW50cyA9IFtdO1xuICAgICAgICBjb25zdCBtZXJnZWRDb2xsZWN0aW9uID0gdGhpcy52aXouY29sbGVjdGlvbigpO1xuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXouJGlkKG4uZGF0YS5pZCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudHMucHVzaChuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdFbGVtZW50ID0gdGhpcy52aXouJGlkKG4uZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmFDbGFzc2VzID0gQ0xBU1NFUy5maWx0ZXIoKGNsYXp6KSA9PiBnRWxlbWVudC5oYXNDbGFzcyhjbGF6eikpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBleHRyYUNsYXNzZXMucHVzaCguLi5nRWxlbWVudC5jbGFzc2VzKCkuZmlsdGVyKChlbCkgPT4gZWwuc3RhcnRzV2l0aCgnZ2xvYmFsLScpIHx8IGVsLnN0YXJ0c1dpdGgoJ2xvY2FsLScpKSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogTWF5YmUgbWFrZSBhbiBldmVudCBoZXJlXG4gICAgICAgICAgICAgICAgZ0VsZW1lbnQuY2xhc3NlcyhuLmNsYXNzZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2xhenogb2YgZXh0cmFDbGFzc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGdFbGVtZW50LmFkZENsYXNzKGNsYXp6KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ0VsZW1lbnQuZGF0YShuLmRhdGEpO1xuICAgICAgICAgICAgICAgIG1lcmdlZENvbGxlY3Rpb24ubWVyZ2UoZ0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWRkQ29sbGVjdGlvbiA9IHRoaXMudml6LmFkZChhZGRFbGVtZW50cyk7XG4gICAgICAgIG1lcmdlZENvbGxlY3Rpb24ubWVyZ2UoYWRkQ29sbGVjdGlvbik7XG4gICAgICAgIGlmICh0cmlnZ2VyR3JhcGhDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uR3JhcGhDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMudml6LmVuZEJhdGNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgbWVyZ2VkOiBtZXJnZWRDb2xsZWN0aW9uLCBhZGRlZDogYWRkQ29sbGVjdGlvbiB9O1xuICAgIH1cbiAgICBhc3NpZ25TdHlsZUdyb3VwcygpIHtcbiAgICAgICAgY29uc3Qgdml6ID0gdGhpcy52aXo7XG4gICAgICAgIGNvbnN0IF9hc3NpZ25Hcm91cHMgPSBmdW5jdGlvbiAoZ3JvdXBzLCBwcmVmaXgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4LCBncm91cF0gb2YgZ3JvdXBzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6ID0gYCR7cHJlZml4fS0ke2luZGV4fWA7XG4gICAgICAgICAgICAgICAgdml6Lm5vZGVzKCkucmVtb3ZlQ2xhc3MoY2xhenopO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTm9kZXMgPSBmaWx0ZXIoZ3JvdXAuZmlsdGVyLCB2aXoubm9kZXMoKSk7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWROb2Rlcy5hZGRDbGFzcyhjbGF6eik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF9hc3NpZ25Hcm91cHModGhpcy5zZXR0aW5ncy5zdHlsZUdyb3VwcywgJ2xvY2FsJyk7XG4gICAgICAgIGlmICgnc2V0dGluZ3MnIGluIHRoaXMucGx1Z2luKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBfYXNzaWduR3JvdXBzKHRoaXMucGx1Z2luLnNldHRpbmdzLmdsb2JhbFN0eWxlR3JvdXBzLCAnZ2xvYmFsJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25HcmFwaENoYW5nZWQoYmF0Y2ggPSB0cnVlLCBkZWJvdW5jZUxheW91dCA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChiYXRjaCkge1xuICAgICAgICAgICAgdGhpcy52aXouc3RhcnRCYXRjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudml6Lm5vZGVzKCkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5kYXRhKCdkZWdyZWUnLCBub2RlLmRlZ3JlZShmYWxzZSkpO1xuICAgICAgICAgICAgbm9kZS5kYXRhKCduYW1lTGVuZ3RoJywgbm9kZS5kYXRhKCduYW1lJykubGVuZ3RoKTtcbiAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoWy4uLm5ldyBTZXQobm9kZS5pbmNvbWVycygnZWRnZScpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGVkZ2UpID0+ICdoYXMtaW5jb21pbmctJyArIChlZGdlLmRhdGEoJ3R5cGUnKSA/IGVkZ2UuZGF0YSgndHlwZScpIDogJ2lubGluZScpKSldKTtcbiAgICAgICAgICAgIG5vZGUuYWRkQ2xhc3MoWy4uLm5ldyBTZXQobm9kZS5vdXRnb2VycygnZWRnZScpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGVkZ2UpID0+ICdoYXMtb3V0Z29pbmctJyArIChlZGdlLmRhdGEoJ3R5cGUnKSA/IGVkZ2UuZGF0YSgndHlwZScpIDogJ2lubGluZScpKSldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChiYXRjaCkge1xuICAgICAgICAgICAgdGhpcy52aXouZW5kQmF0Y2goKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyaWdnZXIoJ2VsZW1lbnRzQ2hhbmdlJyk7XG4gICAgICAgIHRoaXMuc2VhcmNoRmlsdGVyKHRoaXMuc2V0dGluZ3MuZmlsdGVyKTtcbiAgICAgICAgaWYgKGRlYm91bmNlTGF5b3V0KSB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlZFJlc3RhcnRMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzdGFydExheW91dCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXNzaWduU3R5bGVHcm91cHMoKTtcbiAgICB9XG4gICAgZ2V0Vml6KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXo7XG4gICAgfVxuICAgIHNldE1vZGUobW9kZU5hbWUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDaGlsZCh0aGlzLm1vZGUpO1xuICAgICAgICBpZiAobW9kZU5hbWUgPT09ICdsb2NhbCcpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IG5ldyBMb2NhbE1vZGUodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobW9kZU5hbWUgPT09ICd3b3Jrc3BhY2UnKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBuZXcgV29ya3NwYWNlTW9kZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZENoaWxkKHRoaXMubW9kZSk7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnRvb2xiYXIpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZS5jcmVhdGVUb29sYmFyKHRoaXMuZWxlbWVudC5jaGlsZHJlblswXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2VhcmNoRmlsdGVyKHF1ZXJ5KSB7XG4gICAgICAgIC8vIFRoZSBxdWVyeSBoZXJlIGlzIGluIGFwcHJveGltYXRlbHkgdGhlIGZvcm1hdCBvZiBPYnNpZGlhbiBzZWFyY2ggcXVlcmllc1xuICAgICAgICAvLyBUaGlzIGlzIG11Y2ggbGVzcyBlZmZpY2llbnQgdGhhbiB1c2luZyBzZWxlY3RvcnMsIHNvIG9ubHkgdXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gcGFyc2UgdXNlciBpbnB1dC5cbiAgICAgICAgdGhpcy52aXoubm9kZXMoKS5yZW1vdmVDbGFzcyhDTEFTU19GSUxURVJFRCk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkTm9kZXMgPSBmaWx0ZXIocXVlcnksIHRoaXMudml6Lm5vZGVzKCkpO1xuICAgICAgICB0aGlzLnZpei5ub2RlcygpLmRpZmZlcmVuY2UoZmlsdGVyZWROb2RlcykuYWRkQ2xhc3MoQ0xBU1NfRklMVEVSRUQpO1xuICAgICAgICB0aGlzLnNldHRpbmdzLmZpbHRlciA9IHF1ZXJ5O1xuICAgIH1cbiAgICBnZXRQaW5uZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpei5ub2RlcyhgLiR7Q0xBU1NfUElOTkVEfWApO1xuICAgIH1cbiAgICBnZXRFeHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudml6Lm5vZGVzKGAuJHtDTEFTU19FWFBBTkRFRH1gKTtcbiAgICB9XG4gICAgZ2V0UHJvdGVjdGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXoubm9kZXMoYC4ke0NMQVNTX1BST1RFQ1RFRH1gKTtcbiAgICB9XG4gICAgb24obmFtZSwgY2FsbGJhY2ssIGN0eCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudHMub24obmFtZSwgY2FsbGJhY2ssIGN0eCk7XG4gICAgfVxuICAgIG9mZihuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmV2ZW50cy5vZmYobmFtZSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICBvZmZyZWYocmVmKSB7XG4gICAgICAgIHRoaXMuZXZlbnRzLm9mZnJlZihyZWYpO1xuICAgIH1cbiAgICB0cmlnZ2VyKG5hbWUsIC4uLmRhdGEpIHtcbiAgICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcihuYW1lLCAuLi5kYXRhKTtcbiAgICB9XG4gICAgdHJ5VHJpZ2dlcihldnQsIGFyZ3MpIHtcbiAgICAgICAgdGhpcy5ldmVudHMudHJ5VHJpZ2dlcihldnQsIGFyZ3MpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IENvbXBvbmVudCwgTm90aWNlLCBQbGF0Zm9ybSB9IGZyb20gJ29ic2lkaWFuJztcbmV4cG9ydCBjbGFzcyBJbWFnZVNlcnZlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocGx1Z2luKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBwbHVnaW4uc2V0dGluZ3M7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmltZ1NlcnZlciA9IG51bGw7XG4gICAgfVxuICAgIGFzeW5jIG9ubG9hZCgpIHtcbiAgICAgICAgc3VwZXIub25sb2FkKCk7XG4gICAgICAgIGlmIChQbGF0Zm9ybS5pc01vYmlsZSB8fCAhdGhpcy5zZXR0aW5ncy51c2VJbWdTZXJ2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuICAgICAgICBjb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuICAgICAgICBjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgICAgIGxldCBkaXIgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGlyID0gcGF0aC5qb2luKHRoaXMucGx1Z2luLnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ291bGRuXFwndCBzdGFydCBpbWFnZSBzZXJ2ZXIuIFRoaXMgaXMgbGlrZWx5IGJlY2F1c2Ugd2VcXCdyZSBvbiBtb2JpbGUhJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQWx0ZXJuYXRpdmVseSwgd2luZG93cyBtaWdodCBibG9jayBpdCB1c2luZyB0aGUgZmlyZXdhbGwnKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1pbWUgPSB7XG4gICAgICAgICAgICBnaWY6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAganBnOiAnaW1hZ2UvanBlZycsXG4gICAgICAgICAgICBwbmc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgICAgc3ZnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncztcbiAgICAgICAgY29uc3QgdmF1bHQgPSB0aGlzLnBsdWdpbi5hcHAudmF1bHQ7XG4gICAgICAgIHRoaXMuaW1nU2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICAgICAgICBjb25zdCByZXFwYXRoID0gcmVxLnVybC50b1N0cmluZygpLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICBpZiAocmVxLm1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMTtcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMuZW5kKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZmlsZSA9IHBhdGguam9pbihkaXIsIGRlY29kZVVSSShyZXFwYXRoLnJlcGxhY2UoL1xcLyQvLCAnL2luZGV4Lmh0bWwnKSkpO1xuICAgICAgICAgICAgZmlsZSA9IHZhdWx0LmFkYXB0ZXIuZ2V0RnVsbFBhdGgoZmlsZSk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh2YXVsdC5nZXRSZXNvdXJjZVBhdGgobkZpbGUgYXMgVEZpbGUpKTtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlbnRlcmluZyBzZXJ2ZXIgcXVlcnknKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXEpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgKGZpbGUuaW5kZXhPZihkaXIgKyBwYXRoLnNlcCkgIT09IDApIHtcbiAgICAgICAgICAgIC8vICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XG4gICAgICAgICAgICAvLyAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICAgICAgICAvLyAgIHJldHVybiByZXMuZW5kKCdGb3JiaWRkZW4nKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBtaW1lW3BhdGguZXh0bmFtZShmaWxlKS5zbGljZSgxKV07XG4gICAgICAgICAgICBjb25zdCBzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICAgICAgICAgIHMub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgdHlwZSk7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKTtcbiAgICAgICAgICAgICAgICBzLnBpcGUocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcy5vbignZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0hlcmUzJyk7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgICAgICAgICByZXMuZW5kKCdOb3QgZm91bmQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLnNldHRpbmdzLmltZ1NlcnZlclBvcnQ7XG4gICAgICAgICAgICB0aGlzLmltZ1NlcnZlci5saXN0ZW4ocG9ydCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbWFnZSBzZXJ2ZXIgbGlzdGVuaW5nIG9uIGh0dHA6Ly9sb2NhbGhvc3Q6JyArIHBvcnQgKyAnLycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgbmV3IE5vdGljZSgnSnVnZ2w6IENvdWxkblxcJ3Qgc3RhcnQgaW1hZ2Ugc2VydmVyLCBzZWUgY29uc29sZScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIG9udW5sb2FkKCkge1xuICAgICAgICBzdXBlci5vbnVubG9hZCgpO1xuICAgICAgICBpZiAodGhpcy5pbWdTZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaW1nU2VydmVyLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmltZ1NlcnZlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI7KGZ1bmN0aW9uKCl7ICd1c2Ugc3RyaWN0JztcblxuICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBjb250YWluZXI6IGZhbHNlIC8vIGNhbiBiZSBhIEhUTUwgb3IgalF1ZXJ5IGVsZW1lbnQgb3IgalF1ZXJ5IHNlbGVjdG9yXG4gICAgLCB2aWV3TGl2ZUZyYW1lcmF0ZTogMCAvLyBzZXQgZmFsc2UgdG8gdXBkYXRlIGdyYXBoIHBhbiBvbmx5IG9uIGRyYWcgZW5kOyBzZXQgMCB0byBkbyBpdCBpbnN0YW50bHk7IHNldCBhIG51bWJlciAoZnJhbWVzIHBlciBzZWNvbmQpIHRvIHVwZGF0ZSBub3QgbW9yZSB0aGFuIE4gdGltZXMgcGVyIHNlY29uZFxuICAgICwgZGJsQ2xpY2tEZWxheTogMjAwIC8vIG1pbGxpc2Vjb25kc1xuICAgICwgcmVtb3ZlQ3VzdG9tQ29udGFpbmVyOiB0cnVlIC8vIGRlc3Ryb3kgdGhlIGNvbnRhaW5lciBzcGVjaWZpZWQgYnkgdXNlciBvbiBwbHVnaW4gZGVzdHJveVxuICAgICwgcmVyZW5kZXJEZWxheTogNTAwIC8vIG1zIHRvIHRocm90dGxlIHJlcmVuZGVyIHVwZGF0ZXMgdG8gdGhlIHBhbnpvb20gZm9yIHBlcmZvcm1hbmNlXG4gIH07XG5cbiAgdmFyIGRlYm91bmNlID0gKGZ1bmN0aW9uKCl7XG4gICAgLyoqXG4gICAgICogbG9kYXNoIDMuMS4xIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICAgICAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAgICAgKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICAgICAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gICAgICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICAgICAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gICAgICovXG4gICAgLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbiAgICB2YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4gICAgLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbiAgICB2YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgVW5peCBlcG9jaFxuICAgICAqICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IERhdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBsb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBmdW5jdGlvbiB0byBiZSBpbnZva2VkXG4gICAgICovXG4gICAgdmFyIG5vdyA9IG5hdGl2ZU5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgaW52b2NhdGlvbnMuIFByb3ZpZGUgYW4gb3B0aW9ucyBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICogU3Vic2VxdWVudCBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0XG4gICAgICogYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIGlzXG4gICAgICogaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHA6Ly9kcnVwYWxtb3Rpb24uY29tL2FydGljbGUvZGVib3VuY2UtYW5kLXRocm90dGxlLXZpc3VhbC1leHBsYW5hdGlvbilcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV0gU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZ1xuICAgICAqICBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XSBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlXG4gICAgICogIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nXG4gICAgICogIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBhdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4XG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIGludm9rZSBgc2VuZE1haWxgIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHNcbiAgICAgKiBqUXVlcnkoJyNwb3N0Ym94Jykub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICogICAndHJhaWxpbmcnOiBmYWxzZVxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIGVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHNcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHtcbiAgICAgKiAgICdtYXhXYWl0JzogMTAwMFxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIGNhbmNlbCBhIGRlYm91bmNlZCBjYWxsXG4gICAgICogdmFyIHRvZG9DaGFuZ2VzID0gXy5kZWJvdW5jZShiYXRjaExvZywgMTAwMCk7XG4gICAgICogT2JqZWN0Lm9ic2VydmUobW9kZWxzLnRvZG8sIHRvZG9DaGFuZ2VzKTtcbiAgICAgKlxuICAgICAqIE9iamVjdC5vYnNlcnZlKG1vZGVscywgZnVuY3Rpb24oY2hhbmdlcykge1xuICAgICAqICAgaWYgKF8uZmluZChjaGFuZ2VzLCB7ICd1c2VyJzogJ3RvZG8nLCAndHlwZSc6ICdkZWxldGUnfSkpIHtcbiAgICAgKiAgICAgdG9kb0NoYW5nZXMuY2FuY2VsKCk7XG4gICAgICogICB9XG4gICAgICogfSwgWydkZWxldGUnXSk7XG4gICAgICpcbiAgICAgKiAvLyAuLi5hdCBzb21lIHBvaW50IGBtb2RlbHMudG9kb2AgaXMgY2hhbmdlZFxuICAgICAqIG1vZGVscy50b2RvLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICpcbiAgICAgKiAvLyAuLi5iZWZvcmUgMSBzZWNvbmQgaGFzIHBhc3NlZCBgbW9kZWxzLnRvZG9gIGlzIGRlbGV0ZWRcbiAgICAgKiAvLyB3aGljaCBjYW5jZWxzIHRoZSBkZWJvdW5jZWQgYHRvZG9DaGFuZ2VzYCBjYWxsXG4gICAgICogZGVsZXRlIG1vZGVscy50b2RvO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzLFxuICAgICAgICAgIG1heFRpbWVvdXRJZCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgc3RhbXAsXG4gICAgICAgICAgdGhpc0FyZyxcbiAgICAgICAgICB0aW1lb3V0SWQsXG4gICAgICAgICAgdHJhaWxpbmdDYWxsLFxuICAgICAgICAgIGxhc3RDYWxsZWQgPSAwLFxuICAgICAgICAgIG1heFdhaXQgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB3YWl0IDwgMCA/IDAgOiAoK3dhaXQgfHwgMCk7XG4gICAgICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgICB2YXIgbGVhZGluZyA9IHRydWU7XG4gICAgICAgIHRyYWlsaW5nID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4V2FpdCA9ICdtYXhXYWl0JyBpbiBvcHRpb25zICYmIG5hdGl2ZU1heCgrb3B0aW9ucy5tYXhXYWl0IHx8IDAsIHdhaXQpO1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4VGltZW91dElkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KG1heFRpbWVvdXRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdENhbGxlZCA9IDA7XG4gICAgICAgIG1heFRpbWVvdXRJZCA9IHRpbWVvdXRJZCA9IHRyYWlsaW5nQ2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY29tcGxldGUoaXNDYWxsZWQsIGlkKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4VGltZW91dElkID0gdGltZW91dElkID0gdHJhaWxpbmdDYWxsID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoaXNDYWxsZWQpIHtcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gbm93KCk7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICBpZiAoIXRpbWVvdXRJZCAmJiAhbWF4VGltZW91dElkKSB7XG4gICAgICAgICAgICBhcmdzID0gdGhpc0FyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVsYXllZCgpIHtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAobm93KCkgLSBzdGFtcCk7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgICAgY29tcGxldGUodHJhaWxpbmdDYWxsLCBtYXhUaW1lb3V0SWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZGVsYXllZCwgcmVtYWluaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBtYXhEZWxheWVkKCkge1xuICAgICAgICBjb21wbGV0ZSh0cmFpbGluZywgdGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzdGFtcCA9IG5vdygpO1xuICAgICAgICB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgdHJhaWxpbmdDYWxsID0gdHJhaWxpbmcgJiYgKHRpbWVvdXRJZCB8fCAhbGVhZGluZyk7XG5cbiAgICAgICAgaWYgKG1heFdhaXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdmFyIGxlYWRpbmdDYWxsID0gbGVhZGluZyAmJiAhdGltZW91dElkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghbWF4VGltZW91dElkICYmICFsZWFkaW5nKSB7XG4gICAgICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZW1haW5pbmcgPSBtYXhXYWl0IC0gKHN0YW1wIC0gbGFzdENhbGxlZCksXG4gICAgICAgICAgICAgIGlzQ2FsbGVkID0gcmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gbWF4V2FpdDtcblxuICAgICAgICAgIGlmIChpc0NhbGxlZCkge1xuICAgICAgICAgICAgaWYgKG1heFRpbWVvdXRJZCkge1xuICAgICAgICAgICAgICBtYXhUaW1lb3V0SWQgPSBjbGVhclRpbWVvdXQobWF4VGltZW91dElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFtYXhUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIG1heFRpbWVvdXRJZCA9IHNldFRpbWVvdXQobWF4RGVsYXllZCwgcmVtYWluaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbGVkICYmIHRpbWVvdXRJZCkge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aW1lb3V0SWQgJiYgd2FpdCAhPT0gbWF4V2FpdCkge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZGVsYXllZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlYWRpbmdDYWxsKSB7XG4gICAgICAgICAgaXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbGVkICYmICF0aW1lb3V0SWQgJiYgIW1heFRpbWVvdXRJZCkge1xuICAgICAgICAgIGFyZ3MgPSB0aGlzQXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICAgICAqIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgLy8gQXZvaWQgYSBWOCBKSVQgYnVnIGluIENocm9tZSAxOS0yMC5cbiAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWJvdW5jZTtcblxuICB9KSgpO1xuXG4gIC8vIHBvcnRlZCBsb2Rhc2ggdGhyb3R0bGUgZnVuY3Rpb25cbiAgdmFyIHRocm90dGxlID0gZnVuY3Rpb24oIGZ1bmMsIHdhaXQsIG9wdGlvbnMgKXtcbiAgICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgIGlmKCBvcHRpb25zID09PSBmYWxzZSApe1xuICAgICAgbGVhZGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiggdHlwZW9mIG9wdGlvbnMgPT09IHR5cGVvZiB7fSApe1xuICAgICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmxlYWRpbmcgPSBsZWFkaW5nO1xuICAgIG9wdGlvbnMubWF4V2FpdCA9IHdhaXQ7XG4gICAgb3B0aW9ucy50cmFpbGluZyA9IHRyYWlsaW5nO1xuXG4gICAgcmV0dXJuIGRlYm91bmNlKCBmdW5jLCB3YWl0LCBvcHRpb25zICk7XG4gIH07XG5cbiAgdmFyIE5hdmlnYXRvciA9IGZ1bmN0aW9uICggZWxlbWVudCwgb3B0aW9ucyApIHtcbiAgICB0aGlzLl9pbml0KGVsZW1lbnQsIG9wdGlvbnMpXG4gIH07XG5cbiAgdmFyIGV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcih2YXIga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgICBpZihhcmd1bWVudHNbaV0uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGFyZ3VtZW50c1swXVtrZXldID0gYXJndW1lbnRzW2ldW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgfTtcblxuICB2YXIgd2lkID0gZnVuY3Rpb24oZWxlbSkge1xuICAgIHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICB9O1xuXG4gIHZhciBoZWkgPSBmdW5jdGlvbihlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICB9O1xuXG4gIE5hdmlnYXRvci5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvcjogTmF2aWdhdG9yXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBNYWluIGZ1bmN0aW9uc1xuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICwgYmI6IGZ1bmN0aW9uKCl7XG4gICAgdmFyIGJiID0gdGhpcy5jeS5lbGVtZW50cygpLmJvdW5kaW5nQm94KClcblxuICAgIGlmKCBiYi53ID09PSAwIHx8IGJiLmggPT09IDAgKXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgxOiAwLFxuICAgICAgICB4MjogSW5maW5pdHksXG4gICAgICAgIHkxOiAwLFxuICAgICAgICB5MjogSW5maW5pdHksXG4gICAgICAgIHc6IEluZmluaXR5LFxuICAgICAgICBoOiBJbmZpbml0eVxuICAgICAgfSAvLyA9PiBoaWRlIGludGVyYWN0aXZlIG92ZXJsYXlcbiAgICB9XG5cbiAgICByZXR1cm4gYmJcbiAgfVxuXG4gICwgX2FkZEN5TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50cywgaGFuZGxlcil7XG4gICAgdGhpcy5fY3lMaXN0ZW5lcnMucHVzaCh7XG4gICAgICBldmVudHM6IGV2ZW50cyxcbiAgICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgICB9KVxuXG4gICAgdGhpcy5jeS5vbihldmVudHMsIGhhbmRsZXIpXG4gIH1cblxuICAsIF9yZW1vdmVDeUxpc3RlbmVyczogZnVuY3Rpb24oKXtcbiAgICB2YXIgY3kgPSB0aGlzLmN5XG5cbiAgICB0aGlzLl9jeUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwpe1xuICAgICAgY3kub2ZmKGwuZXZlbnRzLCBsLmhhbmRsZXIpXG4gICAgfSlcblxuICAgIGN5Lm9mZlJlbmRlcih0aGlzLl9vblJlbmRlckhhbmRsZXIpXG4gIH1cblxuICAsIF9pbml0OiBmdW5jdGlvbiAoIGN5LCBvcHRpb25zICkge1xuICAgICAgdGhpcy5fY3lMaXN0ZW5lcnMgPSBbXVxuXG4gICAgICB0aGlzLiRlbGVtZW50ID0gY3kuY29udGFpbmVyKClcbiAgICAgIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMpXG5cbiAgICAgIHRoaXMuY3kgPSBjeVxuXG4gICAgICAvLyBDYWNoZSBib3VuZGluZyBib3hcbiAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSB0aGlzLmJiKClcblxuICAgICAgLy8gQ2FjaGUgc2l6ZXNcbiAgICAgIHRoaXMud2lkdGggPSB3aWQodGhpcy4kZWxlbWVudCk7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaSh0aGlzLiRlbGVtZW50KVxuXG4gICAgICAvLyBJbml0IGNvbXBvbmVudHNcbiAgICAgIHRoaXMuX2luaXRQYW5lbCgpXG4gICAgICB0aGlzLl9pbml0VGh1bWJuYWlsKClcbiAgICAgIHRoaXMuX2luaXRWaWV3KClcbiAgICAgIHRoaXMuX2luaXRPdmVybGF5KClcbiAgICB9XG5cbiAgLCBkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl9yZW1vdmVFdmVudHNIYW5kbGluZygpO1xuXG4gICAgICAvLyBJZiBjb250YWluZXIgaXMgbm90IGNyZWF0ZWQgYnkgbmF2aWdhdG9yIGFuZCBpdHMgcmVtb3ZhbCBpcyBwcm9oaWJpdGVkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRhaW5lciAmJiAhdGhpcy5vcHRpb25zLnJlbW92ZUN1c3RvbUNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLiRwYW5lbC5pbm5lckhUTUwgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy4kcGFuZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIE5hdmlnYXRvciBlbGVtZW50cyBmdW5jdGlvbnNcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qXG4gICAgICogVXNlZCBpbm5lciBhdHRyaWJ1dGVzXG4gICAgICpcbiAgICAgKiB3IHtudW1iZXJ9IHdpZHRoXG4gICAgICogaCB7bnVtYmVyfSBoZWlnaHRcbiAgICAgKi9cbiAgLCBfaW5pdFBhbmVsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICAgICAgaWYob3B0aW9ucy5jb250YWluZXIgJiYgdHlwZW9mIG9wdGlvbnMuY29udGFpbmVyID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLmNvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIHRvIG5vdCBicmVhayB1c2VycyB3aGljaCBnaXZlcyBhIGpxdWVyeSBzdHJpbmcgc2VsZWN0b3JcbiAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbmVyLmluZGV4T2YoJyMnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLiRwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuY29udGFpbmVyLnJlcGxhY2UoJyMnLCAnJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuJHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShvcHRpb25zLmNvbnRhaW5lci5yZXBsYWNlKCcuJywgJycpKVswXTtcbiAgICAgICAgfSBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTmFtZSA9ICdjeXRvc2NhcGUtbmF2aWdhdG9yJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLiRwYW5lbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zZXR1cFBhbmVsKClcbiAgICAgIHRoaXMuX2FkZEN5TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplLmJpbmQodGhpcykpXG4gICAgfVxuXG4gICwgX3NldHVwUGFuZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENhY2hlIHNpemVzXG4gICAgICB0aGlzLnBhbmVsV2lkdGggPSB3aWQodGhpcy4kcGFuZWwpO1xuICAgICAgdGhpcy5wYW5lbEhlaWdodCA9IGhlaSh0aGlzLiRwYW5lbCk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBVc2VkIGlubmVyIGF0dHJpYnV0ZXNcbiAgICAgKlxuICAgICAqIHpvb20ge251bWJlcn1cbiAgICAgKiBwYW4ge29iamVjdH0gLSB7eDogMCwgeTogMH1cbiAgICAgKi9cbiAgLCBfaW5pdFRodW1ibmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ3JlYXRlIHRodW1ibmFpbFxuICAgICAgdGhpcy4kdGh1bWJuYWlsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICAgIC8vIEFkZCB0aHVtYm5haWwgY2FudmFzIHRvIHRoZSBET01cbiAgICAgIHRoaXMuJHBhbmVsLmFwcGVuZENoaWxkKHRoaXMuJHRodW1ibmFpbCk7XG5cbiAgICAgIC8vIFNldHVwIHRodW1ibmFpbFxuICAgICAgdGhpcy5fc2V0dXBUaHVtYm5haWxTaXplcygpXG4gICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbCgpXG4gICAgfVxuXG4gICwgX3NldHVwVGh1bWJuYWlsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaHVtYm5haWxJbWFnZSgpXG4gICAgfVxuXG4gICwgX3NldHVwVGh1bWJuYWlsU2l6ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVwZGF0ZSBib3VuZGluZyBib3ggY2FjaGVcbiAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSB0aGlzLmJiKClcblxuICAgICAgdGhpcy50aHVtYm5haWxab29tID0gTWF0aC5taW4odGhpcy5wYW5lbEhlaWdodCAvIHRoaXMuYm91bmRpbmdCb3guaCwgdGhpcy5wYW5lbFdpZHRoIC8gdGhpcy5ib3VuZGluZ0JveC53KVxuXG4gICAgICAvLyBVc2VkIG9uIHRodW1ibmFpbCBnZW5lcmF0aW9uXG4gICAgICB0aGlzLnRodW1ibmFpbFBhbiA9IHtcbiAgICAgICAgeDogKHRoaXMucGFuZWxXaWR0aCAtIHRoaXMudGh1bWJuYWlsWm9vbSAqICh0aGlzLmJvdW5kaW5nQm94LngxICsgdGhpcy5ib3VuZGluZ0JveC54MikpLzJcbiAgICAgICwgeTogKHRoaXMucGFuZWxIZWlnaHQgLSB0aGlzLnRodW1ibmFpbFpvb20gKiAodGhpcy5ib3VuZGluZ0JveC55MSArIHRoaXMuYm91bmRpbmdCb3gueTIpKS8yXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYm91bmRpbmcgYm94IGhhcyBjaGFuZ2VkIHRoZW4gdXBkYXRlIHNpemVzXG4gICAgLy8gT3RoZXJ3aXNlIGp1c3QgdXBkYXRlIHRoZSB0aHVtYm5haWxcbiAgLCBfY2hlY2tUaHVtYm5haWxTaXplc0FuZFVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ2FjaGUgcHJldmlvdXMgdmFsdWVzXG4gICAgICB2YXIgX3pvb20gPSB0aGlzLnRodW1ibmFpbFpvb21cbiAgICAgICAgLCBfcGFuX3ggPSB0aGlzLnRodW1ibmFpbFBhbi54XG4gICAgICAgICwgX3Bhbl95ID0gdGhpcy50aHVtYm5haWxQYW4ueVxuXG4gICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbFNpemVzKClcblxuICAgICAgaWYgKF96b29tICE9IHRoaXMudGh1bWJuYWlsWm9vbSB8fCBfcGFuX3ggIT0gdGhpcy50aHVtYm5haWxQYW4ueCB8fCBfcGFuX3kgIT0gdGhpcy50aHVtYm5haWxQYW4ueSkge1xuICAgICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbCgpXG4gICAgICAgIHRoaXMuX3NldHVwVmlldygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl91cGRhdGVUaHVtYm5haWxJbWFnZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBVc2VkIGlubmVyIGF0dHJpYnV0ZXNcbiAgICAgKlxuICAgICAqIHcge251bWJlcn0gd2lkdGhcbiAgICAgKiBoIHtudW1iZXJ9IGhlaWdodFxuICAgICAqIHgge251bWJlcn1cbiAgICAgKiB5IHtudW1iZXJ9XG4gICAgICogYm9yZGVyV2lkdGgge251bWJlcn1cbiAgICAgKiBsb2NrZWQge2Jvb2xlYW59XG4gICAgICovXG4gICwgX2luaXRWaWV3OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLiR2aWV3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLiR2aWV3LmNsYXNzTmFtZSA9ICdjeXRvc2NhcGUtbmF2aWdhdG9yVmlldyc7XG4gICAgICB0aGlzLiRwYW5lbC5hcHBlbmRDaGlsZCh0aGlzLiR2aWV3KVxuICAgICAgLy8gQ29tcHV0ZSBib3JkZXJzXG4gICAgICB0aGlzLnZpZXdCb3JkZXJUb3AgPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItdG9wLXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgdGhpcy52aWV3Qm9yZGVyUmlnaHQgPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItcmlnaHQtd2lkdGgnXSwgMTApIHx8IDA7XG4gICAgICB0aGlzLnZpZXdCb3JkZXJCb3R0b20gPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItYm90dG9tLXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgdGhpcy52aWV3Qm9yZGVyTGVmdCA9IHBhcnNlSW50KHRoaXMuJHZpZXcuc3R5bGVbJ2JvcmRlci1sZWZ0LXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgXG4gICAgICAvLyBBYnN0cmFjdCBib3JkZXJzXG4gICAgICB0aGlzLnZpZXdCb3JkZXJIb3Jpem9udGFsID0gdGhpcy52aWV3Qm9yZGVyTGVmdCArIHRoaXMudmlld0JvcmRlclJpZ2h0XG4gICAgICB0aGlzLnZpZXdCb3JkZXJWZXJ0aWNhbCA9IHRoaXMudmlld0JvcmRlclRvcCArIHRoaXMudmlld0JvcmRlckJvdHRvbVxuXG4gICAgICB0aGlzLl9zZXR1cFZpZXcoKVxuXG4gICAgICAvLyBIb29rIGdyYXBoIHpvb20gYW5kIHBhblxuICAgICAgdGhpcy5fYWRkQ3lMaXN0ZW5lcignem9vbSBwYW4nLCB0aGlzLl9zZXR1cFZpZXcuYmluZCh0aGlzKSlcbiAgICB9XG5cbiAgLCBfc2V0dXBWaWV3OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy52aWV3TG9ja2VkKVxuICAgICAgICByZXR1cm5cblxuICAgICAgdmFyIGN5Wm9vbSA9IHRoaXMuY3kuem9vbSgpXG4gICAgICAgICwgY3lQYW4gPSB0aGlzLmN5LnBhbigpXG5cbiAgICAgIC8vIEhvcml6b250YWwgY29tcHV0YXRpb25cbiAgICAgIHRoaXMudmlld1cgPSB0aGlzLndpZHRoIC8gY3lab29tICogdGhpcy50aHVtYm5haWxab29tXG4gICAgICB0aGlzLnZpZXdYID0gLWN5UGFuLnggKiB0aGlzLnZpZXdXIC8gdGhpcy53aWR0aCArIHRoaXMudGh1bWJuYWlsUGFuLnggLSB0aGlzLnZpZXdCb3JkZXJMZWZ0XG5cbiAgICAgIC8vIFZlcnRpY2FsIGNvbXB1dGF0aW9uXG4gICAgICB0aGlzLnZpZXdIID0gdGhpcy5oZWlnaHQgLyBjeVpvb20gKiB0aGlzLnRodW1ibmFpbFpvb21cbiAgICAgIHRoaXMudmlld1kgPSAtY3lQYW4ueSAqIHRoaXMudmlld0ggLyB0aGlzLmhlaWdodCArIHRoaXMudGh1bWJuYWlsUGFuLnkgLSB0aGlzLnZpZXdCb3JkZXJUb3BcblxuICAgICAgLy8gQ1NTIHZpZXdcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ3dpZHRoJ10gPSB0aGlzLnZpZXdXICsgJ3B4JztcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2hlaWdodCddID0gdGhpcy52aWV3SCArICdweCc7XG4gICAgICB0aGlzLiR2aWV3LnN0eWxlWydwb3NpdGlvbiddID0gJ2Fic29sdXRlJztcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2xlZnQnXSA9IHRoaXMudmlld1ggKyAncHgnO1xuICAgICAgdGhpcy4kdmlldy5zdHlsZVsndG9wJ10gPSB0aGlzLnZpZXdZICsgJ3B4JztcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFVzZWQgaW5uZXIgYXR0cmlidXRlc1xuICAgICAqXG4gICAgICogdGltZW91dCB7bnVtYmVyfSB1c2VkIHRvIGtlZXAgc3RhYmxlIGZyYW1lIHJhdGVcbiAgICAgKiBsYXN0TW92ZVN0YXJ0VGltZSB7bnVtYmVyfVxuICAgICAqIGluTW92ZW1lbnQge2Jvb2xlYW59XG4gICAgICogaG9va1BvaW50IHtvYmplY3R9IHt4OiAwLCB5OiAwfVxuICAgICAqL1xuICAsIF9pbml0T3ZlcmxheTogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVXNlZCB0byBjYXB0dXJlIG1vdXNlIGV2ZW50c1xuICAgICAgdGhpcy4kb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy4kb3ZlcmxheS5jbGFzc05hbWUgPSAnY3l0b3NjYXBlLW5hdmlnYXRvck92ZXJsYXknO1xuXG4gICAgICAvLyBBZGQgb3ZlcmxheSB0byB0aGUgRE9NXG4gICAgICB0aGlzLiRwYW5lbC5hcHBlbmRDaGlsZCh0aGlzLiRvdmVybGF5KVxuXG4gICAgICAvLyBJbml0IHNvbWUgYXR0cmlidXRlc1xuICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WCA9IDA7XG4gICAgICB0aGlzLm92ZXJsYXlIb29rUG9pbnRZID0gMDtcblxuICAgICAgLy8gTGlzdGVuIGZvciBldmVudHNcbiAgICAgIHRoaXMuX2luaXRFdmVudHNIYW5kbGluZygpXG4gICAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgRXZlbnQgaGFuZGxpbmcgZnVuY3Rpb25zXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLCByZXNpemU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENhY2hlIHNpemVzXG4gICAgICB0aGlzLndpZHRoID0gd2lkKHRoaXMuJGVsZW1lbnQpO1xuICAgICAgdGhpcy5oZWlnaHQgPSBoZWkodGhpcy4kZWxlbWVudCk7XG4gICAgICB0aGlzLl90aHVtYm5haWxTZXR1cCA9IGZhbHNlXG4gICAgICB0aGlzLl9zZXR1cFBhbmVsKClcbiAgICAgIHRoaXMuX2NoZWNrVGh1bWJuYWlsU2l6ZXNBbmRVcGRhdGUoKVxuICAgICAgdGhpcy5fc2V0dXBWaWV3KClcbiAgICB9XG5cbiAgLCBfaW5pdEV2ZW50c0hhbmRsaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAgICAgLCBldmVudHNMb2NhbCA9IFtcbiAgICAgICAgLy8gTW91c2UgZXZlbnRzXG4gICAgICAgICAgJ21vdXNlZG93bidcbiAgICAgICAgLCAnbW91c2V3aGVlbCdcbiAgICAgICAgLCAnRE9NTW91c2VTY3JvbGwnIC8vIE1vemlsbGEgc3BlY2lmaWMgZXZlbnRcbiAgICAgICAgLy8gVG91Y2ggZXZlbnRzXG4gICAgICAgICwgJ3RvdWNoc3RhcnQnXG4gICAgICAgIF1cbiAgICAgICAgLCBldmVudHNHbG9iYWwgPSBbXG4gICAgICAgICAgJ21vdXNldXAnXG4gICAgICAgICwgJ21vdXNlb3V0J1xuICAgICAgICAsICdtb3VzZW1vdmUnXG4gICAgICAgIC8vIFRvdWNoIGV2ZW50c1xuICAgICAgICAsICd0b3VjaG1vdmUnXG4gICAgICAgICwgJ3RvdWNoZW5kJ1xuICAgICAgICBdXG5cbiAgICAgIC8vIGhhbmRsZSBldmVudHMgYW5kIHN0b3AgdGhlaXIgcHJvcGFnYXRpb25cbiAgICAgIHZhciBvdmVybGF5TGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgLy8gVG91Y2ggZXZlbnRzXG4gICAgICAgIGlmIChldi50eXBlID09ICd0b3VjaHN0YXJ0Jykge1xuICAgICAgICAgIC8vIFdpbGwgY291bnQgYXMgbWlkZGxlIG9mIFZpZXdcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRYJywge1xuICAgICAgICAgICAgdmFsdWU6IHRoYXQudmlld1ggKyB0aGF0LnZpZXdXIC8gMixcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAnb2Zmc2V0WScsIHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGF0LnZpZXdZICsgdGhhdC52aWV3SCAvIDIsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm9ybWFsaXplIG9mZnNldCBmb3IgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHByb3ZpZGUgdGhhdCB2YWx1ZVxuICAgICAgICBpZiAoZXYub2Zmc2V0WCA9PT0gdW5kZWZpbmVkIHx8IGV2Lm9mZnNldFkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB7IFxuICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZLCBcbiAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYLCBcbiAgICAgICAgICB9O1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYucGFnZVggLSB0YXJnZXRPZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAnb2Zmc2V0WScsIHtcbiAgICAgICAgICAgIHZhbHVlOiBldi5wYWdlWSAtIHRhcmdldE9mZnNldC50b3AsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2LnR5cGUgPT0gJ21vdXNlZG93bicgfHwgZXYudHlwZSA9PSAndG91Y2hzdGFydCcpIHtcbiAgICAgICAgICB0aGF0Ll9ldmVudE1vdmVTdGFydChldilcbiAgICAgICAgfSBlbHNlIGlmIChldi50eXBlID09ICdtb3VzZXdoZWVsJyB8fCBldi50eXBlID09ICdET01Nb3VzZVNjcm9sbCcpIHtcbiAgICAgICAgICB0aGF0Ll9ldmVudFpvb20oZXYpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYW5kIHByb3BhZ2F0aW9uXG4gICAgICAgIC8vIERvbid0IHVzZSBwZXZlbnRQcm9wYWdhdGlvbiBhcyBpdCBicmVha3MgbW91c2UgZXZlbnRzXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEhvb2sgZ2xvYmFsIGV2ZW50c1xuICAgICAgdmFyIGdsb2JhbExpc3RlbmVyID0gZnVuY3Rpb24gKGV2KSB7XG5cbiAgICAgICAgLy8gRG8gbm90IG1ha2UgYW55IGNvbXB1dGF0aW9ucyBpZiBpdCBpcyBoYXMgbm8gZWZmZWN0IG9uIE5hdmlnYXRvclxuICAgICAgICBpZiAoIXRoYXQub3ZlcmxheUluTW92ZW1lbnQpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIC8vIFRvdWNoIGV2ZW50c1xuICAgICAgICBpZiAoZXYudHlwZSA9PSAndG91Y2hlbmQnKSB7XG4gICAgICAgICAgLy8gV2lsbCBjb3VudCBhcyBtaWRkbGUgb2YgVmlld1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICB2YWx1ZTogdGhhdC52aWV3WCArIHRoYXQudmlld1cgLyAyLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRZJywge1xuICAgICAgICAgICAgdmFsdWU6IHRoYXQudmlld1kgKyB0aGF0LnZpZXdIIC8gMixcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXYudHlwZSA9PSAndG91Y2htb3ZlJykge1xuICAgICAgICAgIC8vIEhhY2sgLSB3ZSB0YWtlIGluIGFjY291bnQgb25seSBmaXJzdCB0b3VjaFxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ3BhZ2VYJywge1xuICAgICAgICAgICAgdmFsdWU6IGV2Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAncGFnZVknLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VZLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vcm1hbGl6ZSBvZmZzZXQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBwcm92aWRlIHRoYXQgdmFsdWVcbiAgICAgICAgaWYgKGV2Lm9mZnNldFggPT09IHVuZGVmaW5lZCB8fCBldi5vZmZzZXRZID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgcmVjdCA9IGV2LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICB2YXIgdGFyZ2V0T2Zmc2V0ID0geyBcbiAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW5kb3cuc2Nyb2xsWSwgXG4gICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCwgXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRYJywge1xuICAgICAgICAgICAgdmFsdWU6IGV2LnBhZ2VYIC0gdGFyZ2V0T2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFknLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYucGFnZVkgLSB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYW5zbGF0ZSBnbG9iYWwgZXZlbnRzIGludG8gbG9jYWwgY29vcmRpbmF0ZXNcbiAgICAgICAgaWYgKGV2LnRhcmdldCAhPT0gdGhhdC4kb3ZlcmxheSkge1xuICAgICAgICAgIHZhciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHZhciByZWN0MiA9IHRoYXQuJG92ZXJsYXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgdmFyIHRhcmdldE9mZnNldCA9IHsgXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgd2luZG93LnNjcm9sbFksIFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFgsIFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIG92ZXJsYXlPZmZzZXQgPSB7IFxuICAgICAgICAgICAgdG9wOiByZWN0Mi50b3AgKyB3aW5kb3cuc2Nyb2xsWSwgXG4gICAgICAgICAgICBsZWZ0OiByZWN0Mi5sZWZ0ICsgd2luZG93LnNjcm9sbFgsIFxuICAgICAgICAgIH07XG4gICAgICAgICAgXG4gICAgICAgICAgaWYodGFyZ2V0T2Zmc2V0ICYmIG92ZXJsYXlPZmZzZXQpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBldi5vZmZzZXRYIC0gb3ZlcmxheU9mZnNldC5sZWZ0ICsgdGFyZ2V0T2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFknLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBldi5vZmZzZXRZIC0gb3ZlcmxheU9mZnNldC50b3AgKyB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXYudHlwZSA9PSAnbW91c2Vtb3ZlJyB8fCBldi50eXBlID09ICd0b3VjaG1vdmUnKSB7XG4gICAgICAgICAgdGhhdC5fZXZlbnRNb3ZlKGV2KVxuICAgICAgICB9IGVsc2UgaWYgKGV2LnR5cGUgPT0gJ21vdXNldXAnIHx8IGV2LnR5cGUgPT0gJ3RvdWNoZW5kJykge1xuICAgICAgICAgIHRoYXQuX2V2ZW50TW92ZUVuZChldilcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBhbmQgcHJvcGFnYXRpb25cbiAgICAgICAgLy8gRG9uJ3QgdXNlIHBldmVudFByb3BhZ2F0aW9uIGFzIGl0IGJyZWFrcyBtb3VzZSBldmVudHNcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHNMb2NhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLiRvdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzTG9jYWxbaV0sIG92ZXJsYXlMaXN0ZW5lciwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50c0dsb2JhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldmVudHNHbG9iYWxbaV0sIGdsb2JhbExpc3RlbmVyLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlbW92ZUV2ZW50c0hhbmRsaW5nID0gZnVuY3Rpb24oKXtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50c0xvY2FsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy4kb3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50c0xvY2FsW2ldLCBvdmVybGF5TGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHNHbG9iYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHNHbG9iYWxbaV0sIGdsb2JhbExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIF9ldmVudE1vdmVTdGFydDogZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgICAgLy8gQ2hlY2sgaWYgaXQgd2FzIGRvdWJsZSBjbGlja1xuICAgICAgaWYgKHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lXG4gICAgICAgICYmIHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lICsgdGhpcy5vcHRpb25zLmRibENsaWNrRGVsYXkgPiBub3cpIHtcbiAgICAgICAgLy8gUmVzZXQgbGFzdE1vdmVTdGFydFRpbWVcbiAgICAgICAgdGhpcy5vdmVybGF5TGFzdE1vdmVTdGFydFRpbWUgPSAwXG4gICAgICAgIC8vIEVuYWJsZSBWaWV3IGluIG9yZGVyIHRvIG1vdmUgaXQgdG8gdGhlIGNlbnRlclxuICAgICAgICB0aGlzLm92ZXJsYXlJbk1vdmVtZW50ID0gdHJ1ZVxuXG4gICAgICAgIC8vIFNldCBob29rIHBvaW50IGFzIFZpZXcgY2VudGVyXG4gICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFggPSB0aGlzLnZpZXdXIC8gMlxuICAgICAgICB0aGlzLm92ZXJsYXlIb29rUG9pbnRZID0gdGhpcy52aWV3SCAvIDJcblxuICAgICAgICAvLyBNb3ZlIFZpZXcgdG8gc3RhcnQgcG9pbnRcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudE1vdmUoe1xuICAgICAgICAgICAgb2Zmc2V0WDogdGhpcy5wYW5lbFdpZHRoIC8gMlxuICAgICAgICAgICwgb2Zmc2V0WTogdGhpcy5wYW5lbEhlaWdodCAvIDJcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2V2ZW50TW92ZUVuZCh7XG4gICAgICAgICAgICBvZmZzZXRYOiB0aGlzLnBhbmVsV2lkdGggLyAyXG4gICAgICAgICAgLCBvZmZzZXRZOiB0aGlzLnBhbmVsSGVpZ2h0IC8gMlxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBWaWV3IHNob3VsZCBiZSBpbmFjdGl2ZSBhcyB3ZSBkb24ndCB3YW50IHRvIG1vdmUgaXQgcmlnaHQgYWZ0ZXIgZG91YmxlIGNsaWNrXG4gICAgICAgIHRoaXMub3ZlcmxheUluTW92ZW1lbnQgPSBmYWxzZVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZSBjbGlja1xuICAgICAgLy8gVGFrZSBjYXJlIGFzIHNpbmdsZSBjbGljayBoYXBwZW5zIGJlZm9yZSBkb3VibGUgY2xpY2sgMiB0aW1lc1xuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lID0gbm93XG4gICAgICAgIHRoaXMub3ZlcmxheUluTW92ZW1lbnQgPSB0cnVlXG4gICAgICAgIC8vIExvY2sgdmlldyBtb3ZpbmcgY2F1c2VkIGJ5IGN5IGV2ZW50c1xuICAgICAgICB0aGlzLnZpZXdMb2NrZWQgPSB0cnVlXG5cbiAgICAgICAgLy8gaWYgZXZlbnQgc3RhcnRlZCBpbiBWaWV3XG4gICAgICAgIGlmIChldi5vZmZzZXRYID49IHRoaXMudmlld1ggJiYgZXYub2Zmc2V0WCA8PSB0aGlzLnZpZXdYICsgdGhpcy52aWV3V1xuICAgICAgICAgICYmIGV2Lm9mZnNldFkgPj0gdGhpcy52aWV3WSAmJiBldi5vZmZzZXRZIDw9IHRoaXMudmlld1kgKyB0aGlzLnZpZXdIXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFggPSBldi5vZmZzZXRYIC0gdGhpcy52aWV3WFxuICAgICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFkgPSBldi5vZmZzZXRZIC0gdGhpcy52aWV3WVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGV2ZW50IHN0YXJ0ZWQgaW4gVGh1bWJuYWlsIChvdXRzaWRlIG9mIFZpZXcpXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIFNldCBob29rIHBvaW50IGFzIFZpZXcgY2VudGVyXG4gICAgICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WCA9IHRoaXMudmlld1cgLyAyXG4gICAgICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WSA9IHRoaXMudmlld0ggLyAyXG5cbiAgICAgICAgICAvLyBNb3ZlIFZpZXcgdG8gc3RhcnQgcG9pbnRcbiAgICAgICAgICB0aGlzLl9ldmVudE1vdmUoZXYpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfZXZlbnRNb3ZlOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpc1xuXG4gICAgICB0aGlzLl9jaGVja01vdXNlUG9zaXRpb24oZXYpXG5cbiAgICAgIC8vIGJyZWFrIGlmIGl0IGlzIHVzZWxlc3MgZXZlbnRcbiAgICAgIGlmICghdGhpcy5vdmVybGF5SW5Nb3ZlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy52aWV3WCA9IGV2Lm9mZnNldFggLSB0aGlzLm92ZXJsYXlIb29rUG9pbnRYXG4gICAgICB0aGlzLnZpZXdZID0gZXYub2Zmc2V0WSAtIHRoaXMub3ZlcmxheUhvb2tQb2ludFlcblxuICAgICAgLy8gVXBkYXRlIHZpZXcgcG9zaXRpb25cbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2xlZnQnXSA9IHRoaXMudmlld1ggKyAncHgnO1xuICAgICAgdGhpcy4kdmlldy5zdHlsZVsndG9wJ10gPSB0aGlzLnZpZXdZICsgJ3B4JztcblxuICAgICAgLy8gTW92ZSBDeVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgLy8gdHJpZ2dlciBpbnN0YW50bHlcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSA9PSAwKSB7XG4gICAgICAgICAgdGhpcy5fbW92ZUN5KClcbiAgICAgICAgfVxuICAgICAgICAvLyB0cmlnZ2VyIGxlc3Mgb2Z0ZW4gdGhhbiBmcmFtZSByYXRlXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLm92ZXJsYXlUaW1lb3V0KSB7XG4gICAgICAgICAgLy8gU2V0IGEgdGltZW91dCBmb3IgZ3JhcGggbW92ZW1lbnRcbiAgICAgICAgICB0aGlzLm92ZXJsYXlUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGF0Ll9tb3ZlQ3koKVxuICAgICAgICAgICAgdGhhdC5vdmVybGF5VGltZW91dCA9IGZhbHNlXG4gICAgICAgICAgfSwgMTAwMCAvIHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIF9jaGVja01vdXNlUG9zaXRpb246IGZ1bmN0aW9uIChldikge1xuICAgICAgLy8gSWYgbW91c2UgaW4gb3ZlciBWaWV3XG4gICAgICBpZihldi5vZmZzZXRYID4gdGhpcy52aWV3WCAmJiBldi5vZmZzZXRYIDwgdGhpcy52aWV3WCArIHRoaXMudmlld0JvcmRlckhvcml6b250YWwgKyB0aGlzLnZpZXdXXG4gICAgICAgICYmIGV2Lm9mZnNldFkgPiB0aGlzLnZpZXdZICYmIGV2Lm9mZnNldFkgPCB0aGlzLnZpZXdZICsgdGhpcy52aWV3Qm9yZGVyVmVydGljYWwgKyB0aGlzLnZpZXdIKSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTGlzdC5hZGQoJ21vdXNlb3Zlci12aWV3JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTGlzdC5yZW1vdmUoJ21vdXNlb3Zlci12aWV3JylcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfZXZlbnRNb3ZlRW5kOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIC8vIFVubG9jayB2aWV3IGNoYW5naW5nIGNhdXNlZCBieSBncmFwaCBldmVudHNcbiAgICAgIHRoaXMudmlld0xvY2tlZCA9IGZhbHNlXG5cbiAgICAgIC8vIFJlbW92ZSBjbGFzcyB3aGVuIG1vdXNlIGlzIG5vdCBvdmVyIE5hdmlnYXRvclxuICAgICAgdGhpcy4kcGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnbW91c2VvdmVyLXZpZXcnKVxuXG4gICAgICBpZiAoIXRoaXMub3ZlcmxheUluTW92ZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUcmlnZ2VyIG9uZSBsYXN0IG1vdmVcbiAgICAgIHRoaXMuX2V2ZW50TW92ZShldilcblxuICAgICAgLy8gSWYgbW9kZSBpcyBub3QgbGl2ZSB0aGVuIG1vdmUgZ3JhcGggb24gZHJhZyBlbmRcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmlld0xpdmVGcmFtZXJhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX21vdmVDeSgpXG4gICAgICB9XG5cbiAgICAgIC8vIFN0b3AgbW92ZW1lbnQgcGVybWlzc2lvblxuICAgICAgdGhpcy5vdmVybGF5SW5Nb3ZlbWVudCA9IGZhbHNlXG4gICAgfVxuXG4gICwgX2V2ZW50Wm9vbTogZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgZXYyID0gZXh0ZW5kKHt9LCBldi5vcmlnaW5hbEV2ZW50KTtcbiAgICAgIHZhciBkZWx0YSA9IGV2LndoZWVsRGVsdGFZIC8gMTAwMCB8fCBldi53aGVlbERlbHRhIC8gMTAwMCB8fCBldi5kZXRhaWwgLyAtMzIgfHwgZXYyLndoZWVsRGVsdGFZIC8gMTAwMCB8fCBldjIud2hlZWxEZWx0YSAvIDEwMDAgfHwgZXYyLmRldGFpbCAvIC0zMjtcbiAgICAgIHZhciB6b29tUmF0ZSA9IE1hdGgucG93KDEwLCBkZWx0YSlcbiAgICAgICAgLCBtb3VzZVBvc2l0aW9uID0ge1xuICAgICAgICAgICAgbGVmdDogZXYub2Zmc2V0WFxuICAgICAgICAgICwgdG9wOiBldi5vZmZzZXRZXG4gICAgICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jeS56b29taW5nRW5hYmxlZCgpKSB7XG4gICAgICAgIHRoaXMuX3pvb21DeSh6b29tUmF0ZSwgbW91c2VQb3NpdGlvbilcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfdXBkYXRlVGh1bWJuYWlsSW1hZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICBpZiggdGhpcy5fdGh1bWJuYWlsVXBkYXRpbmcgKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90aHVtYm5haWxVcGRhdGluZyA9IHRydWU7XG5cbiAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGF0Ll9jaGVja1RodW1ibmFpbFNpemVzQW5kVXBkYXRlKCk7XG4gICAgICB0aGF0Ll9zZXR1cFZpZXcoKTtcblxuICAgICAgdmFyICRpbWcgPSB0aGF0LiR0aHVtYm5haWw7XG4gICAgICB2YXIgaW1nID0gJGltZztcblxuICAgICAgdmFyIHcgPSB0aGF0LnBhbmVsV2lkdGg7XG4gICAgICB2YXIgaCA9IHRoYXQucGFuZWxIZWlnaHQ7XG4gICAgICB2YXIgYmIgPSB0aGF0LmJvdW5kaW5nQm94O1xuICAgICAgdmFyIHpvb20gPSBNYXRoLm1pbiggdy9iYi53LCBoL2JiLmggKTtcblxuICAgICAgdmFyIHBuZyA9IHRoYXQuY3kucG5nKHtcbiAgICAgICAgZnVsbDogdHJ1ZSxcbiAgICAgICAgc2NhbGU6IHpvb20sXG4gICAgICAgIG1heEhlaWdodDogaCxcbiAgICAgICAgbWF4V2lkdGg6IHdcbiAgICAgIH0pO1xuICAgICAgaWYoIHBuZy5pbmRleE9mKCdpbWFnZS9wbmcnKSA8IDAgKXtcbiAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSggJ3NyYycgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoICdzcmMnLCBwbmcgKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRyYW5zbGF0ZSA9IHtcbiAgICAgICAgeDogKHcgLSB6b29tKiggYmIudyApKS8yLFxuICAgICAgICB5OiAoaCAtIHpvb20qKCBiYi5oICkpLzJcbiAgICAgIH07XG5cbiAgICAgICRpbWcuc3R5bGVbJ3Bvc2l0aW9uJ10gPSAnYWJzb2x1dGUnO1xuICAgICAgJGltZy5zdHlsZVsnbGVmdCddID0gdHJhbnNsYXRlLnggKyAncHgnO1xuICAgICAgJGltZy5zdHlsZVsndG9wJ10gPSB0cmFuc2xhdGUueSArICdweCc7XG5cbiAgICB9XG5cbiAgICB0aGlzLl9vblJlbmRlckhhbmRsZXIgPSB0aHJvdHRsZShyZW5kZXIsIHRoYXQub3B0aW9ucy5yZXJlbmRlckRlbGF5KVxuXG4gICAgdGhpcy5jeS5vblJlbmRlciggdGhpcy5fb25SZW5kZXJIYW5kbGVyIClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgTmF2aWdhdG9yIHZpZXcgbW92aW5nXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLCBfbW92ZUN5OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmN5LnBhbih7XG4gICAgICAgIHg6IC0odGhpcy52aWV3WCArIHRoaXMudmlld0JvcmRlckxlZnQgLSB0aGlzLnRodW1ibmFpbFBhbi54KSAqIHRoaXMud2lkdGggLyB0aGlzLnZpZXdXXG4gICAgICAsIHk6IC0odGhpcy52aWV3WSArIHRoaXMudmlld0JvcmRlckxlZnQgLSB0aGlzLnRodW1ibmFpbFBhbi55KSAqIHRoaXMuaGVpZ2h0IC8gdGhpcy52aWV3SFxuICAgICAgfSlcbiAgICB9XG5cbiAgLyoqXG4gICAqIFpvb21zIGdyYXBoLlxuICAgKlxuICAgKiBAdGhpcyB7Y3l0b3NjYXBlTmF2aWdhdG9yfVxuICAgKiBAcGFyYW0ge251bWJlcn0gem9vbVJhdGUgVGhlIHpvb20gcmF0ZSB2YWx1ZS4gMSBpcyAxMDAlLlxuICAgKi9cbiAgLCBfem9vbUN5OiBmdW5jdGlvbiAoem9vbVJhdGUsIHpvb21DZW50ZXJSYXcpIHtcbiAgICAgIHZhciB6b29tQ2VudGVyXG4gICAgICAgICwgaXNab29tQ2VudGVySW5WaWV3ID0gZmFsc2VcblxuICAgICAgem9vbUNlbnRlciA9IHtcbiAgICAgICAgeDogdGhpcy53aWR0aCAvIDJcbiAgICAgICwgeTogdGhpcy5oZWlnaHQgLyAyXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmN5Lnpvb20oe1xuICAgICAgICBsZXZlbDogdGhpcy5jeS56b29tKCkgKiB6b29tUmF0ZVxuICAgICAgLCByZW5kZXJlZFBvc2l0aW9uOiB6b29tQ2VudGVyXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbiAgdmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24oIGN5dG9zY2FwZSApe1xuXG4gICAgaWYgKCFjeXRvc2NhcGUpeyByZXR1cm47IH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgICBjeXRvc2NhcGUoICdjb3JlJywgJ25hdmlnYXRvcicsIGZ1bmN0aW9uKCBvcHRpb25zICl7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IE5hdmlnYXRvciggY3ksIG9wdGlvbnMgKTtcbiAgICB9ICk7XG5cbiAgfTtcblxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsgLy8gZXhwb3NlIGFzIGEgY29tbW9uanMgbW9kdWxlXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiggY3l0b3NjYXBlICl7XG4gICAgICByZWdpc3RlciggY3l0b3NjYXBlICk7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJyAmJiBkZWZpbmUuYW1kKSB7IC8vIGV4cG9zZSBhcyBhbiBhbWQvcmVxdWlyZWpzIG1vZHVsZVxuICAgIGRlZmluZSgnY3l0b3NjYXBlLW5hdmlnYXRvcicsIGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4gcmVnaXN0ZXI7XG4gICAgfSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgICByZWdpc3RlcihjeXRvc2NhcGUpO1xuICB9XG5cbn0pKCk7XG4iLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIG9mZnNldFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsgLy8gRG8gbm90IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IDAsIG90aGVyd2lzZSB3ZSBnZXQgYEluZmluaXR5YCBhcyBzY2FsZVxuICAgIC8vIEZhbGxiYWNrIHRvIDEgaW4gY2FzZSBib3RoIHZhbHVlcyBhcmUgYDBgXG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIG9mZnNldFdpZHRoIHx8IDE7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldEhlaWdodCA+IDApIHtcbiAgICAgIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIG9mZnNldEhlaWdodCB8fCAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggLyBzY2FsZVgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAvIHNjYWxlWSxcbiAgICB0b3A6IHJlY3QudG9wIC8gc2NhbGVZLFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0IC8gc2NhbGVYLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20gLyBzY2FsZVksXG4gICAgbGVmdDogcmVjdC5sZWZ0IC8gc2NhbGVYLFxuICAgIHg6IHJlY3QubGVmdCAvIHNjYWxlWCxcbiAgICB5OiByZWN0LnRvcCAvIHNjYWxlWVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSB7XG4gIGlmIChnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gKC8vIHRoaXMgaXMgYSBxdWlja2VyIChidXQgbGVzcyB0eXBlIHNhZmUpIHdheSB0byBzYXZlIHF1aXRlIHNvbWUgYnl0ZXMgZnJvbSB0aGUgYnVuZGxlXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgIGVsZW1lbnQuYXNzaWduZWRTbG90IHx8IC8vIHN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlXG4gICAgZWxlbWVudC5wYXJlbnROb2RlIHx8ICggLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWRcbiAgICBpc1NoYWRvd1Jvb3QoZWxlbWVudCkgPyBlbGVtZW50Lmhvc3QgOiBudWxsKSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IEhUTUxFbGVtZW50IGlzIGEgTm9kZVxuICAgIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSAvLyBmYWxsYmFja1xuXG4gICk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpICE9PSAtMTtcbiAgdmFyIGlzSUUgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQnKSAhPT0gLTE7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDsgLy8gTkI6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUyA8PSAxMi4gSWYgdGhlIGtleWJvYXJkIGlzIG9wZW4sIHRoZSBwb3BwZXJcbiAgLy8gY2FuIGJlIG9ic2N1cmVkIHVuZGVybmVhdGggaXQuXG4gIC8vIEFsc28sIGBodG1sLmNsaWVudEhlaWdodGAgYWRkcyB0aGUgYm90dG9tIGJhciBoZWlnaHQgaW4gU2FmYXJpIGlPUywgZXZlblxuICAvLyBpZiBpdCBpc24ndCBvcGVuLCBzbyBpZiB0aGlzIGlzbid0IGF2YWlsYWJsZSwgdGhlIHBvcHBlciB3aWxsIGJlIGRldGVjdGVkXG4gIC8vIHRvIG92ZXJmbG93IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB0b28gZWFybHkuXG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7IC8vIFVzZXMgTGF5b3V0IFZpZXdwb3J0IChsaWtlIENocm9tZTsgU2FmYXJpIGRvZXMgbm90IGN1cnJlbnRseSlcbiAgICAvLyBJbiBDaHJvbWUsIGl0IHJldHVybnMgYSB2YWx1ZSB2ZXJ5IGNsb3NlIHRvIDAgKCsvLSkgYnV0IGNvbnRhaW5zIHJvdW5kaW5nXG4gICAgLy8gZXJyb3JzIGR1ZSB0byBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHByZWNpc2lvbi5cbiAgICAvLyBTYWZhcmkgcmV0dXJucyBhIG51bWJlciA8PSAwLCB1c3VhbGx5IDwgLTEgd2hlbiBwaW5jaC16b29tZWRcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmYWlscyBpbiBtb2JpbGUgZW11bGF0aW9uIG1vZGUgaW4gQ2hyb21lLlxuICAgIC8vIE1hdGguYWJzKHdpbi5pbm5lcldpZHRoIC8gdmlzdWFsVmlld3BvcnQuc2NhbGUgLSB2aXN1YWxWaWV3cG9ydC53aWR0aCkgPFxuICAgIC8vIDAuMDAxXG4gICAgLy8gRmFsbGJhY2sgaGVyZTogXCJOb3QgU2FmYXJpXCIgdXNlckFnZW50XG5cbiAgICBpZiAoIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnkpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogVGhlIGBhbGxvd2VkQXV0b1BsYWNlbWVudHNgIG9wdGlvbiBkaWQgbm90IGFsbG93IGFueScsICdwbGFjZW1lbnRzLiBFbnN1cmUgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbiBtYXRjaGVzIHRoZSB2YXJpYXRpb24nLCAnb2YgdGhlIGFsbG93ZWQgcGxhY2VtZW50cy4nLCAnRm9yIGV4YW1wbGUsIFwiYXV0b1wiIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG93IFwiYm90dG9tLXN0YXJ0XCIuJywgJ1VzZSBcImF1dG8tc3RhcnRcIiBpbnN0ZWFkLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBbXS5jb25jYXQoT2JqZWN0LmtleXMobW9kaWZpZXIpLCBWQUxJRF9QUk9QRVJUSUVTKSAvLyBJRTExLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIGBuZXcgU2V0KGl0ZXJhYmxlKWBcbiAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIFN0cmluZyhtb2RpZmllci5uYW1lKSwgJ1wibmFtZVwiJywgJ1wic3RyaW5nXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5uYW1lKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZW5hYmxlZCc6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5lbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVuYWJsZWRcIicsICdcImJvb2xlYW5cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmVuYWJsZWQpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwaGFzZSc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyUGhhc2VzLmluZGV4T2YobW9kaWZpZXIucGhhc2UpIDwgMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicGhhc2VcIicsIFwiZWl0aGVyIFwiICsgbW9kaWZpZXJQaGFzZXMuam9pbignLCAnKSwgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucGhhc2UpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmbic6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5mbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZm5cIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VmZmVjdCc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyLmVmZmVjdCAhPSBudWxsICYmIHR5cGVvZiBtb2RpZmllci5lZmZlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVmZmVjdFwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVxdWlyZXMnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5yZXF1aXJlcyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pcXVlQnkoYXJyLCBmbikge1xuICB2YXIgaWRlbnRpZmllcnMgPSBuZXcgU2V0KCk7XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBmbihpdGVtKTtcblxuICAgIGlmICghaWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICBpZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlc107XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiQHBvcHBlcmpzL2NvcmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiQHBvcHBlcmpzL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlUG9wcGVyXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiQHBvcHBlcmpzL2NvcmVcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImN5dG9zY2FwZVBvcHBlclwiXSA9IGZhY3Rvcnkocm9vdFtcIlBvcHBlclwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzhfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDcpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoT2JqZWN0KSA6IGZ1bmN0aW9uICh0Z3QpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHNyY3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3Jjc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBzcmNzLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIGlmIChzcmMgIT09IG51bGwgJiYgc3JjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGd0O1xufTtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSksXG4gICAgZ2V0Qm91bmRpbmdCb3ggPSBfcmVxdWlyZS5nZXRCb3VuZGluZ0JveDtcblxuLy8gQ3JlYXRlIGEgcG9wcGVyIHZpcnR1YWwgZWxlbWVudCAoYWthIHBvcHBlciB2MSByZWZlcmVuY2Ugb2JqZWN0KVxuLy8gaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvdmlydHVhbC1lbGVtZW50cy9cblxuXG5mdW5jdGlvbiBnZXRSZWYodGFyZ2V0LCBvcHRzKSB7XG5cbiAgLy9EZWZpbmUgcG9wcGVyIHJlZmVyZW5jZSBvYmplY3QgYW5kIGN5IHJlZmVyZW5jZSAgb2JqZWN0XG4gIHZhciByZWZPYmplY3QgPSB7XG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICByZXR1cm4gZ2V0Qm91bmRpbmdCb3godGFyZ2V0LCBvcHRzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHJlZk9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldFJlZjogZ2V0UmVmIH07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKSxcbiAgICBnZXRSZWYgPSBfcmVxdWlyZS5nZXRSZWY7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLFxuICAgIGdldENvbnRlbnQgPSBfcmVxdWlyZTIuZ2V0Q29udGVudDtcblxudmFyIHBvcHBlckRlZmF1bHRzID0ge307XG5cbnZhciBfcmVxdWlyZTMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLFxuICAgIGNyZWF0ZVBvcHBlciA9IF9yZXF1aXJlMy5jcmVhdGVQb3BwZXI7XG5cbi8vIENyZWF0ZSBhIG5ldyBwb3BwZXIgb2JqZWN0IGZvciBhIGNvcmUgb3IgZWxlbWVudCB0YXJnZXRcblxuXG5mdW5jdGlvbiBnZXRQb3BwZXIodGFyZ2V0LCBvcHRzKSB7XG4gIHZhciByZWZPYmplY3QgPSBnZXRSZWYodGFyZ2V0LCBvcHRzKTtcbiAgdmFyIGNvbnRlbnQgPSBnZXRDb250ZW50KHRhcmdldCwgb3B0cy5jb250ZW50KTtcbiAgdmFyIHBvcHBlck9wdHMgPSBhc3NpZ24oe30sIHBvcHBlckRlZmF1bHRzLCBvcHRzLnBvcHBlcik7XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcHBlcihyZWZPYmplY3QsIGNvbnRlbnQsIHBvcHBlck9wdHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgZ2V0UG9wcGVyOiBnZXRQb3BwZXIgfTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLFxuICAgIGdldFBvcHBlciA9IF9yZXF1aXJlLmdldFBvcHBlcjtcblxudmFyIF9yZXF1aXJlMiA9IF9fd2VicGFja19yZXF1aXJlX18oMSksXG4gICAgZ2V0UmVmID0gX3JlcXVpcmUyLmdldFJlZjtcblxuZnVuY3Rpb24gcG9wcGVyKG9wdHMpIHtcbiAgY2hlY2tGb3JXYXJuaW5nKHRoaXMpO1xuXG4gIHJldHVybiBnZXRQb3BwZXIodGhpc1swXSwgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzWzBdLCBvcHRzKSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlclJlZihvcHRzKSB7XG4gIGNoZWNrRm9yV2FybmluZyh0aGlzKTtcblxuICByZXR1cm4gZ2V0UmVmKHRoaXNbMF0sIGNyZWF0ZU9wdGlvbnNPYmplY3QodGhpc1swXSwgb3B0cykpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zT2JqZWN0KHRhcmdldCwgb3B0cykge1xuICB2YXIgcmVuZGVyZWREaW1lbnNpb25zID0gZnVuY3Rpb24gcmVuZGVyZWREaW1lbnNpb25zKGVsKSB7XG4gICAgcmV0dXJuIGVsLmlzTm9kZSgpID8geyB3OiBlbC5yZW5kZXJlZFdpZHRoKCksIGg6IGVsLnJlbmRlcmVkSGVpZ2h0KCkgfSA6IHsgdzogMywgaDogMyB9O1xuICB9O1xuICB2YXIgcmVuZGVyZWRQb3NpdGlvbiA9IGZ1bmN0aW9uIHJlbmRlcmVkUG9zaXRpb24oZWwpIHtcbiAgICByZXR1cm4gZWwuaXNOb2RlKCkgPyBnZXRSZW5kZXJlZENlbnRlcihlbCwgcmVuZGVyZWREaW1lbnNpb25zKSA6IGdldFJlbmRlcmVkTWlkcG9pbnQoZWwpO1xuICB9O1xuICB2YXIgcG9wcGVyID0ge307XG4gIHZhciBjeSA9IHRhcmdldC5jeSgpO1xuXG4gIHZhciBkZWZhdWx0cyA9IHsgcmVuZGVyZWREaW1lbnNpb25zOiByZW5kZXJlZERpbWVuc2lvbnMsIHJlbmRlcmVkUG9zaXRpb246IHJlbmRlcmVkUG9zaXRpb24sIHBvcHBlcjogcG9wcGVyLCBjeTogY3kgfTtcblxuICByZXR1cm4gYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0cyk7XG59XG5cbi8vR2V0IHRoZSByZW5kZXJlZCBjZW50ZXJcbmZ1bmN0aW9uIGdldFJlbmRlcmVkQ2VudGVyKHRhcmdldCwgcmVuZGVyZWREaW1lbnNpb25zKSB7XG4gIHZhciBwb3MgPSB0YXJnZXQucmVuZGVyZWRQb3NpdGlvbigpO1xuICB2YXIgZGltZW5zaW9ucyA9IHJlbmRlcmVkRGltZW5zaW9ucyh0YXJnZXQpO1xuICB2YXIgb2Zmc2V0WCA9IGRpbWVuc2lvbnMudyAvIDI7XG4gIHZhciBvZmZzZXRZID0gZGltZW5zaW9ucy5oIC8gMjtcblxuICByZXR1cm4ge1xuICAgIHg6IHBvcy54IC0gb2Zmc2V0WCxcbiAgICB5OiBwb3MueSAtIG9mZnNldFlcbiAgfTtcbn1cblxuLy9HZXQgdGhlIHJlbmRlcmVkIHBvc2l0aW9uIG9mIHRoZSBtaWRwb2ludFxuZnVuY3Rpb24gZ2V0UmVuZGVyZWRNaWRwb2ludCh0YXJnZXQpIHtcbiAgdmFyIHAgPSB0YXJnZXQubWlkcG9pbnQoKTtcbiAgdmFyIHBhbiA9IHRhcmdldC5jeSgpLnBhbigpO1xuICB2YXIgem9vbSA9IHRhcmdldC5jeSgpLnpvb20oKTtcblxuICByZXR1cm4ge1xuICAgIHg6IHAueCAqIHpvb20gKyBwYW4ueCxcbiAgICB5OiBwLnkgKiB6b29tICsgcGFuLnlcbiAgfTtcbn1cblxuLy9XYXJuIHVzZXIgYWJvdXQgbWlzdXNlIG9mIHRoZSBwbHVnaW5cbmZ1bmN0aW9uIGNoZWNrRm9yV2FybmluZyhlbGVtZW50cykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5cbiAgLy9Qb3BwZXIuanMgU2hvdWxkIG9ubHkgYmUgdXNlZCBvbiAxIGVsZW1lbnRcbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zb2xlLndhcm4oXCJQb3BwZXIuanMgRXh0ZW5zaW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gb25lIGVsZW1lbnQuXCIpO1xuICAgIGNvbnNvbGUud2FybihcIklnbm9yaW5nIGFsbCBzdWJzZXF1ZW50IGVsZW1lbnRzXCIpO1xuICB9XG5cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcG9wcGVyOiBwb3BwZXIsIHBvcHBlclJlZjogcG9wcGVyUmVmIH07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKSxcbiAgICBnZXRQb3BwZXIgPSBfcmVxdWlyZS5nZXRQb3BwZXI7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLFxuICAgIGdldFJlZiA9IF9yZXF1aXJlMi5nZXRSZWY7XG5cbmZ1bmN0aW9uIHBvcHBlcihvcHRzKSB7XG4gIHJldHVybiBnZXRQb3BwZXIodGhpcywgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzLCBvcHRzKSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlclJlZihvcHRzKSB7XG4gIHJldHVybiBnZXRSZWYodGhpcywgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzLCBvcHRzKSk7XG59XG5cbi8vQ3JlYXRlIGEgb3B0aW9ucyBvYmplY3Qgd2l0aCByZXF1aXJlZCBkZWZhdWx0IHZhbHVlc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9uc09iamVjdCh0YXJnZXQsIG9wdHMpIHtcbiAgdmFyIGRlZmF1bHRzID0ge1xuICAgIGJvdW5kaW5nQm94OiB7XG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgICB3OiAzLFxuICAgICAgaDogM1xuICAgIH0sXG4gICAgcmVuZGVyZWREaW1lbnNpb25zOiBmdW5jdGlvbiByZW5kZXJlZERpbWVuc2lvbnMoKSB7XG4gICAgICByZXR1cm4geyB3OiAzLCBoOiAzIH07XG4gICAgfSxcbiAgICByZW5kZXJlZFBvc2l0aW9uOiBmdW5jdGlvbiByZW5kZXJlZFBvc2l0aW9uKCkge1xuICAgICAgcmV0dXJuIHsgeDogMCwgeTogMCB9O1xuICAgIH0sXG4gICAgcG9wcGVyOiB7fSxcbiAgICBjeTogdGFyZ2V0XG4gIH07XG5cbiAgcmV0dXJuIGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcG9wcGVyOiBwb3BwZXIsIHBvcHBlclJlZjogcG9wcGVyUmVmIH07XG5cbi8qKiovIH0pLFxuLyogNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0JveCh0YXJnZXQsIG9wdHMpIHtcbiAgdmFyIHJlbmRlcmVkUG9zaXRpb24gPSBvcHRzLnJlbmRlcmVkUG9zaXRpb24sXG4gICAgICBjeSA9IG9wdHMuY3ksXG4gICAgICByZW5kZXJlZERpbWVuc2lvbnMgPSBvcHRzLnJlbmRlcmVkRGltZW5zaW9ucztcblxuICB2YXIgb2Zmc2V0ID0gY3kuY29udGFpbmVyKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBkaW1zID0gcmVuZGVyZWREaW1lbnNpb25zKHRhcmdldCk7XG4gIHZhciBwb3MgPSByZW5kZXJlZFBvc2l0aW9uKHRhcmdldCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHBvcy55ICsgb2Zmc2V0LnRvcCxcbiAgICBsZWZ0OiBwb3MueCArIG9mZnNldC5sZWZ0LFxuICAgIHJpZ2h0OiBwb3MueCArIGRpbXMudyArIG9mZnNldC5sZWZ0LFxuICAgIGJvdHRvbTogcG9zLnkgKyBkaW1zLmggKyBvZmZzZXQudG9wLFxuICAgIHdpZHRoOiBkaW1zLncsXG4gICAgaGVpZ2h0OiBkaW1zLmhcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldEJvdW5kaW5nQm94OiBnZXRCb3VuZGluZ0JveCB9O1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gZ2V0Q29udGVudCh0YXJnZXQsIGNvbnRlbnQpIHtcbiAgdmFyIGNvbnRlbnRPYmplY3QgPSBudWxsO1xuXG4gIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy9FeGVjdXRlIGZ1bmN0aW9uIGlmIHVzZXIgb3B0ZWQgZm9yIGEgZHlhbmFtaWMgdGFyZ2V0XG4gICAgY29udGVudE9iamVjdCA9IGNvbnRlbnQodGFyZ2V0KTtcbiAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAvL1RhcmdldCBvcHRpb24gaXMgYW4gSFRNTCBlbGVtZW50XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG5vdCBjcmVhdGUgcG9wcGVyIGZyb20gJ3RhcmdldCcgd2l0aCB1bmtub3duIHR5cGVcIik7XG4gIH1cblxuICAvLyBDaGVjayB2YWxpZGl0eSBvZiBwYXJzZWQgdGFyZ2V0XG4gIGlmIChjb250ZW50T2JqZWN0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ3RhcmdldCcgc3BlY2lmaWVkIHRvIGNyZWF0ZSBwb3BwZXJcIik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbnRlbnRPYmplY3Q7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldENvbnRlbnQ6IGdldENvbnRlbnQgfTtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qIGdsb2JhbCBjeXRvc2NhcGUgKi9cblxudmFyIGNvcmVJbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBjb2xsZWN0aW9uSW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xuICBjeXRvc2NhcGUoJ2NvcmUnLCAncG9wcGVyJywgY29yZUltcGwucG9wcGVyKTsgLy9DeXRvc2NhcGUgQ29yZVxuICBjeXRvc2NhcGUoJ2NvbGxlY3Rpb24nLCAncG9wcGVyJywgY29sbGVjdGlvbkltcGwucG9wcGVyKTsgLy9DeXRvc2NhcGUgQ29sbGVjdGlvbnNcbiAgY3l0b3NjYXBlKCdjb3JlJywgJ3BvcHBlclJlZicsIGNvcmVJbXBsLnBvcHBlclJlZik7IC8vQ3l0b3NjYXBlIENvcmUgZm9yIFJlZmVyZW5jZXNcbiAgY3l0b3NjYXBlKCdjb2xsZWN0aW9uJywgJ3BvcHBlclJlZicsIGNvbGxlY3Rpb25JbXBsLnBvcHBlclJlZik7IC8vQ3l0b3NjYXBlIENvbGxlY3Rpb25zIGZvciBSZWZlcmVuY2VzXG59O1xuXG5pZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgcmVnaXN0ZXIoY3l0b3NjYXBlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV84X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBQb3dlckVkZ2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUG93ZXJFZGdlKHNvdXJjZSwgdGFyZ2V0LCB0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiBQb3dlckVkZ2U7XHJcbn0oKSk7XHJcbmV4cG9ydHMuUG93ZXJFZGdlID0gUG93ZXJFZGdlO1xyXG52YXIgQ29uZmlndXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBDb25maWd1cmF0aW9uKG4sIGVkZ2VzLCBsaW5rQWNjZXNzb3IsIHJvb3RHcm91cCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5saW5rQWNjZXNzb3IgPSBsaW5rQWNjZXNzb3I7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVzID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcclxuICAgICAgICBpZiAocm9vdEdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdE1vZHVsZXNGcm9tR3JvdXAocm9vdEdyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChuZXcgTW9kdWxlU2V0KCkpO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgICAgIHRoaXMucm9vdHNbMF0uYWRkKHRoaXMubW9kdWxlc1tpXSA9IG5ldyBNb2R1bGUoaSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlIgPSBlZGdlcy5sZW5ndGg7XHJcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICB2YXIgcyA9IF90aGlzLm1vZHVsZXNbbGlua0FjY2Vzc29yLmdldFNvdXJjZUluZGV4KGUpXSwgdCA9IF90aGlzLm1vZHVsZXNbbGlua0FjY2Vzc29yLmdldFRhcmdldEluZGV4KGUpXSwgdHlwZSA9IGxpbmtBY2Nlc3Nvci5nZXRUeXBlKGUpO1xyXG4gICAgICAgICAgICBzLm91dGdvaW5nLmFkZCh0eXBlLCB0KTtcclxuICAgICAgICAgICAgdC5pbmNvbWluZy5hZGQodHlwZSwgcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBDb25maWd1cmF0aW9uLnByb3RvdHlwZS5pbml0TW9kdWxlc0Zyb21Hcm91cCA9IGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgIHZhciBtb2R1bGVTZXQgPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgdGhpcy5yb290cy5wdXNoKG1vZHVsZVNldCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZWF2ZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSBncm91cC5sZWF2ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBtb2R1bGUgPSBuZXcgTW9kdWxlKG5vZGUuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZHVsZXNbbm9kZS5pZF0gPSBtb2R1bGU7XHJcbiAgICAgICAgICAgIG1vZHVsZVNldC5hZGQobW9kdWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyb3VwLmdyb3Vwcykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGdyb3VwLmdyb3Vwcy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gZ3JvdXAuZ3JvdXBzW2pdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmluaXRpb24gPSB7fTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgIT09IFwibGVhdmVzXCIgJiYgcHJvcCAhPT0gXCJncm91cHNcIiAmJiBjaGlsZC5oYXNPd25Qcm9wZXJ0eShwcm9wKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbltwcm9wXSA9IGNoaWxkW3Byb3BdO1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlU2V0LmFkZChuZXcgTW9kdWxlKC0xIC0gaiwgbmV3IExpbmtTZXRzKCksIG5ldyBMaW5rU2V0cygpLCB0aGlzLmluaXRNb2R1bGVzRnJvbUdyb3VwKGNoaWxkKSwgZGVmaW5pdGlvbikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtb2R1bGVTZXQ7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoYSwgYiwgaykge1xyXG4gICAgICAgIGlmIChrID09PSB2b2lkIDApIHsgayA9IDA7IH1cclxuICAgICAgICB2YXIgaW5JbnQgPSBhLmluY29taW5nLmludGVyc2VjdGlvbihiLmluY29taW5nKSwgb3V0SW50ID0gYS5vdXRnb2luZy5pbnRlcnNlY3Rpb24oYi5vdXRnb2luZyk7XHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gbmV3IE1vZHVsZVNldCgpO1xyXG4gICAgICAgIGNoaWxkcmVuLmFkZChhKTtcclxuICAgICAgICBjaGlsZHJlbi5hZGQoYik7XHJcbiAgICAgICAgdmFyIG0gPSBuZXcgTW9kdWxlKHRoaXMubW9kdWxlcy5sZW5ndGgsIG91dEludCwgaW5JbnQsIGNoaWxkcmVuKTtcclxuICAgICAgICB0aGlzLm1vZHVsZXMucHVzaChtKTtcclxuICAgICAgICB2YXIgdXBkYXRlID0gZnVuY3Rpb24gKHMsIGksIG8pIHtcclxuICAgICAgICAgICAgcy5mb3JBbGwoZnVuY3Rpb24gKG1zLCBsaW5rdHlwZSkge1xyXG4gICAgICAgICAgICAgICAgbXMuZm9yQWxsKGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5scyA9IG5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLmFkZChsaW5rdHlwZSwgbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLnJlbW92ZShsaW5rdHlwZSwgYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLnJlbW92ZShsaW5rdHlwZSwgYik7XHJcbiAgICAgICAgICAgICAgICAgICAgYVtvXS5yZW1vdmUobGlua3R5cGUsIG4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJbb10ucmVtb3ZlKGxpbmt0eXBlLCBuKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHVwZGF0ZShvdXRJbnQsIFwiaW5jb21pbmdcIiwgXCJvdXRnb2luZ1wiKTtcclxuICAgICAgICB1cGRhdGUoaW5JbnQsIFwib3V0Z29pbmdcIiwgXCJpbmNvbWluZ1wiKTtcclxuICAgICAgICB0aGlzLlIgLT0gaW5JbnQuY291bnQoKSArIG91dEludC5jb3VudCgpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10ucmVtb3ZlKGEpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10ucmVtb3ZlKGIpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10uYWRkKG0pO1xyXG4gICAgICAgIHJldHVybiBtO1xyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24ucHJvdG90eXBlLnJvb3RNZXJnZXMgPSBmdW5jdGlvbiAoaykge1xyXG4gICAgICAgIGlmIChrID09PSB2b2lkIDApIHsgayA9IDA7IH1cclxuICAgICAgICB2YXIgcnMgPSB0aGlzLnJvb3RzW2tdLm1vZHVsZXMoKTtcclxuICAgICAgICB2YXIgbiA9IHJzLmxlbmd0aDtcclxuICAgICAgICB2YXIgbWVyZ2VzID0gbmV3IEFycmF5KG4gKiAobiAtIDEpKTtcclxuICAgICAgICB2YXIgY3RyID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgaV8gPSBuIC0gMTsgaSA8IGlfOyArK2kpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyBqIDwgbjsgKytqKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IHJzW2ldLCBiID0gcnNbal07XHJcbiAgICAgICAgICAgICAgICBtZXJnZXNbY3RyXSA9IHsgaWQ6IGN0ciwgbkVkZ2VzOiB0aGlzLm5FZGdlcyhhLCBiKSwgYTogYSwgYjogYiB9O1xyXG4gICAgICAgICAgICAgICAgY3RyKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlcztcclxuICAgIH07XHJcbiAgICBDb25maWd1cmF0aW9uLnByb3RvdHlwZS5ncmVlZHlNZXJnZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucm9vdHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucm9vdHNbaV0ubW9kdWxlcygpLmxlbmd0aCA8IDIpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIG1zID0gdGhpcy5yb290TWVyZ2VzKGkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEubkVkZ2VzID09IGIubkVkZ2VzID8gYS5pZCAtIGIuaWQgOiBhLm5FZGdlcyAtIGIubkVkZ2VzOyB9KTtcclxuICAgICAgICAgICAgdmFyIG0gPSBtc1swXTtcclxuICAgICAgICAgICAgaWYgKG0ubkVkZ2VzID49IHRoaXMuUilcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB0aGlzLm1lcmdlKG0uYSwgbS5iLCBpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24ucHJvdG90eXBlLm5FZGdlcyA9IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgdmFyIGluSW50ID0gYS5pbmNvbWluZy5pbnRlcnNlY3Rpb24oYi5pbmNvbWluZyksIG91dEludCA9IGEub3V0Z29pbmcuaW50ZXJzZWN0aW9uKGIub3V0Z29pbmcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLlIgLSBpbkludC5jb3VudCgpIC0gb3V0SW50LmNvdW50KCk7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuZ2V0R3JvdXBIaWVyYXJjaHkgPSBmdW5jdGlvbiAocmV0YXJnZXRlZEVkZ2VzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgZ3JvdXBzID0gW107XHJcbiAgICAgICAgdmFyIHJvb3QgPSB7fTtcclxuICAgICAgICB0b0dyb3Vwcyh0aGlzLnJvb3RzWzBdLCByb290LCBncm91cHMpO1xyXG4gICAgICAgIHZhciBlcyA9IHRoaXMuYWxsRWRnZXMoKTtcclxuICAgICAgICBlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gX3RoaXMubW9kdWxlc1tlLnNvdXJjZV07XHJcbiAgICAgICAgICAgIHZhciBiID0gX3RoaXMubW9kdWxlc1tlLnRhcmdldF07XHJcbiAgICAgICAgICAgIHJldGFyZ2V0ZWRFZGdlcy5wdXNoKG5ldyBQb3dlckVkZ2UodHlwZW9mIGEuZ2lkID09PSBcInVuZGVmaW5lZFwiID8gZS5zb3VyY2UgOiBncm91cHNbYS5naWRdLCB0eXBlb2YgYi5naWQgPT09IFwidW5kZWZpbmVkXCIgPyBlLnRhcmdldCA6IGdyb3Vwc1tiLmdpZF0sIGUudHlwZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuYWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGVzID0gW107XHJcbiAgICAgICAgQ29uZmlndXJhdGlvbi5nZXRFZGdlcyh0aGlzLnJvb3RzWzBdLCBlcyk7XHJcbiAgICAgICAgcmV0dXJuIGVzO1xyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24uZ2V0RWRnZXMgPSBmdW5jdGlvbiAobW9kdWxlcywgZXMpIHtcclxuICAgICAgICBtb2R1bGVzLmZvckFsbChmdW5jdGlvbiAobSkge1xyXG4gICAgICAgICAgICBtLmdldEVkZ2VzKGVzKTtcclxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5nZXRFZGdlcyhtLmNoaWxkcmVuLCBlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb247XHJcbn0oKSk7XHJcbmV4cG9ydHMuQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb247XHJcbmZ1bmN0aW9uIHRvR3JvdXBzKG1vZHVsZXMsIGdyb3VwLCBncm91cHMpIHtcclxuICAgIG1vZHVsZXMuZm9yQWxsKGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgaWYgKG0uaXNMZWFmKCkpIHtcclxuICAgICAgICAgICAgaWYgKCFncm91cC5sZWF2ZXMpXHJcbiAgICAgICAgICAgICAgICBncm91cC5sZWF2ZXMgPSBbXTtcclxuICAgICAgICAgICAgZ3JvdXAubGVhdmVzLnB1c2gobS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgZyA9IGdyb3VwO1xyXG4gICAgICAgICAgICBtLmdpZCA9IGdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmICghbS5pc0lzbGFuZCgpIHx8IG0uaXNQcmVkZWZpbmVkKCkpIHtcclxuICAgICAgICAgICAgICAgIGcgPSB7IGlkOiBtLmdpZCB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKG0uaXNQcmVkZWZpbmVkKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBtLmRlZmluaXRpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdbcHJvcF0gPSBtLmRlZmluaXRpb25bcHJvcF07XHJcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3VwLmdyb3VwcylcclxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncm91cHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmdyb3Vwcy5wdXNoKG0uZ2lkKTtcclxuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKGcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvR3JvdXBzKG0uY2hpbGRyZW4sIGcsIGdyb3Vwcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxudmFyIE1vZHVsZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBNb2R1bGUoaWQsIG91dGdvaW5nLCBpbmNvbWluZywgY2hpbGRyZW4sIGRlZmluaXRpb24pIHtcclxuICAgICAgICBpZiAob3V0Z29pbmcgPT09IHZvaWQgMCkgeyBvdXRnb2luZyA9IG5ldyBMaW5rU2V0cygpOyB9XHJcbiAgICAgICAgaWYgKGluY29taW5nID09PSB2b2lkIDApIHsgaW5jb21pbmcgPSBuZXcgTGlua1NldHMoKTsgfVxyXG4gICAgICAgIGlmIChjaGlsZHJlbiA9PT0gdm9pZCAwKSB7IGNoaWxkcmVuID0gbmV3IE1vZHVsZVNldCgpOyB9XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMub3V0Z29pbmcgPSBvdXRnb2luZztcclxuICAgICAgICB0aGlzLmluY29taW5nID0gaW5jb21pbmc7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XHJcbiAgICB9XHJcbiAgICBNb2R1bGUucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKGVzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLm91dGdvaW5nLmZvckFsbChmdW5jdGlvbiAobXMsIGVkZ2V0eXBlKSB7XHJcbiAgICAgICAgICAgIG1zLmZvckFsbChmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBlcy5wdXNoKG5ldyBQb3dlckVkZ2UoX3RoaXMuaWQsIHRhcmdldC5pZCwgZWRnZXR5cGUpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlLnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY291bnQoKSA9PT0gMDtcclxuICAgIH07XHJcbiAgICBNb2R1bGUucHJvdG90eXBlLmlzSXNsYW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm91dGdvaW5nLmNvdW50KCkgPT09IDAgJiYgdGhpcy5pbmNvbWluZy5jb3VudCgpID09PSAwO1xyXG4gICAgfTtcclxuICAgIE1vZHVsZS5wcm90b3R5cGUuaXNQcmVkZWZpbmVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5kZWZpbml0aW9uICE9PSBcInVuZGVmaW5lZFwiO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBNb2R1bGU7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTW9kdWxlID0gTW9kdWxlO1xyXG5mdW5jdGlvbiBpbnRlcnNlY3Rpb24obSwgbikge1xyXG4gICAgdmFyIGkgPSB7fTtcclxuICAgIGZvciAodmFyIHYgaW4gbSlcclxuICAgICAgICBpZiAodiBpbiBuKVxyXG4gICAgICAgICAgICBpW3ZdID0gbVt2XTtcclxuICAgIHJldHVybiBpO1xyXG59XHJcbnZhciBNb2R1bGVTZXQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTW9kdWxlU2V0KCkge1xyXG4gICAgICAgIHRoaXMudGFibGUgPSB7fTtcclxuICAgIH1cclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuY291bnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudGFibGUpLmxlbmd0aDtcclxuICAgIH07XHJcbiAgICBNb2R1bGVTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChvdGhlcikge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgcmVzdWx0LnRhYmxlID0gaW50ZXJzZWN0aW9uKHRoaXMudGFibGUsIG90aGVyLnRhYmxlKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uQ291bnQgPSBmdW5jdGlvbiAob3RoZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnNlY3Rpb24ob3RoZXIpLmNvdW50KCk7XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHJldHVybiBpZCBpbiB0aGlzLnRhYmxlO1xyXG4gICAgfTtcclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICB0aGlzLnRhYmxlW20uaWRdID0gbTtcclxuICAgIH07XHJcbiAgICBNb2R1bGVTZXQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudGFibGVbbS5pZF07XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5mb3JBbGwgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIGZvciAodmFyIG1pZCBpbiB0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIGYodGhpcy50YWJsZVttaWRdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5tb2R1bGVzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZm9yQWxsKGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgICAgIGlmICghbS5pc1ByZWRlZmluZWQoKSlcclxuICAgICAgICAgICAgICAgIHZzLnB1c2gobSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHZzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBNb2R1bGVTZXQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTW9kdWxlU2V0ID0gTW9kdWxlU2V0O1xyXG52YXIgTGlua1NldHMgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGlua1NldHMoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRzID0ge307XHJcbiAgICAgICAgdGhpcy5uID0gMDtcclxuICAgIH1cclxuICAgIExpbmtTZXRzLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uO1xyXG4gICAgfTtcclxuICAgIExpbmtTZXRzLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvckFsbE1vZHVsZXMoZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgbS5pZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChsaW5rdHlwZSwgbSkge1xyXG4gICAgICAgIHZhciBzID0gbGlua3R5cGUgaW4gdGhpcy5zZXRzID8gdGhpcy5zZXRzW2xpbmt0eXBlXSA6IHRoaXMuc2V0c1tsaW5rdHlwZV0gPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgcy5hZGQobSk7XHJcbiAgICAgICAgKyt0aGlzLm47XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChsaW5rdHlwZSwgbSkge1xyXG4gICAgICAgIHZhciBtcyA9IHRoaXMuc2V0c1tsaW5rdHlwZV07XHJcbiAgICAgICAgbXMucmVtb3ZlKG0pO1xyXG4gICAgICAgIGlmIChtcy5jb3VudCgpID09PSAwKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNldHNbbGlua3R5cGVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAtLXRoaXMubjtcclxuICAgIH07XHJcbiAgICBMaW5rU2V0cy5wcm90b3R5cGUuZm9yQWxsID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBmb3IgKHZhciBsaW5rdHlwZSBpbiB0aGlzLnNldHMpIHtcclxuICAgICAgICAgICAgZih0aGlzLnNldHNbbGlua3R5cGVdLCBOdW1iZXIobGlua3R5cGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmZvckFsbE1vZHVsZXMgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIHRoaXMuZm9yQWxsKGZ1bmN0aW9uIChtcywgbHQpIHsgcmV0dXJuIG1zLmZvckFsbChmKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChvdGhlcikge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGlua1NldHMoKTtcclxuICAgICAgICB0aGlzLmZvckFsbChmdW5jdGlvbiAobXMsIGx0KSB7XHJcbiAgICAgICAgICAgIGlmIChsdCBpbiBvdGhlci5zZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaSA9IG1zLmludGVyc2VjdGlvbihvdGhlci5zZXRzW2x0XSksIG4gPSBpLmNvdW50KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0c1tsdF0gPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uICs9IG47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBMaW5rU2V0cztcclxufSgpKTtcclxuZXhwb3J0cy5MaW5rU2V0cyA9IExpbmtTZXRzO1xyXG5mdW5jdGlvbiBpbnRlcnNlY3Rpb25Db3VudChtLCBuKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaW50ZXJzZWN0aW9uKG0sIG4pKS5sZW5ndGg7XHJcbn1cclxuZnVuY3Rpb24gZ2V0R3JvdXBzKG5vZGVzLCBsaW5rcywgbGEsIHJvb3RHcm91cCkge1xyXG4gICAgdmFyIG4gPSBub2Rlcy5sZW5ndGgsIGMgPSBuZXcgQ29uZmlndXJhdGlvbihuLCBsaW5rcywgbGEsIHJvb3RHcm91cCk7XHJcbiAgICB3aGlsZSAoYy5ncmVlZHlNZXJnZSgpKVxyXG4gICAgICAgIDtcclxuICAgIHZhciBwb3dlckVkZ2VzID0gW107XHJcbiAgICB2YXIgZyA9IGMuZ2V0R3JvdXBIaWVyYXJjaHkocG93ZXJFZGdlcyk7XHJcbiAgICBwb3dlckVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uIChlbmQpIHtcclxuICAgICAgICAgICAgdmFyIGcgPSBlW2VuZF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZyA9PSBcIm51bWJlclwiKVxyXG4gICAgICAgICAgICAgICAgZVtlbmRdID0gbm9kZXNbZ107XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmKFwic291cmNlXCIpO1xyXG4gICAgICAgIGYoXCJ0YXJnZXRcIik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IGdyb3VwczogZywgcG93ZXJFZGdlczogcG93ZXJFZGdlcyB9O1xyXG59XHJcbmV4cG9ydHMuZ2V0R3JvdXBzID0gZ2V0R3JvdXBzO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljRzkzWlhKbmNtRndhQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDFkbFlrTnZiR0V2YzNKakwzQnZkMlZ5WjNKaGNHZ3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGUFNUdEpRVU5KTEcxQ1FVTlhMRTFCUVZjc1JVRkRXQ3hOUVVGWExFVkJRMWdzU1VGQldUdFJRVVphTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVVzN1VVRkRXQ3hYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZMTzFGQlExZ3NVMEZCU1N4SFFVRktMRWxCUVVrc1EwRkJVVHRKUVVGSkxFTkJRVU03U1VGRGFFTXNaMEpCUVVNN1FVRkJSQ3hEUVVGRExFRkJURVFzU1VGTFF6dEJRVXhaTERoQ1FVRlRPMEZCVDNSQ08wbEJVMGtzZFVKQlFWa3NRMEZCVXl4RlFVRkZMRXRCUVdFc1JVRkJWU3haUVVGdlF5eEZRVUZGTEZOQlFXbENPMUZCUVhKSExHbENRV3RDUXp0UlFXeENOa01zYVVKQlFWa3NSMEZCV2l4WlFVRlpMRU5CUVhkQ08xRkJRemxGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hUUVVGVExFVkJRVVU3V1VGRFdDeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVMEZEZUVNN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGRGRFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRekZFTzFGQlEwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzUkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzFsQlExZ3NTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMmhFTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRhRVFzU1VGQlNTeEhRVUZITEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJrTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlR5dzBRMEZCYjBJc1IwRkJOVUlzVlVGQk5rSXNTMEZCU3p0UlFVTTVRaXhKUVVGSkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUTJoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRek5DTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU14UXl4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpOQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU5xUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNN1dVRkRMMElzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVONlFqdFJRVU5FTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVOa0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRE1VTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZOVUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeExRVUZMTEVsQlFVa3NTVUZCU1N4SlFVRkpMRXRCUVVzN2IwSkJRMnhDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1NVRkJTU3hKUVVGSkxFdEJRVXNzVVVGQlVTeEpRVUZKTEV0QlFVc3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRE8zZENRVU53UlN4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWMlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRkZCUVZFc1JVRkJSU3hGUVVGRkxFbEJRVWtzVVVGQlVTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGFrZzdVMEZEU2p0UlFVTkVMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZIUml3MlFrRkJTeXhIUVVGTUxGVkJRVTBzUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4RFFVRmhPMUZCUVdJc2EwSkJRVUVzUlVGQlFTeExRVUZoTzFGQlEzSkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGRE0wTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVOcVJDeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRk5CUVZNc1JVRkJSU3hEUVVGRE8xRkJReTlDTEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFFSXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTJwRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRlZCUVVNc1EwRkJWeXhGUVVGRkxFTkJRVk1zUlVGQlJTeERRVUZUTzFsQlF6TkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlF5eEZRVUZGTEVWQlFVVXNVVUZCVVR0blFrRkRiRUlzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkJMRU5CUVVNN2IwSkJRMUFzU1VGQlNTeEhRVUZITEVkQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU42UWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRja0lzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzaENMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOaUxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTXhRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFVDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTlFMRU5CUVVNc1EwRkJRenRSUVVOR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVlN4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM1pETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlR5eHJRMEZCVlN4SFFVRnNRaXhWUVVGdFFpeERRVUZoTzFGQlFXSXNhMEpCUVVFc1JVRkJRU3hMUVVGaE8xRkJUVFZDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOc1FpeEpRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1F5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRXaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM0pETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU14UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtJc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEycEZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yRkJRMVE3VTBGRFNqdFJRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeHRRMEZCVnl4SFFVRllPMUZCUTBrc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUlhoRExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXp0blFrRkJSU3hUUVVGVE8xbEJSMnBFTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlN5eFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFYaEVMRU5CUVhkRUxFTkJRVU1zUTBGQlF6dFpRVU55Unl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEWkN4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUVVVc1UwRkJVenRaUVVOcVF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMGxCUTB3c1EwRkJRenRKUVVWUExEaENRVUZOTEVkQlFXUXNWVUZCWlN4RFFVRlRMRVZCUVVVc1EwRkJVenRSUVVNdlFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUXpORExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEYmtRc1EwRkJRenRKUVVWRUxIbERRVUZwUWl4SFFVRnFRaXhWUVVGclFpeGxRVUUwUWp0UlFVRTVReXhwUWtGbFF6dFJRV1JITEVsQlFVa3NUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRaQ3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNwQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTFJc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGREwwSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRMMElzWlVGQlpTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRk5CUVZNc1EwRkRPVUlzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZEZGtRc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGRGRrUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkRWQ3hEUVVGRExFTkJRVU03VVVGRFVDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4blEwRkJVU3hIUVVGU08xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFvc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlF6RkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZOTEhOQ1FVRlJMRWRCUVdZc1ZVRkJaMElzVDBGQmEwSXNSVUZCUlN4RlFVRmxPMUZCUXk5RExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTFvc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTm1MR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNelF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTlFMRU5CUVVNN1NVRkRUQ3h2UWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0U2tRc1NVRjNTa003UVVGNFNsa3NjME5CUVdFN1FVRXdTakZDTEZOQlFWTXNVVUZCVVN4RFFVRkRMRTlCUVd0Q0xFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMDdTVUZETDBNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdVVUZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU5hTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOeVF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVMEZETTBJN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTmtMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0WlFVTjBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhaUVVGWkxFVkJRVVVzUlVGQlJUdG5Ra0ZEYmtNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1dVRkJXU3hGUVVGRk8yOUNRVVZvUWl4TFFVRkxMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFZRVUZWTzNkQ1FVTjZRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTzI5Q1FVRkZMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETzJkQ1FVTnlReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzcENMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYkVJN1dVRkRSQ3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VTBGRGJrTTdTVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOUUxFTkJRVU03UVVGRlJEdEpRVWRKTEdkQ1FVTlhMRVZCUVZVc1JVRkRWaXhSUVVGdFF5eEZRVU51UXl4UlFVRnRReXhGUVVOdVF5eFJRVUZ4UXl4RlFVTnlReXhWUVVGblFqdFJRVWhvUWl4NVFrRkJRU3hGUVVGQkxHVkJRWGxDTEZGQlFWRXNSVUZCUlR0UlFVTnVReXg1UWtGQlFTeEZRVUZCTEdWQlFYbENMRkZCUVZFc1JVRkJSVHRSUVVOdVF5eDVRa0ZCUVN4RlFVRkJMR1ZCUVRCQ0xGTkJRVk1zUlVGQlJUdFJRVWh5UXl4UFFVRkZMRWRCUVVZc1JVRkJSU3hEUVVGUk8xRkJRMVlzWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTWtJN1VVRkRia01zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTWtJN1VVRkRia01zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTmtJN1VVRkRja01zWlVGQlZTeEhRVUZXTEZWQlFWVXNRMEZCVFR0SlFVRkpMRU5CUVVNN1NVRkZhRU1zZVVKQlFWRXNSMEZCVWl4VlFVRlRMRVZCUVdVN1VVRkJlRUlzYVVKQlRVTTdVVUZNUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJPMWxCUXpsQ0xFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4TlFVRk5PMmRDUVVOYUxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VFFVRlRMRU5CUVVNc1MwRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5RTEVOQlFVTTdTVUZGUkN4MVFrRkJUU3hIUVVGT08xRkJRMGtzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4RFFVRkRPMGxCUlVRc2VVSkJRVkVzUjBGQlVqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZEVVc1EwRkJRenRKUVVWRUxEWkNRVUZaTEVkQlFWbzdVVUZEU1N4UFFVRlBMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eFhRVUZYTEVOQlFVTTdTVUZEYkVRc1EwRkJRenRKUVVOTUxHRkJRVU03UVVGQlJDeERRVUZETEVGQk4wSkVMRWxCTmtKRE8wRkJOMEpaTEhkQ1FVRk5PMEZCSzBKdVFpeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRk5MRVZCUVVVc1EwRkJUVHRKUVVOb1F5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRXQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJEdEpRVUZCTzFGQlEwa3NWVUZCU3l4SFFVRlJMRVZCUVVVc1EwRkJRenRKUVd0RGNFSXNRMEZCUXp0SlFXcERSeXg1UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNVU1zUTBGQlF6dEpRVU5FTEdkRFFVRlpMRWRCUVZvc1ZVRkJZU3hMUVVGblFqdFJRVU42UWl4SlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxGTkJRVk1zUlVGQlJTeERRVUZETzFGQlF6ZENMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzSkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZEUkN4eFEwRkJhVUlzUjBGQmFrSXNWVUZCYTBJc1MwRkJaMEk3VVVGRE9VSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGxCUXpWRExFTkJRVU03U1VGRFJDdzBRa0ZCVVN4SFFVRlNMRlZCUVZNc1JVRkJWVHRSUVVObUxFOUJRVThzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1NVRkROVUlzUTBGQlF6dEpRVU5FTEhWQ1FVRkhMRWRCUVVnc1ZVRkJTU3hEUVVGVE8xRkJRMVFzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkRSQ3d3UWtGQlRTeEhRVUZPTEZWQlFVOHNRMEZCVXp0UlFVTmFMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkROVUlzUTBGQlF6dEpRVU5FTERCQ1FVRk5MRWRCUVU0c1ZVRkJUeXhEUVVGelFqdFJRVU42UWl4TFFVRkxMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEZUVJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOMFFqdEpRVU5NTEVOQlFVTTdTVUZEUkN3eVFrRkJUeXhIUVVGUU8xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFvc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEVkN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUlVGQlJUdG5Ra0ZEYWtJc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnVRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5JTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVOTUxHZENRVUZETzBGQlFVUXNRMEZCUXl4QlFXNURSQ3hKUVcxRFF6dEJRVzVEV1N3NFFrRkJVenRCUVhGRGRFSTdTVUZCUVR0UlFVTkpMRk5CUVVrc1IwRkJVU3hGUVVGRkxFTkJRVU03VVVGRFppeE5RVUZETEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCWjBSc1FpeERRVUZETzBsQkwwTkhMSGRDUVVGTExFZEJRVXc3VVVGRFNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVU5FTERKQ1FVRlJMRWRCUVZJc1ZVRkJVeXhGUVVGVk8xRkJRMllzU1VGQlNTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlEzWkNMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03WVVGRGFrSTdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkRSQ3h6UWtGQlJ5eEhRVUZJTEZWQlFVa3NVVUZCWjBJc1JVRkJSU3hEUVVGVE8xRkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRmpMRkZCUVZFc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVsQlFVa3NVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkRka2NzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOVUxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkRSQ3g1UWtGQlRTeEhRVUZPTEZWQlFVOHNVVUZCWjBJc1JVRkJSU3hEUVVGVE8xRkJRemxDTEVsQlFVa3NSVUZCUlN4SFFVRmpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZUVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTmlMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRPVUk3VVVGRFJDeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJRMFFzZVVKQlFVMHNSMEZCVGl4VlFVRlBMRU5CUVRSRE8xRkJReTlETEV0QlFVc3NTVUZCU1N4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdFpRVU0xUWl4RFFVRkRMRU5CUVZrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUkR0SlFVTk1MRU5CUVVNN1NVRkRSQ3huUTBGQllTeEhRVUZpTEZWQlFXTXNRMEZCYzBJN1VVRkRhRU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRVXNzVDBGQlFTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGYUxFTkJRVmtzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkRSQ3dyUWtGQldTeEhRVUZhTEZWQlFXRXNTMEZCWlR0UlFVTjRRaXhKUVVGSkxFMUJRVTBzUjBGQllTeEpRVUZKTEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNSRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSVHRaUVVObUxFbEJRVWtzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVN1owSkJRMnhDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVOdVF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yZENRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlExQXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTNCQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVOcVFqdGhRVU5LTzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUTB3c1pVRkJRenRCUVVGRUxFTkJRVU1zUVVGc1JFUXNTVUZyUkVNN1FVRnNSRmtzTkVKQlFWRTdRVUZ2UkhKQ0xGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1EwRkJUU3hGUVVGRkxFTkJRVTA3U1VGRGNrTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVUU3UVVGRGFrUXNRMEZCUXp0QlFVVkVMRk5CUVdkQ0xGTkJRVk1zUTBGQlR5eExRVUZaTEVWQlFVVXNTMEZCWVN4RlFVRkZMRVZCUVRCQ0xFVkJRVVVzVTBGQmFVSTdTVUZEZEVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZEYUVJc1EwRkJReXhIUVVGSExFbEJRVWtzWVVGQllTeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBsQlEyNUVMRTlCUVU4c1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlJUdFJRVUZETEVOQlFVTTdTVUZEZUVJc1NVRkJTU3hWUVVGVkxFZEJRV2RDTEVWQlFVVXNRMEZCUXp0SlFVTnFReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTVUZEZUVNc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFZEJRVWNzVlVGQlF5eEhRVUZITzFsQlExSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyWXNTVUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hSUVVGUk8yZENRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYUVRc1EwRkJReXhEUVVGRE8xRkJRMFlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTFvc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEyaENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMGdzVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEycEVMRU5CUVVNN1FVRm1SQ3c0UWtGbFF5SjkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiB1bmlvbkNvdW50KGEsIGIpIHtcclxuICAgIHZhciB1ID0ge307XHJcbiAgICBmb3IgKHZhciBpIGluIGEpXHJcbiAgICAgICAgdVtpXSA9IHt9O1xyXG4gICAgZm9yICh2YXIgaSBpbiBiKVxyXG4gICAgICAgIHVbaV0gPSB7fTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh1KS5sZW5ndGg7XHJcbn1cclxuZnVuY3Rpb24gaW50ZXJzZWN0aW9uQ291bnQoYSwgYikge1xyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgZm9yICh2YXIgaSBpbiBhKVxyXG4gICAgICAgIGlmICh0eXBlb2YgYltpXSAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICsrbjtcclxuICAgIHJldHVybiBuO1xyXG59XHJcbmZ1bmN0aW9uIGdldE5laWdoYm91cnMobGlua3MsIGxhKSB7XHJcbiAgICB2YXIgbmVpZ2hib3VycyA9IHt9O1xyXG4gICAgdmFyIGFkZE5laWdoYm91cnMgPSBmdW5jdGlvbiAodSwgdikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgbmVpZ2hib3Vyc1t1XSA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgIG5laWdoYm91cnNbdV0gPSB7fTtcclxuICAgICAgICBuZWlnaGJvdXJzW3VdW3ZdID0ge307XHJcbiAgICB9O1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciB1ID0gbGEuZ2V0U291cmNlSW5kZXgoZSksIHYgPSBsYS5nZXRUYXJnZXRJbmRleChlKTtcclxuICAgICAgICBhZGROZWlnaGJvdXJzKHUsIHYpO1xyXG4gICAgICAgIGFkZE5laWdoYm91cnModiwgdSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZWlnaGJvdXJzO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZiwgbGEpIHtcclxuICAgIHZhciBuZWlnaGJvdXJzID0gZ2V0TmVpZ2hib3VycyhsaW5rcywgbGEpO1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAobCkge1xyXG4gICAgICAgIHZhciBhID0gbmVpZ2hib3Vyc1tsYS5nZXRTb3VyY2VJbmRleChsKV07XHJcbiAgICAgICAgdmFyIGIgPSBuZWlnaGJvdXJzW2xhLmdldFRhcmdldEluZGV4KGwpXTtcclxuICAgICAgICBsYS5zZXRMZW5ndGgobCwgMSArIHcgKiBmKGEsIGIpKTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZMaW5rTGVuZ3RocyhsaW5rcywgbGEsIHcpIHtcclxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIE1hdGguc3FydCh1bmlvbkNvdW50KGEsIGIpIC0gaW50ZXJzZWN0aW9uQ291bnQoYSwgYikpOyB9LCBsYSk7XHJcbn1cclxuZXhwb3J0cy5zeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMgPSBzeW1tZXRyaWNEaWZmTGlua0xlbmd0aHM7XHJcbmZ1bmN0aW9uIGphY2NhcmRMaW5rTGVuZ3RocyhsaW5rcywgbGEsIHcpIHtcclxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5taW4oT2JqZWN0LmtleXMoYSkubGVuZ3RoLCBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIDwgMS4xID8gMCA6IGludGVyc2VjdGlvbkNvdW50KGEsIGIpIC8gdW5pb25Db3VudChhLCBiKTtcclxuICAgIH0sIGxhKTtcclxufVxyXG5leHBvcnRzLmphY2NhcmRMaW5rTGVuZ3RocyA9IGphY2NhcmRMaW5rTGVuZ3RocztcclxuZnVuY3Rpb24gZ2VuZXJhdGVEaXJlY3RlZEVkZ2VDb25zdHJhaW50cyhuLCBsaW5rcywgYXhpcywgbGEpIHtcclxuICAgIHZhciBjb21wb25lbnRzID0gc3Ryb25nbHlDb25uZWN0ZWRDb21wb25lbnRzKG4sIGxpbmtzLCBsYSk7XHJcbiAgICB2YXIgbm9kZXMgPSB7fTtcclxuICAgIGNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbiAoYywgaSkge1xyXG4gICAgICAgIHJldHVybiBjLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5vZGVzW3ZdID0gaTsgfSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBjb25zdHJhaW50cyA9IFtdO1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAobCkge1xyXG4gICAgICAgIHZhciB1aSA9IGxhLmdldFNvdXJjZUluZGV4KGwpLCB2aSA9IGxhLmdldFRhcmdldEluZGV4KGwpLCB1ID0gbm9kZXNbdWldLCB2ID0gbm9kZXNbdmldO1xyXG4gICAgICAgIGlmICh1ICE9PSB2KSB7XHJcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgYXhpczogYXhpcyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHVpLFxyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHZpLFxyXG4gICAgICAgICAgICAgICAgZ2FwOiBsYS5nZXRNaW5TZXBhcmF0aW9uKGwpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbnN0cmFpbnRzO1xyXG59XHJcbmV4cG9ydHMuZ2VuZXJhdGVEaXJlY3RlZEVkZ2VDb25zdHJhaW50cyA9IGdlbmVyYXRlRGlyZWN0ZWRFZGdlQ29uc3RyYWludHM7XHJcbmZ1bmN0aW9uIHN0cm9uZ2x5Q29ubmVjdGVkQ29tcG9uZW50cyhudW1WZXJ0aWNlcywgZWRnZXMsIGxhKSB7XHJcbiAgICB2YXIgbm9kZXMgPSBbXTtcclxuICAgIHZhciBpbmRleCA9IDA7XHJcbiAgICB2YXIgc3RhY2sgPSBbXTtcclxuICAgIHZhciBjb21wb25lbnRzID0gW107XHJcbiAgICBmdW5jdGlvbiBzdHJvbmdDb25uZWN0KHYpIHtcclxuICAgICAgICB2LmluZGV4ID0gdi5sb3dsaW5rID0gaW5kZXgrKztcclxuICAgICAgICBzdGFjay5wdXNoKHYpO1xyXG4gICAgICAgIHYub25TdGFjayA9IHRydWU7XHJcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHYub3V0OyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICB2YXIgdyA9IF9hW19pXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3LmluZGV4ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgc3Ryb25nQ29ubmVjdCh3KTtcclxuICAgICAgICAgICAgICAgIHYubG93bGluayA9IE1hdGgubWluKHYubG93bGluaywgdy5sb3dsaW5rKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3Lm9uU3RhY2spIHtcclxuICAgICAgICAgICAgICAgIHYubG93bGluayA9IE1hdGgubWluKHYubG93bGluaywgdy5pbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHYubG93bGluayA9PT0gdi5pbmRleCkge1xyXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gW107XHJcbiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHcgPSBzdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgIHcub25TdGFjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnB1c2godyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodyA9PT0gdilcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50Lm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5pZDsgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVmVydGljZXM7IGkrKykge1xyXG4gICAgICAgIG5vZGVzLnB1c2goeyBpZDogaSwgb3V0OiBbXSB9KTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIF9pID0gMCwgZWRnZXNfMSA9IGVkZ2VzOyBfaSA8IGVkZ2VzXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGUgPSBlZGdlc18xW19pXTtcclxuICAgICAgICB2YXIgdl8xID0gbm9kZXNbbGEuZ2V0U291cmNlSW5kZXgoZSldLCB3ID0gbm9kZXNbbGEuZ2V0VGFyZ2V0SW5kZXgoZSldO1xyXG4gICAgICAgIHZfMS5vdXQucHVzaCh3KTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIF9hID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfYSA8IG5vZGVzXzEubGVuZ3RoOyBfYSsrKSB7XHJcbiAgICAgICAgdmFyIHYgPSBub2Rlc18xW19hXTtcclxuICAgICAgICBpZiAodHlwZW9mIHYuaW5kZXggPT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgICBzdHJvbmdDb25uZWN0KHYpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XHJcbn1cclxuZXhwb3J0cy5zdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHMgPSBzdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHbHVhMnhsYm1kMGFITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5c2FXNXJiR1Z1WjNSb2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVZWSkxGTkJRVk1zVlVGQlZTeERRVUZETEVOQlFVMHNSVUZCUlN4RFFVRk5PMGxCUXpsQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTllMRXRCUVVzc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dFJRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRE0wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVNelFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEycERMRU5CUVVNN1FVRkhSQ3hUUVVGVExHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJReTlETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOV0xFdEJRVXNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0UlFVRkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NWMEZCVnp0WlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRM1JFTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTJJc1EwRkJRenRCUVVWRUxGTkJRVk1zWVVGQllTeERRVUZQTEV0QlFXRXNSVUZCUlN4RlFVRnpRanRKUVVNNVJDeEpRVUZKTEZWQlFWVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRjRUlzU1VGQlNTeGhRVUZoTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEU5QlFVOHNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExGZEJRVmM3V1VGRGNFTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUXpGQ0xFTkJRVU1zUTBGQlF6dEpRVU5HTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRE8xRkJRMWdzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUkN4aFFVRmhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkNMR0ZCUVdFc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFNDeFBRVUZQTEZWQlFWVXNRMEZCUXp0QlFVTjBRaXhEUVVGRE8wRkJSMFFzVTBGQlV5eHJRa0ZCYTBJc1EwRkJUeXhMUVVGaExFVkJRVVVzUTBGQlV5eEZRVUZGTEVOQlFUWkNMRVZCUVVVc1JVRkJORUk3U1VGRGJrZ3NTVUZCU1N4VlFVRlZMRWRCUVVjc1lVRkJZU3hEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTllMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOUUxFTkJRVU03UVVGTFJDeFRRVUZuUWl4M1FrRkJkMElzUTBGQlR5eExRVUZoTEVWQlFVVXNSVUZCTkVJc1JVRkJSU3hEUVVGaE8wbEJRV0lzYTBKQlFVRXNSVUZCUVN4TFFVRmhPMGxCUTNKSExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkxMRTlCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZ5UkN4RFFVRnhSQ3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzUkhMRU5CUVVNN1FVRkdSQ3cwUkVGRlF6dEJRVXRFTEZOQlFXZENMR3RDUVVGclFpeERRVUZQTEV0QlFXRXNSVUZCUlN4RlFVRTBRaXhGUVVGRkxFTkJRV0U3U1VGQllpeHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1NVRkRMMFlzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUXpsQ0xFOUJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZCTjBjc1EwRkJOa2NzUlVGRE0wY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJTa1FzWjBSQlNVTTdRVUZ2UWtRc1UwRkJaMElzSzBKQlFTdENMRU5CUVU4c1EwRkJVeXhGUVVGRkxFdEJRV0VzUlVGQlJTeEpRVUZaTEVWQlEzaEdMRVZCUVhsQ08wbEJSWHBDTEVsQlFVa3NWVUZCVlN4SFFVRkhMREpDUVVFeVFpeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRE0wUXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRE8xRkJRMjVDTEU5QlFVRXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVm9zUTBGQldTeERRVUZETzBsQlFUVkNMRU5CUVRSQ0xFTkJReTlDTEVOQlFVTTdTVUZEUml4SlFVRkpMRmRCUVZjc1IwRkJWU3hGUVVGRkxFTkJRVU03U1VGRE5VSXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03VVVGRFdDeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU53UkN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGFrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMVFzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRZaXhKUVVGSkxFVkJRVVVzU1VGQlNUdG5Ra0ZEVml4SlFVRkpMRVZCUVVVc1JVRkJSVHRuUWtGRFVpeExRVUZMTEVWQlFVVXNSVUZCUlR0blFrRkRWQ3hIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UWl4RFFVRkRMRU5CUVVNN1UwRkRUanRKUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwZ3NUMEZCVHl4WFFVRlhMRU5CUVVNN1FVRkRka0lzUTBGQlF6dEJRWFJDUkN3d1JVRnpRa003UVVGUlJDeFRRVUZuUWl3eVFrRkJNa0lzUTBGQlR5eFhRVUZ0UWl4RlFVRkZMRXRCUVdFc1JVRkJSU3hGUVVGelFqdEpRVU40Unl4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRFppeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRaQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEWml4SlFVRkpMRlZCUVZVc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGNFSXNVMEZCVXl4aFFVRmhMRU5CUVVNc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTmtMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlIycENMRXRCUVdNc1ZVRkJTeXhGUVVGTUxFdEJRVUVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCVEN4alFVRkxMRVZCUVV3c1NVRkJTeXhGUVVGRk8xbEJRV2hDTEVsQlFVa3NRMEZCUXl4VFFVRkJPMWxCUTA0c1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVRkZPMmRDUVVWb1F5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBDTEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVTdaMEpCUld4Q0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVNMVF6dFRRVU5LTzFGQlIwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1QwRkJUeXhMUVVGTExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZGZGtJc1NVRkJTU3hUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETzFsQlEyNUNMRTlCUVU4c1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZEYWtJc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1owSkJSV3hDTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyeENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03YjBKQlFVVXNUVUZCVFR0aFFVTjBRanRaUVVWRUxGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVvc1EwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0zUXp0SlFVTk1MRU5CUVVNN1NVRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFGQlEyeERMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETzB0QlEyaERPMGxCUTBRc1MwRkJZeXhWUVVGTExFVkJRVXdzWlVGQlN5eEZRVUZNTEcxQ1FVRkxMRVZCUVV3c1NVRkJTeXhGUVVGRk8xRkJRV2hDTEVsQlFVa3NRMEZCUXl4alFVRkJPMUZCUTA0c1NVRkJTU3hIUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGREwwSXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRU1zUjBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGFrSTdTVUZEUkN4TFFVRmpMRlZCUVVzc1JVRkJUQ3hsUVVGTExFVkJRVXdzYlVKQlFVc3NSVUZCVEN4SlFVRkxPMUZCUVdRc1NVRkJTU3hEUVVGRExHTkJRVUU3VVVGQlZ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTeXhYUVVGWE8xbEJRVVVzWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUVVFN1NVRkRNVVVzVDBGQlR5eFZRVUZWTEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVdoRVJDeHJSVUZuUkVNaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgTG9ja3MgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTG9ja3MoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NrcyA9IHt9O1xyXG4gICAgfVxyXG4gICAgTG9ja3MucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChpZCwgeCkge1xyXG4gICAgICAgIHRoaXMubG9ja3NbaWRdID0geDtcclxuICAgIH07XHJcbiAgICBMb2Nrcy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NrcyA9IHt9O1xyXG4gICAgfTtcclxuICAgIExvY2tzLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZvciAodmFyIGwgaW4gdGhpcy5sb2NrcylcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIExvY2tzLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgZm9yICh2YXIgbCBpbiB0aGlzLmxvY2tzKSB7XHJcbiAgICAgICAgICAgIGYoTnVtYmVyKGwpLCB0aGlzLmxvY2tzW2xdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExvY2tzO1xyXG59KCkpO1xyXG5leHBvcnRzLkxvY2tzID0gTG9ja3M7XHJcbnZhciBEZXNjZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIERlc2NlbnQoeCwgRCwgRykge1xyXG4gICAgICAgIGlmIChHID09PSB2b2lkIDApIHsgRyA9IG51bGw7IH1cclxuICAgICAgICB0aGlzLkQgPSBEO1xyXG4gICAgICAgIHRoaXMuRyA9IEc7XHJcbiAgICAgICAgdGhpcy50aHJlc2hvbGQgPSAwLjAwMDE7XHJcbiAgICAgICAgdGhpcy5udW1HcmlkU25hcE5vZGVzID0gMDtcclxuICAgICAgICB0aGlzLnNuYXBHcmlkU2l6ZSA9IDEwMDtcclxuICAgICAgICB0aGlzLnNuYXBTdHJlbmd0aCA9IDEwMDA7XHJcbiAgICAgICAgdGhpcy5zY2FsZVNuYXBCeU1heEggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJhbmRvbSA9IG5ldyBQc2V1ZG9SYW5kb20oKTtcclxuICAgICAgICB0aGlzLnByb2plY3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMueCA9IHg7XHJcbiAgICAgICAgdGhpcy5rID0geC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLm4gPSB4WzBdLmxlbmd0aDtcclxuICAgICAgICB0aGlzLkggPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLmcgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLkhkID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5hID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5iID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5jID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5kID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5lID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5pYSA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHRoaXMuaWIgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLnh0bXAgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLmxvY2tzID0gbmV3IExvY2tzKCk7XHJcbiAgICAgICAgdGhpcy5taW5EID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB2YXIgaSA9IG4sIGo7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBqID0gbjtcclxuICAgICAgICAgICAgd2hpbGUgKC0taiA+IGkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkID0gRFtpXVtqXTtcclxuICAgICAgICAgICAgICAgIGlmIChkID4gMCAmJiBkIDwgdGhpcy5taW5EKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5taW5EID0gZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5EID09PSBOdW1iZXIuTUFYX1ZBTFVFKVxyXG4gICAgICAgICAgICB0aGlzLm1pbkQgPSAxO1xyXG4gICAgICAgIGkgPSB0aGlzLms7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICB0aGlzLmdbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuSFtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgaiA9IG47XHJcbiAgICAgICAgICAgIHdoaWxlIChqLS0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuSFtpXVtqXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLkhkW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICB0aGlzLmFbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuYltpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5jW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICB0aGlzLmRbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuZVtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5pYVtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5pYltpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy54dG1wW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIERlc2NlbnQuY3JlYXRlU3F1YXJlTWF0cml4ID0gZnVuY3Rpb24gKG4sIGYpIHtcclxuICAgICAgICB2YXIgTSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICBNW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikge1xyXG4gICAgICAgICAgICAgICAgTVtpXVtqXSA9IGYoaSwgaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE07XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUub2Zmc2V0RGlyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHUgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB2YXIgbCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLms7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgeCA9IHVbaV0gPSB0aGlzLnJhbmRvbS5nZXROZXh0QmV0d2VlbigwLjAxLCAxKSAtIDAuNTtcclxuICAgICAgICAgICAgbCArPSB4ICogeDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbCA9IE1hdGguc3FydChsKTtcclxuICAgICAgICByZXR1cm4gdS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggKj0gX3RoaXMubWluRCAvIGw7IH0pO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLmNvbXB1dGVEZXJpdmF0aXZlcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgbiA9IHRoaXMubjtcclxuICAgICAgICBpZiAobiA8IDEpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB2YXIgaTtcclxuICAgICAgICB2YXIgZCA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHZhciBkMiA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHZhciBIdXUgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB2YXIgbWF4SCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCBuOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgSHV1W2ldID0gdGhpcy5nW2ldW3VdID0gMDtcclxuICAgICAgICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBuOyArK3YpIHtcclxuICAgICAgICAgICAgICAgIGlmICh1ID09PSB2KVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1heERpc3BsYWNlcyA9IG47XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobWF4RGlzcGxhY2VzLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2QyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gZFtpXSA9IHhbaV1bdV0gLSB4W2ldW3ZdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZDIgKz0gZDJbaV0gPSBkeCAqIGR4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2QyID4gMWUtOSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJkID0gdGhpcy5vZmZzZXREaXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhbaV1bdl0gKz0gcmRbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgbCA9IE1hdGguc3FydChzZDIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIEQgPSB0aGlzLkRbdV1bdl07XHJcbiAgICAgICAgICAgICAgICB2YXIgd2VpZ2h0ID0gdGhpcy5HICE9IG51bGwgPyB0aGlzLkdbdV1bdl0gOiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdlaWdodCA+IDEgJiYgbCA+IEQgfHwgIWlzRmluaXRlKEQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkhbaV1bdV1bdl0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHdlaWdodCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIEQyID0gRCAqIEQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ3MgPSAyICogd2VpZ2h0ICogKGwgLSBEKSAvIChEMiAqIGwpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGwzID0gbCAqIGwgKiBsO1xyXG4gICAgICAgICAgICAgICAgdmFyIGhzID0gMiAqIC13ZWlnaHQgLyAoRDIgKiBsMyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGdzKSlcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhncyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdbaV1bdV0gKz0gZFtpXSAqIGdzO1xyXG4gICAgICAgICAgICAgICAgICAgIEh1dVtpXSAtPSB0aGlzLkhbaV1bdV1bdl0gPSBocyAqIChsMyArIEQgKiAoZDJbaV0gLSBzZDIpICsgbCAqIHNkMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgbWF4SCA9IE1hdGgubWF4KG1heEgsIHRoaXMuSFtpXVt1XVt1XSA9IEh1dVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByID0gdGhpcy5zbmFwR3JpZFNpemUgLyAyO1xyXG4gICAgICAgIHZhciBnID0gdGhpcy5zbmFwR3JpZFNpemU7XHJcbiAgICAgICAgdmFyIHcgPSB0aGlzLnNuYXBTdHJlbmd0aDtcclxuICAgICAgICB2YXIgayA9IHcgLyAociAqIHIpO1xyXG4gICAgICAgIHZhciBudW1Ob2RlcyA9IHRoaXMubnVtR3JpZFNuYXBOb2RlcztcclxuICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IG51bU5vZGVzOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgeGl1ID0gdGhpcy54W2ldW3VdO1xyXG4gICAgICAgICAgICAgICAgdmFyIG0gPSB4aXUgLyBnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGYgPSBtICUgMTtcclxuICAgICAgICAgICAgICAgIHZhciBxID0gbSAtIGY7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IE1hdGguYWJzKGYpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGR4ID0gKGEgPD0gMC41KSA/IHhpdSAtIHEgKiBnIDpcclxuICAgICAgICAgICAgICAgICAgICAoeGl1ID4gMCkgPyB4aXUgLSAocSArIDEpICogZyA6IHhpdSAtIChxIC0gMSkgKiBnO1xyXG4gICAgICAgICAgICAgICAgaWYgKC1yIDwgZHggJiYgZHggPD0gcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjYWxlU25hcEJ5TWF4SCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdbaV1bdV0gKz0gbWF4SCAqIGsgKiBkeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IW2ldW3VdW3VdICs9IG1heEggKiBrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nW2ldW3VdICs9IGsgKiBkeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IW2ldW3VdW3VdICs9IGs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5sb2Nrcy5pc0VtcHR5KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2Nrcy5hcHBseShmdW5jdGlvbiAodSwgcCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IF90aGlzLms7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLkhbaV1bdV1bdV0gKz0gbWF4SDtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5nW2ldW3VdIC09IG1heEggKiAocFtpXSAtIHhbaV1bdV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5kb3RQcm9kID0gZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICB2YXIgeCA9IDAsIGkgPSBhLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICB4ICs9IGFbaV0gKiBiW2ldO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucmlnaHRNdWx0aXBseSA9IGZ1bmN0aW9uIChtLCB2LCByKSB7XHJcbiAgICAgICAgdmFyIGkgPSBtLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICByW2ldID0gRGVzY2VudC5kb3RQcm9kKG1baV0sIHYpO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLmNvbXB1dGVTdGVwU2l6ZSA9IGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgdmFyIG51bWVyYXRvciA9IDAsIGRlbm9taW5hdG9yID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgIG51bWVyYXRvciArPSBEZXNjZW50LmRvdFByb2QodGhpcy5nW2ldLCBkW2ldKTtcclxuICAgICAgICAgICAgRGVzY2VudC5yaWdodE11bHRpcGx5KHRoaXMuSFtpXSwgZFtpXSwgdGhpcy5IZFtpXSk7XHJcbiAgICAgICAgICAgIGRlbm9taW5hdG9yICs9IERlc2NlbnQuZG90UHJvZChkW2ldLCB0aGlzLkhkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlbm9taW5hdG9yID09PSAwIHx8ICFpc0Zpbml0ZShkZW5vbWluYXRvcikpXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIHJldHVybiAxICogbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUucmVkdWNlU3RyZXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZURlcml2YXRpdmVzKHRoaXMueCk7XHJcbiAgICAgICAgdmFyIGFscGhhID0gdGhpcy5jb21wdXRlU3RlcFNpemUodGhpcy5nKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZURlc2NlbnRTdGVwKHRoaXMueFtpXSwgdGhpcy5nW2ldLCBhbHBoYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVTdHJlc3MoKTtcclxuICAgIH07XHJcbiAgICBEZXNjZW50LmNvcHkgPSBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgIHZhciBtID0gYS5sZW5ndGgsIG4gPSBiWzBdLmxlbmd0aDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikge1xyXG4gICAgICAgICAgICAgICAgYltpXVtqXSA9IGFbaV1bal07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuc3RlcEFuZFByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHIsIGQsIHN0ZXBTaXplKSB7XHJcbiAgICAgICAgRGVzY2VudC5jb3B5KHgwLCByKTtcclxuICAgICAgICB0aGlzLnRha2VEZXNjZW50U3RlcChyWzBdLCBkWzBdLCBzdGVwU2l6ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvamVjdClcclxuICAgICAgICAgICAgdGhpcy5wcm9qZWN0WzBdKHgwWzBdLCB4MFsxXSwgclswXSk7XHJcbiAgICAgICAgdGhpcy50YWtlRGVzY2VudFN0ZXAoclsxXSwgZFsxXSwgc3RlcFNpemUpO1xyXG4gICAgICAgIGlmICh0aGlzLnByb2plY3QpXHJcbiAgICAgICAgICAgIHRoaXMucHJvamVjdFsxXShyWzBdLCB4MFsxXSwgclsxXSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCB0aGlzLms7IGkrKylcclxuICAgICAgICAgICAgdGhpcy50YWtlRGVzY2VudFN0ZXAocltpXSwgZFtpXSwgc3RlcFNpemUpO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQubUFwcGx5ID0gZnVuY3Rpb24gKG0sIG4sIGYpIHtcclxuICAgICAgICB2YXIgaSA9IG07XHJcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIGogPSBuO1xyXG4gICAgICAgICAgICB3aGlsZSAoai0tID4gMClcclxuICAgICAgICAgICAgICAgIGYoaSwgaik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLm1hdHJpeEFwcGx5ID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBEZXNjZW50Lm1BcHBseSh0aGlzLmssIHRoaXMubiwgZik7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuY29tcHV0ZU5leHRQb3NpdGlvbiA9IGZ1bmN0aW9uICh4MCwgcikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlRGVyaXZhdGl2ZXMoeDApO1xyXG4gICAgICAgIHZhciBhbHBoYSA9IHRoaXMuY29tcHV0ZVN0ZXBTaXplKHRoaXMuZyk7XHJcbiAgICAgICAgdGhpcy5zdGVwQW5kUHJvamVjdCh4MCwgciwgdGhpcy5nLCBhbHBoYSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLm1hdHJpeEFwcGx5KGZ1bmN0aW9uIChpLCBqKSB7IHJldHVybiBfdGhpcy5lW2ldW2pdID0geDBbaV1bal0gLSByW2ldW2pdOyB9KTtcclxuICAgICAgICAgICAgdmFyIGJldGEgPSB0aGlzLmNvbXB1dGVTdGVwU2l6ZSh0aGlzLmUpO1xyXG4gICAgICAgICAgICBiZXRhID0gTWF0aC5tYXgoMC4yLCBNYXRoLm1pbihiZXRhLCAxKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcEFuZFByb2plY3QoeDAsIHIsIHRoaXMuZSwgYmV0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XHJcbiAgICAgICAgdmFyIHN0cmVzcyA9IE51bWJlci5NQVhfVkFMVUUsIGNvbnZlcmdlZCA9IGZhbHNlO1xyXG4gICAgICAgIHdoaWxlICghY29udmVyZ2VkICYmIGl0ZXJhdGlvbnMtLSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnJ1bmdlS3V0dGEoKTtcclxuICAgICAgICAgICAgY29udmVyZ2VkID0gTWF0aC5hYnMoc3RyZXNzIC8gcyAtIDEpIDwgdGhpcy50aHJlc2hvbGQ7XHJcbiAgICAgICAgICAgIHN0cmVzcyA9IHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHJlc3M7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUucnVuZ2VLdXR0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZU5leHRQb3NpdGlvbih0aGlzLngsIHRoaXMuYSk7XHJcbiAgICAgICAgRGVzY2VudC5taWQodGhpcy54LCB0aGlzLmEsIHRoaXMuaWEpO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZU5leHRQb3NpdGlvbih0aGlzLmlhLCB0aGlzLmIpO1xyXG4gICAgICAgIERlc2NlbnQubWlkKHRoaXMueCwgdGhpcy5iLCB0aGlzLmliKTtcclxuICAgICAgICB0aGlzLmNvbXB1dGVOZXh0UG9zaXRpb24odGhpcy5pYiwgdGhpcy5jKTtcclxuICAgICAgICB0aGlzLmNvbXB1dGVOZXh0UG9zaXRpb24odGhpcy5jLCB0aGlzLmQpO1xyXG4gICAgICAgIHZhciBkaXNwID0gMDtcclxuICAgICAgICB0aGlzLm1hdHJpeEFwcGx5KGZ1bmN0aW9uIChpLCBqKSB7XHJcbiAgICAgICAgICAgIHZhciB4ID0gKF90aGlzLmFbaV1bal0gKyAyLjAgKiBfdGhpcy5iW2ldW2pdICsgMi4wICogX3RoaXMuY1tpXVtqXSArIF90aGlzLmRbaV1bal0pIC8gNi4wLCBkID0gX3RoaXMueFtpXVtqXSAtIHg7XHJcbiAgICAgICAgICAgIGRpc3AgKz0gZCAqIGQ7XHJcbiAgICAgICAgICAgIF90aGlzLnhbaV1bal0gPSB4O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBkaXNwO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQubWlkID0gZnVuY3Rpb24gKGEsIGIsIG0pIHtcclxuICAgICAgICBEZXNjZW50Lm1BcHBseShhLmxlbmd0aCwgYVswXS5sZW5ndGgsIGZ1bmN0aW9uIChpLCBqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtW2ldW2pdID0gYVtpXVtqXSArIChiW2ldW2pdIC0gYVtpXVtqXSkgLyAyLjA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUudGFrZURlc2NlbnRTdGVwID0gZnVuY3Rpb24gKHgsIGQsIHN0ZXBTaXplKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm47ICsraSkge1xyXG4gICAgICAgICAgICB4W2ldID0geFtpXSAtIHN0ZXBTaXplICogZFtpXTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuY29tcHV0ZVN0cmVzcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc3RyZXNzID0gMDtcclxuICAgICAgICBmb3IgKHZhciB1ID0gMCwgbk1pbnVzMSA9IHRoaXMubiAtIDE7IHUgPCBuTWludXMxOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgdiA9IHUgKyAxLCBuID0gdGhpcy5uOyB2IDwgbjsgKyt2KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gdGhpcy54W2ldW3VdIC0gdGhpcy54W2ldW3ZdO1xyXG4gICAgICAgICAgICAgICAgICAgIGwgKz0gZHggKiBkeDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNxcnQobCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuRFt1XVt2XTtcclxuICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUoZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmwgPSBkIC0gbDtcclxuICAgICAgICAgICAgICAgIHZhciBkMiA9IGQgKiBkO1xyXG4gICAgICAgICAgICAgICAgc3RyZXNzICs9IHJsICogcmwgLyBkMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyZXNzO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQuemVyb0Rpc3RhbmNlID0gMWUtMTA7XHJcbiAgICByZXR1cm4gRGVzY2VudDtcclxufSgpKTtcclxuZXhwb3J0cy5EZXNjZW50ID0gRGVzY2VudDtcclxudmFyIFBzZXVkb1JhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQc2V1ZG9SYW5kb20oc2VlZCkge1xyXG4gICAgICAgIGlmIChzZWVkID09PSB2b2lkIDApIHsgc2VlZCA9IDE7IH1cclxuICAgICAgICB0aGlzLnNlZWQgPSBzZWVkO1xyXG4gICAgICAgIHRoaXMuYSA9IDIxNDAxMztcclxuICAgICAgICB0aGlzLmMgPSAyNTMxMDExO1xyXG4gICAgICAgIHRoaXMubSA9IDIxNDc0ODM2NDg7XHJcbiAgICAgICAgdGhpcy5yYW5nZSA9IDMyNzY3O1xyXG4gICAgfVxyXG4gICAgUHNldWRvUmFuZG9tLnByb3RvdHlwZS5nZXROZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuc2VlZCA9ICh0aGlzLnNlZWQgKiB0aGlzLmEgKyB0aGlzLmMpICUgdGhpcy5tO1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWVkID4+IDE2KSAvIHRoaXMucmFuZ2U7XHJcbiAgICB9O1xyXG4gICAgUHNldWRvUmFuZG9tLnByb3RvdHlwZS5nZXROZXh0QmV0d2VlbiA9IGZ1bmN0aW9uIChtaW4sIG1heCkge1xyXG4gICAgICAgIHJldHVybiBtaW4gKyB0aGlzLmdldE5leHQoKSAqIChtYXggLSBtaW4pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBQc2V1ZG9SYW5kb207XHJcbn0oKSk7XHJcbmV4cG9ydHMuUHNldWRvUmFuZG9tID0gUHNldWRvUmFuZG9tO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR1Z6WTJWdWRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJSbGMyTmxiblF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkpTVHRKUVVGQk8xRkJRMGtzVlVGQlN5eEhRVUUyUWl4RlFVRkZMRU5CUVVNN1NVRnZRM3BETEVOQlFVTTdTVUUzUWtjc2JVSkJRVWNzUjBGQlNDeFZRVUZKTEVWQlFWVXNSVUZCUlN4RFFVRlhPMUZCU1haQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM1pDTEVOQlFVTTdTVUZKUkN4eFFrRkJTeXhIUVVGTU8xRkJRMGtzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRjRUlzUTBGQlF6dEpRVXRFTEhWQ1FVRlBMRWRCUVZBN1VVRkRTU3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVXRFTEhGQ1FVRkxMRWRCUVV3c1ZVRkJUU3hEUVVGdlF6dFJRVU4wUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEZEVJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZETDBJN1NVRkRUQ3hEUVVGRE8wbEJRMHdzV1VGQlF6dEJRVUZFTEVOQlFVTXNRVUZ5UTBRc1NVRnhRME03UVVGeVExa3NjMEpCUVVzN1FVRnBSR3hDTzBsQk5rUkpMR2xDUVVGWkxFTkJRV0VzUlVGQlV5eERRVUZoTEVWQlFWTXNRMEZCYlVJN1VVRkJia0lzYTBKQlFVRXNSVUZCUVN4UlFVRnRRanRSUVVGNlF5eE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRlpPMUZCUVZNc1RVRkJReXhIUVVGRUxFTkJRVU1zUTBGQmEwSTdVVUUxUkhCRkxHTkJRVk1zUjBGQlZ5eE5RVUZOTEVOQlFVTTdVVUV5UXpOQ0xIRkNRVUZuUWl4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVNM1FpeHBRa0ZCV1N4SFFVRlhMRWRCUVVjc1EwRkJRenRSUVVNelFpeHBRa0ZCV1N4SFFVRlhMRWxCUVVrc1EwRkJRenRSUVVNMVFpeHZRa0ZCWlN4SFFVRlpMRXRCUVVzc1EwRkJRenRSUVVWb1F5eFhRVUZOTEVkQlFVY3NTVUZCU1N4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVVM1FpeFpRVUZQTEVkQlFUQkVMRWxCUVVrc1EwRkJRenRSUVZkNlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOWUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEzcENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTTNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJJc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5TTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRUaXhQUVVGUExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRXaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyaENMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRGVFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03YVVKQlEycENPMkZCUTBvN1UwRkRTanRSUVVORUxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVNc1UwRkJVenRaUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFnc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5TTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEwNHNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRFVpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJReTlDTzFsQlEwUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXhRaXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGREwwSTdTVUZEVEN4RFFVRkRPMGxCUldFc01FSkJRV3RDTEVkQlFXaERMRlZCUVdsRExFTkJRVk1zUlVGQlJTeERRVUZ0UXp0UlFVTXpSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU40UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU55UWp0VFFVTktPMUZCUTBRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVOHNNa0pCUVZNc1IwRkJha0k3VVVGQlFTeHBRa0ZUUXp0UlFWSkhMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRWaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFpRVU42UkN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU5rTzFGQlEwUXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhKUVVGSkxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRnNRaXhEUVVGclFpeERRVUZETEVOQlFVTTdTVUZEZWtNc1EwRkJRenRKUVVkTkxHOURRVUZyUWl4SFFVRjZRaXhWUVVFd1FpeERRVUZoTzFGQlFYWkRMR2xDUVdkSFF6dFJRUzlHUnl4SlFVRkpMRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkNMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU03V1VGQlJTeFBRVUZQTzFGQlEyeENMRWxCUVVrc1EwRkJVeXhEUVVGRE8xRkJUV1FzU1VGQlNTeERRVUZETEVkQlFXRXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRWxCUVVrc1JVRkJSU3hIUVVGaExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVkQlFVY3NSMEZCWVN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGFFTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVZDBRaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTNKQ0xFOUJRVThzV1VGQldTeEZRVUZGTEVWQlFVVTdiMEpCUTI1Q0xFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRXaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdkMEpCUTNwQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOc1F5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdjVUpCUXpGQ08yOUNRVU5FTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrN2QwSkJRVVVzVFVGQlRUdHZRa0ZEZEVJc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMjlDUVVNeFFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPM2RDUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdhVUpCUTJwRU8yZENRVU5FTEVsQlFVa3NRMEZCUXl4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpkQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJReTlETEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8yOUNRVU55UXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRE8zZENRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5xUkN4VFFVRlRPMmxDUVVOYU8yZENRVU5FTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHR2UWtGRFdpeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmxDUVVOa08yZENRVU5FTEVsQlFVa3NSVUZCUlN4SFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzWkNMRWxCUVVrc1JVRkJSU3hIUVVGWExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBFTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFVkJRVVVzUjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4RFFVRkRPMjlDUVVOaUxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRM0JDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHR2UWtGRGVrSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTXhRaXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dHBRa0ZEZGtVN1lVRkRTanRaUVVORUxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdaMEpCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRhRVk3VVVGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzFGQlF6RkNMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JDTEVsQlFVa3NVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVVnlReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzWkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZEZWtJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFpDeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5rTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNCQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU12UWl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGRFUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlR0dlFrRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZPM2RDUVVOMFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8zZENRVU01UWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdjVUpCUXk5Q08zbENRVUZOTzNkQ1FVTklMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dDNRa0ZEZGtJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdjVUpCUTNoQ08ybENRVU5LTzJGQlEwbzdVMEZEU2p0UlFVTkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEyeENMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEZWtJc1MwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdiMEpCUTNoQ0xFdEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU16UXp0WlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3U1VGVFRDeERRVUZETzBsQlJXTXNaVUZCVHl4SFFVRjBRaXhWUVVGMVFpeERRVUZYTEVWQlFVVXNRMEZCVnp0UlFVTXpReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVFSXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGSFl5eHhRa0ZCWVN4SFFVRTFRaXhWUVVFMlFpeERRVUZoTEVWQlFVVXNRMEZCVnl4RlFVRkZMRU5CUVZjN1VVRkRhRVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOcVFpeFBRVUZQTEVOQlFVTXNSVUZCUlR0WlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hEUVVGRE8wbEJTMDBzYVVOQlFXVXNSMEZCZEVJc1ZVRkJkVUlzUTBGQllUdFJRVU5vUXl4SlFVRkpMRk5CUVZNc1IwRkJSeXhEUVVGRExFVkJRVVVzVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTNRaXhUUVVGVExFbEJRVWtzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxETEU5QlFVOHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMjVFTEZkQlFWY3NTVUZCU1N4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEY0VRN1VVRkRSQ3hKUVVGSkxGZEJRVmNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVRc1QwRkJUeXhEUVVGRExFZEJRVWNzVTBGQlV5eEhRVUZITEZkQlFWY3NRMEZCUXp0SlFVTjJReXhEUVVGRE8wbEJSVTBzT0VKQlFWa3NSMEZCYmtJN1VVRkRTU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyaERMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRemRDTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTNKRU8xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZqTEZsQlFVa3NSMEZCYmtJc1ZVRkJiMElzUTBGQllTeEZRVUZGTEVOQlFXRTdVVUZETlVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnNReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEzaENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEY2tJN1UwRkRTanRKUVVOTUxFTkJRVU03U1VGUlR5eG5RMEZCWXl4SFFVRjBRaXhWUVVGMVFpeEZRVUZqTEVWQlFVVXNRMEZCWVN4RlFVRkZMRU5CUVdFc1JVRkJSU3hSUVVGblFqdFJRVU5xUml4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndRaXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRNME1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHp0WlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4wUkN4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETTBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVkeVJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRNMElzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJWVzVFTEVOQlFVTTdTVUZGWXl4alFVRk5MRWRCUVhKQ0xGVkJRWE5DTEVOQlFWTXNSVUZCUlN4RFFVRlRMRVZCUVVVc1EwRkJaME03VVVGRGVFVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVN1dVRkRka0lzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZEVNN1NVRkRUQ3hEUVVGRE8wbEJRMDhzTmtKQlFWY3NSMEZCYmtJc1ZVRkJiMElzUTBGQlowTTdVVUZEYUVRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWUExIRkRRVUZ0UWl4SFFVRXpRaXhWUVVFMFFpeEZRVUZqTEVWQlFVVXNRMEZCWVR0UlFVRjZSQ3hwUWtGbFF6dFJRV1JITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVTB4UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRFpDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlN5eFBRVUZCTEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmFrTXNRMEZCYVVNc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRelZETzBsQlEwd3NRMEZCUXp0SlFVVk5MSEZDUVVGSExFZEJRVllzVlVGQlZ5eFZRVUZyUWp0UlFVTjZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGFrUXNUMEZCVHl4RFFVRkRMRk5CUVZNc1NVRkJTU3hWUVVGVkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdXVUZEYmtNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMWxCUXpGQ0xGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVOMFJDeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJRN1VVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlUwc05FSkJRVlVzUjBGQmFrSTdVVUZCUVN4cFFrRmxRenRSUVdSSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkRha1lzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJRc1MwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGNrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUldNc1YwRkJSeXhIUVVGc1FpeFZRVUZ0UWl4RFFVRmhMRVZCUVVVc1EwRkJZU3hGUVVGRkxFTkJRV0U3VVVGRE1VUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTjJReXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSenRSUVVFM1F5eERRVUUyUXl4RFFVRkRMRU5CUVVNN1NVRkRka1FzUTBGQlF6dEpRVVZOTEdsRFFVRmxMRWRCUVhSQ0xGVkJRWFZDTEVOQlFWY3NSVUZCUlN4RFFVRlhMRVZCUVVVc1VVRkJaMEk3VVVGRE4wUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRE4wSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEycERPMGxCUTB3c1EwRkJRenRKUVVWTkxDdENRVUZoTEVkQlFYQkNPMUZCUTBrc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRjRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNoRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRWaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkROMElzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVF5eERRVUZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRwUWtGRGFFSTdaMEpCUTBRc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdaMEpCUXpOQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMllzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFppeE5RVUZOTEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03WVVGRE1VSTdVMEZEU2p0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZ5VjJNc2IwSkJRVmtzUjBGQlZ5eExRVUZMTEVOQlFVTTdTVUZ6VjJoRUxHTkJRVU03UTBGQlFTeEJRV2haUkN4SlFXZFpRenRCUVdoWldTd3dRa0ZCVHp0QlFXMVpjRUk3U1VGTlNTeHpRa0ZCYlVJc1NVRkJaMEk3VVVGQmFFSXNjVUpCUVVFc1JVRkJRU3hSUVVGblFqdFJRVUZvUWl4VFFVRkpMRWRCUVVvc1NVRkJTU3hEUVVGWk8xRkJURE5DTEUxQlFVTXNSMEZCVnl4TlFVRk5MRU5CUVVNN1VVRkRia0lzVFVGQlF5eEhRVUZYTEU5QlFVOHNRMEZCUXp0UlFVTndRaXhOUVVGRExFZEJRVmNzVlVGQlZTeERRVUZETzFGQlEzWkNMRlZCUVVzc1IwRkJWeXhMUVVGTExFTkJRVU03U1VGRlV5eERRVUZETzBsQlIzaERMRGhDUVVGUExFZEJRVkE3VVVGRFNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1RUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVkRUxIRkRRVUZqTEVkQlFXUXNWVUZCWlN4SFFVRlhMRVZCUVVVc1IwRkJWenRSUVVOdVF5eFBRVUZQTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUTBGQlF6dEpRVU5NTEcxQ1FVRkRPMEZCUVVRc1EwRkJReXhCUVd4Q1JDeEpRV3RDUXp0QlFXeENXU3h2UTBGQldTSjkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgUG9zaXRpb25TdGF0cyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQb3NpdGlvblN0YXRzKHNjYWxlKSB7XHJcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xyXG4gICAgICAgIHRoaXMuQUIgPSAwO1xyXG4gICAgICAgIHRoaXMuQUQgPSAwO1xyXG4gICAgICAgIHRoaXMuQTIgPSAwO1xyXG4gICAgfVxyXG4gICAgUG9zaXRpb25TdGF0cy5wcm90b3R5cGUuYWRkVmFyaWFibGUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBhaSA9IHRoaXMuc2NhbGUgLyB2LnNjYWxlO1xyXG4gICAgICAgIHZhciBiaSA9IHYub2Zmc2V0IC8gdi5zY2FsZTtcclxuICAgICAgICB2YXIgd2kgPSB2LndlaWdodDtcclxuICAgICAgICB0aGlzLkFCICs9IHdpICogYWkgKiBiaTtcclxuICAgICAgICB0aGlzLkFEICs9IHdpICogYWkgKiB2LmRlc2lyZWRQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLkEyICs9IHdpICogYWkgKiBhaTtcclxuICAgIH07XHJcbiAgICBQb3NpdGlvblN0YXRzLnByb3RvdHlwZS5nZXRQb3NuID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5BRCAtIHRoaXMuQUIpIC8gdGhpcy5BMjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUG9zaXRpb25TdGF0cztcclxufSgpKTtcclxuZXhwb3J0cy5Qb3NpdGlvblN0YXRzID0gUG9zaXRpb25TdGF0cztcclxudmFyIENvbnN0cmFpbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQ29uc3RyYWludChsZWZ0LCByaWdodCwgZ2FwLCBlcXVhbGl0eSkge1xyXG4gICAgICAgIGlmIChlcXVhbGl0eSA9PT0gdm9pZCAwKSB7IGVxdWFsaXR5ID0gZmFsc2U7IH1cclxuICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcclxuICAgICAgICB0aGlzLmdhcCA9IGdhcDtcclxuICAgICAgICB0aGlzLmVxdWFsaXR5ID0gZXF1YWxpdHk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVuc2F0aXNmaWFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcclxuICAgICAgICB0aGlzLmdhcCA9IGdhcDtcclxuICAgICAgICB0aGlzLmVxdWFsaXR5ID0gZXF1YWxpdHk7XHJcbiAgICB9XHJcbiAgICBDb25zdHJhaW50LnByb3RvdHlwZS5zbGFjayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51bnNhdGlzZmlhYmxlID8gTnVtYmVyLk1BWF9WQUxVRVxyXG4gICAgICAgICAgICA6IHRoaXMucmlnaHQuc2NhbGUgKiB0aGlzLnJpZ2h0LnBvc2l0aW9uKCkgLSB0aGlzLmdhcFxyXG4gICAgICAgICAgICAgICAgLSB0aGlzLmxlZnQuc2NhbGUgKiB0aGlzLmxlZnQucG9zaXRpb24oKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQ29uc3RyYWludDtcclxufSgpKTtcclxuZXhwb3J0cy5Db25zdHJhaW50ID0gQ29uc3RyYWludDtcclxudmFyIFZhcmlhYmxlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZhcmlhYmxlKGRlc2lyZWRQb3NpdGlvbiwgd2VpZ2h0LCBzY2FsZSkge1xyXG4gICAgICAgIGlmICh3ZWlnaHQgPT09IHZvaWQgMCkgeyB3ZWlnaHQgPSAxOyB9XHJcbiAgICAgICAgaWYgKHNjYWxlID09PSB2b2lkIDApIHsgc2NhbGUgPSAxOyB9XHJcbiAgICAgICAgdGhpcy5kZXNpcmVkUG9zaXRpb24gPSBkZXNpcmVkUG9zaXRpb247XHJcbiAgICAgICAgdGhpcy53ZWlnaHQgPSB3ZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcclxuICAgIH1cclxuICAgIFZhcmlhYmxlLnByb3RvdHlwZS5kZmR2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAyLjAgKiB0aGlzLndlaWdodCAqICh0aGlzLnBvc2l0aW9uKCkgLSB0aGlzLmRlc2lyZWRQb3NpdGlvbik7XHJcbiAgICB9O1xyXG4gICAgVmFyaWFibGUucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5ibG9jay5wcy5zY2FsZSAqIHRoaXMuYmxvY2sucG9zbiArIHRoaXMub2Zmc2V0KSAvIHRoaXMuc2NhbGU7XHJcbiAgICB9O1xyXG4gICAgVmFyaWFibGUucHJvdG90eXBlLnZpc2l0TmVpZ2hib3VycyA9IGZ1bmN0aW9uIChwcmV2LCBmKSB7XHJcbiAgICAgICAgdmFyIGZmID0gZnVuY3Rpb24gKGMsIG5leHQpIHsgcmV0dXJuIGMuYWN0aXZlICYmIHByZXYgIT09IG5leHQgJiYgZihjLCBuZXh0KTsgfTtcclxuICAgICAgICB0aGlzLmNPdXQuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZmYoYywgYy5yaWdodCk7IH0pO1xyXG4gICAgICAgIHRoaXMuY0luLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGZmKGMsIGMubGVmdCk7IH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBWYXJpYWJsZTtcclxufSgpKTtcclxuZXhwb3J0cy5WYXJpYWJsZSA9IFZhcmlhYmxlO1xyXG52YXIgQmxvY2sgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmxvY2sodikge1xyXG4gICAgICAgIHRoaXMudmFycyA9IFtdO1xyXG4gICAgICAgIHYub2Zmc2V0ID0gMDtcclxuICAgICAgICB0aGlzLnBzID0gbmV3IFBvc2l0aW9uU3RhdHModi5zY2FsZSk7XHJcbiAgICAgICAgdGhpcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgIH1cclxuICAgIEJsb2NrLnByb3RvdHlwZS5hZGRWYXJpYWJsZSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdi5ibG9jayA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy52YXJzLnB1c2godik7XHJcbiAgICAgICAgdGhpcy5wcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgICAgICB0aGlzLnBvc24gPSB0aGlzLnBzLmdldFBvc24oKTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUudXBkYXRlV2VpZ2h0ZWRQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnBzLkFCID0gdGhpcy5wcy5BRCA9IHRoaXMucHMuQTIgPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdGhpcy52YXJzLmxlbmd0aDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgdGhpcy5wcy5hZGRWYXJpYWJsZSh0aGlzLnZhcnNbaV0pO1xyXG4gICAgICAgIHRoaXMucG9zbiA9IHRoaXMucHMuZ2V0UG9zbigpO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5jb21wdXRlX2xtID0gZnVuY3Rpb24gKHYsIHUsIHBvc3RBY3Rpb24pIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBkZmR2ID0gdi5kZmR2KCk7XHJcbiAgICAgICAgdi52aXNpdE5laWdoYm91cnModSwgZnVuY3Rpb24gKGMsIG5leHQpIHtcclxuICAgICAgICAgICAgdmFyIF9kZmR2ID0gX3RoaXMuY29tcHV0ZV9sbShuZXh0LCB2LCBwb3N0QWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKG5leHQgPT09IGMucmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIGRmZHYgKz0gX2RmZHYgKiBjLmxlZnQuc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjLmxtID0gX2RmZHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkZmR2ICs9IF9kZmR2ICogYy5yaWdodC5zY2FsZTtcclxuICAgICAgICAgICAgICAgIGMubG0gPSAtX2RmZHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcG9zdEFjdGlvbihjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZGZkdiAvIHYuc2NhbGU7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLnBvcHVsYXRlU3BsaXRCbG9jayA9IGZ1bmN0aW9uICh2LCBwcmV2KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBuZXh0Lm9mZnNldCA9IHYub2Zmc2V0ICsgKG5leHQgPT09IGMucmlnaHQgPyBjLmdhcCA6IC1jLmdhcCk7XHJcbiAgICAgICAgICAgIF90aGlzLmFkZFZhcmlhYmxlKG5leHQpO1xyXG4gICAgICAgICAgICBfdGhpcy5wb3B1bGF0ZVNwbGl0QmxvY2sobmV4dCwgdik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24gKHZpc2l0LCBhY2MsIHYsIHByZXYpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh2ID09PSB2b2lkIDApIHsgdiA9IHRoaXMudmFyc1swXTsgfVxyXG4gICAgICAgIGlmIChwcmV2ID09PSB2b2lkIDApIHsgcHJldiA9IG51bGw7IH1cclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBhY2MucHVzaCh2aXNpdChjKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnRyYXZlcnNlKHZpc2l0LCBhY2MsIG5leHQsIHYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5maW5kTWluTE0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIG0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZV9sbSh0aGlzLnZhcnNbMF0sIG51bGwsIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgIGlmICghYy5lcXVhbGl0eSAmJiAobSA9PT0gbnVsbCB8fCBjLmxtIDwgbS5sbSkpXHJcbiAgICAgICAgICAgICAgICBtID0gYztcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuZmluZE1pbkxNQmV0d2VlbiA9IGZ1bmN0aW9uIChsdiwgcnYpIHtcclxuICAgICAgICB0aGlzLmNvbXB1dGVfbG0obHYsIG51bGwsIGZ1bmN0aW9uICgpIHsgfSk7XHJcbiAgICAgICAgdmFyIG0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZmluZFBhdGgobHYsIG51bGwsIHJ2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBpZiAoIWMuZXF1YWxpdHkgJiYgYy5yaWdodCA9PT0gbmV4dCAmJiAobSA9PT0gbnVsbCB8fCBjLmxtIDwgbS5sbSkpXHJcbiAgICAgICAgICAgICAgICBtID0gYztcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuZmluZFBhdGggPSBmdW5jdGlvbiAodiwgcHJldiwgdG8sIHZpc2l0KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgZW5kRm91bmQgPSBmYWxzZTtcclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBpZiAoIWVuZEZvdW5kICYmIChuZXh0ID09PSB0byB8fCBfdGhpcy5maW5kUGF0aChuZXh0LCB2LCB0bywgdmlzaXQpKSkge1xyXG4gICAgICAgICAgICAgICAgZW5kRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdmlzaXQoYywgbmV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZW5kRm91bmQ7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLmlzQWN0aXZlRGlyZWN0ZWRQYXRoQmV0d2VlbiA9IGZ1bmN0aW9uICh1LCB2KSB7XHJcbiAgICAgICAgaWYgKHUgPT09IHYpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHZhciBpID0gdS5jT3V0Lmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gdS5jT3V0W2ldO1xyXG4gICAgICAgICAgICBpZiAoYy5hY3RpdmUgJiYgdGhpcy5pc0FjdGl2ZURpcmVjdGVkUGF0aEJldHdlZW4oYy5yaWdodCwgdikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnNwbGl0ID0gZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICBjLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBbQmxvY2suY3JlYXRlU3BsaXRCbG9jayhjLmxlZnQpLCBCbG9jay5jcmVhdGVTcGxpdEJsb2NrKGMucmlnaHQpXTtcclxuICAgIH07XHJcbiAgICBCbG9jay5jcmVhdGVTcGxpdEJsb2NrID0gZnVuY3Rpb24gKHN0YXJ0VmFyKSB7XHJcbiAgICAgICAgdmFyIGIgPSBuZXcgQmxvY2soc3RhcnRWYXIpO1xyXG4gICAgICAgIGIucG9wdWxhdGVTcGxpdEJsb2NrKHN0YXJ0VmFyLCBudWxsKTtcclxuICAgICAgICByZXR1cm4gYjtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuc3BsaXRCZXR3ZWVuID0gZnVuY3Rpb24gKHZsLCB2cikge1xyXG4gICAgICAgIHZhciBjID0gdGhpcy5maW5kTWluTE1CZXR3ZWVuKHZsLCB2cik7XHJcbiAgICAgICAgaWYgKGMgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGJzID0gQmxvY2suc3BsaXQoYyk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNvbnN0cmFpbnQ6IGMsIGxiOiBic1swXSwgcmI6IGJzWzFdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5tZXJnZUFjcm9zcyA9IGZ1bmN0aW9uIChiLCBjLCBkaXN0KSB7XHJcbiAgICAgICAgYy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gYi52YXJzLmxlbmd0aDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGIudmFyc1tpXTtcclxuICAgICAgICAgICAgdi5vZmZzZXQgKz0gZGlzdDtcclxuICAgICAgICAgICAgdGhpcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NuID0gdGhpcy5wcy5nZXRQb3NuKCk7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLmNvc3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHN1bSA9IDAsIGkgPSB0aGlzLnZhcnMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLnZhcnNbaV0sIGQgPSB2LnBvc2l0aW9uKCkgLSB2LmRlc2lyZWRQb3NpdGlvbjtcclxuICAgICAgICAgICAgc3VtICs9IGQgKiBkICogdi53ZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJsb2NrO1xyXG59KCkpO1xyXG5leHBvcnRzLkJsb2NrID0gQmxvY2s7XHJcbnZhciBCbG9ja3MgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmxvY2tzKHZzKSB7XHJcbiAgICAgICAgdGhpcy52cyA9IHZzO1xyXG4gICAgICAgIHZhciBuID0gdnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgICAgICAgIHZhciBiID0gbmV3IEJsb2NrKHZzW25dKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0W25dID0gYjtcclxuICAgICAgICAgICAgYi5ibG9ja0luZCA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQmxvY2tzLnByb3RvdHlwZS5jb3N0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzdW0gPSAwLCBpID0gdGhpcy5saXN0Lmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICBzdW0gKz0gdGhpcy5saXN0W2ldLmNvc3QoKTtcclxuICAgICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24gKGIpIHtcclxuICAgICAgICBiLmJsb2NrSW5kID0gdGhpcy5saXN0Lmxlbmd0aDtcclxuICAgICAgICB0aGlzLmxpc3QucHVzaChiKTtcclxuICAgIH07XHJcbiAgICBCbG9ja3MucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgICAgdmFyIGxhc3QgPSB0aGlzLmxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgICB2YXIgc3dhcEJsb2NrID0gdGhpcy5saXN0W2xhc3RdO1xyXG4gICAgICAgIHRoaXMubGlzdC5sZW5ndGggPSBsYXN0O1xyXG4gICAgICAgIGlmIChiICE9PSBzd2FwQmxvY2spIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0W2IuYmxvY2tJbmRdID0gc3dhcEJsb2NrO1xyXG4gICAgICAgICAgICBzd2FwQmxvY2suYmxvY2tJbmQgPSBiLmJsb2NrSW5kO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBCbG9ja3MucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICB2YXIgbCA9IGMubGVmdC5ibG9jaywgciA9IGMucmlnaHQuYmxvY2s7XHJcbiAgICAgICAgdmFyIGRpc3QgPSBjLnJpZ2h0Lm9mZnNldCAtIGMubGVmdC5vZmZzZXQgLSBjLmdhcDtcclxuICAgICAgICBpZiAobC52YXJzLmxlbmd0aCA8IHIudmFycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgci5tZXJnZUFjcm9zcyhsLCBjLCBkaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUobCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsLm1lcmdlQWNyb3NzKHIsIGMsIC1kaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUocik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgdGhpcy5saXN0LmZvckVhY2goZik7XHJcbiAgICB9O1xyXG4gICAgQmxvY2tzLnByb3RvdHlwZS51cGRhdGVCbG9ja1Bvc2l0aW9ucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAoYikgeyByZXR1cm4gYi51cGRhdGVXZWlnaHRlZFBvc2l0aW9uKCk7IH0pO1xyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiAoaW5hY3RpdmUpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQmxvY2tQb3NpdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAoYikge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGIuZmluZE1pbkxNKCk7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSBudWxsICYmIHYubG0gPCBTb2x2ZXIuTEFHUkFOR0lBTl9UT0xFUkFOQ0UpIHtcclxuICAgICAgICAgICAgICAgIGIgPSB2LmxlZnQuYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBCbG9jay5zcGxpdCh2KS5mb3JFYWNoKGZ1bmN0aW9uIChuYikgeyByZXR1cm4gX3RoaXMuaW5zZXJ0KG5iKTsgfSk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmUoYik7XHJcbiAgICAgICAgICAgICAgICBpbmFjdGl2ZS5wdXNoKHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJsb2NrcztcclxufSgpKTtcclxuZXhwb3J0cy5CbG9ja3MgPSBCbG9ja3M7XHJcbnZhciBTb2x2ZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gU29sdmVyKHZzLCBjcykge1xyXG4gICAgICAgIHRoaXMudnMgPSB2cztcclxuICAgICAgICB0aGlzLmNzID0gY3M7XHJcbiAgICAgICAgdGhpcy52cyA9IHZzO1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgdi5jSW4gPSBbXSwgdi5jT3V0ID0gW107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jcyA9IGNzO1xyXG4gICAgICAgIGNzLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgYy5sZWZ0LmNPdXQucHVzaChjKTtcclxuICAgICAgICAgICAgYy5yaWdodC5jSW4ucHVzaChjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmluYWN0aXZlID0gY3MubWFwKGZ1bmN0aW9uIChjKSB7IGMuYWN0aXZlID0gZmFsc2U7IHJldHVybiBjOyB9KTtcclxuICAgICAgICB0aGlzLmJzID0gbnVsbDtcclxuICAgIH1cclxuICAgIFNvbHZlci5wcm90b3R5cGUuY29zdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5icy5jb3N0KCk7XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zZXRTdGFydGluZ1Bvc2l0aW9ucyA9IGZ1bmN0aW9uIChwcykge1xyXG4gICAgICAgIHRoaXMuaW5hY3RpdmUgPSB0aGlzLmNzLm1hcChmdW5jdGlvbiAoYykgeyBjLmFjdGl2ZSA9IGZhbHNlOyByZXR1cm4gYzsgfSk7XHJcbiAgICAgICAgdGhpcy5icyA9IG5ldyBCbG9ja3ModGhpcy52cyk7XHJcbiAgICAgICAgdGhpcy5icy5mb3JFYWNoKGZ1bmN0aW9uIChiLCBpKSB7IHJldHVybiBiLnBvc24gPSBwc1tpXTsgfSk7XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zZXREZXNpcmVkUG9zaXRpb25zID0gZnVuY3Rpb24gKHBzKSB7XHJcbiAgICAgICAgdGhpcy52cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiB2LmRlc2lyZWRQb3NpdGlvbiA9IHBzW2ldOyB9KTtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIucHJvdG90eXBlLm1vc3RWaW9sYXRlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbWluU2xhY2sgPSBOdW1iZXIuTUFYX1ZBTFVFLCB2ID0gbnVsbCwgbCA9IHRoaXMuaW5hY3RpdmUsIG4gPSBsLmxlbmd0aCwgZGVsZXRlUG9pbnQgPSBuO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gbFtpXTtcclxuICAgICAgICAgICAgaWYgKGMudW5zYXRpc2ZpYWJsZSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB2YXIgc2xhY2sgPSBjLnNsYWNrKCk7XHJcbiAgICAgICAgICAgIGlmIChjLmVxdWFsaXR5IHx8IHNsYWNrIDwgbWluU2xhY2spIHtcclxuICAgICAgICAgICAgICAgIG1pblNsYWNrID0gc2xhY2s7XHJcbiAgICAgICAgICAgICAgICB2ID0gYztcclxuICAgICAgICAgICAgICAgIGRlbGV0ZVBvaW50ID0gaTtcclxuICAgICAgICAgICAgICAgIGlmIChjLmVxdWFsaXR5KVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWxldGVQb2ludCAhPT0gbiAmJlxyXG4gICAgICAgICAgICAobWluU2xhY2sgPCBTb2x2ZXIuWkVST19VUFBFUkJPVU5EICYmICF2LmFjdGl2ZSB8fCB2LmVxdWFsaXR5KSkge1xyXG4gICAgICAgICAgICBsW2RlbGV0ZVBvaW50XSA9IGxbbiAtIDFdO1xyXG4gICAgICAgICAgICBsLmxlbmd0aCA9IG4gLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdjtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIucHJvdG90eXBlLnNhdGlzZnkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmJzID0gbmV3IEJsb2Nrcyh0aGlzLnZzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5icy5zcGxpdCh0aGlzLmluYWN0aXZlKTtcclxuICAgICAgICB2YXIgdiA9IG51bGw7XHJcbiAgICAgICAgd2hpbGUgKCh2ID0gdGhpcy5tb3N0VmlvbGF0ZWQoKSkgJiYgKHYuZXF1YWxpdHkgfHwgdi5zbGFjaygpIDwgU29sdmVyLlpFUk9fVVBQRVJCT1VORCAmJiAhdi5hY3RpdmUpKSB7XHJcbiAgICAgICAgICAgIHZhciBsYiA9IHYubGVmdC5ibG9jaywgcmIgPSB2LnJpZ2h0LmJsb2NrO1xyXG4gICAgICAgICAgICBpZiAobGIgIT09IHJiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJzLm1lcmdlKHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxiLmlzQWN0aXZlRGlyZWN0ZWRQYXRoQmV0d2Vlbih2LnJpZ2h0LCB2LmxlZnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi51bnNhdGlzZmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdCA9IGxiLnNwbGl0QmV0d2Vlbih2LmxlZnQsIHYucmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icy5pbnNlcnQoc3BsaXQubGIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnMuaW5zZXJ0KHNwbGl0LnJiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzLnJlbW92ZShsYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZS5wdXNoKHNwbGl0LmNvbnN0cmFpbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi51bnNhdGlzZmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh2LnNsYWNrKCkgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5hY3RpdmUucHVzaCh2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnMubWVyZ2Uodik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zb2x2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnNhdGlzZnkoKTtcclxuICAgICAgICB2YXIgbGFzdGNvc3QgPSBOdW1iZXIuTUFYX1ZBTFVFLCBjb3N0ID0gdGhpcy5icy5jb3N0KCk7XHJcbiAgICAgICAgd2hpbGUgKE1hdGguYWJzKGxhc3Rjb3N0IC0gY29zdCkgPiAwLjAwMDEpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXRpc2Z5KCk7XHJcbiAgICAgICAgICAgIGxhc3Rjb3N0ID0gY29zdDtcclxuICAgICAgICAgICAgY29zdCA9IHRoaXMuYnMuY29zdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29zdDtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIuTEFHUkFOR0lBTl9UT0xFUkFOQ0UgPSAtMWUtNDtcclxuICAgIFNvbHZlci5aRVJPX1VQUEVSQk9VTkQgPSAtMWUtMTA7XHJcbiAgICByZXR1cm4gU29sdmVyO1xyXG59KCkpO1xyXG5leHBvcnRzLlNvbHZlciA9IFNvbHZlcjtcclxuZnVuY3Rpb24gcmVtb3ZlT3ZlcmxhcEluT25lRGltZW5zaW9uKHNwYW5zLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKSB7XHJcbiAgICB2YXIgdnMgPSBzcGFucy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIG5ldyBWYXJpYWJsZShzLmRlc2lyZWRDZW50ZXIpOyB9KTtcclxuICAgIHZhciBjcyA9IFtdO1xyXG4gICAgdmFyIG4gPSBzcGFucy5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHtcclxuICAgICAgICB2YXIgbGVmdCA9IHNwYW5zW2ldLCByaWdodCA9IHNwYW5zW2kgKyAxXTtcclxuICAgICAgICBjcy5wdXNoKG5ldyBDb25zdHJhaW50KHZzW2ldLCB2c1tpICsgMV0sIChsZWZ0LnNpemUgKyByaWdodC5zaXplKSAvIDIpKTtcclxuICAgIH1cclxuICAgIHZhciBsZWZ0TW9zdCA9IHZzWzBdLCByaWdodE1vc3QgPSB2c1tuIC0gMV0sIGxlZnRNb3N0U2l6ZSA9IHNwYW5zWzBdLnNpemUgLyAyLCByaWdodE1vc3RTaXplID0gc3BhbnNbbiAtIDFdLnNpemUgLyAyO1xyXG4gICAgdmFyIHZMb3dlciA9IG51bGwsIHZVcHBlciA9IG51bGw7XHJcbiAgICBpZiAobG93ZXJCb3VuZCkge1xyXG4gICAgICAgIHZMb3dlciA9IG5ldyBWYXJpYWJsZShsb3dlckJvdW5kLCBsZWZ0TW9zdC53ZWlnaHQgKiAxMDAwKTtcclxuICAgICAgICB2cy5wdXNoKHZMb3dlcik7XHJcbiAgICAgICAgY3MucHVzaChuZXcgQ29uc3RyYWludCh2TG93ZXIsIGxlZnRNb3N0LCBsZWZ0TW9zdFNpemUpKTtcclxuICAgIH1cclxuICAgIGlmICh1cHBlckJvdW5kKSB7XHJcbiAgICAgICAgdlVwcGVyID0gbmV3IFZhcmlhYmxlKHVwcGVyQm91bmQsIHJpZ2h0TW9zdC53ZWlnaHQgKiAxMDAwKTtcclxuICAgICAgICB2cy5wdXNoKHZVcHBlcik7XHJcbiAgICAgICAgY3MucHVzaChuZXcgQ29uc3RyYWludChyaWdodE1vc3QsIHZVcHBlciwgcmlnaHRNb3N0U2l6ZSkpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNvbHZlciA9IG5ldyBTb2x2ZXIodnMsIGNzKTtcclxuICAgIHNvbHZlci5zb2x2ZSgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXdDZW50ZXJzOiB2cy5zbGljZSgwLCBzcGFucy5sZW5ndGgpLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5wb3NpdGlvbigpOyB9KSxcclxuICAgICAgICBsb3dlckJvdW5kOiB2TG93ZXIgPyB2TG93ZXIucG9zaXRpb24oKSA6IGxlZnRNb3N0LnBvc2l0aW9uKCkgLSBsZWZ0TW9zdFNpemUsXHJcbiAgICAgICAgdXBwZXJCb3VuZDogdlVwcGVyID8gdlVwcGVyLnBvc2l0aW9uKCkgOiByaWdodE1vc3QucG9zaXRpb24oKSArIHJpZ2h0TW9zdFNpemVcclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5yZW1vdmVPdmVybGFwSW5PbmVEaW1lbnNpb24gPSByZW1vdmVPdmVybGFwSW5PbmVEaW1lbnNpb247XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRuQnpZeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDFkbFlrTnZiR0V2YzNKakwzWndjMk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJTVHRKUVV0SkxIVkNRVUZ0UWl4TFFVRmhPMUZCUVdJc1ZVRkJTeXhIUVVGTUxFdEJRVXNzUTBGQlVUdFJRVXBvUXl4UFFVRkZMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMllzVDBGQlJTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTm1MRTlCUVVVc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRmIwSXNRMEZCUXp0SlFVVndReXh0UTBGQlZ5eEhRVUZZTEZWQlFWa3NRMEZCVnp0UlFVTnVRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRUlzU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU40UWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOMlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlF6VkNMRU5CUVVNN1NVRkZSQ3dyUWtGQlR5eEhRVUZRTzFGQlEwa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVTk1MRzlDUVVGRE8wRkJRVVFzUTBGQlF5eEJRVzVDUkN4SlFXMUNRenRCUVc1Q1dTeHpRMEZCWVR0QlFYRkNNVUk3U1VGTFNTeHZRa0ZCYlVJc1NVRkJZeXhGUVVGVExFdEJRV1VzUlVGQlV5eEhRVUZYTEVWQlFWTXNVVUZCZVVJN1VVRkJla0lzZVVKQlFVRXNSVUZCUVN4blFrRkJlVUk3VVVGQk5VWXNVMEZCU1N4SFFVRktMRWxCUVVrc1EwRkJWVHRSUVVGVExGVkJRVXNzUjBGQlRDeExRVUZMTEVOQlFWVTdVVUZCVXl4UlFVRkhMRWRCUVVnc1IwRkJSeXhEUVVGUk8xRkJRVk1zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCYVVJN1VVRklMMGNzVjBGQlRTeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVTjRRaXhyUWtGQllTeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVY3pRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTnVRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkZSQ3d3UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXp0WlFVTjRReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSenRyUWtGRGJrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRKUVVOcVJDeERRVUZETzBsQlEwd3NhVUpCUVVNN1FVRkJSQ3hEUVVGRExFRkJha0pFTEVsQmFVSkRPMEZCYWtKWkxHZERRVUZWTzBGQmJVSjJRanRKUVUxSkxHdENRVUZ0UWl4bFFVRjFRaXhGUVVGVExFMUJRV3RDTEVWQlFWTXNTMEZCYVVJN1VVRkJOVU1zZFVKQlFVRXNSVUZCUVN4VlFVRnJRanRSUVVGVExITkNRVUZCTEVWQlFVRXNVMEZCYVVJN1VVRkJOVVVzYjBKQlFXVXNSMEZCWml4bFFVRmxMRU5CUVZFN1VVRkJVeXhYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZaTzFGQlFWTXNWVUZCU3l4SFFVRk1MRXRCUVVzc1EwRkJXVHRSUVV3dlJpeFhRVUZOTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCU3l0RkxFTkJRVU03U1VGRmJrY3NkVUpCUVVrc1IwRkJTanRSUVVOSkxFOUJRVThzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkN3eVFrRkJVU3hIUVVGU08xRkJRMGtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRKUVVNNVJTeERRVUZETzBsQlIwUXNhME5CUVdVc1IwRkJaaXhWUVVGblFpeEpRVUZqTEVWQlFVVXNRMEZCTUVNN1VVRkRkRVVzU1VGQlNTeEZRVUZGTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVhaRExFTkJRWFZETEVOQlFVTTdVVUZET1VRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJaQ3hEUVVGakxFTkJRVU1zUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRmlMRU5CUVdFc1EwRkJReXhEUVVGRE8wbEJRM2hETEVOQlFVTTdTVUZEVEN4bFFVRkRPMEZCUVVRc1EwRkJReXhCUVhSQ1JDeEpRWE5DUXp0QlFYUkNXU3cwUWtGQlVUdEJRWGRDY2tJN1NVRk5TU3hsUVVGWkxFTkJRVmM3VVVGTWRrSXNVMEZCU1N4SFFVRmxMRVZCUVVVc1EwRkJRenRSUVUxc1FpeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzSkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1EwRkJRenRKUVVWUExESkNRVUZYTEVkQlFXNUNMRlZCUVc5Q0xFTkJRVmM3VVVGRE0wSXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRFppeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVZEVMSE5EUVVGelFpeEhRVUYwUWp0UlFVTkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVONlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETlVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOc1F5eERRVUZETzBsQlJVOHNNRUpCUVZVc1IwRkJiRUlzVlVGQmJVSXNRMEZCVnl4RlFVRkZMRU5CUVZjc1JVRkJSU3hWUVVGcFF6dFJRVUU1UlN4cFFrRmpRenRSUVdKSExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOd1FpeERRVUZETEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTzFsQlEzcENMRWxCUVVrc1MwRkJTeXhIUVVGSExFdEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFpRVU5xUkN4SlFVRkpMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTzJkQ1FVTnNRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU0zUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF6dGhRVU5vUWp0cFFrRkJUVHRuUWtGRFNDeEpRVUZKTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETzJkQ1FVTTVRaXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMkZCUTJwQ08xbEJRMFFzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4Q0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dEpRVU14UWl4RFFVRkRPMGxCUlU4c2EwTkJRV3RDTEVkQlFURkNMRlZCUVRKQ0xFTkJRVmNzUlVGQlJTeEpRVUZqTzFGQlFYUkVMR2xDUVUxRE8xRkJURWNzUTBGQlF5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJReXhEUVVGRExFVkJRVVVzU1VGQlNUdFpRVU0xUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkROMFFzUzBGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlFpeExRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlExQXNRMEZCUXp0SlFVZEVMSGRDUVVGUkxFZEJRVklzVlVGQlV5eExRVUUyUWl4RlFVRkZMRWRCUVZVc1JVRkJSU3hEUVVFd1FpeEZRVUZGTEVsQlFXMUNPMUZCUVc1SExHbENRVXRETzFGQlRHMUVMR3RDUVVGQkxFVkJRVUVzU1VGQll5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVGRkxIRkNRVUZCTEVWQlFVRXNWMEZCYlVJN1VVRkRMMFlzUTBGQlF5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJReXhEUVVGRExFVkJRVVVzU1VGQlNUdFpRVU0xUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFdEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFVDeERRVUZETzBsQlMwUXNlVUpCUVZNc1IwRkJWRHRSUVVOSkxFbEJRVWtzUTBGQlF5eEhRVUZsTEVsQlFVa3NRMEZCUXp0UlFVTjZRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEZWQlFVRXNRMEZCUXp0WlFVTnFReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yZENRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRNVVFzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlR5eG5RMEZCWjBJc1IwRkJlRUlzVlVGQmVVSXNSVUZCV1N4RlFVRkZMRVZCUVZrN1VVRkRMME1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxHTkJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEySXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4VlFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVVZQTEhkQ1FVRlJMRWRCUVdoQ0xGVkJRV2xDTEVOQlFWY3NSVUZCUlN4SlFVRmpMRVZCUVVVc1JVRkJXU3hGUVVGRkxFdEJRVEpETzFGQlFYWkhMR2xDUVZWRE8xRkJWRWNzU1VGQlNTeFJRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTNKQ0xFTkJRVU1zUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RlFVRkZMRlZCUVVNc1EwRkJReXhGUVVGRkxFbEJRVWs3V1VGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eEZRVUZGTEVsQlFVa3NTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVOdVJUdG5Ra0ZEU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8yZENRVU5vUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEyeENPMUZCUTB3c1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEZGQlFWRXNRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJTVVFzTWtOQlFUSkNMRWRCUVROQ0xGVkJRVFJDTEVOQlFWY3NSVUZCUlN4RFFVRlhPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVONlFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU4wUWl4UFFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRMUFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETERKQ1FVRXlRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTnVRanRSUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhUU3hYUVVGTExFZEJRVm9zVlVGQllTeERRVUZoTzFGQlMzUkNMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEycENMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNM1JTeERRVUZETzBsQlJXTXNjMEpCUVdkQ0xFZEJRUzlDTEZWQlFXZERMRkZCUVd0Q08xRkJRemxETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlF6VkNMRU5CUVVNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGNrTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJSMFFzTkVKQlFWa3NSMEZCV2l4VlFVRmhMRVZCUVZrc1JVRkJSU3hGUVVGWk8xRkJTMjVETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hGUVVGRk8xbEJRMW9zU1VGQlNTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU40UWl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOc1JEdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDd3lRa0ZCVnl4SFFVRllMRlZCUVZrc1EwRkJVU3hGUVVGRkxFTkJRV0VzUlVGQlJTeEpRVUZaTzFGQlF6ZERMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRek5ETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVJc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTTdXVUZEYWtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjJRanRSUVVORUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU5zUXl4RFFVRkRPMGxCUlVRc2IwSkJRVWtzUjBGQlNqdFJRVU5KTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTlNMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF6dFpRVU42UXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXpOQ08xRkJRMFFzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWml4RFFVRkRPMGxCVTB3c1dVRkJRenRCUVVGRUxFTkJRVU1zUVVGc1MwUXNTVUZyUzBNN1FVRnNTMWtzYzBKQlFVczdRVUZ2UzJ4Q08wbEJSMGtzWjBKQlFXMUNMRVZCUVdNN1VVRkJaQ3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZaTzFGQlF6ZENMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYkVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlFpeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTFJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYWtJc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEYkVJN1NVRkRUQ3hEUVVGRE8wbEJSVVFzY1VKQlFVa3NSMEZCU2p0UlFVTkpMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGJFTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkJSU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVU4yUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRlJDeDFRa0ZCVFN4SFFVRk9MRlZCUVU4c1EwRkJVVHRSUVVsWUxFTkJRVU1zUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZMZEVJc1EwRkJRenRKUVVWRUxIVkNRVUZOTEVkQlFVNHNWVUZCVHl4RFFVRlJPMUZCUzFnc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMmhETEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEZOQlFWTXNSVUZCUlR0WlFVTnFRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03V1VGRGJFTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETzFOQlNXNURPMGxCUTB3c1EwRkJRenRKUVVsRUxITkNRVUZMTEVkQlFVd3NWVUZCVFN4RFFVRmhPMUZCUTJZc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCU1hoRExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRGJFUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVNdlFpeERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTnNRanRoUVVGTk8xbEJRMGdzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTnNRanRKUVV0TUxFTkJRVU03U1VGRlJDeDNRa0ZCVHl4SFFVRlFMRlZCUVZFc1EwRkJaME03VVVGRGNFTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZWtJc1EwRkJRenRKUVVkRUxIRkRRVUZ2UWl4SFFVRndRanRSUVVOSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEhOQ1FVRnpRaXhGUVVGRkxFVkJRVEZDTEVOQlFUQkNMRU5CUVVNc1EwRkJRenRKUVVOMFJDeERRVUZETzBsQlIwUXNjMEpCUVVzc1IwRkJUQ3hWUVVGTkxGRkJRWE5DTzFGQlFUVkNMR2xDUVdWRE8xRkJaRWNzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03VVVGRE5VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzFsQlEyWXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXh2UWtGQmIwSXNSVUZCUlR0blFrRkRiRVFzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU5xUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRVZCUVVVc1NVRkJSU3hQUVVGQkxFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVdZc1EwRkJaU3hEUVVGRExFTkJRVU03WjBKQlF6VkRMRXRCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJZc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVdHdRanRSUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlExQXNRMEZCUXp0SlFXOUNUQ3hoUVVGRE8wRkJRVVFzUTBGQlF5eEJRV3hJUkN4SlFXdElRenRCUVd4SVdTeDNRa0ZCVFR0QlFXOUlia0k3U1VGUFNTeG5Ra0ZCYlVJc1JVRkJZeXhGUVVGVExFVkJRV2RDTzFGQlFYWkRMRTlCUVVVc1IwRkJSaXhGUVVGRkxFTkJRVms3VVVGQlV5eFBRVUZGTEVkQlFVWXNSVUZCUlN4RFFVRmpPMUZCUTNSRUxFbEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEVWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVrMVFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEySXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03V1VGRFVpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJTWGhDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGTExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFSQ3hKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVFzY1VKQlFVa3NSMEZCU2p0UlFVTkpMRTlCUVU4c1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJTVVFzY1VOQlFXOUNMRWRCUVhCQ0xGVkJRWEZDTEVWQlFWazdVVUZETjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlN5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZET1VJc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRV1FzUTBGQll5eERRVUZETEVOQlFVTTdTVUZET1VNc1EwRkJRenRKUVVWRUxHOURRVUZ0UWl4SFFVRnVRaXhWUVVGdlFpeEZRVUZaTzFGQlF6VkNMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFTkJRVU1zUTBGQlF5eGxRVUZsTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGNlFpeERRVUY1UWl4RFFVRkRMRU5CUVVNN1NVRkRla1FzUTBGQlF6dEpRVEpDVHl3MlFrRkJXU3hIUVVGd1FqdFJRVU5KTEVsQlFVa3NVVUZCVVN4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRek5DTEVOQlFVTXNSMEZCWlN4SlFVRkpMRVZCUTNCQ0xFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVTnFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZEV2l4WFFVRlhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM0JDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMklzU1VGQlNTeERRVUZETEVOQlFVTXNZVUZCWVR0blFrRkJSU3hUUVVGVE8xbEJRemxDTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhSUVVGUkxFbEJRVWtzUzBGQlN5eEhRVUZITEZGQlFWRXNSVUZCUlR0blFrRkRhRU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0blFrRkRha0lzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRUaXhYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTm9RaXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTzI5Q1FVRkZMRTFCUVUwN1lVRkRla0k3VTBGRFNqdFJRVU5FTEVsQlFVa3NWMEZCVnl4TFFVRkxMRU5CUVVNN1dVRkRha0lzUTBGQlF5eFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVOc1JUdFpRVU5KTEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpGQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOd1FqdFJRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVsRUxIZENRVUZQTEVkQlFWQTdVVUZEU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEycENMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xTkJRMnBETzFGQlNVUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUXpkQ0xFbEJRVWtzUTBGQlF5eEhRVUZsTEVsQlFVa3NRMEZCUXp0UlFVTjZRaXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzVFVGQlRTeERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFpRVU5xUnl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZOTVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTzJkQ1FVTllMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNCQ08ybENRVUZOTzJkQ1FVTklMRWxCUVVrc1JVRkJSU3hEUVVGRExESkNRVUV5UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMjlDUVVWcVJDeERRVUZETEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGRrSXNVMEZCVXp0cFFrRkRXanRuUWtGRlJDeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yZENRVU0zUXl4SlFVRkpMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3YjBKQlEyaENMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMjlDUVVONlFpeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU40UXp0eFFrRkJUVHR2UWtGSlNDeERRVUZETEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGRrSXNVMEZCVXp0cFFrRkRXanRuUWtGRFJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVU3YjBKQlMyaENMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONlFqdHhRa0ZCVFR0dlFrRkpTQ3hKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRGNFSTdZVUZEU2p0VFFVMUtPMGxCU1V3c1EwRkJRenRKUVVkRUxITkNRVUZMTEVkQlFVdzdVVUZEU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRFppeEpRVUZKTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJRM1pFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZPMWxCUTNaRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTm1MRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGFFSXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVMEZEZWtJN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCY0V0TkxESkNRVUZ2UWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRemRDTEhOQ1FVRmxMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03U1VGdlMzQkRMR0ZCUVVNN1EwRkJRU3hCUVhwTFJDeEpRWGxMUXp0QlFYcExXU3gzUWtGQlRUdEJRV2xNYmtJc1UwRkJaMElzTWtKQlFUSkNMRU5CUVVNc1MwRkJaMFFzUlVGQlJTeFZRVUZ0UWl4RlFVRkZMRlZCUVcxQ08wbEJSMnhKTEVsQlFVMHNSVUZCUlN4SFFVRmxMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zWVVGQllTeERRVUZETEVWQlFUZENMRU5CUVRaQ0xFTkJRVU1zUTBGQlF6dEpRVU55UlN4SlFVRk5MRVZCUVVVc1IwRkJhVUlzUlVGQlJTeERRVUZETzBsQlF6VkNMRWxCUVUwc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZETlVJc1NVRkJUU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpORk8wbEJRMFFzU1VGQlRTeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOc1FpeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGRGNrSXNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVTm9ReXhoUVVGaExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlF6RkRMRWxCUVVrc1RVRkJUU3hIUVVGaExFbEJRVWtzUlVGQlJTeE5RVUZOTEVkQlFXRXNTVUZCU1N4RFFVRkRPMGxCUTNKRUxFbEJRVWtzVlVGQlZTeEZRVUZGTzFGQlExb3NUVUZCVFN4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExGVkJRVlVzUlVGQlJTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZFTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGFFSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRE0wUTdTVUZEUkN4SlFVRkpMRlZCUVZVc1JVRkJSVHRSUVVOYUxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXpSQ3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTJoQ0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1UwRkJVeXhGUVVGRkxFMUJRVTBzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpkRU8wbEJRMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyaERMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dEpRVU5tTEU5QlFVODdVVUZEU0N4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQldpeERRVUZaTEVOQlFVTTdVVUZETlVRc1ZVRkJWU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1dVRkJXVHRSUVVNelJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eGhRVUZoTzB0QlEyaEdMRU5CUVVNN1FVRkRUaXhEUVVGRE8wRkJhRU5FTEd0RlFXZERReUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG59KSgpO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBUcmVlQmFzZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBUcmVlQmFzZSgpIHtcclxuICAgICAgICB0aGlzLmZpbmRJdGVyID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgICAgIHZhciBpdGVyID0gdGhpcy5pdGVyYXRvcigpO1xyXG4gICAgICAgICAgICB3aGlsZSAocmVzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuX2NvbXBhcmF0b3IoZGF0YSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVyLl9jdXJzb3IgPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVyLl9hbmNlc3RvcnMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5nZXRfY2hpbGQoYyA+IDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zaXplID0gMDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgd2hpbGUgKHJlcyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHRoaXMuX2NvbXBhcmF0b3IoZGF0YSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzID0gcmVzLmdldF9jaGlsZChjID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgVHJlZUJhc2UucHJvdG90eXBlLmxvd2VyQm91bmQgPSBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib3VuZChkYXRhLCB0aGlzLl9jb21wYXJhdG9yKTtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUudXBwZXJCb3VuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIGNtcCA9IHRoaXMuX2NvbXBhcmF0b3I7XHJcbiAgICAgICAgZnVuY3Rpb24gcmV2ZXJzZV9jbXAoYSwgYikge1xyXG4gICAgICAgICAgICByZXR1cm4gY21wKGIsIGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmQoZGF0YSwgcmV2ZXJzZV9jbXApO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHJlcy5sZWZ0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHJlcy5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzLmRhdGE7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgVHJlZUJhc2UucHJvdG90eXBlLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVzID0gdGhpcy5fcm9vdDtcclxuICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3aGlsZSAocmVzLnJpZ2h0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHJlcy5yaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5pdGVyYXRvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMpO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKGNiKSB7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5pdGVyYXRvcigpLCBkYXRhO1xyXG4gICAgICAgIHdoaWxlICgoZGF0YSA9IGl0Lm5leHQoKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgY2IoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5yZWFjaCA9IGZ1bmN0aW9uIChjYikge1xyXG4gICAgICAgIHZhciBpdCA9IHRoaXMuaXRlcmF0b3IoKSwgZGF0YTtcclxuICAgICAgICB3aGlsZSAoKGRhdGEgPSBpdC5wcmV2KCkpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNiKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuX2JvdW5kID0gZnVuY3Rpb24gKGRhdGEsIGNtcCkge1xyXG4gICAgICAgIHZhciBjdXIgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBpdGVyID0gdGhpcy5pdGVyYXRvcigpO1xyXG4gICAgICAgIHdoaWxlIChjdXIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLl9jb21wYXJhdG9yKGRhdGEsIGN1ci5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGl0ZXIuX2N1cnNvciA9IGN1cjtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGl0ZXIuX2FuY2VzdG9ycy5wdXNoKGN1cik7XHJcbiAgICAgICAgICAgIGN1ciA9IGN1ci5nZXRfY2hpbGQoYyA+IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpID0gaXRlci5fYW5jZXN0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgICAgIGN1ciA9IGl0ZXIuX2FuY2VzdG9yc1tpXTtcclxuICAgICAgICAgICAgaWYgKGNtcChkYXRhLCBjdXIuZGF0YSkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVyLl9jdXJzb3IgPSBjdXI7XHJcbiAgICAgICAgICAgICAgICBpdGVyLl9hbmNlc3RvcnMubGVuZ3RoID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZXIuX2FuY2VzdG9ycy5sZW5ndGggPSAwO1xyXG4gICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBUcmVlQmFzZTtcclxufSgpKTtcclxuZXhwb3J0cy5UcmVlQmFzZSA9IFRyZWVCYXNlO1xyXG52YXIgSXRlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gSXRlcmF0b3IodHJlZSkge1xyXG4gICAgICAgIHRoaXMuX3RyZWUgPSB0cmVlO1xyXG4gICAgICAgIHRoaXMuX2FuY2VzdG9ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBJdGVyYXRvci5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJzb3IgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl90cmVlLl9yb290O1xyXG4gICAgICAgICAgICBpZiAocm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWluTm9kZShyb290KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnNvci5yaWdodCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNhdmU7XHJcbiAgICAgICAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F2ZSA9IHRoaXMuX2N1cnNvcjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYW5jZXN0b3JzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3IgPSB0aGlzLl9hbmNlc3RvcnMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IHdoaWxlICh0aGlzLl9jdXJzb3IucmlnaHQgPT09IHNhdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYW5jZXN0b3JzLnB1c2godGhpcy5fY3Vyc29yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21pbk5vZGUodGhpcy5fY3Vyc29yLnJpZ2h0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJzb3IgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl90cmVlLl9yb290O1xyXG4gICAgICAgICAgICBpZiAocm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Tm9kZShyb290KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnNvci5sZWZ0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2F2ZTtcclxuICAgICAgICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlID0gdGhpcy5fY3Vyc29yO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hbmNlc3RvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvciA9IHRoaXMuX2FuY2VzdG9ycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRoaXMuX2N1cnNvci5sZWZ0ID09PSBzYXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FuY2VzdG9ycy5wdXNoKHRoaXMuX2N1cnNvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhOb2RlKHRoaXMuX2N1cnNvci5sZWZ0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5fbWluTm9kZSA9IGZ1bmN0aW9uIChzdGFydCkge1xyXG4gICAgICAgIHdoaWxlIChzdGFydC5sZWZ0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FuY2VzdG9ycy5wdXNoKHN0YXJ0KTtcclxuICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJzb3IgPSBzdGFydDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBJdGVyYXRvci5wcm90b3R5cGUuX21heE5vZGUgPSBmdW5jdGlvbiAoc3RhcnQpIHtcclxuICAgICAgICB3aGlsZSAoc3RhcnQucmlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fYW5jZXN0b3JzLnB1c2goc3RhcnQpO1xyXG4gICAgICAgICAgICBzdGFydCA9IHN0YXJ0LnJpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJzb3IgPSBzdGFydDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICByZXR1cm4gSXRlcmF0b3I7XHJcbn0oKSk7XHJcbmV4cG9ydHMuSXRlcmF0b3IgPSBJdGVyYXRvcjtcclxudmFyIE5vZGUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZShkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmxlZnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIE5vZGUucHJvdG90eXBlLmdldF9jaGlsZCA9IGZ1bmN0aW9uIChkaXIpIHtcclxuICAgICAgICByZXR1cm4gZGlyID8gdGhpcy5yaWdodCA6IHRoaXMubGVmdDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBOb2RlLnByb3RvdHlwZS5zZXRfY2hpbGQgPSBmdW5jdGlvbiAoZGlyLCB2YWwpIHtcclxuICAgICAgICBpZiAoZGlyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlnaHQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxlZnQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBOb2RlO1xyXG59KCkpO1xyXG52YXIgUkJUcmVlID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhSQlRyZWUsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBSQlRyZWUoY29tcGFyYXRvcikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMuX3Jvb3QgPSBudWxsO1xyXG4gICAgICAgIF90aGlzLl9jb21wYXJhdG9yID0gY29tcGFyYXRvcjtcclxuICAgICAgICBfdGhpcy5zaXplID0gMDtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBSQlRyZWUucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSBuZXcgTm9kZShkYXRhKTtcclxuICAgICAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaXplKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgaGVhZCA9IG5ldyBOb2RlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIHZhciBkaXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIGdwID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIGdncCA9IGhlYWQ7XHJcbiAgICAgICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICBnZ3AucmlnaHQgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gbmV3IE5vZGUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcC5zZXRfY2hpbGQoZGlyLCBub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l6ZSsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoUkJUcmVlLmlzX3JlZChub2RlLmxlZnQpICYmIFJCVHJlZS5pc19yZWQobm9kZS5yaWdodCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5sZWZ0LnJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmlnaHQucmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoUkJUcmVlLmlzX3JlZChub2RlKSAmJiBSQlRyZWUuaXNfcmVkKHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpcjIgPSBnZ3AucmlnaHQgPT09IGdwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlID09PSBwLmdldF9jaGlsZChsYXN0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZ3Auc2V0X2NoaWxkKGRpcjIsIFJCVHJlZS5zaW5nbGVfcm90YXRlKGdwLCAhbGFzdCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2dwLnNldF9jaGlsZChkaXIyLCBSQlRyZWUuZG91YmxlX3JvdGF0ZShncCwgIWxhc3QpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgY21wID0gdGhpcy5fY29tcGFyYXRvcihub2RlLmRhdGEsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNtcCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGFzdCA9IGRpcjtcclxuICAgICAgICAgICAgICAgIGRpciA9IGNtcCA8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3AgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBnZ3AgPSBncDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGdwID0gcDtcclxuICAgICAgICAgICAgICAgIHAgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuZ2V0X2NoaWxkKGRpcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fcm9vdCA9IGhlYWQucmlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Jvb3QucmVkID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBSQlRyZWUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaGVhZCA9IG5ldyBOb2RlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdmFyIG5vZGUgPSBoZWFkO1xyXG4gICAgICAgIG5vZGUucmlnaHQgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICB2YXIgZ3AgPSBudWxsO1xyXG4gICAgICAgIHZhciBmb3VuZCA9IG51bGw7XHJcbiAgICAgICAgdmFyIGRpciA9IHRydWU7XHJcbiAgICAgICAgd2hpbGUgKG5vZGUuZ2V0X2NoaWxkKGRpcikgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBkaXI7XHJcbiAgICAgICAgICAgIGdwID0gcDtcclxuICAgICAgICAgICAgcCA9IG5vZGU7XHJcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmdldF9jaGlsZChkaXIpO1xyXG4gICAgICAgICAgICB2YXIgY21wID0gdGhpcy5fY29tcGFyYXRvcihkYXRhLCBub2RlLmRhdGEpO1xyXG4gICAgICAgICAgICBkaXIgPSBjbXAgPiAwO1xyXG4gICAgICAgICAgICBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3VuZCA9IG5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFSQlRyZWUuaXNfcmVkKG5vZGUpICYmICFSQlRyZWUuaXNfcmVkKG5vZGUuZ2V0X2NoaWxkKGRpcikpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoUkJUcmVlLmlzX3JlZChub2RlLmdldF9jaGlsZCghZGlyKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3IgPSBSQlRyZWUuc2luZ2xlX3JvdGF0ZShub2RlLCBkaXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHAuc2V0X2NoaWxkKGxhc3QsIHNyKTtcclxuICAgICAgICAgICAgICAgICAgICBwID0gc3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghUkJUcmVlLmlzX3JlZChub2RlLmdldF9jaGlsZCghZGlyKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2libGluZyA9IHAuZ2V0X2NoaWxkKCFsYXN0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQoIWxhc3QpKSAmJiAhUkJUcmVlLmlzX3JlZChzaWJsaW5nLmdldF9jaGlsZChsYXN0KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAucmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlyMiA9IGdwLnJpZ2h0ID09PSBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQobGFzdCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Auc2V0X2NoaWxkKGRpcjIsIFJCVHJlZS5kb3VibGVfcm90YXRlKHAsIGxhc3QpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQoIWxhc3QpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwLnNldF9jaGlsZChkaXIyLCBSQlRyZWUuc2luZ2xlX3JvdGF0ZShwLCBsYXN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3BjID0gZ3AuZ2V0X2NoaWxkKGRpcjIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGMubGVmdC5yZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwYy5yaWdodC5yZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZm91bmQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgZm91bmQuZGF0YSA9IG5vZGUuZGF0YTtcclxuICAgICAgICAgICAgcC5zZXRfY2hpbGQocC5yaWdodCA9PT0gbm9kZSwgbm9kZS5nZXRfY2hpbGQobm9kZS5sZWZ0ID09PSBudWxsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2l6ZS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yb290ID0gaGVhZC5yaWdodDtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb290LnJlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZm91bmQgIT09IG51bGw7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgUkJUcmVlLmlzX3JlZCA9IGZ1bmN0aW9uIChub2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUgIT09IG51bGwgJiYgbm9kZS5yZWQ7XHJcbiAgICB9O1xyXG4gICAgUkJUcmVlLnNpbmdsZV9yb3RhdGUgPSBmdW5jdGlvbiAocm9vdCwgZGlyKSB7XHJcbiAgICAgICAgdmFyIHNhdmUgPSByb290LmdldF9jaGlsZCghZGlyKTtcclxuICAgICAgICByb290LnNldF9jaGlsZCghZGlyLCBzYXZlLmdldF9jaGlsZChkaXIpKTtcclxuICAgICAgICBzYXZlLnNldF9jaGlsZChkaXIsIHJvb3QpO1xyXG4gICAgICAgIHJvb3QucmVkID0gdHJ1ZTtcclxuICAgICAgICBzYXZlLnJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBzYXZlO1xyXG4gICAgfTtcclxuICAgIFJCVHJlZS5kb3VibGVfcm90YXRlID0gZnVuY3Rpb24gKHJvb3QsIGRpcikge1xyXG4gICAgICAgIHJvb3Quc2V0X2NoaWxkKCFkaXIsIFJCVHJlZS5zaW5nbGVfcm90YXRlKHJvb3QuZ2V0X2NoaWxkKCFkaXIpLCAhZGlyKSk7XHJcbiAgICAgICAgcmV0dXJuIFJCVHJlZS5zaW5nbGVfcm90YXRlKHJvb3QsIGRpcik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJCVHJlZTtcclxufShUcmVlQmFzZSkpO1xyXG5leHBvcnRzLlJCVHJlZSA9IFJCVHJlZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21KMGNtVmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2VjJWaVEyOXNZUzl6Y21NdmNtSjBjbVZsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenRCUVhWQ1NUdEpRVUZCTzFGQk5FSkpMR0ZCUVZFc1IwRkJSeXhWUVVGVkxFbEJRVWs3V1VGRGNrSXNTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU55UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZGTTBJc1QwRkJUeXhIUVVGSExFdEJRVXNzU1VGQlNTeEZRVUZGTzJkQ1FVTnFRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlR0dlFrRkRWQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXp0dlFrRkRia0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdhVUpCUTJZN2NVSkJRMGs3YjBKQlEwUXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUXpGQ0xFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZET1VJN1lVRkRTanRaUVVWRUxFOUJRVThzU1VGQlNTeERRVUZETzFGQlEyaENMRU5CUVVNc1EwRkJRenRKUVN0R1RpeERRVUZETzBsQmRrbEhMSGRDUVVGTExFZEJRVXc3VVVGRFNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlFVRXNRMEZCUXp0SlFVZEdMSFZDUVVGSkxFZEJRVW9zVlVGQlN5eEpRVUZKTzFGQlEwd3NTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVVZ5UWl4UFFVRlBMRWRCUVVjc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRFZDeFBRVUZQTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1lVRkRia0k3YVVKQlEwazdaMEpCUTBRc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRemxDTzFOQlEwbzdVVUZGUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlFVRXNRMEZCUXp0SlFYVkNSaXcyUWtGQlZTeEhRVUZXTEZWQlFWY3NTVUZCU1R0UlFVTllMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUjBZc05rSkJRVlVzUjBGQlZpeFZRVUZYTEVsQlFVazdVVUZEV0N4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlJUTkNMRk5CUVZNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzSkNMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhEUVVGRE8xRkJSVVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEpRVU14UXl4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVkR0xITkNRVUZITEVkQlFVZzdVVUZEU1N4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzFGQlEzSkNMRWxCUVVrc1IwRkJSeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5rTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJZN1VVRkZSQ3hQUVVGUExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTNSQ0xFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRPMU5CUTJ4Q08xRkJSVVFzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGQlFTeERRVUZETzBsQlIwWXNjMEpCUVVjc1IwRkJTRHRSUVVOSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRja0lzU1VGQlNTeEhRVUZITEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFpqdFJRVVZFTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGRrSXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03VTBGRGJrSTdVVUZGUkN4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGNFSXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkpSaXd5UWtGQlVTeEhRVUZTTzFGQlEwa3NUMEZCVHl4SlFVRkpMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU01UWl4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVkR0xIVkNRVUZKTEVkQlFVb3NWVUZCU3l4RlFVRkZPMUZCUTBnc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJRenRSUVVNdlFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eExRVUZMTEVsQlFVa3NSVUZCUlR0WlFVTm9ReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEV2p0SlFVTk1MRU5CUVVNN1NVRkJRU3hEUVVGRE8wbEJSMFlzZDBKQlFVc3NSMEZCVEN4VlFVRk5MRVZCUVVVN1VVRkRTaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRE8xRkJReTlDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTJoRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTmFPMGxCUTB3c1EwRkJRenRKUVVGQkxFTkJRVU03U1VGSFJpeDVRa0ZCVFN4SFFVRk9MRlZCUVU4c1NVRkJTU3hGUVVGRkxFZEJRVWM3VVVGRFdpeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFJRVVV6UWl4UFFVRlBMRWRCUVVjc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRFZDeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJRenRuUWtGRGJrSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1lVRkRaanRaUVVORUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRekZDTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTTVRanRSUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJFUXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3WjBKQlEzcENMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRek5DTEU5QlFVOHNTVUZCU1N4RFFVRkRPMkZCUTJZN1UwRkRTanRSUVVWRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNelFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVU5PTEdWQlFVTTdRVUZCUkN4RFFVRkRMRUZCTlVsRUxFbEJORWxETzBGQk5VbFpMRFJDUVVGUk8wRkJOa2x5UWp0SlFVbEpMR3RDUVVGWkxFbEJRVWs3VVVGRFdpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVONFFpeERRVUZETzBsQlJVUXNkVUpCUVVrc1IwRkJTanRSUVVOSkxFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRE5VUXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkpSaXgxUWtGQlNTeEhRVUZLTzFGQlEwa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU4yUWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXp0WlFVTTFRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEpRVUZKTEVWQlFVVTdaMEpCUTJZc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTjJRanRUUVVOS08yRkJRMGs3V1VGRFJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJUdG5Ra0ZITjBJc1NVRkJTU3hKUVVGSkxFTkJRVU03WjBKQlExUXNSMEZCUnp0dlFrRkRReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0dlFrRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJSVHQzUWtGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPM0ZDUVVONFF6dDVRa0ZEU1R0M1FrRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXp0M1FrRkRjRUlzVFVGQlRUdHhRa0ZEVkR0cFFrRkRTaXhSUVVGUkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSVHRoUVVONlF6dHBRa0ZEU1R0blFrRkZSQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WjBKQlEyNURMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVOeVF6dFRRVU5LTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTTFSQ3hEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWxHTEhWQ1FVRkpMRWRCUVVvN1VVRkRTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRelZDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRWxCUVVrc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRM1pDTzFOQlEwbzdZVUZEU1R0WlFVTkVMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMmRDUVVNMVFpeEpRVUZKTEVsQlFVa3NRMEZCUXp0blFrRkRWQ3hIUVVGSE8yOUNRVU5ETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8yOUNRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTzNkQ1FVTjRRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03Y1VKQlEzaERPM2xDUVVOSk8zZENRVU5FTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8zZENRVU53UWl4TlFVRk5PM0ZDUVVOVU8ybENRVU5LTEZGQlFWRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzJGQlEzaERPMmxDUVVOSk8yZENRVU5FTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0blFrRkRia01zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEzQkRPMU5CUTBvN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUlVZc01rSkJRVkVzUjBGQlVpeFZRVUZUTEV0QlFVczdVVUZEVml4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEzaENMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpWQ0xFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMU5CUTNSQ08xRkJRMFFzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVUZCTEVOQlFVTTdTVUZGUml3eVFrRkJVU3hIUVVGU0xGVkJRVk1zUzBGQlN6dFJRVU5XTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGVrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdXVUZETlVJc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdVMEZEZGtJN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVU5PTEdWQlFVTTdRVUZCUkN4RFFVRkRMRUZCT1VaRUxFbEJPRVpETzBGQk9VWlpMRFJDUVVGUk8wRkJaMGR5UWp0SlFVdEpMR05CUVZrc1NVRkJTVHRSUVVOYUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGRlJDeDNRa0ZCVXl4SFFVRlVMRlZCUVZVc1IwRkJSenRSUVVOVUxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNoRExFTkJRVU03U1VGQlFTeERRVUZETzBsQlJVWXNkMEpCUVZNc1IwRkJWQ3hWUVVGVkxFZEJRVWNzUlVGQlJTeEhRVUZITzFGQlEyUXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRUQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0VFFVTndRanRoUVVOSk8xbEJRMFFzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1UwRkRia0k3U1VGRFRDeERRVUZETzBsQlFVRXNRMEZCUXp0SlFVTk9MRmRCUVVNN1FVRkJSQ3hEUVVGRExFRkJlRUpFTEVsQmQwSkRPMEZCUlVRN1NVRkJLMElzTUVKQlFWRTdTVUZMYmtNc1owSkJRVmtzVlVGQmEwTTdVVUZCT1VNc1dVRkRTU3hwUWtGQlR5eFRRVWxXTzFGQlNFY3NTMEZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRGJFSXNTMEZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhWUVVGVkxFTkJRVU03VVVGRE9VSXNTMEZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03TzBsQlEyeENMRU5CUVVNN1NVRkhSQ3gxUWtGQlRTeEhRVUZPTEZWQlFVOHNTVUZCU1R0UlFVTlFMRWxCUVVrc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVVZvUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlJYSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTllMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFRRVU5tTzJGQlEwazdXVUZEUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVVXZRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEYUVJc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETzFsQlIycENMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU5rTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenRaUVVObUxFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTmlMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1IwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUjNaQ0xFOUJRVThzU1VGQlNTeEZRVUZGTzJkQ1FVTlVMRWxCUVVrc1NVRkJTU3hMUVVGTExFbEJRVWtzUlVGQlJUdHZRa0ZGWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdiMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU4yUWl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5ZTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRwUWtGRFpqdHhRa0ZEU1N4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVVMVJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGFFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETzI5Q1FVTjBRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNN2FVSkJRekZDTzJkQ1FVZEVMRWxCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzI5Q1FVTjZReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRVZCUVVVc1EwRkJRenR2UWtGRk5VSXNTVUZCU1N4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0M1FrRkROVUlzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8zRkNRVU40UkR0NVFrRkRTVHQzUWtGRFJDeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlEzaEVPMmxDUVVOS08yZENRVVZFTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGSE5VTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU5ZTEUxQlFVMDdhVUpCUTFRN1owSkJSVVFzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXp0blFrRkRXQ3hIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkhaQ3hKUVVGSkxFVkJRVVVzUzBGQlN5eEpRVUZKTEVWQlFVVTdiMEpCUTJJc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF6dHBRa0ZEV2p0blFrRkRSQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTlFMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03WjBKQlExUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZET1VJN1dVRkhSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1UwRkRNMEk3VVVGSFJDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRmRrSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWRHTEhWQ1FVRk5MRWRCUVU0c1ZVRkJUeXhKUVVGSk8xRkJRMUFzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSVHRaUVVOeVFpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRSUVVWRUxFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJReTlDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRGVFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMklzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJRc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVZtTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlFVVTdXVUZEYWtNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlIyWXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOUUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdXVUZEVkN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVXpRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGTlVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZIWkN4SlFVRkpMRWRCUVVjc1MwRkJTeXhEUVVGRExFVkJRVVU3WjBKQlExZ3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRoUVVOb1FqdFpRVWRFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRemRFTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRGNrTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRM3BETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzI5Q1FVTjBRaXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzJsQ1FVTldPM0ZDUVVOSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVNelF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdiMEpCUTJwRExFbEJRVWtzVDBGQlR5eExRVUZMTEVsQlFVa3NSVUZCUlR0M1FrRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJUczBRa0ZGY2tZc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdORUpCUTJRc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdORUpCUTI1Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPM2xDUVVOdVFqczJRa0ZEU1RzMFFrRkRSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJRenMwUWtGRk1VSXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUTBGRGVFTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6czJRa0ZEY2tRN2FVTkJRMGtzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZPMmREUVVNNVF5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE96WkNRVU55UkRzMFFrRkhSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96UkNRVU0zUWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6czBRa0ZEWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6czBRa0ZEYUVJc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPelJDUVVOeVFpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU03ZVVKQlEzcENPM0ZDUVVOS08ybENRVU5LTzJGQlEwbzdVMEZEU2p0UlFVZEVMRWxCUVVrc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5vUWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VTBGRFpqdFJRVWRFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU40UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEzSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTXhRanRSUVVWRUxFOUJRVThzUzBGQlN5eExRVUZMTEVsQlFVa3NRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVVZMTEdGQlFVMHNSMEZCWWl4VlFVRmpMRWxCUVVrN1VVRkRaQ3hQUVVGUExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenRKUVVOeVF5eERRVUZETzBsQlJVMHNiMEpCUVdFc1IwRkJjRUlzVlVGQmNVSXNTVUZCU1N4RlFVRkZMRWRCUVVjN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJXaERMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUldwQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3h2UWtGQllTeEhRVUZ3UWl4VlFVRnhRaXhKUVVGSkxFVkJRVVVzUjBGQlJ6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUlN4UFFVRlBMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpORExFTkJRVU03U1VGRFRDeGhRVUZETzBGQlFVUXNRMEZCUXl4QlFYSk5SQ3hEUVVFclFpeFJRVUZSTEVkQmNVMTBRenRCUVhKTldTeDNRa0ZCVFNKOSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgdnBzY18xID0gcmVxdWlyZShcIi4vdnBzY1wiKTtcclxudmFyIHJidHJlZV8xID0gcmVxdWlyZShcIi4vcmJ0cmVlXCIpO1xyXG5mdW5jdGlvbiBjb21wdXRlR3JvdXBCb3VuZHMoZykge1xyXG4gICAgZy5ib3VuZHMgPSB0eXBlb2YgZy5sZWF2ZXMgIT09IFwidW5kZWZpbmVkXCIgP1xyXG4gICAgICAgIGcubGVhdmVzLnJlZHVjZShmdW5jdGlvbiAociwgYykgeyByZXR1cm4gYy5ib3VuZHMudW5pb24ocik7IH0sIFJlY3RhbmdsZS5lbXB0eSgpKSA6XHJcbiAgICAgICAgUmVjdGFuZ2xlLmVtcHR5KCk7XHJcbiAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSBcInVuZGVmaW5lZFwiKVxyXG4gICAgICAgIGcuYm91bmRzID0gZy5ncm91cHMucmVkdWNlKGZ1bmN0aW9uIChyLCBjKSB7IHJldHVybiBjb21wdXRlR3JvdXBCb3VuZHMoYykudW5pb24ocik7IH0sIGcuYm91bmRzKTtcclxuICAgIGcuYm91bmRzID0gZy5ib3VuZHMuaW5mbGF0ZShnLnBhZGRpbmcpO1xyXG4gICAgcmV0dXJuIGcuYm91bmRzO1xyXG59XHJcbmV4cG9ydHMuY29tcHV0ZUdyb3VwQm91bmRzID0gY29tcHV0ZUdyb3VwQm91bmRzO1xyXG52YXIgUmVjdGFuZ2xlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFJlY3RhbmdsZSh4LCBYLCB5LCBZKSB7XHJcbiAgICAgICAgdGhpcy54ID0geDtcclxuICAgICAgICB0aGlzLlggPSBYO1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy5ZID0gWTtcclxuICAgIH1cclxuICAgIFJlY3RhbmdsZS5lbXB0eSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBSZWN0YW5nbGUoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTsgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUuY3ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy54ICsgdGhpcy5YKSAvIDI7IH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRoaXMueSArIHRoaXMuWSkgLyAyOyB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5vdmVybGFwWCA9IGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgdmFyIHV4ID0gdGhpcy5jeCgpLCB2eCA9IHIuY3goKTtcclxuICAgICAgICBpZiAodXggPD0gdnggJiYgci54IDwgdGhpcy5YKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5YIC0gci54O1xyXG4gICAgICAgIGlmICh2eCA8PSB1eCAmJiB0aGlzLnggPCByLlgpXHJcbiAgICAgICAgICAgIHJldHVybiByLlggLSB0aGlzLng7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5vdmVybGFwWSA9IGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgdmFyIHV5ID0gdGhpcy5jeSgpLCB2eSA9IHIuY3koKTtcclxuICAgICAgICBpZiAodXkgPD0gdnkgJiYgci55IDwgdGhpcy5ZKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ZIC0gci55O1xyXG4gICAgICAgIGlmICh2eSA8PSB1eSAmJiB0aGlzLnkgPCByLlkpXHJcbiAgICAgICAgICAgIHJldHVybiByLlkgLSB0aGlzLnk7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5zZXRYQ2VudHJlID0gZnVuY3Rpb24gKGN4KSB7XHJcbiAgICAgICAgdmFyIGR4ID0gY3ggLSB0aGlzLmN4KCk7XHJcbiAgICAgICAgdGhpcy54ICs9IGR4O1xyXG4gICAgICAgIHRoaXMuWCArPSBkeDtcclxuICAgIH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLnNldFlDZW50cmUgPSBmdW5jdGlvbiAoY3kpIHtcclxuICAgICAgICB2YXIgZHkgPSBjeSAtIHRoaXMuY3koKTtcclxuICAgICAgICB0aGlzLnkgKz0gZHk7XHJcbiAgICAgICAgdGhpcy5ZICs9IGR5O1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUud2lkdGggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuWCAtIHRoaXMueDtcclxuICAgIH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLmhlaWdodCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ZIC0gdGhpcy55O1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUudW5pb24gPSBmdW5jdGlvbiAocikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKE1hdGgubWluKHRoaXMueCwgci54KSwgTWF0aC5tYXgodGhpcy5YLCByLlgpLCBNYXRoLm1pbih0aGlzLnksIHIueSksIE1hdGgubWF4KHRoaXMuWSwgci5ZKSk7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5saW5lSW50ZXJzZWN0aW9ucyA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBzaWRlcyA9IFtbdGhpcy54LCB0aGlzLnksIHRoaXMuWCwgdGhpcy55XSxcclxuICAgICAgICAgICAgW3RoaXMuWCwgdGhpcy55LCB0aGlzLlgsIHRoaXMuWV0sXHJcbiAgICAgICAgICAgIFt0aGlzLlgsIHRoaXMuWSwgdGhpcy54LCB0aGlzLlldLFxyXG4gICAgICAgICAgICBbdGhpcy54LCB0aGlzLlksIHRoaXMueCwgdGhpcy55XV07XHJcbiAgICAgICAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgciA9IFJlY3RhbmdsZS5saW5lSW50ZXJzZWN0aW9uKHgxLCB5MSwgeDIsIHkyLCBzaWRlc1tpXVswXSwgc2lkZXNbaV1bMV0sIHNpZGVzW2ldWzJdLCBzaWRlc1tpXVszXSk7XHJcbiAgICAgICAgICAgIGlmIChyICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKHsgeDogci54LCB5OiByLnkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb25zO1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUucmF5SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBpbnRzID0gdGhpcy5saW5lSW50ZXJzZWN0aW9ucyh0aGlzLmN4KCksIHRoaXMuY3koKSwgeDIsIHkyKTtcclxuICAgICAgICByZXR1cm4gaW50cy5sZW5ndGggPiAwID8gaW50c1swXSA6IG51bGw7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS52ZXJ0aWNlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7IHg6IHRoaXMueCwgeTogdGhpcy55IH0sXHJcbiAgICAgICAgICAgIHsgeDogdGhpcy5YLCB5OiB0aGlzLnkgfSxcclxuICAgICAgICAgICAgeyB4OiB0aGlzLlgsIHk6IHRoaXMuWSB9LFxyXG4gICAgICAgICAgICB7IHg6IHRoaXMueCwgeTogdGhpcy5ZIH1cclxuICAgICAgICBdO1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5saW5lSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xyXG4gICAgICAgIHZhciBkeDEyID0geDIgLSB4MSwgZHgzNCA9IHg0IC0geDMsIGR5MTIgPSB5MiAtIHkxLCBkeTM0ID0geTQgLSB5MywgZGVub21pbmF0b3IgPSBkeTM0ICogZHgxMiAtIGR4MzQgKiBkeTEyO1xyXG4gICAgICAgIGlmIChkZW5vbWluYXRvciA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB2YXIgZHgzMSA9IHgxIC0geDMsIGR5MzEgPSB5MSAtIHkzLCBudW1hID0gZHgzNCAqIGR5MzEgLSBkeTM0ICogZHgzMSwgYSA9IG51bWEgLyBkZW5vbWluYXRvciwgbnVtYiA9IGR4MTIgKiBkeTMxIC0gZHkxMiAqIGR4MzEsIGIgPSBudW1iIC8gZGVub21pbmF0b3I7XHJcbiAgICAgICAgaWYgKGEgPj0gMCAmJiBhIDw9IDEgJiYgYiA+PSAwICYmIGIgPD0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgeDogeDEgKyBhICogZHgxMixcclxuICAgICAgICAgICAgICAgIHk6IHkxICsgYSAqIGR5MTJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5pbmZsYXRlID0gZnVuY3Rpb24gKHBhZCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKHRoaXMueCAtIHBhZCwgdGhpcy5YICsgcGFkLCB0aGlzLnkgLSBwYWQsIHRoaXMuWSArIHBhZCk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlY3RhbmdsZTtcclxufSgpKTtcclxuZXhwb3J0cy5SZWN0YW5nbGUgPSBSZWN0YW5nbGU7XHJcbmZ1bmN0aW9uIG1ha2VFZGdlQmV0d2Vlbihzb3VyY2UsIHRhcmdldCwgYWgpIHtcclxuICAgIHZhciBzaSA9IHNvdXJjZS5yYXlJbnRlcnNlY3Rpb24odGFyZ2V0LmN4KCksIHRhcmdldC5jeSgpKSB8fCB7IHg6IHNvdXJjZS5jeCgpLCB5OiBzb3VyY2UuY3koKSB9LCB0aSA9IHRhcmdldC5yYXlJbnRlcnNlY3Rpb24oc291cmNlLmN4KCksIHNvdXJjZS5jeSgpKSB8fCB7IHg6IHRhcmdldC5jeCgpLCB5OiB0YXJnZXQuY3koKSB9LCBkeCA9IHRpLnggLSBzaS54LCBkeSA9IHRpLnkgLSBzaS55LCBsID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSwgYWwgPSBsIC0gYWg7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNvdXJjZUludGVyc2VjdGlvbjogc2ksXHJcbiAgICAgICAgdGFyZ2V0SW50ZXJzZWN0aW9uOiB0aSxcclxuICAgICAgICBhcnJvd1N0YXJ0OiB7IHg6IHNpLnggKyBhbCAqIGR4IC8gbCwgeTogc2kueSArIGFsICogZHkgLyBsIH1cclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5tYWtlRWRnZUJldHdlZW4gPSBtYWtlRWRnZUJldHdlZW47XHJcbmZ1bmN0aW9uIG1ha2VFZGdlVG8ocywgdGFyZ2V0LCBhaCkge1xyXG4gICAgdmFyIHRpID0gdGFyZ2V0LnJheUludGVyc2VjdGlvbihzLngsIHMueSk7XHJcbiAgICBpZiAoIXRpKVxyXG4gICAgICAgIHRpID0geyB4OiB0YXJnZXQuY3goKSwgeTogdGFyZ2V0LmN5KCkgfTtcclxuICAgIHZhciBkeCA9IHRpLnggLSBzLngsIGR5ID0gdGkueSAtIHMueSwgbCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgICByZXR1cm4geyB4OiB0aS54IC0gYWggKiBkeCAvIGwsIHk6IHRpLnkgLSBhaCAqIGR5IC8gbCB9O1xyXG59XHJcbmV4cG9ydHMubWFrZUVkZ2VUbyA9IG1ha2VFZGdlVG87XHJcbnZhciBOb2RlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIE5vZGUodiwgciwgcG9zKSB7XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLnIgPSByO1xyXG4gICAgICAgIHRoaXMucG9zID0gcG9zO1xyXG4gICAgICAgIHRoaXMucHJldiA9IG1ha2VSQlRyZWUoKTtcclxuICAgICAgICB0aGlzLm5leHQgPSBtYWtlUkJUcmVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTm9kZTtcclxufSgpKTtcclxudmFyIEV2ZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEV2ZW50KGlzT3BlbiwgdiwgcG9zKSB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLnBvcyA9IHBvcztcclxuICAgIH1cclxuICAgIHJldHVybiBFdmVudDtcclxufSgpKTtcclxuZnVuY3Rpb24gY29tcGFyZUV2ZW50cyhhLCBiKSB7XHJcbiAgICBpZiAoYS5wb3MgPiBiLnBvcykge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGEucG9zIDwgYi5wb3MpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoYS5pc09wZW4pIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoYi5pc09wZW4pIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG59XHJcbmZ1bmN0aW9uIG1ha2VSQlRyZWUoKSB7XHJcbiAgICByZXR1cm4gbmV3IHJidHJlZV8xLlJCVHJlZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb3MgLSBiLnBvczsgfSk7XHJcbn1cclxudmFyIHhSZWN0ID0ge1xyXG4gICAgZ2V0Q2VudHJlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5jeCgpOyB9LFxyXG4gICAgZ2V0T3BlbjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIueTsgfSxcclxuICAgIGdldENsb3NlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5ZOyB9LFxyXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIud2lkdGgoKTsgfSxcclxuICAgIG1ha2VSZWN0OiBmdW5jdGlvbiAob3BlbiwgY2xvc2UsIGNlbnRlciwgc2l6ZSkgeyByZXR1cm4gbmV3IFJlY3RhbmdsZShjZW50ZXIgLSBzaXplIC8gMiwgY2VudGVyICsgc2l6ZSAvIDIsIG9wZW4sIGNsb3NlKTsgfSxcclxuICAgIGZpbmROZWlnaGJvdXJzOiBmaW5kWE5laWdoYm91cnNcclxufTtcclxudmFyIHlSZWN0ID0ge1xyXG4gICAgZ2V0Q2VudHJlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5jeSgpOyB9LFxyXG4gICAgZ2V0T3BlbjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIueDsgfSxcclxuICAgIGdldENsb3NlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5YOyB9LFxyXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIuaGVpZ2h0KCk7IH0sXHJcbiAgICBtYWtlUmVjdDogZnVuY3Rpb24gKG9wZW4sIGNsb3NlLCBjZW50ZXIsIHNpemUpIHsgcmV0dXJuIG5ldyBSZWN0YW5nbGUob3BlbiwgY2xvc2UsIGNlbnRlciAtIHNpemUgLyAyLCBjZW50ZXIgKyBzaXplIC8gMik7IH0sXHJcbiAgICBmaW5kTmVpZ2hib3VyczogZmluZFlOZWlnaGJvdXJzXHJcbn07XHJcbmZ1bmN0aW9uIGdlbmVyYXRlR3JvdXBDb25zdHJhaW50cyhyb290LCBmLCBtaW5TZXAsIGlzQ29udGFpbmVkKSB7XHJcbiAgICBpZiAoaXNDb250YWluZWQgPT09IHZvaWQgMCkgeyBpc0NvbnRhaW5lZCA9IGZhbHNlOyB9XHJcbiAgICB2YXIgcGFkZGluZyA9IHJvb3QucGFkZGluZywgZ24gPSB0eXBlb2Ygcm9vdC5ncm91cHMgIT09ICd1bmRlZmluZWQnID8gcm9vdC5ncm91cHMubGVuZ3RoIDogMCwgbG4gPSB0eXBlb2Ygcm9vdC5sZWF2ZXMgIT09ICd1bmRlZmluZWQnID8gcm9vdC5sZWF2ZXMubGVuZ3RoIDogMCwgY2hpbGRDb25zdHJhaW50cyA9ICFnbiA/IFtdXHJcbiAgICAgICAgOiByb290Lmdyb3Vwcy5yZWR1Y2UoZnVuY3Rpb24gKGNjcywgZykgeyByZXR1cm4gY2NzLmNvbmNhdChnZW5lcmF0ZUdyb3VwQ29uc3RyYWludHMoZywgZiwgbWluU2VwLCB0cnVlKSk7IH0sIFtdKSwgbiA9IChpc0NvbnRhaW5lZCA/IDIgOiAwKSArIGxuICsgZ24sIHZzID0gbmV3IEFycmF5KG4pLCBycyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIGFkZCA9IGZ1bmN0aW9uIChyLCB2KSB7IHJzW2ldID0gcjsgdnNbaSsrXSA9IHY7IH07XHJcbiAgICBpZiAoaXNDb250YWluZWQpIHtcclxuICAgICAgICB2YXIgYiA9IHJvb3QuYm91bmRzLCBjID0gZi5nZXRDZW50cmUoYiksIHMgPSBmLmdldFNpemUoYikgLyAyLCBvcGVuID0gZi5nZXRPcGVuKGIpLCBjbG9zZSA9IGYuZ2V0Q2xvc2UoYiksIG1pbiA9IGMgLSBzICsgcGFkZGluZyAvIDIsIG1heCA9IGMgKyBzIC0gcGFkZGluZyAvIDI7XHJcbiAgICAgICAgcm9vdC5taW5WYXIuZGVzaXJlZFBvc2l0aW9uID0gbWluO1xyXG4gICAgICAgIGFkZChmLm1ha2VSZWN0KG9wZW4sIGNsb3NlLCBtaW4sIHBhZGRpbmcpLCByb290Lm1pblZhcik7XHJcbiAgICAgICAgcm9vdC5tYXhWYXIuZGVzaXJlZFBvc2l0aW9uID0gbWF4O1xyXG4gICAgICAgIGFkZChmLm1ha2VSZWN0KG9wZW4sIGNsb3NlLCBtYXgsIHBhZGRpbmcpLCByb290Lm1heFZhcik7XHJcbiAgICB9XHJcbiAgICBpZiAobG4pXHJcbiAgICAgICAgcm9vdC5sZWF2ZXMuZm9yRWFjaChmdW5jdGlvbiAobCkgeyByZXR1cm4gYWRkKGwuYm91bmRzLCBsLnZhcmlhYmxlKTsgfSk7XHJcbiAgICBpZiAoZ24pXHJcbiAgICAgICAgcm9vdC5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGcuYm91bmRzO1xyXG4gICAgICAgICAgICBhZGQoZi5tYWtlUmVjdChmLmdldE9wZW4oYiksIGYuZ2V0Q2xvc2UoYiksIGYuZ2V0Q2VudHJlKGIpLCBmLmdldFNpemUoYikpLCBnLm1pblZhcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB2YXIgY3MgPSBnZW5lcmF0ZUNvbnN0cmFpbnRzKHJzLCB2cywgZiwgbWluU2VwKTtcclxuICAgIGlmIChnbikge1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgdi5jT3V0ID0gW10sIHYuY0luID0gW107IH0pO1xyXG4gICAgICAgIGNzLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgYy5sZWZ0LmNPdXQucHVzaChjKSwgYy5yaWdodC5jSW4ucHVzaChjKTsgfSk7XHJcbiAgICAgICAgcm9vdC5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgZ2FwQWRqdXN0bWVudCA9IChnLnBhZGRpbmcgLSBmLmdldFNpemUoZy5ib3VuZHMpKSAvIDI7XHJcbiAgICAgICAgICAgIGcubWluVmFyLmNJbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmdhcCArPSBnYXBBZGp1c3RtZW50OyB9KTtcclxuICAgICAgICAgICAgZy5taW5WYXIuY091dC5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IGMubGVmdCA9IGcubWF4VmFyOyBjLmdhcCArPSBnYXBBZGp1c3RtZW50OyB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjaGlsZENvbnN0cmFpbnRzLmNvbmNhdChjcyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVDb25zdHJhaW50cyhycywgdmFycywgcmVjdCwgbWluU2VwKSB7XHJcbiAgICB2YXIgaSwgbiA9IHJzLmxlbmd0aDtcclxuICAgIHZhciBOID0gMiAqIG47XHJcbiAgICBjb25zb2xlLmFzc2VydCh2YXJzLmxlbmd0aCA+PSBuKTtcclxuICAgIHZhciBldmVudHMgPSBuZXcgQXJyYXkoTik7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHIgPSByc1tpXTtcclxuICAgICAgICB2YXIgdiA9IG5ldyBOb2RlKHZhcnNbaV0sIHIsIHJlY3QuZ2V0Q2VudHJlKHIpKTtcclxuICAgICAgICBldmVudHNbaV0gPSBuZXcgRXZlbnQodHJ1ZSwgdiwgcmVjdC5nZXRPcGVuKHIpKTtcclxuICAgICAgICBldmVudHNbaSArIG5dID0gbmV3IEV2ZW50KGZhbHNlLCB2LCByZWN0LmdldENsb3NlKHIpKTtcclxuICAgIH1cclxuICAgIGV2ZW50cy5zb3J0KGNvbXBhcmVFdmVudHMpO1xyXG4gICAgdmFyIGNzID0gbmV3IEFycmF5KCk7XHJcbiAgICB2YXIgc2NhbmxpbmUgPSBtYWtlUkJUcmVlKCk7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgKytpKSB7XHJcbiAgICAgICAgdmFyIGUgPSBldmVudHNbaV07XHJcbiAgICAgICAgdmFyIHYgPSBlLnY7XHJcbiAgICAgICAgaWYgKGUuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHNjYW5saW5lLmluc2VydCh2KTtcclxuICAgICAgICAgICAgcmVjdC5maW5kTmVpZ2hib3Vycyh2LCBzY2FubGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzY2FubGluZS5yZW1vdmUodik7XHJcbiAgICAgICAgICAgIHZhciBtYWtlQ29uc3RyYWludCA9IGZ1bmN0aW9uIChsLCByKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VwID0gKHJlY3QuZ2V0U2l6ZShsLnIpICsgcmVjdC5nZXRTaXplKHIucikpIC8gMiArIG1pblNlcDtcclxuICAgICAgICAgICAgICAgIGNzLnB1c2gobmV3IHZwc2NfMS5Db25zdHJhaW50KGwudiwgci52LCBzZXApKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIHZpc2l0TmVpZ2hib3VycyA9IGZ1bmN0aW9uIChmb3J3YXJkLCByZXZlcnNlLCBta2Nvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHUsIGl0ID0gdltmb3J3YXJkXS5pdGVyYXRvcigpO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKCh1ID0gaXRbZm9yd2FyZF0oKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBta2Nvbih1LCB2KTtcclxuICAgICAgICAgICAgICAgICAgICB1W3JldmVyc2VdLnJlbW92ZSh2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmlzaXROZWlnaGJvdXJzKFwicHJldlwiLCBcIm5leHRcIiwgZnVuY3Rpb24gKHUsIHYpIHsgcmV0dXJuIG1ha2VDb25zdHJhaW50KHUsIHYpOyB9KTtcclxuICAgICAgICAgICAgdmlzaXROZWlnaGJvdXJzKFwibmV4dFwiLCBcInByZXZcIiwgZnVuY3Rpb24gKHUsIHYpIHsgcmV0dXJuIG1ha2VDb25zdHJhaW50KHYsIHUpOyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmFzc2VydChzY2FubGluZS5zaXplID09PSAwKTtcclxuICAgIHJldHVybiBjcztcclxufVxyXG5mdW5jdGlvbiBmaW5kWE5laWdoYm91cnModiwgc2NhbmxpbmUpIHtcclxuICAgIHZhciBmID0gZnVuY3Rpb24gKGZvcndhcmQsIHJldmVyc2UpIHtcclxuICAgICAgICB2YXIgaXQgPSBzY2FubGluZS5maW5kSXRlcih2KTtcclxuICAgICAgICB2YXIgdTtcclxuICAgICAgICB3aGlsZSAoKHUgPSBpdFtmb3J3YXJkXSgpKSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgdW92ZXJ2WCA9IHUuci5vdmVybGFwWCh2LnIpO1xyXG4gICAgICAgICAgICBpZiAodW92ZXJ2WCA8PSAwIHx8IHVvdmVydlggPD0gdS5yLm92ZXJsYXBZKHYucikpIHtcclxuICAgICAgICAgICAgICAgIHZbZm9yd2FyZF0uaW5zZXJ0KHUpO1xyXG4gICAgICAgICAgICAgICAgdVtyZXZlcnNlXS5pbnNlcnQodik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHVvdmVydlggPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZihcIm5leHRcIiwgXCJwcmV2XCIpO1xyXG4gICAgZihcInByZXZcIiwgXCJuZXh0XCIpO1xyXG59XHJcbmZ1bmN0aW9uIGZpbmRZTmVpZ2hib3Vycyh2LCBzY2FubGluZSkge1xyXG4gICAgdmFyIGYgPSBmdW5jdGlvbiAoZm9yd2FyZCwgcmV2ZXJzZSkge1xyXG4gICAgICAgIHZhciB1ID0gc2NhbmxpbmUuZmluZEl0ZXIodilbZm9yd2FyZF0oKTtcclxuICAgICAgICBpZiAodSAhPT0gbnVsbCAmJiB1LnIub3ZlcmxhcFgodi5yKSA+IDApIHtcclxuICAgICAgICAgICAgdltmb3J3YXJkXS5pbnNlcnQodSk7XHJcbiAgICAgICAgICAgIHVbcmV2ZXJzZV0uaW5zZXJ0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmKFwibmV4dFwiLCBcInByZXZcIik7XHJcbiAgICBmKFwicHJldlwiLCBcIm5leHRcIik7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVYQ29uc3RyYWludHMocnMsIHZhcnMpIHtcclxuICAgIHJldHVybiBnZW5lcmF0ZUNvbnN0cmFpbnRzKHJzLCB2YXJzLCB4UmVjdCwgMWUtNik7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZVhDb25zdHJhaW50cyA9IGdlbmVyYXRlWENvbnN0cmFpbnRzO1xyXG5mdW5jdGlvbiBnZW5lcmF0ZVlDb25zdHJhaW50cyhycywgdmFycykge1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlQ29uc3RyYWludHMocnMsIHZhcnMsIHlSZWN0LCAxZS02KTtcclxufVxyXG5leHBvcnRzLmdlbmVyYXRlWUNvbnN0cmFpbnRzID0gZ2VuZXJhdGVZQ29uc3RyYWludHM7XHJcbmZ1bmN0aW9uIGdlbmVyYXRlWEdyb3VwQ29uc3RyYWludHMocm9vdCkge1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlR3JvdXBDb25zdHJhaW50cyhyb290LCB4UmVjdCwgMWUtNik7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZVhHcm91cENvbnN0cmFpbnRzID0gZ2VuZXJhdGVYR3JvdXBDb25zdHJhaW50cztcclxuZnVuY3Rpb24gZ2VuZXJhdGVZR3JvdXBDb25zdHJhaW50cyhyb290KSB7XHJcbiAgICByZXR1cm4gZ2VuZXJhdGVHcm91cENvbnN0cmFpbnRzKHJvb3QsIHlSZWN0LCAxZS02KTtcclxufVxyXG5leHBvcnRzLmdlbmVyYXRlWUdyb3VwQ29uc3RyYWludHMgPSBnZW5lcmF0ZVlHcm91cENvbnN0cmFpbnRzO1xyXG5mdW5jdGlvbiByZW1vdmVPdmVybGFwcyhycykge1xyXG4gICAgdmFyIHZzID0gcnMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBuZXcgdnBzY18xLlZhcmlhYmxlKHIuY3goKSk7IH0pO1xyXG4gICAgdmFyIGNzID0gZ2VuZXJhdGVYQ29uc3RyYWludHMocnMsIHZzKTtcclxuICAgIHZhciBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgc29sdmVyLnNvbHZlKCk7XHJcbiAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiByc1tpXS5zZXRYQ2VudHJlKHYucG9zaXRpb24oKSk7IH0pO1xyXG4gICAgdnMgPSBycy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIG5ldyB2cHNjXzEuVmFyaWFibGUoci5jeSgpKTsgfSk7XHJcbiAgICBjcyA9IGdlbmVyYXRlWUNvbnN0cmFpbnRzKHJzLCB2cyk7XHJcbiAgICBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgc29sdmVyLnNvbHZlKCk7XHJcbiAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiByc1tpXS5zZXRZQ2VudHJlKHYucG9zaXRpb24oKSk7IH0pO1xyXG59XHJcbmV4cG9ydHMucmVtb3ZlT3ZlcmxhcHMgPSByZW1vdmVPdmVybGFwcztcclxudmFyIEluZGV4ZWRWYXJpYWJsZSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoSW5kZXhlZFZhcmlhYmxlLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gSW5kZXhlZFZhcmlhYmxlKGluZGV4LCB3KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgMCwgdykgfHwgdGhpcztcclxuICAgICAgICBfdGhpcy5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgIHJldHVybiBfdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBJbmRleGVkVmFyaWFibGU7XHJcbn0odnBzY18xLlZhcmlhYmxlKSk7XHJcbmV4cG9ydHMuSW5kZXhlZFZhcmlhYmxlID0gSW5kZXhlZFZhcmlhYmxlO1xyXG52YXIgUHJvamVjdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQcm9qZWN0aW9uKG5vZGVzLCBncm91cHMsIHJvb3RHcm91cCwgY29uc3RyYWludHMsIGF2b2lkT3ZlcmxhcHMpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmIChyb290R3JvdXAgPT09IHZvaWQgMCkgeyByb290R3JvdXAgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzID09PSB2b2lkIDApIHsgY29uc3RyYWludHMgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGF2b2lkT3ZlcmxhcHMgPT09IHZvaWQgMCkgeyBhdm9pZE92ZXJsYXBzID0gZmFsc2U7IH1cclxuICAgICAgICB0aGlzLm5vZGVzID0gbm9kZXM7XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSBncm91cHM7XHJcbiAgICAgICAgdGhpcy5yb290R3JvdXAgPSByb290R3JvdXA7XHJcbiAgICAgICAgdGhpcy5hdm9pZE92ZXJsYXBzID0gYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLnZhcmlhYmxlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdi52YXJpYWJsZSA9IG5ldyBJbmRleGVkVmFyaWFibGUoaSwgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzKVxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcclxuICAgICAgICBpZiAoYXZvaWRPdmVybGFwcyAmJiByb290R3JvdXAgJiYgdHlwZW9mIHJvb3RHcm91cC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdi53aWR0aCB8fCAhdi5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUodi54LCB2LngsIHYueSwgdi55KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgdzIgPSB2LndpZHRoIC8gMiwgaDIgPSB2LmhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUodi54IC0gdzIsIHYueCArIHcyLCB2LnkgLSBoMiwgdi55ICsgaDIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29tcHV0ZUdyb3VwQm91bmRzKHJvb3RHcm91cCk7XHJcbiAgICAgICAgICAgIHZhciBpID0gbm9kZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMudmFyaWFibGVzW2ldID0gZy5taW5WYXIgPSBuZXcgSW5kZXhlZFZhcmlhYmxlKGkrKywgdHlwZW9mIGcuc3RpZmZuZXNzICE9PSBcInVuZGVmaW5lZFwiID8gZy5zdGlmZm5lc3MgOiAwLjAxKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLnZhcmlhYmxlc1tpXSA9IGcubWF4VmFyID0gbmV3IEluZGV4ZWRWYXJpYWJsZShpKyssIHR5cGVvZiBnLnN0aWZmbmVzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IGcuc3RpZmZuZXNzIDogMC4wMSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLmNyZWF0ZVNlcGFyYXRpb24gPSBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIHJldHVybiBuZXcgdnBzY18xLkNvbnN0cmFpbnQodGhpcy5ub2Rlc1tjLmxlZnRdLnZhcmlhYmxlLCB0aGlzLm5vZGVzW2MucmlnaHRdLnZhcmlhYmxlLCBjLmdhcCwgdHlwZW9mIGMuZXF1YWxpdHkgIT09IFwidW5kZWZpbmVkXCIgPyBjLmVxdWFsaXR5IDogZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLm1ha2VGZWFzaWJsZSA9IGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIXRoaXMuYXZvaWRPdmVybGFwcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHZhciBheGlzID0gJ3gnLCBkaW0gPSAnd2lkdGgnO1xyXG4gICAgICAgIGlmIChjLmF4aXMgPT09ICd4JylcclxuICAgICAgICAgICAgYXhpcyA9ICd5JywgZGltID0gJ2hlaWdodCc7XHJcbiAgICAgICAgdmFyIHZzID0gYy5vZmZzZXRzLm1hcChmdW5jdGlvbiAobykgeyByZXR1cm4gX3RoaXMubm9kZXNbby5ub2RlXTsgfSkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYVtheGlzXSAtIGJbYXhpc107IH0pO1xyXG4gICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV4dFBvcyA9IHBbYXhpc10gKyBwW2RpbV07XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFBvcyA+IHZbYXhpc10pIHtcclxuICAgICAgICAgICAgICAgICAgICB2W2F4aXNdID0gbmV4dFBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwID0gdjtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVBbGlnbm1lbnQgPSBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHUgPSB0aGlzLm5vZGVzW2Mub2Zmc2V0c1swXS5ub2RlXS52YXJpYWJsZTtcclxuICAgICAgICB0aGlzLm1ha2VGZWFzaWJsZShjKTtcclxuICAgICAgICB2YXIgY3MgPSBjLmF4aXMgPT09ICd4JyA/IHRoaXMueENvbnN0cmFpbnRzIDogdGhpcy55Q29uc3RyYWludHM7XHJcbiAgICAgICAgYy5vZmZzZXRzLnNsaWNlKDEpLmZvckVhY2goZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICAgICAgdmFyIHYgPSBfdGhpcy5ub2Rlc1tvLm5vZGVdLnZhcmlhYmxlO1xyXG4gICAgICAgICAgICBjcy5wdXNoKG5ldyB2cHNjXzEuQ29uc3RyYWludCh1LCB2LCBvLm9mZnNldCwgdHJ1ZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLmNyZWF0ZUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgaXNTZXAgPSBmdW5jdGlvbiAoYykgeyByZXR1cm4gdHlwZW9mIGMudHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgYy50eXBlID09PSAnc2VwYXJhdGlvbic7IH07XHJcbiAgICAgICAgdGhpcy54Q29uc3RyYWludHMgPSBjb25zdHJhaW50c1xyXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmF4aXMgPT09IFwieFwiICYmIGlzU2VwKGMpOyB9KVxyXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5jcmVhdGVTZXBhcmF0aW9uKGMpOyB9KTtcclxuICAgICAgICB0aGlzLnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMuYXhpcyA9PT0gXCJ5XCIgJiYgaXNTZXAoYyk7IH0pXHJcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIF90aGlzLmNyZWF0ZVNlcGFyYXRpb24oYyk7IH0pO1xyXG4gICAgICAgIGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudHlwZSA9PT0gJ2FsaWdubWVudCc7IH0pXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5jcmVhdGVBbGlnbm1lbnQoYyk7IH0pO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLnNldHVwVmFyaWFibGVzQW5kQm91bmRzID0gZnVuY3Rpb24gKHgwLCB5MCwgZGVzaXJlZCwgZ2V0RGVzaXJlZCkge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICBpZiAodi5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgdi52YXJpYWJsZS53ZWlnaHQgPSB2LmZpeGVkV2VpZ2h0ID8gdi5maXhlZFdlaWdodCA6IDEwMDA7XHJcbiAgICAgICAgICAgICAgICBkZXNpcmVkW2ldID0gZ2V0RGVzaXJlZCh2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHYudmFyaWFibGUud2VpZ2h0ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgdyA9ICh2LndpZHRoIHx8IDApIC8gMiwgaCA9ICh2LmhlaWdodCB8fCAwKSAvIDI7XHJcbiAgICAgICAgICAgIHZhciBpeCA9IHgwW2ldLCBpeSA9IHkwW2ldO1xyXG4gICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUoaXggLSB3LCBpeCArIHcsIGl5IC0gaCwgaXkgKyBoKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS54UHJvamVjdCA9IGZ1bmN0aW9uICh4MCwgeTAsIHgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucm9vdEdyb3VwICYmICEodGhpcy5hdm9pZE92ZXJsYXBzIHx8IHRoaXMueENvbnN0cmFpbnRzKSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucHJvamVjdCh4MCwgeTAsIHgwLCB4LCBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5weDsgfSwgdGhpcy54Q29uc3RyYWludHMsIGdlbmVyYXRlWEdyb3VwQ29uc3RyYWludHMsIGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LmJvdW5kcy5zZXRYQ2VudHJlKHhbdi52YXJpYWJsZS5pbmRleF0gPSB2LnZhcmlhYmxlLnBvc2l0aW9uKCkpOyB9LCBmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgeG1pbiA9IHhbZy5taW5WYXIuaW5kZXhdID0gZy5taW5WYXIucG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdmFyIHhtYXggPSB4W2cubWF4VmFyLmluZGV4XSA9IGcubWF4VmFyLnBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciBwMiA9IGcucGFkZGluZyAvIDI7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLnggPSB4bWluIC0gcDI7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLlggPSB4bWF4ICsgcDI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgUHJvamVjdGlvbi5wcm90b3R5cGUueVByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHkwLCB5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RHcm91cCAmJiAhdGhpcy55Q29uc3RyYWludHMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb2plY3QoeDAsIHkwLCB5MCwgeSwgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucHk7IH0sIHRoaXMueUNvbnN0cmFpbnRzLCBnZW5lcmF0ZVlHcm91cENvbnN0cmFpbnRzLCBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5ib3VuZHMuc2V0WUNlbnRyZSh5W3YudmFyaWFibGUuaW5kZXhdID0gdi52YXJpYWJsZS5wb3NpdGlvbigpKTsgfSwgZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICAgICAgdmFyIHltaW4gPSB5W2cubWluVmFyLmluZGV4XSA9IGcubWluVmFyLnBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciB5bWF4ID0geVtnLm1heFZhci5pbmRleF0gPSBnLm1heFZhci5wb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB2YXIgcDIgPSBnLnBhZGRpbmcgLyAyO1xyXG4gICAgICAgICAgICBnLmJvdW5kcy55ID0geW1pbiAtIHAyO1xyXG4gICAgICAgICAgICA7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLlkgPSB5bWF4ICsgcDI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgUHJvamVjdGlvbi5wcm90b3R5cGUucHJvamVjdEZ1bmN0aW9ucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh4MCwgeTAsIHgpIHsgcmV0dXJuIF90aGlzLnhQcm9qZWN0KHgwLCB5MCwgeCk7IH0sXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh4MCwgeTAsIHkpIHsgcmV0dXJuIF90aGlzLnlQcm9qZWN0KHgwLCB5MCwgeSk7IH1cclxuICAgICAgICBdO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLnByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHkwLCBzdGFydCwgZGVzaXJlZCwgZ2V0RGVzaXJlZCwgY3MsIGdlbmVyYXRlQ29uc3RyYWludHMsIHVwZGF0ZU5vZGVCb3VuZHMsIHVwZGF0ZUdyb3VwQm91bmRzKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cFZhcmlhYmxlc0FuZEJvdW5kcyh4MCwgeTAsIGRlc2lyZWQsIGdldERlc2lyZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3RHcm91cCAmJiB0aGlzLmF2b2lkT3ZlcmxhcHMpIHtcclxuICAgICAgICAgICAgY29tcHV0ZUdyb3VwQm91bmRzKHRoaXMucm9vdEdyb3VwKTtcclxuICAgICAgICAgICAgY3MgPSBjcy5jb25jYXQoZ2VuZXJhdGVDb25zdHJhaW50cyh0aGlzLnJvb3RHcm91cCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvbHZlKHRoaXMudmFyaWFibGVzLCBjcywgc3RhcnQsIGRlc2lyZWQpO1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaCh1cGRhdGVOb2RlQm91bmRzKTtcclxuICAgICAgICBpZiAodGhpcy5yb290R3JvdXAgJiYgdGhpcy5hdm9pZE92ZXJsYXBzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2godXBkYXRlR3JvdXBCb3VuZHMpO1xyXG4gICAgICAgICAgICBjb21wdXRlR3JvdXBCb3VuZHModGhpcy5yb290R3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS5zb2x2ZSA9IGZ1bmN0aW9uICh2cywgY3MsIHN0YXJ0aW5nLCBkZXNpcmVkKSB7XHJcbiAgICAgICAgdmFyIHNvbHZlciA9IG5ldyB2cHNjXzEuU29sdmVyKHZzLCBjcyk7XHJcbiAgICAgICAgc29sdmVyLnNldFN0YXJ0aW5nUG9zaXRpb25zKHN0YXJ0aW5nKTtcclxuICAgICAgICBzb2x2ZXIuc2V0RGVzaXJlZFBvc2l0aW9ucyhkZXNpcmVkKTtcclxuICAgICAgICBzb2x2ZXIuc29sdmUoKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUHJvamVjdGlvbjtcclxufSgpKTtcclxuZXhwb3J0cy5Qcm9qZWN0aW9uID0gUHJvamVjdGlvbjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WamRHRnVaMnhsTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dlYyVmlRMjlzWVM5emNtTXZjbVZqZEdGdVoyeGxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN096dEJRVUZCTEN0Q1FVRnRSRHRCUVVOdVJDeHRRMEZCSzBJN1FVRnJRak5DTEZOQlFXZENMR3RDUVVGclFpeERRVUZETEVOQlFXdENPMGxCUTJwRUxFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzaERMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFVTXNRMEZCV1N4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGcVFpeERRVUZwUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVVc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBsQlEzUkNMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWYzdVVUZETDBJc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQll5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGRExFTkJRVmtzUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVGxDTEVOQlFUaENMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEzcEhMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEzWkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU53UWl4RFFVRkRPMEZCVWtRc1owUkJVVU03UVVGRlJEdEpRVU5KTEcxQ1FVTlhMRU5CUVZNc1JVRkRWQ3hEUVVGVExFVkJRMVFzUTBGQlV5eEZRVU5VTEVOQlFWTTdVVUZJVkN4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGUk8xRkJRMVFzVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCVVR0UlFVTlVMRTFCUVVNc1IwRkJSQ3hEUVVGRExFTkJRVkU3VVVGRFZDeE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRlJPMGxCUVVrc1EwRkJRenRKUVVWc1FpeGxRVUZMTEVkQlFWb3NZMEZCTkVJc1QwRkJUeXhKUVVGSkxGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hOUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk0wb3NjMEpCUVVVc1IwRkJSaXhqUVVGbExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlRsRExITkNRVUZGTEVkQlFVWXNZMEZCWlN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVU1UXl3MFFrRkJVU3hIUVVGU0xGVkJRVk1zUTBGQldUdFJRVU5xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRiRVFzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRc05FSkJRVkVzUjBGQlVpeFZRVUZUTEVOQlFWazdVVUZEYWtJc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVWRUxEaENRVUZWTEVkQlFWWXNWVUZCVnl4RlFVRlZPMUZCUTJwQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGVFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRFlpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRKUVVOcVFpeERRVUZETzBsQlJVUXNPRUpCUVZVc1IwRkJWaXhWUVVGWExFVkJRVlU3VVVGRGFrSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVTmlMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzBsQlEycENMRU5CUVVNN1NVRkZSQ3g1UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETTBJc1EwRkJRenRKUVVWRUxEQkNRVUZOTEVkQlFVNDdVVUZEU1N4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXpRaXhEUVVGRE8wbEJSVVFzZVVKQlFVc3NSMEZCVEN4VlFVRk5MRU5CUVZrN1VVRkRaQ3hQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55U0N4RFFVRkRPMGxCVjBRc2NVTkJRV2xDTEVkQlFXcENMRlZCUVd0Q0xFVkJRVlVzUlVGQlJTeEZRVUZWTEVWQlFVVXNSVUZCVlN4RlFVRkZMRVZCUVZVN1VVRkROVVFzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1lVRkJZU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRrY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTVHRuUWtGQlJTeGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFOQlF6RkVPMUZCUTBRc1QwRkJUeXhoUVVGaExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFWVkVMRzFEUVVGbExFZEJRV1lzVlVGQlowSXNSVUZCVlN4RlFVRkZMRVZCUVZVN1VVRkRiRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMmhGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlF6VkRMRU5CUVVNN1NVRkZSQ3cwUWtGQlVTeEhRVUZTTzFGQlEwa3NUMEZCVHp0WlFVTklMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRGVFSXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVONFFpeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZPMWxCUTNoQ0xFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVTdVMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGRlRTd3dRa0ZCWjBJc1IwRkJka0lzVlVGRFNTeEZRVUZWTEVWQlFVVXNSVUZCVlN4RlFVTjBRaXhGUVVGVkxFVkJRVVVzUlVGQlZTeEZRVU4wUWl4RlFVRlZMRVZCUVVVc1JVRkJWU3hGUVVOMFFpeEZRVUZWTEVWQlFVVXNSVUZCVlR0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRWxCUVVrc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVU01UWl4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeEpRVUZKTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkRPVUlzVjBGQlZ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU0xUXl4SlFVRkpMRmRCUVZjc1NVRkJTU3hEUVVGRE8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdVVUZEYkVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGRE9VSXNTVUZCU1N4SFFVRkhMRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVsQlFVa3NSVUZEYUVNc1EwRkJReXhIUVVGSExFbEJRVWtzUjBGQlJ5eFhRVUZYTEVWQlEzUkNMRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRVZCUTJoRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOMFF5eFBRVUZQTzJkQ1FVTklMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVazdaMEpCUTJoQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrN1lVRkRia0lzUTBGQlF6dFRRVU5NTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVVZFTERKQ1FVRlBMRWRCUVZBc1ZVRkJVU3hIUVVGWE8xRkJRMllzVDBGQlR5eEpRVUZKTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEycEdMRU5CUVVNN1NVRkRUQ3huUWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0U0VRc1NVRjNTRU03UVVGNFNGa3NPRUpCUVZNN1FVRnhTWFJDTEZOQlFXZENMR1ZCUVdVc1EwRkJReXhOUVVGcFFpeEZRVUZGTEUxQlFXbENMRVZCUVVVc1JVRkJWVHRKUVVVMVJTeEpRVUZOTEVWQlFVVXNSMEZCUnl4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVNM1JpeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkRNMFlzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGRGFFSXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZEYUVJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGJFUXNUMEZCVHp0UlFVTklMR3RDUVVGclFpeEZRVUZGTEVWQlFVVTdVVUZEZEVJc2EwSkJRV3RDTEVWQlFVVXNSVUZCUlR0UlFVTjBRaXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVHRMUVVNdlJDeERRVUZCTzBGQlEwd3NRMEZCUXp0QlFWcEVMREJEUVZsRE8wRkJWMFFzVTBGQlowSXNWVUZCVlN4RFFVRkRMRU5CUVRKQ0xFVkJRVVVzVFVGQmFVSXNSVUZCUlN4RlFVRlZPMGxCUTJwR0xFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVU1zU1VGQlNTeERRVUZETEVWQlFVVTdVVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0SlFVTnFSQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMllzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRFppeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVOeVF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU0xUkN4RFFVRkRPMEZCVUVRc1owTkJUME03UVVGRlJEdEpRVWxKTEdOQlFXMUNMRU5CUVZjc1JVRkJVeXhEUVVGWkxFVkJRVk1zUjBGQlZ6dFJRVUZ3UkN4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGVk8xRkJRVk1zVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCVnp0UlFVRlRMRkZCUVVjc1IwRkJTQ3hIUVVGSExFTkJRVkU3VVVGRGJrVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU42UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExGVkJRVlVzUlVGQlJTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkRUQ3hYUVVGRE8wRkJRVVFzUTBGQlF5eEJRVkpFTEVsQlVVTTdRVUZGUkR0SlFVTkpMR1ZCUVcxQ0xFMUJRV1VzUlVGQlV5eERRVUZQTEVWQlFWTXNSMEZCVnp0UlFVRnVSQ3hYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZUTzFGQlFWTXNUVUZCUXl4SFFVRkVMRU5CUVVNc1EwRkJUVHRSUVVGVExGRkJRVWNzUjBGQlNDeEhRVUZITEVOQlFWRTdTVUZCUnl4RFFVRkRPMGxCUXpsRkxGbEJRVU03UVVGQlJDeERRVUZETEVGQlJrUXNTVUZGUXp0QlFVVkVMRk5CUVZNc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlEzSkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZPMUZCUTJZc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRFdqdEpRVU5FTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTzFGQlEyWXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOaU8wbEJRMFFzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZPMUZCUlZZc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU5pTzBsQlEwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xRkJSVllzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEV2p0SlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRMklzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlR0SlFVTm1MRTlCUVU4c1NVRkJTU3hsUVVGTkxFTkJRVThzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkxMRTlCUVVFc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRmlMRU5CUVdFc1EwRkJReXhEUVVGRE8wRkJRM0pFTEVOQlFVTTdRVUZYUkN4SlFVRkpMRXRCUVVzc1IwRkJhMEk3U1VGRGRrSXNVMEZCVXl4RlFVRkZMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRk9MRU5CUVUwN1NVRkRja0lzVDBGQlR5eEZRVUZGTEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlNDeERRVUZITzBsQlEyaENMRkZCUVZFc1JVRkJSU3hWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVnc1EwRkJSenRKUVVOcVFpeFBRVUZQTEVWQlFVVXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFWUXNRMEZCVXp0SlFVTjBRaXhSUVVGUkxFVkJRVVVzVlVGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFbEJRVXNzVDBGQlFTeEpRVUZKTEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVWQlFXaEZMRU5CUVdkRk8wbEJRM3BITEdOQlFXTXNSVUZCUlN4bFFVRmxPME5CUTJ4RExFTkJRVU03UVVGRlJpeEpRVUZKTEV0QlFVc3NSMEZCYTBJN1NVRkRka0lzVTBGQlV5eEZRVUZGTEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZPTEVOQlFVMDdTVUZEY2tJc1QwRkJUeXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJTQ3hEUVVGSE8wbEJRMmhDTEZGQlFWRXNSVUZCUlN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVZ3NRMEZCUnp0SlFVTnFRaXhQUVVGUExFVkJRVVVzVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVllzUTBGQlZUdEpRVU4yUWl4UlFVRlJMRVZCUVVVc1ZVRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVzc1QwRkJRU3hKUVVGSkxGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRV2hGTEVOQlFXZEZPMGxCUTNwSExHTkJRV01zUlVGQlJTeGxRVUZsTzBOQlEyeERMRU5CUVVNN1FVRkZSaXhUUVVGVExIZENRVUYzUWl4RFFVRkRMRWxCUVhGQ0xFVkJRVVVzUTBGQlowSXNSVUZCUlN4TlFVRmpMRVZCUVVVc1YwRkJORUk3U1VGQk5VSXNORUpCUVVFc1JVRkJRU3h0UWtGQk5FSTdTVUZGYmtnc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZEZEVJc1JVRkJSU3hIUVVGSExFOUJRVThzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMmhGTEVWQlFVVXNSMEZCUnl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTm9SU3huUWtGQlowSXNSMEZCYVVJc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdVVUZEZWtNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1IwRkJhVUlzUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVhoRUxFTkJRWGRFTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUXpWSExFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVOdVF5eEZRVUZGTEVkQlFXVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRemRDTEVWQlFVVXNSMEZCWjBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6bENMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRMHdzUjBGQlJ5eEhRVUZITEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJUeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJReTlETEVsQlFVa3NWMEZCVnl4RlFVRkZPMUZCUldJc1NVRkJTU3hEUVVGRExFZEJRV01zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZETVVJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVONFF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE1VTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNwRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOc1F5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGxRVUZsTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJ4RExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU16UkR0SlFVTkVMRWxCUVVrc1JVRkJSVHRSUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUY2UWl4RFFVRjVRaXhEUVVGRExFTkJRVU03U1VGRE5VUXNTVUZCU1N4RlFVRkZPMUZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eEhRVUZqTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkROVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjZSaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5JTEVsQlFVa3NSVUZCUlN4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaEVMRWxCUVVrc1JVRkJSU3hGUVVGRk8xRkJRMG9zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRaUVVOcVFpeEpRVUZKTEdGQlFXRXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZETVVRc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4aFFVRmhMRVZCUVhSQ0xFTkJRWE5DTEVOQlFVTXNRMEZCUXp0WlFVTnNSQ3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOT08wbEJRMFFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtNc1EwRkJRenRCUVVWRUxGTkJRVk1zYlVKQlFXMUNMRU5CUVVNc1JVRkJaU3hGUVVGRkxFbEJRV2RDTEVWQlF6RkVMRWxCUVcxQ0xFVkJRVVVzVFVGQll6dEpRVVZ1UXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBETEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEycERMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM0JDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5rTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJoRUxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUkN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRM3BFTzBsQlEwUXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEpRVU16UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUlVGQll5eERRVUZETzBsQlEycERMRWxCUVVrc1VVRkJVU3hIUVVGSExGVkJRVlVzUlVGQlJTeERRVUZETzBsQlF6VkNMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM0JDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExb3NTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMVlzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU53UXp0aFFVRk5PMWxCUlVnc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVRaXhKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMmRDUVVOMFFpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF6dG5Ra0ZETDBRc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEdsQ1FVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE0wTXNRMEZCUXl4RFFVRkRPMWxCUTBZc1NVRkJTU3hsUVVGbExFZEJRVWNzVlVGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzN1owSkJRekZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1owSkJRMnhETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVN2IwSkJRMnBETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlExb3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRlRUk3V1VGRFRDeERRVUZETEVOQlFVTTdXVUZEUml4bFFVRmxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hqUVVGakxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRndRaXhEUVVGdlFpeERRVUZETEVOQlFVTTdXVUZEYUVVc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzWTBGQll5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJjRUlzUTBGQmIwSXNRMEZCUXl4RFFVRkRPMU5CUTI1Rk8wdEJRMG83U1VGRFJDeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEY0VNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUXNVMEZCVXl4bFFVRmxMRU5CUVVNc1EwRkJUeXhGUVVGRkxGRkJRWE5DTzBsQlEzQkVMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVODdVVUZEY2tJc1NVRkJTU3hGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVFpeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTk9MRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrTXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTTVReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU55UWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoQ08xbEJRMFFzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVOa0xFMUJRVTA3WVVGRFZEdFRRVU5LTzBsQlEwd3NRMEZCUXl4RFFVRkJPMGxCUTBRc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTnNRaXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xFTkJRVU03UVVGRlJDeFRRVUZUTEdWQlFXVXNRMEZCUXl4RFFVRlBMRVZCUVVVc1VVRkJjMEk3U1VGRGNFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJReXhQUVVGUExFVkJRVVVzVDBGQlR6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGVFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdXVUZEY2tNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVFpeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaENPMGxCUTB3c1EwRkJReXhEUVVGQk8wbEJRMFFzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOc1FpeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRM1JDTEVOQlFVTTdRVUZGUkN4VFFVRm5RaXh2UWtGQmIwSXNRMEZCUXl4RlFVRmxMRVZCUVVVc1NVRkJaMEk3U1VGRGJFVXNUMEZCVHl4dFFrRkJiVUlzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU4wUkN4RFFVRkRPMEZCUmtRc2IwUkJSVU03UVVGRlJDeFRRVUZuUWl4dlFrRkJiMElzUTBGQlF5eEZRVUZsTEVWQlFVVXNTVUZCWjBJN1NVRkRiRVVzVDBGQlR5eHRRa0ZCYlVJc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOMFJDeERRVUZETzBGQlJrUXNiMFJCUlVNN1FVRkZSQ3hUUVVGblFpeDVRa0ZCZVVJc1EwRkJReXhKUVVGeFFqdEpRVU16UkN4UFFVRlBMSGRDUVVGM1FpeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrUXNRMEZCUXp0QlFVWkVMRGhFUVVWRE8wRkJSVVFzVTBGQlowSXNlVUpCUVhsQ0xFTkJRVU1zU1VGQmNVSTdTVUZETTBRc1QwRkJUeXgzUWtGQmQwSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkVMRU5CUVVNN1FVRkdSQ3c0UkVGRlF6dEJRVVZFTEZOQlFXZENMR05CUVdNc1EwRkJReXhGUVVGbE8wbEJRekZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCY0VJc1EwRkJiMElzUTBGQlF5eERRVUZETzBsQlF6TkRMRWxCUVVrc1JVRkJSU3hIUVVGSExHOUNRVUZ2UWl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU4wUXl4SlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxHRkJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGxCUTJZc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eEZRVUU1UWl4RFFVRTRRaXhEUVVGRExFTkJRVU03U1VGRGNrUXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCY0VJc1EwRkJiMElzUTBGQlF5eERRVUZETzBsQlEzUkRMRVZCUVVVc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJFTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1lVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTTFRaXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEWml4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU3l4UFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFVkJRVGxDTEVOQlFUaENMRU5CUVVNc1EwRkJRenRCUVVONlJDeERRVUZETzBGQldFUXNkME5CVjBNN1FVRmhSRHRKUVVGeFF5eHRRMEZCVVR0SlFVTjZReXg1UWtGQmJVSXNTMEZCWVN4RlFVRkZMRU5CUVZNN1VVRkJNME1zV1VGRFNTeHJRa0ZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRMlE3VVVGR2EwSXNWMEZCU3l4SFFVRk1MRXRCUVVzc1EwRkJVVHM3U1VGRmFFTXNRMEZCUXp0SlFVTk1MSE5DUVVGRE8wRkJRVVFzUTBGQlF5eEJRVXBFTEVOQlFYRkRMR1ZCUVZFc1IwRkpOVU03UVVGS1dTd3dRMEZCWlR0QlFVMDFRanRKUVV0SkxHOUNRVUZ2UWl4TFFVRnJRaXhGUVVNeFFpeE5RVUY1UWl4RlFVTjZRaXhUUVVGcFF5eEZRVU42UXl4WFFVRjNRaXhGUVVOb1FpeGhRVUU0UWp0UlFVb3hReXhwUWtFNFFrTTdVVUUxUWxjc01FSkJRVUVzUlVGQlFTeG5Ra0ZCYVVNN1VVRkRla01zTkVKQlFVRXNSVUZCUVN4clFrRkJkMEk3VVVGRGFFSXNPRUpCUVVFc1JVRkJRU3h4UWtGQk9FSTdVVUZLZEVJc1ZVRkJTeXhIUVVGTUxFdEJRVXNzUTBGQllUdFJRVU14UWl4WFFVRk5MRWRCUVU0c1RVRkJUU3hEUVVGdFFqdFJRVU42UWl4alFVRlRMRWRCUVZRc1UwRkJVeXhEUVVGM1FqdFJRVVZxUXl4clFrRkJZU3hIUVVGaUxHRkJRV0VzUTBGQmFVSTdVVUZGZEVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRE5VSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOc1JDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1YwRkJWenRaUVVGRkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVZ5UkN4SlFVRkpMR0ZCUVdFc1NVRkJTU3hUUVVGVExFbEJRVWtzVDBGQlR5eFRRVUZUTEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRaUVVOMlJTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVTjZRanR2UWtGRlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRE4wTXNUMEZCVHp0cFFrRkRVRHRuUWtGRFl5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzaERMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU55UlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOSUxHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJRemxDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGNrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03WjBKQlExb3NTMEZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1pVRkJaU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRMRk5CUVZNc1MwRkJTeXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnFTQ3hMUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeGxRVUZsTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zVTBGQlV5eExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRja2dzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEVGp0SlFVTk1MRU5CUVVNN1NVRkhUeXh4UTBGQlowSXNSMEZCZUVJc1ZVRkJlVUlzUTBGQlRUdFJRVU16UWl4UFFVRlBMRWxCUVVrc2FVSkJRVlVzUTBGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4RlFVTXpRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRelZDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUTB3c1QwRkJUeXhEUVVGRExFTkJRVU1zVVVGQlVTeExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRhRVVzUTBGQlF6dEpRVWRQTEdsRFFVRlpMRWRCUVhCQ0xGVkJRWEZDTEVOQlFVMDdVVUZCTTBJc2FVSkJhVUpETzFGQmFFSkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllUdFpRVUZGTEU5QlFVODdVVUZGYUVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjN1dVRkJSU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRMME1zU1VGQlNTeEZRVUZGTEVkQlFXZENMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1MwRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVd4Q0xFTkJRV3RDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCYWtJc1EwRkJhVUlzUTBGQlF5eERRVUZETzFGQlF5OUdMRWxCUVVrc1EwRkJReXhIUVVGakxFbEJRVWtzUTBGQlF6dFJRVU40UWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVVZTTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVOSUxFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHR2UWtGRGJrSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF6dHBRa0ZEY2tJN1lVRkRTanRaUVVORUxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEVml4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlR5eHZRMEZCWlN4SFFVRjJRaXhWUVVGM1FpeERRVUZOTzFGQlFUbENMR2xDUVZGRE8xRkJVRWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF6dFJRVU12UXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRMmhGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRPMWxCUTNCRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4cFFrRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyeEVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMUFzUTBGQlF6dEpRVVZQTEhORFFVRnBRaXhIUVVGNlFpeFZRVUV3UWl4WFFVRnJRanRSUVVFMVF5eHBRa0ZYUXp0UlFWWkhMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExGZEJRVmNzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRmxCUVZrc1JVRkJlRVFzUTBGQmQwUXNRMEZCUXp0UlFVTXhSU3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEZkQlFWYzdZVUZETVVJc1RVRkJUU3hEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRXhRaXhEUVVFd1FpeERRVUZETzJGQlEzWkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEV0QlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzVjBGQlZ6dGhRVU14UWl4TlFVRk5MRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFURkNMRU5CUVRCQ0xFTkJRVU03WVVGRGRrTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUzBGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUY0UWl4RFFVRjNRaXhEUVVGRExFTkJRVU03VVVGRGVFTXNWMEZCVnp0aFFVTk9MRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1YwRkJWeXhGUVVGMFFpeERRVUZ6UWl4RFFVRkRPMkZCUTI1RExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRXRCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFYWkNMRU5CUVhWQ0xFTkJRVU1zUTBGQlF6dEpRVU12UXl4RFFVRkRPMGxCUlU4c05FTkJRWFZDTEVkQlFTOUNMRlZCUVdkRExFVkJRVmtzUlVGQlJTeEZRVUZaTEVWQlFVVXNUMEZCYVVJc1JVRkJSU3hWUVVGdlF6dFJRVU12Unl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlR0blFrRkRWQ3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlEzcEVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRPVUk3YVVKQlFVMDdaMEpCUTBnc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTNwQ08xbEJRMFFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOd1JDeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNelFpeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1UwRkJVeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1JDeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTlFMRU5CUVVNN1NVRkZSQ3cyUWtGQlVTeEhRVUZTTEZWQlFWTXNSVUZCV1N4RlFVRkZMRVZCUVZrc1JVRkJSU3hEUVVGWE8xRkJRelZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGQlJTeFBRVUZQTzFGQlF6RkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJTaXhEUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4NVFrRkJlVUlzUlVGRE9VVXNWVUZCUVN4RFFVRkRMRWxCUVVrc1QwRkJRU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVcxQ0xFTkJRVU1zUTBGQlF5eFJRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RlFVRnVSaXhEUVVGdFJpeEZRVU40Uml4VlFVRkJMRU5CUVVNN1dVRkRSeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFXMUNMRU5CUVVNc1EwRkJReXhOUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFpRVU4wUlN4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVzFDTEVOQlFVTXNRMEZCUXl4TlFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOMFJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTNaQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRE0wSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wbEJSVVFzTmtKQlFWRXNSMEZCVWl4VlFVRlRMRVZCUVZrc1JVRkJSU3hGUVVGWkxFVkJRVVVzUTBGQlZ6dFJRVU0xUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpPMWxCUVVVc1QwRkJUenRSUVVOc1JDeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVb3NRMEZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzZVVKQlFYbENMRVZCUXpsRkxGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZ0UWl4RFFVRkRMRU5CUVVNc1VVRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUlVGQmJrWXNRMEZCYlVZc1JVRkRlRVlzVlVGQlFTeERRVUZETzFsQlEwY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGdFFpeERRVUZETEVOQlFVTXNUVUZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1dVRkRkRVVzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRnRRaXhEUVVGRExFTkJRVU1zVFVGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZEZEVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFpRVUZCTEVOQlFVTTdXVUZEZUVJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTllMRU5CUVVNN1NVRkZSQ3h4UTBGQlowSXNSMEZCYUVJN1VVRkJRU3hwUWtGTFF6dFJRVXBITEU5QlFVODdXVUZEU0N4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRjRRaXhEUVVGM1FqdFpRVU4yUXl4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRjRRaXhEUVVGM1FqdFRRVU14UXl4RFFVRkRPMGxCUTA0c1EwRkJRenRKUVVWUExEUkNRVUZQTEVkQlFXWXNWVUZCWjBJc1JVRkJXU3hGUVVGRkxFVkJRVmtzUlVGQlJTeExRVUZsTEVWQlFVVXNUMEZCYVVJc1JVRkRNVVVzVlVGQmIwTXNSVUZEY0VNc1JVRkJaMElzUlVGRGFFSXNiVUpCUVhsRUxFVkJRM3BFTEdkQ1FVRjFReXhGUVVOMlF5eHBRa0ZCT0VNN1VVRkZPVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUMEZCVHl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRekZFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTzFsQlEzUkRMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVOdVF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUkR0UlFVTkVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OURMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRGNrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVTdXVUZEZEVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFpRVU4yUXl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1UwRkRkRU03U1VGRFRDeERRVUZETzBsQlJVOHNNRUpCUVVzc1IwRkJZaXhWUVVGakxFVkJRV01zUlVGQlJTeEZRVUZuUWl4RlFVRkZMRkZCUVd0Q0xFVkJRVVVzVDBGQmFVSTdVVUZEYWtZc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeGhRVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMmhETEUxQlFVMHNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTjBReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZEVEN4cFFrRkJRenRCUVVGRUxFTkJRVU1zUVVGc1MwUXNTVUZyUzBNN1FVRnNTMWtzWjBOQlFWVWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIFBhaXJpbmdIZWFwID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFBhaXJpbmdIZWFwKGVsZW0pIHtcclxuICAgICAgICB0aGlzLmVsZW0gPSBlbGVtO1xyXG4gICAgICAgIHRoaXMuc3ViaGVhcHMgPSBbXTtcclxuICAgIH1cclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xyXG4gICAgICAgIHZhciBzdHIgPSBcIlwiLCBuZWVkQ29tbWEgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3ViaGVhcHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIHN1YmhlYXAgPSB0aGlzLnN1YmhlYXBzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXN1YmhlYXAuZWxlbSkge1xyXG4gICAgICAgICAgICAgICAgbmVlZENvbW1hID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmVlZENvbW1hKSB7XHJcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHIgKyBcIixcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHIgPSBzdHIgKyBzdWJoZWFwLnRvU3RyaW5nKHNlbGVjdG9yKTtcclxuICAgICAgICAgICAgbmVlZENvbW1hID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0ciAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICBzdHIgPSBcIihcIiArIHN0ciArIFwiKVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbSA/IHNlbGVjdG9yKHRoaXMuZWxlbSkgOiBcIlwiKSArIHN0cjtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVtcHR5KCkpIHtcclxuICAgICAgICAgICAgZih0aGlzLmVsZW0sIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLnN1YmhlYXBzLmZvckVhY2goZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHMuZm9yRWFjaChmKTsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eSgpID8gMCA6IDEgKyB0aGlzLnN1YmhlYXBzLnJlZHVjZShmdW5jdGlvbiAobiwgaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbiArIGguY291bnQoKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUubWluID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW07XHJcbiAgICB9O1xyXG4gICAgUGFpcmluZ0hlYXAucHJvdG90eXBlLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW0gPT0gbnVsbDtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAoaCkge1xyXG4gICAgICAgIGlmICh0aGlzID09PSBoKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3ViaGVhcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3ViaGVhcHNbaV0uY29udGFpbnMoaCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5pc0hlYXAgPSBmdW5jdGlvbiAobGVzc1RoYW4pIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN1YmhlYXBzLmV2ZXJ5KGZ1bmN0aW9uIChoKSB7IHJldHVybiBsZXNzVGhhbihfdGhpcy5lbGVtLCBoLmVsZW0pICYmIGguaXNIZWFwKGxlc3NUaGFuKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgUGFpcmluZ0hlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChvYmosIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UobmV3IFBhaXJpbmdIZWFwKG9iaiksIGxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoaGVhcDIsIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wdHkoKSlcclxuICAgICAgICAgICAgcmV0dXJuIGhlYXAyO1xyXG4gICAgICAgIGVsc2UgaWYgKGhlYXAyLmVtcHR5KCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlc3NUaGFuKHRoaXMuZWxlbSwgaGVhcDIuZWxlbSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJoZWFwcy5wdXNoKGhlYXAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoZWFwMi5zdWJoZWFwcy5wdXNoKHRoaXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gaGVhcDI7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbiAobGVzc1RoYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlUGFpcnMobGVzc1RoYW4pO1xyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5tZXJnZVBhaXJzID0gZnVuY3Rpb24gKGxlc3NUaGFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ViaGVhcHMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGFpcmluZ0hlYXAobnVsbCk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zdWJoZWFwcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJoZWFwc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFBhaXIgPSB0aGlzLnN1YmhlYXBzLnBvcCgpLm1lcmdlKHRoaXMuc3ViaGVhcHMucG9wKCksIGxlc3NUaGFuKTtcclxuICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubWVyZ2VQYWlycyhsZXNzVGhhbik7XHJcbiAgICAgICAgICAgIHJldHVybiBmaXJzdFBhaXIubWVyZ2UocmVtYWluaW5nLCBsZXNzVGhhbik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5kZWNyZWFzZUtleSA9IGZ1bmN0aW9uIChzdWJoZWFwLCBuZXdWYWx1ZSwgc2V0SGVhcE5vZGUsIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgdmFyIG5ld0hlYXAgPSBzdWJoZWFwLnJlbW92ZU1pbihsZXNzVGhhbik7XHJcbiAgICAgICAgc3ViaGVhcC5lbGVtID0gbmV3SGVhcC5lbGVtO1xyXG4gICAgICAgIHN1YmhlYXAuc3ViaGVhcHMgPSBuZXdIZWFwLnN1YmhlYXBzO1xyXG4gICAgICAgIGlmIChzZXRIZWFwTm9kZSAhPT0gbnVsbCAmJiBuZXdIZWFwLmVsZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0SGVhcE5vZGUoc3ViaGVhcC5lbGVtLCBzdWJoZWFwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHBhaXJpbmdOb2RlID0gbmV3IFBhaXJpbmdIZWFwKG5ld1ZhbHVlKTtcclxuICAgICAgICBpZiAoc2V0SGVhcE5vZGUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0SGVhcE5vZGUobmV3VmFsdWUsIHBhaXJpbmdOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UocGFpcmluZ05vZGUsIGxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUGFpcmluZ0hlYXA7XHJcbn0oKSk7XHJcbmV4cG9ydHMuUGFpcmluZ0hlYXAgPSBQYWlyaW5nSGVhcDtcclxudmFyIFByaW9yaXR5UXVldWUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZShsZXNzVGhhbikge1xyXG4gICAgICAgIHRoaXMubGVzc1RoYW4gPSBsZXNzVGhhbjtcclxuICAgIH1cclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5yb290LmVsZW07XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgYXJncyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHBhaXJpbmdOb2RlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBhcmc7IGFyZyA9IGFyZ3NbaV07ICsraSkge1xyXG4gICAgICAgICAgICBwYWlyaW5nTm9kZSA9IG5ldyBQYWlyaW5nSGVhcChhcmcpO1xyXG4gICAgICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLmVtcHR5KCkgP1xyXG4gICAgICAgICAgICAgICAgcGFpcmluZ05vZGUgOiB0aGlzLnJvb3QubWVyZ2UocGFpcmluZ05vZGUsIHRoaXMubGVzc1RoYW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFpcmluZ05vZGU7XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnJvb3QgfHwgIXRoaXMucm9vdC5lbGVtO1xyXG4gICAgfTtcclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLmlzSGVhcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb290LmlzSGVhcCh0aGlzLmxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICB0aGlzLnJvb3QuZm9yRWFjaChmKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wdHkoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9iaiA9IHRoaXMucm9vdC5taW4oKTtcclxuICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLnJvb3QucmVtb3ZlTWluKHRoaXMubGVzc1RoYW4pO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVkdWNlS2V5ID0gZnVuY3Rpb24gKGhlYXBOb2RlLCBuZXdLZXksIHNldEhlYXBOb2RlKSB7XHJcbiAgICAgICAgaWYgKHNldEhlYXBOb2RlID09PSB2b2lkIDApIHsgc2V0SGVhcE5vZGUgPSBudWxsOyB9XHJcbiAgICAgICAgdGhpcy5yb290ID0gdGhpcy5yb290LmRlY3JlYXNlS2V5KGhlYXBOb2RlLCBuZXdLZXksIHNldEhlYXBOb2RlLCB0aGlzLmxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb3QudG9TdHJpbmcoc2VsZWN0b3IpO1xyXG4gICAgfTtcclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb3QuY291bnQoKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUHJpb3JpdHlRdWV1ZTtcclxufSgpKTtcclxuZXhwb3J0cy5Qcmlvcml0eVF1ZXVlID0gUHJpb3JpdHlRdWV1ZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY0hGMVpYVmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2VjJWaVEyOXNZUzl6Y21NdmNIRjFaWFZsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRMEU3U1VGSlNTeHhRa0ZCYlVJc1NVRkJUenRSUVVGUUxGTkJRVWtzUjBGQlNpeEpRVUZKTEVOQlFVYzdVVUZEZEVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEZGtJc1EwRkJRenRKUVVWTkxEaENRVUZSTEVkQlFXWXNWVUZCWjBJc1VVRkJVVHRSUVVOd1FpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRVZCUVVVc1UwRkJVeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU5vUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZETTBNc1NVRkJTU3hQUVVGUExFZEJRVzFDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGREwwTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3WjBKQlEyWXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJRenRuUWtGRGJFSXNVMEZCVXp0aFFVTmFPMWxCUTBRc1NVRkJTU3hUUVVGVExFVkJRVVU3WjBKQlExZ3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU03WVVGRGJrSTdXVUZEUkN4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1dVRkRka01zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXp0VFFVTndRanRSUVVORUxFbEJRVWtzUjBGQlJ5eExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTmFMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0VFFVTjZRanRSUVVORUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZEZUVRc1EwRkJRenRKUVVWTkxEWkNRVUZQTEVkQlFXUXNWVUZCWlN4RFFVRkRPMUZCUTFvc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTm1MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJXaXhEUVVGWkxFTkJRVU1zUTBGQlF6dFRRVU0xUXp0SlFVTk1MRU5CUVVNN1NVRkZUU3d5UWtGQlN5eEhRVUZhTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1EwRkJVeXhGUVVGRkxFTkJRV2xDTzFsQlF6VkZMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTjZRaXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVml4RFFVRkRPMGxCUlUwc2VVSkJRVWNzUjBGQlZqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOeVFpeERRVUZETzBsQlJVMHNNa0pCUVVzc1IwRkJXanRSUVVOSkxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNN1NVRkROMElzUTBGQlF6dEpRVVZOTERoQ1FVRlJMRWRCUVdZc1ZVRkJaMElzUTBGQmFVSTdVVUZETjBJc1NVRkJTU3hKUVVGSkxFdEJRVXNzUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUXpWQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNelF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5xUkR0UlFVTkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdTVUZGVFN3MFFrRkJUU3hIUVVGaUxGVkJRV01zVVVGQmFVTTdVVUZCTDBNc2FVSkJSVU03VVVGRVJ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNVVUZCVVN4RFFVRkRMRXRCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFXcEVMRU5CUVdsRUxFTkJRVU1zUTBGQlF6dEpRVU4wUml4RFFVRkRPMGxCUlUwc05FSkJRVTBzUjBGQllpeFZRVUZqTEVkQlFVOHNSVUZCUlN4UlFVRlJPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRmRCUVZjc1EwRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTjZSQ3hEUVVGRE8wbEJSVTBzTWtKQlFVc3NSMEZCV2l4VlFVRmhMRXRCUVhGQ0xFVkJRVVVzVVVGQlVUdFJRVU40UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVU3V1VGQlJTeFBRVUZQTEV0QlFVc3NRMEZCUXp0aFFVTXhRaXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVNdlFpeEpRVUZKTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjBReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMkZCUVUwN1dVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNeFFpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRKUVVOTUxFTkJRVU03U1VGRlRTd3JRa0ZCVXl4SFFVRm9RaXhWUVVGcFFpeFJRVUZwUXp0UlFVTTVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenM3V1VGRGVrSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkZUU3huUTBGQlZTeEhRVUZxUWl4VlFVRnJRaXhSUVVGcFF6dFJRVU12UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlF6RkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMWxCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUVVVN1lVRkRNMFE3V1VGRFJDeEpRVUZKTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMWxCUTNwRkxFbEJRVWtzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRE1VTXNUMEZCVHl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0VFFVTXZRenRKUVVOTUxFTkJRVU03U1VGRFRTeHBRMEZCVnl4SFFVRnNRaXhWUVVGdFFpeFBRVUYxUWl4RlFVRkZMRkZCUVZjc1JVRkJSU3hYUVVFMFF5eEZRVUZGTEZGQlFXbERPMUZCUTNCSkxFbEJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRk1VTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzFGQlF6VkNMRTlCUVU4c1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXp0UlFVTndReXhKUVVGSkxGZEJRVmNzUzBGQlN5eEpRVUZKTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGREwwTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEZEVNN1VVRkRSQ3hKUVVGSkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVNMVF5eEpRVUZKTEZkQlFWY3NTMEZCU3l4SlFVRkpMRVZCUVVVN1dVRkRkRUlzVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOMFF6dFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVOTUxHdENRVUZETzBGQlFVUXNRMEZCUXl4QlFYcEhSQ3hKUVhsSFF6dEJRWHBIV1N4clEwRkJWenRCUVRoSGVFSTdTVUZGU1N4MVFrRkJiMElzVVVGQmFVTTdVVUZCYWtNc1lVRkJVU3hIUVVGU0xGRkJRVkVzUTBGQmVVSTdTVUZCU1N4RFFVRkRPMGxCUzI1RUxESkNRVUZITEVkQlFWWTdVVUZEU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJUdFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUVVVN1VVRkRiRU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlMwMHNORUpCUVVrc1IwRkJXRHRSUVVGWkxHTkJRVms3WVVGQldpeFZRVUZaTEVWQlFWb3NjVUpCUVZrc1JVRkJXaXhKUVVGWk8xbEJRVm9zZVVKQlFWazdPMUZCUTNCQ0xFbEJRVWtzVjBGQlZ5eERRVUZETzFGQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRWRCUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RExGZEJRVmNzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOdVF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBRaXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRha1U3VVVGRFJDeFBRVUZQTEZkQlFWY3NRMEZCUXp0SlFVTjJRaXhEUVVGRE8wbEJTMDBzTmtKQlFVc3NSMEZCV2p0UlFVTkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVdE5MRGhDUVVGTkxFZEJRV0k3VVVGRFNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhEUVVGRE8wbEJTMDBzSzBKQlFVOHNSMEZCWkN4VlFVRmxMRU5CUVVNN1VVRkRXaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONlFpeERRVUZETzBsQlNVMHNNa0pCUVVjc1IwRkJWanRSUVVOSkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZPMWxCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFpqdFJRVU5FTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETDBNc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFppeERRVUZETzBsQlNVMHNhVU5CUVZNc1IwRkJhRUlzVlVGQmFVSXNVVUZCZDBJc1JVRkJSU3hOUVVGVExFVkJRVVVzVjBGQmJVUTdVVUZCYmtRc05FSkJRVUVzUlVGQlFTeHJRa0ZCYlVRN1VVRkRja2NzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRmRCUVZjc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdTVUZEY0VZc1EwRkJRenRKUVVOTkxHZERRVUZSTEVkQlFXWXNWVUZCWjBJc1VVRkJVVHRSUVVOd1FpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkxUU3cyUWtGQlN5eEhRVUZhTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkRUQ3h2UWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0UlVRc1NVRjNSVU03UVVGNFJWa3NjME5CUVdFaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgcHF1ZXVlXzEgPSByZXF1aXJlKFwiLi9wcXVldWVcIik7XHJcbnZhciBOZWlnaGJvdXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTmVpZ2hib3VyKGlkLCBkaXN0YW5jZSkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLmRpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTmVpZ2hib3VyO1xyXG59KCkpO1xyXG52YXIgTm9kZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBOb2RlKGlkKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMubmVpZ2hib3VycyA9IFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE5vZGU7XHJcbn0oKSk7XHJcbnZhciBRdWV1ZUVudHJ5ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFF1ZXVlRW50cnkobm9kZSwgcHJldiwgZCkge1xyXG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XHJcbiAgICAgICAgdGhpcy5wcmV2ID0gcHJldjtcclxuICAgICAgICB0aGlzLmQgPSBkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFF1ZXVlRW50cnk7XHJcbn0oKSk7XHJcbnZhciBDYWxjdWxhdG9yID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIENhbGN1bGF0b3IobiwgZXMsIGdldFNvdXJjZUluZGV4LCBnZXRUYXJnZXRJbmRleCwgZ2V0TGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5uID0gbjtcclxuICAgICAgICB0aGlzLmVzID0gZXM7XHJcbiAgICAgICAgdGhpcy5uZWlnaGJvdXJzID0gbmV3IEFycmF5KHRoaXMubik7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLm47XHJcbiAgICAgICAgd2hpbGUgKGktLSlcclxuICAgICAgICAgICAgdGhpcy5uZWlnaGJvdXJzW2ldID0gbmV3IE5vZGUoaSk7XHJcbiAgICAgICAgaSA9IHRoaXMuZXMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmVzW2ldO1xyXG4gICAgICAgICAgICB2YXIgdSA9IGdldFNvdXJjZUluZGV4KGUpLCB2ID0gZ2V0VGFyZ2V0SW5kZXgoZSk7XHJcbiAgICAgICAgICAgIHZhciBkID0gZ2V0TGVuZ3RoKGUpO1xyXG4gICAgICAgICAgICB0aGlzLm5laWdoYm91cnNbdV0ubmVpZ2hib3Vycy5wdXNoKG5ldyBOZWlnaGJvdXIodiwgZCkpO1xyXG4gICAgICAgICAgICB0aGlzLm5laWdoYm91cnNbdl0ubmVpZ2hib3Vycy5wdXNoKG5ldyBOZWlnaGJvdXIodSwgZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIENhbGN1bGF0b3IucHJvdG90eXBlLkRpc3RhbmNlTWF0cml4ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBEID0gbmV3IEFycmF5KHRoaXMubik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm47ICsraSkge1xyXG4gICAgICAgICAgICBEW2ldID0gdGhpcy5kaWprc3RyYU5laWdoYm91cnMoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBEO1xyXG4gICAgfTtcclxuICAgIENhbGN1bGF0b3IucHJvdG90eXBlLkRpc3RhbmNlc0Zyb21Ob2RlID0gZnVuY3Rpb24gKHN0YXJ0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlqa3N0cmFOZWlnaGJvdXJzKHN0YXJ0KTtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5QYXRoRnJvbU5vZGVUb05vZGUgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpamtzdHJhTmVpZ2hib3VycyhzdGFydCwgZW5kKTtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5QYXRoRnJvbU5vZGVUb05vZGVXaXRoUHJldkNvc3QgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgcHJldkNvc3QpIHtcclxuICAgICAgICB2YXIgcSA9IG5ldyBwcXVldWVfMS5Qcmlvcml0eVF1ZXVlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmQgPD0gYi5kOyB9KSwgdSA9IHRoaXMubmVpZ2hib3Vyc1tzdGFydF0sIHF1ID0gbmV3IFF1ZXVlRW50cnkodSwgbnVsbCwgMCksIHZpc2l0ZWRGcm9tID0ge307XHJcbiAgICAgICAgcS5wdXNoKHF1KTtcclxuICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkge1xyXG4gICAgICAgICAgICBxdSA9IHEucG9wKCk7XHJcbiAgICAgICAgICAgIHUgPSBxdS5ub2RlO1xyXG4gICAgICAgICAgICBpZiAodS5pZCA9PT0gZW5kKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgaSA9IHUubmVpZ2hib3Vycy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgICAgIHZhciBuZWlnaGJvdXIgPSB1Lm5laWdoYm91cnNbaV0sIHYgPSB0aGlzLm5laWdoYm91cnNbbmVpZ2hib3VyLmlkXTtcclxuICAgICAgICAgICAgICAgIGlmIChxdS5wcmV2ICYmIHYuaWQgPT09IHF1LnByZXYubm9kZS5pZClcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHZhciB2aWR1aWQgPSB2LmlkICsgJywnICsgdS5pZDtcclxuICAgICAgICAgICAgICAgIGlmICh2aWR1aWQgaW4gdmlzaXRlZEZyb20gJiYgdmlzaXRlZEZyb21bdmlkdWlkXSA8PSBxdS5kKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNjID0gcXUucHJldiA/IHByZXZDb3N0KHF1LnByZXYubm9kZS5pZCwgdS5pZCwgdi5pZCkgOiAwLCB0ID0gcXUuZCArIG5laWdoYm91ci5kaXN0YW5jZSArIGNjO1xyXG4gICAgICAgICAgICAgICAgdmlzaXRlZEZyb21bdmlkdWlkXSA9IHQ7XHJcbiAgICAgICAgICAgICAgICBxLnB1c2gobmV3IFF1ZXVlRW50cnkodiwgcXUsIHQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcGF0aCA9IFtdO1xyXG4gICAgICAgIHdoaWxlIChxdS5wcmV2KSB7XHJcbiAgICAgICAgICAgIHF1ID0gcXUucHJldjtcclxuICAgICAgICAgICAgcGF0aC5wdXNoKHF1Lm5vZGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5kaWprc3RyYU5laWdoYm91cnMgPSBmdW5jdGlvbiAoc3RhcnQsIGRlc3QpIHtcclxuICAgICAgICBpZiAoZGVzdCA9PT0gdm9pZCAwKSB7IGRlc3QgPSAtMTsgfVxyXG4gICAgICAgIHZhciBxID0gbmV3IHBxdWV1ZV8xLlByaW9yaXR5UXVldWUoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZCA8PSBiLmQ7IH0pLCBpID0gdGhpcy5uZWlnaGJvdXJzLmxlbmd0aCwgZCA9IG5ldyBBcnJheShpKTtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5uZWlnaGJvdXJzW2ldO1xyXG4gICAgICAgICAgICBub2RlLmQgPSBpID09PSBzdGFydCA/IDAgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XHJcbiAgICAgICAgICAgIG5vZGUucSA9IHEucHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKCFxLmVtcHR5KCkpIHtcclxuICAgICAgICAgICAgdmFyIHUgPSBxLnBvcCgpO1xyXG4gICAgICAgICAgICBkW3UuaWRdID0gdS5kO1xyXG4gICAgICAgICAgICBpZiAodS5pZCA9PT0gZGVzdCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhdGggPSBbXTtcclxuICAgICAgICAgICAgICAgIHZhciB2ID0gdTtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh0eXBlb2Ygdi5wcmV2ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaCh2LnByZXYuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYgPSB2LnByZXY7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpID0gdS5uZWlnaGJvdXJzLmxlbmd0aDtcclxuICAgICAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5laWdoYm91ciA9IHUubmVpZ2hib3Vyc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciB2ID0gdGhpcy5uZWlnaGJvdXJzW25laWdoYm91ci5pZF07XHJcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZCArIG5laWdoYm91ci5kaXN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGlmICh1LmQgIT09IE51bWJlci5NQVhfVkFMVUUgJiYgdi5kID4gdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHYuZCA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5wcmV2ID0gdTtcclxuICAgICAgICAgICAgICAgICAgICBxLnJlZHVjZUtleSh2LnEsIHYsIGZ1bmN0aW9uIChlLCBxKSB7IHJldHVybiBlLnEgPSBxOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQ2FsY3VsYXRvcjtcclxufSgpKTtcclxuZXhwb3J0cy5DYWxjdWxhdG9yID0gQ2FsY3VsYXRvcjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJodmNuUmxjM1J3WVhSb2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDNOb2IzSjBaWE4wY0dGMGFITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeHRRMEZCYlVRN1FVRkZia1E3U1VGRFNTeHRRa0ZCYlVJc1JVRkJWU3hGUVVGVExGRkJRV2RDTzFGQlFXNURMRTlCUVVVc1IwRkJSaXhGUVVGRkxFTkJRVkU3VVVGQlV5eGhRVUZSTEVkQlFWSXNVVUZCVVN4RFFVRlJPMGxCUVVrc1EwRkJRenRKUVVNdlJDeG5Ra0ZCUXp0QlFVRkVMRU5CUVVNc1FVRkdSQ3hKUVVWRE8wRkJSVVE3U1VGRFNTeGpRVUZ0UWl4RlFVRlZPMUZCUVZZc1QwRkJSU3hIUVVGR0xFVkJRVVVzUTBGQlVUdFJRVU42UWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUzB3c1YwRkJRenRCUVVGRUxFTkJRVU1zUVVGU1JDeEpRVkZETzBGQlJVUTdTVUZEU1N4dlFrRkJiVUlzU1VGQlZTeEZRVUZUTEVsQlFXZENMRVZCUVZNc1EwRkJVenRSUVVGeVJDeFRRVUZKTEVkQlFVb3NTVUZCU1N4RFFVRk5PMUZCUVZNc1UwRkJTU3hIUVVGS0xFbEJRVWtzUTBGQldUdFJRVUZUTEUxQlFVTXNSMEZCUkN4RFFVRkRMRU5CUVZFN1NVRkJSeXhEUVVGRE8wbEJRMmhHTEdsQ1FVRkRPMEZCUVVRc1EwRkJReXhCUVVaRUxFbEJSVU03UVVGVFJEdEpRVWRKTEc5Q1FVRnRRaXhEUVVGVExFVkJRVk1zUlVGQlZTeEZRVUZGTEdOQlFXMURMRVZCUVVVc1kwRkJiVU1zUlVGQlJTeFRRVUU0UWp0UlFVRjBTU3hOUVVGRExFZEJRVVFzUTBGQlF5eERRVUZSTzFGQlFWTXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVNelF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3V1VGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRkRUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCVnl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZYTEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU16UkR0SlFVTk1MRU5CUVVNN1NVRlZSQ3h0UTBGQll5eEhRVUZrTzFGQlEwa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXpkQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRja003VVVGRFJDeFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRlJSQ3h6UTBGQmFVSXNSMEZCYWtJc1ZVRkJhMElzUzBGQllUdFJRVU16UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUXNkVU5CUVd0Q0xFZEJRV3hDTEZWQlFXMUNMRXRCUVdFc1JVRkJSU3hIUVVGWE8xRkJRM3BETEU5QlFVOHNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlMwUXNiVVJCUVRoQ0xFZEJRVGxDTEZWQlEwa3NTMEZCWVN4RlFVTmlMRWRCUVZjc1JVRkRXQ3hSUVVFNFF6dFJRVVU1UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxITkNRVUZoTEVOQlFXRXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGV0xFTkJRVlVzUTBGQlF5eEZRVU4yUkN4RFFVRkRMRWRCUVZNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZEYUVNc1JVRkJSU3hIUVVGbExFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRM3BETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVOWUxFOUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVN1dVRkRaQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTJJc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEZRVUZGTzJkQ1FVTmtMRTFCUVUwN1lVRkRWRHRaUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRja01zU1VGQlNTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE0wSXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVkMFF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8yOUNRVUZGTEZOQlFWTTdaMEpCU1d4RUxFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWNzVFVGQlRTeEpRVUZKTEZkQlFWY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdiMEpCUTI1RUxGTkJRVk03WjBKQlJXSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVONFJDeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkhka01zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGVFSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGNFTTdVMEZEU2p0UlFVTkVMRWxCUVVrc1NVRkJTU3hIUVVGWkxFVkJRVVVzUTBGQlF6dFJRVU4yUWl4UFFVRlBMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVU3V1VGRFdpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVOaUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZGVHl4MVEwRkJhMElzUjBGQk1VSXNWVUZCTWtJc1MwRkJZU3hGUVVGRkxFbEJRV2xDTzFGQlFXcENMSEZDUVVGQkxFVkJRVUVzVVVGQlowSXNRMEZCUXp0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEhOQ1FVRmhMRU5CUVU4c1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZXTEVOQlFWVXNRMEZCUXl4RlFVTnFSQ3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUXpGQ0xFTkJRVU1zUjBGQllTeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlFpeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTFJc1NVRkJTU3hKUVVGSkxFZEJRVk1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMWxCUTNCRUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVTdXVUZGWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEYUVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMlFzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRWxCUVVrc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVsQlFVa3NSMEZCWVN4RlFVRkZMRU5CUVVNN1owSkJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFZpeFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhYUVVGWExFVkJRVVU3YjBKQlEyeERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGNrSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03YVVKQlEyUTdaMEpCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03WVVGRFpqdFpRVU5FTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMnBETEVsQlFVa3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJoRExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU03WjBKQlEycERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eE5RVUZOTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzI5Q1FVTnlReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRVaXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRXQ3hEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZRTEVOQlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOMlF6dGhRVU5LTzFOQlEwbzdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRFRDeHBRa0ZCUXp0QlFVRkVMRU5CUVVNc1FVRnFTVVFzU1VGcFNVTTdRVUZxU1Zrc1owTkJRVlVpZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgcmVjdGFuZ2xlXzEgPSByZXF1aXJlKFwiLi9yZWN0YW5nbGVcIik7XHJcbnZhciBQb2ludCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQb2ludCgpIHtcclxuICAgIH1cclxuICAgIHJldHVybiBQb2ludDtcclxufSgpKTtcclxuZXhwb3J0cy5Qb2ludCA9IFBvaW50O1xyXG52YXIgTGluZVNlZ21lbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGluZVNlZ21lbnQoeDEsIHkxLCB4MiwgeTIpIHtcclxuICAgICAgICB0aGlzLngxID0geDE7XHJcbiAgICAgICAgdGhpcy55MSA9IHkxO1xyXG4gICAgICAgIHRoaXMueDIgPSB4MjtcclxuICAgICAgICB0aGlzLnkyID0geTI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTGluZVNlZ21lbnQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTGluZVNlZ21lbnQgPSBMaW5lU2VnbWVudDtcclxudmFyIFBvbHlQb2ludCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoUG9seVBvaW50LCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gUG9seVBvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBQb2x5UG9pbnQ7XHJcbn0oUG9pbnQpKTtcclxuZXhwb3J0cy5Qb2x5UG9pbnQgPSBQb2x5UG9pbnQ7XHJcbmZ1bmN0aW9uIGlzTGVmdChQMCwgUDEsIFAyKSB7XHJcbiAgICByZXR1cm4gKFAxLnggLSBQMC54KSAqIChQMi55IC0gUDAueSkgLSAoUDIueCAtIFAwLngpICogKFAxLnkgLSBQMC55KTtcclxufVxyXG5leHBvcnRzLmlzTGVmdCA9IGlzTGVmdDtcclxuZnVuY3Rpb24gYWJvdmUocCwgdmksIHZqKSB7XHJcbiAgICByZXR1cm4gaXNMZWZ0KHAsIHZpLCB2aikgPiAwO1xyXG59XHJcbmZ1bmN0aW9uIGJlbG93KHAsIHZpLCB2aikge1xyXG4gICAgcmV0dXJuIGlzTGVmdChwLCB2aSwgdmopIDwgMDtcclxufVxyXG5mdW5jdGlvbiBDb252ZXhIdWxsKFMpIHtcclxuICAgIHZhciBQID0gUy5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnggIT09IGIueCA/IGIueCAtIGEueCA6IGIueSAtIGEueTsgfSk7XHJcbiAgICB2YXIgbiA9IFMubGVuZ3RoLCBpO1xyXG4gICAgdmFyIG1pbm1pbiA9IDA7XHJcbiAgICB2YXIgeG1pbiA9IFBbMF0ueDtcclxuICAgIGZvciAoaSA9IDE7IGkgPCBuOyArK2kpIHtcclxuICAgICAgICBpZiAoUFtpXS54ICE9PSB4bWluKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHZhciBtaW5tYXggPSBpIC0gMTtcclxuICAgIHZhciBIID0gW107XHJcbiAgICBILnB1c2goUFttaW5taW5dKTtcclxuICAgIGlmIChtaW5tYXggPT09IG4gLSAxKSB7XHJcbiAgICAgICAgaWYgKFBbbWlubWF4XS55ICE9PSBQW21pbm1pbl0ueSlcclxuICAgICAgICAgICAgSC5wdXNoKFBbbWlubWF4XSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgbWF4bWluLCBtYXhtYXggPSBuIC0gMTtcclxuICAgICAgICB2YXIgeG1heCA9IFBbbiAtIDFdLng7XHJcbiAgICAgICAgZm9yIChpID0gbiAtIDI7IGkgPj0gMDsgaS0tKVxyXG4gICAgICAgICAgICBpZiAoUFtpXS54ICE9PSB4bWF4KVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgbWF4bWluID0gaSArIDE7XHJcbiAgICAgICAgaSA9IG1pbm1heDtcclxuICAgICAgICB3aGlsZSAoKytpIDw9IG1heG1pbikge1xyXG4gICAgICAgICAgICBpZiAoaXNMZWZ0KFBbbWlubWluXSwgUFttYXhtaW5dLCBQW2ldKSA+PSAwICYmIGkgPCBtYXhtaW4pXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgd2hpbGUgKEgubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTGVmdChIW0gubGVuZ3RoIC0gMl0sIEhbSC5sZW5ndGggLSAxXSwgUFtpXSkgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIEgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgIT0gbWlubWluKVxyXG4gICAgICAgICAgICAgICAgSC5wdXNoKFBbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWF4bWF4ICE9IG1heG1pbilcclxuICAgICAgICAgICAgSC5wdXNoKFBbbWF4bWF4XSk7XHJcbiAgICAgICAgdmFyIGJvdCA9IEgubGVuZ3RoO1xyXG4gICAgICAgIGkgPSBtYXhtaW47XHJcbiAgICAgICAgd2hpbGUgKC0taSA+PSBtaW5tYXgpIHtcclxuICAgICAgICAgICAgaWYgKGlzTGVmdChQW21heG1heF0sIFBbbWlubWF4XSwgUFtpXSkgPj0gMCAmJiBpID4gbWlubWF4KVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIHdoaWxlIChILmxlbmd0aCA+IGJvdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTGVmdChIW0gubGVuZ3RoIC0gMl0sIEhbSC5sZW5ndGggLSAxXSwgUFtpXSkgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIEgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgIT0gbWlubWluKVxyXG4gICAgICAgICAgICAgICAgSC5wdXNoKFBbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBIO1xyXG59XHJcbmV4cG9ydHMuQ29udmV4SHVsbCA9IENvbnZleEh1bGw7XHJcbmZ1bmN0aW9uIGNsb2Nrd2lzZVJhZGlhbFN3ZWVwKHAsIFAsIGYpIHtcclxuICAgIFAuc2xpY2UoMCkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gTWF0aC5hdGFuMihhLnkgLSBwLnksIGEueCAtIHAueCkgLSBNYXRoLmF0YW4yKGIueSAtIHAueSwgYi54IC0gcC54KTsgfSkuZm9yRWFjaChmKTtcclxufVxyXG5leHBvcnRzLmNsb2Nrd2lzZVJhZGlhbFN3ZWVwID0gY2xvY2t3aXNlUmFkaWFsU3dlZXA7XHJcbmZ1bmN0aW9uIG5leHRQb2x5UG9pbnQocCwgcHMpIHtcclxuICAgIGlmIChwLnBvbHlJbmRleCA9PT0gcHMubGVuZ3RoIC0gMSlcclxuICAgICAgICByZXR1cm4gcHNbMF07XHJcbiAgICByZXR1cm4gcHNbcC5wb2x5SW5kZXggKyAxXTtcclxufVxyXG5mdW5jdGlvbiBwcmV2UG9seVBvaW50KHAsIHBzKSB7XHJcbiAgICBpZiAocC5wb2x5SW5kZXggPT09IDApXHJcbiAgICAgICAgcmV0dXJuIHBzW3BzLmxlbmd0aCAtIDFdO1xyXG4gICAgcmV0dXJuIHBzW3AucG9seUluZGV4IC0gMV07XHJcbn1cclxuZnVuY3Rpb24gdGFuZ2VudF9Qb2ludFBvbHlDKFAsIFYpIHtcclxuICAgIHZhciBWY2xvc2VkID0gVi5zbGljZSgwKTtcclxuICAgIFZjbG9zZWQucHVzaChWWzBdKTtcclxuICAgIHJldHVybiB7IHJ0YW46IFJ0YW5nZW50X1BvaW50UG9seUMoUCwgVmNsb3NlZCksIGx0YW46IEx0YW5nZW50X1BvaW50UG9seUMoUCwgVmNsb3NlZCkgfTtcclxufVxyXG5mdW5jdGlvbiBSdGFuZ2VudF9Qb2ludFBvbHlDKFAsIFYpIHtcclxuICAgIHZhciBuID0gVi5sZW5ndGggLSAxO1xyXG4gICAgdmFyIGEsIGIsIGM7XHJcbiAgICB2YXIgdXBBLCBkbkM7XHJcbiAgICBpZiAoYmVsb3coUCwgVlsxXSwgVlswXSkgJiYgIWFib3ZlKFAsIFZbbiAtIDFdLCBWWzBdKSlcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIGZvciAoYSA9IDAsIGIgPSBuOzspIHtcclxuICAgICAgICBpZiAoYiAtIGEgPT09IDEpXHJcbiAgICAgICAgICAgIGlmIChhYm92ZShQLCBWW2FdLCBWW2JdKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBhO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYjtcclxuICAgICAgICBjID0gTWF0aC5mbG9vcigoYSArIGIpIC8gMik7XHJcbiAgICAgICAgZG5DID0gYmVsb3coUCwgVltjICsgMV0sIFZbY10pO1xyXG4gICAgICAgIGlmIChkbkMgJiYgIWFib3ZlKFAsIFZbYyAtIDFdLCBWW2NdKSlcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgdXBBID0gYWJvdmUoUCwgVlthICsgMV0sIFZbYV0pO1xyXG4gICAgICAgIGlmICh1cEEpIHtcclxuICAgICAgICAgICAgaWYgKGRuQylcclxuICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChhYm92ZShQLCBWW2FdLCBWW2NdKSlcclxuICAgICAgICAgICAgICAgICAgICBiID0gYztcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBhID0gYztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFkbkMpXHJcbiAgICAgICAgICAgICAgICBhID0gYztcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmVsb3coUCwgVlthXSwgVltjXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgYiA9IGM7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgYSA9IGM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gTHRhbmdlbnRfUG9pbnRQb2x5QyhQLCBWKSB7XHJcbiAgICB2YXIgbiA9IFYubGVuZ3RoIC0gMTtcclxuICAgIHZhciBhLCBiLCBjO1xyXG4gICAgdmFyIGRuQSwgZG5DO1xyXG4gICAgaWYgKGFib3ZlKFAsIFZbbiAtIDFdLCBWWzBdKSAmJiAhYmVsb3coUCwgVlsxXSwgVlswXSkpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICBmb3IgKGEgPSAwLCBiID0gbjs7KSB7XHJcbiAgICAgICAgaWYgKGIgLSBhID09PSAxKVxyXG4gICAgICAgICAgICBpZiAoYmVsb3coUCwgVlthXSwgVltiXSkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGI7XHJcbiAgICAgICAgYyA9IE1hdGguZmxvb3IoKGEgKyBiKSAvIDIpO1xyXG4gICAgICAgIGRuQyA9IGJlbG93KFAsIFZbYyArIDFdLCBWW2NdKTtcclxuICAgICAgICBpZiAoYWJvdmUoUCwgVltjIC0gMV0sIFZbY10pICYmICFkbkMpXHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIGRuQSA9IGJlbG93KFAsIFZbYSArIDFdLCBWW2FdKTtcclxuICAgICAgICBpZiAoZG5BKSB7XHJcbiAgICAgICAgICAgIGlmICghZG5DKVxyXG4gICAgICAgICAgICAgICAgYiA9IGM7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJlbG93KFAsIFZbYV0sIFZbY10pKVxyXG4gICAgICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGEgPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZG5DKVxyXG4gICAgICAgICAgICAgICAgYSA9IGM7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFib3ZlKFAsIFZbYV0sIFZbY10pKVxyXG4gICAgICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGEgPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRhbmdlbnRfUG9seVBvbHlDKFYsIFcsIHQxLCB0MiwgY21wMSwgY21wMikge1xyXG4gICAgdmFyIGl4MSwgaXgyO1xyXG4gICAgaXgxID0gdDEoV1swXSwgVik7XHJcbiAgICBpeDIgPSB0MihWW2l4MV0sIFcpO1xyXG4gICAgdmFyIGRvbmUgPSBmYWxzZTtcclxuICAgIHdoaWxlICghZG9uZSkge1xyXG4gICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgIGlmIChpeDEgPT09IFYubGVuZ3RoIC0gMSlcclxuICAgICAgICAgICAgICAgIGl4MSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChjbXAxKFdbaXgyXSwgVltpeDFdLCBWW2l4MSArIDFdKSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICArK2l4MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgaWYgKGl4MiA9PT0gMClcclxuICAgICAgICAgICAgICAgIGl4MiA9IFcubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgaWYgKGNtcDIoVltpeDFdLCBXW2l4Ml0sIFdbaXgyIC0gMV0pKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIC0taXgyO1xyXG4gICAgICAgICAgICBkb25lID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdDE6IGl4MSwgdDI6IGl4MiB9O1xyXG59XHJcbmV4cG9ydHMudGFuZ2VudF9Qb2x5UG9seUMgPSB0YW5nZW50X1BvbHlQb2x5QztcclxuZnVuY3Rpb24gTFJ0YW5nZW50X1BvbHlQb2x5QyhWLCBXKSB7XHJcbiAgICB2YXIgcmwgPSBSTHRhbmdlbnRfUG9seVBvbHlDKFcsIFYpO1xyXG4gICAgcmV0dXJuIHsgdDE6IHJsLnQyLCB0MjogcmwudDEgfTtcclxufVxyXG5leHBvcnRzLkxSdGFuZ2VudF9Qb2x5UG9seUMgPSBMUnRhbmdlbnRfUG9seVBvbHlDO1xyXG5mdW5jdGlvbiBSTHRhbmdlbnRfUG9seVBvbHlDKFYsIFcpIHtcclxuICAgIHJldHVybiB0YW5nZW50X1BvbHlQb2x5QyhWLCBXLCBSdGFuZ2VudF9Qb2ludFBvbHlDLCBMdGFuZ2VudF9Qb2ludFBvbHlDLCBhYm92ZSwgYmVsb3cpO1xyXG59XHJcbmV4cG9ydHMuUkx0YW5nZW50X1BvbHlQb2x5QyA9IFJMdGFuZ2VudF9Qb2x5UG9seUM7XHJcbmZ1bmN0aW9uIExMdGFuZ2VudF9Qb2x5UG9seUMoViwgVykge1xyXG4gICAgcmV0dXJuIHRhbmdlbnRfUG9seVBvbHlDKFYsIFcsIEx0YW5nZW50X1BvaW50UG9seUMsIEx0YW5nZW50X1BvaW50UG9seUMsIGJlbG93LCBiZWxvdyk7XHJcbn1cclxuZXhwb3J0cy5MTHRhbmdlbnRfUG9seVBvbHlDID0gTEx0YW5nZW50X1BvbHlQb2x5QztcclxuZnVuY3Rpb24gUlJ0YW5nZW50X1BvbHlQb2x5QyhWLCBXKSB7XHJcbiAgICByZXR1cm4gdGFuZ2VudF9Qb2x5UG9seUMoViwgVywgUnRhbmdlbnRfUG9pbnRQb2x5QywgUnRhbmdlbnRfUG9pbnRQb2x5QywgYWJvdmUsIGFib3ZlKTtcclxufVxyXG5leHBvcnRzLlJSdGFuZ2VudF9Qb2x5UG9seUMgPSBSUnRhbmdlbnRfUG9seVBvbHlDO1xyXG52YXIgQmlUYW5nZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJpVGFuZ2VudCh0MSwgdDIpIHtcclxuICAgICAgICB0aGlzLnQxID0gdDE7XHJcbiAgICAgICAgdGhpcy50MiA9IHQyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEJpVGFuZ2VudDtcclxufSgpKTtcclxuZXhwb3J0cy5CaVRhbmdlbnQgPSBCaVRhbmdlbnQ7XHJcbnZhciBCaVRhbmdlbnRzID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJpVGFuZ2VudHMoKSB7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQmlUYW5nZW50cztcclxufSgpKTtcclxuZXhwb3J0cy5CaVRhbmdlbnRzID0gQmlUYW5nZW50cztcclxudmFyIFRWR1BvaW50ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhUVkdQb2ludCwgX3N1cGVyKTtcclxuICAgIGZ1bmN0aW9uIFRWR1BvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBUVkdQb2ludDtcclxufShQb2ludCkpO1xyXG5leHBvcnRzLlRWR1BvaW50ID0gVFZHUG9pbnQ7XHJcbnZhciBWaXNpYmlsaXR5VmVydGV4ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZpc2liaWxpdHlWZXJ0ZXgoaWQsIHBvbHlpZCwgcG9seXZlcnRpZCwgcCkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnBvbHlpZCA9IHBvbHlpZDtcclxuICAgICAgICB0aGlzLnBvbHl2ZXJ0aWQgPSBwb2x5dmVydGlkO1xyXG4gICAgICAgIHRoaXMucCA9IHA7XHJcbiAgICAgICAgcC52diA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gVmlzaWJpbGl0eVZlcnRleDtcclxufSgpKTtcclxuZXhwb3J0cy5WaXNpYmlsaXR5VmVydGV4ID0gVmlzaWJpbGl0eVZlcnRleDtcclxudmFyIFZpc2liaWxpdHlFZGdlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZpc2liaWxpdHlFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBWaXNpYmlsaXR5RWRnZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBkeCA9IHRoaXMuc291cmNlLnAueCAtIHRoaXMudGFyZ2V0LnAueDtcclxuICAgICAgICB2YXIgZHkgPSB0aGlzLnNvdXJjZS5wLnkgLSB0aGlzLnRhcmdldC5wLnk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFZpc2liaWxpdHlFZGdlO1xyXG59KCkpO1xyXG5leHBvcnRzLlZpc2liaWxpdHlFZGdlID0gVmlzaWJpbGl0eUVkZ2U7XHJcbnZhciBUYW5nZW50VmlzaWJpbGl0eUdyYXBoID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFRhbmdlbnRWaXNpYmlsaXR5R3JhcGgoUCwgZzApIHtcclxuICAgICAgICB0aGlzLlAgPSBQO1xyXG4gICAgICAgIHRoaXMuViA9IFtdO1xyXG4gICAgICAgIHRoaXMuRSA9IFtdO1xyXG4gICAgICAgIGlmICghZzApIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBQLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gUFtpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcC5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwaiA9IHBbal0sIHZ2ID0gbmV3IFZpc2liaWxpdHlWZXJ0ZXgodGhpcy5WLmxlbmd0aCwgaSwgaiwgcGopO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuVi5wdXNoKHZ2KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaiA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRS5wdXNoKG5ldyBWaXNpYmlsaXR5RWRnZShwW2ogLSAxXS52diwgdnYpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5FLnB1c2gobmV3IFZpc2liaWxpdHlFZGdlKHBbMF0udnYsIHBbcC5sZW5ndGggLSAxXS52dikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIFBpID0gUFtpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMTsgaiA8IG47IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBQaiA9IFBbal0sIHQgPSB0YW5nZW50cyhQaSwgUGopO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHEgaW4gdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRbcV0sIHNvdXJjZSA9IFBpW2MudDFdLCB0YXJnZXQgPSBQaltjLnQyXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFZGdlSWZWaXNpYmxlKHNvdXJjZSwgdGFyZ2V0LCBpLCBqKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuViA9IGcwLlYuc2xpY2UoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuRSA9IGcwLkUuc2xpY2UoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgVGFuZ2VudFZpc2liaWxpdHlHcmFwaC5wcm90b3R5cGUuYWRkRWRnZUlmVmlzaWJsZSA9IGZ1bmN0aW9uICh1LCB2LCBpMSwgaTIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW50ZXJzZWN0c1BvbHlzKG5ldyBMaW5lU2VnbWVudCh1LngsIHUueSwgdi54LCB2LnkpLCBpMSwgaTIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRS5wdXNoKG5ldyBWaXNpYmlsaXR5RWRnZSh1LnZ2LCB2LnZ2KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFRhbmdlbnRWaXNpYmlsaXR5R3JhcGgucHJvdG90eXBlLmFkZFBvaW50ID0gZnVuY3Rpb24gKHAsIGkxKSB7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLlAubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuVi5wdXNoKG5ldyBWaXNpYmlsaXR5VmVydGV4KHRoaXMuVi5sZW5ndGgsIG4sIDAsIHApKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaTEpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIHBvbHkgPSB0aGlzLlBbaV0sIHQgPSB0YW5nZW50X1BvaW50UG9seUMocCwgcG9seSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRWRnZUlmVmlzaWJsZShwLCBwb2x5W3QubHRhbl0sIGkxLCBpKTtcclxuICAgICAgICAgICAgdGhpcy5hZGRFZGdlSWZWaXNpYmxlKHAsIHBvbHlbdC5ydGFuXSwgaTEsIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcC52djtcclxuICAgIH07XHJcbiAgICBUYW5nZW50VmlzaWJpbGl0eUdyYXBoLnByb3RvdHlwZS5pbnRlcnNlY3RzUG9seXMgPSBmdW5jdGlvbiAobCwgaTEsIGkyKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLlAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChpICE9IGkxICYmIGkgIT0gaTIgJiYgaW50ZXJzZWN0cyhsLCB0aGlzLlBbaV0pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gVGFuZ2VudFZpc2liaWxpdHlHcmFwaDtcclxufSgpKTtcclxuZXhwb3J0cy5UYW5nZW50VmlzaWJpbGl0eUdyYXBoID0gVGFuZ2VudFZpc2liaWxpdHlHcmFwaDtcclxuZnVuY3Rpb24gaW50ZXJzZWN0cyhsLCBQKSB7XHJcbiAgICB2YXIgaW50cyA9IFtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDEsIG4gPSBQLmxlbmd0aDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgIHZhciBpbnQgPSByZWN0YW5nbGVfMS5SZWN0YW5nbGUubGluZUludGVyc2VjdGlvbihsLngxLCBsLnkxLCBsLngyLCBsLnkyLCBQW2kgLSAxXS54LCBQW2kgLSAxXS55LCBQW2ldLngsIFBbaV0ueSk7XHJcbiAgICAgICAgaWYgKGludClcclxuICAgICAgICAgICAgaW50cy5wdXNoKGludCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW50cztcclxufVxyXG5mdW5jdGlvbiB0YW5nZW50cyhWLCBXKSB7XHJcbiAgICB2YXIgbSA9IFYubGVuZ3RoIC0gMSwgbiA9IFcubGVuZ3RoIC0gMTtcclxuICAgIHZhciBidCA9IG5ldyBCaVRhbmdlbnRzKCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKSB7XHJcbiAgICAgICAgICAgIHZhciB2MSA9IFZbaSA9PSAwID8gbSAtIDEgOiBpIC0gMV07XHJcbiAgICAgICAgICAgIHZhciB2MiA9IFZbaV07XHJcbiAgICAgICAgICAgIHZhciB2MyA9IFZbaSArIDFdO1xyXG4gICAgICAgICAgICB2YXIgdzEgPSBXW2ogPT0gMCA/IG4gLSAxIDogaiAtIDFdO1xyXG4gICAgICAgICAgICB2YXIgdzIgPSBXW2pdO1xyXG4gICAgICAgICAgICB2YXIgdzMgPSBXW2ogKyAxXTtcclxuICAgICAgICAgICAgdmFyIHYxdjJ3MiA9IGlzTGVmdCh2MSwgdjIsIHcyKTtcclxuICAgICAgICAgICAgdmFyIHYydzF3MiA9IGlzTGVmdCh2MiwgdzEsIHcyKTtcclxuICAgICAgICAgICAgdmFyIHYydzJ3MyA9IGlzTGVmdCh2MiwgdzIsIHczKTtcclxuICAgICAgICAgICAgdmFyIHcxdzJ2MiA9IGlzTGVmdCh3MSwgdzIsIHYyKTtcclxuICAgICAgICAgICAgdmFyIHcydjF2MiA9IGlzTGVmdCh3MiwgdjEsIHYyKTtcclxuICAgICAgICAgICAgdmFyIHcydjJ2MyA9IGlzTGVmdCh3MiwgdjIsIHYzKTtcclxuICAgICAgICAgICAgaWYgKHYxdjJ3MiA+PSAwICYmIHYydzF3MiA+PSAwICYmIHYydzJ3MyA8IDBcclxuICAgICAgICAgICAgICAgICYmIHcxdzJ2MiA+PSAwICYmIHcydjF2MiA+PSAwICYmIHcydjJ2MyA8IDApIHtcclxuICAgICAgICAgICAgICAgIGJ0LmxsID0gbmV3IEJpVGFuZ2VudChpLCBqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2MXYydzIgPD0gMCAmJiB2MncxdzIgPD0gMCAmJiB2MncydzMgPiAwXHJcbiAgICAgICAgICAgICAgICAmJiB3MXcydjIgPD0gMCAmJiB3MnYxdjIgPD0gMCAmJiB3MnYydjMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBidC5yciA9IG5ldyBCaVRhbmdlbnQoaSwgaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodjF2MncyIDw9IDAgJiYgdjJ3MXcyID4gMCAmJiB2MncydzMgPD0gMFxyXG4gICAgICAgICAgICAgICAgJiYgdzF3MnYyID49IDAgJiYgdzJ2MXYyIDwgMCAmJiB3MnYydjMgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnQucmwgPSBuZXcgQmlUYW5nZW50KGksIGopO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHYxdjJ3MiA+PSAwICYmIHYydzF3MiA8IDAgJiYgdjJ3MnczID49IDBcclxuICAgICAgICAgICAgICAgICYmIHcxdzJ2MiA8PSAwICYmIHcydjF2MiA+IDAgJiYgdzJ2MnYzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIGJ0LmxyID0gbmV3IEJpVGFuZ2VudChpLCBqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBidDtcclxufVxyXG5leHBvcnRzLnRhbmdlbnRzID0gdGFuZ2VudHM7XHJcbmZ1bmN0aW9uIGlzUG9pbnRJbnNpZGVQb2x5KHAsIHBvbHkpIHtcclxuICAgIGZvciAodmFyIGkgPSAxLCBuID0gcG9seS5sZW5ndGg7IGkgPCBuOyArK2kpXHJcbiAgICAgICAgaWYgKGJlbG93KHBvbHlbaSAtIDFdLCBwb2x5W2ldLCBwKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gaXNBbnlQSW5RKHAsIHEpIHtcclxuICAgIHJldHVybiAhcC5ldmVyeShmdW5jdGlvbiAodikgeyByZXR1cm4gIWlzUG9pbnRJbnNpZGVQb2x5KHYsIHEpOyB9KTtcclxufVxyXG5mdW5jdGlvbiBwb2x5c092ZXJsYXAocCwgcSkge1xyXG4gICAgaWYgKGlzQW55UEluUShwLCBxKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChpc0FueVBJblEocSwgcCkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBmb3IgKHZhciBpID0gMSwgbiA9IHAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHYgPSBwW2ldLCB1ID0gcFtpIC0gMV07XHJcbiAgICAgICAgaWYgKGludGVyc2VjdHMobmV3IExpbmVTZWdtZW50KHUueCwgdS55LCB2LngsIHYueSksIHEpLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmV4cG9ydHMucG9seXNPdmVybGFwID0gcG9seXNPdmVybGFwO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlZ2YlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwxZGxZa052YkdFdmMzSmpMMmRsYjIwdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3TzBGQlFVRXNlVU5CUVhGRE8wRkJRMnBETzBsQlFVRTdTVUZIUVN4RFFVRkRPMGxCUVVRc1dVRkJRenRCUVVGRUxFTkJRVU1zUVVGSVJDeEpRVWRETzBGQlNGa3NjMEpCUVVzN1FVRkxiRUk3U1VGRFNTeHhRa0ZCYlVJc1JVRkJWU3hGUVVGVExFVkJRVlVzUlVGQlV5eEZRVUZWTEVWQlFWTXNSVUZCVlR0UlFVRnVSU3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZSTzFGQlFWTXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdVVUZCVXl4UFFVRkZMRWRCUVVZc1JVRkJSU3hEUVVGUk8wbEJRVWtzUTBGQlF6dEpRVU12Uml4clFrRkJRenRCUVVGRUxFTkJRVU1zUVVGR1JDeEpRVVZETzBGQlJsa3NhME5CUVZjN1FVRkplRUk3U1VGQkswSXNOa0pCUVVzN1NVRkJjRU03TzBsQlJVRXNRMEZCUXp0SlFVRkVMR2RDUVVGRE8wRkJRVVFzUTBGQlF5eEJRVVpFTEVOQlFTdENMRXRCUVVzc1IwRkZia003UVVGR1dTdzRRa0ZCVXp0QlFWVjBRaXhUUVVGblFpeE5RVUZOTEVOQlFVTXNSVUZCVXl4RlFVRkZMRVZCUVZNc1JVRkJSU3hGUVVGVE8wbEJRMnhFTEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJTeERRVUZETzBGQlJrUXNkMEpCUlVNN1FVRkZSQ3hUUVVGVExFdEJRVXNzUTBGQlF5eERRVUZSTEVWQlFVVXNSVUZCVXl4RlFVRkZMRVZCUVZNN1NVRkRla01zVDBGQlR5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYWtNc1EwRkJRenRCUVVWRUxGTkJRVk1zUzBGQlN5eERRVUZETEVOQlFWRXNSVUZCUlN4RlFVRlRMRVZCUVVVc1JVRkJVenRKUVVONlF5eFBRVUZQTEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnFReXhEUVVGRE8wRkJVMFFzVTBGQlowSXNWVUZCVlN4RFFVRkRMRU5CUVZVN1NVRkRha01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmJrTXNRMEZCYlVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzQkNMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU5tTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVJc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGNFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVazdXVUZCUlN4TlFVRk5PMHRCUXpsQ08wbEJRMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCV1N4RlFVRkZMRU5CUVVNN1NVRkRjRUlzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5zUWl4SlFVRkpMRTFCUVUwc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEyeENMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwQ08xTkJRVTA3VVVGRlNDeEpRVUZKTEUxQlFVMHNSVUZCUlN4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU16UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMFFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSk8yZENRVUZGTEUxQlFVMDdVVUZETDBJc1RVRkJUU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZIWml4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMWdzVDBGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU1N4TlFVRk5MRVZCUVVVN1dVRkZiRUlzU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwN1owSkJRM0pFTEZOQlFWTTdXVUZGWWl4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVU51UWp0blFrRkZTU3hKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8yOUNRVU5zUkN4TlFVRk5PenR2UWtGRlRpeERRVUZETEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOeVFqdFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwN1owSkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU5xUXp0UlFVZEVMRWxCUVVrc1RVRkJUU3hKUVVGSkxFMUJRVTA3V1VGRGFFSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTI1Q0xFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTTdVVUZEV0N4UFFVRlBMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVVZzUWl4SlFVRkpMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVFVGQlRUdG5Ra0ZEY2tRc1UwRkJVenRaUVVWaUxFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUTNKQ08yZENRVVZKTEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTTdiMEpCUTJ4RUxFMUJRVTA3TzI5Q1FVVk9MRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEzSkNPMWxCUTBRc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRUdG5Ra0ZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMG83U1VGRFJDeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTmlMRU5CUVVNN1FVRTVSRVFzWjBOQk9FUkRPMEZCUjBRc1UwRkJaMElzYjBKQlFXOUNMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVlVzUlVGQlJTeERRVUZ4UWp0SlFVTTFSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkRXQ3hWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmJrVXNRMEZCYlVVc1EwRkROVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRja0lzUTBGQlF6dEJRVXBFTEc5RVFVbERPMEZCUlVRc1UwRkJVeXhoUVVGaExFTkJRVU1zUTBGQldTeEZRVUZGTEVWQlFXVTdTVUZEYUVRc1NVRkJTU3hEUVVGRExFTkJRVU1zVTBGQlV5eExRVUZMTEVWQlFVVXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJoRUxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVMRk5CUVZNc1lVRkJZU3hEUVVGRExFTkJRVmtzUlVGQlJTeEZRVUZsTzBsQlEyaEVMRWxCUVVrc1EwRkJReXhEUVVGRExGTkJRVk1zUzBGQlN5eERRVUZETzFGQlFVVXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlDTEVOQlFVTTdRVUZSUkN4VFFVRlRMR3RDUVVGclFpeERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlZPMGxCUnpWRExFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVnVRaXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03UVVGRE5VWXNRMEZCUXp0QlFWTkVMRk5CUVZNc2JVSkJRVzFDTEVOQlFVTXNRMEZCVVN4RlFVRkZMRU5CUVZVN1NVRkROME1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGSGNrSXNTVUZCU1N4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFTkJRVk1zUTBGQlF6dEpRVU53UXl4SlFVRkpMRWRCUVZrc1JVRkJSU3hIUVVGWkxFTkJRVU03U1VGSkwwSXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFrUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkZZaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVOWUxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1FpeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1owSkJSVlFzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGYWtJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlFpeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYUVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGSllpeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUNMRWxCUVVrc1IwRkJSeXhGUVVGRk8xbEJRMHdzU1VGQlNTeEhRVUZITzJkQ1FVTklMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03YVVKQlEwdzdaMEpCUTBRc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNCQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMjlDUVVWT0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZEWWp0VFFVTktPMkZCUTBrN1dVRkRSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ6dG5Ra0ZEU2l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8ybENRVU5NTzJkQ1FVTkVMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTndRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZET3p0dlFrRkZUaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEySTdVMEZEU2p0TFFVTktPMEZCUTB3c1EwRkJRenRCUVZGRUxGTkJRVk1zYlVKQlFXMUNMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVlU3U1VGRE4wTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGY2tJc1NVRkJTU3hEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEVOQlFWTXNRMEZCUXp0SlFVTndReXhKUVVGSkxFZEJRVmtzUlVGQlJTeEhRVUZaTEVOQlFVTTdTVUZKTDBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRllpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlN6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU5ZTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJRenM3WjBKQlJWUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZha0lzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UWl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjN1dVRkRhRU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZKWWl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5Q0xFbEJRVWtzUjBGQlJ5eEZRVUZGTzFsQlEwd3NTVUZCU1N4RFFVRkRMRWRCUVVjN1owSkJRMG9zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRURHRuUWtGRFJDeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGNFSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenM3YjBKQlJVNHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOaU8xTkJRMG83WVVGRFNUdFpRVU5FTEVsQlFVa3NSMEZCUnp0blFrRkRTQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJsQ1FVTk1PMmRDUVVORUxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOd1FpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenR2UWtGRlRpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTJJN1UwRkRTanRMUVVOS08wRkJRMHdzUTBGQlF6dEJRVk5FTEZOQlFXZENMR2xDUVVGcFFpeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZMRVZCUVVVc1JVRkJiME1zUlVGQlJTeEZRVUZ2UXl4RlFVRkZMRWxCUVN0RExFVkJRVVVzU1VGQkswTTdTVUZEYkU4c1NVRkJTU3hIUVVGWExFVkJRVVVzUjBGQlZ5eERRVUZETzBsQlJ6ZENMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnhDTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUjNCQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTnFRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzFGQlExWXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzU1VGQlNTeEZRVUZGTzFsQlExUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVGRkxFMUJRVTA3V1VGRE5VTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1UwRkRWRHRSUVVORUxFOUJRVThzU1VGQlNTeEZRVUZGTzFsQlExUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJRenRuUWtGQlJTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVGRkxFMUJRVTA3V1VGRE5VTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1dVRkRUaXhKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETzFOQlEyaENPMHRCUTBvN1NVRkRSQ3hQUVVGUExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGFFTXNRMEZCUXp0QlFYaENSQ3c0UTBGM1FrTTdRVUZGUkN4VFFVRm5RaXh0UWtGQmJVSXNRMEZCUXl4RFFVRlZMRVZCUVVVc1EwRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRia01zVDBGQlR5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNN1FVRkRjRU1zUTBGQlF6dEJRVWhFTEd0RVFVZERPMEZCUlVRc1UwRkJaMElzYlVKQlFXMUNMRU5CUVVNc1EwRkJWU3hGUVVGRkxFTkJRVlU3U1VGRGRFUXNUMEZCVHl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTXpSaXhEUVVGRE8wRkJSa1FzYTBSQlJVTTdRVUZGUkN4VFFVRm5RaXh0UWtGQmJVSXNRMEZCUXl4RFFVRlZMRVZCUVVVc1EwRkJWVHRKUVVOMFJDeFBRVUZQTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzYlVKQlFXMUNMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6TkdMRU5CUVVNN1FVRkdSQ3hyUkVGRlF6dEJRVVZFTEZOQlFXZENMRzFDUVVGdFFpeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZPMGxCUTNSRUxFOUJRVThzYVVKQlFXbENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3h0UWtGQmJVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE0wWXNRMEZCUXp0QlFVWkVMR3RFUVVWRE8wRkJSVVE3U1VGRFNTeHRRa0ZCYlVJc1JVRkJWU3hGUVVGVExFVkJRVlU3VVVGQk4wSXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdTVUZCU1N4RFFVRkRPMGxCUTNwRUxHZENRVUZETzBGQlFVUXNRMEZCUXl4QlFVWkVMRWxCUlVNN1FVRkdXU3c0UWtGQlV6dEJRVWwwUWp0SlFVRkJPMGxCUzBFc1EwRkJRenRKUVVGRUxHbENRVUZETzBGQlFVUXNRMEZCUXl4QlFVeEVMRWxCUzBNN1FVRk1XU3huUTBGQlZUdEJRVTkyUWp0SlFVRTRRaXcwUWtGQlN6dEpRVUZ1UXpzN1NVRkZRU3hEUVVGRE8wbEJRVVFzWlVGQlF6dEJRVUZFTEVOQlFVTXNRVUZHUkN4RFFVRTRRaXhMUVVGTExFZEJSV3hETzBGQlJsa3NORUpCUVZFN1FVRkpja0k3U1VGRFNTd3dRa0ZEVnl4RlFVRlZMRVZCUTFZc1RVRkJZeXhGUVVOa0xGVkJRV3RDTEVWQlEyeENMRU5CUVZjN1VVRklXQ3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZSTzFGQlExWXNWMEZCVFN4SFFVRk9MRTFCUVUwc1EwRkJVVHRSUVVOa0xHVkJRVlVzUjBGQlZpeFZRVUZWTEVOQlFWRTdVVUZEYkVJc1RVRkJReXhIUVVGRUxFTkJRVU1zUTBGQlZUdFJRVVZzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUTB3c2RVSkJRVU03UVVGQlJDeERRVUZETEVGQlZFUXNTVUZUUXp0QlFWUlpMRFJEUVVGblFqdEJRVmMzUWp0SlFVTkpMSGRDUVVOWExFMUJRWGRDTEVWQlEzaENMRTFCUVhkQ08xRkJSSGhDTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVd0Q08xRkJRM2hDTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVd0Q08wbEJRVWtzUTBGQlF6dEpRVU40UXl3clFrRkJUU3hIUVVGT08xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpORExFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTjRReXhEUVVGRE8wbEJRMHdzY1VKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVkVRc1NVRlRRenRCUVZSWkxIZERRVUZqTzBGQlZ6TkNPMGxCUjBrc1owTkJRVzFDTEVOQlFXVXNSVUZCUlN4RlFVRnRSRHRSUVVGd1JTeE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRmpPMUZCUm14RExFMUJRVU1zUjBGQmRVSXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVU1zUjBGQmNVSXNSVUZCUlN4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEVEN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlJXcENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEzaENMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZZaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRMMElzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOVUxFVkJRVVVzUjBGQlJ5eEpRVUZKTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdiMEpCUTNaRUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yOUNRVWxvUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8zZENRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJReTlFTzJkQ1FVVkVMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzI5Q1FVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOc1JqdFpRVU5FTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU0xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRWQ3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3ZDBKQlEySXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU5TTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzNkQ1FVTjZReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJReTlETzJsQ1FVTktPMkZCUTBvN1UwRkRTanRoUVVGTk8xbEJRMGdzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjJRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6RkNPMGxCUTB3c1EwRkJRenRKUVVORUxHbEVRVUZuUWl4SFFVRm9RaXhWUVVGcFFpeERRVUZYTEVWQlFVVXNRMEZCVnl4RlFVRkZMRVZCUVZVc1JVRkJSU3hGUVVGVk8xRkJRemRFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRjRVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UXp0SlFVTk1MRU5CUVVNN1NVRkRSQ3g1UTBGQlVTeEhRVUZTTEZWQlFWTXNRMEZCVnl4RlFVRkZMRVZCUVZVN1VVRkROVUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGRFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETVVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8yZENRVUZGTEZOQlFWTTdXVUZEZGtJc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRhRUlzUTBGQlF5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTndReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6bERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGFrUTdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVTlBMR2RFUVVGbExFZEJRWFpDTEZWQlFYZENMRU5CUVdNc1JVRkJSU3hGUVVGVkxFVkJRVVVzUlVGQlZUdFJRVU14UkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU16UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVObU8xTkJRMG83VVVGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUXp0SlFVTnFRaXhEUVVGRE8wbEJRMHdzTmtKQlFVTTdRVUZCUkN4RFFVRkRMRUZCYUVWRUxFbEJaMFZETzBGQmFFVlpMSGRFUVVGelFqdEJRV3RGYmtNc1UwRkJVeXhWUVVGVkxFTkJRVU1zUTBGQll5eEZRVUZGTEVOQlFWVTdTVUZETVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEyUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eHhRa0ZCVXl4RFFVRkRMR2RDUVVGblFpeERRVU5vUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlExWXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVU5XTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU4wUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRMklzUTBGQlF6dFJRVU5PTEVsQlFVa3NSMEZCUnp0WlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZETTBJN1NVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRc1UwRkJaMElzVVVGQlVTeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZPMGxCUlRORExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4SlFVRkpMRlZCUVZVc1JVRkJSU3hEUVVGRE8wbEJRekZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRlRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyNURMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTmtMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyaERMRWxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyaERMRWxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRPMjFDUVVOeVF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRla01zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYmtNN2FVSkJRVTBzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTTdiVUpCUXpWRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzJkQ1FVTjZReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU51UXp0cFFrRkJUU3hKUVVGSkxFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJTU3hOUVVGTkxFbEJRVWtzUTBGQlF6dHRRa0ZETlVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEzcERMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzJsQ1FVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRE8yMUNRVU0xUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRuUWtGRGVrTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRia003VTBGRFNqdExRVU5LTzBsQlEwUXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJiRU5FTERSQ1FXdERRenRCUVVWRUxGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1EwRkJVU3hGUVVGRkxFbEJRV0U3U1VGRE9VTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZEZGtNc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRGNrUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFTEZOQlFWTXNVMEZCVXl4RFFVRkRMRU5CUVZVc1JVRkJSU3hEUVVGVk8wbEJRM0pETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVhoQ0xFTkJRWGRDTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3hEUVVGRE8wRkJSVVFzVTBGQlowSXNXVUZCV1N4RFFVRkRMRU5CUVZVc1JVRkJSU3hEUVVGVk8wbEJReTlETEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTnFReXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRGFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzU1VGQlNTeFZRVUZWTEVOQlFVTXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1MwRkRiRVk3U1VGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTnFRaXhEUVVGRE8wRkJVa1FzYjBOQlVVTWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHBhY2tpbmdPcHRpb25zID0ge1xyXG4gICAgUEFERElORzogMTAsXHJcbiAgICBHT0xERU5fU0VDVElPTjogKDEgKyBNYXRoLnNxcnQoNSkpIC8gMixcclxuICAgIEZMT0FUX0VQU0lMT046IDAuMDAwMSxcclxuICAgIE1BWF9JTkVSQVRJT05TOiAxMDBcclxufTtcclxuZnVuY3Rpb24gYXBwbHlQYWNraW5nKGdyYXBocywgdywgaCwgbm9kZV9zaXplLCBkZXNpcmVkX3JhdGlvLCBjZW50ZXJHcmFwaCkge1xyXG4gICAgaWYgKGRlc2lyZWRfcmF0aW8gPT09IHZvaWQgMCkgeyBkZXNpcmVkX3JhdGlvID0gMTsgfVxyXG4gICAgaWYgKGNlbnRlckdyYXBoID09PSB2b2lkIDApIHsgY2VudGVyR3JhcGggPSB0cnVlOyB9XHJcbiAgICB2YXIgaW5pdF94ID0gMCwgaW5pdF95ID0gMCwgc3ZnX3dpZHRoID0gdywgc3ZnX2hlaWdodCA9IGgsIGRlc2lyZWRfcmF0aW8gPSB0eXBlb2YgZGVzaXJlZF9yYXRpbyAhPT0gJ3VuZGVmaW5lZCcgPyBkZXNpcmVkX3JhdGlvIDogMSwgbm9kZV9zaXplID0gdHlwZW9mIG5vZGVfc2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyBub2RlX3NpemUgOiAwLCByZWFsX3dpZHRoID0gMCwgcmVhbF9oZWlnaHQgPSAwLCBtaW5fd2lkdGggPSAwLCBnbG9iYWxfYm90dG9tID0gMCwgbGluZSA9IFtdO1xyXG4gICAgaWYgKGdyYXBocy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjYWxjdWxhdGVfYmIoZ3JhcGhzKTtcclxuICAgIGFwcGx5KGdyYXBocywgZGVzaXJlZF9yYXRpbyk7XHJcbiAgICBpZiAoY2VudGVyR3JhcGgpIHtcclxuICAgICAgICBwdXRfbm9kZXNfdG9fcmlnaHRfcG9zaXRpb25zKGdyYXBocyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVfYmIoZ3JhcGhzKSB7XHJcbiAgICAgICAgZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICAgICAgY2FsY3VsYXRlX3NpbmdsZV9iYihnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVfc2luZ2xlX2JiKGdyYXBoKSB7XHJcbiAgICAgICAgICAgIHZhciBtaW5feCA9IE51bWJlci5NQVhfVkFMVUUsIG1pbl95ID0gTnVtYmVyLk1BWF9WQUxVRSwgbWF4X3ggPSAwLCBtYXhfeSA9IDA7XHJcbiAgICAgICAgICAgIGdyYXBoLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIHZhciB3ID0gdHlwZW9mIHYud2lkdGggIT09ICd1bmRlZmluZWQnID8gdi53aWR0aCA6IG5vZGVfc2l6ZTtcclxuICAgICAgICAgICAgICAgIHZhciBoID0gdHlwZW9mIHYuaGVpZ2h0ICE9PSAndW5kZWZpbmVkJyA/IHYuaGVpZ2h0IDogbm9kZV9zaXplO1xyXG4gICAgICAgICAgICAgICAgdyAvPSAyO1xyXG4gICAgICAgICAgICAgICAgaCAvPSAyO1xyXG4gICAgICAgICAgICAgICAgbWF4X3ggPSBNYXRoLm1heCh2LnggKyB3LCBtYXhfeCk7XHJcbiAgICAgICAgICAgICAgICBtaW5feCA9IE1hdGgubWluKHYueCAtIHcsIG1pbl94KTtcclxuICAgICAgICAgICAgICAgIG1heF95ID0gTWF0aC5tYXgodi55ICsgaCwgbWF4X3kpO1xyXG4gICAgICAgICAgICAgICAgbWluX3kgPSBNYXRoLm1pbih2LnkgLSBoLCBtaW5feSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBncmFwaC53aWR0aCA9IG1heF94IC0gbWluX3g7XHJcbiAgICAgICAgICAgIGdyYXBoLmhlaWdodCA9IG1heF95IC0gbWluX3k7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcHV0X25vZGVzX3RvX3JpZ2h0X3Bvc2l0aW9ucyhncmFwaHMpIHtcclxuICAgICAgICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgY2VudGVyID0geyB4OiAwLCB5OiAwIH07XHJcbiAgICAgICAgICAgIGcuYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY2VudGVyLnggKz0gbm9kZS54O1xyXG4gICAgICAgICAgICAgICAgY2VudGVyLnkgKz0gbm9kZS55O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2VudGVyLnggLz0gZy5hcnJheS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNlbnRlci55IC89IGcuYXJyYXkubGVuZ3RoO1xyXG4gICAgICAgICAgICB2YXIgY29ybmVyID0geyB4OiBjZW50ZXIueCAtIGcud2lkdGggLyAyLCB5OiBjZW50ZXIueSAtIGcuaGVpZ2h0IC8gMiB9O1xyXG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0geyB4OiBnLnggLSBjb3JuZXIueCArIHN2Z193aWR0aCAvIDIgLSByZWFsX3dpZHRoIC8gMiwgeTogZy55IC0gY29ybmVyLnkgKyBzdmdfaGVpZ2h0IC8gMiAtIHJlYWxfaGVpZ2h0IC8gMiB9O1xyXG4gICAgICAgICAgICBnLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUueCArPSBvZmZzZXQueDtcclxuICAgICAgICAgICAgICAgIG5vZGUueSArPSBvZmZzZXQueTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhcHBseShkYXRhLCBkZXNpcmVkX3JhdGlvKSB7XHJcbiAgICAgICAgdmFyIGN1cnJfYmVzdF9mID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xyXG4gICAgICAgIHZhciBjdXJyX2Jlc3QgPSAwO1xyXG4gICAgICAgIGRhdGEuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYi5oZWlnaHQgLSBhLmhlaWdodDsgfSk7XHJcbiAgICAgICAgbWluX3dpZHRoID0gZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEud2lkdGggPCBiLndpZHRoID8gYS53aWR0aCA6IGIud2lkdGg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGxlZnQgPSB4MSA9IG1pbl93aWR0aDtcclxuICAgICAgICB2YXIgcmlnaHQgPSB4MiA9IGdldF9lbnRpcmVfd2lkdGgoZGF0YSk7XHJcbiAgICAgICAgdmFyIGl0ZXJhdGlvbkNvdW50ZXIgPSAwO1xyXG4gICAgICAgIHZhciBmX3gxID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB2YXIgZl94MiA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgdmFyIGZsYWcgPSAtMTtcclxuICAgICAgICB2YXIgZHggPSBOdW1iZXIuTUFYX1ZBTFVFO1xyXG4gICAgICAgIHZhciBkZiA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgd2hpbGUgKChkeCA+IG1pbl93aWR0aCkgfHwgZGYgPiBwYWNraW5nT3B0aW9ucy5GTE9BVF9FUFNJTE9OKSB7XHJcbiAgICAgICAgICAgIGlmIChmbGFnICE9IDEpIHtcclxuICAgICAgICAgICAgICAgIHZhciB4MSA9IHJpZ2h0IC0gKHJpZ2h0IC0gbGVmdCkgLyBwYWNraW5nT3B0aW9ucy5HT0xERU5fU0VDVElPTjtcclxuICAgICAgICAgICAgICAgIHZhciBmX3gxID0gc3RlcChkYXRhLCB4MSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZsYWcgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHgyID0gbGVmdCArIChyaWdodCAtIGxlZnQpIC8gcGFja2luZ09wdGlvbnMuR09MREVOX1NFQ1RJT047XHJcbiAgICAgICAgICAgICAgICB2YXIgZl94MiA9IHN0ZXAoZGF0YSwgeDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGR4ID0gTWF0aC5hYnMoeDEgLSB4Mik7XHJcbiAgICAgICAgICAgIGRmID0gTWF0aC5hYnMoZl94MSAtIGZfeDIpO1xyXG4gICAgICAgICAgICBpZiAoZl94MSA8IGN1cnJfYmVzdF9mKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3RfZiA9IGZfeDE7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3QgPSB4MTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZl94MiA8IGN1cnJfYmVzdF9mKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3RfZiA9IGZfeDI7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3QgPSB4MjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZl94MSA+IGZfeDIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSB4MTtcclxuICAgICAgICAgICAgICAgIHgxID0geDI7XHJcbiAgICAgICAgICAgICAgICBmX3gxID0gZl94MjtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmlnaHQgPSB4MjtcclxuICAgICAgICAgICAgICAgIHgyID0geDE7XHJcbiAgICAgICAgICAgICAgICBmX3gyID0gZl94MTtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVyYXRpb25Db3VudGVyKysgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0ZXAoZGF0YSwgY3Vycl9iZXN0KTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAoZGF0YSwgbWF4X3dpZHRoKSB7XHJcbiAgICAgICAgbGluZSA9IFtdO1xyXG4gICAgICAgIHJlYWxfd2lkdGggPSAwO1xyXG4gICAgICAgIHJlYWxfaGVpZ2h0ID0gMDtcclxuICAgICAgICBnbG9iYWxfYm90dG9tID0gaW5pdF95O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgbyA9IGRhdGFbaV07XHJcbiAgICAgICAgICAgIHB1dF9yZWN0KG8sIG1heF93aWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhnZXRfcmVhbF9yYXRpbygpIC0gZGVzaXJlZF9yYXRpbyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXRfcmVjdChyZWN0LCBtYXhfd2lkdGgpIHtcclxuICAgICAgICB2YXIgcGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoKGxpbmVbaV0uc3BhY2VfbGVmdCA+PSByZWN0LmhlaWdodCkgJiYgKGxpbmVbaV0ueCArIGxpbmVbaV0ud2lkdGggKyByZWN0LndpZHRoICsgcGFja2luZ09wdGlvbnMuUEFERElORyAtIG1heF93aWR0aCkgPD0gcGFja2luZ09wdGlvbnMuRkxPQVRfRVBTSUxPTikge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbGluZVtpXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpbmUucHVzaChyZWN0KTtcclxuICAgICAgICBpZiAocGFyZW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVjdC54ID0gcGFyZW50LnggKyBwYXJlbnQud2lkdGggKyBwYWNraW5nT3B0aW9ucy5QQURESU5HO1xyXG4gICAgICAgICAgICByZWN0LnkgPSBwYXJlbnQuYm90dG9tO1xyXG4gICAgICAgICAgICByZWN0LnNwYWNlX2xlZnQgPSByZWN0LmhlaWdodDtcclxuICAgICAgICAgICAgcmVjdC5ib3R0b20gPSByZWN0Lnk7XHJcbiAgICAgICAgICAgIHBhcmVudC5zcGFjZV9sZWZ0IC09IHJlY3QuaGVpZ2h0ICsgcGFja2luZ09wdGlvbnMuUEFERElORztcclxuICAgICAgICAgICAgcGFyZW50LmJvdHRvbSArPSByZWN0LmhlaWdodCArIHBhY2tpbmdPcHRpb25zLlBBRERJTkc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZWN0LnkgPSBnbG9iYWxfYm90dG9tO1xyXG4gICAgICAgICAgICBnbG9iYWxfYm90dG9tICs9IHJlY3QuaGVpZ2h0ICsgcGFja2luZ09wdGlvbnMuUEFERElORztcclxuICAgICAgICAgICAgcmVjdC54ID0gaW5pdF94O1xyXG4gICAgICAgICAgICByZWN0LmJvdHRvbSA9IHJlY3QueTtcclxuICAgICAgICAgICAgcmVjdC5zcGFjZV9sZWZ0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWN0LnkgKyByZWN0LmhlaWdodCAtIHJlYWxfaGVpZ2h0ID4gLXBhY2tpbmdPcHRpb25zLkZMT0FUX0VQU0lMT04pXHJcbiAgICAgICAgICAgIHJlYWxfaGVpZ2h0ID0gcmVjdC55ICsgcmVjdC5oZWlnaHQgLSBpbml0X3k7XHJcbiAgICAgICAgaWYgKHJlY3QueCArIHJlY3Qud2lkdGggLSByZWFsX3dpZHRoID4gLXBhY2tpbmdPcHRpb25zLkZMT0FUX0VQU0lMT04pXHJcbiAgICAgICAgICAgIHJlYWxfd2lkdGggPSByZWN0LnggKyByZWN0LndpZHRoIC0gaW5pdF94O1xyXG4gICAgfVxyXG4gICAgO1xyXG4gICAgZnVuY3Rpb24gZ2V0X2VudGlyZV93aWR0aChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHdpZHRoID0gMDtcclxuICAgICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGQpIHsgcmV0dXJuIHdpZHRoICs9IGQud2lkdGggKyBwYWNraW5nT3B0aW9ucy5QQURESU5HOyB9KTtcclxuICAgICAgICByZXR1cm4gd2lkdGg7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRfcmVhbF9yYXRpbygpIHtcclxuICAgICAgICByZXR1cm4gKHJlYWxfd2lkdGggLyByZWFsX2hlaWdodCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5hcHBseVBhY2tpbmcgPSBhcHBseVBhY2tpbmc7XHJcbmZ1bmN0aW9uIHNlcGFyYXRlR3JhcGhzKG5vZGVzLCBsaW5rcykge1xyXG4gICAgdmFyIG1hcmtzID0ge307XHJcbiAgICB2YXIgd2F5cyA9IHt9O1xyXG4gICAgdmFyIGdyYXBocyA9IFtdO1xyXG4gICAgdmFyIGNsdXN0ZXJzID0gMDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbGluayA9IGxpbmtzW2ldO1xyXG4gICAgICAgIHZhciBuMSA9IGxpbmsuc291cmNlO1xyXG4gICAgICAgIHZhciBuMiA9IGxpbmsudGFyZ2V0O1xyXG4gICAgICAgIGlmICh3YXlzW24xLmluZGV4XSlcclxuICAgICAgICAgICAgd2F5c1tuMS5pbmRleF0ucHVzaChuMik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB3YXlzW24xLmluZGV4XSA9IFtuMl07XHJcbiAgICAgICAgaWYgKHdheXNbbjIuaW5kZXhdKVxyXG4gICAgICAgICAgICB3YXlzW24yLmluZGV4XS5wdXNoKG4xKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHdheXNbbjIuaW5kZXhdID0gW24xXTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICAgIGlmIChtYXJrc1tub2RlLmluZGV4XSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgZXhwbG9yZV9ub2RlKG5vZGUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZXhwbG9yZV9ub2RlKG4sIGlzX25ldykge1xyXG4gICAgICAgIGlmIChtYXJrc1tuLmluZGV4XSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKGlzX25ldykge1xyXG4gICAgICAgICAgICBjbHVzdGVycysrO1xyXG4gICAgICAgICAgICBncmFwaHMucHVzaCh7IGFycmF5OiBbXSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFya3Nbbi5pbmRleF0gPSBjbHVzdGVycztcclxuICAgICAgICBncmFwaHNbY2x1c3RlcnMgLSAxXS5hcnJheS5wdXNoKG4pO1xyXG4gICAgICAgIHZhciBhZGphY2VudCA9IHdheXNbbi5pbmRleF07XHJcbiAgICAgICAgaWYgKCFhZGphY2VudClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWRqYWNlbnQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgZXhwbG9yZV9ub2RlKGFkamFjZW50W2pdLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyYXBocztcclxufVxyXG5leHBvcnRzLnNlcGFyYXRlR3JhcGhzID0gc2VwYXJhdGVHcmFwaHM7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFHRnVaR3hsWkdselkyOXVibVZqZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZWMlZpUTI5c1lTOXpjbU12YUdGdVpHeGxaR2x6WTI5dWJtVmpkR1ZrTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVWtzU1VGQlNTeGpRVUZqTEVkQlFVYzdTVUZEYWtJc1QwRkJUeXhGUVVGRkxFVkJRVVU3U1VGRFdDeGpRVUZqTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN1NVRkRkRU1zWVVGQllTeEZRVUZGTEUxQlFVMDdTVUZEY2tJc1kwRkJZeXhGUVVGRkxFZEJRVWM3UTBGRGRFSXNRMEZCUXp0QlFVZEdMRk5CUVdkQ0xGbEJRVmtzUTBGQlF5eE5RVUZwUWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTEdGQlFXbENMRVZCUVVVc1YwRkJhMEk3U1VGQmNrTXNPRUpCUVVFc1JVRkJRU3hwUWtGQmFVSTdTVUZCUlN3MFFrRkJRU3hGUVVGQkxHdENRVUZyUWp0SlFVVnNSeXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlExWXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkZWaXhUUVVGVExFZEJRVWNzUTBGQlF5eEZRVU5pTEZWQlFWVXNSMEZCUnl4RFFVRkRMRVZCUldRc1lVRkJZU3hIUVVGSExFOUJRVThzWVVGQllTeExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEzaEZMRk5CUVZNc1IwRkJSeXhQUVVGUExGTkJRVk1zUzBGQlN5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVVUxUkN4VlFVRlZMRWRCUVVjc1EwRkJReXhGUVVOa0xGZEJRVmNzUjBGQlJ5eERRVUZETEVWQlEyWXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkZZaXhoUVVGaExFZEJRVWNzUTBGQlF5eEZRVU5xUWl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSV1FzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1VVRkRiRUlzVDBGQlR6dEpRVlZZTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOeVFpeExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZMR0ZCUVdFc1EwRkJReXhEUVVGRE8wbEJRemRDTEVsQlFVY3NWMEZCVnl4RlFVRkZPMUZCUTFvc05FSkJRVFJDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRlRU03U1VGSFJDeFRRVUZUTEZsQlFWa3NRMEZCUXl4TlFVRk5PMUZCUlhoQ0xFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNSQ0xHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGQk8xRkJRekZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1UwRkJVeXh0UWtGQmJVSXNRMEZCUXl4TFFVRkxPMWxCUXpsQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRVZCUVVVc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVWQlEyeEVMRXRCUVVzc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVjZRaXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXp0blFrRkROMFFzU1VGQlNTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETzJkQ1FVTXZSQ3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTlFMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlExQXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03WjBKQlEycERMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTnFReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkRha01zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRja01zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGU0N4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZETlVJc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJwRExFTkJRVU03U1VGRFRDeERRVUZETzBsQmRVTkVMRk5CUVZNc05FSkJRVFJDTEVOQlFVTXNUVUZCVFR0UlFVTjRReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVjBRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlJUVkNMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNTVUZCU1R0blFrRkRNVUlzVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51UWl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRlNDeE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlF6TkNMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkhNMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzWkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVkQlFVY3NRMEZCUXl4SFFVRkhMRmRCUVZjc1IwRkJSeXhEUVVGRExFVkJRVU1zUTBGQlF6dFpRVWQ2U0N4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVazdaMEpCUXpGQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGJrSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzWkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVUN4RFFVRkRPMGxCU1VRc1UwRkJVeXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEdGQlFXRTdVVUZET1VJc1NVRkJTU3hYUVVGWExFZEJRVWNzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRE8xRkJRek5ETEVsQlFVa3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRORUxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRGJFTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRha1FzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4SlFVRkpMRWxCUVVrc1IwRkJSeXhGUVVGRkxFZEJRVWNzVTBGQlV5eERRVUZETzFGQlF6RkNMRWxCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU40UXl4SlFVRkpMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjZRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpGQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkZNVUlzVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzWTBGQll5eERRVUZETEdGQlFXRXNSVUZCUlR0WlFVVXhSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTFnc1NVRkJTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExHTkJRV01zUTBGQlF5eGpRVUZqTEVOQlFVTTdaMEpCUTJoRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGRE4wSTdXVUZEUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlExZ3NTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMR05CUVdNc1EwRkJReXhqUVVGakxFTkJRVU03WjBKQlF5OUVMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1lVRkROMEk3V1VGRlJDeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEZGtJc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJSVE5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGJrSXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRoUVVOc1FqdFpRVVZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGJrSXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRoUVVOc1FqdFpRVVZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1JVRkJSVHRuUWtGRFlpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVOV0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdaMEpCUTFJc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dG5Ra0ZEV2l4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMW83YVVKQlFVMDdaMEpCUTBnc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dG5Ra0ZEV0N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU5TTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1owSkJRMW9zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTmFPMWxCUlVRc1NVRkJTU3huUWtGQlowSXNSVUZCUlN4SFFVRkhMRWRCUVVjc1JVRkJSVHRuUWtGRE1VSXNUVUZCVFR0aFFVTlVPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpGQ0xFTkJRVU03U1VGSlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1UwRkJVenRSUVVONlFpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFZc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5tTEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRhRUlzWVVGQllTeEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVVjJRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRhRUlzVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRUUVVNeFFqdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhqUVVGakxFVkJRVVVzUjBGQlJ5eGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVTjBSQ3hEUVVGRE8wbEJSMFFzVTBGQlV5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNN1VVRkhOMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUlhaQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTJ4RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMR05CUVdNc1EwRkJReXhQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NZMEZCWXl4RFFVRkRMR0ZCUVdFc1JVRkJSVHRuUWtGRGRFb3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtJc1RVRkJUVHRoUVVOVU8xTkJRMG83VVVGRlJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV2hDTEVsQlFVa3NUVUZCVFN4TFFVRkxMRk5CUVZNc1JVRkJSVHRaUVVOMFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRekZFTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU4yUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZET1VJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhqUVVGakxFTkJRVU1zVDBGQlR5eERRVUZETzFsQlF6RkVMRTFCUVUwc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xTkJRM3BFTzJGQlFVMDdXVUZEU0N4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExHRkJRV0VzUTBGQlF6dFpRVU4yUWl4aFFVRmhMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGFrTTdVVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4WFFVRlhMRWRCUVVjc1EwRkJReXhqUVVGakxFTkJRVU1zWVVGQllUdFpRVUZGTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNCSUxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExGVkJRVlVzUjBGQlJ5eERRVUZETEdOQlFXTXNRMEZCUXl4aFFVRmhPMWxCUVVVc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU03U1VGRGNFZ3NRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkZSaXhUUVVGVExHZENRVUZuUWl4RFFVRkRMRWxCUVVrN1VVRkRNVUlzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4UFFVRlBMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUml4UFFVRlBMRXRCUVVzc1EwRkJRenRKUVVOcVFpeERRVUZETzBsQlJVUXNVMEZCVXl4alFVRmpPMUZCUTI1Q0xFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEJRVU5NTEVOQlFVTTdRVUV4VUVRc2IwTkJNRkJETzBGQlRVUXNVMEZCWjBJc1kwRkJZeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTzBsQlEzWkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5tTEVsQlFVa3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOa0xFbEJRVWtzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTm9RaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGYWtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEYmtNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRja0lzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRMlFzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdPMWxCUlhoQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVV4UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETzFsQlEyUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN08xbEJSWGhDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0TFFVTTNRanRKUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTI1RExFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1FpeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRVVVzVTBGQlV6dFJRVU5vUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6VkNPMGxCUlVRc1UwRkJVeXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMDdVVUZETTBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRk5CUVZNN1dVRkJSU3hQUVVGUE8xRkJRM3BETEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUTFJc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRFdDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVMEZET1VJN1VVRkRSQ3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJRenRSUVVNeFFpeE5RVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRia01zU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4SlFVRkpMRU5CUVVNc1VVRkJVVHRaUVVGRkxFOUJRVTg3VVVGRmRFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGRFTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0VFFVTndRenRKUVVOTUxFTkJRVU03U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTnNRaXhEUVVGRE8wRkJOVU5FTEhkRFFUUkRReUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHBvd2VyZ3JhcGggPSByZXF1aXJlKFwiLi9wb3dlcmdyYXBoXCIpO1xyXG52YXIgbGlua2xlbmd0aHNfMSA9IHJlcXVpcmUoXCIuL2xpbmtsZW5ndGhzXCIpO1xyXG52YXIgZGVzY2VudF8xID0gcmVxdWlyZShcIi4vZGVzY2VudFwiKTtcclxudmFyIHJlY3RhbmdsZV8xID0gcmVxdWlyZShcIi4vcmVjdGFuZ2xlXCIpO1xyXG52YXIgc2hvcnRlc3RwYXRoc18xID0gcmVxdWlyZShcIi4vc2hvcnRlc3RwYXRoc1wiKTtcclxudmFyIGdlb21fMSA9IHJlcXVpcmUoXCIuL2dlb21cIik7XHJcbnZhciBoYW5kbGVkaXNjb25uZWN0ZWRfMSA9IHJlcXVpcmUoXCIuL2hhbmRsZWRpc2Nvbm5lY3RlZFwiKTtcclxudmFyIEV2ZW50VHlwZTtcclxuKGZ1bmN0aW9uIChFdmVudFR5cGUpIHtcclxuICAgIEV2ZW50VHlwZVtFdmVudFR5cGVbXCJzdGFydFwiXSA9IDBdID0gXCJzdGFydFwiO1xyXG4gICAgRXZlbnRUeXBlW0V2ZW50VHlwZVtcInRpY2tcIl0gPSAxXSA9IFwidGlja1wiO1xyXG4gICAgRXZlbnRUeXBlW0V2ZW50VHlwZVtcImVuZFwiXSA9IDJdID0gXCJlbmRcIjtcclxufSkoRXZlbnRUeXBlID0gZXhwb3J0cy5FdmVudFR5cGUgfHwgKGV4cG9ydHMuRXZlbnRUeXBlID0ge30pKTtcclxuO1xyXG5mdW5jdGlvbiBpc0dyb3VwKGcpIHtcclxuICAgIHJldHVybiB0eXBlb2YgZy5sZWF2ZXMgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBnLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCc7XHJcbn1cclxudmFyIExheW91dCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBMYXlvdXQoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLl9jYW52YXNTaXplID0gWzEsIDFdO1xyXG4gICAgICAgIHRoaXMuX2xpbmtEaXN0YW5jZSA9IDIwO1xyXG4gICAgICAgIHRoaXMuX2RlZmF1bHROb2RlU2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuX2xpbmtMZW5ndGhDYWxjdWxhdG9yID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9saW5rVHlwZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fYXZvaWRPdmVybGFwcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX25vZGVzID0gW107XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBzID0gW107XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9saW5rcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2NvbnN0cmFpbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5fZGlzdGFuY2VNYXRyaXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RpcmVjdGVkTGlua0NvbnN0cmFpbnRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLl90aHJlc2hvbGQgPSAwLjAxO1xyXG4gICAgICAgIHRoaXMuX3Zpc2liaWxpdHlHcmFwaCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBDb21wYWN0bmVzcyA9IDFlLTY7XHJcbiAgICAgICAgdGhpcy5ldmVudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5saW5rQWNjZXNzb3IgPSB7XHJcbiAgICAgICAgICAgIGdldFNvdXJjZUluZGV4OiBMYXlvdXQuZ2V0U291cmNlSW5kZXgsXHJcbiAgICAgICAgICAgIGdldFRhcmdldEluZGV4OiBMYXlvdXQuZ2V0VGFyZ2V0SW5kZXgsXHJcbiAgICAgICAgICAgIHNldExlbmd0aDogTGF5b3V0LnNldExpbmtMZW5ndGgsXHJcbiAgICAgICAgICAgIGdldFR5cGU6IGZ1bmN0aW9uIChsKSB7IHJldHVybiB0eXBlb2YgX3RoaXMuX2xpbmtUeXBlID09PSBcImZ1bmN0aW9uXCIgPyBfdGhpcy5fbGlua1R5cGUobCkgOiAwOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIExheW91dC5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZSwgbGlzdGVuZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZXZlbnQpXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQgPSB7fTtcclxuICAgICAgICBpZiAodHlwZW9mIGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRbRXZlbnRUeXBlW2VdXSA9IGxpc3RlbmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudFtlXSA9IGxpc3RlbmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmV2ZW50ICYmIHR5cGVvZiB0aGlzLmV2ZW50W2UudHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRbZS50eXBlXShlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5raWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHdoaWxlICghdGhpcy50aWNrKCkpXHJcbiAgICAgICAgICAgIDtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnRpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FscGhhIDwgdGhpcy5fdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyKHsgdHlwZTogRXZlbnRUeXBlLmVuZCwgYWxwaGE6IHRoaXMuX2FscGhhID0gMCwgc3RyZXNzOiB0aGlzLl9sYXN0U3RyZXNzIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLl9ub2Rlcy5sZW5ndGgsIG0gPSB0aGlzLl9saW5rcy5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG8sIGk7XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudC5sb2Nrcy5jbGVhcigpO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcclxuICAgICAgICAgICAgbyA9IHRoaXMuX25vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoby5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvLnB4ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygby5weSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBvLnB4ID0gby54O1xyXG4gICAgICAgICAgICAgICAgICAgIG8ucHkgPSBvLnk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IFtvLnB4LCBvLnB5XTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQubG9ja3MuYWRkKGksIHApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzMSA9IHRoaXMuX2Rlc2NlbnQucnVuZ2VLdXR0YSgpO1xyXG4gICAgICAgIGlmIChzMSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hbHBoYSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9sYXN0U3RyZXNzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLl9hbHBoYSA9IHMxO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9sYXN0U3RyZXNzID0gczE7XHJcbiAgICAgICAgdGhpcy51cGRhdGVOb2RlUG9zaXRpb25zKCk7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyKHsgdHlwZTogRXZlbnRUeXBlLnRpY2ssIGFscGhhOiB0aGlzLl9hbHBoYSwgc3RyZXNzOiB0aGlzLl9sYXN0U3RyZXNzIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnVwZGF0ZU5vZGVQb3NpdGlvbnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHggPSB0aGlzLl9kZXNjZW50LnhbMF0sIHkgPSB0aGlzLl9kZXNjZW50LnhbMV07XHJcbiAgICAgICAgdmFyIG8sIGkgPSB0aGlzLl9ub2Rlcy5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBvID0gdGhpcy5fbm9kZXNbaV07XHJcbiAgICAgICAgICAgIG8ueCA9IHhbaV07XHJcbiAgICAgICAgICAgIG8ueSA9IHlbaV07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIGlmICghdikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbm9kZXMubGVuZ3RoID09PSAwICYmIHRoaXMuX2xpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBuID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xpbmtzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5tYXgobiwgbC5zb3VyY2UsIGwudGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZXMgPSBuZXcgQXJyYXkoKytuKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZXNbaV0gPSB7fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX25vZGVzID0gdjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmdyb3VwcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIXgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ncm91cHM7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBzID0geDtcclxuICAgICAgICB0aGlzLl9yb290R3JvdXAgPSB7fTtcclxuICAgICAgICB0aGlzLl9ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGcucGFkZGluZyA9PT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgICAgIGcucGFkZGluZyA9IDE7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZy5sZWF2ZXMgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIGcubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZy5sZWF2ZXNbaV0gPSBfdGhpcy5fbm9kZXNbdl0pLnBhcmVudCA9IGc7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBnLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnaSwgaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ2kgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZy5ncm91cHNbaV0gPSBfdGhpcy5fZ3JvdXBzW2dpXSkucGFyZW50ID0gZztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwLmxlYXZlcyA9IHRoaXMuX25vZGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdHlwZW9mIHYucGFyZW50ID09PSAndW5kZWZpbmVkJzsgfSk7XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwLmdyb3VwcyA9IHRoaXMuX2dyb3Vwcy5maWx0ZXIoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIHR5cGVvZiBnLnBhcmVudCA9PT0gJ3VuZGVmaW5lZCc7IH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUucG93ZXJHcmFwaEdyb3VwcyA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgdmFyIGcgPSBwb3dlcmdyYXBoLmdldEdyb3Vwcyh0aGlzLl9ub2RlcywgdGhpcy5fbGlua3MsIHRoaXMubGlua0FjY2Vzc29yLCB0aGlzLl9yb290R3JvdXApO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzKGcuZ3JvdXBzKTtcclxuICAgICAgICBmKGcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuYXZvaWRPdmVybGFwcyA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLl9hdm9pZE92ZXJsYXBzID0gdjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmhhbmRsZURpc2Nvbm5lY3RlZCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRGlzY29ubmVjdGVkO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCA9IHY7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5mbG93TGF5b3V0ID0gZnVuY3Rpb24gKGF4aXMsIG1pblNlcGFyYXRpb24pIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIGF4aXMgPSAneSc7XHJcbiAgICAgICAgdGhpcy5fZGlyZWN0ZWRMaW5rQ29uc3RyYWludHMgPSB7XHJcbiAgICAgICAgICAgIGF4aXM6IGF4aXMsXHJcbiAgICAgICAgICAgIGdldE1pblNlcGFyYXRpb246IHR5cGVvZiBtaW5TZXBhcmF0aW9uID09PSAnbnVtYmVyJyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1pblNlcGFyYXRpb247IH0gOiBtaW5TZXBhcmF0aW9uXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmxpbmtzID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5rcztcclxuICAgICAgICB0aGlzLl9saW5rcyA9IHg7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5jb25zdHJhaW50cyA9IGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RyYWludHM7XHJcbiAgICAgICAgdGhpcy5fY29uc3RyYWludHMgPSBjO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZGlzdGFuY2VNYXRyaXggPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3RhbmNlTWF0cml4O1xyXG4gICAgICAgIHRoaXMuX2Rpc3RhbmNlTWF0cml4ID0gZDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIGlmICgheClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbnZhc1NpemU7XHJcbiAgICAgICAgdGhpcy5fY2FudmFzU2l6ZSA9IHg7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5kZWZhdWx0Tm9kZVNpemUgPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIGlmICgheClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHROb2RlU2l6ZTtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0Tm9kZVNpemUgPSB4O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZ3JvdXBDb21wYWN0bmVzcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgaWYgKCF4KVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBDb21wYWN0bmVzcztcclxuICAgICAgICB0aGlzLl9ncm91cENvbXBhY3RuZXNzID0geDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmxpbmtEaXN0YW5jZSA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgaWYgKCF4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5rRGlzdGFuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2xpbmtEaXN0YW5jZSA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogK3g7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUubGlua1R5cGUgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIHRoaXMuX2xpbmtUeXBlID0gZjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmNvbnZlcmdlbmNlVGhyZXNob2xkID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIXgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XHJcbiAgICAgICAgdGhpcy5fdGhyZXNob2xkID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiAreDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmFscGhhID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbHBoYTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgeCA9ICt4O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fYWxwaGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICh4ID4gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbHBoYSA9IHg7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxwaGEgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3J1bm5pbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ydW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoeyB0eXBlOiBFdmVudFR5cGUuc3RhcnQsIGFscGhhOiB0aGlzLl9hbHBoYSA9IHggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5raWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZ2V0TGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsaW5rKSB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9saW5rRGlzdGFuY2UgPT09IFwiZnVuY3Rpb25cIiA/ICsodGhpcy5fbGlua0Rpc3RhbmNlKGxpbmspKSA6IHRoaXMuX2xpbmtEaXN0YW5jZTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQuc2V0TGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsaW5rLCBsZW5ndGgpIHtcclxuICAgICAgICBsaW5rLmxlbmd0aCA9IGxlbmd0aDtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmdldExpbmtUeXBlID0gZnVuY3Rpb24gKGxpbmspIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2xpbmtUeXBlID09PSBcImZ1bmN0aW9uXCIgPyB0aGlzLl9saW5rVHlwZShsaW5rKSA6IDA7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMgPSBmdW5jdGlvbiAoaWRlYWxMZW5ndGgsIHcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZShmdW5jdGlvbiAobCkgeyByZXR1cm4gaWRlYWxMZW5ndGggKiBsLmxlbmd0aDsgfSk7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBsaW5rbGVuZ3Roc18xLnN5bW1ldHJpY0RpZmZMaW5rTGVuZ3RocyhfdGhpcy5fbGlua3MsIF90aGlzLmxpbmtBY2Nlc3Nvciwgdyk7IH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5qYWNjYXJkTGlua0xlbmd0aHMgPSBmdW5jdGlvbiAoaWRlYWxMZW5ndGgsIHcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZShmdW5jdGlvbiAobCkgeyByZXR1cm4gaWRlYWxMZW5ndGggKiBsLmxlbmd0aDsgfSk7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBsaW5rbGVuZ3Roc18xLmphY2NhcmRMaW5rTGVuZ3RocyhfdGhpcy5fbGlua3MsIF90aGlzLmxpbmtBY2Nlc3Nvciwgdyk7IH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uIChpbml0aWFsVW5jb25zdHJhaW5lZEl0ZXJhdGlvbnMsIGluaXRpYWxVc2VyQ29uc3RyYWludEl0ZXJhdGlvbnMsIGluaXRpYWxBbGxDb25zdHJhaW50c0l0ZXJhdGlvbnMsIGdyaWRTbmFwSXRlcmF0aW9ucywga2VlcFJ1bm5pbmcsIGNlbnRlckdyYXBoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zID09PSB2b2lkIDApIHsgaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zID0gMDsgfVxyXG4gICAgICAgIGlmIChpbml0aWFsVXNlckNvbnN0cmFpbnRJdGVyYXRpb25zID09PSB2b2lkIDApIHsgaW5pdGlhbFVzZXJDb25zdHJhaW50SXRlcmF0aW9ucyA9IDA7IH1cclxuICAgICAgICBpZiAoaW5pdGlhbEFsbENvbnN0cmFpbnRzSXRlcmF0aW9ucyA9PT0gdm9pZCAwKSB7IGluaXRpYWxBbGxDb25zdHJhaW50c0l0ZXJhdGlvbnMgPSAwOyB9XHJcbiAgICAgICAgaWYgKGdyaWRTbmFwSXRlcmF0aW9ucyA9PT0gdm9pZCAwKSB7IGdyaWRTbmFwSXRlcmF0aW9ucyA9IDA7IH1cclxuICAgICAgICBpZiAoa2VlcFJ1bm5pbmcgPT09IHZvaWQgMCkgeyBrZWVwUnVubmluZyA9IHRydWU7IH1cclxuICAgICAgICBpZiAoY2VudGVyR3JhcGggPT09IHZvaWQgMCkgeyBjZW50ZXJHcmFwaCA9IHRydWU7IH1cclxuICAgICAgICB2YXIgaSwgaiwgbiA9IHRoaXMubm9kZXMoKS5sZW5ndGgsIE4gPSBuICsgMiAqIHRoaXMuX2dyb3Vwcy5sZW5ndGgsIG0gPSB0aGlzLl9saW5rcy5sZW5ndGgsIHcgPSB0aGlzLl9jYW52YXNTaXplWzBdLCBoID0gdGhpcy5fY2FudmFzU2l6ZVsxXTtcclxuICAgICAgICB2YXIgeCA9IG5ldyBBcnJheShOKSwgeSA9IG5ldyBBcnJheShOKTtcclxuICAgICAgICB2YXIgRyA9IG51bGw7XHJcbiAgICAgICAgdmFyIGFvID0gdGhpcy5fYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7XHJcbiAgICAgICAgICAgIHYuaW5kZXggPSBpO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYueCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIHYueCA9IHcgLyAyLCB2LnkgPSBoIC8gMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4W2ldID0gdi54LCB5W2ldID0gdi55O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLl9saW5rTGVuZ3RoQ2FsY3VsYXRvcilcclxuICAgICAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IoKTtcclxuICAgICAgICB2YXIgZGlzdGFuY2VzO1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXN0YW5jZU1hdHJpeCkge1xyXG4gICAgICAgICAgICBkaXN0YW5jZXMgPSB0aGlzLl9kaXN0YW5jZU1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRpc3RhbmNlcyA9IChuZXcgc2hvcnRlc3RwYXRoc18xLkNhbGN1bGF0b3IoTiwgdGhpcy5fbGlua3MsIExheW91dC5nZXRTb3VyY2VJbmRleCwgTGF5b3V0LmdldFRhcmdldEluZGV4LCBmdW5jdGlvbiAobCkgeyByZXR1cm4gX3RoaXMuZ2V0TGlua0xlbmd0aChsKTsgfSkpLkRpc3RhbmNlTWF0cml4KCk7XHJcbiAgICAgICAgICAgIEcgPSBkZXNjZW50XzEuRGVzY2VudC5jcmVhdGVTcXVhcmVNYXRyaXgoTiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMjsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xpbmtzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbC5zb3VyY2UgPT0gXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgICAgICBsLnNvdXJjZSA9IF90aGlzLl9ub2Rlc1tsLnNvdXJjZV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGwudGFyZ2V0ID09IFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgbC50YXJnZXQgPSBfdGhpcy5fbm9kZXNbbC50YXJnZXRdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fbGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHUgPSBMYXlvdXQuZ2V0U291cmNlSW5kZXgoZSksIHYgPSBMYXlvdXQuZ2V0VGFyZ2V0SW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgICBHW3VdW3ZdID0gR1t2XVt1XSA9IGUud2VpZ2h0IHx8IDE7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgRCA9IGRlc2NlbnRfMS5EZXNjZW50LmNyZWF0ZVNxdWFyZU1hdHJpeChOLCBmdW5jdGlvbiAoaSwgaikge1xyXG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2VzW2ldW2pdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290R3JvdXAgJiYgdHlwZW9mIHRoaXMuX3Jvb3RHcm91cC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHZhciBpID0gbjtcclxuICAgICAgICAgICAgdmFyIGFkZEF0dHJhY3Rpb24gPSBmdW5jdGlvbiAoaSwgaiwgc3RyZW5ndGgsIGlkZWFsRGlzdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEdbaV1bal0gPSBHW2pdW2ldID0gc3RyZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBEW2ldW2pdID0gRFtqXVtpXSA9IGlkZWFsRGlzdGFuY2U7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnKSB7XHJcbiAgICAgICAgICAgICAgICBhZGRBdHRyYWN0aW9uKGksIGkgKyAxLCBfdGhpcy5fZ3JvdXBDb21wYWN0bmVzcywgMC4xKTtcclxuICAgICAgICAgICAgICAgIHhbaV0gPSAwLCB5W2krK10gPSAwO1xyXG4gICAgICAgICAgICAgICAgeFtpXSA9IDAsIHlbaSsrXSA9IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3RHcm91cCA9IHsgbGVhdmVzOiB0aGlzLl9ub2RlcywgZ3JvdXBzOiBbXSB9O1xyXG4gICAgICAgIHZhciBjdXJDb25zdHJhaW50cyA9IHRoaXMuX2NvbnN0cmFpbnRzIHx8IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXJlY3RlZExpbmtDb25zdHJhaW50cykge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmtBY2Nlc3Nvci5nZXRNaW5TZXBhcmF0aW9uID0gdGhpcy5fZGlyZWN0ZWRMaW5rQ29uc3RyYWludHMuZ2V0TWluU2VwYXJhdGlvbjtcclxuICAgICAgICAgICAgY3VyQ29uc3RyYWludHMgPSBjdXJDb25zdHJhaW50cy5jb25jYXQobGlua2xlbmd0aHNfMS5nZW5lcmF0ZURpcmVjdGVkRWRnZUNvbnN0cmFpbnRzKG4sIHRoaXMuX2xpbmtzLCB0aGlzLl9kaXJlY3RlZExpbmtDb25zdHJhaW50cy5heGlzLCAodGhpcy5saW5rQWNjZXNzb3IpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXZvaWRPdmVybGFwcyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudCA9IG5ldyBkZXNjZW50XzEuRGVzY2VudChbeCwgeV0sIEQpO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQubG9ja3MuY2xlYXIoKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgbyA9IHRoaXMuX25vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoby5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgby5weCA9IG8ueDtcclxuICAgICAgICAgICAgICAgIG8ucHkgPSBvLnk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IFtvLngsIG8ueV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZXNjZW50LmxvY2tzLmFkZChpLCBwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9kZXNjZW50LnRocmVzaG9sZCA9IHRoaXMuX3RocmVzaG9sZDtcclxuICAgICAgICB0aGlzLmluaXRpYWxMYXlvdXQoaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zLCB4LCB5KTtcclxuICAgICAgICBpZiAoY3VyQ29uc3RyYWludHMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5wcm9qZWN0ID0gbmV3IHJlY3RhbmdsZV8xLlByb2plY3Rpb24odGhpcy5fbm9kZXMsIHRoaXMuX2dyb3VwcywgdGhpcy5fcm9vdEdyb3VwLCBjdXJDb25zdHJhaW50cykucHJvamVjdEZ1bmN0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQucnVuKGluaXRpYWxVc2VyQ29uc3RyYWludEl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuc2VwYXJhdGVPdmVybGFwcGluZ0NvbXBvbmVudHModywgaCwgY2VudGVyR3JhcGgpO1xyXG4gICAgICAgIHRoaXMuYXZvaWRPdmVybGFwcyhhbyk7XHJcbiAgICAgICAgaWYgKGFvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgdi54ID0geFtpXSwgdi55ID0geVtpXTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQucHJvamVjdCA9IG5ldyByZWN0YW5nbGVfMS5Qcm9qZWN0aW9uKHRoaXMuX25vZGVzLCB0aGlzLl9ncm91cHMsIHRoaXMuX3Jvb3RHcm91cCwgY3VyQ29uc3RyYWludHMsIHRydWUpLnByb2plY3RGdW5jdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5fbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkgeyB4W2ldID0gdi54LCB5W2ldID0gdi55OyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudC5HID0gRztcclxuICAgICAgICB0aGlzLl9kZXNjZW50LnJ1bihpbml0aWFsQWxsQ29uc3RyYWludHNJdGVyYXRpb25zKTtcclxuICAgICAgICBpZiAoZ3JpZFNuYXBJdGVyYXRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQuc25hcFN0cmVuZ3RoID0gMTAwMDtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5zbmFwR3JpZFNpemUgPSB0aGlzLl9ub2Rlc1swXS53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5udW1HcmlkU25hcE5vZGVzID0gbjtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5zY2FsZVNuYXBCeU1heEggPSBuICE9IE47XHJcbiAgICAgICAgICAgIHZhciBHMCA9IGRlc2NlbnRfMS5EZXNjZW50LmNyZWF0ZVNxdWFyZU1hdHJpeChOLCBmdW5jdGlvbiAoaSwgaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gbiB8fCBqID49IG4pXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdbaV1bal07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQuRyA9IEcwO1xyXG4gICAgICAgICAgICB0aGlzLl9kZXNjZW50LnJ1bihncmlkU25hcEl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZU5vZGVQb3NpdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNlcGFyYXRlT3ZlcmxhcHBpbmdDb21wb25lbnRzKHcsIGgsIGNlbnRlckdyYXBoKTtcclxuICAgICAgICByZXR1cm4ga2VlcFJ1bm5pbmcgPyB0aGlzLnJlc3VtZSgpIDogdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmluaXRpYWxMYXlvdXQgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucywgeCwgeSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9ncm91cHMubGVuZ3RoID4gMCAmJiBpdGVyYXRpb25zID4gMCkge1xyXG4gICAgICAgICAgICB2YXIgbiA9IHRoaXMuX25vZGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fbGlua3MubWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiAoeyBzb3VyY2U6IGUuc291cmNlLmluZGV4LCB0YXJnZXQ6IGUudGFyZ2V0LmluZGV4IH0pOyB9KTtcclxuICAgICAgICAgICAgdmFyIHZzID0gdGhpcy5fbm9kZXMubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiAoeyBpbmRleDogdi5pbmRleCB9KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpKSB7XHJcbiAgICAgICAgICAgICAgICB2cy5wdXNoKHsgaW5kZXg6IGcuaW5kZXggPSBuICsgaSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGcubGVhdmVzICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgICAgICBnLmxlYXZlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7IHJldHVybiBlZGdlcy5wdXNoKHsgc291cmNlOiBnLmluZGV4LCB0YXJnZXQ6IHYuaW5kZXggfSk7IH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBnLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgZy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZ2cpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IGcuaW5kZXgsIHRhcmdldDogZ2cuaW5kZXggfSk7IH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbmV3IExheW91dCgpXHJcbiAgICAgICAgICAgICAgICAuc2l6ZSh0aGlzLnNpemUoKSlcclxuICAgICAgICAgICAgICAgIC5ub2Rlcyh2cylcclxuICAgICAgICAgICAgICAgIC5saW5rcyhlZGdlcylcclxuICAgICAgICAgICAgICAgIC5hdm9pZE92ZXJsYXBzKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgLmxpbmtEaXN0YW5jZSh0aGlzLmxpbmtEaXN0YW5jZSgpKVxyXG4gICAgICAgICAgICAgICAgLnN5bW1ldHJpY0RpZmZMaW5rTGVuZ3Rocyg1KVxyXG4gICAgICAgICAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTQpXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoaXRlcmF0aW9ucywgMCwgMCwgMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB4W3YuaW5kZXhdID0gdnNbdi5pbmRleF0ueDtcclxuICAgICAgICAgICAgICAgIHlbdi5pbmRleF0gPSB2c1t2LmluZGV4XS55O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQucnVuKGl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnNlcGFyYXRlT3ZlcmxhcHBpbmdDb21wb25lbnRzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIGNlbnRlckdyYXBoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoY2VudGVyR3JhcGggPT09IHZvaWQgMCkgeyBjZW50ZXJHcmFwaCA9IHRydWU7IH1cclxuICAgICAgICBpZiAoIXRoaXMuX2Rpc3RhbmNlTWF0cml4ICYmIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB2YXIgeF8xID0gdGhpcy5fZGVzY2VudC54WzBdLCB5XzEgPSB0aGlzLl9kZXNjZW50LnhbMV07XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgdi54ID0geF8xW2ldLCB2LnkgPSB5XzFbaV07IH0pO1xyXG4gICAgICAgICAgICB2YXIgZ3JhcGhzID0gaGFuZGxlZGlzY29ubmVjdGVkXzEuc2VwYXJhdGVHcmFwaHModGhpcy5fbm9kZXMsIHRoaXMuX2xpbmtzKTtcclxuICAgICAgICAgICAgaGFuZGxlZGlzY29ubmVjdGVkXzEuYXBwbHlQYWNraW5nKGdyYXBocywgd2lkdGgsIGhlaWdodCwgdGhpcy5fZGVmYXVsdE5vZGVTaXplLCAxLCBjZW50ZXJHcmFwaCk7XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLl9kZXNjZW50LnhbMF1baV0gPSB2LngsIF90aGlzLl9kZXNjZW50LnhbMV1baV0gPSB2Lnk7XHJcbiAgICAgICAgICAgICAgICBpZiAodi5ib3VuZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2LmJvdW5kcy5zZXRYQ2VudHJlKHYueCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5ib3VuZHMuc2V0WUNlbnRyZSh2LnkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxwaGEoMC4xKTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxwaGEoMCk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5wcmVwYXJlRWRnZVJvdXRpbmcgPSBmdW5jdGlvbiAobm9kZU1hcmdpbikge1xyXG4gICAgICAgIGlmIChub2RlTWFyZ2luID09PSB2b2lkIDApIHsgbm9kZU1hcmdpbiA9IDA7IH1cclxuICAgICAgICB0aGlzLl92aXNpYmlsaXR5R3JhcGggPSBuZXcgZ2VvbV8xLlRhbmdlbnRWaXNpYmlsaXR5R3JhcGgodGhpcy5fbm9kZXMubWFwKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2LmJvdW5kcy5pbmZsYXRlKC1ub2RlTWFyZ2luKS52ZXJ0aWNlcygpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnJvdXRlRWRnZSA9IGZ1bmN0aW9uIChlZGdlLCBhaCwgZHJhdykge1xyXG4gICAgICAgIGlmIChhaCA9PT0gdm9pZCAwKSB7IGFoID0gNTsgfVxyXG4gICAgICAgIHZhciBsaW5lRGF0YSA9IFtdO1xyXG4gICAgICAgIHZhciB2ZzIgPSBuZXcgZ2VvbV8xLlRhbmdlbnRWaXNpYmlsaXR5R3JhcGgodGhpcy5fdmlzaWJpbGl0eUdyYXBoLlAsIHsgVjogdGhpcy5fdmlzaWJpbGl0eUdyYXBoLlYsIEU6IHRoaXMuX3Zpc2liaWxpdHlHcmFwaC5FIH0pLCBwb3J0MSA9IHsgeDogZWRnZS5zb3VyY2UueCwgeTogZWRnZS5zb3VyY2UueSB9LCBwb3J0MiA9IHsgeDogZWRnZS50YXJnZXQueCwgeTogZWRnZS50YXJnZXQueSB9LCBzdGFydCA9IHZnMi5hZGRQb2ludChwb3J0MSwgZWRnZS5zb3VyY2UuaW5kZXgpLCBlbmQgPSB2ZzIuYWRkUG9pbnQocG9ydDIsIGVkZ2UudGFyZ2V0LmluZGV4KTtcclxuICAgICAgICB2ZzIuYWRkRWRnZUlmVmlzaWJsZShwb3J0MSwgcG9ydDIsIGVkZ2Uuc291cmNlLmluZGV4LCBlZGdlLnRhcmdldC5pbmRleCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkcmF3ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBkcmF3KHZnMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzb3VyY2VJbmQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2UuaWQ7IH0sIHRhcmdldEluZCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldC5pZDsgfSwgbGVuZ3RoID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubGVuZ3RoKCk7IH0sIHNwQ2FsYyA9IG5ldyBzaG9ydGVzdHBhdGhzXzEuQ2FsY3VsYXRvcih2ZzIuVi5sZW5ndGgsIHZnMi5FLCBzb3VyY2VJbmQsIHRhcmdldEluZCwgbGVuZ3RoKSwgc2hvcnRlc3RQYXRoID0gc3BDYWxjLlBhdGhGcm9tTm9kZVRvTm9kZShzdGFydC5pZCwgZW5kLmlkKTtcclxuICAgICAgICBpZiAoc2hvcnRlc3RQYXRoLmxlbmd0aCA9PT0gMSB8fCBzaG9ydGVzdFBhdGgubGVuZ3RoID09PSB2ZzIuVi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFyIHJvdXRlID0gcmVjdGFuZ2xlXzEubWFrZUVkZ2VCZXR3ZWVuKGVkZ2Uuc291cmNlLmlubmVyQm91bmRzLCBlZGdlLnRhcmdldC5pbm5lckJvdW5kcywgYWgpO1xyXG4gICAgICAgICAgICBsaW5lRGF0YSA9IFtyb3V0ZS5zb3VyY2VJbnRlcnNlY3Rpb24sIHJvdXRlLmFycm93U3RhcnRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBzaG9ydGVzdFBhdGgubGVuZ3RoIC0gMiwgcCA9IHZnMi5WW3Nob3J0ZXN0UGF0aFtuXV0ucCwgcSA9IHZnMi5WW3Nob3J0ZXN0UGF0aFswXV0ucCwgbGluZURhdGEgPSBbZWRnZS5zb3VyY2UuaW5uZXJCb3VuZHMucmF5SW50ZXJzZWN0aW9uKHAueCwgcC55KV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBuOyBpID49IDA7IC0taSlcclxuICAgICAgICAgICAgICAgIGxpbmVEYXRhLnB1c2godmcyLlZbc2hvcnRlc3RQYXRoW2ldXS5wKTtcclxuICAgICAgICAgICAgbGluZURhdGEucHVzaChyZWN0YW5nbGVfMS5tYWtlRWRnZVRvKHEsIGVkZ2UudGFyZ2V0LmlubmVyQm91bmRzLCBhaCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGluZURhdGE7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmdldFNvdXJjZUluZGV4ID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGUuc291cmNlID09PSAnbnVtYmVyJyA/IGUuc291cmNlIDogZS5zb3VyY2UuaW5kZXg7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmdldFRhcmdldEluZGV4ID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGUudGFyZ2V0ID09PSAnbnVtYmVyJyA/IGUudGFyZ2V0IDogZS50YXJnZXQuaW5kZXg7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmxpbmtJZCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgcmV0dXJuIExheW91dC5nZXRTb3VyY2VJbmRleChlKSArIFwiLVwiICsgTGF5b3V0LmdldFRhcmdldEluZGV4KGUpO1xyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnU3RhcnQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChpc0dyb3VwKGQpKSB7XHJcbiAgICAgICAgICAgIExheW91dC5zdG9yZU9mZnNldChkLCBMYXlvdXQuZHJhZ09yaWdpbihkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBMYXlvdXQuc3RvcE5vZGUoZCk7XHJcbiAgICAgICAgICAgIGQuZml4ZWQgfD0gMjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnN0b3BOb2RlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2LnB4ID0gdi54O1xyXG4gICAgICAgIHYucHkgPSB2Lnk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnN0b3JlT2Zmc2V0ID0gZnVuY3Rpb24gKGQsIG9yaWdpbikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZC5sZWF2ZXMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGQubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIHYuZml4ZWQgfD0gMjtcclxuICAgICAgICAgICAgICAgIExheW91dC5zdG9wTm9kZSh2KTtcclxuICAgICAgICAgICAgICAgIHYuX2RyYWdHcm91cE9mZnNldFggPSB2LnggLSBvcmlnaW4ueDtcclxuICAgICAgICAgICAgICAgIHYuX2RyYWdHcm91cE9mZnNldFkgPSB2LnkgLSBvcmlnaW4ueTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGQuZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGcpIHsgcmV0dXJuIExheW91dC5zdG9yZU9mZnNldChnLCBvcmlnaW4pOyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmRyYWdPcmlnaW4gPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChpc0dyb3VwKGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB4OiBkLmJvdW5kcy5jeCgpLFxyXG4gICAgICAgICAgICAgICAgeTogZC5ib3VuZHMuY3koKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnID0gZnVuY3Rpb24gKGQsIHBvc2l0aW9uKSB7XHJcbiAgICAgICAgaWYgKGlzR3JvdXAoZCkpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkLmxlYXZlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIGQubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICBkLmJvdW5kcy5zZXRYQ2VudHJlKHBvc2l0aW9uLngpO1xyXG4gICAgICAgICAgICAgICAgICAgIGQuYm91bmRzLnNldFlDZW50cmUocG9zaXRpb24ueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5weCA9IHYuX2RyYWdHcm91cE9mZnNldFggKyBwb3NpdGlvbi54O1xyXG4gICAgICAgICAgICAgICAgICAgIHYucHkgPSB2Ll9kcmFnR3JvdXBPZmZzZXRZICsgcG9zaXRpb24ueTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBkLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnKSB7IHJldHVybiBMYXlvdXQuZHJhZyhnLCBwb3NpdGlvbik7IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkLnB4ID0gcG9zaXRpb24ueDtcclxuICAgICAgICAgICAgZC5weSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnRW5kID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoaXNHcm91cChkKSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGQubGVhdmVzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgZC5sZWF2ZXMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICAgICAgICAgIExheW91dC5kcmFnRW5kKHYpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2Ll9kcmFnR3JvdXBPZmZzZXRYO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2Ll9kcmFnR3JvdXBPZmZzZXRZO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIGQuZ3JvdXBzLmZvckVhY2goTGF5b3V0LmRyYWdFbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkLmZpeGVkICY9IH42O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBMYXlvdXQubW91c2VPdmVyID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBkLmZpeGVkIHw9IDQ7XHJcbiAgICAgICAgZC5weCA9IGQueCwgZC5weSA9IGQueTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQubW91c2VPdXQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQuZml4ZWQgJj0gfjQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExheW91dDtcclxufSgpKTtcclxuZXhwb3J0cy5MYXlvdXQgPSBMYXlvdXQ7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHRjViM1YwTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dlYyVmlRMjlzWVM5emNtTXZiR0Y1YjNWMExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc2VVTkJRVEJETzBGQlF6RkRMRFpEUVVFclNEdEJRVU12U0N4eFEwRkJhVU03UVVGRGFrTXNlVU5CUVRoRk8wRkJRemxGTEdsRVFVRXdRenRCUVVNeFF5d3JRa0ZCZFVRN1FVRkRka1FzTWtSQlFXbEZPMEZCVHpkRUxFbEJRVmtzVTBGQk9FSTdRVUZCTVVNc1YwRkJXU3hUUVVGVE8wbEJRVWNzTWtOQlFVc3NRMEZCUVR0SlFVRkZMSGxEUVVGSkxFTkJRVUU3U1VGQlJTeDFRMEZCUnl4RFFVRkJPMEZCUVVNc1EwRkJReXhGUVVFNVFpeFRRVUZUTEVkQlFWUXNhVUpCUVZNc1MwRkJWQ3hwUWtGQlV5eFJRVUZ4UWp0QlFVRkJMRU5CUVVNN1FVRXJRek5ETEZOQlFWTXNUMEZCVHl4RFFVRkRMRU5CUVUwN1NVRkRia0lzVDBGQlR5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNN1FVRkRPVVVzUTBGQlF6dEJRWGRDUkR0SlFVRkJPMUZCUVVFc2FVSkJhM2xDUXp0UlFXcDVRbGNzWjBKQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4clFrRkJZU3hIUVVGNVF5eEZRVUZGTEVOQlFVTTdVVUZEZWtRc2NVSkJRV2RDTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUXpsQ0xEQkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVNM1FpeGpRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xHMUNRVUZqTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTNaQ0xIZENRVUZ0UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVjelFpeGhRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJwQ0xGZEJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEV2l4WlFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMklzWlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnNRaXhYUVVGTkxFZEJRVEJDTEVWQlFVVXNRMEZCUXp0UlFVTnVReXhwUWtGQldTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnNRaXh2UWtGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjJRaXhoUVVGUkxFZEJRVmtzU1VGQlNTeERRVUZETzFGQlEzcENMRFpDUVVGM1FpeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTm9ReXhsUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyeENMSEZDUVVGblFpeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjRRaXh6UWtGQmFVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkhka0lzVlVGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFXdFdka0lzYVVKQlFWa3NSMEZCTWtJN1dVRkRia01zWTBGQll5eEZRVUZGTEUxQlFVMHNRMEZCUXl4alFVRmpPMWxCUTNKRExHTkJRV01zUlVGQlJTeE5RVUZOTEVOQlFVTXNZMEZCWXp0WlFVTnlReXhUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEdGQlFXRTdXVUZETDBJc1QwRkJUeXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4TFFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRTFSQ3hEUVVFMFJEdFRRVU0zUlN4RFFVRkRPMGxCYldKT0xFTkJRVU03U1VGMGQwSlZMRzFDUVVGRkxFZEJRVlFzVlVGQlZTeERRVUZ4UWl4RlFVRkZMRkZCUVdsRE8xRkJSVGxFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTenRaUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJwRExFbEJRVWtzVDBGQlR5eERRVUZETEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETzFOQlEzWkRPMkZCUVUwN1dVRkRTQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJRenRUUVVNMVFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSlV5eDNRa0ZCVHl4SFFVRnFRaXhWUVVGclFpeERRVUZSTzFGQlEzUkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTjZSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU42UWp0SlFVTk1MRU5CUVVNN1NVRkxVeXh4UWtGQlNTeEhRVUZrTzFGQlEwa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVU3V1VGQlF5eERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkxVeXh4UWtGQlNTeEhRVUZrTzFGQlEwa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVTdXVUZETDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRlRVlzVDBGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWmp0UlFVTkVMRWxCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVTjBRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlZRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRkROVUlzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEY0VJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRia0lzU1VGQlNTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZPMmRDUVVOVUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRmRCUVZjc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NWMEZCVnl4RlFVRkZPMjlDUVVNMVJDeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlExZ3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTmtPMmRDUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNKQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYWtNN1UwRkRTanRSUVVWRUxFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRmNFTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMVlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRia0k3WVVGQlRTeEpRVUZKTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1MwRkJTeXhYUVVGWExFVkJRVVU3V1VGRGFFUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VTBGRGNFSTdVVUZEUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVVYwUWl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNKR0xFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhUeXh2UTBGQmJVSXNSMEZCTTBJN1VVRkRTU3hKUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRemxDTEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRVaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5ZTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEyUTdTVUZEVEN4RFFVRkRPMGxCVjBRc2MwSkJRVXNzUjBGQlRDeFZRVUZOTEVOQlFVODdVVUZEVkN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRMG9zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVWR3UkN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlExWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETzI5Q1FVTXpRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVZVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlZTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRM2hFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOSUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN2FVSkJRM1pDTzJGQlEwbzdXVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGRFSTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlUwUXNkVUpCUVUwc1IwRkJUaXhWUVVGUExFTkJRV2RDTzFGQlFYWkNMR2xDUVhWQ1F6dFJRWFJDUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnlRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRXRCUVVzc1YwRkJWenRuUWtGRGFFTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ5eEZRVUZGTzJkQ1FVTnFReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yOUNRVU5zUWl4SlFVRkpMRTlCUVU4c1EwRkJReXhMUVVGTExGRkJRVkU3ZDBKQlEzSkNMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRVHRuUWtGRGFrUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRUanRaUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0dlFrRkRia0lzU1VGQlNTeFBRVUZQTEVWQlFVVXNTMEZCU3l4UlFVRlJPM2RDUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVRTdaMEpCUTI1RUxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEwNDdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWY3NSVUZCTDBJc1EwRkJLMElzUTBGQlF5eERRVUZETzFGQlEyeEdMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQkwwSXNRMEZCSzBJc1EwRkJReXhEUVVGRE8xRkJRMjVHTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDeHBRMEZCWjBJc1IwRkJhRUlzVlVGQmFVSXNRMEZCVnp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTXpSaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRUQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVlVRc09FSkJRV0VzUjBGQllpeFZRVUZqTEVOQlFWYzdVVUZEY2tJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGWlJDeHRRMEZCYTBJc1IwRkJiRUlzVlVGQmJVSXNRMEZCVnp0UlFVTXhRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMDdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemRDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGUlJDd3lRa0ZCVlN4SFFVRldMRlZCUVZjc1NVRkJXU3hGUVVGRkxHRkJRWGRETzFGQlF6ZEVMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRUdFpRVUZGTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRiRU1zU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhIUVVGSE8xbEJRelZDTEVsQlFVa3NSVUZCUlN4SlFVRkpPMWxCUTFZc1owSkJRV2RDTEVWQlFVVXNUMEZCVHl4aFFVRmhMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eGpRVUZqTEU5QlFVOHNZVUZCWVN4RFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eGhRVUZoTzFOQlF6ZEhMRU5CUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVTBRc2MwSkJRVXNzUjBGQlRDeFZRVUZOTEVOQlFUUkNPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFR0WlFVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlZVUXNORUpCUVZjc1IwRkJXQ3hWUVVGWkxFTkJRV003VVVGRGRFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTk8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNSQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlhSQ3dyUWtGQll5eEhRVUZrTEZWQlFXVXNRMEZCVHp0UlFVTnNRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMDdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU03VVVGRGJrUXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVrSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVlZFTEhGQ1FVRkpMRWRCUVVvc1ZVRkJTeXhEUVVGcFFqdFJRVU5zUWl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0UlFVTm9ReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVTBRc1owTkJRV1VzUjBGQlppeFZRVUZuUWl4RFFVRlBPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eERRVUZETzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdVVUZEY2tNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJVMFFzYVVOQlFXZENMRWRCUVdoQ0xGVkJRV2xDTEVOQlFVODdVVUZEY0VJc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlRSQ3cyUWtGQldTeEhRVUZhTEZWQlFXRXNRMEZCVHp0UlFVTm9RaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzFsQlEwb3NUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRE8xTkJRemRDTzFGQlEwUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1F5eFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVVFzZVVKQlFWRXNSMEZCVWl4VlFVRlRMRU5CUVc5Q08xRkJRM3BDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMjVDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSlJDeHhRMEZCYjBJc1IwRkJjRUlzVlVGQmNVSXNRMEZCVlR0UlFVTXpRaXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVNdlFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlNVUXNjMEpCUVVzc1IwRkJUQ3hWUVVGTkxFTkJRVlU3VVVGRFdpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwN1dVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdZVUZEY2tNN1dVRkRSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEVUN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEySXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenR2UWtGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenM3YjBKQlEzUkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzaENPMmxDUVVGTkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRaQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0dlFrRkRhRUlzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN2IwSkJRM0pDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNdlJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMlk3WVVGRFNqdFpRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJZN1NVRkRUQ3hEUVVGRE8wbEJSVVFzT0VKQlFXRXNSMEZCWWl4VlFVRmpMRWxCUVhsQ08xRkJRMjVETEU5QlFVOHNUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRXJRaXhKUVVGSkxFTkJRVU1zWVVGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGVExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdTVUZET1Vrc1EwRkJRenRKUVVWTkxHOUNRVUZoTEVkQlFYQkNMRlZCUVhGQ0xFbEJRWFZDTEVWQlFVVXNUVUZCWXp0UlFVTjRSQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJSVVFzTkVKQlFWY3NSMEZCV0N4VlFVRlpMRWxCUVhsQ08xRkJRMnBETEU5QlFVOHNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORkxFTkJRVU03U1VGdFFrUXNlVU5CUVhkQ0xFZEJRWGhDTEZWQlFYbENMRmRCUVcxQ0xFVkJRVVVzUTBGQllUdFJRVUV6UkN4cFFrRkpRenRSUVVvMlF5eHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1VVRkRka1FzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJTU3hQUVVGQkxGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRjBRaXhEUVVGelFpeERRVUZETEVOQlFVTTdVVUZETDBNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMR05CUVUwc1QwRkJRU3h6UTBGQmQwSXNRMEZCUXl4TFFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFdEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVRORUxFTkJRVEpFTEVOQlFVTTdVVUZETDBZc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFWbEVMRzFEUVVGclFpeEhRVUZzUWl4VlFVRnRRaXhYUVVGdFFpeEZRVUZGTEVOQlFXRTdVVUZCY2tRc2FVSkJTVU03VVVGS2RVTXNhMEpCUVVFc1JVRkJRU3hMUVVGaE8xRkJRMnBFTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJkRUlzUTBGQmMwSXNRMEZCUXl4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhqUVVGTkxFOUJRVUVzWjBOQlFXdENMRU5CUVVNc1MwRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeExRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGeVJDeERRVUZ4UkN4RFFVRkRPMUZCUTNwR0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlpSQ3h6UWtGQlN5eEhRVUZNTEZWQlEwa3NPRUpCUVRCRExFVkJRekZETEN0Q1FVRXlReXhGUVVNelF5d3JRa0ZCTWtNc1JVRkRNME1zYTBKQlFUaENMRVZCUXpsQ0xGZEJRV3RDTEVWQlEyeENMRmRCUVd0Q08xRkJUblJDTEdsQ1FYTktRenRSUVhKS1J5d3JRMEZCUVN4RlFVRkJMR3REUVVFd1F6dFJRVU14UXl4blJFRkJRU3hGUVVGQkxHMURRVUV5UXp0UlFVTXpReXhuUkVGQlFTeEZRVUZCTEcxRFFVRXlRenRSUVVNelF5eHRRMEZCUVN4RlFVRkJMSE5DUVVFNFFqdFJRVU01UWl3MFFrRkJRU3hGUVVGQkxHdENRVUZyUWp0UlFVTnNRaXcwUWtGQlFTeEZRVUZCTEd0Q1FVRnJRanRSUVVWc1FpeEpRVUZKTEVOQlFWTXNSVUZEVkN4RFFVRlRMRVZCUTFRc1EwRkJReXhIUVVGblFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkhMRU5CUVVNc1RVRkJUU3hGUVVOeVF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZETDBJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVTjBRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRka0lzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk5VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYWkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVZpTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU03VVVGRk4wSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTmFMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0blFrRkROVUlzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVNMVFqdFpRVU5FTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzU1VGQlNTeEpRVUZKTEVOQlFVTXNjVUpCUVhGQ08xbEJRVVVzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGTE4wUXNTVUZCU1N4VFFVRlRMRU5CUVVNN1VVRkRaQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZGZEVJc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTTdVMEZEY0VNN1lVRkJUVHRaUVVWSUxGTkJRVk1zUjBGQlJ5eERRVUZETEVsQlFVa3NNRUpCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1kwRkJZeXhGUVVGRkxFMUJRVTBzUTBGQlF5eGpRVUZqTEVWQlFVVXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hMUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRnlRaXhEUVVGeFFpeERRVUZETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVsMlNTeERRVUZETEVkQlFVY3NhVUpCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1kwRkJUU3hQUVVGQkxFTkJRVU1zUlVGQlJDeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXpReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1owSkJRMnBDTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxGRkJRVkU3YjBKQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZUTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRE1VVXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzVVVGQlVUdHZRa0ZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFWTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRemxGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMmRDUVVOcVFpeEpRVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnFSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4cFFrRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyaEVMRTlCUVU4c1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhGUVVGRk8xbEJRMnhGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOV0xFbEJRVWtzWVVGQllTeEhRVUZITEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzWVVGQllUdG5Ra0ZET1VNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNN1owSkJRemRDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzWVVGQllTeERRVUZETzFsQlEzUkRMRU5CUVVNc1EwRkJRenRaUVVOR0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRuUWtGRGJFSXNZVUZCWVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRnBRbkpFTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU55UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU42UWl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOT096dFpRVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRk4wUXNTVUZCU1N4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZETjBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zZDBKQlFYZENMRVZCUVVVN1dVRkRla0lzU1VGQlNTeERRVUZETEZsQlFXRXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1dVRkRNMFlzWTBGQll5eEhRVUZITEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc05rTkJRU3RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFbEJRVWtzUlVGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGSGVrbzdVVUZGUkN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlF6RkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeHBRa0ZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhaRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJRelZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTllMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRXQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEycERPMU5CUTBvN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJTekZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc09FSkJRVGhDTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSM3BFTEVsQlFVa3NZMEZCWXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8xbEJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3h6UWtGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRja29zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc0swSkJRU3RDTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFTkJRVU1zTmtKQlFUWkNMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVZDBSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNaQ0xFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlEwb3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFrVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeHpRa0ZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxHTkJRV01zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZETzFsQlF6VklMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzQkZPMUZCUjBRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMQ3RDUVVFclFpeERRVUZETEVOQlFVTTdVVUZGYmtRc1NVRkJTU3hyUWtGQmEwSXNSVUZCUlR0WlFVTndRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYmtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGxRVUZsTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4cFFrRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1JVRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzJkQ1FVTjJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkRMRTlCUVU4c1EwRkJReXhEUVVGQk8xbEJRMW9zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEU0N4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEY2tJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU42UXp0UlFVVkVMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5dzJRa0ZCTmtJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTNSRUxFOUJRVThzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVThzT0VKQlFXRXNSMEZCY2tJc1ZVRkJjMElzVlVGQmEwSXNSVUZCUlN4RFFVRlhMRVZCUVVVc1EwRkJWenRSUVVNNVJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zU1VGQlNTeFZRVUZWTEVkQlFVY3NRMEZCUXl4RlFVRkZPMWxCUnpORExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRek5DTEVsQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1EwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlV5eERRVUZETEVOQlFVTXNUVUZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVk1zUTBGQlF5eERRVUZETEUxQlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRU3hGUVVGMlJTeERRVUYxUlN4RFFVRkRMRU5CUVVNN1dVRkRNVWNzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4RFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUVN4RlFVRjJRaXhEUVVGMVFpeERRVUZETEVOQlFVTTdXVUZEZGtRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRuUWtGRGRFSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFsQlF6ZERMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZEZEVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnp0dlFrRkRMMElzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZvUkN4RFFVRm5SQ3hEUVVGRExFTkJRVU03WjBKQlF6VkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWYzdiMEpCUXk5Q0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1JVRkJSU3hKUVVGSkxFOUJRVUVzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQmFrUXNRMEZCYVVRc1EwRkJReXhEUVVGRE8xbEJRMnhHTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUjBnc1NVRkJTU3hOUVVGTkxFVkJRVVU3YVVKQlExQXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEYWtJc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dHBRa0ZEVkN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8ybENRVU5hTEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNN2FVSkJRM0JDTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03YVVKQlEycERMSGRDUVVGM1FpeERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRNMElzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8ybENRVU14UWl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJSWFpETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dG5Ra0ZEYWtJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNdlFpeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTk9PMkZCUVUwN1dVRkRTQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRUUVVOcVF6dEpRVU5NTEVOQlFVTTdTVUZIVHl3NFEwRkJOa0lzUjBGQmNrTXNWVUZCYzBNc1MwRkJZU3hGUVVGRkxFMUJRV01zUlVGQlJTeFhRVUV5UWp0UlFVRm9SeXhwUWtGbFF6dFJRV1p2UlN3MFFrRkJRU3hGUVVGQkxHdENRVUV5UWp0UlFVVTFSaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNTVUZCU1N4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hIUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyNUVMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEycEZMRWxCUVVrc1RVRkJUU3hIUVVGSExHMURRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEZEVRc2FVTkJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzFsQlF6TkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRM0pDTEV0QlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8yOUNRVU5XTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRla0lzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTTFRanRaUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEwNDdTVUZEVEN4RFFVRkRPMGxCUlVRc2RVSkJRVTBzUjBGQlRqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU16UWl4RFFVRkRPMGxCUlVRc2NVSkJRVWtzUjBGQlNqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCU1VRc2JVTkJRV3RDTEVkQlFXeENMRlZCUVcxQ0xGVkJRWE5DTzFGQlFYUkNMREpDUVVGQkxFVkJRVUVzWTBGQmMwSTdVVUZEY2tNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRWxCUVVrc05rSkJRWE5DTEVOQlF6bERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTjJRaXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdVVUZEY0VRc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5hTEVOQlFVTTdTVUZYUkN3d1FrRkJVeXhIUVVGVUxGVkJRVlVzU1VGQlNTeEZRVUZGTEVWQlFXTXNSVUZCUlN4SlFVRkpPMUZCUVhCQ0xHMUNRVUZCTEVWQlFVRXNUVUZCWXp0UlFVTXhRaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZKYkVJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTdzJRa0ZCYzBJc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVOeVNDeExRVUZMTEVkQlFXRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlEzaEVMRXRCUVVzc1IwRkJZU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkRlRVFzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUXpsRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTJwRUxFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRla1VzU1VGQlNTeFBRVUZQTEVsQlFVa3NTMEZCU3l4WFFVRlhMRVZCUVVVN1dVRkROMElzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJJN1VVRkRSQ3hKUVVGSkxGTkJRVk1zUjBGQlJ5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZZTEVOQlFWY3NSVUZCUlN4VFFVRlRMRWRCUVVjc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJXQ3hEUVVGWExFVkJRVVVzVFVGQlRTeEhRVUZITEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZXTEVOQlFWVXNSVUZEY0VZc1RVRkJUU3hIUVVGSExFbEJRVWtzTUVKQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlF6RkZMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRMMFFzU1VGQlNTeFpRVUZaTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1NVRkJTU3haUVVGWkxFTkJRVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMjVGTEVsQlFVa3NTMEZCU3l4SFFVRkhMREpDUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVlzVVVGQlVTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRUUVVNelJEdGhRVUZOTzFsQlEwZ3NTVUZCU1N4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlF6TkNMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE5VSXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVNMVFpeFJRVUZSTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVSU3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpWRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNjMEpCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0zUkR0UlFXRkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZIVFN4eFFrRkJZeXhIUVVGeVFpeFZRVUZ6UWl4RFFVRnpRanRSUVVONFF5eFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZUTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGUkxFTkJRVU1zUTBGQlF5eE5RVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNCR0xFTkJRVU03U1VGSFRTeHhRa0ZCWXl4SFFVRnlRaXhWUVVGelFpeERRVUZ6UWp0UlFVTjRReXhQUVVGUExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGVExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRlJMRU5CUVVNc1EwRkJReXhOUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkdMRU5CUVVNN1NVRkhUU3hoUVVGTkxFZEJRV0lzVlVGQll5eERRVUZ6UWp0UlFVTm9ReXhQUVVGUExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1VzUTBGQlF6dEpRVTFOTEdkQ1FVRlRMRWRCUVdoQ0xGVkJRV2xDTEVOQlFXVTdVVUZETlVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEV2l4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGREwwTTdZVUZCVFR0WlFVTklMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEYUVJN1NVRkRUQ3hEUVVGRE8wbEJTV01zWlVGQlVTeEhRVUYyUWl4VlFVRjNRaXhEUVVGUE8xRkJRM0pDTEVOQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5hTEVOQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4wUWl4RFFVRkRPMGxCU1dNc2EwSkJRVmNzUjBGQk1VSXNWVUZCTWtJc1EwRkJVU3hGUVVGRkxFMUJRV2RETzFGQlEycEZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTnFReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1owSkJRMlFzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMklzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRFlpeERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUXl4RFFVRkZMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyaEVMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRFJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhYUVVGWExFVkJRVVU3V1VGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCTjBJc1EwRkJOa0lzUTBGQlF5eERRVUZETzFOQlEzaEVPMGxCUTB3c1EwRkJRenRKUVVkTkxHbENRVUZWTEVkQlFXcENMRlZCUVd0Q0xFTkJRV1U3VVVGRE4wSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRFdpeFBRVUZQTzJkQ1FVTklMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRhRUlzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRk8yRkJRMjVDTEVOQlFVTTdVMEZEVER0aFFVRk5PMWxCUTBnc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRFdqdEpRVU5NTEVOQlFVTTdTVUZKVFN4WFFVRkpMRWRCUVZnc1ZVRkJXU3hEUVVGbExFVkJRVVVzVVVGQmEwTTdVVUZETTBRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEV2l4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTEVWQlFVVTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenR2UWtGRFpDeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJoRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETVVJc1EwRkJSU3hEUVVGRExFVkJRVVVzUjBGQlV5eERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRhRVFzUTBGQlJTeERRVUZETEVWQlFVVXNSMEZCVXl4RFFVRkZMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE1VUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRUanRaUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzJGQlEyNUVPMU5CUTBvN1lVRkJUVHRaUVVOSExFTkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeERRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE5VSTdTVUZEVEN4RFFVRkRPMGxCU1Uwc1kwRkJUeXhIUVVGa0xGVkJRV1VzUTBGQlF6dFJRVU5hTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRMW9zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhGUVVGRk8yZENRVU5xUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdiMEpCUTJRc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRiRUlzVDBGQllTeERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03YjBKQlEyeERMRTlCUVdFc1EwRkJSU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMmRDUVVOMFF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTk9PMWxCUTBRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RlFVRkZPMmRDUVVOcVF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdZVUZEY0VNN1UwRkRTanRoUVVGTk8xbEJRMGdzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVWcVFqdEpRVU5NTEVOQlFVTTdTVUZIVFN4blFrRkJVeXhIUVVGb1FpeFZRVUZwUWl4RFFVRkRPMUZCUTJRc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEWWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkNMRU5CUVVNN1NVRkhUU3hsUVVGUkxFZEJRV1lzVlVGQlowSXNRMEZCUXp0UlFVTmlMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVOTUxHRkJRVU03UVVGQlJDeERRVUZETEVGQmJIbENSQ3hKUVd0NVFrTTdRVUZzZVVKWkxIZENRVUZOSW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBMYXlvdXRBZGFwdG9yID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhMYXlvdXRBZGFwdG9yLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gTGF5b3V0QWRhcHRvcihvcHRpb25zKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcclxuICAgICAgICB2YXIgc2VsZiA9IF90aGlzO1xyXG4gICAgICAgIHZhciBvID0gb3B0aW9ucztcclxuICAgICAgICBpZiAoby50cmlnZ2VyKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnRyaWdnZXIgPSBvLnRyaWdnZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvLmtpY2spIHtcclxuICAgICAgICAgICAgX3RoaXMua2ljayA9IG8ua2ljaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG8uZHJhZykge1xyXG4gICAgICAgICAgICBfdGhpcy5kcmFnID0gby5kcmFnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoby5vbikge1xyXG4gICAgICAgICAgICBfdGhpcy5vbiA9IG8ub247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLmRyYWdzdGFydCA9IF90aGlzLmRyYWdTdGFydCA9IGxheW91dF8xLkxheW91dC5kcmFnU3RhcnQ7XHJcbiAgICAgICAgX3RoaXMuZHJhZ2VuZCA9IF90aGlzLmRyYWdFbmQgPSBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZDtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gKGUpIHsgfTtcclxuICAgIDtcclxuICAgIExheW91dEFkYXB0b3IucHJvdG90eXBlLmtpY2sgPSBmdW5jdGlvbiAoKSB7IH07XHJcbiAgICA7XHJcbiAgICBMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS5kcmFnID0gZnVuY3Rpb24gKCkgeyB9O1xyXG4gICAgO1xyXG4gICAgTGF5b3V0QWRhcHRvci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBsaXN0ZW5lcikgeyByZXR1cm4gdGhpczsgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBMYXlvdXRBZGFwdG9yO1xyXG59KGxheW91dF8xLkxheW91dCkpO1xyXG5leHBvcnRzLkxheW91dEFkYXB0b3IgPSBMYXlvdXRBZGFwdG9yO1xyXG5mdW5jdGlvbiBhZGFwdG9yKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBuZXcgTGF5b3V0QWRhcHRvcihvcHRpb25zKTtcclxufVxyXG5leHBvcnRzLmFkYXB0b3IgPSBhZGFwdG9yO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV1JoY0hSdmNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJGa1lYQjBiM0l1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPMEZCUVVFc2JVTkJRV2xFTzBGQlJUZERPMGxCUVcxRExHbERRVUZOTzBsQllYSkRMSFZDUVVGaExFOUJRVTg3VVVGQmNFSXNXVUZEU1N4cFFrRkJUeXhUUVhsQ1ZqdFJRWEpDUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGSkxFTkJRVU03VVVGRGFFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRE8xRkJSV2hDTEVsQlFVc3NRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSenRaUVVOaUxFdEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJRenRUUVVNMVFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOUUxFdEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOc1FqdFJRVVZFTEV0QlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1MwRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eGxRVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTI1RUxFdEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTMEZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhsUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZET3p0SlFVTnFSQ3hEUVVGRE8wbEJjRU5FTEN0Q1FVRlBMRWRCUVZBc1ZVRkJVU3hEUVVGUkxFbEJRVWNzUTBGQlF6dEpRVUZCTEVOQlFVTTdTVUZEY2tJc05FSkJRVWtzUjBGQlNpeGpRVUZSTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUTFZc05FSkJRVWtzUjBGQlNpeGpRVUZSTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUTFZc01FSkJRVVVzUjBGQlJpeFZRVUZITEZOQlFUWkNMRVZCUVVVc1VVRkJiMElzU1VGQlZ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkJRU3hEUVVGRE8wbEJhME53Uml4dlFrRkJRenRCUVVGRUxFTkJRVU1zUVVGNFEwUXNRMEZCYlVNc1pVRkJUU3hIUVhkRGVFTTdRVUY0UTFrc2MwTkJRV0U3UVVFMlF6RkNMRk5CUVdkQ0xFOUJRVThzUTBGQlJTeFBRVUZQTzBsQlF6VkNMRTlCUVU4c1NVRkJTU3hoUVVGaExFTkJRVVVzVDBGQlR5eERRVUZGTEVOQlFVTTdRVUZEZUVNc1EwRkJRenRCUVVaRUxEQkNRVVZESW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBEM1N0eWxlTGF5b3V0QWRhcHRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoRDNTdHlsZUxheW91dEFkYXB0b3IsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBEM1N0eWxlTGF5b3V0QWRhcHRvcigpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmV2ZW50ID0gZDMuZGlzcGF0Y2gobGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS5zdGFydF0sIGxheW91dF8xLkV2ZW50VHlwZVtsYXlvdXRfMS5FdmVudFR5cGUudGlja10sIGxheW91dF8xLkV2ZW50VHlwZVtsYXlvdXRfMS5FdmVudFR5cGUuZW5kXSk7XHJcbiAgICAgICAgdmFyIGQzbGF5b3V0ID0gX3RoaXM7XHJcbiAgICAgICAgdmFyIGRyYWc7XHJcbiAgICAgICAgX3RoaXMuZHJhZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKCFkcmFnKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZHJhZyA9IGQzLmJlaGF2aW9yLmRyYWcoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5vcmlnaW4obGF5b3V0XzEuTGF5b3V0LmRyYWdPcmlnaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgLm9uKFwiZHJhZ3N0YXJ0LmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ1N0YXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcImRyYWcuZDNhZGFwdG9yXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0XzEuTGF5b3V0LmRyYWcoZCwgZDMuZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGQzbGF5b3V0LnJlc3VtZSgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAub24oXCJkcmFnZW5kLmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYWc7XHJcbiAgICAgICAgICAgIHRoaXNcclxuICAgICAgICAgICAgICAgIC5jYWxsKGRyYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBkM2V2ZW50ID0geyB0eXBlOiBsYXlvdXRfMS5FdmVudFR5cGVbZS50eXBlXSwgYWxwaGE6IGUuYWxwaGEsIHN0cmVzczogZS5zdHJlc3MgfTtcclxuICAgICAgICB0aGlzLmV2ZW50W2QzZXZlbnQudHlwZV0oZDNldmVudCk7XHJcbiAgICB9O1xyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLmtpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBkMy50aW1lcihmdW5jdGlvbiAoKSB7IHJldHVybiBfc3VwZXIucHJvdG90eXBlLnRpY2suY2FsbChfdGhpcyk7IH0pO1xyXG4gICAgfTtcclxuICAgIEQzU3R5bGVMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudFR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudFR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQub24oZXZlbnRUeXBlLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm9uKGxheW91dF8xLkV2ZW50VHlwZVtldmVudFR5cGVdLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBEM1N0eWxlTGF5b3V0QWRhcHRvcjtcclxufShsYXlvdXRfMS5MYXlvdXQpKTtcclxuZXhwb3J0cy5EM1N0eWxlTGF5b3V0QWRhcHRvciA9IEQzU3R5bGVMYXlvdXRBZGFwdG9yO1xyXG5mdW5jdGlvbiBkM2FkYXB0b3IoKSB7XHJcbiAgICByZXR1cm4gbmV3IEQzU3R5bGVMYXlvdXRBZGFwdG9yKCk7XHJcbn1cclxuZXhwb3J0cy5kM2FkYXB0b3IgPSBkM2FkYXB0b3I7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpETjJNMkZrWVhCMGIzSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5a00zWXpZV1JoY0hSdmNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdPenM3T3pzN1FVRk5RU3h0UTBGQmEwUTdRVUZIT1VNN1NVRkJNRU1zZDBOQlFVMDdTVUZuUWpWRE8xRkJRVUVzV1VGRFNTeHBRa0ZCVHl4VFFYVkNWanRSUVhaRFJDeFhRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhyUWtGQlV5eERRVUZETEd0Q1FVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzYTBKQlFWTXNRMEZCUXl4clFrRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEd0Q1FVRlRMRU5CUVVNc2EwSkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCYTBKcVJ5eEpRVUZKTEZGQlFWRXNSMEZCUnl4TFFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTTdVVUZEVkN4TFFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSE8xbEJRMUlzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0blFrRkRVQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHR4UWtGRGVFSXNUVUZCVFN4RFFVRkRMR1ZCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03Y1VKQlEzcENMRVZCUVVVc1EwRkJReXh4UWtGQmNVSXNSVUZCUlN4bFFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8zRkNRVU16UXl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNWVUZCUVN4RFFVRkRPMjlDUVVOdVFpeGxRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJUeXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdiMEpCUXpsQ0xGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0blFrRkRkRUlzUTBGQlF5eERRVUZETzNGQ1FVTkVMRVZCUVVVc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4bFFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WVVGRGFFUTdXVUZGUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTA3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkhia01zU1VGQlNUdHBRa0ZGUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGNFSXNRMEZCUXl4RFFVRkJPenRKUVVOTUxFTkJRVU03U1VGeVEwUXNjME5CUVU4c1IwRkJVQ3hWUVVGUkxFTkJRVkU3VVVGRFdpeEpRVUZKTEU5QlFVOHNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hyUWtGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFGQlF6VkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1JETEVOQlFVTTdTVUZIUkN4dFEwRkJTU3hIUVVGS08xRkJRVUVzYVVKQlJVTTdVVUZFUnl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExHTkJRVTBzVDBGQlFTeHBRa0ZCVFN4SlFVRkpMRmxCUVVVc1JVRkJXaXhEUVVGWkxFTkJRVU1zUTBGQlF6dEpRVU5xUXl4RFFVRkRPMGxCWjBORUxHbERRVUZGTEVkQlFVWXNWVUZCUnl4VFFVRTJRaXhGUVVGRkxGRkJRVzlDTzFGQlEyeEVMRWxCUVVrc1QwRkJUeXhUUVVGVExFdEJRVXNzVVVGQlVTeEZRVUZGTzFsQlF5OUNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeERRVUZETEZOQlFWTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRUUVVOMFF6dGhRVUZOTzFsQlEwZ3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zYTBKQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU5xUkR0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZEVEN3eVFrRkJRenRCUVVGRUxFTkJRVU1zUVVGdVJFUXNRMEZCTUVNc1pVRkJUU3hIUVcxRUwwTTdRVUZ1UkZrc2IwUkJRVzlDTzBGQmFVVnFReXhUUVVGblFpeFRRVUZUTzBsQlEzSkNMRTlCUVU4c1NVRkJTU3h2UWtGQmIwSXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFTkJRVU03UVVGR1JDdzRRa0ZGUXlKOSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBEM1N0eWxlTGF5b3V0QWRhcHRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoRDNTdHlsZUxheW91dEFkYXB0b3IsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBEM1N0eWxlTGF5b3V0QWRhcHRvcihkM0NvbnRleHQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmQzQ29udGV4dCA9IGQzQ29udGV4dDtcclxuICAgICAgICBfdGhpcy5ldmVudCA9IGQzQ29udGV4dC5kaXNwYXRjaChsYXlvdXRfMS5FdmVudFR5cGVbbGF5b3V0XzEuRXZlbnRUeXBlLnN0YXJ0XSwgbGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS50aWNrXSwgbGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS5lbmRdKTtcclxuICAgICAgICB2YXIgZDNsYXlvdXQgPSBfdGhpcztcclxuICAgICAgICB2YXIgZHJhZztcclxuICAgICAgICBfdGhpcy5kcmFnID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIWRyYWcpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkcmFnID0gZDNDb250ZXh0LmRyYWcoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJqZWN0KGxheW91dF8xLkxheW91dC5kcmFnT3JpZ2luKVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcInN0YXJ0LmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ1N0YXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcImRyYWcuZDNhZGFwdG9yXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0XzEuTGF5b3V0LmRyYWcoZCwgZDNDb250ZXh0LmV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBkM2xheW91dC5yZXN1bWUoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm9uKFwiZW5kLmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYWc7XHJcbiAgICAgICAgICAgIGFyZ3VtZW50c1swXS5jYWxsKGRyYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBkM2V2ZW50ID0geyB0eXBlOiBsYXlvdXRfMS5FdmVudFR5cGVbZS50eXBlXSwgYWxwaGE6IGUuYWxwaGEsIHN0cmVzczogZS5zdHJlc3MgfTtcclxuICAgICAgICB0aGlzLmV2ZW50LmNhbGwoZDNldmVudC50eXBlLCBkM2V2ZW50KTtcclxuICAgIH07XHJcbiAgICBEM1N0eWxlTGF5b3V0QWRhcHRvci5wcm90b3R5cGUua2ljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciB0ID0gdGhpcy5kM0NvbnRleHQudGltZXIoZnVuY3Rpb24gKCkgeyByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS50aWNrLmNhbGwoX3RoaXMpICYmIHQuc3RvcCgpOyB9KTtcclxuICAgIH07XHJcbiAgICBEM1N0eWxlTGF5b3V0QWRhcHRvci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBsaXN0ZW5lcikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnRUeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm9uKGV2ZW50VHlwZSwgbGlzdGVuZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5vbihsYXlvdXRfMS5FdmVudFR5cGVbZXZlbnRUeXBlXSwgbGlzdGVuZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICByZXR1cm4gRDNTdHlsZUxheW91dEFkYXB0b3I7XHJcbn0obGF5b3V0XzEuTGF5b3V0KSk7XHJcbmV4cG9ydHMuRDNTdHlsZUxheW91dEFkYXB0b3IgPSBEM1N0eWxlTGF5b3V0QWRhcHRvcjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkROMk5HRmtZWEIwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOVhaV0pEYjJ4aEwzTnlZeTlrTTNZMFlXUmhjSFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdPenM3UVVGSFFTeHRRMEZCYVVRN1FVRlZha1E3U1VGQk1FTXNkME5CUVUwN1NVRnBRalZETERoQ1FVRnZRaXhUUVVGdlFqdFJRVUY0UXl4WlFVTkpMR2xDUVVGUExGTkJlVUpXTzFGQk1VSnRRaXhsUVVGVExFZEJRVlFzVTBGQlV5eERRVUZYTzFGQlJYQkRMRXRCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEZGQlFWRXNRMEZCUXl4clFrRkJVeXhEUVVGRExHdENRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc2EwSkJRVk1zUTBGQlF5eHJRa0ZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxHdENRVUZUTEVOQlFVTXNhMEpCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlIycElMRWxCUVVrc1VVRkJVU3hIUVVGSExFdEJRVWtzUTBGQlF6dFJRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJRenRSUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVYzdXVUZEVWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8yZENRVU5RTEVsQlFVa3NTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVU3Y1VKQlEzUkNMRTlCUVU4c1EwRkJReXhsUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzNGQ1FVTXhRaXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1pVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF6dHhRa0ZEZGtNc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRlZCUVVFc1EwRkJRenR2UWtGRGJrSXNaVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJUU3hEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMjlDUVVOeVF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXp0eFFrRkRSQ3hGUVVGRkxFTkJRVU1zWlVGQlpTeEZRVUZGTEdWQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVNMVF6dFpRVVZFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0WlFVdHVReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRelZDTEVOQlFVTXNRMEZCUVRzN1NVRkRUQ3hEUVVGRE8wbEJla05FTEhORFFVRlBMRWRCUVZBc1ZVRkJVU3hEUVVGUk8xRkJRMW9zU1VGQlNTeFBRVUZQTEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVc2EwSkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVWMxUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRlBMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZIUkN4dFEwRkJTU3hIUVVGS08xRkJRVUVzYVVKQlJVTTdVVUZFUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4alFVRk5MRTlCUVVFc2FVSkJRVTBzU1VGQlNTeFpRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGNFFpeERRVUYzUWl4RFFVRkRMRU5CUVVNN1NVRkRha1VzUTBGQlF6dEpRV3REUkN4cFEwRkJSU3hIUVVGR0xGVkJRVWNzVTBGQk5rSXNSVUZCUlN4UlFVRnZRanRSUVVOc1JDeEpRVUZKTEU5QlFVOHNVMEZCVXl4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNdlFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVMEZEZEVNN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMR3RDUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRha1E3VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJRMHdzTWtKQlFVTTdRVUZCUkN4RFFVRkRMRUZCZEVSRUxFTkJRVEJETEdWQlFVMHNSMEZ6UkM5RE8wRkJkRVJaTEc5RVFVRnZRaUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGQzdjMgPSByZXF1aXJlKFwiLi9kM3YzYWRhcHRvclwiKTtcclxudmFyIGQzdjQgPSByZXF1aXJlKFwiLi9kM3Y0YWRhcHRvclwiKTtcclxuO1xyXG5mdW5jdGlvbiBkM2FkYXB0b3IoZDNDb250ZXh0KSB7XHJcbiAgICBpZiAoIWQzQ29udGV4dCB8fCBpc0QzVjMoZDNDb250ZXh0KSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgZDN2My5EM1N0eWxlTGF5b3V0QWRhcHRvcigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBkM3Y0LkQzU3R5bGVMYXlvdXRBZGFwdG9yKGQzQ29udGV4dCk7XHJcbn1cclxuZXhwb3J0cy5kM2FkYXB0b3IgPSBkM2FkYXB0b3I7XHJcbmZ1bmN0aW9uIGlzRDNWMyhkM0NvbnRleHQpIHtcclxuICAgIHZhciB2M2V4cCA9IC9eM1xcLi87XHJcbiAgICByZXR1cm4gZDNDb250ZXh0LnZlcnNpb24gJiYgZDNDb250ZXh0LnZlcnNpb24ubWF0Y2godjNleHApICE9PSBudWxsO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpETmhaR0Z3ZEc5eUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZWMlZpUTI5c1lTOXpjbU12WkROaFpHRndkRzl5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzYjBOQlFYRkRPMEZCUTNKRExHOURRVUZ4UXp0QlFVZFZMRU5CUVVNN1FVRTBRbWhFTEZOQlFXZENMRk5CUVZNc1EwRkJReXhUUVVGM1F6dEpRVU01UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlR0UlFVTnFReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03UzBGRE1VTTdTVUZEUkN4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM0JFTEVOQlFVTTdRVUZNUkN3NFFrRkxRenRCUVVWRUxGTkJRVk1zVFVGQlRTeERRVUZETEZOQlFYVkRPMGxCUTI1RUxFbEJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhQUVVGaExGTkJRVlVzUTBGQlF5eFBRVUZQTEVsQlFWVXNVMEZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRPMEZCUTNSR0xFTkJRVU1pZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciByZWN0YW5nbGVfMSA9IHJlcXVpcmUoXCIuL3JlY3RhbmdsZVwiKTtcclxudmFyIHZwc2NfMSA9IHJlcXVpcmUoXCIuL3Zwc2NcIik7XHJcbnZhciBzaG9ydGVzdHBhdGhzXzEgPSByZXF1aXJlKFwiLi9zaG9ydGVzdHBhdGhzXCIpO1xyXG52YXIgTm9kZVdyYXBwZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZVdyYXBwZXIoaWQsIHJlY3QsIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMucmVjdCA9IHJlY3Q7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMubGVhZiA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3VuZGVmaW5lZCcgfHwgY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE5vZGVXcmFwcGVyO1xyXG59KCkpO1xyXG5leHBvcnRzLk5vZGVXcmFwcGVyID0gTm9kZVdyYXBwZXI7XHJcbnZhciBWZXJ0ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZlcnQoaWQsIHgsIHksIG5vZGUsIGxpbmUpIHtcclxuICAgICAgICBpZiAobm9kZSA9PT0gdm9pZCAwKSB7IG5vZGUgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGxpbmUgPT09IHZvaWQgMCkgeyBsaW5lID0gbnVsbDsgfVxyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnggPSB4O1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFZlcnQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuVmVydCA9IFZlcnQ7XHJcbnZhciBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlKHMsIHQpIHtcclxuICAgICAgICB0aGlzLnMgPSBzO1xyXG4gICAgICAgIHRoaXMudCA9IHQ7XHJcbiAgICAgICAgdmFyIG1mID0gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlLmZpbmRNYXRjaChzLCB0KTtcclxuICAgICAgICB2YXIgdHIgPSB0LnNsaWNlKDApLnJldmVyc2UoKTtcclxuICAgICAgICB2YXIgbXIgPSBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UuZmluZE1hdGNoKHMsIHRyKTtcclxuICAgICAgICBpZiAobWYubGVuZ3RoID49IG1yLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCA9IG1mLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5zaSA9IG1mLnNpO1xyXG4gICAgICAgICAgICB0aGlzLnRpID0gbWYudGk7XHJcbiAgICAgICAgICAgIHRoaXMucmV2ZXJzZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gbXIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnNpID0gbXIuc2k7XHJcbiAgICAgICAgICAgIHRoaXMudGkgPSB0Lmxlbmd0aCAtIG1yLnRpIC0gbXIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnJldmVyc2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UuZmluZE1hdGNoID0gZnVuY3Rpb24gKHMsIHQpIHtcclxuICAgICAgICB2YXIgbSA9IHMubGVuZ3RoO1xyXG4gICAgICAgIHZhciBuID0gdC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG1hdGNoID0geyBsZW5ndGg6IDAsIHNpOiAtMSwgdGk6IC0xIH07XHJcbiAgICAgICAgdmFyIGwgPSBuZXcgQXJyYXkobSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtOyBpKyspIHtcclxuICAgICAgICAgICAgbFtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspXHJcbiAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PT0gdFtqXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2ID0gbFtpXVtqXSA9IChpID09PSAwIHx8IGogPT09IDApID8gMSA6IGxbaSAtIDFdW2ogLSAxXSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPiBtYXRjaC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gubGVuZ3RoID0gdjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guc2kgPSBpIC0gdiArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnRpID0gaiAtIHYgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgbFtpXVtqXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaDtcclxuICAgIH07XHJcbiAgICBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UucHJvdG90eXBlLmdldFNlcXVlbmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA+PSAwID8gdGhpcy5zLnNsaWNlKHRoaXMuc2ksIHRoaXMuc2kgKyB0aGlzLmxlbmd0aCkgOiBbXTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlO1xyXG59KCkpO1xyXG5leHBvcnRzLkxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSA9IExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZTtcclxudmFyIEdyaWRSb3V0ZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gR3JpZFJvdXRlcihvcmlnaW5hbG5vZGVzLCBhY2Nlc3NvciwgZ3JvdXBQYWRkaW5nKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoZ3JvdXBQYWRkaW5nID09PSB2b2lkIDApIHsgZ3JvdXBQYWRkaW5nID0gMTI7IH1cclxuICAgICAgICB0aGlzLm9yaWdpbmFsbm9kZXMgPSBvcmlnaW5hbG5vZGVzO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBQYWRkaW5nID0gZ3JvdXBQYWRkaW5nO1xyXG4gICAgICAgIHRoaXMubGVhdmVzID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5vZGVzID0gb3JpZ2luYWxub2Rlcy5tYXAoZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIG5ldyBOb2RlV3JhcHBlcihpLCBhY2Nlc3Nvci5nZXRCb3VuZHModiksIGFjY2Vzc29yLmdldENoaWxkcmVuKHYpKTsgfSk7XHJcbiAgICAgICAgdGhpcy5sZWF2ZXMgPSB0aGlzLm5vZGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdi5sZWFmOyB9KTtcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMubm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChnKSB7IHJldHVybiAhZy5sZWFmOyB9KTtcclxuICAgICAgICB0aGlzLmNvbHMgPSB0aGlzLmdldEdyaWRMaW5lcygneCcpO1xyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMuZ2V0R3JpZExpbmVzKCd5Jyk7XHJcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICByZXR1cm4gdi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5ub2Rlc1tjXS5wYXJlbnQgPSB2OyB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnJvb3QgPSB7IGNoaWxkcmVuOiBbXSB9O1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYucGFyZW50ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgdi5wYXJlbnQgPSBfdGhpcy5yb290O1xyXG4gICAgICAgICAgICAgICAgX3RoaXMucm9vdC5jaGlsZHJlbi5wdXNoKHYuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHYucG9ydHMgPSBbXTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJhY2tUb0Zyb250ID0gdGhpcy5ub2Rlcy5zbGljZSgwKTtcclxuICAgICAgICB0aGlzLmJhY2tUb0Zyb250LnNvcnQoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIF90aGlzLmdldERlcHRoKHgpIC0gX3RoaXMuZ2V0RGVwdGgoeSk7IH0pO1xyXG4gICAgICAgIHZhciBmcm9udFRvQmFja0dyb3VwcyA9IHRoaXMuYmFja1RvRnJvbnQuc2xpY2UoMCkucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbiAoZykgeyByZXR1cm4gIWcubGVhZjsgfSk7XHJcbiAgICAgICAgZnJvbnRUb0JhY2tHcm91cHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICB2YXIgciA9IHJlY3RhbmdsZV8xLlJlY3RhbmdsZS5lbXB0eSgpO1xyXG4gICAgICAgICAgICB2LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIHIgPSByLnVuaW9uKF90aGlzLm5vZGVzW2NdLnJlY3QpOyB9KTtcclxuICAgICAgICAgICAgdi5yZWN0ID0gci5pbmZsYXRlKF90aGlzLmdyb3VwUGFkZGluZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGNvbE1pZHMgPSB0aGlzLm1pZFBvaW50cyh0aGlzLmNvbHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnBvczsgfSkpO1xyXG4gICAgICAgIHZhciByb3dNaWRzID0gdGhpcy5taWRQb2ludHModGhpcy5yb3dzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5wb3M7IH0pKTtcclxuICAgICAgICB2YXIgcm93eCA9IGNvbE1pZHNbMF0sIHJvd1ggPSBjb2xNaWRzW2NvbE1pZHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdmFyIGNvbHkgPSByb3dNaWRzWzBdLCBjb2xZID0gcm93TWlkc1tyb3dNaWRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIHZhciBobGluZXMgPSB0aGlzLnJvd3MubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiAoeyB4MTogcm93eCwgeDI6IHJvd1gsIHkxOiByLnBvcywgeTI6IHIucG9zIH0pOyB9KVxyXG4gICAgICAgICAgICAuY29uY2F0KHJvd01pZHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiAoeyB4MTogcm93eCwgeDI6IHJvd1gsIHkxOiBtLCB5MjogbSB9KTsgfSkpO1xyXG4gICAgICAgIHZhciB2bGluZXMgPSB0aGlzLmNvbHMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiAoeyB4MTogYy5wb3MsIHgyOiBjLnBvcywgeTE6IGNvbHksIHkyOiBjb2xZIH0pOyB9KVxyXG4gICAgICAgICAgICAuY29uY2F0KGNvbE1pZHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiAoeyB4MTogbSwgeDI6IG0sIHkxOiBjb2x5LCB5MjogY29sWSB9KTsgfSkpO1xyXG4gICAgICAgIHZhciBsaW5lcyA9IGhsaW5lcy5jb25jYXQodmxpbmVzKTtcclxuICAgICAgICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7IHJldHVybiBsLnZlcnRzID0gW107IH0pO1xyXG4gICAgICAgIHRoaXMudmVydHMgPSBbXTtcclxuICAgICAgICB0aGlzLmVkZ2VzID0gW107XHJcbiAgICAgICAgaGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBWZXJ0KF90aGlzLnZlcnRzLmxlbmd0aCwgdi54MSwgaC55MSk7XHJcbiAgICAgICAgICAgICAgICBoLnZlcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB2LnZlcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0cy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgdmFyIGkgPSBfdGhpcy5iYWNrVG9Gcm9udC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gX3RoaXMuYmFja1RvRnJvbnRbaV0sIHIgPSBub2RlLnJlY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnMocC54IC0gci5jeCgpKSwgZHkgPSBNYXRoLmFicyhwLnkgLSByLmN5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkeCA8IHIud2lkdGgoKSAvIDIgJiYgZHkgPCByLmhlaWdodCgpIC8gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLm5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGwsIGxpKSB7XHJcbiAgICAgICAgICAgIF90aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgIHYucmVjdC5saW5lSW50ZXJzZWN0aW9ucyhsLngxLCBsLnkxLCBsLngyLCBsLnkyKS5mb3JFYWNoKGZ1bmN0aW9uIChpbnRlcnNlY3QsIGopIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBWZXJ0KF90aGlzLnZlcnRzLmxlbmd0aCwgaW50ZXJzZWN0LngsIGludGVyc2VjdC55LCB2LCBsKTtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0cy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgICAgIGwudmVydHMucHVzaChwKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnBvcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBpc0hvcml6ID0gTWF0aC5hYnMobC55MSAtIGwueTIpIDwgMC4xO1xyXG4gICAgICAgICAgICB2YXIgZGVsdGEgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gaXNIb3JpeiA/IGIueCAtIGEueCA6IGIueSAtIGEueTsgfTtcclxuICAgICAgICAgICAgbC52ZXJ0cy5zb3J0KGRlbHRhKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsLnZlcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdSA9IGwudmVydHNbaSAtIDFdLCB2ID0gbC52ZXJ0c1tpXTtcclxuICAgICAgICAgICAgICAgIGlmICh1Lm5vZGUgJiYgdS5ub2RlID09PSB2Lm5vZGUgJiYgdS5ub2RlLmxlYWYpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5lZGdlcy5wdXNoKHsgc291cmNlOiB1LmlkLCB0YXJnZXQ6IHYuaWQsIGxlbmd0aDogTWF0aC5hYnMoZGVsdGEodSwgdikpIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBHcmlkUm91dGVyLnByb3RvdHlwZS5hdmcgPSBmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5yZWR1Y2UoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKyB5OyB9KSAvIGEubGVuZ3RoOyB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUuZ2V0R3JpZExpbmVzID0gZnVuY3Rpb24gKGF4aXMpIHtcclxuICAgICAgICB2YXIgY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIHZhciBscyA9IHRoaXMubGVhdmVzLnNsaWNlKDAsIHRoaXMubGVhdmVzLmxlbmd0aCk7XHJcbiAgICAgICAgd2hpbGUgKGxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIG92ZXJsYXBwaW5nID0gbHMuZmlsdGVyKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnJlY3RbJ292ZXJsYXAnICsgYXhpcy50b1VwcGVyQ2FzZSgpXShsc1swXS5yZWN0KTsgfSk7XHJcbiAgICAgICAgICAgIHZhciBjb2wgPSB7XHJcbiAgICAgICAgICAgICAgICBub2Rlczogb3ZlcmxhcHBpbmcsXHJcbiAgICAgICAgICAgICAgICBwb3M6IHRoaXMuYXZnKG92ZXJsYXBwaW5nLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5yZWN0WydjJyArIGF4aXNdKCk7IH0pKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgICAgICAgY29sLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGxzLnNwbGljZShscy5pbmRleE9mKHYpLCAxKTsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb3MgLSBiLnBvczsgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUuZ2V0RGVwdGggPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBkZXB0aCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKHYucGFyZW50ICE9PSB0aGlzLnJvb3QpIHtcclxuICAgICAgICAgICAgZGVwdGgrKztcclxuICAgICAgICAgICAgdiA9IHYucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGVwdGg7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUubWlkUG9pbnRzID0gZnVuY3Rpb24gKGEpIHtcclxuICAgICAgICB2YXIgZ2FwID0gYVsxXSAtIGFbMF07XHJcbiAgICAgICAgdmFyIG1pZHMgPSBbYVswXSAtIGdhcCAvIDJdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtaWRzLnB1c2goKGFbaV0gKyBhW2kgLSAxXSkgLyAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWlkcy5wdXNoKGFbYS5sZW5ndGggLSAxXSArIGdhcCAvIDIpO1xyXG4gICAgICAgIHJldHVybiBtaWRzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLmZpbmRMaW5lYWdlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbGluZWFnZSA9IFt2XTtcclxuICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIHYgPSB2LnBhcmVudDtcclxuICAgICAgICAgICAgbGluZWFnZS5wdXNoKHYpO1xyXG4gICAgICAgIH0gd2hpbGUgKHYgIT09IHRoaXMucm9vdCk7XHJcbiAgICAgICAgcmV0dXJuIGxpbmVhZ2UucmV2ZXJzZSgpO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLmZpbmRBbmNlc3RvclBhdGhCZXR3ZWVuID0gZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICB2YXIgYWEgPSB0aGlzLmZpbmRMaW5lYWdlKGEpLCBiYSA9IHRoaXMuZmluZExpbmVhZ2UoYiksIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChhYVtpXSA9PT0gYmFbaV0pXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICByZXR1cm4geyBjb21tb25BbmNlc3RvcjogYWFbaSAtIDFdLCBsaW5lYWdlczogYWEuc2xpY2UoaSkuY29uY2F0KGJhLnNsaWNlKGkpKSB9O1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnNpYmxpbmdPYnN0YWNsZXMgPSBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmZpbmRBbmNlc3RvclBhdGhCZXR3ZWVuKGEsIGIpO1xyXG4gICAgICAgIHZhciBsaW5lYWdlTG9va3VwID0ge307XHJcbiAgICAgICAgcGF0aC5saW5lYWdlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7IHJldHVybiBsaW5lYWdlTG9va3VwW3YuaWRdID0ge307IH0pO1xyXG4gICAgICAgIHZhciBvYnN0YWNsZXMgPSBwYXRoLmNvbW1vbkFuY2VzdG9yLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gISh2IGluIGxpbmVhZ2VMb29rdXApOyB9KTtcclxuICAgICAgICBwYXRoLmxpbmVhZ2VzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucGFyZW50ICE9PSBwYXRoLmNvbW1vbkFuY2VzdG9yOyB9KVxyXG4gICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAodikgeyByZXR1cm4gb2JzdGFjbGVzID0gb2JzdGFjbGVzLmNvbmNhdCh2LnBhcmVudC5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMgIT09IHYuaWQ7IH0pKTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIG9ic3RhY2xlcy5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIF90aGlzLm5vZGVzW3ZdOyB9KTtcclxuICAgIH07XHJcbiAgICBHcmlkUm91dGVyLmdldFNlZ21lbnRTZXRzID0gZnVuY3Rpb24gKHJvdXRlcywgeCwgeSkge1xyXG4gICAgICAgIHZhciB2c2VnbWVudHMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBlaSA9IDA7IGVpIDwgcm91dGVzLmxlbmd0aDsgZWkrKykge1xyXG4gICAgICAgICAgICB2YXIgcm91dGUgPSByb3V0ZXNbZWldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBzaSA9IDA7IHNpIDwgcm91dGUubGVuZ3RoOyBzaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHJvdXRlW3NpXTtcclxuICAgICAgICAgICAgICAgIHMuZWRnZWlkID0gZWk7XHJcbiAgICAgICAgICAgICAgICBzLmkgPSBzaTtcclxuICAgICAgICAgICAgICAgIHZhciBzZHggPSBzWzFdW3hdIC0gc1swXVt4XTtcclxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzZHgpIDwgMC4xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdnNlZ21lbnRzLnB1c2gocyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdnNlZ21lbnRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbMF1beF0gLSBiWzBdW3hdOyB9KTtcclxuICAgICAgICB2YXIgdnNlZ21lbnRzZXRzID0gW107XHJcbiAgICAgICAgdmFyIHNlZ21lbnRzZXQgPSBudWxsO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gdnNlZ21lbnRzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzZXQgfHwgTWF0aC5hYnMoc1swXVt4XSAtIHNlZ21lbnRzZXQucG9zKSA+IDAuMSkge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHNldCA9IHsgcG9zOiBzWzBdW3hdLCBzZWdtZW50czogW10gfTtcclxuICAgICAgICAgICAgICAgIHZzZWdtZW50c2V0cy5wdXNoKHNlZ21lbnRzZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlZ21lbnRzZXQuc2VnbWVudHMucHVzaChzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZzZWdtZW50c2V0cztcclxuICAgIH07XHJcbiAgICBHcmlkUm91dGVyLm51ZGdlU2VncyA9IGZ1bmN0aW9uICh4LCB5LCByb3V0ZXMsIHNlZ21lbnRzLCBsZWZ0T2YsIGdhcCkge1xyXG4gICAgICAgIHZhciBuID0gc2VnbWVudHMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChuIDw9IDEpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB2YXIgdnMgPSBzZWdtZW50cy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIG5ldyB2cHNjXzEuVmFyaWFibGUoc1swXVt4XSk7IH0pO1xyXG4gICAgICAgIHZhciBjcyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gailcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHZhciBzMSA9IHNlZ21lbnRzW2ldLCBzMiA9IHNlZ21lbnRzW2pdLCBlMSA9IHMxLmVkZ2VpZCwgZTIgPSBzMi5lZGdlaWQsIGxpbmQgPSAtMSwgcmluZCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgaWYgKHggPT0gJ3gnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRPZihlMSwgZTIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMVswXVt5XSA8IHMxWzFdW3ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5kID0gaiwgcmluZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5kID0gaSwgcmluZCA9IGo7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGVmdE9mKGUxLCBlMikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxWzBdW3ldIDwgczFbMV1beV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmQgPSBpLCByaW5kID0gajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmQgPSBqLCByaW5kID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChsaW5kID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjcy5wdXNoKG5ldyB2cHNjXzEuQ29uc3RyYWludCh2c1tsaW5kXSwgdnNbcmluZF0sIGdhcCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgICAgIHNvbHZlci5zb2x2ZSgpO1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgdmFyIHMgPSBzZWdtZW50c1tpXTtcclxuICAgICAgICAgICAgdmFyIHBvcyA9IHYucG9zaXRpb24oKTtcclxuICAgICAgICAgICAgc1swXVt4XSA9IHNbMV1beF0gPSBwb3M7XHJcbiAgICAgICAgICAgIHZhciByb3V0ZSA9IHJvdXRlc1tzLmVkZ2VpZF07XHJcbiAgICAgICAgICAgIGlmIChzLmkgPiAwKVxyXG4gICAgICAgICAgICAgICAgcm91dGVbcy5pIC0gMV1bMV1beF0gPSBwb3M7XHJcbiAgICAgICAgICAgIGlmIChzLmkgPCByb3V0ZS5sZW5ndGggLSAxKVxyXG4gICAgICAgICAgICAgICAgcm91dGVbcy5pICsgMV1bMF1beF0gPSBwb3M7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5udWRnZVNlZ21lbnRzID0gZnVuY3Rpb24gKHJvdXRlcywgeCwgeSwgbGVmdE9mLCBnYXApIHtcclxuICAgICAgICB2YXIgdnNlZ21lbnRzZXRzID0gR3JpZFJvdXRlci5nZXRTZWdtZW50U2V0cyhyb3V0ZXMsIHgsIHkpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnNlZ21lbnRzZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBzcyA9IHZzZWdtZW50c2V0c1tpXTtcclxuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNzLnNlZ21lbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHNzLnNlZ21lbnRzW2pdO1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goeyB0eXBlOiAwLCBzOiBzLCBwb3M6IE1hdGgubWluKHNbMF1beV0sIHNbMV1beV0pIH0pO1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goeyB0eXBlOiAxLCBzOiBzLCBwb3M6IE1hdGgubWF4KHNbMF1beV0sIHNbMV1beV0pIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2ZW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnBvcyAtIGIucG9zICsgYS50eXBlIC0gYi50eXBlOyB9KTtcclxuICAgICAgICAgICAgdmFyIG9wZW4gPSBbXTtcclxuICAgICAgICAgICAgdmFyIG9wZW5Db3VudCA9IDA7XHJcbiAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Blbi5wdXNoKGUucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbkNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuQ291bnQtLTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvcGVuQ291bnQgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdzKHgsIHksIHJvdXRlcywgb3BlbiwgbGVmdE9mLCBnYXApO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW4gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnJvdXRlRWRnZXMgPSBmdW5jdGlvbiAoZWRnZXMsIG51ZGdlR2FwLCBzb3VyY2UsIHRhcmdldCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJvdXRlUGF0aHMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLnJvdXRlKHNvdXJjZShlKSwgdGFyZ2V0KGUpKTsgfSk7XHJcbiAgICAgICAgdmFyIG9yZGVyID0gR3JpZFJvdXRlci5vcmRlckVkZ2VzKHJvdXRlUGF0aHMpO1xyXG4gICAgICAgIHZhciByb3V0ZXMgPSByb3V0ZVBhdGhzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gR3JpZFJvdXRlci5tYWtlU2VnbWVudHMoZSk7IH0pO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdtZW50cyhyb3V0ZXMsICd4JywgJ3knLCBvcmRlciwgbnVkZ2VHYXApO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdtZW50cyhyb3V0ZXMsICd5JywgJ3gnLCBvcmRlciwgbnVkZ2VHYXApO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIudW5yZXZlcnNlRWRnZXMocm91dGVzLCByb3V0ZVBhdGhzKTtcclxuICAgICAgICByZXR1cm4gcm91dGVzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIudW5yZXZlcnNlRWRnZXMgPSBmdW5jdGlvbiAocm91dGVzLCByb3V0ZVBhdGhzKSB7XHJcbiAgICAgICAgcm91dGVzLmZvckVhY2goZnVuY3Rpb24gKHNlZ21lbnRzLCBpKSB7XHJcbiAgICAgICAgICAgIHZhciBwYXRoID0gcm91dGVQYXRoc1tpXTtcclxuICAgICAgICAgICAgaWYgKHBhdGgucmV2ZXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLmZvckVhY2goZnVuY3Rpb24gKHNlZ21lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnJldmVyc2UoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5hbmdsZUJldHdlZW4yTGluZXMgPSBmdW5jdGlvbiAobGluZTEsIGxpbmUyKSB7XHJcbiAgICAgICAgdmFyIGFuZ2xlMSA9IE1hdGguYXRhbjIobGluZTFbMF0ueSAtIGxpbmUxWzFdLnksIGxpbmUxWzBdLnggLSBsaW5lMVsxXS54KTtcclxuICAgICAgICB2YXIgYW5nbGUyID0gTWF0aC5hdGFuMihsaW5lMlswXS55IC0gbGluZTJbMV0ueSwgbGluZTJbMF0ueCAtIGxpbmUyWzFdLngpO1xyXG4gICAgICAgIHZhciBkaWZmID0gYW5nbGUxIC0gYW5nbGUyO1xyXG4gICAgICAgIGlmIChkaWZmID4gTWF0aC5QSSB8fCBkaWZmIDwgLU1hdGguUEkpIHtcclxuICAgICAgICAgICAgZGlmZiA9IGFuZ2xlMiAtIGFuZ2xlMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRpZmY7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5pc0xlZnQgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xyXG4gICAgICAgIHJldHVybiAoKGIueCAtIGEueCkgKiAoYy55IC0gYS55KSAtIChiLnkgLSBhLnkpICogKGMueCAtIGEueCkpIDw9IDA7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5nZXRPcmRlciA9IGZ1bmN0aW9uIChwYWlycykge1xyXG4gICAgICAgIHZhciBvdXRnb2luZyA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHAgPSBwYWlyc1tpXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvdXRnb2luZ1twLmxdID09PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgIG91dGdvaW5nW3AubF0gPSB7fTtcclxuICAgICAgICAgICAgb3V0Z29pbmdbcC5sXVtwLnJdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChsLCByKSB7IHJldHVybiB0eXBlb2Ygb3V0Z29pbmdbbF0gIT09ICd1bmRlZmluZWQnICYmIG91dGdvaW5nW2xdW3JdOyB9O1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIub3JkZXJFZGdlcyA9IGZ1bmN0aW9uIChlZGdlcykge1xyXG4gICAgICAgIHZhciBlZGdlT3JkZXIgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGUgPSBlZGdlc1tpXSwgZiA9IGVkZ2VzW2pdLCBsY3MgPSBuZXcgTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlKGUsIGYpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHUsIHZpLCB2ajtcclxuICAgICAgICAgICAgICAgIGlmIChsY3MubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxjcy5yZXZlcnNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGYucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGYucmV2ZXJzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxjcyA9IG5ldyBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UoZSwgZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKGxjcy5zaSA8PSAwIHx8IGxjcy50aSA8PSAwKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChsY3Muc2kgKyBsY3MubGVuZ3RoID49IGUubGVuZ3RoIHx8IGxjcy50aSArIGxjcy5sZW5ndGggPj0gZi5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBpLCByOiBqIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGxjcy5zaSArIGxjcy5sZW5ndGggPj0gZS5sZW5ndGggfHwgbGNzLnRpICsgbGNzLmxlbmd0aCA+PSBmLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHUgPSBlW2xjcy5zaSArIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZqID0gZVtsY3Muc2kgLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICB2aSA9IGZbbGNzLnRpIC0gMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB1ID0gZVtsY3Muc2kgKyBsY3MubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgdmkgPSBlW2xjcy5zaSArIGxjcy5sZW5ndGhdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZqID0gZltsY3MudGkgKyBsY3MubGVuZ3RoXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChHcmlkUm91dGVyLmlzTGVmdCh1LCB2aSwgdmopKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBqLCByOiBpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBpLCByOiBqIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBHcmlkUm91dGVyLmdldE9yZGVyKGVkZ2VPcmRlcik7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5tYWtlU2VnbWVudHMgPSBmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGNvcHlQb2ludChwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHg6IHAueCwgeTogcC55IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBpc1N0cmFpZ2h0ID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIE1hdGguYWJzKChiLnggLSBhLngpICogKGMueSAtIGEueSkgLSAoYi55IC0gYS55KSAqIChjLnggLSBhLngpKSA8IDAuMDAxOyB9O1xyXG4gICAgICAgIHZhciBzZWdtZW50cyA9IFtdO1xyXG4gICAgICAgIHZhciBhID0gY29weVBvaW50KHBhdGhbMF0pO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGNvcHlQb2ludChwYXRoW2ldKSwgYyA9IGkgPCBwYXRoLmxlbmd0aCAtIDEgPyBwYXRoW2kgKyAxXSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghYyB8fCAhaXNTdHJhaWdodChhLCBiLCBjKSkge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHMucHVzaChbYSwgYl0pO1xyXG4gICAgICAgICAgICAgICAgYSA9IGI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0gZnVuY3Rpb24gKHMsIHQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLm5vZGVzW3NdLCB0YXJnZXQgPSB0aGlzLm5vZGVzW3RdO1xyXG4gICAgICAgIHRoaXMub2JzdGFjbGVzID0gdGhpcy5zaWJsaW5nT2JzdGFjbGVzKHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICB2YXIgb2JzdGFjbGVMb29rdXAgPSB7fTtcclxuICAgICAgICB0aGlzLm9ic3RhY2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChvKSB7IHJldHVybiBvYnN0YWNsZUxvb2t1cFtvLmlkXSA9IG87IH0pO1xyXG4gICAgICAgIHRoaXMucGFzc2FibGVFZGdlcyA9IHRoaXMuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHZhciB1ID0gX3RoaXMudmVydHNbZS5zb3VyY2VdLCB2ID0gX3RoaXMudmVydHNbZS50YXJnZXRdO1xyXG4gICAgICAgICAgICByZXR1cm4gISh1Lm5vZGUgJiYgdS5ub2RlLmlkIGluIG9ic3RhY2xlTG9va3VwXHJcbiAgICAgICAgICAgICAgICB8fCB2Lm5vZGUgJiYgdi5ub2RlLmlkIGluIG9ic3RhY2xlTG9va3VwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNvdXJjZS5wb3J0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdSA9IHNvdXJjZS5wb3J0c1swXS5pZDtcclxuICAgICAgICAgICAgdmFyIHYgPSBzb3VyY2UucG9ydHNbaV0uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFzc2FibGVFZGdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogdSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdixcclxuICAgICAgICAgICAgICAgIGxlbmd0aDogMFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0YXJnZXQucG9ydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHUgPSB0YXJnZXQucG9ydHNbMF0uaWQ7XHJcbiAgICAgICAgICAgIHZhciB2ID0gdGFyZ2V0LnBvcnRzW2ldLmlkO1xyXG4gICAgICAgICAgICB0aGlzLnBhc3NhYmxlRWRnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHUsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHYsXHJcbiAgICAgICAgICAgICAgICBsZW5ndGg6IDBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBnZXRTb3VyY2UgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2U7IH0sIGdldFRhcmdldCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldDsgfSwgZ2V0TGVuZ3RoID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubGVuZ3RoOyB9O1xyXG4gICAgICAgIHZhciBzaG9ydGVzdFBhdGhDYWxjdWxhdG9yID0gbmV3IHNob3J0ZXN0cGF0aHNfMS5DYWxjdWxhdG9yKHRoaXMudmVydHMubGVuZ3RoLCB0aGlzLnBhc3NhYmxlRWRnZXMsIGdldFNvdXJjZSwgZ2V0VGFyZ2V0LCBnZXRMZW5ndGgpO1xyXG4gICAgICAgIHZhciBiZW5kUGVuYWx0eSA9IGZ1bmN0aW9uICh1LCB2LCB3KSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gX3RoaXMudmVydHNbdV0sIGIgPSBfdGhpcy52ZXJ0c1t2XSwgYyA9IF90aGlzLnZlcnRzW3ddO1xyXG4gICAgICAgICAgICB2YXIgZHggPSBNYXRoLmFicyhjLnggLSBhLngpLCBkeSA9IE1hdGguYWJzKGMueSAtIGEueSk7XHJcbiAgICAgICAgICAgIGlmIChhLm5vZGUgPT09IHNvdXJjZSAmJiBhLm5vZGUgPT09IGIubm9kZSB8fCBiLm5vZGUgPT09IHRhcmdldCAmJiBiLm5vZGUgPT09IGMubm9kZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICByZXR1cm4gZHggPiAxICYmIGR5ID4gMSA/IDEwMDAgOiAwO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmFyIHNob3J0ZXN0UGF0aCA9IHNob3J0ZXN0UGF0aENhbGN1bGF0b3IuUGF0aEZyb21Ob2RlVG9Ob2RlV2l0aFByZXZDb3N0KHNvdXJjZS5wb3J0c1swXS5pZCwgdGFyZ2V0LnBvcnRzWzBdLmlkLCBiZW5kUGVuYWx0eSk7XHJcbiAgICAgICAgdmFyIHBhdGhQb2ludHMgPSBzaG9ydGVzdFBhdGgucmV2ZXJzZSgpLm1hcChmdW5jdGlvbiAodmkpIHsgcmV0dXJuIF90aGlzLnZlcnRzW3ZpXTsgfSk7XHJcbiAgICAgICAgcGF0aFBvaW50cy5wdXNoKHRoaXMubm9kZXNbdGFyZ2V0LmlkXS5wb3J0c1swXSk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGhQb2ludHMuZmlsdGVyKGZ1bmN0aW9uICh2LCBpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhKGkgPCBwYXRoUG9pbnRzLmxlbmd0aCAtIDEgJiYgcGF0aFBvaW50c1tpICsgMV0ubm9kZSA9PT0gc291cmNlICYmIHYubm9kZSA9PT0gc291cmNlXHJcbiAgICAgICAgICAgICAgICB8fCBpID4gMCAmJiB2Lm5vZGUgPT09IHRhcmdldCAmJiBwYXRoUG9pbnRzW2kgLSAxXS5ub2RlID09PSB0YXJnZXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIuZ2V0Um91dGVQYXRoID0gZnVuY3Rpb24gKHJvdXRlLCBjb3JuZXJyYWRpdXMsIGFycm93d2lkdGgsIGFycm93aGVpZ2h0KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgcm91dGVwYXRoOiAnTSAnICsgcm91dGVbMF1bMF0ueCArICcgJyArIHJvdXRlWzBdWzBdLnkgKyAnICcsXHJcbiAgICAgICAgICAgIGFycm93cGF0aDogJydcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChyb3V0ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm91dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBsaSA9IHJvdXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIHggPSBsaVsxXS54LCB5ID0gbGlbMV0ueTtcclxuICAgICAgICAgICAgICAgIHZhciBkeCA9IHggLSBsaVswXS54O1xyXG4gICAgICAgICAgICAgICAgdmFyIGR5ID0geSAtIGxpWzBdLnk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHJvdXRlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4IC09IGR4IC8gTWF0aC5hYnMoZHgpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeSAtPSBkeSAvIE1hdGguYWJzKGR5KSAqIGNvcm5lcnJhZGl1cztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnTCAnICsgeCArICcgJyArIHkgKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByb3V0ZVtpICsgMV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHgwID0gbFswXS54LCB5MCA9IGxbMF0ueTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgeDEgPSBsWzFdLng7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkxID0gbFsxXS55O1xyXG4gICAgICAgICAgICAgICAgICAgIGR4ID0geDEgLSB4MDtcclxuICAgICAgICAgICAgICAgICAgICBkeSA9IHkxIC0geTA7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFuZ2xlID0gR3JpZFJvdXRlci5hbmdsZUJldHdlZW4yTGluZXMobGksIGwpIDwgMCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB4MiwgeTI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGR4KSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4MCArIGR4IC8gTWF0aC5hYnMoZHgpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IHkwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeTIgPSB5MCArIGR5IC8gTWF0aC5hYnMoZHkpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB2YXIgY3ggPSBNYXRoLmFicyh4MiAtIHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjeSA9IE1hdGguYWJzKHkyIC0geSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnQSAnICsgY3ggKyAnICcgKyBjeSArICcgMCAwICcgKyBhbmdsZSArICcgJyArIHgyICsgJyAnICsgeTIgKyAnICc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyb3d0aXAgPSBbeCwgeV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFycm93Y29ybmVyMSwgYXJyb3djb3JuZXIyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkeCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggLT0gZHggLyBNYXRoLmFicyhkeCkgKiBhcnJvd2hlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3gsIHkgKyBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3gsIHkgLSBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgLT0gZHkgLyBNYXRoLmFicyhkeSkgKiBhcnJvd2hlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3ggKyBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3ggLSBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnTCAnICsgeCArICcgJyArIHkgKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycm93aGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXJyb3dwYXRoID0gJ00gJyArIGFycm93dGlwWzBdICsgJyAnICsgYXJyb3d0aXBbMV0gKyAnIEwgJyArIGFycm93Y29ybmVyMVswXSArICcgJyArIGFycm93Y29ybmVyMVsxXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIEwgJyArIGFycm93Y29ybmVyMlswXSArICcgJyArIGFycm93Y29ybmVyMlsxXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBsaSA9IHJvdXRlWzBdO1xyXG4gICAgICAgICAgICB2YXIgeCA9IGxpWzFdLngsIHkgPSBsaVsxXS55O1xyXG4gICAgICAgICAgICB2YXIgZHggPSB4IC0gbGlbMF0ueDtcclxuICAgICAgICAgICAgdmFyIGR5ID0geSAtIGxpWzBdLnk7XHJcbiAgICAgICAgICAgIHZhciBhcnJvd3RpcCA9IFt4LCB5XTtcclxuICAgICAgICAgICAgdmFyIGFycm93Y29ybmVyMSwgYXJyb3djb3JuZXIyO1xyXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgeCAtPSBkeCAvIE1hdGguYWJzKGR4KSAqIGFycm93aGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3gsIHkgKyBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgIGFycm93Y29ybmVyMiA9IFt4LCB5IC0gYXJyb3d3aWR0aF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB5IC09IGR5IC8gTWF0aC5hYnMoZHkpICogYXJyb3doZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBhcnJvd2Nvcm5lcjEgPSBbeCArIGFycm93d2lkdGgsIHldO1xyXG4gICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3ggLSBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucm91dGVwYXRoICs9ICdMICcgKyB4ICsgJyAnICsgeSArICcgJztcclxuICAgICAgICAgICAgaWYgKGFycm93aGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmFycm93cGF0aCA9ICdNICcgKyBhcnJvd3RpcFswXSArICcgJyArIGFycm93dGlwWzFdICsgJyBMICcgKyBhcnJvd2Nvcm5lcjFbMF0gKyAnICcgKyBhcnJvd2Nvcm5lcjFbMV1cclxuICAgICAgICAgICAgICAgICAgICArICcgTCAnICsgYXJyb3djb3JuZXIyWzBdICsgJyAnICsgYXJyb3djb3JuZXIyWzFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEdyaWRSb3V0ZXI7XHJcbn0oKSk7XHJcbmV4cG9ydHMuR3JpZFJvdXRlciA9IEdyaWRSb3V0ZXI7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVozSnBaSEp2ZFhSbGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJkeWFXUnliM1YwWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZEUVN4NVEwRkJjVU03UVVGRGNrTXNLMEpCUVcxRU8wRkJRMjVFTEdsRVFVRXdRenRCUVV0MFF6dEpRVWxKTEhGQ1FVRnRRaXhGUVVGVkxFVkJRVk1zU1VGQlpTeEZRVUZUTEZGQlFXdENPMUZCUVRkRUxFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdVVUZCVXl4VFFVRkpMRWRCUVVvc1NVRkJTU3hEUVVGWE8xRkJRVk1zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCVlR0UlFVTTFSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEU5QlFVOHNVVUZCVVN4TFFVRkxMRmRCUVZjc1NVRkJTU3hSUVVGUkxFTkJRVU1zVFVGQlRTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTjZSU3hEUVVGRE8wbEJRMHdzYTBKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVUVRc1NVRlBRenRCUVZCWkxHdERRVUZYTzBGQlVYaENPMGxCUTBrc1kwRkJiVUlzUlVGQlZTeEZRVUZUTEVOQlFWRXNSVUZCVXl4RFFVRlRMRVZCUVZNc1NVRkJkMElzUlVGQlV5eEpRVUZYTzFGQlFUVkRMSEZDUVVGQkxFVkJRVUVzVjBGQmQwSTdVVUZCVXl4eFFrRkJRU3hGUVVGQkxGZEJRVmM3VVVGQmJFY3NUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFMUJRVU1zUjBGQlJDeERRVUZETEVOQlFVODdVVUZCVXl4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGUk8xRkJRVk1zVTBGQlNTeEhRVUZLTEVsQlFVa3NRMEZCYjBJN1VVRkJVeXhUUVVGSkxFZEJRVW9zU1VGQlNTeERRVUZQTzBsQlFVY3NRMEZCUXp0SlFVTTNTQ3hYUVVGRE8wRkJRVVFzUTBGQlF5eEJRVVpFTEVsQlJVTTdRVUZHV1N4dlFrRkJTVHRCUVVscVFqdEpRVXRKTEd0RFFVRnRRaXhEUVVGTkxFVkJRVk1zUTBGQlRUdFJRVUZ5UWl4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGTE8xRkJRVk1zVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCU3p0UlFVTndReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eDNRa0ZCZDBJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZET1VJc1NVRkJTU3hGUVVGRkxFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyaENMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTm9RaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTjZRanRoUVVGTk8xbEJRMGdzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU5vUWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzWkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFOQlEzaENPMGxCUTB3c1EwRkJRenRKUVVOakxHdERRVUZUTEVkQlFYaENMRlZCUVRSQ0xFTkJRVTBzUlVGQlJTeERRVUZOTzFGQlEzUkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNCQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlEyWXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5xUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTzNkQ1FVTnNRaXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0M1FrRkRha0lzUzBGQlN5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dDNRa0ZEY2tJc1MwRkJTeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR4UWtGRGVFSTdiMEpCUVVFc1EwRkJRenRwUWtGRFREczdiMEpCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVNeFFqdFJRVU5FTEU5QlFVOHNTMEZCU3l4RFFVRkRPMGxCUTJwQ0xFTkJRVU03U1VGRFJDdzRRMEZCVnl4SFFVRllPMUZCUTBrc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzBsQlEyaEdMRU5CUVVNN1NVRkRUQ3dyUWtGQlF6dEJRVUZFTEVOQlFVTXNRVUV6UTBRc1NVRXlRME03UVVFelExa3NORVJCUVhkQ08wRkJhVVJ5UXp0SlFYTkVTU3h2UWtGQmJVSXNZVUZCY1VJc1JVRkJSU3hSUVVFMFFpeEZRVUZUTEZsQlFYbENPMUZCUVhoSExHbENRV3RJUXp0UlFXeElPRVVzTmtKQlFVRXNSVUZCUVN4cFFrRkJlVUk3VVVGQmNrWXNhMEpCUVdFc1IwRkJZaXhoUVVGaExFTkJRVkU3VVVGQmRVTXNhVUpCUVZrc1IwRkJXaXhaUVVGWkxFTkJRV0U3VVVGeVJIaEhMRmRCUVUwc1IwRkJhMElzU1VGQlNTeERRVUZETzFGQmMwUjZRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRnNSU3hEUVVGclJTeERRVUZETEVOQlFVTTdVVUZETjBjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVU0c1EwRkJUU3hEUVVGRExFTkJRVU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCVUN4RFFVRlBMRU5CUVVNc1EwRkJRenRSUVVNM1F5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSMjVETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVU5xUWl4UFFVRkJMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1MwRkJTU3hEUVVGRExFdEJRVXNzUTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGb1F5eERRVUZuUXl4RFFVRkRPMUZCUVhoRUxFTkJRWGRFTEVOQlFVTXNRMEZCUXp0UlFVYzVSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVU5vUWl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTEVWQlFVVTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOcVF6dFpRVTlFTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGQk8xRkJRMmhDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUjBnc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hMUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFXNURMRU5CUVcxRExFTkJRVU1zUTBGQlF6dFJRVXR5UlN4SlFVRkpMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJVQ3hEUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5vUml4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEhGQ1FVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03V1VGRE1VSXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUV2UWl4RFFVRXJRaXhEUVVGRExFTkJRVU03V1VGRGVFUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGTUxFTkJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVXdzUTBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVZDJSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRekZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZITVVRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWNzVDBGQlFTeERRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVFc1JVRkJha1FzUTBGQmFVUXNRMEZCUXp0aFFVTTFSU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVUVzUlVGQmVrTXNRMEZCZVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGSGVFVXNTVUZCU1N4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGTExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVRXNSVUZCYWtRc1EwRkJhVVFzUTBGQlF6dGhRVU0xUlN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVzc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVFc1JVRkJla01zUTBGQmVVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhlRVVzU1VGQlNTeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVWRzUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFVkJRVm9zUTBGQldTeERRVUZETEVOQlFVTTdVVUZIYUVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZIYUVJc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEV2l4UFFVRkJMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzJkQ1FVTmFMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU5vUkN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyaENMRXRCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVkdVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZEYUVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUTFvc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRNVUlzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRMnhDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGRE0wSXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZEYUVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVHQzUWtGRGNrTXNRMEZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03ZDBKQlEzSkNMRTFCUVUwN2NVSkJRMVE3YVVKQlEwbzdXVUZEVEN4RFFVRkRMRU5CUVVNN1VVRnNRa1lzUTBGclFrVXNRMEZEUkN4RFFVRkRPMUZCUlU0c1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUldoQ0xFdEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEzQkNMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzI5Q1FVVnNSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOd1JTeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMmhDTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTndRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5RTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUjBnc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRNVU1zU1VGQlNTeExRVUZMTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCTDBJc1EwRkJLMElzUTBGQlF6dFpRVU4wUkN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTndRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOMlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNUdHZRa0ZCUlN4VFFVRlRPMmRDUVVONlJDeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGRGJFWTdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVsUUxFTkJRVU03U1VFMVNrOHNkMEpCUVVjc1IwRkJXQ3hWUVVGWkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJUQ3hEUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkJMRU5CUVVNc1EwRkJRenRKUVVsMFJDeHBRMEZCV1N4SFFVRndRaXhWUVVGeFFpeEpRVUZKTzFGQlEzSkNMRWxCUVVrc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTnNSQ3hQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMWxCUld4Q0xFbEJRVWtzVjBGQlZ5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWNzVDBGQlFTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFXeEVMRU5CUVd0RUxFTkJRVU1zUTBGQlF6dFpRVU53Uml4SlFVRkpMRWRCUVVjc1IwRkJSenRuUWtGRFRpeExRVUZMTEVWQlFVVXNWMEZCVnp0blFrRkRiRUlzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVhCQ0xFTkJRVzlDTEVOQlFVTXNRMEZCUXp0aFFVTXpSQ3hEUVVGRE8xbEJRMFlzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOc1FpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJNMElzUTBGQk1rSXNRMEZCUXl4RFFVRkRPMU5CUTNSRU8xRkJRMFFzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVXNzVDBGQlFTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRV0lzUTBGQllTeERRVUZETEVOQlFVRTdVVUZEY2tNc1QwRkJUeXhQUVVGUExFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVZFBMRFpDUVVGUkxFZEJRV2hDTEZWQlFXbENMRU5CUVVNN1VVRkRaQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWkN4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0WlFVTXpRaXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5TTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJRMmhDTzFGQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1NVRkRha0lzUTBGQlF6dEpRVWRQTERoQ1FVRlRMRWRCUVdwQ0xGVkJRV3RDTEVOQlFVTTdVVUZEWml4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNdlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTndRenRSUVVORUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pETEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGMVNFOHNaME5CUVZjc1IwRkJia0lzVlVGQmIwSXNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4Q0xFZEJRVWM3V1VGRFF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOaUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRia0lzVVVGQlVTeERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHRSUVVNeFFpeFBRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVNM1FpeERRVUZETzBsQlIwOHNORU5CUVhWQ0xFZEJRUzlDTEZWQlFXZERMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRMmhETEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJDeFBRVUZQTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkZOVUlzVDBGQlR5eEZRVUZGTEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTndSaXhEUVVGRE8wbEJTVVFzY1VOQlFXZENMRWRCUVdoQ0xGVkJRV2xDTEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUVhKQ0xHbENRVmRETzFGQlZrY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU01UXl4SlFVRkpMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGRrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzFGQlEzQkVMRWxCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1lVRkJZU3hEUVVGRExFVkJRWEpDTEVOQlFYRkNMRU5CUVVNc1EwRkJRenRSUVVVdlJTeEpRVUZKTEVOQlFVTXNVVUZCVVR0aFFVTlNMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQmFFTXNRMEZCWjBNc1EwRkJRenRoUVVNMVF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCVml4RFFVRlZMRU5CUVVNc1EwRkJReXhGUVVGMFJTeERRVUZ6UlN4RFFVRkRMRU5CUVVNN1VVRkZla1lzVDBGQlR5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJZaXhEUVVGaExFTkJRVU1zUTBGQlF6dEpRVU0xUXl4RFFVRkRPMGxCU1Uwc2VVSkJRV01zUjBGQmNrSXNWVUZCYzBJc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFGQlJUbENMRWxCUVVrc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU51UWl4TFFVRkxMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJUdFpRVU4yUXl4SlFVRkpMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEZGtJc1MwRkJTeXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVTdaMEpCUTNSRExFbEJRVWtzUTBGQlF5eEhRVUZSTEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRuUWtGRGRrSXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlExUXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJUdHZRa0ZEY2tJc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRja0k3WVVGRFNqdFRRVU5LTzFGQlEwUXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZxUWl4RFFVRnBRaXhEUVVGRExFTkJRVU03VVVGSE5VTXNTVUZCU1N4WlFVRlpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM1JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOMFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOMlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRk8yZENRVU42UkN4VlFVRlZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkROVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRoUVVOcVF6dFpRVU5FTEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhaUVVGWkxFTkJRVU03U1VGRGVFSXNRMEZCUXp0SlFWTk5MRzlDUVVGVExFZEJRV2hDTEZWQlFXbENMRU5CUVZNc1JVRkJSU3hEUVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRVZCUVVVc1IwRkJWenRSUVVONFJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkJSU3hQUVVGUE8xRkJRMjVDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJja0lzUTBGQmNVSXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTmFMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVTjBRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVTmtMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVU5rTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkRWQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCVFdRc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzI5Q1FVTldMRWxCUVVrc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0M1FrRkZhRUlzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk96UkNRVU55UWl4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdlVUpCUTNSQ096WkNRVUZOT3pSQ1FVTklMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0NVFrRkRkRUk3Y1VKQlEwbzdhVUpCUTBvN2NVSkJRVTA3YjBKQlEwZ3NTVUZCU1N4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzNkQ1FVTm9RaXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN05FSkJRM0pDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dDVRa0ZEZEVJN05rSkJRVTA3TkVKQlEwZ3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzNsQ1FVTjBRanR4UWtGRFNqdHBRa0ZEU2p0blFrRkRSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdiMEpCUlZnc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEdsQ1FVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTndSRHRoUVVOS08xTkJRMG83VVVGRFJDeEpRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMR0ZCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEYUVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEyWXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlExb3NTVUZCU1N4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkNMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0WlFVTjJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenRaUVVONFFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlF6ZENMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETzJkQ1FVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0WlFVTjRReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8yZENRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU16UkN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlRTeDNRa0ZCWVN4SFFVRndRaXhWUVVGeFFpeE5RVUZOTEVWQlFVVXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hOUVVFeVF5eEZRVUZGTEVkQlFWYzdVVUZEZGtjc1NVRkJTU3haUVVGWkxFZEJRVWNzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUTkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6RkRMRWxCUVVrc1JVRkJSU3hIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEYUVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjJRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEyaEZMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOdVJUdFpRVU5FTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQkwwSXNRMEZCSzBJc1EwRkJReXhEUVVGRE8xbEJRM1pFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOa0xFbEJRVWtzVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOa0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5tTEZOQlFWTXNSVUZCUlN4RFFVRkRPMmxDUVVObU8zRkNRVUZOTzI5Q1FVTklMRk5CUVZNc1JVRkJSU3hEUVVGRE8ybENRVU5tTzJkQ1FVTkVMRWxCUVVrc1UwRkJVeXhKUVVGSkxFTkJRVU1zUlVGQlJUdHZRa0ZEYUVJc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMFJDeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmxDUVVOaU8xbEJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEVGp0SlFVTk1MRU5CUVVNN1NVRlRSQ3dyUWtGQlZTeEhRVUZXTEZWQlFXbENMRXRCUVdFc1JVRkJSU3hSUVVGblFpeEZRVUZGTEUxQlFUSkNMRVZCUVVVc1RVRkJNa0k3VVVGQk1VY3NhVUpCVVVNN1VVRlFSeXhKUVVGSkxGVkJRVlVzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVdoRExFTkJRV2RETEVOQlFVTXNRMEZCUXp0UlFVTnFSU3hKUVVGSkxFdEJRVXNzUjBGQlJ5eFZRVUZWTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRemxETEVsQlFVa3NUVUZCVFN4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NUMEZCVHl4VlFVRlZMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1lzVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROVVFzVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROVVFzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRE9VTXNUMEZCVHl4TlFVRk5MRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVWxOTEhsQ1FVRmpMRWRCUVhKQ0xGVkJRWE5DTEUxQlFVMHNSVUZCUlN4VlFVRlZPMUZCUTNCRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOMlFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrSXNTVUZCVlN4SlFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRk8yZENRVU4wUWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03WjBKQlEyNUNMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeFBRVUZQTzI5Q1FVTTVRaXhQUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEwNDdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlRTdzJRa0ZCYTBJc1IwRkJla0lzVlVGQk1FSXNTMEZCWXl4RlFVRkZMRXRCUVdNN1VVRkRjRVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6TkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6ZENMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVNelF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRek5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRUUVVNeFFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSFl5eHBRa0ZCVFN4SFFVRnlRaXhWUVVGelFpeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkRla0lzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGVFVXNRMEZCUXp0SlFVbGpMRzFDUVVGUkxFZEJRWFpDTEZWQlFYZENMRXRCUVdsRE8xRkJRM0pFTEVsQlFVa3NVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFrSXNTVUZCU1N4UFFVRlBMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NWMEZCVnp0blFrRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVNM1JDeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1UwRkROMEk3VVVGRFJDeFBRVUZQTEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFOUJRVThzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRmRCUVZjc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVhCRUxFTkJRVzlFTEVOQlFVTTdTVUZETVVVc1EwRkJRenRKUVVsTkxIRkNRVUZWTEVkQlFXcENMRlZCUVd0Q0xFdEJRVXM3VVVGRGJrSXNTVUZCU1N4VFFVRlRMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMjVDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU4yUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTNaRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRXaXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTmFMRWRCUVVjc1IwRkJSeXhKUVVGSkxIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkRaQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXp0dlFrRkRhRUlzVTBGQlV6dG5Ra0ZEWWl4SlFVRkpMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVU3YjBKQlIyUXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8yOUNRVU5hTEVOQlFVTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5zUWl4SFFVRkhMRWRCUVVjc1NVRkJTU3gzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlF6VkRPMmRDUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8yOUNRVVYwUlN4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZETDBJc1UwRkJVenRwUWtGRFdqdG5Ra0ZEUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTzI5Q1FVMXdSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyeENMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOMFFqdHhRa0ZCVFR0dlFrRkRTQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMElzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0dlFrRkROVUlzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0cFFrRkRMMEk3WjBKQlEwUXNTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN2IwSkJRemxDTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8ybENRVU5zUXp0eFFrRkJUVHR2UWtGRFNDeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdZVUZEU2p0VFFVTktPMUZCUlVRc1QwRkJUeXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGTFRTeDFRa0ZCV1N4SFFVRnVRaXhWUVVGdlFpeEpRVUZoTzFGQlF6ZENMRk5CUVZNc1UwRkJVeXhEUVVGRExFTkJRVkU3V1VGRGRrSXNUMEZCWXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGNrTXNRMEZCUXp0UlFVTkVMRWxCUVVrc1ZVRkJWU3hIUVVGSExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFVkJRWFpGTEVOQlFYVkZMRU5CUVVNN1VVRkRkRWNzU1VGQlNTeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5zUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEzcEZMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJUdG5Ra0ZETlVJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMVE3VTBGRFNqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGSlJDd3dRa0ZCU3l4SFFVRk1MRlZCUVUwc1EwRkJVeXhGUVVGRkxFTkJRVk03VVVGQk1VSXNhVUpCTkVSRE8xRkJNMFJITEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtVc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUlhaRUxFbEJRVWtzWTBGQll5eEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJTU3hQUVVGQkxHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGNFFpeERRVUYzUWl4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRM2hDTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTTNRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEdOQlFXTTdiVUpCUTNaRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzWTBGQll5eERRVUZETEVOQlFVTTdVVUZEYkVRc1EwRkJReXhEUVVGRExFTkJRVU03VVVGSFNDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTlVMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNSVUZCUlN4RFFVRkRPMkZCUTFvc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRFJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTlVMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNSVUZCUlN4RFFVRkRPMkZCUTFvc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRlJDeEpRVUZKTEZOQlFWTXNSMEZCUnl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFWSXNRMEZCVVN4RlFVTjRRaXhUUVVGVExFZEJRVWNzVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGU0xFTkJRVkVzUlVGRGVFSXNVMEZCVXl4SFFVRkhMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCVWl4RFFVRlJMRU5CUVVNN1VVRkZOMElzU1VGQlNTeHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxEQkNRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEdGQlFXRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzQklMRWxCUVVrc1YwRkJWeXhIUVVGSExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE5VUXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWMlJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTzJkQ1FVTm9SaXhQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU5pTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4RFFVRkRMRU5CUVVNN1VVRkhSaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eHpRa0ZCYzBJc1EwRkJReXc0UWtGQk9FSXNRMEZEY0VVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUTNSRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlIycENMRWxCUVVrc1ZVRkJWU3hIUVVGSExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJRU3hGUVVGRkxFbEJRVWtzVDBGQlFTeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGa0xFTkJRV01zUTBGQlF5eERRVUZETzFGQlEyeEZMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhhRVFzVDBGQlR5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRE1VSXNUMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMDdiVUpCUXpsRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhOUVVGTkxFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXNzVFVGQlRTeERRVUZETzFGQlJIWkZMRU5CUTNWRkxFTkJRVU1zUTBGQlF6dEpRVU5xUml4RFFVRkRPMGxCUlUwc2RVSkJRVmtzUjBGQmJrSXNWVUZCYjBJc1MwRkJaMElzUlVGQlJTeFpRVUZ2UWl4RlFVRkZMRlZCUVd0Q0xFVkJRVVVzVjBGQmJVSTdVVUZETDBZc1NVRkJTU3hOUVVGTkxFZEJRVWM3V1VGRFZDeFRRVUZUTEVWQlFVVXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ6dFpRVU16UkN4VFFVRlRMRVZCUVVVc1JVRkJSVHRUUVVOb1FpeERRVUZETzFGQlEwWXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU5zUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEYmtNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTTNRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkNMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMjlDUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTnNRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETzNGQ1FVTjZRenQ1UWtGQlRUdDNRa0ZEU0N4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRE8zRkNRVU42UXp0dlFrRkRSQ3hOUVVGTkxFTkJRVU1zVTBGQlV5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUXpkRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRemRDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJoQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyaENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVlVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkZOMFFzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRPMjlDUVVOWUxFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3ZDBKQlEyeENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETzNkQ1FVTXpReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzNGQ1FVTllPM2xDUVVGTk8zZENRVU5JTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN2QwSkJRMUlzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNN2NVSkJRemxETzI5Q1FVTkVMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU14UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRE1VSXNUVUZCVFN4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRWRCUVVjc1QwRkJUeXhIUVVGSExFdEJRVXNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZCUlN4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETzJsQ1FVTXhSanR4UWtGQlRUdHZRa0ZEU0N4SlFVRkpMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRkRUlzU1VGQlNTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRPMjlDUVVNdlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTnNRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETzNkQ1FVTnlReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRE8zZENRVU51UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPM0ZDUVVOMFF6dDVRa0ZCVFR0M1FrRkRTQ3hEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETzNkQ1FVTnlReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU51UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPM0ZDUVVOMFF6dHZRa0ZEUkN4TlFVRk5MRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlF6ZERMRWxCUVVrc1YwRkJWeXhIUVVGSExFTkJRVU1zUlVGQlJUdDNRa0ZEYWtJc1RVRkJUU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF6czRRa0ZEZWtjc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTnlSRHRwUWtGRFNqdGhRVU5LTzFOQlEwbzdZVUZCVFR0WlFVTklMRWxCUVVrc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemRDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRWxCUVVrc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzV1VGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXp0WlFVTXZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5zUWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRE8yZENRVU55UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMmRDUVVOdVF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzJGQlEzUkRPMmxDUVVGTk8yZENRVU5JTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1owSkJRM0pETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTI1RExGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGRFTTdXVUZEUkN4TlFVRk5MRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRE4wTXNTVUZCU1N4WFFVRlhMRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5xUWl4TlFVRk5MRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8zTkNRVU42Unl4TFFVRkxMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGNrUTdVMEZEU2p0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZEVEN4cFFrRkJRenRCUVVGRUxFTkJRVU1zUVVGNmJFSkVMRWxCZVd4Q1F6dEJRWHBzUWxrc1owTkJRVlVpZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBzaG9ydGVzdHBhdGhzXzEgPSByZXF1aXJlKFwiLi9zaG9ydGVzdHBhdGhzXCIpO1xyXG52YXIgZGVzY2VudF8xID0gcmVxdWlyZShcIi4vZGVzY2VudFwiKTtcclxudmFyIHJlY3RhbmdsZV8xID0gcmVxdWlyZShcIi4vcmVjdGFuZ2xlXCIpO1xyXG52YXIgbGlua2xlbmd0aHNfMSA9IHJlcXVpcmUoXCIuL2xpbmtsZW5ndGhzXCIpO1xyXG52YXIgTGluazNEID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIExpbmszRChzb3VyY2UsIHRhcmdldCkge1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgTGluazNELnByb3RvdHlwZS5hY3R1YWxMZW5ndGggPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydCh4LnJlZHVjZShmdW5jdGlvbiAoYywgdikge1xyXG4gICAgICAgICAgICB2YXIgZHggPSB2W190aGlzLnRhcmdldF0gLSB2W190aGlzLnNvdXJjZV07XHJcbiAgICAgICAgICAgIHJldHVybiBjICsgZHggKiBkeDtcclxuICAgICAgICB9LCAwKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExpbmszRDtcclxufSgpKTtcclxuZXhwb3J0cy5MaW5rM0QgPSBMaW5rM0Q7XHJcbnZhciBOb2RlM0QgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZTNEKHgsIHksIHopIHtcclxuICAgICAgICBpZiAoeCA9PT0gdm9pZCAwKSB7IHggPSAwOyB9XHJcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0gMDsgfVxyXG4gICAgICAgIGlmICh6ID09PSB2b2lkIDApIHsgeiA9IDA7IH1cclxuICAgICAgICB0aGlzLnggPSB4O1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy56ID0gejtcclxuICAgIH1cclxuICAgIHJldHVybiBOb2RlM0Q7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTm9kZTNEID0gTm9kZTNEO1xyXG52YXIgTGF5b3V0M0QgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGF5b3V0M0Qobm9kZXMsIGxpbmtzLCBpZGVhbExpbmtMZW5ndGgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmIChpZGVhbExpbmtMZW5ndGggPT09IHZvaWQgMCkgeyBpZGVhbExpbmtMZW5ndGggPSAxOyB9XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IG5vZGVzO1xyXG4gICAgICAgIHRoaXMubGlua3MgPSBsaW5rcztcclxuICAgICAgICB0aGlzLmlkZWFsTGlua0xlbmd0aCA9IGlkZWFsTGlua0xlbmd0aDtcclxuICAgICAgICB0aGlzLmNvbnN0cmFpbnRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnVzZUphY2NhcmRMaW5rTGVuZ3RocyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSBuZXcgQXJyYXkoTGF5b3V0M0Quayk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMYXlvdXQzRC5rOyArK2kpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRbaV0gPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gTGF5b3V0M0QuZGltczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaW0gPSBfYVtfaV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZbZGltXSA9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgICAgICB2W2RpbV0gPSBNYXRoLnJhbmRvbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF90aGlzLnJlc3VsdFswXVtpXSA9IHYueDtcclxuICAgICAgICAgICAgX3RoaXMucmVzdWx0WzFdW2ldID0gdi55O1xyXG4gICAgICAgICAgICBfdGhpcy5yZXN1bHRbMl1baV0gPSB2Lno7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICA7XHJcbiAgICBMYXlvdXQzRC5wcm90b3R5cGUubGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsKSB7XHJcbiAgICAgICAgcmV0dXJuIGwuYWN0dWFsTGVuZ3RoKHRoaXMucmVzdWx0KTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQzRC5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgaWYgKGl0ZXJhdGlvbnMgPT09IHZvaWQgMCkgeyBpdGVyYXRpb25zID0gMTAwOyB9XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLm5vZGVzLmxlbmd0aDtcclxuICAgICAgICB2YXIgbGlua0FjY2Vzc29yID0gbmV3IExpbmtBY2Nlc3NvcigpO1xyXG4gICAgICAgIGlmICh0aGlzLnVzZUphY2NhcmRMaW5rTGVuZ3RocylcclxuICAgICAgICAgICAgbGlua2xlbmd0aHNfMS5qYWNjYXJkTGlua0xlbmd0aHModGhpcy5saW5rcywgbGlua0FjY2Vzc29yLCAxLjUpO1xyXG4gICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGggKj0gX3RoaXMuaWRlYWxMaW5rTGVuZ3RoOyB9KTtcclxuICAgICAgICB2YXIgZGlzdGFuY2VNYXRyaXggPSAobmV3IHNob3J0ZXN0cGF0aHNfMS5DYWxjdWxhdG9yKG4sIHRoaXMubGlua3MsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnNvdXJjZTsgfSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0OyB9LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGg7IH0pKS5EaXN0YW5jZU1hdHJpeCgpO1xyXG4gICAgICAgIHZhciBEID0gZGVzY2VudF8xLkRlc2NlbnQuY3JlYXRlU3F1YXJlTWF0cml4KG4sIGZ1bmN0aW9uIChpLCBqKSB7IHJldHVybiBkaXN0YW5jZU1hdHJpeFtpXVtqXTsgfSk7XHJcbiAgICAgICAgdmFyIEcgPSBkZXNjZW50XzEuRGVzY2VudC5jcmVhdGVTcXVhcmVNYXRyaXgobiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMjsgfSk7XHJcbiAgICAgICAgdGhpcy5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xyXG4gICAgICAgICAgICB2YXIgc291cmNlID0gX2Euc291cmNlLCB0YXJnZXQgPSBfYS50YXJnZXQ7XHJcbiAgICAgICAgICAgIHJldHVybiBHW3NvdXJjZV1bdGFyZ2V0XSA9IEdbdGFyZ2V0XVtzb3VyY2VdID0gMTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRlc2NlbnQgPSBuZXcgZGVzY2VudF8xLkRlc2NlbnQodGhpcy5yZXN1bHQsIEQpO1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC50aHJlc2hvbGQgPSAxZS0zO1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC5HID0gRztcclxuICAgICAgICBpZiAodGhpcy5jb25zdHJhaW50cylcclxuICAgICAgICAgICAgdGhpcy5kZXNjZW50LnByb2plY3QgPSBuZXcgcmVjdGFuZ2xlXzEuUHJvamVjdGlvbih0aGlzLm5vZGVzLCBudWxsLCBudWxsLCB0aGlzLmNvbnN0cmFpbnRzKS5wcm9qZWN0RnVuY3Rpb25zKCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciB2ID0gdGhpcy5ub2Rlc1tpXTtcclxuICAgICAgICAgICAgaWYgKHYuZml4ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY2VudC5sb2Nrcy5hZGQoaSwgW3YueCwgdi55LCB2LnpdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRlc2NlbnQucnVuKGl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dDNELnByb3RvdHlwZS50aWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC5sb2Nrcy5jbGVhcigpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMubm9kZXNbaV07XHJcbiAgICAgICAgICAgIGlmICh2LmZpeGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NlbnQubG9ja3MuYWRkKGksIFt2LngsIHYueSwgdi56XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVzY2VudC5ydW5nZUt1dHRhKCk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0M0QuZGltcyA9IFsneCcsICd5JywgJ3onXTtcclxuICAgIExheW91dDNELmsgPSBMYXlvdXQzRC5kaW1zLmxlbmd0aDtcclxuICAgIHJldHVybiBMYXlvdXQzRDtcclxufSgpKTtcclxuZXhwb3J0cy5MYXlvdXQzRCA9IExheW91dDNEO1xyXG52YXIgTGlua0FjY2Vzc29yID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIExpbmtBY2Nlc3NvcigpIHtcclxuICAgIH1cclxuICAgIExpbmtBY2Nlc3Nvci5wcm90b3R5cGUuZ2V0U291cmNlSW5kZXggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2U7IH07XHJcbiAgICBMaW5rQWNjZXNzb3IucHJvdG90eXBlLmdldFRhcmdldEluZGV4ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0OyB9O1xyXG4gICAgTGlua0FjY2Vzc29yLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGg7IH07XHJcbiAgICBMaW5rQWNjZXNzb3IucHJvdG90eXBlLnNldExlbmd0aCA9IGZ1bmN0aW9uIChlLCBsKSB7IGUubGVuZ3RoID0gbDsgfTtcclxuICAgIHJldHVybiBMaW5rQWNjZXNzb3I7XHJcbn0oKSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHRjViM1YwTTJRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOVhaV0pEYjJ4aEwzTnlZeTlzWVhsdmRYUXpaQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMR2xFUVVFd1F6dEJRVU14UXl4eFEwRkJhVU03UVVGRGFrTXNlVU5CUVRSRU8wRkJSVFZFTERaRFFVRnZSVHRCUVVWd1JUdEpRVVZSTEdkQ1FVRnRRaXhOUVVGakxFVkJRVk1zVFVGQll6dFJRVUZ5UXl4WFFVRk5MRWRCUVU0c1RVRkJUU3hEUVVGUk8xRkJRVk1zVjBGQlRTeEhRVUZPTEUxQlFVMHNRMEZCVVR0SlFVRkpMRU5CUVVNN1NVRkROMFFzTmtKQlFWa3NSMEZCV2l4VlFVRmhMRU5CUVdFN1VVRkJNVUlzYVVKQlRVTTdVVUZNUnl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRMW9zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGWE8xbEJRelZDTEVsQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFpRVU16UXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEzWkNMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVTk1MR0ZCUVVNN1FVRkJSQ3hEUVVGRExFRkJWa3dzU1VGVlN6dEJRVlpSTEhkQ1FVRk5PMEZCVjJZN1NVRlRTU3huUWtGRFZ5eERRVUZoTEVWQlEySXNRMEZCWVN4RlFVTmlMRU5CUVdFN1VVRkdZaXhyUWtGQlFTeEZRVUZCTEV0QlFXRTdVVUZEWWl4clFrRkJRU3hGUVVGQkxFdEJRV0U3VVVGRFlpeHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1VVRkdZaXhOUVVGRExFZEJRVVFzUTBGQlF5eERRVUZaTzFGQlEySXNUVUZCUXl4SFFVRkVMRU5CUVVNc1EwRkJXVHRSUVVOaUxFMUJRVU1zUjBGQlJDeERRVUZETEVOQlFWazdTVUZCU1N4RFFVRkRPMGxCUTJwRExHRkJRVU03UVVGQlJDeERRVUZETEVGQllrUXNTVUZoUXp0QlFXSlpMSGRDUVVGTk8wRkJZMjVDTzBsQlRVa3NhMEpCUVcxQ0xFdEJRV1VzUlVGQlV5eExRVUZsTEVWQlFWTXNaVUZCTWtJN1VVRkJPVVlzYVVKQllVTTdVVUZpYTBVc1owTkJRVUVzUlVGQlFTeHRRa0ZCTWtJN1VVRkJNMFVzVlVGQlN5eEhRVUZNTEV0QlFVc3NRMEZCVlR0UlFVRlRMRlZCUVVzc1IwRkJUQ3hMUVVGTExFTkJRVlU3VVVGQlV5eHZRa0ZCWlN4SFFVRm1MR1ZCUVdVc1EwRkJXVHRSUVVZNVJpeG5Ra0ZCVnl4SFFVRlZMRWxCUVVrc1EwRkJRenRSUVhGQ01VSXNNRUpCUVhGQ0xFZEJRVmtzU1VGQlNTeERRVUZETzFGQmJFSnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFRRVU0xUXp0UlFVTkVMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTm1MRXRCUVdkQ0xGVkJRV0VzUlVGQllpeExRVUZCTEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVdJc1kwRkJZU3hGUVVGaUxFbEJRV0VzUlVGQlJUdG5Ra0ZCTVVJc1NVRkJTU3hIUVVGSExGTkJRVUU3WjBKQlExSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeFhRVUZYTzI5Q1FVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1lVRkROVVE3V1VGRFJDeExRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRlRUlzUzBGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5RTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUlVZc05rSkJRVlVzUjBGQlZpeFZRVUZYTEVOQlFWTTdVVUZEYUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOMlF5eERRVUZETzBsQlMwUXNkMEpCUVVzc1IwRkJUQ3hWUVVGTkxGVkJRWGRDTzFGQlFUbENMR2xDUVhWRFF6dFJRWFpEU3l3eVFrRkJRU3hGUVVGQkxHZENRVUYzUWp0UlFVTXhRaXhKUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVVMVFpeEpRVUZKTEZsQlFWa3NSMEZCUnl4SlFVRkpMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJSWFJETEVsQlFVa3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFqdFpRVU14UWl4blEwRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVYwUkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlNTeERRVUZETEdWQlFXVXNSVUZCYUVNc1EwRkJaME1zUTBGQlF5eERRVUZETzFGQlJ6RkVMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zU1VGQlNTd3dRa0ZCVlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVU5vUkN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFWSXNRMEZCVVN4RlFVRkZMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCVWl4RFFVRlJMRVZCUVVVc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRlNMRU5CUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZGYWtVc1NVRkJUU3hEUVVGRExFZEJRVWNzYVVKQlFVOHNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGd1FpeERRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkplRVVzU1VGQlNTeERRVUZETEVkQlFVY3NhVUpCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1kwRkJZeXhQUVVGUExFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVNc1JVRkJhMEk3WjBKQlFXaENMR3RDUVVGTkxFVkJRVVVzYTBKQlFVMDdXVUZCVHl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXp0UlFVRjZReXhEUVVGNVF5eERRVUZETEVOQlFVTTdVVUZGZEVZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEdsQ1FVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJTVzVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkRhRUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3h6UWtGQlZTeERRVUZqTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0UlFVVndTQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UXp0VFFVTktPMUZCUlVRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkROMElzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWRUxIVkNRVUZKTEVkQlFVbzdVVUZEU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTXpRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMGxCUTNKRExFTkJRVU03U1VFM1JVMHNZVUZCU1N4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjJRaXhWUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRTJSWEJETEdWQlFVTTdRMEZCUVN4QlFTOUZSQ3hKUVN0RlF6dEJRUzlGV1N3MFFrRkJVVHRCUVdsR2NrSTdTVUZCUVR0SlFVdEJMRU5CUVVNN1NVRktSeXh4UTBGQll5eEhRVUZrTEZWQlFXVXNRMEZCVFN4SlFVRlpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYmtRc2NVTkJRV01zUjBGQlpDeFZRVUZsTEVOQlFVMHNTVUZCV1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyNUVMR2REUVVGVExFZEJRVlFzVlVGQlZTeERRVUZOTEVsQlFWa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU01UXl4blEwRkJVeXhIUVVGVUxGVkJRVlVzUTBGQlRTeEZRVUZGTEVOQlFWTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVRc2JVSkJRVU03UVVGQlJDeERRVUZETEVGQlRFUXNTVUZMUXlKOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBsYXlvdXRfMSA9IHJlcXVpcmUoXCIuL2xheW91dFwiKTtcclxudmFyIGdyaWRyb3V0ZXJfMSA9IHJlcXVpcmUoXCIuL2dyaWRyb3V0ZXJcIik7XHJcbmZ1bmN0aW9uIGdyaWRpZnkocGdMYXlvdXQsIG51ZGdlR2FwLCBtYXJnaW4sIGdyb3VwTWFyZ2luKSB7XHJcbiAgICBwZ0xheW91dC5jb2xhLnN0YXJ0KDAsIDAsIDAsIDEwLCBmYWxzZSk7XHJcbiAgICB2YXIgZ3JpZHJvdXRlciA9IHJvdXRlKHBnTGF5b3V0LmNvbGEubm9kZXMoKSwgcGdMYXlvdXQuY29sYS5ncm91cHMoKSwgbWFyZ2luLCBncm91cE1hcmdpbik7XHJcbiAgICByZXR1cm4gZ3JpZHJvdXRlci5yb3V0ZUVkZ2VzKHBnTGF5b3V0LnBvd2VyR3JhcGgucG93ZXJFZGdlcywgbnVkZ2VHYXAsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnNvdXJjZS5yb3V0ZXJOb2RlLmlkOyB9LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS50YXJnZXQucm91dGVyTm9kZS5pZDsgfSk7XHJcbn1cclxuZXhwb3J0cy5ncmlkaWZ5ID0gZ3JpZGlmeTtcclxuZnVuY3Rpb24gcm91dGUobm9kZXMsIGdyb3VwcywgbWFyZ2luLCBncm91cE1hcmdpbikge1xyXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQucm91dGVyTm9kZSA9IHtcclxuICAgICAgICAgICAgbmFtZTogZC5uYW1lLFxyXG4gICAgICAgICAgICBib3VuZHM6IGQuYm91bmRzLmluZmxhdGUoLW1hcmdpbilcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQucm91dGVyTm9kZSA9IHtcclxuICAgICAgICAgICAgYm91bmRzOiBkLmJvdW5kcy5pbmZsYXRlKC1ncm91cE1hcmdpbiksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiAodHlwZW9mIGQuZ3JvdXBzICE9PSAndW5kZWZpbmVkJyA/IGQuZ3JvdXBzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gbm9kZXMubGVuZ3RoICsgYy5pZDsgfSkgOiBbXSlcclxuICAgICAgICAgICAgICAgIC5jb25jYXQodHlwZW9mIGQubGVhdmVzICE9PSAndW5kZWZpbmVkJyA/IGQubGVhdmVzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gYy5pbmRleDsgfSkgOiBbXSlcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICB2YXIgZ3JpZFJvdXRlck5vZGVzID0gbm9kZXMuY29uY2F0KGdyb3VwcykubWFwKGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgZC5yb3V0ZXJOb2RlLmlkID0gaTtcclxuICAgICAgICByZXR1cm4gZC5yb3V0ZXJOb2RlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IGdyaWRyb3V0ZXJfMS5HcmlkUm91dGVyKGdyaWRSb3V0ZXJOb2Rlcywge1xyXG4gICAgICAgIGdldENoaWxkcmVuOiBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5jaGlsZHJlbjsgfSxcclxuICAgICAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LmJvdW5kczsgfVxyXG4gICAgfSwgbWFyZ2luIC0gZ3JvdXBNYXJnaW4pO1xyXG59XHJcbmZ1bmN0aW9uIHBvd2VyR3JhcGhHcmlkTGF5b3V0KGdyYXBoLCBzaXplLCBncm91cHBhZGRpbmcpIHtcclxuICAgIHZhciBwb3dlckdyYXBoO1xyXG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gdi5pbmRleCA9IGk7IH0pO1xyXG4gICAgbmV3IGxheW91dF8xLkxheW91dCgpXHJcbiAgICAgICAgLmF2b2lkT3ZlcmxhcHMoZmFsc2UpXHJcbiAgICAgICAgLm5vZGVzKGdyYXBoLm5vZGVzKVxyXG4gICAgICAgIC5saW5rcyhncmFwaC5saW5rcylcclxuICAgICAgICAucG93ZXJHcmFwaEdyb3VwcyhmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIHBvd2VyR3JhcGggPSBkO1xyXG4gICAgICAgIHBvd2VyR3JhcGguZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucGFkZGluZyA9IGdyb3VwcGFkZGluZzsgfSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBuID0gZ3JhcGgubm9kZXMubGVuZ3RoO1xyXG4gICAgdmFyIGVkZ2VzID0gW107XHJcbiAgICB2YXIgdnMgPSBncmFwaC5ub2Rlcy5zbGljZSgwKTtcclxuICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIHYuaW5kZXggPSBpOyB9KTtcclxuICAgIHBvd2VyR3JhcGguZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICB2YXIgc291cmNlSW5kID0gZy5pbmRleCA9IGcuaWQgKyBuO1xyXG4gICAgICAgIHZzLnB1c2goZyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBnLmxlYXZlcyAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgIGcubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IHNvdXJjZUluZCwgdGFyZ2V0OiB2LmluZGV4IH0pOyB9KTtcclxuICAgICAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgZy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZ2cpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IHNvdXJjZUluZCwgdGFyZ2V0OiBnZy5pZCArIG4gfSk7IH0pO1xyXG4gICAgfSk7XHJcbiAgICBwb3dlckdyYXBoLnBvd2VyRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGVkZ2VzLnB1c2goeyBzb3VyY2U6IGUuc291cmNlLmluZGV4LCB0YXJnZXQ6IGUudGFyZ2V0LmluZGV4IH0pO1xyXG4gICAgfSk7XHJcbiAgICBuZXcgbGF5b3V0XzEuTGF5b3V0KClcclxuICAgICAgICAuc2l6ZShzaXplKVxyXG4gICAgICAgIC5ub2Rlcyh2cylcclxuICAgICAgICAubGlua3MoZWRnZXMpXHJcbiAgICAgICAgLmF2b2lkT3ZlcmxhcHMoZmFsc2UpXHJcbiAgICAgICAgLmxpbmtEaXN0YW5jZSgzMClcclxuICAgICAgICAuc3ltbWV0cmljRGlmZkxpbmtMZW5ndGhzKDUpXHJcbiAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTQpXHJcbiAgICAgICAgLnN0YXJ0KDEwMCwgMCwgMCwgMCwgZmFsc2UpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2xhOiBuZXcgbGF5b3V0XzEuTGF5b3V0KClcclxuICAgICAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTMpXHJcbiAgICAgICAgICAgIC5zaXplKHNpemUpXHJcbiAgICAgICAgICAgIC5hdm9pZE92ZXJsYXBzKHRydWUpXHJcbiAgICAgICAgICAgIC5ub2RlcyhncmFwaC5ub2RlcylcclxuICAgICAgICAgICAgLmxpbmtzKGdyYXBoLmxpbmtzKVxyXG4gICAgICAgICAgICAuZ3JvdXBDb21wYWN0bmVzcygxZS00KVxyXG4gICAgICAgICAgICAubGlua0Rpc3RhbmNlKDMwKVxyXG4gICAgICAgICAgICAuc3ltbWV0cmljRGlmZkxpbmtMZW5ndGhzKDUpXHJcbiAgICAgICAgICAgIC5wb3dlckdyYXBoR3JvdXBzKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgIHBvd2VyR3JhcGggPSBkO1xyXG4gICAgICAgICAgICBwb3dlckdyYXBoLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB2LnBhZGRpbmcgPSBncm91cHBhZGRpbmc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLnN0YXJ0KDUwLCAwLCAxMDAsIDAsIGZhbHNlKSxcclxuICAgICAgICBwb3dlckdyYXBoOiBwb3dlckdyYXBoXHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydHMucG93ZXJHcmFwaEdyaWRMYXlvdXQgPSBwb3dlckdyYXBoR3JpZExheW91dDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWW1GMFkyZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5aVlYUmphQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMRzFEUVVFeVF6dEJRVU16UXl3eVEwRkJkVU03UVVGUmRrTXNVMEZCWjBJc1QwRkJUeXhEUVVGRExGRkJRVkVzUlVGQlJTeFJRVUZuUWl4RlFVRkZMRTFCUVdNc1JVRkJSU3hYUVVGdFFqdEpRVU51Uml4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZUVNc1NVRkJTU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdTVUZETTBZc1QwRkJUeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZOTEZGQlFWRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGRkJRVkVzUlVGQlJTeFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNSVUZCZEVJc1EwRkJjMElzUlVGQlJTeFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNSVUZCZEVJc1EwRkJjMElzUTBGQlF5eERRVUZETzBGQlEzaEpMRU5CUVVNN1FVRktSQ3d3UWtGSlF6dEJRVVZFTEZOQlFWTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQll5eEZRVUZGTEZkQlFXMUNPMGxCUXpkRUxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMUZCUTFnc1EwRkJReXhEUVVGRExGVkJRVlVzUjBGQlVUdFpRVU5vUWl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWs3V1VGRFdpeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZEY0VNc1EwRkJRenRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwZ3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03VVVGRFdpeERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRlJPMWxCUTJoQ0xFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU4wUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJia0lzUTBGQmJVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03YVVKQlEyNUdMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFWQXNRMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dFRRVU5vUml4RFFVRkRPMGxCUTA0c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFNDeEpRVUZKTEdWQlFXVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU03U1VGRGVFSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRTQ3hQUVVGUExFbEJRVWtzZFVKQlFWVXNRMEZCUXl4bFFVRmxMRVZCUVVVN1VVRkRia01zVjBGQlZ5eEZRVUZGTEZWQlFVTXNRMEZCVFN4SlFVRkxMRTlCUVVFc1EwRkJReXhEUVVGRExGRkJRVkVzUlVGQlZpeERRVUZWTzFGQlEyNURMRk5CUVZNc1JVRkJSU3hWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVZJc1EwRkJVVHRMUVVNelFpeEZRVUZGTEUxQlFVMHNSMEZCUnl4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNVMEZCWjBJc2IwSkJRVzlDTEVOQlEyaERMRXRCUVRaRExFVkJRemRETEVsQlFXTXNSVUZEWkN4WlFVRnZRanRKUVVkd1FpeEpRVUZKTEZWQlFWVXNRMEZCUXp0SlFVTm1MRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1NVRkJTeXhQUVVGTkxFTkJRVVVzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRnNRaXhEUVVGclFpeERRVUZETEVOQlFVTTdTVUZEYWtRc1NVRkJTU3hsUVVGTkxFVkJRVVU3VTBGRFVDeGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTNCQ0xFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTJ4Q0xFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTJ4Q0xHZENRVUZuUWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVONlFpeFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJZc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEZsQlFWa3NSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzBsQlF6VkVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJTVkFzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzU1VGQlNTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZET1VJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJUU3hEUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNSVUZCYkVJc1EwRkJhMElzUTBGQlF5eERRVUZETzBsQlEzcERMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxGTkJRVk1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyNURMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEV0N4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTzFsQlF5OUNMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRnNSQ3hEUVVGclJDeERRVUZETEVOQlFVTTdVVUZET1VVc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnp0WlFVTXZRaXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRVZCUVVVc1NVRkJTU3hQUVVGQkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRWEJFTEVOQlFXOUVMRU5CUVVNc1EwRkJRenRKUVVOeVJpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTklMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTXpRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGSFNDeEpRVUZKTEdWQlFVMHNSVUZCUlR0VFFVTlFMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03VTBGRFZpeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRPMU5CUTFRc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU5hTEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNN1UwRkRjRUlzV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXp0VFFVTm9RaXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRNMElzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8xTkJRekZDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkxhRU1zVDBGQlR6dFJRVU5JTEVsQlFVa3NSVUZEUVN4SlFVRkpMR1ZCUVUwc1JVRkJSVHRoUVVOWUxHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJRenRoUVVNeFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMkZCUTFZc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF6dGhRVU51UWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVU5zUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVVZzUWl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdZVUZEZEVJc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF6dGhRVU5vUWl4M1FrRkJkMElzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZETTBJc1owSkJRV2RDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNwQ0xGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NXVUZCV1N4RFFVRkJPMWxCUXpWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU03VVVGRGJFTXNWVUZCVlN4RlFVRkZMRlZCUVZVN1MwRkRla0lzUTBGQlF6dEJRVU5PTEVOQlFVTTdRVUZ5UlVRc2IwUkJjVVZESW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvYWRhcHRvclwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9kM2FkYXB0b3JcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvZGVzY2VudFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9nZW9tXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2dyaWRyb3V0ZXJcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvaGFuZGxlZGlzY29ubmVjdGVkXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2xheW91dFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9sYXlvdXQzZFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9saW5rbGVuZ3Roc1wiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9wb3dlcmdyYXBoXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3BxdWV1ZVwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9yYnRyZWVcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvcmVjdGFuZ2xlXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3Nob3J0ZXN0cGF0aHNcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvdnBzY1wiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9iYXRjaFwiKSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTlYWldKRGIyeGhMMmx1WkdWNExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3TzBGQlFVRXNiVU5CUVRaQ08wRkJRemRDTEhGRFFVRXJRanRCUVVNdlFpeHRRMEZCTmtJN1FVRkROMElzWjBOQlFUQkNPMEZCUXpGQ0xITkRRVUZuUXp0QlFVTm9ReXc0UTBGQmQwTTdRVUZEZUVNc2EwTkJRVFJDTzBGQlF6VkNMRzlEUVVFNFFqdEJRVU01UWl4MVEwRkJhVU03UVVGRGFrTXNjME5CUVdkRE8wRkJRMmhETEd0RFFVRTBRanRCUVVNMVFpeHJRMEZCTkVJN1FVRkROVUlzY1VOQlFTdENPMEZCUXk5Q0xIbERRVUZ0UXp0QlFVTnVReXhuUTBGQk1FSTdRVUZETVVJc2FVTkJRVEpDSW4wPSIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIndlYmNvbGFcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wid2ViY29sYVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJjeXRvc2NhcGVDb2xhXCJdID0gZmFjdG9yeShyZXF1aXJlKFwid2ViY29sYVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlQ29sYVwiXSA9IGZhY3Rvcnkocm9vdFtcIndlYmNvbGFcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV81X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgY29sYSA9IF9fd2VicGFja19yZXF1aXJlX18oNSkgfHwgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmNvbGEgOiBudWxsKTtcbnZhciByYWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGlzU3RyaW5nID0gZnVuY3Rpb24gaXNTdHJpbmcobykge1xuICByZXR1cm4gKHR5cGVvZiBvID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvKSkgPT09IF90eXBlb2YoJycpO1xufTtcbnZhciBpc051bWJlciA9IGZ1bmN0aW9uIGlzTnVtYmVyKG8pIHtcbiAgcmV0dXJuICh0eXBlb2YgbyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YobykpID09PSBfdHlwZW9mKDApO1xufTtcbnZhciBpc09iamVjdCA9IGZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIG8gIT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG8pKSA9PT0gX3R5cGVvZih7fSk7XG59O1xudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKG8pIHtcbiAgcmV0dXJuIG8gIT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG8pKSA9PT0gX3R5cGVvZihmdW5jdGlvbiAoKSB7fSk7XG59O1xudmFyIG5vcCA9IGZ1bmN0aW9uIG5vcCgpIHt9O1xuXG52YXIgZ2V0T3B0VmFsID0gZnVuY3Rpb24gZ2V0T3B0VmFsKHZhbCwgZWxlKSB7XG4gIGlmIChpc0Z1bmN0aW9uKHZhbCkpIHtcbiAgICB2YXIgZm4gPSB2YWw7XG4gICAgcmV0dXJuIGZuLmFwcGx5KGVsZSwgW2VsZV0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yXG4vLyBvcHRpb25zIDogb2JqZWN0IGNvbnRhaW5pbmcgbGF5b3V0IG9wdGlvbnNcbmZ1bmN0aW9uIENvbGFMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbn1cblxuLy8gcnVucyB0aGUgbGF5b3V0XG5Db2xhTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsYXlvdXQgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICBsYXlvdXQubWFudWFsbHlTdG9wcGVkID0gZmFsc2U7XG5cbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpO1xuICB2YXIgZWRnZXMgPSBlbGVzLmVkZ2VzKCk7XG4gIHZhciByZWFkeSA9IGZhbHNlO1xuXG4gIHZhciBpc1BhcmVudCA9IGZ1bmN0aW9uIGlzUGFyZW50KGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgfTtcblxuICB2YXIgcGFyZW50Tm9kZXMgPSBub2Rlcy5maWx0ZXIoaXNQYXJlbnQpO1xuXG4gIHZhciBub25wYXJlbnROb2RlcyA9IG5vZGVzLnN1YnRyYWN0KHBhcmVudE5vZGVzKTtcblxuICB2YXIgYmIgPSBvcHRpb25zLmJvdW5kaW5nQm94IHx8IHsgeDE6IDAsIHkxOiAwLCB3OiBjeS53aWR0aCgpLCBoOiBjeS5oZWlnaHQoKSB9O1xuICBpZiAoYmIueDIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLngyID0gYmIueDEgKyBiYi53O1xuICB9XG4gIGlmIChiYi53ID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgfVxuICBpZiAoYmIueTIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLnkyID0gYmIueTEgKyBiYi5oO1xuICB9XG4gIGlmIChiYi5oID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgfVxuXG4gIHZhciB1cGRhdGVOb2RlUG9zaXRpb25zID0gZnVuY3Rpb24gdXBkYXRlTm9kZVBvc2l0aW9ucygpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGRpbWVuc2lvbnMgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaCgnY29sYScpO1xuXG4gICAgICAvLyB1cGRhdGUgbm9kZSBkaW1zXG4gICAgICBpZiAoIXNjcmF0Y2gudXBkYXRlZERpbXMpIHtcbiAgICAgICAgdmFyIHBhZGRpbmcgPSBnZXRPcHRWYWwob3B0aW9ucy5ub2RlU3BhY2luZywgbm9kZSk7XG5cbiAgICAgICAgc2NyYXRjaC53aWR0aCA9IGRpbWVuc2lvbnMudyArIDIgKiBwYWRkaW5nO1xuICAgICAgICBzY3JhdGNoLmhlaWdodCA9IGRpbWVuc2lvbnMuaCArIDIgKiBwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVzLnBvc2l0aW9ucyhmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIHNjcmF0Y2ggPSBub2RlLnNjcmF0Y2goKS5jb2xhO1xuICAgICAgdmFyIHJldFBvcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKCFub2RlLmdyYWJiZWQoKSAmJiBub25wYXJlbnROb2Rlcy5jb250YWlucyhub2RlKSkge1xuICAgICAgICByZXRQb3MgPSB7XG4gICAgICAgICAgeDogYmIueDEgKyBzY3JhdGNoLngsXG4gICAgICAgICAgeTogYmIueTEgKyBzY3JhdGNoLnlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIWlzTnVtYmVyKHJldFBvcy54KSB8fCAhaXNOdW1iZXIocmV0UG9zLnkpKSB7XG4gICAgICAgICAgcmV0UG9zID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXRQb3M7XG4gICAgfSk7XG5cbiAgICBub2Rlcy51cGRhdGVDb21wb3VuZEJvdW5kcygpOyAvLyBiZWNhdXNlIHRoZSB3YXkgdGhpcyBsYXlvdXQgc2V0cyBwb3NpdGlvbnMgaXMgYnVnZ3kgZm9yIHNvbWUgcmVhc29uOyByZWYgIzg3OFxuXG4gICAgaWYgKCFyZWFkeSkge1xuICAgICAgb25SZWFkeSgpO1xuICAgICAgcmVhZHkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBvbkRvbmUgPSBmdW5jdGlvbiBvbkRvbmUoKSB7XG4gICAgaWYgKG9wdGlvbnMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICBncmFiYmFibGVOb2Rlcy5ncmFiaWZ5KCk7XG4gICAgfVxuXG4gICAgY3kub2ZmKCdkZXN0cm95JywgZGVzdHJveUhhbmRsZXIpO1xuXG4gICAgbm9kZXMub2ZmKCdncmFiIGZyZWUgcG9zaXRpb24nLCBncmFiSGFuZGxlcik7XG4gICAgbm9kZXMub2ZmKCdsb2NrIHVubG9jaycsIGxvY2tIYW5kbGVyKTtcblxuICAgIC8vIHRyaWdnZXIgbGF5b3V0c3RvcCB3aGVuIHRoZSBsYXlvdXQgc3RvcHMgKGUuZy4gZmluaXNoZXMpXG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgbGF5b3V0LnRyaWdnZXIoeyB0eXBlOiAnbGF5b3V0c3RvcCcsIGxheW91dDogbGF5b3V0IH0pO1xuICB9O1xuXG4gIHZhciBvblJlYWR5ID0gZnVuY3Rpb24gb25SZWFkeSgpIHtcbiAgICAvLyB0cmlnZ2VyIGxheW91dHJlYWR5IHdoZW4gZWFjaCBub2RlIGhhcyBoYWQgaXRzIHBvc2l0aW9uIHNldCBhdCBsZWFzdCBvbmNlXG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICBsYXlvdXQudHJpZ2dlcih7IHR5cGU6ICdsYXlvdXRyZWFkeScsIGxheW91dDogbGF5b3V0IH0pO1xuICB9O1xuXG4gIHZhciB0aWNrc1BlckZyYW1lID0gb3B0aW9ucy5yZWZyZXNoO1xuXG4gIGlmIChvcHRpb25zLnJlZnJlc2ggPCAwKSB7XG4gICAgdGlja3NQZXJGcmFtZSA9IDE7XG4gIH0gZWxzZSB7XG4gICAgdGlja3NQZXJGcmFtZSA9IE1hdGgubWF4KDEsIHRpY2tzUGVyRnJhbWUpOyAvLyBhdCBsZWFzdCAxXG4gIH1cblxuICB2YXIgYWRhcHRvciA9IGxheW91dC5hZGFwdG9yID0gY29sYS5hZGFwdG9yKHtcbiAgICB0cmlnZ2VyOiBmdW5jdGlvbiB0cmlnZ2VyKGUpIHtcbiAgICAgIC8vIG9uIHNpbSBldmVudFxuICAgICAgdmFyIFRJQ0sgPSBjb2xhLkV2ZW50VHlwZSA/IGNvbGEuRXZlbnRUeXBlLnRpY2sgOiBudWxsO1xuICAgICAgdmFyIEVORCA9IGNvbGEuRXZlbnRUeXBlID8gY29sYS5FdmVudFR5cGUuZW5kIDogbnVsbDtcblxuICAgICAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAndGljayc6XG4gICAgICAgIGNhc2UgVElDSzpcbiAgICAgICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgICAgICB1cGRhdGVOb2RlUG9zaXRpb25zKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIGNhc2UgRU5EOlxuICAgICAgICAgIHVwZGF0ZU5vZGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuaW5maW5pdGUpIHtcbiAgICAgICAgICAgIG9uRG9uZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAga2ljazogZnVuY3Rpb24ga2ljaygpIHtcbiAgICAgIC8vIGtpY2sgb2ZmIHRoZSBzaW11bGF0aW9uXG4gICAgICAvL2xldCBza2lwID0gMDtcblxuICAgICAgdmFyIGZpcnN0VGljayA9IHRydWU7XG5cbiAgICAgIHZhciBpbmZ0aWNrID0gZnVuY3Rpb24gaW5mdGljaygpIHtcbiAgICAgICAgaWYgKGxheW91dC5tYW51YWxseVN0b3BwZWQpIHtcbiAgICAgICAgICBvbkRvbmUoKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJldCA9IGFkYXB0b3IudGljaygpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5pbmZpbml0ZSAmJiAhZmlyc3RUaWNrKSB7XG4gICAgICAgICAgYWRhcHRvci5jb252ZXJnZW5jZVRocmVzaG9sZChvcHRpb25zLmNvbnZlcmdlbmNlVGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpcnN0VGljayA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChyZXQgJiYgb3B0aW9ucy5pbmZpbml0ZSkge1xuICAgICAgICAgIC8vIHJlc3VtZSBsYXlvdXQgaWYgZG9uZVxuICAgICAgICAgIGFkYXB0b3IucmVzdW1lKCk7IC8vIHJlc3VtZSA9PiBuZXcga2lja1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDsgLy8gYWxsb3cgcmVndWxhciBmaW5pc2ggYi9jIG9mIG5ldyBraWNrXG4gICAgICB9O1xuXG4gICAgICB2YXIgbXVsdGl0aWNrID0gZnVuY3Rpb24gbXVsdGl0aWNrKCkge1xuICAgICAgICAvLyBtdWx0aXBsZSB0aWNrcyBpbiBhIHJvd1xuICAgICAgICB2YXIgcmV0ID0gdm9pZCAwO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlja3NQZXJGcmFtZSAmJiAhcmV0OyBpKyspIHtcbiAgICAgICAgICByZXQgPSByZXQgfHwgaW5mdGljaygpOyAvLyBwaWNrIHVwIHRydWUgcmV0IHZhbHMgPT4gc2ltIGRvbmVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuXG4gICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgIHZhciBmcmFtZSA9IGZ1bmN0aW9uIGZyYW1lKCkge1xuICAgICAgICAgIGlmIChtdWx0aXRpY2soKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJhZihmcmFtZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmFmKGZyYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdoaWxlICghaW5mdGljaygpKSB7XG4gICAgICAgICAgLy8ga2VlcCBnb2luZy4uLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uOiBub3AsIC8vIGR1bW15OyBub3QgbmVlZGVkXG5cbiAgICBkcmFnOiBub3AgLy8gbm90IG5lZWRlZCBmb3Igb3VyIGNhc2VcbiAgfSk7XG4gIGxheW91dC5hZGFwdG9yID0gYWRhcHRvcjtcblxuICAvLyBpZiBzZXQgbm8gZ3JhYmJpbmcgZHVyaW5nIGxheW91dFxuICB2YXIgZ3JhYmJhYmxlTm9kZXMgPSBub2Rlcy5maWx0ZXIoJzpncmFiYmFibGUnKTtcbiAgaWYgKG9wdGlvbnMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgZ3JhYmJhYmxlTm9kZXMudW5ncmFiaWZ5KCk7XG4gIH1cblxuICB2YXIgZGVzdHJveUhhbmRsZXIgPSB2b2lkIDA7XG4gIGN5Lm9uZSgnZGVzdHJveScsIGRlc3Ryb3lIYW5kbGVyID0gZnVuY3Rpb24gZGVzdHJveUhhbmRsZXIoKSB7XG4gICAgbGF5b3V0LnN0b3AoKTtcbiAgfSk7XG5cbiAgLy8gaGFuZGxlIG5vZGUgZHJhZ2dpbmdcbiAgdmFyIGdyYWJIYW5kbGVyID0gdm9pZCAwO1xuICBub2Rlcy5vbignZ3JhYiBmcmVlIHBvc2l0aW9uJywgZ3JhYkhhbmRsZXIgPSBmdW5jdGlvbiBncmFiSGFuZGxlcihlKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzO1xuICAgIHZhciBzY3JDb2xhID0gbm9kZS5zY3JhdGNoKCkuY29sYTtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgIHZhciBub2RlSXNUYXJnZXQgPSBlLmN5VGFyZ2V0ID09PSBub2RlIHx8IGUudGFyZ2V0ID09PSBub2RlO1xuXG4gICAgaWYgKCFub2RlSXNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgY2FzZSAnZ3JhYic6XG4gICAgICAgIGFkYXB0b3IuZHJhZ3N0YXJ0KHNjckNvbGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZyZWUnOlxuICAgICAgICBhZGFwdG9yLmRyYWdlbmQoc2NyQ29sYSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncG9zaXRpb24nOlxuICAgICAgICAvLyBvbmx5IHVwZGF0ZSB3aGVuIGRpZmZlcmVudCAoaS5lLiBtYW51YWwgLnBvc2l0aW9uKCkgY2FsbCBvciBkcmFnKSBzbyB3ZSBkb24ndCBsb29wIG5lZWRsZXNzbHlcbiAgICAgICAgaWYgKHNjckNvbGEucHggIT09IHBvcy54IC0gYmIueDEgfHwgc2NyQ29sYS5weSAhPT0gcG9zLnkgLSBiYi55MSkge1xuICAgICAgICAgIHNjckNvbGEucHggPSBwb3MueCAtIGJiLngxO1xuICAgICAgICAgIHNjckNvbGEucHkgPSBwb3MueSAtIGJiLnkxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGxvY2tIYW5kbGVyID0gdm9pZCAwO1xuICBub2Rlcy5vbignbG9jayB1bmxvY2snLCBsb2NrSGFuZGxlciA9IGZ1bmN0aW9uIGxvY2tIYW5kbGVyKCkge1xuICAgIHZhciBub2RlID0gdGhpcztcbiAgICB2YXIgc2NyQ29sYSA9IG5vZGUuc2NyYXRjaCgpLmNvbGE7XG5cbiAgICBzY3JDb2xhLmZpeGVkID0gbm9kZS5sb2NrZWQoKTtcblxuICAgIGlmIChub2RlLmxvY2tlZCgpKSB7XG4gICAgICBhZGFwdG9yLmRyYWdzdGFydChzY3JDb2xhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRhcHRvci5kcmFnZW5kKHNjckNvbGEpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gYWRkIG5vZGVzIHRvIGNvbGFcbiAgYWRhcHRvci5ub2Rlcyhub25wYXJlbnROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICB2YXIgcGFkZGluZyA9IGdldE9wdFZhbChvcHRpb25zLm5vZGVTcGFjaW5nLCBub2RlKTtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgIHZhciBkaW1lbnNpb25zID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgdmFyIHN0cnVjdCA9IG5vZGUuc2NyYXRjaCgpLmNvbGEgPSB7XG4gICAgICB4OiBvcHRpb25zLnJhbmRvbWl6ZSAmJiAhbm9kZS5sb2NrZWQoKSB8fCBwb3MueCA9PT0gdW5kZWZpbmVkID8gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogYmIudykgOiBwb3MueCxcbiAgICAgIHk6IG9wdGlvbnMucmFuZG9taXplICYmICFub2RlLmxvY2tlZCgpIHx8IHBvcy55ID09PSB1bmRlZmluZWQgPyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKSA6IHBvcy55LFxuICAgICAgd2lkdGg6IGRpbWVuc2lvbnMudyArIDIgKiBwYWRkaW5nLFxuICAgICAgaGVpZ2h0OiBkaW1lbnNpb25zLmggKyAyICogcGFkZGluZyxcbiAgICAgIGluZGV4OiBpLFxuICAgICAgZml4ZWQ6IG5vZGUubG9ja2VkKClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0cnVjdDtcbiAgfSkpO1xuXG4gIC8vIHRoZSBjb25zdHJhaW50cyB0byBiZSBhZGRlZCBvbiBub2Rlc1xuICB2YXIgY29uc3RyYWludHMgPSBbXTtcblxuICBpZiAob3B0aW9ucy5hbGlnbm1lbnQpIHtcbiAgICAvLyB0aGVuIHNldCBhbGlnbm1lbnQgY29uc3RyYWludHNcblxuICAgIGlmIChvcHRpb25zLmFsaWdubWVudC52ZXJ0aWNhbCkge1xuICAgICAgdmFyIHZlcnRpY2FsQWxpZ25tZW50cyA9IG9wdGlvbnMuYWxpZ25tZW50LnZlcnRpY2FsO1xuICAgICAgdmVydGljYWxBbGlnbm1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGFsaWdubWVudCkge1xuICAgICAgICB2YXIgb2Zmc2V0c1ggPSBbXTtcbiAgICAgICAgYWxpZ25tZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGVEYXRhKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2RlRGF0YS5ub2RlO1xuICAgICAgICAgIHZhciBzY3JDb2xhID0gbm9kZS5zY3JhdGNoKCkuY29sYTtcbiAgICAgICAgICB2YXIgaW5kZXggPSBzY3JDb2xhLmluZGV4O1xuICAgICAgICAgIG9mZnNldHNYLnB1c2goe1xuICAgICAgICAgICAgbm9kZTogaW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IG5vZGVEYXRhLm9mZnNldCA/IG5vZGVEYXRhLm9mZnNldCA6IDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdhbGlnbm1lbnQnLFxuICAgICAgICAgIGF4aXM6ICd4JyxcbiAgICAgICAgICBvZmZzZXRzOiBvZmZzZXRzWFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsaWdubWVudC5ob3Jpem9udGFsKSB7XG4gICAgICB2YXIgaG9yaXpvbnRhbEFsaWdubWVudHMgPSBvcHRpb25zLmFsaWdubWVudC5ob3Jpem9udGFsO1xuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudHMuZm9yRWFjaChmdW5jdGlvbiAoYWxpZ25tZW50KSB7XG4gICAgICAgIHZhciBvZmZzZXRzWSA9IFtdO1xuICAgICAgICBhbGlnbm1lbnQuZm9yRWFjaChmdW5jdGlvbiAobm9kZURhdGEpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVEYXRhLm5vZGU7XG4gICAgICAgICAgdmFyIHNjckNvbGEgPSBub2RlLnNjcmF0Y2goKS5jb2xhO1xuICAgICAgICAgIHZhciBpbmRleCA9IHNjckNvbGEuaW5kZXg7XG4gICAgICAgICAgb2Zmc2V0c1kucHVzaCh7XG4gICAgICAgICAgICBub2RlOiBpbmRleCxcbiAgICAgICAgICAgIG9mZnNldDogbm9kZURhdGEub2Zmc2V0ID8gbm9kZURhdGEub2Zmc2V0IDogMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2FsaWdubWVudCcsXG4gICAgICAgICAgYXhpczogJ3knLFxuICAgICAgICAgIG9mZnNldHM6IG9mZnNldHNZXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgZ2FwSW5lcXVhbGl0aWVzIHZhcmlhYmxlIGlzIHNldCBhZGQgZWFjaCBpbmVxdWFsaXR5IGNvbnN0cmFpbnQgdG8gbGlzdCBvZiBjb25zdHJhaW50c1xuICBpZiAob3B0aW9ucy5nYXBJbmVxdWFsaXRpZXMpIHtcbiAgICBvcHRpb25zLmdhcEluZXF1YWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpbmVxdWFsaXR5KSB7XG5cbiAgICAgIC8vIGZvciB0aGUgY29uc3RyYWludHMgdG8gYmUgcGFzc2VkIHRvIGNvbGEgbGF5b3V0IGFkYXB0b3IgdXNlIGluZGljZXMgb2Ygbm9kZXMsXG4gICAgICAvLyBub3QgdGhlIG5vZGVzIHRoZW1zZWx2ZXNcbiAgICAgIHZhciBsZWZ0SW5kZXggPSBpbmVxdWFsaXR5LmxlZnQuc2NyYXRjaCgpLmNvbGEuaW5kZXg7XG4gICAgICB2YXIgcmlnaHRJbmRleCA9IGluZXF1YWxpdHkucmlnaHQuc2NyYXRjaCgpLmNvbGEuaW5kZXg7XG5cbiAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICBheGlzOiBpbmVxdWFsaXR5LmF4aXMsXG4gICAgICAgIGxlZnQ6IGxlZnRJbmRleCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0SW5kZXgsXG4gICAgICAgIGdhcDogaW5lcXVhbGl0eS5nYXAsXG4gICAgICAgIGVxdWFsaXR5OiBpbmVxdWFsaXR5LmVxdWFsaXR5XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGFkZCBjb25zdHJhaW50cyBpZiBhbnlcbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICBhZGFwdG9yLmNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcbiAgfVxuXG4gIC8vIGFkZCBjb21wb3VuZCBub2RlcyB0byBjb2xhXG4gIGFkYXB0b3IuZ3JvdXBzKHBhcmVudE5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIC8vIGFkZCBiYXNpYyBncm91cCBpbmNsIGxlYWYgbm9kZXNcbiAgICB2YXIgb3B0UGFkZGluZyA9IGdldE9wdFZhbChvcHRpb25zLm5vZGVTcGFjaW5nLCBub2RlKTtcbiAgICB2YXIgZ2V0UGFkZGluZyA9IGZ1bmN0aW9uIGdldFBhZGRpbmcoZCkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobm9kZS5zdHlsZSgncGFkZGluZy0nICsgZCkpO1xuICAgIH07XG5cbiAgICB2YXIgcGxlZnQgPSBnZXRQYWRkaW5nKCdsZWZ0JykgKyBvcHRQYWRkaW5nO1xuICAgIHZhciBwcmlnaHQgPSBnZXRQYWRkaW5nKCdyaWdodCcpICsgb3B0UGFkZGluZztcbiAgICB2YXIgcHRvcCA9IGdldFBhZGRpbmcoJ3RvcCcpICsgb3B0UGFkZGluZztcbiAgICB2YXIgcGJvdHRvbSA9IGdldFBhZGRpbmcoJ2JvdHRvbScpICsgb3B0UGFkZGluZztcblxuICAgIG5vZGUuc2NyYXRjaCgpLmNvbGEgPSB7XG4gICAgICBpbmRleDogaSxcblxuICAgICAgcGFkZGluZzogTWF0aC5tYXgocGxlZnQsIHByaWdodCwgcHRvcCwgcGJvdHRvbSksXG5cbiAgICAgIC8vIGxlYXZlcyBzaG91bGQgb25seSBjb250YWluIGRpcmVjdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4pLFxuICAgICAgLy8gbm90IHRoZSBsZWF2ZXMgb2YgbmVzdGVkIGNvbXBvdW5kIG5vZGVzIG9yIGFueSBub2RlcyB0aGF0IGFyZSBjb21wb3VuZHMgdGhlbXNlbHZlc1xuICAgICAgbGVhdmVzOiBub2RlLmNoaWxkcmVuKCkuaW50ZXJzZWN0aW9uKG5vbnBhcmVudE5vZGVzKS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFswXS5zY3JhdGNoKCkuY29sYS5pbmRleDtcbiAgICAgIH0pLFxuXG4gICAgICBmaXhlZDogbm9kZS5sb2NrZWQoKVxuICAgIH07XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfSkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gYWRkIHN1Ymdyb3Vwc1xuICAgIG5vZGUuc2NyYXRjaCgpLmNvbGEuZ3JvdXBzID0gbm9kZS5jaGlsZHJlbigpLmludGVyc2VjdGlvbihwYXJlbnROb2RlcykubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgcmV0dXJuIGNoaWxkLnNjcmF0Y2goKS5jb2xhLmluZGV4O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGUuc2NyYXRjaCgpLmNvbGE7XG4gIH0pKTtcblxuICAvLyBnZXQgdGhlIGVkZ2UgbGVuZ3RoIHNldHRpbmcgbWVjaGFuaXNtXG4gIHZhciBsZW5ndGggPSB2b2lkIDA7XG4gIHZhciBsZW5ndGhGbk5hbWUgPSB2b2lkIDA7XG4gIGlmIChvcHRpb25zLmVkZ2VMZW5ndGggIT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IG9wdGlvbnMuZWRnZUxlbmd0aDtcbiAgICBsZW5ndGhGbk5hbWUgPSAnbGlua0Rpc3RhbmNlJztcbiAgfSBlbHNlIGlmIChvcHRpb25zLmVkZ2VTeW1EaWZmTGVuZ3RoICE9IG51bGwpIHtcbiAgICBsZW5ndGggPSBvcHRpb25zLmVkZ2VTeW1EaWZmTGVuZ3RoO1xuICAgIGxlbmd0aEZuTmFtZSA9ICdzeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMnO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuZWRnZUphY2NhcmRMZW5ndGggIT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IG9wdGlvbnMuZWRnZUphY2NhcmRMZW5ndGg7XG4gICAgbGVuZ3RoRm5OYW1lID0gJ2phY2NhcmRMaW5rTGVuZ3Rocyc7XG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gMTAwO1xuICAgIGxlbmd0aEZuTmFtZSA9ICdsaW5rRGlzdGFuY2UnO1xuICB9XG5cbiAgdmFyIGxlbmd0aEdldHRlciA9IGZ1bmN0aW9uIGxlbmd0aEdldHRlcihsaW5rKSB7XG4gICAgcmV0dXJuIGxpbmsuY2FsY0xlbmd0aDtcbiAgfTtcblxuICAvLyBhZGQgdGhlIGVkZ2VzIHRvIGNvbGFcbiAgYWRhcHRvci5saW5rcyhlZGdlcy5zdGRGaWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gbm9ucGFyZW50Tm9kZXMuY29udGFpbnMoZWRnZS5zb3VyY2UoKSkgJiYgbm9ucGFyZW50Tm9kZXMuY29udGFpbnMoZWRnZS50YXJnZXQoKSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBjID0gZWRnZS5zY3JhdGNoKCkuY29sYSA9IHtcbiAgICAgIHNvdXJjZTogZWRnZS5zb3VyY2UoKVswXS5zY3JhdGNoKCkuY29sYS5pbmRleCxcbiAgICAgIHRhcmdldDogZWRnZS50YXJnZXQoKVswXS5zY3JhdGNoKCkuY29sYS5pbmRleFxuICAgIH07XG5cbiAgICBpZiAobGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIGMuY2FsY0xlbmd0aCA9IGdldE9wdFZhbChsZW5ndGgsIGVkZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9KSk7XG5cbiAgYWRhcHRvci5zaXplKFtiYi53LCBiYi5oXSk7XG5cbiAgaWYgKGxlbmd0aCAhPSBudWxsKSB7XG4gICAgYWRhcHRvcltsZW5ndGhGbk5hbWVdKGxlbmd0aEdldHRlcik7XG4gIH1cblxuICAvLyBzZXQgdGhlIGZsb3cgb2YgY29sYVxuICBpZiAob3B0aW9ucy5mbG93KSB7XG4gICAgdmFyIGZsb3cgPSB2b2lkIDA7XG4gICAgdmFyIGRlZkF4aXMgPSAneSc7XG4gICAgdmFyIGRlZk1pblNlcCA9IDUwO1xuXG4gICAgaWYgKGlzU3RyaW5nKG9wdGlvbnMuZmxvdykpIHtcbiAgICAgIGZsb3cgPSB7XG4gICAgICAgIGF4aXM6IG9wdGlvbnMuZmxvdyxcbiAgICAgICAgbWluU2VwYXJhdGlvbjogZGVmTWluU2VwXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIob3B0aW9ucy5mbG93KSkge1xuICAgICAgZmxvdyA9IHtcbiAgICAgICAgYXhpczogZGVmQXhpcyxcbiAgICAgICAgbWluU2VwYXJhdGlvbjogb3B0aW9ucy5mbG93XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob3B0aW9ucy5mbG93KSkge1xuICAgICAgZmxvdyA9IG9wdGlvbnMuZmxvdztcblxuICAgICAgZmxvdy5heGlzID0gZmxvdy5heGlzIHx8IGRlZkF4aXM7XG4gICAgICBmbG93Lm1pblNlcGFyYXRpb24gPSBmbG93Lm1pblNlcGFyYXRpb24gIT0gbnVsbCA/IGZsb3cubWluU2VwYXJhdGlvbiA6IGRlZk1pblNlcDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZS5nLiBvcHRpb25zLmZsb3c6IHRydWVcbiAgICAgIGZsb3cgPSB7XG4gICAgICAgIGF4aXM6IGRlZkF4aXMsXG4gICAgICAgIG1pblNlcGFyYXRpb246IGRlZk1pblNlcFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhZGFwdG9yLmZsb3dMYXlvdXQoZmxvdy5heGlzLCBmbG93Lm1pblNlcGFyYXRpb24pO1xuICB9XG5cbiAgbGF5b3V0LnRyaWdnZXIoeyB0eXBlOiAnbGF5b3V0c3RhcnQnLCBsYXlvdXQ6IGxheW91dCB9KTtcblxuICBhZGFwdG9yLmF2b2lkT3ZlcmxhcHMob3B0aW9ucy5hdm9pZE92ZXJsYXApLmhhbmRsZURpc2Nvbm5lY3RlZChvcHRpb25zLmhhbmRsZURpc2Nvbm5lY3RlZCkuc3RhcnQob3B0aW9ucy51bmNvbnN0ckl0ZXIsIG9wdGlvbnMudXNlckNvbnN0SXRlciwgb3B0aW9ucy5hbGxDb25zdEl0ZXIsIHVuZGVmaW5lZCwgLy8gZ3JpZFNuYXBJdGVyYXRpb25zID0gMFxuICB1bmRlZmluZWQsIC8vIGtlZXBSdW5uaW5nID0gdHJ1ZVxuICBvcHRpb25zLmNlbnRlckdyYXBoKTtcblxuICBpZiAoIW9wdGlvbnMuaW5maW5pdGUpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghbGF5b3V0Lm1hbnVhbGx5U3RvcHBlZCkge1xuICAgICAgICBhZGFwdG9yLnN0b3AoKTtcbiAgICAgIH1cbiAgICB9LCBvcHRpb25zLm1heFNpbXVsYXRpb25UaW1lKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuLy8gY2FsbGVkIG9uIGNvbnRpbnVvdXMgbGF5b3V0cyB0byBzdG9wIHRoZW0gYmVmb3JlIHRoZXkgZmluaXNoXG5Db2xhTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5hZGFwdG9yKSB7XG4gICAgdGhpcy5tYW51YWxseVN0b3BwZWQgPSB0cnVlO1xuICAgIHRoaXMuYWRhcHRvci5zdG9wKCk7XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ29sYUxheW91dDtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIFNpbXBsZSwgaW50ZXJuYWwgT2JqZWN0LmFzc2lnbigpIHBvbHlmaWxsIGZvciBvcHRpb25zIG9iamVjdHMgZXRjLlxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3JjcyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZmlsdGVyKGZ1bmN0aW9uIChzcmMpIHtcbiAgICByZXR1cm4gc3JjICE9IG51bGw7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgcmV0dXJuIHRndFtrXSA9IHNyY1trXTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vLyBkZWZhdWx0IGxheW91dCBvcHRpb25zXG52YXIgZGVmYXVsdHMgPSB7XG4gIGFuaW1hdGU6IHRydWUsIC8vIHdoZXRoZXIgdG8gc2hvdyB0aGUgbGF5b3V0IGFzIGl0J3MgcnVubmluZ1xuICByZWZyZXNoOiAxLCAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIG1heFNpbXVsYXRpb25UaW1lOiA0MDAwLCAvLyBtYXggbGVuZ3RoIGluIG1zIHRvIHJ1biB0aGUgbGF5b3V0XG4gIHVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZzogZmFsc2UsIC8vIHNvIHlvdSBjYW4ndCBkcmFnIG5vZGVzIGR1cmluZyBsYXlvdXRcbiAgZml0OiB0cnVlLCAvLyBvbiBldmVyeSBsYXlvdXQgcmVwb3NpdGlvbiBvZiBub2RlcywgZml0IHRoZSB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCwgLy8gcGFkZGluZyBhcm91bmQgdGhlIHNpbXVsYXRpb25cbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCwgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcblxuICAvLyBsYXlvdXQgZXZlbnQgY2FsbGJhY2tzXG4gIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LCAvLyBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sIC8vIG9uIGxheW91dHN0b3BcblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuICBhdm9pZE92ZXJsYXA6IHRydWUsIC8vIGlmIHRydWUsIHByZXZlbnRzIG92ZXJsYXAgb2Ygbm9kZSBib3VuZGluZyBib3hlc1xuICBoYW5kbGVEaXNjb25uZWN0ZWQ6IHRydWUsIC8vIGlmIHRydWUsIGF2b2lkcyBkaXNjb25uZWN0ZWQgY29tcG9uZW50cyBmcm9tIG92ZXJsYXBwaW5nXG4gIGNvbnZlcmdlbmNlVGhyZXNob2xkOiAwLjAxLCAvLyB3aGVuIHRoZSBhbHBoYSB2YWx1ZSAoc3lzdGVtIGVuZXJneSkgZmFsbHMgYmVsb3cgdGhpcyB2YWx1ZSwgdGhlIGxheW91dCBzdG9wc1xuICBub2RlU3BhY2luZzogZnVuY3Rpb24gbm9kZVNwYWNpbmcobm9kZSkge1xuICAgIHJldHVybiAxMDtcbiAgfSwgLy8gZXh0cmEgc3BhY2luZyBhcm91bmQgbm9kZXNcbiAgZmxvdzogdW5kZWZpbmVkLCAvLyB1c2UgREFHL3RyZWUgZmxvdyBsYXlvdXQgaWYgc3BlY2lmaWVkLCBlLmcuIHsgYXhpczogJ3knLCBtaW5TZXBhcmF0aW9uOiAzMCB9XG4gIGFsaWdubWVudDogdW5kZWZpbmVkLCAvLyByZWxhdGl2ZSBhbGlnbm1lbnQgY29uc3RyYWludHMgb24gbm9kZXMsIGUuZy4gZnVuY3Rpb24oIG5vZGUgKXsgcmV0dXJuIHsgeDogMCwgeTogMSB9IH1cbiAgZ2FwSW5lcXVhbGl0aWVzOiB1bmRlZmluZWQsIC8vIGxpc3Qgb2YgaW5lcXVhbGl0eSBjb25zdHJhaW50cyBmb3IgdGhlIGdhcCBiZXR3ZWVuIHRoZSBub2RlcywgZS5nLiBbe1wiYXhpc1wiOlwieVwiLCBcImxlZnRcIjpub2RlMSwgXCJyaWdodFwiOm5vZGUyLCBcImdhcFwiOjI1fV1cbiAgY2VudGVyR3JhcGg6IHRydWUsIC8vIGFkanVzdHMgdGhlIG5vZGUgcG9zaXRpb25zIGluaXRpYWxseSB0byBjZW50ZXIgdGhlIGdyYXBoIChwYXNzIGZhbHNlIGlmIHlvdSB3YW50IHRvIHN0YXJ0IHRoZSBsYXlvdXQgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbilcblxuXG4gIC8vIGRpZmZlcmVudCBtZXRob2RzIG9mIHNwZWNpZnlpbmcgZWRnZSBsZW5ndGhcbiAgLy8gZWFjaCBjYW4gYmUgYSBjb25zdGFudCBudW1lcmljYWwgdmFsdWUgb3IgYSBmdW5jdGlvbiBsaWtlIGBmdW5jdGlvbiggZWRnZSApeyByZXR1cm4gMjsgfWBcbiAgZWRnZUxlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIGVkZ2UgbGVuZ3RoIGRpcmVjdGx5IGluIHNpbXVsYXRpb25cbiAgZWRnZVN5bURpZmZMZW5ndGg6IHVuZGVmaW5lZCwgLy8gc3ltbWV0cmljIGRpZmYgZWRnZSBsZW5ndGggaW4gc2ltdWxhdGlvblxuICBlZGdlSmFjY2FyZExlbmd0aDogdW5kZWZpbmVkLCAvLyBqYWNjYXJkIGVkZ2UgbGVuZ3RoIGluIHNpbXVsYXRpb25cblxuICAvLyBpdGVyYXRpb25zIG9mIGNvbGEgYWxnb3JpdGhtOyB1c2VzIGRlZmF1bHQgdmFsdWVzIG9uIHVuZGVmaW5lZFxuICB1bmNvbnN0ckl0ZXI6IHVuZGVmaW5lZCwgLy8gdW5jb25zdHJhaW5lZCBpbml0aWFsIGxheW91dCBpdGVyYXRpb25zXG4gIHVzZXJDb25zdEl0ZXI6IHVuZGVmaW5lZCwgLy8gaW5pdGlhbCBsYXlvdXQgaXRlcmF0aW9ucyB3aXRoIHVzZXItc3BlY2lmaWVkIGNvbnN0cmFpbnRzXG4gIGFsbENvbnN0SXRlcjogdW5kZWZpbmVkLCAvLyBpbml0aWFsIGxheW91dCBpdGVyYXRpb25zIHdpdGggYWxsIGNvbnN0cmFpbnRzIGluY2x1ZGluZyBub24tb3ZlcmxhcFxuXG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIGltcGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyByZWdpc3RlcnMgdGhlIGV4dGVuc2lvbiBvbiBhIGN5dG9zY2FwZSBsaWIgcmVmXG52YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihjeXRvc2NhcGUpIHtcbiAgaWYgKCFjeXRvc2NhcGUpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCdsYXlvdXQnLCAnY29sYScsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciByYWYgPSB2b2lkIDA7XG5cbmlmICgodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKHdpbmRvdykpICE9PSAoIHRydWUgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZih1bmRlZmluZWQpKSkge1xuICByYWYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDE2KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIGlmIG5vdCBhdmFpbGFibGUsIGFsbCB5b3UgZ2V0IGlzIGltbWVkaWF0ZSBjYWxsc1xuICByYWYgPSBmdW5jdGlvbiByYWYoY2IpIHtcbiAgICBjYigpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJhZjtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV81X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImxheW91dEJhc2VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibGF5b3V0QmFzZVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI2KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gTGF5b3V0Q29uc3RhbnRzKCkge31cblxuLyoqXHJcbiAqIExheW91dCBRdWFsaXR5OiAwOmRyYWZ0LCAxOmRlZmF1bHQsIDI6cHJvb2ZcclxuICovXG5MYXlvdXRDb25zdGFudHMuUVVBTElUWSA9IDE7XG5cbi8qKlxyXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnNcclxuICovXG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9DUkVBVEVfQkVORFNfQVNfTkVFREVEID0gZmFsc2U7XG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX09OX0xBWU9VVCA9IHRydWU7XG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fRFVSSU5HX0xBWU9VVCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX1BFUklPRCA9IDUwO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVU5JRk9STV9MRUFGX05PREVfU0laRVMgPSBmYWxzZTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEdlbmVyYWwgb3RoZXIgY29uc3RhbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLypcclxuICogTWFyZ2lucyBvZiBhIGdyYXBoIHRvIGJlIGFwcGxpZWQgb24gYm91ZGluZyByZWN0YW5nbGUgb2YgaXRzIGNvbnRlbnRzLiBXZVxyXG4gKiBhc3N1bWUgbWFyZ2lucyBvbiBhbGwgZm91ciBzaWRlcyB0byBiZSB1bmlmb3JtLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVBIX01BUkdJTiA9IDE1O1xuXG4vKlxyXG4gKiBXaGV0aGVyIHRvIGNvbnNpZGVyIGxhYmVscyBpbiBub2RlIGRpbWVuc2lvbnMgb3Igbm90XHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLk5PREVfRElNRU5TSU9OU19JTkNMVURFX0xBQkVMUyA9IGZhbHNlO1xuXG4vKlxyXG4gKiBEZWZhdWx0IGRpbWVuc2lvbiBvZiBhIG5vbi1jb21wb3VuZCBub2RlLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFID0gNDA7XG5cbi8qXHJcbiAqIERlZmF1bHQgZGltZW5zaW9uIG9mIGEgbm9uLWNvbXBvdW5kIG5vZGUuXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLlNJTVBMRV9OT0RFX0hBTEZfU0laRSA9IExheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFIC8gMjtcblxuLypcclxuICogRW1wdHkgY29tcG91bmQgbm9kZSBzaXplLiBXaGVuIGEgY29tcG91bmQgbm9kZSBpcyBlbXB0eSwgaXRzIGJvdGhcclxuICogZGltZW5zaW9ucyBzaG91bGQgYmUgb2YgdGhpcyB2YWx1ZS5cclxuICovXG5MYXlvdXRDb25zdGFudHMuRU1QVFlfQ09NUE9VTkRfTk9ERV9TSVpFID0gNDA7XG5cbi8qXHJcbiAqIE1pbmltdW0gbGVuZ3RoIHRoYXQgYW4gZWRnZSBzaG91bGQgdGFrZSBkdXJpbmcgbGF5b3V0XHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLk1JTl9FREdFX0xFTkdUSCA9IDE7XG5cbi8qXHJcbiAqIFdvcmxkIGJvdW5kYXJpZXMgdGhhdCBsYXlvdXQgb3BlcmF0ZXMgb25cclxuICovXG5MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkgPSAxMDAwMDAwO1xuXG4vKlxyXG4gKiBXb3JsZCBib3VuZGFyaWVzIHRoYXQgcmFuZG9tIHBvc2l0aW9uaW5nIGNhbiBiZSBwZXJmb3JtZWQgd2l0aFxyXG4gKi9cbkxheW91dENvbnN0YW50cy5JTklUSUFMX1dPUkxEX0JPVU5EQVJZID0gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZIC8gMTAwMDtcblxuLypcclxuICogQ29vcmRpbmF0ZXMgb2YgdGhlIHdvcmxkIGNlbnRlclxyXG4gKi9cbkxheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWCA9IDEyMDA7XG5MYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1kgPSA5MDA7XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0Q29uc3RhbnRzO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBJTWF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cbmZ1bmN0aW9uIExFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBMR3JhcGhPYmplY3QuY2FsbCh0aGlzLCB2RWRnZSk7XG5cbiAgdGhpcy5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBmYWxzZTtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2RWRnZTtcbiAgdGhpcy5iZW5kcG9pbnRzID0gW107XG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbn1cblxuTEVkZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhPYmplY3QpIHtcbiAgTEVkZ2VbcHJvcF0gPSBMR3JhcGhPYmplY3RbcHJvcF07XG59XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRTb3VyY2UgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnNvdXJjZTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhcmdldDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5pc0ludGVyR3JhcGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzSW50ZXJHcmFwaDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxlbmd0aDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRCZW5kcG9pbnRzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5iZW5kcG9pbnRzO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldExjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGNhO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldFNvdXJjZUluTGNhID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2VJbkxjYTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRUYXJnZXRJbkxjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGFyZ2V0SW5MY2E7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0T3RoZXJFbmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICBpZiAodGhpcy5zb3VyY2UgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXQ7XG4gIH0gZWxzZSBpZiAodGhpcy50YXJnZXQgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2U7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgXCJOb2RlIGlzIG5vdCBpbmNpZGVudCB3aXRoIHRoaXMgZWRnZVwiO1xuICB9XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0T3RoZXJFbmRJbkdyYXBoID0gZnVuY3Rpb24gKG5vZGUsIGdyYXBoKSB7XG4gIHZhciBvdGhlckVuZCA9IHRoaXMuZ2V0T3RoZXJFbmQobm9kZSk7XG4gIHZhciByb290ID0gZ3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkuZ2V0Um9vdCgpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKG90aGVyRW5kLmdldE93bmVyKCkgPT0gZ3JhcGgpIHtcbiAgICAgIHJldHVybiBvdGhlckVuZDtcbiAgICB9XG5cbiAgICBpZiAob3RoZXJFbmQuZ2V0T3duZXIoKSA9PSByb290KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBvdGhlckVuZCA9IG90aGVyRW5kLmdldE93bmVyKCkuZ2V0UGFyZW50KCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS51cGRhdGVMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjbGlwUG9pbnRDb29yZGluYXRlcyA9IG5ldyBBcnJheSg0KTtcblxuICB0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldCA9IElHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24odGhpcy50YXJnZXQuZ2V0UmVjdCgpLCB0aGlzLnNvdXJjZS5nZXRSZWN0KCksIGNsaXBQb2ludENvb3JkaW5hdGVzKTtcblxuICBpZiAoIXRoaXMuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0KSB7XG4gICAgdGhpcy5sZW5ndGhYID0gY2xpcFBvaW50Q29vcmRpbmF0ZXNbMF0gLSBjbGlwUG9pbnRDb29yZGluYXRlc1syXTtcbiAgICB0aGlzLmxlbmd0aFkgPSBjbGlwUG9pbnRDb29yZGluYXRlc1sxXSAtIGNsaXBQb2ludENvb3JkaW5hdGVzWzNdO1xuXG4gICAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWCkgPCAxLjApIHtcbiAgICAgIHRoaXMubGVuZ3RoWCA9IElNYXRoLnNpZ24odGhpcy5sZW5ndGhYKTtcbiAgICB9XG5cbiAgICBpZiAoTWF0aC5hYnModGhpcy5sZW5ndGhZKSA8IDEuMCkge1xuICAgICAgdGhpcy5sZW5ndGhZID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFkpO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5zcXJ0KHRoaXMubGVuZ3RoWCAqIHRoaXMubGVuZ3RoWCArIHRoaXMubGVuZ3RoWSAqIHRoaXMubGVuZ3RoWSk7XG4gIH1cbn07XG5cbkxFZGdlLnByb3RvdHlwZS51cGRhdGVMZW5ndGhTaW1wbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubGVuZ3RoWCA9IHRoaXMudGFyZ2V0LmdldENlbnRlclgoKSAtIHRoaXMuc291cmNlLmdldENlbnRlclgoKTtcbiAgdGhpcy5sZW5ndGhZID0gdGhpcy50YXJnZXQuZ2V0Q2VudGVyWSgpIC0gdGhpcy5zb3VyY2UuZ2V0Q2VudGVyWSgpO1xuXG4gIGlmIChNYXRoLmFicyh0aGlzLmxlbmd0aFgpIDwgMS4wKSB7XG4gICAgdGhpcy5sZW5ndGhYID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFgpO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWSkgPCAxLjApIHtcbiAgICB0aGlzLmxlbmd0aFkgPSBJTWF0aC5zaWduKHRoaXMubGVuZ3RoWSk7XG4gIH1cblxuICB0aGlzLmxlbmd0aCA9IE1hdGguc3FydCh0aGlzLmxlbmd0aFggKiB0aGlzLmxlbmd0aFggKyB0aGlzLmxlbmd0aFkgKiB0aGlzLmxlbmd0aFkpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMRWRnZTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIExHcmFwaE9iamVjdCh2R3JhcGhPYmplY3QpIHtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2R3JhcGhPYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoT2JqZWN0O1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIFJlY3RhbmdsZUQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIFJhbmRvbVNlZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5mdW5jdGlvbiBMTm9kZShnbSwgbG9jLCBzaXplLCB2Tm9kZSkge1xuICAvL0FsdGVybmF0aXZlIGNvbnN0cnVjdG9yIDEgOiBMTm9kZShMR3JhcGhNYW5hZ2VyIGdtLCBQb2ludCBsb2MsIERpbWVuc2lvbiBzaXplLCBPYmplY3Qgdk5vZGUpXG4gIGlmIChzaXplID09IG51bGwgJiYgdk5vZGUgPT0gbnVsbCkge1xuICAgIHZOb2RlID0gbG9jO1xuICB9XG5cbiAgTEdyYXBoT2JqZWN0LmNhbGwodGhpcywgdk5vZGUpO1xuXG4gIC8vQWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgMiA6IExOb2RlKExheW91dCBsYXlvdXQsIE9iamVjdCB2Tm9kZSlcbiAgaWYgKGdtLmdyYXBoTWFuYWdlciAhPSBudWxsKSBnbSA9IGdtLmdyYXBoTWFuYWdlcjtcblxuICB0aGlzLmVzdGltYXRlZFNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgdGhpcy5pbmNsdXNpb25UcmVlRGVwdGggPSBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2Tm9kZTtcbiAgdGhpcy5lZGdlcyA9IFtdO1xuICB0aGlzLmdyYXBoTWFuYWdlciA9IGdtO1xuXG4gIGlmIChzaXplICE9IG51bGwgJiYgbG9jICE9IG51bGwpIHRoaXMucmVjdCA9IG5ldyBSZWN0YW5nbGVEKGxvYy54LCBsb2MueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO2Vsc2UgdGhpcy5yZWN0ID0gbmV3IFJlY3RhbmdsZUQoKTtcbn1cblxuTE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3AgaW4gTEdyYXBoT2JqZWN0KSB7XG4gIExOb2RlW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MTm9kZS5wcm90b3R5cGUuZ2V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmVkZ2VzO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jaGlsZDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRPd25lciA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gIGlmICh0aGlzLm93bmVyICE9IG51bGwpIHtcbiAgLy8gICAgaWYgKCEodGhpcy5vd25lciA9PSBudWxsIHx8IHRoaXMub3duZXIuZ2V0Tm9kZXMoKS5pbmRleE9mKHRoaXMpID4gLTEpKSB7XG4gIC8vICAgICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIC8vICAgIH1cbiAgLy8gIH1cblxuICByZXR1cm4gdGhpcy5vd25lcjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC53aWR0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLnJlY3Qud2lkdGggPSB3aWR0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QuaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5yZWN0LmhlaWdodCA9IGhlaWdodDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRDZW50ZXJYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGggLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENlbnRlclkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QueSArIHRoaXMucmVjdC5oZWlnaHQgLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGggLyAyLCB0aGlzLnJlY3QueSArIHRoaXMucmVjdC5oZWlnaHQgLyAyKTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy5yZWN0LngsIHRoaXMucmVjdC55KTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRSZWN0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldERpYWdvbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMucmVjdC53aWR0aCAqIHRoaXMucmVjdC53aWR0aCArIHRoaXMucmVjdC5oZWlnaHQgKiB0aGlzLnJlY3QuaGVpZ2h0KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBoYWxmIHRoZSBkaWFnb25hbCBsZW5ndGggb2YgdGhpcyBub2RlLlxuICovXG5MTm9kZS5wcm90b3R5cGUuZ2V0SGFsZlRoZURpYWdvbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMucmVjdC5oZWlnaHQgKiB0aGlzLnJlY3QuaGVpZ2h0ICsgdGhpcy5yZWN0LndpZHRoICogdGhpcy5yZWN0LndpZHRoKSAvIDI7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuc2V0UmVjdCA9IGZ1bmN0aW9uICh1cHBlckxlZnQsIGRpbWVuc2lvbikge1xuICB0aGlzLnJlY3QueCA9IHVwcGVyTGVmdC54O1xuICB0aGlzLnJlY3QueSA9IHVwcGVyTGVmdC55O1xuICB0aGlzLnJlY3Qud2lkdGggPSBkaW1lbnNpb24ud2lkdGg7XG4gIHRoaXMucmVjdC5oZWlnaHQgPSBkaW1lbnNpb24uaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldENlbnRlciA9IGZ1bmN0aW9uIChjeCwgY3kpIHtcbiAgdGhpcy5yZWN0LnggPSBjeCAtIHRoaXMucmVjdC53aWR0aCAvIDI7XG4gIHRoaXMucmVjdC55ID0gY3kgLSB0aGlzLnJlY3QuaGVpZ2h0IC8gMjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIHRoaXMucmVjdC54ID0geDtcbiAgdGhpcy5yZWN0LnkgPSB5O1xufTtcblxuTE5vZGUucHJvdG90eXBlLm1vdmVCeSA9IGZ1bmN0aW9uIChkeCwgZHkpIHtcbiAgdGhpcy5yZWN0LnggKz0gZHg7XG4gIHRoaXMucmVjdC55ICs9IGR5O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVkZ2VMaXN0VG9Ob2RlID0gZnVuY3Rpb24gKHRvKSB7XG4gIHZhciBlZGdlTGlzdCA9IFtdO1xuICB2YXIgZWRnZTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHNlbGYuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ID09IHRvKSB7XG4gICAgICBpZiAoZWRnZS5zb3VyY2UgIT0gc2VsZikgdGhyb3cgXCJJbmNvcnJlY3QgZWRnZSBzb3VyY2UhXCI7XG5cbiAgICAgIGVkZ2VMaXN0LnB1c2goZWRnZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWRnZUxpc3Q7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0RWRnZXNCZXR3ZWVuID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIHZhciBlZGdlTGlzdCA9IFtdO1xuICB2YXIgZWRnZTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHNlbGYuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuXG4gICAgaWYgKCEoZWRnZS5zb3VyY2UgPT0gc2VsZiB8fCBlZGdlLnRhcmdldCA9PSBzZWxmKSkgdGhyb3cgXCJJbmNvcnJlY3QgZWRnZSBzb3VyY2UgYW5kL29yIHRhcmdldFwiO1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ID09IG90aGVyIHx8IGVkZ2Uuc291cmNlID09IG90aGVyKSB7XG4gICAgICBlZGdlTGlzdC5wdXNoKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VMaXN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldE5laWdoYm9yc0xpc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBuZXcgU2V0KCk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzZWxmLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcblxuICAgIGlmIChlZGdlLnNvdXJjZSA9PSBzZWxmKSB7XG4gICAgICBuZWlnaGJvcnMuYWRkKGVkZ2UudGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGVkZ2UudGFyZ2V0ICE9IHNlbGYpIHtcbiAgICAgICAgdGhyb3cgXCJJbmNvcnJlY3QgaW5jaWRlbmN5IVwiO1xuICAgICAgfVxuXG4gICAgICBuZWlnaGJvcnMuYWRkKGVkZ2Uuc291cmNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBuZWlnaGJvcnM7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUud2l0aENoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgd2l0aE5laWdoYm9yc0xpc3QgPSBuZXcgU2V0KCk7XG4gIHZhciBjaGlsZE5vZGU7XG4gIHZhciBjaGlsZHJlbjtcblxuICB3aXRoTmVpZ2hib3JzTGlzdC5hZGQodGhpcyk7XG5cbiAgaWYgKHRoaXMuY2hpbGQgIT0gbnVsbCkge1xuICAgIHZhciBub2RlcyA9IHRoaXMuY2hpbGQuZ2V0Tm9kZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZE5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNoaWxkcmVuID0gY2hpbGROb2RlLndpdGhDaGlsZHJlbigpO1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB3aXRoTmVpZ2hib3JzTGlzdC5hZGQobm9kZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gd2l0aE5laWdoYm9yc0xpc3Q7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Tm9PZkNoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm9PZkNoaWxkcmVuID0gMDtcbiAgdmFyIGNoaWxkTm9kZTtcblxuICBpZiAodGhpcy5jaGlsZCA9PSBudWxsKSB7XG4gICAgbm9PZkNoaWxkcmVuID0gMTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmNoaWxkLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGROb2RlID0gbm9kZXNbaV07XG5cbiAgICAgIG5vT2ZDaGlsZHJlbiArPSBjaGlsZE5vZGUuZ2V0Tm9PZkNoaWxkcmVuKCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5vT2ZDaGlsZHJlbiA9PSAwKSB7XG4gICAgbm9PZkNoaWxkcmVuID0gMTtcbiAgfVxuICByZXR1cm4gbm9PZkNoaWxkcmVuO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVzdGltYXRlZFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmVzdGltYXRlZFNpemUgPT0gSW50ZWdlci5NSU5fVkFMVUUpIHtcbiAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgfVxuICByZXR1cm4gdGhpcy5lc3RpbWF0ZWRTaXplO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmNhbGNFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jaGlsZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZSA9ICh0aGlzLnJlY3Qud2lkdGggKyB0aGlzLnJlY3QuaGVpZ2h0KSAvIDI7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gdGhpcy5jaGlsZC5jYWxjRXN0aW1hdGVkU2l6ZSgpO1xuICAgIHRoaXMucmVjdC53aWR0aCA9IHRoaXMuZXN0aW1hdGVkU2l6ZTtcbiAgICB0aGlzLnJlY3QuaGVpZ2h0ID0gdGhpcy5lc3RpbWF0ZWRTaXplO1xuXG4gICAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbiAgfVxufTtcblxuTE5vZGUucHJvdG90eXBlLnNjYXR0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciByYW5kb21DZW50ZXJYO1xuICB2YXIgcmFuZG9tQ2VudGVyWTtcblxuICB2YXIgbWluWCA9IC1MYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWTtcbiAgdmFyIG1heFggPSBMYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWTtcbiAgcmFuZG9tQ2VudGVyWCA9IExheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWCArIFJhbmRvbVNlZWQubmV4dERvdWJsZSgpICogKG1heFggLSBtaW5YKSArIG1pblg7XG5cbiAgdmFyIG1pblkgPSAtTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHZhciBtYXhZID0gTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHJhbmRvbUNlbnRlclkgPSBMYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1kgKyBSYW5kb21TZWVkLm5leHREb3VibGUoKSAqIChtYXhZIC0gbWluWSkgKyBtaW5ZO1xuXG4gIHRoaXMucmVjdC54ID0gcmFuZG9tQ2VudGVyWDtcbiAgdGhpcy5yZWN0LnkgPSByYW5kb21DZW50ZXJZO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgaWYgKHRoaXMuZ2V0Q2hpbGQoKS5nZXROb2RlcygpLmxlbmd0aCAhPSAwKSB7XG4gICAgLy8gd3JhcCB0aGUgY2hpbGRyZW4gbm9kZXMgYnkgcmUtYXJyYW5naW5nIHRoZSBib3VuZGFyaWVzXG4gICAgdmFyIGNoaWxkR3JhcGggPSB0aGlzLmdldENoaWxkKCk7XG4gICAgY2hpbGRHcmFwaC51cGRhdGVCb3VuZHModHJ1ZSk7XG5cbiAgICB0aGlzLnJlY3QueCA9IGNoaWxkR3JhcGguZ2V0TGVmdCgpO1xuICAgIHRoaXMucmVjdC55ID0gY2hpbGRHcmFwaC5nZXRUb3AoKTtcblxuICAgIHRoaXMuc2V0V2lkdGgoY2hpbGRHcmFwaC5nZXRSaWdodCgpIC0gY2hpbGRHcmFwaC5nZXRMZWZ0KCkpO1xuICAgIHRoaXMuc2V0SGVpZ2h0KGNoaWxkR3JhcGguZ2V0Qm90dG9tKCkgLSBjaGlsZEdyYXBoLmdldFRvcCgpKTtcblxuICAgIC8vIFVwZGF0ZSBjb21wb3VuZCBib3VuZHMgY29uc2lkZXJpbmcgaXRzIGxhYmVsIHByb3BlcnRpZXMgICAgXG4gICAgaWYgKExheW91dENvbnN0YW50cy5OT0RFX0RJTUVOU0lPTlNfSU5DTFVERV9MQUJFTFMpIHtcblxuICAgICAgdmFyIHdpZHRoID0gY2hpbGRHcmFwaC5nZXRSaWdodCgpIC0gY2hpbGRHcmFwaC5nZXRMZWZ0KCk7XG4gICAgICB2YXIgaGVpZ2h0ID0gY2hpbGRHcmFwaC5nZXRCb3R0b20oKSAtIGNoaWxkR3JhcGguZ2V0VG9wKCk7XG5cbiAgICAgIGlmICh0aGlzLmxhYmVsV2lkdGggPiB3aWR0aCkge1xuICAgICAgICB0aGlzLnJlY3QueCAtPSAodGhpcy5sYWJlbFdpZHRoIC0gd2lkdGgpIC8gMjtcbiAgICAgICAgdGhpcy5zZXRXaWR0aCh0aGlzLmxhYmVsV2lkdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5sYWJlbEhlaWdodCA+IGhlaWdodCkge1xuICAgICAgICBpZiAodGhpcy5sYWJlbFBvcyA9PSBcImNlbnRlclwiKSB7XG4gICAgICAgICAgdGhpcy5yZWN0LnkgLT0gKHRoaXMubGFiZWxIZWlnaHQgLSBoZWlnaHQpIC8gMjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsUG9zID09IFwidG9wXCIpIHtcbiAgICAgICAgICB0aGlzLnJlY3QueSAtPSB0aGlzLmxhYmVsSGVpZ2h0IC0gaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KHRoaXMubGFiZWxIZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEluY2x1c2lvblRyZWVEZXB0aCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0cmFucykge1xuICB2YXIgbGVmdCA9IHRoaXMucmVjdC54O1xuXG4gIGlmIChsZWZ0ID4gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZKSB7XG4gICAgbGVmdCA9IExheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWTtcbiAgfSBlbHNlIGlmIChsZWZ0IDwgLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIGxlZnQgPSAtTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZO1xuICB9XG5cbiAgdmFyIHRvcCA9IHRoaXMucmVjdC55O1xuXG4gIGlmICh0b3AgPiBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkpIHtcbiAgICB0b3AgPSBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH0gZWxzZSBpZiAodG9wIDwgLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIHRvcCA9IC1MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH1cblxuICB2YXIgbGVmdFRvcCA9IG5ldyBQb2ludEQobGVmdCwgdG9wKTtcbiAgdmFyIHZMZWZ0VG9wID0gdHJhbnMuaW52ZXJzZVRyYW5zZm9ybVBvaW50KGxlZnRUb3ApO1xuXG4gIHRoaXMuc2V0TG9jYXRpb24odkxlZnRUb3AueCwgdkxlZnRUb3AueSk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0TGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC54O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFJpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGg7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0Lnk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Qm90dG9tID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnkgKyB0aGlzLnJlY3QuaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMub3duZXIgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMub3duZXIuZ2V0UGFyZW50KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExOb2RlO1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gUG9pbnREKHgsIHkpIHtcbiAgaWYgKHggPT0gbnVsbCAmJiB5ID09IG51bGwpIHtcbiAgICB0aGlzLnggPSAwO1xuICAgIHRoaXMueSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG59XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueDtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gIHRoaXMueCA9IHg7XG59O1xuXG5Qb2ludEQucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICB0aGlzLnkgPSB5O1xufTtcblxuUG9pbnRELnByb3RvdHlwZS5nZXREaWZmZXJlbmNlID0gZnVuY3Rpb24gKHB0KSB7XG4gIHJldHVybiBuZXcgRGltZW5zaW9uRCh0aGlzLnggLSBwdC54LCB0aGlzLnkgLSBwdC55KTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0Q29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy54LCB0aGlzLnkpO1xufTtcblxuUG9pbnRELnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiAoZGltKSB7XG4gIHRoaXMueCArPSBkaW0ud2lkdGg7XG4gIHRoaXMueSArPSBkaW0uaGVpZ2h0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUG9pbnREO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgTEdyYXBoTWFuYWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xudmFyIExFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBSZWN0YW5nbGVEID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgUG9pbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbnZhciBMaW5rZWRMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbmZ1bmN0aW9uIExHcmFwaChwYXJlbnQsIG9iajIsIHZHcmFwaCkge1xuICBMR3JhcGhPYmplY3QuY2FsbCh0aGlzLCB2R3JhcGgpO1xuICB0aGlzLmVzdGltYXRlZFNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgdGhpcy5tYXJnaW4gPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFQSF9NQVJHSU47XG4gIHRoaXMuZWRnZXMgPSBbXTtcbiAgdGhpcy5ub2RlcyA9IFtdO1xuICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gIHRoaXMucGFyZW50ID0gcGFyZW50O1xuXG4gIGlmIChvYmoyICE9IG51bGwgJiYgb2JqMiBpbnN0YW5jZW9mIExHcmFwaE1hbmFnZXIpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlciA9IG9iajI7XG4gIH0gZWxzZSBpZiAob2JqMiAhPSBudWxsICYmIG9iajIgaW5zdGFuY2VvZiBMYXlvdXQpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlciA9IG9iajIuZ3JhcGhNYW5hZ2VyO1xuICB9XG59XG5cbkxHcmFwaC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExHcmFwaE9iamVjdC5wcm90b3R5cGUpO1xuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhPYmplY3QpIHtcbiAgTEdyYXBoW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MR3JhcGgucHJvdG90eXBlLmdldE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2Rlcztcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmVkZ2VzO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlcjtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0UGFyZW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxlZnQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldFJpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yaWdodDtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50b3A7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldEJvdHRvbSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuYm90dG9tO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5pc0Nvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaXNDb25uZWN0ZWQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvYmoxLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSB7XG4gIGlmIChzb3VyY2VOb2RlID09IG51bGwgJiYgdGFyZ2V0Tm9kZSA9PSBudWxsKSB7XG4gICAgdmFyIG5ld05vZGUgPSBvYmoxO1xuICAgIGlmICh0aGlzLmdyYXBoTWFuYWdlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkdyYXBoIGhhcyBubyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmdldE5vZGVzKCkuaW5kZXhPZihuZXdOb2RlKSA+IC0xKSB7XG4gICAgICB0aHJvdyBcIk5vZGUgYWxyZWFkeSBpbiBncmFwaCFcIjtcbiAgICB9XG4gICAgbmV3Tm9kZS5vd25lciA9IHRoaXM7XG4gICAgdGhpcy5nZXROb2RlcygpLnB1c2gobmV3Tm9kZSk7XG5cbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbmV3RWRnZSA9IG9iajE7XG4gICAgaWYgKCEodGhpcy5nZXROb2RlcygpLmluZGV4T2Yoc291cmNlTm9kZSkgPiAtMSAmJiB0aGlzLmdldE5vZGVzKCkuaW5kZXhPZih0YXJnZXROb2RlKSA+IC0xKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2Ugb3IgdGFyZ2V0IG5vdCBpbiBncmFwaCFcIjtcbiAgICB9XG5cbiAgICBpZiAoIShzb3VyY2VOb2RlLm93bmVyID09IHRhcmdldE5vZGUub3duZXIgJiYgc291cmNlTm9kZS5vd25lciA9PSB0aGlzKSkge1xuICAgICAgdGhyb3cgXCJCb3RoIG93bmVycyBtdXN0IGJlIHRoaXMgZ3JhcGghXCI7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZU5vZGUub3duZXIgIT0gdGFyZ2V0Tm9kZS5vd25lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNvdXJjZSBhbmQgdGFyZ2V0XG4gICAgbmV3RWRnZS5zb3VyY2UgPSBzb3VyY2VOb2RlO1xuICAgIG5ld0VkZ2UudGFyZ2V0ID0gdGFyZ2V0Tm9kZTtcblxuICAgIC8vIHNldCBhcyBpbnRyYS1ncmFwaCBlZGdlXG4gICAgbmV3RWRnZS5pc0ludGVyR3JhcGggPSBmYWxzZTtcblxuICAgIC8vIGFkZCB0byBncmFwaCBlZGdlIGxpc3RcbiAgICB0aGlzLmdldEVkZ2VzKCkucHVzaChuZXdFZGdlKTtcblxuICAgIC8vIGFkZCB0byBpbmNpZGVuY3kgbGlzdHNcbiAgICBzb3VyY2VOb2RlLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSAhPSBzb3VyY2VOb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0VkZ2U7XG4gIH1cbn07XG5cbkxHcmFwaC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgbm9kZSA9IG9iajtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIExOb2RlKSB7XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJOb2RlIGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmICghKG5vZGUub3duZXIgIT0gbnVsbCAmJiBub2RlLm93bmVyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIk93bmVyIGdyYXBoIGlzIGludmFsaWQhXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmdyYXBoTWFuYWdlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIk93bmVyIGdyYXBoIG1hbmFnZXIgaXMgaW52YWxpZCFcIjtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIGluY2lkZW50IGVkZ2VzIGZpcnN0IChtYWtlIGEgY29weSB0byBkbyBpdCBzYWZlbHkpXG4gICAgdmFyIGVkZ2VzVG9CZVJlbW92ZWQgPSBub2RlLmVkZ2VzLnNsaWNlKCk7XG4gICAgdmFyIGVkZ2U7XG4gICAgdmFyIHMgPSBlZGdlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgZWRnZSA9IGVkZ2VzVG9CZVJlbW92ZWRbaV07XG5cbiAgICAgIGlmIChlZGdlLmlzSW50ZXJHcmFwaCkge1xuICAgICAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUoZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLnNvdXJjZS5vd25lci5yZW1vdmUoZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbm93IHRoZSBub2RlIGl0c2VsZlxuICAgIHZhciBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm9kZSBub3QgaW4gb3duZXIgbm9kZSBsaXN0IVwiO1xuICAgIH1cblxuICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBMRWRnZSkge1xuICAgIHZhciBlZGdlID0gb2JqO1xuICAgIGlmIChlZGdlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiRWRnZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZSAhPSBudWxsICYmIGVkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmICghKGVkZ2Uuc291cmNlLm93bmVyICE9IG51bGwgJiYgZWRnZS50YXJnZXQub3duZXIgIT0gbnVsbCAmJiBlZGdlLnNvdXJjZS5vd25lciA9PSB0aGlzICYmIGVkZ2UudGFyZ2V0Lm93bmVyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IG93bmVyIGlzIGludmFsaWQhXCI7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZUluZGV4ID0gZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICB2YXIgdGFyZ2V0SW5kZXggPSBlZGdlLnRhcmdldC5lZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmICghKHNvdXJjZUluZGV4ID4gLTEgJiYgdGFyZ2V0SW5kZXggPiAtMSkpIHtcbiAgICAgIHRocm93IFwiU291cmNlIGFuZC9vciB0YXJnZXQgZG9lc24ndCBrbm93IHRoaXMgZWRnZSFcIjtcbiAgICB9XG5cbiAgICBlZGdlLnNvdXJjZS5lZGdlcy5zcGxpY2Uoc291cmNlSW5kZXgsIDEpO1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ICE9IGVkZ2Uuc291cmNlKSB7XG4gICAgICBlZGdlLnRhcmdldC5lZGdlcy5zcGxpY2UodGFyZ2V0SW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGVkZ2Uuc291cmNlLm93bmVyLmdldEVkZ2VzKCkuaW5kZXhPZihlZGdlKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm90IGluIG93bmVyJ3MgZWRnZSBsaXN0IVwiO1xuICAgIH1cblxuICAgIGVkZ2Uuc291cmNlLm93bmVyLmdldEVkZ2VzKCkuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufTtcblxuTEdyYXBoLnByb3RvdHlwZS51cGRhdGVMZWZ0VG9wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdG9wID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBtYXJnaW47XG5cbiAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGVUb3AgPSBsTm9kZS5nZXRUb3AoKTtcbiAgICBub2RlTGVmdCA9IGxOb2RlLmdldExlZnQoKTtcblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG4gIH1cblxuICAvLyBEbyB3ZSBoYXZlIGFueSBub2RlcyBpbiB0aGlzIGdyYXBoP1xuICBpZiAodG9wID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAobm9kZXNbMF0uZ2V0UGFyZW50KCkucGFkZGluZ0xlZnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgbWFyZ2luID0gbm9kZXNbMF0uZ2V0UGFyZW50KCkucGFkZGluZ0xlZnQ7XG4gIH0gZWxzZSB7XG4gICAgbWFyZ2luID0gdGhpcy5tYXJnaW47XG4gIH1cblxuICB0aGlzLmxlZnQgPSBsZWZ0IC0gbWFyZ2luO1xuICB0aGlzLnRvcCA9IHRvcCAtIG1hcmdpbjtcblxuICAvLyBBcHBseSB0aGUgbWFyZ2lucyBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmxlZnQsIHRoaXMudG9wKTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUudXBkYXRlQm91bmRzID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAvLyBjYWxjdWxhdGUgYm91bmRzXG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciByaWdodCA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgYm90dG9tID0gLUludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBub2RlUmlnaHQ7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUJvdHRvbTtcbiAgdmFyIG1hcmdpbjtcblxuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzO1xuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmIChyZWN1cnNpdmUgJiYgbE5vZGUuY2hpbGQgIT0gbnVsbCkge1xuICAgICAgbE5vZGUudXBkYXRlQm91bmRzKCk7XG4gICAgfVxuICAgIG5vZGVMZWZ0ID0gbE5vZGUuZ2V0TGVmdCgpO1xuICAgIG5vZGVSaWdodCA9IGxOb2RlLmdldFJpZ2h0KCk7XG4gICAgbm9kZVRvcCA9IGxOb2RlLmdldFRvcCgpO1xuICAgIG5vZGVCb3R0b20gPSBsTm9kZS5nZXRCb3R0b20oKTtcblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQgPCBub2RlUmlnaHQpIHtcbiAgICAgIHJpZ2h0ID0gbm9kZVJpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPCBub2RlQm90dG9tKSB7XG4gICAgICBib3R0b20gPSBub2RlQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHZhciBib3VuZGluZ1JlY3QgPSBuZXcgUmVjdGFuZ2xlRChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcbiAgaWYgKGxlZnQgPT0gSW50ZWdlci5NQVhfVkFMVUUpIHtcbiAgICB0aGlzLmxlZnQgPSB0aGlzLnBhcmVudC5nZXRMZWZ0KCk7XG4gICAgdGhpcy5yaWdodCA9IHRoaXMucGFyZW50LmdldFJpZ2h0KCk7XG4gICAgdGhpcy50b3AgPSB0aGlzLnBhcmVudC5nZXRUb3AoKTtcbiAgICB0aGlzLmJvdHRvbSA9IHRoaXMucGFyZW50LmdldEJvdHRvbSgpO1xuICB9XG5cbiAgaWYgKG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0ICE9IHVuZGVmaW5lZCkge1xuICAgIG1hcmdpbiA9IG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0O1xuICB9IGVsc2Uge1xuICAgIG1hcmdpbiA9IHRoaXMubWFyZ2luO1xuICB9XG5cbiAgdGhpcy5sZWZ0ID0gYm91bmRpbmdSZWN0LnggLSBtYXJnaW47XG4gIHRoaXMucmlnaHQgPSBib3VuZGluZ1JlY3QueCArIGJvdW5kaW5nUmVjdC53aWR0aCArIG1hcmdpbjtcbiAgdGhpcy50b3AgPSBib3VuZGluZ1JlY3QueSAtIG1hcmdpbjtcbiAgdGhpcy5ib3R0b20gPSBib3VuZGluZ1JlY3QueSArIGJvdW5kaW5nUmVjdC5oZWlnaHQgKyBtYXJnaW47XG59O1xuXG5MR3JhcGguY2FsY3VsYXRlQm91bmRzID0gZnVuY3Rpb24gKG5vZGVzKSB7XG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciByaWdodCA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgYm90dG9tID0gLUludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBub2RlUmlnaHQ7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUJvdHRvbTtcblxuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGVMZWZ0ID0gbE5vZGUuZ2V0TGVmdCgpO1xuICAgIG5vZGVSaWdodCA9IGxOb2RlLmdldFJpZ2h0KCk7XG4gICAgbm9kZVRvcCA9IGxOb2RlLmdldFRvcCgpO1xuICAgIG5vZGVCb3R0b20gPSBsTm9kZS5nZXRCb3R0b20oKTtcblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQgPCBub2RlUmlnaHQpIHtcbiAgICAgIHJpZ2h0ID0gbm9kZVJpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPCBub2RlQm90dG9tKSB7XG4gICAgICBib3R0b20gPSBub2RlQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHZhciBib3VuZGluZ1JlY3QgPSBuZXcgUmVjdGFuZ2xlRChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcblxuICByZXR1cm4gYm91bmRpbmdSZWN0O1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRJbmNsdXNpb25UcmVlRGVwdGggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzID09IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRJbmNsdXNpb25UcmVlRGVwdGgoKTtcbiAgfVxufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5lc3RpbWF0ZWRTaXplID09IEludGVnZXIuTUlOX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuY2FsY0VzdGltYXRlZFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcztcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICBzaXplICs9IGxOb2RlLmNhbGNFc3RpbWF0ZWRTaXplKCk7XG4gIH1cblxuICBpZiAoc2l6ZSA9PSAwKSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gTGF5b3V0Q29uc3RhbnRzLkVNUFRZX0NPTVBPVU5EX05PREVfU0laRTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmVzdGltYXRlZFNpemUgPSBzaXplIC8gTWF0aC5zcXJ0KHRoaXMubm9kZXMubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVzdGltYXRlZFNpemU7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAodGhpcy5ub2Rlcy5sZW5ndGggPT0gMCkge1xuICAgIHRoaXMuaXNDb25uZWN0ZWQgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBxdWV1ZSA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLm5vZGVzWzBdO1xuICB2YXIgbmVpZ2hib3JFZGdlcztcbiAgdmFyIGN1cnJlbnROZWlnaGJvcjtcbiAgdmFyIGNoaWxkcmVuT2ZOb2RlID0gY3VycmVudE5vZGUud2l0aENoaWxkcmVuKCk7XG4gIGNoaWxkcmVuT2ZOb2RlLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBxdWV1ZS5wdXNoKG5vZGUpO1xuICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICB9KTtcblxuICB3aGlsZSAocXVldWUubGVuZ3RoICE9PSAwKSB7XG4gICAgY3VycmVudE5vZGUgPSBxdWV1ZS5zaGlmdCgpO1xuXG4gICAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgICBuZWlnaGJvckVkZ2VzID0gY3VycmVudE5vZGUuZ2V0RWRnZXMoKTtcbiAgICB2YXIgc2l6ZSA9IG5laWdoYm9yRWRnZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YXIgbmVpZ2hib3JFZGdlID0gbmVpZ2hib3JFZGdlc1tpXTtcbiAgICAgIGN1cnJlbnROZWlnaGJvciA9IG5laWdoYm9yRWRnZS5nZXRPdGhlckVuZEluR3JhcGgoY3VycmVudE5vZGUsIHRoaXMpO1xuXG4gICAgICAvLyBBZGQgdW52aXNpdGVkIG5laWdoYm9ycyB0byB0aGUgbGlzdCB0byB2aXNpdFxuICAgICAgaWYgKGN1cnJlbnROZWlnaGJvciAhPSBudWxsICYmICF2aXNpdGVkLmhhcyhjdXJyZW50TmVpZ2hib3IpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbk9mTmVpZ2hib3IgPSBjdXJyZW50TmVpZ2hib3Iud2l0aENoaWxkcmVuKCk7XG5cbiAgICAgICAgY2hpbGRyZW5PZk5laWdoYm9yLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICBxdWV1ZS5wdXNoKG5vZGUpO1xuICAgICAgICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG5cbiAgaWYgKHZpc2l0ZWQuc2l6ZSA+PSB0aGlzLm5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBub09mVmlzaXRlZEluVGhpc0dyYXBoID0gMDtcblxuICAgIHZpc2l0ZWQuZm9yRWFjaChmdW5jdGlvbiAodmlzaXRlZE5vZGUpIHtcbiAgICAgIGlmICh2aXNpdGVkTm9kZS5vd25lciA9PSBzZWxmKSB7XG4gICAgICAgIG5vT2ZWaXNpdGVkSW5UaGlzR3JhcGgrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChub09mVmlzaXRlZEluVGhpc0dyYXBoID09IHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzQ29ubmVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoO1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaDtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbmZ1bmN0aW9uIExHcmFwaE1hbmFnZXIobGF5b3V0KSB7XG4gIExHcmFwaCA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7IC8vIEl0IG1heSBiZSBiZXR0ZXIgdG8gaW5pdGlsaXplIHRoaXMgb3V0IG9mIHRoaXMgZnVuY3Rpb24gYnV0IGl0IGdpdmVzIGFuIGVycm9yIChSaWdodC1oYW5kIHNpZGUgb2YgJ2luc3RhbmNlb2YnIGlzIG5vdCBjYWxsYWJsZSkgbm93LlxuICB0aGlzLmxheW91dCA9IGxheW91dDtcblxuICB0aGlzLmdyYXBocyA9IFtdO1xuICB0aGlzLmVkZ2VzID0gW107XG59XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmFkZFJvb3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZ3JhcGggPSB0aGlzLmxheW91dC5uZXdHcmFwaCgpO1xuICB2YXIgbm5vZGUgPSB0aGlzLmxheW91dC5uZXdOb2RlKG51bGwpO1xuICB2YXIgcm9vdCA9IHRoaXMuYWRkKG5ncmFwaCwgbm5vZGUpO1xuICB0aGlzLnNldFJvb3RHcmFwaChyb290KTtcbiAgcmV0dXJuIHRoaXMucm9vdEdyYXBoO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG5ld0dyYXBoLCBwYXJlbnROb2RlLCBuZXdFZGdlLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSB7XG4gIC8vdGhlcmUgYXJlIGp1c3QgMiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdGhlbiBpdCBhZGRzIGFuIExHcmFwaCBlbHNlIGl0IGFkZHMgYW4gTEVkZ2VcbiAgaWYgKG5ld0VkZ2UgPT0gbnVsbCAmJiBzb3VyY2VOb2RlID09IG51bGwgJiYgdGFyZ2V0Tm9kZSA9PSBudWxsKSB7XG4gICAgaWYgKG5ld0dyYXBoID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiR3JhcGggaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKHBhcmVudE5vZGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJQYXJlbnQgbm9kZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncmFwaHMuaW5kZXhPZihuZXdHcmFwaCkgPiAtMSkge1xuICAgICAgdGhyb3cgXCJHcmFwaCBhbHJlYWR5IGluIHRoaXMgZ3JhcGggbWdyIVwiO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhcGhzLnB1c2gobmV3R3JhcGgpO1xuXG4gICAgaWYgKG5ld0dyYXBoLnBhcmVudCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkFscmVhZHkgaGFzIGEgcGFyZW50IVwiO1xuICAgIH1cbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkFscmVhZHkgaGFzIGEgY2hpbGQhXCI7XG4gICAgfVxuXG4gICAgbmV3R3JhcGgucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICBwYXJlbnROb2RlLmNoaWxkID0gbmV3R3JhcGg7XG5cbiAgICByZXR1cm4gbmV3R3JhcGg7XG4gIH0gZWxzZSB7XG4gICAgLy9jaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBwYXJhbWV0ZXJzXG4gICAgdGFyZ2V0Tm9kZSA9IG5ld0VkZ2U7XG4gICAgc291cmNlTm9kZSA9IHBhcmVudE5vZGU7XG4gICAgbmV3RWRnZSA9IG5ld0dyYXBoO1xuICAgIHZhciBzb3VyY2VHcmFwaCA9IHNvdXJjZU5vZGUuZ2V0T3duZXIoKTtcbiAgICB2YXIgdGFyZ2V0R3JhcGggPSB0YXJnZXROb2RlLmdldE93bmVyKCk7XG5cbiAgICBpZiAoIShzb3VyY2VHcmFwaCAhPSBudWxsICYmIHNvdXJjZUdyYXBoLmdldEdyYXBoTWFuYWdlcigpID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBub3QgaW4gdGhpcyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuICAgIGlmICghKHRhcmdldEdyYXBoICE9IG51bGwgJiYgdGFyZ2V0R3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiVGFyZ2V0IG5vdCBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlR3JhcGggPT0gdGFyZ2V0R3JhcGgpIHtcbiAgICAgIG5ld0VkZ2UuaXNJbnRlckdyYXBoID0gZmFsc2U7XG4gICAgICByZXR1cm4gc291cmNlR3JhcGguYWRkKG5ld0VkZ2UsIHNvdXJjZU5vZGUsIHRhcmdldE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdFZGdlLmlzSW50ZXJHcmFwaCA9IHRydWU7XG5cbiAgICAgIC8vIHNldCBzb3VyY2UgYW5kIHRhcmdldFxuICAgICAgbmV3RWRnZS5zb3VyY2UgPSBzb3VyY2VOb2RlO1xuICAgICAgbmV3RWRnZS50YXJnZXQgPSB0YXJnZXROb2RlO1xuXG4gICAgICAvLyBhZGQgZWRnZSB0byBpbnRlci1ncmFwaCBlZGdlIGxpc3RcbiAgICAgIGlmICh0aGlzLmVkZ2VzLmluZGV4T2YobmV3RWRnZSkgPiAtMSkge1xuICAgICAgICB0aHJvdyBcIkVkZ2UgYWxyZWFkeSBpbiBpbnRlci1ncmFwaCBlZGdlIGxpc3QhXCI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZWRnZXMucHVzaChuZXdFZGdlKTtcblxuICAgICAgLy8gYWRkIGVkZ2UgdG8gc291cmNlIGFuZCB0YXJnZXQgaW5jaWRlbmN5IGxpc3RzXG4gICAgICBpZiAoIShuZXdFZGdlLnNvdXJjZSAhPSBudWxsICYmIG5ld0VkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICAgIHRocm93IFwiRWRnZSBzb3VyY2UgYW5kL29yIHRhcmdldCBpcyBudWxsIVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShuZXdFZGdlLnNvdXJjZS5lZGdlcy5pbmRleE9mKG5ld0VkZ2UpID09IC0xICYmIG5ld0VkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YobmV3RWRnZSkgPT0gLTEpKSB7XG4gICAgICAgIHRocm93IFwiRWRnZSBhbHJlYWR5IGluIHNvdXJjZSBhbmQvb3IgdGFyZ2V0IGluY2lkZW5jeSBsaXN0IVwiO1xuICAgICAgfVxuXG4gICAgICBuZXdFZGdlLnNvdXJjZS5lZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgICAgbmV3RWRnZS50YXJnZXQuZWRnZXMucHVzaChuZXdFZGdlKTtcblxuICAgICAgcmV0dXJuIG5ld0VkZ2U7XG4gICAgfVxuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAobE9iaikge1xuICBpZiAobE9iaiBpbnN0YW5jZW9mIExHcmFwaCkge1xuICAgIHZhciBncmFwaCA9IGxPYmo7XG4gICAgaWYgKGdyYXBoLmdldEdyYXBoTWFuYWdlcigpICE9IHRoaXMpIHtcbiAgICAgIHRocm93IFwiR3JhcGggbm90IGluIHRoaXMgZ3JhcGggbWdyXCI7XG4gICAgfVxuICAgIGlmICghKGdyYXBoID09IHRoaXMucm9vdEdyYXBoIHx8IGdyYXBoLnBhcmVudCAhPSBudWxsICYmIGdyYXBoLnBhcmVudC5ncmFwaE1hbmFnZXIgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiSW52YWxpZCBwYXJlbnQgbm9kZSFcIjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdCB0aGUgZWRnZXMgKG1ha2UgYSBjb3B5IHRvIGRvIGl0IHNhZmVseSlcbiAgICB2YXIgZWRnZXNUb0JlUmVtb3ZlZCA9IFtdO1xuXG4gICAgZWRnZXNUb0JlUmVtb3ZlZCA9IGVkZ2VzVG9CZVJlbW92ZWQuY29uY2F0KGdyYXBoLmdldEVkZ2VzKCkpO1xuXG4gICAgdmFyIGVkZ2U7XG4gICAgdmFyIHMgPSBlZGdlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgZWRnZSA9IGVkZ2VzVG9CZVJlbW92ZWRbaV07XG4gICAgICBncmFwaC5yZW1vdmUoZWRnZSk7XG4gICAgfVxuXG4gICAgLy8gdGhlbiB0aGUgbm9kZXMgKG1ha2UgYSBjb3B5IHRvIGRvIGl0IHNhZmVseSlcbiAgICB2YXIgbm9kZXNUb0JlUmVtb3ZlZCA9IFtdO1xuXG4gICAgbm9kZXNUb0JlUmVtb3ZlZCA9IG5vZGVzVG9CZVJlbW92ZWQuY29uY2F0KGdyYXBoLmdldE5vZGVzKCkpO1xuXG4gICAgdmFyIG5vZGU7XG4gICAgcyA9IG5vZGVzVG9CZVJlbW92ZWQubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICBub2RlID0gbm9kZXNUb0JlUmVtb3ZlZFtpXTtcbiAgICAgIGdyYXBoLnJlbW92ZShub2RlKTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBncmFwaCBpcyB0aGUgcm9vdFxuICAgIGlmIChncmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgdGhpcy5zZXRSb290R3JhcGgobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHJlbW92ZSB0aGUgZ3JhcGggaXRzZWxmXG4gICAgdmFyIGluZGV4ID0gdGhpcy5ncmFwaHMuaW5kZXhPZihncmFwaCk7XG4gICAgdGhpcy5ncmFwaHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIC8vIGFsc28gcmVzZXQgdGhlIHBhcmVudCBvZiB0aGUgZ3JhcGhcbiAgICBncmFwaC5wYXJlbnQgPSBudWxsO1xuICB9IGVsc2UgaWYgKGxPYmogaW5zdGFuY2VvZiBMRWRnZSkge1xuICAgIGVkZ2UgPSBsT2JqO1xuICAgIGlmIChlZGdlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiRWRnZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIWVkZ2UuaXNJbnRlckdyYXBoKSB7XG4gICAgICB0aHJvdyBcIk5vdCBhbiBpbnRlci1ncmFwaCBlZGdlIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZSAhPSBudWxsICYmIGVkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGlzIG51bGwhXCI7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGVkZ2UgZnJvbSBzb3VyY2UgYW5kIHRhcmdldCBub2RlcycgaW5jaWRlbmN5IGxpc3RzXG5cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5lZGdlcy5pbmRleE9mKGVkZ2UpICE9IC0xICYmIGVkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YoZWRnZSkgIT0gLTEpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGRvZXNuJ3Qga25vdyB0aGlzIGVkZ2UhXCI7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnNvdXJjZS5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGluZGV4ID0gZWRnZS50YXJnZXQuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnRhcmdldC5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgLy8gcmVtb3ZlIGVkZ2UgZnJvbSBvd25lciBncmFwaCBtYW5hZ2VyJ3MgaW50ZXItZ3JhcGggZWRnZSBsaXN0XG5cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5vd25lciAhPSBudWxsICYmIGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIkVkZ2Ugb3duZXIgZ3JhcGggb3Igb3duZXIgZ3JhcGggbWFuYWdlciBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoZWRnZS5zb3VyY2Uub3duZXIuZ2V0R3JhcGhNYW5hZ2VyKCkuZWRnZXMuaW5kZXhPZihlZGdlKSA9PSAtMSkge1xuICAgICAgdGhyb3cgXCJOb3QgaW4gb3duZXIgZ3JhcGggbWFuYWdlcidzIGVkZ2UgbGlzdCFcIjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBlZGdlLnNvdXJjZS5vd25lci5nZXRHcmFwaE1hbmFnZXIoKS5lZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpLmVkZ2VzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yb290R3JhcGgudXBkYXRlQm91bmRzKHRydWUpO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0R3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaHM7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYWxsTm9kZXMgPT0gbnVsbCkge1xuICAgIHZhciBub2RlTGlzdCA9IFtdO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdldEdyYXBocygpO1xuICAgIHZhciBzID0gZ3JhcGhzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgbm9kZUxpc3QgPSBub2RlTGlzdC5jb25jYXQoZ3JhcGhzW2ldLmdldE5vZGVzKCkpO1xuICAgIH1cbiAgICB0aGlzLmFsbE5vZGVzID0gbm9kZUxpc3Q7XG4gIH1cbiAgcmV0dXJuIHRoaXMuYWxsTm9kZXM7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZXNldEFsbE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmFsbE5vZGVzID0gbnVsbDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnJlc2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYWxsRWRnZXMgPSBudWxsO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUucmVzZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IG51bGw7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGxFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYWxsRWRnZXMgPT0gbnVsbCkge1xuICAgIHZhciBlZGdlTGlzdCA9IFtdO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdldEdyYXBocygpO1xuICAgIHZhciBzID0gZ3JhcGhzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBocy5sZW5ndGg7IGkrKykge1xuICAgICAgZWRnZUxpc3QgPSBlZGdlTGlzdC5jb25jYXQoZ3JhcGhzW2ldLmdldEVkZ2VzKCkpO1xuICAgIH1cblxuICAgIGVkZ2VMaXN0ID0gZWRnZUxpc3QuY29uY2F0KHRoaXMuZWRnZXMpO1xuXG4gICAgdGhpcy5hbGxFZGdlcyA9IGVkZ2VMaXN0O1xuICB9XG4gIHJldHVybiB0aGlzLmFsbEVkZ2VzO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuc2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAobm9kZUxpc3QpIHtcbiAgaWYgKHRoaXMuYWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gIT0gbnVsbCkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IG5vZGVMaXN0O1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0Um9vdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucm9vdEdyYXBoO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuc2V0Um9vdEdyYXBoID0gZnVuY3Rpb24gKGdyYXBoKSB7XG4gIGlmIChncmFwaC5nZXRHcmFwaE1hbmFnZXIoKSAhPSB0aGlzKSB7XG4gICAgdGhyb3cgXCJSb290IG5vdCBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgfVxuXG4gIHRoaXMucm9vdEdyYXBoID0gZ3JhcGg7XG4gIC8vIHJvb3QgZ3JhcGggbXVzdCBoYXZlIGEgcm9vdCBub2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBmb3IgY29udmVuaWVuY2VcbiAgaWYgKGdyYXBoLnBhcmVudCA9PSBudWxsKSB7XG4gICAgZ3JhcGgucGFyZW50ID0gdGhpcy5sYXlvdXQubmV3Tm9kZShcIlJvb3Qgbm9kZVwiKTtcbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0TGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sYXlvdXQ7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5pc09uZUFuY2VzdG9yT2ZPdGhlciA9IGZ1bmN0aW9uIChmaXJzdE5vZGUsIHNlY29uZE5vZGUpIHtcbiAgaWYgKCEoZmlyc3ROb2RlICE9IG51bGwgJiYgc2Vjb25kTm9kZSAhPSBudWxsKSkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgaWYgKGZpcnN0Tm9kZSA9PSBzZWNvbmROb2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gSXMgc2Vjb25kIG5vZGUgYW4gYW5jZXN0b3Igb2YgdGhlIGZpcnN0IG9uZT9cbiAgdmFyIG93bmVyR3JhcGggPSBmaXJzdE5vZGUuZ2V0T3duZXIoKTtcbiAgdmFyIHBhcmVudE5vZGU7XG5cbiAgZG8ge1xuICAgIHBhcmVudE5vZGUgPSBvd25lckdyYXBoLmdldFBhcmVudCgpO1xuXG4gICAgaWYgKHBhcmVudE5vZGUgPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudE5vZGUgPT0gc2Vjb25kTm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb3duZXJHcmFwaCA9IHBhcmVudE5vZGUuZ2V0T3duZXIoKTtcbiAgICBpZiAob3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gd2hpbGUgKHRydWUpO1xuICAvLyBJcyBmaXJzdCBub2RlIGFuIGFuY2VzdG9yIG9mIHRoZSBzZWNvbmQgb25lP1xuICBvd25lckdyYXBoID0gc2Vjb25kTm9kZS5nZXRPd25lcigpO1xuXG4gIGRvIHtcbiAgICBwYXJlbnROb2RlID0gb3duZXJHcmFwaC5nZXRQYXJlbnQoKTtcblxuICAgIGlmIChwYXJlbnROb2RlID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnROb2RlID09IGZpcnN0Tm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb3duZXJHcmFwaCA9IHBhcmVudE5vZGUuZ2V0T3duZXIoKTtcbiAgICBpZiAob3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gd2hpbGUgKHRydWUpO1xuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlZGdlO1xuICB2YXIgc291cmNlTm9kZTtcbiAgdmFyIHRhcmdldE5vZGU7XG4gIHZhciBzb3VyY2VBbmNlc3RvckdyYXBoO1xuICB2YXIgdGFyZ2V0QW5jZXN0b3JHcmFwaDtcblxuICB2YXIgZWRnZXMgPSB0aGlzLmdldEFsbEVkZ2VzKCk7XG4gIHZhciBzID0gZWRnZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIGVkZ2UgPSBlZGdlc1tpXTtcblxuICAgIHNvdXJjZU5vZGUgPSBlZGdlLnNvdXJjZTtcbiAgICB0YXJnZXROb2RlID0gZWRnZS50YXJnZXQ7XG4gICAgZWRnZS5sY2EgPSBudWxsO1xuICAgIGVkZ2Uuc291cmNlSW5MY2EgPSBzb3VyY2VOb2RlO1xuICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXROb2RlO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUgPT0gdGFyZ2V0Tm9kZSkge1xuICAgICAgZWRnZS5sY2EgPSBzb3VyY2VOb2RlLmdldE93bmVyKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzb3VyY2VBbmNlc3RvckdyYXBoID0gc291cmNlTm9kZS5nZXRPd25lcigpO1xuXG4gICAgd2hpbGUgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXROb2RlO1xuICAgICAgdGFyZ2V0QW5jZXN0b3JHcmFwaCA9IHRhcmdldE5vZGUuZ2V0T3duZXIoKTtcblxuICAgICAgd2hpbGUgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRhcmdldEFuY2VzdG9yR3JhcGggPT0gc291cmNlQW5jZXN0b3JHcmFwaCkge1xuICAgICAgICAgIGVkZ2UubGNhID0gdGFyZ2V0QW5jZXN0b3JHcmFwaDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRBbmNlc3RvckdyYXBoID09IHRoaXMucm9vdEdyYXBoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWRnZS5sY2EgIT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAgICAgICB9XG4gICAgICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXRBbmNlc3RvckdyYXBoLmdldFBhcmVudCgpO1xuICAgICAgICB0YXJnZXRBbmNlc3RvckdyYXBoID0gZWRnZS50YXJnZXRJbkxjYS5nZXRPd25lcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlQW5jZXN0b3JHcmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgICAgZWRnZS5zb3VyY2VJbkxjYSA9IHNvdXJjZUFuY2VzdG9yR3JhcGguZ2V0UGFyZW50KCk7XG4gICAgICAgIHNvdXJjZUFuY2VzdG9yR3JhcGggPSBlZGdlLnNvdXJjZUluTGNhLmdldE93bmVyKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAgIH1cbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuY2FsY0xvd2VzdENvbW1vbkFuY2VzdG9yID0gZnVuY3Rpb24gKGZpcnN0Tm9kZSwgc2Vjb25kTm9kZSkge1xuICBpZiAoZmlyc3ROb2RlID09IHNlY29uZE5vZGUpIHtcbiAgICByZXR1cm4gZmlyc3ROb2RlLmdldE93bmVyKCk7XG4gIH1cbiAgdmFyIGZpcnN0T3duZXJHcmFwaCA9IGZpcnN0Tm9kZS5nZXRPd25lcigpO1xuXG4gIGRvIHtcbiAgICBpZiAoZmlyc3RPd25lckdyYXBoID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgc2Vjb25kT3duZXJHcmFwaCA9IHNlY29uZE5vZGUuZ2V0T3duZXIoKTtcblxuICAgIGRvIHtcbiAgICAgIGlmIChzZWNvbmRPd25lckdyYXBoID09IG51bGwpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWNvbmRPd25lckdyYXBoID09IGZpcnN0T3duZXJHcmFwaCkge1xuICAgICAgICByZXR1cm4gc2Vjb25kT3duZXJHcmFwaDtcbiAgICAgIH1cbiAgICAgIHNlY29uZE93bmVyR3JhcGggPSBzZWNvbmRPd25lckdyYXBoLmdldFBhcmVudCgpLmdldE93bmVyKCk7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICBmaXJzdE93bmVyR3JhcGggPSBmaXJzdE93bmVyR3JhcGguZ2V0UGFyZW50KCkuZ2V0T3duZXIoKTtcbiAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgcmV0dXJuIGZpcnN0T3duZXJHcmFwaDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNJbmNsdXNpb25UcmVlRGVwdGhzID0gZnVuY3Rpb24gKGdyYXBoLCBkZXB0aCkge1xuICBpZiAoZ3JhcGggPT0gbnVsbCAmJiBkZXB0aCA9PSBudWxsKSB7XG4gICAgZ3JhcGggPSB0aGlzLnJvb3RHcmFwaDtcbiAgICBkZXB0aCA9IDE7XG4gIH1cbiAgdmFyIG5vZGU7XG5cbiAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGUuaW5jbHVzaW9uVHJlZURlcHRoID0gZGVwdGg7XG5cbiAgICBpZiAobm9kZS5jaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmNhbGNJbmNsdXNpb25UcmVlRGVwdGhzKG5vZGUuY2hpbGQsIGRlcHRoICsgMSk7XG4gICAgfVxuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5pbmNsdWRlc0ludmFsaWRFZGdlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcblxuICB2YXIgcyA9IHRoaXMuZWRnZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIGVkZ2UgPSB0aGlzLmVkZ2VzW2ldO1xuXG4gICAgaWYgKHRoaXMuaXNPbmVBbmNlc3Rvck9mT3RoZXIoZWRnZS5zb3VyY2UsIGVkZ2UudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoTWFuYWdlcjtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5mdW5jdGlvbiBGRExheW91dENvbnN0YW50cygpIHt9XG5cbi8vRkRMYXlvdXRDb25zdGFudHMgaW5oZXJpdHMgc3RhdGljIHByb3BzIGluIExheW91dENvbnN0YW50c1xuZm9yICh2YXIgcHJvcCBpbiBMYXlvdXRDb25zdGFudHMpIHtcbiAgRkRMYXlvdXRDb25zdGFudHNbcHJvcF0gPSBMYXlvdXRDb25zdGFudHNbcHJvcF07XG59XG5cbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9JVEVSQVRJT05TID0gMjUwMDtcblxuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCA9IDUwO1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEggPSAwLjQ1O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9SRVBVTFNJT05fU1RSRU5HVEggPSA0NTAwLjA7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEggPSAwLjQ7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfU1RSRU5HVEggPSAxLjA7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfUkFOR0VfRkFDVE9SID0gMy44O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT01QT1VORF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUiA9IDEuNTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX0lERUFMX0VER0VfTEVOR1RIX0NBTENVTEFUSU9OID0gdHJ1ZTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX1JFUFVMU0lPTl9SQU5HRV9DQUxDVUxBVElPTiA9IHRydWU7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMID0gMC4zO1xuRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUiA9IDAuMzM7XG5GRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQgPSAxMDAwO1xuRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUID0gNTAwMDtcbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9OT0RFX0RJU1BMQUNFTUVOVF9JTkNSRU1FTlRBTCA9IDEwMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UX0lOQ1JFTUVOVEFMICogMztcbkZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAxMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuQ09OVkVSR0VOQ0VfQ0hFQ0tfUEVSSU9EID0gMTAwO1xuRkRMYXlvdXRDb25zdGFudHMuUEVSX0xFVkVMX0lERUFMX0VER0VfTEVOR1RIX0ZBQ1RPUiA9IDAuMTtcbkZETGF5b3V0Q29uc3RhbnRzLk1JTl9FREdFX0xFTkdUSCA9IDE7XG5GRExheW91dENvbnN0YW50cy5HUklEX0NBTENVTEFUSU9OX0NIRUNLX1BFUklPRCA9IDEwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0Q29uc3RhbnRzO1xuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIG1haW50YWlucyBhIGxpc3Qgb2Ygc3RhdGljIGdlb21ldHJ5IHJlbGF0ZWQgdXRpbGl0eSBtZXRob2RzLlxuICpcbiAqXG4gKiBDb3B5cmlnaHQ6IGktVmlzIFJlc2VhcmNoIEdyb3VwLCBCaWxrZW50IFVuaXZlcnNpdHksIDIwMDcgLSBwcmVzZW50XG4gKi9cblxudmFyIFBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cbmZ1bmN0aW9uIElHZW9tZXRyeSgpIHt9XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2FsY3VsYXRlcyAqaGFsZiogdGhlIGFtb3VudCBpbiB4IGFuZCB5IGRpcmVjdGlvbnMgb2YgdGhlIHR3b1xuICogaW5wdXQgcmVjdGFuZ2xlcyBuZWVkZWQgdG8gc2VwYXJhdGUgdGhlbSBrZWVwaW5nIHRoZWlyIHJlc3BlY3RpdmVcbiAqIHBvc2l0aW9uaW5nLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGluIHRoZSBpbnB1dCBhcnJheS4gQW4gaW5wdXRcbiAqIHNlcGFyYXRpb24gYnVmZmVyIGFkZGVkIHRvIHRoZSBhbW91bnQgaW4gYm90aCBkaXJlY3Rpb25zLiBXZSBhc3N1bWUgdGhhdFxuICogdGhlIHR3byByZWN0YW5nbGVzIGRvIGludGVyc2VjdC5cbiAqL1xuSUdlb21ldHJ5LmNhbGNTZXBhcmF0aW9uQW1vdW50ID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0Qiwgb3ZlcmxhcEFtb3VudCwgc2VwYXJhdGlvbkJ1ZmZlcikge1xuICBpZiAoIXJlY3RBLmludGVyc2VjdHMocmVjdEIpKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cblxuICB2YXIgZGlyZWN0aW9ucyA9IG5ldyBBcnJheSgyKTtcblxuICB0aGlzLmRlY2lkZURpcmVjdGlvbnNGb3JPdmVybGFwcGluZ05vZGVzKHJlY3RBLCByZWN0QiwgZGlyZWN0aW9ucyk7XG5cbiAgb3ZlcmxhcEFtb3VudFswXSA9IE1hdGgubWluKHJlY3RBLmdldFJpZ2h0KCksIHJlY3RCLmdldFJpZ2h0KCkpIC0gTWF0aC5tYXgocmVjdEEueCwgcmVjdEIueCk7XG4gIG92ZXJsYXBBbW91bnRbMV0gPSBNYXRoLm1pbihyZWN0QS5nZXRCb3R0b20oKSwgcmVjdEIuZ2V0Qm90dG9tKCkpIC0gTWF0aC5tYXgocmVjdEEueSwgcmVjdEIueSk7XG5cbiAgLy8gdXBkYXRlIHRoZSBvdmVybGFwcGluZyBhbW91bnRzIGZvciB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICBpZiAocmVjdEEuZ2V0WCgpIDw9IHJlY3RCLmdldFgoKSAmJiByZWN0QS5nZXRSaWdodCgpID49IHJlY3RCLmdldFJpZ2h0KCkpIHtcbiAgICAvKiBDYXNlIHguMTpcbiAgICAqXG4gICAgKiByZWN0QVxuICAgICogXHR8ICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgKiBcdHwgICAgICAgIF9fX19fX19fXyAgICAgIHxcbiAgICAqIFx0fCAgICAgICAgfCAgICAgICB8ICAgICAgfFxuICAgICogXHR8X19fX19fX198X19fX19fX3xfX19fX198XG4gICAgKiBcdFx0XHQgfCAgICAgICB8XG4gICAgKiAgICAgICAgICAgfCAgICAgICB8XG4gICAgKiAgICAgICAgcmVjdEJcbiAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMF0gKz0gTWF0aC5taW4ocmVjdEIuZ2V0WCgpIC0gcmVjdEEuZ2V0WCgpLCByZWN0QS5nZXRSaWdodCgpIC0gcmVjdEIuZ2V0UmlnaHQoKSk7XG4gIH0gZWxzZSBpZiAocmVjdEIuZ2V0WCgpIDw9IHJlY3RBLmdldFgoKSAmJiByZWN0Qi5nZXRSaWdodCgpID49IHJlY3RBLmdldFJpZ2h0KCkpIHtcbiAgICAvKiBDYXNlIHguMjpcbiAgICAqXG4gICAgKiByZWN0QlxuICAgICogXHR8ICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgKiBcdHwgICAgICAgIF9fX19fX19fXyAgICAgIHxcbiAgICAqIFx0fCAgICAgICAgfCAgICAgICB8ICAgICAgfFxuICAgICogXHR8X19fX19fX198X19fX19fX3xfX19fX198XG4gICAgKiBcdFx0XHQgfCAgICAgICB8XG4gICAgKiAgICAgICAgICAgfCAgICAgICB8XG4gICAgKiAgICAgICAgcmVjdEFcbiAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMF0gKz0gTWF0aC5taW4ocmVjdEEuZ2V0WCgpIC0gcmVjdEIuZ2V0WCgpLCByZWN0Qi5nZXRSaWdodCgpIC0gcmVjdEEuZ2V0UmlnaHQoKSk7XG4gIH1cbiAgaWYgKHJlY3RBLmdldFkoKSA8PSByZWN0Qi5nZXRZKCkgJiYgcmVjdEEuZ2V0Qm90dG9tKCkgPj0gcmVjdEIuZ2V0Qm90dG9tKCkpIHtcbiAgICAvKiBDYXNlIHkuMTpcbiAgICAgKiAgICAgICAgICBfX19fX19fXyByZWN0QVxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgX19fX19ffF9fX18gIHJlY3RCXG4gICAgICogICAgICAgICB8ICAgIHxcbiAgICAgKiAgICAgICAgIHwgICAgfFxuICAgICAqICAgX19fX19ffF9fX198XG4gICAgICogICAgICAgICB8XG4gICAgICogICAgICAgICB8XG4gICAgICogICAgICAgICB8X19fX19fX19cbiAgICAgKlxuICAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMV0gKz0gTWF0aC5taW4ocmVjdEIuZ2V0WSgpIC0gcmVjdEEuZ2V0WSgpLCByZWN0QS5nZXRCb3R0b20oKSAtIHJlY3RCLmdldEJvdHRvbSgpKTtcbiAgfSBlbHNlIGlmIChyZWN0Qi5nZXRZKCkgPD0gcmVjdEEuZ2V0WSgpICYmIHJlY3RCLmdldEJvdHRvbSgpID49IHJlY3RBLmdldEJvdHRvbSgpKSB7XG4gICAgLyogQ2FzZSB5LjI6XG4gICAgKiAgICAgICAgICBfX19fX19fXyByZWN0QlxuICAgICogICAgICAgICB8XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgX19fX19ffF9fX18gIHJlY3RBXG4gICAgKiAgICAgICAgIHwgICAgfFxuICAgICogICAgICAgICB8ICAgIHxcbiAgICAqICAgX19fX19ffF9fX198XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgICAgICAgfFxuICAgICogICAgICAgICB8X19fX19fX19cbiAgICAqXG4gICAgKi9cbiAgICBvdmVybGFwQW1vdW50WzFdICs9IE1hdGgubWluKHJlY3RBLmdldFkoKSAtIHJlY3RCLmdldFkoKSwgcmVjdEIuZ2V0Qm90dG9tKCkgLSByZWN0QS5nZXRCb3R0b20oKSk7XG4gIH1cblxuICAvLyBmaW5kIHNsb3BlIG9mIHRoZSBsaW5lIHBhc3NlcyB0d28gY2VudGVyc1xuICB2YXIgc2xvcGUgPSBNYXRoLmFicygocmVjdEIuZ2V0Q2VudGVyWSgpIC0gcmVjdEEuZ2V0Q2VudGVyWSgpKSAvIChyZWN0Qi5nZXRDZW50ZXJYKCkgLSByZWN0QS5nZXRDZW50ZXJYKCkpKTtcbiAgLy8gaWYgY2VudGVycyBhcmUgb3ZlcmxhcHBlZFxuICBpZiAocmVjdEIuZ2V0Q2VudGVyWSgpID09PSByZWN0QS5nZXRDZW50ZXJZKCkgJiYgcmVjdEIuZ2V0Q2VudGVyWCgpID09PSByZWN0QS5nZXRDZW50ZXJYKCkpIHtcbiAgICAvLyBhc3N1bWUgdGhlIHNsb3BlIGlzIDEgKDQ1IGRlZ3JlZSlcbiAgICBzbG9wZSA9IDEuMDtcbiAgfVxuXG4gIHZhciBtb3ZlQnlZID0gc2xvcGUgKiBvdmVybGFwQW1vdW50WzBdO1xuICB2YXIgbW92ZUJ5WCA9IG92ZXJsYXBBbW91bnRbMV0gLyBzbG9wZTtcbiAgaWYgKG92ZXJsYXBBbW91bnRbMF0gPCBtb3ZlQnlYKSB7XG4gICAgbW92ZUJ5WCA9IG92ZXJsYXBBbW91bnRbMF07XG4gIH0gZWxzZSB7XG4gICAgbW92ZUJ5WSA9IG92ZXJsYXBBbW91bnRbMV07XG4gIH1cbiAgLy8gcmV0dXJuIGhhbGYgdGhlIGFtb3VudCBzbyB0aGF0IGlmIGVhY2ggcmVjdGFuZ2xlIGlzIG1vdmVkIGJ5IHRoZXNlXG4gIC8vIGFtb3VudHMgaW4gb3Bwb3NpdGUgZGlyZWN0aW9ucywgb3ZlcmxhcCB3aWxsIGJlIHJlc29sdmVkXG4gIG92ZXJsYXBBbW91bnRbMF0gPSAtMSAqIGRpcmVjdGlvbnNbMF0gKiAobW92ZUJ5WCAvIDIgKyBzZXBhcmF0aW9uQnVmZmVyKTtcbiAgb3ZlcmxhcEFtb3VudFsxXSA9IC0xICogZGlyZWN0aW9uc1sxXSAqIChtb3ZlQnlZIC8gMiArIHNlcGFyYXRpb25CdWZmZXIpO1xufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBkZWNpZGVzIHRoZSBzZXBhcmF0aW9uIGRpcmVjdGlvbiBvZiBvdmVybGFwcGluZyBub2Rlc1xuICpcbiAqIGlmIGRpcmVjdGlvbnNbMF0gPSAtMSwgdGhlbiByZWN0QSBnb2VzIGxlZnRcbiAqIGlmIGRpcmVjdGlvbnNbMF0gPSAxLCAgdGhlbiByZWN0QSBnb2VzIHJpZ2h0XG4gKiBpZiBkaXJlY3Rpb25zWzFdID0gLTEsIHRoZW4gcmVjdEEgZ29lcyB1cFxuICogaWYgZGlyZWN0aW9uc1sxXSA9IDEsICB0aGVuIHJlY3RBIGdvZXMgZG93blxuICovXG5JR2VvbWV0cnkuZGVjaWRlRGlyZWN0aW9uc0Zvck92ZXJsYXBwaW5nTm9kZXMgPSBmdW5jdGlvbiAocmVjdEEsIHJlY3RCLCBkaXJlY3Rpb25zKSB7XG4gIGlmIChyZWN0QS5nZXRDZW50ZXJYKCkgPCByZWN0Qi5nZXRDZW50ZXJYKCkpIHtcbiAgICBkaXJlY3Rpb25zWzBdID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0aW9uc1swXSA9IDE7XG4gIH1cblxuICBpZiAocmVjdEEuZ2V0Q2VudGVyWSgpIDwgcmVjdEIuZ2V0Q2VudGVyWSgpKSB7XG4gICAgZGlyZWN0aW9uc1sxXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIGRpcmVjdGlvbnNbMV0gPSAxO1xuICB9XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbiAoY2xpcHBpbmcpIHBvaW50cyBvZiB0aGUgdHdvXG4gKiBpbnB1dCByZWN0YW5nbGVzIHdpdGggbGluZSBzZWdtZW50IGRlZmluZWQgYnkgdGhlIGNlbnRlcnMgb2YgdGhlc2UgdHdvXG4gKiByZWN0YW5nbGVzLiBUaGUgY2xpcHBpbmcgcG9pbnRzIGFyZSBzYXZlZCBpbiB0aGUgaW5wdXQgZG91YmxlIGFycmF5IGFuZFxuICogd2hldGhlciBvciBub3QgdGhlIHR3byByZWN0YW5nbGVzIG92ZXJsYXAgaXMgcmV0dXJuZWQuXG4gKi9cbklHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24yID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0QiwgcmVzdWx0KSB7XG4gIC8vcmVzdWx0WzAtMV0gd2lsbCBjb250YWluIGNsaXBQb2ludCBvZiByZWN0QSwgcmVzdWx0WzItM10gd2lsbCBjb250YWluIGNsaXBQb2ludCBvZiByZWN0QlxuICB2YXIgcDF4ID0gcmVjdEEuZ2V0Q2VudGVyWCgpO1xuICB2YXIgcDF5ID0gcmVjdEEuZ2V0Q2VudGVyWSgpO1xuICB2YXIgcDJ4ID0gcmVjdEIuZ2V0Q2VudGVyWCgpO1xuICB2YXIgcDJ5ID0gcmVjdEIuZ2V0Q2VudGVyWSgpO1xuXG4gIC8vaWYgdHdvIHJlY3RhbmdsZXMgaW50ZXJzZWN0LCB0aGVuIGNsaXBwaW5nIHBvaW50cyBhcmUgY2VudGVyc1xuICBpZiAocmVjdEEuaW50ZXJzZWN0cyhyZWN0QikpIHtcbiAgICByZXN1bHRbMF0gPSBwMXg7XG4gICAgcmVzdWx0WzFdID0gcDF5O1xuICAgIHJlc3VsdFsyXSA9IHAyeDtcbiAgICByZXN1bHRbM10gPSBwMnk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy92YXJpYWJsZXMgZm9yIHJlY3RBXG4gIHZhciB0b3BMZWZ0QXggPSByZWN0QS5nZXRYKCk7XG4gIHZhciB0b3BMZWZ0QXkgPSByZWN0QS5nZXRZKCk7XG4gIHZhciB0b3BSaWdodEF4ID0gcmVjdEEuZ2V0UmlnaHQoKTtcbiAgdmFyIGJvdHRvbUxlZnRBeCA9IHJlY3RBLmdldFgoKTtcbiAgdmFyIGJvdHRvbUxlZnRBeSA9IHJlY3RBLmdldEJvdHRvbSgpO1xuICB2YXIgYm90dG9tUmlnaHRBeCA9IHJlY3RBLmdldFJpZ2h0KCk7XG4gIHZhciBoYWxmV2lkdGhBID0gcmVjdEEuZ2V0V2lkdGhIYWxmKCk7XG4gIHZhciBoYWxmSGVpZ2h0QSA9IHJlY3RBLmdldEhlaWdodEhhbGYoKTtcbiAgLy92YXJpYWJsZXMgZm9yIHJlY3RCXG4gIHZhciB0b3BMZWZ0QnggPSByZWN0Qi5nZXRYKCk7XG4gIHZhciB0b3BMZWZ0QnkgPSByZWN0Qi5nZXRZKCk7XG4gIHZhciB0b3BSaWdodEJ4ID0gcmVjdEIuZ2V0UmlnaHQoKTtcbiAgdmFyIGJvdHRvbUxlZnRCeCA9IHJlY3RCLmdldFgoKTtcbiAgdmFyIGJvdHRvbUxlZnRCeSA9IHJlY3RCLmdldEJvdHRvbSgpO1xuICB2YXIgYm90dG9tUmlnaHRCeCA9IHJlY3RCLmdldFJpZ2h0KCk7XG4gIHZhciBoYWxmV2lkdGhCID0gcmVjdEIuZ2V0V2lkdGhIYWxmKCk7XG4gIHZhciBoYWxmSGVpZ2h0QiA9IHJlY3RCLmdldEhlaWdodEhhbGYoKTtcblxuICAvL2ZsYWcgd2hldGhlciBjbGlwcGluZyBwb2ludHMgYXJlIGZvdW5kXG4gIHZhciBjbGlwUG9pbnRBRm91bmQgPSBmYWxzZTtcbiAgdmFyIGNsaXBQb2ludEJGb3VuZCA9IGZhbHNlO1xuXG4gIC8vIGxpbmUgaXMgdmVydGljYWxcbiAgaWYgKHAxeCA9PT0gcDJ4KSB7XG4gICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgcmVzdWx0WzBdID0gcDF4O1xuICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgcmVzdWx0WzJdID0gcDJ4O1xuICAgICAgcmVzdWx0WzNdID0gYm90dG9tTGVmdEJ5O1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAocDF5IDwgcDJ5KSB7XG4gICAgICByZXN1bHRbMF0gPSBwMXg7XG4gICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICByZXN1bHRbMl0gPSBwMng7XG4gICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vbm90IGxpbmUsIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBsaW5lIGlzIGhvcml6b250YWxcbiAgZWxzZSBpZiAocDF5ID09PSBwMnkpIHtcbiAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgcmVzdWx0WzBdID0gdG9wTGVmdEF4O1xuICAgICAgICByZXN1bHRbMV0gPSBwMXk7XG4gICAgICAgIHJlc3VsdFsyXSA9IHRvcFJpZ2h0Qng7XG4gICAgICAgIHJlc3VsdFszXSA9IHAyeTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChwMXggPCBwMngpIHtcbiAgICAgICAgcmVzdWx0WzBdID0gdG9wUmlnaHRBeDtcbiAgICAgICAgcmVzdWx0WzFdID0gcDF5O1xuICAgICAgICByZXN1bHRbMl0gPSB0b3BMZWZ0Qng7XG4gICAgICAgIHJlc3VsdFszXSA9IHAyeTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9ub3QgdmFsaWQgbGluZSwgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vc2xvcGVzIG9mIHJlY3RBJ3MgYW5kIHJlY3RCJ3MgZGlhZ29uYWxzXG4gICAgICB2YXIgc2xvcGVBID0gcmVjdEEuaGVpZ2h0IC8gcmVjdEEud2lkdGg7XG4gICAgICB2YXIgc2xvcGVCID0gcmVjdEIuaGVpZ2h0IC8gcmVjdEIud2lkdGg7XG5cbiAgICAgIC8vc2xvcGUgb2YgbGluZSBiZXR3ZWVuIGNlbnRlciBvZiByZWN0QSBhbmQgY2VudGVyIG9mIHJlY3RCXG4gICAgICB2YXIgc2xvcGVQcmltZSA9IChwMnkgLSBwMXkpIC8gKHAyeCAtIHAxeCk7XG4gICAgICB2YXIgY2FyZGluYWxEaXJlY3Rpb25BID0gdm9pZCAwO1xuICAgICAgdmFyIGNhcmRpbmFsRGlyZWN0aW9uQiA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRBeCA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRBeSA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRCeCA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRCeSA9IHZvaWQgMDtcblxuICAgICAgLy9kZXRlcm1pbmUgd2hldGhlciBjbGlwcGluZyBwb2ludCBpcyB0aGUgY29ybmVyIG9mIG5vZGVBXG4gICAgICBpZiAoLXNsb3BlQSA9PT0gc2xvcGVQcmltZSkge1xuICAgICAgICBpZiAocDF4ID4gcDJ4KSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gYm90dG9tTGVmdEF4O1xuICAgICAgICAgIHJlc3VsdFsxXSA9IGJvdHRvbUxlZnRBeTtcbiAgICAgICAgICBjbGlwUG9pbnRBRm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFswXSA9IHRvcFJpZ2h0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2xvcGVBID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgICByZXN1bHRbMF0gPSB0b3BMZWZ0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gYm90dG9tUmlnaHRBeDtcbiAgICAgICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICAgICAgY2xpcFBvaW50QUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL2RldGVybWluZSB3aGV0aGVyIGNsaXBwaW5nIHBvaW50IGlzIHRoZSBjb3JuZXIgb2Ygbm9kZUJcbiAgICAgIGlmICgtc2xvcGVCID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMnggPiBwMXgpIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSBib3R0b21MZWZ0Qng7XG4gICAgICAgICAgcmVzdWx0WzNdID0gYm90dG9tTGVmdEJ5O1xuICAgICAgICAgIGNsaXBQb2ludEJGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzJdID0gdG9wUmlnaHRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbG9wZUIgPT09IHNsb3BlUHJpbWUpIHtcbiAgICAgICAgaWYgKHAyeCA+IHAxeCkge1xuICAgICAgICAgIHJlc3VsdFsyXSA9IHRvcExlZnRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSBib3R0b21SaWdodEJ4O1xuICAgICAgICAgIHJlc3VsdFszXSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICBjbGlwUG9pbnRCRm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vaWYgYm90aCBjbGlwcGluZyBwb2ludHMgYXJlIGNvcm5lcnNcbiAgICAgIGlmIChjbGlwUG9pbnRBRm91bmQgJiYgY2xpcFBvaW50QkZvdW5kKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy9kZXRlcm1pbmUgQ2FyZGluYWwgRGlyZWN0aW9uIG9mIHJlY3RhbmdsZXNcbiAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oc2xvcGVBLCBzbG9wZVByaW1lLCA0KTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQiwgc2xvcGVQcmltZSwgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25BID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVBLCBzbG9wZVByaW1lLCAzKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKC1zbG9wZUIsIHNsb3BlUHJpbWUsIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocDF5ID4gcDJ5KSB7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25BID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVBLCBzbG9wZVByaW1lLCAxKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKC1zbG9wZUIsIHNsb3BlUHJpbWUsIDMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oc2xvcGVBLCBzbG9wZVByaW1lLCAyKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQiwgc2xvcGVQcmltZSwgNCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vY2FsY3VsYXRlIGNsaXBwaW5nIFBvaW50IGlmIGl0IGlzIG5vdCBmb3VuZCBiZWZvcmVcbiAgICAgIGlmICghY2xpcFBvaW50QUZvdW5kKSB7XG4gICAgICAgIHN3aXRjaCAoY2FyZGluYWxEaXJlY3Rpb25BKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSB0b3BMZWZ0QXk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeCA9IHAxeCArIC1oYWxmSGVpZ2h0QSAvIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGVtcFBvaW50QXggPSBib3R0b21SaWdodEF4O1xuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBwMXkgKyBoYWxmV2lkdGhBICogc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFswXSA9IHRlbXBQb2ludEF4O1xuICAgICAgICAgICAgcmVzdWx0WzFdID0gdGVtcFBvaW50QXk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeSA9IGJvdHRvbUxlZnRBeTtcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gcDF4ICsgaGFsZkhlaWdodEEgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzBdID0gdGVtcFBvaW50QXg7XG4gICAgICAgICAgICByZXN1bHRbMV0gPSB0ZW1wUG9pbnRBeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gYm90dG9tTGVmdEF4O1xuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBwMXkgKyAtaGFsZldpZHRoQSAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghY2xpcFBvaW50QkZvdW5kKSB7XG4gICAgICAgIHN3aXRjaCAoY2FyZGluYWxEaXJlY3Rpb25CKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeCA9IHAyeCArIC1oYWxmSGVpZ2h0QiAvIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGVtcFBvaW50QnggPSBib3R0b21SaWdodEJ4O1xuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBwMnkgKyBoYWxmV2lkdGhCICogc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFsyXSA9IHRlbXBQb2ludEJ4O1xuICAgICAgICAgICAgcmVzdWx0WzNdID0gdGVtcFBvaW50Qnk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gcDJ4ICsgaGFsZkhlaWdodEIgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzJdID0gdGVtcFBvaW50Qng7XG4gICAgICAgICAgICByZXN1bHRbM10gPSB0ZW1wUG9pbnRCeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gYm90dG9tTGVmdEJ4O1xuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBwMnkgKyAtaGFsZldpZHRoQiAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBpbiB3aGljaCBjYXJkaW5hbCBkaXJlY3Rpb24gZG9lcyBpbnB1dCBwb2ludCBzdGF5c1xuICogMTogTm9ydGhcbiAqIDI6IEVhc3RcbiAqIDM6IFNvdXRoXG4gKiA0OiBXZXN0XG4gKi9cbklHZW9tZXRyeS5nZXRDYXJkaW5hbERpcmVjdGlvbiA9IGZ1bmN0aW9uIChzbG9wZSwgc2xvcGVQcmltZSwgbGluZSkge1xuICBpZiAoc2xvcGUgPiBzbG9wZVByaW1lKSB7XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDEgKyBsaW5lICUgNDtcbiAgfVxufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBsaW5lcyBkZWZpbmVkIGJ5XG4gKiBwb2ludCBwYWlycyAoczEsczIpIGFuZCAoZjEsZjIpLlxuICovXG5JR2VvbWV0cnkuZ2V0SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHMxLCBzMiwgZjEsIGYyKSB7XG4gIGlmIChmMiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW50ZXJzZWN0aW9uMihzMSwgczIsIGYxKTtcbiAgfVxuXG4gIHZhciB4MSA9IHMxLng7XG4gIHZhciB5MSA9IHMxLnk7XG4gIHZhciB4MiA9IHMyLng7XG4gIHZhciB5MiA9IHMyLnk7XG4gIHZhciB4MyA9IGYxLng7XG4gIHZhciB5MyA9IGYxLnk7XG4gIHZhciB4NCA9IGYyLng7XG4gIHZhciB5NCA9IGYyLnk7XG4gIHZhciB4ID0gdm9pZCAwLFxuICAgICAgeSA9IHZvaWQgMDsgLy8gaW50ZXJzZWN0aW9uIHBvaW50XG4gIHZhciBhMSA9IHZvaWQgMCxcbiAgICAgIGEyID0gdm9pZCAwLFxuICAgICAgYjEgPSB2b2lkIDAsXG4gICAgICBiMiA9IHZvaWQgMCxcbiAgICAgIGMxID0gdm9pZCAwLFxuICAgICAgYzIgPSB2b2lkIDA7IC8vIGNvZWZmaWNpZW50cyBvZiBsaW5lIGVxbnMuXG4gIHZhciBkZW5vbSA9IHZvaWQgMDtcblxuICBhMSA9IHkyIC0geTE7XG4gIGIxID0geDEgLSB4MjtcbiAgYzEgPSB4MiAqIHkxIC0geDEgKiB5MjsgLy8geyBhMSp4ICsgYjEqeSArIGMxID0gMCBpcyBsaW5lIDEgfVxuXG4gIGEyID0geTQgLSB5MztcbiAgYjIgPSB4MyAtIHg0O1xuICBjMiA9IHg0ICogeTMgLSB4MyAqIHk0OyAvLyB7IGEyKnggKyBiMip5ICsgYzIgPSAwIGlzIGxpbmUgMiB9XG5cbiAgZGVub20gPSBhMSAqIGIyIC0gYTIgKiBiMTtcblxuICBpZiAoZGVub20gPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHggPSAoYjEgKiBjMiAtIGIyICogYzEpIC8gZGVub207XG4gIHkgPSAoYTIgKiBjMSAtIGExICogYzIpIC8gZGVub207XG5cbiAgcmV0dXJuIG5ldyBQb2ludCh4LCB5KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgZmluZHMgYW5kIHJldHVybnMgdGhlIGFuZ2xlIG9mIHRoZSB2ZWN0b3IgZnJvbSB0aGUgKyB4LWF4aXNcbiAqIGluIGNsb2Nrd2lzZSBkaXJlY3Rpb24gKGNvbXBhdGlibGUgdy8gSmF2YSBjb29yZGluYXRlIHN5c3RlbSEpLlxuICovXG5JR2VvbWV0cnkuYW5nbGVPZlZlY3RvciA9IGZ1bmN0aW9uIChDeCwgQ3ksIE54LCBOeSkge1xuICB2YXIgQ19hbmdsZSA9IHZvaWQgMDtcblxuICBpZiAoQ3ggIT09IE54KSB7XG4gICAgQ19hbmdsZSA9IE1hdGguYXRhbigoTnkgLSBDeSkgLyAoTnggLSBDeCkpO1xuXG4gICAgaWYgKE54IDwgQ3gpIHtcbiAgICAgIENfYW5nbGUgKz0gTWF0aC5QSTtcbiAgICB9IGVsc2UgaWYgKE55IDwgQ3kpIHtcbiAgICAgIENfYW5nbGUgKz0gdGhpcy5UV09fUEk7XG4gICAgfVxuICB9IGVsc2UgaWYgKE55IDwgQ3kpIHtcbiAgICBDX2FuZ2xlID0gdGhpcy5PTkVfQU5EX0hBTEZfUEk7IC8vIDI3MCBkZWdyZWVzXG4gIH0gZWxzZSB7XG4gICAgQ19hbmdsZSA9IHRoaXMuSEFMRl9QSTsgLy8gOTAgZGVncmVlc1xuICB9XG5cbiAgcmV0dXJuIENfYW5nbGU7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB0d28gbGluZSBzZWdtZW50cyAob25lIHdpdGggcG9pbnRcbiAqIHAxIGFuZCBwMiwgdGhlIG90aGVyIHdpdGggcG9pbnQgcDMgYW5kIHA0KSBpbnRlcnNlY3QgYXQgYSBwb2ludCBvdGhlclxuICogdGhhbiB0aGVzZSBwb2ludHMuXG4gKi9cbklHZW9tZXRyeS5kb0ludGVyc2VjdCA9IGZ1bmN0aW9uIChwMSwgcDIsIHAzLCBwNCkge1xuICB2YXIgYSA9IHAxLng7XG4gIHZhciBiID0gcDEueTtcbiAgdmFyIGMgPSBwMi54O1xuICB2YXIgZCA9IHAyLnk7XG4gIHZhciBwID0gcDMueDtcbiAgdmFyIHEgPSBwMy55O1xuICB2YXIgciA9IHA0Lng7XG4gIHZhciBzID0gcDQueTtcbiAgdmFyIGRldCA9IChjIC0gYSkgKiAocyAtIHEpIC0gKHIgLSBwKSAqIChkIC0gYik7XG5cbiAgaWYgKGRldCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGFtYmRhID0gKChzIC0gcSkgKiAociAtIGEpICsgKHAgLSByKSAqIChzIC0gYikpIC8gZGV0O1xuICAgIHZhciBnYW1tYSA9ICgoYiAtIGQpICogKHIgLSBhKSArIChjIC0gYSkgKiAocyAtIGIpKSAvIGRldDtcbiAgICByZXR1cm4gMCA8IGxhbWJkYSAmJiBsYW1iZGEgPCAxICYmIDAgPCBnYW1tYSAmJiBnYW1tYSA8IDE7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBDbGFzcyBDb25zdGFudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIFNvbWUgdXNlZnVsIHByZS1jYWxjdWxhdGVkIGNvbnN0YW50c1xuICovXG5JR2VvbWV0cnkuSEFMRl9QSSA9IDAuNSAqIE1hdGguUEk7XG5JR2VvbWV0cnkuT05FX0FORF9IQUxGX1BJID0gMS41ICogTWF0aC5QSTtcbklHZW9tZXRyeS5UV09fUEkgPSAyLjAgKiBNYXRoLlBJO1xuSUdlb21ldHJ5LlRIUkVFX1BJID0gMy4wICogTWF0aC5QSTtcblxubW9kdWxlLmV4cG9ydHMgPSBJR2VvbWV0cnk7XG5cbi8qKiovIH0pLFxuLyogOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBJTWF0aCgpIHt9XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2lnbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbklNYXRoLnNpZ24gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHZhbHVlID4gMCkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKHZhbHVlIDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufTtcblxuSU1hdGguZmxvb3IgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguY2VpbCh2YWx1ZSkgOiBNYXRoLmZsb29yKHZhbHVlKTtcbn07XG5cbklNYXRoLmNlaWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguZmxvb3IodmFsdWUpIDogTWF0aC5jZWlsKHZhbHVlKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSU1hdGg7XG5cbi8qKiovIH0pLFxuLyogMTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gSW50ZWdlcigpIHt9XG5cbkludGVnZXIuTUFYX1ZBTFVFID0gMjE0NzQ4MzY0NztcbkludGVnZXIuTUlOX1ZBTFVFID0gLTIxNDc0ODM2NDg7XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZWdlcjtcblxuLyoqKi8gfSksXG4vKiAxMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgbm9kZUZyb20gPSBmdW5jdGlvbiBub2RlRnJvbSh2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIG5leHQ6IG51bGwsIHByZXY6IG51bGwgfTtcbn07XG5cbnZhciBhZGQgPSBmdW5jdGlvbiBhZGQocHJldiwgbm9kZSwgbmV4dCwgbGlzdCkge1xuICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgIHByZXYubmV4dCA9IG5vZGU7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC5oZWFkID0gbm9kZTtcbiAgfVxuXG4gIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgbmV4dC5wcmV2ID0gbm9kZTtcbiAgfSBlbHNlIHtcbiAgICBsaXN0LnRhaWwgPSBub2RlO1xuICB9XG5cbiAgbm9kZS5wcmV2ID0gcHJldjtcbiAgbm9kZS5uZXh0ID0gbmV4dDtcblxuICBsaXN0Lmxlbmd0aCsrO1xuXG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIF9yZW1vdmUgPSBmdW5jdGlvbiBfcmVtb3ZlKG5vZGUsIGxpc3QpIHtcbiAgdmFyIHByZXYgPSBub2RlLnByZXYsXG4gICAgICBuZXh0ID0gbm9kZS5uZXh0O1xuXG5cbiAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICB9IGVsc2Uge1xuICAgIGxpc3QuaGVhZCA9IG5leHQ7XG4gIH1cblxuICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgIG5leHQucHJldiA9IHByZXY7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC50YWlsID0gcHJldjtcbiAgfVxuXG4gIG5vZGUucHJldiA9IG5vZGUubmV4dCA9IG51bGw7XG5cbiAgbGlzdC5sZW5ndGgtLTtcblxuICByZXR1cm4gbm9kZTtcbn07XG5cbnZhciBMaW5rZWRMaXN0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0KHZhbHMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExpbmtlZExpc3QpO1xuXG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcblxuICAgIGlmICh2YWxzICE9IG51bGwpIHtcbiAgICAgIHZhbHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gX3RoaXMucHVzaCh2KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMaW5rZWRMaXN0LCBbe1xuICAgIGtleTogXCJzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEJlZm9yZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnNlcnRCZWZvcmUodmFsLCBvdGhlck5vZGUpIHtcbiAgICAgIHJldHVybiBhZGQob3RoZXJOb2RlLnByZXYsIG5vZGVGcm9tKHZhbCksIG90aGVyTm9kZSwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEFmdGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydEFmdGVyKHZhbCwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZSwgbm9kZUZyb20odmFsKSwgb3RoZXJOb2RlLm5leHQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnROb2RlQmVmb3JlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydE5vZGVCZWZvcmUobmV3Tm9kZSwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZS5wcmV2LCBuZXdOb2RlLCBvdGhlck5vZGUsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnROb2RlQWZ0ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5zZXJ0Tm9kZUFmdGVyKG5ld05vZGUsIG90aGVyTm9kZSkge1xuICAgICAgcmV0dXJuIGFkZChvdGhlck5vZGUsIG5ld05vZGUsIG90aGVyTm9kZS5uZXh0LCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHVzaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoKHZhbCkge1xuICAgICAgcmV0dXJuIGFkZCh0aGlzLnRhaWwsIG5vZGVGcm9tKHZhbCksIG51bGwsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnNoaWZ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuc2hpZnQodmFsKSB7XG4gICAgICByZXR1cm4gYWRkKG51bGwsIG5vZGVGcm9tKHZhbCksIHRoaXMuaGVhZCwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUobm9kZSkge1xuICAgICAgcmV0dXJuIF9yZW1vdmUobm9kZSwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3AoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLnRhaWwsIHRoaXMpLnZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3BOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvcE5vZGUoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLnRhaWwsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICAgIHJldHVybiBfcmVtb3ZlKHRoaXMuaGVhZCwgdGhpcykudmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNoaWZ0Tm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdE5vZGUoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLmhlYWQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRfb2JqZWN0X2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldF9vYmplY3RfYXQoaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA8PSB0aGlzLmxlbmd0aCgpKSB7XG4gICAgICAgIHZhciBpID0gMTtcbiAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChpIDwgaW5kZXgpIHtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0X29iamVjdF9hdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRfb2JqZWN0X2F0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgaWYgKGluZGV4IDw9IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgdmFyIGkgPSAxO1xuICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICAgICAgd2hpbGUgKGkgPCBpbmRleCkge1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRMaXN0O1xuXG4vKioqLyB9KSxcbi8qIDEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qXHJcbiAqVGhpcyBjbGFzcyBpcyB0aGUgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9pbnQuamF2YSBjbGFzcyBpbiBqZGtcclxuICovXG5mdW5jdGlvbiBQb2ludCh4LCB5LCBwKSB7XG4gIHRoaXMueCA9IG51bGw7XG4gIHRoaXMueSA9IG51bGw7XG4gIGlmICh4ID09IG51bGwgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHRoaXMueCA9IDA7XG4gICAgdGhpcy55ID0gMDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSAnbnVtYmVyJyAmJiB0eXBlb2YgeSA9PSAnbnVtYmVyJyAmJiBwID09IG51bGwpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH0gZWxzZSBpZiAoeC5jb25zdHJ1Y3Rvci5uYW1lID09ICdQb2ludCcgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHAgPSB4O1xuICAgIHRoaXMueCA9IHAueDtcbiAgICB0aGlzLnkgPSBwLnk7XG4gIH1cbn1cblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLng7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLngsIHRoaXMueSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuc2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoeCwgeSwgcCkge1xuICBpZiAoeC5jb25zdHJ1Y3Rvci5uYW1lID09ICdQb2ludCcgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHAgPSB4O1xuICAgIHRoaXMuc2V0TG9jYXRpb24ocC54LCBwLnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB4ID09ICdudW1iZXInICYmIHR5cGVvZiB5ID09ICdudW1iZXInICYmIHAgPT0gbnVsbCkge1xuICAgIC8vaWYgYm90aCBwYXJhbWV0ZXJzIGFyZSBpbnRlZ2VyIGp1c3QgbW92ZSAoeCx5KSBsb2NhdGlvblxuICAgIGlmIChwYXJzZUludCh4KSA9PSB4ICYmIHBhcnNlSW50KHkpID09IHkpIHtcbiAgICAgIHRoaXMubW92ZSh4LCB5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54ID0gTWF0aC5mbG9vcih4ICsgMC41KTtcbiAgICAgIHRoaXMueSA9IE1hdGguZmxvb3IoeSArIDAuNSk7XG4gICAgfVxuICB9XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIHRoaXMueCA9IHg7XG4gIHRoaXMueSA9IHk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKGR4LCBkeSkge1xuICB0aGlzLnggKz0gZHg7XG4gIHRoaXMueSArPSBkeTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChvYmouY29uc3RydWN0b3IubmFtZSA9PSBcIlBvaW50XCIpIHtcbiAgICB2YXIgcHQgPSBvYmo7XG4gICAgcmV0dXJuIHRoaXMueCA9PSBwdC54ICYmIHRoaXMueSA9PSBwdC55O1xuICB9XG4gIHJldHVybiB0aGlzID09IG9iajtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCgpLmNvbnN0cnVjdG9yLm5hbWUgKyBcIlt4PVwiICsgdGhpcy54ICsgXCIseT1cIiArIHRoaXMueSArIFwiXVwiO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb2ludDtcblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBSZWN0YW5nbGVEKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdGhpcy54ID0gMDtcbiAgdGhpcy55ID0gMDtcbiAgdGhpcy53aWR0aCA9IDA7XG4gIHRoaXMuaGVpZ2h0ID0gMDtcblxuICBpZiAoeCAhPSBudWxsICYmIHkgIT0gbnVsbCAmJiB3aWR0aCAhPSBudWxsICYmIGhlaWdodCAhPSBudWxsKSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxufVxuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy54O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gIHRoaXMueCA9IHg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0WSA9IGZ1bmN0aW9uICh5KSB7XG4gIHRoaXMueSA9IHk7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLndpZHRoID0gd2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueCArIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRCb3R0b20gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnkgKyB0aGlzLmhlaWdodDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbiAoYSkge1xuICBpZiAodGhpcy5nZXRSaWdodCgpIDwgYS54KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuZ2V0Qm90dG9tKCkgPCBhLnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYS5nZXRSaWdodCgpIDwgdGhpcy54KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGEuZ2V0Qm90dG9tKCkgPCB0aGlzLnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldENlbnRlclggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoIC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1pblggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1heFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKSArIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55ICsgdGhpcy5oZWlnaHQgLyAyO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0TWluWSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WSgpO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0TWF4WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WSgpICsgdGhpcy5oZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRXaWR0aEhhbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLndpZHRoIC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldEhlaWdodEhhbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodCAvIDI7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlY3RhbmdsZUQ7XG5cbi8qKiovIH0pLFxuLyogMTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBVbmlxdWVJREdlbmVyZXRvcigpIHt9XG5cblVuaXF1ZUlER2VuZXJldG9yLmxhc3RJRCA9IDA7XG5cblVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEID0gZnVuY3Rpb24gKG9iaikge1xuICBpZiAoVW5pcXVlSURHZW5lcmV0b3IuaXNQcmltaXRpdmUob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbiAgaWYgKG9iai51bmlxdWVJRCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIG9iai51bmlxdWVJRDtcbiAgfVxuICBvYmoudW5pcXVlSUQgPSBVbmlxdWVJREdlbmVyZXRvci5nZXRTdHJpbmcoKTtcbiAgVW5pcXVlSURHZW5lcmV0b3IubGFzdElEKys7XG4gIHJldHVybiBvYmoudW5pcXVlSUQ7XG59O1xuXG5VbmlxdWVJREdlbmVyZXRvci5nZXRTdHJpbmcgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWYgKGlkID09IG51bGwpIGlkID0gVW5pcXVlSURHZW5lcmV0b3IubGFzdElEO1xuICByZXR1cm4gXCJPYmplY3QjXCIgKyBpZCArIFwiXCI7XG59O1xuXG5VbmlxdWVJREdlbmVyZXRvci5pc1ByaW1pdGl2ZSA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgYXJnID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoYXJnKTtcbiAgcmV0dXJuIGFyZyA9PSBudWxsIHx8IHR5cGUgIT0gXCJvYmplY3RcIiAmJiB0eXBlICE9IFwiZnVuY3Rpb25cIjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVW5pcXVlSURHZW5lcmV0b3I7XG5cbi8qKiovIH0pLFxuLyogMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9XG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIExHcmFwaE1hbmFnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xudmFyIExOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIFRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xudmFyIEVtaXR0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblxuZnVuY3Rpb24gTGF5b3V0KGlzUmVtb3RlVXNlKSB7XG4gIEVtaXR0ZXIuY2FsbCh0aGlzKTtcblxuICAvL0xheW91dCBRdWFsaXR5OiAwOmRyYWZ0LCAxOmRlZmF1bHQsIDI6cHJvb2ZcbiAgdGhpcy5sYXlvdXRRdWFsaXR5ID0gTGF5b3V0Q29uc3RhbnRzLlFVQUxJVFk7XG4gIC8vV2hldGhlciBsYXlvdXQgc2hvdWxkIGNyZWF0ZSBiZW5kcG9pbnRzIGFzIG5lZWRlZCBvciBub3RcbiAgdGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ1JFQVRFX0JFTkRTX0FTX05FRURFRDtcbiAgLy9XaGV0aGVyIGxheW91dCBzaG91bGQgYmUgaW5jcmVtZW50YWwgb3Igbm90XG4gIHRoaXMuaW5jcmVtZW50YWwgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTDtcbiAgLy9XaGV0aGVyIHdlIGFuaW1hdGUgZnJvbSBiZWZvcmUgdG8gYWZ0ZXIgbGF5b3V0IG5vZGUgcG9zaXRpb25zXG4gIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fT05fTEFZT1VUO1xuICAvL1doZXRoZXIgd2UgYW5pbWF0ZSB0aGUgbGF5b3V0IHByb2Nlc3Mgb3Igbm90XG4gIHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQ7XG4gIC8vTnVtYmVyIGl0ZXJhdGlvbnMgdGhhdCBzaG91bGQgYmUgZG9uZSBiZXR3ZWVuIHR3byBzdWNjZXNzaXZlIGFuaW1hdGlvbnNcbiAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fUEVSSU9EO1xuICAvKipcclxuICAgKiBXaGV0aGVyIG9yIG5vdCBsZWFmIG5vZGVzIChub24tY29tcG91bmQgbm9kZXMpIGFyZSBvZiB1bmlmb3JtIHNpemVzLiBXaGVuXHJcbiAgICogdGhleSBhcmUsIGJvdGggc3ByaW5nIGFuZCByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gdHdvIGxlYWYgbm9kZXMgY2FuIGJlXHJcbiAgICogY2FsY3VsYXRlZCB3aXRob3V0IHRoZSBleHBlbnNpdmUgY2xpcHBpbmcgcG9pbnQgY2FsY3VsYXRpb25zLCByZXN1bHRpbmdcclxuICAgKiBpbiBtYWpvciBzcGVlZC11cC5cclxuICAgKi9cbiAgdGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX1VOSUZPUk1fTEVBRl9OT0RFX1NJWkVTO1xuICAvKipcclxuICAgKiBUaGlzIGlzIHVzZWQgZm9yIGNyZWF0aW9uIG9mIGJlbmRwb2ludHMgYnkgdXNpbmcgZHVtbXkgbm9kZXMgYW5kIGVkZ2VzLlxyXG4gICAqIE1hcHMgYW4gTEVkZ2UgdG8gaXRzIGR1bW15IGJlbmRwb2ludCBwYXRoLlxyXG4gICAqL1xuICB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMgPSBuZXcgTWFwKCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gbmV3IExHcmFwaE1hbmFnZXIodGhpcyk7XG4gIHRoaXMuaXNMYXlvdXRGaW5pc2hlZCA9IGZhbHNlO1xuICB0aGlzLmlzU3ViTGF5b3V0ID0gZmFsc2U7XG4gIHRoaXMuaXNSZW1vdGVVc2UgPSBmYWxzZTtcblxuICBpZiAoaXNSZW1vdGVVc2UgIT0gbnVsbCkge1xuICAgIHRoaXMuaXNSZW1vdGVVc2UgPSBpc1JlbW90ZVVzZTtcbiAgfVxufVxuXG5MYXlvdXQuUkFORE9NX1NFRUQgPSAxO1xuXG5MYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFbWl0dGVyLnByb3RvdHlwZSk7XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0R3JhcGhNYW5hZ2VyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXI7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLmdldEFsbE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsTm9kZXMoKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxFZGdlcygpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uKCk7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoTWFuYWdlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGdtID0gbmV3IExHcmFwaE1hbmFnZXIodGhpcyk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gZ207XG4gIHJldHVybiBnbTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3R3JhcGggPSBmdW5jdGlvbiAodkdyYXBoKSB7XG4gIHJldHVybiBuZXcgTEdyYXBoKG51bGwsIHRoaXMuZ3JhcGhNYW5hZ2VyLCB2R3JhcGgpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5uZXdOb2RlID0gZnVuY3Rpb24gKHZOb2RlKSB7XG4gIHJldHVybiBuZXcgTE5vZGUodGhpcy5ncmFwaE1hbmFnZXIsIHZOb2RlKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3RWRnZSA9IGZ1bmN0aW9uICh2RWRnZSkge1xuICByZXR1cm4gbmV3IExFZGdlKG51bGwsIG51bGwsIHZFZGdlKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuY2hlY2tMYXlvdXRTdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpID09IG51bGwgfHwgdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmdldE5vZGVzKCkubGVuZ3RoID09IDAgfHwgdGhpcy5ncmFwaE1hbmFnZXIuaW5jbHVkZXNJbnZhbGlkRWRnZSgpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5ydW5MYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaXNMYXlvdXRGaW5pc2hlZCA9IGZhbHNlO1xuXG4gIGlmICh0aGlzLnRpbGluZ1ByZUxheW91dCkge1xuICAgIHRoaXMudGlsaW5nUHJlTGF5b3V0KCk7XG4gIH1cblxuICB0aGlzLmluaXRQYXJhbWV0ZXJzKCk7XG4gIHZhciBpc0xheW91dFN1Y2Nlc3NmdWxsO1xuXG4gIGlmICh0aGlzLmNoZWNrTGF5b3V0U3VjY2VzcygpKSB7XG4gICAgaXNMYXlvdXRTdWNjZXNzZnVsbCA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGlzTGF5b3V0U3VjY2Vzc2Z1bGwgPSB0aGlzLmxheW91dCgpO1xuICB9XG5cbiAgaWYgKExheW91dENvbnN0YW50cy5BTklNQVRFID09PSAnZHVyaW5nJykge1xuICAgIC8vIElmIHRoaXMgaXMgYSAnZHVyaW5nJyBsYXlvdXQgYW5pbWF0aW9uLiBMYXlvdXQgaXMgbm90IGZpbmlzaGVkIHlldC4gXG4gICAgLy8gV2UgbmVlZCB0byBwZXJmb3JtIHRoZXNlIGluIGluZGV4LmpzIHdoZW4gbGF5b3V0IGlzIHJlYWxseSBmaW5pc2hlZC5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNMYXlvdXRTdWNjZXNzZnVsbCkge1xuICAgIGlmICghdGhpcy5pc1N1YkxheW91dCkge1xuICAgICAgdGhpcy5kb1Bvc3RMYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy50aWxpbmdQb3N0TGF5b3V0KSB7XG4gICAgdGhpcy50aWxpbmdQb3N0TGF5b3V0KCk7XG4gIH1cblxuICB0aGlzLmlzTGF5b3V0RmluaXNoZWQgPSB0cnVlO1xuXG4gIHJldHVybiBpc0xheW91dFN1Y2Nlc3NmdWxsO1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHRoZSBvcGVyYXRpb25zIHJlcXVpcmVkIGFmdGVyIGxheW91dC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmRvUG9zdExheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgLy9hc3NlcnQgIWlzU3ViTGF5b3V0IDogXCJTaG91bGQgbm90IGJlIGNhbGxlZCBvbiBzdWItbGF5b3V0IVwiO1xuICAvLyBQcm9wYWdhdGUgZ2VvbWV0cmljIGNoYW5nZXMgdG8gdi1sZXZlbCBvYmplY3RzXG4gIGlmICghdGhpcy5pbmNyZW1lbnRhbCkge1xuICAgIHRoaXMudHJhbnNmb3JtKCk7XG4gIH1cbiAgdGhpcy51cGRhdGUoKTtcbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBnZW9tZXRyeSBvZiB0aGUgdGFyZ2V0IGdyYXBoIGFjY29yZGluZyB0b1xyXG4gKiBjYWxjdWxhdGVkIGxheW91dC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLnVwZGF0ZTIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIHVwZGF0ZSBiZW5kIHBvaW50c1xuICBpZiAodGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkKSB7XG4gICAgdGhpcy5jcmVhdGVCZW5kcG9pbnRzRnJvbUR1bW15Tm9kZXMoKTtcblxuICAgIC8vIHJlc2V0IGFsbCBlZGdlcywgc2luY2UgdGhlIHRvcG9sb2d5IGhhcyBjaGFuZ2VkXG4gICAgdGhpcy5ncmFwaE1hbmFnZXIucmVzZXRBbGxFZGdlcygpO1xuICB9XG5cbiAgLy8gcGVyZm9ybSBlZGdlLCBub2RlIGFuZCByb290IHVwZGF0ZXMgaWYgbGF5b3V0IGlzIG5vdCBjYWxsZWRcbiAgLy8gcmVtb3RlbHlcbiAgaWYgKCF0aGlzLmlzUmVtb3RlVXNlKSB7XG4gICAgLy8gdXBkYXRlIGFsbCBlZGdlc1xuICAgIHZhciBlZGdlO1xuICAgIHZhciBhbGxFZGdlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZWRnZSA9IGFsbEVkZ2VzW2ldO1xuICAgICAgLy8gICAgICB0aGlzLnVwZGF0ZShlZGdlKTtcbiAgICB9XG5cbiAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgbm9kZXNcbiAgICB2YXIgbm9kZTtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0Tm9kZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAvLyAgICAgIHRoaXMudXBkYXRlKG5vZGUpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSByb290IGdyYXBoXG4gICAgdGhpcy51cGRhdGUodGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpKTtcbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChvYmogPT0gbnVsbCkge1xuICAgIHRoaXMudXBkYXRlMigpO1xuICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIExOb2RlKSB7XG4gICAgdmFyIG5vZGUgPSBvYmo7XG4gICAgaWYgKG5vZGUuZ2V0Q2hpbGQoKSAhPSBudWxsKSB7XG4gICAgICAvLyBzaW5jZSBub2RlIGlzIGNvbXBvdW5kLCByZWN1cnNpdmVseSB1cGRhdGUgY2hpbGQgbm9kZXNcbiAgICAgIHZhciBub2RlcyA9IG5vZGUuZ2V0Q2hpbGQoKS5nZXROb2RlcygpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1cGRhdGUobm9kZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZSBsLWxldmVsIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgdi1sZXZlbCBncmFwaCBvYmplY3QsXG4gICAgLy8gdGhlbiBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHYtbGV2ZWwgbm9kZSBpbXBsZW1lbnRzIHRoZVxuICAgIC8vIGludGVyZmFjZSBVcGRhdGFibGUuXG4gICAgaWYgKG5vZGUudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2Tm9kZSA9IG5vZGUudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZOb2RlLnVwZGF0ZShub2RlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEVkZ2UpIHtcbiAgICB2YXIgZWRnZSA9IG9iajtcbiAgICAvLyBpZiB0aGUgbC1sZXZlbCBlZGdlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIGVkZ2UgaW1wbGVtZW50cyB0aGVcbiAgICAvLyBpbnRlcmZhY2UgVXBkYXRhYmxlLlxuXG4gICAgaWYgKGVkZ2UudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2RWRnZSA9IGVkZ2UudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZFZGdlLnVwZGF0ZShlZGdlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEdyYXBoKSB7XG4gICAgdmFyIGdyYXBoID0gb2JqO1xuICAgIC8vIGlmIHRoZSBsLWxldmVsIGdyYXBoIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIG9iamVjdCBpbXBsZW1lbnRzIHRoZVxuICAgIC8vIGludGVyZmFjZSBVcGRhdGFibGUuXG5cbiAgICBpZiAoZ3JhcGgudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2R3JhcGggPSBncmFwaC52R3JhcGhPYmplY3Q7XG5cbiAgICAgIC8vIGNhbGwgdGhlIHVwZGF0ZSBtZXRob2Qgb2YgdGhlIGludGVyZmFjZVxuICAgICAgdkdyYXBoLnVwZGF0ZShncmFwaCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXQgYWxsIGxheW91dCBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQgdmFsdWVzXHJcbiAqIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuaW5pdFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5pc1N1YkxheW91dCkge1xuICAgIHRoaXMubGF5b3V0UXVhbGl0eSA9IExheW91dENvbnN0YW50cy5RVUFMSVRZO1xuICAgIHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQ7XG4gICAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fUEVSSU9EO1xuICAgIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fT05fTEFZT1VUO1xuICAgIHRoaXMuaW5jcmVtZW50YWwgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTDtcbiAgICB0aGlzLmNyZWF0ZUJlbmRzQXNOZWVkZWQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DUkVBVEVfQkVORFNfQVNfTkVFREVEO1xuICAgIHRoaXMudW5pZm9ybUxlYWZOb2RlU2l6ZXMgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VTklGT1JNX0xFQUZfTk9ERV9TSVpFUztcbiAgfVxuXG4gIGlmICh0aGlzLmFuaW1hdGlvbkR1cmluZ0xheW91dCkge1xuICAgIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBmYWxzZTtcbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAobmV3TGVmdFRvcCkge1xuICBpZiAobmV3TGVmdFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRyYW5zZm9ybShuZXcgUG9pbnREKDAsIDApKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjcmVhdGUgYSB0cmFuc2Zvcm1hdGlvbiBvYmplY3QgKGZyb20gRWNsaXBzZSB0byBsYXlvdXQpLiBXaGVuIGFuXG4gICAgLy8gaW52ZXJzZSB0cmFuc2Zvcm0gaXMgYXBwbGllZCwgd2UgZ2V0IHVwcGVyLWxlZnQgY29vcmRpbmF0ZSBvZiB0aGVcbiAgICAvLyBkcmF3aW5nIG9yIHRoZSByb290IGdyYXBoIGF0IGdpdmVuIGlucHV0IGNvb3JkaW5hdGUgKHNvbWUgbWFyZ2luc1xuICAgIC8vIGFscmVhZHkgaW5jbHVkZWQgaW4gY2FsY3VsYXRpb24gb2YgbGVmdC10b3ApLlxuXG4gICAgdmFyIHRyYW5zID0gbmV3IFRyYW5zZm9ybSgpO1xuICAgIHZhciBsZWZ0VG9wID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLnVwZGF0ZUxlZnRUb3AoKTtcblxuICAgIGlmIChsZWZ0VG9wICE9IG51bGwpIHtcbiAgICAgIHRyYW5zLnNldFdvcmxkT3JnWChuZXdMZWZ0VG9wLngpO1xuICAgICAgdHJhbnMuc2V0V29ybGRPcmdZKG5ld0xlZnRUb3AueSk7XG5cbiAgICAgIHRyYW5zLnNldERldmljZU9yZ1gobGVmdFRvcC54KTtcbiAgICAgIHRyYW5zLnNldERldmljZU9yZ1kobGVmdFRvcC55KTtcblxuICAgICAgdmFyIG5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICAgICAgdmFyIG5vZGU7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBub2RlLnRyYW5zZm9ybSh0cmFucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLnBvc2l0aW9uTm9kZXNSYW5kb21seSA9IGZ1bmN0aW9uIChncmFwaCkge1xuXG4gIGlmIChncmFwaCA9PSB1bmRlZmluZWQpIHtcbiAgICAvL2Fzc2VydCAhdGhpcy5pbmNyZW1lbnRhbDtcbiAgICB0aGlzLnBvc2l0aW9uTm9kZXNSYW5kb21seSh0aGlzLmdldEdyYXBoTWFuYWdlcigpLmdldFJvb3QoKSk7XG4gICAgdGhpcy5nZXRHcmFwaE1hbmFnZXIoKS5nZXRSb290KCkudXBkYXRlQm91bmRzKHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsTm9kZTtcbiAgICB2YXIgY2hpbGRHcmFwaDtcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNoaWxkR3JhcGggPSBsTm9kZS5nZXRDaGlsZCgpO1xuXG4gICAgICBpZiAoY2hpbGRHcmFwaCA9PSBudWxsKSB7XG4gICAgICAgIGxOb2RlLnNjYXR0ZXIoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRHcmFwaC5nZXROb2RlcygpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGxOb2RlLnNjYXR0ZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25Ob2Rlc1JhbmRvbWx5KGNoaWxkR3JhcGgpO1xuICAgICAgICBsTm9kZS51cGRhdGVCb3VuZHMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0cmVlcyB3aGVyZSBlYWNoIHRyZWUgaXMgcmVwcmVzZW50ZWQgYXMgYVxyXG4gKiBsaXN0IG9mIGwtbm9kZXMuIFRoZSBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2Ygc2l6ZSAwIHdoZW46XHJcbiAqIC0gVGhlIGdyYXBoIGlzIG5vdCBmbGF0IG9yXHJcbiAqIC0gT25lIG9mIHRoZSBjb21wb25lbnQocykgb2YgdGhlIGdyYXBoIGlzIG5vdCBhIHRyZWUuXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5nZXRGbGF0Rm9yZXN0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZmxhdEZvcmVzdCA9IFtdO1xuICB2YXIgaXNGb3Jlc3QgPSB0cnVlO1xuXG4gIC8vIFF1aWNrIHJlZmVyZW5jZSBmb3IgYWxsIG5vZGVzIGluIHRoZSBncmFwaCBtYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aFxuICAvLyB0aGlzIGxheW91dC4gVGhlIGxpc3Qgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0Tm9kZXMoKTtcblxuICAvLyBGaXJzdCBiZSBzdXJlIHRoYXQgdGhlIGdyYXBoIGlzIGZsYXRcbiAgdmFyIGlzRmxhdCA9IHRydWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhbGxOb2Rlc1tpXS5nZXRDaGlsZCgpICE9IG51bGwpIHtcbiAgICAgIGlzRmxhdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiBlbXB0eSBmb3Jlc3QgaWYgdGhlIGdyYXBoIGlzIG5vdCBmbGF0LlxuICBpZiAoIWlzRmxhdCkge1xuICAgIHJldHVybiBmbGF0Rm9yZXN0O1xuICB9XG5cbiAgLy8gUnVuIEJGUyBmb3IgZWFjaCBjb21wb25lbnQgb2YgdGhlIGdyYXBoLlxuXG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgdG9CZVZpc2l0ZWQgPSBbXTtcbiAgdmFyIHBhcmVudHMgPSBuZXcgTWFwKCk7XG4gIHZhciB1blByb2Nlc3NlZE5vZGVzID0gW107XG5cbiAgdW5Qcm9jZXNzZWROb2RlcyA9IHVuUHJvY2Vzc2VkTm9kZXMuY29uY2F0KGFsbE5vZGVzKTtcblxuICAvLyBFYWNoIGl0ZXJhdGlvbiBvZiB0aGlzIGxvb3AgZmluZHMgYSBjb21wb25lbnQgb2YgdGhlIGdyYXBoIGFuZFxuICAvLyBkZWNpZGVzIHdoZXRoZXIgaXQgaXMgYSB0cmVlIG9yIG5vdC4gSWYgaXQgaXMgYSB0cmVlLCBhZGRzIGl0IHRvIHRoZVxuICAvLyBmb3Jlc3QgYW5kIGNvbnRpbnVlZCB3aXRoIHRoZSBuZXh0IGNvbXBvbmVudC5cblxuICB3aGlsZSAodW5Qcm9jZXNzZWROb2Rlcy5sZW5ndGggPiAwICYmIGlzRm9yZXN0KSB7XG4gICAgdG9CZVZpc2l0ZWQucHVzaCh1blByb2Nlc3NlZE5vZGVzWzBdKTtcblxuICAgIC8vIFN0YXJ0IHRoZSBCRlMuIEVhY2ggaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCB2aXNpdHMgYSBub2RlIGluIGFcbiAgICAvLyBCRlMgbWFubmVyLlxuICAgIHdoaWxlICh0b0JlVmlzaXRlZC5sZW5ndGggPiAwICYmIGlzRm9yZXN0KSB7XG4gICAgICAvL3Bvb2wgb3BlcmF0aW9uXG4gICAgICB2YXIgY3VycmVudE5vZGUgPSB0b0JlVmlzaXRlZFswXTtcbiAgICAgIHRvQmVWaXNpdGVkLnNwbGljZSgwLCAxKTtcbiAgICAgIHZpc2l0ZWQuYWRkKGN1cnJlbnROb2RlKTtcblxuICAgICAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgICAgIHZhciBuZWlnaGJvckVkZ2VzID0gY3VycmVudE5vZGUuZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvckVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvckVkZ2VzW2ldLmdldE90aGVyRW5kKGN1cnJlbnROb2RlKTtcblxuICAgICAgICAvLyBJZiBCRlMgaXMgbm90IGdyb3dpbmcgZnJvbSB0aGlzIG5laWdoYm9yLlxuICAgICAgICBpZiAocGFyZW50cy5nZXQoY3VycmVudE5vZGUpICE9IGN1cnJlbnROZWlnaGJvcikge1xuICAgICAgICAgIC8vIFdlIGhhdmVuJ3QgcHJldmlvdXNseSB2aXNpdGVkIHRoaXMgbmVpZ2hib3IuXG4gICAgICAgICAgaWYgKCF2aXNpdGVkLmhhcyhjdXJyZW50TmVpZ2hib3IpKSB7XG4gICAgICAgICAgICB0b0JlVmlzaXRlZC5wdXNoKGN1cnJlbnROZWlnaGJvcik7XG4gICAgICAgICAgICBwYXJlbnRzLnNldChjdXJyZW50TmVpZ2hib3IsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgaGF2ZSBwcmV2aW91c2x5IHZpc2l0ZWQgdGhpcyBuZWlnaGJvciBhbmRcbiAgICAgICAgICAvLyB0aGlzIG5laWdoYm9yIGlzIG5vdCBwYXJlbnQgb2YgY3VycmVudE5vZGUsIGdpdmVuXG4gICAgICAgICAgLy8gZ3JhcGggY29udGFpbnMgYSBjb21wb25lbnQgdGhhdCBpcyBub3QgdHJlZSwgaGVuY2VcbiAgICAgICAgICAvLyBpdCBpcyBub3QgYSBmb3Jlc3QuXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGlzRm9yZXN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIGdyYXBoIGNvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaXMgbm90IGEgdHJlZS4gRW1wdHlcbiAgICAvLyBwcmV2aW91c2x5IGZvdW5kIHRyZWVzLiBUaGUgbWV0aG9kIHdpbGwgZW5kLlxuICAgIGlmICghaXNGb3Jlc3QpIHtcbiAgICAgIGZsYXRGb3Jlc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gU2F2ZSBjdXJyZW50bHkgdmlzaXRlZCBub2RlcyBhcyBhIHRyZWUgaW4gb3VyIGZvcmVzdC4gUmVzZXRcbiAgICAvLyB2aXNpdGVkIGFuZCBwYXJlbnRzIGxpc3RzLiBDb250aW51ZSB3aXRoIHRoZSBuZXh0IGNvbXBvbmVudCBvZlxuICAgIC8vIHRoZSBncmFwaCwgaWYgYW55LlxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGVtcCA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodmlzaXRlZCkpO1xuICAgICAgICBmbGF0Rm9yZXN0LnB1c2godGVtcCk7XG4gICAgICAgIC8vZmxhdEZvcmVzdCA9IGZsYXRGb3Jlc3QuY29uY2F0KHRlbXApO1xuICAgICAgICAvL3VuUHJvY2Vzc2VkTm9kZXMucmVtb3ZlQWxsKHZpc2l0ZWQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbXAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0ZW1wW2ldO1xuICAgICAgICAgIHZhciBpbmRleCA9IHVuUHJvY2Vzc2VkTm9kZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHVuUHJvY2Vzc2VkTm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgcGFyZW50cyA9IG5ldyBNYXAoKTtcbiAgICAgIH1cbiAgfVxuXG4gIHJldHVybiBmbGF0Rm9yZXN0O1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgZHVtbXkgbm9kZXMgKGFuIGwtbGV2ZWwgbm9kZSB3aXRoIG1pbmltYWwgZGltZW5zaW9ucylcclxuICogZm9yIHRoZSBnaXZlbiBlZGdlIChvbmUgcGVyIGJlbmRwb2ludCkuIFRoZSBleGlzdGluZyBsLWxldmVsIHN0cnVjdHVyZVxyXG4gKiBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuY3JlYXRlRHVtbXlOb2Rlc0ZvckJlbmRwb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgZHVtbXlOb2RlcyA9IFtdO1xuICB2YXIgcHJldiA9IGVkZ2Uuc291cmNlO1xuXG4gIHZhciBncmFwaCA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcihlZGdlLnNvdXJjZSwgZWRnZS50YXJnZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZS5iZW5kcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgLy8gY3JlYXRlIG5ldyBkdW1teSBub2RlXG4gICAgdmFyIGR1bW15Tm9kZSA9IHRoaXMubmV3Tm9kZShudWxsKTtcbiAgICBkdW1teU5vZGUuc2V0UmVjdChuZXcgUG9pbnQoMCwgMCksIG5ldyBEaW1lbnNpb24oMSwgMSkpO1xuXG4gICAgZ3JhcGguYWRkKGR1bW15Tm9kZSk7XG5cbiAgICAvLyBjcmVhdGUgbmV3IGR1bW15IGVkZ2UgYmV0d2VlbiBwcmV2IGFuZCBkdW1teSBub2RlXG4gICAgdmFyIGR1bW15RWRnZSA9IHRoaXMubmV3RWRnZShudWxsKTtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5hZGQoZHVtbXlFZGdlLCBwcmV2LCBkdW1teU5vZGUpO1xuXG4gICAgZHVtbXlOb2Rlcy5hZGQoZHVtbXlOb2RlKTtcbiAgICBwcmV2ID0gZHVtbXlOb2RlO1xuICB9XG5cbiAgdmFyIGR1bW15RWRnZSA9IHRoaXMubmV3RWRnZShudWxsKTtcbiAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGR1bW15RWRnZSwgcHJldiwgZWRnZS50YXJnZXQpO1xuXG4gIHRoaXMuZWRnZVRvRHVtbXlOb2Rlcy5zZXQoZWRnZSwgZHVtbXlOb2Rlcyk7XG5cbiAgLy8gcmVtb3ZlIHJlYWwgZWRnZSBmcm9tIGdyYXBoIG1hbmFnZXIgaWYgaXQgaXMgaW50ZXItZ3JhcGhcbiAgaWYgKGVkZ2UuaXNJbnRlckdyYXBoKCkpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUoZWRnZSk7XG4gIH1cbiAgLy8gZWxzZSwgcmVtb3ZlIHRoZSBlZGdlIGZyb20gdGhlIGN1cnJlbnQgZ3JhcGhcbiAgZWxzZSB7XG4gICAgICBncmFwaC5yZW1vdmUoZWRnZSk7XG4gICAgfVxuXG4gIHJldHVybiBkdW1teU5vZGVzO1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYmVuZHBvaW50cyBmb3IgZWRnZXMgZnJvbSB0aGUgZHVtbXkgbm9kZXNcclxuICogYXQgbC1sZXZlbC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmNyZWF0ZUJlbmRwb2ludHNGcm9tRHVtbXlOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVkZ2VzID0gW107XG4gIGVkZ2VzID0gZWRnZXMuY29uY2F0KHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCkpO1xuICBlZGdlcyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5lZGdlVG9EdW1teU5vZGVzLmtleXMoKSkpLmNvbmNhdChlZGdlcyk7XG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBlZGdlcy5sZW5ndGg7IGsrKykge1xuICAgIHZhciBsRWRnZSA9IGVkZ2VzW2tdO1xuXG4gICAgaWYgKGxFZGdlLmJlbmRwb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHBhdGggPSB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMuZ2V0KGxFZGdlKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBkdW1teU5vZGUgPSBwYXRoW2ldO1xuICAgICAgICB2YXIgcCA9IG5ldyBQb2ludEQoZHVtbXlOb2RlLmdldENlbnRlclgoKSwgZHVtbXlOb2RlLmdldENlbnRlclkoKSk7XG5cbiAgICAgICAgLy8gdXBkYXRlIGJlbmRwb2ludCdzIGxvY2F0aW9uIGFjY29yZGluZyB0byBkdW1teSBub2RlXG4gICAgICAgIHZhciBlYnAgPSBsRWRnZS5iZW5kcG9pbnRzLmdldChpKTtcbiAgICAgICAgZWJwLnggPSBwLng7XG4gICAgICAgIGVicC55ID0gcC55O1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgZHVtbXkgbm9kZSwgZHVtbXkgZWRnZXMgaW5jaWRlbnQgd2l0aCB0aGlzXG4gICAgICAgIC8vIGR1bW15IG5vZGUgaXMgYWxzbyByZW1vdmVkICh3aXRoaW4gdGhlIHJlbW92ZSBtZXRob2QpXG4gICAgICAgIGR1bW15Tm9kZS5nZXRPd25lcigpLnJlbW92ZShkdW1teU5vZGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgdGhlIHJlYWwgZWRnZSB0byBncmFwaFxuICAgICAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGxFZGdlLCBsRWRnZS5zb3VyY2UsIGxFZGdlLnRhcmdldCk7XG4gICAgfVxuICB9XG59O1xuXG5MYXlvdXQudHJhbnNmb3JtID0gZnVuY3Rpb24gKHNsaWRlclZhbHVlLCBkZWZhdWx0VmFsdWUsIG1pbkRpdiwgbWF4TXVsKSB7XG4gIGlmIChtaW5EaXYgIT0gdW5kZWZpbmVkICYmIG1heE11bCAhPSB1bmRlZmluZWQpIHtcbiAgICB2YXIgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAoc2xpZGVyVmFsdWUgPD0gNTApIHtcbiAgICAgIHZhciBtaW5WYWx1ZSA9IGRlZmF1bHRWYWx1ZSAvIG1pbkRpdjtcbiAgICAgIHZhbHVlIC09IChkZWZhdWx0VmFsdWUgLSBtaW5WYWx1ZSkgLyA1MCAqICg1MCAtIHNsaWRlclZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1heFZhbHVlID0gZGVmYXVsdFZhbHVlICogbWF4TXVsO1xuICAgICAgdmFsdWUgKz0gKG1heFZhbHVlIC0gZGVmYXVsdFZhbHVlKSAvIDUwICogKHNsaWRlclZhbHVlIC0gNTApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYSwgYjtcblxuICAgIGlmIChzbGlkZXJWYWx1ZSA8PSA1MCkge1xuICAgICAgYSA9IDkuMCAqIGRlZmF1bHRWYWx1ZSAvIDUwMC4wO1xuICAgICAgYiA9IGRlZmF1bHRWYWx1ZSAvIDEwLjA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSA5LjAgKiBkZWZhdWx0VmFsdWUgLyA1MC4wO1xuICAgICAgYiA9IC04ICogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBhICogc2xpZGVyVmFsdWUgKyBiO1xuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgZmluZHMgYW5kIHJldHVybnMgdGhlIGNlbnRlciBvZiB0aGUgZ2l2ZW4gbm9kZXMsIGFzc3VtaW5nXHJcbiAqIHRoYXQgdGhlIGdpdmVuIG5vZGVzIGZvcm0gYSB0cmVlIGluIHRoZW1zZWx2ZXMuXHJcbiAqL1xuTGF5b3V0LmZpbmRDZW50ZXJPZlRyZWUgPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgdmFyIGxpc3QgPSBbXTtcbiAgbGlzdCA9IGxpc3QuY29uY2F0KG5vZGVzKTtcblxuICB2YXIgcmVtb3ZlZE5vZGVzID0gW107XG4gIHZhciByZW1haW5pbmdEZWdyZWVzID0gbmV3IE1hcCgpO1xuICB2YXIgZm91bmRDZW50ZXIgPSBmYWxzZTtcbiAgdmFyIGNlbnRlck5vZGUgPSBudWxsO1xuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PSAxIHx8IGxpc3QubGVuZ3RoID09IDIpIHtcbiAgICBmb3VuZENlbnRlciA9IHRydWU7XG4gICAgY2VudGVyTm9kZSA9IGxpc3RbMF07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IGxpc3RbaV07XG4gICAgdmFyIGRlZ3JlZSA9IG5vZGUuZ2V0TmVpZ2hib3JzTGlzdCgpLnNpemU7XG4gICAgcmVtYWluaW5nRGVncmVlcy5zZXQobm9kZSwgbm9kZS5nZXROZWlnaGJvcnNMaXN0KCkuc2l6ZSk7XG5cbiAgICBpZiAoZGVncmVlID09IDEpIHtcbiAgICAgIHJlbW92ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciB0ZW1wTGlzdCA9IFtdO1xuICB0ZW1wTGlzdCA9IHRlbXBMaXN0LmNvbmNhdChyZW1vdmVkTm9kZXMpO1xuXG4gIHdoaWxlICghZm91bmRDZW50ZXIpIHtcbiAgICB2YXIgdGVtcExpc3QyID0gW107XG4gICAgdGVtcExpc3QyID0gdGVtcExpc3QyLmNvbmNhdCh0ZW1wTGlzdCk7XG4gICAgdGVtcExpc3QgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBsaXN0W2ldO1xuXG4gICAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2Yobm9kZSk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZWlnaGJvdXJzID0gbm9kZS5nZXROZWlnaGJvcnNMaXN0KCk7XG5cbiAgICAgIG5laWdoYm91cnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3VyKSB7XG4gICAgICAgIGlmIChyZW1vdmVkTm9kZXMuaW5kZXhPZihuZWlnaGJvdXIpIDwgMCkge1xuICAgICAgICAgIHZhciBvdGhlckRlZ3JlZSA9IHJlbWFpbmluZ0RlZ3JlZXMuZ2V0KG5laWdoYm91cik7XG4gICAgICAgICAgdmFyIG5ld0RlZ3JlZSA9IG90aGVyRGVncmVlIC0gMTtcblxuICAgICAgICAgIGlmIChuZXdEZWdyZWUgPT0gMSkge1xuICAgICAgICAgICAgdGVtcExpc3QucHVzaChuZWlnaGJvdXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlbWFpbmluZ0RlZ3JlZXMuc2V0KG5laWdoYm91ciwgbmV3RGVncmVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlZE5vZGVzID0gcmVtb3ZlZE5vZGVzLmNvbmNhdCh0ZW1wTGlzdCk7XG5cbiAgICBpZiAobGlzdC5sZW5ndGggPT0gMSB8fCBsaXN0Lmxlbmd0aCA9PSAyKSB7XG4gICAgICBmb3VuZENlbnRlciA9IHRydWU7XG4gICAgICBjZW50ZXJOb2RlID0gbGlzdFswXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2VudGVyTm9kZTtcbn07XG5cbi8qKlxyXG4gKiBEdXJpbmcgdGhlIGNvYXJzZW5pbmcgcHJvY2VzcywgdGhpcyBsYXlvdXQgbWF5IGJlIHJlZmVyZW5jZWQgYnkgdHdvIGdyYXBoIG1hbmFnZXJzXHJcbiAqIHRoaXMgc2V0dGVyIGZ1bmN0aW9uIGdyYW50cyBhY2Nlc3MgdG8gY2hhbmdlIHRoZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBncmFwaCBtYW5hZ2VyXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5zZXRHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoZ20pIHtcbiAgdGhpcy5ncmFwaE1hbmFnZXIgPSBnbTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIFJhbmRvbVNlZWQoKSB7fVxuLy8gYWRhcHRlZCBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMDM3MjVcblJhbmRvbVNlZWQuc2VlZCA9IDE7XG5SYW5kb21TZWVkLnggPSAwO1xuXG5SYW5kb21TZWVkLm5leHREb3VibGUgPSBmdW5jdGlvbiAoKSB7XG4gIFJhbmRvbVNlZWQueCA9IE1hdGguc2luKFJhbmRvbVNlZWQuc2VlZCsrKSAqIDEwMDAwO1xuICByZXR1cm4gUmFuZG9tU2VlZC54IC0gTWF0aC5mbG9vcihSYW5kb21TZWVkLngpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSYW5kb21TZWVkO1xuXG4vKioqLyB9KSxcbi8qIDE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5mdW5jdGlvbiBUcmFuc2Zvcm0oeCwgeSkge1xuICB0aGlzLmx3b3JsZE9yZ1ggPSAwLjA7XG4gIHRoaXMubHdvcmxkT3JnWSA9IDAuMDtcbiAgdGhpcy5sZGV2aWNlT3JnWCA9IDAuMDtcbiAgdGhpcy5sZGV2aWNlT3JnWSA9IDAuMDtcbiAgdGhpcy5sd29ybGRFeHRYID0gMS4wO1xuICB0aGlzLmx3b3JsZEV4dFkgPSAxLjA7XG4gIHRoaXMubGRldmljZUV4dFggPSAxLjA7XG4gIHRoaXMubGRldmljZUV4dFkgPSAxLjA7XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRPcmdYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRPcmdYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZE9yZ1ggPSBmdW5jdGlvbiAod294KSB7XG4gIHRoaXMubHdvcmxkT3JnWCA9IHdveDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRPcmdZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRPcmdZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZE9yZ1kgPSBmdW5jdGlvbiAod295KSB7XG4gIHRoaXMubHdvcmxkT3JnWSA9IHdveTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRFeHRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRFeHRYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZEV4dFggPSBmdW5jdGlvbiAod2V4KSB7XG4gIHRoaXMubHdvcmxkRXh0WCA9IHdleDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRFeHRZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRFeHRZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZEV4dFkgPSBmdW5jdGlvbiAod2V5KSB7XG4gIHRoaXMubHdvcmxkRXh0WSA9IHdleTtcbn07XG5cbi8qIERldmljZSByZWxhdGVkICovXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlT3JnWCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZU9yZ1g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZU9yZ1ggPSBmdW5jdGlvbiAoZG94KSB7XG4gIHRoaXMubGRldmljZU9yZ1ggPSBkb3g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldERldmljZU9yZ1kgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxkZXZpY2VPcmdZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXREZXZpY2VPcmdZID0gZnVuY3Rpb24gKGRveSkge1xuICB0aGlzLmxkZXZpY2VPcmdZID0gZG95O1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5nZXREZXZpY2VFeHRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZGV2aWNlRXh0WDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0RGV2aWNlRXh0WCA9IGZ1bmN0aW9uIChkZXgpIHtcbiAgdGhpcy5sZGV2aWNlRXh0WCA9IGRleDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlRXh0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZUV4dFk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZUV4dFkgPSBmdW5jdGlvbiAoZGV5KSB7XG4gIHRoaXMubGRldmljZUV4dFkgPSBkZXk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnRyYW5zZm9ybVggPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgeERldmljZSA9IDAuMDtcbiAgdmFyIHdvcmxkRXh0WCA9IHRoaXMubHdvcmxkRXh0WDtcbiAgaWYgKHdvcmxkRXh0WCAhPSAwLjApIHtcbiAgICB4RGV2aWNlID0gdGhpcy5sZGV2aWNlT3JnWCArICh4IC0gdGhpcy5sd29ybGRPcmdYKSAqIHRoaXMubGRldmljZUV4dFggLyB3b3JsZEV4dFg7XG4gIH1cblxuICByZXR1cm4geERldmljZTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUudHJhbnNmb3JtWSA9IGZ1bmN0aW9uICh5KSB7XG4gIHZhciB5RGV2aWNlID0gMC4wO1xuICB2YXIgd29ybGRFeHRZID0gdGhpcy5sd29ybGRFeHRZO1xuICBpZiAod29ybGRFeHRZICE9IDAuMCkge1xuICAgIHlEZXZpY2UgPSB0aGlzLmxkZXZpY2VPcmdZICsgKHkgLSB0aGlzLmx3b3JsZE9yZ1kpICogdGhpcy5sZGV2aWNlRXh0WSAvIHdvcmxkRXh0WTtcbiAgfVxuXG4gIHJldHVybiB5RGV2aWNlO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5pbnZlcnNlVHJhbnNmb3JtWCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciB4V29ybGQgPSAwLjA7XG4gIHZhciBkZXZpY2VFeHRYID0gdGhpcy5sZGV2aWNlRXh0WDtcbiAgaWYgKGRldmljZUV4dFggIT0gMC4wKSB7XG4gICAgeFdvcmxkID0gdGhpcy5sd29ybGRPcmdYICsgKHggLSB0aGlzLmxkZXZpY2VPcmdYKSAqIHRoaXMubHdvcmxkRXh0WCAvIGRldmljZUV4dFg7XG4gIH1cblxuICByZXR1cm4geFdvcmxkO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5pbnZlcnNlVHJhbnNmb3JtWSA9IGZ1bmN0aW9uICh5KSB7XG4gIHZhciB5V29ybGQgPSAwLjA7XG4gIHZhciBkZXZpY2VFeHRZID0gdGhpcy5sZGV2aWNlRXh0WTtcbiAgaWYgKGRldmljZUV4dFkgIT0gMC4wKSB7XG4gICAgeVdvcmxkID0gdGhpcy5sd29ybGRPcmdZICsgKHkgLSB0aGlzLmxkZXZpY2VPcmdZKSAqIHRoaXMubHdvcmxkRXh0WSAvIGRldmljZUV4dFk7XG4gIH1cbiAgcmV0dXJuIHlXb3JsZDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuaW52ZXJzZVRyYW5zZm9ybVBvaW50ID0gZnVuY3Rpb24gKGluUG9pbnQpIHtcbiAgdmFyIG91dFBvaW50ID0gbmV3IFBvaW50RCh0aGlzLmludmVyc2VUcmFuc2Zvcm1YKGluUG9pbnQueCksIHRoaXMuaW52ZXJzZVRyYW5zZm9ybVkoaW5Qb2ludC55KSk7XG4gIHJldHVybiBvdXRQb2ludDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtO1xuXG4vKioqLyB9KSxcbi8qIDE4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG52YXIgTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG52YXIgRkRMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xudmFyIExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBJTWF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cbmZ1bmN0aW9uIEZETGF5b3V0KCkge1xuICBMYXlvdXQuY2FsbCh0aGlzKTtcblxuICB0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24gPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1VTRV9TTUFSVF9JREVBTF9FREdFX0xFTkdUSF9DQUxDVUxBVElPTjtcbiAgdGhpcy5pZGVhbEVkZ2VMZW5ndGggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIO1xuICB0aGlzLnNwcmluZ0NvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEg7XG4gIHRoaXMucmVwdWxzaW9uQ29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1JFUFVMU0lPTl9TVFJFTkdUSDtcbiAgdGhpcy5ncmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEg7XG4gIHRoaXMuY29tcG91bmRHcmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfU1RSRU5HVEg7XG4gIHRoaXMuZ3Jhdml0eVJhbmdlRmFjdG9yID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUjtcbiAgdGhpcy5jb21wb3VuZEdyYXZpdHlSYW5nZUZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9SQU5HRV9GQUNUT1I7XG4gIHRoaXMuZGlzcGxhY2VtZW50VGhyZXNob2xkUGVyTm9kZSA9IDMuMCAqIEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAxMDA7XG4gIHRoaXMuY29vbGluZ0ZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09PTElOR19GQUNUT1JfSU5DUkVNRU5UQUw7XG4gIHRoaXMuaW5pdGlhbENvb2xpbmdGYWN0b3IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMO1xuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50ID0gMC4wO1xuICB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50ID0gMC4wO1xuICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBGRExheW91dENvbnN0YW50cy5NQVhfSVRFUkFUSU9OUztcbn1cblxuRkRMYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMYXlvdXQucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMYXlvdXQpIHtcbiAgRkRMYXlvdXRbcHJvcF0gPSBMYXlvdXRbcHJvcF07XG59XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgTGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycy5jYWxsKHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgdGhpcy50b3RhbEl0ZXJhdGlvbnMgPSAwO1xuICB0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucyA9IDA7XG5cbiAgdGhpcy51c2VGUkdyaWRWYXJpYW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VU0VfU01BUlRfUkVQVUxTSU9OX1JBTkdFX0NBTENVTEFUSU9OO1xuXG4gIHRoaXMuZ3JpZCA9IFtdO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNJZGVhbEVkZ2VMZW5ndGhzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcbiAgdmFyIGxjYURlcHRoO1xuICB2YXIgc291cmNlO1xuICB2YXIgdGFyZ2V0O1xuICB2YXIgc2l6ZU9mU291cmNlSW5MY2E7XG4gIHZhciBzaXplT2ZUYXJnZXRJbkxjYTtcblxuICB2YXIgYWxsRWRnZXMgPSB0aGlzLmdldEdyYXBoTWFuYWdlcigpLmdldEFsbEVkZ2VzKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICBlZGdlID0gYWxsRWRnZXNbaV07XG5cbiAgICBlZGdlLmlkZWFsTGVuZ3RoID0gdGhpcy5pZGVhbEVkZ2VMZW5ndGg7XG5cbiAgICBpZiAoZWRnZS5pc0ludGVyR3JhcGgpIHtcbiAgICAgIHNvdXJjZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB0YXJnZXQgPSBlZGdlLmdldFRhcmdldCgpO1xuXG4gICAgICBzaXplT2ZTb3VyY2VJbkxjYSA9IGVkZ2UuZ2V0U291cmNlSW5MY2EoKS5nZXRFc3RpbWF0ZWRTaXplKCk7XG4gICAgICBzaXplT2ZUYXJnZXRJbkxjYSA9IGVkZ2UuZ2V0VGFyZ2V0SW5MY2EoKS5nZXRFc3RpbWF0ZWRTaXplKCk7XG5cbiAgICAgIGlmICh0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24pIHtcbiAgICAgICAgZWRnZS5pZGVhbExlbmd0aCArPSBzaXplT2ZTb3VyY2VJbkxjYSArIHNpemVPZlRhcmdldEluTGNhIC0gMiAqIExheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFO1xuICAgICAgfVxuXG4gICAgICBsY2FEZXB0aCA9IGVkZ2UuZ2V0TGNhKCkuZ2V0SW5jbHVzaW9uVHJlZURlcHRoKCk7XG5cbiAgICAgIGVkZ2UuaWRlYWxMZW5ndGggKz0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCAqIEZETGF5b3V0Q29uc3RhbnRzLlBFUl9MRVZFTF9JREVBTF9FREdFX0xFTkdUSF9GQUNUT1IgKiAoc291cmNlLmdldEluY2x1c2lvblRyZWVEZXB0aCgpICsgdGFyZ2V0LmdldEluY2x1c2lvblRyZWVEZXB0aCgpIC0gMiAqIGxjYURlcHRoKTtcbiAgICB9XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pbml0U3ByaW5nRW1iZWRkZXIgPSBmdW5jdGlvbiAoKSB7XG5cbiAgdmFyIHMgPSB0aGlzLmdldEFsbE5vZGVzKCkubGVuZ3RoO1xuICBpZiAodGhpcy5pbmNyZW1lbnRhbCkge1xuICAgIGlmIChzID4gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSB7XG4gICAgICB0aGlzLmNvb2xpbmdGYWN0b3IgPSBNYXRoLm1heCh0aGlzLmNvb2xpbmdGYWN0b3IgKiBGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SLCB0aGlzLmNvb2xpbmdGYWN0b3IgLSAocyAtIEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fTE9XRVJfTk9ERV9MSU1JVCkgLyAoRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAqIHRoaXMuY29vbGluZ0ZhY3RvciAqICgxIC0gRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUikpO1xuICAgIH1cbiAgICB0aGlzLm1heE5vZGVEaXNwbGFjZW1lbnQgPSBGRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlRfSU5DUkVNRU5UQUw7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHMgPiBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpIHtcbiAgICAgIHRoaXMuY29vbGluZ0ZhY3RvciA9IE1hdGgubWF4KEZETGF5b3V0Q29uc3RhbnRzLkNPT0xJTkdfQURBUFRBVElPTl9GQUNUT1IsIDEuMCAtIChzIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAvIChGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX1VQUEVSX05PREVfTElNSVQgLSBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpICogKDEgLSBGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29vbGluZ0ZhY3RvciA9IDEuMDtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsQ29vbGluZ0ZhY3RvciA9IHRoaXMuY29vbGluZ0ZhY3RvcjtcbiAgICB0aGlzLm1heE5vZGVEaXNwbGFjZW1lbnQgPSBGRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlQ7XG4gIH1cblxuICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBNYXRoLm1heCh0aGlzLmdldEFsbE5vZGVzKCkubGVuZ3RoICogNSwgdGhpcy5tYXhJdGVyYXRpb25zKTtcblxuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50VGhyZXNob2xkID0gdGhpcy5kaXNwbGFjZW1lbnRUaHJlc2hvbGRQZXJOb2RlICogdGhpcy5nZXRBbGxOb2RlcygpLmxlbmd0aDtcblxuICB0aGlzLnJlcHVsc2lvblJhbmdlID0gdGhpcy5jYWxjUmVwdWxzaW9uUmFuZ2UoKTtcbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjU3ByaW5nRm9yY2VzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbEVkZ2VzID0gdGhpcy5nZXRBbGxFZGdlcygpO1xuICB2YXIgZWRnZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIGVkZ2UgPSBsRWRnZXNbaV07XG5cbiAgICB0aGlzLmNhbGNTcHJpbmdGb3JjZShlZGdlLCBlZGdlLmlkZWFsTGVuZ3RoKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNSZXB1bHNpb25Gb3JjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBncmlkVXBkYXRlQWxsb3dlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgdmFyIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuXG4gIHZhciBpLCBqO1xuICB2YXIgbm9kZUEsIG5vZGVCO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICB2YXIgcHJvY2Vzc2VkTm9kZVNldDtcblxuICBpZiAodGhpcy51c2VGUkdyaWRWYXJpYW50KSB7XG4gICAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPT0gMSAmJiBncmlkVXBkYXRlQWxsb3dlZCkge1xuICAgICAgdGhpcy51cGRhdGVHcmlkKCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc2VkTm9kZVNldCA9IG5ldyBTZXQoKTtcblxuICAgIC8vIGNhbGN1bGF0ZSByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gZWFjaCBub2RlcyBhbmQgaXRzIHN1cnJvdW5kaW5nXG4gICAgZm9yIChpID0gMDsgaSA8IGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZUEgPSBsTm9kZXNbaV07XG4gICAgICB0aGlzLmNhbGN1bGF0ZVJlcHVsc2lvbkZvcmNlT2ZBTm9kZShub2RlQSwgcHJvY2Vzc2VkTm9kZVNldCwgZ3JpZFVwZGF0ZUFsbG93ZWQsIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUpO1xuICAgICAgcHJvY2Vzc2VkTm9kZVNldC5hZGQobm9kZUEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlQSA9IGxOb2Rlc1tpXTtcblxuICAgICAgZm9yIChqID0gaSArIDE7IGogPCBsTm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbm9kZUIgPSBsTm9kZXNbal07XG5cbiAgICAgICAgLy8gSWYgYm90aCBub2RlcyBhcmUgbm90IG1lbWJlcnMgb2YgdGhlIHNhbWUgZ3JhcGgsIHNraXAuXG4gICAgICAgIGlmIChub2RlQS5nZXRPd25lcigpICE9IG5vZGVCLmdldE93bmVyKCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsY1JlcHVsc2lvbkZvcmNlKG5vZGVBLCBub2RlQik7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyYXZpdGF0aW9uYWxGb3JjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IGxOb2Rlc1tpXTtcbiAgICB0aGlzLmNhbGNHcmF2aXRhdGlvbmFsRm9yY2Uobm9kZSk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5tb3ZlTm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsTm9kZXMgPSB0aGlzLmdldEFsbE5vZGVzKCk7XG4gIHZhciBub2RlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IGxOb2Rlc1tpXTtcbiAgICBub2RlLm1vdmUoKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNTcHJpbmdGb3JjZSA9IGZ1bmN0aW9uIChlZGdlLCBpZGVhbExlbmd0aCkge1xuICB2YXIgc291cmNlTm9kZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gIHZhciB0YXJnZXROb2RlID0gZWRnZS5nZXRUYXJnZXQoKTtcblxuICB2YXIgbGVuZ3RoO1xuICB2YXIgc3ByaW5nRm9yY2U7XG4gIHZhciBzcHJpbmdGb3JjZVg7XG4gIHZhciBzcHJpbmdGb3JjZVk7XG5cbiAgLy8gVXBkYXRlIGVkZ2UgbGVuZ3RoXG4gIGlmICh0aGlzLnVuaWZvcm1MZWFmTm9kZVNpemVzICYmIHNvdXJjZU5vZGUuZ2V0Q2hpbGQoKSA9PSBudWxsICYmIHRhcmdldE5vZGUuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgZWRnZS51cGRhdGVMZW5ndGhTaW1wbGUoKTtcbiAgfSBlbHNlIHtcbiAgICBlZGdlLnVwZGF0ZUxlbmd0aCgpO1xuXG4gICAgaWYgKGVkZ2UuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gZWRnZS5nZXRMZW5ndGgoKTtcblxuICBpZiAobGVuZ3RoID09IDApIHJldHVybjtcblxuICAvLyBDYWxjdWxhdGUgc3ByaW5nIGZvcmNlc1xuICBzcHJpbmdGb3JjZSA9IHRoaXMuc3ByaW5nQ29uc3RhbnQgKiAobGVuZ3RoIC0gaWRlYWxMZW5ndGgpO1xuXG4gIC8vIFByb2plY3QgZm9yY2Ugb250byB4IGFuZCB5IGF4ZXNcbiAgc3ByaW5nRm9yY2VYID0gc3ByaW5nRm9yY2UgKiAoZWRnZS5sZW5ndGhYIC8gbGVuZ3RoKTtcbiAgc3ByaW5nRm9yY2VZID0gc3ByaW5nRm9yY2UgKiAoZWRnZS5sZW5ndGhZIC8gbGVuZ3RoKTtcblxuICAvLyBBcHBseSBmb3JjZXMgb24gdGhlIGVuZCBub2Rlc1xuICBzb3VyY2VOb2RlLnNwcmluZ0ZvcmNlWCArPSBzcHJpbmdGb3JjZVg7XG4gIHNvdXJjZU5vZGUuc3ByaW5nRm9yY2VZICs9IHNwcmluZ0ZvcmNlWTtcbiAgdGFyZ2V0Tm9kZS5zcHJpbmdGb3JjZVggLT0gc3ByaW5nRm9yY2VYO1xuICB0YXJnZXROb2RlLnNwcmluZ0ZvcmNlWSAtPSBzcHJpbmdGb3JjZVk7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1JlcHVsc2lvbkZvcmNlID0gZnVuY3Rpb24gKG5vZGVBLCBub2RlQikge1xuICB2YXIgcmVjdEEgPSBub2RlQS5nZXRSZWN0KCk7XG4gIHZhciByZWN0QiA9IG5vZGVCLmdldFJlY3QoKTtcbiAgdmFyIG92ZXJsYXBBbW91bnQgPSBuZXcgQXJyYXkoMik7XG4gIHZhciBjbGlwUG9pbnRzID0gbmV3IEFycmF5KDQpO1xuICB2YXIgZGlzdGFuY2VYO1xuICB2YXIgZGlzdGFuY2VZO1xuICB2YXIgZGlzdGFuY2VTcXVhcmVkO1xuICB2YXIgZGlzdGFuY2U7XG4gIHZhciByZXB1bHNpb25Gb3JjZTtcbiAgdmFyIHJlcHVsc2lvbkZvcmNlWDtcbiAgdmFyIHJlcHVsc2lvbkZvcmNlWTtcblxuICBpZiAocmVjdEEuaW50ZXJzZWN0cyhyZWN0QikpIC8vIHR3byBub2RlcyBvdmVybGFwXG4gICAge1xuICAgICAgLy8gY2FsY3VsYXRlIHNlcGFyYXRpb24gYW1vdW50IGluIHggYW5kIHkgZGlyZWN0aW9uc1xuICAgICAgSUdlb21ldHJ5LmNhbGNTZXBhcmF0aW9uQW1vdW50KHJlY3RBLCByZWN0Qiwgb3ZlcmxhcEFtb3VudCwgRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCAvIDIuMCk7XG5cbiAgICAgIHJlcHVsc2lvbkZvcmNlWCA9IDIgKiBvdmVybGFwQW1vdW50WzBdO1xuICAgICAgcmVwdWxzaW9uRm9yY2VZID0gMiAqIG92ZXJsYXBBbW91bnRbMV07XG5cbiAgICAgIHZhciBjaGlsZHJlbkNvbnN0YW50ID0gbm9kZUEubm9PZkNoaWxkcmVuICogbm9kZUIubm9PZkNoaWxkcmVuIC8gKG5vZGVBLm5vT2ZDaGlsZHJlbiArIG5vZGVCLm5vT2ZDaGlsZHJlbik7XG5cbiAgICAgIC8vIEFwcGx5IGZvcmNlcyBvbiB0aGUgdHdvIG5vZGVzXG4gICAgICBub2RlQS5yZXB1bHNpb25Gb3JjZVggLT0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWSAtPSBjaGlsZHJlbkNvbnN0YW50ICogcmVwdWxzaW9uRm9yY2VZO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VYICs9IGNoaWxkcmVuQ29uc3RhbnQgKiByZXB1bHNpb25Gb3JjZVg7XG4gICAgICBub2RlQi5yZXB1bHNpb25Gb3JjZVkgKz0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWTtcbiAgICB9IGVsc2UgLy8gbm8gb3ZlcmxhcFxuICAgIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSBkaXN0YW5jZVxuXG4gICAgICBpZiAodGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyAmJiBub2RlQS5nZXRDaGlsZCgpID09IG51bGwgJiYgbm9kZUIuZ2V0Q2hpbGQoKSA9PSBudWxsKSAvLyBzaW1wbHkgYmFzZSByZXB1bHNpb24gb24gZGlzdGFuY2Ugb2Ygbm9kZSBjZW50ZXJzXG4gICAgICAgIHtcbiAgICAgICAgICBkaXN0YW5jZVggPSByZWN0Qi5nZXRDZW50ZXJYKCkgLSByZWN0QS5nZXRDZW50ZXJYKCk7XG4gICAgICAgICAgZGlzdGFuY2VZID0gcmVjdEIuZ2V0Q2VudGVyWSgpIC0gcmVjdEEuZ2V0Q2VudGVyWSgpO1xuICAgICAgICB9IGVsc2UgLy8gdXNlIGNsaXBwaW5nIHBvaW50c1xuICAgICAgICB7XG4gICAgICAgICAgSUdlb21ldHJ5LmdldEludGVyc2VjdGlvbihyZWN0QSwgcmVjdEIsIGNsaXBQb2ludHMpO1xuXG4gICAgICAgICAgZGlzdGFuY2VYID0gY2xpcFBvaW50c1syXSAtIGNsaXBQb2ludHNbMF07XG4gICAgICAgICAgZGlzdGFuY2VZID0gY2xpcFBvaW50c1szXSAtIGNsaXBQb2ludHNbMV07XG4gICAgICAgIH1cblxuICAgICAgLy8gTm8gcmVwdWxzaW9uIHJhbmdlLiBGUiBncmlkIHZhcmlhbnQgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGlzLlxuICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlWCkgPCBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1QpIHtcbiAgICAgICAgZGlzdGFuY2VYID0gSU1hdGguc2lnbihkaXN0YW5jZVgpICogRkRMYXlvdXRDb25zdGFudHMuTUlOX1JFUFVMU0lPTl9ESVNUO1xuICAgICAgfVxuXG4gICAgICBpZiAoTWF0aC5hYnMoZGlzdGFuY2VZKSA8IEZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVCkge1xuICAgICAgICBkaXN0YW5jZVkgPSBJTWF0aC5zaWduKGRpc3RhbmNlWSkgKiBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1Q7XG4gICAgICB9XG5cbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlWCAqIGRpc3RhbmNlWCArIGRpc3RhbmNlWSAqIGRpc3RhbmNlWTtcbiAgICAgIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3F1YXJlZCk7XG5cbiAgICAgIHJlcHVsc2lvbkZvcmNlID0gdGhpcy5yZXB1bHNpb25Db25zdGFudCAqIG5vZGVBLm5vT2ZDaGlsZHJlbiAqIG5vZGVCLm5vT2ZDaGlsZHJlbiAvIGRpc3RhbmNlU3F1YXJlZDtcblxuICAgICAgLy8gUHJvamVjdCBmb3JjZSBvbnRvIHggYW5kIHkgYXhlc1xuICAgICAgcmVwdWxzaW9uRm9yY2VYID0gcmVwdWxzaW9uRm9yY2UgKiBkaXN0YW5jZVggLyBkaXN0YW5jZTtcbiAgICAgIHJlcHVsc2lvbkZvcmNlWSA9IHJlcHVsc2lvbkZvcmNlICogZGlzdGFuY2VZIC8gZGlzdGFuY2U7XG5cbiAgICAgIC8vIEFwcGx5IGZvcmNlcyBvbiB0aGUgdHdvIG5vZGVzICAgIFxuICAgICAgbm9kZUEucmVwdWxzaW9uRm9yY2VYIC09IHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWSAtPSByZXB1bHNpb25Gb3JjZVk7XG4gICAgICBub2RlQi5yZXB1bHNpb25Gb3JjZVggKz0gcmVwdWxzaW9uRm9yY2VYO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VZICs9IHJlcHVsc2lvbkZvcmNlWTtcbiAgICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyYXZpdGF0aW9uYWxGb3JjZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciBvd25lckdyYXBoO1xuICB2YXIgb3duZXJDZW50ZXJYO1xuICB2YXIgb3duZXJDZW50ZXJZO1xuICB2YXIgZGlzdGFuY2VYO1xuICB2YXIgZGlzdGFuY2VZO1xuICB2YXIgYWJzRGlzdGFuY2VYO1xuICB2YXIgYWJzRGlzdGFuY2VZO1xuICB2YXIgZXN0aW1hdGVkU2l6ZTtcbiAgb3duZXJHcmFwaCA9IG5vZGUuZ2V0T3duZXIoKTtcblxuICBvd25lckNlbnRlclggPSAob3duZXJHcmFwaC5nZXRSaWdodCgpICsgb3duZXJHcmFwaC5nZXRMZWZ0KCkpIC8gMjtcbiAgb3duZXJDZW50ZXJZID0gKG93bmVyR3JhcGguZ2V0VG9wKCkgKyBvd25lckdyYXBoLmdldEJvdHRvbSgpKSAvIDI7XG4gIGRpc3RhbmNlWCA9IG5vZGUuZ2V0Q2VudGVyWCgpIC0gb3duZXJDZW50ZXJYO1xuICBkaXN0YW5jZVkgPSBub2RlLmdldENlbnRlclkoKSAtIG93bmVyQ2VudGVyWTtcbiAgYWJzRGlzdGFuY2VYID0gTWF0aC5hYnMoZGlzdGFuY2VYKSArIG5vZGUuZ2V0V2lkdGgoKSAvIDI7XG4gIGFic0Rpc3RhbmNlWSA9IE1hdGguYWJzKGRpc3RhbmNlWSkgKyBub2RlLmdldEhlaWdodCgpIC8gMjtcblxuICBpZiAobm9kZS5nZXRPd25lcigpID09IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSkgLy8gaW4gdGhlIHJvb3QgZ3JhcGhcbiAgICB7XG4gICAgICBlc3RpbWF0ZWRTaXplID0gb3duZXJHcmFwaC5nZXRFc3RpbWF0ZWRTaXplKCkgKiB0aGlzLmdyYXZpdHlSYW5nZUZhY3RvcjtcblxuICAgICAgaWYgKGFic0Rpc3RhbmNlWCA+IGVzdGltYXRlZFNpemUgfHwgYWJzRGlzdGFuY2VZID4gZXN0aW1hdGVkU2l6ZSkge1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VYID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VYO1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VZID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VZO1xuICAgICAgfVxuICAgIH0gZWxzZSAvLyBpbnNpZGUgYSBjb21wb3VuZFxuICAgIHtcbiAgICAgIGVzdGltYXRlZFNpemUgPSBvd25lckdyYXBoLmdldEVzdGltYXRlZFNpemUoKSAqIHRoaXMuY29tcG91bmRHcmF2aXR5UmFuZ2VGYWN0b3I7XG5cbiAgICAgIGlmIChhYnNEaXN0YW5jZVggPiBlc3RpbWF0ZWRTaXplIHx8IGFic0Rpc3RhbmNlWSA+IGVzdGltYXRlZFNpemUpIHtcbiAgICAgICAgbm9kZS5ncmF2aXRhdGlvbkZvcmNlWCA9IC10aGlzLmdyYXZpdHlDb25zdGFudCAqIGRpc3RhbmNlWCAqIHRoaXMuY29tcG91bmRHcmF2aXR5Q29uc3RhbnQ7XG4gICAgICAgIG5vZGUuZ3Jhdml0YXRpb25Gb3JjZVkgPSAtdGhpcy5ncmF2aXR5Q29uc3RhbnQgKiBkaXN0YW5jZVkgKiB0aGlzLmNvbXBvdW5kR3Jhdml0eUNvbnN0YW50O1xuICAgICAgfVxuICAgIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pc0NvbnZlcmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNvbnZlcmdlZDtcbiAgdmFyIG9zY2lsYXRpbmcgPSBmYWxzZTtcblxuICBpZiAodGhpcy50b3RhbEl0ZXJhdGlvbnMgPiB0aGlzLm1heEl0ZXJhdGlvbnMgLyAzKSB7XG4gICAgb3NjaWxhdGluZyA9IE1hdGguYWJzKHRoaXMudG90YWxEaXNwbGFjZW1lbnQgLSB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50KSA8IDI7XG4gIH1cblxuICBjb252ZXJnZWQgPSB0aGlzLnRvdGFsRGlzcGxhY2VtZW50IDwgdGhpcy50b3RhbERpc3BsYWNlbWVudFRocmVzaG9sZDtcblxuICB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50ID0gdGhpcy50b3RhbERpc3BsYWNlbWVudDtcblxuICByZXR1cm4gY29udmVyZ2VkIHx8IG9zY2lsYXRpbmc7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ICYmICF0aGlzLmlzU3ViTGF5b3V0KSB7XG4gICAgaWYgKHRoaXMubm90QW5pbWF0ZWRJdGVyYXRpb25zID09IHRoaXMuYW5pbWF0aW9uUGVyaW9kKSB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgdGhpcy5ub3RBbmltYXRlZEl0ZXJhdGlvbnMgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucysrO1xuICAgIH1cbiAgfVxufTtcblxuLy9UaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gKHdlaWdodCkgZm9yIGFsbCBub2Rlc1xuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNOb09mQ2hpbGRyZW5Gb3JBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGU7XG4gIHZhciBhbGxOb2RlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIG5vZGUgPSBhbGxOb2Rlc1tpXTtcbiAgICBub2RlLm5vT2ZDaGlsZHJlbiA9IG5vZGUuZ2V0Tm9PZkNoaWxkcmVuKCk7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBGUi1HcmlkIFZhcmlhbnQgUmVwdWxzaW9uIEZvcmNlIENhbGN1bGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyaWQgPSBmdW5jdGlvbiAoZ3JhcGgpIHtcblxuICB2YXIgc2l6ZVggPSAwO1xuICB2YXIgc2l6ZVkgPSAwO1xuXG4gIHNpemVYID0gcGFyc2VJbnQoTWF0aC5jZWlsKChncmFwaC5nZXRSaWdodCgpIC0gZ3JhcGguZ2V0TGVmdCgpKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcbiAgc2l6ZVkgPSBwYXJzZUludChNYXRoLmNlaWwoKGdyYXBoLmdldEJvdHRvbSgpIC0gZ3JhcGguZ2V0VG9wKCkpIC8gdGhpcy5yZXB1bHNpb25SYW5nZSkpO1xuXG4gIHZhciBncmlkID0gbmV3IEFycmF5KHNpemVYKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemVYOyBpKyspIHtcbiAgICBncmlkW2ldID0gbmV3IEFycmF5KHNpemVZKTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZVg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZVk7IGorKykge1xuICAgICAgZ3JpZFtpXVtqXSA9IG5ldyBBcnJheSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBncmlkO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmFkZE5vZGVUb0dyaWQgPSBmdW5jdGlvbiAodiwgbGVmdCwgdG9wKSB7XG5cbiAgdmFyIHN0YXJ0WCA9IDA7XG4gIHZhciBmaW5pc2hYID0gMDtcbiAgdmFyIHN0YXJ0WSA9IDA7XG4gIHZhciBmaW5pc2hZID0gMDtcblxuICBzdGFydFggPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS54IC0gbGVmdCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIGZpbmlzaFggPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS53aWR0aCArIHYuZ2V0UmVjdCgpLnggLSBsZWZ0KSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcbiAgc3RhcnRZID0gcGFyc2VJbnQoTWF0aC5mbG9vcigodi5nZXRSZWN0KCkueSAtIHRvcCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIGZpbmlzaFkgPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS5oZWlnaHQgKyB2LmdldFJlY3QoKS55IC0gdG9wKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnRYOyBpIDw9IGZpbmlzaFg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSBzdGFydFk7IGogPD0gZmluaXNoWTsgaisrKSB7XG4gICAgICB0aGlzLmdyaWRbaV1bal0ucHVzaCh2KTtcbiAgICAgIHYuc2V0R3JpZENvb3JkaW5hdGVzKHN0YXJ0WCwgZmluaXNoWCwgc3RhcnRZLCBmaW5pc2hZKTtcbiAgICB9XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS51cGRhdGVHcmlkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaTtcbiAgdmFyIG5vZGVBO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuXG4gIHRoaXMuZ3JpZCA9IHRoaXMuY2FsY0dyaWQodGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpKTtcblxuICAvLyBwdXQgYWxsIG5vZGVzIHRvIHByb3BlciBncmlkIGNlbGxzXG4gIGZvciAoaSA9IDA7IGkgPCBsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlQSA9IGxOb2Rlc1tpXTtcbiAgICB0aGlzLmFkZE5vZGVUb0dyaWQobm9kZUEsIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXRMZWZ0KCksIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXRUb3AoKSk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjdWxhdGVSZXB1bHNpb25Gb3JjZU9mQU5vZGUgPSBmdW5jdGlvbiAobm9kZUEsIHByb2Nlc3NlZE5vZGVTZXQsIGdyaWRVcGRhdGVBbGxvd2VkLCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKSB7XG5cbiAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPT0gMSAmJiBncmlkVXBkYXRlQWxsb3dlZCB8fCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKSB7XG4gICAgdmFyIHN1cnJvdW5kaW5nID0gbmV3IFNldCgpO1xuICAgIG5vZGVBLnN1cnJvdW5kaW5nID0gbmV3IEFycmF5KCk7XG4gICAgdmFyIG5vZGVCO1xuICAgIHZhciBncmlkID0gdGhpcy5ncmlkO1xuXG4gICAgZm9yICh2YXIgaSA9IG5vZGVBLnN0YXJ0WCAtIDE7IGkgPCBub2RlQS5maW5pc2hYICsgMjsgaSsrKSB7XG4gICAgICBmb3IgKHZhciBqID0gbm9kZUEuc3RhcnRZIC0gMTsgaiA8IG5vZGVBLmZpbmlzaFkgKyAyOyBqKyspIHtcbiAgICAgICAgaWYgKCEoaSA8IDAgfHwgaiA8IDAgfHwgaSA+PSBncmlkLmxlbmd0aCB8fCBqID49IGdyaWRbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgZ3JpZFtpXVtqXS5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgbm9kZUIgPSBncmlkW2ldW2pdW2tdO1xuXG4gICAgICAgICAgICAvLyBJZiBib3RoIG5vZGVzIGFyZSBub3QgbWVtYmVycyBvZiB0aGUgc2FtZSBncmFwaCwgXG4gICAgICAgICAgICAvLyBvciBib3RoIG5vZGVzIGFyZSB0aGUgc2FtZSwgc2tpcC5cbiAgICAgICAgICAgIGlmIChub2RlQS5nZXRPd25lcigpICE9IG5vZGVCLmdldE93bmVyKCkgfHwgbm9kZUEgPT0gbm9kZUIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSByZXB1bHNpb24gZm9yY2UgYmV0d2VlblxuICAgICAgICAgICAgLy8gbm9kZUEgYW5kIG5vZGVCIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZFxuICAgICAgICAgICAgaWYgKCFwcm9jZXNzZWROb2RlU2V0Lmhhcyhub2RlQikgJiYgIXN1cnJvdW5kaW5nLmhhcyhub2RlQikpIHtcbiAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlWCA9IE1hdGguYWJzKG5vZGVBLmdldENlbnRlclgoKSAtIG5vZGVCLmdldENlbnRlclgoKSkgLSAobm9kZUEuZ2V0V2lkdGgoKSAvIDIgKyBub2RlQi5nZXRXaWR0aCgpIC8gMik7XG4gICAgICAgICAgICAgIHZhciBkaXN0YW5jZVkgPSBNYXRoLmFicyhub2RlQS5nZXRDZW50ZXJZKCkgLSBub2RlQi5nZXRDZW50ZXJZKCkpIC0gKG5vZGVBLmdldEhlaWdodCgpIC8gMiArIG5vZGVCLmdldEhlaWdodCgpIC8gMik7XG5cbiAgICAgICAgICAgICAgLy8gaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gbm9kZUEgYW5kIG5vZGVCIFxuICAgICAgICAgICAgICAvLyBpcyBsZXNzIHRoZW4gY2FsY3VsYXRpb24gcmFuZ2VcbiAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlWCA8PSB0aGlzLnJlcHVsc2lvblJhbmdlICYmIGRpc3RhbmNlWSA8PSB0aGlzLnJlcHVsc2lvblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgLy90aGVuIGFkZCBub2RlQiB0byBzdXJyb3VuZGluZyBvZiBub2RlQVxuICAgICAgICAgICAgICAgIHN1cnJvdW5kaW5nLmFkZChub2RlQik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlQS5zdXJyb3VuZGluZyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoc3Vycm91bmRpbmcpKTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZUEuc3Vycm91bmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLmNhbGNSZXB1bHNpb25Gb3JjZShub2RlQSwgbm9kZUEuc3Vycm91bmRpbmdbaV0pO1xuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1JlcHVsc2lvblJhbmdlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gMC4wO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGRExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxuZnVuY3Rpb24gRkRMYXlvdXRFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBMRWRnZS5jYWxsKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSk7XG4gIHRoaXMuaWRlYWxMZW5ndGggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIO1xufVxuXG5GRExheW91dEVkZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMRWRnZS5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wIGluIExFZGdlKSB7XG4gIEZETGF5b3V0RWRnZVtwcm9wXSA9IExFZGdlW3Byb3BdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0RWRnZTtcblxuLyoqKi8gfSksXG4vKiAyMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5mdW5jdGlvbiBGRExheW91dE5vZGUoZ20sIGxvYywgc2l6ZSwgdk5vZGUpIHtcbiAgLy8gYWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgaXMgaGFuZGxlZCBpbnNpZGUgTE5vZGVcbiAgTE5vZGUuY2FsbCh0aGlzLCBnbSwgbG9jLCBzaXplLCB2Tm9kZSk7XG4gIC8vU3ByaW5nLCByZXB1bHNpb24gYW5kIGdyYXZpdGF0aW9uYWwgZm9yY2VzIGFjdGluZyBvbiB0aGlzIG5vZGVcbiAgdGhpcy5zcHJpbmdGb3JjZVggPSAwO1xuICB0aGlzLnNwcmluZ0ZvcmNlWSA9IDA7XG4gIHRoaXMucmVwdWxzaW9uRm9yY2VYID0gMDtcbiAgdGhpcy5yZXB1bHNpb25Gb3JjZVkgPSAwO1xuICB0aGlzLmdyYXZpdGF0aW9uRm9yY2VYID0gMDtcbiAgdGhpcy5ncmF2aXRhdGlvbkZvcmNlWSA9IDA7XG4gIC8vQW1vdW50IGJ5IHdoaWNoIHRoaXMgbm9kZSBpcyB0byBiZSBtb3ZlZCBpbiB0aGlzIGl0ZXJhdGlvblxuICB0aGlzLmRpc3BsYWNlbWVudFggPSAwO1xuICB0aGlzLmRpc3BsYWNlbWVudFkgPSAwO1xuXG4gIC8vU3RhcnQgYW5kIGZpbmlzaCBncmlkIGNvb3JkaW5hdGVzIHRoYXQgdGhpcyBub2RlIGlzIGZhbGxlbiBpbnRvXG4gIHRoaXMuc3RhcnRYID0gMDtcbiAgdGhpcy5maW5pc2hYID0gMDtcbiAgdGhpcy5zdGFydFkgPSAwO1xuICB0aGlzLmZpbmlzaFkgPSAwO1xuXG4gIC8vR2VvbWV0cmljIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgdGhpcy5zdXJyb3VuZGluZyA9IFtdO1xufVxuXG5GRExheW91dE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMTm9kZS5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wIGluIExOb2RlKSB7XG4gIEZETGF5b3V0Tm9kZVtwcm9wXSA9IExOb2RlW3Byb3BdO1xufVxuXG5GRExheW91dE5vZGUucHJvdG90eXBlLnNldEdyaWRDb29yZGluYXRlcyA9IGZ1bmN0aW9uIChfc3RhcnRYLCBfZmluaXNoWCwgX3N0YXJ0WSwgX2ZpbmlzaFkpIHtcbiAgdGhpcy5zdGFydFggPSBfc3RhcnRYO1xuICB0aGlzLmZpbmlzaFggPSBfZmluaXNoWDtcbiAgdGhpcy5zdGFydFkgPSBfc3RhcnRZO1xuICB0aGlzLmZpbmlzaFkgPSBfZmluaXNoWTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRkRMYXlvdXROb2RlO1xuXG4vKioqLyB9KSxcbi8qIDIxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIERpbWVuc2lvbkQod2lkdGgsIGhlaWdodCkge1xuICB0aGlzLndpZHRoID0gMDtcbiAgdGhpcy5oZWlnaHQgPSAwO1xuICBpZiAod2lkdGggIT09IG51bGwgJiYgaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICB9XG59XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy53aWR0aDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLnNldFdpZHRoID0gZnVuY3Rpb24gKHdpZHRoKSB7XG4gIHRoaXMud2lkdGggPSB3aWR0aDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xufTtcblxuRGltZW5zaW9uRC5wcm90b3R5cGUuc2V0SGVpZ2h0ID0gZnVuY3Rpb24gKGhlaWdodCkge1xuICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGltZW5zaW9uRDtcblxuLyoqKi8gfSksXG4vKiAyMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuZnVuY3Rpb24gSGFzaE1hcCgpIHtcbiAgdGhpcy5tYXAgPSB7fTtcbiAgdGhpcy5rZXlzID0gW107XG59XG5cbkhhc2hNYXAucHJvdG90eXBlLnB1dCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHZhciB0aGVJZCA9IFVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEKGtleSk7XG4gIGlmICghdGhpcy5jb250YWlucyh0aGVJZCkpIHtcbiAgICB0aGlzLm1hcFt0aGVJZF0gPSB2YWx1ZTtcbiAgICB0aGlzLmtleXMucHVzaChrZXkpO1xuICB9XG59O1xuXG5IYXNoTWFwLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQoa2V5KTtcbiAgcmV0dXJuIHRoaXMubWFwW2tleV0gIT0gbnVsbDtcbn07XG5cbkhhc2hNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQoa2V5KTtcbiAgcmV0dXJuIHRoaXMubWFwW3RoZUlkXTtcbn07XG5cbkhhc2hNYXAucHJvdG90eXBlLmtleVNldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMua2V5cztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaE1hcDtcblxuLyoqKi8gfSksXG4vKiAyMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuZnVuY3Rpb24gSGFzaFNldCgpIHtcbiAgdGhpcy5zZXQgPSB7fTtcbn1cbjtcblxuSGFzaFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgdGhlSWQgPSBVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopO1xuICBpZiAoIXRoaXMuY29udGFpbnModGhlSWQpKSB0aGlzLnNldFt0aGVJZF0gPSBvYmo7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGRlbGV0ZSB0aGlzLnNldFtVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopXTtcbn07XG5cbkhhc2hTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnNldCA9IHt9O1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0aGlzLnNldFtVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopXSA9PSBvYmo7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zaXplKCkgPT09IDA7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZXQpLmxlbmd0aDtcbn07XG5cbi8vY29uY2F0cyB0aGlzLnNldCB0byB0aGUgZ2l2ZW4gbGlzdFxuSGFzaFNldC5wcm90b3R5cGUuYWRkQWxsVG8gPSBmdW5jdGlvbiAobGlzdCkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2V0KTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgbGlzdC5wdXNoKHRoaXMuc2V0W2tleXNbaV1dKTtcbiAgfVxufTtcblxuSGFzaFNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuc2V0KS5sZW5ndGg7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5hZGRBbGwgPSBmdW5jdGlvbiAobGlzdCkge1xuICB2YXIgcyA9IGxpc3QubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciB2ID0gbGlzdFtpXTtcbiAgICB0aGlzLmFkZCh2KTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoU2V0O1xuXG4vKioqLyB9KSxcbi8qIDI0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuICogQSBjbGFzc2ljIFF1aWNrc29ydCBhbGdvcml0aG0gd2l0aCBIb2FyZSdzIHBhcnRpdGlvblxuICogLSBXb3JrcyBhbHNvIG9uIExpbmtlZExpc3Qgb2JqZWN0c1xuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTGlua2VkTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgUXVpY2tzb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFF1aWNrc29ydChBLCBjb21wYXJlRnVuY3Rpb24pIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFF1aWNrc29ydCk7XG5cbiAgICAgICAgaWYgKGNvbXBhcmVGdW5jdGlvbiAhPT0gbnVsbCB8fCBjb21wYXJlRnVuY3Rpb24gIT09IHVuZGVmaW5lZCkgdGhpcy5jb21wYXJlRnVuY3Rpb24gPSB0aGlzLl9kZWZhdWx0Q29tcGFyZUZ1bmN0aW9uO1xuXG4gICAgICAgIHZhciBsZW5ndGggPSB2b2lkIDA7XG4gICAgICAgIGlmIChBIGluc3RhbmNlb2YgTGlua2VkTGlzdCkgbGVuZ3RoID0gQS5zaXplKCk7ZWxzZSBsZW5ndGggPSBBLmxlbmd0aDtcblxuICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgMCwgbGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFF1aWNrc29ydCwgW3tcbiAgICAgICAga2V5OiAnX3F1aWNrc29ydCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfcXVpY2tzb3J0KEEsIHAsIHIpIHtcbiAgICAgICAgICAgIGlmIChwIDwgcikge1xuICAgICAgICAgICAgICAgIHZhciBxID0gdGhpcy5fcGFydGl0aW9uKEEsIHAsIHIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3F1aWNrc29ydChBLCBwLCBxKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgcSArIDEsIHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfcGFydGl0aW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9wYXJ0aXRpb24oQSwgcCwgcikge1xuICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9nZXQoQSwgcCk7XG4gICAgICAgICAgICB2YXIgaSA9IHA7XG4gICAgICAgICAgICB2YXIgaiA9IHI7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLmNvbXBhcmVGdW5jdGlvbih4LCB0aGlzLl9nZXQoQSwgaikpKSB7XG4gICAgICAgICAgICAgICAgICAgIGotLTtcbiAgICAgICAgICAgICAgICB9d2hpbGUgKHRoaXMuY29tcGFyZUZ1bmN0aW9uKHRoaXMuX2dldChBLCBpKSwgeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1pZiAoaSA8IGopIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3dhcChBLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfZ2V0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXQob2JqZWN0LCBpbmRleCkge1xuICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExpbmtlZExpc3QpIHJldHVybiBvYmplY3QuZ2V0X29iamVjdF9hdChpbmRleCk7ZWxzZSByZXR1cm4gb2JqZWN0W2luZGV4XTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3NldCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0KG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgTGlua2VkTGlzdCkgb2JqZWN0LnNldF9vYmplY3RfYXQoaW5kZXgsIHZhbHVlKTtlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3N3YXAnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3N3YXAoQSwgaSwgaikge1xuICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLl9nZXQoQSwgaSk7XG4gICAgICAgICAgICB0aGlzLl9zZXQoQSwgaSwgdGhpcy5fZ2V0KEEsIGopKTtcbiAgICAgICAgICAgIHRoaXMuX3NldChBLCBqLCB0ZW1wKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2RlZmF1bHRDb21wYXJlRnVuY3Rpb24nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX2RlZmF1bHRDb21wYXJlRnVuY3Rpb24oYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIgPiBhO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIFF1aWNrc29ydDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBRdWlja3NvcnQ7XG5cbi8qKiovIH0pLFxuLyogMjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyoqXG4gKiAgIE5lZWRsZW1hbi1XdW5zY2ggYWxnb3JpdGhtIGlzIGFuIHByb2NlZHVyZSB0byBjb21wdXRlIHRoZSBvcHRpbWFsIGdsb2JhbCBhbGlnbm1lbnQgb2YgdHdvIHN0cmluZ1xuICogICBzZXF1ZW5jZXMgYnkgUy5CLk5lZWRsZW1hbiBhbmQgQy5ELld1bnNjaCAoMTk3MCkuXG4gKlxuICogICBBc2lkZSBmcm9tIHRoZSBpbnB1dHMsIHlvdSBjYW4gYXNzaWduIHRoZSBzY29yZXMgZm9yLFxuICogICAtIE1hdGNoOiBUaGUgdHdvIGNoYXJhY3RlcnMgYXQgdGhlIGN1cnJlbnQgaW5kZXggYXJlIHNhbWUuXG4gKiAgIC0gTWlzbWF0Y2g6IFRoZSB0d28gY2hhcmFjdGVycyBhdCB0aGUgY3VycmVudCBpbmRleCBhcmUgZGlmZmVyZW50LlxuICogICAtIEluc2VydGlvbi9EZWxldGlvbihnYXBzKTogVGhlIGJlc3QgYWxpZ25tZW50IGludm9sdmVzIG9uZSBsZXR0ZXIgYWxpZ25pbmcgdG8gYSBnYXAgaW4gdGhlIG90aGVyIHN0cmluZy5cbiAqL1xuXG52YXIgTmVlZGxlbWFuV3Vuc2NoID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5lZWRsZW1hbld1bnNjaChzZXF1ZW5jZTEsIHNlcXVlbmNlMikge1xuICAgICAgICB2YXIgbWF0Y2hfc2NvcmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XG4gICAgICAgIHZhciBtaXNtYXRjaF9wZW5hbHR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAtMTtcbiAgICAgICAgdmFyIGdhcF9wZW5hbHR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAtMTtcblxuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTmVlZGxlbWFuV3Vuc2NoKTtcblxuICAgICAgICB0aGlzLnNlcXVlbmNlMSA9IHNlcXVlbmNlMTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZTIgPSBzZXF1ZW5jZTI7XG4gICAgICAgIHRoaXMubWF0Y2hfc2NvcmUgPSBtYXRjaF9zY29yZTtcbiAgICAgICAgdGhpcy5taXNtYXRjaF9wZW5hbHR5ID0gbWlzbWF0Y2hfcGVuYWx0eTtcbiAgICAgICAgdGhpcy5nYXBfcGVuYWx0eSA9IGdhcF9wZW5hbHR5O1xuXG4gICAgICAgIC8vIEp1c3QgdGhlIHJlbW92ZSByZWR1bmRhbmN5XG4gICAgICAgIHRoaXMuaU1heCA9IHNlcXVlbmNlMS5sZW5ndGggKyAxO1xuICAgICAgICB0aGlzLmpNYXggPSBzZXF1ZW5jZTIubGVuZ3RoICsgMTtcblxuICAgICAgICAvLyBHcmlkIG1hdHJpeCBvZiBzY29yZXNcbiAgICAgICAgdGhpcy5ncmlkID0gbmV3IEFycmF5KHRoaXMuaU1heCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pTWF4OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZFtpXSA9IG5ldyBBcnJheSh0aGlzLmpNYXgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuak1heDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkW2ldW2pdID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYWNlYmFjayBtYXRyaXggKDJEIGFycmF5LCBlYWNoIGNlbGwgaXMgYW4gYXJyYXkgb2YgYm9vbGVhbiB2YWx1ZXMgZm9yIFtgRGlhZ2AsIGBVcGAsIGBMZWZ0YF0gcG9zaXRpb25zKVxuICAgICAgICB0aGlzLnRyYWNlYmFja0dyaWQgPSBuZXcgQXJyYXkodGhpcy5pTWF4KTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRoaXMuaU1heDsgX2krKykge1xuICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pXSA9IG5ldyBBcnJheSh0aGlzLmpNYXgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgdGhpcy5qTWF4OyBfaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pXVtfal0gPSBbbnVsbCwgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgYWxpZ25lZCBzZXF1ZW5jZXMgKHJldHVybiBtdWx0aXBsZSBwb3NzaWJpbGl0aWVzKVxuICAgICAgICB0aGlzLmFsaWdubWVudHMgPSBbXTtcblxuICAgICAgICAvLyBGaW5hbCBhbGlnbm1lbnQgc2NvcmVcbiAgICAgICAgdGhpcy5zY29yZSA9IC0xO1xuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBzY29yZXMgYW5kIHRyYWNlYmFja3NcbiAgICAgICAgdGhpcy5jb21wdXRlR3JpZHMoKTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoTmVlZGxlbWFuV3Vuc2NoLCBbe1xuICAgICAgICBrZXk6IFwiZ2V0U2NvcmVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjb3JlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NvcmU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJnZXRBbGlnbm1lbnRzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBbGlnbm1lbnRzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ25tZW50cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1haW4gZHluYW1pYyBwcm9ncmFtbWluZyBwcm9jZWR1cmVcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImNvbXB1dGVHcmlkc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcHV0ZUdyaWRzKCkge1xuICAgICAgICAgICAgLy8gRmlsbCBpbiB0aGUgZmlyc3Qgcm93XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHRoaXMuak1heDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkWzBdW2pdID0gdGhpcy5ncmlkWzBdW2ogLSAxXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkWzBdW2pdID0gW2ZhbHNlLCBmYWxzZSwgdHJ1ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpcnN0IGNvbHVtblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmlNYXg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtpXVswXSA9IHRoaXMuZ3JpZFtpIC0gMV1bMF0gKyB0aGlzLmdhcF9wZW5hbHR5O1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFtpXVswXSA9IFtmYWxzZSwgdHJ1ZSwgZmFsc2VdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBGaWxsIHRoZSByZXN0IG9mIHRoZSBncmlkXG4gICAgICAgICAgICBmb3IgKHZhciBfaTIgPSAxOyBfaTIgPCB0aGlzLmlNYXg7IF9pMisrKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2oyID0gMTsgX2oyIDwgdGhpcy5qTWF4OyBfajIrKykge1xuICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBtYXggc2NvcmUocykgYW1vbmcgW2BEaWFnYCwgYFVwYCwgYExlZnRgXVxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlhZyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VxdWVuY2UxW19pMiAtIDFdID09PSB0aGlzLnNlcXVlbmNlMltfajIgLSAxXSkgZGlhZyA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajIgLSAxXSArIHRoaXMubWF0Y2hfc2NvcmU7ZWxzZSBkaWFnID0gdGhpcy5ncmlkW19pMiAtIDFdW19qMiAtIDFdICsgdGhpcy5taXNtYXRjaF9wZW5hbHR5O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cCA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajJdICsgdGhpcy5nYXBfcGVuYWx0eTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSB0aGlzLmdyaWRbX2kyXVtfajIgLSAxXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgZXhpc3RzIG11bHRpcGxlIG1heCB2YWx1ZXMsIGNhcHR1cmUgdGhlbSBmb3IgbXVsdGlwbGUgcGF0aHNcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heE9mID0gW2RpYWcsIHVwLCBsZWZ0XTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGljZXMgPSB0aGlzLmFycmF5QWxsTWF4SW5kZXhlcyhtYXhPZik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIEdyaWRzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtfaTJdW19qMl0gPSBtYXhPZltpbmRpY2VzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pMl1bX2oyXSA9IFtpbmRpY2VzLmluY2x1ZGVzKDApLCBpbmRpY2VzLmluY2x1ZGVzKDEpLCBpbmRpY2VzLmluY2x1ZGVzKDIpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGlnbm1lbnQgc2NvcmVcbiAgICAgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLmdyaWRbdGhpcy5pTWF4IC0gMV1bdGhpcy5qTWF4IC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXRzIGFsbCBwb3NzaWJsZSB2YWxpZCBzZXF1ZW5jZSBjb21iaW5hdGlvbnNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImFsaWdubWVudFRyYWNlYmFja1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYWxpZ25tZW50VHJhY2ViYWNrKCkge1xuICAgICAgICAgICAgdmFyIGluUHJvY2Vzc0FsaWdubWVudHMgPSBbXTtcblxuICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbdGhpcy5zZXF1ZW5jZTEubGVuZ3RoLCB0aGlzLnNlcXVlbmNlMi5sZW5ndGhdLFxuICAgICAgICAgICAgICAgIHNlcTE6IFwiXCIsXG4gICAgICAgICAgICAgICAgc2VxMjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHdoaWxlIChpblByb2Nlc3NBbGlnbm1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBpblByb2Nlc3NBbGlnbm1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHZhciBkaXJlY3Rpb25zID0gdGhpcy50cmFjZWJhY2tHcmlkW2N1cnJlbnQucG9zWzBdXVtjdXJyZW50LnBvc1sxXV07XG5cbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBpblByb2Nlc3NBbGlnbm1lbnRzLnB1c2goeyBwb3M6IFtjdXJyZW50LnBvc1swXSAtIDEsIGN1cnJlbnQucG9zWzFdIC0gMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiB0aGlzLnNlcXVlbmNlMVtjdXJyZW50LnBvc1swXSAtIDFdICsgY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMjogdGhpcy5zZXF1ZW5jZTJbY3VycmVudC5wb3NbMV0gLSAxXSArIGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnNbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbY3VycmVudC5wb3NbMF0gLSAxLCBjdXJyZW50LnBvc1sxXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiB0aGlzLnNlcXVlbmNlMVtjdXJyZW50LnBvc1swXSAtIDFdICsgY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMjogJy0nICsgY3VycmVudC5zZXEyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uc1syXSkge1xuICAgICAgICAgICAgICAgICAgICBpblByb2Nlc3NBbGlnbm1lbnRzLnB1c2goeyBwb3M6IFtjdXJyZW50LnBvc1swXSwgY3VycmVudC5wb3NbMV0gLSAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTE6ICctJyArIGN1cnJlbnQuc2VxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTI6IHRoaXMuc2VxdWVuY2UyW2N1cnJlbnQucG9zWzFdIC0gMV0gKyBjdXJyZW50LnNlcTJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQucG9zWzBdID09PSAwICYmIGN1cnJlbnQucG9zWzFdID09PSAwKSB0aGlzLmFsaWdubWVudHMucHVzaCh7IHNlcXVlbmNlMTogY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTI6IGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbGlnbm1lbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGVscGVyIEZ1bmN0aW9uc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZ2V0QWxsSW5kZXhlc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWxsSW5kZXhlcyhhcnIsIHZhbCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICAgICAgICBpID0gLTE7XG4gICAgICAgICAgICB3aGlsZSAoKGkgPSBhcnIuaW5kZXhPZih2YWwsIGkgKyAxKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaW5kZXhlcy5wdXNoKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJhcnJheUFsbE1heEluZGV4ZXNcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFycmF5QWxsTWF4SW5kZXhlcyhhcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsSW5kZXhlcyhhcnJheSwgTWF0aC5tYXguYXBwbHkobnVsbCwgYXJyYXkpKTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBOZWVkbGVtYW5XdW5zY2g7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTmVlZGxlbWFuV3Vuc2NoO1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBsYXlvdXRCYXNlID0gZnVuY3Rpb24gbGF5b3V0QmFzZSgpIHtcbiAgcmV0dXJuO1xufTtcblxubGF5b3V0QmFzZS5GRExheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xubGF5b3V0QmFzZS5GRExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5sYXlvdXRCYXNlLkZETGF5b3V0RWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xubGF5b3V0QmFzZS5GRExheW91dE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcbmxheW91dEJhc2UuRGltZW5zaW9uRCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xubGF5b3V0QmFzZS5IYXNoTWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5sYXlvdXRCYXNlLkhhc2hTZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcbmxheW91dEJhc2UuSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbmxheW91dEJhc2UuSU1hdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xubGF5b3V0QmFzZS5JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5sYXlvdXRCYXNlLlBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5sYXlvdXRCYXNlLlBvaW50RCA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5sYXlvdXRCYXNlLlJhbmRvbVNlZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbmxheW91dEJhc2UuUmVjdGFuZ2xlRCA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xubGF5b3V0QmFzZS5UcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcbmxheW91dEJhc2UuVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcbmxheW91dEJhc2UuUXVpY2tzb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5sYXlvdXRCYXNlLkxpbmtlZExpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcbmxheW91dEJhc2UuTEdyYXBoT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbmxheW91dEJhc2UuTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbmxheW91dEJhc2UuTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xubGF5b3V0QmFzZS5MR3JhcGhNYW5hZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbmxheW91dEJhc2UuTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xubGF5b3V0QmFzZS5MYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbmxheW91dEJhc2UuTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbmxheW91dEJhc2UuTmVlZGxlbWFuV3Vuc2NoID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbGF5b3V0QmFzZTtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBFbWl0dGVyKCkge1xuICB0aGlzLmxpc3RlbmVycyA9IFtdO1xufVxuXG52YXIgcCA9IEVtaXR0ZXIucHJvdG90eXBlO1xuXG5wLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50LCBjYWxsYmFjaykge1xuICB0aGlzLmxpc3RlbmVycy5wdXNoKHtcbiAgICBldmVudDogZXZlbnQsXG4gICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gIH0pO1xufTtcblxucC5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IHRoaXMubGlzdGVuZXJzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbCA9IHRoaXMubGlzdGVuZXJzW2ldO1xuXG4gICAgaWYgKGwuZXZlbnQgPT09IGV2ZW50ICYmIGwuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59O1xuXG5wLmVtaXQgPSBmdW5jdGlvbiAoZXZlbnQsIGRhdGEpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBsID0gdGhpcy5saXN0ZW5lcnNbaV07XG5cbiAgICBpZiAoZXZlbnQgPT09IGwuZXZlbnQpIHtcbiAgICAgIGwuY2FsbGJhY2soZGF0YSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVtaXR0ZXI7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImxheW91dC1iYXNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImF2c2RmQmFzZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJhdnNkZkJhc2VcIl0gPSBmYWN0b3J5KHJvb3RbXCJsYXlvdXRCYXNlXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8wX187XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBBVlNERiBsYXlvdXQgcGVyXG4gKiBjaXJjbGUuXG4gKlxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MR3JhcGg7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBJbml0aWFsaXphdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEFWU0RGQ2lyY2xlKHBhcmVudCwgZ3JhcGhNZ3IsIHZPYmplY3QpIHtcbiAgICBMR3JhcGguY2FsbCh0aGlzLCBwYXJlbnQsIGdyYXBoTWdyLCB2T2JqZWN0KTtcbiAgICB0aGlzLmluT3JkZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSAwO1xuICAgIHRoaXMubm9kZVNlcGFyYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIHRoaXMucGVyaW1ldGVyID0gMDtcbiAgICB0aGlzLmNlbnRlclggPSAwO1xuICAgIHRoaXMuY2VudGVyWSA9IDA7XG4gICAgdGhpcy5yYWRpdXMgPSAwO1xufVxuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExHcmFwaC5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wZXJ0eSBpbiBMR3JhcGgpIHtcbiAgICBBVlNERkNpcmNsZVtwcm9wZXJ0eV0gPSBMR3JhcGhbcHJvcGVydHldO1xufVxuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuaW5pdE9yZGVyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5PcmRlciA9IFtdO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhcnJheSBpbiB3aGljaCB0aGUgbm9kZXMgb2YgdGhpcyBjaXJjbGUgYXJlIGtlcHQgaW4gb3JkZXIuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0T3JkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5PcmRlcjtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgeC1jb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgb2YgdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0Q2VudGVyWCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jZW50ZXJYO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGNlbnRlciBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmNlbnRlclk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJhZGl1cyBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmFkaXVzO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgb2YgdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROb2RlcygpLmxlbmd0aDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyBpbiB0aGlzXG4vLyBjaXJjbGUgYnkgYWRkaW5nIHVwIHRoZSBjcm9zc2luZyBudW1iZXIgb2YgaW5kaXZpZHVhbCBub2RlcyBvbiBpdC5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRUb3RhbENyb3NzaW5nT2ZDaXJjbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjcm9zc2luZ051bWJlciA9IDA7XG5cbiAgICBmb3IgKHZhciBub2RlIGluIHNlbGYuaW5PcmRlcikge1xuICAgICAgICB2YXIgbm9kZUNyb3NzaW5nID0gbm9kZS5nZXRUb3RhbENyb3NzaW5nT2ZFZGdlcygpO1xuICAgICAgICBpZiAobm9kZUNyb3NzaW5nID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGNyb3NzaW5nTnVtYmVyICs9IG5vZGVDcm9zc2luZztcbiAgICB9XG5cbiAgICByZXR1cm4gY3Jvc3NpbmdOdW1iZXIgLyA0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBvciBub3QgYWxsIG9mIHRoZSB2ZXJ0aWNlcyBvZiB0aGlzIGNpcmNsZSBhcmVcbi8vIGFzc2lnbmVkIGFuIGluZGV4IG9uIHRoZSBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuaGFzRmluaXNoZWRPcmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXggPT09IHRoaXMuZ2V0Tm9kZXMoKS5sZW5ndGg7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG5vZGUgc2VwYXJhdGlvbiBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXROb2RlU2VwYXJhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlU2VwYXJhdGlvbjtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbm9kZSBzZXBhcmF0aW9uIG9mIHRoaXMgY2lyY2xlLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLnNldE5vZGVTZXBhcmF0aW9uID0gZnVuY3Rpb24gKG5vZGVTZXBhcmF0aW9uKSB7XG4gICAgdGhpcy5ub2RlU2VwYXJhdGlvbiA9IG5vZGVTZXBhcmF0aW9uO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gdHJhdmVyc2VzIHRoZSB2ZXJ0aWNlcyBvZiB0aGlzIGNpcmNsZSBhbmQgY29ycmVjdHMgdGhlIGFuZ2xlXG4vLyBvZiB0aGUgdmVydGljZXMgd2l0aCByZXNwZWN0IHRvIHRoZWlyIGNpcmNsZSBpbmRpY2VzLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLmNvcnJlY3RBbmdsZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuY3VycmVudEluZGV4ID0gMDtcblxuICAgIHNlbGYuaW5PcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnB1dEluT3JkZXIobm9kZSk7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIGdpdmVuIG5vZGUgb24gdGhlIGNpcmNsZSBpbiB0aGUgY3VycmVudCBvcmRlciBhbmRcbi8vIHNldHMgaXRzIGFuZ2xlIGFwcHJvcHJpYXRlbHkuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUucHV0SW5PcmRlciA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXROb2RlcygpO1xuXG4gICAgLy8gTm90ZSB0aGF0IGlkIGF0dHJpYnV0ZSBvZiBhIG5vZGUgaXMgYWRkZWQgYmVmb3JlXG4gICAgLy8gQVZTREZMYXlvdXQgaXMgY2FsbGVkXG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobm9kZXNbaV0uaWQgPT0gbm9kZS5pZCkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIHRocm93IFwiVGhlIG5vZGUgbXVzdCBiZSBhIG1lbWJlciBvZiBMR3JhcGhcIjtcbiAgICB9XG5cbiAgICBzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXhdID0gbm9kZTtcbiAgICBub2RlLnNldEluZGV4KHNlbGYuY3VycmVudEluZGV4KTtcblxuICAgIGlmIChzZWxmLmN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICBub2RlLnNldEFuZ2xlKDAuMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5zZXRBbmdsZShzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXggLSAxXS5nZXRBbmdsZSgpICsgMiAqIE1hdGguUEkgKiAobm9kZS5nZXREaWFnb25hbCgpIC8gMiArIHNlbGYubm9kZVNlcGFyYXRpb24gKyBzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXggLSAxXS5nZXREaWFnb25hbCgpIC8gMikgLyBzZWxmLnBlcmltZXRlcik7XG4gICAgfVxuXG4gICAgc2VsZi5jdXJyZW50SW5kZXgrKztcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbmV4dCBub2RlIHRvIGJlIHBsYWNlZCBvbiB0aGlzIGNpcmNsZSB3aXRoXG4vLyByZXNwZWN0IHRvIHRoZSBBVlNERiBhbGdvcml0aG0uXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZmluZE5vZGVUb1BsYWNlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc0RlZ3JlZU5vZGUgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBGaW5kIHRoZSBzbWFsbGVzdCBkZWdyZWUgdmVydGV4IGlmIHRoZSBzdGFjayBpcyBlbXB0eVxuICAgIGlmIChzZWxmLnN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzRGVncmVlTm9kZSA9IHNlbGYuZmluZFVub3JkZXJlZFNtYWxsZXN0RGVncmVlTm9kZSgpO1xuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBmaXJzdCB2ZXJ0ZXggaW4gdGhlIHN0YWNrIG5vdCB5ZXQgcGxhY2VkXG4gICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgZm91bmRVbm9yZGVyTm9kZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWZvdW5kVW5vcmRlck5vZGUgJiYgIShzZWxmLnN0YWNrLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBzRGVncmVlTm9kZSA9IHNlbGYuc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgZm91bmRVbm9yZGVyTm9kZSA9ICFzRGVncmVlTm9kZS5pc09yZGVyZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmb3VuZFVub3JkZXJOb2RlKSB7XG4gICAgICAgICAgICAgICAgc0RlZ3JlZU5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIC8vIElmIG5vIHVub3JkZXJlZCB2ZXJ0ZXggaXMgZm91bmQgaW4gdGhlIHN0YWNrLCBmaW5kIG9uZVxuICAgIC8vIGZyb20gdGhlIHJlbWFpbmluZyBvbmVzXG4gICAgaWYgKHNEZWdyZWVOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc0RlZ3JlZU5vZGUgPSBzZWxmLmZpbmRVbm9yZGVyZWRTbWFsbGVzdERlZ3JlZU5vZGUoKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIHVub3JkZXJlZCBuZWlnaGJvcnMgb2YgdGhpcyBub2RlIHRvIHRoZSBzdGFja1xuICAgIGlmIChzRGVncmVlTm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBzRGVncmVlTm9kZS5nZXROZWlnaGJvcnNTb3J0ZWRCeURlZ3JlZSgpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSBuZWlnaGJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFuZWlnaGJvci5pc09yZGVyZWQoKSkgLy8gQ2hlY2sgaGVyZSBmb3IgcG9zc2libGUgZXJyb3JcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNEZWdyZWVOb2RlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSByYWRpdXMgb2YgdGhpcyBjaXJjbGUgd2l0aCByZXNwZWN0IHRvIHRoZSBzaXplc1xuLy8gb2YgdGhlIHZlcnRpY2VzIGFuZCB0aGUgbm9kZSBzZXBhcmF0aW9uIHBhcmFtZXRlci5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5jYWxjdWxhdGVSYWRpdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3RhbERpYWdvbmFsID0gMDtcblxuICAgIHNlbGYuZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB0b3RhbERpYWdvbmFsICs9IE1hdGguc3FydChub2RlLmdldFdpZHRoKCkgKiBub2RlLmdldFdpZHRoKCkgKyBub2RlLmdldEhlaWdodCgpICogbm9kZS5nZXRIZWlnaHQoKSk7XG4gICAgfSk7XG5cbiAgICBzZWxmLnBlcmltZXRlciA9IHRvdGFsRGlhZ29uYWwgKyBzZWxmLmdldE5vZGVzKCkubGVuZ3RoICogc2VsZi5ub2RlU2VwYXJhdGlvbjtcbiAgICB2YXIgcmFkaXVzID0gc2VsZi5wZXJpbWV0ZXIgLyAoMiAqIE1hdGguUEkpO1xuXG4gICAgLy8gQ2hlY2sgaGVyZSBmb3IgcG9zc2libGUgZXJyb3JcblxuICAgIHNlbGYuZ2V0UGFyZW50KCkuc2V0V2lkdGgoMiAqIHJhZGl1cyk7XG4gICAgc2VsZi5nZXRQYXJlbnQoKS5zZXRIZWlnaHQoMiAqIHJhZGl1cyk7XG4gICAgc2VsZi5nZXRQYXJlbnQoKS5zZXRDZW50ZXIoc2VsZi5nZXRQYXJlbnQoKS5nZXRXaWR0aCgpLCBzZWxmLmdldFBhcmVudCgpLmdldEhlaWdodCgpKTtcblxuICAgIHNlbGYuY2VudGVyWCA9IHNlbGYuZ2V0UGFyZW50KCkuZ2V0Q2VudGVyWCgpO1xuICAgIHNlbGYuY2VudGVyWSA9IHNlbGYuZ2V0UGFyZW50KCkuZ2V0Q2VudGVyWSgpO1xuICAgIHNlbGYucmFkaXVzID0gc2VsZi5nZXRQYXJlbnQoKS5nZXRIZWlnaHQoKSAvIDI7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjcm9zc2luZ3Mgb2YgYWxsIHZlcnRpY2VzIG9mXG4vLyB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5jYWxjdWxhdGVFZGdlQ3Jvc3NpbmdzT2ZOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5jYWxjdWxhdGVUb3RhbENyb3NzaW5nKCk7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGluZGV4IG9mIGVhY2ggdmVydGV4IHRvIGl0cyBwb3NpdGlvbiBpbiBpbk9yZGVyXG4vLyBhcnJheS4gTm90ZSB0aGF0IGluZGV4IG9mIGEgbm9kZSBjYW4gYmUgZGlmZmVyZW50IGZyb20gaXRzIHBsYWNlIGluIHRoZVxuLy8gYXJyYXkgZHVlIHRvIGNyb3NzaW5nIHJlZHVjdGlvbiBwaGFzZSBvZiB0aGUgQVZTREYgYWxnb3JpdGhtLiBJdCBsb2Fkc1xuLy8gb2xkIGluZGV4IHZhbHVlcyB0byB2ZXJ0aWNlcyBkdWUgdG8gYW4gaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZlxuLy8gY3Jvc3NpbmdzIHdpdGggdGhlIG5ldyBpbmRpY2VzLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLmxvYWRPbGRJbmRpY2VzT2ZOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL3RoaXMuaW5PcmRlci5mb3JFYWNoKCAobm9kZSxpbmRleCkgPT4gbm9kZS5zZXRJbmRleChpbmRleCkpO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaW5PcmRlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLmluT3JkZXJbaV0uc2V0SW5kZXgoaSk7XG4gICAgfVxufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBwb3NpdGlvbiBvZiBlYWNoIG5vZGUgaW4gaW5PcmRlciBhcnJheSB0byBpdHMgaW5kZXguXG4vLyBOb3RlIHRoYXQgaW5kZXggb2YgYSBub2RlIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSBpdHMgcGxhY2UgaW4gdGhlIGluT3JkZXJcbi8vIGFycmF5IGR1ZSB0byBjcm9zc2luZyByZWR1Y3Rpb24gcGhhc2Ugb2YgdGhlIEFWU0RGIGFsZ29yaXRobS4gVGhpcyBmdW5jdGlvblxuLy8gcHV0cyB0aGUgbm9kZXMgdG8gdGhlaXIgbmV3IGluZGV4IHZhbHVlcyBpbiBpbk9yZGVyIGFycmF5IGR1ZSB0byBhXG4vLyBkZWNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIGNyb3NzaW5ncyB3aXRoIHRoZSBuZXcgaW5kaWNlcy5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5yZU9yZGVyVmVydGljZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLmluT3JkZXJbbm9kZS5nZXRJbmRleCgpXSA9IG5vZGU7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuZCByZXR1cm5zIHRoZSB1bm9yZGVyZWQgc21hbGxlc3QgZGVncmVlIHZlcnRleCBvblxuLy8gdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZmluZFVub3JkZXJlZFNtYWxsZXN0RGVncmVlTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWluRGVncmVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgdmFyIHNEZWdyZWVOb2RlID0gdm9pZCAwO1xuXG4gICAgdGhpcy5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0RGVncmVlKCkgPCBtaW5EZWdyZWUgJiYgIW5vZGUuaXNPcmRlcmVkKCkpIHtcbiAgICAgICAgICAgIG1pbkRlZ3JlZSA9IG5vZGUuZ2V0RGVncmVlKCk7XG4gICAgICAgICAgICBzRGVncmVlTm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzRGVncmVlTm9kZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZDaXJjbGU7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MYXlvdXRDb25zdGFudHM7XG5cbmZ1bmN0aW9uIEFWU0RGQ29uc3RhbnRzKCkge31cblxuLy8gQVZTREZDb25zdGFudHMgaW5oZXJpdHMgcHJvcGVydGllcyBpbiBMYXlvdXRDb25zdGFudHNcbmZvciAodmFyIHByb3AgaW4gTGF5b3V0Q29uc3RhbnRzKSB7XG4gICAgQVZTREZDb25zdGFudHNbcHJvcF0gPSBMYXlvdXRDb25zdGFudHNbcHJvcF07XG59XG5cbkFWU0RGQ29uc3RhbnRzLkRFRkFVTFRfTk9ERV9TRVBBUkFUSU9OID0gNjA7XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZDb25zdGFudHM7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBBVlNERiBsYXlvdXQgcGVyXG4gKiBlZGdlLlxuICpcblxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuTEVkZ2U7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBJbml0aWFsaXphdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEFWU0RGRWRnZShzb3VyY2UsIHRhcmdldCwgdkVkZ2UpIHtcbiAgICBMRWRnZS5jYWxsKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSk7XG59XG5cbkFWU0RGRWRnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExFZGdlLnByb3RvdHlwZSk7XG5cbmZvciAodmFyIHByb3BlcnRpZXMgaW4gTEVkZ2UpIHtcbiAgICBBVlNERkVkZ2VbcHJvcGVydGllc10gPSBMRWRnZVtwcm9wZXJ0aWVzXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhlIGZ1bmN0aW9uIGdldE90aGVyRW5kIHJldHVybnMgdGhlIG90aGVyIGVuZCBvZiB0aGlzIGVkZ2UuXG5BVlNERkVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gTEVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kKG5vZGUpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhpcyBlZGdlIGNyb3NzZXMgd2l0aCB0aGUgaW5wdXQgZWRnZS4gSXRcbi8vIHJldHVybnMgZmFsc2UsIGlmIGFueSBvZiB0aGUgdmVydGljZXMgdGhvc2UgZWRnZXMgYXJlIGluY2lkZW50IHRvIGFyZSBub3Rcbi8vIHlldCBwbGFjZWQgb24gdGhlIGNpcmNsZS5cbkFWU0RGRWRnZS5wcm90b3R5cGUuY3Jvc3Nlc1dpdGhFZGdlID0gZnVuY3Rpb24gKG90aGVyRWRnZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc291cmNlUG9zID0gc2VsZi5nZXRTb3VyY2UoKS5nZXRJbmRleCgpO1xuICAgIHZhciB0YXJnZXRQb3MgPSBzZWxmLmdldFRhcmdldCgpLmdldEluZGV4KCk7XG4gICAgdmFyIG90aGVyU291cmNlUG9zID0gb3RoZXJFZGdlLmdldFNvdXJjZSgpLmdldEluZGV4KCk7XG4gICAgdmFyIG90aGVyVGFyZ2V0UG9zID0gb3RoZXJFZGdlLmdldFRhcmdldCgpLmdldEluZGV4KCk7XG5cbiAgICAvLyBpZiBhbnkgb2YgdGhlIHZlcnRpY2VzIHRob3NlIHR3byBlZGdlcyBhcmUgbm90IHlldCBwbGFjZWRcbiAgICBpZiAoc291cmNlUG9zID09PSAtMSB8fCB0YXJnZXRQb3MgPT09IC0xIHx8IG90aGVyU291cmNlUG9zID09PSAtMSB8fCBvdGhlclRhcmdldFBvcyA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBvdGhlclNvdXJjZURpc3QgPSBvdGhlckVkZ2UuZ2V0U291cmNlKCkuZ2V0Q2lyY0Rpc3RXaXRoVGhlTm9kZShzZWxmLmdldFNvdXJjZSgpKTtcbiAgICB2YXIgb3RoZXJUYXJnZXREaXN0ID0gb3RoZXJFZGdlLmdldFRhcmdldCgpLmdldENpcmNEaXN0V2l0aFRoZU5vZGUoc2VsZi5nZXRTb3VyY2UoKSk7XG4gICAgdmFyIHRoaXNUYXJnZXREaXN0ID0gc2VsZi5nZXRUYXJnZXQoKS5nZXRDaXJjRGlzdFdpdGhUaGVOb2RlKHNlbGYuZ2V0U291cmNlKCkpO1xuXG4gICAgaWYgKHRoaXNUYXJnZXREaXN0IDwgTWF0aC5tYXgob3RoZXJTb3VyY2VEaXN0LCBvdGhlclRhcmdldERpc3QpICYmIHRoaXNUYXJnZXREaXN0ID4gTWF0aC5taW4ob3RoZXJTb3VyY2VEaXN0LCBvdGhlclRhcmdldERpc3QpICYmIG90aGVyVGFyZ2V0RGlzdCAhPT0gMCAmJiBvdGhlclNvdXJjZURpc3QgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgaWYgdGhpcyBlZGdlIGNyb3NzZXMgd2l0aCB0aGUgaW5wdXQgZWRnZSwgMFxuLy8gb3RoZXJ3aXNlLlxuQVZTREZFZGdlLnByb3RvdHlwZS5jcm9zc2luZ1dpdGhFZGdlID0gZnVuY3Rpb24gKG90aGVyRWRnZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcmVzdWx0ID0gc2VsZi5jcm9zc2VzV2l0aEVkZ2Uob3RoZXJFZGdlKTtcblxuICAgIHJldHVybiByZXN1bHQgPyAxIDogMDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyBvZiB0aGlzIGVkZ2Ugd2l0aFxuLy8gYWxsIHRoZSBlZGdlcyBnaXZlbiBpbiB0aGUgaW5wdXQgbGlzdC5cbkFWU0RGRWRnZS5wcm90b3R5cGUuY2FsY3VsYXRlVG90YWxDcm9zc2luZ1dpdGhMaXN0ID0gZnVuY3Rpb24gKGVkZ2VMaXN0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3RhbENyb3NzaW5nID0gMDtcblxuICAgIGVkZ2VMaXN0LmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRvdGFsQ3Jvc3NpbmcgKz0gc2VsZi5jcm9zc2luZ1dpdGhFZGdlKGVkZ2UpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsQ3Jvc3Npbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFWU0RGRWRnZTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGRhdGEgYW5kIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgZm9yIEFWU0RGIGxheW91dCBwZXJcbiAqIG5vZGUuXG4gKlxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxOb2RlO1xudmFyIFF1aWNrc29ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuUXVpY2tzb3J0O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogSW5pdGlhbGl6YXRpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBBVlNERk5vZGUoZ20sIHZOb2RlLCBsb2MsIHNpemUpIHtcbiAgICAvLyBDb25zdHJ1Y3RvciAxOiBBVlNERk5vZGUoZ20sIHZOb2RlLCBsb2MsIHNpemUpXG4gICAgaWYgKGxvYyAhPT0gdW5kZWZpbmVkICYmIHNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBMTm9kZS5jYWxsKHRoaXMsIGdtLCB2Tm9kZSwgbG9jLCBzaXplKTtcbiAgICB9XG4gICAgLy8gQ29uc3RydWN0b3IgMjogQVZTREZOb2RlKGdtLCB2Tm9kZSlcbiAgICBlbHNlIHtcbiAgICAgICAgICAgIExOb2RlLmNhbGwodGhpcywgZ20sIHZOb2RlKTtcbiAgICAgICAgfVxuXG4gICAgLy8gQW5nbGUgb2YgdGhpcyBub2RlIG9uIHRoZSBvd25lciBjaXJjbGUgaW4gcmFkaWFuc1xuICAgIHRoaXMuYW5nbGUgPSAwO1xuXG4gICAgLy8gSW5kZXggb2YgdGhpcyBub2RlIG9uIHRoZSBvd25lciBjaXJjbGVcbiAgICB0aGlzLmNpcmNsZUluZGV4ID0gLTE7XG5cbiAgICAvLyBUb3RhbCBudW1iZXIgb2YgY3Jvc3NpbmdzIG9mIHRoZSBlZGdlcyB0aGlzIG5vZGUgaXMgaW5jaWRlbnQgdG9cbiAgICB0aGlzLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzID0gLTE7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBjdXJyZW50IGVkZ2UgY3Jvc3NpbmcgbnVtYmVyIGlzIHZhbGlkIG9yIGl0IG5lZWRzIHRvIGJlXG4gICAgLy8gcmVjYWxjdWxhdGVkXG4gICAgdGhpcy5pc0Nyb3NzaW5nTnVtYmVyVmFsaWQgPSBmYWxzZTtcbn1cblxuQVZTREZOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTE5vZGUucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3BlcnRpZXMgaW4gTE5vZGUpIHtcbiAgICBBVlNERk5vZGVbcHJvcGVydGllc10gPSBMTm9kZVtwcm9wZXJ0aWVzXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjaXJjbGUgdGhpcyBub2RlIGlzIG93bmVkIGJ5LlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRDaXJjbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3duZXIoKTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgaW5kZXggb2YgdGhpcyBub2RlIG9uIHRoZSBjaXJjbGUsIGFuZCBzZXRzIHRoZVxuLy8gY3Jvc3NpbmcgbnVtYmVyIGludmFsaWQuIER1ZSB0byB0aGUgaW5kZXggY2hhbmdlIG9mIHRoZSBub2RlOyBpdCBuZWVkcyB0b1xuLy8gYmUgcmVjYWxjdWxhdGVkLlxuQVZTREZOb2RlLnByb3RvdHlwZS5zZXRJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHRoaXMuY2lyY2xlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmlzQ3Jvc3NpbmdOdW1iZXJWYWxpZCA9IGZhbHNlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGlzIG5vZGUgaW4gdGhlIG9yZGVyaW5nIG9mIGl0cyBvd25lclxuLy8gY2lyY2xlLiBIZXJlIC0xIG1lYW5zIHRoYXQgdGhlIHZlcnRleCBpcyBub3QgeWV0IHBsYWNlZCBvbiBpdHMgb3duZXJcbi8vY2lyY2xlLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRJbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jaXJjbGVJbmRleDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXJyYXkgb2YgdGhlIG5laWdib3JzIG9mIHRoaXMgbm9kZSBzb3J0ZWQgaW5cbi8vIGFzY2VuZGluZyBvcmRlci5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzU29ydGVkQnlEZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IEFycmF5LmZyb20oc2VsZi5nZXROZWlnaGJvcnNMaXN0KCkpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuZ2V0SW5kZXgoKSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgICByZXN1bHQuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5nZXREZWdyZWUoKSAtIGIuZ2V0RGVncmVlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZWdyZWUgb2YgdGhpcyBub2RlLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXREZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RWRnZXMoKS5sZW5ndGg7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciBvciBub3QgdGhpcyBub2RlIGlzIGN1cnJlbnRseSBwbGFjZWQgb24gaXRzXG4vLyBvd25lciBjaXJjbGUuXG5BVlNERk5vZGUucHJvdG90eXBlLmlzT3JkZXJlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbmRleCgpID4gLTE7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGFuZ2xlIG9mIHRoaXMgbm9kZSB3LnIudC4gaXRzIG93bmVyIGNpcmNsZS4gSGVyZVxuLy8gdGhlIGFuZ2xlIHZhbHVlIGlzIGluIHJhZGlhbi5cbkFWU0RGTm9kZS5wcm90b3R5cGUuc2V0QW5nbGUgPSBmdW5jdGlvbiAoYW5nbGUpIHtcbiAgICB0aGlzLmFuZ2xlID0gYW5nbGU7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFuZ2xlIG9mIHRoaXMgbm9kZSB3LnIudC4gaXRzIG93bmVyIGNpcmNsZS4gSGVyZVxuLy8gdGhlIGFuZ2xlIHZhbHVlIGlzIGluIHJhZGlhbi5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0QW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5nbGU7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGluZGV4IGRpZmZlcmVuY2Ugb2YgdGhpcyBub2RlIHdpdGggdGhlIGlucHV0XG4vLyBub2RlLiBOb3RlIHRoYXQgdGhlIGluZGV4IGRpZmZlcmVuY2UgY2Fubm90IGJlIG5lZ2F0aXZlIGlmIGJvdGggbm9kZXMgYXJlXG4vLyBwbGFjZWQgb24gdGhlIGNpcmNsZS4gSGVyZSAtMSBtZWFucyBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGFyZSBub3QgeWV0XG4vLyBwbGFjZWQgb24gdGhlIGNpcmNsZS5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0Q2lyY0Rpc3RXaXRoVGhlTm9kZSA9IGZ1bmN0aW9uIChyZWZOb2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvdGhlckluZGV4ID0gcmVmTm9kZS5nZXRJbmRleCgpO1xuXG4gICAgaWYgKG90aGVySW5kZXggPT09IC0xIHx8IHNlbGYuZ2V0SW5kZXgoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHZhciBkaWZmID0gc2VsZi5nZXRJbmRleCgpIC0gb3RoZXJJbmRleDtcblxuICAgIGlmIChkaWZmIDwgMCkge1xuICAgICAgICBkaWZmICs9IHNlbGYuZ2V0Q2lyY2xlKCkuZ2V0U2l6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBkaWZmO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgbnVtYmVyIG9mIGVkZ2UgY3Jvc3NpbmdzIGJldHdlZW4gdGhlIGVkZ2VzIG9mXG4vLyB0aGlzIG5vZGUgYW5kIHRoZSBlZGdlcyBvZiB0aGUgaW5wdXQgb25lLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRDcm9zc2luZ051bWJlcldpdGhOb2RlID0gZnVuY3Rpb24gKG90aGVyTm9kZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG90YWxDcm9zc2luZyA9IDA7XG5cbiAgICBzZWxmLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICBvdGhlck5vZGUuZ2V0RWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChvdGhlckVkZ2UpIHtcbiAgICAgICAgICAgIHRvdGFsQ3Jvc3NpbmcgKz0gZWRnZS5jcm9zc2luZ1dpdGhFZGdlKG90aGVyRWRnZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsQ3Jvc3Npbmc7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlZGdlIGNyb3NzaW5ncy4gSWYgdGhlIHByZXZpb3VzbHlcbi8vIGNhbGN1bGF0ZWQgdmFsdWUgaXMgbm90IHZhbGlkIGR1ZSB0byBhbiBpbmRleCBjaGFuZ2Ugb24gdGhlIGNpcmNsZSwgdGhlblxuLy8gYSByZWNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZC5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKCFzZWxmLmlzQ3Jvc3NpbmdOdW1iZXJWYWxpZCkge1xuICAgICAgICBzZWxmLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmcoKTtcbiAgICAgICAgc2VsZi5pc0Nyb3NzaW5nTnVtYmVyVmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxmLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyB0aGUgZWRnZXMgb2YgdGhpc1xuLy8gbm9kZSBjYXVzZS5cbkFWU0RGTm9kZS5wcm90b3R5cGUuY2FsY3VsYXRlVG90YWxDcm9zc2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRlbXBfY3Jvc3NpbmdfY291bnQgPSAwO1xuICAgIHZhciB0ZW1wX2VkZ2VfbGlzdCA9IFtdO1xuICAgIHRlbXBfZWRnZV9saXN0LnB1c2guYXBwbHkodGVtcF9lZGdlX2xpc3QsIHNlbGYuZ2V0Q2lyY2xlKCkuZ2V0RWRnZXMoKSk7XG4gICAgdGVtcF9lZGdlX2xpc3QgPSB0ZW1wX2VkZ2VfbGlzdC5maWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gc2VsZi5nZXRFZGdlcygpLmluZGV4T2YoZWxlKSA8IDA7XG4gICAgfSk7XG5cbiAgICBzZWxmLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gdGVtcF9jcm9zc2luZ19jb3VudCArPSBlZGdlLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmdXaXRoTGlzdCh0ZW1wX2VkZ2VfbGlzdCk7XG4gICAgfSk7XG5cbiAgICBzZWxmLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzID0gdGVtcF9jcm9zc2luZ19jb3VudDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZOb2RlO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIG92ZXJhbGwgbGF5b3V0IHByb2Nlc3MgZm9yIHRoZSBBVlNERiBhbGdvcml0aG1cbiAqIChDaXJjdWxhciBEcmF3aW5nIEFsZ29yaXRobSBieSBIZSBhbmQgU3lrb3JhKS5cbiAqXG4gKlxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxheW91dDtcbnZhciBBVlNERkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgQVZTREZDaXJjbGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEFWU0RGTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgQVZTREZFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEluaXRpYWxpemF0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQ29uc3RydWN0b3JcbmZ1bmN0aW9uIEFWU0RGTGF5b3V0KCkge1xuICAgIExheW91dC5jYWxsKHRoaXMpO1xuICAgIHRoaXMubm9kZVNlcGFyYXRpb24gPSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTjtcbn1cblxuQVZTREZMYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMYXlvdXQucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcGVydHkgaW4gTGF5b3V0KSB7XG4gICAgQVZTREZMYXlvdXRbcHJvcGVydHldID0gTGF5b3V0W3Byb3BlcnR5XTtcbn1cblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoID0gZnVuY3Rpb24gKHZPYmplY3QpIHtcbiAgICB0aGlzLmF2c2RmQ2lyY2xlID0gbmV3IEFWU0RGQ2lyY2xlKG51bGwsIHRoaXMuZ3JhcGhNYW5hZ2VyLCB2T2JqZWN0KTtcblxuICAgIHJldHVybiB0aGlzLmF2c2RmQ2lyY2xlO1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld05vZGUgPSBmdW5jdGlvbiAodk5vZGUpIHtcbiAgICByZXR1cm4gbmV3IEFWU0RGTm9kZSh0aGlzLmdyYXBoTWFuYWdlciwgdk5vZGUpO1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld0VkZ2UgPSBmdW5jdGlvbiAodkVkZ2UpIHtcbiAgICByZXR1cm4gbmV3IEFWU0RGRWRnZShudWxsLCBudWxsLCB2RWRnZSk7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogQWNjZXNzb3IgRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHBvc2l0aW9uIGRhdGEgZm9yIGFsbCBub2Rlc1xuQVZTREZMYXlvdXQucHJvdG90eXBlLmdldFBvc2l0aW9uc0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsbE5vZGVzID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsTm9kZXMoKTtcbiAgICB2YXIgcERhdGEgPSB7fTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlY3QgPSBhbGxOb2Rlc1tpXS5yZWN0O1xuICAgICAgICB2YXIgaWQgPSBhbGxOb2Rlc1tpXS5pZDtcblxuICAgICAgICBwRGF0YVtpZF0gPSB7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB4OiByZWN0LmdldENlbnRlclgoKSxcbiAgICAgICAgICAgIHk6IHJlY3QuZ2V0Q2VudGVyWSgpLFxuICAgICAgICAgICAgdzogcmVjdC53aWR0aCxcbiAgICAgICAgICAgIGg6IHJlY3QuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBEYXRhO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IExheW91dCBSZWxhdGVkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgbGF5b3V0IG9uIGNvbnN0cnVjdGVkIGwtbGV2ZWwgZ3JhcGguXG4gKiBJdCByZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogSW1wb3J0YW50ITogSWYgeW91IHdhbnQgdG8gc2VlIHRoZSByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gdGhlbiwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIHlvdSBoYXZlIHRvIGNhbGN1bGF0ZVxuICogYW5kIHNldCB0aGUgcG9zaXRpb25zIG9mIGV2ZXJ5IG5vZGUuIFRvIGRvIHRoaXMgY2FsbCB1cGRhdGVOb2RlQ29vcmRpbmF0ZXMuIEhvd2V2ZXIsIHVwZGF0ZU5vZGVBbmdsZXMgb24gdGhlIG90aGVyXG4gKiBoYW5kIGlzIG5vdCBuZWVkZWQgKHJlZHVuZGFudCkgZm9yIHRoaXMgZnVuY3Rpb24uXG4gKi9cbkFWU0RGTGF5b3V0LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gQ2hlY2sgaWYgZ3JhcGggY29udGFpbnMgYW55IGNvbXBvdW5kIHN0cnVjdHVyZXNcbiAgICBpZiAoc2VsZi5ncmFwaE1hbmFnZXIuZ2V0R3JhcGhzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGNsdXN0ZXJHcmFwaCA9IHRoaXMuYXZzZGZDaXJjbGU7IC8vIEZpeGVkIHJlZmVyZW5jZSwgYnV0IG5vdyBpdCBpcyBhIGJpdCByZWR1bmRhbnRcblxuICAgIGNsdXN0ZXJHcmFwaC5zZXROb2RlU2VwYXJhdGlvbih0aGlzLm5vZGVTZXBhcmF0aW9uKTtcbiAgICBjbHVzdGVyR3JhcGguY2FsY3VsYXRlUmFkaXVzKCk7XG4gICAgY2x1c3RlckdyYXBoLmluaXRPcmRlcmluZygpO1xuXG4gICAgd2hpbGUgKCFjbHVzdGVyR3JhcGguaGFzRmluaXNoZWRPcmRlcmluZygpKSB7XG4gICAgICAgIHZhciBub2RlID0gY2x1c3RlckdyYXBoLmZpbmROb2RlVG9QbGFjZSgpO1xuICAgICAgICBjbHVzdGVyR3JhcGgucHV0SW5PcmRlcihub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgYW5nbGUgKGluIHJhZGlhbnMpIHByb3BlcnR5IG9mIEFWU0RGTm9kZSBlbGVtZW50cyBpbiB0aGUgY2lyY2xlXG5BVlNERkxheW91dC5wcm90b3R5cGUudXBkYXRlTm9kZUFuZ2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuY29ycmVjdEFuZ2xlcygpOyAvL0FWU0RGQ2lyY2xlIG9iamVjdFxufTtcblxuLy8gVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhlIHZlcnRpY2VzIG9mIHRoZSBncmFwaCBhbmQgc2V0cyB0aGVpciBjb3JyZWN0IGNvb3JkaW5hdGVzIHdpdGggcmVzcGVjdCB0byB0aGUgb3duZXIgY2lyY2xlLlxuQVZTREZMYXlvdXQucHJvdG90eXBlLnVwZGF0ZU5vZGVDb29yZGluYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2x1c3RlckdyYXBoID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpO1xuXG4gICAgY2x1c3RlckdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnNldENlbnRlcihjbHVzdGVyR3JhcGguZ2V0Q2VudGVyWCgpICsgY2x1c3RlckdyYXBoLmdldFJhZGl1cygpICogTWF0aC5jb3Mobm9kZS5nZXRBbmdsZSgpKSwgY2x1c3RlckdyYXBoLmdldENlbnRlclkoKSArIGNsdXN0ZXJHcmFwaC5nZXRSYWRpdXMoKSAqIE1hdGguc2luKG5vZGUuZ2V0QW5nbGUoKSkpO1xuICAgIH0pO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFBvc3QgUHJvY2Vzc2luZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSBwb3N0IHByb2Nlc3Npbmcgc3RlcCBvZiB0aGUgYWxnb3JpdGhtLCB3aGljaFxuICogdHJpZXMgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBlZGdlcyBmdXJ0aGVyIHdpdGggcmVzcGVjdCB0byB0aGUgbG9jYWxcbiAqIGFkanVzdGluZyBhbGdvcml0aG0gZGVzY3JpYmVkIGJ5IEhlIGFuZCBTeWtvcmEuXG4gKi9cbkFWU0RGTGF5b3V0LnByb3RvdHlwZS5pbml0UG9zdFByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5hdnNkZkNpcmNsZS5jYWxjdWxhdGVFZGdlQ3Jvc3NpbmdzT2ZOb2RlcygpO1xuXG4gICAgdmFyIGxpc3QgPSB0aGlzLmF2c2RmQ2lyY2xlLmdldE5vZGVzKCk7XG5cbiAgICBsaXN0LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGIuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKSAtIGEuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBsaXN0O1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm9uZVN0ZXBQb3N0UHJvY2VzcyA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGN1cnJlbnRDcm9zc2luZ051bWJlciA9IG5vZGUuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKTtcbiAgICB2YXIgbmV3Q3Jvc3NpbmdOdW1iZXIgPSB2b2lkIDA7XG5cbiAgICB2YXIgbmVpZ2hib3VycyA9IEFycmF5LmZyb20obm9kZS5nZXROZWlnaGJvcnNMaXN0KCkpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZWlnaGJvdXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvdXIgPSBuZWlnaGJvdXJzW2pdO1xuXG4gICAgICAgIHZhciBvbGRJbmRleCA9IG5vZGUuZ2V0SW5kZXgoKTtcbiAgICAgICAgdmFyIG5ld0luZGV4ID0gKG5laWdoYm91ci5nZXRJbmRleCgpICsgMSkgJSBzZWxmLmF2c2RmQ2lyY2xlLmdldFNpemUoKTtcblxuICAgICAgICBpZiAob2xkSW5kZXggIT09IG5ld0luZGV4KSB7XG4gICAgICAgICAgICBub2RlLnNldEluZGV4KG5ld0luZGV4KTtcblxuICAgICAgICAgICAgaWYgKG9sZEluZGV4IDwgbm9kZS5nZXRJbmRleCgpKSB7XG4gICAgICAgICAgICAgICAgb2xkSW5kZXggKz0gc2VsZi5hdnNkZkNpcmNsZS5nZXRTaXplKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpbmRleCA9IG5vZGUuZ2V0SW5kZXgoKTtcblxuICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgb2xkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHNlbGYuYXZzZGZDaXJjbGUuZ2V0T3JkZXIoKVtpbmRleCAlIHNlbGYuYXZzZGZDaXJjbGUuZ2V0U2l6ZSgpXTtcbiAgICAgICAgICAgICAgICB0ZW1wLnNldEluZGV4KCh0ZW1wLmdldEluZGV4KCkgKyAxKSAlIHNlbGYuYXZzZGZDaXJjbGUuZ2V0U2l6ZSgpKTtcbiAgICAgICAgICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmcoKTtcbiAgICAgICAgICAgIG5ld0Nyb3NzaW5nTnVtYmVyID0gbm9kZS5nZXRUb3RhbENyb3NzaW5nT2ZFZGdlcygpO1xuXG4gICAgICAgICAgICBpZiAobmV3Q3Jvc3NpbmdOdW1iZXIgPj0gY3VycmVudENyb3NzaW5nTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hdnNkZkNpcmNsZS5sb2FkT2xkSW5kaWNlc09mTm9kZXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hdnNkZkNpcmNsZS5yZU9yZGVyVmVydGljZXMoKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q3Jvc3NpbmdOdW1iZXIgPSBuZXdDcm9zc2luZ051bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXZzZGZCYXNlID0ge307XG5cbmF2c2RmQmFzZS5sYXlvdXRCYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbmF2c2RmQmFzZS5BVlNERkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5hdnNkZkJhc2UuQVZTREZFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbmF2c2RmQmFzZS5BVlNERkNpcmNsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5hdnNkZkJhc2UuQVZTREZMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuYXZzZGZCYXNlLkFWU0RGTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXZzZGZCYXNlO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhdnNkZi1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImF2c2RmLWJhc2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlQXZzZGZcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJhdnNkZi1iYXNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVBdnNkZlwiXSA9IGZhY3Rvcnkocm9vdFtcImF2c2RmQmFzZVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDMpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5mb3JFYWNoKGZ1bmN0aW9uIChzcmMpIHtcbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiB0Z3Rba10gPSBzcmNba107XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0Z3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKlxuICogQ2hvb3NlIHRoZSB0eXBlIG9mIGxheW91dCB0aGF0IGJlc3Qgc3VpdHMgeW91ciB1c2VjYXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogQSBkaXNjcmV0ZSBsYXlvdXQgaXMgb25lIHRoYXQgYWxnb3JpdGhtaWNhbGx5IHNldHMgcmVzdWx0YW50IHBvc2l0aW9ucy4gIEl0XG4gKiBkb2VzIG5vdCBoYXZlIGludGVybWVkaWF0ZSBwb3NpdGlvbnMuXG4gKlxuICogQSBjb250aW51b3VzIGxheW91dCBpcyBvbmUgdGhhdCB1cGRhdGVzIHBvc2l0aW9ucyBjb250aW51b3VzbHksIGxpa2UgYSBmb3JjZS1cbiAqIGRpcmVjdGVkIC8gcGh5c2ljcyBzaW11bGF0aW9uIGxheW91dC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgaW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICBjeXRvc2NhcGUoJ2xheW91dCcsICdhdnNkZicsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChvYmplY3QsIHByb3BlcnR5LCByZWNlaXZlcikgeyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgcmV0dXJuIGdldChwYXJlbnQsIHByb3BlcnR5LCByZWNlaXZlcik7IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIG92ZXJhbGwgbGF5b3V0IHByb2Nlc3MgZm9yIHRoZVxuICogQWRqYWNlbnQgVmVydGV4IHdpdGggU21hbGxlc3QgRGVncmVlIEZpcnN0IChBVlNERikgYWxnb3JpdGhtLlxuICogKENpcmN1bGFyIERyYXdpbmcgQWxnb3JpdGhtIGJ5IEhvbmdtZWkgSGUgJiBPbmRyZWogU8O9a29yYSkuXG4gKlxuICogQGF1dGhvciBEb3J1ayDDh2FrbWFrw6fEsVxuICogQGF1dGhvciBBbGloYW4gT2trYVxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgKEluZm9ybWF0aW9uIFZpc3VhbGl6YXRpb24pIFJlc2VhcmNoIExhYiwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDE5IC0gcHJlc2VudFxuKi9cblxuLy8gY3l0b3NzY2FwZS5qcy1hdnNkZiBSRVFVSVJFUyBhdnNkZi1iYXNlIGxpYnJhcnkgZWxlbWVudHNcbnZhciBBVlNERkxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuQVZTREZMYXlvdXQ7XG52YXIgQVZTREZOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5BVlNERk5vZGU7XG52YXIgQVZTREZDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkFWU0RGQ29uc3RhbnRzO1xudmFyIFBvaW50RCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkubGF5b3V0QmFzZS5Qb2ludEQ7XG52YXIgRGltZW5zaW9uRCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkubGF5b3V0QmFzZS5EaW1lbnNpb25EO1xuXG4vLyBDeXRvc2NhcGUtZXh0ZW50aW9uIHRlbXBsYXRlIHJlcXVpcmVtZW50c1xuLy8gTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBOUE0gJ3NsdXNoLWN5dG9zY2FwZS1leHRlbnNpb24nIHBhY2thZ2VcbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIENvbnRpbnVvdXNMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXG52YXIgaXNGbiA9IGZ1bmN0aW9uIGlzRm4oZm4pIHtcbiAgcmV0dXJuIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJztcbn07XG52YXIgb3B0Rm4gPSBmdW5jdGlvbiBvcHRGbihvcHQsIGVsZSkge1xuICBpZiAoaXNGbihvcHQpKSB7XG4gICAgcmV0dXJuIG9wdChlbGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvcHQ7XG4gIH1cbn07XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sIC8vIENhbGxlZCBvbiBgbGF5b3V0cmVhZHlgXG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7fSwgLy8gQ2FsbGVkIG9uIGBsYXlvdXRzdG9wYFxuICByZWZyZXNoOiAzMCwgLy8gbnVtYmVyIG9mIHRpY2tzIHBlciBmcmFtZTsgaGlnaGVyIGlzIGZhc3RlciBidXQgbW9yZSBqZXJreVxuICBmaXQ6IHRydWUsIC8vIFdoZXRoZXIgdG8gZml0IHRoZSBuZXR3b3JrIHZpZXcgYWZ0ZXIgd2hlbiBkb25lXG4gIHBhZGRpbmc6IDEwLCAvLyBQYWRkaW5nIG9uIGZpdFxuICByYW5kb21pemU6IGZhbHNlLCAvLyBXaGV0aGVyIHRvIGVuYWJsZSBpbmNyZW1lbnRhbCBtb2RlXG4gIGFuaW1hdGU6ICdlbmQnLCAvLyBUeXBlIG9mIGxheW91dCBhbmltYXRpb24uIFRoZSBvcHRpb24gc2V0IGlzIHsnZHVyaW5nJywgJ2VuZCcsIGZhbHNlfVxuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLCAvLyBEdXJhdGlvbiBmb3IgYW5pbWF0ZTplbmRcbiAgbm9kZVNlcGFyYXRpb246IDYwIC8vIEhvdyBhcGFydCB0aGUgbm9kZXMgYXJlXG59O1xuXG4vKipcbiAqICBUaGlzIGlzIHRoZSBtYWluIGNsYXNzIHRoYXQgZG9lcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkuXG4gKiAgVGhlIGNsYXNzIGlzIHV0aWxpemVkIGJ5IGZ1bmN0aW9ucyBpbiB0aGUgY29udGludW91cy1iYXNlIGZvbGRlci5cbiAqL1xuXG52YXIgQVZTREYgPSBmdW5jdGlvbiAoX0NvbnRpbnVvdXNMYXlvdXQpIHtcbiAgX2luaGVyaXRzKEFWU0RGLCBfQ29udGludW91c0xheW91dCk7XG5cbiAgZnVuY3Rpb24gQVZTREYob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBVlNERik7XG5cbiAgICAvLyBXaGV0aGVyIG5vZGUgc2VwYXJhdGlvbiB2YWx1ZSBpcyB1c2VkXG4gICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEFWU0RGLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQVZTREYpKS5jYWxsKHRoaXMsIGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpKSk7XG5cbiAgICBpZiAob3B0aW9ucy5ub2RlU2VwYXJhdGlvbiAhPSBudWxsKSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTiA9IG9wdGlvbnMubm9kZVNlcGFyYXRpb247ZWxzZSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTiA9IGRlZmF1bHRzLm5vZGVTZXBhcmF0aW9uO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgSW5pdGlhbGl6aW5nIEFWU0RGIGVsZW1lbnRzIGFuZCBhcnJhbmdpbmcgdGhlIG5vZGVzIG9mIHRoZSBncmFwaCBhcm91bmQgdGhlIGNpcmNsZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhBVlNERiwgW3tcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7XG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlOyAvLyBvcHRpb25zIG9iamVjdCBjb21iaW5lZCB3aXRoIGN1cnJlbnQgc3RhdGVcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBBVlNERiBlbGVtZW50cyBhbmQgdGhlaXIgcmVxdWlyZW1lbnRzXG4gICAgICB2YXIgYXZzZGZMYXlvdXQgPSB0aGlzLmF2c2RmTGF5b3V0ID0gbmV3IEFWU0RGTGF5b3V0KCk7XG4gICAgICB2YXIgZ3JhcGhNYW5hZ2VyID0gdGhpcy5ncmFwaE1hbmFnZXIgPSBhdnNkZkxheW91dC5uZXdHcmFwaE1hbmFnZXIoKTtcbiAgICAgIHZhciByb290ID0gdGhpcy5yb290ID0gZ3JhcGhNYW5hZ2VyLmFkZFJvb3QoKTtcbiAgICAgIHZhciBub2RlcyA9IHN0YXRlLm5vZGVzO1xuICAgICAgdmFyIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG5cbiAgICAgIC8vIEdldHRpbmcgbm9kZXMgb2YgY3l0b3NjYXBlIGFuZCBjb252ZXJ0aW5nIGl0IHRvIEFWU0RGIHN0cnVjdHVyZVxuICAgICAgdGhpcy5pZFRvTE5vZGUgPSB7fTtcbiAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuTGlzdChyb290LCBub2RlcywgYXZzZGZMYXlvdXQpO1xuXG4gICAgICAvLyBHZXR0aW5nIGVkZ2VzIG9mIGN5dG9zY2FwZSBhbmQgdHJhbnNmZXJpbmcgaXQgdG8gR3JhcGhNYW5hZ2VyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgIHZhciBzb3VyY2VOb2RlID0gdGhpcy5pZFRvTE5vZGVbZWRnZS5kYXRhKFwic291cmNlXCIpXTtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSB0aGlzLmlkVG9MTm9kZVtlZGdlLmRhdGEoXCJ0YXJnZXRcIildO1xuICAgICAgICBpZiAoc291cmNlTm9kZSAhPT0gdGFyZ2V0Tm9kZSAmJiBzb3VyY2VOb2RlLmdldEVkZ2VzQmV0d2Vlbih0YXJnZXROb2RlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2YXIgZTEgPSBncmFwaE1hbmFnZXIuYWRkKGF2c2RmTGF5b3V0Lm5ld0VkZ2UoKSwgc291cmNlTm9kZSwgdGFyZ2V0Tm9kZSk7XG4gICAgICAgICAgZTEuaWQgPSBlZGdlLmlkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUnVubmluZyB0aGUgQVZTREYgbGF5b3V0LlxuICAgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvIHBvc3QtcHJvY2Vzc2luZy4gUGx1cywgbm9kZXMgaGF2ZSB0byBiZSBwb3NpdGlvbmVkLlxuICAgICAgLy8gU2VlIEFWU0RGTGF5b3V0IGZvciBkZXRhaWxzLlxuICAgICAgYXZzZGZMYXlvdXQubGF5b3V0KCk7XG5cbiAgICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBpbml0aWFsIGNpcmNsZSBwb3NpdGlvbiBpZiB3ZSB3YW50IHRvIHJlbmRlciBpdFxuICAgICAgYXZzZGZMYXlvdXQudXBkYXRlTm9kZUNvb3JkaW5hdGVzKCk7XG5cbiAgICAgIC8vIFBvc3QgcHJvY2VzcyBpcyBpdGVyYXRlZCBvdmVyIHRoZSBzb3J0ZWQgbGlzdCBvZiB2ZXJ0ZXggZGVncmVlcyAoZGVzY2VuZGluZylcbiAgICAgIHRoaXMuc29ydGVkQnlEZWdyZWVMaXN0ID0gYXZzZGZMYXlvdXQuaW5pdFBvc3RQcm9jZXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJ1bnMgdGhpcyBpbiBlYWNoIGl0ZXJhdGlvblxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICd0aWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGljaygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIGdldHRpbmcgY29vcmRpbmF0ZXMgZnJvbSBBVlNERiBlbGVtZW50cyBhbmQgcGFzc2luZyBpdCB0byBjeXRvc2NhcGVcbiAgICAgIHZhciBwb3NpdGlvbnMgPSB0aGlzLmF2c2RmTGF5b3V0LmdldFBvc2l0aW9uc0RhdGEoKTtcbiAgICAgIHN0YXRlLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdmFyIHMgPSBfdGhpczIuZ2V0U2NyYXRjaChuKTtcblxuICAgICAgICAvLyBleGFtcGxlIDogcHV0IG5vZGUgYXQgcmFuZG9tIHBvc2l0aW9uXG4gICAgICAgIHMueCA9IHBvc2l0aW9uc1tuLmRhdGEoJ2lkJyldLng7XG4gICAgICAgIHMueSA9IHBvc2l0aW9uc1tuLmRhdGEoJ2lkJyldLnk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHN0YXRlLnRpY2tJbmRleCA+PSBzdGF0ZS5ub2Rlcy5zaXplKCkpIHJldHVybiB0cnVlO1xuXG4gICAgICB0aGlzLmF2c2RmTGF5b3V0Lm9uZVN0ZXBQb3N0UHJvY2Vzcyh0aGlzLnNvcnRlZEJ5RGVncmVlTGlzdFtzdGF0ZS50aWNrSW5kZXhdKTtcbiAgICAgIHRoaXMuYXZzZGZMYXlvdXQudXBkYXRlTm9kZUFuZ2xlcygpO1xuICAgICAgdGhpcy5hdnNkZkxheW91dC51cGRhdGVOb2RlQ29vcmRpbmF0ZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUnVucyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHRoZSBsYXlvdXQgaXMgZG9uZSB0aWNraW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3Bvc3RydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0cnVuKCkge31cblxuICAgIC8qKlxuICAgICAqICBDbGVhbiB1cCBhbnkgb2JqZWN0IHJlZnMgdGhhdCBjb3VsZCBwcmV2ZW50IGdhcmJhZ2UgY29sbGVjdGlvbiwgZXRjLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdkZXN0cm95JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIF9nZXQoQVZTREYucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQVZTREYucHJvdG90eXBlKSwgJ2Rlc3Ryb3knLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFRyYW5zaXRpb24gZnJvbSBjeXRvc2NhcGUgbm9kZXMgdG8gQVZTREYgZWxlbWVudHNcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncHJvY2Vzc0NoaWxkcmVuTGlzdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb2Nlc3NDaGlsZHJlbkxpc3QocGFyZW50LCBjaGlsZHJlbiwgbGF5b3V0KSB7XG4gICAgICB2YXIgc2l6ZSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHZhciB0aGVDaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgdGhlTm9kZSA9IHZvaWQgMDtcblxuICAgICAgICAvL0xhYmVsIGRpbWVuc2lvbnMgYXJlIE5PVCBpbmNsdWRlZCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgZGltZW5zaW9uc1xuICAgICAgICB2YXIgZGltZW5zaW9ucyA9IHRoZUNoaWxkLmxheW91dERpbWVuc2lvbnMoe1xuICAgICAgICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoZUNoaWxkLm91dGVyV2lkdGgoKSAhPSBudWxsICYmIHRoZUNoaWxkLm91dGVySGVpZ2h0KCkgIT0gbnVsbCkge1xuICAgICAgICAgIHRoZU5vZGUgPSBwYXJlbnQuYWRkKG5ldyBBVlNERk5vZGUobGF5b3V0LmdyYXBoTWFuYWdlciwgbnVsbCwgbmV3IFBvaW50RCh0aGVDaGlsZC5wb3NpdGlvbigneCcpIC0gZGltZW5zaW9ucy53IC8gMiwgdGhlQ2hpbGQucG9zaXRpb24oJ3knKSAtIGRpbWVuc2lvbnMuaCAvIDIpLCBuZXcgRGltZW5zaW9uRChwYXJzZUZsb2F0KGRpbWVuc2lvbnMudyksIHBhcnNlRmxvYXQoZGltZW5zaW9ucy5oKSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGVOb2RlID0gcGFyZW50LmFkZChuZXcgQVZTREZOb2RlKHRoaXMuZ3JhcGhNYW5hZ2VyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdHRhY2ggaWQgdG8gdGhlIGxheW91dCBub2RlXG4gICAgICAgIHRoZU5vZGUuaWQgPSB0aGVDaGlsZC5kYXRhKFwiaWRcIik7XG5cbiAgICAgICAgLy8gQXR0YWNoIHRoZSBwYWRkaW5ncyBvZiBjeSBub2RlIHRvIGxheW91dCBub2RlXG4gICAgICAgIHRoZU5vZGUucGFkZGluZ0xlZnQgPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG4gICAgICAgIHRoZU5vZGUucGFkZGluZ1RvcCA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcbiAgICAgICAgdGhlTm9kZS5wYWRkaW5nUmlnaHQgPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG4gICAgICAgIHRoZU5vZGUucGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcblxuICAgICAgICAvLyBNYXAgdGhlIGxheW91dCBub2RlXG4gICAgICAgIHRoaXMuaWRUb0xOb2RlW3RoZUNoaWxkLmRhdGEoXCJpZFwiKV0gPSB0aGVOb2RlO1xuXG4gICAgICAgIGlmIChpc05hTih0aGVOb2RlLnJlY3QueCkpIHtcbiAgICAgICAgICB0aGVOb2RlLnJlY3QueCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOYU4odGhlTm9kZS5yZWN0LnkpKSB7XG4gICAgICAgICAgdGhlTm9kZS5yZWN0LnkgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFWU0RGO1xufShDb250aW51b3VzTGF5b3V0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBVlNERjtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIGdlbmVyYWwgZGVmYXVsdCBvcHRpb25zIGZvciBmb3JjZS1kaXJlY3RlZCBsYXlvdXRcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYW5pbWF0ZTogdHJ1ZSwgLy8gd2hldGhlciB0byBzaG93IHRoZSBsYXlvdXQgYXMgaXQncyBydW5uaW5nOyBzcGVjaWFsICdlbmQnIHZhbHVlIG1ha2VzIHRoZSBsYXlvdXQgYW5pbWF0ZSBsaWtlIGEgZGlzY3JldGUgbGF5b3V0XG4gIHJlZnJlc2g6IDEwLCAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIG1heEl0ZXJhdGlvbnM6IDEwMDAsIC8vIG1heCBpdGVyYXRpb25zIGJlZm9yZSB0aGUgbGF5b3V0IHdpbGwgYmFpbCBvdXRcbiAgdW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nOiBmYWxzZSwgLy8gc28geW91IGNhbid0IGRyYWcgbm9kZXMgZHVyaW5nIGxheW91dFxuICBmaXQ6IHRydWUsIC8vIG9uIGV2ZXJ5IGxheW91dCByZXBvc2l0aW9uIG9mIG5vZGVzLCBmaXQgdGhlIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBwYWRkaW5nIGFyb3VuZCB0aGUgc2ltdWxhdGlvblxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLCAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cblxuICAvLyBsYXlvdXQgZXZlbnQgY2FsbGJhY2tzXG4gIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LCAvLyBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sIC8vIG9uIGxheW91dHN0b3BcblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuXG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuIEEgZ2VuZXJpYyBjb250aW51b3VzIGxheW91dCBjbGFzc1xuICovXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIGRlZmF1bHRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBtYWtlQm91bmRpbmdCb3ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLFxuICAgIHNldEluaXRpYWxQb3NpdGlvblN0YXRlID0gX3JlcXVpcmUuc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUsXG4gICAgcmVmcmVzaFBvc2l0aW9ucyA9IF9yZXF1aXJlLnJlZnJlc2hQb3NpdGlvbnMsXG4gICAgZ2V0Tm9kZVBvc2l0aW9uRGF0YSA9IF9yZXF1aXJlLmdldE5vZGVQb3NpdGlvbkRhdGE7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpLFxuICAgIG11bHRpdGljayA9IF9yZXF1aXJlMi5tdWx0aXRpY2s7XG5cbnZhciBMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExheW91dChvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExheW91dCk7XG5cbiAgICB2YXIgbyA9IHRoaXMub3B0aW9ucyA9IGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgdmFyIHMgPSB0aGlzLnN0YXRlID0gYXNzaWduKHt9LCBvLCB7XG4gICAgICBsYXlvdXQ6IHRoaXMsXG4gICAgICBub2Rlczogby5lbGVzLm5vZGVzKCksXG4gICAgICBlZGdlczogby5lbGVzLmVkZ2VzKCksXG4gICAgICB0aWNrSW5kZXg6IDAsXG4gICAgICBmaXJzdFVwZGF0ZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgcy5hbmltYXRlRW5kID0gby5hbmltYXRlICYmIG8uYW5pbWF0ZSA9PT0gJ2VuZCc7XG4gICAgcy5hbmltYXRlQ29udGludW91c2x5ID0gby5hbmltYXRlICYmICFzLmFuaW1hdGVFbmQ7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTGF5b3V0LCBbe1xuICAgIGtleTogJ2dldFNjcmF0Y2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTY3JhdGNoKGVsKSB7XG4gICAgICB2YXIgbmFtZSA9IHRoaXMuc3RhdGUubmFtZTtcbiAgICAgIHZhciBzY3JhdGNoID0gZWwuc2NyYXRjaChuYW1lKTtcblxuICAgICAgaWYgKCFzY3JhdGNoKSB7XG4gICAgICAgIHNjcmF0Y2ggPSB7fTtcblxuICAgICAgICBlbC5zY3JhdGNoKG5hbWUsIHNjcmF0Y2gpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2NyYXRjaDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICB2YXIgbCA9IHRoaXM7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHMudGlja0luZGV4ID0gMDtcbiAgICAgIHMuZmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgICAgcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgcy5ydW5uaW5nID0gdHJ1ZTtcblxuICAgICAgcy5jdXJyZW50Qm91bmRpbmdCb3ggPSBtYWtlQm91bmRpbmdCb3gocy5ib3VuZGluZ0JveCwgcy5jeSk7XG5cbiAgICAgIGlmIChzLnJlYWR5KSB7XG4gICAgICAgIGwub25lKCdyZWFkeScsIHMucmVhZHkpO1xuICAgICAgfVxuICAgICAgaWYgKHMuc3RvcCkge1xuICAgICAgICBsLm9uZSgnc3RvcCcsIHMuc3RvcCk7XG4gICAgICB9XG5cbiAgICAgIHMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUobiwgcyk7XG4gICAgICB9KTtcblxuICAgICAgbC5wcmVydW4ocyk7XG5cbiAgICAgIGlmIChzLmFuaW1hdGVDb250aW51b3VzbHkpIHtcbiAgICAgICAgdmFyIHVuZ3JhYmlmeSA9IGZ1bmN0aW9uIHVuZ3JhYmlmeShub2RlKSB7XG4gICAgICAgICAgaWYgKCFzLnVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBncmFiYmFibGUgPSBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpLmdyYWJiYWJsZSA9IG5vZGUuZ3JhYmJhYmxlKCk7XG5cbiAgICAgICAgICBpZiAoZ3JhYmJhYmxlKSB7XG4gICAgICAgICAgICBub2RlLnVuZ3JhYmlmeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcmVncmFiaWZ5ID0gZnVuY3Rpb24gcmVncmFiaWZ5KG5vZGUpIHtcbiAgICAgICAgICBpZiAoIXMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGdyYWJiYWJsZSA9IGdldE5vZGVQb3NpdGlvbkRhdGEobm9kZSwgcykuZ3JhYmJhYmxlO1xuXG4gICAgICAgICAgaWYgKGdyYWJiYWJsZSkge1xuICAgICAgICAgICAgbm9kZS5ncmFiaWZ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciB1cGRhdGVHcmFiU3RhdGUgPSBmdW5jdGlvbiB1cGRhdGVHcmFiU3RhdGUobm9kZSkge1xuICAgICAgICAgIHJldHVybiBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpLmdyYWJiZWQgPSBub2RlLmdyYWJiZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgb25HcmFiID0gZnVuY3Rpb24gb25HcmFiKF9yZWYpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZi50YXJnZXQ7XG5cbiAgICAgICAgICB1cGRhdGVHcmFiU3RhdGUodGFyZ2V0KTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgb25GcmVlID0gb25HcmFiO1xuXG4gICAgICAgIHZhciBvbkRyYWcgPSBmdW5jdGlvbiBvbkRyYWcoX3JlZjIpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0O1xuXG4gICAgICAgICAgdmFyIHAgPSBnZXROb2RlUG9zaXRpb25EYXRhKHRhcmdldCwgcyk7XG4gICAgICAgICAgdmFyIHRwID0gdGFyZ2V0LnBvc2l0aW9uKCk7XG5cbiAgICAgICAgICBwLnggPSB0cC54O1xuICAgICAgICAgIHAueSA9IHRwLnk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGxpc3RlblRvR3JhYiA9IGZ1bmN0aW9uIGxpc3RlblRvR3JhYihub2RlKSB7XG4gICAgICAgICAgbm9kZS5vbignZ3JhYicsIG9uR3JhYik7XG4gICAgICAgICAgbm9kZS5vbignZnJlZScsIG9uRnJlZSk7XG4gICAgICAgICAgbm9kZS5vbignZHJhZycsIG9uRHJhZyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHVubGlzdGVuVG9HcmFiID0gZnVuY3Rpb24gdW5saXN0ZW5Ub0dyYWIobm9kZSkge1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2dyYWInLCBvbkdyYWIpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2ZyZWUnLCBvbkZyZWUpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2RyYWcnLCBvbkRyYWcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBmaXQgPSBmdW5jdGlvbiBmaXQoKSB7XG4gICAgICAgICAgaWYgKHMuZml0ICYmIHMuYW5pbWF0ZUNvbnRpbnVvdXNseSkge1xuICAgICAgICAgICAgcy5jeS5maXQocy5wYWRkaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uTm90RG9uZSA9IGZ1bmN0aW9uIG9uTm90RG9uZSgpIHtcbiAgICAgICAgICByZWZyZXNoUG9zaXRpb25zKHMubm9kZXMsIHMpO1xuICAgICAgICAgIGZpdCgpO1xuXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKF9mcmFtZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9mcmFtZSA9IGZ1bmN0aW9uIF9mcmFtZSgpIHtcbiAgICAgICAgICBtdWx0aXRpY2socywgb25Ob3REb25lLCBfb25Eb25lKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgX29uRG9uZSA9IGZ1bmN0aW9uIF9vbkRvbmUoKSB7XG4gICAgICAgICAgcmVmcmVzaFBvc2l0aW9ucyhzLm5vZGVzLCBzKTtcbiAgICAgICAgICBmaXQoKTtcblxuICAgICAgICAgIHMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmVncmFiaWZ5KG4pO1xuICAgICAgICAgICAgdW5saXN0ZW5Ub0dyYWIobik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzLnJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgIGwuZW1pdCgnbGF5b3V0c3RvcCcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGwuZW1pdCgnbGF5b3V0c3RhcnQnKTtcblxuICAgICAgICBzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICB1bmdyYWJpZnkobik7XG4gICAgICAgICAgbGlzdGVuVG9HcmFiKG4pO1xuICAgICAgICB9KTtcblxuICAgICAgICBfZnJhbWUoKTsgLy8ga2ljayBvZmZcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHZhciBfb25Ob3REb25lID0gZnVuY3Rpb24gX29uTm90RG9uZSgpIHt9O1xuICAgICAgICB2YXIgX29uRG9uZTIgPSBmdW5jdGlvbiBfb25Eb25lMigpIHtcbiAgICAgICAgICByZXR1cm4gZG9uZSA9IHRydWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgbXVsdGl0aWNrKHMsIF9vbk5vdERvbmUsIF9vbkRvbmUyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHMuZWxlcy5sYXlvdXRQb3NpdGlvbnModGhpcywgcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICB2YXIgcGQgPSBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpO1xuXG4gICAgICAgICAgcmV0dXJuIHsgeDogcGQueCwgeTogcGQueSB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgbC5wb3N0cnVuKHMpO1xuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAncG9zdHJ1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvc3RydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAndGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRpY2soKSB7fVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB0aGlzLnN0YXRlLnJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGVzdHJveScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGF5b3V0O1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheW91dDtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJiLCBjeSkge1xuICBpZiAoYmIgPT0gbnVsbCkge1xuICAgIGJiID0geyB4MTogMCwgeTE6IDAsIHc6IGN5LndpZHRoKCksIGg6IGN5LmhlaWdodCgpIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gY29weVxuICAgIGJiID0geyB4MTogYmIueDEsIHgyOiBiYi54MiwgeTE6IGJiLnkxLCB5MjogYmIueTIsIHc6IGJiLncsIGg6IGJiLmggfTtcbiAgfVxuXG4gIGlmIChiYi54MiA9PSBudWxsKSB7XG4gICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gIH1cbiAgaWYgKGJiLncgPT0gbnVsbCkge1xuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICB9XG4gIGlmIChiYi55MiA9PSBudWxsKSB7XG4gICAgYmIueTIgPSBiYi55MSArIGJiLmg7XG4gIH1cbiAgaWYgKGJiLmggPT0gbnVsbCkge1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgcmV0dXJuIGJiO1xufTtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUgPSBmdW5jdGlvbiBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZShub2RlLCBzdGF0ZSkge1xuICB2YXIgcCA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIGJiID0gc3RhdGUuY3VycmVudEJvdW5kaW5nQm94O1xuICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICBpZiAoc2NyYXRjaCA9PSBudWxsKSB7XG4gICAgc2NyYXRjaCA9IHt9O1xuXG4gICAgbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUsIHNjcmF0Y2gpO1xuICB9XG5cbiAgYXNzaWduKHNjcmF0Y2gsIHN0YXRlLnJhbmRvbWl6ZSA/IHtcbiAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgIHk6IGJiLnkxICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogYmIuaClcbiAgfSA6IHtcbiAgICB4OiBwLngsXG4gICAgeTogcC55XG4gIH0pO1xuXG4gIHNjcmF0Y2gubG9ja2VkID0gbm9kZS5sb2NrZWQoKTtcbn07XG5cbnZhciBnZXROb2RlUG9zaXRpb25EYXRhID0gZnVuY3Rpb24gZ2V0Tm9kZVBvc2l0aW9uRGF0YShub2RlLCBzdGF0ZSkge1xuICByZXR1cm4gbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUpO1xufTtcblxudmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKG5vZGVzLCBzdGF0ZSkge1xuICBub2Rlcy5wb3NpdGlvbnMoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBzY3JhdGNoLngsXG4gICAgICB5OiBzY3JhdGNoLnlcbiAgICB9O1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0geyBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZTogc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUsIGdldE5vZGVQb3NpdGlvbkRhdGE6IGdldE5vZGVQb3NpdGlvbkRhdGEsIHJlZnJlc2hQb3NpdGlvbnM6IHJlZnJlc2hQb3NpdGlvbnMgfTtcblxuLyoqKi8gfSksXG4vKiA5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBub3AgPSBmdW5jdGlvbiBub3AoKSB7fTtcblxudmFyIHRpY2sgPSBmdW5jdGlvbiB0aWNrKHN0YXRlKSB7XG4gIHZhciBzID0gc3RhdGU7XG4gIHZhciBsID0gc3RhdGUubGF5b3V0O1xuXG4gIHZhciB0aWNrSW5kaWNhdGVzRG9uZSA9IGwudGljayhzKTtcblxuICBpZiAocy5maXJzdFVwZGF0ZSkge1xuICAgIGlmIChzLmFuaW1hdGVDb250aW51b3VzbHkpIHtcbiAgICAgIC8vIGluZGljYXRlIHRoZSBpbml0aWFsIHBvc2l0aW9ucyBoYXZlIGJlZW4gc2V0XG4gICAgICBzLmxheW91dC5lbWl0KCdsYXlvdXRyZWFkeScpO1xuICAgIH1cbiAgICBzLmZpcnN0VXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBzLnRpY2tJbmRleCsrO1xuXG4gIHZhciBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzLnN0YXJ0VGltZTtcblxuICByZXR1cm4gIXMuaW5maW5pdGUgJiYgdGlja0luZGljYXRlc0RvbmU7XG59O1xuXG52YXIgbXVsdGl0aWNrID0gZnVuY3Rpb24gbXVsdGl0aWNrKHN0YXRlKSB7XG4gIHZhciBvbk5vdERvbmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG5vcDtcbiAgdmFyIG9uRG9uZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbm9wO1xuXG4gIHZhciBkb25lID0gZmFsc2U7XG4gIHZhciBzID0gc3RhdGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnJlZnJlc2g7IGkrKykge1xuICAgIGRvbmUgPSAhcy5ydW5uaW5nIHx8IHRpY2socyk7XG5cbiAgICBpZiAoZG9uZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkb25lKSB7XG4gICAgb25Ob3REb25lKCk7XG4gIH0gZWxzZSB7XG4gICAgb25Eb25lKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0geyB0aWNrOiB0aWNrLCBtdWx0aXRpY2s6IG11bHRpdGljayB9O1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcTtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgIGRhdGEucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICB9XG4gIC0tdGhpcy5zaXplO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVEZWxldGU7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlR2V0O1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVIYXM7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgKyt0aGlzLnNpemU7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVTZXQ7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUVhY2g7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViQXJyYXk7XG4iLCJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpO1xuXG4vKipcbiAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHNJbjtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVEYXRhVmlldyA9IHJlcXVpcmUoJy4vX2Nsb25lRGF0YVZpZXcnKSxcbiAgICBjbG9uZVJlZ0V4cCA9IHJlcXVpcmUoJy4vX2Nsb25lUmVnRXhwJyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hcDtcbiIsInZhciBiYXNlSXNNYXAgPSByZXF1aXJlKCcuL19iYXNlSXNNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTWFwKG5ldyBNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VJc1NldCA9IHJlcXVpcmUoJy4vX2Jhc2VJc1NldCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTZXQobmV3IFNldCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1NldDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUZvcjtcbiIsInZhciBjcmVhdGVCYXNlRm9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUZvcicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0RnVuY3Rpb247XG4iLCJ2YXIgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAYWxpYXMgZWFjaFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gKlxuICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9yRWFjaDtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mb3JFYWNoJyk7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbHRlcjtcbiIsIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiIsIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBlcXVhbEJ5VGFnID0gcmVxdWlyZSgnLi9fZXF1YWxCeVRhZycpLFxuICAgIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vX2VxdWFsT2JqZWN0cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbERlZXA7XG4iLCJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBtZW1vaXplID0gcmVxdWlyZSgnLi9tZW1vaXplJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH0pO1xuXG4gIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIiwidmFyIG1lbW9pemVDYXBwZWQgPSByZXF1aXJlKCcuL19tZW1vaXplQ2FwcGVkJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG52YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNGdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjayBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzUGF0aChvYmplY3QsIHBhdGgsIGhhc0Z1bmMpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKTtcbiAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgfVxuICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBsZW5ndGggPSBvYmplY3QgPT0gbnVsbCA/IDAgOiBvYmplY3QubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzUGF0aDtcbiIsInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHk7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5RGVlcDtcbiIsInZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHknKSxcbiAgICBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICByZXR1cm4gaXNLZXkocGF0aCkgPyBiYXNlUHJvcGVydHkodG9LZXkocGF0aCkpIDogYmFzZVByb3BlcnR5RGVlcChwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiIsInZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzJyksXG4gICAgYmFzZU1hdGNoZXNQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgcHJvcGVydHkgPSByZXF1aXJlKCcuL3Byb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICB9XG4gIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUl0ZXJhdGVlO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzO1xuIiwidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXMob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob3RoZXIsICdhJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzO1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICpcbiAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICogcHJvcGVydGllcy5cbiAqXG4gKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFbXB0eShudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkodHJ1ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICB9XG4gIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbXB0eTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1VuZGVmaW5lZDtcbiIsInZhciBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hcDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZU1hcCA9IHJlcXVpcmUoJy4vX2Jhc2VNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICogICByZXR1cm4gbiAqIG47XG4gKiB9XG4gKlxuICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF1cbiAqXG4gKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICogXTtcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gKi9cbmZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVJlZHVjZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVkdWNlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbnZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpU2l6ZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1VuaWNvZGU7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xudmFyIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYSBVbmljb2RlIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICovXG5mdW5jdGlvbiB1bmljb2RlU2l6ZShzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICB3aGlsZSAocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkge1xuICAgICsrcmVzdWx0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pY29kZVNpemU7XG4iLCJ2YXIgYXNjaWlTaXplID0gcmVxdWlyZSgnLi9fYXNjaWlTaXplJyksXG4gICAgaGFzVW5pY29kZSA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGUnKSxcbiAgICB1bmljb2RlU2l6ZSA9IHJlcXVpcmUoJy4vX3VuaWNvZGVTaXplJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVTaXplKHN0cmluZylcbiAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1NpemU7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAgIHN0cmluZ1NpemUgPSByZXF1aXJlKCcuL19zdHJpbmdTaXplJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAqIC8vID0+IDdcbiAqL1xuZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyhjb2xsZWN0aW9uKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gIH1cbiAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaXplO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuIiwidmFyIGFwcGx5ID0gcmVxdWlyZSgnLi9fYXBwbHknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyUmVzdDtcbiIsInZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSxcbiAgICBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXRUb1N0cmluZztcbiIsIi8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbnZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgSE9UX1NQQU4gPSAxNjtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gKiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gIHZhciBjb3VudCA9IDAsXG4gICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCA9IDA7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG9ydE91dDtcbiIsInZhciBiYXNlU2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlU2V0VG9TdHJpbmcnKSxcbiAgICBzaG9ydE91dCA9IHJlcXVpcmUoJy4vX3Nob3J0T3V0Jyk7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9TdHJpbmc7XG4iLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYU47XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iLCJ2YXIgYmFzZUluZGV4T2YgPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZicpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBzcGVjaWZ5aW5nIGFuIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5SW5jbHVkZXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi4zLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAqL1xuZnVuY3Rpb24gbm9vcCgpIHtcbiAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBub29wO1xuIiwidmFyIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIG5vb3AgPSByZXF1aXJlKCcuL25vb3AnKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBzZXQuXG4gKi9cbnZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVNldDtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXMnKSxcbiAgICBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpLFxuICAgIGNyZWF0ZVNldCA9IHJlcXVpcmUoJy4vX2NyZWF0ZVNldCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgfVxuICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgIGlmIChzZXQpIHtcbiAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgfVxuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICB9XG4gIGVsc2Uge1xuICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuaXE7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xudmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmlvbjtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsIi8qIGdsb2JhbCB3aW5kb3cgKi9cblxudmFyIGxvZGFzaDtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBsb2Rhc2ggPSB7XG4gICAgICBjbG9uZTogcmVxdWlyZShcImxvZGFzaC9jbG9uZVwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZWFjaDogcmVxdWlyZShcImxvZGFzaC9lYWNoXCIpLFxuICAgICAgZmlsdGVyOiByZXF1aXJlKFwibG9kYXNoL2ZpbHRlclwiKSxcbiAgICAgIGhhczogIHJlcXVpcmUoXCJsb2Rhc2gvaGFzXCIpLFxuICAgICAgaXNBcnJheTogcmVxdWlyZShcImxvZGFzaC9pc0FycmF5XCIpLFxuICAgICAgaXNFbXB0eTogcmVxdWlyZShcImxvZGFzaC9pc0VtcHR5XCIpLFxuICAgICAgaXNGdW5jdGlvbjogcmVxdWlyZShcImxvZGFzaC9pc0Z1bmN0aW9uXCIpLFxuICAgICAgaXNVbmRlZmluZWQ6IHJlcXVpcmUoXCJsb2Rhc2gvaXNVbmRlZmluZWRcIiksXG4gICAgICBrZXlzOiByZXF1aXJlKFwibG9kYXNoL2tleXNcIiksXG4gICAgICBtYXA6IHJlcXVpcmUoXCJsb2Rhc2gvbWFwXCIpLFxuICAgICAgcmVkdWNlOiByZXF1aXJlKFwibG9kYXNoL3JlZHVjZVwiKSxcbiAgICAgIHNpemU6IHJlcXVpcmUoXCJsb2Rhc2gvc2l6ZVwiKSxcbiAgICAgIHRyYW5zZm9ybTogcmVxdWlyZShcImxvZGFzaC90cmFuc2Zvcm1cIiksXG4gICAgICB1bmlvbjogcmVxdWlyZShcImxvZGFzaC91bmlvblwiKSxcbiAgICAgIHZhbHVlczogcmVxdWlyZShcImxvZGFzaC92YWx1ZXNcIilcbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICB9XG59XG5cbmlmICghbG9kYXNoKSB7XG4gIGxvZGFzaCA9IHdpbmRvdy5fO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvZGFzaDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBHcmFwaDtcblxudmFyIERFRkFVTFRfRURHRV9OQU1FID0gXCJcXHgwMFwiO1xudmFyIEdSQVBIX05PREUgPSBcIlxceDAwXCI7XG52YXIgRURHRV9LRVlfREVMSU0gPSBcIlxceDAxXCI7XG5cbi8vIEltcGxlbWVudGF0aW9uIG5vdGVzOlxuLy9cbi8vICAqIE5vZGUgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gc3RyaW5nIGlkcyBmb3IgdGhlIG5vZGVzXG4vLyAgKiBFZGdlIGlkIHF1ZXJ5IGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIFwiZWRnZU9ialwiLCBlZGdlIG9iamVjdCwgdGhhdCBpc1xuLy8gICAgY29tcG9zZWQgb2YgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGFuIGVkZ2U6IHt2LCB3LCBuYW1lfS5cbi8vICAqIEludGVybmFsbHkgd2UgdXNlIGFuIFwiZWRnZUlkXCIsIGEgc3RyaW5naWZpZWQgZm9ybSBvZiB0aGUgZWRnZU9iaiwgdG9cbi8vICAgIHJlZmVyZW5jZSBlZGdlcy4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgYSBwZXJmb3JtYW50IHdheSB0byBsb29rIHRoZXNlXG4vLyAgICBlZGdlcyB1cCBhbmQsIG9iamVjdCBwcm9wZXJ0aWVzLCB3aGljaCBoYXZlIHN0cmluZyBrZXlzLCBhcmUgdGhlIGNsb3Nlc3Rcbi8vICAgIHdlJ3JlIGdvaW5nIHRvIGdldCB0byBhIHBlcmZvcm1hbnQgaGFzaHRhYmxlIGluIEphdmFTY3JpcHQuXG5cbmZ1bmN0aW9uIEdyYXBoKG9wdHMpIHtcbiAgdGhpcy5faXNEaXJlY3RlZCA9IF8uaGFzKG9wdHMsIFwiZGlyZWN0ZWRcIikgPyBvcHRzLmRpcmVjdGVkIDogdHJ1ZTtcbiAgdGhpcy5faXNNdWx0aWdyYXBoID0gXy5oYXMob3B0cywgXCJtdWx0aWdyYXBoXCIpID8gb3B0cy5tdWx0aWdyYXBoIDogZmFsc2U7XG4gIHRoaXMuX2lzQ29tcG91bmQgPSBfLmhhcyhvcHRzLCBcImNvbXBvdW5kXCIpID8gb3B0cy5jb21wb3VuZCA6IGZhbHNlO1xuXG4gIC8vIExhYmVsIGZvciB0aGUgZ3JhcGggaXRzZWxmXG4gIHRoaXMuX2xhYmVsID0gdW5kZWZpbmVkO1xuXG4gIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGVcbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gXy5jb25zdGFudCh1bmRlZmluZWQpO1xuXG4gIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IGVkZ2VcbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gXy5jb25zdGFudCh1bmRlZmluZWQpO1xuXG4gIC8vIHYgLT4gbGFiZWxcbiAgdGhpcy5fbm9kZXMgPSB7fTtcblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIC8vIHYgLT4gcGFyZW50XG4gICAgdGhpcy5fcGFyZW50ID0ge307XG5cbiAgICAvLyB2IC0+IGNoaWxkcmVuXG4gICAgdGhpcy5fY2hpbGRyZW4gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXSA9IHt9O1xuICB9XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX2luID0ge307XG5cbiAgLy8gdSAtPiB2IC0+IE51bWJlclxuICB0aGlzLl9wcmVkcyA9IHt9O1xuXG4gIC8vIHYgLT4gZWRnZU9ialxuICB0aGlzLl9vdXQgPSB7fTtcblxuICAvLyB2IC0+IHcgLT4gTnVtYmVyXG4gIHRoaXMuX3N1Y3MgPSB7fTtcblxuICAvLyBlIC0+IGVkZ2VPYmpcbiAgdGhpcy5fZWRnZU9ianMgPSB7fTtcblxuICAvLyBlIC0+IGxhYmVsXG4gIHRoaXMuX2VkZ2VMYWJlbHMgPSB7fTtcbn1cblxuLyogTnVtYmVyIG9mIG5vZGVzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX25vZGVDb3VudCA9IDA7XG5cbi8qIE51bWJlciBvZiBlZGdlcyBpbiB0aGUgZ3JhcGguIFNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLiAqL1xuR3JhcGgucHJvdG90eXBlLl9lZGdlQ291bnQgPSAwO1xuXG5cbi8qID09PSBHcmFwaCBmdW5jdGlvbnMgPT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5pc0RpcmVjdGVkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc0RpcmVjdGVkO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTXVsdGlncmFwaCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBoO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmlzQ29tcG91bmQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzQ29tcG91bmQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0R3JhcGggPSBmdW5jdGlvbihsYWJlbCkge1xuICB0aGlzLl9sYWJlbCA9IGxhYmVsO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ncmFwaCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fbGFiZWw7XG59O1xuXG5cbi8qID09PSBOb2RlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5zZXREZWZhdWx0Tm9kZUxhYmVsID0gZnVuY3Rpb24obmV3RGVmYXVsdCkge1xuICBpZiAoIV8uaXNGdW5jdGlvbihuZXdEZWZhdWx0KSkge1xuICAgIG5ld0RlZmF1bHQgPSBfLmNvbnN0YW50KG5ld0RlZmF1bHQpO1xuICB9XG4gIHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbiA9IG5ld0RlZmF1bHQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVDb3VudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fbm9kZUNvdW50O1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBfLmtleXModGhpcy5fbm9kZXMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNvdXJjZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9pblt2XSk7XG4gIH0pO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNpbmtzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLmlzRW1wdHkoc2VsZi5fb3V0W3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZXMgPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXROb2RlKHYpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldE5vZGUgPSBmdW5jdGlvbih2LCB2YWx1ZSkge1xuICBpZiAoXy5oYXModGhpcy5fbm9kZXMsIHYpKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLl9ub2Rlc1t2XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX25vZGVzW3ZdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB2YWx1ZSA6IHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbih2KTtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aGlzLl9wYXJlbnRbdl0gPSBHUkFQSF9OT0RFO1xuICAgIHRoaXMuX2NoaWxkcmVuW3ZdID0ge307XG4gICAgdGhpcy5fY2hpbGRyZW5bR1JBUEhfTk9ERV1bdl0gPSB0cnVlO1xuICB9XG4gIHRoaXMuX2luW3ZdID0ge307XG4gIHRoaXMuX3ByZWRzW3ZdID0ge307XG4gIHRoaXMuX291dFt2XSA9IHt9O1xuICB0aGlzLl9zdWNzW3ZdID0ge307XG4gICsrdGhpcy5fbm9kZUNvdW50O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gdGhpcy5fbm9kZXNbdl07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaGFzTm9kZSA9IGZ1bmN0aW9uKHYpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX25vZGVzLCB2KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVOb2RlID0gIGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoXy5oYXModGhpcy5fbm9kZXMsIHYpKSB7XG4gICAgdmFyIHJlbW92ZUVkZ2UgPSBmdW5jdGlvbihlKSB7IHNlbGYucmVtb3ZlRWRnZShzZWxmLl9lZGdlT2Jqc1tlXSk7IH07XG4gICAgZGVsZXRlIHRoaXMuX25vZGVzW3ZdO1xuICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICB0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh2KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9wYXJlbnRbdl07XG4gICAgICBfLmVhY2godGhpcy5jaGlsZHJlbih2KSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgc2VsZi5zZXRQYXJlbnQoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgICBkZWxldGUgdGhpcy5fY2hpbGRyZW5bdl07XG4gICAgfVxuICAgIF8uZWFjaChfLmtleXModGhpcy5faW5bdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5faW5bdl07XG4gICAgZGVsZXRlIHRoaXMuX3ByZWRzW3ZdO1xuICAgIF8uZWFjaChfLmtleXModGhpcy5fb3V0W3ZdKSwgcmVtb3ZlRWRnZSk7XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XTtcbiAgICBkZWxldGUgdGhpcy5fc3Vjc1t2XTtcbiAgICAtLXRoaXMuX25vZGVDb3VudDtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXJlbnQgPSBmdW5jdGlvbih2LCBwYXJlbnQpIHtcbiAgaWYgKCF0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBwYXJlbnQgaW4gYSBub24tY29tcG91bmQgZ3JhcGhcIik7XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgcGFyZW50ID0gR1JBUEhfTk9ERTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb2VyY2UgcGFyZW50IHRvIHN0cmluZ1xuICAgIHBhcmVudCArPSBcIlwiO1xuICAgIGZvciAodmFyIGFuY2VzdG9yID0gcGFyZW50O1xuICAgICAgIV8uaXNVbmRlZmluZWQoYW5jZXN0b3IpO1xuICAgICAgYW5jZXN0b3IgPSB0aGlzLnBhcmVudChhbmNlc3RvcikpIHtcbiAgICAgIGlmIChhbmNlc3RvciA9PT0gdikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZXR0aW5nIFwiICsgcGFyZW50KyBcIiBhcyBwYXJlbnQgb2YgXCIgKyB2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0Tm9kZShwYXJlbnQpO1xuICB9XG5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh2KTtcbiAgdGhpcy5fcGFyZW50W3ZdID0gcGFyZW50O1xuICB0aGlzLl9jaGlsZHJlbltwYXJlbnRdW3ZdID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0ID0gZnVuY3Rpb24odikge1xuICBkZWxldGUgdGhpcy5fY2hpbGRyZW5bdGhpcy5fcGFyZW50W3ZdXVt2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5wYXJlbnQgPSBmdW5jdGlvbih2KSB7XG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuX3BhcmVudFt2XTtcbiAgICBpZiAocGFyZW50ICE9PSBHUkFQSF9OT0RFKSB7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmNoaWxkcmVuID0gZnVuY3Rpb24odikge1xuICBpZiAoXy5pc1VuZGVmaW5lZCh2KSkge1xuICAgIHYgPSBHUkFQSF9OT0RFO1xuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBfLmtleXMoY2hpbGRyZW4pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2ID09PSBHUkFQSF9OT0RFKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmhhc05vZGUodikpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5wcmVkZWNlc3NvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkc1YgPSB0aGlzLl9wcmVkc1t2XTtcbiAgaWYgKHByZWRzVikge1xuICAgIHJldHVybiBfLmtleXMocHJlZHNWKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnN1Y2Nlc3NvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBzdWNzViA9IHRoaXMuX3N1Y3Nbdl07XG4gIGlmIChzdWNzVikge1xuICAgIHJldHVybiBfLmtleXMoc3Vjc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubmVpZ2hib3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgcHJlZHMgPSB0aGlzLnByZWRlY2Vzc29ycyh2KTtcbiAgaWYgKHByZWRzKSB7XG4gICAgcmV0dXJuIF8udW5pb24ocHJlZHMsIHRoaXMuc3VjY2Vzc29ycyh2KSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbiAodikge1xuICB2YXIgbmVpZ2hib3JzO1xuICBpZiAodGhpcy5pc0RpcmVjdGVkKCkpIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLnN1Y2Nlc3NvcnModik7XG4gIH0gZWxzZSB7XG4gICAgbmVpZ2hib3JzID0gdGhpcy5uZWlnaGJvcnModik7XG4gIH1cbiAgcmV0dXJuIG5laWdoYm9ycy5sZW5ndGggPT09IDA7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZmlsdGVyTm9kZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcbiAgdmFyIGNvcHkgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7XG4gICAgZGlyZWN0ZWQ6IHRoaXMuX2lzRGlyZWN0ZWQsXG4gICAgbXVsdGlncmFwaDogdGhpcy5faXNNdWx0aWdyYXBoLFxuICAgIGNvbXBvdW5kOiB0aGlzLl9pc0NvbXBvdW5kXG4gIH0pO1xuXG4gIGNvcHkuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIF8uZWFjaCh0aGlzLl9ub2RlcywgZnVuY3Rpb24odmFsdWUsIHYpIHtcbiAgICBpZiAoZmlsdGVyKHYpKSB7XG4gICAgICBjb3B5LnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgXy5lYWNoKHRoaXMuX2VkZ2VPYmpzLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKGNvcHkuaGFzTm9kZShlLnYpICYmIGNvcHkuaGFzTm9kZShlLncpKSB7XG4gICAgICBjb3B5LnNldEVkZ2UoZSwgc2VsZi5lZGdlKGUpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBwYXJlbnRzID0ge307XG4gIGZ1bmN0aW9uIGZpbmRQYXJlbnQodikge1xuICAgIHZhciBwYXJlbnQgPSBzZWxmLnBhcmVudCh2KTtcbiAgICBpZiAocGFyZW50ID09PSB1bmRlZmluZWQgfHwgY29weS5oYXNOb2RlKHBhcmVudCkpIHtcbiAgICAgIHBhcmVudHNbdl0gPSBwYXJlbnQ7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0gZWxzZSBpZiAocGFyZW50IGluIHBhcmVudHMpIHtcbiAgICAgIHJldHVybiBwYXJlbnRzW3BhcmVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmaW5kUGFyZW50KHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICBfLmVhY2goY29weS5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgICBjb3B5LnNldFBhcmVudCh2LCBmaW5kUGFyZW50KHYpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxuLyogPT09IEVkZ2UgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9lZGdlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8udmFsdWVzKHRoaXMuX2VkZ2VPYmpzKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXRoID0gZnVuY3Rpb24odnMsIHZhbHVlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIF8ucmVkdWNlKHZzLCBmdW5jdGlvbih2LCB3KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcpO1xuICAgIH1cbiAgICByZXR1cm4gdztcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLypcbiAqIHNldEVkZ2UodiwgdywgW3ZhbHVlLCBbbmFtZV1dKVxuICogc2V0RWRnZSh7IHYsIHcsIFtuYW1lXSB9LCBbdmFsdWVdKVxuICovXG5HcmFwaC5wcm90b3R5cGUuc2V0RWRnZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdiwgdywgbmFtZSwgdmFsdWU7XG4gIHZhciB2YWx1ZVNwZWNpZmllZCA9IGZhbHNlO1xuICB2YXIgYXJnMCA9IGFyZ3VtZW50c1swXTtcblxuICBpZiAodHlwZW9mIGFyZzAgPT09IFwib2JqZWN0XCIgJiYgYXJnMCAhPT0gbnVsbCAmJiBcInZcIiBpbiBhcmcwKSB7XG4gICAgdiA9IGFyZzAudjtcbiAgICB3ID0gYXJnMC53O1xuICAgIG5hbWUgPSBhcmcwLm5hbWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzFdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2ID0gYXJnMDtcbiAgICB3ID0gYXJndW1lbnRzWzFdO1xuICAgIG5hbWUgPSBhcmd1bWVudHNbM107XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1syXTtcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2ID0gXCJcIiArIHY7XG4gIHcgPSBcIlwiICsgdztcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgbmFtZSA9IFwiXCIgKyBuYW1lO1xuICB9XG5cbiAgdmFyIGUgPSBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gIGlmIChfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKSkge1xuICAgIGlmICh2YWx1ZVNwZWNpZmllZCkge1xuICAgICAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSAmJiAhdGhpcy5faXNNdWx0aWdyYXBoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZVwiKTtcbiAgfVxuXG4gIC8vIEl0IGRpZG4ndCBleGlzdCwgc28gd2UgbmVlZCB0byBjcmVhdGUgaXQuXG4gIC8vIEZpcnN0IGVuc3VyZSB0aGUgbm9kZXMgZXhpc3QuXG4gIHRoaXMuc2V0Tm9kZSh2KTtcbiAgdGhpcy5zZXROb2RlKHcpO1xuXG4gIHRoaXMuX2VkZ2VMYWJlbHNbZV0gPSB2YWx1ZVNwZWNpZmllZCA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHYsIHcsIG5hbWUpO1xuXG4gIHZhciBlZGdlT2JqID0gZWRnZUFyZ3NUb09iaih0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgLy8gRW5zdXJlIHdlIGFkZCB1bmRpcmVjdGVkIGVkZ2VzIGluIGEgY29uc2lzdGVudCB3YXkuXG4gIHYgPSBlZGdlT2JqLnY7XG4gIHcgPSBlZGdlT2JqLnc7XG5cbiAgT2JqZWN0LmZyZWV6ZShlZGdlT2JqKTtcbiAgdGhpcy5fZWRnZU9ianNbZV0gPSBlZGdlT2JqO1xuICBpbmNyZW1lbnRPckluaXRFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICB0aGlzLl9pblt3XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX291dFt2XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX2VkZ2VDb3VudCsrO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tlXTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgdmFyIGVkZ2UgPSB0aGlzLl9lZGdlT2Jqc1tlXTtcbiAgaWYgKGVkZ2UpIHtcbiAgICB2ID0gZWRnZS52O1xuICAgIHcgPSBlZGdlLnc7XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbZV07XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW2VdO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ddW2VdO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl1bZV07XG4gICAgdGhpcy5fZWRnZUNvdW50LS07XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaW5FZGdlcyA9IGZ1bmN0aW9uKHYsIHUpIHtcbiAgdmFyIGluViA9IHRoaXMuX2luW3ZdO1xuICBpZiAoaW5WKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMoaW5WKTtcbiAgICBpZiAoIXUpIHtcbiAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgcmV0dXJuIF8uZmlsdGVyKGVkZ2VzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBlZGdlLnYgPT09IHU7IH0pO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUub3V0RWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBvdXRWID0gdGhpcy5fb3V0W3ZdO1xuICBpZiAob3V0Vikge1xuICAgIHZhciBlZGdlcyA9IF8udmFsdWVzKG91dFYpO1xuICAgIGlmICghdykge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudyA9PT0gdzsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlRWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBpbkVkZ2VzID0gdGhpcy5pbkVkZ2VzKHYsIHcpO1xuICBpZiAoaW5FZGdlcykge1xuICAgIHJldHVybiBpbkVkZ2VzLmNvbmNhdCh0aGlzLm91dEVkZ2VzKHYsIHcpKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gaW5jcmVtZW50T3JJbml0RW50cnkobWFwLCBrKSB7XG4gIGlmIChtYXBba10pIHtcbiAgICBtYXBba10rKztcbiAgfSBlbHNlIHtcbiAgICBtYXBba10gPSAxO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkobWFwLCBrKSB7XG4gIGlmICghLS1tYXBba10pIHsgZGVsZXRlIG1hcFtrXTsgfVxufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICByZXR1cm4gdiArIEVER0VfS0VZX0RFTElNICsgdyArIEVER0VfS0VZX0RFTElNICtcbiAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChuYW1lKSA/IERFRkFVTFRfRURHRV9OQU1FIDogbmFtZSk7XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9PYmooaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICB2YXIgZWRnZU9iaiA9ICB7IHY6IHYsIHc6IHcgfTtcbiAgaWYgKG5hbWUpIHtcbiAgICBlZGdlT2JqLm5hbWUgPSBuYW1lO1xuICB9XG4gIHJldHVybiBlZGdlT2JqO1xufVxuXG5mdW5jdGlvbiBlZGdlT2JqVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqKSB7XG4gIHJldHVybiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgZWRnZU9iai52LCBlZGdlT2JqLncsIGVkZ2VPYmoubmFtZSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuOCc7XG4iLCIvLyBJbmNsdWRlcyBvbmx5IHRoZSBcImNvcmVcIiBvZiBncmFwaGxpYlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiByZXF1aXJlKFwiLi9ncmFwaFwiKSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vdmVyc2lvblwiKVxufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3cml0ZTogd3JpdGUsXG4gIHJlYWQ6IHJlYWRcbn07XG5cbmZ1bmN0aW9uIHdyaXRlKGcpIHtcbiAgdmFyIGpzb24gPSB7XG4gICAgb3B0aW9uczoge1xuICAgICAgZGlyZWN0ZWQ6IGcuaXNEaXJlY3RlZCgpLFxuICAgICAgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSxcbiAgICAgIGNvbXBvdW5kOiBnLmlzQ29tcG91bmQoKVxuICAgIH0sXG4gICAgbm9kZXM6IHdyaXRlTm9kZXMoZyksXG4gICAgZWRnZXM6IHdyaXRlRWRnZXMoZylcbiAgfTtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGcuZ3JhcGgoKSkpIHtcbiAgICBqc29uLnZhbHVlID0gXy5jbG9uZShnLmdyYXBoKCkpO1xuICB9XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiB3cml0ZU5vZGVzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlVmFsdWUgPSBnLm5vZGUodik7XG4gICAgdmFyIHBhcmVudCA9IGcucGFyZW50KHYpO1xuICAgIHZhciBub2RlID0geyB2OiB2IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG5vZGVWYWx1ZSkpIHtcbiAgICAgIG5vZGUudmFsdWUgPSBub2RlVmFsdWU7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUVkZ2VzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlVmFsdWUgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIGVkZ2UgPSB7IHY6IGUudiwgdzogZS53IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGUubmFtZSkpIHtcbiAgICAgIGVkZ2UubmFtZSA9IGUubmFtZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVkZ2VWYWx1ZSkpIHtcbiAgICAgIGVkZ2UudmFsdWUgPSBlZGdlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBlZGdlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZChqc29uKSB7XG4gIHZhciBnID0gbmV3IEdyYXBoKGpzb24ub3B0aW9ucykuc2V0R3JhcGgoanNvbi52YWx1ZSk7XG4gIF8uZWFjaChqc29uLm5vZGVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0Tm9kZShlbnRyeS52LCBlbnRyeS52YWx1ZSk7XG4gICAgaWYgKGVudHJ5LnBhcmVudCkge1xuICAgICAgZy5zZXRQYXJlbnQoZW50cnkudiwgZW50cnkucGFyZW50KTtcbiAgICB9XG4gIH0pO1xuICBfLmVhY2goanNvbi5lZGdlcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBnLnNldEVkZ2UoeyB2OiBlbnRyeS52LCB3OiBlbnRyeS53LCBuYW1lOiBlbnRyeS5uYW1lIH0sIGVudHJ5LnZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBnO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGNvbXBvbmVudHMoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgY21wdHMgPSBbXTtcbiAgdmFyIGNtcHQ7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHJldHVybjtcbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICBjbXB0LnB1c2godik7XG4gICAgXy5lYWNoKGcuc3VjY2Vzc29ycyh2KSwgZGZzKTtcbiAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnModiksIGRmcyk7XG4gIH1cblxuICBfLmVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgY21wdCA9IFtdO1xuICAgIGRmcyh2KTtcbiAgICBpZiAoY21wdC5sZW5ndGgpIHtcbiAgICAgIGNtcHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY21wdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJpb3JpdHlRdWV1ZTtcblxuLyoqXG4gKiBBIG1pbi1wcmlvcml0eSBxdWV1ZSBkYXRhIHN0cnVjdHVyZS4gVGhpcyBhbGdvcml0aG0gaXMgZGVyaXZlZCBmcm9tIENvcm1lbixcbiAqIGV0IGFsLiwgXCJJbnRyb2R1Y3Rpb24gdG8gQWxnb3JpdGhtc1wiLiBUaGUgYmFzaWMgaWRlYSBvZiBhIG1pbi1wcmlvcml0eVxuICogcXVldWUgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IChpbiBPKDEpIHRpbWUpIGdldCB0aGUgc21hbGxlc3Qga2V5IGluXG4gKiB0aGUgcXVldWUuIEFkZGluZyBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgdGFrZXMgTyhsb2cgbikgdGltZS4gQSBrZXkgY2FuXG4gKiBoYXZlIGl0cyBwcmlvcml0eSBkZWNyZWFzZWQgaW4gTyhsb2cgbikgdGltZS5cbiAqL1xuZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZSgpIHtcbiAgdGhpcy5fYXJyID0gW107XG4gIHRoaXMuX2tleUluZGljZXMgPSB7fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYXJyLmxlbmd0aDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgua2V5OyB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgKiprZXkqKiBpcyBpbiB0aGUgcXVldWUgYW5kIGBmYWxzZWAgaWYgbm90LlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihrZXkpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX2tleUluZGljZXMsIGtleSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHByaW9yaXR5IGZvciAqKmtleSoqLiBJZiAqKmtleSoqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBxdWV1ZVxuICogdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYHVuZGVmaW5lZGAuIFRha2VzIGBPKDEpYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHJpb3JpdHkgPSBmdW5jdGlvbihrZXkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5O1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGtleSBmb3IgdGhlIG1pbmltdW0gZWxlbWVudCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgcXVldWUgaXNcbiAqIGVtcHR5IHRoaXMgZnVuY3Rpb24gdGhyb3dzIGFuIEVycm9yLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUubWluID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUoKSA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlF1ZXVlIHVuZGVyZmxvd1wiKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyWzBdLmtleTtcbn07XG5cbi8qKlxuICogSW5zZXJ0cyBhIG5ldyBrZXkgaW50byB0aGUgcHJpb3JpdHkgcXVldWUuIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgaW5cbiAqIHRoZSBxdWV1ZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYDsgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIGB0cnVlYC5cbiAqIFRha2VzIGBPKG4pYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgdGhlIGtleSB0byBhZGRcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgaW5pdGlhbCBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBrZXlJbmRpY2VzID0gdGhpcy5fa2V5SW5kaWNlcztcbiAga2V5ID0gU3RyaW5nKGtleSk7XG4gIGlmICghXy5oYXMoa2V5SW5kaWNlcywga2V5KSkge1xuICAgIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gICAgdmFyIGluZGV4ID0gYXJyLmxlbmd0aDtcbiAgICBrZXlJbmRpY2VzW2tleV0gPSBpbmRleDtcbiAgICBhcnIucHVzaCh7a2V5OiBrZXksIHByaW9yaXR5OiBwcmlvcml0eX0pO1xuICAgIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYW5kIHJldHVybnMgdGhlIHNtYWxsZXN0IGtleSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKGxvZyBuKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVtb3ZlTWluID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3N3YXAoMCwgdGhpcy5fYXJyLmxlbmd0aCAtIDEpO1xuICB2YXIgbWluID0gdGhpcy5fYXJyLnBvcCgpO1xuICBkZWxldGUgdGhpcy5fa2V5SW5kaWNlc1ttaW4ua2V5XTtcbiAgdGhpcy5faGVhcGlmeSgwKTtcbiAgcmV0dXJuIG1pbi5rZXk7XG59O1xuXG4vKipcbiAqIERlY3JlYXNlcyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiogdG8gKipwcmlvcml0eSoqLiBJZiB0aGUgbmV3IHByaW9yaXR5IGlzXG4gKiBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIHByaW9yaXR5LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdGhyb3cgYW4gRXJyb3IuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IGZvciB3aGljaCB0byByYWlzZSBwcmlvcml0eVxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBuZXcgcHJpb3JpdHkgZm9yIHRoZSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZGVjcmVhc2UgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX2tleUluZGljZXNba2V5XTtcbiAgaWYgKHByaW9yaXR5ID4gdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gXCIgK1xuICAgICAgICBcIktleTogXCIgKyBrZXkgKyBcIiBPbGQ6IFwiICsgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSArIFwiIE5ldzogXCIgKyBwcmlvcml0eSk7XG4gIH1cbiAgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICB0aGlzLl9kZWNyZWFzZShpbmRleCk7XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5faGVhcGlmeSA9IGZ1bmN0aW9uKGkpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGwgPSAyICogaTtcbiAgdmFyIHIgPSBsICsgMTtcbiAgdmFyIGxhcmdlc3QgPSBpO1xuICBpZiAobCA8IGFyci5sZW5ndGgpIHtcbiAgICBsYXJnZXN0ID0gYXJyW2xdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gbCA6IGxhcmdlc3Q7XG4gICAgaWYgKHIgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBsYXJnZXN0ID0gYXJyW3JdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gciA6IGxhcmdlc3Q7XG4gICAgfVxuICAgIGlmIChsYXJnZXN0ICE9PSBpKSB7XG4gICAgICB0aGlzLl9zd2FwKGksIGxhcmdlc3QpO1xuICAgICAgdGhpcy5faGVhcGlmeShsYXJnZXN0KTtcbiAgICB9XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9kZWNyZWFzZSA9IGZ1bmN0aW9uKGluZGV4KSB7XG4gIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gIHZhciBwcmlvcml0eSA9IGFycltpbmRleF0ucHJpb3JpdHk7XG4gIHZhciBwYXJlbnQ7XG4gIHdoaWxlIChpbmRleCAhPT0gMCkge1xuICAgIHBhcmVudCA9IGluZGV4ID4+IDE7XG4gICAgaWYgKGFycltwYXJlbnRdLnByaW9yaXR5IDwgcHJpb3JpdHkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9zd2FwKGluZGV4LCBwYXJlbnQpO1xuICAgIGluZGV4ID0gcGFyZW50O1xuICB9XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fc3dhcCA9IGZ1bmN0aW9uKGksIGopIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICB2YXIgb3JpZ0FyckkgPSBhcnJbaV07XG4gIHZhciBvcmlnQXJySiA9IGFycltqXTtcbiAgYXJyW2ldID0gb3JpZ0Fycko7XG4gIGFycltqXSA9IG9yaWdBcnJJO1xuICBrZXlJbmRpY2VzW29yaWdBcnJKLmtleV0gPSBpO1xuICBrZXlJbmRpY2VzW29yaWdBcnJJLmtleV0gPSBqO1xufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBQcmlvcml0eVF1ZXVlID0gcmVxdWlyZShcIi4uL2RhdGEvcHJpb3JpdHktcXVldWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmE7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5EaWprc3RyYShnLCBTdHJpbmcoc291cmNlKSxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2LCB2RW50cnk7XG5cbiAgdmFyIHVwZGF0ZU5laWdoYm9ycyA9IGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgdyA9IGVkZ2UudiAhPT0gdiA/IGVkZ2UudiA6IGVkZ2UudztcbiAgICB2YXIgd0VudHJ5ID0gcmVzdWx0c1t3XTtcbiAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgdmFyIGRpc3RhbmNlID0gdkVudHJ5LmRpc3RhbmNlICsgd2VpZ2h0O1xuXG4gICAgaWYgKHdlaWdodCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiQmFkIGVkZ2U6IFwiICsgZWRnZSArIFwiIFdlaWdodDogXCIgKyB3ZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChkaXN0YW5jZSA8IHdFbnRyeS5kaXN0YW5jZSkge1xuICAgICAgd0VudHJ5LmRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICB3RW50cnkucHJlZGVjZXNzb3IgPSB2O1xuICAgICAgcHEuZGVjcmVhc2UodywgZGlzdGFuY2UpO1xuICAgIH1cbiAgfTtcblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgdmFyIGRpc3RhbmNlID0gdiA9PT0gc291cmNlID8gMCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICByZXN1bHRzW3ZdID0geyBkaXN0YW5jZTogZGlzdGFuY2UgfTtcbiAgICBwcS5hZGQodiwgZGlzdGFuY2UpO1xuICB9KTtcblxuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICB2RW50cnkgPSByZXN1bHRzW3ZdO1xuICAgIGlmICh2RW50cnkuZGlzdGFuY2UgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWRnZUZuKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW107XG4gICAgICB2YXIgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHRhcmphbiA9IHJlcXVpcmUoXCIuL3RhcmphblwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kQ3ljbGVzO1xuXG5mdW5jdGlvbiBmaW5kQ3ljbGVzKGcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRhcmphbihnKSwgZnVuY3Rpb24oY21wdCkge1xuICAgIHJldHVybiBjbXB0Lmxlbmd0aCA+IDEgfHwgKGNtcHQubGVuZ3RoID09PSAxICYmIGcuaGFzRWRnZShjbXB0WzBdLCBjbXB0WzBdKSk7XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3lkV2Fyc2hhbGw7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5GbG95ZFdhcnNoYWxsKGcsXG4gICAgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRlVOQyxcbiAgICBlZGdlRm4gfHwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5vdXRFZGdlcyh2KTsgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkZsb3lkV2Fyc2hhbGwoZywgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICB2YXIgcmVzdWx0cyA9IHt9O1xuICB2YXIgbm9kZXMgPSBnLm5vZGVzKCk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgcmVzdWx0c1t2XSA9IHt9O1xuICAgIHJlc3VsdHNbdl1bdl0gPSB7IGRpc3RhbmNlOiAwIH07XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAodiAhPT0gdykge1xuICAgICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWRnZUZuKHYpLmZvckVhY2goZnVuY3Rpb24oZWRnZSkge1xuICAgICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgICB2YXIgZCA9IHdlaWdodEZuKGVkZ2UpO1xuICAgICAgcmVzdWx0c1t2XVt3XSA9IHsgZGlzdGFuY2U6IGQsIHByZWRlY2Vzc29yOiB2IH07XG4gICAgfSk7XG4gIH0pO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgIHZhciByb3dLID0gcmVzdWx0c1trXTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpIHtcbiAgICAgIHZhciByb3dJID0gcmVzdWx0c1tpXTtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaikge1xuICAgICAgICB2YXIgaWsgPSByb3dJW2tdO1xuICAgICAgICB2YXIga2ogPSByb3dLW2pdO1xuICAgICAgICB2YXIgaWogPSByb3dJW2pdO1xuICAgICAgICB2YXIgYWx0RGlzdGFuY2UgPSBpay5kaXN0YW5jZSArIGtqLmRpc3RhbmNlO1xuICAgICAgICBpZiAoYWx0RGlzdGFuY2UgPCBpai5kaXN0YW5jZSkge1xuICAgICAgICAgIGlqLmRpc3RhbmNlID0gYWx0RGlzdGFuY2U7XG4gICAgICAgICAgaWoucHJlZGVjZXNzb3IgPSBrai5wcmVkZWNlc3NvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbkN5Y2xlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOyAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEVycm9yIHRvIHBhc3MgdGVzdGluZyIsInZhciB0b3Bzb3J0ID0gcmVxdWlyZShcIi4vdG9wc29ydFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FjeWNsaWM7XG5cbmZ1bmN0aW9uIGlzQWN5Y2xpYyhnKSB7XG4gIHRyeSB7XG4gICAgdG9wc29ydChnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgdG9wc29ydC5DeWNsZUV4Y2VwdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRmcztcblxuLypcbiAqIEEgaGVscGVyIHRoYXQgcHJlZm9ybXMgYSBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9uIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIHJldHVybnMgdGhlIG5vZGVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgdmlzaXRlZC4gSWYgdGhlIGdyYXBoIGlzXG4gKiB1bmRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBuZWlnaGJvcnMuIElmIHRoZSBncmFwaFxuICogaXMgZGlyZWN0ZWQgdGhlbiB0aGlzIGFsZ29yaXRobSB3aWxsIG5hdmlnYXRlIHVzaW5nIHN1Y2Nlc3NvcnMuXG4gKlxuICogT3JkZXIgbXVzdCBiZSBvbmUgb2YgXCJwcmVcIiBvciBcInBvc3RcIi5cbiAqL1xuZnVuY3Rpb24gZGZzKGcsIHZzLCBvcmRlcikge1xuICBpZiAoIV8uaXNBcnJheSh2cykpIHtcbiAgICB2cyA9IFt2c107XG4gIH1cblxuICB2YXIgbmF2aWdhdGlvbiA9IChnLmlzRGlyZWN0ZWQoKSA/IGcuc3VjY2Vzc29ycyA6IGcubmVpZ2hib3JzKS5iaW5kKGcpO1xuXG4gIHZhciBhY2MgPSBbXTtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmhhc05vZGUodikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogXCIgKyB2KTtcbiAgICB9XG5cbiAgICBkb0RmcyhnLCB2LCBvcmRlciA9PT0gXCJwb3N0XCIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gIH0pO1xuICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBkb0RmcyhnLCB2LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYykge1xuICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICBpZiAoIXBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICAgIF8uZWFjaChuYXZpZ2F0aW9uKHYpLCBmdW5jdGlvbih3KSB7XG4gICAgICBkb0RmcyhnLCB3LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gICAgfSk7XG4gICAgaWYgKHBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICB9XG59XG4iLCJ2YXIgZGZzID0gcmVxdWlyZShcIi4vZGZzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc3RvcmRlcjtcblxuZnVuY3Rpb24gcG9zdG9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicG9zdFwiKTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJlb3JkZXI7XG5cbmZ1bmN0aW9uIHByZW9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicHJlXCIpO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBoXCIpO1xudmFyIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmltO1xuXG5mdW5jdGlvbiBwcmltKGcsIHdlaWdodEZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBHcmFwaCgpO1xuICB2YXIgcGFyZW50cyA9IHt9O1xuICB2YXIgcHEgPSBuZXcgUHJpb3JpdHlRdWV1ZSgpO1xuICB2YXIgdjtcblxuICBmdW5jdGlvbiB1cGRhdGVOZWlnaGJvcnMoZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ID09PSB2ID8gZWRnZS53IDogZWRnZS52O1xuICAgIHZhciBwcmkgPSBwcS5wcmlvcml0eSh3KTtcbiAgICBpZiAocHJpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBlZGdlV2VpZ2h0ID0gd2VpZ2h0RnVuYyhlZGdlKTtcbiAgICAgIGlmIChlZGdlV2VpZ2h0IDwgcHJpKSB7XG4gICAgICAgIHBhcmVudHNbd10gPSB2O1xuICAgICAgICBwcS5kZWNyZWFzZSh3LCBlZGdlV2VpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZy5ub2RlQ291bnQoKSA9PT0gMCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBfLmVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcHEuYWRkKHYsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgcmVzdWx0LnNldE5vZGUodik7XG4gIH0pO1xuXG4gIC8vIFN0YXJ0IGZyb20gYW4gYXJiaXRyYXJ5IG5vZGVcbiAgcHEuZGVjcmVhc2UoZy5ub2RlcygpWzBdLCAwKTtcblxuICB2YXIgaW5pdCA9IGZhbHNlO1xuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICBpZiAoXy5oYXMocGFyZW50cywgdikpIHtcbiAgICAgIHJlc3VsdC5zZXRFZGdlKHYsIHBhcmVudHNbdl0pO1xuICAgIH0gZWxzZSBpZiAoaW5pdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogXCIgKyBnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdCA9IHRydWU7XG4gICAgfVxuXG4gICAgZy5ub2RlRWRnZXModikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wb25lbnRzOiByZXF1aXJlKFwiLi9jb21wb25lbnRzXCIpLFxuICBkaWprc3RyYTogcmVxdWlyZShcIi4vZGlqa3N0cmFcIiksXG4gIGRpamtzdHJhQWxsOiByZXF1aXJlKFwiLi9kaWprc3RyYS1hbGxcIiksXG4gIGZpbmRDeWNsZXM6IHJlcXVpcmUoXCIuL2ZpbmQtY3ljbGVzXCIpLFxuICBmbG95ZFdhcnNoYWxsOiByZXF1aXJlKFwiLi9mbG95ZC13YXJzaGFsbFwiKSxcbiAgaXNBY3ljbGljOiByZXF1aXJlKFwiLi9pcy1hY3ljbGljXCIpLFxuICBwb3N0b3JkZXI6IHJlcXVpcmUoXCIuL3Bvc3RvcmRlclwiKSxcbiAgcHJlb3JkZXI6IHJlcXVpcmUoXCIuL3ByZW9yZGVyXCIpLFxuICBwcmltOiByZXF1aXJlKFwiLi9wcmltXCIpLFxuICB0YXJqYW46IHJlcXVpcmUoXCIuL3RhcmphblwiKSxcbiAgdG9wc29ydDogcmVxdWlyZShcIi4vdG9wc29ydFwiKVxufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LCBDaHJpcyBQZXR0aXR0XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXG4gKiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xuICogbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGxpYiA9IHJlcXVpcmUoXCIuL2xpYlwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiBsaWIuR3JhcGgsXG4gIGpzb246IHJlcXVpcmUoXCIuL2xpYi9qc29uXCIpLFxuICBhbGc6IHJlcXVpcmUoXCIuL2xpYi9hbGdcIiksXG4gIHZlcnNpb246IGxpYi52ZXJzaW9uXG59O1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgZ3JhcGhsaWI7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgZ3JhcGhsaWIgPSByZXF1aXJlKFwiZ3JhcGhsaWJcIik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFncmFwaGxpYikge1xuICBncmFwaGxpYiA9IHdpbmRvdy5ncmFwaGxpYjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBncmFwaGxpYjtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJdGVyYXRlZUNhbGw7XG4iLCJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJ2YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5maW5kYCBvciBgXy5maW5kTGFzdGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbmRJbmRleEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gaW5kZXguXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVGaW5kKGZpbmRJbmRleEZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRmluZDtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAqIC8vID0+IDFcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IDJcbiAqL1xuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICB9XG4gIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiIsInZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLFxuICAgIGZpbmRJbmRleCA9IHJlcXVpcmUoJy4vZmluZEluZGV4Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICovXG52YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0XG4gKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmZvckluUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICovXG5mdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgID8gb2JqZWN0XG4gICAgOiBiYXNlRm9yKG9iamVjdCwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JJbjtcbiIsIi8qKlxuICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubGFzdChbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxhc3Q7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAqIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydVxuICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAqIEBzZWUgXy5tYXBLZXlzXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IHtcbiAqICAgJ2ZyZWQnOiAgICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gKiB9O1xuICpcbiAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVmFsdWVzO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgKSkge1xuICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRXh0cmVtdW07XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHdDtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICovXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BsYWluT2JqZWN0O1xuIiwidmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAgc2FmZUdldCA9IHJlcXVpcmUoJy4vX3NhZmVHZXQnKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICBpZiAoc3RhY2tlZCkge1xuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgfVxuICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUx0O1xuIiwidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLm1pbihbXSk7XG4gKiAvLyA9PiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBpZGVudGl0eSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbjtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbkJ5O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2tCeTtcbiIsInZhciBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICByZXR1cm4gaGFzSW4ob2JqZWN0LCBwYXRoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2s7XG4iLCJ2YXIgZmxhdHRlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbicpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0UmVzdDtcbiIsInZhciBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcbiIsIi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICogY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAqL1xuZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICBzdGFydCArPSBzdGVwO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJhbmdlO1xuIiwidmFyIGJhc2VSYW5nZSA9IHJlcXVpcmUoJy4vX2Jhc2VSYW5nZScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgfVxuICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJhbmdlO1xuIiwidmFyIGNyZWF0ZVJhbmdlID0gcmVxdWlyZSgnLi9fY3JlYXRlUmFuZ2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAqIGBzdGFydGAgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYW4gYGVuZGAgb3IgYHN0ZXBgLiBJZiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLFxuICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICpcbiAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmFuZ2UoNCk7XG4gKiAvLyA9PiBbMCwgMSwgMiwgM11cbiAqXG4gKiBfLnJhbmdlKC00KTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNF1cbiAqXG4gKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAqIC8vID0+IFswLCA1LCAxMCwgMTVdXG4gKlxuICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA0LCAwKTtcbiAqIC8vID0+IFsxLCAxLCAxXVxuICpcbiAqIF8ucmFuZ2UoMCk7XG4gKiAvLyA9PiBbXVxuICovXG52YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbmdlO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGJhc2VTb3J0QnkgPSByZXF1aXJlKCcuL19iYXNlU29ydEJ5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY29tcGFyZU11bHRpcGxlID0gcmVxdWlyZSgnLi9fY29tcGFyZU11bHRpcGxlJyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGJhc2VJdGVyYXRlZSkpO1xuXG4gIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICB9KTtcblxuICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VPcmRlckJ5O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlT3JkZXJCeSA9IHJlcXVpcmUoJy4vX2Jhc2VPcmRlckJ5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gKiBdO1xuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICovXG52YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtdO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgfVxuICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydEJ5O1xuIiwidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iLCIvKipcbiAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVppcE9iamVjdDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZVppcE9iamVjdCA9IHJlcXVpcmUoJy4vX2Jhc2VaaXBPYmplY3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB6aXBPYmplY3Q7XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG4vKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmVEZWVwOiByZXF1aXJlKFwibG9kYXNoL2Nsb25lRGVlcFwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZGVmYXVsdHM6IHJlcXVpcmUoXCJsb2Rhc2gvZGVmYXVsdHNcIiksXG4gICAgICBlYWNoOiByZXF1aXJlKFwibG9kYXNoL2VhY2hcIiksXG4gICAgICBmaWx0ZXI6IHJlcXVpcmUoXCJsb2Rhc2gvZmlsdGVyXCIpLFxuICAgICAgZmluZDogcmVxdWlyZShcImxvZGFzaC9maW5kXCIpLFxuICAgICAgZmxhdHRlbjogcmVxdWlyZShcImxvZGFzaC9mbGF0dGVuXCIpLFxuICAgICAgZm9yRWFjaDogcmVxdWlyZShcImxvZGFzaC9mb3JFYWNoXCIpLFxuICAgICAgZm9ySW46IHJlcXVpcmUoXCJsb2Rhc2gvZm9ySW5cIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAgbGFzdDogcmVxdWlyZShcImxvZGFzaC9sYXN0XCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIG1hcFZhbHVlczogcmVxdWlyZShcImxvZGFzaC9tYXBWYWx1ZXNcIiksXG4gICAgICBtYXg6IHJlcXVpcmUoXCJsb2Rhc2gvbWF4XCIpLFxuICAgICAgbWVyZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvbWVyZ2VcIiksXG4gICAgICBtaW46IHJlcXVpcmUoXCJsb2Rhc2gvbWluXCIpLFxuICAgICAgbWluQnk6IHJlcXVpcmUoXCJsb2Rhc2gvbWluQnlcIiksXG4gICAgICBub3c6IHJlcXVpcmUoXCJsb2Rhc2gvbm93XCIpLFxuICAgICAgcGljazogcmVxdWlyZShcImxvZGFzaC9waWNrXCIpLFxuICAgICAgcmFuZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmFuZ2VcIiksXG4gICAgICByZWR1Y2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmVkdWNlXCIpLFxuICAgICAgc29ydEJ5OiByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKSxcbiAgICAgIHVuaXF1ZUlkOiByZXF1aXJlKFwibG9kYXNoL3VuaXF1ZUlkXCIpLFxuICAgICAgdmFsdWVzOiByZXF1aXJlKFwibG9kYXNoL3ZhbHVlc1wiKSxcbiAgICAgIHppcE9iamVjdDogcmVxdWlyZShcImxvZGFzaC96aXBPYmplY3RcIiksXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCIvKlxuICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQ29ybWVuLCBldCBhbC4sXG4gKiBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0O1xuXG5mdW5jdGlvbiBMaXN0KCkge1xuICB2YXIgc2VudGluZWwgPSB7fTtcbiAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICB0aGlzLl9zZW50aW5lbCA9IHNlbnRpbmVsO1xufVxuXG5MaXN0LnByb3RvdHlwZS5kZXF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgZW50cnkgPSBzZW50aW5lbC5fcHJldjtcbiAgaWYgKGVudHJ5ICE9PSBzZW50aW5lbCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5MaXN0LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24oZW50cnkpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIGlmIChlbnRyeS5fcHJldiAmJiBlbnRyeS5fbmV4dCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gIH1cbiAgZW50cnkuX25leHQgPSBzZW50aW5lbC5fbmV4dDtcbiAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgc2VudGluZWwuX25leHQgPSBlbnRyeTtcbiAgZW50cnkuX3ByZXYgPSBzZW50aW5lbDtcbn07XG5cbkxpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJzID0gW107XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICB3aGlsZSAoY3VyciAhPT0gc2VudGluZWwpIHtcbiAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBzdHJzLmpvaW4oXCIsIFwiKSArIFwiXVwiO1xufTtcblxuZnVuY3Rpb24gdW5saW5rKGVudHJ5KSB7XG4gIGVudHJ5Ll9wcmV2Ll9uZXh0ID0gZW50cnkuX25leHQ7XG4gIGVudHJ5Ll9uZXh0Ll9wcmV2ID0gZW50cnkuX3ByZXY7XG4gIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgZGVsZXRlIGVudHJ5Ll9wcmV2O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLCB2KSB7XG4gIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgTGlzdCA9IHJlcXVpcmUoXCIuL2RhdGEvbGlzdFwiKTtcblxuLypcbiAqIEEgZ3JlZWR5IGhldXJpc3RpYyBmb3IgZmluZGluZyBhIGZlZWRiYWNrIGFyYyBzZXQgZm9yIGEgZ3JhcGguIEEgZmVlZGJhY2tcbiAqIGFyYyBzZXQgaXMgYSBzZXQgb2YgZWRnZXMgdGhhdCBjYW4gYmUgcmVtb3ZlZCB0byBtYWtlIGEgZ3JhcGggYWN5Y2xpYy5cbiAqIFRoZSBhbGdvcml0aG0gY29tZXMgZnJvbTogUC4gRWFkZXMsIFguIExpbiwgYW5kIFcuIEYuIFNteXRoLCBcIkEgZmFzdCBhbmRcbiAqIGVmZmVjdGl2ZSBoZXVyaXN0aWMgZm9yIHRoZSBmZWVkYmFjayBhcmMgc2V0IHByb2JsZW0uXCIgVGhpcyBpbXBsZW1lbnRhdGlvblxuICogYWRqdXN0cyB0aGF0IGZyb20gdGhlIHBhcGVyIHRvIGFsbG93IGZvciB3ZWlnaHRlZCBlZGdlcy5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBncmVlZHlGQVM7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GTiA9IF8uY29uc3RhbnQoMSk7XG5cbmZ1bmN0aW9uIGdyZWVkeUZBUyhnLCB3ZWlnaHRGbikge1xuICBpZiAoZy5ub2RlQ291bnQoKSA8PSAxKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBzdGF0ZSA9IGJ1aWxkU3RhdGUoZywgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRk4pO1xuICB2YXIgcmVzdWx0cyA9IGRvR3JlZWR5RkFTKHN0YXRlLmdyYXBoLCBzdGF0ZS5idWNrZXRzLCBzdGF0ZS56ZXJvSWR4KTtcblxuICAvLyBFeHBhbmQgbXVsdGktZWRnZXNcbiAgcmV0dXJuIF8uZmxhdHRlbihfLm1hcChyZXN1bHRzLCBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGcub3V0RWRnZXMoZS52LCBlLncpO1xuICB9KSwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGRvR3JlZWR5RkFTKGcsIGJ1Y2tldHMsIHplcm9JZHgpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHNvdXJjZXMgPSBidWNrZXRzW2J1Y2tldHMubGVuZ3RoIC0gMV07XG4gIHZhciBzaW5rcyA9IGJ1Y2tldHNbMF07XG5cbiAgdmFyIGVudHJ5O1xuICB3aGlsZSAoZy5ub2RlQ291bnQoKSkge1xuICAgIHdoaWxlICgoZW50cnkgPSBzaW5rcy5kZXF1ZXVlKCkpKSAgIHsgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7IH1cbiAgICB3aGlsZSAoKGVudHJ5ID0gc291cmNlcy5kZXF1ZXVlKCkpKSB7IHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpOyB9XG4gICAgaWYgKGcubm9kZUNvdW50KCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSBidWNrZXRzLmxlbmd0aCAtIDI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgZW50cnkgPSBidWNrZXRzW2ldLmRlcXVldWUoKTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIHRydWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5LCBjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gIHZhciByZXN1bHRzID0gY29sbGVjdFByZWRlY2Vzc29ycyA/IFtdIDogdW5kZWZpbmVkO1xuXG4gIF8uZm9yRWFjaChnLmluRWRnZXMoZW50cnkudiksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB1RW50cnkgPSBnLm5vZGUoZWRnZS52KTtcblxuICAgIGlmIChjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gICAgICByZXN1bHRzLnB1c2goeyB2OiBlZGdlLnYsIHc6IGVkZ2UudyB9KTtcbiAgICB9XG5cbiAgICB1RW50cnkub3V0IC09IHdlaWdodDtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgdUVudHJ5KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcub3V0RWRnZXMoZW50cnkudiksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB3ID0gZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSBnLm5vZGUodyk7XG4gICAgd0VudHJ5W1wiaW5cIl0gLT0gd2VpZ2h0O1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB3RW50cnkpO1xuICB9KTtcblxuICBnLnJlbW92ZU5vZGUoZW50cnkudik7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkU3RhdGUoZywgd2VpZ2h0Rm4pIHtcbiAgdmFyIGZhc0dyYXBoID0gbmV3IEdyYXBoKCk7XG4gIHZhciBtYXhJbiA9IDA7XG4gIHZhciBtYXhPdXQgPSAwO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBmYXNHcmFwaC5zZXROb2RlKHYsIHsgdjogdiwgXCJpblwiOiAwLCBvdXQ6IDAgfSk7XG4gIH0pO1xuXG4gIC8vIEFnZ3JlZ2F0ZSB3ZWlnaHRzIG9uIG5vZGVzLCBidXQgYWxzbyBzdW0gdGhlIHdlaWdodHMgYWNyb3NzIG11bHRpLWVkZ2VzXG4gIC8vIGludG8gYSBzaW5nbGUgZWRnZSBmb3IgdGhlIGZhc0dyYXBoLlxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHByZXZXZWlnaHQgPSBmYXNHcmFwaC5lZGdlKGUudiwgZS53KSB8fCAwO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlKTtcbiAgICB2YXIgZWRnZVdlaWdodCA9IHByZXZXZWlnaHQgKyB3ZWlnaHQ7XG4gICAgZmFzR3JhcGguc2V0RWRnZShlLnYsIGUudywgZWRnZVdlaWdodCk7XG4gICAgbWF4T3V0ID0gTWF0aC5tYXgobWF4T3V0LCBmYXNHcmFwaC5ub2RlKGUudikub3V0ICs9IHdlaWdodCk7XG4gICAgbWF4SW4gID0gTWF0aC5tYXgobWF4SW4sICBmYXNHcmFwaC5ub2RlKGUudylbXCJpblwiXSAgKz0gd2VpZ2h0KTtcbiAgfSk7XG5cbiAgdmFyIGJ1Y2tldHMgPSBfLnJhbmdlKG1heE91dCArIG1heEluICsgMykubWFwKGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IExpc3QoKTsgfSk7XG4gIHZhciB6ZXJvSWR4ID0gbWF4SW4gKyAxO1xuXG4gIF8uZm9yRWFjaChmYXNHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGZhc0dyYXBoLm5vZGUodikpO1xuICB9KTtcblxuICByZXR1cm4geyBncmFwaDogZmFzR3JhcGgsIGJ1Y2tldHM6IGJ1Y2tldHMsIHplcm9JZHg6IHplcm9JZHggfTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KSB7XG4gIGlmICghZW50cnkub3V0KSB7XG4gICAgYnVja2V0c1swXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIGlmICghZW50cnlbXCJpblwiXSkge1xuICAgIGJ1Y2tldHNbYnVja2V0cy5sZW5ndGggLSAxXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIHtcbiAgICBidWNrZXRzW2VudHJ5Lm91dCAtIGVudHJ5W1wiaW5cIl0gKyB6ZXJvSWR4XS5lbnF1ZXVlKGVudHJ5KTtcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIGdyZWVkeUZBUyA9IHJlcXVpcmUoXCIuL2dyZWVkeS1mYXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgdW5kbzogdW5kb1xufTtcblxuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIGZhcyA9IChnLmdyYXBoKCkuYWN5Y2xpY2VyID09PSBcImdyZWVkeVwiXG4gICAgPyBncmVlZHlGQVMoZywgd2VpZ2h0Rm4oZykpXG4gICAgOiBkZnNGQVMoZykpO1xuICBfLmZvckVhY2goZmFzLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICBsYWJlbC5mb3J3YXJkTmFtZSA9IGUubmFtZTtcbiAgICBsYWJlbC5yZXZlcnNlZCA9IHRydWU7XG4gICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgXy51bmlxdWVJZChcInJldlwiKSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHdlaWdodEZuKGcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZnNGQVMoZykge1xuICB2YXIgZmFzID0gW107XG4gIHZhciBzdGFjayA9IHt9O1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIHN0YWNrW3ZdID0gdHJ1ZTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKF8uaGFzKHN0YWNrLCBlLncpKSB7XG4gICAgICAgIGZhcy5wdXNoKGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGZzKGUudyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVsZXRlIHN0YWNrW3ZdO1xuICB9XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIGZhcztcbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGxhYmVsLnJldmVyc2VkKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG5cbiAgICAgIHZhciBmb3J3YXJkTmFtZSA9IGxhYmVsLmZvcndhcmROYW1lO1xuICAgICAgZGVsZXRlIGxhYmVsLnJldmVyc2VkO1xuICAgICAgZGVsZXRlIGxhYmVsLmZvcndhcmROYW1lO1xuICAgICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgZm9yd2FyZE5hbWUpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIvKiBlc2xpbnQgXCJuby1jb25zb2xlXCI6IG9mZiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkZER1bW15Tm9kZTogYWRkRHVtbXlOb2RlLFxuICBzaW1wbGlmeTogc2ltcGxpZnksXG4gIGFzTm9uQ29tcG91bmRHcmFwaDogYXNOb25Db21wb3VuZEdyYXBoLFxuICBzdWNjZXNzb3JXZWlnaHRzOiBzdWNjZXNzb3JXZWlnaHRzLFxuICBwcmVkZWNlc3NvcldlaWdodHM6IHByZWRlY2Vzc29yV2VpZ2h0cyxcbiAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgYnVpbGRMYXllck1hdHJpeDogYnVpbGRMYXllck1hdHJpeCxcbiAgbm9ybWFsaXplUmFua3M6IG5vcm1hbGl6ZVJhbmtzLFxuICByZW1vdmVFbXB0eVJhbmtzOiByZW1vdmVFbXB0eVJhbmtzLFxuICBhZGRCb3JkZXJOb2RlOiBhZGRCb3JkZXJOb2RlLFxuICBtYXhSYW5rOiBtYXhSYW5rLFxuICBwYXJ0aXRpb246IHBhcnRpdGlvbixcbiAgdGltZTogdGltZSxcbiAgbm90aW1lOiBub3RpbWVcbn07XG5cbi8qXG4gKiBBZGRzIGEgZHVtbXkgbm9kZSB0byB0aGUgZ3JhcGggYW5kIHJldHVybiB2LlxuICovXG5mdW5jdGlvbiBhZGREdW1teU5vZGUoZywgdHlwZSwgYXR0cnMsIG5hbWUpIHtcbiAgdmFyIHY7XG4gIGRvIHtcbiAgICB2ID0gXy51bmlxdWVJZChuYW1lKTtcbiAgfSB3aGlsZSAoZy5oYXNOb2RlKHYpKTtcblxuICBhdHRycy5kdW1teSA9IHR5cGU7XG4gIGcuc2V0Tm9kZSh2LCBhdHRycyk7XG4gIHJldHVybiB2O1xufVxuXG4vKlxuICogUmV0dXJucyBhIG5ldyBncmFwaCB3aXRoIG9ubHkgc2ltcGxlIGVkZ2VzLiBIYW5kbGVzIGFnZ3JlZ2F0aW9uIG9mIGRhdGFcbiAqIGFzc29jaWF0ZWQgd2l0aCBtdWx0aS1lZGdlcy5cbiAqL1xuZnVuY3Rpb24gc2ltcGxpZnkoZykge1xuICB2YXIgc2ltcGxpZmllZCA9IG5ldyBHcmFwaCgpLnNldEdyYXBoKGcuZ3JhcGgoKSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgc2ltcGxpZmllZC5zZXROb2RlKHYsIGcubm9kZSh2KSk7IH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHNpbXBsZUxhYmVsID0gc2ltcGxpZmllZC5lZGdlKGUudiwgZS53KSB8fCB7IHdlaWdodDogMCwgbWlubGVuOiAxIH07XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIHNpbXBsaWZpZWQuc2V0RWRnZShlLnYsIGUudywge1xuICAgICAgd2VpZ2h0OiBzaW1wbGVMYWJlbC53ZWlnaHQgKyBsYWJlbC53ZWlnaHQsXG4gICAgICBtaW5sZW46IE1hdGgubWF4KHNpbXBsZUxhYmVsLm1pbmxlbiwgbGFiZWwubWlubGVuKVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIGFzTm9uQ29tcG91bmRHcmFwaChnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKHsgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSB9KS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgc2ltcGxpZmllZC5zZXROb2RlKHYsIGcubm9kZSh2KSk7XG4gICAgfVxuICB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHNpbXBsaWZpZWQuc2V0RWRnZShlLCBnLmVkZ2UoZSkpO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3NvcldlaWdodHMoZykge1xuICB2YXIgd2VpZ2h0TWFwID0gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHN1Y3MgPSB7fTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgc3Vjc1tlLnddID0gKHN1Y3NbZS53XSB8fCAwKSArIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1Y3M7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG5mdW5jdGlvbiBwcmVkZWNlc3NvcldlaWdodHMoZykge1xuICB2YXIgd2VpZ2h0TWFwID0gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHByZWRzID0ge307XG4gICAgXy5mb3JFYWNoKGcuaW5FZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcHJlZHNbZS52XSA9IChwcmVkc1tlLnZdIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJlZHM7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG4vKlxuICogRmluZHMgd2hlcmUgYSBsaW5lIHN0YXJ0aW5nIGF0IHBvaW50ICh7eCwgeX0pIHdvdWxkIGludGVyc2VjdCBhIHJlY3RhbmdsZVxuICogKHt4LCB5LCB3aWR0aCwgaGVpZ2h0fSkgaWYgaXQgd2VyZSBwb2ludGluZyBhdCB0aGUgcmVjdGFuZ2xlJ3MgY2VudGVyLlxuICovXG5mdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHJlY3QsIHBvaW50KSB7XG4gIHZhciB4ID0gcmVjdC54O1xuICB2YXIgeSA9IHJlY3QueTtcblxuICAvLyBSZWN0YW5nbGUgaW50ZXJzZWN0aW9uIGFsZ29yaXRobSBmcm9tOlxuICAvLyBodHRwOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTA4MTEzL2ZpbmQtZWRnZS1iZXR3ZWVuLXR3by1ib3hlc1xuICB2YXIgZHggPSBwb2ludC54IC0geDtcbiAgdmFyIGR5ID0gcG9pbnQueSAtIHk7XG4gIHZhciB3ID0gcmVjdC53aWR0aCAvIDI7XG4gIHZhciBoID0gcmVjdC5oZWlnaHQgLyAyO1xuXG4gIGlmICghZHggJiYgIWR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IHBvc3NpYmxlIHRvIGZpbmQgaW50ZXJzZWN0aW9uIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlXCIpO1xuICB9XG5cbiAgdmFyIHN4LCBzeTtcbiAgaWYgKE1hdGguYWJzKGR5KSAqIHcgPiBNYXRoLmFicyhkeCkgKiBoKSB7XG4gICAgLy8gSW50ZXJzZWN0aW9uIGlzIHRvcCBvciBib3R0b20gb2YgcmVjdC5cbiAgICBpZiAoZHkgPCAwKSB7XG4gICAgICBoID0gLWg7XG4gICAgfVxuICAgIHN4ID0gaCAqIGR4IC8gZHk7XG4gICAgc3kgPSBoO1xuICB9IGVsc2Uge1xuICAgIC8vIEludGVyc2VjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IG9mIHJlY3QuXG4gICAgaWYgKGR4IDwgMCkge1xuICAgICAgdyA9IC13O1xuICAgIH1cbiAgICBzeCA9IHc7XG4gICAgc3kgPSB3ICogZHkgLyBkeDtcbiAgfVxuXG4gIHJldHVybiB7IHg6IHggKyBzeCwgeTogeSArIHN5IH07XG59XG5cbi8qXG4gKiBHaXZlbiBhIERBRyB3aXRoIGVhY2ggbm9kZSBhc3NpZ25lZCBcInJhbmtcIiBhbmQgXCJvcmRlclwiIHByb3BlcnRpZXMsIHRoaXNcbiAqIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZSBhIG1hdHJpeCB3aXRoIHRoZSBpZHMgb2YgZWFjaCBub2RlLlxuICovXG5mdW5jdGlvbiBidWlsZExheWVyTWF0cml4KGcpIHtcbiAgdmFyIGxheWVyaW5nID0gXy5tYXAoXy5yYW5nZShtYXhSYW5rKGcpICsgMSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0pO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIHJhbmsgPSBub2RlLnJhbms7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJhbmspKSB7XG4gICAgICBsYXllcmluZ1tyYW5rXVtub2RlLm9yZGVyXSA9IHY7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxheWVyaW5nO1xufVxuXG4vKlxuICogQWRqdXN0cyB0aGUgcmFua3MgZm9yIGFsbCBub2RlcyBpbiB0aGUgZ3JhcGggc3VjaCB0aGF0IGFsbCBub2RlcyB2IGhhdmVcbiAqIHJhbmsodikgPj0gMCBhbmQgYXQgbGVhc3Qgb25lIG5vZGUgdyBoYXMgcmFuayh3KSA9IDAuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJhbmtzKGcpIHtcbiAgdmFyIG1pbiA9IF8ubWluKF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChfLmhhcyhub2RlLCBcInJhbmtcIikpIHtcbiAgICAgIG5vZGUucmFuayAtPSBtaW47XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRW1wdHlSYW5rcyhnKSB7XG4gIC8vIFJhbmtzIG1heSBub3Qgc3RhcnQgYXQgMCwgc28gd2UgbmVlZCB0byBvZmZzZXQgdGhlbVxuICB2YXIgb2Zmc2V0ID0gXy5taW4oXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuXG4gIHZhciBsYXllcnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciByYW5rID0gZy5ub2RlKHYpLnJhbmsgLSBvZmZzZXQ7XG4gICAgaWYgKCFsYXllcnNbcmFua10pIHtcbiAgICAgIGxheWVyc1tyYW5rXSA9IFtdO1xuICAgIH1cbiAgICBsYXllcnNbcmFua10ucHVzaCh2KTtcbiAgfSk7XG5cbiAgdmFyIGRlbHRhID0gMDtcbiAgdmFyIG5vZGVSYW5rRmFjdG9yID0gZy5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO1xuICBfLmZvckVhY2gobGF5ZXJzLCBmdW5jdGlvbih2cywgaSkge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKHZzKSAmJiBpICUgbm9kZVJhbmtGYWN0b3IgIT09IDApIHtcbiAgICAgIC0tZGVsdGE7XG4gICAgfSBlbHNlIGlmIChkZWx0YSkge1xuICAgICAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7IGcubm9kZSh2KS5yYW5rICs9IGRlbHRhOyB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRCb3JkZXJOb2RlKGcsIHByZWZpeCwgcmFuaywgb3JkZXIpIHtcbiAgdmFyIG5vZGUgPSB7XG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIHtcbiAgICBub2RlLnJhbmsgPSByYW5rO1xuICAgIG5vZGUub3JkZXIgPSBvcmRlcjtcbiAgfVxuICByZXR1cm4gYWRkRHVtbXlOb2RlKGcsIFwiYm9yZGVyXCIsIG5vZGUsIHByZWZpeCk7XG59XG5cbmZ1bmN0aW9uIG1heFJhbmsoZykge1xuICByZXR1cm4gXy5tYXgoXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmFuaykpIHtcbiAgICAgIHJldHVybiByYW5rO1xuICAgIH1cbiAgfSkpO1xufVxuXG4vKlxuICogUGFydGl0aW9uIGEgY29sbGVjdGlvbiBpbnRvIHR3byBncm91cHM6IGBsaHNgIGFuZCBgcmhzYC4gSWYgdGhlIHN1cHBsaWVkXG4gKiBmdW5jdGlvbiByZXR1cm5zIHRydWUgZm9yIGFuIGVudHJ5IGl0IGdvZXMgaW50byBgbGhzYC4gT3RoZXJ3aXNlIGl0IGdvZXNcbiAqIGludG8gYHJocy5cbiAqL1xuZnVuY3Rpb24gcGFydGl0aW9uKGNvbGxlY3Rpb24sIGZuKSB7XG4gIHZhciByZXN1bHQgPSB7IGxoczogW10sIHJoczogW10gfTtcbiAgXy5mb3JFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgcmVzdWx0Lmxocy5wdXNoKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnJocy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKlxuICogUmV0dXJucyBhIG5ldyBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmbmAgd2l0aCBhIHRpbWVyLiBUaGUgd3JhcHBlciBsb2dzIHRoZVxuICogdGltZSBpdCB0YWtlcyB0byBleGVjdXRlIHRoZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gdGltZShuYW1lLCBmbikge1xuICB2YXIgc3RhcnQgPSBfLm5vdygpO1xuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIGNvbnNvbGUubG9nKG5hbWUgKyBcIiB0aW1lOiBcIiArIChfLm5vdygpIC0gc3RhcnQpICsgXCJtc1wiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3RpbWUobmFtZSwgZm4pIHtcbiAgcmV0dXJuIGZuKCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgdW5kbzogdW5kb1xufTtcblxuLypcbiAqIEJyZWFrcyBhbnkgbG9uZyBlZGdlcyBpbiB0aGUgZ3JhcGggaW50byBzaG9ydCBzZWdtZW50cyB0aGF0IHNwYW4gMSBsYXllclxuICogZWFjaC4gVGhpcyBvcGVyYXRpb24gaXMgdW5kb2FibGUgd2l0aCB0aGUgZGVub3JtYWxpemUgZnVuY3Rpb24uXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIGlzIGEgREFHLlxuICogICAgMi4gRWFjaCBub2RlIGluIHRoZSBncmFwaCBoYXMgYSBcInJhbmtcIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbjpcbiAqXG4gKiAgICAxLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIGhhdmUgYSBsZW5ndGggb2YgMS5cbiAqICAgIDIuIER1bW15IG5vZGVzIGFyZSBhZGRlZCB3aGVyZSBlZGdlcyBoYXZlIGJlZW4gc3BsaXQgaW50byBzZWdtZW50cy5cbiAqICAgIDMuIFRoZSBncmFwaCBpcyBhdWdtZW50ZWQgd2l0aCBhIFwiZHVtbXlDaGFpbnNcIiBhdHRyaWJ1dGUgd2hpY2ggY29udGFpbnNcbiAqICAgICAgIHRoZSBmaXJzdCBkdW1teSBpbiBlYWNoIGNoYWluIG9mIGR1bW15IG5vZGVzIHByb2R1Y2VkLlxuICovXG5mdW5jdGlvbiBydW4oZykge1xuICBnLmdyYXBoKCkuZHVtbXlDaGFpbnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZWRnZSkgeyBub3JtYWxpemVFZGdlKGcsIGVkZ2UpOyB9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRWRnZShnLCBlKSB7XG4gIHZhciB2ID0gZS52O1xuICB2YXIgdlJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgdmFyIHcgPSBlLnc7XG4gIHZhciB3UmFuayA9IGcubm9kZSh3KS5yYW5rO1xuICB2YXIgbmFtZSA9IGUubmFtZTtcbiAgdmFyIGVkZ2VMYWJlbCA9IGcuZWRnZShlKTtcbiAgdmFyIGxhYmVsUmFuayA9IGVkZ2VMYWJlbC5sYWJlbFJhbms7XG5cbiAgaWYgKHdSYW5rID09PSB2UmFuayArIDEpIHJldHVybjtcblxuICBnLnJlbW92ZUVkZ2UoZSk7XG5cbiAgdmFyIGR1bW15LCBhdHRycywgaTtcbiAgZm9yIChpID0gMCwgKyt2UmFuazsgdlJhbmsgPCB3UmFuazsgKytpLCArK3ZSYW5rKSB7XG4gICAgZWRnZUxhYmVsLnBvaW50cyA9IFtdO1xuICAgIGF0dHJzID0ge1xuICAgICAgd2lkdGg6IDAsIGhlaWdodDogMCxcbiAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLCBlZGdlT2JqOiBlLFxuICAgICAgcmFuazogdlJhbmtcbiAgICB9O1xuICAgIGR1bW15ID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlXCIsIGF0dHJzLCBcIl9kXCIpO1xuICAgIGlmICh2UmFuayA9PT0gbGFiZWxSYW5rKSB7XG4gICAgICBhdHRycy53aWR0aCA9IGVkZ2VMYWJlbC53aWR0aDtcbiAgICAgIGF0dHJzLmhlaWdodCA9IGVkZ2VMYWJlbC5oZWlnaHQ7XG4gICAgICBhdHRycy5kdW1teSA9IFwiZWRnZS1sYWJlbFwiO1xuICAgICAgYXR0cnMubGFiZWxwb3MgPSBlZGdlTGFiZWwubGFiZWxwb3M7XG4gICAgfVxuICAgIGcuc2V0RWRnZSh2LCBkdW1teSwgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGcuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKGR1bW15KTtcbiAgICB9XG4gICAgdiA9IGR1bW15O1xuICB9XG5cbiAgZy5zZXRFZGdlKHYsIHcsIHsgd2VpZ2h0OiBlZGdlTGFiZWwud2VpZ2h0IH0sIG5hbWUpO1xufVxuXG5mdW5jdGlvbiB1bmRvKGcpIHtcbiAgXy5mb3JFYWNoKGcuZ3JhcGgoKS5kdW1teUNoYWlucywgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciBvcmlnTGFiZWwgPSBub2RlLmVkZ2VMYWJlbDtcbiAgICB2YXIgdztcbiAgICBnLnNldEVkZ2Uobm9kZS5lZGdlT2JqLCBvcmlnTGFiZWwpO1xuICAgIHdoaWxlIChub2RlLmR1bW15KSB7XG4gICAgICB3ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgICAgb3JpZ0xhYmVsLnBvaW50cy5wdXNoKHsgeDogbm9kZS54LCB5OiBub2RlLnkgfSk7XG4gICAgICBpZiAobm9kZS5kdW1teSA9PT0gXCJlZGdlLWxhYmVsXCIpIHtcbiAgICAgICAgb3JpZ0xhYmVsLnggPSBub2RlLng7XG4gICAgICAgIG9yaWdMYWJlbC55ID0gbm9kZS55O1xuICAgICAgICBvcmlnTGFiZWwud2lkdGggPSBub2RlLndpZHRoO1xuICAgICAgICBvcmlnTGFiZWwuaGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgICB9XG4gICAgICB2ID0gdztcbiAgICAgIG5vZGUgPSBnLm5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBsb25nZXN0UGF0aDogbG9uZ2VzdFBhdGgsXG4gIHNsYWNrOiBzbGFja1xufTtcblxuLypcbiAqIEluaXRpYWxpemVzIHJhbmtzIGZvciB0aGUgaW5wdXQgZ3JhcGggdXNpbmcgdGhlIGxvbmdlc3QgcGF0aCBhbGdvcml0aG0uIFRoaXNcbiAqIGFsZ29yaXRobSBzY2FsZXMgd2VsbCBhbmQgaXMgZmFzdCBpbiBwcmFjdGljZSwgaXQgeWllbGRzIHJhdGhlciBwb29yXG4gKiBzb2x1dGlvbnMuIE5vZGVzIGFyZSBwdXNoZWQgdG8gdGhlIGxvd2VzdCBsYXllciBwb3NzaWJsZSwgbGVhdmluZyB0aGUgYm90dG9tXG4gKiByYW5rcyB3aWRlIGFuZCBsZWF2aW5nIGVkZ2VzIGxvbmdlciB0aGFuIG5lY2Vzc2FyeS4gSG93ZXZlciwgZHVlIHRvIGl0c1xuICogc3BlZWQsIHRoaXMgYWxnb3JpdGhtIGlzIGdvb2QgZm9yIGdldHRpbmcgYW4gaW5pdGlhbCByYW5raW5nIHRoYXQgY2FuIGJlIGZlZFxuICogaW50byBvdGhlciBhbGdvcml0aG1zLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGRvZXMgbm90IG5vcm1hbGl6ZSBsYXllcnMgYmVjYXVzZSBpdCB3aWxsIGJlIHVzZWQgYnkgb3RoZXJcbiAqIGFsZ29yaXRobXMgaW4gbW9zdCBjYXNlcy4gSWYgdXNpbmcgdGhpcyBhbGdvcml0aG0gZGlyZWN0bHksIGJlIHN1cmUgdG9cbiAqIHJ1biBub3JtYWxpemUgYXQgdGhlIGVuZC5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBRy5cbiAqICAgIDIuIElucHV0IGdyYXBoIG5vZGUgbGFiZWxzIGNhbiBiZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIG5vZGUgd2lsbCBiZSBhc3NpZ24gYW4gKHVubm9ybWFsaXplZCkgXCJyYW5rXCIgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGxvbmdlc3RQYXRoKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBsYWJlbCA9IGcubm9kZSh2KTtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybiBsYWJlbC5yYW5rO1xuICAgIH1cbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcblxuICAgIHZhciByYW5rID0gXy5taW4oXy5tYXAoZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGRmcyhlLncpIC0gZy5lZGdlKGUpLm1pbmxlbjtcbiAgICB9KSk7XG5cbiAgICBpZiAocmFuayA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbXSkgZm9yIExvZGFzaCAzXG4gICAgICAgIHJhbmsgPT09IHVuZGVmaW5lZCB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggNFxuICAgICAgICByYW5rID09PSBudWxsKSB7IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbbnVsbF0pXG4gICAgICByYW5rID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGxhYmVsLnJhbmsgPSByYW5rKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLnNvdXJjZXMoKSwgZGZzKTtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFtb3VudCBvZiBzbGFjayBmb3IgdGhlIGdpdmVuIGVkZ2UuIFRoZSBzbGFjayBpcyBkZWZpbmVkIGFzIHRoZVxuICogZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsZW5ndGggb2YgdGhlIGVkZ2UgYW5kIGl0cyBtaW5pbXVtIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2xhY2soZywgZSkge1xuICByZXR1cm4gZy5ub2RlKGUudykucmFuayAtIGcubm9kZShlLnYpLnJhbmsgLSBnLmVkZ2UoZSkubWlubGVuO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBzbGFjayA9IHJlcXVpcmUoXCIuL3V0aWxcIikuc2xhY2s7XG5cbm1vZHVsZS5leHBvcnRzID0gZmVhc2libGVUcmVlO1xuXG4vKlxuICogQ29uc3RydWN0cyBhIHNwYW5uaW5nIHRyZWUgd2l0aCB0aWdodCBlZGdlcyBhbmQgYWRqdXN0ZWQgdGhlIGlucHV0IG5vZGUnc1xuICogcmFua3MgdG8gYWNoaWV2ZSB0aGlzLiBBIHRpZ2h0IGVkZ2UgaXMgb25lIHRoYXQgaXMgaGFzIGEgbGVuZ3RoIHRoYXQgbWF0Y2hlc1xuICogaXRzIFwibWlubGVuXCIgYXR0cmlidXRlLlxuICpcbiAqIFRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIHRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBXG4gKiBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIERBRy5cbiAqICAgIDIuIEdyYXBoIG11c3QgYmUgY29ubmVjdGVkLlxuICogICAgMy4gR3JhcGggbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBub2RlLlxuICogICAgNS4gR3JhcGggbm9kZXMgbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBhc3NpZ25lZCBhIFwicmFua1wiIHByb3BlcnR5IHRoYXRcbiAqICAgICAgIHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiIHByb3BlcnR5IG9mIGluY2lkZW50IGVkZ2VzLlxuICogICAgNi4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIGEgXCJtaW5sZW5cIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgLSBHcmFwaCBub2RlcyB3aWxsIGhhdmUgdGhlaXIgcmFuayBhZGp1c3RlZCB0byBlbnN1cmUgdGhhdCBhbGwgZWRnZXMgYXJlXG4gKiAgICAgIHRpZ2h0LlxuICpcbiAqIFJldHVybnMgYSB0cmVlICh1bmRpcmVjdGVkIGdyYXBoKSB0aGF0IGlzIGNvbnN0cnVjdGVkIHVzaW5nIG9ubHkgXCJ0aWdodFwiXG4gKiBlZGdlcy5cbiAqL1xuZnVuY3Rpb24gZmVhc2libGVUcmVlKGcpIHtcbiAgdmFyIHQgPSBuZXcgR3JhcGgoeyBkaXJlY3RlZDogZmFsc2UgfSk7XG5cbiAgLy8gQ2hvb3NlIGFyYml0cmFyeSBub2RlIGZyb20gd2hpY2ggdG8gc3RhcnQgb3VyIHRyZWVcbiAgdmFyIHN0YXJ0ID0gZy5ub2RlcygpWzBdO1xuICB2YXIgc2l6ZSA9IGcubm9kZUNvdW50KCk7XG4gIHQuc2V0Tm9kZShzdGFydCwge30pO1xuXG4gIHZhciBlZGdlLCBkZWx0YTtcbiAgd2hpbGUgKHRpZ2h0VHJlZSh0LCBnKSA8IHNpemUpIHtcbiAgICBlZGdlID0gZmluZE1pblNsYWNrRWRnZSh0LCBnKTtcbiAgICBkZWx0YSA9IHQuaGFzTm9kZShlZGdlLnYpID8gc2xhY2soZywgZWRnZSkgOiAtc2xhY2soZywgZWRnZSk7XG4gICAgc2hpZnRSYW5rcyh0LCBnLCBkZWx0YSk7XG4gIH1cblxuICByZXR1cm4gdDtcbn1cblxuLypcbiAqIEZpbmRzIGEgbWF4aW1hbCB0cmVlIG9mIHRpZ2h0IGVkZ2VzIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlXG4gKiB0cmVlLlxuICovXG5mdW5jdGlvbiB0aWdodFRyZWUodCwgZykge1xuICBmdW5jdGlvbiBkZnModikge1xuICAgIF8uZm9yRWFjaChnLm5vZGVFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIGVkZ2VWID0gZS52LFxuICAgICAgICB3ID0gKHYgPT09IGVkZ2VWKSA/IGUudyA6IGVkZ2VWO1xuICAgICAgaWYgKCF0Lmhhc05vZGUodykgJiYgIXNsYWNrKGcsIGUpKSB7XG4gICAgICAgIHQuc2V0Tm9kZSh3LCB7fSk7XG4gICAgICAgIHQuc2V0RWRnZSh2LCB3LCB7fSk7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF8uZm9yRWFjaCh0Lm5vZGVzKCksIGRmcyk7XG4gIHJldHVybiB0Lm5vZGVDb3VudCgpO1xufVxuXG4vKlxuICogRmluZHMgdGhlIGVkZ2Ugd2l0aCB0aGUgc21hbGxlc3Qgc2xhY2sgdGhhdCBpcyBpbmNpZGVudCBvbiB0cmVlIGFuZCByZXR1cm5zXG4gKiBpdC5cbiAqL1xuZnVuY3Rpb24gZmluZE1pblNsYWNrRWRnZSh0LCBnKSB7XG4gIHJldHVybiBfLm1pbkJ5KGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGlmICh0Lmhhc05vZGUoZS52KSAhPT0gdC5oYXNOb2RlKGUudykpIHtcbiAgICAgIHJldHVybiBzbGFjayhnLCBlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKSB7XG4gIF8uZm9yRWFjaCh0Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBnLm5vZGUodikucmFuayArPSBkZWx0YTtcbiAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGZlYXNpYmxlVHJlZSA9IHJlcXVpcmUoXCIuL2ZlYXNpYmxlLXRyZWVcIik7XG52YXIgc2xhY2sgPSByZXF1aXJlKFwiLi91dGlsXCIpLnNsYWNrO1xudmFyIGluaXRSYW5rID0gcmVxdWlyZShcIi4vdXRpbFwiKS5sb25nZXN0UGF0aDtcbnZhciBwcmVvcmRlciA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5hbGcucHJlb3JkZXI7XG52YXIgcG9zdG9yZGVyID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLmFsZy5wb3N0b3JkZXI7XG52YXIgc2ltcGxpZnkgPSByZXF1aXJlKFwiLi4vdXRpbFwiKS5zaW1wbGlmeTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXR3b3JrU2ltcGxleDtcblxuLy8gRXhwb3NlIHNvbWUgaW50ZXJuYWxzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG5uZXR3b3JrU2ltcGxleC5pbml0TG93TGltVmFsdWVzID0gaW5pdExvd0xpbVZhbHVlcztcbm5ldHdvcmtTaW1wbGV4LmluaXRDdXRWYWx1ZXMgPSBpbml0Q3V0VmFsdWVzO1xubmV0d29ya1NpbXBsZXguY2FsY0N1dFZhbHVlID0gY2FsY0N1dFZhbHVlO1xubmV0d29ya1NpbXBsZXgubGVhdmVFZGdlID0gbGVhdmVFZGdlO1xubmV0d29ya1NpbXBsZXguZW50ZXJFZGdlID0gZW50ZXJFZGdlO1xubmV0d29ya1NpbXBsZXguZXhjaGFuZ2VFZGdlcyA9IGV4Y2hhbmdlRWRnZXM7XG5cbi8qXG4gKiBUaGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobSBhc3NpZ25zIHJhbmtzIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCBpdGVyYXRpdmVseSBpbXByb3ZlcyB0aGUgcmFua2luZyB0byByZWR1Y2UgdGhlIGxlbmd0aCBvZiBlZGdlcy5cbiAqXG4gKiBQcmVjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIFRoZSBpbnB1dCBncmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCBtdXN0IGhhdmUgYW4gb2JqZWN0IHZhbHVlLlxuICogICAgMy4gQWxsIGVkZ2VzIGluIHRoZSBncmFwaCBtdXN0IGhhdmUgXCJtaW5sZW5cIiBhbmQgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVzLlxuICpcbiAqIFBvc3Rjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEFsbCBub2RlcyBpbiB0aGUgZ3JhcGggd2lsbCBoYXZlIGFuIGFzc2lnbmVkIFwicmFua1wiIGF0dHJpYnV0ZSB0aGF0IGhhc1xuICogICAgICAgYmVlbiBvcHRpbWl6ZWQgYnkgdGhlIG5ldHdvcmsgc2ltcGxleCBhbGdvcml0aG0uIFJhbmtzIHN0YXJ0IGF0IDAuXG4gKlxuICpcbiAqIEEgcm91Z2ggc2tldGNoIG9mIHRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czpcbiAqXG4gKiAgICAxLiBBc3NpZ24gaW5pdGlhbCByYW5rcyB0byBlYWNoIG5vZGUuIFdlIHVzZSB0aGUgbG9uZ2VzdCBwYXRoIGFsZ29yaXRobSxcbiAqICAgICAgIHdoaWNoIGFzc2lnbnMgcmFua3MgdG8gdGhlIGxvd2VzdCBwb3NpdGlvbiBwb3NzaWJsZS4gSW4gZ2VuZXJhbCB0aGlzXG4gKiAgICAgICBsZWFkcyB0byB2ZXJ5IHdpZGUgYm90dG9tIHJhbmtzIGFuZCB1bm5lY2Vzc2FyaWx5IGxvbmcgZWRnZXMuXG4gKiAgICAyLiBDb25zdHJ1Y3QgYSBmZWFzaWJsZSB0aWdodCB0cmVlLiBBIHRpZ2h0IHRyZWUgaXMgb25lIHN1Y2ggdGhhdCBhbGxcbiAqICAgICAgIGVkZ2VzIGluIHRoZSB0cmVlIGhhdmUgbm8gc2xhY2sgKGRpZmZlcmVuY2UgYmV0d2VlbiBsZW5ndGggb2YgZWRnZVxuICogICAgICAgYW5kIG1pbmxlbiBmb3IgdGhlIGVkZ2UpLiBUaGlzIGJ5IGl0c2VsZiBncmVhdGx5IGltcHJvdmVzIHRoZSBhc3NpZ25lZFxuICogICAgICAgcmFua2luZ3MgYnkgc2hvcnRpbmcgZWRnZXMuXG4gKiAgICAzLiBJdGVyYXRpdmVseSBmaW5kIGVkZ2VzIHRoYXQgaGF2ZSBuZWdhdGl2ZSBjdXQgdmFsdWVzLiBHZW5lcmFsbHkgYVxuICogICAgICAgbmVnYXRpdmUgY3V0IHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBlZGdlIGNvdWxkIGJlIHJlbW92ZWQgYW5kIGEgbmV3XG4gKiAgICAgICB0cmVlIGVkZ2UgY291bGQgYmUgYWRkZWQgdG8gcHJvZHVjZSBhIG1vcmUgY29tcGFjdCBncmFwaC5cbiAqXG4gKiBNdWNoIG9mIHRoZSBhbGdvcml0aG1zIGhlcmUgYXJlIGRlcml2ZWQgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWVcbiAqIGZvciBEcmF3aW5nIERpcmVjdGVkIEdyYXBocy5cIiBUaGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlIHJvdWdobHkgZm9sbG93cyB0aGVcbiAqIHN0cnVjdHVyZSBvZiB0aGUgb3ZlcmFsbCBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG5ldHdvcmtTaW1wbGV4KGcpIHtcbiAgZyA9IHNpbXBsaWZ5KGcpO1xuICBpbml0UmFuayhnKTtcbiAgdmFyIHQgPSBmZWFzaWJsZVRyZWUoZyk7XG4gIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gIGluaXRDdXRWYWx1ZXModCwgZyk7XG5cbiAgdmFyIGUsIGY7XG4gIHdoaWxlICgoZSA9IGxlYXZlRWRnZSh0KSkpIHtcbiAgICBmID0gZW50ZXJFZGdlKHQsIGcsIGUpO1xuICAgIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZik7XG4gIH1cbn1cblxuLypcbiAqIEluaXRpYWxpemVzIGN1dCB2YWx1ZXMgZm9yIGFsbCBlZGdlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaW5pdEN1dFZhbHVlcyh0LCBnKSB7XG4gIHZhciB2cyA9IHBvc3RvcmRlcih0LCB0Lm5vZGVzKCkpO1xuICB2cyA9IHZzLnNsaWNlKDAsIHZzLmxlbmd0aCAtIDEpO1xuICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBhc3NpZ25DdXRWYWx1ZSh0LCBnLCB2KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkN1dFZhbHVlKHQsIGcsIGNoaWxkKSB7XG4gIHZhciBjaGlsZExhYiA9IHQubm9kZShjaGlsZCk7XG4gIHZhciBwYXJlbnQgPSBjaGlsZExhYi5wYXJlbnQ7XG4gIHQuZWRnZShjaGlsZCwgcGFyZW50KS5jdXR2YWx1ZSA9IGNhbGNDdXRWYWx1ZSh0LCBnLCBjaGlsZCk7XG59XG5cbi8qXG4gKiBHaXZlbiB0aGUgdGlnaHQgdHJlZSwgaXRzIGdyYXBoLCBhbmQgYSBjaGlsZCBpbiB0aGUgZ3JhcGggY2FsY3VsYXRlIGFuZFxuICogcmV0dXJuIHRoZSBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhlIGNoaWxkIGFuZCBpdHMgcGFyZW50LlxuICovXG5mdW5jdGlvbiBjYWxjQ3V0VmFsdWUodCwgZywgY2hpbGQpIHtcbiAgdmFyIGNoaWxkTGFiID0gdC5ub2RlKGNoaWxkKTtcbiAgdmFyIHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgLy8gVHJ1ZSBpZiB0aGUgY2hpbGQgaXMgb24gdGhlIHRhaWwgZW5kIG9mIHRoZSBlZGdlIGluIHRoZSBkaXJlY3RlZCBncmFwaFxuICB2YXIgY2hpbGRJc1RhaWwgPSB0cnVlO1xuICAvLyBUaGUgZ3JhcGgncyB2aWV3IG9mIHRoZSB0cmVlIGVkZ2Ugd2UncmUgaW5zcGVjdGluZ1xuICB2YXIgZ3JhcGhFZGdlID0gZy5lZGdlKGNoaWxkLCBwYXJlbnQpO1xuICAvLyBUaGUgYWNjdW11bGF0ZWQgY3V0IHZhbHVlIGZvciB0aGUgZWRnZSBiZXR3ZWVuIHRoaXMgbm9kZSBhbmQgaXRzIHBhcmVudFxuICB2YXIgY3V0VmFsdWUgPSAwO1xuXG4gIGlmICghZ3JhcGhFZGdlKSB7XG4gICAgY2hpbGRJc1RhaWwgPSBmYWxzZTtcbiAgICBncmFwaEVkZ2UgPSBnLmVkZ2UocGFyZW50LCBjaGlsZCk7XG4gIH1cblxuICBjdXRWYWx1ZSA9IGdyYXBoRWRnZS53ZWlnaHQ7XG5cbiAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKGNoaWxkKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBpc091dEVkZ2UgPSBlLnYgPT09IGNoaWxkLFxuICAgICAgb3RoZXIgPSBpc091dEVkZ2UgPyBlLncgOiBlLnY7XG5cbiAgICBpZiAob3RoZXIgIT09IHBhcmVudCkge1xuICAgICAgdmFyIHBvaW50c1RvSGVhZCA9IGlzT3V0RWRnZSA9PT0gY2hpbGRJc1RhaWwsXG4gICAgICAgIG90aGVyV2VpZ2h0ID0gZy5lZGdlKGUpLndlaWdodDtcblxuICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gb3RoZXJXZWlnaHQgOiAtb3RoZXJXZWlnaHQ7XG4gICAgICBpZiAoaXNUcmVlRWRnZSh0LCBjaGlsZCwgb3RoZXIpKSB7XG4gICAgICAgIHZhciBvdGhlckN1dFZhbHVlID0gdC5lZGdlKGNoaWxkLCBvdGhlcikuY3V0dmFsdWU7XG4gICAgICAgIGN1dFZhbHVlICs9IHBvaW50c1RvSGVhZCA/IC1vdGhlckN1dFZhbHVlIDogb3RoZXJDdXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjdXRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gaW5pdExvd0xpbVZhbHVlcyh0cmVlLCByb290KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHJvb3QgPSB0cmVlLm5vZGVzKClbMF07XG4gIH1cbiAgZGZzQXNzaWduTG93TGltKHRyZWUsIHt9LCAxLCByb290KTtcbn1cblxuZnVuY3Rpb24gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHYsIHBhcmVudCkge1xuICB2YXIgbG93ID0gbmV4dExpbTtcbiAgdmFyIGxhYmVsID0gdHJlZS5ub2RlKHYpO1xuXG4gIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICBfLmZvckVhY2godHJlZS5uZWlnaGJvcnModiksIGZ1bmN0aW9uKHcpIHtcbiAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICBuZXh0TGltID0gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHcsIHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGFiZWwubG93ID0gbG93O1xuICBsYWJlbC5saW0gPSBuZXh0TGltKys7XG4gIGlmIChwYXJlbnQpIHtcbiAgICBsYWJlbC5wYXJlbnQgPSBwYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETyBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyB3aGVuIHdlIGluY3JlbWVudGFsbHkgdXBkYXRlIGxvdyBsaW1cbiAgICBkZWxldGUgbGFiZWwucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG5leHRMaW07XG59XG5cbmZ1bmN0aW9uIGxlYXZlRWRnZSh0cmVlKSB7XG4gIHJldHVybiBfLmZpbmQodHJlZS5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIHRyZWUuZWRnZShlKS5jdXR2YWx1ZSA8IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlbnRlckVkZ2UodCwgZywgZWRnZSkge1xuICB2YXIgdiA9IGVkZ2UudjtcbiAgdmFyIHcgPSBlZGdlLnc7XG5cbiAgLy8gRm9yIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gd2UgYXNzdW1lIHRoYXQgdiBpcyB0aGUgdGFpbCBhbmQgdyBpcyB0aGVcbiAgLy8gaGVhZCwgc28gaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIGVkZ2UgaW4gdGhlIGdyYXBoIHdlIHNob3VsZCBmbGlwIGl0IHRvXG4gIC8vIG1hdGNoIHRoZSBjb3JyZWN0IG9yaWVudGF0aW9uLlxuICBpZiAoIWcuaGFzRWRnZSh2LCB3KSkge1xuICAgIHYgPSBlZGdlLnc7XG4gICAgdyA9IGVkZ2UudjtcbiAgfVxuXG4gIHZhciB2TGFiZWwgPSB0Lm5vZGUodik7XG4gIHZhciB3TGFiZWwgPSB0Lm5vZGUodyk7XG4gIHZhciB0YWlsTGFiZWwgPSB2TGFiZWw7XG4gIHZhciBmbGlwID0gZmFsc2U7XG5cbiAgLy8gSWYgdGhlIHJvb3QgaXMgaW4gdGhlIHRhaWwgb2YgdGhlIGVkZ2UgdGhlbiB3ZSBuZWVkIHRvIGZsaXAgdGhlIGxvZ2ljIHRoYXRcbiAgLy8gY2hlY2tzIGZvciB0aGUgaGVhZCBhbmQgdGFpbCBub2RlcyBpbiB0aGUgY2FuZGlkYXRlcyBmdW5jdGlvbiBiZWxvdy5cbiAgaWYgKHZMYWJlbC5saW0gPiB3TGFiZWwubGltKSB7XG4gICAgdGFpbExhYmVsID0gd0xhYmVsO1xuICAgIGZsaXAgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbmRpZGF0ZXMgPSBfLmZpbHRlcihnLmVkZ2VzKCksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICByZXR1cm4gZmxpcCA9PT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLnYpLCB0YWlsTGFiZWwpICYmXG4gICAgICAgICAgIGZsaXAgIT09IGlzRGVzY2VuZGFudCh0LCB0Lm5vZGUoZWRnZS53KSwgdGFpbExhYmVsKTtcbiAgfSk7XG5cbiAgcmV0dXJuIF8ubWluQnkoY2FuZGlkYXRlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gc2xhY2soZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBleGNoYW5nZUVkZ2VzKHQsIGcsIGUsIGYpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB3ID0gZS53O1xuICB0LnJlbW92ZUVkZ2Uodiwgdyk7XG4gIHQuc2V0RWRnZShmLnYsIGYudywge30pO1xuICBpbml0TG93TGltVmFsdWVzKHQpO1xuICBpbml0Q3V0VmFsdWVzKHQsIGcpO1xuICB1cGRhdGVSYW5rcyh0LCBnKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlUmFua3ModCwgZykge1xuICB2YXIgcm9vdCA9IF8uZmluZCh0Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuICFnLm5vZGUodikucGFyZW50OyB9KTtcbiAgdmFyIHZzID0gcHJlb3JkZXIodCwgcm9vdCk7XG4gIHZzID0gdnMuc2xpY2UoMSk7XG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIHZhciBwYXJlbnQgPSB0Lm5vZGUodikucGFyZW50LFxuICAgICAgZWRnZSA9IGcuZWRnZSh2LCBwYXJlbnQpLFxuICAgICAgZmxpcHBlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCFlZGdlKSB7XG4gICAgICBlZGdlID0gZy5lZGdlKHBhcmVudCwgdik7XG4gICAgICBmbGlwcGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGUodikucmFuayA9IGcubm9kZShwYXJlbnQpLnJhbmsgKyAoZmxpcHBlZCA/IGVkZ2UubWlubGVuIDogLWVkZ2UubWlubGVuKTtcbiAgfSk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGVkZ2UgaXMgaW4gdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGlzVHJlZUVkZ2UodHJlZSwgdSwgdikge1xuICByZXR1cm4gdHJlZS5oYXNFZGdlKHUsIHYpO1xufVxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbm9kZSBpcyBkZXNjZW5kYW50IG9mIHRoZSByb290IG5vZGUgcGVyIHRoZVxuICogYXNzaWduZWQgbG93IGFuZCBsaW0gYXR0cmlidXRlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNEZXNjZW5kYW50KHRyZWUsIHZMYWJlbCwgcm9vdExhYmVsKSB7XG4gIHJldHVybiByb290TGFiZWwubG93IDw9IHZMYWJlbC5saW0gJiYgdkxhYmVsLmxpbSA8PSByb290TGFiZWwubGltO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciByYW5rVXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgbG9uZ2VzdFBhdGggPSByYW5rVXRpbC5sb25nZXN0UGF0aDtcbnZhciBmZWFzaWJsZVRyZWUgPSByZXF1aXJlKFwiLi9mZWFzaWJsZS10cmVlXCIpO1xudmFyIG5ldHdvcmtTaW1wbGV4ID0gcmVxdWlyZShcIi4vbmV0d29yay1zaW1wbGV4XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbms7XG5cbi8qXG4gKiBBc3NpZ25zIGEgcmFuayB0byBlYWNoIG5vZGUgaW4gdGhlIGlucHV0IGdyYXBoIHRoYXQgcmVzcGVjdHMgdGhlIFwibWlubGVuXCJcbiAqIGNvbnN0cmFpbnQgc3BlY2lmaWVkIG9uIGVkZ2VzIGJldHdlZW4gbm9kZXMuXG4gKlxuICogVGhpcyBiYXNpYyBzdHJ1Y3R1cmUgaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3JcbiAqIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIGNvbm5lY3RlZCBEQUdcbiAqICAgIDIuIEdyYXBoIG5vZGVzIG11c3QgYmUgb2JqZWN0c1xuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIFwid2VpZ2h0XCIgYW5kIFwibWlubGVuXCIgYXR0cmlidXRlc1xuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYSBcInJhbmtcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uIFJhbmtzIGNhbiBzdGFydCBhdCBhbnkgaW5kZXggKGluY2x1ZGluZyBuZWdhdGl2ZSksIHdlJ2xsXG4gKiAgICAgICBmaXggdGhlbSB1cCBsYXRlci5cbiAqL1xuZnVuY3Rpb24gcmFuayhnKSB7XG4gIGlmICh0eXBlb2YgZy5ncmFwaCgpLnJhbmtlciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZy5ncmFwaCgpLnJhbmtlcihnKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGcuZ3JhcGgoKS5yYW5rZXIpIHtcbiAgICAgIGNhc2UgXCJuZXR3b3JrLXNpbXBsZXhcIjpcbiAgICAgICAgbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRpZ2h0LXRyZWVcIjpcbiAgICAgICAgdGlnaHRUcmVlUmFua2VyKGcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJsb25nZXN0LXBhdGhcIjpcbiAgICAgICAgbG9uZ2VzdFBhdGhSYW5rZXIoZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7XG4gICAgfVxuICB9XG59XG5cbi8vIEEgZmFzdCBhbmQgc2ltcGxlIHJhbmtlciwgYnV0IHJlc3VsdHMgYXJlIGZhciBmcm9tIG9wdGltYWwuXG52YXIgbG9uZ2VzdFBhdGhSYW5rZXIgPSBsb25nZXN0UGF0aDtcblxuZnVuY3Rpb24gdGlnaHRUcmVlUmFua2VyKGcpIHtcbiAgbG9uZ2VzdFBhdGgoZyk7XG4gIGZlYXNpYmxlVHJlZShnKTtcbn1cblxuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXhSYW5rZXIoZykge1xuICBuZXR3b3JrU2ltcGxleChnKTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudER1bW15Q2hhaW5zO1xuXG5mdW5jdGlvbiBwYXJlbnREdW1teUNoYWlucyhnKSB7XG4gIHZhciBwb3N0b3JkZXJOdW1zID0gcG9zdG9yZGVyKGcpO1xuXG4gIF8uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgZWRnZU9iaiA9IG5vZGUuZWRnZU9iajtcbiAgICB2YXIgcGF0aERhdGEgPSBmaW5kUGF0aChnLCBwb3N0b3JkZXJOdW1zLCBlZGdlT2JqLnYsIGVkZ2VPYmoudyk7XG4gICAgdmFyIHBhdGggPSBwYXRoRGF0YS5wYXRoO1xuICAgIHZhciBsY2EgPSBwYXRoRGF0YS5sY2E7XG4gICAgdmFyIHBhdGhJZHggPSAwO1xuICAgIHZhciBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgdmFyIGFzY2VuZGluZyA9IHRydWU7XG5cbiAgICB3aGlsZSAodiAhPT0gZWRnZU9iai53KSB7XG4gICAgICBub2RlID0gZy5ub2RlKHYpO1xuXG4gICAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlICgocGF0aFYgPSBwYXRoW3BhdGhJZHhdKSAhPT0gbGNhICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYpLm1heFJhbmsgPCBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aFYgPT09IGxjYSkge1xuICAgICAgICAgIGFzY2VuZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlIChwYXRoSWR4IDwgcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYgPSBwYXRoW3BhdGhJZHggKyAxXSkubWluUmFuayA8PSBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cbiAgICAgICAgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgICAgfVxuXG4gICAgICBnLnNldFBhcmVudCh2LCBwYXRoVik7XG4gICAgICB2ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEZpbmQgYSBwYXRoIGZyb20gdiB0byB3IHRocm91Z2ggdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3IgKExDQSkuIFJldHVybiB0aGVcbi8vIGZ1bGwgcGF0aCBhbmQgdGhlIExDQS5cbmZ1bmN0aW9uIGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIHYsIHcpIHtcbiAgdmFyIHZQYXRoID0gW107XG4gIHZhciB3UGF0aCA9IFtdO1xuICB2YXIgbG93ID0gTWF0aC5taW4ocG9zdG9yZGVyTnVtc1t2XS5sb3csIHBvc3RvcmRlck51bXNbd10ubG93KTtcbiAgdmFyIGxpbSA9IE1hdGgubWF4KHBvc3RvcmRlck51bXNbdl0ubGltLCBwb3N0b3JkZXJOdW1zW3ddLmxpbSk7XG4gIHZhciBwYXJlbnQ7XG4gIHZhciBsY2E7XG5cbiAgLy8gVHJhdmVyc2UgdXAgZnJvbSB2IHRvIGZpbmQgdGhlIExDQVxuICBwYXJlbnQgPSB2O1xuICBkbyB7XG4gICAgcGFyZW50ID0gZy5wYXJlbnQocGFyZW50KTtcbiAgICB2UGF0aC5wdXNoKHBhcmVudCk7XG4gIH0gd2hpbGUgKHBhcmVudCAmJlxuICAgICAgICAgICAocG9zdG9yZGVyTnVtc1twYXJlbnRdLmxvdyA+IGxvdyB8fCBsaW0gPiBwb3N0b3JkZXJOdW1zW3BhcmVudF0ubGltKSk7XG4gIGxjYSA9IHBhcmVudDtcblxuICAvLyBUcmF2ZXJzZSBmcm9tIHcgdG8gTENBXG4gIHBhcmVudCA9IHc7XG4gIHdoaWxlICgocGFyZW50ID0gZy5wYXJlbnQocGFyZW50KSkgIT09IGxjYSkge1xuICAgIHdQYXRoLnB1c2gocGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiB7IHBhdGg6IHZQYXRoLmNvbmNhdCh3UGF0aC5yZXZlcnNlKCkpLCBsY2E6IGxjYSB9O1xufVxuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBsaW0gPSAwO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGxvdyA9IGxpbTtcbiAgICBfLmZvckVhY2goZy5jaGlsZHJlbih2KSwgZGZzKTtcbiAgICByZXN1bHRbdl0gPSB7IGxvdzogbG93LCBsaW06IGxpbSsrIH07XG4gIH1cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgY2xlYW51cDogY2xlYW51cFxufTtcblxuLypcbiAqIEEgbmVzdGluZyBncmFwaCBjcmVhdGVzIGR1bW15IG5vZGVzIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMsXG4gKiBhZGRzIGFwcHJvcHJpYXRlIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBjbHVzdGVyIG5vZGVzIGFyZSBwbGFjZWQgYmV0d2VlblxuICogdGhlc2UgYm91bmRyaWVzLCBhbmQgZW5zdXJlcyB0aGF0IHRoZSBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gd2UgZW5zdXJlLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1pbmxlbiBwcm9wZXJ0eSwgdGhhdCBub2Rlc1xuICogYW5kIHN1YmdyYXBoIGJvcmRlciBub2RlcyB0byBub3QgZW5kIHVwIG9uIHRoZSBzYW1lIHJhbmsuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gTm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBhIG1pbmxlbiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocy5cbiAqICAgIDMuIFRoZSBtaW5sZW4gYXR0cmlidXRlIGZvciBub2RlcyBpcyBhZGp1c3RlZCB0byBlbnN1cmUgbm9kZXMgZG8gbm90XG4gKiAgICAgICBnZXQgcGxhY2VkIG9uIHRoZSBzYW1lIHJhbmsgYXMgc3ViZ3JhcGggYm9yZGVyIG5vZGVzLlxuICpcbiAqIFRoZSBuZXN0aW5nIGdyYXBoIGlkZWEgY29tZXMgZnJvbSBTYW5kZXIsIFwiTGF5b3V0IG9mIENvbXBvdW5kIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcInJvb3RcIiwge30sIFwiX3Jvb3RcIik7XG4gIHZhciBkZXB0aHMgPSB0cmVlRGVwdGhzKGcpO1xuICB2YXIgaGVpZ2h0ID0gXy5tYXgoXy52YWx1ZXMoZGVwdGhzKSkgLSAxOyAvLyBOb3RlOiBkZXB0aHMgaXMgYW4gT2JqZWN0IG5vdCBhbiBhcnJheVxuICB2YXIgbm9kZVNlcCA9IDIgKiBoZWlnaHQgKyAxO1xuXG4gIGcuZ3JhcGgoKS5uZXN0aW5nUm9vdCA9IHJvb3Q7XG5cbiAgLy8gTXVsdGlwbHkgbWlubGVuIGJ5IG5vZGVTZXAgdG8gYWxpZ24gbm9kZXMgb24gbm9uLWJvcmRlciByYW5rcy5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBnLmVkZ2UoZSkubWlubGVuICo9IG5vZGVTZXA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhIHdlaWdodCB0aGF0IGlzIHN1ZmZpY2llbnQgdG8ga2VlcCBzdWJncmFwaHMgdmVydGljYWxseSBjb21wYWN0XG4gIHZhciB3ZWlnaHQgPSBzdW1XZWlnaHRzKGcpICsgMTtcblxuICAvLyBDcmVhdGUgYm9yZGVyIG5vZGVzIGFuZCBsaW5rIHRoZW0gdXBcbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICB9KTtcblxuICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgLy8gbGF5ZXJzLlxuICBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3IgPSBub2RlU2VwO1xufVxuXG5mdW5jdGlvbiBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikge1xuICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmICh2ICE9PSByb290KSB7XG4gICAgICBnLnNldEVkZ2Uocm9vdCwgdiwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogbm9kZVNlcCB9KTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvcCA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9idFwiKTtcbiAgdmFyIGJvdHRvbSA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9iYlwiKTtcbiAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuXG4gIGcuc2V0UGFyZW50KHRvcCwgdik7XG4gIGxhYmVsLmJvcmRlclRvcCA9IHRvcDtcbiAgZy5zZXRQYXJlbnQoYm90dG9tLCB2KTtcbiAgbGFiZWwuYm9yZGVyQm90dG9tID0gYm90dG9tO1xuXG4gIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuXG4gICAgdmFyIGNoaWxkTm9kZSA9IGcubm9kZShjaGlsZCk7XG4gICAgdmFyIGNoaWxkVG9wID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IGNoaWxkTm9kZS5ib3JkZXJUb3AgOiBjaGlsZDtcbiAgICB2YXIgY2hpbGRCb3R0b20gPSBjaGlsZE5vZGUuYm9yZGVyQm90dG9tID8gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA6IGNoaWxkO1xuICAgIHZhciB0aGlzV2VpZ2h0ID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IHdlaWdodCA6IDIgKiB3ZWlnaHQ7XG4gICAgdmFyIG1pbmxlbiA9IGNoaWxkVG9wICE9PSBjaGlsZEJvdHRvbSA/IDEgOiBoZWlnaHQgLSBkZXB0aHNbdl0gKyAxO1xuXG4gICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcblxuICAgIGcuc2V0RWRnZShjaGlsZEJvdHRvbSwgYm90dG9tLCB7XG4gICAgICB3ZWlnaHQ6IHRoaXNXZWlnaHQsXG4gICAgICBtaW5sZW46IG1pbmxlbixcbiAgICAgIG5lc3RpbmdFZGdlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghZy5wYXJlbnQodikpIHtcbiAgICBnLnNldEVkZ2Uocm9vdCwgdG9wLCB7IHdlaWdodDogMCwgbWlubGVuOiBoZWlnaHQgKyBkZXB0aHNbdl0gfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJlZURlcHRocyhnKSB7XG4gIHZhciBkZXB0aHMgPSB7fTtcbiAgZnVuY3Rpb24gZGZzKHYsIGRlcHRoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIGRmcyhjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXB0aHNbdl0gPSBkZXB0aDtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbih2KSB7IGRmcyh2LCAxKTsgfSk7XG4gIHJldHVybiBkZXB0aHM7XG59XG5cbmZ1bmN0aW9uIHN1bVdlaWdodHMoZykge1xuICByZXR1cm4gXy5yZWR1Y2UoZy5lZGdlcygpLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICByZXR1cm4gYWNjICsgZy5lZGdlKGUpLndlaWdodDtcbiAgfSwgMCk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXAoZykge1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgZy5yZW1vdmVOb2RlKGdyYXBoTGFiZWwubmVzdGluZ1Jvb3QpO1xuICBkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLm5lc3RpbmdFZGdlKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZEJvcmRlclNlZ21lbnRzO1xuXG5mdW5jdGlvbiBhZGRCb3JkZXJTZWdtZW50cyhnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGRmcyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgbm9kZS5ib3JkZXJMZWZ0ID0gW107XG4gICAgICBub2RlLmJvcmRlclJpZ2h0ID0gW107XG4gICAgICBmb3IgKHZhciByYW5rID0gbm9kZS5taW5SYW5rLCBtYXhSYW5rID0gbm9kZS5tYXhSYW5rICsgMTtcbiAgICAgICAgcmFuayA8IG1heFJhbms7XG4gICAgICAgICsrcmFuaykge1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyTGVmdFwiLCBcIl9ibFwiLCB2LCBub2RlLCByYW5rKTtcbiAgICAgICAgYWRkQm9yZGVyTm9kZShnLCBcImJvcmRlclJpZ2h0XCIsIFwiX2JyXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJvcCwgcHJlZml4LCBzZywgc2dOb2RlLCByYW5rKSB7XG4gIHZhciBsYWJlbCA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFuazogcmFuaywgYm9yZGVyVHlwZTogcHJvcCB9O1xuICB2YXIgcHJldiA9IHNnTm9kZVtwcm9wXVtyYW5rIC0gMV07XG4gIHZhciBjdXJyID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbGFiZWwsIHByZWZpeCk7XG4gIHNnTm9kZVtwcm9wXVtyYW5rXSA9IGN1cnI7XG4gIGcuc2V0UGFyZW50KGN1cnIsIHNnKTtcbiAgaWYgKHByZXYpIHtcbiAgICBnLnNldEVkZ2UocHJldiwgY3VyciwgeyB3ZWlnaHQ6IDEgfSk7XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkanVzdDogYWRqdXN0LFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBhZGp1c3QoZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImJ0XCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgcmV2ZXJzZVkoZyk7XG4gIH1cblxuICBpZiAocmFua0RpciA9PT0gXCJsclwiIHx8IHJhbmtEaXIgPT09IFwicmxcIikge1xuICAgIHN3YXBYWShnKTtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3dhcFdpZHRoSGVpZ2h0KGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHsgc3dhcFdpZHRoSGVpZ2h0T25lKGcuZWRnZShlKSk7IH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHRPbmUoYXR0cnMpIHtcbiAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgYXR0cnMud2lkdGggPSBhdHRycy5oZWlnaHQ7XG4gIGF0dHJzLmhlaWdodCA9IHc7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VZKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXZlcnNlWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCByZXZlcnNlWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkge1xuICAgICAgcmV2ZXJzZVlPbmUoZWRnZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVlPbmUoYXR0cnMpIHtcbiAgYXR0cnMueSA9IC1hdHRycy55O1xufVxuXG5mdW5jdGlvbiBzd2FwWFkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBYWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCBzd2FwWFlPbmUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIHN3YXBYWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwWFlPbmUoYXR0cnMpIHtcbiAgdmFyIHggPSBhdHRycy54O1xuICBhdHRycy54ID0gYXR0cnMueTtcbiAgYXR0cnMueSA9IHg7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRPcmRlcjtcblxuLypcbiAqIEFzc2lnbnMgYW4gaW5pdGlhbCBvcmRlciB2YWx1ZSBmb3IgZWFjaCBub2RlIGJ5IHBlcmZvcm1pbmcgYSBERlMgc2VhcmNoXG4gKiBzdGFydGluZyBmcm9tIG5vZGVzIGluIHRoZSBmaXJzdCByYW5rLiBOb2RlcyBhcmUgYXNzaWduZWQgYW4gb3JkZXIgaW4gdGhlaXJcbiAqIHJhbmsgYXMgdGhleSBhcmUgZmlyc3QgdmlzaXRlZC5cbiAqXG4gKiBUaGlzIGFwcHJvYWNoIGNvbWVzIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkEgVGVjaG5pcXVlIGZvciBEcmF3aW5nIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqXG4gKiBSZXR1cm5zIGEgbGF5ZXJpbmcgbWF0cml4IHdpdGggYW4gYXJyYXkgcGVyIGxheWVyIGFuZCBlYWNoIGxheWVyIHNvcnRlZCBieVxuICogdGhlIG9yZGVyIG9mIGl0cyBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gaW5pdE9yZGVyKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgdmFyIHNpbXBsZU5vZGVzID0gXy5maWx0ZXIoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuICFnLmNoaWxkcmVuKHYpLmxlbmd0aDtcbiAgfSk7XG4gIHZhciBtYXhSYW5rID0gXy5tYXgoXy5tYXAoc2ltcGxlTm9kZXMsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KSk7XG4gIHZhciBsYXllcnMgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHJldHVybjtcbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBsYXllcnNbbm9kZS5yYW5rXS5wdXNoKHYpO1xuICAgIF8uZm9yRWFjaChnLnN1Y2Nlc3NvcnModiksIGRmcyk7XG4gIH1cblxuICB2YXIgb3JkZXJlZFZzID0gXy5zb3J0Qnkoc2ltcGxlTm9kZXMsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KTtcbiAgXy5mb3JFYWNoKG9yZGVyZWRWcywgZGZzKTtcblxuICByZXR1cm4gbGF5ZXJzO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcm9zc0NvdW50O1xuXG4vKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgbGF5ZXJpbmcgKGFuIGFycmF5IG9mIGxheWVycywgZWFjaCB3aXRoIGFuIGFycmF5IG9mXG4gKiBvcmRlcmVyZCBub2RlcykgYW5kIGEgZ3JhcGggYW5kIHJldHVybnMgYSB3ZWlnaHRlZCBjcm9zc2luZyBjb3VudC5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBtdXN0IGJlIHNpbXBsZSAobm90IGEgbXVsdGlncmFwaCksIGRpcmVjdGVkLCBhbmQgaW5jbHVkZVxuICogICAgICAgb25seSBzaW1wbGUgZWRnZXMuXG4gKiAgICAyLiBFZGdlcyBpbiB0aGUgaW5wdXQgZ3JhcGggbXVzdCBoYXZlIGFzc2lnbmVkIHdlaWdodHMuXG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIFRoZSBncmFwaCBhbmQgbGF5ZXJpbmcgbWF0cml4IGFyZSBsZWZ0IHVuY2hhbmdlZC5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBpcyBkZXJpdmVkIGZyb20gQmFydGgsIGV0IGFsLiwgXCJCaWxheWVyIENyb3NzIENvdW50aW5nLlwiXG4gKi9cbmZ1bmN0aW9uIGNyb3NzQ291bnQoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNjID0gMDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsYXllcmluZy5sZW5ndGg7ICsraSkge1xuICAgIGNjICs9IHR3b0xheWVyQ3Jvc3NDb3VudChnLCBsYXllcmluZ1tpLTFdLCBsYXllcmluZ1tpXSk7XG4gIH1cbiAgcmV0dXJuIGNjO1xufVxuXG5mdW5jdGlvbiB0d29MYXllckNyb3NzQ291bnQoZywgbm9ydGhMYXllciwgc291dGhMYXllcikge1xuICAvLyBTb3J0IGFsbCBvZiB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgbm9ydGggYW5kIHNvdXRoIGxheWVycyBieSB0aGVpciBwb3NpdGlvblxuICAvLyBpbiB0aGUgbm9ydGggbGF5ZXIgYW5kIHRoZW4gdGhlIHNvdXRoLiBNYXAgdGhlc2UgZWRnZXMgdG8gdGhlIHBvc2l0aW9uIG9mXG4gIC8vIHRoZWlyIGhlYWQgaW4gdGhlIHNvdXRoIGxheWVyLlxuICB2YXIgc291dGhQb3MgPSBfLnppcE9iamVjdChzb3V0aExheWVyLFxuICAgIF8ubWFwKHNvdXRoTGF5ZXIsIGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiBpOyB9KSk7XG4gIHZhciBzb3V0aEVudHJpZXMgPSBfLmZsYXR0ZW4oXy5tYXAobm9ydGhMYXllciwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLnNvcnRCeShfLm1hcChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4geyBwb3M6IHNvdXRoUG9zW2Uud10sIHdlaWdodDogZy5lZGdlKGUpLndlaWdodCB9O1xuICAgIH0pLCBcInBvc1wiKTtcbiAgfSksIHRydWUpO1xuXG4gIC8vIEJ1aWxkIHRoZSBhY2N1bXVsYXRvciB0cmVlXG4gIHZhciBmaXJzdEluZGV4ID0gMTtcbiAgd2hpbGUgKGZpcnN0SW5kZXggPCBzb3V0aExheWVyLmxlbmd0aCkgZmlyc3RJbmRleCA8PD0gMTtcbiAgdmFyIHRyZWVTaXplID0gMiAqIGZpcnN0SW5kZXggLSAxO1xuICBmaXJzdEluZGV4IC09IDE7XG4gIHZhciB0cmVlID0gXy5tYXAobmV3IEFycmF5KHRyZWVTaXplKSwgZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9KTtcblxuICAvLyBDYWxjdWxhdGUgdGhlIHdlaWdodGVkIGNyb3NzaW5nc1xuICB2YXIgY2MgPSAwO1xuICBfLmZvckVhY2goc291dGhFbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHtcbiAgICB2YXIgaW5kZXggPSBlbnRyeS5wb3MgKyBmaXJzdEluZGV4O1xuICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICB2YXIgd2VpZ2h0U3VtID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPiAwKSB7XG4gICAgICBpZiAoaW5kZXggJSAyKSB7XG4gICAgICAgIHdlaWdodFN1bSArPSB0cmVlW2luZGV4ICsgMV07XG4gICAgICB9XG4gICAgICBpbmRleCA9IChpbmRleCAtIDEpID4+IDE7XG4gICAgICB0cmVlW2luZGV4XSArPSBlbnRyeS53ZWlnaHQ7XG4gICAgfVxuICAgIGNjICs9IGVudHJ5LndlaWdodCAqIHdlaWdodFN1bTtcbiAgfSkpO1xuXG4gIHJldHVybiBjYztcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXJ5Y2VudGVyO1xuXG5mdW5jdGlvbiBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpIHtcbiAgcmV0dXJuIF8ubWFwKG1vdmFibGUsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5WID0gZy5pbkVkZ2VzKHYpO1xuICAgIGlmICghaW5WLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgdjogdiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0ID0gXy5yZWR1Y2UoaW5WLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSksXG4gICAgICAgICAgbm9kZVUgPSBnLm5vZGUoZS52KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdW06IGFjYy5zdW0gKyAoZWRnZS53ZWlnaHQgKiBub2RlVS5vcmRlciksXG4gICAgICAgICAgd2VpZ2h0OiBhY2Mud2VpZ2h0ICsgZWRnZS53ZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH0sIHsgc3VtOiAwLCB3ZWlnaHQ6IDAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHY6IHYsXG4gICAgICAgIGJhcnljZW50ZXI6IHJlc3VsdC5zdW0gLyByZXN1bHQud2VpZ2h0LFxuICAgICAgICB3ZWlnaHQ6IHJlc3VsdC53ZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlQ29uZmxpY3RzO1xuXG4vKlxuICogR2l2ZW4gYSBsaXN0IG9mIGVudHJpZXMgb2YgdGhlIGZvcm0ge3YsIGJhcnljZW50ZXIsIHdlaWdodH0gYW5kIGFcbiAqIGNvbnN0cmFpbnQgZ3JhcGggdGhpcyBmdW5jdGlvbiB3aWxsIHJlc29sdmUgYW55IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZVxuICogY29uc3RyYWludCBncmFwaCBhbmQgdGhlIGJhcnljZW50ZXJzIGZvciB0aGUgZW50cmllcy4gSWYgdGhlIGJhcnljZW50ZXJzIGZvclxuICogYW4gZW50cnkgd291bGQgdmlvbGF0ZSBhIGNvbnN0cmFpbnQgaW4gdGhlIGNvbnN0cmFpbnQgZ3JhcGggdGhlbiB3ZSBjb2FsZXNjZVxuICogdGhlIG5vZGVzIGluIHRoZSBjb25mbGljdCBpbnRvIGEgbmV3IG5vZGUgdGhhdCByZXNwZWN0cyB0aGUgY29udHJhaW50IGFuZFxuICogYWdncmVnYXRlcyBiYXJ5Y2VudGVyIGFuZCB3ZWlnaHQgaW5mb3JtYXRpb24uXG4gKlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24gaW4gRm9yc3RlciwgXCJBIEZhc3QgYW5kXG4gKiBTaW1wbGUgSHVlcmlzdGljIGZvciBDb25zdHJhaW5lZCBUd28tTGV2ZWwgQ3Jvc3NpbmcgUmVkdWN0aW9uLFwiIHRob3VnaHQgaXRcbiAqIGRpZmZlcnMgaW4gc29tZSBzcGVjaWZpYyBkZXRhaWxzLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEVhY2ggZW50cnkgaGFzIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9LCBvciBpZiB0aGUgbm9kZSBoYXNcbiAqICAgICAgIG5vIGJhcnljZW50ZXIsIHRoZW4ge3Z9LlxuICpcbiAqIFJldHVybnM6XG4gKlxuICogICAgQSBuZXcgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2cywgaSwgYmFyeWNlbnRlciwgd2VpZ2h0fS4gVGhlIGxpc3RcbiAqICAgIGB2c2AgbWF5IGVpdGhlciBiZSBhIHNpbmdsZXRvbiBvciBpdCBtYXkgYmUgYW4gYWdncmVnYXRpb24gb2Ygbm9kZXNcbiAqICAgIG9yZGVyZWQgc3VjaCB0aGF0IHRoZXkgZG8gbm90IHZpb2xhdGUgY29uc3RyYWludHMgZnJvbSB0aGUgY29uc3RyYWludFxuICogICAgZ3JhcGguIFRoZSBwcm9wZXJ0eSBgaWAgaXMgdGhlIGxvd2VzdCBvcmlnaW5hbCBpbmRleCBvZiBhbnkgb2YgdGhlXG4gKiAgICBlbGVtZW50cyBpbiBgdnNgLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29uZmxpY3RzKGVudHJpZXMsIGNnKSB7XG4gIHZhciBtYXBwZWRFbnRyaWVzID0ge307XG4gIF8uZm9yRWFjaChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSwgaSkge1xuICAgIHZhciB0bXAgPSBtYXBwZWRFbnRyaWVzW2VudHJ5LnZdID0ge1xuICAgICAgaW5kZWdyZWU6IDAsXG4gICAgICBcImluXCI6IFtdLFxuICAgICAgb3V0OiBbXSxcbiAgICAgIHZzOiBbZW50cnkudl0sXG4gICAgICBpOiBpXG4gICAgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZW50cnkuYmFyeWNlbnRlcikpIHtcbiAgICAgIHRtcC5iYXJ5Y2VudGVyID0gZW50cnkuYmFyeWNlbnRlcjtcbiAgICAgIHRtcC53ZWlnaHQgPSBlbnRyeS53ZWlnaHQ7XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goY2cuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlbnRyeVYgPSBtYXBwZWRFbnRyaWVzW2Uudl07XG4gICAgdmFyIGVudHJ5VyA9IG1hcHBlZEVudHJpZXNbZS53XTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZW50cnlWKSAmJiAhXy5pc1VuZGVmaW5lZChlbnRyeVcpKSB7XG4gICAgICBlbnRyeVcuaW5kZWdyZWUrKztcbiAgICAgIGVudHJ5Vi5vdXQucHVzaChtYXBwZWRFbnRyaWVzW2Uud10pO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHNvdXJjZVNldCA9IF8uZmlsdGVyKG1hcHBlZEVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgcmV0dXJuICFlbnRyeS5pbmRlZ3JlZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRvUmVzb2x2ZUNvbmZsaWN0cyhzb3VyY2VTZXQpO1xufVxuXG5mdW5jdGlvbiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KSB7XG4gIHZhciBlbnRyaWVzID0gW107XG5cbiAgZnVuY3Rpb24gaGFuZGxlSW4odkVudHJ5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHVFbnRyeSkge1xuICAgICAgaWYgKHVFbnRyeS5tZXJnZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodUVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgICAgXy5pc1VuZGVmaW5lZCh2RW50cnkuYmFyeWNlbnRlcikgfHxcbiAgICAgICAgICB1RW50cnkuYmFyeWNlbnRlciA+PSB2RW50cnkuYmFyeWNlbnRlcikge1xuICAgICAgICBtZXJnZUVudHJpZXModkVudHJ5LCB1RW50cnkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVPdXQodkVudHJ5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHdFbnRyeSkge1xuICAgICAgd0VudHJ5W1wiaW5cIl0ucHVzaCh2RW50cnkpO1xuICAgICAgaWYgKC0td0VudHJ5LmluZGVncmVlID09PSAwKSB7XG4gICAgICAgIHNvdXJjZVNldC5wdXNoKHdFbnRyeSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHdoaWxlIChzb3VyY2VTZXQubGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gc291cmNlU2V0LnBvcCgpO1xuICAgIGVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgXy5mb3JFYWNoKGVudHJ5W1wiaW5cIl0ucmV2ZXJzZSgpLCBoYW5kbGVJbihlbnRyeSkpO1xuICAgIF8uZm9yRWFjaChlbnRyeS5vdXQsIGhhbmRsZU91dChlbnRyeSkpO1xuICB9XG5cbiAgcmV0dXJuIF8ubWFwKF8uZmlsdGVyKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAhZW50cnkubWVyZ2VkOyB9KSxcbiAgICBmdW5jdGlvbihlbnRyeSkge1xuICAgICAgcmV0dXJuIF8ucGljayhlbnRyeSwgW1widnNcIiwgXCJpXCIsIFwiYmFyeWNlbnRlclwiLCBcIndlaWdodFwiXSk7XG4gICAgfSk7XG5cbn1cblxuZnVuY3Rpb24gbWVyZ2VFbnRyaWVzKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBzdW0gPSAwO1xuICB2YXIgd2VpZ2h0ID0gMDtcblxuICBpZiAodGFyZ2V0LndlaWdodCkge1xuICAgIHN1bSArPSB0YXJnZXQuYmFyeWNlbnRlciAqIHRhcmdldC53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IHRhcmdldC53ZWlnaHQ7XG4gIH1cblxuICBpZiAoc291cmNlLndlaWdodCkge1xuICAgIHN1bSArPSBzb3VyY2UuYmFyeWNlbnRlciAqIHNvdXJjZS53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IHNvdXJjZS53ZWlnaHQ7XG4gIH1cblxuICB0YXJnZXQudnMgPSBzb3VyY2UudnMuY29uY2F0KHRhcmdldC52cyk7XG4gIHRhcmdldC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICB0YXJnZXQud2VpZ2h0ID0gd2VpZ2h0O1xuICB0YXJnZXQuaSA9IE1hdGgubWluKHNvdXJjZS5pLCB0YXJnZXQuaSk7XG4gIHNvdXJjZS5tZXJnZWQgPSB0cnVlO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0O1xuXG5mdW5jdGlvbiBzb3J0KGVudHJpZXMsIGJpYXNSaWdodCkge1xuICB2YXIgcGFydHMgPSB1dGlsLnBhcnRpdGlvbihlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIHJldHVybiBfLmhhcyhlbnRyeSwgXCJiYXJ5Y2VudGVyXCIpO1xuICB9KTtcbiAgdmFyIHNvcnRhYmxlID0gcGFydHMubGhzLFxuICAgIHVuc29ydGFibGUgPSBfLnNvcnRCeShwYXJ0cy5yaHMsIGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAtZW50cnkuaTsgfSksXG4gICAgdnMgPSBbXSxcbiAgICBzdW0gPSAwLFxuICAgIHdlaWdodCA9IDAsXG4gICAgdnNJbmRleCA9IDA7XG5cbiAgc29ydGFibGUuc29ydChjb21wYXJlV2l0aEJpYXMoISFiaWFzUmlnaHQpKTtcblxuICB2c0luZGV4ID0gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIHZzSW5kZXgpO1xuXG4gIF8uZm9yRWFjaChzb3J0YWJsZSwgZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgdnNJbmRleCArPSBlbnRyeS52cy5sZW5ndGg7XG4gICAgdnMucHVzaChlbnRyeS52cyk7XG4gICAgc3VtICs9IGVudHJ5LmJhcnljZW50ZXIgKiBlbnRyeS53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IGVudHJ5LndlaWdodDtcbiAgICB2c0luZGV4ID0gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIHZzSW5kZXgpO1xuICB9KTtcblxuICB2YXIgcmVzdWx0ID0geyB2czogXy5mbGF0dGVuKHZzLCB0cnVlKSB9O1xuICBpZiAod2VpZ2h0KSB7XG4gICAgcmVzdWx0LmJhcnljZW50ZXIgPSBzdW0gLyB3ZWlnaHQ7XG4gICAgcmVzdWx0LndlaWdodCA9IHdlaWdodDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgaW5kZXgpIHtcbiAgdmFyIGxhc3Q7XG4gIHdoaWxlICh1bnNvcnRhYmxlLmxlbmd0aCAmJiAobGFzdCA9IF8ubGFzdCh1bnNvcnRhYmxlKSkuaSA8PSBpbmRleCkge1xuICAgIHVuc29ydGFibGUucG9wKCk7XG4gICAgdnMucHVzaChsYXN0LnZzKTtcbiAgICBpbmRleCsrO1xuICB9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZVdpdGhCaWFzKGJpYXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGVudHJ5ViwgZW50cnlXKSB7XG4gICAgaWYgKGVudHJ5Vi5iYXJ5Y2VudGVyIDwgZW50cnlXLmJhcnljZW50ZXIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKGVudHJ5Vi5iYXJ5Y2VudGVyID4gZW50cnlXLmJhcnljZW50ZXIpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiAhYmlhcyA/IGVudHJ5Vi5pIC0gZW50cnlXLmkgOiBlbnRyeVcuaSAtIGVudHJ5Vi5pO1xuICB9O1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGJhcnljZW50ZXIgPSByZXF1aXJlKFwiLi9iYXJ5Y2VudGVyXCIpO1xudmFyIHJlc29sdmVDb25mbGljdHMgPSByZXF1aXJlKFwiLi9yZXNvbHZlLWNvbmZsaWN0c1wiKTtcbnZhciBzb3J0ID0gcmVxdWlyZShcIi4vc29ydFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0U3ViZ3JhcGg7XG5cbmZ1bmN0aW9uIHNvcnRTdWJncmFwaChnLCB2LCBjZywgYmlhc1JpZ2h0KSB7XG4gIHZhciBtb3ZhYmxlID0gZy5jaGlsZHJlbih2KTtcbiAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gIHZhciBibCA9IG5vZGUgPyBub2RlLmJvcmRlckxlZnQgOiB1bmRlZmluZWQ7XG4gIHZhciBiciA9IG5vZGUgPyBub2RlLmJvcmRlclJpZ2h0OiB1bmRlZmluZWQ7XG4gIHZhciBzdWJncmFwaHMgPSB7fTtcblxuICBpZiAoYmwpIHtcbiAgICBtb3ZhYmxlID0gXy5maWx0ZXIobW92YWJsZSwgZnVuY3Rpb24odykge1xuICAgICAgcmV0dXJuIHcgIT09IGJsICYmIHcgIT09IGJyO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGJhcnljZW50ZXJzID0gYmFyeWNlbnRlcihnLCBtb3ZhYmxlKTtcbiAgXy5mb3JFYWNoKGJhcnljZW50ZXJzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGlmIChnLmNoaWxkcmVuKGVudHJ5LnYpLmxlbmd0aCkge1xuICAgICAgdmFyIHN1YmdyYXBoUmVzdWx0ID0gc29ydFN1YmdyYXBoKGcsIGVudHJ5LnYsIGNnLCBiaWFzUmlnaHQpO1xuICAgICAgc3ViZ3JhcGhzW2VudHJ5LnZdID0gc3ViZ3JhcGhSZXN1bHQ7XG4gICAgICBpZiAoXy5oYXMoc3ViZ3JhcGhSZXN1bHQsIFwiYmFyeWNlbnRlclwiKSkge1xuICAgICAgICBtZXJnZUJhcnljZW50ZXJzKGVudHJ5LCBzdWJncmFwaFJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB2YXIgZW50cmllcyA9IHJlc29sdmVDb25mbGljdHMoYmFyeWNlbnRlcnMsIGNnKTtcbiAgZXhwYW5kU3ViZ3JhcGhzKGVudHJpZXMsIHN1YmdyYXBocyk7XG5cbiAgdmFyIHJlc3VsdCA9IHNvcnQoZW50cmllcywgYmlhc1JpZ2h0KTtcblxuICBpZiAoYmwpIHtcbiAgICByZXN1bHQudnMgPSBfLmZsYXR0ZW4oW2JsLCByZXN1bHQudnMsIGJyXSwgdHJ1ZSk7XG4gICAgaWYgKGcucHJlZGVjZXNzb3JzKGJsKS5sZW5ndGgpIHtcbiAgICAgIHZhciBibFByZWQgPSBnLm5vZGUoZy5wcmVkZWNlc3NvcnMoYmwpWzBdKSxcbiAgICAgICAgYnJQcmVkID0gZy5ub2RlKGcucHJlZGVjZXNzb3JzKGJyKVswXSk7XG4gICAgICBpZiAoIV8uaGFzKHJlc3VsdCwgXCJiYXJ5Y2VudGVyXCIpKSB7XG4gICAgICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gMDtcbiAgICAgICAgcmVzdWx0LndlaWdodCA9IDA7XG4gICAgICB9XG4gICAgICByZXN1bHQuYmFyeWNlbnRlciA9IChyZXN1bHQuYmFyeWNlbnRlciAqIHJlc3VsdC53ZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxQcmVkLm9yZGVyICsgYnJQcmVkLm9yZGVyKSAvIChyZXN1bHQud2VpZ2h0ICsgMik7XG4gICAgICByZXN1bHQud2VpZ2h0ICs9IDI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZXhwYW5kU3ViZ3JhcGhzKGVudHJpZXMsIHN1YmdyYXBocykge1xuICBfLmZvckVhY2goZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBlbnRyeS52cyA9IF8uZmxhdHRlbihlbnRyeS52cy5tYXAoZnVuY3Rpb24odikge1xuICAgICAgaWYgKHN1YmdyYXBoc1t2XSkge1xuICAgICAgICByZXR1cm4gc3ViZ3JhcGhzW3ZdLnZzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHY7XG4gICAgfSksIHRydWUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VCYXJ5Y2VudGVycyh0YXJnZXQsIG90aGVyKSB7XG4gIGlmICghXy5pc1VuZGVmaW5lZCh0YXJnZXQuYmFyeWNlbnRlcikpIHtcbiAgICB0YXJnZXQuYmFyeWNlbnRlciA9ICh0YXJnZXQuYmFyeWNlbnRlciAqIHRhcmdldC53ZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLmJhcnljZW50ZXIgKiBvdGhlci53ZWlnaHQpIC9cbiAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXQud2VpZ2h0ICsgb3RoZXIud2VpZ2h0KTtcbiAgICB0YXJnZXQud2VpZ2h0ICs9IG90aGVyLndlaWdodDtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuYmFyeWNlbnRlciA9IG90aGVyLmJhcnljZW50ZXI7XG4gICAgdGFyZ2V0LndlaWdodCA9IG90aGVyLndlaWdodDtcbiAgfVxufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkTGF5ZXJHcmFwaDtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBncmFwaCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNvcnQgYSBsYXllciBvZiBub2Rlcy4gVGhlIGdyYXBoIHdpbGxcbiAqIGNvbnRhaW4gYWxsIGJhc2UgYW5kIHN1YmdyYXBoIG5vZGVzIGZyb20gdGhlIHJlcXVlc3QgbGF5ZXIgaW4gdGhlaXIgb3JpZ2luYWxcbiAqIGhpZXJhcmNoeSBhbmQgYW55IGVkZ2VzIHRoYXQgYXJlIGluY2lkZW50IG9uIHRoZXNlIG5vZGVzIGFuZCBhcmUgb2YgdGhlIHR5cGVcbiAqIHJlcXVlc3RlZCBieSB0aGUgXCJyZWxhdGlvbnNoaXBcIiBwYXJhbWV0ZXIuXG4gKlxuICogTm9kZXMgZnJvbSB0aGUgcmVxdWVzdGVkIHJhbmsgdGhhdCBkbyBub3QgaGF2ZSBwYXJlbnRzIGFyZSBhc3NpZ25lZCBhIHJvb3RcbiAqIG5vZGUgaW4gdGhlIG91dHB1dCBncmFwaCwgd2hpY2ggaXMgc2V0IGluIHRoZSByb290IGdyYXBoIGF0dHJpYnV0ZS4gVGhpc1xuICogbWFrZXMgaXQgZWFzeSB0byB3YWxrIHRoZSBoaWVyYXJjaHkgb2YgbW92YWJsZSBub2RlcyBkdXJpbmcgb3JkZXJpbmcuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUdcbiAqICAgIDIuIEJhc2Ugbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhdmUgYSByYW5rIGF0dHJpYnV0ZVxuICogICAgMy4gU3ViZ3JhcGggbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBtaW5SYW5rIGFuZCBtYXhSYW5rIGF0dHJpYnV0ZXNcbiAqICAgIDQuIEVkZ2VzIGhhdmUgYW4gYXNzaWduZWQgd2VpZ2h0XG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIE91dHB1dCBncmFwaCBoYXMgYWxsIG5vZGVzIGluIHRoZSBtb3ZhYmxlIHJhbmsgd2l0aCBwcmVzZXJ2ZWRcbiAqICAgICAgIGhpZXJhcmNoeS5cbiAqICAgIDIuIFJvb3Qgbm9kZXMgaW4gdGhlIG1vdmFibGUgbGF5ZXIgYXJlIG1hZGUgY2hpbGRyZW4gb2YgdGhlIG5vZGVcbiAqICAgICAgIGluZGljYXRlZCBieSB0aGUgcm9vdCBhdHRyaWJ1dGUgb2YgdGhlIGdyYXBoLlxuICogICAgMy4gTm9uLW1vdmFibGUgbm9kZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlXG4gKiAgICAgICByZWxhdGlvbnNoaXAgcGFyYW1ldGVyLCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdyYXBoICh3aXRob3V0IGhpZXJhcmNoeSkuXG4gKiAgICA0LiBFZGdlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGUgcmVsYXRpb25zaGlwXG4gKiAgICAgICBwYXJhbWV0ZXIsIGFyZSBhZGRlZCB0byB0aGUgb3V0cHV0IGdyYXBoLlxuICogICAgNS4gVGhlIHdlaWdodHMgZm9yIGNvcGllZCBlZGdlcyBhcmUgYWdncmVnYXRlZCBhcyBuZWVkLCBzaW5jZSB0aGUgb3V0cHV0XG4gKiAgICAgICBncmFwaCBpcyBub3QgYSBtdWx0aS1ncmFwaC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCkge1xuICB2YXIgcm9vdCA9IGNyZWF0ZVJvb3ROb2RlKGcpLFxuICAgIHJlc3VsdCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlIH0pLnNldEdyYXBoKHsgcm9vdDogcm9vdCB9KVxuICAgICAgLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpOyB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodiksXG4gICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KTtcblxuICAgIGlmIChub2RlLnJhbmsgPT09IHJhbmsgfHwgbm9kZS5taW5SYW5rIDw9IHJhbmsgJiYgcmFuayA8PSBub2RlLm1heFJhbmspIHtcbiAgICAgIHJlc3VsdC5zZXROb2RlKHYpO1xuICAgICAgcmVzdWx0LnNldFBhcmVudCh2LCBwYXJlbnQgfHwgcm9vdCk7XG5cbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB3ZSBoYXZlIG9ubHkgc2hvcnQgZWRnZXMhXG4gICAgICBfLmZvckVhY2goZ1tyZWxhdGlvbnNoaXBdKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciB1ID0gZS52ID09PSB2ID8gZS53IDogZS52LFxuICAgICAgICAgIGVkZ2UgPSByZXN1bHQuZWRnZSh1LCB2KSxcbiAgICAgICAgICB3ZWlnaHQgPSAhXy5pc1VuZGVmaW5lZChlZGdlKSA/IGVkZ2Uud2VpZ2h0IDogMDtcbiAgICAgICAgcmVzdWx0LnNldEVkZ2UodSwgdiwgeyB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgKyB3ZWlnaHQgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgICByZXN1bHQuc2V0Tm9kZSh2LCB7XG4gICAgICAgICAgYm9yZGVyTGVmdDogbm9kZS5ib3JkZXJMZWZ0W3JhbmtdLFxuICAgICAgICAgIGJvcmRlclJpZ2h0OiBub2RlLmJvcmRlclJpZ2h0W3JhbmtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm9vdE5vZGUoZykge1xuICB2YXIgdjtcbiAgd2hpbGUgKGcuaGFzTm9kZSgodiA9IF8udW5pcXVlSWQoXCJfcm9vdFwiKSkpKTtcbiAgcmV0dXJuIHY7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gYWRkU3ViZ3JhcGhDb25zdHJhaW50cztcblxuZnVuY3Rpb24gYWRkU3ViZ3JhcGhDb25zdHJhaW50cyhnLCBjZywgdnMpIHtcbiAgdmFyIHByZXYgPSB7fSxcbiAgICByb290UHJldjtcblxuICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgY2hpbGQgPSBnLnBhcmVudCh2KSxcbiAgICAgIHBhcmVudCxcbiAgICAgIHByZXZDaGlsZDtcbiAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgIHBhcmVudCA9IGcucGFyZW50KGNoaWxkKTtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcHJldkNoaWxkID0gcHJldltwYXJlbnRdO1xuICAgICAgICBwcmV2W3BhcmVudF0gPSBjaGlsZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZDaGlsZCA9IHJvb3RQcmV2O1xuICAgICAgICByb290UHJldiA9IGNoaWxkO1xuICAgICAgfVxuICAgICAgaWYgKHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQgIT09IGNoaWxkKSB7XG4gICAgICAgIGNnLnNldEVkZ2UocHJldkNoaWxkLCBjaGlsZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNoaWxkID0gcGFyZW50O1xuICAgIH1cbiAgfSk7XG5cbiAgLypcbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB2ID8gZy5jaGlsZHJlbih2KSA6IGcuY2hpbGRyZW4oKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgbWluID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgICAgIHN1YmdyYXBocyA9IFtdO1xuICAgICAgXy5lYWNoKGNoaWxkcmVuLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICB2YXIgY2hpbGRNaW4gPSBkZnMoY2hpbGQpO1xuICAgICAgICBpZiAoZy5jaGlsZHJlbihjaGlsZCkubGVuZ3RoKSB7XG4gICAgICAgICAgc3ViZ3JhcGhzLnB1c2goeyB2OiBjaGlsZCwgb3JkZXI6IGNoaWxkTWluIH0pO1xuICAgICAgICB9XG4gICAgICAgIG1pbiA9IE1hdGgubWluKG1pbiwgY2hpbGRNaW4pO1xuICAgICAgfSk7XG4gICAgICBfLnJlZHVjZShfLnNvcnRCeShzdWJncmFwaHMsIFwib3JkZXJcIiksIGZ1bmN0aW9uKHByZXYsIGN1cnIpIHtcbiAgICAgICAgY2cuc2V0RWRnZShwcmV2LnYsIGN1cnIudik7XG4gICAgICAgIHJldHVybiBjdXJyO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICByZXR1cm4gZy5ub2RlKHYpLm9yZGVyO1xuICB9XG4gIGRmcyh1bmRlZmluZWQpO1xuICAqL1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBpbml0T3JkZXIgPSByZXF1aXJlKFwiLi9pbml0LW9yZGVyXCIpO1xudmFyIGNyb3NzQ291bnQgPSByZXF1aXJlKFwiLi9jcm9zcy1jb3VudFwiKTtcbnZhciBzb3J0U3ViZ3JhcGggPSByZXF1aXJlKFwiLi9zb3J0LXN1YmdyYXBoXCIpO1xudmFyIGJ1aWxkTGF5ZXJHcmFwaCA9IHJlcXVpcmUoXCIuL2J1aWxkLWxheWVyLWdyYXBoXCIpO1xudmFyIGFkZFN1YmdyYXBoQ29uc3RyYWludHMgPSByZXF1aXJlKFwiLi9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHNcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9yZGVyO1xuXG4vKlxuICogQXBwbGllcyBoZXVyaXN0aWNzIHRvIG1pbmltaXplIGVkZ2UgY3Jvc3NpbmdzIGluIHRoZSBncmFwaCBhbmQgc2V0cyB0aGUgYmVzdFxuICogb3JkZXIgc29sdXRpb24gYXMgYW4gb3JkZXIgYXR0cmlidXRlIG9uIGVhY2ggbm9kZS5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIERBR1xuICogICAgMi4gR3JhcGggbm9kZXMgbXVzdCBiZSBvYmplY3RzIHdpdGggYSBcInJhbmtcIiBhdHRyaWJ1dGVcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSB0aGUgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGFuIFwib3JkZXJcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG9yZGVyKGcpIHtcbiAgdmFyIG1heFJhbmsgPSB1dGlsLm1heFJhbmsoZyksXG4gICAgZG93bkxheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCBfLnJhbmdlKDEsIG1heFJhbmsgKyAxKSwgXCJpbkVkZ2VzXCIpLFxuICAgIHVwTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UobWF4UmFuayAtIDEsIC0xLCAtMSksIFwib3V0RWRnZXNcIik7XG5cbiAgdmFyIGxheWVyaW5nID0gaW5pdE9yZGVyKGcpO1xuICBhc3NpZ25PcmRlcihnLCBsYXllcmluZyk7XG5cbiAgdmFyIGJlc3RDQyA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBiZXN0O1xuXG4gIGZvciAodmFyIGkgPSAwLCBsYXN0QmVzdCA9IDA7IGxhc3RCZXN0IDwgNDsgKytpLCArK2xhc3RCZXN0KSB7XG4gICAgc3dlZXBMYXllckdyYXBocyhpICUgMiA/IGRvd25MYXllckdyYXBocyA6IHVwTGF5ZXJHcmFwaHMsIGkgJSA0ID49IDIpO1xuXG4gICAgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgdmFyIGNjID0gY3Jvc3NDb3VudChnLCBsYXllcmluZyk7XG4gICAgaWYgKGNjIDwgYmVzdENDKSB7XG4gICAgICBsYXN0QmVzdCA9IDA7XG4gICAgICBiZXN0ID0gXy5jbG9uZURlZXAobGF5ZXJpbmcpO1xuICAgICAgYmVzdENDID0gY2M7XG4gICAgfVxuICB9XG5cbiAgYXNzaWduT3JkZXIoZywgYmVzdCk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJHcmFwaHMoZywgcmFua3MsIHJlbGF0aW9uc2hpcCkge1xuICByZXR1cm4gXy5tYXAocmFua3MsIGZ1bmN0aW9uKHJhbmspIHtcbiAgICByZXR1cm4gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2VlcExheWVyR3JhcGhzKGxheWVyR3JhcGhzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIGNnID0gbmV3IEdyYXBoKCk7XG4gIF8uZm9yRWFjaChsYXllckdyYXBocywgZnVuY3Rpb24obGcpIHtcbiAgICB2YXIgcm9vdCA9IGxnLmdyYXBoKCkucm9vdDtcbiAgICB2YXIgc29ydGVkID0gc29ydFN1YmdyYXBoKGxnLCByb290LCBjZywgYmlhc1JpZ2h0KTtcbiAgICBfLmZvckVhY2goc29ydGVkLnZzLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICBsZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICB9KTtcbiAgICBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGxnLCBjZywgc29ydGVkLnZzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKSB7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbi8qXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjb29yZGluYXRlIGFzc2lnbm1lbnQgYmFzZWQgb24gQnJhbmRlcyBhbmQgS8O2cGYsIFwiRmFzdFxuICogYW5kIFNpbXBsZSBIb3Jpem9udGFsIENvb3JkaW5hdGUgQXNzaWdubWVudC5cIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvblg6IHBvc2l0aW9uWCxcbiAgZmluZFR5cGUxQ29uZmxpY3RzOiBmaW5kVHlwZTFDb25mbGljdHMsXG4gIGZpbmRUeXBlMkNvbmZsaWN0czogZmluZFR5cGUyQ29uZmxpY3RzLFxuICBhZGRDb25mbGljdDogYWRkQ29uZmxpY3QsXG4gIGhhc0NvbmZsaWN0OiBoYXNDb25mbGljdCxcbiAgdmVydGljYWxBbGlnbm1lbnQ6IHZlcnRpY2FsQWxpZ25tZW50LFxuICBob3Jpem9udGFsQ29tcGFjdGlvbjogaG9yaXpvbnRhbENvbXBhY3Rpb24sXG4gIGFsaWduQ29vcmRpbmF0ZXM6IGFsaWduQ29vcmRpbmF0ZXMsXG4gIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OiBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxcbiAgYmFsYW5jZTogYmFsYW5jZVxufTtcblxuLypcbiAqIE1hcmtzIGFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggd2l0aCBhIHR5cGUtMSBjb25mbGljdCB3aXRoIHRoZSBcInR5cGUxQ29uZmxpY3RcIlxuICogcHJvcGVydHkuIEEgdHlwZS0xIGNvbmZsaWN0IGlzIG9uZSB3aGVyZSBhIG5vbi1pbm5lciBzZWdtZW50IGNyb3NzZXMgYW5cbiAqIGlubmVyIHNlZ21lbnQuIEFuIGlubmVyIHNlZ21lbnQgaXMgYW4gZWRnZSB3aXRoIGJvdGggaW5jaWRlbnQgbm9kZXMgbWFya2VkXG4gKiB3aXRoIHRoZSBcImR1bW15XCIgcHJvcGVydHkuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gc2NhbnMgbGF5ZXIgYnkgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHNlY29uZCwgZm9yIHR5cGUtMVxuICogY29uZmxpY3RzIGJldHdlZW4gdGhlIGN1cnJlbnQgbGF5ZXIgYW5kIHRoZSBwcmV2aW91cyBsYXllci4gRm9yIGVhY2ggbGF5ZXJcbiAqIGl0IHNjYW5zIHRoZSBub2RlcyBmcm9tIGxlZnQgdG8gcmlnaHQgdW50aWwgaXQgcmVhY2hlcyBvbmUgdGhhdCBpcyBpbmNpZGVudFxuICogb24gYW4gaW5uZXIgc2VnbWVudC4gSXQgdGhlbiBzY2FucyBwcmVkZWNlc3NvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgaGF2ZVxuICogZWRnZXMgdGhhdCBjcm9zcyB0aGF0IGlubmVyIHNlZ21lbnQuIEF0IHRoZSBlbmQgYSBmaW5hbCBzY2FuIGlzIGRvbmUgZm9yIGFsbFxuICogbm9kZXMgb24gdGhlIGN1cnJlbnQgcmFuayB0byBzZWUgaWYgdGhleSBjcm9zcyB0aGUgbGFzdCB2aXNpdGVkIGlubmVyXG4gKiBzZWdtZW50LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIChzYWZlbHkpIGFzc3VtZXMgdGhhdCBhIGR1bW15IG5vZGUgd2lsbCBvbmx5IGJlIGluY2lkZW50IG9uIGFcbiAqIHNpbmdsZSBub2RlIGluIHRoZSBsYXllcnMgYmVpbmcgc2Nhbm5lZC5cbiAqL1xuZnVuY3Rpb24gZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSB7XG4gIHZhciBjb25mbGljdHMgPSB7fTtcblxuICBmdW5jdGlvbiB2aXNpdExheWVyKHByZXZMYXllciwgbGF5ZXIpIHtcbiAgICB2YXJcbiAgICAgIC8vIGxhc3QgdmlzaXRlZCBub2RlIGluIHRoZSBwcmV2aW91cyBsYXllciB0aGF0IGlzIGluY2lkZW50IG9uIGFuIGlubmVyXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgazAgPSAwLFxuICAgICAgLy8gVHJhY2tzIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBsYXllciBzY2FubmVkIGZvciBjcm9zc2luZ3Mgd2l0aCBhIHR5cGUtMVxuICAgICAgLy8gc2VnbWVudC5cbiAgICAgIHNjYW5Qb3MgPSAwLFxuICAgICAgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aCxcbiAgICAgIGxhc3ROb2RlID0gXy5sYXN0KGxheWVyKTtcblxuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIHcgPSBmaW5kT3RoZXJJbm5lclNlZ21lbnROb2RlKGcsIHYpLFxuICAgICAgICBrMSA9IHcgPyBnLm5vZGUodykub3JkZXIgOiBwcmV2TGF5ZXJMZW5ndGg7XG5cbiAgICAgIGlmICh3IHx8IHYgPT09IGxhc3ROb2RlKSB7XG4gICAgICAgIF8uZm9yRWFjaChsYXllci5zbGljZShzY2FuUG9zLCBpICsxKSwgZnVuY3Rpb24oc2Nhbk5vZGUpIHtcbiAgICAgICAgICBfLmZvckVhY2goZy5wcmVkZWNlc3NvcnMoc2Nhbk5vZGUpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgICB2YXIgdUxhYmVsID0gZy5ub2RlKHUpLFxuICAgICAgICAgICAgICB1UG9zID0gdUxhYmVsLm9yZGVyO1xuICAgICAgICAgICAgaWYgKCh1UG9zIDwgazAgfHwgazEgPCB1UG9zKSAmJlxuICAgICAgICAgICAgICAgICEodUxhYmVsLmR1bW15ICYmIGcubm9kZShzY2FuTm9kZSkuZHVtbXkpKSB7XG4gICAgICAgICAgICAgIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdSwgc2Nhbk5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2NhblBvcyA9IGkgKyAxO1xuICAgICAgICBrMCA9IGsxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgXy5yZWR1Y2UobGF5ZXJpbmcsIHZpc2l0TGF5ZXIpO1xuICByZXR1cm4gY29uZmxpY3RzO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZTJDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aEVuZCwgcHJldk5vcnRoQm9yZGVyLCBuZXh0Tm9ydGhCb3JkZXIpIHtcbiAgICB2YXIgdjtcbiAgICBfLmZvckVhY2goXy5yYW5nZShzb3V0aFBvcywgc291dGhFbmQpLCBmdW5jdGlvbihpKSB7XG4gICAgICB2ID0gc291dGhbaV07XG4gICAgICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgIHZhciB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICBpZiAodU5vZGUuZHVtbXkgJiZcbiAgICAgICAgICAgICAgKHVOb2RlLm9yZGVyIDwgcHJldk5vcnRoQm9yZGVyIHx8IHVOb2RlLm9yZGVyID4gbmV4dE5vcnRoQm9yZGVyKSkge1xuICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBmdW5jdGlvbiB2aXNpdExheWVyKG5vcnRoLCBzb3V0aCkge1xuICAgIHZhciBwcmV2Tm9ydGhQb3MgPSAtMSxcbiAgICAgIG5leHROb3J0aFBvcyxcbiAgICAgIHNvdXRoUG9zID0gMDtcblxuICAgIF8uZm9yRWFjaChzb3V0aCwgZnVuY3Rpb24odiwgc291dGhMb29rYWhlYWQpIHtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgdmFyIHByZWRlY2Vzc29ycyA9IGcucHJlZGVjZXNzb3JzKHYpO1xuICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgIG5leHROb3J0aFBvcyA9IGcubm9kZShwcmVkZWNlc3NvcnNbMF0pLm9yZGVyO1xuICAgICAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aExvb2thaGVhZCwgcHJldk5vcnRoUG9zLCBuZXh0Tm9ydGhQb3MpO1xuICAgICAgICAgIHNvdXRoUG9zID0gc291dGhMb29rYWhlYWQ7XG4gICAgICAgICAgcHJldk5vcnRoUG9zID0gbmV4dE5vcnRoUG9zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGgubGVuZ3RoLCBuZXh0Tm9ydGhQb3MsIG5vcnRoLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc291dGg7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdikge1xuICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgcmV0dXJuIF8uZmluZChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgcmV0dXJuIGcubm9kZSh1KS5kdW1teTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDb25mbGljdChjb25mbGljdHMsIHYsIHcpIHtcbiAgaWYgKHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuXG4gIHZhciBjb25mbGljdHNWID0gY29uZmxpY3RzW3ZdO1xuICBpZiAoIWNvbmZsaWN0c1YpIHtcbiAgICBjb25mbGljdHNbdl0gPSBjb25mbGljdHNWID0ge307XG4gIH1cbiAgY29uZmxpY3RzVlt3XSA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhhc0NvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiBfLmhhcyhjb25mbGljdHNbdl0sIHcpO1xufVxuXG4vKlxuICogVHJ5IHRvIGFsaWduIG5vZGVzIGludG8gdmVydGljYWwgXCJibG9ja3NcIiB3aGVyZSBwb3NzaWJsZS4gVGhpcyBhbGdvcml0aG1cbiAqIGF0dGVtcHRzIHRvIGFsaWduIGEgbm9kZSB3aXRoIG9uZSBvZiBpdHMgbWVkaWFuIG5laWdoYm9ycy4gSWYgdGhlIGVkZ2VcbiAqIGNvbm5lY3RpbmcgYSBuZWlnaGJvciBpcyBhIHR5cGUtMSBjb25mbGljdCB0aGVuIHdlIGlnbm9yZSB0aGF0IHBvc3NpYmlsaXR5LlxuICogSWYgYSBwcmV2aW91cyBub2RlIGhhcyBhbHJlYWR5IGZvcm1lZCBhIGJsb2NrIHdpdGggYSBub2RlIGFmdGVyIHRoZSBub2RlXG4gKiB3ZSdyZSB0cnlpbmcgdG8gZm9ybSBhIGJsb2NrIHdpdGgsIHdlIGFsc28gaWdub3JlIHRoYXQgcG9zc2liaWxpdHkgLSBvdXJcbiAqIGJsb2NrcyB3b3VsZCBiZSBzcGxpdCBpbiB0aGF0IHNjZW5hcmlvLlxuICovXG5mdW5jdGlvbiB2ZXJ0aWNhbEFsaWdubWVudChnLCBsYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKSB7XG4gIHZhciByb290ID0ge30sXG4gICAgYWxpZ24gPSB7fSxcbiAgICBwb3MgPSB7fTtcblxuICAvLyBXZSBjYWNoZSB0aGUgcG9zaXRpb24gaGVyZSBiYXNlZCBvbiB0aGUgbGF5ZXJpbmcgYmVjYXVzZSB0aGUgZ3JhcGggYW5kXG4gIC8vIGxheWVyaW5nIG1heSBiZSBvdXQgb2Ygc3luYy4gVGhlIGxheWVyaW5nIG1hdHJpeCBpcyBtYW5pcHVsYXRlZCB0b1xuICAvLyBnZW5lcmF0ZSBkaWZmZXJlbnQgZXh0cmVtZSBhbGlnbm1lbnRzLlxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBvcmRlcikge1xuICAgICAgcm9vdFt2XSA9IHY7XG4gICAgICBhbGlnblt2XSA9IHY7XG4gICAgICBwb3Nbdl0gPSBvcmRlcjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBwcmV2SWR4ID0gLTE7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgICB2YXIgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICB3cyA9IF8uc29ydEJ5KHdzLCBmdW5jdGlvbih3KSB7IHJldHVybiBwb3Nbd107IH0pO1xuICAgICAgICB2YXIgbXAgPSAod3MubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihtcCksIGlsID0gTWF0aC5jZWlsKG1wKTsgaSA8PSBpbDsgKytpKSB7XG4gICAgICAgICAgdmFyIHcgPSB3c1tpXTtcbiAgICAgICAgICBpZiAoYWxpZ25bdl0gPT09IHYgJiZcbiAgICAgICAgICAgICAgcHJldklkeCA8IHBvc1t3XSAmJlxuICAgICAgICAgICAgICAhaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSkge1xuICAgICAgICAgICAgYWxpZ25bd10gPSB2O1xuICAgICAgICAgICAgYWxpZ25bdl0gPSByb290W3ZdID0gcm9vdFt3XTtcbiAgICAgICAgICAgIHByZXZJZHggPSBwb3Nbd107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHJvb3Q6IHJvb3QsIGFsaWduOiBhbGlnbiB9O1xufVxuXG5mdW5jdGlvbiBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBsYXllcmluZywgcm9vdCwgYWxpZ24sIHJldmVyc2VTZXApIHtcbiAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGlmZmVycyBmcm9tIEJLIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcy5cbiAgLy8gSW5zdGVhZCBvZiB0aGVpciBhbGdvcml0aG0gd2UgY29uc3RydWN0IGEgbmV3IGJsb2NrIGdyYXBoIGFuZCBkbyB0d29cbiAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAvLyBjb29yZGluYXRlcy4gVGhlIHNlY29uZCBzd2VlcCByZW1vdmVzIHVudXNlZCBzcGFjZSBieSBtb3ZpbmcgYmxvY2tzIHRvIHRoZVxuICAvLyBncmVhdGVzdCBjb29yZGluYXRlcyB3aXRob3V0IHZpb2xhdGluZyBzZXBhcmF0aW9uLlxuICB2YXIgeHMgPSB7fSxcbiAgICBibG9ja0cgPSBidWlsZEJsb2NrR3JhcGgoZywgbGF5ZXJpbmcsIHJvb3QsIHJldmVyc2VTZXApLFxuICAgIGJvcmRlclR5cGUgPSByZXZlcnNlU2VwID8gXCJib3JkZXJMZWZ0XCIgOiBcImJvcmRlclJpZ2h0XCI7XG5cbiAgZnVuY3Rpb24gaXRlcmF0ZShzZXRYc0Z1bmMsIG5leHROb2Rlc0Z1bmMpIHtcbiAgICB2YXIgc3RhY2sgPSBibG9ja0cubm9kZXMoKTtcbiAgICB2YXIgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2aXNpdGVkID0ge307XG4gICAgd2hpbGUgKGVsZW0pIHtcbiAgICAgIGlmICh2aXNpdGVkW2VsZW1dKSB7XG4gICAgICAgIHNldFhzRnVuYyhlbGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpc2l0ZWRbZWxlbV0gPSB0cnVlO1xuICAgICAgICBzdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICBzdGFjayA9IHN0YWNrLmNvbmNhdChuZXh0Tm9kZXNGdW5jKGVsZW0pKTtcbiAgICAgIH1cblxuICAgICAgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IHBhc3MsIGFzc2lnbiBzbWFsbGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMShlbGVtKSB7XG4gICAgeHNbZWxlbV0gPSBibG9ja0cuaW5FZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICBpZigheHNbZS52XSkge1xuICAgICAgICAvLyBFTUlMRTogdGhpcyBvbmUgY2FuIGJlIHVuZGVmaW5lZCBzb21ldGltZXMgZm9yIHNvbWUgcmVhc29uLlxuICAgICAgICB4c1tlLnZdID0gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLm1heChhY2MsIHhzW2Uudl0gKyBibG9ja0cuZWRnZShlKSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvLyBTZWNvbmQgcGFzcywgYXNzaWduIGdyZWF0ZXN0IGNvb3JkaW5hdGVzXG4gIGZ1bmN0aW9uIHBhc3MyKGVsZW0pIHtcbiAgICB2YXIgbWluID0gYmxvY2tHLm91dEVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgIHJldHVybiBNYXRoLm1pbihhY2MsIHhzW2Uud10gLSBibG9ja0cuZWRnZShlKSk7XG4gICAgfSwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcblxuICAgIHZhciBub2RlID0gZy5ub2RlKGVsZW0pO1xuICAgIGlmIChtaW4gIT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAmJiBub2RlLmJvcmRlclR5cGUgIT09IGJvcmRlclR5cGUpIHtcbiAgICAgIHhzW2VsZW1dID0gTWF0aC5tYXgoeHNbZWxlbV0sIG1pbik7XG4gICAgfVxuICB9XG5cbiAgaXRlcmF0ZShwYXNzMSwgYmxvY2tHLnByZWRlY2Vzc29ycy5iaW5kKGJsb2NrRykpO1xuICBpdGVyYXRlKHBhc3MyLCBibG9ja0cuc3VjY2Vzc29ycy5iaW5kKGJsb2NrRykpO1xuXG4gIC8vIEFzc2lnbiB4IGNvb3JkaW5hdGVzIHRvIGFsbCBub2Rlc1xuICBfLmZvckVhY2goYWxpZ24sIGZ1bmN0aW9uKHYpIHtcbiAgICB4c1t2XSA9IHhzW3Jvb3Rbdl1dO1xuICB9KTtcblxuICByZXR1cm4geHM7XG59XG5cblxuZnVuY3Rpb24gYnVpbGRCbG9ja0dyYXBoKGcsIGxheWVyaW5nLCByb290LCByZXZlcnNlU2VwKSB7XG4gIHZhciBibG9ja0dyYXBoID0gbmV3IEdyYXBoKCksXG4gICAgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKSxcbiAgICBzZXBGbiA9IHNlcChncmFwaExhYmVsLm5vZGVzZXAsIGdyYXBoTGFiZWwuZWRnZXNlcCwgcmV2ZXJzZVNlcCk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciB1O1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odikge1xuICAgICAgdmFyIHZSb290ID0gcm9vdFt2XTtcbiAgICAgIGJsb2NrR3JhcGguc2V0Tm9kZSh2Um9vdCk7XG4gICAgICBpZiAodSkge1xuICAgICAgICB2YXIgdVJvb3QgPSByb290W3VdLFxuICAgICAgICAgIHByZXZNYXggPSBibG9ja0dyYXBoLmVkZ2UodVJvb3QsIHZSb290KTtcbiAgICAgICAgYmxvY2tHcmFwaC5zZXRFZGdlKHVSb290LCB2Um9vdCwgTWF0aC5tYXgoc2VwRm4oZywgdiwgdSksIHByZXZNYXggfHwgMCkpO1xuICAgICAgfVxuICAgICAgdSA9IHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBibG9ja0dyYXBoO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgYWxpZ25tZW50IHRoYXQgaGFzIHRoZSBzbWFsbGVzdCB3aWR0aCBvZiB0aGUgZ2l2ZW4gYWxpZ25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQoZywgeHNzKSB7XG4gIHJldHVybiBfLm1pbkJ5KF8udmFsdWVzKHhzcyksIGZ1bmN0aW9uICh4cykge1xuICAgIHZhciBtYXggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblxuICAgIF8uZm9ySW4oeHMsIGZ1bmN0aW9uICh4LCB2KSB7XG4gICAgICB2YXIgaGFsZldpZHRoID0gd2lkdGgoZywgdikgLyAyO1xuXG4gICAgICBtYXggPSBNYXRoLm1heCh4ICsgaGFsZldpZHRoLCBtYXgpO1xuICAgICAgbWluID0gTWF0aC5taW4oeCAtIGhhbGZXaWR0aCwgbWluKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXggLSBtaW47XG4gIH0pO1xufVxuXG4vKlxuICogQWxpZ24gdGhlIGNvb3JkaW5hdGVzIG9mIGVhY2ggb2YgdGhlIGxheW91dCBhbGlnbm1lbnRzIHN1Y2ggdGhhdFxuICogbGVmdC1iaWFzZWQgYWxpZ25tZW50cyBoYXZlIHRoZWlyIG1pbmltdW0gY29vcmRpbmF0ZSBhdCB0aGUgc2FtZSBwb2ludCBhc1xuICogdGhlIG1pbmltdW0gY29vcmRpbmF0ZSBvZiB0aGUgc21hbGxlc3Qgd2lkdGggYWxpZ25tZW50IGFuZCByaWdodC1iaWFzZWRcbiAqIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtYXhpbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXMgdGhlIG1heGltdW1cbiAqIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudC5cbiAqL1xuZnVuY3Rpb24gYWxpZ25Db29yZGluYXRlcyh4c3MsIGFsaWduVG8pIHtcbiAgdmFyIGFsaWduVG9WYWxzID0gXy52YWx1ZXMoYWxpZ25UbyksXG4gICAgYWxpZ25Ub01pbiA9IF8ubWluKGFsaWduVG9WYWxzKSxcbiAgICBhbGlnblRvTWF4ID0gXy5tYXgoYWxpZ25Ub1ZhbHMpO1xuXG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIF8uZm9yRWFjaChbXCJsXCIsIFwiclwiXSwgZnVuY3Rpb24oaG9yaXopIHtcbiAgICAgIHZhciBhbGlnbm1lbnQgPSB2ZXJ0ICsgaG9yaXosXG4gICAgICAgIHhzID0geHNzW2FsaWdubWVudF0sXG4gICAgICAgIGRlbHRhO1xuICAgICAgaWYgKHhzID09PSBhbGlnblRvKSByZXR1cm47XG5cbiAgICAgIHZhciB4c1ZhbHMgPSBfLnZhbHVlcyh4cyk7XG4gICAgICBkZWx0YSA9IGhvcml6ID09PSBcImxcIiA/IGFsaWduVG9NaW4gLSBfLm1pbih4c1ZhbHMpIDogYWxpZ25Ub01heCAtIF8ubWF4KHhzVmFscyk7XG5cbiAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICB4c3NbYWxpZ25tZW50XSA9IF8ubWFwVmFsdWVzKHhzLCBmdW5jdGlvbih4KSB7IHJldHVybiB4ICsgZGVsdGE7IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYmFsYW5jZSh4c3MsIGFsaWduKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyh4c3MudWwsIGZ1bmN0aW9uKGlnbm9yZSwgdikge1xuICAgIGlmIChhbGlnbikge1xuICAgICAgcmV0dXJuIHhzc1thbGlnbi50b0xvd2VyQ2FzZSgpXVt2XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHhzID0gXy5zb3J0QnkoXy5tYXAoeHNzLCB2KSk7XG4gICAgICB2YXIgeHMxID0geHNbMV07XG4gICAgICB2YXIgeHMyID0geHNbMl07XG4gICAgICBpZiAoIXhzMiAmJiB4czIgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIHhzMSAvIDI7XG4gICAgICB9XG4gICAgICBpZiAoIXhzMSAmJiB4czEgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIHhzMiAvIDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHhzMSArIHhzMikgLyAyO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uWChnKSB7XG4gIHZhciBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgdmFyIGNvbmZsaWN0cyA9IF8ubWVyZ2UoXG4gICAgZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSxcbiAgICBmaW5kVHlwZTJDb25mbGljdHMoZywgbGF5ZXJpbmcpKTtcblxuICB2YXIgeHNzID0ge307XG4gIHZhciBhZGp1c3RlZExheWVyaW5nO1xuICBfLmZvckVhY2goW1widVwiLCBcImRcIl0sIGZ1bmN0aW9uKHZlcnQpIHtcbiAgICBhZGp1c3RlZExheWVyaW5nID0gdmVydCA9PT0gXCJ1XCIgPyBsYXllcmluZyA6IF8udmFsdWVzKGxheWVyaW5nKS5yZXZlcnNlKCk7XG4gICAgXy5mb3JFYWNoKFtcImxcIiwgXCJyXCJdLCBmdW5jdGlvbihob3Jpeikge1xuICAgICAgaWYgKGhvcml6ID09PSBcInJcIikge1xuICAgICAgICBhZGp1c3RlZExheWVyaW5nID0gXy5tYXAoYWRqdXN0ZWRMYXllcmluZywgZnVuY3Rpb24oaW5uZXIpIHtcbiAgICAgICAgICByZXR1cm4gXy52YWx1ZXMoaW5uZXIpLnJldmVyc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZWlnaGJvckZuID0gKHZlcnQgPT09IFwidVwiID8gZy5wcmVkZWNlc3NvcnMgOiBnLnN1Y2Nlc3NvcnMpLmJpbmQoZyk7XG4gICAgICB2YXIgYWxpZ24gPSB2ZXJ0aWNhbEFsaWdubWVudChnLCBhZGp1c3RlZExheWVyaW5nLCBjb25mbGljdHMsIG5laWdoYm9yRm4pO1xuICAgICAgdmFyIHhzID0gaG9yaXpvbnRhbENvbXBhY3Rpb24oZywgYWRqdXN0ZWRMYXllcmluZyxcbiAgICAgICAgYWxpZ24ucm9vdCwgYWxpZ24uYWxpZ24sIGhvcml6ID09PSBcInJcIik7XG4gICAgICBpZiAoaG9yaXogPT09IFwiclwiKSB7XG4gICAgICAgIHhzID0gXy5tYXBWYWx1ZXMoeHMsIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIC14OyB9KTtcbiAgICAgIH1cbiAgICAgIHhzc1t2ZXJ0ICsgaG9yaXpdID0geHM7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhciBzbWFsbGVzdFdpZHRoID0gZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQoZywgeHNzKTtcbiAgYWxpZ25Db29yZGluYXRlcyh4c3MsIHNtYWxsZXN0V2lkdGgpO1xuICByZXR1cm4gYmFsYW5jZSh4c3MsIGcuZ3JhcGgoKS5hbGlnbik7XG59XG5cbmZ1bmN0aW9uIHNlcChub2RlU2VwLCBlZGdlU2VwLCByZXZlcnNlU2VwKSB7XG4gIHJldHVybiBmdW5jdGlvbihnLCB2LCB3KSB7XG4gICAgdmFyIHZMYWJlbCA9IGcubm9kZSh2KTtcbiAgICB2YXIgd0xhYmVsID0gZy5ub2RlKHcpO1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBkZWx0YTtcblxuICAgIHN1bSArPSB2TGFiZWwud2lkdGggLyAyO1xuICAgIGlmIChfLmhhcyh2TGFiZWwsIFwibGFiZWxwb3NcIikpIHtcbiAgICAgIHN3aXRjaCAodkxhYmVsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgXCJsXCI6IGRlbHRhID0gLXZMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZGVsdGEgPSB2TGFiZWwud2lkdGggLyAyOyBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRlbHRhKSB7XG4gICAgICBzdW0gKz0gcmV2ZXJzZVNlcCA/IGRlbHRhIDogLWRlbHRhO1xuICAgIH1cbiAgICBkZWx0YSA9IDA7XG5cbiAgICBzdW0gKz0gKHZMYWJlbC5kdW1teSA/IGVkZ2VTZXAgOiBub2RlU2VwKSAvIDI7XG4gICAgc3VtICs9ICh3TGFiZWwuZHVtbXkgPyBlZGdlU2VwIDogbm9kZVNlcCkgLyAyO1xuXG4gICAgc3VtICs9IHdMYWJlbC53aWR0aCAvIDI7XG4gICAgaWYgKF8uaGFzKHdMYWJlbCwgXCJsYWJlbHBvc1wiKSkge1xuICAgICAgc3dpdGNoICh3TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcImxcIjogZGVsdGEgPSB3TGFiZWwud2lkdGggLyAyOyBicmVhaztcbiAgICAgIGNhc2UgXCJyXCI6IGRlbHRhID0gLXdMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIHN1bSArPSByZXZlcnNlU2VwID8gZGVsdGEgOiAtZGVsdGE7XG4gICAgfVxuICAgIGRlbHRhID0gMDtcblxuICAgIHJldHVybiBzdW07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHdpZHRoKGcsIHYpIHtcbiAgcmV0dXJuIGcubm9kZSh2KS53aWR0aDtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xudmFyIHBvc2l0aW9uWCA9IHJlcXVpcmUoXCIuL2JrXCIpLnBvc2l0aW9uWDtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3NpdGlvbjtcblxuZnVuY3Rpb24gcG9zaXRpb24oZykge1xuICBnID0gdXRpbC5hc05vbkNvbXBvdW5kR3JhcGgoZyk7XG5cbiAgcG9zaXRpb25ZKGcpO1xuICBfLmZvckVhY2gocG9zaXRpb25YKGcpLCBmdW5jdGlvbih4LCB2KSB7XG4gICAgZy5ub2RlKHYpLnggPSB4O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25ZKGcpIHtcbiAgdmFyIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICB2YXIgcmFua1NlcCA9IGcuZ3JhcGgoKS5yYW5rc2VwO1xuICB2YXIgcHJldlkgPSAwO1xuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgdmFyIG1heEhlaWdodCA9IF8ubWF4KF8ubWFwKGxheWVyLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikuaGVpZ2h0OyB9KSk7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgICBnLm5vZGUodikueSA9IHByZXZZICsgbWF4SGVpZ2h0IC8gMjtcbiAgICB9KTtcbiAgICBwcmV2WSArPSBtYXhIZWlnaHQgKyByYW5rU2VwO1xuICB9KTtcbn1cblxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIGFjeWNsaWMgPSByZXF1aXJlKFwiLi9hY3ljbGljXCIpO1xudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoXCIuL25vcm1hbGl6ZVwiKTtcbnZhciByYW5rID0gcmVxdWlyZShcIi4vcmFua1wiKTtcbnZhciBub3JtYWxpemVSYW5rcyA9IHJlcXVpcmUoXCIuL3V0aWxcIikubm9ybWFsaXplUmFua3M7XG52YXIgcGFyZW50RHVtbXlDaGFpbnMgPSByZXF1aXJlKFwiLi9wYXJlbnQtZHVtbXktY2hhaW5zXCIpO1xudmFyIHJlbW92ZUVtcHR5UmFua3MgPSByZXF1aXJlKFwiLi91dGlsXCIpLnJlbW92ZUVtcHR5UmFua3M7XG52YXIgbmVzdGluZ0dyYXBoID0gcmVxdWlyZShcIi4vbmVzdGluZy1ncmFwaFwiKTtcbnZhciBhZGRCb3JkZXJTZWdtZW50cyA9IHJlcXVpcmUoXCIuL2FkZC1ib3JkZXItc2VnbWVudHNcIik7XG52YXIgY29vcmRpbmF0ZVN5c3RlbSA9IHJlcXVpcmUoXCIuL2Nvb3JkaW5hdGUtc3lzdGVtXCIpO1xudmFyIG9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXJcIik7XG52YXIgcG9zaXRpb24gPSByZXF1aXJlKFwiLi9wb3NpdGlvblwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxheW91dDtcblxuZnVuY3Rpb24gbGF5b3V0KGcsIG9wdHMpIHtcbiAgdmFyIHRpbWUgPSBvcHRzICYmIG9wdHMuZGVidWdUaW1pbmcgPyB1dGlsLnRpbWUgOiB1dGlsLm5vdGltZTtcbiAgdGltZShcImxheW91dFwiLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGF5b3V0R3JhcGggPSBcbiAgICAgIHRpbWUoXCIgIGJ1aWxkTGF5b3V0R3JhcGhcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBidWlsZExheW91dEdyYXBoKGcpOyB9KTtcbiAgICB0aW1lKFwiICBydW5MYXlvdXRcIiwgICAgICAgIGZ1bmN0aW9uKCkgeyBydW5MYXlvdXQobGF5b3V0R3JhcGgsIHRpbWUpOyB9KTtcbiAgICB0aW1lKFwiICB1cGRhdGVJbnB1dEdyYXBoXCIsIGZ1bmN0aW9uKCkgeyB1cGRhdGVJbnB1dEdyYXBoKGcsIGxheW91dEdyYXBoKTsgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5MYXlvdXQoZywgdGltZSkge1xuICB0aW1lKFwiICAgIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHNcIiwgZnVuY3Rpb24oKSB7IG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZVNlbGZFZGdlc1wiLCAgICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZVNlbGZFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWN5Y2xpY1wiLCAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgYWN5Y2xpYy5ydW4oZyk7IH0pO1xuICB0aW1lKFwiICAgIG5lc3RpbmdHcmFwaC5ydW5cIiwgICAgICAgZnVuY3Rpb24oKSB7IG5lc3RpbmdHcmFwaC5ydW4oZyk7IH0pO1xuICB0aW1lKFwiICAgIHJhbmtcIiwgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJhbmsodXRpbC5hc05vbkNvbXBvdW5kR3JhcGgoZykpOyB9KTtcbiAgdGltZShcIiAgICBpbmplY3RFZGdlTGFiZWxQcm94aWVzXCIsIGZ1bmN0aW9uKCkgeyBpbmplY3RFZGdlTGFiZWxQcm94aWVzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVFbXB0eVJhbmtzXCIsICAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVFbXB0eVJhbmtzKGcpOyB9KTtcbiAgdGltZShcIiAgICBuZXN0aW5nR3JhcGguY2xlYW51cFwiLCAgIGZ1bmN0aW9uKCkgeyBuZXN0aW5nR3JhcGguY2xlYW51cChnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplUmFua3NcIiwgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplUmFua3MoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFzc2lnblJhbmtNaW5NYXhcIiwgICAgICAgZnVuY3Rpb24oKSB7IGFzc2lnblJhbmtNaW5NYXgoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUVkZ2VMYWJlbFByb3hpZXNcIiwgZnVuY3Rpb24oKSB7IHJlbW92ZUVkZ2VMYWJlbFByb3hpZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5vcm1hbGl6ZS5ydW5cIiwgICAgICAgICAgZnVuY3Rpb24oKSB7IG5vcm1hbGl6ZS5ydW4oZyk7IH0pO1xuICB0aW1lKFwiICAgIHBhcmVudER1bW15Q2hhaW5zXCIsICAgICAgZnVuY3Rpb24oKSB7IHBhcmVudER1bW15Q2hhaW5zKGcpOyB9KTtcbiAgdGltZShcIiAgICBhZGRCb3JkZXJTZWdtZW50c1wiLCAgICAgIGZ1bmN0aW9uKCkgeyBhZGRCb3JkZXJTZWdtZW50cyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgb3JkZXJcIiwgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgb3JkZXIoZyk7IH0pO1xuICB0aW1lKFwiICAgIGluc2VydFNlbGZFZGdlc1wiLCAgICAgICAgZnVuY3Rpb24oKSB7IGluc2VydFNlbGZFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbVwiLCBmdW5jdGlvbigpIHsgY29vcmRpbmF0ZVN5c3RlbS5hZGp1c3QoZyk7IH0pO1xuICB0aW1lKFwiICAgIHBvc2l0aW9uXCIsICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHBvc2l0aW9uKGcpOyB9KTtcbiAgLy8gRml4IHNvbWV0aW1lcyBub3QgYXNzaWduaW5nIHggcG9zaXRpb24gZm9yIHdoYXRldmVyIHJlYXNvbi5cbiAgLy8gR2l2ZXMgbWVkaW9jcmUgcmVzdWx0cywgYnV0IGJldHRlciB0byBiYW5kYWlkIGZpeCBpdCB0aGFuIG5vIHJlc3VsdCBhdCBhbGxcbiAgLy8gVE9ETzogU2hvdWxkIHRyeSB0byBmaWd1cmUgb3V0IHdoeSBpdCBldmVuIGdpdmVzIHRoZXNlIHVuZGVmaW5lZCByZXN1bHRzLlxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbihuKSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUobik7XG4gICAgaWYgKCFub2RlLnggJiYgbm9kZS54ICE9PSAwKSB7XG4gICAgICBub2RlLnggPSAwO1xuICAgICAgY29uc29sZS5sb2cobik7XG4gICAgICBjb25zb2xlLmxvZyhcIk1pc3NpbmcgeCBjb29yZGluYXRlLCBtaWdodCBnaXZlIHBvb3IgcmVzdWx0cy5cIik7XG4gICAgfVxuICB9KTtcbiAgdGltZShcIiAgICBwb3NpdGlvblNlbGZFZGdlc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyBwb3NpdGlvblNlbGZFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlQm9yZGVyTm9kZXNcIiwgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlQm9yZGVyTm9kZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5vcm1hbGl6ZS51bmRvXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IG5vcm1hbGl6ZS51bmRvKGcpOyB9KTtcbiAgdGltZShcIiAgICBmaXh1cEVkZ2VMYWJlbENvb3Jkc1wiLCAgIGZ1bmN0aW9uKCkgeyBmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW1cIiwgICBmdW5jdGlvbigpIHsgY29vcmRpbmF0ZVN5c3RlbS51bmRvKGcpOyB9KTtcbiAgdGltZShcIiAgICB0cmFuc2xhdGVHcmFwaFwiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyB0cmFuc2xhdGVHcmFwaChnKTsgfSk7XG4gIHRpbWUoXCIgICAgYXNzaWduTm9kZUludGVyc2VjdHNcIiwgICBmdW5jdGlvbigpIHsgYXNzaWduTm9kZUludGVyc2VjdHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJldmVyc2VQb2ludHNcIiwgICAgICAgICAgZnVuY3Rpb24oKSB7IHJldmVyc2VQb2ludHNGb3JSZXZlcnNlZEVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhY3ljbGljLnVuZG9cIiwgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBhY3ljbGljLnVuZG8oZyk7IH0pO1xufVxuXG4vKlxuICogQ29waWVzIGZpbmFsIGxheW91dCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBsYXlvdXQgZ3JhcGggYmFjayB0byB0aGUgaW5wdXRcbiAqIGdyYXBoLiBUaGlzIHByb2Nlc3Mgb25seSBjb3BpZXMgd2hpdGVsaXN0ZWQgYXR0cmlidXRlcyBmcm9tIHRoZSBsYXlvdXQgZ3JhcGhcbiAqIHRvIHRoZSBpbnB1dCBncmFwaCwgc28gaXQgc2VydmVzIGFzIGEgZ29vZCBwbGFjZSB0byBkZXRlcm1pbmUgd2hhdFxuICogYXR0cmlidXRlcyBjYW4gaW5mbHVlbmNlIGxheW91dC5cbiAqL1xuZnVuY3Rpb24gdXBkYXRlSW5wdXRHcmFwaChpbnB1dEdyYXBoLCBsYXlvdXRHcmFwaCkge1xuICBfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLm5vZGUodik7XG4gICAgdmFyIGxheW91dExhYmVsID0gbGF5b3V0R3JhcGgubm9kZSh2KTtcblxuICAgIGlmIChpbnB1dExhYmVsKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcblxuICAgICAgaWYgKGxheW91dEdyYXBoLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgICBpbnB1dExhYmVsLndpZHRoID0gbGF5b3V0TGFiZWwud2lkdGg7XG4gICAgICAgIGlucHV0TGFiZWwuaGVpZ2h0ID0gbGF5b3V0TGFiZWwuaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBpbnB1dExhYmVsID0gaW5wdXRHcmFwaC5lZGdlKGUpO1xuICAgIHZhciBsYXlvdXRMYWJlbCA9IGxheW91dEdyYXBoLmVkZ2UoZSk7XG5cbiAgICBpZiAoIWxheW91dExhYmVsKSB7XG4gICAgICAvLyBSYW5kb20gY3Jhc2ggSSBzb21ldGltZXMgZ290Li4uXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5wdXRMYWJlbC5wb2ludHMgPSBsYXlvdXRMYWJlbC5wb2ludHM7XG4gICAgaWYgKF8uaGFzKGxheW91dExhYmVsLCBcInhcIikpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuICAgIH1cbiAgfSk7XG5cbiAgaW5wdXRHcmFwaC5ncmFwaCgpLndpZHRoID0gbGF5b3V0R3JhcGguZ3JhcGgoKS53aWR0aDtcbiAgaW5wdXRHcmFwaC5ncmFwaCgpLmhlaWdodCA9IGxheW91dEdyYXBoLmdyYXBoKCkuaGVpZ2h0O1xufVxuXG52YXIgZ3JhcGhOdW1BdHRycyA9IFtcIm5vZGVzZXBcIiwgXCJlZGdlc2VwXCIsIFwicmFua3NlcFwiLCBcIm1hcmdpbnhcIiwgXCJtYXJnaW55XCJdO1xudmFyIGdyYXBoRGVmYXVsdHMgPSB7IHJhbmtzZXA6IDUwLCBlZGdlc2VwOiAyMCwgbm9kZXNlcDogNTAsIHJhbmtkaXI6IFwidGJcIiB9O1xudmFyIGdyYXBoQXR0cnMgPSBbXCJhY3ljbGljZXJcIiwgXCJyYW5rZXJcIiwgXCJyYW5rZGlyXCIsIFwiYWxpZ25cIl07XG52YXIgbm9kZU51bUF0dHJzID0gW1wid2lkdGhcIiwgXCJoZWlnaHRcIl07XG52YXIgbm9kZURlZmF1bHRzID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG52YXIgZWRnZU51bUF0dHJzID0gW1wibWlubGVuXCIsIFwid2VpZ2h0XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJsYWJlbG9mZnNldFwiXTtcbnZhciBlZGdlRGVmYXVsdHMgPSB7XG4gIG1pbmxlbjogMSwgd2VpZ2h0OiAxLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICBsYWJlbG9mZnNldDogMTAsIGxhYmVscG9zOiBcInJcIlxufTtcbnZhciBlZGdlQXR0cnMgPSBbXCJsYWJlbHBvc1wiXTtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBuZXcgZ3JhcGggZnJvbSB0aGUgaW5wdXQgZ3JhcGgsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBsYXlvdXQuXG4gKiBUaGlzIHByb2Nlc3MgY29waWVzIG9ubHkgd2hpdGVsaXN0ZWQgYXR0cmlidXRlcyBmcm9tIHRoZSBpbnB1dCBncmFwaCB0byB0aGVcbiAqIGxheW91dCBncmFwaC4gVGh1cyB0aGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5b3V0R3JhcGgoaW5wdXRHcmFwaCkge1xuICB2YXIgZyA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUsIGNvbXBvdW5kOiB0cnVlIH0pO1xuICB2YXIgZ3JhcGggPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ncmFwaCgpKTtcblxuICBnLnNldEdyYXBoKF8ubWVyZ2Uoe30sXG4gICAgZ3JhcGhEZWZhdWx0cyxcbiAgICBzZWxlY3ROdW1iZXJBdHRycyhncmFwaCwgZ3JhcGhOdW1BdHRycyksXG4gICAgXy5waWNrKGdyYXBoLCBncmFwaEF0dHJzKSkpO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLm5vZGUodikpO1xuICAgIGcuc2V0Tm9kZSh2LCBfLmRlZmF1bHRzKHNlbGVjdE51bWJlckF0dHJzKG5vZGUsIG5vZGVOdW1BdHRycyksIG5vZGVEZWZhdWx0cykpO1xuICAgIGcuc2V0UGFyZW50KHYsIGlucHV0R3JhcGgucGFyZW50KHYpKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZWRnZShlKSk7XG4gICAgZy5zZXRFZGdlKGUsIF8ubWVyZ2Uoe30sXG4gICAgICBlZGdlRGVmYXVsdHMsXG4gICAgICBzZWxlY3ROdW1iZXJBdHRycyhlZGdlLCBlZGdlTnVtQXR0cnMpLFxuICAgICAgXy5waWNrKGVkZ2UsIGVkZ2VBdHRycykpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGc7XG59XG5cbi8qXG4gKiBUaGlzIGlkZWEgY29tZXMgZnJvbSB0aGUgR2Fuc25lciBwYXBlcjogdG8gYWNjb3VudCBmb3IgZWRnZSBsYWJlbHMgaW4gb3VyXG4gKiBsYXlvdXQgd2Ugc3BsaXQgZWFjaCByYW5rIGluIGhhbGYgYnkgZG91YmxpbmcgbWlubGVuIGFuZCBoYWx2aW5nIHJhbmtzZXAuXG4gKiBUaGVuIHdlIGNhbiBwbGFjZSBsYWJlbHMgYXQgdGhlc2UgbWlkLXBvaW50cyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFdlIGFsc28gYWRkIHNvbWUgbWluaW1hbCBwYWRkaW5nIHRvIHRoZSB3aWR0aCB0byBwdXNoIHRoZSBsYWJlbCBmb3IgdGhlIGVkZ2VcbiAqIGF3YXkgZnJvbSB0aGUgZWRnZSBpdHNlbGYgYSBiaXQuXG4gKi9cbmZ1bmN0aW9uIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZykge1xuICB2YXIgZ3JhcGggPSBnLmdyYXBoKCk7XG4gIGdyYXBoLnJhbmtzZXAgLz0gMjtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGVkZ2UubWlubGVuICo9IDI7XG4gICAgaWYgKGVkZ2UubGFiZWxwb3MudG9Mb3dlckNhc2UoKSAhPT0gXCJjXCIpIHtcbiAgICAgIGlmIChncmFwaC5yYW5rZGlyID09PSBcIlRCXCIgfHwgZ3JhcGgucmFua2RpciA9PT0gXCJCVFwiKSB7XG4gICAgICAgIGVkZ2Uud2lkdGggKz0gZWRnZS5sYWJlbG9mZnNldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkZ2UuaGVpZ2h0ICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLypcbiAqIENyZWF0ZXMgdGVtcG9yYXJ5IGR1bW15IG5vZGVzIHRoYXQgY2FwdHVyZSB0aGUgcmFuayBpbiB3aGljaCBlYWNoIGVkZ2Unc1xuICogbGFiZWwgaXMgZ29pbmcgdG8sIGlmIGl0IGhhcyBvbmUgb2Ygbm9uLXplcm8gd2lkdGggYW5kIGhlaWdodC4gV2UgZG8gdGhpc1xuICogc28gdGhhdCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBlbXB0eSByYW5rcyB3aGlsZSBwcmVzZXJ2aW5nIGJhbGFuY2UgZm9yIHRoZVxuICogbGFiZWwncyBwb3NpdGlvbi5cbiAqL1xuZnVuY3Rpb24gaW5qZWN0RWRnZUxhYmVsUHJveGllcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoZWRnZS53aWR0aCAmJiBlZGdlLmhlaWdodCkge1xuICAgICAgdmFyIHYgPSBnLm5vZGUoZS52KTtcbiAgICAgIHZhciB3ID0gZy5ub2RlKGUudyk7XG4gICAgICB2YXIgbGFiZWwgPSB7IHJhbms6ICh3LnJhbmsgLSB2LnJhbmspIC8gMiArIHYucmFuaywgZTogZSB9O1xuICAgICAgdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlLXByb3h5XCIsIGxhYmVsLCBcIl9lcFwiKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25SYW5rTWluTWF4KGcpIHtcbiAgdmFyIG1heFJhbmsgPSAwO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuYm9yZGVyVG9wKSB7XG4gICAgICBub2RlLm1pblJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApLnJhbms7XG4gICAgICBub2RlLm1heFJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pLnJhbms7XG4gICAgICBtYXhSYW5rID0gXy5tYXgobWF4UmFuaywgbm9kZS5tYXhSYW5rKTtcbiAgICB9XG4gIH0pO1xuICBnLmdyYXBoKCkubWF4UmFuayA9IG1heFJhbms7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09IFwiZWRnZS1wcm94eVwiKSB7XG4gICAgICBnLmVkZ2Uobm9kZS5lKS5sYWJlbFJhbmsgPSBub2RlLnJhbms7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlR3JhcGgoZykge1xuICB2YXIgbWluWCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1heFggPSAwO1xuICB2YXIgbWluWSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1heFkgPSAwO1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgdmFyIG1hcmdpblggPSBncmFwaExhYmVsLm1hcmdpbnggfHwgMDtcbiAgdmFyIG1hcmdpblkgPSBncmFwaExhYmVsLm1hcmdpbnkgfHwgMDtcblxuICBmdW5jdGlvbiBnZXRFeHRyZW1lcyhhdHRycykge1xuICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgICB2YXIgaCA9IGF0dHJzLmhlaWdodDtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCAtIHcgLyAyKTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCArIHcgLyAyKTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSAtIGggLyAyKTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeSArIGggLyAyKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgZ2V0RXh0cmVtZXMoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7XG4gICAgICBnZXRFeHRyZW1lcyhlZGdlKTtcbiAgICB9XG4gIH0pO1xuXG4gIG1pblggLT0gbWFyZ2luWDtcbiAgbWluWSAtPSBtYXJnaW5ZO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBub2RlLnggLT0gbWluWDtcbiAgICBub2RlLnkgLT0gbWluWTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIF8uZm9yRWFjaChlZGdlLnBvaW50cywgZnVuY3Rpb24ocCkge1xuICAgICAgcC54IC09IG1pblg7XG4gICAgICBwLnkgLT0gbWluWTtcbiAgICB9KTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7IGVkZ2UueCAtPSBtaW5YOyB9XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkgeyBlZGdlLnkgLT0gbWluWTsgfVxuICB9KTtcblxuICBncmFwaExhYmVsLndpZHRoID0gbWF4WCAtIG1pblggKyBtYXJnaW5YO1xuICBncmFwaExhYmVsLmhlaWdodCA9IG1heFkgLSBtaW5ZICsgbWFyZ2luWTtcbn1cblxuZnVuY3Rpb24gYXNzaWduTm9kZUludGVyc2VjdHMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIG5vZGVWID0gZy5ub2RlKGUudik7XG4gICAgdmFyIG5vZGVXID0gZy5ub2RlKGUudyk7XG4gICAgdmFyIHAxLCBwMjtcbiAgICBpZiAoIWVkZ2UucG9pbnRzKSB7XG4gICAgICBlZGdlLnBvaW50cyA9IFtdO1xuICAgICAgcDEgPSBub2RlVztcbiAgICAgIHAyID0gbm9kZVY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAxID0gZWRnZS5wb2ludHNbMF07XG4gICAgICBwMiA9IGVkZ2UucG9pbnRzW2VkZ2UucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBlZGdlLnBvaW50cy51bnNoaWZ0KHV0aWwuaW50ZXJzZWN0UmVjdChub2RlViwgcDEpKTtcbiAgICBlZGdlLnBvaW50cy5wdXNoKHV0aWwuaW50ZXJzZWN0UmVjdChub2RlVywgcDIpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIGlmIChlZGdlLmxhYmVscG9zID09PSBcImxcIiB8fCBlZGdlLmxhYmVscG9zID09PSBcInJcIikge1xuICAgICAgICBlZGdlLndpZHRoIC09IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKGVkZ2UubGFiZWxwb3MpIHtcbiAgICAgIGNhc2UgXCJsXCI6IGVkZ2UueCAtPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZWRnZS54ICs9IGVkZ2Uud2lkdGggLyAyICsgZWRnZS5sYWJlbG9mZnNldDsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2UucmV2ZXJzZWQpIHtcbiAgICAgIGVkZ2UucG9pbnRzLnJldmVyc2UoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVCb3JkZXJOb2RlcyhnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoZy5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgdmFyIHQgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApO1xuICAgICAgdmFyIGIgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pO1xuICAgICAgdmFyIGwgPSBnLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyTGVmdCkpO1xuICAgICAgdmFyIHIgPSBnLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyUmlnaHQpKTtcblxuICAgICAgbm9kZS53aWR0aCA9IE1hdGguYWJzKHIueCAtIGwueCk7XG4gICAgICBub2RlLmhlaWdodCA9IE1hdGguYWJzKGIueSAtIHQueSk7XG4gICAgICBub2RlLnggPSBsLnggKyBub2RlLndpZHRoIC8gMjtcbiAgICAgIG5vZGUueSA9IHQueSArIG5vZGUuaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoZy5ub2RlKHYpLmR1bW15ID09PSBcImJvcmRlclwiKSB7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU2VsZkVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGlmIChlLnYgPT09IGUudykge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUoZS52KTtcbiAgICAgIGlmICghbm9kZS5zZWxmRWRnZXMpIHtcbiAgICAgICAgbm9kZS5zZWxmRWRnZXMgPSBbXTtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2VsZkVkZ2VzLnB1c2goeyBlOiBlLCBsYWJlbDogZy5lZGdlKGUpIH0pO1xuICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydFNlbGZFZGdlcyhnKSB7XG4gIHZhciBsYXllcnMgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIF8uZm9yRWFjaChsYXllcnMsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgdmFyIG9yZGVyU2hpZnQgPSAwO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgICBub2RlLm9yZGVyID0gaSArIG9yZGVyU2hpZnQ7XG4gICAgICBfLmZvckVhY2gobm9kZS5zZWxmRWRnZXMsIGZ1bmN0aW9uKHNlbGZFZGdlKSB7XG4gICAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwic2VsZmVkZ2VcIiwge1xuICAgICAgICAgIHdpZHRoOiBzZWxmRWRnZS5sYWJlbC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHNlbGZFZGdlLmxhYmVsLmhlaWdodCxcbiAgICAgICAgICByYW5rOiBub2RlLnJhbmssXG4gICAgICAgICAgb3JkZXI6IGkgKyAoKytvcmRlclNoaWZ0KSxcbiAgICAgICAgICBlOiBzZWxmRWRnZS5lLFxuICAgICAgICAgIGxhYmVsOiBzZWxmRWRnZS5sYWJlbFxuICAgICAgICB9LCBcIl9zZVwiKTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIG5vZGUuc2VsZkVkZ2VzO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25TZWxmRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09IFwic2VsZmVkZ2VcIikge1xuICAgICAgdmFyIHNlbGZOb2RlID0gZy5ub2RlKG5vZGUuZS52KTtcbiAgICAgIHZhciB4ID0gc2VsZk5vZGUueCArIHNlbGZOb2RlLndpZHRoIC8gMjtcbiAgICAgIHZhciB5ID0gc2VsZk5vZGUueTtcbiAgICAgIHZhciBkeCA9IG5vZGUueCAtIHg7XG4gICAgICB2YXIgZHkgPSBzZWxmTm9kZS5oZWlnaHQgLyAyO1xuICAgICAgZy5zZXRFZGdlKG5vZGUuZSwgbm9kZS5sYWJlbCk7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBub2RlLmxhYmVsLnBvaW50cyA9IFtcbiAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSAtIGR5IH0sXG4gICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyAgICAgZHggICAgLCB5OiB5IH0sXG4gICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgKyBkeSB9LFxuICAgICAgICB7IHg6IHggKyAyICogZHggLyAzLCB5OiB5ICsgZHkgfVxuICAgICAgXTtcbiAgICAgIG5vZGUubGFiZWwueCA9IG5vZGUueDtcbiAgICAgIG5vZGUubGFiZWwueSA9IG5vZGUueTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZWxlY3ROdW1iZXJBdHRycyhvYmosIGF0dHJzKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyhfLnBpY2sob2JqLCBhdHRycyksIE51bWJlcik7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShhdHRycykge1xuICB2YXIgbmV3QXR0cnMgPSB7fTtcbiAgXy5mb3JFYWNoKGF0dHJzLCBmdW5jdGlvbih2LCBrKSB7XG4gICAgbmV3QXR0cnNbay50b0xvd2VyQ2FzZSgpXSA9IHY7XG4gIH0pO1xuICByZXR1cm4gbmV3QXR0cnM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVidWdPcmRlcmluZzogZGVidWdPcmRlcmluZ1xufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGRlYnVnT3JkZXJpbmcoZykge1xuICB2YXIgbGF5ZXJNYXRyaXggPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG5cbiAgdmFyIGggPSBuZXcgR3JhcGgoeyBjb21wb3VuZDogdHJ1ZSwgbXVsdGlncmFwaDogdHJ1ZSB9KS5zZXRHcmFwaCh7fSk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGguc2V0Tm9kZSh2LCB7IGxhYmVsOiB2IH0pO1xuICAgIGguc2V0UGFyZW50KHYsIFwibGF5ZXJcIiArIGcubm9kZSh2KS5yYW5rKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGguc2V0RWRnZShlLnYsIGUudywge30sIGUubmFtZSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChsYXllck1hdHJpeCwgZnVuY3Rpb24obGF5ZXIsIGkpIHtcbiAgICB2YXIgbGF5ZXJWID0gXCJsYXllclwiICsgaTtcbiAgICBoLnNldE5vZGUobGF5ZXJWLCB7IHJhbms6IFwic2FtZVwiIH0pO1xuICAgIF8ucmVkdWNlKGxheWVyLCBmdW5jdGlvbih1LCB2KSB7XG4gICAgICBoLnNldEVkZ2UodSwgdiwgeyBzdHlsZTogXCJpbnZpc1wiIH0pO1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBoO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBcIjAuOC42LXByZVwiO1xuIiwiLypcbkNvcHlyaWdodCAoYykgMjAxMi0yMDE0IENocmlzIFBldHRpdHRcblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuVEhFIFNPRlRXQVJFLlxuKi9cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdyYXBobGliOiByZXF1aXJlKFwiLi9saWIvZ3JhcGhsaWJcIiksXG5cbiAgbGF5b3V0OiByZXF1aXJlKFwiLi9saWIvbGF5b3V0XCIpLFxuICBkZWJ1ZzogcmVxdWlyZShcIi4vbGliL2RlYnVnXCIpLFxuICB1dGlsOiB7XG4gICAgdGltZTogcmVxdWlyZShcIi4vbGliL3V0aWxcIikudGltZSxcbiAgICBub3RpbWU6IHJlcXVpcmUoXCIuL2xpYi91dGlsXCIpLm5vdGltZVxuICB9LFxuICB2ZXJzaW9uOiByZXF1aXJlKFwiLi9saWIvdmVyc2lvblwiKVxufTtcbiIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImRhZ3JlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImRhZ3JlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImN5dG9zY2FwZURhZ3JlXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiZGFncmVcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImN5dG9zY2FwZURhZ3JlXCJdID0gZmFjdG9yeShyb290W1wiZGFncmVcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNF9fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGltcGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpOyAvLyByZWdpc3RlcnMgdGhlIGV4dGVuc2lvbiBvbiBhIGN5dG9zY2FwZSBsaWIgcmVmXG5cblxudmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIoY3l0b3NjYXBlKSB7XG4gIGlmICghY3l0b3NjYXBlKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGNhbid0IHJlZ2lzdGVyIGlmIGN5dG9zY2FwZSB1bnNwZWNpZmllZFxuXG5cbiAgY3l0b3NjYXBlKCdsYXlvdXQnLCAnZGFncmUnLCBpbXBsKTsgLy8gcmVnaXN0ZXIgd2l0aCBjeXRvc2NhcGUuanNcbn07XG5cbmlmICh0eXBlb2YgY3l0b3NjYXBlICE9PSAndW5kZWZpbmVkJykge1xuICAvLyBleHBvc2UgdG8gZ2xvYmFsIGN5dG9zY2FwZSAoaS5lLiB3aW5kb3cuY3l0b3NjYXBlKVxuICByZWdpc3RlcihjeXRvc2NhcGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZ2lzdGVyO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24obykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09ICdmdW5jdGlvbic7XG59O1xuXG52YXIgZGVmYXVsdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFyIGRhZ3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsgLy8gY29uc3RydWN0b3Jcbi8vIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuXG5cbmZ1bmN0aW9uIERhZ3JlTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0aW9ucyk7XG59IC8vIHJ1bnMgdGhlIGxheW91dFxuXG5cbkRhZ3JlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgbGF5b3V0ID0gdGhpcztcbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuXG4gIHZhciBlbGVzID0gb3B0aW9ucy5lbGVzO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwoZWxlLCB2YWwpIHtcbiAgICByZXR1cm4gaXNGdW5jdGlvbih2YWwpID8gdmFsLmFwcGx5KGVsZSwgW2VsZV0pIDogdmFsO1xuICB9O1xuXG4gIHZhciBiYiA9IG9wdGlvbnMuYm91bmRpbmdCb3ggfHwge1xuICAgIHgxOiAwLFxuICAgIHkxOiAwLFxuICAgIHc6IGN5LndpZHRoKCksXG4gICAgaDogY3kuaGVpZ2h0KClcbiAgfTtcblxuICBpZiAoYmIueDIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLngyID0gYmIueDEgKyBiYi53O1xuICB9XG5cbiAgaWYgKGJiLncgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICB9XG5cbiAgaWYgKGJiLnkyID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi55MiA9IGJiLnkxICsgYmIuaDtcbiAgfVxuXG4gIGlmIChiYi5oID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgfVxuXG4gIHZhciBnID0gbmV3IGRhZ3JlLmdyYXBobGliLkdyYXBoKHtcbiAgICBtdWx0aWdyYXBoOiB0cnVlLFxuICAgIGNvbXBvdW5kOiB0cnVlXG4gIH0pO1xuICB2YXIgZ09iaiA9IHt9O1xuXG4gIHZhciBzZXRHT2JqID0gZnVuY3Rpb24gc2V0R09iaihuYW1lLCB2YWwpIHtcbiAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgIGdPYmpbbmFtZV0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIHNldEdPYmooJ25vZGVzZXAnLCBvcHRpb25zLm5vZGVTZXApO1xuICBzZXRHT2JqKCdlZGdlc2VwJywgb3B0aW9ucy5lZGdlU2VwKTtcbiAgc2V0R09iaigncmFua3NlcCcsIG9wdGlvbnMucmFua1NlcCk7XG4gIHNldEdPYmooJ3JhbmtkaXInLCBvcHRpb25zLnJhbmtEaXIpO1xuICBzZXRHT2JqKCdyYW5rZXInLCBvcHRpb25zLnJhbmtlcik7XG4gIGcuc2V0R3JhcGgoZ09iaik7XG4gIGcuc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcbiAgZy5zZXREZWZhdWx0Tm9kZUxhYmVsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH0pOyAvLyBhZGQgbm9kZXMgdG8gZGFncmVcblxuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgdmFyIG5iYiA9IG5vZGUubGF5b3V0RGltZW5zaW9ucyhvcHRpb25zKTtcbiAgICBnLnNldE5vZGUobm9kZS5pZCgpLCB7XG4gICAgICB3aWR0aDogbmJiLncsXG4gICAgICBoZWlnaHQ6IG5iYi5oLFxuICAgICAgbmFtZTogbm9kZS5pZCgpXG4gICAgfSk7IC8vIGNvbnNvbGUubG9nKCBnLm5vZGUobm9kZS5pZCgpKSApO1xuICB9IC8vIHNldCBjb21wb3VuZCBwYXJlbnRzXG5cblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9kZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIF9ub2RlID0gbm9kZXNbX2ldO1xuXG4gICAgaWYgKF9ub2RlLmlzQ2hpbGQoKSkge1xuICAgICAgZy5zZXRQYXJlbnQoX25vZGUuaWQoKSwgX25vZGUucGFyZW50KCkuaWQoKSk7XG4gICAgfVxuICB9IC8vIGFkZCBlZGdlcyB0byBkYWdyZVxuXG5cbiAgdmFyIGVkZ2VzID0gZWxlcy5lZGdlcygpLnN0ZEZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAhZWRnZS5zb3VyY2UoKS5pc1BhcmVudCgpICYmICFlZGdlLnRhcmdldCgpLmlzUGFyZW50KCk7IC8vIGRhZ3JlIGNhbid0IGhhbmRsZSBlZGdlcyBvbiBjb21wb3VuZCBub2Rlc1xuICB9KTtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBlZGdlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIGVkZ2UgPSBlZGdlc1tfaTJdO1xuICAgIGcuc2V0RWRnZShlZGdlLnNvdXJjZSgpLmlkKCksIGVkZ2UudGFyZ2V0KCkuaWQoKSwge1xuICAgICAgbWlubGVuOiBnZXRWYWwoZWRnZSwgb3B0aW9ucy5taW5MZW4pLFxuICAgICAgd2VpZ2h0OiBnZXRWYWwoZWRnZSwgb3B0aW9ucy5lZGdlV2VpZ2h0KSxcbiAgICAgIG5hbWU6IGVkZ2UuaWQoKVxuICAgIH0sIGVkZ2UuaWQoKSk7IC8vIGNvbnNvbGUubG9nKCBnLmVkZ2UoZWRnZS5zb3VyY2UoKS5pZCgpLCBlZGdlLnRhcmdldCgpLmlkKCksIGVkZ2UuaWQoKSkgKTtcbiAgfVxuXG4gIGRhZ3JlLmxheW91dChnKTtcbiAgdmFyIGdOb2RlSWRzID0gZy5ub2RlcygpO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGdOb2RlSWRzLmxlbmd0aDsgX2kzKyspIHtcbiAgICB2YXIgaWQgPSBnTm9kZUlkc1tfaTNdO1xuICAgIHZhciBuID0gZy5ub2RlKGlkKTtcbiAgICBjeS5nZXRFbGVtZW50QnlJZChpZCkuc2NyYXRjaCgpLmRhZ3JlID0gbjtcbiAgfVxuXG4gIHZhciBkYWdyZUJCO1xuXG4gIGlmIChvcHRpb25zLmJvdW5kaW5nQm94KSB7XG4gICAgZGFncmVCQiA9IHtcbiAgICAgIHgxOiBJbmZpbml0eSxcbiAgICAgIHgyOiAtSW5maW5pdHksXG4gICAgICB5MTogSW5maW5pdHksXG4gICAgICB5MjogLUluZmluaXR5XG4gICAgfTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgZE1vZGVsID0gbm9kZS5zY3JhdGNoKCkuZGFncmU7XG4gICAgICBkYWdyZUJCLngxID0gTWF0aC5taW4oZGFncmVCQi54MSwgZE1vZGVsLngpO1xuICAgICAgZGFncmVCQi54MiA9IE1hdGgubWF4KGRhZ3JlQkIueDIsIGRNb2RlbC54KTtcbiAgICAgIGRhZ3JlQkIueTEgPSBNYXRoLm1pbihkYWdyZUJCLnkxLCBkTW9kZWwueSk7XG4gICAgICBkYWdyZUJCLnkyID0gTWF0aC5tYXgoZGFncmVCQi55MiwgZE1vZGVsLnkpO1xuICAgIH0pO1xuICAgIGRhZ3JlQkIudyA9IGRhZ3JlQkIueDIgLSBkYWdyZUJCLngxO1xuICAgIGRhZ3JlQkIuaCA9IGRhZ3JlQkIueTIgLSBkYWdyZUJCLnkxO1xuICB9IGVsc2Uge1xuICAgIGRhZ3JlQkIgPSBiYjtcbiAgfVxuXG4gIHZhciBjb25zdHJhaW5Qb3MgPSBmdW5jdGlvbiBjb25zdHJhaW5Qb3MocCkge1xuICAgIGlmIChvcHRpb25zLmJvdW5kaW5nQm94KSB7XG4gICAgICB2YXIgeFBjdCA9IGRhZ3JlQkIudyA9PT0gMCA/IDAgOiAocC54IC0gZGFncmVCQi54MSkgLyBkYWdyZUJCLnc7XG4gICAgICB2YXIgeVBjdCA9IGRhZ3JlQkIuaCA9PT0gMCA/IDAgOiAocC55IC0gZGFncmVCQi55MSkgLyBkYWdyZUJCLmg7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHhQY3QgKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHlQY3QgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG5cbiAgbm9kZXMubGF5b3V0UG9zaXRpb25zKGxheW91dCwgb3B0aW9ucywgZnVuY3Rpb24gKGVsZSkge1xuICAgIGVsZSA9IF90eXBlb2YoZWxlKSA9PT0gXCJvYmplY3RcIiA/IGVsZSA6IHRoaXM7XG4gICAgdmFyIGRNb2RlbCA9IGVsZS5zY3JhdGNoKCkuZGFncmU7XG4gICAgcmV0dXJuIGNvbnN0cmFpblBvcyh7XG4gICAgICB4OiBkTW9kZWwueCxcbiAgICAgIHk6IGRNb2RlbC55XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGFncmVMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgZGVmYXVsdHMgPSB7XG4gIC8vIGRhZ3JlIGFsZ28gb3B0aW9ucywgdXNlcyBkZWZhdWx0IHZhbHVlIG9uIHVuZGVmaW5lZFxuICBub2RlU2VwOiB1bmRlZmluZWQsXG4gIC8vIHRoZSBzZXBhcmF0aW9uIGJldHdlZW4gYWRqYWNlbnQgbm9kZXMgaW4gdGhlIHNhbWUgcmFua1xuICBlZGdlU2VwOiB1bmRlZmluZWQsXG4gIC8vIHRoZSBzZXBhcmF0aW9uIGJldHdlZW4gYWRqYWNlbnQgZWRnZXMgaW4gdGhlIHNhbWUgcmFua1xuICByYW5rU2VwOiB1bmRlZmluZWQsXG4gIC8vIHRoZSBzZXBhcmF0aW9uIGJldHdlZW4gYWRqYWNlbnQgbm9kZXMgaW4gdGhlIHNhbWUgcmFua1xuICByYW5rRGlyOiB1bmRlZmluZWQsXG4gIC8vICdUQicgZm9yIHRvcCB0byBib3R0b20gZmxvdywgJ0xSJyBmb3IgbGVmdCB0byByaWdodCxcbiAgcmFua2VyOiB1bmRlZmluZWQsXG4gIC8vIFR5cGUgb2YgYWxnb3JpdGhtIHRvIGFzc2lnbnMgYSByYW5rIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGguXG4gIC8vIFBvc3NpYmxlIHZhbHVlczogbmV0d29yay1zaW1wbGV4LCB0aWdodC10cmVlIG9yIGxvbmdlc3QtcGF0aFxuICBtaW5MZW46IGZ1bmN0aW9uIG1pbkxlbihlZGdlKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0sXG4gIC8vIG51bWJlciBvZiByYW5rcyB0byBrZWVwIGJldHdlZW4gdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IG9mIHRoZSBlZGdlXG4gIGVkZ2VXZWlnaHQ6IGZ1bmN0aW9uIGVkZ2VXZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICAvLyBoaWdoZXIgd2VpZ2h0IGVkZ2VzIGFyZSBnZW5lcmFsbHkgbWFkZSBzaG9ydGVyIGFuZCBzdHJhaWdodGVyIHRoYW4gbG93ZXIgd2VpZ2h0IGVkZ2VzXG4gIC8vIGdlbmVyYWwgbGF5b3V0IG9wdGlvbnNcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0byB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gZml0IHBhZGRpbmdcbiAgc3BhY2luZ0ZhY3RvcjogdW5kZWZpbmVkLFxuICAvLyBBcHBsaWVzIGEgbXVsdGlwbGljYXRpdmUgZmFjdG9yICg+MCkgdG8gZXhwYW5kIG9yIGNvbXByZXNzIHRoZSBvdmVyYWxsIGFyZWEgdGhhdCB0aGUgbm9kZXMgdGFrZSB1cFxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyB3aGV0aGVyIGxhYmVscyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGV0ZXJtaW5pbmcgdGhlIHNwYWNlIHVzZWQgYnkgYSBub2RlXG4gIGFuaW1hdGU6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIHRyYW5zaXRpb24gdGhlIG5vZGUgcG9zaXRpb25zXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyB3aGV0aGVyIHRvIGFuaW1hdGUgc3BlY2lmaWMgbm9kZXMgd2hlbiBhbmltYXRpb24gaXMgb247IG5vbi1hbmltYXRlZCBub2RlcyBpbW1lZGlhdGVseSBnbyB0byB0aGVpciBmaW5hbCBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zKSB7XG4gICAgcmV0dXJuIHBvcztcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgYSB0cmFuc2Zvcm0gdG8gdGhlIGZpbmFsIG5vZGUgcG9zaXRpb25cbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sXG4gIC8vIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7fSAvLyBvbiBsYXlvdXRzdG9wXG5cbn07XG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3JjcyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3Jjc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBzcmNzLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgcmV0dXJuIHRndFtrXSA9IHNyY1trXTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB0Z3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIi8vIGh0dHBzOi8vZDNqcy5vcmcvZDMtcXVhZHRyZWUvIHYyLjAuMCBDb3B5cmlnaHQgMjAyMCBNaWtlIEJvc3RvY2tcbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG50eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcbnR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBmYWN0b3J5KGdsb2JhbC5kMyA9IGdsb2JhbC5kMyB8fCB7fSkpO1xufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIHRyZWVfYWRkKGQpIHtcbiAgY29uc3QgeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCksXG4gICAgICB5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKTtcbiAgcmV0dXJuIGFkZCh0aGlzLmNvdmVyKHgsIHkpLCB4LCB5LCBkKTtcbn1cblxuZnVuY3Rpb24gYWRkKHRyZWUsIHgsIHksIGQpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gdHJlZTsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0cmVlLl9yb290LFxuICAgICAgbGVhZiA9IHtkYXRhOiBkfSxcbiAgICAgIHgwID0gdHJlZS5feDAsXG4gICAgICB5MCA9IHRyZWUuX3kwLFxuICAgICAgeDEgPSB0cmVlLl94MSxcbiAgICAgIHkxID0gdHJlZS5feTEsXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgeHAsXG4gICAgICB5cCxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0cmVlLl9yb290ID0gbGVhZiwgdHJlZTtcblxuICAvLyBGaW5kIHRoZSBleGlzdGluZyBsZWFmIGZvciB0aGUgbmV3IHBvaW50LCBvciBhZGQgaXQuXG4gIHdoaWxlIChub2RlLmxlbmd0aCkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmIChwYXJlbnQgPSBub2RlLCAhKG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xuICB9XG5cbiAgLy8gSXMgdGhlIG5ldyBwb2ludCBpcyBleGFjdGx5IGNvaW5jaWRlbnQgd2l0aCB0aGUgZXhpc3RpbmcgcG9pbnQ/XG4gIHhwID0gK3RyZWUuX3guY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICB5cCA9ICt0cmVlLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKTtcbiAgaWYgKHggPT09IHhwICYmIHkgPT09IHlwKSByZXR1cm4gbGVhZi5uZXh0ID0gbm9kZSwgcGFyZW50ID8gcGFyZW50W2ldID0gbGVhZiA6IHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIE90aGVyd2lzZSwgc3BsaXQgdGhlIGxlYWYgbm9kZSB1bnRpbCB0aGUgb2xkIGFuZCBuZXcgcG9pbnQgYXJlIHNlcGFyYXRlZC5cbiAgZG8ge1xuICAgIHBhcmVudCA9IHBhcmVudCA/IHBhcmVudFtpXSA9IG5ldyBBcnJheSg0KSA6IHRyZWUuX3Jvb3QgPSBuZXcgQXJyYXkoNCk7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gIH0gd2hpbGUgKChpID0gYm90dG9tIDw8IDEgfCByaWdodCkgPT09IChqID0gKHlwID49IHltKSA8PCAxIHwgKHhwID49IHhtKSkpO1xuICByZXR1cm4gcGFyZW50W2pdID0gbm9kZSwgcGFyZW50W2ldID0gbGVhZiwgdHJlZTtcbn1cblxuZnVuY3Rpb24gYWRkQWxsKGRhdGEpIHtcbiAgdmFyIGQsIGksIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeHogPSBuZXcgQXJyYXkobiksXG4gICAgICB5eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHgwID0gSW5maW5pdHksXG4gICAgICB5MCA9IEluZmluaXR5LFxuICAgICAgeDEgPSAtSW5maW5pdHksXG4gICAgICB5MSA9IC1JbmZpbml0eTtcblxuICAvLyBDb21wdXRlIHRoZSBwb2ludHMgYW5kIHRoZWlyIGV4dGVudC5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkID0gZGF0YVtpXSkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgY29udGludWU7XG4gICAgeHpbaV0gPSB4O1xuICAgIHl6W2ldID0geTtcbiAgICBpZiAoeCA8IHgwKSB4MCA9IHg7XG4gICAgaWYgKHggPiB4MSkgeDEgPSB4O1xuICAgIGlmICh5IDwgeTApIHkwID0geTtcbiAgICBpZiAoeSA+IHkxKSB5MSA9IHk7XG4gIH1cblxuICAvLyBJZiB0aGVyZSB3ZXJlIG5vICh2YWxpZCkgcG9pbnRzLCBhYm9ydC5cbiAgaWYgKHgwID4geDEgfHwgeTAgPiB5MSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRXhwYW5kIHRoZSB0cmVlIHRvIGNvdmVyIHRoZSBuZXcgcG9pbnRzLlxuICB0aGlzLmNvdmVyKHgwLCB5MCkuY292ZXIoeDEsIHkxKTtcblxuICAvLyBBZGQgdGhlIG5ldyBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBhZGQodGhpcywgeHpbaV0sIHl6W2ldLCBkYXRhW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmVlX2NvdmVyKHgsIHkpIHtcbiAgaWYgKGlzTmFOKHggPSAreCkgfHwgaXNOYU4oeSA9ICt5KSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxID0gdGhpcy5feDEsXG4gICAgICB5MSA9IHRoaXMuX3kxO1xuXG4gIC8vIElmIHRoZSBxdWFkdHJlZSBoYXMgbm8gZXh0ZW50LCBpbml0aWFsaXplIHRoZW0uXG4gIC8vIEludGVnZXIgZXh0ZW50IGFyZSBuZWNlc3Nhcnkgc28gdGhhdCBpZiB3ZSBsYXRlciBkb3VibGUgdGhlIGV4dGVudCxcbiAgLy8gdGhlIGV4aXN0aW5nIHF1YWRyYW50IGJvdW5kYXJpZXMgZG9u4oCZdCBjaGFuZ2UgZHVlIHRvIGZsb2F0aW5nIHBvaW50IGVycm9yIVxuICBpZiAoaXNOYU4oeDApKSB7XG4gICAgeDEgPSAoeDAgPSBNYXRoLmZsb29yKHgpKSArIDE7XG4gICAgeTEgPSAoeTAgPSBNYXRoLmZsb29yKHkpKSArIDE7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIGRvdWJsZSByZXBlYXRlZGx5IHRvIGNvdmVyLlxuICBlbHNlIHtcbiAgICB2YXIgeiA9IHgxIC0geDAgfHwgMSxcbiAgICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgaTtcblxuICAgIHdoaWxlICh4MCA+IHggfHwgeCA+PSB4MSB8fCB5MCA+IHkgfHwgeSA+PSB5MSkge1xuICAgICAgaSA9ICh5IDwgeTApIDw8IDEgfCAoeCA8IHgwKTtcbiAgICAgIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudCwgeiAqPSAyO1xuICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgIGNhc2UgMDogeDEgPSB4MCArIHosIHkxID0geTAgKyB6OyBicmVhaztcbiAgICAgICAgY2FzZSAxOiB4MCA9IHgxIC0geiwgeTEgPSB5MCArIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDI6IHgxID0geDAgKyB6LCB5MCA9IHkxIC0gejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogeDAgPSB4MSAtIHosIHkwID0geTEgLSB6OyBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcm9vdCAmJiB0aGlzLl9yb290Lmxlbmd0aCkgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICB0aGlzLl94MCA9IHgwO1xuICB0aGlzLl95MCA9IHkwO1xuICB0aGlzLl94MSA9IHgxO1xuICB0aGlzLl95MSA9IHkxO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdHJlZV9kYXRhKCkge1xuICB2YXIgZGF0YSA9IFtdO1xuICB0aGlzLnZpc2l0KGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBkbyBkYXRhLnB1c2gobm9kZS5kYXRhKTsgd2hpbGUgKG5vZGUgPSBub2RlLm5leHQpXG4gIH0pO1xuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gdHJlZV9leHRlbnQoXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmNvdmVyKCtfWzBdWzBdLCArX1swXVsxXSkuY292ZXIoK19bMV1bMF0sICtfWzFdWzFdKVxuICAgICAgOiBpc05hTih0aGlzLl94MCkgPyB1bmRlZmluZWQgOiBbW3RoaXMuX3gwLCB0aGlzLl95MF0sIFt0aGlzLl94MSwgdGhpcy5feTFdXTtcbn1cblxuZnVuY3Rpb24gUXVhZChub2RlLCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLm5vZGUgPSBub2RlO1xuICB0aGlzLngwID0geDA7XG4gIHRoaXMueTAgPSB5MDtcbiAgdGhpcy54MSA9IHgxO1xuICB0aGlzLnkxID0geTE7XG59XG5cbmZ1bmN0aW9uIHRyZWVfZmluZCh4LCB5LCByYWRpdXMpIHtcbiAgdmFyIGRhdGEsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxLFxuICAgICAgeTEsXG4gICAgICB4MixcbiAgICAgIHkyLFxuICAgICAgeDMgPSB0aGlzLl94MSxcbiAgICAgIHkzID0gdGhpcy5feTEsXG4gICAgICBxdWFkcyA9IFtdLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBxLFxuICAgICAgaTtcblxuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB4MCwgeTAsIHgzLCB5MykpO1xuICBpZiAocmFkaXVzID09IG51bGwpIHJhZGl1cyA9IEluZmluaXR5O1xuICBlbHNlIHtcbiAgICB4MCA9IHggLSByYWRpdXMsIHkwID0geSAtIHJhZGl1cztcbiAgICB4MyA9IHggKyByYWRpdXMsIHkzID0geSArIHJhZGl1cztcbiAgICByYWRpdXMgKj0gcmFkaXVzO1xuICB9XG5cbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuXG4gICAgLy8gU3RvcCBzZWFyY2hpbmcgaWYgdGhpcyBxdWFkcmFudCBjYW7igJl0IGNvbnRhaW4gYSBjbG9zZXIgbm9kZS5cbiAgICBpZiAoIShub2RlID0gcS5ub2RlKVxuICAgICAgICB8fCAoeDEgPSBxLngwKSA+IHgzXG4gICAgICAgIHx8ICh5MSA9IHEueTApID4geTNcbiAgICAgICAgfHwgKHgyID0gcS54MSkgPCB4MFxuICAgICAgICB8fCAoeTIgPSBxLnkxKSA8IHkwKSBjb250aW51ZTtcblxuICAgIC8vIEJpc2VjdCB0aGUgY3VycmVudCBxdWFkcmFudC5cbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MSArIHgyKSAvIDIsXG4gICAgICAgICAgeW0gPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgICBxdWFkcy5wdXNoKFxuICAgICAgICBuZXcgUXVhZChub2RlWzNdLCB4bSwgeW0sIHgyLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMl0sIHgxLCB5bSwgeG0sIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsxXSwgeG0sIHkxLCB4MiwgeW0pLFxuICAgICAgICBuZXcgUXVhZChub2RlWzBdLCB4MSwgeTEsIHhtLCB5bSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFZpc2l0IHRoZSBjbG9zZXN0IHF1YWRyYW50IGZpcnN0LlxuICAgICAgaWYgKGkgPSAoeSA+PSB5bSkgPDwgMSB8ICh4ID49IHhtKSkge1xuICAgICAgICBxID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV0gPSBxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZpc2l0IHRoaXMgcG9pbnQuIChWaXNpdGluZyBjb2luY2lkZW50IHBvaW50cyBpc27igJl0IG5lY2Vzc2FyeSEpXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZHggPSB4IC0gK3RoaXMuX3guY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGR5ID0geSAtICt0aGlzLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgaWYgKGQyIDwgcmFkaXVzKSB7XG4gICAgICAgIHZhciBkID0gTWF0aC5zcXJ0KHJhZGl1cyA9IGQyKTtcbiAgICAgICAgeDAgPSB4IC0gZCwgeTAgPSB5IC0gZDtcbiAgICAgICAgeDMgPSB4ICsgZCwgeTMgPSB5ICsgZDtcbiAgICAgICAgZGF0YSA9IG5vZGUuZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gdHJlZV9yZW1vdmUoZCkge1xuICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciBwYXJlbnQsXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHJldGFpbmVyLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBuZXh0LFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeG0sXG4gICAgICB5bSxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0aGlzO1xuXG4gIC8vIEZpbmQgdGhlIGxlYWYgbm9kZSBmb3IgdGhlIHBvaW50LlxuICAvLyBXaGlsZSBkZXNjZW5kaW5nLCBhbHNvIHJldGFpbiB0aGUgZGVlcGVzdCBwYXJlbnQgd2l0aCBhIG5vbi1yZW1vdmVkIHNpYmxpbmcuXG4gIGlmIChub2RlLmxlbmd0aCkgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgICBpZiAoIShwYXJlbnQgPSBub2RlLCBub2RlID0gbm9kZVtpID0gYm90dG9tIDw8IDEgfCByaWdodF0pKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBicmVhaztcbiAgICBpZiAocGFyZW50WyhpICsgMSkgJiAzXSB8fCBwYXJlbnRbKGkgKyAyKSAmIDNdIHx8IHBhcmVudFsoaSArIDMpICYgM10pIHJldGFpbmVyID0gcGFyZW50LCBqID0gaTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIHBvaW50IHRvIHJlbW92ZS5cbiAgd2hpbGUgKG5vZGUuZGF0YSAhPT0gZCkgaWYgKCEocHJldmlvdXMgPSBub2RlLCBub2RlID0gbm9kZS5uZXh0KSkgcmV0dXJuIHRoaXM7XG4gIGlmIChuZXh0ID0gbm9kZS5uZXh0KSBkZWxldGUgbm9kZS5uZXh0O1xuXG4gIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb2luY2lkZW50IHBvaW50cywgcmVtb3ZlIGp1c3QgdGhlIHBvaW50LlxuICBpZiAocHJldmlvdXMpIHJldHVybiAobmV4dCA/IHByZXZpb3VzLm5leHQgPSBuZXh0IDogZGVsZXRlIHByZXZpb3VzLm5leHQpLCB0aGlzO1xuXG4gIC8vIElmIHRoaXMgaXMgdGhlIHJvb3QgcG9pbnQsIHJlbW92ZSBpdC5cbiAgaWYgKCFwYXJlbnQpIHJldHVybiB0aGlzLl9yb290ID0gbmV4dCwgdGhpcztcblxuICAvLyBSZW1vdmUgdGhpcyBsZWFmLlxuICBuZXh0ID8gcGFyZW50W2ldID0gbmV4dCA6IGRlbGV0ZSBwYXJlbnRbaV07XG5cbiAgLy8gSWYgdGhlIHBhcmVudCBub3cgY29udGFpbnMgZXhhY3RseSBvbmUgbGVhZiwgY29sbGFwc2Ugc3VwZXJmbHVvdXMgcGFyZW50cy5cbiAgaWYgKChub2RlID0gcGFyZW50WzBdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzNdKVxuICAgICAgJiYgbm9kZSA9PT0gKHBhcmVudFszXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFswXSlcbiAgICAgICYmICFub2RlLmxlbmd0aCkge1xuICAgIGlmIChyZXRhaW5lcikgcmV0YWluZXJbal0gPSBub2RlO1xuICAgIGVsc2UgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQWxsKGRhdGEpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBkYXRhLmxlbmd0aDsgaSA8IG47ICsraSkgdGhpcy5yZW1vdmUoZGF0YVtpXSk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmVlX3Jvb3QoKSB7XG4gIHJldHVybiB0aGlzLl9yb290O1xufVxuXG5mdW5jdGlvbiB0cmVlX3NpemUoKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gKytzaXplOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBzaXplO1xufVxuXG5mdW5jdGlvbiB0cmVlX3Zpc2l0KGNhbGxiYWNrKSB7XG4gIHZhciBxdWFkcyA9IFtdLCBxLCBub2RlID0gdGhpcy5fcm9vdCwgY2hpbGQsIHgwLCB5MCwgeDEsIHkxO1xuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSkpO1xuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG4gICAgaWYgKCFjYWxsYmFjayhub2RlID0gcS5ub2RlLCB4MCA9IHEueDAsIHkwID0gcS55MCwgeDEgPSBxLngxLCB5MSA9IHEueTEpICYmIG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgeG0gPSAoeDAgKyB4MSkgLyAyLCB5bSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzNdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeW0sIHgxLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsyXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHltLCB4bSwgeTEpKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMV0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5MCwgeDEsIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzBdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeTAsIHhtLCB5bSkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdHJlZV92aXNpdEFmdGVyKGNhbGxiYWNrKSB7XG4gIHZhciBxdWFkcyA9IFtdLCBuZXh0ID0gW10sIHE7XG4gIGlmICh0aGlzLl9yb290KSBxdWFkcy5wdXNoKG5ldyBRdWFkKHRoaXMuX3Jvb3QsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICB2YXIgbm9kZSA9IHEubm9kZTtcbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCwgeDAgPSBxLngwLCB5MCA9IHEueTAsIHgxID0gcS54MSwgeTEgPSBxLnkxLCB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzFdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeTAsIHgxLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsyXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHltLCB4bSwgeTEpKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgfVxuICAgIG5leHQucHVzaChxKTtcbiAgfVxuICB3aGlsZSAocSA9IG5leHQucG9wKCkpIHtcbiAgICBjYWxsYmFjayhxLm5vZGUsIHEueDAsIHEueTAsIHEueDEsIHEueTEpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0WChkKSB7XG4gIHJldHVybiBkWzBdO1xufVxuXG5mdW5jdGlvbiB0cmVlX3goXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl94ID0gXywgdGhpcykgOiB0aGlzLl94O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0WShkKSB7XG4gIHJldHVybiBkWzFdO1xufVxuXG5mdW5jdGlvbiB0cmVlX3koXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95ID0gXywgdGhpcykgOiB0aGlzLl95O1xufVxuXG5mdW5jdGlvbiBxdWFkdHJlZShub2RlcywgeCwgeSkge1xuICB2YXIgdHJlZSA9IG5ldyBRdWFkdHJlZSh4ID09IG51bGwgPyBkZWZhdWx0WCA6IHgsIHkgPT0gbnVsbCA/IGRlZmF1bHRZIDogeSwgTmFOLCBOYU4sIE5hTiwgTmFOKTtcbiAgcmV0dXJuIG5vZGVzID09IG51bGwgPyB0cmVlIDogdHJlZS5hZGRBbGwobm9kZXMpO1xufVxuXG5mdW5jdGlvbiBRdWFkdHJlZSh4LCB5LCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLl94ID0geDtcbiAgdGhpcy5feSA9IHk7XG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHRoaXMuX3Jvb3QgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGxlYWZfY29weShsZWFmKSB7XG4gIHZhciBjb3B5ID0ge2RhdGE6IGxlYWYuZGF0YX0sIG5leHQgPSBjb3B5O1xuICB3aGlsZSAobGVhZiA9IGxlYWYubmV4dCkgbmV4dCA9IG5leHQubmV4dCA9IHtkYXRhOiBsZWFmLmRhdGF9O1xuICByZXR1cm4gY29weTtcbn1cblxudmFyIHRyZWVQcm90byA9IHF1YWR0cmVlLnByb3RvdHlwZSA9IFF1YWR0cmVlLnByb3RvdHlwZTtcblxudHJlZVByb3RvLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcHkgPSBuZXcgUXVhZHRyZWUodGhpcy5feCwgdGhpcy5feSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBub2RlcyxcbiAgICAgIGNoaWxkO1xuXG4gIGlmICghbm9kZSkgcmV0dXJuIGNvcHk7XG5cbiAgaWYgKCFub2RlLmxlbmd0aCkgcmV0dXJuIGNvcHkuX3Jvb3QgPSBsZWFmX2NvcHkobm9kZSksIGNvcHk7XG5cbiAgbm9kZXMgPSBbe3NvdXJjZTogbm9kZSwgdGFyZ2V0OiBjb3B5Ll9yb290ID0gbmV3IEFycmF5KDQpfV07XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKGNoaWxkID0gbm9kZS5zb3VyY2VbaV0pIHtcbiAgICAgICAgaWYgKGNoaWxkLmxlbmd0aCkgbm9kZXMucHVzaCh7c291cmNlOiBjaGlsZCwgdGFyZ2V0OiBub2RlLnRhcmdldFtpXSA9IG5ldyBBcnJheSg0KX0pO1xuICAgICAgICBlbHNlIG5vZGUudGFyZ2V0W2ldID0gbGVhZl9jb3B5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbnRyZWVQcm90by5hZGQgPSB0cmVlX2FkZDtcbnRyZWVQcm90by5hZGRBbGwgPSBhZGRBbGw7XG50cmVlUHJvdG8uY292ZXIgPSB0cmVlX2NvdmVyO1xudHJlZVByb3RvLmRhdGEgPSB0cmVlX2RhdGE7XG50cmVlUHJvdG8uZXh0ZW50ID0gdHJlZV9leHRlbnQ7XG50cmVlUHJvdG8uZmluZCA9IHRyZWVfZmluZDtcbnRyZWVQcm90by5yZW1vdmUgPSB0cmVlX3JlbW92ZTtcbnRyZWVQcm90by5yZW1vdmVBbGwgPSByZW1vdmVBbGw7XG50cmVlUHJvdG8ucm9vdCA9IHRyZWVfcm9vdDtcbnRyZWVQcm90by5zaXplID0gdHJlZV9zaXplO1xudHJlZVByb3RvLnZpc2l0ID0gdHJlZV92aXNpdDtcbnRyZWVQcm90by52aXNpdEFmdGVyID0gdHJlZV92aXNpdEFmdGVyO1xudHJlZVByb3RvLnggPSB0cmVlX3g7XG50cmVlUHJvdG8ueSA9IHRyZWVfeTtcblxuZXhwb3J0cy5xdWFkdHJlZSA9IHF1YWR0cmVlO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG59KSk7XG4iLCIvLyBodHRwczovL2QzanMub3JnL2QzLWRpc3BhdGNoLyB2Mi4wLjAgQ29weXJpZ2h0IDIwMjAgTWlrZSBCb3N0b2NrXG4oZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xudHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG50eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpIDpcbihnbG9iYWwgPSBnbG9iYWwgfHwgc2VsZiwgZmFjdG9yeShnbG9iYWwuZDMgPSBnbG9iYWwuZDMgfHwge30pKTtcbn0odGhpcywgZnVuY3Rpb24gKGV4cG9ydHMpIHsgJ3VzZSBzdHJpY3QnO1xuXG52YXIgbm9vcCA9IHt2YWx1ZTogKCkgPT4ge319O1xuXG5mdW5jdGlvbiBkaXNwYXRjaCgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBfID0ge30sIHQ7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoISh0ID0gYXJndW1lbnRzW2ldICsgXCJcIikgfHwgKHQgaW4gXykgfHwgL1tcXHMuXS8udGVzdCh0KSkgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCB0eXBlOiBcIiArIHQpO1xuICAgIF9bdF0gPSBbXTtcbiAgfVxuICByZXR1cm4gbmV3IERpc3BhdGNoKF8pO1xufVxuXG5mdW5jdGlvbiBEaXNwYXRjaChfKSB7XG4gIHRoaXMuXyA9IF87XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcywgdHlwZXMpIHtcbiAgcmV0dXJuIHR5cGVuYW1lcy50cmltKCkuc3BsaXQoL158XFxzKy8pLm1hcChmdW5jdGlvbih0KSB7XG4gICAgdmFyIG5hbWUgPSBcIlwiLCBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSBuYW1lID0gdC5zbGljZShpICsgMSksIHQgPSB0LnNsaWNlKDAsIGkpO1xuICAgIGlmICh0ICYmICF0eXBlcy5oYXNPd25Qcm9wZXJ0eSh0KSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHQpO1xuICAgIHJldHVybiB7dHlwZTogdCwgbmFtZTogbmFtZX07XG4gIH0pO1xufVxuXG5EaXNwYXRjaC5wcm90b3R5cGUgPSBkaXNwYXRjaC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBEaXNwYXRjaCxcbiAgb246IGZ1bmN0aW9uKHR5cGVuYW1lLCBjYWxsYmFjaykge1xuICAgIHZhciBfID0gdGhpcy5fLFxuICAgICAgICBUID0gcGFyc2VUeXBlbmFtZXModHlwZW5hbWUgKyBcIlwiLCBfKSxcbiAgICAgICAgdCxcbiAgICAgICAgaSA9IC0xLFxuICAgICAgICBuID0gVC5sZW5ndGg7XG5cbiAgICAvLyBJZiBubyBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZXR1cm4gdGhlIGNhbGxiYWNrIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCBuYW1lLlxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgd2hpbGUgKCsraSA8IG4pIGlmICgodCA9ICh0eXBlbmFtZSA9IFRbaV0pLnR5cGUpICYmICh0ID0gZ2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUpKSkgcmV0dXJuIHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYSB0eXBlIHdhcyBzcGVjaWZpZWQsIHNldCB0aGUgY2FsbGJhY2sgZm9yIHRoZSBnaXZlbiB0eXBlIGFuZCBuYW1lLlxuICAgIC8vIE90aGVyd2lzZSwgaWYgYSBudWxsIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJlbW92ZSBjYWxsYmFja3Mgb2YgdGhlIGdpdmVuIG5hbWUuXG4gICAgaWYgKGNhbGxiYWNrICE9IG51bGwgJiYgdHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgY2FsbGJhY2s6IFwiICsgY2FsbGJhY2spO1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAodCA9ICh0eXBlbmFtZSA9IFRbaV0pLnR5cGUpIF9bdF0gPSBzZXQoX1t0XSwgdHlwZW5hbWUubmFtZSwgY2FsbGJhY2spO1xuICAgICAgZWxzZSBpZiAoY2FsbGJhY2sgPT0gbnVsbCkgZm9yICh0IGluIF8pIF9bdF0gPSBzZXQoX1t0XSwgdHlwZW5hbWUubmFtZSwgbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGNvcHk6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjb3B5ID0ge30sIF8gPSB0aGlzLl87XG4gICAgZm9yICh2YXIgdCBpbiBfKSBjb3B5W3RdID0gX1t0XS5zbGljZSgpO1xuICAgIHJldHVybiBuZXcgRGlzcGF0Y2goY29weSk7XG4gIH0sXG4gIGNhbGw6IGZ1bmN0aW9uKHR5cGUsIHRoYXQpIHtcbiAgICBpZiAoKG4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMikgPiAwKSBmb3IgKHZhciBhcmdzID0gbmV3IEFycmF5KG4pLCBpID0gMCwgbiwgdDsgaSA8IG47ICsraSkgYXJnc1tpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgaWYgKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodHlwZSkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICBmb3IgKHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH0sXG4gIGFwcGx5OiBmdW5jdGlvbih0eXBlLCB0aGF0LCBhcmdzKSB7XG4gICAgaWYgKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodHlwZSkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICBmb3IgKHZhciB0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXQodHlwZSwgbmFtZSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGUubGVuZ3RoLCBjOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKChjID0gdHlwZVtpXSkubmFtZSA9PT0gbmFtZSkge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldCh0eXBlLCBuYW1lLCBjYWxsYmFjaykge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGUubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKHR5cGVbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgdHlwZVtpXSA9IG5vb3AsIHR5cGUgPSB0eXBlLnNsaWNlKDAsIGkpLmNvbmNhdCh0eXBlLnNsaWNlKGkgKyAxKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHR5cGUucHVzaCh7bmFtZTogbmFtZSwgdmFsdWU6IGNhbGxiYWNrfSk7XG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnRzLmRpc3BhdGNoID0gZGlzcGF0Y2g7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiIsIi8vIGh0dHBzOi8vZDNqcy5vcmcvZDMtdGltZXIvIHYyLjAuMCBDb3B5cmlnaHQgMjAyMCBNaWtlIEJvc3RvY2tcbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG50eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcbnR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBmYWN0b3J5KGdsb2JhbC5kMyA9IGdsb2JhbC5kMyB8fCB7fSkpO1xufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbnZhciBmcmFtZSA9IDAsIC8vIGlzIGFuIGFuaW1hdGlvbiBmcmFtZSBwZW5kaW5nP1xuICAgIHRpbWVvdXQgPSAwLCAvLyBpcyBhIHRpbWVvdXQgcGVuZGluZz9cbiAgICBpbnRlcnZhbCA9IDAsIC8vIGFyZSBhbnkgdGltZXJzIGFjdGl2ZT9cbiAgICBwb2tlRGVsYXkgPSAxMDAwLCAvLyBob3cgZnJlcXVlbnRseSB3ZSBjaGVjayBmb3IgY2xvY2sgc2tld1xuICAgIHRhc2tIZWFkLFxuICAgIHRhc2tUYWlsLFxuICAgIGNsb2NrTGFzdCA9IDAsXG4gICAgY2xvY2tOb3cgPSAwLFxuICAgIGNsb2NrU2tldyA9IDAsXG4gICAgY2xvY2sgPSB0eXBlb2YgcGVyZm9ybWFuY2UgPT09IFwib2JqZWN0XCIgJiYgcGVyZm9ybWFuY2Uubm93ID8gcGVyZm9ybWFuY2UgOiBEYXRlLFxuICAgIHNldEZyYW1lID0gdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdykgOiBmdW5jdGlvbihmKSB7IHNldFRpbWVvdXQoZiwgMTcpOyB9O1xuXG5mdW5jdGlvbiBub3coKSB7XG4gIHJldHVybiBjbG9ja05vdyB8fCAoc2V0RnJhbWUoY2xlYXJOb3cpLCBjbG9ja05vdyA9IGNsb2NrLm5vdygpICsgY2xvY2tTa2V3KTtcbn1cblxuZnVuY3Rpb24gY2xlYXJOb3coKSB7XG4gIGNsb2NrTm93ID0gMDtcbn1cblxuZnVuY3Rpb24gVGltZXIoKSB7XG4gIHRoaXMuX2NhbGwgPVxuICB0aGlzLl90aW1lID1cbiAgdGhpcy5fbmV4dCA9IG51bGw7XG59XG5cblRpbWVyLnByb3RvdHlwZSA9IHRpbWVyLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRpbWVyLFxuICByZXN0YXJ0OiBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvblwiKTtcbiAgICB0aW1lID0gKHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWUpICsgKGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5KTtcbiAgICBpZiAoIXRoaXMuX25leHQgJiYgdGFza1RhaWwgIT09IHRoaXMpIHtcbiAgICAgIGlmICh0YXNrVGFpbCkgdGFza1RhaWwuX25leHQgPSB0aGlzO1xuICAgICAgZWxzZSB0YXNrSGVhZCA9IHRoaXM7XG4gICAgICB0YXNrVGFpbCA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuX2NhbGwgPSBjYWxsYmFjaztcbiAgICB0aGlzLl90aW1lID0gdGltZTtcbiAgICBzbGVlcCgpO1xuICB9LFxuICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fY2FsbCkge1xuICAgICAgdGhpcy5fY2FsbCA9IG51bGw7XG4gICAgICB0aGlzLl90aW1lID0gSW5maW5pdHk7XG4gICAgICBzbGVlcCgpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gdGltZXIoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIHRpbWVyRmx1c2goKSB7XG4gIG5vdygpOyAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSwgaWYgbm90IGFscmVhZHkgc2V0LlxuICArK2ZyYW1lOyAvLyBQcmV0ZW5kIHdl4oCZdmUgc2V0IGFuIGFsYXJtLCBpZiB3ZSBoYXZlbuKAmXQgYWxyZWFkeS5cbiAgdmFyIHQgPSB0YXNrSGVhZCwgZTtcbiAgd2hpbGUgKHQpIHtcbiAgICBpZiAoKGUgPSBjbG9ja05vdyAtIHQuX3RpbWUpID49IDApIHQuX2NhbGwuY2FsbChudWxsLCBlKTtcbiAgICB0ID0gdC5fbmV4dDtcbiAgfVxuICAtLWZyYW1lO1xufVxuXG5mdW5jdGlvbiB3YWtlKCkge1xuICBjbG9ja05vdyA9IChjbG9ja0xhc3QgPSBjbG9jay5ub3coKSkgKyBjbG9ja1NrZXc7XG4gIGZyYW1lID0gdGltZW91dCA9IDA7XG4gIHRyeSB7XG4gICAgdGltZXJGbHVzaCgpO1xuICB9IGZpbmFsbHkge1xuICAgIGZyYW1lID0gMDtcbiAgICBuYXAoKTtcbiAgICBjbG9ja05vdyA9IDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9rZSgpIHtcbiAgdmFyIG5vdyA9IGNsb2NrLm5vdygpLCBkZWxheSA9IG5vdyAtIGNsb2NrTGFzdDtcbiAgaWYgKGRlbGF5ID4gcG9rZURlbGF5KSBjbG9ja1NrZXcgLT0gZGVsYXksIGNsb2NrTGFzdCA9IG5vdztcbn1cblxuZnVuY3Rpb24gbmFwKCkge1xuICB2YXIgdDAsIHQxID0gdGFza0hlYWQsIHQyLCB0aW1lID0gSW5maW5pdHk7XG4gIHdoaWxlICh0MSkge1xuICAgIGlmICh0MS5fY2FsbCkge1xuICAgICAgaWYgKHRpbWUgPiB0MS5fdGltZSkgdGltZSA9IHQxLl90aW1lO1xuICAgICAgdDAgPSB0MSwgdDEgPSB0MS5fbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdDIgPSB0MS5fbmV4dCwgdDEuX25leHQgPSBudWxsO1xuICAgICAgdDEgPSB0MCA/IHQwLl9uZXh0ID0gdDIgOiB0YXNrSGVhZCA9IHQyO1xuICAgIH1cbiAgfVxuICB0YXNrVGFpbCA9IHQwO1xuICBzbGVlcCh0aW1lKTtcbn1cblxuZnVuY3Rpb24gc2xlZXAodGltZSkge1xuICBpZiAoZnJhbWUpIHJldHVybjsgLy8gU29vbmVzdCBhbGFybSBhbHJlYWR5IHNldCwgb3Igd2lsbCBiZS5cbiAgaWYgKHRpbWVvdXQpIHRpbWVvdXQgPSBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIHZhciBkZWxheSA9IHRpbWUgLSBjbG9ja05vdzsgLy8gU3RyaWN0bHkgbGVzcyB0aGFuIGlmIHdlIHJlY29tcHV0ZWQgY2xvY2tOb3cuXG4gIGlmIChkZWxheSA+IDI0KSB7XG4gICAgaWYgKHRpbWUgPCBJbmZpbml0eSkgdGltZW91dCA9IHNldFRpbWVvdXQod2FrZSwgdGltZSAtIGNsb2NrLm5vdygpIC0gY2xvY2tTa2V3KTtcbiAgICBpZiAoaW50ZXJ2YWwpIGludGVydmFsID0gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFpbnRlcnZhbCkgY2xvY2tMYXN0ID0gY2xvY2subm93KCksIGludGVydmFsID0gc2V0SW50ZXJ2YWwocG9rZSwgcG9rZURlbGF5KTtcbiAgICBmcmFtZSA9IDEsIHNldEZyYW1lKHdha2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRpbWVvdXQkMShjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIGRlbGF5ID0gZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXk7XG4gIHQucmVzdGFydChlbGFwc2VkID0+IHtcbiAgICB0LnN0b3AoKTtcbiAgICBjYWxsYmFjayhlbGFwc2VkICsgZGVsYXkpO1xuICB9LCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiBpbnRlcnZhbCQxKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lciwgdG90YWwgPSBkZWxheTtcbiAgaWYgKGRlbGF5ID09IG51bGwpIHJldHVybiB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSwgdDtcbiAgdC5fcmVzdGFydCA9IHQucmVzdGFydDtcbiAgdC5yZXN0YXJ0ID0gZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gICAgZGVsYXkgPSArZGVsYXksIHRpbWUgPSB0aW1lID09IG51bGwgPyBub3coKSA6ICt0aW1lO1xuICAgIHQuX3Jlc3RhcnQoZnVuY3Rpb24gdGljayhlbGFwc2VkKSB7XG4gICAgICBlbGFwc2VkICs9IHRvdGFsO1xuICAgICAgdC5fcmVzdGFydCh0aWNrLCB0b3RhbCArPSBkZWxheSwgdGltZSk7XG4gICAgICBjYWxsYmFjayhlbGFwc2VkKTtcbiAgICB9LCBkZWxheSwgdGltZSk7XG4gIH07XG4gIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0cy5pbnRlcnZhbCA9IGludGVydmFsJDE7XG5leHBvcnRzLm5vdyA9IG5vdztcbmV4cG9ydHMudGltZW91dCA9IHRpbWVvdXQkMTtcbmV4cG9ydHMudGltZXIgPSB0aW1lcjtcbmV4cG9ydHMudGltZXJGbHVzaCA9IHRpbWVyRmx1c2g7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiIsIi8vIGh0dHBzOi8vZDNqcy5vcmcvZDMtZm9yY2UvIHYyLjEuMSBDb3B5cmlnaHQgMjAyMCBNaWtlIEJvc3RvY2tcbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG50eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMsIHJlcXVpcmUoJ2QzLXF1YWR0cmVlJyksIHJlcXVpcmUoJ2QzLWRpc3BhdGNoJyksIHJlcXVpcmUoJ2QzLXRpbWVyJykpIDpcbnR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnLCAnZDMtcXVhZHRyZWUnLCAnZDMtZGlzcGF0Y2gnLCAnZDMtdGltZXInXSwgZmFjdG9yeSkgOlxuKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBmYWN0b3J5KGdsb2JhbC5kMyA9IGdsb2JhbC5kMyB8fCB7fSwgZ2xvYmFsLmQzLCBnbG9iYWwuZDMsIGdsb2JhbC5kMykpO1xufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cywgZDNRdWFkdHJlZSwgZDNEaXNwYXRjaCwgZDNUaW1lcikgeyAndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNlbnRlcih4LCB5KSB7XG4gIHZhciBub2Rlcywgc3RyZW5ndGggPSAxO1xuXG4gIGlmICh4ID09IG51bGwpIHggPSAwO1xuICBpZiAoeSA9PSBudWxsKSB5ID0gMDtcblxuICBmdW5jdGlvbiBmb3JjZSgpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgbm9kZSxcbiAgICAgICAgc3ggPSAwLFxuICAgICAgICBzeSA9IDA7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIHN4ICs9IG5vZGUueCwgc3kgKz0gbm9kZS55O1xuICAgIH1cblxuICAgIGZvciAoc3ggPSAoc3ggLyBuIC0geCkgKiBzdHJlbmd0aCwgc3kgPSAoc3kgLyBuIC0geSkgKiBzdHJlbmd0aCwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS54IC09IHN4LCBub2RlLnkgLT0gc3k7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF87XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gK18sIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgZm9yY2UueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gK18sIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSArXywgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG5mdW5jdGlvbiBjb25zdGFudCh4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gamlnZ2xlKHJhbmRvbSkge1xuICByZXR1cm4gKHJhbmRvbSgpIC0gMC41KSAqIDFlLTY7XG59XG5cbmZ1bmN0aW9uIHgoZCkge1xuICByZXR1cm4gZC54ICsgZC52eDtcbn1cblxuZnVuY3Rpb24geShkKSB7XG4gIHJldHVybiBkLnkgKyBkLnZ5O1xufVxuXG5mdW5jdGlvbiBjb2xsaWRlKHJhZGl1cykge1xuICB2YXIgbm9kZXMsXG4gICAgICByYWRpaSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIHN0cmVuZ3RoID0gMSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KHJhZGl1cyA9PSBudWxsID8gMSA6ICtyYWRpdXMpO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICB0cmVlLFxuICAgICAgICBub2RlLFxuICAgICAgICB4aSxcbiAgICAgICAgeWksXG4gICAgICAgIHJpLFxuICAgICAgICByaTI7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgdHJlZSA9IGQzUXVhZHRyZWUucXVhZHRyZWUobm9kZXMsIHgsIHkpLnZpc2l0QWZ0ZXIocHJlcGFyZSk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgcmkgPSByYWRpaVtub2RlLmluZGV4XSwgcmkyID0gcmkgKiByaTtcbiAgICAgICAgeGkgPSBub2RlLnggKyBub2RlLnZ4O1xuICAgICAgICB5aSA9IG5vZGUueSArIG5vZGUudnk7XG4gICAgICAgIHRyZWUudmlzaXQoYXBwbHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5KHF1YWQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgICB2YXIgZGF0YSA9IHF1YWQuZGF0YSwgcmogPSBxdWFkLnIsIHIgPSByaSArIHJqO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEuaW5kZXggPiBub2RlLmluZGV4KSB7XG4gICAgICAgICAgdmFyIHggPSB4aSAtIGRhdGEueCAtIGRhdGEudngsXG4gICAgICAgICAgICAgIHkgPSB5aSAtIGRhdGEueSAtIGRhdGEudnksXG4gICAgICAgICAgICAgIGwgPSB4ICogeCArIHkgKiB5O1xuICAgICAgICAgIGlmIChsIDwgciAqIHIpIHtcbiAgICAgICAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICAgICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgICAgICAgbCA9IChyIC0gKGwgPSBNYXRoLnNxcnQobCkpKSAvIGwgKiBzdHJlbmd0aDtcbiAgICAgICAgICAgIG5vZGUudnggKz0gKHggKj0gbCkgKiAociA9IChyaiAqPSByaikgLyAocmkyICsgcmopKTtcbiAgICAgICAgICAgIG5vZGUudnkgKz0gKHkgKj0gbCkgKiByO1xuICAgICAgICAgICAgZGF0YS52eCAtPSB4ICogKHIgPSAxIC0gcik7XG4gICAgICAgICAgICBkYXRhLnZ5IC09IHkgKiByO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4geDAgPiB4aSArIHIgfHwgeDEgPCB4aSAtIHIgfHwgeTAgPiB5aSArIHIgfHwgeTEgPCB5aSAtIHI7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJlcGFyZShxdWFkKSB7XG4gICAgaWYgKHF1YWQuZGF0YSkgcmV0dXJuIHF1YWQuciA9IHJhZGlpW3F1YWQuZGF0YS5pbmRleF07XG4gICAgZm9yICh2YXIgaSA9IHF1YWQuciA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgIGlmIChxdWFkW2ldICYmIHF1YWRbaV0uciA+IHF1YWQucikge1xuICAgICAgICBxdWFkLnIgPSBxdWFkW2ldLnI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7XG4gICAgcmFkaWkgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCByYWRpaVtub2RlLmluZGV4XSA9ICtyYWRpdXMobm9kZSwgaSwgbm9kZXMpO1xuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLml0ZXJhdGlvbnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaXRlcmF0aW9ucyA9ICtfLCBmb3JjZSkgOiBpdGVyYXRpb25zO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gK18sIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiByYWRpdXM7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG5mdW5jdGlvbiBpbmRleChkKSB7XG4gIHJldHVybiBkLmluZGV4O1xufVxuXG5mdW5jdGlvbiBmaW5kKG5vZGVCeUlkLCBub2RlSWQpIHtcbiAgdmFyIG5vZGUgPSBub2RlQnlJZC5nZXQobm9kZUlkKTtcbiAgaWYgKCFub2RlKSB0aHJvdyBuZXcgRXJyb3IoXCJub2RlIG5vdCBmb3VuZDogXCIgKyBub2RlSWQpO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gbGluayhsaW5rcykge1xuICB2YXIgaWQgPSBpbmRleCxcbiAgICAgIHN0cmVuZ3RoID0gZGVmYXVsdFN0cmVuZ3RoLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgZGlzdGFuY2UgPSBjb25zdGFudCgzMCksXG4gICAgICBkaXN0YW5jZXMsXG4gICAgICBub2RlcyxcbiAgICAgIGNvdW50LFxuICAgICAgYmlhcyxcbiAgICAgIHJhbmRvbSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmIChsaW5rcyA9PSBudWxsKSBsaW5rcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGRlZmF1bHRTdHJlbmd0aChsaW5rKSB7XG4gICAgcmV0dXJuIDEgLyBNYXRoLm1pbihjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0sIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGsgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGluaywgc291cmNlLCB0YXJnZXQsIHgsIHksIGwsIGI7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbGluayA9IGxpbmtzW2ldLCBzb3VyY2UgPSBsaW5rLnNvdXJjZSwgdGFyZ2V0ID0gbGluay50YXJnZXQ7XG4gICAgICAgIHggPSB0YXJnZXQueCArIHRhcmdldC52eCAtIHNvdXJjZS54IC0gc291cmNlLnZ4IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICB5ID0gdGFyZ2V0LnkgKyB0YXJnZXQudnkgLSBzb3VyY2UueSAtIHNvdXJjZS52eSB8fCBqaWdnbGUocmFuZG9tKTtcbiAgICAgICAgbCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcbiAgICAgICAgbCA9IChsIC0gZGlzdGFuY2VzW2ldKSAvIGwgKiBhbHBoYSAqIHN0cmVuZ3Roc1tpXTtcbiAgICAgICAgeCAqPSBsLCB5ICo9IGw7XG4gICAgICAgIHRhcmdldC52eCAtPSB4ICogKGIgPSBiaWFzW2ldKTtcbiAgICAgICAgdGFyZ2V0LnZ5IC09IHkgKiBiO1xuICAgICAgICBzb3VyY2UudnggKz0geCAqIChiID0gMSAtIGIpO1xuICAgICAgICBzb3VyY2UudnkgKz0geSAqIGI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgbSA9IGxpbmtzLmxlbmd0aCxcbiAgICAgICAgbm9kZUJ5SWQgPSBuZXcgTWFwKG5vZGVzLm1hcCgoZCwgaSkgPT4gW2lkKGQsIGksIG5vZGVzKSwgZF0pKSxcbiAgICAgICAgbGluaztcblxuICAgIGZvciAoaSA9IDAsIGNvdW50ID0gbmV3IEFycmF5KG4pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGxpbmsuaW5kZXggPSBpO1xuICAgICAgaWYgKHR5cGVvZiBsaW5rLnNvdXJjZSAhPT0gXCJvYmplY3RcIikgbGluay5zb3VyY2UgPSBmaW5kKG5vZGVCeUlkLCBsaW5rLnNvdXJjZSk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsudGFyZ2V0ICE9PSBcIm9iamVjdFwiKSBsaW5rLnRhcmdldCA9IGZpbmQobm9kZUJ5SWQsIGxpbmsudGFyZ2V0KTtcbiAgICAgIGNvdW50W2xpbmsuc291cmNlLmluZGV4XSA9IChjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gfHwgMCkgKyAxO1xuICAgICAgY291bnRbbGluay50YXJnZXQuaW5kZXhdID0gKGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMCwgYmlhcyA9IG5ldyBBcnJheShtKTsgaSA8IG07ICsraSkge1xuICAgICAgbGluayA9IGxpbmtzW2ldLCBiaWFzW2ldID0gY291bnRbbGluay5zb3VyY2UuaW5kZXhdIC8gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSArIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSk7XG4gICAgfVxuXG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG0pLCBpbml0aWFsaXplU3RyZW5ndGgoKTtcbiAgICBkaXN0YW5jZXMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVEaXN0YW5jZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZVN0cmVuZ3RoKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSArc3RyZW5ndGgobGlua3NbaV0sIGksIGxpbmtzKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplRGlzdGFuY2UoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGRpc3RhbmNlc1tpXSA9ICtkaXN0YW5jZShsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5saW5rcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChsaW5rcyA9IF8sIGluaXRpYWxpemUoKSwgZm9yY2UpIDogbGlua3M7XG4gIH07XG5cbiAgZm9yY2UuaWQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaWQgPSBfLCBmb3JjZSkgOiBpZDtcbiAgfTtcblxuICBmb3JjZS5pdGVyYXRpb25zID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGl0ZXJhdGlvbnMgPSArXywgZm9yY2UpIDogaXRlcmF0aW9ucztcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplU3RyZW5ndGgoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2UgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCksIGZvcmNlKSA6IGRpc3RhbmNlO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cblxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGluZWFyX2NvbmdydWVudGlhbF9nZW5lcmF0b3IjUGFyYW1ldGVyc19pbl9jb21tb25fdXNlXG5jb25zdCBhID0gMTY2NDUyNTtcbmNvbnN0IGMgPSAxMDEzOTA0MjIzO1xuY29uc3QgbSA9IDQyOTQ5NjcyOTY7IC8vIDJeMzJcblxuZnVuY3Rpb24gbGNnKCkge1xuICBsZXQgcyA9IDE7XG4gIHJldHVybiAoKSA9PiAocyA9IChhICogcyArIGMpICUgbSkgLyBtO1xufVxuXG5mdW5jdGlvbiB4JDEoZCkge1xuICByZXR1cm4gZC54O1xufVxuXG5mdW5jdGlvbiB5JDEoZCkge1xuICByZXR1cm4gZC55O1xufVxuXG52YXIgaW5pdGlhbFJhZGl1cyA9IDEwLFxuICAgIGluaXRpYWxBbmdsZSA9IE1hdGguUEkgKiAoMyAtIE1hdGguc3FydCg1KSk7XG5cbmZ1bmN0aW9uIHNpbXVsYXRpb24obm9kZXMpIHtcbiAgdmFyIHNpbXVsYXRpb24sXG4gICAgICBhbHBoYSA9IDEsXG4gICAgICBhbHBoYU1pbiA9IDAuMDAxLFxuICAgICAgYWxwaGFEZWNheSA9IDEgLSBNYXRoLnBvdyhhbHBoYU1pbiwgMSAvIDMwMCksXG4gICAgICBhbHBoYVRhcmdldCA9IDAsXG4gICAgICB2ZWxvY2l0eURlY2F5ID0gMC42LFxuICAgICAgZm9yY2VzID0gbmV3IE1hcCgpLFxuICAgICAgc3RlcHBlciA9IGQzVGltZXIudGltZXIoc3RlcCksXG4gICAgICBldmVudCA9IGQzRGlzcGF0Y2guZGlzcGF0Y2goXCJ0aWNrXCIsIFwiZW5kXCIpLFxuICAgICAgcmFuZG9tID0gbGNnKCk7XG5cbiAgaWYgKG5vZGVzID09IG51bGwpIG5vZGVzID0gW107XG5cbiAgZnVuY3Rpb24gc3RlcCgpIHtcbiAgICB0aWNrKCk7XG4gICAgZXZlbnQuY2FsbChcInRpY2tcIiwgc2ltdWxhdGlvbik7XG4gICAgaWYgKGFscGhhIDwgYWxwaGFNaW4pIHtcbiAgICAgIHN0ZXBwZXIuc3RvcCgpO1xuICAgICAgZXZlbnQuY2FsbChcImVuZFwiLCBzaW11bGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0aWNrKGl0ZXJhdGlvbnMpIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcblxuICAgIGlmIChpdGVyYXRpb25zID09PSB1bmRlZmluZWQpIGl0ZXJhdGlvbnMgPSAxO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGFscGhhICs9IChhbHBoYVRhcmdldCAtIGFscGhhKSAqIGFscGhhRGVjYXk7XG5cbiAgICAgIGZvcmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGZvcmNlKSB7XG4gICAgICAgIGZvcmNlKGFscGhhKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgaWYgKG5vZGUuZnggPT0gbnVsbCkgbm9kZS54ICs9IG5vZGUudnggKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnggPSBub2RlLmZ4LCBub2RlLnZ4ID0gMDtcbiAgICAgICAgaWYgKG5vZGUuZnkgPT0gbnVsbCkgbm9kZS55ICs9IG5vZGUudnkgKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnkgPSBub2RlLmZ5LCBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2ltdWxhdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVOb2RlcygpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLmluZGV4ID0gaTtcbiAgICAgIGlmIChub2RlLmZ4ICE9IG51bGwpIG5vZGUueCA9IG5vZGUuZng7XG4gICAgICBpZiAobm9kZS5meSAhPSBudWxsKSBub2RlLnkgPSBub2RlLmZ5O1xuICAgICAgaWYgKGlzTmFOKG5vZGUueCkgfHwgaXNOYU4obm9kZS55KSkge1xuICAgICAgICB2YXIgcmFkaXVzID0gaW5pdGlhbFJhZGl1cyAqIE1hdGguc3FydCgwLjUgKyBpKSwgYW5nbGUgPSBpICogaW5pdGlhbEFuZ2xlO1xuICAgICAgICBub2RlLnggPSByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICAgIG5vZGUueSA9IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05hTihub2RlLnZ4KSB8fCBpc05hTihub2RlLnZ5KSkge1xuICAgICAgICBub2RlLnZ4ID0gbm9kZS52eSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZvcmNlKGZvcmNlKSB7XG4gICAgaWYgKGZvcmNlLmluaXRpYWxpemUpIGZvcmNlLmluaXRpYWxpemUobm9kZXMsIHJhbmRvbSk7XG4gICAgcmV0dXJuIGZvcmNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZU5vZGVzKCk7XG5cbiAgcmV0dXJuIHNpbXVsYXRpb24gPSB7XG4gICAgdGljazogdGljayxcblxuICAgIHJlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHN0ZXBwZXIucmVzdGFydChzdGVwKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5zdG9wKCksIHNpbXVsYXRpb247XG4gICAgfSxcblxuICAgIG5vZGVzOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlcyA9IF8sIGluaXRpYWxpemVOb2RlcygpLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IG5vZGVzO1xuICAgIH0sXG5cbiAgICBhbHBoYTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGEgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYTtcbiAgICB9LFxuXG4gICAgYWxwaGFNaW46IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhTWluID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFNaW47XG4gICAgfSxcblxuICAgIGFscGhhRGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhRGVjYXkgPSArXywgc2ltdWxhdGlvbikgOiArYWxwaGFEZWNheTtcbiAgICB9LFxuXG4gICAgYWxwaGFUYXJnZXQ6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhVGFyZ2V0ID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFUYXJnZXQ7XG4gICAgfSxcblxuICAgIHZlbG9jaXR5RGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZlbG9jaXR5RGVjYXkgPSAxIC0gXywgc2ltdWxhdGlvbikgOiAxIC0gdmVsb2NpdHlEZWNheTtcbiAgICB9LFxuXG4gICAgcmFuZG9tU291cmNlOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5kb20gPSBfLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IHJhbmRvbTtcbiAgICB9LFxuXG4gICAgZm9yY2U6IGZ1bmN0aW9uKG5hbWUsIF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSA/ICgoXyA9PSBudWxsID8gZm9yY2VzLmRlbGV0ZShuYW1lKSA6IGZvcmNlcy5zZXQobmFtZSwgaW5pdGlhbGl6ZUZvcmNlKF8pKSksIHNpbXVsYXRpb24pIDogZm9yY2VzLmdldChuYW1lKTtcbiAgICB9LFxuXG4gICAgZmluZDogZnVuY3Rpb24oeCwgeSwgcmFkaXVzKSB7XG4gICAgICB2YXIgaSA9IDAsXG4gICAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBkeCxcbiAgICAgICAgICBkeSxcbiAgICAgICAgICBkMixcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIGNsb3Nlc3Q7XG5cbiAgICAgIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gICAgICBlbHNlIHJhZGl1cyAqPSByYWRpdXM7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBkeCA9IHggLSBub2RlLng7XG4gICAgICAgIGR5ID0geSAtIG5vZGUueTtcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgICAgICAgaWYgKGQyIDwgcmFkaXVzKSBjbG9zZXN0ID0gbm9kZSwgcmFkaXVzID0gZDI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9zZXN0O1xuICAgIH0sXG5cbiAgICBvbjogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKGV2ZW50Lm9uKG5hbWUsIF8pLCBzaW11bGF0aW9uKSA6IGV2ZW50Lm9uKG5hbWUpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFueUJvZHkoKSB7XG4gIHZhciBub2RlcyxcbiAgICAgIG5vZGUsXG4gICAgICByYW5kb20sXG4gICAgICBhbHBoYSxcbiAgICAgIHN0cmVuZ3RoID0gY29uc3RhbnQoLTMwKSxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIGRpc3RhbmNlTWluMiA9IDEsXG4gICAgICBkaXN0YW5jZU1heDIgPSBJbmZpbml0eSxcbiAgICAgIHRoZXRhMiA9IDAuODE7XG5cbiAgZnVuY3Rpb24gZm9yY2UoXykge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCB0cmVlID0gZDNRdWFkdHJlZS5xdWFkdHJlZShub2RlcywgeCQxLCB5JDEpLnZpc2l0QWZ0ZXIoYWNjdW11bGF0ZSk7XG4gICAgZm9yIChhbHBoYSA9IF8sIGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHRyZWUudmlzaXQoYXBwbHkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgc3RyZW5ndGhzW25vZGUuaW5kZXhdID0gK3N0cmVuZ3RoKG5vZGUsIGksIG5vZGVzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFjY3VtdWxhdGUocXVhZCkge1xuICAgIHZhciBzdHJlbmd0aCA9IDAsIHEsIGMsIHdlaWdodCA9IDAsIHgsIHksIGk7XG5cbiAgICAvLyBGb3IgaW50ZXJuYWwgbm9kZXMsIGFjY3VtdWxhdGUgZm9yY2VzIGZyb20gY2hpbGQgcXVhZHJhbnRzLlxuICAgIGlmIChxdWFkLmxlbmd0aCkge1xuICAgICAgZm9yICh4ID0geSA9IGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICAgIGlmICgocSA9IHF1YWRbaV0pICYmIChjID0gTWF0aC5hYnMocS52YWx1ZSkpKSB7XG4gICAgICAgICAgc3RyZW5ndGggKz0gcS52YWx1ZSwgd2VpZ2h0ICs9IGMsIHggKz0gYyAqIHEueCwgeSArPSBjICogcS55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWFkLnggPSB4IC8gd2VpZ2h0O1xuICAgICAgcXVhZC55ID0geSAvIHdlaWdodDtcbiAgICB9XG5cbiAgICAvLyBGb3IgbGVhZiBub2RlcywgYWNjdW11bGF0ZSBmb3JjZXMgZnJvbSBjb2luY2lkZW50IHF1YWRyYW50cy5cbiAgICBlbHNlIHtcbiAgICAgIHEgPSBxdWFkO1xuICAgICAgcS54ID0gcS5kYXRhLng7XG4gICAgICBxLnkgPSBxLmRhdGEueTtcbiAgICAgIGRvIHN0cmVuZ3RoICs9IHN0cmVuZ3Roc1txLmRhdGEuaW5kZXhdO1xuICAgICAgd2hpbGUgKHEgPSBxLm5leHQpO1xuICAgIH1cblxuICAgIHF1YWQudmFsdWUgPSBzdHJlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5KHF1YWQsIHgxLCBfLCB4Mikge1xuICAgIGlmICghcXVhZC52YWx1ZSkgcmV0dXJuIHRydWU7XG5cbiAgICB2YXIgeCA9IHF1YWQueCAtIG5vZGUueCxcbiAgICAgICAgeSA9IHF1YWQueSAtIG5vZGUueSxcbiAgICAgICAgdyA9IHgyIC0geDEsXG4gICAgICAgIGwgPSB4ICogeCArIHkgKiB5O1xuXG4gICAgLy8gQXBwbHkgdGhlIEJhcm5lcy1IdXQgYXBwcm94aW1hdGlvbiBpZiBwb3NzaWJsZS5cbiAgICAvLyBMaW1pdCBmb3JjZXMgZm9yIHZlcnkgY2xvc2Ugbm9kZXM7IHJhbmRvbWl6ZSBkaXJlY3Rpb24gaWYgY29pbmNpZGVudC5cbiAgICBpZiAodyAqIHcgLyB0aGV0YTIgPCBsKSB7XG4gICAgICBpZiAobCA8IGRpc3RhbmNlTWF4Mikge1xuICAgICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgICBpZiAobCA8IGRpc3RhbmNlTWluMikgbCA9IE1hdGguc3FydChkaXN0YW5jZU1pbjIgKiBsKTtcbiAgICAgICAgbm9kZS52eCArPSB4ICogcXVhZC52YWx1ZSAqIGFscGhhIC8gbDtcbiAgICAgICAgbm9kZS52eSArPSB5ICogcXVhZC52YWx1ZSAqIGFscGhhIC8gbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgcHJvY2VzcyBwb2ludHMgZGlyZWN0bHkuXG4gICAgZWxzZSBpZiAocXVhZC5sZW5ndGggfHwgbCA+PSBkaXN0YW5jZU1heDIpIHJldHVybjtcblxuICAgIC8vIExpbWl0IGZvcmNlcyBmb3IgdmVyeSBjbG9zZSBub2RlczsgcmFuZG9taXplIGRpcmVjdGlvbiBpZiBjb2luY2lkZW50LlxuICAgIGlmIChxdWFkLmRhdGEgIT09IG5vZGUgfHwgcXVhZC5uZXh0KSB7XG4gICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgIGlmIChsIDwgZGlzdGFuY2VNaW4yKSBsID0gTWF0aC5zcXJ0KGRpc3RhbmNlTWluMiAqIGwpO1xuICAgIH1cblxuICAgIGRvIGlmIChxdWFkLmRhdGEgIT09IG5vZGUpIHtcbiAgICAgIHcgPSBzdHJlbmd0aHNbcXVhZC5kYXRhLmluZGV4XSAqIGFscGhhIC8gbDtcbiAgICAgIG5vZGUudnggKz0geCAqIHc7XG4gICAgICBub2RlLnZ5ICs9IHkgKiB3O1xuICAgIH0gd2hpbGUgKHF1YWQgPSBxdWFkLm5leHQpO1xuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2VNaW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2VNaW4yID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydChkaXN0YW5jZU1pbjIpO1xuICB9O1xuXG4gIGZvcmNlLmRpc3RhbmNlTWF4ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRpc3RhbmNlTWF4MiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQoZGlzdGFuY2VNYXgyKTtcbiAgfTtcblxuICBmb3JjZS50aGV0YSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGV0YTIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KHRoZXRhMik7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG5mdW5jdGlvbiByYWRpYWwocmFkaXVzLCB4LCB5KSB7XG4gIHZhciBub2RlcyxcbiAgICAgIHN0cmVuZ3RoID0gY29uc3RhbnQoMC4xKSxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHJhZGl1c2VzO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KCtyYWRpdXMpO1xuICBpZiAoeCA9PSBudWxsKSB4ID0gMDtcbiAgaWYgKHkgPT0gbnVsbCkgeSA9IDA7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXSxcbiAgICAgICAgICBkeCA9IG5vZGUueCAtIHggfHwgMWUtNixcbiAgICAgICAgICBkeSA9IG5vZGUueSAtIHkgfHwgMWUtNixcbiAgICAgICAgICByID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSxcbiAgICAgICAgICBrID0gKHJhZGl1c2VzW2ldIC0gcikgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYSAvIHI7XG4gICAgICBub2RlLnZ4ICs9IGR4ICogaztcbiAgICAgIG5vZGUudnkgKz0gZHkgKiBrO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICByYWRpdXNlcyA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICByYWRpdXNlc1tpXSA9ICtyYWRpdXMobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9IGlzTmFOKHJhZGl1c2VzW2ldKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXywgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHJhZGl1cztcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSArXywgZm9yY2UpIDogeDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSArXywgZm9yY2UpIDogeTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIHgkMih4KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHh6O1xuXG4gIGlmICh0eXBlb2YgeCAhPT0gXCJmdW5jdGlvblwiKSB4ID0gY29uc3RhbnQoeCA9PSBudWxsID8gMCA6ICt4KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnggKz0gKHh6W2ldIC0gbm9kZS54KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB4eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih4eltpXSA9ICt4KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG5mdW5jdGlvbiB5JDIoeSkge1xuICB2YXIgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgbm9kZXMsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICB5ejtcblxuICBpZiAodHlwZW9mIHkgIT09IFwiZnVuY3Rpb25cIikgeSA9IGNvbnN0YW50KHkgPT0gbnVsbCA/IDAgOiAreSk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnZ5ICs9ICh5eltpXSAtIG5vZGUueSkgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgeXogPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4oeXpbaV0gPSAreShub2Rlc1tpXSwgaSwgbm9kZXMpKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cblxuZXhwb3J0cy5mb3JjZUNlbnRlciA9IGNlbnRlcjtcbmV4cG9ydHMuZm9yY2VDb2xsaWRlID0gY29sbGlkZTtcbmV4cG9ydHMuZm9yY2VMaW5rID0gbGluaztcbmV4cG9ydHMuZm9yY2VNYW55Qm9keSA9IG1hbnlCb2R5O1xuZXhwb3J0cy5mb3JjZVJhZGlhbCA9IHJhZGlhbDtcbmV4cG9ydHMuZm9yY2VTaW11bGF0aW9uID0gc2ltdWxhdGlvbjtcbmV4cG9ydHMuZm9yY2VYID0geCQyO1xuZXhwb3J0cy5mb3JjZVkgPSB5JDI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImQzLWZvcmNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImQzLWZvcmNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImN5dG9zY2FwZUQzRm9yY2VcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJkMy1mb3JjZVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlRDNGb3JjZVwiXSA9IGZhY3Rvcnkocm9vdFtcImQzLWZvcmNlXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfNF9fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMyk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuKiBjeXRvc2NhcGUtZDMtZm9yY2VcbiovXG5cbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgZDMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGFzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbnZhciBDb250aW51b3VzTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDb250aW51b3VzTGF5b3V0KG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29udGludW91c0xheW91dCk7XG5cbiAgICB2YXIgbyA9IHRoaXMub3B0aW9ucyA9IGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuICAgIHRoaXMuc3RhdGUgPSBhc3NpZ24oe30sIG8sIHtcbiAgICAgIGxheW91dDogdGhpcyxcbiAgICAgIG5vZGVzOiBvLmVsZXMubm9kZXMoKSxcbiAgICAgIGVkZ2VzOiBvLmVsZXMuZWRnZXMoKSxcbiAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgaXRlcmF0aW9uczogMCxcbiAgICAgIHN0YXJ0VGltZTogMFxuICAgIH0pO1xuICAgIHRoaXMuc2ltdWxhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5yZW1vdmVDeXRvc2NhcGVFdmVudHMgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWVkRXZlbnQgPSBudWxsO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbnRpbnVvdXNMYXlvdXQsIFt7XG4gICAga2V5OiAnbWFrZUJvdW5kaW5nQm94JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbWFrZUJvdW5kaW5nQm94KGJiLCBjeSkge1xuICAgICAgaWYgKGJiID09IG51bGwpIHtcbiAgICAgICAgYmIgPSB7IHgxOiAwLCB5MTogMCwgdzogY3kud2lkdGgoKSwgaDogY3kuaGVpZ2h0KCkgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJiID0geyB4MTogYmIueDEsIHgyOiBiYi54MiwgeTE6IGJiLnkxLCB5MjogYmIueTIsIHc6IGJiLncsIGg6IGJiLmggfTtcbiAgICAgIH1cbiAgICAgIGlmIChiYi54MiA9PSBudWxsKSB7XG4gICAgICAgIGJiLngyID0gYmIueDEgKyBiYi53O1xuICAgICAgfVxuICAgICAgaWYgKGJiLncgPT0gbnVsbCkge1xuICAgICAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICAgIH1cbiAgICAgIGlmIChiYi55MiA9PSBudWxsKSB7XG4gICAgICAgIGJiLnkyID0gYmIueTEgKyBiYi5oO1xuICAgICAgfVxuICAgICAgaWYgKGJiLmggPT0gbnVsbCkge1xuICAgICAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJiO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldEluaXRpYWxQb3NpdGlvblN0YXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUobm9kZSwgc3RhdGUpIHtcbiAgICAgIHZhciBwID0gbm9kZS5wb3NpdGlvbigpO1xuICAgICAgdmFyIGJiID0gc3RhdGUuY3VycmVudEJvdW5kaW5nQm94O1xuICAgICAgdmFyIHNjcmF0Y2ggPSBub2RlLnNjcmF0Y2goc3RhdGUubmFtZSk7XG5cbiAgICAgIGlmIChzY3JhdGNoID09IG51bGwpIHtcbiAgICAgICAgc2NyYXRjaCA9IHt9O1xuXG4gICAgICAgIG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lLCBzY3JhdGNoKTtcbiAgICAgIH1cblxuICAgICAgYXNzaWduKHNjcmF0Y2gsIHN0YXRlLnJhbmRvbWl6ZSA/IHtcbiAgICAgICAgeDogYmIueDEgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi53KSxcbiAgICAgICAgeTogYmIueTEgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKVxuICAgICAgfSA6IHtcbiAgICAgICAgeDogcC54LFxuICAgICAgICB5OiBwLnlcbiAgICAgIH0pO1xuICAgICAgaWYgKG5vZGUubG9ja2VkKCkpIHtcbiAgICAgICAgYXNzaWduKHNjcmF0Y2gsIHtcbiAgICAgICAgICBmeDogcC54LFxuICAgICAgICAgIGZ5OiBwLnlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVmcmVzaFBvc2l0aW9ucycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlZnJlc2hQb3NpdGlvbnMobm9kZXMsIHN0YXRlLCBmaXQpIHtcbiAgICAgIG5vZGVzLnBvc2l0aW9ucyhmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBzY3JhdGNoLngsXG4gICAgICAgICAgeTogc2NyYXRjaC55XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGZpdCAmJiBzdGF0ZS5jeS5maXQoc3RhdGUucGFkZGluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U2NyYXRjaCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjcmF0Y2goZWwpIHtcbiAgICAgIHZhciBuYW1lID0gdGhpcy5zdGF0ZS5uYW1lO1xuICAgICAgdmFyIHNjcmF0Y2ggPSBlbC5zY3JhdGNoKG5hbWUpO1xuXG4gICAgICBpZiAoIXNjcmF0Y2gpIHtcbiAgICAgICAgc2NyYXRjaCA9IHt9O1xuXG4gICAgICAgIGVsLnNjcmF0Y2gobmFtZSwgc2NyYXRjaCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2NyYXRjaDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd1bmdyYWJpZnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bmdyYWJpZnkobm9kZXMpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5zdGF0ZS51bmdyYWJpZnlXaGlsZVNpbXVsYXRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBub2RlR3JhYmJhYmxlID0gX3RoaXMuZ2V0U2NyYXRjaChub2RlKS5ncmFiYmFibGUgPSBub2RlLmdyYWJiYWJsZSgpO1xuICAgICAgICByZXR1cm4gbm9kZUdyYWJiYWJsZTtcbiAgICAgIH0pO1xuICAgICAgbm9kZXMudW5ncmFiaWZ5KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVncmFiaWZ5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVncmFiaWZ5KG5vZGVzKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVHcmFiYmFibGUgPSBfdGhpczIuZ2V0U2NyYXRjaChub2RlKS5ncmFiYmFibGU7XG4gICAgICAgIHJldHVybiBub2RlR3JhYmJhYmxlO1xuICAgICAgfSk7XG4gICAgICBub2Rlcy5ncmFiaWZ5KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG4gICAgICBzLnByb2dyZXNzICs9IDEgLyBNYXRoLmNlaWwoTWF0aC5sb2codGhpcy5zaW11bGF0aW9uLmFscGhhTWluKCkpIC8gTWF0aC5sb2coMSAtIHRoaXMuc2ltdWxhdGlvbi5hbHBoYURlY2F5KCkpKTtcbiAgICAgIHMuaXRlcmF0aW9ucysrO1xuICAgICAgdmFyIF9pdGVyYXRpb25zID0gcy5tYXhJdGVyYXRpb25zICYmICFzLmluZmluaXRlID8gcy5pdGVyYXRpb25zIC8gcy5tYXhJdGVyYXRpb25zIDogMDtcbiAgICAgIHZhciBfdGltZVJ1bm5pbmcgPSBEYXRlLm5vdygpIC0gcy5zdGFydFRpbWU7XG4gICAgICB2YXIgX3RpbWVJdGVyYXRpb25zID0gcy5tYXhTaW11bGF0aW9uVGltZSAmJiAhcy5pbmZpbml0ZSA/IF90aW1lUnVubmluZyAvIHMubWF4U2ltdWxhdGlvblRpbWUgOiAwO1xuICAgICAgdmFyIF9wcm9ncmVzcyA9IE1hdGgubWF4KF9pdGVyYXRpb25zLCBfdGltZUl0ZXJhdGlvbnMsIHMucHJvZ3Jlc3MpO1xuICAgICAgX3Byb2dyZXNzID0gX3Byb2dyZXNzID4gMSA/IDEgOiBfcHJvZ3Jlc3M7XG4gICAgICBpZiAoX3Byb2dyZXNzID49IDEpIHtcbiAgICAgICAgdGhpcy5lbmQoIXMuaW5maW5pdGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzLnRpY2sgJiYgcy50aWNrKF9wcm9ncmVzcyk7XG4gICAgICBpZiAocy5hbmltYXRlKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaFBvc2l0aW9ucyhzLm5vZGVzLCBzLCBzLmZpdCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZW5kJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kKGRlc3Ryb3llZCkge1xuICAgICAgdmFyIHMgPSB0aGlzLnN0YXRlO1xuICAgICAgdGhpcy5yZWZyZXNoUG9zaXRpb25zKHMubm9kZXMsIHMsIHMuZml0KTtcbiAgICAgIHRoaXMuZW1pdCgnbGF5b3V0c3RvcCcsIHMuY3kpO1xuICAgICAgdGhpcy5yZXNldChkZXN0cm95ZWQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3Jlc2V0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXQoZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLnNpbXVsYXRpb24gJiYgdGhpcy5zaW11bGF0aW9uLnN0b3AoKTtcbiAgICAgIHZhciBzID0gdGhpcy5zdGF0ZTtcbiAgICAgIHRoaXMuZGVzdHJveWVkRXZlbnQgJiYgdGhpcy5kZXN0cm95ZWRFdmVudCgpO1xuICAgICAgKGRlc3Ryb3llZCB8fCAhcy5pbmZpbml0ZSkgJiYgdGhpcy5yZW1vdmVDeXRvc2NhcGVFdmVudHMgJiYgdGhpcy5yZW1vdmVDeXRvc2NhcGVFdmVudHMoKTtcbiAgICAgIHMuYW5pbWF0ZSAmJiB0aGlzLnJlZ3JhYmlmeShzLm5vZGVzKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3J1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB2YXIgbCA9IHRoaXM7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG4gICAgICB2YXIgcmVhZHkgPSBmYWxzZTtcbiAgICAgIHMuY3VycmVudEJvdW5kaW5nQm94ID0gdGhpcy5tYWtlQm91bmRpbmdCb3gocy5ib3VuZGluZ0JveCwgcy5jeSk7XG4gICAgICBpZiAocy5yZWFkeSkge1xuICAgICAgICBsLm9uZSgnbGF5b3V0cmVhZHknLCBzLnJlYWR5KTtcbiAgICAgIH1cbiAgICAgIGlmIChzLnN0b3ApIHtcbiAgICAgICAgbC5vbmUoJ2xheW91dHN0b3AnLCBzLnN0b3ApO1xuICAgICAgfVxuICAgICAgcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBfdGhpczMuc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUobiwgcyk7XG4gICAgICB9KTtcbiAgICAgIGlmICghcmVhZHkpIHtcbiAgICAgICAgcmVhZHkgPSB0cnVlO1xuICAgICAgICBsLmVtaXQoJ2xheW91dHJlYWR5Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbC5zaW11bGF0aW9uKSB7XG4gICAgICAgIHZhciBfZm9yY2Vub2RlcyA9IHMubm9kZXMubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgcmV0dXJuIGFzc2lnbihsLmdldFNjcmF0Y2gobiksIG4uZGF0YSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfZm9yY2VlZGdlcyA9IHMuZWRnZXMubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGFzc2lnbih7fSwgZS5kYXRhKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgbC5zaW11bGF0aW9uID0gZDMuZm9yY2VTaW11bGF0aW9uKF9mb3JjZW5vZGVzKTtcbiAgICAgICAgcy5hbHBoYSAmJiBsLnNpbXVsYXRpb24uYWxwaGEocy5hbHBoYSk7XG4gICAgICAgIHMuYWxwaGFNaW4gJiYgbC5zaW11bGF0aW9uLmFscGhhTWluKHMuYWxwaGFNaW4pO1xuICAgICAgICBzLmFscGhhRGVjYXkgJiYgbC5zaW11bGF0aW9uLmFscGhhRGVjYXkocy5hbHBoYURlY2F5KTtcbiAgICAgICAgcy5hbHBoYVRhcmdldCAmJiBsLnNpbXVsYXRpb24uYWxwaGFUYXJnZXQocy5hbHBoYVRhcmdldCk7XG4gICAgICAgIHMudmVsb2NpdHlEZWNheSAmJiBsLnNpbXVsYXRpb24udmVsb2NpdHlEZWNheShzLnZlbG9jaXR5RGVjYXkpO1xuICAgICAgICB2YXIgX2NvbGxpZGUgPSBkMy5mb3JjZUNvbGxpZGUoKTtcbiAgICAgICAgcy5jb2xsaWRlUmFkaXVzICYmIF9jb2xsaWRlLnJhZGl1cyhzLmNvbGxpZGVSYWRpdXMpO1xuICAgICAgICBzLmNvbGxpZGVTdHJlbmd0aCAmJiBfY29sbGlkZS5zdHJlbmd0aChzLmNvbGxpZGVTdHJlbmd0aCk7XG4gICAgICAgIHMuY29sbGlkZUl0ZXJhdGlvbnMgJiYgX2NvbGxpZGUuaXRlcmF0aW9ucyhzLmNvbGxpZGVJdGVyYXRpb25zKTtcbiAgICAgICAgdmFyIF9saW5rID0gZDMuZm9yY2VMaW5rKF9mb3JjZWVkZ2VzKTtcbiAgICAgICAgcy5saW5rSWQgJiYgX2xpbmsuaWQocy5saW5rSWQpO1xuICAgICAgICBzLmxpbmtEaXN0YW5jZSAmJiBfbGluay5kaXN0YW5jZShzLmxpbmtEaXN0YW5jZSk7XG4gICAgICAgIHMubGlua1N0cmVuZ3RoICYmIF9saW5rLnN0cmVuZ3RoKHMubGlua1N0cmVuZ3RoKTtcbiAgICAgICAgcy5saW5rSXRlcmF0aW9ucyAmJiBfbGluay5pdGVyYXRpb25zKHMubGlua0l0ZXJhdGlvbnMpO1xuICAgICAgICB2YXIgX21hbnlCb2R5ID0gZDMuZm9yY2VNYW55Qm9keSgpO1xuICAgICAgICBzLm1hbnlCb2R5U3RyZW5ndGggJiYgX21hbnlCb2R5LnN0cmVuZ3RoKHMubWFueUJvZHlTdHJlbmd0aCk7XG4gICAgICAgIHMubWFueUJvZHlUaGV0YSAmJiBfbWFueUJvZHkudGhldGEocy5tYW55Qm9keVRoZXRhKTtcbiAgICAgICAgcy5tYW55Qm9keURpc3RhbmNlTWluICYmIF9tYW55Qm9keS5kaXN0YW5jZU1pbihzLm1hbnlCb2R5RGlzdGFuY2VNaW4pO1xuICAgICAgICBzLm1hbnlCb2R5RGlzdGFuY2VNYXggJiYgX21hbnlCb2R5LmRpc3RhbmNlTWF4KHMubWFueUJvZHlEaXN0YW5jZU1heCk7XG4gICAgICAgIHZhciBfeCA9IGQzLmZvcmNlWCgpO1xuICAgICAgICBzLnhYICYmIF94Lngocy54WCk7XG4gICAgICAgIHMueFN0cmVuZ3RoICYmIF94LnN0cmVuZ3RoKHMueFN0cmVuZ3RoKTtcbiAgICAgICAgdmFyIF95ID0gZDMuZm9yY2VZKCk7XG4gICAgICAgIHMueVkgJiYgX3kueShzLnlZKTtcbiAgICAgICAgcy55U3RyZW5ndGggJiYgX3kuc3RyZW5ndGgocy55U3RyZW5ndGgpO1xuICAgICAgICB2YXIgX3JhZGl1cyA9IG51bGw7XG4gICAgICAgIGlmIChzLnJhZGlhbFJhZGl1cyB8fCBzLnJhZGlhbFN0cmVuZ3RoIHx8IHMucmFkaWFsWCB8fCBzLnJhZGlhbFkpIHtcbiAgICAgICAgICBfcmFkaXVzID0gZDMuZm9yY2VSYWRpYWwoKTtcbiAgICAgICAgICBzLnJhZGlhbFJhZGl1cyAmJiBfcmFkaXVzLnJhZGl1cyhzLnJhZGlhbFJhZGl1cyk7XG4gICAgICAgICAgcy5yYWRpYWxTdHJlbmd0aCAmJiBfcmFkaXVzLnN0cmVuZ3RoKHMucmFkaWFsU3RyZW5ndGgpO1xuICAgICAgICAgIHMucmFkaWFsWCAmJiBfcmFkaXVzLngocy5yYWRpYWxYKTtcbiAgICAgICAgICBzLnJhZGlhbFkgJiYgX3JhZGl1cy55KHMucmFkaWFsWSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9jZW50ZXIgPSBkMy5mb3JjZUNlbnRlcihzLmN1cnJlbnRCb3VuZGluZ0JveC53IC8gMiwgcy5jdXJyZW50Qm91bmRpbmdCb3guaCAvIDIpO1xuICAgICAgICBsLnNpbXVsYXRpb24uZm9yY2UoJ2NvbGxpZGUnLCBfY29sbGlkZSkuZm9yY2UoJ2xpbmsnLCBfbGluaykuZm9yY2UoJ21hbnktYm9keScsIF9tYW55Qm9keSkuZm9yY2UoJ3gnLCBfeCkuZm9yY2UoJ3knLCBfeSkuZm9yY2UoXCJjZW50ZXJcIiwgX2NlbnRlcik7XG4gICAgICAgIF9yYWRpdXMgJiYgbC5zaW11bGF0aW9uLmZvcmNlKCdyYWRpdXMnLCBfcmFkaXVzKTtcbiAgICAgICAgbC5zaW11bGF0aW9uLm9uKFwidGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbC50aWNrKCk7XG4gICAgICAgIH0pLm9uKFwiZW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsLmVuZCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghbC5kZXN0cm95ZWRFdmVudCkge1xuICAgICAgICB2YXIgZGVzdHJveUhhbmRsZXIgPSB2b2lkIDA7XG4gICAgICAgIHMuY3kub25lKCdkZXN0cm95JywgZGVzdHJveUhhbmRsZXIgPSBmdW5jdGlvbiBkZXN0cm95SGFuZGxlcigpIHtcbiAgICAgICAgICBsLnN0b3AoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGwuZGVzdHJveWVkRXZlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcy5jeS5vZmYoJ2Rlc3Ryb3knLCBkZXN0cm95SGFuZGxlcik7XG4gICAgICAgICAgbC5kZXN0cm95ZWRFdmVudCA9IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBsLnByZXJ1bihzKTtcbiAgICAgIGwuZW1pdCgnbGF5b3V0c3RhcnQnKTtcbiAgICAgIHMucHJvZ3Jlc3MgPSAwO1xuICAgICAgcy5pdGVyYXRpb25zID0gMDtcbiAgICAgIHMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgaWYgKHMuYW5pbWF0ZSkge1xuICAgICAgICB2YXIgcmVzdGFydEFscGhhVGFyZ2V0ID0gTWF0aC5hYnMoKHMuYWxwaGEgfHwgMSkgLSAocy5hbHBoYVRhcmdldCB8fCAwKSkgLyAzO1xuICAgICAgICBpZiAoIWwucmVtb3ZlQ3l0b3NjYXBlRXZlbnRzKSB7XG4gICAgICAgICAgdmFyIF9jeXRvc2NhcGVFdmVudCA9IGZ1bmN0aW9uIF9jeXRvc2NhcGVFdmVudChlKSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgICAgICAgICAgdmFyIG5vZGVJc1RhcmdldCA9IGUuY3lUYXJnZXQgPT09IG5vZGUgfHwgZS50YXJnZXQgPT09IG5vZGU7XG4gICAgICAgICAgICBpZiAoIW5vZGVJc1RhcmdldCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX3NjcmF0Y2ggPSBsLmdldFNjcmF0Y2gobm9kZSk7XG4gICAgICAgICAgICBzLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgIHMuaXRlcmF0aW9ucyA9IDA7XG4gICAgICAgICAgICBzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICBfc2NyYXRjaC54ID0gcG9zLng7XG4gICAgICAgICAgICBfc2NyYXRjaC55ID0gcG9zLnk7XG4gICAgICAgICAgICBpZiAoZS50eXBlID09PSAnZ3JhYicpIHtcbiAgICAgICAgICAgICAgbC5zaW11bGF0aW9uLmFscGhhVGFyZ2V0KHJlc3RhcnRBbHBoYVRhcmdldCkucmVzdGFydCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlLnR5cGUgPT09ICd1bmxvY2snIHx8IGUudHlwZSA9PT0gJ2ZyZWUnKSB7XG4gICAgICAgICAgICAgIGlmICghcy5maXhlZEFmdGVyRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgX3NjcmF0Y2guZng7XG4gICAgICAgICAgICAgICAgZGVsZXRlIF9zY3JhdGNoLmZ5O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF9zY3JhdGNoLmZ4ID0gcG9zLng7XG4gICAgICAgICAgICAgICAgX3NjcmF0Y2guZnkgPSBwb3MueTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsLnNpbXVsYXRpb24uYWxwaGFUYXJnZXQocmVzdGFydEFscGhhVGFyZ2V0KS5yZXN0YXJ0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBfc2NyYXRjaC5meCA9IHBvcy54O1xuICAgICAgICAgICAgICBfc2NyYXRjaC5meSA9IHBvcy55O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgbC5yZW1vdmVDeXRvc2NhcGVFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzLm5vZGVzLm9mZignZ3JhYiBmcmVlIGRyYWcgbG9jayB1bmxvY2snLCBfY3l0b3NjYXBlRXZlbnQpO1xuICAgICAgICAgICAgbC5yZW1vdmVDeXRvc2NhcGVFdmVudHMgPSBudWxsO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcy5ub2Rlcy5vbignZ3JhYiBmcmVlIGRyYWcgbG9jayB1bmxvY2snLCBfY3l0b3NjYXBlRXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGwudW5ncmFiaWZ5KHMubm9kZXMpO1xuICAgICAgfVxuICAgICAgbC5wb3N0cnVuKHMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHJlcnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlcnVuKCkge31cbiAgfSwge1xuICAgIGtleTogJ3Bvc3RydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0cnVuKCkge31cbiAgfSwge1xuICAgIGtleTogJ3N0b3AnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzZXQodHJ1ZSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbnRpbnVvdXNMYXlvdXQ7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ29udGludW91c0xheW91dDtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIFNpbXBsZSwgaW50ZXJuYWwgT2JqZWN0LmFzc2lnbigpIHBvbHlmaWxsIGZvciBvcHRpb25zIG9iamVjdHMgZXRjLlxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3JjcyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZm9yRWFjaChmdW5jdGlvbiAoc3JjKSB7XG4gICAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gdGd0O1xufTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGFuaW1hdGU6IHRydWUsIC8vIHdoZXRoZXIgdG8gc2hvdyB0aGUgbGF5b3V0IGFzIGl0J3MgcnVubmluZzsgc3BlY2lhbCAnZW5kJyB2YWx1ZSBtYWtlcyB0aGUgbGF5b3V0IGFuaW1hdGUgbGlrZSBhIGRpc2NyZXRlIGxheW91dFxuICBtYXhJdGVyYXRpb25zOiAwLCAvLyBtYXggaXRlcmF0aW9ucyBiZWZvcmUgdGhlIGxheW91dCB3aWxsIGJhaWwgb3V0XG4gIG1heFNpbXVsYXRpb25UaW1lOiAwLCAvLyBtYXggbGVuZ3RoIGluIG1zIHRvIHJ1biB0aGUgbGF5b3V0XG4gIHVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZzogZmFsc2UsIC8vIHNvIHlvdSBjYW4ndCBkcmFnIG5vZGVzIGR1cmluZyBsYXlvdXRcbiAgZml4ZWRBZnRlckRyYWdnaW5nOiBmYWxzZSwgLy8gZml4ZWQgbm9kZSBhZnRlciBkcmFnZ2luZ1xuICBmaXQ6IGZhbHNlLCAvLyBvbiBldmVyeSBsYXlvdXQgcmVwb3NpdGlvbiBvZiBub2RlcywgZml0IHRoZSB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCwgLy8gcGFkZGluZyBhcm91bmQgdGhlIHNpbXVsYXRpb25cbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCwgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIC8qKmQzLWZvcmNlIEFQSSoqL1xuICBhbHBoYTogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBjdXJyZW50IGFscGhhIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIHRoZSByYW5nZSBbMCwxXVxuICBhbHBoYU1pbjogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBtaW5pbXVtIGFscGhhIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIHRoZSByYW5nZSBbMCwxXVxuICBhbHBoYURlY2F5OiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGFscGhhIGRlY2F5IHJhdGUgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGFscGhhVGFyZ2V0OiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGN1cnJlbnQgdGFyZ2V0IGFscGhhIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIHRoZSByYW5nZSBbMCwxXVxuICB2ZWxvY2l0eURlY2F5OiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIHZlbG9jaXR5IGRlY2F5IGZhY3RvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsMV1cbiAgY29sbGlkZVJhZGl1czogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSByYWRpdXMgYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgY29sbGlkZVN0cmVuZ3RoOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGZvcmNlIHN0cmVuZ3RoIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIHRoZSByYW5nZSBbMCwxXVxuICBjb2xsaWRlSXRlcmF0aW9uczogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBwZXIgYXBwbGljYXRpb24gdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgbGlua0lkOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG5vZGUgaWQgYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBmdW5jdGlvblxuICBsaW5rRGlzdGFuY2U6IDMwLCAvLyBzZXRzIHRoZSBkaXN0YW5jZSBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBsaW5rU3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgbGlua0l0ZXJhdGlvbnM6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgcGVyIGFwcGxpY2F0aW9uIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyXG4gIG1hbnlCb2R5U3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgbWFueUJvZHlUaGV0YTogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBCYXJuZXPigJNIdXQgYXBwcm94aW1hdGlvbiBjcml0ZXJpb24gdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgbWFueUJvZHlEaXN0YW5jZU1pbjogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gbm9kZXMgb3ZlciB3aGljaCB0aGlzIGZvcmNlIGlzIGNvbnNpZGVyZWRcbiAgbWFueUJvZHlEaXN0YW5jZU1heDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBtYXhpbXVtIGRpc3RhbmNlIGJldHdlZW4gbm9kZXMgb3ZlciB3aGljaCB0aGlzIGZvcmNlIGlzIGNvbnNpZGVyZWRcbiAgeFN0cmVuZ3RoOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIHN0cmVuZ3RoIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHhYOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIHgtY29vcmRpbmF0ZSBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICB5U3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgeVk6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgeS1jb29yZGluYXRlIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHJhZGlhbFN0cmVuZ3RoOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIHN0cmVuZ3RoIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHJhZGlhbFJhZGl1czogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBjaXJjbGUgcmFkaXVzIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHJhZGlhbFg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgeC1jb29yZGluYXRlIG9mIHRoZSBjaXJjbGUgY2VudGVyIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyXG4gIHJhZGlhbFk6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgeS1jb29yZGluYXRlIG9mIHRoZSBjaXJjbGUgY2VudGVyIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyXG4gIC8vIGxheW91dCBldmVudCBjYWxsYmFja3NcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sIC8vIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7fSwgLy8gb24gbGF5b3V0c3RvcFxuICB0aWNrOiBmdW5jdGlvbiB0aWNrKCkge30sIC8vIG9uIGV2ZXJ5IGl0ZXJhdGlvblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuICAvLyBpbmZpbml0ZSBsYXlvdXQgb3B0aW9uc1xuICBpbmZpbml0ZTogZmFsc2UgLy8gb3ZlcnJpZGVzIGFsbCBvdGhlciBvcHRpb25zIGZvciBhIGZvcmNlcy1hbGwtdGhlLXRpbWUgbW9kZVxufSk7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgaW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICBjeXRvc2NhcGUoJ2xheW91dCcsICdkMy1mb3JjZScsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfNF9fO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCJpbXBvcnQgJ2N5dG9zY2FwZSc7XG5cbi8vIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvZGVza3RvcC9hcGkvd2ludXNlci9uZi13aW51c2VyLXNldGRvdWJsZWNsaWNrdGltZVxyXG52YXIgSU5URVJWQUwgPSA1MDA7XHJcbmZ1bmN0aW9uIGV4dGVuc2lvbihpbnRlcnZhbCkge1xyXG4gICAgaWYgKGludGVydmFsID09PSB2b2lkIDApIHsgaW50ZXJ2YWwgPSBJTlRFUlZBTDsgfVxyXG4gICAgdmFyIGNsaWNrZWQgPSBudWxsO1xyXG4gICAgdGhpcy5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgICAgaWYgKGNsaWNrZWQgJiYgY2xpY2tlZCA9PT0gZXZ0LnRhcmdldCkge1xyXG4gICAgICAgICAgICBjbGlja2VkID0gbnVsbDtcclxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgZXZ0LnRhcmdldC5lbWl0KCdkYmxjbGljaycsIFtldnRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNsaWNrZWQgPSBldnQudGFyZ2V0O1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjbGlja2VkICYmIGNsaWNrZWQgPT09IGV2dC50YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGlja2VkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBldnQudGFyZ2V0LmVtaXQoJ2RibGNsaWNrOnRpbWVvdXQnLCBbZXZ0XSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGludGVydmFsKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmFiaWxpdHlcclxufVxuXG5mdW5jdGlvbiByZWdpc3RlcihjeSkge1xyXG4gICAgaWYgKCFjeSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIEluaXRpYWxpemUgZXh0ZW5zaW9uXHJcbiAgICAvLyBSZWdpc3RlciBleHRlbnNpb25cclxuICAgIHZhciBleHRlbnNpb25OYW1lID0gJ2RibGNsaWNrJztcclxuICAgIGN5KCdjb3JlJywgZXh0ZW5zaW9uTmFtZSwgZXh0ZW5zaW9uKTtcclxuICAgIC8vIGN5KCdjb2xsZWN0aW9uJywgZXh0ZW5zaW9uTmFtZSwgZXh0ZW5zaW9uKTtcclxuICAgIC8vIGN5KCdsYXlvdXQnLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG4gICAgLy8gY3koJ3JlbmRlcmVyJywgZXh0ZW5zaW9uTmFtZSwgZXh0ZW5zaW9uKTtcclxufVxyXG5pZiAodHlwZW9mIHdpbmRvdy5jeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICByZWdpc3Rlcih3aW5kb3cuY3l0b3NjYXBlKTtcclxufVxuXG5leHBvcnQgZGVmYXVsdCByZWdpc3Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5qcy5tYXBcbiIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImN5dG9zY2FwZUN4dG1lbnVcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlQ3h0bWVudVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgZGVmYXVsdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xudmFyIGFzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbnZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG4gICAgcmVtb3ZlRWxlcyA9IF9yZXF1aXJlLnJlbW92ZUVsZXMsXG4gICAgc2V0U3R5bGVzID0gX3JlcXVpcmUuc2V0U3R5bGVzLFxuICAgIGNyZWF0ZUVsZW1lbnQgPSBfcmVxdWlyZS5jcmVhdGVFbGVtZW50LFxuICAgIGdldFBpeGVsUmF0aW8gPSBfcmVxdWlyZS5nZXRQaXhlbFJhdGlvLFxuICAgIGdldE9mZnNldCA9IF9yZXF1aXJlLmdldE9mZnNldDtcblxudmFyIGN4dG1lbnUgPSBmdW5jdGlvbiBjeHRtZW51KHBhcmFtcykge1xuICB2YXIgb3B0aW9ucyA9IGFzc2lnbih7fSwgZGVmYXVsdHMsIHBhcmFtcyk7XG4gIHZhciBjeSA9IHRoaXM7XG4gIHZhciBjb250YWluZXIgPSBjeS5jb250YWluZXIoKTtcbiAgdmFyIHRhcmdldCA9IHZvaWQgMDtcblxuICB2YXIgZGF0YSA9IHtcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIGhhbmRsZXJzOiBbXSxcbiAgICBjb250YWluZXI6IGNyZWF0ZUVsZW1lbnQoeyBjbGFzczogJ2N4dG1lbnUnIH0pXG4gIH07XG5cbiAgdmFyIHdyYXBwZXIgPSBkYXRhLmNvbnRhaW5lcjtcbiAgdmFyIHBhcmVudCA9IGNyZWF0ZUVsZW1lbnQoKTtcbiAgdmFyIGNhbnZhcyA9IGNyZWF0ZUVsZW1lbnQoeyB0YWc6ICdjYW52YXMnIH0pO1xuICB2YXIgY29tbWFuZHMgPSBbXTtcbiAgdmFyIGMyZCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gIHZhciByID0gMTAwOyAvLyBkZWZhaWx0IHJhZGl1cztcbiAgdmFyIGNvbnRhaW5lclNpemUgPSAociArIG9wdGlvbnMuYWN0aXZlUGFkZGluZykgKiAyO1xuICB2YXIgYWN0aXZlQ29tbWFuZEkgPSB2b2lkIDA7XG4gIHZhciBvZmZzZXQgPSB2b2lkIDA7XG5cbiAgY29udGFpbmVyLmluc2VydEJlZm9yZSh3cmFwcGVyLCBjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gIHdyYXBwZXIuYXBwZW5kQ2hpbGQocGFyZW50KTtcbiAgcGFyZW50LmFwcGVuZENoaWxkKGNhbnZhcyk7XG5cbiAgc2V0U3R5bGVzKHdyYXBwZXIsIHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IG9wdGlvbnMuekluZGV4LFxuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScgLy8gcHJldmVudCBldmVudHMgb24gbWVudSBpbiBtb2Rlcm4gYnJvd3NlcnNcbiAgfSk7XG5cbiAgLy8gcHJldmVudCBldmVudHMgb24gbWVudSBpbiBsZWdhY3kgYnJvd3NlcnNcbiAgWydtb3VzZWRvd24nLCAnbW91c2Vtb3ZlJywgJ21vdXNldXAnLCAnY29udGV4dG1lbnUnXS5mb3JFYWNoKGZ1bmN0aW9uIChldnQpIHtcbiAgICB3cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoZXZ0LCBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHNldFN0eWxlcyhwYXJlbnQsIHtcbiAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgd2lkdGg6IGNvbnRhaW5lclNpemUgKyAncHgnLFxuICAgIGhlaWdodDogY29udGFpbmVyU2l6ZSArICdweCcsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAxLFxuICAgIG1hcmdpbkxlZnQ6IC1vcHRpb25zLmFjdGl2ZVBhZGRpbmcgKyAncHgnLFxuICAgIG1hcmdpblRvcDogLW9wdGlvbnMuYWN0aXZlUGFkZGluZyArICdweCcsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnXG4gIH0pO1xuXG4gIGNhbnZhcy53aWR0aCA9IGNvbnRhaW5lclNpemU7XG4gIGNhbnZhcy5oZWlnaHQgPSBjb250YWluZXJTaXplO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZU1lbnVJdGVtcyhyLCBycykge1xuICAgIHJlbW92ZUVsZXMoJy5jeHRtZW51LWl0ZW0nLCBwYXJlbnQpO1xuICAgIHZhciBkdGhldGEgPSAyICogTWF0aC5QSSAvIGNvbW1hbmRzLmxlbmd0aDtcbiAgICB2YXIgdGhldGExID0gTWF0aC5QSSAvIDI7XG4gICAgdmFyIHRoZXRhMiA9IHRoZXRhMSArIGR0aGV0YTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tbWFuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHNbaV07XG5cbiAgICAgIHZhciBtaWR0aGV0YSA9ICh0aGV0YTEgKyB0aGV0YTIpIC8gMjtcbiAgICAgIHZhciByeDEgPSAociArIHJzKSAvIDIgKiBNYXRoLmNvcyhtaWR0aGV0YSk7XG4gICAgICB2YXIgcnkxID0gKHIgKyBycykgLyAyICogTWF0aC5zaW4obWlkdGhldGEpO1xuXG4gICAgICAvLyBBcmJpdHJhcnkgbXVsdGlwbGllciB0byBpbmNyZWFzZSB0aGUgc2l6aW5nIG9mIHRoZSBzcGFjZSBcbiAgICAgIC8vIGF2YWlsYWJsZSBmb3IgdGhlIGl0ZW0uXG4gICAgICB2YXIgd2lkdGggPSAxICogTWF0aC5hYnMoKHIgLSBycykgKiBNYXRoLmNvcyhtaWR0aGV0YSkpO1xuICAgICAgdmFyIGhlaWdodCA9IDEgKiBNYXRoLmFicygociAtIHJzKSAqIE1hdGguc2luKG1pZHRoZXRhKSk7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICB2YXIgaXRlbSA9IGNyZWF0ZUVsZW1lbnQoeyBjbGFzczogJ2N4dG1lbnUtaXRlbScgfSk7XG4gICAgICBzZXRTdHlsZXMoaXRlbSwge1xuICAgICAgICBjb2xvcjogb3B0aW9ucy5pdGVtQ29sb3IsXG4gICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkaXNwbGF5OiAndGFibGUnLFxuICAgICAgICAndGV4dC1hbGlnbic6ICdjZW50ZXInLFxuICAgICAgICAvL2JhY2tncm91bmQ6ICdyZWQnLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgJ3RleHQtc2hhZG93JzogJy0xcHggLTFweCAycHggJyArIG9wdGlvbnMuaXRlbVRleHRTaGFkb3dDb2xvciArICcsIDFweCAtMXB4IDJweCAnICsgb3B0aW9ucy5pdGVtVGV4dFNoYWRvd0NvbG9yICsgJywgLTFweCAxcHggMnB4ICcgKyBvcHRpb25zLml0ZW1UZXh0U2hhZG93Q29sb3IgKyAnLCAxcHggMXB4IDFweCAnICsgb3B0aW9ucy5pdGVtVGV4dFNoYWRvd0NvbG9yLFxuICAgICAgICBsZWZ0OiAnNTAlJyxcbiAgICAgICAgdG9wOiAnNTAlJyxcbiAgICAgICAgJ21pbi1oZWlnaHQnOiB3aWR0aCArICdweCcsXG4gICAgICAgIHdpZHRoOiB3aWR0aCArICdweCcsXG4gICAgICAgIGhlaWdodDogd2lkdGggKyAncHgnLFxuICAgICAgICBtYXJnaW5MZWZ0OiByeDEgLSB3aWR0aCAvIDIgKyAncHgnLFxuICAgICAgICBtYXJnaW5Ub3A6IC1yeTEgLSB3aWR0aCAvIDIgKyAncHgnXG4gICAgICB9KTtcblxuICAgICAgdmFyIGNvbnRlbnQgPSBjcmVhdGVFbGVtZW50KHsgY2xhc3M6ICdjeHRtZW51LWNvbnRlbnQnIH0pO1xuXG4gICAgICBpZiAoY29tbWFuZC5jb250ZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjb21tYW5kLmNvbnRlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGVudC5pbm5lckhUTUwgPSBjb21tYW5kLmNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIHNldFN0eWxlcyhjb250ZW50LCB7XG4gICAgICAgICd3aWR0aCc6IHdpZHRoICsgJ3B4JyxcbiAgICAgICAgJ2hlaWdodCc6IHdpZHRoICsgJ3B4JyxcbiAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogJ21pZGRsZScsXG4gICAgICAgICdkaXNwbGF5JzogJ3RhYmxlLWNlbGwnXG4gICAgICB9KTtcblxuICAgICAgc2V0U3R5bGVzKGNvbnRlbnQsIGNvbW1hbmQuY29udGVudFN0eWxlIHx8IHt9KTtcblxuICAgICAgaWYgKGNvbW1hbmQuZGlzYWJsZWQgPT09IHRydWUgfHwgY29tbWFuZC5lbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnY3h0bWVudS1jb250ZW50IGN4dG1lbnUtZGlzYWJsZWQnKTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGl0ZW0pO1xuICAgICAgaXRlbS5hcHBlbmRDaGlsZChjb250ZW50KTtcblxuICAgICAgdGhldGExICs9IGR0aGV0YTtcbiAgICAgIHRoZXRhMiArPSBkdGhldGE7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcXVldWVEcmF3QmcocmFkaXVzLCByc3BvdGxpZ2h0KSB7XG4gICAgcmVkcmF3UXVldWUuZHJhd0JnID0gW3JhZGl1cywgcnNwb3RsaWdodF07XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3QmcocmFkaXVzLCByc3BvdGxpZ2h0KSB7XG4gICAgYzJkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XG5cbiAgICBjMmQuY2xlYXJSZWN0KDAsIDAsIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclNpemUpO1xuXG4gICAgLy8gZHJhdyBiYWNrZ3JvdW5kIGl0ZW1zXG4gICAgYzJkLmZpbGxTdHlsZSA9IG9wdGlvbnMuZmlsbENvbG9yO1xuICAgIHZhciBkdGhldGEgPSAyICogTWF0aC5QSSAvIGNvbW1hbmRzLmxlbmd0aDtcbiAgICB2YXIgdGhldGExID0gTWF0aC5QSSAvIDI7XG4gICAgdmFyIHRoZXRhMiA9IHRoZXRhMSArIGR0aGV0YTtcblxuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb21tYW5kcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHNbaW5kZXhdO1xuXG4gICAgICBpZiAoY29tbWFuZC5maWxsQ29sb3IpIHtcbiAgICAgICAgYzJkLmZpbGxTdHlsZSA9IGNvbW1hbmQuZmlsbENvbG9yO1xuICAgICAgfVxuICAgICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgICAgYzJkLm1vdmVUbyhyYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyk7XG4gICAgICBjMmQuYXJjKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMsIDIgKiBNYXRoLlBJIC0gdGhldGExLCAyICogTWF0aC5QSSAtIHRoZXRhMiwgdHJ1ZSk7XG4gICAgICBjMmQuY2xvc2VQYXRoKCk7XG4gICAgICBjMmQuZmlsbCgpO1xuXG4gICAgICB0aGV0YTEgKz0gZHRoZXRhO1xuICAgICAgdGhldGEyICs9IGR0aGV0YTtcblxuICAgICAgYzJkLmZpbGxTdHlsZSA9IG9wdGlvbnMuZmlsbENvbG9yO1xuICAgIH1cblxuICAgIC8vIGRyYXcgc2VwYXJhdG9ycyBiZXR3ZWVuIGl0ZW1zXG4gICAgYzJkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuICAgIGMyZC5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7XG4gICAgYzJkLmxpbmVXaWR0aCA9IG9wdGlvbnMuc2VwYXJhdG9yV2lkdGg7XG4gICAgdGhldGExID0gTWF0aC5QSSAvIDI7XG4gICAgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21tYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJ4MSA9IHJhZGl1cyAqIE1hdGguY29zKHRoZXRhMSk7XG4gICAgICB2YXIgcnkxID0gcmFkaXVzICogTWF0aC5zaW4odGhldGExKTtcbiAgICAgIGMyZC5iZWdpblBhdGgoKTtcbiAgICAgIGMyZC5tb3ZlVG8ocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcpO1xuICAgICAgYzJkLmxpbmVUbyhyYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcgKyByeDEsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyAtIHJ5MSk7XG4gICAgICBjMmQuY2xvc2VQYXRoKCk7XG4gICAgICBjMmQuc3Ryb2tlKCk7XG5cbiAgICAgIHRoZXRhMSArPSBkdGhldGE7XG4gICAgICB0aGV0YTIgKz0gZHRoZXRhO1xuICAgIH1cblxuICAgIGMyZC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGMyZC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcbiAgICBjMmQuYmVnaW5QYXRoKCk7XG4gICAgYzJkLmFyYyhyYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcnNwb3RsaWdodCArIG9wdGlvbnMuc3BvdGxpZ2h0UGFkZGluZywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgIGMyZC5jbG9zZVBhdGgoKTtcbiAgICBjMmQuZmlsbCgpO1xuXG4gICAgYzJkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XG4gIH1cblxuICBmdW5jdGlvbiBxdWV1ZURyYXdDb21tYW5kcyhyeCwgcnksIHJhZGl1cywgdGhldGEsIHJzcG90bGlnaHQpIHtcbiAgICByZWRyYXdRdWV1ZS5kcmF3Q29tbWFuZHMgPSBbcngsIHJ5LCByYWRpdXMsIHRoZXRhLCByc3BvdGxpZ2h0XTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYXdDb21tYW5kcyhyeCwgcnksIHJhZGl1cywgdGhldGEsIHJzKSB7XG4gICAgdmFyIGR0aGV0YSA9IDIgKiBNYXRoLlBJIC8gY29tbWFuZHMubGVuZ3RoO1xuICAgIHZhciB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgdGhldGExICs9IGR0aGV0YSAqIGFjdGl2ZUNvbW1hbmRJO1xuICAgIHRoZXRhMiArPSBkdGhldGEgKiBhY3RpdmVDb21tYW5kSTtcblxuICAgIGMyZC5maWxsU3R5bGUgPSBvcHRpb25zLmFjdGl2ZUZpbGxDb2xvcjtcbiAgICBjMmQuc3Ryb2tlU3R5bGUgPSAnYmxhY2snO1xuICAgIGMyZC5saW5lV2lkdGggPSAxO1xuICAgIGMyZC5iZWdpblBhdGgoKTtcbiAgICBjMmQubW92ZVRvKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nKTtcbiAgICBjMmQuYXJjKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIDIgKiBNYXRoLlBJIC0gdGhldGExLCAyICogTWF0aC5QSSAtIHRoZXRhMiwgdHJ1ZSk7XG4gICAgYzJkLmNsb3NlUGF0aCgpO1xuICAgIGMyZC5maWxsKCk7XG5cbiAgICBjMmQuZmlsbFN0eWxlID0gJ3doaXRlJztcbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG5cbiAgICB2YXIgdHggPSByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcgKyByeCAvIHJhZGl1cyAqIChycyArIG9wdGlvbnMuc3BvdGxpZ2h0UGFkZGluZyAtIG9wdGlvbnMuaW5kaWNhdG9yU2l6ZSAvIDQpO1xuICAgIHZhciB0eSA9IHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyArIHJ5IC8gcmFkaXVzICogKHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nIC0gb3B0aW9ucy5pbmRpY2F0b3JTaXplIC8gNCk7XG4gICAgdmFyIHJvdCA9IE1hdGguUEkgLyA0IC0gdGhldGE7XG5cbiAgICBjMmQudHJhbnNsYXRlKHR4LCB0eSk7XG4gICAgYzJkLnJvdGF0ZShyb3QpO1xuXG4gICAgLy8gY2xlYXIgdGhlIGluZGljYXRvclxuICAgIC8vIFRoZSBpbmRpY2F0b3Igc2l6ZSAoYXJyb3cpIGRlcGVuZHMgb24gdGhlIG5vZGUgc2l6ZSBhcyB3ZWxsLiBJZiB0aGUgaW5kaWNhdG9yIHNpemUgaXMgYmlnZ2VyIGFuZCB0aGUgcmVuZGVyZWQgbm9kZSBzaXplICsgcGFkZGluZywgXG4gICAgLy8gdXNlIHRoZSByZW5kZXJlZCBub2RlIHNpemUgKyBwYWRkaW5nIGFzIHRoZSBpbmRpY2F0b3Igc2l6ZS5cbiAgICB2YXIgaW5kaWNhdG9yU2l6ZSA9IG9wdGlvbnMuaW5kaWNhdG9yU2l6ZSA+IHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nID8gcnMgKyBvcHRpb25zLnNwb3RsaWdodFBhZGRpbmcgOiBvcHRpb25zLmluZGljYXRvclNpemU7XG4gICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgIGMyZC5maWxsUmVjdCgtaW5kaWNhdG9yU2l6ZSAvIDIsIC1pbmRpY2F0b3JTaXplIC8gMiwgaW5kaWNhdG9yU2l6ZSwgaW5kaWNhdG9yU2l6ZSk7XG4gICAgYzJkLmNsb3NlUGF0aCgpO1xuICAgIGMyZC5maWxsKCk7XG5cbiAgICBjMmQucm90YXRlKC1yb3QpO1xuICAgIGMyZC50cmFuc2xhdGUoLXR4LCAtdHkpO1xuXG4gICAgLy8gYzJkLnNldFRyYW5zZm9ybSggMSwgMCwgMCwgMSwgMCwgMCApO1xuXG4gICAgLy8gY2xlYXIgdGhlIHNwb3RsaWdodFxuICAgIGMyZC5iZWdpblBhdGgoKTtcbiAgICBjMmQuYXJjKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCBycyArIG9wdGlvbnMuc3BvdGxpZ2h0UGFkZGluZywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgIGMyZC5jbG9zZVBhdGgoKTtcbiAgICBjMmQuZmlsbCgpO1xuXG4gICAgYzJkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVQaXhlbFJhdGlvKCkge1xuICAgIHZhciBweHIgPSBnZXRQaXhlbFJhdGlvKCk7XG4gICAgdmFyIHcgPSBjb250YWluZXJTaXplO1xuICAgIHZhciBoID0gY29udGFpbmVyU2l6ZTtcblxuICAgIGNhbnZhcy53aWR0aCA9IHcgKiBweHI7XG4gICAgY2FudmFzLmhlaWdodCA9IGggKiBweHI7XG5cbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSB3ICsgJ3B4JztcbiAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gaCArICdweCc7XG5cbiAgICBjMmQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgIGMyZC5zY2FsZShweHIsIHB4cik7XG4gIH1cblxuICB2YXIgcmVkcmF3aW5nID0gdHJ1ZTtcbiAgdmFyIHJlZHJhd1F1ZXVlID0ge307XG5cbiAgdmFyIHJhZiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1cm4gc2V0VGltZW91dChmbiwgMTYpO1xuICB9O1xuXG4gIHZhciByZWRyYXcgPSBmdW5jdGlvbiByZWRyYXcoKSB7XG4gICAgaWYgKHJlZHJhd1F1ZXVlLmRyYXdCZykge1xuICAgICAgZHJhd0JnLmFwcGx5KG51bGwsIHJlZHJhd1F1ZXVlLmRyYXdCZyk7XG4gICAgfVxuXG4gICAgaWYgKHJlZHJhd1F1ZXVlLmRyYXdDb21tYW5kcykge1xuICAgICAgZHJhd0NvbW1hbmRzLmFwcGx5KG51bGwsIHJlZHJhd1F1ZXVlLmRyYXdDb21tYW5kcyk7XG4gICAgfVxuXG4gICAgcmVkcmF3UXVldWUgPSB7fTtcblxuICAgIGlmIChyZWRyYXdpbmcpIHtcbiAgICAgIHJhZihyZWRyYXcpO1xuICAgIH1cbiAgfTtcblxuICAvLyBraWNrIG9mZlxuICB1cGRhdGVQaXhlbFJhdGlvKCk7XG4gIHJlZHJhdygpO1xuXG4gIHZhciBjdHJ4ID0gdm9pZCAwLFxuICAgICAgY3RyeSA9IHZvaWQgMCxcbiAgICAgIHJzID0gdm9pZCAwO1xuXG4gIHZhciBiaW5kaW5ncyA9IHtcbiAgICBvbjogZnVuY3Rpb24gb24oZXZlbnRzLCBzZWxlY3RvciwgZm4pIHtcblxuICAgICAgdmFyIF9mbiA9IGZuO1xuICAgICAgaWYgKHNlbGVjdG9yID09PSAnY29yZScpIHtcbiAgICAgICAgX2ZuID0gZnVuY3Rpb24gX2ZuKGUpIHtcbiAgICAgICAgICBpZiAoZS5jeVRhcmdldCA9PT0gY3kgfHwgZS50YXJnZXQgPT09IGN5KSB7XG4gICAgICAgICAgICAvLyBvbmx5IGlmIGV2ZW50IHRhcmdldCBpcyBkaXJlY3RseSBjb3JlXG4gICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgW2VdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGRhdGEuaGFuZGxlcnMucHVzaCh7XG4gICAgICAgIGV2ZW50czogZXZlbnRzLFxuICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgICAgIGZuOiBfZm5cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2VsZWN0b3IgPT09ICdjb3JlJykge1xuICAgICAgICBjeS5vbihldmVudHMsIF9mbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjeS5vbihldmVudHMsIHNlbGVjdG9yLCBfZm4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgdmFyIGdyYWJiYWJsZSA9IHZvaWQgMDtcbiAgICB2YXIgaW5HZXN0dXJlID0gZmFsc2U7XG4gICAgdmFyIGRyYWdIYW5kbGVyID0gdm9pZCAwO1xuICAgIHZhciB6b29tRW5hYmxlZCA9IHZvaWQgMDtcbiAgICB2YXIgcGFuRW5hYmxlZCA9IHZvaWQgMDtcbiAgICB2YXIgYm94RW5hYmxlZCA9IHZvaWQgMDtcbiAgICB2YXIgZ2VzdHVyZVN0YXJ0RXZlbnQgPSB2b2lkIDA7XG5cbiAgICB2YXIgcmVzdG9yZVpvb20gPSBmdW5jdGlvbiByZXN0b3JlWm9vbSgpIHtcbiAgICAgIGlmICh6b29tRW5hYmxlZCkge1xuICAgICAgICBjeS51c2VyWm9vbWluZ0VuYWJsZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXN0b3JlR3JhYiA9IGZ1bmN0aW9uIHJlc3RvcmVHcmFiKCkge1xuICAgICAgaWYgKGdyYWJiYWJsZSkge1xuICAgICAgICB0YXJnZXQuZ3JhYmlmeSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzdG9yZVBhbiA9IGZ1bmN0aW9uIHJlc3RvcmVQYW4oKSB7XG4gICAgICBpZiAocGFuRW5hYmxlZCkge1xuICAgICAgICBjeS51c2VyUGFubmluZ0VuYWJsZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXN0b3JlQm94U2VsbiA9IGZ1bmN0aW9uIHJlc3RvcmVCb3hTZWxuKCkge1xuICAgICAgaWYgKGJveEVuYWJsZWQpIHtcbiAgICAgICAgY3kuYm94U2VsZWN0aW9uRW5hYmxlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc3RvcmVHZXN0dXJlcyA9IGZ1bmN0aW9uIHJlc3RvcmVHZXN0dXJlcygpIHtcbiAgICAgIHJlc3RvcmVHcmFiKCk7XG4gICAgICByZXN0b3JlWm9vbSgpO1xuICAgICAgcmVzdG9yZVBhbigpO1xuICAgICAgcmVzdG9yZUJveFNlbG4oKTtcbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZVBpeGVsUmF0aW8pO1xuXG4gICAgYmluZGluZ3Mub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHVwZGF0ZVBpeGVsUmF0aW8oKTtcbiAgICB9KS5vbihvcHRpb25zLm9wZW5NZW51RXZlbnRzLCBvcHRpb25zLnNlbGVjdG9yLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdGFyZ2V0ID0gdGhpczsgLy8gUmVtZW1iZXIgd2hpY2ggbm9kZSB0aGUgY29udGV4dCBtZW51IGlzIGZvclxuICAgICAgdmFyIGVsZSA9IHRoaXM7XG4gICAgICB2YXIgaXNDeSA9IHRoaXMgPT09IGN5O1xuXG4gICAgICBpZiAoaW5HZXN0dXJlKSB7XG4gICAgICAgIHBhcmVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgICAgIGluR2VzdHVyZSA9IGZhbHNlO1xuXG4gICAgICAgIHJlc3RvcmVHZXN0dXJlcygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29tbWFuZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIHJlcyA9IG9wdGlvbnMuY29tbWFuZHModGFyZ2V0KTtcbiAgICAgICAgaWYgKHJlcy50aGVuKSB7XG4gICAgICAgICAgcmVzLnRoZW4oZnVuY3Rpb24gKF9jb21tYW5kcykge1xuICAgICAgICAgICAgY29tbWFuZHMgPSBfY29tbWFuZHM7XG4gICAgICAgICAgICBvcGVuTWVudSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmRzID0gcmVzO1xuICAgICAgICAgIG9wZW5NZW51KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbW1hbmRzID0gb3B0aW9ucy5jb21tYW5kcztcbiAgICAgICAgb3Blbk1lbnUoKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gb3Blbk1lbnUoKSB7XG4gICAgICAgIGlmICghY29tbWFuZHMgfHwgY29tbWFuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgem9vbUVuYWJsZWQgPSBjeS51c2VyWm9vbWluZ0VuYWJsZWQoKTtcbiAgICAgICAgY3kudXNlclpvb21pbmdFbmFibGVkKGZhbHNlKTtcblxuICAgICAgICBwYW5FbmFibGVkID0gY3kudXNlclBhbm5pbmdFbmFibGVkKCk7XG4gICAgICAgIGN5LnVzZXJQYW5uaW5nRW5hYmxlZChmYWxzZSk7XG5cbiAgICAgICAgYm94RW5hYmxlZCA9IGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKTtcbiAgICAgICAgY3kuYm94U2VsZWN0aW9uRW5hYmxlZChmYWxzZSk7XG5cbiAgICAgICAgZ3JhYmJhYmxlID0gdGFyZ2V0LmdyYWJiYWJsZSAmJiB0YXJnZXQuZ3JhYmJhYmxlKCk7XG4gICAgICAgIGlmIChncmFiYmFibGUpIHtcbiAgICAgICAgICB0YXJnZXQudW5ncmFiaWZ5KCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcnAgPSB2b2lkIDAsXG4gICAgICAgICAgICBydyA9IHZvaWQgMCxcbiAgICAgICAgICAgIHJoID0gdm9pZCAwLFxuICAgICAgICAgICAgcnMgPSB2b2lkIDA7XG4gICAgICAgIGlmICghaXNDeSAmJiBlbGUgJiYgZWxlLmlzTm9kZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIGVsZS5pc05vZGUoKSAmJiAhZWxlLmlzUGFyZW50KCkgJiYgIW9wdGlvbnMuYXRNb3VzZSkge1xuICAgICAgICAgIC8vIElmIGl0J3MgYSBub2RlLCB0aGUgZGVmYXVsdCBzcG90bGlnaHQgcmFkaXVzIGZvciBhIG5vZGUgaXMgdGhlIG5vZGUgd2lkdGhcbiAgICAgICAgICBycCA9IGVsZS5yZW5kZXJlZFBvc2l0aW9uKCk7XG4gICAgICAgICAgcncgPSBlbGUucmVuZGVyZWRPdXRlcldpZHRoKCk7XG4gICAgICAgICAgcmggPSBlbGUucmVuZGVyZWRPdXRlckhlaWdodCgpO1xuICAgICAgICAgIHJzID0gcncgLyAyO1xuICAgICAgICAgIC8vIElmIGFkYXB0YXRpdmVOb2Rlc3BvdGxpZ2h0UmFkaXVzIGlzIG5vdCBlbmFibGVkIGFuZCBtaW58bWF4U3BvdGxpZ2hyUmFkaXVzIGlzIGRlZmluZWQsIHVzZSB0aG9zZSBpbnN0ZWFkXG4gICAgICAgICAgcnMgPSAhb3B0aW9ucy5hZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyAmJiBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWF4KHJzLCBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIGl0J3MgdGhlIGJhY2tncm91bmQgb3IgYW4gZWRnZSwgdGhlIHNwb3RsaWdodCByYWRpdXMgaXMgdGhlIG1pbnxtYXhTcG90bGlnaHRSYWRpdXNcbiAgICAgICAgICBycCA9IGUucmVuZGVyZWRQb3NpdGlvbiB8fCBlLmN5UmVuZGVyZWRQb3NpdGlvbjtcbiAgICAgICAgICBydyA9IDE7XG4gICAgICAgICAgcmggPSAxO1xuICAgICAgICAgIHJzID0gcncgLyAyO1xuICAgICAgICAgIHJzID0gb3B0aW9ucy5taW5TcG90bGlnaHRSYWRpdXMgPyBNYXRoLm1heChycywgb3B0aW9ucy5taW5TcG90bGlnaHRSYWRpdXMpIDogcnM7XG4gICAgICAgICAgcnMgPSBvcHRpb25zLm1heFNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWluKHJzLCBvcHRpb25zLm1heFNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgICAgfVxuXG4gICAgICAgIG9mZnNldCA9IGdldE9mZnNldChjb250YWluZXIpO1xuXG4gICAgICAgIGN0cnggPSBycC54O1xuICAgICAgICBjdHJ5ID0gcnAueTtcbiAgICAgICAgciA9IHJ3IC8gMiArIChvcHRpb25zLm1lbnVSYWRpdXMgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IG9wdGlvbnMubWVudVJhZGl1cyh0YXJnZXQpIDogTnVtYmVyKG9wdGlvbnMubWVudVJhZGl1cykpO1xuICAgICAgICBjb250YWluZXJTaXplID0gKHIgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcpICogMjtcbiAgICAgICAgdXBkYXRlUGl4ZWxSYXRpbygpO1xuXG4gICAgICAgIHNldFN0eWxlcyhwYXJlbnQsIHtcbiAgICAgICAgICB3aWR0aDogY29udGFpbmVyU2l6ZSArICdweCcsXG4gICAgICAgICAgaGVpZ2h0OiBjb250YWluZXJTaXplICsgJ3B4JyxcbiAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgIGxlZnQ6IHJwLnggLSByICsgJ3B4JyxcbiAgICAgICAgICB0b3A6IHJwLnkgLSByICsgJ3B4J1xuICAgICAgICB9KTtcbiAgICAgICAgY3JlYXRlTWVudUl0ZW1zKHIsIHJzKTtcbiAgICAgICAgcXVldWVEcmF3QmcociwgcnMpO1xuXG4gICAgICAgIGFjdGl2ZUNvbW1hbmRJID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGluR2VzdHVyZSA9IHRydWU7XG4gICAgICAgIGdlc3R1cmVTdGFydEV2ZW50ID0gZTtcbiAgICAgIH1cbiAgICB9KS5vbignY3h0ZHJhZyB0YXBkcmFnJywgb3B0aW9ucy5zZWxlY3RvciwgZHJhZ0hhbmRsZXIgPSBmdW5jdGlvbiBkcmFnSGFuZGxlcihlKSB7XG5cbiAgICAgIGlmICghaW5HZXN0dXJlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTsgLy8gT3RoZXJ3aXNlLCBvbiBtb2JpbGUsIHRoZSBwdWxsLWRvd24gcmVmcmVzaCBnZXN0dXJlIGdldHMgYWN0aXZhdGVkXG5cbiAgICAgIHZhciBvcmlnRSA9IGUub3JpZ2luYWxFdmVudDtcbiAgICAgIHZhciBpc1RvdWNoID0gb3JpZ0UudG91Y2hlcyAmJiBvcmlnRS50b3VjaGVzLmxlbmd0aCA+IDA7XG5cbiAgICAgIHZhciBwYWdlWCA9IChpc1RvdWNoID8gb3JpZ0UudG91Y2hlc1swXS5wYWdlWCA6IG9yaWdFLnBhZ2VYKSAtIHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgIHZhciBwYWdlWSA9IChpc1RvdWNoID8gb3JpZ0UudG91Y2hlc1swXS5wYWdlWSA6IG9yaWdFLnBhZ2VZKSAtIHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgYWN0aXZlQ29tbWFuZEkgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHZhciBkeCA9IHBhZ2VYIC0gb2Zmc2V0LmxlZnQgLSBjdHJ4O1xuICAgICAgdmFyIGR5ID0gcGFnZVkgLSBvZmZzZXQudG9wIC0gY3RyeTtcblxuICAgICAgaWYgKGR4ID09PSAwKSB7XG4gICAgICAgIGR4ID0gMC4wMTtcbiAgICAgIH1cblxuICAgICAgdmFyIGQgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgICAgdmFyIGNvc1RoZXRhID0gKGR5ICogZHkgLSBkICogZCAtIGR4ICogZHgpIC8gKC0yICogZCAqIGR4KTtcbiAgICAgIHZhciB0aGV0YSA9IE1hdGguYWNvcyhjb3NUaGV0YSk7XG5cbiAgICAgIHZhciBydyA9IHZvaWQgMDtcbiAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmlzTm9kZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIHRhcmdldC5pc05vZGUoKSAmJiAhdGFyZ2V0LmlzUGFyZW50KCkgJiYgIW9wdGlvbnMuYXRNb3VzZSkge1xuICAgICAgICAvLyBJZiBpdCdzIGEgbm9kZSwgdGhlIGRlZmF1bHQgc3BvdGxpZ2h0IHJhZGl1cyBmb3IgYSBub2RlIGlzIHRoZSBub2RlIHdpZHRoXG4gICAgICAgIHJ3ID0gdGFyZ2V0LnJlbmRlcmVkT3V0ZXJXaWR0aCgpO1xuICAgICAgICBycyA9IHJ3IC8gMjtcbiAgICAgICAgLy8gSWYgYWRhcHRhdGl2ZU5vZGVzcG90bGlnaHRSYWRpdXMgaXMgbm90IGVuYWJsZWQgYW5kIG1pbnxtYXhTcG90bGlnaHJSYWRpdXMgaXMgZGVmaW5lZCwgdXNlIHRob3NlIGluc3RlYWRcbiAgICAgICAgcnMgPSAhb3B0aW9ucy5hZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyAmJiBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWF4KHJzLCBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgICAgcnMgPSAhb3B0aW9ucy5hZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyAmJiBvcHRpb25zLm1heFNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWluKHJzLCBvcHRpb25zLm1heFNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGl0J3MgdGhlIGJhY2tncm91bmQgb3IgYW4gZWRnZSwgdGhlIHNwb3RsaWdodCByYWRpdXMgaXMgdGhlIG1pbnxtYXhTcG90bGlnaHRSYWRpdXNcbiAgICAgICAgcncgPSAxO1xuICAgICAgICBycyA9IHJ3IC8gMjtcbiAgICAgICAgcnMgPSBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWF4KHJzLCBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgICAgcnMgPSBvcHRpb25zLm1heFNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWluKHJzLCBvcHRpb25zLm1heFNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgIH1cblxuICAgICAgciA9IHJ3IC8gMiArIChvcHRpb25zLm1lbnVSYWRpdXMgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IG9wdGlvbnMubWVudVJhZGl1cyh0YXJnZXQpIDogTnVtYmVyKG9wdGlvbnMubWVudVJhZGl1cykpO1xuICAgICAgaWYgKGQgPCBycyArIG9wdGlvbnMuc3BvdGxpZ2h0UGFkZGluZyB8fCB0eXBlb2Ygb3B0aW9ucy5vdXRzaWRlTWVudUNhbmNlbCA9PT0gXCJudW1iZXJcIiAmJiBkID4gciArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyArIG9wdGlvbnMub3V0c2lkZU1lbnVDYW5jZWwpIHtcbiAgICAgICAgLy9cblxuICAgICAgICBxdWV1ZURyYXdCZyhyLCBycyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHF1ZXVlRHJhd0JnKHIsIHJzKTtcblxuICAgICAgdmFyIHJ4ID0gZHggKiByIC8gZDtcbiAgICAgIHZhciByeSA9IGR5ICogciAvIGQ7XG5cbiAgICAgIGlmIChkeSA+IDApIHtcbiAgICAgICAgdGhldGEgPSBNYXRoLlBJICsgTWF0aC5hYnModGhldGEgLSBNYXRoLlBJKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR0aGV0YSA9IDIgKiBNYXRoLlBJIC8gY29tbWFuZHMubGVuZ3RoO1xuICAgICAgdmFyIHRoZXRhMSA9IE1hdGguUEkgLyAyO1xuICAgICAgdmFyIHRoZXRhMiA9IHRoZXRhMSArIGR0aGV0YTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21tYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzW2ldO1xuXG4gICAgICAgIHZhciBpblRoaXNDb21tYW5kID0gdGhldGExIDw9IHRoZXRhICYmIHRoZXRhIDw9IHRoZXRhMiB8fCB0aGV0YTEgPD0gdGhldGEgKyAyICogTWF0aC5QSSAmJiB0aGV0YSArIDIgKiBNYXRoLlBJIDw9IHRoZXRhMjtcblxuICAgICAgICBpZiAoY29tbWFuZC5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBjb21tYW5kLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaW5UaGlzQ29tbWFuZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluVGhpc0NvbW1hbmQpIHtcbiAgICAgICAgICBhY3RpdmVDb21tYW5kSSA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGV0YTEgKz0gZHRoZXRhO1xuICAgICAgICB0aGV0YTIgKz0gZHRoZXRhO1xuICAgICAgfVxuICAgICAgcXVldWVEcmF3Q29tbWFuZHMocngsIHJ5LCByLCB0aGV0YSwgcnMpO1xuICAgIH0pLm9uKCd0YXBkcmFnJywgZHJhZ0hhbmRsZXIpLm9uKCdjeHR0YXBlbmQgdGFwZW5kJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHBhcmVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgaWYgKGFjdGl2ZUNvbW1hbmRJICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIHNlbGVjdCA9IGNvbW1hbmRzW2FjdGl2ZUNvbW1hbmRJXS5zZWxlY3Q7XG5cbiAgICAgICAgaWYgKHNlbGVjdCkge1xuICAgICAgICAgIHNlbGVjdC5hcHBseSh0YXJnZXQsIFt0YXJnZXQsIGdlc3R1cmVTdGFydEV2ZW50LCBlXSk7XG4gICAgICAgICAgYWN0aXZlQ29tbWFuZEkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5HZXN0dXJlID0gZmFsc2U7XG5cbiAgICAgIHJlc3RvcmVHZXN0dXJlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgdmFyIGhhbmRsZXJzID0gZGF0YS5oYW5kbGVycztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoID0gaGFuZGxlcnNbaV07XG5cbiAgICAgIGlmIChoLnNlbGVjdG9yID09PSAnY29yZScpIHtcbiAgICAgICAgY3kub2ZmKGguZXZlbnRzLCBoLmZuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5Lm9mZihoLmV2ZW50cywgaC5zZWxlY3RvciwgaC5mbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZVBpeGVsUmF0aW8pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveUluc3RhbmNlKCkge1xuICAgIHJlZHJhd2luZyA9IGZhbHNlO1xuXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIHdyYXBwZXIucmVtb3ZlKCk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVycygpO1xuXG4gIHJldHVybiB7XG4gICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIGRlc3Ryb3lJbnN0YW5jZSgpO1xuICAgIH1cbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3h0bWVudTtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIFNpbXBsZSwgaW50ZXJuYWwgT2JqZWN0LmFzc2lnbigpIHBvbHlmaWxsIGZvciBvcHRpb25zIG9iamVjdHMgZXRjLlxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3JjcyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZmlsdGVyKGZ1bmN0aW9uIChzcmMpIHtcbiAgICByZXR1cm4gc3JjICE9IG51bGw7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgcmV0dXJuIHRndFtrXSA9IHNyY1trXTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgZGVmYXVsdHMgPSB7XG4gIG1lbnVSYWRpdXM6IGZ1bmN0aW9uIG1lbnVSYWRpdXMoZWxlKSB7XG4gICAgcmV0dXJuIDEwMDtcbiAgfSwgLy8gdGhlIHJhZGl1cyBvZiB0aGUgY2lyY3VsYXIgbWVudSBpbiBwaXhlbHNcbiAgc2VsZWN0b3I6ICdub2RlJywgLy8gZWxlbWVudHMgbWF0Y2hpbmcgdGhpcyBDeXRvc2NhcGUuanMgc2VsZWN0b3Igd2lsbCB0cmlnZ2VyIGN4dG1lbnVzXG4gIGNvbW1hbmRzOiBbLy8gYW4gYXJyYXkgb2YgY29tbWFuZHMgdG8gbGlzdCBpbiB0aGUgbWVudSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgYXJyYXlcbiAgICAvKlxuICAgIHsgLy8gZXhhbXBsZSBjb21tYW5kXG4gICAgICBmaWxsQ29sb3I6ICdyZ2JhKDIwMCwgMjAwLCAyMDAsIDAuNzUpJywgLy8gb3B0aW9uYWw6IGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBpdGVtXG4gICAgICBjb250ZW50OiAnYSBjb21tYW5kIG5hbWUnIC8vIGh0bWwvdGV4dCBjb250ZW50IHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbWVudVxuICAgICAgY29udGVudFN0eWxlOiB7fSwgLy8gY3NzIGtleTp2YWx1ZSBwYWlycyB0byBzZXQgdGhlIGNvbW1hbmQncyBjc3MgaW4ganMgaWYgeW91IHdhbnRcbiAgICAgIHNlbGVjdDogZnVuY3Rpb24oZWxlKXsgLy8gYSBmdW5jdGlvbiB0byBleGVjdXRlIHdoZW4gdGhlIGNvbW1hbmQgaXMgc2VsZWN0ZWRcbiAgICAgICAgY29uc29sZS5sb2coIGVsZS5pZCgpICkgLy8gYGVsZWAgaG9sZHMgdGhlIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIGVsZW1lbnRcbiAgICAgIH0sXG4gICAgICBlbmFibGVkOiB0cnVlIC8vIHdoZXRoZXIgdGhlIGNvbW1hbmQgaXMgc2VsZWN0YWJsZVxuICAgIH1cbiAgICAqL1xuICBdLCAvLyBmdW5jdGlvbiggZWxlICl7IHJldHVybiBbIC8qLi4uKi8gXSB9LCAvLyBleGFtcGxlIGZ1bmN0aW9uIGZvciBjb21tYW5kc1xuICBmaWxsQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNzUpJywgLy8gdGhlIGJhY2tncm91bmQgY29sb3VyIG9mIHRoZSBtZW51XG4gIGFjdGl2ZUZpbGxDb2xvcjogJ3JnYmEoMSwgMTA1LCAyMTcsIDAuNzUpJywgLy8gdGhlIGNvbG91ciB1c2VkIHRvIGluZGljYXRlIHRoZSBzZWxlY3RlZCBjb21tYW5kXG4gIGFjdGl2ZVBhZGRpbmc6IDIwLCAvLyBhZGRpdGlvbmFsIHNpemUgaW4gcGl4ZWxzIGZvciB0aGUgYWN0aXZlIGNvbW1hbmRcbiAgaW5kaWNhdG9yU2l6ZTogMjQsIC8vIHRoZSBzaXplIGluIHBpeGVscyBvZiB0aGUgcG9pbnRlciB0byB0aGUgYWN0aXZlIGNvbW1hbmQsIHdpbGwgZGVmYXVsdCB0byB0aGUgbm9kZSBzaXplIGlmIHRoZSBub2RlIHNpemUgaXMgc21hbGxlciB0aGFuIHRoZSBpbmRpY2F0b3Igc2l6ZSwgXG4gIHNlcGFyYXRvcldpZHRoOiAzLCAvLyB0aGUgZW1wdHkgc3BhY2luZyBpbiBwaXhlbHMgYmV0d2VlbiBzdWNjZXNzaXZlIGNvbW1hbmRzXG4gIHNwb3RsaWdodFBhZGRpbmc6IDQsIC8vIGV4dHJhIHNwYWNpbmcgaW4gcGl4ZWxzIGJldHdlZW4gdGhlIGVsZW1lbnQgYW5kIHRoZSBzcG90bGlnaHRcbiAgYWRhcHRhdGl2ZU5vZGVTcG90bGlnaHRSYWRpdXM6IGZhbHNlLCAvLyBzcGVjaWZ5IHdoZXRoZXIgdGhlIHNwb3RsaWdodCByYWRpdXMgc2hvdWxkIGFkYXB0IHRvIHRoZSBub2RlIHNpemVcbiAgbWluU3BvdGxpZ2h0UmFkaXVzOiAyNCwgLy8gdGhlIG1pbmltdW0gcmFkaXVzIGluIHBpeGVscyBvZiB0aGUgc3BvdGxpZ2h0IChpZ25vcmVkIGZvciB0aGUgbm9kZSBpZiBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyBpcyBlbmFibGVkIGJ1dCBzdGlsbCB1c2VkIGZvciB0aGUgZWRnZSAmIGJhY2tncm91bmQpXG4gIG1heFNwb3RsaWdodFJhZGl1czogMzgsIC8vIHRoZSBtYXhpbXVtIHJhZGl1cyBpbiBwaXhlbHMgb2YgdGhlIHNwb3RsaWdodCAoaWdub3JlZCBmb3IgdGhlIG5vZGUgaWYgYWRhcHRhdGl2ZU5vZGVTcG90bGlnaHRSYWRpdXMgaXMgZW5hYmxlZCBidXQgc3RpbGwgdXNlZCBmb3IgdGhlIGVkZ2UgJiBiYWNrZ3JvdW5kKVxuICBvcGVuTWVudUV2ZW50czogJ2N4dHRhcHN0YXJ0IHRhcGhvbGQnLCAvLyBzcGFjZS1zZXBhcmF0ZWQgY3l0b3NjYXBlIGV2ZW50cyB0aGF0IHdpbGwgb3BlbiB0aGUgbWVudTsgb25seSBgY3h0dGFwc3RhcnRgIGFuZC9vciBgdGFwaG9sZGAgd29yayBoZXJlXG4gIGl0ZW1Db2xvcjogJ3doaXRlJywgLy8gdGhlIGNvbG91ciBvZiB0ZXh0IGluIHRoZSBjb21tYW5kJ3MgY29udGVudFxuICBpdGVtVGV4dFNoYWRvd0NvbG9yOiAndHJhbnNwYXJlbnQnLCAvLyB0aGUgdGV4dCBzaGFkb3cgY29sb3VyIG9mIHRoZSBjb21tYW5kJ3MgY29udGVudFxuICB6SW5kZXg6IDk5OTksIC8vIHRoZSB6LWluZGV4IG9mIHRoZSB1aSBkaXZcbiAgYXRNb3VzZTogZmFsc2UsIC8vIGRyYXcgbWVudSBhdCBtb3VzZSBwb3NpdGlvblxuICBvdXRzaWRlTWVudUNhbmNlbDogZmFsc2UgLy8gaWYgc2V0IHRvIGEgbnVtYmVyLCB0aGlzIHdpbGwgY2FuY2VsIHRoZSBjb21tYW5kIGlmIHRoZSBwb2ludGVyIGlzIHJlbGVhc2VkIG91dHNpZGUgb2YgdGhlIHNwb3RsaWdodCwgcGFkZGVkIGJ5IHRoZSBudW1iZXIgZ2l2ZW5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgcmVtb3ZlRWxlcyA9IGZ1bmN0aW9uIHJlbW92ZUVsZXMocXVlcnkpIHtcbiAgdmFyIGFuY2VzdG9yID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBkb2N1bWVudDtcblxuICB2YXIgZWxzID0gYW5jZXN0b3IucXVlcnlTZWxlY3RvckFsbChxdWVyeSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWwgPSBlbHNbaV07XG5cbiAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgfVxufTtcblxudmFyIHNldFN0eWxlcyA9IGZ1bmN0aW9uIHNldFN0eWxlcyhlbCwgc3R5bGUpIHtcbiAgdmFyIHByb3BzID0gT2JqZWN0LmtleXMoc3R5bGUpO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gcHJvcHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZWwuc3R5bGVbcHJvcHNbaV1dID0gc3R5bGVbcHJvcHNbaV1dO1xuICB9XG59O1xuXG52YXIgY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQob3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG9wdGlvbnMudGFnIHx8ICdkaXYnKTtcblxuICBlbC5jbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzIHx8ICcnO1xuXG4gIGlmIChvcHRpb25zLnN0eWxlKSB7XG4gICAgc2V0U3R5bGVzKGVsLCBvcHRpb25zLnN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBlbDtcbn07XG5cbnZhciBnZXRQaXhlbFJhdGlvID0gZnVuY3Rpb24gZ2V0UGl4ZWxSYXRpbygpIHtcbiAgcmV0dXJuIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59O1xuXG52YXIgZ2V0T2Zmc2V0ID0gZnVuY3Rpb24gZ2V0T2Zmc2V0KGVsKSB7XG4gIHZhciBvZmZzZXQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICByZXR1cm4ge1xuICAgIGxlZnQ6IG9mZnNldC5sZWZ0ICsgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0ICsgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpWydwYWRkaW5nLWxlZnQnXSkgKyBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlbJ2JvcmRlci1sZWZ0LXdpZHRoJ10pLFxuICAgIHRvcDogb2Zmc2V0LnRvcCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wICsgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpWydwYWRkaW5nLXRvcCddKSArIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KVsnYm9yZGVyLXRvcC13aWR0aCddKVxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7IHJlbW92ZUVsZXM6IHJlbW92ZUVsZXMsIHNldFN0eWxlczogc2V0U3R5bGVzLCBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LCBnZXRQaXhlbFJhdGlvOiBnZXRQaXhlbFJhdGlvLCBnZXRPZmZzZXQ6IGdldE9mZnNldCB9O1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIGN4dG1lbnUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyByZWdpc3RlcnMgdGhlIGV4dGVuc2lvbiBvbiBhIGN5dG9zY2FwZSBsaWIgcmVmXG52YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihjeXRvc2NhcGUpIHtcbiAgaWYgKCFjeXRvc2NhcGUpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCdjb3JlJywgJ2N4dG1lbnUnLCBjeHRtZW51KTsgLy8gcmVnaXN0ZXIgd2l0aCBjeXRvc2NhcGUuanNcbn07XG5cbmlmICh0eXBlb2YgY3l0b3NjYXBlICE9PSAndW5kZWZpbmVkJykge1xuICAvLyBleHBvc2UgdG8gZ2xvYmFsIGN5dG9zY2FwZSAoaS5lLiB3aW5kb3cuY3l0b3NjYXBlKVxuICByZWdpc3RlcihjeXRvc2NhcGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZ2lzdGVyO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCJpbXBvcnQgeyBJdGVtVmlldyB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IEp1Z2dsIH0gZnJvbSAnLi92aXN1YWxpemF0aW9uJztcbmltcG9ydCB7IEpVR0dMX1ZJRVdfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgSnVnZ2xWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xuICAgIGNvbnN0cnVjdG9yKGxlYWYsIHNldHRpbmdzLCBwbHVnaW4sIGluaXRpYWxOb2Rlcykge1xuICAgICAgICBzdXBlcihsZWFmKTtcbiAgICAgICAgLy8gVE9ETzogTWF5YmUgbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZVxuICAgICAgICBsZWFmLnNldFBpbm5lZCh0cnVlKTtcbiAgICAgICAgY29uc3QgY29yZVN0b3JlID0gcGx1Z2luLmNvcmVTdG9yZXNbc2V0dGluZ3MuY29yZVN0b3JlXTtcbiAgICAgICAgY29uc3Qgc3RvcmVzID0ge1xuICAgICAgICAgICAgZGF0YVN0b3JlczogW2NvcmVTdG9yZV0uY29uY2F0KHBsdWdpbi5zdG9yZXMpLFxuICAgICAgICAgICAgY29yZVN0b3JlOiBjb3JlU3RvcmVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5qdWdnbCA9IG5ldyBKdWdnbCh0aGlzLmNvbnRhaW5lckVsLmNoaWxkcmVuWzFdLCBwbHVnaW4sIHN0b3Jlcywgc2V0dGluZ3MsIGluaXRpYWxOb2Rlcyk7XG4gICAgICAgIHRoaXMuYWRkQ2hpbGQodGhpcy5qdWdnbCk7XG4gICAgfVxuICAgIGdldERpc3BsYXlUZXh0KCkge1xuICAgICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgaW50ZXJhY3RpdmU6IEVpdGhlciB0aGUgYWN0aXZlIHdvcmtzcGFjZSBvciB0aGUgbG9jYWwgZ3JhcGhcbiAgICAgICAgcmV0dXJuICdKdWdnbCc7XG4gICAgfVxuICAgIGdldFZpZXdUeXBlKCkge1xuICAgICAgICByZXR1cm4gSlVHR0xfVklFV19UWVBFO1xuICAgIH1cbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IHtOb2RlQ29sbGVjdGlvbiwgTm9kZVNpbmd1bGFyfSBmcm9tIFwiY3l0b3NjYXBlXCI7XG5cbiAgICBleHBvcnQgbGV0IG5hbWU6IHN0cmluZztcbiAgICBleHBvcnQgbGV0IG5vZGVzOiBOb2RlQ29sbGVjdGlvbjtcbiAgICBleHBvcnQgbGV0IG9uQ2xpY2tUZXh0O1xuICAgIGV4cG9ydCBsZXQgb25DbGlja0J1dHRvbjtcbiAgICBleHBvcnQgbGV0IGljb24gPSBudWxsO1xuICAgIGV4cG9ydCBsZXQgaWNvbl90b29sdGlwID0gbnVsbDtcbiAgICBleHBvcnQgbGV0IGN0eG1lbnU7XG4gICAgbGV0IGRpc3BsYXlMaXN0ID0gdHJ1ZTtcblxuICAgIGxldCBzZXREaXNwbGF5TGlzdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBkaXNwbGF5TGlzdCA9ICFkaXNwbGF5TGlzdDtcbiAgICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImp1Z2dsLWxpc3QtaGVhZGVyXCIgb246Y2xpY2s9e3NldERpc3BsYXlMaXN0fT5cbiAgICB7bmFtZX1cbjwvZGl2PlxueyNpZiBkaXNwbGF5TGlzdH1cbiAgICB7I2VhY2ggbm9kZXMuc29ydCgoYSwgYikgPT4gYS5kYXRhKFwibmFtZVwiKS5sb2NhbGVDb21wYXJlKGIuZGF0YShcIm5hbWVcIikpKSBhcyB2fVxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZS1pdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZS1pdGVtLXNlbGYgaXMtY2xpY2thYmxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWUtaXRlbS1pbm5lciBqdWdnbC1saXN0LXRleHRcIiBvbjpjbGljaz17KGUpID0+IG9uQ2xpY2tUZXh0KHYsIGUpfVxuICAgICAgICAgICAgICAgICAgICAgb246Y29udGV4dG1lbnU9eyhlKSA9PiBjdHhtZW51KHYsIGUpfVxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjoge3Yuc3R5bGUoJ2JhY2tncm91bmQtY29sb3InKX1cIj5cbiAgICAgICAgICAgICAgICAgICAge3YuZGF0YShcIm5hbWVcIil9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyNpZiBpY29ufVxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImp1Z2dsLWJ1dHRvbiBqdWdnbC1idXR0b24tcGFuZVwiIG9uOmNsaWNrPXtvbkNsaWNrQnV0dG9uKHYpfSBhcmlhLWxhYmVsPXtpY29uX3Rvb2x0aXB9ID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9IFwid2lkdGg6MTRweDtoZWlnaHQ6MTRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD17aWNvbn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIHsvZWFjaH1cbnsvaWZ9IiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQge0p1Z2dsfSBmcm9tIFwiLi4vdml6L3Zpc3VhbGl6YXRpb25cIjtcbiAgICBpbXBvcnQge05vZGVDb2xsZWN0aW9uLCBOb2RlU2luZ3VsYXJ9IGZyb20gXCJjeXRvc2NhcGVcIjtcbiAgICBpbXBvcnQgY3l0b3NjYXBlIGZyb20gXCJjeXRvc2NhcGVcIjtcbiAgICBpbXBvcnQge0NMQVNTX0hBUkRfRklMVEVSRUR9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbiAgICBpbXBvcnQgTm9kZXNMaXN0IGZyb20gXCIuL05vZGVzTGlzdC5zdmVsdGVcIjtcbiAgICBpbXBvcnQge01lbnV9IGZyb20gXCJvYnNpZGlhblwiO1xuICAgIGltcG9ydCB7Vml6SWR9IGZyb20gXCJqdWdnbC1hcGlcIjtcbiAgICBpbXBvcnQge2ljb25zfSBmcm9tICcuLi91aS9pY29ucyc7XG5cbiAgICBsZXQgdml6OiBKdWdnbCA9IG51bGw7XG4gICAgbGV0IHZpc2libGU6IE5vZGVDb2xsZWN0aW9uID0gY3l0b3NjYXBlKCkuY29sbGVjdGlvbigpO1xuICAgIGxldCBoaWRkZW46IE5vZGVDb2xsZWN0aW9uID0gY3l0b3NjYXBlKCkuY29sbGVjdGlvbigpO1xuICAgIGV4cG9ydCBjb25zdCBzZXRWaXogPSBmdW5jdGlvbiAoanVnZ2w6IEp1Z2dsKSB7XG4gICAgICAgIGlmICghanVnZ2wpIHtcbiAgICAgICAgICAgIHZpeiA9IG51bGw7XG4gICAgICAgICAgICB2aXNpYmxlID0gY3l0b3NjYXBlKCkuY29sbGVjdGlvbigpO1xuICAgICAgICAgICAgaGlkZGVuID0gY3l0b3NjYXBlKCkuY29sbGVjdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZpeiA9IGp1Z2dsO1xuICAgICAgICAvLyBUT0RPOiBDYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGxpa2Ugbm90IEhBUkQgRklMVEVSRUQsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc3R5bGluZy5cbiAgICAgICAgdmlzaWJsZSA9IHZpei52aXoubm9kZXMoXCI6dmlzaWJsZVwiKTtcbiAgICAgICAgaGlkZGVuID0gdml6LnZpei5ub2RlcyhgLiR7Q0xBU1NfSEFSRF9GSUxURVJFRH1gKTtcbiAgICB9XG4gICAgbGV0IGN0eE1lbnUgPSBmdW5jdGlvbihub2RlOiBOb2RlU2luZ3VsYXIsIGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZmlsZU1lbnUgPSBuZXcgTWVudSgpOyAvLyBDcmVhdGVzIGVtcHR5IGZpbGUgbWVudVxuICAgICAgICBjb25zdCBpZCA9IFZpeklkLmZyb21Ob2RlKG5vZGUpO1xuICAgICAgICBjb25zdCBmaWxlID0gdml6LnBsdWdpbi5tZXRhZGF0YS5nZXRGaXJzdExpbmtwYXRoRGVzdChpZC5pZCwgJycpO1xuICAgICAgICBpZiAoIShmaWxlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAvLyBob29rIGZvciBwbHVnaW5zIHRvIHBvcHVsYXRlIG1lbnUgd2l0aCBcImZpbGUtYXdhcmVcIiBtZW51IGl0ZW1zXG4gICAgICAgICAgICB2aXoucGx1Z2luLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignZmlsZS1tZW51JywgZmlsZU1lbnUsIGZpbGUsICdteS1jb250ZXh0LW1lbnUnLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB2aXoubW9kZS5maWxsTWVudShmaWxlTWVudSwgbm9kZSk7XG4gICAgICAgIGZpbGVNZW51LnNob3dBdFBvc2l0aW9uKHt4OiBlLngsIHk6IGUueX0pO1xuICAgIH1cbiAgICBsZXQgY2xpY2tUeHQgPSBmdW5jdGlvbihub2RlOiBOb2RlU2luZ3VsYXIsIGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdml6LnBsdWdpbi5vcGVuRmlsZUZyb21Ob2RlKG5vZGUsIGUubWV0YUtleSk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJCdXR0b25DbGljayA9IGZ1bmN0aW9uKG5vZGU6IE5vZGVTaW5ndWxhcikge1xuICAgICAgICBub2RlLnJlbW92ZUNsYXNzKENMQVNTX0hBUkRfRklMVEVSRUQpO1xuICAgICAgICB2aXoub25HcmFwaENoYW5nZWQodHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJqdWdnbC1ub2Rlcy1wYW5lXCI+XG4gICAgPE5vZGVzTGlzdCBub2Rlcz17dmlzaWJsZX0gbmFtZT1cIk5vZGVzIGluIGdyYXBoXCIgY3R4bWVudT17Y3R4TWVudX0gb25DbGlja1RleHQ9e2NsaWNrVHh0fS8+XG5cbiAgICA8Tm9kZXNMaXN0IG5vZGVzPXtoaWRkZW59IG5hbWU9XCJIaWRkZW4gbm9kZXNcIiBjdHhtZW51PXtjdHhNZW51fSBvbkNsaWNrVGV4dD17Y2xpY2tUeHR9IGljb249e2ljb25zLmFnX3VuaGlkZX1cbiAgICBpY29uX3Rvb2x0aXA9XCJTaG93IGluIGdyYXBoXCIgb25DbGlja0J1dHRvbj17ZmlsdGVyQnV0dG9uQ2xpY2t9IC8+XG48L2Rpdj4iLCJpbXBvcnQgeyBGdXp6eVN1Z2dlc3RNb2RhbCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCAqIGFzIG1kaUljb25zIGZyb20gJ0BtZGkvanMnO1xuaW1wb3J0IHsgcGF0aFRvU3ZnIH0gZnJvbSAnLi4vdWkvaWNvbnMnO1xuZXhwb3J0IGNsYXNzIEljb25Nb2RhbCBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsIHtcbiAgICBjb25zdHJ1Y3RvcihhcHAsIGNhbGxiYWNrLCBjb2xvcikge1xuICAgICAgICBzdXBlcihhcHApO1xuICAgICAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgIHRoaXMucmVzdWx0Q29udGFpbmVyRWwuYWRkQ2xhc3MoJ2p1Z2dsLWljb24tcGlja2VyJyk7XG4gICAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjtcbiAgICB9XG4gICAgZ2V0SXRlbVRleHQoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5uYW1lO1xuICAgIH1cbiAgICBnZXRJdGVtcygpIHtcbiAgICAgICAgY29uc3QgaWNvbnMgPSBbeyBuYW1lOiAnTm8gaWNvbicsIHBhdGg6ICcnLCBjb2xvcjogdGhpcy5jb2xvciB9XTtcbiAgICAgICAgaWNvbnMucHVzaCguLi5PYmplY3Qua2V5cyhtZGlJY29ucykubWFwKChrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBuYW1lOiBrLnNsaWNlKDMpLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpLnRyaW0oKSxcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgcGF0aDogbWRpSWNvbnNba10sXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuY29sb3IgfTtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gaWNvbnM7XG4gICAgfVxuICAgIG9uQ2hvb3NlSXRlbShpdGVtLCBldnQpIHtcbiAgICAgICAgdGhpcy5jYWxsYmFjayhpdGVtKTtcbiAgICB9XG4gICAgcmVuZGVyU3VnZ2VzdGlvbihpdGVtLCBlbCkge1xuICAgICAgICBlbC5lbXB0eSgpO1xuICAgICAgICBjb25zdCBpY29uSHRtbCA9IHBhdGhUb1N2ZyhpdGVtLml0ZW0ucGF0aCk7XG4gICAgICAgIC8vICAgIC8vIGNvbnN0IHJlbmRlcmVkUmVzdWx0ID0gZWwuY3JlYXRlRWwoJ3NwYW4nLCB7Y2xzOiAnJ30pO1xuICAgICAgICBjb25zdCBpbm5lclJlc3VsdCA9IGVsLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgICAgICAgY2xzOiAncmVhY3QtaWNvbiAnLFxuICAgICAgICB9KTtcbiAgICAgICAgaW5uZXJSZXN1bHQuaW5uZXJIVE1MID0gaWNvbkh0bWw7XG4gICAgICAgIC8vIGVsLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgICBzdXBlci5yZW5kZXJTdWdnZXN0aW9uKGl0ZW0sIGVsKTtcbiAgICAgICAgLy8gICBjbHM6ICcnLFxuICAgICAgICAvLyAgIHRleHQ6IGl0ZW0uaXRlbS5uYW1lLFxuICAgICAgICAvLyB9KTtcbiAgICB9XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7U0hBUEVTfSBmcm9tIFwiLi4vdml6L3N0eWxlc2hlZXRcIjtcbiAgICBpbXBvcnQgdHlwZSB7U3R5bGVHcm91cCwgSWNvbiwgSUp1Z2dsUGx1Z2lufSBmcm9tIFwianVnZ2wtYXBpXCI7XG4gICAgaW1wb3J0IHtJY29uTW9kYWx9IGZyb20gXCIuL2ljb24tbW9kYWxcIjtcbiAgICAvLyBpbXBvcnQgSnVnZ2xQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcbiAgICBpbXBvcnQge2VtcHR5U3R5bGVHcm91cH0gZnJvbSBcIi4uL3NldHRpbmdzXCI7XG4gICAgaW1wb3J0IHtpY29uc30gZnJvbSBcIi4uL3VpL2ljb25zXCI7XG5cbiAgICBleHBvcnQgbGV0IGdyb3VwczogU3R5bGVHcm91cFtdO1xuICAgIGV4cG9ydCBsZXQgdGl0bGU6IHN0cmluZzsvL1xuICAgIGV4cG9ydCBsZXQgb25DaGFuZ2VGaWx0ZXI7XG4gICAgZXhwb3J0IGxldCBvbkNoYW5nZUdyb3VwcztcbiAgICBleHBvcnQgbGV0IHBsdWdpbjogSUp1Z2dsUGx1Z2luO1xuICAgIGxldCBvbk5ld0dyb3VwID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGdyb3Vwcy5wdXNoKHsuLi5lbXB0eVN0eWxlR3JvdXB9KTtcbiAgICAgICAgZ3JvdXBzID0gZ3JvdXBzO1xuICAgICAgICBvbkNoYW5nZUdyb3VwcygpO1xuICAgIH1cbiAgICBsZXQgb25EZWxldGVHcm91cCA9IGZ1bmN0aW9uKGdyb3VwOiBTdHlsZUdyb3VwKSB7XG4gICAgICAgIGdyb3Vwcy5yZW1vdmUoZ3JvdXApO1xuICAgICAgICBncm91cHMgPSBncm91cHM7XG4gICAgICAgIG9uQ2hhbmdlRmlsdGVyKCk7XG4gICAgICAgIG9uQ2hhbmdlR3JvdXBzKCk7XG4gICAgfVxuICAgIGxldCBvbkljb25CdXR0b24gPSBmdW5jdGlvbihncm91cDogU3R5bGVHcm91cCkge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBmdW5jdGlvbihpY29uOiBJY29uKSB7XG4gICAgICAgICAgICBncm91cC5pY29uID0gaWNvbjtcbiAgICAgICAgICAgIG9uQ2hhbmdlR3JvdXBzKCk7XG4gICAgICAgICAgICBncm91cHMgPSBncm91cHM7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGljb25Nb2RhbCA9IG5ldyBJY29uTW9kYWwocGx1Z2luLmFwcCwgY2FsbGJhY2ssIGdyb3VwLmljb24uY29sb3IpO1xuICAgICAgICBpY29uTW9kYWwub3BlbigpO1xuICAgIH1cbiAgICBsZXQgc2hvd0dyb3VwID0gZnVuY3Rpb24oZ3JvdXA6IFN0eWxlR3JvdXAsIHNob3c6IGJvb2xlYW4pIHtcbiAgICAgICAgZ3JvdXAuc2hvd0luUGFuZSA9IHNob3c7XG4gICAgICAgIGdyb3VwcyA9IGdyb3VwcztcbiAgICB9XG5cbiAgICBsZXQgY2hhbmdlU2hvdyA9IGZ1bmN0aW9uKGdyb3VwOiBTdHlsZUdyb3VwKSB7XG4gICAgICAgIGdyb3VwLnNob3cgPSAhZ3JvdXAuc2hvdztcbiAgICAgICAgb25DaGFuZ2VHcm91cHMoKTtcbiAgICAgICAgZ3JvdXBzID0gZ3JvdXBzO1xuICAgIH1cblxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJqdWdnbC1saXN0LWhlYWRlclwiPlxuICAgIHt0aXRsZX1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLWdyb3VwLWNvbnRhaW5lclwiPlxuICAgIHsjZWFjaCBncm91cHMgYXMgZ3JvdXB9XG4gICAgICAgIHsjaWYgZ3JvdXAuc2hvd0luUGFuZX1cbiAgICAgICAgPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtcGFuZS1sZWZ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2thYmxlLWljb25cIiBhcmlhLWxhYmVsPVwiSGlkZSBncm91cCBvcHRpb25zXCIgb246Y2xpY2s9e3Nob3dHcm91cChncm91cCwgZmFsc2UpfSBmbGV4LWJhc2lzPVwiMTAwJVwiID5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBjbGFzcz1cInJpZ2h0LXRyaWFuZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTk0LjksMjAuOGMtMS40LTIuNS00LjEtNC4xLTcuMS00LjFIMTIuMmMtMywwLTUuNywxLjYtNy4xLDQuMWMtMS4zLDIuNC0xLjIsNS4yLDAuMiw3LjZMNDMuMSw4OGMxLjUsMi4zLDQsMy43LDYuOSwzLjcgczUuNC0xLjQsNi45LTMuN2wzNy44LTU5LjZDOTYuMSwyNiw5Ni4yLDIzLjIsOTQuOSwyMC44TDk0LjksMjAuOHpcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2thYmxlLWljb25cIiBhcmlhLWxhYmVsPXtncm91cC5zaG93ID8gXCJIaWRlIGdyb3VwXCIgOiBcIlNob3cgZ3JvdXBcIn0gb246Y2xpY2s9e2NoYW5nZVNob3coZ3JvdXApfSBmbGV4LWJhc2lzPVwiMTAwJVwiID5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBjbGFzcz1cInJpZ2h0LXRyaWFuZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPXtncm91cC5zaG93ID8gaWNvbnMuYWdfdW5oaWRlIDogaWNvbnMuYWdfaGlkZX0+XG4gICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGZpbHRlci4uLlwiIGJpbmQ6dmFsdWU9e2dyb3VwLmZpbHRlcn0gb246Y2hhbmdlPXtvbkNoYW5nZUZpbHRlcn0vPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgYXJpYS1sYWJlbD1cIkRlbGV0ZSBncm91cFwiIG9uOmNsaWNrPXtvbkRlbGV0ZUdyb3VwKGdyb3VwKX0gZmxleC1iYXNpcz1cIjEwMCVcIiA+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBjbGFzcz1cImNyb3NzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1LjQsMTIuNmwtMi45LDIuOUw0Ny4xLDUwTDEyLjYsODQuNmwyLjksMi45TDUwLDUyLjlsMzQuNiwzNC42bDIuOS0yLjlMNTIuOSw1MGwzNC42LTM0LjZsLTIuOS0yLjlMNTAsNDcuMUwxNS40LDEyLjZ6IFwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLXBhbmUtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBhcmlhLWxhYmVsPVwiQ2xpY2sgdG8gY2hhbmdlIGNvbG9yXCIgYmluZDp2YWx1ZT17Z3JvdXAuY29sb3J9IGZsZXgtYmFzaXM9XCIxMDAlXCIgb246Y2hhbmdlPXtvbkNoYW5nZUdyb3Vwc30vPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c2VsZWN0IGJpbmQ6dmFsdWU9e2dyb3VwLnNoYXBlfSBjbGFzcz1cImRyb3Bkb3duXCIgb246Ymx1cj17b25DaGFuZ2VHcm91cHN9PlxuICAgICAgICAgICAgICAgIHsjZWFjaCBTSEFQRVMgYXMgc2hhcGV9XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9e3NoYXBlfT57c2hhcGV9PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1wYW5lLWxlZnRcIj5cbiAgICAgICAgICAgICAgICB7I2lmIGdyb3VwLmljb24ucGF0aH1cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIGFyaWEtbGFiZWw9XCJDbGljayB0byBjaGFuZ2UgaWNvbiBjb2xvclwiIGJpbmQ6dmFsdWU9e2dyb3VwLmljb24uY29sb3J9IGZsZXgtYmFzaXM9XCIxMDAlXCIgb246Y2hhbmdlPXtvbkNoYW5nZUdyb3Vwc30vPlxuICAgICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJqdWdnbC1pY29uLWJ1dHRvblwiIG9uOmNsaWNrPXtvbkljb25CdXR0b24oZ3JvdXApfT5cbiAgICAgICAgICAgICAgICB7I2lmIGdyb3VwLmljb24ucGF0aH1cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT0gXCJ3aWR0aDoyNHB4O2hlaWdodDoyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Y29sb3JcIiBkPXtncm91cC5pY29uLnBhdGh9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgICAgICAge2dyb3VwLmljb24ubmFtZX1cbiAgICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1wYW5lLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgIHtNYXRoLnJvdW5kKGdyb3VwLnNpemUqIDEwMCkgLyAxMDB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNsaWRlclwiIHR5cGU9XCJyYW5nZVwiIG1pbj1cIjAuMDFcIiBtYXg9XCIxMFwiIHN0ZXA9XCJhbnlcIiBiaW5kOnZhbHVlPXtncm91cC5zaXplfSBhcmlhLWxhYmVsPVwiU2l6ZVwiIG9uOmNoYW5nZT17b25DaGFuZ2VHcm91cHN9IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtZ3JvdXAtaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmVcIiBhcmlhLWxhYmVsPVwiU2hvdyBncm91cCBvcHRpb25zXCIgb246Y2xpY2s9e3Nob3dHcm91cChncm91cCwgdHJ1ZSl9ID5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgY2xhc3M9XCJyaWdodC10cmlhbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHRyYW5zZm9ybT1cInJvdGF0ZSgyNzAgNTAgNTApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOTQuOSwyMC44Yy0xLjQtMi41LTQuMS00LjEtNy4xLTQuMUgxMi4yYy0zLDAtNS43LDEuNi03LjEsNC4xYy0xLjMsMi40LTEuMiw1LjIsMC4yLDcuNkw0My4xLDg4YzEuNSwyLjMsNCwzLjcsNi45LDMuNyBzNS40LTEuNCw2LjktMy43bDM3LjgtNTkuNkM5Ni4xLDI2LDk2LjIsMjMuMiw5NC45LDIwLjhMOTQuOSwyMC44elwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVyfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgey9pZn1cbiAgICB7L2VhY2h9XG4gICAgPGRpdiBjbGFzcz1cImdyYXBoLWNvbG9yLWJ1dHRvbi1jb250YWluZXJcIiBvbjpjbGljaz17b25OZXdHcm91cH0+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtb2QtY3RhXCI+XG4gICAgICAgICAgICBOZXcgZ3JvdXBcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IHtKdWdnbH0gZnJvbSBcIi4uL3Zpei92aXN1YWxpemF0aW9uXCI7XG4gICAgaW1wb3J0IFN0eWxlR3JvdXBzIGZyb20gXCIuL1N0eWxlR3JvdXBzLnN2ZWx0ZVwiO1xuICAgIGltcG9ydCB0eXBlIHtJSnVnZ2xQbHVnaW59IGZyb20gXCJqdWdnbC1hcGlcIjtcblxuICAgIGV4cG9ydCBsZXQgdml6OiBKdWdnbDtcbiAgICBleHBvcnQgbGV0IHBsdWdpbjogSUp1Z2dsUGx1Z2luO1xuICAgIGxldCBzZXR0aW5ncyA9IHBsdWdpbj8uc2V0dGluZ3M7XG5cbiAgICBleHBvcnQgY29uc3Qgc2V0Vml6ID0gZnVuY3Rpb24gKF92aXo6IEp1Z2dsKSB7XG4gICAgICAgIHZpeiA9IF92aXo7XG4gICAgICAgIGlmICh2aXopIHtcbiAgICAgICAgICAgIGxvY2FsR3JvdXBzID0gdml6LnNldHRpbmdzLnN0eWxlR3JvdXBzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9jYWxHcm91cHMgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBsb2NhbEdyb3VwcyA9IFtdO1xuICAgIGxldCBnbG9iYWxHcm91cHMgPSBzZXR0aW5ncy5nbG9iYWxTdHlsZUdyb3VwcztcbiAgICBsZXQgb25DaGFuZ2VHcm91cHMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHZpeikge1xuICAgICAgICAgICAgdml6LnVwZGF0ZVN0eWxlc2hlZXQoKVxuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBvbkNoYW5nZUdyb3Vwc0dsb2JhbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBwbHVnaW4uc2F2ZURhdGEoc2V0dGluZ3MpO1xuICAgICAgICBwbHVnaW4uYWN0aXZlR3JhcGhzKCkuZm9yRWFjaChqID0+IGoudXBkYXRlU3R5bGVzaGVldCgpKTtcbiAgICB9XG4gICAgbGV0IG9uQ2hhbmdlRmlsdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh2aXopIHtcbiAgICAgICAgICAgIHZpei5hc3NpZ25TdHlsZUdyb3VwcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBvbkNoYW5nZUZpbHRlckdsb2JhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcGx1Z2luLnNhdmVEYXRhKHNldHRpbmdzKTtcbiAgICAgICAgcGx1Z2luLmFjdGl2ZUdyYXBocygpLmZvckVhY2goaiA9PiBqLmFzc2lnblN0eWxlR3JvdXBzKCkpO1xuICAgIH1cblxuPC9zY3JpcHQ+XG48ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtcGFuZVwiPlxuICAgIDxTdHlsZUdyb3VwcyBncm91cHM9e2xvY2FsR3JvdXBzfSB0aXRsZT1cIkxvY2FsIHN0eWxlIGdyb3Vwc1wiIG9uQ2hhbmdlR3JvdXBzPXtvbkNoYW5nZUdyb3Vwc30gb25DaGFuZ2VGaWx0ZXI9e29uQ2hhbmdlRmlsdGVyfSBwbHVnaW49e3BsdWdpbn0gLz5cbiAgICA8U3R5bGVHcm91cHMgZ3JvdXBzPXtnbG9iYWxHcm91cHN9IHRpdGxlPVwiR2xvYmFsIHN0eWxlIGdyb3Vwc1wiIG9uQ2hhbmdlR3JvdXBzPXtvbkNoYW5nZUdyb3Vwc0dsb2JhbH0gb25DaGFuZ2VGaWx0ZXI9e29uQ2hhbmdlRmlsdGVyR2xvYmFsfSBwbHVnaW49e3BsdWdpbn0gLz5cbjwvZGl2PiIsImltcG9ydCB7IEl0ZW1WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgSlVHR0xfTk9ERVNfVklFV19UWVBFLCBKVUdHTF9TVFlMRV9WSUVXX1RZUEUsIEpVR0dMX1ZJRVdfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgTm9kZXNQYW5lIGZyb20gJy4vTm9kZXNQYW5lLnN2ZWx0ZSc7XG5pbXBvcnQgU3R5bGVQYW5lIGZyb20gJy4vU3R5bGVQYW5lLnN2ZWx0ZSc7XG5leHBvcnQgY2xhc3MgSnVnZ2xQYW5lIGV4dGVuZHMgSXRlbVZpZXcge1xuICAgIGNvbnN0cnVjdG9yKGxlYWYsIHBsdWdpbikge1xuICAgICAgICBzdXBlcihsZWFmKTtcbiAgICAgICAgdGhpcy5hY3RpdmVWaXogPSBudWxsO1xuICAgICAgICB0aGlzLmNoYW5nZVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcztcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMucGx1Z2luLmFwcC53b3Jrc3BhY2Uub24oJ2FjdGl2ZS1sZWFmLWNoYW5nZScsIChsZWFmKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2VSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVZpei5vZmZyZWYodGhpcy5jaGFuZ2VSZWYpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZWFmKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxlYWYudmlldy5nZXRWaWV3VHlwZSgpID09PSBKVUdHTF9WSUVXX1RZUEUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVml6ID0gbGVhZi52aWV3Lmp1Z2dsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVJlZiA9IGFjdGl2ZVZpei5vbignZWxlbWVudHNDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Lm9uQWN0aXZlVml6Q2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVml6ID09PSB0aGlzLmFjdGl2ZVZpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVml6ID0gYWN0aXZlVml6O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghKGxlYWYudmlldyBpbnN0YW5jZW9mIEp1Z2dsUGFuZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVWaXogPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVml6ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25BY3RpdmVWaXpDaGFuZ2UoKTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBzZXRWaXoodml6KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVml6ID0gdml6O1xuICAgICAgICB0aGlzLm9uQWN0aXZlVml6Q2hhbmdlKCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEp1Z2dsTm9kZXNQYW5lIGV4dGVuZHMgSnVnZ2xQYW5lIHtcbiAgICBjb25zdHJ1Y3RvcihsZWFmLCBwbHVnaW4pIHtcbiAgICAgICAgc3VwZXIobGVhZiwgcGx1Z2luKTtcbiAgICAgICAgdGhpcy5pY29uID0gJ2FnLW5vZGUtbGlzdCc7XG4gICAgfVxuICAgIG9ubG9hZCgpIHtcbiAgICAgICAgc3VwZXIub25sb2FkKCk7XG4gICAgICAgIHRoaXMucGFuZSA9IG5ldyBOb2Rlc1BhbmUoeyB0YXJnZXQ6IHRoaXMuY29udGVudEVsIH0pO1xuICAgIH1cbiAgICBnZXREaXNwbGF5VGV4dCgpIHtcbiAgICAgICAgcmV0dXJuICdKdWdnbCBub2Rlcyc7XG4gICAgfVxuICAgIGdldFZpZXdUeXBlKCkge1xuICAgICAgICByZXR1cm4gSlVHR0xfTk9ERVNfVklFV19UWVBFO1xuICAgIH1cbiAgICBvbkFjdGl2ZVZpekNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucGFuZSkge1xuICAgICAgICAgICAgdGhpcy5wYW5lLnNldFZpei5iaW5kKHRoaXMucGFuZSkodGhpcy5hY3RpdmVWaXopO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEp1Z2dsU3R5bGVQYW5lIGV4dGVuZHMgSnVnZ2xQYW5lIHtcbiAgICBjb25zdHJ1Y3RvcihsZWFmLCBwbHVnaW4pIHtcbiAgICAgICAgc3VwZXIobGVhZiwgcGx1Z2luKTtcbiAgICAgICAgdGhpcy5pY29uID0gJ2FnLXN0eWxlJztcbiAgICB9XG4gICAgb25sb2FkKCkge1xuICAgICAgICBzdXBlci5vbmxvYWQoKTtcbiAgICAgICAgdGhpcy5wYW5lID0gbmV3IFN0eWxlUGFuZSh7IHRhcmdldDogdGhpcy5jb250ZW50RWwsIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgcGx1Z2luOiB0aGlzLnBsdWdpbixcbiAgICAgICAgICAgIH0gfSk7XG4gICAgfVxuICAgIGdldERpc3BsYXlUZXh0KCkge1xuICAgICAgICByZXR1cm4gJ0p1Z2dsIHN0eWxlJztcbiAgICB9XG4gICAgZ2V0Vmlld1R5cGUoKSB7XG4gICAgICAgIHJldHVybiBKVUdHTF9TVFlMRV9WSUVXX1RZUEU7XG4gICAgfVxuICAgIG9uQWN0aXZlVml6Q2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy5wYW5lKSB7XG4gICAgICAgICAgICB0aGlzLnBhbmUuc2V0Vml6LmJpbmQodGhpcy5wYW5lKSh0aGlzLmFjdGl2ZVZpeik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBEQVRBX0ZPTERFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBWaXpJZCB9IGZyb20gJ2p1Z2dsLWFwaSc7XG5leHBvcnQgY2xhc3MgV29ya3NwYWNlTWFuYWdlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocGx1Z2luKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ3JhcGhzID0gW107XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmFkYXB0ZXIgPSB0aGlzLnBsdWdpbi5hcHAudmF1bHQuYWRhcHRlcjtcbiAgICB9XG4gICAgYXN5bmMgb25sb2FkKCkge1xuICAgICAgICBzdXBlci5vbmxvYWQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRhcHRlci5ta2RpcihEQVRBX0ZPTERFUih0aGlzLnBsdWdpbi52YXVsdCkpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAgICAgICAgICAgIHRoaXMuZ3JhcGhzID0gKGF3YWl0IHRoaXMuYWRhcHRlci5saXN0KERBVEFfRk9MREVSKHRoaXMucGx1Z2luLnZhdWx0KSkpLmZvbGRlcnMubWFwKChzKSA9PiBwYXRoLmJhc2VuYW1lKHMpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2F2ZUdyYXBoKG5hbWUsIHZpeikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVyID0gREFUQV9GT0xERVIodml6LnZhdWx0KSArIG5hbWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIubWtkaXIoZm9sZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoSnNvbiA9IHZpei52aXouanNvbigpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLndyaXRlKGZvbGRlciArICcvZ3JhcGguanNvbicsIEpTT04uc3RyaW5naWZ5KGdyYXBoSnNvbikpO1xuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB2aXouc2V0dGluZ3M7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIud3JpdGUoZm9sZGVyICsgJy9zZXR0aW5ncy5qc29uJywgSlNPTi5zdHJpbmdpZnkoc2V0dGluZ3MpKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5ncmFwaHMuY29udGFpbnMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBocy5wdXNoKG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBsb2FkR3JhcGgobmFtZSwgdml6KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXIgPSBEQVRBX0ZPTERFUih2aXoudmF1bHQpICsgbmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoID0gSlNPTi5wYXJzZShhd2FpdCB0aGlzLmFkYXB0ZXIucmVhZChmb2xkZXIgKyAnL2dyYXBoLmpzb24nKSk7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IEpTT04ucGFyc2UoYXdhaXQgdGhpcy5hZGFwdGVyLnJlYWQoZm9sZGVyICsgJy9zZXR0aW5ncy5qc29uJykpO1xuICAgICAgICAgICAgdml6LnZpei5qc29uKGdyYXBoKTtcbiAgICAgICAgICAgIHZpei5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICAgICAgLy8gQWZ0ZXIgbG9hZGluZyBpbiB0aGUgZ3JhcGgsIHdlIGhhdmUgdG8gdmFsaWRhdGUgd2l0aCB0aGUgZGF0YXN0b3JlcyB0aGF0IHRoZSBkYXRhIGlzIHN0aWxsIHVwLXRvLWRhdGU6XG4gICAgICAgICAgICAvLyBUaGlzIGNvdWxkIGNyZWF0ZSByYWNlLWNvbmRpdGlvbiBjb25mbGljdHMgcG9zc2libHkgd2hlbiBhIG5vZGUgdXBkYXRlcyBpbiB0aGUgbWVhbnRpbWUuXG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHZpei52aXoubm9kZXMoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5vZGVzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB2SWQgPSBWaXpJZC5mcm9tTm9kZShub2Rlc1tpXSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdG9yZSBvZiB2aXouZGF0YXN0b3Jlcy5kYXRhU3RvcmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZS5zdG9yZUlkKCkgPT09IHZJZC5zdG9yZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBzdG9yZS5yZWZyZXNoTm9kZSh2SWQsIHZpeik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgO1xuICAgIGFzeW5jIGRlbGV0ZUdyYXBoKG5hbWUsIHZpZXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRhcHRlci5ybWRpcihEQVRBX0ZPTERFUiArIG5hbWUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5ncmFwaHMucmVtb3ZlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgZXhwb3J0IGxldCBjYW5jZWxDYWxsYmFjaztcbiAgICBleHBvcnQgbGV0IGNvbnRpbnVlQ2FsbGJhY2s7XG48L3NjcmlwdD5cblxuV2FybmluZzogSnVnZ2wgaXMgbm90IG9wdGltaXplZCBmb3IgbGFyZ2UgZ3JhcGhzLiBXZSBhZHZpc2Ugbm90IHRvIHVzZSB0aGUgZ2xvYmFsIGdyYXBoIGlmIHlvdXIgdmF1bHRcbmNvbnRhaW5zIG1vcmUgdGhhbiAyNTAgbm90ZXMgdG8gcHJldmVudCBPYnNpZGlhbiBmcm9tIGZyZWV6aW5nLiA8YnIgLz5cblxuPGJ1dHRvbiBjbGFzcz0nbW9kLWN0YScgb246Y2xpY2s9e2NhbmNlbENhbGxiYWNrfT5DYW5jZWw8L2J1dHRvbj5cbjxidXR0b24gY2xhc3M9XCJtb2QtY3RhXCIgb246Y2xpY2s9e2NvbnRpbnVlQ2FsbGJhY2t9PlVuZGVyc3Rvb2QsIGNvbnRpbnVlPC9idXR0b24+IiwiaW1wb3J0IHsgTW9kYWwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgR2xvYmFsR3JhcGhNb2RhbCBmcm9tICcuL0dsb2JhbEdyYXBoTW9kYWwuc3ZlbHRlJztcbmV4cG9ydCBjbGFzcyBHbG9iYWxXYXJuaW5nTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG4gICAgY29uc3RydWN0b3IoYXBwLCBjYWxsYmFjaykge1xuICAgICAgICBzdXBlcihhcHApO1xuICAgICAgICBjb25zdCBtb2RhbCA9IHRoaXM7XG4gICAgICAgIG5ldyBHbG9iYWxHcmFwaE1vZGFsKHsgdGFyZ2V0OiB0aGlzLm1vZGFsRWwsIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgY2FuY2VsQ2FsbGJhY2s6IHRoaXMuY2xvc2UuYmluZChtb2RhbCksXG4gICAgICAgICAgICAgICAgY29udGludWVDYWxsYmFjazogY2FsbGJhY2ssXG4gICAgICAgICAgICB9IH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbiwgcGFyc2VZYW1sLCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IEp1Z2dsR3JhcGhTZXR0aW5nc1RhYiwgRGVmYXVsdEp1Z2dsU2V0dGluZ3MsIExBWU9VVFMsIGdlblN0eWxlR3JvdXBzLCBlbXB0eVN0eWxlR3JvdXAsIH0gZnJvbSAnLi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBKdWdnbCB9IGZyb20gJy4vdml6L3Zpc3VhbGl6YXRpb24nO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2ZXIgfSBmcm9tICcuL2ltYWdlLXNlcnZlcic7XG5pbXBvcnQgeyBPQlNJRElBTl9TVE9SRV9OQU1FLCBPYnNpZGlhblN0b3JlIH0gZnJvbSAnLi9vYnNpZGlhbi1zdG9yZSc7XG5pbXBvcnQgY3l0b3NjYXBlIGZyb20gJ2N5dG9zY2FwZSc7XG5pbXBvcnQgbmF2aWdhdG9yIGZyb20gJ2N5dG9zY2FwZS1uYXZpZ2F0b3InO1xuaW1wb3J0IHBvcHBlciBmcm9tICdjeXRvc2NhcGUtcG9wcGVyJztcbmltcG9ydCBjb2xhIGZyb20gJ2N5dG9zY2FwZS1jb2xhJztcbmltcG9ydCBhdnNkZiBmcm9tICdjeXRvc2NhcGUtYXZzZGYnO1xuaW1wb3J0IGRhZ3JlIGZyb20gJ2N5dG9zY2FwZS1kYWdyZSc7XG5pbXBvcnQgZDNGb3JjZSBmcm9tICdjeXRvc2NhcGUtZDMtZm9yY2UnO1xuaW1wb3J0IGRibGNsaWNrIGZyb20gJ2N5dG9zY2FwZS1kYmxjbGljayc7XG5pbXBvcnQgY3h0bWVudSBmcm9tICdjeXRvc2NhcGUtY3h0bWVudSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJy4vdWkvaWNvbnMnO1xuaW1wb3J0IHsgU1RZTEVTSEVFVF9QQVRIIH0gZnJvbSAnLi92aXovc3R5bGVzaGVldCc7XG5pbXBvcnQgeyBKdWdnbFZpZXcgfSBmcm9tICcuL3Zpei9qdWdnbC12aWV3JztcbmltcG9ydCB7IEp1Z2dsTm9kZXNQYW5lLCBKdWdnbFN0eWxlUGFuZSB9IGZyb20gJy4vcGFuZS92aWV3JztcbmltcG9ydCB7IEpVR0dMX05PREVTX1ZJRVdfVFlQRSwgSlVHR0xfU1RZTEVfVklFV19UWVBFLCBKVUdHTF9WSUVXX1RZUEUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VNYW5hZ2VyIH0gZnJvbSAnLi92aXovd29ya3NwYWNlcy93b3Jrc3BhY2UtbWFuYWdlcic7XG5pbXBvcnQgeyBWaXpJZCB9IGZyb20gJ2p1Z2dsLWFwaSc7XG5pbXBvcnQgeyBHbG9iYWxXYXJuaW5nTW9kYWwgfSBmcm9tICcuL3VpL3NldHRpbmdzL2dsb2JhbC1ncmFwaC1tb2RhbCc7XG4vLyBJIGdvdCB0aGlzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1NpbGVudFZvaWQxMy9UZW1wbGF0ZXIvYmxvYi9tYXN0ZXIvc3JjL2Z1enp5X3N1Z2dlc3Rlci50c1xuLy8gY29uc3QgU1RBVFVTX09GRkxJTkUgPSAnTmVvNGogc3RyZWFtIG9mZmxpbmUnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnVnZ2xQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmNvcmVTdG9yZXMgPSB7fTtcbiAgICAgICAgdGhpcy5zdG9yZXMgPSBbXTtcbiAgICB9XG4gICAgYXN5bmMgb25sb2FkKCkge1xuICAgICAgICBzdXBlci5vbmxvYWQoKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0xvYWRpbmcgSnVnZ2wnKTtcbiAgICAgICAgbmF2aWdhdG9yKGN5dG9zY2FwZSk7XG4gICAgICAgIGN5dG9zY2FwZS51c2UocG9wcGVyKTtcbiAgICAgICAgY3l0b3NjYXBlLnVzZShjb2xhKTtcbiAgICAgICAgY3l0b3NjYXBlLnVzZShkYWdyZSk7XG4gICAgICAgIGN5dG9zY2FwZS51c2UoYXZzZGYpO1xuICAgICAgICBjeXRvc2NhcGUudXNlKGQzRm9yY2UpO1xuICAgICAgICBjeXRvc2NhcGUudXNlKGRibGNsaWNrKTtcbiAgICAgICAgY3l0b3NjYXBlLnVzZShjeHRtZW51KTtcbiAgICAgICAgYWRkSWNvbnMoKTtcbiAgICAgICAgdGhpcy52YXVsdCA9IHRoaXMuYXBwLnZhdWx0O1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZTtcbiAgICAgICAgdGhpcy5wYXRoID0gdGhpcy52YXVsdC5nZXRSb290KCkucGF0aDtcbiAgICAgICAgY29uc3Qgb2JzaWRpYW5TdG9yZSA9IG5ldyBPYnNpZGlhblN0b3JlKHRoaXMpO1xuICAgICAgICB0aGlzLmFkZENoaWxkKG9ic2lkaWFuU3RvcmUpO1xuICAgICAgICB0aGlzLndvcmtzcGFjZU1hbmFnZXIgPSBuZXcgV29ya3NwYWNlTWFuYWdlcih0aGlzKTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZCh0aGlzLndvcmtzcGFjZU1hbmFnZXIpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29yZVN0b3JlKG9ic2lkaWFuU3RvcmUsIE9CU0lESUFOX1NUT1JFX05BTUUpO1xuICAgICAgICBEZWZhdWx0SnVnZ2xTZXR0aW5ncy5nbG9iYWxTdHlsZUdyb3VwcyA9IGdlblN0eWxlR3JvdXBzKHRoaXMpO1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdEp1Z2dsU2V0dGluZ3MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsU3R5bGVHcm91cHMgPSB0aGlzLnNldHRpbmdzLmdsb2JhbFN0eWxlR3JvdXBzLm1hcCgoZykgPT4gT2JqZWN0LmFzc2lnbih7fSwgZW1wdHlTdHlsZUdyb3VwLCBnKSk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRKdWdnbFNldHRpbmdzLmdyYXBoU2V0dGluZ3MsIHRoaXMuc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZW1iZWRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRKdWdnbFNldHRpbmdzLmVtYmVkU2V0dGluZ3MsIHRoaXMuc2V0dGluZ3MuZW1iZWRTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogJ29wZW4tdmlzJyxcbiAgICAgICAgICAgIG5hbWU6ICdPcGVuIGxvY2FsIGdyYXBoIG9mIG5vdGUnLFxuICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbkxvY2FsR3JhcGgobmFtZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiAnb3Blbi12aXMtZ2xvYmFsJyxcbiAgICAgICAgICAgIG5hbWU6ICdPcGVuIGdsb2JhbCBncmFwaCcsXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbkdsb2JhbEdyYXBoKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBKdWdnbEdyYXBoU2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignZmlsZS1tZW51JywgKG1lbnUsIGZpbGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoJ09wZW4gSnVnZ2wnKS5zZXRJY29uKCdkb3QtbmV0d29yaycpXG4gICAgICAgICAgICAgICAgICAgIC5vbkNsaWNrKChldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUuZXh0ZW5zaW9uID09PSAnbWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5Mb2NhbEdyYXBoKGZpbGUuYmFzZW5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTG9jYWxHcmFwaChmaWxlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IoJ2p1Z2dsJywgYXN5bmMgKHNyYywgZWwsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIC8vIHRpbWVvdXQgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgZGl2IGlzIGFkZGVkIHRvIHRoZSB3aW5kb3cuIFRoZSBncmFwaCB3aWxsIG9ubHkgbG9hZCBpZlxuICAgICAgICAgICAgLy8gaXQgaXMgYXR0YWNoZWQuIFRoaXMgd2lsbCBhbHNvIHByZXZlbnQgYW55IGFubm95aW5nIGhpY2t1cHMgd2hpbGUgbG9vYWRpbmcgdGhlIGdyYXBoLlxuICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VZYW1sKHNyYyk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNldHRpbmdzLmVtYmVkU2V0dGluZ3MsIHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKExBWU9VVFMuY29udGFpbnMoc2V0dGluZ3MubGF5b3V0KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsYXlvdXQuIENob29zZSBvbmUgZnJvbSAke0xBWU9VVFN9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVN0b3JlczogW3RoaXMuY29yZVN0b3Jlc1tzZXR0aW5ncy5jb3JlU3RvcmVdXS5jb25jYXQodGhpcy5zdG9yZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29yZVN0b3JlOiB0aGlzLmNvcmVTdG9yZXNbc2V0dGluZ3MuY29yZVN0b3JlXSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUud2lkdGggPSBzZXR0aW5ncy53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFyc2VkKS5jb250YWlucygnbG9jYWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgSnVnZ2woZWwsIHRoaXMsIHN0b3Jlcywgc2V0dGluZ3MsIFtwYXJzZWQubG9jYWxdKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXMocGFyc2VkKS5jb250YWlucygnd29ya3NwYWNlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyYXBoID0gbmV3IEp1Z2dsKGVsLCB0aGlzLCBzdG9yZXMsIHNldHRpbmdzLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy53b3Jrc3BhY2VNYW5hZ2VyLmdyYXBocy5jb250YWlucyhwYXJzZWQud29ya3NwYWNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCByZWNvZ25pemUgd29ya3NwYWNlLiBEaWQgeW91IG1pc3NwZWxsIGl0cyBuYW1lPycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChncmFwaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLndvcmtzcGFjZU1hbmFnZXIubG9hZEdyYXBoKHBhcnNlZC53b3Jrc3BhY2UsIGdyYXBoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyhwYXJzZWQpLmNvbnRhaW5zKCdvcWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvYnNpZGlhbi1xdWVyeS1sYW5ndWFnZScgaW4gdGhpcy5hcHAucGx1Z2lucy5wbHVnaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBhd2FpdCB0aGlzLmFwcC5wbHVnaW5zLnBsdWdpbnNbJ29ic2lkaWFuLXF1ZXJ5LWxhbmd1YWdlJ10uc2VhcmNoKHBhcnNlZC5vcWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmV4cGFuZEluaXRpYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENoaWxkKG5ldyBKdWdnbChlbCwgdGhpcywgc3RvcmVzLCBzZXR0aW5ncywgc2VhcmNoUmVzdWx0cy5tYXAoKGZpbGUpID0+IGZpbGUudGl0bGUpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBPYnNpZGlhbiBRdWVyeSBMYW5ndWFnZSBwbHVnaW4gaXNuXFwndCBsb2FkZWQsIHNvIGNhbm5vdCBxdWVyeSB1c2luZyBvcWwhJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcXVlcnkuIFNwZWNpZnkgZWl0aGVyIHRoZSBsb2NhbCBwcm9wZXJ0eSBvciB0aGUgd29ya3NwYWNlIHByb3BlcnR5LicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAvLyB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qcGxhdHRlbC9vYnNpZGlhbi1xdWVyeS1sYW5ndWFnZS9ibG9iL21haW4vc3JjL3JlbmRlcmVyLnRzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckVsZW1lbnQuYWRkQ2xhc3MoJ2p1Z2dsLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRWxlbWVudC5pbm5lclRleHQgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChlcnJvckVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzO1xuICAgICAgICAvLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xpYW1jYWluL29ic2lkaWFuLWNhbGVuZGFyLXBsdWdpbi9ibG9iL21hc3Rlci9zcmMvbWFpbi50c1xuICAgICAgICB0aGlzLnJlZ2lzdGVyVmlldyhKVUdHTF9OT0RFU19WSUVXX1RZUEUsIChsZWFmKSA9PiBuZXcgSnVnZ2xOb2Rlc1BhbmUobGVhZiwgcGx1Z2luKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJWaWV3KEpVR0dMX1NUWUxFX1ZJRVdfVFlQRSwgKGxlYWYpID0+IG5ldyBKdWdnbFN0eWxlUGFuZShsZWFmLCBwbHVnaW4pKTtcbiAgICAgICAgY29uc3QgY3JlYXRlTm9kZXNQYW5lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHBsdWdpbi5hcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShKVUdHTF9OT0RFU19WSUVXX1RZUEUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlYWYgPSBwbHVnaW4uYXBwLndvcmtzcGFjZS5nZXRSaWdodExlYWYoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGxlYWYuc2V0Vmlld1N0YXRlKHsgdHlwZTogSlVHR0xfTk9ERVNfVklFV19UWVBFIH0pO1xuICAgICAgICAgICAgfSAvL1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjcmVhdGVTdHlsZVBhbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocGx1Z2luLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKEpVR0dMX1NUWUxFX1ZJRVdfVFlQRSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVhZiA9IHBsdWdpbi5hcHAud29ya3NwYWNlLmdldFJpZ2h0TGVhZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgbGVhZi5zZXRWaWV3U3RhdGUoeyB0eXBlOiBKVUdHTF9TVFlMRV9WSUVXX1RZUEUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KGNyZWF0ZU5vZGVzUGFuZSk7XG4gICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KGNyZWF0ZVN0eWxlUGFuZSk7XG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogJ3Nob3ctbm9kZXMtcGFuZScsXG4gICAgICAgICAgICBuYW1lOiAnT3BlbiBOb2RlcyBQYW5lJyxcbiAgICAgICAgICAgIGNoZWNrQ2FsbGJhY2s6IChjaGVja2luZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGVja2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoSlVHR0xfTk9ERVNfVklFV19UWVBFKS5sZW5ndGggPT09IDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjcmVhdGVOb2Rlc1BhbmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgICAgICAgaWQ6ICdzaG93LXN0eWxlLXBhbmUnLFxuICAgICAgICAgICAgbmFtZTogJ09wZW4gU3R5bGUgUGFuZScsXG4gICAgICAgICAgICBjaGVja0NhbGxiYWNrOiAoY2hlY2tpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKEpVR0dMX1NUWUxFX1ZJRVdfVFlQRSkubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3JlYXRlU3R5bGVQYW5lKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2hlZXRQYXRoID0gU1RZTEVTSEVFVF9QQVRIKHRoaXMudmF1bHQpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLnZhdWx0Lm9uKCdyYXcnLCAoZmlsZSkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKGZpbGUgPT09IHNoZWV0UGF0aCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBVcGRhdGluZyBzdHlsZXNoZWV0IGZyb20gJHtzaGVldFBhdGh9YCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2aWV3IG9mIHRoaXMuYWN0aXZlR3JhcGhzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlldy51cGRhdGVTdHlsZXNoZWV0KCkudGhlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnNldEdsb2JhbEljb24oKTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZChuZXcgSW1hZ2VTZXJ2ZXIodGhpcykpO1xuICAgIH1cbiAgICBzZXRHbG9iYWxJY29uKCkge1xuICAgICAgICBpZiAodGhpcy5yaWJib25JY29uKSB7XG4gICAgICAgICAgICB0aGlzLnJpYmJvbkljb24uZGV0YWNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ2xvYmFsR3JhcGhSaWJib24pIHtcbiAgICAgICAgICAgIHRoaXMucmliYm9uSWNvbiA9IHRoaXMuYWRkUmliYm9uSWNvbignYWctY29uY2VudHJpYycsICdKdWdnbCBnbG9iYWwgZ3JhcGgnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuR2xvYmFsR3JhcGgoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIG9wZW5GaWxlRnJvbU5vZGUobm9kZSwgbmV3TGVhZiA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGlkID0gVml6SWQuZnJvbU5vZGUobm9kZSk7XG4gICAgICAgIGlmICghKGlkLnN0b3JlSWQgPT09ICdjb3JlJykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWxlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChpZC5pZCwgJycpO1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vcGVuRmlsZShmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBkYW5nbGluZyBmaWxlXG4gICAgICAgICAgICAvLyB0b2RvOiBhZGQgZGVmYXVsdCBmb2xkZXJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gaWQuaWQgKyAnLm1kJztcbiAgICAgICAgICAgIGZpbGUgPSBhd2FpdCB0aGlzLnZhdWx0LmNyZWF0ZShmaWxlbmFtZSwgJycpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vcGVuRmlsZShmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG4gICAgYXN5bmMgb3BlbkZpbGUoZmlsZSwgbmV3TGVhZiA9IGZhbHNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWFmKG5ld0xlYWYpLm9wZW5GaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhc3luYyBvcGVuTG9jYWxHcmFwaChuYW1lKSB7XG4gICAgICAgIGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2Uuc3BsaXRBY3RpdmVMZWFmKHRoaXMuc2V0dGluZ3Muc3BsaXREaXJlY3Rpb24pO1xuICAgICAgICAvLyBjb25zdCBxdWVyeSA9IHRoaXMubG9jYWxOZWlnaGJvcmhvb2RDeXBoZXIobmFtZSk7XG4gICAgICAgIGNvbnN0IG5lb3Zpc1ZpZXcgPSBuZXcgSnVnZ2xWaWV3KGxlYWYsIHRoaXMuc2V0dGluZ3MuZ3JhcGhTZXR0aW5ncywgdGhpcywgW25hbWVdKTtcbiAgICAgICAgYXdhaXQgbGVhZi5vcGVuKG5lb3Zpc1ZpZXcpO1xuICAgIH1cbiAgICBhc3luYyBvcGVuR2xvYmFsR3JhcGgoKSB7XG4gICAgICAgIGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhZihmYWxzZSk7XG4gICAgICAgIC8vIGNvbnN0IHF1ZXJ5ID0gdGhpcy5sb2NhbE5laWdoYm9yaG9vZEN5cGhlcihuYW1lKTtcbiAgICAgICAgY29uc3QgbmFtZXMgPSB0aGlzLmFwcC52YXVsdC5nZXRGaWxlcygpLm1hcCgoZikgPT4gZi5leHRlbnNpb24gPT09ICdtZCcgPyBmLmJhc2VuYW1lIDogZi5uYW1lKTtcbiAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA+IDI1MCkge1xuICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBuZXcgR2xvYmFsV2FybmluZ01vZGFsKHRoaXMuYXBwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVvdmlzVmlldyA9IG5ldyBKdWdnbFZpZXcobGVhZiwgdGhpcy5zZXR0aW5ncy5nbG9iYWxHcmFwaFNldHRpbmdzLCB0aGlzLCBuYW1lcyk7XG4gICAgICAgICAgICAgICAgYXdhaXQgbGVhZi5vcGVuKG5lb3Zpc1ZpZXcpO1xuICAgICAgICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1vZGFsLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5lb3Zpc1ZpZXcgPSBuZXcgSnVnZ2xWaWV3KGxlYWYsIHRoaXMuc2V0dGluZ3MuZ2xvYmFsR3JhcGhTZXR0aW5ncywgdGhpcywgbmFtZXMpO1xuICAgICAgICAgICAgYXdhaXQgbGVhZi5vcGVuKG5lb3Zpc1ZpZXcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFjdGl2ZUdyYXBocygpIHtcbiAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBub3QgYSBncmVhdCBtZXRob2QsIG5vIHdheSB0byBmaW5kIGJhY2sgdGhlIGlubGluZSBncmFwaHMhXG4gICAgICAgIHJldHVybiB0aGlzLmFwcC53b3Jrc3BhY2VcbiAgICAgICAgICAgIC5nZXRMZWF2ZXNPZlR5cGUoSlVHR0xfVklFV19UWVBFKVxuICAgICAgICAgICAgLm1hcCgobCkgPT4gbC52aWV3Lmp1Z2dsKTtcbiAgICB9XG4gICAgYXN5bmMgb251bmxvYWQoKSB7XG4gICAgICAgIHN1cGVyLm9udW5sb2FkKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdVbmxvYWRpbmcgSnVnZ2wnKTtcbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLmRldGFjaExlYXZlc09mVHlwZShKVUdHTF9OT0RFU19WSUVXX1RZUEUpO1xuICAgICAgICB0aGlzLmFwcC53b3Jrc3BhY2UuZGV0YWNoTGVhdmVzT2ZUeXBlKEpVR0dMX1NUWUxFX1ZJRVdfVFlQRSk7XG4gICAgICAgIGlmICh0aGlzLndhdGNoZXIpIHtcbiAgICAgICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlZ2lzdGVyU3RvcmUoc3RvcmUpIHtcbiAgICAgICAgdGhpcy5zdG9yZXMucHVzaChzdG9yZSk7XG4gICAgfVxuICAgIHJlbW92ZVN0b3JlKHN0b3JlKSB7XG4gICAgICAgIHRoaXMuc3RvcmVzLnJlbW92ZShzdG9yZSk7XG4gICAgfVxuICAgIHJlZ2lzdGVyQ29yZVN0b3JlKHN0b3JlLCBuYW1lKSB7XG4gICAgICAgIGlmICghKHN0b3JlLnN0b3JlSWQoKSA9PT0gJ2NvcmUnKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSByZWdpc3RlciBJRGF0YVN0b3JlcyBhcyBjb3JlIGlmIHRoZWlyIHN0b3JlSWQgaXMgY29yZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29yZVN0b3Jlc1tuYW1lXSA9IHN0b3JlO1xuICAgIH1cbiAgICBjcmVhdGVKdWdnbChlbCwgc2V0dGluZ3MsIGRhdGFzdG9yZXMsIGluaXRpYWxOb2Rlcykge1xuICAgICAgICAvLyBQdWJsaWMgY29uc3RydWN0b3IgZm9yIEp1Z2dsIGluc3RhbmNlcy4gVXNlZCBmb3IgdGhlIEFQSS5cbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0SnVnZ2xTZXR0aW5ncy5lbWJlZFNldHRpbmdzKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsTm9kZXMpIHtcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5leHBhbmRJbml0aWFsID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRhc3RvcmVzKSB7XG4gICAgICAgICAgICBkYXRhc3RvcmVzID0gdGhpcy5kZWZhdWx0U3RvcmVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBKdWdnbChlbCwgdGhpcywgZGF0YXN0b3Jlcywgc2V0dGluZ3MsIGluaXRpYWxOb2Rlcyk7XG4gICAgfVxuICAgIGRlZmF1bHRTdG9yZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhU3RvcmVzOiBbdGhpcy5jb3JlU3RvcmVzW09CU0lESUFOX1NUT1JFX05BTUVdXS5jb25jYXQodGhpcy5zdG9yZXMpLFxuICAgICAgICAgICAgY29yZVN0b3JlOiB0aGlzLmNvcmVTdG9yZXNbT0JTSURJQU5fU1RPUkVfTkFNRV0sXG4gICAgICAgIH07XG4gICAgfVxufVxuLy8gTWF0Y2ggYXJvdW5kIFtbIGFuZCBdXSwgYW5kIGVuc3VyZSBjb250ZW50IGlzbid0IGEgd2lraWxuayBjbG9zdXJlXG4vLyBUaGlzIGRvZXNuJ3QgZXhwbGljaXRseSBwYXJzZSBhbGlhc2VzLlxuSnVnZ2xQbHVnaW4uQ0FUX0RBTkdMSU5HID0gJ2RhbmdsaW5nJztcbiJdLCJuYW1lcyI6WyJFdmVudHMiLCJwYXJzZUZyb250TWF0dGVyVGFncyIsInBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheSIsIkNvbXBvbmVudCIsIml0ZXJhdGVDYWNoZVJlZnMiLCJnZXRMaW5rcGF0aCIsIlRGaWxlIiwibm9vcCIsInJ1biIsImVsZW1lbnQiLCJ1cGRhdGUiLCJmcyIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiRlVOQ19FUlJPUl9URVhUIiwiTkFOIiwic3ltYm9sVGFnIiwicmVJc0JhZEhleCIsInJlSXNCaW5hcnkiLCJyZUlzT2N0YWwiLCJmcmVlUGFyc2VJbnQiLCJmcmVlR2xvYmFsIiwiZ2xvYmFsIiwiZnJlZVNlbGYiLCJyb290Iiwib2JqZWN0UHJvdG8iLCJvYmplY3RUb1N0cmluZyIsIm5hdGl2ZU1heCIsIm5vdyIsImRlYm91bmNlIiwidG9OdW1iZXIiLCJpc09iamVjdCIsImlzT2JqZWN0TGlrZSIsImlzU3ltYm9sIiwidGhpcyIsInJlcXVpcmUkJDAiLCJfaW50ZXJvcERlZmF1bHQiLCJ1dGlsIiwicmVxdWlyZSQkMSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm5hdmlnYXRvciIsIm1lbW9pemUiLCJwZXJmb3JtYW5jZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNsb25lIiwiY29weUFycmF5IiwiZGVmYXVsdHMiLCJNYXAkMSIsIlNldCQxIiwiRWxlbWVudCIsIm1pbiIsIm1heCIsImRpc3QiLCJkZWZhdWx0cyQxIiwibm9ybWFsaXplIiwiaWRlbnRpdHkiLCJQcm9taXNlJDEiLCJ0b1N0cmluZyIsImZpbHRlciIsInBvc2l0aW9uIiwiRXZlbnQiLCJnZXRWYWx1ZSIsIkNvbmNlbnRyaWNMYXlvdXQiLCJsYXlvdXQiLCJub29wJDEiLCJleHRlbnNpb24iLCJ2ZXJzaW9uIiwiY3l0b3NjYXBlIiwibWRpSWNvbnMubWRpQXJyb3dFeHBhbmRBbGwiLCJtZGlJY29ucy5tZGlBcnJvd0NvbGxhcHNlQWxsIiwibWRpSWNvbnMubWRpU2VsZWN0QWxsIiwibWRpSWNvbnMubWRpU2VsZWN0Q29tcGFyZSIsIm1kaUljb25zLm1kaVNlbGVjdEdyb3VwIiwibWRpSWNvbnMubWRpTG9jayIsIm1kaUljb25zLm1kaUxvY2tPcGVuVmFyaWFudE91dGxpbmUiLCJtZGlJY29ucy5tZGlFeWVPZmYiLCJtZGlJY29ucy5tZGlFeWUiLCJtZGlJY29ucy5tZGlGaXRUb1BhZ2VPdXRsaW5lIiwibWRpSWNvbnMubWRpSW1hZ2UiLCJtZGlJY29ucy5tZGlUb29sYm94T3V0bGluZSIsIm1kaUljb25zLm1kaUZsYXJlIiwibWRpSWNvbnMubWRpR3JhaW4iLCJtZGlJY29ucy5tZGlHcmFwaHFsIiwibWRpSWNvbnMubWRpRG90c0dyaWQiLCJtZGlJY29ucy5tZGlHcmFwaCIsIm1kaUljb25zLm1kaUZpbGVPdXRsaW5lIiwibWRpSWNvbnMubWRpRmlsdGVyT3V0bGluZSIsIm1kaUljb25zLm1kaUNvbnRlbnRTYXZlIiwibWRpSWNvbnMubWRpRm9ybWF0TGlzdEJ1bGxldGVkVHlwZSIsIm1kaUljb25zLm1kaVBhbGV0dGVPdXRsaW5lIiwibWRpSWNvbnMubWRpSGVscCIsImFkZEljb24iLCJJdGVtVmlldyIsIk1vZGFsIiwic2VhcmNoUXVlcnkiLCJNZW51IiwiTWFya2Rvd25SZW5kZXJlciIsIlBsYXRmb3JtIiwiTm90aWNlIiwicG9wcGVyIiwicmVhZCIsIndyaXRlIiwiZWZmZWN0IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm1hdGhNYXgiLCJtYXRoTWluIiwiaGFzaCIsImFsbFBsYWNlbWVudHMiLCJwbGFjZW1lbnRzIiwib3JkZXIiLCJjcmVhdGVQb3BwZXIiLCJkZWZhdWx0TW9kaWZpZXJzIiwicG9wcGVyT2Zmc2V0cyIsImNvbXB1dGVTdHlsZXMiLCJhcHBseVN0eWxlcyIsIm9mZnNldCIsImZsaXAiLCJwcmV2ZW50T3ZlcmZsb3ciLCJhcnJvdyIsImhpZGUiLCJfX2V4dGVuZHMiLCJOb2RlIiwicmJ0cmVlXzEiLCJ2cHNjXzEiLCJQcmlvcml0eVF1ZXVlIiwicHF1ZXVlXzEiLCJQb2ludCIsInJlY3RhbmdsZV8xIiwibGlua2xlbmd0aHNfMSIsInNob3J0ZXN0cGF0aHNfMSIsImRlc2NlbnRfMSIsImhhbmRsZWRpc2Nvbm5lY3RlZF8xIiwiZ2VvbV8xIiwibGF5b3V0XzEiLCJEM1N0eWxlTGF5b3V0QWRhcHRvciIsImQzYWRhcHRvciIsImQzdjMiLCJkM3Y0IiwiZ3JpZHJvdXRlcl8xIiwicmVxdWlyZSQkMiIsInJlcXVpcmUkJDMiLCJyZXF1aXJlJCQ0IiwicmVxdWlyZSQkNSIsInJlcXVpcmUkJDYiLCJyZXF1aXJlJCQ3IiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJlcSIsImFzc29jSW5kZXhPZiIsImxpc3RDYWNoZUNsZWFyIiwibGlzdENhY2hlRGVsZXRlIiwibGlzdENhY2hlR2V0IiwibGlzdENhY2hlSGFzIiwibGlzdENhY2hlU2V0IiwiTGlzdENhY2hlIiwiU3ltYm9sIiwiaGFzT3duUHJvcGVydHkiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsInN5bVRvU3RyaW5nVGFnIiwiZ2V0UmF3VGFnIiwiZnVuY1RhZyIsImdlblRhZyIsImJhc2VHZXRUYWciLCJjb3JlSnNEYXRhIiwiZnVuY1Byb3RvIiwiZnVuY1RvU3RyaW5nIiwiaXNNYXNrZWQiLCJpc0Z1bmN0aW9uIiwidG9Tb3VyY2UiLCJiYXNlSXNOYXRpdmUiLCJNYXAiLCJnZXROYXRpdmUiLCJuYXRpdmVDcmVhdGUiLCJIQVNIX1VOREVGSU5FRCIsImhhc2hDbGVhciIsImhhc2hEZWxldGUiLCJoYXNoR2V0IiwiaGFzaEhhcyIsImhhc2hTZXQiLCJIYXNoIiwiaXNLZXlhYmxlIiwiZ2V0TWFwRGF0YSIsIm1hcENhY2hlQ2xlYXIiLCJtYXBDYWNoZURlbGV0ZSIsIm1hcENhY2hlR2V0IiwibWFwQ2FjaGVIYXMiLCJtYXBDYWNoZVNldCIsIkxBUkdFX0FSUkFZX1NJWkUiLCJNYXBDYWNoZSIsInN0YWNrQ2xlYXIiLCJzdGFja0RlbGV0ZSIsInN0YWNrR2V0Iiwic3RhY2tIYXMiLCJzdGFja1NldCIsImRlZmluZVByb3BlcnR5IiwiYmFzZUFzc2lnblZhbHVlIiwiYXNzaWduVmFsdWUiLCJhcmdzVGFnIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJiYXNlSXNBcmd1bWVudHMiLCJzdHViRmFsc2UiLCJNQVhfU0FGRV9JTlRFR0VSIiwiYXJyYXlUYWciLCJib29sVGFnIiwiZGF0ZVRhZyIsImVycm9yVGFnIiwibWFwVGFnIiwibnVtYmVyVGFnIiwib2JqZWN0VGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50OENsYW1wZWRUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJpc0xlbmd0aCIsIm5vZGVVdGlsIiwiYmFzZVVuYXJ5IiwiYmFzZUlzVHlwZWRBcnJheSIsImlzQXJyYXkiLCJpc0FyZ3VtZW50cyIsImlzQnVmZmVyIiwiaXNUeXBlZEFycmF5IiwiYmFzZVRpbWVzIiwiaXNJbmRleCIsIm92ZXJBcmciLCJpc1Byb3RvdHlwZSIsIm5hdGl2ZUtleXMiLCJpc0FycmF5TGlrZSIsImFycmF5TGlrZUtleXMiLCJiYXNlS2V5cyIsImNvcHlPYmplY3QiLCJrZXlzIiwibmF0aXZlS2V5c0luIiwiYmFzZUtleXNJbiIsImtleXNJbiIsIm5hdGl2ZUdldFN5bWJvbHMiLCJzdHViQXJyYXkiLCJhcnJheUZpbHRlciIsImdldFN5bWJvbHMiLCJhcnJheVB1c2giLCJnZXRQcm90b3R5cGUiLCJnZXRTeW1ib2xzSW4iLCJiYXNlR2V0QWxsS2V5cyIsIlByb21pc2UiLCJTZXQiLCJEYXRhVmlldyIsIldlYWtNYXAiLCJVaW50OEFycmF5IiwiY2xvbmVBcnJheUJ1ZmZlciIsInN5bWJvbFByb3RvIiwic3ltYm9sVmFsdWVPZiIsImNsb25lRGF0YVZpZXciLCJjbG9uZVR5cGVkQXJyYXkiLCJjbG9uZVJlZ0V4cCIsImNsb25lU3ltYm9sIiwiYmFzZUNyZWF0ZSIsImdldFRhZyIsImJhc2VJc01hcCIsImJhc2VJc1NldCIsIkNMT05FX0RFRVBfRkxBRyIsIkNMT05FX1NZTUJPTFNfRkxBRyIsImluaXRDbG9uZUFycmF5IiwiY2xvbmVCdWZmZXIiLCJpbml0Q2xvbmVPYmplY3QiLCJjb3B5U3ltYm9sc0luIiwiYmFzZUFzc2lnbkluIiwiY29weVN5bWJvbHMiLCJiYXNlQXNzaWduIiwiaW5pdENsb25lQnlUYWciLCJTdGFjayIsImlzU2V0IiwiaXNNYXAiLCJnZXRBbGxLZXlzSW4iLCJnZXRBbGxLZXlzIiwiYXJyYXlFYWNoIiwiYmFzZUNsb25lIiwiY3JlYXRlQmFzZUZvciIsImJhc2VGb3IiLCJjcmVhdGVCYXNlRWFjaCIsImJhc2VGb3JPd24iLCJiYXNlRWFjaCIsImNhc3RGdW5jdGlvbiIsInNldENhY2hlQWRkIiwic2V0Q2FjaGVIYXMiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsIkNPTVBBUkVfVU5PUkRFUkVEX0ZMQUciLCJTZXRDYWNoZSIsImFycmF5U29tZSIsImNhY2hlSGFzIiwibWFwVG9BcnJheSIsInNldFRvQXJyYXkiLCJlcXVhbEFycmF5cyIsImVxdWFsQnlUYWciLCJlcXVhbE9iamVjdHMiLCJiYXNlSXNFcXVhbERlZXAiLCJiYXNlSXNFcXVhbCIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImdldE1hdGNoRGF0YSIsIm1hdGNoZXNTdHJpY3RDb21wYXJhYmxlIiwiYmFzZUlzTWF0Y2giLCJtZW1vaXplQ2FwcGVkIiwiSU5GSU5JVFkiLCJhcnJheU1hcCIsImJhc2VUb1N0cmluZyIsImlzS2V5Iiwic3RyaW5nVG9QYXRoIiwiY2FzdFBhdGgiLCJ0b0tleSIsImJhc2VHZXQiLCJoYXNQYXRoIiwiYmFzZUhhc0luIiwiZ2V0IiwiaGFzSW4iLCJiYXNlUHJvcGVydHkiLCJiYXNlUHJvcGVydHlEZWVwIiwiYmFzZU1hdGNoZXNQcm9wZXJ0eSIsImJhc2VNYXRjaGVzIiwicHJvcGVydHkiLCJiYXNlRmlsdGVyIiwiYmFzZUl0ZXJhdGVlIiwiYmFzZUhhcyIsImJhc2VNYXAiLCJhcnJheVJlZHVjZSIsImJhc2VSZWR1Y2UiLCJyc0FzdHJhbFJhbmdlIiwicnNDb21ib01hcmtzUmFuZ2UiLCJyZUNvbWJvSGFsZk1hcmtzUmFuZ2UiLCJyc0NvbWJvU3ltYm9sc1JhbmdlIiwicnNDb21ib1JhbmdlIiwicnNWYXJSYW5nZSIsInJzWldKIiwiaGFzVW5pY29kZSIsInVuaWNvZGVTaXplIiwiYXNjaWlTaXplIiwiaXNTdHJpbmciLCJzdHJpbmdTaXplIiwiaXNGbGF0dGVuYWJsZSIsImFwcGx5IiwiY29uc3RhbnQiLCJzaG9ydE91dCIsImJhc2VTZXRUb1N0cmluZyIsInNldFRvU3RyaW5nIiwib3ZlclJlc3QiLCJzdHJpY3RJbmRleE9mIiwiYmFzZUZpbmRJbmRleCIsImJhc2VJc05hTiIsImJhc2VJbmRleE9mIiwiYXJyYXlJbmNsdWRlcyIsImFycmF5SW5jbHVkZXNXaXRoIiwiY3JlYXRlU2V0IiwiYmFzZVJlc3QiLCJiYXNlVW5pcSIsImJhc2VGbGF0dGVuIiwiaXNBcnJheUxpa2VPYmplY3QiLCJiYXNlVmFsdWVzIiwibG9kYXNoIiwicmVxdWlyZSIsIkdyYXBoIiwiXyIsIkRFRkFVTFRfV0VJR0hUX0ZVTkMiLCJkaWprc3RyYSIsInRhcmphbiIsInRvcHNvcnQiLCJkZnMiLCJwb3N0b3JkZXIiLCJwcmVvcmRlciIsImlzSXRlcmF0ZWVDYWxsIiwidHJpbW1lZEVuZEluZGV4IiwiYmFzZVRyaW0iLCJ0b0Zpbml0ZSIsInRvSW50ZWdlciIsImNyZWF0ZUZpbmQiLCJmaW5kSW5kZXgiLCJiYXNlRXh0cmVtdW0iLCJiYXNlR3QiLCJzYWZlR2V0IiwiYXNzaWduTWVyZ2VWYWx1ZSIsImlzUGxhaW5PYmplY3QiLCJ0b1BsYWluT2JqZWN0IiwiYmFzZU1lcmdlRGVlcCIsImNyZWF0ZUFzc2lnbmVyIiwiYmFzZU1lcmdlIiwiYmFzZUx0IiwiYmFzZVNldCIsImJhc2VQaWNrQnkiLCJmbGF0dGVuIiwiZmxhdFJlc3QiLCJiYXNlUGljayIsImJhc2VSYW5nZSIsImNyZWF0ZVJhbmdlIiwiY29tcGFyZUFzY2VuZGluZyIsImJhc2VTb3J0QnkiLCJjb21wYXJlTXVsdGlwbGUiLCJiYXNlT3JkZXJCeSIsImJhc2VaaXBPYmplY3QiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjEiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwicmVxdWlyZSQkMjQiLCJyZXF1aXJlJCQyNSIsIkxpc3QiLCJ1bmRvIiwiZ3JlZWR5RkFTIiwic2ltcGxpZnkiLCJub3JtYWxpemVSYW5rcyIsInJlbW92ZUVtcHR5UmFua3MiLCJhZGRCb3JkZXJOb2RlIiwibG9uZ2VzdFBhdGgiLCJzbGFjayIsImZlYXNpYmxlVHJlZSIsInJhbmtVdGlsIiwibmV0d29ya1NpbXBsZXgiLCJiYXJ5Y2VudGVyIiwicmVzb2x2ZUNvbmZsaWN0cyIsInNvcnQiLCJpbml0T3JkZXIiLCJjcm9zc0NvdW50IiwiYnVpbGRMYXllckdyYXBoIiwic29ydFN1YmdyYXBoIiwiYWRkU3ViZ3JhcGhDb25zdHJhaW50cyIsInBvc2l0aW9uWCIsInJhbmsiLCJwYXJlbnREdW1teUNoYWlucyIsImFkZEJvcmRlclNlZ21lbnRzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJQbHVnaW4iLCJkYmxjbGljayIsInBhcnNlWWFtbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDTyxNQUFNLGVBQWUsU0FBU0EsZUFBTSxDQUFDO0FBQzVDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtBQUMzQixRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDckMsS0FBSztBQUNMLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQzVCLFFBQVEsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsS0FBSztBQUNMOztBQ1JPLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQztBQUM5QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUM7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QztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsUUFBUSxHQUFHLFNBQVMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7QUFDckMsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDckMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDckIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLElBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckMsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLFNBQVMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7QUFDdEMsUUFBUSxJQUFJLEVBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVM7QUFDbEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDckIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO0FBQ2hDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzFCLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEIsT0FBTztBQUNQLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsTUFBTSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUN4RCxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEIsUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ2hDLFVBQVUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QyxVQUFVLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2QixVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxQyxTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sT0FBTyxNQUFN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QUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsTUFBTTtBQUNULElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7QUFDeEMsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUI7QUFDQSxFQUFFLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzVCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxD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QUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUMxQixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMxQixFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDMUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM5QixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQzVCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDeEIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDckIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDdkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNwQixFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQzdCLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMxQixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN4QixFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3hCLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNoQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzFCLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDL0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3ZDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FB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QUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMzQixFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzVCLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDekIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM1QixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3pCLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN2QixFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUMzQixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN2QixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN0QixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN2QixFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDekIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN4QixFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3hCLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDN0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN2QixFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQ3RDLEVBQUUsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUN4QixFQUFFLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDMUIsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3RCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFF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QyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3JELFVBQVUsTUFBTTtBQUNoQixTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtBQUMxQixVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUDtBQUNBLE1BQU0sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLEtBQUssQ0FBQztBQUNOO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkMsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0I7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMzQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE9BQU8sTUFBTTtBQUNiLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7QUFDN0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN2QixNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDN0I7QUFDQSxJQUFJLElBQUksdUJBQXVCLEdBQUcsU0FBUyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUM3RyxNQUFNLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ3JDO0FBQ0EsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkQsUUFBUSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQixRQUFRLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUIsUUFBUSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMxQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDM0I7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEM7QUFDQSxRQUFRLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQztBQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsdUJBQXVCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzRTtBQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUN2QixVQUFVLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0UsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRTtBQUN6QixRQUFRLE1BQU07QUFDZCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QjtBQUNBLE1BQU0sS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM1QyxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QjtBQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xDO0FBQ0EsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEM7QUFDQSxRQUFRLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QztBQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN6QyxRQUFRLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDekM7QUFDQSxRQUFRLElBQUksT0FBTyxHQUFHLFFBQVEsR0FBRyxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxHQUFHLFFBQVEsR0FBRyxPQUFPLEVBQUU7QUFDdkYsVUFBVSxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztBQUMxRSxVQUFVLHNCQUFzQixHQUFHLElBQUksQ0FBQztBQUN4QyxVQUFVLE1BQU07QUFDaEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxNQUFNLFVBQVUsRUFBRSxVQUFVO0FBQzVCLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxzQkFBc0IsRUFBRSxzQkFBc0I7QUFDcEQsTUFBTSxvQkFBb0IsRUFBRSxvQkFBb0I7QUFDaEQsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLElBQUksUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO0FBQ3JFLEVBQUUsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNuQyxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0FBQ2hFLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLEVBQUUsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLEVBQUUsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLEVBQUUsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBQ2hDO0FBQ0E7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqRCxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ2xJLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMvQyxJQUFJLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QjtBQUNBLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ2pDO0FBQ0EsTUFBTSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25DO0FBQ0EsTUFBTSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ25DLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDeEM7QUFDQSxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkM7QUFDQSxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDbkMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNqRCxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUNyQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDaEMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLElBQUksYUFBYSxHQUFHLFNBQVMsYUFBYSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtBQUN6RixFQUFFLE9BQU8sSUFBSSxHQUFHLFNBQVMsRUFBRTtBQUMzQjtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFO0FBQ0EsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFFBQVEsR0FBRztBQUNmO0FBQ0E7QUFDQSxFQUFFLFdBQVcsRUFBRSxTQUFTLFdBQVcsR0FBRztBQUN0QyxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUN0QyxRQUFRLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSztBQUNuQyxRQUFRLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO0FBQ3BDO0FBQ0EsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxFQUFFO0FBQ3BDLE1BQU0sT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0IsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEMsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtBQUN0QixNQUFNLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0FBQ3hFLE1BQU0sT0FBTyxTQUFTLENBQUM7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3pCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUM7QUFDOUIsSUFBSSxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUMvQixJQUFJLElBQUksYUFBYSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVDO0FBQ0EsSUFBSSxJQUFJLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxJQUFJLElBQUksWUFBWSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNDO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO0FBQ3ZELE1BQU0sS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7QUFDaEQ7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLFVBQVUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0YsTUFBTSxJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0M7QUFDQTtBQUNBLE1BQU0sWUFBWSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5QztBQUNBLE1BQU0sSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRTtBQUNsRSxRQUFRLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2pDLFFBQVEsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQ2pDLFFBQVEsWUFBWSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNqRCxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUU7QUFDekUsUUFBUSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxRQUFRLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUNqQyxRQUFRLFlBQVksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbEQsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzVELE1BQU0sT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNSLElBQUksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xDLElBQUksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xDO0FBQ0EsSUFBSSxJQUFJLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRDtBQUNBLElBQUksS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDekQsTUFBTSxJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLElBQUksV0FBVyxLQUFLLG9CQUFvQixFQUFFO0FBQ2hELFFBQVEsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixPQUFPLE1BQU07QUFDYixRQUFRLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxJQUFJLGtCQUFrQixHQUFHLFNBQVMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO0FBQ2pFLE1BQU0sSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BDO0FBQ0EsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFO0FBQ3JDLFFBQVEsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDdEQ7QUFDQSxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0QsWUFBWSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFdBQVc7QUFDWCxTQUFTLENBQUMsQ0FBQztBQUNYLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsTUFBTSxPQUFPLFNBQVMsQ0FBQztBQUN2QixLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ2QsTUFBTSxVQUFVLEVBQUUsVUFBVTtBQUM1QjtBQUNBO0FBQ0EsTUFBTSxVQUFVLEVBQUUsVUFBVTtBQUM1QixNQUFNLFVBQVUsRUFBRSxVQUFVO0FBQzVCLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7QUFDNUMsRUFBRSxPQUFPO0FBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNWLEdBQUcsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGLElBQUksdUJBQXVCLEdBQUcsU0FBUyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtBQUM3RSxFQUFFLE9BQU87QUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN6QixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJLHVCQUF1QixHQUFHLFNBQVMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDN0UsRUFBRSxPQUFPO0FBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSTtBQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJO0FBQzNCLEdBQUcsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM1QyxFQUFFLE9BQU87QUFDVCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2IsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLEdBQUcsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGLElBQUlHLEtBQUcsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFDNUIsRUFBRSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEYsRUFBRSxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzNGLEVBQUUsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGLElBQUlDLEtBQUcsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFDNUIsRUFBRSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEYsRUFBRSxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzNGLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDdEI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDcEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckI7QUFDQSxJQUFJLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQzlCLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksS0FB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RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbkMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3RDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDMUIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ2xELEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDcEUsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxXQUFXLEdBQUcsU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3RELEVBQUUsT0FBTztBQUNULElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQyxHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJLE1BQU0sR0FBRyxTQUFTLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDM0MsRUFBRSxJQUFJLEdBQUcsR0FBRztBQUNaLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDbEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsQixHQUFHLENBQUM7QUFDSixFQUFFLElBQUksT0FBTyxHQUFHQSxNQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxPQUFPLEdBQUc7QUFDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPO0FBQ3RCLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTztBQUN0QixHQUFHLENBQUM7QUFDSixFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUNsQyxFQUFFLE9BQU87QUFDVCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMzQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMzQixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUMxQyxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUs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QVEsQ0FBQztBQUNwQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDcEIsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNYLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFDRixJQUFJLGlCQUFpQixHQUFHLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM3RDtBQUNBLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDMUIsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFDRixJQUFJLHdCQUF3QixHQUFHLFNBQVMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDM0UsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFD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QztBQUMxQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdEIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDdkIsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBLEVBQUUsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFO0FBQzFCLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDcEUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNuQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDM0MsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDVCxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEMsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsT0FBTztBQUNULENBQUMsQ0FBQztBQUNGLElBQUksdUJBQXVCLEdBQUcsU0FBUyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RLLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzFKLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BMLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRjtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2pCO0FBQ0EsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUU7QUFDN0MsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUU7QUFDaEcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLEVBQUUsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUM7QUFDOUI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JILElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25ILElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7QUFDQSxJQUFJLElBQUksa0JBQWtCLElBQUksQ0FBQyxFQUFFO0FBQ2pDLE1BQU0sSUFBSSxXQUFXLEdBQUcsa0JBQWtCLEVBQUU7QUFDNUMsUUFBUSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7QUFDekMsT0FBTztBQUNQLEtBQUssTUFBTTtBQUNYLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sa0JBQWtCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxrQkFBa0IsR0FBRyxTQUFTLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzNFLEVBQUUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNoQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDaEMsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsRUFBRSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsRUFBRSxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsRUFBRSxJQUFJLEtBQUssR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUMvQztBQUNBLEVBQUUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDdEIsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNyRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2QixDQUFDLENBQUM7QUFDRixJQUFJLHdCQUF3QixHQUFHLFNBQVMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7QUFDL0UsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNyQixFQUFFLElBQUksRUFBRSxDQUFDO0FBQ1Q7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNiO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQjtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ25DLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3RELEVBQUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLEVBQUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO0FBQ3hCLElBQUksT0FBTyxFQUFFLENBQUM7QUFDZCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUIsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QixF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QUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xILElBQUksSUFBSSxNQUFNLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEQsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQ7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNqQixNQUFNLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMxQyxLQUFLLE1BQU07QUFDWCxNQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM5QixNQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM5QixLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcs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R0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDN0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0MsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDakIsSUFBSSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQzFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ2xFLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGLElBQUksc0JBQXNCLEdBQUcsU0FBUyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO0FBQ3JGLEVBQUUsSUFBSSxTQUFTLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxFQUFFLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDckYsRUFBRSxVQUFVLElBQUksZUFBZSxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsSUFBSSxZQUFZLENBQUM7QUFDbkI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLFNBQVMsR0FBRyxVQUFVLENBQUM7QUFDOUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDM0M7QUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRyxTQUFTLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDOUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxxQkFBcUIsR0FBRyxTQUFTLHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDMUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUNGLElBQUksMkJBQTJCLEdBQUcsU0FBUywyQkFBMkIsR0FBRztBQUN6RSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxvQkFBb0IsR0FBRyxTQUFTLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3JFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRyxTQUFTLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDOUUsRUFBRSxPQUFPO0FBQ1QsSUFBSSxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUM3QyxJQUFJLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQzVDLElBQUksZUFBZSxFQUFFLElBQUk7QUFDekIsR0FBRyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLGdCQUFnQixHQUFHTixVQUFRLENBQUM7QUFDaEMsRUFBRSxhQUFhLEVBQUUsR0FBRztBQUNwQixFQUFFLFNBQVMsRUFBRSxRQUFRO0FBQ3JCLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFDakIsRUFBRSxNQUFNLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ2hDLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDSCxJQUFJLFFBQVEsR0FBRztBQUNmLEVBQUUsUUFBUSxFQUFFLFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRTtBQUN2QyxJQUFJLElBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0FBQ3JELFFBQVEsYUFBYSxHQUFHLGlCQUFpQixDQUFDLGFBQWE7QUFDdkQsUUFBUSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUztBQUMvQyxRQUFRLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVO0FBQ2pELFFBQVEsTUFBTSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztBQUMxQztBQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDOUI7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDdEMsUUFBUSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUs7QUFDbkMsUUFBUSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUNwQztBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxJQUFJLElBQUksV0FBVyxHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDMUMsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDeEMsSUFBSSxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxJQUFJLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsSUFBSSxRQUFRLENBQUM7QUFDeEQ7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkMsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakMsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE9BQU87QUFDUDtBQUNBLE1BQU0sU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMxQyxNQUFNLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQixNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEMsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsTUFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFDM0IsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0I7QUFDQSxNQUFNLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDO0FBQ0E7QUFDQSxNQUFNLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEI7QUFDQSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsR0FBRyxjQUFjLENBQUM7QUFDNUM7QUFDQTtBQUNBLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMxQyxNQUFNLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMvQjtBQUNBLFFBQVEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNqRCxVQUFVLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3hDO0FBQ0EsVUFBVSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFNBQVM7QUFDVCxPQUFPLE1BQU07QUFDYjtBQUNBLFFBQVEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNqRCxVQUFVLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3hDO0FBQ0EsVUFBVSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7QUFDckUsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUMsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuQyxJQUFJLElBQUksUUFBUSxDQUFDO0FBQ2pCO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDN0MsTUFBTSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRTtBQUNsRDtBQUNBLE1BQU0sS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsUUFBUSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2pELFVBQVUsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDekM7QUFDQSxVQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQztBQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQy9DLFFBQVEsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxRQUFRLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLElBQUksR0FBRyxTQUFTLEVBQUU7QUFDNUIsUUFBUSxNQUFNO0FBQ2QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRztBQUNkLE1BQU0sSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNoQyxRQUFRLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hELE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJTyxZQUFVLEdBQUdQLFVBQVEsQ0FBQztBQUMxQixFQUFFLElBQUksRUFBRSxJQUFJO0FBQ1osRUFBRSxNQUFNLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ2hDLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUM7QUFDSCxJQUFJLFFBQVEsR0FBRztBQUNmLEVBQUUsMEJBQTBCLEVBQUUsU0FBUywwQkFBMEIsQ0FBQyxPQUFPLEVBQUU7QUFDM0UsSUFBSSxPQUFPLEdBQUdPLFlBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM3QixJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEM7QUFDQSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO0FBQzNCLE1BQU0sSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLE1BQU0sSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLFFBQVEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsUUFBUSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUM1QixRQUFRLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RDtBQUNBLFFBQVEsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUMzQyxVQUFVLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ3hDLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDL0MsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPO0FBQ2IsUUFBUSxNQUFNLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ3RDLFVBQVUsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO0FBQy9CLFlBQVksT0FBTyxDQUFDLENBQUM7QUFDckIsV0FBVztBQUNYO0FBQ0EsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM1QjtBQUNBLFlBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsV0FBVztBQUNYO0FBQ0EsVUFBVSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDaEQsU0FBUztBQUNULE9BQU8sQ0FBQztBQUNSLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsTUFBTSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDNUI7QUFDQTtBQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7QUFDN0I7QUFDQSxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RDtBQUNBLFFBQVEsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztBQUNuRixRQUFRLElBQUksWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7QUFDdkYsUUFBUSxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztBQUM3QyxRQUFRLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO0FBQy9DLE9BQU87QUFDUDtBQUNBLE1BQU0sT0FBTztBQUNiLFFBQVEsUUFBUSxFQUFFLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRTtBQUMxQyxVQUFVLElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTtBQUNoQyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUI7QUFDQSxZQUFZLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLFdBQVc7QUFDWDtBQUNBLFVBQVUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQ3BELFNBQVM7QUFDVCxRQUFRLFNBQVMsRUFBRSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDNUMsVUFBVSxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7QUFDbEMsWUFBWSxPQUFPLENBQUMsQ0FBQztBQUNyQixXQUFXO0FBQ1g7QUFDQSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzVCO0FBQ0EsWUFBWSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxXQUFXO0FBQ1g7QUFDQSxVQUFVLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUN0RCxTQUFTO0FBQ1QsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDdkQsSUFBSSxPQUFPLEdBQUdBLFlBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QixJQUFJLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztBQUMzQixJQUFJLElBQUksUUFBUSxHQUFHLE9BQU87QUFDMUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07QUFDaEMsUUFBUSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVE7QUFDcEMsUUFBUSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUMvQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ25CLE1BQU0sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0RSxNQUFNLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDL0IsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pELFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU87QUFDYixRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQzNELE9BQU8sQ0FBQztBQUNSLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRTtBQUNsRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pFLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsTUFBTSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFO0FBQ2xELFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakUsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDakMsTUFBTSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2xDLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN0RCxRQUFRLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEMsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3RELFFBQVEsS0FBSyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QyxPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU87QUFDYixRQUFRLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ25FLFFBQVEsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDdEUsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQSxRQUFRLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4QyxRQUFRLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUMsMEJBQTBCLENBQUM7QUFDekY7QUFDQSxJQUFJLFVBQVUsR0FBR1AsVUFBUSxDQUFDO0FBQzFCLEVBQUUsUUFBUSxFQUFFLElBQUk7QUFDaEIsRUFBRSxNQUFNLEVBQUUsU0FBUyxNQUFNLEdBQUc7QUFDNUIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLO0FBQ2pCLEVBQUUsSUFBSSxFQUFFLElBQUk7QUFDWixDQUFDLENBQUMsQ0FBQztBQUNILElBQUksUUFBUSxHQUFHO0FBQ2YsRUFBRSw2QkFBNkIsRUFBRSxTQUFTLDZCQUE2QixDQUFDLE9BQU8sRUFBRTtBQUNqRixJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDdkMsUUFBUSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVE7QUFDckMsUUFBUSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU07QUFDakMsUUFBUSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUN0QztBQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZCLElBQUksSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLElBQUksSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzdCLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUNoQyxNQUFNLE1BQU0sRUFBRSxNQUFNO0FBQ3BCLE1BQU0sUUFBUSxFQUFFLFFBQVE7QUFDeEIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0MsTUFBTSxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFDNUIsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3JCLFVBQVUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxVQUFVLElBQUksUUFBUSxFQUFFO0FBQ3hCLFlBQVksYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsV0FBVyxNQUFNO0FBQ2pCLFlBQVksYUFBYSxJQUFJLENBQUMsQ0FBQztBQUMvQixXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNyQixRQUFRLGFBQWEsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDO0FBQzFDLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxZQUFZLEdBQUcsYUFBYSxFQUFFO0FBQ3hDLFFBQVEsWUFBWSxHQUFHLGFBQWEsQ0FBQztBQUNyQyxPQUFPO0FBQ1A7QUFDQSxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUM7QUFDL0MsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsTUFBTSxTQUFTLEVBQUUsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQzFDLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFO0FBQy9CLFVBQVUsT0FBTyxDQUFDLENBQUM7QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxQjtBQUNBLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDekMsU0FBUyxNQUFNO0FBQ2Y7QUFDQSxVQUFVLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDM0IsU0FBUztBQUNUO0FBQ0EsUUFBUSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUM7QUFDaEQsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUU7QUFDN0QsSUFBSSxJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJO0FBQzlCLFFBQVEsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNO0FBQ2xDLFFBQVEsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRO0FBQ3RDLFFBQVEsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDdkM7QUFDQSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ2pDLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDaEIsTUFBTSxNQUFNLEVBQUUsTUFBTTtBQUNwQixNQUFNLFFBQVEsRUFBRSxRQUFRO0FBQ3hCLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFDMUIsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDN0I7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNDLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBQ0EsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN6QixRQUFRLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkM7QUFDQSxRQUFRLElBQUksUUFBUSxFQUFFO0FBQ3RCLFVBQVUsYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsU0FBUyxNQUFNO0FBQ2YsVUFBVSxhQUFhLElBQUksQ0FBQyxDQUFDO0FBQzdCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLFFBQVEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUN4RCxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0EsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUM7QUFDM0MsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsNkJBQTZCLEdBQUcsUUFBUSxDQUFDLDZCQUE2QixDQUFDO0FBQy9GO0FBQ0EsSUFBSSxVQUFVLEdBQUdBLFVBQVEsQ0FBQztBQUMxQixFQUFFLE1BQU0sRUFBRSxJQUFJO0FBQ2QsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQixDQUFDLENBQUMsQ0FBQztBQUNILElBQUksUUFBUSxHQUFHO0FBQ2Y7QUFDQSxFQUFFLHFCQUFxQixFQUFFLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFO0FBQ2pFLElBQUksSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxRQUFRLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUTtBQUNyQyxRQUFRLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ2xDO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDO0FBQ2xDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDZixJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHO0FBQ1osTUFBTSxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNsQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdEI7QUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRTtBQUN2QixVQUFVLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDcEIsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLEdBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFDN0IsUUFBUSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QixPQUFPO0FBQ1AsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUNwQixRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDOUMsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNsQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMxQixNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqQjtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZDLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLE9BQU8sQ0FBQyxDQUFDO0FBQ1Q7QUFDQTtBQUNBLE1BQU0sS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDNUMsUUFBUSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDOUI7QUFDQSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDckIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMzQixPQUFPO0FBQ1A7QUFDQSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakI7QUFDQSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakI7QUFDQSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEI7QUFDQSxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7QUFDekIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDekI7QUFDQSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkI7QUFDQSxRQUFRLElBQUksUUFBUSxFQUFFO0FBQ3RCLFVBQVUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakQsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsWUFBWSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLFlBQVksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDOUI7QUFDQSxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzVDLGNBQWMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsYUFBYSxNQUFNO0FBQ25CLGNBQWMsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFO0FBQzNDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDeEM7QUFDQSxjQUFjLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzFDO0FBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsZUFBZSxNQUFNO0FBQ3JCO0FBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsZUFBZTtBQUNmO0FBQ0EsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN4QixhQUFhO0FBQ2I7QUFDQSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUU7QUFDNUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUIsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTLE1BQU07QUFDZixVQUFVLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3BELFlBQVksSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3BDO0FBQ0EsWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUU7QUFDbkMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3BDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEM7QUFDQSxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDakI7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQy9DLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDM0IsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUI7QUFDQSxRQUFRLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3RELFVBQVUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtBQUM5QixVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUMsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsTUFBTSxXQUFXLEVBQUUsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQzlDLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMxQyxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QixPQUFPO0FBQ1AsTUFBTSxxQkFBcUIsRUFBRSxTQUFTLHFCQUFxQixDQUFDLElBQUksRUFBRTtBQUNsRSxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtBQUN0QixVQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQ25CLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMxQyxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDL0IsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxHQUFHLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixDQUFDO0FBQzFELElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0EsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFVBQVUsR0FBR0EsVUFBUSxDQUFDO0FBQzFCLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDakI7QUFDQSxFQUFFLGFBQWEsRUFBRSxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUNmO0FBQ0EsRUFBRSxhQUFhLEVBQUUsRUFBRTtBQUNuQjtBQUNBLEVBQUUsVUFBVSxFQUFFO0FBQ2QsRUFBRSxVQUFVLElBQUksRUFBRTtBQUNsQixJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBO0FBQ0EsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsT0FBTyxFQUFFO0FBQzlDLEVBQUUsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtBQUM3RCxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoQjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQzVDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUN2QixHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJUSxXQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QyxFQUFFLElBQUksR0FBRyxDQUFDO0FBQ1Y7QUFDQSxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDcEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ1o7QUFDQSxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDdEMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDOUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO0FBQ3pDLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xELEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLElBQUksS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3BDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsTUFBTSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3JDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEQsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE1BQU0sR0FBRyxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVk7QUFDL0M7QUFDQSxFQUFFO0FBQ0YsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYTtBQUNsRDtBQUNBLEVBQUU7QUFDRixFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QjtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMxQyxHQUFHO0FBQ0g7QUFDQSxFQUFFQSxXQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25CLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksWUFBWSxHQUFHLFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtBQUNqRTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvQixJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEY7QUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdkY7QUFDQSxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUNuQixNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE1BQU0sR0FBRyxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDOUMsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDcEI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDckI7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEM7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFO0FBQ3RELFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQzlCLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQy9DLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDN0MsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxnQkFBZ0IsR0FBRyxTQUFTLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtBQUMzRCxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMzRCxRQUFRLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlCLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksZ0JBQWdCLEdBQUcsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDMUQsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDckI7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqQztBQUNBLEVBQUUsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakI7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN2QixNQUFNLEVBQUUsQ0FBQztBQUNUO0FBQ0EsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ2xDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsSUFBSSxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUMxQjtBQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsQztBQUNBLEVBQUVBLFdBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEIsRUFBRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsRUFBRSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDckI7QUFDQSxFQUFFLE9BQU8sYUFBYSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFO0FBQzNELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztBQUMxQjtBQUNBLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN6QztBQUNBLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMzQztBQUNBLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxVQUFVLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsRUFBRSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksa0JBQWtCLEdBQUc7QUFDekIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7QUFDcEMsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCO0FBQ3ZCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUlDLFVBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDcEMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQyxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxFQUFFLE9BQU8sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLGNBQWMsR0FBRyxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMxRCxFQUFFLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM1QixFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksVUFBVSxHQUFHLFNBQVMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZELEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3hFLEVBQUUsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFVBQVEsQ0FBQztBQUMxRixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztBQUNqQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNYO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3pDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksU0FBUyxHQUFHO0FBQ2hCLEVBQUUsU0FBUyxFQUFFLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3BELElBQUksSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3JCLE1BQU0sT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxLQUFLLE1BQU07QUFDWDtBQUNBLE1BQU0sT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVELEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2xFLElBQUksT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlELEdBQUc7QUFDSCxFQUFFLFNBQVMsRUFBRSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNwRCxJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRCxHQUFHO0FBQ0gsRUFBRSxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEMsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRSxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsbUJBQW1CLENBQUMsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUMvRCxTQUFTLENBQUMsa0JBQWtCLENBQUMsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUM5RCxTQUFTLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ3ZFLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWDtBQUNBLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbEIsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2xCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQ3BELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNsQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsSUFBSSxVQUFVLEdBQUdULFVBQVEsQ0FBQztBQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ04sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNOLEVBQUUsb0JBQW9CLEVBQUUsTUFBTTtBQUM5QixFQUFFLFFBQVEsRUFBRSxXQUFXO0FBQ3ZCLEVBQUUsYUFBYSxFQUFFLEVBQUU7QUFDbkIsRUFBRSxVQUFVLEVBQUUsRUFBRTtBQUNoQixFQUFFLFFBQVEsRUFBRSxLQUFLO0FBQ2pCLEVBQUUsYUFBYSxFQUFFLElBQUk7QUFDckIsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksWUFBWSxHQUFHLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRTtBQUNoRCxFQUFFLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7QUFDdkUsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ3BDLEVBQUUsSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3BDLElBQUksT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ25CLElBQUksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkMsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM5QixJQUFJLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUM7QUFDdkIsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDbkIsRUFBRSxPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxlQUFlLEdBQUcsU0FBUyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUU7QUFDckUsRUFBRSxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQy9CLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixFQUFFLElBQUksU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3RCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNsQjtBQUNBLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUN0QyxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDNUIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxT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RSxJQUFJLFFBQVEsQ0FBQztBQUNmLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDaEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNSO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNUO0FBQ0EsRUFBRSxJQUFJLE1BQU0sQ0FBQztBQUNiO0FBQ0EsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QztBQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQSxFQUFFLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7QUFDQSxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQy9DO0FBQ0EsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbEI7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FB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QUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzNELFFBQVEsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLE9BQU87QUFDUCxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtBQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQztBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMzRCxRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxPQUFPO0FBQ1AsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7QUFDeEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekcsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pILEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzNELEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUU7QUFDeEQsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdEI7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hELFFBQVEsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNuQztBQUNBLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELFVBQVUs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QUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEI7QUFDQSxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDckMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3BDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNuQixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbEIsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM1QztBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDM0MsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQztBQUNYO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUU7QUFDcEQ7QUFDQTtBQUNBLElBQUksS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN0QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUTtBQUN6QixVQUFVLElBQUksR0FBRyxDQUFDLFFBQVE7QUFDMUIsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNuQjtBQUNBLE1BQU0sS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNyQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMvQztBQUNBLFFBQVEsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFO0FBQ3ZCLFVBQVUsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNyQixVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDbkIsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQVMsTUFBTSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUU7QUFDOUIsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDeEMsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25HLE9BQU87QUFDUDtBQUNBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRyxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN0QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsQjtBQUNBLE1BQU0sS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN4QyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNwQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hELFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QixPQUFPO0FBQ1A7QUFDQSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDakMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckcsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2Q7QUFDQSxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7QUFDekMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRSxN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Q0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNsRCxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUMxRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNsRCxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDcEYsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRCxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUN4RSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRCxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUN4RSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMxQyxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMzQyxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUN4RSxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQy9DLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FB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LEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFdBQVcsR0FBRyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUQsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNu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Q0FBQyxZQUFZLEVBQUU7QUFDL0MsTUFBTSxJQUFJLFlBQVksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNyQyxRQUFRLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVEO0FBQ0E7QUFDQSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQ7QUFDQSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNyQixRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pEO0FBQ0E7QUFDQSxRQUFRLElBQUksVUFBVSxLQUFLLFVBQVUsRUFBRTtBQUN2QyxVQUFVLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFDeEM7QUFDQSxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxN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QUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMzQixNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDL0MsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEMsT0FBTztBQUNQO0FBQ0EsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN6RSxVQUFVLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDOUQ7QUFDQSxVQUFVLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hELFlBQVksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFlBQVksSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNFLFlBQVks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QyxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLFVBQVUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM3SyxVQUFVLFFBQVEsR0FBRztBQUNyQjtBQUNBLFlBQVksTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO0FBQy9CO0FBQ0EsWUFBWSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDM0IsWUFB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USxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsSUFBSSxRQUFRLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLElBQUksUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUIsSUFBSSxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0IsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDNUQsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDNUQsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0QsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0QsSUFBSSxRQUFRLENBQUMsT0FBTyxHQUFH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QUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxVQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDM0IsSUFBSSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0U7QUFDQSxJQUFJLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtBQUM3QjtBQUNBLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMxRCxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxPQUFPO0FBQ2IsUUFBUSxD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QUFJLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEM7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtBQUM5QyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUMxRDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUMzRDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO0FBQ25CLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxNQUFNLENBQUMsRUFBRSxHQUFHLEdBQUcsTUFBTSxHQUFHLEtBQUs7QUFDN0IsTUFBTSxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sR0FBRyxLQUFLO0FBQzdCLEtBQUssQ0FBQztBQUNOLEdBQUcsTUFBTTtBQUNULElBQUks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R0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4RCxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4RCxLQUFLO0FBQ0w7QUFDQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEIsSUFBSSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDcEMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckMsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osRUFBRSxJQUFJLEtBQUssR0FBRyxD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QUMsSUFBSSxDQUFDO0FBQzdELElBQUksT0FBTyxFQUFFLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRTtBQUNsRixNQUFNLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUMxQixNQUFNLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4SCxNQUFNLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNyRyxNQUFNLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxZQUFZLENBQUM7QUFDcEUsS0FBSztBQUNMLElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7QUFDdEUsTUFBTSxJQUFJLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzVFLE1BQU0sUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVB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Q0FBQyxXQUFXLENBQUM7QUFDckQsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDZixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0IsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNYLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNYLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNYLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNYLEVBQUUsSUFBSSxLQUFLLEdBQUcsZUFBZSxDQUFDO0FBQzlCLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDVixJQUFJLEVBQUUsRUFBRSxFQUFFO0FBQ1YsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNWLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDVixHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDdEIsTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ3BDLFFBQVEsWUFBWSxFQUFF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QyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkQsRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN0QixFQUFFLEVBQUUsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3RCO0FBQ0E7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNkLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2Q7QUFDQSxFQUFFLElBQUksVUFBVSxFQUFFO0FBQ2xCLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUN4QjtBQUNBLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTTtBQUN6QyxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0E7QUFDQSxFQUFFLElBQUksVUFBVSxFQUFFO0FBQ2xCLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEdBQUcsTUFBTSxJQUFJLGFBQWEsSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUNoRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLElBQUksSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFLElBQUksSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN0QixHQUFHLE1BQU07QUFDVCxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGNBQWMsR0FBRyxVQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDekUsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO0FBQ2hFLEVBQUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxFQUFFLElBQUksU0FBUyxFQUFFO0FBQ2pCLElBQUksT0FBTyxTQUFTLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3JFLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQzlDLEVBQUUsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDZjtBQUNBLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUM1QyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUMzQixJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7QUFDekI7QUFDQSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFO0FBQ3RCLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzlDLE1BQU0sRUFBRSxDQUFDLE1BQU0sR0FBRztBQUNsQixRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMxQixRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMxQixPQUFPLENBQUM7QUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDMUMsTUFBTSxFQUFFLENBQUMsTUFBTSxHQUFHO0FBQ2xCLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzFCLE9BQU8sQ0FBQztBQUNSLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUN4QixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEMsSUFBSSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEMsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7QUFD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R0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0USxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRTtBQUM3RTtBQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDbEMsRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUMzQixFQUFFLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNO0FBQzlCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNO0FBQzlCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJO0FBQzFCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJO0FBQzFCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJO0FBQzFCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDM0IsRUFBRSxJQUFJLFFBQVEsR0FB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LENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QztBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3ZEO0FBQ0EsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQ7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUNyQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RyxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNkO0FBQ0EsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3pDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsTUFBTSxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLEtBQUssTUFBTTtBQUNYLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEYsS0FBSztBQUNMLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO0FBQ3pDO0FBQ0EsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pEO0FBQ0EsSUFBSSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7QUFDeEUsSUFBSSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7QUFDeEUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUU7QUFDekMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNuQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckM7QUFDQSxJQUFJLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNwQyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FB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QUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkcsUUFBUSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUNwRDtBQUNBLFFBQVEsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkcsUUFBUSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUNwRCxRQUFRLElBQUksZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLEdBQUc7QUFDekQsVUFBVSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUMzQixVQUFVLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFVBQVUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDM0IsVUFBVSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUMzQixTQUFTLENBQUM7QUFDVixRQUFRLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUc7QUFDdkMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEIsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEIsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEIsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEIsU0FBUyxDQUFDO0FBQ1YsUUFBUSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxD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Q0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQjtBQUNBLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ3JFLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RCxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkQsT0FBTyxNQUFNO0FBQ2IsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFB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T0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3JGLFFBQVEsUUFBUSxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hGLFFBQVEsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzdFLFFBQVEsVUFBVSxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2xGLE9BQU8sQ0FBQztBQUNSLEtBQUs7QUFDTCxJQUFJLGFBQWEsRUFBRSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUU7QUFDdEYsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RHLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENB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QUFDeEMsTUFBTSxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUM7QUFDNUMsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxNQUFNLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxNQUFNLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RELEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDaEQsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM1QyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FB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QUUsQ0FBQztBQUNsQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDNUQsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM3QyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzlFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNyQyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5RCxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM1QixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbEIsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDYixDQUFDO0FBQ0Q7QUFD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LENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SDtBQUNBLE1BQU0sSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLFFBQVEsT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDdFEsUUFBUSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0gsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtBQUMxRCxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7QUFDdkMsTUFBTSxPQUFPLENBQUMs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QU0sR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4QyxJQUFJLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLElBQUksSUFBSSxNQUFNLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxJQUFJLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtBQUNsQixNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLEtBQUssTUFBTTtBQUNYLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakMsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNwRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0EsS0FBSyxDQUFDLHNCQUFzQixHQUFHLFVBQVUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUN2RSxFQUFFLElBQUksU0FBUyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDNUIsRUFBRSxJQUFJLFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEVBQUUsSUFBSSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVEO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7QUFDekIsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNwQztBQUNBLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDL0U7QUFDQSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2hGO0FBQ0EsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMvRTtBQUNBLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDaEY7QUFDQSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNwQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxVQUFVLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDN0UsRUFBRSxJQUFJLFNBQVMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksWUFBWSxHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1RDtBQUNBLEVBQUUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDcEMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ2hELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDaEYsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMvRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDaEQsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDcEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3JFLEVBQUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUM1QixFQUFFLElBQUksVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDOUIsRUFBRSxJQUFJLFlBQVksR0FBRywyQkFBMkIsRUFBRSxDQUFDO0FBQ25EO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7QUFDekIsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLGNBQWMsR0FBRyxVQUFVLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDL0QsRUFBRSxJQUFJLFNBQVMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDN0IsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQzNCLEVBQUUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUM5QixFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDNUIsRUFBRSxJQUFJLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRSxFQUFFLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQztBQUNqRCxFQUFFLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLFlBQVksQ0FBQztBQUNsRCxFQUFFLElBQUksYUFBYSxHQUFHLG9CQUFvQixDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFDckU7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtBQUN6QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztBQUMzQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQztBQUN6QyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pGLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksR0FBRyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDN0UsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDekMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ25DO0FBQ0EsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGVBQWUsRUFBRTtBQUNqRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUNEO0FBQ0EsS0FBSyxDQUFDLGVBQWUsR0FBRyxVQUFVLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDNUUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7QUFDekIsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7QUFDdkIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQztBQUNuQixJQUFJLElBQUksRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksZUFBZSxFQUFFO0FBQ3JFLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMvRCxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDL0Q7QUFDQSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLE9BQU8sTUFBTTtBQUNiLFFBQVEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0EsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2Y7QUFDQSxLQUFLLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQyxFQUFFLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEQ7QUFDQSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEIsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLE9BQU8sRUFBRTtBQUM3QyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbkIsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDbEMsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDOUIsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztBQUNqRCxFQUFFLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELEVBQUUsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsRUFBRSxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0UsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDckMsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFDbkMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztBQUMzQixJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzVCLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDMUIsR0FBRyxNQUFNLElBQUksWUFBWSxFQUFFO0FBQzNCLElBQUksSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBQzdCLElBQUksSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBQzdCO0FBQ0EsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ25ELEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQ25DLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUNyRCxLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDbkIsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDO0FBQ3BCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtBQUNyQixJQUFJLEtBQUssSUFBSSxPQUFPLENBQUM7QUFDckIsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDO0FBQ3RCLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQztBQUNyQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEQ7QUFDQSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEVBQUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3hDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMxQyxFQUFFLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUM7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQy9CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxhQUFhLENBQUM7QUFDckQsSUFBSSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUNsRDtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ3RCO0FBQ0EsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3hELE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDMUMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDdEQsS0FBSyxNQUFNO0FBQ1g7QUFDQSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLElBQUksV0FBVyxHQUFHO0FBQ3hCLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSztBQUN4QixRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUs7QUFDeEIsT0FBTyxDQUFDO0FBQ1IsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDOUMsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzFDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNwQixNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQztBQUM1RCxNQUFNLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUNyQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEMsTUFBTSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDckIsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLEVBQUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkM7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDMUIsSUFBSSxJQUFJLEVBQUUsUUFBUTtBQUNsQixHQUFHLENBQUMsQ0FBQztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUM3QixFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsRUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBLFNBQVMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzNDLEVBQUUsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLEdBQUc7QUFDdkMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsUUFBUSxPQUFPLENBQUMsTUFBTTtBQUN4QixJQUFJLEtBQUssY0FBYztBQUN2QixNQUFNLE9BQU8sSUFBSUksV0FBUyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxRQUFRLElBQUk7QUFDWixVQUFVLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDeEMsWUFBWSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDOUIsY0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsYUFBYSxNQUFNO0FBQ25CLGNBQWMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztBQUN2RixhQUFhO0FBQ2IsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEMsU0FBUyxDQUFDLE9BQU8sR0FBRyxFQUFFO0FBQ3RCLFVBQVUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxPQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0EsSUFBSSxLQUFLLE1BQU07QUFDZixNQUFNLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNEO0FBQ0EsSUFBSSxLQUFLLFFBQVE7QUFDakIsTUFBTSxPQUFPLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUNyQixJQUFJO0FBQ0osTUFBTSxPQUFPLFNBQVMsRUFBRSxDQUFDO0FBQ3pCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxLQUFLLENBQUMsR0FBRyxHQUFHLFVBQVUsT0FBTyxFQUFFO0FBQy9CLEVBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxHQUFHLEdBQUcsVUFBVSxPQUFPLEVBQUU7QUFDL0IsRUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2Y7QUFDQSxLQUFLLENBQUMsYUFBYSxHQUFHLFVBQVUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3hGLEVBQUUsUUFBUSxJQUFJO0FBQ2QsSUFBSSxLQUFLLFNBQVM7QUFDbEIsTUFBTSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVFO0FBQ0EsSUFBSSxLQUFLLFNBQVM7QUFDbEIsTUFBTSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRjtBQUNBLElBQUksS0FBSyxlQUFlO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RjtBQUNBLElBQUksS0FBSyxnQkFBZ0IsQ0FBQztBQUMxQixJQUFJLEtBQUssaUJBQWlCO0FBQzFCLE1BQU0sT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ25GO0FBQ0EsSUFBSSxLQUFLLGNBQWMsQ0FBQztBQUN4QixJQUFJLEtBQUssZUFBZTtBQUN4QixNQUFNLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRjtBQUNBLElBQUksS0FBSyxzQkFBc0IsQ0FBQztBQUNoQyxJQUFJLEtBQUssd0JBQXdCO0FBQ2pDLE1BQU0sT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pGO0FBQ0EsSUFBSSxLQUFLLFFBQVE7QUFDakIsTUFBTSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNFLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQztBQUN4QixJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO0FBQ3JDLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDckIsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDZixLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNmLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCO0FBQ0EsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFDekIsS0FBSyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUNqQyxLQUFLLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFO0FBQ2pDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2YsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHO0FBQ1gsSUFBSSxRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztBQUM1QyxJQUFJLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0FBQzVDLElBQUksaUJBQWlCLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztBQUNyRCxJQUFJLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0FBQ2pELElBQUksY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7QUFDbEQsR0FBRyxDQUFDO0FBQ0osRUFBRSxJQUFJLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUNuRCxFQUFFLElBQUksYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUN0QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekQ7QUFDQSxFQUFFLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztBQUNwRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxhQUFhLENBQUM7QUFDN0QsRUFBRSxjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQzlCLEVBQUUsY0FBYyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDckMsRUFBRSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3pDLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2hELEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxhQUFhLENBQUM7QUFDaEQsRUFBRSxJQUFJLFFBQVEsR0FBRztBQUNqQixJQUFJLHFCQUFxQixFQUFFLE1BQU07QUFDakMsSUFBSSxrQkFBa0IsRUFBRSxXQUFXO0FBQ25DLElBQUksYUFBYSxFQUFFLE1BQU07QUFDekIsSUFBSSw2QkFBNkIsRUFBRSxlQUFlO0FBQ2xELElBQUksZUFBZSxFQUFFLE1BQU07QUFDM0IsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDWixJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQyxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDdEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkU7QUFDQSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUMvQyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDdkMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3hDLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQztBQUN0RixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQ3ZHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdEY7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9DLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNoRTtBQUNBLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDekQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7QUFDekQsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN4QixFQUFFLElBQUksT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0FBQ2xDO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxFQUFFLEVBQUU7QUFDL0MsSUFBSSxPQUFPO0FBQ1gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUM1QixNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQzVCLEtBQUssQ0FBQztBQUNOLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLGVBQWUsR0FBRyxTQUFTLGVBQWUsQ0FBQyxFQUFFLEVBQUU7QUFDckQsSUFBSSxPQUFPO0FBQ1gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbEIsS0FBSyxDQUFDO0FBQ04sR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksNkJBQTZCLEdBQUcsU0FBUyw2QkFBNkIsQ0FBQyxHQUFHLEVBQUU7QUFDbEYsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzdCLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztBQUNwRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDakIsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM5QyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDbkMsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM5QyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7QUFDekMsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksaUJBQWlCLEdBQUcsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDMUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7QUFDL0MsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksaUJBQWlCLEdBQUcsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDMUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7QUFDL0MsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRTtBQUM1RixJQUFJLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3hFLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUU7QUFDeEYsSUFBSSxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3hGLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLGVBQWUsR0FBRyxTQUFTLGVBQWUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUU7QUFDcEcsSUFBSSxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzFGLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLGVBQWUsR0FBRyxTQUFTLGVBQWUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUU7QUFDcEcsSUFBSSxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzFGLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLGFBQWEsR0FBRyxTQUFTLGFBQWEsQ0FBQyxHQUFHLEVBQUU7QUFDbEQsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0FBQ3RDLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDOUMsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUM7QUFDdkQsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksaUJBQWlCLEdBQUcsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDMUQsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUM7QUFDekQsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksaUJBQWlCLEdBQUcsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDMUQsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUM7QUFDekQsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUkscUJBQXFCLEdBQUcsU0FBUyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7QUFDcEYsSUFBSSxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLHVCQUF1QixHQUFHLFNBQVMsdUJBQXVCLENBQUMsR0FBRyxFQUFFO0FBQ3RFLElBQUksT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUMsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksYUFBYSxHQUFHLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO0FBQzlELElBQUksSUFBSSxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLElBQUksT0FBTztBQUNYLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUMsT0FBTztBQUN6RCxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxDQUFDLE9BQU87QUFDekQsS0FBSyxDQUFDO0FBQ04sR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzVDLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDdEMsSUFBSSxPQUFPO0FBQ1gsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNkLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDZCxLQUFLLENBQUM7QUFDTixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxxQkFBcUIsR0FBRyxTQUFTLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtBQUNsRSxJQUFJLE9BQU8sYUFBYSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRSxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSwyQkFBMkIsR0FBRyxTQUFTLDJCQUEyQixDQUFDLEdBQUcsRUFBRTtBQUM5RSxJQUFJLE9BQU8sYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0RixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSwyQkFBMkIsR0FBRyxTQUFTLDJCQUEyQixDQUFDLEdBQUcsRUFBRTtBQUM5RSxJQUFJLE9BQU8sYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0RixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSx3QkFBd0IsR0FBRyxTQUFTLHdCQUF3QixDQUFDLEdBQUcsRUFBRTtBQUN4RSxJQUFJLE9BQU8sZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9DLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLDRCQUE0QixHQUFHLFNBQVMsNEJBQTRCLENBQUMsR0FBRyxFQUFFO0FBQ2hGLElBQUksT0FBTyxlQUFlLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSw0QkFBNEIsR0FBRyxTQUFTLDRCQUE0QixDQUFDLEdBQUcsRUFBRTtBQUNoRixJQUFJLE9BQU8sZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksc0JBQXNCLEdBQUcsU0FBUyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUU7QUFDcEUsSUFBSSxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUM7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUs7QUFDN0MsUUFBUSxLQUFLLE1BQU07QUFDbkIsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0QixVQUFVLE1BQU07QUFDaEI7QUFDQSxRQUFRLEtBQUssT0FBTztBQUNwQixVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFVBQVUsTUFBTTtBQUNoQixPQUFPO0FBQ1A7QUFDQSxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLO0FBQzdDLFFBQVEsS0FBSyxLQUFLO0FBQ2xCLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEIsVUFBVSxNQUFNO0FBQ2hCO0FBQ0EsUUFBUSxLQUFLLFFBQVE7QUFDckIsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixVQUFVLE1BQU07QUFDaEIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLEVBQUU7QUFDcEUsSUFBSSxNQUFNLEVBQUUsV0FBVztBQUN2QixJQUFJLG9CQUFvQixFQUFFLDZCQUE2QjtBQUN2RCxJQUFJLFdBQVcsRUFBRSxXQUFXO0FBQzVCLElBQUksY0FBYyxFQUFFLGFBQWE7QUFDakMsSUFBSSxnQkFBZ0IsRUFBRSx1QkFBdUI7QUFDN0MsSUFBSSxpQkFBaUIsRUFBRSx3QkFBd0I7QUFDL0MsSUFBSSxtQkFBbUIsRUFBRSxLQUFLO0FBQzlCLElBQUkscUJBQXFCLEVBQUUsS0FBSztBQUNoQyxHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLEVBQUU7QUFDcEUsSUFBSSxNQUFNLEVBQUUsV0FBVztBQUN2QixJQUFJLFdBQVcsRUFBRSxTQUFTO0FBQzFCLElBQUksY0FBYyxFQUFFLFdBQVc7QUFDL0IsSUFBSSxnQkFBZ0IsRUFBRSxxQkFBcUI7QUFDM0MsSUFBSSxpQkFBaUIsRUFBRSxzQkFBc0I7QUFDN0MsSUFBSSxTQUFTLEVBQUUscUJBQXFCO0FBQ3BDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG1CQUFtQixDQUFDLENBQUMsRUFBRTtBQUNwRSxJQUFJLE1BQU0sRUFBRSxpQkFBaUI7QUFDN0IsSUFBSSxXQUFXLEVBQUUsZUFBZTtBQUNoQyxJQUFJLGNBQWMsRUFBRSxpQkFBaUI7QUFDckMsSUFBSSxnQkFBZ0IsRUFBRSwyQkFBMkI7QUFDakQsSUFBSSxpQkFBaUIsRUFBRSw0QkFBNEI7QUFDbkQsSUFBSSxTQUFTLEVBQUUscUJBQXFCO0FBQ3BDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG1CQUFtQixDQUFDLENBQUMsRUFBRTtBQUNwRSxJQUFJLE1BQU0sRUFBRSxpQkFBaUI7QUFDN0IsSUFBSSxXQUFXLEVBQUUsZUFBZTtBQUNoQyxJQUFJLGNBQWMsRUFBRSxpQkFBaUI7QUFDckMsSUFBSSxnQkFBZ0IsRUFBRSwyQkFBMkI7QUFDakQsSUFBSSxpQkFBaUIsRUFBRSw0QkFBNEI7QUFDbkQsSUFBSSxTQUFTLEVBQUUscUJBQXFCO0FBQ3BDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRTtBQUN0RTtBQUNBLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekM7QUFDQSxJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzdDLE1BQU0sSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNqQyxNQUFNLEVBQUUsQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7QUFDekQsS0FBSztBQUNMLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxFQUFFLElBQUksY0FBYyxHQUFHLFNBQVMsY0FBYyxDQUFDLElBQUksRUFBRTtBQUNyRCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLE1BQU0sV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RCxLQUFLO0FBQ0wsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDeEMsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3hDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN4QyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUNEO0FBQ0EsS0FBSyxDQUFDLFVBQVUsR0FBRyxVQUFVLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDMUMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZjtBQUNBLEVBQUUsUUFBUSxLQUFLO0FBQ2YsSUFBSSxLQUFLLE1BQU07QUFDZixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNsRCxNQUFNLE1BQU07QUFDWjtBQUNBLElBQUksS0FBSyxNQUFNO0FBQ2YsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbEQsTUFBTSxNQUFNO0FBQ1o7QUFDQSxJQUFJLEtBQUssUUFBUTtBQUNqQixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN4RCxNQUFNLE1BQU07QUFDWixHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLElBQUksVUFBVSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztBQUMvQztBQUNBLEtBQUssQ0FBQyxhQUFhLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDcEMsRUFBRSxJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7QUFDeEIsSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFFBQVEsR0FBRyxZQUFZO0FBQzdCLEVBQUUsT0FBTyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxlQUFlLEdBQUcsVUFBVSxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQ2pELEVBQUUsSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFFO0FBQzdDLElBQUksT0FBTyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUN6QyxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUM7QUFDL0MsSUFBSSxPQUFPLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBQzVDLElBQUksT0FBTyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztBQUMzQyxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsZUFBZSxHQUFHLFVBQVUsT0FBTyxFQUFFO0FBQzNDLEVBQUUsSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFFO0FBQzdDLElBQUksT0FBTyxPQUFPLENBQUMscUJBQXFCLENBQUM7QUFDekMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxPQUFPLE9BQU8sQ0FBQywyQkFBMkIsSUFBSSxPQUFPLENBQUMsd0JBQXdCLElBQUksT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ3RILEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDckQsRUFBRSxJQUFJLE1BQU0sQ0FBQztBQUNiO0FBQ0EsRUFBRSxJQUFJLENBQUMsT0FBTyxlQUFlLEtBQUssV0FBVyxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsV0FBVyxFQUFFLEVBQUU7QUFDN0csSUFBSSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELEdBQUcsTUFBTTtBQUNULElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUM7QUFDQSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRjtBQUNBLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFO0FBQzlGLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQztBQUNoQixFQUFFLElBQUksRUFBRSxNQUFNO0FBQ2QsRUFBRSxJQUFJLEVBQUUsWUFBWTtBQUNwQixDQUFDLEVBQUU7QUFDSCxFQUFFLElBQUksRUFBRSxNQUFNO0FBQ2QsRUFBRSxJQUFJLEVBQUUsRUFBRTtBQUNWLENBQUMsRUFBRTtBQUNILEVBQUUsSUFBSSxFQUFFLFFBQVE7QUFDaEIsRUFBRSxJQUFJLEVBQUUsRUFBRTtBQUNWLENBQUMsQ0FBQyxDQUFDO0FBQ0g7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsRUFBRSxJQUFJLEVBQUUsUUFBUTtBQUNoQixFQUFFLFVBQVUsRUFBRU8sUUFBTTtBQUNwQixDQUFDLEVBQUU7QUFDSCxFQUFFLElBQUksRUFBRSxVQUFVO0FBQ2xCLEVBQUUsVUFBVSxFQUFFLFFBQVE7QUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNqQjtBQUNBLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0FBQzlDLEVBQUUsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCO0FBQ0EsRUFBRSxJQUFJLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDaEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxJQUFJLEdBQUcsV0FBVyxHQUFHLEtBQUssR0FBRyw2REFBNkQsQ0FBQyxDQUFDO0FBQy9JLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDOUIsTUFBTSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxJQUFJLEtBQUssWUFBWSxFQUFFO0FBQ3BDLElBQUksSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3BDLE1BQU0sT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsS0FBSyxNQUFNO0FBQ1gsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUM5QyxLQUFLO0FBQ0wsR0FBRyxNQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUNoQztBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQzFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyQztBQUNBLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdkMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUMzQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDbkMsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDM0IsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0UsSUFBSSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDMUI7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xELE1BQU0sSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DO0FBQ0EsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVk7QUFDL0QsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMvQyxNQUFNLFdBQVcsQ0FBQyxHQUFHLEdBQUcsWUFBWTtBQUNwQyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sQ0FBQztBQUNSLEtBQUssTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQ3RELE1BQU0sV0FBVyxDQUFDLEtBQUssR0FBRyxZQUFZO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztBQUM1QztBQUNBLElBQUksV0FBVyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ25DLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM5QjtBQUNBLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNoQyxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDbkM7QUFDQSxRQUFRLElBQUksSUFBSSxFQUFFO0FBQ2xCLFVBQVUsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDbkQsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDNUIsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQ25CLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixPQUFPLE1BQU07QUFDYixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDaEMsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDOUIsTUFBTSxXQUFXLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDeEMsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEdBQUcsWUFBWTtBQUNqQyxNQUFNLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDOUIsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRTtBQUN2QyxNQUFNLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDaEMsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksV0FBVyxHQUFHO0FBQ3RCLE1BQU0sY0FBYyxFQUFFLFNBQVMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7QUFDM0QsUUFBUSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM1QixRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLFFBQVEsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDNUIsT0FBTztBQUNQLE1BQU0sTUFBTSxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQ2hDLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLE1BQU0sTUFBTSxFQUFFLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUN0QyxRQUFRLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7QUFDeEIsTUFBTSxhQUFhLEVBQUUsU0FBUyxhQUFhLEdBQUc7QUFDOUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0QsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1AsTUFBTSxPQUFPLEVBQUUsU0FBUyxPQUFPLEdBQUc7QUFDbEMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0FBQ3JDLE9BQU87QUFDUCxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFO0FBQy9CLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1AsTUFBTSxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLE1BQU0sSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7QUFDbkMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUCxNQUFNLGNBQWMsRUFBRSxTQUFTLGNBQWMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFO0FBQ3ZELFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0MsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1AsTUFBTSxrQkFBa0IsRUFBRSxTQUFTLGtCQUFrQixHQUFHO0FBQ3hELFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDNUMsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN2QyxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNqQixHQUFHLE1BQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUN4RTtBQUNBLElBQUksSUFBSSxZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RCxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7QUFDeEMsSUFBSSxJQUFJLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztBQUN4QyxJQUFJLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7QUFDdEM7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO0FBQ3ZDLE1BQU0sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUMsTUFBTSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQ25DO0FBQ0EsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtBQUM5QixNQUFNLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixNQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDNUM7QUFDQSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQ3JCLFFBQVEsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsT0FBTztBQUNQO0FBQ0EsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzFCLEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDL0IsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLEtBQUs7QUFDTDtBQUNBLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDbkQsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVk7QUFDL0MsUUFBUSxLQUFLLENBQUMsd0NBQXdDLEdBQUcsSUFBSSxHQUFHLHNCQUFzQixDQUFDLENBQUM7QUFDeEYsT0FBTyxDQUFDO0FBQ1IsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUM7QUFDbkIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixJQUFJLEdBQUcsRUFBRSxVQUFVO0FBQ25CLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUN0QixJQUFJLEtBQUssRUFBRSxHQUFHO0FBQ2QsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2xDLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsSUFBSSxHQUFHLEVBQUUsVUFBVTtBQUNuQixJQUFJLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdEIsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0FBQ25FLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsSUFBSSxHQUFHLEVBQUUsT0FBTztBQUNoQixJQUFJLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztBQUM5QyxJQUFJLEtBQUssRUFBRSxVQUFVO0FBQ3JCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0FBQ3ZELEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsSUFBSSxHQUFHLEVBQUUsT0FBTztBQUNoQixJQUFJLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztBQUM5QyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUM7QUFDRDtBQUNBLElBQUlFLFdBQVMsR0FBRyxTQUFTLFNBQVMsR0FBRztBQUNyQztBQUNBLEVBQUUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUM5QixJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNILE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNuQyxNQUFNLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDakQsS0FBSztBQUNMLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNyQyxRQUFRLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDaEQsT0FBTztBQUNQLFdBQVcsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN2QyxVQUFVLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEQsU0FBUyxNQUFNO0FBQ2YsVUFBVSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUNuRCxTQUFTO0FBQ1QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHQSxXQUFTLENBQUM7QUFDckM7QUFDQSxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFO0FBQ2pDLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDMUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLEdBQUc7QUFDdkMsRUFBRSxJQUFJLEVBQUUsSUFBSSxZQUFZLFVBQVUsQ0FBQyxFQUFFO0FBQ3JDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQzVCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQ25DO0FBQ0EsT0FBTyxDQUFDLGNBQWMsR0FBRyxZQUFZO0FBQ3JDLEVBQUUsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLE9BQU8sQ0FBQyxRQUFRLEdBQUcsVUFBVSxRQUFRLEVBQUU7QUFDdkMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDWixJQUFJLFFBQVEsRUFBRSxRQUFRO0FBQ3RCLElBQUksVUFBVSxFQUFFLEVBQUU7QUFDbEIsR0FBRyxDQUFDO0FBQ0osRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQSxPQUFPLENBQUMsR0FBRyxHQUFHLFVBQVUsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNyQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzFCO0FBQ0EsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNwQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQzVCLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDaEIsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixLQUFLLENBQUMsQ0FBQztBQUNQLEdBQUcsTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoQyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztBQUNuQixJQUFJLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckM7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9DLE1BQU0sSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDMUIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVFO0FBQ0EsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDeEIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM1QixNQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQzlCLFFBQVEsSUFBSSxFQUFFLEtBQUs7QUFDbkIsUUFBUSxLQUFLLEVBQUUsTUFBTTtBQUNyQixPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDNUI7QUFDQSxPQUFPLENBQUMsYUFBYSxHQUFHLFVBQVUsRUFBRSxFQUFFO0FBQ3RDLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUIsRUFBRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDekMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixJQUFJLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDcEMsSUFBSSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ25DLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0MsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJQyxTQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3ZCO0FBQ0EsSUFBSUMsV0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QztBQUNBLEVBQUUsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQzdCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLEdBQUc7QUFDSCxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzVCLE1BQU0sT0FBT0YsV0FBUyxDQUFDLEtBQUssQ0FBQ0EsV0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25ELEtBQUs7QUFDTCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0FFLFdBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDL0IsRUFBRSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0FBQ0EsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDQSxXQUFTLENBQUMsQ0FBQztBQUMxQjtBQUNBLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEIsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGO0FBQ0FBLFdBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxJQUFJLEVBQUU7QUFDckMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0FBLFdBQVMsQ0FBQyxPQUFPLEdBQUdELFNBQU8sQ0FBQztBQUM1QjtBQUNBQyxXQUFTLENBQUMsVUFBVSxHQUFHQSxXQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUN6RDtBQUNBLGlCQUFjLEdBQUdBLFdBQVM7O0FDNWwrQjFCO0FBQ08sSUFBSSxZQUFZLEdBQUcscVBBQXFQLENBQUM7QUFDelEsSUFBSSxTQUFTLEdBQUcsc0pBQXNKLENBQUM7QUFDdkssSUFBSSxjQUFjLEdBQUcsMlhBQTJYLENBQUM7QUFDalosSUFBSSxjQUFjLEdBQUcsK05BQStOLENBQUM7QUFDclAsSUFBSSxvQkFBb0IsR0FBRyx5UEFBeVAsQ0FBQztBQUNyUixJQUFJLGNBQWMsR0FBRyx1VkFBdVYsQ0FBQztBQUM3VyxJQUFJLGNBQWMsR0FBRyxtb0JBQW1vQixDQUFDO0FBQ3pwQixJQUFJLG1CQUFtQixHQUFHLG1xQkFBbXFCLENBQUM7QUFDOXJCLElBQUksbUJBQW1CLEdBQUcsMG5CQUEwbkIsQ0FBQztBQUNycEIsSUFBSSxxQkFBcUIsR0FBRyxvdUJBQW91QixDQUFDO0FBQ2p3QixJQUFJLHdCQUF3QixHQUFHLHM0QkFBczRCLENBQUM7QUFDdDZCLElBQUksaUJBQWlCLEdBQUcsK3FCQUErcUIsQ0FBQztBQUN4c0IsSUFBSSxrQkFBa0IsR0FBRyxrcEJBQWtwQixDQUFDO0FBQzVxQixJQUFJLG9CQUFvQixHQUFHLDB2QkFBMHZCLENBQUM7QUFDdHhCLElBQUksVUFBVSxHQUFHLGdJQUFnSSxDQUFDO0FBQ2xKLElBQUksZUFBZSxHQUFHLG1LQUFtSyxDQUFDO0FBQzFMLElBQUksc0JBQXNCLEdBQUcseVVBQXlVLENBQUM7QUFDdlcsSUFBSSxtQkFBbUIsR0FBRywrTkFBK04sQ0FBQztBQUMxUCxJQUFJLDBCQUEwQixHQUFHLHdZQUF3WSxDQUFDO0FBQzFhLElBQUksb0JBQW9CLEdBQUcsK05BQStOLENBQUM7QUFDM1AsSUFBSSwyQkFBMkIsR0FBRyx3WUFBd1ksQ0FBQztBQUMzYSxJQUFJLGFBQWEsR0FBRyxvTUFBb00sQ0FBQztBQUN6TixJQUFJLHFCQUFxQixHQUFHLHdPQUF3TyxDQUFDO0FBQ3JRLElBQUksNEJBQTRCLEdBQUcsNFRBQTRULENBQUM7QUFDaFcsSUFBSSxvQkFBb0IsR0FBRyxtUkFBbVIsQ0FBQztBQUMvUyxJQUFJLGdCQUFnQixHQUFHLGlmQUFpZixDQUFDO0FBQ3pnQixJQUFJLHVCQUF1QixHQUFHLHFuQkFBcW5CLENBQUM7QUFDcHBCLElBQUksY0FBYyxHQUFHLDZYQUE2WCxDQUFDO0FBQ25aLElBQUkscUJBQXFCLEdBQUcsaWJBQWliLENBQUM7QUFDOWMsSUFBSSxlQUFlLEdBQUcsc01BQXNNLENBQUM7QUFDN04sSUFBSSxzQkFBc0IsR0FBRyw4VUFBOFUsQ0FBQztBQUM1VyxJQUFJLGVBQWUsR0FBRyw2aUJBQTZpQixDQUFDO0FBQ3BrQixJQUFJLHFCQUFxQixHQUFHLHduQkFBd25CLENBQUM7QUFDcnBCLElBQUksc0JBQXNCLEdBQUcsaXJCQUFpckIsQ0FBQztBQUMvc0IsSUFBSSxnQkFBZ0IsR0FBRyxnUUFBZ1EsQ0FBQztBQUN4UixJQUFJLHVCQUF1QixHQUFHLG9rQkFBb2tCLENBQUM7QUFDbm1CLElBQUksZUFBZSxHQUFHLG1tQkFBbW1CLENBQUM7QUFDMW5CLElBQUksc0JBQXNCLEdBQUcseWlCQUF5aUIsQ0FBQztBQUN2a0IsSUFBSSxhQUFhLEdBQUcsMm5DQUEybkMsQ0FBQztBQUNocEMsSUFBSSxvQkFBb0IsR0FBRyxzcUNBQXNxQyxDQUFDO0FBQ2xzQyxJQUFJLGlCQUFpQixHQUFHLDZXQUE2VyxDQUFDO0FBQ3RZLElBQUksd0JBQXdCLEdBQUcsd2hCQUF3aEIsQ0FBQztBQUN4akIsSUFBSSxtQkFBbUIsR0FBRyxrVkFBa1YsQ0FBQztBQUM3VyxJQUFJLGlCQUFpQixHQUFHLHdMQUF3TCxDQUFDO0FBQ2pOLElBQUksd0JBQXdCLEdBQUcseVRBQXlULENBQUM7QUFDelYsSUFBSSxjQUFjLEdBQUcsK1RBQStULENBQUM7QUFDclYsSUFBSSxxQkFBcUIsR0FBRywyY0FBMmMsQ0FBQztBQUN4ZSxJQUFJLGVBQWUsR0FBRyxra0JBQWtrQixDQUFDO0FBQ3psQixJQUFJLHNCQUFzQixHQUFHLDQ4QkFBNDhCLENBQUM7QUFDMStCLElBQUksaUJBQWlCLEdBQUcsc1JBQXNSLENBQUM7QUFDL1MsSUFBSSxlQUFlLEdBQUcsaVJBQWlSLENBQUM7QUFDeFMsSUFBSSxzQkFBc0IsR0FBRyw0Y0FBNGMsQ0FBQztBQUMxZSxJQUFJLGFBQWEsR0FBRyw4U0FBOFMsQ0FBQztBQUNuVSxJQUFJLG9CQUFvQixHQUFHLHVlQUF1ZSxDQUFDO0FBQ25nQixJQUFJLGNBQWMsR0FBRyxvYUFBb2EsQ0FBQztBQUMxYixJQUFJLHFCQUFxQixHQUFHLDJnQkFBMmdCLENBQUM7QUFDeGlCLElBQUksZUFBZSxHQUFHLGdKQUFnSixDQUFDO0FBQ3ZLLElBQUksc0JBQXNCLEdBQUcsc1VBQXNVLENBQUM7QUFDcFcsSUFBSSxrQkFBa0IsR0FBRyxtUEFBbVAsQ0FBQztBQUM3USxJQUFJLHVCQUF1QixHQUFHLHdTQUF3UyxDQUFDO0FBQ3ZVLElBQUksOEJBQThCLEdBQUcsOFlBQThZLENBQUM7QUFDcGIsSUFBSSx1QkFBdUIsR0FBRywrT0FBK08sQ0FBQztBQUM5USxJQUFJLDhCQUE4QixHQUFHLHFWQUFxVixDQUFDO0FBQzNYLElBQUkseUJBQXlCLEdBQUcsd1ZBQXdWLENBQUM7QUFDelgsSUFBSSxzQkFBc0IsR0FBRyxrUUFBa1EsQ0FBQztBQUNoUyxJQUFJLDZCQUE2QixHQUFHLHdXQUF3VyxDQUFDO0FBQzdZLElBQUksd0JBQXdCLEdBQUcsaWZBQWlmLENBQUM7QUFDamhCLElBQUksK0JBQStCLEdBQUcsK25CQUErbkIsQ0FBQztBQUN0cUIsSUFBSSxlQUFlLEdBQUcsOGVBQThlLENBQUM7QUFDcmdCLElBQUksc0JBQXNCLEdBQUcsMmNBQTJjLENBQUM7QUFDemUsSUFBSSxpQkFBaUIsR0FBRyw2UEFBNlAsQ0FBQztBQUN0UixJQUFJLHdCQUF3QixHQUFHLDJaQUEyWixDQUFDO0FBQzNiLElBQUksYUFBYSxHQUFHLGtQQUFrUCxDQUFDO0FBQ3ZRLElBQUksb0JBQW9CLEdBQUcseVlBQXlZLENBQUM7QUFDcmEsSUFBSSxpQkFBaUIsR0FBRyxnUkFBZ1IsQ0FBQztBQUN6UyxJQUFJLGNBQWMsR0FBRyxtS0FBbUssQ0FBQztBQUN6TCxJQUFJLHFCQUFxQixHQUFHLHdWQUF3VixDQUFDO0FBQ3JYLElBQUksa0JBQWtCLEdBQUcsMFlBQTBZLENBQUM7QUFDcGEsSUFBSSx5QkFBeUIsR0FBRyw0aUJBQTRpQixDQUFDO0FBQzdrQixJQUFJLG9CQUFvQixHQUFHLDRYQUE0WCxDQUFDO0FBQ3haLElBQUksMkJBQTJCLEdBQUcsZ25CQUFnbkIsQ0FBQztBQUNucEIsSUFBSSxnQkFBZ0IsR0FBRyw2UEFBNlAsQ0FBQztBQUNyUixJQUFJLHVCQUF1QixHQUFHLG9iQUFvYixDQUFDO0FBQ25kLElBQUksZ0JBQWdCLEdBQUcsK2NBQStjLENBQUM7QUFDdmUsSUFBSSx1QkFBdUIsR0FBRyx3bEJBQXdsQixDQUFDO0FBQ3ZuQixJQUFJLGtCQUFrQixHQUFHLG1MQUFtTCxDQUFDO0FBQzdNLElBQUkseUJBQXlCLEdBQUcsaVVBQWlVLENBQUM7QUFDbFcsSUFBSSxjQUFjLEdBQUcsd09BQXdPLENBQUM7QUFDOVAsSUFBSSxxQkFBcUIsR0FBRyw0WkFBNFosQ0FBQztBQUN6YixJQUFJLG9CQUFvQixHQUFHLG9VQUFvVSxDQUFDO0FBQ2hXLElBQUksMEJBQTBCLEdBQUcsd21CQUF3bUIsQ0FBQztBQUMxb0IsSUFBSSxpQ0FBaUMsR0FBRyx1dUJBQXV1QixDQUFDO0FBQ2h4QixJQUFJLDJCQUEyQixHQUFHLHVkQUF1ZCxDQUFDO0FBQzFmLElBQUksZ0JBQWdCLEdBQUcsZ1VBQWdVLENBQUM7QUFDeFYsSUFBSSx1QkFBdUIsR0FBRyxtYkFBbWIsQ0FBQztBQUNsZCxJQUFJLGFBQWEsR0FBRyx5UkFBeVIsQ0FBQztBQUM5UyxJQUFJLG9CQUFvQixHQUFHLHFkQUFxZCxDQUFDO0FBQ2pmLElBQUksa0JBQWtCLEdBQUcsaWRBQWlkLENBQUM7QUFDM2UsSUFBSSxxQkFBcUIsR0FBRyxpbUJBQWltQixDQUFDO0FBQzluQixJQUFJLDRCQUE0QixHQUFHLDBzQkFBMHNCLENBQUM7QUFDOXVCLElBQUkseUJBQXlCLEdBQUcsNmtCQUE2a0IsQ0FBQztBQUM5bUIsSUFBSSxlQUFlLEdBQUcsNFRBQTRULENBQUM7QUFDblYsSUFBSSxTQUFTLEdBQUcsOE9BQThPLENBQUM7QUFDL1AsSUFBSSxRQUFRLEdBQUcsb0dBQW9HLENBQUM7QUFDcEgsSUFBSSxlQUFlLEdBQUcsZ21DQUFnbUMsQ0FBQztBQUN2bkMsSUFBSSxpQkFBaUIsR0FBRyxpckJBQWlyQixDQUFDO0FBQzFzQixJQUFJLFlBQVksR0FBRyx5dkNBQXl2QyxDQUFDO0FBQzd3QyxJQUFJLFVBQVUsR0FBRyxnWkFBZ1osQ0FBQztBQUNsYSxJQUFJLGdCQUFnQixHQUFHLG1WQUFtVixDQUFDO0FBQzNXLElBQUksbUJBQW1CLEdBQUcsc2JBQXNiLENBQUM7QUFDamQsSUFBSSxjQUFjLEdBQUcsc1ZBQXNWLENBQUM7QUFDNVcsSUFBSSxTQUFTLEdBQUcsb1lBQW9ZLENBQUM7QUFDclosSUFBSSxhQUFhLEdBQUcscWRBQXFkLENBQUM7QUFDMWUsSUFBSSxvQkFBb0IsR0FBRyxndkJBQWd2QixDQUFDO0FBQzV3QixJQUFJLFdBQVcsR0FBRyxrSUFBa0ksQ0FBQztBQUNySixJQUFJLGtCQUFrQixHQUFHLCtOQUErTixDQUFDO0FBQ3pQLElBQUksY0FBYyxHQUFHLDROQUE0TixDQUFDO0FBQ2xQLElBQUksa0JBQWtCLEdBQUcsK09BQStPLENBQUM7QUFDelEsSUFBSSxVQUFVLEdBQUcsOE9BQThPLENBQUM7QUFDaFEsSUFBSSxRQUFRLEdBQUcseVJBQXlSLENBQUM7QUFDelMsSUFBSSxZQUFZLEdBQUcsa2JBQWtiLENBQUM7QUFDdGMsSUFBSSxhQUFhLEdBQUcsd1RBQXdULENBQUM7QUFDN1UsSUFBSSxhQUFhLEdBQUcseVBBQXlQLENBQUM7QUFDOVEsSUFBSSxnQkFBZ0IsR0FBRywrUkFBK1IsQ0FBQztBQUN2VCxJQUFJLHVCQUF1QixHQUFHLGdZQUFnWSxDQUFDO0FBQy9aLElBQUksb0JBQW9CLEdBQUcscVNBQXFTLENBQUM7QUFDalUsSUFBSSxnQkFBZ0IsR0FBRyxxY0FBcWMsQ0FBQztBQUM3ZCxJQUFJLFlBQVksR0FBRyx5YkFBeWIsQ0FBQztBQUM3YyxJQUFJLGVBQWUsR0FBRyw4cUJBQThxQixDQUFDO0FBQ3JzQixJQUFJLFdBQVcsR0FBRyw0ZkFBNGYsQ0FBQztBQUMvZ0IsSUFBSSxhQUFhLEdBQUcsdVJBQXVSLENBQUM7QUFDNVMsSUFBSSxvQkFBb0IsR0FBRyxtVEFBbVQsQ0FBQztBQUMvVSxJQUFJLFlBQVksR0FBRyxxUUFBcVEsQ0FBQztBQUN6UixJQUFJLGNBQWMsR0FBRyx3UkFBd1IsQ0FBQztBQUM5UyxJQUFJLFFBQVEsR0FBRyxrUUFBa1EsQ0FBQztBQUNsUixJQUFJLFFBQVEsR0FBRyxrREFBa0QsQ0FBQztBQUNsRSxJQUFJLFdBQVcsR0FBRyxnSEFBZ0gsQ0FBQztBQUNuSSxJQUFJLGtCQUFrQixHQUFHLGlJQUFpSSxDQUFDO0FBQzNKLElBQUksY0FBYyxHQUFHLDJHQUEyRyxDQUFDO0FBQ2pJLElBQUksbUJBQW1CLEdBQUcsd1NBQXdTLENBQUM7QUFDblUsSUFBSSwwQkFBMEIsR0FBRywyWEFBMlgsQ0FBQztBQUM3WixJQUFJLHFCQUFxQixHQUFHLHFMQUFxTCxDQUFDO0FBQ2xOLElBQUksZ0JBQWdCLEdBQUcsME9BQTBPLENBQUM7QUFDbFEsSUFBSSx1QkFBdUIsR0FBRywyYUFBMmEsQ0FBQztBQUMxYyxJQUFJLGFBQWEsR0FBRyx3SUFBd0ksQ0FBQztBQUM3SixJQUFJLG9CQUFvQixHQUFHLDJNQUEyTSxDQUFDO0FBQ3ZPLElBQUksZUFBZSxHQUFHLDhGQUE4RixDQUFDO0FBQ3JILElBQUksc0JBQXNCLEdBQUcsOEpBQThKLENBQUM7QUFDNUwsSUFBSSxnQkFBZ0IsR0FBRyw4TUFBOE0sQ0FBQztBQUN0TyxJQUFJLHVCQUF1QixHQUFHLGlXQUFpVyxDQUFDO0FBQ2hZLElBQUksZUFBZSxHQUFHLGdFQUFnRSxDQUFDO0FBQ3ZGLElBQUksWUFBWSxHQUFHLGdLQUFnSyxDQUFDO0FBQ3BMLElBQUksbUJBQW1CLEdBQUcsbU9BQW1PLENBQUM7QUFDOVAsSUFBSSxjQUFjLEdBQUcsc1FBQXNRLENBQUM7QUFDNVIsSUFBSSxxQkFBcUIsR0FBRyx5VUFBeVUsQ0FBQztBQUN0VyxJQUFJLGVBQWUsR0FBRyx5T0FBeU8sQ0FBQztBQUNoUSxJQUFJLHNCQUFzQixHQUFHLHlQQUF5UCxDQUFDO0FBQ3ZSLElBQUksUUFBUSxHQUFHLG1lQUFtZSxDQUFDO0FBQ25mLElBQUksZUFBZSxHQUFHLGdrQkFBZ2tCLENBQUM7QUFDdmxCLElBQUksd0JBQXdCLEdBQUcsZ0VBQWdFLENBQUM7QUFDaEcsSUFBSSxzQkFBc0IsR0FBRyw4Q0FBOEMsQ0FBQztBQUM1RSxJQUFJLHVCQUF1QixHQUFHLGtEQUFrRCxDQUFDO0FBQ2pGLElBQUksc0JBQXNCLEdBQUcsb0RBQW9ELENBQUM7QUFDbEYsSUFBSSxzQkFBc0IsR0FBRywrREFBK0QsQ0FBQztBQUM3RixJQUFJLG1CQUFtQixHQUFHLGlEQUFpRCxDQUFDO0FBQzVFLElBQUksZUFBZSxHQUFHLGtqQkFBa2pCLENBQUM7QUFDemtCLElBQUksVUFBVSxHQUFHLDJnQkFBMmdCLENBQUM7QUFDN2hCLElBQUksUUFBUSxHQUFHLHN1QkFBc3VCLENBQUM7QUFDdHZCLElBQUksU0FBUyxHQUFHLDRFQUE0RSxDQUFDO0FBQzdGLElBQUksWUFBWSxHQUFHLDJKQUEySixDQUFDO0FBQy9LLElBQUksbUJBQW1CLEdBQUcseUtBQXlLLENBQUM7QUFDcE0sSUFBSSxlQUFlLEdBQUcsdUpBQXVKLENBQUM7QUFDOUssSUFBSSxzQkFBc0IsR0FBRywyTkFBMk4sQ0FBQztBQUN6UCxJQUFJLFNBQVMsR0FBRyw0SUFBNEksQ0FBQztBQUM3SixJQUFJLFlBQVksR0FBRyxzTkFBc04sQ0FBQztBQUMxTyxJQUFJLG1CQUFtQixHQUFHLHlPQUF5TyxDQUFDO0FBQ3BRLElBQUksZUFBZSxHQUFHLHVOQUF1TixDQUFDO0FBQzlPLElBQUksc0JBQXNCLEdBQUcsMFJBQTBSLENBQUM7QUFDeFQsSUFBSSxTQUFTLEdBQUcsdUdBQXVHLENBQUM7QUFDeEgsSUFBSSxZQUFZLEdBQUcsaUxBQWlMLENBQUM7QUFDck0sSUFBSSxtQkFBbUIsR0FBRyxvTUFBb00sQ0FBQztBQUMvTixJQUFJLGVBQWUsR0FBRyxrTEFBa0wsQ0FBQztBQUN6TSxJQUFJLHNCQUFzQixHQUFHLHFQQUFxUCxDQUFDO0FBQ25SLElBQUksU0FBUyxHQUFHLGdFQUFnRSxDQUFDO0FBQ2pGLElBQUksWUFBWSxHQUFHLDBJQUEwSSxDQUFDO0FBQzlKLElBQUksbUJBQW1CLEdBQUcsNkpBQTZKLENBQUM7QUFDeEwsSUFBSSxlQUFlLEdBQUcsMklBQTJJLENBQUM7QUFDbEssSUFBSSxzQkFBc0IsR0FBRyw4TUFBOE0sQ0FBQztBQUM1TyxJQUFJLFNBQVMsR0FBRyx3Q0FBd0MsQ0FBQztBQUN6RCxJQUFJLFlBQVksR0FBRyxrSEFBa0gsQ0FBQztBQUN0SSxJQUFJLG1CQUFtQixHQUFHLHFJQUFxSSxDQUFDO0FBQ2hLLElBQUksZUFBZSxHQUFHLG1IQUFtSCxDQUFDO0FBQzFJLElBQUksc0JBQXNCLEdBQUcsc0xBQXNMLENBQUM7QUFDcE4sSUFBSSxTQUFTLEdBQUcsa0NBQWtDLENBQUM7QUFDbkQsSUFBSSxZQUFZLEdBQUcsNEdBQTRHLENBQUM7QUFDaEksSUFBSSxtQkFBbUIsR0FBRywrSEFBK0gsQ0FBQztBQUMxSixJQUFJLGVBQWUsR0FBRyw2R0FBNkcsQ0FBQztBQUNwSSxJQUFJLHNCQUFzQixHQUFHLGdMQUFnTCxDQUFDO0FBQzlNLElBQUksU0FBUyxHQUFHLGtGQUFrRixDQUFDO0FBQ25HLElBQUksWUFBWSxHQUFHLDRKQUE0SixDQUFDO0FBQ2hMLElBQUksbUJBQW1CLEdBQUcsK0tBQStLLENBQUM7QUFDMU0sSUFBSSxlQUFlLEdBQUcsNkpBQTZKLENBQUM7QUFDcEwsSUFBSSxzQkFBc0IsR0FBRyxnT0FBZ08sQ0FBQztBQUM5UCxJQUFJLFNBQVMsR0FBRyx3Q0FBd0MsQ0FBQztBQUN6RCxJQUFJLFlBQVksR0FBRyxrSEFBa0gsQ0FBQztBQUN0SSxJQUFJLG1CQUFtQixHQUFHLHFJQUFxSSxDQUFDO0FBQ2hLLElBQUksZUFBZSxHQUFHLG1IQUFtSCxDQUFDO0FBQzFJLElBQUksc0JBQXNCLEdBQUcsc0xBQXNMLENBQUM7QUFDcE4sSUFBSSxTQUFTLEdBQUcseUNBQXlDLENBQUM7QUFDMUQsSUFBSSxZQUFZLEdBQUcsbUhBQW1ILENBQUM7QUFDdkksSUFBSSxtQkFBbUIsR0FBRyxpSUFBaUksQ0FBQztBQUM1SixJQUFJLGVBQWUsR0FBRyxvSEFBb0gsQ0FBQztBQUMzSSxJQUFJLHNCQUFzQixHQUFHLHVMQUF1TCxDQUFDO0FBQ3JOLElBQUksU0FBUyxHQUFHLDhEQUE4RCxDQUFDO0FBQy9FLElBQUksWUFBWSxHQUFHLHdJQUF3SSxDQUFDO0FBQzVKLElBQUksbUJBQW1CLEdBQUcsc0pBQXNKLENBQUM7QUFDakwsSUFBSSxlQUFlLEdBQUcseUlBQXlJLENBQUM7QUFDaEssSUFBSSxzQkFBc0IsR0FBRyw0TUFBNE0sQ0FBQztBQUMxTyxJQUFJLFNBQVMsR0FBRyx1REFBdUQsQ0FBQztBQUN4RSxJQUFJLFlBQVksR0FBRyxpSUFBaUksQ0FBQztBQUNySixJQUFJLG1CQUFtQixHQUFHLCtJQUErSSxDQUFDO0FBQzFLLElBQUksZUFBZSxHQUFHLGtJQUFrSSxDQUFDO0FBQ3pKLElBQUksc0JBQXNCLEdBQUcscU1BQXFNLENBQUM7QUFDbk8sSUFBSSxTQUFTLEdBQUcsdUJBQXVCLENBQUM7QUFDeEMsSUFBSSxZQUFZLEdBQUcsaUdBQWlHLENBQUM7QUFDckgsSUFBSSxtQkFBbUIsR0FBRywrR0FBK0csQ0FBQztBQUMxSSxJQUFJLGVBQWUsR0FBRyxrR0FBa0csQ0FBQztBQUN6SCxJQUFJLHNCQUFzQixHQUFHLHFLQUFxSyxDQUFDO0FBQ25NLElBQUksU0FBUyxHQUFHLG1FQUFtRSxDQUFDO0FBQ3BGLElBQUksWUFBWSxHQUFHLDZJQUE2SSxDQUFDO0FBQ2pLLElBQUksbUJBQW1CLEdBQUcsMkpBQTJKLENBQUM7QUFDdEwsSUFBSSxlQUFlLEdBQUcsOElBQThJLENBQUM7QUFDckssSUFBSSxzQkFBc0IsR0FBRyxpTkFBaU4sQ0FBQztBQUMvTyxJQUFJLFNBQVMsR0FBRyx3Q0FBd0MsQ0FBQztBQUN6RCxJQUFJLFlBQVksR0FBRyxrSEFBa0gsQ0FBQztBQUN0SSxJQUFJLG1CQUFtQixHQUFHLGdJQUFnSSxDQUFDO0FBQzNKLElBQUksZUFBZSxHQUFHLG1IQUFtSCxDQUFDO0FBQzFJLElBQUksc0JBQXNCLEdBQUcsc0xBQXNMLENBQUM7QUFDcE4sSUFBSSxTQUFTLEdBQUcsZ0dBQWdHLENBQUM7QUFDakgsSUFBSSxZQUFZLEdBQUcsMEtBQTBLLENBQUM7QUFDOUwsSUFBSSxtQkFBbUIsR0FBRyx3TEFBd0wsQ0FBQztBQUNuTixJQUFJLGVBQWUsR0FBRywyS0FBMkssQ0FBQztBQUNsTSxJQUFJLHNCQUFzQixHQUFHLDhPQUE4TyxDQUFDO0FBQzVRLElBQUksU0FBUyxHQUFHLHNFQUFzRSxDQUFDO0FBQ3ZGLElBQUksWUFBWSxHQUFHLGdKQUFnSixDQUFDO0FBQ3BLLElBQUksbUJBQW1CLEdBQUcsOEpBQThKLENBQUM7QUFDekwsSUFBSSxlQUFlLEdBQUcsaUpBQWlKLENBQUM7QUFDeEssSUFBSSxzQkFBc0IsR0FBRyxvTkFBb04sQ0FBQztBQUNsUCxJQUFJLFNBQVMsR0FBRyxzR0FBc0csQ0FBQztBQUN2SCxJQUFJLFlBQVksR0FBRyxnTEFBZ0wsQ0FBQztBQUNwTSxJQUFJLG1CQUFtQixHQUFHLDhMQUE4TCxDQUFDO0FBQ3pOLElBQUksZUFBZSxHQUFHLGlMQUFpTCxDQUFDO0FBQ3hNLElBQUksc0JBQXNCLEdBQUcsb1BBQW9QLENBQUM7QUFDbFIsSUFBSSxTQUFTLEdBQUcsdUdBQXVHLENBQUM7QUFDeEgsSUFBSSxZQUFZLEdBQUcsaUxBQWlMLENBQUM7QUFDck0sSUFBSSxtQkFBbUIsR0FBRywrTEFBK0wsQ0FBQztBQUMxTixJQUFJLGVBQWUsR0FBRyxrTEFBa0wsQ0FBQztBQUN6TSxJQUFJLHNCQUFzQixHQUFHLDJQQUEyUCxDQUFDO0FBQ3pSLElBQUksU0FBUyxHQUFHLHVHQUF1RyxDQUFDO0FBQ3hILElBQUksWUFBWSxHQUFHLGlMQUFpTCxDQUFDO0FBQ3JNLElBQUksbUJBQW1CLEdBQUcsK0xBQStMLENBQUM7QUFDMU4sSUFBSSxlQUFlLEdBQUcsa0xBQWtMLENBQUM7QUFDek0sSUFBSSxzQkFBc0IsR0FBRyxxUEFBcVAsQ0FBQztBQUNuUixJQUFJLFNBQVMsR0FBRywyQkFBMkIsQ0FBQztBQUM1QyxJQUFJLFlBQVksR0FBRyxxR0FBcUcsQ0FBQztBQUN6SCxJQUFJLG1CQUFtQixHQUFHLG1IQUFtSCxDQUFDO0FBQzlJLElBQUksZUFBZSxHQUFHLHNHQUFzRyxDQUFDO0FBQzdILElBQUksc0JBQXNCLEdBQUcseUtBQXlLLENBQUM7QUFDdk0sSUFBSSxTQUFTLEdBQUcsNERBQTRELENBQUM7QUFDN0UsSUFBSSxZQUFZLEdBQUcsc0lBQXNJLENBQUM7QUFDMUosSUFBSSxtQkFBbUIsR0FBRyxvSkFBb0osQ0FBQztBQUMvSyxJQUFJLGVBQWUsR0FBRyx1SUFBdUksQ0FBQztBQUM5SixJQUFJLHNCQUFzQixHQUFHLDBNQUEwTSxDQUFDO0FBQ3hPLElBQUksU0FBUyxHQUFHLHFDQUFxQyxDQUFDO0FBQ3RELElBQUksWUFBWSxHQUFHLCtHQUErRyxDQUFDO0FBQ25JLElBQUksbUJBQW1CLEdBQUcsNkhBQTZILENBQUM7QUFDeEosSUFBSSxlQUFlLEdBQUcsZ0hBQWdILENBQUM7QUFDdkksSUFBSSxzQkFBc0IsR0FBRyxtTEFBbUwsQ0FBQztBQUNqTixJQUFJLFNBQVMsR0FBRyxzRUFBc0UsQ0FBQztBQUN2RixJQUFJLFlBQVksR0FBRyxnSkFBZ0osQ0FBQztBQUNwSyxJQUFJLG1CQUFtQixHQUFHLDhKQUE4SixDQUFDO0FBQ3pMLElBQUksZUFBZSxHQUFHLGlKQUFpSixDQUFDO0FBQ3hLLElBQUksc0JBQXNCLEdBQUcsb05BQW9OLENBQUM7QUFDbFAsSUFBSSxTQUFTLEdBQUcsa0VBQWtFLENBQUM7QUFDbkYsSUFBSSxZQUFZLEdBQUcsNElBQTRJLENBQUM7QUFDaEssSUFBSSxtQkFBbUIsR0FBRywwSkFBMEosQ0FBQztBQUNyTCxJQUFJLGVBQWUsR0FBRyw2SUFBNkksQ0FBQztBQUNwSyxJQUFJLHNCQUFzQixHQUFHLGdOQUFnTixDQUFDO0FBQzlPLElBQUksU0FBUyxHQUFHLDJDQUEyQyxDQUFDO0FBQzVELElBQUksWUFBWSxHQUFHLHFIQUFxSCxDQUFDO0FBQ3pJLElBQUksbUJBQW1CLEdBQUcsbUlBQW1JLENBQUM7QUFDOUosSUFBSSxlQUFlLEdBQUcsc0hBQXNILENBQUM7QUFDN0ksSUFBSSxzQkFBc0IsR0FBRyx5TEFBeUwsQ0FBQztBQUN2TixJQUFJLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQztBQUN2RCxJQUFJLFlBQVksR0FBRyxnSEFBZ0gsQ0FBQztBQUNwSSxJQUFJLG1CQUFtQixHQUFHLDhIQUE4SCxDQUFDO0FBQ3pKLElBQUksZUFBZSxHQUFHLGlIQUFpSCxDQUFDO0FBQ3hJLElBQUksc0JBQXNCLEdBQUcsb0xBQW9MLENBQUM7QUFDbE4sSUFBSSxtQkFBbUIsR0FBRyw2RUFBNkUsQ0FBQztBQUN4RyxJQUFJLG1CQUFtQixHQUFHLDZZQUE2WSxDQUFDO0FBQ3hhLElBQUksZ0JBQWdCLEdBQUcsOGVBQThlLENBQUM7QUFDdGdCLElBQUksZ0JBQWdCLEdBQUcsZ1pBQWdaLENBQUM7QUFDeGEsSUFBSSxnQkFBZ0IsR0FBRyxtUUFBbVEsQ0FBQztBQUMzUixJQUFJLGtCQUFrQixHQUFHLHFPQUFxTyxDQUFDO0FBQy9QLElBQUksZUFBZSxHQUFHLG9PQUFvTyxDQUFDO0FBQzNQLElBQUksa0JBQWtCLEdBQUcsa1ZBQWtWLENBQUM7QUFDNVcsSUFBSSxzQkFBc0IsR0FBRyx5U0FBeVMsQ0FBQztBQUN2VSxJQUFJLHlCQUF5QixHQUFHLG1YQUFtWCxDQUFDO0FBQ3BaLElBQUksWUFBWSxHQUFHLDJJQUEySSxDQUFDO0FBQy9KLElBQUksU0FBUyxHQUFHLHdsQ0FBd2xDLENBQUM7QUFDem1DLElBQUksY0FBYyxHQUFHLDRQQUE0UCxDQUFDO0FBQ2xSLElBQUksWUFBWSxHQUFHLDZXQUE2VyxDQUFDO0FBQ2pZLElBQUksYUFBYSxHQUFHLDRSQUE0UixDQUFDO0FBQ2pULElBQUksWUFBWSxHQUFHLDR3QkFBNHdCLENBQUM7QUFDaHlCLElBQUksWUFBWSxHQUFHLG1YQUFtWCxDQUFDO0FBQ3ZZLElBQUksZUFBZSxHQUFHLCthQUErYSxDQUFDO0FBQ3RjLElBQUksU0FBUyxHQUFHLHlvQkFBeW9CLENBQUM7QUFDMXBCLElBQUksVUFBVSxHQUFHLHNsQkFBc2xCLENBQUM7QUFDeG1CLElBQUksY0FBYyxHQUFHLHFWQUFxVixDQUFDO0FBQzNXLElBQUkscUJBQXFCLEdBQUcsNldBQTZXLENBQUM7QUFDMVksSUFBSSxrQkFBa0IsR0FBRywwYkFBMGIsQ0FBQztBQUNwZCxJQUFJLGdCQUFnQixHQUFHLGdmQUFnZixDQUFDO0FBQ3hnQixJQUFJLGFBQWEsR0FBRywrTEFBK0wsQ0FBQztBQUNwTixJQUFJLGNBQWMsR0FBRyxzTkFBc04sQ0FBQztBQUM1TyxJQUFJLGFBQWEsR0FBRyw0Q0FBNEMsQ0FBQztBQUNqRSxJQUFJLFVBQVUsR0FBRyxpS0FBaUssQ0FBQztBQUNuTCxJQUFJLFlBQVksR0FBRywyTkFBMk4sQ0FBQztBQUMvTyxJQUFJLFlBQVksR0FBRyw2TEFBNkwsQ0FBQztBQUNqTixJQUFJLG1CQUFtQixHQUFHLHVLQUF1SyxDQUFDO0FBQ2xNLElBQUksZ0JBQWdCLEdBQUcsa05BQWtOLENBQUM7QUFDMU8sSUFBSSx1QkFBdUIsR0FBRyw0TEFBNEwsQ0FBQztBQUMzTixJQUFJLFVBQVUsR0FBRywrVkFBK1YsQ0FBQztBQUNqWCxJQUFJLFVBQVUsR0FBRyw0ckJBQTRyQixDQUFDO0FBQzlzQixJQUFJLFFBQVEsR0FBRyw0R0FBNEcsQ0FBQztBQUM1SCxJQUFJLGNBQWMsR0FBRyxrM0NBQWszQyxDQUFDO0FBQ3g0QyxJQUFJLE1BQU0sR0FBRyx1S0FBdUssQ0FBQztBQUNyTCxJQUFJLFNBQVMsR0FBRyw2T0FBNk8sQ0FBQztBQUM5UCxJQUFJLFFBQVEsR0FBRyxtaEJBQW1oQixDQUFDO0FBQ25pQixJQUFJLGVBQWUsR0FBRyxpSEFBaUgsQ0FBQztBQUN4SSxJQUFJLGNBQWMsR0FBRyx5NUJBQXk1QixDQUFDO0FBQy82QixJQUFJLGNBQWMsR0FBRyw2VEFBNlQsQ0FBQztBQUNuVixJQUFJLFdBQVcsR0FBRyx1MEJBQXUwQixDQUFDO0FBQzExQixJQUFJLG9CQUFvQixHQUFHLHNHQUFzRyxDQUFDO0FBQ2xJLElBQUksdUJBQXVCLEdBQUcsMmNBQTJjLENBQUM7QUFDMWUsSUFBSSx1QkFBdUIsR0FBRywwRUFBMEUsQ0FBQztBQUN6RyxJQUFJLHNCQUFzQixHQUFHLDJEQUEyRCxDQUFDO0FBQ3pGLElBQUkscUJBQXFCLEdBQUcsdUVBQXVFLENBQUM7QUFDcEcsSUFBSSxjQUFjLEdBQUcsOGVBQThlLENBQUM7QUFDcGdCLElBQUksY0FBYyxHQUFHLHdHQUF3RyxDQUFDO0FBQzlILElBQUksaUJBQWlCLEdBQUcsNDNCQUE0M0IsQ0FBQztBQUNyNUIsSUFBSSxvQkFBb0IsR0FBRyw0TUFBNE0sQ0FBQztBQUN4TyxJQUFJLG9CQUFvQixHQUFHLHNMQUFzTCxDQUFDO0FBQ2xOLElBQUksc0JBQXNCLEdBQUcsNklBQTZJLENBQUM7QUFDM0ssSUFBSSxxQkFBcUIsR0FBRyxzY0FBc2MsQ0FBQztBQUNuZSxJQUFJLHdCQUF3QixHQUFHLHVqQkFBdWpCLENBQUM7QUFDdmxCLElBQUksT0FBTyxHQUFHLDZIQUE2SCxDQUFDO0FBQzVJLElBQUksVUFBVSxHQUFHLDZOQUE2TixDQUFDO0FBQy9PLElBQUksT0FBTyxHQUFHLDhjQUE4YyxDQUFDO0FBQzdkLElBQUksVUFBVSxHQUFHLCtGQUErRixDQUFDO0FBQ2pILElBQUksZUFBZSxHQUFHLHdJQUF3SSxDQUFDO0FBQy9KLElBQUksc0JBQXNCLEdBQUcsa0pBQWtKLENBQUM7QUFDaEwsSUFBSSxtQkFBbUIsR0FBRywrREFBK0QsQ0FBQztBQUMxRixJQUFJLDBCQUEwQixHQUFHLHVGQUF1RixDQUFDO0FBQ3pILElBQUksaUJBQWlCLEdBQUcsc0RBQXNELENBQUM7QUFDL0UsSUFBSSx3QkFBd0IsR0FBRyx1RkFBdUYsQ0FBQztBQUN2SCxJQUFJLGlCQUFpQixHQUFHLGdJQUFnSSxDQUFDO0FBQ3pKLElBQUksVUFBVSxHQUFHLG9KQUFvSixDQUFDO0FBQ3RLLElBQUksaUJBQWlCLEdBQUcsMGNBQTBjLENBQUM7QUFDbmUsSUFBSSxzQkFBc0IsR0FBRyxrREFBa0QsQ0FBQztBQUNoRixJQUFJLHNCQUFzQixHQUFHLCtFQUErRSxDQUFDO0FBQzdHLElBQUksc0JBQXNCLEdBQUcsb0RBQW9ELENBQUM7QUFDbEYsSUFBSSxvQkFBb0IsR0FBRyxrR0FBa0csQ0FBQztBQUM5SCxJQUFJLFdBQVcsR0FBRyx1UEFBdVAsQ0FBQztBQUMxUSxJQUFJLGtCQUFrQixHQUFHLHFEQUFxRCxDQUFDO0FBQy9FLElBQUksNkJBQTZCLEdBQUcsZ0tBQWdLLENBQUM7QUFDck0sSUFBSSx1QkFBdUIsR0FBRyw4RUFBOEUsQ0FBQztBQUM3RyxJQUFJLG1DQUFtQyxHQUFHLDRSQUE0UixDQUFDO0FBQ3ZVLElBQUksbUJBQW1CLEdBQUcsb0RBQW9ELENBQUM7QUFDL0UsSUFBSSw4QkFBOEIsR0FBRyw4SkFBOEosQ0FBQztBQUNwTSxJQUFJLHdCQUF3QixHQUFHLCtFQUErRSxDQUFDO0FBQy9HLElBQUksb0NBQW9DLEdBQUcsMlJBQTJSLENBQUM7QUFDdlUsSUFBSSxnQkFBZ0IsR0FBRyxnSEFBZ0gsQ0FBQztBQUN4SSxJQUFJLG1CQUFtQixHQUFHLHVPQUF1TyxDQUFDO0FBQ2xRLElBQUksb0JBQW9CLEdBQUcseUdBQXlHLENBQUM7QUFDckksSUFBSSwwQkFBMEIsR0FBRyx3R0FBd0csQ0FBQztBQUMxSSxJQUFJLG9CQUFvQixHQUFHLG9HQUFvRyxDQUFDO0FBQ2hJLElBQUkscUJBQXFCLEdBQUcsd0dBQXdHLENBQUM7QUFDckksSUFBSSxrQkFBa0IsR0FBRyxtR0FBbUcsQ0FBQztBQUM3SCxJQUFJLHdCQUF3QixHQUFHLDJGQUEyRixDQUFDO0FBQzNILElBQUksZ0JBQWdCLEdBQUcsZ1pBQWdaLENBQUM7QUFDeGEsSUFBSSxvQkFBb0IsR0FBRyxrWEFBa1gsQ0FBQztBQUM5WSxJQUFJLDJCQUEyQixHQUFHLG1iQUFtYixDQUFDO0FBQ3RkLElBQUksdUJBQXVCLEdBQUcsaWRBQWlkLENBQUM7QUFDaGYsSUFBSSxZQUFZLEdBQUcseUVBQXlFLENBQUM7QUFDN0YsSUFBSSxnQkFBZ0IsR0FBRyx3Q0FBd0MsQ0FBQztBQUNoRSxJQUFJLG1CQUFtQixHQUFHLDRHQUE0RyxDQUFDO0FBQ3ZJLElBQUksMEJBQTBCLEdBQUcsMEhBQTBILENBQUM7QUFDNUosSUFBSSxzQkFBc0IsR0FBRyw2R0FBNkcsQ0FBQztBQUMzSSxJQUFJLDZCQUE2QixHQUFHLGdMQUFnTCxDQUFDO0FBQ3JOLElBQUksOEJBQThCLEdBQUcsc1hBQXNYLENBQUM7QUFDNVosSUFBSSx1QkFBdUIsR0FBRyxnRUFBZ0UsQ0FBQztBQUMvRixJQUFJLGVBQWUsR0FBRyx3SkFBd0osQ0FBQztBQUMvSyxJQUFJLGtCQUFrQixHQUFHLHFKQUFxSixDQUFDO0FBQy9LLElBQUkseUJBQXlCLEdBQUcseU5BQXlOLENBQUM7QUFDMVAsSUFBSSxzQkFBc0IsR0FBRyxpR0FBaUcsQ0FBQztBQUMvSCxJQUFJLDZCQUE2QixHQUFHLG9LQUFvSyxDQUFDO0FBQ3pNLElBQUksaUJBQWlCLEdBQUcsdUVBQXVFLENBQUM7QUFDaEcsSUFBSSw2QkFBNkIsR0FBRyx1UUFBdVEsQ0FBQztBQUM1UyxJQUFJLGNBQWMsR0FBRyxvSEFBb0gsQ0FBQztBQUMxSSxJQUFJLGlCQUFpQixHQUFHLDRPQUE0TyxDQUFDO0FBQ3JRLElBQUksa0JBQWtCLEdBQUcsdUZBQXVGLENBQUM7QUFDakgsSUFBSSx3QkFBd0IsR0FBRyw0RUFBNEUsQ0FBQztBQUM1RyxJQUFJLGtCQUFrQixHQUFHLHNGQUFzRixDQUFDO0FBQ2hILElBQUksbUJBQW1CLEdBQUcsc0ZBQXNGLENBQUM7QUFDakgsSUFBSSxnQkFBZ0IsR0FBRyxxRkFBcUYsQ0FBQztBQUM3RyxJQUFJLHNCQUFzQixHQUFHLDBFQUEwRSxDQUFDO0FBQ3hHLElBQUksc0JBQXNCLEdBQUcsZ1FBQWdRLENBQUM7QUFDOVIsSUFBSSxZQUFZLEdBQUcsd0VBQXdFLENBQUM7QUFDNUYsSUFBSSxnQkFBZ0IsR0FBRyx5Q0FBeUMsQ0FBQztBQUNqRSxJQUFJLG1CQUFtQixHQUFHLDRHQUE0RyxDQUFDO0FBQ3ZJLElBQUksMEJBQTBCLEdBQUcsMkhBQTJILENBQUM7QUFDN0osSUFBSSxzQkFBc0IsR0FBRyw2R0FBNkcsQ0FBQztBQUMzSSxJQUFJLDZCQUE2QixHQUFHLGlMQUFpTCxDQUFDO0FBQ3ROLElBQUksOEJBQThCLEdBQUcscVhBQXFYLENBQUM7QUFDM1osSUFBSSx1QkFBdUIsR0FBRywrREFBK0QsQ0FBQztBQUM5RixJQUFJLGVBQWUsR0FBRyxzSkFBc0osQ0FBQztBQUM3SyxJQUFJLGtCQUFrQixHQUFHLHFKQUFxSixDQUFDO0FBQy9LLElBQUkseUJBQXlCLEdBQUcsd05BQXdOLENBQUM7QUFDelAsSUFBSSxzQkFBc0IsR0FBRyxpR0FBaUcsQ0FBQztBQUMvSCxJQUFJLDZCQUE2QixHQUFHLHFLQUFxSyxDQUFDO0FBQzFNLElBQUksaUJBQWlCLEdBQUcsNklBQTZJLENBQUM7QUFDdEssSUFBSSxxQkFBcUIsR0FBRyw2Q0FBNkMsQ0FBQztBQUMxRSxJQUFJLDRCQUE0QixHQUFHLHlGQUF5RixDQUFDO0FBQzdILElBQUksaUJBQWlCLEdBQUcsMEVBQTBFLENBQUM7QUFDbkcsSUFBSSw2QkFBNkIsR0FBRyxxUUFBcVEsQ0FBQztBQUMxUyxJQUFJLGFBQWEsR0FBRyx5RUFBeUUsQ0FBQztBQUM5RixJQUFJLGlCQUFpQixHQUFHLHlDQUF5QyxDQUFDO0FBQ2xFLElBQUksb0JBQW9CLEdBQUcsNkdBQTZHLENBQUM7QUFDekksSUFBSSwyQkFBMkIsR0FBRyw0SEFBNEgsQ0FBQztBQUMvSixJQUFJLHVCQUF1QixHQUFHLDZHQUE2RyxDQUFDO0FBQzVJLElBQUksOEJBQThCLEdBQUcsZ0xBQWdMLENBQUM7QUFDdE4sSUFBSSwrQkFBK0IsR0FBRyxzWEFBc1gsQ0FBQztBQUM3WixJQUFJLHdCQUF3QixHQUFHLCtEQUErRCxDQUFDO0FBQy9GLElBQUksZ0JBQWdCLEdBQUcsMkpBQTJKLENBQUM7QUFDbkwsSUFBSSxtQkFBbUIsR0FBRyxxSkFBcUosQ0FBQztBQUNoTCxJQUFJLDBCQUEwQixHQUFHLHlOQUF5TixDQUFDO0FBQzNQLElBQUksdUJBQXVCLEdBQUcsa0dBQWtHLENBQUM7QUFDakksSUFBSSw4QkFBOEIsR0FBRyxxS0FBcUssQ0FBQztBQUMzTSxJQUFJLGtCQUFrQixHQUFHLHVFQUF1RSxDQUFDO0FBQ2pHLElBQUksOEJBQThCLEdBQUcsdVFBQXVRLENBQUM7QUFDN1MsSUFBSSx1QkFBdUIsR0FBRyxrRkFBa0YsQ0FBQztBQUNqSCxJQUFJLHFCQUFxQixHQUFHLG1GQUFtRixDQUFDO0FBQ2hILElBQUksZUFBZSxHQUFHLHNEQUFzRCxDQUFDO0FBQzdFLElBQUksMEJBQTBCLEdBQUcsaUtBQWlLLENBQUM7QUFDbk0sSUFBSSwwQkFBMEIsR0FBRywrREFBK0QsQ0FBQztBQUNqRyxJQUFJLDhCQUE4QixHQUFHLHVGQUF1RixDQUFDO0FBQzdILElBQUksb0JBQW9CLEdBQUcsZ0ZBQWdGLENBQUM7QUFDNUcsSUFBSSxnQ0FBZ0MsR0FBRywyUkFBMlIsQ0FBQztBQUNuVSxJQUFJLGdCQUFnQixHQUFHLHFEQUFxRCxDQUFDO0FBQzdFLElBQUksMkJBQTJCLEdBQUcsb0tBQW9LLENBQUM7QUFDdk0sSUFBSSwwQkFBMEIsR0FBRywrREFBK0QsQ0FBQztBQUNqRyxJQUFJLDhCQUE4QixHQUFHLHdGQUF3RixDQUFDO0FBQzlILElBQUkscUJBQXFCLEdBQUcsOEVBQThFLENBQUM7QUFDM0csSUFBSSxpQ0FBaUMsR0FBRywwUkFBMFIsQ0FBQztBQUNuVSxJQUFJLFVBQVUsR0FBRyx3RUFBd0UsQ0FBQztBQUMxRixJQUFJLGNBQWMsR0FBRywwQ0FBMEMsQ0FBQztBQUNoRSxJQUFJLGlCQUFpQixHQUFHLDZHQUE2RyxDQUFDO0FBQ3RJLElBQUksd0JBQXdCLEdBQUcsNkhBQTZILENBQUM7QUFDN0osSUFBSSxvQkFBb0IsR0FBRyw2R0FBNkcsQ0FBQztBQUN6SSxJQUFJLDJCQUEyQixHQUFHLGlMQUFpTCxDQUFDO0FBQ3BOLElBQUksNEJBQTRCLEdBQUcscVhBQXFYLENBQUM7QUFDelosSUFBSSxxQkFBcUIsR0FBRywrREFBK0QsQ0FBQztBQUM1RixJQUFJLGFBQWEsR0FBRyx5SkFBeUosQ0FBQztBQUM5SyxJQUFJLGdCQUFnQixHQUFHLHFKQUFxSixDQUFDO0FBQzdLLElBQUksdUJBQXVCLEdBQUcsd05BQXdOLENBQUM7QUFDdlAsSUFBSSxjQUFjLEdBQUcsOElBQThJLENBQUM7QUFDcEssSUFBSSxrQkFBa0IsR0FBRyw2Q0FBNkMsQ0FBQztBQUN2RSxJQUFJLHlCQUF5QixHQUFHLDBGQUEwRixDQUFDO0FBQzNILElBQUksb0JBQW9CLEdBQUcsa0dBQWtHLENBQUM7QUFDOUgsSUFBSSwyQkFBMkIsR0FBRyxzS0FBc0ssQ0FBQztBQUN6TSxJQUFJLGVBQWUsR0FBRywwRUFBMEUsQ0FBQztBQUNqRyxJQUFJLDJCQUEyQixHQUFHLHFRQUFxUSxDQUFDO0FBQ3hTLElBQUksb0JBQW9CLEdBQUcscVJBQXFSLENBQUM7QUFDalQsSUFBSSxhQUFhLEdBQUcsNlBBQTZQLENBQUM7QUFDbFIsSUFBSSxjQUFjLEdBQUcsd0lBQXdJLENBQUM7QUFDOUosSUFBSSxZQUFZLEdBQUcsK0pBQStKLENBQUM7QUFDbkwsSUFBSSxXQUFXLEdBQUcsZ0xBQWdMLENBQUM7QUFDbk0sSUFBSSxLQUFLLEdBQUcsazZCQUFrNkIsQ0FBQztBQUMvNkIsSUFBSSxZQUFZLEdBQUcsZ2NBQWdjLENBQUM7QUFDcGQsSUFBSSxNQUFNLEdBQUcsNk1BQTZNLENBQUM7QUFDM04sSUFBSSxPQUFPLEdBQUcsMHBDQUEwcEMsQ0FBQztBQUN6cUMsSUFBSSxjQUFjLEdBQUcsdzJCQUF3MkIsQ0FBQztBQUM5M0IsSUFBSSxhQUFhLEdBQUcsd1JBQXdSLENBQUM7QUFDN1MsSUFBSSxhQUFhLEdBQUcsOFRBQThULENBQUM7QUFDblYsSUFBSSxnQkFBZ0IsR0FBRyw4WUFBOFksQ0FBQztBQUN0YSxJQUFJLG1CQUFtQixHQUFHLDhTQUE4UyxDQUFDO0FBQ3pVLElBQUksZUFBZSxHQUFHLGlKQUFpSixDQUFDO0FBQ3hLLElBQUksVUFBVSxHQUFHLHlhQUF5YSxDQUFDO0FBQzNiLElBQUksYUFBYSxHQUFHLGdJQUFnSSxDQUFDO0FBQ3JKLElBQUksWUFBWSxHQUFHLDRPQUE0TyxDQUFDO0FBQ2hRLElBQUksVUFBVSxHQUFHLHlaQUF5WixDQUFDO0FBQzNhLElBQUksTUFBTSxHQUFHLG1uSEFBbW5ILENBQUM7QUFDam9ILElBQUksTUFBTSxHQUFHLCtGQUErRixDQUFDO0FBQzdHLElBQUksT0FBTyxHQUFHLGdGQUFnRixDQUFDO0FBQy9GLElBQUksWUFBWSxHQUFHLG9KQUFvSixDQUFDO0FBQ3hLLElBQUksZ0JBQWdCLEdBQUcscU1BQXFNLENBQUM7QUFDN04sSUFBSSxnQkFBZ0IsR0FBRywwWUFBMFksQ0FBQztBQUNsYSxJQUFJLFdBQVcsR0FBRyx5VEFBeVQsQ0FBQztBQUM1VSxJQUFJLGFBQWEsR0FBRyw0R0FBNEcsQ0FBQztBQUNqSSxJQUFJLGlCQUFpQixHQUFHLDhYQUE4WCxDQUFDO0FBQ3ZaLElBQUksdUJBQXVCLEdBQUcscWFBQXFhLENBQUM7QUFDcGMsSUFBSSw4QkFBOEIsR0FBRyw0YUFBNGEsQ0FBQztBQUNsZCxJQUFJLGtCQUFrQixHQUFHLDRYQUE0WCxDQUFDO0FBQ3RaLElBQUksYUFBYSxHQUFHLGlIQUFpSCxDQUFDO0FBQ3RJLElBQUksaUJBQWlCLEdBQUcscVZBQXFWLENBQUM7QUFDOVcsSUFBSSx1QkFBdUIsR0FBRyxtYkFBbWIsQ0FBQztBQUNsZCxJQUFJLDhCQUE4QixHQUFHLCtaQUErWixDQUFDO0FBQ3JjLElBQUksYUFBYSxHQUFHLHlGQUF5RixDQUFDO0FBQzlHLElBQUksaUJBQWlCLEdBQUcsaVVBQWlVLENBQUM7QUFDMVYsSUFBSSx1QkFBdUIsR0FBRyxrVEFBa1QsQ0FBQztBQUNqVixJQUFJLDhCQUE4QixHQUFHLHNUQUFzVCxDQUFDO0FBQzVWLElBQUksUUFBUSxHQUFHLG9rSUFBb2tJLENBQUM7QUFDcGxJLElBQUksT0FBTyxHQUFHLDBXQUEwVyxDQUFDO0FBQ3pYLElBQUksYUFBYSxHQUFHLHllQUF5ZSxDQUFDO0FBQzlmLElBQUksb0JBQW9CLEdBQUcseTVCQUF5NUIsQ0FBQztBQUNyN0IsSUFBSSxZQUFZLEdBQUcsb2ZBQW9mLENBQUM7QUFDeGdCLElBQUksZUFBZSxHQUFHLG1kQUFtZCxDQUFDO0FBQzFlLElBQUksa0JBQWtCLEdBQUcsNGRBQTRkLENBQUM7QUFDdGYsSUFBSSxXQUFXLEdBQUcseXVCQUF5dUIsQ0FBQztBQUM1dkIsSUFBSSxrQkFBa0IsR0FBRyx5ckJBQXlyQixDQUFDO0FBQ250QixJQUFJLGFBQWEsR0FBRywwRkFBMEYsQ0FBQztBQUMvRyxJQUFJLFlBQVksR0FBRyxzTkFBc04sQ0FBQztBQUMxTyxJQUFJLG1CQUFtQixHQUFHLHlQQUF5UCxDQUFDO0FBQ3BSLElBQUksbUJBQW1CLEdBQUcsbU1BQW1NLENBQUM7QUFDOU4sSUFBSSwwQkFBMEIsR0FBRywyUEFBMlAsQ0FBQztBQUM3UixJQUFJLGdCQUFnQixHQUFHLHVQQUF1UCxDQUFDO0FBQy9RLElBQUksV0FBVyxHQUFHLCs5QkFBKzlCLENBQUM7QUFDbC9CLElBQUksa0JBQWtCLEdBQUcsZ3BDQUFncEMsQ0FBQztBQUMxcUMsSUFBSSxlQUFlLEdBQUcsMFFBQTBRLENBQUM7QUFDalMsSUFBSSxvQkFBb0IsR0FBRyx5U0FBeVMsQ0FBQztBQUNyVSxJQUFJLDJCQUEyQixHQUFHLGlUQUFpVCxDQUFDO0FBQ3BWLElBQUkseUJBQXlCLEdBQUcsc1JBQXNSLENBQUM7QUFDdlQsSUFBSSxnQ0FBZ0MsR0FBRywrUkFBK1IsQ0FBQztBQUN2VSxJQUFJLHNCQUFzQixHQUFHLGtSQUFrUixDQUFDO0FBQ2hULElBQUksWUFBWSxHQUFHLHdzQ0FBd3NDLENBQUM7QUFDNXRDLElBQUksYUFBYSxHQUFHLHVYQUF1WCxDQUFDO0FBQzVZLElBQUksa0JBQWtCLEdBQUcsaVNBQWlTLENBQUM7QUFDM1QsSUFBSSxnQkFBZ0IsR0FBRywyVkFBMlYsQ0FBQztBQUNuWCxJQUFJLGFBQWEsR0FBRyxxYUFBcWEsQ0FBQztBQUMxYixJQUFJLGNBQWMsR0FBRyxzTEFBc0wsQ0FBQztBQUM1TSxJQUFJLGlCQUFpQixHQUFHLHlRQUF5USxDQUFDO0FBQ2xTLElBQUksd0JBQXdCLEdBQUcsdVZBQXVWLENBQUM7QUFDdlgsSUFBSSxxQkFBcUIsR0FBRyxtT0FBbU8sQ0FBQztBQUNoUSxJQUFJLGNBQWMsR0FBRyx1VkFBdVYsQ0FBQztBQUM3VyxJQUFJLGlCQUFpQixHQUFHLDBjQUEwYyxDQUFDO0FBQ25lLElBQUksd0JBQXdCLEdBQUcsb2ZBQW9mLENBQUM7QUFDcGhCLElBQUkscUJBQXFCLEdBQUcsc1ZBQXNWLENBQUM7QUFDblgsSUFBSSxXQUFXLEdBQUcsNm9CQUE2b0IsQ0FBQztBQUNocUIsSUFBSSxVQUFVLEdBQUcsb01BQW9NLENBQUM7QUFDdE4sSUFBSSxTQUFTLEdBQUcseUxBQXlMLENBQUM7QUFDMU0sSUFBSSxnQkFBZ0IsR0FBRyw0TUFBNE0sQ0FBQztBQUNwTyxJQUFJLGdCQUFnQixHQUFHLHVnQkFBdWdCLENBQUM7QUFDL2hCLElBQUksdUJBQXVCLEdBQUcsc2dCQUFzZ0IsQ0FBQztBQUNyaUIsSUFBSSxVQUFVLEdBQUcsd3lCQUF3eUIsQ0FBQztBQUMxekIsSUFBSSxXQUFXLEdBQUcsMkJBQTJCLENBQUM7QUFDOUMsSUFBSSxPQUFPLEdBQUcsK0VBQStFLENBQUM7QUFDOUYsSUFBSSxZQUFZLEdBQUcsOFNBQThTLENBQUM7QUFDbFUsSUFBSSxZQUFZLEdBQUcseU5BQXlOLENBQUM7QUFDN08sSUFBSSxVQUFVLEdBQUcsbVVBQW1VLENBQUM7QUFDclYsSUFBSSxpQkFBaUIsR0FBRyw4VUFBOFUsQ0FBQztBQUN2VyxJQUFJLGNBQWMsR0FBRyxtSkFBbUosQ0FBQztBQUN6SyxJQUFJLFdBQVcsR0FBRyxpUEFBaVAsQ0FBQztBQUNwUSxJQUFJLGFBQWEsR0FBRyx1VkFBdVYsQ0FBQztBQUM1VyxJQUFJLGVBQWUsR0FBRywwTEFBMEwsQ0FBQztBQUNqTixJQUFJLGlCQUFpQixHQUFHLHNJQUFzSSxDQUFDO0FBQy9KLElBQUksa0JBQWtCLEdBQUcsaUlBQWlJLENBQUM7QUFDM0osSUFBSSxVQUFVLEdBQUcsMkdBQTJHLENBQUM7QUFDN0gsSUFBSSxhQUFhLEdBQUcsaVdBQWlXLENBQUM7QUFDdFgsSUFBSSxjQUFjLEdBQUcsdU9BQXVPLENBQUM7QUFDN1AsSUFBSSxTQUFTLEdBQUcsb3pCQUFvekIsQ0FBQztBQUNyMEIsSUFBSSxZQUFZLEdBQUcsbTJCQUFtMkIsQ0FBQztBQUN2M0IsSUFBSSxPQUFPLEdBQUcsOElBQThJLENBQUM7QUFDN0osSUFBSSxTQUFTLEdBQUcsMElBQTBJLENBQUM7QUFDM0osSUFBSSxXQUFXLEdBQUcsaWlDQUFpaUMsQ0FBQztBQUNwakMsSUFBSSxjQUFjLEdBQUcsa2NBQWtjLENBQUM7QUFDeGQsSUFBSSxrQkFBa0IsR0FBRyx1UkFBdVIsQ0FBQztBQUNqVCxJQUFJLHlCQUF5QixHQUFHLGdXQUFnVyxDQUFDO0FBQ2pZLElBQUksT0FBTyxHQUFHLHdOQUF3TixDQUFDO0FBQ3ZPLElBQUksU0FBUyxHQUFHLCtUQUErVCxDQUFDO0FBQ2hWLElBQUksYUFBYSxHQUFHLDZQQUE2UCxDQUFDO0FBQ2xSLElBQUksY0FBYyxHQUFHLDRYQUE0WCxDQUFDO0FBQ2xaLElBQUkscUJBQXFCLEdBQUcsMlpBQTJaLENBQUM7QUFDeGIsSUFBSSxZQUFZLEdBQUcsdWJBQXViLENBQUM7QUFDM2MsSUFBSSxtQkFBbUIsR0FBRyxvZkFBb2YsQ0FBQztBQUMvZ0IsSUFBSSxnQkFBZ0IsR0FBRyxtWEFBbVgsQ0FBQztBQUMzWSxJQUFJLGFBQWEsR0FBRyxvWkFBb1osQ0FBQztBQUN6YSxJQUFJLG9CQUFvQixHQUFHLG1iQUFtYixDQUFDO0FBQy9jLElBQUksZUFBZSxHQUFHLDBmQUEwZixDQUFDO0FBQ2poQixJQUFJLHNCQUFzQixHQUFHLHloQkFBeWhCLENBQUM7QUFDdmpCLElBQUksZUFBZSxHQUFHLCtQQUErUCxDQUFDO0FBQ3RSLElBQUksYUFBYSxHQUFHLG1sQ0FBbWxDLENBQUM7QUFDeG1DLElBQUksaUJBQWlCLEdBQUcsb01BQW9NLENBQUM7QUFDN04sSUFBSSx3QkFBd0IsR0FBRywwTUFBME0sQ0FBQztBQUMxTyxJQUFJLE1BQU0sR0FBRyw4UkFBOFIsQ0FBQztBQUM1UyxJQUFJLFVBQVUsR0FBRyxzSUFBc0ksQ0FBQztBQUN4SixJQUFJLFlBQVksR0FBRyxtSkFBbUosQ0FBQztBQUN2SyxJQUFJLHFCQUFxQixHQUFHLCtVQUErVSxDQUFDO0FBQzVXLElBQUksWUFBWSxHQUFHLG1KQUFtSixDQUFDO0FBQ3ZLLElBQUkscUJBQXFCLEdBQUcsK1VBQStVLENBQUM7QUFDNVcsSUFBSSxZQUFZLEdBQUcsbUpBQW1KLENBQUM7QUFDdkssSUFBSSxxQkFBcUIsR0FBRywrVUFBK1UsQ0FBQztBQUM1VyxJQUFJLFlBQVksR0FBRyxtSkFBbUosQ0FBQztBQUN2SyxJQUFJLHFCQUFxQixHQUFHLCtVQUErVSxDQUFDO0FBQzVXLElBQUksWUFBWSxHQUFHLG1KQUFtSixDQUFDO0FBQ3ZLLElBQUkscUJBQXFCLEdBQUcsK1VBQStVLENBQUM7QUFDNVcsSUFBSSxZQUFZLEdBQUcsbUpBQW1KLENBQUM7QUFDdkssSUFBSSxxQkFBcUIsR0FBRywrVUFBK1UsQ0FBQztBQUM1VyxJQUFJLFlBQVksR0FBRyxtSkFBbUosQ0FBQztBQUN2SyxJQUFJLHFCQUFxQixHQUFHLCtVQUErVSxDQUFDO0FBQzVXLElBQUksWUFBWSxHQUFHLGtKQUFrSixDQUFDO0FBQ3RLLElBQUkscUJBQXFCLEdBQUcsOFVBQThVLENBQUM7QUFDM1csSUFBSSxZQUFZLEdBQUcsa0pBQWtKLENBQUM7QUFDdEssSUFBSSxxQkFBcUIsR0FBRyw4VUFBOFUsQ0FBQztBQUMzVyxJQUFJLGVBQWUsR0FBRywwSkFBMEosQ0FBQztBQUNqTCxJQUFJLHdCQUF3QixHQUFHLDJUQUEyVCxDQUFDO0FBQzNWLElBQUksc0JBQXNCLEdBQUcscUtBQXFLLENBQUM7QUFDbk0sSUFBSSw2QkFBNkIsR0FBRyxpTEFBaUwsQ0FBQztBQUN0TixJQUFJLG1CQUFtQixHQUFHLGlVQUFpVSxDQUFDO0FBQzVWLElBQUksMEJBQTBCLEdBQUcsd1ZBQXdWLENBQUM7QUFDMVgsSUFBSSxrQkFBa0IsR0FBRywrSkFBK0osQ0FBQztBQUN6TCxJQUFJLG9CQUFvQixHQUFHLG9OQUFvTixDQUFDO0FBQ2hQLElBQUkscUJBQXFCLEdBQUcsK0pBQStKLENBQUM7QUFDNUwsSUFBSSxvQkFBb0IsR0FBRyxxTkFBcU4sQ0FBQztBQUNqUCxJQUFJLG9CQUFvQixHQUFHLGtMQUFrTCxDQUFDO0FBQzlNLElBQUksb0JBQW9CLEdBQUcsaUpBQWlKLENBQUM7QUFDN0ssSUFBSSxvQkFBb0IsR0FBRyw0S0FBNEssQ0FBQztBQUN4TSxJQUFJLG9CQUFvQixHQUFHLGtMQUFrTCxDQUFDO0FBQzlNLElBQUksb0JBQW9CLEdBQUcsa0xBQWtMLENBQUM7QUFDOU0sSUFBSSxvQkFBb0IsR0FBRywyS0FBMkssQ0FBQztBQUN2TSxJQUFJLG9CQUFvQixHQUFHLDJLQUEySyxDQUFDO0FBQ3ZNLElBQUksc0JBQXNCLEdBQUcsOE5BQThOLENBQUM7QUFDNVAsSUFBSSxxQkFBcUIsR0FBRyx3TEFBd0wsQ0FBQztBQUNyTixJQUFJLHdCQUF3QixHQUFHLCtNQUErTSxDQUFDO0FBQy9PLElBQUkseUJBQXlCLEdBQUcsb05BQW9OLENBQUM7QUFDclAsSUFBSSwwQkFBMEIsR0FBRyxxU0FBcVMsQ0FBQztBQUN2VSxJQUFJLDRCQUE0QixHQUFHLHlUQUF5VCxDQUFDO0FBQzdWLElBQUksNEJBQTRCLEdBQUcscVRBQXFULENBQUM7QUFDelYsSUFBSSw0QkFBNEIsR0FBRyxxVEFBcVQsQ0FBQztBQUN6VixJQUFJLDRCQUE0QixHQUFHLHlUQUF5VCxDQUFDO0FBQzdWLElBQUksNEJBQTRCLEdBQUcscVRBQXFULENBQUM7QUFDelYsSUFBSSw0QkFBNEIsR0FBRyx5VEFBeVQsQ0FBQztBQUM3VixJQUFJLDRCQUE0QixHQUFHLHFUQUFxVCxDQUFDO0FBQ3pWLElBQUksNEJBQTRCLEdBQUcsbVRBQW1ULENBQUM7QUFDdlYsSUFBSSw0QkFBNEIsR0FBRyx1VEFBdVQsQ0FBQztBQUMzVixJQUFJLCtCQUErQixHQUFHLDBTQUEwUyxDQUFDO0FBQ2pWLElBQUksaUNBQWlDLEdBQUcscVRBQXFULENBQUM7QUFDOVYsSUFBSSxlQUFlLEdBQUcsc1RBQXNULENBQUM7QUFDN1UsSUFBSSxzQkFBc0IsR0FBRywwVEFBMFQsQ0FBQztBQUN4VixJQUFJLHNCQUFzQixHQUFHLGdVQUFnVSxDQUFDO0FBQzlWLElBQUksY0FBYyxHQUFHLHdNQUF3TSxDQUFDO0FBQzlOLElBQUksYUFBYSxHQUFHLGlLQUFpSyxDQUFDO0FBQ3RMLElBQUksZ0JBQWdCLEdBQUcseUxBQXlMLENBQUM7QUFDak4sSUFBSSxlQUFlLEdBQUcsbUpBQW1KLENBQUM7QUFDMUssSUFBSSxrQkFBa0IsR0FBRyx5S0FBeUssQ0FBQztBQUNuTSxJQUFJLGFBQWEsR0FBRyxxTEFBcUwsQ0FBQztBQUMxTSxJQUFJLG9CQUFvQixHQUFHLHlOQUF5TixDQUFDO0FBQ3JQLElBQUksaUJBQWlCLEdBQUcsbUpBQW1KLENBQUM7QUFDNUssSUFBSSxjQUFjLEdBQUcsOEtBQThLLENBQUM7QUFDcE0sSUFBSSxrQkFBa0IsR0FBRyxnTUFBZ00sQ0FBQztBQUMxTixJQUFJLGlCQUFpQixHQUFHLHFZQUFxWSxDQUFDO0FBQzlaLElBQUksMEJBQTBCLEdBQUcseWlCQUF5aUIsQ0FBQztBQUMza0IsSUFBSSxZQUFZLEdBQUcsMDJEQUEwMkQsQ0FBQztBQUM5M0QsSUFBSSxRQUFRLEdBQUcsdVlBQXVZLENBQUM7QUFDdlosSUFBSSxTQUFTLEdBQUcsK0pBQStKLENBQUM7QUFDaEwsSUFBSSxjQUFjLEdBQUcsa05BQWtOLENBQUM7QUFDeE8sSUFBSSxxQkFBcUIsR0FBRywwTUFBME0sQ0FBQztBQUN2TyxJQUFJLGNBQWMsR0FBRyx3UkFBd1IsQ0FBQztBQUM5UyxJQUFJLHFCQUFxQixHQUFHLG9SQUFvUixDQUFDO0FBQ2pULElBQUksY0FBYyxHQUFHLGdPQUFnTyxDQUFDO0FBQ3RQLElBQUkscUJBQXFCLEdBQUcseU5BQXlOLENBQUM7QUFDdFAsSUFBSSxnQkFBZ0IsR0FBRyxtSkFBbUosQ0FBQztBQUMzSyxJQUFJLGFBQWEsR0FBRyx3UEFBd1AsQ0FBQztBQUM3USxJQUFJLG9CQUFvQixHQUFHLG9QQUFvUCxDQUFDO0FBQ2hSLElBQUksaUJBQWlCLEdBQUcscWRBQXFkLENBQUM7QUFDOWUsSUFBSSx3QkFBd0IsR0FBRyxnZEFBZ2QsQ0FBQztBQUNoZixJQUFJLGVBQWUsR0FBRyw4VkFBOFYsQ0FBQztBQUNyWCxJQUFJLHNCQUFzQixHQUFHLDBWQUEwVixDQUFDO0FBQ3hYLElBQUksTUFBTSxHQUFHLHdIQUF3SCxDQUFDO0FBQ3RJLElBQUksWUFBWSxHQUFHLDRKQUE0SixDQUFDO0FBQ2hMLElBQUksbUJBQW1CLEdBQUcsbVFBQW1RLENBQUM7QUFDOVIsSUFBSSxXQUFXLEdBQUcscURBQXFELENBQUM7QUFDeEUsSUFBSSxVQUFVLEdBQUcsZ1FBQWdRLENBQUM7QUFDbFIsSUFBSSxpQkFBaUIsR0FBRyx5S0FBeUssQ0FBQztBQUNsTSxJQUFJLGFBQWEsR0FBRywrUUFBK1EsQ0FBQztBQUNwUyxJQUFJLFdBQVcsR0FBRyw4SUFBOEksQ0FBQztBQUNqSyxJQUFJLGtCQUFrQixHQUFHLDJKQUEySixDQUFDO0FBQ3JMLElBQUksWUFBWSxHQUFHLG1LQUFtSyxDQUFDO0FBQ3ZMLElBQUksbUJBQW1CLEdBQUcsNktBQTZLLENBQUM7QUFDeE0sSUFBSSxNQUFNLEdBQUcsczBCQUFzMEIsQ0FBQztBQUNwMUIsSUFBSSxZQUFZLEdBQUcsbTRDQUFtNEMsQ0FBQztBQUN2NUMsSUFBSSxvQkFBb0IsR0FBRyw4MUJBQTgxQixDQUFDO0FBQzEzQixJQUFJLGlCQUFpQixHQUFHLG80QkFBbzRCLENBQUM7QUFDNzVCLElBQUksWUFBWSxHQUFHLDRmQUE0ZixDQUFDO0FBQ2hoQixJQUFJLE9BQU8sR0FBRyxpSEFBaUgsQ0FBQztBQUNoSSxJQUFJLGNBQWMsR0FBRyxpWUFBaVksQ0FBQztBQUN2WixJQUFJLE9BQU8sR0FBRyxnTUFBZ00sQ0FBQztBQUMvTSxJQUFJLFlBQVksR0FBRyxvTkFBb04sQ0FBQztBQUN4TyxJQUFJLG1CQUFtQixHQUFHLHlRQUF5USxDQUFDO0FBQ3BTLElBQUksYUFBYSxHQUFHLCtpQkFBK2lCLENBQUM7QUFDcGtCLElBQUksb0JBQW9CLEdBQUcsdWxCQUF1bEIsQ0FBQztBQUNubkIsSUFBSSxZQUFZLEdBQUcsK1ZBQStWLENBQUM7QUFDblgsSUFBSSxtQkFBbUIsR0FBRyxpWUFBaVksQ0FBQztBQUM1WixJQUFJLGFBQWEsR0FBRyxpVUFBaVUsQ0FBQztBQUN0VixJQUFJLG9CQUFvQixHQUFHLG9ZQUFvWSxDQUFDO0FBQ2hhLElBQUksWUFBWSxHQUFHLG9XQUFvVyxDQUFDO0FBQ3hYLElBQUksbUJBQW1CLEdBQUcsNFdBQTRXLENBQUM7QUFDdlksSUFBSSxVQUFVLEdBQUcscVNBQXFTLENBQUM7QUFDdlQsSUFBSSxpQkFBaUIsR0FBRywyWUFBMlksQ0FBQztBQUNwYSxJQUFJLGNBQWMsR0FBRyxtT0FBbU8sQ0FBQztBQUN6UCxJQUFJLFdBQVcsR0FBRyxxU0FBcVMsQ0FBQztBQUN4VCxJQUFJLGtCQUFrQixHQUFHLDZhQUE2YSxDQUFDO0FBQ3ZjLElBQUksYUFBYSxHQUFHLG1kQUFtZCxDQUFDO0FBQ3hlLElBQUksb0JBQW9CLEdBQUcsZ2dCQUFnZ0IsQ0FBQztBQUM1aEIsSUFBSSxXQUFXLEdBQUcsK1VBQStVLENBQUM7QUFDbFcsSUFBSSxrQkFBa0IsR0FBRywrWEFBK1gsQ0FBQztBQUN6WixJQUFJLFlBQVksR0FBRyxvUEFBb1AsQ0FBQztBQUN4USxJQUFJLG1CQUFtQixHQUFHLGdTQUFnUyxDQUFDO0FBQzNULElBQUksT0FBTyxHQUFHLGlyQkFBaXJCLENBQUM7QUFDaHNCLElBQUksVUFBVSxHQUFHLCtOQUErTixDQUFDO0FBQ2pQLElBQUksV0FBVyxHQUFHLDByQkFBMHJCLENBQUM7QUFDN3NCLElBQUksVUFBVSxHQUFHLGt0QkFBa3RCLENBQUM7QUFDcHVCLElBQUksZ0JBQWdCLEdBQUcsbXlCQUFteUIsQ0FBQztBQUMzekIsSUFBSSxrQkFBa0IsR0FBRyx1dEJBQXV0QixDQUFDO0FBQ2p2QixJQUFJLHVCQUF1QixHQUFHLDZpQkFBNmlCLENBQUM7QUFDNWtCLElBQUksT0FBTyxHQUFHLDBsQkFBMGxCLENBQUM7QUFDem1CLElBQUksV0FBVyxHQUFHLDIxQkFBMjFCLENBQUM7QUFDOTJCLElBQUksWUFBWSxHQUFHLDJNQUEyTSxDQUFDO0FBQy9OLElBQUksWUFBWSxHQUFHLDhXQUE4VyxDQUFDO0FBQ2xZLElBQUksZ0JBQWdCLEdBQUcseTNCQUF5M0IsQ0FBQztBQUNqNUIsSUFBSSxhQUFhLEdBQUcsOExBQThMLENBQUM7QUFDbk4sSUFBSSxNQUFNLEdBQUcscVBBQXFQLENBQUM7QUFDblEsSUFBSSxZQUFZLEdBQUcsNHRDQUE0dEMsQ0FBQztBQUNodkMsSUFBSSxPQUFPLEdBQUcsZ1dBQWdXLENBQUM7QUFDL1csSUFBSSxZQUFZLEdBQUcsMFBBQTBQLENBQUM7QUFDOVEsSUFBSSxVQUFVLEdBQUcsKzNCQUErM0IsQ0FBQztBQUNqNUIsSUFBSSxZQUFZLEdBQUcsMExBQTBMLENBQUM7QUFDOU0sSUFBSSxVQUFVLEdBQUcsK1RBQStULENBQUM7QUFDalYsSUFBSSxrQkFBa0IsR0FBRyw4MkNBQTgyQyxDQUFDO0FBQ3g0QyxJQUFJLFNBQVMsR0FBRywyUkFBMlIsQ0FBQztBQUM1UyxJQUFJLGFBQWEsR0FBRyxtV0FBbVcsQ0FBQztBQUN4WCxJQUFJLGNBQWMsR0FBRyx1UEFBdVAsQ0FBQztBQUM3USxJQUFJLFVBQVUsR0FBRyw4Y0FBOGMsQ0FBQztBQUNoZSxJQUFJLFdBQVcsR0FBRyw0V0FBNFcsQ0FBQztBQUMvWCxJQUFJLFlBQVksR0FBRyx1S0FBdUssQ0FBQztBQUMzTCxJQUFJLGlCQUFpQixHQUFHLDBZQUEwWSxDQUFDO0FBQ25hLElBQUksbUJBQW1CLEdBQUcsNk1BQTZNLENBQUM7QUFDeE8sSUFBSSxlQUFlLEdBQUcsMExBQTBMLENBQUM7QUFDak4sSUFBSSxvQkFBb0IsR0FBRyxnT0FBZ08sQ0FBQztBQUM1UCxJQUFJLG9CQUFvQixHQUFHLGlQQUFpUCxDQUFDO0FBQzdRLElBQUksT0FBTyxHQUFHLDgzREFBODNELENBQUM7QUFDNzRELElBQUksYUFBYSxHQUFHLGc5QkFBZzlCLENBQUM7QUFDcitCLElBQUksVUFBVSxHQUFHLDJzREFBMnNELENBQUM7QUFDN3RELElBQUksYUFBYSxHQUFHLDBvQ0FBMG9DLENBQUM7QUFDL3BDLElBQUksZUFBZSxHQUFHLGt3QkFBa3dCLENBQUM7QUFDenhCLElBQUksT0FBTyxHQUFHLHdMQUF3TCxDQUFDO0FBQ3ZNLElBQUksT0FBTyxHQUFHLG9hQUFvYSxDQUFDO0FBQ25iLElBQUksVUFBVSxHQUFHLHFmQUFxZixDQUFDO0FBQ3ZnQixJQUFJLE9BQU8sR0FBRyx5V0FBeVcsQ0FBQztBQUN4WCxJQUFJLE9BQU8sR0FBRyx1R0FBdUcsQ0FBQztBQUN0SCxJQUFJLGNBQWMsR0FBRywwTEFBMEwsQ0FBQztBQUNoTixJQUFJLHFCQUFxQixHQUFHLHdNQUF3TSxDQUFDO0FBQ3JPLElBQUksWUFBWSxHQUFHLHVKQUF1SixDQUFDO0FBQzNLLElBQUksbUJBQW1CLEdBQUcsMEtBQTBLLENBQUM7QUFDck0sSUFBSSxlQUFlLEdBQUcseVFBQXlRLENBQUM7QUFDaFMsSUFBSSxnQkFBZ0IsR0FBRyxtTkFBbU4sQ0FBQztBQUMzTyxJQUFJLHVCQUF1QixHQUFHLGtQQUFrUCxDQUFDO0FBQ2pSLElBQUksZ0JBQWdCLEdBQUcsbU5BQW1OLENBQUM7QUFDM08sSUFBSSx1QkFBdUIsR0FBRyxrUEFBa1AsQ0FBQztBQUNqUixJQUFJLGlCQUFpQixHQUFHLG1OQUFtTixDQUFDO0FBQzVPLElBQUksd0JBQXdCLEdBQUcsa1BBQWtQLENBQUM7QUFDbFIsSUFBSSxjQUFjLEdBQUcsbU5BQW1OLENBQUM7QUFDek8sSUFBSSxxQkFBcUIsR0FBRyxrUEFBa1AsQ0FBQztBQUMvUSxJQUFJLGFBQWEsR0FBRyxnZUFBZ2UsQ0FBQztBQUNyZixJQUFJLG9CQUFvQixHQUFHLHlmQUF5ZixDQUFDO0FBQ3JoQixJQUFJLFlBQVksR0FBRywyUEFBMlAsQ0FBQztBQUMvUSxJQUFJLG1CQUFtQixHQUFHLGtQQUFrUCxDQUFDO0FBQzdRLElBQUksWUFBWSxHQUFHLHNUQUFzVCxDQUFDO0FBQzFVLElBQUksbUJBQW1CLEdBQUcsb2NBQW9jLENBQUM7QUFDL2QsSUFBSSxVQUFVLEdBQUcsczVCQUFzNUIsQ0FBQztBQUN4NkIsSUFBSSxpQkFBaUIsR0FBRywrNkJBQSs2QixDQUFDO0FBQ3g4QixJQUFJLFlBQVksR0FBRyxrS0FBa0ssQ0FBQztBQUN0TCxJQUFJLFdBQVcsR0FBRyx5VUFBeVUsQ0FBQztBQUM1VixJQUFJLGtCQUFrQixHQUFHLGdWQUFnVixDQUFDO0FBQzFXLElBQUksZ0JBQWdCLEdBQUcsNk5BQTZOLENBQUM7QUFDclAsSUFBSSx1QkFBdUIsR0FBRyw2TkFBNk4sQ0FBQztBQUM1UCxJQUFJLHlCQUF5QixHQUFHLCtvQkFBK29CLENBQUM7QUFDaHJCLElBQUksV0FBVyxHQUFHLG9kQUFvZCxDQUFDO0FBQ3ZlLElBQUksZUFBZSxHQUFHLDBjQUEwYyxDQUFDO0FBQ2plLElBQUksc0JBQXNCLEdBQUcsMmFBQTJhLENBQUM7QUFDemMsSUFBSSxrQkFBa0IsR0FBRyxzYkFBc2IsQ0FBQztBQUNoZCxJQUFJLGFBQWEsR0FBRyx1WEFBdVgsQ0FBQztBQUM1WSxJQUFJLG9CQUFvQixHQUFHLDRZQUE0WSxDQUFDO0FBQ3hhLElBQUksWUFBWSxHQUFHLG9NQUFvTSxDQUFDO0FBQ3hOLElBQUksb0JBQW9CLEdBQUcsZ1FBQWdRLENBQUM7QUFDNVIsSUFBSSwyQkFBMkIsR0FBRywyUUFBMlEsQ0FBQztBQUM5UyxJQUFJLG1CQUFtQixHQUFHLG1PQUFtTyxDQUFDO0FBQzlQLElBQUksZUFBZSxHQUFHLHNJQUFzSSxDQUFDO0FBQzdKLElBQUksc0JBQXNCLEdBQUcsbUpBQW1KLENBQUM7QUFDakwsSUFBSSxZQUFZLEdBQUcsNlJBQTZSLENBQUM7QUFDalQsSUFBSSxtQkFBbUIsR0FBRyx1U0FBdVMsQ0FBQztBQUNsVSxJQUFJLFVBQVUsR0FBRyx1T0FBdU8sQ0FBQztBQUN6UCxJQUFJLGlCQUFpQixHQUFHLGtRQUFrUSxDQUFDO0FBQzNSLElBQUksV0FBVyxHQUFHLDZJQUE2SSxDQUFDO0FBQ2hLLElBQUksdUJBQXVCLEdBQUcsa2ZBQWtmLENBQUM7QUFDamhCLElBQUksa0JBQWtCLEdBQUcsNEtBQTRLLENBQUM7QUFDdE0sSUFBSSxzQkFBc0IsR0FBRywrYUFBK2EsQ0FBQztBQUM3YyxJQUFJLDZCQUE2QixHQUFHLGtoQkFBa2hCLENBQUM7QUFDdmpCLElBQUksa0JBQWtCLEdBQUcsdy9CQUF3L0IsQ0FBQztBQUNsaEMsSUFBSSxjQUFjLEdBQUcsb0hBQW9ILENBQUM7QUFDMUksSUFBSSxXQUFXLEdBQUcsdU1BQXVNLENBQUM7QUFDMU4sSUFBSSxrQkFBa0IsR0FBRyxzT0FBc08sQ0FBQztBQUNoUSxJQUFJLFdBQVcsR0FBRyw0TkFBNE4sQ0FBQztBQUMvTyxJQUFJLG1CQUFtQixHQUFHLDRNQUE0TSxDQUFDO0FBQ3ZPLElBQUksMEJBQTBCLEdBQUcsa1BBQWtQLENBQUM7QUFDcFIsSUFBSSxrQkFBa0IsR0FBRywyUEFBMlAsQ0FBQztBQUNyUixJQUFJLGNBQWMsR0FBRyxpYkFBaWIsQ0FBQztBQUN2YyxJQUFJLHFCQUFxQixHQUFHLDBjQUEwYyxDQUFDO0FBQ3ZlLElBQUksYUFBYSxHQUFHLGtVQUFrVSxDQUFDO0FBQ3ZWLElBQUkscUJBQXFCLEdBQUcseVNBQXlTLENBQUM7QUFDdFUsSUFBSSw0QkFBNEIsR0FBRywrVUFBK1UsQ0FBQztBQUNuWCxJQUFJLG9CQUFvQixHQUFHLGlXQUFpVyxDQUFDO0FBQzdYLElBQUksYUFBYSxHQUFHLHFhQUFxYSxDQUFDO0FBQzFiLElBQUksb0JBQW9CLEdBQUcsaWFBQWlhLENBQUM7QUFDN2IsSUFBSSxlQUFlLEdBQUcsMEtBQTBLLENBQUM7QUFDak0sSUFBSSxzQkFBc0IsR0FBRyxnTUFBZ00sQ0FBQztBQUM5TixJQUFJLFdBQVcsR0FBRyxtZ0JBQW1nQixDQUFDO0FBQ3RoQixJQUFJLGtCQUFrQixHQUFHLHNoQkFBc2hCLENBQUM7QUFDaGpCLElBQUksY0FBYyxHQUFHLHNHQUFzRyxDQUFDO0FBQzVILElBQUksc0JBQXNCLEdBQUcsOElBQThJLENBQUM7QUFDNUssSUFBSSxXQUFXLEdBQUcsNkRBQTZELENBQUM7QUFDaEYsSUFBSSxnQkFBZ0IsR0FBRyxxSEFBcUgsQ0FBQztBQUM3SSxJQUFJLHVCQUF1QixHQUFHLGtKQUFrSixDQUFDO0FBQ2pMLElBQUksZ0JBQWdCLEdBQUcsd0VBQXdFLENBQUM7QUFDaEcsSUFBSSx1QkFBdUIsR0FBRywwR0FBMEcsQ0FBQztBQUN6SSxJQUFJLG1CQUFtQixHQUFHLCtHQUErRyxDQUFDO0FBQzFJLElBQUksMEJBQTBCLEdBQUcsNklBQTZJLENBQUM7QUFDL0ssSUFBSSxnQkFBZ0IsR0FBRywwSkFBMEosQ0FBQztBQUNsTCxJQUFJLHVCQUF1QixHQUFHLG9NQUFvTSxDQUFDO0FBQ25PLElBQUksY0FBYyxHQUFHLDRJQUE0SSxDQUFDO0FBQ2xLLElBQUkscUJBQXFCLEdBQUcsdUxBQXVMLENBQUM7QUFDcE4sSUFBSSxrQkFBa0IsR0FBRyxzRkFBc0YsQ0FBQztBQUNoSCxJQUFJLGVBQWUsR0FBRyxnR0FBZ0csQ0FBQztBQUN2SCxJQUFJLHNCQUFzQixHQUFHLDRIQUE0SCxDQUFDO0FBQzFKLElBQUksaUJBQWlCLEdBQUcsZ01BQWdNLENBQUM7QUFDek4sSUFBSSx3QkFBd0IsR0FBRyw2TkFBNk4sQ0FBQztBQUM3UCxJQUFJLFlBQVksR0FBRyx5RUFBeUUsQ0FBQztBQUM3RixJQUFJLFdBQVcsR0FBRyxnVUFBZ1UsQ0FBQztBQUNuVixJQUFJLGdCQUFnQixHQUFHLDJaQUEyWixDQUFDO0FBQ25iLElBQUksdUJBQXVCLEdBQUcseWNBQXljLENBQUM7QUFDeGUsSUFBSSxlQUFlLEdBQUcsMmNBQTJjLENBQUM7QUFDbGUsSUFBSSxzQkFBc0IsR0FBRyxzaEJBQXNoQixDQUFDO0FBQ3BqQixJQUFJLGtCQUFrQixHQUFHLGtYQUFrWCxDQUFDO0FBQzVZLElBQUksYUFBYSxHQUFHLDJjQUEyYyxDQUFDO0FBQ2hlLElBQUksb0JBQW9CLEdBQUcsaWdCQUFpZ0IsQ0FBQztBQUM3aEIsSUFBSSxVQUFVLEdBQUcsdWpCQUF1akIsQ0FBQztBQUN6a0IsSUFBSSxZQUFZLEdBQUcsNkpBQTZKLENBQUM7QUFDakwsSUFBSSxZQUFZLEdBQUcscWRBQXFkLENBQUM7QUFDemUsSUFBSSxZQUFZLEdBQUcsMEVBQTBFLENBQUM7QUFDOUYsSUFBSSxtQkFBbUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUMzRCxJQUFJLGVBQWUsR0FBRyxpT0FBaU8sQ0FBQztBQUN4UCxJQUFJLHNCQUFzQixHQUFHLHVKQUF1SixDQUFDO0FBQ3JMLElBQUksY0FBYyxHQUFHLDJJQUEySSxDQUFDO0FBQ2pLLElBQUksbUJBQW1CLEdBQUcsaU9BQWlPLENBQUM7QUFDNVAsSUFBSSxlQUFlLEdBQUcsaU1BQWlNLENBQUM7QUFDeE4sSUFBSSxhQUFhLEdBQUcsNE9BQTRPLENBQUM7QUFDalEsSUFBSSxvQkFBb0IsR0FBRyxzS0FBc0ssQ0FBQztBQUNsTSxJQUFJLGFBQWEsR0FBRyx3UkFBd1IsQ0FBQztBQUM3UyxJQUFJLG9CQUFvQixHQUFHLGtOQUFrTixDQUFDO0FBQzlPLElBQUksZ0JBQWdCLEdBQUcsb0dBQW9HLENBQUM7QUFDNUgsSUFBSSxjQUFjLEdBQUcsZ09BQWdPLENBQUM7QUFDdFAsSUFBSSxxQkFBcUIsR0FBRywwSkFBMEosQ0FBQztBQUN2TCxJQUFJLGNBQWMsR0FBRyxzSEFBc0gsQ0FBQztBQUM1SSxJQUFJLFlBQVksR0FBRyx5T0FBeU8sQ0FBQztBQUM3UCxJQUFJLG1CQUFtQixHQUFHLG1LQUFtSyxDQUFDO0FBQzlMLElBQUksaUJBQWlCLEdBQUcsK05BQStOLENBQUM7QUFDeFAsSUFBSSxhQUFhLEdBQUcseUlBQXlJLENBQUM7QUFDOUosSUFBSSxvQkFBb0IsR0FBRywrSkFBK0osQ0FBQztBQUMzTCxJQUFJLDJCQUEyQixHQUFHLHlZQUF5WSxDQUFDO0FBQzVhLElBQUksb0JBQW9CLEdBQUcsNE5BQTROLENBQUM7QUFDeFAsSUFBSSxjQUFjLEdBQUcsaUdBQWlHLENBQUM7QUFDdkgsSUFBSSxxQkFBcUIsR0FBRyxnS0FBZ0ssQ0FBQztBQUM3TCxJQUFJLGtCQUFrQixHQUFHLHlJQUF5SSxDQUFDO0FBQ25LLElBQUkseUJBQXlCLEdBQUcseU1BQXlNLENBQUM7QUFDMU8sSUFBSSxtQkFBbUIsR0FBRyx3Y0FBd2MsQ0FBQztBQUNuZSxJQUFJLDBCQUEwQixHQUFHLHNnQkFBc2dCLENBQUM7QUFDeGlCLElBQUksYUFBYSxHQUFHLDBJQUEwSSxDQUFDO0FBQy9KLElBQUksb0JBQW9CLEdBQUcsc2dCQUFzZ0IsQ0FBQztBQUNsaUIsSUFBSSxTQUFTLEdBQUcsZ0VBQWdFLENBQUM7QUFDakYsSUFBSSxPQUFPLEdBQUcsNkRBQTZELENBQUM7QUFDNUUsSUFBSSxVQUFVLEdBQUcseUdBQXlHLENBQUM7QUFDM0gsSUFBSSxpQkFBaUIsR0FBRyxtS0FBbUssQ0FBQztBQUM1TCxJQUFJLGNBQWMsR0FBRyxxSEFBcUgsQ0FBQztBQUMzSSxJQUFJLFVBQVUsR0FBRyxpWEFBaVgsQ0FBQztBQUNuWSxJQUFJLE1BQU0sR0FBRyx5eUNBQXl5QyxDQUFDO0FBQ3Z6QyxJQUFJLFlBQVksR0FBRyxpVkFBaVYsQ0FBQztBQUNyVyxJQUFJLGVBQWUsR0FBRyxvYkFBb2IsQ0FBQztBQUMzYyxJQUFJLFlBQVksR0FBRyw2S0FBNkssQ0FBQztBQUNqTSxJQUFJLGNBQWMsR0FBRyx1TEFBdUwsQ0FBQztBQUM3TSxJQUFJLFVBQVUsR0FBRyxrbEJBQWtsQixDQUFDO0FBQ3BtQixJQUFJLFFBQVEsR0FBRyxnbkVBQWduRSxDQUFDO0FBQ2hvRSxJQUFJLGFBQWEsR0FBRyw0SEFBNEgsQ0FBQztBQUNqSixJQUFJLG9CQUFvQixHQUFHLGlQQUFpUCxDQUFDO0FBQzdRLElBQUksU0FBUyxHQUFHLGdWQUFnVixDQUFDO0FBQ2pXLElBQUksWUFBWSxHQUFHLGlKQUFpSixDQUFDO0FBQ3JLLElBQUksbUJBQW1CLEdBQUcsa1RBQWtULENBQUM7QUFDN1UsSUFBSSwwQkFBMEIsR0FBRyxpaUJBQWlpQixDQUFDO0FBQ25rQixJQUFJLGlCQUFpQixHQUFHLHlNQUF5TSxDQUFDO0FBQ2xPLElBQUksd0JBQXdCLEdBQUcsMGFBQTBhLENBQUM7QUFDMWMsSUFBSSxpQkFBaUIsR0FBRyxtT0FBbU8sQ0FBQztBQUM1UCxJQUFJLHdCQUF3QixHQUFHLG1mQUFtZixDQUFDO0FBQ25oQixJQUFJLG9CQUFvQixHQUFHLGlMQUFpTCxDQUFDO0FBQzdNLElBQUksMkJBQTJCLEdBQUcsOExBQThMLENBQUM7QUFDak8sSUFBSSxnQkFBZ0IsR0FBRyw2WEFBNlgsQ0FBQztBQUNyWixJQUFJLHVCQUF1QixHQUFHLDJWQUEyVixDQUFDO0FBQzFYLElBQUksaUJBQWlCLEdBQUcsOE5BQThOLENBQUM7QUFDdlAsSUFBSSx3QkFBd0IsR0FBRyxrTkFBa04sQ0FBQztBQUNsUCxJQUFJLGVBQWUsR0FBRyx1TkFBdU4sQ0FBQztBQUM5TyxJQUFJLHNCQUFzQixHQUFHLHVZQUF1WSxDQUFDO0FBQ3JhLElBQUksbUJBQW1CLEdBQUcsK1ZBQStWLENBQUM7QUFDMVgsSUFBSSxnQkFBZ0IsR0FBRyxzUEFBc1AsQ0FBQztBQUM5USxJQUFJLHVCQUF1QixHQUFHLDBPQUEwTyxDQUFDO0FBQ3pRLElBQUksa0JBQWtCLEdBQUcsNFZBQTRWLENBQUM7QUFDdFgsSUFBSSx5QkFBeUIsR0FBRyxnVkFBZ1YsQ0FBQztBQUNqWCxJQUFJLGtCQUFrQixHQUFHLG9kQUFvZCxDQUFDO0FBQzllLElBQUkseUJBQXlCLEdBQUcsK2NBQStjLENBQUM7QUFDaGYsSUFBSSxrQkFBa0IsR0FBRywrS0FBK0ssQ0FBQztBQUN6TSxJQUFJLHlCQUF5QixHQUFHLDZMQUE2TCxDQUFDO0FBQzlOLElBQUksbUJBQW1CLEdBQUcsME5BQTBOLENBQUM7QUFDclAsSUFBSSxzQkFBc0IsR0FBRyx5VEFBeVQsQ0FBQztBQUN2VixJQUFJLDZCQUE2QixHQUFHLGdZQUFnWSxDQUFDO0FBQ3JhLElBQUksMEJBQTBCLEdBQUcseVFBQXlRLENBQUM7QUFDM1MsSUFBSSxjQUFjLEdBQUcsOEVBQThFLENBQUM7QUFDcEcsSUFBSSxjQUFjLEdBQUcsc0lBQXNJLENBQUM7QUFDNUosSUFBSSxjQUFjLEdBQUcsNklBQTZJLENBQUM7QUFDbkssSUFBSSxjQUFjLEdBQUcsNlBBQTZQLENBQUM7QUFDblIsSUFBSSxjQUFjLEdBQUcsa0xBQWtMLENBQUM7QUFDeE0sSUFBSSxjQUFjLEdBQUcsc0pBQXNKLENBQUM7QUFDNUssSUFBSSxjQUFjLEdBQUcsb1BBQW9QLENBQUM7QUFDMVEsSUFBSSxpQkFBaUIsR0FBRyxxTUFBcU0sQ0FBQztBQUM5TixJQUFJLG9CQUFvQixHQUFHLG1hQUFtYSxDQUFDO0FBQy9iLElBQUksWUFBWSxHQUFHLCthQUErYSxDQUFDO0FBQ25jLElBQUksZUFBZSxHQUFHLG1sQkFBbWxCLENBQUM7QUFDMW1CLElBQUksUUFBUSxHQUFHLDhPQUE4TyxDQUFDO0FBQzlQLElBQUksUUFBUSxHQUFHLDRNQUE0TSxDQUFDO0FBQzVOLElBQUksU0FBUyxHQUFHLG1DQUFtQyxDQUFDO0FBQ3BELElBQUksZ0JBQWdCLEdBQUcsc0VBQXNFLENBQUM7QUFDOUYsSUFBSSxXQUFXLEdBQUcsNjZCQUE2NkIsQ0FBQztBQUNoOEIsSUFBSSxTQUFTLEdBQUcseTBDQUF5MEMsQ0FBQztBQUMxMUMsSUFBSSxTQUFTLEdBQUcsaVhBQWlYLENBQUM7QUFDbFksSUFBSSxNQUFNLEdBQUcsbWJBQW1iLENBQUM7QUFDamMsSUFBSSxXQUFXLEdBQUcsbWVBQW1lLENBQUM7QUFDdGYsSUFBSSxrQkFBa0IsR0FBRyxnbkJBQWduQixDQUFDO0FBQzFvQixJQUFJLGFBQWEsR0FBRyxtZ0JBQW1nQixDQUFDO0FBQ3hoQixJQUFJLFFBQVEsR0FBRyx3VkFBd1YsQ0FBQztBQUN4VyxJQUFJLFlBQVksR0FBRyw0VUFBNFUsQ0FBQztBQUNoVyxJQUFJLFNBQVMsR0FBRyxzR0FBc0csQ0FBQztBQUN2SCxJQUFJLGdCQUFnQixHQUFHLDhMQUE4TCxDQUFDO0FBQ3ROLElBQUksV0FBVyxHQUFHLHVLQUF1SyxDQUFDO0FBQzFMLElBQUksa0JBQWtCLEdBQUcseU1BQXlNLENBQUM7QUFDbk8sSUFBSSxXQUFXLEdBQUcsNlZBQTZWLENBQUM7QUFDaFgsSUFBSSxnQkFBZ0IsR0FBRyxxZUFBcWUsQ0FBQztBQUM3ZixJQUFJLFFBQVEsR0FBRywyRUFBMkUsQ0FBQztBQUMzRixJQUFJLFVBQVUsR0FBRywwUkFBMFIsQ0FBQztBQUM1UyxJQUFJLGlCQUFpQixHQUFHLDBjQUEwYyxDQUFDO0FBQ25lLElBQUksTUFBTSxHQUFHLHFZQUFxWSxDQUFDO0FBQ25aLElBQUksV0FBVyxHQUFHLHd4QkFBd3hCLENBQUM7QUFDM3lCLElBQUksb0JBQW9CLEdBQUcsZ1NBQWdTLENBQUM7QUFDNVQsSUFBSSxzQkFBc0IsR0FBRyxpYUFBaWEsQ0FBQztBQUMvYixJQUFJLFdBQVcsR0FBRyx5eUNBQXl5QyxDQUFDO0FBQzV6QyxJQUFJLGtCQUFrQixHQUFHLG1mQUFtZixDQUFDO0FBQzdnQixJQUFJLFlBQVksR0FBRywwYkFBMGIsQ0FBQztBQUM5YyxJQUFJLGNBQWMsR0FBRyw2akJBQTZqQixDQUFDO0FBQ25sQixJQUFJLFlBQVksR0FBRyx1WkFBdVosQ0FBQztBQUMzYSxJQUFJLFVBQVUsR0FBRyxrWkFBa1osQ0FBQztBQUNwYSxJQUFJLFVBQVUsR0FBRywwZ0JBQTBnQixDQUFDO0FBQzVoQixJQUFJLGlCQUFpQixHQUFHLGdSQUFnUixDQUFDO0FBQ3pTLElBQUksbUJBQW1CLEdBQUcsK1BBQStQLENBQUM7QUFDMVIsSUFBSSxZQUFZLEdBQUcseVpBQXlaLENBQUM7QUFDN2EsSUFBSSxtQkFBbUIsR0FBRyx5b0JBQXlvQixDQUFDO0FBQ3BxQixJQUFJLFlBQVksR0FBRywwdEJBQTB0QixDQUFDO0FBQzl1QixJQUFJLFNBQVMsR0FBRyw4TkFBOE4sQ0FBQztBQUMvTyxJQUFJLFNBQVMsR0FBRyw4TUFBOE0sQ0FBQztBQUMvTixJQUFJLE9BQU8sR0FBRyxxYUFBcWEsQ0FBQztBQUNwYixJQUFJLGNBQWMsR0FBRyxpUEFBaVAsQ0FBQztBQUN2USxJQUFJLGNBQWMsR0FBRyxnbEJBQWdsQixDQUFDO0FBQ3RtQixJQUFJLGFBQWEsR0FBRyxtUEFBbVAsQ0FBQztBQUN4USxJQUFJLG9CQUFvQixHQUFHLCtUQUErVCxDQUFDO0FBQzNWLElBQUksMkJBQTJCLEdBQUcsbVZBQW1WLENBQUM7QUFDdFgsSUFBSSxXQUFXLEdBQUcscUlBQXFJLENBQUM7QUFDeEosSUFBSSxrQkFBa0IsR0FBRyx1UkFBdVIsQ0FBQztBQUNqVCxJQUFJLHlCQUF5QixHQUFHLDZTQUE2UyxDQUFDO0FBQzlVLElBQUksZ0JBQWdCLEdBQUcscUtBQXFLLENBQUM7QUFDN0wsSUFBSSxvQkFBb0IsR0FBRyxzS0FBc0ssQ0FBQztBQUNsTSxJQUFJLHFCQUFxQixHQUFHLHNLQUFzSyxDQUFDO0FBQ25NLElBQUksZ0JBQWdCLEdBQUcsa0hBQWtILENBQUM7QUFDMUksSUFBSSx3QkFBd0IsR0FBRywwS0FBMEssQ0FBQztBQUMxTSxJQUFJLHVCQUF1QixHQUFHLGtJQUFrSSxDQUFDO0FBQ2pLLElBQUksZ0JBQWdCLEdBQUcsNExBQTRMLENBQUM7QUFDcE4sSUFBSSx1QkFBdUIsR0FBRywrTUFBK00sQ0FBQztBQUM5TyxJQUFJLGdCQUFnQixHQUFHLHdhQUF3YSxDQUFDO0FBQ2hjLElBQUksdUJBQXVCLEdBQUcsNmNBQTZjLENBQUM7QUFDNWUsSUFBSSxpQkFBaUIsR0FBRywrTkFBK04sQ0FBQztBQUN4UCxJQUFJLGVBQWUsR0FBRyxrUkFBa1IsQ0FBQztBQUN6UyxJQUFJLGNBQWMsR0FBRywyS0FBMkssQ0FBQztBQUNqTSxJQUFJLGlCQUFpQixHQUFHLCtJQUErSSxDQUFDO0FBQ3hLLElBQUksZ0JBQWdCLEdBQUcsc1VBQXNVLENBQUM7QUFDOVYsSUFBSSxpQkFBaUIsR0FBRywrSUFBK0ksQ0FBQztBQUN4SyxJQUFJLGVBQWUsR0FBRyw4WUFBOFksQ0FBQztBQUNyYSxJQUFJLHNCQUFzQixHQUFHLDBaQUEwWixDQUFDO0FBQ3hiLElBQUksZ0JBQWdCLEdBQUcsNkpBQTZKLENBQUM7QUFDckwsSUFBSSxnQkFBZ0IsR0FBRywyTkFBMk4sQ0FBQztBQUNuUCxJQUFJLHVCQUF1QixHQUFHLHlPQUF5TyxDQUFDO0FBQ3hRLElBQUksbUJBQW1CLEdBQUcsZ0xBQWdMLENBQUM7QUFDM00sSUFBSSx3QkFBd0IsR0FBRyw4T0FBOE8sQ0FBQztBQUM5USxJQUFJLHNCQUFzQixHQUFHLDhMQUE4TCxDQUFDO0FBQzVOLElBQUksa0JBQWtCLEdBQUcsb0pBQW9KLENBQUM7QUFDOUssSUFBSSxlQUFlLEdBQUcsMkxBQTJMLENBQUM7QUFDbE4sSUFBSSxtQkFBbUIsR0FBRywycUJBQTJxQixDQUFDO0FBQ3RzQixJQUFJLGdCQUFnQixHQUFHLHNLQUFzSyxDQUFDO0FBQzlMLElBQUksdUJBQXVCLEdBQUcsc0xBQXNMLENBQUM7QUFDck4sSUFBSSxrQkFBa0IsR0FBRyxxWUFBcVksQ0FBQztBQUMvWixJQUFJLHlCQUF5QixHQUFHLGlaQUFpWixDQUFDO0FBQ2xiLElBQUksaUJBQWlCLEdBQUcsc1BBQXNQLENBQUM7QUFDL1EsSUFBSSx3QkFBd0IsR0FBRyxxUkFBcVIsQ0FBQztBQUNyVCxJQUFJLGlCQUFpQixHQUFHLGthQUFrYSxDQUFDO0FBQzNiLElBQUksZUFBZSxHQUFHLCtNQUErTSxDQUFDO0FBQ3RPLElBQUksZ0JBQWdCLEdBQUcsK0tBQStLLENBQUM7QUFDdk0sSUFBSSxlQUFlLEdBQUcscVhBQXFYLENBQUM7QUFDNVksSUFBSSxzQkFBc0IsR0FBRyxnWUFBZ1ksQ0FBQztBQUM5WixJQUFJLGVBQWUsR0FBRywrSUFBK0ksQ0FBQztBQUN0SyxJQUFJLHNCQUFzQixHQUFHLDhKQUE4SixDQUFDO0FBQzVMLElBQUksZ0JBQWdCLEdBQUcsNkhBQTZILENBQUM7QUFDckosSUFBSSxlQUFlLEdBQUcsbUpBQW1KLENBQUM7QUFDMUssSUFBSSxvQkFBb0IsR0FBRyxrSUFBa0ksQ0FBQztBQUM5SixJQUFJLGtCQUFrQixHQUFHLGlKQUFpSixDQUFDO0FBQzNLLElBQUkseUJBQXlCLEdBQUcscUtBQXFLLENBQUM7QUFDdE0sSUFBSSxXQUFXLEdBQUcsOENBQThDLENBQUM7QUFDakUsSUFBSSxZQUFZLEdBQUcsNEZBQTRGLENBQUM7QUFDaEgsSUFBSSxhQUFhLEdBQUcsNkRBQTZELENBQUM7QUFDbEYsSUFBSSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFDbkUsSUFBSSxZQUFZLEdBQUcsK0dBQStHLENBQUM7QUFDbkksSUFBSSxZQUFZLEdBQUcsK1JBQStSLENBQUM7QUFDblQsSUFBSSxlQUFlLEdBQUcsbWJBQW1iLENBQUM7QUFDMWMsSUFBSSxTQUFTLEdBQUcsaU9BQWlPLENBQUM7QUFDbFAsSUFBSSxnQkFBZ0IsR0FBRyw0TkFBNE4sQ0FBQztBQUNwUCxJQUFJLGNBQWMsR0FBRyx5SkFBeUosQ0FBQztBQUMvSyxJQUFJLGdCQUFnQixHQUFHLGtmQUFrZixDQUFDO0FBQzFnQixJQUFJLGdCQUFnQixHQUFHLHdPQUF3TyxDQUFDO0FBQ2hRLElBQUksdUJBQXVCLEdBQUcsc1hBQXNYLENBQUM7QUFDclosSUFBSSxhQUFhLEdBQUcsMlpBQTJaLENBQUM7QUFDaGIsSUFBSSxvQkFBb0IsR0FBRyx3Y0FBd2MsQ0FBQztBQUNwZSxJQUFJLGNBQWMsR0FBRywwUEFBMFAsQ0FBQztBQUNoUixJQUFJLHFCQUFxQixHQUFHLDBQQUEwUCxDQUFDO0FBQ3ZSLElBQUksY0FBYyxHQUFHLHdWQUF3VixDQUFDO0FBQzlXLElBQUksY0FBYyxHQUFHLHVLQUF1SyxDQUFDO0FBQzdMLElBQUksYUFBYSxHQUFHLGdiQUFnYixDQUFDO0FBQ3JjLElBQUksdUJBQXVCLEdBQUcsa2JBQWtiLENBQUM7QUFDamQsSUFBSSx1QkFBdUIsR0FBRyxtYUFBbWEsQ0FBQztBQUNsYyxJQUFJLHdCQUF3QixHQUFHLGtWQUFrVixDQUFDO0FBQ2xYLElBQUkscUJBQXFCLEdBQUcsMkxBQTJMLENBQUM7QUFDeE4sSUFBSSxZQUFZLEdBQUcsbWRBQW1kLENBQUM7QUFDdmUsSUFBSSxnQkFBZ0IsR0FBRyxtUkFBbVIsQ0FBQztBQUMzUyxJQUFJLGtCQUFrQixHQUFHLDRWQUE0VixDQUFDO0FBQ3RYLElBQUksYUFBYSxHQUFHLGtUQUFrVCxDQUFDO0FBQ3ZVLElBQUksb0JBQW9CLEdBQUcsNFZBQTRWLENBQUM7QUFDeFgsSUFBSSxhQUFhLEdBQUcsd01BQXdNLENBQUM7QUFDN04sSUFBSSxvQkFBb0IsR0FBRyw4S0FBOEssQ0FBQztBQUMxTSxJQUFJLGVBQWUsR0FBRyxrVUFBa1UsQ0FBQztBQUN6VixJQUFJLHNCQUFzQixHQUFHLCtXQUErVyxDQUFDO0FBQzdZLElBQUksZUFBZSxHQUFHLHdKQUF3SixDQUFDO0FBQy9LLElBQUksc0JBQXNCLEdBQUcsdU1BQXVNLENBQUM7QUFDck8sSUFBSSxjQUFjLEdBQUcsd1lBQXdZLENBQUM7QUFDOVosSUFBSSxpQkFBaUIsR0FBRyxrWUFBa1ksQ0FBQztBQUMzWixJQUFJLHdCQUF3QixHQUFHLDhXQUE4VyxDQUFDO0FBQzlZLElBQUksV0FBVyxHQUFHLG05QkFBbTlCLENBQUM7QUFDdCtCLElBQUksU0FBUyxHQUFHLHdPQUF3TyxDQUFDO0FBQ3pQLElBQUksU0FBUyxHQUFHLDBVQUEwVSxDQUFDO0FBQzNWLElBQUksWUFBWSxHQUFHLGlYQUFpWCxDQUFDO0FBQ3JZLElBQUksV0FBVyxHQUFHLDBiQUEwYixDQUFDO0FBQzdjLElBQUksY0FBYyxHQUFHLDhmQUE4ZixDQUFDO0FBQ3BoQixJQUFJLFdBQVcsR0FBRyxzTkFBc04sQ0FBQztBQUN6TyxJQUFJLE1BQU0sR0FBRyxtWEFBbVgsQ0FBQztBQUNqWSxJQUFJLFdBQVcsR0FBRyx3YUFBd2EsQ0FBQztBQUMzYixJQUFJLFdBQVcsR0FBRyxvY0FBb2MsQ0FBQztBQUN2ZCxJQUFJLGVBQWUsR0FBRywrVkFBK1YsQ0FBQztBQUN0WCxJQUFJLGdCQUFnQixHQUFHLCtWQUErVixDQUFDO0FBQ3ZYLElBQUksVUFBVSxHQUFHLG1PQUFtTyxDQUFDO0FBQ3JQLElBQUksYUFBYSxHQUFHLDRHQUE0RyxDQUFDO0FBQ2pJLElBQUksY0FBYyxHQUFHLHE5QkFBcTlCLENBQUM7QUFDMytCLElBQUksZ0JBQWdCLEdBQUcsNmRBQTZkLENBQUM7QUFDcmYsSUFBSSxlQUFlLEdBQUcsNGJBQTRiLENBQUM7QUFDbmQsSUFBSSxrQkFBa0IsR0FBRyw0ZUFBNGUsQ0FBQztBQUN0Z0IsSUFBSSxtQkFBbUIsR0FBRywrN0JBQSs3QixDQUFDO0FBQzE5QixJQUFJLGVBQWUsR0FBRyxpYkFBaWIsQ0FBQztBQUN4YyxJQUFJLFlBQVksR0FBRywwR0FBMEcsQ0FBQztBQUM5SCxJQUFJLFNBQVMsR0FBRyx3dkNBQXd2QyxDQUFDO0FBQ3p3QyxJQUFJLGVBQWUsR0FBRyx1bkJBQXVuQixDQUFDO0FBQzlvQixJQUFJLGlCQUFpQixHQUFHLHFXQUFxVyxDQUFDO0FBQzlYLElBQUksa0JBQWtCLEdBQUcscVVBQXFVLENBQUM7QUFDL1YsSUFBSSxtQkFBbUIsR0FBRywraEJBQStoQixDQUFDO0FBQzFqQixJQUFJLGtCQUFrQixHQUFHLGl5Q0FBaXlDLENBQUM7QUFDM3pDLElBQUksaUJBQWlCLEdBQUcsNHBDQUE0cEMsQ0FBQztBQUNyckMsSUFBSSxVQUFVLEdBQUcscUZBQXFGLENBQUM7QUFDdkcsSUFBSSxjQUFjLEdBQUcsd1BBQXdQLENBQUM7QUFDOVEsSUFBSSxjQUFjLEdBQUcsd1lBQXdZLENBQUM7QUFDOVosSUFBSSxxQkFBcUIsR0FBRyx5YUFBeWEsQ0FBQztBQUN0YyxJQUFJLGVBQWUsR0FBRyx1Z0JBQXVnQixDQUFDO0FBQzloQixJQUFJLFNBQVMsR0FBRyw2MUJBQTYxQixDQUFDO0FBQzkyQixJQUFJLFlBQVksR0FBRyx1WEFBdVgsQ0FBQztBQUMzWSxJQUFJLGVBQWUsR0FBRyw4V0FBOFcsQ0FBQztBQUNyWSxJQUFJLFVBQVUsR0FBRyw0UUFBNFEsQ0FBQztBQUM5UixJQUFJLFNBQVMsR0FBRyxrakJBQWtqQixDQUFDO0FBQ25rQixJQUFJLGtCQUFrQixHQUFHLDg5Q0FBODlDLENBQUM7QUFDeC9DLElBQUksaUJBQWlCLEdBQUcsZ1lBQWdZLENBQUM7QUFDelosSUFBSSxjQUFjLEdBQUcsdVZBQXVWLENBQUM7QUFDN1csSUFBSSxlQUFlLEdBQUcsNFZBQTRWLENBQUM7QUFDblgsSUFBSSxlQUFlLEdBQUcsNFJBQTRSLENBQUM7QUFDblQsSUFBSSxjQUFjLEdBQUcscWpCQUFxakIsQ0FBQztBQUMza0IsSUFBSSxTQUFTLEdBQUcsa2NBQWtjLENBQUM7QUFDbmQsSUFBSSxhQUFhLEdBQUcsdVhBQXVYLENBQUM7QUFDNVksSUFBSSxtQkFBbUIsR0FBRyxtcUJBQW1xQixDQUFDO0FBQzlyQixJQUFJLFlBQVksR0FBRyxxVkFBcVYsQ0FBQztBQUN6VyxJQUFJLFVBQVUsR0FBRyw4TUFBOE0sQ0FBQztBQUNoTyxJQUFJLGdCQUFnQixHQUFHLG1zQkFBbXNCLENBQUM7QUFDM3RCLElBQUksZ0JBQWdCLEdBQUcsc2FBQXNhLENBQUM7QUFDOWIsSUFBSSxjQUFjLEdBQUcscVpBQXFaLENBQUM7QUFDM2EsSUFBSSxrQkFBa0IsR0FBRyxvSUFBb0ksQ0FBQztBQUM5SixJQUFJLFVBQVUsR0FBRyx1WUFBdVksQ0FBQztBQUN6WixJQUFJLFlBQVksR0FBRyw4WkFBOFosQ0FBQztBQUNsYixJQUFJLGVBQWUsR0FBRyx1VEFBdVQsQ0FBQztBQUM5VSxJQUFJLHFCQUFxQixHQUFHLG9wQkFBb3BCLENBQUM7QUFDanJCLElBQUksa0JBQWtCLEdBQUcsa3lCQUFreUIsQ0FBQztBQUM1ekIsSUFBSSxVQUFVLEdBQUcsK25CQUErbkIsQ0FBQztBQUNqcEIsSUFBSSxnQkFBZ0IsR0FBRyw0TkFBNE4sQ0FBQztBQUNwUCxJQUFJLHVCQUF1QixHQUFHLG9WQUFvVixDQUFDO0FBQ25YLElBQUksWUFBWSxHQUFHLDRsQkFBNGxCLENBQUM7QUFDaG5CLElBQUksVUFBVSxHQUFHLHdNQUF3TSxDQUFDO0FBQzFOLElBQUksT0FBTyxHQUFHLCtFQUErRSxDQUFDO0FBQzlGLElBQUkscUJBQXFCLEdBQUcsb1JBQW9SLENBQUM7QUFDalQsSUFBSSw0QkFBNEIsR0FBRyw4VkFBOFYsQ0FBQztBQUNsWSxJQUFJLHlCQUF5QixHQUFHLGtkQUFrZCxDQUFDO0FBQ25mLElBQUksZ0NBQWdDLEdBQUcsd2hCQUF3aEIsQ0FBQztBQUNoa0IsSUFBSSxrQkFBa0IsR0FBRyxvT0FBb08sQ0FBQztBQUM5UCxJQUFJLHlCQUF5QixHQUFHLGtaQUFrWixDQUFDO0FBQ25iLElBQUksbUJBQW1CLEdBQUcsc1pBQXNaLENBQUM7QUFDamIsSUFBSSwwQkFBMEIsR0FBRyw2aUJBQTZpQixDQUFDO0FBQy9rQixJQUFJLGVBQWUsR0FBRyw2SUFBNkksQ0FBQztBQUNwSyxJQUFJLGtCQUFrQixHQUFHLHlSQUF5UixDQUFDO0FBQ25ULElBQUkseUJBQXlCLEdBQUcsNFRBQTRULENBQUM7QUFDN1YsSUFBSSxzQkFBc0IsR0FBRyxnS0FBZ0ssQ0FBQztBQUM5TCxJQUFJLHVCQUF1QixHQUFHLGlNQUFpTSxDQUFDO0FBQ2hPLElBQUksOEJBQThCLEdBQUcsbU5BQW1OLENBQUM7QUFDelAsSUFBSSxZQUFZLEdBQUcsa0xBQWtMLENBQUM7QUFDdE0sSUFBSSxtQkFBbUIsR0FBRyw0TUFBNE0sQ0FBQztBQUN2TyxJQUFJLFVBQVUsR0FBRyx5TkFBeU4sQ0FBQztBQUMzTyxJQUFJLGlCQUFpQixHQUFHLGtSQUFrUixDQUFDO0FBQzNTLElBQUksY0FBYyxHQUFHLDZGQUE2RixDQUFDO0FBQ25ILElBQUksV0FBVyxHQUFHLDZNQUE2TSxDQUFDO0FBQ2hPLElBQUksa0JBQWtCLEdBQUcsdUlBQXVJLENBQUM7QUFDakssSUFBSSxhQUFhLEdBQUcsNlNBQTZTLENBQUM7QUFDbFUsSUFBSSxvQkFBb0IsR0FBRyx1VUFBdVUsQ0FBQztBQUNuVyxJQUFJLGFBQWEsR0FBRyxrVUFBa1UsQ0FBQztBQUN2VixJQUFJLG9CQUFvQixHQUFHLDhVQUE4VSxDQUFDO0FBQzFXLElBQUksV0FBVyxHQUFHLDZHQUE2RyxDQUFDO0FBQ2hJLElBQUksa0JBQWtCLEdBQUcsMkhBQTJILENBQUM7QUFDckosSUFBSSxRQUFRLEdBQUcscVlBQXFZLENBQUM7QUFDclosSUFBSSxZQUFZLEdBQUcsc1VBQXNVLENBQUM7QUFDMVYsSUFBSSxlQUFlLEdBQUcsd0JBQXdCLENBQUM7QUFDL0MsSUFBSSxzQkFBc0IsR0FBRyx3REFBd0QsQ0FBQztBQUN0RixJQUFJLGFBQWEsR0FBRyx3TEFBd0wsQ0FBQztBQUM3TSxJQUFJLGVBQWUsR0FBRyxtYUFBbWEsQ0FBQztBQUMxYixJQUFJLHNCQUFzQixHQUFHLHVmQUF1ZixDQUFDO0FBQ3JoQixJQUFJLGFBQWEsR0FBRyxpSkFBaUosQ0FBQztBQUN0SyxJQUFJLGVBQWUsR0FBRywyTEFBMkwsQ0FBQztBQUNsTixJQUFJLFNBQVMsR0FBRyxtZUFBbWUsQ0FBQztBQUNwZixJQUFJLE9BQU8sR0FBRyxzWkFBc1osQ0FBQztBQUNyYSxJQUFJLGdCQUFnQixHQUFHLG1aQUFtWixDQUFDO0FBQzNhLElBQUksaUJBQWlCLEdBQUcscWFBQXFhLENBQUM7QUFDOWIsSUFBSSxjQUFjLEdBQUcsaVpBQWlaLENBQUM7QUFDdmEsSUFBSSxZQUFZLEdBQUcsd2NBQXdjLENBQUM7QUFDNWQsSUFBSSxZQUFZLEdBQUcsK1lBQStZLENBQUM7QUFDbmEsSUFBSSxVQUFVLEdBQUcseWNBQXljLENBQUM7QUFDM2QsSUFBSSxjQUFjLEdBQUcscWFBQXFhLENBQUM7QUFDM2IsSUFBSSxXQUFXLEdBQUcsb2FBQW9hLENBQUM7QUFDdmIsSUFBSSxhQUFhLEdBQUcsZ2dCQUFnZ0IsQ0FBQztBQUNyaEIsSUFBSSxjQUFjLEdBQUcsNmlCQUE2aUIsQ0FBQztBQUNua0IsSUFBSSxtQkFBbUIsR0FBRyx5VUFBeVUsQ0FBQztBQUNwVyxJQUFJLE9BQU8sR0FBRyxnS0FBZ0ssQ0FBQztBQUMvSyxJQUFJLFVBQVUsR0FBRywwakJBQTBqQixDQUFDO0FBQzVrQixJQUFJLFlBQVksR0FBRywwWEFBMFgsQ0FBQztBQUM5WSxJQUFJLFdBQVcsR0FBRyx5ZUFBeWUsQ0FBQztBQUM1ZixJQUFJLGVBQWUsR0FBRyxzZUFBc2UsQ0FBQztBQUM3ZixJQUFJLGFBQWEsR0FBRyw4ZEFBOGQsQ0FBQztBQUNuZixJQUFJLFlBQVksR0FBRyxxVUFBcVUsQ0FBQztBQUN6VixJQUFJLGVBQWUsR0FBRyxzTEFBc0wsQ0FBQztBQUM3TSxJQUFJLFdBQVcsR0FBRyw2VkFBNlYsQ0FBQztBQUNoWCxJQUFJLGFBQWEsR0FBRyxzTkFBc04sQ0FBQztBQUMzTyxJQUFJLGVBQWUsR0FBRyxrT0FBa08sQ0FBQztBQUN6UCxJQUFJLGFBQWEsR0FBRyxzYkFBc2IsQ0FBQztBQUMzYyxJQUFJLFVBQVUsR0FBRywwUEFBMFAsQ0FBQztBQUM1USxJQUFJLGlCQUFpQixHQUFHLGdPQUFnTyxDQUFDO0FBQ3pQLElBQUksV0FBVyxHQUFHLHdTQUF3UyxDQUFDO0FBQzNULElBQUksT0FBTyxHQUFHLHlNQUF5TSxDQUFDO0FBQ3hOLElBQUksWUFBWSxHQUFHLHFnQkFBcWdCLENBQUM7QUFDemhCLElBQUksZ0JBQWdCLEdBQUcsdVBBQXVQLENBQUM7QUFDL1EsSUFBSSxnQkFBZ0IsR0FBRyxzUkFBc1IsQ0FBQztBQUM5UyxJQUFJLFVBQVUsR0FBRywrUUFBK1EsQ0FBQztBQUNqUyxJQUFJLFNBQVMsR0FBRyx1TEFBdUwsQ0FBQztBQUN4TSxJQUFJLE1BQU0sR0FBRywweEJBQTB4QixDQUFDO0FBQ3h5QixJQUFJLE9BQU8sR0FBRyxzY0FBc2MsQ0FBQztBQUNyZCxJQUFJLGVBQWUsR0FBRyx5RUFBeUUsQ0FBQztBQUNoRyxJQUFJLFlBQVksR0FBRyxvR0FBb0csQ0FBQztBQUN4SCxJQUFJLG1CQUFtQixHQUFHLG1IQUFtSCxDQUFDO0FBQzlJLElBQUkscUJBQXFCLEdBQUcsNkhBQTZILENBQUM7QUFDMUosSUFBSSxpQkFBaUIsR0FBRyxpVUFBaVUsQ0FBQztBQUMxVixJQUFJLG9CQUFvQixHQUFHLDhIQUE4SCxDQUFDO0FBQzFKLElBQUksZUFBZSxHQUFHLHU4QkFBdThCLENBQUM7QUFDOTlCLElBQUksZ0JBQWdCLEdBQUcsb0hBQW9ILENBQUM7QUFDNUksSUFBSSxpQkFBaUIsR0FBRyw0TEFBNEwsQ0FBQztBQUNyTixJQUFJLHVCQUF1QixHQUFHLCtJQUErSSxDQUFDO0FBQzlLLElBQUksa0JBQWtCLEdBQUcsNk5BQTZOLENBQUM7QUFDdlAsSUFBSSxlQUFlLEdBQUcsMFFBQTBRLENBQUM7QUFDalMsSUFBSSxnQkFBZ0IsR0FBRywySUFBMkksQ0FBQztBQUNuSyxJQUFJLG1CQUFtQixHQUFHLDhQQUE4UCxDQUFDO0FBQ3pSLElBQUksZ0JBQWdCLEdBQUcsNFRBQTRULENBQUM7QUFDcFYsSUFBSSxtQkFBbUIsR0FBRyxvTUFBb00sQ0FBQztBQUMvTixJQUFJLHNCQUFzQixHQUFHLHdVQUF3VSxDQUFDO0FBQ3RXLElBQUksZUFBZSxHQUFHLDZQQUE2UCxDQUFDO0FBQ3BSLElBQUksa0JBQWtCLEdBQUcsZ1pBQWdaLENBQUM7QUFDMWEsSUFBSSxlQUFlLEdBQUcsNkxBQTZMLENBQUM7QUFDcE4sSUFBSSxnQkFBZ0IsR0FBRyxpSUFBaUksQ0FBQztBQUN6SixJQUFJLHNCQUFzQixHQUFHLGdKQUFnSixDQUFDO0FBQzlLLElBQUksb0JBQW9CLEdBQUcsd0lBQXdJLENBQUM7QUFDcEssSUFBSSxpQkFBaUIsR0FBRyxtUUFBbVEsQ0FBQztBQUM1UixJQUFJLGdCQUFnQixHQUFHLG9JQUFvSSxDQUFDO0FBQzVKLElBQUksb0JBQW9CLEdBQUcsdWZBQXVmLENBQUM7QUFDbmhCLElBQUksY0FBYyxHQUFHLG9lQUFvZSxDQUFDO0FBQzFmLElBQUksU0FBUyxHQUFHLCtyQ0FBK3JDLENBQUM7QUFDaHRDLElBQUksY0FBYyxHQUFHLDZOQUE2TixDQUFDO0FBQ25QLElBQUkscUJBQXFCLEdBQUcsd05BQXdOLENBQUM7QUFDclAsSUFBSSxlQUFlLEdBQUcsbUpBQW1KLENBQUM7QUFDMUssSUFBSSxjQUFjLEdBQUcsaU9BQWlPLENBQUM7QUFDdlAsSUFBSSxVQUFVLEdBQUcsZzhDQUFnOEMsQ0FBQztBQUNsOUMsSUFBSSxXQUFXLEdBQUcsbWJBQW1iLENBQUM7QUFDdGMsSUFBSSxrQkFBa0IsR0FBRywySUFBMkksQ0FBQztBQUNySyxJQUFJLHlCQUF5QixHQUFHLCtEQUErRCxDQUFDO0FBQ2hHLElBQUksV0FBVyxHQUFHLG9EQUFvRCxDQUFDO0FBQ3ZFLElBQUksa0JBQWtCLEdBQUcseUlBQXlJLENBQUM7QUFDbkssSUFBSSxpQkFBaUIsR0FBRyw2T0FBNk8sQ0FBQztBQUN0USxJQUFJLDJCQUEyQixHQUFHLHNIQUFzSCxDQUFDO0FBQ3pKLElBQUksV0FBVyxHQUFHLGdKQUFnSixDQUFDO0FBQ25LLElBQUksa0JBQWtCLEdBQUcsZ01BQWdNLENBQUM7QUFDMU4sSUFBSSxzQkFBc0IsR0FBRyxrTEFBa0wsQ0FBQztBQUNoTixJQUFJLGNBQWMsR0FBRyx1VEFBdVQsQ0FBQztBQUM3VSxJQUFJLGFBQWEsR0FBRyx5U0FBeVMsQ0FBQztBQUM5VCxJQUFJLG9CQUFvQixHQUFHLHlqQkFBeWpCLENBQUM7QUFDcmxCLElBQUksYUFBYSxHQUFHLG9HQUFvRyxDQUFDO0FBQ3pILElBQUksaUJBQWlCLEdBQUcsc0NBQXNDLENBQUM7QUFDL0QsSUFBSSxZQUFZLEdBQUcsa0dBQWtHLENBQUM7QUFDdEgsSUFBSSxtQkFBbUIsR0FBRyw2SEFBNkgsQ0FBQztBQUN4SixJQUFJLG1CQUFtQixHQUFHLGlGQUFpRixDQUFDO0FBQzVHLElBQUksaUJBQWlCLEdBQUcsMFJBQTBSLENBQUM7QUFDblQsSUFBSSxnQkFBZ0IsR0FBRyxtSEFBbUgsQ0FBQztBQUMzSSxJQUFJLFdBQVcsR0FBRywySEFBMkgsQ0FBQztBQUM5SSxJQUFJLFdBQVcsR0FBRywwR0FBMEcsQ0FBQztBQUM3SCxJQUFJLGNBQWMsR0FBRyxxSEFBcUgsQ0FBQztBQUMzSSxJQUFJLHFCQUFxQixHQUFHLHVKQUF1SixDQUFDO0FBQ3BMLElBQUksbUJBQW1CLEdBQUcsK05BQStOLENBQUM7QUFDMVAsSUFBSSx5QkFBeUIsR0FBRyxtTEFBbUwsQ0FBQztBQUNwTixJQUFJLGdCQUFnQixHQUFHLDhFQUE4RSxDQUFDO0FBQ3RHLElBQUksdUJBQXVCLEdBQUcsOGJBQThiLENBQUM7QUFDN2QsSUFBSSw4QkFBOEIsR0FBRyxzY0FBc2MsQ0FBQztBQUM1ZSxJQUFJLFlBQVksR0FBRyw0RUFBNEUsQ0FBQztBQUNoRyxJQUFJLE9BQU8sR0FBRyw0S0FBNEssQ0FBQztBQUMzTCxJQUFJLFlBQVksR0FBRywrTUFBK00sQ0FBQztBQUNuTyxJQUFJLG1CQUFtQixHQUFHLHFSQUFxUixDQUFDO0FBQ2hULElBQUksWUFBWSxHQUFHLDBRQUEwUSxDQUFDO0FBQzlSLElBQUksbUJBQW1CLEdBQUcsb1dBQW9XLENBQUM7QUFDL1gsSUFBSSxjQUFjLEdBQUcsa1JBQWtSLENBQUM7QUFDeFMsSUFBSSxXQUFXLEdBQUcsa1NBQWtTLENBQUM7QUFDclQsSUFBSSxrQkFBa0IsR0FBRywyWUFBMlksQ0FBQztBQUNyYSxJQUFJLGlCQUFpQixHQUFHLCtOQUErTixDQUFDO0FBQ3hQLElBQUksd0JBQXdCLEdBQUcscVNBQXFTLENBQUM7QUFDclUsSUFBSSxlQUFlLEdBQUcsdWxCQUF1bEIsQ0FBQztBQUM5bUIsSUFBSSxzQkFBc0IsR0FBRyw0cEJBQTRwQixDQUFDO0FBQzFyQixJQUFJLGFBQWEsR0FBRyx3WUFBd1ksQ0FBQztBQUM3WixJQUFJLG9CQUFvQixHQUFHLGlmQUFpZixDQUFDO0FBQzdnQixJQUFJLFlBQVksR0FBRyxvTkFBb04sQ0FBQztBQUN4TyxJQUFJLG1CQUFtQixHQUFHLGdTQUFnUyxDQUFDO0FBQzNULElBQUksUUFBUSxHQUFHLHlEQUF5RCxDQUFDO0FBQ3pFLElBQUksV0FBVyxHQUFHLDZJQUE2SSxDQUFDO0FBQ2hLLElBQUksWUFBWSxHQUFHLHVFQUF1RSxDQUFDO0FBQzNGLElBQUksMEJBQTBCLEdBQUcsMk1BQTJNLENBQUM7QUFDN08sSUFBSSxrQkFBa0IsR0FBRywySUFBMkksQ0FBQztBQUNySyxJQUFJLGNBQWMsR0FBRyxxSEFBcUgsQ0FBQztBQUMzSSxJQUFJLHFCQUFxQixHQUFHLDhMQUE4TCxDQUFDO0FBQzNOLElBQUksZ0JBQWdCLEdBQUcsNFBBQTRQLENBQUM7QUFDcFIsSUFBSSx1QkFBdUIsR0FBRyxrWkFBa1osQ0FBQztBQUNqYixJQUFJLGVBQWUsR0FBRyx1UEFBdVAsQ0FBQztBQUM5USxJQUFJLHNCQUFzQixHQUFHLGdRQUFnUSxDQUFDO0FBQzlSLElBQUksZUFBZSxHQUFHLDJJQUEySSxDQUFDO0FBQ2xLLElBQUksaUJBQWlCLEdBQUcseUVBQXlFLENBQUM7QUFDbEcsSUFBSSx1QkFBdUIsR0FBRyx3SkFBd0osQ0FBQztBQUN2TCxJQUFJLDhCQUE4QixHQUFHLHFQQUFxUCxDQUFDO0FBQzNSLElBQUksWUFBWSxHQUFHLGlFQUFpRSxDQUFDO0FBQ3JGLElBQUksZ0JBQWdCLEdBQUcsdUZBQXVGLENBQUM7QUFDL0csSUFBSSxzQkFBc0IsR0FBRyw4RUFBOEUsQ0FBQztBQUM1RyxJQUFJLDZCQUE2QixHQUFHLGtKQUFrSixDQUFDO0FBQ3ZMLElBQUksbUJBQW1CLEdBQUcsMktBQTJLLENBQUM7QUFDdE0sSUFBSSwwQkFBMEIsR0FBRyxxS0FBcUssQ0FBQztBQUN2TSxJQUFJLHVCQUF1QixHQUFHLHNHQUFzRyxDQUFDO0FBQ3JJLElBQUksdUJBQXVCLEdBQUcsOEdBQThHLENBQUM7QUFDN0ksSUFBSSxpQkFBaUIsR0FBRyxzSUFBc0ksQ0FBQztBQUMvSixJQUFJLHVCQUF1QixHQUFHLDZIQUE2SCxDQUFDO0FBQzVKLElBQUksOEJBQThCLEdBQUcseU9BQXlPLENBQUM7QUFDL1EsSUFBSSx3QkFBd0IsR0FBRywrSUFBK0ksQ0FBQztBQUMvSyxJQUFJLHdCQUF3QixHQUFHLDRIQUE0SCxDQUFDO0FBQzVKLElBQUksOEJBQThCLEdBQUcsK1JBQStSLENBQUM7QUFDclUsSUFBSSxxQ0FBcUMsR0FBRyxnWEFBZ1gsQ0FBQztBQUM3WixJQUFJLCtCQUErQixHQUFHLDRJQUE0SSxDQUFDO0FBQ25MLElBQUkseUJBQXlCLEdBQUcsbUxBQW1MLENBQUM7QUFDcE4sSUFBSSwrQkFBK0IsR0FBRyx1VkFBdVYsQ0FBQztBQUM5WCxJQUFJLHNDQUFzQyxHQUFHLDRiQUE0YixDQUFDO0FBQzFlLElBQUksZ0NBQWdDLEdBQUcsMExBQTBMLENBQUM7QUFDbE8sSUFBSSxlQUFlLEdBQUcsc0hBQXNILENBQUM7QUFDN0ksSUFBSSxvQkFBb0IsR0FBRyxpS0FBaUssQ0FBQztBQUM3TCxJQUFJLG1CQUFtQixHQUFHLG9NQUFvTSxDQUFDO0FBQy9OLElBQUkscUJBQXFCLEdBQUcsNFFBQTRRLENBQUM7QUFDelMsSUFBSSxTQUFTLEdBQUcsbW1CQUFtbUIsQ0FBQztBQUNwbkIsSUFBSSxZQUFZLEdBQUcsMm5CQUEybkIsQ0FBQztBQUMvb0IsSUFBSSxVQUFVLEdBQUcsNFVBQTRVLENBQUM7QUFDOVYsSUFBSSxpQkFBaUIsR0FBRywrOEJBQSs4QixDQUFDO0FBQ3grQixJQUFJLGNBQWMsR0FBRywyUkFBMlIsQ0FBQztBQUNqVCxJQUFJLFlBQVksR0FBRyxnTkFBZ04sQ0FBQztBQUNwTyxJQUFJLGNBQWMsR0FBRyxxUUFBcVEsQ0FBQztBQUMzUixJQUFJLFlBQVksR0FBRyxpTkFBaU4sQ0FBQztBQUNyTyxJQUFJLGFBQWEsR0FBRyw0VUFBNFUsQ0FBQztBQUNqVyxJQUFJLFlBQVksR0FBRyx1RUFBdUUsQ0FBQztBQUMzRixJQUFJLG9CQUFvQixHQUFHLHdIQUF3SCxDQUFDO0FBQ3BKLElBQUksb0JBQW9CLEdBQUcseUhBQXlILENBQUM7QUFDckosSUFBSSxxQkFBcUIsR0FBRyxzSEFBc0gsQ0FBQztBQUNuSixJQUFJLGtCQUFrQixHQUFHLHlIQUF5SCxDQUFDO0FBQ25KLElBQUksY0FBYyxHQUFHLDREQUE0RCxDQUFDO0FBQ2xGLElBQUksaUJBQWlCLEdBQUcsMEpBQTBKLENBQUM7QUFDbkwsSUFBSSx3QkFBd0IsR0FBRywyS0FBMkssQ0FBQztBQUMzTSxJQUFJLG9CQUFvQixHQUFHLDhIQUE4SCxDQUFDO0FBQzFKLElBQUksMkJBQTJCLEdBQUcsa01BQWtNLENBQUM7QUFDck8sSUFBSSxjQUFjLEdBQUcsK0RBQStELENBQUM7QUFDckYsSUFBSSxpQkFBaUIsR0FBRyxnS0FBZ0ssQ0FBQztBQUN6TCxJQUFJLHdCQUF3QixHQUFHLCtLQUErSyxDQUFDO0FBQy9NLElBQUksb0JBQW9CLEdBQUcsb0lBQW9JLENBQUM7QUFDaEssSUFBSSwyQkFBMkIsR0FBRyx3TUFBd00sQ0FBQztBQUMzTyxJQUFJLGVBQWUsR0FBRyw2REFBNkQsQ0FBQztBQUNwRixJQUFJLGtCQUFrQixHQUFHLHlKQUF5SixDQUFDO0FBQ25MLElBQUkseUJBQXlCLEdBQUcsNEtBQTRLLENBQUM7QUFDN00sSUFBSSxxQkFBcUIsR0FBRywrSEFBK0gsQ0FBQztBQUM1SixJQUFJLDRCQUE0QixHQUFHLHNNQUFzTSxDQUFDO0FBQzFPLElBQUksb0JBQW9CLEdBQUcsOEtBQThLLENBQUM7QUFDMU0sSUFBSSxvQkFBb0IsR0FBRywrS0FBK0ssQ0FBQztBQUMzTSxJQUFJLHFCQUFxQixHQUFHLGlMQUFpTCxDQUFDO0FBQzlNLElBQUksa0JBQWtCLEdBQUcsa0xBQWtMLENBQUM7QUFDNU0sSUFBSSxZQUFZLEdBQUcsOERBQThELENBQUM7QUFDbEYsSUFBSSxlQUFlLEdBQUcsZ0tBQWdLLENBQUM7QUFDdkwsSUFBSSxzQkFBc0IsR0FBRyxnTEFBZ0wsQ0FBQztBQUM5TSxJQUFJLGtCQUFrQixHQUFHLG1JQUFtSSxDQUFDO0FBQzdKLElBQUkseUJBQXlCLEdBQUcsdU1BQXVNLENBQUM7QUFDeE8sSUFBSSxXQUFXLEdBQUcsK3lCQUEreUIsQ0FBQztBQUNsMEIsSUFBSSxjQUFjLEdBQUcsK2hCQUEraEIsQ0FBQztBQUNyakIsSUFBSSxZQUFZLEdBQUcsa1JBQWtSLENBQUM7QUFDdFMsSUFBSSxXQUFXLEdBQUcsOFJBQThSLENBQUM7QUFDalQsSUFBSSxPQUFPLEdBQUcseUpBQXlKLENBQUM7QUFDeEssSUFBSSxlQUFlLEdBQUcsa0RBQWtELENBQUM7QUFDekUsSUFBSSxzQkFBc0IsR0FBRyw4RkFBOEYsQ0FBQztBQUM1SCxJQUFJLFNBQVMsR0FBRyx5S0FBeUssQ0FBQztBQUMxTCxJQUFJLFFBQVEsR0FBRywwZEFBMGQsQ0FBQztBQUMxZSxJQUFJLFdBQVcsR0FBRyx3NUJBQXc1QixDQUFDO0FBQzM2QixJQUFJLFNBQVMsR0FBRyw4RUFBOEUsQ0FBQztBQUMvRixJQUFJLFlBQVksR0FBRyxzS0FBc0ssQ0FBQztBQUMxTCxJQUFJLG1CQUFtQixHQUFHLG1MQUFtTCxDQUFDO0FBQzlNLElBQUksZUFBZSxHQUFHLHVSQUF1UixDQUFDO0FBQzlTLElBQUksb0JBQW9CLEdBQUcscVNBQXFTLENBQUM7QUFDalUsSUFBSSxlQUFlLEdBQUcsZ1VBQWdVLENBQUM7QUFDdlYsSUFBSSxhQUFhLEdBQUcsNkNBQTZDLENBQUM7QUFDbEUsSUFBSSxpQkFBaUIsR0FBRyxxSEFBcUgsQ0FBQztBQUM5SSxJQUFJLGVBQWUsR0FBRyxzRUFBc0UsQ0FBQztBQUM3RixJQUFJLGlCQUFpQixHQUFHLHdHQUF3RyxDQUFDO0FBQ2pJLElBQUksd0JBQXdCLEdBQUcsMlBBQTJQLENBQUM7QUFDM1IsSUFBSSxtQkFBbUIsR0FBRywrWkFBK1osQ0FBQztBQUMxYixJQUFJLGdCQUFnQixHQUFHLGtKQUFrSixDQUFDO0FBQzFLLElBQUksZUFBZSxHQUFHLDROQUE0TixDQUFDO0FBQ25QLElBQUksZUFBZSxHQUFHLGlOQUFpTixDQUFDO0FBQ3hPLElBQUksZUFBZSxHQUFHLHFQQUFxUCxDQUFDO0FBQzVRLElBQUksZUFBZSxHQUFHLHNPQUFzTyxDQUFDO0FBQzdQLElBQUksZUFBZSxHQUFHLDJRQUEyUSxDQUFDO0FBQ2xTLElBQUksZUFBZSxHQUFHLDhQQUE4UCxDQUFDO0FBQ3JSLElBQUksZUFBZSxHQUFHLDZSQUE2UixDQUFDO0FBQ3BULElBQUksZUFBZSxHQUFHLDRRQUE0USxDQUFDO0FBQ25TLElBQUksY0FBYyxHQUFHLHdGQUF3RixDQUFDO0FBQzlHLElBQUksY0FBYyxHQUFHLHVqQkFBdWpCLENBQUM7QUFDN2tCLElBQUksT0FBTyxHQUFHLDhKQUE4SixDQUFDO0FBQzdLLElBQUksY0FBYyxHQUFHLDBQQUEwUCxDQUFDO0FBQ2hSLElBQUkscUJBQXFCLEdBQUcsaVNBQWlTLENBQUM7QUFDOVQsSUFBSSxZQUFZLEdBQUcsaU1BQWlNLENBQUM7QUFDck4sSUFBSSxtQkFBbUIsR0FBRyxpVUFBaVUsQ0FBQztBQUM1VixJQUFJLDBCQUEwQixHQUFHLHNWQUFzVixDQUFDO0FBQ3hYLElBQUksaUJBQWlCLEdBQUcsK05BQStOLENBQUM7QUFDeFAsSUFBSSx3QkFBd0IsR0FBRyw2UEFBNlAsQ0FBQztBQUM3UixJQUFJLHFCQUFxQixHQUFHLDJOQUEyTixDQUFDO0FBQ3hQLElBQUksNEJBQTRCLEdBQUcsd1BBQXdQLENBQUM7QUFDNVIsSUFBSSxxQkFBcUIsR0FBRyw4TkFBOE4sQ0FBQztBQUMzUCxJQUFJLDRCQUE0QixHQUFHLHVQQUF1UCxDQUFDO0FBQzNSLElBQUksc0JBQXNCLEdBQUcsMk5BQTJOLENBQUM7QUFDelAsSUFBSSw2QkFBNkIsR0FBRyx1UUFBdVEsQ0FBQztBQUM1UyxJQUFJLG1CQUFtQixHQUFHLGdPQUFnTyxDQUFDO0FBQzNQLElBQUksMEJBQTBCLEdBQUcsdVBBQXVQLENBQUM7QUFDelIsSUFBSSxpQkFBaUIsR0FBRyxpUEFBaVAsQ0FBQztBQUMxUSxJQUFJLHlCQUF5QixHQUFHLHNUQUFzVCxDQUFDO0FBQ3ZWLElBQUksZ0NBQWdDLEdBQUcscVhBQXFYLENBQUM7QUFDN1osSUFBSSx3QkFBd0IsR0FBRywyUUFBMlEsQ0FBQztBQUMzUyxJQUFJLGlCQUFpQixHQUFHLDhZQUE4WSxDQUFDO0FBQ3ZhLElBQUksd0JBQXdCLEdBQUcsbWZBQW1mLENBQUM7QUFDbmhCLElBQUksZ0JBQWdCLEdBQUcsbWJBQW1iLENBQUM7QUFDM2MsSUFBSSx1QkFBdUIsR0FBRyx5Y0FBeWMsQ0FBQztBQUN4ZSxJQUFJLGdCQUFnQixHQUFHLHdYQUF3WCxDQUFDO0FBQ2haLElBQUksdUJBQXVCLEdBQUcsa1hBQWtYLENBQUM7QUFDalosSUFBSSxnQkFBZ0IsR0FBRyw0UEFBNFAsQ0FBQztBQUNwUixJQUFJLHVCQUF1QixHQUFHLG9TQUFvUyxDQUFDO0FBQ25VLElBQUksZ0JBQWdCLEdBQUcsbVdBQW1XLENBQUM7QUFDM1gsSUFBSSx1QkFBdUIsR0FBRyw0WEFBNFgsQ0FBQztBQUMzWixJQUFJLGlCQUFpQixHQUFHLGdPQUFnTyxDQUFDO0FBQ3pQLElBQUksd0JBQXdCLEdBQUcsd1BBQXdQLENBQUM7QUFDeFIsSUFBSSxvQkFBb0IsR0FBRyxvUUFBb1EsQ0FBQztBQUNoUyxJQUFJLDJCQUEyQixHQUFHLDJTQUEyUyxDQUFDO0FBQzlVLElBQUksZUFBZSxHQUFHLHdSQUF3UixDQUFDO0FBQy9TLElBQUksc0JBQXNCLEdBQUcsK1RBQStULENBQUM7QUFDN1YsSUFBSSxtQkFBbUIsR0FBRyx5TkFBeU4sQ0FBQztBQUNwUCxJQUFJLGdCQUFnQixHQUFHLGdPQUFnTyxDQUFDO0FBQ3hQLElBQUksd0JBQXdCLEdBQUcsaVJBQWlSLENBQUM7QUFDalQsSUFBSSwrQkFBK0IsR0FBRyx5U0FBeVMsQ0FBQztBQUNoVixJQUFJLHVCQUF1QixHQUFHLHVQQUF1UCxDQUFDO0FBQ3RSLElBQUksZ0JBQWdCLEdBQUcsME9BQTBPLENBQUM7QUFDbFEsSUFBSSx1QkFBdUIsR0FBRyw4UUFBOFEsQ0FBQztBQUM3UyxJQUFJLGlCQUFpQixHQUFHLDRUQUE0VCxDQUFDO0FBQ3JWLElBQUksd0JBQXdCLEdBQUcsMFZBQTBWLENBQUM7QUFDMVgsSUFBSSxrQkFBa0IsR0FBRyx5VkFBeVYsQ0FBQztBQUNuWCxJQUFJLHlCQUF5QixHQUFHLGtYQUFrWCxDQUFDO0FBQ25aLElBQUksa0JBQWtCLEdBQUcsMGdCQUEwZ0IsQ0FBQztBQUNwaUIsSUFBSSx5QkFBeUIsR0FBRyw4aEJBQThoQixDQUFDO0FBQy9qQixJQUFJLGdCQUFnQixHQUFHLDBPQUEwTyxDQUFDO0FBQ2xRLElBQUksd0JBQXdCLEdBQUcsOFJBQThSLENBQUM7QUFDOVQsSUFBSSwrQkFBK0IsR0FBRyx3VUFBd1UsQ0FBQztBQUMvVyxJQUFJLG1CQUFtQixHQUFHLCtXQUErVyxDQUFDO0FBQzFZLElBQUksMEJBQTBCLEdBQUcsOFlBQThZLENBQUM7QUFDaGIsSUFBSSx1QkFBdUIsR0FBRyxvUUFBb1EsQ0FBQztBQUNuUyxJQUFJLG9CQUFvQixHQUFHLHFWQUFxVixDQUFDO0FBQ2pYLElBQUksMkJBQTJCLEdBQUcsMlFBQTJRLENBQUM7QUFDOVMsSUFBSSxzQkFBc0IsR0FBRyxrb0JBQWtvQixDQUFDO0FBQ2hxQixJQUFJLDZCQUE2QixHQUFHLHdyQkFBd3JCLENBQUM7QUFDN3RCLElBQUksU0FBUyxHQUFHLDJzQ0FBMnNDLENBQUM7QUFDNXRDLElBQUksUUFBUSxHQUFHLDRIQUE0SCxDQUFDO0FBQzVJLElBQUksYUFBYSxHQUFHLDZLQUE2SyxDQUFDO0FBQ2xNLElBQUksb0JBQW9CLEdBQUcseVBBQXlQLENBQUM7QUFDclIsSUFBSSxhQUFhLEdBQUcsNFJBQTRSLENBQUM7QUFDalQsSUFBSSxvQkFBb0IsR0FBRyxzWUFBc1ksQ0FBQztBQUNsYSxJQUFJLGVBQWUsR0FBRyxnU0FBZ1MsQ0FBQztBQUN2VCxJQUFJLFdBQVcsR0FBRyxvU0FBb1MsQ0FBQztBQUN2VCxJQUFJLFlBQVksR0FBRyxzWEFBc1gsQ0FBQztBQUMxWSxJQUFJLFVBQVUsR0FBRyw0U0FBNFMsQ0FBQztBQUM5VCxJQUFJLFdBQVcsR0FBRyxxVEFBcVQsQ0FBQztBQUN4VSxJQUFJLGVBQWUsR0FBRyxvTUFBb00sQ0FBQztBQUMzTixJQUFJLGFBQWEsR0FBRywrUkFBK1IsQ0FBQztBQUNwVCxJQUFJLGlCQUFpQixHQUFHLDRIQUE0SCxDQUFDO0FBQ3JKLElBQUksd0JBQXdCLEdBQUcsNExBQTRMLENBQUM7QUFDNU4sSUFBSSxrQkFBa0IsR0FBRywwSEFBMEgsQ0FBQztBQUNwSixJQUFJLHlCQUF5QixHQUFHLHdMQUF3TCxDQUFDO0FBQ3pOLElBQUksZ0JBQWdCLEdBQUcseUhBQXlILENBQUM7QUFDakosSUFBSSx1QkFBdUIsR0FBRyw0TEFBNEwsQ0FBQztBQUMzTixJQUFJLGdCQUFnQixHQUFHLCtIQUErSCxDQUFDO0FBQ3ZKLElBQUksdUJBQXVCLEdBQUcsNExBQTRMLENBQUM7QUFDM04sSUFBSSxnQkFBZ0IsR0FBRywyR0FBMkcsQ0FBQztBQUNuSSxJQUFJLHVCQUF1QixHQUFHLHlLQUF5SyxDQUFDO0FBQ3hNLElBQUksZUFBZSxHQUFHLDZIQUE2SCxDQUFDO0FBQ3BKLElBQUksc0JBQXNCLEdBQUcscU1BQXFNLENBQUM7QUFDbk8sSUFBSSxpQkFBaUIsR0FBRyw2SEFBNkgsQ0FBQztBQUN0SixJQUFJLHdCQUF3QixHQUFHLHlMQUF5TCxDQUFDO0FBQ3pOLElBQUksZUFBZSxHQUFHLG9HQUFvRyxDQUFDO0FBQzNILElBQUksc0JBQXNCLEdBQUcsa0tBQWtLLENBQUM7QUFDaE0sSUFBSSxlQUFlLEdBQUcsNkhBQTZILENBQUM7QUFDcEosSUFBSSxzQkFBc0IsR0FBRyw0TEFBNEwsQ0FBQztBQUMxTixJQUFJLGlCQUFpQixHQUFHLDBHQUEwRyxDQUFDO0FBQ25JLElBQUksd0JBQXdCLEdBQUcsMktBQTJLLENBQUM7QUFDM00sSUFBSSxrQkFBa0IsR0FBRyxvR0FBb0csQ0FBQztBQUM5SCxJQUFJLHlCQUF5QixHQUFHLCtLQUErSyxDQUFDO0FBQ2hOLElBQUksZUFBZSxHQUFHLCtIQUErSCxDQUFDO0FBQ3RKLElBQUksc0JBQXNCLEdBQUcsNk1BQTZNLENBQUM7QUFDM08sSUFBSSxRQUFRLEdBQUcsK0dBQStHLENBQUM7QUFDL0gsSUFBSSxXQUFXLEdBQUcsa05BQWtOLENBQUM7QUFDck8sSUFBSSxtQkFBbUIsR0FBRyxrUUFBa1EsQ0FBQztBQUM3UixJQUFJLDBCQUEwQixHQUFHLDZSQUE2UixDQUFDO0FBQy9ULElBQUksa0JBQWtCLEdBQUcsNkxBQTZMLENBQUM7QUFDdk4sSUFBSSxjQUFjLEdBQUcsME1BQTBNLENBQUM7QUFDaE8sSUFBSSxzQkFBc0IsR0FBRywyUkFBMlIsQ0FBQztBQUN6VCxJQUFJLDZCQUE2QixHQUFHLGdYQUFnWCxDQUFDO0FBQ3JaLElBQUkscUJBQXFCLEdBQUcsc1NBQXNTLENBQUM7QUFDblUsSUFBSSxlQUFlLEdBQUcsK1JBQStSLENBQUM7QUFDdFQsSUFBSSxzQkFBc0IsR0FBRyxzVUFBc1UsQ0FBQztBQUNwVyxJQUFJLGVBQWUsR0FBRyw4SkFBOEosQ0FBQztBQUNyTCxJQUFJLHNCQUFzQixHQUFHLHdQQUF3UCxDQUFDO0FBQ3RSLElBQUksZUFBZSxHQUFHLGtQQUFrUCxDQUFDO0FBQ3pRLElBQUksYUFBYSxHQUFHLDZHQUE2RyxDQUFDO0FBQ2xJLElBQUksZ0JBQWdCLEdBQUcsaVRBQWlULENBQUM7QUFDelUsSUFBSSx1QkFBdUIsR0FBRywwdkJBQTB2QixDQUFDO0FBQ3p4QixJQUFJLFFBQVEsR0FBRywwSkFBMEosQ0FBQztBQUMxSyxJQUFJLGFBQWEsR0FBRyw2S0FBNkssQ0FBQztBQUNsTSxJQUFJLGNBQWMsR0FBRyw4YUFBOGEsQ0FBQztBQUNwYyxJQUFJLGFBQWEsR0FBRyxpTkFBaU4sQ0FBQztBQUN0TyxJQUFJLG9CQUFvQixHQUFHLHdXQUF3VyxDQUFDO0FBQ3BZLElBQUksY0FBYyxHQUFHLHNPQUFzTyxDQUFDO0FBQzVQLElBQUksZ0JBQWdCLEdBQUcsc0xBQXNMLENBQUM7QUFDOU0sSUFBSSx1QkFBdUIsR0FBRyxpWUFBaVksQ0FBQztBQUNoYSxJQUFJLFlBQVksR0FBRyxnZEFBZ2QsQ0FBQztBQUNwZSxJQUFJLG1CQUFtQixHQUFHLHdoQkFBd2hCLENBQUM7QUFDbmpCLElBQUksa0JBQWtCLEdBQUcsNFhBQTRYLENBQUM7QUFDdFosSUFBSSxlQUFlLEdBQUcsd1JBQXdSLENBQUM7QUFDL1MsSUFBSSxhQUFhLEdBQUcsME5BQTBOLENBQUM7QUFDL08sSUFBSSxvQkFBb0IsR0FBRyxxV0FBcVcsQ0FBQztBQUNqWSxJQUFJLGdCQUFnQixHQUFHLDRyQkFBNHJCLENBQUM7QUFDcHRCLElBQUksZUFBZSxHQUFHLHdZQUF3WSxDQUFDO0FBQy9aLElBQUksY0FBYyxHQUFHLHNlQUFzZSxDQUFDO0FBQzVmLElBQUkscUJBQXFCLEdBQUcsdWxCQUF1bEIsQ0FBQztBQUNwbkIsSUFBSSxZQUFZLEdBQUcsb25CQUFvbkIsQ0FBQztBQUN4b0IsSUFBSSxtQkFBbUIsR0FBRyxrdEJBQWt0QixDQUFDO0FBQzd1QixJQUFJLFlBQVksR0FBRyxzUkFBc1IsQ0FBQztBQUMxUyxJQUFJLGNBQWMsR0FBRyxzTEFBc0wsQ0FBQztBQUM1TSxJQUFJLHFCQUFxQixHQUFHLGdZQUFnWSxDQUFDO0FBQzdaLElBQUksU0FBUyxHQUFHLGlwQkFBaXBCLENBQUM7QUFDbHFCLElBQUksWUFBWSxHQUFHLGtIQUFrSCxDQUFDO0FBQ3RJLElBQUksV0FBVyxHQUFHLDJPQUEyTyxDQUFDO0FBQzlQLElBQUksWUFBWSxHQUFHLHNJQUFzSSxDQUFDO0FBQzFKLElBQUksYUFBYSxHQUFHLHNRQUFzUSxDQUFDO0FBQzNSLElBQUksZ0JBQWdCLEdBQUcsbVpBQW1aLENBQUM7QUFDM2EsSUFBSSxlQUFlLEdBQUcsaURBQWlELENBQUM7QUFDeEUsSUFBSSxZQUFZLEdBQUcsc0lBQXNJLENBQUM7QUFDMUosSUFBSSxrQkFBa0IsR0FBRyxvSUFBb0ksQ0FBQztBQUM5SixJQUFJLHlCQUF5QixHQUFHLG9LQUFvSyxDQUFDO0FBQ3JNLElBQUksV0FBVyxHQUFHLDJkQUEyZCxDQUFDO0FBQzllLElBQUksZUFBZSxHQUFHLHdJQUF3SSxDQUFDO0FBQy9KLElBQUksc0JBQXNCLEdBQUcsdUtBQXVLLENBQUM7QUFDck0sSUFBSSxlQUFlLEdBQUcsb0lBQW9JLENBQUM7QUFDM0osSUFBSSxzQkFBc0IsR0FBRywwS0FBMEssQ0FBQztBQUN4TSxJQUFJLGtCQUFrQixHQUFHLGdRQUFnUSxDQUFDO0FBQzFSLElBQUkscUJBQXFCLEdBQUcsd1NBQXdTLENBQUM7QUFDclUsSUFBSSxhQUFhLEdBQUcsK1hBQStYLENBQUM7QUFDcFosSUFBSSxXQUFXLEdBQUcsd0dBQXdHLENBQUM7QUFDM0gsSUFBSSxnQkFBZ0IsR0FBRyxnTUFBZ00sQ0FBQztBQUN4TixJQUFJLFVBQVUsR0FBRyx1MENBQXUwQyxDQUFDO0FBQ3oxQyxJQUFJLFNBQVMsR0FBRyxvSEFBb0gsQ0FBQztBQUNySSxJQUFJLGNBQWMsR0FBRyxtTEFBbUwsQ0FBQztBQUN6TSxJQUFJLFlBQVksR0FBRyw0T0FBNE8sQ0FBQztBQUNoUSxJQUFJLG1CQUFtQixHQUFHLG1TQUFtUyxDQUFDO0FBQzlULElBQUksZ0JBQWdCLEdBQUcsa0tBQWtLLENBQUM7QUFDMUwsSUFBSSxhQUFhLEdBQUcsNExBQTRMLENBQUM7QUFDak4sSUFBSSxvQkFBb0IsR0FBRywrT0FBK08sQ0FBQztBQUMzUSxJQUFJLFNBQVMsR0FBRyxxRUFBcUUsQ0FBQztBQUN0RixJQUFJLE1BQU0sR0FBRyw2NEJBQTY0QixDQUFDO0FBQzM1QixJQUFJLFNBQVMsR0FBRywyK0JBQTIrQixDQUFDO0FBQzUvQixJQUFJLGVBQWUsR0FBRywwa0NBQTBrQyxDQUFDO0FBQ2ptQyxJQUFJLHNCQUFzQixHQUFHLDBrQ0FBMGtDLENBQUM7QUFDeG1DLElBQUksU0FBUyxHQUFHLDI5QkFBMjlCLENBQUM7QUFDNStCLElBQUksZ0JBQWdCLEdBQUcsNjFDQUE2MUMsQ0FBQztBQUNyM0MsSUFBSSxhQUFhLEdBQUcsbXRDQUFtdEMsQ0FBQztBQUN4dUMsSUFBSSxhQUFhLEdBQUcsdTNCQUF1M0IsQ0FBQztBQUM1NEIsSUFBSSxvQkFBb0IsR0FBRyxnbENBQWdsQyxDQUFDO0FBQzVtQyxJQUFJLFVBQVUsR0FBRyxzOEJBQXM4QixDQUFDO0FBQ3g5QixJQUFJLGlCQUFpQixHQUFHLCtwQ0FBK3BDLENBQUM7QUFDeHJDLElBQUksY0FBYyxHQUFHLG1yQkFBbXJCLENBQUM7QUFDenNCLElBQUkscUJBQXFCLEdBQUcscXhDQUFxeEMsQ0FBQztBQUNsekMsSUFBSSxPQUFPLEdBQUcsNm5EQUE2bkQsQ0FBQztBQUM1b0QsSUFBSSxVQUFVLEdBQUcsOEhBQThILENBQUM7QUFDaEosSUFBSSxjQUFjLEdBQUcseUtBQXlLLENBQUM7QUFDL0wsSUFBSSxxQkFBcUIsR0FBRyx5TEFBeUwsQ0FBQztBQUN0TixJQUFJLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztBQUN6QyxJQUFJLFFBQVEsR0FBRyxpREFBaUQsQ0FBQztBQUNqRSxJQUFJLFdBQVcsR0FBRyw0R0FBNEcsQ0FBQztBQUMvSCxJQUFJLGtCQUFrQixHQUFHLDBIQUEwSCxDQUFDO0FBQ3BKLElBQUksY0FBYyxHQUFHLDZHQUE2RyxDQUFDO0FBQ25JLElBQUkscUJBQXFCLEdBQUcsZ0xBQWdMLENBQUM7QUFDN00sSUFBSSxVQUFVLEdBQUcsK0lBQStJLENBQUM7QUFDakssSUFBSSxpQkFBaUIsR0FBRyw4UUFBOFEsQ0FBQztBQUN2UyxJQUFJLHdCQUF3QixHQUFHLGdUQUFnVCxDQUFDO0FBQ2hWLElBQUksZUFBZSxHQUFHLDJMQUEyTCxDQUFDO0FBQ2xOLElBQUksc0JBQXNCLEdBQUcsb05BQW9OLENBQUM7QUFDbFAsSUFBSSxtQkFBbUIsR0FBRyxzTkFBc04sQ0FBQztBQUNqUCxJQUFJLDBCQUEwQixHQUFHLHNQQUFzUCxDQUFDO0FBQ3hSLElBQUksb0JBQW9CLEdBQUcsc05BQXNOLENBQUM7QUFDbFAsSUFBSSwyQkFBMkIsR0FBRyxvUEFBb1AsQ0FBQztBQUN2UixJQUFJLGtCQUFrQixHQUFHLHlMQUF5TCxDQUFDO0FBQ25OLElBQUkseUJBQXlCLEdBQUcseU5BQXlOLENBQUM7QUFDMVAsSUFBSSxlQUFlLEdBQUcsbU1BQW1NLENBQUM7QUFDMU4sSUFBSSxzQkFBc0IsR0FBRyw0T0FBNE8sQ0FBQztBQUMxUSxJQUFJLGNBQWMsR0FBRyx1VUFBdVUsQ0FBQztBQUM3VixJQUFJLHFCQUFxQixHQUFHLDJXQUEyVyxDQUFDO0FBQ3hZLElBQUksYUFBYSxHQUFHLG9nQkFBb2dCLENBQUM7QUFDemhCLElBQUksb0JBQW9CLEdBQUcsNGZBQTRmLENBQUM7QUFDeGhCLElBQUksZUFBZSxHQUFHLG1MQUFtTCxDQUFDO0FBQzFNLElBQUksc0JBQXNCLEdBQUcsNk1BQTZNLENBQUM7QUFDM08sSUFBSSxlQUFlLEdBQUcsb0xBQW9MLENBQUM7QUFDM00sSUFBSSxzQkFBc0IsR0FBRyxvTkFBb04sQ0FBQztBQUNsUCxJQUFJLGtCQUFrQixHQUFHLGdMQUFnTCxDQUFDO0FBQzFNLElBQUkseUJBQXlCLEdBQUcsdU5BQXVOLENBQUM7QUFDeFAsSUFBSSxhQUFhLEdBQUcscU9BQXFPLENBQUM7QUFDMVAsSUFBSSxvQkFBb0IsR0FBRyxpVEFBaVQsQ0FBQztBQUM3VSxJQUFJLGlCQUFpQixHQUFHLGlMQUFpTCxDQUFDO0FBQzFNLElBQUksY0FBYyxHQUFHLGlMQUFpTCxDQUFDO0FBQ3ZNLElBQUkscUJBQXFCLEdBQUcsc05BQXNOLENBQUM7QUFDblAsSUFBSSxvQkFBb0IsR0FBRywrTEFBK0wsQ0FBQztBQUMzTixJQUFJLDJCQUEyQixHQUFHLGlPQUFpTyxDQUFDO0FBQ3BRLElBQUksa0JBQWtCLEdBQUcsMnBCQUEycEIsQ0FBQztBQUNyckIsSUFBSSx5QkFBeUIsR0FBRyxzdEJBQXN0QixDQUFDO0FBQ3Z2QixJQUFJLGVBQWUsR0FBRyxvT0FBb08sQ0FBQztBQUMzUCxJQUFJLHNCQUFzQixHQUFHLHNRQUFzUSxDQUFDO0FBQ3BTLElBQUksZ0JBQWdCLEdBQUcseVBBQXlQLENBQUM7QUFDalIsSUFBSSx1QkFBdUIsR0FBRywyUkFBMlIsQ0FBQztBQUMxVCxJQUFJLGdCQUFnQixHQUFHLCtiQUErYixDQUFDO0FBQ3ZkLElBQUksdUJBQXVCLEdBQUcsOGFBQThhLENBQUM7QUFDN2MsSUFBSSxjQUFjLEdBQUcsMExBQTBMLENBQUM7QUFDaE4sSUFBSSxzQkFBc0IsR0FBRyw4TUFBOE0sQ0FBQztBQUM1TyxJQUFJLDZCQUE2QixHQUFHLGdQQUFnUCxDQUFDO0FBQ3JSLElBQUkscUJBQXFCLEdBQUcsOE1BQThNLENBQUM7QUFDM08sSUFBSSxVQUFVLEdBQUcsOElBQThJLENBQUM7QUFDaEssSUFBSSxvQkFBb0IsR0FBRyw4REFBOEQsQ0FBQztBQUMxRixJQUFJLGtCQUFrQixHQUFHLDhEQUE4RCxDQUFDO0FBQ3hGLElBQUksVUFBVSxHQUFHLDhNQUE4TSxDQUFDO0FBQ2hPLElBQUksYUFBYSxHQUFHLHFRQUFxUSxDQUFDO0FBQzFSLElBQUksb0JBQW9CLEdBQUcsNGFBQTRhLENBQUM7QUFDeGMsSUFBSSxpQkFBaUIsR0FBRyxvUkFBb1IsQ0FBQztBQUM3UyxJQUFJLGNBQWMsR0FBRyxzU0FBc1MsQ0FBQztBQUM1VCxJQUFJLGNBQWMsR0FBRyx1aExBQXVoTCxDQUFDO0FBQzdpTCxJQUFJLGFBQWEsR0FBRyxrV0FBa1csQ0FBQztBQUN2WCxJQUFJLFVBQVUsR0FBRyx3TUFBd00sQ0FBQztBQUMxTixJQUFJLGNBQWMsR0FBRywwR0FBMEcsQ0FBQztBQUNoSSxJQUFJLGlCQUFpQixHQUFHLDBRQUEwUSxDQUFDO0FBQ25TLElBQUksd0JBQXdCLEdBQUcsbVRBQW1ULENBQUM7QUFDblYsSUFBSSxjQUFjLEdBQUcseUxBQXlMLENBQUM7QUFDL00sSUFBSSxxQkFBcUIsR0FBRyw4ekNBQTh6QyxDQUFDO0FBQzMxQyxJQUFJLDJCQUEyQixHQUFHLHNnQkFBc2dCLENBQUM7QUFDemlCLElBQUksa0NBQWtDLEdBQUcseWtCQUF5a0IsQ0FBQztBQUNubkIsSUFBSSxXQUFXLEdBQUcscVJBQXFSLENBQUM7QUFDeFMsSUFBSSxrQkFBa0IsR0FBRyxvYUFBb2EsQ0FBQztBQUM5YixJQUFJLFVBQVUsR0FBRyx1R0FBdUcsQ0FBQztBQUN6SCxJQUFJLGFBQWEsR0FBRyxpRkFBaUYsQ0FBQztBQUN0RyxJQUFJLGVBQWUsR0FBRyw0RUFBNEUsQ0FBQztBQUNuRyxJQUFJLGNBQWMsR0FBRyw0SEFBNEgsQ0FBQztBQUNsSixJQUFJLGFBQWEsR0FBRyxpZ0JBQWlnQixDQUFDO0FBQ3RoQixJQUFJLG1CQUFtQixHQUFHLHlLQUF5SyxDQUFDO0FBQ3BNLElBQUksZUFBZSxHQUFHLHdOQUF3TixDQUFDO0FBQy9PLElBQUksY0FBYyxHQUFHLHdKQUF3SixDQUFDO0FBQzlLLElBQUksbUJBQW1CLEdBQUcsaU1BQWlNLENBQUM7QUFDNU4sSUFBSSwwQkFBMEIsR0FBRyw0TkFBNE4sQ0FBQztBQUM5UCxJQUFJLGlCQUFpQixHQUFHLCtMQUErTCxDQUFDO0FBQ3hOLElBQUksd0JBQXdCLEdBQUcsNE9BQTRPLENBQUM7QUFDNVEsSUFBSSxpQkFBaUIsR0FBRyxtOEJBQW04QixDQUFDO0FBQzU5QixJQUFJLHdCQUF3QixHQUFHLGcvQkFBZy9CLENBQUM7QUFDaGhDLElBQUksa0JBQWtCLEdBQUcscVhBQXFYLENBQUM7QUFDL1ksSUFBSSx5QkFBeUIsR0FBRyxzYkFBc2IsQ0FBQztBQUN2ZCxJQUFJLGtCQUFrQixHQUFHLGtRQUFrUSxDQUFDO0FBQzVSLElBQUkseUJBQXlCLEdBQUcsK1RBQStULENBQUM7QUFDaFcsSUFBSSxpQkFBaUIsR0FBRywwU0FBMFMsQ0FBQztBQUNuVSxJQUFJLHdCQUF3QixHQUFHLCtVQUErVSxDQUFDO0FBQy9XLElBQUkscUJBQXFCLEdBQUcsb01BQW9NLENBQUM7QUFDak8sSUFBSSxzQkFBc0IsR0FBRywrTUFBK00sQ0FBQztBQUM3TyxJQUFJLDZCQUE2QixHQUFHLHNQQUFzUCxDQUFDO0FBQzNSLElBQUksV0FBVyxHQUFHLCtJQUErSSxDQUFDO0FBQ2xLLElBQUksY0FBYyxHQUFHLCtKQUErSixDQUFDO0FBQ3JMLElBQUksaUJBQWlCLEdBQUcsZ09BQWdPLENBQUM7QUFDelAsSUFBSSxvQkFBb0IsR0FBRyxnWUFBZ1ksQ0FBQztBQUM1WixJQUFJLDJCQUEyQixHQUFHLHNrQkFBc2tCLENBQUM7QUFDem1CLElBQUksU0FBUyxHQUFHLDBuQkFBMG5CLENBQUM7QUFDM29CLElBQUksY0FBYyxHQUFHLG9pQkFBb2lCLENBQUM7QUFDMWpCLElBQUkscUJBQXFCLEdBQUcsbXdCQUFtd0IsQ0FBQztBQUNoeUIsSUFBSSxjQUFjLEdBQUcsNHhCQUE0eEIsQ0FBQztBQUNsekIsSUFBSSxxQkFBcUIsR0FBRyxvbENBQW9sQyxDQUFDO0FBQ2puQyxJQUFJLGNBQWMsR0FBRyxtd0JBQW13QixDQUFDO0FBQ3p4QixJQUFJLHFCQUFxQixHQUFHLDYzQkFBNjNCLENBQUM7QUFDMTVCLElBQUksWUFBWSxHQUFHLG8yQ0FBbzJDLENBQUM7QUFDeDNDLElBQUksbUJBQW1CLEdBQUcsc2tEQUFza0QsQ0FBQztBQUNqbUQsSUFBSSxhQUFhLEdBQUcsNnpCQUE2ekIsQ0FBQztBQUNsMUIsSUFBSSxvQkFBb0IsR0FBRyxtZ0NBQW1nQyxDQUFDO0FBQy9oQyxJQUFJLGFBQWEsR0FBRyw0eUJBQTR5QixDQUFDO0FBQ2owQixJQUFJLG9CQUFvQixHQUFHLHVnQ0FBdWdDLENBQUM7QUFDbmlDLElBQUksY0FBYyxHQUFHLHF1QkFBcXVCLENBQUM7QUFDM3ZCLElBQUkscUJBQXFCLEdBQUcsNGhDQUE0aEMsQ0FBQztBQUN6akMsSUFBSSxZQUFZLEdBQUcsdXdCQUF1d0IsQ0FBQztBQUMzeEIsSUFBSSxtQkFBbUIsR0FBRyx3bUNBQXdtQyxDQUFDO0FBQ25vQyxJQUFJLGdCQUFnQixHQUFHLDQwQkFBNDBCLENBQUM7QUFDcDJCLElBQUksYUFBYSxHQUFHLDZ2QkFBNnZCLENBQUM7QUFDbHhCLElBQUksb0JBQW9CLEdBQUcsZ2pDQUFnakMsQ0FBQztBQUM1a0MsSUFBSSxnQkFBZ0IsR0FBRyxtMkJBQW0yQixDQUFDO0FBQzMzQixJQUFJLHVCQUF1QixHQUFHLHFvQ0FBcW9DLENBQUM7QUFDcHFDLElBQUksZUFBZSxHQUFHLCsxQkFBKzFCLENBQUM7QUFDdDNCLElBQUksc0JBQXNCLEdBQUcsMHBDQUEwcEMsQ0FBQztBQUN4ckMsSUFBSSxpQkFBaUIsR0FBRyxtbUJBQW1tQixDQUFDO0FBQzVuQixJQUFJLHdCQUF3QixHQUFHLDIxQkFBMjFCLENBQUM7QUFDMzNCLElBQUkscUJBQXFCLEdBQUcsNDdDQUE0N0MsQ0FBQztBQUN6OUMsSUFBSSxZQUFZLEdBQUcsb3RDQUFvdEMsQ0FBQztBQUN4dUMsSUFBSSxVQUFVLEdBQUcsa2dCQUFrZ0IsQ0FBQztBQUNwaEIsSUFBSSxPQUFPLEdBQUcsd2JBQXdiLENBQUM7QUFDdmMsSUFBSSxVQUFVLEdBQUcscWhCQUFxaEIsQ0FBQztBQUN2aUIsSUFBSSxhQUFhLEdBQUcsNE5BQTROLENBQUM7QUFDalAsSUFBSSxVQUFVLEdBQUcsd3BCQUF3cEIsQ0FBQztBQUMxcUIsSUFBSSxNQUFNLEdBQUcsZ3NDQUFnc0MsQ0FBQztBQUM5c0MsSUFBSSxXQUFXLEdBQUcsa1dBQWtXLENBQUM7QUFDclgsSUFBSSxXQUFXLEdBQUcsd1VBQXdVLENBQUM7QUFDM1YsSUFBSSxRQUFRLEdBQUcsZ3BCQUFncEIsQ0FBQztBQUNocUIsSUFBSSxXQUFXLEdBQUcsa01BQWtNLENBQUM7QUFDck4sSUFBSSxrQkFBa0IsR0FBRyxza0NBQXNrQyxDQUFDO0FBQ2htQyxJQUFJLGFBQWEsR0FBRywyRkFBMkYsQ0FBQztBQUNoSCxJQUFJLGtCQUFrQixHQUFHLG1QQUFtUCxDQUFDO0FBQzdRLElBQUkseUJBQXlCLEdBQUcscVFBQXFRLENBQUM7QUFDdFMsSUFBSSxrQkFBa0IsR0FBRyw2UkFBNlIsQ0FBQztBQUN2VCxJQUFJLHlCQUF5QixHQUFHLGlXQUFpVyxDQUFDO0FBQ2xZLElBQUksbUJBQW1CLEdBQUcsMllBQTJZLENBQUM7QUFDdGEsSUFBSSwwQkFBMEIsR0FBRyxnWkFBZ1osQ0FBQztBQUNsYixJQUFJLGtCQUFrQixHQUFHLCtMQUErTCxDQUFDO0FBQ3pOLElBQUkseUJBQXlCLEdBQUcsNEhBQTRILENBQUM7QUFDN0osSUFBSSxxQkFBcUIsR0FBRyw0SEFBNEgsQ0FBQztBQUN6SixJQUFJLDRCQUE0QixHQUFHLHlKQUF5SixDQUFDO0FBQzdMLElBQUksZ0JBQWdCLEdBQUcsMkxBQTJMLENBQUM7QUFDbk4sSUFBSSx1QkFBdUIsR0FBRyw2UEFBNlAsQ0FBQztBQUM1UixJQUFJLG9CQUFvQixHQUFHLGlIQUFpSCxDQUFDO0FBQzdJLElBQUksaUJBQWlCLEdBQUcsb0xBQW9MLENBQUM7QUFDN00sSUFBSSx3QkFBd0IsR0FBRyxpSkFBaUosQ0FBQztBQUNqTCxJQUFJLG9CQUFvQixHQUFHLG1iQUFtYixDQUFDO0FBQy9jLElBQUksMkJBQTJCLEdBQUcseWNBQXljLENBQUM7QUFDNWUsSUFBSSxtQkFBbUIsR0FBRywyS0FBMkssQ0FBQztBQUN0TSxJQUFJLDBCQUEwQixHQUFHLGtNQUFrTSxDQUFDO0FBQ3BPLElBQUksbUJBQW1CLEdBQUcsaVJBQWlSLENBQUM7QUFDNVMsSUFBSSwwQkFBMEIsR0FBRywrVUFBK1UsQ0FBQztBQUNqWCxJQUFJLGlCQUFpQixHQUFHLHNPQUFzTyxDQUFDO0FBQy9QLElBQUksd0JBQXdCLEdBQUcsd1BBQXdQLENBQUM7QUFDeFIsSUFBSSxtQkFBbUIsR0FBRyx1YUFBdWEsQ0FBQztBQUNsYyxJQUFJLDBCQUEwQixHQUFHLHVkQUF1ZCxDQUFDO0FBQ3pmLElBQUkscUJBQXFCLEdBQUcsMklBQTJJLENBQUM7QUFDeEssSUFBSSw0QkFBNEIsR0FBRyxvS0FBb0ssQ0FBQztBQUN4TSxJQUFJLGlCQUFpQixHQUFHLGdnQkFBZ2dCLENBQUM7QUFDemhCLElBQUksd0JBQXdCLEdBQUcsOGdCQUE4Z0IsQ0FBQztBQUM5aUIsSUFBSSxxQkFBcUIsR0FBRywrU0FBK1MsQ0FBQztBQUM1VSxJQUFJLHdCQUF3QixHQUFHLDBhQUEwYSxDQUFDO0FBQzFjLElBQUksK0JBQStCLEdBQUcsbWNBQW1jLENBQUM7QUFDMWUsSUFBSSw0QkFBNEIsR0FBRyxzU0FBc1MsQ0FBQztBQUMxVSxJQUFJLFVBQVUsR0FBRyxvVUFBb1UsQ0FBQztBQUN0VixJQUFJLE9BQU8sR0FBRyxpR0FBaUcsQ0FBQztBQUNoSCxJQUFJLFdBQVcsR0FBRyw4SUFBOEksQ0FBQztBQUNqSyxJQUFJLGdCQUFnQixHQUFHLGdHQUFnRyxDQUFDO0FBQ3hILElBQUksZUFBZSxHQUFHLGdHQUFnRyxDQUFDO0FBQ3ZILElBQUksYUFBYSxHQUFHLDBVQUEwVSxDQUFDO0FBQy9WLElBQUksYUFBYSxHQUFHLGdHQUFnRyxDQUFDO0FBQ3JILElBQUksYUFBYSxHQUFHLDRPQUE0TyxDQUFDO0FBQ2pRLElBQUksZ0JBQWdCLEdBQUcsK1NBQStTLENBQUM7QUFDdlUsSUFBSSxnQkFBZ0IsR0FBRyxvZUFBb2UsQ0FBQztBQUM1ZixJQUFJLHFCQUFxQixHQUFHLG1kQUFtZCxDQUFDO0FBQ2hmLElBQUksUUFBUSxHQUFHLHVHQUF1RyxDQUFDO0FBQ3ZILElBQUksZUFBZSxHQUFHLDJKQUEySixDQUFDO0FBQ2xMLElBQUksWUFBWSxHQUFHLHF0QkFBcXRCLENBQUM7QUFDenVCLElBQUksY0FBYyxHQUFHLCtpQkFBK2lCLENBQUM7QUFDcmtCLElBQUksT0FBTyxHQUFHLCtVQUErVSxDQUFDO0FBQzlWLElBQUksVUFBVSxHQUFHLDJZQUEyWSxDQUFDO0FBQzdaLElBQUksaUJBQWlCLEdBQUcsc2ZBQXNmLENBQUM7QUFDL2dCLElBQUksY0FBYyxHQUFHLHlaQUF5WixDQUFDO0FBQy9hLElBQUksV0FBVyxHQUFHLG9zQkFBb3NCLENBQUM7QUFDdnRCLElBQUksV0FBVyxHQUFHLCtLQUErSyxDQUFDO0FBQ2xNLElBQUksZUFBZSxHQUFHLHdJQUF3SSxDQUFDO0FBQy9KLElBQUksTUFBTSxHQUFHLHNHQUFzRyxDQUFDO0FBQ3BILElBQUksU0FBUyxHQUFHLDhLQUE4SyxDQUFDO0FBQy9MLElBQUksZ0JBQWdCLEdBQUcsbUxBQW1MLENBQUM7QUFDM00sSUFBSSxhQUFhLEdBQUcsd0dBQXdHLENBQUM7QUFDN0gsSUFBSSxXQUFXLEdBQUcsb0xBQW9MLENBQUM7QUFDdk0sSUFBSSxXQUFXLEdBQUcsb0xBQW9MLENBQUM7QUFDdk0sSUFBSSxrQkFBa0IsR0FBRyxpTkFBaU4sQ0FBQztBQUMzTyxJQUFJLFVBQVUsR0FBRyxnU0FBZ1MsQ0FBQztBQUNsVCxJQUFJLFVBQVUsR0FBRyx5UEFBeVAsQ0FBQztBQUMzUSxJQUFJLGNBQWMsR0FBRywrZUFBK2UsQ0FBQztBQUNyZ0IsSUFBSSxjQUFjLEdBQUcsK2ZBQStmLENBQUM7QUFDcmhCLElBQUksY0FBYyxHQUFHLDBTQUEwUyxDQUFDO0FBQ2hVLElBQUksY0FBYyxHQUFHLHlIQUF5SCxDQUFDO0FBQy9JLElBQUksY0FBYyxHQUFHLDZDQUE2QyxDQUFDO0FBQ25FLElBQUksY0FBYyxHQUFHLCtUQUErVCxDQUFDO0FBQ3JWLElBQUksaUJBQWlCLEdBQUcsOGVBQThlLENBQUM7QUFDdmdCLElBQUksY0FBYyxHQUFHLDZJQUE2SSxDQUFDO0FBQ25LLElBQUksY0FBYyxHQUFHLHFIQUFxSCxDQUFDO0FBQzNJLElBQUksY0FBYyxHQUFHLHVNQUF1TSxDQUFDO0FBQzdOLElBQUksY0FBYyxHQUFHLHlIQUF5SCxDQUFDO0FBQy9JLElBQUksY0FBYyxHQUFHLHdXQUF3VyxDQUFDO0FBQzlYLElBQUksY0FBYyxHQUFHLHdDQUF3QyxDQUFDO0FBQzlELElBQUksY0FBYyxHQUFHLDJJQUEySSxDQUFDO0FBQ2pLLElBQUksY0FBYyxHQUFHLHlMQUF5TCxDQUFDO0FBQy9NLElBQUksY0FBYyxHQUFHLDBSQUEwUixDQUFDO0FBQ2hULElBQUksZUFBZSxHQUFHLG9RQUFvUSxDQUFDO0FBQzNSLElBQUksY0FBYyxHQUFHLHFKQUFxSixDQUFDO0FBQzNLLElBQUksZUFBZSxHQUFHLHVhQUF1YSxDQUFDO0FBQzliLElBQUksY0FBYyxHQUFHLDJKQUEySixDQUFDO0FBQ2pMLElBQUksY0FBYyxHQUFHLDZGQUE2RixDQUFDO0FBQ25ILElBQUksY0FBYyxHQUFHLHdWQUF3VixDQUFDO0FBQzlXLElBQUksb0JBQW9CLEdBQUcsb0tBQW9LLENBQUM7QUFDaE0sSUFBSSwyQkFBMkIsR0FBRyw2UUFBNlEsQ0FBQztBQUNoVCxJQUFJLGlCQUFpQixHQUFHLHdXQUF3VyxDQUFDO0FBQ2pZLElBQUksWUFBWSxHQUFHLHFPQUFxTyxDQUFDO0FBQ3pQLElBQUksWUFBWSxHQUFHLGtFQUFrRSxDQUFDO0FBQ3RGLElBQUksZ0JBQWdCLEdBQUcsMFRBQTBULENBQUM7QUFDbFYsSUFBSSxxQkFBcUIsR0FBRyx1a0JBQXVrQixDQUFDO0FBQ3BtQixJQUFJLDRCQUE0QixHQUFHLDJ3QkFBMndCLENBQUM7QUFDL3lCLElBQUksdUJBQXVCLEdBQUcsMHFDQUEwcUMsQ0FBQztBQUN6c0MsSUFBSSw4QkFBOEIsR0FBRyxxeENBQXF4QyxDQUFDO0FBQzN6QyxJQUFJLHVCQUF1QixHQUFHLHllQUF5ZSxDQUFDO0FBQ3hnQixJQUFJLGFBQWEsR0FBRyxrSUFBa0ksQ0FBQztBQUN2SixJQUFJLGdCQUFnQixHQUFHLHdUQUF3VCxDQUFDO0FBQ2hWLElBQUksYUFBYSxHQUFHLDhNQUE4TSxDQUFDO0FBQ25PLElBQUksZ0JBQWdCLEdBQUcsdXFCQUF1cUIsQ0FBQztBQUMvckIsSUFBSSxZQUFZLEdBQUcsNldBQTZXLENBQUM7QUFDalksSUFBSSxhQUFhLEdBQUcseVJBQXlSLENBQUM7QUFDOVMsSUFBSSxpQkFBaUIsR0FBRyx5YkFBeWIsQ0FBQztBQUNsZCxJQUFJLGtCQUFrQixHQUFHLDZXQUE2VyxDQUFDO0FBQ3ZZLElBQUksaUJBQWlCLEdBQUcscVlBQXFZLENBQUM7QUFDOVosSUFBSSxtQkFBbUIsR0FBRyxxZEFBcWQsQ0FBQztBQUNoZixJQUFJLGlCQUFpQixHQUFHLDJWQUEyVixDQUFDO0FBQ3BYLElBQUksV0FBVyxHQUFHLG1TQUFtUyxDQUFDO0FBQ3RULElBQUksZ0JBQWdCLEdBQUcsK1JBQStSLENBQUM7QUFDdlQsSUFBSSx1QkFBdUIsR0FBRyxpWUFBaVksQ0FBQztBQUNoYSxJQUFJLG9CQUFvQixHQUFHLHFjQUFxYyxDQUFDO0FBQ2plLElBQUksMkJBQTJCLEdBQUcsb2ZBQW9mLENBQUM7QUFDdmhCLElBQUksb0JBQW9CLEdBQUcsd2NBQXdjLENBQUM7QUFDcGUsSUFBSSwyQkFBMkIsR0FBRyxvZkFBb2YsQ0FBQztBQUN2aEIsSUFBSSxxQkFBcUIsR0FBRyx3Y0FBd2MsQ0FBQztBQUNyZSxJQUFJLDRCQUE0QixHQUFHLG9mQUFvZixDQUFDO0FBQ3hoQixJQUFJLGtCQUFrQixHQUFHLHFjQUFxYyxDQUFDO0FBQy9kLElBQUkseUJBQXlCLEdBQUcsb2ZBQW9mLENBQUM7QUFDcmhCLElBQUksZ0JBQWdCLEdBQUcseVZBQXlWLENBQUM7QUFDalgsSUFBSSx1QkFBdUIsR0FBRyw0aEJBQTRoQixDQUFDO0FBQzNqQixJQUFJLGdCQUFnQixHQUFHLG1qQkFBbWpCLENBQUM7QUFDM2tCLElBQUksdUJBQXVCLEdBQUcscXBCQUFxcEIsQ0FBQztBQUNwckIsSUFBSSxjQUFjLEdBQUcsc21DQUFzbUMsQ0FBQztBQUM1bkMsSUFBSSxxQkFBcUIsR0FBRyw2cUNBQTZxQyxDQUFDO0FBQzFzQyxJQUFJLGVBQWUsR0FBRyxxZUFBcWUsQ0FBQztBQUM1ZixJQUFJLHNCQUFzQixHQUFHLG9rQkFBb2tCLENBQUM7QUFDbG1CLElBQUksaUJBQWlCLEdBQUcsNmFBQTZhLENBQUM7QUFDdGMsSUFBSSx3QkFBd0IsR0FBRyxzakJBQXNqQixDQUFDO0FBQ3RsQixJQUFJLGlCQUFpQixHQUFHLDZaQUE2WixDQUFDO0FBQ3RiLElBQUksd0JBQXdCLEdBQUcsNGdCQUE0Z0IsQ0FBQztBQUM1aUIsSUFBSSxlQUFlLEdBQUcsbWlCQUFtaUIsQ0FBQztBQUMxakIsSUFBSSxzQkFBc0IsR0FBRyx1dEJBQXV0QixDQUFDO0FBQ3J2QixJQUFJLGlCQUFpQixHQUFHLDZrQkFBNmtCLENBQUM7QUFDdG1CLElBQUksd0JBQXdCLEdBQUcsNnRCQUE2dEIsQ0FBQztBQUM3dkIsSUFBSSxnQkFBZ0IsR0FBRywrUkFBK1IsQ0FBQztBQUN2VCxJQUFJLHVCQUF1QixHQUFHLHFlQUFxZSxDQUFDO0FBQ3BnQixJQUFJLGNBQWMsR0FBRyw2aEJBQTZoQixDQUFDO0FBQ25qQixJQUFJLHFCQUFxQixHQUFHLGluQkFBaW5CLENBQUM7QUFDOW9CLElBQUksa0JBQWtCLEdBQUcsd1hBQXdYLENBQUM7QUFDbFosSUFBSSxlQUFlLEdBQUcsK1ZBQStWLENBQUM7QUFDdFgsSUFBSSxzQkFBc0IsR0FBRyw2ZkFBNmYsQ0FBQztBQUMzaEIsSUFBSSxrQkFBa0IsR0FBRyw2bkJBQTZuQixDQUFDO0FBQ3ZwQixJQUFJLHlCQUF5QixHQUFHLGl0QkFBaXRCLENBQUM7QUFDbHZCLElBQUksaUJBQWlCLEdBQUcsZ2NBQWdjLENBQUM7QUFDemQsSUFBSSx3QkFBd0IsR0FBRywrbEJBQStsQixDQUFDO0FBQy9uQixJQUFJLGlCQUFpQixHQUFHLDJ0QkFBMnRCLENBQUM7QUFDcHZCLElBQUksd0JBQXdCLEdBQUcsd3FCQUF3cUIsQ0FBQztBQUN4c0IsSUFBSSxtQkFBbUIsR0FBRyxvV0FBb1csQ0FBQztBQUMvWCxJQUFJLDBCQUEwQixHQUFHLHVhQUF1YSxDQUFDO0FBQ3pjLElBQUksZUFBZSxHQUFHLGtwQkFBa3BCLENBQUM7QUFDenFCLElBQUksc0JBQXNCLEdBQUcsazBCQUFrMEIsQ0FBQztBQUNoMkIsSUFBSSxZQUFZLEdBQUcsd09BQXdPLENBQUM7QUFDNVAsSUFBSSxtQkFBbUIsR0FBRyxxVkFBcVYsQ0FBQztBQUNoWCxJQUFJLGlCQUFpQixHQUFHLDhXQUE4VyxDQUFDO0FBQ3ZZLElBQUksU0FBUyxHQUFHLDA0RUFBMDRFLENBQUM7QUFDMzVFLElBQUksZ0JBQWdCLEdBQUcsMklBQTJJLENBQUM7QUFDbkssSUFBSSxlQUFlLEdBQUcsNElBQTRJLENBQUM7QUFDbkssSUFBSSxnQkFBZ0IsR0FBRyxrUEFBa1AsQ0FBQztBQUMxUSxJQUFJLFdBQVcsR0FBRyx1TUFBdU0sQ0FBQztBQUMxTixJQUFJLGtCQUFrQixHQUFHLDBZQUEwWSxDQUFDO0FBQ3BhLElBQUksVUFBVSxHQUFHLDBPQUEwTyxDQUFDO0FBQzVQLElBQUksZUFBZSxHQUFHLHNSQUFzUixDQUFDO0FBQzdTLElBQUksdUJBQXVCLEdBQUcsMklBQTJJLENBQUM7QUFDMUssSUFBSSx1QkFBdUIsR0FBRyx3UEFBd1AsQ0FBQztBQUN2UixJQUFJLGtCQUFrQixHQUFHLDZPQUE2TyxDQUFDO0FBQ3ZRLElBQUksa0JBQWtCLEdBQUcsNlhBQTZYLENBQUM7QUFDdlosSUFBSSxTQUFTLEdBQUcsbUZBQW1GLENBQUM7QUFDcEcsSUFBSSxjQUFjLEdBQUcsaUlBQWlJLENBQUM7QUFDdkosSUFBSSxxQkFBcUIsR0FBRyxrSkFBa0osQ0FBQztBQUMvSyxJQUFJLGVBQWUsR0FBRyxrTEFBa0wsQ0FBQztBQUN6TSxJQUFJLHNCQUFzQixHQUFHLHdPQUF3TyxDQUFDO0FBQ3RRLElBQUksY0FBYyxHQUFHLHVUQUF1VCxDQUFDO0FBQzdVLElBQUkscUJBQXFCLEdBQUcscVhBQXFYLENBQUM7QUFDbFosSUFBSSxjQUFjLEdBQUcsNEpBQTRKLENBQUM7QUFDbEwsSUFBSSxxQkFBcUIsR0FBRyxzTEFBc0wsQ0FBQztBQUNuTixJQUFJLGdCQUFnQixHQUFHLGtPQUFrTyxDQUFDO0FBQzFQLElBQUksdUJBQXVCLEdBQUcsaVBBQWlQLENBQUM7QUFDaFIsSUFBSSxZQUFZLEdBQUcseU1BQXlNLENBQUM7QUFDN04sSUFBSSxtQkFBbUIsR0FBRyxrUUFBa1EsQ0FBQztBQUM3UixJQUFJLGdCQUFnQixHQUFHLHFHQUFxRyxDQUFDO0FBQzdILElBQUksZ0JBQWdCLEdBQUcsbUxBQW1MLENBQUM7QUFDM00sSUFBSSxjQUFjLEdBQUcsaUlBQWlJLENBQUM7QUFDdkosSUFBSSxxQkFBcUIsR0FBRyxrSkFBa0osQ0FBQztBQUMvSyxJQUFJLGdCQUFnQixHQUFHLDBLQUEwSyxDQUFDO0FBQ2xNLElBQUksUUFBUSxHQUFHLDZDQUE2QyxDQUFDO0FBQzdELElBQUksT0FBTyxHQUFHLDZRQUE2USxDQUFDO0FBQzVSLElBQUksV0FBVyxHQUFHLHFXQUFxVyxDQUFDO0FBQ3hYLElBQUksWUFBWSxHQUFHLDZQQUE2UCxDQUFDO0FBQ2pSLElBQUksaUJBQWlCLEdBQUcsaVNBQWlTLENBQUM7QUFDMVQsSUFBSSxhQUFhLEdBQUcsMkhBQTJILENBQUM7QUFDaEosSUFBSSxzQkFBc0IsR0FBRyw0TUFBNE0sQ0FBQztBQUMxTyxJQUFJLGVBQWUsR0FBRywySEFBMkgsQ0FBQztBQUNsSixJQUFJLHNCQUFzQixHQUFHLGtPQUFrTyxDQUFDO0FBQ2hRLElBQUksVUFBVSxHQUFHLDhDQUE4QyxDQUFDO0FBQ2hFLElBQUksUUFBUSxHQUFHLDI4QkFBMjhCLENBQUM7QUFDMzlCLElBQUksaUJBQWlCLEdBQUcsZ01BQWdNLENBQUM7QUFDek4sSUFBSSxhQUFhLEdBQUcsMkRBQTJELENBQUM7QUFDaEYsSUFBSSxVQUFVLEdBQUcsOFlBQThZLENBQUM7QUFDaGEsSUFBSSxXQUFXLEdBQUcseVVBQXlVLENBQUM7QUFDNVYsSUFBSSxVQUFVLEdBQUcscXBCQUFxcEIsQ0FBQztBQUN2cUIsSUFBSSxXQUFXLEdBQUcseUhBQXlILENBQUM7QUFDNUksSUFBSSxrQkFBa0IsR0FBRyw2TEFBNkwsQ0FBQztBQUN2TixJQUFJLGtCQUFrQixHQUFHLHlZQUF5WSxDQUFDO0FBQ25hLElBQUksVUFBVSxHQUFHLDZCQUE2QixDQUFDO0FBQy9DLElBQUksaUJBQWlCLEdBQUcsMEVBQTBFLENBQUM7QUFDbkcsSUFBSSxlQUFlLEdBQUcsaUhBQWlILENBQUM7QUFDeEksSUFBSSxRQUFRLEdBQUcsbUpBQW1KLENBQUM7QUFDbkssSUFBSSxlQUFlLEdBQUcsK01BQStNLENBQUM7QUFDdE8sSUFBSSxRQUFRLEdBQUcsK01BQStNLENBQUM7QUFDL04sSUFBSSxlQUFlLEdBQUcsa1NBQWtTLENBQUM7QUFDelQsSUFBSSxRQUFRLEdBQUcscVJBQXFSLENBQUM7QUFDclMsSUFBSSxlQUFlLEdBQUcsMldBQTJXLENBQUM7QUFDbFksSUFBSSxRQUFRLEdBQUcsaVZBQWlWLENBQUM7QUFDalcsSUFBSSxlQUFlLEdBQUcsZ2RBQWdkLENBQUM7QUFDdmUsSUFBSSxRQUFRLEdBQUcsdVpBQXVaLENBQUM7QUFDdmEsSUFBSSxlQUFlLEdBQUcsNGdCQUE0Z0IsQ0FBQztBQUNuaUIsSUFBSSxRQUFRLEdBQUcsd2RBQXdkLENBQUM7QUFDeGUsSUFBSSxlQUFlLEdBQUcsa21CQUFrbUIsQ0FBQztBQUN6bkIsSUFBSSxVQUFVLEdBQUcsMGlCQUEwaUIsQ0FBQztBQUM1akIsSUFBSSxpQkFBaUIsR0FBRyw2akJBQTZqQixDQUFDO0FBQ3RsQixJQUFJLFVBQVUsR0FBRyxxVUFBcVUsQ0FBQztBQUN2VixJQUFJLGlCQUFpQixHQUFHLG1YQUFtWCxDQUFDO0FBQzVZLElBQUksVUFBVSxHQUFHLHF5QkFBcXlCLENBQUM7QUFDdnpCLElBQUksaUJBQWlCLEdBQUcscTNCQUFxM0IsQ0FBQztBQUM5NEIsSUFBSSxTQUFTLEdBQUcsMlBBQTJQLENBQUM7QUFDNVEsSUFBSSxnQkFBZ0IsR0FBRyw0VUFBNFUsQ0FBQztBQUNwVyxJQUFJLFNBQVMsR0FBRyxvYkFBb2IsQ0FBQztBQUNyYyxJQUFJLGdCQUFnQixHQUFHLDZjQUE2YyxDQUFDO0FBQ3JlLElBQUksU0FBUyxHQUFHLGl0QkFBaXRCLENBQUM7QUFDbHVCLElBQUksZ0JBQWdCLEdBQUcsc3VCQUFzdUIsQ0FBQztBQUM5dkIsSUFBSSxlQUFlLEdBQUcsd2xDQUF3bEMsQ0FBQztBQUMvbUMsSUFBSSxzQkFBc0IsR0FBRyxxckJBQXFyQixDQUFDO0FBQ250QixJQUFJLGVBQWUsR0FBRyxpTEFBaUwsQ0FBQztBQUN4TSxJQUFJLFlBQVksR0FBRyx1UkFBdVIsQ0FBQztBQUMzUyxJQUFJLGFBQWEsR0FBRyx5UEFBeVAsQ0FBQztBQUM5USxJQUFJLGlCQUFpQixHQUFHLDRMQUE0TCxDQUFDO0FBQ3JOLElBQUksT0FBTyxHQUFHLG1LQUFtSyxDQUFDO0FBQ2xMLElBQUksWUFBWSxHQUFHLGlMQUFpTCxDQUFDO0FBQ3JNLElBQUksYUFBYSxHQUFHLG9ZQUFvWSxDQUFDO0FBQ3paLElBQUksVUFBVSxHQUFHLDYzQkFBNjNCLENBQUM7QUFDLzRCLElBQUksYUFBYSxHQUFHLHNiQUFzYixDQUFDO0FBQzNjLElBQUksa0JBQWtCLEdBQUcseWRBQXlkLENBQUM7QUFDbmYsSUFBSSxnQkFBZ0IsR0FBRyxzZEFBc2QsQ0FBQztBQUM5ZSxJQUFJLFNBQVMsR0FBRyxpVkFBaVYsQ0FBQztBQUNsVyxJQUFJLDZCQUE2QixHQUFHLHlFQUF5RSxDQUFDO0FBQzlHLElBQUksMkJBQTJCLEdBQUcscURBQXFELENBQUM7QUFDeEYsSUFBSSw0QkFBNEIsR0FBRyx1REFBdUQsQ0FBQztBQUMzRixJQUFJLDJCQUEyQixHQUFHLHFEQUFxRCxDQUFDO0FBQ3hGLElBQUksMkJBQTJCLEdBQUcseUVBQXlFLENBQUM7QUFDNUcsSUFBSSx3QkFBd0IsR0FBRyx1REFBdUQsQ0FBQztBQUN2RixJQUFJLGlCQUFpQixHQUFHLDh1QkFBOHVCLENBQUM7QUFDdndCLElBQUksZUFBZSxHQUFHLHdmQUF3ZixDQUFDO0FBQy9nQixJQUFJLGNBQWMsR0FBRyx5ZkFBeWYsQ0FBQztBQUMvZ0IsSUFBSSxrQkFBa0IsR0FBRywrQkFBK0IsQ0FBQztBQUN6RCxJQUFJLGtCQUFrQixHQUFHLDhRQUE4USxDQUFDO0FBQ3hTLElBQUksMEJBQTBCLEdBQUcsa1lBQWtZLENBQUM7QUFDcGEsSUFBSSxnQkFBZ0IsR0FBRyx1a0JBQXVrQixDQUFDO0FBQy9sQixJQUFJLFdBQVcsR0FBRywySkFBMkosQ0FBQztBQUM5SyxJQUFJLGNBQWMsR0FBRywrT0FBK08sQ0FBQztBQUNyUSxJQUFJLE9BQU8sR0FBRywrZ0NBQStnQyxDQUFDO0FBQzloQyxJQUFJLE1BQU0sR0FBRyx3ekJBQXd6QixDQUFDO0FBQ3QwQixJQUFJLE1BQU0sR0FBRywwUkFBMFIsQ0FBQztBQUN4UyxJQUFJLGFBQWEsR0FBRyw2V0FBNlcsQ0FBQztBQUNsWSxJQUFJLGVBQWUsR0FBRywrRkFBK0YsQ0FBQztBQUN0SCxJQUFJLGtCQUFrQixHQUFHLDRRQUE0USxDQUFDO0FBQ3RTLElBQUksYUFBYSxHQUFHLDJGQUEyRixDQUFDO0FBQ2hILElBQUksV0FBVyxHQUFHLDJGQUEyRixDQUFDO0FBQzlHLElBQUksWUFBWSxHQUFHLDJGQUEyRixDQUFDO0FBQy9HLElBQUksVUFBVSxHQUFHLG9IQUFvSCxDQUFDO0FBQ3RJLElBQUksYUFBYSxHQUFHLDRIQUE0SCxDQUFDO0FBQ2pKLElBQUksU0FBUyxHQUFHLDQ3REFBNDdELENBQUM7QUFDNzhELElBQUksU0FBUyxHQUFHLDhQQUE4UCxDQUFDO0FBQy9RLElBQUksTUFBTSxHQUFHLDZ3QkFBNndCLENBQUM7QUFDM3hCLElBQUksYUFBYSxHQUFHLDZTQUE2UyxDQUFDO0FBQ2xVLElBQUksVUFBVSxHQUFHLHdHQUF3RyxDQUFDO0FBQzFILElBQUksYUFBYSxHQUFHLG9NQUFvTSxDQUFDO0FBQ3pOLElBQUksUUFBUSxHQUFHLHVKQUF1SixDQUFDO0FBQ3ZLLElBQUksUUFBUSxHQUFHLHVsQkFBdWxCLENBQUM7QUFDdm1CLElBQUksU0FBUyxHQUFHLDZMQUE2TCxDQUFDO0FBQzlNLElBQUksWUFBWSxHQUFHLGlQQUFpUCxDQUFDO0FBQ3JRLElBQUksYUFBYSxHQUFHLHNUQUFzVCxDQUFDO0FBQzNVLElBQUksZUFBZSxHQUFHLG1aQUFtWixDQUFDO0FBQzFhLElBQUksWUFBWSxHQUFHLDZVQUE2VSxDQUFDO0FBQ2pXLElBQUksYUFBYSxHQUFHLHljQUF5YyxDQUFDO0FBQzlkLElBQUksU0FBUyxHQUFHLGtZQUFrWSxDQUFDO0FBQ25aLElBQUksT0FBTyxHQUFHLHdGQUF3RixDQUFDO0FBQ3ZHLElBQUksYUFBYSxHQUFHLDBHQUEwRyxDQUFDO0FBQy9ILElBQUksaUJBQWlCLEdBQUcsNk5BQTZOLENBQUM7QUFDdFAsSUFBSSxXQUFXLEdBQUcseUdBQXlHLENBQUM7QUFDNUgsSUFBSSxXQUFXLEdBQUcsb0xBQW9MLENBQUM7QUFDdk0sSUFBSSxnQkFBZ0IsR0FBRyxnUkFBZ1IsQ0FBQztBQUN4UyxJQUFJLFNBQVMsR0FBRyx3S0FBd0ssQ0FBQztBQUN6TCxJQUFJLFdBQVcsR0FBRyw2akJBQTZqQixDQUFDO0FBQ2hsQixJQUFJLGNBQWMsR0FBRyxnY0FBZ2MsQ0FBQztBQUN0ZCxJQUFJLGlCQUFpQixHQUFHLGdOQUFnTixDQUFDO0FBQ3pPLElBQUksdUJBQXVCLEdBQUcsNldBQTZXLENBQUM7QUFDNVksSUFBSSw4QkFBOEIsR0FBRyxnYkFBZ2IsQ0FBQztBQUN0ZCxJQUFJLGFBQWEsR0FBRyx1ZkFBdWYsQ0FBQztBQUM1Z0IsSUFBSSxlQUFlLEdBQUcsNFlBQTRZLENBQUM7QUFDbmEsSUFBSSxlQUFlLEdBQUcsZ05BQWdOLENBQUM7QUFDdk8sSUFBSSxxQkFBcUIsR0FBRyw2V0FBNlcsQ0FBQztBQUMxWSxJQUFJLDRCQUE0QixHQUFHLGdiQUFnYixDQUFDO0FBQ3BkLElBQUksU0FBUyxHQUFHLHlIQUF5SCxDQUFDO0FBQzFJLElBQUksV0FBVyxHQUFHLDJDQUEyQyxDQUFDO0FBQzlELElBQUksY0FBYyxHQUFHLG9KQUFvSixDQUFDO0FBQzFLLElBQUkscUJBQXFCLEdBQUcsa0tBQWtLLENBQUM7QUFDL0wsSUFBSSxpQkFBaUIsR0FBRyx5SUFBeUksQ0FBQztBQUNsSyxJQUFJLHdCQUF3QixHQUFHLG9PQUFvTyxDQUFDO0FBQ3BRLElBQUksZUFBZSxHQUFHLGlOQUFpTixDQUFDO0FBQ3hPLElBQUksc0JBQXNCLEdBQUcsK1BBQStQLENBQUM7QUFDN1IsSUFBSSxtQkFBbUIsR0FBRyw2REFBNkQsQ0FBQztBQUN4RixJQUFJLGtCQUFrQixHQUFHLDJOQUEyTixDQUFDO0FBQ3JQLElBQUkseUJBQXlCLEdBQUcsOE5BQThOLENBQUM7QUFDL1AsSUFBSSxjQUFjLEdBQUcsc0lBQXNJLENBQUM7QUFDNUosSUFBSSxxQkFBcUIsR0FBRyxzSkFBc0osQ0FBQztBQUNuTCxJQUFJLGtCQUFrQixHQUFHLHNGQUFzRixDQUFDO0FBQ2hILElBQUksT0FBTyxHQUFHLG1NQUFtTSxDQUFDO0FBQ2xOLElBQUksaUJBQWlCLEdBQUcsc0tBQXNLLENBQUM7QUFDL0wsSUFBSSx3QkFBd0IsR0FBRyxvQ0FBb0MsQ0FBQztBQUNwRSxJQUFJLGNBQWMsR0FBRyxtVkFBbVYsQ0FBQztBQUN6VyxJQUFJLGVBQWUsR0FBRyxpS0FBaUssQ0FBQztBQUN4TCxJQUFJLHNCQUFzQixHQUFHLG1DQUFtQyxDQUFDO0FBQ2pFLElBQUksYUFBYSxHQUFHLDJoQ0FBMmhDLENBQUM7QUFDaGpDLElBQUksT0FBTyxHQUFHLG9uQkFBb25CLENBQUM7QUFDbm9CLElBQUksVUFBVSxHQUFHLDZJQUE2SSxDQUFDO0FBQy9KLElBQUksYUFBYSxHQUFHLHdQQUF3UCxDQUFDO0FBQzdRLElBQUksVUFBVSxHQUFHLGtNQUFrTSxDQUFDO0FBQ3BOLElBQUksaUJBQWlCLEdBQUcsa05BQWtOLENBQUM7QUFDM08sSUFBSSxRQUFRLEdBQUcsZ1lBQWdZLENBQUM7QUFDaFosSUFBSSxVQUFVLEdBQUcsME1BQTBNLENBQUM7QUFDNU4sSUFBSSxTQUFTLEdBQUcsMmxCQUEybEIsQ0FBQztBQUM1bUIsSUFBSSxPQUFPLEdBQUcsd1NBQXdTLENBQUM7QUFDdlQsSUFBSSxXQUFXLEdBQUcsdVJBQXVSLENBQUM7QUFDMVMsSUFBSSxZQUFZLEdBQUcsb1dBQW9XLENBQUM7QUFDeFgsSUFBSSxhQUFhLEdBQUcsMm9CQUEyb0IsQ0FBQztBQUNocUIsSUFBSSxnQkFBZ0IsR0FBRyxnd0JBQWd3QixDQUFDO0FBQ3h4QixJQUFJLFFBQVEsR0FBRyx5VUFBeVUsQ0FBQztBQUN6VixJQUFJLGtCQUFrQixHQUFHLGlaQUFpWixDQUFDO0FBQzNhLElBQUksV0FBVyxHQUFHLG1UQUFtVCxDQUFDO0FBQ3RVLElBQUksZ0JBQWdCLEdBQUcsbVhBQW1YLENBQUM7QUFDM1ksSUFBSSxjQUFjLEdBQUcscVpBQXFaLENBQUM7QUFDM2EsSUFBSSxlQUFlLEdBQUcsMllBQTJZLENBQUM7QUFDbGEsSUFBSSxpQkFBaUIsR0FBRyxpZkFBaWYsQ0FBQztBQUMxZ0IsSUFBSSxhQUFhLEdBQUcsb1pBQW9aLENBQUM7QUFDemEsSUFBSSxXQUFXLEdBQUcseWxCQUF5bEIsQ0FBQztBQUM1bUIsSUFBSSxZQUFZLEdBQUcsNGFBQTRhLENBQUM7QUFDaGMsSUFBSSxjQUFjLEdBQUcsa2hCQUFraEIsQ0FBQztBQUN4aUIsSUFBSSxNQUFNLEdBQUcsMkdBQTJHLENBQUM7QUFDekgsSUFBSSxZQUFZLEdBQUcscWlCQUFxaUIsQ0FBQztBQUN6akIsSUFBSSxTQUFTLEdBQUcsK05BQStOLENBQUM7QUFDaFAsSUFBSSxnQkFBZ0IsR0FBRywrWkFBK1osQ0FBQztBQUN2YixJQUFJLGFBQWEsR0FBRywwTUFBME0sQ0FBQztBQUMvTixJQUFJLGNBQWMsR0FBRyxxVUFBcVUsQ0FBQztBQUMzVixJQUFJLGFBQWEsR0FBRyxvR0FBb0csQ0FBQztBQUN6SCxJQUFJLFFBQVEsR0FBRyxzQ0FBc0MsQ0FBQztBQUN0RCxJQUFJLGVBQWUsR0FBRyx1RUFBdUUsQ0FBQztBQUM5RixJQUFJLGlCQUFpQixHQUFHLGtaQUFrWixDQUFDO0FBQzNhLElBQUksdUJBQXVCLEdBQUcsMExBQTBMLENBQUM7QUFDek4sSUFBSSxvQkFBb0IsR0FBRywwK0VBQTArRSxDQUFDO0FBQ3RnRixJQUFJLFdBQVcsR0FBRyx3TkFBd04sQ0FBQztBQUMzTyxJQUFJLG1CQUFtQixHQUFHLHlIQUF5SCxDQUFDO0FBQ3BKLElBQUksZ0JBQWdCLEdBQUcsNEhBQTRILENBQUM7QUFDcEosSUFBSSxXQUFXLEdBQUcsdUpBQXVKLENBQUM7QUFDMUssSUFBSSxlQUFlLEdBQUcsZ0xBQWdMLENBQUM7QUFDdk0sSUFBSSxvQkFBb0IsR0FBRywrUUFBK1EsQ0FBQztBQUMzUyxJQUFJLGFBQWEsR0FBRyw4S0FBOEssQ0FBQztBQUNuTSxJQUFJLFVBQVUsR0FBRywwRkFBMEYsQ0FBQztBQUM1RyxJQUFJLGlCQUFpQixHQUFHLHFMQUFxTCxDQUFDO0FBQzlNLElBQUksUUFBUSxHQUFHLG1IQUFtSCxDQUFDO0FBQ25JLElBQUksYUFBYSxHQUFHLDBKQUEwSixDQUFDO0FBQy9LLElBQUksb0JBQW9CLEdBQUcsd0tBQXdLLENBQUM7QUFDcE0sSUFBSSxXQUFXLEdBQUcsd09BQXdPLENBQUM7QUFDM1AsSUFBSSxhQUFhLEdBQUcsc09BQXNPLENBQUM7QUFDM1AsSUFBSSxvQkFBb0IsR0FBRywyS0FBMkssQ0FBQztBQUN2TSxJQUFJLFlBQVksR0FBRyxxWUFBcVksQ0FBQztBQUN6WixJQUFJLG1CQUFtQixHQUFHLDJUQUEyVCxDQUFDO0FBQ3RWLElBQUksWUFBWSxHQUFHLDRVQUE0VSxDQUFDO0FBQ2hXLElBQUksb0JBQW9CLEdBQUcsNlBBQTZQLENBQUM7QUFDelIsSUFBSSxhQUFhLEdBQUcsaU1BQWlNLENBQUM7QUFDdE4sSUFBSSxvQkFBb0IsR0FBRyw4T0FBOE8sQ0FBQztBQUMxUSxJQUFJLGdCQUFnQixHQUFHLHNKQUFzSixDQUFDO0FBQzlLLElBQUksdUJBQXVCLEdBQUcsK0tBQStLLENBQUM7QUFDOU0sSUFBSSxrQkFBa0IsR0FBRyw4T0FBOE8sQ0FBQztBQUN4USxJQUFJLFdBQVcsR0FBRyw2TkFBNk4sQ0FBQztBQUNoUCxJQUFJLGtCQUFrQixHQUFHLG9PQUFvTyxDQUFDO0FBQzlQLElBQUksWUFBWSxHQUFHLGdKQUFnSixDQUFDO0FBQ3BLLElBQUksb0JBQW9CLEdBQUcsa0xBQWtMLENBQUM7QUFDOU0sSUFBSSwyQkFBMkIsR0FBRywrTkFBK04sQ0FBQztBQUNsUSxJQUFJLG1CQUFtQixHQUFHLHVMQUF1TCxDQUFDO0FBQ2xOLElBQUksZUFBZSxHQUFHLHdJQUF3SSxDQUFDO0FBQy9KLElBQUksWUFBWSxHQUFHLHlOQUF5TixDQUFDO0FBQzdPLElBQUksbUJBQW1CLEdBQUcsNkpBQTZKLENBQUM7QUFDeEwsSUFBSSxlQUFlLEdBQUcsdUtBQXVLLENBQUM7QUFDOUwsSUFBSSxzQkFBc0IsR0FBRyxzSUFBc0ksQ0FBQztBQUNwSyxJQUFJLGNBQWMsR0FBRywwVUFBMFUsQ0FBQztBQUNoVyxJQUFJLHFCQUFxQixHQUFHLDZWQUE2VixDQUFDO0FBQzFYLElBQUksY0FBYyxHQUFHLDBiQUEwYixDQUFDO0FBQ2hkLElBQUkscUJBQXFCLEdBQUcsNGRBQTRkLENBQUM7QUFDemYsSUFBSSxZQUFZLEdBQUcsdUtBQXVLLENBQUM7QUFDM0wsSUFBSSxtQkFBbUIsR0FBRyxzSUFBc0ksQ0FBQztBQUNqSyxJQUFJLFlBQVksR0FBRyw2ZkFBNmYsQ0FBQztBQUNqaEIsSUFBSSxtQkFBbUIsR0FBRyw2ZkFBNmYsQ0FBQztBQUN4aEIsSUFBSSxlQUFlLEdBQUcsaUpBQWlKLENBQUM7QUFDeEssSUFBSSxRQUFRLEdBQUcsb2dCQUFvZ0IsQ0FBQztBQUNwaEIsSUFBSSxPQUFPLEdBQUcsK0ZBQStGLENBQUM7QUFDOUcsSUFBSSxXQUFXLEdBQUcsNFVBQTRVLENBQUM7QUFDL1YsSUFBSSxnQkFBZ0IsR0FBRyw0VkFBNFYsQ0FBQztBQUNwWCxJQUFJLHVCQUF1QixHQUFHLDBaQUEwWixDQUFDO0FBQ3piLElBQUksbUJBQW1CLEdBQUcscU1BQXFNLENBQUM7QUFDaE8sSUFBSSwwQkFBMEIsR0FBRyw0T0FBNE8sQ0FBQztBQUM5USxJQUFJLGVBQWUsR0FBRyxrZUFBa2UsQ0FBQztBQUN6ZixJQUFJLHNCQUFzQixHQUFHLHVnQkFBdWdCLENBQUM7QUFDcmlCLElBQUksY0FBYyxHQUFHLDByQkFBMHJCLENBQUM7QUFDaHRCLElBQUkscUJBQXFCLEdBQUcsNHVCQUE0dUIsQ0FBQztBQUN6d0IsSUFBSSxlQUFlLEdBQUcscWFBQXFhLENBQUM7QUFDNWIsSUFBSSxzQkFBc0IsR0FBRyxrZUFBa2UsQ0FBQztBQUNoZ0IsSUFBSSxnQkFBZ0IsR0FBRyxzakJBQXNqQixDQUFDO0FBQzlrQixJQUFJLHVCQUF1QixHQUFHLHluQkFBeW5CLENBQUM7QUFDeHBCLElBQUksa0JBQWtCLEdBQUcscVNBQXFTLENBQUM7QUFDL1QsSUFBSSx5QkFBeUIsR0FBRyx3V0FBd1csQ0FBQztBQUN6WSxJQUFJLGdCQUFnQixHQUFHLDZSQUE2UixDQUFDO0FBQ3JULElBQUksdUJBQXVCLEdBQUcsZ1hBQWdYLENBQUM7QUFDL1ksSUFBSSxnQkFBZ0IsR0FBRyxvYUFBb2EsQ0FBQztBQUM1YixJQUFJLHVCQUF1QixHQUFHLHllQUF5ZSxDQUFDO0FBQ3hnQixJQUFJLGVBQWUsR0FBRyx3MEJBQXcwQixDQUFDO0FBQy8xQixJQUFJLHNCQUFzQixHQUFHLHN1QkFBc3VCLENBQUM7QUFDcHdCLElBQUksY0FBYyxHQUFHLCtjQUErYyxDQUFDO0FBQ3JlLElBQUkscUJBQXFCLEdBQUcsbW9CQUFtb0IsQ0FBQztBQUNocUIsSUFBSSxrQkFBa0IsR0FBRyxvUkFBb1IsQ0FBQztBQUM5UyxJQUFJLHlCQUF5QixHQUFHLHdWQUF3VixDQUFDO0FBQ3pYLElBQUksa0JBQWtCLEdBQUcsa1pBQWtaLENBQUM7QUFDNWEsSUFBSSxlQUFlLEdBQUcsMndEQUEyd0QsQ0FBQztBQUNseUQsSUFBSSxzQkFBc0IsR0FBRyxtb0ZBQW1vRixDQUFDO0FBQ2pxRixJQUFJLGNBQWMsR0FBRywyWkFBMlosQ0FBQztBQUNqYixJQUFJLHFCQUFxQixHQUFHLDBkQUEwZCxDQUFDO0FBQ3ZmLElBQUksZUFBZSxHQUFHLDByQkFBMHJCLENBQUM7QUFDanRCLElBQUksc0JBQXNCLEdBQUcsNjlCQUE2OUIsQ0FBQztBQUMzL0IsSUFBSSxpQkFBaUIsR0FBRyxzYkFBc2IsQ0FBQztBQUMvYyxJQUFJLHdCQUF3QixHQUFHLG9mQUFvZixDQUFDO0FBQ3BoQixJQUFJLGVBQWUsR0FBRyxvVkFBb1YsQ0FBQztBQUMzVyxJQUFJLHNCQUFzQixHQUFHLHlaQUF5WixDQUFDO0FBQ3ZiLElBQUksU0FBUyxHQUFHLDRGQUE0RixDQUFDO0FBQzdHLElBQUksWUFBWSxHQUFHLHdKQUF3SixDQUFDO0FBQzVLLElBQUksbUJBQW1CLEdBQUcsbU5BQW1OLENBQUM7QUFDOU8sSUFBSSxnQkFBZ0IsR0FBRyxvSEFBb0gsQ0FBQztBQUM1SSxJQUFJLFVBQVUsR0FBRyxvYUFBb2EsQ0FBQztBQUN0YixJQUFJLFFBQVEsR0FBRyxvQ0FBb0MsQ0FBQztBQUNwRCxJQUFJLFdBQVcsR0FBRyx3SEFBd0gsQ0FBQztBQUMzSSxJQUFJLFlBQVksR0FBRyxtREFBbUQsQ0FBQztBQUN2RSxJQUFJLG1CQUFtQixHQUFHLHFHQUFxRyxDQUFDO0FBQ2hJLElBQUksU0FBUyxHQUFHLGlSQUFpUixDQUFDO0FBQ2xTLElBQUksZ0JBQWdCLEdBQUcsa01BQWtNLENBQUM7QUFDMU4sSUFBSSxZQUFZLEdBQUcsNE9BQTRPLENBQUM7QUFDaFEsSUFBSSxlQUFlLEdBQUcsMFBBQTBQLENBQUM7QUFDalIsSUFBSSxnQkFBZ0IsR0FBRyx3VkFBd1YsQ0FBQztBQUNoWCxJQUFJLGNBQWMsR0FBRyx3VkFBd1YsQ0FBQztBQUM5VyxJQUFJLFNBQVMsR0FBRyx5dkJBQXl2QixDQUFDO0FBQzF3QixJQUFJLEtBQUssR0FBRyw0Z0JBQTRnQixDQUFDO0FBQ3poQixJQUFJLFdBQVcsR0FBRyxpR0FBaUcsQ0FBQztBQUNwSCxJQUFJLFdBQVcsR0FBRyx3TEFBd0wsQ0FBQztBQUMzTSxJQUFJLGdCQUFnQixHQUFHLDREQUE0RCxDQUFDO0FBQ3BGLElBQUksbUJBQW1CLEdBQUcsbUhBQW1ILENBQUM7QUFDOUksSUFBSSxhQUFhLEdBQUcsbXFDQUFtcUMsQ0FBQztBQUN4ckMsSUFBSSxhQUFhLEdBQUcsNG5EQUE0bkQsQ0FBQztBQUNqcEQsSUFBSSxnQkFBZ0IsR0FBRyw0MUJBQTQxQixDQUFDO0FBQ3AzQixJQUFJLGNBQWMsR0FBRyx5NkJBQXk2QixDQUFDO0FBQy83QixJQUFJLGNBQWMsR0FBRyx1d0JBQXV3QixDQUFDO0FBQzd4QixJQUFJLGNBQWMsR0FBRyxvdkNBQW92QyxDQUFDO0FBQzF3QyxJQUFJLFlBQVksR0FBRywwYUFBMGEsQ0FBQztBQUM5YixJQUFJLFdBQVcsR0FBRyx1MUJBQXUxQixDQUFDO0FBQzEyQixJQUFJLFlBQVksR0FBRyxtZEFBbWQsQ0FBQztBQUN2ZSxJQUFJLGNBQWMsR0FBRywwRUFBMEUsQ0FBQztBQUNoRyxJQUFJLG1CQUFtQixHQUFHLHFDQUFxQyxDQUFDO0FBQ2hFLElBQUksVUFBVSxHQUFHLHNkQUFzZCxDQUFDO0FBQ3hlLElBQUksWUFBWSxHQUFHLHdMQUF3TCxDQUFDO0FBQzVNLElBQUksWUFBWSxHQUFHLGlNQUFpTSxDQUFDO0FBQ3JOLElBQUksbUJBQW1CLEdBQUcsaU5BQWlOLENBQUM7QUFDNU8sSUFBSSxnQkFBZ0IsR0FBRyxpS0FBaUssQ0FBQztBQUN6TCxJQUFJLHVCQUF1QixHQUFHLHdGQUF3RixDQUFDO0FBQ3ZILElBQUksV0FBVyxHQUFHLGlUQUFpVCxDQUFDO0FBQ3BVLElBQUksY0FBYyxHQUFHLGlZQUFpWSxDQUFDO0FBQ3ZaLElBQUksU0FBUyxHQUFHLGdJQUFnSSxDQUFDO0FBQ2pKLElBQUksZ0JBQWdCLEdBQUcsOEhBQThILENBQUM7QUFDdEosSUFBSSxNQUFNLEdBQUcsbVBBQW1QLENBQUM7QUFDalEsSUFBSSxXQUFXLEdBQUcseWJBQXliLENBQUM7QUFDNWMsSUFBSSxrQkFBa0IsR0FBRyxtYUFBbWEsQ0FBQztBQUM3YixJQUFJLFlBQVksR0FBRyxxcUJBQXFxQixDQUFDO0FBQ3pyQixJQUFJLG1CQUFtQixHQUFHLCtaQUErWixDQUFDO0FBQzFiLElBQUksV0FBVyxHQUFHLGdUQUFnVCxDQUFDO0FBQ25VLElBQUksa0JBQWtCLEdBQUcseVRBQXlULENBQUM7QUFDblYsSUFBSSxTQUFTLEdBQUcsa2tCQUFra0IsQ0FBQztBQUNubEIsSUFBSSxnQkFBZ0IsR0FBRyx1akJBQXVqQixDQUFDO0FBQy9rQixJQUFJLGFBQWEsR0FBRywyU0FBMlMsQ0FBQztBQUNoVSxJQUFJLFVBQVUsR0FBRyxpZkFBaWYsQ0FBQztBQUNuZ0IsSUFBSSxpQkFBaUIsR0FBRywrZkFBK2YsQ0FBQztBQUN4aEIsSUFBSSxZQUFZLEdBQUcscWpCQUFxakIsQ0FBQztBQUN6a0IsSUFBSSxtQkFBbUIsR0FBRywwa0JBQTBrQixDQUFDO0FBQ3JtQixJQUFJLGNBQWMsR0FBRyxzVEFBc1QsQ0FBQztBQUM1VSxJQUFJLHFCQUFxQixHQUFHLHVYQUF1WCxDQUFDO0FBQ3BaLElBQUksYUFBYSxHQUFHLDhRQUE4USxDQUFDO0FBQ25TLElBQUksa0JBQWtCLEdBQUcsK1FBQStRLENBQUM7QUFDelMsSUFBSSxnQkFBZ0IsR0FBRyxzWkFBc1osQ0FBQztBQUM5YSxJQUFJLGlCQUFpQixHQUFHLCtSQUErUixDQUFDO0FBQ3hULElBQUksbUJBQW1CLEdBQUcseVhBQXlYLENBQUM7QUFDcFosSUFBSSxvQkFBb0IsR0FBRyxvT0FBb08sQ0FBQztBQUNoUSxJQUFJLE9BQU8sR0FBRyx1ZUFBdWUsQ0FBQztBQUN0ZixJQUFJLFlBQVksR0FBRyxrN0JBQWs3QixDQUFDO0FBQ3Q4QixJQUFJLFdBQVcsR0FBRyx1a0JBQXVrQixDQUFDO0FBQzFsQixJQUFJLGtCQUFrQixHQUFHLDZxQkFBNnFCLENBQUM7QUFDdnNCLElBQUksY0FBYyxHQUFHLDZwQkFBNnBCLENBQUM7QUFDbnJCLElBQUksY0FBYyxHQUFHLHlZQUF5WSxDQUFDO0FBQy9aLElBQUksbUJBQW1CLEdBQUcsd1dBQXdXLENBQUM7QUFDblksSUFBSSxrQkFBa0IsR0FBRyx1bkJBQXVuQixDQUFDO0FBQ2pwQixJQUFJLGNBQWMsR0FBRywrbEJBQStsQixDQUFDO0FBQ3JuQixJQUFJLHFCQUFxQixHQUFHLG93QkFBb3dCLENBQUM7QUFDanlCLElBQUksWUFBWSxHQUFHLGtiQUFrYixDQUFDO0FBQ3RjLElBQUksbUJBQW1CLEdBQUcsd3FCQUF3cUIsQ0FBQztBQUNuc0IsSUFBSSxtQkFBbUIsR0FBRyxxa0JBQXFrQixDQUFDO0FBQ2htQixJQUFJLDBCQUEwQixHQUFHLG00QkFBbTRCLENBQUM7QUFDcjZCLElBQUksV0FBVyxHQUFHLCtSQUErUixDQUFDO0FBQ2xULElBQUksaUJBQWlCLEdBQUcsdUVBQXVFLENBQUM7QUFDaEcsSUFBSSxvQkFBb0IsR0FBRyxxZkFBcWYsQ0FBQztBQUNqaEIsSUFBSSxvQkFBb0IsR0FBRyx1ekJBQXV6QixDQUFDO0FBQ24xQixJQUFJLFVBQVUsR0FBRyx1SUFBdUksQ0FBQztBQUN6SixJQUFJLGFBQWEsR0FBRyx1ekNBQXV6QyxDQUFDO0FBQzUwQyxJQUFJLE1BQU0sR0FBRywyakJBQTJqQixDQUFDO0FBQ3prQixJQUFJLFdBQVcsR0FBRyxtbEJBQW1sQixDQUFDO0FBQ3RtQixJQUFJLFVBQVUsR0FBRywyekJBQTJ6QixDQUFDO0FBQzcwQixJQUFJLGlCQUFpQixHQUFHLGt4QkFBa3hCLENBQUM7QUFDM3lCLElBQUksZUFBZSxHQUFHLGt4QkFBa3hCLENBQUM7QUFDenlCLElBQUksV0FBVyxHQUFHLG11QkFBbXVCLENBQUM7QUFDdHZCLElBQUksU0FBUyxHQUFHLGdkQUFnZCxDQUFDO0FBQ2plLElBQUksVUFBVSxHQUFHLDJ2QkFBMnZCLENBQUM7QUFDN3dCLElBQUksWUFBWSxHQUFHLGkyQkFBaTJCLENBQUM7QUFDcjNCLElBQUksWUFBWSxHQUFHLHl1QkFBeXVCLENBQUM7QUFDN3ZCLElBQUksWUFBWSxHQUFHLGcwQkFBZzBCLENBQUM7QUFDcDFCLElBQUksWUFBWSxHQUFHLGsyQkFBazJCLENBQUM7QUFDdDNCLElBQUksY0FBYyxHQUFHLHVDQUF1QyxDQUFDO0FBQzdELElBQUksZ0JBQWdCLEdBQUcsNlJBQTZSLENBQUM7QUFDclQsSUFBSSxnQkFBZ0IsR0FBRyxpWUFBaVksQ0FBQztBQUN6WixJQUFJLGVBQWUsR0FBRywwT0FBME8sQ0FBQztBQUNqUSxJQUFJLGdCQUFnQixHQUFHLHVYQUF1WCxDQUFDO0FBQy9ZLElBQUkscUJBQXFCLEdBQUcsMEZBQTBGLENBQUM7QUFDdkgsSUFBSSxNQUFNLEdBQUcsaVBBQWlQLENBQUM7QUFDL1AsSUFBSSxVQUFVLEdBQUcsc1ZBQXNWLENBQUM7QUFDeFcsSUFBSSxnQkFBZ0IsR0FBRyxpWEFBaVgsQ0FBQztBQUN6WSxJQUFJLHVCQUF1QixHQUFHLDZVQUE2VSxDQUFDO0FBQzVXLElBQUksU0FBUyxHQUFHLHFzRkFBcXNGLENBQUM7QUFDdHRGLElBQUksVUFBVSxHQUFHLHNkQUFzZCxDQUFDO0FBQ3hlLElBQUksY0FBYyxHQUFHLDBwREFBMHBELENBQUM7QUFDaHJELElBQUksUUFBUSxHQUFHLG1oQkFBbWhCLENBQUM7QUFDbmlCLElBQUksT0FBTyxHQUFHLHVGQUF1RixDQUFDO0FBQ3RHLElBQUksY0FBYyxHQUFHLGdPQUFnTyxDQUFDO0FBQ3RQLElBQUkscUJBQXFCLEdBQUcsZ09BQWdPLENBQUM7QUFDN1AsSUFBSSxZQUFZLEdBQUcsMEhBQTBILENBQUM7QUFDOUksSUFBSSxtQkFBbUIsR0FBRyxzSUFBc0ksQ0FBQztBQUNqSyxJQUFJLGNBQWMsR0FBRyxrS0FBa0ssQ0FBQztBQUN4TCxJQUFJLFVBQVUsR0FBRyx3cEJBQXdwQixDQUFDO0FBQzFxQixJQUFJLGFBQWEsR0FBRyxrbEJBQWtsQixDQUFDO0FBQ3ZtQixJQUFJLGFBQWEsR0FBRywwWEFBMFgsQ0FBQztBQUMvWSxJQUFJLG9CQUFvQixHQUFHLHVYQUF1WCxDQUFDO0FBQ25aLElBQUksa0JBQWtCLEdBQUcsK0pBQStKLENBQUM7QUFDekwsSUFBSSx5QkFBeUIsR0FBRyxrU0FBa1MsQ0FBQztBQUNuVSxJQUFJLFlBQVksR0FBRyxrSkFBa0osQ0FBQztBQUN0SyxJQUFJLG1CQUFtQixHQUFHLHdKQUF3SixDQUFDO0FBQ25MLElBQUksWUFBWSxHQUFHLDRLQUE0SyxDQUFDO0FBQ2hNLElBQUksbUJBQW1CLEdBQUcsc0tBQXNLLENBQUM7QUFDak0sSUFBSSxZQUFZLEdBQUcsd1BBQXdQLENBQUM7QUFDNVEsSUFBSSxtQkFBbUIsR0FBRyxpUkFBaVIsQ0FBQztBQUM1UyxJQUFJLFlBQVksR0FBRyw2UEFBNlAsQ0FBQztBQUNqUixJQUFJLG1CQUFtQixHQUFHLCtSQUErUixDQUFDO0FBQzFULElBQUksV0FBVyxHQUFHLDRQQUE0UCxDQUFDO0FBQy9RLElBQUksa0JBQWtCLEdBQUcsOFBBQThQLENBQUM7QUFDeFIsSUFBSSxVQUFVLEdBQUcsb2xDQUFvbEMsQ0FBQztBQUN0bUMsSUFBSSxpQkFBaUIsR0FBRyw4aENBQThoQyxDQUFDO0FBQ3ZqQyxJQUFJLGNBQWMsR0FBRyx3TUFBd00sQ0FBQztBQUM5TixJQUFJLGdCQUFnQixHQUFHLG1JQUFtSSxDQUFDO0FBQzNKLElBQUksdUJBQXVCLEdBQUcsb0lBQW9JLENBQUM7QUFDbkssSUFBSSxlQUFlLEdBQUcsaUlBQWlJLENBQUM7QUFDeEosSUFBSSxtQkFBbUIsR0FBRyxrVkFBa1YsQ0FBQztBQUM3VyxJQUFJLDBCQUEwQixHQUFHLDJTQUEyUyxDQUFDO0FBQzdVLElBQUksdUJBQXVCLEdBQUcsOEtBQThLLENBQUM7QUFDN00sSUFBSSw4QkFBOEIsR0FBRyw4S0FBOEssQ0FBQztBQUNwTixJQUFJLHNCQUFzQixHQUFHLHNIQUFzSCxDQUFDO0FBQ3BKLElBQUksZUFBZSxHQUFHLDZJQUE2SSxDQUFDO0FBQ3BLLElBQUksc0JBQXNCLEdBQUcsNkhBQTZILENBQUM7QUFDM0osSUFBSSxXQUFXLEdBQUcsdVFBQXVRLENBQUM7QUFDMVIsSUFBSSxrQkFBa0IsR0FBRyx1UUFBdVEsQ0FBQztBQUNqUyxJQUFJLFlBQVksR0FBRyw2S0FBNkssQ0FBQztBQUNqTSxJQUFJLGVBQWUsR0FBRyxpS0FBaUssQ0FBQztBQUN4TCxJQUFJLHNCQUFzQixHQUFHLG1NQUFtTSxDQUFDO0FBQ2pPLElBQUksbUJBQW1CLEdBQUcsa01BQWtNLENBQUM7QUFDN04sSUFBSSxhQUFhLEdBQUcsb0pBQW9KLENBQUM7QUFDekssSUFBSSxvQkFBb0IsR0FBRyw2SkFBNkosQ0FBQztBQUN6TCxJQUFJLFVBQVUsR0FBRyx3ZkFBd2YsQ0FBQztBQUMxZ0IsSUFBSSxpQkFBaUIsR0FBRywrYkFBK2IsQ0FBQztBQUN4ZCxJQUFJLFdBQVcsR0FBRyxxUkFBcVIsQ0FBQztBQUN4UyxJQUFJLGtCQUFrQixHQUFHLGdoQkFBZ2hCLENBQUM7QUFDMWlCLElBQUksYUFBYSxHQUFHLHVXQUF1VyxDQUFDO0FBQzVYLElBQUksWUFBWSxHQUFHLGlNQUFpTSxDQUFDO0FBQ3JOLElBQUksbUJBQW1CLEdBQUcsNE1BQTRNLENBQUM7QUFDdk8sSUFBSSxhQUFhLEdBQUcsb0pBQW9KLENBQUM7QUFDekssSUFBSSxvQkFBb0IsR0FBRyxtTEFBbUwsQ0FBQztBQUMvTSxJQUFJLFVBQVUsR0FBRyxtS0FBbUssQ0FBQztBQUNyTCxJQUFJLGlCQUFpQixHQUFHLDBLQUEwSyxDQUFDO0FBQ25NLElBQUksV0FBVyxHQUFHLDhWQUE4VixDQUFDO0FBQ2pYLElBQUksa0JBQWtCLEdBQUcscVpBQXFaLENBQUM7QUFDL2EsSUFBSSxXQUFXLEdBQUcsa05BQWtOLENBQUM7QUFDck8sSUFBSSxrQkFBa0IsR0FBRywrTkFBK04sQ0FBQztBQUN6UCxJQUFJLFdBQVcsR0FBRyx5TEFBeUwsQ0FBQztBQUM1TSxJQUFJLGtCQUFrQixHQUFHLG9QQUFvUCxDQUFDO0FBQzlRLElBQUksZUFBZSxHQUFHLDZIQUE2SCxDQUFDO0FBQ3BKLElBQUksc0JBQXNCLEdBQUcsMElBQTBJLENBQUM7QUFDeEssSUFBSSxZQUFZLEdBQUcsaUxBQWlMLENBQUM7QUFDck0sSUFBSSxtQkFBbUIsR0FBRyxtTEFBbUwsQ0FBQztBQUM5TSxJQUFJLGNBQWMsR0FBRyx5RkFBeUYsQ0FBQztBQUMvRyxJQUFJLFVBQVUsR0FBRywyckJBQTJyQixDQUFDO0FBQzdzQixJQUFJLGFBQWEsR0FBRyxndEJBQWd0QixDQUFDO0FBQ3J1QixJQUFJLG9CQUFvQixHQUFHLDBuQ0FBMG5DLENBQUM7QUFDdHBDLElBQUksaUJBQWlCLEdBQUcsbXZCQUFtdkIsQ0FBQztBQUM1d0IsSUFBSSxjQUFjLEdBQUcsNFRBQTRULENBQUM7QUFDbFYsSUFBSSxxQkFBcUIsR0FBRyx5VEFBeVQsQ0FBQztBQUN0VixJQUFJLFlBQVksR0FBRyxzY0FBc2MsQ0FBQztBQUMxZCxJQUFJLG1CQUFtQixHQUFHLGdjQUFnYyxDQUFDO0FBQzNkLElBQUksV0FBVyxHQUFHLHNJQUFzSSxDQUFDO0FBQ3pKLElBQUksa0JBQWtCLEdBQUcsMkhBQTJILENBQUM7QUFDckosSUFBSSxpQkFBaUIsR0FBRyw0V0FBNFcsQ0FBQztBQUNyWSxJQUFJLG9CQUFvQixHQUFHLCtXQUErVyxDQUFDO0FBQzNZLElBQUksMkJBQTJCLEdBQUcscVpBQXFaLENBQUM7QUFDeGIsSUFBSSx3QkFBd0IsR0FBRyxxWEFBcVgsQ0FBQztBQUNyWixJQUFJLHNCQUFzQixHQUFHLG9HQUFvRyxDQUFDO0FBQ2xJLElBQUksZUFBZSxHQUFHLG9SQUFvUixDQUFDO0FBQzNTLElBQUksc0JBQXNCLEdBQUcsNlNBQTZTLENBQUM7QUFDM1UsSUFBSSxjQUFjLEdBQUcsaWJBQWliLENBQUM7QUFDdmMsSUFBSSxxQkFBcUIsR0FBRyw4WkFBOFosQ0FBQztBQUMzYixJQUFJLGFBQWEsR0FBRyx1T0FBdU8sQ0FBQztBQUM1UCxJQUFJLG9CQUFvQixHQUFHLHFQQUFxUCxDQUFDO0FBQ2pSLElBQUksY0FBYyxHQUFHLHNMQUFzTCxDQUFDO0FBQzVNLElBQUkscUJBQXFCLEdBQUcsd0tBQXdLLENBQUM7QUFDck0sSUFBSSxjQUFjLEdBQUcsNlJBQTZSLENBQUM7QUFDblQsSUFBSSxxQkFBcUIsR0FBRyw4WEFBOFgsQ0FBQztBQUMzWixJQUFJLGFBQWEsR0FBRyw0YUFBNGEsQ0FBQztBQUNqYyxJQUFJLG9CQUFvQixHQUFHLDBhQUEwYSxDQUFDO0FBQ3RjLElBQUksV0FBVyxHQUFHLDRKQUE0SixDQUFDO0FBQy9LLElBQUksa0JBQWtCLEdBQUcscUtBQXFLLENBQUM7QUFDL0wsSUFBSSxlQUFlLEdBQUcsOElBQThJLENBQUM7QUFDckssSUFBSSxzQkFBc0IsR0FBRyx5SUFBeUksQ0FBQztBQUN2SyxJQUFJLFdBQVcsR0FBRyxvTUFBb00sQ0FBQztBQUN2TixJQUFJLGtCQUFrQixHQUFHLGtNQUFrTSxDQUFDO0FBQzVOLElBQUksV0FBVyxHQUFHLHdIQUF3SCxDQUFDO0FBQzNJLElBQUksa0JBQWtCLEdBQUcsK0hBQStILENBQUM7QUFDekosSUFBSSxXQUFXLEdBQUcsNGNBQTRjLENBQUM7QUFDL2QsSUFBSSxrQkFBa0IsR0FBRyxzYkFBc2IsQ0FBQztBQUNoZCxJQUFJLFlBQVksR0FBRyxnTUFBZ00sQ0FBQztBQUNwTixJQUFJLGVBQWUsR0FBRyxvTUFBb00sQ0FBQztBQUMzTixJQUFJLHVCQUF1QixHQUFHLGlQQUFpUCxDQUFDO0FBQ2hSLElBQUksOEJBQThCLEdBQUcsNlBBQTZQLENBQUM7QUFDblMsSUFBSSxzQkFBc0IsR0FBRyx5TkFBeU4sQ0FBQztBQUN2UCxJQUFJLG1CQUFtQixHQUFHLGtNQUFrTSxDQUFDO0FBQzdOLElBQUksV0FBVyxHQUFHLHdGQUF3RixDQUFDO0FBQzNHLElBQUksa0JBQWtCLEdBQUcsb0lBQW9JLENBQUM7QUFDOUosSUFBSSxXQUFXLEdBQUcsa1JBQWtSLENBQUM7QUFDclMsSUFBSSxrQkFBa0IsR0FBRyxnU0FBZ1MsQ0FBQztBQUMxVCxJQUFJLGFBQWEsR0FBRyw2SEFBNkgsQ0FBQztBQUNsSixJQUFJLG9CQUFvQixHQUFHLDZIQUE2SCxDQUFDO0FBQ3pKLElBQUksWUFBWSxHQUFHLHNJQUFzSSxDQUFDO0FBQzFKLElBQUksbUJBQW1CLEdBQUcsb0lBQW9JLENBQUM7QUFDL0osSUFBSSxXQUFXLEdBQUcsd0xBQXdMLENBQUM7QUFDM00sSUFBSSxjQUFjLEdBQUcsMEtBQTBLLENBQUM7QUFDaE0sSUFBSSxxQkFBcUIsR0FBRyw2TUFBNk0sQ0FBQztBQUMxTyxJQUFJLGtCQUFrQixHQUFHLDhOQUE4TixDQUFDO0FBQ3hQLElBQUksT0FBTyxHQUFHLHFSQUFxUixDQUFDO0FBQ3BTLElBQUksWUFBWSxHQUFHLHVJQUF1SSxDQUFDO0FBQzNKLElBQUksZUFBZSxHQUFHLDJMQUEyTCxDQUFDO0FBQ2xOLElBQUksdUJBQXVCLEdBQUcsaU5BQWlOLENBQUM7QUFDaFAsSUFBSSxlQUFlLEdBQUcseU5BQXlOLENBQUM7QUFDaFAsSUFBSSxTQUFTLEdBQUcscVJBQXFSLENBQUM7QUFDdFMsSUFBSSxhQUFhLEdBQUcsdU1BQXVNLENBQUM7QUFDNU4sSUFBSSxvQkFBb0IsR0FBRyxxUEFBcVAsQ0FBQztBQUNqUixJQUFJLGNBQWMsR0FBRyxvU0FBb1MsQ0FBQztBQUMxVCxJQUFJLHFCQUFxQixHQUFHLG1WQUFtVixDQUFDO0FBQ2hYLElBQUksWUFBWSxHQUFHLDhUQUE4VCxDQUFDO0FBQ2xWLElBQUksbUJBQW1CLEdBQUcsNlhBQTZYLENBQUM7QUFDeFosSUFBSSxnQkFBZ0IsR0FBRyxrVUFBa1UsQ0FBQztBQUMxVixJQUFJLGFBQWEsR0FBRyx3VEFBd1QsQ0FBQztBQUM3VSxJQUFJLG9CQUFvQixHQUFHLDJXQUEyVyxDQUFDO0FBQ3ZZLElBQUksZUFBZSxHQUFHLGdhQUFnYSxDQUFDO0FBQ3ZiLElBQUksc0JBQXNCLEdBQUcsOGNBQThjLENBQUM7QUFDNWUsSUFBSSxnQkFBZ0IsR0FBRyw2Q0FBNkMsQ0FBQztBQUNyRSxJQUFJLHFCQUFxQixHQUFHLDBHQUEwRyxDQUFDO0FBQ3ZJLElBQUksb0JBQW9CLEdBQUcsa0lBQWtJLENBQUM7QUFDOUosSUFBSSxzQkFBc0IsR0FBRyx3T0FBd08sQ0FBQztBQUN0USxJQUFJLFVBQVUsR0FBRyw4SkFBOEosQ0FBQztBQUNoTCxJQUFJLGNBQWMsR0FBRyx5VkFBeVYsQ0FBQztBQUMvVyxJQUFJLGNBQWMsR0FBRywrb0VBQStvRSxDQUFDO0FBQ3JxRSxJQUFJLGlCQUFpQixHQUFHLDYrREFBNitELENBQUM7QUFDdGdFLElBQUksT0FBTyxHQUFHLHEyQkFBcTJCLENBQUM7QUFDcDNCLElBQUksWUFBWSxHQUFHLG00QkFBbTRCLENBQUM7QUFDdjVCLElBQUksbUJBQW1CLEdBQUcsOElBQThJLENBQUM7QUFDekssSUFBSSxjQUFjLEdBQUcsNFFBQTRRLENBQUM7QUFDbFMsSUFBSSxtQkFBbUIsR0FBRyx5U0FBeVMsQ0FBQztBQUNwVSxJQUFJLGlCQUFpQixHQUFHLG1aQUFtWixDQUFDO0FBQzVhLElBQUksVUFBVSxHQUFHLDI0QkFBMjRCLENBQUM7QUFDNzVCLElBQUksWUFBWSxHQUFHLDJmQUEyZixDQUFDO0FBQy9nQixJQUFJLFdBQVcsR0FBRyxxVEFBcVQsQ0FBQztBQUN4VSxJQUFJLFVBQVUsR0FBRyxta0RBQW1rRCxDQUFDO0FBQ3JsRCxJQUFJLFlBQVksR0FBRyw4eUJBQTh5QixDQUFDO0FBQ2wwQixJQUFJLGVBQWUsR0FBRywrRkFBK0YsQ0FBQztBQUN0SCxJQUFJLFdBQVcsR0FBRyw0a0JBQTRrQixDQUFDO0FBQy9sQixJQUFJLGNBQWMsR0FBRyxxb0JBQXFvQixDQUFDO0FBQzNwQixJQUFJLE9BQU8sR0FBRyw2ZEFBNmQsQ0FBQztBQUM1ZSxJQUFJLFVBQVUsR0FBRyw4ZEFBOGQsQ0FBQztBQUNoZixJQUFJLFdBQVcsR0FBRyx5Z0JBQXlnQixDQUFDO0FBQzVoQixJQUFJLGtCQUFrQixHQUFHLG11QkFBbXVCLENBQUM7QUFDN3ZCLElBQUksWUFBWSxHQUFHLHVNQUF1TSxDQUFDO0FBQzNOLElBQUksbUJBQW1CLEdBQUcsNE5BQTROLENBQUM7QUFDdlAsSUFBSSxPQUFPLEdBQUcsOENBQThDLENBQUM7QUFDN0QsSUFBSSxnQkFBZ0IsR0FBRyxzS0FBc0ssQ0FBQztBQUM5TCxJQUFJLFlBQVksR0FBRyxnRUFBZ0UsQ0FBQztBQUNwRixJQUFJLG1CQUFtQixHQUFHLHdHQUF3RyxDQUFDO0FBQ25JLElBQUksY0FBYyxHQUFHLHFGQUFxRixDQUFDO0FBQzNHLElBQUksV0FBVyxHQUFHLHFIQUFxSCxDQUFDO0FBQ3hJLElBQUksa0JBQWtCLEdBQUcsNE5BQTROLENBQUM7QUFDdFAsSUFBSSxhQUFhLEdBQUcsMk5BQTJOLENBQUM7QUFDaFAsSUFBSSxvQkFBb0IsR0FBRyxrVUFBa1UsQ0FBQztBQUM5VixJQUFJLGVBQWUsR0FBRyxzQ0FBc0MsQ0FBQztBQUM3RCxJQUFJLGNBQWMsR0FBRyx3SkFBd0osQ0FBQztBQUM5SyxJQUFJLHFCQUFxQixHQUFHLGdSQUFnUixDQUFDO0FBQzdTLElBQUksUUFBUSxHQUFHLG9XQUFvVyxDQUFDO0FBQ3BYLElBQUksUUFBUSxHQUFHLGdDQUFnQyxDQUFDO0FBQ2hELElBQUksYUFBYSxHQUFHLCtEQUErRCxDQUFDO0FBQ3BGLElBQUksb0JBQW9CLEdBQUcscUdBQXFHLENBQUM7QUFDakksSUFBSSxZQUFZLEdBQUcsdUdBQXVHLENBQUM7QUFDM0gsSUFBSSxjQUFjLEdBQUcsMk9BQTJPLENBQUM7QUFDalEsSUFBSSxXQUFXLEdBQUcsdUdBQXVHLENBQUM7QUFDMUgsSUFBSSxlQUFlLEdBQUcsdUVBQXVFLENBQUM7QUFDOUYsSUFBSSxjQUFjLEdBQUcscVhBQXFYLENBQUM7QUFDM1ksSUFBSSxhQUFhLEdBQUcsMkhBQTJILENBQUM7QUFDaEosSUFBSSxnQkFBZ0IsR0FBRywrSEFBK0gsQ0FBQztBQUN2SixJQUFJLFFBQVEsR0FBRyx3WUFBd1ksQ0FBQztBQUN4WixJQUFJLGFBQWEsR0FBRywwTEFBMEwsQ0FBQztBQUMvTSxJQUFJLGtCQUFrQixHQUFHLGlQQUFpUCxDQUFDO0FBQzNRLElBQUkseUJBQXlCLEdBQUcsd1VBQXdVLENBQUM7QUFDelcsSUFBSSxnQkFBZ0IsR0FBRyxnT0FBZ08sQ0FBQztBQUN4UCxJQUFJLHVCQUF1QixHQUFHLCtVQUErVSxDQUFDO0FBQzlXLElBQUksb0JBQW9CLEdBQUcsdVRBQXVULENBQUM7QUFDblYsSUFBSSxpQkFBaUIsR0FBRyx5UUFBeVEsQ0FBQztBQUNsUyxJQUFJLHdCQUF3QixHQUFHLGdXQUFnVyxDQUFDO0FBQ2hZLElBQUksbUJBQW1CLEdBQUcsK1dBQStXLENBQUM7QUFDMVksSUFBSSwwQkFBMEIsR0FBRyxzY0FBc2MsQ0FBQztBQUN4ZSxJQUFJLGFBQWEsR0FBRyx3YUFBd2EsQ0FBQztBQUM3YixJQUFJLG9CQUFvQixHQUFHLDJmQUEyZixDQUFDO0FBQ3ZoQixJQUFJLFdBQVcsR0FBRyxvVUFBb1UsQ0FBQztBQUN2VixJQUFJLGtCQUFrQixHQUFHLHFYQUFxWCxDQUFDO0FBQy9ZLElBQUksZUFBZSxHQUFHLHljQUF5YyxDQUFDO0FBQ2hlLElBQUksWUFBWSxHQUFHLGdjQUFnYyxDQUFDO0FBQ3BkLElBQUksbUJBQW1CLEdBQUcsbWhCQUFtaEIsQ0FBQztBQUM5aUIsSUFBSSxjQUFjLEdBQUcsc2lCQUFzaUIsQ0FBQztBQUM1akIsSUFBSSxxQkFBcUIsR0FBRyx5bkJBQXluQixDQUFDO0FBQ3RwQixJQUFJLG1CQUFtQixHQUFHLDBaQUEwWixDQUFDO0FBQ3JiLElBQUksd0JBQXdCLEdBQUcsZ0xBQWdMLENBQUM7QUFDaE4sSUFBSSwrQkFBK0IsR0FBRyxrU0FBa1MsQ0FBQztBQUN6VSxJQUFJLDBCQUEwQixHQUFHLHdaQUF3WixDQUFDO0FBQzFiLElBQUksYUFBYSxHQUFHLGtRQUFrUSxDQUFDO0FBQ3ZSLElBQUksaUJBQWlCLEdBQUcsNk1BQTZNLENBQUM7QUFDdE8sSUFBSSxhQUFhLEdBQUcsdVBBQXVQLENBQUM7QUFDNVEsSUFBSSxjQUFjLEdBQUcscU5BQXFOLENBQUM7QUFDM08sSUFBSSxlQUFlLEdBQUcsK01BQStNLENBQUM7QUFDdE8sSUFBSSxZQUFZLEdBQUcsZ0RBQWdELENBQUM7QUFDcEUsSUFBSSxnQkFBZ0IsR0FBRywyTEFBMkwsQ0FBQztBQUNuTixJQUFJLG1CQUFtQixHQUFHLHlGQUF5RixDQUFDO0FBQ3BILElBQUksWUFBWSxHQUFHLG9HQUFvRyxDQUFDO0FBQ3hILElBQUksU0FBUyxHQUFHLDRLQUE0SyxDQUFDO0FBQzdMLElBQUksZ0JBQWdCLEdBQUcsbUtBQW1LLENBQUM7QUFDM0wsSUFBSSxTQUFTLEdBQUcsa3VCQUFrdUIsQ0FBQztBQUNudkIsSUFBSSxnQkFBZ0IsR0FBRyx1K0NBQXUrQyxDQUFDO0FBQy8vQyxJQUFJLGNBQWMsR0FBRywyYUFBMmEsQ0FBQztBQUNqYyxJQUFJLGNBQWMsR0FBRyxvUEFBb1AsQ0FBQztBQUMxUSxJQUFJLHFCQUFxQixHQUFHLHVlQUF1ZSxDQUFDO0FBQ3BnQixJQUFJLFlBQVksR0FBRyxxUUFBcVEsQ0FBQztBQUN6UixJQUFJLGFBQWEsR0FBRywwU0FBMFMsQ0FBQztBQUMvVCxJQUFJLHVCQUF1QixHQUFHLDZNQUE2TSxDQUFDO0FBQzVPLElBQUkscUJBQXFCLEdBQUcsNk1BQTZNLENBQUM7QUFDMU8sSUFBSSxTQUFTLEdBQUcsK0ZBQStGLENBQUM7QUFDaEgsSUFBSSxnQkFBZ0IsR0FBRyxvT0FBb08sQ0FBQztBQUM1UCxJQUFJLHVCQUF1QixHQUFHLGdSQUFnUixDQUFDO0FBQy9TLElBQUksY0FBYyxHQUFHLG1RQUFtUSxDQUFDO0FBQ3pSLElBQUkscUJBQXFCLEdBQUcscVZBQXFWLENBQUM7QUFDbFgsSUFBSSxjQUFjLEdBQUcsaVJBQWlSLENBQUM7QUFDdlMsSUFBSSxxQkFBcUIsR0FBRyw2VkFBNlYsQ0FBQztBQUMxWCxJQUFJLFlBQVksR0FBRywybENBQTJsQyxDQUFDO0FBQy9tQyxJQUFJLG1CQUFtQixHQUFHLGdqQ0FBZ2pDLENBQUM7QUFDM2tDLElBQUksaUJBQWlCLEdBQUcsaUlBQWlJLENBQUM7QUFDMUosSUFBSSx3QkFBd0IsR0FBRyxnSUFBZ0ksQ0FBQztBQUNoSyxJQUFJLGFBQWEsR0FBRyxrVEFBa1QsQ0FBQztBQUN2VSxJQUFJLG9CQUFvQixHQUFHLDhUQUE4VCxDQUFDO0FBQzFWLElBQUksb0JBQW9CLEdBQUcsZ09BQWdPLENBQUM7QUFDNVAsSUFBSSxjQUFjLEdBQUcsbVVBQW1VLENBQUM7QUFDelYsSUFBSSxxQkFBcUIsR0FBRywyVUFBMlUsQ0FBQztBQUN4VyxJQUFJLGFBQWEsR0FBRyw4SEFBOEgsQ0FBQztBQUNuSixJQUFJLG9CQUFvQixHQUFHLDJJQUEySSxDQUFDO0FBQ3ZLLElBQUksY0FBYyxHQUFHLDBIQUEwSCxDQUFDO0FBQ2hKLElBQUksb0JBQW9CLEdBQUcsc1FBQXNRLENBQUM7QUFDbFMsSUFBSSwyQkFBMkIsR0FBRyx1VkFBdVYsQ0FBQztBQUMxWCxJQUFJLFlBQVksR0FBRyx1UkFBdVIsQ0FBQztBQUMzUyxJQUFJLG1CQUFtQixHQUFHLGlYQUFpWCxDQUFDO0FBQzVZLElBQUksMEJBQTBCLEdBQUcsMmFBQTJhLENBQUM7QUFDN2MsSUFBSSxtQkFBbUIsR0FBRyx1VUFBdVUsQ0FBQztBQUNsVyxJQUFJLGFBQWEsR0FBRyx3TUFBd00sQ0FBQztBQUM3TixJQUFJLGlCQUFpQixHQUFHLHFNQUFxTSxDQUFDO0FBQzlOLElBQUksZUFBZSxHQUFHLG1aQUFtWixDQUFDO0FBQzFhLElBQUksc0JBQXNCLEdBQUcsOFlBQThZLENBQUM7QUFDNWEsSUFBSSxhQUFhLEdBQUcseUhBQXlILENBQUM7QUFDOUksSUFBSSxvQkFBb0IsR0FBRywySkFBMkosQ0FBQztBQUN2TCxJQUFJLGlCQUFpQixHQUFHLDZIQUE2SCxDQUFDO0FBQ3RKLElBQUksc0JBQXNCLEdBQUcsaUtBQWlLLENBQUM7QUFDL0wsSUFBSSx3QkFBd0IsR0FBRywySUFBMkksQ0FBQztBQUMzSyxJQUFJLHFCQUFxQixHQUFHLHlRQUF5USxDQUFDO0FBQ3RTLElBQUksNEJBQTRCLEdBQUcsa01BQWtNLENBQUM7QUFDdE8sSUFBSSxjQUFjLEdBQUcsK01BQStNLENBQUM7QUFDck8sSUFBSSxxQkFBcUIsR0FBRyxpUEFBaVAsQ0FBQztBQUM5USxJQUFJLGdCQUFnQixHQUFHLHVMQUF1TCxDQUFDO0FBQy9NLElBQUksdUJBQXVCLEdBQUcsdVBBQXVQLENBQUM7QUFDdFIsSUFBSSxhQUFhLEdBQUcsMElBQTBJLENBQUM7QUFDL0osSUFBSSxvQkFBb0IsR0FBRyxrSkFBa0osQ0FBQztBQUM5SyxJQUFJLGdCQUFnQixHQUFHLDRHQUE0RyxDQUFDO0FBQ3BJLElBQUksYUFBYSxHQUFHLHVJQUF1SSxDQUFDO0FBQzVKLElBQUksb0JBQW9CLEdBQUcsdUtBQXVLLENBQUM7QUFDbk0sSUFBSSxjQUFjLEdBQUcscVJBQXFSLENBQUM7QUFDM1MsSUFBSSxxQkFBcUIsR0FBRyxxU0FBcVMsQ0FBQztBQUNsVSxJQUFJLGdCQUFnQixHQUFHLHNiQUFzYixDQUFDO0FBQzljLElBQUksdUJBQXVCLEdBQUcscWJBQXFiLENBQUM7QUFDcGQsSUFBSSxlQUFlLEdBQUcsNk9BQTZPLENBQUM7QUFDcFEsSUFBSSxzQkFBc0IsR0FBRyx3UUFBd1EsQ0FBQztBQUN0UyxJQUFJLGVBQWUsR0FBRywwWkFBMFosQ0FBQztBQUNqYixJQUFJLHNCQUFzQixHQUFHLDJaQUEyWixDQUFDO0FBQ3piLElBQUksaUJBQWlCLEdBQUcsaUpBQWlKLENBQUM7QUFDMUssSUFBSSx3QkFBd0IsR0FBRyw4SkFBOEosQ0FBQztBQUM5TCxJQUFJLGFBQWEsR0FBRyx1TUFBdU0sQ0FBQztBQUM1TixJQUFJLHFCQUFxQixHQUFHLGlRQUFpUSxDQUFDO0FBQzlSLElBQUksNEJBQTRCLEdBQUcsb1JBQW9SLENBQUM7QUFDeFQsSUFBSSxvQkFBb0IsR0FBRyw4T0FBOE8sQ0FBQztBQUMxUSxJQUFJLGFBQWEsR0FBRyw2SEFBNkgsQ0FBQztBQUNsSixJQUFJLG9CQUFvQixHQUFHLDBJQUEwSSxDQUFDO0FBQ3RLLElBQUksYUFBYSxHQUFHLDJjQUEyYyxDQUFDO0FBQ2hlLElBQUksb0JBQW9CLEdBQUcseWdCQUF5Z0IsQ0FBQztBQUNyaUIsSUFBSSxjQUFjLEdBQUcsc01BQXNNLENBQUM7QUFDNU4sSUFBSSxxQkFBcUIsR0FBRyxvTkFBb04sQ0FBQztBQUNqUCxJQUFJLGFBQWEsR0FBRyx3SEFBd0gsQ0FBQztBQUM3SSxJQUFJLG9CQUFvQixHQUFHLHFJQUFxSSxDQUFDO0FBQ2pLLElBQUksZUFBZSxHQUFHLHdIQUF3SCxDQUFDO0FBQy9JLElBQUksc0JBQXNCLEdBQUcsZ0lBQWdJLENBQUM7QUFDOUosSUFBSSxZQUFZLEdBQUcsdUtBQXVLLENBQUM7QUFDM0wsSUFBSSxtQkFBbUIsR0FBRyxtTUFBbU0sQ0FBQztBQUM5TixJQUFJLGNBQWMsR0FBRyx5c0JBQXlzQixDQUFDO0FBQy90QixJQUFJLE9BQU8sR0FBRyw0T0FBNE8sQ0FBQztBQUMzUCxJQUFJLFlBQVksR0FBRywwS0FBMEssQ0FBQztBQUM5TCxJQUFJLG1CQUFtQixHQUFHLGdrQkFBZ2tCLENBQUM7QUFDM2xCLElBQUksZ0JBQWdCLEdBQUcsOEhBQThILENBQUM7QUFDdEosSUFBSSxnQkFBZ0IsR0FBRyxrbEJBQWtsQixDQUFDO0FBQzFtQixJQUFJLG1CQUFtQixHQUFHLDBoQkFBMGhCLENBQUM7QUFDcmpCLElBQUksMEJBQTBCLEdBQUcsbzdCQUFvN0IsQ0FBQztBQUN0OUIsSUFBSSx1QkFBdUIsR0FBRyx1L0JBQXUvQixDQUFDO0FBQ3RoQyxJQUFJLGdCQUFnQixHQUFHLHFjQUFxYyxDQUFDO0FBQzdkLElBQUksWUFBWSxHQUFHLDBmQUEwZixDQUFDO0FBQzlnQixJQUFJLGFBQWEsR0FBRyxxV0FBcVcsQ0FBQztBQUMxWCxJQUFJLFVBQVUsR0FBRywrU0FBK1MsQ0FBQztBQUNqVSxJQUFJLFlBQVksR0FBRyxtbEJBQW1sQixDQUFDO0FBQ3ZtQixJQUFJLGVBQWUsR0FBRyxnOEJBQWc4QixDQUFDO0FBQ3Y5QixJQUFJLGFBQWEsR0FBRyxnckNBQWdyQyxDQUFDO0FBQ3JzQyxJQUFJLGNBQWMsR0FBRyxnTkFBZ04sQ0FBQztBQUN0TyxJQUFJLGlCQUFpQixHQUFHLHlWQUF5VixDQUFDO0FBQ2xYLElBQUksWUFBWSxHQUFHLHNjQUFzYyxDQUFDO0FBQzFkLElBQUksV0FBVyxHQUFHLDJuQkFBMm5CLENBQUM7QUFDOW9CLElBQUkscUJBQXFCLEdBQUcsK2dCQUErZ0IsQ0FBQztBQUM1aUIsSUFBSSxpQkFBaUIsR0FBRywyWkFBMlosQ0FBQztBQUNwYixJQUFJLFdBQVcsR0FBRyxpV0FBaVcsQ0FBQztBQUNwWCxJQUFJLGVBQWUsR0FBRyw2TkFBNk4sQ0FBQztBQUNwUCxJQUFJLGFBQWEsR0FBRyxrTEFBa0wsQ0FBQztBQUN2TSxJQUFJLGVBQWUsR0FBRyxvT0FBb08sQ0FBQztBQUMzUCxJQUFJLGNBQWMsR0FBRyxtUUFBbVEsQ0FBQztBQUN6UixJQUFJLGtCQUFrQixHQUFHLHFrQkFBcWtCLENBQUM7QUFDL2xCLElBQUksc0JBQXNCLEdBQUcsK2NBQStjLENBQUM7QUFDN2UsSUFBSSxvQkFBb0IsR0FBRyxtR0FBbUcsQ0FBQztBQUMvSCxJQUFJLG9CQUFvQixHQUFHLDZFQUE2RSxDQUFDO0FBQ3pHLElBQUkscUJBQXFCLEdBQUcsNkVBQTZFLENBQUM7QUFDMUcsSUFBSSxrQkFBa0IsR0FBRyw2RUFBNkUsQ0FBQztBQUN2RyxJQUFJLG9CQUFvQixHQUFHLDBJQUEwSSxDQUFDO0FBQ3RLLElBQUksbUJBQW1CLEdBQUcsNkVBQTZFLENBQUM7QUFDeEcsSUFBSSxpQkFBaUIsR0FBRyxxR0FBcUcsQ0FBQztBQUM5SCxJQUFJLHdCQUF3QixHQUFHLCtGQUErRixDQUFDO0FBQy9ILElBQUksdUJBQXVCLEdBQUcsbUhBQW1ILENBQUM7QUFDbEosSUFBSSxhQUFhLEdBQUcsNFFBQTRRLENBQUM7QUFDalMsSUFBSSxjQUFjLEdBQUcsZ0pBQWdKLENBQUM7QUFDdEssSUFBSSxrQkFBa0IsR0FBRyxxVEFBcVQsQ0FBQztBQUMvVSxJQUFJLHVCQUF1QixHQUFHLHNRQUFzUSxDQUFDO0FBQ3JTLElBQUksMEJBQTBCLEdBQUcsa2pCQUFrakIsQ0FBQztBQUNwbEIsSUFBSSxrQkFBa0IsR0FBRyxpRkFBaUYsQ0FBQztBQUMzRyxJQUFJLGdCQUFnQixHQUFHLGlLQUFpSyxDQUFDO0FBQ3pMLElBQUksb0JBQW9CLEdBQUcsOERBQThELENBQUM7QUFDMUYsSUFBSSxrQkFBa0IsR0FBRyw4RkFBOEYsQ0FBQztBQUN4SCxJQUFJLGtCQUFrQixHQUFHLCtFQUErRSxDQUFDO0FBQ3pHLElBQUksbUJBQW1CLEdBQUcsNkZBQTZGLENBQUM7QUFDeEgsSUFBSSxhQUFhLEdBQUcsNEpBQTRKLENBQUM7QUFDakwsSUFBSSx5QkFBeUIsR0FBRyxzSkFBc0osQ0FBQztBQUN2TCxJQUFJLHlCQUF5QixHQUFHLHFKQUFxSixDQUFDO0FBQ3RMLElBQUksZ0JBQWdCLEdBQUcsd0ZBQXdGLENBQUM7QUFDaEgsSUFBSSxnQkFBZ0IsR0FBRyxzT0FBc08sQ0FBQztBQUM5UCxJQUFJLGdCQUFnQixHQUFHLG9KQUFvSixDQUFDO0FBQzVLLElBQUksZ0JBQWdCLEdBQUcsb0dBQW9HLENBQUM7QUFDNUgsSUFBSSxnQkFBZ0IsR0FBRywwTEFBMEwsQ0FBQztBQUNsTixJQUFJLGdCQUFnQixHQUFHLG9LQUFvSyxDQUFDO0FBQzVMLElBQUksdUJBQXVCLEdBQUcsa0dBQWtHLENBQUM7QUFDakksSUFBSSxvQkFBb0IsR0FBRyx5RUFBeUUsQ0FBQztBQUNyRyxJQUFJLHVCQUF1QixHQUFHLGtHQUFrRyxDQUFDO0FBQ2pJLElBQUksb0JBQW9CLEdBQUcsZ1BBQWdQLENBQUM7QUFDNVEsSUFBSSw4QkFBOEIsR0FBRyw4RUFBOEUsQ0FBQztBQUNwSCxJQUFJLDRCQUE0QixHQUFHLGdEQUFnRCxDQUFDO0FBQ3BGLElBQUksNkJBQTZCLEdBQUcsa0RBQWtELENBQUM7QUFDdkYsSUFBSSx1QkFBdUIsR0FBRyxxRkFBcUYsQ0FBQztBQUNwSCxJQUFJLHVCQUF1QixHQUFHLHFGQUFxRixDQUFDO0FBQ3BILElBQUksZUFBZSxHQUFHLHlEQUF5RCxDQUFDO0FBQ2hGLElBQUksbUJBQW1CLEdBQUcsczNCQUFzM0IsQ0FBQztBQUNqNUIsSUFBSSx3QkFBd0IsR0FBRywwNEJBQTA0QixDQUFDO0FBQzE2QixJQUFJLHdCQUF3QixHQUFHLHM0QkFBczRCLENBQUM7QUFDdDZCLElBQUksdUJBQXVCLEdBQUcsNkdBQTZHLENBQUM7QUFDNUksSUFBSSxzQkFBc0IsR0FBRyxrSEFBa0gsQ0FBQztBQUNoSixJQUFJLHlCQUF5QixHQUFHLDRHQUE0RyxDQUFDO0FBQzdJLElBQUksb0JBQW9CLEdBQUcsNkZBQTZGLENBQUM7QUFDekgsSUFBSSxrQkFBa0IsR0FBRyw2TEFBNkwsQ0FBQztBQUN2TixJQUFJLG1CQUFtQixHQUFHLGdFQUFnRSxDQUFDO0FBQzNGLElBQUkscUJBQXFCLEdBQUcsNFRBQTRULENBQUM7QUFDelYsSUFBSSwyQkFBMkIsR0FBRyx5RkFBeUYsQ0FBQztBQUM1SCxJQUFJLDZCQUE2QixHQUFHLHNIQUFzSCxDQUFDO0FBQzNKLElBQUkseUJBQXlCLEdBQUcsb0pBQW9KLENBQUM7QUFDckwsSUFBSSxxQkFBcUIsR0FBRyxzVEFBc1QsQ0FBQztBQUNuVixJQUFJLG1CQUFtQixHQUFHLG9IQUFvSCxDQUFDO0FBQy9JLElBQUkscUJBQXFCLEdBQUcseU1BQXlNLENBQUM7QUFDdE8sSUFBSSx3QkFBd0IsR0FBRyxpT0FBaU8sQ0FBQztBQUNqUSxJQUFJLGlCQUFpQixHQUFHLGlGQUFpRixDQUFDO0FBQzFHLElBQUksaUJBQWlCLEdBQUcsOEZBQThGLENBQUM7QUFDdkgsSUFBSSxrQkFBa0IsR0FBRyxtTEFBbUwsQ0FBQztBQUM3TSxJQUFJLGNBQWMsR0FBRyxzSUFBc0ksQ0FBQztBQUM1SixJQUFJLGtCQUFrQixHQUFHLGlHQUFpRyxDQUFDO0FBQzNILElBQUksZ0JBQWdCLEdBQUcsa0VBQWtFLENBQUM7QUFDMUYsSUFBSSxtQkFBbUIsR0FBRyx3REFBd0QsQ0FBQztBQUNuRixJQUFJLDBCQUEwQixHQUFHLDJKQUEySixDQUFDO0FBQzdMLElBQUksa0JBQWtCLEdBQUcsOERBQThELENBQUM7QUFDeEYsSUFBSSx5QkFBeUIsR0FBRyw4SkFBOEosQ0FBQztBQUMvTCxJQUFJLGlCQUFpQixHQUFHLG1ZQUFtWSxDQUFDO0FBQzVaLElBQUksZ0JBQWdCLEdBQUcsdXVCQUF1dUIsQ0FBQztBQUMvdkIsSUFBSSxhQUFhLEdBQUcsc0RBQXNELENBQUM7QUFDM0UsSUFBSSxzQkFBc0IsR0FBRyx3REFBd0QsQ0FBQztBQUN0RixJQUFJLDZCQUE2QixHQUFHLGtYQUFrWCxDQUFDO0FBQ3ZaLElBQUksa0JBQWtCLEdBQUcsa2tCQUFra0IsQ0FBQztBQUM1bEIsSUFBSSxvQkFBb0IsR0FBRyxxZ0JBQXFnQixDQUFDO0FBQ2ppQixJQUFJLGFBQWEsR0FBRyw0UkFBNFIsQ0FBQztBQUNqVCxJQUFJLDhCQUE4QixHQUFHLGtNQUFrTSxDQUFDO0FBQ3hPLElBQUksNEJBQTRCLEdBQUcsOExBQThMLENBQUM7QUFDbE8sSUFBSSx5QkFBeUIsR0FBRyw0SUFBNEksQ0FBQztBQUM3SyxJQUFJLGlDQUFpQyxHQUFHLDRKQUE0SixDQUFDO0FBQ3JNLElBQUkseUJBQXlCLEdBQUcsMElBQTBJLENBQUM7QUFDM0ssSUFBSSx1QkFBdUIsR0FBRywySUFBMkksQ0FBQztBQUMxSyxJQUFJLDZCQUE2QixHQUFHLHVJQUF1SSxDQUFDO0FBQzVLLElBQUksb0JBQW9CLEdBQUcsd0VBQXdFLENBQUM7QUFDcEcsSUFBSSwyQkFBMkIsR0FBRyw4U0FBOFMsQ0FBQztBQUNqVixJQUFJLHlCQUF5QixHQUFHLDRDQUE0QyxDQUFDO0FBQzdFLElBQUksNkJBQTZCLEdBQUcsaUZBQWlGLENBQUM7QUFDdEgsSUFBSSx5QkFBeUIsR0FBRyxxS0FBcUssQ0FBQztBQUN0TSxJQUFJLGdCQUFnQixHQUFHLHFMQUFxTCxDQUFDO0FBQzdNLElBQUksMEJBQTBCLEdBQUcseUZBQXlGLENBQUM7QUFDM0gsSUFBSSwwQkFBMEIsR0FBRyw2RkFBNkYsQ0FBQztBQUMvSCxJQUFJLGNBQWMsR0FBRywrQkFBK0IsQ0FBQztBQUNyRCxJQUFJLGtCQUFrQixHQUFHLHFIQUFxSCxDQUFDO0FBQy9JLElBQUksNEJBQTRCLEdBQUcsa0RBQWtELENBQUM7QUFDdEYsSUFBSSw0QkFBNEIsR0FBRyw2RUFBNkUsQ0FBQztBQUNqSCxJQUFJLHlCQUF5QixHQUFHLDhDQUE4QyxDQUFDO0FBQy9FLElBQUksbUJBQW1CLEdBQUcsa0VBQWtFLENBQUM7QUFDN0YsSUFBSSxtQkFBbUIsR0FBRywrSUFBK0ksQ0FBQztBQUMxSyxJQUFJLGtCQUFrQixHQUFHLCtJQUErSSxDQUFDO0FBQ3pLLElBQUksc0JBQXNCLEdBQUcsa0RBQWtELENBQUM7QUFDaEYsSUFBSSxRQUFRLEdBQUcsOEhBQThILENBQUM7QUFDOUksSUFBSSxlQUFlLEdBQUcsdUpBQXVKLENBQUM7QUFDOUssSUFBSSxVQUFVLEdBQUcsZ0NBQWdDLENBQUM7QUFDbEQsSUFBSSxnQkFBZ0IsR0FBRywyRkFBMkYsQ0FBQztBQUNuSCxJQUFJLFdBQVcsR0FBRywycEJBQTJwQixDQUFDO0FBQzlxQixJQUFJLGNBQWMsR0FBRyx1UkFBdVIsQ0FBQztBQUM3UyxJQUFJLGlCQUFpQixHQUFHLDhRQUE4USxDQUFDO0FBQ3ZTLElBQUksVUFBVSxHQUFHLDZtQkFBNm1CLENBQUM7QUFDL25CLElBQUksMkJBQTJCLEdBQUcsd29CQUF3b0IsQ0FBQztBQUMzcUIsSUFBSSxTQUFTLEdBQUcsMklBQTJJLENBQUM7QUFDNUosSUFBSSxjQUFjLEdBQUcsK0xBQStMLENBQUM7QUFDck4sSUFBSSxxQkFBcUIsR0FBRyw2TUFBNk0sQ0FBQztBQUMxTyxJQUFJLGVBQWUsR0FBRywySUFBMkksQ0FBQztBQUNsSyxJQUFJLG1CQUFtQixHQUFHLG9JQUFvSSxDQUFDO0FBQy9KLElBQUksd0JBQXdCLEdBQUcsb0tBQW9LLENBQUM7QUFDcE0sSUFBSSwrQkFBK0IsR0FBRyxtTEFBbUwsQ0FBQztBQUMxTixJQUFJLHNCQUFzQixHQUFHLHlPQUF5TyxDQUFDO0FBQ3ZRLElBQUksNkJBQTZCLEdBQUcsd1FBQXdRLENBQUM7QUFDN1MsSUFBSSwwQkFBMEIsR0FBRyxvSkFBb0osQ0FBQztBQUN0TCxJQUFJLFlBQVksR0FBRyxpUkFBaVIsQ0FBQztBQUNyUyxJQUFJLG1CQUFtQixHQUFHLG9SQUFvUixDQUFDO0FBQy9TLElBQUksZ0JBQWdCLEdBQUcseUpBQXlKLENBQUM7QUFDakwsSUFBSSxZQUFZLEdBQUcsd0lBQXdJLENBQUM7QUFDNUosSUFBSSxnQkFBZ0IsR0FBRyx1SkFBdUosQ0FBQztBQUMvSyxJQUFJLHFCQUFxQixHQUFHLHNMQUFzTCxDQUFDO0FBQ25OLElBQUksNEJBQTRCLEdBQUcsOExBQThMLENBQUM7QUFDbE8sSUFBSSxtQkFBbUIsR0FBRywwUkFBMFIsQ0FBQztBQUNyVCxJQUFJLDBCQUEwQixHQUFHLDJUQUEyVCxDQUFDO0FBQzdWLElBQUksdUJBQXVCLEdBQUcsOEpBQThKLENBQUM7QUFDN0wsSUFBSSxnQkFBZ0IsR0FBRyx1a0JBQXVrQixDQUFDO0FBQy9sQixJQUFJLG1CQUFtQixHQUFHLCt2QkFBK3ZCLENBQUM7QUFDMXhCLElBQUksY0FBYyxHQUFHLDBxQkFBMHFCLENBQUM7QUFDaHNCLElBQUksaUJBQWlCLEdBQUcscTBCQUFxMEIsQ0FBQztBQUM5MUIsSUFBSSxjQUFjLEdBQUcsMG9CQUEwb0IsQ0FBQztBQUNocUIsSUFBSSxxQkFBcUIsR0FBRyx1d0NBQXV3QyxDQUFDO0FBQ3B5QyxJQUFJLGlCQUFpQixHQUFHLHl1QkFBeXVCLENBQUM7QUFDbHdCLElBQUksa0JBQWtCLEdBQUcsbW1CQUFtbUIsQ0FBQztBQUM3bkIsSUFBSSxPQUFPLEdBQUcsc1lBQXNZLENBQUM7QUFDclosSUFBSSxhQUFhLEdBQUcsd0ZBQXdGLENBQUM7QUFDN0csSUFBSSxpQkFBaUIsR0FBRyx1RkFBdUYsQ0FBQztBQUNoSCxJQUFJLFdBQVcsR0FBRywyVkFBMlYsQ0FBQztBQUM5VyxJQUFJLGtCQUFrQixHQUFHLGdlQUFnZSxDQUFDO0FBQzFmLElBQUkscUJBQXFCLEdBQUcsd2FBQXdhLENBQUM7QUFDcmMsSUFBSSxtQkFBbUIsR0FBRyxnY0FBZ2MsQ0FBQztBQUMzZCxJQUFJLE9BQU8sR0FBRyw2SkFBNkosQ0FBQztBQUM1SyxJQUFJLFlBQVksR0FBRyxxTkFBcU4sQ0FBQztBQUN6TyxJQUFJLFlBQVksR0FBRyxrTEFBa0wsQ0FBQztBQUN0TSxJQUFJLFVBQVUsR0FBRyx1TkFBdU4sQ0FBQztBQUN6TyxJQUFJLFVBQVUsR0FBRyw4R0FBOEcsQ0FBQztBQUNoSSxJQUFJLGdCQUFnQixHQUFHLDJRQUEyUSxDQUFDO0FBQ25TLElBQUksb0JBQW9CLEdBQUcsbWRBQW1kLENBQUM7QUFDL2UsSUFBSSxvQkFBb0IsR0FBRyx3ZEFBd2QsQ0FBQztBQUNwZixJQUFJLHVCQUF1QixHQUFHLHloQkFBeWhCLENBQUM7QUFDeGpCLElBQUkscUJBQXFCLEdBQUcsbWRBQW1kLENBQUM7QUFDaGYsSUFBSSxrQkFBa0IsR0FBRyx3ZEFBd2QsQ0FBQztBQUNsZixJQUFJLGNBQWMsR0FBRyw4SUFBOEksQ0FBQztBQUNwSyxJQUFJLGNBQWMsR0FBRywySUFBMkksQ0FBQztBQUNqSyxJQUFJLGVBQWUsR0FBRyw4SUFBOEksQ0FBQztBQUNySyxJQUFJLGVBQWUsR0FBRyxpS0FBaUssQ0FBQztBQUN4TCxJQUFJLG1CQUFtQixHQUFHLG1MQUFtTCxDQUFDO0FBQzlNLElBQUksbUJBQW1CLEdBQUcsZ0xBQWdMLENBQUM7QUFDM00sSUFBSSxzQkFBc0IsR0FBRyx3TUFBd00sQ0FBQztBQUN0TyxJQUFJLG9CQUFvQixHQUFHLG1MQUFtTCxDQUFDO0FBQy9NLElBQUksaUJBQWlCLEdBQUcsZ0xBQWdMLENBQUM7QUFDek0sSUFBSSxnQkFBZ0IsR0FBRyw4U0FBOFMsQ0FBQztBQUN0VSxJQUFJLHVCQUF1QixHQUFHLHlUQUF5VCxDQUFDO0FBQ3hWLElBQUksWUFBWSxHQUFHLDJJQUEySSxDQUFDO0FBQy9KLElBQUksaUJBQWlCLEdBQUcsb1dBQW9XLENBQUM7QUFDN1gsSUFBSSx3QkFBd0IsR0FBRyx1ZEFBdWQsQ0FBQztBQUN2ZixJQUFJLFFBQVEsR0FBRyxpU0FBaVMsQ0FBQztBQUNqVCxJQUFJLGNBQWMsR0FBRyw2NEJBQTY0QixDQUFDO0FBQ242QixJQUFJLFNBQVMsR0FBRyxzRkFBc0YsQ0FBQztBQUN2RyxJQUFJLGNBQWMsR0FBRyx5R0FBeUcsQ0FBQztBQUMvSCxJQUFJLHFCQUFxQixHQUFHLDBHQUEwRyxDQUFDO0FBQ3ZJLElBQUksYUFBYSxHQUFHLHFEQUFxRCxDQUFDO0FBQzFFLElBQUksb0JBQW9CLEdBQUcscURBQXFELENBQUM7QUFDakYsSUFBSSxnQkFBZ0IsR0FBRyx1RkFBdUYsQ0FBQztBQUMvRyxJQUFJLGNBQWMsR0FBRyw4SEFBOEgsQ0FBQztBQUNwSixJQUFJLGFBQWEsR0FBRyx3YUFBd2EsQ0FBQztBQUM3YixJQUFJLGdCQUFnQixHQUFHLGloQkFBaWhCLENBQUM7QUFDemlCLElBQUksdUJBQXVCLEdBQUcsb2pCQUFvakIsQ0FBQztBQUNubEIsSUFBSSxvQkFBb0IsR0FBRyxzYkFBc2IsQ0FBQztBQUNsZCxJQUFJLE9BQU8sR0FBRyxnTkFBZ04sQ0FBQztBQUMvTixJQUFJLFVBQVUsR0FBRyx5RkFBeUYsQ0FBQztBQUMzRyxJQUFJLGlCQUFpQixHQUFHLDhOQUE4TixDQUFDO0FBQ3ZQLElBQUksV0FBVyxHQUFHLHVSQUF1UixDQUFDO0FBQzFTLElBQUksVUFBVSxHQUFHLGdUQUFnVCxDQUFDO0FBQ2xVLElBQUksVUFBVSxHQUFHLDROQUE0TixDQUFDO0FBQzlPLElBQUksV0FBVyxHQUFHLDRHQUE0RyxDQUFDO0FBQy9ILElBQUksU0FBUyxHQUFHLG1JQUFtSSxDQUFDO0FBQ3BKLElBQUksV0FBVyxHQUFHLHdWQUF3VixDQUFDO0FBQzNXLElBQUksVUFBVSxHQUFHLHNLQUFzSyxDQUFDO0FBQ3hMLElBQUksU0FBUyxHQUFHLG1WQUFtVixDQUFDO0FBQ3BXLElBQUksUUFBUSxHQUFHLCtxQkFBK3FCLENBQUM7QUFDL3JCLElBQUksYUFBYSxHQUFHLCtxQkFBK3FCLENBQUM7QUFDcHNCLElBQUksWUFBWSxHQUFHLGlyQkFBaXJCLENBQUM7QUFDcnNCLElBQUksV0FBVyxHQUFHLDhxQkFBOHFCLENBQUM7QUFDanNCLElBQUksUUFBUSxHQUFHLGluQkFBaW5CLENBQUM7QUFDam9CLElBQUksZUFBZSxHQUFHLG1NQUFtTSxDQUFDO0FBQzFOLElBQUksYUFBYSxHQUFHLGtOQUFrTixDQUFDO0FBQ3ZPLElBQUksbUJBQW1CLEdBQUcsMlFBQTJRLENBQUM7QUFDdFMsSUFBSSwwQkFBMEIsR0FBRyx5T0FBeU8sQ0FBQztBQUMzUSxJQUFJLGtCQUFrQixHQUFHLDZTQUE2UyxDQUFDO0FBQ3ZVLElBQUksb0JBQW9CLEdBQUcsc1pBQXNaLENBQUM7QUFDbGIsSUFBSSxTQUFTLEdBQUcsd3ZCQUF3dkIsQ0FBQztBQUN6d0IsSUFBSSxVQUFVLEdBQUcsaXhCQUFpeEIsQ0FBQztBQUNueUIsSUFBSSxtQkFBbUIsR0FBRyxxbEJBQXFsQixDQUFDO0FBQ2huQixJQUFJLGVBQWUsR0FBRywrbUJBQSttQixDQUFDO0FBQ3RvQixJQUFJLGdCQUFnQixHQUFHLGduQkFBZ25CLENBQUM7QUFDeG9CLElBQUksZUFBZSxHQUFHLHdxQkFBd3FCLENBQUM7QUFDL3JCLElBQUksbUJBQW1CLEdBQUcsOFBBQThQLENBQUM7QUFDelIsSUFBSSx5QkFBeUIsR0FBRyw4UEFBOFAsQ0FBQztBQUMvUixJQUFJLG1CQUFtQixHQUFHLDhQQUE4UCxDQUFDO0FBQ3pSLElBQUksb0JBQW9CLEdBQUcsK1BBQStQLENBQUM7QUFDM1IsSUFBSSxpQkFBaUIsR0FBRyw4UEFBOFAsQ0FBQztBQUN2UixJQUFJLHVCQUF1QixHQUFHLDhQQUE4UCxDQUFDO0FBQzdSLElBQUksYUFBYSxHQUFHLHVaQUF1WixDQUFDO0FBQzVhLElBQUksZ0JBQWdCLEdBQUcsdWdCQUF1Z0IsQ0FBQztBQUMvaEIsSUFBSSxtQkFBbUIsR0FBRyx5akJBQXlqQixDQUFDO0FBQ3BsQixJQUFJLGlCQUFpQixHQUFHLHVXQUF1VyxDQUFDO0FBQ2hZLElBQUksc0JBQXNCLEdBQUcsMnVCQUEydUIsQ0FBQztBQUN6d0IsSUFBSSxnQkFBZ0IsR0FBRyxnckJBQWdyQixDQUFDO0FBQ3hzQixJQUFJLFFBQVEsR0FBRyxrTkFBa04sQ0FBQztBQUNsTyxJQUFJLFdBQVcsR0FBRywyVUFBMlUsQ0FBQztBQUM5VixJQUFJLGtCQUFrQixHQUFHLHduQkFBd25CLENBQUM7QUFDbHBCLElBQUksZUFBZSxHQUFHLG9YQUFvWCxDQUFDO0FBQzNZLElBQUksTUFBTSxHQUFHLDZMQUE2TCxDQUFDO0FBQzNNLElBQUksT0FBTyxHQUFHLGtaQUFrWixDQUFDO0FBQ2phLElBQUksVUFBVSxHQUFHLDJwQkFBMnBCLENBQUM7QUFDN3FCLElBQUksaUJBQWlCLEdBQUcsK21CQUErbUIsQ0FBQztBQUN4b0IsSUFBSSxXQUFXLEdBQUcsK3NCQUErc0IsQ0FBQztBQUNsdUIsSUFBSSxrQkFBa0IsR0FBRyxvMEJBQW8wQixDQUFDO0FBQzkxQixJQUFJLGNBQWMsR0FBRyw0Y0FBNGMsQ0FBQztBQUNsZSxJQUFJLE1BQU0sR0FBRywrZ0JBQStnQixDQUFDO0FBQzdoQixJQUFJLFNBQVMsR0FBRyw2dUJBQTZ1QixDQUFDO0FBQzl2QixJQUFJLFNBQVMsR0FBRyx1dEJBQXV0QixDQUFDO0FBQ3h1QixJQUFJLGdCQUFnQixHQUFHLHNFQUFzRSxDQUFDO0FBQzlGLElBQUksbUJBQW1CLEdBQUcsK0xBQStMLENBQUM7QUFDMU4sSUFBSSxhQUFhLEdBQUcsNlhBQTZYLENBQUM7QUFDbFosSUFBSSxXQUFXLEdBQUcsd0pBQXdKLENBQUM7QUFDM0ssSUFBSSxjQUFjLEdBQUcsOFBBQThQLENBQUM7QUFDcFIsSUFBSSxrQkFBa0IsR0FBRyw2WEFBNlgsQ0FBQztBQUN2WixJQUFJLHFCQUFxQixHQUFHLHloQkFBeWhCLENBQUM7QUFDdGpCLElBQUksbUJBQW1CLEdBQUcsbURBQW1ELENBQUM7QUFDOUUsSUFBSSxjQUFjLEdBQUcsZ0NBQWdDLENBQUM7QUFDdEQsSUFBSSxhQUFhLEdBQUcsK2JBQStiLENBQUM7QUFDcGQsSUFBSSxZQUFZLEdBQUcsaVZBQWlWLENBQUM7QUFDclcsSUFBSSxVQUFVLEdBQUcsbTRCQUFtNEIsQ0FBQztBQUNyNUIsSUFBSSxhQUFhLEdBQUcsNE5BQTROLENBQUM7QUFDalAsSUFBSSxhQUFhLEdBQUcsbVpBQW1aLENBQUM7QUFDeGEsSUFBSSxRQUFRLEdBQUcsZ0pBQWdKLENBQUM7QUFDaEssSUFBSSxRQUFRLEdBQUcsa2xCQUFrbEIsQ0FBQztBQUNsbUIsSUFBSSxTQUFTLEdBQUcsaWJBQWliLENBQUM7QUFDbGMsSUFBSSxjQUFjLEdBQUcsb3BCQUFvcEIsQ0FBQztBQUMxcUIsSUFBSSxNQUFNLEdBQUcsMm1EQUEybUQsQ0FBQztBQUN6bkQsSUFBSSxPQUFPLEdBQUcseUtBQXlLLENBQUM7QUFDeEwsSUFBSSxPQUFPLEdBQUcsbU9BQW1PLENBQUM7QUFDbFAsSUFBSSxXQUFXLEdBQUcseVZBQXlWLENBQUM7QUFDNVcsSUFBSSxVQUFVLEdBQUcsa3hCQUFreEIsQ0FBQztBQUNweUIsSUFBSSxVQUFVLEdBQUcsaWNBQWljLENBQUM7QUFDbmQsSUFBSSxZQUFZLEdBQUcsc1hBQXNYLENBQUM7QUFDMVksSUFBSSxTQUFTLEdBQUcseVNBQXlTLENBQUM7QUFDMVQsSUFBSSxZQUFZLEdBQUcsOFdBQThXLENBQUM7QUFDbFksSUFBSSxrQkFBa0IsR0FBRyxpWUFBaVksQ0FBQztBQUMzWixJQUFJLGtCQUFrQixHQUFHLDhUQUE4VCxDQUFDO0FBQ3hWLElBQUksa0JBQWtCLEdBQUcsNmdCQUE2Z0IsQ0FBQztBQUN2aUIsSUFBSSxlQUFlLEdBQUcsaWZBQWlmLENBQUM7QUFDeGdCLElBQUksZ0JBQWdCLEdBQUcsb1ZBQW9WLENBQUM7QUFDNVcsSUFBSSwyQkFBMkIsR0FBRyw2WEFBNlgsQ0FBQztBQUNoYSxJQUFJLHdCQUF3QixHQUFHLDBoQkFBMGhCLENBQUM7QUFDMWpCLElBQUkscUJBQXFCLEdBQUcsa2RBQWtkLENBQUM7QUFDL2UsSUFBSSxrQkFBa0IsR0FBRyw4ckJBQThyQixDQUFDO0FBQ3h0QixJQUFJLGNBQWMsR0FBRyxrYkFBa2IsQ0FBQztBQUN4YyxJQUFJLG1CQUFtQixHQUFHLHlzQkFBeXNCLENBQUM7QUFDcHVCLElBQUksc0JBQXNCLEdBQUcsK3RCQUErdEIsQ0FBQztBQUM3dkIsSUFBSSxrQkFBa0IsR0FBRywyTEFBMkwsQ0FBQztBQUNyTixJQUFJLGNBQWMsR0FBRyxnSEFBZ0gsQ0FBQztBQUN0SSxJQUFJLGNBQWMsR0FBRywra0NBQStrQyxDQUFDO0FBQ3JtQyxJQUFJLFlBQVksR0FBRywrWUFBK1ksQ0FBQztBQUNuYSxJQUFJLGNBQWMsR0FBRyxzTUFBc00sQ0FBQztBQUM1TixJQUFJLGlCQUFpQixHQUFHLDRLQUE0SyxDQUFDO0FBQ3JNLElBQUksYUFBYSxHQUFHLGk0QkFBaTRCLENBQUM7QUFDdDVCLElBQUksYUFBYSxHQUFHLHNWQUFzVixDQUFDO0FBQzNXLElBQUksYUFBYSxHQUFHLGtRQUFrUSxDQUFDO0FBQ3ZSLElBQUksYUFBYSxHQUFHLGs0QkFBazRCLENBQUM7QUFDdjVCLElBQUksbUJBQW1CLEdBQUcsbWlDQUFtaUMsQ0FBQztBQUM5akMsSUFBSSxlQUFlLEdBQUcseVFBQXlRLENBQUM7QUFDaFMsSUFBSSxlQUFlLEdBQUcsa2tCQUFra0IsQ0FBQztBQUN6bEIsSUFBSSxhQUFhLEdBQUcsdVNBQXVTLENBQUM7QUFDNVQsSUFBSSxhQUFhLEdBQUcsa1JBQWtSLENBQUM7QUFDdlMsSUFBSSxnQkFBZ0IsR0FBRyxtdkNBQW12QyxDQUFDO0FBQzN3QyxJQUFJLG9CQUFvQixHQUFHLHNPQUFzTyxDQUFDO0FBQ2xRLElBQUksbUJBQW1CLEdBQUcseXNCQUF5c0IsQ0FBQztBQUNwdUIsSUFBSSxrQkFBa0IsR0FBRywyeEJBQTJ4QixDQUFDO0FBQ3J6QixJQUFJLFdBQVcsR0FBRyx3UkFBd1IsQ0FBQztBQUMzUyxJQUFJLFFBQVEsR0FBRyx5aEJBQXloQixDQUFDO0FBQ3ppQixJQUFJLFFBQVEsR0FBRyx3L0JBQXcvQixDQUFDO0FBQ3hnQyxJQUFJLGVBQWUsR0FBRyxpakRBQWlqRCxDQUFDO0FBQ3hrRCxJQUFJLFVBQVUsR0FBRyx1N0JBQXU3QixDQUFDO0FBQ3o4QixJQUFJLFFBQVEsR0FBRyxtZ0JBQW1nQixDQUFDO0FBQ25oQixJQUFJLGFBQWEsR0FBRyxrTUFBa00sQ0FBQztBQUN2TixJQUFJLGVBQWUsR0FBRyxxVUFBcVUsQ0FBQztBQUM1VixJQUFJLGNBQWMsR0FBRyw4REFBOEQsQ0FBQztBQUNwRixJQUFJLHFCQUFxQixHQUFHLGtGQUFrRixDQUFDO0FBQy9HLElBQUksT0FBTyxHQUFHLGtPQUFrTyxDQUFDO0FBQ2pQLElBQUksWUFBWSxHQUFHLGtKQUFrSixDQUFDO0FBQ3RLLElBQUksVUFBVSxHQUFHLDJXQUEyVyxDQUFDO0FBQzdYLElBQUksUUFBUSxHQUFHLG8yQ0FBbzJDLENBQUM7QUFDcDNDLElBQUksZUFBZSxHQUFHLGd1QkFBZ3VCLENBQUM7QUFDdnZCLElBQUksUUFBUSxHQUFHLDZJQUE2SSxDQUFDO0FBQzdKLElBQUksaUJBQWlCLEdBQUcsOFZBQThWLENBQUM7QUFDdlgsSUFBSSxpQkFBaUIsR0FBRyxvYUFBb2EsQ0FBQztBQUM3YixJQUFJLGFBQWEsR0FBRyx1UkFBdVIsQ0FBQztBQUM1UyxJQUFJLG9CQUFvQixHQUFHLHluQkFBeW5CLENBQUM7QUFDcnBCLElBQUksZ0JBQWdCLEdBQUcsMmhCQUEyaEIsQ0FBQztBQUNuakIsSUFBSSxPQUFPLEdBQUcsc1dBQXNXLENBQUM7QUFDclgsSUFBSSxZQUFZLEdBQUcsbWhCQUFtaEIsQ0FBQztBQUN2aUIsSUFBSSxtQkFBbUIsR0FBRyxvbkJBQW9uQixDQUFDO0FBQy9vQixJQUFJLFlBQVksR0FBRyw2ZUFBNmUsQ0FBQztBQUNqZ0IsSUFBSSxZQUFZLEdBQUcsd09BQXdPLENBQUM7QUFDNVAsSUFBSSxTQUFTLEdBQUcsMExBQTBMLENBQUM7QUFDM00sSUFBSSxvQkFBb0IsR0FBRyxrV0FBa1csQ0FBQztBQUM5WCxJQUFJLGVBQWUsR0FBRyxnZUFBZ2UsQ0FBQztBQUN2ZixJQUFJLE9BQU8sR0FBRyxza0JBQXNrQixDQUFDO0FBQ3JsQixJQUFJLFlBQVksR0FBRyx5VUFBeVUsQ0FBQztBQUM3VixJQUFJLG1CQUFtQixHQUFHLHlvQkFBeW9CLENBQUM7QUFDcHFCLElBQUksV0FBVyxHQUFHLG1lQUFtZSxDQUFDO0FBQ3RmLElBQUksV0FBVyxHQUFHLG14QkFBbXhCLENBQUM7QUFDdHlCLElBQUksWUFBWSxHQUFHLDhsQkFBOGxCLENBQUM7QUFDbG5CLElBQUksbUJBQW1CLEdBQUcsdVlBQXVZLENBQUM7QUFDbGEsSUFBSSxtQkFBbUIsR0FBRywrUEFBK1AsQ0FBQztBQUMxUixJQUFJLG1CQUFtQixHQUFHLDRPQUE0TyxDQUFDO0FBQ3ZRLElBQUksb0JBQW9CLEdBQUcseU9BQXlPLENBQUM7QUFDclEsSUFBSSxpQkFBaUIsR0FBRyw4T0FBOE8sQ0FBQztBQUN2USxJQUFJLFlBQVksR0FBRyx1ZUFBdWUsQ0FBQztBQUMzZixJQUFJLFVBQVUsR0FBRyxrTUFBa00sQ0FBQztBQUNwTixJQUFJLFdBQVcsR0FBRyxnZEFBZ2QsQ0FBQztBQUNuZSxJQUFJLGtCQUFrQixHQUFHLG1wQkFBbXBCLENBQUM7QUFDN3FCLElBQUksWUFBWSxHQUFHLGtxQkFBa3FCLENBQUM7QUFDdHJCLElBQUksV0FBVyxHQUFHLDRZQUE0WSxDQUFDO0FBQy9aLElBQUksWUFBWSxHQUFHLHUrQkFBdStCLENBQUM7QUFDMy9CLElBQUksWUFBWSxHQUFHLDJUQUEyVCxDQUFDO0FBQy9VLElBQUksbUJBQW1CLEdBQUcscXhCQUFxeEIsQ0FBQztBQUNoekIsSUFBSSxTQUFTLEdBQUcsb1BBQW9QLENBQUM7QUFDclEsSUFBSSxVQUFVLEdBQUcsOFpBQThaLENBQUM7QUFDaGIsSUFBSSxXQUFXLEdBQUcsNmNBQTZjLENBQUM7QUFDaGUsSUFBSSxlQUFlLEdBQUcseWJBQXliLENBQUM7QUFDaGQsSUFBSSxpQkFBaUIsR0FBRyxpaEJBQWloQixDQUFDO0FBQzFpQixJQUFJLFlBQVksR0FBRyxrbEJBQWtsQixDQUFDO0FBQ3RtQixJQUFJLGVBQWUsR0FBRyw4RkFBOEYsQ0FBQztBQUNySCxJQUFJLE1BQU0sR0FBRywrUUFBK1EsQ0FBQztBQUM3UixJQUFJLFNBQVMsR0FBRyxzVUFBc1UsQ0FBQztBQUN2VixJQUFJLE9BQU8sR0FBRywySUFBMkksQ0FBQztBQUMxSixJQUFJLFlBQVksR0FBRywrS0FBK0ssQ0FBQztBQUNuTSxJQUFJLG1CQUFtQixHQUFHLDZVQUE2VSxDQUFDO0FBQ3hXLElBQUksWUFBWSxHQUFHLHdOQUF3TixDQUFDO0FBQzVPLElBQUksbUJBQW1CLEdBQUcscVpBQXFaLENBQUM7QUFDaGIsSUFBSSxVQUFVLEdBQUcsbWdDQUFtZ0MsQ0FBQztBQUNyaEMsSUFBSSxpQkFBaUIsR0FBRyxrdENBQWt0QyxDQUFDO0FBQzN1QyxJQUFJLHFCQUFxQixHQUFHLCtXQUErVyxDQUFDO0FBQzVZLElBQUksNEJBQTRCLEdBQUcsMGVBQTBlLENBQUM7QUFDOWdCLElBQUksWUFBWSxHQUFHLHdMQUF3TCxDQUFDO0FBQzVNLElBQUksbUJBQW1CLEdBQUcsNFZBQTRWLENBQUM7QUFDdlgsSUFBSSxZQUFZLEdBQUcsMldBQTJXLENBQUM7QUFDL1gsSUFBSSxtQkFBbUIsR0FBRywwakJBQTBqQixDQUFDO0FBQ3JsQixJQUFJLGdCQUFnQixHQUFHLDZTQUE2UyxDQUFDO0FBQ3JVLElBQUksdUJBQXVCLEdBQUcsK2FBQSthLENBQUM7QUFDOWMsSUFBSSxZQUFZLEdBQUcsNEpBQTRKLENBQUM7QUFDaEwsSUFBSSxtQkFBbUIsR0FBRyw0VEFBNFQsQ0FBQztBQUN2VixJQUFJLGNBQWMsR0FBRyw2U0FBNlMsQ0FBQztBQUNuVSxJQUFJLFdBQVcsR0FBRyxrTEFBa0wsQ0FBQztBQUNyTSxJQUFJLGtCQUFrQixHQUFHLGtWQUFrVixDQUFDO0FBQzVXLElBQUksZUFBZSxHQUFHLDByQkFBMHJCLENBQUM7QUFDanRCLElBQUksc0JBQXNCLEdBQUcseTRCQUF5NEIsQ0FBQztBQUN2NkIsSUFBSSxhQUFhLEdBQUcsNlBBQTZQLENBQUM7QUFDbFIsSUFBSSxvQkFBb0IsR0FBRyw0WkFBNFosQ0FBQztBQUN4YixJQUFJLGdCQUFnQixHQUFHLGtyQkFBa3JCLENBQUM7QUFDMXNCLElBQUksdUJBQXVCLEdBQUcscTNCQUFxM0IsQ0FBQztBQUNwNUIsSUFBSSxXQUFXLEdBQUcsa2RBQWtkLENBQUM7QUFDcmUsSUFBSSxrQkFBa0IsR0FBRyxzcUJBQXNxQixDQUFDO0FBQ2hzQixJQUFJLGFBQWEsR0FBRyxpSUFBaUksQ0FBQztBQUN0SixJQUFJLHNCQUFzQixHQUFHLHlVQUF5VSxDQUFDO0FBQ3ZXLElBQUksZ0JBQWdCLEdBQUcsb1BBQW9QLENBQUM7QUFDNVEsSUFBSSxnQkFBZ0IsR0FBRyxtVUFBbVUsQ0FBQztBQUMzVixJQUFJLHFCQUFxQixHQUFHLG1MQUFtTCxDQUFDO0FBQ2hOLElBQUksVUFBVSxHQUFHLDZJQUE2SSxDQUFDO0FBQy9KLElBQUksY0FBYyxHQUFHLDRNQUE0TSxDQUFDO0FBQ2xPLElBQUksYUFBYSxHQUFHLHlVQUF5VSxDQUFDO0FBQzlWLElBQUksUUFBUSxHQUFHLHdMQUF3TCxDQUFDO0FBQ3hNLElBQUksV0FBVyxHQUFHLCtRQUErUSxDQUFDO0FBQ2xTLElBQUksa0JBQWtCLEdBQUcsNlJBQTZSLENBQUM7QUFDdlQsSUFBSSxjQUFjLEdBQUcsNlBBQTZQLENBQUM7QUFDblIsSUFBSSxxQkFBcUIsR0FBRyxpWkFBaVosQ0FBQztBQUM5YSxJQUFJLGNBQWMsR0FBRyxxUkFBcVIsQ0FBQztBQUMzUyxJQUFJLHFCQUFxQixHQUFHLHVWQUF1VixDQUFDO0FBQ3BYLElBQUksV0FBVyxHQUFHLDhxQ0FBOHFDLENBQUM7QUFDanNDLElBQUksa0JBQWtCLEdBQUcsaTNDQUFpM0MsQ0FBQztBQUMzNEMsSUFBSSxhQUFhLEdBQUcsMk9BQTJPLENBQUM7QUFDaFEsSUFBSSxZQUFZLEdBQUcsMkdBQTJHLENBQUM7QUFDL0gsSUFBSSxnQkFBZ0IsR0FBRywwUUFBMFEsQ0FBQztBQUNsUyxJQUFJLG1CQUFtQixHQUFHLHVMQUF1TCxDQUFDO0FBQ2xOLElBQUksYUFBYSxHQUFHLHVSQUF1UixDQUFDO0FBQzVTLElBQUksb0JBQW9CLEdBQUcsMmJBQTJiLENBQUM7QUFDdmQsSUFBSSxnQkFBZ0IsR0FBRyxvUkFBb1IsQ0FBQztBQUM1UyxJQUFJLHVCQUF1QixHQUFHLDJiQUEyYixDQUFDO0FBQzFkLElBQUksV0FBVyxHQUFHLDJSQUEyUixDQUFDO0FBQzlTLElBQUksa0JBQWtCLEdBQUcsc2lCQUFzaUIsQ0FBQztBQUNoa0IsSUFBSSxlQUFlLEdBQUcsNldBQTZXLENBQUM7QUFDcFksSUFBSSxZQUFZLEdBQUcsK1NBQStTLENBQUM7QUFDblUsSUFBSSxtQkFBbUIsR0FBRyxtZEFBbWQsQ0FBQztBQUM5ZSxJQUFJLGFBQWEsR0FBRyxvZEFBb2QsQ0FBQztBQUN6ZSxJQUFJLGNBQWMsR0FBRyxxWkFBcVosQ0FBQztBQUMzYSxJQUFJLHFCQUFxQixHQUFHLHlqQkFBeWpCLENBQUM7QUFDdGxCLElBQUksZ0JBQWdCLEdBQUcseU9BQXlPLENBQUM7QUFDalEsSUFBSSx1QkFBdUIsR0FBRyw0WkFBNFosQ0FBQztBQUMzYixJQUFJLGFBQWEsR0FBRyxxVUFBcVUsQ0FBQztBQUMxVixJQUFJLE9BQU8sR0FBRywrT0FBK08sQ0FBQztBQUM5UCxJQUFJLFVBQVUsR0FBRyxtTkFBbU4sQ0FBQztBQUNyTyxJQUFJLGFBQWEsR0FBRyxtVUFBbVUsQ0FBQztBQUN4VixJQUFJLG9CQUFvQixHQUFHLGdUQUFnVCxDQUFDO0FBQzVVLElBQUksY0FBYyxHQUFHLDRzQkFBNHNCLENBQUM7QUFDbHVCLElBQUkscUJBQXFCLEdBQUcsZ3ZCQUFndkIsQ0FBQztBQUM3d0IsSUFBSSxjQUFjLEdBQUcsbWVBQW1lLENBQUM7QUFDemYsSUFBSSxxQkFBcUIsR0FBRyx5ZkFBeWYsQ0FBQztBQUN0aEIsSUFBSSxjQUFjLEdBQUcsNE5BQTROLENBQUM7QUFDbFAsSUFBSSxVQUFVLEdBQUcsbVNBQW1TLENBQUM7QUFDclQsSUFBSSxrQkFBa0IsR0FBRywrcEJBQStwQixDQUFDO0FBQ3pyQixJQUFJLHlCQUF5QixHQUFHLGkwQkFBaTBCLENBQUM7QUFDbDJCLElBQUksaUJBQWlCLEdBQUcsdVZBQXVWLENBQUM7QUFDaFgsSUFBSSxnQkFBZ0IsR0FBRyxtWEFBbVgsQ0FBQztBQUMzWSxJQUFJLGdCQUFnQixHQUFHLHlYQUF5WCxDQUFDO0FBQ2paLElBQUksZ0JBQWdCLEdBQUcsMlhBQTJYLENBQUM7QUFDblosSUFBSSxnQkFBZ0IsR0FBRyw0WUFBNFksQ0FBQztBQUNwYSxJQUFJLGdCQUFnQixHQUFHLDhZQUE4WSxDQUFDO0FBQ3RhLElBQUksZ0JBQWdCLEdBQUcsMllBQTJZLENBQUM7QUFDbmEsSUFBSSxXQUFXLEdBQUcsNkhBQTZILENBQUM7QUFDaEosSUFBSSxrQkFBa0IsR0FBRyx5TUFBeU0sQ0FBQztBQUNuTyxJQUFJLGlCQUFpQixHQUFHLHFJQUFxSSxDQUFDO0FBQzlKLElBQUksb0JBQW9CLEdBQUcsNE1BQTRNLENBQUM7QUFDeE8sSUFBSSxVQUFVLEdBQUcsNkhBQTZILENBQUM7QUFDL0ksSUFBSSxTQUFTLEdBQUcsbWJBQW1iLENBQUM7QUFDcGMsSUFBSSxXQUFXLEdBQUcsdVZBQXVWLENBQUM7QUFDMVcsSUFBSSxVQUFVLEdBQUcsdU9BQXVPLENBQUM7QUFDelAsSUFBSSxhQUFhLEdBQUcsc1JBQXNSLENBQUM7QUFDM1MsSUFBSSxlQUFlLEdBQUcsbUpBQW1KLENBQUM7QUFDMUssSUFBSSxXQUFXLEdBQUcsdVJBQXVSLENBQUM7QUFDMVMsSUFBSSxPQUFPLEdBQUcsNkNBQTZDLENBQUM7QUFDNUQsSUFBSSxjQUFjLEdBQUcsbU5BQW1OLENBQUM7QUFDek8sSUFBSSxZQUFZLEdBQUcsbUVBQW1FLENBQUM7QUFDdkYsSUFBSSxtQkFBbUIsR0FBRywrRkFBK0YsQ0FBQztBQUMxSCxJQUFJLGdCQUFnQixHQUFHLG9FQUFvRSxDQUFDO0FBQzVGLElBQUksZ0JBQWdCLEdBQUcscTRCQUFxNEIsQ0FBQztBQUM3NUIsSUFBSSxpQkFBaUIsR0FBRywyZEFBMmQsQ0FBQztBQUNwZixJQUFJLGFBQWEsR0FBRyx3UkFBd1IsQ0FBQztBQUM3UyxJQUFJLG9CQUFvQixHQUFHLHdLQUF3SyxDQUFDO0FBQ3BNLElBQUksV0FBVyxHQUFHLHlJQUF5SSxDQUFDO0FBQzVKLElBQUksa0JBQWtCLEdBQUcsMkxBQTJMLENBQUM7QUFDck4sSUFBSSxrQkFBa0IsR0FBRyxva0JBQW9rQixDQUFDO0FBQzlsQixJQUFJLFdBQVcsR0FBRyxzUUFBc1EsQ0FBQztBQUN6UixJQUFJLGtCQUFrQixHQUFHLHNUQUFzVCxDQUFDO0FBQ2hWLElBQUksb0JBQW9CLEdBQUcsaUZBQWlGLENBQUM7QUFDN0csSUFBSSxZQUFZLEdBQUcsNFFBQTRRLENBQUM7QUFDaFMsSUFBSSxhQUFhLEdBQUcsbUlBQW1JLENBQUM7QUFDeEosSUFBSSxhQUFhLEdBQUcsc0RBQXNELENBQUM7QUFDM0UsSUFBSSxhQUFhLEdBQUcscUhBQXFILENBQUM7QUFDMUksSUFBSSxhQUFhLEdBQUcsK0pBQStKLENBQUM7QUFDcEwsSUFBSSxhQUFhLEdBQUcsZ0hBQWdILENBQUM7QUFDckksSUFBSSxhQUFhLEdBQUcsbUtBQW1LLENBQUM7QUFDeEwsSUFBSSxhQUFhLEdBQUcsMkhBQTJILENBQUM7QUFDaEosSUFBSSxhQUFhLEdBQUcsb0RBQW9ELENBQUM7QUFDekUsSUFBSSxxQkFBcUIsR0FBRyx3RUFBd0UsQ0FBQztBQUNyRyxJQUFJLFlBQVksR0FBRyxnSUFBZ0ksQ0FBQztBQUNwSixJQUFJLFlBQVksR0FBRyxvT0FBb08sQ0FBQztBQUN4UCxJQUFJLG9CQUFvQixHQUFHLCtFQUErRSxDQUFDO0FBQzNHLElBQUksZ0JBQWdCLEdBQUcsd0ZBQXdGLENBQUM7QUFDaEgsSUFBSSx1QkFBdUIsR0FBRyxpTkFBaU4sQ0FBQztBQUNoUCxJQUFJLFdBQVcsR0FBRyw0SUFBNEksQ0FBQztBQUMvSixJQUFJLGVBQWUsR0FBRywwSEFBMEgsQ0FBQztBQUNqSixJQUFJLGdCQUFnQixHQUFHLHNPQUFzTyxDQUFDO0FBQzlQLElBQUksWUFBWSxHQUFHLGlEQUFpRCxDQUFDO0FBQ3JFLElBQUksbUJBQW1CLEdBQUcsK0RBQStELENBQUM7QUFDMUYsSUFBSSxhQUFhLEdBQUcsZ0hBQWdILENBQUM7QUFDckksSUFBSSxjQUFjLEdBQUcsMkZBQTJGLENBQUM7QUFDakgsSUFBSSxXQUFXLEdBQUcseUVBQXlFLENBQUM7QUFDNUYsSUFBSSxrQkFBa0IsR0FBRyx1RkFBdUYsQ0FBQztBQUNqSCxJQUFJLGFBQWEsR0FBRyw0S0FBNEssQ0FBQztBQUNqTSxJQUFJLG9CQUFvQixHQUFHLDBMQUEwTCxDQUFDO0FBQ3ROLElBQUksV0FBVyxHQUFHLDZEQUE2RCxDQUFDO0FBQ2hGLElBQUksYUFBYSxHQUFHLHNWQUFzVixDQUFDO0FBQzNXLElBQUksb0JBQW9CLEdBQUcsbVdBQW1XLENBQUM7QUFDL1gsSUFBSSxrQkFBa0IsR0FBRyw4SUFBOEksQ0FBQztBQUN4SyxJQUFJLHlCQUF5QixHQUFHLG9NQUFvTSxDQUFDO0FBQ3JPLElBQUksY0FBYyxHQUFHLG9DQUFvQyxDQUFDO0FBQzFELElBQUkscUJBQXFCLEdBQUcsOERBQThELENBQUM7QUFDM0YsSUFBSSxPQUFPLEdBQUcsd1BBQXdQLENBQUM7QUFDdlEsSUFBSSxVQUFVLEdBQUcscVlBQXFZLENBQUM7QUFDdlosSUFBSSxPQUFPLEdBQUcsb29CQUFvb0IsQ0FBQztBQUNucEIsSUFBSSw0QkFBNEIsR0FBRyw0UkFBNFIsQ0FBQztBQUNoVSxJQUFJLG1DQUFtQyxHQUFHLGtTQUFrUyxDQUFDO0FBQzdVLElBQUksUUFBUSxHQUFHLDhyQkFBOHJCLENBQUM7QUFDOXNCLElBQUksYUFBYSxHQUFHLHk1QkFBeTVCLENBQUM7QUFDOTZCLElBQUksZUFBZSxHQUFHLDhJQUE4SSxDQUFDO0FBQ3JLLElBQUksWUFBWSxHQUFHLGlsQkFBaWxCLENBQUM7QUFDcm1CLElBQUksV0FBVyxHQUFHLHVDQUF1QyxDQUFDO0FBQzFELElBQUksY0FBYyxHQUFHLDRIQUE0SCxDQUFDO0FBQ2xKLElBQUkscUJBQXFCLEdBQUcsbUpBQW1KLENBQUM7QUFDaEwsSUFBSSxtQkFBbUIsR0FBRywyTEFBMkwsQ0FBQztBQUN0TixJQUFJLGlCQUFpQixHQUFHLHVIQUF1SCxDQUFDO0FBQ2hKLElBQUksU0FBUyxHQUFHLCtzQkFBK3NCLENBQUM7QUFDaHVCLElBQUksVUFBVSxHQUFHLDZrQkFBNmtCLENBQUM7QUFDL2xCLElBQUksVUFBVSxHQUFHLHVwQkFBdXBCLENBQUM7QUFDenFCLElBQUksT0FBTyxHQUFHLGtLQUFrSyxDQUFDO0FBQ2pMLElBQUksUUFBUSxHQUFHLGlIQUFpSCxDQUFDO0FBQ2pJLElBQUkseUJBQXlCLEdBQUcsaVpBQWlaLENBQUM7QUFDbGIsSUFBSSxZQUFZLEdBQUcsa3hCQUFreEIsQ0FBQztBQUN0eUIsSUFBSSx3QkFBd0IsR0FBRyxvN0JBQW83QixDQUFDO0FBQ3A5QixJQUFJLHdCQUF3QixHQUFHLDhnQ0FBOGdDLENBQUM7QUFDOWlDLElBQUksYUFBYSxHQUFHLDBHQUEwRyxDQUFDO0FBQy9ILElBQUksWUFBWSxHQUFHLGtWQUFrVixDQUFDO0FBQ3RXLElBQUksY0FBYyxHQUFHLHVLQUF1SyxDQUFDO0FBQzdMLElBQUksaUJBQWlCLEdBQUcsc1FBQXNRLENBQUM7QUFDL1IsSUFBSSxtQkFBbUIsR0FBRyx1cUJBQXVxQixDQUFDO0FBQ2xzQixJQUFJLG9CQUFvQixHQUFHLDhTQUE4UyxDQUFDO0FBQzFVLElBQUksa0JBQWtCLEdBQUcsMFFBQTBRLENBQUM7QUFDcFMsSUFBSSxnQkFBZ0IsR0FBRyxxTEFBcUwsQ0FBQztBQUM3TSxJQUFJLHlCQUF5QixHQUFHLDRjQUE0YyxDQUFDO0FBQzdlLElBQUksaUJBQWlCLEdBQUcsd05BQXdOLENBQUM7QUFDalAsSUFBSSxlQUFlLEdBQUcscU1BQXFNLENBQUM7QUFDNU4sSUFBSSxZQUFZLEdBQUcsMklBQTJJLENBQUM7QUFDL0osSUFBSSxlQUFlLEdBQUcseVBBQXlQLENBQUM7QUFDaFIsSUFBSSxpQkFBaUIsR0FBRyxrVkFBa1YsQ0FBQztBQUMzVyxJQUFJLGtCQUFrQixHQUFHLDRTQUE0UyxDQUFDO0FBQ3RVLElBQUksZ0JBQWdCLEdBQUcsNlBBQTZQLENBQUM7QUFDclIsSUFBSSxrQkFBa0IsR0FBRywwT0FBME8sQ0FBQztBQUNwUSxJQUFJLHlCQUF5QixHQUFHLDRNQUE0TSxDQUFDO0FBQzdPLElBQUksZ0JBQWdCLEdBQUcsa1JBQWtSLENBQUM7QUFDMVMsSUFBSSxnQkFBZ0IsR0FBRyx5S0FBeUssQ0FBQztBQUNqTSxJQUFJLGFBQWEsR0FBRyxrYUFBa2EsQ0FBQztBQUN2YixJQUFJLGVBQWUsR0FBRyw0eUJBQTR5QixDQUFDO0FBQ24wQixJQUFJLGtCQUFrQixHQUFHLDZVQUE2VSxDQUFDO0FBQ3ZXLElBQUksZUFBZSxHQUFHLHNjQUFzYyxDQUFDO0FBQzdkLElBQUksT0FBTyxHQUFHLDBYQUEwWCxDQUFDO0FBQ3pZLElBQUksVUFBVSxHQUFHLHlrQkFBeWtCLENBQUM7QUFDM2xCLElBQUksb0JBQW9CLEdBQUcsNk1BQTZNLENBQUM7QUFDek8sSUFBSSwwQkFBMEIsR0FBRywwVkFBMFYsQ0FBQztBQUM1WCxJQUFJLGFBQWEsR0FBRyxrakNBQWtqQyxDQUFDO0FBQ3ZrQyxJQUFJLFdBQVcsR0FBRyw4U0FBOFMsQ0FBQztBQUNqVSxJQUFJLGNBQWMsR0FBRyxpV0FBaVcsQ0FBQztBQUN2WCxJQUFJLFNBQVMsR0FBRyxxTUFBcU0sQ0FBQztBQUN0TixJQUFJLFNBQVMsR0FBRyxzTEFBc0wsQ0FBQztBQUN2TSxJQUFJLGFBQWEsR0FBRyw4R0FBOEcsQ0FBQztBQUNuSSxJQUFJLGNBQWMsR0FBRyx5R0FBeUcsQ0FBQztBQUMvSCxJQUFJLHFCQUFxQixHQUFHLCtWQUErVixDQUFDO0FBQzVYLElBQUksU0FBUyxHQUFHLHdNQUF3TSxDQUFDO0FBQ3pOLElBQUksY0FBYyxHQUFHLG9LQUFvSyxDQUFDO0FBQzFMLElBQUkscUJBQXFCLEdBQUcsbUtBQW1LLENBQUM7QUFDaE0sSUFBSSxlQUFlLEdBQUcsc2RBQXNkLENBQUM7QUFDN2UsSUFBSSxzQkFBc0IsR0FBRyx5WkFBeVosQ0FBQztBQUN2YixJQUFJLGdCQUFnQixHQUFHLGtNQUFrTSxDQUFDO0FBQzFOLElBQUksb0JBQW9CLEdBQUcsc1VBQXNVLENBQUM7QUFDbFcsSUFBSSwyQkFBMkIsR0FBRyx5VEFBeVQsQ0FBQztBQUM1VixJQUFJLGlCQUFpQixHQUFHLDBaQUEwWixDQUFDO0FBQ25iLElBQUksd0JBQXdCLEdBQUcsNFlBQTRZLENBQUM7QUFDNWEsSUFBSSxRQUFRLEdBQUcscUhBQXFILENBQUM7QUFDckksSUFBSSxhQUFhLEdBQUcsbUpBQW1KLENBQUM7QUFDeEssSUFBSSxZQUFZLEdBQUcsNkhBQTZILENBQUM7QUFDakosSUFBSSxpQkFBaUIsR0FBRyxzSUFBc0ksQ0FBQztBQUMvSixJQUFJLGtCQUFrQixHQUFHLHdQQUF3UCxDQUFDO0FBQ2xSLElBQUksY0FBYyxHQUFHLHVRQUF1USxDQUFDO0FBQzdSLElBQUkscUJBQXFCLEdBQUcsNktBQTZLLENBQUM7QUFDMU0sSUFBSSxZQUFZLEdBQUcseVRBQXlULENBQUM7QUFDN1UsSUFBSSxtQkFBbUIsR0FBRyxzWEFBc1gsQ0FBQztBQUNqWixJQUFJLHdCQUF3QixHQUFHLDBHQUEwRyxDQUFDO0FBQzFJLElBQUkseUJBQXlCLEdBQUcsNk1BQTZNLENBQUM7QUFDOU8sSUFBSSwrQkFBK0IsR0FBRyx3T0FBd08sQ0FBQztBQUMvUSxJQUFJLHNDQUFzQyxHQUFHLHdUQUF3VCxDQUFDO0FBQ3RXLElBQUksNkJBQTZCLEdBQUcsZ1JBQWdSLENBQUM7QUFDclQsSUFBSSxtQkFBbUIsR0FBRyx5VUFBeVUsQ0FBQztBQUNwVyxJQUFJLG9CQUFvQixHQUFHLHlJQUF5SSxDQUFDO0FBQ3JLLElBQUksaUJBQWlCLEdBQUcscUVBQXFFLENBQUM7QUFDOUYsSUFBSSxrQkFBa0IsR0FBRyw2SEFBNkgsQ0FBQztBQUN2SixJQUFJLHVCQUF1QixHQUFHLCt0QkFBK3RCLENBQUM7QUFDOXZCLElBQUkscUJBQXFCLEdBQUcsNHhCQUE0eEIsQ0FBQztBQUN6ekIsSUFBSSxhQUFhLEdBQUcsdVZBQXVWLENBQUM7QUFDNVcsSUFBSSxhQUFhLEdBQUcsc1BBQXNQLENBQUM7QUFDM1EsSUFBSSxZQUFZLEdBQUcseU1BQXlNLENBQUM7QUFDN04sSUFBSSxnQkFBZ0IsR0FBRyw4SUFBOEksQ0FBQztBQUN0SyxJQUFJLHVCQUF1QixHQUFHLHVMQUF1TCxDQUFDO0FBQ3ROLElBQUksV0FBVyxHQUFHLDhKQUE4SixDQUFDO0FBQ2pMLElBQUksa0JBQWtCLEdBQUcsb0xBQW9MLENBQUM7QUFDOU0sSUFBSSxlQUFlLEdBQUcsc0pBQXNKLENBQUM7QUFDN0ssSUFBSSxZQUFZLEdBQUcsdVFBQXVRLENBQUM7QUFDM1IsSUFBSSxjQUFjLEdBQUcsb1hBQW9YLENBQUM7QUFDMVksSUFBSSxjQUFjLEdBQUcsK2FBQSthLENBQUM7QUFDcmMsSUFBSSxxQkFBcUIsR0FBRywwdUJBQTB1QixDQUFDO0FBQ3Z3QixJQUFJLHdCQUF3QixHQUFHLG9IQUFvSCxDQUFDO0FBQ3BKLElBQUksdUJBQXVCLEdBQUcsa1NBQWtTLENBQUM7QUFDalUsSUFBSSx1QkFBdUIsR0FBRyx1UkFBdVIsQ0FBQztBQUN0VCxJQUFJLFlBQVksR0FBRyw4TEFBOEwsQ0FBQztBQUNsTixJQUFJLFNBQVMsR0FBRyxnSUFBZ0ksQ0FBQztBQUNqSixJQUFJLFFBQVEsR0FBRyxnSUFBZ0ksQ0FBQztBQUNoSixJQUFJLGlCQUFpQixHQUFHLHlKQUF5SixDQUFDO0FBQ2xMLElBQUksd0JBQXdCLEdBQUcsdU5BQXVOLENBQUM7QUFDdlAsSUFBSSxlQUFlLEdBQUcsc0tBQXNLLENBQUM7QUFDN0wsSUFBSSxzQkFBc0IsR0FBRyx1TkFBdU4sQ0FBQztBQUNyUCxJQUFJLFlBQVksR0FBRyxnTUFBZ00sQ0FBQztBQUNwTixJQUFJLG1CQUFtQixHQUFHLDJRQUEyUSxDQUFDO0FBQ3RTLElBQUksZ0JBQWdCLEdBQUcsOE1BQThNLENBQUM7QUFDdE8sSUFBSSx1QkFBdUIsR0FBRyxtYkFBbWIsQ0FBQztBQUNsZCxJQUFJLGVBQWUsR0FBRywrTEFBK0wsQ0FBQztBQUN0TixJQUFJLGNBQWMsR0FBRyxnUUFBZ1EsQ0FBQztBQUN0UixJQUFJLHFCQUFxQixHQUFHLDBWQUEwVixDQUFDO0FBQ3ZYLElBQUksWUFBWSxHQUFHLDJxQkFBMnFCLENBQUM7QUFDL3JCLElBQUksa0JBQWtCLEdBQUcsczNCQUFzM0IsQ0FBQztBQUNoNUIsSUFBSSxxQkFBcUIsR0FBRyx3NkJBQXc2QixDQUFDO0FBQ3I4QixJQUFJLGVBQWUsR0FBRywyN0JBQTI3QixDQUFDO0FBQ2w5QixJQUFJLFdBQVcsR0FBRywrakJBQStqQixDQUFDO0FBQ2xsQixJQUFJLGNBQWMsR0FBRywwR0FBMEcsQ0FBQztBQUNoSSxJQUFJLHFCQUFxQixHQUFHLHlNQUF5TSxDQUFDO0FBQ3RPLElBQUkscUJBQXFCLEdBQUcsa2ZBQWtmLENBQUM7QUFDL2dCLElBQUksWUFBWSxHQUFHLG1kQUFtZCxDQUFDO0FBQ3ZlLElBQUkscUJBQXFCLEdBQUcsdUtBQXVLLENBQUM7QUFDcE0sSUFBSSxlQUFlLEdBQUcsb1JBQW9SLENBQUM7QUFDM1MsSUFBSSxrQkFBa0IsR0FBRyxpWkFBaVosQ0FBQztBQUMzYSxJQUFJLFdBQVcsR0FBRyx1ZUFBdWUsQ0FBQztBQUMxZixJQUFJLEtBQUssR0FBRyx3S0FBd0ssQ0FBQztBQUNyTCxJQUFJLFlBQVksR0FBRyxpUUFBaVEsQ0FBQztBQUNyUixJQUFJLG1CQUFtQixHQUFHLG9SQUFvUixDQUFDO0FBQy9TLElBQUksT0FBTyxHQUFHLHNPQUFzTyxDQUFDO0FBQ3JQLElBQUksUUFBUSxHQUFHLGlQQUFpUCxDQUFDO0FBQ2pRLElBQUksU0FBUyxHQUFHLHduQ0FBd25DLENBQUM7QUFDem9DLElBQUksUUFBUSxHQUFHLDRQQUE0UCxDQUFDO0FBQzVRLElBQUksU0FBUyxHQUFHLDhwQ0FBOHBDLENBQUM7QUFDL3FDLElBQUksVUFBVSxHQUFHLHViQUF1YixDQUFDO0FBQ3pjLElBQUksWUFBWSxHQUFHLDg4QkFBODhCLENBQUM7QUFDbCtCLElBQUksbUJBQW1CLEdBQUcseTlCQUF5OUIsQ0FBQztBQUNwL0IsSUFBSSxPQUFPLEdBQUcsNldBQTZXLENBQUM7QUFDNVgsSUFBSSxTQUFTLEdBQUcsdWVBQXVlLENBQUM7QUFDeGYsSUFBSSxXQUFXLEdBQUcsNG5EQUE0bkQsQ0FBQztBQUMvb0QsSUFBSSxVQUFVLEdBQUcsa1NBQWtTLENBQUM7QUFDcFQsSUFBSSxXQUFXLEdBQUcsK2tCQUEra0IsQ0FBQztBQUNsbUIsSUFBSSxVQUFVLEdBQUcsd3NCQUF3c0IsQ0FBQztBQUMxdEIsSUFBSSxXQUFXLEdBQUcsKy9CQUErL0IsQ0FBQztBQUNsaEMsSUFBSSxTQUFTLEdBQUcsNlhBQTZYLENBQUM7QUFDOVksSUFBSSxNQUFNLEdBQUcsa0tBQWtLLENBQUM7QUFDaEwsSUFBSSxTQUFTLEdBQUcsc2ZBQXNmLENBQUM7QUFDdmdCLElBQUksY0FBYyxHQUFHLCthQUErYSxDQUFDO0FBQ3JjLElBQUkscUJBQXFCLEdBQUcsK2FBQSthLENBQUM7QUFDNWMsSUFBSSxZQUFZLEdBQUcsZ2dCQUFnZ0IsQ0FBQztBQUNwaEIsSUFBSSxtQkFBbUIsR0FBRyw2a0JBQTZrQixDQUFDO0FBQ3htQixJQUFJLGdCQUFnQixHQUFHLHVZQUF1WSxDQUFDO0FBQy9aLElBQUksaUJBQWlCLEdBQUcsK1NBQStTLENBQUM7QUFDeFUsSUFBSSxjQUFjLEdBQUcscXlCQUFxeUIsQ0FBQztBQUMzekIsSUFBSSxxQkFBcUIsR0FBRyxxd0JBQXF3QixDQUFDO0FBQ2x5QixJQUFJLGFBQWEsR0FBRyx3WUFBd1ksQ0FBQztBQUM3WixJQUFJLE1BQU0sR0FBRyxzTEFBc0wsQ0FBQztBQUNwTSxJQUFJLGdCQUFnQixHQUFHLGlNQUFpTSxDQUFDO0FBQ3pOLElBQUksV0FBVyxHQUFHLG00QkFBbTRCLENBQUM7QUFDdDVCLElBQUksa0JBQWtCLEdBQUcsODZCQUE4NkIsQ0FBQztBQUN4OEIsSUFBSSxZQUFZLEdBQUcsc2FBQXNhLENBQUM7QUFDMWIsSUFBSSxVQUFVLEdBQUcsMFpBQTBaLENBQUM7QUFDNWEsSUFBSSxXQUFXLEdBQUcsd05BQXdOLENBQUM7QUFDM08sSUFBSSxhQUFhLEdBQUcsOFhBQThYLENBQUM7QUFDblosSUFBSSxVQUFVLEdBQUcsZ1BBQWdQLENBQUM7QUFDbFEsSUFBSSxZQUFZLEdBQUcseVRBQXlULENBQUM7QUFDN1UsSUFBSSxVQUFVLEdBQUcsbVJBQW1SLENBQUM7QUFDclMsSUFBSSxhQUFhLEdBQUcseU1BQXlNLENBQUM7QUFDOU4sSUFBSSxjQUFjLEdBQUcsMFBBQTBQLENBQUM7QUFDaFIsSUFBSSxXQUFXLEdBQUcsNE9BQTRPLENBQUM7QUFDL1AsSUFBSSxvQkFBb0IsR0FBRyxpRUFBaUUsQ0FBQztBQUM3RixJQUFJLGVBQWUsR0FBRywwRUFBMEUsQ0FBQztBQUNqRyxJQUFJLGdCQUFnQixHQUFHLGdQQUFnUCxDQUFDO0FBQ3hRLElBQUksY0FBYyxHQUFHLDBSQUEwUixDQUFDO0FBQ2hULElBQUksYUFBYSxHQUFHLHFEQUFxRCxDQUFDO0FBQzFFLElBQUksY0FBYyxHQUFHLHlLQUF5SyxDQUFDO0FBQy9MLElBQUksY0FBYyxHQUFHLHdFQUF3RSxDQUFDO0FBQzlGLElBQUksY0FBYyxHQUFHLDRKQUE0SixDQUFDO0FBQ2xMLElBQUksYUFBYSxHQUFHLHlJQUF5SSxDQUFDO0FBQzlKLElBQUksYUFBYSxHQUFHLDZLQUE2SyxDQUFDO0FBQ2xNLElBQUksYUFBYSxHQUFHLGlFQUFpRSxDQUFDO0FBQ3RGLElBQUksYUFBYSxHQUFHLHNIQUFzSCxDQUFDO0FBQzNJLElBQUksYUFBYSxHQUFHLHNLQUFzSyxDQUFDO0FBQzNMLElBQUksYUFBYSxHQUFHLDhEQUE4RCxDQUFDO0FBQ25GLElBQUksYUFBYSxHQUFHLDJSQUEyUixDQUFDO0FBQ2hULElBQUksYUFBYSxHQUFHLG9LQUFvSyxDQUFDO0FBQ3pMLElBQUksY0FBYyxHQUFHLGlXQUFpVyxDQUFDO0FBQ3ZYLElBQUkscUJBQXFCLEdBQUcseVhBQXlYLENBQUM7QUFDdFosSUFBSSxrQkFBa0IsR0FBRywyUUFBMlEsQ0FBQztBQUNyUyxJQUFJLGlCQUFpQixHQUFHLG1FQUFtRSxDQUFDO0FBQzVGLElBQUksbUJBQW1CLEdBQUcsc1JBQXNSLENBQUM7QUFDalQsSUFBSSwwQkFBMEIsR0FBRyw4VEFBOFQsQ0FBQztBQUNoVyxJQUFJLGdCQUFnQixHQUFHLHVFQUF1RSxDQUFDO0FBQy9GLElBQUksY0FBYyxHQUFHLHdGQUF3RixDQUFDO0FBQzlHLElBQUksa0JBQWtCLEdBQUcsK1JBQStSLENBQUM7QUFDelQsSUFBSSxTQUFTLEdBQUcsNjFCQUE2MUIsQ0FBQztBQUM5MkIsSUFBSSxjQUFjLEdBQUcsa1NBQWtTLENBQUM7QUFDeFQsSUFBSSxVQUFVLEdBQUcseTZDQUF5NkMsQ0FBQztBQUMzN0MsSUFBSSxRQUFRLEdBQUcsbUZBQW1GLENBQUM7QUFDbkcsSUFBSSxnQkFBZ0IsR0FBRyxtS0FBbUssQ0FBQztBQUMzTCxJQUFJLFFBQVEsR0FBRyx3eUJBQXd5QixDQUFDO0FBQ3h6QixJQUFJLE9BQU8sR0FBRyxrNENBQWs0QyxDQUFDO0FBQ2o1QyxJQUFJLGFBQWEsR0FBRyx3L0lBQXcvSSxDQUFDO0FBQzdnSixJQUFJLFFBQVEsR0FBRyw2SEFBNkgsQ0FBQztBQUM3SSxJQUFJLGdCQUFnQixHQUFHLDhNQUE4TSxDQUFDO0FBQ3RPLElBQUksdUJBQXVCLEdBQUcsb09BQW9PLENBQUM7QUFDblEsSUFBSSxXQUFXLEdBQUcsOExBQThMLENBQUM7QUFDak4sSUFBSSxrQkFBa0IsR0FBRyxnUEFBZ1AsQ0FBQztBQUMxUSxJQUFJLGVBQWUsR0FBRyxtSkFBbUosQ0FBQztBQUMxSyxJQUFJLGVBQWUsR0FBRyxzWUFBc1ksQ0FBQztBQUM3WixJQUFJLHNCQUFzQixHQUFHLHliQUF5YixDQUFDO0FBQ3ZkLElBQUksZUFBZSxHQUFHLDhHQUE4RyxDQUFDO0FBQ3JJLElBQUksc0JBQXNCLEdBQUcsMElBQTBJLENBQUM7QUFDeEssSUFBSSxTQUFTLEdBQUcsMkZBQTJGLENBQUM7QUFDNUcsSUFBSSxVQUFVLEdBQUcsZ2FBQWdhLENBQUM7QUFDbGIsSUFBSSxTQUFTLEdBQUcsd0lBQXdJLENBQUM7QUFDekosSUFBSSxPQUFPLEdBQUcsbURBQW1ELENBQUM7QUFDbEUsSUFBSSxRQUFRLEdBQUcsOEZBQThGLENBQUM7QUFDOUcsSUFBSSxNQUFNLEdBQUcsNFlBQTRZLENBQUM7QUFDMVosSUFBSSxXQUFXLEdBQUcsNlRBQTZULENBQUM7QUFDaFYsSUFBSSxhQUFhLEdBQUcsK1JBQStSLENBQUM7QUFDcFQsSUFBSSxnQkFBZ0IsR0FBRyx3WUFBd1ksQ0FBQztBQUNoYSxJQUFJLGFBQWEsR0FBRyxpVkFBaVYsQ0FBQztBQUN0VyxJQUFJLFlBQVksR0FBRywwZUFBMGUsQ0FBQztBQUM5ZixJQUFJLGNBQWMsR0FBRyxvaUJBQW9pQixDQUFDO0FBQzFqQixJQUFJLGlCQUFpQixHQUFHLG1zQkFBbXNCLENBQUM7QUFDNXRCLElBQUksZUFBZSxHQUFHLGdLQUFnSyxDQUFDO0FBQ3ZMLElBQUksa0JBQWtCLEdBQUcsb01BQW9NLENBQUM7QUFDOU4sSUFBSSxhQUFhLEdBQUcscXpDQUFxekMsQ0FBQztBQUMxMEMsSUFBSSxrQkFBa0IsR0FBRyw0TUFBNE0sQ0FBQztBQUN0TyxJQUFJLGdCQUFnQixHQUFHLCtMQUErTCxDQUFDO0FBQ3ZOLElBQUksZUFBZSxHQUFHLGt4Q0FBa3hDLENBQUM7QUFDenlDLElBQUkscUJBQXFCLEdBQUcsMnBCQUEycEIsQ0FBQztBQUN4ckIsSUFBSSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQztBQUNqRCxJQUFJLGNBQWMsR0FBRyx5UkFBeVIsQ0FBQztBQUMvUyxJQUFJLG1CQUFtQixHQUFHLDhSQUE4UixDQUFDO0FBQ3pULElBQUksMEJBQTBCLEdBQUcsbWNBQW1jLENBQUM7QUFDcmUsSUFBSSxjQUFjLEdBQUcsZ29DQUFnb0MsQ0FBQztBQUN0cEMsSUFBSSxpQkFBaUIsR0FBRyw4d0JBQTh3QixDQUFDO0FBQ3Z5QixJQUFJLFlBQVksR0FBRyxxc0JBQXFzQixDQUFDO0FBQ3p0QixJQUFJLGVBQWUsR0FBRyx5WEFBeVgsQ0FBQztBQUNoWixJQUFJLHNCQUFzQixHQUFHLHE0QkFBcTRCLENBQUM7QUFDbjZCLElBQUksZUFBZSxHQUFHLGtrSEFBa2tILENBQUM7QUFDemxILElBQUksZ0JBQWdCLEdBQUcsNGZBQTRmLENBQUM7QUFDcGhCLElBQUkscUJBQXFCLEdBQUcsNmhCQUE2aEIsQ0FBQztBQUMxakIsSUFBSSxlQUFlLEdBQUcsZ3RDQUFndEMsQ0FBQztBQUN2dUMsSUFBSSxTQUFTLEdBQUcsK0dBQStHLENBQUM7QUFDaEksSUFBSSxtQkFBbUIsR0FBRywwREFBMEQsQ0FBQztBQUNyRixJQUFJLFlBQVksR0FBRyw4TUFBOE0sQ0FBQztBQUNsTyxJQUFJLFlBQVksR0FBRyxnTkFBZ04sQ0FBQztBQUNwTyxJQUFJLGdCQUFnQixHQUFHLGlIQUFpSCxDQUFDO0FBQ3pJLElBQUksVUFBVSxHQUFHLHUyREFBdTJELENBQUM7QUFDejNELElBQUksZUFBZSxHQUFHLHlXQUF5VyxDQUFDO0FBQ2hZLElBQUksUUFBUSxHQUFHLGl4QkFBaXhCLENBQUM7QUFDanlCLElBQUksV0FBVyxHQUFHLDhOQUE4TixDQUFDO0FBQ2pQLElBQUksV0FBVyxHQUFHLG9RQUFvUSxDQUFDO0FBQ3ZSLElBQUksU0FBUyxHQUFHLHVJQUF1SSxDQUFDO0FBQ3hKLElBQUksV0FBVyxHQUFHLGlXQUFpVyxDQUFDO0FBQ3BYLElBQUksU0FBUyxHQUFHLGdIQUFnSCxDQUFDO0FBQ2pJLElBQUksY0FBYyxHQUFHLHVJQUF1SSxDQUFDO0FBQzdKLElBQUksWUFBWSxHQUFHLDBQQUEwUCxDQUFDO0FBQzlRLElBQUksbUJBQW1CLEdBQUcsNFRBQTRULENBQUM7QUFDdlYsSUFBSSxnQkFBZ0IsR0FBRyx1SUFBdUksQ0FBQztBQUMvSixJQUFJLGFBQWEsR0FBRywrSkFBK0osQ0FBQztBQUNwTCxJQUFJLGVBQWUsR0FBRyxxUUFBcVEsQ0FBQztBQUM1UixJQUFJLGVBQWUsR0FBRyw4YkFBOGIsQ0FBQztBQUNyZCxJQUFJLHNCQUFzQixHQUFHLGtkQUFrZCxDQUFDO0FBQ2hmLElBQUksZUFBZSxHQUFHLDJLQUEySyxDQUFDO0FBQ2xNLElBQUksc0JBQXNCLEdBQUcsZ01BQWdNLENBQUM7QUFDOU4sSUFBSSxhQUFhLEdBQUcsbVNBQW1TLENBQUM7QUFDeFQsSUFBSSxPQUFPLEdBQUcsZ0xBQWdMLENBQUM7QUFDL0wsSUFBSSxZQUFZLEdBQUcsNExBQTRMLENBQUM7QUFDaE4sSUFBSSxlQUFlLEdBQUcseVBBQXlQLENBQUM7QUFDaFIsSUFBSSxVQUFVLEdBQUcsOGFBQThhLENBQUM7QUFDaGMsSUFBSSxPQUFPLEdBQUcscU9BQXFPLENBQUM7QUFDcFAsSUFBSSxVQUFVLEdBQUcsc21CQUFzbUIsQ0FBQztBQUN4bkIsSUFBSSxTQUFTLEdBQUcsaUZBQWlGLENBQUM7QUFDbEcsSUFBSSxRQUFRLEdBQUcsbU9BQW1PLENBQUM7QUFDblAsSUFBSSxhQUFhLEdBQUcsOEhBQThILENBQUM7QUFDbkosSUFBSSxXQUFXLEdBQUcsMGFBQTBhLENBQUM7QUFDN2IsSUFBSSxrQkFBa0IsR0FBRyxpa0JBQWlrQixDQUFDO0FBQzNsQixJQUFJLGdCQUFnQixHQUFHLG1MQUFtTCxDQUFDO0FBQzNNLElBQUksZUFBZSxHQUFHLCtFQUErRSxDQUFDO0FBQ3RHLElBQUksb0JBQW9CLEdBQUcsMEhBQTBILENBQUM7QUFDdEosSUFBSSxPQUFPLEdBQUcsME1BQTBNLENBQUM7QUFDek4sSUFBSSxXQUFXLEdBQUcsb0VBQW9FLENBQUM7QUFDdkYsSUFBSSxrQkFBa0IsR0FBRyxvRkFBb0YsQ0FBQztBQUM5RyxJQUFJLFVBQVUsR0FBRyxxTEFBcUwsQ0FBQztBQUN2TSxJQUFJLGlCQUFpQixHQUFHLGlKQUFpSixDQUFDO0FBQzFLLElBQUksVUFBVSxHQUFHLHlpQkFBeWlCLENBQUM7QUFDM2pCLElBQUksV0FBVyxHQUFHLG9pQkFBb2lCLENBQUM7QUFDdmpCLElBQUksY0FBYyxHQUFHLDJJQUEySSxDQUFDO0FBQ2pLLElBQUksWUFBWSxHQUFHLHFMQUFxTCxDQUFDO0FBQ3pNLElBQUksZUFBZSxHQUFHLHVVQUF1VSxDQUFDO0FBQzlWLElBQUksa0JBQWtCLEdBQUcsMFhBQTBYLENBQUM7QUFDcFosSUFBSSxxQkFBcUIsR0FBRyx3Z0JBQXdnQixDQUFDO0FBQ3JpQixJQUFJLHdCQUF3QixHQUFHLDhnQkFBOGdCLENBQUM7QUFDOWlCLElBQUksaUJBQWlCLEdBQUcsZ2FBQWdhLENBQUM7QUFDemIsSUFBSSxvQkFBb0IsR0FBRyw0dUJBQTR1QixDQUFDO0FBQ3h3QixJQUFJLDJCQUEyQixHQUFHLDg2QkFBODZCLENBQUM7QUFDajlCLElBQUksd0JBQXdCLEdBQUcsK2RBQStkLENBQUM7QUFDL2YsSUFBSSxvQkFBb0IsR0FBRyxrY0FBa2MsQ0FBQztBQUM5ZCxJQUFJLHVCQUF1QixHQUFHLG9tQkFBb21CLENBQUM7QUFDbm9CLElBQUksOEJBQThCLEdBQUcsbTFCQUFtMUIsQ0FBQztBQUN6M0IsSUFBSSwyQkFBMkIsR0FBRyxtbEJBQW1sQixDQUFDO0FBQ3RuQixJQUFJLGVBQWUsR0FBRywyUEFBMlAsQ0FBQztBQUNsUixJQUFJLHNCQUFzQixHQUFHLHFZQUFxWSxDQUFDO0FBQ25hLElBQUksY0FBYyxHQUFHLDRVQUE0VSxDQUFDO0FBQ2xXLElBQUkscUJBQXFCLEdBQUcsbWJBQW1iLENBQUM7QUFDaGQsSUFBSSxtQkFBbUIsR0FBRyx5UkFBeVIsQ0FBQztBQUNwVCxJQUFJLGFBQWEsR0FBRyxxTEFBcUwsQ0FBQztBQUMxTSxJQUFJLGVBQWUsR0FBRywwTEFBMEwsQ0FBQztBQUNqTixJQUFJLGdCQUFnQixHQUFHLDhCQUE4QixDQUFDO0FBQ3RELElBQUksdUJBQXVCLEdBQUcsdUVBQXVFLENBQUM7QUFDdEcsSUFBSSxXQUFXLEdBQUcsK2NBQStjLENBQUM7QUFDbGUsSUFBSSxPQUFPLEdBQUcsK09BQStPLENBQUM7QUFDOVAsSUFBSSxVQUFVLEdBQUcsNlRBQTZULENBQUM7QUFDL1UsSUFBSSxpQkFBaUIsR0FBRyw2VUFBNlUsQ0FBQztBQUN0VyxJQUFJLGlCQUFpQixHQUFHLHFsQ0FBcWxDLENBQUM7QUFDOW1DLElBQUksd0JBQXdCLEdBQUcsb21DQUFvbUMsQ0FBQztBQUNwb0MsSUFBSSxXQUFXLEdBQUcsbVVBQW1VLENBQUM7QUFDdFYsSUFBSSxVQUFVLEdBQUcsNlZBQTZWLENBQUM7QUFDL1csSUFBSSxXQUFXLEdBQUcsMExBQTBMLENBQUM7QUFDN00sSUFBSSxjQUFjLEdBQUcsOHNCQUE4c0IsQ0FBQztBQUNwdUIsSUFBSSxtQkFBbUIsR0FBRywrZUFBK2UsQ0FBQztBQUMxZ0IsSUFBSSxpQkFBaUIsR0FBRyx1dkJBQXV2QixDQUFDO0FBQ2h4QixJQUFJLGtCQUFrQixHQUFHLHVnQkFBdWdCLENBQUM7QUFDamlCLElBQUksb0JBQW9CLEdBQUcsZ2xCQUFnbEIsQ0FBQztBQUM1bUIsSUFBSSxXQUFXLEdBQUcsc1pBQXNaLENBQUM7QUFDemEsSUFBSSxRQUFRLEdBQUcsK3pCQUErekIsQ0FBQztBQUMvMEIsSUFBSSxZQUFZLEdBQUcsbTVCQUFtNUIsQ0FBQztBQUN2NkIsSUFBSSxXQUFXLEdBQUcsbVBBQW1QLENBQUM7QUFDdFEsSUFBSSxhQUFhLEdBQUcsbU1BQW1NLENBQUM7QUFDeE4sSUFBSSxXQUFXLEdBQUcsK1FBQStRLENBQUM7QUFDbFMsSUFBSSxVQUFVLEdBQUcsNENBQTRDLENBQUM7QUFDOUQsSUFBSSxnQkFBZ0IsR0FBRyxtR0FBbUcsQ0FBQztBQUMzSCxJQUFJLGVBQWUsR0FBRyw2RUFBNkUsQ0FBQztBQUNwRyxJQUFJLE9BQU8sR0FBRyw2T0FBNk8sQ0FBQztBQUM1UCxJQUFJLFlBQVksR0FBRyx1U0FBdVMsQ0FBQztBQUMzVCxJQUFJLG1CQUFtQixHQUFHLHNUQUFzVCxDQUFDO0FBQ2pWLElBQUksWUFBWSxHQUFHLHNaQUFzWixDQUFDO0FBQzFhLElBQUksbUJBQW1CLEdBQUcsNGJBQTRiLENBQUM7QUFDdmQsSUFBSSxZQUFZLEdBQUcsaVdBQWlXLENBQUM7QUFDclgsSUFBSSxZQUFZLEdBQUcsK1ZBQStWLENBQUM7QUFDblgsSUFBSSxtQkFBbUIsR0FBRyxvWUFBb1ksQ0FBQztBQUMvWixJQUFJLFVBQVUsR0FBRyw0WUFBNFksQ0FBQztBQUM5WixJQUFJLGlCQUFpQixHQUFHLCthQUErYSxDQUFDO0FBQ3hjLElBQUksV0FBVyxHQUFHLCtOQUErTixDQUFDO0FBQ2xQLElBQUksZ0JBQWdCLEdBQUcseVFBQXlRLENBQUM7QUFDalMsSUFBSSx1QkFBdUIsR0FBRyx3UkFBd1IsQ0FBQztBQUN2VCxJQUFJLGdCQUFnQixHQUFHLDJYQUEyWCxDQUFDO0FBQ25aLElBQUksdUJBQXVCLEdBQUcscVpBQXFaLENBQUM7QUFDcGIsSUFBSSxnQkFBZ0IsR0FBRyxvVUFBb1UsQ0FBQztBQUM1VixJQUFJLHVCQUF1QixHQUFHLDZWQUE2VixDQUFDO0FBQzVYLElBQUksa0JBQWtCLEdBQUcsZ1BBQWdQLENBQUM7QUFDMVEsSUFBSSxlQUFlLEdBQUcsNFZBQTRWLENBQUM7QUFDblgsSUFBSSxzQkFBc0IsR0FBRyxxWEFBcVgsQ0FBQztBQUNuWixJQUFJLGlCQUFpQixHQUFHLCtiQUErYixDQUFDO0FBQ3hkLElBQUksd0JBQXdCLEdBQUcsMmRBQTJkLENBQUM7QUFDM2YsSUFBSSxrQkFBa0IsR0FBRyxvU0FBb1MsQ0FBQztBQUM5VCxJQUFJLHlCQUF5QixHQUFHLDBSQUEwUixDQUFDO0FBQzNULElBQUksY0FBYyxHQUFHLDRRQUE0USxDQUFDO0FBQ2xTLElBQUksY0FBYyxHQUFHLHVkQUF1ZCxDQUFDO0FBQzdlLElBQUksV0FBVyxHQUFHLHVYQUF1WCxDQUFDO0FBQzFZLElBQUksa0JBQWtCLEdBQUcseVpBQXlaLENBQUM7QUFDbmIsSUFBSSxlQUFlLEdBQUcsOHVCQUE4dUIsQ0FBQztBQUNyd0IsSUFBSSxhQUFhLEdBQUcsMGRBQTBkLENBQUM7QUFDL2UsSUFBSSxvQkFBb0IsR0FBRyxrZ0JBQWtnQixDQUFDO0FBQzloQixJQUFJLFlBQVksR0FBRyx1a0JBQXVrQixDQUFDO0FBQzNsQixJQUFJLFlBQVksR0FBRyw2UkFBNlIsQ0FBQztBQUNqVCxJQUFJLFNBQVMsR0FBRyxnSkFBZ0osQ0FBQztBQUNqSyxJQUFJLGlCQUFpQixHQUFHLDRNQUE0TSxDQUFDO0FBQ3JPLElBQUksUUFBUSxHQUFHLG9JQUFvSSxDQUFDO0FBQ3BKLElBQUksZUFBZSxHQUFHLHdMQUF3TCxDQUFDO0FBQy9NLElBQUksU0FBUyxHQUFHLGtJQUFrSSxDQUFDO0FBQ25KLElBQUksZ0JBQWdCLEdBQUcsMk1BQTJNLENBQUM7QUFDbk8sSUFBSSxZQUFZLEdBQUcsaVVBQWlVLENBQUM7QUFDclYsSUFBSSxRQUFRLEdBQUcsa0xBQWtMLENBQUM7QUFDbE0sSUFBSSxTQUFTLEdBQUcsMlVBQTJVLENBQUM7QUFDNVYsSUFBSSxnQkFBZ0IsR0FBRyxvYUFBb2EsQ0FBQztBQUM1YixJQUFJLGFBQWEsR0FBRyxrWEFBa1gsQ0FBQztBQUN2WSxJQUFJLG9CQUFvQixHQUFHLDJjQUEyYyxDQUFDO0FBQ3ZlLElBQUksUUFBUSxHQUFHLHFOQUFxTixDQUFDO0FBQ3JPLElBQUksT0FBTyxHQUFHLDRUQUE0VCxDQUFDO0FBQzNVLElBQUksUUFBUSxHQUFHLHdrQkFBd2tCLENBQUM7QUFDeGxCLElBQUksU0FBUyxHQUFHLHlHQUF5RyxDQUFDO0FBQzFILElBQUksV0FBVyxHQUFHLHlJQUF5SSxDQUFDO0FBQzVKLElBQUksVUFBVSxHQUFHLG1RQUFtUSxDQUFDO0FBQ3JSLElBQUksZUFBZSxHQUFHLG9SQUFvUixDQUFDO0FBQzNTLElBQUksZUFBZSxHQUFHLG1LQUFtSyxDQUFDO0FBQzFMLElBQUkscUJBQXFCLEdBQUcsNk1BQTZNLENBQUM7QUFDMU8sSUFBSSxzQkFBc0IsR0FBRyxvUkFBb1IsQ0FBQztBQUNsVCxJQUFJLGNBQWMsR0FBRyx1TEFBdUwsQ0FBQztBQUM3TSxJQUFJLG9CQUFvQixHQUFHLG9PQUFvTyxDQUFDO0FBQ2hRLElBQUkscUJBQXFCLEdBQUcsMFNBQTBTLENBQUM7QUFDdlUsSUFBSSxzQkFBc0IsR0FBRywrVUFBK1UsQ0FBQztBQUM3VyxJQUFJLHVCQUF1QixHQUFHLHNYQUFzWCxDQUFDO0FBQ3JaLElBQUksY0FBYyxHQUFHLHVqQkFBdWpCLENBQUM7QUFDN2tCLElBQUksT0FBTyxHQUFHLCtIQUErSCxDQUFDO0FBQzlJLElBQUksVUFBVSxHQUFHLCtJQUErSSxDQUFDO0FBQ2pLLElBQUksY0FBYyxHQUFHLG1JQUFtSSxDQUFDO0FBQ3pKLElBQUkscUJBQXFCLEdBQUcsOExBQThMLENBQUM7QUFDM04sSUFBSSxnQkFBZ0IsR0FBRyxpSUFBaUksQ0FBQztBQUN6SixJQUFJLHVCQUF1QixHQUFHLDJQQUEyUCxDQUFDO0FBQzFSLElBQUksaUJBQWlCLEdBQUcsdU1BQXVNLENBQUM7QUFDaE8sSUFBSSxZQUFZLEdBQUcsMElBQTBJLENBQUM7QUFDOUosSUFBSSxtQkFBbUIsR0FBRyxxTUFBcU0sQ0FBQztBQUNoTyxJQUFJLFVBQVUsR0FBRyx1RUFBdUUsQ0FBQztBQUN6RixJQUFJLE1BQU0sR0FBRyx1T0FBdU8sQ0FBQztBQUNyUCxJQUFJLFdBQVcsR0FBRywyVkFBMlYsQ0FBQztBQUM5VyxJQUFJLGtCQUFrQixHQUFHLHNZQUFzWSxDQUFDO0FBQ2hhLElBQUksV0FBVyxHQUFHLG1aQUFtWixDQUFDO0FBQ3RhLElBQUksa0JBQWtCLEdBQUcsMGZBQTBmLENBQUM7QUFDcGhCLElBQUksWUFBWSxHQUFHLCtiQUErYixDQUFDO0FBQ25kLElBQUksWUFBWSxHQUFHLHlLQUF5SyxDQUFDO0FBQzdMLElBQUksaUJBQWlCLEdBQUcsNkdBQTZHLENBQUM7QUFDdEksSUFBSSx3QkFBd0IsR0FBRyxxTEFBcUwsQ0FBQztBQUNyTixJQUFJLGlCQUFpQixHQUFHLG9KQUFvSixDQUFDO0FBQzdLLElBQUksd0JBQXdCLEdBQUcsMk5BQTJOLENBQUM7QUFDM1AsSUFBSSxrQkFBa0IsR0FBRyx1VkFBdVYsQ0FBQztBQUNqWCxJQUFJLG9CQUFvQixHQUFHLDh4QkFBOHhCLENBQUM7QUFDMXpCLElBQUksZ0JBQWdCLEdBQUcsc0dBQXNHLENBQUM7QUFDOUgsSUFBSSxnQkFBZ0IsR0FBRyxtTEFBbUwsQ0FBQztBQUMzTSxJQUFJLHVCQUF1QixHQUFHLHVRQUF1USxDQUFDO0FBQ3RTLElBQUksaUJBQWlCLEdBQUcseUxBQXlMLENBQUM7QUFDbE4sSUFBSSx3QkFBd0IsR0FBRyw4T0FBOE8sQ0FBQztBQUM5USxJQUFJLG9CQUFvQixHQUFHLHFSQUFxUixDQUFDO0FBQ2pULElBQUksMkJBQTJCLEdBQUcsb2NBQW9jLENBQUM7QUFDdmUsSUFBSSxlQUFlLEdBQUcsd1VBQXdVLENBQUM7QUFDL1YsSUFBSSxzQkFBc0IsR0FBRyw4WkFBOFosQ0FBQztBQUM1YixJQUFJLG1CQUFtQixHQUFHLDhPQUE4TyxDQUFDO0FBQ3pRLElBQUksZ0JBQWdCLEdBQUcsaXZCQUFpdkIsQ0FBQztBQUN6d0IsSUFBSSxnQkFBZ0IsR0FBRyxpTkFBaU4sQ0FBQztBQUN6TyxJQUFJLHVCQUF1QixHQUFHLHNRQUFzUSxDQUFDO0FBQ3JTLElBQUksb0JBQW9CLEdBQUcseVNBQXlTLENBQUM7QUFDclUsSUFBSSwyQkFBMkIsR0FBRyxvYUFBb2EsQ0FBQztBQUN2YyxJQUFJLGtCQUFrQixHQUFHLDZZQUE2WSxDQUFDO0FBQ3ZhLElBQUkseUJBQXlCLEdBQUcsb2FBQW9hLENBQUM7QUFDcmMsSUFBSSxrQkFBa0IsR0FBRyx1U0FBdVMsQ0FBQztBQUNqVSxJQUFJLHlCQUF5QixHQUFHLDRVQUE0VSxDQUFDO0FBQzdXLElBQUkseUJBQXlCLEdBQUcsK01BQStNLENBQUM7QUFDaFAsSUFBSSxpQkFBaUIsR0FBRyxvTEFBb0wsQ0FBQztBQUM3TSxJQUFJLHdCQUF3QixHQUFHLGdRQUFnUSxDQUFDO0FBQ2hTLElBQUksZ0JBQWdCLEdBQUcsa0tBQWtLLENBQUM7QUFDMUwsSUFBSSx1QkFBdUIsR0FBRyw2T0FBNk8sQ0FBQztBQUM1USxJQUFJLGNBQWMsR0FBRyxvR0FBb0csQ0FBQztBQUMxSCxJQUFJLFdBQVcsR0FBRyw4VEFBOFQsQ0FBQztBQUNqVixJQUFJLGFBQWEsR0FBRyw4UkFBOFIsQ0FBQztBQUNuVCxJQUFJLFVBQVUsR0FBRyx3VUFBd1UsQ0FBQztBQUMxVixJQUFJLFlBQVksR0FBRywyZkFBMmYsQ0FBQztBQUMvZ0IsSUFBSSxtQkFBbUIsR0FBRyxtakJBQW1qQixDQUFDO0FBQzlrQixJQUFJLFNBQVMsR0FBRyx1VUFBdVUsQ0FBQztBQUN4VixJQUFJLFNBQVMsR0FBRyxrVkFBa1YsQ0FBQztBQUNuVyxJQUFJLFNBQVMsR0FBRywrUkFBK1IsQ0FBQztBQUNoVCxJQUFJLGVBQWUsR0FBRyxnckJBQWdyQixDQUFDO0FBQ3ZzQixJQUFJLGNBQWMsR0FBRyxvTEFBb0wsQ0FBQztBQUMxTSxJQUFJLFdBQVcsR0FBRyx5eUJBQXl5QixDQUFDO0FBQzV6QixJQUFJLGlCQUFpQixHQUFHLG9tQkFBb21CLENBQUM7QUFDN25CLElBQUksYUFBYSxHQUFHLDRPQUE0TyxDQUFDO0FBQ2pRLElBQUksY0FBYyxHQUFHLG1VQUFtVSxDQUFDO0FBQ3pWLElBQUksVUFBVSxHQUFHLGdTQUFnUyxDQUFDO0FBQ2xULElBQUksZUFBZSxHQUFHLDZTQUE2UyxDQUFDO0FBQ3BVLElBQUksa0JBQWtCLEdBQUcseWFBQXlhLENBQUM7QUFDbmMsSUFBSSxVQUFVLEdBQUcsa09BQWtPLENBQUM7QUFDcFAsSUFBSSxXQUFXLEdBQUcsbUNBQW1DLENBQUM7QUFDdEQsSUFBSSxjQUFjLEdBQUcsK0hBQStILENBQUM7QUFDckosSUFBSSxVQUFVLEdBQUcsMktBQTJLLENBQUM7QUFDN0wsSUFBSSxVQUFVLEdBQUcsd0lBQXdJLENBQUM7QUFDMUosSUFBSSxTQUFTLEdBQUcsOGVBQThlLENBQUM7QUFDL2YsSUFBSSxRQUFRLEdBQUcseVJBQXlSLENBQUM7QUFDelMsSUFBSSxlQUFlLEdBQUcsNlBBQTZQLENBQUM7QUFDcFIsSUFBSSxhQUFhLEdBQUcsc0xBQXNMLENBQUM7QUFDM00sSUFBSSxhQUFhLEdBQUcsNGdCQUE0Z0IsQ0FBQztBQUNqaUIsSUFBSSxTQUFTLEdBQUcsb05BQW9OLENBQUM7QUFDck8sSUFBSSxPQUFPLEdBQUcsZ0RBQWdELENBQUM7QUFDL0QsSUFBSSxXQUFXLEdBQUcsc0JBQXNCLENBQUM7QUFDekMsSUFBSSxrQkFBa0IsR0FBRyxpRUFBaUUsQ0FBQztBQUMzRixJQUFJLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUN4QyxJQUFJLGtCQUFrQixHQUFHLGtFQUFrRSxDQUFDO0FBQzVGLElBQUksV0FBVyxHQUFHLDZHQUE2RyxDQUFDO0FBQ2hJLElBQUksWUFBWSxHQUFHLHVCQUF1QixDQUFDO0FBQzNDLElBQUksbUJBQW1CLEdBQUcsZ0VBQWdFLENBQUM7QUFDM0YsSUFBSSxXQUFXLEdBQUcsd0NBQXdDLENBQUM7QUFDM0QsSUFBSSxrQkFBa0IsR0FBRyw0SEFBNEgsQ0FBQztBQUN0SixJQUFJLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztBQUN2QyxJQUFJLGdCQUFnQixHQUFHLGtFQUFrRSxDQUFDO0FBQzFGLElBQUksUUFBUSxHQUFHLDJJQUEySSxDQUFDO0FBQzNKLElBQUksVUFBVSxHQUFHLHlFQUF5RSxDQUFDO0FBQzNGLElBQUksZUFBZSxHQUFHLDZHQUE2RyxDQUFDO0FBQ3BJLElBQUksc0JBQXNCLEdBQUcsK0hBQStILENBQUM7QUFDN0osSUFBSSxtQkFBbUIsR0FBRywySUFBMkksQ0FBQztBQUN0SyxJQUFJLDBCQUEwQixHQUFHLG9LQUFvSyxDQUFDO0FBQ3RNLElBQUksb0JBQW9CLEdBQUcsMklBQTJJLENBQUM7QUFDdkssSUFBSSwyQkFBMkIsR0FBRyxrS0FBa0ssQ0FBQztBQUNyTSxJQUFJLGtCQUFrQixHQUFHLDhHQUE4RyxDQUFDO0FBQ3hJLElBQUkseUJBQXlCLEdBQUcsc0lBQXNJLENBQUM7QUFDdkssSUFBSSxrQkFBa0IsR0FBRywrSkFBK0osQ0FBQztBQUN6TCxJQUFJLHFCQUFxQixHQUFHLG9NQUFvTSxDQUFDO0FBQ2pPLElBQUksYUFBYSxHQUFHLHE2QkFBcTZCLENBQUM7QUFDMTdCLElBQUksb0JBQW9CLEdBQUcseXdCQUF5d0IsQ0FBQztBQUNyeUIsSUFBSSxjQUFjLEdBQUcseU1BQXlNLENBQUM7QUFDL04sSUFBSSxlQUFlLEdBQUcsdUdBQXVHLENBQUM7QUFDOUgsSUFBSSxzQkFBc0IsR0FBRyw0SEFBNEgsQ0FBQztBQUMxSixJQUFJLGVBQWUsR0FBRywyR0FBMkcsQ0FBQztBQUNsSSxJQUFJLHNCQUFzQixHQUFHLDBJQUEwSSxDQUFDO0FBQ3hLLElBQUksY0FBYyxHQUFHLHFRQUFxUSxDQUFDO0FBQzNSLElBQUkscUJBQXFCLEdBQUcseVFBQXlRLENBQUM7QUFDdFMsSUFBSSxlQUFlLEdBQUcsa0dBQWtHLENBQUM7QUFDekgsSUFBSSxzQkFBc0IsR0FBRyx1SEFBdUgsQ0FBQztBQUNySixJQUFJLGFBQWEsR0FBRyx5S0FBeUssQ0FBQztBQUM5TCxJQUFJLG9CQUFvQixHQUFHLDJQQUEyUCxDQUFDO0FBQ3ZSLElBQUksaUJBQWlCLEdBQUcseUdBQXlHLENBQUM7QUFDbEksSUFBSSxjQUFjLEdBQUcsNEdBQTRHLENBQUM7QUFDbEksSUFBSSxxQkFBcUIsR0FBRyw4SUFBOEksQ0FBQztBQUMzSyxJQUFJLG9CQUFvQixHQUFHLGdIQUFnSCxDQUFDO0FBQzVJLElBQUksMkJBQTJCLEdBQUcsK0lBQStJLENBQUM7QUFDbEwsSUFBSSxrQkFBa0IsR0FBRyx3Z0JBQXdnQixDQUFDO0FBQ2xpQixJQUFJLHlCQUF5QixHQUFHLG1pQkFBbWlCLENBQUM7QUFDcGtCLElBQUksZUFBZSxHQUFHLHlFQUF5RSxDQUFDO0FBQ2hHLElBQUksc0JBQXNCLEdBQUcsMEdBQTBHLENBQUM7QUFDeEksSUFBSSxtQkFBbUIsR0FBRyxtSEFBbUgsQ0FBQztBQUM5SSxJQUFJLDBCQUEwQixHQUFHLHlJQUF5SSxDQUFDO0FBQzNLLElBQUksa0JBQWtCLEdBQUcsdUhBQXVILENBQUM7QUFDakosSUFBSSx5QkFBeUIsR0FBRywySkFBMkosQ0FBQztBQUM1TCxJQUFJLGNBQWMsR0FBRyx5R0FBeUcsQ0FBQztBQUMvSCxJQUFJLG1CQUFtQixHQUFHLGdhQUFnYSxDQUFDO0FBQzNiLElBQUksMEJBQTBCLEdBQUcsb2NBQW9jLENBQUM7QUFDdGUsSUFBSSxrQkFBa0IsR0FBRyxnVEFBZ1QsQ0FBQztBQUMxVSxJQUFJLHlCQUF5QixHQUFHLHlUQUF5VCxDQUFDO0FBQzFWLElBQUkscUJBQXFCLEdBQUcsNkhBQTZILENBQUM7QUFDMUosSUFBSSxlQUFlLEdBQUcsMEdBQTBHLENBQUM7QUFDakksSUFBSSxTQUFTLEdBQUcsc3JCQUFzckIsQ0FBQztBQUN2c0IsSUFBSSxZQUFZLEdBQUcsMllBQTJZLENBQUM7QUFDL1osSUFBSSxnQkFBZ0IsR0FBRyxnT0FBZ08sQ0FBQztBQUN4UCxJQUFJLFVBQVUsR0FBRyxnSUFBZ0ksQ0FBQztBQUNsSixJQUFJLGFBQWEsR0FBRyx1TEFBdUwsQ0FBQztBQUM1TSxJQUFJLGtCQUFrQixHQUFHLCtMQUErTCxDQUFDO0FBQ3pOLElBQUksZ0JBQWdCLEdBQUcsZ1hBQWdYLENBQUM7QUFDeFksSUFBSSxvQkFBb0IsR0FBRyxzVkFBc1YsQ0FBQztBQUNsWCxJQUFJLGlCQUFpQixHQUFHLG9OQUFvTixDQUFDO0FBQzdPLElBQUkscUJBQXFCLEdBQUcsMlBBQTJQLENBQUM7QUFDeFIsSUFBSSxvQkFBb0IsR0FBRyxxVUFBcVUsQ0FBQztBQUNqVyxJQUFJLHVCQUF1QixHQUFHLHNlQUFzZSxDQUFDO0FBQ3JnQixJQUFJLGFBQWEsR0FBRyxvVUFBb1UsQ0FBQztBQUN6VixJQUFJLFlBQVksR0FBRyxvRUFBb0UsQ0FBQztBQUN4RixJQUFJLGtCQUFrQixHQUFHLDJ0RUFBMnRFLENBQUM7QUFDcnZFLElBQUksaUJBQWlCLEdBQUcsOEdBQThHLENBQUM7QUFDdkksSUFBSSx1QkFBdUIsR0FBRyxzSUFBc0ksQ0FBQztBQUNySyxJQUFJLGdCQUFnQixHQUFHLHFGQUFxRixDQUFDO0FBQzdHLElBQUksdUJBQXVCLEdBQUcsbUVBQW1FLENBQUM7QUFDbEcsSUFBSSxnQkFBZ0IsR0FBRywybEJBQTJsQixDQUFDO0FBQ25uQixJQUFJLHNCQUFzQixHQUFHLHdXQUF3VyxDQUFDO0FBQ3RZLElBQUksaUJBQWlCLEdBQUcsMmxCQUEybEIsQ0FBQztBQUNwbkIsSUFBSSw0QkFBNEIsR0FBRyw0b0JBQTRvQixDQUFDO0FBQ2hyQixJQUFJLGtCQUFrQixHQUFHLGd6QkFBZ3pCLENBQUM7QUFDMTBCLElBQUksb0JBQW9CLEdBQUcsMHhDQUEweEMsQ0FBQztBQUN0ekMsSUFBSSxtQkFBbUIsR0FBRywwZ0JBQTBnQixDQUFDO0FBQ3JpQixJQUFJLG1CQUFtQixHQUFHLHN6Q0FBc3pDLENBQUM7QUFDajFDLElBQUksc0JBQXNCLEdBQUcsdXlDQUF1eUMsQ0FBQztBQUNyMEMsSUFBSSxzQkFBc0IsR0FBRyxnNUVBQWc1RSxDQUFDO0FBQzk2RSxJQUFJLGlCQUFpQixHQUFHLDhoRUFBOGhFLENBQUM7QUFDdmpFLElBQUksd0JBQXdCLEdBQUcsdUlBQXVJLENBQUM7QUFDdkssSUFBSSw0QkFBNEIsR0FBRyw0WEFBNFgsQ0FBQztBQUNoYSxJQUFJLG1CQUFtQixHQUFHLDRIQUE0SCxDQUFDO0FBQ3ZKLElBQUksMEJBQTBCLEdBQUcsKzFFQUErMUUsQ0FBQztBQUNqNEUsSUFBSSxnQkFBZ0IsR0FBRyw0Y0FBNGMsQ0FBQztBQUNwZSxJQUFJLGdCQUFnQixHQUFHLDIzQkFBMjNCLENBQUM7QUFDbjVCLElBQUksMEJBQTBCLEdBQUcsc1FBQXNRLENBQUM7QUFDeFMsSUFBSSxzQ0FBc0MsR0FBRyxnV0FBZ1csQ0FBQztBQUM5WSxJQUFJLHlDQUF5QyxHQUFHLHFXQUFxVyxDQUFDO0FBQ3RaLElBQUksc0NBQXNDLEdBQUcsOFRBQThULENBQUM7QUFDNVcsSUFBSSxxQ0FBcUMsR0FBRyw2U0FBNlMsQ0FBQztBQUMxVixJQUFJLG9DQUFvQyxHQUFHLDhUQUE4VCxDQUFDO0FBQzFXLElBQUksdUNBQXVDLEdBQUcsOFRBQThULENBQUM7QUFDN1csSUFBSSx3Q0FBd0MsR0FBRywrMUJBQSsxQixDQUFDO0FBQy80QixJQUFJLDhCQUE4QixHQUFHLDJIQUEySCxDQUFDO0FBQ2pLLElBQUksNkJBQTZCLEdBQUcsdVNBQXVTLENBQUM7QUFDNVUsSUFBSSw4QkFBOEIsR0FBRyxtSUFBbUksQ0FBQztBQUN6SyxJQUFJLGtCQUFrQixHQUFHLHl1REFBeXVELENBQUM7QUFDbndELElBQUksWUFBWSxHQUFHLGtQQUFrUCxDQUFDO0FBQ3RRLElBQUksZUFBZSxHQUFHLGlZQUFpWSxDQUFDO0FBQ3haLElBQUksYUFBYSxHQUFHLHlJQUF5SSxDQUFDO0FBQzlKLElBQUksb0JBQW9CLEdBQUcscU9BQXFPLENBQUM7QUFDalEsSUFBSSxPQUFPLEdBQUcsa1FBQWtRLENBQUM7QUFDalIsSUFBSSxXQUFXLEdBQUcsa3hCQUFreEIsQ0FBQztBQUNyeUIsSUFBSSxPQUFPLEdBQUcsOGNBQThjLENBQUM7QUFDN2QsSUFBSSxZQUFZLEdBQUcseUlBQXlJLENBQUM7QUFDN0osSUFBSSxTQUFTLEdBQUcsbUlBQW1JLENBQUM7QUFDcEosSUFBSSxXQUFXLEdBQUcsaVNBQWlTLENBQUM7QUFDcFQsSUFBSSxRQUFRLEdBQUcsb0JBQW9CLENBQUM7QUFDcEMsSUFBSSxXQUFXLEdBQUcscUdBQXFHLENBQUM7QUFDeEgsSUFBSSxtQkFBbUIsR0FBRyxzSkFBc0osQ0FBQztBQUNqTCxJQUFJLDBCQUEwQixHQUFHLHNLQUFzSyxDQUFDO0FBQ3hNLElBQUksa0JBQWtCLEdBQUcsa0hBQWtILENBQUM7QUFDNUksSUFBSSxjQUFjLEdBQUcsNEZBQTRGLENBQUM7QUFDbEgsSUFBSSxzQkFBc0IsR0FBRyw0TEFBNEwsQ0FBQztBQUMxTixJQUFJLDZCQUE2QixHQUFHLGtRQUFrUSxDQUFDO0FBQ3ZTLElBQUksaUJBQWlCLEdBQUcsbVBBQW1QLENBQUM7QUFDNVEsSUFBSSx3QkFBd0IsR0FBRyw4WUFBOFksQ0FBQztBQUM5YSxJQUFJLHFCQUFxQixHQUFHLHNMQUFzTCxDQUFDO0FBQ25OLElBQUksZUFBZSxHQUFHLG9NQUFvTSxDQUFDO0FBQzNOLElBQUksc0JBQXNCLEdBQUcsOE1BQThNLENBQUM7QUFDNU8sSUFBSSxhQUFhLEdBQUcsb0JBQW9CLENBQUM7QUFDekMsSUFBSSxTQUFTLEdBQUcsMlRBQTJULENBQUM7QUFDNVUsSUFBSSxtQkFBbUIsR0FBRywwZUFBMGUsQ0FBQztBQUNyZ0IsSUFBSSxlQUFlLEdBQUcsbVNBQW1TLENBQUM7QUFDMVQsSUFBSSxXQUFXLEdBQUcsd3JCQUF3ckIsQ0FBQztBQUMzc0IsSUFBSSxhQUFhLEdBQUcsb0xBQW9MLENBQUM7QUFDek0sSUFBSSxjQUFjLEdBQUcsMlFBQTJRLENBQUM7QUFDalMsSUFBSSxVQUFVLEdBQUcsMkhBQTJILENBQUM7QUFDN0ksSUFBSSxtQkFBbUIsR0FBRyxnTkFBZ04sQ0FBQztBQUMzTyxJQUFJLHVCQUF1QixHQUFHLHlTQUF5UyxDQUFDO0FBQ3hVLElBQUksZUFBZSxHQUFHLHVTQUF1UyxDQUFDO0FBQzlULElBQUksbUJBQW1CLEdBQUcsNE1BQTRNLENBQUM7QUFDdk8sSUFBSSxjQUFjLEdBQUcsOFNBQThTLENBQUM7QUFDcFUsSUFBSSxhQUFhLEdBQUcsdzJCQUF3MkIsQ0FBQztBQUM3M0IsSUFBSSxjQUFjLEdBQUcsNFVBQTRVLENBQUM7QUFDbFcsSUFBSSxrQkFBa0IsR0FBRyxtS0FBbUssQ0FBQztBQUM3TCxJQUFJLGFBQWEsR0FBRyx3TEFBd0wsQ0FBQztBQUM3TSxJQUFJLG9CQUFvQixHQUFHLDhKQUE4SixDQUFDO0FBQzFMLElBQUksZUFBZSxHQUFHLG1LQUFtSyxDQUFDO0FBQzFMLElBQUksaUJBQWlCLEdBQUcsa2RBQWtkLENBQUM7QUFDM2UsSUFBSSxvQkFBb0IsR0FBRyxxbUJBQXFtQixDQUFDO0FBQ2pvQixJQUFJLGNBQWMsR0FBRyx3TkFBd04sQ0FBQztBQUM5TyxJQUFJLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBQ3ZELElBQUksV0FBVyxHQUFHLDBDQUEwQyxDQUFDO0FBQzdELElBQUksa0JBQWtCLEdBQUcsMEJBQTBCLENBQUM7QUFDcEQsSUFBSSxVQUFVLEdBQUcsaUZBQWlGLENBQUM7QUFDbkcsSUFBSSxxQkFBcUIsR0FBRyxrRUFBa0UsQ0FBQztBQUMvRixJQUFJLG9CQUFvQixHQUFHLDRFQUE0RSxDQUFDO0FBQ3hHLElBQUkscUJBQXFCLEdBQUcsb0VBQW9FLENBQUM7QUFDakcsSUFBSSxvQkFBb0IsR0FBRyxzRUFBc0UsQ0FBQztBQUNsRyxJQUFJLFFBQVEsR0FBRyw0V0FBNFcsQ0FBQztBQUM1WCxJQUFJLGdCQUFnQixHQUFHLGtYQUFrWCxDQUFDO0FBQzFZLElBQUksdUJBQXVCLEdBQUcsaVpBQWlaLENBQUM7QUFDaGIsSUFBSSxlQUFlLEdBQUcsNFhBQTRYLENBQUM7QUFDblosSUFBSSxPQUFPLEdBQUcscVpBQXFaLENBQUM7QUFDcGEsSUFBSSxjQUFjLEdBQUcsOGdCQUE4Z0IsQ0FBQztBQUNwaUIsSUFBSSxjQUFjLEdBQUcscXBCQUFxcEIsQ0FBQztBQUMzcUIsSUFBSSxTQUFTLEdBQUcsNlhBQTZYLENBQUM7QUFDOVksSUFBSSxnQkFBZ0IsR0FBRywrY0FBK2MsQ0FBQztBQUN2ZSxJQUFJLGNBQWMsR0FBRywrZ0JBQStnQixDQUFDO0FBQ3JpQixJQUFJLHFCQUFxQixHQUFHLGliQUFpYixDQUFDO0FBQzljLElBQUksYUFBYSxHQUFHLG9nQkFBb2dCLENBQUM7QUFDemhCLElBQUksb0JBQW9CLEdBQUcsZ2JBQWdiLENBQUM7QUFDNWMsSUFBSSxlQUFlLEdBQUcsc2JBQXNiLENBQUM7QUFDN2MsSUFBSSxrQkFBa0IsR0FBRyxraEJBQWtoQixDQUFDO0FBQzVpQixJQUFJLFlBQVksR0FBRyxnZEFBZ2QsQ0FBQztBQUNwZSxJQUFJLG9CQUFvQixHQUFHLGtjQUFrYyxDQUFDO0FBQzlkLElBQUksUUFBUSxHQUFHLHFIQUFxSCxDQUFDO0FBQ3JJLElBQUksaUJBQWlCLEdBQUcscVRBQXFULENBQUM7QUFDOVUsSUFBSSxnQkFBZ0IsR0FBRyxzSkFBc0osQ0FBQztBQUM5SyxJQUFJLGNBQWMsR0FBRyx1SkFBdUosQ0FBQztBQUM3SyxJQUFJLG9CQUFvQixHQUFHLHFLQUFxSyxDQUFDO0FBQ2pNLElBQUksV0FBVyxHQUFHLDZSQUE2UixDQUFDO0FBQ2hULElBQUksZUFBZSxHQUFHLDBRQUEwUSxDQUFDO0FBQ2pTLElBQUksa0JBQWtCLEdBQUcseVpBQXlaLENBQUM7QUFDbmIsSUFBSSxhQUFhLEdBQUcsaVFBQWlRLENBQUM7QUFDdFIsSUFBSSxvQkFBb0IsR0FBRyxvS0FBb0ssQ0FBQztBQUNoTSxJQUFJLFFBQVEsR0FBRyw0R0FBNEcsQ0FBQztBQUM1SCxJQUFJLGFBQWEsR0FBRyxpUUFBaVEsQ0FBQztBQUN0UixJQUFJLG9CQUFvQixHQUFHLG9TQUFvUyxDQUFDO0FBQ2hVLElBQUksV0FBVyxHQUFHLDI1QkFBMjVCLENBQUM7QUFDOTZCLElBQUksa0JBQWtCLEdBQUcsNDdCQUE0N0IsQ0FBQztBQUN0OUIsSUFBSSxZQUFZLEdBQUcsd1VBQXdVLENBQUM7QUFDNVYsSUFBSSxtQkFBbUIsR0FBRyx3VkFBd1YsQ0FBQztBQUNuWCxJQUFJLGNBQWMsR0FBRyw4UkFBOFIsQ0FBQztBQUNwVCxJQUFJLHFCQUFxQixHQUFHLHdTQUF3UyxDQUFDO0FBQ3JVLElBQUksYUFBYSxHQUFHLHlNQUF5TSxDQUFDO0FBQzlOLElBQUksb0JBQW9CLEdBQUcsNE9BQTRPLENBQUM7QUFDeFEsSUFBSSxXQUFXLEdBQUcsa05BQWtOLENBQUM7QUFDck8sSUFBSSxrQkFBa0IsR0FBRyw4UEFBOFAsQ0FBQztBQUN4UixJQUFJLFlBQVksR0FBRyxzUkFBc1IsQ0FBQztBQUMxUyxJQUFJLGlCQUFpQixHQUFHLGthQUFrYSxDQUFDO0FBQzNiLElBQUksd0JBQXdCLEdBQUcsb2FBQW9hLENBQUM7QUFDcGMsSUFBSSxlQUFlLEdBQUcsOGpDQUE4akMsQ0FBQztBQUNybEMsSUFBSSxzQkFBc0IsR0FBRyw0akNBQTRqQyxDQUFDO0FBQzFsQyxJQUFJLGdCQUFnQixHQUFHLG9jQUFvYyxDQUFDO0FBQzVkLElBQUksdUJBQXVCLEdBQUcsNGNBQTRjLENBQUM7QUFDM2UsSUFBSSxpQkFBaUIsR0FBRywwV0FBMFcsQ0FBQztBQUNuWSxJQUFJLHdCQUF3QixHQUFHLGdYQUFnWCxDQUFDO0FBQ2haLElBQUksZUFBZSxHQUFHLG1SQUFtUixDQUFDO0FBQzFTLElBQUksc0JBQXNCLEdBQUcsK1RBQStULENBQUM7QUFDN1YsSUFBSSxtQkFBbUIsR0FBRyxnVEFBZ1QsQ0FBQztBQUMzVSxJQUFJLGdCQUFnQixHQUFHLDRXQUE0VyxDQUFDO0FBQ3BZLElBQUksdUJBQXVCLEdBQUcsZ1hBQWdYLENBQUM7QUFDL1ksSUFBSSxnQkFBZ0IsR0FBRyxrWUFBa1ksQ0FBQztBQUMxWixJQUFJLHVCQUF1QixHQUFHLG9ZQUFvWSxDQUFDO0FBQ25hLElBQUksa0JBQWtCLEdBQUcsd2VBQXdlLENBQUM7QUFDbGdCLElBQUkseUJBQXlCLEdBQUcsMGVBQTBlLENBQUM7QUFDM2dCLElBQUksb0JBQW9CLEdBQUcsNlVBQTZVLENBQUM7QUFDelcsSUFBSSwyQkFBMkIsR0FBRywrVkFBK1YsQ0FBQztBQUNsWSxJQUFJLGdCQUFnQixHQUFHLHdjQUF3YyxDQUFDO0FBQ2hlLElBQUksdUJBQXVCLEdBQUcsMGNBQTBjLENBQUM7QUFDemUsSUFBSSxlQUFlLEdBQUcsaUlBQWlJLENBQUM7QUFDeEosSUFBSSxZQUFZLEdBQUcsMk1BQTJNLENBQUM7QUFDL04sSUFBSSxtQkFBbUIsR0FBRyw4T0FBOE8sQ0FBQztBQUN6USxJQUFJLFlBQVksR0FBRyxpT0FBaU8sQ0FBQztBQUNyUCxJQUFJLG1CQUFtQixHQUFHLG9RQUFvUSxDQUFDO0FBQy9SLElBQUksY0FBYyxHQUFHLHVVQUF1VSxDQUFDO0FBQzdWLElBQUkscUJBQXFCLEdBQUcsMFdBQTBXLENBQUM7QUFDdlksSUFBSSxZQUFZLEdBQUcsMHpCQUEwekIsQ0FBQztBQUM5MEIsSUFBSSxjQUFjLEdBQUcsc2FBQXNhLENBQUM7QUFDNWIsSUFBSSxxQkFBcUIsR0FBRyxzWUFBc1ksQ0FBQztBQUNuYSxJQUFJLGdCQUFnQixHQUFHLCtLQUErSyxDQUFDO0FBQ3ZNLElBQUksdUJBQXVCLEdBQUcsME1BQTBNLENBQUM7QUFDek8sSUFBSSxZQUFZLEdBQUcsdVNBQXVTLENBQUM7QUFDM1QsSUFBSSxtQkFBbUIsR0FBRywwVUFBMFUsQ0FBQztBQUNyVyxJQUFJLFFBQVEsR0FBRyxrZEFBa2QsQ0FBQztBQUNsZSxJQUFJLFdBQVcsR0FBRyw2aEJBQTZoQixDQUFDO0FBQ2hqQixJQUFJLFNBQVMsR0FBRywwS0FBMEssQ0FBQztBQUMzTCxJQUFJLGlCQUFpQixHQUFHLG1KQUFtSixDQUFDO0FBQzVLLElBQUksb0JBQW9CLEdBQUcsNE9BQTRPLENBQUM7QUFDeFEsSUFBSSxXQUFXLEdBQUcsb1hBQW9YLENBQUM7QUFDdlksSUFBSSxjQUFjLEdBQUcsK2ZBQStmLENBQUM7QUFDcmhCLElBQUkscUJBQXFCLEdBQUcsOGxCQUE4bEIsQ0FBQztBQUMzbkIsSUFBSSxrQkFBa0IsR0FBRyxvZUFBb2UsQ0FBQztBQUM5ZixJQUFJLFFBQVEsR0FBRyw4TkFBOE4sQ0FBQztBQUM5TyxJQUFJLDRCQUE0QixHQUFHLHlaQUF5WixDQUFDO0FBQzdiLElBQUksNkJBQTZCLEdBQUcsd0lBQXdJLENBQUM7QUFDN0ssSUFBSSxzQkFBc0IsR0FBRywrTUFBK00sQ0FBQztBQUM3TyxJQUFJLHlCQUF5QixHQUFHLHlGQUF5RixDQUFDO0FBQzFILElBQUksdUJBQXVCLEdBQUcsaU1BQWlNLENBQUM7QUFDaE8sSUFBSSxXQUFXLEdBQUcsOExBQThMLENBQUM7QUFDak4sSUFBSSxtQkFBbUIsR0FBRywrTkFBK04sQ0FBQztBQUMxUCxJQUFJLDBCQUEwQixHQUFHLGdQQUFnUCxDQUFDO0FBQ2xSLElBQUksa0JBQWtCLEdBQUcsOE1BQThNLENBQUM7QUFDeE8sSUFBSSxjQUFjLEdBQUcsZ01BQWdNLENBQUM7QUFDdE4sSUFBSSxxQkFBcUIsR0FBRyxtUUFBbVEsQ0FBQztBQUNoUyxJQUFJLGdCQUFnQixHQUFHLHVNQUF1TSxDQUFDO0FBQy9OLElBQUksZ0JBQWdCLEdBQUcsK1BBQStQLENBQUM7QUFDdlIsSUFBSSxrQkFBa0IsR0FBRyw4b0JBQThvQixDQUFDO0FBQ3hxQixJQUFJLFlBQVksR0FBRyxxR0FBcUcsQ0FBQztBQUN6SCxJQUFJLHFCQUFxQixHQUFHLDJVQUEyVSxDQUFDO0FBQ3hXLElBQUksd0JBQXdCLEdBQUcsd1pBQXdaLENBQUM7QUFDeGIsSUFBSSxrQkFBa0IsR0FBRyxxR0FBcUcsQ0FBQztBQUMvSCxJQUFJLHdCQUF3QixHQUFHLHlGQUF5RixDQUFDO0FBQ3pILElBQUksZ0JBQWdCLEdBQUcsK0ZBQStGLENBQUM7QUFDdkgsSUFBSSxzQkFBc0IsR0FBRyxtSkFBbUosQ0FBQztBQUNqTCxJQUFJLGVBQWUsR0FBRyx1S0FBdUssQ0FBQztBQUM5TCxJQUFJLHNCQUFzQixHQUFHLCtNQUErTSxDQUFDO0FBQzdPLElBQUksbUJBQW1CLEdBQUcsMkVBQTJFLENBQUM7QUFDdEcsSUFBSSxnQkFBZ0IsR0FBRyx1SUFBdUksQ0FBQztBQUMvSixJQUFJLG1CQUFtQixHQUFHLGdHQUFnRyxDQUFDO0FBQzNILElBQUkseUJBQXlCLEdBQUcsOEdBQThHLENBQUM7QUFDL0ksSUFBSSxxQkFBcUIsR0FBRyxnSEFBZ0gsQ0FBQztBQUM3SSxJQUFJLDJCQUEyQixHQUFHLG9HQUFvRyxDQUFDO0FBQ3ZJLElBQUksaUJBQWlCLEdBQUcsK0VBQStFLENBQUM7QUFDeEcsSUFBSSx1QkFBdUIsR0FBRyxrSUFBa0ksQ0FBQztBQUNqSyxJQUFJLFdBQVcsR0FBRyxzU0FBc1MsQ0FBQztBQUN6VCxJQUFJLGtCQUFrQixHQUFHLHFHQUFxRyxDQUFDO0FBQy9ILElBQUksZ0JBQWdCLEdBQUcsOEJBQThCLENBQUM7QUFDdEQsSUFBSSxtQkFBbUIsR0FBRyxrV0FBa1csQ0FBQztBQUM3WCxJQUFJLHFCQUFxQixHQUFHLGdNQUFnTSxDQUFDO0FBQzdOLElBQUksaUJBQWlCLEdBQUcsOEJBQThCLENBQUM7QUFDdkQsSUFBSSxXQUFXLEdBQUcsNklBQTZJLENBQUM7QUFDaEssSUFBSSxPQUFPLEdBQUcsZ0RBQWdELENBQUM7QUFDL0QsSUFBSSxNQUFNLEdBQUcscVJBQXFSLENBQUM7QUFDblMsSUFBSSxlQUFlLEdBQUcscVVBQXFVLENBQUM7QUFDNVYsSUFBSSxTQUFTLEdBQUcsd0pBQXdKLENBQUM7QUFDekssSUFBSSxlQUFlLEdBQUcsZ1NBQWdTLENBQUM7QUFDdlQsSUFBSSxhQUFhLEdBQUcseURBQXlELENBQUM7QUFDOUUsSUFBSSxvQkFBb0IsR0FBRyxrSEFBa0gsQ0FBQztBQUM5SSxJQUFJLFNBQVMsR0FBRyxtREFBbUQsQ0FBQztBQUNwRSxJQUFJLFdBQVcsR0FBRyxvTkFBb04sQ0FBQztBQUN2TyxJQUFJLFNBQVMsR0FBRyxtVEFBbVQsQ0FBQztBQUNwVSxJQUFJLFVBQVUsR0FBRywrSEFBK0gsQ0FBQztBQUNqSixJQUFJLFVBQVUsR0FBRyxvTEFBb0wsQ0FBQztBQUN0TSxJQUFJLGFBQWEsR0FBRywrU0FBK1MsQ0FBQztBQUNwVSxJQUFJLG9CQUFvQixHQUFHLGlXQUFpVyxDQUFDO0FBQzdYLElBQUksaUJBQWlCLEdBQUcsK0xBQStMLENBQUM7QUFDeE4sSUFBSSxtQkFBbUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUMzRCxJQUFJLHdCQUF3QixHQUFHLG9FQUFvRSxDQUFDO0FBQ3BHLElBQUksbUJBQW1CLEdBQUcsZ0NBQWdDLENBQUM7QUFDM0QsSUFBSSx3QkFBd0IsR0FBRyxvRUFBb0UsQ0FBQztBQUNwRyxJQUFJLG1CQUFtQixHQUFHLCtCQUErQixDQUFDO0FBQzFELElBQUksd0JBQXdCLEdBQUcsbUVBQW1FLENBQUM7QUFDbkcsSUFBSSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsSUFBSSx3QkFBd0IsR0FBRywrQ0FBK0MsQ0FBQztBQUMvRSxJQUFJLHFCQUFxQixHQUFHLG1GQUFtRixDQUFDO0FBQ2hILElBQUksNEJBQTRCLEdBQUcsbUlBQW1JLENBQUM7QUFDdkssSUFBSSx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztBQUMxRCxJQUFJLFNBQVMsR0FBRywrVEFBK1QsQ0FBQztBQUNoVixJQUFJLFlBQVksR0FBRywrTUFBK00sQ0FBQztBQUNuTyxJQUFJLGlCQUFpQixHQUFHLGdUQUFnVCxDQUFDO0FBQ3pVLElBQUksZ0JBQWdCLEdBQUcsd1VBQXdVLENBQUM7QUFDaFcsSUFBSSxtQkFBbUIsR0FBRyxzS0FBc0ssQ0FBQztBQUNqTSxJQUFJLDJCQUEyQixHQUFHLDJOQUEyTixDQUFDO0FBQzlQLElBQUksa0NBQWtDLEdBQUcsME9BQTBPLENBQUM7QUFDcFIsSUFBSSwwQkFBMEIsR0FBRyw4TEFBOEwsQ0FBQztBQUNoTyxJQUFJLE1BQU0sR0FBRyxrd0JBQWt3QixDQUFDO0FBQ2h4QixJQUFJLG1CQUFtQixHQUFHLGduQkFBZ25CLENBQUM7QUFDM29CLElBQUksU0FBUyxHQUFHLCtQQUErUCxDQUFDO0FBQ2hSLElBQUksYUFBYSxHQUFHLGlRQUFpUSxDQUFDO0FBQ3RSLElBQUksZ0JBQWdCLEdBQUcsNFdBQTRXLENBQUM7QUFDcFksSUFBSSxRQUFRLEdBQUcsMmhCQUEyaEIsQ0FBQztBQUMzaUIsSUFBSSxrQkFBa0IsR0FBRyxpV0FBaVcsQ0FBQztBQUMzWCxJQUFJLGlCQUFpQixHQUFHLHNoQkFBc2hCLENBQUM7QUFDL2lCLElBQUksY0FBYyxHQUFHLDRsQkFBNGxCLENBQUM7QUFDbG5CLElBQUksZUFBZSxHQUFHLDBQQUEwUCxDQUFDO0FBQ2pSLElBQUksTUFBTSxHQUFHLHFiQUFxYixDQUFDO0FBQ25jLElBQUksU0FBUyxHQUFHLG81Q0FBbzVDLENBQUM7QUFDcjZDLElBQUksVUFBVSxHQUFHLGdPQUFnTyxDQUFDO0FBQ2xQLElBQUksV0FBVyxHQUFHLGdFQUFnRSxDQUFDO0FBQ25GLElBQUksa0JBQWtCLEdBQUcscUlBQXFJLENBQUM7QUFDL0osSUFBSSxPQUFPLEdBQUcseUZBQXlGLENBQUM7QUFDeEcsSUFBSSxZQUFZLEdBQUcsMkhBQTJILENBQUM7QUFDL0ksSUFBSSxtQkFBbUIsR0FBRyxnSkFBZ0osQ0FBQztBQUMzSyxJQUFJLGVBQWUsR0FBRyw2SEFBNkgsQ0FBQztBQUNwSixJQUFJLHNCQUFzQixHQUFHLGlKQUFpSixDQUFDO0FBQy9LLElBQUksY0FBYyxHQUFHLHFIQUFxSCxDQUFDO0FBQzNJLElBQUksV0FBVyxHQUFHLHVJQUF1SSxDQUFDO0FBQzFKLElBQUksa0JBQWtCLEdBQUcsMkpBQTJKLENBQUM7QUFDckwsSUFBSSxhQUFhLEdBQUcscVBBQXFQLENBQUM7QUFDMVEsSUFBSSxvQkFBb0IsR0FBRyx5UUFBeVEsQ0FBQztBQUNyUyxJQUFJLGFBQWEsR0FBRyxnWkFBZ1osQ0FBQztBQUNyYSxJQUFJLG9CQUFvQixHQUFHLHNlQUFzZSxDQUFDO0FBQ2xnQixJQUFJLFdBQVcsR0FBRyxpSUFBaUksQ0FBQztBQUNwSixJQUFJLGtCQUFrQixHQUFHLGtIQUFrSCxDQUFDO0FBQzVJLElBQUksV0FBVyxHQUFHLCtMQUErTCxDQUFDO0FBQ2xOLElBQUksZ0JBQWdCLEdBQUcsbVVBQW1VLENBQUM7QUFDM1YsSUFBSSx1QkFBdUIsR0FBRyw4VEFBOFQsQ0FBQztBQUM3VixJQUFJLGVBQWUsR0FBRyx1WUFBdVksQ0FBQztBQUM5WixJQUFJLHNCQUFzQixHQUFHLGdaQUFnWixDQUFDO0FBQzlhLElBQUksZ0JBQWdCLEdBQUcsd1BBQXdQLENBQUM7QUFDaFIsSUFBSSx1QkFBdUIsR0FBRyxtUEFBbVAsQ0FBQztBQUNsUixJQUFJLG1CQUFtQixHQUFHLHdTQUF3UyxDQUFDO0FBQ25VLElBQUksa0JBQWtCLEdBQUcsNE1BQTRNLENBQUM7QUFDdE8sSUFBSSxlQUFlLEdBQUcsZ1JBQWdSLENBQUM7QUFDdlMsSUFBSSxzQkFBc0IsR0FBRywyUUFBMlEsQ0FBQztBQUN6UyxJQUFJLGlCQUFpQixHQUFHLGdXQUFnVyxDQUFDO0FBQ3pYLElBQUksd0JBQXdCLEdBQUcsMlZBQTJWLENBQUM7QUFDM1gsSUFBSSx1QkFBdUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RSxJQUFJLE1BQU0sR0FBRyx1SUFBdUksQ0FBQztBQUNySixJQUFJLE9BQU8sR0FBRyw2WEFBNlgsQ0FBQztBQUM1WSxJQUFJLE9BQU8sR0FBRyxrWkFBa1osQ0FBQztBQUNqYSxJQUFJLFVBQVUsR0FBRyxxUEFBcVAsQ0FBQztBQUN2USxJQUFJLFdBQVcsR0FBRyxnR0FBZ0csQ0FBQztBQUNuSCxJQUFJLGNBQWMsR0FBRywyS0FBMkssQ0FBQztBQUNqTSxJQUFJLHNCQUFzQixHQUFHLDhNQUE4TSxDQUFDO0FBQzVPLElBQUksNkJBQTZCLEdBQUcsOE5BQThOLENBQUM7QUFDblEsSUFBSSxxQkFBcUIsR0FBRywyTEFBMkwsQ0FBQztBQUN4TixJQUFJLGlCQUFpQixHQUFHLDJLQUEySyxDQUFDO0FBQ3BNLElBQUksd0JBQXdCLEdBQUcsOE9BQThPLENBQUM7QUFDOVEsSUFBSSxXQUFXLEdBQUcsd0JBQXdCLENBQUM7QUFDM0MsSUFBSSxjQUFjLEdBQUcsaUdBQWlHLENBQUM7QUFDdkgsSUFBSSxzQkFBc0IsR0FBRyxzSUFBc0ksQ0FBQztBQUNwSyxJQUFJLDZCQUE2QixHQUFHLGdKQUFnSixDQUFDO0FBQ3JMLElBQUkscUJBQXFCLEdBQUcsNkdBQTZHLENBQUM7QUFDMUksSUFBSSxpQkFBaUIsR0FBRyxtR0FBbUcsQ0FBQztBQUM1SCxJQUFJLHdCQUF3QixHQUFHLHNLQUFzSyxDQUFDO0FBQ3RNLElBQUksWUFBWSxHQUFHLDZJQUE2SSxDQUFDO0FBQ2pLLElBQUksZUFBZSxHQUFHLDJOQUEyTixDQUFDO0FBQ2xQLElBQUksdUJBQXVCLEdBQUcsc1JBQXNSLENBQUM7QUFDclQsSUFBSSw4QkFBOEIsR0FBRyxvU0FBb1MsQ0FBQztBQUMxVSxJQUFJLHNCQUFzQixHQUFHLG1PQUFtTyxDQUFDO0FBQ2pRLElBQUksa0JBQWtCLEdBQUcsNE1BQTRNLENBQUM7QUFDdE8sSUFBSSx5QkFBeUIsR0FBRyw2UUFBNlEsQ0FBQztBQUM5UyxJQUFJLFdBQVcsR0FBRyw0RkFBNEYsQ0FBQztBQUMvRyxJQUFJLGNBQWMsR0FBRyw0S0FBNEssQ0FBQztBQUNsTSxJQUFJLHNCQUFzQixHQUFHLDBNQUEwTSxDQUFDO0FBQ3hPLElBQUksNkJBQTZCLEdBQUcsb05BQW9OLENBQUM7QUFDelAsSUFBSSxxQkFBcUIsR0FBRyxrTEFBa0wsQ0FBQztBQUMvTSxJQUFJLGlCQUFpQixHQUFHLHVLQUF1SyxDQUFDO0FBQ2hNLElBQUksd0JBQXdCLEdBQUcsME9BQTBPLENBQUM7QUFDMVEsSUFBSSxXQUFXLEdBQUcsNkhBQTZILENBQUM7QUFDaEosSUFBSSxjQUFjLEdBQUcsNk5BQTZOLENBQUM7QUFDblAsSUFBSSxzQkFBc0IsR0FBRywyT0FBMk8sQ0FBQztBQUN6USxJQUFJLDZCQUE2QixHQUFHLHNQQUFzUCxDQUFDO0FBQzNSLElBQUkscUJBQXFCLEdBQUcsc05BQXNOLENBQUM7QUFDblAsSUFBSSxpQkFBaUIsR0FBRyx5TUFBeU0sQ0FBQztBQUNsTyxJQUFJLHdCQUF3QixHQUFHLHVRQUF1USxDQUFDO0FBQ3ZTLElBQUksV0FBVyxHQUFHLGtDQUFrQyxDQUFDO0FBQ3JELElBQUksY0FBYyxHQUFHLDRHQUE0RyxDQUFDO0FBQ2xJLElBQUksc0JBQXNCLEdBQUcsaUpBQWlKLENBQUM7QUFDL0ssSUFBSSw2QkFBNkIsR0FBRywySkFBMkosQ0FBQztBQUNoTSxJQUFJLHFCQUFxQixHQUFHLHdIQUF3SCxDQUFDO0FBQ3JKLElBQUksaUJBQWlCLEdBQUcsNkdBQTZHLENBQUM7QUFDdEksSUFBSSx3QkFBd0IsR0FBRyxnTEFBZ0wsQ0FBQztBQUNoTixJQUFJLFdBQVcsR0FBRyx1RUFBdUUsQ0FBQztBQUMxRixJQUFJLGNBQWMsR0FBRyx3SkFBd0osQ0FBQztBQUM5SyxJQUFJLHNCQUFzQixHQUFHLDRMQUE0TCxDQUFDO0FBQzFOLElBQUksNkJBQTZCLEdBQUcsdU1BQXVNLENBQUM7QUFDNU8sSUFBSSxxQkFBcUIsR0FBRyx3S0FBd0ssQ0FBQztBQUNyTSxJQUFJLGlCQUFpQixHQUFHLGtKQUFrSixDQUFDO0FBQzNLLElBQUksd0JBQXdCLEdBQUcscU5BQXFOLENBQUM7QUFDclAsSUFBSSxXQUFXLEdBQUcsOEdBQThHLENBQUM7QUFDakksSUFBSSxjQUFjLEdBQUcsaU1BQWlNLENBQUM7QUFDdk4sSUFBSSxzQkFBc0IsR0FBRyx3T0FBd08sQ0FBQztBQUN0USxJQUFJLDZCQUE2QixHQUFHLGtQQUFrUCxDQUFDO0FBQ3ZSLElBQUkscUJBQXFCLEdBQUcsZ05BQWdOLENBQUM7QUFDN08sSUFBSSxpQkFBaUIsR0FBRyx5TEFBeUwsQ0FBQztBQUNsTixJQUFJLHdCQUF3QixHQUFHLDRQQUE0UCxDQUFDO0FBQzVSLElBQUksV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBQzlDLElBQUksY0FBYyxHQUFHLDBHQUEwRyxDQUFDO0FBQ2hJLElBQUksc0JBQXNCLEdBQUcsOElBQThJLENBQUM7QUFDNUssSUFBSSw2QkFBNkIsR0FBRyx3SkFBd0osQ0FBQztBQUM3TCxJQUFJLHFCQUFxQixHQUFHLG9IQUFvSCxDQUFDO0FBQ2pKLElBQUksaUJBQWlCLEdBQUcsMEdBQTBHLENBQUM7QUFDbkksSUFBSSx3QkFBd0IsR0FBRyw2S0FBNkssQ0FBQztBQUM3TSxJQUFJLFdBQVcsR0FBRyx3TkFBd04sQ0FBQztBQUMzTyxJQUFJLGNBQWMsR0FBRyx5U0FBeVMsQ0FBQztBQUMvVCxJQUFJLHNCQUFzQixHQUFHLDRVQUE0VSxDQUFDO0FBQzFXLElBQUksNkJBQTZCLEdBQUcsb1ZBQW9WLENBQUM7QUFDelgsSUFBSSxxQkFBcUIsR0FBRyxpVEFBaVQsQ0FBQztBQUM5VSxJQUFJLGlCQUFpQixHQUFHLHlTQUF5UyxDQUFDO0FBQ2xVLElBQUksd0JBQXdCLEdBQUcsa1dBQWtXLENBQUM7QUFDbFksSUFBSSxXQUFXLEdBQUcsNkdBQTZHLENBQUM7QUFDaEksSUFBSSxjQUFjLEdBQUcsaU1BQWlNLENBQUM7QUFDdk4sSUFBSSxzQkFBc0IsR0FBRyxvT0FBb08sQ0FBQztBQUNsUSxJQUFJLDZCQUE2QixHQUFHLCtPQUErTyxDQUFDO0FBQ3BSLElBQUkscUJBQXFCLEdBQUcsMk1BQTJNLENBQUM7QUFDeE8sSUFBSSxpQkFBaUIsR0FBRyx3TEFBd0wsQ0FBQztBQUNqTixJQUFJLHdCQUF3QixHQUFHLDJQQUEyUCxDQUFDO0FBQzNSLElBQUksZUFBZSxHQUFHLHNLQUFzSyxDQUFDO0FBQzdMLElBQUksa0JBQWtCLEdBQUcscU9BQXFPLENBQUM7QUFDL1AsSUFBSSwwQkFBMEIsR0FBRyx1UUFBdVEsQ0FBQztBQUN6UyxJQUFJLGlDQUFpQyxHQUFHLDRRQUE0USxDQUFDO0FBQ3JULElBQUkseUJBQXlCLEdBQUcsK09BQStPLENBQUM7QUFDaFIsSUFBSSxxQkFBcUIsR0FBRyxxT0FBcU8sQ0FBQztBQUNsUSxJQUFJLDRCQUE0QixHQUFHLHdTQUF3UyxDQUFDO0FBQzVVLElBQUksbUJBQW1CLEdBQUcseUNBQXlDLENBQUM7QUFDcEUsSUFBSSxtQkFBbUIsR0FBRyw0REFBNEQsQ0FBQztBQUN2RixJQUFJLE1BQU0sR0FBRyxzV0FBc1csQ0FBQztBQUNwWCxJQUFJLFlBQVksR0FBRyw0TEFBNEwsQ0FBQztBQUNoTixJQUFJLE9BQU8sR0FBRyx1Y0FBdWMsQ0FBQztBQUN0ZCxJQUFJLE1BQU0sR0FBRyxpTEFBaUwsQ0FBQztBQUMvTCxJQUFJLFVBQVUsR0FBRyx1ckJBQXVyQixDQUFDO0FBQ3pzQixJQUFJLE1BQU0sR0FBRyxzSkFBc0osQ0FBQztBQUNwSyxJQUFJLE1BQU0sR0FBRyxvUkFBb1IsQ0FBQztBQUNsUyxJQUFJLFVBQVUsR0FBRyx3REFBd0QsQ0FBQztBQUMxRSxJQUFJLGlCQUFpQixHQUFHLDRIQUE0SCxDQUFDO0FBQ3JKLElBQUksV0FBVyxHQUFHLDJLQUEySyxDQUFDO0FBQzlMLElBQUksa0JBQWtCLEdBQUcsZ1VBQWdVLENBQUM7QUFDMVYsSUFBSSxnQkFBZ0IsR0FBRyx5d0JBQXl3QixDQUFDO0FBQ2p5QixJQUFJLFFBQVEsR0FBRywrTUFBK00sQ0FBQztBQUMvTixJQUFJLGlCQUFpQixHQUFHLDBNQUEwTSxDQUFDO0FBQ25PLElBQUksdUJBQXVCLEdBQUcsNmZBQTZmLENBQUM7QUFDNWhCLElBQUksOEJBQThCLEdBQUcsOGJBQThiLENBQUM7QUFDcGUsSUFBSSx3QkFBd0IsR0FBRyw2TkFBNk4sQ0FBQztBQUM3UCxJQUFJLE1BQU0sR0FBRywraEJBQStoQixDQUFDO0FBQzdpQixJQUFJLFVBQVUsR0FBRyxvUUFBb1EsQ0FBQztBQUN0UixJQUFJLFdBQVcsR0FBRyxtcENBQW1wQyxDQUFDO0FBQ3RxQyxJQUFJLGlCQUFpQixHQUFHLG1pQkFBbWlCLENBQUM7QUFDNWpCLElBQUksUUFBUSxHQUFHLDhhQUE4YSxDQUFDO0FBQzliLElBQUksUUFBUSxHQUFHLHVxQkFBdXFCLENBQUM7QUFDdnJCLElBQUksY0FBYyxHQUFHLHNUQUFzVCxDQUFDO0FBQzVVLElBQUksVUFBVSxHQUFHLHdSQUF3UixDQUFDO0FBQzFTLElBQUksWUFBWSxHQUFHLGdJQUFnSSxDQUFDO0FBQ3BKLElBQUksWUFBWSxHQUFHLHNJQUFzSSxDQUFDO0FBQzFKLElBQUksdUJBQXVCLEdBQUcsdTNCQUF1M0IsQ0FBQztBQUN0NUIsSUFBSSxTQUFTLEdBQUcscVJBQXFSLENBQUM7QUFDdFMsSUFBSSxRQUFRLEdBQUcsdVhBQXVYLENBQUM7QUFDdlksSUFBSSxRQUFRLEdBQUcsc2RBQXNkLENBQUM7QUFDdGUsSUFBSSxlQUFlLEdBQUcsZ1VBQWdVLENBQUM7QUFDdlYsSUFBSSw2QkFBNkIsR0FBRyxzSkFBc0osQ0FBQztBQUMzTCxJQUFJLDhCQUE4QixHQUFHLDJKQUEySixDQUFDO0FBQ2pNLElBQUkscUJBQXFCLEdBQUcsc09BQXNPLENBQUM7QUFDblEsSUFBSSw0QkFBNEIsR0FBRyxvVEFBb1QsQ0FBQztBQUN4VixJQUFJLHNCQUFzQixHQUFHLGdQQUFnUCxDQUFDO0FBQzlRLElBQUksNkJBQTZCLEdBQUcsZ1RBQWdULENBQUM7QUFDclYsSUFBSSx3QkFBd0IsR0FBRyxrUUFBa1EsQ0FBQztBQUNsUyxJQUFJLHlCQUF5QixHQUFHLCtQQUErUCxDQUFDO0FBQ2hTLElBQUksU0FBUyxHQUFHLDJjQUEyYyxDQUFDO0FBQzVkLElBQUksV0FBVyxHQUFHLDBmQUEwZixDQUFDO0FBQzdnQixJQUFJLGtCQUFrQixHQUFHLDZtQkFBNm1CLENBQUM7QUFDdm9CLElBQUksY0FBYyxHQUFHLHNOQUFzTixDQUFDO0FBQzVPLElBQUksV0FBVyxHQUFHLHNNQUFzTSxDQUFDO0FBQ3pOLElBQUksTUFBTSxHQUFHLDhzQkFBOHNCLENBQUM7QUFDNXRCLElBQUksU0FBUyxHQUFHLGdMQUFnTCxDQUFDO0FBQ2pNLElBQUksVUFBVSxHQUFHLGlPQUFpTyxDQUFDO0FBQ25QLElBQUksY0FBYyxHQUFHLG9QQUFvUCxDQUFDO0FBQzFRLElBQUksWUFBWSxHQUFHLHVQQUF1UCxDQUFDO0FBQzNRLElBQUksaUJBQWlCLEdBQUcsc25CQUFzbkIsQ0FBQztBQUMvb0IsSUFBSSx1QkFBdUIsR0FBRywwY0FBMGMsQ0FBQztBQUN6ZSxJQUFJLFlBQVksR0FBRyw2RUFBNkUsQ0FBQztBQUNqRyxJQUFJLFdBQVcsR0FBRywwRUFBMEUsQ0FBQztBQUM3RixJQUFJLGlCQUFpQixHQUFHLDJGQUEyRixDQUFDO0FBQ3BILElBQUksbUJBQW1CLEdBQUcsNkZBQTZGLENBQUM7QUFDeEgsSUFBSSxtQkFBbUIsR0FBRywwRkFBMEYsQ0FBQztBQUNySCxJQUFJLHlCQUF5QixHQUFHLG1JQUFtSSxDQUFDO0FBQ3BLLElBQUksd0JBQXdCLEdBQUcsMkZBQTJGLENBQUM7QUFDM0gsSUFBSSx5QkFBeUIsR0FBRyw2RkFBNkYsQ0FBQztBQUM5SCxJQUFJLFdBQVcsR0FBRyx1S0FBdUssQ0FBQztBQUMxTCxJQUFJLGtCQUFrQixHQUFHLGdMQUFnTCxDQUFDO0FBQzFNLElBQUksZUFBZSxHQUFHLHNLQUFzSyxDQUFDO0FBQzdMLElBQUksc0JBQXNCLEdBQUcsOEtBQThLLENBQUM7QUFDNU0sSUFBSSxPQUFPLEdBQUcsK1NBQStTLENBQUM7QUFDOVQsSUFBSSxZQUFZLEdBQUcsNFhBQTRYLENBQUM7QUFDaFosSUFBSSxtQkFBbUIsR0FBRyxvVkFBb1YsQ0FBQztBQUMvVyxJQUFJLFVBQVUsR0FBRyxvY0FBb2MsQ0FBQztBQUN0ZCxJQUFJLGlCQUFpQixHQUFHLDBZQUEwWSxDQUFDO0FBQ25hLElBQUksY0FBYyxHQUFHLG1QQUFtUCxDQUFDO0FBQ3pRLElBQUksV0FBVyxHQUFHLG9aQUFvWixDQUFDO0FBQ3ZhLElBQUksa0JBQWtCLEdBQUcsNFdBQTRXLENBQUM7QUFDdFksSUFBSSxhQUFhLEdBQUcsMGZBQTBmLENBQUM7QUFDL2dCLElBQUksb0JBQW9CLEdBQUcsa2RBQWtkLENBQUM7QUFDOWUsSUFBSSxVQUFVLEdBQUcsOGlCQUE4aUIsQ0FBQztBQUNoa0IsSUFBSSxrQkFBa0IsR0FBRyw2S0FBNkssQ0FBQztBQUN2TSxJQUFJLGlCQUFpQixHQUFHLDZ1QkFBNnVCLENBQUM7QUFDdHdCLElBQUksZ0JBQWdCLEdBQUcsd2ZBQXdmLENBQUM7QUFDaGhCLElBQUksdUJBQXVCLEdBQUcseWRBQXlkLENBQUM7QUFDeGYsSUFBSSxXQUFXLEdBQUcsd3FCQUF3cUIsQ0FBQztBQUMzckIsSUFBSSxNQUFNLEdBQUcsMEpBQTBKLENBQUM7QUFDeEssSUFBSSxnQkFBZ0IsR0FBRyx1R0FBdUcsQ0FBQztBQUMvSCxJQUFJLGlCQUFpQixHQUFHLDBHQUEwRyxDQUFDO0FBQ25JLElBQUksVUFBVSxHQUFHLDhGQUE4RixDQUFDO0FBQ2hILElBQUksZ0JBQWdCLEdBQUcsZ0hBQWdILENBQUM7QUFDeEksSUFBSSxVQUFVLEdBQUcsMkZBQTJGLENBQUM7QUFDN0csSUFBSSxXQUFXLEdBQUcsOEZBQThGLENBQUM7QUFDakgsSUFBSSxhQUFhLEdBQUcscUdBQXFHLENBQUM7QUFDMUgsSUFBSSxjQUFjLEdBQUcsd0dBQXdHLENBQUM7QUFDOUgsSUFBSSxRQUFRLEdBQUcsOEZBQThGLENBQUM7QUFDOUcsSUFBSSxjQUFjLEdBQUcsbUhBQW1ILENBQUM7QUFDekksSUFBSSxRQUFRLEdBQUcsZ2hDQUFnaEMsQ0FBQztBQUNoaUMsSUFBSSxVQUFVLEdBQUcsb0dBQW9HLENBQUM7QUFDdEgsSUFBSSxXQUFXLEdBQUcsZ0hBQWdILENBQUM7QUFDbkksSUFBSSxrQkFBa0IsR0FBRywwTEFBMEwsQ0FBQztBQUNwTixJQUFJLHFCQUFxQixHQUFHLDJkQUEyZCxDQUFDO0FBQ3hmLElBQUksbUJBQW1CLEdBQUcsNGRBQTRkLENBQUM7QUFDdmYsSUFBSSxvQkFBb0IsR0FBRyx1aEJBQXVoQixDQUFDO0FBQ25qQixJQUFJLG1CQUFtQixHQUFHLHFyQkFBcXJCLENBQUM7QUFDaHRCLElBQUksWUFBWSxHQUFHLCtZQUErWSxDQUFDO0FBQ25hLElBQUksbUJBQW1CLEdBQUcsNmFBQTZhLENBQUM7QUFDeGMsSUFBSSxZQUFZLEdBQUcsNFJBQTRSLENBQUM7QUFDaFQsSUFBSSxZQUFZLEdBQUcsdVpBQXVaLENBQUM7QUFDM2EsSUFBSSxtQkFBbUIsR0FBRyxpa0JBQWlrQixDQUFDO0FBQzVsQixJQUFJLFVBQVUsR0FBRywrR0FBK0csQ0FBQztBQUNqSSxJQUFJLGNBQWMsR0FBRyxreUJBQWt5QixDQUFDO0FBQ3h6QixJQUFJLFdBQVcsR0FBRywyK0JBQTIrQixDQUFDO0FBQzkvQixJQUFJLG9CQUFvQixHQUFHLHdSQUF3UixDQUFDO0FBQ3BULElBQUksUUFBUSxHQUFHLHVmQUF1ZixDQUFDO0FBQ3ZnQixJQUFJLGNBQWMsR0FBRyxpTEFBaUwsQ0FBQztBQUN2TSxJQUFJLFVBQVUsR0FBRywrSkFBK0osQ0FBQztBQUNqTCxJQUFJLFFBQVEsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNoRCxJQUFJLGNBQWMsR0FBRyx5R0FBeUcsQ0FBQztBQUMvSCxJQUFJLHFCQUFxQixHQUFHLGlMQUFpTCxDQUFDO0FBQzlNLElBQUksZUFBZSxHQUFHLGtHQUFrRyxDQUFDO0FBQ3pILElBQUksc0JBQXNCLEdBQUcsdUpBQXVKLENBQUM7QUFDckwsSUFBSSxNQUFNLEdBQUcsOHdCQUE4d0IsQ0FBQztBQUM1eEIsSUFBSSxTQUFTLEdBQUcsMnRCQUEydEIsQ0FBQztBQUM1dUIsSUFBSSxnQkFBZ0IsR0FBRyx3MUVBQXcxRSxDQUFDO0FBQ2gzRSxJQUFJLGFBQWEsR0FBRyxtbkZBQW1uRixDQUFDO0FBQ3hvRixJQUFJLFNBQVMsR0FBRyxtVEFBbVQsQ0FBQztBQUNwVSxJQUFJLFFBQVEsR0FBRyxpVkFBaVYsQ0FBQztBQUNqVyxJQUFJLFNBQVMsR0FBRyw2VkFBNlYsQ0FBQztBQUM5VyxJQUFJLFlBQVksR0FBRywwZUFBMGUsQ0FBQztBQUM5ZixJQUFJLG1CQUFtQixHQUFHLCs5QkFBKzlCLENBQUM7QUFDMS9CLElBQUksZ0JBQWdCLEdBQUcsdzVCQUF3NUIsQ0FBQztBQUNoN0IsSUFBSSxNQUFNLEdBQUcsK1VBQStVLENBQUM7QUFDN1YsSUFBSSxVQUFVLEdBQUcscWJBQXFiLENBQUM7QUFDdmMsSUFBSSxXQUFXLEdBQUcsd1JBQXdSLENBQUM7QUFDM1MsSUFBSSxTQUFTLEdBQUcsc1ZBQXNWLENBQUM7QUFDdlcsSUFBSSxVQUFVLEdBQUcsd1NBQXdTLENBQUM7QUFDMVQsSUFBSSxZQUFZLEdBQUcsZ1lBQWdZLENBQUM7QUFDcFosSUFBSSxTQUFTLEdBQUcscUpBQXFKLENBQUM7QUFDdEssSUFBSSxZQUFZLEdBQUcsdVBBQXVQLENBQUM7QUFDM1EsSUFBSSxvQkFBb0IsR0FBRyxtVUFBbVUsQ0FBQztBQUMvVixJQUFJLDJCQUEyQixHQUFHLGtVQUFrVSxDQUFDO0FBQ3JXLElBQUksbUJBQW1CLEdBQUcsdVFBQXVRLENBQUM7QUFDbFMsSUFBSSxlQUFlLEdBQUcsdVNBQXVTLENBQUM7QUFDOVQsSUFBSSxzQkFBc0IsR0FBRyxtVEFBbVQsQ0FBQztBQUNqVixJQUFJLGFBQWEsR0FBRyx5V0FBeVcsQ0FBQztBQUM5WCxJQUFJLG9CQUFvQixHQUFHLDBXQUEwVyxDQUFDO0FBQ3RZLElBQUksY0FBYyxHQUFHLHdJQUF3SSxDQUFDO0FBQzlKLElBQUkscUJBQXFCLEdBQUcsNk1BQTZNLENBQUM7QUFDMU8sSUFBSSxZQUFZLEdBQUcsc1NBQXNTLENBQUM7QUFDMVQsSUFBSSxtQkFBbUIsR0FBRywwU0FBMFMsQ0FBQztBQUNyVSxJQUFJLGdCQUFnQixHQUFHLG9PQUFvTyxDQUFDO0FBQzVQLElBQUksYUFBYSxHQUFHLHdKQUF3SixDQUFDO0FBQzdLLElBQUksb0JBQW9CLEdBQUcsNk5BQTZOLENBQUM7QUFDelAsSUFBSSxlQUFlLEdBQUcsME5BQTBOLENBQUM7QUFDalAsSUFBSSxzQkFBc0IsR0FBRywrUkFBK1IsQ0FBQztBQUM3VCxJQUFJLGNBQWMsR0FBRyxpWUFBaVksQ0FBQztBQUN2WixJQUFJLFVBQVUsR0FBRyxnZ0JBQWdnQixDQUFDO0FBQ2xoQixJQUFJLFdBQVcsR0FBRyw0Q0FBNEMsQ0FBQztBQUMvRCxJQUFJLGtCQUFrQixHQUFHLHVGQUF1RixDQUFDO0FBQ2pILElBQUksWUFBWSxHQUFHLHNWQUFzVixDQUFDO0FBQzFXLElBQUksVUFBVSxHQUFHLDJLQUEySyxDQUFDO0FBQzdMLElBQUksaUJBQWlCLEdBQUcsMFpBQTBaLENBQUM7QUFDbmIsSUFBSSxnQkFBZ0IsR0FBRyxvYUFBb2EsQ0FBQztBQUM1YixJQUFJLGtCQUFrQixHQUFHLGdIQUFnSCxDQUFDO0FBQzFJLElBQUksa0JBQWtCLEdBQUcsZ0hBQWdILENBQUM7QUFDMUksSUFBSSxXQUFXLEdBQUcsaUhBQWlILENBQUM7QUFDcEksSUFBSSxRQUFRLEdBQUcseVJBQXlSLENBQUM7QUFDelMsSUFBSSxhQUFhLEdBQUcsOFRBQThULENBQUM7QUFDblYsSUFBSSxvQkFBb0IsR0FBRyxvYkFBb2IsQ0FBQztBQUNoZCxJQUFJLGlCQUFpQixHQUFHLCtiQUErYixDQUFDO0FBQ3hkLElBQUksd0JBQXdCLEdBQUcsNGpCQUE0akIsQ0FBQztBQUM1bEIsSUFBSSxjQUFjLEdBQUcseWtCQUF5a0IsQ0FBQztBQUMvbEIsSUFBSSxxQkFBcUIsR0FBRyxrcUJBQWtxQixDQUFDO0FBQy9yQixJQUFJLGFBQWEsR0FBRywwU0FBMFMsQ0FBQztBQUMvVCxJQUFJLG9CQUFvQixHQUFHLDhhQUE4YSxDQUFDO0FBQzFjLElBQUksZUFBZSxHQUFHLDB0QkFBMHRCLENBQUM7QUFDanZCLElBQUksa0JBQWtCLEdBQUcsODBCQUE4MEIsQ0FBQztBQUN4MkIsSUFBSSxZQUFZLEdBQUcseXpCQUF5ekIsQ0FBQztBQUM3MEIsSUFBSSxtQkFBbUIsR0FBRyxvOEJBQW84QixDQUFDO0FBQy85QixJQUFJLGVBQWUsR0FBRyxtVEFBbVQsQ0FBQztBQUMxVSxJQUFJLHNCQUFzQixHQUFHLGdiQUFnYixDQUFDO0FBQzljLElBQUksY0FBYyxHQUFHLDJnQkFBMmdCLENBQUM7QUFDamlCLElBQUkscUJBQXFCLEdBQUcsbWdCQUFtZ0IsQ0FBQztBQUNoaUIsSUFBSSxjQUFjLEdBQUcsbVhBQW1YLENBQUM7QUFDelksSUFBSSxxQkFBcUIsR0FBRyxnZkFBZ2YsQ0FBQztBQUM3Z0IsSUFBSSxnQkFBZ0IsR0FBRywrVEFBK1QsQ0FBQztBQUN2VixJQUFJLHVCQUF1QixHQUFHLGdjQUFnYyxDQUFDO0FBQy9kLElBQUksWUFBWSxHQUFHLHlkQUF5ZCxDQUFDO0FBQzdlLElBQUksbUJBQW1CLEdBQUcsc2xCQUFzbEIsQ0FBQztBQUNqbkIsSUFBSSxXQUFXLEdBQUcscVdBQXFXLENBQUM7QUFDeFgsSUFBSSxrQkFBa0IsR0FBRyxtZUFBbWUsQ0FBQztBQUM3ZixJQUFJLGVBQWUsR0FBRyw2VUFBNlUsQ0FBQztBQUNwVyxJQUFJLHNCQUFzQixHQUFHLGdpQkFBZ2lCLENBQUM7QUFDOWpCLElBQUksYUFBYSxHQUFHLDJSQUEyUixDQUFDO0FBQ2hULElBQUksb0JBQW9CLEdBQUcsK1pBQStaLENBQUM7QUFDM2IsSUFBSSxjQUFjLEdBQUcscWxCQUFxbEIsQ0FBQztBQUMzbUIsSUFBSSxxQkFBcUIsR0FBRywwZUFBMGUsQ0FBQztBQUN2Z0IsSUFBSSxXQUFXLEdBQUcsOFpBQThaLENBQUM7QUFDamIsSUFBSSxrQkFBa0IsR0FBRyw0Z0JBQTRnQixDQUFDO0FBQ3RpQixJQUFJLGdCQUFnQixHQUFHLCtUQUErVCxDQUFDO0FBQ3ZWLElBQUksdUJBQXVCLEdBQUcsZ2NBQWdjLENBQUM7QUFDL2QsSUFBSSxlQUFlLEdBQUcsNGFBQTRhLENBQUM7QUFDbmMsSUFBSSxjQUFjLEdBQUcsb1RBQW9ULENBQUM7QUFDMVUsSUFBSSxxQkFBcUIsR0FBRyxpYkFBaWIsQ0FBQztBQUM5YyxJQUFJLFlBQVksR0FBRyxnVEFBZ1QsQ0FBQztBQUNwVSxJQUFJLG1CQUFtQixHQUFHLG9iQUFvYixDQUFDO0FBQy9jLElBQUksY0FBYyxHQUFHLDhXQUE4VyxDQUFDO0FBQ3BZLElBQUkscUJBQXFCLEdBQUcsa2dCQUFrZ0IsQ0FBQztBQUMvaEIsSUFBSSxjQUFjLEdBQUcsNldBQTZXLENBQUM7QUFDblksSUFBSSxxQkFBcUIsR0FBRyxvZUFBb2UsQ0FBQztBQUNqZ0IsSUFBSSxZQUFZLEdBQUcsdWdCQUF1Z0IsQ0FBQztBQUMzaEIsSUFBSSxtQkFBbUIsR0FBRyx5cUJBQXlxQixDQUFDO0FBQ3BzQixJQUFJLHVCQUF1QixHQUFHLDJPQUEyTyxDQUFDO0FBQzFRLElBQUksc0JBQXNCLEdBQUcsMk9BQTJPLENBQUM7QUFDelEsSUFBSSxnQkFBZ0IsR0FBRyxrVUFBa1UsQ0FBQztBQUMxVixJQUFJLHVCQUF1QixHQUFHLCtiQUErYixDQUFDO0FBQzlkLElBQUksWUFBWSxHQUFHLDhwQkFBOHBCLENBQUM7QUFDbHJCLElBQUksS0FBSyxHQUFHLGlHQUFpRyxDQUFDO0FBQzlHLElBQUksUUFBUSxHQUFHLDZLQUE2SyxDQUFDO0FBQzdMLElBQUksU0FBUyxHQUFHLHdvQkFBd29CLENBQUM7QUFDenBCLElBQUksUUFBUSxHQUFHLDZKQUE2SixDQUFDO0FBQzdLLElBQUksVUFBVSxHQUFHLDBUQUEwVCxDQUFDO0FBQzVVLElBQUksOEJBQThCLEdBQUcseUhBQXlILENBQUM7QUFDL0osSUFBSSxxQ0FBcUMsR0FBRywwSUFBMEksQ0FBQztBQUN2TCxJQUFJLDJCQUEyQixHQUFHLDhHQUE4RyxDQUFDO0FBQ2pKLElBQUksa0NBQWtDLEdBQUcseUlBQXlJLENBQUM7QUFDbkwsSUFBSSxPQUFPLEdBQUcsbVVBQW1VLENBQUM7QUFDbFYsSUFBSSxZQUFZLEdBQUcseTNCQUF5M0IsQ0FBQztBQUM3NEIsSUFBSSxNQUFNLEdBQUcsZzlCQUFnOUIsQ0FBQztBQUM5OUIsSUFBSSxhQUFhLEdBQUcsZ1RBQWdULENBQUM7QUFDclUsSUFBSSxvQkFBb0IsR0FBRyxpVkFBaVYsQ0FBQztBQUM3VyxJQUFJLFlBQVksR0FBRyxtYkFBbWIsQ0FBQztBQUN2YyxJQUFJLG1CQUFtQixHQUFHLGtsQkFBa2xCLENBQUM7QUFDN21CLElBQUksT0FBTyxHQUFHLHNVQUFzVSxDQUFDO0FBQ3JWLElBQUksU0FBUyxHQUFHLGlJQUFpSSxDQUFDO0FBQ2xKLElBQUksTUFBTSxHQUFHLDZEQUE2RCxDQUFDO0FBQzNFLElBQUksU0FBUyxHQUFHLDZIQUE2SCxDQUFDO0FBQzlJLElBQUksZ0JBQWdCLEdBQUcsbUtBQW1LLENBQUM7QUFDM0wsSUFBSSxhQUFhLEdBQUcsa0dBQWtHLENBQUM7QUFDdkgsSUFBSSxXQUFXLEdBQUcsaUVBQWlFLENBQUM7QUFDcEYsSUFBSSxjQUFjLEdBQUcsNElBQTRJLENBQUM7QUFDbEssSUFBSSxlQUFlLEdBQUcsbTdCQUFtN0IsQ0FBQztBQUMxOEIsSUFBSSxZQUFZLEdBQUcsdXVCQUF1dUIsQ0FBQztBQUMzdkIsSUFBSSxXQUFXLEdBQUcsbU5BQW1OLENBQUM7QUFDdE8sSUFBSSxrQkFBa0IsR0FBRywyZEFBMmQsQ0FBQztBQUNyZixJQUFJLE9BQU8sR0FBRyxxR0FBcUcsQ0FBQztBQUNwSCxJQUFJLG1CQUFtQixHQUFHLHVIQUF1SCxDQUFDO0FBQ2xKLElBQUksV0FBVyxHQUFHLDJKQUEySixDQUFDO0FBQzlLLElBQUksYUFBYSxHQUFHLG9RQUFvUSxDQUFDO0FBQ3pSLElBQUksU0FBUyxHQUFHLDIxQkFBMjFCLENBQUM7QUFDNTJCLElBQUksU0FBUyxHQUFHLHNTQUFzUyxDQUFDO0FBQ3ZULElBQUksU0FBUyxHQUFHLG1WQUFtVixDQUFDO0FBQ3BXLElBQUksWUFBWSxHQUFHLDBVQUEwVSxDQUFDO0FBQzlWLElBQUksUUFBUSxHQUFHLGlOQUFpTixDQUFDO0FBQ2pPLElBQUksT0FBTyxHQUFHLGdDQUFnQyxDQUFDO0FBQy9DLElBQUksVUFBVSxHQUFHLDhHQUE4RyxDQUFDO0FBQ2hJLElBQUksa0JBQWtCLEdBQUcsMElBQTBJLENBQUM7QUFDcEssSUFBSSx5QkFBeUIsR0FBRyw2S0FBNkssQ0FBQztBQUM5TSxJQUFJLGlCQUFpQixHQUFHLG1IQUFtSCxDQUFDO0FBQzVJLElBQUksYUFBYSxHQUFHLGdHQUFnRyxDQUFDO0FBQ3JILElBQUksb0JBQW9CLEdBQUcsb01BQW9NLENBQUM7QUFDaE8sSUFBSSxjQUFjLEdBQUcsb01BQW9NLENBQUM7QUFDMU4sSUFBSSxxQkFBcUIsR0FBRyxtTkFBbU4sQ0FBQztBQUNoUCxJQUFJLGNBQWMsR0FBRyxvREFBb0QsQ0FBQztBQUMxRSxJQUFJLFlBQVksR0FBRywwQ0FBMEMsQ0FBQztBQUM5RCxJQUFJLHVCQUF1QixHQUFHLHlJQUF5SSxDQUFDO0FBQ3hLLElBQUksWUFBWSxHQUFHLGtmQUFrZixDQUFDO0FBQ3RnQixJQUFJLGdCQUFnQixHQUFHLHdHQUF3RyxDQUFDO0FBQ2hJLElBQUksZUFBZSxHQUFHLHVRQUF1USxDQUFDO0FBQzlSLElBQUksZ0JBQWdCLEdBQUcsNERBQTRELENBQUM7QUFDcEYsSUFBSSxnQkFBZ0IsR0FBRyxrSkFBa0osQ0FBQztBQUMxSyxJQUFJLHVCQUF1QixHQUFHLHdOQUF3TixDQUFDO0FBQ3ZQLElBQUksZUFBZSxHQUFHLHFFQUFxRSxDQUFDO0FBQzVGLElBQUksZUFBZSxHQUFHLG9GQUFvRixDQUFDO0FBQzNHLElBQUksaUJBQWlCLEdBQUcsZ01BQWdNLENBQUM7QUFDek4sSUFBSSxlQUFlLEdBQUcsZ0tBQWdLLENBQUM7QUFDdkwsSUFBSSxPQUFPLEdBQUcscUpBQXFKLENBQUM7QUFDcEssSUFBSSxPQUFPLEdBQUcsMkNBQTJDLENBQUM7QUFDMUQsSUFBSSxVQUFVLEdBQUcsNEhBQTRILENBQUM7QUFDOUksSUFBSSxrQkFBa0IsR0FBRyxtSkFBbUosQ0FBQztBQUM3SyxJQUFJLHlCQUF5QixHQUFHLDRMQUE0TCxDQUFDO0FBQzdOLElBQUksaUJBQWlCLEdBQUcsd0lBQXdJLENBQUM7QUFDakssSUFBSSxhQUFhLEdBQUcsbUhBQW1ILENBQUM7QUFDeEksSUFBSSxxQkFBcUIsR0FBRywyTEFBMkwsQ0FBQztBQUN4TixJQUFJLDRCQUE0QixHQUFHLCtVQUErVSxDQUFDO0FBQ25YLElBQUksb0JBQW9CLEdBQUcsaU5BQWlOLENBQUM7QUFDN08sSUFBSSxZQUFZLEdBQUcsd0RBQXdELENBQUM7QUFDNUUsSUFBSSxlQUFlLEdBQUcsc0lBQXNJLENBQUM7QUFDN0osSUFBSSxtQkFBbUIsR0FBRyxzRkFBc0YsQ0FBQztBQUNqSCxJQUFJLGNBQWMsR0FBRywwTkFBME4sQ0FBQztBQUNoUCxJQUFJLHFCQUFxQixHQUFHLHFPQUFxTyxDQUFDO0FBQ2xRLElBQUksVUFBVSxHQUFHLCtFQUErRSxDQUFDO0FBQ2pHLElBQUksY0FBYyxHQUFHLDZFQUE2RSxDQUFDO0FBQ25HLElBQUksWUFBWSxHQUFHLDJDQUEyQyxDQUFDO0FBQy9ELElBQUksVUFBVSxHQUFHLG9wQkFBb3BCLENBQUM7QUFDdHFCLElBQUksU0FBUyxHQUFHLGlXQUFpVyxDQUFDO0FBQ2xYLElBQUksZUFBZSxHQUFHLHdMQUF3TCxDQUFDO0FBQy9NLElBQUksYUFBYSxHQUFHLHlMQUF5TCxDQUFDO0FBQzlNLElBQUksZUFBZSxHQUFHLDhMQUE4TCxDQUFDO0FBQ3JOLElBQUksY0FBYyxHQUFHLHdjQUF3YyxDQUFDO0FBQzlkLElBQUksV0FBVyxHQUFHLHVZQUF1WSxDQUFDO0FBQzFaLElBQUksWUFBWSxHQUFHLHdpQkFBd2lCLENBQUM7QUFDNWpCLElBQUksWUFBWSxHQUFHLCtvQkFBK29CLENBQUM7QUFDbnFCLElBQUksV0FBVyxHQUFHLDJGQUEyRixDQUFDO0FBQzlHLElBQUksY0FBYyxHQUFHLDZTQUE2UyxDQUFDO0FBQ25VLElBQUkscUJBQXFCLEdBQUcsaW1CQUFpbUIsQ0FBQztBQUM5bkIsSUFBSSxPQUFPLEdBQUcsb0RBQW9ELENBQUM7QUFDbkUsSUFBSSxVQUFVLEdBQUcsZ0lBQWdJLENBQUM7QUFDbEosSUFBSSxpQkFBaUIsR0FBRyxrTEFBa0wsQ0FBQztBQUMzTSxJQUFJLE9BQU8sR0FBRyxpSUFBaUksQ0FBQztBQUNoSixJQUFJLFVBQVUsR0FBRyx5RkFBeUYsQ0FBQztBQUMzRyxJQUFJLE9BQU8sR0FBRyw4ZUFBOGUsQ0FBQztBQUM3ZixJQUFJLFVBQVUsR0FBRywwZkFBMGYsQ0FBQztBQUM1Z0IsSUFBSSxPQUFPLEdBQUcsbUVBQW1FLENBQUM7QUFDbEYsSUFBSSxjQUFjLEdBQUcsbUZBQW1GLENBQUM7QUFDekcsSUFBSSxlQUFlLEdBQUcsMmhCQUEyaEIsQ0FBQztBQUNsakIsSUFBSSxNQUFNLEdBQUcsd0VBQXdFLENBQUM7QUFDdEYsSUFBSSxTQUFTLEdBQUcsOEdBQThHLENBQUM7QUFDL0gsSUFBSSxnQkFBZ0IsR0FBRyxtSUFBbUksQ0FBQztBQUMzSixJQUFJLGFBQWEsR0FBRyx1RkFBdUYsQ0FBQztBQUM1RyxJQUFJLFdBQVcsR0FBRywrWEFBK1gsQ0FBQztBQUNsWixJQUFJLGtCQUFrQixHQUFHLDJaQUEyWixDQUFDO0FBQ3JiLElBQUksUUFBUSxHQUFHLDJPQUEyTyxDQUFDO0FBQzNQLElBQUksV0FBVyxHQUFHLGtUQUFrVCxDQUFDO0FBQ3JVLElBQUksa0JBQWtCLEdBQUcseVJBQXlSLENBQUM7QUFDblQsSUFBSSxRQUFRLEdBQUcsdU5BQXVOLENBQUM7QUFDdk8sSUFBSSxhQUFhLEdBQUcsMkpBQTJKLENBQUM7QUFDaEwsSUFBSSxXQUFXLEdBQUcsMElBQTBJLENBQUM7QUFDN0osSUFBSSxVQUFVLEdBQUcsbUJBQW1CLENBQUM7QUFDckMsSUFBSSxZQUFZLEdBQUcsc0ZBQXNGLENBQUM7QUFDMUcsSUFBSSxlQUFlLEdBQUcsb01BQW9NLENBQUM7QUFDM04sSUFBSSxzQkFBc0IsR0FBRywyVEFBMlQsQ0FBQztBQUN6VixJQUFJLG1CQUFtQixHQUFHLDBNQUEwTSxDQUFDO0FBQ3JPLElBQUksZ0JBQWdCLEdBQUcscVFBQXFRLENBQUM7QUFDN1IsSUFBSSxhQUFhLEdBQUcsK0tBQStLLENBQUM7QUFDcE0sSUFBSSxjQUFjLEdBQUcsbUdBQW1HLENBQUM7QUFDekgsSUFBSSxnQkFBZ0IsR0FBRywrUkFBK1IsQ0FBQztBQUN2VCxJQUFJLGdCQUFnQixHQUFHLHlaQUF5WixDQUFDO0FBQ2piLElBQUksZ0JBQWdCLEdBQUcsMFhBQTBYLENBQUM7QUFDbFosSUFBSSxnQkFBZ0IsR0FBRyxtZEFBbWQsQ0FBQztBQUMzZSxJQUFJLGdCQUFnQixHQUFHLDBpQkFBMGlCLENBQUM7QUFDbGtCLElBQUksZ0JBQWdCLEdBQUcsbU9BQW1PLENBQUM7QUFDM1AsSUFBSSxnQkFBZ0IsR0FBRyw4SkFBOEosQ0FBQztBQUN0TCxJQUFJLGdCQUFnQixHQUFHLG9TQUFvUyxDQUFDO0FBQzVULElBQUksZUFBZSxHQUFHLHNRQUFzUSxDQUFDO0FBQzdSLElBQUksYUFBYSxHQUFHLHFqQkFBcWpCLENBQUM7QUFDMWtCLElBQUksZUFBZSxHQUFHLHlOQUF5TixDQUFDO0FBQ2hQLElBQUksZUFBZSxHQUFHLHNIQUFzSCxDQUFDO0FBQzdJLElBQUksbUJBQW1CLEdBQUcsc1VBQXNVLENBQUM7QUFDalcsSUFBSSxVQUFVLEdBQUcsc2lCQUFzaUIsQ0FBQztBQUN4akIsSUFBSSxVQUFVLEdBQUcsNEpBQTRKLENBQUM7QUFDOUssSUFBSSxZQUFZLEdBQUcsNGhCQUE0aEIsQ0FBQztBQUNoakIsSUFBSSxrQkFBa0IsR0FBRyxzR0FBc0csQ0FBQztBQUNoSSxJQUFJLHVCQUF1QixHQUFHLHFKQUFxSixDQUFDO0FBQ3BMLElBQUksOEJBQThCLEdBQUcsOExBQThMLENBQUM7QUFDcE8sSUFBSSx5QkFBeUIsR0FBRywrSUFBK0ksQ0FBQztBQUNoTCxJQUFJLGVBQWUsR0FBRyxxTUFBcU0sQ0FBQztBQUM1TixJQUFJLGVBQWUsR0FBRywrU0FBK1MsQ0FBQztBQUN0VSxJQUFJLGFBQWEsR0FBRyw2ZUFBNmUsQ0FBQztBQUNsZ0IsSUFBSSxhQUFhLEdBQUcscVBBQXFQLENBQUM7QUFDMVEsSUFBSSxhQUFhLEdBQUcsOEVBQThFLENBQUM7QUFDbkcsSUFBSSxnQkFBZ0IsR0FBRyw4WEFBOFgsQ0FBQztBQUN0WixJQUFJLGtCQUFrQixHQUFHLG1OQUFtTixDQUFDO0FBQzdPLElBQUksa0JBQWtCLEdBQUcsdVVBQXVVLENBQUM7QUFDalcsSUFBSSxlQUFlLEdBQUcsNktBQTZLLENBQUM7QUFDcE0sSUFBSSxjQUFjLEdBQUcsOEtBQThLLENBQUM7QUFDcE0sSUFBSSxzQkFBc0IsR0FBRyxxeUJBQXF5QixDQUFDO0FBQ24wQixJQUFJLGdCQUFnQixHQUFHLHdmQUF3ZixDQUFDO0FBQ2hoQixJQUFJLGdCQUFnQixHQUFHLG1pQkFBbWlCLENBQUM7QUFDM2pCLElBQUksZ0JBQWdCLEdBQUcseWdCQUF5Z0IsQ0FBQztBQUNqaUIsSUFBSSxnQkFBZ0IsR0FBRyw4akJBQThqQixDQUFDO0FBQ3RsQixJQUFJLG1CQUFtQixHQUFHLGlnQkFBaWdCLENBQUM7QUFDNWhCLElBQUksbUJBQW1CLEdBQUcsb21CQUFvbUIsQ0FBQztBQUMvbkIsSUFBSSxpQkFBaUIsR0FBRyxnZ0JBQWdnQixDQUFDO0FBQ3poQixJQUFJLGlCQUFpQixHQUFHLHl1QkFBeXVCLENBQUM7QUFDbHdCLElBQUksWUFBWSxHQUFHLGdjQUFnYyxDQUFDO0FBQ3BkLElBQUksa0JBQWtCLEdBQUcsNEtBQTRLLENBQUM7QUFDdE0sSUFBSSx5QkFBeUIsR0FBRyxpTkFBaU4sQ0FBQztBQUNsUCxJQUFJLGNBQWMsR0FBRyx1TEFBdUwsQ0FBQztBQUM3TSxJQUFJLHFCQUFxQixHQUFHLGdSQUFnUixDQUFDO0FBQzdTLElBQUksV0FBVyxHQUFHLHNOQUFzTixDQUFDO0FBQ3pPLElBQUksVUFBVSxHQUFHLDZDQUE2QyxDQUFDO0FBQy9ELElBQUksUUFBUSxHQUFHLDJHQUEyRyxDQUFDO0FBQzNILElBQUksT0FBTyxHQUFHLDBnQkFBMGdCLENBQUM7QUFDemhCLElBQUksVUFBVSxHQUFHLDBWQUEwVixDQUFDO0FBQzVXLElBQUksUUFBUSxHQUFHLCtKQUErSixDQUFDO0FBQy9LLElBQUksZUFBZSxHQUFHLGlMQUFpTCxDQUFDO0FBQ3hNLElBQUksU0FBUyxHQUFHLHNUQUFzVCxDQUFDO0FBQ3ZVLElBQUksY0FBYyxHQUFHLHlaQUF5WixDQUFDO0FBQy9hLElBQUkscUJBQXFCLEdBQUcsNm1CQUE2bUIsQ0FBQztBQUMxb0IsSUFBSSxhQUFhLEdBQUcsd2NBQXdjLENBQUM7QUFDN2QsSUFBSSxvQkFBb0IsR0FBRywyckJBQTJyQixDQUFDO0FBQ3Z0QixJQUFJLGNBQWMsR0FBRyxvaUJBQW9pQixDQUFDO0FBQzFqQixJQUFJLHFCQUFxQixHQUFHLHd1QkFBd3VCLENBQUM7QUFDcndCLElBQUksY0FBYyxHQUFHLDRZQUE0WSxDQUFDO0FBQ2xhLElBQUkscUJBQXFCLEdBQUcsb2xCQUFvbEIsQ0FBQztBQUNqbkIsSUFBSSxnQkFBZ0IsR0FBRyxraUJBQWtpQixDQUFDO0FBQzFqQixJQUFJLGFBQWEsR0FBRyxvYUFBb2EsQ0FBQztBQUN6YixJQUFJLG9CQUFvQixHQUFHLDRtQkFBNG1CLENBQUM7QUFDeG9CLElBQUksZUFBZSxHQUFHLDBnQkFBMGdCLENBQUM7QUFDamlCLElBQUksc0JBQXNCLEdBQUcsa3RCQUFrdEIsQ0FBQztBQUNodkIsSUFBSSxhQUFhLEdBQUcscWVBQXFlLENBQUM7QUFDMWYsSUFBSSxvQkFBb0IsR0FBRywwcUJBQTBxQixDQUFDO0FBQ3RzQixJQUFJLEtBQUssR0FBRywwcUJBQTBxQixDQUFDO0FBQ3ZyQixJQUFJLFNBQVMsR0FBRywrbkJBQStuQixDQUFDO0FBQ2hwQixJQUFJLFNBQVMsR0FBRywyT0FBMk8sQ0FBQztBQUM1UCxJQUFJLGFBQWEsR0FBRyx1V0FBdVcsQ0FBQztBQUM1WCxJQUFJLGNBQWMsR0FBRywrTUFBK00sQ0FBQztBQUNyTyxJQUFJLGFBQWEsR0FBRyxvT0FBb08sQ0FBQztBQUN6UCxJQUFJLGVBQWUsR0FBRyx3VUFBd1UsQ0FBQztBQUMvVixJQUFJLGFBQWEsR0FBRyw0WEFBNFgsQ0FBQztBQUNqWixJQUFJLGFBQWEsR0FBRywrckRBQStyRCxDQUFDO0FBQ3B0RCxJQUFJLGNBQWMsR0FBRyw0UEFBNFAsQ0FBQztBQUNsUixJQUFJLGFBQWEsR0FBRyx3UEFBd1AsQ0FBQztBQUM3USxJQUFJLGdCQUFnQixHQUFHLDZTQUE2UyxDQUFDO0FBQ3JVLElBQUksUUFBUSxHQUFHLHdnQ0FBd2dDLENBQUM7QUFDeGhDLElBQUksU0FBUyxHQUFHLGtoQ0FBa2hDLENBQUM7QUFDbmlDLElBQUksZUFBZSxHQUFHLHNjQUFzYyxDQUFDO0FBQzdkLElBQUksY0FBYyxHQUFHLG11QkFBbXVCLENBQUM7QUFDenZCLElBQUksUUFBUSxHQUFHLG9kQUFvZCxDQUFDO0FBQ3BlLElBQUksV0FBVyxHQUFHLHduQkFBd25CLENBQUM7QUFDM29CLElBQUksbUJBQW1CLEdBQUcsd1dBQXdXLENBQUM7QUFDblksSUFBSSxjQUFjLEdBQUcseXNCQUF5c0IsQ0FBQztBQUMvdEIsSUFBSSxRQUFRLEdBQUcsa05BQWtOLENBQUM7QUFDbE8sSUFBSSxVQUFVLEdBQUcsdUlBQXVJLENBQUM7QUFDekosSUFBSSxVQUFVLEdBQUcsa0dBQWtHLENBQUM7QUFDcEgsSUFBSSxnQkFBZ0IsR0FBRyxvSkFBb0osQ0FBQztBQUM1SyxJQUFJLFdBQVcsR0FBRyx3VEFBd1QsQ0FBQztBQUMzVSxJQUFJLGFBQWEsR0FBRyx3aEJBQXdoQixDQUFDO0FBQzdpQixJQUFJLGNBQWMsR0FBRywyVkFBMlYsQ0FBQztBQUNqWCxJQUFJLGlCQUFpQixHQUFHLHdaQUF3WixDQUFDO0FBQ2piLElBQUksZ0JBQWdCLEdBQUcsa0pBQWtKLENBQUM7QUFDMUssSUFBSSxpQkFBaUIsR0FBRyxxTkFBcU4sQ0FBQztBQUM5TyxJQUFJLGVBQWUsR0FBRyxpaEJBQWloQixDQUFDO0FBQ3hpQixJQUFJLHNCQUFzQixHQUFHLHFpQkFBcWlCLENBQUM7QUFDbmtCLElBQUksU0FBUyxHQUFHLHVNQUF1TSxDQUFDO0FBQ3hOLElBQUksZ0JBQWdCLEdBQUcsMlFBQTJRLENBQUM7QUFDblMsSUFBSSxnQkFBZ0IsR0FBRyw4a0JBQThrQixDQUFDO0FBQ3RtQixJQUFJLE9BQU8sR0FBRywwVUFBMFUsQ0FBQztBQUN6VixJQUFJLGNBQWMsR0FBRyw0UkFBNFIsQ0FBQztBQUNsVCxJQUFJLFNBQVMsR0FBRyx5R0FBeUcsQ0FBQztBQUMxSCxJQUFJLGNBQWMsR0FBRyxxSEFBcUgsQ0FBQztBQUMzSSxJQUFJLFdBQVcsR0FBRyxnR0FBZ0csQ0FBQztBQUNuSCxJQUFJLGdCQUFnQixHQUFHLGdIQUFnSCxDQUFDO0FBQ3hJLElBQUksY0FBYyxHQUFHLHNMQUFzTCxDQUFDO0FBQzVNLElBQUksb0JBQW9CLEdBQUcsNlJBQTZSLENBQUM7QUFDelQsSUFBSSxZQUFZLEdBQUcsd0lBQXdJLENBQUM7QUFDNUosSUFBSSxRQUFRLEdBQUcscXhFQUFxeEUsQ0FBQztBQUNyeUUsSUFBSSxPQUFPLEdBQUcsbU1BQW1NLENBQUM7QUFDbE4sSUFBSSxVQUFVLEdBQUcsZ09BQWdPLENBQUM7QUFDbFAsSUFBSSxTQUFTLEdBQUcsK0ZBQStGLENBQUM7QUFDaEgsSUFBSSxlQUFlLEdBQUcsaUpBQWlKLENBQUM7QUFDeEssSUFBSSxzQkFBc0IsR0FBRyxvTkFBb04sQ0FBQztBQUNsUCxJQUFJLGVBQWUsR0FBRyw4WEFBOFgsQ0FBQztBQUNyWixJQUFJLFlBQVksR0FBRyxtVUFBbVUsQ0FBQztBQUN2VixJQUFJLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztBQUNyQyxJQUFJLG1CQUFtQixHQUFHLGlDQUFpQyxDQUFDO0FBQzVELElBQUksVUFBVSxHQUFHLDRlQUE0ZSxDQUFDO0FBQzlmLElBQUksaUJBQWlCLEdBQUcscWFBQXFhLENBQUM7QUFDOWIsSUFBSSxTQUFTLEdBQUcseXRDQUF5dEMsQ0FBQztBQUMxdUMsSUFBSSxTQUFTLEdBQUcsNmxCQUE2bEIsQ0FBQztBQUM5bUIsSUFBSSxPQUFPLEdBQUcsK0pBQStKLENBQUM7QUFDOUssSUFBSSxjQUFjLEdBQUcscUxBQXFMLENBQUM7QUFDM00sSUFBSSxvQkFBb0IsR0FBRyxnVkFBZ1YsQ0FBQztBQUM1VyxJQUFJLGtCQUFrQixHQUFHLGdZQUFnWSxDQUFDO0FBQzFaLElBQUksVUFBVSxHQUFHLG9OQUFvTixDQUFDO0FBQ3RPLElBQUksZ0JBQWdCLEdBQUcsNEpBQTRKLENBQUM7QUFDcEwsSUFBSSxRQUFRLEdBQUcsNGxCQUE0bEIsQ0FBQztBQUM1bUIsSUFBSSxzQkFBc0IsR0FBRyw4aEJBQThoQixDQUFDO0FBQzVqQixJQUFJLFlBQVksR0FBRyxxTkFBcU4sQ0FBQztBQUN6TyxJQUFJLHFCQUFxQixHQUFHLDBEQUEwRCxDQUFDO0FBQ3ZGLElBQUksb0JBQW9CLEdBQUcsZ0VBQWdFLENBQUM7QUFDNUYsSUFBSSwwQkFBMEIsR0FBRyw0RUFBNEUsQ0FBQztBQUM5RyxJQUFJLHdCQUF3QixHQUFHLHdGQUF3RixDQUFDO0FBQ3hILElBQUksMkJBQTJCLEdBQUcsZ0tBQWdLLENBQUM7QUFDbk0sSUFBSSwwQkFBMEIsR0FBRyxzS0FBc0ssQ0FBQztBQUN4TSxJQUFJLDBCQUEwQixHQUFHLHVFQUF1RSxDQUFDO0FBQ3pHLElBQUkseUJBQXlCLEdBQUcsNkVBQTZFLENBQUM7QUFDOUcsSUFBSSwrQkFBK0IsR0FBRyx5RkFBeUYsQ0FBQztBQUNoSSxJQUFJLDZCQUE2QixHQUFHLHFHQUFxRyxDQUFDO0FBQzFJLElBQUksZ0NBQWdDLEdBQUcsNktBQTZLLENBQUM7QUFDck4sSUFBSSwrQkFBK0IsR0FBRyxtTEFBbUwsQ0FBQztBQUMxTixJQUFJLG9CQUFvQixHQUFHLDhEQUE4RCxDQUFDO0FBQzFGLElBQUksbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFDL0YsSUFBSSx5QkFBeUIsR0FBRyxnRkFBZ0YsQ0FBQztBQUNqSCxJQUFJLHVCQUF1QixHQUFHLDRGQUE0RixDQUFDO0FBQzNILElBQUksMEJBQTBCLEdBQUcsb0tBQW9LLENBQUM7QUFDdE0sSUFBSSx5QkFBeUIsR0FBRywwS0FBMEssQ0FBQztBQUMzTSxJQUFJLHdCQUF3QixHQUFHLCtFQUErRSxDQUFDO0FBQy9HLElBQUksdUJBQXVCLEdBQUcscUZBQXFGLENBQUM7QUFDcEgsSUFBSSw2QkFBNkIsR0FBRyxpR0FBaUcsQ0FBQztBQUN0SSxJQUFJLDJCQUEyQixHQUFHLDZHQUE2RyxDQUFDO0FBQ2hKLElBQUksOEJBQThCLEdBQUcscUxBQXFMLENBQUM7QUFDM04sSUFBSSw2QkFBNkIsR0FBRywyTEFBMkwsQ0FBQztBQUNoTyxJQUFJLDJCQUEyQixHQUFHLG9KQUFvSixDQUFDO0FBQ3ZMLElBQUksMEJBQTBCLEdBQUcsMEpBQTBKLENBQUM7QUFDNUwsSUFBSSxnQ0FBZ0MsR0FBRyxzS0FBc0ssQ0FBQztBQUM5TSxJQUFJLDhCQUE4QixHQUFHLGtMQUFrTCxDQUFDO0FBQ3hOLElBQUksaUNBQWlDLEdBQUcsMFBBQTBQLENBQUM7QUFDblMsSUFBSSxnQ0FBZ0MsR0FBRyxnUUFBZ1EsQ0FBQztBQUN4UyxJQUFJLDBCQUEwQixHQUFHLHdKQUF3SixDQUFDO0FBQzFMLElBQUkseUJBQXlCLEdBQUcsOEpBQThKLENBQUM7QUFDL0wsSUFBSSwrQkFBK0IsR0FBRywwS0FBMEssQ0FBQztBQUNqTixJQUFJLDZCQUE2QixHQUFHLHNMQUFzTCxDQUFDO0FBQzNOLElBQUksZ0NBQWdDLEdBQUcsOFBBQThQLENBQUM7QUFDdFMsSUFBSSwrQkFBK0IsR0FBRyxvUUFBb1EsQ0FBQztBQUMzUyxJQUFJLGdCQUFnQixHQUFHLGdLQUFnSyxDQUFDO0FBQ3hMLElBQUksU0FBUyxHQUFHLHVOQUF1TixDQUFDO0FBQ3hPLElBQUksY0FBYyxHQUFHLDJNQUEyTSxDQUFDO0FBQ2pPLElBQUksV0FBVyxHQUFHLHFvQkFBcW9CLENBQUM7QUFDeHBCLElBQUksU0FBUyxHQUFHLHVaQUF1WixDQUFDO0FBQ3hhLElBQUksZ0JBQWdCLEdBQUcsK01BQStNLENBQUM7QUFDdk8sSUFBSSxZQUFZLEdBQUcsdWRBQXVkLENBQUM7QUFDM2UsSUFBSSxXQUFXLEdBQUcsd05BQXdOLENBQUM7QUFDM08sSUFBSSxjQUFjLEdBQUcseVFBQXlRLENBQUM7QUFDL1IsSUFBSSxZQUFZLEdBQUcsdU5BQXVOLENBQUM7QUFDM08sSUFBSSxvQkFBb0IsR0FBRywrREFBK0QsQ0FBQztBQUMzRixJQUFJLGtCQUFrQixHQUFHLDhEQUE4RCxDQUFDO0FBQ3hGLElBQUksU0FBUyxHQUFHLG1FQUFtRSxDQUFDO0FBQ3BGLElBQUksWUFBWSxHQUFHLDJKQUEySixDQUFDO0FBQy9LLElBQUksYUFBYSxHQUFHLCtGQUErRixDQUFDO0FBQ3BILElBQUksU0FBUyxHQUFHLHNIQUFzSCxDQUFDO0FBQ3ZJLElBQUksUUFBUSxHQUFHLG1FQUFtRSxDQUFDO0FBQ25GLElBQUksV0FBVyxHQUFHLCtGQUErRixDQUFDO0FBQ2xILElBQUksa0JBQWtCLEdBQUcsOExBQThMLENBQUM7QUFDeE4sSUFBSSxjQUFjLEdBQUcsNklBQTZJLENBQUM7QUFDbkssSUFBSSxlQUFlLEdBQUcsZ0tBQWdLLENBQUM7QUFDdkwsSUFBSSxlQUFlLEdBQUcsMmtCQUEya0IsQ0FBQztBQUNsbUIsSUFBSSxXQUFXLEdBQUcsMkVBQTJFLENBQUM7QUFDOUYsSUFBSSxnQkFBZ0IsR0FBRyxzaEJBQXNoQixDQUFDO0FBQzlpQixJQUFJLFNBQVMsR0FBRyw4R0FBOEcsQ0FBQztBQUMvSCxJQUFJLG9CQUFvQixHQUFHLCtHQUErRyxDQUFDO0FBQzNJLElBQUksYUFBYSxHQUFHLDBhQUEwYSxDQUFDO0FBQy9iLElBQUksVUFBVSxHQUFHLHFVQUFxVSxDQUFDO0FBQ3ZWLElBQUksZUFBZSxHQUFHLG9iQUFvYixDQUFDO0FBQzNjLElBQUksYUFBYSxHQUFHLDBZQUEwWSxDQUFDO0FBQy9aLElBQUksVUFBVSxHQUFHLG9NQUFvTSxDQUFDO0FBQ3ROLElBQUksZUFBZSxHQUFHLDZNQUE2TSxDQUFDO0FBQ3BPLElBQUksU0FBUyxHQUFHLHdDQUF3QyxDQUFDO0FBQ3pELElBQUksV0FBVyxHQUFHLDZSQUE2UixDQUFDO0FBQ2hULElBQUksV0FBVyxHQUFHLGlZQUFpWSxDQUFDO0FBQ3BaLElBQUksVUFBVSxHQUFHLDBPQUEwTyxDQUFDO0FBQzVQLElBQUksV0FBVyxHQUFHLHFYQUFxWCxDQUFDO0FBQ3hZLElBQUksZ0JBQWdCLEdBQUcsNkZBQTZGLENBQUM7QUFDckgsSUFBSSxVQUFVLEdBQUcsdU1BQXVNLENBQUM7QUFDek4sSUFBSSxnQkFBZ0IsR0FBRyxpT0FBaU8sQ0FBQztBQUN6UCxJQUFJLHVCQUF1QixHQUFHLDJRQUEyUSxDQUFDO0FBQzFTLElBQUksaUJBQWlCLEdBQUcsNk5BQTZOLENBQUM7QUFDdFAsSUFBSSxlQUFlLEdBQUcsaVdBQWlXLENBQUM7QUFDeFgsSUFBSSxzQkFBc0IsR0FBRyw0WEFBNFgsQ0FBQztBQUMxWixJQUFJLFNBQVMsR0FBRyxpVEFBaVQsQ0FBQztBQUNsVSxJQUFJLE9BQU8sR0FBRyxnUkFBZ1IsQ0FBQztBQUMvUixJQUFJLFdBQVcsR0FBRyx1akJBQXVqQixDQUFDO0FBQzFrQixJQUFJLG1CQUFtQixHQUFHLGtsQkFBa2xCLENBQUM7QUFDN21CLElBQUksT0FBTyxHQUFHLDROQUE0TixDQUFDO0FBQzNPLElBQUksUUFBUSxHQUFHLGtOQUFrTixDQUFDO0FBQ2xPLElBQUksT0FBTyxHQUFHLDZEQUE2RCxDQUFDO0FBQzVFLElBQUksY0FBYyxHQUFHLDhNQUE4TSxDQUFDO0FBQ3BPLElBQUksU0FBUyxHQUFHLHVkQUF1ZCxDQUFDO0FBQ3hlLElBQUksUUFBUSxHQUFHLG9iQUFvYixDQUFDO0FBQ3BjLElBQUksYUFBYSxHQUFHLGlmQUFpZixDQUFDO0FBQ3RnQixJQUFJLG9CQUFvQixHQUFHLHVtQkFBdW1CLENBQUM7QUFDbm9CLElBQUksZ0JBQWdCLEdBQUcsdW5CQUF1bkIsQ0FBQztBQUMvb0IsSUFBSSx1QkFBdUIsR0FBRyxzd0JBQXN3QixDQUFDO0FBQ3J5QixJQUFJLFlBQVksR0FBRyxtbEJBQW1sQixDQUFDO0FBQ3ZtQixJQUFJLG1CQUFtQixHQUFHLHVxQkFBdXFCLENBQUM7QUFDbHNCLElBQUksZUFBZSxHQUFHLDJjQUEyYyxDQUFDO0FBQ2xlLElBQUksc0JBQXNCLEdBQUcsMGhCQUEwaEIsQ0FBQztBQUN4akIsSUFBSSxhQUFhLEdBQUcsMm1CQUEybUIsQ0FBQztBQUNob0IsSUFBSSxvQkFBb0IsR0FBRyx5dUJBQXl1QixDQUFDO0FBQ3J3QixJQUFJLGtCQUFrQixHQUFHLCtYQUErWCxDQUFDO0FBQ3paLElBQUksWUFBWSxHQUFHLGtxQkFBa3FCLENBQUM7QUFDdHJCLElBQUksbUJBQW1CLEdBQUcsa3ZCQUFrdkIsQ0FBQztBQUM3d0IsSUFBSSxhQUFhLEdBQUcsMFJBQTBSLENBQUM7QUFDL1MsSUFBSSxvQkFBb0IsR0FBRyxvWUFBb1ksQ0FBQztBQUNoYSxJQUFJLFdBQVcsR0FBRyw2bUJBQTZtQixDQUFDO0FBQ2hvQixJQUFJLGtCQUFrQixHQUFHLGdzQkFBZ3NCLENBQUM7QUFDMXRCLElBQUksZUFBZSxHQUFHLHNrQkFBc2tCLENBQUM7QUFDN2xCLElBQUksY0FBYyxHQUFHLCtqQkFBK2pCLENBQUM7QUFDcmxCLElBQUkscUJBQXFCLEdBQUcsa1BBQWtQLENBQUM7QUFDL1EsSUFBSSxTQUFTLEdBQUcsd1dBQXdXLENBQUM7QUFDelgsSUFBSSxlQUFlLEdBQUcsNnFCQUE2cUIsQ0FBQztBQUNwc0IsSUFBSSxzQkFBc0IsR0FBRyxtNEJBQW00QixDQUFDO0FBQ2o2QixJQUFJLGdCQUFnQixHQUFHLGlkQUFpZCxDQUFDO0FBQ3plLElBQUksU0FBUyxHQUFHLHdqQkFBd2pCLENBQUM7QUFDemtCLElBQUksY0FBYyxHQUFHLG9UQUFvVCxDQUFDO0FBQzFVLElBQUksaUJBQWlCLEdBQUcsMldBQTJXLENBQUM7QUFDcFksSUFBSSxjQUFjLEdBQUcsbVpBQW1aLENBQUM7QUFDemEsSUFBSSxpQkFBaUIsR0FBRyxnY0FBZ2MsQ0FBQztBQUN6ZCxJQUFJLFdBQVcsR0FBRywyZUFBMmUsQ0FBQztBQUM5ZixJQUFJLGdCQUFnQixHQUFHLHlDQUF5QyxDQUFDO0FBQ2pFLElBQUksaUJBQWlCLEdBQUcsa0VBQWtFLENBQUM7QUFDM0YsSUFBSSxnQkFBZ0IsR0FBRyw0RUFBNEUsQ0FBQztBQUNwRyxJQUFJLGdCQUFnQixHQUFHLDhHQUE4RyxDQUFDO0FBQ3RJLElBQUksZ0JBQWdCLEdBQUcsMEVBQTBFLENBQUM7QUFDbEcsSUFBSSxnQkFBZ0IsR0FBRyxxQ0FBcUMsQ0FBQztBQUM3RCxJQUFJLGdCQUFnQixHQUFHLHdFQUF3RSxDQUFDO0FBQ2hHLElBQUksZ0JBQWdCLEdBQUcsNEdBQTRHLENBQUM7QUFDcEksSUFBSSxnQkFBZ0IsR0FBRyw4SUFBOEksQ0FBQztBQUN0SyxJQUFJLGdCQUFnQixHQUFHLHdHQUF3RyxDQUFDO0FBQ2hJLElBQUksY0FBYyxHQUFHLG9LQUFvSyxDQUFDO0FBQzFMLElBQUkscUJBQXFCLEdBQUcsME9BQTBPLENBQUM7QUFDdlEsSUFBSSxXQUFXLEdBQUcsd2xFQUF3bEUsQ0FBQztBQUMzbUUsSUFBSSxrQkFBa0IsR0FBRyx1UEFBdVAsQ0FBQztBQUNqUixJQUFJLGFBQWEsR0FBRyx1WkFBdVosQ0FBQztBQUM1YSxJQUFJLG9CQUFvQixHQUFHLG1NQUFtTSxDQUFDO0FBQy9OLElBQUksY0FBYyxHQUFHLDZuQkFBNm5CLENBQUM7QUFDbnBCLElBQUksY0FBYyxHQUFHLGthQUFrYSxDQUFDO0FBQ3hiLElBQUkscUJBQXFCLEdBQUcsa01BQWtNLENBQUM7QUFDL04sSUFBSSxnQkFBZ0IsR0FBRyxnUEFBZ1AsQ0FBQztBQUN4USxJQUFJLFNBQVMsR0FBRyw4UkFBOFIsQ0FBQztBQUMvUyxJQUFJLGdCQUFnQixHQUFHLHVSQUF1UixDQUFDO0FBQy9TLElBQUksaUJBQWlCLEdBQUcsNllBQTZZLENBQUM7QUFDdGEsSUFBSSxvQkFBb0IsR0FBRyw4YkFBOGIsQ0FBQztBQUMxZCxJQUFJLHlCQUF5QixHQUFHLGdjQUFnYyxDQUFDO0FBQ2plLElBQUksU0FBUyxHQUFHLGlIQUFpSCxDQUFDO0FBQ2xJLElBQUksY0FBYyxHQUFHLDRVQUE0VSxDQUFDO0FBQ2xXLElBQUksU0FBUyxHQUFHLHNaQUFzWixDQUFDO0FBQ3ZhLElBQUksTUFBTSxHQUFHLG9QQUFvUCxDQUFDO0FBQ2xRLElBQUksU0FBUyxHQUFHLDZQQUE2UCxDQUFDO0FBQzlRLElBQUksU0FBUyxHQUFHLGlYQUFpWCxDQUFDO0FBQ2xZLElBQUksTUFBTSxHQUFHLHFnQkFBcWdCLENBQUM7QUFDbmhCLElBQUksUUFBUSxHQUFHLGtyQkFBa3JCLENBQUM7QUFDbHNCLElBQUksUUFBUSxHQUFHLHNUQUFzVCxDQUFDO0FBQ3RVLElBQUksY0FBYyxHQUFHLHlMQUF5TCxDQUFDO0FBQy9NLElBQUkscUJBQXFCLEdBQUcsNlZBQTZWLENBQUM7QUFDMVgsSUFBSSxNQUFNLEdBQUcsNFdBQTRXLENBQUM7QUFDMVgsSUFBSSxVQUFVLEdBQUcsbWJBQW1iLENBQUM7QUFDcmMsSUFBSSxVQUFVLEdBQUcscVFBQXFRLENBQUM7QUFDdlIsSUFBSSxPQUFPLEdBQUcsNkhBQTZILENBQUM7QUFDNUksSUFBSSxjQUFjLEdBQUcsaVhBQWlYLENBQUM7QUFDdlksSUFBSSxPQUFPLEdBQUcsOFRBQThULENBQUM7QUFDN1UsSUFBSSxhQUFhLEdBQUcsNmpCQUE2akIsQ0FBQztBQUNsbEIsSUFBSSxvQkFBb0IsR0FBRyxnbEJBQWdsQixDQUFDO0FBQzVtQixJQUFJLGdCQUFnQixHQUFHLHlaQUF5WixDQUFDO0FBQ2piLElBQUksV0FBVyxHQUFHLGtDQUFrQyxDQUFDO0FBQ3JELElBQUksT0FBTyxHQUFHLDBiQUEwYixDQUFDO0FBQ3pjLElBQUksYUFBYSxHQUFHLG9mQUFvZixDQUFDO0FBQ3pnQixJQUFJLE9BQU8sR0FBRyxnc0NBQWdzQyxDQUFDO0FBQy9zQyxJQUFJLFlBQVksR0FBRyxvTEFBb0wsQ0FBQztBQUN4TSxJQUFJLGtCQUFrQixHQUFHLDhaQUE4WixDQUFDO0FBQ3hiLElBQUksbUJBQW1CLEdBQUcsdWVBQXVlLENBQUM7QUFDbGdCLElBQUksVUFBVSxHQUFHLG9OQUFvTixDQUFDO0FBQ3RPLElBQUksV0FBVyxHQUFHLHlWQUF5VixDQUFDO0FBQzVXLElBQUksZUFBZSxHQUFHLHFEQUFxRCxDQUFDO0FBQzVFLElBQUksWUFBWSxHQUFHLGdUQUFnVCxDQUFDO0FBQ3BVLElBQUksUUFBUSxHQUFHLCtiQUErYixDQUFDO0FBQy9jLElBQUksZUFBZSxHQUFHLHdZQUF3WSxDQUFDO0FBQy9aLElBQUksZ0JBQWdCLEdBQUcsMEpBQTBKLENBQUM7QUFDbEwsSUFBSSxXQUFXLEdBQUcsNldBQTZXLENBQUM7QUFDaFksSUFBSSxhQUFhLEdBQUcsK0lBQStJLENBQUM7QUFDcEssSUFBSSxVQUFVLEdBQUcsMEpBQTBKLENBQUM7QUFDNUssSUFBSSxhQUFhLEdBQUcsd1NBQXdTLENBQUM7QUFDN1QsSUFBSSxjQUFjLEdBQUcsdVBBQXVQLENBQUM7QUFDN1EsSUFBSSxxQkFBcUIsR0FBRyx3ZUFBd2UsQ0FBQztBQUNyZ0IsSUFBSSxTQUFTLEdBQUcsb0ZBQW9GLENBQUM7QUFDckcsSUFBSSxnQkFBZ0IsR0FBRyx5SkFBeUosQ0FBQztBQUNqTCxJQUFJLGtCQUFrQixHQUFHLHl1QkFBeXVCLENBQUM7QUFDbndCLElBQUksVUFBVSxHQUFHLCtkQUErZCxDQUFDO0FBQ2pmLElBQUksa0JBQWtCLEdBQUcsMGZBQTBmLENBQUM7QUFDcGhCLElBQUksYUFBYSxHQUFHLDBlQUEwZSxDQUFDO0FBQy9mLElBQUksb0JBQW9CLEdBQUcsa2ZBQWtmLENBQUM7QUFDOWdCLElBQUksaUJBQWlCLEdBQUcsMmFBQTJhLENBQUM7QUFDcGMsSUFBSSxxQkFBcUIsR0FBRyw2akJBQTZqQixDQUFDO0FBQzFsQixJQUFJLGVBQWUsR0FBRyx5UUFBeVEsQ0FBQztBQUNoUyxJQUFJLFdBQVcsR0FBRyxzTEFBc0wsQ0FBQztBQUN6TSxJQUFJLHNCQUFzQixHQUFHLHNRQUFzUSxDQUFDO0FBQ3BTLElBQUksdUJBQXVCLEdBQUcsK09BQStPLENBQUM7QUFDOVEsSUFBSSxnQkFBZ0IsR0FBRyxrUEFBa1AsQ0FBQztBQUMxUSxJQUFJLGNBQWMsR0FBRyxzT0FBc08sQ0FBQztBQUM1UCxJQUFJLFNBQVMsR0FBRyw2TkFBNk4sQ0FBQztBQUM5TyxJQUFJLGdCQUFnQixHQUFHLHNMQUFzTCxDQUFDO0FBQzlNLElBQUksYUFBYSxHQUFHLDBQQUEwUCxDQUFDO0FBQy9RLElBQUksZ0JBQWdCLEdBQUcsb2RBQW9kLENBQUM7QUFDNWUsSUFBSSx1QkFBdUIsR0FBRyxpZkFBaWYsQ0FBQztBQUNoaEIsSUFBSSxvQkFBb0IsR0FBRyxtT0FBbU8sQ0FBQztBQUMvUCxJQUFJLGlCQUFpQixHQUFHLG1RQUFtUSxDQUFDO0FBQzVSLElBQUksd0JBQXdCLEdBQUcsa1RBQWtULENBQUM7QUFDbFYsSUFBSSxLQUFLLEdBQUcsNEdBQTRHLENBQUM7QUFDekgsSUFBSSxPQUFPLEdBQUcsOFJBQThSLENBQUM7QUFDN1MsSUFBSSxjQUFjLEdBQUcsMHdCQUEwd0IsQ0FBQztBQUNoeUIsSUFBSSxZQUFZLEdBQUcsc2dDQUFzZ0MsQ0FBQztBQUMxaEMsSUFBSSxPQUFPLEdBQUcsK0dBQStHLENBQUM7QUFDOUgsSUFBSSxXQUFXLEdBQUcsZ0xBQWdMLENBQUM7QUFDbk0sSUFBSSxpQkFBaUIsR0FBRyx1UUFBdVEsQ0FBQztBQUNoUyxJQUFJLHNCQUFzQixHQUFHLDZHQUE2RyxDQUFDO0FBQzNJLElBQUksbUJBQW1CLEdBQUcsb09BQW9PLENBQUM7QUFDL1AsSUFBSSxvQkFBb0IsR0FBRyxrS0FBa0ssQ0FBQztBQUM5TCxJQUFJLHFCQUFxQixHQUFHLCtMQUErTCxDQUFDO0FBQzVOLElBQUksY0FBYyxHQUFHLDJIQUEySCxDQUFDO0FBQ2pKLElBQUksZ0JBQWdCLEdBQUcseVRBQXlULENBQUM7QUFDalYsSUFBSSxtQkFBbUIsR0FBRywrY0FBK2MsQ0FBQztBQUMxZSxJQUFJLG9CQUFvQixHQUFHLGlaQUFpWixDQUFDO0FBQzdhLElBQUksV0FBVyxHQUFHLHUwQkFBdTBCLENBQUM7QUFDMTFCLElBQUksV0FBVyxHQUFHLHFJQUFxSSxDQUFDO0FBQ3hKLElBQUksa0JBQWtCLEdBQUcsaVBBQWlQLENBQUM7QUFDM1EsSUFBSSxPQUFPLEdBQUcsOElBQThJLENBQUM7QUFDN0osSUFBSSxVQUFVLEdBQUcsc1VBQXNVLENBQUM7QUFDeFYsSUFBSSxpQkFBaUIsR0FBRyw0ZEFBNGQsQ0FBQztBQUNyZixJQUFJLGNBQWMsR0FBRyxrU0FBa1MsQ0FBQztBQUN4VCxJQUFJLFNBQVMsR0FBRywyU0FBMlMsQ0FBQztBQUM1VCxJQUFJLFVBQVUsR0FBRyx3Q0FBd0MsQ0FBQztBQUMxRCxJQUFJLFNBQVMsR0FBRyxxVEFBcVQsQ0FBQztBQUN0VSxJQUFJLFlBQVksR0FBRyx1UkFBdVIsQ0FBQztBQUMzUyxJQUFJLGNBQWMsR0FBRywyakJBQTJqQixDQUFDO0FBQ2psQixJQUFJLGdCQUFnQixHQUFHLHVPQUF1TyxDQUFDO0FBQy9QLElBQUksYUFBYSxHQUFHLGlMQUFpTCxDQUFDO0FBQ3RNLElBQUksY0FBYyxHQUFHLGlUQUFpVCxDQUFDO0FBQ3ZVLElBQUksZ0JBQWdCLEdBQUcsaUtBQWlLLENBQUM7QUFDekwsSUFBSSxlQUFlLEdBQUcscWRBQXFkLENBQUM7QUFDNWUsSUFBSSxpQkFBaUIsR0FBRyw4V0FBOFcsQ0FBQztBQUN2WSxJQUFJLHVCQUF1QixHQUFHLG1mQUFtZixDQUFDO0FBQ2xoQixJQUFJLFlBQVksR0FBRyw0U0FBNFMsQ0FBQztBQUNoVSxJQUFJLGNBQWMsR0FBRyxzUkFBc1IsQ0FBQztBQUM1UyxJQUFJLGVBQWUsR0FBRywrZkFBK2YsQ0FBQztBQUN0aEIsSUFBSSxZQUFZLEdBQUcsMk5BQTJOLENBQUM7QUFDL08sSUFBSSxnQkFBZ0IsR0FBRyxvS0FBb0ssQ0FBQztBQUM1TCxJQUFJLG1CQUFtQixHQUFHLHl3QkFBeXdCLENBQUM7QUFDcHlCLElBQUksOEJBQThCLEdBQUcseWhCQUF5aEIsQ0FBQztBQUMvakIsSUFBSSxrQkFBa0IsR0FBRywrYkFBK2IsQ0FBQztBQUN6ZCxJQUFJLG9CQUFvQixHQUFHLDZUQUE2VCxDQUFDO0FBQ3pWLElBQUksMEJBQTBCLEdBQUcsa2lCQUFraUIsQ0FBQztBQUNwa0IsSUFBSSxlQUFlLEdBQUcsbVJBQW1SLENBQUM7QUFDMVMsSUFBSSxrQkFBa0IsR0FBRyxrZ0JBQWtnQixDQUFDO0FBQzVoQixJQUFJLGNBQWMsR0FBRyw4TkFBOE4sQ0FBQztBQUNwUCxJQUFJLE9BQU8sR0FBRyxtQ0FBbUMsQ0FBQztBQUNsRCxJQUFJLFlBQVksR0FBRyw4RUFBOEUsQ0FBQztBQUNsRyxJQUFJLG1CQUFtQixHQUFHLGlJQUFpSSxDQUFDO0FBQzVKLElBQUksYUFBYSxHQUFHLCtIQUErSCxDQUFDO0FBQ3BKLElBQUksb0JBQW9CLEdBQUcsa01BQWtNLENBQUM7QUFDOU4sSUFBSSxZQUFZLEdBQUcsZ05BQWdOLENBQUM7QUFDcE8sSUFBSSxtQkFBbUIsR0FBRyxxVEFBcVQsQ0FBQztBQUNoVixJQUFJLFdBQVcsR0FBRyxvT0FBb08sQ0FBQztBQUN2UCxJQUFJLGtCQUFrQixHQUFHLHVVQUF1VSxDQUFDO0FBQ2pXLElBQUksY0FBYyxHQUFHLHlHQUF5RyxDQUFDO0FBQy9ILElBQUksYUFBYSxHQUFHLGtGQUFrRixDQUFDO0FBQ3ZHLElBQUksU0FBUyxHQUFHLDJUQUEyVCxDQUFDO0FBQzVVLElBQUksY0FBYyxHQUFHLG9IQUFvSCxDQUFDO0FBQzFJLElBQUksZ0JBQWdCLEdBQUcsa1RBQWtULENBQUM7QUFDMVUsSUFBSSxtQkFBbUIsR0FBRyxpY0FBaWMsQ0FBQztBQUM1ZCxJQUFJLFlBQVksR0FBRyxvY0FBb2MsQ0FBQztBQUN4ZCxJQUFJLGFBQWEsR0FBRyw0SUFBNEksQ0FBQztBQUNqSyxJQUFJLGVBQWUsR0FBRyxxTkFBcU4sQ0FBQztBQUM1TyxJQUFJLGlCQUFpQixHQUFHLDhjQUE4YyxDQUFDO0FBQ3ZlLElBQUksU0FBUyxHQUFHLHNlQUFzZSxDQUFDO0FBQ3ZmLElBQUksWUFBWSxHQUFHLG9jQUFvYyxDQUFDO0FBQ3hkLElBQUksaUJBQWlCLEdBQUcsa2JBQWtiLENBQUM7QUFDM2MsSUFBSSxVQUFVLEdBQUcsOGFBQThhLENBQUM7QUFDaGMsSUFBSSxnQkFBZ0IsR0FBRywrYUFBK2EsQ0FBQztBQUN2YyxJQUFJLGVBQWUsR0FBRyw0UkFBNFIsQ0FBQztBQUNuVCxJQUFJLFdBQVcsR0FBRywyRkFBMkYsQ0FBQztBQUM5RyxJQUFJLFVBQVUsR0FBRyxrakJBQWtqQixDQUFDO0FBQ3BrQixJQUFJLFdBQVcsR0FBRyxpWUFBaVksQ0FBQztBQUNwWixJQUFJLFdBQVcsR0FBRyxpR0FBaUcsQ0FBQztBQUNwSCxJQUFJLFlBQVksR0FBRyxpTkFBaU4sQ0FBQztBQUNyTyxJQUFJLFlBQVksR0FBRywrVEFBK1QsQ0FBQztBQUNuVixJQUFJLGlCQUFpQixHQUFHLHNEQUFzRCxDQUFDO0FBQy9FLElBQUksU0FBUyxHQUFHLGlmQUFpZixDQUFDO0FBQ2xnQixJQUFJLGdCQUFnQixHQUFHLHNvQkFBc29CLENBQUM7QUFDOXBCLElBQUksUUFBUSxHQUFHLHdJQUF3SSxDQUFDO0FBQ3hKLElBQUksa0JBQWtCLEdBQUcsK0lBQStJLENBQUM7QUFDekssSUFBSSxlQUFlLEdBQUcsMlJBQTJSLENBQUM7QUFDbFQsSUFBSSxnQkFBZ0IsR0FBRyx1T0FBdU8sQ0FBQztBQUMvUCxJQUFJLFlBQVksR0FBRywrSkFBK0osQ0FBQztBQUNuTCxJQUFJLG1CQUFtQixHQUFHLDJHQUEyRyxDQUFDO0FBQ3RJLElBQUkscUJBQXFCLEdBQUcsdUVBQXVFLENBQUM7QUFDcEcsSUFBSSxrQkFBa0IsR0FBRyx1RUFBdUUsQ0FBQztBQUNqRyxJQUFJLHlCQUF5QixHQUFHLGdNQUFnTSxDQUFDO0FBQ2pPLElBQUksUUFBUSxHQUFHLGdFQUFnRSxDQUFDO0FBQ2hGLElBQUksV0FBVyxHQUFHLGdHQUFnRyxDQUFDO0FBQ25ILElBQUksa0JBQWtCLEdBQUcsMExBQTBMLENBQUM7QUFDcE4sSUFBSSxjQUFjLEdBQUcsMElBQTBJLENBQUM7QUFDaEssSUFBSSxXQUFXLEdBQUcsMkpBQTJKLENBQUM7QUFDOUssSUFBSSxrQkFBa0IsR0FBRyw0T0FBNE8sQ0FBQztBQUN0USxJQUFJLGVBQWUsR0FBRyxpTEFBaUwsQ0FBQztBQUN4TSxJQUFJLGVBQWUsR0FBRyw0YkFBNGIsQ0FBQztBQUNuZCxJQUFJLHNCQUFzQixHQUFHLGtvQkFBa29CLENBQUM7QUFDaHFCLElBQUksV0FBVyxHQUFHLCttQkFBK21CLENBQUM7QUFDbG9CLElBQUksa0JBQWtCLEdBQUcsd2xCQUF3bEIsQ0FBQztBQUNsbkIsSUFBSSxRQUFRLEdBQUcsK3BDQUErcEMsQ0FBQztBQUMvcUMsSUFBSSxTQUFTLEdBQUcsMEVBQTBFLENBQUM7QUFDM0YsSUFBSSxnQkFBZ0IsR0FBRyxvVUFBb1UsQ0FBQztBQUM1VixJQUFJLHVCQUF1QixHQUFHLHloQkFBeWhCLENBQUM7QUFDeGpCLElBQUksdUJBQXVCLEdBQUcseWJBQXliLENBQUM7QUFDeGQsSUFBSSw4QkFBOEIsR0FBRyxpakJBQWlqQixDQUFDO0FBQ3ZsQixJQUFJLGlCQUFpQixHQUFHLG1SQUFtUixDQUFDO0FBQzVTLElBQUksd0JBQXdCLEdBQUcsbVdBQW1XLENBQUM7QUFDblksSUFBSSxjQUFjLEdBQUcsaUdBQWlHLENBQUM7QUFDdkgsSUFBSSxxQkFBcUIsR0FBRyw0TEFBNEwsQ0FBQztBQUN6TixJQUFJLFlBQVksR0FBRyxxVkFBcVYsQ0FBQztBQUN6VyxJQUFJLG1CQUFtQixHQUFHLGdhQUFnYSxDQUFDO0FBQzNiLElBQUksWUFBWSxHQUFHLDhhQUE4YSxDQUFDO0FBQ2xjLElBQUksY0FBYyxHQUFHLHlIQUF5SCxDQUFDO0FBQy9JLElBQUkscUJBQXFCLEdBQUcsd01BQXdNLENBQUM7QUFDck8sSUFBSSxjQUFjLEdBQUcsMEdBQTBHLENBQUM7QUFDaEksSUFBSSxxQkFBcUIsR0FBRyxrTEFBa0wsQ0FBQztBQUMvTSxJQUFJLGFBQWEsR0FBRyx1TkFBdU4sQ0FBQztBQUM1TyxJQUFJLG9CQUFvQixHQUFHLGlTQUFpUyxDQUFDO0FBQzdULElBQUksYUFBYSxHQUFHLHVDQUF1QyxDQUFDO0FBQzVELElBQUksaUJBQWlCLEdBQUcsMkhBQTJILENBQUM7QUFDcEosSUFBSSxhQUFhLEdBQUcsb0hBQW9ILENBQUM7QUFDekksSUFBSSxvQkFBb0IsR0FBRyxtTUFBbU0sQ0FBQztBQUMvTixJQUFJLFlBQVksR0FBRyw2UEFBNlAsQ0FBQztBQUNqUixJQUFJLG1CQUFtQixHQUFHLDRVQUE0VSxDQUFDO0FBQ3ZXLElBQUksb0JBQW9CLEdBQUcsMGxDQUEwbEMsQ0FBQztBQUN0bkMsSUFBSSwyQkFBMkIsR0FBRyxxcUNBQXFxQyxDQUFDO0FBQ3hzQyxJQUFJLGFBQWEsR0FBRyxrVEFBa1QsQ0FBQztBQUN2VSxJQUFJLG9CQUFvQixHQUFHLHNZQUFzWSxDQUFDO0FBQ2xhLElBQUksWUFBWSxHQUFHLDhLQUE4SyxDQUFDO0FBQ2xNLElBQUksbUJBQW1CLEdBQUcsMlRBQTJULENBQUM7QUFDdFYsSUFBSSxnQkFBZ0IsR0FBRywwSkFBMEosQ0FBQztBQUNsTCxJQUFJLGFBQWEsR0FBRyx5TUFBeU0sQ0FBQztBQUM5TixJQUFJLG9CQUFvQixHQUFHLGdTQUFnUyxDQUFDO0FBQzVULElBQUksZ0JBQWdCLEdBQUcsZ1pBQWdaLENBQUM7QUFDeGEsSUFBSSx1QkFBdUIsR0FBRywwYUFBMGEsQ0FBQztBQUN6YyxJQUFJLGVBQWUsR0FBRyx1U0FBdVMsQ0FBQztBQUM5VCxJQUFJLHNCQUFzQixHQUFHLDhYQUE4WCxDQUFDO0FBQzVaLElBQUksZUFBZSxHQUFHLG1WQUFtVixDQUFDO0FBQzFXLElBQUksYUFBYSxHQUFHLHVMQUF1TCxDQUFDO0FBQzVNLElBQUksb0JBQW9CLEdBQUcsd1FBQXdRLENBQUM7QUFDcFMsSUFBSSxZQUFZLEdBQUcsb3JCQUFvckIsQ0FBQztBQUN4c0IsSUFBSSxtQkFBbUIsR0FBRyxvd0JBQW93QixDQUFDO0FBQy94QixJQUFJLGFBQWEsR0FBRyxnV0FBZ1csQ0FBQztBQUNyWCxJQUFJLG9CQUFvQixHQUFHLHVYQUF1WCxDQUFDO0FBQ25aLElBQUksWUFBWSxHQUFHLGl5Q0FBaXlDLENBQUM7QUFDcnpDLElBQUksYUFBYSxHQUFHLHkyQkFBeTJCLENBQUM7QUFDOTNCLElBQUksWUFBWSxHQUFHLCt3QkFBK3dCLENBQUM7QUFDbnlCLElBQUksYUFBYSxHQUFHLDZIQUE2SCxDQUFDO0FBQ2xKLElBQUksV0FBVyxHQUFHLDhGQUE4RixDQUFDO0FBQ2pILElBQUksWUFBWSxHQUFHLDJkQUEyZCxDQUFDO0FBQy9lLElBQUksY0FBYyxHQUFHLGtvQkFBa29CLENBQUM7QUFDeHBCLElBQUksV0FBVyxHQUFHLG9PQUFvTyxDQUFDO0FBQ3ZQLElBQUksZ0JBQWdCLEdBQUcsaUxBQWlMLENBQUM7QUFDek0sSUFBSSxrQkFBa0IsR0FBRywrUUFBK1EsQ0FBQztBQUN6UyxJQUFJLGlCQUFpQixHQUFHLHNZQUFzWSxDQUFDO0FBQy9aLElBQUksUUFBUSxHQUFHLHlVQUF5VSxDQUFDO0FBQ3pWLElBQUksU0FBUyxHQUFHLG9VQUFvVSxDQUFDO0FBQ3JWLElBQUksWUFBWSxHQUFHLGdaQUFnWixDQUFDO0FBQ3BhLElBQUksU0FBUyxHQUFHLGlYQUFpWCxDQUFDO0FBQ2xZLElBQUksYUFBYSxHQUFHLG81QkFBbzVCLENBQUM7QUFDejZCLElBQUksV0FBVyxHQUFHLDBNQUEwTSxDQUFDO0FBQzdOLElBQUksVUFBVSxHQUFHLG9MQUFvTCxDQUFDO0FBQ3RNLElBQUksa0JBQWtCLEdBQUcsOERBQThELENBQUM7QUFDeEYsSUFBSSxpQkFBaUIsR0FBRyx1S0FBdUssQ0FBQztBQUNoTSxJQUFJLFdBQVcsR0FBRyx3TEFBd0wsQ0FBQztBQUMzTSxJQUFJLFFBQVEsR0FBRywwREFBMEQsQ0FBQztBQUMxRSxJQUFJLGFBQWEsR0FBRywrTUFBK00sQ0FBQztBQUNwTyxJQUFJLGNBQWMsR0FBRyw0S0FBNEssQ0FBQztBQUNsTSxJQUFJLGdCQUFnQixHQUFHLHVHQUF1RyxDQUFDO0FBQy9ILElBQUkscUJBQXFCLEdBQUcsZ0dBQWdHLENBQUM7QUFDN0gsSUFBSSxvQkFBb0IsR0FBRyx3SkFBd0osQ0FBQztBQUNwTCxJQUFJLHNCQUFzQixHQUFHLHFQQUFxUCxDQUFDO0FBQ25SLElBQUksV0FBVyxHQUFHLG9FQUFvRSxDQUFDO0FBQ3ZGLElBQUksaUJBQWlCLEdBQUcsNkpBQTZKLENBQUM7QUFDdEwsSUFBSSxXQUFXLEdBQUcsd0tBQXdLLENBQUM7QUFDM0wsSUFBSSxTQUFTLEdBQUcsMkRBQTJELENBQUM7QUFDNUUsSUFBSSxXQUFXLEdBQUcseU1BQXlNLENBQUM7QUFDNU4sSUFBSSxXQUFXLEdBQUcsZ1BBQWdQLENBQUM7QUFDblEsSUFBSSxXQUFXLEdBQUcseUpBQXlKLENBQUM7QUFDNUssSUFBSSxXQUFXLEdBQUcsZ05BQWdOLENBQUM7QUFDbk8sSUFBSSxrQkFBa0IsR0FBRywyR0FBMkcsQ0FBQztBQUNySSxJQUFJLGtCQUFrQixHQUFHLDZFQUE2RSxDQUFDO0FBQ3ZHLElBQUksa0JBQWtCLEdBQUcsaURBQWlELENBQUM7QUFDM0UsSUFBSSx3QkFBd0IsR0FBRyxzSUFBc0ksQ0FBQztBQUN0SyxJQUFJLHdCQUF3QixHQUFHLCtJQUErSSxDQUFDO0FBQy9LLElBQUksYUFBYSxHQUFHLHNFQUFzRSxDQUFDO0FBQzNGLElBQUksaUJBQWlCLEdBQUcsMkZBQTJGLENBQUM7QUFDcEgsSUFBSSxZQUFZLEdBQUcsdUpBQXVKLENBQUM7QUFDM0ssSUFBSSxnQkFBZ0IsR0FBRyxrTEFBa0wsQ0FBQztBQUMxTSxJQUFJLFlBQVksR0FBRywySkFBMkosQ0FBQztBQUMvSyxJQUFJLG9CQUFvQixHQUFHLGc1QkFBZzVCLENBQUM7QUFDNTZCLElBQUksaUJBQWlCLEdBQUcsMlBBQTJQLENBQUM7QUFDcFIsSUFBSSxnQkFBZ0IsR0FBRywyWUFBMlksQ0FBQztBQUNuYSxJQUFJLE9BQU8sR0FBRyw2TkFBNk4sQ0FBQztBQUM1TyxJQUFJLGFBQWEsR0FBRyx1U0FBdVMsQ0FBQztBQUM1VCxJQUFJLGtCQUFrQixHQUFHLHVkQUF1ZCxDQUFDO0FBQ2pmLElBQUksaUJBQWlCLEdBQUcseVBBQXlQLENBQUM7QUFDbFIsSUFBSSxzQkFBc0IsR0FBRywrSUFBK0ksQ0FBQztBQUM3SyxJQUFJLGtCQUFrQixHQUFHLHVMQUF1TCxDQUFDO0FBQ2pOLElBQUksb0JBQW9CLEdBQUcsdVdBQXVXLENBQUM7QUFDblksSUFBSSxNQUFNLEdBQUcsa0xBQWtMLENBQUM7QUFDaE0sSUFBSSxXQUFXLEdBQUcsZ0hBQWdILENBQUM7QUFDbkksSUFBSSxrQkFBa0IsR0FBRyx3SUFBd0ksQ0FBQztBQUNsSyxJQUFJLFNBQVMsR0FBRywrS0FBK0ssQ0FBQztBQUNoTSxJQUFJLGdCQUFnQixHQUFHLDRPQUE0TyxDQUFDO0FBQ3BRLElBQUksYUFBYSxHQUFHLHlPQUF5TyxDQUFDO0FBQzlQLElBQUksY0FBYyxHQUFHLDR1QkFBNHVCLENBQUM7QUFDbHdCLElBQUksWUFBWSxHQUFHLHUwQkFBdTBCLENBQUM7QUFDMzFCLElBQUksV0FBVyxHQUFHLG1PQUFtTyxDQUFDO0FBQ3RQLElBQUksVUFBVSxHQUFHLDJJQUEySSxDQUFDO0FBQzdKLElBQUksUUFBUSxHQUFHLHVCQUF1QixDQUFDO0FBQ3ZDLElBQUksUUFBUSxHQUFHLDBFQUEwRSxDQUFDO0FBQzFGLElBQUksUUFBUSxHQUFHLDZIQUE2SCxDQUFDO0FBQzdJLElBQUksU0FBUyxHQUFHLG1GQUFtRixDQUFDO0FBQ3BHLElBQUksU0FBUyxHQUFHLDZMQUE2TCxDQUFDO0FBQzlNLElBQUksVUFBVSxHQUFHLDZJQUE2SSxDQUFDO0FBQy9KLElBQUksVUFBVSxHQUFHLHVQQUF1UCxDQUFDO0FBQ3pRLElBQUksV0FBVyxHQUFHLGtOQUFrTixDQUFDO0FBQ3JPLElBQUksUUFBUSxHQUFHLDhRQUE4USxDQUFDO0FBQzlSLElBQUksYUFBYSxHQUFHLG1lQUFtZSxDQUFDO0FBQ3hmLElBQUksV0FBVyxHQUFHLG9GQUFvRixDQUFDO0FBQ3ZHLElBQUksV0FBVyxHQUFHLG9GQUFvRixDQUFDO0FBQ3ZHLElBQUksTUFBTSxHQUFHLG1nQkFBbWdCLENBQUM7QUFDamhCLElBQUksa0JBQWtCLEdBQUcsc1FBQXNRLENBQUM7QUFDaFMsSUFBSSxXQUFXLEdBQUcsNGNBQTRjLENBQUM7QUFDL2QsSUFBSSxlQUFlLEdBQUcsd0NBQXdDLENBQUM7QUFDL0QsSUFBSSxzQkFBc0IsR0FBRyx1R0FBdUcsQ0FBQztBQUNySSxJQUFJLGNBQWMsR0FBRywwQ0FBMEMsQ0FBQztBQUNoRSxJQUFJLHFCQUFxQixHQUFHLHNHQUFzRyxDQUFDO0FBQ25JLElBQUksV0FBVyxHQUFHLHFDQUFxQyxDQUFDO0FBQ3hELElBQUksaUJBQWlCLEdBQUcsMEdBQTBHLENBQUM7QUFDbkksSUFBSSx3QkFBd0IsR0FBRyxrTUFBa00sQ0FBQztBQUNsTyxJQUFJLGtCQUFrQixHQUFHLHlEQUF5RCxDQUFDO0FBQ25GLElBQUksZUFBZSxHQUFHLHVDQUF1QyxDQUFDO0FBQzlELElBQUkscUJBQXFCLEdBQUcsdUdBQXVHLENBQUM7QUFDcEksSUFBSSw0QkFBNEIsR0FBRyxrTUFBa00sQ0FBQztBQUN0TyxJQUFJLHNCQUFzQixHQUFHLDZEQUE2RCxDQUFDO0FBQzNGLElBQUksUUFBUSxHQUFHLDZSQUE2UixDQUFDO0FBQzdTLElBQUksa0JBQWtCLEdBQUcsd2JBQXdiLENBQUM7QUFDbGQsSUFBSSx5QkFBeUIsR0FBRywyZ0JBQTJnQixDQUFDO0FBQzVpQixJQUFJLGVBQWUsR0FBRyw2WEFBNlgsQ0FBQztBQUNwWixJQUFJLFlBQVksR0FBRyxvYkFBb2IsQ0FBQztBQUN4YyxJQUFJLG1CQUFtQixHQUFHLGlpQkFBaWlCLENBQUM7QUFDNWpCLElBQUksUUFBUSxHQUFHLDZ1QkFBNnVCLENBQUM7QUFDN3ZCLElBQUksZ0JBQWdCLEdBQUcsdS9CQUF1L0IsQ0FBQztBQUMvZ0MsSUFBSSxRQUFRLEdBQUcscWdCQUFxZ0IsQ0FBQztBQUNyaEIsSUFBSSxlQUFlLEdBQUcsMkJBQTJCLENBQUM7QUFDbEQsSUFBSSxrQkFBa0IsR0FBRyx3SEFBd0gsQ0FBQztBQUNsSixJQUFJLFFBQVEsR0FBRyxzSUFBc0ksQ0FBQztBQUN0SixJQUFJLFdBQVcsR0FBRyx5TEFBeUwsQ0FBQztBQUM1TSxJQUFJLFFBQVEsR0FBRyxxV0FBcVcsQ0FBQztBQUNyWCxJQUFJLGdCQUFnQixHQUFHLDROQUE0TixDQUFDO0FBQ3BQLElBQUksY0FBYyxHQUFHLG1PQUFtTyxDQUFDO0FBQ3pQLElBQUksY0FBYyxHQUFHLDZXQUE2VyxDQUFDO0FBQ25ZLElBQUkscUJBQXFCLEdBQUcsNFhBQTRYLENBQUM7QUFDelosSUFBSSxZQUFZLEdBQUcsaU5BQWlOLENBQUM7QUFDck8sSUFBSSxtQkFBbUIsR0FBRyxnUEFBZ1AsQ0FBQztBQUMzUSxJQUFJLGtCQUFrQixHQUFHLDJOQUEyTixDQUFDO0FBQ3JQLElBQUkseUJBQXlCLEdBQUcsa09BQWtPLENBQUM7QUFDblEsSUFBSSxPQUFPLEdBQUcsaVRBQWlULENBQUM7QUFDaFUsSUFBSSxnQkFBZ0IsR0FBRyx3T0FBd08sQ0FBQztBQUNoUSxJQUFJLFVBQVUsR0FBRyxnZkFBZ2YsQ0FBQztBQUNsZ0IsSUFBSSxhQUFhLEdBQUcsb2VBQW9lLENBQUM7QUFDemYsSUFBSSxjQUFjLEdBQUcsMHBCQUEwcEIsQ0FBQztBQUNockIsSUFBSSxpQkFBaUIsR0FBRyx5eUJBQXl5QixDQUFDO0FBQ2wwQixJQUFJLFFBQVEsR0FBRyxxM0JBQXEzQixDQUFDO0FBQ3I0QixJQUFJLFFBQVEsR0FBRyx3ZUFBd2UsQ0FBQztBQUN4ZixJQUFJLFdBQVcsR0FBRyxnckdBQWdyRyxDQUFDO0FBQ25zRyxJQUFJLFlBQVksR0FBRywra0JBQStrQixDQUFDO0FBQ25tQixJQUFJLFlBQVksR0FBRyxrbEJBQWtsQixDQUFDO0FBQ3RtQixJQUFJLGlCQUFpQixHQUFHLHliQUF5YixDQUFDO0FBQ2xkLElBQUksZ0JBQWdCLEdBQUcsbWtCQUFta0IsQ0FBQztBQUMzbEIsSUFBSSxlQUFlLEdBQUcsaW5CQUFpbkIsQ0FBQztBQUN4b0IsSUFBSSxtQkFBbUIsR0FBRyxvWkFBb1osQ0FBQztBQUMvYSxJQUFJLFVBQVUsR0FBRyx1a0JBQXVrQixDQUFDO0FBQ3psQixJQUFJLFNBQVMsR0FBRyxxc0JBQXFzQixDQUFDO0FBQ3R0QixJQUFJLGNBQWMsR0FBRyw4YUFBOGEsQ0FBQztBQUNwYyxJQUFJLHdCQUF3QixHQUFHLHVsQkFBdWxCLENBQUM7QUFDdm5CLElBQUksc0JBQXNCLEdBQUcsMm1CQUEybUIsQ0FBQztBQUN6b0IsSUFBSSxPQUFPLEdBQUcscVhBQXFYLENBQUM7QUFDcFksSUFBSSxjQUFjLEdBQUcsbWhCQUFtaEIsQ0FBQztBQUN6aUIsSUFBSSxhQUFhLEdBQUcscVJBQXFSLENBQUM7QUFDMVMsSUFBSSxvQkFBb0IsR0FBRyxxYUFBcWEsQ0FBQztBQUNqYyxJQUFJLGFBQWEsR0FBRyw2S0FBNkssQ0FBQztBQUNsTSxJQUFJLGtCQUFrQixHQUFHLHNTQUFzUyxDQUFDO0FBQ2hVLElBQUksYUFBYSxHQUFHLHFPQUFxTyxDQUFDO0FBQzFQLElBQUksZ0JBQWdCLEdBQUcscVpBQXFaLENBQUM7QUFDN2EsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBQzlCLElBQUksa0JBQWtCLEdBQUcsOHFCQUE4cUIsQ0FBQztBQUN4c0IsSUFBSSxPQUFPLEdBQUcsaUZBQWlGLENBQUM7QUFDaEcsSUFBSSw0QkFBNEIsR0FBRyw2SUFBNkksQ0FBQztBQUNqTCxJQUFJLG1DQUFtQyxHQUFHLHdQQUF3UCxDQUFDO0FBQ25TLElBQUksNkJBQTZCLEdBQUcsMklBQTJJLENBQUM7QUFDaEwsSUFBSSxvQ0FBb0MsR0FBRyw0UEFBNFAsQ0FBQztBQUN4UyxJQUFJLDBCQUEwQixHQUFHLDBSQUEwUixDQUFDO0FBQzVULElBQUksZ0JBQWdCLEdBQUcsc0VBQXNFLENBQUM7QUFDOUYsSUFBSSxvQkFBb0IsR0FBRyxtTkFBbU4sQ0FBQztBQUMvTyxJQUFJLDJCQUEyQixHQUFHLDhUQUE4VCxDQUFDO0FBQ2pXLElBQUkscUJBQXFCLEdBQUcsZ1JBQWdSLENBQUM7QUFDN1MsSUFBSSw0QkFBNEIsR0FBRyx5U0FBeVMsQ0FBQztBQUM3VSxJQUFJLHdCQUF3QixHQUFHLGdNQUFnTSxDQUFDO0FBQ2hPLElBQUkseUJBQXlCLEdBQUcsNkxBQTZMLENBQUM7QUFDOU4sSUFBSSxxQkFBcUIsR0FBRyxtTEFBbUwsQ0FBQztBQUNoTixJQUFJLDRCQUE0QixHQUFHLHVTQUF1UyxDQUFDO0FBQzNVLElBQUksc0JBQXNCLEdBQUcsZ0xBQWdMLENBQUM7QUFDOU0sSUFBSSw2QkFBNkIsR0FBRyxvU0FBb1MsQ0FBQztBQUN6VSxJQUFJLGlCQUFpQixHQUFHLG9FQUFvRSxDQUFDO0FBQzdGLElBQUksdUJBQXVCLEdBQUcsc1FBQXNRLENBQUM7QUFDclMsSUFBSSw4QkFBOEIsR0FBRyw4d0NBQTh3QyxDQUFDO0FBQ3B6QyxJQUFJLHdCQUF3QixHQUFHLDRQQUE0UCxDQUFDO0FBQzVSLElBQUksK0JBQStCLEdBQUcsbXhDQUFteEMsQ0FBQztBQUMxekMsSUFBSSxxQkFBcUIsR0FBRyx3MENBQXcwQyxDQUFDO0FBQ3IyQyxJQUFJLHFCQUFxQixHQUFHLHdDQUF3QyxDQUFDO0FBQ3JFLElBQUksY0FBYyxHQUFHLDBDQUEwQyxDQUFDO0FBQ2hFLElBQUksa0JBQWtCLEdBQUcseUpBQXlKLENBQUM7QUFDbkwsSUFBSSxzQkFBc0IsR0FBRyw2SUFBNkksQ0FBQztBQUMzSyxJQUFJLG9CQUFvQixHQUFHLHlMQUF5TCxDQUFDO0FBQ3JOLElBQUksYUFBYSxHQUFHLG1xQkFBbXFCLENBQUM7QUFDeHJCLElBQUksZUFBZSxHQUFHLHFqQkFBcWpCLENBQUM7QUFDNWtCLElBQUksb0JBQW9CLEdBQUcsb29CQUFvb0IsQ0FBQztBQUNocUIsSUFBSSxvQkFBb0IsR0FBRyw2a0JBQTZrQixDQUFDO0FBQ3ptQixJQUFJLG1CQUFtQixHQUFHLHFtQkFBcW1CLENBQUM7QUFDaG9CLElBQUksc0JBQXNCLEdBQUcsd3hCQUF3eEIsQ0FBQztBQUN0ekIsSUFBSSxxQkFBcUIsR0FBRywyc0JBQTJzQixDQUFDO0FBQ3h1QixJQUFJLG1CQUFtQixHQUFHLDQ4QkFBNDhCLENBQUM7QUFDditCLElBQUksZUFBZSxHQUFHLHNNQUFzTSxDQUFDO0FBQzdOLElBQUksa0JBQWtCLEdBQUcscUtBQXFLLENBQUM7QUFDL0wsSUFBSSx1QkFBdUIsR0FBRyx3SkFBd0osQ0FBQztBQUN2TCxJQUFJLG9CQUFvQixHQUFHLDBLQUEwSyxDQUFDO0FBQ3RNLElBQUksd0JBQXdCLEdBQUcsdUxBQXVMLENBQUM7QUFDdk4sSUFBSSxvQkFBb0IsR0FBRywwS0FBMEssQ0FBQztBQUN0TSxJQUFJLDZCQUE2QixHQUFHLDJKQUEySixDQUFDO0FBQ2hNLElBQUksYUFBYSxHQUFHLGd1QkFBZ3VCLENBQUM7QUFDcnZCLElBQUksY0FBYyxHQUFHLGdoQkFBZ2hCLENBQUM7QUFDdGlCLElBQUksYUFBYSxHQUFHLG1nQkFBbWdCLENBQUM7QUFDeGhCLElBQUksbUJBQW1CLEdBQUcsbTFCQUFtMUIsQ0FBQztBQUM5MkIsSUFBSSwyQkFBMkIsR0FBRyxtNEJBQW00QixDQUFDO0FBQ3Q2QixJQUFJLFdBQVcsR0FBRyx3UkFBd1IsQ0FBQztBQUMzUyxJQUFJLGNBQWMsR0FBRyx3V0FBd1csQ0FBQztBQUM5WCxJQUFJLE1BQU0sR0FBRyx1UEFBdVAsQ0FBQztBQUNyUSxJQUFJLGFBQWEsR0FBRyxnY0FBZ2MsQ0FBQztBQUNyZCxJQUFJLGdCQUFnQixHQUFHLDJMQUEyTCxDQUFDO0FBQ25OLElBQUksZUFBZSxHQUFHLDJ0QkFBMnRCLENBQUM7QUFDbHZCLElBQUksUUFBUSxHQUFHLDBRQUEwUSxDQUFDO0FBQzFSLElBQUksV0FBVyxHQUFHLHVMQUF1TCxDQUFDO0FBQzFNLElBQUksVUFBVSxHQUFHLDZTQUE2UyxDQUFDO0FBQy9ULElBQUksbUJBQW1CLEdBQUcsd2NBQXdjLENBQUM7QUFDbmUsSUFBSSxrQkFBa0IsR0FBRyx3VEFBd1QsQ0FBQztBQUNsVixJQUFJLGFBQWEsR0FBRyx1YkFBdWIsQ0FBQztBQUM1YyxJQUFJLGtCQUFrQixHQUFHLDRqQkFBNGpCLENBQUM7QUFDdGxCLElBQUksY0FBYyxHQUFHLHVoQkFBdWhCLENBQUM7QUFDN2lCLElBQUksb0JBQW9CLEdBQUcsNmZBQTZmLENBQUM7QUFDemhCLElBQUksa0JBQWtCLEdBQUcsNGdCQUE0Z0IsQ0FBQztBQUN0aUIsSUFBSSxhQUFhLEdBQUcscUpBQXFKLENBQUM7QUFDMUssSUFBSSxTQUFTLEdBQUcsc1pBQXNaLENBQUM7QUFDdmEsSUFBSSxlQUFlLEdBQUcsMmZBQTJmLENBQUM7QUFDbGhCLElBQUksWUFBWSxHQUFHLHl3REFBeXdELENBQUM7QUFDN3hELElBQUksY0FBYyxHQUFHLHFIQUFxSCxDQUFDO0FBQzNJLElBQUksYUFBYSxHQUFHLHlNQUF5TSxDQUFDO0FBQzlOLElBQUksVUFBVSxHQUFHLDZvQkFBNm9CLENBQUM7QUFDL3BCLElBQUksWUFBWSxHQUFHLHViQUF1YixDQUFDO0FBQzNjLElBQUksZ0JBQWdCLEdBQUcsK1JBQStSLENBQUM7QUFDdlQsSUFBSSxRQUFRLEdBQUcsZ01BQWdNLENBQUM7QUFDaE4sSUFBSSxjQUFjLEdBQUcsdUlBQXVJLENBQUM7QUFDN0osSUFBSSxZQUFZLEdBQUcsaUpBQWlKLENBQUM7QUFDckssSUFBSSxtQkFBbUIsR0FBRywwT0FBME8sQ0FBQztBQUNyUSxJQUFJLFNBQVMsR0FBRyx1UkFBdVIsQ0FBQztBQUN4UyxJQUFJLGdCQUFnQixHQUFHLDBrQkFBMGtCLENBQUM7QUFDbG1CLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQztBQUMvQixJQUFJLGVBQWUsR0FBRyxtR0FBbUcsQ0FBQztBQUMxSCxJQUFJLG9CQUFvQixHQUFHLHVRQUF1USxDQUFDO0FBQ25TLElBQUksZUFBZSxHQUFHLGtCQUFrQixDQUFDO0FBQ3pDLElBQUksc0JBQXNCLEdBQUcsb0NBQW9DLENBQUM7QUFDbEUsSUFBSSxZQUFZLEdBQUcsMkZBQTJGLENBQUM7QUFDL0csSUFBSSxtQkFBbUIsR0FBRywrSEFBK0gsQ0FBQztBQUMxSixJQUFJLGdCQUFnQixHQUFHLCtCQUErQixDQUFDO0FBQ3ZELElBQUksYUFBYSxHQUFHLGlOQUFpTixDQUFDO0FBQ3RPLElBQUksZ0JBQWdCLEdBQUcsaVJBQWlSLENBQUM7QUFDelMsSUFBSSxnQkFBZ0IsR0FBRyxxR0FBcUcsQ0FBQztBQUM3SCxJQUFJLHVCQUF1QixHQUFHLHVNQUF1TSxDQUFDO0FBQ3RPLElBQUksY0FBYyxHQUFHLHFCQUFxQixDQUFDO0FBQzNDLElBQUksYUFBYSxHQUFHLHVDQUF1QyxDQUFDO0FBQzVELElBQUksV0FBVyxHQUFHLHNGQUFzRixDQUFDO0FBQ3pHLElBQUksTUFBTSxHQUFHLHlYQUF5WCxDQUFDO0FBQ3ZZLElBQUksZ0JBQWdCLEdBQUcsOE9BQThPLENBQUM7QUFDdFEsSUFBSSxnQkFBZ0IsR0FBRyxpVEFBaVQsQ0FBQztBQUN6VSxJQUFJLFlBQVksR0FBRywybkNBQTJuQyxDQUFDO0FBQy9vQyxJQUFJLFVBQVUsR0FBRyx5VUFBeVUsQ0FBQztBQUMzVixJQUFJLGlCQUFpQixHQUFHLGdiQUFnYixDQUFDO0FBQ3pjLElBQUksU0FBUyxHQUFHLG1EQUFtRCxDQUFDO0FBQ3BFLElBQUksWUFBWSxHQUFHLHNKQUFzSixDQUFDO0FBQzFLLElBQUksYUFBYSxHQUFHLHNIQUFzSCxDQUFDO0FBQzNJLElBQUksV0FBVyxHQUFHLHVIQUF1SCxDQUFDO0FBQzFJLElBQUksVUFBVSxHQUFHLCtIQUErSCxDQUFDO0FBQ2pKLElBQUkscUJBQXFCLEdBQUcsaU1BQWlNLENBQUM7QUFDOU4sSUFBSSxPQUFPLEdBQUcsc0dBQXNHLENBQUM7QUFDckgsSUFBSSxVQUFVLEdBQUcsZ01BQWdNLENBQUM7QUFDbE4sSUFBSSxrQkFBa0IsR0FBRyx3T0FBd08sQ0FBQztBQUNsUSxJQUFJLHlCQUF5QixHQUFHLHNQQUFzUCxDQUFDO0FBQ3ZSLElBQUksaUJBQWlCLEdBQUcsOE1BQThNLENBQUM7QUFDdk8sSUFBSSxZQUFZLEdBQUcsK0pBQStKLENBQUM7QUFDbkwsSUFBSSxtQkFBbUIsR0FBRyxpUkFBaVIsQ0FBQztBQUM1UyxJQUFJLGFBQWEsR0FBRyx5TEFBeUwsQ0FBQztBQUM5TSxJQUFJLG9CQUFvQixHQUFHLHFRQUFxUSxDQUFDO0FBQ2pTLElBQUksVUFBVSxHQUFHLHFpQ0FBcWlDLENBQUM7QUFDdmpDLElBQUksaUJBQWlCLEdBQUcseXJDQUF5ckMsQ0FBQztBQUNsdEMsSUFBSSxXQUFXLEdBQUcsZ2FBQWdhLENBQUM7QUFDbmIsSUFBSSxpQkFBaUIsR0FBRyxrREFBa0QsQ0FBQztBQUMzRSxJQUFJLHdCQUF3QixHQUFHLHVJQUF1SSxDQUFDO0FBQ3ZLLElBQUksV0FBVyxHQUFHLHVEQUF1RCxDQUFDO0FBQzFFLElBQUksZUFBZSxHQUFHLGdLQUFnSyxDQUFDO0FBQ3ZMLElBQUksWUFBWSxHQUFHLGtIQUFrSCxDQUFDO0FBQ3RJLElBQUksbUJBQW1CLEdBQUcsb09BQW9PLENBQUM7QUFDL1AsSUFBSSxVQUFVLEdBQUcsa0pBQWtKLENBQUM7QUFDcEssSUFBSSxpQkFBaUIsR0FBRyxnUUFBZ1EsQ0FBQztBQUN6UixJQUFJLGNBQWMsR0FBRyxpTkFBaU4sQ0FBQztBQUN2TyxJQUFJLFdBQVcsR0FBRywwSUFBMEksQ0FBQztBQUM3SixJQUFJLGtCQUFrQixHQUFHLDRQQUE0UCxDQUFDO0FBQ3RSLElBQUksYUFBYSxHQUFHLDBOQUEwTixDQUFDO0FBQy9PLElBQUksb0JBQW9CLEdBQUcsNFVBQTRVLENBQUM7QUFDeFcsSUFBSSxlQUFlLEdBQUcsd0pBQXdKLENBQUM7QUFDL0ssSUFBSSxzQkFBc0IsR0FBRyxvUkFBb1IsQ0FBQztBQUNsVCxJQUFJLGVBQWUsR0FBRyw4Z0JBQThnQixDQUFDO0FBQ3JpQixJQUFJLHNCQUFzQixHQUFHLGt2QkFBa3ZCLENBQUM7QUFDaHhCLElBQUksa0JBQWtCLEdBQUcscURBQXFELENBQUM7QUFDL0UsSUFBSSx5QkFBeUIsR0FBRyxnSEFBZ0gsQ0FBQztBQUNqSixJQUFJLGVBQWUsR0FBRyxxZEFBcWQsQ0FBQztBQUM1ZSxJQUFJLFFBQVEsR0FBRyxxNEJBQXE0QixDQUFDO0FBQ3I1QixJQUFJLFdBQVcsR0FBRyw0bEJBQTRsQixDQUFDO0FBQy9tQixJQUFJLGNBQWMsR0FBRyxxdUJBQXF1QixDQUFDO0FBQzN2QixJQUFJLGVBQWUsR0FBRyw0QkFBNEIsQ0FBQztBQUNuRCxJQUFJLGdCQUFnQixHQUFHLHFEQUFxRCxDQUFDO0FBQzdFLElBQUksY0FBYyxHQUFHLDJCQUEyQixDQUFDO0FBQ2pELElBQUksZUFBZSxHQUFHLGlEQUFpRCxDQUFDO0FBQ3hFLElBQUksY0FBYyxHQUFHLG9aQUFvWixDQUFDO0FBQzFhLElBQUksVUFBVSxHQUFHLHdJQUF3SSxDQUFDO0FBQzFKLElBQUksZUFBZSxHQUFHLDJLQUEySyxDQUFDO0FBQ2xNLElBQUksc0JBQXNCLEdBQUcsMFBBQTBQLENBQUM7QUFDeFIsSUFBSSxlQUFlLEdBQUcsK0xBQStMLENBQUM7QUFDdE4sSUFBSSxzQkFBc0IsR0FBRyxtUkFBbVIsQ0FBQztBQUNqVCxJQUFJLHVCQUF1QixHQUFHLDBlQUEwZSxDQUFDO0FBQ3pnQixJQUFJLGVBQWUsR0FBRyxpcEJBQWlwQixDQUFDO0FBQ3hxQixJQUFJLGVBQWUsR0FBRyx3SkFBd0osQ0FBQztBQUMvSyxJQUFJLHNCQUFzQixHQUFHLHVPQUF1TyxDQUFDO0FBQ3JRLElBQUksaUJBQWlCLEdBQUcsb05BQW9OLENBQUM7QUFDN08sSUFBSSxjQUFjLEdBQUcsZ0xBQWdMLENBQUM7QUFDdE0sSUFBSSxxQkFBcUIsR0FBRywrUEFBK1AsQ0FBQztBQUM1UixJQUFJLGdCQUFnQixHQUFHLHdQQUF3UCxDQUFDO0FBQ2hSLElBQUksdUJBQXVCLEdBQUcsc1RBQXNULENBQUM7QUFDclYsSUFBSSxXQUFXLEdBQUcsa05BQWtOLENBQUM7QUFDck8sSUFBSSxVQUFVLEdBQUcseVRBQXlULENBQUM7QUFDM1UsSUFBSSxPQUFPLEdBQUcsbUJBQW1CLENBQUM7QUFDbEMsSUFBSSxhQUFhLEdBQUcseUZBQXlGLENBQUM7QUFDOUcsSUFBSSxvQkFBb0IsR0FBRyxvTEFBb0wsQ0FBQztBQUNoTixJQUFJLFFBQVEsR0FBRyw4RUFBOEUsQ0FBQztBQUM5RixJQUFJLGNBQWMsR0FBRyxzR0FBc0csQ0FBQztBQUM1SCxJQUFJLGFBQWEsR0FBRyx1TkFBdU4sQ0FBQztBQUM1TyxJQUFJLGVBQWUsR0FBRyxxSEFBcUgsQ0FBQztBQUM1SSxJQUFJLFlBQVksR0FBRywrT0FBK08sQ0FBQztBQUNuUSxJQUFJLGNBQWMsR0FBRyx3VUFBd1UsQ0FBQztBQUM5VixJQUFJLGFBQWEsR0FBRywyMUNBQTIxQyxDQUFDO0FBQ2gzQyxJQUFJLG9CQUFvQixHQUFHLDRqQ0FBNGpDLENBQUM7QUFDeGxDLElBQUksUUFBUSxHQUFHLHFiQUFxYixDQUFDO0FBQ3JjLElBQUksV0FBVyxHQUFHLG1kQUFtZCxDQUFDO0FBQ3RlLElBQUksZ0JBQWdCLEdBQUcsbVVBQW1VLENBQUM7QUFDM1YsSUFBSSx1QkFBdUIsR0FBRyxrVkFBa1YsQ0FBQztBQUNqWCxJQUFJLGVBQWUsR0FBRyx1NEJBQXU0QixDQUFDO0FBQzk1QixJQUFJLGtCQUFrQixHQUFHLDZqQ0FBNmpDLENBQUM7QUFDdmxDLElBQUksd0JBQXdCLEdBQUcsd0VBQXdFLENBQUM7QUFDeEcsSUFBSSx5QkFBeUIsR0FBRywwRUFBMEUsQ0FBQztBQUMzRyxJQUFJLFlBQVksR0FBRyxzVEFBc1QsQ0FBQztBQUMxVSxJQUFJLFlBQVksR0FBRyxrSkFBa0osQ0FBQztBQUN0SyxJQUFJLG1CQUFtQixHQUFHLGlLQUFpSyxDQUFDO0FBQzVMLElBQUksU0FBUyxHQUFHLDBjQUEwYyxDQUFDO0FBQzNkLElBQUkscUJBQXFCLEdBQUcsK1dBQStXLENBQUM7QUFDNVksSUFBSSxnQkFBZ0IsR0FBRywrVUFBK1UsQ0FBQztBQUN2VyxJQUFJLFNBQVMsR0FBRyw2REFBNkQsQ0FBQztBQUM5RSxJQUFJLGFBQWEsR0FBRywrZEFBK2QsQ0FBQztBQUNwZixJQUFJLGdCQUFnQixHQUFHLG1mQUFtZixDQUFDO0FBQzNnQixJQUFJLGtCQUFrQixHQUFHLGtQQUFrUCxDQUFDO0FBQzVRLElBQUksa0JBQWtCLEdBQUcsd0hBQXdILENBQUM7QUFDbEosSUFBSSxrQkFBa0IsR0FBRywyS0FBMkssQ0FBQztBQUNyTSxJQUFJLGtCQUFrQixHQUFHLDZMQUE2TCxDQUFDO0FBQ3ZOLElBQUksbUJBQW1CLEdBQUcsZ1BBQWdQLENBQUM7QUFDM1EsSUFBSSxrQkFBa0IsR0FBRyxzSUFBc0ksQ0FBQztBQUNoSyxJQUFJLE1BQU0sR0FBRyxrNEJBQWs0QixDQUFDO0FBQ2g1QixJQUFJLGlCQUFpQixHQUFHLHdEQUF3RCxDQUFDO0FBQ2pGLElBQUkscUJBQXFCLEdBQUcsbUVBQW1FLENBQUM7QUFDaEcsSUFBSSx1QkFBdUIsR0FBRyw2SUFBNkksQ0FBQztBQUM1SyxJQUFJLDhCQUE4QixHQUFHLCtNQUErTSxDQUFDO0FBQ3JQLElBQUksd0JBQXdCLEdBQUcsOEtBQThLLENBQUM7QUFDOU0sSUFBSSxlQUFlLEdBQUcseURBQXlELENBQUM7QUFDaEYsSUFBSSxtQkFBbUIsR0FBRyxvRUFBb0UsQ0FBQztBQUMvRixJQUFJLHFCQUFxQixHQUFHLDJJQUEySSxDQUFDO0FBQ3hLLElBQUksNEJBQTRCLEdBQUcsK01BQStNLENBQUM7QUFDblAsSUFBSSxzQkFBc0IsR0FBRywrS0FBK0ssQ0FBQztBQUM3TSxJQUFJLE9BQU8sR0FBRywwYkFBMGIsQ0FBQztBQUN6YyxJQUFJLFNBQVMsR0FBRywwT0FBME8sQ0FBQztBQUMzUCxJQUFJLFFBQVEsR0FBRyw4T0FBOE8sQ0FBQztBQUM5UCxJQUFJLGFBQWEsR0FBRyw2Y0FBNmMsQ0FBQztBQUNsZSxJQUFJLGtCQUFrQixHQUFHLHVQQUF1UCxDQUFDO0FBQ2pSLElBQUksb0JBQW9CLEdBQUcscW9CQUFxb0IsQ0FBQztBQUNqcUIsSUFBSSxvQkFBb0IsR0FBRywrSEFBK0gsQ0FBQztBQUMzSixJQUFJLDZCQUE2QixHQUFHLGlIQUFpSCxDQUFDO0FBQ3RKLElBQUksU0FBUyxHQUFHLDZTQUE2UyxDQUFDO0FBQzlULElBQUksVUFBVSxHQUFHLGk0Q0FBaTRDLENBQUM7QUFDbjVDLElBQUksT0FBTyxHQUFHLG9PQUFvTyxDQUFDO0FBQ25QLElBQUksWUFBWSxHQUFHLDhTQUE4UyxDQUFDO0FBQ2xVLElBQUksYUFBYSxHQUFHLHNQQUFzUCxDQUFDO0FBQzNRLElBQUksVUFBVSxHQUFHLG1mQUFtZixDQUFDO0FBQ3JnQixJQUFJLE1BQU0sR0FBRyxtR0FBbUcsQ0FBQztBQUNqSCxJQUFJLFdBQVcsR0FBRyxnSEFBZ0gsQ0FBQztBQUNuSSxJQUFJLFVBQVUsR0FBRyx5SUFBeUksQ0FBQztBQUMzSixJQUFJLFlBQVksR0FBRywwT0FBME8sQ0FBQztBQUM5UCxJQUFJLGdCQUFnQixHQUFHLHNSQUFzUixDQUFDO0FBQzlTLElBQUksUUFBUSxHQUFHLDZJQUE2SSxDQUFDO0FBQzdKLElBQUksZUFBZSxHQUFHLHNVQUFzVSxDQUFDO0FBQzdWLElBQUksYUFBYSxHQUFHLG1NQUFtTSxDQUFDO0FBQ3hOLElBQUksaUJBQWlCLEdBQUcsb1FBQW9RLENBQUM7QUFDN1IsSUFBSSxpQkFBaUIsR0FBRyx1UEFBdVAsQ0FBQztBQUNoUixJQUFJLGtCQUFrQixHQUFHLHVQQUF1UCxDQUFDO0FBQ2pSLElBQUksZUFBZSxHQUFHLG9RQUFvUSxDQUFDO0FBQzNSLElBQUksY0FBYyxHQUFHLDJSQUEyUixDQUFDO0FBQ2pULElBQUksY0FBYyxHQUFHLG1mQUFtZixDQUFDO0FBQ3pnQixJQUFJLGFBQWEsR0FBRywwR0FBMEcsQ0FBQztBQUMvSCxJQUFJLGFBQWEsR0FBRyw4UUFBOFEsQ0FBQztBQUNuUyxJQUFJLGFBQWEsR0FBRyx1YkFBdWIsQ0FBQztBQUM1YyxJQUFJLFdBQVcsR0FBRyxzbUNBQXNtQyxDQUFDO0FBQ3puQyxJQUFJLGNBQWMsR0FBRywwSEFBMEgsQ0FBQztBQUNoSixJQUFJLHVCQUF1QixHQUFHLHVJQUF1SSxDQUFDO0FBQ3RLLElBQUksd0JBQXdCLEdBQUcsdUlBQXVJLENBQUM7QUFDdkssSUFBSSxvQkFBb0IsR0FBRywyT0FBMk8sQ0FBQztBQUN2USxJQUFJLG1CQUFtQixHQUFHLDRLQUE0SyxDQUFDO0FBQ3ZNLElBQUksWUFBWSxHQUFHLHdUQUF3VCxDQUFDO0FBQzVVLElBQUksV0FBVyxHQUFHLG1tQkFBbW1CLENBQUM7QUFDdG5CLElBQUksY0FBYyxHQUFHLHdyQkFBd3JCLENBQUM7QUFDOXNCLElBQUksaUJBQWlCLEdBQUcsNkZBQTZGLENBQUM7QUFDdEgsSUFBSSxrQkFBa0IsR0FBRywyUkFBMlIsQ0FBQztBQUNyVCxJQUFJLHFCQUFxQixHQUFHLDJkQUEyZCxDQUFDO0FBQ3hmLElBQUksYUFBYSxHQUFHLHFYQUFxWCxDQUFDO0FBQzFZLElBQUksV0FBVyxHQUFHLGthQUFrYSxDQUFDO0FBQ3JiLElBQUksYUFBYSxHQUFHLGlPQUFpTyxDQUFDO0FBQ3RQLElBQUksaUJBQWlCLEdBQUcsc1dBQXNXLENBQUM7QUFDL1gsSUFBSSxtQkFBbUIsR0FBRyw0Y0FBNGMsQ0FBQztBQUN2ZSxJQUFJLFlBQVksR0FBRyxtY0FBbWMsQ0FBQztBQUN2ZCxJQUFJLGtCQUFrQixHQUFHLG9KQUFvSixDQUFDO0FBQzlLLElBQUksYUFBYSxHQUFHLDBOQUEwTixDQUFDO0FBQy9PLElBQUksZ0JBQWdCLEdBQUcsME1BQTBNLENBQUM7QUFDbE8sSUFBSSxlQUFlLEdBQUcsOFJBQThSLENBQUM7QUFDclQsSUFBSSxrQkFBa0IsR0FBRyxtR0FBbUcsQ0FBQztBQUM3SCxJQUFJLFdBQVcsR0FBRyxzUUFBc1EsQ0FBQztBQUN6UixJQUFJLGNBQWMsR0FBRyx1SEFBdUgsQ0FBQztBQUM3SSxJQUFJLFlBQVksR0FBRyxzT0FBc08sQ0FBQztBQUMxUCxJQUFJLGVBQWUsR0FBRyw4ZUFBOGUsQ0FBQztBQUNyZ0IsSUFBSSxjQUFjLEdBQUcsNFVBQTRVLENBQUM7QUFDbFcsSUFBSSxXQUFXLEdBQUcsb0lBQW9JLENBQUM7QUFDdkosSUFBSSxpQkFBaUIsR0FBRyx1S0FBdUssQ0FBQztBQUNoTSxJQUFJLG9CQUFvQixHQUFHLHVLQUF1SyxDQUFDO0FBQ25NLElBQUkscUJBQXFCLEdBQUcsNEtBQTRLLENBQUM7QUFDek0sSUFBSSxpQkFBaUIsR0FBRyxzT0FBc08sQ0FBQztBQUMvUCxJQUFJLGNBQWMsR0FBRyx1akJBQXVqQixDQUFDO0FBQzdrQixJQUFJLGdCQUFnQixHQUFHLGdNQUFnTSxDQUFDO0FBQ3hOLElBQUksaUJBQWlCLEdBQUcsb0hBQW9ILENBQUM7QUFDN0ksSUFBSSxZQUFZLEdBQUcsNFNBQTRTLENBQUM7QUFDaFUsSUFBSSxZQUFZLEdBQUcsK2dCQUErZ0IsQ0FBQztBQUNuaUIsSUFBSSxjQUFjLEdBQUcsNFFBQTRRLENBQUM7QUFDbFMsSUFBSSxTQUFTLEdBQUcsb0dBQW9HLENBQUM7QUFDckgsSUFBSSxnQkFBZ0IsR0FBRyxtSEFBbUgsQ0FBQztBQUMzSSxJQUFJLGtCQUFrQixHQUFHLGdMQUFnTCxDQUFDO0FBQzFNLElBQUksa0JBQWtCLEdBQUcsb0tBQW9LLENBQUM7QUFDOUwsSUFBSSxhQUFhLEdBQUcsNk5BQTZOLENBQUM7QUFDbFAsSUFBSSxPQUFPLEdBQUcsOFJBQThSLENBQUM7QUFDN1MsSUFBSSxNQUFNLEdBQUcsNlVBQTZVLENBQUM7QUFDM1YsSUFBSSxlQUFlLEdBQUcsa1pBQWtaLENBQUM7QUFDemEsSUFBSSxzQkFBc0IsR0FBRyxna0JBQWdrQixDQUFDO0FBQzlsQixJQUFJLGVBQWUsR0FBRyxtWkFBbVosQ0FBQztBQUMxYSxJQUFJLHNCQUFzQixHQUFHLGdrQkFBZ2tCLENBQUM7QUFDOWxCLElBQUksZ0JBQWdCLEdBQUcsbVpBQW1aLENBQUM7QUFDM2EsSUFBSSx1QkFBdUIsR0FBRyxna0JBQWdrQixDQUFDO0FBQy9sQixJQUFJLGFBQWEsR0FBRyxrWkFBa1osQ0FBQztBQUN2YSxJQUFJLG9CQUFvQixHQUFHLGdrQkFBZ2tCLENBQUM7QUFDNWxCLElBQUksV0FBVyxHQUFHLG9kQUFvZCxDQUFDO0FBQ3ZlLElBQUksV0FBVyxHQUFHLG1pQkFBbWlCLENBQUM7QUFDdGpCLElBQUksa0JBQWtCLEdBQUcseWtCQUF5a0IsQ0FBQztBQUNubUIsSUFBSSxXQUFXLEdBQUcsc2FBQXNhLENBQUM7QUFDemIsSUFBSSxrQkFBa0IsR0FBRyxxakJBQXFqQixDQUFDO0FBQy9rQixJQUFJLGNBQWMsR0FBRyxtZEFBbWQsQ0FBQztBQUN6ZSxJQUFJLHFCQUFxQixHQUFHLGlZQUFpWSxDQUFDO0FBQzlaLElBQUksU0FBUyxHQUFHLHlTQUF5UyxDQUFDO0FBQzFULElBQUksZ0JBQWdCLEdBQUcsaWNBQWljLENBQUM7QUFDemQsSUFBSSxhQUFhLEdBQUcseVBBQXlQLENBQUM7QUFDOVEsSUFBSSxVQUFVLEdBQUcsMGJBQTBiLENBQUM7QUFDNWMsSUFBSSxpQkFBaUIsR0FBRywrYkFBK2IsQ0FBQztBQUN4ZCxJQUFJLFlBQVksR0FBRyx3aEJBQXdoQixDQUFDO0FBQzVpQixJQUFJLG1CQUFtQixHQUFHLHFoQkFBcWhCLENBQUM7QUFDaGpCLElBQUksVUFBVSxHQUFHLDJTQUEyUyxDQUFDO0FBQzdULElBQUksaUJBQWlCLEdBQUcsNldBQTZXLENBQUM7QUFDdFksSUFBSSxXQUFXLEdBQUcsc2NBQXNjLENBQUM7QUFDemQsSUFBSSxPQUFPLEdBQUcsb1ZBQW9WLENBQUM7QUFDblcsSUFBSSxjQUFjLEdBQUcsdVpBQXVaLENBQUM7QUFDN2EsSUFBSSxZQUFZLEdBQUcsbVNBQW1TLENBQUM7QUFDdlQsSUFBSSxjQUFjLEdBQUcsZ0tBQWdLLENBQUM7QUFDdEwsSUFBSSxTQUFTLEdBQUcsK1lBQStZLENBQUM7QUFDaGEsSUFBSSxnQkFBZ0IsR0FBRyxpZUFBaWUsQ0FBQztBQUN6ZixJQUFJLGdCQUFnQixHQUFHLHlXQUF5VyxDQUFDO0FBQ2pZLElBQUksT0FBTyxHQUFHLDRYQUE0WCxDQUFDO0FBQzNZLElBQUksTUFBTSxHQUFHLG1XQUFtVyxDQUFDO0FBQ2pYLElBQUksYUFBYSxHQUFHLHVkQUF1ZCxDQUFDO0FBQzVlLElBQUksUUFBUSxHQUFHLGlNQUFpTSxDQUFDO0FBQ2pOLElBQUksYUFBYSxHQUFHLGtZQUFrWSxDQUFDO0FBQ3ZaLElBQUksV0FBVyxHQUFHLDJRQUEyUSxDQUFDO0FBQzlSLElBQUksWUFBWSxHQUFHLHFUQUFxVCxDQUFDO0FBQ3pVLElBQUksYUFBYSxHQUFHLHNHQUFzRyxDQUFDO0FBQzNILElBQUkseUJBQXlCLEdBQUcsa1pBQWtaLENBQUM7QUFDbmIsSUFBSSxnQkFBZ0IsR0FBRywySUFBMkksQ0FBQztBQUNuSyxJQUFJLG9CQUFvQixHQUFHLDZVQUE2VSxDQUFDO0FBQ3pXLElBQUksdUJBQXVCLEdBQUcseWFBQXlhLENBQUM7QUFDeGMsSUFBSSxrQkFBa0IsR0FBRyw0UkFBNFIsQ0FBQztBQUN0VCxJQUFJLGtCQUFrQixHQUFHLHdLQUF3SyxDQUFDO0FBQ2xNLElBQUksZ0JBQWdCLEdBQUcsMk5BQTJOLENBQUM7QUFDblAsSUFBSSxrQkFBa0IsR0FBRyw2SUFBNkksQ0FBQztBQUN2SyxJQUFJLGlCQUFpQixHQUFHLDJIQUEySCxDQUFDO0FBQ3BKLElBQUksaUJBQWlCLEdBQUcsdUlBQXVJLENBQUM7QUFDaEssSUFBSSxxQkFBcUIsR0FBRywrVkFBK1YsQ0FBQztBQUM1WCxJQUFJLHdCQUF3QixHQUFHLDZKQUE2SixDQUFDO0FBQzdMLElBQUksb0JBQW9CLEdBQUcseUVBQXlFLENBQUM7QUFDckcsSUFBSSxTQUFTLEdBQUcsc2dCQUFzZ0IsQ0FBQztBQUN2aEIsSUFBSSxhQUFhLEdBQUcsdWJBQXViLENBQUM7QUFDNWMsSUFBSSxPQUFPLEdBQUcsMklBQTJJLENBQUM7QUFDMUosSUFBSSxZQUFZLEdBQUcsMElBQTBJLENBQUM7QUFDOUosSUFBSSxVQUFVLEdBQUcscUVBQXFFLENBQUM7QUFDdkYsSUFBSSxXQUFXLEdBQUcsa1FBQWtRLENBQUM7QUFDclIsSUFBSSxnQkFBZ0IsR0FBRyxvR0FBb0csQ0FBQztBQUM1SCxJQUFJLGNBQWMsR0FBRyw4VUFBOFUsQ0FBQztBQUNwVyxJQUFJLE9BQU8sR0FBRyxpREFBaUQsQ0FBQztBQUNoRSxJQUFJLGNBQWMsR0FBRyw4S0FBOEssQ0FBQztBQUNwTSxJQUFJLFVBQVUsR0FBRywrSEFBK0gsQ0FBQztBQUNqSixJQUFJLGVBQWUsR0FBRywyUUFBMlEsQ0FBQztBQUNsUyxJQUFJLHNCQUFzQixHQUFHLDRTQUE0UyxDQUFDO0FBQzFVLElBQUksZUFBZSxHQUFHLHFPQUFxTyxDQUFDO0FBQzVQLElBQUksc0JBQXNCLEdBQUcsOFBBQThQLENBQUM7QUFDNVIsSUFBSSxrQkFBa0IsR0FBRyw2S0FBNkssQ0FBQztBQUN2TSxJQUFJLHlCQUF5QixHQUFHLHlMQUF5TCxDQUFDO0FBQzFOLElBQUksaUJBQWlCLEdBQUcsZ0tBQWdLLENBQUM7QUFDekwsSUFBSSxjQUFjLEdBQUcsNlBBQTZQLENBQUM7QUFDblIsSUFBSSxxQkFBcUIsR0FBRyxzUkFBc1IsQ0FBQztBQUNuVCxJQUFJLGdCQUFnQixHQUFHLG1XQUFtVyxDQUFDO0FBQzNYLElBQUksdUJBQXVCLEdBQUcsNFhBQTRYLENBQUM7QUFDM1osSUFBSSxnQkFBZ0IsR0FBRyw0ZEFBNGQsQ0FBQztBQUNwZixJQUFJLHVCQUF1QixHQUFHLHlmQUF5ZixDQUFDO0FBQ3hoQixJQUFJLGtCQUFrQixHQUFHLDJMQUEyTCxDQUFDO0FBQ3JOLElBQUksYUFBYSxHQUFHLGtZQUFrWSxDQUFDO0FBQ3ZaLElBQUksYUFBYSxHQUFHLCtJQUErSSxDQUFDO0FBQ3BLLElBQUksWUFBWSxHQUFHLGlDQUFpQyxDQUFDO0FBQ3JELElBQUksY0FBYyxHQUFHLDhEQUE4RCxDQUFDO0FBQ3BGLElBQUksZUFBZSxHQUFHLHNTQUFzUyxDQUFDO0FBQzdULElBQUksa0JBQWtCLEdBQUcsOFVBQThVLENBQUM7QUFDeFcsSUFBSSxVQUFVLEdBQUcsNlJBQTZSLENBQUM7QUFDL1MsSUFBSSxhQUFhLEdBQUcsbU5BQW1OLENBQUM7QUFDeE8sSUFBSSxVQUFVLEdBQUcsOFFBQThRLENBQUM7QUFDaFMsSUFBSSxpQkFBaUIsR0FBRyxrcEJBQWtwQixDQUFDO0FBQzNxQixJQUFJLGNBQWMsR0FBRyxzRkFBc0YsQ0FBQztBQUM1RyxJQUFJLG1CQUFtQixHQUFHLDhNQUE4TSxDQUFDO0FBQ3pPLElBQUkseUJBQXlCLEdBQUcsZ1BBQWdQLENBQUM7QUFDalIsSUFBSSx1QkFBdUIsR0FBRyw2UEFBNlAsQ0FBQztBQUM1UixJQUFJLGtCQUFrQixHQUFHLGtGQUFrRixDQUFDO0FBQzVHLElBQUksbUJBQW1CLEdBQUcsK1hBQStYLENBQUM7QUFDMVosSUFBSSxpQkFBaUIsR0FBRyx1RkFBdUYsQ0FBQztBQUNoSCxJQUFJLG1CQUFtQixHQUFHLHdNQUF3TSxDQUFDO0FBQ25PLElBQUksaUJBQWlCLEdBQUcsbVFBQW1RLENBQUM7QUFDNVIsSUFBSSxrQkFBa0IsR0FBRyw0TkFBNE4sQ0FBQztBQUN0UCxJQUFJLGFBQWEsR0FBRyw0WEFBNFgsQ0FBQztBQUNqWixJQUFJLGdCQUFnQixHQUFHLDJYQUEyWCxDQUFDO0FBQ25aLElBQUksZ0JBQWdCLEdBQUcsK2dCQUErZ0IsQ0FBQztBQUN2aUIsSUFBSSx1QkFBdUIsR0FBRyxrakNBQWtqQyxDQUFDO0FBQ2psQyxJQUFJLFlBQVksR0FBRywyUEFBMlAsQ0FBQztBQUMvUSxJQUFJLG1CQUFtQixHQUFHLHVSQUF1UixDQUFDO0FBQ2xULElBQUksVUFBVSxHQUFHLGlRQUFpUSxDQUFDO0FBQ25SLElBQUksaUJBQWlCLEdBQUcsd1JBQXdSLENBQUM7QUFDalQsSUFBSSxlQUFlLEdBQUcseWJBQXliLENBQUM7QUFDaGQsSUFBSSxTQUFTLEdBQUcsb1FBQW9RLENBQUM7QUFDclIsSUFBSSxnQkFBZ0IsR0FBRyxvVkFBb1YsQ0FBQztBQUM1VyxJQUFJLHFCQUFxQixHQUFHLDROQUE0TixDQUFDO0FBQ3pQLElBQUksNEJBQTRCLEdBQUcsb1ZBQW9WLENBQUM7QUFDeFgsSUFBSSxnQkFBZ0IsR0FBRyxtUkFBbVIsQ0FBQztBQUMzUyxJQUFJLGdCQUFnQixHQUFHLCtjQUErYyxDQUFDO0FBQ3ZlLElBQUksdUJBQXVCLEdBQUcsb2pCQUFvakIsQ0FBQztBQUNubEIsSUFBSSxNQUFNLEdBQUcsdUNBQXVDLENBQUM7QUFDckQsSUFBSSxRQUFRLEdBQUcsMklBQTJJLENBQUM7QUFDM0osSUFBSSxZQUFZLEdBQUcsc1FBQXNRLENBQUM7QUFDMVIsSUFBSSxXQUFXLEdBQUcsbU9BQW1PLENBQUM7QUFDdFAsSUFBSSxnQkFBZ0IsR0FBRyxxUUFBcVEsQ0FBQztBQUM3UixJQUFJLHVCQUF1QixHQUFHLHFSQUFxUixDQUFDO0FBQ3BULElBQUksZ0JBQWdCLEdBQUcsK1NBQStTLENBQUM7QUFDdlUsSUFBSSx1QkFBdUIsR0FBRyw2VEFBNlQsQ0FBQztBQUM1VixJQUFJLGdCQUFnQixHQUFHLHdSQUF3UixDQUFDO0FBQ2hULElBQUksdUJBQXVCLEdBQUcscVhBQXFYLENBQUM7QUFDcFosSUFBSSxlQUFlLEdBQUcsaWhCQUFpaEIsQ0FBQztBQUN4aUIsSUFBSSxzQkFBc0IsR0FBRyx3akJBQXdqQixDQUFDO0FBQ3RsQixJQUFJLGdCQUFnQixHQUFHLHFQQUFxUCxDQUFDO0FBQzdRLElBQUksdUJBQXVCLEdBQUcscVFBQXFRLENBQUM7QUFDcFMsSUFBSSxrQkFBa0IsR0FBRyxtUEFBbVAsQ0FBQztBQUM3USxJQUFJLGVBQWUsR0FBRyw0UUFBNFEsQ0FBQztBQUNuUyxJQUFJLHNCQUFzQixHQUFHLDRSQUE0UixDQUFDO0FBQzFULElBQUksaUJBQWlCLEdBQUcsNFdBQTRXLENBQUM7QUFDclksSUFBSSx3QkFBd0IsR0FBRywrWEFBK1gsQ0FBQztBQUMvWixJQUFJLGVBQWUsR0FBRyxxUUFBcVEsQ0FBQztBQUM1UixJQUFJLHNCQUFzQixHQUFHLDRTQUE0UyxDQUFDO0FBQzFVLElBQUksUUFBUSxHQUFHLHdNQUF3TSxDQUFDO0FBQ3hOLElBQUksVUFBVSxHQUFHLGdsRkFBZ2xGLENBQUM7QUFDbG1GLElBQUksU0FBUyxHQUFHLG82RkFBbzZGLENBQUM7QUFDcjdGLElBQUksV0FBVyxHQUFHLG1VQUFtVSxDQUFDO0FBQ3RWLElBQUksa0JBQWtCLEdBQUcsMGVBQTBlLENBQUM7QUFDcGdCLElBQUksZUFBZSxHQUFHLHVRQUF1USxDQUFDO0FBQzlSLElBQUksWUFBWSxHQUFHLGdLQUFnSyxDQUFDO0FBQ3BMLElBQUksaUJBQWlCLEdBQUcsaUlBQWlJLENBQUM7QUFDMUosSUFBSSxnQkFBZ0IsR0FBRyxnRUFBZ0UsQ0FBQztBQUN4RixJQUFJLFlBQVksR0FBRyx5YUFBeWEsQ0FBQztBQUM3YixJQUFJLFVBQVUsR0FBRyxrSkFBa0osQ0FBQztBQUNwSyxJQUFJLGFBQWEsR0FBRywwUkFBMFIsQ0FBQztBQUMvUyxJQUFJLGNBQWMsR0FBRyxnUEFBZ1AsQ0FBQztBQUN0USxJQUFJLGVBQWUsR0FBRywrSUFBK0ksQ0FBQztBQUN0SyxJQUFJLGtCQUFrQixHQUFHLDJJQUEySSxDQUFDO0FBQ3JLLElBQUkseUJBQXlCLEdBQUcsaU5BQWlOLENBQUM7QUFDbFAsSUFBSSxzQkFBc0IsR0FBRyxzTkFBc04sQ0FBQztBQUNwUCxJQUFJLFNBQVMsR0FBRyxnT0FBZ08sQ0FBQztBQUNqUCxJQUFJLFVBQVUsR0FBRyxtWEFBbVgsQ0FBQztBQUNyWSxJQUFJLGlCQUFpQixHQUFHLDZkQUE2ZCxDQUFDO0FBQ3RmLElBQUksUUFBUSxHQUFHLGdXQUFnVyxDQUFDO0FBQ2hYLElBQUksVUFBVSxHQUFHLDJGQUEyRixDQUFDO0FBQzdHLElBQUksaUJBQWlCLEdBQUcsNlBBQTZQLENBQUM7QUFDdFIsSUFBSSxlQUFlLEdBQUcscUxBQXFMLENBQUM7QUFDNU0sSUFBSSxzQkFBc0IsR0FBRyxxT0FBcU8sQ0FBQztBQUNuUSxJQUFJLGNBQWMsR0FBRyxvUkFBb1IsQ0FBQztBQUMxUyxJQUFJLHFCQUFxQixHQUFHLHlUQUF5VCxDQUFDO0FBQ3RWLElBQUksZUFBZSxHQUFHLGtMQUFrTCxDQUFDO0FBQ3pNLElBQUksc0JBQXNCLEdBQUcsZ1BBQWdQLENBQUM7QUFDOVEsSUFBSSxlQUFlLEdBQUcsZ0lBQWdJLENBQUM7QUFDdkosSUFBSSxzQkFBc0IsR0FBRyx1S0FBdUssQ0FBQztBQUNyTSxJQUFJLGlCQUFpQixHQUFHLGdJQUFnSSxDQUFDO0FBQ3pKLElBQUksY0FBYyxHQUFHLGdJQUFnSSxDQUFDO0FBQ3RKLElBQUkscUJBQXFCLEdBQUcscUtBQXFLLENBQUM7QUFDbE0sSUFBSSxnQkFBZ0IsR0FBRyx1UEFBdVAsQ0FBQztBQUMvUSxJQUFJLHVCQUF1QixHQUFHLDZSQUE2UixDQUFDO0FBQzVULElBQUksY0FBYyxHQUFHLHNJQUFzSSxDQUFDO0FBQzVKLElBQUkscUJBQXFCLEdBQUcsNkpBQTZKLENBQUM7QUFDMUwsSUFBSSxRQUFRLEdBQUcsZ0xBQWdMLENBQUM7QUFDaE0sSUFBSSxlQUFlLEdBQUcsdWRBQXVkLENBQUM7QUFDOWUsSUFBSSxhQUFhLEdBQUcsMExBQTBMLENBQUM7QUFDL00sSUFBSSxxQkFBcUIsR0FBRyw4UEFBOFAsQ0FBQztBQUMzUixJQUFJLGtCQUFrQixHQUFHLHdVQUF3VSxDQUFDO0FBQ2xXLElBQUksUUFBUSxHQUFHLDZuQkFBNm5CLENBQUM7QUFDN29CLElBQUksV0FBVyxHQUFHLG1ZQUFtWSxDQUFDO0FBQ3RaLElBQUksVUFBVSxHQUFHLDhSQUE4UixDQUFDO0FBQ2hULElBQUksYUFBYSxHQUFHLHdNQUF3TSxDQUFDO0FBQzdOLElBQUksV0FBVyxHQUFHLDJ6QkFBMnpCLENBQUM7QUFDOTBCLElBQUksYUFBYSxHQUFHLGdQQUFnUCxDQUFDO0FBQ3JRLElBQUksWUFBWSxHQUFHLHFQQUFxUCxDQUFDO0FBQ3pRLElBQUksV0FBVyxHQUFHLDRGQUE0RixDQUFDO0FBQy9HLElBQUksaUJBQWlCLEdBQUcsNFZBQTRWLENBQUM7QUFDclgsSUFBSSx3QkFBd0IsR0FBRyxrVkFBa1YsQ0FBQztBQUNsWCxJQUFJLGdCQUFnQixHQUFHLHFOQUFxTixDQUFDO0FBQzdPLElBQUksdUJBQXVCLEdBQUcsK05BQStOLENBQUM7QUFDOVAsSUFBSSxrQkFBa0IsR0FBRyx5R0FBeUcsQ0FBQztBQUNuSSxJQUFJLGVBQWUsR0FBRywrS0FBK0ssQ0FBQztBQUN0TSxJQUFJLHNCQUFzQixHQUFHLG1KQUFtSixDQUFDO0FBQ2pMLElBQUksaUJBQWlCLEdBQUcsNFFBQTRRLENBQUM7QUFDclMsSUFBSSx3QkFBd0IsR0FBRyw2UEFBNlAsQ0FBQztBQUM3UixJQUFJLGlCQUFpQixHQUFHLGlPQUFpTyxDQUFDO0FBQzFQLElBQUksd0JBQXdCLEdBQUcsc1FBQXNRLENBQUM7QUFDdFMsSUFBSSxhQUFhLEdBQUcsb1JBQW9SLENBQUM7QUFDelMsSUFBSSxXQUFXLEdBQUcsNkhBQTZILENBQUM7QUFDaEosSUFBSSxlQUFlLEdBQUcsb1hBQW9YLENBQUM7QUFDM1ksSUFBSSxVQUFVLEdBQUcsd2VBQXdlLENBQUM7QUFDMWYsSUFBSSxpQkFBaUIsR0FBRyx5L0JBQXkvQixDQUFDO0FBQ2xoQyxJQUFJLFlBQVksR0FBRyxpSkFBaUosQ0FBQztBQUNySyxJQUFJLGNBQWMsR0FBRyw2RUFBNkUsQ0FBQztBQUNuRyxJQUFJLGVBQWUsR0FBRyx5Z0JBQXlnQixDQUFDO0FBQ2hpQixJQUFJLFFBQVEsR0FBRyx5V0FBeVcsQ0FBQztBQUN6WCxJQUFJLFdBQVcsR0FBRyx1a0JBQXVrQixDQUFDO0FBQzFsQixJQUFJLG9CQUFvQixHQUFHLGlMQUFpTCxDQUFDO0FBQzdNLElBQUksd0JBQXdCLEdBQUcsa01BQWtNLENBQUM7QUFDbE8sSUFBSSw0QkFBNEIsR0FBRyxrTEFBa0wsQ0FBQztBQUN0TixJQUFJLDJCQUEyQixHQUFHLG1LQUFtSyxDQUFDO0FBQ3RNLElBQUksZUFBZSxHQUFHLDZOQUE2TixDQUFDO0FBQ3BQLElBQUksT0FBTyxHQUFHLG1VQUFtVSxDQUFDO0FBQ2xWLElBQUksV0FBVyxHQUFHLGdRQUFnUSxDQUFDO0FBQ25SLElBQUksYUFBYSxHQUFHLDZOQUE2TixDQUFDO0FBQ2xQLElBQUksa0JBQWtCLEdBQUcsdU9BQXVPLENBQUM7QUFDalEsSUFBSSxXQUFXLEdBQUcsK0pBQStKLENBQUM7QUFDbEwsSUFBSSxlQUFlLEdBQUcsbUVBQW1FLENBQUM7QUFDMUYsSUFBSSxlQUFlLEdBQUcsc0VBQXNFLENBQUM7QUFDN0YsSUFBSSxnQkFBZ0IsR0FBRyw2RUFBNkUsQ0FBQztBQUNyRyxJQUFJLGFBQWEsR0FBRyxvRUFBb0UsQ0FBQztBQUN6RixJQUFJLG9CQUFvQixHQUFHLG9hQUFvYSxDQUFDO0FBQ2hjLElBQUksOEJBQThCLEdBQUcseVlBQXlZLENBQUM7QUFDL2EsSUFBSSwyQkFBMkIsR0FBRyw0bEJBQTRsQixDQUFDO0FBQy9uQixJQUFJLGdCQUFnQixHQUFHLDhmQUE4ZixDQUFDO0FBQ3RoQixJQUFJLGNBQWMsR0FBRyx1Y0FBdWMsQ0FBQztBQUM3ZCxJQUFJLGtCQUFrQixHQUFHLGdZQUFnWSxDQUFDO0FBQzFaLElBQUksYUFBYSxHQUFHLHltQkFBeW1CLENBQUM7QUFDOW5CLElBQUksbUJBQW1CLEdBQUcsc1lBQXNZLENBQUM7QUFDamEsSUFBSSxZQUFZLEdBQUcsZ1VBQWdVLENBQUM7QUFDcFYsSUFBSSxlQUFlLEdBQUcsOGJBQThiLENBQUM7QUFDcmQsSUFBSSxvQkFBb0IsR0FBRywrWEFBK1gsQ0FBQztBQUMzWixJQUFJLFdBQVcsR0FBRyxnR0FBZ0csQ0FBQztBQUNuSCxJQUFJLGtCQUFrQixHQUFHLDhHQUE4RyxDQUFDO0FBQ3hJLElBQUksT0FBTyxHQUFHLDBEQUEwRCxDQUFDO0FBQ3pFLElBQUksWUFBWSxHQUFHLHVGQUF1RixDQUFDO0FBQzNHLElBQUksV0FBVyxHQUFHLGdHQUFnRyxDQUFDO0FBQ25ILElBQUksWUFBWSxHQUFHLHVFQUF1RSxDQUFDO0FBQzNGLElBQUksV0FBVyxHQUFHLDZGQUE2RixDQUFDO0FBQ2hILElBQUksYUFBYSxHQUFHLG1MQUFtTCxDQUFDO0FBQ3hNLElBQUksZ0JBQWdCLEdBQUcsa0hBQWtILENBQUM7QUFDMUksSUFBSSxPQUFPLEdBQUcsMlBBQTJQLENBQUM7QUFDMVEsSUFBSSxjQUFjLEdBQUcsaWZBQWlmLENBQUM7QUFDdmdCLElBQUksU0FBUyxHQUFHLHlZQUF5WSxDQUFDO0FBQzFaLElBQUksZUFBZSxHQUFHLGtHQUFrRyxDQUFDO0FBQ3pILElBQUksa0JBQWtCLEdBQUcsa0NBQWtDLENBQUM7QUFDNUQsSUFBSSxhQUFhLEdBQUcsZ0dBQWdHLENBQUM7QUFDckgsSUFBSSxXQUFXLEdBQUcsZUFBZSxDQUFDO0FBQ2xDLElBQUksa0JBQWtCLEdBQUcsa0NBQWtDLENBQUM7QUFDNUQsSUFBSSxlQUFlLEdBQUcsNkRBQTZELENBQUM7QUFDcEYsSUFBSSxXQUFXLEdBQUcsaURBQWlELENBQUM7QUFDcEUsSUFBSSxTQUFTLEdBQUcsZ09BQWdPLENBQUM7QUFDalAsSUFBSSxjQUFjLEdBQUcsd0tBQXdLLENBQUM7QUFDOUwsSUFBSSxlQUFlLEdBQUcsaVRBQWlULENBQUM7QUFDeFUsSUFBSSxnQkFBZ0IsR0FBRyxpU0FBaVMsQ0FBQztBQUN6VCxJQUFJLGdCQUFnQixHQUFHLGtPQUFrTyxDQUFDO0FBQzFQLElBQUksdUJBQXVCLEdBQUcscVJBQXFSLENBQUM7QUFDcFQsSUFBSSxRQUFRLEdBQUcsc1VBQXNVLENBQUM7QUFDdFYsSUFBSSxhQUFhLEdBQUcsNFhBQTRYLENBQUM7QUFDalosSUFBSSxvQkFBb0IsR0FBRyxxaEJBQXFoQixDQUFDO0FBQ2pqQixJQUFJLGdCQUFnQixHQUFHLHlWQUF5VixDQUFDO0FBQ2pYLElBQUksdUJBQXVCLEdBQUcsMGdCQUEwZ0IsQ0FBQztBQUN6aUIsSUFBSSxZQUFZLEdBQUcsMFlBQTBZLENBQUM7QUFDOVosSUFBSSxtQkFBbUIsR0FBRyx1akJBQXVqQixDQUFDO0FBQ2xsQixJQUFJLGVBQWUsR0FBRyxxZUFBcWUsQ0FBQztBQUM1ZixJQUFJLGVBQWUsR0FBRyx3SkFBd0osQ0FBQztBQUMvSyxJQUFJLFVBQVUsR0FBRywyZEFBMmQsQ0FBQztBQUM3ZSxJQUFJLGFBQWEsR0FBRyw2UkFBNlIsQ0FBQztBQUNsVCxJQUFJLG9CQUFvQixHQUFHLGliQUFpYixDQUFDO0FBQzdjLElBQUksVUFBVSxHQUFHLDBTQUEwUyxDQUFDO0FBQzVULElBQUksaUJBQWlCLEdBQUcsMllBQTJZLENBQUM7QUFDcGEsSUFBSSxjQUFjLEdBQUcsd2pCQUF3akIsQ0FBQztBQUM5a0IsSUFBSSxtQkFBbUIsR0FBRyx1bEJBQXVsQixDQUFDO0FBQ2xuQixJQUFJLGlCQUFpQixHQUFHLHFuQkFBcW5CLENBQUM7QUFDOW9CLElBQUksT0FBTyxHQUFHLCtIQUErSCxDQUFDO0FBQzlJLElBQUksY0FBYyxHQUFHLDJZQUEyWSxDQUFDO0FBQ2phLElBQUksZUFBZSxHQUFHLGdJQUFnSSxDQUFDO0FBQ3ZKLElBQUksc0JBQXNCLEdBQUcscVhBQXFYLENBQUM7QUFDblosSUFBSSxTQUFTLEdBQUcsOGpCQUE4akIsQ0FBQztBQUMva0IsSUFBSSxZQUFZLEdBQUcsb0pBQW9KLENBQUM7QUFDeEssSUFBSSxtQkFBbUIsR0FBRyx3UUFBd1EsQ0FBQztBQUNuUyxJQUFJLFNBQVMsR0FBRyxvOEJBQW84QixDQUFDO0FBQ3I5QixJQUFJLFNBQVMsR0FBRyxtTEFBbUwsQ0FBQztBQUNwTSxJQUFJLFVBQVUsR0FBRyxvb0JBQW9vQixDQUFDO0FBQ3RwQixJQUFJLGlCQUFpQixHQUFHLDJJQUEySSxDQUFDO0FBQ3BLLElBQUksMEJBQTBCLEdBQUcsMkxBQTJMLENBQUM7QUFDN04sSUFBSSxhQUFhLEdBQUcsd2ZBQXdmLENBQUM7QUFDN2dCLElBQUksVUFBVSxHQUFHLG00QkFBbTRCLENBQUM7QUFDcjVCLElBQUksU0FBUyxHQUFHLHVzQ0FBdXNDLENBQUM7QUFDeHRDLElBQUksTUFBTSxHQUFHLHdKQUF3SixDQUFDO0FBQ3RLLElBQUksYUFBYSxHQUFHLDZRQUE2USxDQUFDO0FBQ2xTLElBQUksc0JBQXNCLEdBQUcsd05BQXdOLENBQUM7QUFDdFAsSUFBSSxVQUFVLEdBQUcsNFdBQTRXLENBQUM7QUFDOVgsSUFBSSxXQUFXLEdBQUcseUhBQXlILENBQUM7QUFDNUksSUFBSSxpQkFBaUIsR0FBRyx1S0FBdUssQ0FBQztBQUNoTSxJQUFJLHdCQUF3QixHQUFHLGtNQUFrTSxDQUFDO0FBQ2xPLElBQUksd0JBQXdCLEdBQUcsd09BQXdPLENBQUM7QUFDeFEsSUFBSSxrQkFBa0IsR0FBRyxpTEFBaUwsQ0FBQztBQUMzTSxJQUFJLE9BQU8sR0FBRyw0SkFBNEosQ0FBQztBQUMzSyxJQUFJLGNBQWMsR0FBRyxtTEFBbUwsQ0FBQztBQUN6TSxJQUFJLHVCQUF1QixHQUFHLHVIQUF1SCxDQUFDO0FBQ3RKLElBQUkscUJBQXFCLEdBQUcsa0lBQWtJLENBQUM7QUFDL0osSUFBSSx1QkFBdUIsR0FBRyxtSEFBbUgsQ0FBQztBQUNsSixJQUFJLHFCQUFxQixHQUFHLDRIQUE0SCxDQUFDO0FBQ3pKLElBQUksVUFBVSxHQUFHLHdOQUF3TixDQUFDO0FBQzFPLElBQUksVUFBVSxHQUFHLHU3Q0FBdTdDLENBQUM7QUFDejhDLElBQUksVUFBVSxHQUFHLGd0QkFBZ3RCLENBQUM7QUFDbHVCLElBQUksaUJBQWlCLEdBQUcsZ0tBQWdLLENBQUM7QUFDekwsSUFBSSxXQUFXLEdBQUcseVNBQXlTLENBQUM7QUFDNVQsSUFBSSxRQUFRLEdBQUcsd1FBQXdRLENBQUM7QUFDeFIsSUFBSSxTQUFTLEdBQUcsK21DQUErbUMsQ0FBQztBQUNob0MsSUFBSSxVQUFVLEdBQUcseWpDQUF5akMsQ0FBQztBQUMza0MsSUFBSSxTQUFTLEdBQUcsK1VBQStVLENBQUM7QUFDaFcsSUFBSSxTQUFTLEdBQUcsZ0RBQWdELENBQUM7QUFDakUsSUFBSSxhQUFhLEdBQUcsa1JBQWtSLENBQUM7QUFDdlMsSUFBSSxvQkFBb0IsR0FBRyx1VEFBdVQsQ0FBQztBQUNuVixJQUFJLGlCQUFpQixHQUFHLCtEQUErRCxDQUFDO0FBQ3hGLElBQUksZ0JBQWdCLEdBQUcsME5BQTBOLENBQUM7QUFDbFAsSUFBSSx1QkFBdUIsR0FBRyw2TkFBNk4sQ0FBQztBQUM1UCxJQUFJLFlBQVksR0FBRyxrSkFBa0osQ0FBQztBQUN0SyxJQUFJLG1CQUFtQixHQUFHLHlNQUF5TSxDQUFDO0FBQ3BPLElBQUksZ0JBQWdCLEdBQUcscUZBQXFGLENBQUM7QUFDN0csSUFBSSxNQUFNLEdBQUcseVRBQXlULENBQUM7QUFDdlUsSUFBSSxnQkFBZ0IsR0FBRyw4bUJBQThtQixDQUFDO0FBQ3RvQixJQUFJLHVCQUF1QixHQUFHLHd1QkFBd3VCLENBQUM7QUFDdndCLElBQUksVUFBVSxHQUFHLGtIQUFrSCxDQUFDO0FBQ3BJLElBQUksUUFBUSxHQUFHLDBJQUEwSSxDQUFDO0FBQzFKLElBQUksY0FBYyxHQUFHLG9GQUFvRixDQUFDO0FBQzFHLElBQUksWUFBWSxHQUFHLHlGQUF5RixDQUFDO0FBQzdHLElBQUksZUFBZSxHQUFHLDhYQUE4WCxDQUFDO0FBQ3JaLElBQUksYUFBYSxHQUFHLDJWQUEyVixDQUFDO0FBQ2hYLElBQUksU0FBUyxHQUFHLGlTQUFpUyxDQUFDO0FBQ2xULElBQUksZ0JBQWdCLEdBQUcsd0VBQXdFLENBQUM7QUFDaEcsSUFBSSxjQUFjLEdBQUcsb1VBQW9VLENBQUM7QUFDMVYsSUFBSSxXQUFXLEdBQUcscVlBQXFZLENBQUM7QUFDeFosSUFBSSxjQUFjLEdBQUcsa1hBQWtYLENBQUM7QUFDeFksSUFBSSxxQkFBcUIsR0FBRyw0UEFBNFAsQ0FBQztBQUN6UixJQUFJLHFCQUFxQixHQUFHLG9QQUFvUCxDQUFDO0FBQ2pSLElBQUksZUFBZSxHQUFHLGtUQUFrVCxDQUFDO0FBQ3pVLElBQUksZUFBZSxHQUFHLHNZQUFzWSxDQUFDO0FBQzdaLElBQUksc0JBQXNCLEdBQUcsOE9BQThPLENBQUM7QUFDNVEsSUFBSSxnQkFBZ0IsR0FBRyxvWEFBb1gsQ0FBQztBQUM1WSxJQUFJLGNBQWMsR0FBRywybEJBQTJsQixDQUFDO0FBQ2puQixJQUFJLG1CQUFtQixHQUFHLDBUQUEwVCxDQUFDO0FBQ3JWLElBQUkscUJBQXFCLEdBQUcsK1VBQStVLENBQUM7QUFDNVcsSUFBSSxxQkFBcUIsR0FBRyx5VkFBeVYsQ0FBQztBQUN0WCxJQUFJLGdCQUFnQixHQUFHLHdTQUF3UyxDQUFDO0FBQ2hVLElBQUkscUJBQXFCLEdBQUcsMGRBQTBkLENBQUM7QUFDdmYsSUFBSSxhQUFhLEdBQUcsdUVBQXVFLENBQUM7QUFDNUYsSUFBSSxhQUFhLEdBQUcsNk9BQTZPLENBQUM7QUFDbFEsSUFBSSxjQUFjLEdBQUcsK0VBQStFLENBQUM7QUFDckcsSUFBSSxnQkFBZ0IsR0FBRywwT0FBME8sQ0FBQztBQUNsUSxJQUFJLGlCQUFpQixHQUFHLHVIQUF1SCxDQUFDO0FBQ2hKLElBQUkscUJBQXFCLEdBQUcsK1VBQStVLENBQUM7QUFDNVcsSUFBSSxzQkFBc0IsR0FBRyxrSkFBa0osQ0FBQztBQUNoTCxJQUFJLHFCQUFxQixHQUFHLDBLQUEwSyxDQUFDO0FBQ3ZNLElBQUksdUJBQXVCLEdBQUcsK09BQStPLENBQUM7QUFDOVEsSUFBSSxlQUFlLEdBQUcsb0hBQW9ILENBQUM7QUFDM0ksSUFBSSxrQkFBa0IsR0FBRyw2SkFBNkosQ0FBQztBQUN2TCxJQUFJLGtCQUFrQixHQUFHLHVZQUF1WSxDQUFDO0FBQ2phLElBQUksZUFBZSxHQUFHLHdKQUF3SixDQUFDO0FBQy9LLElBQUksaUJBQWlCLEdBQUcsa0lBQWtJLENBQUM7QUFDM0osSUFBSSxjQUFjLEdBQUcsaUxBQWlMLENBQUM7QUFDdk0sSUFBSSxNQUFNLEdBQUcseU9BQXlPLENBQUM7QUFDdlAsSUFBSSxVQUFVLEdBQUcsaUxBQWlMLENBQUM7QUFDbk0sSUFBSSxhQUFhLEdBQUcseVZBQXlWLENBQUM7QUFDOVcsSUFBSSxRQUFRLEdBQUcsMEdBQTBHLENBQUM7QUFDMUgsSUFBSSxVQUFVLEdBQUcsa0tBQWtLLENBQUM7QUFDcEwsSUFBSSxhQUFhLEdBQUcsaVlBQWlZLENBQUM7QUFDdFosSUFBSSxpQkFBaUIsR0FBRyw0VEFBNFQsQ0FBQztBQUNyVixJQUFJLGFBQWEsR0FBRyxtTUFBbU0sQ0FBQztBQUN4TixJQUFJLGVBQWUsR0FBRyx5T0FBeU8sQ0FBQztBQUNoUSxJQUFJLFdBQVcsR0FBRyxxSEFBcUgsQ0FBQztBQUN4SSxJQUFJLGNBQWMsR0FBRyxrTkFBa04sQ0FBQztBQUN4TyxJQUFJLGFBQWEsR0FBRyxrTUFBa00sQ0FBQztBQUN2TixJQUFJLG9CQUFvQixHQUFHLDZNQUE2TSxDQUFDO0FBQ3pPLElBQUksc0JBQXNCLEdBQUcsc1RBQXNULENBQUM7QUFDcFYsSUFBSSxhQUFhLEdBQUcsbUxBQW1MLENBQUM7QUFDeE0sSUFBSSxvQkFBb0IsR0FBRyxpVUFBaVUsQ0FBQztBQUM3VixJQUFJLHNCQUFzQixHQUFHLGtZQUFrWSxDQUFDO0FBQ2hhLElBQUksaUJBQWlCLEdBQUcsMEdBQTBHLENBQUM7QUFDbkksSUFBSSxrQkFBa0IsR0FBRyxpS0FBaUssQ0FBQztBQUMzTCxJQUFJLG1CQUFtQixHQUFHLHFvQkFBcW9CLENBQUM7QUFDaHFCLElBQUksYUFBYSxHQUFHLDJIQUEySCxDQUFDO0FBQ2hKLElBQUksb0JBQW9CLEdBQUcsK0pBQStKLENBQUM7QUFDM0wsSUFBSSxXQUFXLEdBQUcsaUtBQWlLLENBQUM7QUFDcEwsSUFBSSxrQkFBa0IsR0FBRyxxT0FBcU8sQ0FBQztBQUMvUCxJQUFJLGVBQWUsR0FBRyxzSEFBc0gsQ0FBQztBQUM3SSxJQUFJLFlBQVksR0FBRyxnSkFBZ0osQ0FBQztBQUNwSyxJQUFJLG1CQUFtQixHQUFHLG9MQUFvTCxDQUFDO0FBQy9NLElBQUkscUJBQXFCLEdBQUcsaUpBQWlKLENBQUM7QUFDOUssSUFBSSxjQUFjLEdBQUcseUpBQXlKLENBQUM7QUFDL0ssSUFBSSxxQkFBcUIsR0FBRyxrTEFBa0wsQ0FBQztBQUMvTSxJQUFJLGVBQWUsR0FBRywwWUFBMFksQ0FBQztBQUNqYSxJQUFJLGdCQUFnQixHQUFHLHdRQUF3USxDQUFDO0FBQ2hTLElBQUksdUJBQXVCLEdBQUcsK1JBQStSLENBQUM7QUFDOVQsSUFBSSxhQUFhLEdBQUcsaU1BQWlNLENBQUM7QUFDdE4sSUFBSSxvQkFBb0IsR0FBRyx1TEFBdUwsQ0FBQztBQUNuTixJQUFJLFlBQVksR0FBRywwQ0FBMEMsQ0FBQztBQUM5RCxJQUFJLG1CQUFtQixHQUFHLCtEQUErRCxDQUFDO0FBQzFGLElBQUksZUFBZSxHQUFHLDBDQUEwQyxDQUFDO0FBQ2pFLElBQUksc0JBQXNCLEdBQUcsNkRBQTZELENBQUM7QUFDM0YsSUFBSSxhQUFhLEdBQUcsNENBQTRDLENBQUM7QUFDakUsSUFBSSxvQkFBb0IsR0FBRywrREFBK0QsQ0FBQztBQUMzRixJQUFJLFlBQVksR0FBRyxnTUFBZ00sQ0FBQztBQUNwTixJQUFJLG1CQUFtQixHQUFHLHlSQUF5UixDQUFDO0FBQ3BULElBQUksY0FBYyxHQUFHLGtEQUFrRCxDQUFDO0FBQ3hFLElBQUkscUJBQXFCLEdBQUcsZ0VBQWdFLENBQUM7QUFDN0YsSUFBSSxnQkFBZ0IsR0FBRywwREFBMEQsQ0FBQztBQUNsRixJQUFJLHVCQUF1QixHQUFHLGlJQUFpSSxDQUFDO0FBQ2hLLElBQUksdUJBQXVCLEdBQUcsZ0ZBQWdGLENBQUM7QUFDL0csSUFBSSw4QkFBOEIsR0FBRyxvR0FBb0csQ0FBQztBQUMxSSxJQUFJLFVBQVUsR0FBRyx5R0FBeUcsQ0FBQztBQUMzSCxJQUFJLGlCQUFpQixHQUFHLHNKQUFzSixDQUFDO0FBQy9LLElBQUksV0FBVyxHQUFHLHVEQUF1RCxDQUFDO0FBQzFFLElBQUksa0JBQWtCLEdBQUcsMEdBQTBHLENBQUM7QUFDcEksSUFBSSxlQUFlLEdBQUcsMkZBQTJGLENBQUM7QUFDbEgsSUFBSSxzQkFBc0IsR0FBRyxtSEFBbUgsQ0FBQztBQUNqSixJQUFJLGVBQWUsR0FBRyx1REFBdUQsQ0FBQztBQUM5RSxJQUFJLFdBQVcsR0FBRyw2RUFBNkUsQ0FBQztBQUNoRyxJQUFJLGtCQUFrQixHQUFHLDJHQUEyRyxDQUFDO0FBQ3JJLElBQUksYUFBYSxHQUFHLHNGQUFzRixDQUFDO0FBQzNHLElBQUksb0JBQW9CLEdBQUcsZ0lBQWdJLENBQUM7QUFDNUosSUFBSSxlQUFlLEdBQUcsZ0RBQWdELENBQUM7QUFDdkUsSUFBSSxzQkFBc0IsR0FBRyxpRUFBaUUsQ0FBQztBQUMvRixJQUFJLFlBQVksR0FBRyw0REFBNEQsQ0FBQztBQUNoRixJQUFJLG1CQUFtQixHQUFHLDRGQUE0RixDQUFDO0FBQ3ZILElBQUksaUJBQWlCLEdBQUcsZ0RBQWdELENBQUM7QUFDekUsSUFBSSx3QkFBd0IsR0FBRyxnRUFBZ0UsQ0FBQztBQUNoRyxJQUFJLHNCQUFzQixHQUFHLCtDQUErQyxDQUFDO0FBQzdFLElBQUksb0JBQW9CLEdBQUcsK0VBQStFLENBQUM7QUFDM0csSUFBSSxhQUFhLEdBQUcsK0JBQStCLENBQUM7QUFDcEQsSUFBSSxvQkFBb0IsR0FBRyxpREFBaUQsQ0FBQztBQUM3RSxJQUFJLFdBQVcsR0FBRyxxT0FBcU8sQ0FBQztBQUN4UCxJQUFJLGtCQUFrQixHQUFHLHNKQUFzSixDQUFDO0FBQ2hMLElBQUksUUFBUSxHQUFHLGlpQkFBaWlCLENBQUM7QUFDampCLElBQUksU0FBUyxHQUFHLGlZQUFpWSxDQUFDO0FBQ2xaLElBQUksaUJBQWlCLEdBQUcsK1BBQStQLENBQUM7QUFDeFIsSUFBSSxRQUFRLEdBQUcsa25EQUFrbkQsQ0FBQztBQUNsb0QsSUFBSSxlQUFlLEdBQUcsMjhEQUEyOEQsQ0FBQztBQUNsK0QsSUFBSSxLQUFLLEdBQUcscTdCQUFxN0IsQ0FBQztBQUNsOEIsSUFBSSxNQUFNLEdBQUcsK2tCQUEra0IsQ0FBQztBQUM3bEIsSUFBSSxXQUFXLEdBQUcsd2JBQXdiLENBQUM7QUFDM2MsSUFBSSxZQUFZLEdBQUcsdVlBQXVZLENBQUM7QUFDM1osSUFBSSxhQUFhLEdBQUcsMjRDQUEyNEMsQ0FBQztBQUNoNkMsSUFBSSxhQUFhLEdBQUcseU5BQXlOLENBQUM7QUFDOU8sSUFBSSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7QUFDaEQsSUFBSSxlQUFlLEdBQUcsOEZBQThGLENBQUM7QUFDckgsSUFBSSxjQUFjLEdBQUcsNENBQTRDLENBQUM7QUFDbEUsSUFBSSxhQUFhLEdBQUcsMklBQTJJLENBQUM7QUFDaEssSUFBSSxZQUFZLEdBQUcsMFlBQTBZLENBQUM7QUFDOVosSUFBSSxhQUFhLEdBQUcsbUVBQW1FLENBQUM7QUFDeEYsSUFBSSxlQUFlLEdBQUcsNERBQTRELENBQUM7QUFDbkYsSUFBSSxtQkFBbUIsR0FBRywrR0FBK0csQ0FBQztBQUMxSSxJQUFJLGdCQUFnQixHQUFHLHdKQUF3SixDQUFDO0FBQ2hMLElBQUksT0FBTyxHQUFHLDBVQUEwVSxDQUFDO0FBQ3pWLElBQUksY0FBYyxHQUFHLHdXQUF3VyxDQUFDO0FBQzlYLElBQUksTUFBTSxHQUFHLDRvQkFBNG9CLENBQUM7QUFDMXBCLElBQUksUUFBUSxHQUFHLGtGQUFrRixDQUFDO0FBQ2xHLElBQUksVUFBVSxHQUFHLDZGQUE2RixDQUFDO0FBQy9HLElBQUksT0FBTyxHQUFHLDZSQUE2UixDQUFDO0FBQzVTLElBQUksT0FBTyxHQUFHLGtIQUFrSCxDQUFDO0FBQ2pJLElBQUksYUFBYSxHQUFHLHdEQUF3RCxDQUFDO0FBQzdFLElBQUksaUJBQWlCLEdBQUcsa0pBQWtKLENBQUM7QUFDM0ssSUFBSSx3QkFBd0IsR0FBRyw0SUFBNEksQ0FBQztBQUM1SyxJQUFJLGtCQUFrQixHQUFHLGlNQUFpTSxDQUFDO0FBQzNOLElBQUkseUJBQXlCLEdBQUcsMExBQTBMLENBQUM7QUFDM04sSUFBSSxTQUFTLEdBQUcsOE9BQThPLENBQUM7QUFDL1AsSUFBSSxpQkFBaUIsR0FBRywyZEFBMmQsQ0FBQztBQUNwZixJQUFJLG1CQUFtQixHQUFHLHFKQUFxSixDQUFDO0FBQ2hMLElBQUksZ0JBQWdCLEdBQUcsc1RBQXNULENBQUM7QUFDOVUsSUFBSSxhQUFhLEdBQUcsMlRBQTJULENBQUM7QUFDaFYsSUFBSSxvQkFBb0IsR0FBRyw2VkFBNlYsQ0FBQztBQUN6WCxJQUFJLGVBQWUsR0FBRyxnTkFBZ04sQ0FBQztBQUN2TyxJQUFJLFlBQVksR0FBRyxxUkFBcVIsQ0FBQztBQUN6UyxJQUFJLE1BQU0sR0FBRyxzL0JBQXMvQixDQUFDO0FBQ3BnQyxJQUFJLFdBQVcsR0FBRyxvS0FBb0ssQ0FBQztBQUN2TCxJQUFJLGtCQUFrQixHQUFHLG9MQUFvTCxDQUFDO0FBQzlNLElBQUksWUFBWSxHQUFHLHdLQUF3SyxDQUFDO0FBQzVMLElBQUksaUJBQWlCLEdBQUcsMldBQTJXLENBQUM7QUFDcFksSUFBSSxzQkFBc0IsR0FBRyxzWUFBc1ksQ0FBQztBQUNwYSxJQUFJLG9CQUFvQixHQUFHLDJnQkFBMmdCLENBQUM7QUFDdmlCLElBQUksUUFBUSxHQUFHLDhOQUE4TixDQUFDO0FBQzlPLElBQUksY0FBYyxHQUFHLDJTQUEyUyxDQUFDO0FBQ2pVLElBQUkscUJBQXFCLEdBQUcsd1BBQXdQLENBQUM7QUFDclIsSUFBSSxjQUFjLEdBQUcsbVNBQW1TLENBQUM7QUFDelQsSUFBSSxxQkFBcUIsR0FBRyx1T0FBdU8sQ0FBQztBQUNwUSxJQUFJLGVBQWUsR0FBRywrSUFBK0ksQ0FBQztBQUN0SyxJQUFJLGVBQWUsR0FBRyxvWEFBb1gsQ0FBQztBQUMzWSxJQUFJLGtCQUFrQixHQUFHLDBoQkFBMGhCLENBQUM7QUFDcGpCLElBQUksUUFBUSxHQUFHLGlGQUFpRixDQUFDO0FBQ2pHLElBQUksYUFBYSxHQUFHLDJIQUEySCxDQUFDO0FBQ2hKLElBQUksb0JBQW9CLEdBQUcsMk5BQTJOLENBQUM7QUFDdlAsSUFBSSxjQUFjLEdBQUcsNFJBQTRSLENBQUM7QUFDbFQsSUFBSSxtQkFBbUIsR0FBRyw4VUFBOFUsQ0FBQztBQUN6VyxJQUFJLGlCQUFpQixHQUFHLDhYQUE4WCxDQUFDO0FBQ3ZaLElBQUksYUFBYSxHQUFHLDJNQUEyTSxDQUFDO0FBQ2hPLElBQUksb0JBQW9CLEdBQUcsNFNBQTRTLENBQUM7QUFDeFUsSUFBSSxhQUFhLEdBQUcsMEtBQTBLLENBQUM7QUFDL0wsSUFBSSxvQkFBb0IsR0FBRyxzUEFBc1AsQ0FBQztBQUNsUixJQUFJLFdBQVcsR0FBRyxtT0FBbU8sQ0FBQztBQUN0UCxJQUFJLGtCQUFrQixHQUFHLG9nQkFBb2dCLENBQUM7QUFDOWhCLElBQUksZUFBZSxHQUFHLHVYQUF1WCxDQUFDO0FBQzlZLElBQUksZUFBZSxHQUFHLHNXQUFzVyxDQUFDO0FBQzdYLElBQUksb0JBQW9CLEdBQUcsNFdBQTRXLENBQUM7QUFDeFksSUFBSSxZQUFZLEdBQUcsK0xBQStMLENBQUM7QUFDbk4sSUFBSSxtQkFBbUIsR0FBRywrUUFBK1EsQ0FBQztBQUMxUyxJQUFJLFlBQVksR0FBRyxnb0NBQWdvQyxDQUFDO0FBQ3BwQyxJQUFJLFlBQVksR0FBRyxrVEFBa1QsQ0FBQztBQUN0VSxJQUFJLGVBQWUsR0FBRywyT0FBMk8sQ0FBQztBQUNsUSxJQUFJLGNBQWMsR0FBRyxxU0FBcVMsQ0FBQztBQUMzVCxJQUFJLHFCQUFxQixHQUFHLHFYQUFxWCxDQUFDO0FBQ2xaLElBQUksWUFBWSxHQUFHLHNhQUFzYSxDQUFDO0FBQzFiLElBQUksbUJBQW1CLEdBQUcsNGRBQTRkLENBQUM7QUFDdmYsSUFBSSxjQUFjLEdBQUcsNlhBQTZYLENBQUM7QUFDblosSUFBSSxxQkFBcUIsR0FBRyx5WUFBeVksQ0FBQztBQUN0YSxJQUFJLFlBQVksR0FBRyxnR0FBZ0csQ0FBQztBQUNwSCxJQUFJLE9BQU8sR0FBRyx3TEFBd0wsQ0FBQztBQUN2TSxJQUFJLFdBQVcsR0FBRyw4TUFBOE0sQ0FBQztBQUNqTyxJQUFJLFFBQVEsR0FBRyx5aEJBQXloQixDQUFDO0FBQ3ppQixJQUFJLE9BQU8sR0FBRyxtb0RBQW1vRCxDQUFDO0FBQ2xwRCxJQUFJLGdCQUFnQixHQUFHLDRRQUE0USxDQUFDO0FBQ3BTLElBQUkscUJBQXFCLEdBQUcsMlNBQTJTLENBQUM7QUFDeFUsSUFBSSwwQkFBMEIsR0FBRywwVEFBMFQsQ0FBQztBQUM1VixJQUFJLGFBQWEsR0FBRywrZ0JBQStnQixDQUFDO0FBQ3BpQixJQUFJLGNBQWMsR0FBRyxra0JBQWtrQixDQUFDO0FBQ3hsQixJQUFJLGNBQWMsR0FBRywwbEJBQTBsQixDQUFDO0FBQ2huQixJQUFJLG1CQUFtQixHQUFHLDhWQUE4VixDQUFDO0FBQ3pYLElBQUksbUJBQW1CLEdBQUcsNldBQTZXLENBQUM7QUFDeFksSUFBSSx3QkFBd0IsR0FBRyxzaUJBQXNpQixDQUFDO0FBQ3RrQixJQUFJLGVBQWUsR0FBRywwbkJBQTBuQixDQUFDO0FBQ2pwQixJQUFJLDJCQUEyQixHQUFHLHl6Q0FBeXpDLENBQUM7QUFDNTFDLElBQUksc0JBQXNCLEdBQUcsNDFCQUE0MUIsQ0FBQztBQUMxM0IsSUFBSSx5QkFBeUIsR0FBRyxpOEJBQWk4QixDQUFDO0FBQ2wrQixJQUFJLHFCQUFxQixHQUFHLHlrQ0FBeWtDLENBQUM7QUFDdG1DLElBQUkscUJBQXFCLEdBQUcsa2tEQUFra0QsQ0FBQztBQUMvbEQsSUFBSSwwQkFBMEIsR0FBRyxpdURBQWl1RCxDQUFDO0FBQ253RCxJQUFJLGlCQUFpQixHQUFHLGk1QkFBaTVCLENBQUM7QUFDMTZCLElBQUksZUFBZSxHQUFHLDZ4QkFBNnhCLENBQUM7QUFDcHpCLElBQUksZUFBZSxHQUFHLGsyQkFBazJCLENBQUM7QUFDejNCLElBQUksb0JBQW9CLEdBQUcsazdDQUFrN0MsQ0FBQztBQUM5OEMsSUFBSSxvQkFBb0IsR0FBRyxtL0JBQW0vQixDQUFDO0FBQy9nQyxJQUFJLGVBQWUsR0FBRyx1b0JBQXVvQixDQUFDO0FBQzlwQixJQUFJLG9CQUFvQixHQUFHLHVlQUF1ZSxDQUFDO0FBQ25nQixJQUFJLGtCQUFrQixHQUFHLDAyQkFBMDJCLENBQUM7QUFDcDRCLElBQUksZ0JBQWdCLEdBQUcsc2hCQUFzaEIsQ0FBQztBQUM5aUIsSUFBSSxvQkFBb0IsR0FBRywybkJBQTJuQixDQUFDO0FBQ3ZwQixJQUFJLGtCQUFrQixHQUFHLHduQkFBd25CLENBQUM7QUFDbHBCLElBQUksaUJBQWlCLEdBQUcsMFdBQTBXLENBQUM7QUFDblksSUFBSSxlQUFlLEdBQUcsMHBCQUEwcEIsQ0FBQztBQUNqckIsSUFBSSxzQkFBc0IsR0FBRyxvZ0JBQW9nQixDQUFDO0FBQ2xpQixJQUFJLE1BQU0sR0FBRyxzNUJBQXM1QixDQUFDO0FBQ3A2QixJQUFJLFNBQVMsR0FBRyw2eUJBQTZ5QixDQUFDO0FBQzl6QixJQUFJLFdBQVcsR0FBRyxtNUJBQW01QixDQUFDO0FBQ3Q2QixJQUFJLFNBQVMsR0FBRyxvWEFBb1gsQ0FBQztBQUNyWSxJQUFJLFlBQVksR0FBRyxtb0JBQW1vQixDQUFDO0FBQ3ZwQixJQUFJLFVBQVUsR0FBRyxpM0NBQWkzQyxDQUFDO0FBQ240QyxJQUFJLFVBQVUsR0FBRyxnYUFBZ2EsQ0FBQztBQUNsYixJQUFJLFNBQVMsR0FBRyx1Z0JBQXVnQixDQUFDO0FBQ3hoQixJQUFJLFNBQVMsR0FBRyxncUJBQWdxQixDQUFDO0FBQ2pyQixJQUFJLFNBQVMsR0FBRyw2U0FBNlMsQ0FBQztBQUM5VCxJQUFJLGFBQWEsR0FBRyxtWUFBbVksQ0FBQztBQUN4WixJQUFJLGlCQUFpQixHQUFHLGljQUFpYyxDQUFDO0FBQzFkLElBQUksZUFBZSxHQUFHLG1RQUFtUSxDQUFDO0FBQzFSLElBQUksY0FBYyxHQUFHLHdlQUF3ZSxDQUFDO0FBQzlmLElBQUksV0FBVyxHQUFHLHlwQ0FBeXBDLENBQUM7QUFDNXFDLElBQUksY0FBYyxHQUFHLHdXQUF3VyxDQUFDO0FBQzlYLElBQUksMEJBQTBCLEdBQUcsdXhCQUF1eEIsQ0FBQztBQUN6ekIsSUFBSSxVQUFVLEdBQUcsbU9BQW1PLENBQUM7QUFDclAsSUFBSSxpQkFBaUIsR0FBRyxxTUFBcU0sQ0FBQztBQUM5TixJQUFJLG1CQUFtQixHQUFHLDhQQUE4UCxDQUFDO0FBQ3pSLElBQUksMkJBQTJCLEdBQUcsc1NBQXNTLENBQUM7QUFDelUsSUFBSSx5QkFBeUIsR0FBRywrUUFBK1EsQ0FBQztBQUNoVCxJQUFJLG9CQUFvQixHQUFHLHNYQUFzWCxDQUFDO0FBQ2xaLElBQUksVUFBVSxHQUFHLCtGQUErRixDQUFDO0FBQ2pILElBQUksaUJBQWlCLEdBQUcseUxBQXlMLENBQUM7QUFDbE4sSUFBSSxPQUFPLEdBQUcsNFRBQTRULENBQUM7QUFDM1UsSUFBSSxZQUFZLEdBQUcsNFZBQTRWLENBQUM7QUFDaFgsSUFBSSxnQkFBZ0IsR0FBRyxzYkFBc2IsQ0FBQztBQUM5YyxJQUFJLGdCQUFnQixHQUFHLHdhQUF3YSxDQUFDO0FBQ2hjLElBQUkscUJBQXFCLEdBQUcsbWRBQW1kLENBQUM7QUFDaGYsSUFBSSxpQkFBaUIsR0FBRyxzYkFBc2IsQ0FBQztBQUMvYyxJQUFJLGNBQWMsR0FBRyx3YUFBd2EsQ0FBQztBQUM5YixJQUFJLGtCQUFrQixHQUFHLGlkQUFpZCxDQUFDO0FBQzNlLElBQUksYUFBYSxHQUFHLDB0QkFBMHRCLENBQUM7QUFDL3VCLElBQUksWUFBWSxHQUFHLGlkQUFpZCxDQUFDO0FBQ3JlLElBQUksVUFBVSxHQUFHLDBtQ0FBMG1DLENBQUM7QUFDNW5DLElBQUksV0FBVyxHQUFHLDhtQkFBOG1CLENBQUM7QUFDam9CLElBQUksZUFBZSxHQUFHLHVtQkFBdW1CLENBQUM7QUFDOW5CLElBQUksYUFBYSxHQUFHLDhrQkFBOGtCLENBQUM7QUFDbm1CLElBQUksWUFBWSxHQUFHLHlaQUF5WixDQUFDO0FBQzdhLElBQUksVUFBVSxHQUFHLHNkQUFzZCxDQUFDO0FBQ3hlLElBQUksV0FBVyxHQUFHLCtiQUErYixDQUFDO0FBQ2xkLElBQUksY0FBYyxHQUFHLDZwQkFBNnBCLENBQUM7QUFDbnJCLElBQUksYUFBYSxHQUFHLHVoQkFBdWhCLENBQUM7QUFDNWlCLElBQUksZUFBZSxHQUFHLG1WQUFtVixDQUFDO0FBQzFXLElBQUksV0FBVyxHQUFHLHdkQUF3ZCxDQUFDO0FBQzNlLElBQUksZ0JBQWdCLEdBQUcsMlBBQTJQLENBQUM7QUFDblIsSUFBSSxxQkFBcUIsR0FBRyw2UUFBNlEsQ0FBQztBQUMxUyxJQUFJLG9CQUFvQixHQUFHLHlsQkFBeWxCLENBQUM7QUFDcm5CLElBQUksd0JBQXdCLEdBQUcsdWpCQUF1akIsQ0FBQztBQUN2bEIsSUFBSSxnQkFBZ0IsR0FBRywyUEFBMlAsQ0FBQztBQUNuUixJQUFJLHFCQUFxQixHQUFHLG9SQUFvUixDQUFDO0FBQ2pULElBQUksb0JBQW9CLEdBQUcsMmxCQUEybEIsQ0FBQztBQUN2bkIsSUFBSSx3QkFBd0IsR0FBRyw2akJBQTZqQixDQUFDO0FBQzdsQixJQUFJLGdCQUFnQixHQUFHLDZPQUE2TyxDQUFDO0FBQ3JRLElBQUkscUJBQXFCLEdBQUcsdVFBQXVRLENBQUM7QUFDcFMsSUFBSSxvQkFBb0IsR0FBRyx1aUJBQXVpQixDQUFDO0FBQ25rQixJQUFJLHdCQUF3QixHQUFHLDhpQkFBOGlCLENBQUM7QUFDOWtCLElBQUksZ0JBQWdCLEdBQUcscUhBQXFILENBQUM7QUFDN0ksSUFBSSxxQkFBcUIsR0FBRyxpS0FBaUssQ0FBQztBQUM5TCxJQUFJLG9CQUFvQixHQUFHLGdjQUFnYyxDQUFDO0FBQzVkLElBQUksd0JBQXdCLEdBQUcsb2JBQW9iLENBQUM7QUFDcGQsSUFBSSwyQkFBMkIsR0FBRyx3T0FBd08sQ0FBQztBQUMzUSxJQUFJLDhCQUE4QixHQUFHLGtnQkFBa2dCLENBQUM7QUFDeGlCLElBQUksMEJBQTBCLEdBQUcsZ2hCQUFnaEIsQ0FBQztBQUNsakIsSUFBSSxrQkFBa0IsR0FBRyxpTkFBaU4sQ0FBQztBQUMzTyxJQUFJLHlCQUF5QixHQUFHLDZYQUE2WCxDQUFDO0FBQzlaLElBQUksc0JBQXNCLEdBQUcsME1BQTBNLENBQUM7QUFDeE8sSUFBSSxXQUFXLEdBQUcsa3VCQUFrdUIsQ0FBQztBQUNydkIsSUFBSSxZQUFZLEdBQUcsaXpCQUFpekIsQ0FBQztBQUNyMEIsSUFBSSxjQUFjLEdBQUcsb2VBQW9lLENBQUM7QUFDMWYsSUFBSSxjQUFjLEdBQUcsZ0hBQWdILENBQUM7QUFDdEksSUFBSSxlQUFlLEdBQUcsd0hBQXdILENBQUM7QUFDL0ksSUFBSSxzQkFBc0IsR0FBRyxpRkFBaUYsQ0FBQztBQUMvRyxJQUFJLGlCQUFpQixHQUFHLCtCQUErQixDQUFDO0FBQ3hELElBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7QUFDekMsSUFBSSxhQUFhLEdBQUcscUlBQXFJLENBQUM7QUFDMUosSUFBSSxvQkFBb0IsR0FBRyw0RkFBNEYsQ0FBQztBQUN4SCxJQUFJLGdCQUFnQixHQUFHLGdFQUFnRSxDQUFDO0FBQ3hGLElBQUksZ0JBQWdCLEdBQUcsa0dBQWtHLENBQUM7QUFDMUgsSUFBSSxxQkFBcUIsR0FBRyxzR0FBc0csQ0FBQztBQUNuSSxJQUFJLG9CQUFvQixHQUFHLGtEQUFrRCxDQUFDO0FBQzlFLElBQUksV0FBVyxHQUFHLDJKQUEySixDQUFDO0FBQzlLLElBQUksUUFBUSxHQUFHLG9XQUFvVyxDQUFDO0FBQ3BYLElBQUksWUFBWSxHQUFHLGdwQkFBZ3BCLENBQUM7QUFDcHFCLElBQUksWUFBWSxHQUFHLDRaQUE0WixDQUFDO0FBQ2hiLElBQUksWUFBWSxHQUFHLHk5QkFBeTlCLENBQUM7QUFDNytCLElBQUksT0FBTyxHQUFHLDZKQUE2SixDQUFDO0FBQzVLLElBQUksZUFBZSxHQUFHLGdFQUFnRSxDQUFDO0FBQ3ZGLElBQUksU0FBUyxHQUFHLGlOQUFpTixDQUFDO0FBQ2xPLElBQUksZ0JBQWdCLEdBQUcsNmZBQTZmLENBQUM7QUFDcmhCLElBQUksVUFBVSxHQUFHLGlmQUFpZixDQUFDO0FBQ25nQixJQUFJLGlCQUFpQixHQUFHLHd3QkFBd3dCLENBQUM7QUFDanlCLElBQUksT0FBTyxHQUFHLG1vQkFBbW9CLENBQUM7QUFDbHBCLElBQUksTUFBTSxHQUFHLHlKQUF5SixDQUFDO0FBQ3ZLLElBQUksT0FBTyxHQUFHLDZSQUE2UixDQUFDO0FBQzVTLElBQUksY0FBYyxHQUFHLG9GQUFvRixDQUFDO0FBQzFHLElBQUksUUFBUSxHQUFHLHVRQUF1USxDQUFDO0FBQ3ZSLElBQUksUUFBUSxHQUFHLG9mQUFvZixDQUFDO0FBQ3BnQixJQUFJLFVBQVUsR0FBRywwV0FBMFcsQ0FBQztBQUM1WCxJQUFJLE9BQU8sR0FBRywyTUFBMk0sQ0FBQztBQUMxTixJQUFJLFVBQVUsR0FBRyw0akJBQTRqQixDQUFDO0FBQzlrQixJQUFJLGdCQUFnQixHQUFHLGlPQUFpTyxDQUFDO0FBQ3pQLElBQUksZ0JBQWdCLEdBQUcsb3lCQUFveUIsQ0FBQztBQUM1ekIsSUFBSSxzQkFBc0IsR0FBRyx5SUFBeUksQ0FBQztBQUN2SyxJQUFJLFlBQVksR0FBRyxpU0FBaVMsQ0FBQztBQUNyVCxJQUFJLE9BQU8sR0FBRyxvV0FBb1csQ0FBQztBQUNuWCxJQUFJLFFBQVEsR0FBRyx3V0FBd1csQ0FBQztBQUN4WCxJQUFJLE9BQU8sR0FBRyxxVEFBcVQsQ0FBQztBQUNwVSxJQUFJLFNBQVMsR0FBRyxxbUJBQXFtQixDQUFDO0FBQ3RuQixJQUFJLFNBQVMsR0FBRyxnS0FBZ0ssQ0FBQztBQUNqTCxJQUFJLGdCQUFnQixHQUFHLDZNQUE2TSxDQUFDO0FBQ3JPLElBQUksVUFBVSxHQUFHLDRJQUE0SSxDQUFDO0FBQzlKLElBQUksaUJBQWlCLEdBQUcscVJBQXFSLENBQUM7QUFDOVMsSUFBSSxjQUFjLEdBQUcsbVlBQW1ZLENBQUM7QUFDelosSUFBSSxlQUFlLEdBQUcscW1CQUFxbUIsQ0FBQztBQUM1bkIsSUFBSSxrQkFBa0IsR0FBRywrV0FBK1csQ0FBQztBQUN6WSxJQUFJLGVBQWUsR0FBRywwV0FBMFcsQ0FBQztBQUNqWSxJQUFJLFlBQVksR0FBRywybEJBQTJsQixDQUFDO0FBQy9tQixJQUFJLGNBQWMsR0FBRyw0UUFBNFEsQ0FBQztBQUNsUyxJQUFJLGVBQWUsR0FBRyw0U0FBNFMsQ0FBQztBQUNuVSxJQUFJLG9CQUFvQixHQUFHLHdJQUF3SSxDQUFDO0FBQ3BLLElBQUksZ0JBQWdCLEdBQUcsZ1RBQWdULENBQUM7QUFDeFUsSUFBSSxlQUFlLEdBQUcsaVJBQWlSLENBQUM7QUFDeFMsSUFBSSxjQUFjLEdBQUcsMGZBQTBmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QztBQUNuQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQ2pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBQ3JDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQixRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDcEIsWUFB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QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxRQUFRLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxRQUFRLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3SCxZQUFZLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3JD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LENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3ZDLFFBQVEsT0FBTyxHQUFHLENBQUM7QUFDbkIsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtBQUMzQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDdEMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzNDLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNoQyxRQUFRLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtBQUM3QixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM5QyxZQUFZLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM1QyxTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsRUFBRTtBQUMxQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUNoRCxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDMUQsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzNDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzVDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLFlBQVk7QUFDeEQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0UsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLFFBQVEsRUFBRTtBQUNqRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDdkMsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbEMsWUFBWSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUU7QUFDbEUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNqQyxnQkFBZ0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkYsZ0JBQWdCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsZ0JBQWdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsYUFBYTtBQUNiLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsWUFBYyxHQUFHLE1BQU0sQ0FBQztBQUN4QixJQUFJLE1BQU0sSUFBSSxZQUFZO0FBQzFCLElBQUksU0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM1QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckIsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNyQixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDaEMsWUFBWSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNwQyxTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckIsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdkIsS0FBSztBQUNMLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtBQUN4QyxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDMUQsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwRSxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDekQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWTtBQUNoRCxRQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3BHLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNwQyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixZQUFZLElBQUksQ0FBQyxDQUFDLGFBQWE7QUFDL0IsZ0JBQWdCLFNBQVM7QUFDekIsWUFBWSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsRUFBRTtBQUNoRCxnQkFBZ0IsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNqQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixnQkFBZ0IsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNoQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsUUFBUTtBQUM5QixvQkFBb0IsTUFBTTtBQUMxQixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsSUFBSSxXQUFXLEtBQUssQ0FBQztBQUM3QixhQUFhLFFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDNUUsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDM0MsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFO0FBQzdCLFlBQVksSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUMsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUM3RyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN0RCxZQUFZLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUMzQixnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxFQUFFLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckUsb0JBQW9CLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0FBQzNDLG9CQUFvQixTQUFTO0FBQzdCLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxnQkFBZ0IsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQ3BDLG9CQUFvQixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0Msb0JBQW9CLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkMsb0JBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6RCxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLG9CQUFvQixDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztBQUMzQyxvQkFBb0IsU0FBUztBQUM3QixpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtBQUNwQyxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQixvQkFBb0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3ZCLFFBQVEsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMvRCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFO0FBQ25ELFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzNCLFlBQVksUUFBUSxHQUFHLElBQUksQ0FBQztBQUM1QixZQUFZLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLG9CQUFvQixHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ3hDLElBQUksTUFBTSxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUNwQyxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxZQUFjLEdBQUcsTUFBTSxDQUFDO0FBQ3hCLFNBQVMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDcEUsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0UsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDcEMsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsS0FBSztBQUNMLElBQUksSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3pILElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNwQixRQUFRLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNsRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNoRSxLQUFLO0FBQ0wsSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNwQixRQUFRLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNsRSxLQUFLO0FBQ0wsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsSUFBSSxPQUFPO0FBQ1gsUUFBUSxVQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN4RixRQUFRLFVBQVUsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxZQUFZO0FBQ25GLFFBQVEsVUFBVSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLGFBQWE7QUFDckYsS0FBSyxDQUFDO0FBQ04sQ0FBQztBQUNELGlDQUFtQyxHQUFHLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7O0FDcFlsRSxJQUFJc0YsV0FBUyxHQUFHLENBQUN0RixjQUFJLElBQUlBLGNBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxZQUFZO0FBQ3pELElBQUksSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hDLFFBQVEsYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0FBQzdDLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RixZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2RixRQUFRLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLFFBQVEsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUMvQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0YsS0FBSyxDQUFDO0FBQ04sQ0FBQyxHQUFHLENBQUM7QUFDeUQ7QUFDOUQsSUFBSSxRQUFRLElBQUksWUFBWTtBQUM1QixJQUFJLFNBQVMsUUFBUSxHQUFHO0FBQ3hCLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLElBQUksRUFBRTtBQUN4QyxZQUFZLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDakMsWUFBWSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkMsWUFBWSxPQUFPLEdBQUcsS0FBSyxJQUFJLEVBQUU7QUFDakMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLG9CQUFvQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN2QyxvQkFBb0IsT0FBTyxJQUFJLENBQUM7QUFDaEMsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQixvQkFBb0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUMsb0JBQW9CLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtBQUMzQyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdEIsS0FBSyxDQUFDO0FBRU4sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLElBQUksRUFBRTtBQUM5QyxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDN0IsUUFBUSxPQUFPLEdBQUcsS0FBSyxJQUFJLEVBQUU7QUFDN0IsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckQsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDekIsZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztBQUNoQyxhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCLGdCQUFnQixHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0MsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUVOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUU7QUFDcEQsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRCxLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQ3BELFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUNuQyxRQUFRLFNBQVMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbkMsWUFBWSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5QyxLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFlBQVk7QUFDekMsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO0FBQzFCLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULFFBQVEsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtBQUNsQyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQzNCLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztBQUN4QixLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFlBQVk7QUFDekMsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO0FBQzFCLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULFFBQVEsT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUNuQyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztBQUN4QixLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7QUFDOUMsUUFBUSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLEtBQUssQ0FBQztBQUVOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDNUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ3ZDLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FBQzVDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JCLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsRUFBRSxFQUFFO0FBQzdDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQztBQUN2QyxRQUFRLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksRUFBRTtBQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBRU4sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDckQsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ25DLFFBQVEsT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO0FBQzdCLFlBQVksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JELFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLGdCQUFnQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUNuQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsWUFBWSxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMsU0FBUztBQUNULFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM5RCxZQUFZLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLFlBQVksSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDekMsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBQ25DLGdCQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0MsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0FBQzVCLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLLENBQUM7QUFFTixJQUFJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxjQUFnQixHQUFHLFFBQVEsQ0FBQztBQUM1QixJQUFJLFFBQVEsSUFBSSxZQUFZO0FBQzVCLElBQUksU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQzVCLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDMUIsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUM3QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzVCLEtBQUs7QUFDTCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7QUFDMUMsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNoRSxLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7QUFDMUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQ25DLFlBQVksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDeEMsWUFBWSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDL0IsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsYUFBYTtBQUNiLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUM3QyxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7QUFDekIsZ0JBQWdCLEdBQUc7QUFDbkIsb0JBQW9CLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO0FBQ2hELHdCQUF3QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDN0QscUJBQXFCO0FBQ3JCLHlCQUF5QjtBQUN6Qix3QkFBd0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDNUMsd0JBQXdCLE1BQU07QUFDOUIscUJBQXFCO0FBQ3JCLGlCQUFpQixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUN0RCxhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkQsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDaEUsS0FBSyxDQUFDO0FBRU4sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQzFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUNuQyxZQUFZLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3hDLFlBQVksSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQy9CLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLGFBQWE7QUFDYixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDNUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDO0FBQ3pCLGdCQUFnQixHQUFHO0FBQ25CLG9CQUFvQixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUNoRCx3QkFBd0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzdELHFCQUFxQjtBQUNyQix5QkFBeUI7QUFDekIsd0JBQXdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzVDLHdCQUF3QixNQUFNO0FBQzlCLHFCQUFxQjtBQUNyQixpQkFBaUIsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDckQsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2hFLEtBQUssQ0FBQztBQUVOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDbkQsUUFBUSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ3BDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsWUFBWSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztBQUMvQixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUM3QixLQUFLLENBQUM7QUFFTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQ25ELFFBQVEsT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUNyQyxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLFlBQVksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDaEMsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDN0IsS0FBSyxDQUFDO0FBRU4sSUFBSSxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsY0FBZ0IsR0FBRyxRQUFRLENBQUM7QUFDNUIsSUFBSXVGLE1BQUksSUFBSSxZQUFZO0FBQ3hCLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3hCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDeEIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDOUMsUUFBUSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDNUMsS0FBSyxDQUFDO0FBRU4sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDbkQsUUFBUSxJQUFJLEdBQUcsRUFBRTtBQUNqQixZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQzdCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUM1QixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBRU4sSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsSUFBSSxNQUFNLElBQUksVUFBVSxNQUFNLEVBQUU7QUFDaEMsSUFBSUQsV0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixJQUFJLFNBQVMsTUFBTSxDQUFDLFVBQVUsRUFBRTtBQUNoQyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQzlDLFFBQVEsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDM0IsUUFBUSxLQUFLLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztBQUN2QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSztBQUNMLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxJQUFJLEVBQUU7QUFDOUMsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDeEIsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQ2pDLFlBQVksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJQyxNQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFlBQVksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxJQUFJLElBQUksR0FBRyxJQUFJQSxNQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0MsWUFBWSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDNUIsWUFBWSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFDN0IsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDMUIsWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDM0IsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDekIsWUFBWSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ25DLFlBQVksT0FBTyxJQUFJLEVBQUU7QUFDekIsZ0JBQWdCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNuQyxvQkFBb0IsSUFBSSxHQUFHLElBQUlBLE1BQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0Msb0JBQW9CLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDL0Isb0JBQW9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQyxpQkFBaUI7QUFDakIscUJBQXFCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEYsb0JBQW9CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDMUMsb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUMzQyxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdELG9CQUFvQixJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztBQUNoRCxvQkFBb0IsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNwRCx3QkFBd0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdFLHFCQUFxQjtBQUNyQix5QkFBeUI7QUFDekIsd0JBQXdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsZ0JBQWdCLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtBQUMvQixvQkFBb0IsTUFBTTtBQUMxQixpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksR0FBRyxHQUFHLENBQUM7QUFDM0IsZ0JBQWdCLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLGdCQUFnQixJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7QUFDakMsb0JBQW9CLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDN0IsaUJBQWlCO0FBQ2pCLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGdCQUFnQixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDcEMsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFFBQVEsT0FBTyxHQUFHLENBQUM7QUFDbkIsS0FBSyxDQUFDO0FBRU4sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLElBQUksRUFBRTtBQUM5QyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDakMsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1QsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJQSxNQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkMsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdEIsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDdkIsUUFBUSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO0FBQzdDLFlBQVksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQzNCLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuQixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxZQUFZLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxZQUFZLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFlBQVksSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO0FBQzNCLGdCQUFnQixLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQzdCLGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDN0UsZ0JBQWdCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUN6RCxvQkFBb0IsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0Qsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNCLGlCQUFpQjtBQUNqQixxQkFBcUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDL0Qsb0JBQW9CLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRCxvQkFBb0IsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzFDLHdCQUF3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ2pILDRCQUE0QixDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUMxQyw0QkFBNEIsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDL0MsNEJBQTRCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzVDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsNEJBQTRCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3RELDRCQUE0QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ3hFLGdDQUFnQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLDZCQUE2QjtBQUM3QixpQ0FBaUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQzlFLGdDQUFnQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLDZCQUE2QjtBQUM3Qiw0QkFBNEIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCw0QkFBNEIsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDM0MsNEJBQTRCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzVDLDRCQUE0QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakQsNEJBQTRCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNsRCx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQzVCLFlBQVksS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ25DLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5RSxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN4QixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDaEMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQ2pDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ25DLFNBQVM7QUFDVCxRQUFRLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQztBQUM5QixLQUFLLENBQUM7QUFFTixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxJQUFJLEVBQUU7QUFDcEMsUUFBUSxPQUFPLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN6QyxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxhQUFhLEdBQUcsVUFBVSxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ2hELFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsQyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDekIsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxhQUFhLEdBQUcsVUFBVSxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ2hELFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0UsUUFBUSxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDYixZQUFjLEdBQUcsTUFBTSxDQUFDOzs7Ozs7Ozs7QUNuWXhCLElBQUlELFdBQVMsR0FBRyxDQUFDdEYsY0FBSSxJQUFJQSxjQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsWUFBWTtBQUN6RCxJQUFJLElBQUksYUFBYSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN4QyxRQUFRLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYztBQUM3QyxhQUFhLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDeEYsWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkYsUUFBUSxPQUFPLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMzQixRQUFRLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDL0MsUUFBUSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdGLEtBQUssQ0FBQztBQUNOLENBQUMsR0FBRyxDQUFDO0FBQ3lEO0FBQy9CO0FBQ0k7QUFDbkMsU0FBUyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7QUFDL0IsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXO0FBQzlDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pGLFFBQVEsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFCLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVztBQUN2QyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3BCLENBQUM7QUFDRCx3QkFBMEIsR0FBRyxrQkFBa0IsQ0FBQztBQUNoRCxJQUFJLFNBQVMsSUFBSSxZQUFZO0FBQzdCLElBQUksU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsS0FBSztBQUNMLElBQUksU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDcEssSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxZQUFZLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNFLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzRSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ2hELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDeEMsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNwQyxZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEMsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoQyxRQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ2pCLEtBQUssQ0FBQztBQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDaEQsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN4QyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3BDLFlBQVksT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsS0FBSyxDQUFDO0FBQ04sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUUsRUFBRTtBQUNuRCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNyQixRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3JCLEtBQUssQ0FBQztBQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDbkQsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDckIsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNyQixLQUFLLENBQUM7QUFDTixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7QUFDNUMsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFLLENBQUM7QUFDTixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFlBQVk7QUFDN0MsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFLLENBQUM7QUFDTixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzdDLFFBQVEsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekgsS0FBSyxDQUFDO0FBQ04sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3RFLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLFFBQVEsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQy9CLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNwQyxZQUFZLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkgsWUFBWSxJQUFJLENBQUMsS0FBSyxJQUFJO0FBQzFCLGdCQUFnQixhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZELFNBQVM7QUFDVCxRQUFRLE9BQU8sYUFBYSxDQUFDO0FBQzdCLEtBQUssQ0FBQztBQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzVELFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2hELEtBQUssQ0FBQztBQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtBQUMvQyxRQUFRLE9BQU87QUFDZixZQUFZLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDcEMsWUFBWSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ3BDLFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNwQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDcEMsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ04sSUFBSSxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzNFLFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BILFFBQVEsSUFBSSxXQUFXLElBQUksQ0FBQztBQUM1QixZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsV0FBVyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUM7QUFDL0osUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsWUFBWSxPQUFPO0FBQ25CLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQ2hDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQ2hDLGFBQWEsQ0FBQztBQUNkLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDakQsUUFBUSxPQUFPLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDckYsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsZUFBaUIsR0FBRyxTQUFTLENBQUM7QUFDOUIsU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7QUFDN0MsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwUixJQUFJLE9BQU87QUFDWCxRQUFRLGtCQUFrQixFQUFFLEVBQUU7QUFDOUIsUUFBUSxrQkFBa0IsRUFBRSxFQUFFO0FBQzlCLFFBQVEsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDcEUsS0FBSyxDQUFDO0FBQ04sQ0FBQztBQUNELHFCQUF1QixHQUFHLGVBQWUsQ0FBQztBQUMxQyxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtBQUNuQyxJQUFJLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsSUFBSSxJQUFJLENBQUMsRUFBRTtBQUNYLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMzRSxJQUFJLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzVELENBQUM7QUFDRCxnQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFDaEMsSUFBSXVGLE1BQUksSUFBSSxZQUFZO0FBQ3hCLElBQUksU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7QUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdkIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ2pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEVBQUUsQ0FBQztBQUNqQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsSUFBSSxLQUFLLElBQUksWUFBWTtBQUN6QixJQUFJLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxTQUFTLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzdCLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUU7QUFDdkIsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtBQUN2QixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ2xCLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsQixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDbEIsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLO0FBQ0wsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFDRCxTQUFTLFVBQVUsR0FBRztBQUN0QixJQUFJLE9BQU8sSUFBSUMsTUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBQ0QsSUFBSSxLQUFLLEdBQUc7QUFDWixJQUFJLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDOUMsSUFBSSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN6QyxJQUFJLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzFDLElBQUksT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUMvQyxJQUFJLFFBQVEsRUFBRSxVQUFVLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDL0gsSUFBSSxjQUFjLEVBQUUsZUFBZTtBQUNuQyxDQUFDLENBQUM7QUFDRixJQUFJLEtBQUssR0FBRztBQUNaLElBQUksU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM5QyxJQUFJLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3pDLElBQUksUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDMUMsSUFBSSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0FBQ2hELElBQUksUUFBUSxFQUFFLFVBQVUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMvSCxJQUFJLGNBQWMsRUFBRSxlQUFlO0FBQ25DLENBQUMsQ0FBQztBQUNGLFNBQVMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQ2hFLElBQUksSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxXQUFXLEdBQUcsS0FBSyxDQUFDLEVBQUU7QUFDeEQsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUMvTCxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDOVAsSUFBSSxJQUFJLFdBQVcsRUFBRTtBQUNyQixRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN4SyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUMxQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRSxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUMxQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRSxLQUFLO0FBQ0wsSUFBSSxJQUFJLEVBQUU7QUFDVixRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEYsSUFB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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFlBQVksSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFlBQVksSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsWUFBWSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxZQUFZLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLFlBQVksSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsWUFBWSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxZQUFZLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLFlBQVksSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksTUFBTSxHQUFHLENBQUM7QUFDeEQsbUJBQW1CLE1BQU0sSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzdELGdCQUFnQixFQUFFLENBQUMsRUFBRSxHQUFH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MUIsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwQztBQUNBLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUMxQixZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEMsS0FBSztBQUNMLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0MsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzdCLFlBQVksU0FBUztBQUNyQixRQUFRLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakMsS0FBSztBQUNMLElBQUksU0FBUyxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtBQUNyQyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTO0FBQ3hDLFlBQVksT0FBTztBQUNuQixRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3BCLFlBQVksUUFBUSxFQUFFLENBQUM7QUFDdkIsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkMsU0FBUztBQUNULFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDbEMs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QUNsRSxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMzRyxhQUFhLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzNHLGFBQWEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEcsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFFBQVEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMs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LE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hELElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDM0MsUUFBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVc7QUFDM0MsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVztBQUMzQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdHLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUMvQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMs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LFlBQVk7QUFDeEMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxNQUFNLEVBQUU7QUFDOUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3pDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3pDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQ3hDLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxZQUFZO0FBQzFDLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUN0QyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztBQUNuQixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7QUFDMUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsWUFBWTtBQUNqRCxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRyxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUMxRCxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUNwQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDOUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM5QyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMzQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDbEQsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFFcEIsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEI7QUFDQSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFO0FBQ3JDO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFO0FBQzNCLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxNQUFNLHdCQUF3QixD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RSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRztBQUNBO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNuRyxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUU7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDbkcsR0FBRztBQUNILEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUU7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3JHLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRTtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDckcsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlHO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRTtBQUM5RjtBQUNBLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUNoQixH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QUcsTUFBTTtBQUNULElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ2xELEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsRUFBRSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7QUFDakIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUMvRCxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUM5RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLE1BQU0sSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUM5RCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2xDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDMUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNqQyxTQUFTLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ25DO0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDM0I7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPLFNBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTtBQUd0RDtBQUNBO0FBQ0EsU0FBUyxLQUFLLEdBQUcsRUFBRTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssQ0FBQyxJQUFJLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDOUIsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDakIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUcsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDeEIsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2QsR0FBRyxNQUFNO0FBQ1QsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxLQUFLLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDL0IsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLEtBQUssRUFBRTtBQUM5QixFQUFFLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUN2QjtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU8sU0FBUyxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO0FBR3REO0FBQ0E7QUFDQSxTQUFTLE9BQU8sR0FBRyxFQUFFO0FBQ3JCO0FBQ0EsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7QUFDL0IsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLFVBQVUsQ0FBQztBQUNoQztBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3pCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLElBQUksWUFBWSxHQUFHLFlBQVksRUFBRSxTQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwakI7QUFDQSxTQUFTLGVBQWUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsWUFBWSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDeko7QUFDQSxJQUFJLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDeEMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksR0FBRyxHQUFHLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUMvQyxFQUFFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbkIsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNuQjtBQUNBLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUMzQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDdkI7QUFDQTtBQUNBLEVBQUUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQy9CO0FBQ0EsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEI7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFVBQVUsR0FBRyxZQUFZO0FBQzdCLEVBQUUsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzVCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckI7QUFDQSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtBQUN0QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDaEMsUUFBUSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDNUIsSUFBSSxHQUFHLEVBQUUsTUFBTTtBQUNmLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxHQUFHO0FBQzNCLE1BQU0sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxjQUFjO0FBQ3ZCLElBQUksS0FBSyxFQUFFLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUU7QUFDakQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakUsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGFBQWE7QUFDdEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRTtBQUNoRCxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRSxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsa0JBQWtCO0FBQzNCLElBQUksS0FBSyxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtBQUN6RCxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzRCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsaUJBQWlCO0FBQzFCLElBQUksS0FBSyxFQUFFLFNBQVMsZUFBZSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7QUFDeEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0QsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLE1BQU07QUFDZixJQUFJLEtBQUssRUFBRSxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLFNBQVM7QUFDbEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZELEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxRQUFRO0FBQ2pCLElBQUksS0FBSyxFQUFFLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRTtBQUNqQyxNQUFNLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsS0FBSztBQUNkLElBQUksS0FBSyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQzFCLE1BQU0sT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDNUMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLFNBQVM7QUFDbEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxPQUFPLEdBQUc7QUFDOUIsTUFBTSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxPQUFPO0FBQ2hCLElBQUksS0FBSyxFQUFFLFNBQVMsS0FBSyxHQUFHO0FBQzVCLE1BQU0sT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDNUMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLFdBQVc7QUFDcEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxTQUFTLEdBQUc7QUFDaEMsTUFBTSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxlQUFlO0FBQ3hCLElBQUksS0FBSyxFQUFFLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtBQUN6QyxNQUFNLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtBQUNsQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDaEMsUUFBUSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUU7QUFDMUIsVUFBVSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNqQyxVQUFVLENBQUMsRUFBRSxDQUFDO0FBQ2QsU0FBUztBQUNULFFBQVEsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzdCLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsZUFBZTtBQUN4QixJQUFJLEtBQUssRUFBRSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ2hELE1BQU0sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNoQyxRQUFRLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRTtBQUMxQixVQUFVLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2pDLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDZCxTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUM5QixPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDTjtBQUNBLEVBQUUsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxFQUFFLENBQUM7QUFDSjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0FBQzVCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hCLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDaEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNoQixFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixHQUFHLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7QUFDeEUsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNWLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ25DLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtBQUNuQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7QUFDMUMsRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRCxFQUFFLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3hFO0FBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM5QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbkMsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2QyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2IsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzlDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDZixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUN4QyxFQUFFLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksT0FBTyxFQUFFO0FBQ3ZDLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ2pCLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLEdBQUc7QUFDSCxFQUFFLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7QUFDdkMsRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDOUUsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUN2QjtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU8sU0FBUyxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO0FBR3REO0FBQ0E7QUFDQSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDekMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNiLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDYixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbEI7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUNqRSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUN6QixHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtBQUN4QyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3pDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7QUFDeEMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsRUFBRTtBQUN6QyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0FBQzVDLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDakQsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7QUFDN0MsRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLE1BQU0sRUFBRTtBQUNuRCxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtBQUM1QyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWTtBQUM3QyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDL0MsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzlCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQzdCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQzlCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsWUFBWTtBQUM5QyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDM0MsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDM0MsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsWUFBWTtBQUM5QyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDM0MsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDM0MsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWTtBQUNoRCxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxZQUFZO0FBQ2pELEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0FBQzVCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLElBQUksT0FBTyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxHQUFHLFVBQVUsR0FBRyxFQUFFLEVBQUUsT0FBTyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUM3UTtBQUNBLFNBQVMsaUJBQWlCLEdBQUcsRUFBRTtBQUMvQjtBQUNBLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0I7QUFDQSxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDNUMsRUFBRSxJQUFJLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMxQyxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNILEVBQUUsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtBQUM1QixJQUFJLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN4QixHQUFHO0FBQ0gsRUFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQy9DLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDN0IsRUFBRSxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDNUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztBQUNoRCxFQUFFLE9BQU8sU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDL0MsRUFBRSxJQUFJLElBQUksR0FBRyxPQUFPLEdBQUcsS0FBSyxXQUFXLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRSxFQUFFLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDO0FBQ25DO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25NO0FBQ0EsSUFBSSxlQUFlLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsSUFBSSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsSUFBSSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEMsSUFBSSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEM7QUFDQSxTQUFTLE1BQU0sQ0FBQyxXQUFXLEVBQUU7QUFDN0IsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JCO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztBQUMvQztBQUNBLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyw4QkFBOEIsQ0FBQztBQUM1RTtBQUNBLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsbUJBQW1CLENBQUM7QUFDekQ7QUFDQSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxlQUFlLENBQUMsMkJBQTJCLENBQUM7QUFDdkU7QUFDQSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxlQUFlLENBQUMsK0JBQStCLENBQUM7QUFDL0U7QUFDQSxFQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLHdCQUF3QixDQUFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQztBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEMsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUNoQyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDM0I7QUFDQSxFQUFFLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtBQUMzQixJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBQ25DLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxNQUFNLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUN2QjtBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEQ7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxZQUFZO0FBQy9DLEVBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtBQUMzQyxFQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7QUFDM0MsRUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLDZCQUE2QixHQUFHLFlBQVk7QUFDN0QsRUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVk7QUFDL0MsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsTUFBTSxFQUFFO0FBQzlDLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQzVDLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDNUMsRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLFlBQVk7QUFDbEQsRUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDOUksQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQ3pDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUNoQztBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQzNCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxtQkFBbUIsQ0FBQztBQUMxQjtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtBQUNqQyxJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztBQUNoQyxHQUFHLE1BQU07QUFDVCxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN4QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksZUFBZSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7QUFDNUM7QUFDQTtBQUNBLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLG1CQUFtQixFQUFFO0FBQzNCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDM0IsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDMUIsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDN0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDL0I7QUFDQSxFQUFFLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxZQUFZO0FBQzVDO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ3pCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JCLEdBQUc7QUFDSCxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUN2QztBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7QUFDaEMsSUFBSSxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztBQUMxQztBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3RDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBR3pCLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuRCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBRTlDO0FBQ0EsS0FBSztBQUlMLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN2RCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBRTNDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ3pDLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ25CLEdBQUcsTUFBTSxJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7QUFDbkMsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7QUFDbkIsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDakM7QUFDQSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM3QyxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdDLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUU7QUFDbkM7QUFDQSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDcEM7QUFDQTtBQUNBLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixLQUFLO0FBQ0wsR0FBRyxNQUFNLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRTtBQUNuQyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTtBQUNuQztBQUNBLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUNwQztBQUNBO0FBQ0EsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFO0FBQ3BDLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3BDO0FBQ0EsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0FBQ3RDO0FBQ0E7QUFDQSxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsWUFBWTtBQUM5QyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO0FBQ2pELElBQUksSUFBSSxDQUFDLHFCQUFxQixHQUFHLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQztBQUNqRixJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLHdCQUF3QixDQUFDO0FBQ3BFLElBQUksSUFBSSxDQUFDLGlCQUFpQixHQUFHLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztBQUN6RSxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDO0FBQzNELElBQUksSUFBSSxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyw4QkFBOEIsQ0FBQztBQUM5RSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxlQUFlLENBQUMsK0JBQStCLENBQUM7QUFDaEYsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtBQUNsQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFDbkMsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxVQUFVLEVBQUU7QUFDbkQsRUFBRSxJQUFJLFVBQVUsSUFBSSxTQUFTLEVBQUU7QUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUcsTUFBTTtBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFDaEMsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzlEO0FBQ0EsSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7QUFDekIsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDckMsTUFBTSxJQUFJLElBQUksQ0FBQztBQUNmO0FBQ0EsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUMxRDtBQUNBLEVBQUUsSUFBSSxLQUFLLElBQUksU0FBUyxFQUFFO0FBQzFCO0FBQ0EsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDakUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hELEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxLQUFLLENBQUM7QUFDZCxJQUFJLElBQUksVUFBVSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDakMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BDO0FBQ0EsTUFBTSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7QUFDOUIsUUFBUSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDeEIsT0FBTyxNQUFNLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDcEQsUUFBUSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDeEIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0MsUUFBUSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDN0IsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxZQUFZO0FBQzdDLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN4RDtBQUNBO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDcEI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO0FBQ3hDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztBQUNyQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDZixJQUFJLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDMUIsRUFBRSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdkIsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzFCLEVBQUUsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUI7QUFDQSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksUUFBUSxFQUFFO0FBQ2xELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLElBQUksT0FBTyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxRQUFRLEVBQUU7QUFDL0M7QUFDQSxNQUFNLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMvQjtBQUNBO0FBQ0EsTUFBTSxJQUFJLGFBQWEsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDakQ7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JELFFBQVEsSUFBSSxlQUFlLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN4RTtBQUNBO0FBQ0EsUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxFQUFFO0FBQ3pEO0FBQ0EsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtBQUM3QyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDOUMsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN0RCxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsY0FBYyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQy9CLGNBQWMsTUFBTTtBQUNwQixhQUFhO0FBQ2IsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ25CLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUN0QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzFELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QjtBQUNBO0FBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QyxVQUFVLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixVQUFVLElBQUksS0FBSyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCxVQUFVLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFlBQVksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QyxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVEsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDNUIsUUFBUSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM1QixPQUFPO0FBQ1AsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsU0FBUyxDQUFDLDZCQUE2QixHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQ2pFLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN6QjtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ25EO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekI7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdEQ7QUFDQSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUIsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ3JCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3REO0FBQ0EsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QztBQUNBO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtBQUMzQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLEdBQUc7QUFDSDtBQUNBLE9BQU87QUFDUCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsS0FBSztBQUNMO0FBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsR0FBRyxZQUFZO0FBQzlELEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3hELEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEY7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNyQyxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQzNFO0FBQ0E7QUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQyxPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3hFLEVBQUUsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDbEQsSUFBSSxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUM7QUFDN0I7QUFDQSxJQUFJLElBQUksV0FBVyxJQUFJLEVBQUUsRUFBRTtBQUMzQixNQUFNLElBQUksUUFBUSxHQUFHLFlBQVksR0FBRyxNQUFNLENBQUM7QUFDM0MsTUFBTSxLQUFLLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFDbkUsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLFFBQVEsR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBQzNDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksSUFBSSxFQUFFLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDYjtBQUNBLElBQUksSUFBSSxXQUFXLElBQUksRUFBRSxFQUFFO0FBQzNCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDOUIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUMvQixHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUMzQyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQixFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsRUFBRSxJQUFJLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbkMsRUFBRSxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDMUIsRUFBRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDeEI7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDNUMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3hDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDO0FBQzlDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RDtBQUNBLElBQUksSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3JCLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDcEIsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQztBQUNBLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRTtBQUN2QixJQUFJLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN2QixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNsQjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekI7QUFDQSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7QUFDdEIsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQy9DO0FBQ0EsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsU0FBUyxFQUFFO0FBQzlDLFFBQVEsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNqRCxVQUFVLElBQUksV0FBVyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1RCxVQUFVLElBQUksU0FBUyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDMUM7QUFDQSxVQUFVLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRTtBQUM5QixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsV0FBVztBQUNYO0FBQ0EsVUFBVSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JELFNBQVM7QUFDVCxPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakQ7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxFQUFFLEVBQUU7QUFDakQsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ3hCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLFNBQVMsVUFBVSxHQUFHLEVBQUU7QUFDeEI7QUFDQSxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwQixVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQjtBQUNBLFVBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBWTtBQUNwQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDckQsRUFBRSxPQUFPLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUM1QjtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU8sU0FBUyxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO0FBR3REO0FBQ0E7QUFDQSxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQztBQUNBLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekIsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUN4QixFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFDekIsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN6QixFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDeEIsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN6QixFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLENBQUM7QUFDRDtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFlBQVk7QUFDL0MsRUFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUNsRCxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWTtBQUMvQyxFQUFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ2xELEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxZQUFZO0FBQy9DLEVBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDbEQsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFlBQVk7QUFDL0MsRUFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUNsRCxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFlBQVk7QUFDaEQsRUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUNuRCxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsWUFBWTtBQUNoRCxFQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ25ELEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxZQUFZO0FBQ2hELEVBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDbkQsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFlBQVk7QUFDaEQsRUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUNuRCxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDOUMsRUFBRSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDcEIsRUFBRSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxTQUFTLElBQUksR0FBRyxFQUFFO0FBQ3hCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUN0RixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDOUMsRUFBRSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDcEIsRUFBRSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxTQUFTLElBQUksR0FBRyxFQUFFO0FBQ3hCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUN0RixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNyRCxFQUFFLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUNuQixFQUFFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDcEMsRUFBRSxJQUFJLFVBQVUsSUFBSSxHQUFHLEVBQUU7QUFDekIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0FBQ3JGLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3JELEVBQUUsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ25CLEVBQUUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUNwQyxFQUFFLElBQUksVUFBVSxJQUFJLEdBQUcsRUFBRTtBQUN6QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7QUFDckYsR0FBRztBQUNILEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsT0FBTyxFQUFFO0FBQy9ELEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEcsRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQzNCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25NO0FBQ0EsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckMsSUFBSSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxJQUFJLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxJQUFJLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQztBQUNBLFNBQVMsUUFBUSxHQUFHO0FBQ3BCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQjtBQUNBLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLGlCQUFpQixDQUFDLCtDQUErQyxDQUFDO0FBQzlHLEVBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQztBQUMvRCxFQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsdUJBQXVCLENBQUM7QUFDbEUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsMEJBQTBCLENBQUM7QUFDeEUsRUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDO0FBQ3BFLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGlCQUFpQixDQUFDLGlDQUFpQyxDQUFDO0FBQ3JGLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLDRCQUE0QixDQUFDO0FBQzNFLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLGlCQUFpQixDQUFDLHFDQUFxQyxDQUFDO0FBQzVGLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDeEYsRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO0FBQzVFLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO0FBQ25GLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUMvQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDbEMsRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLGNBQWMsQ0FBQztBQUN4RCxDQUFDO0FBQ0Q7QUFDQSxRQUFRLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0EsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUU7QUFDekIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFDRDtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFlBQVk7QUFDaEQsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hEO0FBQ0EsRUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMzQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFDakM7QUFDQSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyw2Q0FBNkMsQ0FBQztBQUMxRjtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxRQUFRLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLFlBQVk7QUFDdEQsRUFBRSxJQUFJLElBQUksQ0FBQztBQUNYLEVBQUUsSUFBSSxRQUFRLENBQUM7QUFDZixFQUFFLElBQUksTUFBTSxDQUFDO0FBQ2IsRUFBRSxJQUFJLE1BQU0sQ0FBQztBQUNiLEVBQUUsSUFBSSxpQkFBaUIsQ0FBQztBQUN4QixFQUFFLElBQUksaUJBQWlCLENBQUM7QUFDeEI7QUFDQSxFQUFFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN0RCxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QjtBQUNBLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQzVDO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNoQztBQUNBLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDbkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUNuRTtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsa0NBQWtDLEVBQUU7QUFDbkQsUUFBUSxJQUFJLENBQUMsV0FBVyxJQUFJLGlCQUFpQixHQUFHLGlCQUFpQixHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7QUFDekcsT0FBTztBQUNQO0FBQ0EsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDdkQ7QUFDQSxNQUFNLElBQUksQ0FBQyxXQUFXLElBQUksaUJBQWlCLENBQUMsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsa0NBQWtDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQzFNLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLFlBQVk7QUFDcEQ7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDcEMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxpQkFBaUIsQ0FBQywyQkFBMkIsRUFBRTtBQUMzRCxNQUFNLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsMkJBQTJCLEtBQUssaUJBQWlCLENBQUMsMkJBQTJCLEdBQUcsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7QUFDM1YsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLGlDQUFpQyxDQUFDO0FBQ25GLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsMkJBQTJCLEVBQUU7QUFDM0QsTUFBTSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLDJCQUEyQixLQUFLLGlCQUFpQixDQUFDLDJCQUEyQixHQUFHLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztBQUNsUyxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQy9CLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ25ELElBQUksSUFBSSxDQUFDLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO0FBQ3ZFLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNuRjtBQUNBLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ2xHO0FBQ0EsRUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ2xELENBQUMsQ0FBQztBQUNGO0FBQ0EsUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZO0FBQ2xELEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsUUFBUSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxZQUFZO0FBQ3JELEVBQUUsSUFBSSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkcsRUFBRSxJQUFJLDRCQUE0QixHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMvRztBQUNBLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ1gsRUFBRSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDbkIsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbEMsRUFBRSxJQUFJLGdCQUFnQixDQUFDO0FBQ3ZCO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtBQUM3QixJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLElBQUksaUJBQWlCLEVBQUU7QUFDMUcsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDeEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pDO0FBQ0E7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixDQUFDLENBQUM7QUFDcEgsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsS0FBSztBQUNMLEdBQUcsTUFBTTtBQUNULElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QjtBQUNBLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QyxRQUFRLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUI7QUFDQTtBQUNBLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFO0FBQ2xELFVBQVUsU0FBUztBQUNuQixTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxRQUFRLENBQUMsU0FBUyxDQUFDLHVCQUF1QixHQUFHLFlBQVk7QUFDekQsRUFBRSxJQUFJLElBQUksQ0FBQztBQUNYLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7QUFDcEQ7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQzNDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFVBQVUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUNsRSxFQUFFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNwQyxFQUFFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNwQztBQUNBLEVBQUUsSUFBSSxNQUFNLENBQUM7QUFDYixFQUFFLElBQUksV0FBVyxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxZQUFZLENBQUM7QUFDbkIsRUFBRSxJQUFJLFlBQVksQ0FBQztBQUNuQjtBQUNBO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDbkcsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUM5QixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUN4QjtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUU7QUFDMUMsTUFBTSxPQUFPO0FBQ2IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM1QjtBQUNBLEVBQUUsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU87QUFDMUI7QUFDQTtBQUNBLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBQzdEO0FBQ0E7QUFDQSxFQUFFLFlBQVksR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUN2RCxFQUFFLFlBQVksR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUN2RDtBQUNBO0FBQ0EsRUFBRSxVQUFVLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQztBQUMxQyxFQUFFLFVBQVUsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDO0FBQzFDLEVBQUUsVUFBVSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUM7QUFDMUMsRUFBRSxVQUFVLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDRjtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ2hFLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzlCLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzlCLEVBQUUsSUFBSSxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsRUFBRSxJQUFJLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxFQUFFLElBQUksU0FBUyxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDaEIsRUFBRSxJQUFJLGVBQWUsQ0FBQztBQUN0QixFQUFFLElBQUksUUFBUSxDQUFDO0FBQ2YsRUFBRSxJQUFJLGNBQWMsQ0FBQztBQUNyQixFQUFFLElBQUksZUFBZSxDQUFDO0FBQ3RCLEVBQUUsSUFBSSxlQUFlLENBQUM7QUFDdEI7QUFDQSxFQUFFLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7QUFDN0IsSUFBSTtBQUNKO0FBQ0EsTUFBTSxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDL0c7QUFDQSxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7QUFDQSxNQUFNLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2pIO0FBQ0E7QUFDQSxNQUFNLEtBQUssQ0FBQyxlQUFlLElBQUksZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBQ2xFLE1BQU0sS0FBSyxDQUFDLGVBQWUsSUFBSSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDbEUsTUFBTSxLQUFLLENBQUMsZUFBZSxJQUFJLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztBQUNsRSxNQUFNLEtBQUssQ0FBQyxlQUFlLElBQUksZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBQ2xFLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQTtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSTtBQUMzRixRQUFRO0FBQ1IsVUFBVSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM5RCxVQUFVLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzlELFNBQVM7QUFDVCxRQUFRO0FBQ1IsVUFBVSxTQUFTLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUQ7QUFDQSxVQUFVLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFVBQVUsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsU0FBUztBQUNUO0FBQ0E7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRTtBQUN0RSxRQUFRLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO0FBQ2pGLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFO0FBQ3RFLFFBQVEsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUM7QUFDakYsT0FBTztBQUNQO0FBQ0EsTUFBTSxlQUFlLEdBQUcsU0FBUyxHQUFHLFNBQVMsR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDNUM7QUFDQSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQztBQUMxRztBQUNBO0FBQ0EsTUFBTSxlQUFlLEdBQUcsY0FBYyxHQUFHLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDOUQsTUFBTSxlQUFlLEdBQUcsY0FBYyxHQUFHLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDOUQ7QUFDQTtBQUNBLE1BQU0sS0FBSyxDQUFDLGVBQWUsSUFBSSxlQUFlLENBQUM7QUFDL0MsTUFBTSxLQUFLLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQztBQUMvQyxNQUFNLEtBQUssQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDO0FBQy9DLE1BQU0sS0FBSyxDQUFDLGVBQWUsSUFBSSxlQUFlLENBQUM7QUFDL0MsS0FBSztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsUUFBUSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLElBQUksRUFBRTtBQUM1RCxFQUFFLElBQUksVUFBVSxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxZQUFZLENBQUM7QUFDbkIsRUFBRSxJQUFJLFlBQVksQ0FBQztBQUNuQixFQUFFLElBQUksU0FBUyxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDaEIsRUFBRSxJQUFJLFlBQVksQ0FBQztBQUNuQixFQUFFLElBQUksWUFBWSxDQUFDO0FBQ25CLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDcEIsRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQy9CO0FBQ0EsRUFBRSxZQUFZLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRSxFQUFFLFlBQVksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxZQUFZLENBQUM7QUFDL0MsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLFlBQVksQ0FBQztBQUMvQyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0QsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVEO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUNwRCxJQUFJO0FBQ0osTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0FBQzlFO0FBQ0EsTUFBTSxJQUFJLFlBQVksR0FBRyxhQUFhLElBQUksWUFBWSxHQUFHLGFBQWEsRUFBRTtBQUN4RSxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ25FLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7QUFDbkUsT0FBTztBQUNQLEtBQUs7QUFDTCxJQUFJO0FBQ0osTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO0FBQ3RGO0FBQ0EsTUFBTSxJQUFJLFlBQVksR0FBRyxhQUFhLElBQUksWUFBWSxHQUFHLGFBQWEsRUFBRTtBQUN4RSxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztBQUNsRyxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztBQUNsRyxPQUFPO0FBQ1AsS0FBSztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtBQUM3QyxFQUFFLElBQUksU0FBUyxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3pCO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUU7QUFDckQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xGLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUM7QUFDdkU7QUFDQSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7QUFDckQ7QUFDQSxFQUFFLE9BQU8sU0FBUyxJQUFJLFVBQVUsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFDRjtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDekMsRUFBRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDdkQsSUFBSSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQzVELE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUNyQyxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ25DLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLEdBQUcsWUFBWTtBQUM3RCxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ1gsRUFBRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2pEO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUMvQyxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQy9DO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEIsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxFQUFFLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzFGO0FBQ0EsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFDL0IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDM0Q7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqQixFQUFFLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNsQixFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqQixFQUFFLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNsQjtBQUNBLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsRUFBRSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ25HLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsRUFBRSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ25HO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENB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QVMsQ0FBQyxDQUFDO0FBQ1g7QUFDQSxRQUFRLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFO0FBQzdFLFVBQVUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9PLFNBQVMsTUFBTTtBQUNmLFVBQVUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDakUsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLE9BQU8sQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0EsUUFBUSxPQUFPLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsUUFBUSxPQUFPLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDL0QsUUFBUSxPQUFPLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDakUsUUFBUSxPQUFPLENBQUMs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LElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLElBQUlBLFFBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRTtBQUN6QyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN0RCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFLE9BQU9BLFFBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFDRDtBQUNBLFNBQVMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO0FBQy9CLEVBQUUsSUFBSSxTQUFTLEdBQUdBLFFBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQy9DLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUlBLFFBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRTtBQUN4QyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4RCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFLE9BQU9BLFFBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxD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Q3hDLElBQUksSUFBSUEsUUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDMUIsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEIsS0FBSztBQUNMLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQzVCLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFO0FBQ25CLEVBQUVBLFFBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5RDtBQUNBLEVBQUVBLFFBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQ25DLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixJQUFJQSxRQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdEMsSUFBSSxJQUFJQSxRQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtBQUMxQixNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixLQUFLO0FBQ0wsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDMUIsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLEVB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SSxRQUFRLEdBQUdBLFFBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVTtBQUN2QyxJQUFJQSxRQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RELEVBQUUsSUFBSSxZQUFZLEdBQUdBLFFBQUMsQ0FBQyxPQUFPLENBQUNBLFFBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQzdELElBQUksT0FBT0EsUUFBQyxDQUFDLE1BQU0sQ0FBQ0EsUUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQ3JELE1BQU0sT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzlELEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2YsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDWjtBQUNBO0FBQ0EsRUFBRSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDckIsRUFBRSxPQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxDQUFDLENBQUM7QUFDMUQsRUFBRSxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNwQyxFQUFFLFVBQVUsSUFBSSxDQUFDLENBQUM7QUFDbEIsRUFBRSxJQUFJLElBQUksR0FBR0EsUUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEU7QUFDQTtBQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxD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LEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4QyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNBLFFBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDOUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDQSxRQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQy9DO0FBQ0EsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDckMsS0FBSztBQUNMLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxFQUFFQSxRQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRTtBQUNuQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO0FBQ3RDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztB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Q0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHO0FBQzFCLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLE9BQU8sQ0FBQztBQUNSLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QixNQUFNLElBQUksQ0FBQyxLQUFLLENB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RSxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkQsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxFQUFFO0FBQ3JELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNsRSxHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtBQUN0RCxNQUFNLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDMUMsTUFBTSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQzlDLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7QUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixFQUFFLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQjtBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxD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QUN4QyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDNUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDeEM7QUFDQSxFQUFFLElBQUksTUFBTTtBQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLO0FBQ3ZCLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUU7QUFDUixNQUFNLEVBQUU7QUFDUixNQUFNLEVBQUU7QUFDUixNQUFNLEVBQUU7QUFDUixNQUFNLEtBQUs7QUFDWCxNQUFNLE1BQU07QUFDWixNQUFNLENBQUM7QUFDUCxNQUFNLENBQUMsQ0FBQztBQUNSO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUM7QUFDNUM7QUFDQTtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3RCLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDakUsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNsRSxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzlGLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3pHO0FBQ0E7QUFDQSxFQUFFLEdBQUc7QUFDTCxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNqRSxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2xFLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtBQUM3RSxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDdEIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNO0FBQzNCLE1BQU0sQ0FBQztBQUNQLE1BQU0sQ0FBQztBQUNQLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkIsTUFBTSxFQUFFLEdBQUcsUUFBUTtBQUNuQixNQUFNLEVBQUUsR0FBRyxRQUFRO0FBQ25CLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUTtBQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUNyQjtBQUNBO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUMxQixJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUztBQUNuRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQztBQUN0QztBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25DO0FBQ0E7QUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMs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LEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUztBQUN0QztBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUM1QixVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsTUFBTSxLQUFLLENBQUMsSUFBSTtBQUNoQixRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDekMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3pDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN6QyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDekMsT0FBTyxDQUFDO0FBQ1I7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDMUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxD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RUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNsRSxJQUFJLElBQUksRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztBQUM1RSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU07QUFDNUIsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2hGLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDekM7QUFDQTtBQUNBLEVBQUUsSUFBSSxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xGO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUM7QUFDOUM7QUFDQTtBQUNBLEVBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQVMsSUFBSSxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUN2QixJQUFJLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsU0FBUyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUMzQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQ3pCLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNwQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN6RCxHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUU7QUFDOUIsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUQsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdGLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRTtBQUNuQyxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0YsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUU7QUFDMUIsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JCLE1BQU0sSUFBSSxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEcsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEdBQUc7QUFDSCxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUN6QixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNyQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNEO0FBQ0EsU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFO0FBQ25CLEVBQUUsT0FBTyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzFELENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNyQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNEO0FBQ0EsU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFO0FBQ25CLEVBQUUsT0FBTyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzFELENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQy9CLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFB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LElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFILElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekYsR0FBRztBQUNILEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMvRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUks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QUFDcEUsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3BFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxRQUFRLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxVQUFVLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU87QUFDdkI7QUFDQSxJQUFJLElBQUksQ0FBQztBQUNULFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ3hCLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ3hCLFFBQVEsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxRQUFRLElBQUksQ0FBQztBQUNiO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDbEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckYsTUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSxNQUFNLEtBQUssQ0FBQyxJQUFJ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QUFDLFVBQVUsRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztBQUNsQztBQUNBLElBQUksSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDakQ7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDekMsTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLFVBQVUsQ0FBQztBQUNsRDtBQUNBLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssRUFBRTtBQUNyQyxRQUFRLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQixPQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0EsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM5QixRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDaEUsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDaEUsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLGVBQWUsR0FBRztBQUM3QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN0QyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzVDLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMxQyxRQUFRLElBQUksTUFBTSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUNsRixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLE9BQU87QUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzVDLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENB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U0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9GLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzVCLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDdEQsVUFBVSxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQixLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVM7QUFDVCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRTtBQUN6QixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0IsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQixRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNuQixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRTtBQUM1QixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsUUFBUSxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlELFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLE9BQU87QUFDUCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFlBQVksRUFBRSxPQUFPO0FBQ3REO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUN6QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsTUFBTSxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVELEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQy9CLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDakQsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMs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Q0FBQztBQUMxQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDM0QsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEIsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEIsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxVQUFVLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU87QUFDdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUM1QixJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixJQUFJLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzVCLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEQsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVFLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLEVBQUU7QUFDakMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQzVCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxFQUFFO0FBQy9CLElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssSUFBSSxRQUFRLENBQUM7QUFDdEgsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUU7QUFDN0IsSUFBSSxPQUFPLFNBQVMsQ0FBQyxNQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxJQUFJLE1BQU0sQ0FBQztBQUNsSCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRTtBQUN4QixJQUFJLE9BQU8sU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNsRCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRTtBQUN4QixJQUFJLE9BQU8sU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNsRCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDaEIsRUFBRSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQzlCLE1BQU0sS0FBSztBQUNYLE1BQU0sU0FBUztBQUNmLE1BQU0sRUFBRSxDQUFDO0FBQ1Q7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRTtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQ3hCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDeEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzFFLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFNBQVMsVUFBVSxHQUFHO0FBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDNUIsSUFBSSxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM1QixNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxR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QUFLLEdBQUcsYUFBYSxDQUFDO0FBQy9CLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUM7QUFDaEM7QUFDQSxFQUFFLFNBQVMsZUFBZSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDbEMsSUFBSSxVQUFVLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hDLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMvQyxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNqQztBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsTUFBTSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEM7QUFDQSxNQUFNLElBQUksUUFBUSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDM0MsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzlELE1BQU0sSUFBSSxNQUFNLEdBQUcsQ0FB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 diff --git a/package-lock.json b/package-lock.json index 7a59132..02d0d48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,6 +61,68 @@ "uuid": "^8.3.2" } }, + "../cytoscape.js-dagre": { + "name": "cytoscape-dagre", + "version": "2.3.2", + "extraneous": true, + "license": "MIT", + "dependencies": { + "dagre": "file:../dagre" + }, + "devDependencies": { + "@webpack-cli/serve": "^0.2.0", + "babel-core": "^6.26.3", + "babel-loader": "^8.1.0", + "babel-preset-env": "^1.7.0", + "camelcase": "^6.0.0", + "chai": "4.2.0", + "cpy-cli": "^3.1.1", + "cross-env": "^7.0.2", + "eslint": "^7.6.0", + "gh-pages": "^3.1.0", + "mocha": "8.1.1", + "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", + "update": "^0.7.4", + "updater-license": "^1.0.0", + "webpack": "^4.44.1", + "webpack-cli": "^3.3.12", + "webpack-dev-server": "^3.11.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.22" + } + }, + "../dagre": { + "version": "0.8.6-pre", + "extraneous": true, + "license": "MIT", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.19" + }, + "devDependencies": { + "benchmark": "2.1.4", + "browserify": "16.5.1", + "chai": "4.2.0", + "eslint": "7.4.0", + "jshint": "2.11.1", + "jshint-stylish": "2.2.1", + "karma": "5.1.0", + "karma-chrome-launcher": "3.1.0", + "karma-firefox-launcher": "1.3.0", + "karma-mocha": "2.0.1", + "karma-phantomjs-launcher": "1.0.4", + "karma-requirejs": "1.1.0", + "karma-safari-launcher": "1.0.0", + "mocha": "8.2.0", + "phantomjs-prebuilt": "2.1.16", + "requirejs": "2.3.6", + "semver": "7.3.2", + "sprintf": "0.1.5", + "uglify-js": "3.10.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", diff --git a/src/viz/visualization.ts b/src/viz/visualization.ts index cc30d30..a93dff9 100644 --- a/src/viz/visualization.ts +++ b/src/viz/visualization.ts @@ -3,7 +3,7 @@ import { EventRef, Events, MarkdownRenderer, - Menu, + Menu, TFile, Vault, Workspace, } from 'obsidian'; @@ -206,10 +206,10 @@ export class Juggl extends Component implements IJuggl { if (id.storeId === 'core') { const file = this.plugin.metadata.getFirstLinkpathDest(id.id, ''); if (file && file.extension === 'md' && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) { - const content = await view.vault.cachedRead(file); + // const content = await view.vault.cachedRead(file); this.hoverTimeout[e.target.id()] = setTimeout(async () => - await this.popover(content, file.path, e.target, 'advanced-graph-preview-node'), - 400); + this.plugin.app.workspace.trigger('link-hover', this.element, null, file.path, ''), + 300 ); } } }); diff --git a/styles.css b/styles.css index 6dbd154..c3b75d1 100644 --- a/styles.css +++ b/styles.css @@ -58,8 +58,9 @@ div.juggl-error { height: 100%; } -.juggl-hover { +.juggl-hover.is-loaded.hover-popover.popover { opacity: 0.9; + height: max-content; } .juggl-preview-edge { diff --git a/tsconfig.json b/tsconfig.json index 9770a99..6a28267 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,7 @@ "module": "ESNext", "target": "es2020", "sourceMap": true, + "moduleResolution": "node", "noImplicitAny": true, "importHelpers": true, "lib": [